diff --git a/README.md b/README.md index 1bcce0d..f09ec4b 100644 --- a/README.md +++ b/README.md @@ -2,6 +2,8 @@ A search provider for GNOME Shell that adds support for searching in zx2c4/[pass Names of passwords will show up in GNOME Shell searches, choosing one will copy the corresponding content to the clipboard. +Supports OTP, fields and can use GPaste. + ![Sreencapture](misc/screencapture.gif) # Installation @@ -10,34 +12,21 @@ Install `gnome-pass-search-provider-git` from the AUR. ## Manual -Ensure that python>=3.5 and python-gobject are installed on your system and that pass is setup. +Ensure that python>=3.5 as well as the dbus, gobject, fuzzywuzzy modules are installed. They should all be packaged under python-name or python3-name depending on your distribution. -Install Python 3 fuzzywuzzy module. -Depending on your distribution this can be packaged as python-fuzzywuzzy, python3-fuzzywuzzy or you might need to install it with pip: -```shell -python3 -m pip install fuzzywuzzy -``` - -Download or clone this repository: +Clone this repository and run the installation script as root: ```shell git clone git@github.com:jle64/gnome-shell-pass-search-provider.git -``` - -Run the installation script as root: -```shell sudo ./install.sh ``` # Post-installation -Recommended : set gpg agent to use pinentry-gnome3 by adding `pinentry-program /usr/bin/pinentry-gnome3` to `~/.gnupg/gpg-agent.conf`. +Log out and reopen your GNOME session. -If you are on Xorg, restart GNOME Shell by typing 'alt + f2' then entering 'r' as command. -If you are on Wayland, you need to close and reopen your GNOME session. +The search provider will be loaded automatically when doing a search. You should see it enabled in GNOME Settings Search pane. -The search provider should show up and be enabled in GNOME search preferences and started on demand by GNOME Shell. - -# OTP support +# OTP The [pass-otp](https://github.com/tadfisher/pass-otp) extension is supported. Searches starting with `otp` will copy the otp token to the clipboard. @@ -56,8 +45,9 @@ To copy the pin start the search with `:pin` and for the username `:user`. # 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, not just in your shell. -Setting them in `~/.profile` or `~/.pam_environment` should be sufficient, but stuff in shell-specific files such as `~/.bashrc` and co will not be picked up by gnome-shell. +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` or `~/.pam_environment` should be sufficient, but stuff in shell-specific files such as `~/.bashrc` will not be picked up by gnome-shell. If your values have no effect, make sure they propagate to the script environment: ```shell @@ -71,9 +61,12 @@ Otherwise they are sent to the clipboard using `pass -c` which defaults to expir # Compatibility -This implements the `org.gnome.Shell.SearchProvider2` D-Bus API and has been tested with GNOME Shell 3.22-3.32. +This implements the `org.gnome.Shell.SearchProvider2` D-Bus API and has been tested with GNOME Shell 3.22-3.38. This uses the `org.gnome.GPaste1` or `org.gnome.GPaste2` versions of the GPaste D-Bus API to add passwords to GPaste. # Troubleshooting -If this does not work for you, make sure to look to wherever GNOME and D-Bus are logging for error messages (using `journalctl --user` on systemd-using systems). +If you don't see passphrase prompts when your key is locked, it might be because GPG is not using the right pinentry program. You can force gpg-agent to use pinentry-gnome3 by adding `pinentry-program /usr/bin/pinentry-gnome3` to `~/.gnupg/gpg-agent.conf`. + +If you encounter problems, make sure to look to wherever GNOME and D-Bus are logging for error messages. You can do this using `journalctl --user` on systemd-using systems. + Don't hesitate to open an issue. diff --git a/gnome-pass-search-provider.py b/gnome-pass-search-provider.py index 243e5c5..5accd55 100755 --- a/gnome-pass-search-provider.py +++ b/gnome-pass-search-provider.py @@ -1,4 +1,4 @@ -#!/usr/bin/env python3 +#!/usr/bin/python3 # This file is a part of gnome-pass-search-provider. # # gnome-pass-search-provider is free software: you can redistribute it and/or modify @@ -43,7 +43,7 @@ sbn = dict(dbus_interface=search_bus_name) class SearchPassService(dbus.service.Object): - """ The pass search daemon. + """The pass search daemon. This service is started through DBus activation by calling the :meth:`Enable` method, and stopped with :meth:`Disable`. @@ -144,8 +144,10 @@ class SearchPassService(dbus.service.Object): ) else: password = output.split("\n", 1)[0] - - gpaste.AddPassword(name, password, dbus_interface="org.gnome.GPaste1") + try: + gpaste.AddPassword(name, password, dbus_interface="org.gnome.GPaste1") + except dbus.DBusException: + gpaste.AddPassword(name, password, dbus_interface="org.gnome.GPaste2") if "otp" in base_args: self.notify("Copied OTP password to clipboard:", body=f"{name}") diff --git a/gnome-pass-search-provider.spec b/gnome-pass-search-provider.spec index a3da580..bfc25e3 100644 --- a/gnome-pass-search-provider.spec +++ b/gnome-pass-search-provider.spec @@ -13,6 +13,8 @@ Requires: python3-fuzzywuzzy Requires: python3-Levenshtein BuildRoot: %{_tmppath}/%{name}-%{version}-build +%global debug_package %{nil} + %description A Gnome Shell search provider for zx2c4/pass (passwordstore.org) that sends passwords to clipboard (or GPaste).