58 lines
1.1 KiB
Plaintext
58 lines
1.1 KiB
Plaintext
|
# vim: ft=ruby
|
||
|
|
||
|
class ModBspwmPager < ModBasic
|
||
|
@@mod_name = 'bspwm_pager'
|
||
|
|
||
|
def data_loop()
|
||
|
while true do
|
||
|
IO.popen("bspc subscribe").each do |line|
|
||
|
$panel_data[@@mod_name.to_sym] = parse_data(line.chomp)
|
||
|
$queue << 1
|
||
|
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]
|
||
|
|
||
|
if $config['mod']['bspwm_pager']['blacklist'] != nil
|
||
|
if $config['mod']['bspwm_pager']['blacklist'].include? n
|
||
|
next
|
||
|
end
|
||
|
end
|
||
|
|
||
|
case part
|
||
|
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 $config['mod']['bspwm_pager']['show_empty_desktops']
|
||
|
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
|
||
|
|
||
|
$workers << ModBspwmPager.new.mainloop()
|