Terminal multiplexer
https://en.wikipedia.org/wiki/Terminal_multiplexer
Ways to Keep Remote SSH Sessions and Processes Running After Disconnection
5 Ways to Keep Remote SSH Sessions and Processes Running After Disconnection
Tilix
A tiling terminal emulator for Linux using GTK+ 3
- https://gnunn1.github.io/tilix-web/ and Ubuntu PPA for the latest version.
- Zoom in by Ctrl + Shift + Plus sign.
- Change color them by using 'profile.
- Tilix: The Almost Perfect Tiling GTK+ 3 Terminal Emulator. You can save and load terminal groups, so you can easily pick up from where you left off, using the exact same terminal layout. My testing is it only saves the layout but not the directories in each pane.
- Not quite understand the advantage of it compared to terminator
Terminator
- 20 Useful Terminal Emulators for Linux
- https://wiki.archlinux.org/index.php/Terminator (include some keyboard shortcuts)
- Ctrl + Shift+ O Split terminals horizontally
- Ctrl + Shift+ E Split terminals vertically
- mouse can be used to resize split screens and switch to each screen
- Change the default window size
- Method 1: it can only change the size. nano ~/.config/terminator/config
- Method 2: it can change both the size and geometry position. --geometry parameter.
- Change the font size. I pick 'Ubuntu Mono Regular' 14.
- Keyboard shortcuts
- Shift + Ctrl + p/n: switch to the previous/next view
- Ctrl -: decrease font
- Shift Ctrl +: increase font
- You can take a screenshot to record the directories for all split screens.
- Right click to open the Preferences. We can change the number of scroll back there to infinity.
GNU screen
- https://www.howtogeek.com/662422/how-to-use-linuxs-screen-command/
- https://www.rackaid.com/blog/linux-screen-tutorial-and-how-to/
- http://unix.stackexchange.com/questions/7453/how-to-split-the-terminal-into-more-than-one-view
How to do it...
- Run screen command first (run sudo apt-get install screen if necessary). You are now inside of a window within screen. This functions just like a normal shell except for a few special characters.
- Create screen windows: Ctrl + a, then c. To close a screen window: exit. Once you close all screen windows, you shall see a message [screen is terminating] on the terminal.
- View a list of open windows: Ctrl + a, then ".
- Switch between windows: Ctrl + a and n for the next window and Ctrl +a and p for the previous window.
- Attaching to and detaching screens: To detach (save) from the current screen session, Ctrl +a, and d (these keyboard shortcuts won't affect current execution). This will drop you into your shell. This is useful when you need to run a time-consuming job or your connection is dropped. To attach to an existing screen, use:
screen -r -d
- Split screen:
- To split the screen horizontally, Ctrl +a and S (capital).
- To unsplit the screen, Ctrl +a and Q (capital).
- To switch from one to the other: Ctrl +a and TAB.
- Note: After splitting, you need to go into the new region and start a new session via Ctrl + a then c before you can use that area.
tmux*
- https://github.com/tmux/tmux/wiki
- For the prefix key, ctrl+a is easier than "ctrl+b" to type. F1...F4 works too but F1 will have a conflict with Gnome Terminal.
- tmux – A Powerful Terminal Multiplexer For Heavy Command-Line Linux User
- tmux vs. GNU Screen
- Byobu vs. GNU Screen vs. tmux — usefulness and transferability of skills
- 4 ways to be more productive, using RStudio's terminal
- If byobu is installed, then tmux command will start byobu (a modified tmux).
- Byobu changed the text color of ls output while tmux does not (Ubuntu 18.04).
- Change the default prefix key ("ctrl+b"). Note after a change on ~/.tmux.conf, we need to
- run tmux source-file ~/.tmux.conf
- exit the session and enter again for the change to take effect.
- Plugin manager
- Prefix highlight in the status bar.
- tmux is available in biowulf/helix
- In macOS/iTerm2, we need to open Prefs > General and check the option "Application in Terminal may access clipboard" for copy/paste to work using mouse/touchpad.
Features:
- Split screens
- Don't worry about connection broken (if used remotely) or computer shutdown unexpectedly (it used locally)
- Remember the session including split screens even computer shutdown for any reason. Useful for running a long job (wget, rsync, et al).
Most important keyboard shortcuts:
Keyboard | Action |
---|---|
(ctrl+b), " | split the pane horizontally |
(ctrl+b), up/down arrow key | move around panes |
(ctrl+b), d
exit |
detach
quit a session |
$ tmux ls | list sessions |
$ tmux attach -t 0 | re-attach session 0 |
(ctrl+b), :
(ctrl + ⌥ ) resize-pane -U 10 resize-pane -D 10 |
resize pane
resize the current pane up (works for all four arrows) increase pane height by 10 decrease pane height by 10 |
(ctrl+b), [
'q' to quit |
scrollback (Enter copy model) |
(ctrl+b), [
Space Enter (ctrl+b), ] $ tmux save-buffer foo.txt |
copy mode in vi style keybindings
Use the arrow key to go to the top first. Select the top of the text Use the arrow key to go to the bottom. Select the Bottom of the text and copy Paste (works in tmux window only. To get the tmux buffer in system clipboard, see here) Save the buffer to a file |
My ~/.tmux.conf file
set -g prefix C-a # change prefix from (C-b) to (C-a) unbind C-b bind C-a send-prefix set -g mouse on # use mouse to scroll and switch panes set-window-option -g mode-keys vi # for copy-paste
Byobu
Byobu is a GPLv3 open source text-based window manager and terminal multiplexer. It appeared at Think inside the box.
Resources:
- How To Install and Use Byobu for Terminal Management on Ubuntu 16.04
- https://help.ubuntu.com/community/Byobu
- Cheat sheet: PDF, Png format
Most important keyboard shortcuts:
Keyboard | Action |
---|---|
Shift + F2 | split the pane horizontally |
Shift + up/down arrow key | move around panes |
Shift + Alt + up/down key | resize panes |
F6 | detach |
Summary:
- Mouse is useless
- When used with iTerm on Mac, some keys may have a different behaviors.
- If we want to use the 'byobu' command remotely, we first run a ssh connection to a remote computer. Then we type 'byobu' to start a new session. After some operations, we can type 'exit' to quit the session or use "F6" to detach the session and return to a normal ssh connection.
- Kill a frozen session by byobu kill-session -t 1 where "1" is the session number obtained by byobu list-session
- Cf Session (a complete new terminal), Windows (count from 0, see the status bar), Split (also called pane)
- Some all keyboard shotcuts rely on the Fx keys. It is not easy or may fail to do that on Mac (needs to hold the 'fn' key) keyboard on a ssh connection.
- F1 to go to help, e.g. key bindings. ESC to go back.
- Shift-F1 will open a new window (check the status bar for a new number). 'q' to quit the Help Window.
- Use Alt + Left/Right to move focus among windows
- F2 - create a new window. F3/F4 (or Alt-Left/Alt-Right) - move to previous/next window
- Ctrl-Shift-F2 - create a new session (not work on Mac keyboard?)
- Alt-Up/Down to move between sessions
- Split screen
- Horizontal (up and down): Shift + F2.
- Vertical: Ctrl + F2.
- Again you cannot use mouse to move the focus:(
- Shift + Left/Right/Up/Down to move focus among splits
- 'exit' to close a split
- Shift-F6 to kill a split
- Shift + Alt + arrow keys: resize split screen
- F5 reload profile, refresh status
- Shift-F5 to toggle some presets in the status lines
- F9 - change configuration (will run 'exit' on macOS)
- Legend of color-coded values at the bottom of byobu
- https://linux.die.net/man/1/byobu. Yellow background is load average. Light purple background is related to disk (no work on mac).
- http://manpages.ubuntu.com/manpages/cosmic/en/man1/tmux.1.html#options
- $HOME/.byobu/status file most related to status
- F6 Detach session and then log out (type 'byobu' to connect again). That is, even you closed a byobu window, it is still in the background. We can test it by using 'htop' or 'ping' commands.
- Type 'ps -ef | grep byobu' in the ssh connection to find out detached byobu sessions
- F7 Enter scrollback mode
- Move the cursor to the start of the text you want to copy, hit "Space"
- Move the cursor to the end of the text you want to copy and hit "Enter"
- To paste text, open a text editor and hit Alt + Insert or ctrl-a-]. The first time to use ctrl-a, we need to choose either Screen or Emacs mode (I choose Screen). Use byobu-ctrl-a to reconfigure change this selection. See Ubuntu page.
- Alt-PageUp/PageDown - enter and move through scrollback (fn+Alt+Up/Down on Mac keyboard)
- F8 Rename the current window
- Shift-F8 Rename the current session (not work on Mac keyboard)
- F11
- Shift-F11 Zoom in/out a split
- Alt-F11 Break a split to a full window
- F12
- Shift-F12 Toggle on/off Byobu's keybindings (say, Byobu's keybindings conflict with some other program)
- Alt-F12 Toggle on/off Byobu's mouse support (move around splits and resize split size). It becomes more complex when we want to select text.