Forum Astuces.divers [X-Window] Changer automatiquement les thêmes WM

Posté par  .
Étiquettes : aucune
0
5
mar.
2002
un bête shell à mettre dans la crontab :

#!/bin/bash
#grouick
TMP_DIR=/tmp
find $HOME/GNUstep/Library/WindowMaker/Themes/ -type d | sort > $TMP_DIR/liste.t
NBRLIGN=`wc -l $TMP_DIR/liste.t | awk '{print $1}'`
NBRLIGN=`expr $NBRLIGN - 1`
if [ -r $TMP_DIR/liste.m ]
then
M=`cat $TMP_DIR/liste.m`
else
M=1
fi
setstyle `cat $TMP_DIR/liste.t | tail -n$M | head -n1`
M=`expr $M + 1`
if [ $M -gt $NBRLIGN ]
then
M=1
fi
echo $M > $TMP_DIR/liste.m
  • # Re: Changer automatiquement les thêmes WM

    Posté par  . Évalué à 1.

    un peu de commentaires dans le code, ça aiderait...

    ⚓ À g'Auch TOUTE! http://afdgauch.online.fr

    • [^] # Re: Changer automatiquement les thêmes WM

      Posté par  . Évalué à 1.

      Tout pareil........
    • [^] # Re: Changer automatiquement les thêmes WM

      Posté par  . Évalué à 1.

      La même chose en plus simple, plus rapide, plus court, plus efficace:

      setstyle `/bin/ls -u1r /usr/share/WindowMaker/Themes/*.style | head -n 1`

      Explication: dans ls, le -u trie par date d'accès (atime), le -r trie dans l'autre sens, le -1 mets un fichier par ligne, le * donne le nom des fichiers en absolu, le /bin/ls évite d'utiliser un alias (ls -f par ex) ; on a donc la liste des styles par ordre d'accès (celui utilisé le plus récemment sera listé en dernier). Il ne reste plus qu'à extraire la première ligne (head) et l'utiliser comme style...

      J'utilise la manip pour avoir un fond d'écran différent derrière gdm à chaque logout en tapant dans /usr/X11R6/lib/xscreensaver...
      • [^] # Re: Changer automatiquement les thêmes WM

        Posté par  . Évalué à 1.

        Remarque : cette commande ne prend que les styles qui font partie des "Thèmes".
        Si on veut utiliser tous les styles de la liste "Styles" il suffit de remplacer "Themes" par "Stylse" dans cette commande comme ceci :

        setstyle `/bin/ls -u1r /usr/share/WindowMaker/Styles/*.style | head -n 1`

        Autre remarque : pour certain le dossier est /usr/X11R6/share/WindowMaker :

        setstyle `/bin/ls -u1r /usr/X11R6/share/WindowMaker/Styles/*.style | head -n 1`
  • # Re: Changer automatiquement les thêmes WM

    Posté par  . Évalué à 1.

    Revoyons l'action au ralenti...

    #!/bin/bash
    # <nom>

    # local variable(s)
    TMP_DIR=/tmp
    typeset -i M=0
    typeset -i NBR_LIGNE=0

    # initialize current theme number
    [[ ! -f "$TMP_DIR/liste.m" ]] && echo 1 > $TMP_DIR/liste.m

    # list WM installed themes
    find ~/GNUStep/library/WindowMaker/Themes -type d > $TMP_DIR/liste.t

    # get number of available themes

    wc -l $TMP_DIR/liste.t | awk '{print $1}' | read NBR_LIGNE

    # browse for M value (i.e theme index) and update
    cat $TMP_DIR/liste.t | read M
    (( M += 1 ))
    (( M = M % NBR_LIGNE + 1 ))
    echo "$M" > $TMP_DIR/liste.t

    # set active the next theme (indexed with M) in list
    setstyle $(cat $TMP_DIR/liste.t | head -n$M | tail -n1)

    # exit on success
    return 0

    ---------------------------------------------------------------
    Juste une/deux remarques concernant cette astuce :

    + pour le fichier <liste.m>. Certaines distributions suppriment le contenu du /tmp au reboot. Du coup, on recommence toujours au premier lors du boot...
    Pour eviter cela, mettre le fichier dans son arbo personnelle...

    + l'avantage de réevaluer la liste des themes a chaque fois permet de prendre en compte ceux nouvellement installés

    + pour avoir un theme aleatoire de la liste, remplacer
    wc -l $TMP_DIR/liste.t | awk '{print $1}' | read NBR_LIGNE
    par
    (( M = $RANDOM % $NBR_LIGNE +1 ))

    + potentiellement, ne fonctionne pas si on a desinstalle des themes. Corrige en ajoutant apres
    cat $TMP_DIR/liste.m | read M
    (( M = M % NBR_LIGNE )) ... ou autre solution de reinit...

    + ici l'ordre de visualisation des themes est 1ere ligne a derniere ligne contrairement a l'astuce

    NB: l'evaluation (( )) ne necessite pas de $ pour interpretation de la variable mais peut etre interessante en debug (set -x)
  • # Re: Changer automatiquement les thêmes WM

    Posté par  . Évalué à 1.

    Désolé mais j'suis pas très doué avec linux, et mon pb c'est de faire la même chose mais avec le background.
    J'utilise la fonction wmsetbg mais cron me renvoit un message comme koi il connait pas le display, et si je lui défini le display avec :0.0 il me fait une erreur: could not open display. Kelk'un a une rapide solution?
    Merci.

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.