Rendez-vous sur Arrakis

C'est lorsque nous croyons savoir quelque chose qu'il faut justement réfléchir un peu plus profondément. F. Herbert

Ouvrir des fichiers avec dmenu

Ce script permet de lancer des fichiers, selon leur extension

#!/bin/sh
# Lanceur pour plusieurs types de fichier avec dmenu


. ~/.dmenurc
HEIGHT=15

#liste ce qui se trouve dans le répertoire courant, et l'envoie dans dmenu

liste_ () {
    LISTE=`ls -1 -p -a | dmenu -fn $FN -nb $NB -nf $NF -sb $SB -sf $SF -l $HEIGHT -p "$PWD" -i`
    echo "$LISTE"
}

#on édite ou on regarde l'image
image_ () {
    LOGIMAGE="sxiv
gimp" 
    ACTION=$(echo "$LOGIMAGE" | dmenu -fn $FN -nb $NB -nf $NF -sb $SB -sf $SF -p " image :$PWD" -i)
    $ACTION $1 && exit 0 
}

#Differentes actions pour les html
HTML_EDITOR="geany
firefox"


# Cette fonction lance un programme pour ouvrir le fichier selon son extension
action_ () {
    case $1 in
        */ | .. ) cd $1 && CHREP=1 
        ;;
    *.MOV | *.mov | *.mpeg | *.MPG | *.avi | *.webm | *.wma | *.mpg | *.mkv | *.flv | *.wmv | *.mp4 | *.AVI | *.ogm | *.ogv | *.dv ) ffplay $1 && exit 0
        ;;
    *.doc | *.docx | *.txt | *.xls | *.xlsx | *.odt | *.ods | *.ppt | *.opt | *.odp | *.pps) libreoffice $1 && exit 0
        ;;
    *.png | *.jpg | *.JPG | *.jpeg | *.gif | *.bmp | *.tiff ) image_ $1 && exit 0
        ;;
    *.gp5 | *.gp4 | *.gp3 | *.gtp ) tuxguitar $1 && exit 0
        ;;
    *.dvi ) xdvi $1 && exit 0
        ;;
    *.smc | *.SMC | *.zst ) zsnes $1 && exit 0
        ;;
    *.bin | *.smd ) mess megadriv -cart $1 && exit 0
        ;;
    *.php | *.css | *.lua | *.hs | *.py | *.c | *.h | *.sh ) st -e vim $1 && exit 0
        ;;
    *.tex ) t -e vim $1 && exit 0 
        ;;
    *.html ) exec $(echo "$HTML_EDITOR" | dmenu -fn $FN  -nb $NB -nf $NF -sb $SB -sf $SF -p "$1 : ouvrir avec?" -i) $1
        ;;
    *.ogg | *.mp3 | *.flac | *.wma | *.wav ) vlc $1 && exit 0
        ;;
    *.pdf | *.PDF ) mupdf $1 && exit 0
        ;;
    *.svg ) inkscape $1 && exit 0
        ;;
    * )  
    #Ici,on peut lancer une commande du système, ou un des scripts contenu dans un répertoire.
    ACTION=$(dmenu_run -fn $FN -nb $NB -nf $NF -sb $SB -sf $SF -p "$1 : Que faire?" -i)
    exec "$ACTION $1" && exit 0 ;;
    esac
}

#Cette variable servira à savoir si on a changé de répertoire
CHREP=0
#Pour ne pas avoir de soucis avec les espaces dans les noms de fichiers
v_=$IFS
IFS='
'
#on liste une première fois
INDEX="$(liste_)"
[ -z $INDEX ]
#tant que on donne de quoi manger à action, elle tourne
while [ "$INDEX" != "" ]; do 
    action_ $INDEX
    INDEX="$(liste_)"
done

#Si on ne veut plus utiliser le script, mais lancer un autre commande dans le répertoire courant : 
if [ $CHREP != 0 ]; then
    dmenu_run $COLORS -p "$1 : Que faire?" -i && exit 0
fi
IFS=$v_

exit 0