Koma implements a broad Wayland protocol matrix directly on top of Smithay, enforcing sandbox filtering (ClientState { restricted: true }) for wp_security_context_manager_v1 and komactl sandbox jailed sockets.
Shell, Surface & Output Protocols
| Protocol / Global | Purpose & Client Ecosystem | Security / Sandbox Rule |
|---|---|---|
xdg_shell (xdg_wm_base) |
Desktop toplevels, popups, fullscreen, SSD negotiation (zxdg_decoration_manager_v1) |
Jailed clients stay confined to their Headless workspace |
zwlr_layer_shell_v1 |
Bars (waybar), notifications (swaync), launchers (fuzzel/rofi), koma-overview |
Exclusive zones shrink workspace workarea cleanly; filtered out for sandboxed clients |
ext_session_lock_v1 |
Fail-closed lockscreens (swaylock, hyprlock) |
Masks rendered frames, blocks grim screencopy (failed), defers xdg-activation |
zwlr_output_manager_v1 |
Dynamic multi-monitor inspection, test, and apply (kanshi, wdisplays) |
Restricted from sandboxed/jailed clients |
zwlr_output_power_manager_v1 & zwlr_gamma_control_manager_v1 |
DPMS sleep/wake (wlopm) and night-light / color ramps (wlsunset, gammastep) |
Filtered out for restricted clients |
wp_fractional_scale_manager_v1 & wp_viewporter |
Sharp fractional HiDPI scaling (1.25, 1.5, 1.6, "auto") |
Per-output scale delivery |
xdg_activation_v1 & xdg_toplevel_icon_v1 |
Cross-client focus tokens (10 s TTL) and validated window icons |
Jail-scoped token validation & lock-screen deferral |
zwlr_foreign_toplevel_manager_v1 & ext_foreign_toplevel_list_v1 |
Taskbar / panel window list & activate/minimize/close controls | Filtered from restricted clients & guarded during session lock |
Screencopy & xdg-desktop-portal
zwlr_screencopy_manager_v1(v3): Supports SHM and DMA-BUF capture (grim,wayshot,slurp). Emits a singlebuffer/linux_dmabufevent per frame and honorsblock_out_from = "screencopy"/"all"blackout masks plusext-session-lock-v1fail-closed denial.xdg-desktop-portal(koma.portal): RoutesScreenCast,Screenshot, andGlobalShortcuts/Inhibitinterfaces viaxdg-desktop-portal-wlr/xdg-desktop-portal-gtkcompatible portal configuration installed with Koma packages.
Input Method (IME) & Virtual Input
Koma natively implements the modern Wayland CJK/IME stack without X11 dependencies:
zwp_text_input_manager_v3(text-input-v3) for GTK4, Qt6, Chromium/Electron (--enable-wayland-ime), and native Wayland terminals.zwp_input_method_manager_v2(input-method-v2) andzwp_virtual_keyboard_manager_v1forFcitx5andIBuscandidate popups and preedit composition.zwp_pointer_constraints_v1&zwp_relative_pointer_manager_v1: Pointer lock/confine and raw relative motion for games and 3D viewports (broken cleanly onext-session-lockor focus change).wl_touch&wp_cursor_shape_manager_v1: Multi-touch gesture/surface routing and compositor-rendered cursor themes.
TIP
IME vs. Agent Text Injection: Interactive typing uses Fcitx5 / IBus over text-input-v3 + input-method-v2, whereas AI automation via koma-agent.sock uses koma-seat's TextInjectStrategy (xkb_keymap / text_input_v3 / clipboard Ctrl+Shift+V) so agent text never triggers human IME candidate popups.
wp_security_context_manager_v1 & Jailed Clients
Both Wayland-native wp_security_context_manager_v1 (used by Flatpak / bubblewrap) and komactl sandbox attach ClientState { restricted: true }. Restricted connections cannot bind privileged globals (zwlr_layer_shell_v1, zwlr_screencopy_manager_v1, zwlr_data_control_manager_v1, zwp_virtual_keyboard_manager_v1, ext_session_lock_manager_v1, zwlr_output_manager_v1, or wp_security_context_manager_v1 itself).