Some Handy wmii Odds'n'Sods

I'll get around to adding some useful information here on scripts I have done for wmii, but for now this is all you are getting. This is a useful chunk of script in my '~/.wmii-hg/wmiirc_local' configuration:

wmiir write /rules <<!
/termPopup/ floating=on

/MPlayer|VLC/ floating=on
/linphone/ floating=on
/Navigator|Chrome|Opera/ tags=2
!

sb_tmp() {
        local TEMP

        [ -z $(wmiir ls /rbar | grep "$2_$1") ] && echo "colors $WMII_NORMCOLORS" | wmiir create "/rbar/$2_$1"

        TEMP=$(cat /sys/devices/platform/coretemp.0/temp1_input)
        TEMP=$((${TEMP}/1000))

        echo -n "label TMP: ${TEMP}C" | wmiir write "/rbar/$2_$1"
}

sb_date() {
        local DATE

        if [ "x$3" = "xevent" ]; then
                [ $4 -eq 1 ] && $WMII_TERM -name termPopup -geometry 156x47-0-0 -wf -e /bin/sh -c 'eval $(resize) && rem -c -w${COLUMNS} && read moo' &
                [ $4 -eq 2 ] && $WMII_TERM -name termPopup -geometry 64x35-0-0 -wf -e /bin/sh -c 'cal -y && read moo' &
                [ $4 -eq 3 ] && $WMII_TERM -wf -e /usr/bin/wyrd &
                return
        fi

        [ -z $(wmiir ls /rbar | grep "$2_$1") ] && echo "colors $WMII_NORMCOLORS" | wmiir create "/rbar/$2_$1"

        DATE=$(date +'%a %b %d %H:%M %Z %Y')

        echo -n "label $DATE" | wmiir write "/rbar/$2_$1"
}

sb_load() {
        local UPTIME

        if [ "x$3" = "xevent" ]; then
                [ $4 -eq 1 ] && $WMII_TERM -name termPopup -geometry 80x40-0-0 -wf -e /usr/bin/top &
                return
        fi

        [ -z $(wmiir ls /rbar | grep "$2_$1") ] && echo "colors $WMII_NORMCOLORS" | wmiir create "/rbar/$2_$1"

        UPTIME=$(uptime | sed 's/.*://; s/,//g')

        echo -n "label $UPTIME" | wmiir write "/rbar/$2_$1"
}

sb_bat() {
        local BAT BAR REMAIN STATUS FULL PCNTREMAIN DRAIN PCNTDRAIN DIR

        BAT=CMB1

        BAR=$(wmiir ls /rbar | grep "$2_$1")

        if [ ! -d /sys/class/power_supply/${BAT} ]; then
                if [ ${#BAR} -ne 0 ]; then
                        wmiir remove "/rbar/$2_$1" 2> /dev/null || true
                fi
                return
        fi

        [ ${#BAR} -eq 0 ] && echo "colors $WMII_NORMCOLORS" | wmiir create "/rbar/$2_$1"

        REMAIN=$(cat /sys/class/power_supply/${BAT}/charge_now)
        if [ -z "$REMAIN" ]; then
                echo -n "label BAT: <MISSING>" | wmiir write "/rbar/$2_$1"
                return
        fi

        STATUS=$(cat /sys/class/power_supply/${BAT}/status)
        if [ "$STATUS" = "Unknown" \
                        -o "$STATUS" = "Not charging" \
                        -o "$STATUS" = "Full" ]; then
                echo -n "label BAT: $((${REMAIN}/1000))mAh Charged" | wmiir write "/rbar/$2_$1"
                return
        fi

        FULL=$(cat /sys/class/power_supply/${BAT}/charge_full)
        FULL=$((${FULL}/1000))

        # divide by 10 as we have divided FULL by 1000
        PCNTREMAIN=$((${REMAIN}/${FULL}/10))

        DRAIN=$(cat /sys/class/power_supply/${BAT}/current_now)
        PCNTDRAIN=$((${DRAIN}/${FULL}/10))

        [ "$STATUS" = "Charging" ] && DIR="+" || DIR="-"

        echo -n "label BAT: ${PCNTREMAIN}%${DIR}${PCNTDRAIN}%/h" | wmiir write "/rbar/$2_$1"
}

sb_wlan() {
        local INT BAR SSID APMAC SIGNAL RATE

        INT=$(cat /proc/net/wireless | awk 'BEGIN { FS="[ :]" } /:/ { print $2 }' | head -n1)

        BAR=$(wmiir ls /rbar | grep "$2_$1")

        if [ ! -d /sys/class/net/${INT} ]; then
                if [ ${#BAR} -ne 0 ]; then
                        wmiir remove "/rbar/$2_$1" 2> /dev/null || true
                fi
                return
        fi

        [ ${#BAR} -eq 0 ] && echo "colors $WMII_NORMCOLORS" | wmiir create "/rbar/$2_$1"

        if [ $(cat /sys/class/net/${INT}/carrier) -eq 0 ]; then
                echo -n "label WLAN: <NO CARRIER>" | wmiir write /rbar/$2_$1
                return
        fi

        SSID=$(/sbin/iwgetid ${INT} --raw)
        APMAC=$(/sbin/iwgetid ${INT} --raw --ap)

        SIGNAL=$(/usr/sbin/iw dev ${INT} station get ${APMAC} | awk '/signal:/ { print $2 }')
        RATE=$(/usr/sbin/iw dev ${INT} station get ${APMAC} | awk '/tx bitrate:/ { printf "%d", $3 }')

        echo -n "label WLAN: ${SSID} [${SIGNAL}dBm @ ${RATE}Mb]" | wmiir write /rbar/$2_$1
}

# Status Bar Info
status() {
        local STATUSBAR
        STATUSBAR="sb_wlan sb_bat sb_tmp sb_load sb_date"

        while true; do
                local I

                wmiir ls / > /dev/null 2> /dev/null
                [ $? -ne 0 ] && exit $?

                I=0
                for F in $STATUSBAR; do
                        eval $F $F $(printf status%02d $I)

                        I=$(($I+1))
                done

                sleep 5
        done
}

local_events() {
        cat <<'!'
Event RightBarClick
        eval "${2#*_} ${2#*_} ${2%%_*} event $1"
Action status
        for BAR in $(wmiir ls /rbar | grep -v '!'); do wmiir remove "/rbar/$BAR"; done
        status
!

        cat <<!
Key $MODKEY-Control-,   # Select the stack above
        wmiir xwrite /tag/sel/ctl select up stack
Key $MODKEY-Control-.   # Select the stack below
        wmiir xwrite /tag/sel/ctl select down stack

Key $MODKEY-Control-$LEFT
        wmiir xwrite /tag/sel/ctl nudge client sel left 5
Key $MODKEY-Control-$RIGHT
        wmiir xwrite /tag/sel/ctl nudge client sel right 5
Key $MODKEY-Control-$DOWN
        wmiir xwrite /tag/sel/ctl nudge client sel down 5
Key $MODKEY-Control-$UP
        wmiir xwrite /tag/sel/ctl nudge client sel up 5
!

        local I
        for I in $(seq 0 9); do
                cat <<!
Key $MODKEY-Control-$I
        wmiir xwrite /client/sel/tags +${I}
!
        done
}

www: wmii (last edited 2010-07-16 22:05:47 by alex)