ウインドウがたくさんになってくると画面分割したり色々とめんどくさい。最近では昔のBetterSnapToolみたいな挙動がWindowsでも標準搭載されているが、タイル型ウインドウマネージャはウインドウが開くと勝手に画面分割される。ウインドウをドラッグすればウインドウどうしがスワップできるし、空白のマルチディスプレイに動かせば全画面になる。
調べてみたところこうしたウインドウマネージャはLinuxでは多数あるものの、Windowsではまだまだ少ないようだ。たまたま見つけたkomorebiというツールが軽量でそこそこうまく動作したので、使い方をメモしておく。1
なお、komorebiはwritten in Rust。
Long path supportをenableにしておくことが推奨されているので、とりあえずやっておく。管理者権限でPowershellを開いて以下のコマンドを実行。
Set-ItemProperty 'HKLM:\SYSTEM\CurrentControlSet\Control\FileSystem' -Name 'LongPathsEnabled' -Value 1
Wingetでinstallした。https://lgug2z.github.io/komorebi/installation.html#winget
komorebiはAltキーと色々なキーを組み合わせて操作ができる。AutoHotKeyとwhkdの二通りでキーマップを設定できるが、whkdでやるのが簡単じゃないかな。
AutoHotKeyはCtrl+CまたはEscでIMEオフを設定するのに使っていたのでAutoHotKeyを使おうかなと思ったけど、whkdはkomorebi本体と一緒に起動できるのでこっちの方が楽。komodebic --wkhd
で起動すればキーマッピングは自動で適用される。
多分、whkdはwindow-hotkey-daemonの略だと思う。
デフォルトではマージンがバカでかく、かなり作業領域を狭められてしまうので、最初に設定をいじくっておくのが吉。
mkdir -p ~/.config/komorebi
nvim $PROFILE
以下を追記。
$Env:KOMOREBI_CONFIG_HOME = 'C:\Users\dakes\.config\komorebi'
$PROFILEをロードしなおして、パスが通ることを確認。
. $PROFILE
$Env:KOMOREBI_CONFIG_HOME
あとはconfigの中身を書いていく。何が何に対応しているのかの説明はあんまりなされていないので、あれやこれやと試して以下になった。
komorebi.jsonとして C:\Users\username.config\komorebi\komorebi.jsonに保存する。
{
"$schema": "https://raw.githubusercontent.com/LGUG2Z/komorebi/v0.1.29/schema.json",
"animation": {
"duration": 100,
"fps": 90,
"enabled": true,
"style": "EaseInOutSine"
},
"app_specific_configuration_path": "$Env:KOMOREBI_CONFIG_HOME/applications.yaml",
"window_hiding_behaviour": "Cloak",
"cross_monitor_move_behaviour": "Insert",
"default_workspace_padding": 2, // 全体的な枠のpadding
"default_container_padding": 2,
"border": true, // Activeなwindowにつける枠
"border_width": 1,
"border_offset": -1,
"theme": {
"palette": "Base16",
"name": "Helios", // 種類が多数あるもののここではあまり意味がない
"unfocused_border": "Base03",
"bar_accent": "Base0D"
},
"stackbar": { // stack機能(Alt+←→)を使うとおもむろにプログラム名を記載したタブが出てくる。正直結構不格好なので使ってない。
"height": 10,
"mode": "OnStack",
"tabs": {
"width": 300
}
},
"focus_follows_mouse": "Komorebi",
"transparency": true,
"transparency_alpha": 250,
"global_work_area_offset": { // 上部と下部に謎の隙間ができるので調整
"left": 0,
"top": 50,
"right": 0,
"bottom": 50
},
"monitors": [
{
"work_area_offset": {
"left": 0,
"top": 400,
"right": 0,
"bottom": 0
},
"workspaces": [ // 仮想デスクトップに名前とレイアウトを付ける
{
"name": "CODING",
"layout": "Columns"
},
{
"name": "WATCH",
"layout": "Columns"
},
{
"name": "COMMUNICATION",
"layout": "Columns"
}
]
}
]
}
かっちょいいステータスバーを作ることができる。正直自分にはかっこいいだけであんまり活用できてないけど、一応あれこれ設定してみた。
標準では日本語非対応フォントなので、適当なフォントに変えておく。
多様なthemeが用意されているので、ここは自分好みにしていいかも。
Komorebi
クラスを設定することで仮想デスクトップの何番目にいるかを表示させつつ、クリックで遷移できるようにもなるのだが、残念なことにキーバインドから遷移(Alt+1/2/3/4/…)してもそれは反映されない。今後のアプデに期待。
{
"$schema": "https://raw.githubusercontent.com/LGUG2Z/komorebi/v0.1.29/schema.bar.json",
"monitor": {
"index": 0,
"work_area_offset": {
"left": 0,
"top": 40,
"right": 0,
"bottom": 40
}
},
"font_family": "Noto Sans JP",
"theme": {
"palette": "Base16",
"name": "AyuDark",
"accent": "Base0D"
},
"left_widgets": [
{
"Komorebi": {
"workspaces": {
"enable": true,
"hide_empty_workspaces": false
},
"layout": {
"enable": true
},
"focused_window": {
"enable": true,
"show_icon": true
}
}
}
],
"right_widgets": [
{
"Media": {
"enable": true
}
},
{
"Storage": {
"enable": true
}
},
{
"Memory": {
"enable": true
}
},
{
"Network": {
"enable": true,
"show_total_data_transmitted": false,
"show_network_activity": true
}
},
{
"Date": {
"enable": true,
"format": "DayDateMonthYear"
}
},
{
"Time": {
"enable": true,
"format": "TwelveHour"
}
},
{
"Battery": {
"enable": true
}
}
]
}
起動は以下にて。これでホットキー設定とかっこいいステータスバーが現れる。
komorebic start --whkd --bar
止めるときは以下。ちょいちょいバグって空白のウィンドウが一部を占有して消せないという状況になるので、リスタートする羽目になることもしばしば。
komorebic stop --bar
atl+q
Quit Windowalt+m
Minimize Windowalt+h
alt+j
alt+k
alt+l
alt+x
flip windowalt+shift+h
alt+shift+j
alt+shift+k
alt+shift+l
alt++
大きくalt+-
小さくalt+p
Pause komorebi (壊れた時とかpicture in pictureが出たときとかに使う)alt+1/2/3/4/...
Workspaceの移動alt+shift+1/2/3/4...
カレントwindowを別のworkspaceへ移動下記起動コマンドを記述した.ps1ファイルをどこかに置き、ショートカットから起動するように設定したものをスタートアップフォルダ2に入れる。
komorebic shart --whkd --bar
結構バグを感じる瞬間が多かったり、barが一つのウインドウにしか表示されなかったりと不満はあるが、精力的にメンテされているし、極めて軽量に動作するのでwindowsではデファクトではなかろうか。
とりあえず職場PCと自宅PCに導入して3日くらいたったが、window切り替えが非常にやりやすく、キーバインドが体に染みついてくるととてもいい感じになってきた。デュアルディスプレイとの相性は悪いが、komorebiを使い始めるとむしろシングルディスプレイをフル活用できるようになるのが興味深い。
今後の開発に超期待!
shell:startup
でスタートアップフォルダを開けるのは覚えておいた方がいい。↩