I3 Session Save
i3 wm で セッションを保存するには anyevent-i3およびperl-json-xsをインストールしておく sudo pacman -Ss perl-anyevent-i3 sudo pacman -Ss perl-json-xs 最初にworkspace でターミナルをいくつか開き、好きなレイアウトにしておく。ここが対象のworkspaceとなる。 次に、別のworkspaceで、対象のworkspace を指定してi3のレイアウトの配置をファイルに保存する。 i3-save-tree --workspace 1 > ~/.config/i3/workspace_1.json 保存したファイルから、コメントを取り除く。 tail -n +2 ~/.config/i3/workspace_1.json | fgrep -v '// split' | sed 's|//||g' > ~/.config/i3/workspace_1.json 作成したファイルをよみだすスクリプトを作成する。 load_layout.sh #!/bin/bash i3-msg "workspace 1; append_layout ~/.config/i3/workspace_1.json" レイアウトにあわせて起動したいアプリケーションを以下の形式で呼出すように、スクリプトに追記する。 (urxvt &) (qutebrowser &) qutebrowserを起動する場合i3-save-tree が出力したレイアウト状態に上手くあてはまらずに、余白(なにも起動していない領域)ができる場合がある。 これは、qutebrowserがQTというGUIのツール上で起動するために、サイズを指定するパラメータがうまく渡せていないのかもしれない。 そこで、workspace_1.json から、対応する領域の記述部分を削除して(qutebrowser &) をスクリプトから呼び出すだけにする。そうすると、それ以外のレイアウトの状態を復元したうえで、qutebrowserを新規に立ち上げた状態となり、作業状態を復元するという目的は満たすことができる。 レイアウトと復元した状態にすることはできないが、アプリケーションは起動しておけるのでそれで良しとする。 最後に、i3の設定ファイルにショートカットキーで、スクリプトを呼びだせるようにしておく。 .config/i3/config # 設定ファイルに追記 bindsym $mod+g exec sh ~/bin/load_layout Appendix. i3 - ArchWiki : Save and restore the window layout ...