Ubuntu Manpages

spectrwm

gestore di finestre per X11

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:

Meta
Shift
⟨Nome⟩
Tasto nome
Tasto 1 (sinistro) del mouse
Tasto 3 (destro) del mouse

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 = red

Per abilitare o disabilitare un'opzione, usare i valori 1 o 0 rispettivamente.

Il file supporta le seguenti chiavi:

Esegue un'applicazione nel workspace specificato all'avvio. Definito nel formato ws[<idx>]:applicazione, eg. ws[2]:xterm esegue un xterm nell'area di lavoro 2.
Script esterno che aggiunge informazioni come la carica della batteria alla barra di stato.
Posiziona la barra di stato sul fondo dello schermo anziché in cima.
[x]
Colore del bordo della barra di stato nello schermo x.
Spessore del bordo attorno alla barra di stato in pixel. Il bordo può essere disabilitato usando il valore 0.
[x]
Colore della barra di stato nello schermo x.
Frequenza di aggiornamento, in secondi, dello script esterno che aggiunge informazioni alla barra di stato.
Abilita o disabilita la barra di stato.
Font della barra di stato.
[x]
Colore del testo della barra di stato nello schermo x.
Giustifica il testo nella barra di stato. I valori possibili sono left (sinistra), center (centro), e right (destra).
[x]
Assegna una combinazione di tasti all'azione x. Vedere la sezione SCORCIATOIE più sotto.
Spessore del bordo delle finestre in pixel. Il valore 0 disabilita il bordo.
Abilita o disabilita l'orologio nella barra di stato. Se disabilitato, usando il valore 0, è possibile usare un orologio personalizzato nello script specificato in bar_action.
Colore del bordo della finestra che ha il focus.
Colore del bordo delle finestre che non hanno il focus.
Alcune applicazioni hanno finestre di dialogo troppo piccole per risultare utili. Questa è la percentuale dello schermo che verrà usata per le finestre di dialogo: ad esempio, 0.6 indica il 60% della dimensione fisica dello schermo.
Rimuovi il bordo dalle finestre se la barra di stato è nascosta e c'è una sola finestra sullo schermo.
Se viene usato il valore follow_cursor (segui il cursore), il gestore di finestre darà il focus alla finestra sotto il puntatore quando si cambia area di lavoro o si creano finestre.
Ignora tutte le scorciatoie esistenti e carica delle nuove scorciatoie dal file specificato. Vedere la sezione FILE DI MAPPATURA DELLA TASTIERA per una lista di file di mappatura che vengono forniti per diversi layout di tastiera.
Layout da utilizzare all'avvio. Definito nel formato ws[<idx>]:master_grow:master_add:stack_inc:layout:always_raise:stack_mode, eg. ws[2]:-4:0:1:0:horizontal assegna il layout orizzontale all'area di lavoro 2, riduce l'area principale di 4 unità, aggiunge una finestra allo stack e mantiene il comportamento predefinito per quanto riguarda le finestre floating. I valori possibili per stack_mode sono vertical (verticale), horizontal (orizzontale) e fullscreen (a schermo intero).

Fare 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.

Cambia il tasto modificatore. Solitamente Mod1 è il tasto ALT e Mod4 è il tasto Windows su un PC.
[p]
Definisce una nuova azione per lanciare il programma p. Vedere la sezione PROGRAMMI più sotto.
[c:n]
Aggiunge un "quirk" per le finestre di classe c e nome n. Vedere la sezione QUIRK più sotto.
Alloca una regione personalizzata, rimuovendo qualsiasi regione automaticamente rilevata stia occupando lo stesso spazio sullo schermo. Definita nel formato screen[<idx>]:LARGHEZZAxALTEZZA+X+Y, ad esempio screen[1]:800x1200+0+0.

Per 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.

