# vim: ft=ruby class BspwmPager < Worker def mainloop() IO.popen("bspc subscribe") do |pipe| pipe.each do |line| self.write parse_data(line) end end end def parse_data(string) # Example: WMDVI-I-1:o1:o2:f3:f4:O5:f6:f7:f8:f9:fh:LT:TF:G out = [] string[1..-1].split(":").each do |part| n = part[1..-1] if @my_config['blacklist'] != nil if @my_config['blacklist'].include? n next end end case part when /^M.+/ out << "%{B#{@config['colours']['mon_focused']}} #{n} %{B-}" when /^m.+/ out << " #{n} " when /^(O|F|U).+/ out << "%{B#{@config['colours']['bg_focused']}} #{n} %{B-}" when /^u.+/ out << "%{A:bspc desktop -f #{n}:}%{R} #{n} %{R}%{A}" when /^o.+/ out << "%{A:bspc desktop -f #{n}:} #{n} %{A}" when /^f.+/ if @my_config['show_empty_desktops'] out << " #{n} " end when /^L.+/ case n when "T" out << " t " when "M" out << " m " end end end return out.join.chomp end end Modules.add("bspwm_pager", "BspwmPager")