Home

ITA - tmux customizzato su debian

linux debian tmux

Introduzione

Procedura

Installare tmux

Installazione da pacchetto

sudo apt-get install tmux

Compila da linead di comando

Installa dipendenze Tmux da Debian
sudo apt-get install libevent ncurses libevent-dev ncurses-dev build-essential bison pkg-config
Compila i sorgenti
git clone https://github.com/tmux/tmux.git
cd tmux
sh autogen.sh
./configure && make
make install

Installare tmux plugin manager

Per installare il plugin menager bisogna creare la cartella:

mkdir -p ~/.tmux/plugins/

Installare manualmente il tpm:

git clone https://github.com/tmux-plugins/tpm ~/.tmux/plugins/tpm

Configurare tmp, aggiungere in fondo al file ~/.tmux.conf:

# List of plugins
set -g @plugin 'tmux-plugins/tpm'

# Other examples:
# set -g @plugin 'tmux-plugins/tmux-sensible'
# set -g @plugin 'github_username/plugin_name'
# set -g @plugin 'github_username/plugin_name#branch'
# set -g @plugin 'git@github.com:user/plugin'
# set -g @plugin 'git@bitbucket.com:user/plugin'

# Initialize TMUX plugin manager (keep this line at the very bottom of tmux.conf)
run '~/.tmux/plugins/tpm/tpm'

Una volta che il file è salvato si può:

Installare plugins

Il plugin è installato in ~/.tmux/plugins/.

Disintallare plugins

La cartella del plugin si trova in ~/.tmux/plugins/, ma non viene rimossa in automatico, se neccessario puoi procedere alla rimozione manualmente.

Key bindings

Installare plugins per tmux

Si può navigare Lista di plugins per scegliere cosa installare.

Io ho deciso di installare i seguenti plugins:

Tmux Resurrect

Questo plugin permette di salvare e ripristinare lo stato delle finestre e dei pannelli:

Installazione

Aggiungere questa linea all’elenco dei plugins:

set -g @plugin 'tmux-plugins/tmux-resurrect'

e premere: prefix + I

Key bindings

Supporto per sessioni vim

Nel caso si usi nvim o vim vanilla si può integrare con vim-obsession

