| 0001 |
Fixed canvas with an input region instead of resizing the layer window |
accepted (Phase 0, #2-#5) |
| 0002 |
Defer fullscreen suppression until niri reports fullscreen state |
superseded by ADR 0006 |
| 0003 |
Mic and camera privacy from the PipeWire graph |
accepted (Phase 5, #34) |
| 0004 |
Wake sources on announcements, poll as fallback |
accepted (Phase 6, #40) |
| 0005 |
Privacy indicator outside the Arbiter |
accepted (design, roadmap 7A-8) |
| 0006 |
Island on the Top layer, no fullscreen suppression |
accepted (design, roadmap 7A) |
| 0007 |
Banners and OSD leave the Island |
accepted (design, roadmap 8) |
| 0008 |
Kanade is a shell, not only an island |
accepted (design) |
| 0009 |
Orthogonal Activity policy fields |
accepted (design, roadmap 7A-8) |
| 0010 |
Split Presentation and Rest right click |
accepted (design, roadmap 9 Shell essentials, #128) |
| 0011 |
Kanade adapters where Amane lacks a capability |
accepted (design, roadmap 9 Shell essentials) |
| 0012 |
Tray at Rest and item menus |
accepted (roadmap 9 Shell essentials, #135) |
| 0013 |
Screen recording with wf-recorder |
accepted (roadmap 9 Shell essentials, #140) |
| 0014 |
Running apps matched to desktop entries |
accepted (roadmap 10 Desktop/data, #143 |
| 0015 |
Local calendars as iCalendar files |
accepted (roadmap 10 Desktop/data, #150) |
| 0016 |
Google Calendar account sync |
accepted (roadmap 10 Desktop/data, #151) |
| 0017 |
Weather from Open-Meteo |
accepted (roadmap 10 Desktop/data, #152) |
| 0018 |
Lock stays in the shell |
accepted (roadmap 11 Session, #153) |
| 0019 |
Clipboard sensitive content |
accepted (roadmap 12 Polish, #162) |
| 0020 |
Liquid glass over its own Wayland connection |
superseded by ADR 0049 (no glass remains) |
| 0021 |
The OSD returns to the Island |
accepted |
| 0022 |
Key repeat on the Island |
superseded by ADR 0034, which moves key repeat into the runtime |
| 0023 |
Banners come out of the Island |
accepted |
| 0024 |
Glass on every surface |
superseded by ADR 0049 |
| 0025 |
The lock screen over its own connection |
accepted (amended by ADR 0065 and ADR 0066) |
| 0026 |
Kanade owns its runtime |
accepted |
| 0027 |
The runtime takes over one window at a time |
accepted |
| 0028 |
The runtime is ported from Amane |
accepted |
| 0029 |
Settings pages by task |
accepted |
| 0030 |
The canvas follows the largest body, and list Surfaces their content |
accepted |
| 0031 |
The Island and the Dock merge where they share an edge and a side |
accepted |
| 0032 |
The privacy cluster rides the Island |
superseded by ADR 0033 (dots inside the body, none over a fullscreen window) |
| 0033 |
The privacy cluster is dots inside the Island |
accepted |
| 0034 |
Key repeat and the toplevel list are the runtime’s |
accepted |
| 0035 |
Derived updates run in the runtime, in order |
accepted |
| 0036 |
The Island window’s scene is resolved once |
accepted |
| 0037 |
Liquid glass from GPU textures |
superseded by ADR 0049, which removes the capture |
| 0038 |
niri is a Service its readers watch |
accepted |
| 0039 |
Wallpaper palettes through Matugen |
accepted |
| 0040 |
Targeted desktop appearance adapters |
accepted |
| 0041 |
Wallpaper colors in apps |
accepted |
| 0042 |
Live Activities from outside |
accepted |
| 0043 |
Calendar reminders |
accepted |
| 0044 |
CalDAV accounts |
removed by ADR 0045 |
| 0045 |
Events added on the Calendar Surface, and CalDAV removed |
accepted |
| 0046 |
Night light through wlsunset |
accepted |
| 0047 |
Idle in the shell, with a dim grace |
accepted (amended by ADR 0065 and ADR 0066) |
| 0048 |
Frosted Glass is the only material |
superseded by ADR 0049 |
| 0049 |
The shell is solid black |
accepted |
| 0050 |
The shell is a tinted solid |
accepted |
| 0051 |
Paper, a second finish |
accepted |
| 0052 |
Liquid Glass, a third finish |
accepted |
| 0053 |
Settings: keyboard ring, previews and contrast |
accepted |
| 0054 |
Liquid Glass refinements |
accepted |
| 0055 |
Hooks run user commands on a closed set of events |
accepted |
| 0056 |
The audio visualizer through cava |
accepted |
| 0057 |
Blur, a fourth finish, by the compositor |
accepted |
| 0058 |
Agent hooks, and reposts of a Live Activity coalesced |
accepted |
| 0059 |
A notification’s progress is a Live Activity |
accepted |
| 0060 |
Focus is one switch over the Modules that already quiet the session |
accepted |
| 0062 |
Calendar subscriptions |
accepted |
| 0063 |
Synced lyrics |
accepted |
| 0064 |
Per-monitor wallpaper |
accepted |
| 0065 |
The PAM service, PAM’s messages and the waking key |
accepted |
| 0066 |
A short grace after an idle lock |
accepted |
| 0067 |
Arrangeable Controls tiles |
accepted |
| 0070 |
Banners out of screencasts, by an opt-in niri layer rule |
accepted |
| 0071 |
A failed niri config load shows as a failed Live Activity |
accepted |
| 0072 |
The dynamic cast target as a verb, and paused casts named |
accepted |
| 0075 |
Do Not Disturb may end by itself |
accepted |
| 0076 |
More hook events: start, Do Not Disturb, power profile and leaving the session |
accepted |
| 0077 |
The session countdown says what would be lost |
accepted |
| 0078 |
Focus may turn on by itself for a screen cast |
accepted |
| 0079 |
A Banner takes an inline reply |
accepted |
| 0080 |
Desktop accessibility from the settings portal |
accepted |
| 0081 |
Per-app output routing |
accepted |
| 0082 |
DDC/CI brightness for external monitors |
accepted |
| 0083 |
An app’s launcher entry progress is a Live Activity |
accepted |
| 0084 |
A Power Profile tile, and the tiles left out |
accepted |
| 0085 |
A destructive press is confirmed by holding |
accepted |
| 0086 |
The color picker is niri’s, as a Capture tile and a verb |
accepted |
| 0087 |
The calculator converts units and bases from its own table |
accepted |
| 0088 |
Health in Settings, from the doctor’s checks run in the shell |
accepted |
| 0089 |
The lock screen shows the keyboard layout in use |
accepted |
| 0090 |
Input methods through text-input-v3, in the runtime |
accepted |
| 0091 |
The UI scale is applied once, at the runtime’s scale seam |
accepted |
| 0095 |
The semantic tree is the input targets, said by the views |
accepted |
| 0096 |
ui.describe: structure by default, content on request, off to refuse |
accepted |
| 0097 |
kanade ui acts through the runtime’s own input path |
accepted |
| 0098 |
kanade ui is refused while locked, and the socket is user-only |
accepted |
| 0099 |
The ui module and its verbs |
accepted |
| 0100 |
Liquid Glass takes its own drawing out of the copy |
accepted, experimental and off by default (appearance.refraction) |
| 0101 |
Satellites bud out of the body as one liquid shape |
accepted |
| 0105 |
Gestures are matched by a pure $1 recognizer |
accepted |
| 0106 |
Gesture templates live in state, their verbs in config |
accepted |
| 0107 |
A gesture runs a Kanade verb through the shell’s own socket |
accepted |
| 0108 |
The gesture overlay always lets go |
accepted |
| 0109 |
The gesture trail is a glowing line; reduced motion draws a plain one |
accepted |
| 0110 |
External Live Activities carry actions and hear them pressed |
accepted |
| 0111 |
Voice dictation through the Gemini API |
accepted |
| 0112 |
The Launcher runs a closed set of Kanade verbs |
accepted |
| 0113 |
Owned events are edited in place and keep what they hold |
accepted |
| 0114 |
Clipboard pins and previews live in memory and tmpfs |
accepted |
| 0115 |
Clipboard pins persist as plaintext in a private file |
accepted |
| 0116 |
Recording targets, audio and pause |
accepted (Capture, slice 1) |
| 0117 |
Window recording through niri’s screen cast |
accepted (Capture, slice 2) |
| 0118 |
Notification sounds are chosen in layers |
accepted |
| 0119 |
Kanade edits niri’s config.kdl on request |
accepted |
| 0120 |
SDDM loads a root-owned theme and separate user data |
accepted |
| 0121 |
Remove the Liquid Glass finish |
accepted |
| 0122 |
The installer ships a binary |
superseded for binary distribution |
| 0123 |
The first start is a tour |
accepted and implemented |
| 0124 |
Notification silence |
accepted |
| 0125 |
The installer wires the chosen Niri session; the first wallpaper is picked |
accepted |
| 0126 |
Launcher matches characters within its existing fit tiers |
accepted |
| 0127 |
The Launcher ranks on decayed frecency and remembers the queries that launched an item |
accepted |
| 0128 |
The Launcher lists sections for an empty query |
accepted |
| 0129 |
The Launcher’s actions are a panel, and Ctrl+1..9 press the nth answer |
accepted |
| 0130 |
A query nothing answers is offered to the web |
accepted |
| 0131 |
The Launcher opens in the Island, or in a window of its own |
accepted |
| 0132 |
Column and window controls are a Surface of their own |
accepted |
| 0133 |
The niri strip minimap is a Surface of its own |
accepted |
| 0134 |
The emoji grid is a Surface, sharing the Launcher’s table |
accepted |
| 0135 |
Prefix keys open their Surface |
accepted |
| 0136 |
Weather place search and IP lookup, on request |
accepted |
| 0137 |
The Desk: read-only faces of Services on the desktop |
accepted |
| 0138 |
Screen time |
accepted |
| 0139 |
Quicklinks are your own rows in the Launcher |
accepted |
| 0140 |
Desk notes: the one Desk face typed into in place |
accepted |
| 0141 |
Files is a shelf, not a manager |
accepted |
| 0142 |
Screenshots annotate in place, one slice of the editor |
accepted |
| 0143 |
Desk faces move by their handle, and stay where they are let go |
accepted |
| 0144 |
A moving wallpaper is drawn by the shell, over awww’s still |
accepted |
| 0145 |
Usage rings on the Island |
accepted |
| 0146 |
Polkit authentication on the Island |
accepted |
| 0147 |
Umbriel compositor support and config editor |
accepted |
| 0148 |
The Desk’s keyboard is the pointer’s focus |
accepted |
| 0149 |
Umbriel starts a shell recovery parent |
accepted |