# [HOW-TO] DWM -- Dynamic Window Manager

## neurolepsia

Salve, sono nuovo del forum e uso linux da circa 1 anno. Ho avuto grandi soddisfazioni da questo SO come server, ma pochissime come desktop. Ho notato che gentoo ha sviluppato un X modulare Xorg 7... quali sono le sue peculiarita'? E' piu' leggero del server X delle altre distribuzioni?

Inoltre sono rimasto davvero molto deluso per quanto riguarda i wm. Ne ho testati parecchi (gnome,kde, fluxbox, xfce) ma non sono riuscito fino a poco tempo fa a trovare uno davvero adatto a me. Qualcosa di molto personalizzabile, semplice, veloce, pulito e leggero. Ho conosciuto da poco tempo il wm dwm, che sembra addirittura piu' leggero di wmii.

Putroppo pero' sono un po' ignorante per quanto riguarda il C++ , e non so come modificare i sorgenti del winodw manager.

Mi chiedo: c'e' qualcuno che usa questo wm e che mi puo' aiutare?

grazie

ciao

ho editato il titolo visto che ho spostato il thread nel forum di documentazione

-- lavish

----------

## silvius

 *neurolepsia wrote:*   

> Salve, sono nuovo del forum e uso linux da circa 1 anno. Ho avuto grandi soddisfazioni da questo SO come server, ma pochissime come desktop. Ho notato che gentoo ha sviluppato un X modulare Xorg 7... quali sono le sue peculiarita'? E' piu' leggero del server X delle altre distribuzioni?
> 
> Inoltre sono rimasto davvero molto deluso per quanto riguarda i wm. Ne ho testati parecchi (gnome,kde, fluxbox, xfce) ma non sono riuscito fino a poco tempo fa a trovare uno davvero adatto a me. Qualcosa di molto personalizzabile, semplice, veloce, pulito e leggero. Ho conosciuto da poco tempo il wm dwm, che sembra addirittura piu' leggero di wmii.
> 
> Putroppo pero' sono un po' ignorante per quanto riguarda il C++ , e non so come modificare i sorgenti del winodw manager.
> ...

 

Da quello che ho capito io è stato fatto più che altro per una miglior leggibilità e facilità di sviluppo per chi deve lavorarci sopra, dopo chiaro che anche gli utenti avranno qualcosa di più funzionale nel tempo.

Per il wm, non ho provato dwm, ma tra i diversi che ho provato, anche su hw datato, è fluxbox il quale soddisfa le tue richieste: molto personalizzabile, semplice, veloce, pulito e leggero.

Il primo approccio non è il massimo, ma poi va tutto per il meglio.

Saluto

----------

## !equilibrium

 *neurolepsia wrote:*   

> Ho notato che gentoo ha sviluppato un X modulare Xorg 7... quali sono le sue peculiarita'? E' piu' leggero del server X delle altre distribuzioni?

 

Gentoo non ha sviluppato Xorg 7 modulare, ma il team di sviluppo di Xorg.

Xorg 7 è uguale su tutte le distribuzioni linux, e gentoo non ha nessuna peculiarità in più, il server X11 a parità di major/minor release è uguale per tutte le distro (ci mancherebbe altro).

@lavish è un evangelista di dwm e WMII, credo sia l'utente del forum maggiormente indicato per questi 2 wm

----------

## randomaze

 *neurolepsia wrote:*   

> Ho conosciuto da poco tempo il wm dwm, che sembra addirittura piu' leggero di wmii.
> 
> Putroppo pero' sono un po' ignorante per quanto riguarda il C++ , e non so come modificare i sorgenti del winodw manager.
> 
> Mi chiedo: c'e' qualcuno che usa questo wm e che mi puo' aiutare?

 

In un recente sondaggio é emerso che ben il 20% dei gentoo italian moderators é passato da wmii a dwm. Ma domani va in ferie.

Comunque mi state incuriosendo, se oggi riesco a uscire dal lavoro a un ora normale lo provo....

Quanto a xorg modulare, la scelta é stata fatta dal team di sviluppo (come hanno già detto), la motivazione alla base é che così é piàu mantenibile e dovrebbe incutere meno timore ai nuovi sviluppatori che vogliono collaborare al progetto.

----------

## lavish

Oddio leggendo il titolo del thread mi sono venute le palpitazioni!   :Laughing: 

Io uso dwm dal giorno 0. Concordo con te nel dire che sia leggero e pulito (sono 1800 righe di C).. posso farti una piccola introduzione esaustiva (piccola e esaustiva, perchè il WM è minimale  :Wink:  ).

2011/07/31: dopo una segnalazione di un utente, tengo a precisare che il thread in questione e' totalmente outdated, non fate riferimento ad esso

.AGGIORNAMENTI

 2007/01/26 - config.h e scripts vari *non* mantenuti.

 2006/09/05 - dwm-1.3, dmenu-0.7:

aggiornamento versioni

 2006/09/03 - dwm-1.2, dmenu-0.6:

aggiornamento versioni

riscrittura dei commenti in config.h

formattazione migliore

 2006/08/22 - dwm-0.9, dmenu-0.4:

aggiornamento versioni

sistemati errori vari

.INTRO

dwm[1] è nato come il WM personale di Anselm Garbeam ( main devel di wmi(i)[2] ). Utilizza parte di codice di wmii ma a differenza di questo ha molte meno features ed è decisamente più piccolo, pur mantenendo un layout dinamico[3]

Si edita da sorgente in modo da essere estremamente sicuro e per mantenere la base degli utenti "ristretta" (wmii era diventato troppo complesso a causa delle richieste di ulteriori features o layouts da parte della comunità).

Una volta compilato, dwm è composto da un singolo file binario.

Ecco per i curiosi uno screenshot:

http://www.minimalblue.com/ftp/public/images/screenshots/dwm-20060827-1.png

.DOWNLOAD

i sorgenti sono disponibili qui:

http://10kloc.org/download/

oppure è possibile scaricare direttamente il repository HG (emerge mercurial)

La prima volta che fate il fetch basterà eseguire:

```
hg clone http://10kloc.org/cgi-bin/hgwebdir.cgi/dwm
```