Se si usa astrovim ( come nel mio caso) il salvataggio delle sessioni è già integrato (docs.astronvim.com - sessions)[https://docs.astronvim.com/recipes/sessions/], è sufficiente aggiungere al file ~/.tmux.conf:

# for neovim
set -g @resurrect-strategy-nvim 'session'

Supporto per btop++

Come monitor di sistema, di solito uso btop++, per aggiungere il supporto a questo programma, aggiungere al file ~/.tmux.conf:

# save btop
set -g @resurrect-processes 'btop'

Qui si possono trovare altre info sulla gestione dei programmi.

Supporto il contenuto dei pannelli

Ripristinare il contenuto dei pannelli, aggiungere al file ~/.tmux.conf:

# save btop
set -g @resurrect-capture-pane-contents 'on'

NB: la documentazione riporta problemi nel caso la direttiva default-command contenga dei || o &&

Tmux Logging

Funzionalità:

Installazione

Aggiungere questa linea all’elenco dei plugins:

set -g @plugin 'tmux-plugins/tmux-logging'

e premere: prefix + I

Key bindings

Registrazione

Attiva/disattiva la registrazione nel riquadro corrente.

Cattura schermata

Salva il testo visibile nel riquadro corrente. Equivalente a uno “screenshot testuale”.

Salva la cronologia completa

Salva la cronologia completa del pannello in un file. Comodo se ti ricordi retroattivamente di dover registrare/salvare tutto il lavoro.

NOTA: questa funzionalità dipende dal valore di history-limit, ovvero il numero di righe che Tmux conserva nel buffer di scrollback. Verrà salvato in un file solo ciò che Tmux ha conservato. Utilizzare set -g history-limit 50000 in .tmux.conf; sui computer moderni è accettabile impostare questa opzione su un numero elevato.

Cancella la cronologia del riquadro

Questa è solo una comoda combinazione di tasti.

Tmux Pain Control

Plugin Tmux per il controllo dei riquadri. Aggiunge associazioni standard per la navigazione dei riquadri.

Installazione

Aggiungere questa linea all’elenco dei plugins:

set -g @plugin 'tmux-plugins/tmux-pain-control'

e premere: prefix + I

Key bindings

Nota: questo sostituisce il binding predefinito di tmux per alternare tra le ultime finestre attive, prefix + l. tmux-sensible offre un binding migliore, prefix + a (se il prefix è C-a).

Ridimensionamento dei riquadri

Queste mappature sono ripetibili. Il numero di celle da ridimensionare può essere configurato con l’opzione @pane_resize. Consultare la sezione di configurazione per i dettagli.

Suddivisione dei riquadri

Il riquadro appena creato ha sempre lo stesso percorso del riquadro originale.

Scambio di finestre

Tmux CPU and GPU status

Permette di visualizzare le informazioni su CPU e GPU in Tmux status-right e status-left. Visualizzazione configurabile di percentuale e icone.

Installazione

Aggiungere questa linea all’elenco dei plugins:

set -g @plugin 'tmux-plugins/tmux-cpu'

e premere: prefix + I

Tmux battery status

Permette di visualizzare le informazioni della batteria in Tmux status-right e status-left. Visualizzazione configurabile di percentuale e icone.

Installazione

Aggiungere questa linea all’elenco dei plugins:

set -g @plugin 'tmux-plugins/tmux-battery'

e premere: prefix + I

Installare temi per tmux

Installazione

Aggiungere questa linea all’elenco dei plugins:

set -g @plugin 'catppuccin/tmux#v2.1.3'

e premere: prefix + I

Configurazione

Per scegliere il flavour usiamo:

set -g @catppuccin_flavor 'mocha' # latte, frappe, macchiato or mocha

Seguono alcune configurazioni finali da aggiungere al file per ~/.tmux.conf ottenere una barra di stato carina:


# Make the status line pretty and add some modules
set -g status-right-length 100
set -g status-left-length 100
set -g status-left ""
set -g status-right "#{E:@catppuccin_status_application}"
set -agF status-right "#{E:@catppuccin_status_cpu}"
set -ag status-right "#{E:@catppuccin_status_session}"
set -ag status-right "#{E:@catppuccin_status_uptime}"
set -agF status-right "#{E:@catppuccin_status_battery}"

Conclusione

Il file di configurazione finale è :

# unbind C-b
# set -g prefix C-a
# bind C-a send-prefix

# abbilita la modalità 256 colori
set -g default-terminal "tmux-256color"

# abilita il supporto per il mouse
# set -g mouse on

# modifica le shortcat per splittare i pannelli
bind | split-window -h
bind - split-window -v
unbind '"'
unbind %

# vim like shortcat per lo spostamento
bind -r h select-pane -L
bind -r j select-pane -D
bind -r k select-pane -U
bind -r l select-pane -R

# quando premi prefix + q il pannello attivo ha il colore blu
set -g display-panes-active-colour blue
set -g display-panes-colour grey

# for neovim
set -g @resurrect-strategy-nvim 'session'

set -g @resurrect-processes 'btop'

set -g @resurrect-capture-pane-contents 'on'

set -g @catppuccin_flavor 'mocha' # latte, frappe, macchiato or mocha

# Make the status line pretty and add some modules
set -g status-right-length 100
set -g status-left-length 100
set -g status-left ""
set -g status-right "#{E:@catppuccin_status_application}"
set -agF status-right "#{E:@catppuccin_status_cpu}"
set -ag status-right "#{E:@catppuccin_status_session}"
set -ag status-right "#{E:@catppuccin_status_uptime}"
set -agF status-right "#{E:@catppuccin_status_battery}"
# List of plugins
set -g @plugin 'tmux-plugins/tpm'
set -g @plugin 'tmux-plugins/tmux-resurrect'
set -g @plugin 'tmux-plugins/tmux-logging'
set -g @plugin 'tmux-plugins/tmux-pain-control'
set -g @plugin 'tmux-plugins/tmux-cpu'
set -g @plugin 'tmux-plugins/tmux-battery'
set -g @plugin 'catppuccin/tmux#v2.1.3'

# Other examples:
# set -g @plugin 'tmux-plugins/tmux-sensible'
# set -g @plugin 'github_username/plugin_name'
# set -g @plugin 'github_username/plugin_name#branch'
# set -g @plugin 'git@github.com:user/plugin'
# set -g @plugin 'git@bitbucket.com:user/plugin'

# Initialize TMUX plugin manager (keep this line at the very bottom of tmux.conf)
run '~/.tmux/plugins/tpm/tpm'

Key bindings

File pdf delle scorciatoie è :

Plugins

Combinazione di Tasti / Comando Azione
Ctrl + b, poi I Installa i plugins
Ctrl + b, poi U Aggiorna i plugins
Ctrl + b, poi alt + u Rimuove/disinstalla i plugin

Sessioni

Combinazione di Tasti / Comando Azione
tmux o tmux new Avviare una nuova sessione
tmux new -s nome_sessione Avviare una nuova sessione con nome
Ctrl + b, poi $ Rinominare la sessione corrente
Ctrl + b, poi d Staccarsi dalla sessione
Ctrl + b, poi s Visualizzare tutte le sessioni
Ctrl + b, poi ( Passare alla sessione precedente
Ctrl + b, poi ) Passare alla sessione successiva
tmux attach -t nome_sessione Collegarsi a una sessione esistente
tmux kill-session -t nome_sessione Terminare una sessione specifica
tmux kill-session -a -t nome_sessione Terminare tutte le sessioni tranne una
Ctrl + b, poi Ctrl + s Savla le sessioni attive
Ctrl + b, poi Ctrl + r Ripristina le sessioni salvate

Finestre

Combinazione di Tasti / Comando Azione
Ctrl + b, poi c Creare una nuova finestra
Ctrl + b, poi , Rinominare la finestra corrente
Ctrl + b, poi & Chiudere la finestra corrente
Ctrl + b, poi w Elencare tutte le finestre
Ctrl + b, poi p Passare alla finestra precedente
Ctrl + b, poi n Passare alla finestra successiva
Ctrl + b, poi l Passare all’ultima finestra attiva
Ctrl + b, poi 09 Selezionare finestra per numero
:swap-window -s 2 -t 1 Scambiare due finestre
:move-window -r Rinumerare le finestre

Pannelli

Combinazione di Tasti / Comando Azione
Ctrl + b, poi " Dividere orizzontalmente
Ctrl + b, poi % Dividere verticalmente
Ctrl + b, poi o Passare al pannello successivo
Ctrl + b, poi q Mostrare i numeri dei pannelli
Ctrl + b, poi q, quindi 09 Selezionare pannello per numero
Ctrl + b, poi { Spostare il pannello a sinistra
Ctrl + b, poi } Spostare il pannello a destra
Ctrl + b, poi z Massimizzare/ripristinare il pannello
Ctrl + b, poi ! Convertire il pannello in finestra
Ctrl + b, poi x Chiudere il pannello corrente
Ctrl + b + frecce direzionali Ridimensionare il pannello
Combinazione di Tasti / Comando Azione
Ctrl + b, poi h seleziona il riquadro a sinistra
Ctrl + b, poi j seleziona il riquadro sotto
Ctrl + b, poi k seleziona il riquadro sopra
Ctrl + b, poi l seleziona il riquadro a destra
Ctrl + b, poi H ridimensiona a sinistra
Ctrl + b, poi J ridimensiona verso il basso
Ctrl + b, poi K ridimensiona verso l’alto
Ctrl + b, poi L ridimensiona a destra
Combinazione di Tasti / Comando Azione
Ctrl + b, poi | Divide il riquadro in due, a sinistra e a destra.
Ctrl + b, poi - Divide il riquadro in due, in alto e in basso.
Ctrl + b, poi \ Divide l’intera larghezza del riquadro corrente in due, a sinistra e a destra.
Ctrl + b, poi _ Divide l’intera altezza del riquadro corrente in due, in alto e in basso.

Modalità Copia

Combinazione di Tasti / Comando Azione
Ctrl + b, poi [ Entrare in modalità copia
Ctrl + b, poi PgUp Scorrere una pagina su
Spazio Iniziare la selezione
Invio Copiare la selezione
q Uscire dalla modalità copia
Ctrl + b, poi ] Incollare il contenuto copiato
/ Cercare avanti
? Cercare indietro
n Prossima occorrenza
N Occorrenza precedente

Logging

Combinazione di Tasti / Comando Azione
Ctrl + b, poi P Attiva/disattiva la registrazione
Ctrl + b, poi p Salva il testo visibile
Ctrl + b, poi alt + P Salva la cronologia
Ctrl + b, alt + c Cancella la cronologia

Riferimenti