2020-06-01 11:45:40 -07:00
|
|
|
#!/bin/sh
|
|
|
|
|
2021-04-14 15:28:39 -07:00
|
|
|
# This is the example configuration file for river.
|
2020-12-30 11:29:28 -08:00
|
|
|
#
|
|
|
|
# If you wish to edit this, you will probably want to copy it to
|
|
|
|
# $XDG_CONFIG_HOME/river/init or $HOME/.config/river/init first.
|
|
|
|
#
|
2021-05-02 13:08:26 -07:00
|
|
|
# See the river(1), riverctl(1), and rivertile(1) man pages for complete
|
2021-04-14 15:28:39 -07:00
|
|
|
# documentation.
|
2020-12-30 11:29:28 -08:00
|
|
|
|
2022-01-17 04:15:15 -08:00
|
|
|
# Note: the "Super" modifier is also known as Logo, GUI, Windows, Mod4, etc.
|
2020-06-01 11:45:40 -07:00
|
|
|
|
2022-01-17 04:15:15 -08:00
|
|
|
# Super+Shift+Return to start an instance of foot (https://codeberg.org/dnkl/foot)
|
|
|
|
riverctl map normal Super+Shift Return spawn foot
|
2020-06-01 11:45:40 -07:00
|
|
|
|
2022-01-17 04:15:15 -08:00
|
|
|
# Super+Q to close the focused view
|
|
|
|
riverctl map normal Super Q close
|
2020-06-01 11:45:40 -07:00
|
|
|
|
2022-01-17 04:15:15 -08:00
|
|
|
# Super+Shift+E to exit river
|
|
|
|
riverctl map normal Super+Shift E exit
|
2020-06-01 11:45:40 -07:00
|
|
|
|
2022-01-17 04:15:15 -08:00
|
|
|
# Super+J and Super+K to focus the next/previous view in the layout stack
|
|
|
|
riverctl map normal Super J focus-view next
|
|
|
|
riverctl map normal Super K focus-view previous
|
2020-06-01 11:45:40 -07:00
|
|
|
|
2022-01-17 04:15:15 -08:00
|
|
|
# Super+Shift+J and Super+Shift+K to swap the focused view with the next/previous
|
2020-10-25 09:31:10 -07:00
|
|
|
# view in the layout stack
|
2022-01-17 04:15:15 -08:00
|
|
|
riverctl map normal Super+Shift J swap next
|
|
|
|
riverctl map normal Super+Shift K swap previous
|
2020-10-25 09:31:10 -07:00
|
|
|
|
2022-01-17 04:15:15 -08:00
|
|
|
# Super+Period and Super+Comma to focus the next/previous output
|
|
|
|
riverctl map normal Super Period focus-output next
|
|
|
|
riverctl map normal Super Comma focus-output previous
|
2020-06-01 11:45:40 -07:00
|
|
|
|
2022-01-17 04:15:15 -08:00
|
|
|
# Super+Shift+{Period,Comma} to send the focused view to the next/previous output
|
|
|
|
riverctl map normal Super+Shift Period send-to-output next
|
|
|
|
riverctl map normal Super+Shift Comma send-to-output previous
|
2020-06-01 11:45:40 -07:00
|
|
|
|
2022-01-17 04:15:15 -08:00
|
|
|
# Super+Return to bump the focused view to the top of the layout stack
|
|
|
|
riverctl map normal Super Return zoom
|
2020-06-01 11:45:40 -07:00
|
|
|
|
2022-01-17 04:15:15 -08:00
|
|
|
# Super+H and Super+L to decrease/increase the main ratio of rivertile(1)
|
|
|
|
riverctl map normal Super H send-layout-cmd rivertile "main-ratio -0.05"
|
|
|
|
riverctl map normal Super L send-layout-cmd rivertile "main-ratio +0.05"
|
2021-04-14 15:28:39 -07:00
|
|
|
|
2022-01-17 04:15:15 -08:00
|
|
|
# Super+Shift+H and Super+Shift+L to increment/decrement the main count of rivertile(1)
|
|
|
|
riverctl map normal Super+Shift H send-layout-cmd rivertile "main-count +1"
|
|
|
|
riverctl map normal Super+Shift L send-layout-cmd rivertile "main-count -1"
|
2021-04-14 15:28:39 -07:00
|
|
|
|
2022-01-17 04:15:15 -08:00
|
|
|
# Super+Alt+{H,J,K,L} to move views
|
|
|
|
riverctl map normal Super+Alt H move left 100
|
|
|
|
riverctl map normal Super+Alt J move down 100
|
|
|
|
riverctl map normal Super+Alt K move up 100
|
|
|
|
riverctl map normal Super+Alt L move right 100
|
2020-10-06 18:00:57 -07:00
|
|
|
|
2022-01-17 04:15:15 -08:00
|
|
|
# Super+Alt+Control+{H,J,K,L} to snap views to screen edges
|
|
|
|
riverctl map normal Super+Alt+Control H snap left
|
|
|
|
riverctl map normal Super+Alt+Control J snap down
|
|
|
|
riverctl map normal Super+Alt+Control K snap up
|
|
|
|
riverctl map normal Super+Alt+Control L snap right
|
2020-10-06 18:00:57 -07:00
|
|
|
|
2022-05-24 14:23:45 -07:00
|
|
|
# Super+Alt+Shift+{H,J,K,L} to resize views
|
2022-01-17 04:15:15 -08:00
|
|
|
riverctl map normal Super+Alt+Shift H resize horizontal -100
|
|
|
|
riverctl map normal Super+Alt+Shift J resize vertical 100
|
|
|
|
riverctl map normal Super+Alt+Shift K resize vertical -100
|
|
|
|
riverctl map normal Super+Alt+Shift L resize horizontal 100
|
2020-10-06 18:00:57 -07:00
|
|
|
|
2022-01-17 04:15:15 -08:00
|
|
|
# Super + Left Mouse Button to move views
|
|
|
|
riverctl map-pointer normal Super BTN_LEFT move-view
|
2020-08-24 05:52:47 -07:00
|
|
|
|
2022-01-17 04:15:15 -08:00
|
|
|
# Super + Right Mouse Button to resize views
|
|
|
|
riverctl map-pointer normal Super BTN_RIGHT resize-view
|
2020-08-24 05:52:47 -07:00
|
|
|
|
2022-09-12 19:05:21 -07:00
|
|
|
# Super + Middle Mouse Button to toggle float
|
|
|
|
riverctl map-pointer normal Super BTN_MIDDLE toggle-float
|
|
|
|
|
2020-12-12 16:06:30 -08:00
|
|
|
for i in $(seq 1 9)
|
|
|
|
do
|
2020-12-30 05:25:37 -08:00
|
|
|
tags=$((1 << ($i - 1)))
|
2020-06-01 11:45:40 -07:00
|
|
|
|
2022-01-17 04:15:15 -08:00
|
|
|
# Super+[1-9] to focus tag [0-8]
|
|
|
|
riverctl map normal Super $i set-focused-tags $tags
|
2020-06-01 11:45:40 -07:00
|
|
|
|
2022-01-17 04:15:15 -08:00
|
|
|
# Super+Shift+[1-9] to tag focused view with tag [0-8]
|
|
|
|
riverctl map normal Super+Shift $i set-view-tags $tags
|
2020-06-01 11:45:40 -07:00
|
|
|
|
2023-03-09 14:35:06 -08:00
|
|
|
# Super+Control+[1-9] to toggle focus of tag [0-8]
|
2022-01-17 04:15:15 -08:00
|
|
|
riverctl map normal Super+Control $i toggle-focused-tags $tags
|
2020-06-02 06:19:08 -07:00
|
|
|
|
2023-03-09 14:35:06 -08:00
|
|
|
# Super+Shift+Control+[1-9] to toggle tag [0-8] of focused view
|
2022-01-17 04:15:15 -08:00
|
|
|
riverctl map normal Super+Shift+Control $i toggle-view-tags $tags
|
2020-06-01 11:45:40 -07:00
|
|
|
done
|
|
|
|
|
2022-01-17 04:15:15 -08:00
|
|
|
# Super+0 to focus all tags
|
|
|
|
# Super+Shift+0 to tag focused view with all tags
|
2020-12-30 05:25:37 -08:00
|
|
|
all_tags=$(((1 << 32) - 1))
|
2022-01-17 04:15:15 -08:00
|
|
|
riverctl map normal Super 0 set-focused-tags $all_tags
|
|
|
|
riverctl map normal Super+Shift 0 set-view-tags $all_tags
|
2020-06-01 11:45:40 -07:00
|
|
|
|
2022-01-17 04:15:15 -08:00
|
|
|
# Super+Space to toggle float
|
|
|
|
riverctl map normal Super Space toggle-float
|
2020-06-01 11:45:40 -07:00
|
|
|
|
2022-01-17 04:15:15 -08:00
|
|
|
# Super+F to toggle fullscreen
|
|
|
|
riverctl map normal Super F toggle-fullscreen
|
2020-06-28 16:50:26 -07:00
|
|
|
|
2022-01-17 04:15:15 -08:00
|
|
|
# Super+{Up,Right,Down,Left} to change layout orientation
|
|
|
|
riverctl map normal Super Up send-layout-cmd rivertile "main-location top"
|
|
|
|
riverctl map normal Super Right send-layout-cmd rivertile "main-location right"
|
|
|
|
riverctl map normal Super Down send-layout-cmd rivertile "main-location bottom"
|
|
|
|
riverctl map normal Super Left send-layout-cmd rivertile "main-location left"
|
2020-06-01 11:45:40 -07:00
|
|
|
|
|
|
|
# Declare a passthrough mode. This mode has only a single mapping to return to
|
|
|
|
# normal mode. This makes it useful for testing a nested wayland compositor
|
|
|
|
riverctl declare-mode passthrough
|
|
|
|
|
2022-01-17 04:15:15 -08:00
|
|
|
# Super+F11 to enter passthrough mode
|
|
|
|
riverctl map normal Super F11 enter-mode passthrough
|
2020-06-01 11:45:40 -07:00
|
|
|
|
2022-01-17 04:15:15 -08:00
|
|
|
# Super+F11 to return to normal mode
|
|
|
|
riverctl map passthrough Super F11 enter-mode normal
|
2020-06-16 08:46:57 -07:00
|
|
|
|
2020-12-12 16:06:30 -08:00
|
|
|
# Various media key mapping examples for both normal and locked mode which do
|
|
|
|
# not have a modifier
|
2020-10-22 11:55:48 -07:00
|
|
|
for mode in normal locked
|
|
|
|
do
|
2021-10-31 16:29:06 -07:00
|
|
|
# Eject the optical drive (well if you still have one that is)
|
2021-07-15 15:00:28 -07:00
|
|
|
riverctl map $mode None XF86Eject spawn 'eject -T'
|
2020-12-12 16:06:30 -08:00
|
|
|
|
|
|
|
# Control pulse audio volume with pamixer (https://github.com/cdemoulins/pamixer)
|
2021-07-15 15:00:28 -07:00
|
|
|
riverctl map $mode None XF86AudioRaiseVolume spawn 'pamixer -i 5'
|
|
|
|
riverctl map $mode None XF86AudioLowerVolume spawn 'pamixer -d 5'
|
|
|
|
riverctl map $mode None XF86AudioMute spawn 'pamixer --toggle-mute'
|
2020-12-12 16:06:30 -08:00
|
|
|
|
|
|
|
# Control MPRIS aware media players with playerctl (https://github.com/altdesktop/playerctl)
|
2021-07-15 15:00:28 -07:00
|
|
|
riverctl map $mode None XF86AudioMedia spawn 'playerctl play-pause'
|
|
|
|
riverctl map $mode None XF86AudioPlay spawn 'playerctl play-pause'
|
|
|
|
riverctl map $mode None XF86AudioPrev spawn 'playerctl previous'
|
|
|
|
riverctl map $mode None XF86AudioNext spawn 'playerctl next'
|
2020-12-12 16:06:30 -08:00
|
|
|
|
2022-05-24 14:23:45 -07:00
|
|
|
# Control screen backlight brightness with light (https://github.com/haikarainen/light)
|
2021-07-15 15:00:28 -07:00
|
|
|
riverctl map $mode None XF86MonBrightnessUp spawn 'light -A 5'
|
|
|
|
riverctl map $mode None XF86MonBrightnessDown spawn 'light -U 5'
|
2020-10-22 11:55:48 -07:00
|
|
|
done
|
|
|
|
|
2021-07-26 11:36:46 -07:00
|
|
|
# Set background and border color
|
|
|
|
riverctl background-color 0x002b36
|
|
|
|
riverctl border-color-focused 0x93a1a1
|
|
|
|
riverctl border-color-unfocused 0x586e75
|
|
|
|
|
2021-10-31 16:29:06 -07:00
|
|
|
# Set keyboard repeat rate
|
2020-11-18 06:28:33 -08:00
|
|
|
riverctl set-repeat 50 300
|
|
|
|
|
2023-03-12 09:26:44 -07:00
|
|
|
# Make all views with an app-id that starts with "float" and title "foo" start floating.
|
riverctl: rule-{add,del}: reorder parameters
Previous order was (action, conditions, action argument), current is
(conditions, action, action argument). The old one was an expansion of
(action, conditions), which itself most likely came from the separate
<action>-filter-add commands. On the other hand, the new order keeps
action and its argument together and is in line with the logical flow
(check conditions, apply action).
On shell completions: only bash absolutely needed to be updated. fish
and zsh slightly misbehave regardless of the order.
2023-10-01 08:49:21 -07:00
|
|
|
riverctl rule-add -app-id 'float*' -title 'foo' float
|
2020-07-16 10:45:45 -07:00
|
|
|
|
2023-03-12 09:26:44 -07:00
|
|
|
# Make all views with app-id "bar" and any title use client-side decorations
|
riverctl: rule-{add,del}: reorder parameters
Previous order was (action, conditions, action argument), current is
(conditions, action, action argument). The old one was an expansion of
(action, conditions), which itself most likely came from the separate
<action>-filter-add commands. On the other hand, the new order keeps
action and its argument together and is in line with the logical flow
(check conditions, apply action).
On shell completions: only bash absolutely needed to be updated. fish
and zsh slightly misbehave regardless of the order.
2023-10-01 08:49:21 -07:00
|
|
|
riverctl rule-add -app-id "bar" csd
|
2020-07-16 10:45:45 -07:00
|
|
|
|
2022-06-17 10:29:28 -07:00
|
|
|
# Set the default layout generator to be rivertile and start it.
|
2021-04-14 15:28:39 -07:00
|
|
|
# River will send the process group of the init executable SIGTERM on exit.
|
2021-04-26 12:03:04 -07:00
|
|
|
riverctl default-layout rivertile
|
2022-11-25 03:40:11 -08:00
|
|
|
rivertile -view-padding 6 -outer-padding 6 &
|