Commit Graph

264 Commits

Author SHA1 Message Date
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
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
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
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
84f5283889 pixman: update and fix PointerConstraint 2021-04-22 10:33:28 +02:00
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
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
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
df3e993013 river: fix to work with latest zig-pixman 2021-04-20 13:14:45 +02:00
9e3e92050e river: update for wlroots 0.13.0 2021-04-08 00:21:17 +02:00
3c1f1df0c0 render: don't schedule new frame on output commit failure
This reverts commit c457b12cf3.

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
e6f11fc5d2 Fix crash when layer surface dimensions or margins are unexpectedly large 2021-03-27 13:10:19 +01:00
27cac16ced build: fix if wlroots x11 backend is disabled 2021-03-01 14:54:36 +01:00
26b0acddb7 river: pointer-constraints and relative-pointer 2021-02-22 14:47:31 +01:00
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
3d66cbd2d4 toplevel-management: send output enter on map 2021-02-17 22:01:45 +01:00
5887d54f04 Deny move/resize requests from tiled XdgToplevel Views 2021-02-17 14:42:23 +01:00
870f0b746e Implement pointer-gestures-unstable-v1 2021-02-15 18:18:18 +01:00
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
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
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
945b7dc986 swap: use correct direction for it_wrap
Always using .forward results in a crash when running `swap previous` on
the first view in stack which should be wrapped.
2021-02-10 10:53:00 +01:00
98d51f6d24 Use std.log instead of log.zig 2021-02-08 18:35:11 +01:00
1834bd4bd0 river-options: fix setting null string options 2021-02-02 18:16:36 +01:00
7029a5cd3e output: add output_title default option
Outputs now have a default option, "output_title". If this changes, the
outputs title is set to the option value. This title is currently only
relevant when run nested in a wayland/X11 session.

Co-authored-by: Isaac Freund <ifreund@ifreund.xyz>
2021-02-02 01:14:06 +01:00
5e09b853f7 xwayland: allow setting size if unmapped/floating
This effectively allows unmapped and floating xwayland views to set
their own dimensions, which seems to make some popups less broken.
2021-01-31 18:24:21 +01:00
cd005e15f8 river-options: free options of destroyed outputs
This is done when river's internal Output struct is destroyed, not when
the advertised wl_output global is removed. This means that options will
persist when an output is disabled and re-enabled.
2021-01-21 10:43:18 +01:00
8cbccbfb6e river-options: implement 2021-01-16 23:51:15 +01:00
a586c1ad71 code: remove unneeded c.zig @import()s 2021-01-12 10:28:11 +01:00
41e52065cc cursor: ensure output focus before focusing layer 2021-01-08 22:27:52 +01:00
a029105f15 cursor: focus output before view on follow cursor 2021-01-08 10:58:08 +01:00
7249f5c9c3 xwayland: use layout coords for configures 2021-01-07 22:15:42 +01:00
11e1c4791f XwaylandUnmanaged: remove dead code 2021-01-07 21:48:55 +01:00
e7442e53c1 XdgPopup: fix unconstrainFromBox coordinates 2021-01-07 21:22:11 +01:00
a672738603 render: iterate subsurfaces of popups manually
wlr_xdg_surface_for_each_popup() fails to do this and
wlr_xdg_surface_for_each_popup_surface() is not yet merged, so implement
a workaround for now.
2021-01-07 16:11:48 +01:00
b468f0aa85 cursor: fix down mode motion event coords
These are required to be surface local and we need to take the output's
layout coords into account as the cursor itself is in layout coords.
2021-01-07 11:19:22 +01:00
751b63f6fa render: pass Output by constant pointer
This is semantically what we want as we store a pointer to the output in
the SurfaceRenderData struct.
2021-01-06 17:53:04 +01:00
b73cb7bb69 render: draw popups over borders 2021-01-05 20:05:35 +01:00
30ba87fa15 command: Implement spawn-tagmask 2021-01-02 11:39:09 +01:00
75588a553c build: derive default config path from install prefix
- Add `default_config_path` build option for the river executable
2021-01-01 23:23:44 +01:00
d2e2dad09c view: fix build with xwayland disabled 2021-01-01 13:34:19 +01:00
a2ef687e51 view: fix handling of title/app_id change 2021-01-01 13:29:57 +01:00
4984944c60 Config: move opacity settings to sub struct 2020-12-31 15:52:03 +01:00
cc08be2dee code: clean up listener initialization 2020-12-31 15:35:35 +01:00
ba9df86472 command: s/master/main/g (breaking change)
main is a better term to use here for several reasons:

1. It is more accurate: "master" implies that the designated views have
some kind of control over the other views, which is not the case. "main"
better expresses that the difference between the "main" view and others
is one of importance/focus.

2. It is a shorter word. 2 whole characters saved!

3. It reduces the chance of future development time being lost to
good-intentioned people complaining about usage of the word master as
has recently happened with regards to the default git branch name.
2020-12-30 18:15:47 +01:00
5f4ba06566 docs: improve explanation of tags
"tagmask" is a misleading term as the arguments are used much more like
a set of tags than a mask.
2020-12-30 14:25:37 +01:00
ac20f5aa1d root: improve handling of 0 -> 1 output transition
Recover more gracefully from being hotplugged down to 0 outputs and then
gaining a new one. Move all views to the new output and restore the
focused output tags of the last output to be removed.
2020-12-30 13:19:40 +01:00
a098bbe03a root: stop tracking xwayland views in transactions
Frame perfection for xwayland views would require too much complexity
to support and would bleed all over the codebase.
2020-12-29 20:38:30 +01:00
055fba5c3c cursor: fix motion coords sent in down mode
We need to subtract the coords of the actual surface as they may not
alingn with the current box if using CSD.
2020-12-27 16:11:52 +01:00