aboutsummaryrefslogtreecommitdiff
AgeCommit message (Collapse)AuthorFilesLines
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.
2023-10-25editorconfig: reflect state of bash completiontiosgz1-0/+4
2023-10-25completions/bash: complete input devices, fix typostiosgz1-1/+3
2023-10-25completions/fish: partial overhaultiosgz1-97/+108
Try to fix -h and -version. Remove seemingly superfluous -x everywhere, only use one -f. Use -o for options. Update input devices listing. Deduplicate some args. Try to do better for rule-add and rule-del.
2023-10-25docs: update PACKAGING.md for Zig 0.11Isaac Freund1-11/+12
2023-10-21docs: explain unknown info in output identifiersIsaac Freund1-1/+2
2023-10-19river: add outputs ruleDoclic8-23/+77
2023-10-19river: make RuleList return deleted itemsDoclic2-6/+6
2023-10-18completions/zsh: Fix incomplete input namesHugo Machet1-1/+1
Input name with ':' in it were not suggested entirely.
2023-10-18completions: Rewrite zshHugo Machet1-98/+98
- Fix some completions that never really worked correctly, e.g `riverctl input` didn't take the input name into account. Same with rule that didn't take into account glob. - Add a lot of documentation to help people adding new commands. - Add new rule-[add|del] order. - `riverctl input` now autocomplete input name from `riverctl list-inputs`
2023-10-17Cursor: use total delta for resize calculationIsaac Freund1-46/+53
This means that interactive resize speed is no longer throttled by the speed at which the client commits new buffers. Interactive resize speed is now determined entirely by how fast the pointer input device is moved by the user. This may result in more subjectively "choppy" resizes for clients that commit very slowly, but it should be less sluggish at least.