← back Toughpad →

Sway

Toughpad · 2026-05-09

Sway

Terminal-First Touch on a Rugged x86 Tablet

Sway is not just a tiling Wayland compositor. It is an output-authoritative, input-routable, scriptable display server that already checks every box you need for terminal-first touch UX on x86 hardware. Treat it as the source of truth between display, digitiser, and idle daemon, and most "Linux tablet" distros start looking heavy.

The Output Is the Source of Truth

Wayland made the compositor authoritative for display geometry, and sway propagates that authority to input. Three lines do the work: output eDP-1 scale 1.5, plus map_to_output eDP-1 clauses for the Wacom digitiser and the capacitive touch surface. The output transform changes — landscape to portrait, native to docked — and the input mappings follow atomically. No xinput rituals. No per-device calibration. No rotation hooks for the touch layer. The whole point of the protocol is that output state is canonical, and once you internalize that, half the historical "Linux tablet" pain disappears.

The On-Screen Keyboard Is a Process, Not a Mode

wvkbd-mobintl runs from session start, hidden, with the layer set landscape, landscapespecial, nav, full, special. A keybind sends SIGRTMIN to toggle visibility. The keyboard is a daemon you summon, not a modal state you enter.

The layer set is the entire payoff:

With these layers, vim is usable from the OSK. Without them, the entire build collapses. Nothing else in the configuration is harder to converge on.

Every System Action Is a CLI Tool

Brightness is brightnessctl set ±5%, bound to the hardware keys. Audio is wpctl set-volume. Network management is nmtui in a foot terminal, bound to Mod+n. Rotation is a twelve-line shell script toggling swaymsg output eDP-1 transform.

Each used to be a research project. Each is now a process you can call from a keybind, a Waybar button, a script, or a foot session. There is no GUI-only path to anything important. That isn't asceticism — it's the natural shape of the platform once the compositor and the kernel expose the primitives directly.

The Stack Is Already in Debian

No custom kernel. No DKMS. No third-party APT repo. The tablet's accelerometer, gyro, magnetometer, ambient-light sensor, and inclinometer all expose themselves under /sys/bus/iio/devices/ via the stock hid_sensor_* modules. The Panasonic-specific hotkeys load through panasonic_laptop, in-tree since 2018. Firmware ships in non-free-firmware, microcode in intel-microcode, and the entire userspace — sway, foot, waybar, wvkbd, brightnessctl, swayidle, pipewire — is one apt install away.

What's left to write is configuration, not engineering. About two hundred manual packages. About forty lines of distinctive sway config. One short shell script. The build is not impressive code; it is a set of confident decisions about which primitives to anchor against.

What's Missing Is Not What You Think

No auto-rotation daemon. The accelerometer sits idle; rotation is manual via a Waybar button. No stylus pressure curve, no barrel-button mapping. No swipe-from-edge gesture vocabulary. None of this is a problem of will — each is a short shell loop or a libinput-gestures stanza away. They are not built because Mod+key with foot and wmenu is faster than gestures, and rotation is rare enough to be a button. The omissions are deliberate.

The "Linux tablet" mistake is to import a phone-shaped UX onto tablet hardware. Phosh and Plasma Mobile spend engineering on the wrong features: app grids, lockscreen widgets, swipe gestures. The right features were already in the compositor — output transforms, input routing, signal-driven keyboards, hardware-key bindings. Choosing them is the work.

Confluxys: The Floor Comes Up

Wayland made compositor state authoritative. wvkbd is a protocol-native keyboard, not an X11 hack with extra steps. swayidle is a small program that handles DPMS and suspend without a desktop-environment-sized session manager. brightnessctl talks to the kernel without a polkit ritual. Each, individually, used to be a heroic configuration arc. Each is now trivial.

The Confluxys observation is that the work has shifted. The signal you wanted to extract from the static of "Linux on tablets" is no longer buried in custom drivers or DBus archaeology — it is in the protocol, the kernel, the in-tree modules, the apt-installable userspace. The floor has come up. What used to be engineering is now selection. What remains is to choose which primitive to anchor against, and to stop pretending you need anything more.