byobu(1)
๐ byobu(1) ๐
okay so bestie, welcome to the byobu manual page โ it's byobu(1) and it's literally the blueprint for making your terminal look like main character energy. No cap, we're keeping every single fact. Periodt. โจ
โจ NAME โจ
byobu โ wrapper script for seeding a user's byobu configuration and launching a text based window manager (either screen or tmux)
๐ SYNOPSIS ๐
byobu [options]
byobu-screen [screen options]
byobu-tmux [tmux options]
Options to byobu are simply passed through screen(1) or tmux(1).
๐ธ DESCRIPTION ๐ธ
byobu is a script that launches a text based window manager (either screen(1) or tmux(1)) in the byobu configuration. This enables the display of system information and status notifications within two lines at the bottom of the screen session. It also enables multiple tabbed terminal sessions, accessible through simple keystrokes. Iconic, honestly.
byobu currently defaults to using tmux(1) (if present) as the backend, however, this can be overridden with the byobu-select-backend(1) utility. Lowkey important.
Note that BYOBU_CONFIG_DIR=$XDG_CONFIG_HOME/byobu if defined, and $HOME/.byobu otherwise.
๐ BACKGROUND COLORS ๐
The background colors of the byobu status lines can be adjusted by editing the files $HOME/.byobu/color (for byobu-screen) and $HOME/.byobu/color.tmux (for byobu-tmux). The command Ctrl+Shift+F5 will change the background to a randomly selected color when running in byobu-tmux mode. Simply remove those files to return to the default color configuration. Cute, right? ๐
๐ STATUS NOTIFICATIONS ๐
byobu supports a number of unique and interesting status notifications across the lowest two lines in the screen. Each status notification item is independently configurable, enabled and disabled by the configuration utility. The guide below helps identify each status item (in alphabetical order):
apportโ symbol displayed if there are pending crash reports;{!}symbol displayed on the lower bar toward the left, in black on an orange background.archโ system architecture; displayed on the lower bar toward the left, in the default text color on the default background color.batteryโ battery information; display on the lower bar toward the right;-indicates discharging,+indicates charging,=indicates fully charged; when charging or discharging, the current battery capacity as a percentage is displayed; the colours green, yellow, and red are used to give further indication of the battery's charge state; you may override the detected battery by settingBATTERY=/proc/acpi/battery/BAT0in$BYOBU_CONFIG_DIR/statusrc.cpu_countโ the number of cpu's or cores on the system; displayed in the lower bar toward the right in the default text color on the default background, followed by a trailing'x'.cpu_freqโ the current frequency of the cpu in GHz; displayed in the lower bar toward the right in white text on a light blue background.cpu_tempโ the cpu temperature in Celsius (default) or Fahrenheit, configureTEMP=ForTEMP=Cin$BYOBU_CONFIG_DIR/statusrc; displayed in the lower bar toward the right in yellow text on a black background; you may override the detected cpu temperature device by settingMONITORED_TEMP=/proc/acpi/whateverin$BYOBU_CONFIG_DIR/statusrc.customโ user defined custom scripts; must be executable programs of any kind in$BYOBU_CONFIG_DIR/bin; must be namedN_NAME, whereNis the frequency in seconds to refresh the status indicator, andNAMEis the name of the script;Nshould not be less than 5 seconds; the script should echo a small amount of text to standard out, standard error is discarded; the indicator will be displayed in the lower panel, in default colors, unless you manually specify the colors in your script's output;
BEWARE, cpu-intensive custom scripts may impact your overall system performance and could upset your system administrator! In fact, you can easily copy and modify any status script usually found in/usr/lib/byobu/*to your local$HOME/.byobu/directory.
Example: $BYOBU_CONFIG_DIR/bin/1000_uname
#!/bin/sh
printf "\005{= bw}%s\005{-}" "$(uname -r)"
dateโ the system date inYYYY-MM-DDformat, or you can set this to any validstrftime(3)you like in$BYOBU_CONFIG_DIR/datetime; displayed in the lower on the far right in the default text color on the default background.diskโ total disk space available and total used on/directory; displayed in the lower bar on the far right in white text on a light purple background; override the default directory by specifying an alternate mount point withMONITORED_DISK=/whereverin$BYOBU_CONFIG_DIR/statusrc.disk_ioโ instantaneous read/write througput in kB/s or MB/s over the last 3 seconds; displayed in the lower bar toward the right in white text on a light purple background with a leading'<'sign indicating'read speed'and'>'sign indicating'write speed'; override the default monitored disk by specifying an alternate device withMONITORED_DISK=/dev/sdb, and override the defaultDISK_IO_THRESHOLD=50(kB/s) in$BYOBU_CONFIG_DIR/statusrc.distroโ OS/distribution name of the release running on the current system as reported bylsb_release(1)or/etc/issue; displayed in the lower bar in bold black text toward the left on a grey background; you may override the detected release withDISTRO=Whateverin$BYOBU_CONFIG_DIR/statusrc.entropyโ a count of the system's current entropy in bytes; displayed in the lower bar toward the right in yellow text on a dark grey background; there is a leading'e'to indicate'entropy'.raidโ note very prominently if there is a RAID failure detected, in red blinking text on a white background; the term'RAID'notes that there is something wrong with the RAID, and if there is a rebuild/resync in progress, the percent complete is also shown.fan_speedโ cpu or system fan speed as reported by lm-sensors; displayed in the lower bar toward the right in black text on a grey background; there is a trailing'rpm'for units; you may override the detected fan by settingFAN=/sys/path/to/your/fan1_inputin$BYOBU_CONFIG_DIR/statusrc.hostnameโ the hostname of the system; displayed in the upper bar on the far right in bold black text on a grey background; there is a leading'@'symbol if the username status is also enabled.ip_addressโ the IPv4 address of the system in dotted decimal form; displayed in the upper bar on the far right in bold black text on a grey background; you can override and display your IPv6 address by setting'IPV6=1', and you can show your external ip address by setting'IP_EXTERNAL=1'in$BYOBU_CONFIG_DIR/statusrc.ip_address4โ the IPv4 address of the system in dotted decimal form; displayed in the upper bar on the far right in bold black text on a grey background; you can show your external ip address by setting'IP_EXTERNAL=1'in$BYOBU_CONFIG_DIR/statusrc.ip_address6โ the IPv6 address of the system; displayed in the upper bar on the far right in bold black text on a grey background; you can show your external ip address by setting'IP_EXTERNAL=1'in$BYOBU_CONFIG_DIR/statusrc.load_averageโ the system load average over the last 1 minute; displayed in the lower bar toward the right in black text on a yellow background; setLOAD_AVERAGES=3in$BYOBU_CONFIG_DIR/statusrcto display all three intervals (1, 5, and 15 minutes) space-separated.logoโ an approximation of the current operating system's logo; displayed in the lower bar on the far left; you may customize this logo by setting a chosen logo withLOGO=:-Din$BYOBU_CONFIG_DIR/statusrc.mailโ system mail for the current user; the letter'[M]'is displayed in the lower bar toward the left in black text on a grey background.memoryโ total memory available and used percentage in the system; displayed in the lower bar toward the right in white text on a green background.menuโ a simple indicator directing new users to use the F9 keybinding to access the byobu menu.networkโ instantaneous upload/download bandwidth in[GMk]bpsover the last 3 seconds; nothing is displayed if traffic is 0; displayed in the lower bar toward the left in white text on a purple background with a leading'^'sign indicating'up'and'v'sign indicating'down'; override the default interface by specifying an alternate interface withMONITORED_NETWORK=eth1, and override the default units (bits) withNETWORK_UNITS=bytes, and override the defaultNETWORK_THRESHOLD=20(kbps) in$BYOBU_CONFIG_DIR/statusrc.notify_osdโ Send on-screen notification messages to screen's notification buffer.packagesโ 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]'.processesโ 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'.reboot_requiredโ 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_requiredwill print'<F5>'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 inpowernap(8)state and if so print'.zZ'; if your system is currently performing anunattended-upgrade(1)you will see a white warning sign on a red background.releaseโ OS/distribution name of the release running on the current system as reported bylsb_release(1)or/etc/issue; displayed in the lower bar in bold black text toward the left on a grey background; you may override the detected release withRELEASE=Whateverin$BYOBU_CONFIG_DIR/statusrc; you may also abbreviate the release string toNcharacters by settingRELEASE_ABBREVIATED=Nin$BYOBU_CONFIG_DIR/statusrc.servicesโ users can configure a list of services to monitor, define theSERVICESvariable in$BYOBU_CONFIG_DIR/statusrc, a whitespace separated of services, each service should include the init name of the service, then a pipe, and then an abbreviated name or symbol to display when running (e.g.SERVICES="ssh|ssh apache2|http"); displayed in the lower bar toward the center in cyan on a white background.sessionโ byobu session name (only supported inbyobu-tmux(1)); displayed in the lower bar on the left in underlined black text on a white background.swapโ total swap space and total used as a percentage of the total available; displayed in the lower bar toward the right in black text on a light green background with a trailing'%'sign.timeโ the system time inHH:MM:SSformat (by default), or you can set this to any validstrftime(3)you like in$BYOBU_CONFIG_DIR/datetime; displayed in the lower bar on the far right in the default text and default background colors.time_binaryโ bestie this one is for the hard core geek only ๐ it's your local system time but in binary. It needs UTF-8 support in a VERY recent version of GNU Screen, no cap. Lives in the lower bar, far right, in the default text and background colors.time_utcโ the system time in UTC, formattedHH:MM. Lower bar, far right, dark text on a light background. cute and punctual โจupdates_availableโ how many updates your system has waiting. Lower bar, toward the right, white text on a red background with a trailing!sign. And if any of those updates are marked security updates? Then you get a whole two trailing exclamation points โ!!๐ญ like the system is yelling at you.uptimeโ total system uptime since the last boot. Lower bar, toward the right, blue text on a grey background ๐ฆusersโ the number of remote users logged in viasshd. It's empty if 0 users (iconic, honestly). Lower bar, toward the right, red text on a grey background with a trailing#sign. Oh and if you setUSERS_DISTINCT=1, it counts the number of distinct users logged in instead โ rather than open ssh sessions. iykyk ๐whoamiโ the name of the user who owns the screen session. Upper bar, toward the far right, bold black text on a grey background. main character energy fr fr ๐wifi_qualityโ the connection rate and signal quality of your wifi. Lower bar, toward the right, black text on a cyan background. The connection rate comes inMb/sand the signal quality is a percentage with a trailing%. Wanna monitor a different interface? Override the default by specifying an alternate interface withMONITORED_NETWORK=wlan0in$BYOBU_CONFIG_DIR/statusrc๐ซถ
๐ STATUS ICONS ๐
okay so byobu shows its status indicators using different icons depending on your terminal encoding, and the way it does this is lowkey so smart:
- With
byobu-tmux(1)and UTF-8 encoding, you get the pretty Unicode symbols ๐ - Otherwise you get ASCII-only icons โ like when you're on
byobu-screen(1)or a non-UTF-8 terminal.
๐ Unicode Icons
(displayed when BYOBU_BACKEND=tmux and BYOBU_CHARMAP=UTF-8)
updates_available:!= regular updates availableโ= distribution upgrades availableโผ= security updates available
reboot_required:โณ= system reboot requiredโ= unattended upgrade in progress๐น= kernel is live-patched
disk_io:โ= disk read activityโธ= disk write activity
network:โด= network upload activityโพ= network download activity
mail:โ= new mail waitingsession:ใฃ= session indicatortrash:โธ= items in trash
๐ธ ASCII Icons
(displayed with screen backend or non-UTF-8 terminals)
updates_available:!= regular updates/!\= upgrades!!= security updates
reboot_required:(R)= reboot required/!\= upgrade running[/]= live-patched
disk_io:<= read>= write
network:^= uploadv= download
mail:[M]= new mailsession:|= session indicatortrash:T= trash
Wanna see the detailed explanation of all your active status indicators? Press Ctrl+a $ while byobu is running. obsessed with this feature ngl ๐ฅ
๐ SESSIONS ๐
Byobu names screen sessions "byobu" โ if you don't specify anything, that's the default, periodt.
Wanna hide a session from byobu-select-session(1)? Just prepend a . to the beginning of the session name, like:
byobu -S .hidden
Now here's the big tea with byobu-tmux(1) โ โ when you run byobu to attach to an already-running session, it does not, by default, reattach to that exact session object. Instead it creates a new session in the same tmux session group as the existing one. That means they share the same set of windows and panes, while giving each attaching terminal its own independent current-window focus and scrollback view. So independent focus, shared windows โ the way that works is genuinely so clever.
tmux names each member of the group by appending "-2", "-3", and so on to the original session's name. And the "session" status indicator (see STATUS NOTIFICATIONS above) counts every member of the group, not just one. So heads up:
- Opening and detaching from byobu repeatedly is expected to grow this count ๐
- Switching between group members with the window-switching keybindings will not show different window content, because the windows are shared โ yeah, that's the whole point bestie
- Every session in the group other than the original has tmux's
destroy-unattachedoption set, so it's automatically destroyed as soon as you switch away from it โ which is exactly why the indicator eventually settles back down on its own ๐ง
Now, if you want byobu to reattach to the exact same session instead of creating a new grouped one on every single invocation, just create an empty file at $BYOBU_CONFIG_DIR/.reuse-session:
touch $BYOBU_CONFIG_DIR/.reuse-session
๐ฆ WINDOWS ๐ฆ
Every open window in the screen session shows up in the upper bar, toward the far left. They're numbered, and they include indicators about activity in the window (see "activity" in screen(1) and tmux(1) for the symbol definitions). The current active window is highlighted by inverting the background/text compared to the rest of the window bar. it's giving spotlight โจ
You can create a whole list of windows to launch at startup in $BYOBU_CONFIG_DIR/windows and $BYOBU_CONFIG_DIR/windows.tmux. These files use the exact same syntax as ~/.screenrc and ~/.tmuxrc โ each line specifies a window, as described in screen(1) or tmux(1).
You can also launch Byobu with unique window sets ๐ Store them as $BYOBU_CONFIG_DIR/windows.[NAME] and $BYOBU_CONFIG_DIR/windows.tmux.[NAME], then launch Byobu with the environment variable BYOBU_WINDOWS=NAME.
For example:
$ cat $BYOBU_CONFIG_DIR/windows.ssh_sessions
screen -t localhost bash
screen -t aussie ssh root@aussie
screen -t beagle ssh root@beagle
screen -t collie ssh root@collie
Then:
$ BYOBU_WINDOWS=ssh_sessions byobu
For example:
$ cat $BYOBU_CONFIG_DIR/windows.tmux.split4
new-session 'bash' ;
new-window -n term1 ;
new-window -n term2 ;
new-window -n ssh ssh 10.9.8.7 ;
split-window ;
split-window ;
split-window ;
select-layout tiled ;
select-pane -t 0
Then:
$ BYOBU_WINDOWS=split4 byobu
๐ UNITS OF MEASURE ๐
okay so this is one of those details that matters, bestie:
byobu uses binary for capacity measurements of KB, MB, GB, and TB. That means multiples of 1024 rather than multiples of 1000, in accordance with JEDEC Standard 100B.01 for memory capacity measurements. See:
But byobu uses decimal for measurements of network data transfer โ meaning multiples of 1000, rather than 1024. See:
different units for different vibes, no cap ๐
โญ KEYBINDINGS โญ
byobu keybindings can be user defined in /usr/share/byobu/keybindings/ (or within .screenrc if byobu-export was used). The common key bindings are:
- F2 โ Create a new window
- F3 โ Move to previous window
- F4 โ Move to next window
- F5 โ Reload profile
- F6 โ Detach from this session
- F7 โ Enter copy/scrollback mode
- F8 โ Re-title a window
- F9 โ Configuration Menu
- F12 โ Lock this terminal
- shift-F2 โ Split the screen horizontally
- ctrl-F2 โ Split the screen vertically
- shift-F3 โ Shift the focus to the previous split region
- shift-F4 โ Shift the focus to the next split region
- shift-F5 โ Join all splits
- ctrl-F6 โ Remove this split
- ctrl-F5 โ Reconnect GPG and SSH sockets
- shift-F6 โ Detach, but do not logout
- alt-pgup โ Enter scrollback mode
- alt-pgdn โ Enter scrollback mode
- Ctrl+a $ โ show detailed status
- Ctrl+a R โ Reload profile
- Ctrl+a ! โ Toggle key bindings on and off (screen backend)
- Shift-F12 โ Toggle byobu F-key bindings on and off (tmux backend)
- Ctrl+a k โ Kill the current window
- Ctrl+a ~ โ Save the current window's scrollback buffer
๐ SCROLLBACK, COPY, PASTE MODES ๐
Every window in Byobu has up to 10,000 lines of scrollback history โ yes you read that right, ten thousand ๐ญ โ and you can enter and navigate it using the alt-pgup and alt-pgdn keys.
Exit scrollback mode by hitting enter.
You can also easily copy and paste text from scrollback mode ๐ซถ Here's the routine:
- Enter scrollback using alt-pgup or alt-pgdn
- Press the spacebar to start highlighting text
- Use up/down/left/right/pgup/pgdn to select the text
- Press enter to copy the text
Then you can paste it using alt-insert or ctrl-a-]. ate ๐
๐ BUGS ๐
okay bestie, bug storytime, but make it useful because these are real and they will absolutely find you ๐
- old GNU Screen needs a tiny patch for Byobu colors โ For Byobu colors to work properly, older versions of GNU Screen require a
1-linepatch to adjustMAX_WINMSG_RENDinscreen.c. The change is in GNU Screen's upstream source control system as of2010-01-26, but GNU Screen has not released a new upstream version in several years. You can disable colors entirely by settingMONOCHROME=1in$BYOBU_CONFIG_DIR/statusrc. For more information, see: - PuTTY F2/F3/F4 keys acting up โ PuTTY users have reported that the F2, F3, and F4 shortcut keys are not working properly. PuTTY sends the same escape sequences as the linux console for F1-F4 by default. You can fix this problem in the PuTTY config,
Terminal -> Keyboard -> Function keys: Xterm R6. See:http://www.mail-archive.com/screen-users@gnu.org/msg01525.html - PuTTY + UTF-8 fixes status refresh โ PuTTY users should configure enable UTF-8 characters in order to fix status refresh issues. You can fix this problem in the PuTTY configuration,
Window -> Translation: selectUTF-8. - do NOT resize PuTTY to one character tall โ PuTTY users should avoid resizing their window to one character tall, as this can sometimes crash
byobu-screen. ๐ญ - Mac OSX terminal flashing text โ Apple Mac OSX terminal users have reported
'flashing text'. You can fix this in the advanced settings of the terminal application, with'Declare Terminal As: xterm-color'. - Mac keyboard users may need vt100 โ Apple Mac keyboard users may need to specify a
vt100terminal by adding this to your OSX profile, in order to get Byobu's function keys and colors to work:
alias ssh='TERM=vt100 ssh'
- URxvt and Ctrl+Shift+F-key combos โ URxvt users have reported that
Ctrl+Shift+F-keycombinations do not work by default, because URxvt does not send the expected escape sequences for those key chords. You can fix this by adding the following to~/.Xresources(then runningxrdb -merge ~/.Xresources):
URxvt.keysym.S-C-F1: string:\033[11@
URxvt.keysym.S-C-F2: string:\033[12@
URxvt.keysym.S-C-F3: string:\033[13@
URxvt.keysym.S-C-F4: string:\033[14@
URxvt.keysym.S-C-F5: string:\033[15@
URxvt.keysym.S-C-F6: string:\033[17@
URxvt.keysym.S-C-F7: string:\033[18@
URxvt.keysym.S-C-F8: string:\033[19@
URxvt.keysym.S-C-F9: string:\033[20@
URxvt.keysym.S-C-F10: string:\033[21@
URxvt.keysym.S-C-F11: string:\033[23@
URxvt.keysym.S-C-F12: string:\033[24@
See: https://github.com/dustinkirkland/byobu/issues/108
- non-UTF-8 locale? add defutf8 off โ Users of a non-UTF-8 locale (such as
cs_CZcharsetISO-8859-2), may need to add"defutf8 off"to~/.screenrc, if some characters are rendering as"?". - PS1 goes in .bashrc, not .profile โ Users who customize their
PS1prompt need to put this setting in~/.bashrc, rather than~/.profile, in order for it to work correctly with Byobu. - sudo(8)? use -H, bestie โ If you run
byobu(1)undersudo(8), you must use the-Hoption, such that the user's$HOMEdirectory environment variable is set properly. Otherwise,byobu(1)will create a bunch of directories in the$SUDO_USER's$HOME, but will be owned byroot. To prevent this from happening,byobu(1)will simply refuse to run if$USERdoes not own$HOME. - ulimit(3) values must be suitable โ Byobu requires a suitable
ulimit(3)values to run. If you get an error at startup saying,'pipe: too many open files', then check yourulimit -avalues, as your"open files"or"max user processes"are too low. In this case, you will probably need to run simplescreen(1)
๐ SEE ALSO ๐
like, go read these next, they're the friends of this manpage:
screen(1)byobu-config(1)byobu-export(1)byobu-status(1)byobu-status-detail(1)byobu-enable(1)byobu-launch(1)byobu-select-backend(1)tmux(1)https://byobu.org
๐ AUTHOR ๐
This manpage and the utility were written by Dustin Kirkland <kirkland@byobu.org> for Ubuntu systems (but may be used by others). Permission is granted to copy, distribute and/or modify this document and the utility under the terms of the GNU General Public License, Version 3 published by the Free Software Foundation.
The complete text of the GNU General Public License can be found in /usr/share/common-licenses/GPL on Debian/Ubuntu systems, or in /usr/share/doc/fedora-release-*/GPL on Fedora systems, or on the web at http://www.gnu.org/licenses/gpl.txt.
that's the whole byobu(1) vibe โ source: byobu, version: byobu(1), dated 19 June 2009. bye bestie, go be a terminal main character ๐
โจ
๐ฆ where this page comes from
- ubuntu stonking: byobu 7.20-0ubuntu1 ยท GPL-3.0-only
- ๐ girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms