~novakane/rivercarro

A layout generator for river Wayland compositor
17 days ago
19 days ago

#Rivercarro

A slightly modified version of rivertile layout generator for river

Compared to rivertile, rivercarro adds:

  • Monocle layout, views will takes all the usable area on the screen.
  • Gaps instead of padding around views or layout area.
  • Modify gaps size at runtime.
  • Smart gaps, if there is only one view, gaps will be disable.
  • Limit the width of the usable area of the screen.
  • Per tag configurations.
  • Cycle through layout.

#Building

Same requirements as river, use zig 0.11, if river and rivertile works on your machine you shouldn't have any problems.

Init submodules:

git submodule update --init

Build, e.g.

zig build -Doptimize=ReleaseSafe --prefix ~/.local

#Usage

Works exactly as rivertile, you can just replace rivertile name by rivercarro in your config, and read rivercarro(1) man page for commands specific to rivercarro.

e.g. In your river init (usually $XDG_CONFIG_HOME/river/init)

# Mod+H and Mod+L to decrease/increase the main ratio of rivercarro
riverctl map normal $mod H send-layout-cmd rivercarro "main-ratio -0.05"
riverctl map normal $mod L send-layout-cmd rivercarro "main-ratio +0.05"

# Mod+Shift+H and Mod+Shift+L to increment/decrement the main count of rivercarro
riverctl map normal $mod+Shift H send-layout-cmd rivercarro "main-count +1"
riverctl map normal $mod+Shift L send-layout-cmd rivercarro "main-count -1"

# Mod+{Up,Right,Down,Left} to change layout orientation
riverctl map normal $mod Up    send-layout-cmd rivercarro "main-location top"
riverctl map normal $mod Right send-layout-cmd rivercarro "main-location right"
riverctl map normal $mod Down  send-layout-cmd rivercarro "main-location bottom"
riverctl map normal $mod Left  send-layout-cmd rivercarro "main-location left"
# And for monocle
riverctl map normal $mod M     send-layout-cmd rivercarro "main-location monocle"
# Cycle through layout
riverctl map normal $mod W     send-layout-cmd rivercarro "main-location-cycle left,monocle"

# Add others rivercarro's commands the same way with the keybinds you'd like.
# e.g.
# riverctl map normal $mod <keys> send-layout-cmd rivercarro "inner-gaps -1"
# riverctl map normal $mod <keys> send-layout-cmd rivercarro "inner-gaps +1"
# riverctl map normal $mod <keys> send-layout-cmd rivercarro "outer-gaps -1"
# riverctl map normal $mod <keys> send-layout-cmd rivercarro "outer-gaps +1"
# riverctl map normal $mod <keys> send-layout-cmd rivercarro "width-ratio -0.1"
# riverctl map normal $mod <keys> send-layout-cmd rivercarro "width-ratio +0.1"

# Set the default layout generator to be rivercarro and start it.
# River will send the process group of the init executable SIGTERM on exit.
riverctl default-layout rivercarro
rivercarro -outer-gaps 0 -per-tag &

#Contributing

See CONTRIBUTING.md

You can also found me on IRC irc.libera.chat as novakane, mostly on #river.

#Thanks

Thanks to Isaac Freund and Leon Henrik Plickat for river obviously, for rivertile, most of rivercarro code comes from them, and for always answering my many questions!

#License

rivercarro is licensed under the GNU General Public License v3.0 or later

Files in common/ and protocol/ directories are released under various licenses by various parties. You should refer to the copyright block of each files for the licensing information.