esmourguit a écrit :
> Les menu d'Openbox et de Lxpanel sont rafraîchis dynamiquement.
Hum... et même je suis tenté de dire : aïe ! D'autant que tu auras deux
menus qui seront rafraîchis. D'expérience, je peux te dire que cela
provoque des hoquets ou même des délais pouvant aller jusqu'à cinq
secondes sur les machines plus anciennes. L'utilisation de deux menus
provoquera le double des délais. Médor a créé un utilitaire de synchoni-
sation, certes, mais je crois que même un seul délai sera déroutant pour
l'utilisateur lambda. "Mais, voyons, qu'est-ce qui se passe ?", pensera-t-il.
La solution que j'ai implémentée sur pekwm -- trouvée autrefois par MU,
d'ailleurs, pour fixmenus; l'idée n'est pas de moi -- est d'avoir un petit
lanceur du script de menu, qui vérifie si les entrées dans
/usr/share/applications
ont changé en nombre ou en bytes depuis la dernière utilisation du menu.
Cela fonctionne comme suit :
À la 1ère utilisation au cours de la session, le menu est créé dynami-
quement, mais il liasse une copie du résultat dans /tmp. Aux utilisations
suivantes du menu, le lanceur vérifie si quelque chose a changé. Sinon, le
menu s'affiche instantanément en utilisant la copie dans /tmp; si oui, le
menu est recréé.
À tout hasard, pour référence, je joins une sous-séquence de vérification
pour un menu ae simple permettant l'accès par menu aux répertoires
dans /root. Mutatis mutandis, évidemment, vu que tu utilises openbox,
mais tu peux y voir une implémentation du concept.
Les autres améliorations que tu as apportées semblent dignes du nom !
Bonne continuation.
musher0
~~~~~~~~~~~~~~~~
Code: Select all
cd ~
if [ -f /root/precedent ] && [ -f /root/.pekwm/rep-root.sh ] && [ "`du -c /root | grep total | cut -d\t -f1`" = "`cat /root/precedent`" ] && [ "`ls -g root-rep.sh | cut -d' ' -f4`" = "`cat /root/.pekwm/taille-root-rep`" ];then
/root/.pekwm/rep-root.sh &
else
du -c /root | grep total | cut -d\t -f1 > /root/precedent
ls -g /root/.pekwm/root-rep.sh | cut -d' ' -f4 > /root/.pekwm/taille-root-rep
rootrep
fi
On se sert du paramètre -c (total) de du ET de ls -g "fichier" | cut etc. pour établir les "drapeaux".
Les fichiers "taille-root-rep" et "precedent" servent à la comparaison.
rep-root.sh affiche le menu pour le cas "inchangé" (les comparaisons étant "égales" (true) partout);
sinon, rootrep crée de nouvelles références, puis recrée le menu avant de l'afficher.