From b56a6cff3108dd1becad43b7d34d192f1e5b2be4 Mon Sep 17 00:00:00 2001 From: Dustin Kirkland Date: Thu, 23 Feb 2012 08:02:53 -0600 Subject: [PATCH] * usr/bin/byobu-status, usr/lib/byobu/battery, usr/lib/byobu/cpu_freq, usr/lib/byobu/custom, usr/lib/byobu/disk, usr/lib/byobu/disk_io, usr/lib/byobu/distro, usr/lib/byobu/ec2_cost, usr/lib/byobu/entropy, usr/lib/byobu/fan_speed, usr/lib/byobu/hostname, usr/lib/byobu/load_average, usr/lib/byobu/memory, usr/lib/byobu/network, usr/lib/byobu/processes, usr/lib/byobu/raid, usr/lib/byobu/rcs_cost, usr/lib/byobu/swap, usr/lib/byobu/uptime, usr/lib/byobu/wifi_quality: - help ensure that a status is printed - this fixes byobu status on some slower systems - use the last cached status, if the current one doesn't return --- debian/changelog | 12 +++++++++- usr/bin/byobu-status | 49 +++++++++++++++++++++++--------------- usr/lib/byobu/battery | 1 + usr/lib/byobu/cpu_freq | 1 + usr/lib/byobu/custom | 1 + usr/lib/byobu/disk | 1 + usr/lib/byobu/disk_io | 3 ++- usr/lib/byobu/distro | 1 + usr/lib/byobu/ec2_cost | 1 + usr/lib/byobu/entropy | 1 + usr/lib/byobu/fan_speed | 4 ++-- usr/lib/byobu/hostname | 1 + usr/lib/byobu/load_average | 1 + usr/lib/byobu/memory | 1 + usr/lib/byobu/network | 1 + usr/lib/byobu/processes | 1 + usr/lib/byobu/raid | 5 ++-- usr/lib/byobu/rcs_cost | 1 + usr/lib/byobu/swap | 1 + usr/lib/byobu/uptime | 1 + usr/lib/byobu/wifi_quality | 1 + 21 files changed, 63 insertions(+), 26 deletions(-) diff --git a/debian/changelog b/debian/changelog index f16cb1a1..3019ae13 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,6 +1,16 @@ byobu (5.14) unreleased; urgency=low - * UNRELEASED + * usr/bin/byobu-status, usr/lib/byobu/battery, usr/lib/byobu/cpu_freq, + usr/lib/byobu/custom, usr/lib/byobu/disk, usr/lib/byobu/disk_io, + usr/lib/byobu/distro, usr/lib/byobu/ec2_cost, usr/lib/byobu/entropy, + usr/lib/byobu/fan_speed, usr/lib/byobu/hostname, + usr/lib/byobu/load_average, usr/lib/byobu/memory, + usr/lib/byobu/network, usr/lib/byobu/processes, usr/lib/byobu/raid, + usr/lib/byobu/rcs_cost, usr/lib/byobu/swap, usr/lib/byobu/uptime, + usr/lib/byobu/wifi_quality: + - help ensure that a status is printed + - this fixes byobu status on some slower systems + - use the last cached status, if the current one doesn't return -- Dustin Kirkland Tue, 21 Feb 2012 23:22:38 -0600 diff --git a/usr/bin/byobu-status b/usr/bin/byobu-status index a0130161..b4db8ab8 100755 --- a/usr/bin/byobu-status +++ b/usr/bin/byobu-status @@ -34,22 +34,27 @@ for i in "${BYOBU_PREFIX}/share/$PKG/status/status" "${BYOBU_PREFIX}/share/$PKG/ [ -r "$i" ] && . "$i" done -# Reload profile, if necessary -if [ -e "/var/run/screen/S-$USER/$PKG.reload-required" ] || [ -e "$BYOBU_RUN_DIR/reload-required" ]; then - if [ "$BYOBU_BACKEND" = "screen" ] && [ -r "$BYOBU_CONFIG_DIR/profile" ]; then - # If the forced janitorial steps succeed, try a profile reload - byobu-janitor --force && screen -X at 0 source "$BYOBU_CONFIG_DIR/profile" >/dev/null 2>&1 - fi -fi - -# Do first-run procedures, if necessary -if [ -n "$TMUX" ]; then - if [ ! -e "$BYOBU_RUN_DIR/${TMUX#*,}" ]; then - # Clear initial window name - tmux rename-window "" - touch "$BYOBU_RUN_DIR/${TMUX#*,}" - fi -fi +case "$BYOBU_BACKEND" in + screen) + # Reload profile, if necessary + if [ -e "/var/run/screen/S-$USER/$PKG.reload-required" ] || [ -e "$BYOBU_RUN_DIR/reload-required" ]; then + if [ -r "$BYOBU_CONFIG_DIR/profile" ]; then + # If the forced janitorial steps succeed, try a profile reload + byobu-janitor --force && screen -X at 0 source "$BYOBU_CONFIG_DIR/profile" >/dev/null 2>&1 + fi + fi + ;; + tmux) + # Do first-run procedures, if necessary + if [ -n "$TMUX" ]; then + if [ ! -e "$BYOBU_RUN_DIR/${TMUX#*,}" ]; then + # Clear initial window name + tmux rename-window "" + touch "$BYOBU_RUN_DIR/${TMUX#*,}" + fi + fi + ;; +esac # Get the current timestamp get_now; NOW=${_RET} @@ -77,10 +82,16 @@ get_status() { find_script "$function" && . "${_RET}" # Update cache now, if necessary if [ $NOW -ge $expiry ] || [ "$lastrun" = "0" ]; then - "__$function" > "$cachepath" - printf "%s" "$NOW" > "$lastpath" + "__$function" > "$cachepath".new fi - if [ -s "$cachepath" ]; then + # Check if we have data in the cache + if [ -s "$cachepath".new ]; then + # Looks like we have an updated cache, use it + mv -f "$cachepath".new "$cachepath" + printf "%s" "$NOW" > "$lastpath" + IFS= read line < "$cachepath"; printf "%s" "$line" + elif [ -s "$cachepath" ]; then + # New cache is empty, but we have data from our last run, use it IFS= read line < "$cachepath"; printf "%s" "$line" fi } diff --git a/usr/lib/byobu/battery b/usr/lib/byobu/battery index c2011b12..f52da27c 100755 --- a/usr/lib/byobu/battery +++ b/usr/lib/byobu/battery @@ -88,6 +88,7 @@ __battery() { charged|Unknown|Full) sign="="; percent="" ;; *) sign="$state" ;; esac + [ -n "$percent" ] || return color $bcolor; printf "%s" "$percent"; color -; color $color; printf "%s" "$sign"; color -- fi } diff --git a/usr/lib/byobu/cpu_freq b/usr/lib/byobu/cpu_freq index 3d16e8cf..b097a054 100755 --- a/usr/lib/byobu/cpu_freq +++ b/usr/lib/byobu/cpu_freq @@ -39,6 +39,7 @@ __cpu_freq() { freq=$(printf "%s %s" "$freq" "$count" | awk '{printf "%01.1f\n", $1/$2/1000}') fi fi + [ -n "$freq" ] || return color b c W; printf "%s" "$freq"; color -; color c W; printf "%s" "$ICON_GHz"; color -- } diff --git a/usr/lib/byobu/custom b/usr/lib/byobu/custom index 1cff5d64..378357a1 100755 --- a/usr/lib/byobu/custom +++ b/usr/lib/byobu/custom @@ -53,6 +53,7 @@ __custom() { ;; esac done + [ -n "$output" ] || return printf "$output" | $BYOBU_SED ':a;N;$!ba;s/\n//g' } diff --git a/usr/lib/byobu/disk b/usr/lib/byobu/disk index 141a3fcd..42320ee5 100755 --- a/usr/lib/byobu/disk +++ b/usr/lib/byobu/disk @@ -44,6 +44,7 @@ __disk() { g*|G*) unit="$ICON_GB" ;; t*|T*) unit="$ICON_TB" ;; esac + [ -n "$size" ] || return color b M W; printf "%s" "$size"; color -; color M W; printf "%s" "$unit"; color -; color b M W; printf "%s" "$pct"; color -; color M W; printf "%s" "$PCT"; color --; } diff --git a/usr/lib/byobu/disk_io b/usr/lib/byobu/disk_io index 838696bd..3671854d 100755 --- a/usr/lib/byobu/disk_io +++ b/usr/lib/byobu/disk_io @@ -90,7 +90,8 @@ __disk_io() { unit="kB/s" fi fi - [ "$rate" != "0" ] || continue + [ -z "$rate" ] && continue + [ "$rate" = "0" ] && continue color b M W; printf "%s%s" "$symbol" "$rate"; color -; color M W; printf "%s" "$unit"; color -- done } diff --git a/usr/lib/byobu/distro b/usr/lib/byobu/distro index 08bd07d7..ada1fb04 100755 --- a/usr/lib/byobu/distro +++ b/usr/lib/byobu/distro @@ -61,6 +61,7 @@ __distro() { else DISTRO="Byobu" fi + [ -n "$DISTRO" ] || return color bold2; printf "%s" "$DISTRO"; color -- } diff --git a/usr/lib/byobu/ec2_cost b/usr/lib/byobu/ec2_cost index deeb7ec8..d511eb7f 100755 --- a/usr/lib/byobu/ec2_cost +++ b/usr/lib/byobu/ec2_cost @@ -118,6 +118,7 @@ __ec2_cost() { echo "================================================" return fi + [ -n "$total_cost" ] || return color K G; printf "A\$"; color -; color b K G; printf "%s" "$total_cost"; color -- } diff --git a/usr/lib/byobu/entropy b/usr/lib/byobu/entropy index 8f6fcac9..e97f882c 100755 --- a/usr/lib/byobu/entropy +++ b/usr/lib/byobu/entropy @@ -24,6 +24,7 @@ __entropy_detail() { __entropy() { local e=$(cat /proc/sys/kernel/random/entropy_avail) + [ -n "$e" ] || return color K Y; printf "e%s" "$e"; color -- } diff --git a/usr/lib/byobu/fan_speed b/usr/lib/byobu/fan_speed index 8f2af76c..1b5ac1a4 100755 --- a/usr/lib/byobu/fan_speed +++ b/usr/lib/byobu/fan_speed @@ -31,7 +31,7 @@ __fan_speed() { for i in $FAN /sys/class/hwmon/*/*/fan1_input /sys/class/hwmon/*/device/hwmon/*/fan1_input; do [ -f "$i" ] || continue read speed < "$i" - if [ "$speed" -gt 0 ]; then + if [ -n "$speed" ] && [ "$speed" -gt 0 ]; then color bold1; printf "%s" "$speed"; color -; color none; printf "rpm"; color -- return 0 fi @@ -43,7 +43,7 @@ __fan_speed() { read line < /proc/i8k set -- $line for speed in $7 $8; do - if [ "$speed" -gt 0 ]; then + if [ -n "$speed" ] && [ "$speed" -gt 0 ]; then # I8K_FAN_MULT defaults to 30 (buggy BIOS workaround?), # use `modprobe i8k fan_mult=1` to disable if unneeded, # resulting in nonsensical speeds diff --git a/usr/lib/byobu/hostname b/usr/lib/byobu/hostname index 57cac139..0764595f 100755 --- a/usr/lib/byobu/hostname +++ b/usr/lib/byobu/hostname @@ -34,6 +34,7 @@ __hostname() { else h=$(hostname -s 2>/dev/null || hostname) fi + [ -n "$h" ] || return color bold2; printf "%s" "$h"; color -- } diff --git a/usr/lib/byobu/load_average b/usr/lib/byobu/load_average index 71a9df02..143c5aea 100755 --- a/usr/lib/byobu/load_average +++ b/usr/lib/byobu/load_average @@ -25,6 +25,7 @@ __load_average_detail() { __load_average() { read one five fifteen other < /proc/loadavg + [ -n "$one" ] || return color Y k; printf "$one"; color -- } diff --git a/usr/lib/byobu/memory b/usr/lib/byobu/memory index 796dde2f..07195b53 100755 --- a/usr/lib/byobu/memory +++ b/usr/lib/byobu/memory @@ -53,6 +53,7 @@ __memory() { else unit="$ICON_KB" fi + [ -n "$total" ] || return color b g W; printf "%s" "$total"; color -; color g W; printf "%s" "$unit"; color -; color b g W; printf "%s" "$f"; color -; color g W; printf "%s" "$PCT"; color -- } diff --git a/usr/lib/byobu/network b/usr/lib/byobu/network index 6be4eebb..ed094586 100755 --- a/usr/lib/byobu/network +++ b/usr/lib/byobu/network @@ -87,6 +87,7 @@ __network() { fi ;; esac + [ -n "$rate" ] || continue color b m w; printf "%s%s" "$symbol" "$rate"; color -; color m w; printf "%s" "$unit"; color -- fi done diff --git a/usr/lib/byobu/processes b/usr/lib/byobu/processes index 7fefbcb1..9a8ed870 100755 --- a/usr/lib/byobu/processes +++ b/usr/lib/byobu/processes @@ -25,6 +25,7 @@ __processes_detail() { __processes() { local count=$(ls -d /proc/[0-9]* 2>/dev/null| wc -l) + [ -n "$count" ] || return color b y w; printf "%s" "$count"; color -; color y w; printf "&"; color -- } diff --git a/usr/lib/byobu/raid b/usr/lib/byobu/raid index 841c1060..a73aac13 100755 --- a/usr/lib/byobu/raid +++ b/usr/lib/byobu/raid @@ -36,9 +36,8 @@ __raid() { msg="$msg,$p";; esac done < /proc/mdstat - if [ -n "$msg" ]; then - color B w r; printf "%s" "$msg"; color -- - fi + [ -n "$msg" ] || return + color B w r; printf "%s" "$msg"; color -- } # vi: syntax=sh ts=4 noexpandtab diff --git a/usr/lib/byobu/rcs_cost b/usr/lib/byobu/rcs_cost index bc55dc8a..bc7d2ada 100755 --- a/usr/lib/byobu/rcs_cost +++ b/usr/lib/byobu/rcs_cost @@ -91,6 +91,7 @@ __rcs_cost() { return fi + [ -n "$total_cost" ] || return color K G; printf "R\$%s"; color -; color b K G; printf "%s" "$total_cost"; color -- } diff --git a/usr/lib/byobu/swap b/usr/lib/byobu/swap index a18e07e5..f6e1c0df 100755 --- a/usr/lib/byobu/swap +++ b/usr/lib/byobu/swap @@ -50,6 +50,7 @@ __swap() { mem="$mem" unit="$ICON_KB" fi + [ -n "$mem" ] || return color b G W; printf "s%s" "$mem"; color -; color G W; printf "%s" "$unit"; color -; color b G W; printf "%s" "$f"; color -; color G W; printf "%s" "$PCT"; color -- } diff --git a/usr/lib/byobu/uptime b/usr/lib/byobu/uptime index 0e89cb16..6adf8c85 100755 --- a/usr/lib/byobu/uptime +++ b/usr/lib/byobu/uptime @@ -38,6 +38,7 @@ __uptime() { else str="${u}s" fi + [ -n "$str" ] || return color w b; printf "%s" "${str}"; color -- } diff --git a/usr/lib/byobu/wifi_quality b/usr/lib/byobu/wifi_quality index 13fd6691..a1ad5f04 100755 --- a/usr/lib/byobu/wifi_quality +++ b/usr/lib/byobu/wifi_quality @@ -40,6 +40,7 @@ __wifi_quality() { if [ -z "$quality" ] || [ "$quality" = "0" ]; then quality="0" fi + [ -n "$quality" ] || return [ "$quality" = "0" ] && return printf "${ICON_WIFI}"; color b C k; printf "%s" "$bitrate"; color -; color C k; printf "%s" "$ICON_MBPS"; color -; color b C k; printf "%s" "$quality"; color -; color C k; printf "%s" "$PCT"; color -- }