Commit Graph

1246 Commits

Author SHA1 Message Date
461cc96bd1 rivertile: add missing try to fix build 2021-05-01 12:54:57 +02:00
4684f9fa47 rivertile: add -h/--help, improve man page 2021-05-01 12:49:49 +02:00
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
ec2c50b33f deps: update to latest zig-wayland 2021-04-27 12:24:30 +02:00
1b6e6de99e example/init: use riverctl layout value commands 2021-04-27 11:43:45 +02:00
07fd1b86ca rivertile: support command line arguments
Add support for command line arguments to set default values for the
various options of rivertile, bringing us back to rough feature parity
with before the commit removing the river-options protocol.
2021-04-27 00:10:20 +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
891eb38b33 completions: delete more removed commands 2021-04-21 16:51:53 +02:00
967b274c01 completions: Remove completions for removed subcommand "layout" 2021-04-21 16:47:27 +02:00
924a4707b7 contrib: update layouts for river-layout and river-options
- Remove old layouts which no longer work.
- Add new C layout.
2021-04-20 18:27:03 +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
6d36846cdf README: add repology badge 2021-04-16 14:57:57 +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
e1048e6add build: clean up install prefix/config path derivation
This could be cleaned up even further with
https://github.com/ziglang/zig/pull/8329
2021-03-27 14:57:43 +01:00
e6f11fc5d2 Fix crash when layer surface dimensions or margins are unexpectedly large 2021-03-27 13:10:19 +01:00
e43e58432f riverctl: Do not use std.debug.print() 2021-03-27 12:17:47 +01:00
f99071f1da riverctl: Print error messages instead of error traces for common user mistakes 2021-03-27 12:17:47 +01:00
979e640507 build: fix config path if DESTDIR is set without --prefix 2021-03-22 12:10:10 +01:00
6438f193ae build: handle null install_prefix correctly 2021-03-22 11:54:51 +01:00
8627a2feff riverctl: add fish completion 2021-03-16 17:38:21 +01:00
bd604b0f47 Fix existing typos 2021-03-16 17:38:21 +01:00
c9a4dde331 completions: add zsh completion for riverctl 2021-03-14 17:31:59 +01:00
eb1dd401f8 Add bash completion for riverctl 2021-03-14 17:06:43 +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
aeeae92611 riverctl: add mod-option command 2021-02-09 22:53:17 +01:00
98d51f6d24 Use std.log instead of log.zig 2021-02-08 18:35:11 +01:00
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
96d460c477 riverctl: improve handling of null string options
Passing an empty string as the value argument for riverctl set-option or
declare-option will set the value to null. The riverctl get-option
command produces no output for both null and empty string values.

This is not perfect as it is unable to distinguish between null and
empty strings through the riverctl CLI. I don't see a better alternative
here however. Forbidding null strings in the river-options protocol
would be one solution, however null strings are useful and more pleasant
to use from code despite being problematic on the CLI.
2021-02-02 18:42:09 +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
afe1f197aa deps: update to lastest zig-wlroots 2021-01-25 12:33:15 +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