Completely reworked the status bar.

It's now conky -> i3bar. To enable colors, conky produces JSON output.
The script i3bar_wrapper.bash handles the invocation of conky and
redirects the output of i3bar to i3bar_clickparser.bash, in which click
events can be handled (none implemented right now).
conky/virtualarch.conky.dzen is a conky output suitable for dzen2, it
should produce the same output as conky/virtualarch.conky does with
i3bar and JSON.
This commit is contained in:
2013-09-26 12:27:10 +02:00
parent 0e80a0c114
commit 4e5be594d5
7 changed files with 286 additions and 4 deletions

View File

@@ -13,9 +13,9 @@ bindsym XF86AudioLowerVolume exec --no-startup-id amixer set Master %5-
bar {
# always show at the bottom of the screen
mode dock
position bottom
position top
# show a tray area
output VBOX0
tray_output primary
# show workspace buttons
@@ -37,5 +37,6 @@ bar {
}
i3bar_command i3bar
status_command i3status --config $path_i3status_config
status_command bash ~/.i3/i3bar_wrapper.bash
#status_command i3status --config ~/.i3/i3status.d/virtualarch.conf
}

View File

@@ -0,0 +1,135 @@
# vim:set filetype=conkyrc:
# TODO: coloring of LOAD should depend on number of cpus, as it scales accordingly
out_to_console yes
out_to_ncurses no
out_to_stderr no
out_to_x no
short_units yes
double_buffer yes
update_interval 1.0
update_interval_on_battery 1.0
# pad_percents is useless without use_spacer, but the latter leads to some ugly gaps
#pad_percents 2
#use_spacer left
#TEXT
#
#\
#\
#\
#\
TEXT
[
{ "full_text" : " \
CPU: ${cpu cpu0}%\
" , "color" : "\
${if_match ${cpu cpu0} <= 25}\#00FF00\
${else}${if_match ${cpu cpu0} <= 75}\#FFFF00\
${else}\#FF0000\
${endif}\
${endif}\
" , "min_width" : "CPU 00%" },
\
\
\
{ "full_text" : " \
MEM: ${mem}/${memmax} (${memperc}%)\
" , "color" : "\
${if_match ${memperc} <= 50}\#00FF00\
${else}${if_match ${memperc} <= 75}\#FFFF00\
${else}\#FF0000\
${endif}\
${endif}\
" },
\
\
\
{ "full_text" : " \
${if_match "${swapperc}" != "No swap"}\
SWAP: ${swap}/${swapmax} (${swapperc}%)\
${else}\
No swap\
${endif}\
" , "color" : "\
${if_match "${swapperc}" == "No swap"}\#FFFFFF\
${else}${if_match ${swapperc} <= 50}\#00FF00\
${else}${if_match ${swapperc} <= 75}\#FFFF00\
${else}\#FF0000\
${endif}\
${endif}\
${endif}\
" },
\
\
\
${if_mounted /}\
{ "full_text" : " \
/: ${fs_used /}/${fs_size /} (${fs_used_perc /}%)\
" , "color" : "\
${if_match ${fs_used_perc /} <= 70}\#00FF00\
${else}${if_match ${fs_used_perc /} <= 90}\#FFFF00\
${else}\#FF0000\
${endif}\
${endif}\
" },
${endif}\
\
\
\
${if_existing /sys/class/net/enp0s3}
{ "full_text" : " \
enp0s3: \
${if_up enp0s3}\
${addr enp0s3}\
${else}\
E: down\
${endif}\
" , "color" : "\
${if_up enp0s3}\
${if_match "${addr enp0s3}" != "No Address"}\#00FF00\
${else}\#FFFF00\
${endif}\
${else}\#FF0000\
${endif}\
" },
${endif}
\
\
\
{ "full_text" : " \
LOAD: ${loadavg 2}\
" , "color" : "\
${if_match ${loadavg 2} <= 0.7}\#00FF00\
${else}${if_match ${loadavg 2} <= 1}\#FFFF00\
${else}\#FF0000)\
${endif}\
${endif}\
" },
\
\
\
${if_existing /proc/acpi/battery/BATO}\
{ "full_text" : " BAT: ${battery_short} (${battery_time}) " , "color" : "\#FFFFFF" },
${endif}\
\
\
\
{ "full_text" : " KERNEL: ${sysname} ${kernel} " , "color" : "\#FFFFFF" },
\
\
\
{ "full_text" : " HOST: $nodename " , "color" : "\#FFFFFF" },
\
\
\
{ "full_text" : " UP: $uptime_short " , "color" : "\#FFFFFF" },
\
\
\
{ "full_text" : " ${time %a %F %T} " , "color" : "\#FFFFFF" , "name" : "time" }
],

View File

