eh it works sorta maybe
Signed-off-by: fbt <fbt@fleshless.org>
This commit is contained in:
parent
249870e00e
commit
b01792ec1b
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()
|
15
mod/date
Normal file
15
mod/date
Normal file
|
@ -0,0 +1,15 @@
|
||||||
|
# vim: ft=ruby
|
||||||
|
|
||||||
|
class ModDate < ModBasic
|
||||||
|
@@mod_name = 'date'
|
||||||
|
|
||||||
|
def data_loop()
|
||||||
|
while true do
|
||||||
|
$panel_data[@@mod_name.to_sym] = Time.now.strftime($config['mod']['date']['format'])
|
||||||
|
$queue << 1
|
||||||
|
sleep 1
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
$workers << ModDate.new.mainloop()
|
65
moltenbar
Normal file → Executable file
65
moltenbar
Normal file → Executable file
|
@ -1 +1,66 @@
|
||||||
#!/usr/bin/env ruby
|
#!/usr/bin/env ruby
|
||||||
|
|
||||||
|
require 'yaml'
|
||||||
|
|
||||||
|
$queue = Queue.new
|
||||||
|
$workers = []
|
||||||
|
$panel_data = Hash.new("")
|
||||||
|
|
||||||
|
class ModBasic
|
||||||
|
def mainloop()
|
||||||
|
thread = Thread.new {
|
||||||
|
self.data_loop()
|
||||||
|
}
|
||||||
|
|
||||||
|
return thread
|
||||||
|
end
|
||||||
|
|
||||||
|
def data_loop()
|
||||||
|
while true do
|
||||||
|
t = Time.new
|
||||||
|
$panel_data[:dummy] = "#{t}: I am a dummy!"
|
||||||
|
$queue << 1
|
||||||
|
sleep(1)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
argv = ARGV
|
||||||
|
while argv[0] != nil
|
||||||
|
case argv[0]
|
||||||
|
when "-h", "--help"
|
||||||
|
puts "HELP"
|
||||||
|
end
|
||||||
|
|
||||||
|
argv.shift()
|
||||||
|
end
|
||||||
|
|
||||||
|
$config = YAML.load_file('./rc.yaml')
|
||||||
|
|
||||||
|
load './rc'
|
||||||
|
|
||||||
|
Dir["./mod/*"].each do |file|
|
||||||
|
load file
|
||||||
|
end
|
||||||
|
|
||||||
|
lemonbar_cmd = [
|
||||||
|
"lemonbar",
|
||||||
|
"-g", $config['geometry'],
|
||||||
|
"-f", $config['fontspec'],
|
||||||
|
"-n", $config['window_name'],
|
||||||
|
"-a", $config['active_areas'],
|
||||||
|
"-F", $config['colours']['fg'],
|
||||||
|
"-B", $config['colours']['bg']
|
||||||
|
]
|
||||||
|
|
||||||
|
puts "Launching lemonbar as: " + lemonbar_cmd.join(" ")
|
||||||
|
|
||||||
|
trap("SIGINT") { exit 0 }
|
||||||
|
trap("SIGUSR1") { $queue << 1 }
|
||||||
|
|
||||||
|
IO.popen(lemonbar_cmd, "w") do |pipe|
|
||||||
|
while true do
|
||||||
|
data = $queue.pop
|
||||||
|
pipe.puts draw()
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
15
rc
Normal file
15
rc
Normal file
|
@ -0,0 +1,15 @@
|
||||||
|
# vim: ft=ruby
|
||||||
|
|
||||||
|
def draw()
|
||||||
|
bg_f = $config['colours']['bg_focused']
|
||||||
|
|
||||||
|
panel = [
|
||||||
|
$panel_data[:bspwm_pager],
|
||||||
|
"%{r}",
|
||||||
|
"%{F#{bg_f}}%{F-}%{B#{bg_f}} ",
|
||||||
|
$panel_data[:date],
|
||||||
|
" %{B-}"
|
||||||
|
]
|
||||||
|
|
||||||
|
return panel.join
|
||||||
|
end
|
19
rc.yaml
Normal file
19
rc.yaml
Normal file
|
@ -0,0 +1,19 @@
|
||||||
|
# vim: ft=yaml
|
||||||
|
|
||||||
|
geometry: '1902x14+9+9'
|
||||||
|
fontspec: '-*-terminesspowerline-medium-*-normal-*-14-*-*-*-*-*-iso10646-*'
|
||||||
|
window_name: 'moltenbar'
|
||||||
|
active_areas: '128'
|
||||||
|
colours:
|
||||||
|
fg: '#f9f9f9'
|
||||||
|
fg_focused: '#f9f9f9'
|
||||||
|
bg: '#29303A'
|
||||||
|
bg_focused: '#467EC2'
|
||||||
|
mod:
|
||||||
|
bspwm_pager:
|
||||||
|
colour_focused: '#f9f9f9'
|
||||||
|
show_empty_desktops: false
|
||||||
|
blacklist:
|
||||||
|
-h
|
||||||
|
date:
|
||||||
|
format: '%A, %Y.%m.%d %H:%M:%S'
|
Loading…
Reference in New Issue
Block a user