TMux: Difference between revisions

From Chorke Wiki
Jump to navigation Jump to search
Line 5: Line 5:
| valign="top" |
| valign="top" |
  '''misc:'''
  '''misc:'''
  ───────────────────────────────────────────────
  ───────────────────────────────────────────────────────
  '''Ctrl + a''' → ‎:   » Enter command mode
  '''Ctrl + a''' → ‎:       » Enter command mode


| valign="top" |
| valign="top" |
  '''misc:'''
  '''misc:'''
  ───────────────────────────────────────────────
  ───────────────────────────────────────────────────────
  '''Ctrl + a''' → ‎?   » List key bindings
  '''Ctrl + a''' → ‎?       » List key bindings


|-
|-
Line 19: Line 19:
| valign="top" |
| valign="top" |
  '''session:'''
  '''session:'''
  ───────────────────────────────────────────────
  ───────────────────────────────────────────────────────
  '''Ctrl + a''' → ‎w   » Session and Window Preview
  '''Ctrl + a''' → ‎w       » Session and Window Preview
  '''Ctrl + a''' → ‎(   » Move to previous session
  '''Ctrl + a''' → ‎(       » Move to previous session
  '''Ctrl + a''' → ‎)   » Move to next session
  '''Ctrl + a''' → ‎)       » Move to next session
  '''Ctrl + a''' → ‎d   » Detach from session
  '''Ctrl + a''' → ‎d       » Detach from session
  '''Ctrl + a''' → ‎s   » Show all sessions
  '''Ctrl + a''' → ‎s       » Show all sessions
  '''Ctrl + a''' → ‎$   » Rename session
  '''Ctrl + a''' → ‎$       » Rename session
  '''Ctrl + a''' → ‎ʘ   »  
  '''Ctrl + a''' → ‎ʘ       »  
  '''Ctrl + a''' → ʘ   »  
  '''Ctrl + a''' → ʘ       »  


| valign="top" |
| valign="top" |
  '''window:'''
  '''window:'''
  ───────────────────────────────────────────────
  ───────────────────────────────────────────────────────
  '''Ctrl + a''' → ‎n   » Next window
  '''Ctrl + a''' → ‎n       » Next window
  '''Ctrl + a''' → ‎w   » List windows
  '''Ctrl + a''' → ‎w       » List windows
  '''Ctrl + a''' → ‎p   » Previous window
  '''Ctrl + a''' → ‎p       » Previous window
  '''Ctrl + a''' → ‎c   » Create a new window
  '''Ctrl + a''' → ‎c       » Create a new window
  '''Ctrl + a''' → ‎&   » Close active window
  '''Ctrl + a''' → ‎&       » Close active window
  '''Ctrl + a''' → ‎,   » Rename active window
  '''Ctrl + a''' → ‎,       » Rename active window
  '''Ctrl + a''' → ‎1   » Toggle last active window
  '''Ctrl + a''' → ‎1       » Toggle last active window
  '''Ctrl + a''' → 0…9 » Switch to window by number
  '''Ctrl + a''' → 0…9     » Switch to window by number


|-
|-
Line 47: Line 47:
| valign="top" |
| valign="top" |
  '''pane:'''
  '''pane:'''
  ───────────────────────────────────────────────
  ───────────────────────────────────────────────────────
  '''Ctrl + a''' → ‎x   » Close active pane
  '''Ctrl + a''' → ‎x       » Close active pane
  '''Ctrl + a''' → ‎q   » Show pane numbers
  '''Ctrl + a''' → ‎q       » Show pane numbers
  '''Ctrl + a''' → ‎q 0…9» Switch pane by number
  '''Ctrl + a''' → ‎q 0…9    » Switch pane by number
  '''Ctrl + a''' → ‎|   » Split pane vertically
  '''Ctrl + a''' → ‎|       » Split pane vertically
  '''Ctrl + a''' → ‎-   » Split pane horizontally
  '''Ctrl + a''' → ‎-       » Split pane horizontally
  '''Ctrl + a''' → ;   » Toggle last active pane
  '''Ctrl + a''' → ;       » Toggle last active pane
  '''Ctrl + a''' → z   » Toggle active pane zoom
  '''Ctrl + a''' → z       » Toggle active pane zoom
  '''Ctrl + a''' → {   » Move the active pane left
  '''Ctrl + a''' → {       » Move the active pane left
  '''Ctrl + a''' → ‎}   » Move the active pane right
  '''Ctrl + a''' → ‎}       » Move the active pane right
  '''Ctrl + a''' → !   » Convert pane into a window
  '''Ctrl + a''' → !       » Convert pane into a window


