Da screen a tmux

Da quando ho cominciato a lavorare a distanza sulle mie macchine usando SSH ho trovato una piccola mancanza.

Non parlo del server grafico X, ma della possibilità di avere a disposizione più terminali per poter lavorare.

Da questa mia necessità di poter avere un multiplatore di terminale per poter lavorare è partita una ricerca che ha subito trovato in screen un valido aiuto.

Con il tempo ho poi scoperto tmux che mi offriva le stesse funzioni, a suo vantaggio c’è il fatto che viene mantenuto più aggiornato mentre per screen lo sviluppo pare fermo da diverso tempo.

Per le mie esigenze anche screen andava bene, il mio uso è molto semplice e non ho riscontrato bug che in alcui casi hanno portato molti utenti a passare a tmux.

I programmi di cui sopra accennato offrono molte possibilità in più di quello che mi serve , ma vediamo ora come ho configurato entrambe.

 

Le mie semplici richieste mi hanno portato a provare subito screen, avevo bisogno di alcuni terminali dover poter lavorare con diversi user, un scheda con MC a cui ho successivmanete aggiunto rtorrent e weechat ma niente di particolare.

  • Screen

Riguardo a screen ho trovato un’ottima guida su debianizzzati a questo link , dopo aver ripulito il file di configurazione nella guida ho potuto da subito cominciare a operare.

Un piccolo periodo per adeguarmi al binding delle funzioni necessarie et voilà in poco tempo ho acquisito l’abilità per muovermi comodamente.

Installare screen:

# aptitude install screen

Ecco il mio file di configurazione  ~/.screenrc :

# MC screenrc (copied)

 altscreen on

# imposto la variabile d'ambiente TERM, necessario se si usa un terminale con 256 colori
 term screen-256color

# disabilito il flow control
 defflow off

# gestisce i login degli utenti in ogni pseudo terminale attraverso il file /run/utmp
 deflogin on

# abilito il monitoraggio di attività delle finestre 
 defmonitor on

# la quantità di righe salvate nel buffer
 defscrollback 7777

# UTF-8 everywhere!
 defutf8 on

# evita il blocco del terminale da parte di applicazioni bloccate
 defnonblock on

# il tempo di visualizzazione dei messaggi di attività è impostato a un secondo
 msgwait 1

# disabilito il noioso messaggio di benvenuto in apertura
 startup_message off

# disabilito quegli orribili flash in reverse color della visual bell
 vbell off

# quando si usa "Ctrl-a h" appende nuovo testo al file hardcopy.n anziché sovrascriverlo
 hardcopy_append on

# salvo la disposizione degli split per la sessione
 layout save fugu

# blocco l'accesso a screen dopo 15 minuti di inattività, equivale a "Ctrl-a x"
 idle 900 lockscreen

# messaggio di attività personalizzato
 activity "someone is squeaking in  #%n %t"

# i colori del testo nel prompt
 sorendition Bk

# l'aspetto delle barre che appaiono con uno o più split
 caption splitonly "%{= kw}%47=%?%F%{= kB}%?%t"

# l'aspetto della statusbar: nera con testo blu per la finestra in focus, racchiuso tra parentesi quadre verdi,
 hardstatus alwayslastline "%{= kB}%{= 9}%?%-w%?%{G}[%{B}%n %t%?(%u)%?%{G}]%{d}%+w%?%?%= %{g}%c %D %d-%m-%y"

# le scorciatoie che non hanno un argomento vengono eliminate
 bind \\
 bind d
 bind k
 bind K
 bind ^k
 bind z
 bind ^z

# oltre ad appendere al file, come specificato prima "hardcopy_append on", voglio salvare in un file diverso
 bind h hardcopy -h $HOME/Desktop/screenbuffa

# i programmi che uso più spesso sono associati a comode scorciatoie
 bind E screen 4 mutt
 bind H screen htop
 bind I screen 3 weechat
 bind T screen -t rTorr 7 rtorrent
 bind W screen w3m https://www.google.com

# automatizzo certe operazioni all'apertura di screen
 screen 0 bash
 screen 1 mc -x
 screen 2 bash

A questo punto basta eseguire da terminale :

$ screen

Per operare da subito le funzioni principali :

  • Ctrl+a [numero] per spostarsi tra le varie finestre
  • Ctrl+a c per aprire una nuova finestra
  • Ctrl+a shift+[lettera] attivo la scorciatoia
  • Ctrl+a x blocco la sessione
  • Ctrl+a :quit termino screen

Solitamente sul raspberryPI non termino screen ma chiudo la sessione SSH, allla succesiva apertura della sessione:

$screen -r

e riprendo la sessione precedente con tutte le finestre aperte in precedenza.

  •  tmux

