Difference between revisions of "Linux multi window terminal Screen and Tmux"
Line 182: | Line 182: | ||
#hardstatus string '%{= kG}%-Lw%{= kW}%50> %n%f* %t%{= kG}%+Lw%< %{= kG}%-=%c:%s%{-}' | #hardstatus string '%{= kG}%-Lw%{= kW}%50> %n%f* %t%{= kG}%+Lw%< %{= kG}%-=%c:%s%{-}' | ||
hardstatus string '%{= kG}[ %{G}%H %{g}][%= %{= kw}%?%-Lw%?%{r}(%{W}%n*%f%t%?(%u)%?%{r})%{w}%?%+Lw%?%?%= %{g}][%{B} %m-%d %{W}%c %{g}]' | hardstatus string '%{= kG}[ %{G}%H %{g}][%= %{= kw}%?%-Lw%?%{r}(%{W}%n*%f%t%?(%u)%?%{r})%{w}%?%+Lw%?%?%= %{g}][%{B} %m-%d %{W}%c %{g}]' | ||
= Install Tmux = | |||
sudo apt-get install tmux | |||
== Key terms and it's logic == | |||
It’s tmux, a so-called terminal multiplexer. Simply speaking, tmux acts as a window manager within your terminal1 and allows you to create multiple windows and panes within a single terminal window. Within one terminal window you can open multiple windows and split-views (called “panes” in tmux lingo). Each pane will contain its own, independently running terminal instance. This allows you to have multiple terminal commands and applications running visually next to each other without the need to open multiple terminal emulator windows. | |||
== Useful key bindings == | |||
C^b c -create a window aka new virtual desktop, it creates a full size window on top of your panes | |||
C^b " -split a pane horizontly | |||
C^b % -split a pane vertically | |||
C^d -cloase a pane, also type ''exit'' | |||
C^b up,down,left,right arrow -move to neighbouring pane | |||
C^b d -detach the current session | |||
C^D D -gives you a choice what session you wish to detach | |||
Commands | |||
tmux new -s database #creates a new session named ''database'' | |||
tmux rename-session -t 0 database | |||
tmux ls #lists all detached sessions | |||
tmux attach -t 0 #attach to terminal 0 session | |||
= References = | = References = | ||
*[https://www.gnu.org/software/screen/manual/screen.html User Guide] HTML one page | *[https://www.gnu.org/software/screen/manual/screen.html User Guide] HTML one page | ||
*[https://tmux.github.io/ Tmux] Official website |
Revision as of 14:28, 1 September 2016
Screen allows for multi window connection using a single ssh session. It also allows to detach from the session screen while still running a remote session.
Install Screen
sudo apt-get install screen
Key terms
- window -it's a separate window that you can switch between
- region -your terminal screen can be divided in regions where each can hold multiple windows
Useful key bindings
C^a c -create new prompt C^a tab -move to a next window C^a | -split vertically C^a S -split horizontly C^a \ -kill all windows, terminate any ssh sessions and exit GNU Screen program
Key | Action | Notes |
---|---|---|
Ctrl+a c | new window | |
Ctrl+a n | next window | I bind F12 to this |
Ctrl+a p | previous window | I bind F11 to this |
Ctrl+a " | select window from list | I have window list in the status line |
Ctrl+a Ctrl+a | previous window viewed | |
Ctrl+a S | split terminal horizontally into regions | Ctrl+a c to create new window there |
split terminal vertically into regions | Requires screen >= 4.1 | |
Ctrl+a :resize | resize region | |
Ctrl+a :fit | fit screen size to new terminal size | Ctrl+a F is the same. Do after resizing xterm |
Ctrl+a :remove | remove region | Ctrl+a X is the same |
Ctrl+a tab | Move to next region | |
Ctrl+a d | detach screen from terminal | Start screen with -r option to reattach |
Ctrl+a A | set window title | |
Ctrl+a x | lock session | Enter user password to unlock |
Ctrl+a [ | enter scrollback/copy mode | Enter to start and end copy region. Ctrl+a ] to leave this mode |
Ctrl+a ] | paste buffer | Supports pasting between windows |
Ctrl+a > | write paste buffer to file | useful for copying between screens |
Ctrl+a < | read paste buffer from file | useful for pasting between screens |
Ctrl+a ? | show key bindings/command names | Note unbound commands only in man page |
Ctrl+a : | goto screen command prompt | up shows last command entered |
Scroll back - a copy mode
In GNU Screen press Ctrl + a + [
or C^a C^ESC
to enter Copy Mode, then scroll up/down using keys j or k. Below are some other navigation keys:
h - Move the cursor left by one character j - Move the cursor down by one line k - Move the cursor up by one line l - Move the cursor right by one character 0 - Move to the beginning of the current line $ - Move to the end of the current line. G - Moves to the specified line (defaults to the end of the buffer). C-u - Scrolls a half page up. C-b - Scrolls a full page up. C-d - Scrolls a half page down. C-f - Scrolls the full page down.
Define scrollback buffer size start screen with the following key (5000 lines in this example):
screen -h 5000
Update: You can use activate copy mode of GNU Screen also by Ctrl + Esc that might be more useful than Ctrl + a + [ shortcut (thanks to Yu-Jie Lin for this tip).
Custom configuration
By default the config is kept in ~/.screenrc
file but using -c option we can pass a custom config
~$ screen -c screen-4regions.screen
Example of a config file:
~$ cat screen-4regions.screen # Region 0 screen -t mail1-queue #creates new terminal/prompt select 0 #select window0 stuff "echo Window0^M" #echo a string between quotes, ^M translates to EOL means enter-return key stuff "sshpass -p 'password' ssh -o PubkeyAuthentication=no root@example.com^M" #ssh interactively split #split horizontally split -v #split vertically # Region 1 select 1 focus #get focus on a selected region screen -t mail2-queue sshpass -p 'password' ssh -o PubkeyAuthentication=no root@example.com #create a new terminal/prompt -t mail2-queue in the focus window and #executes the command stuff "echo Window1^M" # Region 2 select 2 focus screen -t mail1 stuff "echo Window2^M" split -v # Region 3 select 3 focus screen -t mail2 stuff "echo Window3^M" altscreen on term screen-256color bind ',' prev bind '.' next # #change the hardstatus settings to give an window list at the bottom of the #screen, with the time and date and with the current window highlighted hardstatus alwayslastline #hardstatus string '%{= kG}%-Lw%{= kW}%50> %n%f* %t%{= kG}%+Lw%< %{= kG}%-=%c:%s%{-}' hardstatus string '%{= kG}[ %{G}%H %{g}][%= %{= kw}%?%-Lw%?%{r}(%{W}%n*%f%t%?(%u)%?%{r})%{w}%?%+Lw%?%?%= %{g}][%{B} %m-%d %{W}%c %{g}]'
Install Tmux
sudo apt-get install tmux
Key terms and it's logic
It’s tmux, a so-called terminal multiplexer. Simply speaking, tmux acts as a window manager within your terminal1 and allows you to create multiple windows and panes within a single terminal window. Within one terminal window you can open multiple windows and split-views (called “panes” in tmux lingo). Each pane will contain its own, independently running terminal instance. This allows you to have multiple terminal commands and applications running visually next to each other without the need to open multiple terminal emulator windows.
Useful key bindings
C^b c -create a window aka new virtual desktop, it creates a full size window on top of your panes C^b " -split a pane horizontly C^b % -split a pane vertically C^d -cloase a pane, also type exit C^b up,down,left,right arrow -move to neighbouring pane C^b d -detach the current session C^D D -gives you a choice what session you wish to detach
Commands
tmux new -s database #creates a new session named database tmux rename-session -t 0 database tmux ls #lists all detached sessions tmux attach -t 0 #attach to terminal 0 session
References
- User Guide HTML one page
- Tmux Official website