Successivamente, per mantenere aggiornata la dir dei sorgenti, basterà dare (all'interno della dir):

```
hg pull && hg update
```

.CONFIGURAZIONE

mentre con le prime versioni di dwm era necessario editare ogni singolo file sorgente, ora c'è un unico file di header per la configurazione globale. 

Una volta entrati nella dir dei sorgenti, vedremo:

config.arg.h è il file di configurazione usato da Anselm (arg è il suo nick)

config.default.h è, come si evince facilmente, un file di configurazione standard

Come si può capire dal makefile (config.mk), il file che verrà usato per la compilazione sarà config.h, quindi, possiamo partire ad editare la nostra configurazione in questo modo:

```
cp config.default.h config.h
```

Mostro qui di seguito il mio file di configurazione, prima in versione "vanilla" e poi commentato:

- config.h vanilla:

```

/*

 * (C)opyright MMVI Anselm R. Garbe <garbeam at gmail dot com>

 * See LICENSE file for license details.

 */

 

#define TAGS \

const char *tags[] = { "trm", "web", "grp", "snd", "msc", NULL };

 

#define DEFMODE                 dotile /* dofloat */

#define FONT                    "-*-snap-*-*-*-*-*-*-*-*-*-*-*-*"

#define SELBGCOLOR              "#668bca"

#define SELFGCOLOR              "#ffffff"

#define NORMBGCOLOR             "#ffffff" /* "#c5d2e7" */

#define NORMFGCOLOR             "#668bca"

#define STATUSBGCOLOR           "#ffffff"

#define STATUSFGCOLOR           "#668bca"

#define FLOATSYMBOL             "><"

#define TILESYMBOL              "<>"

#define MODKEY                  Mod4Mask

#define MASTERW                 60 /* percent */

 

#define KEYS \

static Key key[] = { \

        /* modifier                     key             function        arguments */ \

        { MODKEY|ShiftMask,             XK_Return,      spawn,          { .cmd = "exec urxvtc" } }, \

        { MODKEY,                       XK_Tab,         focusnext,      { 0 } }, \

        { MODKEY|ShiftMask,             XK_Tab,         focusprev,      { 0 } }, \

        { MODKEY,                       XK_Return,      zoom,           { 0 } }, \

        { MODKEY,                       XK_m,           togglemax,      { 0 } }, \

        { MODKEY|ShiftMask,             XK_1,           tag,            { .i = 0 } }, \

        { MODKEY|ShiftMask,             XK_2,           tag,            { .i = 1 } }, \

        { MODKEY|ShiftMask,             XK_3,           tag,            { .i = 2 } }, \

        { MODKEY|ShiftMask,             XK_4,           tag,            { .i = 3 } }, \

        { MODKEY|ShiftMask,             XK_5,           tag,            { .i = 4 } }, \

        { MODKEY|ControlMask|ShiftMask, XK_1,           toggletag,      { .i = 0 } }, \

        { MODKEY|ControlMask|ShiftMask, XK_2,           toggletag,      { .i = 1 } }, \

        { MODKEY|ControlMask|ShiftMask, XK_3,           toggletag,      { .i = 2 } }, \

        { MODKEY|ControlMask|ShiftMask, XK_4,           toggletag,      { .i = 3 } }, \

        { MODKEY|ControlMask|ShiftMask, XK_5,           toggletag,      { .i = 4 } }, \

        { MODKEY|ShiftMask,             XK_c,           killclient,     { 0 } }, \

        { MODKEY,                       XK_0,           viewall,        { 0 } }, \

        { MODKEY,                       XK_space,       togglemode,     { 0 } }, \

        { MODKEY,                       XK_1,           view,           { .i = 0 } }, \

        { MODKEY,                       XK_2,           view,           { .i = 1 } }, \

        { MODKEY,                       XK_3,           view,           { .i = 2 } }, \

        { MODKEY,                       XK_4,           view,           { .i = 3 } }, \

        { MODKEY,                       XK_5,           view,           { .i = 4 } }, \

        { MODKEY|ControlMask,           XK_1,           toggleview,     { .i = 0 } }, \

        { MODKEY|ControlMask,           XK_2,           toggleview,     { .i = 1 } }, \

        { MODKEY|ControlMask,           XK_3,           toggleview,     { .i = 2 } }, \

        { MODKEY|ControlMask,           XK_4,           toggleview,     { .i = 3 } }, \

        { MODKEY|ControlMask,           XK_5,           toggleview,     { .i = 4 } }, \

        { MODKEY|ShiftMask,             XK_q,           quit,           { 0 } }, \

        { MODKEY,                       XK_p,           spawn,          { .cmd = "exec `dmenu </tmp/.proglist`" } }, \

};

 

/* Query class:instance:title for regex matching info with following command:

 * xprop | awk -F '"' '/^WM_CLASS/ { printf("%s:%s:",$4,$2) }; /^WM_NAME/{ printf("%s\n",$2) }' */

#define RULES \

static Rule rule[] = { \

        /* class:instance:title regex   tags regex      isfloat */ \

        { "Firefox.*",                  "web",          False }, \

        { "Gimp.*",                     "grp",          True}, \

        { "MPlayer.*",                  NULL,           True  }, \

        { "aumix.*",                    NULL,           True  }, \

        { "xboard.*",                   "msc",          True  }, \

        { "Muse.*",                     "snd",          True  }, \

};

```

- config.h commentato:

```

/*

 * (C)opyright MMVI Anselm R. Garbe <garbeam at gmail dot com>

 * See LICENSE file for license details.

 */

 

/* le tags sono i nomi delle varie views.

 * una views può essere paragonata ad un workspace.

 * si possono usare numeri, ma anche stringhe

 */

#define TAGS \

const char *tags[] = { "trm", "web", "grp", "snd", "msc", NULL };

 

/* definisce la modalità di partenza del WM:

 * dotile è la modalità "managed

 * dofloat è la modalità a finestre float a cui siamo abituati 

 */

#define DEFMODE                 dotile /* dofloat */

 

/* definisce il font usato */

#define FONT                    "-*-snap-*-*-*-*-*-*-*-*-*-*-*-*"

 

 

/* definisce i colori: 

 * 

 * SELBGCOLOR   : background selezione

 * SELFGCOLOR   : foreground selezione

 * NORMBGCOLOR  : background area non selezionata

 * NORMFGCOLOR  : foreground area non selezionata

 * STATUSBGCOLOR: background della status bar

 * STATUSFGCOLOR: foreground della status bar

 */

#define SELBGCOLOR              "#668bca"

#define SELFGCOLOR              "#ffffff"

#define NORMBGCOLOR             "#ffffff" /* "#c5d2e7" */

#define NORMFGCOLOR             "#668bca"

#define STATUSBGCOLOR           "#ffffff"

#define STATUSFGCOLOR           "#668bca"

 

/* definisce i simboli grafici che rappresentano

 * la modalita' float e la modalita' tiled

 */

#define FLOATSYMBOL             "><"

#define TILESYMBOL              "<>"

 

/* definisce il tasto usato come MODKEY.

 * Mod4Mask = Mod4 (usualmente il tasto di windows)

 * Mod1Mask = Mod1 (Alt)

 */

#define MODKEY                  Mod4Mask

 

/* definisce la dimensione in percentuale della

 * master coloumn di sinistra 

 */

#define MASTERW                 60 /* percent */

 

/* configurazione dei keybindings.

 * ogni keybind deve evere questi campi:

 * modifier : tasto/i che deve/ono venire premuto/i 

 *            necessariamente 

 * key      : tasto specifico per quella funzione

 * function : funzione da eseguire

 * arguments: argomento/i della funzione 

 */

#define KEYS \

static Key key[] = { \

        /* modifier                     key             function        arguments */ \

        { MODKEY|ShiftMask,             XK_Return,      spawn,          { .cmd = "exec urxvtc" } }, \

        { MODKEY,                       XK_Tab,         focusnext,      { 0 } }, \

        { MODKEY|ShiftMask,             XK_Tab,         focusprev,      { 0 } }, \

        { MODKEY,                       XK_Return,      zoom,           { 0 } }, \

        { MODKEY,                       XK_m,           togglemax,      { 0 } }, \

        { MODKEY|ShiftMask,             XK_1,           tag,            { .i = 0 } }, \

        { MODKEY|ShiftMask,             XK_2,           tag,            { .i = 1 } }, \

        { MODKEY|ShiftMask,             XK_3,           tag,            { .i = 2 } }, \

        { MODKEY|ShiftMask,             XK_4,           tag,            { .i = 3 } }, \

        { MODKEY|ShiftMask,             XK_5,           tag,            { .i = 4 } }, \

        { MODKEY|ControlMask|ShiftMask, XK_1,           toggletag,      { .i = 0 } }, \

        { MODKEY|ControlMask|ShiftMask, XK_2,           toggletag,      { .i = 1 } }, \

        { MODKEY|ControlMask|ShiftMask, XK_3,           toggletag,      { .i = 2 } }, \

        { MODKEY|ControlMask|ShiftMask, XK_4,           toggletag,      { .i = 3 } }, \

        { MODKEY|ControlMask|ShiftMask, XK_5,           toggletag,      { .i = 4 } }, \

        { MODKEY|ShiftMask,             XK_c,           killclient,     { 0 } }, \

        { MODKEY,                       XK_0,           viewall,        { 0 } }, \

        { MODKEY,                       XK_space,       togglemode,     { 0 } }, \

        { MODKEY,                       XK_1,           view,           { .i = 0 } }, \

        { MODKEY,                       XK_2,           view,           { .i = 1 } }, \

        { MODKEY,                       XK_3,           view,           { .i = 2 } }, \

        { MODKEY,                       XK_4,           view,           { .i = 3 } }, \

        { MODKEY,                       XK_5,           view,           { .i = 4 } }, \

        { MODKEY|ControlMask,           XK_1,           toggleview,     { .i = 0 } }, \

        { MODKEY|ControlMask,           XK_2,           toggleview,     { .i = 1 } }, \

        { MODKEY|ControlMask,           XK_3,           toggleview,     { .i = 2 } }, \

        { MODKEY|ControlMask,           XK_4,           toggleview,     { .i = 3 } }, \

        { MODKEY|ControlMask,           XK_5,           toggleview,     { .i = 4 } }, \

        { MODKEY|ShiftMask,             XK_q,           quit,           { 0 } }, \

        { MODKEY,                       XK_p,           spawn,          { .cmd = "exec `dmenu </tmp/.proglist`" } }, \

};

 

/* Query class:instance:title for regex matching info with following command:

 * xprop | awk -F '"' '/^WM_CLASS/ { printf("%s:%s:",$4,$2) }; /^WM_NAME/{ printf("%s\n",$2) }' */

 

/* configurazione delle regole per le classi di client:

 * ci sono applicazioni (gimp, mplayer, xfontsel e altri) 

 * che non possono lavorare correttamentenel tiled layout.

 * E' possibile quindi definire quali classi di applicazioni

 * verranno lanciate in modalità float e a quale views 

 * riservarle. 

 *

 * La lista che segue definisce queste regole:

 * Firefox: i clients della classe Firefox.* verranno "taggati" 

 *          (cioè verranno eseguiti) nella view "web" in 

 *          modalità non float (cioè il client sarà "managed" 

 *          normalmente secondo il tiled layout)

 * Gimp   : i clients della classe Gimp.* verranno taggati 

 *          secondo la view attuale (cioè possono essere eseguiti

 *          in qualsiasi view) e in modalità float

 *

 * Le restanti regole sono simili alle precedenti.

 */

#define RULES \

static Rule rule[] = { \

        /* class:instance:title regex   tags regex      isfloat */ \

        { "Firefox.*",                  "web",          False }, \

        { "Gimp.*",                     "grp",          True}, \

        { "MPlayer.*",                  NULL,           True  }, \

        { "aumix.*",                    NULL,           True  }, \

        { "xboard.*",                   "msc",          True  }, \

        { "Muse.*",                     "snd",          True  }, \

};

```

.COMPILAZIONE E INSTALLAZIONE

se volete a questo punto modificare le CFLAGS, o la PREFIX PATH, basterà editare il makefile config.mk. Ha una sintassi semplicissima e alla portata di tutti, quindi non mi dilungo.

Una volta adattato al nostro gusto, loggatevi come root (o come volete se il prefix è nella vostra home) e date un 

```
make clean install
```

Ora dwm è installato nel vostro sistema, enjoy  :Wink: 

.EXTRAS

.status script

come avreste sicuramente letto dalla pagina di man di dwm, questo WM visualizza nella status bar, testo dallo standard input.

Io ho creato uno script molto semplice in ~/.dwm/status che visualizza varie informazioni sul mio sistema; in ordine:

- stato di carica

- percentuale di batteria rimanente

- data

- ora

- carico del sistema

Ecco qui lo script:

```
#!/bin/sh

# battery's design capacity (mWh)

BATT_DES_CAP=`cat /proc/acpi/battery/BAT0/info |awk '/design\ capacity:/ { print $3 }'`

battery()

{

        # remaining capacity (mWh)

        batt_rem_cap=`cat /proc/acpi/battery/BAT0/state |awk '/remaining\ capacity/ { print $3 }'`

        if [ $batt_rem_cap ] ; then

           charge=$((${batt_rem_cap}*100/${BATT_DES_CAP}))

        else

                echo "NO BATT"

      exit

        fi

   # state

   case `sed -n 's/charging state: *\(.*\)$/\1/p' /proc/acpi/battery/BAT0/state` in

       charged)

            charge_type="=";;

       charging)

            charge_type="+";;

       discharging)

            charge_type="-";;

   esac

   echo "${charge_type}${charge}%"

}

temp()

{

   echo `cat /proc/acpi/thermal_zone/THM0/temperature | awk '{ print $2 }'`

}

while true

do

   echo `battery` `temp`^C `date '+%x %H:%M'` `uptime | sed 's/.*://; s/,//g'`

   sleep 3

done | dwm
```

Per farlo funzionare correttamente, in ~/.xinitrc:

```
#!/bin/sh

exec $HOME/.dwm/status
```

Un altro modo per visualizzare informazioni sulla barra è utilizzare conky

In questo modo, lo ~/.xinitrc diventa:

```
exec conky |dwm
```

.dmenu

una splendida cosa che c'era in wmii e che mi è mancata passando a dwm, era un menu per lanciare applicazioni. Ero costretto inizialmente a farle partire da terminale o creare dei keybindings per ogni app (M-S-w per firefox, M-S-g per gimp, etc).

Poi mi è venuta l'illuminazione di usare wmiimenu da wmii che è pur sempre un'applicazione indipendente, anche se utilizza delle librerie per il rendering, condivise in wmii. Anselm ha ben pensato di rendere completamente indipendente il menu di wmii, anche per quanto riguarda le librerie di rendering. E' nato quindi dmenu  :Smile: 

Per scaricarlo, configurarlo e compilarlo basta procedere nello stesso modo fatto per dwm, quindi:

```
hg clone http://10kloc.org/cgi-bin/hgwebdir.cgi/dmenu

cd dmenu

make clean install
```

dmenu legge una lista di oggetti (uno per riga) dallo stdin e con questi crea un menu.

Per farla breve, un utilizzo sensato può essere quello di avere uno script che genera una lista degli eseguibili nel nostro sistema e passare questa lista a dmenu.

A me piace avere questo script in ~/.dwm/generate_menu.sh , farlo avviare una sola volta in .xinitrc e creare questa lista in /tmp/.proglist

Ecco lo script

```
#!/bin/sh

proglist() {

   ls -lL "$@" 2>/dev/null | awk 'NF>2 && $1 ~ /^[^d].*x/ {print $NF}' | sort | uniq

}

proglist `echo "$PATH" | tr : ' '` >/tmp/.proglist &
```

Ora riporto un punto che dovrebbe essere chiarito rispetto a prima, riguardo al mio config.h per dwm:

```

        /* funzione aggiunta rispetto al file config.default.h

         * il significato è:

         * alla pressione di "MODKEY (quindi Mod4) + p", dovrà essere eseguito

         * il comando "exec `dmenu </tmp/.proglist`"

         * in sostanza, questa combinazione lancia dmenu passandogli una lista di oggetti dallo stdin

         */

        { MODKEY,               XK_p,           spawn,          { .cmd = "exec `dmenu </tmp/.proglist`" } }, \
```

Chiaro a cosa serviva, no?  :Wink: 

Lo script generate_menu.sh è comunque opzionale, uno potrebbe anche decidere di creare la lista dei binari ad ogni invocazione di dmenu invece di avere una lista statica... anche perchè si fa presto dopotutto:

```
blackhole ~ $ time .dwm/generate_menu.sh 

real   0m0.031s

user   0m0.004s

sys   0m0.004s
```

Io preferisco tenermi la lista in /tmp ... poi fate voi  :Wink: 

[1] dwm: http://10kloc.org/dwm/

[2] wmii: http://10kloc.org/wmii/

[3] dynamic layout: http://wmii.de/taggi.php?page=dynamic

Spero che l'how-to vi sia piaciuto! Ricordatevi che esistono comunque le pagine di man  :Wink: 

Ciao!

----------

## lavish

Spostato da Forum di discussione italiano a Risorse italiane (documentazione e tools)  :Wink: 

----------

## neurolepsia

Non so davvero come ringraziarti, mi sembra una cosa fenomenale. Domani lo metto. Viva il minimalismo esaustivo

Domanda probabilmente da idiota: le apps sono indipendenti dal wm, nel senso posso fare tutto quello che facevo con altri wm tipo lanciare app 3d come glxgears ecc ecc(sempre da linea di comando)

bye

----------

## lavish

 *neurolepsia wrote:*   

> le apps sono indipendenti dal wm, nel senso posso fare tutto quello che facevo con altri wm tipo lanciare app 3d come glxgears ecc ecc(sempre da linea di comando)

 

Certo! Le applicazioni che non si comportano bene nel tiled layout puoi taggarle come float in base alla classe del client [1] e inserirle in config.h, altrimenti usare temporaneamente il float layout per l'intero WM.

Tieni comunque in considerazione l'utilizzo di dmenu, è comodissimo!

Ciao!

[1] per vederla, ti basta dare un: 

```
xprop |grep WM_CLASS
```

 Devi considerare il secondo campo

----------

## neurolepsia

Cioe' devo dire che e' davvero fenomenale. Non mi sono mai trovato cosi' bene con un wm. Anche linux come desktop sta iniziando a darmi delle grandissime soddisfazioni. Sono alla ricerca di programmi da linea di comando

Uso irssi per IRC e va benone, cplay per la musica ma non mi soddisfa, tsmnc per msn ma non e' il massimo, inoltre cercavo qualche programma che da linea di comando potesse gestire vari protocolli (una specie di gaim per bash), e un discreto file manager.

Qualche consiglio?

Inoltre: Plan9 mi sembra un progetto davvero interessante soprattutto se posso inserirlo nel mio sistema. Vale lo stesso discorso che vale per wmii, e posso seguire l'howto del mitico lavish?

Comunque, grazie ancora lavish.

----------

## randomaze

 *neurolepsia wrote:*   

> Uso irssi per IRC e va benone, cplay per la musica ma non mi soddisfa, tsmnc per msn ma non e' il massimo, inoltre cercavo qualche programma che da linea di comando potesse gestire vari protocolli (una specie di gaim per bash), e un discreto file manager.
> 
> Qualche consiglio?

 

Leggere il topic due righe piú sotto: questo, si parla di centericq. Il file manager per la console (a parte, ovviamente la bash che trovo sia il miglior filemanager del pianeta) penso sia il midnight commander (comando 'mc').

 *Quote:*   

> Inoltre: Plan9 mi sembra un progetto davvero interessante soprattutto se posso inserirlo nel mio sistema. Vale lo stesso discorso che vale per wmii, e posso seguire l'howto del mitico lavish?

 

In che senso "puoi seguire"? Se vuoi seguilo... se non ricordo male risale a un tot. di tempo fa ma suppongo non ci siano particolari evoluzioni. Se hai qualcosa da far notare per quell'howto ovviamente fai un reply in quel thread  :Wink: 

----------

## !equilibrium

gran bell'howto @lavish!!

----------

## drizztbsd

 *lavish wrote:*   

> 
> 
> A me piace avere questo script in ~/.dwm/generate_menu.sh , farlo avviare una sola volta in .xinitrc e creare questa lista in /tmp/.proglist
> 
> Ecco lo script
> ...

 

Va bene essere grezzi, ma cosi' si esagera  :Razz: 

find `echo $PATH | tr : ' '` -maxdepth 1 -perm -1 -xtype f -printf '%f\n' | sort | uniq > /tmp/.proglist

Ci mette la meta' del tempo  :Razz: 

----------

## neurolepsia

E' piu' veloce lo script di Drizzt, lavish ti conviene correggere il topic quando ritorni.Quando torni fatti sentire che volevo farti qualche domanda

Inoltre

cercavo un terminale velocissimo(il piu' veloce possibile) ora uso aterm, che si possa magari rendere trasparente.

SAluti

----------

## lavish

-- ho aggiornato l'how-to ad oggi, 22/08/2006

 *neurolepsia wrote:*   

> Uso irssi per IRC e va benone

 

idem

 *neurolepsia wrote:*   

> cplay per la musica ma non mi soddisfa

 

infatti è un frontend in python lentissimo e scomodo. Prova cmus, secondo me è favoloso

 *neurolepsia wrote:*   

> tsmnc per msn ma non e' il massimo, inoltre cercavo qualche programma che da linea di comando potesse gestire vari protocolli (una specie di gaim per bash)

 

In un'unica parola: bitlbee

 *neurolepsia wrote:*   

> e un discreto file manager

 

Stessa risposta che ti ha dato randomaze  :Wink: 

 *neurolepsia wrote:*   

> cercavo un terminale velocissimo(il piu' veloce possibile) ora uso aterm, che si possa magari rendere trasparente.

 

Attualmente, terminali veramente sani non ne esistono... se vuoi qualcosa che supporti la fake trasparency e sia veloce e leggero, prova urxvt in modalità client - server 

```
emerge urxvt-unicode
```

Ciao!

----------

## lavish

 *Drizzt Do` Urden wrote:*   

> find `echo $PATH | tr : ' '` -maxdepth 1 -perm -1 -xtype f -printf '%f\n' | sort | uniq > /tmp/.proglist
> 
> Ci mette la meta' del tempo 

 

E' decisamente più elegante, ma sul mio sistema impiega più tempo della versione che ho presentato nell'how-to (usando time <comando>). Inoltre questo script si perde alcuni eseguibili, tipo /usr/games/bin/*

In ogni caso, sarebbe meglio così:

```
find `echo $PATH | tr : ' '` -maxdepth 1 -perm -1 -xtype f -printf '%f\n' 2>/dev/null | sort | uniq > /tmp/.proglist
```

----------

## neurolepsia

```
/*

 * (C)opyright MMVI Anselm R. Garbe <garbeam at gmail dot com>

 * See LICENSE file for license details.

 */

#define TAGS \

const char *tags[] = { "0", "1", "2", "3", "4", NULL };

#define DEFMODE         dotile /* dofloat */

#define DEFTAG         1 /* index */

#define FONT         "-*-snap-*-*-*-*-*-*-*-*-*-*-*-*"

#define BGCOLOR         "#668bca"

#define FGCOLOR         "#e8e8e8"

#define BORDERCOLOR      "#92abd4"

#define MODKEY         Mod4Mask

#define NUMLOCKMASK      Mod2Mask

#define MASTERW         50 /* percent */

#define KEYS \

static Key key[] = { \

   /* modifier         key      function   arguments */ \

   { MODKEY|ShiftMask,      XK_Return,   spawn,      { .cmd = "exec urxvt +sb -tr -sh 60 -fg black" } }, \

   { MODKEY,         XK_Tab,      focusnext,   { 0 } }, \

   { MODKEY|ShiftMask,      XK_Tab,      focusprev,   { 0 } }, \

   { MODKEY,         XK_Return,   zoom,      { 0 } }, \

   { MODKEY,         XK_m,      togglemax,   { 0 } }, \

   { MODKEY|ShiftMask,      XK_0,      tag,      { .i = 0 } }, \

   { MODKEY|ShiftMask,      XK_1,      tag,      { .i = 1 } }, \

   { MODKEY|ShiftMask,      XK_2,      tag,      { .i = 2 } }, \

   { MODKEY|ShiftMask,      XK_3,      tag,      { .i = 3 } }, \

   { MODKEY|ShiftMask,      XK_4,      tag,      { .i = 4 } }, \

   { MODKEY|ControlMask|ShiftMask,   XK_0,      toggletag,   { .i = 0 } }, \

   { MODKEY|ControlMask|ShiftMask,   XK_1,      toggletag,   { .i = 1 } }, \

   { MODKEY|ControlMask|ShiftMask,   XK_2,      toggletag,   { .i = 2 } }, \

   { MODKEY|ControlMask|ShiftMask,   XK_3,      toggletag,   { .i = 3 } }, \

   { MODKEY|ControlMask|ShiftMask,   XK_4,      toggletag,   { .i = 4 } }, \

   { MODKEY|ShiftMask,      XK_c,      killclient,   { 0 } }, \

   { MODKEY,         XK_space,   togglemode,   { 0 } }, \

   { MODKEY,         XK_0,      view,      { .i = 0 } }, \

   { MODKEY,         XK_1,      view,      { .i = 1 } }, \

   { MODKEY,         XK_2,      view,      { .i = 2 } }, \

   { MODKEY,         XK_3,      view,      { .i = 3 } }, \

   { MODKEY,         XK_4,      view,      { .i = 4 } }, \

   { MODKEY|ControlMask,      XK_0,      toggleview,   { .i = 0 } }, \

   { MODKEY|ControlMask,      XK_1,      toggleview,   { .i = 1 } }, \

   { MODKEY|ControlMask,      XK_2,      toggleview,   { .i = 2 } }, \

   { MODKEY|ControlMask,      XK_3,      toggleview,   { .i = 3 } }, \

   { MODKEY|ControlMask,      XK_4,      toggleview,   { .i = 4 } }, \

   { MODKEY|ShiftMask,      XK_q,      quit,      { 0 } }, \

        { MODKEY,                       XK_p,           spawn,          { .cmd = "exec `dmenu </tmp/.proglist`" } }, \

};

#define RULES \

static Rule rule[] = { \

   /* class:instance regex      tags regex   isfloat */ \

   { "Firefox.*",         "2",      True }, \

   { "Gimp.*",         NULL,      True  }, \

        { "MPlayer.*",             NULL,           True  }, \

        { "Thunderbird.*",         NULL,           True  }, \

        { "xboard.*",              NULL,           True  }, \

        { "Muse.*",                NULL,           True  }, \

}; 
```

Questo e' il mio config.h, non vanno bene due cose... Thunderbird non parte in modalita' true cioe' nel senso che non riesco a spostare o ridurre la finestra....

inoltre, quando premo Mod4+Shift+q dwm non si chiude,ma scompare la barra in alto e rimane bloccato... e' normale e per uscire da X devo premere ctrl+alt+backspace oppure devo preoccuparmi?

Lavish, l'ho quasi interamente copiato dal tuo, e nonostante tutto quella poche cose che ho modificato mi sembrano sbagliate... potresti correggermelo?

Inoltre, potreste consigliarmi qualche font carino per la shell? ho provato snap ma non mi piace. C'e' un modo per modificare le impostazioni della shell, magari da un file, senza doverle settare come ho fatto io nel config.h ? Come faccio a "muovere" le finestre? Sempre se e' possibile...

grazie e ciao

----------

## lavish

 *neurolepsia wrote:*   

> Questo e' il mio config.h, non vanno bene due cose...  

 

Il config che stai usando è "vecchio". Fai riferimento a quello che ho postato oggi  :Wink: 

 *Quote:*   

> Thunderbird non parte in modalita' true cioe' nel senso che non riesco a spostare o ridurre la finestra....

 

Devi prestare attenzione alla WM_CLASS. Per visualizzare la classe di un determinato sw, basta dare il comando

```
xprop | awk -F'"' '/^WM_CLASS/ { printf "%s:%s\n", $4, $2 }'
```

 e cliccare sulla finestra del software. Nel caso di thunderbird, mi dicono gentilmente dalla regia che è Thunderbird-bin, quindi dovrai inserire una riga del genere:

```
"Thunderbird-bin.*",         NULL,      True  }, \ 
```

 *Quote:*   

> inoltre, quando premo Mod4+Shift+q dwm non si chiude,ma scompare la barra in alto e rimane bloccato... e' normale e per uscire da X devo premere ctrl+alt+backspace oppure devo preoccuparmi?

 

No è normale, perchè tu così killi lo script di status. Ti basta ripremere M-q per uscire dal WM.

 *Quote:*   

> Inoltre, potreste consigliarmi qualche font carino per la shell? ho provato snap ma non mi piace. C'e' un modo per modificare le impostazioni della shell, magari da un file, senza doverle settare come ho fatto io nel config.h ?

 

Certo, snap non è un font fatto per essere in una shell  :Wink:  Personalmente uso proggy-clean ( http://www.proggyfonts.com/index.php?menu=download) , ma altri fonts molto buoni sono fixed e terminus ( emerge media-fonts/terminus-font )

Per avere un unico file dove settare le impostazioni in modo coerente, puoi usare ~/.Xdefaults

Ti posto il mio, in modo che tu possa fartene un'idea:

```

URxvt*background: white

URxvt*foreground: black

URxvt*scrollBar: false

URxvt*font: -*-proggyclean-*-*-*-*-*-*-*-*-*-*-*-*

XBoard*lightSquareColor: #d3d4d5

XBoard*darkSquareColor: #858585

XBoard*font: snap

Xcursor.theme: Jimmac
```

 *Quote:*   

> Come faccio a "muovere" le finestre? Sempre se e' possibile...

 Puoi spostare le finestre in modalità float. Quindi se sei in tiled layout, premi M-space e poi tenendo premuto Modkey, trascina la finestra con il tasto sinistro del mouse. Con il destro fai un resize. E' tutto documentato nel man comunque..

Ciao!

----------

## neurolepsia

lavish, se non ti e' troppo di peso, potresti aggiornare periodicamente il config.h ?  :Very Happy: 

Cosi' gli "ignoranti" come me possono prendere spunto...

grazie mille 

ciao

----------

## lavish

 *neurolepsia wrote:*   

> lavish, se non ti e' troppo di peso, potresti aggiornare periodicamente il config.h ?

 

Done  :Wink: 

2006/09/03 - dwm-1.2, dmenu-0.6:

aggiornamento versioni

riscrittura dei commenti in config.h

formattazione migliore 

----------

## lavish

Aggiornato a dwm-1.3 e dmenu-0.7  :Wink: 

----------

## curson

Scopro solo ora dwm, e questo topic è stato utilissimo per iniziare.

Al momento un quasi vergine dwm mi osserva dal mio Thinkpad, così a naso sembra più adatto a me di quanto non sia wmii-3  :Wink: 

Grazie mille Lavish!

----------

## !ico

 *curson wrote:*   

> cos`i a naso sembra piu adatto a me di quanto non sia wmii-3 

 

scusate, ma che ha di diverso dwm da wmii? ammetto di doverlo ancora provare, ma sinceramente non ho capito dove stanno le grosse differenze (intendo in positivo per dwm..) 

ola  :Wink: 

----------

## lucapost

Sto cercando di personalizzare il config.h di dwm, in particolare la configurazione delle scorciatoie da tastiera.

Trovo difficoltÃ  a riempire la colonna keys " XK_* ", per i tasti alfanumerci nessun problema, ma che nome hanno le frecce, pag su/giÃ¹, ecc? 

Esiste qualche software che mi restituisce il nome da mettere al posto del "*"?

Ho provato a cercare, ma trovo soluzioni soluzioni solamente che richiedono altro software (xbindkeys...)

Grazie a tutti.

----------

## zolar czakl

```
emerge xev
```

Esempio: PageUp (Prior)

```
KeyRelease event, serial 32, synthetic NO, window 0x800001,

    root 0x187, subw 0x0, time 1538925399, (869,737), root:(874,817),

    state 0x0, keycode 99 (keysym 0xff55, Prior), same_screen YES,

    XLookupString gives 0 bytes: 

    XFilterEvent returns: False
```

Non sarebbero comodi i colori all'interno del "code"? 

----------

## lavish

Salve a tutti!

Scusatemi per la lunga assenza, ma sono in un periodo abbastanza incasinato per quanto riguarda esami/musica   :Confused: 

Ad ogni modo, vediamo di rispondere a tutti  :Smile: 

 *curson wrote:*   

> Scopro solo ora dwm, e questo topic è stato utilissimo per iniziare.
> 
> Al momento un quasi vergine dwm mi osserva dal mio Thinkpad, così a naso sembra più adatto a me di quanto non sia wmii-3 

 

Si', come modello di sviluppo, non ci si e' basati su filosofie particolari (a differenza di wmii, dove lo scopo era quello di creare un WM il piu' dinamico possibile), ma si e' guardato esclusivamente all'usabilita'  :Smile: 

 *!ico wrote:*   

> scusate, ma che ha di diverso dwm da wmii? ammetto di doverlo ancora provare, ma sinceramente non ho capito dove stanno le grosse differenze (intendo in positivo per dwm..)

 

E' tutto scritto sul sito http://dwm.suckless.org/ . Faccio comunque un breve riassunto:

configurazione da sorgente:

dwm viene configurato tramite un file di header C. Questo semplifica di molto il codice (non serve un parser) e rende piu' sicuro e veloce il programma (non possono essere passati valori che non siano noti a tempo di compilazione). La sintassi del file inoltre - assunto che si conosca il C - e' standard per tutti.

assenza del supporto a 9P:

L'fs virtuale di wmii, e' possibile montarlo come un vero fs tramite il filesystem 9P, presente nel kernel sotto questa voce 

```
< > Plan 9 Resource Sharing Support (9P2000) (Experimental)
```

.

Molto interessante, ma di dubbia utilita'...

In dwm, semplicemente, non c'e' alcun fs virtuale. Segue la mancanza di supporto a 9P.

assenza di "controllo remoto":

Proprio a causa dell'assenza dell'fs virtuale di wmii in dwm, non e' possibile impartire azioni al WM da riga di comando. Di conseguenza, non si possono usare script per la configurazione a runtime del WM.

assenza delle tagbars:

In dwm le tagbars sono state semplicemente rimosse. L'output di ogni finestra compare direttamente nella barra in alto, quando il client viene focalizzato.

semplicita':

dwm e' composto da un singolo file binario, quindi e' comodo in ogni tipo di ambiente/installazione.

I sorgenti sono molto puliti e inferiori alle 2000 righe di ansi C.

Tutto cio' puo' far sembrare wmi >> dwm. In realta' e' stato rimosso da wmii tutto quello che - secondo l'autore e la userbase - era superfluo, migliorando l'usabilita' e l'efficacia del WM.

Per far chiarezza, vorrei aggiungere un'altra cosa riguardo allo sviluppo di wmii e dwm: questi due software non sono sviluppati dalla stessa persona (Anselm R. Garbe).

dwm e' sviluppato da lui, mentre wmii lo *era* prima che si dedicasse a dwm. 

wmii era stato affidato a Kris Maglione, uno sviluppatore eccezzionale che stava impostando il cammino verso wmii-4, con un wmiifs riscritto completamente, tagbars editabili e altro. Purtroppo, Kris e' letteralmente scomparso e di lui, da mesi, non si sa piu' nulla. La speranza e' che non gli sia successo nulla di grave a livello personale   :Sad: 

wmii era e' stato affidato a Denis G. , ma se devo essere franco, si nota l'abisso che sussiste fra lui e i 2 mantainers precedenti   :Confused: 

Non vedo un grande futuro per wmii.

 *lucapost wrote:*   

> Sto cercando di personalizzare il config.h di dwm, in particolare la configurazione delle scorciatoie da tastiera.
> 
> Trovo difficoltÃ  a riempire la colonna keys " XK_* ", per i tasti alfanumerci nessun problema, ma che nome hanno le frecce, pag su/giÃ¹, ecc? 
> 
> Esiste qualche software che mi restituisce il nome da mettere al posto del "*"?

 

Esattamente grazie al software indicato da zolar czakl. Il token che ti serve e' il secondo campo fra parentesi nella terza riga  :Wink: 

 *zolar czakl wrote:*   

> Non sarebbero comodi i colori all'interno del "code"?

 

Qui non ho capito cosa intendi, se ti riferisci a dwm o se stavi pensando ai colori del campo [code] in phpBB

Ciao!

// edit: nel how-to ho aggiunto la seguente nota

Per una questione di comodita', il mio config.h e i vari scripts non sono aggiornati qui sul forum. Li potete trovare aggiornati e riveduti, qui: http://www.minimalblue.com/projects/dwm.php

----------

## lucapost

Grazie per la dritta di xev, l'avevo giÃ  usato in fluxbox ma non riuscivo a ricordare come si chiamava.

Ho riesumato quindi il il mio ~/fluxbox/keys da un vecchio pc.

Quello che voglio ottenere in dwm Ã¨ l'equivalente in fluxbox di

```
Mod1 Right :NextWorkspace

Mod1 Left :PrevWorkspace
```

cioÃ¨ fare lo switch ciclico tra i vari desktop

Non arrivo a trovare come riempire la colonna function per ottenere questo effetto, mi sapete aiutare?

----------

## lavish

Non puoi a meno di scriverti una funzione per farlo.

Comunque, per switchare fra views (workspaces) puoi usare MODKEY + <num>

----------

## zolar czakl

 *lavish wrote:*   

> Qui non ho capito cosa intendi, se ti riferisci a dwm o se stavi pensando ai colori del campo [code] in phpBB

 phpBB, era una riflessione a bassa voce.

Esempio; state 0x0, keycode 99 (keysym 0xff55,Prior), same_screen YES, ha un altro impatto rispetto a

 *lavish wrote:*   

> Il token che ti serve e' il secondo campo fra parentesi nella terza riga

 

Ok, sono troppo pigro   :Smile: 

Tornando OT,

ho provato dwm e dopo poche ore (meno di una  :Razz:  ) e' una sofferenza esser costretti a metter la mano sul mouse.

Il layout e' decisamente ottimo.

Domanda: c'e' qualche piano per gestire meglio mplayer?

L'ultima volta che ho provato, mantenere l'aspect ratio era un problema (con xv come output).

Pero' a fvwm non rinuncio  :Twisted Evil: 

----------

## lavish

 *zolar czakl wrote:*   

> Domanda: c'e' qualche piano per gestire meglio mplayer?
> 
> L'ultima volta che ho provato, mantenere l'aspect ratio era un problema (con xv come output).

 

Io tratto mplayer come floating app, quindi non ho alcun problema

 *zolar czakl wrote:*   

> Pero' a fvwm non rinuncio 

 

uhauhauh, convertiremo pure te   :Laughing: 

----------

## zolar czakl

 *lavish wrote:*   

> Io tratto mplayer come floating app, quindi non ho alcun problema

 

Sicuro, sicuro?   :Very Happy: 

Test mplayer: stesso filmato

----------

## lavish

 *zolar czakl wrote:*   

>  *lavish wrote:*   Io tratto mplayer come floating app, quindi non ho alcun problema 
> 
> Sicuro, sicuro?  
> 
> Test mplayer: stesso filmato

 

Beh intendo che non faccio il resize della finestra di mplayer, per questo non ho problemi. Comunque ho visto dal tuo screenshot che stai usando la patch di Ross, o sbaglio?  :Very Happy: 

----------

## lucapost

@lavish

Ho letto da qualche parte che anche tu hai utilizzato come terminale

```
lucapost@jarod ~ $ eix -Ic rxvt

[I] x11-terms/rxvt-unicode (8.1@26/12/06): rxvt clone with XFT and Unicode support
```

Io lo utilizzo con queste impostazioni:

```
lucapost@jarod ~ $ cat .Xdefaults |grep urxvt

urxvt*scrollBar:        false

urxvt*background:         #000000

urxvt*foreground:         #ffffff

urxvt*inheritPixmap:      true

urxvt*tintColor:          #dfdfdf

urxvt*shading:           20 

urxvt*cursorColor:   #d8d8d8
```

Il problema Ã¨ che dwm sembra non supportare troppo bene le trasparenze. Qui c'Ã¨ uno screenshot.

Vengono fuori anche a te le striscie orrizzontali alla base di ogni terminale?

Sono un pÃ² fastidiose... e poi il mio favoloso sfondo lo voglio continuare a vedere (anche con dwm!!!)

----------

## !ico

sto provando anch'io dwm, ma ho qualche dubbio:

1) non sono un esperto di script, ma è possibile far si che in dmenu appaiano man mano che si digita i possibili nomi da scegliere (come in wmii per capirci..)?

2) mi pare di aver capito che non si possono scambiare le finestre da verticale a orizzontale, ma solo stringerele o allargarle, sbaglio?

3)in tty1 (dove lancio startx) continua a dirmi "bash: lsx: command not found!" ma nel mio config non c'è nessun lsx.. qualche idea? EDIT: sono un idiota... scusate, tralasciate questo punto.. :p

