答え1
この投稿が 6 か月近く前のものであることは承知していますが、yad (yet another dialog) ツールの使用を提案した人はいません。これは次のようになります。
完全なコマンドは次のとおりです。
password="$(yad --center --width=300 --image=keys.png --entry --hide-text --button=gtk-ok:0 --button=gtk-cancel:1 --title="Authentication required" --text="Enter password:")"
パスワードは入力時に画面に表示されません ("--hide-text" で表示されます)。ボタンは標準の gtk の "OK" と "Cancel" です。この例では、入力されたパスワードは変数 $password からアクセスできます。例:
echo $password
キャンセル ボタンが押された場合、yad からの戻りコード ($?) は 1 (--button=gtk-cancel:1 から) になり、OK ボタンが押された場合の戻りコードは 0 (--button=gtk-ok:0 から) になります。
yad は、ソフトウェア センターから Ubuntu のそれ以降のバージョンにインストールできますが、16.04 では以下を使用してインストールする必要があります。
sudo apt install yad
yadのホームページはこちらです: https://sourceforge.net/projects/yad-dialog/
yad の使用方法を示すその他の例は、以下を参照してください。 https://sourceforge.net/p/yad-dialog/wiki/browse_pages/
答え2
正しい解決策は を使用することだと思いますpinentry-gnome3
。私の記憶が正しければ、それは の依存関係です。gpg
askpass() {
prompt=$1
echo -e "SETPROMPT $prompt\nGETPIN\nBYE" | pinentry-gnome3 | grep -E '^D ' | sed 's/D //'
}
password=$(askpass 'Enter your password:')