# niri v25.02 - Product: niri (https://whatsnew.fyi/product/niri) - Vendor: niri - Date: 2025-02-22 - Version: v25.02 - Original notes: https://github.com/niri-wm/niri/releases/tag/v25.02 - Permalink: https://whatsnew.fyi/product/niri/releases/v25.02 - 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** — Columns can now present windows as tabs instead of vertically stacked tiles - **added** — Add toggle-column-tabbed-display action to switch a column to tabbed mode - **added** — Add focus-window-top and focus-window-bottom actions to focus the topmost or bottommost window in a column - **added** — Add focus-window-down-or-top and focus-window-up-or-bottom actions to cycle navigation between windows in a column - **added** — Add focus-window-in-column action to focus a specific window by index - **added** — Tab indicator can be customized and moved to top, bottom, or right of the column - **added** — Windows can open as tabbed columns by default globally or via window rule - **added** — Niri can now draw shadows behind windows - **added** — Shadows can be customized with properties like softness, spread, offset, and color globally and per-window - **added** — Shadows work on layer-shell surfaces and can be enabled via layer rules - **added** — View can now be scrolled left and right during drag-and-drop operations by moving the mouse near the monitor's edge - **added** — Drag-and-drop view scrolling also triggers when dragging a window in the tiling layout - **added** — Add is-window-cast-target=true window rule to match windows targetted by individual-window screencast - **changed** — Test infrastructure no longer requires RAYON_NUM_THREADS=1 on heavily multithreaded CPUs 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: I fixed the problem where some tests required `RAYON_NUM_THREADS=1` on a heavily multithreaded CPU. Please remove that variable if you had it set, so that we don't miss any new bugs. https://github.com/user-attachments/assets/a9e37678-5783-4de0-b2c7-a26094cd635f ##### Tabbed columns Columns can now present windows as tabs, rather than vertically stacked tiles. This is useful when you have limited vertical space, or when you frequently switch between two large windows and want to avoid scrolling. Add this new bind to your config to switch a column to tabbed mode: ```kdl binds { Mod+W { toggle-column-tabbed-display; } } ``` This is *the only* new bind you will need. All other keyboard and mouse navigation works exactly the same as with regular columns: switch tabs with `focus-window-down/up`, add or remove windows with `consume-window-into-column`/`expel-window-from-column`, and so on. (Thanks @elkowar for this wonderful UX idea!) https://github.com/user-attachments/assets/5b357895-bcf3-42eb-a2e1-2b220d63d0c9 There are a few new actions that help navigate the tabs. All of them also work on regular columns. - `focus-window-top/bottom` focuses the topmost or the bottommost window in a column. - `focus-window-down-or-top` and `focus-window-up-or-bottom` cycle the navigation so the focus jumps from the last to the first window and vice versa. - `focus-window-in-column ` focuses a specific window by index. The tab indicator can be customized in several ways and moved to top/bottom/right of the column. See [the wiki page](https://github.com/YaLTeR/niri/wiki/Configuration:-Layout#tab-indicator) for more details. ![Tab indicator at the top of the column.](https://github.com/user-attachments/assets/cf8d1308-da36-4327-bbc6-dbb7a1f751d0) You can also make windows open as tabbed columns by default [globally](https://github.com/YaLTeR/niri/wiki/Configuration:-Layout#default-column-display) or with a [window rule](https://github.com/YaLTeR/niri/wiki/Configuration:-Window-Rules#default-column-display). This goes well with the `hide-when-single-tab` setting for the tab indicator. ##### Shadows Niri can now draw shadows behind windows. Apart from being a nice aesthetic effect, shadows help to delineate floating and otherwise overlapping windows. They are especially useful when you [disable](https://github.com/YaLTeR/niri/wiki/Configuration:-Miscellaneous#prefer-no-csd) or [clip away](https://github.com/YaLTeR/niri/wiki/Configuration:-Window-Rules#clip-to-geometry) client-side decorations (which commonly include shadows of their own). ![Shadows help to tell windows apart.](https://github.com/user-attachments/assets/c32f1911-4ef2-42d3-9b13-5c9db0268190) Niri shadows are not enabled by default to not clash with the shadows coming from client-side decorations. Turning them on is simple enough: ```kdl // Enable shadows. layout { shadow { on } } // Also ask windows to omit client-side decorations, so that // they don't draw their own window shadows. prefer-no-csd ``` You can customize properties like softness (blur radius), spread, offset, and color, both [globally](https://github.com/YaLTeR/niri/wiki/Configuration:-Layout#shadow) and [for individual windows](https://github.com/YaLTeR/niri/wiki/Configuration:-Window-Rules#shadow). Like borders and focus rings, shadows will follow the window corner radius that you set via [`geometry-corner-radius`](https://github.com/YaLTeR/niri/wiki/Configuration:-Window-Rules#geometry-corner-radius). ![Hard shadows example.](https://github.com/user-attachments/assets/18f6e622-652c-47a0-8f21-6805f21d7169) Shadows also work on layer-shell surfaces. Due to the higher _[Truncated at 4000 characters — full notes: https://github.com/niri-wm/niri/releases/tag/v25.02]_