Commit Graph

2662 Commits

Author SHA1 Message Date
Ivan Molodetskikh 9261fd6342 layout/tests: Add test for second workspace y = 0 2026-01-25 18:28:35 +08:00
SAKURA fb2f66f361 layout/monitor: round workspace render geo to physical pixels 2026-01-25 18:28:35 +08:00
dependabot[bot] e2e15b7a18 build(deps): bump zbus in the rust-dependencies group
Bumps the rust-dependencies group with 1 update: [zbus](https://github.com/z-galaxy/zbus).


Updates `zbus` from 5.13.0 to 5.13.1
- [Release notes](https://github.com/z-galaxy/zbus/releases)
- [Changelog](https://github.com/z-galaxy/zbus/blob/main/release-plz.toml)
- [Commits](https://github.com/z-galaxy/zbus/compare/zbus-5.13.0...zbus-5.13.1)

---
updated-dependencies:
- dependency-name: zbus
  dependency-version: 5.13.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: rust-dependencies
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-01-25 18:23:49 +08:00
Xarth 0a416eedda docs: Update Arch Linux installation instructions
Removed 'wl-clipboard' and 'cliphist' from the installation command for Arch Linux. Because dms doesn't request that now.
2026-01-25 18:22:38 +08:00
Ivan Molodetskikh d7184a04b9 render_helpers: Add Smithay Tracy GPU spans 2026-01-17 22:31:05 +03:00
Ivan Molodetskikh bdf394260a render_helpers: Add Tracy spans to draw() calls 2026-01-17 22:30:32 +03:00
Ivan Molodetskikh 74d14be01f Update Smithay (virtual keyboard, layer-shell geometry, GPU profiling)
Also includes the necessary code to handle the virtual keyboard
compositor-side. Similar to the virtual pointer, we have an InputDevice
impl that allows reusing the logic from process_input_event().

Co-authored-by: wxt <3264117476@qq.com>
2026-01-17 22:29:10 +03:00
Ivan Molodetskikh 3ccb06f564 Fix panic in screencopy manager destroyed() 2026-01-17 15:32:20 +03:00
Ivan Molodetskikh d9e755d575 screencasting: Only render pointer when it's within output 2026-01-17 13:59:23 +03:00
Ivan Molodetskikh 87e2dd0361 Revert "Move set_dynamic_cast_target() stub closer to the other ones"
This reverts commit dd93c39ed0.

Why did I do this, that function is on a different type
2026-01-15 17:29:37 +03:00
Ivan Molodetskikh dd93c39ed0 Move set_dynamic_cast_target() stub closer to the other ones 2026-01-15 13:14:23 +03:00
Ivan Molodetskikh 849788bb28 Add niri msg stop-cast --session-id 2026-01-15 13:13:50 +03:00
Ivan Molodetskikh 9015ff8e36 ipc: Add pw_node_id to PipeWire Casts 2026-01-15 08:42:25 +03:00
Ivan Molodetskikh e546b339a3 ipc: Add PID to screencopy Casts 2026-01-15 08:42:25 +03:00
Ivan Molodetskikh b39edf405a screencopy: Add timeout to casts considered stopped
Otherwise xdp-wlr never stops the cast after it first starts.
2026-01-15 08:42:25 +03:00
Ivan Molodetskikh b98f4906da ipc: Add CastKind 2026-01-15 08:42:25 +03:00
Ivan Molodetskikh e82830c68c ipc: Add screencopy cast tracking
Track wlr-screencopy sessions that use with_damage as screencasts. These
are used by tools like wl-screenrec for continuous recording.
2026-01-15 08:42:25 +03:00
Ivan Molodetskikh 238caaf8da ipc: Add screencast request and events for PipeWire casts
Allows desktop bars to show when screen recording is active.
2026-01-15 08:42:25 +03:00
Ivan Molodetskikh 9c79108afa Refactor wlr-screencopy state cleanup
Before we cleaned up when binding a new manager, meaning that after a
screencopy client exited, the queue kept existing until a new one is
bound. We'll need precise tracking for the screencast IPC, so this
commit refactors to do just that: clean up the queue immediately when
all referring objects no longer exist.

This commit also fixes an issue where destroyed frames (e.g. from a
killed client) didn't clean the corresponding screencopy objects,
leading them to exist forever.
2026-01-13 23:01:21 +03:00
Ivan Molodetskikh 2571242887 screencopy: Pop first screencopy instead of last
This was never found probably because no client submits multiple frames
at once.
2026-01-13 23:00:38 +03:00
Ivan Molodetskikh 6f92b3296a Store output name in CastTarget
Will be useful in the next commit to avoid fetching it every time.
2026-01-13 21:31:51 +03:00
Ivan Molodetskikh 570ea119ba Extract cast session/stream ID counters to global scope
Add CastSessionId and CastStreamId newtypes. This lifts the atomic
counters from the D-Bus mutter_screen_cast module to a shared location,
preparing for adding screencopy cast tracking which will need the same
ID types.
2026-01-13 21:31:51 +03:00
Ivan Molodetskikh df4614e62c screencasting: Use spans to reduce logging boilerplate 2026-01-12 21:33:29 +03:00
Ivan Molodetskikh 3672e79369 Delay starting dynamic casts until there's a target
This avoids a weird 1x1 stream as well as one renegotiation which is a
complex operation, and some clients apparently have a problem with it.
2026-01-12 08:45:03 +03:00
Ivan Molodetskikh 2d16abdaae Move dynamic_target set outside pw_utils 2026-01-12 08:37:58 +03:00
Ivan Molodetskikh ff081acddc screencasting: Extract some logic into functions 2026-01-12 08:37:58 +03:00
Ivan Molodetskikh afe27a143b Move xdp-gnome-screencast code into separate module 2026-01-12 07:59:56 +03:00
Ivan Molodetskikh fd2916eb72 Honor pointer visibility in screencasts
Regressed in 05599ce2c4.
2026-01-12 07:11:56 +03:00
Janis e9d888cd52 Set NIRI_BUILD_COMMIT in flake.nix (#3235) 2026-01-11 19:59:43 +03:00
abmantis 05599ce2c4 Implement cursor metadata in window screencast
Co-authored-by: Ivan Molodetskikh <yalterz@gmail.com>
2026-01-11 06:51:14 -08:00
Ivan Molodetskikh 0fb6c5706b Extract pointer_pos_for_window_cast()
Will be used for window screencasts too.
2026-01-11 06:51:14 -08:00
Ivan Molodetskikh 79aaa4c6c0 Upgrade dependencies 2026-01-11 15:37:00 +03:00
Ivan Molodetskikh 7e559dc468 Use unadjusted clock for config notification shown duration
It shouldn't be affected by anim slowdown (or, more importantly,
speedup).
2026-01-11 15:08:58 +03:00
Ivan Molodetskikh 45fc763281 Update Insta snapshots for new Insta version
No functional changes intended.
2026-01-10 15:45:47 +03:00
Ivan Molodetskikh 39d3cd2415 Add a push version of render()
Will be useful for screencasting.
2026-01-10 15:32:21 +03:00
Ivan Molodetskikh 19b1074a8b Fix root surface tracking for sync subsurfaces
In particular, fixes screenshot-window with show-pointer on foot CSD.
2026-01-10 15:32:21 +03:00
Ivan Molodetskikh 539a5a8030 Fix tablet cursor for screenshot-window with pointer 2026-01-10 15:32:21 +03:00
Ivan Molodetskikh 53b7477d20 render_helpers: Fix encompassing_geo() argument type 2026-01-10 15:32:21 +03:00
Ivan Molodetskikh c34f7b18ec pick_color_grab: Remove unnecessary Vec allocation 2026-01-10 15:32:21 +03:00
Anton Kesy a6baef7b68 Fix typo 2026-01-10 04:30:42 -08:00
Manuel Romei 10df9f4717 fix(pw_utils): prevent write-after-free by reordering Cast struct fields
The Cast struct fields were ordered such that `stream` was dropped before
`_listener`. In Rust, struct fields are dropped in declaration order.

Because `StreamListener` attempts to unregister itself from the stream on
drop, and `StreamRc` destroys the underlying PipeWire stream on drop, the
previous order caused `_listener` to access the stream after it had
already been freed.

This reorders the fields so `_listener` is declared before `stream`,
ensuring the listener unregisters itself while the stream is still valid.

* Apply suggestion from @YaLTeR

---------

Co-authored-by: Ivan Molodetskikh <yalterz@gmail.com>
2026-01-07 13:32:06 +00:00
Ivan Molodetskikh 9f8eadc5bc Add screenshot-window show-pointer=true 2026-01-07 07:53:05 +03:00
Ivan Molodetskikh a496307daf Move pointer visibility check outside render_pointer() 2026-01-07 07:53:05 +03:00
Ivan Molodetskikh bc7bb51b6f Fix Tracy span name 2026-01-07 07:53:05 +03:00
Ivan Molodetskikh b7eb8a635b default-config: Bind Mod+M to maximize-window-to-edges 2026-01-05 10:28:18 +03:00
Ivan Molodetskikh d060b06667 Replace TODO with FIXME
We use TODO for things to be fixed before committing.
2026-01-05 08:29:05 +03:00
Ivan Molodetskikh 54c2e2ab47 utils/spawning: Remove unnecessary cfgs
Forgotten when this was refactored.
2026-01-04 15:43:42 +03:00
Ivan Molodetskikh df3f3979e9 layout/scrolling: Preserve gesture anim in dnd_scroll_gesture_end()
Fixes interactive move unmaximize/unfullscreen into floating skipping
the view offset anim.
2026-01-04 15:43:42 +03:00
Vishal 6215b5f0b1 doc: link DMS compositor setup in Quick Start (#3179)
* doc: add `dms setup` command in Getting Started section along with clarification

* mention DMS setup page

* Update docs/wiki/Getting-Started.md

---------

Co-authored-by: Ivan Molodetskikh <yalterz@gmail.com>
2026-01-04 15:04:22 +03:00
Mark Karlinsky 3bfa4a71ff Improve dinit service files (#3193)
* Improve dinit service files and niri-session

Two main changes were made:
 - After a discussion in davmac314/dinit#496, 2 dinit services are now
   provided. The first one is 'niri', which runs niri itself, and the
   second one is 'niri.target' which brings up all the dependences from
   user configuration.
 - Made the behaviour of 'niri-session' when running under dinit closer
   to the behaviour when running under systemd. In particular, now the
   script wait for service completion, because some login managers shut
   the session down the moment the startup script completes.

* Update paths in docs
2026-01-04 10:04:03 +03:00