Abilita o disabilita la visualizzazione dell'algoritmo di stacking corrente nella barra di stato.
Imposta la dimensione minima preferita per il terminale. Se questo valore è maggiore di 0, spectrwm 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.
Abilita o disabilita la visualizzazione della classe della finestra nella barra di stato. Impostare a 1 per abilitare.
Abilita o disabilita la visualizzazione del titolo della finestra nella barra di stato. Impostare a 1 per abilitare.
Abilita o disabilita l'hint "urgente". In molti emulatori di terminale, il supporto deve essere abilitato separatamente: per xterm, ad esempio, è necessario aggiungere la riga xterm.urgentOnBell: true al file .Xdefaults.
Abilita o disabilita la visualizzazione dei valori correnti di master e stack nella barra di stato. Impostare a 1 per abilitare.
Abilita o disabilita la visualizzazione del nome della finestra nella barra di stato. Impostare a 1 per abilitare.

I 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:

xterm
screenshot.sh full
screenshot.sh window
xlock
initscreen.sh
dmenu_run -fn $bar_font -nb $bar_color -nf $bar_font_color -sb $bar_border -sf $bar_color

I 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:

Dà focus alla finestra
Muove la finestra
Ridimensiona la finestra
Ridimensiona la finestra mantenendola centrata

Le scorciatoie da tastiera di default sono:

⟨Return⟩
term
menu
quit
restart
⟨Space⟩
cycle_layout
M-S-\
flip_layout
⟨Space⟩
stack_reset
master_shrink
master_grow
master_add
master_del
stack_inc
stack_dec
⟨Return⟩
swap_main
, M-⟨TAB⟩
focus_next
, M-S-⟨TAB⟩
focus_prev
focus_main
swap_next
swap_prev
bar_toggle
wind_del
wind_kill
⟨n⟩
ws_n
⟨n⟩
mvws_n
⟨Right⟩
ws_next
⟨Left⟩
ws_prev
⟨Up⟩
ws_next_all
⟨Down⟩
ws_prev_all
ws_prior
⟨Right⟩
screen_next
⟨Left⟩
screen_prev
screenshot_all
screenshot_wind
version
float_toggle
⟨Delete⟩
lock
initscr
iconify
uniconify
always_raise
button2
width_shrink
width_grow
height_shrink
height_grow
move_left
move_right
move_up
move_down
name_workspace
search_workspace
search_win

I nomi delle azioni e le relative descrizioni sono le seguenti:

Lancia un nuovo terminale (vedi PROGRAMMI più in alto).
Menu (vedi PROGRAMMI più in alto).
Chiude spectrwm.
Riavvia spectrwm.
Cambia layout.
Inverti l'area principale e l'area di stacking.
Re-inizializza il layout.
Restringe l'area principale.
Allarga l'area principale.
Aggiunge finestre all'area principale.
Rimuove finestre dall'area principale.
Aumenta il numero di righe/colonne all'area di stacking.
Riduce il numero di righe/colonne dall'area di stacking.
Muove la finestra corrente nell'area principale.
Dà il focus alla finestra successiva.
Dà il focus alla finestra precedente.
Dà il focus alla finestra principale.
Scambia con la finestra successiva dell'area di lavoro.
Scambia con la finestra precedente dell'area di lavoro.
Mostra/nascondi la barra di stato da tutte le aree di lavoro.
Chiude la finestra corrente.
Distrugge la finestra corrente.
n
Passa all'area di lavoro n, dove n è compreso tra 1 e 10.
n
Sposta la finestra corrente nell'area di lavoro n, dove n è compreso tra 1 e 10.
Passa all'area di lavoro non vuota successiva.
Passa all'area di lavoro non vuota precedente.
Passa all'area di lavoro successiva.
Passa all'area di lavoro precedente.
Passa all'ultima area di lavoro visitata.
Sposta il puntatore nella regione successiva.
Sposta il puntatore nella regione precedente.
Cattura uno screenshot dell'intero schermo, se abilitato (vedere la sezione PROGRAMMI più in alto).
Cattura uno screenshot di una singola finestra, se abilitato (vedere la sezione PROGRAMMI più in alto).
Abilita/disabilita il numero di versione nella barra di stato.
Passa la finestra che ha il focus da floating a tiled.
Blocca lo schermo (vedere la sezione PROGRAMMI più in alto).
Re-inizializza gli schermi fisici (vedere la sezione PROGRAMMI più in alto).
Minimizza (unmap) la finesta che ha il focus.
Massimizza (map) la finestra selezionata tramite dmenu.
Quando è abilitato, le finestre floating possono essere oscurate da finestre tiled.
Simula la pressione del tasto centrale del mouse.
Riduce la larghezza di una finestra floating.
Aumenta la larghezza di una finestra floating.
Riduce l'altezza di una finestra floating.
Aumenta l'altezza di una finestra floating.
Sposta una finestra floating di un passo verso sinistra.
Sposta una finestra floating di un passo verso destra.
Sposta una finestra floating di un passo verso l'alto.
Sposta una finestra floating di un passo verso il basso.
Assegna un nome all'area di lavoro corrente.
Cerca un'area di lavoro.
Cerca una finestra.

