Add remote commands support
This commit is contained in:
+105
-54
@@ -1,71 +1,115 @@
|
||||
keybind(23) do |_event|
|
||||
keybind 23 do |_event|
|
||||
run "firefox"
|
||||
end
|
||||
|
||||
keybind(24) do |event|
|
||||
keybind 24 do |event|
|
||||
X.kill event[:window]
|
||||
end
|
||||
|
||||
keybind(25) do |_event|
|
||||
keybind 25 do |_event|
|
||||
run "kitty"
|
||||
end
|
||||
|
||||
keybind(26) do |_event|
|
||||
# run "~/dotfiles/scripts/power.sh"
|
||||
exit 1
|
||||
keybind 26 do |_event|
|
||||
run "~/dotfiles/scripts/power.sh"
|
||||
end
|
||||
|
||||
keybind(38) do |_event|
|
||||
keybind 123, 0 do |_event|
|
||||
run "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
|
||||
|
||||
keybind 122, 0 do |_event|
|
||||
run "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
|
||||
|
||||
keybind 121, 0 do |_event|
|
||||
run "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
|
||||
|
||||
keybind 38 do |_event|
|
||||
run "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
|
||||
|
||||
keybind(54) do |_event|
|
||||
keybind 54 do |_event|
|
||||
run "kitty -e fish -c \"y\""
|
||||
end
|
||||
|
||||
keybind(53) do |_event|
|
||||
keybind 53 do |_event|
|
||||
run "kitty -e fish -c \"editor\""
|
||||
end
|
||||
|
||||
keybind(40) do |_event|
|
||||
keybind 40 do |_event|
|
||||
run "~/dotfiles/scripts/run.sh"
|
||||
end
|
||||
|
||||
keybind(33) do |_event|
|
||||
keybind 33 do |_event|
|
||||
run "~/.config/polybar/launch.sh"
|
||||
end
|
||||
|
||||
keybind(56) do |_event|
|
||||
keybind 45 do |_event|
|
||||
run "~/dotfiles/scripts/caffiene.sh"
|
||||
end
|
||||
|
||||
keybind 56 do |_event|
|
||||
monitor = current_monitor
|
||||
create_workspace monitor
|
||||
persistence_path = File.join(__dir__, ".num.json")
|
||||
persistence = File.exist?(persistence_path) ?
|
||||
JSON.parse(File.read(persistence_path), symbolize_names: true) :
|
||||
{}
|
||||
persistence[$monitors.key(monitor)] = monitor[:workspaces].length
|
||||
persistence[$monitors.key(monitor)] ||= {}
|
||||
persistence[$monitors.key(monitor)][:length] = monitor[:workspaces].length
|
||||
File.write(persistence_path, JSON.pretty_generate(persistence))
|
||||
end
|
||||
|
||||
keybind(57) do |_event|
|
||||
keybind 57 do |_event|
|
||||
monitor = current_monitor
|
||||
delete_workspace monitor[:workspaces].length - 1, monitor
|
||||
persistence_path = File.join(__dir__, ".num.json")
|
||||
persistence = File.exist?(persistence_path) ?
|
||||
JSON.parse(File.read(persistence_path), symbolize_names: true) :
|
||||
{}
|
||||
persistence[$monitors.key(monitor)] = monitor[:workspaces].length
|
||||
persistence[$monitors.key(monitor)] ||= {}
|
||||
persistence[$monitors.key(monitor)][:length] = monitor[:workspaces].length
|
||||
File.write(persistence_path, JSON.pretty_generate(persistence))
|
||||
end
|
||||
|
||||
keybind(112, 0) do |_event|
|
||||
keybind 110, 0 do |_event|
|
||||
run "dbus-send --print-reply --dest=org.mpris.MediaPlayer2.spotify /org/mpris/MediaPlayer2 org.mpris.MediaPlayer2.Player.Pause;" \
|
||||
"dbus-send --print-reply --dest=$(busctl --user list | grep -oP 'org.mpris.MediaPlayer2.firefox.instance_1_\d+') /org/mpris/MediaPlayer2 org.mpris.MediaPlayer2.Player.PlayPause"
|
||||
end
|
||||
|
||||
keybind 110 do |_event|
|
||||
monitor = current_monitor
|
||||
next_ws = (monitor[:selected_workspace] + 1) % monitor[:workspaces].length
|
||||
persistence_path = File.join(__dir__, ".num.json")
|
||||
persistence = File.exist?(persistence_path) ?
|
||||
JSON.parse(File.read(persistence_path), symbolize_names: true) :
|
||||
{}
|
||||
if monitor[:selected_workspace] == 0
|
||||
select_workspace persistence[$monitors.key(monitor)]&.[](:saved) || 1, monitor
|
||||
else
|
||||
persistence[$monitors.key(monitor)] ||= {}
|
||||
persistence[$monitors.key(monitor)][:saved] = monitor[:selected_workspace]
|
||||
File.write(persistence_path, JSON.pretty_generate(persistence))
|
||||
select_workspace 0, monitor
|
||||
end
|
||||
end
|
||||
|
||||
keybind 118, 0 do |_event|
|
||||
run "dbus-send --print-reply --dest=org.mpris.MediaPlayer2.spotify /org/mpris/MediaPlayer2 org.mpris.MediaPlayer2.Player.PlayPause"
|
||||
end
|
||||
|
||||
keybind 117, 0 do |_event|
|
||||
monitor = current_monitor
|
||||
next if monitor[:selected_workspace].zero?
|
||||
next_ws = (monitor[:selected_workspace] % (monitor[:workspaces].length - 1)) + 1
|
||||
select_workspace next_ws, monitor
|
||||
end
|
||||
|
||||
keybind(112) do |_event|
|
||||
monitor = current_monitor
|
||||
keybind 117 do |_event|
|
||||
pointer = X.get_pointer
|
||||
monitor = current_monitor pointer
|
||||
next if monitor[:selected_workspace].zero?
|
||||
|
||||
window = monitor[:workspaces][monitor[:selected_workspace]].windows.find do |w|
|
||||
pointer[:x] >= w.x &&
|
||||
@@ -74,19 +118,21 @@ keybind(112) do |_event|
|
||||
pointer[:y] < w.y + w.height
|
||||
end
|
||||
|
||||
next_ws = (monitor[:selected_workspace] + 1) % monitor[:workspaces].length
|
||||
next_ws = (monitor[:selected_workspace] % (monitor[:workspaces].length - 1)) + 1
|
||||
monitor[:workspaces][next_ws].drop monitor[:workspaces][next_ws].tiled_windows.length, window if window
|
||||
end
|
||||
|
||||
keybind(117, 0) do |_event|
|
||||
keybind 112, 0 do |_event|
|
||||
monitor = current_monitor
|
||||
next_ws = (monitor[:selected_workspace] - 1) % monitor[:workspaces].length
|
||||
next if monitor[:selected_workspace].zero?
|
||||
next_ws = ((monitor[:selected_workspace] - 2) % (monitor[:workspaces].length - 1)) + 1
|
||||
select_workspace next_ws, monitor
|
||||
end
|
||||
|
||||
keybind(117) do |_event|
|
||||
monitor = current_monitor
|
||||
keybind 112 do |_event|
|
||||
pointer = X.get_pointer
|
||||
monitor = current_monitor pointer
|
||||
next if monitor[:selected_workspace].zero?
|
||||
|
||||
window = monitor[:workspaces][monitor[:selected_workspace]].windows.find do |w|
|
||||
pointer[:x] >= w.x &&
|
||||
@@ -95,21 +141,22 @@ keybind(117) do |_event|
|
||||
pointer[:y] < w.y + w.height
|
||||
end
|
||||
|
||||
next_ws = (monitor[:selected_workspace] - 1) % monitor[:workspaces].length
|
||||
next_ws = ((monitor[:selected_workspace] - 2) % (monitor[:workspaces].length - 1)) + 1
|
||||
monitor[:workspaces][next_ws].drop monitor[:workspaces][next_ws].tiled_windows.length, window if window
|
||||
end
|
||||
|
||||
keybind(27) do |_event|
|
||||
keybind 27 do |_event|
|
||||
load File.join(__dir__, "./bindings.rb")
|
||||
monitor = current_monitor
|
||||
return unless monitor
|
||||
next unless monitor
|
||||
monitor[:workspaces][monitor[:selected_workspace]].switch_direction
|
||||
end
|
||||
|
||||
keybind(55) do |_event|
|
||||
keybind 55 do |_event|
|
||||
run "rofi -modi 'clipboard:greenclip print' -show clipboard -run-command '{cmd}'"
|
||||
end
|
||||
|
||||
keybind(39) do |event|
|
||||
keybind 39 do |event|
|
||||
window = $windows[event[:window]]
|
||||
window.toggle_floating if window
|
||||
end
|
||||
@@ -119,36 +166,17 @@ mousebind 1
|
||||
|
||||
mousebind 3
|
||||
|
||||
mousebind(8, 0) do |_event|
|
||||
mousebind 9, 0 do |_event|
|
||||
monitor = current_monitor
|
||||
next_ws = (monitor[:selected_workspace] + 1) % monitor[:workspaces].length
|
||||
select_workspace next_ws, monitor
|
||||
end
|
||||
|
||||
mousebind 8 do |_event|
|
||||
monitor = current_monitor
|
||||
pointer = X.get_pointer
|
||||
|
||||
window = monitor[:workspaces][monitor[:selected_workspace]].windows.find do |w|
|
||||
pointer[:x] >= w.x &&
|
||||
pointer[:x] < w.x + w.width &&
|
||||
pointer[:y] >= w.y &&
|
||||
pointer[:y] < w.y + w.height
|
||||
end
|
||||
|
||||
next_ws = (monitor[:selected_workspace] + 1) % monitor[:workspaces].length
|
||||
monitor[:workspaces][next_ws].drop monitor[:workspaces][next_ws].tiled_windows.length, window if window
|
||||
end
|
||||
|
||||
mousebind(9, 0) do |_event|
|
||||
monitor = current_monitor
|
||||
next_ws = (monitor[:selected_workspace] - 1) % monitor[:workspaces].length
|
||||
next if monitor[:selected_workspace].zero?
|
||||
next_ws = (monitor[:selected_workspace] % (monitor[:workspaces].length - 1)) + 1
|
||||
select_workspace next_ws, monitor
|
||||
end
|
||||
|
||||
mousebind 9 do |_event|
|
||||
monitor = current_monitor
|
||||
pointer = X.get_pointer
|
||||
monitor = current_monitor pointer
|
||||
next if monitor[:selected_workspace].zero?
|
||||
|
||||
window = monitor[:workspaces][monitor[:selected_workspace]].windows.find do |w|
|
||||
pointer[:x] >= w.x &&
|
||||
@@ -157,6 +185,29 @@ mousebind 9 do |_event|
|
||||
pointer[:y] < w.y + w.height
|
||||
end
|
||||
|
||||
next_ws = (monitor[:selected_workspace] - 1) % monitor[:workspaces].length
|
||||
next_ws = (monitor[:selected_workspace] % (monitor[:workspaces].length - 1)) + 1
|
||||
monitor[:workspaces][next_ws].drop monitor[:workspaces][next_ws].tiled_windows.length, window if window
|
||||
end
|
||||
|
||||
mousebind 8, 0 do |_event|
|
||||
monitor = current_monitor
|
||||
next if monitor[:selected_workspace].zero?
|
||||
next_ws = ((monitor[:selected_workspace] - 2) % (monitor[:workspaces].length - 1)) + 1
|
||||
select_workspace next_ws, monitor
|
||||
end
|
||||
|
||||
mousebind 8 do |_event|
|
||||
pointer = X.get_pointer
|
||||
monitor = current_monitor pointer
|
||||
next if monitor[:selected_workspace].zero?
|
||||
|
||||
window = monitor[:workspaces][monitor[:selected_workspace]].windows.find do |w|
|
||||
pointer[:x] >= w.x &&
|
||||
pointer[:x] < w.x + w.width &&
|
||||
pointer[:y] >= w.y &&
|
||||
pointer[:y] < w.y + w.height
|
||||
end
|
||||
|
||||
next_ws = ((monitor[:selected_workspace] - 2) % (monitor[:workspaces].length - 1)) + 1
|
||||
monitor[:workspaces][next_ws].drop monitor[:workspaces][next_ws].tiled_windows.length, window if window
|
||||
end
|
||||
|
||||
Reference in New Issue
Block a user