#
Description Based on [[https://gist.github.com/sardemff7/759cbf956bea20d382a6128c641d2746][this gist]]
Simple [[https://www.gnupg.org/related_software/pinentry/index.html][pinentry]] gui using [[https://github.com/davatorium/rofi][rofi]] written in [[https://www.gnu.org/software/guile/][GNU guile]].
It's similar in functionality as the gist but this one doesn't force the width to be 27 and doesn't depend on systemd.
I also wanted a small project which I could use to practice writing GNU guile.
2.0.0 Breaking changes please read
As of version 2.0.0, =pinentry-rofi= is now built using [[https://www.gnu.org/software/automake][automake]]. See [[file:HACKING][HACKING]] for more info on that. It also lost its =-guile= suffix for the executable. And it is no longer just one file, most of its content is now a [[https://www.gnu.org/software/guile/manual/html_node/General-Information-about-Modules.html][guile module]], which the executable now calls.
Install ** Guix (Recommended) To install it using [[https://guix.gnu.org/][guix]], run
guix install pinentry-rofi
Just make sure you have a version of guix
that is newer than Jan
8 2021.
The binary location is then $HOME/.guix-profile/bin/pinentry-rofi
were the $HOME
is the home location of the user you used to
install it with. E.g. /home/$USER
for a normal user and /root
for the root user.
Install it with guix is recommended as that will work on most linux distributions.
Then add it to your =~/.gnupg/gpg-agent.conf=
*** Guix on a foreign distro
If you are running guix on a foreign distro, you need to make sure
the =GUIX_LOCPATH= environment variable is passed to the gpg-agent
otherwise rofi will fail to set the locale and therefore cannot
launch. Which result in the pinentry aborting.
On a distribution that is using systemd (here I'm using Arch Linux
as an example) simply run:
#+begin_src shell
echo "GUIX_LOCPATH=$GUIX_LOCPATH"
#+end_src
Copy that, then run:
#+begin_src shell
systend --user edit gpg-agent.service
#+end_src
And add it in the =override.conf=:
#+begin_src conf
[Service]
Environment=GUIX_LOCPATH=%h/.guix-profile/lib/locale
#+end_src
On my system, =GUIX_LOCPATH= points to the default profile i.e.
=$HOME/.guix-profile/lib/locale=. =%h= in systemd gives you the
path to the home directory. This should be the case for most
people, but if your =GUIX_LOCPATH= points to something different
change the =override.conf= to reflect that.
** Arch Linux The =PKGBUILD= file for arch is in the =build-aux=, so just run:
cd build-aux
makepkg -ic
The binary location is then /usr/bin/pinentry-rofi
.
** From Source
See [[file:HACKING][HACKING]] on how to build this from source
Gpg-agent
To use =pinentry-rofi= with =gpg-agent=, you can set it as the =pinentry-program= in the =~/.gnupg/gpg-agent.conf=. Note that you need to use the full path to the binary.
For example for Arch Linux this would be:
pinentry-program /usr/bin/pinentry-rofi
And for guix:
pinentry-program
Where =
Don't forget to restart =gpg-agent= for the changes to take affect:
gpg-connect-agent reloadagent /bye