Du libre, du code, des idées, du mélange d’ArraKISS…

De l’épice pour la pensée

Thunar

est un gestionnaire de fichier utilisé par défaut dans l'excellent environnement de bureau xfce. Il est possible d'y configurer des actions personnalisées. C'est en fait une façon de se simplifier la vie, en ajoutant des raccourcis lorsque vous cliquez-droit sur un fichier pour par exemple convertir une image en jpg, un fichier mp3 en ogg ou encore uploader un fichier sur la toile.
Voici donc quelques actions personnalisées bien pratiques.

Avant toutes choses, regardons comment configurer les actions personnalisées. Dans thunar, menu Edition, vous avez accès à la configuration :

Après avoir cliqué, cette fenêtre apparaît :


En cliquant sur le "+", vous pouvez alors ajouter une nouvelle action personnalisée. Vous pourrez alors choisir un nom pour l'action et la commande. N'oubliez pas d'ailleurs de la terminer par %f (nom du fichier traité) ou %F (liste des fichiers traités) par exemple. Il y a aussi un onglet "Conditions d'apparition" pour choisir sur quel type de fichier l'action apparaîtra. Par exemple une action qui ne sert qu'aux images ne doit pas apparaître pour les musiques.


Chercher un fichier avec catfish

La commande à donner est :

catfish --path %f

Dans conditions d'apparition, cochez seulement les répertoires.

Convertir un document en pdf
Commande :

unoconv -f pdf %f

Conditions d'apparition :

Envoyer un fichier comme pièce jointe :
La commande adéquate sera (remplacez éventuellement icedove par thunderbird):

icedove --compose "attachment=%f"

Dans les conditions d'apparition, cochez tous les fichiers sauf répertoire :


Jouer dans quodlibet
La commande :

quodlibet --enqueue %F

Conditions d'apparition : Répertoires et fichiers musicaux

Upload d'une vidéo sur VideoBin.org
C'est déjà décrit ici en fait :)
Commande :

uptovideovin.sh %f

Le script :

#!/bin/sh
# requiert curl
URL=$(curl -F"api=1" -F"videoFile=@\"$1\"" http://videobin.org/add)
notify-send "Vidéo chargée : $URL"
x-www-browser "$URL"
exit 0

Conditions d'apparition : fichiers vidéos

Traitement d'image
Récupérez et enregistrez un des scripts suivant selon ce que vous voulez faire, puis ajoutez-le en commande personnalisée. Les conditions d'apparition seront les fichiers images bien sûr.

image2jpg.sh %F

Conversion audio

Ces deux scripts permettent de convertir un lot de fichiers mp3 en ogg ou l'inverse. Dans les conditions d'apparition, on précisera donc les fichiers musicaux.
Convertir en mp3 - Convertir en ogg

Envoyer une image sur pix.toile-libre.org
Dans la commande, précisez le script pixup.sh que vous enregistrerez dans /usr/local/bin:

#!/bin/sh
PIXUP=/usr/local/bin/pixup.py

v_=$IFS
IFS="
"
for i in $@; do
    file=$i
    echo "image : $i"
    URL="$(python3 $PIXUP page $i)"
    notify-send "image envoyées : $i" &
    x-www-browser $URL &
done

IFS=$v_
exit 0

Et enregistrez aussi le fichier pixup.py dans /usr/local/bin aussi :

#!/usr/bin/env python3
# -*- coding:Utf-8 -*-
# Fichier: pixup.py

# requires python3-requests

"""

Auteur :      thuban (thuban@yeuxdelibad.net) 
licence :     GNU General Public Licence

Description : Permet d'uploader une image sur pix.toile-libre.org
          Pratique en utilisation avec un gestionnaire de fichier

"""

try:
        import sys
        import os
        import re
        import requests
        import mimetypes
except ImportError as err:
        print ("Couldn't load module. {0}".format(err))
        sys.exit(1)

def help():
    print('usage : '+os.path.basename(sys.argv[0])+' [all|page|url|minforum|forum|minhtml|html] image')
    print('    all (default) : affiche toutes les autres url')
    print('    page : url de la page de cette image sur le site')
    print('    url : url de l\'image')
    print('    minforum : BBCode pour afficher une miniature sur un forum PhpBB')
    print('    forum : BBCode pour afficher l\'image sur un forum PhpBB')
    print('    minhtml : code html pour afficher une miniature dans un site web')
    print('    html : code html pour afficher l\'image dans un site web')
    sys.exit(1)

def verif(argument):
    if (os.path.isfile(argument)):
        return argument
    else:
        print("Commande ou fichier invalide")
        sys.exit(1)

def affiche(adresses, opt):
    if opt == 'page':
        print(adresses[0])
    elif opt == 'url':
        print(adresses[1])
    elif opt == 'minforum':
        print(adresses[2])
    elif opt == 'forum':
        print(adresses[3])
    elif opt == 'minhtml':
        print(adresses[4])
    elif opt == 'html':
        print(adresses[5])
    else:
        print('Afficher l\'image : ' + adresses[0])
        print('Accéder à l\'image : ' + adresses[1])
        print('Insérer la miniature dans un forum : ' + adresses[2])
        print('Insérer l\'image dans un forum : ' + adresses[3])
        print('Insérer la miniature à votre site : ' + adresses[4])
        print('Insérer l\'image à votre site : ' + adresses[5])
        
def upload(image, aff):
    with open(image, 'rb') as img:
        mime = mimetypes.guess_type(image)[0]
        toup = {'img': (os.path.basename(image), img, mime)}
        res= requests.post('http://pix.toile-libre.org/?action=upload', files = toup, data={'MAX_FILE_SIZE': '15360000'})
        f = res.text

        adresses=re.findall(r'<textarea>(.*?)</textarea>', f)
        affiche(adresses, aff)
        return(0)
	


def main():
    options=['page', 'url', 'minforum', 'forum', 'minhtml', 'html']
    aff='all'
    if len(sys.argv) == 1 or sys.argv[1] == "help" or sys.argv[1] == "-h" or sys.argv[1] == "--help":
        help()
    elif len(sys.argv) >= 3:
        aff=sys.argv[1]
        if aff in options:
            for i in range(2, len(sys.argv)):
                image = verif(sys.argv[i])
                upload(image, aff)
        else:
            for i in range(1, len(sys.argv)):
                image = verif(sys.argv[i])
                upload(image, aff)
    else:
        image = verif(sys.argv[1])
        upload(image, aff)

    return 0


if __name__ == '__main__':
   main()

Et vous, avez vous des scripts ou des astuces pour les actions personnalisées de thunar?

fibi m'a fait découvrir le service videobin.org, qui est juste génial.
Donc au revoir youtube et compagnie.

Comme ils proposent une api du tonnerre, j'ai ajouté une action personnalisée dans thunar pour envoyer mes vidéos.

Tout d'abord, on crée le script up2videobin.sh :

#!/bin/sh
# requiert curl
URL=$(curl -F"api=1" -F"videoFile=@\"$1\"" http://videobin.org/add)
notify-send "Vidéo chargée : $URL"
x-www-browser "$URL"
exit 0

Assurez-vous qu'il est bien exécutable en lançant la commande
chmod +x uptovideobin.sh

Et voilà, plus qu'à ajouter comme action personnalisée dans thunar.
Dans le menu, allez dans Editer -> Configurer les actions personnalisée -> Cliquez sur le "+" -> Mettez un nom puis pour la commande, le chemin vers uptovideobin.sh. Bien sûr, dans l'onglet conditions d'apparition, on choisira les fichiers vidéos.