動機
今流行りの「選択的インターフェース」。
初めてpeco
を触った時は、いたく感動しました。
コマンドラインの履歴をpeco
で追いかけるなどすると、もうこれ無しではターミナル生活はできないというほど快適ですよね。
また、僕がメインで使っているEmacsには、Helm
というプラグインがあり、現在開いているファイル、最近開いたファイルなどが一覧化できます。
最近はhelm-do-ag.el
無しではコーディングできません。
Vimでも同様のことをするunite
というプラグインがあります。
このような、「一覧を表示」 => 「絞り込んで選択」 というインターフェースで、
ブラウザのタブ操作を実現できないかと考えたのが事の始まりでした。
試したこと
同様のことをするGoogle Chromeの拡張もあったのですが、いまいち使いづらかったので止めました。
そこで、Linuxのウィンドウ切替を丸ごと選択的にしてしまうという解決策を考えつきました。
成功イメージ
こんな感じで、ウィンドウタイトルを絞り込んで選択できます。
やり方
事前に、dmenu
とwmctrl
をインストールします。Arch Linuxなら
sudo pacman -S dmenu wmctrl
です。
インストールしたら、下記のシェルスクリプトを、パスの通った場所に置きます。
# !/bin/bash
target=`wmctrl -l | cut -d ' ' -f 5- | dmenu -ib -l 30`
if [[ "$target" =~ ^$ ]]; then
exit 1
else
wmctrl -a "$target"
fi
dmenu
の動きとしては、
- 標準入力を受け取る
- ユーザーに1行の絞り込みをさせる
- 選択した行を標準出力に出す
ということをしています。シンプルなので、使い方次第で色んなことができそうですね。
あとは、ターミナルなどでselect_window
コマンドを叩くだけです。
オプション
Alt-Tab
のように使うために、下記のようにキーボードショートカットを設定しています。
私は、Openbox
というウィンドウマネージャーを使っていますので、その設定例です。
<keyboard>
<keybind key="W-b">
<action name="Execute">
<command>select_window</command>
</action>
</keybind>
</keyboard>
これにより、Super + b
でselect_window
コマンドが発動するようになります。
Super + Space
で発動するようにしたいな。できるのかな。
追記
これはこれで便利だけど、新興ブラウザvivaldi
なら、コマンド機能が標準で有り、タブの切り替えがHelmみたいにできる。乗り換えようかな。