C'est tout simple, une fois qu'on sait comment faire ! Il suffisait d'y penser !
La conversion se fait très rapidement, vu que les menus d'icewm et de pekwm sont grosso modo au format texte.
J'ai beaucoup commenté mon script. S.v.p lisez-en les commentaires Il est inutile que je me répète dans le corps du message.
Note: 2e mouture, améliorée, 14 oct. 2012.
Code: Select all
#!/bin/sh
# Emplacement et nom du script :
# ~/my-applications/bin/ice2pek.sh
#
# Dépendance : replaceit
# But : composer un menu pekwm à partir d'un menu icewm
# déjà personalisé, pour s'éviter de recommencer de zéro.
# Suggestion : Si vous n'avez pas personnalisé votre menu icewm, le
# mettre à jour en tapant "fixmenus" avant de lancer le présent script.
# musher0, 13 oct. 2012
####
## variable initiale
R="replaceit --input=GrandBout.txt"
# cd ~/.icewm # OU
cd ~/.lxp-icewm # selon la variante d'icewm que vous avez.
## Pour ne pas altérer le menu d'icewm ou de lxp-icewm.
cp -f toolbar.moi GrandBout.txt # OU
# cp -f toolbar GrandBout.txt # OU
# cp -f menu GrandBout.txt
## À vous de choisir quel menu doit être converti.
## Effacer les lignes "wine" trop complexes et les lignes de remarques.
$R --wholeline WINEPREFIX " "
$R --wholeline "#" " "
# Traitement de tout le reste
$R "\" " "\" \""
$R .xpm .xpm\"
$R .png .png\"
$R .jpg .jpg\"
$R .jpeg .jpg\"
# $R .ico .ico\" # Petit "en-cas".
$R " \{" "\" \{"
$R "app " "app\" " # Pour ne pas toucher à "my-applications"
# $R folder folder\" # Non. Changer la "syntaxe" de cet icône associé aux
# sous-menus de icewm fausse l'interprétation des lignes marquées "menu".
$R "\" " "\";"
$R " \"" ";\""
$R ";;" ;
$R "\" " "\";"
cut -d\; -f1,2,4 GrandBout.txt > GrandBout.nvo
## La sous-routine qui suit prévient le problème de l'ajout de
## caractères en fin de ligne dans le menu pekwm.
echo > GrandBout.mod # crée un autre fichier de travail
while read line ; do
echo "$line -fin" >> GrandBout.mod
done < GrandBout.nvo
## 2e variable
unset R
R="replaceit --input=GrandBout.mod"
$R "prog;" "Entry = "
$R "\";" "\" { Actions = \"Exec "
$R "-fin" "&\" }"
# On a marqué plus haut la fin de ligne EOL, mais il faut
# remettre la valeur originale des lignes "menu",
$R "\" &\" }" "\" {"
$R "{ Actions = \"Exec { &\" }" {
# et des "accolades fermantes" de fin de sous-menu.
$R "} &\" }" }
$R " &\" }" " " "-Entry"
# Puis reconvertir les lignes "menu"...
$R "menu;" "Submenu = "
# ... et les lignes de séparation au format du menu pekwm.
$R separator "Separator {}"
$R "separator &\" }" "Separator {}" # au cas où
$R "separator}" "Separator {}" # (bis) :-)
echo >> GrandBout.mod # Ligne vide pour clore.
### cat GrandBout.mod >> ~/.pekwm/menu
# Une fois la conversion terminée, rabouter ce "GrandBout.mod"
# au menu pekwm existant. Si vous voulez l'avoir à cet
# endroit, enlever les dièzes à la ligne 78.
# Cela dit, une conversion de menu automatisée est rarement parfaite. Je
# vous suggère plutôt de faire la concaténation dans un 2e temps, à la
# main, avec votre éditeur, et de corriger à mesure que vous mettez le
# menu résultant à l'essai dans pekwm.
rm GrandBout.nvo # On nettoie les fichiers de travail.
### rm GrandBout.mod # Attention ! Effacez seulement si
### vous l'avez concaténé au menu pekwm !
# cp -f GrandBout.cdr GrandBout.txt
# Réactive copie de réserve. Pour édition du script.
Dans notre forum, à propos de pekwm :
http://murga-linux.com/puppy/viewtopic. ... 85&t=14919
http://murga-linux.com/puppy/viewtopic. ... 00&t=81062
http://murga-linux.com/puppy/viewtopic. ... 00&t=80137
À propos de lxp-icewm :
http://murga-linux.com/puppy/viewtopic. ... 00&t=77595
Sites externes :
https://www.pekwm.org/projects/pekwm
http://www.icewm.org/
http://lxp.sourceforge.net/
Meilleures salutations.