diff options
Diffstat (limited to '.config/river/keybinds')
| -rwxr-xr-x | .config/river/keybinds | 174 |
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' |