i3 wm (3) カスタマイズ : ショートカットキーの設定

i3の設定ファイルに書いて、スクリーンロックなど

先達ては「i3 wm タイル型ウィンドウマネージャを使う」で Arch Linux にi3をインストールしてみたのだけれど、今度はカスタマイズして便利コマンドを付け加えるやつ。

i3 の設定ファイル

i3 インストール時に作成を了承していれば ~/.config/i3/config というプレーンテキストのファイルが作成されている。

カスタマイズはこのファイルを書き換えて行う。記述は独自言語で行うけれども、簡単なものなので特にプログラミングの経験を要するものではないと思う。

i3 コマンドでプログラムを起動する

カスタマイズの前に、 i3 のコマンドをちょっと使ってみたりしよう。

i3-msg

i3コマンドを直接実行するのに専用コンソールなどないのだけれど、コマンドを橋渡しする i3-msg というユーティリティが用意されている。これを介せばシェルなどから i3 へコマンドを送れる。

ところで、この実行を端末エミュレータからやってもいいのだが、 dmenu の方が手軽で適確だ。

dmenu は i3 標準指定のアプリだが、Archリポジトリのi3パッケージに含まれているわけではないので明示的にインストールする必要がある(前のところ ではインストールしてある)。

pacman -S dmenu

インストールして $mod+d$modWindows キーに設定されることが多いもよう)を押せば dmenu (dmenu_run) が起動する。

さて、いよいよそこから i3 コマンドを実行してみる。

例えばカレントウィンドウをフルスクリーンにするには fullscreen コマンドを使う。 $mod+d を押してから、

i3-msg fullscreen

と入力して ENTER を押してみれば、フォーカスのあったウィンドウがフルスクリーンになるはずだ(もう一度やるともとに戻る)。

この i3-msg は主にシェルスクリプトなど外部から i3 の機能を使うときのためのものだが、設定ファイルに書くことを検討する際、ちょっと試しに実行してみたい場合に便利だろう。

exec で実行

アプリの起動(プログラムの実行)は exec コマンドで行う。試しに i3-msg exec firefox と実行してみれば、なんのことはない Firefox が起動するだけなのだが、この記述を設定ファイルに書いてやれば起動するということだ。

i3 が起動した時に Firefox が自動的に起動してほしければ config のどこかへ exec firefox と記述しておけばいい。

exec と時計カーソルの表示

i3の exec コマンドは startup-notification に対応している。

startup-notification というのは、起動最中のアプリの状態をマウスカーソルで知らせる仕組みで、アプリ側の対応が必要なものだ。 時計あるいは砂時計のカーソルと言えばわかりやすいだろうか。

実はこれに対応していないアプリも少なくないらしい。そこで i3 の exec コマンドは、 startup-notification に対応していないアプリであっても60秒間は時計を表示するようにしている。

つまり、 exec コマンドを使うとたいていは時計カーソルが表示されるということである。

けどこの時計カーソルは必要ない、あるいは邪魔だと言う向きもおいでだろうということで、 --no-startup-id というオプションが用意されている。これをつけて起動すればカーソルが時計に変わることはない。

exec --no-startup-id urxvt

使用の目安として、GUIアプリの実行を設定するならばとりあえず exec だけで試してみて、時計がながながと表示されてイヤだなとなれば --no-startup-id を付け足してやるという風にすればいいと思う。

ショートカットキーを作って便利に

bindsym

さて、キーへの登録は bindsym で行う。例えばデフォルトで設定されている dmenu 起動キーの記述は以下の通りとなっている。

bindsym $mod+d exec dmenu_run

お察しの通り $mod+dexec dmenu_run を割り当てるということだ。

なお、この設定でマウスカーソルをdmenuの範囲にのせると時計にかわるかと思う。

Alt+F2 で dmenu

他のWMでは Alt+F2 に起動メニュー(ランチャ)が仕込んであったりすることがあるが、それを dmenu で設定してみる。以下を config ファイルの最後でいいから付け加える。

bindsym $altl+F2 exec --no-startup-id i3-dmenu-desktop

書いて保存したら Shift+$mod+r で i3 を再起動。 Alt+F2 を押すと dmenu が表示されるかと思う。 --no-startup-id を指定したので、マウスカーソルを dmenu の上にのせても時計に変わらないはずだ。

$mod+d には dmenu_run が仕掛けられているが、ここでは i3-dmenu-desktop というのを設定した。見かけは一緒だけれども表示される候補はデスクトップエントリから選ばれているので、この方が扱いやすい場合もある。

スクリーンロック

ちょっとトイレに行くときなど、スクリーンロックできないとうまくない。だってそれは、いちいちログアウトなんてやってられないから。だからスクリーンロックするショートカットキーを設けたい。

前の「i3 wm タイル型ウィンドウマネージャを使う」では DM (デスクトップマネージャ)として LightDM をインストールした。 LightDM には dm-tool という便利な CLI ツールがあって、スクリーンロックもこれでかけられる。

bindsym Control+Mod1 exec dm-tool lock

Control+Alt+l を押せばロックされて LightDM の画面に切り替わる。トイレから帰ったらパスワードで元の画面に戻って来られる。

おわりに

ショートカットキーの設定だけになってしまったけれども、次のときには 2ストロークショートカットキーの設定や i3 で Run or raise する方法などを書く予定。

Revisions

  • [2017-03-25 Sat] Fix: スクリーンロックのソースコード( $altlMod1
スポンサードリンク