# niri v25.11 - Product: niri (https://whatsnew.fyi/product/niri) - Vendor: niri - Date: 2025-11-29 - Version: v25.11 - Original notes: https://github.com/niri-wm/niri/releases/tag/v25.11 - Permalink: https://whatsnew.fyi/product/niri/releases/v25.11 - Labels: Platforms: Linux What's New is an index, not a publisher: every entry below links to the vendor's own release notes, which are the authoritative source. Entries are labelled where they are hand-curated sample data, pre-releases, or drawn from a secondary source such as a developer blog. Reuse: the summaries, labels and curation here are © What's New. Quote freely with attribution and a link back; wholesale republication of the corpus is not permitted — terms: https://whatsnew.fyi/terms. The vendors' own release notes remain their publishers'. --- - **added** — Alt-Tab recent windows switcher with live window previews, window titles, and support for windows blocked from screencasts - **added** — Alt-Tab can scope windows by current workspace or output using W or O keys - **added** — Alt-Tab supports switching between windows of current application with Alt-` or Mod-` keybinds - **added** — Window focus_timestamp field and WindowFocusTimestampChanged event in niri IPC for custom desktop components - **added** — True Wayland maximize support allowing single window to occupy entire working area with no gaps or struts - **changed** — Un/fullscreen transitions are now fully animated with fading black backdrop and smooth rounded corner transitions - **changed** — Windows no longer jump up and down when un/fullscreening even with animations disabled - **changed** — Support for libdisplay-info 0.3 - **fixed** — Enable checked arithmetic in release builds to catch overflow errors Two weeks ago, Cloudflare had a major outage that took down a good half of the internet. Their [postmortem](https://blog.cloudflare.com/18-november-2025-outage/) included a snippet of Rust code with an `unwrap()`, causing much internet discourse. Now it is my turn to release Rust software with a healthy dose of `unwrap()`s, `assert!`s, and checked arithmetic enabled in release builds. Niri is a scrollable-tiling Wayland compositor. Windows are arranged in columns on an infinite strip going to the right. Opening a new window never causes existing windows to resize. Here are the improvements from the last release. > [!NOTE] > Packagers: niri now supports libdisplay-info 0.3. Most niri packages updated this dependency back in September using a patch—this patch is no longer necessary. ##### Alt-Tab After multiple major iterations and a lot of work by @rustn00b, we have an Alt-Tab recent windows switcher! https://github.com/user-attachments/assets/4996d0be-638f-403b-b111-89a343d50c00 It's got live window previews, window titles that fade if they're too long, and supports [windows blocked out from screencasts](https://yalter.github.io/niri/Screencasting.html#block-out-windows)—they will draw as black rectangles with their titles hidden. Just like in GNOME, there's a small delay to drawing the interface, so that quickly hitting Alt-Tab will switch to the previous window with no visual disturbance. There are some interesting design differences compared to Alt-Tab in other desktops. On niri, I expect it's common to have multiple terminals open, so Alt-Tab must go by windows (not by apps), and the previews must be big enough for you to be able to pick the right window. So, instead of a panel showing all windows at once, we have a scrolling layout with a few large previews. Then, since niri is primarily tiling, you might frequently focus intermediate windows while navigating the workspace. Think pressing Super a few times to reach some window towards the end, or moving the mouse across the screen with [`focus-follows-mouse`](https://yalter.github.io/niri/Configuration%3A-Input.html#focus-follows-mouse). These intermediate windows shouldn't "pollute" the Alt-Tab list, so we have a small debounce delay before a focused window is marked as recent. Workspaces in niri can get *long* (especially if you forget how many terminals you open), so our Alt-Tab can scope windows by current workspace or by current output by pressing W or O. The default binds are AltTab / ModTab to switch across all windows, and Alt\` / Mod\` to switch between windows of the current application. Note that if you bound something else to those keys, your existing binds will take precedence. The [recent windows configuration](https://yalter.github.io/niri/Configuration%3A-Recent-Windows.html#overview) wiki page explains how to change these key bindings, as well as everything else: open delay, debounce, window preview size, and so on. ![](https://github.com/user-attachments/assets/d2f94c9a-4e2c-4f05-bbbf-bc82d13a8b7f) Finally, the niri IPC now exposes the window [`focus_timestamp`](https://yalter.github.io/niri/niri_ipc/struct.Window.html#structfield.focus_timestamp) and an event stream [event](https://yalter.github.io/niri/niri_ipc/enum.Event.html#variant.WindowFocusTimestampChanged), so you can use the recent windows list in your own desktop components and scripts. ##### Un/fullscreen animations The transitions for windows going to and from fullscreen are now fully animated. No more windows jumping and growing to fullscreen size in a single frame. The black backdrop fades in and out and grows if needed, and [`clip-to-geometry`](https://yalter.github.io/niri/Configuration%3A-Window-Rules.html#clip-to-geometry) rounded corners smoothly transition between square and circular during this animat _[Truncated at 4000 characters — full notes: https://github.com/niri-wm/niri/releases/tag/v25.11]_