Ivan Molodetskikh
e9c182a13c
Make use of new DndGrabHandler::cancelled()
2026-04-20 20:42:21 +03:00
Ivan Molodetskikh
d09fa2709c
Guard against removed outputs in several places
...
Output::from_resource() succeeds even after the global has been disabled
and removed from niri. Clients operating on these disabled outputs could
cause panics in several places because niri assumed the output existed.
2026-04-19 11:19:41 +03:00
Ivan Molodetskikh
d4b4407236
Implement cancelling DnD with Escape
...
The last Smithay upgrade includes a fix that lets us do this.
2026-04-16 09:54:53 +03:00
Ivan Molodetskikh
931123f38c
Implement ext-background-effect protocol
2026-04-15 14:35:14 +03:00
Ivan Molodetskikh
f4dc10e0b4
Upgrade Smithay (virtual_keyboard revert, clipboard destroy cleanup, xdg-shell v7)
...
The virtual keyboard is reverted to the same state as it was in v25.08, i.e.
cannot trigger compositor binds. A bigger Smithay refactor is necessary to
properly support them without breaking other things.
Fixes wtype being completely broken.
2026-03-07 08:17:52 +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
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
7ca46b44b2
Update Smithay (DnD rework, primary GPU improvement)
2025-12-18 13:17:35 +03:00
Ivan Molodetskikh
e1fad994da
Implement maximize-to-edges (true Wayland maximize)
2025-10-15 09:04:16 +03:00
Ivan Molodetskikh
36dc5c6e8e
layout: Deduplicate move_workspace_to_output()
2025-10-02 09:33:08 +03:00
Ivan Molodetskikh
86edeb3b0b
Fix DnD icon offset from surface cursor
...
The offset is already relative to the hotspot, no need to offset twice.
2025-09-19 15:48:07 +03:00
Ivan Molodetskikh
4808ba2b20
Update Smithay (last_acked refactor, Qt layer-shell popup grab fix, popup ordering fix)
2025-09-17 22:04:23 +03:00
Ivan Molodetskikh
98a42c5557
Update Smithay (clipboard client exit nil fix, input region bottom-right fix)
2025-07-31 19:39:12 +02:00
Ivan Molodetskikh
ce9ba00d54
Implement ext-workspace
2025-07-13 11:43:59 +03:00
Ivan Molodetskikh
9858599ac1
Round lock surface size, rather than floor
...
There's no problem with 1 px overflow here, while 1 px underflow shows up as a
border.
2025-06-04 09:40:22 +03:00
Duncan Overbruck
86f57c2ec7
add window urgency through xdg-activation-v1
...
urgency is done through activation requests without a serial from a
previous interaction.
https://gitlab.freedesktop.org/wayland/wayland-protocols/-/issues/150
2025-05-10 12:14:41 -07:00
bogdanov
758cca5432
Fix pointer hiding so that it is no longer annoying ( #1426 )
...
* replace `pointer_hidden` with `pointer_visiblity`
* disable hidden pointer after content underneath has changed
* fixes
---------
Co-authored-by: Ivan Molodetskikh <yalterz@gmail.com >
2025-04-27 06:25:36 +00:00
Ivan Molodetskikh
3bb7e60311
layout: Remove duplicated function
2025-03-29 12:50:16 +03:00
Ivan Molodetskikh
d91499486e
Make move-window-to-workspace focus=false work across monitors too
2025-03-29 11:17:38 +03:00
Ivan Molodetskikh
693d935538
Add honor-xdg-activation-with-invalid-serial debug flag
2025-02-26 19:33:58 +03:00
Ivan Molodetskikh
5b6b5536fd
Also check pointer for activation token validity
...
This actually doesn't matter in most cases currently, because it more or less
checks for *anything* to have a keyboard focus, so if you have some focused
window while clicking on a mako notification, that already qualifies.
Signed-off-by: Ivan Molodetskikh <yalterz@gmail.com >
2025-02-24 22:34:30 +03:00
Ivan Molodetskikh
d27d6a504d
Make idle notify lazy
2025-02-17 09:09:59 +03:00
Ivan Molodetskikh
ca1500ae90
Implement scrolling the view during DnD
...
DnD is external to the layout, so we just inform it when one is ongoing.
2025-02-15 13:28:57 +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
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
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
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
Ivan Molodetskikh
623687e59b
Fix new Clippy warnings
2025-01-10 09:11:31 +03:00
Ivan Molodetskikh
a5f3b2a949
Clear on-demand layer-shell focus in more cases
2025-01-03 17:00:13 +03:00
Ivan Molodetskikh
d38bfc4aff
Add test-only single-pixel-buffer support
2024-12-22 15:19:46 +03:00
Salman Farooq
bb3a05bb3f
Activate monitors on session unlock ( #858 )
...
So that e.g. unlocking by touching the fingerprint reader powers on the monitors.
---------
Co-authored-by: Ivan Molodetskikh <yalterz@gmail.com >
Co-authored-by: Salman Farooq <46742354+SalmanFarooqShiekh@users.noreply.github.com >
2024-12-11 03:53:41 -08:00
Christian Meissl
305fc3b557
Activate newly mapped windows with a valid activation token
...
most of the time the activation token is passed
while the window is still unmapped. in this case
store the intend to activate the window for
later retrieval on map.
2024-11-29 21:57:36 -08:00
Ivan Molodetskikh
c239937fac
Focus target window/output on DnD
...
In sway, focus-follows-mouse keeps working during DnD, but not in niri.
So it can be surprising when you DnD something into another app, but it
doesn't get automatically focused. This commit fixes that.
Even if the DnD is not validated, or if there's no target surface (e.g.
dropped on the niri background), focus the target output, since that's
how Firefox's drag-tab-into-new-window works for example.
2024-11-22 09:37:26 +03:00
Ivan Molodetskikh
d193928f31
Add PID to Window IPC
2024-11-12 09:37:25 +03:00
Christian Meissl
354c365a03
xdg: cleanup activation tokens
...
valid tokens will stay around until explicitly cleaned-up.
remove the token after it has been successfully used
or we consider it timed out to prevent leaking the memory
used by the activation tokens
2024-11-03 09:13:41 -08:00
Ivan Molodetskikh
9193245871
Correct pointer constraint activation logic
...
Internally it uses the pointer focus, so make sure we have up-to-date
focus before setting it.
2024-11-03 10:15:19 +03:00
Ivan Molodetskikh
f5d91c5ecc
Rename pointer_focus to pointer_contents, clarify comments
...
This is not pointer focus and it shouldn't be pointer focus, let's be
clear about it.
2024-11-03 10:15:19 +03:00
Ivan Molodetskikh
0e7e398df3
Replace current_state() with with_toplevel_role()
...
Avoid microallocations that happen in current_state().
2024-11-02 10:53:55 +03:00
Ivan Molodetskikh
58fc5f3b06
layout: Replace move_window_to_output with move_to_output
2024-10-10 10:28:55 +03:00
sodiboo
66be000410
implement locked cursor position hints ( #685 )
...
* implement cursor position hints
* Remove redundant fully qualified path
* Find root surface
* Convert nesting to if-return
* Manually wrap error messages
* Remove error!() prints
* Add queue redraw
---------
Co-authored-by: Ivan Molodetskikh <yalterz@gmail.com >
2024-10-06 20:36:49 +03:00
Ivan Molodetskikh
94e5408f46
Update Smithay
2024-09-30 15:24:50 +03:00
Christian Meissl
eb190e3f94
handle role specific buffer offset
2024-09-30 05:04:58 -07:00
Ivan Molodetskikh
883763c172
Implement stub mutter-x11-interop
...
Allows xdp-gnome dialogs to work with X11 clients.
Fixes https://github.com/YaLTeR/niri/issues/594
2024-08-13 09:15:57 +03:00
Michael Yang
b6a7b3e9e4
feat: update screencopy to version 3
2024-08-08 13:32:37 +03:00
Ivan Molodetskikh
e394a7ff20
Implement on-demand layer-shell keyboard focus
2024-07-06 18:20:19 +04:00
Ivan Molodetskikh
9dcc9160b3
Put Outputs config into a dedicated struct
2024-07-05 07:35:01 +03:00
tet
43df7fad46
Implement wlr-output-management protocol
...
fix: wlr_output_management use WeakOutput
2024-07-05 07:35:01 +03:00