442 Commits

Author SHA1 Message Date
Isaac Freund
37251c8758
output: handle OutputDamage destroy
This may be destroyed before our output destroy listener is called.
2021-06-14 22:17:01 +00:00
Isaac Freund
20eb94317a
root: simplify noop output handling
Instead of removing the listeners of the noop output early, simply never
add them.
2021-06-14 21:52:44 +00:00
Leon Henrik Plickat
a267262a17 Add list-input-configs command 2021-06-13 10:37:36 -07:00
Leon Henrik Plickat
3f4fd97b6e Add list-inputs command 2021-06-13 10:37:36 -07:00
Leon Henrik Plickat
833248e805 Add basic input configuration 2021-06-13 10:37:36 -07:00
Isaac Freund
88410cc2b8
output: destroy Layouts on Output removal
The Layout struct holds a pointer to the Output which becomes invalid
when the Output is destroyed so we must ensure all the layouts of an
Output are destroyed first.
2021-06-09 20:03:19 +00:00
novakane
2e7c1dbe6a config: make attach-mode global 2021-06-08 18:26:36 +00:00
novakane
75814eb876 view_stack: update tests for zig 0.8.0 2021-06-08 18:25:43 +00:00
Isaac Freund
68267a4cfe
river: don't extend timeout on transaction preemption
This avoids locking up the compositor if a client is unresponsive and
the user continuously initiates new transactions through their actions.
2021-06-08 15:18:45 +00:00
Isaac Freund
e90474657f
view: send activated/fullscreen configures immediately
The transaction system exists to coordinate size changes of all views
in a layout in order to achieve frame perfection. Since many clients
do not need to commit a new buffer in response to a activated state
change alone, this breaks things when such a configure event is tracked
by the transaction system. Instead, simply send activated and fullscreen
configures right away but still track this state in a double-buffered
way so that e.g. border color changes based on focus are frame-perfect.

This also fixes a related issue with the transaction system where views
that did not need to commit in response to our first configure were not
rendered until their next frame.
2021-06-08 06:00:15 +00:00
Isaac Freund
021fd8f376
code: remove now unnecessary zig fmt directives
zig fmt does what we want since zig 0.8.0
2021-06-08 03:20:56 +00:00
Isaac Freund
1bacaa5b43
view: get rid of notifyConfiguredOrApplyPending()
This function is only called in one place, just inline the code.
2021-06-08 02:56:19 +00:00
Isaac Freund
cef6d5a0be
render: fix damage tracking of drag icons 2021-06-07 18:34:54 +00:00
Isaac Freund
0e9dc089d1
render: track subsurfaces created before role assignment 2021-06-05 19:30:43 +00:00
Isaac Freund
c0a2286847
code: update to zig 0.8.0 2021-06-05 17:29:58 +00:00
Isaac Freund
ca4abd261f
xdg-toplevel: remove set_app_id listener 2021-05-31 15:46:39 +00:00
Isaac Freund
acaf192465
render: actually damage output on view opacity change 2021-05-31 15:21:42 +00:00
Isaac Freund
9ee788b65e
render: damage output on view opacity change 2021-05-31 01:00:49 +00:00
Isaac Freund
13f01bcb4b render: do basic yes/no damage tracking 2021-05-24 16:43:21 +02:00
Leon Henrik Plickat
6333e465d2 Allow changing output focus with pointer 2021-05-19 14:15:28 +02:00
Isaac Freund
c8b1017923
river: remove Seat.input_manager
This is no longer needed as server is global.
2021-05-13 15:13:17 +02:00
Isaac Freund
50cdcf3ee4
river: remove all stored *Root pointers
These are no longer needed as server is global.
2021-05-13 15:08:53 +02:00
Isaac Freund
3d031631c7
river: remove misc stored *Server pointers
These are no longer needed as server is now global.
2021-05-13 15:06:00 +02:00
Isaac Freund
ece465b7ed
river: remove InputManager.server
The server is now global so this is no longer needed.
2021-05-13 14:53:08 +02:00
Isaac Freund
ac27db236a
river: remove Output.root
The server is now global so this is no longer needed.
2021-05-13 14:35:36 +02:00
Isaac Freund
89e0d4c083
river: remove Root.server
The server is now global so this is no longer needed.
2021-05-13 14:26:27 +02:00
Isaac Freund
271b1563a8
river: make server a global variable 2021-05-13 14:25:34 +02:00
Isaac Freund
7ccb4794c9 river: always render floating views above layout views 2021-05-05 15:54:52 +02:00
Isaac Freund
0c8e718d95
cursor: handle popup subsurfaces properly
I added the required functions in wlroots 0.13.0, so use them.
2021-04-27 18:56:06 +02:00
Isaac Freund
e80b883a47 river-layout: update to v2
This implements the changes to the river-layout protocol proposed
in the previous commit removing river-options.
2021-04-27 00:10:20 +02:00
Isaac Freund
871fc7c8de river-options: remove protocol
This protocol involves far too much accidental complexity. The original
motivating use-case was to provide a convenient way to send arbitrary
data to layout clients at runtime in order to avoid layout clients
needing to implement their own IPC and do this over a side-channel.
Instead of implementing a quite complex but still rigid options protocol
and storing this state in the compositor, instead we will simply add
events to the layout protocol to support this use case.