| valign="top" |
| valign="top" |
  '''pane:'''
  '''pane:'''
  ───────────────────────────────────────────────
  ───────────────────────────────────────────────────────
  '''Ctrl + a''' → ‎↑   » Switch to pane up
  '''Ctrl + a''' → ‎↑       » Switch to pane up
  '''Ctrl + a''' → ↓   » Switch to pane down
  '''Ctrl + a''' → ↓       » Switch to pane down
  '''Ctrl + a''' → ←   » Switch to pane left
  '''Ctrl + a''' → ←       » Switch to pane left
  '''Ctrl + a''' → →   » Switch to pane right
  '''Ctrl + a''' → →       » Switch to pane right
'''Ctrl + a''' → ‎ʘ        »
  '''Ctrl + a''' → ‎ʘ        »  
  '''Ctrl + a''' → ‎ʘ        »  
  '''Ctrl + a''' → ‎Ctrl + » Pane height rise
  '''Ctrl + a''' → ‎Ctrl + » Pane width Resize
  '''Ctrl + a''' → ↓    » Switch to pane down
  '''Ctrl + a''' → ‎Ctrl + → » Pane width Resize
  '''Ctrl + a''' → ←    » Switch to pane left
  '''Ctrl + a''' → ‎Ctrl + ↑ » Pane height Resize
  '''Ctrl + a''' → →    » Switch to pane right
  '''Ctrl + a''' → ‎Ctrl + ↓ » Pane height Resize


|}
|}

Revision as of 07:17, 18 February 2023

tmux is an open-source terminal multiplexer for Unix-like operating systems. It allows multiple terminal sessions to be accessed simultaneously in a single window. It is useful for running more than one command-line program at the same time.

Cheat Sheet

misc:
───────────────────────────────────────────────────────
Ctrl + a → ‎:        » Enter command mode
misc:
───────────────────────────────────────────────────────
Ctrl + a → ‎?        » List key bindings

session:
───────────────────────────────────────────────────────
Ctrl + a → ‎w        » Session and Window Preview
Ctrl + a → ‎(        » Move to previous session
Ctrl + a → ‎)        » Move to next session
Ctrl + a → ‎d        » Detach from session
Ctrl + a → ‎s        » Show all sessions
Ctrl + a → ‎$        » Rename session
Ctrl + a → ‎ʘ        » 
Ctrl + a → ʘ        » 
window:
───────────────────────────────────────────────────────
Ctrl + a → ‎n        » Next window
Ctrl + a → ‎w        » List windows
Ctrl + a → ‎p        » Previous window
Ctrl + a → ‎c        » Create a new window
Ctrl + a → ‎&        » Close active window
Ctrl + a → ‎,        » Rename active window
Ctrl + a → ‎1        » Toggle last active window
Ctrl + a → 0…9      » Switch to window by number

