Wayland desktopでキーバインドをOS横断に寄せる設計メモ
Posted: | Tags: interface, kde, keyboard, labwc, wayland
Wayland desktopでキーバインドをOS横断に寄せる設計メモ
目的
macOS、Windows、Linux で、アプリ起動、ウィンドウ移動、タイル配置、仮想デスクトップ移動の操作感を近づけたい。 ただし Linux Wayland では、X11 時代のように外部プロセスから任意ウィンドウを横断操作する前提にしていない。
Wayland では compositor が入力とウィンドウ管理の権限境界になる。 このため、キーボードの低レイヤ変換とウィンドウ操作を分ける。
一旦考えた基本方針
- CapsLock/Ctrl や layer 的なキー変換は
keydに寄せる - アプリ起動、ウィンドウ移動、最大化、タイル配置は compositor / window manager 側に寄せる
- KDE Plasma Wayland では KWin global shortcut と
.desktopentry を使う - labwc では
~/.config/labwc/rc.xmlの native action を使う - package install、service enable、設定配置は Ansible などの構成管理に寄せる
keyd は「キーを別のキーとして見せる」層に留める。
アプリ起動やウィンドウ制御まで keyd でやろうとすると、Wayland の compositor 境界を迂回する設計になりやすい。
責務分離
| 領域 | Linuxでの担当 | 理由 |
|---|---|---|
| CapsLockをCtrlにする | keyd | session / compositor 非依存にしたい |
| Hyper風の修飾キー | keyd または keyboard firmware | 入力層で完結させたい |
| アプリ起動 | .desktop entry / compositor shortcut | desktop environment の仕組みに乗せる |
| ウィンドウのhalf snap | KWin / labwc native action | Wayland では compositor が正規の管理者 |
| 物理ディスプレイ間移動 | KWin / labwc native action | monitor layout を compositor が持つ |
| 同一アプリ内のwindow cycle | compositor native action | 外部プロセスで window list を触らない |
KDE Plasma Wayland
KDE Plasma Wayland では、KWin の global shortcut と .desktop entry を中心にする。