Menus Dynamiques dans pekwm

Je viens de tomber sur ça :
debian.org/doc/manuals/debia … 12.fr.html
et ça :
debian.org/doc/debian-policy/ch-files.html

Merci, c’est mis dans les bookmarks! :slightly_smiling:

mise à jour de pekfil, et ajout d’un todo :

[code]#! /bin/sh

TODO=~/Documents/TODO
EDITCOMMAND="urxvt -e vim"
LIGNES=cat $TODO | wc -l

echo "Dynamic {"
for i in $(seq 1 $LIGNES)
do
echo " Entry = “$(cat $TODO | sed -n ${i}p)” { Actions = "Exec $EDITCOMMAND $TODO /dev/null & " }"
done
echo “}”

exit
[/code]

[code]#!/bin/sh
#pek-file.sh
#Script pour parcourir le dossier personnel dans pekwm
#thuban@singularity.fr
#Pour l’utiliser, ajoutez ceci dans le fichier ~/.pekwm/menu :
#Submenu = “FICHIERS :” {

Entry = “” { Actions = “Dynamic /path/to/the/script/pek-file.sh /Nom/Du/Dossier/à/lister” }

}

#\o/\o/\o/\o/\o/\o/\o/\o/\o/\o/\o/\o/\o/\O/\o/\o/\o/\o/\o/\o/\o/\o/\o/\Q/\o/\o/\o/\o/\o/\o/\o/\o/\o/\o/\o/\o/\o/\o/\o/\o/\o/\o/\o/\o/#
#À améliorer :
#Ajout d’icones (fait partiellement)

##Différentes variables pour simplifier les modifications
FILEMGR=“pcmanfm” # file manager
TERM=“urxvt” # émulateur de terminal

#Attention, il faut adapter cette valeur!

CHEMIN="~/.pekwm/scripts" # chemin du dossier où sont enregistrés les scripts

cd $1

on liste le contenu du répertoire courant.

liste_ () {
LISTE=ls -1 -F --sort=extension $PWD
echo “$LISTE”
}

Cette fonction permet d’afficher un menu en fonction du type de fichier

action_ () {
case $1 in
ls: ) echo “” #on n’affiche pas les erreurs retournée par ls
;;
*/ ) echo "Submenu = “$1” { Icon = “folder.png”"
echo "Entry “” { Actions = “Dynamic cd ‘$PWD/$1’ && $CHEMIN/pek-file.sh ‘$PWD/$1’ &” }"
echo “}”

    ;;
    *.mpeg | *.mov | *.avi | *.wma | *.mpg | *.mkv | *.flv | *.wmv | *.mp4 | *.AVI | *.ogm | *.ogg ) 
                echo "Entry = \"$1\" { Icon = \"video.png\"; Actions = \"Exec mplayer '$PWD/$1' & \" }" 
    ;;
    *.odt | *.doc | *.docx | .txt | *.xlsx | *.opt | *.pps | *.xls | *.ods | *.ppt | *.odp ) 
                echo "Entry = \"$1\" { Icon = \"document.png\"; Actions = \"Exec soffice '$PWD/$1' & \" }"
    ;;    
    *.abw ) 
                echo "Entry = \"$1\" { Icon = \"document.png\"; Actions = \"Exec abiword '$PWD/$1' & \" }"
    ;;
    *.gnumeric )
                echo "Entry = \"$1\" { Icon = \"document.png\"; Actions = \"Exec gnumeric '$PWD/$1' & \" }"
    ;;
    *.gba )
                echo "Entry = \"$1\" { Actions = \"Exec gvba '$PWD/$1' & \" }"
    ;;
    *.png | *.jpg | *.JPG | *.jpeg | *.gif | *.bmp | *.tiff )
                echo "Submenu =  \"$1\" { Icon = \"image.png\" "
                echo "Entry = \"Ouvrir avec gimp\" {Actions = \"Exec gimp '$PWD/$1' & \" }"
                echo "Entry = \"Ouvrir avec feh\" {Actions = \"Exec feh -x '$PWD/$1' & \" }"
                echo "Entry = \"Diaporama ici\" {Actions = \"Exec feh -x -r '$PWD' & \" }"
                echo "Entry = \"Définir comme fond d'écran\" {Actions = \"Exec feh --bg-scale '$PWD/$1' & \" }"
                echo "}" 
    ;;
    *.gp4 | *.gp3 | *.gtp ) 
                echo "Entry = \"$1\" { Icon = \"musique.png\"; Actions = \"Exec tuxguitar '$PWD/$1' & \" }"
    ;;
    *.py | *.c | *.h | *.sh | *.lua | *.hs | *.html | *.css ) 
                echo "Entry = \"$1\" { Icon = \"mousepad.png\"; Actions = \"Exec geany '$PWD/$1' & \" }"
    ;;
    *.ogg | *.mp3 | *.flac | *.wma | *.wav ) 
                echo "Entry = \"$1\" { Icon = \"musique.png\"; Actions = \"Exec gmplayer '$PWD/$1' & \" }"
    ;;
    *.pdf ) 
                echo "Entry = \"$1\" { Icon = \"document.png\"; Actions = \"Exec evince '$PWD/$1' & \" }"
    ;;

esac

}
#on commence le menu
echo "Dynamic {“
v=$IFS
IFS=’
'
NB=liste_ | wc -l
i=1
while [ $i -le $NB ]
do
ELEMENT=”$(liste_ | sed -n ${i}p)"
action_ $ELEMENT
i=$(expr $i + 1)
done
echo "Separator {}"
echo "Entry = “Ouvrir dans $FILEMGR” { Actions = "Exec $FILEMGR ‘$PWD’/ & " }"
echo "Entry = “Terminal ici” { Actions = "Exec cd ‘$PWD’ && $TERM & " }"
echo "Entry = “Rechercher ici” { Actions = "Exec catfish ‘$PWD’/ & " }"
echo "}"
IFS=v
exit 0;
[/code]