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?

Cet article provient de cette page, et ne sera pas mis à jour contrairement à cette dernière.

Ici, on va parler de pipemenus, cette fonctionnalité qui permet d'avoir des menus dynamiques et donc accès à à peu près n'importe quoi.

Ici, on va parler de pipemenus, cette fonctionnalité qui permet d'avoir des menus dynamiques et donc accès à à peu près n'importe quoi.

Les scripts décrits ci-dessous sont pour la plupart présents ici.

Généralités

Pour insérer un pipemenu, il faudra mettre une ligne qui ressemble à celle ci-dessous dans le fichier ~/.config/openbox/menu.xml :

<menu execute="~/.config/openbox/pipemenus/mescripts.sh" id="scripts" label="Scripts"/>

À chaque fois, il faudra modifier :

  • Le chemin du script selon là où vous l'aurez enregistré dans la partie execute
  • L'identifiant du menu, où vous pouvez mettre en fait ce que vous voulez. C'est dans la partie id.
  • Le titre du menu dans la partie label. C'est ce qui sera affiché dans le menu d'openbox.

Météo

On peut avoir la météo dans le menu d'Openbox avec le script weather.py. Dans le fichier menu.xml, ajoutez et adaptez:

<menu execute="~/.config/openbox/pipemenus/weather.py Paris fr" id="weather" label="Meteo"/>

ob-weather
MPD
On peut gérer mpd avec mpdob.py et avoir accès à sa liste de lecture. À mettre dans menu.xml :

<menu execute="~/.config/openbox/pipemenus/mpdob.py" id="mpd" label="Liste de lecture"/>

mpdob

Un TODO
Ajouter des choses à faire, les modifier…
Dans le menu.xml :

    <menu execute="~/.config/openbox/pipemenus/obtodo.sh" id="todo" label="TODO"/>

ob-todo

Marque-pages de firefox
On peut lancer les marques-pages de firefox/iceweasel.
Dans le menu.xml :

  <menu execute="~/.config/openbox/pipemenus/obbookmark.py" id="bmk" label="Marque-pages"/>

Ouvrir ses fichiers
Le script
Dans le menu.xml :

    <menu execute="~/.config/openbox/pipemenus/obfile.py" id="files" label="Fichiers"/>

D'autres
Si vous en voulez plus, c'est par ici.