Cool term - tips per rendere il vostro terminale perfetto

Stato
Discussione chiusa ad ulteriori risposte.

imported_BlackLight

Utente Silver
16 Agosto 2007
211
8
1
98
In molti in giro, vedendo qualche screenshot del mio terminale, mi hanno chiesto come personalizzarlo come me.



Provvedo quindi con una piccola guida alla personalizzazione del proprio terminale, per renderlo uno strumento di lavoro completo.
Innanzitutto:

- Uso di screen. screen un'utility GNU storica che consente di eseguire varie sessioni di terminale nella stessa finestra di terminale, e gestirle tutte in modo semplice, personalizzando anche il layout della sessione. Questo il mio ~/.screenrc per la configurazione:

Codice:
vbell on
autodetach on
startup_message off
pow_detach_msg "Screen session of \$LOGNAME \$:cr:\$:nl:ended."
defscrollback 1000
termcap  xterm hs@:cs=\E[%i%d;%dr:im=\E[4h:ei=\E[4l
terminfo xterm hs@:cs=\E[%i%p1%d;%p2%dr:im=\E[4h:ei=\E[4l
termcapinfo  xterm Z0=\E[?3h:Z1=\E[?3l:is=\E[r\E[m\E[2J\E[H\E[?7h\E[?1;4;6l
termcapinfo xterm* OL=100
termcapinfo xterm 'VR=\E[?5h:VN=\E[?5l'
termcapinfo xterm 'k1=\E[11~:k2=\E[12~:k3=\E[13~:k4=\E[14~'
termcapinfo xterm 'kh=\EOH:kI=\E[2~:kD=\E[3~:kH=\EOF:kP=\E[5~:kN=\E[6~'
termcapinfo xterm 'hs:ts=\E]2;:fs=\007:ds=\E]2;screen\007'
termcapinfo xterm 'vi=\E[?25l:ve=\E[34h\E[?25h:vs=\E[34l'
termcapinfo   xterm 'XC=K%,%\E(B,[\304,\\\\\326,]\334,{\344,|\366,}\374,~\337'
termcapinfo xterm* be
termcapinfo wy75-42 xo:hs@
termcapinfo wy* CS=\E[?1h:CE=\E[?1l:vi=\E[?25l:ve=\E[?25h:VR=\E[?5h:VN=\E[?5l:cb=\E[1K:CD=\E[1J
termcapinfo  hp700 'Z0=\E[?3h:Z1=\E[?3l:hs:ts=\E[62"p\E[0$~\E[2$~\E[1$}:fs=\E[0}\E[61"p:ds=\E[62"p\E[1$~\E[61"p:ic@'
termcap  vt100* ms:AL=\E[%dL:DL=\E[%dM:UP=\E[%dA:DO=\E[%dB:LE=\E[%dD:RI=\E[%dC
terminfo vt100* ms:AL=\E[%p1%dL:DL=\E[%p1%dM:UP=\E[%p1%dA:DO=\E[%p1%dB:LE=\E[%p1%dD:RI=\E[%p1%dC
termcapinfo linux C8
bind k
bind ^k
bind .
bind ^\
bind \\
bind ^h
bind h
bind 'K' kill
bind 'I' login on
bind 'O' login off
bind '}' history
register [ "\033:se noai\015a"
register ] "\033:se ai\015a"
bind ^] paste [.]
backtick 1 5 5 $HOME/bin/mem
backtick 2 5 5 $HOME/bin/temp
backtick 3 120 120 $HOME/bin/mail
hardstatus alwayslastline
hardstatus string '%{= kG}[%= %{=kw}%?%-Lw%?%{r}(%{W}%n*%f%t%?(%u)%?%{r})%{w}%?%+Lw%?%?%= %{g}][mem: %1`][temp: %2`][mail: %3`][%{B}%d-%m-%Y %{W}%c:%s %{g}]'
screen -t IRC		0	weechat-curses
screen -t Mutt		1	mutt
screen -t Music	2	ncmpc -c
screen -t MSN		2	Gtmess
screen -t shell1	3
screen -t shell2	4

In questo modo, avviato screen avvio anche, ognuno in una diversa sessione di terminale

- weechat (client IRC)
- mutt (client di posta)
- ncmpc (client di mpd, per la musica)
- gtmess (client MSN)
- due sessioni di terminale libere

Creo quindi, in .screenrc, la hardstatus, ovvero la barra personalizzata che, in questo caso, mostrer in basso nella propria finestra di terminale

- sessioni aperte con relativi nomi
- memoria RAM disponibile
- temperatura della CPU
- numero di email non lette
- ora e data di sistema

Per avere informazioni sulla RAM disponibile, temperatura della CPU e numero di mail non lette, si ricorre allo stratagemma dei backtick, ovvero l'esecuzione di comandi esterni ogni tot. In questo caso i comandi sono piazzati in $HOME/bin.

~/bin/mem:

Codice:
echo -n `free -m | grep - | awk {'print $4'}` && echo -n '/' && free -m | grep Mem | awk {'print $2'}

~/bin/temp:

Codice:
cat /proc/acpi/thermal_zone/THR1/temperature | awk {'print $2 $3'}

~/bin/mail:

Codice:
echo -n `fetchmail 2> /dev/null | grep reading | wc -l` && echo -n '/' && echo -n `fetchmail 2> /dev/null | grep messages | awk {'print $1;'}`

fetchmail deve essere ovviamente configurato per prelevare la posta dalla vostra casella. Questo il mio ~/.fetchmailrc:

Codice:
poll imap.gmail.com
protocol IMAP
user "[email protected]"
there with password "miapass"
nofetchall
keep ssl

A questo punto avete un terminale completo pronto all'uso che vi far dimenticare l'uso di qualsiasi utility grafica ^^
 
Ti giuro che ti volevo mandare un PM per sapere come hai fatto queste cose xD
Comunque quello nello screen non è VIM (sono fuso io o cosa)?
 
Quello nello screen è VIM eccome...personalizzato per bene con colori, evidenziazione della sintassi e due file visualizzati via vsplit, ma è sempre VIM.
 
Come li visualizzi 2 file? Non è sufficiente aprire due shell e aprire due istanze di VIM contemporanee? Comunque i colori come li personalizzi? Io ho quelli base che hai quanto abiliti la sintax dal file di configurazione di VIM...
 
Questo è il mio ~/.vimrc:

Codice:
" local syntax file - set colors on a per-machine basis:
" vim: tw=0 ts=4 sw=4
" Vim color file
" Maintainer:	Ron Aaron <[email protected]>
" Last Change:	2003 May 02

syntax on
set autoindent
set number
set showmode ruler
set ruler
set showmatch
set shiftwidth=5
set ts=5
set backspace=2
set backup
set backupdir=~/.tmp
set mouse=a

setlocal omnifunc=syntaxcomplete#Complete
set cot+=menuone

set background=dark
hi clear
if exists("syntax_on")
  syntax reset
endif
let g:colors_name = "ron"
hi Normal		guifg=cyan	guibg=black
hi NonText		guifg=brown
hi comment		guifg=green
hi constant		guifg=cyan	gui=bold
hi identifier	guifg=cyan	gui=NONE
hi statement	guifg=lightblue	gui=NONE
hi preproc		guifg=Pink2
hi type			guifg=seagreen	gui=bold
hi special		guifg=yellow
hi ErrorMsg		guifg=Black	guibg=Red
hi WarningMsg	guifg=Black	guibg=Green
hi Error		guibg=Red
hi Todo			guifg=Black	guibg=orange
hi Cursor		guibg=#60a060 guifg=#00ff00
hi Search		guibg=lightslateblue
hi IncSearch	gui=NONE guibg=steelblue
hi LineNr		guifg=darkgrey
hi title		guifg=darkgrey
hi StatusLineNC	gui=NONE guifg=lightblue guibg=darkblue
hi StatusLine	gui=bold	guifg=cyan	guibg=blue
hi label		guifg=gold2
hi operator		guifg=orange
hi clear Visual
hi Visual		term=reverse cterm=reverse gui=reverse
hi DiffChange   guibg=darkgreen
hi DiffText		guibg=olivedrab
hi DiffAdd		guibg=slateblue
hi DiffDelete   guibg=coral
hi Folded		guibg=gray30
hi FoldColumn	guibg=gray30 guifg=white
hi cIf0			guifg=gray

Per il resto, per visualizzare due file nella stessa finestra dai :split altro_file (split orizzontale) o :vsplit altro_file (split verticale), per poi muoverti da un file all'altro con CTRL+W+ frecce direzionali.
 
Scusami l'ingoranza Black, ma quel ~/ che directory è? Perché ad esempio il mio /etc/vim/vimrc è decisamente diverso dal tuo,e ho pensato che ~/ non voglia dire ciò che intendo io...
 
Cappero comincio ad impallarmi se mi dici così: che ci farebbe il vimrc nella directory home? Non si trovava in /etc/vim/vimrc? E poi ho installato screen, ma non trovo screenrc, neanche con cerca -.-
Che frana che sono ancora...
 
Infatti la maggior parte di quei file non si trova certo di default nella tua home...sei tu che creando dei file .*rc nella tua home dici al programma in questione di non usare la configurazione di default di sistema ma quella overridden da te, che si trova proprio nella tua home.
 
Ottimo come sempre, blacklight! Appena ho uno spazio di tempo provvederò a modificare il mio terminale! Che figataaaaaaaaaaaaa! XD
 
BlackLight ha detto:
Infatti la maggior parte di quei file non si trova certo di default nella tua home...sei tu che creando dei file .*rc nella tua home dici al programma in questione di non usare la configurazione di default di sistema ma quella overridden da te, che si trova proprio nella tua home.

E questo non lo sapevo, quindi ora in /home/jacopo metto quella roba e ci creo la cartella bin con gli altri file... Grazie, come sempre geniale. Se ho altri problemi posto.
 
Stato
Discussione chiusa ad ulteriori risposte.