Commit Graph

34 Commits

Author SHA1 Message Date
MaxVerevkin
174546615c
river-control: mark callback events as destructors 2022-12-31 23:22:47 +01:00
Aiz
76000c3603 river-status: fix typo in layout_name_clear description 2022-12-02 14:43:09 +01:00
Isaac Freund
4af7a3cb63
river-layout: fix version of layout_name events 2022-12-01 16:10:08 +01:00
Leon Henrik Plickat
b8e2ee2a0c
river-status: expose current layout name 2022-12-01 15:51:00 +01:00
Leon Henrik Plickat
844ffce037
river-layout: add user_command_tags event
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-16 13:40:07 +02:00
Isaac Freund
d657dc791b
river-status: add mode event to seat status
This allows clients such as a status bar to display the currently active
mode.
2022-06-01 00:15:09 +02:00
novakane
e59c2a73d7 river: implement xdg-activation-v1
- add a new "urgent" border color
- add a new event to river-status-unstable-v1

Co-authored-by: Isaac Freund <ifreund@ifreund.xyz>
2021-08-19 12:58:52 +00:00
Isaac Freund
295f965f91
river-layout: fix typo in protocol 2021-08-02 15:58:56 +02:00
Isaac Freund
b7d330c0da
river-layout: make minor copyediting fixes 2021-07-22 11:45:46 +02:00
Isaac Freund
2635f3299a
river-layout: update to v3
- Remove advertise_view and advertise_done events. Using the information
provided by these for any purpose would make the layout far less
predictable. Futhermore, in the months this has been available for use,
to my knowledge nobody has actually used it for anything useful.

- Replace the set/mod layout value events with a single user_command
event. This simplifies the protocol and is more flexible for clients.

- Add a layout_name argument to the commit request. This name is an
arbitrary, user-facing string that might, for example, be displayed by a
status bar. This was present in early drafts of the protocol, but was
removed in favor of river-options. Since river-options itself has since
been removed and this feature is nice to have, re-add it.

- Rename main factor to main ratio in rivertile. The "factor" name was
just legacy from dwm, "ratio" is much more accurate.
2021-07-20 10:48:11 +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
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
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
Isaac Freund
9e3e92050e
river: update for wlroots 0.13.0 2021-04-08 00:21:17 +02:00
Isaac Freund
421c403cf5
river-option: compositor may ignore set requests
This allows the compositor to restrict options to a certain set of
values, which can be desirable if the options affect compositor
behavior.

This was always the intended behavior of the protocol, but now it is
explicitly stated.
2021-01-18 01:34:06 +01:00
Isaac Freund
875e3c325d river-options: create protocol 2021-01-16 23:51:15 +01:00
Isaac Freund
f80992e329
meta: make copyright headers more maintainable
- list all files as copyright "The River Developers"
- add an AUTHORS file to acknowledge contributors
2020-11-11 20:33:43 +01:00
Marten Ringwelski
d821f6b0dc Implement wlr-output-power-management-unstable-v1 protocol 2020-10-31 19:11:22 +01:00
Isaac Freund
11a46b80e0
meta: update layer shell xml 2020-07-28 12:32:56 +02:00
Isaac Freund
2f0bd157e3
river-status: note that wl_outputs must be bound 2020-07-24 17:53:53 +02:00
Isaac Freund
e7bf1940da
river-control: send output on success, fix issues
Add an output arg to the success event on the callback. This allows for
implementing commands that return values, which are planned.

Replace the array of null terminated strings with a series of requests
each adding a single string to the args array. This is more idiomatic
wayland.

Add a seat argument to the run_command request to allow for proper
multi-seat support in the future.

Add missing destructor request.
2020-06-16 18:27:40 +02:00
Isaac Freund
b88443d62c
org: unify gitignore 2020-06-15 13:42:32 +02:00
Isaac Freund
e8aaadb228
river-status: add seat status object 2020-06-04 16:55:28 +02:00
Isaac Freund
a6e6e47af9
river-status: fix typo 2020-06-03 13:25:00 +02:00
Isaac Freund
9c270c5918
river-status: create an object for each output 2020-06-03 12:56:03 +02:00
Isaac Freund
b69196aafa
Define the river status protocol
This is a refinement of the now obsolete river-window-management
protocol which has been deleted.
2020-06-03 01:44:07 +02:00
Isaac Freund
d83cbf55d1 Split control into separate protocol 2020-05-24 21:01:11 +02:00
Isaac Freund
4d68043045 Add callback to command request for error handling 2020-05-24 19:23:55 +02:00
Isaac Freund
569308d91b
Implement sending command from riverctl
These commands are successfully received by the server, but not yet
executed.
2020-05-19 20:53:26 +02:00
Isaac Freund
82d74d938c
Sketch out river-window-management protocol 2020-05-19 11:22:51 +02:00
Isaac Freund
57a811583c
Move protocol scanning to build.zig 2020-04-12 13:37:18 +02:00
Isaac Freund
86c486bf2d
Import layer shell protocol 2020-04-09 13:18:52 +02:00
Isaac Freund
6646826386
Initial commit 2020-03-19 16:29:22 +01:00