2016-09-27 01:18:43 +00:00
|
|
|
# vim: ft=ruby
|
|
|
|
|
2016-09-28 20:30:07 +00:00
|
|
|
class BspwmPager < Worker
|
|
|
|
def mainloop()
|
2016-10-22 23:07:59 +00:00
|
|
|
IO.popen("bspc subscribe") do
|
|
|
|
|pipe|
|
|
|
|
|
2016-09-27 10:03:14 +00:00
|
|
|
pipe.each do |line|
|
2016-09-29 14:05:35 +00:00
|
|
|
monitor = line.split(":")[0]
|
2016-09-29 14:03:30 +00:00
|
|
|
|
2016-10-04 12:34:25 +00:00
|
|
|
if @my_config.has_key?("monitors") == false || @my_config['monitors'].include?(monitor)
|
2016-09-29 14:03:30 +00:00
|
|
|
self.write parse_data(line)
|
|
|
|
end
|
2016-09-27 01:18:43 +00:00
|
|
|
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.split(":").each do |part|
|
|
|
|
n = part[1..-1]
|
|
|
|
|
2016-10-04 12:34:25 +00:00
|
|
|
if @my_config['blacklist'] != nil
|
|
|
|
if @my_config['blacklist'].include? n
|
2016-09-27 01:18:43 +00:00
|
|
|
next
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
case part
|
|
|
|
when /^(O|F|U).+/
|
2016-09-28 20:30:07 +00:00
|
|
|
out << "%{B#{@config['colours']['bg_focused']}} #{n} %{B-}"
|
2016-09-27 01:18:43 +00:00
|
|
|
when /^u.+/
|
|
|
|
out << "%{A:bspc desktop -f #{n}:}%{R} #{n} %{R}%{A}"
|
|
|
|
when /^o.+/
|
|
|
|
out << "%{A:bspc desktop -f #{n}:} #{n} %{A}"
|
|
|
|
when /^f.+/
|
2016-10-04 12:34:25 +00:00
|
|
|
if @my_config['show_empty_desktops']
|
2016-09-27 01:18:43 +00:00
|
|
|
out << " #{n} "
|
|
|
|
end
|
|
|
|
when /^L.+/
|
|
|
|
@layout = n
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
case @layout
|
|
|
|
when "T"
|
|
|
|
layout_flag = "t"
|
|
|
|
when "M"
|
|
|
|
layout_flag = "m"
|
|
|
|
end
|
|
|
|
|
|
|
|
out << " #{layout_flag} "
|
|
|
|
|
|
|
|
return out.join.chomp
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
2016-09-28 20:30:07 +00:00
|
|
|
Modules.add("bspwm_pager", "BspwmPager")
|