rbindkeys を systemd で起動する

linuxgui 環境で作業をしていて
gtk のキーテーマで一括変更も可能ですが
他の OS みたいにキーバインドをアプリケーションによって
変化させたい時があったのでメモ。

使わせていただくのは

kui/rbindkeys · GitHub - https://github.com/kui/rbindkeys

rbindkeys のインストール

ruby 2.1.5 を rbenv でもなんでも使ってインストールしたら

gem install rbindkeys

してインストール完了。
あとは README.md の Usage のとおり基本的な設定を済ませました。

sudo 設定変更

まず sudo の設定。 rbndkeys は sudo で起動することになりますが、
systemd から起動する際にパスワードが入力できないので
/etc/sudoers.d/ 以下に

  • 起動用 rbindkeys
  • 停止用 killall

を NOPASSWD で設定しておきます。

nishikawasasaki  ALL=(ALL) NOPASSWD:/home/nishikawasasaki/.rbenv/versions/2.1.5/bin/rbindkeys, NOPASSWD:/usr/bin/killall

X 設定追加

rbindkeys 起動時に自ユーザーの x が受付できるように下記設定を
.xinitrc など起動時に呼ばれる場所へ追加しておく。

vi ~/.xinitrc
+ xhost local:0.0

systemd 設定追加

次に、
systemd から起動するために
~/.config/systemd/user 以下に設定を作成します。

vi ~/.config/systemd/user/rbindkeys.service
[Unit]
Description=rbindkeys

[Service]
ExecStart=/usr/bin/sudo /home/nishikawasasaki/.rbenv/versions/2.1.5/bin/rbindkeys -c /home/nishikawasasaki/.rbindkeys.rb /dev/input/event0
ExecStop=/usr/bin/sudo /usr/bin/killall rbindkeys
Restart=always
Environment=DISPLAY=:0.0

[Install]
WantedBy=graphical.target

ここまできたら

systemctl --user enable rbindkeys.service

して有効にして、
~/.rbindkeys.rb を編集したら

systemctl --user restart rbindkeys.service

したりできます。

問題・懸念点

  • ruby まわりの呼び出しをちゃんとする
  • systemd の起動で sudo するのはどうなのか?
    何か他に方法はないのか?
  • WantedBy が適当すぎないか?