Commit graph

90 commits

Author SHA1 Message Date
Ivan Molodetskikh
7d60231e35 wiki: Clarify that environment isn't imported to systemd 2025-12-20 08:33:02 +03:00
John Rinehart
7a237e519c
Implement include optional=true (#3022)
* feat(niri): support `include optional=true "filename.kdl"`

* chore: warn if optional include ENOENT

* chore: validate include directive arguments and properties

Add proper validation to reject:
- Extra arguments beyond the path
- Unknown properties (other than "optional")
- Unexpected child nodes

* docs: implement suggested typographical/prose changes

* fixes

---------

Co-authored-by: Ivan Molodetskikh <yalterz@gmail.com>
2025-12-20 05:04:18 +00:00
Ivan Molodetskikh
d2fa1f54d4 Add force-disable-connectors-on-resume debug flag 2025-12-18 07:39:44 +03:00
Ivan Molodetskikh
c22d8358c2 wiki/packaging: Mention recommended deps
Some checks failed
CI / test (push) Has been cancelled
CI / check feature combinations (push) Has been cancelled
CI / alpine musl (push) Has been cancelled
CI / randomized and slow tests (push) Has been cancelled
CI / visual tests (push) Has been cancelled
CI / msrv (push) Has been cancelled
CI / clippy (push) Has been cancelled
CI / rustfmt (push) Has been cancelled
CI / fedora (push) Has been cancelled
CI / freebsd (push) Has been cancelled
CI / nix (push) Has been cancelled
CI / publish-wiki (push) Has been cancelled
CI / publish-docs (push) Has been cancelled
2025-12-12 10:26:13 +03:00
Robert Gu
f874b2fce5
Update Integrating-niri.md on multi-file configs (#2943)
Some checks failed
CI / randomized and slow tests (push) Has been cancelled
CI / msrv (push) Has been cancelled
CI / clippy (push) Has been cancelled
CI / fedora (push) Has been cancelled
CI / freebsd (push) Has been cancelled
CI / nix (push) Has been cancelled
CI / test (push) Has been cancelled
CI / check feature combinations (push) Has been cancelled
CI / alpine musl (push) Has been cancelled
CI / visual tests (push) Has been cancelled
CI / rustfmt (push) Has been cancelled
CI / publish-wiki (push) Has been cancelled
CI / publish-docs (push) Has been cancelled
* Update Integrating-niri.md on multi-file configs

* Apply suggestion from @YaLTeR

---------

Co-authored-by: Ivan Molodetskikh <yalterz@gmail.com>
2025-12-02 15:23:01 +03:00
Semper_
311ca6b5da
Docs: add a few notes and warnings (#2925)
Some checks failed
CI / randomized and slow tests (push) Has been cancelled
CI / test (push) Has been cancelled
CI / check feature combinations (push) Has been cancelled
CI / alpine musl (push) Has been cancelled
CI / visual tests (push) Has been cancelled
CI / msrv (push) Has been cancelled
CI / clippy (push) Has been cancelled
CI / rustfmt (push) Has been cancelled
CI / fedora (push) Has been cancelled
CI / freebsd (push) Has been cancelled
CI / nix (push) Has been cancelled
CI / publish-wiki (push) Has been cancelled
CI / publish-docs (push) Has been cancelled
* update docs.

* Update Xwayland.md.

* Apply suggestion from @YaLTeR

---------

Co-authored-by: Ivan Molodetskikh <yalterz@gmail.com>
2025-11-30 09:51:13 +03:00
Ivan Molodetskikh
284c2331a2 wiki: Improve wording 2025-11-29 09:58:32 +03:00
Ivan Molodetskikh
ed266cc77c Bump version to 25.11 2025-11-29 09:36:02 +03:00
Mark Stosberg
0652342df8
docs: document valid options of default-column-display (#2908)
Some checks are pending
CI / msrv (push) Waiting to run
CI / test (push) Waiting to run
CI / check feature combinations (push) Waiting to run
CI / alpine musl (push) Waiting to run
CI / randomized and slow tests (push) Waiting to run
CI / visual tests (push) Waiting to run
CI / clippy (push) Waiting to run
CI / rustfmt (push) Waiting to run
CI / fedora (push) Waiting to run
CI / freebsd (push) Waiting to run
CI / nix (push) Waiting to run
CI / publish-wiki (push) Blocked by required conditions
CI / publish-docs (push) Blocked by required conditions
* docs: document valid options ofr default-column-display

* Apply suggestion from @YaLTeR

---------

Co-authored-by: Ivan Molodetskikh <yalterz@gmail.com>
2025-11-28 08:08:46 +03:00
Ivan Molodetskikh
cbd0dfa280 wiki: Add Ubuntu to Quick start
Some checks are pending
CI / test (push) Waiting to run
CI / check feature combinations (push) Waiting to run
CI / alpine musl (push) Waiting to run
CI / randomized and slow tests (push) Waiting to run
CI / visual tests (push) Waiting to run
CI / msrv (push) Waiting to run
CI / clippy (push) Waiting to run
CI / rustfmt (push) Waiting to run
CI / fedora (push) Waiting to run
CI / freebsd (push) Waiting to run
CI / nix (push) Waiting to run
CI / publish-wiki (push) Blocked by required conditions
CI / publish-docs (push) Blocked by required conditions
2025-11-26 13:24:43 +03:00
Ivan Molodetskikh
d74debda13 Add debounce-ms recent-windows setting 2025-11-24 08:52:13 +03:00
Ivan Molodetskikh
c558516d4c wiki: Add alacritty to Arch quickstart
Some checks are pending
CI / test (push) Waiting to run
CI / check feature combinations (push) Waiting to run
CI / alpine musl (push) Waiting to run
CI / randomized and slow tests (push) Waiting to run
CI / visual tests (push) Waiting to run
CI / msrv (push) Waiting to run
CI / clippy (push) Waiting to run
CI / rustfmt (push) Waiting to run
CI / fedora (push) Waiting to run
CI / freebsd (push) Waiting to run
CI / nix (push) Waiting to run
CI / publish-wiki (push) Blocked by required conditions
CI / publish-docs (push) Blocked by required conditions
Just in case; it's bound by default after all.
2025-11-23 21:42:13 +03:00
Ivan Molodetskikh
efbe29f3fa wiki/FAQ: Mention Firefox 1 px border
Some checks are pending
CI / check feature combinations (push) Waiting to run
CI / rustfmt (push) Waiting to run
CI / test (push) Waiting to run
CI / alpine musl (push) Waiting to run
CI / randomized and slow tests (push) Waiting to run
CI / visual tests (push) Waiting to run
CI / msrv (push) Waiting to run
CI / clippy (push) Waiting to run
CI / fedora (push) Waiting to run
CI / freebsd (push) Waiting to run
CI / nix (push) Waiting to run
CI / publish-wiki (push) Blocked by required conditions
CI / publish-docs (push) Blocked by required conditions
2025-11-23 11:39:45 +03:00
Ivan Molodetskikh
42922097a8 wiki: Mention GTK dead keys / Compose 2025-11-23 11:36:35 +03:00
Ivan Molodetskikh
87aacdbca7 wiki/accessibility: Mention Alt-Tab 2025-11-22 10:45:17 +03:00
Ivan Molodetskikh
a977bb7feb wiki: Fix screen reader breaking on keyboard shortcuts 2025-11-22 10:44:20 +03:00
Ivan Molodetskikh
012700dd54 wiki/debug: Remove max bpc from outline at the top
Some checks are pending
CI / test (push) Waiting to run
CI / check feature combinations (push) Waiting to run
CI / alpine musl (push) Waiting to run
CI / randomized and slow tests (push) Waiting to run
CI / visual tests (push) Waiting to run
CI / msrv (push) Waiting to run
CI / clippy (push) Waiting to run
CI / rustfmt (push) Waiting to run
CI / fedora (push) Waiting to run
CI / freebsd (push) Waiting to run
CI / nix (push) Waiting to run
CI / publish-wiki (push) Blocked by required conditions
CI / publish-docs (push) Blocked by required conditions
2025-11-21 15:49:49 +03:00
Ivan Molodetskikh
229716e144 wiki: Add more warnings about custom modes 2025-11-21 15:48:05 +03:00
Ivan Molodetskikh
98006a8dba Remove setting max bpc
Some checks are pending
CI / test (push) Waiting to run
CI / check feature combinations (push) Waiting to run
CI / alpine musl (push) Waiting to run
CI / randomized and slow tests (push) Waiting to run
CI / visual tests (push) Waiting to run
CI / msrv (push) Waiting to run
CI / clippy (push) Waiting to run
CI / rustfmt (push) Waiting to run
CI / fedora (push) Waiting to run
CI / freebsd (push) Waiting to run
CI / publish-wiki (push) Blocked by required conditions
CI / nix (push) Waiting to run
CI / publish-docs (push) Blocked by required conditions
2025-11-21 10:21:11 +03:00
Ivan Molodetskikh
c256842761 Change recent-windows binds to have lower precedence
Otherwise it breaks people's existing binds.
2025-11-18 13:18:30 +03:00
rustN00b
933ffcb229 Implement recent windows switcher (Alt-Tab)
Historic commit description log:

The MRU actions `focus-window-mru-previous` and `focus-window-mru-next`
are used to navigate windows in most-recently-used or
least-recently-used order.

Whenever a window is focused, it records a timestamp that be used to
sort windows in MRU order. This timestamp is not updated immediately,
but only after a small delay (lock-in period) to ensure that the
focus wasn't transfered to another window in the meantime. This
strategy avoids upsetting the MRU order with focus events generated by
intermediate windows when moving between two non contiguous windows.

The lock-in delay can be configured using the `focus-lockin-ms`
configuration argument.

Calling either of the `focus-window-mru` actions starts an MRU window
traversal sequence if one isn't already in progress. When a sequence is
in progress, focus timestamps are no longer updated.

A traversal sequence ends when:
- either the `Mod` key is released, the focus then stays on the chosen
  window  and its timestamp is immediately refreshed,
- or if the `Escape` key is pressed, the focus returns to the window
  that initially had the focus when the sequence was started.

Rename WindowMRU fields

Improve window close handling during MRU traversal

When the focused window is closed during an MRU traversal, it moves
to the previous window in MRU order instead of the default behavior.

Removed dbg! calls

Merge remote-tracking branch 'upstream/main' into window-mru

Hardcode Alt-Tab/Alt-shift-Tab for MRU window nav

- Add a `PRESET_BINDINGS` containing MRU navigation actions.
  `PRESET_BINDINGS` are overridden by user configuration so these remain
  available if the user needs them for another purpose
- Releasing the `Alt` key ends any in-progress MRU window traversal

Remove `focus-window-mru` actions from config

These actions are configured in presets but no longer available
for the bindings section of the configuration

Cancel MRU traversal with Alt-Esc

Had been forgotten in prior commit and was using `Mod` instead of `Alt`

Rephrase some comments

Fix Alt-Esc not cancelling window-mru

Merge remote-tracking branch 'upstream/main' into window-mru

Lock-in focus immediately on user interaction

As per suggestion by @bbb651, focus is locked-in immediately if a window
is interacted with, ie. receives key events or pointer clicks.

This change is also an opportunity to make the lockin timer less aggresive.

Merge remote-tracking branch 'upstream/main' into window-mru

Simplify WindowMRU::new

Now that there is a more general Niri::lockin_focus method, leverage
it in WindowMRU.

Replace Duration with Instant in WindowMRU timestamp

Merge remote-tracking branch 'upstream/main' into window-mru

Address PR comments - partial

- Swapped meaning of next and previous for MRU traversal
- Fixed comment that still referred to `Mod` as leader key for MRU traversal
  instead of `Alt`
- Fixed doc comments that were missing a period
- Stop using BinaryHeap in `WindowMRU::new()`
- Replaced `WindowMRU::mru_with()` method with a simpler `advance()`
- Simplified `Alt` key release handling code in `State::on_keyboard()`

Simplify early-mru-commit logic

No longer perform the mru-commit/lockin_focus in the next event loop callback.
Instead it is handled directly when it is determined that an event (pointer
or kbd) is forwarded to the active window.

Handle PR comments

- `focus_lockin` variables and configuration item renamed to `mru_commit`.
- added the Esc key to `suppressed_keys` if it was used to cancel an MRU
  traversal.
- removed `WindowMRU::mru_next` and `WindowMRU::mru_previous` methods
  as they didn't really provide more than the generic `WindowMRU::advance`
  method.
- removed obsolete `Niri::event_forwarded_to_focused_client` boolean
- added calls to `mru_commit()` (formerly `focus_lockin`) in:
  - `State::on_pointer_axis()`
  - `State::on_tablet_tool_axis()`
  - `State::on_tablet_tool_tip()`
  - `State::on_tablet_tool_proximity()`
  - `State::on_tablet_tool_button()`
  - `State::on_gesture_swipe_begin()`
  - `State::on_gesture_pinch_begin()`
  - `State::on_gesture_hold_begin()`
  - `State::on_touch_down()`

Merge remote-tracking branch 'upstream/main' into window-mru

Merge remote-tracking branch 'upstream/main' into window-mru

Add MRU window navigation actions

The MRU actions `focus-window-mru-previous` and `focus-window-mru-next`
are used to navigate windows in most-recently-used or
least-recently-used order.

Whenever a window is focused, it records a timestamp that be used to
sort windows in MRU order. This timestamp is not updated immediately,
but only after a small delay (lock-in period) to ensure that the
focus wasn't transfered to another window in the meantime. This
strategy avoids upsetting the MRU order with focus events generated by
intermediate windows when moving between two non contiguous windows.

The lock-in delay can be configured using the `focus-lockin-ms`
configuration argument.

Calling either of the `focus-window-mru` actions starts an MRU window
traversal sequence if one isn't already in progress. When a sequence is
in progress, focus timestamps are no longer updated.

A traversal sequence ends when:
- either the `Mod` key is released, the focus then stays on the chosen
  window  and its timestamp is immediately refreshed,
- or if the `Escape` key is pressed, the focus returns to the window
  that initially had the focus when the sequence was started.

Rename WindowMRU fields

Improve window close handling during MRU traversal

When the focused window is closed during an MRU traversal, it moves
to the previous window in MRU order instead of the default behavior.

Removed dbg! calls

Merge remote-tracking branch 'upstream/main' into window-mru

Hardcode Alt-Tab/Alt-shift-Tab for MRU window nav

- Add a `PRESET_BINDINGS` containing MRU navigation actions.
  `PRESET_BINDINGS` are overridden by user configuration so these remain
  available if the user needs them for another purpose
- Releasing the `Alt` key ends any in-progress MRU window traversal

Remove `focus-window-mru` actions from config

These actions are configured in presets but no longer available
for the bindings section of the configuration

Cancel MRU traversal with Alt-Esc

Had been forgotten in prior commit and was using `Mod` instead of `Alt`

Rephrase some comments

Fix Alt-Esc not cancelling window-mru

Merge remote-tracking branch 'upstream/main' into window-mru

Lock-in focus immediately on user interaction

As per suggestion by @bbb651, focus is locked-in immediately if a window
is interacted with, ie. receives key events or pointer clicks.

This change is also an opportunity to make the lockin timer less aggresive.

Merge remote-tracking branch 'upstream/main' into window-mru

Simplify WindowMRU::new

Now that there is a more general Niri::lockin_focus method, leverage
it in WindowMRU.

Replace Duration with Instant in WindowMRU timestamp

Merge remote-tracking branch 'upstream/main' into window-mru

Address PR comments - partial

- Swapped meaning of next and previous for MRU traversal
- Fixed comment that still referred to `Mod` as leader key for MRU traversal
  instead of `Alt`
- Fixed doc comments that were missing a period
- Stop using BinaryHeap in `WindowMRU::new()`
- Replaced `WindowMRU::mru_with()` method with a simpler `advance()`
- Simplified `Alt` key release handling code in `State::on_keyboard()`

Simplify early-mru-commit logic

No longer perform the mru-commit/lockin_focus in the next event loop callback.
Instead it is handled directly when it is determined that an event (pointer
or kbd) is forwarded to the active window.

Handle PR comments

- `focus_lockin` variables and configuration item renamed to `mru_commit`.
- added the Esc key to `suppressed_keys` if it was used to cancel an MRU
  traversal.
- removed `WindowMRU::mru_next` and `WindowMRU::mru_previous` methods
  as they didn't really provide more than the generic `WindowMRU::advance`
  method.
- removed obsolete `Niri::event_forwarded_to_focused_client` boolean
- added calls to `mru_commit()` (formerly `focus_lockin`) in:
  - `State::on_pointer_axis()`
  - `State::on_tablet_tool_axis()`
  - `State::on_tablet_tool_tip()`
  - `State::on_tablet_tool_proximity()`
  - `State::on_tablet_tool_button()`
  - `State::on_gesture_swipe_begin()`
  - `State::on_gesture_pinch_begin()`
  - `State::on_gesture_hold_begin()`
  - `State::on_touch_down()`

Merge remote-tracking branch 'upstream/main' into window-mru

Merge remote-tracking branch 'upstream/main' into window-mru

Include never focused windows in MRU list

Remove mru_commit_ms from configurable options

For now the value is hard-coded to 750ms

Merge remote-tracking branch 'upstream/main' into HEAD

Add hotkey_overlay_tile for PRESET_BINDINGS

Merge remote-tracking branch 'origin/window-mru' into HEAD

Merge remote-tracking branch 'upstream/main' into window-mru

Merge remote-tracking branch 'upstream/main' into window-mru

Merge remote-tracking branch 'upstream/main' into window-mru

Firt shot an MruUi

The UI doesn't actually do anything yet. For now it just puts up thumbnails
for existing windows in MRU order.

Added MRU texture cache + simplifications

Working version

Removed previous Mru code

Tidy up Action names

Added Home/End bindings

Merge remote-tracking branch 'upstream/main' into window-mru-ui

Add scope and filtering to Mru window navigation

Feed todo list

Merge remote-tracking branch 'upstream/main' into window-mru-ui

Clippy: Boxed the focus ring

The UI object doesn't get moved around much so it isn't clear if
this actually important. Boxing keeps clippy happy because of the
size difference between an Open vs a Closed MRU UI.

Bump rust version to 1.83

Avoids getting yelled at by clippy for using features that weren't yet available in 1.80.1

Applied clippy lints

Fix MruFilter::None conversion

MruFilter variant was getting ignored

cargo fmt

Update rust tool chain in CI

Had only been updated in Cargo.toml, this causes build
failures on Github

Support changing Mru modes with the Mru UI open

Fix texture cache optimization

When the Mru parameters were changed while the MruUI was open, the
texture cache is rebuilt but attempts to reuse existing Textures
that are still usable in the updated Mru list. The index of the
retained texture could be miscalculated and resulted in the wrong
texture being used for a given window Id.

Make MruAdvance available as a Bind action

For consistency, MruAdvance bindings are carried over when the MruUI is open.

Merge remote-tracking branch 'upstream/main' into window-mru-ui

Preset binds added as a source for MRU UI binds

Surprisingly the status prior to the patch should have prevented the UI
bindings to advance through the Mru list from working properly.

Use iterators to find bindings

This allows the caller, eg. `on_keyboard` to choose the full list
of bindings that should be searched through by composing iterators.
Prior to the change the PRESET_BINDINGS were always included regardless
of caller. With this approach, `on_keyboard` can add in the MRU_UI-
specific bindings if it detects that the MRU UI is open.

Make scope and filter optional in mru-advance

This avoids unexpected behavior when navigating MRU with a filter, e.g. App-Id,
with arrow keys for instance, which would result in changing navigation
to ignore the app-id filter. With the change, mru-advance has an optional
scope and filter that allows a key bind to leave the current navigation mode
unchanged.

Add title under window thumbnails

- Reworked the texture cache to use TextureBuffer-s instead of BakedBuffer.
- Add convenience methods to access TextureCache content.

Some tidying up.

Fade title out if it doesn't fit in available size

Add bindings to change the MruScope

Fix panic rendering title when cairo surface was busy

Also avoid interpreting markup in window titles.

Bring branch in line with window-mru-ui-squashed

Add navigation animation in MRU UI

Only handles motion between thumbnails

Add thumbnail close animation

For now, the animation only tracks when the corresponding window is closed.

Add animations on filter and scope changes

Add open/close animation to MRU Ui

Merge remote-tracking branch 'upstream/main' into window-mru-ui

Fix animations on scope/filter changes

Previous implementation would evict wrong textures from the cache.
And get thumbnail animations wrong.

Merge remote-tracking branch 'upstream/main' into window-mru-ui

Fix panic on change of scope/filter when Mru list is empty.

Add doc comment to method that could trigger a panic

Simplify thumbnail ordering logic

Improve scope/filter change animations

- direction is no longer a factor when an Mru UI is opened (previously
  the first thumbnail would be the currently focused window when
  moving in the "forward" direction, and when moving in the "backward"
  direction the focused window would have its thumbnail last in the
  list. This made animations kind of confusing when switching scopes
  or filtering.

  The updated version always places the thumbnails in most recent
  focus order. So when the MRU UI is brought up in the "backward"
  direction, the last thumbnail in the MRU list starts selected.

- closing animations no longer use the view referential, but use
  the output referential instead. This makes disappearing thumbnails
  appear stationary on screen even if the view is moving. This tends to
  look less confusing than the previous approach.

Applied clippy lints

Preserve scope during fwd/backward navigation

Change preset keybinding declarations from const to static

Add thumbnail selection animation

This is still very much a work in progress:
- the focus ring is not shown until the animation completes
- if the tile is resized during the animation, the net effect looks
  pretty bad because proportions skip directly to those requested
  instead of transitioning smoothly.

Both points should be addressed by using regular tile rendering to an
OffscreenBuffer but I haven't much success there.

Merge remote-tracking branch 'upstream/main' into window-mru-ui

Fix niri-config parse test

Use OffscreenBuffer to render ThumbnailSelection animation

todo: fix thumbnail destination if the target workspace is being swapped.

Handle workspace switch during thumbnail select animation

Close Overview when MRU UI is opened

Add configuration option to disable MRU UI

Make mod-key for MRU UI configurable

Avoid collecting MRU UI bindings on each input

Bindings are cached when first accessed, the cache is invalidated
whenever the configuration changes.

Close MRU UI when Overview is opened

Merge remote-tracking branch 'upstream/main' into window-mru-ui

Fix MRU UI opened bindings always active

Remove mru-advance from actions available for config keybind

Because the MRU UI assumes that all key-bindings use the mod-key
defined in for `recent-windows`, behavior can be disconcerting
if arbitrary keybindings are allowed in the configuration (e.g.
UI opens and immediately closes because the mod-key is not being
held).

Include focus timestamp in Window IPC messages

Timestamps are serialized as time::SystemTime, which in JSON form is represented
as *two* fields, secs and nanos.

Merge remote-tracking branch 'upstream/main' into window-mru-ui

Only do Thumbnail Select Anim if MRU UI stayed open long enough

Threshold is hard coded in window_mru_ui.rs (250ms).

Merge remote-tracking branch 'upstream/main' into window-mru-ui

Add a few WindowMru tests

Forward Mod-key release when closing MRU UI

Merge remote-tracking branch 'upstream/main' into window-mru-ui

Remove extraneous thumbnail motion on Mru filter change

Fix missing alpha in Mru thumbnail open animation

Add Mod+h and Mod+l bindings for MRU navigation

Change CloseWindow binding in MRU to Mod+Shift+q

Keep MRU UI on display it was initially opened on

Bump up the MRU IU selection anim threshold

Allow MRU thumbnail selection with mouse pointer

Allow MRU thumbnail selection using touch

Needs testing, Idk if this works for lack of a touchscreen.

Fix missing fade-out animation for thumbnails on MRU UI close

Merge remote-tracking branch 'upstream/main' into window-mru-ui

Make thumbnail selection animation optional

Merge remote-tracking branch 'upstream/main' into window-mru-ui

Fix niri-config parse test case

Add shortcut to cycle through MRU scopes

- added MruCycleScope action to trigger cycling
- added an indication panel to show the current scope
- recall previous scope when opening the MRU UI

Merge remote-tracking branch 'upstream/main' into window-mru-ui

Improve MRU thumbnail scaling

Prior to the commit, thumbnails were just 2x downscaling of their corresponding
window. Now they are also scaled based on the relative height of the window
on its output display. This avoids having a thumbnail taking up the entire
screen on the display where the MRU UI is displayed.

Merge remote-tracking branch 'upstream/main' into window-mru-ui

Use resolved window rules for thumbnails

Previously parameters such as the corner-radius didn't follow the general
config and used an MRU UI specific default.

Align thumbnail size and position to physical pixels

clarify param names in generate_tile_texture

Revert MSRV 1.83

Close MRU UI on click/touch outside of a thumbnail

MRU - display window title under all thumbnails

MRU - revert to pre-defined thumbnail corner radius

MRU - Removed thumb title font size adjustment

This didn't look as if it was necessary. (unscientific assesment)

MRU - reverted to Mod+Q to quit selected thumbnail

Merge remote-tracking branch 'upstream/main' into window-mru-ui

MRU - Update focus ring when moving mouse over a thumbnail

restore code that went missing

switch focus timestamp to monotonic time

We don't want the monotonicity of SystemClock here. Instant itself isn't
serializable, but our monotonic clock timestamps are, and they are
consistent across processes too.

axe thumbnail close animation

I'm still not quite convinced about it. Maybe we'll reintroduce it later
with better architecture; for now though, it causes quite a bit of
complexity.

minor cleanups

remove unnecessary option

replace open animation with delay

Avoids flashing the whole screen for quick Alt-Tabs. Duration taken from
GNOME Shell.

make mod key different in nested

replace SelectedThumbnail with MappedId

don't hide focus ring during alt tab

wip refactor everything and render live windows

rename some constants

replace focus ring with background + border

extract thumbnail constructors

reimplement title fade with a shader

reimplement ui fade out on closing

fix preview scaling

add min scale for very small windows

add keyboard focus for mru

fixes activating alt on target window

revert/simplify pointer code changes

fixes mouse not clamped to output when in alt-tab; should fix touch
going through

move touch handling to below screenshot ui

remove unneeded touch overview grab code

rename to mru.rs

move mru tests into separate file

also close mru when clicking on other outputs

roll back no longer necessary event filtering

rework mru keyboard binds

convert some regular binds to MRU binds

hide window title when blocked out

verify that mru bind uses a keyboard key

improve selection visibility & indicate urgency

freeze alt-tab view on pointer motion

add WindowFocusTimestampChanged event, separate struct for Timestamp

minor cleanups

scope panel fixes

simplify scope cycling

honor geometry corner radius

don't trigger focus-follows-mouse in the MRU

remove unnecessary argument

cache backdrop buffers

remove unnecessary mru close

allow to screenshot the mru

support bob offset

improve mru redraws

pass config instead of options

add open-delay-ms option

add highlight options

rename window-mru-ui-open-close to recent-windows-close

add preview options

fix scope change and remove window delta anim

improve unselected scope panel text contrast

move panel back up so it doesn't overlap the screenshot one

rename preview to previews in config

render highlight background with focusring

fix highlight pos rounding

add highlight corner-radius setting

remove allocation from inner render

use offscreen for mru closing fade

make scope only affect MRU open

otherwise you can't change scope at runtime easily

replace todo with fixme

include title height in thumbnail under

remove cloning from set scope/filter

remove animate close todo

update field name in mapped

remove commented out closing thumbnails

I decided not to do this for now.

rename filter from None to All and skip in knuffel

None is confusing with Option

write docs

make inactive urgent more prominent

remove reopen from scartch todo

explicitly mention app id in filter

make scroll binds work in the mru

add fixmes

don't select next window when nothing is focused

add missing anim config merge

fixes

replace click selection with pointer motion + confirm

simplify close mru ui call

rename mrucloserequest variants

mru confirm fixes

support tablet input

mru commit cleanups

remove most mru commit calls

they didn't actualy do anything as implemented. If we want to bring them
back we need to refactor a bit to join them with activate_window() call.

make regular mouse binds also work in mru

fixes

fixes

move types up

fix tracy span
2025-11-16 22:36:01 +03:00
MunsMan
9dad215b9f docs: fix typo in screenshot-window action name 2025-11-16 12:48:05 +03:00
Ivan Molodetskikh
5b77107161 wiki: Add more Arch optional deps to quick start
Some checks failed
CI / test (push) Has been cancelled
CI / check feature combinations (push) Has been cancelled
CI / alpine musl (push) Has been cancelled
CI / randomized and slow tests (push) Has been cancelled
CI / visual tests (push) Has been cancelled
CI / msrv (push) Has been cancelled
CI / clippy (push) Has been cancelled
CI / rustfmt (push) Has been cancelled
CI / fedora (push) Has been cancelled
CI / freebsd (push) Has been cancelled
CI / nix (push) Has been cancelled
CI / publish-wiki (push) Has been cancelled
CI / publish-docs (push) Has been cancelled
2025-11-11 20:11:02 +03:00
HigherOrderLogic
fb2f67c8a0 docs: update swww name and link
Some checks are pending
CI / check feature combinations (push) Waiting to run
CI / test (push) Waiting to run
CI / alpine musl (push) Waiting to run
CI / randomized and slow tests (push) Waiting to run
CI / visual tests (push) Waiting to run
CI / msrv (push) Waiting to run
CI / clippy (push) Waiting to run
CI / rustfmt (push) Waiting to run
CI / fedora (push) Waiting to run
CI / freebsd (push) Waiting to run
CI / nix (push) Waiting to run
CI / publish-wiki (push) Blocked by required conditions
CI / publish-docs (push) Blocked by required conditions
2025-11-11 12:44:25 +03:00
Ivan Molodetskikh
5c965d6ad6 wiki: Mention Waybar in quick start 2025-11-11 11:29:56 +03:00
Ivan Molodetskikh
978c4e6c8a
wiki: Add quick start to Getting Started
Some checks are pending
CI / test (push) Waiting to run
CI / check feature combinations (push) Waiting to run
CI / alpine musl (push) Waiting to run
CI / randomized and slow tests (push) Waiting to run
CI / visual tests (push) Waiting to run
CI / msrv (push) Waiting to run
CI / clippy (push) Waiting to run
CI / rustfmt (push) Waiting to run
CI / fedora (push) Waiting to run
CI / freebsd (push) Waiting to run
CI / nix (push) Waiting to run
CI / publish-wiki (push) Blocked by required conditions
CI / publish-docs (push) Blocked by required conditions
2025-11-10 22:50:32 +03:00
Etch9
9b11e39890 Update LXQt wiki link in niri integration
Some checks are pending
CI / freebsd (push) Waiting to run
CI / check feature combinations (push) Waiting to run
CI / test (push) Waiting to run
CI / alpine musl (push) Waiting to run
CI / randomized and slow tests (push) Waiting to run
CI / visual tests (push) Waiting to run
CI / msrv (push) Waiting to run
CI / clippy (push) Waiting to run
CI / rustfmt (push) Waiting to run
CI / fedora (push) Waiting to run
CI / nix (push) Waiting to run
CI / publish-wiki (push) Blocked by required conditions
CI / publish-docs (push) Blocked by required conditions
The github wiki is deprecated
2025-11-10 15:31:07 +03:00
Frankie Robertson
7c0dcddee7 Update installation options in Getting-Started.md
Some checks are pending
CI / test (push) Waiting to run
CI / check feature combinations (push) Waiting to run
CI / alpine musl (push) Waiting to run
CI / randomized and slow tests (push) Waiting to run
CI / visual tests (push) Waiting to run
CI / msrv (push) Waiting to run
CI / clippy (push) Waiting to run
CI / rustfmt (push) Waiting to run
CI / fedora (push) Waiting to run
CI / freebsd (push) Waiting to run
CI / nix (push) Waiting to run
CI / publish-wiki (push) Blocked by required conditions
CI / publish-docs (push) Blocked by required conditions
Added a link to a pacstall package for Debian-based distros.
2025-10-30 07:56:50 +03:00
Merlijn
6a2c6261df
Add support for custom modes and modelines. (#2479)
* Implement custom modes and modelines

Co-authored-by: ToxicMushroom <32853531+ToxicMushroom@users.noreply.github.com>

* fixes

* refactor mode and modeline kdl parsers.

* add IPC parse checks

* refactor: address feedback

* fix: add missing > 0 refresh rate check

* move things around

* fixes

* wiki fixes

---------

Co-authored-by: Christian Meissl <meissl.christian@gmail.com>
Co-authored-by: Ivan Molodetskikh <yalterz@gmail.com>
2025-10-29 09:10:38 +03:00
haansn08
31eb943599
docs: describe screen mirroring with wl-mirror (#2633)
* docs: describe screen mirroring with wl-mirror

* docs: apply wording suggestions for wl-mirror section

* Update docs/wiki/Screencasting.md

* Update docs/wiki/Screencasting.md

---------

Co-authored-by: Ivan Molodetskikh <yalterz@gmail.com>
2025-10-20 08:53:03 +03:00
Yuri Pieters
8eeb7dd27e wiki: fix list in tab-indicator section 2025-10-18 07:48:45 +03:00
Ivan Molodetskikh
c482b446a9 wiki: Mention windowed fullscreen on fullscreen and maximize page 2025-10-15 12:08:07 +03:00
Ivan Molodetskikh
1dd82a8dcf wiki: Add missing Since annotations 2025-10-15 12:07:58 +03:00
Ivan Molodetskikh
755aaac039 wiki: Really fix images 2025-10-15 09:24:47 +03:00
Ivan Molodetskikh
2d67ff8dc3 wiki: Fix images
GitHub is making this harder than necessary
2025-10-15 09:14:27 +03:00
Ivan Molodetskikh
32d7323570 wiki: Document fullscreen and maximize 2025-10-15 09:04:16 +03:00
Trevor Campbell
87dc96fa69 Add topic regarding managing external displays using Kanshi to FAQ
Some checks are pending
CI / test (push) Waiting to run
CI / check feature combinations (push) Waiting to run
CI / alpine musl (push) Waiting to run
CI / randomized and slow tests (push) Waiting to run
CI / visual tests (push) Waiting to run
CI / msrv (push) Waiting to run
CI / clippy (push) Waiting to run
CI / rustfmt (push) Waiting to run
CI / fedora (push) Waiting to run
CI / freebsd (push) Waiting to run
CI / nix (push) Waiting to run
CI / publish-wiki (push) Blocked by required conditions
CI / publish-docs (push) Blocked by required conditions
2025-10-14 10:18:22 +03:00
Szybet
03c564736a Support calibration-matrix in touch input config 2025-10-02 10:27:09 +03:00
Tim Ruffing
1b41ef146d wiki: Recommend pick-window instead of focused-window
focused-window is only useful for querying terminal windows
(unless combined with sleep or similar tricks.)
2025-10-02 10:14:23 +03:00
Shaun Ren
5c91e3191d tty: Add support for disabling DRM devices 2025-10-02 10:02:16 +03:00
Ivan Molodetskikh
e5b0662f48 wiki/include: Document border special case 2025-10-02 09:38:17 +03:00
Ivan Molodetskikh
39339032ce wiki: Document config includes 2025-10-02 09:38:17 +03:00
Ivan Molodetskikh
264289cd41 wiki: Document per-output and per-workspace layout overrides 2025-10-02 09:33:08 +03:00
Ivan Molodetskikh
e837e39623 FAQ: Mention how to escape from a dead screen locker
Some checks failed
CI / test (push) Has been cancelled
CI / check feature combinations (push) Has been cancelled
CI / visual tests (push) Has been cancelled
CI / alpine musl (push) Has been cancelled
CI / randomized and slow tests (push) Has been cancelled
CI / clippy (push) Has been cancelled
CI / rustfmt (push) Has been cancelled
CI / fedora (push) Has been cancelled
CI / msrv (push) Has been cancelled
CI / freebsd (push) Has been cancelled
CI / nix (push) Has been cancelled
CI / publish-wiki (push) Has been cancelled
CI / publish-docs (push) Has been cancelled
2025-09-24 08:31:01 +03:00
Ivan Molodetskikh
3850739e44 FAQ: Mention directly opening in column, and focus-follows-mouse on monitor edges
Some checks are pending
CI / randomized and slow tests (push) Waiting to run
CI / test (push) Waiting to run
CI / check feature combinations (push) Waiting to run
CI / alpine musl (push) Waiting to run
CI / visual tests (push) Waiting to run
CI / msrv (push) Waiting to run
CI / clippy (push) Waiting to run
CI / rustfmt (push) Waiting to run
CI / fedora (push) Waiting to run
CI / freebsd (push) Waiting to run
CI / nix (push) Waiting to run
CI / publish-wiki (push) Blocked by required conditions
CI / publish-docs (push) Blocked by required conditions
2025-09-23 15:40:39 +03:00
Malix
4d4d968d97 enhance(docs): NixOS - Intel graphics workaround wiki link
Some checks are pending
CI / test (push) Waiting to run
CI / check feature combinations (push) Waiting to run
CI / fedora (push) Waiting to run
CI / alpine musl (push) Waiting to run
CI / randomized and slow tests (push) Waiting to run
CI / visual tests (push) Waiting to run
CI / msrv (push) Waiting to run
CI / clippy (push) Waiting to run
CI / rustfmt (push) Waiting to run
CI / publish-docs (push) Blocked by required conditions
CI / freebsd (push) Waiting to run
CI / nix (push) Waiting to run
CI / publish-wiki (push) Blocked by required conditions
2025-09-22 17:42:12 +03:00
Kai Koehler
08f5c6fecb
Make hot corners configurable, including per-output (#2108)
Some checks are pending
CI / check feature combinations (push) Waiting to run
CI / rustfmt (push) Waiting to run
CI / test (push) Waiting to run
CI / alpine musl (push) Waiting to run
CI / randomized and slow tests (push) Waiting to run
CI / visual tests (push) Waiting to run
CI / msrv (push) Waiting to run
CI / clippy (push) Waiting to run
CI / fedora (push) Waiting to run
CI / freebsd (push) Waiting to run
CI / nix (push) Waiting to run
CI / publish-wiki (push) Blocked by required conditions
CI / publish-docs (push) Blocked by required conditions
* Add corner selection in config

* Add hot corner docs

* Working per-monitor hot corners

Handle defaults

* run cargo fmt --all

* Fix hot corners in is_sticky_obscured_under

* Change default to fall back to gesture hot corners if output hot corners are unset

* Add hot corner output config docs

* Support fractional scaling

* Trigger hot corners over widgets

* Improve float handling
Fixed YaLTeR/niri/pull/2108

* Refactor

* Bug Fixes

* Amend docs

Fix styling

Co-authored-by: Ivan Molodetskikh <yalterz@gmail.com>

* Integrate code review

Move is_inside_hot_corner

* fixes

---------

Co-authored-by: Aadniz <8147434+Aadniz@users.noreply.github.com>
Co-authored-by: Ivan Molodetskikh <yalterz@gmail.com>
2025-09-16 15:10:01 +00:00
Jan Ivica
22f629c24b wiki: Remove rofi-wayland mention
Some checks failed
CI / test (push) Has been cancelled
CI / check feature combinations (push) Has been cancelled
CI / alpine musl (push) Has been cancelled
CI / randomized and slow tests (push) Has been cancelled
CI / visual tests (push) Has been cancelled
CI / msrv (push) Has been cancelled
CI / clippy (push) Has been cancelled
CI / rustfmt (push) Has been cancelled
CI / fedora (push) Has been cancelled
CI / freebsd (push) Has been cancelled
CI / nix (push) Has been cancelled
CI / publish-docs (push) Has been cancelled
CI / publish-wiki (push) Has been cancelled
2025-09-07 04:00:23 -07:00
Ivan Molodetskikh
c69464c128 wiki: Add Name and Logo page
Some checks failed
CI / visual tests (push) Has been cancelled
CI / rustfmt (push) Has been cancelled
CI / fedora (push) Has been cancelled
CI / freebsd (push) Has been cancelled
CI / nix (push) Has been cancelled
CI / test (push) Has been cancelled
CI / check feature combinations (push) Has been cancelled
CI / alpine musl (push) Has been cancelled
CI / randomized and slow tests (push) Has been cancelled
CI / msrv (push) Has been cancelled
CI / clippy (push) Has been cancelled
CI / publish-wiki (push) Has been cancelled
CI / publish-docs (push) Has been cancelled
2025-09-03 22:01:04 +03:00
Ivan Molodetskikh
c08bffb092 wiki: Set vertical-align: middle for tables
Should match GitHub better.
2025-09-03 21:41:55 +03:00