TIP
Koma には Hyprland 互換の既定キーマップ(inherit_default_binds = true)が組み込まれています。~/.config/koma/init.lua が存在しない状態でも、起動直後からターミナル起動・タイリング・ワークスペース切替・リロードを行えます。
起動モード(koma [OPTIONS])
CLI オプションはディスプレイや DRM デバイスを開く前に純粋関数として解析されます。
| オプション | バックエンド / 挙動 | 主な用途 |
|---|---|---|
koma --winit |
Smithay Winit バックエンドで既存セッション内にネスト起動 | Hyprland / Sway / GNOME 上での安全な設定検証 |
koma --tty |
libseat(seatd/logind)・udev・DRM/KMS・libinput で VT へ直接起動 |
実機 TTY または QEMU/KVM virtio-vga 検証 |
koma --session |
ログインセッションモード(koma-session、greetd、systemd --user) |
WAYLAND_DISPLAY、DISPLAY、XDG_CURRENT_DESKTOP=koma、XDG_SESSION_TYPE=wayland、KOMA_INSTANCE_SIGNATURE を systemd --user と D-Bus へ取り込み、$NOTIFY_SOCKET/$NOTIFY_FD へ READY=1 を通知 |
koma --headless-check |
起動前自己診断とバージョン表示 | CI やパッケージ導入後の確認 |
--spawn <CMD> |
準備完了後にコマンドを自動起動 | 例:koma --winit --spawn foot |
-c, --config <PATH> |
$XDG_CONFIG_HOME/koma/init.lua 以外の設定ファイルを指定 |
代替設定のテスト |
NOTE
バックエンド指定を省略した場合、通常の環境で WAYLAND_DISPLAY または DISPLAY が存在すれば --winit、それ以外は --tty が選択されます。SIGTERM / SIGINT / SIGHUP を受信するとソケットを清掃し終了コード 0 で停止します。
組み込み既定キーマップ(Mod:TTY は Super、Winit ネスト時は Alt)
| キー / 操作 | アクション | 説明 |
|---|---|---|
Mod + Return |
spawn({ "ghostty" }) |
既定ターミナルを起動 |
Mod + Q |
window.close() |
フォーカス中のウィンドウを閉じる |
Mod + V |
window.float_toggle() |
フローティング切替 |
Mod + F |
window.fullscreen_toggle() |
フルスクリーン切替 |
Mod + P |
window.pseudotile_toggle() |
Dwindle 疑似タイル切替 |
Mod + E |
dwindle.toggle_split() |
Dwindle 分割方向(縦/横)切替 |
Mod + H / J / K / L |
focus.left/down/up/right() |
方向別にフォーカス移動 |
Mod + Shift + H / J / K / L |
window.move_direction(...) |
方向別にウィンドウ移動/入れ替え |
Mod + 1..9 |
workspace.focus("1".."9") |
ワークスペース 1〜9 へ切替 |
Mod + Shift + 1..9 |
window.move_to_workspace("1".."9") |
ワークスペース 1〜9 へウィンドウ移動 |
Mod + R / Mod + Ctrl + R |
scrolling.switch_preset_column_width() |
スクロール列幅プリセットの順/逆送り |
Mod + Ctrl + Shift + R |
scrolling.switch_preset_window_height() |
スクロールウィンドウ高さプリセット切替 |
Mod + C / Mod + M |
scrolling.center_column() / maximize_column() |
列の中央寄せ/最大化 |
Mod + W |
scrolling.toggle_column_tabbed_display() |
列内タブ表示の切替 |
Mod + Comma / Mod + Period |
scrolling.consume_window_into_column() / expel_window_from_column() |
列への取り込み/切り離し |
Mod + BracketLeft / BracketRight |
scrolling.consume_or_expel_window_left/right() |
左/右の列へ統合または分離 |
Mod + S / Mod + Shift + S |
scratchpad.toggle() / move_window() |
スクラッチパッド切替/移動 |
Mod + Tab |
overview.toggle() |
koma-overview 空間ワークスペース一覧を表示 |
Mod + MouseLeft / MouseRight |
window.drag_move() / drag_resize() |
ドラッグによる移動・リサイズ |
Mod + WheelScrollDown / Up |
workspace.focus_next() / focus_prev() |
ホイールでワークスペース切替(150 ms クールダウン) |
Mod + WheelScrollLeft / Right |
deck.cycle_prev() / cycle_next() |
Deck/Stash スタック巡回(150 ms クールダウン) |
Mod + Shift + R |
compositor.reload_config() |
init.lua をホットリロード |
Mod + Shift + E |
compositor.quit() |
コンポジタを安全終了 |
Mod + G(プリエンプション障壁) |
即時人間プリエンプション | < 1 ms でエージェントの操作リースを無効化(4091 ERR_HUMAN_PREEMPTED) |
ワークスペース概覧とキルスイッチ(Mod + Tab / Mod + G)
- 空間概覧(
koma-overview):既定ではMod + Tabに割り当てられています(Mod + Oを使いたい場合はkoma.bind("Mod + O", koma.act.overview.toggle())を追記してください)。koma-admin.sockのscene.inventoryを用いて空間一覧を描画します。 - 人間優先キルスイッチ(
Mod + G):Mod + Gまたは物理キーボード/ポインタ入力が発生した瞬間にエージェントの書き込みリースを停止し、操作の競合を防ぎます。
xwayland-satellite による X11 アプリ互換
Koma は Ring 0 本体に Xwayland を直接組み込まず、外部ルートレスの xwayland-satellite に委譲します。
koma.xwayland({
enabled = true,
-- path = "/usr/bin/xwayland-satellite", -- 任意:バイナリパス明示
isolate_agent_workspaces = true, -- エージェント用ワークスペースを X11 から隔離
})