rewrote mod_bspwm_pager

Signed-off-by: fbt <fbt@fleshless.org>
This commit is contained in:
Jack L. Frost 2017-05-23 06:20:28 +03:00
parent 717dbfb8bd
commit 71940157c7
1 changed files with 54 additions and 24 deletions

View File

@ -12,38 +12,68 @@ class BspwmPager < Worker
def parse_data(string) def parse_data(string)
# Example: WMDVI-I-1:o1:o2:f3:f4:O5:f6:f7:f8:f9:fh:LT:TF:G # Example: WMDVI-I-1:o1:o2:f3:f4:O5:f6:f7:f8:f9:fh:LT:TF:G
out = [] out = []
monitor = ""
state = {
monitors: {},
layout: ""
}
string[1..-1].split(":").each do |part| string.chomp[1..-1].split(":").each do |part|
n = part[1..-1] n = part[1..-1]
if @my_config['blacklist'] != nil if part[0] =~ /^[Mm]$/
if @my_config['blacklist'].include? n monitor = n
next state[:monitors][monitor] = {
desktops: {}
}
state[:monitors][monitor][:focused] = true if part[0] == "M"
elsif part[0] =~ /^[OFUofu]$/
d_focused = true if part[0] =~ /[OFU]/
d_occupied = true if part[0] =~ /[Oo]/
d_urgent = true if part[0] =~ /[Uu]/
state[:monitors][monitor][:desktops][n] = {
focused: d_focused,
occupied: d_occupied,
urgent: d_urgent
}
elsif part[0] == "L"
state[:layout] = n
end
end
state[:monitors].each do |m_name, m|
if @my_config['monitors'] != nil
next unless @my_config['monitors'].include?(m_name)
end
if state[:monitors].count > 2 or @my_config['show_single_monitor']
if m[:focused]
out << "%{B#{@config['colours']['mon_focused']}} #{m_name} %{B-}"
else
out << " #{m_name} "
end end
end end
case part m[:desktops].each do |d_name, d|
when /^M.+/ if d[:focused]
out << "%{B#{@config['colours']['mon_focused']}} #{n} %{B-}" out << "%{B#{@config['colours']['bg_focused']}} #{d_name} %{B-}"
when /^m.+/ elsif d[:urgent]
out << " #{n} " out << "%{A:bspc desktop -f #{d_name}:}%{R} #{d_name} %{R}%{A}"
when /^(O|F|U).+/ elsif d[:occupied]
out << "%{B#{@config['colours']['bg_focused']}} #{n} %{B-}" out << "%{A:bspc desktop -f #{d_name}:} #{d_name} %{A}"
when /^u.+/ else
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'] if @my_config['show_empty_desktops']
out << " #{n} " out << " #{d_name} "
end
when /^L.+/
case n
when "T"
out << " t "
when "M"
out << " m "
end end
end
end
if state[:layout] == "T"
out << " t "
elsif state[:layout] == "M"
out << " m "
end end
end end