naked'Crew

Language:

remplissage automatique du fichier $HOME/.fluxbox/automenu.exclude

croutons

j'ai créé un petit script pour la création automatique du fichier automenu.exclude en se basant sur le contenu des fichiers .desktop
sauvegarde du fichier

%
cp ~/.fluxbox/automenu.exclude ~/.fluxbox/automenu.exclude_bak
%

le script

%cat /usr/local/bin/auto-exclude
#!/bin/bash
#génère le fichier automenu.exclude d'après desktop NoDisplay=true

desktopfilespath="$HOME/.local/share/applications /usr/share/applications"
grep -R NoDisplay=true $desktopfilespath|cut -d: -f1>/tmp/nodisplay.txt

#message d'info
echo -e "###fichier créé par le script auto-exclude###
#Pour exclure une autre application :
#Ajouter NoDisplay=true dans son fichier .desktop
#lancer auto-exclude si besoin pour recréer se fichier\n">~/.fluxbox/automenu.exclude

while read line  
do   
   basename "$line"

done < /tmp/nodisplay.txt>>~/.fluxbox/automenu.exclude
%

il est vrai que on a pas souvent d'applications a exclure de l'affichage du menu , mais vu que les fichiers desktop qui ne doivent pas etre visible on
NoDisplay=true, je me suis dis pourquoi ne pas en profiter

ne pas oubier de rendre le script éxécutable

%
chmod +x /usr/local/bin/auto-exclude
%

voila si sa intéresse des gens je suis content :-)

RSS

Replies

#1. arpinux

salut :)

très pratique pour celles et ceux qui rajoutent des apps sur nakeDeb.
merci croutons :D

#2. croutons

après étude des différence entre
~/.fluxbox/automenu.exclude et ~/.fluxbox/automenu.exclude_bak
la plus par fichiers desktop qui manque dans le nouveau fichier n'existe pas ou plus
le fichiers desktop auquel j'ai du ajouter NoDisplay=true (si j'en oubli pas)
/usr/share/applications/display-im6.q16.desktop
/usr/share/applications/pcmanfm-desktop-pref.desktop

un exemple sur le fichier desktop python
dans l'ancien fichier
python2.7.desktop et python3.7.desktop n'existe plus

dans le nouveau fichier généré automatiquement
python3.9 a été trouvé et ajouté dans la liste

#3. arpinux

ah merci, je vais inclure tout ceci par défaut dans la prochaine mise à jour !

pour la construction des paquets et de l'ISO, je préfère ne pas modifier les fichiers desktop des applications car ils sont écrasés lors des mises à jour du système.
en revanche, compléter le automenu.exclude par défaut grâce à ton script sera parfait ! ;)

#4. croutons

autre alternative, avec la commande uniq couplé avec sort
ne pas écraser le fichier existant mais rajouter les lignes a la suite
Ce qui permet de pourvoir ajouter des lignes manuellement dans le fichier
et cerise sur le gateau les lignes sont classé par ordre alphabétique
ce qui donne

%cat /usr/local/bin/auto-exclude
#!/bin/bash
#génère le fichier automenu.exclude d'après desktop NoDisplay=true

desktopfilespath="$HOME/.local/share/applications /usr/share/applications"
grep -R NoDisplay=true $desktopfilespath|cut -d: -f1>/tmp/nodisplay.txt

while read line  
do   
   basename "$line"

done < /tmp/nodisplay.txt>>~/.fluxbox/automenu.exclude

#ne pas écraser le fichier mais rechercher les lignes en doublon avec uniq
sort ~/.fluxbox/automenu.exclude|uniq>/tmp/uniq.txt
mv tmp/uniq.txt ~/.fluxbox/automenu.exclude
%

dans cette version je n'écrase pas le fichier des le début
les lignes sont triées et les lignes en doublon sont supprimé
bon j'ai viré le message de commentaire car il était trié avec sort c'était le bordel

j'avais essayé avec uniq seul mais cela ne fontionne pas
précisé dans le man
Note : uniq ne détecte pas les lignes répétées, sauf si elles sont adjacentes. Vous voudrez sûrement trier l'entrée d'abord ou utiliser « sort -u » sans uniq.
les fichiers d'entrée et de sortie doivent etre différent
pour ça que je suis obligé d'utiliser un fichier temporaire

#5. croutons

ah mince j'ai oublié un /

%
mv /tmp/uniq.txt ~/.fluxbox/automenu.exclude
%
#6. croutons

voici la derniére version du script que j'ai retenu
version autorisant les ajout manuel

% /usr/bin/fluxbox-autoexclude
#!/bin/bash
#génère le fichier automenu.exclude d'après desktop NoDisplay=true
#Les ajouts manuel sont toujours autorisés

desktopfilespath="$HOME/.local/share/applications /usr/share/applications"
grep -R NoDisplay=true $desktopfilespath|cut -d: -f1>/tmp/nodisplay.txt

while read line  
do   
   basename "$line"

done < /tmp/nodisplay.txt>>~/.fluxbox/automenu.exclude

#recherche et suppression des lignes de commentaire
sed -i "/#/d" ~/.fluxbox/automenu.exclude

#tri et recherche de doublon
sort --unique ~/.fluxbox/automenu.exclude -o ~/.fluxbox/automenu.exclude

#message d'info ajouté en début de fichier
sed -i 1i\ '###fichier créé par le script fluxbox-autoexclude###\n##Les ajouts manuel son autorisé\n' ~/.fluxbox/automenu.exclude
%

j'ai utilisé l'option --unique de sort ce qui évite de devoir passer par un pipe et un fichier temporaire car le fichier d'entrée peu etre le meme que le fichier de sortie

ajouter fluxbox-autoexclude dans le fichier ~/.fluxbox/startup

%
# fluxbox automenu by thuban
sleep 3s && fluxbox-autoexclude && rm -f ~/.fluxbox/automenu/* && fluxbox-automenu \
    && fluxbox-update_configs &
%
#7. croutons

meme que sans les fautes d'orthographe dans les commentaires le script serait mieux ;-)

#8. arpinux

vraiment une bonne amélioration de l'automenu. je vais tenter une intégration complète de ton script directement dans l'application.

merci encore :)

Your friendly neighbourhood moderators: arpinux