161 lines
6.3 KiB
Bash
Executable File
161 lines
6.3 KiB
Bash
Executable File
#!/bin/sh
|
|
|
|
wlr-randr --output DP-1 --mode 3840x2160 --scale 2
|
|
wlr-randr --output HDMI-A-1 --mode 3840x2160 --scale 2 --left-of DP-1
|
|
|
|
foot --server &
|
|
|
|
argenctl config set label-mode modifier
|
|
|
|
# Terminal
|
|
#argenctl binding set normal Super Return sh "kitty --single-instance --instance-group default"
|
|
argenctl binding set normal Super Return sh "
|
|
if [ -e ~/.lightmode ]; then
|
|
exec footclient -o initial-color-theme=light
|
|
else
|
|
exec footclient -o initial-color-theme=dark
|
|
fi
|
|
"
|
|
|
|
# Reload config
|
|
argenctl binding set normal Super+Shift R exec "$0"
|
|
|
|
argenctl binding set normal Super P exec fuzzel
|
|
argenctl binding set normal Super+Shift L exec waylock
|
|
argenctl binding set normal Super+Shift T sh "lupan-set-theme toggle"
|
|
|
|
# Window focus and swap
|
|
argenctl binding set normal Super J window focus next
|
|
argenctl binding set normal Super K window focus prev
|
|
argenctl binding set normal Super+Shift J window swap next
|
|
argenctl binding set normal Super+Shift K window swap prev
|
|
|
|
argenctl binding set normal Super F window fullscreen
|
|
argenctl binding set normal Super W window float
|
|
|
|
argenctl binding set normal Super+Shift C window close
|
|
argenctl binding set normal Super+Shift X window detach
|
|
|
|
# Output focus and send
|
|
argenctl binding set normal Super Period output focus next
|
|
argenctl binding set normal Super Comma output focus prev
|
|
argenctl binding set normal Super+Shift Period window send next
|
|
argenctl binding set normal Super+Shift Comma window send prev
|
|
|
|
# Layout
|
|
argenctl binding set normal Super C layout switch columns
|
|
argenctl binding set normal Super M layout switch monocle
|
|
argenctl binding set normal Super S layout switch stacktile
|
|
argenctl binding set normal Super H layout set primary-ratio -0.05
|
|
argenctl binding set normal Super L layout set primary-ratio +0.05
|
|
argenctl binding set normal Super+Control K layout set secondary-ratio -0.05
|
|
argenctl binding set normal Super+Control J layout set secondary-ratio +0.05
|
|
|
|
# Pointer
|
|
argenctl pointer-binding set normal Super BTN_LEFT move-window
|
|
argenctl pointer-binding set normal Super BTN_RIGHT resize-window
|
|
|
|
# Context
|
|
argenctl binding set normal Super+Shift+Control X context close
|
|
argenctl binding set normal Super Tab context switch --last
|
|
|
|
# Switch contexts interactively
|
|
argenctl binding set normal Super Space sh 'argenctl context switch "$(argenctl context list | fuzzel -d --only-match)"'
|
|
|
|
# Create new context interactively
|
|
argenctl binding set normal Super+Shift Space sh '
|
|
set -eu
|
|
prompt="$(fuzzel -d --prompt-only "new > ")"
|
|
argenctl context new "$prompt"
|
|
'
|
|
|
|
# Rename current context interactively
|
|
argenctl binding set normal Super+Control Space sh '
|
|
set -eu
|
|
prompt="$(fuzzel -d --prompt-only "rename > ")"
|
|
argenctl context rename "$prompt"
|
|
'
|
|
|
|
# Assign currently focused window to be toggled with Super U
|
|
argenctl binding set normal Super+Shift U sh '
|
|
set -eu
|
|
id=$(argenctl window list --json | jq -r ".[] | select(.focused) | .id")
|
|
argenctl binding set normal Super U window toggle "$id"
|
|
'
|
|
|
|
# Attach window interactively
|
|
argenctl binding set normal Super+Shift D sh '
|
|
set -eu
|
|
id=$(argenctl window list | fuzzel -d --with-nth 2 --accept-nth 1 --only-match)
|
|
argenctl window attach "$id"
|
|
'
|
|
|
|
# Adopt all orphans
|
|
argenctl binding set normal Super+Control D sh '
|
|
argenctl window list --json | jq -r ".[] | select(.contexts | length == 0) | .id" | while read -r id; do
|
|
argenctl window attach "$id"
|
|
done
|
|
'
|
|
|
|
# Quit after confirmed with 'yes'
|
|
argenctl binding set normal Super+Shift Q sh '
|
|
set -eu
|
|
confirm="$(fuzzel -d --prompt-only "quit? > ")"
|
|
if [ "$confirm" = yes ]; then
|
|
argenctl exit
|
|
fi
|
|
'
|
|
|
|
# Audio and brightness controls
|
|
VOL_DEC='wpctl set-volume @DEFAULT_SINK@ 5%-'
|
|
VOL_INC='wpctl set-mute @DEFAULT_SINK@ 0 && wpctl set-volume @DEFAULT_SINK@ --limit 1.5 5%+'
|
|
VOL_TOGGLE='wpctl set-mute @DEFAULT_SINK@ toggle'
|
|
for mode in normal locked; do
|
|
argenctl binding set $mode Super Bracketleft sh "$VOL_DEC"
|
|
argenctl binding set $mode Super Bracketright sh "$VOL_INC"
|
|
argenctl binding set $mode Super+Shift M sh "$VOL_TOGGLE"
|
|
argenctl binding set $mode None XF86AudioLowerVolume sh "$VOL_DEC"
|
|
argenctl binding set $mode None XF86AudioRaiseVolume sh "$VOL_INC"
|
|
argenctl binding set $mode None XF86AudioMute sh "$VOL_TOGGLE"
|
|
|
|
argenctl binding set $mode None XF86MonBrightnessDown sh "brightnessctl s 5%-"
|
|
argenctl binding set $mode None XF86MonBrightnessUp sh "brightnessctl s +5%"
|
|
argenctl binding set $mode Super+Shift Bracketleft sh "brightnessctl s 5%-"
|
|
argenctl binding set $mode Super+Shift Bracketright sh "brightnessctl s +5%"
|
|
done
|
|
|
|
# Passthrough mode
|
|
argenctl mode declare passthrough
|
|
argenctl binding set normal Super Grave mode enter passthrough
|
|
argenctl binding set passthrough Super Grave mode enter normal
|
|
|
|
# Select/swap window by index
|
|
for num in 1 2 3 4 5 6 7 8 9; do
|
|
idx=$((num - 1))
|
|
argenctl binding set normal Super $num sh "
|
|
argenctl window focus \$(argenctl context list --json | jq -r '.[] | select(.current) | .windows | .[$idx]')
|
|
"
|
|
argenctl binding set normal Super+Shift $num sh "
|
|
context_id=\$(argenctl context list --json | jq -r '.[] | select(.current) | .id')
|
|
length=\$(argenctl context list --json | jq -r '.[] | select(.current) | .windows | length')
|
|
focused_window=\$(argenctl context list --json | jq -r '.[] | select(.current) | .focused_window')
|
|
dest_window=\$(argenctl context list --json | jq -r '.[] | select(.current) | .windows | .[$idx]')
|
|
focused_output_id=\$(argenctl window list --json | jq -r \".[] | select(.id == \\\"\$focused_window\\\") | .contexts[] | select(.id = \$context_id) | .output_id\")
|
|
dest_output_id=\$(argenctl window list --json | jq -r \".[] | select(.id == \\\"\$dest_window\\\") | .contexts[] | select(.id = \$context_id) | .output_id\")
|
|
if [ -n \"\$focused_output_id\" -a \"\$focused_output_id\" = \"\$dest_output_id\" ]; then
|
|
for i in \$(seq \$length); do
|
|
if [ \"\$focused_window\" = \"\$dest_window\" ]; then
|
|
break
|
|
fi
|
|
argenctl window swap next
|
|
dest_window=\$(argenctl context list --json | jq -r '.[] | select(.current) | .windows | .[$idx]')
|
|
done
|
|
fi
|
|
"
|
|
done
|
|
|
|
argenctl binding set normal Super+Shift S exec ~/.config/argen/session.sh
|
|
|
|
# Rules
|
|
argenctl rule add float --app-id "my-app"
|