Riguardo tmux non ho trovato nulla sulle guide debianizzati, però il web è ricco di esempi di cofigurazione che possono venire in nostro aiuto.

Il problema è stato adattare tutto il materiale trovato in rete alle mie esigenze, che in questo caso per mia praticità ho fatto diventare simile nelle funzioni a quello che facevo già con screen.

Devo a priori ringraziare skizzhg per avermi fornito un utile file di partenza da cui poi elaborare la mia configurazione.

L’installazione prevede

#aptitude install tmux vlock

il file di configurazione ~/.tmux.conf :

### first run with `tmux attach-session'
### reattach with the same or `tmux attach-session -t MC_Kim'

##############
# unbind key #
##############
unbind-key '"'
unbind-key '%'
unbind-key &
unbind-key d
unbind-key Space
unbind-key x
unbind-key C-b
unbind-key C-z
unbind-key C-Up
unbind-key C-Down 
unbind-key C-Left 
unbind-key C-Right
unbind-key M-Up
unbind-key M-Down 
unbind-key M-Left 
unbind-key M-Right
unbind-key M-1
unbind-key M-2
unbind-key M-3
unbind-key M-4
unbind-key M-5

#################
# bind for kill #
#################
bind k confirm kill-window
bind K confirm kill-server

##########
# option #
##########
set-option -g default-command "exec bash"
set-option -g prefix C-a
set-option -g utf8 on
set-option -g history-limit 7777
set-option -g escape-time 0
set-option -g repeat-time 300
set-option -g display-time 1000
set-option -g pane-active-border-fg blue
set-option -g status-justify centre
set-option -g status-utf8 on
set-option -g status-keys vi
set-option -g status-bg black
set-option -g status-fg white
set-option -g status-right "#[fg=green] %H:%M %a %d-%m-%y"
set-option -g default-terminal "screen-256color"

#################
#scroll by mouse#
#################
set-window-option -g mode-mouse on
set -g history-limit 30000

###############
# Screen lock #
###############
bind-key x      lock-server
set-option -g   lock-after-time 1800
set-option -g   lock-server on
set-option -g   lock-command "vlock"

###############
# more option #
###############
set-window-option -g aggressive-resize on
set-window-option -g mode-keys vi
set-window-option -g xterm-keys on
set-window-option -g window-status-current-fg blue

bind-key a send-prefix
bind-key C-a last-window
bind-key Space next-window
bind-key BSpace previous-window

bind-key C-d detach-client
bind-key C-s source-file ~/.tmux.conf

###################################################################################
# usare crtl+a come bind-key (prefix) e poi Alt+numero, 0 per 10, 1 per 11, etc...# 
###################################################################################
bind-key M-0 select-window -t 10
bind-key M-1 select-window -t 11
bind-key M-2 select-window -t 12
bind-key M-3 select-window -t 13
bind-key M-4 select-window -t 14
bind-key M-5 select-window -t 15
bind-key M-6 select-window -t 16
bind-key M-7 select-window -t 17
bind-key M-8 select-window -t 18
bind-key M-9 select-window -t 19

##############
# Short bind #
##############
bind-key M new-window -n mutt -t 8 "exec mutt -F $HOME/.muttrc"
bind-key F new-window -n mc -t 1 "exec mc -x"
bind-key H new-window -n htop "exec htop"
bind-key R new-window -n "#root" -t 13 "su -l"
bind-key T new-window -n rTorr -t 4 "exec rtorrent"
bind-key V new-window -n vim -t 6 "stty -ixon -ixoff; exec vim.tiny"
bind-key W new-window -n w3m "exec w3m http://www.google.com"

#######
# tty #
#######
new-session -ds tty
set-option -t tty default-terminal "screen"
send-keys -t 0 " export TERM=screen; unset DISPLAY" C-j

##################
# MC_Kim session #
##################
new-session -s MC_Kim
new-window -dn mc "exec mc -x"
new-window -d
new-window -d
new-window -d -t 5

con questo file di configurazione sono in parte riuscito a clonare il mio modo d’uso,ho dovuto aggiungere vlock per bloccare la sessione dopo x secondi e un bind diverso per terminare tmux.

un link utile : Extreme Multitasking with tmux and PuTTY

Un consiglio appassionato (che spesso neppure io seguo) è di non copiare ad minchiam , ma cercare prima di documentarsi un pò e poi modificare a seconda delle propire esigenze, i programmi di cui si è parlato offrono molte più possibilità di quanto illustrato fino ad ora.

Now you can start with a terminal multiplexer , and no more suka  🙂

 

Edit :

How do I reload ~/.tmux.conf?

After editing ~/.tmux.conf, execute this from a shell:

tmux source-file ~/.tmux.conf

und puppamelo

Rispondi