LINUX.ORG.RU

rofi + pass

 , , ,


0

2

Привет, написал небольшой скриптик для ввода паролей в различные окна через rofi, пароли беру из pass. Скрипт:

#!/bin/bash
passwords=$(find /home/user/.password-store/ -type f -name *.gpg)
selected_pass=$(echo -e "$passwords" | awk -F "/" '{printf "%s > %s\n", $5, $6}' | rofi -dmenu -p Pass)
item=$(echo "$selected_pass" | awk '{printf "%s/%s", $1, $3}' | sed 's/\.gpg//g')
data=$(pass show $item)
pass=$(echo -e "$data" | head -n1)
login=$(echo -e "$data" | grep -e "^login: " | sed 's/^login: //g')
xdotool type "$login"
xdotool key Tab
xdotool type "$pass"

В awesome wm забиндил клавишу которая его вызывает вот так:

awful.key({ modkey}, "p", function () awful.spawn.with_shell("/home/user/Scripts/rofi_pass.sh") end    ,
{description = "rofi pass", group = "launcher"}),  

Но эпизодически он не работает. Т.е. если я его вызываю по горячей клавише он не работает, если я вызываю его из консоли (или в консоли запущу pass) то начинает работать и с горячей клавиши тоже, через время опять отваливается пока не запущу из консоли.

Причина в том что gpg-agent перестает работать или устаревает его кеш хз. Но если я останавливаю gpg-agent сам: gpgconf --kill gpg-agent, то сразу перестает работать и начинает после того как запущу из консоли.

Подозреваю что не правильно его вызываю в awesome wm, т.е. что то из окружения он может не видит. Как поправить ?

Ответ на: комментарий от posmotret

gpg-agent вообще не нужно вручную запускать, он при первом обращении к базе ключей самим gpg2 запускается и висит в фоне.

mord0d ★★★★★
()

как запускается gpg-agent, сервис systemd или еще как? Видит ли он $DISPLAY? Сконфигурирован ли pinentry?

anonymous
()
Ответ на: комментарий от anonymous

gpg-agent вообще не нужно вручную запускать, он при первом обращении к базе ключей самим gpg2 запускается и висит в фоне.

Так я и не запускаю его в ручную, это я для теста делал. Может не понятно написал, повторюсь: Включаю компьютер, нажимаю сочетание клавиш и скрипт не работает (а именно 5я строка: data=$(pass show $item) - ничего не возвращает). Если я запускаю этот скрипт из терминала (~/Scripts/rofi_pass.sh) выбираю пароль - работает (при этом если надо вызывается pinentry для ввода главного пароля), после этого нажимаю сочетание клавиш выбираю нужную запись и все работает. А через время опять отваливается (и помогает либо повторный запуск руками из терминала либо еще помогает запустить в терминале pass show ...).

как запускается gpg-agent, сервис systemd или еще как?

Я не знаю как это определить. Я сделал так: systemctl enable <TAB><TAB> и среди списка этих сервисов нет ничего со словом gpg.

Видит ли он $DISPLAY?

Тоже, как это узнать ?

Сконфигурирован ли pinentry?

 ->  eselect pinentry list

Available pinentry binary implementations:
  [1]   pinentry-gnome3 *
  [2]   pinentry-curses
  [3]   pinentry-tty

posmotret
() автор топика
Ответ на: комментарий от posmotret

Я не знаю как это определить. Я сделал так: systemctl enable <TAB><TAB> и среди списка этих сервисов нет ничего со словом gpg

он может запускаться в пользовательской сессии.

systemctl --user | grep gpg

Тоже, как это узнать ?

systemctl --user show-environment

также, когда скрипт не срабатывает, проверь, что появляется в логах.

systemctl --user status gpg-agent.service
journalctl --user -u gpg-agent.service -b

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.