ps: per ora continuo a preferire wmii, ma probabilmente perchè non so usare dwm..   :Rolling Eyes: 

ola  :Wink: 

----------

## lavish

 *lucapost wrote:*   

> Il problema Ã¨ che dwm sembra non supportare troppo bene le trasparenze. Qui c'Ã¨ uno screenshot.
> 
> Vengono fuori anche a te le striscie orrizzontali alla base di ogni terminale?
> 
> Sono un pÃ² fastidiose... e poi il mio favoloso sfondo lo voglio continuare a vedere (anche con dwm!!!)

 

Non e' colpa di dwm, ma colpa dei terminali stessi che non possono assumere dimensioni a piacere. Questo problema si chiama incremental resize ed e' proprio di piu' o meno tutti i terminali piu' usati. Di conseguenza, qualsiasi WM che voglia settare una dimensione qualunque ai terminali, in caso di trasparenza, si trovera' con qualche brutto rendering sui bordi.

Come risolvere?

a) si usa un terminale che accetti qualunque dimensione: gnome-terminal e konsole dovrebbero andare bene (ma sono delle chiaviche logicamente)

b) si scrive un nuovo terminale che accetti qualunque dimensione: e' quello che sta facendo Anselm (creatore di dwm) con st

c) si lasciano perdere le trasparenze: pure io le ho usate per anni. Con la maturita' ho capito che sono la peggior cosa possibile per un terminale, dove lo scopo e' avere un output chiaro e costante in base all'area utilizzata  :Smile: 

