From 7fb1ea8cb3fa4b80f684239fb962cfd3288f3e37 Mon Sep 17 00:00:00 2001 From: Syed Daanish Date: Tue, 7 Jul 2026 14:18:33 +0100 Subject: [PATCH] Make persistence path a proper global --- src/ruby/bindings.rb | 28 +++++++++++++++++----------- src/ruby/utils.rb | 12 +++++++----- 2 files changed, 24 insertions(+), 16 deletions(-) diff --git a/src/ruby/bindings.rb b/src/ruby/bindings.rb index ada2035..b447355 100644 --- a/src/ruby/bindings.rb +++ b/src/ruby/bindings.rb @@ -1,3 +1,9 @@ +PERSISTENCE_PATH = File.join( + ENV["XDG_STATE_HOME"] || File.expand_path("~/.local/state"), + "kutu", + "num.json" +) + presets = { normal: [0, X.clk], mod: [X.mod, X.mod | X.clk] @@ -95,23 +101,23 @@ end keybind 56, presets[:mod] do |_event| monitor = current_monitor create_workspace monitor - persistence = File.exist?(persistence_path) ? - JSON.parse(File.read(persistence_path), symbolize_names: true) : + persistence = File.exist?(PERSISTENCE_PATH) ? + JSON.parse(File.read(PERSISTENCE_PATH), symbolize_names: true) : {} persistence[$monitors.key(monitor)] ||= {} persistence[$monitors.key(monitor)][:length] = monitor[:workspaces].length - File.write(persistence_path, JSON.pretty_generate(persistence)) + File.write(PERSISTENCE_PATH, JSON.pretty_generate(persistence)) end keybind 57, presets[:mod] do |_event| monitor = current_monitor delete_workspace monitor[:workspaces].length - 1, monitor - persistence = File.exist?(persistence_path) ? - JSON.parse(File.read(persistence_path), symbolize_names: true) : + persistence = File.exist?(PERSISTENCE_PATH) ? + JSON.parse(File.read(PERSISTENCE_PATH), symbolize_names: true) : {} persistence[$monitors.key(monitor)] ||= {} persistence[$monitors.key(monitor)][:length] = monitor[:workspaces].length - File.write(persistence_path, JSON.pretty_generate(persistence)) + File.write(PERSISTENCE_PATH, JSON.pretty_generate(persistence)) end keybind 110, presets[:normal] do |_event| @@ -132,23 +138,23 @@ end keybind 89, presets[:mod] do |_event| monitor = current_monitor - persistence = File.exist?(persistence_path) ? - JSON.parse(File.read(persistence_path), symbolize_names: true) : + 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)) + File.write(PERSISTENCE_PATH, JSON.pretty_generate(persistence)) select_workspace 0, monitor end end keybind 81, presets[:mod] do |event| monitor = current_monitor - persistence = File.exist?(persistence_path) ? - JSON.parse(File.read(persistence_path), symbolize_names: true) : + persistence = File.exist?(PERSISTENCE_PATH) ? + JSON.parse(File.read(PERSISTENCE_PATH), symbolize_names: true) : {} ws = monitor[:workspaces][ monitor[:selected_workspace] == 0 ? diff --git a/src/ruby/utils.rb b/src/ruby/utils.rb index b60efc0..56e5bb1 100644 --- a/src/ruby/utils.rb +++ b/src/ruby/utils.rb @@ -1,6 +1,8 @@ -persistence_dir = File.join(ENV["XDG_STATE_HOME"] || File.expand_path("~/.local/state"), "kutu") -Dir.mkdir(persistence_dir) unless Dir.exist?(persistence_dir) -persistence_path = File.join(persistence_dir, "num.json") +PERSISTENCE_PATH = File.join( + ENV["XDG_STATE_HOME"] || File.expand_path("~/.local/state"), + "kutu", + "num.json" +) def keybind(key, mod, &block) if mod.is_a? Array @@ -33,8 +35,8 @@ def load_monitors! xrandr_output = `xrandr --query` connected = xrandr_output.each_line.select { |line| line.include?(" connected") } connected.sort_by! { |line| line.include?(" primary") ? 0 : 1 } - persistence = File.exist?(persistence_path) ? - JSON.parse(File.read(persistence_path), symbolize_names: true) : + persistence = File.exist?(PERSISTENCE_PATH) ? + JSON.parse(File.read(PERSISTENCE_PATH), symbolize_names: true) : {} connected.first(2).each_with_index do |line, index| next unless line =~ /(\d+)x(\d+)\+(\d+)\+(\d+)/