Le 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.

Layout di tastiera per la Repubblica Ceca
Layout di tastiera per la Spagna
Layout di tastiera per la Francia
Layout di tastiera per la Svizzera Francese
Layout di tastiera per la Svezia
Layout di tastiera per gli Stati Uniti

spectrwm 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:

Firefox-bin:firefox-bin
TRANSSZ
Firefox:Dialog
FLOAT
Gimp:gimp
FLOAT + ANYWHERE
MPlayer:xv
FLOAT + FULLSCREEN + FOCUSPREV
OpenOffice.org 2.4:VCLSalFrame
FLOAT
OpenOffice.org 3.1:VCLSalFrame
FLOAT
pcb:pcb
FLOAT
xine:Xine Window
FLOAT + ANYWHERE
xine:xine Panel
FLOAT + ANYWHERE
xine:xine Video Fullscreen Window
FULLSCREEN + FLOAT
Xitk:Xitk Combo
FLOAT + ANYWHERE
Xitk:Xine Window
FLOAT + ANYWHERE
XTerm:xterm
XTERM_FONTADJ

I quirk sono descritti qui sotto:

FLOAT
Questa finestra deve essere lasciata libera di muoversi (float).
TRANSSZ
Aggiusta la dimensione delle finestre troppo piccole usando dialog_ratio (vedere FILE DI CONFIGURAZIONE).
ANYWHERE
Consente alla finestra di decidere da sola dove posizionarsi.
XTERM_FONTADJ
Ridimensiona il font di xterm quando viene ridimensionata la finestra.
FULLSCREEN
Rimuove i bordi, consentendo alla finestra di usare l'intera dimensione dello schermo.
FOCUSPREV
Quando la finestra viene chiusa, dà il focus alla finestra che aveva il focus precedente anziché all'applicazione precedente nello stack.

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:

_NET_WM_WINDOW_TYPE_DOCK
FLOAT + ANYWHERE
_NET_WM_WINDOW_TYPE_TOOLBAR
FLOAT + ANYWHERE
_NET_WM_WINDOW_TYPE_UTILITY
FLOAT + ANYWHERE
_NET_WM_WINDOW_TYPE_SPLASH
FLOAT
_NET_WM_WINDOW_TYPE_DIALOG
FLOAT

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.conf
impostazioni di spectrwm dell'utente.
/etc/spectrwm.conf
impostazioni globali di spectrwm.

spectrwm prende ispirazione da xmonad & dwm.

spectrwm è stato scritto da:

⟨marco@peereboom.us⟩
 
⟨mcbride@countersiege.com⟩
 
⟨dwchandler@stilyagin.com⟩
 
⟨pyr@spootnik.org⟩
 
⟨stuge@xor.fi⟩
 
⟨jason@thought.net⟩
 
⟨rk@rejii.com⟩
 
⟨lteo@lteo.net⟩
 
⟨tcunha@gmx.com⟩