----------

## lavish

 *!ico wrote:*   

> 1) non sono un esperto di script, ma è possibile far si che in dmenu appaiano man mano che si digita i possibili nomi da scegliere (come in wmii per capirci..)?

 

Io nel config.h ho associato a MODKEY + p, la seguente azione:

```
        { MODKEY,                       XK_p,           spawn, \

                { .cmd = "exe=\"$(lsx `echo $PATH | sed 's/:/ /g'` | sort -u " \

                        " | dmenu -fn '"FONT"' -nb '"NORMBGCOLOR"' -nf '"NORMFGCOLOR"' " \

                        "-sb '"SELBGCOLOR"' -sf '"SELFGCOLOR"')\" && exec $exe" } }, 
```

Funziona esattamente come in wmii, solo che la lista e' aggiornata dinamicamente ad ogni esecuzione

 *Quote:*   

> 2) mi pare di aver capito che non si possono scambiare le finestre da verticale a orizzontale, ma solo stringerele o allargarle, sbaglio?

 

mhhh... non ho ben capito cosa intendi

----------

## !ico

si, scusa, hop editato il post sopra.. mi mancava lsx, per questo non mi appariva la lista come in wmii perdono   :Embarassed: 

chiedo venia anche per l'altro punto: intendevo dire quello che si fa con MODKEY-i/d ...mi scusino ma ho postato senza leggere bene tutto.. :p

[/quote]

grazie

ola  :Wink: 

----------

## lucapost

 *lavish wrote:*   

> 
> 
> b) si scrive un nuovo terminale che accetti qualunque dimensione: e' quello che sta facendo Anselm (creatore di dwm) con st

 

Speriamo che qualcuno piÃ¹ autorevole di me gli dica di mantenere anche il supporto per le trasparenze, senza superare i 17KB (...come dwm) di codice, mi raccomando!   :Wink: 

cmq quelle strisce mi danno proprio fastidio, intanto mi tengo xterm   :Crying or Very sad: 

----------

## zolar czakl

 *lavish wrote:*   

> a) si usa un terminale che accetti qualunque dimensione: gnome-terminal e konsole dovrebbero andare bene (ma sono delle chiaviche logicamente)

 

Se il supporto unicode non e' un problema c'e' anche

```
x11-terms/mrxvt
```

basta aggiungere in Xresources

```
Mrxvt.smoothResize True
```

Dal man

```
smoothResize True|False

           Enable  /  disable smooth resize. If enabled, then the mrxvt window

           is resized in pixel increments (instead of  character  increments).

           This  is  useful if you want a full screen / maximized mrxvt window

           that covers the entire screen  (without  leaving  an  annoying  few

           pixel wide strip uncovered).
```

 *lavish wrote:*   

> Comunque ho visto dal tuo screenshot che stai usando la patch di Ross, o sbaglio? 

 Esatto, leggermente modificata perche' non funzionava.

----------

## lucapost

Accedo ad una rete multiutente (~100).

Vorrei dare la possibilita' ad ognuno di lanciare il suo dwm personalizzato, il binario e' presente nella sua home.

Devo permettere un'unica sessione di X attiva.

Devo mantenere l'attuale metodo di login con XDM, nel quale sceglire il WM, tra i quali dwm.

Il problema e' che XDM se ne frega del contenuto di ogni ~/.xinitrc ed a quanto pare anche di ~/.Xsession.

Sbaglio qualcosa?

Come permetto ad ogni utente di selezionare il suo dwm?

EDIT:

intanto ho fatto questa modifica:

```

jarod ~ # cat /etc/X11/Sessions/dwm 

#!/bin/sh

DIR=${HOME}/.dwm

mkdir -p "${DIR}"

if [ ! -p "${DIR}"/status ]; then

        rm -f "${DIR}"/status

        mkfifo "${DIR}"/status

fi

if [ -f "${DIR}"/dwmrc ]; then

        /bin/sh "${DIR}"/dwmrc >"${DIR}"/status &

else

        (while true; do

                echo `date`

                sleep 1

        done >"${DIR}"/status)&

fi

exec ${DIR}/bin/dwm <"${DIR}"/status             <------(Modifica!)
```

----------

## !ico

 *lavish wrote:*   

> 
> 
> wmii era stato affidato a Kris Maglione, uno sviluppatore eccezzionale che stava impostando il cammino verso wmii-4, con un wmiifs riscritto completamente, tagbars editabili e altro. Purtroppo, Kris e' letteralmente scomparso e di lui, da mesi, non si sa piu' nulla. La speranza e' che non gli sia successo nulla di grave a livello personale  
> 
> wmii era e' stato affidato a Denis G. , ma se devo essere franco, si nota l'abisso che sussiste fra lui e i 2 mantainers precedenti  
> ...

 

direi che in questi giorni si sono ripresi.. hanno raccolto i fixed dalla 3.5.1 e stanno facendo le prime 3.6..

ed è tornato anche Kris Maglione http://www.suckless.org/pipermail/wmii/2007-February/thread.html#3204

speriamo che sia solo l'inizio verso la 4, io intanto sono tornato a wmii :p

ola

----------

## lavish

 *!ico wrote:*   

> direi che in questi giorni si sono ripresi.. hanno raccolto i fixed dalla 3.5.1 e stanno facendo le prime 3.6..
> 
> ed è tornato anche Kris Maglione

 

Yes, sono contentissimo che sia tornato Kris, si pensava veramente al peggio   :Confused: 

----------

## lucapost

 *lavish wrote:*   

> 
> 
> Non e' colpa di dwm, ma colpa dei terminali stessi che non possono assumere dimensioni a piacere. Questo problema si chiama incremental resize ed e' proprio di piu' o meno tutti i terminali piu' usati. Di conseguenza, qualsiasi WM che voglia settare una dimensione qualunque ai terminali, in caso di trasparenza, si trovera' con qualche brutto rendering sui bordi.
> 
> 

 

