Portál AbcLinuxu, 4. listopadu 2025 15:46
 #! /bin/zsh
# some initialization
var_load=0.00
var_eth0_rx_new=0.00
var_eth0_tx_new=0.00
var_eth0_rx_old=0.00
var_eth0_tx_old=0.00
var_eth0_rx_cur=0.00
var_eth0_tx_cur=0.00
var_temp1=0.0
var_temp2=0.0
var_temp3=0.0
while :; do
    var_time=$(date "+%H:%M")
    var_date=$(date "+%a %d.%m.%Y")
    var_load=$(cat /proc/loadavg | cut -d " " -f 1)
    var_volume=$(amixer -c 0 get "Master" | grep "Front Left:" | sed 's/[ \t]\+/ /g' | cut -d " " -f 6)
    var_volume=${var_volume//[\[\]%]/}
    var_muted=$(amixer -c 0 get "Master" | grep "Front Left:" | sed 's/[ \t]\+/ /g' | cut -d " " -f 8)
    var_muted=${var_muted//[\[\]]/}
    var_usedmem=$(free -m | grep "buffers/cache:" | sed 's/[ \t]\+/ /g' | cut -d ' ' -f 3)
    var_eth0_rx_new=$(sudo ifconfig eth0 | grep bytes | sed 's/[a-zA-Z \t:()]\+/ /g' | cut -d ' ' -f 2)
    var_eth0_tx_new=$(sudo ifconfig eth0 | grep bytes | sed 's/[a-zA-Z \t:()]\+/ /g' | cut -d ' ' -f 4)
    var_eth0_rx_cur=$(($var_eth0_rx_new - $var_eth0_rx_old))
    var_eth0_tx_cur=$(($var_eth0_tx_new - $var_eth0_tx_old))
    var_temp2=$(sensors "it8720-isa-0228" | grep temp2 | sed 's/[a-zA-Z:()=,°+ \t]\+/ /g' | cut -d ' ' -f 3)
    var_temp3=$(sensors "it8720-isa-0228" | grep temp3 | sed 's/[a-zA-Z:()=,°+ \t]\+/ /g' | cut -d ' ' -f 3)
    var_temp1=$(sensors "it8720-isa-0228" | grep temp1 | sed 's/[a-zA-Z:()=,°+ \t]\+/ /g' | cut -d ' ' -f 3)
    var_temp2=$(printf %d $var_temp2)
    var_temp3=$(printf %d $var_temp3)
    var_temp1=$(printf %d $var_temp1)
    if [[ "$var_muted" == "on" ]]; then
        var_repro_clr="#85a229"
    else
        var_repro_clr="#b95929"
    fi
    two_lvl_color()    {
    
        value=$1
        fst_lvl=$2
        sec_lvl=$3
        color="#85a229"
        if [[ $value -ge $fst_lvl ]]; then
            color="#b9a229"
            if [[ $value -ge $sec_lvl ]]; then
                color="#b95929"
            fi
        fi
        echo $color
    }
    convert_network_units()    {
        value=0.00
        value=$1
        image=$2
        units="  Bps"
        color="#85a229"
        if [[ $value -ge 999.00 ]]; then
            value=$(($value / 1024.00))
            units="kiBps"
    
            if [[ $value -ge 999.00 ]]; then
                value=$(($value / 1024.00))
                units="MiBps"
                color="#b9a229"
                if [[ $value -ge 999.00 ]]; then
                    value=$(($value / 1024.00))
                    units="GiBps"
                    color="#b95929"
                fi
            fi
        fi
        
        displayed_value=$(printf %.1f $value)
        echo "^fg($color)^i(/home/asfethan/.local/share/dzen2/images/$image)^r(3x0)^fg(#e5e5e5)${(l:5:: :)displayed_value}^r(3x0)^fg(#c5c5c5)$units"
    }
    echo -n        "^bg(#85a229)^r(2x0)^bg(#313433)^r(10x0)"
    echo -n        "^bg(#313433)^r(1x0)^bg(#313433)^r(5x0)^fg($(two_lvl_color $var_temp2 49 54))^i(/home/asfethan/.local/share/dzen2/images/temp-simple.xbm)^r(3x0)^fg(#e5e5e5)${(l:3:: :)var_temp2}^r(5x0)"
    echo -n        "^bg(#313433)^r(1x0)^bg(#313433)^r(5x0)^fg($(two_lvl_color $var_temp3 49 54))^i(/home/asfethan/.local/share/dzen2/images/temp-simple.xbm)^r(3x0)^fg(#e5e5e5)${(l:3:: :)var_temp3}^r(5x0)"
    echo -n        "^bg(#313433)^r(1x0)^bg(#313433)^r(5x0)^fg($(two_lvl_color $var_temp1 45 50))^i(/home/asfethan/.local/share/dzen2/images/temp-simple.xbm)^r(3x0)^fg(#e5e5e5)${(l:3:: :)var_temp1}^r(5x0)"
    echo -n        "^bg(#313433)^r(1x0)^bg(#313433)^r(5x0)^fg($(two_lvl_color $var_load 1.00 2.00))^i(/home/asfethan/.local/share/dzen2/images/loadavg.xbm)^r(3x0)^fg(#e5e5e5)${(l:5:: :)var_load}^r(5x0)"
    echo -n        "^bg(#313433)^r(1x0)^bg(#313433)^r(5x0)^fg($(two_lvl_color $var_usedmem 1500 3000))^i(/home/asfethan/.local/share/dzen2/images/ram.xbm)^r(3x0)^fg(#e5e5e5)${(l:4:: :)var_usedmem}^r(3x0)^fg(#c5c5c5)MB^r(5x0)"
    echo -n        "^bg(#313433)^r(1x0)^bg(#313433)^r(5x0)^fg($var_repro_clr)^i(/home/asfethan/.local/share/dzen2/images/repro.xbm)^r(5x0)^fg(#e5e5e5)${(l:3:: :)var_volume}^r(3x0)^fg(#c5c5c5)%^r(8x0)"
    echo -n        "^bg(#85a229)^r(1x0)^bg(#aac442)^r(5x0)^fg(#313433)$var_time^r(5x0)^bg(#85a229)^r(1x0)"
    echo -n        "^bg(#313433)^r(0x0)^bg(#85a229)^r(8x0)^fg(#212423)$var_date^r(8x0)"
    echo -n        "^bg(#aac442)^r(2x0)^bg(#313433)^r(15x0)^fg(#e5e5e5)eth0^r(5x0)"
    echo -n        "^bg(#313433)^r(1x0)^bg(#313433)^r(5x0)$(convert_network_units $var_eth0_rx_cur "down_small.xbm")^r(5x0)"
    echo -n        "^bg(#313433)^r(1x0)^bg(#313433)^r(5x0)$(convert_network_units $var_eth0_tx_cur "up_small.xbm")^r(15x0)"
    echo -n        "^bg(#85a229)^r(2x0)"
    echo -ne    "\n"
    var_eth0_rx_old=$(sudo ifconfig eth0 | grep bytes | sed 's/[a-zA-Z \t:()]\+/ /g' | cut -d ' ' -f 2)
    var_eth0_tx_old=$(sudo ifconfig eth0 | grep bytes | sed 's/[a-zA-Z \t:()]\+/ /g' | cut -d ' ' -f 4)
    sleep 1
done
two_lvl_color() ktorá pre správnu funkčnosť potrebuje tri parametre. Prvým je získaná  aktuálna hodnota, druhým je pevná hodnota ktorá ak je menšia ako hodnota  z prvého parametru, funkcia vráti ako výstup hodnotu žltej farby. Pre  tretí parameter platí to čo pre druhý, ale funkcia vráti červenú farbu.convert_network_units() má iba dva parametre. Prvým je získaná aktuálna hodnota, druhým je  cesta k ikonke popisujúcej získanú hodnotu. Funkcia zobrazí získanú  hodnotu v čo najvhodnejšom formáte (po konverzií jednotiek) a zároveň  ofarbí ikonku ako som už popísal vyššie.^r() ^fg() ^bg() ^i() - formátovacie konštrukcie dze2, kompletný zoznam je možné nájsť tu: http://dzen.geekmode.org/dwiki/doku.php?id=dzen:command-and-option-list sysinfo-dzen2 | dzen2 -x '907' -y '0' -w '773' -h '20' -bg '#4d4d4d' -fg '#e5e5e5' -ta 'r' -fn '-*-terminus-medium-r-*-*-12-*-*-*-*-*-*-*' -e 'button2=exit:13' &
        Tiskni
            
                Sdílej:
                
                
                
                
                
                
            
    
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.