Installazione ed uso di DWM su Debian Jessie

Per chi non lo conoscesse già, dwm (Dynamic Window Manager) è un WM (Window Manager, cioè un gestore di finestre) minimalissimo, standalone (è scritto tutto su un unico file) e scritto interamente in C.

dwm lo troviamo anche nei repository di Debian, ma è una versione vecchia e non aggiornata.

Come ben sapete Debian sceglie una determinata versione di un programma e non la cambia, ne effettua solo gli aggiornamenti di sicurezza, infatti non è una rolling release come Arch Linux, e questo a mio parere è un bene. Quindi se vogliamo la versione aggiornata di un determinato programma dobbiamo compilarcelo da sorgente. Niente di più semplice se non fosse per il fatto che su Debian Jessie (versione 8) a differenza di Wheezy (versione 7) abbiamo dei problemi con una dipendenza fondamentale, cioè suckless-tools.

Molti di voi staranno già pensando di installare il pacchetto deb di Wheezy su Jessie, e fidatevi non c’è niente di più sbagliato. O meglio, installiamo si tale pacchetto, ma non con la procedura convenzionale. Per prima cosa conviene installare il pacchetto p7zip in modo da poter estrarre il contenuto del file deb. Dopo l’estrazione ci ritroveremo un file chiamato data.tar ed è il contenuto di suckless-tools completo di eseguibili, man pages e tutto il resto, e dobbiamo copiarlo così com’è nella root del sistema, in modo che APT non rileva la sua presenza e non ci ritroviamo davanti un conflitto di dipendenze che non risolveremo mai.

Per prima cosa installiamo le dipendenze di DWM digitando da root i seguenti comandi:

# apt-get install gcc make dbus-x11 git git-core xorg libxinerama-dev libx11-dev libxft-dev

Come avete notato non ho installato suckless-tools, proprio perchè quello contenuto in Debian Jessie da dei problemi, ed abbiamo bisogno della versione 38 del pacchetto. In base alla vostra architettura scaricate il file suckless-tools qui sotto.

Download per amd64: http://www.freenixsecurity.net/files/deb/suckless-tools/amd64/suckless-tools_38-2+deb7u1_amd64.deb

Download per armel: http://www.freenixsecurity.net/files/deb/suckless-tools/armel/suckless-tools_38-2+deb7u1_armel.deb

Download per armhf: http://www.freenixsecurity.net/files/deb/suckless-tools/armhf/suckless-tools_38-2+deb7u1_armhf.deb

Download per i386: http://www.freenixsecurity.net/files/deb/suckless-tools/i386/suckless-tools_38-2+deb7u1_i386.deb

Download per ia64: http://www.freenixsecurity.net/files/deb/suckless-tools/ia64/suckless-tools_38-2_ia64.deb

Download per kfreebsd-amd64: http://www.freenixsecurity.net/files/deb/suckless-tools/kfreebsd-amd64/suckless-tools_38-2_kfreebsd-amd64.deb

Download per kfreebsd-i386: http://www.freenixsecurity.net/files/deb/suckless-tools/kfreebsd-i386/suckless-tools_38-2_kfreebsd-i386.deb

Download per mips: http://www.freenixsecurity.net/files/deb/suckless-tools/mips/suckless-tools_38-2_mips.deb

Download per mipsel: http://www.freenixsecurity.net/files/deb/suckless-tools/mipsel/suckless-tools_38-2_mipsel.deb

Download per powerpc: http://www.freenixsecurity.net/files/deb/suckless-tools/powerpc/suckless-tools_38-2_powerpc.deb

Download per s390: http://www.freenixsecurity.net/files/deb/suckless-tools/s390/suckless-tools_38-2_s390.deb

Download per s390x: http://www.freenixsecurity.net/files/deb/suckless-tools/s390x/suckless-tools_38-2_s390x.deb

Download per sparc: http://www.freenixsecurity.net/files/deb/suckless-tools/sparc/suckless-tools_38-2_sparc.deb

Nella home del vostro utente create una cartella chiamata suckless-tools, e scaricate al suo interno il file deb dell’architettura interessata.

Sempre da utente scompattiamo il file deb con p7zip digitando:

$ 7z x nomefile.deb

Dove al posto di nomefile.deb inseriremo il nome del pacchetto deb da scompattare. Dopo l’estrazione ci ritroveremo davanti un archivio chiamato data.tar . Scompattiamolo (sempre con i privilegi di utente) con il comando:

$ tar -xvf data.tar