Sembra non essere un problema che affligge solo i terminali, anche altre applicazioni hanno lo stesso problema.  Noto questo soprattutto quando ho molte finestre incolonnate nel tilemode, anche se si tratta di 5/6 xterm incolonnati.

[semiOT]

Ormai da una settimana, dwm Ã¨ l'unico WM presente sul mio notebook.

Sono malato? Sono grave?   :Shocked: 

/[semiOT]

----------

## lucapost

Ho un problema con dmenu:

```
jarod ~ # emerge dmenu

Calculating dependencies... done!

>>> Emerging (1 of 1) x11-misc/dmenu-2.5 to /

 * dmenu-2.5.tar.gz RMD160 ;-) ...                                                                                                                                                                         [ ok ]

 * dmenu-2.5.tar.gz SHA1 ;-) ...                                                                                                                                                                              [ ok ]

 * dmenu-2.5.tar.gz SHA256 ;-) ...                                                                                                                                                                          [ ok ]

 * dmenu-2.5.tar.gz size ;-) ...                                                                                                                                                                                 [ ok ]

 * checking ebuild checksums ;-) ...                                                                                                                                                                          [ ok ]

 * checking auxfile checksums ;-) ...                                                                                                                                                                         [ ok ]

 * checking miscfile checksums ;-) ...                                                                                                                                                                        [ ok ]

 * checking dmenu-2.5.tar.gz ;-) ...                                                                                                                                                                          [ ok ]

>>> Unpacking source...

>>> Unpacking dmenu-2.5.tar.gz to /var/tmp/portage/x11-misc/dmenu-2.5/work

 * Checking existence of //etc/portage/savedconfig/x11-misc/dmenu-2.5 ...

 * Checking existence of //etc/portage/savedconfig/x11-misc/dmenu-2.5 ...

 * Checking existence of //etc/portage/savedconfig//x11-misc/dmenu ...

 * found //etc/portage/savedconfig//x11-misc/dmenu

>>> Source unpacked.

>>> Compiling source in /var/tmp/portage/x11-misc/dmenu-2.5/work/dmenu-2.5 ...

dmenu build options:

CC draw.c

CC main.c

CFLAGS   = -march=k8 -O2 -pipe -I. -I/usr/include -I/usr/X11R6/include -DVERSION="2.5"

LDFLAGS  = -L/usr/lib -lc -L/usr/X11R6/lib -lX11

CC       = x86_64-pc-linux-gnu-gcc

CC util.c

draw.c:63: error: conflicting types for âtextnwâ

draw.c:32: error: previous implicit declaration of âtextnwâ was here

make: *** [draw.o] Error 1

make: *** Waiting for unfinished jobs....

!!! ERROR: x11-misc/dmenu-2.5 failed.

Call stack:

  ebuild.sh, line 1614:   Called dyn_compile

  ebuild.sh, line 971:   Called qa_call 'src_compile'

  environment, line 1900:   Called src_compile

  dmenu-2.5.ebuild, line 40:   Called die

!!! emake failed, please check the configfile

!!! If you need support, post the topmost build error, and the call stack if relevant.

!!! A complete build log is located at '/var/tmp/portage/x11-misc/dmenu-2.5/temp/build.log'.
```

Qualcuno ha giÃ  risolto?

----------

## !ico

considerato che :

```

unsigned int textnw(const char *text, unsigned int len) 
```

è la funzione incriminata, e viene chiamata con

```

w==textnw(buf, len)
```

dove len è unsigned int e buf è static cast, forse il conflitto è su buf..   :Question:  (anche se non dovrebbe)

che compilatore usi?

prova a compilaro con -Wall e vedi se ti dice qualcos'altro.

sulla ML non è ancora stata annunciata la 2.5..   :Rolling Eyes: 

ola  :Wink: 

----------

## lucapost

Se faccio a mano funziona:

```
jarod dmenu-2.5 # make clean install

cleaning

dmenu build options:

CFLAGS   = -Os -I. -I/usr/include -I/usr/X11R6/include -DVERSION="2.5"

LDFLAGS  = -L/usr/lib -lc -L/usr/X11R6/lib -lX11

CC       = cc

CC draw.c

CC main.c

CC util.c

CC -o dmenu

installing executable file to /usr/local/bin

installing manual page to /usr/local/share/man/man1
```

Il compilatore al quale ti riferivi prima dovrebbe essere quello indicato nell'output di emerge alla riga:

```
CC       = x86_64-pc-linux-gnu-gcc
```

O sbaglio?

Intanto mi tengo dmenu-2.2 installato con emerge.

----------

## lucapost

dmenu-2.6 compila correttamente, ora il problema Ã¨ un'altro. Ho deciso di aprire un nuovo threads.

----------

## lavish

Ho risposto al thread aperto da lucapost.. scusatemi ma non avevo visto queste reply prima   :Confused: 

Ma posso chiedervi come mai andate a complicarvi la vita usando gli ebuild per dwm e dmenu? Non e' tanto piu' semplice (trattandosi di applicazioni composte da un singolo file eseguibile) aggiornare con Hg o comunque fare a mano? 

Anyway...

Seguendo la ML di dwm, mi sono reso conto di una possibilita' molto carina a cui non avevo pensato.

Con dwm normalmete, per "ricaricare" la configurazione, e' necessario riavviare il WM cosa che, nel caso di uno xinitrc classico, porta alla terminazione di X. Perche' quindi non fare in modo da poter riavviare il WM senza perdere i clients attivi?

Una delle soluzioni e' questa:

~/.xinitrc :

```
#!/bin/sh

$HOME/.dwm/status &

while true

do

   while true

   do

       /usr/local/bin/dwm < $HOME/.dwm/fifo

   done

done
```

In questo modo, appena terminata una istanza di dwm (con un M-S-q, per esempio) ne ripartira' subito un'altra che si occupera' di organizzare le finestre precedentemente aperte  :Smile: 

Ne approfitto comunque per segnalarvi la pagina sul mio sito con script aggiornati all'ultima versione di dwm: http://www.minimalblue.com/projects/dwm.php Magari vi puo' dare qualche idea  :Wink: 

Ciao!

----------

## lucapost

Ma si può provare questo st oppure no? esiste un mirror dove scaricarsi i sorgenti?

----------

## lavish

 *lucapost wrote:*   

> Ma si può provare questo st oppure no? esiste un mirror dove scaricarsi i sorgenti?

 

```
hg clone http://www.suckless.org/cgi-bin/hgwebdir.cgi/st
```

Ma e' ancora in fase di costruzione, quindi non funziona per ora  :Wink: 

//EDIT: l'ho provato ora e cavoli... funziona   :Shocked:   :Shocked:   :Shocked: 

E' in fase di profondo sviuppo ma... funzia   :Surprised: 

----------

## lucapost

peccato ancora che non abbia neppure un config.h per impostare i font, background, ecc....

io aspetto pazientemente le trasparenze...

mandi

----------

## lavish

 *lucapost wrote:*   

> io aspetto pazientemente le trasparenze...

 

Mi sa che ti tocchera' aspettare mooooooltoooooo   :Laughing:   (non penso sia nei piani di Anselm implementare la fake transparency)

----------

## randomaze

 *lavish wrote:*   

>  *lucapost wrote:*   io aspetto pazientemente le trasparenze... 
> 
> Mi sa che ti tocchera' aspettare mooooooltoooooo    (non penso sia nei piani di Anselm implementare la fake transparency)

 

Una soluzione degna per un minimalista sarebbe quella di impostare il nero come sfondo di tutti i terminali e, come immagine di sfondo, mettere una bitmap nera  :Twisted Evil: 

----------

## lavish

 *randomaze wrote:*   

>  *lavish wrote:*    *lucapost wrote:*   io aspetto pazientemente le trasparenze... 
> 
> Mi sa che ti tocchera' aspettare mooooooltoooooo    (non penso sia nei piani di Anselm implementare la fake transparency) 
> 
> Una soluzione degna per un minimalista sarebbe quella di impostare il nero come sfondo di tutti i terminali e, come immagine di sfondo, mettere una bitmap nera 

 

fai %s/nero/bianco/g e ti trovi con la mia configurazione  :Laughing:   :Laughing:   :Laughing: 

----------

## lucapost

Ho modificato un pò gli script per visualizzare le info nella barra di dwm, in particolare ho creato uno script che mi salva lo stato della batteria, temperatura della CPU, data e ora in un file.

Nel caso la carica della batteria scarseggi mi indichi anche il time-out per l'autoshutdown del notebook.

Ho creato il seguente /root/script/powermanager:

```
#!/bin/bash                                                                                      

######################################################################################################################

#Salva lo stato della batteria, la temperatura della CPU, la data e l'ora in un file.                                #

#Gestisce lo shutdown in caso di barreria quasi scarica.                                                             #

#In caso di batteria quasi scarica, parte segnale acustico e nel file salva i secondi che mancano allo shutdown      #

######################################################################################################################

   WARNING=98                                                                               #Percentuale di shutdown

   TMP=60                                                                                   #Tempo di spegnimento

   DELAY=5                                                                                  #Check rate della batteria

   FULL=`cat /proc/acpi/battery/BAT0/info |awk '/full\ capacity:/ { print $4 }'`            #Capacità della batteria  

while true ; do                                                                             #

   PRESENT=`cat /proc/acpi/battery/BAT0/state |awk '/present:/ { print $2}'`                #Presenza della batteria   

   STATE=`cat /proc/acpi/battery/BAT0/state |awk '/charging\ state:/ { print $3 }'`         #Stato della batteria

   REMAINING=`cat /proc/acpi/battery/BAT0/state |awk '/remaining\ capacity:/ { print $3 }'` #Carica della batteria   

   TEMP=`cat /proc/acpi/thermal_zone/TZ00/temperature | awk '{ print $2 }'`                 #Temperatua CPU

   DATE=`date '+%a,%x %H:%M'`                                                               #Data

   sleep $DELAY

   if [ "$PRESENT" = "yes" ] ; then

               CHARGE=$((${REMAINING}*100/${FULL}))

      case $STATE in

      charged)

               SIGN="CHARGED"

               TMP=60;;

      charging)

               SIGN="+$CHARGE%"

               TMP=60;;

      discharging)

         if [ "$CHARGE" -le "$WARNING" ] ; then

               let "TMP -=$DELAY"

               SIGN="-$TMP LOW BAT!!!"

               aplay /root/sound/beep.wav &>/dev/null

            if [ "$TMP" -le 1 ] ; then 

               /sbin/shutdown -h now

            fi

         else

               SIGN="-$CHARGE%"

               TMP=60

         fi;;

      esac

   else

               SIGN="!BAT"

   fi        

               echo "$SIGN $TEMP°C $DATE" > /tmp/info

done

```

Vi serve anche questo /root/sound/beep.wav

In /etc/conf.d/local.start ho aggiunto:

```

killall powermanager &>/dev/null

/root/script/powermanager &
```

E lo ~/.xinitrc da mettere nella home dell'utente:

```
while true ; do

     echo `cat /tmp/info` 

     sleep 5

done | /usr/bin/dwm
```

Per i tempi di aggiornamento delle info, cambiate il valore degli sleep come più vi aggrada.

Mandi

----------

## !ico

Salve!

Son passato a dwm (4.0) perchè mi sono accorto che le funzioni che wmii ha in più non mi servivano (a parte ovviamente il poter fare modifiche in runtime..sigh..  :Sad:  )

Ci sono delle features a mio parere utili che si potrebbero implementare, ad esempio:

quando si fa il resize di due terminali su una view1, sarebbe simpatico se gli altri terminali in view2 non cambiassero dimensione, cosa che invece succede.  :Confused: 

Inoltre credo sarebbe utile se i M-shift-h/k (di config.default.h) non fossero accumulabili: se premo due volte M-shift-j sarebbe bello se premendo una volta M-shift-k tornasse come prima..

Io ora ci provo, se magari qualcuno ha idea di come fare e può darmi qualche consiglio, sarebbe molto gradito   :Very Happy: 

ola  :Wink: 

----------

## lavish

 *!ico wrote:*   

> Son passato a dwm (4.0) perchè mi sono accorto che le funzioni che wmii ha in più non mi servivano (a parte ovviamente il poter fare modifiche in runtime..sigh..  )

 

Puoi farlo con uno xinitrc tipo quello che trovi su http://www.minimalblue.com/projects/dwm.php

 *!ico wrote:*   

> Ci sono delle features a mio parere utili che si potrebbero implementare, ad esempio:
> 
> quando si fa il resize di due terminali su una view1, sarebbe simpatico se gli altri terminali in view2 non cambiassero dimensione, cosa che invece succede.  

 

dwm cerca di essere il piu' semplice e predictable possibile, quindi si' e' stata una scelta quella di implementare questo comportamento. Prova a dare un'occhiata ai sorgenti, non penso sia cosi' difficile ottenere il comportamento che desideri

 *!ico wrote:*   

> Inoltre credo sarebbe utile se i M-shift-h/k (di config.default.h) non fossero accumulabili: se premo due volte M-shift-j sarebbe bello se premendo una volta M-shift-k tornasse come prima..

 

M-S-{j,k} serve solo ad aumentare/diminuire il numero di clients nella master coloumn. Per forza sono accumulabili quindi: se anche avendo solo 2 client in esecuzione su quel tag, premendo M-S-k per 3 volte, setterai il numero di clients stackabili sulla master coloumn a 4, anche se apparentemente non cambiera' nulla dopo la prima volta. Quando aprirai un altro client pero', questo comparira' a sinistra e non a destra.

Per questo motivo il comportamento attuale di  M-S-{j,k} e' l'unico sano possibile  :Smile: 

Ciao!

----------

