SPECTRWM(1)

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

M   Meta
S   Shift
<Nome>
    Tasto nome
M1  Tasto 1 (sinistro) del mouse
M3  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.

FILE DI CONFIGURAZIONE
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:

autorun
    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.
color_focus
    Colore del bordo della finestra che ha il focus.
color_unfocus
    Colore del bordo delle finestre che non hanno il focus.
bar_enabled
    Abilita o disabilita la barra di stato.
bar_border[x]
    Colore del bordo della barra di stato nello schermo x.
bar_border_width
    Spessore del bordo attorno alla barra di stato in pixel. Il bordo pu? essere disabilitato usando il valore 0.
bar_color[x]
    Colore della barra di stato nello schermo x.
bar_font_color[x]
    Colore del testo della barra di stato nello schermo x.
bar_font
    Font della barra di stato.
bar_action
    Script esterno che aggiunge informazioni come la carica della batteria alla barra di stato.
bar_at_bottom
    Posiziona la barra di stato sul fondo dello schermo anzich? in cima.
stack_enabled
    Abilita o disabilita la visualizzazione dell'algoritmo di stacking corrente nella barra di stato.
clock_enabled
    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.
dialog_ratio
    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.
layout
    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, horizontal e fullscreen.

    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.
region
    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 sufficientemente grande da contenerli, eg. screen[1]:2048x760+0+0 unisce due monitor con risoluzione 1024x768 posizionati uno di fianco all'altro.
term_width
    Imposta la dimensione minima preferita per il terminale. Se questo valore ? maggiore di 0, spectrwm cercher? di riaggiustare 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. Il binario di xterm(1) deve essere setuid o setgid perch? questo funzioni: nella maggior parte dei sistemi, questo ? il default. L'utente potrebbe voler impostare program[term] (vedere la sezione PROGRAMMI pi? sotto) per usare una seconda copia del binario di xterm(1) che non abbia il bit setgid impostato.
title_class_enabled
    Abilita o disabilita la visualizzazione della classe della finestra nella barra di stato. Impostare a 1 per abilitare.
title_name_enabled
    Abilita o disabilita la visualizzazione del titolo della finestra nella barra di stato. Impostare a 1 per abilitare.
urgent_enabled
    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.
window_name_enabled
    Abilita o disabilita la visualizzazione del nome della finestra nella barra di stato. Impostare a 1 per abilitare.
verbose_layout
    Abilita o disabilita la visualizzazione dei valori correnti di master e stack nella barra di stato. Impostare a 1 per abilitare.
modkey
    Cambia il tasto modificatore. Solitamente Mod1 ? il tasto ALT e Mod4 ? il tasto Windows su un PC.
focus_mode
    Se viene usato il valore follow_cursor, il gestore di finestre dar? il focus alla finestra sotto il puntatore quando si cambia area di lavoro o si creano finestre.
disable_border
    Rimuovi il bordo dalle finestre se la barra di stato ? nascosta e c'? una sola finestra sullo schermo.
border_width
    Spessore del bordo delle finestre in pixel. Il valore 0 disabilita il bordo.
program[p]
    Definisce una nuova azione per lanciare il programma p. Vedere la sezione PROGRAMMI pi? sotto.
bind[x]
    Assegna una combinazione di tasti all'azione x. Vedere la sezione SCORCIATOIE pi? sotto.
quirk[c:n]
    Aggiunge un "quirk" per le finestre di classe c e nome n. Vedere la sezione QUIRKS pi? sotto.

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.

PROGRAMMI
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 descritte qui sotto:

term
    xterm
screenshot_all
    screenshot.sh full
screenshot_wind
    screenshot.sh window
lock
    xlock
initscr
    initscreen.sh
menu
    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:

$bar_border
$bar_color
$bar_font
$bar_font_color
$color_focus
$color_unfocus

Esempio:

    program[ff] = /usr/local/bin/firefox http://spectrwm.org/
    bind[ff] = Mod+f # adesso Mod+F lancia firefox

Per eliminare la combinazione precedente:

    bind[] = Mod+f
    program[ff] =

SCORCIATOIE
spectrwm fornisce molte funzioni (o azioni) accessibili tramite combinazioni di tasti sul mouse o sulla tastiera.

Le scorciatoie assegnate al mouse sono:

M1  D? focus alla finestra
M-M1
    Muove la finestra
M-M3
    Ridimensiona la finestra
