Commit graph

2300 commits

Author SHA1 Message Date
Ivan Molodetskikh
bf4e8cd233 wip look into Keyboard/PointerTarget
Decided not to pursue this for now. The idea was to extract input handling from
input/mod.rs into the respective modules, plus get rid of manual cursor shape
resetting, but there are some roadblocks:

- The pointer is locked when those methods are called, meaning you can't get
  the current location (have to store from enter/motion) and, more crucially,
  can't set grabs—we need this for the Overview.
- Gesture begin/end is handled at the Wayland object level, meaning
  PointerTargets get to deal with "improper" events themselves, reducing their
  utility. cosmic-comp spawns an idle callback for this which seems awkward and
  is asking for problems.
- We're not actually removing much code at all, only adding more code for the
  blanket wrappers and such.
2025-08-20 20:36:36 +03:00
Ivan Molodetskikh
34b05e8671 Rename spawn-at-startup-sh => spawn-sh-at-startup
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
Makes a bit more sense
2025-08-20 15:10:05 +03:00
Ivan Molodetskikh
d4e1b2231b default-config: Mark orca as allow-when-locked
Consistent with GNOME. Move down so allow-when-locked explanation is above.
2025-08-20 14:48:54 +03:00
Ivan Molodetskikh
e81f356908 Add spawn-sh, spawn-at-startup-sh
Our top 10 most confusing config moments
2025-08-20 14:43:50 +03:00
Ivan Molodetskikh
1013147ba3 CI: Move feature combinations off the docs critical path
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
Make docs deploy faster. Also don't build --release separately, it's covered by
the randomized-tests job.
2025-08-19 19:31:03 +03:00
Ivan Molodetskikh
38f388565f Update dependencies 2025-08-19 19:17:54 +03:00
Ivan Molodetskikh
f9ea905987 Update Smithay and fix two unused upscale() calls
Uh oh. I can't come up with an easy way to test these, so let's just hope that
before they were broken and now they work fine?..
2025-08-19 19:08:53 +03:00
Ivan Molodetskikh
7a8355bb4d README: Link awesome-niri
Some checks are pending
CI / randomized tests (push) Waiting to run
CI / test - debug (push) Waiting to run
CI / test - release (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-08-19 10:40:52 +03:00
Ivan Molodetskikh
781edba45f wiki/Getting-Started: Mention DEs and shells 2025-08-19 10:40:52 +03:00
Kent Daleng
6d62c26a0f configure section permalinks 2025-08-19 10:20:01 +03:00
Bernardo Kuri
5ea9092a49
Add per-axis scroll speed config for input devices (#2109)
* Add per-axis scroll speed config for input devices.

Accepts negative values to inverse scroll direction.

Properly complements/overrides global `scroll-direction` setting.

Includes docs and tests.

* Update per-axis scroll factor implementation after testing

- Refined configuration structure in niri-config
- Updated input handling to use per-axis scroll factors
- Added comprehensive test snapshots
- Updated documentation with per-axis examples

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>

* Simplify per-axis scroll factor implementation per review feedback

- Make documentation concise and clear
- Remove unnecessary comments and test helper functions
- Use inline snapshots for tests
- Rename get_factors() to h_v_factors() for clarity
- Remove unnecessary .clone() calls (ScrollFactor is Copy)
- Reduce test count to essential cases only
- Fix comment about window factor override behavior

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>

* Remove unnecessary ScrollFactor::new() helper function

The maintainer prefers minimal code, so removing this helper and
constructing ScrollFactor directly in tests.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>

* Fix scroll factor behavior - all settings now multiply with window factor

Per maintainer feedback, both combined and per-axis scroll settings
should multiply with the window-specific scroll factor, not override it.
This ensures consistent behavior regardless of configuration method.

Also removed the now-unused has_per_axis_override() method.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>

* Final cleanup: remove redundant comments and unused snapshot files

- Removed unused snapshot files (now using inline snapshots)
- Removed redundant inline comments in tests
- Simplified test descriptions to be more concise

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>

* Convert scroll factor parsing tests to use assert_debug_snapshot

Updates parse_scroll_factor_combined, parse_scroll_factor_split, and
parse_scroll_factor_partial tests to use assert_debug_snapshot instead
of manual assert_eq comparisons, as requested in PR review.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>

* Convert to inline snapshots as requested

- Convert all scroll factor parsing tests to use inline snapshots instead of external files
- Remove external snapshot files to keep test directory clean
- All tests still pass with inline snapshot assertions

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>

* Fix missed assert_eq in parse_scroll_factor_mixed test

Converts the remaining assert_eq calls to assert_debug_snapshot
with inline snapshots in the mixed syntax test function.
Also fixes raw string delimiters from ### to #.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>

* Convert scroll_factor_h_v_factors test to use assert_debug_snapshot

Makes all scroll factor tests consistent by using snapshots instead
of assert_eq for better maintainability.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>

* fixes

---------

Co-authored-by: Bernardo Kuri <github@bkuri.com>
Co-authored-by: Claude <noreply@anthropic.com>
Co-authored-by: Ivan Molodetskikh <yalterz@gmail.com>
2025-08-19 05:51:32 +00:00
Ivan Molodetskikh
43a2648e57 wiki/FAQ: Add spaces for search to work
Some checks are pending
CI / test - debug (push) Waiting to run
CI / test - release (push) Waiting to run
CI / alpine musl (push) Waiting to run
CI / randomized 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
"pinned" doesn't find anything otherwise
2025-08-18 20:45:38 +03:00
Ivan Molodetskikh
ba129e98e3 wiki/FAQ: Mention Bitwarden 2025-08-18 20:26:07 +03:00
Ivan Molodetskikh
b9b4f31b6f Update all remaining links to the new wiki 2025-08-18 20:09:30 +03:00
Ivan Molodetskikh
5f3528a2ee wiki/FAQ: Mention always on top windows 2025-08-18 20:05:27 +03:00
Ivan Molodetskikh
a5777b9473 wiki/Application-Issues: Mention Zen dmabuf screencasting 2025-08-18 20:01:55 +03:00
Ivan Molodetskikh
6dc4f6a622 wiki: Improve home page
Some checks are pending
CI / test - debug (push) Waiting to run
CI / test - release (push) Waiting to run
CI / alpine musl (push) Waiting to run
CI / randomized 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-08-18 09:53:42 +03:00
Ivan Molodetskikh
85d42db05d wiki/FAQ: Mention blur 2025-08-18 09:49:00 +03:00
Kent Daleng
d6db202a03 wiki/docs: rename index.md to README.md 2025-08-18 09:42:27 +03:00
Ivan Molodetskikh
3a85e77518 wiki: Minor logo update
Some checks are pending
CI / test - debug (push) Waiting to run
CI / test - release (push) Waiting to run
CI / alpine musl (push) Waiting to run
CI / randomized 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-08-17 23:00:38 +03:00
Kent Daleng
e0bf056ba3
docs: location-agnostic index page (#2256)
* Update index.md

a simple suggestion for a location-agnostic index page

* Update docs/wiki/index.md

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

---------

Co-authored-by: Ivan Molodetskikh <yalterz@gmail.com>
2025-08-17 19:41:17 +00:00
Kent Daleng
39bdfece9a readme: use links to docs instead of gh wiki
(i'm obsessed with making pull requests right in the browser)
2025-08-17 22:35:47 +03:00
Ivan Molodetskikh
26a6e0cd98 ci: Add some blank lines
Some checks are pending
CI / test - debug (push) Waiting to run
CI / test - release (push) Waiting to run
CI / alpine musl (push) Waiting to run
CI / randomized 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-08-17 18:10:41 +03:00
Ivan Molodetskikh
b12a56e4e6 rpkg: Fix wiki path 2025-08-17 18:09:33 +03:00
Ivan Molodetskikh
f6e1b3133e ci: Add missing perm 2025-08-17 17:19:05 +03:00
Kent Daleng
dc93f1c1fd
github wiki replacement / mkdocs-docs (#2147)
* Add wiki based on mkdocs

* wording fixes

* fix github bg color on narrow

* Fix left sidebar section headers being bigger than pages

* fix hover accent

* fix list rendering on fractional layout

* fix videos

* fix automatic full links

* remove redundant commented css

* improve dark mode contrast

* update pygments for better child node coloring

* update logo

* remove blank lines

* add systemd language hint

---------

Co-authored-by: Ivan Molodetskikh <yalterz@gmail.com>
2025-08-17 17:05:41 +03:00
Ivan Molodetskikh
a6febb86aa tty: Remove warning when rendering with inactive device 2025-08-17 11:29:33 +03:00
Matej Cotman
3b76cb7b3d
Add FreeBSD CI (#2072)
* feat(ci): add FreeBSD job

* Update .github/workflows/ci.yml

* fix(workflow): remove 10m timeout for freebsd job, put it back later if there is an actual reason

* feat(workflow): enable cache on freebsd job

* feat(workflow): add custom CARGO_HOME for freebsd job

* wip

* wip

* wip

* wip

* wip

* wip

* wip

* wip

* wip

* wip

* wip

* wip

* wip

* wip

* wip

* wip

* wip

* wip

* wip

* clean-up

* test cache

---------

Co-authored-by: Ivan Molodetskikh <yalterz@gmail.com>
2025-08-17 11:12:47 +03:00
Horu
271534e115
Add ConfigLoaded event to IPC, option to disable built-in notification (#1829)
Some checks are pending
CI / test - release (push) Waiting to run
CI / rustfmt (push) Waiting to run
CI / test - debug (push) Waiting to run
CI / alpine musl (push) Waiting to run
CI / randomized 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 / nix (push) Waiting to run
CI / check-links (push) Waiting to run
CI / publish-wiki (push) Blocked by required conditions
CI / rustdoc (push) Blocked by required conditions
* feat: config reload ipc event

* cleanups

* Rename and move the new config option

* rename to ConfigLoaded and emit at connection

---------

Co-authored-by: Ivan Molodetskikh <yalterz@gmail.com>
2025-08-17 09:28:24 +03:00
yrkv
af30cc8df6
niri-ipc: Add window positions and sizes (#1265)
Some checks are pending
CI / fedora (push) Waiting to run
CI / alpine musl (push) Waiting to run
CI / test - debug (push) Waiting to run
CI / test - release (push) Waiting to run
CI / randomized 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 / nix (push) Waiting to run
CI / check-links (push) Waiting to run
CI / publish-wiki (push) Blocked by required conditions
CI / rustdoc (push) Blocked by required conditions
* Add window sizes and positions to the IPC

* basic fixes

* report window_loc instead of window pos

* clean ups

* make scrolling indices 1-based

* add printing to niri msg windows

* don't include render offset in floating tile pos

---------

Co-authored-by: Ivan Molodetskikh <yalterz@gmail.com>
2025-08-16 11:42:08 +03:00
Ivan Molodetskikh
a003e01307 README: Link Discord
Some checks are pending
CI / test - debug (push) Waiting to run
CI / test - release (push) Waiting to run
CI / alpine musl (push) Waiting to run
CI / randomized 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 / check-links (push) Waiting to run
CI / publish-wiki (push) Blocked by required conditions
CI / rustdoc (push) Blocked by required conditions
2025-08-16 09:09:44 +03:00
Cole Helbling
38df8d4f33
flake: skip tests that require a valid EGL display (#2244)
* flake: skip tests that require a valid EGL display

Otherwise:

    niri> failures:
    niri>
    niri> ---- tests::animations::clientside_height_change_doesnt_animate stdout ----
    niri>
    niri> thread 'tests::animations::clientside_height_change_doesnt_animate' panicked at src/tests/animations.rs:87:54:
    niri> called `Result::unwrap()` on an `Err` value: error creating EGL display
    niri>
    niri> Caused by:
    niri>     Unable to obtain a valid EGL Display.
    niri> note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace
    niri>
    niri> ---- tests::animations::height_resize_animates_next_y stdout ----
    niri>
    niri> thread 'tests::animations::height_resize_animates_next_y' panicked at src/tests/animations.rs:87:54:
    niri> called `Result::unwrap()` on an `Err` value: error creating EGL display
    niri>
    niri> Caused by:
    niri>     Unable to obtain a valid EGL Display.
    niri>
    niri>
    niri> failures:
    niri>     tests::animations::clientside_height_change_doesnt_animate
    niri>     tests::animations::height_resize_animates_next_y
    niri>
    niri> test result: FAILED. 147 passed; 2 failed; 0 ignored; 0 measured; 0 filtered out; finished in 1.45s

* flake: skip all animations tests, present and future

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

* fixup: typo

---------

Co-authored-by: Ivan Molodetskikh <yalterz@gmail.com>
2025-08-16 06:08:58 +00:00
Ivan Molodetskikh
6d0505e684 watcher: Refactor tests to not use threads
Some checks are pending
CI / test - debug (push) Waiting to run
CI / test - release (push) Waiting to run
CI / alpine musl (push) Waiting to run
CI / randomized 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 / check-links (push) Waiting to run
CI / publish-wiki (push) Blocked by required conditions
CI / rustdoc (push) Blocked by required conditions
Fixes flakiness, removes unnecessary waiting.
2025-08-15 08:09:25 +03:00
Ivan Molodetskikh
8b4517a87b watcher: Mark tests as ignored
Some checks are pending
CI / alpine musl (push) Waiting to run
CI / test - debug (push) Waiting to run
CI / test - release (push) Waiting to run
CI / randomized 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 / check-links (push) Waiting to run
CI / publish-wiki (push) Blocked by required conditions
CI / rustdoc (push) Blocked by required conditions
Until someone figures out how to fix the flakiness. See
https://github.com/YaLTeR/niri/issues/2226
2025-08-14 21:38:45 +03:00
Ivan Molodetskikh
c7a8c44a0d niri.spec.rpkg: Add mesa-libEGL to build requirements
Needed for the client-server animation tests.

Signed-off-by: Ivan Molodetskikh <yalterz@gmail.com>
2025-08-14 20:29:27 +03:00
Ivan Molodetskikh
25c1c04349 layout: Offset ongoing column X move anims for non-animated resizes
Some checks are pending
CI / test - debug (push) Waiting to run
CI / test - release (push) Waiting to run
CI / alpine musl (push) Waiting to run
CI / randomized 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 / check-links (push) Waiting to run
CI / publish-wiki (push) Blocked by required conditions
CI / rustdoc (push) Blocked by required conditions
2025-08-14 15:58:59 +03:00
Ivan Molodetskikh
36af02ad34 layout/tests: Add two width resize tests with the same issue as just fixed 2025-08-14 15:58:59 +03:00
Ivan Molodetskikh
a9f0f4d44f layout/scrolling: Normalize column X move anim from 1 to 0
Will be needed for offsetting to fix the resize cancel issue.
2025-08-14 15:58:59 +03:00
Ivan Molodetskikh
e3101ced70 layout: Offset Y animations for non-animated resizes 2025-08-14 15:58:59 +03:00
Ivan Molodetskikh
ea438b21e9 layout/tests: Add column resize animation tests 2025-08-14 15:58:59 +03:00
Ivan Molodetskikh
42bd107795 layout/tests: Add CompleteAnimations op 2025-08-14 15:58:59 +03:00
Ivan Molodetskikh
a2767041d9 layout/tests: Support forced test window size 2025-08-14 15:58:59 +03:00
Ivan Molodetskikh
5bda3041d0 layout/tests: Support animation snapshot
Only the size is needed in these tests; needed for testing animation progress.
2025-08-14 15:58:59 +03:00
Ivan Molodetskikh
54076b7632 layout/tests: Extract check_ops_on_layout() 2025-08-14 15:58:59 +03:00
Ivan Molodetskikh
c9873a0885 layout: Remove by-ref animation_snapshot() getter
It was used in only one place, and that place was due for an update to use the
cached data.
2025-08-14 15:58:59 +03:00
Ivan Molodetskikh
7a6be2a923 Add basic client-server resize animation tests 2025-08-14 15:58:59 +03:00
Ivan Molodetskikh
bba9ca1fa2 headless: Add a renderer
To be used for animation tests that need animation snapshots.

The renderer is optional to avoid creating it thousands of times in tests when
it's not needed, plus it can deadlock in mesa apparently.
2025-08-14 15:58:59 +03:00
Christian Meissl
af9ce53310 use ScanoutCandidate kind for surfaces
Some checks are pending
CI / test - debug (push) Waiting to run
CI / test - release (push) Waiting to run
CI / alpine musl (push) Waiting to run
CI / fedora (push) Waiting to run
CI / randomized 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 / nix (push) Waiting to run
CI / check-links (push) Waiting to run
CI / publish-wiki (push) Blocked by required conditions
CI / rustdoc (push) Blocked by required conditions
this allows to get direct scan-out on surfaces again
2025-08-13 11:39:12 +03:00
Ivan Molodetskikh
0044578681 Fix new lifetime warnings
Some checks failed
CI / test - debug (push) Has been cancelled
CI / test - release (push) Has been cancelled
CI / rustfmt (push) Has been cancelled
CI / alpine musl (push) Has been cancelled
CI / randomized 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 / fedora (push) Has been cancelled
CI / nix (push) Has been cancelled
CI / check-links (push) Has been cancelled
CI / publish-wiki (push) Has been cancelled
CI / rustdoc (push) Has been cancelled
2025-08-11 09:39:28 +03:00
Ivan Molodetskikh
0c09f2529b Update dependencies 2025-08-11 09:12:42 +03:00