## !ico

 *lavish wrote:*   

> 
> 
> dwm cerca di essere il piu' semplice e predictable possibile, quindi si' e' stata una scelta quella di implementare questo comportamento.

 

certo, avrebbe richiesto un numero maggiore di righe di codice , ma a mio avviso non sarebbe apparso meno semplice e predictable, anzi, mi pare un po' limitativo nellla libertà di gestire le finestre..   :Confused: 

comunque alla fine si, son scelte; il bello dell open-source è che lo puoi adattare alle tue esigenze   :Razz: 

 *lavish wrote:*   

> 
> 
>  avendo solo 2 client in esecuzione su quel tag, 

 

 :Embarassed:   ops, c'hai beccato in pieno, l'ho provato solo con due finestre e non avevo per niente capito il funzionamento di quella funzione..   :Razz: 

thanks 

ola  :Wink: 

----------

## lucapost

 *lavish wrote:*   

>  *lucapost wrote:*   io aspetto pazientemente le trasparenze... 
> 
> Mi sa che ti tocchera' aspettare mooooooltoooooo   

 

anche perchè il progetto di st sembra essere sparito dal sito http://www.suckless.org ARG...

Ancora una domanda...il giochetto dei due while nello .xinitrc funziona sempre? a me funge solamente se non ho finestre aperte in giro per i vari desk...

----------

## lavish

 *lucapost wrote:*   

> anche perchè il progetto di st sembra essere sparito dal sito http://www.suckless.org ARG...

 

No, st esiste ancora.. se vuoi sapere le ultime novita':

 *Quote:*   

> Subject: [dwm] status
> 
> Date: Wed, 11 Jul 2007 21:20:10 +0200
> 
> From: "Anselm R. Garbe" <arg@suckless.org>
> ...

 

Giuro non e' uno scherzo (sto uomo e' pazzo   :Laughing:   :Laughing:   :Laughing:   )

 *lucapost wrote:*   

> Ancora una domanda...il giochetto dei due while nello .xinitrc funziona sempre? a me funge solamente se non ho finestre aperte in giro per i vari desk...

 

Si' a me funziona perfettamente  :Smile: 

Questo e' il mio xinitrc attuale:

```
#!/bin/sh

xsetroot -solid '#e5e5e5'

$HOME/.dwm/status &

while true; do

        while true; do

               /usr/local/bin/dwm < $HOME/.dwm/fifo

        done

done
```

Se vuoi postare il tuo cerchiamo di capire il problema  :Smile: 

Ciao!

----------

## lucapost

grazie dell'aiuto, speriamo di risolvere...

ho quasi risolto il dilembo, ho scopiazzato un pò dal tuo sito gli script, ora il problema è un'altro.

Questo è lo script che mi prepara le info da mettere nella barra di dwm:

```
> ~/cat .dwm/infobar 

#!/bin/bash                                                                                     

  WARNING=3

  TMP=60

  FULL=`awk '/full\ capacity:/ { print $4 }' /proc/acpi/battery/BAT0/info` 

batt(){

  PRESENT=`awk '/present:/ { print $2}' /proc/acpi/battery/BAT0/state`

  STATE=`awk '/charging\ state:/ { print $3 }' /proc/acpi/battery/BAT0/state`

  REMAINING=`awk '/remaining\ capacity:/ { print $3 }' /proc/acpi/battery/BAT0/state`

  if [ "$PRESENT" = "yes" ] ; then

       CHARGE=$((${REMAINING}*100/${FULL}))

     case $STATE in

       charged)

             SIGN="="

             TMP=60 ;;

       charging)

             SIGN="+"

             TMP=60 ;;

       discharging)

         if [ "$CHARGE" -le "$WARNING" ] ; then

             let "TMP -=5"

             aplay /root/sound/beep.wav &>/dev/null

           if [ "$TMP" -le 1 ] ; then

             /sbin/shutdown -h now

           fi

         else

             SIGN="-"

             TMP=60

         fi

         ;;

     esac

       echo ${SIGN}${CHARGE}

  else

       echo "AC_MODE"

  fi

}

temp(){

        awk '{ print $2 }' /proc/acpi/thermal_zone/TZ00/temperature

}

while true; do

   echo `batt` `temp`C `date '+%a,%d/%m/%Y %H:%M'`  

   sleep 5

done  > /tmp/info

```

```
> ~/ll .dwm/infobar 

4.0K -rwxr-xr-x 1 lucapost users 1.2K 2007-07-14 15:04 .dwm/infobar*
```

la sostanza è simile a quella che ho trovato sul tuo sito, questo invece è lo .xinitrc:

```
> ~/cat .xinitrc 

#!/bin/sh

feh --bg-scale ~/.wallpapers/planino.jpg

~/.dwm/infobar &

while true; do

   while true; do

       /usr/bin/dwm < /tmp/info

   done

done
```

il problema è che nella barra mi trova sempre la scritta EOF, cioè come se non ci fosse alcun file dove prendere le info, ma dovrebbe...

```
>~/cat/tmp/info

=100 52C Sat,14/07/2007 15:16

=100 52C Sat,14/07/2007 15:16

=100 52C Sat,14/07/2007 15:16

=100 52C Sat,14/07/2007 15:16

=100 52C Sat,14/07/2007 15:16

=100 51C Sat,14/07/2007 15:17

=100 51C Sat,14/07/2007 15:17

=100 51C Sat,14/07/2007 15:17

=100 51C Sat,14/07/2007 15:17

=100 51C Sat,14/07/2007 15:17
```

(è giusto che .dwn/infobar aggiunga ogni volta una riga a /tmp/info?)

----------

## lavish

eheh, /tmp/info deve essere un named pipe per funzionare  :Razz: 

```
rm /tmp/info

mkfifo /tmp/info
```

 :Wink: 

ps: consiglio di tenere la fifo nella home comunque

----------

## lucapost

C' e sempre qualcosa che non va, nella barra trovo sempre EOF. Questi sono gli script:

```
> ~/cat .dwm/infobar 

#!/bin/bash                                                                                     

  WARNING=3

  TMP=60

  FULL=`awk '/full\ capacity:/ { print $4 }' /proc/acpi/battery/BAT0/info` 

batt(){

  PRESENT=`awk '/present:/ { print $2}' /proc/acpi/battery/BAT0/state`

  STATE=`awk '/charging\ state:/ { print $3 }' /proc/acpi/battery/BAT0/state`

  REMAINING=`awk '/remaining\ capacity:/ { print $3 }' /proc/acpi/battery/BAT0/state`

  if [ "$PRESENT" = "yes" ] ; then

       CHARGE=$((${REMAINING}*100/${FULL}))

     case $STATE in

       charged)

             SIGN="="

             TMP=60 ;;

       charging)

             SIGN="+"

             TMP=60 ;;

       discharging)

         if [ "$CHARGE" -le "$WARNING" ] ; then

             let "TMP -=5"

             aplay /root/sound/beep.wav &>/dev/null

           if [ "$TMP" -le 1 ] ; then

             /sbin/shutdown -h now

           fi

         else

             SIGN="-"

             TMP=60

         fi

         ;;

     esac

       echo ${SIGN}${CHARGE}

  else

       echo "AC_MODE"

  fi

}

temp(){

  awk '{ print $2 }' /proc/acpi/thermal_zone/TZ00/temperature

}

while true; do

  echo `batt` `temp`C `date '+%a,%d/%m/%Y %H:%M'`  > ~/.dwm/info

  sleep 5

done 
```

```
> ~/cat .xinitrc 

#!/bin/sh

feh --bg-scale ~/.wallpapers/planino.jpg

~/.dwm/infobar &

while true; do

   while true; do

       /usr/bin/dwm < ~/.dwm/info

   done

done
```

il file info l'ho creato con 

```
mkfifo ~/.dwm/info
```

```
> ~/ll .dwm/

total 4.0K

   0 prwxrwxrwx 1 lucapost lucapost    0 2007-07-15 12:22 info|

4.0K -rwxr-xr-x 1 lucapost users    1.2K 2007-07-15 11:43 infobar*
```

----------

## lavish

 *lucapost wrote:*   

> C' e sempre qualcosa che non va, nella barra trovo sempre EOF. Questi sono gli script:
> 
> ```
> > ~/cat .dwm/infobar 
> 
> ...

 

script e xinitrc sono corretti.

Cio' che e' sbagliato e' il named pipe.

A parte il fatto che non ho idea di cosa sia 

```
ll
```

(alias per ls -l ? Boh...), il file che hai non si chiama "info", ma "info|", come tu stesso hai postato...

Esci da dwm, killa gli script ancora attivi, rimuovi la fifo in ~/.dwm e ricreala. Deve venire qualcosa del genre:

```
prw-r--r-- 1 lavish users   0 2007-07-15 16:08 fifo

```

Ciao and let me know

----------

## lucapost

Guarda che cosa strana con queste fifo:

```
lucapost@jarod {0} 

> ~/.dwm/mkfifo info

lucapost@jarod {0} 

> ~/.dwm/ls -l

total 4

prw-r--r-- 1 lucapost lucapost    0 Jul 16 09:54 info|

-rwxr-xr-x 1 lucapost users    1214 Jul 15 11:43 infobar*

lucapost@jarod {0} 

> ~/.dwm/rm info

removed `info'

lucapost@jarod {0} 

> ~/.dwm/ls -l

total 4

-rwxr-xr-x 1 lucapost users 1214 Jul 15 11:43 infobar*
```

"ls -l" vede il nome con la |, però quando rimuovo il file la barra non serve...boh...queste sono le coreutils installate:

```
[ebuild   R   ] sys-apps/coreutils-6.9-r1  USE="acl nls (-selinux) -static -xattr" 0 kB 
```

Mistero!

----------

## lavish

Non so per quale motivo, ma l'output che hai postato non e' quello di ls -l, ma di ls -Fl

Avrai degli alias settati... inoltre non capisco perche' ti crei il file con owner user:user, misteri

Ad ogni modo dovrebbe funzionare, sempre a patto che tu non abbia altre "cose strane"   :Rolling Eyes: 

Se poprio non ne esci, usa strace

----------

## lucapost

 *lavish wrote:*   

> Non so per quale motivo, ma l'output che hai postato non e' quello di ls -l, ma di ls -Fl
> 
> Avrai degli alias settati... 

 

si, in effetti...è da un pò che non metto mano sul .bashrc, comunque ho ancora problemi con le fifo, ora vedo se arrivo a tirare fuori qualcosa da strace   :Shocked:  [/quote]...

----------

## xveilsidex

lavish le impostazioni e gli script per dwm ke hai sul tuo sito sn aggiornate?

----------

## lavish

 *xveilsidex wrote:*   

> lavish le impostazioni e gli script per dwm ke hai sul tuo sito sn aggiornate?

 

aggiornato ora all'ultimo Hg tip  :Wink: 

----------

## xveilsidex

 *lavish wrote:*   

>  *xveilsidex wrote:*   lavish le impostazioni e gli script per dwm ke hai sul tuo sito sn aggiornate? 
> 
> aggiornato ora all'ultimo Hg tip 

 

grazie mille   :Very Happy: 

----------

## lucapost

dopo un pò di settimane che non ci riprovavo ho risolto il problema dei file fifo. Forse l'errore era uno sleep di troppo nei cicli while nello .xinitrc. Ora alt+shift+q mi riavvia la sessione di dwm correttamente, con l'effetto che se ho più finestre aperte in giro per i vari "desktop", al riavvio me li trovo tutti nel primo. Mi accontento.

----------

## lavish

 *lucapost wrote:*   

> Ora alt+shift+q mi riavvia la sessione di dwm correttamente, con l'effetto che se ho più finestre aperte in giro per i vari "desktop", al riavvio me li trovo tutti nel primo.

 

E' normale  :Smile: 

Lo stato del WM viene azzerato, e dwm non ha modo di ripristinare le tag associate ai client al riavvio.

In realta', il 14 agosto era stata fatta una modifica che lo permetteva:  *Quote:*   

> I also added a new window property called __DWM_TAGS, which
> 
> remembers all tags of a window during restarts of dwm

 

