Linux版 Firefoxで Ctrl+Q を無効にする方法

本件、Yahoo!知恵袋で回答していたのですが、最後まで回答しきれず質問がロックされてしまったのでブログで情報を共有しておきます。

Windows版 Firefoxならびに Mac版 Firfoxでは拡張機能 "Disable Ctrl-Q and Cmd-Q" をインストールすると、誤って Ctrl+Q を押してしまったときに Firefoxを終了しないようにできるのですが、Linux版 Firefoxについては Ctrl+Qでデスクトップから終了コマンドが送られてしまうため Firefox側では対応できません。(紆余曲折の仕様変更の末にそうなってしまいました)

ということで、Linux側でなんとかする方法を見つけ出しました。
手順としては
  1. xbindkeys で Ctrl+Q が押されたときにあるシェルスクリプトを実行する
  2. シェルスクリプトでアクティブなウィンドウが Firefoxかどうかチェックして、
    Firefoxなら何もしない、Firefox以外なら xvkbd を使って Ctrl+Q を渡す
  3. デスクトップ画面でログインした時に xbindkeys を自動的に実行するようにする
というものです。


1. xbindkeys のインストール
sudo apt install xbindkeys でインストールしてください。

2. xvkbd のインストール
sudo apt install xvkbd でインストールしてください。

3. シェルスクリプトの用意
次のような内容で /usr/local/bin/noctrlq.sh を用意してください。
#!/bin/bash

W=`xdotool getactivewindow`
S1=`xprop -id ${W} |awk -F '"' '/WM_CLASS/{print $4}'`
#echo $S1

if [ "$S1" != "Firefox" ] && [ "$S1" != "Firefox Developer Edition" ]; then
xvkbd -xsendevent -text "\Cq"
# echo $S1
fi

4. 実行権限の設定
sudo chmod 755 /usr/local/bin/noctrlq.hs でシェルスクリプトに対して実行権限を設定してください

5. xbindkeysの設定
次のような内容で~/.xbindkeysrc を用意してください。
"noctrlq.sh"
    Control + q
※ Ctrl+Q が押されたら noctrlq.sh を実行するという設定です。

6. xbindkeys の実行
xbindkeys を実行するとデーモンが起動されます。
これで Firefoxに対する Ctrl+Q は無効化されるはずです。

設定ファイル ~/.xbindkeysrc を書き換えた場合は、killall xbindkeys でデーモンを停止させてから xbindkeys を再実行してください。

7. xbindkeys をログイン時に自動的に起動する
私はデスクトップ環境が LXDEなので、LXDEメニュー → 設定 → LXSessionのデフォルトのアプリケーション → 自動立ち上げ → 追加 で xbindkyes を自動的に起動するようにしました。

画像

画像


参考:
"Disable Ctrl Q on Firefox Quantum on Linux!"
https://github.com/sasawat/firefox-ctrl-q-workaround

"Linux: xbindkeys Tutorial"
http://xahlee.info/linux/linux_xbindkeys_tutorial.html

この記事へのコメント

この記事へのトラックバック