From 2c253da55d3def50c1479ebb9b456545073defb3 Mon Sep 17 00:00:00 2001 From: Syed Daanish Date: Wed, 29 Oct 2025 19:32:44 +0000 Subject: [PATCH] Formatting fixes --- kutu-run.rb | 12 +++---- kutu.rb | 23 ++++++------- src/ruby/bindings.rb | 77 ++++++++++++++++---------------------------- 3 files changed, 43 insertions(+), 69 deletions(-) diff --git a/kutu-run.rb b/kutu-run.rb index 39f4fb1..967da5e 100755 --- a/kutu-run.rb +++ b/kutu-run.rb @@ -4,14 +4,14 @@ require "socket" SOCK_PATH = "/tmp/kutu.sock" -client = Socket.new(:UNIX, :DGRAM) - cli_addr_path = "/tmp/kutu_client#{Process.pid}.sock" -File.delete(cli_addr_path) if File.exist?(cli_addr_path) -client.bind(Socket.pack_sockaddr_un(cli_addr_path)) +File.delete cli_addr_path if File.exist? cli_addr_path -client.send(ARGV.join(" "), 0, Socket.pack_sockaddr_un(SOCK_PATH)) +client = Socket.new :UNIX, :DGRAM +client.bind Socket.pack_sockaddr_un(cli_addr_path) -data, = client.recvfrom(1024) +client.send ARGV.join(" "), 0, Socket.pack_sockaddr_un(SOCK_PATH) + +data, = client.recvfrom 1024 puts data diff --git a/kutu.rb b/kutu.rb index 86a7e39..fd79eed 100755 --- a/kutu.rb +++ b/kutu.rb @@ -16,7 +16,7 @@ require 'socket' if X.deploy >= 0 puts "Started kutu WM for X11 successfully! :)" else - raise "Failed to deploy X" + raise "Failed to deploy X, try running using xinit or startx." end @@ -72,28 +72,25 @@ load File.join(__dir__, "./src/ruby/bindings.rb") # Setup unix socket SOCK_PATH = "/tmp/kutu.sock" -File.delete(SOCK_PATH) if File.exist?(SOCK_PATH) +File.delete SOCK_PATH if File.exist? SOCK_PATH -$socket = Socket.new(:UNIX, :DGRAM) -$socket.bind(Socket.pack_sockaddr_un(SOCK_PATH)) +$socket = Socket.new :UNIX, :DGRAM +$socket.bind Socket.pack_sockaddr_un(SOCK_PATH) # Main loop loop do + sleep 0.001 + if IO.select([$socket], nil, nil, 0) - command, sender = $socket.recvfrom(1024) - reply = handle_command(command) - $socket.send(JSON.generate(reply), 0, sender) + command, sender = $socket.recvfrom 1024 + reply = handle_command command + $socket.send JSON.generate(reply), 0, sender end event_pointer = X.next_event - if !event_pointer.null? - event = X.translate_event(event_pointer) - handle_event(event) - end + handle_event X.translate_event(event_pointer) if !event_pointer.null? X.flush - - sleep 0.001 end diff --git a/src/ruby/bindings.rb b/src/ruby/bindings.rb index cc36ea7..d09d722 100644 --- a/src/ruby/bindings.rb +++ b/src/ruby/bindings.rb @@ -131,6 +131,19 @@ keybind 110 do |_event| end end +keybind 115 do |event| + monitor = current_monitor + persistence_path = File.join(__dir__, ".num.json") + persistence = File.exist?(persistence_path) ? + JSON.parse(File.read(persistence_path), symbolize_names: true) : + {} + ws = monitor[:workspaces][ + monitor[:selected_workspace] == 0 ? + monitor[:workspaces][persistence[$monitors.key(monitor)]&.[](:saved) || 1] : 0 + ] + ws.drop ws.tiled_windows.length, $windows[event[:window]] if $windows[event[:window]] +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 @@ -142,20 +155,11 @@ keybind 117, 0 do |_event| select_workspace next_ws, monitor end -keybind 117 do |_event| - pointer = X.get_pointer - monitor = current_monitor pointer +keybind 117 do |event| + monitor = current_monitor 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] % (monitor[:workspaces].length - 1)) + 1 - monitor[:workspaces][next_ws].drop monitor[:workspaces][next_ws].tiled_windows.length, window if window + ws = monitor[:workspaces][(monitor[:selected_workspace] % (monitor[:workspaces].length - 1)) + 1] + ws.drop ws.tiled_windows.length, $windows[event[:window]] if $windows[event[:window]] end keybind 112, 0 do |_event| @@ -165,20 +169,11 @@ keybind 112, 0 do |_event| select_workspace next_ws, monitor end -keybind 112 do |_event| - pointer = X.get_pointer - monitor = current_monitor pointer +keybind 112 do |event| + monitor = current_monitor 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 + ws = monitor[:workspaces][((monitor[:selected_workspace] - 2) % (monitor[:workspaces].length - 1)) + 1] + ws.drop ws.tiled_windows.length, $windows[event[:window]] if $windows[event[:window]] end keybind 27 do |_event| @@ -209,19 +204,10 @@ mousebind 9, 0 do |_event| end mousebind 9 do |_event| - pointer = X.get_pointer - monitor = current_monitor pointer + monitor = current_monitor 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] % (monitor[:workspaces].length - 1)) + 1 - monitor[:workspaces][next_ws].drop monitor[:workspaces][next_ws].tiled_windows.length, window if window + ws = monitor[:workspaces][(monitor[:selected_workspace] % (monitor[:workspaces].length - 1)) + 1] + ws.drop ws.tiled_windows.length, $windows[event[:window]] if $windows[event[:window]] end mousebind 8, 0 do |_event| @@ -232,17 +218,8 @@ mousebind 8, 0 do |_event| end mousebind 8 do |_event| - pointer = X.get_pointer - monitor = current_monitor pointer + monitor = current_monitor 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 + ws = monitor[:workspaces][((monitor[:selected_workspace] - 2) % (monitor[:workspaces].length - 1)) + 1] + ws.drop ws.tiled_windows.length, $windows[event[:window]] if $windows[event[:window]] end