summary refs log tree commit diff
path: root/.config/river/keybinds
diff options
context:
space:
mode:
Diffstat (limited to '.config/river/keybinds')
-rwxr-xr-x.config/river/keybinds174
1 files changed, 174 insertions, 0 deletions
diff --git a/.config/river/keybinds b/.config/river/keybinds
new file mode 100755
index 0000000..516b653
--- /dev/null
+++ b/.config/river/keybinds
@@ -0,0 +1,174 @@
+#!/bin/sh
+
+. "$XDG_CONFIG_HOME/river/functions.sh"
+
+export mod=Super
+
+# Note: the "$mod" modifier is also known as Logo, GUI, Windows, $mod, etc.
+riverctl map normal $mod+Shift Q close
+riverctl map normal $mod+Shift E exit
+
+# $mod+J and $mod+K to focus the next/previous view in the layout stack
+riverctl map normal $mod J focus-view next
+riverctl map normal $mod K focus-view previous
+riverctl map normal $mod L focus-view right
+riverctl map normal $mod H focus-view left
+
+# $mod+Shift+J and $mod+Shift+K to swap the focused view with the next/previous
+# view in the layout stack
+riverctl map normal $mod+Shift J swap next
+riverctl map normal $mod+Shift K swap previous
+riverctl map normal $mod+Shift L swap right
+riverctl map normal $mod+Shift H swap left
+
+riverctl map normal $mod Backspace focus-previous-tags
+riverctl map normal $mod+Shift Backspace move-previous-tags
+
+# $mod+Period and $mod+Comma to focus the next/previous output
+riverctl map normal $mod Period focus-output next
+riverctl map normal $mod Comma focus-output previous
+
+# $mod+Shift+{Period,Comma} to send the focused view to the next/previous output
+riverctl map normal $mod+Shift Period spawn 'riverctl send-to-output next && riverctl focus-output next'
+riverctl map normal $mod+Shift Comma spawn 'riverctl send-to-output previous && riverctl focus-output previous'
+
+# bump the focused view to the top of the layout stack
+riverctl map normal $mod+Shift Return zoom
+
+# $mod++ and $mod+- to decrease/increase the main ratio of rivertile(1)
+riverctl map normal $mod Equal send-layout-cmd rivertile "main-ratio +0.05"
+riverctl map normal $mod Minus send-layout-cmd rivertile "main-ratio -0.05"
+
+# $mod+Shift+H and $mod+Shift+L to increment/decrement the main count of rivertile(1)
+riverctl map normal $mod Plus send-layout-cmd rivertile "main-count +1"
+riverctl map normal $mod Underscore send-layout-cmd rivertile "main-count -1"
+
+# snap views to screen edges
+# riverctl map normal $mod+Control H snap left
+# riverctl map normal $mod+Control J snap down
+# riverctl map normal $mod+Control K snap up
+# riverctl map normal $mod+Control L snap right
+
+declare_mode resize $mod R
+map_mode -n resize None h resize horizontal 100
+map_mode -n resize None j resize vertical -100
+map_mode -n resize None k resize vertical 100
+map_mode -n resize None l resize horizontal -100
+
+riverctl map-pointer normal $mod BTN_LEFT move-view
+riverctl map-pointer normal $mod BTN_RIGHT resize-view
+
+riverctl focus-follows-cursor normal
+
+# tag management
+for i in $(seq 1 9); do
+	tags=$((1 << (i - 1)))
+
+	riverctl map normal $mod "$i" set-focused-tags "$tags"
+	riverctl map normal $mod+Shift "$i" set-view-tags "$tags"
+	riverctl map normal $mod+Control "$i" toggle-focused-tags "$tags"
+	riverctl map normal $mod+Shift+Control "$i" toggle-view-tags "$tags"
+done
+
+# $mod+0 to focus all tags
+# $mod+Shift+0 to tag focused view with all tags
+all_tags=$(((1 << 32) - 1))
+riverctl map normal $mod 0 set-focused-tags $all_tags
+riverctl map normal $mod+Shift 0 set-view-tags $all_tags
+riverctl map normal $mod+Control 0 toggle-focused-tags "$all_tags"
+riverctl map normal $mod+Control+Shift 0 toggle-view-tags $all_tags
+
+scratch_tag=$((1 << 31))
+riverctl spawn-tagmask $((all_tags ^ scratch_tag))
+riverctl map normal $mod Delete toggle-focused-tags "$scratch_tag"
+
+# $mod+Space to toggle float
+riverctl map normal $mod+Shift Space toggle-float
+
+# $mod+F to toggle fullscreen
+riverctl map normal $mod F toggle-fullscreen
+# $mod+{Up,Right,Down,Left} to change layout orientation
+riverctl map normal $mod Up send-layout-cmd rivertile "main-location top"
+riverctl map normal $mod Right send-layout-cmd rivertile "main-location right"
+riverctl map normal $mod Down send-layout-cmd rivertile "main-location bottom"
+riverctl map normal $mod Left send-layout-cmd rivertile "main-location left"
+
+# 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
+# enter passthrough mode
+riverctl map normal $mod F11 enter-mode passthrough
+# return to normal mode
+riverctl map passthrough $mod F11 enter-mode normal
+
+# run application launcher
+# riverctl map normal $mod Return spawn foot
+# riverctl map normal $mod Return spawn footclient
+riverctl map normal $mod Return spawn ghostty
+riverctl map normal $mod D spawn 'menu -run'
+riverctl map normal $mod W spawn 'oguri-cycle'
+
+declare_mode menu $mod M
+map_mode menu None A 'riverctl spawn soundswitch'
+map_mode menu None B 'riverctl spawn bluemenu'
+map_mode menu None C 'riverctl spawn connmenu'
+map_mode menu None D 'riverctl spawn domenu'
+map_mode menu None M 'riverctl spawn mnts'
+map_mode menu None N 'riverctl spawn notifmenu'
+map_mode menu None O 'riverctl spawn modemenu'
+map_mode menu None P 'riverctl spawn passmenu2'
+map_mode menu None R 'riverctl spawn rcmenu'
+map_mode menu None V 'riverctl spawn vpnmenu'
+map_mode menu None Delete 'riverctl spawn powermenu'
+
+# TODO: screenshot mode
+declare_mode screenshot $mod+Shift S
+map_mode screenshot None s 'grimshot copy area'
+map_mode screenshot Shift s 'grimshot save area'
+map_mode screenshot None o 'grimshot copy output'
+map_mode screenshot Shift o 'grimshot save output'
+map_mode screenshot Shift a 'grimshot copy win'
+map_mode screenshot None a 'grimshot copy'
+map_mode screenshot Shift a 'grimshot copy'
+
+riverctl map normal $mod X spawn 'wtype -P XF86Cut'
+riverctl map normal $mod C spawn 'wtype -P XF86Copy'
+riverctl map normal $mod V spawn 'wtype -P XF86Paste'
+#riverctl map normal $mod+Shift V spawn 'wl-paste -p -n | wtype -d 10 -s 5 -'
+riverctl map normal $mod B spawn 'pkill -USR1 waybar'
+
+riverctl map normal $mod G spawn 'wl-kbptr'
+declare_mode mouse $mod+Shift G
+map_mode mouse None t 'wl-kbptr -o modes=tile,bisect'
+map_mode mouse None b 'wl-kbptr -o modes=bisect'
+map_mode mouse None c 'wl-kbptr -o modes=click'
+# TODO: wlrctl pointer ...
+
+# Various media key mapping examples for both normal and locked mode which do
+# not have a modifier
+for mode in normal locked; do
+	riverctl map $mode None XF86AudioRaiseVolume spawn 'soundswitch -V'
+	riverctl map $mode None XF86AudioLowerVolume spawn 'soundswitch -v'
+	riverctl map $mode None XF86AudioMute spawn 'soundswitch -m'
+
+	# Control MPRIS aware media players with playerctl (https://github.com/altdesktop/playerctl)
+	riverctl map $mode None XF86AudioPlay spawn 'playerctl -p playerctld play-pause'
+	riverctl map $mode None XF86AudioPrev spawn 'playerctl -p playerctld previous'
+	riverctl map $mode None XF86AudioNext spawn 'playerctl -p playerctld next'
+
+	riverctl map $mode None XF86MonBrightnessUp spawn 'light set +5%'
+	riverctl map $mode None XF86MonBrightnessDown spawn 'light set 5%-'
+
+	# AudioMedia is F12/framework logo key
+	riverctl map $mode None XF86AudioMedia spawn 'kanshictl reload'
+	riverctl map $mode None XF86Keyboard spawn 'light set 0%'
+	riverctl map $mode None XF86Favorites spawn 'light set 100%'
+done
+
+# suspend on lid closing
+riverctl map-switch normal lid close spawn 'suspend-then-hibernate'
+
+declare_mode ocr $mod o
+map_mode ocr None o 'transformers_ocr recognize'
+map_mode ocr None h 'transformers_ocr hold'
+map_mode ocr None x 'transformers_ocr stop'