poi __DWM_TAGS e' stato cambiato in _DWM_PROPERTIES, in modo che ci fosse una gestione di altri aspetti del WM ma in definitiva aggiungeva parecchi righe di codice per avere un comportamento, seppur comodo, alquanto inconsistente (come mai certe proprieta' si' e altre no?). Gestirle tutte non sarebbe rientrato nella filosofia di sviluppo di dwm, quindi e' stata accantonata per la 4.4 (notare che tale feature non e' mai stata rilasciata in una versione stabile)  :Smile: 

Sempre con la 4.4.x, e' scomparso NMASTER, cioe' la possibilita' di avere piu' client sulla colonna di sinistra. Molti storceranno il naso ma sono convinto che sia meglio cosi' visto che prima il modo in cui veniva gestito mi sembrava del tutto unpredictable.

Inoltre e' stata semplificata moltissimo l'inclusione di nuovi layout, quindi potrai trovare patch interessanti qui: http://www.suckless.org/wiki/dwm/patches

Io come al solito ho aggiornato la mia conf all'ultimo hg tip disponibile: http://www.minimalblue.com/projects/dwm.php

Ciao!

----------

## !ico

sul sito non sono presenti tutte le patch, ad esempio questa che io trovo molto comoda:

https://herbst.homeunix.org/projects/repos/hg/dwm_patches/file/0df05407d57d/taglayouts.patch

permette di impostare un layout per ogni tag.

ola  :Wink: 

----------

## lucapost

```
[U] x11-wm/dwm

     Available versions:  4.2 (~)4.3 (~)4.4 (~)4.4.1 {savedconfig}

     Installed versions:  4.2(11:35:50 PM 08/30/2007)(savedconfig)

     Homepage:            http://dwm.suckless.org/

     Description:         a dynamic window manager for X11
```

Promosso!   :Very Happy: 

edit: era un pò che non facevo un sync, ho trovato dwm stabile per amd64.

----------

## lavish

Probabilmente ci saranno dei cambiamenti...

 *Quote:*   

> Subject: [dwm] column layout revival?
> 
> Date: Tue, 4 Sep 2007 17:57:49 +0200
> 
> From: "Anselm R. Garbe"
> ...

 

//EDIT: come non detto   :Laughing:   :Laughing:   :Laughing: 

 *Quote:*   

> Subject: Re: [dwm] column layout revival?
> 
> Date: Wed, 5 Sep 2007 08:18:32 +0200
> 
> From: "Anselm R. Garbe"
> ...

 

----------

## !ico

sigh, quando stamattina ho letto il messaggio di disdetta ci sono rimasto un po' male..  :Confused: 

personalmente preferivo la "wmii-way", secondo me stanno prendendo la via del complicato tralasciando la funzionalità (tipo la questione di trattare le finestre alla fibonacci-way..inusabile a mio avviso).

bah, vedremo cosa s'inventerà stavolta il buon anselm   :Rolling Eyes: 

ola  :Wink: 

----------

## lavish

 *!ico wrote:*   

> personalmente preferivo la "wmii-way", secondo me stanno prendendo la via del complicato tralasciando la funzionalità (tipo la questione di trattare le finestre alla fibonacci-way..inusabile a mio avviso).

 

Ehy ehy, dwm e' sempre semplicissimo! Tutte le patch e i layout che vengono postati in ML e aggiunti su suckless sono hack di altri utenti, ma non sono ufficiali  :Smile: 

----------

## !ico

 *lavish wrote:*   

> 
> 
> Ehy ehy, dwm e' sempre semplicissimo! 

 

già, e pare che sia ancora l'unico principo di anselm garbe visto che ora vuole portare tutto su un unico file.. 

sicuramente è vantaggioso dal punto di vista del codice, ma sono un po' perplesso per quanto riguarda la leggibilità, staremo a vedere..

lascio a lavish il riportare citazioni ufficiali sugli sviluppi come sempre  :Wink: 

ola  :Wink: 

----------

## lucapost

Un pò OT, però originale: http://flash.metawaredesign.co.uk/1/

----------

## lucapost

Al passaggio del mouse nel floating mode sopra una finestra correttamente quest'utima viene selezionata come attiva, pero' ahime' questa non passa in primo piano nel caso fosse sovrapposta da un'altra, e quindi devo mettere mani sulla tastira.

Questa cosa e' alquando scomoda, soprattutto quando mi trovo ad dover utilizzare programmi come gimp.

Secondo me questo non e' un comportamento superfluo, e sarebbe comodo averlo direttamente senza dover applicare alcuna patch (che mi sa qualcuno deve ancora scrivere, o sbaglio?) all'installazione di default. 

Cosa ne pensate?

----------

## !ico

 *lucapost wrote:*   

> Al passaggio del mouse nel floating mode sopra una finestra correttamente quest'utima viene selezionata come attiva, pero' ahime' questa non passa in primo piano nel caso fosse sovrapposta da un'altra, e quindi devo mettere mani sulla tastira.
> 
> Questa cosa e' alquando scomoda, soprattutto quando mi trovo ad dover utilizzare programmi come gimp.
> 
> Secondo me questo non e' un comportamento superfluo, e sarebbe comodo averlo direttamente senza dover applicare alcuna patch (che mi sa qualcuno deve ancora scrivere, o sbaglio?) all'installazione di default. 
> ...

 

questa  patch dovrebbe permettere di cambiare il focus tra finestre con la "rotellina" del mouse, ma non l'ho mai provata.

in ML è stato affrontato il problema del resize con mouse-tastiera ma da quel che ho capito io non è un argomento che tocca particolarmente Garbe,

 *Anselm Garbe wrote:*   

> I think there are good reasons for not doing it,
> 
> the best one is that I don't resize windows with the mouse manually.

 

personalmente non uso molto il floating mode, e quando lo uso mi trovo molto bene con MOD-m, MOD-k...

ola  :Wink: 

----------

## lucapost

 *!ico wrote:*   

> 
> 
> questa  patch dovrebbe permettere di cambiare il focus tra finestre con la "rotellina" del mouse, ma non l'ho mai provata.
> 
> 

 

E' qualche mese che utilizzo dwm, ma non ho mai provato a giocare con le patch...

In questa che mi hai consigliato, dove trovo il file .diff? 

Oppure devo sostituire il file event.c nella cartella dei sorgenti? perchè se è così non compila...

----------

## !ico

mhh, credo tu debba sostituire il file event.c/4 se utilizzi un dwm-4.4.*, anche se in effetti non è molto chiaro a che versione si riferisce..

prova a scaricare quella ed eventualmente posta gli errori in compilazione.

ola  :Wink: 

----------

## lucapost

mi sa che non basta sostituire il file event.c, alla fine ho provato a compilare questi sorgenti ma ahimè con la rotellina del mouse nessun cambio di focus...

----------

## lucapost

Secondo me lanciando dmenu_path con una combinazione di tasti impostata nel config.h, dmenu_path non legge le variabili d'ambiente impostate in .bashrc.

Infatti, nel file /usr/bin/dmenu_path ho aggiunto la seguente riga:

```
echo $PATH > /tmp/path
```

Ora se aggiorno la lista di eseguibili con la combinazione di tasti impostata nel config.h trovo:

```
 ~/> cat /tmp/path 

/bin /usr/bin
```

ma se con lo stesso utente leggo la variabile $PATH trovo:

```
 ~/> echo $PATH

/bin:/usr/bin:/opt/bin:/usr/local/bin
```

Quindi dmenu_path non mi trova gli eseguibili nelle mie /opt/bin e /usr/local/bin

Capito il dilembo?

----------

## lucapost

Ho appena aggiornatoa dwm-4.7 dei repositors mercurial.

Ho trovato queste nuove opzioni da impostare nel config.h:

```
/* convenience */

#define LENGTH(x) (sizeof x / sizeof x[0])                                    <----

/* tagging */

const char *tags[] = { "one", "two", "three", "four", "five", "six" };

Bool seltags[LENGTH(tags)] = {[0] = True};                                     <----

Bool prevtags[LENGTH(tags)] = {[0] = True};                                  <----

Rule rules[] = {

   /* class:instance:title regex   tags regex   isfloating */

   { "Firefox",         "two",      False },

   { "Gimp",         NULL,      True },

   { "MPlayer",         NULL,      True },

   { "feh",         NULL,      True },

};
```

Qualcuno mi sa indicare cosa gestiscono più precisamente?

----------

## lavish

http://www.suckless.org/pipermail/dwm/2007-October/004086.html  :Wink: 

----------

## Ghostraider

Ciao gente,

nel tempo è nascosta la saggezza ed ora è tempo per me di passare a dwm  :Smile: 

Non ho ben chiaro una cosa, devo installare il pacchetto con emerge oppure "alla vecchia maniera" e modificare il config.h prima?

Grazie, ciao.

----------

## lucapost

che io sappia ci sono tre modi per installare dwm:

tramite portage con 

```
emerge dwm
```

occhio alla USE="savedconfig", che, se non esiste, crea un file di configurazione per ogni versione di dwm in /etc/portage/savedonfig/x11-wm/dwm-*

oppure scarichi i sorgenti in uno dei seguenti modi:

direttamente da un link, e quindi decomprimi il file.

utilizzando hg (tool del pacchetto mercurial), questo e indicato anche sul sito del progetto, in questo caso di aggiudichi anche l'ultima versione...

infine entri nella directory dei sorgenti, modifichi secondo le tue necessità i file config.mk e config.h (quest'ultimo può essere una copia del file config.default.h). Di seguito lanci il "vecchio":

```
make clean install
```

In particolare, compilando dwm a mano, hai possibilità di applicare tutte quelle patch che trovi in giro per la rete.

----------

## formica

Esperienza di vita:

dopo quasi un decennio di GNOME sono passato a DWM e l'esperienza è a dir poco stratosferica.

Grazie a voi che me l'avete fatto conoscere.

Ora sulla mia gentoo regna sovrano il "minimalismo funzionale"... altro che Compiz, trasparenze e "quant'è bello macosx".  :Very Happy: 

Dopo in convenevoli vi domando: 

esiste un modo per lanciare, all'avvio della sessione, un programma su un determinato desktop (tra i 9) ??

Grazie in anticipo

formica

----------

## lucapost

Aggiungi il programma che vuoi lanciare all'inizio del tuo .xinitrc,

edita poi il file di configurazione di dwm config.h aggiungendo il nome della finestra del programma nella sezione "Rule rules[]".

Ad esempio, per lanciare Firefox sul tag 1, io faccio cosi', nel config.h c'e' questo:

```
Rule rules[] = {

   /* class:instance:title regex   tags regex   isfloating */

   { "Firefox",         "1",      False },

   { "Gimp",         NULL,      True },

   { "Acroread",         NULL,      True },

};
```

e nello xinitrc:

```

 ~> grep -v "#" .xinitrc 

xrandr -s 1024x768

xsetroot -bg black &

firefox &

while true; do

$HOME/bin/status &

  while true; do

      $HOME/bin/dwm < $HOME/.fifo

  done

done
```

Saluti, Luca.

----------

## formica

Grazie mille Lucapost. Provo il tuo codice e ti faccio sapere.  :Very Happy: 

Altra domanda ai divuemmisti: a cosa serve il file ~formica/.dwm/status ?

----------

## lavish

 *formica wrote:*   

> esiste un modo per lanciare, all'avvio della sessione, un programma su un determinato desktop (tra i 9) ??

 

Dannazione  :Razz:  Non sono desktop o workspace, si tratta di tag! Di workspace su dwm ce n'e' uno solo

 *formica wrote:*   

> Altra domanda ai divuemmisti: a cosa serve il file ~formica/.dwm/status ?

 

 :Question: 

Quel file non e' certo stato creato da dwm... saprai tu cosa fa... o non ho capito la domanda?

----------

## formica

 *lavish wrote:*   

>  *formica wrote:*   esiste un modo per lanciare, all'avvio della sessione, un programma su un determinato desktop (tra i 9) ?? 
> 
> Dannazione  Non sono desktop o workspace, si tratta di tag! Di workspace su dwm ce n'e' uno solo
> 
>  *formica wrote:*   Altra domanda ai divuemmisti: a cosa serve il file ~formica/.dwm/status ? 
> ...

 

Sorry, sono nuovo dell'ambiente. Ok, SONO TAG!  :Very Happy: 

Il file in questione io di certo non l'ho creato.

Beh... sta nella mia home, precisamente in .dwm/ chi altri l'avrà creato??  :Very Happy: 

Cmq... non è fondamentale, grazie lo stesso.

----------

## lucapost

Ciao lavish!  dwm-4.8 avanza!

"status" e' uno script MIO PERSONALE, che crea un file fifo da dare in pasto a dwm, lo utilizzo per visualizzare informazioni quali l'ora, data ecc,

Puoi sempre commentarlo o rimuovere la riga....

----------

## lucapost

ma in dwm-4.8 non e' piu' possibile ridimensionare la master area?

----------

## lavish

 *lucapost wrote:*   

> ma in dwm-4.8 non e' piu' possibile ridimensionare la master area?

 

http://www.suckless.org/hg.rc/dwm/rev/bf37ef388dd6

----------

## lucapost

Ti ringrazio per la comunicazione dell'aggiornamento. Ora il resize funge correttamente.

Adesso devo provare a capire a cosa servono le nuove voci nella sezione rules[]:

```
       /* class        instance        title           tags ref        isfloating */
```

e provare quindi a capire perchè dwm non mi applica i tags correttamente....

----------

## lavish

 *lucapost wrote:*   

> Ti ringrazio per la comunicazione dell'aggiornamento. Ora il resize funge correttamente.
> 
> Adesso devo provare a capire a cosa servono le nuove voci nella sezione rules[]:
> 
> ```
> ...

 

Usa xprop sul client che vuoi settare come floating, trova la stringa "WM_CLASS" e cambiala nel campo "class". Setta "instance" e "title" a NULL e ci sei  :Smile: 

Esempio con gimp:

```
0 $ xprop |grep CLASS

WM_CLASS(STRING) = "gimp", "Gimp"

```

```
0 $ grep -i gimp /home/lavish/sources/dwm/config.h

   { "Gimp",   NULL,      NULL,      NULL,      True },

```

----------

## lucapost

Ti ringrazio nuovamente lavish, sai indicarmi inoltre cosa servono le voci INSTANCE e TITLE?

----------

## guyver77

ciao a tutti, iscritto

sono capitato qua perche mi pare che sia l'unica risorsa italiana su dwm  :Smile: 

devo ancora capirci qualcosa ma l'idea mi piace

(sono partito in poco tempo, 6 mesi, da kde poi gnome+compiz poi xfce poi fluxbox(bellissimo) e ora vorrei provare dwm)

ora mi leggo attentamente tutto il 3ad 

ps non uso gentoo ma è uguale vero??   :Very Happy: 

ciao

----------

## lavish

 *lucapost wrote:*   

> Ti ringrazio nuovamente lavish, sai indicarmi inoltre cosa servono le voci INSTANCE e TITLE?

 

Yes!

instance e' il primo membro di WM_CLASS, mentre title corrisponde a WM_NAME

 *guyver77 wrote:*   

> ps non uso gentoo ma è uguale vero??  

 

Verrai riprogrammato, per il resto e' uguale   :Twisted Evil: 

Occhio a non andare troppo indietro con il thread. Certe (molte) informazioni sono ormai obsolete. Ti conviene provare dwm direttamente, leggere il man e se hai problemi chiedere qui  :Wink: 

Ciao e benvenuto!

----------

## guyver77

ciao

mi rifaccio vivo

ho provato altri wm tiled (awesome xmonad) e anche se sono più potenti, fanno più cose 

dwm ha tutto quello che serve veramente, senza fronzoli...

devo ancora personalizzarlo, ora è ancora "as is" preso dai repo....

una domanda su dmenu tanto per iniziare

è possibile che invece in /usr/bin/ vada a leggere in una cartella fatta da me dove metterò dei link ai programmi che mi interessano veramente? 

ok che basta scrivere 3 4 caratteri per beccare il prog giusto (a volte anche meno) ma non mi piace avere tutti quei nomi, per un pura estetica  :Smile: 

----------

## lucapost

 *guyver77 wrote:*   

> ciao
> 
> è possibile che invece in /usr/bin/ vada a leggere in una cartella fatta da me dove metterò dei link ai programmi che mi interessano veramente? 
> 
> 

 

IMHO, il modo migliore per ottenere il risualtato che descrivi è il seguente.

L'eseguibile dmenu di defaut leggere la lista dei binari da "caricare" del file ~./.dmenu_cache.

Quindi è sufficiente che indichi in un file di testo qualsiasi, ad esempio ~/mybin.txt, l'elenco dei binari che vuoi eseguire con dmenu

```
firefox

gimp

pidgin

xterm

...

pinco

pallino

....
```

 ed avvii il programma con la seguente sintassi:

```
dmenu < ./mybin.txt
```

Se preferisci, come credo, puoi anche inserire il comando ad hoc nel config.h di dwm, nella funzione Key(la sintassi è per dwm-5.0):

```
        { MODKEY,                       XK_p,           spawn,

                "exec dmenu < ./mybin.txt" },

```

----------

## guyver77

mmm oltre a dwm ho messo anche blackbox per non sporcarlo troppo di ammenicoli vari (fbpanel docker ecc) volevo usare dmenu

in /etc/bbkeys/bbkeyrc ho aggiunto :

    [Execute]  (Mod1-P) {dmenu < ~/.dmenu_cache}

dmenu parte ma cliccando sui nomi delle applicazioni non partono...

come devo fare??

thanks

ps non ho ancora avuto tempo di fare la lista che dicevi  :Sad: 

----------

## guyver77

mi rispondo da solo 

[Execute]  (Mod1-P) {$(dmenu_path | dmenu -fn '"FONT"') && exec $exe }

funziona

----------

## guyver77

ciao spero di non disturbare troppo...

so che sono ot ma veramente nn ho trovato altre risorse italiane che parlano di dmenu....

dopo tante vicissitudini su debian sid sono passato da dwm a blackbox e per provare a kde-base... ormai avevo tutti i prg qt infatti installando kde ho scaricato solo 9 mega...

kde alla fine mi ha sorpreso è reattivo quanto blackbox (o quasi) quindi ho deciso di tenerlo... 

il problema è che sono dmenu dipendente  :Smile: 

qualcuno mi dà qualche dritta per configurare dmenu con uno stile "kaddoso"??

io vorrei qualcosa tipo questo:

http://firebox.intuxication.org/img/screen_shot_07-05-16.png

non mi trovo più a cercare le applicazioni nel menu  :Sad: 

grazie

----------

## lucapost

Questi sono i cambiamenti che puoi effettuare senza mettere mano direttamente sulle funzioni dei sorgenti:

```
#> cat sources/dmenu/config.h 

/* See LICENSE file for copyright and license details. */

/* appearance */

#define FONT         "-*-terminus-medium-r-normal-*-14-*-*-*-*-*-*-*"

#define NORMBGCOLOR             "#cccccc"

#define NORMFGCOLOR             "#000000"

#define SELBGCOLOR              "#0066ff"

#define SELFGCOLOR              "#ffffff"

/* next macro defines the space between menu items */

#define SPACE         30 /* px */
```

Aborro le tue aspettative!

----------

## guyver77

grazie!!

perche "aborri" ???

----------

## mici0

ciao a tutti

avrei il bisogno di una piccola modifica ma sinceramente nel file di conf nn riesco a capire come permettere questa cosa...

allora utilizzando finch come IM ho la necessita di cambiare la modkey, che in questo momento è settata sul tasto alt, in modo che quando utilizzo finch i comandi nn vadano in conflitto tra l oro e possa utilizzare quest ultimo senza problemi.

per fare un esempio su finch la combinazione alt +p mi switcha alla finestra precedente ma essendo in dwm mi fa aprire dmenu...

ora nn volendo modificare l intero comportamento con il quale mi trovo molto bene vorrei se fosse possibile vorrei assegnare come MODKEY il tasto con il logo di win.

come posso fare???

ciao e grazie a tutti per l aiuto.

----------

## lucapost

nel config.h sostituisci la riga

```
#define MODKEY         Mod1Mask
```

con 

```
#define MODKEY         Super_L
```

poi dovresti essere felice   :Smile: 

----------

## mici0

ciao lucapost e grazie per l aiuto

pero la cosa nn cambia....sicuramente sbaglio io....ma nn capisco dove...

allora ho provato sia a mettere come mi avevi indicato tu sia come indicato da lavish nei primi post mettendo Mod4Mask

ma pare nn gliene freghi niente.....  :Shocked: 

continua a farmi usare il tasto alt per gestire il tutto.....

nn so che pensare a dir la verità   :Very Happy: 

bai

----------

## lavish

Prova Mod4Mask

----------

## mici0

ciao lavish e grazie per la risposta.....

ho provato e riprovato ma ancora niente non riesco a capire perche non gliene freghi niente di neinte....come se prendesse le info da un altro file e quello non se lo filasse di striscio......

config.h

```

/* See LICENSE file for copyright and license details. */

/* appearance */

#define BARPOS                  BarTop /* BarBot, BarOff */

#define BORDERPX                1

#define FONT                    "-*-fixed-medium-r-normal-*-13-*-*-*-*-*-*-*"

#define NORMBORDERCOLOR         "#dddddd"

#define NORMBGCOLOR             "#eeeeee"

#define NORMFGCOLOR             "#222222"

#define SELBORDERCOLOR          "#ff0000"

#define SELBGCOLOR              "#006699"

#define SELFGCOLOR              "#ffffff"

/* tagging */

#define TAGS \

const char *tags[] = { "1", "2", "3", "4", "5", "6", "7", "8", "9", NULL };

/* Query class:instance:title for regex matching info with following command:

 * xprop | awk -F '"' '/^WM_CLASS/ { printf("%s:%s:",$4,$2) }; /^WM_NAME/ { printf("%s\n",$2) }' */

#define RULES \

static Rule rule[] = { \

        /* class:instance:title regex   tags regex      isfloating */ \

        { "Gimp",                       NULL,           True }, \

        { "MPlayer",                    NULL,           True }, \

        { "Acroread",                   NULL,           True }, \

};

/* layout(s) */

#define LAYOUTS \

static Layout layout[] = { \

        /* symbol               function */ \

        { "[]=",                tile }, /* first entry is default */ \

        { "><>",                floating }, \

};

#define MASTERWIDTH             600             /* master width per thousand */

#define NMASTER                 1               /* clients in master area */

#define SNAP                    32              /* snap pixel */

/* key definitions */

#define MODKEY                  Mod4Mask

#define KEYS \

static Key key[] = { \

        /* modifier                     key             function        argument */ \

        { MODKEY|ShiftMask,             XK_Return,      spawn,          "exec xterm" }, \

        { MODKEY,                       XK_p,           spawn,          "exe=`dmenu_path | dmenu` && exec $exe" }, \

        { MODKEY,                       XK_space,       setlayout,      NULL }, \

        { MODKEY,                       XK_b,           togglebar,      NULL }, \

        { MODKEY,                       XK_h,           incmasterw,     "-32" }, \

        { MODKEY,                       XK_l,           incmasterw,     "32" }, \

        { MODKEY|ShiftMask,             XK_j,           incnmaster,     "1" }, \

        { MODKEY|ShiftMask,             XK_k,           incnmaster,     "-1" }, \

        { MODKEY,                       XK_j,           focusclient,    "1" }, \

        { MODKEY,                       XK_k,           focusclient,    "-1" }, \

        { MODKEY,                       XK_m,           togglemax,      NULL }, \

        { MODKEY,                       XK_Return,      zoom,           NULL }, \

        { MODKEY|ShiftMask,             XK_space,       togglefloating, NULL }, \

        { MODKEY|ShiftMask,             XK_c,           killclient,     NULL }, \

        { MODKEY,                       XK_0,           view,           NULL }, \

        { MODKEY,                       XK_1,           view,           "0" }, \

        { MODKEY,                       XK_2,           view,           "1" }, \

        { MODKEY,                       XK_3,           view,           "2" }, \

        { MODKEY,                       XK_4,           view,           "3" }, \

        { MODKEY,                       XK_5,           view,           "4" }, \

        { MODKEY,                       XK_6,           view,           "5" }, \

        { MODKEY,                       XK_7,           view,           "6" }, \

        { MODKEY,                       XK_8,           view,           "7" }, \

        { MODKEY,                       XK_9,           view,           "8" }, \

        { MODKEY|ControlMask,           XK_1,           toggleview,     "0" }, \

        { MODKEY|ControlMask,           XK_2,           toggleview,     "1" }, \

        { MODKEY|ControlMask,           XK_3,           toggleview,     "2" }, \

        { MODKEY|ControlMask,           XK_4,           toggleview,     "3" }, \

        { MODKEY|ControlMask,           XK_5,           toggleview,     "4" }, \

        { MODKEY|ControlMask,           XK_6,           toggleview,     "5" }, \

        { MODKEY|ControlMask,           XK_7,           toggleview,     "6" }, \

        { MODKEY|ControlMask,           XK_8,           toggleview,     "7" }, \

        { MODKEY|ControlMask,           XK_9,           toggleview,     "8" }, \

        { MODKEY|ShiftMask,             XK_0,           tag,            NULL }, \

        { MODKEY|ShiftMask,             XK_1,           tag,            "0" }, \

        { MODKEY|ShiftMask,             XK_2,           tag,            "1" }, \

        { MODKEY|ShiftMask,             XK_3,           tag,            "2" }, \

        { MODKEY|ShiftMask,             XK_4,           tag,            "3" }, \

        { MODKEY|ShiftMask,             XK_5,           tag,            "4" }, \

        { MODKEY|ShiftMask,             XK_6,           tag,            "5" }, \

        { MODKEY|ShiftMask,             XK_7,           tag,            "6" }, \

        { MODKEY|ShiftMask,             XK_8,           tag,            "7" }, \

        { MODKEY|ShiftMask,             XK_9,           tag,            "8" }, \

        { MODKEY|ControlMask|ShiftMask, XK_1,           toggletag,      "0" }, \

        { MODKEY|ControlMask|ShiftMask, XK_2,           toggletag,      "1" }, \

        { MODKEY|ControlMask|ShiftMask, XK_3,           toggletag,      "2" }, \

        { MODKEY|ControlMask|ShiftMask, XK_4,           toggletag,      "3" }, \

        { MODKEY|ControlMask|ShiftMask, XK_5,           toggletag,      "4" }, \

        { MODKEY|ControlMask|ShiftMask, XK_6,           toggletag,      "5" }, \

        { MODKEY|ControlMask|ShiftMask, XK_7,           toggletag,      "6" }, \

        { MODKEY|ControlMask|ShiftMask, XK_8,           toggletag,      "7" }, \

        { MODKEY|ControlMask|ShiftMask, XK_9,           toggletag,      "8" }, \

        { MODKEY|ShiftMask,             XK_q,           quit,           NULL }, \

};

```

status

```

#!/bin/sh

load() {

    cut -d' ' -f1 /proc/loadavg

}

while true; do

    echo `date '+%H:%M %Y/%m/%d'` `load` > ~/.dwm/info

    sleep 5

done

```

.xinitrc

```

#exec openbox

exec ~/.dwm/status &

while true; do

   while true; do

       /usr/bin/dwm < ~/.dwm/info

   done

done

```

ditemi voi se qualcosa non và a me sembra tutto ok ma se ci guarda qalcun altro magari mi sa dire meglio che forse l ho guardato troppe volte e mi sfuggono gli errori....

grazie a tutti  :Smile: 

----------

## lucapost

 :Laughing:  e bravo lavish!

http://www.youtube.com/watch?v=F2sYPwuRPvc

----------

## lucapost

Da pochi giorni e' uscito dwm-5.01, mi trovo quindi alle strette con le nuove modifiche al config.h.

In particolare ho un problemino con la nuova sezione /*commands*/ e la definizione personalizzata.

Tra gli altri in /home/lucapost/usr/bin/* ho anche dmenu e non capisco perche' alla pressione di alt+p questo non si avvia.

Nella sezione /*commands*/ ho le seguenti righe:

```
static const char *dmenucmd[] = { "/home/lucapost/bin/dmenu_path","|","/home/lucapost/usr/bin/dmenu", NULL };

....

static Key keys[] = {

   { MODKEY,                       XK_p,      spawn,          {.v = dmenucmd } },

....
```

Premo alt+p ma neinte. Probabilmente e' un problema di sintassi, qualcuno puo' aiutarmi? Lavish?

----------

## lavish

Sembrerebbe ok. Ma perche' non usi la definizione di default che e' ottima?

----------

## lucapost

qualcuno ha provato la 5.4?

sono cambiate un po' di cose per quel che riguarda la gestione delle informazioni nella barra, solo che seguento il README a me non funge nulla.

Qualcuno ha ottenuto buoni risultati?

----------

