Rendez-vous sur Arrakis

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