私は最近デスクトップ環境をあきらめ、現在はウィンドウマネージャー(i3)とXのみを使用しています。それはすべて非常にうまく機能し、私は多くを逃しません。 1つを除いて:シャットダウンボタン。次を発行することによってのみシャットダウンできます。
Sudo shutdown -Ph now
ターミナルから。これは機能しますが、Mod+x
をクリックしてシャットダウンするキーバインディングをi3で作成したいと思います。そして、これをどのように達成できるかわかりません。たとえば~/shutdown
でスクリプトを作成し、これを次のように参照するとします。
bindsym $mod+x exec ~/shutdown
その後、これは機能しません。私は通常のユーザーとして実行していて、このスクリプトでsudoしているのでわかります。ターミナルが表示され、パスワードの入力を求められても問題ありませんが(可能であれば、パスワードを必要としない方がいいですが)、これを行う方法がわかりません。これを行う方法は何ですか?
ArchLinuxの使用。
D-Busセッション および ConsoleKit (これはほとんどの最新のデスクトップシステムのデフォルトコンポーネントであるため、すでにインストールされている可能性があります)、システムpoweroffSudo shutdown
よりもわずかにクリーンで、ルート権限を必要としないアプローチは次のとおりです。
dbus-send --system --print-reply --dest="org.freedesktop.ConsoleKit" \
/org/freedesktop/ConsoleKit/Manager org.freedesktop.ConsoleKit.Manager.Stop
同様に、システムrestartは、次のコマンドで実行できます。
dbus-send --system --print-reply --dest="org.freedesktop.ConsoleKit" \
/org/freedesktop/ConsoleKit/Manager org.freedesktop.ConsoleKit.Manager.Restart
それらをスクリプトに入れ、ショートカットまたはメニューエントリを追加してそれらを呼び出すことができます。
これを行う1つの方法は、Sudoにパスワードの入力を求めないようにすることです。以下を/ etc/sudoersファイルに追加します(johndoeをユーザーに置き換えます)
johndoe ALL = (root) NOPASSWD: /sbin/shutdown
ドキュメントによると、i3では keycodesまたはkeysyms のいずれかにバインドできます。
したがって、次のようにsudoers
ファイルにエントリを配置できます。
plua ALL=(ALL) NOPASSWD:/sbin/shutdown
これにより、ユーザーplua
がパスワードを発行せずにシャットダウンできるようになり、次のようなその効果へのキーバインドが作成されます。
bind Mod+x exec /path/to/shutdownscript