Configuration de dwm

Ça doit être ça.
Plutôt que de modifier chaque patch pour la 4.1, j’ai préféré intégrer les changements 4.0 > 4.1 directement dans mon dmenu modifié

Et avec un :$ make uninstall ?
Je sais que ça ne marche pas pour les programmes mais je crois qu’avec ceux de suckless ça fonctionne

[quote=“thuban”]Merci en tout cas pour les explications! :slightly_smiling:[/quote]Y’a pas de quoi, ça fait plaisir de pouvoir partager des expériences communes. :slightly_smiling:

Je pense que pour le coup, je vais repasser à la version stable de dmenu, plutot que la version hg, ça sera plus simple, puis ensuite, comme sous debian, je prendrais les sources et ferai le make clean install, ça sera plus propre en cas de désinstall.
mais dis moi, je me trompe ou ce patch sera intégré directement dans le code de dmenu à l’avenir :
citation du site :
Note, this patch is being accepted for mainstream dmenu and in hg tip.

(cela concerne le patch pour dmenu vertical, mais comme “multiselect and newline” est un découpage de “vertical”, ça revient au même…)

[quote=“thuban”]Je pense que pour le coup, je vais repasser à la version stable de dmenu, plutot que la version hg, ça sera plus simple, puis ensuite, comme sous debian, je prendrais les sources et ferai le make clean install, ça sera plus propre en cas de désinstall.
mais dis moi, je me trompe ou ce patch sera intégré directement dans le code de dmenu à l’avenir :
citation du site :
Note, this patch is being accepted for mainstream dmenu and in hg tip.

(cela concerne le patch pour dmenu vertical, mais comme “multiselect and newline” est un découpage de “vertical”, ça revient au même…)[/quote]Si tu as la version 4.1, le patch dmenu vertical est déjà inclus, mais c’est la version minimale qui est incluse, c’est à dire qu’il n’y a aucune options en plus. Les options -xs, -ms, -nl, … sont extraites d’une autre version du patch dmenu-vertical, qui était disponible depuis le forum d’arch.

Sinon, ici il y a un patch dmenu 4.0 vertical, qui est basé sur le minimal en y ajoutant toutes les options que j’ai trouvées utiles sur l’autre patch (celui qu’on pouvait trouver sur le forum d’Arch)

en fait la version 4.1 peut s’afficher verticalement quand même, mais il n’existe pas d’options pour le faire?
Le patch dont tu parles, c’est celui que tu as composé toi même ou le deuxieme proposé?
encore merci!

[quote=“thuban”]Le patch dont tu parles, c’est celui que tu as composé toi même ou le deuxieme proposé?
encore merci![/quote][quote=“eol”]Sinon, ici il y a un patch dmenu 4.0 vertical, qui est basé sur le minimal(celui intégré à la version 4.1) en y ajoutant toutes les options que j’ai trouvées utiles sur l’autre patch (celui qu’on pouvait trouver sur le forum d’Arch, i.e le patch dmenu-vertical non officiel)[/quote]En gros, j’ai complété le minimal et allégé le maximal. :smt003
Ce qui donne un patch intermédiaire en terme de taille et d’options.

tu avais raison, le make uninstall fonctionne super bien.
Je retourne sous debian, le apt-get source me manquait. Par contr mes compilations plantent dernièrement, mais je n’ai pas encore creusé.
Tu disais que le patch était inclu dans la version 4.1 (de dmenu), mais les options qui nous sont utiles n’en font pas partie en fait. C’est tout ce que je voulais dire :slightly_smiling: .
allez, c’est parti pour patcher tout ça sur ma nouvelles sid toute propre.

edit : je ne vois pas pourquoi j’ai droit à ça lors du make clean install :

