byobu: Add new package

From the website:
Byobu is a GPLv3 open source text-based window manager and terminal
multiplexer. It was originally designed to provide elegant enhancements
to the otherwise functional, plain, practical GNU Screen, for the Ubuntu
server distribution. Byobu now includes an enhanced profiles, convenient
keybindings, configuration utilities, and toggle-able system status
notifications for both the GNU Screen window manager and the more modern
Tmux terminal multiplexer, and works on most Linux, BSD, and Mac
distributions.

Adapted from the old packages feed:
https://git.openwrt.org/?p=openwrt/svn-archive/packages.git;a=tree;f=utils/byobu

Signed-off-by: Jeffery To <jeffery.to@gmail.com>
This commit is contained in:
Jeffery To 2019-04-30 20:40:11 +08:00
parent 80c95fc082
commit 43c1b1b53c
22 changed files with 579 additions and 0 deletions

102
utils/byobu/Makefile Normal file
View File

@ -0,0 +1,102 @@
#
# Copyright (C) 2009 Sharim At Work, Ltd.
# Copyright (C) 2019 Jeffery To
# Author: Xiangfu Liu <xiangfu@sharism.cc>
#
# This is free software, licensed under the GNU General Public License v2.
# See /LICENSE for more information.
#
include $(TOPDIR)/rules.mk
PKG_NAME:=byobu
PKG_VERSION:=5.127
PKG_RELEASE:=1
PKG_SOURCE:=$(PKG_NAME)_$(PKG_VERSION).orig.tar.gz
PKG_SOURCE_URL:=https://launchpad.net/byobu/trunk/$(PKG_VERSION)/+download
PKG_HASH:=4bafc7cb69ff5b0ab6998816d58cd1ef7175e5de75abc1dd7ffd6d5288a4f63b
PKG_LICENSE:=GPL-3.0
PKG_LICENSE_FILES:=COPYING
PKG_MAINTAINER:=Jeffery To <jeffery.to@gmail.com>
PKG_BUILD_PARALLEL:=1
PKG_INSTALL:=1
include $(INCLUDE_DIR)/package.mk
define Package/byobu/Default
SECTION:=utils
CATEGORY:=Utilities
URL:=http://byobu.org/
PKGARCH:=all
endef
define Package/byobu
$(call Package/byobu/Default)
TITLE:=Text-based window manager and terminal multiplexer
DEPENDS:=+python3-light +python3-newt
endef
define Package/byobu-utils
$(call Package/byobu/Default)
TITLE:=Utilities included with byobu
endef
define Package/byobu/description
Byobu is a GPLv3 open source text-based window manager and terminal
multiplexer. It was originally designed to provide elegant enhancements
to the otherwise functional, plain, practical GNU Screen, for the Ubuntu
server distribution. Byobu now includes an enhanced profiles, convenient
keybindings, configuration utilities, and toggle-able system status
notifications for both the GNU Screen window manager and the more modern
Tmux terminal multiplexer, and works on most Linux, BSD, and Mac
distributions.
endef
define Package/byobu-utils/description
$(call Package/byobu/description)
These are the "bikeshed" utilities bundled with byobu:
* col1..col9, NF
* ctail
* manifest
* purge-old-kernels
* vigpg
* wifi-status
endef
define Package/byobu/install
$(INSTALL_DIR) $(1)/etc
$(CP) $(PKG_INSTALL_DIR)/etc/* $(1)/etc/
$(INSTALL_DIR) $(1)/usr/bin
$(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/byobu* $(1)/usr/bin/
$(LN) byobu $(1)/usr/bin/byobu-screen
$(LN) byobu $(1)/usr/bin/byobu-tmux
$(INSTALL_DIR) $(1)/usr/lib
$(CP) $(PKG_INSTALL_DIR)/usr/lib/byobu $(1)/usr/lib/
$(INSTALL_DIR) $(1)/usr/share/byobu
for i in keybindings profiles status windows; do \
$(CP) $(PKG_INSTALL_DIR)/usr/share/byobu/$$$$i $(1)/usr/share/byobu/ ; \
done
$(INSTALL_DIR) $(1)/usr/share/doc
$(CP) $(PKG_INSTALL_DIR)/usr/share/doc/byobu $(1)/usr/share/doc/
endef
define Package/byobu-utils/install
$(INSTALL_DIR) $(1)/usr/bin
for i in col1 ctail manifest purge-old-kernels vigpg wifi-status; do \
$(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/$$$$i $(1)/usr/bin/ ; \
done
for i in col2 col3 col4 col5 col6 col7 col8 col9 NF; do \
$(LN) col1 $(1)/usr/bin/$$$$i ; \
done
endef
$(eval $(call BuildPackage,byobu))
$(eval $(call BuildPackage,byobu-utils))

View File

@ -0,0 +1,11 @@
--- a/usr/bin/byobu.in
+++ b/usr/bin/byobu.in
@@ -46,7 +46,7 @@ if [ -z "${BYOBU_PREFIX}" ]; then
. "$HOME/.byoburc"
fi
fi
-export BYOBU_CHARMAP=$(locale charmap)
+export BYOBU_CHARMAP=UTF-8
[ -r "$HOME/.byoburc" ] && . "$HOME/.byoburc"
[ -z "${BYOBU_PREFIX}" ] && export BYOBU_PREFIX="@prefix@" || export BYOBU_PREFIX
. "${BYOBU_PREFIX}/lib/${PKG}/include/common"

View File

@ -0,0 +1,24 @@
--- a/usr/bin/byobu.in
+++ b/usr/bin/byobu.in
@@ -62,7 +62,7 @@ esac
export BYOBU_BACKEND
# Store the parent tty
-export BYOBU_TTY=$(tty)
+export BYOBU_TTY=$(readlink /proc/$$/fd/0)
# Get the default window name
[ -n "$BYOBU_WINDOW_NAME" ] || BYOBU_WINDOW_NAME=-
--- a/usr/bin/byobu-launch.in
+++ b/usr/bin/byobu-launch.in
@@ -30,8 +30,8 @@
# or edit your sshd_config, ssh_config, and set:
# $HOME/.bashrc: export BYOBU_DISABLE=1
-_tty=$(tty)
-if [ "${_tty#/dev/ttyS}" != "$_tty" ]; then
+_tty=$(readlink /proc/$$/fd/0)
+if [ "${_tty#/dev/ttyS}" != "$_tty" ] && [ "${_tty#/dev/ttyAMA}" != "$_tty" ]; then
# Don't autolaunch byobu on serial consoles
# You can certainly run 'byobu' manually, though
echo

View File

@ -0,0 +1,11 @@
--- a/usr/bin/byobu-janitor.in
+++ b/usr/bin/byobu-janitor.in
@@ -41,7 +41,7 @@ DEFAULT_PROFILE="light"
PROFILE="$BYOBU_CONFIG_DIR/profile"
# Create byobu-exchange buffer file, with secure permissions, if it doesn't exist
-[ -e "$BYOBU_RUN_DIR/printscreen" ] || install -m 600 /dev/null "$BYOBU_RUN_DIR/printscreen"
+[ -e "$BYOBU_RUN_DIR/printscreen" ] || { cp /dev/null "$BYOBU_RUN_DIR/printscreen"; chmod 600 "$BYOBU_RUN_DIR/printscreen"; }
# Affects: users who launched using sudo, such that their config dir
# is not writable by them

View File

@ -0,0 +1,10 @@
--- a/usr/lib/byobu/include/constants
+++ b/usr/lib/byobu/include/constants
@@ -58,6 +58,7 @@ $BYOBU_SED --follow-symlinks "s///" /dev
eval $BYOBU_TEST ulimit >/dev/null 2>&1 && export BYOBU_ULIMIT="ulimit" || export BYOBU_ULIMIT="false"
# Find a suitable python interpreter, if undefined
+export BYOBU_PYTHON="python3"
if [ -z "$BYOBU_PYTHON" ]; then
if python3 -c "import snack" >/dev/null 2>&1; then
export BYOBU_PYTHON="python3"

View File

@ -0,0 +1,28 @@
--- a/usr/lib/byobu/disk
+++ b/usr/lib/byobu/disk
@@ -26,7 +26,10 @@ __disk_detail() {
__disk() {
local out="" MP="" size="" pct="" unit=""
# Default to /, but let users override
- [ -z "$MONITORED_DISK" ] && MP="/" || MP="$MONITORED_DISK"
+ MP="$MONITORED_DISK"
+ [ -n "$MP" ] || {
+ grep -q ' /overlay ' /proc/mounts && MP=/overlay || MP=/
+ }
case $MP in
/dev/*) MP=$(awk '$1 == m { print $2; exit(0); }' "m=$MP" /proc/mounts);;
esac
--- a/usr/lib/byobu/disk_io
+++ b/usr/lib/byobu/disk_io
@@ -42,7 +42,10 @@ getdisk() {
__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"
+ local mount_point="$MONITORED_DISK"
+ [ -n "$mount_point" ] || {
+ grep -q ' /overlay ' /proc/mounts && mount_point=/overlay || mount_point=/
+ }
# By default, we won't bug the user with the display of network traffic
# below DISK_IO_THRESHOLD in kB/s; override in $BYOBU_CONFIG_DIR/status
[ -n "$DISK_IO_THRESHOLD" ] || DISK_IO_THRESHOLD=50

View File

@ -0,0 +1,13 @@
--- a/usr/lib/byobu/services
+++ b/usr/lib/byobu/services
@@ -24,7 +24,9 @@ __services_detail() {
}
service_running() {
- if [ -f "/etc/init/$1.conf" ]; then
+ if pgrep "$1" >/dev/null; then
+ true
+ elif [ -f "/etc/init/$1.conf" ]; then
# Use upstart
case "$(status $1 2>/dev/null)" in
*running*)

View File

@ -0,0 +1,33 @@
--- a/usr/lib/byobu/users
+++ b/usr/lib/byobu/users
@@ -22,20 +22,26 @@
# along with this program. If not, see <http://www.gnu.org/licenses/>.
__users_detail() {
- ps -ef | grep "sshd:.*@" | grep -v grep
+ ps -ef 2>/dev/null | grep "sshd:.*@" | grep -v grep
}
__users() {
- local count=0
+ local count=0 f pid
+ for f in /var/run/dropbear.*.pid; do
+ read pid < "$f"
+ count=$(($count + $(pgrep -P "$pid" | wc -l)))
+ done
+ if [ $count -eq 0 ]; then
if [ "$USERS_DISTINCT" = "1" ]; then
count=$(pgrep -fl 'sshd:.*@' | cut -f3 -d\ | cut -f1 -d@ | sort -u | wc -l)
else
# 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:.*@|^/usr/sbin/sshd -i" | wc -l) || return
+ count=$(pgrep -f "^sshd:.*@|^/usr/sbin/sshd -i" | wc -l)
+ fi
fi
if [ $count -gt 0 ]; then
- color b w r; printf "%d" "$count"; color -; color w r; printf "#"; color --
+ color b w r; printf "%d" "$count"; color -; color w r; printf "##"; color --
else
rm -f "$BYOBU_RUN_DIR/status.$BYOBU_BACKEND/users"*
fi

View File

@ -0,0 +1,22 @@
--- a/usr/bin/byobu-export.in
+++ b/usr/bin/byobu-export.in
@@ -22,7 +22,7 @@ PKG="byobu"
[ -z "${BYOBU_PREFIX}" ] && export BYOBU_PREFIX="@prefix@" || export BYOBU_PREFIX
. "${BYOBU_PREFIX}/lib/${PKG}/include/common"
-gettext "
+echo "
The byobu-export utility is now deprecated.
To install byobu on a system for which byobu is not packaged, or
--- a/usr/lib/byobu/menu
+++ b/usr/lib/byobu/menu
@@ -35,7 +35,7 @@ __menu() {
else
key="F9"
fi
- text=$(gettext "Menu" 2>/dev/null) || text="Menu"
+ text="Menu"
color k w; printf "%s:<" "$text"; color -; color b k w; printf "%s" "$key"; color k w; printf ">"
}

View File

@ -0,0 +1,29 @@
--- a/usr/bin/byobu-disable-prompt.in
+++ b/usr/bin/byobu-disable-prompt.in
@@ -17,6 +17,8 @@
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
+[ -w "$HOME/.bashrc" ] || exit 1
+
PKG="byobu"
[ -r "$HOME/.byoburc" ] && . "$HOME/.byoburc"
[ -z "${BYOBU_PREFIX}" ] && export BYOBU_PREFIX="@prefix@" || export BYOBU_PREFIX
--- a/usr/bin/byobu-janitor.in
+++ b/usr/bin/byobu-janitor.in
@@ -112,6 +112,7 @@ killall -u $USER byobu-statusd >/dev/nul
rm -f "$FLAG" "/var/run/screen/S-$USER/$PKG.reload-required"
# Affects: Upgrades from <= byobu 5.50, install byobu prompt if using stock bashrc
+if [ -r /etc/skel/.bashrc ] && [ -r "$HOME/.bashrc" ] && [ -w "$HOME/.bashrc" ]; then
if ! (grep -qs "#byobu-prompt#$" "$HOME/.bashrc") && ! [ -e "$BYOBU_CONFIG_DIR/prompt" ]; then
if eval $BYOBU_TEST diff >/dev/null 2>&1; then
if diff /etc/skel/.bashrc "$HOME/.bashrc" >/dev/null 2>&1; then
@@ -123,6 +124,7 @@ if ! (grep -qs "#byobu-prompt#$" "$HOME/
fi
fi
fi
+fi
[ -r "$BYOBU_CONFIG_DIR/prompt" ] || printf "[ -r ${BYOBU_PREFIX}/share/${PKG}/profiles/bashrc ] && . ${BYOBU_PREFIX}/share/${PKG}/profiles/bashrc #byobu-prompt#\n" > "$BYOBU_CONFIG_DIR/prompt"
# Affects: Upgrades from <= byobu 5.126, clear out ec2/rcs cost statuses

View File

@ -0,0 +1,34 @@
--- a/usr/share/byobu/keybindings/f-keys.tmux
+++ b/usr/share/byobu/keybindings/f-keys.tmux
@@ -26,8 +26,8 @@ source $BYOBU_PREFIX/share/byobu/keybind
# Byobu's Keybindings
# Documented in: $BYOBU_PREFIX/share/doc/byobu/help.tmux.txt
-bind-key -n F1 new-window -k -n config byobu-config
-bind-key -n S-F1 new-window -k -n help "sh -c '$BYOBU_PAGER $BYOBU_PREFIX/share/doc/byobu/help.tmux.txt'"
+bind-key -n F1 new-window -n config byobu-config
+bind-key -n S-F1 new-window -n help "sh -c '$BYOBU_PAGER $BYOBU_PREFIX/share/doc/byobu/help.tmux.txt'"
bind-key -n F2 new-window -c "#{pane_current_path}" \; rename-window "-"
bind-key -n C-F2 display-panes \; split-window -h -c "#{pane_current_path}"
bind-key -n S-F2 display-panes \; split-window -v -c "#{pane_current_path}"
@@ -54,7 +54,7 @@ bind-key -n M-S-Left resize-pane -L
bind-key -n M-S-Right resize-pane -R
bind-key -n F5 source $BYOBU_PREFIX/share/byobu/profiles/tmuxrc
bind-key -n M-F5 run-shell '$BYOBU_PREFIX/lib/byobu/include/toggle-utf8' \; source $BYOBU_PREFIX/share/byobu/profiles/tmuxrc
-bind-key -n S-F5 new-window -k "$BYOBU_PREFIX/lib/byobu/include/cycle-status" \; source $BYOBU_PREFIX/share/byobu/profiles/tmuxrc
+bind-key -n S-F5 new-window "$BYOBU_PREFIX/lib/byobu/include/cycle-status" \; source $BYOBU_PREFIX/share/byobu/profiles/tmuxrc
bind-key -n C-F5 send-keys ". $BYOBU_PREFIX/bin/byobu-reconnect-sockets" \; send-keys Enter
bind-key -n C-S-F5 new-window -d "byobu-select-profile -r"
bind-key -n F6 detach
@@ -68,9 +68,9 @@ bind-key -n M-PPage copy-mode \; send-ke
bind-key -n F8 command-prompt -p "(rename-window) " "rename-window '%%'"
bind-key -n C-F8 command-prompt -p "(rename-session) " "rename-session '%%'"
bind-key -n S-F8 next-layout
-bind-key -n M-S-F8 new-window -k "byobu-layout restore; clear; $SHELL"
+bind-key -n M-S-F8 new-window "byobu-layout restore; clear; $SHELL"
bind-key -n C-S-F8 command-prompt -p "Save byobu layout as:" "run-shell \"byobu-layout save '%%'\""
-bind-key -n F9 new-window -k -n config byobu-config
+bind-key -n F9 new-window -n config byobu-config
bind-key -n S-F9 command-prompt -p "Send command to all panes:" "run-shell \"$BYOBU_PREFIX/lib/byobu/include/tmux-send-command-to-all-panes '%%'\""
bind-key -n C-F9 command-prompt -p "Send command to all windows:" "run-shell \"$BYOBU_PREFIX/lib/byobu/include/tmux-send-command-to-all-windows '%%'\""
bind-key -n M-F9 display-panes \; setw synchronize-panes

View File

@ -0,0 +1,10 @@
--- a/usr/lib/byobu/disk_io
+++ b/usr/lib/byobu/disk_io
@@ -53,6 +53,7 @@ __disk_io() {
/dev/*) part="${mount_point}";;
*) part=$(awk '$2 == mp { print $1 ; exit(0); }' "mp=$mount_point" /etc/mtab);;
esac
+ [ -e "$part" ] || return
getdisk "$part"
local disk=${_RET}
local t2=$(date +%s) t1=

View File

@ -0,0 +1,21 @@
--- a/usr/lib/byobu/hostname
+++ b/usr/lib/byobu/hostname
@@ -20,12 +20,16 @@
# along with this program. If not, see <http://www.gnu.org/licenses/>.
__hostname_detail() {
- hostname -f
+ hostname -f 2>/dev/null
}
__hostname() {
local h=
- h=$(hostname -s 2>/dev/null || hostname)
+ if eval $BYOBU_TEST hostname >/dev/null 2>&1; then
+ h=$(hostname -s 2>/dev/null || hostname)
+ elif [ -r /proc/sys/kernel/hostname ]; then
+ read h < /proc/sys/kernel/hostname
+ fi
if metadata_available; then
local cache="$BYOBU_RUN_DIR/cache.$BYOBU_BACKEND/hostname"
# Background a retrieval of our public hostname

View File

@ -0,0 +1,13 @@
--- a/usr/lib/byobu/logo
+++ b/usr/lib/byobu/logo
@@ -111,6 +111,10 @@ __logo() {
logo=" lm "
$MARKUP && printf "$(color g w)$logo$(color -)$(color g w)$(color -) " || printf "$logo"
;;
+ *openwrt*)
+ logo="OWrt"
+ $MARKUP && printf "$(color b colour66 W)%s$(color -)" "$logo" || printf "$logo"
+ ;;
*red*hat*|*rhel*)
logo=" RH "
$MARKUP && printf "$(color R k)%s$(color -)" "$logo" || printf "$logo"

View File

@ -0,0 +1,21 @@
--- a/usr/lib/byobu/processes
+++ b/usr/lib/byobu/processes
@@ -20,15 +20,15 @@
# along with this program. If not, see <http://www.gnu.org/licenses/>.
__processes_detail() {
- ps -ej
+ ps -ej 2>/dev/null
}
__processes() {
local count=
if [ -r /proc ]; then
- count=$(ls -d /proc/[0-9]* 2>/dev/null| wc -l)
+ count=$(ls -d /proc/[0-9]* 2>/dev/null | wc -l)
else
- count=$(ps -ef | wc -l | awk '{print $1}')
+ count=$(ps -ef | wc -l)
fi
[ -n "$count" ] || return
color b y w; printf "%s" "$count"; color -; color y w; printf "&"; color --

View File

@ -0,0 +1,11 @@
--- a/usr/lib/byobu/release
+++ b/usr/lib/byobu/release
@@ -30,7 +30,7 @@ __release() {
true
elif [ -r "/etc/os-release" ]; then
# lsb_release is *really* slow; try to use /etc/os-release
- release=$(. /etc/os-release && echo "$VERSION_ID")
+ RELEASE=$(. /etc/os-release && echo "$VERSION_ID")
elif [ -r "/etc/issue" ]; then
# next try /etc/issue first
local issue

View File

@ -0,0 +1,11 @@
--- a/usr/lib/byobu/services
+++ b/usr/lib/byobu/services
@@ -45,7 +45,7 @@ service_running() {
}
__services() {
- local services=
+ local services="$SERVICES"
# Users can define a list of services to monitor in $BYOBU_CONFIG_DIR/status
if [ -z "$services" ]; then
if [ -f "/etc/eucalyptus/eucalyptus.conf" ]; then

View File

@ -0,0 +1,39 @@
--- a/usr/lib/byobu/updates_available
+++ b/usr/lib/byobu/updates_available
@@ -67,9 +67,16 @@ ___update_cache() {
elif eval $BYOBU_TEST pacman >/dev/null; then
# If pacman (Archlinux) exists, use it
LC_ALL=C flock -xn "$flock" pacman -Sup | grep -vc "^\(::\| \)" >$mycache 2>/dev/null &
+ elif eval $BYOBU_TEST opkg >/dev/null; then
+ # If opkg (OpenWrt) exists, use it, also background if flock exists
+ if eval $BYOBU_TEST flock >/dev/null; then
+ flock -xn "$flock" opkg list-upgradable | wc -l >$mycache 2>/dev/null &
+ else
+ opkg list-upgradable | wc -l >$mycache &
+ fi
elif eval $BYOBU_TEST brew >/dev/null; then
# If homebrew (Mac OSX) exists, use it, also background if flock exists
- if eval $BYOBU_TEST flock; then
+ if eval $BYOBU_TEST flock >/dev/null; then
flock -xn "$flock" brew outdated | wc -l >$mycache 2>/dev/null &
else
brew outdated | wc -l >$mycache &
@@ -106,6 +113,18 @@ ___update_needed() {
[ "$db" -nt "$mycache" ] && return 0
done
return 1
+ elif eval $BYOBU_TEST opkg >/dev/null; then
+ # OpenWrt
+ [ ! -e /var/lock/opkg.lock ] || return 1
+ if [ -d /var/opkg-lists ]; then
+ [ /var/opkg-lists -nt "$mycache" ]
+ return $?
+ else
+ local u s
+ read u s < "$mycache"
+ [ "$u" -gt 0 ]
+ return $?
+ fi
elif eval $BYOBU_TEST brew >/dev/null; then
# Mac OSX
# check if any new versions have been installed since

View File

@ -0,0 +1,33 @@
--- a/usr/lib/byobu/whoami
+++ b/usr/lib/byobu/whoami
@@ -19,12 +19,28 @@
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
+___get_user() {
+ if eval $BYOBU_TEST whoami >/dev/null 2>&1; then
+ whoami
+ elif eval $BYOBU_TEST id >/dev/null 2>&1; then
+ id -un
+ fi
+}
+
__whoami_detail() {
- getent -- passwd "$USER"
+ local user=$(___get_user)
+ [ -n "$user" ] || return
+ if eval $BYOBU_TEST getent >/dev/null 2>&1; then
+ getent -- passwd "$user"
+ else
+ grep "^$user:" /etc/passwd
+ fi
}
__whoami() {
- color bold2; printf "%s@" "$(whoami)"; color -
+ local user=$(___get_user)
+ [ -n "$user" ] || return
+ color bold2; printf "%s@" "$user"; color -
}
# vi: syntax=sh ts=4 noexpandtab

View File

@ -0,0 +1,82 @@
--- a/usr/lib/byobu/wifi_quality
+++ b/usr/lib/byobu/wifi_quality
@@ -19,32 +19,61 @@
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
+___get_dev_list() {
+ if [ -n "$MONITORED_NETWORK" ]; then
+ echo "$MONITORED_NETWORK"
+ else
+ iw dev | grep Interface | cut -f2 -d\
+ fi
+}
+
__wifi_quality_detail() {
- /sbin/iwconfig 2>/dev/null
+ if eval $BYOBU_TEST iw >/dev/null 2>&1; then
+ local dev
+ for dev in $(___get_dev_list); do
+ iw dev "$dev" info
+ iw dev "$dev" link
+ echo
+ done
+ elif eval $BYOBU_TEST iwconfig >/dev/null 2>&1; then
+ iwconfig 2>/dev/null
+ fi
}
__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"
+ if eval $BYOBU_TEST iw >/dev/null 2>&1; then
+ local dev
+ for dev in $(___get_dev_list); do
+ # signal to quality: https://superuser.com/a/1360447
+ out=`iw dev "$dev" link 2>/dev/null |
+ awk '$0 ~ /^\s*signal:/ { a = 100 * ($2 + 110) / 70;
+ printf "quality=%.0f\n", (a > 100) ? 100 : ((a < 0) ? 0 : a); }
+ $0 ~ /^\s*tx bitrate:/ { printf "bitrate=%s\n", $3; }
+ '`
+ eval "$out"
+ [ -z "$bitrate" ] || [ -z "$quality" ] || break
+ done
+ elif eval $BYOBU_TEST iwconfig >/dev/null 2>&1; then
+ # 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"
fi
- if [ "$bitrate" = "0" ] || [ "$quality" = "0" ] || [ -z "$bitrate" ] || [ -z "$quality"]; then
+ [ -n "$bitrate" ] || bitrate=0
+ [ -n "$quality" ] || quality=0
+ if [ "$bitrate" -gt 0 ] && [ "$quality" -gt 0 ]; then
+ 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 --
+ else
rm -f "$BYOBU_RUN_DIR/status.$BYOBU_BACKEND/wifi_quality"*
- return
fi
- 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 --
}
# vi: syntax=sh ts=4 noexpandtab

View File

@ -0,0 +1,10 @@
--- a/usr/lib/byobu/raid
+++ b/usr/lib/byobu/raid
@@ -24,6 +24,7 @@ __raid_detail() {
}
__raid() {
+ [ -r /proc/mdstat ] || return
while read line; do
local p msg
# Errors in your raid

View File

@ -0,0 +1,11 @@
--- a/usr/lib/byobu/session
+++ b/usr/lib/byobu/session
@@ -34,7 +34,7 @@ __session() {
fi
;;
screen)
- local count=$(screen -ls | grep "^ .*\)$" | wc -l)
+ local count=$(screen -ls | grep "^\s\+.*)$" | wc -l)
if [ $count -gt 1 ]; then
color u W k; printf "${ICON_SESSION}%S"; color --
else