200 lines
7.1 KiB
Bash
Executable file
200 lines
7.1 KiB
Bash
Executable file
#!/bin/sh
|
|
|
|
# Variables
|
|
term="foot"
|
|
term_client="footclient"
|
|
term_float="foot --app-id=float -w 1120x700"
|
|
browser="librewolf"
|
|
email="thunderbird"
|
|
emacs="emacsclient --create-frame --alternate-editor='emacs'"
|
|
mod=Super
|
|
books="$HOME/.local/bin/books.sh"
|
|
papers="$HOME/.local/bin/papers.sh"
|
|
|
|
wobsock=$XDG_RUNTIME_DIR/wob.sock
|
|
rm -f $wobsock && mkfifo $wobsock && tail -f $wobsock | wob &
|
|
|
|
# Launch things
|
|
riverctl map normal $mod Return spawn $term_client
|
|
riverctl map normal $mod+Shift Return spawn $term
|
|
riverctl map normal $mod Semicolon spawn fuzzel
|
|
riverctl map normal $mod BracketRight spawn "$browser"
|
|
riverctl map normal $mod T spawn "$email"
|
|
riverctl map normal $mod Z spawn "$books"
|
|
riverctl map normal $mod Y spawn "$papers"
|
|
riverctl map normal $mod E spawn "$emacs"
|
|
riverctl map normal $mod+Control O spawn "swaylock"
|
|
|
|
# Close windows & exit wm
|
|
riverctl map normal $mod+Shift C close
|
|
riverctl map normal $mod+Shift Q exit
|
|
|
|
# view stuff
|
|
riverctl map normal $mod J focus-view next
|
|
riverctl map normal $mod K focus-view previous
|
|
riverctl map normal $mod+Shift J swap next
|
|
riverctl map normal $mod+Shift K swap previous
|
|
|
|
riverctl map normal $mod+Shift Space zoom
|
|
|
|
# monitor stuff
|
|
riverctl map normal $mod Period focus-output next
|
|
riverctl map normal $mod Comma focus-output previous
|
|
riverctl map normal $mod+Shift Period send-to-output next
|
|
riverctl map normal $mod+Shift Comma send-to-output previous
|
|
|
|
# mess with main
|
|
riverctl map normal $mod H send-layout-cmd rivertile "main-ratio -0.05"
|
|
riverctl map normal $mod L send-layout-cmd rivertile "main-ratio +0.05"
|
|
|
|
riverctl map normal $mod+Shift H send-layout-cmd rivertile "main-count +1"
|
|
riverctl map normal $mod+Shift L send-layout-cmd rivertile "main-count -1"
|
|
|
|
# manipulate views
|
|
riverctl map normal $mod+Alt H move left 100
|
|
riverctl map normal $mod+Alt J move down 100
|
|
riverctl map normal $mod+Alt K move up 100
|
|
riverctl map normal $mod+Alt L move right 100
|
|
|
|
riverctl map normal $mod+Alt+Control H snap left
|
|
riverctl map normal $mod+Alt+Control J snap down
|
|
riverctl map normal $mod+Alt+Control K snap up
|
|
riverctl map normal $mod+Alt+Control L snap right
|
|
|
|
riverctl map normal $mod+Alt+Shift H resize horizontal -100
|
|
riverctl map normal $mod+Alt+Shift J resize vertical 100
|
|
riverctl map normal $mod+Alt+Shift K resize vertical -100
|
|
riverctl map normal $mod+Alt+Shift L resize horizontal 100
|
|
|
|
riverctl map-pointer normal $mod BTN_LEFT move-view
|
|
riverctl map-pointer normal $mod BTN_RIGHT resize-view
|
|
riverctl map-pointer normal $mod BTN_MIDDLE toggle-float
|
|
|
|
# tag stuff
|
|
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
|
|
|
|
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
|
|
|
|
# toggle
|
|
riverctl map normal $mod Space toggle-float
|
|
riverctl map normal $mod F toggle-fullscreen
|
|
|
|
# change layout orientation
|
|
riverctl map normal $mod+Control K send-layout-cmd rivertile "main-location top"
|
|
riverctl map normal $mod+Control L send-layout-cmd rivertile "main-location right"
|
|
riverctl map normal $mod+Control J send-layout-cmd rivertile "main-location bottom"
|
|
riverctl map normal $mod+Control H send-layout-cmd rivertile "main-location left"
|
|
|
|
# passthrough mode
|
|
riverctl declare-mode passthrough
|
|
riverctl map normal $mod F11 enter-mode passthrough
|
|
riverctl map passthrough $mod F11 enter-mode normal
|
|
|
|
# media key bindings
|
|
for mode in normal locked
|
|
do
|
|
riverctl map $mode None XF86Eject spawn 'eject -T'
|
|
|
|
riverctl map $mode None XF86AudioRaiseVolume spawn "amixer sset Master 5%+ | sed -En 's/.*\[([0-9]+)%\].*/\1/p' | head -1 > $wobsock"
|
|
riverctl map $mode None XF86AudioLowerVolume spawn "amixer sset Master 5%- | sed -En 's/.*\[([0-9]+)%\].*/\1/p' | head -1 > $wobsock"
|
|
riverctl map $mode None XF86AudioMute exec spawn "sset Master toggle | sed -En '/\[on\]/ s/.*\[([0-9]+)%\].*/\1/ p; /\[off\]/ s/.*/0/p' | head -1 > $wobsock"
|
|
|
|
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'
|
|
|
|
riverctl map $mode $mod+Control+Shift K spawn "brightnessctl set +5% | sed -En 's/.*\(([0-9]+)%\).*/\1/p' > $wobsock"
|
|
riverctl map $mode $mod+Control+Shift J spawn "brightnessctl set 5%- | sed -En 's/.*\(([0-9]+)%\).*/\1/p' > $wobsock"
|
|
done
|
|
|
|
# "caffeine"
|
|
riverctl map normal $mod+Control C spawn "$HOME/.config/river/toggle_caffeine.sh"
|
|
|
|
# colors
|
|
riverctl background-color 0x1e1e2e
|
|
riverctl border-color-focused 0xf5c2e7
|
|
riverctl border-color-unfocused 0x586e75
|
|
riverctl border-width 2
|
|
|
|
# options
|
|
riverctl set-repeat 50 300
|
|
riverctl keyboard-layout -options "altwin:swap_lalt_lwin" us
|
|
|
|
riverctl focus-follows-cursor normal
|
|
riverctl hide-cursor timeout 10000
|
|
riverctl hide-cursor when-typing enabled
|
|
riverctl xcursor-theme Adwaita
|
|
|
|
touchpad=$(riverctl list-inputs | grep -i touchpad)
|
|
riverctl input $touchpad disable-while-typing enabled
|
|
riverctl input $touchpad natural-scroll enabled
|
|
riverctl input $touchpad tap enabled
|
|
|
|
# Make certain views start floating
|
|
riverctl float-filter-add app-id float
|
|
riverctl float-filter-add title "popup title with spaces"
|
|
riverctl float-filter-add app-id blueman-manager
|
|
|
|
# "Scratchpad"
|
|
scratch_tag=$((1 << 20))
|
|
riverctl map normal $mod Slash toggle-focused-tags $scratch_tag
|
|
riverctl map normal $mod+Shift Slash set-view-tags $scratch_tag
|
|
riverctl map normal $mod+Control Slash toggle-view-tags $scratch_tag
|
|
riverctl map normal $mod S spawn "$term_float"
|
|
riverctl rule-add -app-id float float
|
|
|
|
# SSD (so GTK apps show border)
|
|
riverctl rule-add -app-id firefox ssd
|
|
riverctl rule-add -app-id librewolf ssd
|
|
riverctl rule-add -app-id thunderbird ssd
|
|
riverctl rule-add -app-id betterbird ssd
|
|
riverctl rule-add -app-id emacs ssd
|
|
riverctl rule-add -app-id gnucash ssd
|
|
riverctl rule-add -app-id pcmanfm ssd
|
|
riverctl rule-add -app-id steam ssd
|
|
riverctl rule-add -app-id drracket ssd
|
|
riverctl rule-add -app-id org.pwmt.zathura ssd
|
|
riverctl rule-add -app-id org.gnome.Boxes ssd
|
|
riverctl rule-add -app-id com.github.xournalpp.xournalpp ssd
|
|
|
|
# spawn stuff
|
|
pgrep wbg || wbg ~/.config/wallpaper.png &
|
|
wlr-randr --output eDP-1 --scale 1.25
|
|
pgrep waybar || waybar &
|
|
|
|
# mako stuff
|
|
pgrep mako || mako &
|
|
riverctl map normal $mod D spawn 'makoctl dismiss'
|
|
riverctl map normal $mod+Shift D spawn 'makoctl dismiss --all'
|
|
|
|
# bluetooth
|
|
blueman-applet &
|
|
|
|
# foot server
|
|
foot --server & # TODO: figure out systemd service
|
|
|
|
# pianobar
|
|
riverctl map normal $mod+Shift S spawn '~/.config/pianobar/change_station.sh'
|
|
riverctl map normal $mod P spawn 'echo "p" > ~/.config/pianobar/ctl'
|
|
riverctl map normal $mod C spawn '~/.config/pianobar/display_info.sh'
|
|
riverctl map normal $mod N spawn 'echo "n" > ~/.config/pianobar/ctl'
|
|
|
|
# swayidle
|
|
pgrep swayidle || swayidle -w \
|
|
timeout 300 '$HOME/.config/river/timeout.sh' \
|
|
before-sleep 'swaylock -f -c 000000' &
|
|
|
|
# start rivertile
|
|
riverctl default-layout rivertile
|
|
rivertile -view-padding 6 -outer-padding 6 -main-ratio 0.55 &
|