Dopo la scompattazione di data.tar ci ritroveremo una cartella chiamata “usr” con svariate sottocartelle al suo interno. Così com’è, con i permessi di root (magari con sudo) copiamola nella root con il seguente comando:

# cp -r usr /

Adesso che abbiamo copiato la vecchia versione di suckless-tools senza creare conflitti di dipendenze, posiamo procedere al download del sorgente di dwm tramite git. Usciamo quindi dall’utente root digitando

# exit

e spostiamoci nella home dell’utente, digitando

$ cd

Procediamo quindi al download del sorgente di dwm, digitando quindi:

$ git clone git://suckless.org/dwm

Dopo aver impartito questo comando ci ritroveremo nella home la cartella dwm con all’interno il suo codice sorgente.

Tra i vari file che compongono il codice sorgente ce ne sta uno in particolare, chiamato config.def.h .

Questo file contiene la configurazione di dwm, compresi gli hotheys da utilizzare, i tab, ecc…

Dobbiamo effettuare una copia di quel file digitando da utente

$ cp config.def.h config.h

Dopo aver effettuato la copia del file di configurazione, possiamo procedere a fare una prova di compilazione, per vedere se l’installazione andrà a buon fine, digitando quindi il comando

$ make

Se make non ci restituisce errori, possiamo procedere all’installazione di dwm digitando da root (o da sudo)

# make clean install

Finalmente abbiamo installato dwm, ma adesso che facciamo per eseguirlo? Dobbiamo dire al file .xinitrc quale WM lanciare nel caso venga digitato il comando

$ startx

Da utente digitiamo quindi questo comando

$ cd ; echo “exec dwm” > .xinitrc

In questo modo la shell si sposterà nella home dell’utente in uso e permetterà l’esecuzione di dwm dopo la digitazione del comando
$ startx

E se volessimo disabilitare il fastidiosissimo screensaver scuro che compare in caso di inattività del PC? Niente di più semplice!!!

Ricorriamo sempre al nostro amato file .xinitrc presente nella nostra home, e modifichiamolo in questo modo:

Et voilà, il nostro screensaver è sparito.

Un’altra funzione comoda potrebbe essere quella di impostare uno shortcut (scorciatoia da tastiera) per chiudere xorg al momento del bisogno, magari quando dobbiamo aggiornare dwm.

Per fare questo con i permessi di root dobbiamo editare il file
/etc/default/keyboard

Il contenuto del file sarà simile se non proprio uguale a questo:

L’unica cosa che dovete fare è modificare la riga XKBOPTIONS in questo modo:

Adesso per chiudere xorg e tornare alla tty basta digitare contemporaneamente lo shortcut

[CTRL]+[ALT]+[BACKSPACE]

(Per chi non lo sapesse il BACKSPACE è il tasto per cancellare le parole digitate, per intenderci è quello sopra il tasto INVIO, o ENTER)

Anche se in realtà esiste uno shortcut interno di dwm per killare il WM, ed è appunto:

[SHIFT]+[ALT]+[Q]

Adesso mettiamo di voler aggiornare dwm alla sua ultima versione. Per prima cosa chiudiamo xorg con lo shortcut appena creato, quindi digitiamo
[CTRL]+[ALT]+[BACKSPACE]

poi entriamo nella cartella del sorgente di dwm che in precedenza abbiamo posizionato nella home dell’utente. Non l’avete eliminata vero? In caso contrario potete riscaricare il sorgente aggiornato sempre con il comando

$ git clone git://suckless.org/dwm

Se non avete eliminato la cartella dwm, posizioniamoci al suo interno e digitiamo con i permessi di utente:

$ git pull origin

Se il comando ci restituisce il messaggio
Already up-to-date

vuol dire che il repository è aggiornato, in caso contrario dobbiamo ripetere la procedura di compilazione precedentemente trattata, effettuando nuovamente la copia del file config.def.h

Passiamo adesso alle funzionalità ed all’uso di dwm.

Per prima cosa possiamo notare in alto dei numeri che vanno da 1 a 9, e sono dei desktop virtuali chiamati TAG, dove possiamo eeguire dei programmi (grafici e non) al suo inteno. Per spostarci all’interno dei tag possiamo utilizzare il tasto sinistro del mouse o utilizzando la tastiera digitando:

[ALT]+[1]

[ALT]+[2]

[ALT]+[3]

[ALT]+[4]

[ALT]+[5]

[ALT]+[6]

[ALT]+[7]

[ALT]+[8]

[ALT]+[9]

