aboutsummaryrefslogtreecommitdiff
AgeCommit message (Collapse)AuthorFilesLines
2024-01-06Cursor: Focus follows cursor focuses empty outputsWouter van Heijst1-0/+3
When `focus-follows-cursor` is set and the cursor moves onto an output where no views are present on the currently visible tags, focus the output itself instead of an individual view. This is useful e.g. when you want to spawn a terminal on your empty monitor or switch it to a different tag. Previously such changes would happen to the monitor on which you previous focus was, despite the cursor being somewhere else.
2024-01-05Output: fix possible crash on destroyIsaac Freund1-1/+2
2024-01-05Keyboard: delete some uneeded codeIsaac Freund2-21/+1
2024-01-04Cursor: clean up cursor theme loadingIsaac Freund3-26/+9
wlroots will now load xcursor themes at the correct scale automatically based on the scale of the outputs where ther cursors are displayed. Also make the error handling a bit more robust.
2024-01-04river: Implement cursor_shape_v1MaxVerevkin3-0/+24
2024-01-04Cursor: actually set xcursor_nameMaxVerevkin1-3/+8
2024-01-04Keyboard: Add new keyboards to groups if matchedLeon Henrik Plickat1-1/+11
Previously new keyboards would not be added to already existing keyboard groups on (re-)connect. Only during the creation of the groups themselves were devices added to them. This meant that only keyboards connected during startup - before the init is executed - would work with groups in a typical river session.
2024-01-04xdg-activation: fix race with transaction systemIsaac Freund1-1/+1
This code could allows the view to be focused and urgent at the same time if the request to activate the view is received just after the pending focus has been set but before the transaction completes.
2024-01-03linux-dmabuf: send better per-surface feedbackIsaac Freund2-1/+4
This commit leverages the new wlr_scene helper to send custom feedback per surface rather than using the same default feedback for every surface. This should allow direct scanout to work more reliably with multiple outputs for example.
2024-01-03river: drop support for wl_drmIsaac Freund2-1/+6
wl_drm is a legacy interface superseded by the linux-dmabuf protocol. All clients should migrate. This commit drops support for the protocol which should help find whatever problematic clients are left in the wild. If it turns out that this is too soon we can easily keep supporting wl_drm for a little while longer as wlroots has not yet dropped support for it.
2024-01-03river: Implement fractional_scale_v1MaxVerevkin2-0/+1
2024-01-03XdgToplevel: fix frame perfection on unmapIsaac Freund1-13/+13
It looks like the old workaround for this wlroots API wart is no longer sufficient for wlroots 0.17.
2024-01-01Keyboard: clarify keypress routing logicIsaac Freund2-36/+32
2024-01-01TextInput: fix consecutive enable requestsIsaac Freund1-3/+8
The wording of the text-input-v3 protocol is quite confusing here but I'm pretty sure this is now correct.
2024-01-01TextInput/InputRelay: style nitsIsaac Freund4-118/+126
There should be no functional changes in this commit
2024-01-01TextInput: handle multiple text inputs correctlyIsaac Freund4-62/+62
The protocol states that we must send enter and leave to all text input objects if the client has created multiple. Only one text input is allowed to be activated by the client per seat however.
2024-01-01TextInput: remove pending_focused_surfaceIsaac Freund4-57/+16
This state doesn't need to exist, just get the focus from the Seat.
2024-01-01input-method: address nitspraschke1-3/+6
2024-01-01input-method: check that the input method is active when committingpraschke2-3/+7
2024-01-01input-method: send text-input enter event after all leave eventspraschke1-5/+12
2024-01-01input-method: setKeyboard already sends modifierspraschke1-3/+1
2024-01-01river: Implement input_method and text_inputpraschke6-3/+456
2024-01-01build: require at least wlroots 0.17.1Isaac Freund5-4/+10
There are enough bugs fixed in 0.17.1 which are relevant to river that I think it's worthwhile to refuse to compile against 0.17.1.
2024-01-01output-management: work around wlroots crashIsaac Freund2-0/+11
2024-01-01output-management: fix output config applicationIsaac Freund2-36/+38
Currently wlr-output-management config application is broken since the pre 0.17 code relied on the (now removed) output enable/disable event to be emitted as part of the state application. The old code was pretty smelly and hard to understand, I'm glad the upstream improvements pushed river's code in this directions.
2023-12-29gamma-control: track wlroots 0.17 changesIsaac Freund4-33/+80
2023-12-06deps: update to lastest zig-wlrootsIsaac Freund3-30/+22
This fixes a few issues with the XwaylandSurface bindings
2023-12-05build: fix comment on scanner.generate() versionsIsaac Freund1-2/+5
2023-12-05ci: fix arch and alpineIsaac Freund2-2/+4
2023-12-05Output: fix initial commit for wayland backendIsaac Freund1-6/+25
Also add some more logging
2023-12-05Root: fix faulty assertion, cleanupIsaac Freund2-12/+11
Thanks to tiosgz for prompting me to look at this more closely. There doesn't seem to be any compelling reason to use the wlr_scene_output_layout helper, it's simpler to just make the two necessary SceneOutput.setPosition() calls manually. This will hopefully be refactored down to a single call eventually as well.
2023-12-05Output: fix regression of initial mode logicIsaac Freund1-12/+22
This logic that looked pointless to me while doing the wlroots 0.17 upgrade is in fact important as tiosgz helpfully pointed out. It was added back in bc610c8b to address an issue. Hopefully the new comments stop me from trying to break it again :)
2023-12-05SceneNodeData: fix fromNode()Isaac Freund1-4/+8
This currently fails to check the node passed and skips directly to the parent.
2023-12-01build: update to wlroots 0.17Isaac Freund21-273/+237
2023-11-17session-lock: fix pointer focus handling on mapIsaac Freund2-9/+27
2023-11-14Cursor: fix high polling rate resize regressionIsaac Freund1-14/+24
The previous commit ended up clamping the accumulated f64 offset to an integer every frame, losing any sub-pixel cursor motions. This has been known to cause problems with high polling rate mice in the past. Return to the same approve the move cursor mode uses to solve this and accumulate a separate sub-pixel delta.
2023-11-13Cursor: clamp cursor movement to resize boundsIsaac Freund1-0/+4
Currently resizing a window allows moving the invisible "internal" cursor infinitely far off screen despite the fact that the window is bounded by the size constraints of the client and by the output dimensions. This means that attempting to resize past these bounds in one dimension will result in the "internal" cursor being far out of bounds and will require an equal movement in the opposite direction in order to continue resizing. Exposing this implementation detail of an invisible "internal" cursor separate from the rendered cursor is of course bad, so clamp it to the bounds of the resize.
2023-11-09View: handle map while no outputs are availableIsaac Freund2-20/+46
Currently views which are mapped while no outputs are available can never actually get rendered because they have 0 tags and are stuck in the hidden stack. This commit fixes this and they should now be restored when a new output becomes available.
2023-11-09keyboard: add the ability to load layout from fileIstván Donkó6-0/+50
2023-11-09river: remove dead codeIsaac Freund1-19/+0
This file has been dead since the refactor to use the wlroots scene graph deleted view_stack.zig
2023-11-08xdg-toplevel: ignore redundant move/resize requestsIsaac Freund1-2/+8
Such requests currently lead to an assertion failure. I don't know what changed in nautilus 45.0 that caused it to start doing this and I probably don't want to know.
2023-11-08rules: rename "tag" action to "tags"Isaac Freund6-85/+66
This rule action accepts and assigns a set of 32 tags represented as a 32 bit integer just like all of river's other commands handling tags. Using the singular here is potentially misleading and is also inconsistent with set-view-tags, etc. which all use the plural. Sorry about the breaking change for those who use master branch, ideally I would have caught this before merging but at least I noticed before a release. This commit also does a bit of internal refactoring/cleanup of the rules system.
2023-11-08river: add fullscreen rulepolykernel6-9/+34
This commit adds a fullscreen rule for configuring whether the view should be drawn fullscreen on start up. The actions "fullscreen" and "no-fullscreen" map to the two possible state of a view and semantically operate on the same rule list. The behavior of adding, deleting and listing rules follows that of float and ssd.
2023-11-08river: add position and dimensions rulespolykernel7-12/+104
This commit adds position and dimensions rules for configuring the initial position and dimensions of views. When a view is not matched by any position rules, it is centered in the avaliable output space matching the current behavior. If the provided position rule places the view outside of the output, the view's position is clamped to the output bounds (with respect to borders). When a view is not matched by any dimensions rules, no default dimensions is set by the server. If the provided dimensions rule exceeds the minimum or maximum width/height constraints of the view, the view's width/height is clamped to the constraints. Position and dimensions rules have no effect if a view is started fullscreen or is not floating. A view must be matched by a float rule in order for them to take effect.
2023-11-06pointer-constraints: fix assertion failureIsaac Freund1-2/+12
It is possible for the assertion in PointerConstraint.confine() to fail if a view with an active pointer constraint is, for example, resized using a keybinding such that the pointer is outside the constraint region. Handle this edge case by deactivating the constraint. The other option would be to warp the pointer to the nearest point still inside the constraint region. Deactivating the constraint is far simpler however and I don't expect this to be a UX pain point.
2023-11-03XdgToplevel: tweak fullscreen state policyIsaac Freund1-5/+2
Currently river only sends the fullscreen state to a maximum of one toplevel per output at a time and switching tags such that the fullscreen toplevel is not visible causes the fullscreen state to be removed. This may be technically correct, but it causes issues when programs like firefox trigger animations on fullscreen state change. This commit returns river's policy here to what we did back in 0.2 and leaves the xdg_toplevel fullscreen state set regardless of whether or not the toplevel is currently rendered as fullscreen or if there are other fullscreen toplevels.
2023-11-03Cursor: use inflight_mode as needed in updateState()Isaac Freund1-30/+49
This fixes possible assertion failures when quickly cancelling and starting a new move/resize. The following steps, take from the bug report, can currently reproduce the race: 1. Start with a window in tiled mode. 2. Begin resizing the window with your cursor. 3. Send the window back to tiled mode (with a keybind) and quickly begin resizing it again with your cursor.
2023-10-30riverctl(1): add a section on terminologytiosgz1-0/+15
It is not unusual to see people coming to river directly from X11, confused by some things being renamed (and by river having tags). Give them some basic help for reading the manpage and understanding our talk.
2023-10-26rivertile: eliminate an @intCast()Isaac Freund1-1/+1
It's pretty cool that the new @min() and @max() builtin semantics allow this.
2023-10-25DragIcon: set position on creationIsaac Freund3-20/+27
Currently if a drag icon is created but the cursor/touch point is not moved river will render the drag icon at 0,0 instead of the cursor/touch point location. This fixes that.