Commit Graph

472 Commits

Author SHA1 Message Date
Ivan Molodetskikh ec5144feca Make pointer inactivity timer reset lazy 2025-02-17 09:04:07 +03:00
Ivan Molodetskikh 7816f20e6a Implement ext-data-control 2025-02-14 09:03:20 +03:00
Ivan Molodetskikh 0d3610416c Update Smithay (idle-notify 2) 2025-02-14 09:03:20 +03:00
Ivan Molodetskikh ef80bcc834 Parse the config on the file watcher thread
It takes a while, so let's not block the main thread.
2025-02-12 20:56:32 +03:00
Ivan Molodetskikh 29b7a41692 Implement is-window-cast-target window rule matcher 2025-02-11 10:31:12 +03:00
Ivan Molodetskikh 6942ecc13a Implement clicking on tab to switch 2025-02-10 07:29:33 -08:00
Ivan Molodetskikh 963ff14ed0 Store hit type in PointContents 2025-02-10 07:29:33 -08:00
Ivan Molodetskikh bfd81fc290 Make send_frame() a function on Mapped
We'll add some extra logic there.
2025-02-10 07:29:33 -08:00
Ivan Molodetskikh 1d883931b4 Account for border in contents_under()
Fixes pointer clicks going through window borders to a layer surface below,
also fixes window not getting activated in all cases from a border click.
2025-02-10 07:29:33 -08:00
Ivan Molodetskikh b65fad09d8 Remove unnecessary mut 2025-02-10 07:29:33 -08:00
Ivan Molodetskikh 734e3a6d3c Fix find_window_and_output() returning None with no outputs
As far as I can tell, this would mess up a ton of the logic. Not sure
how anything worked with no outputs before?
2025-02-05 09:35:10 +03:00
may e412a0fc6b add option to set xkb config from file (#1062)
* add option to set xkb config from file

* Apply suggestions from code review

---------

Co-authored-by: Ivan Molodetskikh <yalterz@gmail.com>
2025-01-30 13:50:05 +00:00
bbb651 6b04b1e454 misc: Use helper function for restriced protocol filters
I looked at cosmic-comp as a sanity check and they do the same thing,
I ended up yoinking their function name because it reads better,
not sure about "unrestricted" vs "privileged".
2025-01-30 07:18:42 +03:00
bbb651 0c340ec5ea misc: Use CursorImageSurfaceData type alias
instead of `Mutex<CursorImageAttributes>`
2025-01-30 07:18:42 +03:00
Ivan Molodetskikh 0226d9aec2 Don't create on-disk sockets in tests 2025-01-27 08:30:22 +03:00
Ivan Molodetskikh ec43493522 Extract Niri::insert_client() 2025-01-27 08:06:33 +03:00
peelz 54a1cd5069 Add clipboard disable-primary setting 2025-01-25 10:36:36 +03:00
Ivan Molodetskikh 788c9c6c54 Add find_root_shell_surface() that goes through popups 2025-01-23 12:07:32 +03:00
Ivan Molodetskikh a10705fb20 Add toggle-window-rule-opacity action 2025-01-23 11:13:55 +03:00
Ivan Molodetskikh acd4cb51aa Implement shadows for layer surfaces 2025-01-21 11:31:30 +03:00
Ivan Molodetskikh 2511a98e8b Extract Niri::update_shaders() 2025-01-21 11:31:30 +03:00
Ivan Molodetskikh a7692d10c4 Add update_render_elements() to MappedLayer 2025-01-21 11:31:30 +03:00
sodiboo 0584dd2f1e implement keyboard-shortcuts-inhibit and wlr-virtual-pointer (#630)
* stub keyboard-shortcuts-inhibit and virtual-pointer impls

* implement keyboard-shortcuts-inhibit

* implement virtual-pointer

* deal with supressed key release edge-case; add allow-inhibiting property

* add toggle-keyboard-shortcuts-inhibit bind

* add InputBackend extensions; use Device::output() for absolute pos events

* add a `State` parameter to the backend exts and better document future intent

* Add some tests for is_inhibiting_shortcuts

---------

Co-authored-by: Ivan Molodetskikh <yalterz@gmail.com>
2025-01-18 17:26:42 +03:00
Val Packett 890bbff007 dbus: DisplayConfig: implement apply_monitors_config
This enables gnome-control-center to apply display configuration
changes. Only temporarily, persistence is ignored currently.
2025-01-17 11:16:10 +03:00
Gustav Sörnäs 0df7a085de add write-to-disk argument to screenshot actions 2025-01-14 13:39:52 +03:00
bbb651 c523c80598 Support WAYLAND_SOCKET in winit backend
I know of a single compositor that supports `WAYLAND_SOCKET` but not
`WAYLAND_DISPLAY`: https://gitlab.freedesktop.org/mstoeckl/windowtolayer

This should also make niri more robust against accidentally setting
`WAYLAND_SOCKET` when starting as a session, before programs could fail
if they preffered `WAYLAND_SOCKET` over `WAYLAND_DISPLAY`
2025-01-13 08:19:17 +03:00
Ivan Molodetskikh 7dee2f6995 Fix two manual let-else 2025-01-10 09:11:31 +03:00
Ivan Molodetskikh 623687e59b Fix new Clippy warnings 2025-01-10 09:11:31 +03:00
Ivan Molodetskikh b2ca280c49 Restart PipeWire on errors
This lets you restart pipewire and then get a screencast successfully.
2025-01-04 12:23:25 +03:00
Ivan Molodetskikh a2f9d132a0 Migrate to new Rectangle functions 2025-01-04 11:22:56 +03:00
Ivan Molodetskikh 1973b97cc2 Upgrade Smithay (DrmCompositor changes) 2025-01-04 11:22:56 +03:00
Ivan Molodetskikh 152ed59502 Allow keyboard focus for bottom and background layers 2025-01-03 16:41:39 +03:00
Ivan Molodetskikh 8e16be9e11 Allow pop-up grabs for bottom and background layers 2025-01-03 16:24:23 +03:00
Ivan Molodetskikh 300701f44e Render layer-shell pop-ups on top 2025-01-03 15:57:59 +03:00
Julian Schuler c17d4dc050 Add actions to focus/move to next/previous monitor 2025-01-02 15:15:23 +03:00
bbb651 4e33f45522 Add Mouse{Left,Right,Middle,Back,Forward} binds 2025-01-02 14:59:15 +03:00
Christian Meissl b16d7abb35 skip keyboard focus for layer shell surfaces not...
...requesting keyboard interactivity
2025-01-02 14:24:39 +03:00
Ivan Molodetskikh 44b5612697 Remove notify-rust dependency
It uses outdated zbus.
2025-01-02 09:33:54 +03:00
bbb651 0113292cf6 Upgrade zbus and async-io 2025-01-02 08:50:48 +03:00
Ivan Molodetskikh be05b66ac3 Hide focus ring for unfocused layout and under interactive move 2024-12-30 20:12:37 +03:00
Ivan Molodetskikh c5fffd6e2c Initial WIP floating window implementation 2024-12-30 20:12:37 +03:00
Ivan Molodetskikh d38bfc4aff Add test-only single-pixel-buffer support 2024-12-22 15:19:46 +03:00
Ivan Molodetskikh fbb0054232 Add a Headless backend for tests
Rendering and stuff is unimplemented.
2024-12-22 15:19:46 +03:00
Ivan Molodetskikh 8dcc41a54d Initialize PipeWire lazily
This helps with:
- System setups starting PipeWire late (after niri startup, but before any
  screencast).
- Tests which don't even want to start PipeWire.
2024-12-22 15:19:46 +03:00
Rémi Labeyrie b1c40a9079 fix: check for layer surface under cursor when clicking 2024-12-22 15:13:17 +03:00
Ivan Molodetskikh 6b16cc52db Add force-pipewire-invalid-modifier debug flag 2024-12-17 17:08:14 +03:00
Ivan Molodetskikh 4c22c3285d Refactor animation timing to use lazy clocks 2024-11-25 04:07:59 -08:00
Ivan Molodetskikh 93cee2994a Refactor animations to take explicit current time 2024-11-25 04:07:59 -08:00
Ivan Molodetskikh 9c7e8d04d2 Extract Niri::advance_animations() 2024-11-23 15:09:16 +03:00
Ridan Vandenbergh a74a578198 Add focus-window-previous action (#811)
* Add `FocusWindowPrevious` action

* remove [`

* track previous focus in Niri instead of every window

---------

Co-authored-by: Ivan Molodetskikh <yalterz@gmail.com>
2024-11-21 14:48:51 +03:00