linux の gui 環境で作業をしていて
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 が適当すぎないか?