@@ -0,0 +1,94 @@
# TODO: coloring of LOAD should depend on number of cpus, as it scales accordingly
out_to_console yes
out_to_ncurses no
out_to_stderr no
out_to_x no
short_units yes
update_interval 1.0
update_interval_on_battery 1.0
# pad_percents is useless without use_spacer, but the latter leads to some ugly gaps
#pad_percents 2
#use_spacer left
TEXT
${if_existing /sys/class/net/enp0s3}\
${if_up enp0s3}\
enp0s3: \
${if_match "${addr enp0s3}" != "No Address"}^fg(\#00FF00)\
${else}^fg(\#FFFF00)\
${endif}\
${addr enp0s3}\
${else}^fg(\#FF0000)E: down
${endif}^fg() | \
${endif}\
\
\
${if_existing /proc/acpi/battery/BATO}BAT: ${battery_short} (${battery_time}) | ${endif}\
\
\
${if_mounted /}\
/: \
${if_match ${fs_used_perc /} <= 70}^fg(\#00FF00)\
${else}${if_match ${fs_used_perc /} <= 90}^fg(\#FFFF00)\
${else}^fg(\#FF0000)\
${endif}\
${endif}\
${fs_used /}/${fs_size /} (${fs_used_perc /}%)\
^fg() | ${endif}\
\
\
MEM: \
${if_match ${memperc} <= 50}^fg(\#00FF00)\
${else}${if_match ${memperc} <= 75}^fg(\#FFFF00)\
${else}^fg(\#FF0000)\
${endif}\
${endif}\
$mem/$memmax (${memperc}%)^fg() | \
\
\
${if_match "${swapperc}" != "No swap"}\
SWAP: \
${if_match ${swapperc} <= 50}^fg(\#00FF00)\
${else}${if_match ${swapperc} <= 75}^fg(\#FFFF00)\
${else}^fg(\#FF0000)\
${endif}\
${endif}\
${swap}/${swapmax} (${swapperc}%)\
${else}\
No swap\
${endif}\
^fg() | \
\
\
CPU: \
${if_match ${cpu cpu0} <= 25}^fg(\#00FF00)\
${else}${if_match ${cpu cpu0} <= 75}fg(\#FFFF00)\
${else}fg(\#FF0000)\
${endif}\
${endif}\
${cpu cpu0}%^fg() | \
\
\
LOAD: \
${if_match ${loadavg 2} <= 0.7}^fg(\#00FF00)\
${else}${if_match ${loadavg 2} <= 1}fg(\#FFFF00)\
${else}fg(\#FF0000)\
${endif}\
${endif}\
${loadavg 2}^fg() | \
\
\
KERNEL: ${sysname} ${kernel} | \
\
\
HOST: $nodename | \
\
\
UP: $uptime_short | \
\
\
${time %a %F %T} #

View File

@@ -0,0 +1,27 @@
#!/usr/bin/env bash
line="$1
"
log(){
echo $* >> ~/.i3/output_i3bar.log.2
}
# I'm sorry.
getval(){
echo $(echo "$1" | grep -Po "\"$2\":.*?," | awk -F ':' '{print $2}' | tr -d '",')
}
log $line
name="$(getval "$line" "name")"
log $name
case "$name" in
"time")
log "starting dzen with cal"
(echo "$(cal -1m)" ; sleep 15s) | dzen2 -w 100 -l 10 -x 1700 -y 20
;;
esac

6
i3/i3/i3bar_parser.bash Normal file
View File

@@ -0,0 +1,6 @@
#!/usr/bin/env bash
while read line; do
echo $line
echo $line >> ~/.i3/output_i3bar.log
done

19
i3/i3/i3bar_wrapper.bash Normal file
View File

@@ -0,0 +1,19 @@
#!/usr/bin/env bash
# From http://i3wm.org/docs/user-contributed/conky-i3bar.html
# end the header so that i3bar knows we want to use JSON:
echo '{ "version": 1 ,"stop_signal": 10, "cont_signal": 12, "click_events" : true }'
# Begin the endless array.
echo '['
# We send an empty first array of blocks to make the loop simpler:
echo '[],'
# Now send blocks with information forever:
conky -c $HOME/.i3/conky/virtualarch.conky &
while read input ; do
bash ~/.i3/i3bar_clickparser.bash "$input"
done

View File

@@ -6,7 +6,7 @@
[[default]]
scrollbar_position = hidden
palette = "#073642:#dc322f:#859900:#b58900:#268bd2:#d33682:#2aa198:#eee8d5:#002b36:#cb4b16:#586e75:#657b83:#839496:#6c71c4:#93a1a1:#fdf6e3"
font = Consolas 11
font = DejaVu Sans Mono 10
background_image = None
background_darkness = 0.9
urgent_bell = True