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