dwm.c: In function âupdategeomâ: dwm.c:1740: warning: implicit declaration of function âXineramaIsActiveâ dwm.c:1744: error: âXineramaScreenInfoâ undeclared (first use in this function) dwm.c:1744: error: (Each undeclared identifier is reported only once dwm.c:1744: error: for each function it appears in.) dwm.c:1744: error: âinfoâ undeclared (first use in this function) dwm.c:1744: warning: implicit declaration of function âXineramaQueryScreensâ dwm.c:1745: error: âuniqueâ undeclared (first use in this function) dwm.c:1750: error: expected expression before â)â token dwm.c:1753: warning: implicit declaration of function âisuniquegeomâ
edit2 : trouvé, il fallait le paquet libxinerama

Ce n’était pas résolu avant ton arrivée. Je ne sais pas où tu as trouvé le truc du 0, mais ça fonctionne! cependant, il n’aime pas les “XF86AudioRaiseVolume”… à la compilation (undeclared…) . Mais bon, j’ai remplacé ça par des 0x1008ff13 etc.

En ce qui concerne les apllications qui s’ouvrent dans un tag spécifique, lorsque on les ouvre, la vue n’est pas automatiquement sélectionnée. C’est vrai que ça pourrait-être pratique dans certains cas. Je chercherais à l’occasion.

Merci pour les précisions! je n’ai pas trop répondu car je n’ai pas eu beaucoup de temps dernièrement. Je vais chercher à rajouter, comme ici, une marge pour afficher mon conky, qui est plus précis que mes commandes bash :
bbs.archlinux.org/viewtopic.php?id=74599&p=1

Ensuite je me mets aux scripts pour dmenu! :slightly_smiling:

bonne journée![/quote]

