Screen readers expect closing a modal dialog to reannounce the previous focus.
This makes the exit confirm dialog more modal in this sense: it will unfocus
the layout and then focus it back when closed, giving the desired behavior.
* 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>
Without explicit sync, we have no way to signal the PipeWire consumer when the
rendering is done. So, wait until it's done before giving it the frame.
This should fix flickering screencasts on NVIDIA.
Makes Orca work with niri:
- keyboard watching and announcing everywhere (not just GTK 3 windows)
- grabs for the Orca modifier (with double-press to pass through) and keystrokes
* Set logind LockedHint on lock/unlock
* fixup! Set logind LockedHint on lock/unlock
- use warn!() instead of error!()
- extract dbus call into a separate method
* fixup! Set logind LockedHint on lock/unlock
- Update LockedHint in refresh_and_flush_clients
* fixup! Set logind LockedHint on lock/unlock
woops
* fixup! Set logind LockedHint on lock/unlock
- only call SetLockedHint if niri was run with `--session`
* fixes
---------
Co-authored-by: Ivan Molodetskikh <yalterz@gmail.com>
Minor change so that `get_pointer()` (which has a lock) does not get
called twice. Also moved the call to `current_location()` to the scope
where it is needed.
gtklock doesn't mind the fact that it got denied the lock, and just creates a
new lock surface anyway. And we happily replace the running lock with it.
Compared to third-party implementations such as waycorner:
- It works during interactive window move (no surfaces receive pointer
focus in this case, so this cannot work through layer-shell).
- It works during drag-and-drop.
- It disables itself over fullscreen windows.
- It does not prevent direct scanout.
This design makes more sense spatially, and is required for the
Overview. Gaps also make it clear how clipping windows to workspace
bounds works.
Background and bottom layer-shell surfaces get duplicated for each
workspace, while top and overlay stay "on top".