river: Automatically choose layout engine

Prefers filtile as layouting engine but falls back to rivertile if it
does not find it.
This commit is contained in:
Marty Oehme 2025-02-23 00:53:49 +01:00
parent 987e4459bf
commit dd62c8a2d0

View file

@ -3,11 +3,24 @@
mod="Mod4"
modemod="Mod1"
term=${TERMINAL:-foot}
layout="filtile"
time_to_lockscreen=300
time_to_screendim=600
time_to_suspend=900
layout_cmd="rivertile"
layout_opt="-main-ratio 0.65\
-outer-padding 0\
-view-padding 6"
if command -v filtile >/dev/null 2>&1; then
layout_cmd="filtile"
layout_opt="--tags all --output all main-ratio 0.65,\
--tags all --output all view-padding 6,\
--tags all --output all outer-padding 0,\
--tags all --output all smart-padding on,\
--tags all --output all smart-padding 0"
fi
NO_RESTART="$1"
should_start() { # 1=program binary name
# not running, start
@ -129,10 +142,10 @@ riverctl map normal $mod+Shift K swap previous
riverctl map normal $mod+Shift Return zoom
# change layout orientation
riverctl map normal $mod Up send-layout-cmd $layout "main-location top"
riverctl map normal $mod Right send-layout-cmd $layout "main-location right"
riverctl map normal $mod Down send-layout-cmd $layout "main-location bottom"
riverctl map normal $mod Left send-layout-cmd $layout "main-location left"
riverctl map normal $mod Up send-layout-cmd $layout_cmd "main-location top"
riverctl map normal $mod Right send-layout-cmd $layout_cmd "main-location right"
riverctl map normal $mod Down send-layout-cmd $layout_cmd "main-location bottom"
riverctl map normal $mod Left send-layout-cmd $layout_cmd "main-location left"
# snap views to screen edges
riverctl map normal $mod+Control H snap left
@ -143,8 +156,8 @@ riverctl map normal $mod+Control L snap right
# Mod+F to toggle fullscreen
riverctl map normal $mod F toggle-fullscreen
# if we are running filtile we also have access to monocle mode
if [ "$layout" = "filtile" ]; then
riverctl map normal $mod+Shift F spawn "riverctl send-layout-cmd $layout monocle"
if [ "$layout_cmd" = "filtile" ]; then
riverctl map normal $mod+Shift F spawn "riverctl send-layout-cmd $layout_cmd monocle"
fi
riverctl map normal $mod+Shift v toggle-float
@ -153,8 +166,8 @@ riverctl map normal $mod+Shift v toggle-float
# Make all connected outputs show the desktop and no windows at all
riverctl map normal $mod+Shift M spawn 'for i in $(wlopm | wc -l); do riverctl set-focused-tags $((1 << 10)); riverctl focus-output next; done; riverctl set-focused-tags $((1 << 10)); riverctl focus-output next'
riverctl map normal $mod+Shift F10 spawn "riverctl send-layout-cmd $layout '--tags all --output all view-padding 0'"
riverctl map normal $mod F10 spawn "riverctl send-layout-cmd $layout '--tags all --output all view-padding 6'"
riverctl map normal $mod+Shift F10 spawn "riverctl send-layout-cmd $layout_cmd '--tags all --output all view-padding 0'"
riverctl map normal $mod F10 spawn "riverctl send-layout-cmd $layout_cmd '--tags all --output all view-padding 6'"
# Mod + Left Mouse Button to move views
riverctl map-pointer normal $mod BTN_LEFT move-view
@ -179,11 +192,11 @@ riverctl map -repeat interact_float $mod J resize vertical 100
riverctl map -repeat interact_float $mod K resize vertical -100
riverctl map -repeat interact_float $mod L resize horizontal 100
# decrease/increase the main ratio of layout
riverctl map interact_float $mod+Shift H send-layout-cmd $layout "main-ratio -0.05"
riverctl map interact_float $mod+Shift L send-layout-cmd $layout "main-ratio +0.05"
riverctl map interact_float $mod+Shift H send-layout-cmd $layout_cmd "main-ratio -0.05"
riverctl map interact_float $mod+Shift L send-layout-cmd $layout_cmd "main-ratio +0.05"
# increment/decrement the main layout
riverctl map interact_float $mod+Shift J send-layout-cmd $layout "main-count +1"
riverctl map interact_float $mod+Shift K send-layout-cmd $layout "main-count -1"
riverctl map interact_float $mod+Shift J send-layout-cmd $layout_cmd "main-count +1"
riverctl map interact_float $mod+Shift K send-layout-cmd $layout_cmd "main-count -1"
# snap views to screen edges
riverctl map interact_float $mod+Control H snap left
riverctl map interact_float $mod+Control J snap down
@ -334,12 +347,8 @@ should_start wl-paste && riverctl spawn "wl-paste -t text --watch clipman store"
# killall polkit-gnome-authentication-agent-1
# /usr/lib/polkit-gnome/polkit-gnome-authentication-agent-1 &
# start layouting engine
killall $layout
riverctl spawn "$layout --tags all --output all main-ratio 0.65,\
--tags all --output all view-padding 6,\
--tags all --output all outer-padding 0,\
--tags all --output all smart-padding on,\
--tags all --output all smart-padding 0"
killall $layout_cmd
riverctl spawn "$layout_cmd $layout_opt"
# River will send the process group of the init executable SIGTERM on exit.
riverctl default-layout $layout
riverctl default-layout $layout_cmd
brightnessctl set 70%