diff --git a/debian/changelog b/debian/changelog index 5367c01f..0fa5450a 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,122 @@ +byobu (6.13-0ubuntu1) plucky; urgency=medium + + * usr/lib/byobu/include/common: + - added -v|--version and -h|--help to most executables + * usr/share/byobu/profiles/bashrc: + - fix PS1 ANSI escape sequences causing line wrap errors + + -- Dustin Kirkland Sat, 29 Mar 2025 19:55:23 -0500 + +byobu (6.12-0ubuntu1) noble; urgency=medium + + * usr/share/byobu/profiles/bashrc: + - added git branch to bash ps1 prompt + + -- Dustin Kirkland Sat, 17 Feb 2024 07:25:02 -0600 + +byobu (6.11-0ubuntu1) noble; urgency=medium + + * usr/share/byobu/profiles/bashrc: + - fix BYOBU_RUN_DIR and BYOBU_PREFIX issue + - https://github.com/dustinkirkland/byobu/pull/62 + - https://launchpad.net/bugs/2051995 LP: #2051995 + * usr/bin/byobu-launcher-install.in: + - Fix for VSCode, fish and byobu installations + - https://github.com/dustinkirkland/byobu/commit/f917d2169afdec623f5b32723d93bfd91d34b92f#commitcomment-137955113 + * usr/lib/byobu/updates_available: + - added support for dnf package manager + - https://code.launchpad.net/~sanjay-ankur/byobu/byobu/+merge/415959 + + -- Dustin Kirkland Sat, 10 Feb 2024 11:24:04 -0600 + +byobu (6.10-0ubuntu1) noble; urgency=medium + + * debian/compat, debian/control: + - bump compat, fix vcs lintian warning, fix debhelper warnings + * usr/share/byobu/profiles/bashrc: + - fix timer string logic + + -- Dustin Kirkland Tue, 23 Jan 2024 09:43:03 -0600 + +byobu (6.9-0ubuntu1) noble; urgency=medium + + * snap: + - removing, unused, never finished + + -- Dustin Kirkland Mon, 22 Jan 2024 10:25:11 -0600 + +byobu (6.8-0ubuntu1) noble; urgency=medium + + * usr/share/byobu/keybindings/f-keys.tmux: + - have F1 pull up the keybindings text + + -- Dustin Kirkland Mon, 22 Jan 2024 09:26:40 -0600 + +byobu (6.7) released; urgency=medium + + * usr/bin/byobu.in: + - if we're in a busybox/ash shell, but real bash is available, use bash + + -- Dustin Kirkland Sat, 20 Jan 2024 21:15:53 -0600 + +byobu (6.6) released; urgency=medium + + * usr/share/byobu/profiles/bashrc: + - export PS1 + * usr/bin/byobu-janitor.in: + - add byobu prompt to .bashrc in Wolfi + * usr/share/byobu/profiles/bashrc, usr/share/man/man1/byobu-prompt.1: + - add a bash timer, that shows the runtime of the previous command + at the beginning of the prompt + + -- Dustin Kirkland Tue, 16 Jan 2024 20:11:10 -0600 + +byobu (6.5) released; urgency=medium + + * usr/share/byobu/profiles/bashrc: + - drop debian chroot from wolfi ps1 + - drastically simplify the conditional logic + * usr/bin/byobu-shell.in: + - need a -l login shell to source profiles and colorize PS1 + + -- Dustin Kirkland Tue, 16 Jan 2024 13:04:06 -0600 + +byobu (6.4) released; urgency=medium + + * usr/lib/byobu/packages: + - add missing trailing whitespace + * usr/bin/byobu-janitor.in: + - enable colorized prompt for Wolfi ash shells + + -- Dustin Kirkland Sun, 07 Jan 2024 16:09:39 -0600 + +byobu (6.3) released; urgency=medium + + * usr/bin/byobu-janitor.in, usr/share/byobu/status/status: + - within Wolfi, default to our 2nd status line + * usr/lib/byobu/updates_available: + - silence apk update + * usr/share/byobu/profiles/bashrc: + - support ash for colorized prompt + + -- Dustin Kirkland Tue, 02 Jan 2024 19:23:28 -0600 + +byobu (6.2) released; urgency=medium + + * add a package count status item, useful for minimal containers + * added support for apk / Wolfi in updates_available + * added a status line customized for containers + * add wolfi color schemed PS1 prompt + + -- Dustin Kirkland Tue, 02 Jan 2024 19:08:03 -0600 + +byobu (6.1) released; urgency=medium + + * usr/lib/byobu/include/shutil: + - fix distro getting from /etc/os-release + + -- Dustin Kirkland Sat, 23 Dec 2023 15:09:29 -0600 + byobu (6.0) released; urgency=medium * usr/lib/byobu/disk: @@ -21,7 +140,7 @@ byobu (6.0) released; urgency=medium - Wolfi doesn't really have versions, so just use the distro name rather than version id - -- Dustin Kirkland Tue, 28 Nov 2023 20:35:36 -0600 + -- Dustin Kirkland Sat, 23 Dec 2023 15:09:09 -0600 byobu (5.133-0ubuntu1) focal; urgency=medium diff --git a/debian/compat b/debian/compat index ec635144..b1bd38b6 100644 --- a/debian/compat +++ b/debian/compat @@ -1 +1 @@ -9 +13 diff --git a/debian/control b/debian/control index 856808af..fa02a924 100644 --- a/debian/control +++ b/debian/control @@ -4,9 +4,9 @@ Priority: optional Maintainer: Dustin Kirkland Uploaders: Antoine Beaupré Standards-Version: 4.1.3 -Build-Depends: debhelper (>= 7.0.50~), gettext-base, automake, autoconf, dh-python, python3 +Build-Depends: debhelper (>= 13), gettext-base, automake, autoconf, dh-python, python3 Homepage: https://byobu.org -Vcs-Bzr: https://github.com/dustinkirkland/byobu +Vcs-Git: https://github.com/dustinkirkland/byobu Package: byobu Architecture: all diff --git a/snap/snapcraft.yaml b/snap/snapcraft.yaml deleted file mode 100644 index d973624c..00000000 --- a/snap/snapcraft.yaml +++ /dev/null @@ -1,26 +0,0 @@ -name: byobu -version: 5.124 -summary: text window manager, shell multiplexer, integrated DevOps environment -description: > - Byobu is Ubuntu's powerful text-based window manager, shell multiplexer, and - integrated DevOps environment. - Using Byobu, you can quickly create and move between different windows - over a single SSH connection or TTY terminal, split each of those windows into - multiple panes, monitor dozens of important statistics about your system, - detach and reattach to sessions later while your programs continue to run in - the background. -confinement: classic -grade: stable - -parts: - byobu: - plugin: nil - stage-packages: [byobu] - stage: - - -bin/byobu - snap: - - -bin/byobu - -apps: - byobu: - command: byobu diff --git a/usr/bin/byobu-janitor.in b/usr/bin/byobu-janitor.in index 840f98d4..30e03f5d 100755 --- a/usr/bin/byobu-janitor.in +++ b/usr/bin/byobu-janitor.in @@ -4,6 +4,7 @@ # environtment and smooth upgrades # # Copyright (C) 2009 Canonical Ltd. +# Copyright (C) 2024 Dustin Kirkland # # Authors: Dustin Kirkland # @@ -89,6 +90,8 @@ for f in status statusrc; do if [ ! -r "$BYOBU_CONFIG_DIR/$f" ]; then # Copy from skeleton, if possible cp -f "$BYOBU_PREFIX/share/$PKG/status/$f" "$BYOBU_CONFIG_DIR/$f" + # If we're running in Wolfi for the first time, cycle to the 2nd status + [ "$f" = "status" ] && [ "$BYOBU_DISTRO" = "Wolfi" ] && $BYOBU_PREFIX/lib/byobu/include/cycle-status fi done @@ -133,6 +136,18 @@ if [ -r /etc/skel/.bashrc ] && [ -r "$HOME/.bashrc" ] && [ -w "$HOME/.bashrc" ] 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: New Wolfi installs -- add colorized prompt to local .profile +if [ "$BYOBU_DISTRO" = "Wolfi" ]; then + # Wolfi defaults to "ash", which uses .profile + if ! (grep -qs "#byobu-prompt#$" "$HOME/.profile"); then + printf "[ -r $BYOBU_CONFIG_DIR/prompt ] && . $BYOBU_CONFIG_DIR/prompt #byobu-prompt#\n" >> "$HOME/.profile" + fi + # Wolfi also has bash, which uses .bashrc + if ! (grep -qs "#byobu-prompt#$" "$HOME/.bashrc"); then + printf "[ -r $BYOBU_CONFIG_DIR/prompt ] && . $BYOBU_CONFIG_DIR/prompt #byobu-prompt#\n" >> "$HOME/.bashrc" + fi +fi + # Affects: Upgrades from <= byobu 5.126, clear out ec2/rcs cost statuses rm -f "$BYOBU_RUN_DIR"/cache.tmux/ec2_cost* "$BYOBU_RUN_DIR"/cache.tmux/rcs_cost* "$BYOBU_RUN_DIR"/status.tmux/ec2_cost* "$BYOBU_RUN_DIR"/status.tmux/rcs_cost* diff --git a/usr/bin/byobu-launcher-install.in b/usr/bin/byobu-launcher-install.in index a73db22f..4ad6d0d3 100755 --- a/usr/bin/byobu-launcher-install.in +++ b/usr/bin/byobu-launcher-install.in @@ -49,8 +49,8 @@ install_launcher() { install_launcher_fish() { $PKG-launcher-uninstall "$1" || true - printf "if not set -q VSCODE_CWD" >> "$1" - printf " status --is-login; and status --is-interactive; and exec byobu-launcher" >> "$1" + printf "if not set -q VSCODE_CWD; " >> "$1" + printf " status --is-login; and status --is-interactive; and exec byobu-launcher;" >> "$1" printf "end" >> "$1" } diff --git a/usr/bin/byobu-shell.in b/usr/bin/byobu-shell.in index bff9ec3e..4610a547 100755 --- a/usr/bin/byobu-shell.in +++ b/usr/bin/byobu-shell.in @@ -41,6 +41,8 @@ if [ ! -e "$FLAG" ]; then touch "$FLAG" fi -[ -n "$SHELL" -a -x "$SHELL" ] && exec "$SHELL" || exec /bin/sh +# This needs to be a -l login shell, in order to source profiles +# and colorize the prompt +[ -n "$SHELL" -a -x "$SHELL" ] && exec "$SHELL" -l || exec /bin/sh -l # vi: syntax=sh ts=4 noexpandtab diff --git a/usr/bin/byobu.in b/usr/bin/byobu.in index b3616a4e..b04eb1ab 100755 --- a/usr/bin/byobu.in +++ b/usr/bin/byobu.in @@ -2,7 +2,7 @@ # # byobu - wrapper script # Copyright (C) 2008-2009 Canonical Ltd. -# Copyright (C) 2008-2014 Dustin Kirkland +# Copyright (C) 2008-2024 Dustin Kirkland # # Authors: Dustin Kirkland # @@ -18,7 +18,7 @@ # You should have received a copy of the GNU General Public License # along with this program. If not, see . -VERSION=5.134 +VERSION=6.12 PKG="byobu" # All sorts of things go wrong if you don't own your $HOME dir. @@ -32,6 +32,13 @@ if [ ! -O "$HOME" ]; then exit 1 fi +# If we're in a busybox/ash shell (or shell is undefined), +# and a full bash shell is available, then please let's use bash in byobu. +# Other shells are supported, but your mileage may vary... +if [ "$SHELL" = "/bin/ash" ] || [ "$SHELL" = "ash" ] || [ -z "$SHELL" ]; then + [ -x "/bin/bash" ] && export SHELL="/bin/bash" +fi + # Source local byobu config if [ -r "$HOME/.byoburc" ]; then # Ensure that this configuration is usable diff --git a/usr/lib/byobu/Makefile.am b/usr/lib/byobu/Makefile.am index cf7d035d..ba5186ec 100644 --- a/usr/lib/byobu/Makefile.am +++ b/usr/lib/byobu/Makefile.am @@ -1,3 +1,3 @@ libdirdir = $(prefix)/lib/@PACKAGE@ -libdir_SCRIPTS = apport arch battery cpu_count cpu_freq cpu_temp color custom date disk disk_io distro entropy fan_speed hostname ip_address load_average logo mail memory menu network processes raid reboot_required release services session swap time time_binary time_utc trash updates_available uptime users whoami wifi_quality +libdir_SCRIPTS = apport arch battery cpu_count cpu_freq cpu_temp color custom date disk disk_io distro entropy fan_speed hostname ip_address load_average logo mail memory menu network packages processes raid reboot_required release services session swap time time_binary time_utc trash updates_available uptime users whoami wifi_quality diff --git a/usr/lib/byobu/include/common b/usr/lib/byobu/include/common index 04ae4f4d..9081f6cb 100755 --- a/usr/lib/byobu/include/common +++ b/usr/lib/byobu/include/common @@ -53,3 +53,8 @@ if [ -z "${BYOBU_INCLUDED_LIBS}" ]; then export BYOBU_DISTRO="$_RET" BYOBU_INCLUDED_LIBS=1 fi + +case "$1" in + -v|--version) [ "$(basename $0)" != "byobu" ] && exec byobu -v ;; + -h|--help) exec man $(basename $0) ;; +esac diff --git a/usr/lib/byobu/include/constants b/usr/lib/byobu/include/constants index f9c2368f..2eb31199 100755 --- a/usr/lib/byobu/include/constants +++ b/usr/lib/byobu/include/constants @@ -25,6 +25,9 @@ PKG="byobu" PCT="%" +# Some shell(s) don't set the USER environment value (looking at you, ash) +[ -z "$USER" ] && export USER=$(whoami) + # Support two different backends (screen/tmux) if [ -z "$BYOBU_BACKEND" ]; then [ -r "/etc/byobu/backend" ] && . "/etc/byobu/backend" diff --git a/usr/lib/byobu/include/shutil b/usr/lib/byobu/include/shutil index d24ff91f..28e82d40 100755 --- a/usr/lib/byobu/include/shutil +++ b/usr/lib/byobu/include/shutil @@ -258,6 +258,7 @@ status_freq() { menu) _RET=9999991 ;; network) _RET=3 ;; notify_osd) _RET=9999991 ;; + packages) _RET=211 ;; processes) _RET=7 ;; raid) _RET=59 ;; reboot_required) _RET=5 ;; @@ -322,7 +323,7 @@ get_distro() { ;; *) # assume first field is what we want - distro="${issue%% *}"; + distro="${distro%% *}"; ;; esac elif [ -r "/etc/issue" ]; then diff --git a/usr/lib/byobu/packages b/usr/lib/byobu/packages new file mode 100755 index 00000000..29ebd0ec --- /dev/null +++ b/usr/lib/byobu/packages @@ -0,0 +1,53 @@ +#!/bin/sh -e +# +# packages: count the number of packages installed +# +# Copyright (C) 2023 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 . + +__packages_detail() { + if eval $BYOBU_TEST dpkg >/dev/null 2>&1; then + dpkg -l | grep ^ii + fi + if eval $BYOBU_TEST snap >/dev/null 2>&1; then + snap list + fi + if eval $BYOBU_TEST apk >/dev/null 2>&1; then + apk info + fi + return +} + +__packages() { + local packages=0 + if eval $BYOBU_TEST dpkg >/dev/null 2>&1; then + count=$(dpkg -l | grep -c ^ii) + packages=$((packages+count)) + fi + if eval $BYOBU_TEST snap >/dev/null 2>&1; then + count=$(snap list | grep -c -v "^Name\s") + packages=$((packages+count)) + fi + if eval $BYOBU_TEST apk >/dev/null 2>&1; then + count=$(apk info | wc -l) + packages=$((packages+count)) + fi + [ -n "$packages" ] || return + color w y; printf "[%s]" "$count"; color --; + +} + +# vi: syntax=sh ts=4 noexpandtab diff --git a/usr/lib/byobu/updates_available b/usr/lib/byobu/updates_available index 691ccc88..6624255c 100755 --- a/usr/lib/byobu/updates_available +++ b/usr/lib/byobu/updates_available @@ -3,7 +3,7 @@ # updates_available: calculate and cache the number of updates available # # Copyright (C) 2008 Canonical Ltd. -# Copyright (C) 2011-2014 Dustin Kirkland +# Copyright (C) 2011-2023 Dustin Kirkland # # Authors: Dustin Kirkland # @@ -81,6 +81,13 @@ ___update_cache() { else brew outdated | wc -l >$mycache & fi + elif eval $BYOBU_TEST apk >/dev/null; then + # Wolfi updates are cheap (~1s); so update cache every time + apk update 2>&1 >/dev/null + apk upgrade --simulate | grep -c " Upgrading " >$mycache 2>/dev/null & + elif eval $BYOBU_TEST dnf >/dev/null; then + # If dnf exists, use it + flock -xn "$flock" dnf list --upgrades -q -y | grep -vc "Available Upgrades" >$mycache 2>/dev/null & fi } @@ -137,6 +144,9 @@ ___update_needed() { # formulae database was updated [ "$(brew --prefix)/Library/Formula" -nt "$mycache" ] return $? + elif [ -e "/var/cache/dnf/packages.db" ]; then + [ "/var/cache/dnf/packages.db" -nt "$mycache" ] + return $? fi return 1 } diff --git a/usr/share/byobu/keybindings/f-keys.tmux b/usr/share/byobu/keybindings/f-keys.tmux index 6a56aa89..fc2f4a5a 100644 --- a/usr/share/byobu/keybindings/f-keys.tmux +++ b/usr/share/byobu/keybindings/f-keys.tmux @@ -1,7 +1,7 @@ ############################################################################### # byobu's tmux f-key keybindings # -# Copyright (C) 2011-2014 Dustin Kirkland +# Copyright (C) 2011-2024 Dustin Kirkland # # Authors: Dustin Kirkland # @@ -26,7 +26,7 @@ source $BYOBU_PREFIX/share/byobu/keybindings/f-keys.tmux.disable # Byobu's Keybindings # Documented in: $BYOBU_PREFIX/share/doc/byobu/help.tmux.txt -bind-key -n F1 new-window -n config byobu-config +bind-key -n F1 new-window -n help "sh -c '$BYOBU_PAGER $BYOBU_PREFIX/share/doc/byobu/help.tmux.txt'" 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}" diff --git a/usr/share/byobu/profiles/bashrc b/usr/share/byobu/profiles/bashrc index 17cb34ed..502b55f7 100644 --- a/usr/share/byobu/profiles/bashrc +++ b/usr/share/byobu/profiles/bashrc @@ -1,5 +1,6 @@ # byobu's bashrc -- colorize the prompt # Copyright (C) 2014 Dustin Kirkland +# Copyright (C) 2023, 2024 Dustin Kirkland # # Authors: Dustin Kirkland # @@ -22,40 +23,68 @@ case "$TERM" in export TERM="xterm-256color" ;; esac -if [ -n "$TMUX" ] || [ "${TERMCAP#*screen}" != "${TERMCAP}" ]; then - # Ensure that we're in bash, in a byobu environment - if [ -n "$BYOBU_BACKEND" ] && [ -n "$BASH" ]; then - byobu_prompt_status() { local e=$?; [ $e != 0 ] && echo -e "$e "; } - [ -n "$BYOBU_CHARMAP" ] || BYOBU_CHARMAP=$(locale charmap 2>/dev/null || echo) - byobu_prompt_symbol() { - if [ "$USER" = "root" ]; then - printf "%s" "#"; - else - printf "%s" "\$" - fi - } - case "$BYOBU_DISTRO" in - "Ubuntu") - # Use Ubuntu colors (grey / orange / aubergine) - PS1="${debian_chroot:+($debian_chroot)}\[\e[38;5;202m\]\$(byobu_prompt_status)\[\e[38;5;245m\]\u\[\e[00m\]@\[\e[38;5;172m\]\h\[\e[00m\]:\[\e[38;5;5m\]\w\[\e[00m\]\$(byobu_prompt_symbol) " - export GREP_COLORS="ms=01;38;5;202:mc=01;31:sl=:cx=:fn=01;38;5;132:ln=32:bn=32:se=00;38;5;242" - export LESS_TERMCAP_mb=$(printf '\e[01;31m') # enter blinking mode – red - export LESS_TERMCAP_md=$(printf '\e[01;38;5;180m') # enter double-bright mode – bold light orange - export LESS_TERMCAP_me=$(printf '\e[0m') # turn off all appearance modes (mb, md, so, us) - export LESS_TERMCAP_se=$(printf '\e[0m') # leave standout mode - export LESS_TERMCAP_so=$(printf '\e[03;38;5;202m') # enter standout mode – orange background highlight (or italics) - export LESS_TERMCAP_ue=$(printf '\e[0m') # leave underline mode - export LESS_TERMCAP_us=$(printf '\e[04;38;5;139m') # enter underline mode – underline aubergine - # Use Ubuntu themed dircolors - if [ -e "${BYOBU_PREFIX}/share/byobu/profiles/dircolors" ]; then - dircolors "${BYOBU_PREFIX}/share/byobu/profiles/dircolors" > "$BYOBU_RUN_DIR/dircolors" - . "$BYOBU_RUN_DIR/dircolors" - fi - ;; - *) - # Use Googley colors (blue / red / yellow / blue / green / red ) - PS1="${debian_chroot:+($debian_chroot)}\[\e[31m\]\$(byobu_prompt_status)\[\e[38;5;69m\]\u\[\e[38;5;214m\]@\[\e[38;5;167m\]\h\[\e[38;5;214m\]:\[\e[38;5;71m\]\w\[\e[38;5;214m\]\$(byobu_prompt_symbol)\[\e[00m\] " - ;; - esac - fi -fi +[ -n "$BYOBU_CHARMAP" ] || BYOBU_CHARMAP=$(locale charmap 2>/dev/null || echo) +[ -z "$USER" ] && export USER=$(whoami) +[ -d "$BYOBU_PREFIX" ] || BYOBU_PREFIX="/usr" +[ -r "$BYOBU_PREFIX/lib/byobu/include/dirs" ] && . "$BYOBU_PREFIX/lib/byobu/include/dirs" + +byobu_prompt_git() { git branch 2>/dev/null | sed -e "/^[^*]/d" -e "s/* \(.*\)/ (\1)/"; } +byobu_prompt_status() { printf "%s" "[$?]"; } +byobu_prompt_symbol() { [ "$USER" = "root" ] && printf "%s" "#" || printf "%s" "\$"; } +byobu_prompt_runtime() { + # Calculate the approximate runtime of the previous command + # Uses bash 5.0's EPOCHREALTIME + local starttime endtime duration days hours minutes seconds microseconds nanoseconds str + [ ! -r $BYOBU_RUN_DIR/timer.$$ ] && printf "[0.000s]" && return + read starttime < $BYOBU_RUN_DIR/timer.$$ 2>/dev/null || true + # strip to non-decimal time. avoids LP: #2052610 + endtime=${EPOCHREALTIME/[^0-9]/} + starttime=${starttime/[^0-9]/} + duration=$((endtime - starttime)) + days=$((duration/1000000/60/60/24)) + hours=$((duration/1000000/60/60%24)) + minutes=$((duration/1000000/60%60)) + seconds=$((duration/1000000%60)) + nanoseconds=$((duration-days*1000000*60*60*24-hours*1000000*60*60-minutes*1000000*60-seconds*1000000)) + nanoseconds=$(printf "%.6d" ${nanoseconds}) + microseconds=${nanoseconds:0:3} + # Shorten our string as much as possible + [ "$days" = "0" ] && days= || days="${days}d " + [ "$hours" = "0" ] && hours= || hours="${hours}h " + [ "$minutes" = "0" ] && minutes= || minutes="${minutes}m " + str="${days}${hours}${minutes}${seconds}.${microseconds}s" + printf "[%s]" "$str" 1>&2 +} +# Requires Bash 4.x +export PS0='$(printf "%s" ${EPOCHREALTIME/[^0-9]/} >"$BYOBU_RUN_DIR/timer.$$")' + +case "$BYOBU_DISTRO" in + "Ubuntu") + # Use Ubuntu colors (grey / orange / aubergine) + export PS1="\$(byobu_prompt_runtime) --> \$(byobu_prompt_status)\n\[\e[38;5;245m\]\u\[\e[00m\]@\[\e[38;5;172m\]\h\[\e[00m\]:\[\e[38;5;5m\]\w\[\e[00m\]\$(byobu_prompt_git)\$(byobu_prompt_symbol) " + export GREP_COLORS="ms=01;38;5;202:mc=01;31:sl=:cx=:fn=01;38;5;132:ln=32:bn=32:se=00;38;5;242" + export LESS_TERMCAP_mb=$(printf '\e[01;31m') # enter blinking mode – red + export LESS_TERMCAP_md=$(printf '\e[01;38;5;180m') # enter double-bright mode – bold light orange + export LESS_TERMCAP_me=$(printf '\e[0m') # turn off all appearance modes (mb, md, so, us) + export LESS_TERMCAP_se=$(printf '\e[0m') # leave standout mode + export LESS_TERMCAP_so=$(printf '\e[03;38;5;202m') # enter standout mode – orange background highlight (or italics) + export LESS_TERMCAP_ue=$(printf '\e[0m') # leave underline mode + export LESS_TERMCAP_us=$(printf '\e[04;38;5;139m') # enter underline mode – underline aubergine + # Use Ubuntu themed dircolors + if [ -e "${BYOBU_PREFIX}/share/byobu/profiles/dircolors" ]; then + dircolors "${BYOBU_PREFIX}/share/byobu/profiles/dircolors" > "$BYOBU_RUN_DIR/dircolors" + . "$BYOBU_RUN_DIR/dircolors" + fi + ;; + "Wolfi") + # Use Wolfi colors (pink / purple / blue) + # For reference: https://upload.wikimedia.org/wikipedia/commons/1/15/Xterm_256color_chart.svg + # Convert hex to 256: https://gist.githubusercontent.com/MicahElliott/719710/raw/73d047f0a3ffc35f0655488547e7f24fa3f04ea6/colortrans.py + # Use Wolfi colors (pink=170 / purple=98 / blue=63); flashing error code on previous command non-zero exit + export PS1="\$(byobu_prompt_runtime) --> \$(byobu_prompt_status)\n\[\e[38;5;170m\]\u\[\e[00m\]@\[\e[38;5;98m\]\h\[\e[00m\]:\[\e[38;5;63m\]\w\[\e[00m\]\$(byobu_prompt_git)\$(byobu_prompt_symbol) " + ;; + *) + # Use primary colors (blue / yellow / red ) + export PS1="\$(byobu_prompt_runtime) --> \$(byobu_prompt_status)\n\[\e[38;5;69m\]\u\[\e[00m\]@\[\e[38;5;214m\]\h\[\e[00m\]:\[\e[38;5;167m\]\w\[\e[00m\]\$(byobu_prompt_git)\$(byobu_prompt_symbol) " + ;; +esac diff --git a/usr/share/byobu/status/status b/usr/share/byobu/status/status index b0a28830..35c80bfc 100644 --- a/usr/share/byobu/status/status +++ b/usr/share/byobu/status/status @@ -5,6 +5,7 @@ # and $HOME/.byobu otherwise. # # Copyright (C) 2009-2011 Canonical Ltd. +# Copyright (C) 2023 Dustin Kirkland # # Authors: Dustin Kirkland # @@ -26,12 +27,13 @@ screen_upper_left="color" screen_upper_right="color whoami hostname ip_address menu" screen_lower_left="color logo distro release #arch session" -screen_lower_right="color network #disk_io custom #entropy raid reboot_required updates_available #apport #services #mail users uptime #fan_speed #cpu_temp battery wifi_quality #processes load_average cpu_count cpu_freq memory #swap disk #time_utc date time" +screen_lower_right="color network #disk_io custom #entropy raid reboot_required updates_available #apport #services #mail users uptime #fan_speed #cpu_temp battery wifi_quality #processes #packages load_average cpu_count cpu_freq memory #swap disk #time_utc date time" # Tmux has one status line, with 2 halves for status tmux_left="logo #distro release #arch session" # You can have as many tmux right lines below here, and cycle through them using Shift-F5 -tmux_right="#network #disk_io #custom #entropy raid reboot_required updates_available #apport #services #mail #users uptime #fan_speed #cpu_temp #battery #wifi_quality #processes load_average cpu_count cpu_freq memory #swap disk #whoami #hostname #ip_address #time_utc date time" -#tmux_right="network #disk_io #custom entropy raid reboot_required updates_available #apport #services #mail users uptime fan_speed cpu_temp battery wifi_quality #processes load_average cpu_count cpu_freq memory #swap #disk whoami hostname ip_address #time_utc date time" -#tmux_right="network #disk_io custom #entropy raid reboot_required updates_available #apport #services #mail users uptime #fan_speed #cpu_temp battery wifi_quality #processes load_average cpu_count cpu_freq memory #swap #disk #whoami #hostname ip_address #time_utc date time" -#tmux_right="#network disk_io #custom entropy #raid #reboot_required #updates_available #apport #services #mail #users #uptime fan_speed cpu_temp #battery #wifi_quality #processes #load_average #cpu_count #cpu_freq #memory #swap whoami hostname ip_address #time_utc disk date time" +tmux_right="#network #disk_io #custom #entropy raid reboot_required updates_available #apport #services #mail #users uptime #fan_speed #cpu_temp #battery #wifi_quality #processes #packages load_average cpu_count cpu_freq memory #swap disk #whoami #hostname #ip_address #time_utc date time" +#tmux_right="network disk_io uptime processes packages load_average cpu_count cpu_freq memory disk date time" +#tmux_right="network #disk_io #custom entropy raid reboot_required updates_available #apport #services #mail users uptime fan_speed cpu_temp battery wifi_quality #processes #packages load_average cpu_count cpu_freq memory #swap #disk whoami hostname ip_address #time_utc date time" +#tmux_right="network #disk_io custom #entropy raid reboot_required updates_available #apport #services #mail users uptime #fan_speed #cpu_temp battery wifi_quality #processes #packages load_average cpu_count cpu_freq memory #swap #disk #whoami #hostname ip_address #time_utc date time" +#tmux_right="#network disk_io #custom entropy #raid #reboot_required #updates_available #apport #services #mail #users #uptime fan_speed cpu_temp #battery #wifi_quality #processes #packages #load_average #cpu_count #cpu_freq #memory #swap whoami hostname ip_address #time_utc disk date time" diff --git a/usr/share/man/man1/byobu-prompt.1 b/usr/share/man/man1/byobu-prompt.1 index 1e0e36fd..2ad80c31 100644 --- a/usr/share/man/man1/byobu-prompt.1 +++ b/usr/share/man/man1/byobu-prompt.1 @@ -1,6 +1,6 @@ -.TH byobu-prompt 1 "26 July 2013" byobu "byobu" +.TH byobu-prompt 1 "16 January 2024" byobu "byobu" .SH NAME -byobu-prompt, byobu-enable-prompt, byobu-disable-prompt \- add and remove a nice color prompt to your shell configuration +byobu-prompt, byobu-enable-prompt, byobu-disable-prompt \- add and remove a nice color prompt with a previous command timer to your shell configuration .SH SYNOPSIS \fBbyobu-prompt\fP @@ -11,7 +11,7 @@ byobu-prompt, byobu-enable-prompt, byobu-disable-prompt \- add and remove a nice .SH DESCRIPTION -Byobu provides a special PS1 prompt command, compatible with Bash shells. It will display the previous command's exit code, if it's not zero. It will use 3 separate colors for the local username, hostname, and the current working directory. +Byobu provides a special PS0 and PS1 prompt command, compatible with Bash shells. It will display the previous command's total runtime and exit code, if it's not zero. It will use 3 separate colors for the local username, hostname, and the current working directory. \fBbyobu-enable-prompt\fP will add one line to your \fI~/.bashrc\fP. diff --git a/usr/share/man/man1/byobu.1 b/usr/share/man/man1/byobu.1 index 4e3fc9b8..3923cb39 100644 --- a/usr/share/man/man1/byobu.1 +++ b/usr/share/man/man1/byobu.1 @@ -79,6 +79,8 @@ The background colors of the \fBbyobu\fP status lines can be adjusted by editing \fBnotify_osd\fP \- Send on-screen notification messages to screen's notification buffer +\fBpackages\fP \- total number of packages installed on the system; displayed in the lower bar in yellow text on a white background inside of square brackets, '[xxx]' + \fBprocesses\fP \- total number of processes running on the system; displayed in the lower bar in white text on a dark yellow background with a trailing '&' indicating 'background processes' \fBreboot_required\fP \- symbol present if a reboot is required following a system update; displayed in the lower bar white text on a blue background by the symbol '(R)'; additionally, reboot_required will print '' in white text on a blue background, if Byobu requires you to reload your profile to affect some changes; it will also detect if your system is currently in \fBpowernap\fP(8) state and if so print '.zZ'; if your system is currently performing an \fBunattended-upgrade\fP(1) you will see a white warning sign on a red background.