aboutsummaryrefslogtreecommitdiff
AgeCommit message (Collapse)AuthorFilesLines
2023-01-01Rework focus-follows-cursor to work with warpshironeko1-14/+28
When focus-follows-cursor is used with cursor-warp, some windows will get focus before the cursor properly "enters" the window since they have a larger input-region than their window geometry, this causes the cursor to be yanked to the middle unexpectedly. This fix makes it so the focus is only given when the cursor enters the window geometry.
2022-12-31river-control: update zig-wayland to fix leakIsaac Freund2-2/+2
It was forgotten to destroy the callback server side object when sending the destructor event. With the new zig-wayland version, this cannot be forgotten.
2022-12-31river-control: mark callback events as destructorsMaxVerevkin1-2/+2
2022-12-31layout: fix size of CSD viewsIsaac Freund2-10/+17
Currently we subtract the border width from the size of CSD view as well as SSD ones, which is not correct.
2022-12-30touch: support drag and dropIsaac Freund5-53/+107
2022-12-30Config: use a single xkb keymap for all keyboardsIsaac Freund5-43/+36
This is nice simplification and allows us to abort startup if the default xkb configuration (perhaps influenced by XKB_DEFAULT_* environment variables) is invalid.
2022-12-29session-lock: fix potential raceIsaac Freund5-30/+150
Currently the session lock client has no 100% safe way to know when it is safe to suspend after requesting that the session be locked. For a suspend to be safe the compositor must have either blanked or rendered a lock surface on all outputs before suspending. This is because the current framebuffer on suspend appears to be saved and displayed again after suspend, at least on my Linux system. If a new "locked" frame for all outputs is not rendered before suspend, an "unlocked" frame or frames will likely be briefly displayed on resume before the lock surfaces are rendered or the screen is blanked. To fix this, wait until a lock surface has been rendered on all outputs, or if that times out until all outputs have been blanked, before sending the locked event to the client. Resolving this race on the compositor side without protocol changes is the most effective way to avoid this potential information leak, regardless of which session lock client is used.
2022-12-29river: fix resize commandLeon Henrik Plickat1-0/+10
In 489a49735 the view.move() call, which is used to keep the view centered after a resize, was accidentally removed.
2022-12-28flags: automatically prepend '-'Isaac Freund6-47/+47
This makes the usage a bit cleaner as the results of the parsing may be accessed with e.g. ret.flags.version instead of ret.flags.@"-version".
2022-12-28command/map: use flags.zig, cleanupIsaac Freund3-87/+64
2022-12-28docs: improve keyboard layout documentationIsaac Freund2-23/+9
- Remove recommendation of XKB_* environment variables in river(1) as we now have a dedicated riverctl keyboard-layout command. - Give an example of how to use and switch between multiple layouts in the riverctl(1) man page.
2022-12-28command/keyboard-layout: use flags.zig, cleanupIsaac Freund4-50/+39
2022-12-28flags: rewrite to allow [:0]const u8 argumentsIsaac Freund4-104/+99
This also cleans up the code by using @Type(), eliminating the need for the argFlag() and boolFlag() functions. Allowing [:0]const u8 arguments makes this parser useful for river-control commands as well.
2022-12-28river: add keyboard-layout commandLeon Henrik Plickat5-1/+109
This allows switching river's keyboard layout at runtime.
2022-12-24river: support wp-single-pixel-buffer-v1Andrea Feletto2-0/+1
2022-12-24idle: support ext-idle-notify-v1, drop KDE protocolIsaac Freund5-8/+6
This commit is a breaking change as it drops support for the now obsolete org_kde_kwin_idle protocol.
2022-12-24build: handle wlroots built without xwayland supportIsaac Freund3-6/+13
2022-12-24View: honor fullscreen requests before mapIsaac Freund3-13/+6
2022-12-02river-status: correctly advertise version 4MaxVerevkin3-2/+2
This should have been a compile error but slipped through due to a bug in zig-wayland. This bug has now been fixed and the submodule updated.
2022-12-02river-status: fix typo in layout_name_clear descriptionAiz1-1/+1
2022-12-01river-layout: fix version of layout_name eventsIsaac Freund1-2/+2
2022-12-01river-status: expose current layout nameLeon Henrik Plickat4-2/+60
2022-12-01Cursor: add on-focus-change optionshironeko7-26/+65
Warp the cursor to the center of the focused view if the cursor is not in the bounding box of that view already. This helps the user to keep track of their cursor when they mostly use the keyboard and the cursor becomes hidden most of the time, also helps trackpad/trackpoint users.
2022-11-25map-pointer: minor fixes and cleanupsIsaac Freund5-41/+42
2022-11-25map-pointer: allow running arbitrary commandsAlexander Courtis8-25/+89
2022-11-25example/init: run rivertile in backgroundIsaac Freund1-1/+1
There have been multiple "bug reports" from users that have added more configuration using riverctl after this line starting rivertile and were confused why that configuration has no effect. It's not our job to explain how POSIX shell works, but we can make the example a bit more foolproof for those who do not yet have experience with it
2022-11-20deps: update to latest zig-wlrootsIsaac Freund1-0/+0
This fixes a crash handling switch toggle events
2022-11-17docs: fix typo in readmetaupiqueur1-1/+1
2022-11-13session-lock: send wl_pointer.enter immediatelyIsaac Freund1-2/+3
2022-11-13session-lock: add basic loggingIsaac Freund1-0/+13
2022-11-13session-lock: handle output unplugging bettertiosgz13-51/+70
2022-11-13ext-session-lock: implement protocolIsaac Freund11-20/+332
2022-11-13input-inhibit: remove support for protocolIsaac Freund4-109/+41
The only valid use-case for this as far as I'm concerned is lockscreens, which will now be supported through ext-session-lock-v1.
2022-11-13ci: remove Void Linux CIIsaac Freund1-79/+0
This doesn't really seem worth keeping as glibc linux is already covered by the Arch Linux CI and Void lags behind on package updates enough compared to the others to be annoying.
2022-11-13ci: update to wlroots 0.16.0 and wayland 1.21.0Isaac Freund3-6/+9
2022-11-13river: update to wlroots 0.16Isaac Freund34-366/+286
2022-10-26contrib: mention default-layout command in FAQCampbell Barton1-1/+5
It took me a while to figure out how to activate this layout, adding a note to the Q&A.
2022-09-18river: refactor keyboard groups implementationIsaac Freund10-172/+179
This reduces the impact of keyboard groups on the Keyboard.zig implementation and otherwise improves consistency with patterns used elsewhere in rivers code. There are also two small changes to the riverctl interface: - keyboard-group-add-keyboard is renamed to keyboard-group-add - keyboard-group-remove is added to support removing keyboards from a group.
2022-09-12river: add keyboard groupsLeon Henrik Plickat10-31/+314
2022-08-25layer-shell: start transaction on mapIsaac Freund1-0/+1
The fact that this call is missing is a bug, as the changes made by arranging the output layers as well as changes to the focus will not be fully applied.
2022-08-19river: advertise correct version of layout protocolLeon Henrik Plickat1-1/+1
2022-08-16river-layout: add user_command_tags eventLeon Henrik Plickat4-3/+22
It is not guaranteed that the next layout_demand event after a user_command event has the same active tags (for example when there are no views visible). As an example, a user could trigger a user_command while no views are visible, then switch to a different tag set which has active views. The active tags of the previous layout_demand may also be different. Therefore it is impossible to correctly implement a layout generator which has user commands apply only to the currently active tag set, which is solved by this patch.
2022-08-15layout: only arrange on user command if layout is activeIsaac Freund1-1/+1
2022-08-11river: keep floating views within bounds when sending to outputLeon Henrik Plickat1-2/+26
2022-08-11river: fix SIGPIPE handling, cleanup fork/execveIsaac Freund3-18/+28
Installing an empty handler does not have the same effect as using SIG_IGN as the failing write syscall will not return EPIPE.
2022-08-10river: ignore SIGPIPE to avoid weird exitsshironeko1-0/+11
When river or wlroots write to a closed socket it could generate SIGPIPE causing the whole desktop to seemingly "crash" with no error log of any kind. So we ignore the SIGPIPE and just let the write fail with EPIPE to be handled normally.
2022-07-26Seat: send enter event on keyboard device creationIsaac Freund1-18/+28
Currently we don't send an enter event when a new keyboard device is created which causes issues when switching ttys. On switching away the keyboard device is destroyed and leave is sent. Currently on switching back the keyboard device is re-created but no enter event is sent before we start sending key events, which is a violation of the protocol.
2022-07-19LayoutDemand: handle too many view dimensions correctlytiosgz1-1/+4
The condition was wrong for the first extra view (0 isn't < 0), plus the counting stopped at that moment.
2022-07-18XdgPopup: fix unconstrain rect with layer surfacestiosgz1-2/+2
The used coordinates store where the layer is on the output, but we need the opposite.
2022-07-10Output: retry other modes if preferred failstiosgz1-3/+14
In cases like multiple hi-res monitors connected through a USB dock, the preferred mode can fail to work. Such an output was then ignored by river, which made it impossible to even set another mode manually. Sway has been reported to solve this issue, so let's employ their solution and fall back to another mode if possible.