class Barr::Blocks::Bspwm
Attributes
focus_markers[R]
invert_focus_colors[RW]
monitor[R]
tree[R]
Public Class Methods
new(opts={})
click to toggle source
Calls superclass method
Barr::Block::new
# File lib/barr/blocks/bspwm.rb, line 11 def initialize opts={} super @monitor = opts[:monitor] || first_monitor @invert_focus_colors = opts[:invert_focus_colors] || false @focus_markers = opts[:focus_markers] || %w(> <) end
Public Instance Methods
bsp_tree()
click to toggle source
# File lib/barr/blocks/bspwm.rb, line 39 def bsp_tree @tree ||= JSON.parse(sys_cmd) end
first_monitor()
click to toggle source
# File lib/barr/blocks/bspwm.rb, line 63 def first_monitor bsp_tree["primaryMonitorName"] end
focused_desktop(desktop)
click to toggle source
# File lib/barr/blocks/bspwm.rb, line 43 def focused_desktop desktop op = "" op += invert_colors if @invert_focus_colors op += @focus_markers[0] + " " op += desktop["name"] op += " " + @focus_markers[1] op += invert_colors if @invert_focus_colors op end
sys_cmd()
click to toggle source
# File lib/barr/blocks/bspwm.rb, line 67 def sys_cmd `bspc wm -d`.chomp end
unfocused_desktop(desktop)
click to toggle source
# File lib/barr/blocks/bspwm.rb, line 54 def unfocused_desktop desktop op = "" op += "%{A:bspc desktop -f #{desktop["name"].gsub(":","\:")}:} " op += "#{desktop["name"]}" op += " %{A}" return op end
update!()
click to toggle source
# File lib/barr/blocks/bspwm.rb, line 18 def update! @tree = nil op = [] focused = "" bsp_tree["monitors"].each do |monitor| next if monitor["name"] != @monitor focused = monitor["focusedDesktopName"] monitor["desktops"].each do |desktop| if desktop["name"] == focused op << focused_desktop(desktop) else op << unfocused_desktop(desktop) end end end @output = op.join(" ") end