Commit Graph

54 Commits

Author SHA1 Message Date
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
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
FollieHiyuki
bd604b0f47 Fix existing typos 2021-03-16 17:38:21 +01:00
Leon Henrik Plickat
aeeae92611
riverctl: add mod-option command 2021-02-09 22:53:17 +01:00
Isaac Freund
a8a70a3b04
riverctl: add -focused-output for option commands
This is more convenient for interactive usage and makes using the same
bindings across multiple outputs easy.
2021-02-07 19:17:31 +01:00
Leon Henrik Plickat
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
Isaac Freund
18bab45d4c riverctl: implement river-options interface
To make this cleaner, introduce some arg-parsing infrastructure that
will useful when porting riverctl to river-control-v2 in the future as
well.
2021-01-18 22:30:52 +01:00
Marten Ringwelski
30ba87fa15
command: Implement spawn-tagmask 2021-01-02 11:39:09 +01:00
Isaac Freund
c143864f3e
docs: fix riverctl man page syntax 2020-12-30 23:24:57 +01:00
Isaac Freund
0b2b736e5b
docs: fix syntax in riverctl man page 2020-12-30 23:14:23 +01:00
Isaac Freund
397f40e405
docs: Improve clarity of river/riverctl man pages 2020-12-30 23:10:41 +01:00
Isaac Freund
53d4c12d41
docs: improve startup and config information 2020-12-30 20:29:45 +01:00
Isaac Freund
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
Isaac Freund
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
Leon Henrik Plickat
0c5e5a7b4a doc: Remove outdated configuration instructions 2020-12-13 01:19:27 +01:00
Leon Henrik Plickat
f08d37ab28 doc: unify scdoc style
This unifies the style of the man page source files. Most noticable are
the now consistent line endings at 80 chars (assuming a tabwidth of 8).
2020-12-13 01:19:27 +01:00
Marten Ringwelski
49bf0e679f
focus-follow-cursor: Change output focus when needed 2020-12-07 13:51:06 +01:00
Bonicgamer
cbd4a2807b
control: implement set-repeat 2020-11-18 15:28:33 +01:00
Isaac Freund
ab5e2f79e0
doc: add AUTHORS section to man pages 2020-11-11 20:44:41 +01:00
Marten Ringwelski
9a2e11620c Implement unmap-pointer 2020-10-27 00:32:20 +01:00
Marten Ringwelski
882a271d81 Implement unmap 2020-10-27 00:32:20 +01:00
Marten Ringwelski
3f1b0dfaa9
control: implement swap 2020-10-25 12:41:19 +01:00
Leon Henrik Plickat
03a2da9690 Introduce mode "locked"
This mode is automatically entered when the screen is locked.
2020-10-19 16:00:17 +02:00
Leon Henrik Plickat
4b4f7c464c Allow "None" as modifier string for bindings without modifiers
This is more userfriendly than the empty string approach.
2020-10-18 16:36:11 +02:00
Leon Henrik Plickat
b2f13f5bcc Implement "move", "snap" and "resize" commands 2020-10-07 21:03:59 +02:00
Leon Henrik Plickat
b67ea748a3 Implement configurable view opacity with fade effect 2020-10-05 23:03:57 +02:00
Marten Ringwelski
c95c0416d5 docs: focus-follows-cursor fix options to be bold 2020-09-15 17:44:06 +02:00
Marten Ringwelski
52cd871151 Implement map -release 2020-09-15 15:58:54 +02:00
Marten Ringwelski
7e02fb679c Implement focus-follows-cursor 2020-09-15 15:15:55 +02:00
Isaac Freund
989e7aaeda
config: implement map-pointer command
This command takes a mode, modifiers, button/event name, and pointer
action as arguments. It stores these in the config data structure.

The currently available pointer actions are move-view and resize-view,
which replace the previously hard-coded functionality.

Closing the hovered view with middle click has temorarily been removed
until it is decided if we wish to make this another special pointer
action or perhaps allow running any arbitrary command (which would of
course include close).
2020-08-24 18:57:43 +02:00
Leon Henrik Plickat
59d6432332 Implement "attach-mode" 2020-08-18 11:00:51 +02:00
Lennard Hofmann
3e17f12cbb doc: shorten riverctl’s synopsis
The set-option command got removed but was still present in SYNOPSIS,
which confused me. It is not the first time, we forgot to update it.
2020-08-01 12:36:52 +02:00
Leon Henrik Plickat
a93c263502 Implement csd-filter-add and float-filter-add commands 2020-07-16 21:24:08 +02:00
Isaac Freund
2b2b78dd4d
command: split set-option into "toplevel" commands
`riverctl set-option view_padding 10` becomes `riverctl view-padding 10`

Having set-option doesn't really gain us anything and is more verbose as
well as being slightly inaccurate as the changes instantly apply.
2020-07-15 12:42:20 +02:00
Isaac Freund
6bdb152808
cursor: make xcursor theme configurable
- add a new command to set the theme
- export the theme of the default seat through environment variables
2020-07-14 17:34:29 +02:00
Isaac Freund
3752a7879b
server: send SIGTERM to startup process on exit 2020-07-05 15:44:21 +02:00
Isaac Freund
5474b656ee
docs: add toggle-fullscreen 2020-06-29 01:50:26 +02:00
Isaac Freund
ebc661f4a7
command: add background_color option
This is trivial to support and allows basic customization without
running a layer-shell program such as swaybg. This is especially useful
in low memory situations.
2020-06-19 18:44:28 +02:00
Lennard Hofmann
1cc02603b2 docs: small man pages fixes and updates
- Previous hard-coded settings can be now be changes with riverctl or
  via environment variables
- Update "See also"
- Mod → Mod1
2020-06-17 12:14:23 +02:00
Isaac Freund
0efc04508b
cli: allow setting log level with '-l' flag 2020-06-17 02:01:07 +02:00
Isaac Freund
751760287c
docs: add rivertile man page 2020-06-16 17:06:24 +02:00
Leon Henrik Plickat
ec0631dcef Doc: Add layout documentation 2020-06-16 15:48:53 +02:00
Lennard Hofmann
b2986fedd5 docs: use scdoc instead of roff for man pages 2020-06-15 13:23:17 +02:00
Isaac Freund
c2d32a44c3
command: add view_padding option 2020-06-13 13:32:35 +02:00
Isaac Freund
4f029aa5c7
command: allow alpha in colors, simplify code 2020-06-13 13:09:43 +02:00
Isaac Freund
40c62577e1
code: simplify option handling 2020-06-13 12:14:36 +02:00
lazy-dolphin
efe2c2ce4b command: add border_focused_color and border_unfocused_color options 2020-06-13 11:53:39 +02:00