M-S-M3
    Ridimensiona la finestra mantenendola centrata

Le scorciatoie da tastiera di default sono:

M-S-<Return>
    term
M-p menu
M-S-q
    quit
M-q restart
M-<Space>
    cycle_layout
M-S-<Space>
    reset_layout
M-h master_shrink
M-l master_grow
M-, master_add
M-. master_del
M-S-,
    stack_inc
M-S-.
    stack_del
M-<Return>
    swap_main
    M-j, M-<TAB> focus_next
    M-k, M-S-<TAB> focus_prev
M-m focus_main
M-S-j
    swap_next
M-S-k
    swap_prev
M-b bar_toggle
M-x wind_del
M-S-x
    wind_kill
M-<n>
    ws_n
M-S-<n>
    mvws_n
M-<Right>
    ws_next
M-<Left>
    ws_prev
M-a ws_prior
M-S-<Right>
    screen_next
M-S-<Left>
    screen_prev
M-s screenshot_all
M-S-s
    screenshot_wind
M-S-v
    version
M-t float_toggle
M-S <Delete>
    lock
M-S-i
    initscr
M-w iconify
M-S-w
    uniconify
M-S-r
    always_raise
M-v button2

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

term
    Lancia un nuovo terminale (vedi PROGRAMMI pi? in alto).
menu
    Menu (vedi PROGRAMMI pi? in alto).
quit
    Chiude spectrwm.
restart
    Riavvia spectrwm.
cycle_layout
    Cambia layout.
reset_layout
    Re-inizializza il layout.
master_shrink
    Restringe l'area principale.
master_grow
    Allarga l'area principale.
master_add
    Aggiunge finestre all'area principale.
master_del
    Rimuove finestre dall'area principale.
stack_inc
    Aggiunge righe/colonne all'area di stacking.
stack_del
    Rimuove righe/colonne dall'area di stacking.
swap_main
    Muove la finestra corrente nell'area principale.
focus_next
    D? il focus alla finestra successiva.
focus_prev
    D? il focus alla finestra precedente.
focus_main
    D? il focus alla finestra principale.
swap_next
    Scambia con la finestra successiva dell'area di lavoro.
swap_prev
    Scambia con la finestra precedente dell'area di lavoro.
bar_toggle
    Mostra/nascondi la barra di stato da tutte le aree di lavoro.
wind_del
    Chiude la finestra corrente.
wind_kill
    Distrugge la finestra corrente.
ws_n
    Passa all'area di lavoro n, dove n ? compreso tra 1 e 10.
mvws_n
    Sposta la finestra corrente nell'area di lavoro n, dove n ? compreso tra 1 e 10.
ws_next
    Passa all'area di lavoro non vuota successiva.
ws_prev
    Passa all'area di lavoro non vuota precedente.
ws_prior
    Passa all'ultima area di lavoro visitata.
screen_next
    Sposta il puntatore nella regione successiva.
screen_prev
    Sposta il puntatore nella regione precedente.
screenshot_all
    Cattura uno screenshot dell'intero schermo, se abilitato (vedere la sezione PROGRAMMI pi? in alto).
screenshot_wind
    Cattura uno screenshot di una singola finestra, se abilitato (vedere la sezione PROGRAMMI pi? in alto).
version
    Abilita/disabilita il numero di versione nella barra di stato.
float_toggle
    Passa la finestra che ha il focus da floating a tiled.
lock
    Blocca lo schermo (vedere la sezione PROGRAMMI pi? in alto).
initscr
    Re-inizializza gli schermi fisici (vedere la sezione PROGRAMMI pi? in alto).
iconify
    Minimizza (unmap) la finesta che ha il focus.
uniconify
    Massimizza (map) la finestra selezionata tramite dmenu.
always_raise
    Quando ? abilitato, le finestre floating possono essere oscurate da finestre tiled.
button2
    Simula la pressione del tasto centrale del mouse.

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.

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

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

SEGNALI
? possibile riavviare spectrwm inviandogli il segnale HUP.

FILE
~/.spectrwm.conf
    impostazioni di spectrwm dell'utente.
/etc/spectrwm.conf
    impostazioni globali di spectrwm.

ORIGINE
spectrwm prende ispirazione da xmonad & dwm.

AUTORI
-nosplit

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>

BUGS
Al momento il menu, invocato usando M-p, dipende da dmenu.