NOME¶
spectrwm
—
gestore di finestre per X11
SINTASSI¶
spectrwm
DESCRIZIONE¶
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 molto più importanti. Ha delle
impostazioni predefinite ragionevoli e non richiede all'utente di imparare un
nuovo linguaggio per modificarne la configurazione. È stato scritto
dagli hacker per gli hacker, ed ha come obiettivo quello di essere piccolo,
compatto e veloce.
All'avvio,
spectrwm
legge le impostazioni
presenti nel suo file di configurazione,
spectrwm.conf. Vedere la sezione
FILE DI
CONFIGURAZIONE più sotto.
Le seguenti notazioni verranno utilizzate all'interno di questa pagina:
M
- Meta
S
- Shift
- ⟨
Name
⟩
- Tasto Name
M1
- Tasto 1 (sinistro) del mouse
M3
- Tasto 3 (destro) del mouse
spectrwm
è molto semplice da usare. La
maggior parte delle azioni vengono svolte utilizzando combinazioni di tasti
sulla tastiera o sul mouse. Vedere la sezione
SCORCIATOIE più sotto
per informazioni sulle impostazioni predefinite e sulle possibilità di
personalizzazione.
FILE DI CONFIGURAZIONE¶
spectrwm
da precedenza al file di
configurazione specifico dell'utente,
~/.spectrwm.conf. Se quel file non è
disponibile, tenta di utilizzare il file di configurazione globale
/etc/spectrwm.conf.
Il formato del file è
keyword
=
setting
Ad esempio:
color_focus = red
Le impostazioni di tipo binario possono essere abilitate e disabilitate
utilizzando rispettivamente i valori 1 e 0.
I colori devono essere specificati usando il formato usato da
XQueryColor(3).
I commenti iniziano con #. Qualora fosse necessario usare usare
‘
#
’ come parte di un'opzione, questo
dovrà essere preceduto da un backslash, eg. \#.
Il file di configurazione supporta le seguenti impostazioni:
autorun
- All'avvio, esegue un'applicazione nell'area di lavoro specificata. Il
formato da utilizzare è
ws
[idx]:application,
eg. ws[2]:xterm esegue xterm(1) nell'area di
lavoro 2.
bar_action
- Script esterno che produce informazioni aggiuntive, come ad esempio quelle
sullo stato di carica della batteria, da inserire nella barra di
stato.
bar_at_bottom
- Posiziona la barra di stato in fondo ad ogni regione anziché in
cima.
bar_borders
[x]
- Colore del bordo della barra di stato nello schermo
x.
bar_border_unfocus
[x]
- Colore del bordo della barra di stato nelle regioni dello schermo
x che non hanno il focus.
bar_border_width
- Imposta lo spessore del bordo della barra di stato, in pixel. Il bordo
può essere disabilitato usando il valore 0.
bar_color
[x]
- Colore di sfondo della barra di stato nello schermo
x.
bar_enabled
- Imposta il valore predefinito di
bar_toggle
; il valore predefinito per
questa opzione è 1.
bar_enabled_ws
[x]
- Imposta il valore predefinito di
bar_toggle_ws
per l'area di lavoro
x; il valore predefinito per questa
opzione è 1.
bar_font
- Font da usare per la barra di stato. Il font può essere specificato
usando Xft o X Logical Font Description (XLFD). È possibile
specificare dei font secondari separandoli tra loro con una virgola. Se
tutte le specifiche sono nel formato XLFD verranno usati i gruppi di font;
se almeno una delle specifiche è in formato Xft, verrà usato
Xft. Quando Xft è in uso, verrà usato solo il primo font
caricato con successo anche nel caso in cui non dovesse comprendere tutti
i glifi necessari. L'impostazione predefinita prevede l'uso dei gruppi di
font; è bene tenere conto del fatto che
dmenu(1) non supporta Xft.
Esempio con Xft:
bar_font = Terminus:style=Regular:pixelsize=14:antialias=true
bar_font = -*-profont-medium-*-*-*-11-*-*-*-*-*-*-*,Terminus:pixelsize=14,-*-clean-medium-*-*-*-12-*-*-*-*-*-*-*
Esempio con gruppi di font:
bar_font = -*-terminus-medium-*-*-*-14-*-*-*-*-*-*-*
bar_font = -*-profont-medium-*-*-*-11-*-*-*-*-*-*-*,-*-terminus-medium-*-*-*-14-*-*-*-*-*-*-*,-*-clean-medium-*-*-*-12-*-*-*-*-*-*-*
Per ottenere un elenco dei font disponibili sul proprio sistema, usare
fc-list(1) o
xlsfonts(1). L'applicazione
xfontsel(1) può essere d'aiuto per il
formato XLFD.
bar_font_color
[x]
- Colore del testo nella barra di stato nello schermo
x.
bar_format
- Imposta il formato da utilizzare per la barra di stato, sovrascrivendo
clock_format
e tutte le opzioni che
terminano con enabled
. Il formato viene
passato a strftime(3) prima di essere usato,
e può contenere le seguenti sequenze di caratteri:
Sequenza di caratteri |
Sostituita con |
+< |
Lascia uno spazio |
+A |
Output dello script esterno |
+C |
Classe della finestra corrente (da WM_CLASS) |
+D |
Nome dell'area di lavoro corrente |
+F |
Indicatore di float |
+I |
Indice dell'area di lavoro corrente |
+M |
Numero di finestre minimizzate nell'area di lavoro corrente |
+N |
Numero dello schermo corrente |
+P |
Classe e istanza della finestra corrente, separate da due punti |
+S |
Algoritmo di gestione delle finestre in uso |
+T |
Istanza della finestra corrente (da WM_CLASS) |
+U |
Indicatore di urgenza |
+V |
Versione del programma |
+W |
Nome della finestra corrente (da _NET_WM_NAME o WM_NAME) |
++ |
Il carattere ‘+ ’ |
Tutte le sequenze di caratteri possono limitare il numero di caratteri
massimo utilizzato, eg. +64A. Il testo che non contribuisce a formare una
di queste sequenze di caratteri viene copiato senza subire modifiche.
bar_justify
- Allinea il test all'interno della barra di stato. I valori possibili sono
left (sinistra),
center (centro) e
right (destra).
Se il valore scelto non è left, il
testo potrebbe non risultare allineato correttamente. Vedere
bar_format
per maggiori
informazioni.
bind
[x]
- Associa una combinazione di tasti all'azione
x. Vedere la sezione
SCORCIATOIE più
sotto.
border_width
- Imposta lo spessore del bordo delle finestre, in pixel. Il bordo
può essere disabilitato usando il valore 0.
boundary_width
- Imposta la larghezza dell'area di contenimento delle regioni, in pixel.
Questo valore permette di controllare di quanto una finestra debba essere
trascinata o ridimensionata oltre il limite di una regione prima che venga
considerata al di fuori di essa. Questa impostazione non viene presa in
considerazione quando le finestre vengono manipolate utilizzando la
tastiera. L'area di contenimento può essere disabilitata usando il
valore 0.
clock_enabled
- Abilita o disabilita l'orologio nella barra di stato. Se viene usato il
valore 0, è possibile inserire un orologio personalizzato nello
script esterno definito in
bar
action
.
iconic_enabled
- Visualizza nella barra di stato il numero di finestre minimizzate. Questo
indicatore può essere abilitato usando il valore 1.
color_focus
- Colore del bordo della finestra che detiene il focus. Il colore
predefinito è il rosso.
color_focus_maximized
- Colore del bordo della finestra che detiene il focus, se massimizzata. Il
colore predefinito è quello usato per
color_focus
.
color_unfocus
- Colore del bordo delle finestre che non detengono il focus. Il colore
predefinito è rgb:88/88/88.
color_unfocus_maximized
- Colore del bordo delle finestre che non detengono il focus, se
massimizzate. Il colore predefinito è quello usato per
color_unfocus
.
dialog_ratio
- Alcune applicazioni creano finestre di dialogo troppo piccole per essere
utilizzate. Questa opzione indica la percentuale dello schermo da
utilizzare per le finestre di dialogo: ad esempio, il valore 0.6 indica
che dovrà essere usato il 60% dello spazio disponibile.
disable_border
- Non mostrare i bordi quando la barra di stato è nascosta e
c'è una sola finestra nella regione.
focus_close
- Imposta quale finestra riceverà il focus in seguito alla chiusura
della finestra che lo detiene al momento. I valori possibili sono
first (prima),
next (successiva),
previous (precedente, impostazione
predefinita) e last (ultima).
next e
previous sono intese relativamente alla
finestra che è stata chiusa.
focus_close_wrap
- Se abilitata, l'ultima finestra riceverà il focus quando l'ultima
viene chiusa, e viceversa. Questa opzione può essere disabilitata
usando il valore 0.
focus_default
- Finestra che deve ricevere il focus quando nessun'altra finestra lo
detiene. I valori possibili sono first
(prima) e last (ultima, impostazione
predefinita).
focus_mode
- Comportamento del focus in relazione al cursore del mouse. I valori
possibili sono:
- default
- Modifica il focus quando viene attraversato un bordo in seguito ad un
movimento del cursore o all'interazione con una finestra.
- follow
- Modifica il focus ogni volta che il cursore attraversa un bordo, anche
se questo avviene in seguito al passaggio ad un'area di lavoro diversa
o ad un cambio di layout.
- manual
- Modifica il focus solo quando si interagisce con una finestra.
java_workaround
- Evita alcuni problemi di rendering nelle GUI Java impersonando il window
manager LG3D, scritto da Sun. Il valore predefinito è 1.
keyboard_mapping
- Rimuove tutte le scorciatoie da tastiera esistenti e carica le nuove
scorciatoie dal file specificato. Questo permette di caricare scorciatoie
specifiche del proprio layout di tastiera. Vedere la sezione
MAPPE DI TASTIERA
più sotto per un elenco dei file che vengono forniti.
layout
- Imposta il layout da utilizzare all'avvio. Definito nel formato
ws
[idx]:master_grow:master_add:stack_inc:always_raise:stack_mode,
eg. ws[2]:-4:0:1:0:horizontal configura l'area di lavoro 2 per utilizzare
un algoritmo di stacking orizzontale, riduce l'area principale di 4
unità e aggiunge una finestra all'area di stacking, mantenendo il
comportamento predefinito per le finestre floating. I valori possibili per
stack_mode sono
vertical,
vertical_flip,
horizontal,
horizontal_flip and
fullscreen. Vedere
master_grow
,
master_shrink
,
master_add
,
master_del
,
stack_inc
,
stack_dec
, e
always_raise
per maggiori informazioni.
Le opzioni che controllano gli algoritmi di gestione delle finestre sono
complesse e possono influenzare altre opzioni, quindi è opportuno
prendere confidenza con esse prima di utilizzare l'opzione
layout
.
Questa impostazione non viene applicata al riavvio.
modkey
- Cambia il modificatore. Solitamente Mod1 è il tasto Alt e Mod4 il
tasto Windows su un PC.
name
- Imposta il nome di un'area di lavoro all'avvio. Definito nel formato
ws
[idx]:name,
eg. ws[1]:Console assegna il nome “Console” all'area di
lavoro 1.
program
[p]
- Definisce la nuova azione p,
corrispondente all'esecuzione di un programma. Vedere la sezione
PROGRAMMI più
sotto.
quirk
[c:i:n]
- Aggiunge un "quirk" per le finestre di classe
c, istanza
i e nome
n. Vedere la sezione
QUIRK più sotto.
region
- Definisce una regione personalizzata, rimuovendo tutte le regioni create
in automatico che occupano la stessa parte dello schermo. Definita nel
formato
screen
[idx]:widthxheight+x+y,
eg. screen[1]:800x1200+0+0.
Per fare sì che una regione copra più monitor, è
sufficiente definirla in modo che li occupi tutti, eg.
screen[1]:2048x768+0+0 definisce una regione che copre due monitor con
risoluzione 1024x768 posizionati uno di fianco all'altro.
region_padding
- Larghezza, in pixel, dello spazio lasciato vuoto all'interno di una
regione. Questa opzione può essere disabilitata usando il valore
0.
spawn_position
- Posizione da assegnare alle finestre al momento della loro creazione. I
valori possibili sono first (prima),
next (successiva),
previous (precedente) e
last (ultima, predefinito).
next e
previous sono intese relativamente alla
finestra che detiene il focus.
stack_enabled
- Abilita o disabilita la visualizzazione dell'algoritmo di stacking in uso
all'interno della barra di stato.
term_width
- Imposta la larghezza minima desiderata per i terminali. Se il valore
è maggiore di 0,
spectrwm
cercherà di regolare la dimensione del font usato dal terminale per
fare sì che la larghezza rimanga superiore ad esso mentre la
finestra viene ridimensionata. Solo xterm(1)
è supportato al momento. L'eseguibile di
xterm(1) non deve avere i bit setuid o setgid
abilitati, contrariamente a quanto avviene nella maggior parte dei
sistemi. L'utente potrebbe dover creare una copia dell'eseguibile di
xterm(1), priva dei bit setuid e setgid, e
modificare program[term] (vedere la sezione
PROGRAMMI più sotto)
in modo che punti a questa copia.
title_gap
- Larghezza, in pixel, dello spazio lasciato vuoto tra una finestra e
l'altra. L'utilizzo di un valore negativo fa sì che le finestre si
sovrappongano. Se il valore impostato è l'opposto di
border_width
, non verrà
visualizzato alcun bordo tra le finestre. Questa opzione può essere
disabilitata usando il valore 0.
urgent_collapse
- Disabilita la visualizzazione di un testo sostitutivo per le aree di
lavoro che non contengono finestre urgenti. Questa opzione può
essere abilitata usando il valore 1.
urgent_enabled
- Abilita o disabilita la visualizzazione dell'indicatore di urgenza
all'interno della barra di stato. Molti emulatore di terminale devono
essere configurati esplicitamente per fare sì che il carattere
"bell" causi la modifica dello stato di urgenza della finestra.
Ad esempio, in xterm(1), è necessario
aggiungere al file .Xdefaults la
seguente riga:
verbose_layout
- Abilita o disabilita la visualizzazione del numero di finestre nell'area
principale e del numero di righe (o colonne) nell'area di stacking. Questa
opzione può essere disabilitata usando il valore 1. Vedre
master_add,
master_del,
stack_inc e
stack_dec per maggiori informazioni.
window_class_enabled
- Abilita o disabilita la visualizzazione del nome della classe (da
WM_CLASS) all'interno della barra di stato. Questa opzione può
essere abilitata usando il valore 1.
window_instance_enabled
- Abilita o disabilita la visualizzazione del nome dell'istanza (da
WM_CLASS) all'interno della barra di stato. Questa opzione può
essere abilitata usando il valore 1.
window_name_enabled
- Abilita o disabilita la visualizzazione del titolo della finestra (da
_NET_WM_NAME o WM_NAME) all'interno della barra di stato. Questa opzione
può essere abilitata usando il valore 1.
Per impedire che titoli di finestra troppo lunghi impediscano di
visualizzare altre informazioni, lo spazio dedicato al titolo è
limitato a 64 caratteri. Vedere
bar_format
per maggiori
informazioni.
warp_pointer
- Posiziona il cursore del mouse al centro della finestra che ha il focus
quando vengono utilizzate scorciatoie da tastiera per modificare il focus,
cambiare area di lavoro, cambiare regione, etc. Questa opzione può
essere abilitata usando il valore 1.
workspace_limit
- Imposta il numero di aree di lavoro disponibili. Il valore minimo è
1, quello massimo è 22, quello predefinito è 10.
PROGRAMMI¶
spectrwm
consente di definire azioni
personalizzate per l'esecuzione di programmi, e di assegnare queste azioni a
scorciatoie da tastiera come è possibile per quelle predefinite. Vedere
la sezione
SCORCIATOIE
più sotto.
I programmi vengono definiti come segue:
program[action] =
progpath
[]
action è qualsiasi identificatore che
non vada in conflitto con una delle azioni predefinite,
progpath è il percorso del programma
da eseguire e
arg sono gli argomenti (uno o
più) da passare al programma.
Se il percorso o gli argomenti comprendono il carattere
‘
#
’, questo dovrà essere
preceduto da un carattere di escape, diventando \#.
I seguenti argomenti verranno sostituiti, al momento dell'esecuzione, con il
valore assegnato all'opzione corrispondente:
Esempio:
program[ff] = /usr/local/bin/firefox http://spectrwm.org/
bind[ff] = MOD+Shift+b # Ora M-S-b esegue Firefox
Per eliminare la scorciatoia appena definita:
Programmi predefiniti:
- dmenu_run $dmenu_bottom -fn $bar_font -nb $bar_color -nf $bar_font_color
-sb $bar_border -sf $bar_color
term
- x-terminal-emulator
lock
- xscreensaver-command -lock # opzionale
initscr
- initscreen.sh # opzionale
screenshot_all
- screenshot.sh full # opzionale
screenshot_wind
- screenshot.sh window # opzionale
I programmi opzionali non verranno verificati a meno di non essere ridefiniti
dall'utente. Se uno dei programmi predefiniti fallisce la verifica, è
possibile risolvere l'errore installando il programma corrispondente,
modificando il percorso del programma o disabilitando la scorciatoia relativa.
Ad esempio, per ridefinire
menu
:
Per disabilitare la scorciatoia assegnata a
menu
ed impedirne la verifica:
SCORCIATOIE¶
spectrwm
fornisce numerose azioni che possono
essere attivate usando combinazioni di tasti sulla tastiera o sul mouse.
Le combinazioni di tasti che coinvolgono il mouse sono le seguenti:
M1
- Assegna il focus ad una finestra
M-M1
- Sposta una finestra
M-M3
- Ridimensiona una finestra
M-S-M3
- Ridimensiona una finestra, mantenendola centrata
Le scorciatoie da tastiera predefinite sono le seguenti:
Le azioni predefinite disponibili sono le seguenti:
term
- Esegue un terminale (vedere la sezione
PROGRAMMI più in
alto).
- Mostra il menu (vedere la sezione
PROGRAMMI più in
alto).
quit
- Chiude
spectrwm
.
restart
- Riavvia
spectrwm
.
cycle_layout
- Passa al layout successivo.
flip_layout
- Inverte l'area principale e quella di stacking.
stack_reset
- Riporta il layout al suo stato iniziale.
master_shrink
- Riduce la dimensione dell'area principale.
master_grow
- Aumenta la dimensione dell'area principale.
master_add
- Aggiunge una finestra all'area principale.
master_del
- Rimuove una finestra dall'area principale.
stack_inc
- Aggiunge una riga (o colonna) all'area di stacking.
stack_dec
- Rimuove una riga (o colonna) dall'area di stacking.
swap_main
- Sposta la finestra corrente nell'area principale.
focus_next
- Assegna il focus alla finestra successiva.
focus_prev
- Assegna il focus alla finestra precedente.
focus_main
- Assegna il focus alla finestra principale dell'area di lavoro.
focus_urgent
- Assegna il focus alla finestra urgente successiva. Verrà
effettuato, se necessario, il passaggio ad un'altra area di lavoro.
swap_next
- Inverte la finestra corrente con quella successiva.
swap_prev
- Inverte la finestra corrente con quella precedente.
bar_toggle
- Modifica la visibilità della barra di stato a livello globale.
bar_toggle_ws
- Modifica la visibilità della barra di stato nell'area di lavoro
corrente.
wind_del
- Chiude la finestra corrente.
wind_kill
- Distrugge la finestra corrente.
ws_
n
- Passa all'area di lavoro n, dove
n è un valore compreso tra 1 e
workspace_limit
.
mvws_
n
- Sposta la finestra corrente nell'area di lavoro
n, dove
n è un numero compreso tra 1 e
workspace_limit
.
rg_
n
- Assegna il focus alla regione n, dove
n è un numero compreso tra 1 e
9.
mvrg_
n
- Sposta la finestra corrente nella regione
n, dove
n è un numero compreso tra 1 e
9.
ws_next
- Passa all'area di lavoro non vuota successiva.
ws_prev
- Passa all'area di lavoro non vuota precedente.
ws_next_all
- Passa all'area di lavoro successiva.
ws_prev_all
- Passa all'area di lavoro precedente.
ws_next_move
- Passa all'area di lavoro successiva, spostando allo stesso tempo la
finestra corrente.
ws_prev_move
- Passa all'area di lavoro precedente, spostando allo stesso tempo la
finestra corrente.
ws_prior
- Passa all'ultima area di lavoro visitata.
rg_next
- Passa alla regione successiva.
rg_prev
- Passa alla regione precedente.
screenshot_all
- Cattura l'intera schermata chiamando l'apposito script (vedere la sezione
PROGRAMMI più in
alto).
screenshot_wind
- Cattura una singola finestra chiamando l'apposito script (vedere la
sezione PROGRAMMI
più in alto).
version
- Modifica la visibilità del numero di versione all'interno della
barra di stato.
float_toggle
- Modifica la finestra che detiene il focus, portandola da floating a tiled
e viceversa.
lock
- Blocca lo schermo (vedere la sezione
PROGRAMMI più in
alto).
initscr
- Inizializza nuovamente tutti gli schermi (vedere la sezione
PROGRAMMI più in
alto).
iconify
- Minimizza la finestra che detiene il focus.
uniconify
- Ripristina la finestra selezionata tramite
dmenu(1).
maximize_toggle
- Modifica lo stato di massimizzazione della finestra che detiene il
focus.
always_raise
- Se impostato, le finestre tiled possono oscurare le finestre
floating.
button2
- Simula la pressione del tasto centrale del mouse.
width_shrink
- Riduce la larghezza di una finestra floating.
width_grow
- Aumenta la larghezza di una finestra floating.
height_shrink
- Riduce l'altezza di una finestra floating.
height_grow
- Aumenta l'altezza di una finestra floating.
move_left
- Sposta una finestra floating verso sinistra di un'unità.
move_right
- Sposta una finestra floating verso destra di un'unità.
move_up
- Sposta una finestra floating verso l'alto di un'unità.
move_down
- Sposta una finestra floating verso il basso di un'unità.
name_workspace
- Assegna un nome all'area di lavoro corrente.
search_workspace
- Cerca un'area di lavoro.
search_win
- Cerca una finestra all'interno dell'area di lavoro corrente.
Le scorciatoie da tastiera personalizzate vengono definite come segue:
bind[action] =
keys
action è una delle azioni predefinite
descritte sopra, oppure la stringa vuota (per disabilitare la scorciatoia).
keys è composta da uno o più
tasti modificatore (eg. MOD, Mod1, Shift, etc.) e uno o più tasti
normali (eg. b, Space, etc.) separati da
‘
+
’.
Esempio:
bind[reset] = Mod4+q # Assegna l'azione reset alla scorciatoia Win+q
bind[] = Mod1+q # disabilita la scorciatoia predefinita Alt+q
Per usare il valore dell'opzione
modkey
in
una scorciatoia, specificare MOD come modificatore.
Più scorciatoie possono essere assegnate alla stessa azione.
Per usare dei caratteri non latini, come å o π, all'interno di una
scorciatoia, è necessario specificare il nome xkb del carattere
anziché il carattere stesso. Eseguendo
xev(1) e premendo un tasto mentre la finestra del
programma detiene il focus, è possibile leggere il nome xkb
corrispondente al tasto premuto. Ad esempio, per å:
KeyPress event, serial 41, synthetic NO, window 0x2600001,
root 0x15a, subw 0x0, time 106213808, (11,5), root:(359,823),
state 0x0, keycode 24 (keysym 0xe5, aring), same_screen YES,
XLookupString gives 2 bytes: (c3 a5) "å"
XmbLookupString gives 2 bytes: (c3 a5) "å"
XFilterEvent returns: False
Il nome xkb è aring. Quindi, all'interno di
spectrwm.conf sarà possibile
aggiungere la seguente riga:
bind[program] = MOD+aring
MAPPE DI TASTIERA¶
È possibile caricare le scorciatoie da un file di configurazione separato
tramite l'opzione
keyboard_mapping
: questo
consente di utilizzare scorciatoie specifiche del proprio layout di tastiera.
Vengono forniti i seguenti file:
QUIRK¶
È possibile specificare "quirk" da applicare a quelle finestre
(ad esempio applicazioni a schermo intero e finestre di dialogo) che
richiedono un comportamento speciale da parte di un gestore di finestre tiling
come
spectrwm
.
La configurazione predefinita, per quanto riguarda i quirk, è la
seguente:
- 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 disponibili sono i seguenti:
- FLOAT
- Le finestre saranno sempre floating.
- TRANSSZ
- Modifica la dimensione delle finestre di dialogo in base al valore di
dialog_ratio
(vedere la sezione
FILE DI
CONFIGURAZIONE più in alto).
- ANYWHERE
- Consenti alle finestre di decidere la propria posizione.
- XTERM_FONTADJ
- Regola la dimensione dei font di xterm(1)
quando la dimensione delle finestre viene modificata.
- FULLSCREEN
- Non mostrare il bordo.
- FOCUSPREV
- Alla chiusura di una finestra, il focus verrà assegnato alla
finestra che lo deteneva in precedenza e non alla finestra precedente
nello stack.
- NOFOCUSONMAP
- Non assegnare il focus alle finestre quando vengono create. Questo quirk
viene ignorato se il valore di
focus_mode
è
follow.
- FOCUSONMAP_SINGLE
- Assegna il focus alle finestre quando vengono create solo se non sono
già presenti delle finestre con la stessa classe e istanza
nell'area di lavoro. Questo quirk viene ignorato se il valore di
focus_mode
è
follow.
- OBEYAPPFOCUSREQ
- Assegna il focus alle finestre quando viene richiesto tramite un messaggio
di tipo _NET_ACTIVE_WINDOW con sorgente 1. Se la sorgente è 0 (non
specificato) o 2 (pager), la richiesta viene sempre accolta.
- IGNOREPID
- Ignora il PID nella scelta dell'area di lavoro iniziale per le nuove
finestre. Molto utile per le applicazioni (eg. terminali) che creano
più finestre all'interno dello stesso processo.
- IGNORESPAWNWS
- Ignora l'area di lavoro in cui è stata eseguita la scorciatoia da
tastiera nella scelta dell'area di lavoro iniziale per le nuove
finestre.
- WS[n]
- Obbliga le nuove finestre ad essere assegnate all'area di lavoro
n.
I quirk personalizzati vengono definiti come segue:
quirk[class[:instance[:name]]]
= quirk [+
quirk ...
]
class,
instance (opzionale) e
name (opzionale) sono dei pattern che vengono
usati per determinare a quali finestre i quirk debbano essere applicati e
quirk è uno dei quirk descritti in
precedenza.
I pattern vengono interpretati come espressioni regolari estese POSIX. I simboli
':', '[' e ']' devono essere preceduti da '\' per essere considerati
letteralmente. Vedere
regex(7) per ulteriori
informazioni sulle espressioni regolari estese POSIX.
Ad esempio:
quirk[MPlayer] = FLOAT + FULLSCREEN + FOCUSPREV # Le finestre con classe 'MPlayer' sono floating
quirk[.*] = FLOAT # Le finestre sono floating
quirk[.*:.*:.*] = FLOAT # Come sopra
quirk[Firefox:Navigator] = FLOAT # Le finestre di navigazione di Firefox sono floating
quirk[::Console] = FLOAT # Le finestre la cui classe non è impostata e il cui nome è 'Console' sono floating
quirk[\[0-9\].*:.*:\[\[\:alnum\:\]\]*] = FLOAT # Le finestre la cui classe inizia con un numero e il cui nome è non definito o contiene solo caratteri alfanumerici, senza spazi, sono floating
quirk[pcb:pcb] = NONE # Rimuove i quirk predefiniti
È possibile ottenere
class,
instance e
name eseguendo
xprop(1) e selezionando la finestra desiderata.
In questo esempio, è stata selezionata la finestra principale di
Firefox:
$ xprop | grep -E "^(WM_CLASS|_NET_WM_NAME|WM_NAME)"
WM_CLASS(STRING) = "Navigator", "Firefox"
WM_NAME(STRING) = "spectrwm - ConformalOpenSource"
_NET_WM_NAME(UTF8_STRING) = "spectrwm - ConformalOpenSource"
Il comando
xprop(1) visualizza WM_CLASS nel
seguente formato:
WM_CLASS(STRING) = "<instance>", "<class>"
In questo caso, bisognerebbe aggiungere al file di configurazione la seguente
riga:
quirk[Firefox:Navigator] = FLOAT
spectrwm
assegna alcuni quirk in automatico,
basandosi sul valore della proprietà _NET_WM_WINDOW_TYPE, nel seguente
modo:
- _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 gli unici quirk assegnati alle finestre saranno quelli
predefiniti o, con precedenza maggiore, quelli specificati nel file di
configurazione.
EWMH¶
spectrwm
implementa in maniera parziale la
specifica EWMH, Extended Window Manager Hints: questo consente di controllare
le finestre, oltre che
spectrwm
stesso, da
script e programmi esterni. Per sfruttare questo supporto,
spectrwm
dovrà ricevere degli eventi
di tipo ClientMessage; questo tipo di messaggio può essere inviato
dalla riga di comando usando tool come
wmctrl(1)
e
xdotool(1). Il formato dei messaggi è
definito nella specifica EWMH.
L'identificativo della finestra che detiene il focus può essere ottenuto
leggendo il valore della proprietà _NET_ACTIVE_WINDOWS della root
window. Ad esempio, per visualizzare il titolo della finestra:
$ WINDOWID=`xprop -root _NET_ACTIVE_WINDOW | grep -o "0x.*"`
$ xprop -id $WINDOWID _NET_WM_NAME | grep -o "\".*\""
Il focus può essere assegnato ad una finestra inviando un messaggio di
tipo _NET_ACTIVE_WINDOW alla root window, ad esempio:
Le finestre possono essere chiuse inviando un messaggio di tipo
_NET_CLOSE_WINDOW, ad esempio:
Le finestre possono essere portate da floating a tiled, e viceversa, aggiungendo
o rimuovendo l'atomo _NET_WM_STATE_ABOVE dalla proprietà _NET_WM_STATE
della finestra. Per fare ciò, è necessario inviare un messaggio
di tipo _NET_WM_STATE, ad esempio:
$ wmctrl -i -r 0x4a0000b -b toggle,_NET_WM_STATE_ABOVE
Le finestre possono essere minimizzate e ripristinate sostituendo
_NET_WM_STATE_HIDDEN a _NET_WM_STATE_ABOVE nell'esempio precedente:
$ wmctrl -i -r 0x4a0000b -b toggle,_NET_WM_STATE_HIDDEN
Le finestre floating possono essere ridimensionate e spostate tramite l'invio di
un messaggio di tipo _NET_MOVERESIZE_WINDOW, ad esempio:
$ wmctrl -i -r 0x4a0000b -e 0,100,50,640,480
In questo caso, la con id 0x4a0000b finestra viene spostata in (100,50) e la sua
dimensione diventa 640x480.
I messaggi di tipo _NET_MOVERESIZE_WINDOW che fanno riferimento a finestre tiled
verranno ignorati.
SEGNALI¶
Il segnale HUP fa riavviare
spectrwm
.
FILE¶
- ~/.spectrwm.conf
- File di configurazione specifico dell'utente.
spectrwm
.
- /etc/spectrwm.conf
- File di configurazione globale.
ORIGINE¶
spectrwm
è ispirato a xmonad &
dwm.
AUTORI¶
spectrwm
è stato scritto da: