Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 15/09/2014, à 16:32

Gaara

[python GTK] Faire choisir une application à un utilisateur (résolu)

Salut à tous,

Je cherche un moyen à créer un bouton "choisir une application" dans un gui gtk. (application type lecteur vidéo)
En python3, j'ai trouvé ça, mais en 2.7, rien... Il n'existe que des sélections de fichiers, de couleurs, de police...

S'il n'y a pas de tel module, quelle serait la meilleure alternative ? Faire écrire le nom de l'application à l'utilisateur, et vérifier si elle existe bien ? ou afficher la liste des fichiers de /usr/share/applications (+ sous dossiers) avec une liste immense?
J'avoue que je ne vois pas trop comment faire.

Merci de vos propositions

Dernière modification par Gaara (Le 16/09/2014, à 15:51)


Kubuntu 18.04 x64
Un terminal tactile Raspberry Pi et Odroid

                                        <code>zenity  --question --title "Alert"  --text "Microsoft Windows has been found! Would you like to remove it?"</code>

Hors ligne

#2 Le 15/09/2014, à 17:08

bishop.sad.clown

Re : [python GTK] Faire choisir une application à un utilisateur (résolu)

Gaara a écrit :

...
afficher la liste des fichiers de /usr/share/applications (+ sous dossiers) avec une liste immense
...

ou pt-être faire une sélection des applis concernées (application type lecteur vidéo uniquement) et faire choisir dans cette liste...


@++ , Rob'
→ Trusty x64
Je n'ai pas toujours les réponses mais je les cherche en même temps que vous... =· þ

Hors ligne

#3 Le 15/09/2014, à 17:33

Gaara

Re : [python GTK] Faire choisir une application à un utilisateur (résolu)

Merci de ta réponse,
Tu m'a mis sur une piste, j'ai trouvé cette commande:

grep -l "AudioVideo;Player" /usr/share/applications/*.desktop

Qui me semble assez rapide. (je vais pouvoir l'adapter un python)
Ça me renvoie à /usr/share/applications/vlc.desktop, mais j'ai aussi kmplayer d'installé, qui est dans le sous dossier /kde4

Dans ce cas, sais-tu comment adapter cette commande pour regarder aussi dans les sous dossiers ? (je suis une bille en bash)

Edit: j'ai trouvé smile

-$ grep -rl "AudioVideo;Player" /usr/share/applications/
/usr/share/applications/vlc.desktop
/usr/share/applications/kde4/kmplayer.desktop

Bon ben.. y'a plus qu'à !

Dernière modification par Gaara (Le 15/09/2014, à 17:45)


Kubuntu 18.04 x64
Un terminal tactile Raspberry Pi et Odroid

                                        <code>zenity  --question --title "Alert"  --text "Microsoft Windows has been found! Would you like to remove it?"</code>

Hors ligne

#4 Le 15/09/2014, à 18:48

melixgaro

Re : [python GTK] Faire choisir une application à un utilisateur (résolu)

salut Gaara,
je ne suis pas sûr que ta méthode soit fiable. je ferai plutôt ceci. voici un bout de code que j'ai probablement copié de quelque part sur le net et qui simule en python la fonction bash 'which'

# modules
import os
import sys


# code
def which(Program):
    """ Check for the existence of the given program in the PATH.

    If only the program name is given, it searches the PATH variable. If found, it checks for existence and executability, and return the complete path to the program if sucess.
    If a path is detected in the given variable, it simply checks that the file exists and is executable.
    None is returned in any other case.
    """

    def is_exec(Program):
        """ Check for existence and executability of the provided file.
        """
        return os.path.isfile(Program) and os.access(Program, os.X_OK) # os.X_OK allows to test the executability of the file

    ProgramPath, ProgramName = os.path.split(Program) # separate path and filename

    if ProgramPath:
        if is_exec(Program):
            return Program

    else:
        for path in os.environ["PATH"].split(os.pathsep):
            Program = os.path.join(path, ProgramName)
            if is_exec(Program):
                return Program

    return None # everything has failed if we get here

ça donne ceci :

In [3]: which("vlc")
Out[3]: '/usr/bin/vlc'
[5]: which("vvllcc") # Return None

Pour ton problème spécifique, je ferai une boucle comme ceci pour tester la présence des lecteurs multimédia

ListPlayers = ["vlc", "mplayer", "totem"]
ListAvailable = []
for player in ListPlayers:
   if which(player):
     ListAvailable.append(player) 

ce qui construit la liste des lecteurs dispo


Linux depuis ~2007. Xubuntu seulement.

Hors ligne

#5 Le 15/09/2014, à 18:55

melixgaro

Re : [python GTK] Faire choisir une application à un utilisateur (résolu)

chez moi, ta commande grep me sort

/usr/share/applications/clementine.desktop
/usr/share/applications/exmplayer.desktop
/usr/share/applications/minitube.desktop
/usr/share/applications/musique.desktop
/usr/share/applications/parole.desktop
/usr/share/applications/smplayer.desktop
/usr/share/applications/vlc.desktop

clementine se contente de l'audio et minitube, c'est pour accéder aux vidéos de ioutioube


Linux depuis ~2007. Xubuntu seulement.

Hors ligne

#6 Le 15/09/2014, à 19:10

Gaara

Re : [python GTK] Faire choisir une application à un utilisateur (résolu)

Salut melixgaro,

Si je comprend bien cette méthode comparerait une liste pré-définie à une liste que retourne wich ? Mais si un logiciel n'est pas incluse dans la liste pré-existante, le logiciel ne sera pas détecté ?
Il y a tellement de lecteurs différents que ça serait difficile de tous les lister à mon avis!
Avec ma méthode, ça sélectionne tous les lecteurs (y compris les lecteurs audio effectivement), mais l'utilisateur n'est pas bête, il ne choisira pas un lecteur qui lit seulement l'audio pour lire une vidéo..
En fait je voulais l'équivalent de "ouvrir avec..." donc avec un choix de logiciel assez large.

Edit: C'est bizarre que clementine soit détecté, car ni Audacious, ni Amarok n'est séléctionné avec le grep. Les .desktop sont un peu créés à la louche!! tongue
Edit2: je comprend mieux, car pour Audacious: Categories=AudioVideo;Audio;Player;GTK; et non pas AudioVideo;Player

Dernière modification par Gaara (Le 15/09/2014, à 19:24)


Kubuntu 18.04 x64
Un terminal tactile Raspberry Pi et Odroid

                                        <code>zenity  --question --title "Alert"  --text "Microsoft Windows has been found! Would you like to remove it?"</code>

Hors ligne

#7 Le 15/09/2014, à 19:21

melixgaro

Re : [python GTK] Faire choisir une application à un utilisateur (résolu)

Oui je comprends bien ton idée. Mais si tu mets dans la liste vlc, mplayer, totem, parole, smplayer, exmpalyer, gmplayer, gnome-mplayer, ça couvre déjà l'essentiel des cas. Tu pourrais faire une liste prédéfinie plus un champ « Autre » où l'utilisateur peut marquer l'application qu'il veut (si elle n'est pas dans la liste) (et la première chose à faire est de vérifier que l'application inscrite est dans le PATH avec par ex. la fonction which ci-dessus wink)


Linux depuis ~2007. Xubuntu seulement.

Hors ligne

#8 Le 15/09/2014, à 19:22

melixgaro

Re : [python GTK] Faire choisir une application à un utilisateur (résolu)

Gaara a écrit :

Edit: C'est bizarre que clementine soit détecté, car ni Audacious, ni Amarok n'est séléctionné avec le grep. Les .desktop sont un peu créés à la louche!! tongue

c'est exactement la réflexion que j'étais en train de me faire. tu sais les .desktop, c'est le créateur du .deb ou du programme qui s'en occupe. donc tu mets les mots-clefs que tu veux big_smile


Linux depuis ~2007. Xubuntu seulement.

Hors ligne

#9 Le 15/09/2014, à 19:30

Gaara

Re : [python GTK] Faire choisir une application à un utilisateur (résolu)

Nan mais ma commande recherche une seule chaine: "AudioVideo;Player"
Donc si les catégories ne sont pas dans cet ordre, ça ne détecte pas.
Du coup il faudrait adapter le grep avec deux chaines séparées, comme ça tout serait détecté.

Mais si tu mets dans la liste vlc, mplayer, totem, parole, smplayer, exmpalyer, gmplayer, gnome-mplayer

Tu oublies dragon-player, kmplayer (le lecteur que j'utilise si vlc n'arrive pas à lire), et d'autres! Justement je voulais éviter la liste, et détecter réellement les logiciels installés smile


Kubuntu 18.04 x64
Un terminal tactile Raspberry Pi et Odroid

                                        <code>zenity  --question --title "Alert"  --text "Microsoft Windows has been found! Would you like to remove it?"</code>

Hors ligne

#10 Le 15/09/2014, à 19:38

melixgaro

Re : [python GTK] Faire choisir une application à un utilisateur (résolu)

je n'ai pas la culture kde, donc je n'ai pas pensé à kmplayer big_smile big_smile
je ne connais pas dragon-player par contre.


Linux depuis ~2007. Xubuntu seulement.

Hors ligne

#11 Le 15/09/2014, à 19:40

Gaara

Re : [python GTK] Faire choisir une application à un utilisateur (résolu)

Du coup la commande

grep -rl "AudioVideo\|Player" /usr/share/applications/

renvoie bien plus d'entrées... mais c'est pas cette commande qu'il faut faire:
Ça c'est mieux,

grep -rl "AudioVideo" /usr/share/applications/ | grep -rl "Player" /usr/share/applications/
/usr/share/applications/vlc.desktop
/usr/share/applications/xbmc.desktop
/usr/share/applications/audacious.desktop
/usr/share/applications/kde4/amarok.desktop
/usr/share/applications/kde4/amarok_containers.desktop
/usr/share/applications/kde4/kmplayer.desktop

6 entrées chez moi, ça donne quoi de ton côté?


Kubuntu 18.04 x64
Un terminal tactile Raspberry Pi et Odroid

                                        <code>zenity  --question --title "Alert"  --text "Microsoft Windows has been found! Would you like to remove it?"</code>

Hors ligne

#12 Le 15/09/2014, à 19:42

Gaara

Re : [python GTK] Faire choisir une application à un utilisateur (résolu)

dragon-player est installé par défaut avec KDE, mais je l'ai supprimé pour kmplayer. drgon-player ne fonctionnait pas bien.
mais bon, c'est un exemple, il faut penser à toutes les distribs!


Kubuntu 18.04 x64
Un terminal tactile Raspberry Pi et Odroid

                                        <code>zenity  --question --title "Alert"  --text "Microsoft Windows has been found! Would you like to remove it?"</code>

Hors ligne

#13 Le 15/09/2014, à 19:48

melixgaro

Re : [python GTK] Faire choisir une application à un utilisateur (résolu)

ta commande donne ça

/usr/share/applications/radiotray.desktop
/usr/share/applications/xnoise.desktop
/usr/share/applications/exmplayer.desktop
/usr/share/applications/rhythmbox.desktop
/usr/share/applications/banshee-media-player.desktop
/usr/share/applications/audacious.desktop
/usr/share/applications/rhythmbox-device.desktop
/usr/share/applications/kde4/amarok.desktop
/usr/share/applications/kde4/amarok_containers.desktop
/usr/share/applications/banshee.desktop
/usr/share/applications/guayadeque.desktop
/usr/share/applications/xbmc.desktop
/usr/share/applications/banshee-audiocd.desktop
/usr/share/applications/smplayer.desktop
/usr/share/applications/minitube.desktop
/usr/share/applications/beatbox.desktop
/usr/share/applications/gnome-mplayer.desktop
/usr/share/applications/exaile.desktop
/usr/share/applications/clementine.desktop
/usr/share/applications/quodlibet.desktop
/usr/share/applications/musique.desktop
/usr/share/applications/vlc.desktop
/usr/share/applications/mplayer.desktop
/usr/share/applications/parole.desktop

bon je me suis trop lâché sur le apt-get install à une époque big_smile


Linux depuis ~2007. Xubuntu seulement.

Hors ligne

#14 Le 15/09/2014, à 19:50

Gaara

Re : [python GTK] Faire choisir une application à un utilisateur (résolu)

Mieux:

grep -rl "AudioVideo" /usr/share/applications/ | grep -rl "Player" /usr/share/applications/ | grep -rl "Media" /usr/share/applications/
/usr/share/applications/vlc.desktop
/usr/share/applications/xbmc.desktop
/usr/share/applications/mediainfo-gui.desktop
/usr/share/applications/kde4/kmplayer.desktop

Edit: En effet, t'es blindé niveau logiciels !

Dernière modification par Gaara (Le 15/09/2014, à 19:52)


Kubuntu 18.04 x64
Un terminal tactile Raspberry Pi et Odroid

                                        <code>zenity  --question --title "Alert"  --text "Microsoft Windows has been found! Would you like to remove it?"</code>

Hors ligne

#15 Le 15/09/2014, à 20:01

melixgaro

Re : [python GTK] Faire choisir une application à un utilisateur (résolu)

ta ligne de commande ne va pas. je viens de m'en rendre compte. à chaque fois tu refais un grep sur l'ensemble des .desktop. tu ne cumules pas les filtres.

fais uniquement

grep -rl "Media" /usr/share/applications/

et tu devrais obtenir les 4 lignes ci-dessus


Linux depuis ~2007. Xubuntu seulement.

Hors ligne

#16 Le 15/09/2014, à 20:05

Gaara

Re : [python GTK] Faire choisir une application à un utilisateur (résolu)

fais uniquement

grep -rl "Media" /usr/share/applications/

et tu devrais obtenir les 4 lignes ci-dessus

Ah oui ! big_smile
4 entrées trouvées. Ça me parait bien ça, tu as combien d'entrées avec cette ligne? (avec tous tes logiciels!!)


Kubuntu 18.04 x64
Un terminal tactile Raspberry Pi et Odroid

                                        <code>zenity  --question --title "Alert"  --text "Microsoft Windows has been found! Would you like to remove it?"</code>

Hors ligne

#17 Le 15/09/2014, à 20:08

melixgaro

Re : [python GTK] Faire choisir une application à un utilisateur (résolu)

/usr/share/applications/mediainfo-gui.desktop
/usr/share/applications/xnoise.desktop
/usr/share/applications/exmplayer.desktop
/usr/share/applications/mediathekview.desktop
/usr/share/applications/ghb.desktop
/usr/share/applications/banshee-media-player.desktop
/usr/share/applications/gnome-disks.desktop
/usr/share/applications/banshee.desktop
/usr/share/applications/xbmc.desktop
/usr/share/applications/banshee-audiocd.desktop
/usr/share/applications/smplayer.desktop
/usr/share/applications/thunar-volman-settings.desktop
/usr/share/applications/gnome-mplayer.desktop
/usr/share/applications/vlc.desktop
/usr/share/applications/mplayer.desktop
/usr/share/applications/parole.desktop

16 en tout


Linux depuis ~2007. Xubuntu seulement.

Hors ligne

#18 Le 15/09/2014, à 20:11

melixgaro

Re : [python GTK] Faire choisir une application à un utilisateur (résolu)

et ça te sort mediainfo (faux-positif) et xbmc (un peu lourd non ?)


Linux depuis ~2007. Xubuntu seulement.

Hors ligne

#19 Le 15/09/2014, à 21:12

Gaara

Re : [python GTK] Faire choisir une application à un utilisateur (résolu)

Ouais.. mais au moins le choix est complet ! Après, on peut enlever mediainfo...
Car la commande

xbmc video.mkv 

fonctionne, si c'est ce que veut l'utilisateur, ça fonctionnera !
Après, en général, si on clique sur un tel bouton c'est qu'on cherche un logiciel spécifique, au moins il sera dans la liste (c'est le but du truc). Pas certain avec une liste pré-établie. (imagine qu'un lecteur change de nom, comme bientôt xbmc)


Kubuntu 18.04 x64
Un terminal tactile Raspberry Pi et Odroid

                                        <code>zenity  --question --title "Alert"  --text "Microsoft Windows has been found! Would you like to remove it?"</code>

Hors ligne

#20 Le 15/09/2014, à 22:35

melixgaro

Re : [python GTK] Faire choisir une application à un utilisateur (résolu)

boarf, je reste un peu sceptique. je trouve dommage que des intrus se trouvent dans la liste... c'est pour dpluzz ou c'est un autre projet ?


Linux depuis ~2007. Xubuntu seulement.

Hors ligne

#21 Le 15/09/2014, à 23:01

Gaara

Re : [python GTK] Faire choisir une application à un utilisateur (résolu)

Ouais, c'et pour dpluzz. Et il n'y  a pas une commande pour trouver les logiciels qui ouvrent les .mkv ?


Kubuntu 18.04 x64
Un terminal tactile Raspberry Pi et Odroid

                                        <code>zenity  --question --title "Alert"  --text "Microsoft Windows has been found! Would you like to remove it?"</code>

Hors ligne

#22 Le 15/09/2014, à 23:23

melixgaro

Re : [python GTK] Faire choisir une application à un utilisateur (résolu)

ben sinon faut utiliser les types MIME (dans les .desktop), mais là encore c'est un peu la jungle, pas toujours bien défini, plusieurs dénominations pour le même truc...


Linux depuis ~2007. Xubuntu seulement.

Hors ligne

#23 Le 15/09/2014, à 23:38

Gaara

Re : [python GTK] Faire choisir une application à un utilisateur (résolu)

A la limite, je préfère créer une liste avec des mots clé (settings, gui, containers, etc) pour éliminer les applis qui n'ont rien à voir avec un player, non?


Kubuntu 18.04 x64
Un terminal tactile Raspberry Pi et Odroid

                                        <code>zenity  --question --title "Alert"  --text "Microsoft Windows has been found! Would you like to remove it?"</code>

Hors ligne

#24 Le 15/09/2014, à 23:46

melixgaro

Re : [python GTK] Faire choisir une application à un utilisateur (résolu)

comme je te l'ai dit, je penche plutôt pour une liste prédéfinie, quitte à laisser un champ vide pour que l'utilisateur comble une lacune. en plus, pour bien faire, je dirais qu'il faudrait vérifier dans le .desktop le nom de la commande... il doit bien exister un cas où le .desktop ne s'appelle pas <commande>.desktop

en plus le champ vide permettrait à l'utilisateur de mettre une commande personnalisée, genre vlc --fullscreen (pas sûr de la syntaxe, mais y a une option dans le genre)


Linux depuis ~2007. Xubuntu seulement.

Hors ligne

#25 Le 16/09/2014, à 03:11

melixgaro

Re : [python GTK] Faire choisir une application à un utilisateur (résolu)

autres pistes :

pour avoir l'application par défaut pour un type MIME donné :

$ xdg-mime query default "video/x-matroska"

(paraît pas fiable, xdg-mime m'annonce totem mais xdg-open utilise parole ; voir ci-après)

pour ouvrir un fichier avec l'application par défaut associée au type MIME

$ xdg-open video.mkv   # lance parole chez moi

Linux depuis ~2007. Xubuntu seulement.

Hors ligne