Consider the status quo event sequence:

1. send get_option_handle request (riverctl)
2. roundtrip waiting for first event (riverctl)
3. send set_foo_value request (riverctl)
4. receive set_foo_value request (river)
5. send foo_value event to all current handles (river)
6. receive foo_value event (rivertile)
7. send parameters_changed request (rivertile)
8. receive parameters_changed request (river)
9. send layout_demand (river)

And compare with the event sequence after the proposed change:

1. send set_foo_value request (riverctl)
2. receive set_foo_value request (river)
3. send set_foo_value event (river)
4. send layout_demand (river)

This requires *much* less back and forth between the server and clients
and is clearly much simpler.
2021-04-27 00:10:20 +02:00
Isaac Freund
a6f908d7eb river: get rid of all server-created options
- Replace the layout option with new default-layout and output-layout
commands.
- Remove the ability to get/set the output title entirely.
2021-04-27 00:10:20 +02:00
novakne
84f5283889 pixman: update and fix PointerConstraint 2021-04-22 10:33:28 +02:00
Isaac Freund
d08032d685 river-options: rework, bump to v2
Options are now all global but may be overridden per-output. If an
output local value is requested but none has been set, the global value
is provided instead. This makes for much better ergonomics when
configuring layout related options in particular.
2021-04-20 18:27:03 +02:00
Isaac Freund
33fb7725c5 river: send SIGTERM to init command process group
Run the init command in a new process group and send SIGTERM to the
entire group on exit. Without doing this, only the sh invocation used
for the `sh -c` would receive SIGTERM.

This is particularly useful when starting a per-session server manager
as the init command.
2021-04-20 18:27:03 +02:00
Leon Henrik Plickat
f72656b72e river-layout: create and implement protocol
Replace the current layout mechanism based on passing args to a child
process and parsing it's stdout with a new wayland protocol. This much
more robust and allows for more featureful layout generators.

Co-authored-by: Isaac Freund <ifreund@ifreund.xyz>
2021-04-20 18:27:03 +02:00
novakne
df3e993013 river: fix to work with latest zig-pixman 2021-04-20 13:14:45 +02:00
Isaac Freund
9e3e92050e
river: update for wlroots 0.13.0 2021-04-08 00:21:17 +02:00
Isaac Freund
3c1f1df0c0
render: don't schedule new frame on output commit failure
This reverts commit c457b12cf3c2040f37f9322095a20ad16a15b337.

This attempted workaround seems to work fine if the output commit only
fails with EBUSY, but enters an infinite loop otherwise.
2021-03-28 13:55:22 +02:00
Qiu
c457b12cf3
render: schedule new frame on output commit failure
This seems to fix issues with rendering freezing described in
https://github.com/ifreund/river/issues/153.
2021-03-27 16:17:24 +01:00
Leon Henrik Plickat
e6f11fc5d2 Fix crash when layer surface dimensions or margins are unexpectedly large 2021-03-27 13:10:19 +01:00
Isaac Freund
27cac16ced
build: fix if wlroots x11 backend is disabled 2021-03-01 14:54:36 +01:00
Bonicgamer
26b0acddb7 river: pointer-constraints and relative-pointer 2021-02-22 14:47:31 +01:00
Isaac Freund
4beb39920a
river-control: fix various bugs
It kinda shows that this was the first protocol I ever implemented
server-side:

- Use client as well as ID for keys in the hashmap as IDs might
  (and will) be the same between clients.
- Clear saved args after running a command.
2021-02-19 19:58:44 +01:00
Isaac Freund
3d66cbd2d4
toplevel-management: send output enter on map 2021-02-17 22:01:45 +01:00
Leon Henrik Plickat
5887d54f04 Deny move/resize requests from tiled XdgToplevel Views 2021-02-17 14:42:23 +01:00
Marten Ringwelski
870f0b746e Implement pointer-gestures-unstable-v1 2021-02-15 18:18:18 +01:00
Isaac Freund
6470d8c776
command: silently ignore re-declaring a mode
This change is made in the interest of allowing users to simply re-run
their init script at runtime without errors. Making this an error
doesn't really gain us anything.
2021-02-14 18:13:15 +01:00
Isaac Freund
5c0be25142
command: allow map/map-pointer overwrite existing
The ergonomics of remapping keys are currently quite bad as unmap
must first be called for every mapping before defining a new one.
Any benefit that might be gained by the current strictness of map/
map-pointer is outweighed by this fact.

In a similar spirit, silently ignore unmapping a non-existent mapping.
2021-02-14 18:08:55 +01:00
Isaac Freund
fb7d50a019
xdg shell: use XdgSurface.getGeometry()
This is important to use instead of direct access as clients are not
strictly required to set a geometry, in which caese the dimensions
of the wl_surface are used instead.
2021-02-14 16:55:24 +01:00