Skip to content
GGEZUS edited this page Sep 23, 2026 · 10 revisions

Tablet support for niri: multi-finger touchscreen gestures, an on-screen keyboard that adapts to screen orientation, and automatic display rotation. Everything needed to run a niri session with the keyboard detached.

demo

It works as a small patch series on top of a current niri release (currently v26.04 + 20 patches), maintained here and rebuilt each time a new niri release comes out. Upstream is also working on configurable gesture binds; when that lands, this patchset can be retired.

Quick start

git clone https://github.com/GGEZUS/niri-tablet.git
cd niri-tablet
./update-niri-tablet.sh

That builds and installs the patched niri on Arch. Other distros: see Installation. After installing, copy the shipped gesture config (Configuration) and, if you want the on-screen keyboard and auto-rotation, the helpers under OSK and auto-rotation.

The shipped gesture scheme

config/gestures.kdl in the repo is the config this scheme is developed and daily-driven on. Copying it in gives you exactly this:

Gesture Action (as shipped)
3-finger swipes
horizontal drag resize the focused window's width, live, tracking your fingers 1:1
vertical drag workspace carousel (animated)
tap maximize / restore the focused column
3-finger hold + swipe
rest ~400ms, then swipe left/right move the focused window one column left/right
rest ~400ms, then swipe up/down move the focused window one workspace up/down
4-finger swipes (one finger more than fingers; 4 by default)
tap window overview
flick down close the focused window
flick up toggle the focused window fullscreen
flick left / flick right unbound by default: they fall back to the horizontal drag (resize/move-view); examples commented in the config
Edge swipes
one finger, swiping up from the bottom edge toggle the on-screen keyboard
one finger, swiping down from the top edge toggle the overview
one finger, swiping inward from the left edge focus the column to the left
one finger, swiping inward from the right edge focus the column to the right
Corner swipes
one finger, swiping diagonally from a corner unbound on purpose: pick your own

Nothing is locked in: every gesture takes any niri action, same as keybinds. The details, thresholds, and fallback rules are on Gestures; the full config syntax on Configuration.

Pages

  • Installation - Arch, NixOS, and other distros; how to verify the patched binary is running
  • Updating - the bundled updater and what it does
  • Gestures - reference for every gesture, how recognition works, what falls back to what
  • Configuration - the full gestures {} node reference
  • EasySetup - the GUI configurator: pick actions, test them live, export and import schemes
  • OSK and auto-rotation - the optional helpers (work on stock niri too)
  • Troubleshooting - common problems, debug logging, and how to file useful bug reports
  • Development - patch series, rebase workflow, design notes for anyone hacking on the gesture code

Tested hardware

  • Microsoft Surface Go 2
  • ThinkPad T480

License: GPL-3.0-only (the patches modify niri, also GPL-3.0-only). Credits are on Development and in the README.

Clone this wiki locally