blog · git · desktop · images · contact & privacy · gopher


Conky.

Wohl an der Zeit, mal wieder was zu posten. Im Moment fällt mir leider nichts anderes ein als meine .conkyrc samt zugehörigen Scripts ... :ugly: Vielleicht ja hier oder da interessant. Ist prinzipiell Xfce ohne Panels, dafür ein gepatchtes tint 0.6 und eben conky.

Screenshot

Einige der Sachen gingen laut Manpage auch ohne externe Scripts, allerdings waren zu der Zeit, als ich das gebaut habe, ein paar Funktionen funktionsuntüchtig. Kann sein, dass sich das mittlerweile geändert hat...

.conkyrc

use_xft yes
xftfont Terminus:size=10
update_interval 1.0

own_window yes
own_window_type normal
own_window_hints undecorated,skip_pager,skip_taskbar,sticky,below
alignment bottom_right
gap_x 2
gap_y 2

own_window_transparent yes
own_window_colour black
minimum_size 439

double_buffer yes
draw_shades no
draw_outline no
draw_borders no
draw_graph_borders yes
stippled_borders 0
border_margin 4
border_width 0
default_color white
default_shade_color black
default_outline_color black

short_units yes

color1 F0F000
color2 FF0000

TEXT
${color1}cpu1${color}: ${cpugraph cpu1 9,22 303030 FFFFFF} | ${color1}mem${color} | ${color1}${texeci 30 ~/.conky/getcuriface.sh}${color}: ${texeci 30 ~/.conky/getlocalip.sh $(~/.conky/getcuriface.sh)} | ${color2}${texeci 10 ~/.conky/newmail-conky.sh}${color} ${color1}${font Terminus:bold:size=10}${time %H:%M}${font}${color}
${color1}cpu2${color}: ${cpugraph cpu2 9,22 303030 FFFFFF} | ${membar 5,24} | ${color1}pwr${color}: ${texeci 10 ~/.conky/powerinfo.sh} | ${time %a, %d.%m.%y}

getcuriface.sh

#!/bin/bash

IFACE=$(route -n | grep "^\(0.0.0.0\)")
if [[ -z $IFACE ]]
then
    IFACE="none"
else
    IFACE=$(echo $IFACE | cut -d" " -f8)
fi

printf "%-5s" $IFACE

getlocalip.sh

#!/bin/bash

thisip=$( (ifconfig $1 2>/dev/null) | grep 'inet addr' | cut -d: -f2 | cut -d" " -f1)
if [[ -z $thisip ]]
then
    printf "%15s" 0.0.0.0
else
    printf "%15s" $thisip
fi

newmail-conky.sh

#!/bin/bash

MAILROOT="$HOME/Mail"

# Erwartet Maildirs im $MAILROOT...

# Ein bisschen tricksen: Gibt an, ob ein Verzeichnis leer ist.
# Das ist so wesentlich schneller, als die Ausgabe von "ls"
# zu verarbeiten ...
function isDirEmpty()
{
    cd "$1"

    for x in *
    do
        if [[ "$x" == "*" ]]
        then
            cd "$OLDPWD"
            return 0
        else
            cd "$OLDPWD"
            return 1
        fi
    done
}

# Bei jedem Maildir schauen, wieviele Objekte
# in "new/" liegen bzw. ob da leer ist
for i in "$MAILROOT"/.*/new
do
    isDirEmpty "$i"
    if (( $? == 1 ))
    then
        printf "%-6s" 'Mail!'
        exit 0
    fi
done

printf "%6s" ''

powerinfo.sh

#!/bin/bash

BAT=$(grep -i "^present:" /proc/acpi/battery/BAT0/state)
BAT=${BAT#*:}

# important: a single [ causes "trim"!
if [ $BAT == "no" ]
then
    printf "%17s" "no battery"
else
    RATE=$(cat /sys/class/power_supply/BAT0/current_now)
    REM=$(cat /sys/class/power_supply/BAT0/charge_now)
    TOT=$(cat /sys/class/power_supply/BAT0/charge_full)

    HRS=$(echo "$REM / $RATE" | bc)
    MIN=$(echo "($REM % $RATE) / 1000 / 60" | bc)

    PERC=$(echo "scale=2; ($REM / $TOT) * 100" | bc)
    PERC=${PERC%%\.*}

    OUT=$(printf "%02d%%, %02d:%02d rem" $PERC $HRS $MIN)
    printf "%17s" "$OUT"
fi