Bon le problème date un peu, une solution alternative a été trouvé mais au cas où toi ou d’autres seraient intéressés: j’ai eu le même problème et en fouillant un peu à gauche, à droite, j’ai trouvé la soluce (ici par exemple mais pas que http://lists.suckless.org/dwm/0701/1779.html).

dans le config.h rajouter en tête

#include <X11/XF86keysym.h> /* makes XF86* keys work */

Les clés sont de la forme : XF86XK_AudioMute, XF86XK_AudioRaiseVolume, XF86XK_AudioLowerVolume.

Cordialement,
Samµ.

Je poste ici le script démarré au démarrage de dwm, pour avoir une barre d’info assez complète. Il permet à ce jour :

  • D’avoir le titre/Artiste/progression de la chanson jouée dans mpd
  • L’occupation du / et du /home
  • La charge cpu
  • Le niveau de la batterie
  • Le nombre de mails en attente (nécéssite un script externe, avec fetchmail, qui renvoie les infos dans un fichier)
  • Le volume sonore (sauf si c’est en mute)
  • Date et heure (houlala c’est dur ça! :slightly_smiling: )

Reste plus qu’à l’améliorer si besoin :

[code]#!/bin/sh
#script pour avoir une barre de status dans dwm/wmii
#On vérifie que le script ne tourne pas déjà
_ps=ps aux
_pid=echo "${_ps}" | grep $0 | tr -s [:space:] | cut -d' ' -f2
_lines=echo "${_pid}" | wc -w

if [ ${_lines} -gt 1 ]; then
_pid=echo ${_pid} | cut -d' ' -f1
echo "Un script en trop, on le kill (pid: ${_pid})"
kill ${_pid}
fi

T_=2 ###temps d’actualisation
i=1 #variable pour l’affichache des notifications des mails

while true
do

##########Partie mpd########################
percent() {
NUM=$(echo “scale=2;(($1/$2)*100)” | bc)

if [ “$(echo $NUM | grep -Eo ‘^.[0-9]+’)” != “” ]; then
NUM=$(echo “$NUM” | grep -Eo ‘^[0-9]+’)
else
NUM=0
fi
}

Usage : percentbar NUM

percentbar() {
echo -n "|"
i=1 ; j=1
while [ “$i” -le “$(($1/3))” ]; do
echo -n "#"
i=$(($i+1))
done
while [ “$j” -le “$(((100-$1)/3))” ]; do
echo -n "-"
j=$(($j+1))
done
echo “|”
}

if [ “$(mpc | grep ‘playing’)” != “” ]; then
MPDSONG=$(mpc | grep -v ‘playing’ | grep -v ‘volume’)
MPDRATIO=$(mpc | grep ‘playing’ | grep -Eo ‘[0-9]+:[0-9]+/[0-9]+:[0-9]+’)
MPDUSED=$(echo $MPDRATIO | grep -Eo ‘[0-9]+:[0-9]+/’ | grep -Eo ‘[0-9]+:[0-9]+’ | sed -e ‘s/:/./’)
MPDTOTAL=$(echo $MPDRATIO | grep -Eo ‘/[0-9]+:[0-9]+’ | grep -Eo ‘[0-9]+:[0-9]+’ | sed -e ‘s/:/./’)
percent $MPDUSED $MPDTOTAL ; MPD=$NUM
MPDBAR=$(percentbar $MPD)
else
MPDSONG="“
MPDBAR=”"
fi
#####Partie mails#######
if [ -e /tmp/mails ]; then
NBLINES=$(cat /tmp/mails | wc -l) # on compte le nombre de lignes dans le fichier
if [ $NBLINES -gt 0 ]; then # on affiche que si ça en vaut le coup
if [ $i -gt $NBLINES ]; then
i=1
fi
MAILS=$(cat /tmp/mails | sed -n ${i}p )
i=$(( $i + 1 ))

	fi

else
MAILS=""
fi

####Partie batterie+espace libre+CPU+heure####
BATTERIE=$(acpi -b | grep -Eo ‘[0-9]+%’)
HOME=$(df -h /home | awk ‘{print $5}’ | grep -Eo ‘[0-9]+%’)
ROOT=$(df -h / | awk ‘{print $5}’ | grep -Eo ‘[0-9]+%’)
UPTIME=$(uptime | sed ‘s/.*://; s/,//g’)
DATE=$(/bin/date +%d/%m/%Y’ '%k:%M)
#####Partie pour le volume sonore######
if [ “$(amixer get Master | tail -n 1 |cut -d [ -f4)” = “on]” ]; then
VOL=$(amixer get Master | grep -Eo ‘[0-9]+%’)
else
VOL="OFF"
fi
####on affiche####
STATUS=$(echo -n $MPDSONG $MPDBAR ‘|’ ‘/home:’$HOME ‘|’ ‘/:’$ROOT ‘|’ $UPTIME ‘|’ ‘Bat:’$BATTERIE ‘|’ $MAILS ‘|’ ‘Vol:’ $VOL ‘|’ $DATE )
xsetroot -name "$STATUS"
sleep $T_
done

exit 0
[/code]

Puisque le premier post a été édité pour dire que ce topic pouvait être un lieu d’échange de nos configurations de dwm,
j’ai adapté la mienne afin d’enlever tout les raccourcis claviers qui m’étaient personnel (les lanceurs d’applications, etc),
afin de ne pas vous imposer mes goûts en matière de programmes ou de raccourcis claviers.
j’ai remis le config.h le plus possible comme par défaut et fait un patch qui peut facilement s’appliquer sur une version stable de dwm fraîchement téléchargée$ wget http://dl.suckless.org/dwm/dwm-5.7.2.tar.gz

Les changements par rapport à la version normale sont :

  • le config.h est adapté à un clavier français
  • l’ajout de patchs :
  • bottomstack (disposition de fenêtre par défaut mais divisée horizontalement au lieu de verticalement)
  • pertag (permet de garder des dispositions de fenêtres différentes selons les tags)
  • prevnext (permet de passer dans le tag précédent/suivant sans aller chercher les chiffres sur le clavier)
  • attachabove (permet quand le focus est sur la zone stack, que les nouvelles fenêtres s’ouvrent dans cette zone
    plutôt que dans la zone principale).

En contrepartie de ces ajouts, j’ai aussi fait quelques coupes dans le code,
à savoir :
suppression du mode flottant et de presque tout le support de la souris
ce qui en fait une version idéale pour perdre les vieilles habitudes tenaces…

Le résultat est plus léger (de peu mais quand même :slightly_smiling: ) que le dwm de base.

J’ai aussi rajouté un raccourcis clavier qui permet qu’après recompilation, dwm soit relancé sans délogguer de X
et en gardant les applications en cours ouvertes, attention toutes les applications n’étant pas traitée
dans la partie rules du config.h se retrouveront dans le tag 1 après redémarrage de dwm.
Ça permet de prendre en compte d’éventuels changements de configuration en cours de route.

Pour que ce raccourcis clavier soit efficace il ne faut pas lancer dwm de la manière classique mais dans une boucle.

Tout les détails en dessous :

Sample de ~/.xinitrc ou ~/.xsession minimal pouvant servir à lancer la session X exec startdwmet le script startdwm (lui aussi assez minimal, si vous chercher à plus remplir la barre de statut,
aller voir plus haut) qui contient la boucle de lancement de dwm : #!/bin/sh while true; do while true do xsetroot -name "$(date +%H:%M,\ %A\ %d\ %B)" sleep 60 done & dwm done

Le raccourcis servant à relancer dwm déclenche la même commande que celle qui fait quitter dwm dans la version normale,
mais comme dwm est lancé dans une boucle, ça le relance immédiatement. :slightly_smiling:
Pour vraiment quitter dwm, le config.h contient un simple raccourcis vers killall startdwm

Pour appliquer le patch, une fois dans le répertoire des sources avec l’archive du patch, lancer :

$ gunzip dwm-5.7.2-eol.diff.gz $ patch -p1 < dwm-5.7.2-eol.diff

Voilà, j’espère que ce sera utile à certains.

C’est vraiment très généreux de ta part eol, je regarde de près ASAP!! (bein tiens dès ce soir :mrgreen: )

Sinon :

'ai adapté la mienne afin d’enlever tout les raccourcis claviers qui m’étaient personnel (les lanceurs d’applications, etc),
afin de ne pas vous imposer mes goûts en matière de programmes ou de raccourcis claviers.
j
Perso, je voudrais bien que tu mette la liste des prog’ que tu utilises, ça permettrait peut être de découvrir des applis intéressantes et inconnues…

prevnext (permet de passer dans le tag précédent/suivant sans aller chercher les chiffres sur le clavier)
Je ne vois pas ce patch sur le site de suckless, est ce une création de ta part??

…et de presque tout le support de la souris
ce qui en fait une version idéale pour perdre les vieilles habitudes tenaces…

Tu inclus la possibilité de redimensionner une fenêtre en mode flottant sans la souris??
Je n’ai pas vu cette possibilité dans la config par défaut; à moins que j’ai mal cherché :unamused:

Encore merci :smt006

[quote=“M3t4linux”]prevnext (permet de passer dans le tag précédent/suivant sans aller chercher les chiffres sur le clavier)
Je ne vois pas ce patch sur le site de suckless, est ce une création de ta part??[/quote]Non, c’est une trouvaille sur internet.

[quote=“M3t4linux”]Tu inclus la possibilité de redimensionner une fenêtre en mode flottant sans la souris??
Je n’ai pas vu cette possibilité dans la config par défaut; à moins que j’ai mal cherché[/quote]Non, j’ai fait pire, j’ai supprimé le mode flottant :smt003 , mais t’inquiète, il est facile à remettre, si vraiment tu as besoin il y aura moyen de refaire un autre patch
où je n’aurais pas supprimé le mode flottant.
En ce qui concerne recadrer et déplacer les fenêtre en mode flottant avec le clavier,
je pense que tu peux utiliser ce patch : http://dwm.suckless.org/patches/moveresize

[quote=“M3t4linux”]Perso, je voudrais bien que tu mette la liste des prog’ que tu utilises, ça permettrait peut être de découvrir des applis intéressantes et inconnues…[/quote]En gros, rien de très original :
web : surf
mail : mutt
éditeur : vim
musique : mpc/mpd

Bon sinon, j’essaie de te refaire un patch avec le mode flottant réintégré et le patch moveresize de rajouté.

edit : le voici

Pas eu le temps de le tester, mais il s’applique sans avertissements et les sources patchées compilent
sans avertissements non plus donc apriori il n’y a pas de soucis.

wahou! ça c’est du boulot! :wink:
Juste pour savoir, il n’y aurait pas un souci dans le .xinitrc que tu as copié? il n’est écrit nulle part “dwm”, donc comment peut-il être lancé?

[quote=“thuban”]wahou! ça c’est du boulot! :wink:
Juste pour savoir, il n’y aurait pas un souci dans le .xinitrc que tu as copié? il n’est écrit nulle part “dwm”, donc comment peut-il être lancé?[/quote]Oups, souci d’édition,
m’en vais corriger merci!

Pas de soucis! Je testerais ce que tu as fait dès que possible, ça m’a l’air pas mal. En tout cas, vraiment, chapeau bas! Pour quelqu’un disant ne pas savoir coder, mais qui apprends en mettant le nez dans le code, tu te débrouilles vraiment bien pour savoir quoi supprimer à tel ou tel endroit sans tout mettre en l’air! tu as un don mon gars! :slightly_smiling:

[quote=“thuban”]Pour quelqu’un disant ne pas savoir coder, mais qui apprends en mettant le nez dans le code, tu te débrouilles vraiment bien pour savoir quoi supprimer à tel ou tel endroit sans tout mettre en l’air! tu as un don mon gars! :slightly_smiling:[/quote]Merci, mais crois moi, tu me surestimes,
J’ai choisi de travailler sur un programme dont le code est très propre et dont les fonctions
ont des noms qui font deviner à quoi elles se rapportent
avec de mini bases d’anglais c’est faisable d’enlever la fonction que tu souhaites
sans totalement comprendre son fonctionnement.
Tu finis le nettoyage en enlevant sa définition en haut du fichier
et d’éventuelles références à cette fonction dans le config.h.

En plus mis à part de rare cas, je n’ai strictement rien à changer à l’intérieur des fonctions
et quand je dois le faire, éventuellement à cause d’un patch pas totalement mis à jour
pour la version actuelle de dwm ou pour cause d’interaction entre deux patchs,
c’est suite à un avertissement du compileur qui me dit où est le problème
et me donne des indices pour le résoudre.

Dans le cas du patch moveresize appliqué sur la version d’hier du patch que j’ai posté,
la version de moveresize est la version minimale qui ne passe pas automatiquement
la fenêtre sélectionnée en mode flottant et donc nécessite une intervention en plus de l’utilisateur.

Je vais renvoyer la version avec l’automatisation du passage en flottant pour le recadrage après mon post,
je l’ai testé sur ma version de dwm, donc il faut d’abord que je remette tout ça aux réglages par défaut
avant de le poster.

La version avec l’automatisation sur la page de suckless ne s’applique pas directement
mais le compileur dit "Eh ça va pas ça! Allez voir telle ligne et nettoyez moi tout ça!"
Et effectivement après avoir enlevé 5 caractères le patch s’applique nickel. :slightly_smiling:

Si je pouvais être capable d’écrire des patchs pour dwm,
là on pourrait dire que je me commence à me débrouiller,
mais pour l’instant on reste dans le bricolage. :slightly_smiling:

Bon, en fait j’ai eu envie de manger un morceau, donc ça a été plus long que prévu :smt003
mais la voici :