spectrwm
spectrwm è un gestore di finestre
minimale che cerca di stare in disparte, in modo che il prezioso spazio
sullo schermo possa essere usato per cose più importanti. Hai dei
default sensati e non costringe l'utente ad imparare un linguaggio di
programmazione per configurarlo. È stato scritto dagli hacker per gli
hacker e cerca di essere piccolo, compatto e veloce.
Quando spectrwm viene avviato, legge le
impostazioni presenti nel file di configurazione
spectrwm.conf. Vedere la sezione
FILE DI CONFIGURAZIONE
più sotto.
In questa pagina di manuale viene usata la seguente notazione:
spectrwm è molto semplice da usare.
La maggior parte delle operazioni vengono svolte usando combinazioni di
tasti sulla tastiera o sul mouse. Vedere la sezione
SCORCIATOIE più sotto per i
default e le possibilità di personalizzazione.
spectrwm prova per prima cosa ad aprire il
file di configurazione personale dell'utente,
~/.spectrwm.conf. Se il file in questione non
è disponibile, prova ad usare il file di configurazione globale
/etc/spectrwm.conf.
Il formato di questo file è <chiave> = <valore>. Per esempio:
color_focus = redPer abilitare o disabilitare un'opzione, usare i valori 1 o 0 rispettivamente.
Il file supporta le seguenti chiavi:
autorunbar_actionbar_at_bottombar_border[x]bar_border_widthbar_color[x]bar_delaybar_enabledbar_fontbar_font_color[x]bar_justifybind[x]border_widthclock_enabledcolor_focuscolor_unfocusdialog_ratiodisable_borderfocus_modekeyboard_mappinglayoutFare riferimento a master_grow, master_shrink, master_add, master_del, stack_inc, stack_del e always_raise per ulteriori informazioni. Queste impostazioni sono complesse e hanno effetti secondari; è opportuno familiarizzare con questi comandi prima di modificare l'opzione layout.
Questa impostazione non viene applicata dopo il restart.
modkeyprogram[p]quirk[c:n]regionPer fare sì che più monitor vengano considerati come una singola entità è sufficiente creare una regione abbastanza grande da contenerli, eg. screen[1]:2048x760+0+0 unisce due monitor con risoluzione 1024x768 posizionati uno di fianco all'altro.
stack_enabledterm_widthspectrwm cercherà
di adattare la dimensione del testo nel terminale in modo che la larghezza
del terminale rimanga sopra il valore quando la finestra viene
ridimensionata. Al momento solo xterm(1) è
supportato. L'eseguibile di xterm(1) deve essere setuid
o setgid perché questo funzioni: nella maggior parte dei sistemi,
questo avviene di default. L'utente potrebbe voler impostare program[term]
(vedere la sezione PROGRAMMI
più sotto) per usare una seconda copia dell'eseguibile di
xterm(1) che non abbia il bit setgid impostato.title_class_enabledtitle_name_enabledurgent_enabledverbose_layoutwindow_name_enabledI colori devono essere specificati nel formato usato da XQueryColor(3) e i font in quello usato da XQueryFont(3).
Per avere una lista dei font disponibili sul proprio sistema utilizzare fc-list(1) o xlsfonts(1). L'applicazione xfontsel(1) è utile per visualizzare la X Logical Font Description ("XLFD") usata per la chiave bar_font.
spectrwm consente la definizione di azioni
personalizzate per lanciare programmi di propria scelta, che possono essere
assegnate a combinazioni di tasti nello stesso modo in cui è
possibile farlo con le azioni predefinite. Vedere la sezione
SCORCIATOIE più sotto.
I programmi di default sono descritti qui sotto:
termscreenshot_allscreenshot_windlockinitscrI programmi personalizzati vengono specificati con la seguente sintassi:
program[<nome>] =
<percorso> [<arg> [... <arg>]]⟨nome⟩ è un qualsiasi identificatore che non va in conflitto con un'azione predefinita o una chiave, ⟨percorso⟩ è il programma desiderato, e ⟨arg⟩ sono zero o più argomenti da passare al programma.
Le seguenti variabili rappresentano valori impostabili in
spectrwm (vedere la sezione
FILE DI CONFIGURAZIONE
sopra), e possono essere usati nel campo ⟨arg⟩ dove saranno
sostituite con il valore al momento del lancio del programma:
Esempio:
program[ff] = /usr/local/bin/firefox http://spectrwm.org/ bind[ff] = Mod+Shift+b # adesso Mod+Shift+b lancia firefox
Per eliminare la combinazione precedente:
bind[] = Mod+Shift+b program[ff] =
spectrwm fornisce molte funzioni (o
azioni) accessibili tramite combinazioni di tasti sul mouse o sulla
tastiera.
Le scorciatoie assegnate al mouse sono:
Le scorciatoie da tastiera di default sono:
M-S-⟨Return⟩M-pM-S-qM-qM-⟨Space⟩M-S-\M-S-⟨Space⟩M-hM-lM-,M-.M-S-,M-S-.M-⟨Return⟩M-j,
M-⟨TAB⟩M-k,
M-S-⟨TAB⟩M-mM-S-jM-S-kM-bM-xM-S-xM-⟨n⟩M-S-⟨n⟩M-⟨Right⟩M-⟨Left⟩M-⟨Up⟩M-⟨Down⟩M-aM-S-⟨Right⟩M-S-⟨Left⟩M-sM-S-sM-S-vM-tM-S
⟨Delete⟩M-S-iM-wM-S-wM-S-rM-vM--M-=M-S--M-S-=M-[M-]M-S-[M-S-]M-S-/M-/M-sI nomi delle azioni e le relative descrizioni sono le seguenti:
termquitspectrwm.restartspectrwm.cycle_layoutflip_layoutstack_resetmaster_shrinkmaster_growmaster_addmaster_delstack_incstack_decswap_mainfocus_nextfocus_prevfocus_mainswap_nextswap_prevbar_togglewind_delwind_killws_nmvws_nws_nextws_prevws_next_allws_prev_allws_priorscreen_nextscreen_prevscreenshot_allscreenshot_windversionfloat_togglelockinitscriconifyuniconifyalways_raisewidth_shrinkwidth_growheight_shrinkheight_growmove_leftmove_rightmove_upmove_downname_workspacesearch_workspacesearch_winLe scorciatoie personalizzate sono specificate nel file di configurazione come segue:
bind[<azione>] =
<tasti>⟨azione⟩ è una delle azioni elencate sopra (oppure nulla) e ⟨tasti⟩ è dato da zero o più modificatori (MOD, Mod1, Shift, ecc.) e uno o più tasti normali (b, space, ecc.), separati da "+". Per esempio:
bind[reset] = Mod4+q # assegna reset ai tasti Windows + q bind[] = Mod1+q # rimuovi l'assegnazione di Alt + q
Più combinazioni di tasti possono essere assegnate alla stessa azione.
I file di mappatura per svariati layout di tastiera sono elencati qui sotto. Questi file possono essere utilizzati tramite la chiave di configurazione keyboard_mapping per caricare scorciatoie create appositamente per un determinato layout di tastiera.
scrotwm_cz.confscrotwm_es.confscrotwm_fr.confscrotwm_fr_ch.confscrotwm_se.confscrotwm_us.confspectrwm fornisce la possibilità di
specificare dei "quirk" per la gestione di finestre che devono
subire un trattamento speciale da un gestore di finestre tiling, come ad
esempio alcune finestre di dialogo e applicazioni a schermo intero.
I quirk abilitati di default sono elencati qui sotto:
I quirk sono descritti qui sotto:
I quirk personalizzati vanno specificati nel file di configurazione come segue:
quirk[<classe>:<nome>] =
<quirk> [+ <quirk> ...⟨classe⟩ e ⟨nome⟩ specificano a quali finestre i quirk vanno applicati, e ⟨quirk⟩ è uno dei quirk presente nella lista sopra. Ad esempio:
quirk[MPlayer:xv] = FLOAT + FULLSCREEN + FOCUSPREV quirk[pcb:pcb] = NONE # rimuovi un quirk precedentemente specificato
È possibile ottenere ⟨classe⟩ e ⟨nome⟩ usando xprop(1) e facendo click sulla finestra desiderata. Nel seguente esempio è stato fatto click sulla finestra principale di Firefox:
$ xprop | grep WM_CLASS WM_CLASS(STRING) = "Navigator", "Firefox"
Bisogna tenere conto del fatto che usare grep(1) per trovare WM_CLASS inverte la classe e il nome. Nell'esempio precedente, la dichiarazione del quirk sarebbe
quirk[Firefox:Navigator] = FLOAT
spectrwm assegna automaticamente i quirk
alle finestre in base al valore della proprietà _NET_WM_WINDOW_TYPE
in base al seguente schema:
In tutti gli altri casi, nessun quirk è automaticamente assegnato alla finestra. I quirk specificati nel file di configurazione hanno la precedenza sui quirk assegnati in automatico.
spectrwm implementa in maniera parziale la
specifica Extended Window Manager Hints (EWMH). Ciò permette di
controllare sia le finestre che spectrwm stesso
tramite script e programmi esterni. Per renderlo possibile,
spectrwm risponde ad alcuni eventi di tipo
ClientMessage; questo tipo di messaggio può essere inviato da un
terminale usando programmi come wmctrl(1) e
xdotool(1). Per il formato esatto di questi messaggi, si
veda la specifica EWMH.
L'id della finestra che ha il focus è memorizzato nella proprietà _NET_ACTIVE_WINDOW della root window. È quindi possibile ottenere il titolo della finestra attiva usando xprop(1) e grep(1)
$ WINDOWID=`xprop -root _NET_ACTIVE_WINDOW | grep -o "0x.*"` $ xprop -id $WINDOWID WM_NAME | grep -o "\".*\""
Per dare il focus ad una finestra, è sufficiente inviare il messaggio _NET_ACTIVE_WINDOW alla root window. Ad esempio, usando wmctrl(1) (supponendo che 0x4a0000b sia l'id della finestra a cui dare il focus):
$ wmctrl -i -c 0x4a0000b
Per chiudere una finestra si può inviare il messaggio _NET_CLOSE_WINDOW alla root window. Ad esempio, usando wmctrl(1) (supponendo che 0x4a0000b sia l'id della finestra da chiudere):
$ wmctrl -i -c 0x4a0000b
Per passare una finestra da floating a tiled si può aggiungere o rimuovere l'atomo _NET_WM_STATE_ABOVE alla proprietà _NET_WM_STATE della finestra, inviando il messaggio _NET_WM_STATE alla root window. Ad esempio, usando wmctrl(1) (supponendo che 0x4a0000b sia l'id della finestra):
$ wmctrl -i -r 0x4a0000b -b toggle,_NET_WM_STATE_ABOVE
Le finestre floating possono essere ridimensionate o spostate inviando il messaggio _NET_MOVERESIZE_WINDOW alla root window. Ad esempio, usando wmctrl(1) (supponendo che 0x4a0000b sia l'id della finestra da spostare):
$ wmctrl -i -r 0x4a0000b -e 0,100,50,640,480
Questo comando sposta la finestra in (100,50) e la ridimensiona a 640x480.
I messaggi _NET_MOVERESIZE_WINDOW vengono ignorati per le finestre stacked.
È possibile riavviare spectrwm
inviandogli il segnale HUP.
spectrwm dell'utente.spectrwm.spectrwm prende ispirazione da xmonad
& dwm.
spectrwm è stato scritto da:
Marco
Peereboom ⟨marco@peereboom.us⟩Ryan Thomas
McBride ⟨mcbride@countersiege.com⟩Darrin
Chandler ⟨dwchandler@stilyagin.com⟩Pierre-Yves
Ritschard ⟨pyr@spootnik.org⟩Tuukka
Kataja ⟨stuge@xor.fi⟩Jason L.
Wright ⟨jason@thought.net⟩Reginald
Kennedy ⟨rk@rejii.com⟩Lawrence
Teo ⟨lteo@lteo.net⟩Tiago
Cunha ⟨tcunha@gmx.com⟩