pane:
───────────────────────────────────────────────────────
Ctrl + a → ‎x        » Close active pane
Ctrl + a → ‎q        » Show pane numbers
Ctrl + a → ‎q 0…9    » Switch pane by number
Ctrl + a → ‎|        » Split pane vertically
Ctrl + a → ‎-        » Split pane horizontally
Ctrl + a → ;        » Toggle last active pane
Ctrl + a → z        » Toggle active pane zoom
Ctrl + a → {        » Move the active pane left
Ctrl + a → ‎}        » Move the active pane right
Ctrl + a → !        » Convert pane into a window
pane:
───────────────────────────────────────────────────────
Ctrl + a → ‎↑        » Switch to pane up
Ctrl + a → ↓        » Switch to pane down
Ctrl + a → ←        » Switch to pane left
Ctrl + a → →        » Switch to pane right
Ctrl + a → ‎ʘ        » 
Ctrl + a → ‎ʘ        » 
Ctrl + a → ‎Ctrl + ← » Pane width Resize
Ctrl + a → ‎Ctrl + → » Pane width Resize
Ctrl + a → ‎Ctrl + ↑ » Pane height Resize
Ctrl + a → ‎Ctrl + ↓ » Pane height Resize

Installation

sudo apt install tmux
sudo apt install powerline
git clone https://github.com/tmux-plugins/tpm ~/.tmux/plugins/tpm

cat << EOF | tee ${HOME}/.tmux.conf >/dev/null
set -g base-index 1
# remap prefix from 'c-b' to 'c-a'
unbind C-b
set-option -g prefix c-a
bind-key c-a send-prefix

set -g default-terminal 'screen-256color'
set -g history-limit 10000

# window/pane split
bind | split-window -h
bind - split-window -v
unbind '"'
unbind %

# list of plugins
set -g @plugin 'tmux-plugins/tpm'
set -g @plugin 'tmux-plugins/tmux-yank'
set -g @plugin 'tmux-plugins/tmux-battery'
set -g @plugin 'tmux-plugins/tmux-sensible'
set -g @plugin 'tmux-plugins/tmux-prefix-highlight'

# initialize tmux plugin manager
run '~/.tmux/plugins/tpm/tpm'
EOF

Knowledge

tmux ls
tmux new -s my_session
tmux attach-session -t 0
tmux attach-session -t my_session

Ctrl + a % » Split pane horizontally
Ctrl + a " » Split pane vertically
Ctrl + a x » Close current pane
Ctrl + a c » Create a new window
Ctrl + a w » Choose window from a list
Ctrl + a 0 » Switch to window by number
Ctrl + a , » Rename the current window

Ctrl + a o » Go to the next pane
Ctrl + a ; » Toggle between pane
Ctrl + a d » Detach the session
tmux ls
tmux kill-server
tmux list-sessions
tmux kill-session -a
tmux kill-session -t {index}

pkill -f tmux
ps aux | grep tmux

TMUX_INSTALL_STATUS="$(dpkg-query -W --showformat='${db:Status-Status}' 'tmux' 2>&1)"
if [[ ! $? -eq 0 ]]||[[ ! "${TMUX_INSTALL_STATUS}" -eq 'installed' ]];then
    printf 'tmux \033[0;31mnot found! \033[0m:(\n';exit 1
fi

POWERLINE_INSTALL_STATUS="$(dpkg-query -W --showformat='${db:Status-Status}' 'powerline' 2>&1)"
if [[ ! $? -eq 0 ]]||[[ ! "${POWERLINE_INSTALL_STATUS}" -eq 'installed' ]];then
    printf 'powerline \033[0;31mnot found! \033[0m:(\n';exit 1
fi

python3 -m site --user-site
python3 -m site | grep packages
python3 -m sysconfig | grep packages
windows 11
C:\> py -c "import sysconfig; print(sysconfig.get_path('purelib'))"
python3 -c "import sysconfig; print(sysconfig.get_path('purelib'))"

python3 -m venv ~/.venv/powerline --prompt="Powerline"
# source .venv/bin/activate
# (Powerline) $

python -m venv ~/.venv/powerline --prompt="Powerline"
# .venv\Scripts\activate
# (Powerline) PS>

uptime | cut -f 4-5 -d ' ' | cut -f 1 -d ','

References