57
mod/bspwm_pager
Normal file
57
mod/bspwm_pager
Normal file
@@ -0,0 +1,57 @@
|
||||
# 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()
|
Reference in New Issue
Block a user