Make the statusbar clickable and output some info.
This commit is contained in:
@@ -1,5 +1,4 @@
|
|||||||
# vim:set filetype=conkyrc:
|
# vim:set filetype=conkyrc:
|
||||||
# TODO: coloring of LOAD should depend on number of cpus, as it scales accordingly
|
|
||||||
out_to_console yes
|
out_to_console yes
|
||||||
out_to_ncurses no
|
out_to_ncurses no
|
||||||
out_to_stderr no
|
out_to_stderr no
|
||||||
@@ -18,79 +17,12 @@ update_interval_on_battery 1.0
|
|||||||
|
|
||||||
TEXT
|
TEXT
|
||||||
[
|
[
|
||||||
{ "full_text" : " ${cpu cpu0}%\
|
{ "full_text" : " " }, \
|
||||||
" , "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}/${memmax} (${memperc}%)\
|
|
||||||
" , "color" : "\
|
|
||||||
${if_match ${memperc} <= 50}\#00FF00\
|
|
||||||
${else}${if_match ${memperc} <= 75}\#FFFF00\
|
|
||||||
${else}\#FF0000\
|
|
||||||
${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_mounted /home}\
|
|
||||||
{ "full_text" : " \
|
|
||||||
/home: ${fs_used /home}/${fs_size /home} (${fs_used_perc /home}%)\
|
|
||||||
" , "color" : "\
|
|
||||||
${if_match ${fs_used_perc /home} <= 70}\#00FF00\
|
|
||||||
${else}${if_match ${fs_used_perc /home} <= 90}\#FFFF00\
|
|
||||||
${else}\#FF0000\
|
|
||||||
${endif}\
|
|
||||||
${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_existing /sys/class/net/wlp2s0}\
|
${if_existing /sys/class/net/wlp2s0}\
|
||||||
{ "full_text" : " \
|
{ "full_text" : " \
|
||||||
${if_up wlp2s0}\
|
${if_up wlp2s0}\
|
||||||
${if_match "${addr wlp2s0}" != "No Address"}\
|
${if_match "${addr wlp2s0}" != "No Address"}\
|
||||||
${addr wlp2s0} @ ${wireless_essid wlp2s0} (${wireless_link_qual_perc wlp2s0}%)\
|
${wireless_essid wlp2s0} (${wireless_link_qual_perc wlp2s0}%)\
|
||||||
${else}\
|
${else}\
|
||||||
No Address\
|
No Address\
|
||||||
${endif}\
|
${endif}\
|
||||||
@@ -105,14 +37,14 @@ ${if_match ${wireless_link_qual_perc wlp2s0} <= 25}\
|
|||||||
${else}${if_match ${wireless_link_qual_perc wlp2s0} <= 50}\
|
${else}${if_match ${wireless_link_qual_perc wlp2s0} <= 50}\
|
||||||
\#FFFF00\
|
\#FFFF00\
|
||||||
${else}\
|
${else}\
|
||||||
\#00FF00\
|
\#FFFFFF\
|
||||||
${endif}\
|
${endif}\
|
||||||
${endif}\
|
${endif}\
|
||||||
${else}\#FFFF00\
|
${else}\#FFFF00\
|
||||||
${endif}\
|
${endif}\
|
||||||
${else}\#FF0000\
|
${else}\#FF0000\
|
||||||
${endif}\
|
${endif}\
|
||||||
" },\
|
" , "name" : "wireless" },\
|
||||||
${endif}
|
${endif}
|
||||||
\
|
\
|
||||||
\
|
\
|
||||||
@@ -177,45 +109,33 @@ ${endif}
|
|||||||
\
|
\
|
||||||
\
|
\
|
||||||
\
|
\
|
||||||
{ "full_text" : " ${loadavg 2}\
|
|
||||||
" , "color" : "\
|
|
||||||
${if_match ${loadavg 2} <= 0.7}\#00FF00\
|
|
||||||
${else}${if_match ${loadavg 2} <= 1}\#FFFF00\
|
|
||||||
${else}\#FF0000)\
|
|
||||||
${endif}\
|
|
||||||
${endif}\
|
|
||||||
" },\
|
|
||||||
\
|
|
||||||
\
|
|
||||||
\
|
|
||||||
{ "full_text" : " \
|
{ "full_text" : " \
|
||||||
${if_match ${mixer} == 0}\
|
${pre_exec bash $HOME/.i3/scripts/pa-volume.bash status} " , "color" : "\#FFFFFF" , "name" : "volume" },\
|
||||||
mute\
|
|
||||||
${else}\
|
|
||||||
${mixer}%\
|
|
||||||
${endif}\
|
|
||||||
" , "color" : "\#FFFFFF" },\
|
|
||||||
\
|
\
|
||||||
\
|
\
|
||||||
\
|
\
|
||||||
${if_existing /sys/class/power_supply/BAT1}\
|
${if_existing /sys/class/power_supply/BAT1}\
|
||||||
{ "full_text" : " ${execi 5 head -c 1 /sys/class/power_supply/BAT1/status} ${execi 5 cat /sys/class/power_supply/BAT1/capacity}% " , "color" : "\#FFFFFF" },\
|
${execi 10 bash $HOME/.i3/scripts/status.d/battery.bash conky}\
|
||||||
${endif}\
|
${endif}\
|
||||||
\
|
\
|
||||||
\
|
\
|
||||||
\
|
\
|
||||||
{ "full_text" : " ${kernel} " , "color" : "\#FFFFFF" },\
|
{ "full_text" : " ${kernel} " , "color" : "\#FFFFFF" , "name" : "sysinfo" },\
|
||||||
\
|
\
|
||||||
\
|
\
|
||||||
\
|
\
|
||||||
{ "full_text" : " $nodename " , "color" : "\#FFFFFF" },\
|
{ "full_text" : " ${execi 60 bash ~/.i3/scripts/status.d/conky_pacman.bash} " , "color" : "\#FFFFFF" , "name" : "pacman" },\
|
||||||
\
|
\
|
||||||
\
|
\
|
||||||
\
|
\
|
||||||
{ "full_text" : " $uptime_short " , "color" : "\#FFFFFF" },\
|
{ "full_text" : " $uptime_short " , "color" : "\#FFFFFF" , "name" : "sysinfo" },\
|
||||||
\
|
\
|
||||||
\
|
\
|
||||||
\
|
\
|
||||||
{ "full_text" : " ${time %a %F %T} " , "color" : "\#FFFFFF" , "name" : "time" }\
|
{ "full_text" : " ${time %a %F %T} " , "color" : "\#FFFFFF" , "name" : "time" },\
|
||||||
|
\
|
||||||
|
\
|
||||||
|
\
|
||||||
|
{ "full_text" : "" }\
|
||||||
],
|
],
|
||||||
|
|
||||||
|
|||||||
@@ -1,28 +0,0 @@
|
|||||||
#!/usr/bin/env bash
|
|
||||||
|
|
||||||
line="$1"
|
|
||||||
|
|
||||||
log(){
|
|
||||||
echo $* >> ~/.i3/logs/output_i3bar.log
|
|
||||||
}
|
|
||||||
|
|
||||||
# I'm sorry.
|
|
||||||
getval(){
|
|
||||||
echo $(echo "$1" | grep -Po "\"$2\":.*?," | awk -F ':' '{print $2}' | tr -d '",')
|
|
||||||
}
|
|
||||||
|
|
||||||
log "line: $line"
|
|
||||||
|
|
||||||
name="$(getval "$line" "name")"
|
|
||||||
log "name: $name"
|
|
||||||
|
|
||||||
case "$name" in
|
|
||||||
"time")
|
|
||||||
log "starting dzen with cal"
|
|
||||||
(echo "$(cal -1m)" ; sleep 15s) | dzen2 -w 100 -l 10 -x 1700 -y 20 &
|
|
||||||
;;
|
|
||||||
"mpd_status")
|
|
||||||
mpc toggle
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
|
|
||||||
@@ -1,6 +0,0 @@
|
|||||||
#!/usr/bin/env bash
|
|
||||||
|
|
||||||
while read line; do
|
|
||||||
echo $line
|
|
||||||
echo $line >> ~/.i3/output_i3bar.log
|
|
||||||
done
|
|
||||||
@@ -1,8 +1,59 @@
|
|||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
# From http://i3wm.org/docs/user-contributed/conky-i3bar.html
|
# From http://i3wm.org/docs/user-contributed/conky-i3bar.html
|
||||||
|
|
||||||
|
# the height of the i3bar in pixels. used to align the yad windows.
|
||||||
|
I3BAR_HEIGHT=24
|
||||||
|
|
||||||
|
# the width of the screen in pixels.
|
||||||
|
X_MAX=1920
|
||||||
|
|
||||||
|
# paths to scripts used.
|
||||||
|
PA_VOLUME_SCRIPT="$HOME/.i3/scripts/pa-volume.bash"
|
||||||
|
I3BAR_UPDATE="$HOME/.i3/scripts/update-status.bash"
|
||||||
|
LOGFILE="$HOME/.i3/logs/output_i3bar.log"
|
||||||
|
SCRIPTS_SYSINFO="$HOME/.i3/scripts/status.d/sysinfo.bash"
|
||||||
|
SCRIPTS_WIRELESS="$HOME/.i3/scripts/status.d/wireless.bash"
|
||||||
|
SCRIPTS_BATTERY="$HOME/.i3/scripts/status.d/battery.bash"
|
||||||
|
SCRIPTS_PACMAN="$HOME/.i3/scripts/status.d/pacman.bash"
|
||||||
|
PIDFILE="$HOME/.i3/logs/conky.pid"
|
||||||
|
|
||||||
|
COLOR_FG="#FFFFFF"
|
||||||
|
COLOR_BG="#222222"
|
||||||
|
|
||||||
|
GTK_THEME="/usr/share/themes/Boje-Greyscale/gtk-2.0/gtkrc"
|
||||||
|
YAD_PREFIX="GTK2_RC_FILES=$GTK_THEME"
|
||||||
|
|
||||||
|
FONT="DejaVu Sans Mono 11"
|
||||||
|
|
||||||
|
echo > "$LOGFILE"
|
||||||
|
|
||||||
|
log() {
|
||||||
|
echo $* >> "$LOGFILE"
|
||||||
|
}
|
||||||
|
|
||||||
|
update() {
|
||||||
|
bash $I3BAR_UPDATE
|
||||||
|
}
|
||||||
|
|
||||||
|
get_x() {
|
||||||
|
x=$1
|
||||||
|
width=$2
|
||||||
|
pos=$(( $x - ($width / 2) ))
|
||||||
|
if [[ $(( $pos + $width )) -gt $X_MAX ]] ; then
|
||||||
|
log "window would exceed the right screen border. adjusting"
|
||||||
|
pos=$(( $X_MAX - $width ))
|
||||||
|
fi
|
||||||
|
echo $pos
|
||||||
|
}
|
||||||
|
|
||||||
|
# I'm sorry.
|
||||||
|
getval() {
|
||||||
|
echo $(echo "$1" | grep -Po "\"$2\":.*?," | awk -F ':' '{print $2}' | tr -d '",')
|
||||||
|
}
|
||||||
|
|
||||||
path_conkyrc="$1"
|
path_conkyrc="$1"
|
||||||
|
|
||||||
|
|
||||||
# end the header so that i3bar knows we want to use JSON:
|
# end the header so that i3bar knows we want to use JSON:
|
||||||
echo '{ "version" : 1 , "click_events" : true }'
|
echo '{ "version" : 1 , "click_events" : true }'
|
||||||
|
|
||||||
@@ -15,7 +66,136 @@ echo '[],'
|
|||||||
# Now send blocks with information forever:
|
# Now send blocks with information forever:
|
||||||
conky -c "$path_conkyrc" &
|
conky -c "$path_conkyrc" &
|
||||||
|
|
||||||
while read input ; do
|
echo $! > "$PIDFILE"
|
||||||
bash ~/.i3/i3bar_clickparser.bash "$input"
|
|
||||||
|
while read line ; do
|
||||||
|
# This part must not produce any output to stdout as this would be sent
|
||||||
|
# to i3bar and crash it due to wrong formatting.
|
||||||
|
|
||||||
|
log "line: $line"
|
||||||
|
|
||||||
|
name="$(getval "$line" "name")"
|
||||||
|
log "name: $name"
|
||||||
|
|
||||||
|
case "$name" in
|
||||||
|
|
||||||
|
"pacman")
|
||||||
|
width=500
|
||||||
|
height=700
|
||||||
|
x=$(get_x $(getval "$line" "x") $width)
|
||||||
|
bash "$SCRIPTS_PACMAN" | env $YAD_PREFIX yad \
|
||||||
|
--text-info \
|
||||||
|
--class=yad-status \
|
||||||
|
--button !gtk-apply:0 \
|
||||||
|
--button "update"!go-down:1 \
|
||||||
|
--button "reload"!gtk-refresh:2 \
|
||||||
|
--buttons-layout center \
|
||||||
|
--fore "$COLOR_FG" \
|
||||||
|
--back "$COLOR_BG" \
|
||||||
|
--fontname="$FONT" \
|
||||||
|
--geometry ${width}x${height}+${x}+${I3BAR_HEIGHT}
|
||||||
|
button=$?
|
||||||
|
if [[ $button == 1 ]] ; then
|
||||||
|
log "update requested"
|
||||||
|
urxvt -e sudo pacman -Syu
|
||||||
|
elif [[ $button == 2 ]] ; then
|
||||||
|
log "packagelist reload requested"
|
||||||
|
urxvt -e sudo pacman -Sy
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
"wireless")
|
||||||
|
width=500
|
||||||
|
height=700
|
||||||
|
x=$(get_x $(getval "$line" "x") $width)
|
||||||
|
bash "$SCRIPTS_WIRELESS" | env $YAD_PREFIX yad \
|
||||||
|
--text-info \
|
||||||
|
--class=yad-status \
|
||||||
|
--button !gtk-apply:0 \
|
||||||
|
--buttons-layout center \
|
||||||
|
--fore "$COLOR_FG" \
|
||||||
|
--back "$COLOR_BG" \
|
||||||
|
--fontname="$FONT" \
|
||||||
|
--geometry ${width}x${height}+${x}+${I3BAR_HEIGHT}
|
||||||
|
;;
|
||||||
|
"battery")
|
||||||
|
width=250
|
||||||
|
height=150
|
||||||
|
x=$(get_x $(getval "$line" "x") $width)
|
||||||
|
bash "$SCRIPTS_BATTERY" | env $YAD_PREFIX yad \
|
||||||
|
--text-info \
|
||||||
|
--class=yad-status \
|
||||||
|
--button !gtk-apply:0 \
|
||||||
|
--buttons-layout center \
|
||||||
|
--fore "$COLOR_FG" \
|
||||||
|
--back "$COLOR_BG" \
|
||||||
|
--fontname="$FONT" \
|
||||||
|
--geometry ${width}x${height}+${x}+${I3BAR_HEIGHT}
|
||||||
|
;;
|
||||||
|
"time")
|
||||||
|
width=300
|
||||||
|
height=0
|
||||||
|
x=$(get_x $(getval "$line" "x") $width)
|
||||||
|
env $YAD_PREFIX yad \
|
||||||
|
--calendar \
|
||||||
|
--class=yad-status \
|
||||||
|
--button !gtk-apply:0 \
|
||||||
|
--buttons-layout center \
|
||||||
|
--geometry ${width}x${height}+${x}+${I3BAR_HEIGHT} >/dev/null
|
||||||
|
;;
|
||||||
|
"mpd_status")
|
||||||
|
mpc toggle
|
||||||
|
;;
|
||||||
|
"sysinfo")
|
||||||
|
# i should rather write an extra script
|
||||||
|
width=600
|
||||||
|
height=800
|
||||||
|
x=$(get_x $(getval "$line" "x") $width)
|
||||||
|
bash "$SCRIPTS_SYSINFO" | env $YAD_PREFIX yad \
|
||||||
|
--text-info \
|
||||||
|
--class=yad-status \
|
||||||
|
--button !gtk-apply:0 \
|
||||||
|
--buttons-layout center \
|
||||||
|
--fore "$COLOR_FG" \
|
||||||
|
--back "$COLOR_BG" \
|
||||||
|
--fontname="$FONT" \
|
||||||
|
--geometry ${width}x${height}+${x}+${I3BAR_HEIGHT}
|
||||||
|
;;
|
||||||
|
"volume")
|
||||||
|
width=300
|
||||||
|
height=0
|
||||||
|
x=$(get_x $(getval "$line" "x") $width)
|
||||||
|
vol=$(bash $PA_VOLUME_SCRIPT get-vol)
|
||||||
|
log "got current volume: $vol"
|
||||||
|
is_muted=$(bash $PA_VOLUME_SCRIPT is-muted)
|
||||||
|
if [[ "$is_muted" == 0 ]] ; then
|
||||||
|
button_mute_text="mute"
|
||||||
|
else
|
||||||
|
button_mute_text="unmute"
|
||||||
|
fi
|
||||||
|
newvol=$(env $YAD_PREFIX yad \
|
||||||
|
--text=Volume: \
|
||||||
|
--scale \
|
||||||
|
--class=yad-status \
|
||||||
|
--button !gtk-apply:0 \
|
||||||
|
--button !gtk-cancel:1 \
|
||||||
|
--button ${button_mute_text}!:2 \
|
||||||
|
--buttons-layout center \
|
||||||
|
--value $vol \
|
||||||
|
--text-align center \
|
||||||
|
--min-value 0 \
|
||||||
|
--max-value 100 \
|
||||||
|
--step 1 \
|
||||||
|
--geometry ${width}x${height}+${x}+${I3BAR_HEIGHT}
|
||||||
|
)
|
||||||
|
button=$?
|
||||||
|
if [[ $button == 2 ]] ; then
|
||||||
|
bash $PA_VOLUME_SCRIPT mute-toggle
|
||||||
|
elif [[ $button == 0 ]] ; then
|
||||||
|
bash $PA_VOLUME_SCRIPT set-vol $newvol
|
||||||
|
fi
|
||||||
|
update
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
done
|
done
|
||||||
|
|
||||||
|
|||||||
1
i3/i3/scripts/update-status.bash
Normal file
1
i3/i3/scripts/update-status.bash
Normal file
@@ -0,0 +1 @@
|
|||||||
|
kill -SIGUSR1 $(cat $HOME/.i3/logs/conky.pid)
|
||||||
Reference in New Issue
Block a user