From d44755ede2a8901e51bc06e2f7f0eb849e921b63 Mon Sep 17 00:00:00 2001 From: Dustin Kirkland Date: Sat, 25 Jun 2011 22:53:23 -0400 Subject: [PATCH] * usr/bin/byobu-status, usr/lib/byobu/apport, usr/lib/byobu/arch, usr/lib/byobu/battery, usr/lib/byobu/.constants, usr/lib/byobu/cpu_count, usr/lib/byobu/cpu_freq, usr/lib/byobu/cpu_temp, usr/lib/byobu/custom, usr/lib/byobu/date, usr/lib/byobu/disk, usr/lib/byobu/disk_io, usr/lib/byobu/ec2_cost, usr/lib/byobu/fan_speed, usr/lib/byobu/hostname, usr/lib/byobu/ip_address, usr/lib/byobu/load_average, usr/lib/byobu/logo, usr/lib/byobu/mail, usr/lib/byobu/mem_available, usr/lib/byobu/mem_used, usr/lib/byobu/menu, usr/lib/byobu/network, usr/lib/byobu/notify_osd, usr/lib/byobu/processes, usr/lib/byobu/raid, usr/lib/byobu/rcs_cost, usr/lib/byobu/reboot_required, usr/lib/byobu/release, usr/lib/byobu/services, usr/lib/byobu/.shutil, usr/lib/byobu/swap, usr/lib/byobu/time, usr/lib/byobu/time_utc, usr/lib/byobu/trash, usr/lib/byobu/updates_available, usr/lib/byobu/uptime, usr/lib/byobu/users, usr/lib/byobu/whoami, usr/lib/byobu/wifi_quality: - rework status scripts into sourcable functions - update copyright info, update email address, standardize headers --- debian/changelog | 19 ++++ usr/bin/byobu-status | 1 + usr/lib/byobu/.constants | 34 +++++++ usr/lib/byobu/.shutil | 6 ++ usr/lib/byobu/apport | 26 ++--- usr/lib/byobu/arch | 15 +-- usr/lib/byobu/battery | 46 ++++----- usr/lib/byobu/cpu_count | 19 ++-- usr/lib/byobu/cpu_freq | 43 +++++---- usr/lib/byobu/cpu_temp | 86 ++++++++--------- usr/lib/byobu/custom | 73 +++++++------- usr/lib/byobu/date | 32 +++--- usr/lib/byobu/disk | 41 +++----- usr/lib/byobu/disk_io | 133 +++++++++++++------------ usr/lib/byobu/ec2_cost | 158 ++++++++++++++---------------- usr/lib/byobu/fan_speed | 46 ++++----- usr/lib/byobu/hostname | 30 +++--- usr/lib/byobu/ip_address | 74 +++++++------- usr/lib/byobu/load_average | 21 ++-- usr/lib/byobu/logo | 71 +++++++------- usr/lib/byobu/mail | 26 ++--- usr/lib/byobu/mem_available | 24 ++--- usr/lib/byobu/mem_used | 31 ++---- usr/lib/byobu/menu | 40 ++++---- usr/lib/byobu/network | 166 ++++++++++++++++---------------- usr/lib/byobu/notify_osd | 33 +++---- usr/lib/byobu/processes | 22 ++--- usr/lib/byobu/raid | 51 +++++----- usr/lib/byobu/rcs_cost | 132 ++++++++++++------------- usr/lib/byobu/reboot_required | 44 ++++----- usr/lib/byobu/release | 25 ++--- usr/lib/byobu/services | 73 +++++++------- usr/lib/byobu/swap | 24 ++--- usr/lib/byobu/time | 25 +++-- usr/lib/byobu/time_utc | 26 +++-- usr/lib/byobu/trash | 46 +++++---- usr/lib/byobu/updates_available | 60 ++++++------ usr/lib/byobu/uptime | 66 ++++++------- usr/lib/byobu/users | 53 +++++----- usr/lib/byobu/whoami | 19 ++-- usr/lib/byobu/wifi_quality | 47 +++++---- 41 files changed, 982 insertions(+), 1025 deletions(-) create mode 100755 usr/lib/byobu/.constants diff --git a/debian/changelog b/debian/changelog index 362705af..368eae63 100644 --- a/debian/changelog +++ b/debian/changelog @@ -2,6 +2,25 @@ byobu (4.14) unreleased; urgency=low * usr/share/byobu/profiles/tmux: - getting tmux keybindings much closer! + * usr/bin/byobu-status, usr/lib/byobu/apport, usr/lib/byobu/arch, + usr/lib/byobu/battery, usr/lib/byobu/.constants, + usr/lib/byobu/cpu_count, usr/lib/byobu/cpu_freq, + usr/lib/byobu/cpu_temp, usr/lib/byobu/custom, usr/lib/byobu/date, + usr/lib/byobu/disk, usr/lib/byobu/disk_io, usr/lib/byobu/ec2_cost, + usr/lib/byobu/fan_speed, usr/lib/byobu/hostname, + usr/lib/byobu/ip_address, usr/lib/byobu/load_average, + usr/lib/byobu/logo, usr/lib/byobu/mail, usr/lib/byobu/mem_available, + usr/lib/byobu/mem_used, usr/lib/byobu/menu, usr/lib/byobu/network, + usr/lib/byobu/notify_osd, usr/lib/byobu/processes, + usr/lib/byobu/raid, usr/lib/byobu/rcs_cost, + usr/lib/byobu/reboot_required, usr/lib/byobu/release, + usr/lib/byobu/services, usr/lib/byobu/.shutil, usr/lib/byobu/swap, + usr/lib/byobu/time, usr/lib/byobu/time_utc, usr/lib/byobu/trash, + usr/lib/byobu/updates_available, usr/lib/byobu/uptime, + usr/lib/byobu/users, usr/lib/byobu/whoami, + usr/lib/byobu/wifi_quality: + - rework status scripts into sourcable functions + - update copyright info, update email address, standardize headers -- Dustin Kirkland Thu, 16 Jun 2011 16:16:29 -0500 diff --git a/usr/bin/byobu-status b/usr/bin/byobu-status index d4ed6e13..caa35e9d 100755 --- a/usr/bin/byobu-status +++ b/usr/bin/byobu-status @@ -20,6 +20,7 @@ PKG="byobu" DATA="$HOME/.$PKG" [ -z "$BYOBU_PREFIX" ] && export BYOBU_PREFIX="/usr" || export BYOBU_PREFIX +[ -d "/var/run/screen/S-$USER" ] && RUNDIR="/var/run/screen/S-$USER" || RUNDIR="$DATA" if ! . "${BYOBU_PREFIX}/lib/${PKG}/.shutil"; then echo "failed to source ${BYOBU_PREFIX}/lib/${PKG}/.shutil" 2>&1 diff --git a/usr/lib/byobu/.constants b/usr/lib/byobu/.constants new file mode 100755 index 00000000..18e7d29f --- /dev/null +++ b/usr/lib/byobu/.constants @@ -0,0 +1,34 @@ +#!/bin/sh + +PKG="byobu" +CONFIG_DIR="$HOME/.$PKG" +mkdir -p "$CONFIG_DIR" +if mkdir -p "/var/run/screen/S-$USER/$PKG/cache" 2>/dev/null; then + CACHE_DIR="/var/run/screen/S-$USER/$PKG/cache" +else + mkdir -p "$CONFIG_DIR/cache" + CACHE_DIR="$CONFIG_DIR/cache" +fi +[ -n "$BYOBU_PREFIX" ] || BYOBU_PREFIX="/usr" + +if [ "$UTF8" = "1" ]; then + ICON_C="℃" + ICON_F="℉" + ICON_RD="◀" + ICON_WR="▶" + ICON_MAIL="⍌" + ICON_UP="▲" + ICON_DN="▼" + ICON_TRASH="♸" + ICON_WIFI=ICON="⚚" +else + ICON_C="C" + ICON_F="F" + ICON_RD="<" + ICON_WR=">" + ICON_MAIL="[M]" + ICON_UP="^" + ICON_DN="v" + ICON_TRASH="T" + ICON_WIFI= +fi diff --git a/usr/lib/byobu/.shutil b/usr/lib/byobu/.shutil index 852752a2..efe065eb 100755 --- a/usr/lib/byobu/.shutil +++ b/usr/lib/byobu/.shutil @@ -1,3 +1,5 @@ +color 2>/dev/null || color() { true; } + # uncommented_lines(char=#) # does the standard input have lines that do not start with 'char'? uncommented_lines() { @@ -81,4 +83,8 @@ readfile() { return 0 } +metadata_available() { + wget -q -O- --timeout=1 http://169.254.169.254 +} + # vi: syntax=sh ts=4 noexpandtab diff --git a/usr/lib/byobu/apport b/usr/lib/byobu/apport index 7a5524d7..8d4d82b2 100755 --- a/usr/lib/byobu/apport +++ b/usr/lib/byobu/apport @@ -1,9 +1,11 @@ #!/bin/sh -e # # apport: note if there are crash dumps available for apporting -# Copyright (C) 2009 Canonical Ltd. # -# Authors: Dustin Kirkland +# Copyright (C) 2009 Canonical Ltd. +# Copyright (C) 2011 Dustin Kirkland +# +# Authors: Dustin Kirkland # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -17,10 +19,7 @@ # You should have received a copy of the GNU General Public License # along with this program. If not, see . -PKG="byobu" -color 2>/dev/null || color() { true; } - -if [ "$1" = "--detail" ]; then +__apport_detail() { if ls /var/crash/*.crash >/dev/null 2>&1; then printf "\nTo file bugs on the existing crash reports, run:\n" which apport-cli >/dev/null || printf " sudo apt-get install apport\n" @@ -32,13 +31,14 @@ if [ "$1" = "--detail" ]; then else printf "No pending crash reports\n" fi - exit 0 -fi +} -# Print {!} if a /var/crash/*.crash file exists -for i in /var/crash/*.crash; do - color y k; printf "{!}"; color -- - exit 0 -done +__apport() { + # Print {!} if a /var/crash/*.crash file exists + for i in /var/crash/*.crash; do + color y k; printf "{!}"; color -- + return + done +} # vi: syntax=sh ts=4 noexpandtab diff --git a/usr/lib/byobu/arch b/usr/lib/byobu/arch index 6b2358bd..3d6d90fe 100755 --- a/usr/lib/byobu/arch +++ b/usr/lib/byobu/arch @@ -1,9 +1,11 @@ #!/bin/sh -e # # arch: print the machine architecture -# Copyright (C) 2008 Canonical Ltd. # -# Authors: Dustin Kirkland +# Copyright (C) 2008 Canonical Ltd. +# Copyright (C) 2011 Dustin Kirkland +# +# Authors: Dustin Kirkland # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -17,11 +19,12 @@ # You should have received a copy of the GNU General Public License # along with this program. If not, see . -if [ "$1" = "--detail" ]; then +__arch_detail() { uname -a - exit 0 -fi +} -printf "%s " $(uname -m) +__arch() { + printf "%s" $(uname -m) +} # vi: syntax=sh ts=4 noexpandtab diff --git a/usr/lib/byobu/battery b/usr/lib/byobu/battery index b85b19f7..e266446e 100755 --- a/usr/lib/byobu/battery +++ b/usr/lib/byobu/battery @@ -1,39 +1,37 @@ #!/bin/sh -e # -# battery: print the state of the battery -# Copyright (C) 2009 Raphaël Pinson. +# battery: print the state of the battery # -# Authors: Raphaël Pinson -# Dustin Kirkland +# Copyright (C) 2009 Raphaël Pinson. +# Copyright (C) 2011 Dustin Kirkland # -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, version 3 of the License. +# Authors: Raphaël Pinson +# Dustin Kirkland # -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, version 3 of the License. # -# You should have received a copy of the GNU General Public License -# along with this program. If not, see . +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . -PKG="byobu" -color 2>/dev/null || color() { true; } - -if [ "$1" = "--detail" ]; then +__battery_detail() { + local bat for bat in /proc/acpi/battery/*; do cat "$bat/info" cat "$bat/state" done - exit 0 -fi +} -battery_info() { +__battery() { local bat line present sign state percent full rem color bcolor for bat in $BATTERY /proc/acpi/battery/*; do [ -f "$bat/info" ] || continue - present=""; full=""; rem=""; state="" while read line; do set -- ${line} @@ -46,7 +44,6 @@ battery_info() { esac [ -n "$present" -a -n "$full" ] && break done < "${bat}/info" - while read line; do set -- ${line} case "$line" in @@ -55,9 +52,7 @@ battery_info() { esac [ -n "$rem" -a -n "$state" ] && break done < "$bat/state" - percent=$(((100*$rem)/$full)) - if [ "$percent" -lt 33 ]; then color="R k" bcolor="b R k" @@ -69,7 +64,6 @@ battery_info() { bcolor="b G k" fi percent="$percent%" - case $state in charging) sign="+" ;; discharging) sign="-" ;; @@ -81,6 +75,4 @@ battery_info() { done } -battery_info "$@" - # vi: syntax=sh ts=4 noexpandtab diff --git a/usr/lib/byobu/cpu_count b/usr/lib/byobu/cpu_count index 7e7321bf..3ba27e70 100755 --- a/usr/lib/byobu/cpu_count +++ b/usr/lib/byobu/cpu_count @@ -1,9 +1,11 @@ #!/bin/sh -e # # cpu_count: count cpu's on a systems -# Copyright (C) 2008 Canonical Ltd. # -# Authors: Dustin Kirkland +# Copyright (C) 2008 Canonical Ltd. +# Copyright (C) 2011 Dustin Kirkland +# +# Authors: Dustin Kirkland # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -17,11 +19,14 @@ # You should have received a copy of the GNU General Public License # along with this program. If not, see . -if [ "$1" = "--detail" ]; then +__cpu_count_detail() { grep -i "^model name" /proc/cpuinfo - exit 0 -fi -count=$(getconf _NPROCESSORS_ONLN 2>/dev/null || grep -ci "^processor" /proc/cpuinfo) -[ "$count" = "1" ] || printf "%sx" "$count" +} + +__cpu_count() { + local c + c=$(getconf _NPROCESSORS_ONLN 2>/dev/null || grep -ci "^processor" /proc/cpuinfo) + [ "$c" = "1" ] || printf "%sx" "$c" +} # vi: syntax=sh ts=4 noexpandtab diff --git a/usr/lib/byobu/cpu_freq b/usr/lib/byobu/cpu_freq index 77e86723..c6bc237b 100755 --- a/usr/lib/byobu/cpu_freq +++ b/usr/lib/byobu/cpu_freq @@ -1,9 +1,11 @@ #!/bin/sh -e # # cpu_freq: calculate current cpu frequency -# Copyright (C) 2008 Canonical Ltd. # -# Authors: Dustin Kirkland +# Copyright (C) 2008 Canonical Ltd. +# Copyright (C) 2011 Dustin Kirkland +# +# Authors: Dustin Kirkland # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -17,28 +19,27 @@ # You should have received a copy of the GNU General Public License # along with this program. If not, see . -PKG="byobu" -color 2>/dev/null || color() { true; } - -if [ "$1" = "--detail" ]; then +__cpu_freq_detail() { cat /proc/cpuinfo - exit 0 -fi +} -if [ -r "/sys/devices/system/cpu/cpu0/cpufreq/scaling_cur_freq" ]; then - read hz < /sys/devices/system/cpu/cpu0/cpufreq/scaling_cur_freq - fpdiv $hz "1000000" 1 # 1Ghz - freq="$_RET" -else - if egrep -q -s -i -m 1 "^cpu MHz|^clock" /proc/cpuinfo; then - freq=$(egrep -i -m 1 "^cpu MHz|^clock" /proc/cpuinfo | awk -F"[:.]" '{ printf "%.1f", $2 / 1000 }') +__cpu_freq() { + local hz freq count + if [ -r "/sys/devices/system/cpu/cpu0/cpufreq/scaling_cur_freq" ]; then + read hz < /sys/devices/system/cpu/cpu0/cpufreq/scaling_cur_freq + fpdiv $hz "1000000" 1 # 1Ghz + freq="$_RET" else - # Must scale frequency by number of processors, if counting bogomips - count=$(getconf _NPROCESSORS_ONLN 2>/dev/null || grep -ci "^processor" /proc/cpuinfo) - freq=$(egrep -i -m 1 "^bogomips" /proc/cpuinfo | awk -F"[:.]" '{ print $2 }') - freq=$(echo "$freq" "$count" | awk '{printf "%.1f\n", $1/$2/1000}') + if egrep -q -s -i -m 1 "^cpu MHz|^clock" /proc/cpuinfo; then + freq=$(egrep -i -m 1 "^cpu MHz|^clock" /proc/cpuinfo | awk -F"[:.]" '{ printf "%.1f", $2 / 1000 }') + else + # Must scale frequency by number of processors, if counting bogomips + count=$(getconf _NPROCESSORS_ONLN 2>/dev/null || grep -ci "^processor" /proc/cpuinfo) + freq=$(egrep -i -m 1 "^bogomips" /proc/cpuinfo | awk -F"[:.]" '{ print $2 }') + freq=$(echo "$freq" "$count" | awk '{printf "%.1f\n", $1/$2/1000}') + fi fi -fi -color b c W; printf "%s" "$freq"; color -; color c W; printf "%s" "GHz"; color -- + color b c W; printf "%s" "$freq"; color -; color c W; printf "%s" "GHz"; color -- +} # vi: syntax=sh ts=4 noexpandtab diff --git a/usr/lib/byobu/cpu_temp b/usr/lib/byobu/cpu_temp index 93ce2863..5a993a84 100755 --- a/usr/lib/byobu/cpu_temp +++ b/usr/lib/byobu/cpu_temp @@ -1,56 +1,56 @@ #!/bin/sh -e # -# cpu_temp: cpu temperature -# Copyright (C) 2008 Canonical Ltd. +# cpu_temp: cpu temperature # -# Authors: Dustin Kirkland +# Copyright (C) 2008 Canonical Ltd. +# Copyright (C) 2011 Dustin Kirkland +# +# Authors: Dustin Kirkland +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, version 3 of the License. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, version 3 of the License. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program. If not, see . -# +CPU_TEMP_DIR="/proc/acpi/thermal_zone" -PKG="byobu" -color 2>/dev/null || color() { true; } -[ "$UTF8" = "1" ] && ICON_C="℃" || ICON_C="C" -[ "$UTF8" = "1" ] && ICON_F="℉" || ICON_F="F" - -DIR="/proc/acpi/thermal_zone" -if [ "$1" = "--detail" ] && [ -d "$DIR" ]; then - for i in "$DIR"/*; do +__cpu_temp_detail() { + local i + for i in "$CPU_TEMP_DIR"/*; do [ -r "$i" ] || continue echo "$i:" cat "$i"/* done - exit 0 -fi +} -for i in $MONITORED_TEMP /sys/class/hwmon/hwmon*/temp*_input /proc/acpi/ibm/thermal $DIR/*/temperature; do - case "$i" in - *temp*_input) - [ -s "$i" ] && read t < "$i" && t=$(($t/1000)) - ;; - *) - [ -s "$i" ] && t=$(sed -e "s/^[^0-9]\+//" -e "s/\s.*$//" "$i") - ;; - esac - if [ -n "$t" ]; then - unit="$ICON_C" - if [ "$TEMP" = "F" ]; then - t=$(($t*9/5 + 32)) - unit="$ICON_F" +__cpu_temp() { + local i t unit + for i in $MONITORED_TEMP /sys/class/hwmon/hwmon*/temp*_input /proc/acpi/ibm/thermal "$CPU_TEMP_DIR"/*/temperature; do + case "$i" in + *temp*_input) + [ -s "$i" ] && read t < "$i" && t=$(($t/1000)) + ;; + *) + [ -s "$i" ] && t=$(sed -e "s/^[^0-9]\+//" -e "s/\s.*$//" "$i") + ;; + esac + if [ -n "$t" ]; then + unit="$ICON_C" + if [ "$TEMP" = "F" ]; then + t=$(($t*9/5 + 32)) + unit="$ICON_F" + fi + color b k Y; printf "%s" "$t"; color -; color k Y; printf "%s" "$unit"; color -- + break fi - color b k Y; printf "%s" "$t"; color -; color k Y; printf "%s%s" "$ICON" "$unit"; color -- - break - fi -done + done +} # vi: syntax=sh ts=4 noexpandtab diff --git a/usr/lib/byobu/custom b/usr/lib/byobu/custom index a32f862f..ef9823c4 100755 --- a/usr/lib/byobu/custom +++ b/usr/lib/byobu/custom @@ -3,8 +3,9 @@ # custom: run the user's custom status scripts # # Copyright (C) 2009 Canonical Ltd. +# Copyright (C) 2011 Dustin Kirkland # -# Authors: Dustin Kirkland +# Authors: Dustin Kirkland # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -18,41 +19,41 @@ # You should have received a copy of the GNU General Public License # along with this program. If not, see . -PKG="byobu" -DATA="$HOME/.$PKG" -[ -d "$DATA/bin" ] || exit 0 -color 2>/dev/null || color() { true; } +__custom_detail() { + return +} -[ -d "/var/run/screen/S-$USER" ] && DIR="/var/run/screen/S-$USER" || DIR="$DATA" -NOW=$(date +%s) -CACHE="$DIR/$PKG.custom" - -# Loop over custom scripts -for i in "$DATA/bin/"[0-9]*_*; do - [ -x "$i" ] || continue - script=${i##*/} - freq=${script%%_*} - freq=${freq#0} - [ -r "$CACHE.$script.last" ] && read lastrun < "$CACHE.$script.last" || lastrun=0 - expiration=$(($lastrun+$freq)) - if [ $NOW -ge $expiration ]; then - "$i" "$@" > "$CACHE.$script" 2>/dev/null - echo "${NOW}" > "$CACHE.$script.last" - fi - readfile < "$CACHE.$script" - output="${_RET}" - case "$output" in - *"$ESC{"*) - # User has formatted the colors - OUTPUT="$OUTPUT$(printf "$output")" - ;; - *) - # Default to inverted coloring - OUTPUT="$OUTPUT$(color invert; printf "%s" "$output"; color --)" - ;; - esac -done - -echo "$OUTPUT" | sed ':a;N;$!ba;s/\n//g' +__custom() { + local cache="$CACHE_DIR/custom" + local i= output= + for i in "$HOME/.$PKG/bin/"[0-9]*_*; do + # Loop over custom scripts + [ -x "$i" ] || continue + local now="$(date +%s)" + local script=${i##*/} + local freq=${script%%_*} + freq=${freq#0} + local lastrun= + [ -r "$cache.$script.last" ] && read lastrun < "$cache.$script.last" || lastrun=0 + local expiration=$(($lastrun+$freq)) + if [ $now -ge $expiration ]; then + "$i" > "$cache.$script" 2>/dev/null + echo "${now}" > "$cache.$script.last" + fi + readfile < "$cache.$script" + local str="${_RET}" + case "$str" in + *"$ESC{"*) + # User has formatted the colors + output="$output$(printf "$str")" + ;; + *) + # Default to inverted coloring + output="$output$(color invert; printf "%s" "$str"; color --)" + ;; + esac + done + echo -n "$output" | sed ':a;N;$!ba;s/\n//g' +} # vi: syntax=sh ts=4 noexpandtab diff --git a/usr/lib/byobu/date b/usr/lib/byobu/date index a5ee2487..ddef1d65 100755 --- a/usr/lib/byobu/date +++ b/usr/lib/byobu/date @@ -1,9 +1,11 @@ #!/bin/sh -e # -# date - print the date in YYYY-MM-DD format -# Copyright (C) 2008 Canonical Ltd. +# date: print the date in YYYY-MM-DD format # -# Authors: Dustin Kirkland +# Copyright (C) 2008 Canonical Ltd. +# Copyright (C) 2011 Dustin Kirkland +# +# Authors: Dustin Kirkland # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -17,20 +19,14 @@ # You should have received a copy of the GNU General Public License # along with this program. If not, see . -case "$1" in - --detail) - date - ;; - --short) - date +%Y-%m-%d - ;; - *) - bd=$(date "+%m%d") - [ "$bd" = "0320" ] && - msg="$(echo SGFwcHkgQmlydGhkYXkgU2NyZWVuIC0tIGh0dHA6Ly9iaXQubHkvc2NyZWVuLWJkYXkK | base64 -di)" && - screen -X -S "byobu" at "*" echo "[$msg]" - printf "\005Y-\005m-\005d " - ;; -esac +__date_detail() { + date +} + +__date() { + bd=$(date "+%m%d") + [ "$bd" = "0320" ] && msg="$(echo SGFwcHkgQmlydGhkYXkgU2NyZWVuIC0tIGh0dHA6Ly9iaXQubHkvc2NyZWVuLWJkYXkK | base64 -di)" && screen -X -S "byobu" at "*" echo "[$msg]" + printf "\005Y-\005m-\005d" +} # vi: syntax=sh ts=4 noexpandtab diff --git a/usr/lib/byobu/disk b/usr/lib/byobu/disk index a6ff92e6..15c1b485 100755 --- a/usr/lib/byobu/disk +++ b/usr/lib/byobu/disk @@ -1,9 +1,11 @@ #!/bin/sh -e # # disk: print the current disk space and usage -# Copyright (C) 2008 Canonical Ltd. # -# Authors: Dustin Kirkland +# Copyright (C) 2008 Canonical Ltd. +# Copyright (C) 2011 Dustin Kirkland +# +# Authors: Dustin Kirkland # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -17,39 +19,28 @@ # You should have received a copy of the GNU General Public License # along with this program. If not, see . -PKG="byobu" -color 2>/dev/null || color() { true; } - -if [ "$1" = "--detail" ]; then +__disk_detail() { df -h -P - exit 0 -fi +} -# Default to /, but let users override -[ -z "$MONITORED_DISK" ] && MP="/" || MP="$MONITORED_DISK" -case $MP in - /dev/*) MP=$(awk '$1 == m { print $2; exit(0); }' "m=$MP" /proc/mounts);; -esac - -get_size_pct() { +__disk() { + local out="" MP="" size="" pct="" unit="" + # Default to /, but let users override + [ -z "$MONITORED_DISK" ] && MP="/" || MP="$MONITORED_DISK" + case $MP in + /dev/*) MP=$(awk '$1 == m { print $2; exit(0); }' "m=$MP" /proc/mounts);; + esac # this could be done faster with 'stat --file-system --format' # but then we'd have to do blocks -> human units ourselves - local out="" MP=$1 size="" pct="" unit="" - out=$({ df -h -P "$MP" 2>/dev/null || df -h "$MP"; } | - awk 'END { printf("%s %s", $2, $5); }') + out=$({ df -h -P "$MP" 2>/dev/null || df -h "$MP"; } | awk 'END { printf("%s %s", $2, $5); }') set -- ${out} size=${1}; pct=${2}; - unit=${size#${size%?}} # get the unit (last char) size=${size%?}; # take the unit off pct=${pct%?}; # take off the '%' - _UNIT=${unit}; _SIZE=${size}; _PCT=${pct}; + color b M W; echo -n "$_SIZE"; color -; color M W; echo -n "${_UNIT}B,"; color -; + color b M W; echo -n "$_PCT"; color -; color M W; echo -n "%" ; color --; } -get_size_pct "${MP}" - -color b M W; echo -n "$_SIZE"; color -; color M W; echo -n "${_UNIT}B,"; color -; -color b M W; echo -n "$_PCT"; color -; color M W; echo -n "%" ; color --; - # vi: syntax=sh ts=4 noexpandtab diff --git a/usr/lib/byobu/disk_io b/usr/lib/byobu/disk_io index aa4e823a..965e2f1b 100755 --- a/usr/lib/byobu/disk_io +++ b/usr/lib/byobu/disk_io @@ -1,9 +1,11 @@ #!/bin/sh -e # # disk_io: calculate the disk io rate -# Copyright (C) 2010 Canonical Ltd. # -# Authors: Dustin Kirkland +# Copyright (C) 2010 Canonical Ltd. +# Copyright (C) 2011 Dustin Kirkland +# +# Authors: Dustin Kirkland # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -17,9 +19,15 @@ # You should have received a copy of the GNU General Public License # along with this program. If not, see . -PKG="byobu" -DATA="$HOME/.$PKG" -color 2>/dev/null || color() { true; } +__disk_io_detail() { + if command -v iostat >/dev/null; then + iostat -d -m -h + else + echo "Please install iostat if you want detailed information on your disk throughput" + fi +} + + getdisk() { local t="" if [ -L "${1}" ]; then @@ -32,71 +40,60 @@ getdisk() { [ -h "/sys/block/$t" ] && _RET="$t" || rtrim "$t" "0-9" } -[ "$UTF8" = "1" ] && ICON_RD="◀" || ICON_RD="<" -[ "$UTF8" = "1" ] && ICON_WR="▶" || ICON_WR=">" - -# Default to disk providing /, but let users override with MONITORED_DISK -[ -z "$MONITORED_DISK" ] && MP="/" || MP="$MONITORED_DISK" - -# By default, we won't bug the user with the display of network traffic -# below DISK_IO_THRESHOLD in kB/s; override in $DATA/status -[ -n "$DISK_IO_THRESHOLD" ] || DISK_IO_THRESHOLD=50 - -if [ "$1" = "--detail" ]; then - if command -v iostat >/dev/null; then - iostat -d -m -h - else - echo "Please install iostat if you want detailed information on your disk throughput" - fi - exit 0 -fi - -case "$MP" in - /dev/*) part="${MP}";; - *) part=$(awk '$2 == mp { print $1 ; exit(0); }' "mp=$MP" /etc/mtab);; -esac -getdisk "$part" -disk=${_RET} - -[ -d "/var/run/screen/S-$USER" ] && DIR="/var/run/screen/S-$USER" || DIR="$DATA" -t2=`date +%s` -for i in "read" "write"; do - cache="$DIR/$PKG.disk_$i" - t1=`stat -c %Y "$cache"` 2>/dev/null || t1=0 - unit="kB/s" - if [ $t2 -le $t1 ]; then - rate=0 - else - [ -r "$cache" ] && read x1 < "$cache" || x1=0 - read a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 other < "/sys/block/$disk/stat" - if [ "$i" = "read" ]; then - symbol="$ICON_RD" - x2="$a3" - else - symbol="$ICON_WR" - x2="$a7" - fi - echo "$x2" > "$cache" - rate=$((($x2 - $x1) / ($t2 - $t1) * 512 / 1024)) - if [ $rate -lt $DISK_IO_THRESHOLD ]; then - # Below threshold, exit immediately! - exit 0 - elif [ "$rate" -lt 0 ]; then +__disk_io() { + local part= i= + # Default to disk providing /, but let users override with MONITORED_DISK + [ -z "$MONITORED_DISK" ] && mount_point="/" || mount_point="$MONITORED_DISK" + # By default, we won't bug the user with the display of network traffic + # below DISK_IO_THRESHOLD in kB/s; override in $CONFIG_DIR/status + [ -n "$DISK_IO_THRESHOLD" ] || DISK_IO_THRESHOLD=50 + case "$mount_point" in + /dev/*) part="${mount_point}";; + *) part=$(awk '$2 == mp { print $1 ; exit(0); }' "mp=$mount_point" /etc/mtab);; + esac + getdisk "$part" + local disk=${_RET} + local t2=`date +%s` t1= + for i in "read" "write"; do + local cache="$CACHE_DIR/disk.$i" + t1=`stat -c %Y "$cache"` 2>/dev/null || t1=0 + local unit="kB/s" + local rate= x1= x2= symbol= unit= + if [ $t2 -le $t1 ]; then rate=0 - elif [ "$rate" -gt 1048576 ]; then - unit="GB/s" - fpdiv "$rate" 1048576 0 - rate=${_RET} - elif [ "$rate" -gt 1024 ]; then - unit="MB/s" - fpdiv "$rate" 1024 0 - rate=${_RET} else - unit="kB/s" + [ -r "$cache" ] && read x1 < "$cache" || x1=0 + local a1= a2= a3= a4= a5= a6= a7= a8= a9= a10= + read a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 other < "/sys/block/$disk/stat" + if [ "$i" = "read" ]; then + symbol="$ICON_RD" + x2="$a3" + else + symbol="$ICON_WR" + x2="$a7" + fi + echo "$x2" > "$cache" + rate=$((($x2 - $x1) / ($t2 - $t1) * 512 / 1024)) + if [ $rate -lt $DISK_IO_THRESHOLD ]; then + # Below threshold, don't print + continue + elif [ "$rate" -lt 0 ]; then + rate=0 + elif [ "$rate" -gt 1048576 ]; then + unit="GB/s" + fpdiv "$rate" 1048576 0 + rate=${_RET} + elif [ "$rate" -gt 1024 ]; then + unit="MB/s" + fpdiv "$rate" 1024 0 + rate=${_RET} + else + unit="kB/s" + fi fi - fi - [ "$rate" != "0" ] || continue - color b M W; printf "%s%s" "$symbol" "$rate"; color -; color M W; printf "%s" "$unit"; color -- -done + [ "$rate" != "0" ] || continue + color b M W; printf "%s%s" "$symbol" "$rate"; color -; color M W; printf "%s" "$unit"; color -- + done +} # vi: syntax=sh ts=4 noexpandtab diff --git a/usr/lib/byobu/ec2_cost b/usr/lib/byobu/ec2_cost index a396bf9a..0801dc49 100755 --- a/usr/lib/byobu/ec2_cost +++ b/usr/lib/byobu/ec2_cost @@ -1,9 +1,11 @@ -#!/bin/sh +#!/bin/sh -e # # ec2_cost: approximate EC2 cost (USD) of the current instance -# Copyright (C) 2008 Canonical Ltd. # -# Authors: Dustin Kirkland +# Copyright (C) 2008 Canonical Ltd. +# Copyright (C) 2011 Dustin Kirkland +# +# Authors: Dustin Kirkland # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -17,55 +19,6 @@ # You should have received a copy of the GNU General Public License # along with this program. If not, see . -DETAIL=0 -PKG="byobu" -DATA="$HOME/.$PKG" -[ -z "$BYOBU_PREFIX" ] && BYOBU_PREFIX="/usr" -color 2>/dev/null || color() { true; } - -for arg in $@; do - case "$arg" in - -d|--detail) - DETAIL=1 - ;; - esac -done - -# Try to use metadata service -if host 169.254.169.254 >/dev/null 2>&1; then - zone=$(wget -q -O - http://169.254.169.254/latest/meta-data/placement/availability-zone) - . "$BYOBU_PREFIX/share/$PKG/ec2/rates.${zone%?}" - type=$(wget -q -O - http://169.254.169.254/latest/meta-data/instance-type | sed -e "s/\./_/g") - eval RATE="\$$type" - file_to_stat="$DATA/.ec2_instance_type" - [ -f "$file_to_stat" ] || wget -q -O "$file_to_stat" http://169.254.169.254/latest/meta-data/instance-type -else - . "$BYOBU_PREFIX/share/$PKG/ec2/rates."* - # Count CPUs, Memory, Architecture, hours - cpu=$(grep -c "^processor.*:" /proc/cpuinfo) || cpu=1 - mem=$(grep ^MemTotal /proc/meminfo | awk '{print $2}') - # /etc/hostname gets created at installation (but might get updated...other ideas?) - file_to_stat="/etc/hostname" - # Guess this system's going rate, based on mem available (m* types) - if [ $mem -lt 700000 ]; then - RATE=$t1_micro - elif [ $mem -gt 64000000 ]; then - RATE=$m2_4xlarge - elif [ $mem -gt 32000000 ]; then - RATE=$m2_2xlarge - elif [ $mem -gt 16000000 ]; then - RATE=$m2_xlarge - elif [ $mem -gt 14000000 ]; then - RATE=$m1_xlarge - elif [ $mem -gt 7000000 ]; then - RATE=$m1_large - else - # Otherwise, scale based on number of cpu's (c* types) - RATE=$(echo "$cpu" "$m1_small" | awk '{printf "%f", $1*$2}') - fi -fi -hours=$(((`date +%s` - `stat --printf %Y $file_to_stat`) / 60 / 60 + 1)) - # Data Transfer Cost Basis # Incoming $0.10/GB # Outgoing $0.17/GB @@ -73,38 +26,75 @@ hours=$(((`date +%s` - `stat --printf %Y $file_to_stat`) / 60 / 60 + 1)) RX_RATE="0.10" TX_RATE="0.15" -# Auto detect network interface -IF=`tail -n1 /proc/net/route | awk '{print $1}'` +__ec2_cost_detail() { + DETAIL=1 + __ec2_cost +} -ifconfig_out=`LC_ALL=C /sbin/ifconfig "$IF"` - -# Calculate bandwidth cost -tx_gb=${ifconfig_out#*RX bytes:} -tx_gb=$(echo ${tx_gb%% *} | awk '{ printf "%f", $1 / 1024 / 1024 / 1024 }') -rx_gb=${ifconfig_out#*TX bytes:} -rx_gb=$(echo ${rx_gb%% *} | awk '{ printf "%f", $1 / 1024 / 1024 / 1024 }') -network_cost=`echo "$tx_gb" "$TX_RATE" "$rx_gb" "$RX_RATE" | awk '{printf "%f %f", $1*$2, $3*$4}' | awk '{printf "%f", $1 + $2}'` - -# Calculate uptime cost -uptime_cost=`echo "$hours" | awk "{printf \"%f\", "$RATE" * $hours}"` -total_cost=`echo "$network_cost" "$uptime_cost" | awk '{printf "%.2f", $1 + $2}'` - -if [ "$DETAIL" = "1" ]; then - echo "================================================" - echo "Estimated cost in Amazon's EC2 since last reboot" - echo "================================================" - echo " Network sent: $tx_gb GB @ \$$RX_RATE/GB" - echo " Network recv: $rx_gb GB @ \$$TX_RATE/GB" - echo " Network cost: \$$network_cost" - echo "------------------------------------------------" - echo " Uptime: $hours hr @ \$$RATE/hr" - echo " Uptime cost: \$$uptime_cost" - echo "------------------------------------------------" - echo "Total cost: ~\$$total_cost" - echo "================================================" - exit 0 -fi - -color K G; printf "A\$"; color -; color b K G; printf "%s" "$total_cost"; color -- +__ec2_cost() { + local zone type file_to_stat cpu mem rate hours tx_gb rx_gb network_cost uptime_cost total_cost interface + # Try to use metadata service + if metadata_available; then + zone=$(wget -q -O - http://169.254.169.254/latest/meta-data/placement/availability-zone) + . "$BYOBU_PREFIX/share/$PKG/ec2/rates.${zone%?}" + type=$(wget -q -O - http://169.254.169.254/latest/meta-data/instance-type | sed -e "s/\./_/g") + eval rate="\$$type" + file_to_stat="$CACHE_DIR/ec2_cost.instance_type" + [ -f "$file_to_stat" ] || wget -q -O "$file_to_stat" http://169.254.169.254/latest/meta-data/instance-type + else + . "$BYOBU_PREFIX/share/$PKG/ec2/rates."* + # Count CPUs, Memory, Architecture, hours + cpu=$(grep -c "^processor.*:" /proc/cpuinfo) || cpu=1 + mem=$(grep ^MemTotal /proc/meminfo | awk '{print $2}') + # /etc/hostname gets created at installation (but might get updated...other ideas?) + file_to_stat="/etc/hostname" + # Guess this system's going rate, based on mem available (m* types) + if [ $mem -lt 700000 ]; then + rate=$t1_micro + elif [ $mem -gt 64000000 ]; then + rate=$m2_4xlarge + elif [ $mem -gt 32000000 ]; then + rate=$m2_2xlarge + elif [ $mem -gt 16000000 ]; then + rate=$m2_xlarge + elif [ $mem -gt 14000000 ]; then + rate=$m1_xlarge + elif [ $mem -gt 7000000 ]; then + rate=$m1_large + else + # Otherwise, scale based on number of cpu's (c* types) + rate=$(echo "$cpu" "$m1_small" | awk '{printf "%f", $1*$2}') + fi + fi + hours=$(((`date +%s` - `stat --printf %Y $file_to_stat`) / 60 / 60 + 1)) + # Auto detect network interface + interface=`tail -n1 /proc/net/route | awk '{print $1}'` + ifconfig_out=`LC_ALL=C /sbin/ifconfig "$interface"` + # Calculate bandwidth cost + tx_gb=${ifconfig_out#*RX bytes:} + tx_gb=$(echo ${tx_gb%% *} | awk '{ printf "%f", $1 / 1024 / 1024 / 1024 }') + rx_gb=${ifconfig_out#*TX bytes:} + rx_gb=$(echo ${rx_gb%% *} | awk '{ printf "%f", $1 / 1024 / 1024 / 1024 }') + network_cost=`echo "$tx_gb" "$TX_RATE" "$rx_gb" "$RX_RATE" | awk '{printf "%f %f", $1*$2, $3*$4}' | awk '{printf "%f", $1 + $2}'` + # Calculate uptime cost + uptime_cost=`echo "$hours" | awk "{printf \"%f\", "$rate" * $hours}"` + total_cost=`echo "$network_cost" "$uptime_cost" | awk '{printf "%.2f", $1 + $2}'` + if [ "$DETAIL" = "1" ]; then + echo "================================================" + echo "Estimated cost in Amazon's EC2 since last reboot" + echo "================================================" + echo " Network sent: $tx_gb GB @ \$$RX_RATE/GB" + echo " Network recv: $rx_gb GB @ \$$TX_RATE/GB" + echo " Network cost: \$$network_cost" + echo "------------------------------------------------" + echo " Uptime: $hours hr @ \$$rate/hr" + echo " Uptime cost: \$$uptime_cost" + echo "------------------------------------------------" + echo "Total cost: ~\$$total_cost" + echo "================================================" + return + fi + color K G; printf "A\$"; color -; color b K G; printf "%s" "$total_cost"; color -- +} # vi: syntax=sh ts=4 noexpandtab diff --git a/usr/lib/byobu/fan_speed b/usr/lib/byobu/fan_speed index d9fa37b9..2ba234b1 100755 --- a/usr/lib/byobu/fan_speed +++ b/usr/lib/byobu/fan_speed @@ -1,35 +1,32 @@ #!/bin/sh -e # -# fan_speed: speed of the cpu or case fan -# Copyright (C) 2009 Canonical Ltd. +# fan_speed: speed of the cpu or case fan # -# Authors: Dustin Kirkland - -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, version 3 of the License. +# Copyright (C) 2009 Canonical Ltd. +# Copyright (C) 2011 Dustin Kirkland # -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. +# Authors: Dustin Kirkland # -# You should have received a copy of the GNU General Public License -# along with this program. If not, see . +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, version 3 of the License. # +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . -PKG="byobu" -color 2>/dev/null || color() { true; } +__fan_speed_detail() { + # Nothing interesting to say here about fan speed + return +} -DIR="/sys/class/hwmon" - -# Nothing interesting to say here about fan speed -[ "$1" = "--detail" ] && exit 0 - -# Let's check a few different probes for fan speed - -fan_speed_info() { +__fan_speed() { local i="" speed=0 + # Let's check a few different probes for fan speed # This seems to cover most of them: for i in /sys/class/hwmon/*/*/fan1_input; do [ -f "$i" ] || continue @@ -58,7 +55,4 @@ fan_speed_info() { fi } -fan_speed_info "$@" - - # vi: syntax=sh ts=4 noexpandtab diff --git a/usr/lib/byobu/hostname b/usr/lib/byobu/hostname index 4460c206..b95edca6 100755 --- a/usr/lib/byobu/hostname +++ b/usr/lib/byobu/hostname @@ -1,7 +1,9 @@ #!/bin/sh -e # -# hostname - report a host's name +# hostname: report a host's name +# # Copyright (C) 2008-2011 Canonical Ltd. +# Copyright (C) 2011 Dustin Kirkland # # Authors: Dustin Kirkland # @@ -17,22 +19,18 @@ # You should have received a copy of the GNU General Public License # along with this program. If not, see . -PKG="byobu" -DATA="$HOME/.$PKG" -color 2>/dev/null || color() { true; } - -if [ "$1" = "--detail" ]; then +__hostname_detail() { hostname -f - exit 0 -fi +} -if host 169.254.169.254 >/dev/null 2>&1; then - # We're in EC2, so get our public hostname - h=$(wget -q -O - http://169.254.169.254/latest/meta-data/public-hostname) -else - h=$(hostname -s 2>/dev/null || hostname) -fi - -color bold2; printf "%s" "$h"; color -- +__hostname() { + if metadata_available; then + # We're in EC2, so get our public hostname + h=$(wget -q -O - http://169.254.169.254/latest/meta-data/public-hostname) + else + h=$(hostname -s 2>/dev/null || hostname) + fi + color bold2; printf "%s" "$h"; color -- +} # vi: syntax=sh ts=4 noexpandtab diff --git a/usr/lib/byobu/ip_address b/usr/lib/byobu/ip_address index c06b4703..8d585982 100755 --- a/usr/lib/byobu/ip_address +++ b/usr/lib/byobu/ip_address @@ -1,7 +1,9 @@ #!/bin/sh -e # -# ip_address - report a host's ip address +# ip_address: report a host's ip address +# # Copyright (C) 2008-2011 Canonical Ltd. +# Copyright (C) 2011 Dustin Kirkland # # Authors: Dustin Kirkland # @@ -17,51 +19,43 @@ # You should have received a copy of the GNU General Public License # along with this program. If not, see . -PKG="byobu" -DATA="$HOME/.$PKG" -color 2>/dev/null || color() { true; } - -if [ "$1" = "--detail" ]; then +__ip_address_detail() { [ -x /sbin/ifconfig ] && /sbin/ifconfig /sbin/ip -4 addr list /sbin/ip -6 addr list - exit 0 -fi +} -. "$DATA/status" - -# Allow interface overrides in $DATA/statusrc -if [ -n "$MONITORED_NETWORK" ]; then - interface="$MONITORED_NETWORK" -else +__ip_address() { + local interface ipaddr + # Allow interface overrides in $CONFIG_DIR/statusrc + if [ -n "$MONITORED_NETWORK" ]; then + interface="$MONITORED_NETWORK" + else + case "$IPV6" in + 1|true|yes) interface=$(awk '$10 != "lo" { iface=$10 ; }; END { print iface; }' /proc/net/ipv6_route);; + *) interface=$(awk 'END {print $1}' /proc/net/route);; + esac + fi case "$IPV6" in 1|true|yes) - interface=$(awk '$10 != "lo" { iface=$10 ; }; END { print iface; }' \ - /proc/net/ipv6_route);; - *) interface=$(awk 'END {print $1}' /proc/net/route);; - esac -fi - -case "$IPV6" in - 1|true|yes) - ipaddr=$(LC_ALL=C /sbin/ip -6 addr list dev "$interface" scope global) - # Print 'None' if we have no global address - [ -z "$ipaddr" ] && ipaddr="None" - ipaddr=${ipaddr#* inet6 } - ipaddr=${ipaddr%%/*} - ;; - *) - if host 169.254.169.254 >/dev/null 2>&1; then - # We're in EC2, so get our public IP address - ipaddr=$(wget -q -O- http://169.254.169.254/latest/meta-data/public-ipv4) - else - ipaddr=$(LC_ALL=C /sbin/ip -4 addr list dev "$interface" scope global) - ipaddr=${ipaddr#* inet } + ipaddr=$(LC_ALL=C /sbin/ip -6 addr list dev "$interface" scope global) + # Print 'None' if we have no global address + [ -z "$ipaddr" ] && ipaddr="None" + ipaddr=${ipaddr#* inet6 } ipaddr=${ipaddr%%/*} - fi - ;; -esac - -color bold2; printf "%s" "$ipaddr"; color -- + ;; + *) + if metadata_available; then + # We're in EC2, so get our public IP address + ipaddr=$(wget -q -O- http://169.254.169.254/latest/meta-data/public-ipv4) + else + ipaddr=$(LC_ALL=C /sbin/ip -4 addr list dev "$interface" scope global) + ipaddr=${ipaddr#* inet } + ipaddr=${ipaddr%%/*} + fi + ;; + esac + color bold2; printf "%s" "$ipaddr"; color -- +} # vi: syntax=sh ts=4 noexpandtab diff --git a/usr/lib/byobu/load_average b/usr/lib/byobu/load_average index 99163944..71a9df02 100755 --- a/usr/lib/byobu/load_average +++ b/usr/lib/byobu/load_average @@ -1,9 +1,11 @@ #!/bin/sh -e # # load_average: grab the current load average -# Copyright (C) 2008 Canonical Ltd. # -# Authors: Dustin Kirkland +# Copyright (C) 2008 Canonical Ltd. +# Copyright (C) 2011 Dustin Kirkland +# +# Authors: Dustin Kirkland # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -17,14 +19,13 @@ # You should have received a copy of the GNU General Public License # along with this program. If not, see . -PKG="byobu" -color 2>/dev/null || color() { true; } - -if [ "$1" = "--detail" ]; then +__load_average_detail() { cat /proc/loadavg - exit 0 -fi -read one five fifteen other < /proc/loadavg -color Y k; printf "$one"; color -- +} + +__load_average() { + read one five fifteen other < /proc/loadavg + color Y k; printf "$one"; color -- +} # vi: syntax=sh ts=4 noexpandtab diff --git a/usr/lib/byobu/logo b/usr/lib/byobu/logo index f908263a..7fdea767 100755 --- a/usr/lib/byobu/logo +++ b/usr/lib/byobu/logo @@ -1,9 +1,11 @@ #!/bin/sh -e # # logo: determine which logo to use -# Copyright (C) 2008 Canonical Ltd. # -# Authors: Dustin Kirkland +# Copyright (C) 2008 Canonical Ltd. +# Copyright (C) 2011 Dustin Kirkland +# +# Authors: Dustin Kirkland # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -17,19 +19,38 @@ # You should have received a copy of the GNU General Public License # along with this program. If not, see . -PKG="byobu" -DATA="$HOME/.$PKG" -color 2>/dev/null || color() { true; } +get_distro() { + _RET= + if [ -n "$DISTRO" ]; then + # Allow manual override of distro in $CONFIG_DIR/status + _RET="$DISTRO" + elif [ -r "/etc/issue" ]; then + # Otherwise, check /etc/issue + _RET=`grep -m1 "^[A-Za-z]" /etc/issue` + elif which lsb_release >/dev/null 2>&1; then + # This can be a very expensive operation, do it only + # if all other methods fail + _RET=`lsb_release -s -a 2>/dev/null` + else + # No idea! + printf "[B]" + fi +} -if [ "$1" = "--detail" ]; then +__logo_detail() { MARKUP="false" - exit 0 -else - MARKUP="true" -fi + __logo +} -print_logo() { - distro=`echo "$1" | sed 'y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/' ` +__logo() { + local logo= + if [ -n "$LOGO" ]; then + # Allow users to define their own logo in $CONFIG_DIR/status + printf "%s" "$LOGO" + return + fi + get_distro + local distro="$(echo "$_RET" | sed 'y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/')" case "$distro" in *ubuntu*) if $MARKUP; then @@ -97,30 +118,4 @@ print_logo() { esac } -if [ -n "$LOGO" ]; then - # Allow users to define their own logo in $DATA/status - printf "%s" "$LOGO" && exit 0 || true -fi - -if [ -n "$DISTRO" ]; then - # Allow manual override of distro in $DATA/status - print_logo "$DISTRO" && exit 0 || true -fi - -if [ -r "/etc/issue" ]; then - # Otherwise, check /etc/issue - distro=`grep -m1 "^[A-Za-z]" /etc/issue` - print_logo "$distro" && exit 0 || true -fi - -# This can be a very expensive operation, do it only -# if all other methods fail -if which lsb_release >/dev/null 2>&1; then - distro=`lsb_release -s -a 2>/dev/null` - print_logo "$distro" && exit 0 || true -fi - -# No idea! -printf "|B|" - # vi: syntax=sh ts=4 noexpandtab diff --git a/usr/lib/byobu/mail b/usr/lib/byobu/mail index 83246a83..5abc598b 100755 --- a/usr/lib/byobu/mail +++ b/usr/lib/byobu/mail @@ -1,9 +1,11 @@ #!/bin/sh -e # # mail: notify the user if they have system mail -# Copyright (C) 2009 Canonical Ltd. # -# Authors: Dustin Kirkland +# Copyright (C) 2009 Canonical Ltd. +# Copyright (C) 2011 Dustin Kirkland +# +# Authors: Dustin Kirkland # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -17,18 +19,16 @@ # You should have received a copy of the GNU General Public License # along with this program. If not, see . -PKG="byobu" -color 2>/dev/null || color() { true; } -[ "$UTF8" = "1" ] && ICON="⍌" || ICON="[M]" +MAILFILE="/var/spool/mail/$USER" -mailfile="/var/spool/mail/$USER" -if [ "$1" = "--detail" ]; then - [ -s "$mailfile" ] && ls -alF "$mailfile" 2>&1 - exit 0 -fi +__mail_detail() { + [ -s "$MAILFILE" ] && ls -alF "$MAILFILE" 2>&1 +} -if [ -s "$mailfile" ]; then - color b; printf "%s" "$ICON"; color -- -fi +__mail() { + if [ -s "$MAILFILE" ]; then + color b; printf "%s" "$ICON_MAIL"; color -- + fi +} # vi: syntax=sh ts=4 noexpandtab diff --git a/usr/lib/byobu/mem_available b/usr/lib/byobu/mem_available index 300ca4d3..3313b1aa 100755 --- a/usr/lib/byobu/mem_available +++ b/usr/lib/byobu/mem_available @@ -1,9 +1,11 @@ #!/bin/sh -e # -# mem: grab the current memory and usage -# Copyright (C) 2008 Canonical Ltd. +# mem_available: grab the current memory and usage # -# Authors: Dustin Kirkland +# Copyright (C) 2008 Canonical Ltd. +# Copyright (C) 2011 Dustin Kirkland +# +# Authors: Dustin Kirkland # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -17,20 +19,14 @@ # You should have received a copy of the GNU General Public License # along with this program. If not, see . -PKG="byobu" -DATA="$HOME/.$PKG" -color 2>/dev/null || color() { true; } - -if [ "$1" = "--detail" ]; then +__mem_available_detail() { free - exit 0 -fi +} -mem_available_info() { +__mem_available() { local mem_used comma whitespace unit mem name - . "$DATA/status" + . "$CONFIG_DIR/status" [ "$mem_used" = "1" ] && comma="," || whitespace=" " - read name mem unit < /proc/meminfo if [ $mem -ge 1048576 ]; then fpdiv "$mem" 1048567 1 @@ -47,6 +43,4 @@ mem_available_info() { color b g W; printf "%s" "$mem"; color -; color g W; printf "%s%s" "$unit" "$comma"; color -; printf "%s" "$whitespace" } -mem_available_info "$@" - # vi: syntax=sh ts=4 noexpandtab diff --git a/usr/lib/byobu/mem_used b/usr/lib/byobu/mem_used index f867977b..e7bab8f4 100755 --- a/usr/lib/byobu/mem_used +++ b/usr/lib/byobu/mem_used @@ -1,9 +1,11 @@ #!/bin/sh -e # # mem_used: grab the current memory usage -# Copyright (C) 2008 Canonical Ltd. # -# Authors: Dustin Kirkland +# Copyright (C) 2008 Canonical Ltd. +# Copyright (C) 2011 Dustin Kirkland +# +# Authors: Dustin Kirkland # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -17,20 +19,15 @@ # You should have received a copy of the GNU General Public License # along with this program. If not, see . -PKG="byobu" -color 2>/dev/null || color() { true; } - -if [ "$1" = "--detail" ]; then +__mem_used_detail() { cat /proc/meminfo - exit 0 -fi +} -meminfo_used() { +__mem_used() { # originally, this script did: # f=$(free | awk '/buffers\/cache:/ {printf "%.0f", 100*$3/($3 + $4)}') # this method is more dependent on /proc/meminfo, but uses the same formula # for deriving the output of 'free' that is used in procps 'free.c' - # kb_main_free, kb_main_total, kb_main_buffers, kb_main_cached local free="" total="" buffers="" cached="" local kb_main_used=0 buffers_plus_cached=0 fo_buffers=0 fo_cached=0 @@ -43,24 +40,14 @@ meminfo_used() { esac [ -n "${free}" -a -n "${total}" -a -n "${buffers}" -a -n "${cached}" ] && break; done < /proc/meminfo - kb_main_used=$(($total-$free)) buffers_plus_cached=$(($buffers+$cached)) - # "free output" buffers and cache (output from 'free') fo_buffers=$(($kb_main_used - $buffers_plus_cached)) fo_cached=$(($kb_main_free + $buffers_plus_cached)) - fpdiv $((100*${fo_buffers})) "${total}" 0; + f=${_RET} + color b g W; printf "%s" "$f"; color -; color g W; printf "%%"; color -- } -if [ -r /proc/meminfo ]; then - meminfo_used - f=${_RET} -else - f=$(free | awk '/buffers\/cache:/ {printf "%.0f", 100*$3/($3 + $4)}') -fi - -color b g W; printf "%s" "$f"; color -; color g W; printf "%%"; color -- - # vi: syntax=sh ts=4 noexpandtab diff --git a/usr/lib/byobu/menu b/usr/lib/byobu/menu index 1466c0f2..12dafe1a 100755 --- a/usr/lib/byobu/menu +++ b/usr/lib/byobu/menu @@ -1,9 +1,11 @@ #!/bin/sh -e # # menu: display the menu text -# Copyright (C) 2008 Canonical Ltd. # -# Authors: Dustin Kirkland +# Copyright (C) 2008 Canonical Ltd. +# Copyright (C) 2011 Dustin Kirkland +# +# Authors: Dustin Kirkland # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -17,23 +19,23 @@ # You should have received a copy of the GNU General Public License # along with this program. If not, see . -[ "$1" = "--detail" ] && exit 0 -PKG="byobu" -DATA="$HOME/.$PKG" -color 2>/dev/null || color() { true; } +__menu_detail() { + return +} -[ -r "$DATA/keybindings" ] && bindings="$DATA/keybindings" || bindings="$HOME/.screenrc" - -if grep -qs "^source.*screen-escape-keys$" $bindings 2>/dev/null || [ "$1" = "--disable-f-keys" ]; then - esc=`grep "^escape" $bindings | sed "s/^.*\(.\)$/\1/"` - [ -n "$esc" ] && key="^$esc-@" || key="^a-@" -elif grep -qs "^source.*none$" $bindings 2>/dev/null; then - key="byobu-config" -else - key="F9" -fi - -text=$(gettext "Menu") -color k w; printf "%s:<" "$text"; color -; color b k w; printf "%s" "$key"; color k w; printf ">" +__menu() { + local bindings esc key text + [ -r "$CONFIG_DIR/keybindings" ] && bindings="$CONFIG_DIR/keybindings" || bindings="$HOME/.screenrc" + if grep -qs "^source.*screen-escape-keys$" $bindings 2>/dev/null || [ "$1" = "--disable-f-keys" ]; then + esc=`grep "^escape" $bindings | sed "s/^.*\(.\)$/\1/"` + [ -n "$esc" ] && key="^$esc-@" || key="^a-@" + elif grep -qs "^source.*none$" $bindings 2>/dev/null; then + key="byobu-config" + else + key="F9" + fi + text=$(gettext "Menu") + color k w; printf "%s:<" "$text"; color -; color b k w; printf "%s" "$key"; color k w; printf ">" +} # vi: syntax=sh ts=4 noexpandtab diff --git a/usr/lib/byobu/network b/usr/lib/byobu/network index a942376e..4cccdedf 100755 --- a/usr/lib/byobu/network +++ b/usr/lib/byobu/network @@ -1,9 +1,11 @@ #!/bin/sh -e # # network: calculate the network up/down rates -# Copyright (C) 2008 Canonical Ltd. # -# Authors: Dustin Kirkland +# Copyright (C) 2008 Canonical Ltd. +# Copyright (C) 2011 Dustin Kirkland +# +# Authors: Dustin Kirkland # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -17,88 +19,86 @@ # You should have received a copy of the GNU General Public License # along with this program. If not, see . -PKG="byobu" -DATA="$HOME/.$PKG" -color 2>/dev/null || color() { true; } -[ "$UTF8" = "1" ] && ICON_UP="▲" || ICON_UP="^" -[ "$UTF8" = "1" ] && ICON_DN="▼" || ICON_DN="v" - -# Allow interface overrides in $DATA/status -if [ -n "$MONITORED_NETWORK" ]; then - interface="$MONITORED_NETWORK" -else - # get the last interface listed in /proc/net/route - while read cn other; do interface=$cn; done < /proc/net/route -fi - -# By default, we won't bug the user with the display of network traffic -# below NETWORK_THRESHOLD in kbps; override in $DATA/status -[ -n "$NETWORK_THRESHOLD" ] || NETWORK_THRESHOLD=20 - -if [ "$1" = "--detail" ]; then - LC_ALL=C /sbin/ifconfig "$interface" | sed 's/\s*$//' - exit 0 -fi - -[ -d "/var/run/screen/S-$USER" ] && DIR="/var/run/screen/S-$USER" || DIR="$DATA" -t2=`date +%s` -OIFS=$IFS -for i in up down; do - unit="kbps" - case $i in - up) symbol="$ICON_UP" ;; - down) symbol="$ICON_DN" ;; - esac - cache="$DIR/$PKG.network_$i" - t1=`stat -c %Y "$cache"` 2>/dev/null || t1=0 - if [ $t2 -le $t1 ]; then - rate=0 +get_interface() { + _RET= + # Allow interface overrides in $CONFIG_DIR/status + if [ -n "$MONITORED_NETWORK" ]; then + _RET="$MONITORED_NETWORK" else - [ -r "$cache" ] && read x1 < "$cache" || tx1=0 - IFS="$OIFS:" - while read iface rbytes rpackets rerrs rdrop rfifo rframe rcompressed rmulticast tbytes tpackets terrs tdrop tfifo tcolls tcarrier tcompressed; do - if [ "$iface" = "${interface}" ]; then - [ "$i" = "up" ] && x2=${tbytes} || x2=${rbytes} - break; - fi - done < /proc/net/dev - IFS=$OIFS - echo "$x2" > "$cache" - rate=$((8*($x2 - $x1) / ($t2 - $t1) / 1024)) # in kbps - [ "$rate" -lt 0 ] && rate=0 - if [ $rate -gt $NETWORK_THRESHOLD ]; then - case "$NETWORK_UNITS" in - bytes) - rate=$(($rate/8)) - if [ "$rate" -gt 1048576 ]; then - fpdiv "$rate" 1048576 1 - rate=${_RET} - unit="GB/s" - elif [ "$rate" -gt 1024 ]; then - fpdiv "$rate" 1024 1 - rate=${_RET} - unit="MB/s" - else - unit="kB/s" - fi - ;; - *) - # Default to bps - # Why 1000 and not 1024? http://en.wikipedia.org/wiki/Data_rate_units - if [ "$rate" -gt 1000000 ]; then - fpdiv "$rate" 1000000 1 - rate=${_RET} - unit="Gbps" - elif [ "$rate" -gt 1000 ]; then - fpdiv "$rate" 1000 1 - rate=${_RET} - unit="Mbps" - fi - ;; - esac - color b m w; printf "%s%s" "$symbol" "$rate"; color -; color m w; printf "%s" "$unit"; color -- - fi + # get the last interface listed in /proc/net/route + while read cn other; do _RET=$cn; done < /proc/net/route fi -done +} + +__network_detail() { + get_interface; local interface="$_RET" + LC_ALL=C /sbin/ifconfig "$interface" | sed 's/\s*$//' +} + +__network() { + get_interface; local interface="$_RET" + # By default, we won't bug the user with the display of network traffic + # below NETWORK_THRESHOLD in kbps; override in $CONFIG_DIR/status + [ -n "$NETWORK_THRESHOLD" ] || NETWORK_THRESHOLD=20 + t2=`date +%s` + OIFS=$IFS + for i in up down; do + unit="kbps" + case $i in + up) symbol="$ICON_UP" ;; + down) symbol="$ICON_DN" ;; + esac + cache="$CACHE_DIR/network.$i" + t1=`stat -c %Y "$cache"` 2>/dev/null || t1=0 + if [ $t2 -le $t1 ]; then + rate=0 + else + [ -r "$cache" ] && read x1 < "$cache" || tx1=0 + IFS="$OIFS:" + while read iface rbytes rpackets rerrs rdrop rfifo rframe rcompressed rmulticast tbytes tpackets terrs tdrop tfifo tcolls tcarrier tcompressed; do + if [ "$iface" = "${interface}" ]; then + [ "$i" = "up" ] && x2=${tbytes} || x2=${rbytes} + break; + fi + done < /proc/net/dev + IFS=$OIFS + echo "$x2" > "$cache" + rate=$((8*($x2 - $x1) / ($t2 - $t1) / 1024)) # in kbps + [ "$rate" -lt 0 ] && rate=0 + if [ $rate -gt $NETWORK_THRESHOLD ]; then + case "$NETWORK_UNITS" in + bytes) + rate=$(($rate/8)) + if [ "$rate" -gt 1048576 ]; then + fpdiv "$rate" 1048576 1 + rate=${_RET} + unit="GB/s" + elif [ "$rate" -gt 1024 ]; then + fpdiv "$rate" 1024 1 + rate=${_RET} + unit="MB/s" + else + unit="kB/s" + fi + ;; + *) + # Default to bps + # Why 1000 and not 1024? http://en.wikipedia.org/wiki/Data_rate_units + if [ "$rate" -gt 1000000 ]; then + fpdiv "$rate" 1000000 1 + rate=${_RET} + unit="Gbps" + elif [ "$rate" -gt 1000 ]; then + fpdiv "$rate" 1000 1 + rate=${_RET} + unit="Mbps" + fi + ;; + esac + color b m w; printf "%s%s" "$symbol" "$rate"; color -; color m w; printf "%s" "$unit"; color -- + fi + fi + done +} # vi: syntax=sh ts=4 noexpandtab diff --git a/usr/lib/byobu/notify_osd b/usr/lib/byobu/notify_osd index 1620a777..01029813 100755 --- a/usr/lib/byobu/notify_osd +++ b/usr/lib/byobu/notify_osd @@ -1,9 +1,11 @@ #!/bin/sh -e # # notify_osd: print notify-osd messages in screen's notification buffer -# Copyright (C) 2010 Canonical Ltd. # -# Authors: Dustin Kirkland +# Copyright (C) 2010 Canonical Ltd. +# Copyright (C) 2011 Dustin Kirkland +# +# Authors: Dustin Kirkland # with help from Mathias Gug # # This program is free software: you can redistribute it and/or modify @@ -18,23 +20,18 @@ # You should have received a copy of the GNU General Public License # along with this program. If not, see . -LOG="$HOME"/.cache/notify-osd.log -[ -z "$BYOBU_PREFIX" ] && BYOBU_PREFIX="/usr" +NOTIFY_OSD_LOG="$HOME"/.cache/notify-osd.log -case "$1" in - --short) - exit 0 - ;; - --detail) - cat "$LOG" || true - exit 0 - ;; -esac +__notify_osd_detail() { + cat "$NOTIFY_OSD_LOG" || true +} -# This line operates basically as a daemon, watching the notify-osd log file, -# processing new messages and sending them to screen -CMD="tail --pid $PPID -n 0 -F $LOG" -pkill -f "$CMD" || true -$CMD | $BYOBU_PREFIX/lib/byobu/.notify_osd "$PPID" +__notify_osd() { + # This line operates basically as a daemon, watching the notify-osd log file, + # processing new messages and sending them to screen + CMD="tail --pid $PPID -n 0 -F $NOTIFY_OSD_LOG" + pkill -f "$CMD" || true + $CMD | $BYOBU_PREFIX/lib/byobu/.notify_osd "$PPID" & +} # vi: syntax=sh ts=4 noexpandtab diff --git a/usr/lib/byobu/processes b/usr/lib/byobu/processes index 0b6f6339..7fefbcb1 100755 --- a/usr/lib/byobu/processes +++ b/usr/lib/byobu/processes @@ -1,9 +1,11 @@ #!/bin/sh -e # -# processes - report number of running processes -# Copyright (C) 2008 Canonical Ltd. +# processes: report number of running processes # -# Authors: Dustin Kirkland +# Copyright (C) 2008 Canonical Ltd. +# Copyright (C) 2011 Dustin Kirkland +# +# Authors: Dustin Kirkland # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -17,15 +19,13 @@ # You should have received a copy of the GNU General Public License # along with this program. If not, see . -PKG="byobu" -color 2>/dev/null || color() { true; } - -if [ "$1" = "--detail" ]; then +__processes_detail() { ps -ejH - exit 0 -fi +} -count=$(ls -d /proc/[0-9]* 2>/dev/null| wc -l) -color b y w; printf "%s" "$count"; color -; color y w; printf "&"; color -- +__processes() { + local count=$(ls -d /proc/[0-9]* 2>/dev/null| wc -l) + color b y w; printf "%s" "$count"; color -; color y w; printf "&"; color -- +} # vi: syntax=sh ts=4 noexpandtab diff --git a/usr/lib/byobu/raid b/usr/lib/byobu/raid index a01076f1..e167ee24 100755 --- a/usr/lib/byobu/raid +++ b/usr/lib/byobu/raid @@ -1,9 +1,11 @@ #!/bin/sh -e # # raid: notify raid events, failures and syncing -# Copyright (C) 2010 Canonical Ltd. # -# Authors: Dustin Kirkland +# Copyright (C) 2010 Canonical Ltd. +# Copyright (C) 2011 Dustin Kirkland +# +# Authors: Dustin Kirkland # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -17,33 +19,24 @@ # You should have received a copy of the GNU General Public License # along with this program. If not, see . -[ -r /proc/mdstat ] || exit 0 +__raid_detail() { + [ -r /proc/mdstat ] && cat /proc/mdstat || true +} -PKG="byobu" -color 2>/dev/null || color() { true; } - -case $1 in - --detail) - cat /proc/mdstat - exit 0 - ;; -esac - -pct="%" -while read line; do - # Errors in your raid - case "$line" in - *\ blocks\ *\[*_*\]$) - [ -z "${msg}" ] && msg="RAID";; - *%*) - p="${line%%${pct}*}${pct}"; p=${p##* }; - [ -z "$msg" ] && msg="RAID" - msg="$msg,$p";; - esac -done < /proc/mdstat - -if [ -n "$msg" ]; then - color B w r; printf "%s" "$msg"; color -- -fi +__raid() { + while read line; do + local pct="%" p msg + # Errors in your raid + case "$line" in + *\ blocks\ *\[*_*\]$) + [ -z "${msg}" ] && msg="RAID";; + *%*) + p="${line%%${pct}*}${pct}"; p=${p##* }; + [ -z "$msg" ] && msg="RAID" + msg="$msg,$p";; + esac + done < /proc/mdstat + [ -z "$msg" ] || 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 c4e6377c..db0ba73c 100755 --- a/usr/lib/byobu/rcs_cost +++ b/usr/lib/byobu/rcs_cost @@ -1,11 +1,12 @@ -#!/bin/sh +#!/bin/sh -e # -# rcs_cost: approximate Rackspace Cloud Server cost (USD) of the current -# instance +# rcs_cost: approximate Rackspace Cloud Server cost (USD) of the current instance # # Copyright (C) 2009-2010 Jon Bernard +# Copyright (C) 2011 Dustin Kirkland # -# Author: Jon Bernard +# Author(s): Jon Bernard +# Dustin Kirkland # # Derived from byobu's ec2_cost written by Dustin Kirkland, see # Byobu's project page: https://launchpad.net/byobu for more information @@ -22,80 +23,75 @@ # You should have received a copy of the GNU General Public License along # with this program. If not, see . -DETAIL=0 -PKG="byobu" -color 2>/dev/null || color() { true; } +__rcs_cost_detail() { + DETAIL=1 + __rcs_cost +} -for arg in $@; do - case "$arg" in - -d|--detail) - DETAIL=1 - ;; - esac -done +__rcs_cost() { + # Approximate Instance Cost Basis + # Memory US + # 256MB $0.015/h + # 512MB $0.030/h + # 1024MB $0.060/h + # 2048MB $0.120/h + # 4096MB $0.240/h + # 8192MB $0.480/h + # 15872MB $0.960/h -# Approximate Instance Cost Basis -# Memory US -# 256MB $0.015/h -# 512MB $0.030/h -# 1024MB $0.060/h -# 2048MB $0.120/h -# 4096MB $0.240/h -# 8192MB $0.480/h -# 15872MB $0.960/h + # Instance memory + memory=`grep "^MemTotal:" /proc/meminfo | awk '{print $2}'` -# Instance memory -memory=`grep "^MemTotal:" /proc/meminfo | awk '{print $2}'` + # Round memory down to the nearest multiple of 64MB + memory=$((${memory} - (${memory} % (64 * 1024)))) -# Round memory down to the nearest multiple of 64MB -memory=$((${memory} - (${memory} % (64 * 1024)))) + # Apply the going rate + INCREMENTS="256 512 1024 2048 4096 8192 16384 32768 65536" + for X in ${INCREMENTS}; do + test "$((${X} * 1024 + 65536))" -ge ${memory} && break + done + MEMORY_RATE=`echo "$X" | awk '{printf "%f", $1 / 256 * 15 / 1000}'` -# Apply the going rate -INCREMENTS="256 512 1024 2048 4096 8192 16384 32768 65536" -for X in ${INCREMENTS}; do - test "$((${X} * 1024 + 65536))" -ge ${memory} && break -done -MEMORY_RATE=`echo "$X" | awk '{printf "%f", $1 / 256 * 15 / 1000}'` + # Data Transfer Cost Basis + # Incoming $0.08/GB + # Outgoing $0.22/GB + RX_RATE="0.08" + TX_RATE="0.22" -# Data Transfer Cost Basis -# Incoming $0.08/GB -# Outgoing $0.22/GB -RX_RATE="0.08" -TX_RATE="0.22" + # Auto detect network interface + IF=`tail -n1 /proc/net/route | awk '{print $1}'` -# Auto detect network interface -IF=`tail -n1 /proc/net/route | awk '{print $1}'` + ifconfig_out=`LC_ALL=C /sbin/ifconfig "$IF"` -ifconfig_out=`LC_ALL=C /sbin/ifconfig "$IF"` + # Calculate bandwidth cost + tx_gb=${ifconfig_out#*RX bytes:} + tx_gb=$(echo ${tx_gb%% *} | awk '{ printf "%f", $1 / 1024 / 1024 / 1024 }') + rx_gb=${ifconfig_out#*TX bytes:} + rx_gb=$(echo ${rx_gb%% *} | awk '{ printf "%f", $1 / 1024 / 1024 / 1024 }') + network_cost=`echo "$tx_gb" "$TX_RATE" "$rx_gb" "$RX_RATE" | awk '{printf "%f %f", $1*$2, $3*$4}' | awk '{printf "%f", $1 + $2}'` -# Calculate bandwidth cost -tx_gb=${ifconfig_out#*RX bytes:} -tx_gb=$(echo ${tx_gb%% *} | awk '{ printf "%f", $1 / 1024 / 1024 / 1024 }') -rx_gb=${ifconfig_out#*TX bytes:} -rx_gb=$(echo ${rx_gb%% *} | awk '{ printf "%f", $1 / 1024 / 1024 / 1024 }') -network_cost=`echo "$tx_gb" "$TX_RATE" "$rx_gb" "$RX_RATE" | awk '{printf "%f %f", $1*$2, $3*$4}' | awk '{printf "%f", $1 + $2}'` + # Calculate uptime cost + hours=$(((`date +%s` - `stat --printf %Z /etc/hostname`) / 60 / 60 + 1)) + uptime_cost=`echo "$hours" | awk "{printf \"%f\", "$MEMORY_RATE" * $hours}"` + total_cost=`echo "$network_cost" "$uptime_cost" | awk '{printf "%.2f", $1 + $2}'` -# Calculate uptime cost -hours=$(((`date +%s` - `stat --printf %Z /etc/hostname`) / 60 / 60 + 1)) -uptime_cost=`echo "$hours" | awk "{printf \"%f\", "$MEMORY_RATE" * $hours}"` -total_cost=`echo "$network_cost" "$uptime_cost" | awk '{printf "%.2f", $1 + $2}'` + if [ "$DETAIL" = "1" ]; then + echo "==========================================================" + echo "Estimated cost in Rackspace Cloud Server since last reboot" + echo "==========================================================" + echo " Network sent: $tx_gb GB @ \$$RX_RATE/GB" + echo " Network recv: $rx_gb GB @ \$$TX_RATE/GB" + echo " Network cost: \$$network_cost" + echo "----------------------------------------------------------" + echo " Uptime: $hours hr @ \$$MEMORY_RATE/hr" + echo " Uptime cost: \$$uptime_cost" + echo "----------------------------------------------------------" + echo "Total cost: ~\$$total_cost" + echo "==========================================================" + return + fi -if [ "$DETAIL" = "1" ]; then - echo "==========================================================" - echo "Estimated cost in Rackspace Cloud Server since last reboot" - echo "==========================================================" - echo " Network sent: $tx_gb GB @ \$$RX_RATE/GB" - echo " Network recv: $rx_gb GB @ \$$TX_RATE/GB" - echo " Network cost: \$$network_cost" - echo "----------------------------------------------------------" - echo " Uptime: $hours hr @ \$$MEMORY_RATE/hr" - echo " Uptime cost: \$$uptime_cost" - echo "----------------------------------------------------------" - echo "Total cost: ~\$$total_cost" - echo "==========================================================" - exit 0 -fi - -color K G; printf "R\$%s"; color -; color b K G; printf "%s" "$total_cost"; color -- + color K G; printf "R\$%s"; color -; color b K G; printf "%s" "$total_cost"; color -- +} # vi: syntax=sh ts=4 noexpandtab diff --git a/usr/lib/byobu/reboot_required b/usr/lib/byobu/reboot_required index 43ec6bef..2482828e 100755 --- a/usr/lib/byobu/reboot_required +++ b/usr/lib/byobu/reboot_required @@ -1,9 +1,11 @@ #!/bin/sh -e # # reboot_required: determine if a reboot is required -# Copyright (C) 2008 Canonical Ltd. # -# Authors: Dustin Kirkland +# Copyright (C) 2008 Canonical Ltd. +# Copyright (C) 2011 Dustin Kirkland +# +# Authors: Dustin Kirkland # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -17,29 +19,21 @@ # You should have received a copy of the GNU General Public License # along with this program. If not, see . -PKG="byobu" -DATA="$HOME/.$PKG" -color 2>/dev/null || color() { true; } +REBOOT_FLAG="/var/run/reboot-required" +RELOAD_FLAG="$CACHE_DIR/reload-required" -reboot="/var/run/reboot-required" -[ -d "/var/run/screen/S-$USER" ] && DIR="/var/run/screen/S-$USER" || DIR="$DATA" -reload="$DIR/$PKG.reload-required" -case "$1" in - --detail) - [ -e "$reboot" ] && ls -alF "$reboot" 2>&1 - [ -e "$reload" ] && ls -alF "$reload" 2>&1 - ;; - --short) - [ -e "$reboot" ] && printf "Yes" || printf "No" - ;; - *) - if [ -e "$reboot" ]; then - color b W; printf "("; color -; color b b W; printf "R"; color -; color b W; printf ")"; color -- - fi - if [ -e "$reload" ]; then - color b W; printf "<"; color -; color b b W; printf "F5"; color -; color b W; printf ">"; color -; printf " " - fi - ;; -esac +__reboot_required_detail() { + [ -e "$REBOOT_FLAG" ] && ls -alF "$REBOOT_FLAG" 2>&1 + [ -e "$RELOAD_FLAG" ] && ls -alF "$RELOAD_FLAG" 2>&1 +} + +__reboot_required() { + if [ -e "$REBOOT_FLAG" ]; then + color b W; printf "("; color -; color b b W; printf "R"; color -; color b W; printf ")"; color -- + fi + if [ -e "$RELOAD_FLAG" ]; then + color b W; printf "<"; color -; color b b W; printf "F5"; color -; color b W; printf ">"; color -; printf " " + fi +} # vi: syntax=sh ts=4 noexpandtab diff --git a/usr/lib/byobu/release b/usr/lib/byobu/release index 1cc389f5..f69e446e 100755 --- a/usr/lib/byobu/release +++ b/usr/lib/byobu/release @@ -1,9 +1,11 @@ #!/bin/sh -e # # release: grab the os/distro release -# Copyright (C) 2008 Canonical Ltd. # -# Authors: Dustin Kirkland +# Copyright (C) 2008 Canonical Ltd. +# Copyright (C) 2011 Dustin Kirkland +# +# Authors: Dustin Kirkland # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -17,15 +19,11 @@ # You should have received a copy of the GNU General Public License # along with this program. If not, see . -PKG="byobu" -color 2>/dev/null || color() { true; } +__release_detail() { + lsb_release -a 2>/dev/null +} -if [ "$1" = "--detail" ]; then - cat /etc/issue - exit 0 -fi - -release_info() { +__release() { local DISTRO="${DISTRO}" issue ver r i if [ -n "$DISTRO" ]; then # user defined @@ -49,10 +47,6 @@ release_info() { ;; esac elif command -v lsb_release >/dev/null 2>&1; then - if [ "$1" = "--detail" ]; then - lsb_release -a 2>/dev/null - exit 0 - fi # If lsb_release is available, use it r=$(lsb_release -s -d) case "$r" in @@ -71,10 +65,7 @@ release_info() { else DISTRO="Byobu" fi - color bold2; printf "%s" "$DISTRO"; color -- } -release_info "$@" - # vi: syntax=sh ts=4 noexpandtab diff --git a/usr/lib/byobu/services b/usr/lib/byobu/services index 2be4fcfa..aa7a5fb5 100755 --- a/usr/lib/byobu/services +++ b/usr/lib/byobu/services @@ -3,8 +3,9 @@ # services: show what services are running on this server (configurable) # # Copyright (C) 2009 Canonical Ltd. +# Copyright (C) 2011 Dustin Kirkland # -# Authors: Dustin Kirkland +# Authors: Dustin Kirkland # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -18,21 +19,11 @@ # You should have received a copy of the GNU General Public License # along with this program. If not, see . +__services_detail() { + return +} -PKG="byobu" -DATA="$HOME/.$PKG" -color 2>/dev/null || color() { true; } - -# Users can define a list of SERVICES to monitor in $DATA/status -if [ -z "$SERVICES" ]; then - if [ -f "/etc/eucalyptus/eucalyptus.conf" ]; then - # If the user has not defined any SERVICES, but this system is a - # UEC system, default to the list of Ubuntu Enterprise Cloud Services - SERVICES="eucalyptus-cloud|CLC eucalyptus-walrus|WC eucalyptus-cc|CC eucalyptus-sc|SC eucalyptus-nc|NC" - fi -fi - -running() { +service_running() { if [ -f "/etc/init/$1.conf" ]; then # Use upstart case "$(status $1 2>/dev/null)" in @@ -51,26 +42,36 @@ running() { fi } -output= -for i in $SERVICES; do - service=${i%|*} - nick=${i#*|} - case "$service" in - eucalyptus-nc) - if running $service; then - # This is a node controller, determine VM usage - . /etc/eucalyptus/eucalyptus.conf - count=$(pgrep -c -f /usr/bin/kvm || true) - output="$output,NC:$count" - fi - ;; - *) - running $service && output="$output,$nick" - ;; - esac -done -[ -n "$output" ] || exit 0 - -color w c; printf "%s" ${output#,}; color -- +__services() { + local services= + # Users can define a list of services to monitor in $CONFIG_DIR/status + if [ -z "$services" ]; then + if [ -f "/etc/eucalyptus/eucalyptus.conf" ]; then + # If the user has not defined any services, but this system is a + # UEC system, default to the list of Ubuntu Enterprise Cloud Services + services="eucalyptus-cloud|CLC eucalyptus-walrus|WC eucalyptus-cc|CC eucalyptus-sc|SC eucalyptus-nc|NC" + fi + fi + output= + for i in $services; do + service=${i%|*} + nick=${i#*|} + case "$service" in + eucalyptus-nc) + if service_running $service; then + # This is a node controller, determine VM usage + . /etc/eucalyptus/eucalyptus.conf + count=$(pgrep -c -f /usr/bin/kvm || true) + output="$output,NC:$count" + fi + ;; + *) + service_running $service && output="$output,$nick" + ;; + esac + done + [ -n "$output" ] || return + color w c; printf "%s" ${output#,}; color -- +} # vi: syntax=sh ts=4 noexpandtab diff --git a/usr/lib/byobu/swap b/usr/lib/byobu/swap index e439531d..c2be0073 100755 --- a/usr/lib/byobu/swap +++ b/usr/lib/byobu/swap @@ -1,9 +1,11 @@ #!/bin/sh -e # # mem_swap: show the current swap available and used -# Copyright (C) 2010 Canonical Ltd. # -# Authors: Dustin Kirkland +# Copyright (C) 2010 Canonical Ltd. +# Copyright (C) 2011 Dustin Kirkland +# +# Authors: Dustin Kirkland # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -17,17 +19,13 @@ # You should have received a copy of the GNU General Public License # along with this program. If not, see . -PKG="byobu" -color 2>/dev/null || color() { true; } - -if [ "$1" = "--detail" ]; then +__swap_detail() { cat /proc/meminfo - exit 0 -fi +} -swap_info() { +__swap() { local stotal="" sfree="" name val unit mem f; - while read name val unit; do + while read name val unit; do if [ "$name" = "SwapTotal:" ]; then stotal="$val" elif [ "$name" = "SwapFree:" ]; then @@ -37,9 +35,7 @@ swap_info() { fi [ -n "$stotal" -a -n "$sfree" ] && break; done < /proc/meminfo - [ "${stotal:-0}" = "0" ] && return 0 - mem=${stotal} f=$(((100*($stotal-$sfree))/$stotal)) [ "$f" = "0" ] && return 0 @@ -55,12 +51,8 @@ swap_info() { mem="$mem" unit="KB" fi - 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 "%%"; color -- - return } -swap_info "$@" - # vi: syntax=sh ts=4 noexpandtab diff --git a/usr/lib/byobu/time b/usr/lib/byobu/time index 9cfb7208..99d5d074 100755 --- a/usr/lib/byobu/time +++ b/usr/lib/byobu/time @@ -1,9 +1,11 @@ #!/bin/sh -e # -# time - print the time in HH:MM:SS format -# Copyright (C) 2008 Canonical Ltd. +# time: print the time in HH:MM:SS format # -# Authors: Dustin Kirkland +# Copyright (C) 2008 Canonical Ltd. +# Copyright (C) 2011 Dustin Kirkland +# +# Authors: Dustin Kirkland # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -17,17 +19,12 @@ # You should have received a copy of the GNU General Public License # along with this program. If not, see . -case "$1" in - --detail) - date - ;; - --short) - date +%H:%M:%S - ;; - *) - printf "\0050c:\005s" - ;; -esac +__time_detail() { + date +} +__time() { + printf "\0050c:\005s" +} # vi: syntax=sh ts=4 noexpandtab diff --git a/usr/lib/byobu/time_utc b/usr/lib/byobu/time_utc index a99d3d29..05a42b79 100755 --- a/usr/lib/byobu/time_utc +++ b/usr/lib/byobu/time_utc @@ -1,9 +1,11 @@ #!/bin/sh -e # -# time_utc - print UTC time in HH:MM -# Copyright (C) 2010 Canonical Ltd. +# time_utc: print UTC time in HH:MM # -# Authors: Dustin Kirkland +# Copyright (C) 2010 Canonical Ltd. +# Copyright (C) 2011 Dustin Kirkland +# +# Authors: Dustin Kirkland # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -17,17 +19,13 @@ # You should have received a copy of the GNU General Public License # along with this program. If not, see . -color 2>/dev/null || color() { true; } - -case "$1" in - --detail) - date -u - ;; - *) - d=$(date -u +%H:%M) - color invert; printf "%s UTC" "$d"; color -- - ;; -esac +__time_utc_detail() { + date -u +} +__time_utc() { + d=$(date -u +%H:%M) + color invert; printf "%s UTC" "$d"; color -- +} # vi: syntax=sh ts=4 noexpandtab diff --git a/usr/lib/byobu/trash b/usr/lib/byobu/trash index 83809779..a2591960 100755 --- a/usr/lib/byobu/trash +++ b/usr/lib/byobu/trash @@ -1,31 +1,37 @@ #!/bin/sh -e # -# trash: show icon (and optionally count) if entries in trash. -# Copyright (C) 2011 Canonical Ltd. +# trash: show icon (and optionally count) if entries in trash. # -# Authors: James Hunt - -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, version 3 of the License. +# Copyright (C) 2011 Canonical Ltd. +# Copyright (C) 2011 Dustin Kirkland # -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. +# Authors: James Hunt +# Dustin Kirkland # -# You should have received a copy of the GNU General Public License -# along with this program. If not, see . +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, version 3 of the License. # +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . -[ "$UTF8" = "1" ] && ICON="♸" || ICON="T" +TRASH_DIR="$HOME/.local/share/Trash/files" -dir="$HOME/.local/share/Trash/files" -[ ! -d $dir ] && exit 0 +__trash_detail() { + find "$TRASH_DIR" +} -count=$(ls $dir|wc -l) -[ "$count" -eq 0 ] && exit 0 - -echo -n "$ICON[$count] " +__trash() { + local count + [ -d "$TRASH_DIR" ] || return + count=$(ls $dir|wc -l) + [ "$count" = "0" ] && return + printf "%s[%s]" "$ICON_TRASH" "$count" +} # vi: syntax=sh ts=4 noexpandtab diff --git a/usr/lib/byobu/updates_available b/usr/lib/byobu/updates_available index 78a62932..be458eab 100755 --- a/usr/lib/byobu/updates_available +++ b/usr/lib/byobu/updates_available @@ -1,9 +1,11 @@ #!/bin/sh -e # # updates_available: calculate and cache the number of updates available -# Copyright (C) 2008 Canonical Ltd. # -# Authors: Dustin Kirkland +# Copyright (C) 2008 Canonical Ltd. +# Copyright (C) 2011 Dustin Kirkland +# +# Authors: Dustin Kirkland # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -17,24 +19,7 @@ # You should have received a copy of the GNU General Public License # along with this program. If not, see . -PKG="byobu" -DATA="$HOME/.$PKG" -color 2>/dev/null || color() { true; } - -if [ "$1" = "--detail" -o "$1" = "--short" ]; then - if command -v apt-get >/dev/null; then - detail=`apt-get -s -o Debug::NoLocking=true upgrade` - if [ "$1" = "--detail" ]; then - printf "$detail" - else - short=`printf "%s" "$detail" | grep -c ^Inst` - printf "$short" - fi - fi - exit 0 -fi - -print_updates() { +___print_updates() { u=$1 s=$2 if [ -n "$u" ]; then @@ -50,7 +35,7 @@ print_updates() { fi } -update_cache() { +___update_cache() { mycache=$1 # Now we actually have to do hard computational work to calculate updates. # Let's try to be "nice" about it: @@ -78,9 +63,9 @@ update_cache() { fi } -# Checks if we need to update the cache. -# TODO: add more distro -update_needed() { +___update_needed() { + # Checks if we need to update the cache. + # TODO: add more distro mycache=$1 # The cache doesn't exist: create it [ ! -e "$mycache" ] && return 0 @@ -98,14 +83,25 @@ update_needed() { return 1 } -[ -d "/var/run/screen/S-$USER" ] && DIR="/var/run/screen/S-$USER" || DIR="$DATA" -mycache="$DIR/$PKG.updates-available" +__updates_available_detail() { + if command -v apt-get >/dev/null; then + detail=`apt-get -s -o Debug::NoLocking=true upgrade` + if [ "$1" = "--detail" ]; then + printf "$detail" + else + short=`printf "%s" "$detail" | grep -c ^Inst` + printf "$short" + fi + fi +} -# If mycache is present, use it -[ -r $mycache ] && print_updates `sed -n '/[^0-9]/s/ .*$//p' $mycache` - -# If we really need to do so (mycache doesn't exist, or the package database has changed), -# background an update now -update_needed "$mycache" && update_cache "$mycache" +__updates_available() { + local mycache="$CACHE_DIR/updates-available" + # If mycache is present, use it + [ -r $mycache ] && ___print_updates `sed -n '/[^0-9]/s/ .*$//p' $mycache` + # If we really need to do so (mycache doesn't exist, or the package database has changed), + # background an update now + ___update_needed "$mycache" && ___update_cache "$mycache" +} # vi: syntax=sh ts=4 noexpandtab diff --git a/usr/lib/byobu/uptime b/usr/lib/byobu/uptime index cf29fa41..0e89cb16 100755 --- a/usr/lib/byobu/uptime +++ b/usr/lib/byobu/uptime @@ -1,46 +1,44 @@ #!/bin/sh -e # -# uptime: condensed uptime of the machine -# Copyright (C) 2009 Raphaël Pinson. -# Copyright (C) 2009 Canonical Ltd. +# uptime: condensed uptime of the machine # -# Authors: Raphaël Pinson -# Dustin Kirkland +# Copyright (C) 2009 Raphaël Pinson. +# Copyright (C) 2009 Canonical Ltd. +# Copyright (C) 2011 Dustin Kirkland # -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, version 3 of the License. +# Authors: Raphaël Pinson +# Dustin Kirkland # -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, version 3 of the License. # -# You should have received a copy of the GNU General Public License -# along with this program. If not, see . +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. # +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . -PKG="byobu" -color 2>/dev/null || color() { true; } - -if [ "$1" = "--detail" ]; then +__uptime_detail() { uptime - exit 0 -fi +} -read u idle < /proc/uptime -u=${u%.*} -color w b -if [ "$u" -gt 86400 ]; then - str="$(($u / 86400))d$((($u % 86400) / 3600))h" -elif [ "$u" -gt 3600 ]; then - str="$(($u / 3600))h$((($u % 3600) / 60))m" -elif [ "$u" -gt 60 ]; then - str="$(($u / 60))m" -else - str="${u}s" -fi -printf "%s" "${str}" -color -- +__uptime() { + local u idle str + read u idle < /proc/uptime + u=${u%.*} + if [ "$u" -gt 86400 ]; then + str="$(($u / 86400))d$((($u % 86400) / 3600))h" + elif [ "$u" -gt 3600 ]; then + str="$(($u / 3600))h$((($u % 3600) / 60))m" + elif [ "$u" -gt 60 ]; then + str="$(($u / 60))m" + else + str="${u}s" + fi + color w b; printf "%s" "${str}"; color -- +} # vi: syntax=sh ts=4 noexpandtab diff --git a/usr/lib/byobu/users b/usr/lib/byobu/users index e12c55ae..cba95828 100755 --- a/usr/lib/byobu/users +++ b/usr/lib/byobu/users @@ -1,39 +1,38 @@ #!/bin/sh -e # -# users: print the number of remote users on the machine -# Copyright (C) 2009 Raphaël Pinson. -# Copyright (C) 2009 Canonical Ltd. +# users: print the number of remote users on the machine # -# Authors: Raphaël Pinson -# Dustin Kirkland +# Copyright (C) 2009 Raphaël Pinson. +# Copyright (C) 2009 Canonical Ltd. +# Copyright (C) 2011 Dustin Kirkland # -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, version 3 of the License. +# Authors: Raphaël Pinson +# Dustin Kirkland # -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, version 3 of the License. # -# You should have received a copy of the GNU General Public License -# along with this program. If not, see . +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. # +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . -PKG="byobu" -color 2>/dev/null || color() { true; } - -if [ "$1" = "--detail" ]; then +__users_detail() { ps -ef | grep "sshd;.*@" | grep -v grep - exit 0 -fi +} -# Note: we'd like to use pgrep -c, however, this isn't available in -# busybox and some distro's pgrep (and it doesn't exit non-zero). -count=`pgrep -f "sshd:.*@" | wc -l` || exit 0 - -if [ $count -gt 0 ]; then - color b w r; printf "%d" "$count"; color -; color w r; printf "#"; color -- -fi +__users() { + local count + # Note: we'd like to use pgrep -c, however, this isn't available in + # busybox and some distro's pgrep (and it doesn't exit non-zero). + count=`pgrep -f "sshd:.*@" | wc -l` || return + if [ $count -gt 0 ]; then + color b w r; printf "%d" "$count"; color -; color w r; printf "#"; color -- + fi +} # vi: syntax=sh ts=4 noexpandtab diff --git a/usr/lib/byobu/whoami b/usr/lib/byobu/whoami index d0eafbb0..fd546b51 100755 --- a/usr/lib/byobu/whoami +++ b/usr/lib/byobu/whoami @@ -1,9 +1,11 @@ #!/bin/sh -e # -# whoami - report current logged in user -# Copyright (C) 2008 Canonical Ltd. +# whoami: report current logged in user # -# Authors: Dustin Kirkland +# Copyright (C) 2008 Canonical Ltd. +# Copyright (C) 2011 Dustin Kirkland +# +# Authors: Dustin Kirkland # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -17,13 +19,12 @@ # You should have received a copy of the GNU General Public License # along with this program. If not, see . -color 2>/dev/null || color() { true; } - -if [ "$1" = "--detail" ]; then +__whoami_detail() { getent -- passwd "$USER" - exit 0 -fi +} -color bold2; printf "%s@" "$(whoami)"; color - +__whoami() { + color bold2; printf "%s@" "$(whoami)"; color - +} # vi: syntax=sh ts=4 noexpandtab diff --git a/usr/lib/byobu/wifi_quality b/usr/lib/byobu/wifi_quality index c1f7e083..48225633 100755 --- a/usr/lib/byobu/wifi_quality +++ b/usr/lib/byobu/wifi_quality @@ -1,9 +1,11 @@ #!/bin/sh -e # # wifi_quality: display wifi signal quality -# Copyright (C) 2008 Canonical Ltd. # -# Authors: Dustin Kirkland +# Copyright (C) 2008 Canonical Ltd. +# Copyright (C) 2011 Dustin Kirkland +# +# Authors: Dustin Kirkland # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -17,34 +19,29 @@ # You should have received a copy of the GNU General Public License # along with this program. If not, see . -PKG="byobu" -color 2>/dev/null || color() { true; } -[ "$UTF8" = "1" ] && ICON="⚚" || ICON= - -if [ "$1" = "--detail" ]; then +__wifi_quality_detail() { /sbin/iwconfig 2>/dev/null - exit 0 -fi +} -# iwconfig is expected to output lines like: -# Bit Rate=54 Mb/s Tx-Power=15 dBm -# Link Quality=60/70 Signal level=-50 dBm -# the awk below tokenizes the output and prints shell evalable results -out=`iwconfig $MONITORED_NETWORK 2>/dev/null | - awk '$0 ~ /[ ]*Link Quality./ { +__wifi_quality() { + local out bitrate quality + # iwconfig is expected to output lines like: + # Bit Rate=54 Mb/s Tx-Power=15 dBm + # Link Quality=60/70 Signal level=-50 dBm + # the awk below tokenizes the output and prints shell evalable results + out=`iwconfig $MONITORED_NETWORK 2>/dev/null | + awk '$0 ~ /[ ]*Link Quality./ { sub(/.*=/,"",$2); split($2,a,"/"); printf "quality=%.0f\n", 100*a[1]/a[2] }; $0 ~ /[ ]*Bit Rate/ { sub(/.*=/,"",$2); printf("bitrate=%s\n", $2); } '` -eval "$out" - -[ -z "$bitrate" ] && bitrate="0" - -if [ -z "$quality" ] || [ "$quality" = "0" ]; then - quality="0" -fi -[ "$quality" = "0" ] && exit 0 - -printf "${ICON}"; color b C k; printf "%s" "$bitrate"; color -; color C k; printf "%s," "Mbps"; color -; color b C k; printf "%s" "$quality"; color -; color C k; printf "%%"; color -- + eval "$out" + [ -z "$bitrate" ] && bitrate="0" + if [ -z "$quality" ] || [ "$quality" = "0" ]; then + quality="0" + fi + [ "$quality" = "0" ] && return + printf "${ICON_WIFI}"; color b C k; printf "%s" "$bitrate"; color -; color C k; printf "%s," "Mbps"; color -; color b C k; printf "%s" "$quality"; color -; color C k; printf "%%"; color -- +} # vi: syntax=sh ts=4 noexpandtab