* add gpaste support
* remove call to qtpass * minor changes
This commit is contained in:
parent
52dbea0e9e
commit
bed2f59052
37
README.md
37
README.md
@ -11,10 +11,7 @@ Names of passwords will show up in GNOME Shell searches, choosing one will copy
|
||||
|
||||
## Manual
|
||||
|
||||
Ensure that python-gobject is installed on your system (probably already the case):
|
||||
```shell
|
||||
$PACKAGE_MANAGER install python-gobject
|
||||
```
|
||||
Ensure that python>=3.5 and python-gobject are installed on your system and that pass is setup.
|
||||
|
||||
Download or clone this repository:
|
||||
```shell
|
||||
@ -31,36 +28,28 @@ If you need to you can change the installation paths to suit your system:
|
||||
sudo SYSCONFDIR=/etc DATADIR=/usr/share LIBDIR=/usr/lib LIBEXECDIR=/usr/lib ./install.sh
|
||||
```
|
||||
|
||||
Recommended : set gpg agent to use pinentry-gnome3 by adding `pinentry-program /usr/bin/pinentry-gnome3` to `~/.gnupg/.gpg-agent.conf`.
|
||||
|
||||
Close and reopen your GNOME session or (if not on Wayland) just restart the Shell (alt + f2, r).
|
||||
The search provider should show up and be enabled in Gnome search preferences and be autoloaded by GNOME Shell.
|
||||
The search provider should show up and be enabled in GNOME search preferences and started on demand by GNOME Shell.
|
||||
|
||||
# Environment variables
|
||||
|
||||
If you are configuring pass through environment variables, such as `PASSWORD_STORE_DIR`, make sure to set them in a way that will propagate to the search provider executable.
|
||||
If you are on a systemd-based system, you can set them in the unit file :
|
||||
If you are configuring pass through environment variables, such as `PASSWORD_STORE_DIR`, make sure to set them in a way that will propagate to the search provider executable, not just in your shell.
|
||||
Setting them in `~/.profile` should be sufficient.
|
||||
|
||||
```shell
|
||||
systemctl --user edit org.gnome.Pass.SearchProvider.service
|
||||
```
|
||||
# Clipboard managers
|
||||
|
||||
Add your variables like this :
|
||||
```ini
|
||||
[Service]
|
||||
Environment=PASSWORD_STORE_DIR=/my/passwords/path
|
||||
```
|
||||
Then restart the service :
|
||||
|
||||
```shell
|
||||
systemctl --user restart org.gnome.Pass.SearchProvider.service
|
||||
```
|
||||
If you are using GPaste, passwords will be sent to it marked as passwords, thus ensuring they are not visible.
|
||||
Otherwise they are sent to the clipboard using `pass -c` which defaults to expiration after 45 seconds.
|
||||
|
||||
# Compatibility
|
||||
|
||||
This implements the `org.gnome.Shell.SearchProvider2` D-Bus API.
|
||||
I'm not sure since when this has been in Gnome nor until when it will stay.
|
||||
This works fine on Gnome 3.22 and I expect it will continue to work for some time with ulterior versions.
|
||||
I'm not sure since when this has been in GNOME nor until when it will stay.
|
||||
This works fine on GNOME 3.22 and I expect it will continue to work for some time with ulterior versions.
|
||||
|
||||
# Troubleshooting
|
||||
|
||||
If this does not work for you, make sure to look to wherever Gnome and D-Bus are logging for error messages (in the journal on systemd-using systems).
|
||||
|
||||
If this does not work for you, make sure to look to wherever GNOME and D-Bus are logging for error messages (in the journal on systemd-using systems).
|
||||
Don't hesitate to open an issue.
|
||||
|
6
TODO.md
6
TODO.md
@ -1,7 +1,3 @@
|
||||
* Add a configuration dialog so that passing environment variables to pass is easier.
|
||||
* Fix the problem of pinentry unable to show up if not called from pass before.
|
||||
* Make packages.
|
||||
* Find a good way of implementing LaunchSearch.
|
||||
* Make the daemon exit after some time.
|
||||
* Call into GPaste if present to mark item as password.
|
||||
* Find something to do when LaunchSearch is called.
|
||||
* Change icon to one that is present in GNOME default theme.
|
||||
|
@ -25,10 +25,10 @@
|
||||
# Copyright (C) 2012 Red Hat, Inc.
|
||||
# Author: Luke Macken <lmacken@redhat.com>
|
||||
|
||||
from subprocess import call
|
||||
import subprocess
|
||||
import re
|
||||
from os import walk, getenv
|
||||
from os.path import expanduser
|
||||
import re
|
||||
|
||||
from gi.repository import GLib
|
||||
|
||||
@ -50,13 +50,8 @@ class SearchPassService(dbus.service.Object):
|
||||
|
||||
"""
|
||||
bus_name = 'org.gnome.Pass.SearchProvider'
|
||||
enabled = False
|
||||
|
||||
_search_cache = {}
|
||||
_request_cache = {}
|
||||
|
||||
_object_path = '/' + bus_name.replace('.', '/')
|
||||
__name__ = 'SearchPassService'
|
||||
|
||||
def __init__(self):
|
||||
self.session_bus = dbus.SessionBus()
|
||||
@ -83,8 +78,7 @@ class SearchPassService(dbus.service.Object):
|
||||
|
||||
@dbus.service.method(in_signature='asu', terms='as', timestamp='u', **sbn)
|
||||
def LaunchSearch(self, terms, timestamp):
|
||||
# FIXME: unstable
|
||||
call(['qtpass'] + terms)
|
||||
pass
|
||||
|
||||
def get_result_set(self, terms):
|
||||
names = []
|
||||
@ -105,7 +99,19 @@ class SearchPassService(dbus.service.Object):
|
||||
return names
|
||||
|
||||
def send_password_to_clipboard(self, name):
|
||||
call(['pass', 'show', '-c', name])
|
||||
try:
|
||||
pass_cmd = subprocess.run(['pass', 'show', name],
|
||||
stdout=subprocess.PIPE)
|
||||
password = re.sub(b'\n$', b'', pass_cmd.stdout)
|
||||
if not pass_cmd.returncode:
|
||||
session_bus = dbus.SessionBus()
|
||||
gpaste_dbus = session_bus.get_object('org.gnome.GPaste.Daemon',
|
||||
'/org/gnome/GPaste')
|
||||
gpaste_dbus.AddPassword(name,
|
||||
password,
|
||||
dbus_interface='org.gnome.GPaste1')
|
||||
except dbus.DBusException:
|
||||
subprocess.run(['pass', 'show', '-c', name])
|
||||
|
||||
def main():
|
||||
service = SearchPassService()
|
||||
|
Loading…
x
Reference in New Issue
Block a user