web-dev-qa-db-ja.com

デスクトップ環境なしでXからシャットダウンする

私は最近デスクトップ環境をあきらめ、現在はウィンドウマネージャー(i3)とXのみを使用しています。それはすべて非常にうまく機能し、私は多くを逃しません。 1つを除いて:シャットダウンボタン。次を発行することによってのみシャットダウンできます。

Sudo shutdown -Ph now

ターミナルから。これは機能しますが、Mod+xをクリックしてシャットダウンするキーバインディングをi3で作成したいと思います。そして、これをどのように達成できるかわかりません。たとえば~/shutdownでスクリプトを作成し、これを次のように参照するとします。

bindsym $mod+x exec ~/shutdown

その後、これは機能しません。私は通常のユーザーとして実行していて、このスクリプトでsudoしているのでわかります。ターミナルが表示され、パスワードの入力を求められても問題ありませんが(可能であれば、パスワードを必要としない方がいいですが)、これを行う方法がわかりません。これを行う方法は何ですか?

ArchLinuxの使用。

4
user11780

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

それらをスクリプトに入れ、ショートカットまたはメニューエントリを追加してそれらを呼び出すことができます。

8
jw013

これを行う1つの方法は、Sudoにパスワードの入力を求めないようにすることです。以下を/ etc/sudoersファイルに追加します(johndoeをユーザーに置き換えます)

johndoe ALL = (root) NOPASSWD: /sbin/shutdown
0
Patrick

ドキュメントによると、i3では keycodesまたはkeysyms のいずれかにバインドできます。

したがって、次のようにsudoersファイルにエントリを配置できます。

plua  ALL=(ALL) NOPASSWD:/sbin/shutdown

これにより、ユーザーpluaがパスワードを発行せずにシャットダウンできるようになり、次のようなその効果へのキーバインドが作成されます。

bind Mod+x exec /path/to/shutdownscript
0
jasonwryan