Tutto questo in base al TAG dove ci vogliamo spostare.

Ricordiamoci che dwm è nato proprio per essere utilizzato esclusivamente da tastiera, limitando quindi l’uso del mouse, e personalmente lo trovo molto comodo. Tra l’altro consuma pochissimo rispetto a tutti gli altri WM, e soprattutto è utilizzabile.

Ha tre modalità di visualizzazione:

– Tiled, a mattonelle, ci permette di eseguire più programmi sulla stessa finestra, dividendo anche il TAG in quattro parti. Utilissimo nel caso in cui dobbiamo programmare, controllare i processi in corso, il consumo di batteria, tutto contemporaneamente.

– Monocle, possiamo visualizzare a tutto schermo il programma che più ci interessa.

– Floating, ci permette di impostare manualmente la grandezza delle finestre.

Il terminale predefinito si chiama “st” e lo possiamo lanciare con il comando

[SHIFT]+[ALT]+[ENTER]

Lo so, è orribile come terminale, infatti personalmente installo roxterm, digitiamo quindi da root

# apt-get install roxterm

L’unico difetto di roxterm è che non è possibile utilizzare gli shortcut per il taglia, copia ed incolla. Bisogna farlo per forza con il mouse.

Per lanciare un’applicazione con dwm ci viene in soccorso dmenu, un lanciatore di programmi presente in svariati WM minimali. Lo richiamiamo quindi con il comando

[ALT]+[P]

Una volta richiamato dmenu ci basta scrivere il nome del programma da lanciare (appariranno dei suggerimenti sulla barra di ricerca di dmenu) e premere ENTER.

Il tutorial di dwm ci propone un disegno abbastanza chiaro di come è composta una finestra tipo, quindi ve la riporto e la commento:

In alto a sinistra troviamo i TAGS che abbiamo trattato in precedenza, TITLE invece corrisponde al nome del programma lanciato. STATUS invece presenza generalmente la dicitura dwm con la relativa versione.

Analizziamo invece cosa sono MASTER e STACK.

MASTER è il programma lanciato in primo piano, infatti su TITLE troveremo il titolo di tale programma. STACK invece è il secondo programma lanciato sullo stesso TAG. Noi lavoreremo sempre ed esclusivamente sul programma MASTER.

Per switchare da MASTER a STACK basta digitare lo shortcut

[ALT]+[INVIO]

Ritorniamo alle visualizzazioni TILED, MONOCLE e FLOATING.

Il disegno sopra riportato è un esempio lampante della visualizzazione TILED con due programmi in esecuzione.

Per la visualizzazione TILED utilizzeremo lo shortcut:

[ALT]+[T]

Per la visualizzazione MONOCLE utilizzeremo lo shortcut:

[ALT]+[M]

Ed infine per la visualizzazione FLOATING utilizzeremo lo shortcut:

[ALT]+[F]

Mettiamo di voler spostare un programma da un TAG ad un altro, ad esempio dal TAG 1 al TAG 9. Posizioniamoci quindi sul TAG 1 (miraccomando il programma deve essere in MASTER e non in STACK] e digitiamo lo shortcut:

[SHIFT]+[ALT]+[9]

Se siamo invece nella modalità FLOATING e vogliamo ridimensionare la grandezza di un programma dobbiamo posizionarci sul lato del programma stesso e digitare:

[ALT]+[SX]

SX è il tasto sinistro del mouse, mentre DX è quello destro.

Con quest altro shortcut possiamo spostare la finestra del programma che vogliamo:

[ALT]+[DX]

E se volessimo chiudere un programma in esecuzione? Esiste uno shortcut anche per questo, ed è:

[SHIFT]+[ALT]+[C]

Nella modalità tiled possiamo visualizzare le finestre sia orizzontalmente che verticalmente, e lo facciamo con questi due comandi:
[ALT]+[I]
ed
[ALT]+[D]

Niente di più semplice, sembrava più complicato no?

Ah dimenticavo, per non avere errori con tutte le applicazioni grafiche che andrete ad installare, dobbiamo mettere il pacchetto dbus-X11 (la X è maiuscola) quindi diamo il comando:

# apt-get install dbus-X11

Per informazioni in più su questo fantastico Window Manager vi riporto al sito ufficiale ed al tutorial completo presente sul sito stesso.

Sito Ufficiale di DWM: http://dwm.suckless.org/

Tutorial Ufficiale: http://dwm.suckless.org/tutorial

Filosofia del progetto suckless, più che condivisibile: http://suckless.org/philosophy




Leave a comment