業務PCでkomorebiを一週間使ってみた。良いところ・悪いところがあらかた見えてきたので、正直にレビューしていこうと思う。ウィンドウマネージャ選びの参考になれば。
やはり、タイル状にウィンドウを配置できるのがすごく良い。 自分はVSCode + ブラウザで調べものしながらcodingすることもあればVSCode + AIサービス1でcodingすることもある。それぞれの画面構成をキープしながら、一瞬slackにしてもとへ戻る、みたいなことをやるのにとても良い。
こういうことをしたいときは、以下のキーマップを使うことになる。
Alt + Shift + 2
でVSCodeの画面を移動してからPoe.comを開く(画面2)Alt + Shift + 3
でslackがある画面3に移動して戻る(画面3<>2<>1)嬉しい悲鳴としては、ウィンドウ管理がしやすくなったおかげでマルチディスプレイを活用しなくなった。これまではslackをサブディスプレイに置いておいてメインディスプレイで作業していたが、ほとんど目線を変えることなくウィンドウをパッパッと切り替えられるようになってしまった。あんまり考えたくはないが、自宅ではウルトラワイドのメインディスプレイだけでいい気がしてきた…。
気になるポイントの一つ目として、ディスプレイの接続をしたり外したりする際の動作が安定しない。画面構成が変わってしまうのはまだ許せるとしても、空白のウィンドウが画面の半分を占有していて、しかも消すこともできない。なんてことがある。
自分は仕事上ラップトップを社内で持ち運ぶことが多い。基本は居室でディスプレイに接続してcodingをメインに、会議の際は会議室か空き部屋にラップトップを持って行ってそれ一台で使うか会議室のモニターにつなぐなどしている。こうやって頻繁に接続を変える場合はAlt + p
でkomorebiを停止するとか、再起動するとかする必要があるのがだいぶ手間…。
komorebi.json
の設定を変えると安定化したり不安定化したりするので、純粋にバグの問題かもしれない。
もう一つの気になるところは、画面分割しないでほしいウィンドウまで強制的にタイル配置されちゃうので、新しいウィンドウがポップアップするときは注意を払う必要があるところ。しかしこれはapplications.yaml
を編集してアプリケーションごとにkomorebiを適用するかしないかを設定することでなんとかなったりする。既に製作者がZoomや1passwordなどの定番ツールを制御対象外に設定してくれているので、それでも足りなければそれを参考に追加するといい。
bar機能はかっこいいんだが、マルチディスプレイしたときに一つのディスプレイにしか表示されないし、ホットキーでの画面移動とも連動していないので思い切って使わないことにした。
起動時には—bar optionを付けなければいい。
komorebic start --whkd
applications.yaml
上述の通り、applications.yaml
に一つだけArc browserのpicture in pictureを登録している。
komorebicを起動、画面を開いた状態でkomorebic state
コマンドを打つと現在のウィンドウ名・id名を知ることができる。
- name: pip
identifier:
kind: Exe
id: Arc.exe
matching_strategy: Equals
float_identifiers:
- kind: Title
id: Arc picture in picture
matching_strategy: Equals
komorebi.json
結局はbar機能も使わないのでoffsetをいじる必要もなく、padding widthをちょこっといじった程度に落ち着いた。
{
"$schema": "https://raw.githubusercontent.com/LGUG2Z/komorebi/v0.1.29/schema.json",
"app_specific_configuration_path": "$Env:KOMOREBI_CONFIG_HOME/applications.yaml",
"window_hiding_behaviour": "Cloak",
"cross_monitor_move_behaviour": "Insert",
"default_workspace_padding": 2,
"default_container_padding": 2,
"border": true,
"border_width": 8,
"border_offset": -1,
"theme": {
"palette": "Base16",
"name": "Helios",
"unfocused_border": "Base03",
"bar_accent": "Base0D"
},
"stackbar": {
"height": 30,
"mode": "OnStack",
"tabs": {
"width": 300
}
},
"focus_follows_mouse": "Komorebi",
"transparency": true,
"transparency_alpha": 250,
"monitors": [
{
"workspaces": [
{
"name": "I",
"layout": "BSP"
},
{
"name": "II",
"layout": "BSP"
},
{
"name": "III",
"layout": "BSP"
},
{
"name": "IV",
"layout": "BSP"
},
{
"name": "V",
"layout": "BSP"
},
{
"name": "VI",
"layout": "BSP"
},
{
"name": "VII",
"layout": "BSP"
}
]
}
]
}