175 lines
3.4 KiB
Ruby
175 lines
3.4 KiB
Ruby
system 'bash ~/main/ocaml/epq/scripts/startup.sh >/dev/null 2>&1 &'
|
|
|
|
MAX_PROJECTS = 3
|
|
|
|
SPECIAL = {
|
|
term1: { cmd: 'kitty' },
|
|
term2: { cmd: 'kitty' },
|
|
browser: { cmd: 'firefox' },
|
|
misc: { cmd: nil }
|
|
}
|
|
|
|
$current = 0
|
|
|
|
$p_sub = Array.new(9, 0)
|
|
|
|
def project_ws(n)
|
|
:"p#{n}_#{$p_sub[$current]}"
|
|
end
|
|
|
|
def go_project(n)
|
|
$current = n
|
|
jump_ws project_ws($current)
|
|
end
|
|
|
|
def in_project?(ws)
|
|
!SPECIAL.key?(ws)
|
|
end
|
|
|
|
def go_special(name, ws)
|
|
cfg = SPECIAL.fetch(name)
|
|
|
|
if ws == name
|
|
target = project_ws($current)
|
|
jump_ws target
|
|
else
|
|
jump_ws name
|
|
system("#{cfg[:cmd]} >/dev/null 2>&1 &") if cfg[:cmd] && ws_empty?(name)
|
|
end
|
|
end
|
|
|
|
bind 'q' do |x|
|
|
kill x
|
|
end
|
|
|
|
bind 'w' do
|
|
system 'kitty >/dev/null 2>&1 &'
|
|
end
|
|
|
|
bind 'e' do
|
|
system 'bash ~/main/ocaml/epq/scripts/power.sh >/dev/null 2>&1 &'
|
|
end
|
|
|
|
bind 'd' do
|
|
system 'bash ~/main/ocaml/epq/scripts/run.sh >/dev/null 2>&1 &'
|
|
end
|
|
|
|
bind 'v' do
|
|
system 'CM_LAUNCHER=rofi clipmenu >/dev/null 2>&1 &'
|
|
end
|
|
|
|
bind 'a' do
|
|
system 'bash', '-c', "
|
|
maim -c 0.3,0.5,1.0,0.8 -s | tee /tmp/screenshot_temp.png | xclip -selection clipboard -t image/png;
|
|
if [ -s '/tmp/screenshot_temp.png' ]; then
|
|
mv /tmp/screenshot_temp.png ~/screenshots/$(date +%Y-%m-%d_%H:%M:%S).png;
|
|
fi
|
|
"
|
|
end
|
|
|
|
bind 123, :none do
|
|
system 'bash', '-c', %q(
|
|
pactl set-sink-volume @DEFAULT_SINK@ +5%;
|
|
vol=$(pactl get-sink-volume @DEFAULT_SINK@ | grep -o '[0-9]\+%' | head -n1);
|
|
dunstify "Volume Adjusted" "" -h int:value:$vol -r 997
|
|
)
|
|
end
|
|
|
|
bind 122, :none do
|
|
system 'bash', '-c', %q(
|
|
pactl set-sink-volume @DEFAULT_SINK@ -5%;
|
|
vol=$(pactl get-sink-volume @DEFAULT_SINK@ | grep -o '[0-9]\+%' | head -n1);
|
|
dunstify "Volume Adjusted" "" -h int:value:$vol -r 997
|
|
)
|
|
end
|
|
|
|
bind 121, :none do
|
|
system 'bash', '-c', %q(
|
|
pactl set-sink-mute @DEFAULT_SINK@ toggle;
|
|
vol=$(pactl get-sink-volume @DEFAULT_SINK@ | grep -o '[0-9]\+%' | head -n1);
|
|
dunstify "Volume Adjusted" "" -h int:value:$vol -r 997
|
|
)
|
|
end
|
|
|
|
bind 232, :none do
|
|
system 'bash', '-c', %q(
|
|
brightnessctl set 5%-;
|
|
pct=$(brightnessctl -m | cut -d, -f4 | tr -d ' %');
|
|
dunstify "Brightness" "" -h int:value:$pct -r 998
|
|
)
|
|
end
|
|
|
|
bind 233, :none do
|
|
system 'bash', '-c', %q(
|
|
brightnessctl set 5%+;
|
|
pct=$(brightnessctl -m | cut -d, -f4 | tr -d ' %');
|
|
dunstify "Brightness" "" -h int:value:$pct -r 998
|
|
)
|
|
end
|
|
|
|
bind 'x' do
|
|
system 'kitty -e fish -c "editor" >/dev/null 2>&1 &'
|
|
end
|
|
|
|
bind 'c' do
|
|
system 'kitty -e fish -c "y" >/dev/null 2>&1 &'
|
|
end
|
|
|
|
bind 's' do |x|
|
|
toggle_float x
|
|
end
|
|
|
|
bind 'f' do
|
|
system 'kitty -e fish -c "btop" >/dev/null 2>&1 &'
|
|
end
|
|
|
|
bind '[' do |_, ws|
|
|
go_special :term1, ws
|
|
end
|
|
|
|
bind ']' do |_, ws|
|
|
go_special :term2, ws
|
|
end
|
|
|
|
bind 79, :none do |_, ws|
|
|
go_special :browser, ws
|
|
end
|
|
|
|
bind 89 do |_, ws|
|
|
go_special :misc, ws
|
|
end
|
|
|
|
bind 118, :none do
|
|
system 'bash', '-c',
|
|
'dbus-send --print-reply --dest=org.mpris.MediaPlayer2.spotify /org/mpris/MediaPlayer2 org.mpris.MediaPlayer2.Player.PlayPause >/dev/null 2>&1 &'
|
|
end
|
|
|
|
(0..MAX_PROJECTS - 1).each do |n|
|
|
bind (n + 1).to_s do
|
|
go_project(n)
|
|
end
|
|
end
|
|
|
|
bind 86, :none do |_, ws|
|
|
next unless in_project?(ws)
|
|
|
|
n = (($current - 1 + MAX_PROJECTS) % MAX_PROJECTS)
|
|
go_project(n)
|
|
end
|
|
|
|
bind 82, :none do |_, ws|
|
|
next unless in_project?(ws)
|
|
|
|
n = (($current + 1) % MAX_PROJECTS)
|
|
go_project(n)
|
|
end
|
|
|
|
bind 80, :none do |_, ws|
|
|
next unless in_project?(ws)
|
|
|
|
$p_sub[$current] = $p_sub[$current] == 1 ? 0 : 1
|
|
go_project($current)
|
|
end
|
|
|
|
go_project(0)
|