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 03/05/2015, à 13:29

PierreDeQuebec

Impossible d'exécuter un script lancer en cliquant sur une icône

Bonjour,

Depuis mon passage à 15.04, mon petit script for utile ne s'exécute plus lorsque je clique sur l'icône. Pourtant le fichier est en mode "exécutable". Avez-vous une solution à ce problème?

Voici le script (cela peut-être utile pour d'autre).

#!/bin/bash
     
# Copier dans le presse papier le no de carte
qdbus org.kde.klipper /klipper setClipboardContents "12345690123456789"

Merci.

Hors ligne

#2 Le 03/05/2015, à 13:38

abecidofugy

Re : Impossible d'exécuter un script lancer en cliquant sur une icône

ça doit être le même bug qu'ici : https://bugs.kde.org/show_bug.cgi?id=346655

Hors ligne

#3 Le 03/05/2015, à 13:55

PierreDeQuebec

Re : Impossible d'exécuter un script lancer en cliquant sur une icône

Pas tout à fait. Mais, j'ai eu l'idée d'essayer de lancer le script dans Konsole et voici le résultat.

maison@maison-xx-yyyy:~/Documents/Programmes$ ./AccesD
Cannot find '.setClipboardContents' in object /klipper at org.kde.klipper
maison@maison-xx-yyyy:~/Documents/Programmes$ 

Dans l'évolution vers qt5, est-à-dire que la méthode setClipboardContent n'existe plus?

Hors ligne

#4 Le 13/05/2015, à 00:59

PierreDeQuebec

Re : Impossible d'exécuter un script lancer en cliquant sur une icône

Bonjour,

Un rappel pour une réponse!

J'ai fait quelques recherches et je n'ai pas retrouver la méthode .setClipboardContents.

Une idée?

Pierre

Hors ligne

#5 Le 13/05/2015, à 02:43

MicP

Re : Impossible d'exécuter un script lancer en cliquant sur une icône

Après quelques recherches, je tombe sur une formulation plus précise (avec bash, il semblerait qu'il faille lui donner aussi tous ses parents) de la méthode :

…
qdbus org.kde.klipper /klipper org.kde.klipper.klipper.setClipboardContents "12345690123456789"
…

Dernière modification par MicP (Le 13/05/2015, à 02:44)

Hors ligne

#6 Le 13/05/2015, à 03:32

PierreDeQuebec

Re : Impossible d'exécuter un script lancer en cliquant sur une icône

Bonjour MicP,

J'ai essayé dans Konsole ta proposition et cela ne fonctionne pas!

Je reçois le message suivant:

Cannot find 'org.kde.klipper.klipper.setClipboardContents' in object /klipper at org.kde.klipper

Où puis-je trouver la liste des méthodes pour l'objet klipper? Je soupçonne des changements dans le passager de qt4 vers qt5.

Pierre

Hors ligne

#7 Le 13/05/2015, à 04:40

MicP

Re : Impossible d'exécuter un script lancer en cliquant sur une icône

Bonjour PierreDeQuebec,

Je n'ai pas trouvé d'autre information concernant la liste des objets et de leur méthodes (je m'y prends peut-être pas comme il faut).
Il existerait un qdbusviewer et même un qdbusviewer-qt5 mais il sera peut-être plus simple et efficace que tu utilise ton gestionnaire de paquetages pour le rechercher, il te fera des propositions en fonction de ton système installé.

Hors ligne

#8 Le 13/05/2015, à 11:59

PierreDeQuebec

Re : Impossible d'exécuter un script lancer en cliquant sur une icône

Bonjour MiCP,

Hier soir, j'ai passé une bonne demi heure à explorer tous les services énumérés dans qdbusviewer. Rien sur sur org.klipper et surtout rien sur la méthode setClipboardContent.

Ce matin, je penses avoir trouvé! J'ai d'abord démarrer explicitement klipper avec une ligne de commande pour voir si un message d'erreur ne serait pas généré. Et ensuite, j'ai vérifier dans qdbusviewer, et là, le service org.kde.klipper y était. Mon appel à la méthode setClipboardContent a fonctionné. Il semble donc que klipper ne soit pas démarrer automatiquement à l'ouverture d'une session et que  les fonctionnalité du  "clipboard" dans Plasma soit intégrer par une autre voie que klipper.

Pierre

Dernière modification par PierreDeQuebec (Le 13/05/2015, à 12:00)

Hors ligne

#9 Le 13/05/2015, à 16:45

MicP

Re : Impossible d'exécuter un script lancer en cliquant sur une icône

Bonjour PierreDeQuebec,

Merci beaucoup pour ton message.

Maintenant que tu as trouvé la solution à ce problème, c'est d'une évidence flagrante. smile

Et si ça se trouve, il n'était même pas nécessaire de reformuler la ligne de commande (message #5).

Hors ligne

#10 Le 28/06/2015, à 16:14

PierreDeQuebec

Re : Impossible d'exécuter un script lancer en cliquant sur une icône

Retour d'expérience.

L'appel à klipper a pour effet de démarrer klipper comme une application indépendante dans la barre des tâches. Curieusement, le premier clic démarre klipper et il me faut un second clic sur l'icône sur le bureau pour exécuter complètement le script! Par ailleurs, l'icône de klipper dans la barre des tâches est identique à celle de clipboard. Cela devient mêlant. Clairement, klipper et clipboard sont deux applications indépendantes l'une de l'autre. Comme clipboard est la nouvelle application qui remplace klipper, j'aimerais bien réécrire mon script en faisant appel à clipboard plutôt que klipper.

J'ai fait des recherches sur l'écriture de script dans KDE. Tout aboutit sur ECMA, une mouture de javascript. Cela m'apparaît trop compliqué par rapport à mon tout petit script mettant en oeuvre klipper.

Pierre

Hors ligne

#11 Le 29/06/2015, à 16:18

PierreDeQuebec

Re : Impossible d'exécuter un script lancer en cliquant sur une icône

Finalement ne trouvant rien sur le "scripting" de la nouvelle mouture de clipboard dans KDE avec qt5, j'ai contourner le problème en conservant l'appel à qdbus. J'ai glané quelques trucs sur internet pour peaufiner le script.

#!/bin/bash
     
# Copier dans le presse papier le no de carte indiquer par la variable CARTENO.

CARTENO="0123456789"


# Lancer le service klipper s'il n'est pas déjà en fonction.

if ! ps ax | grep '[k]lipper' > /dev/null
then
    # Démarrer klipper comme un processus indépendant du présent processus.
    nohup klipper &
fi

# Copier dans le presse papier.
qdbus org.kde.klipper /klipper setClipboardContents $CARTENO

# Tuer le processus klipper pour ne laisser que le service clipboard dans la barre des tâches.
# cf. http://stackoverflow.com/questions/3510673/find-and-kill-a-process-in-one-line-using-bash-and-regex 
# pour l'explication sur l'astuce du [x] avec grep.

#kill $(ps aux | grep '[k]lipper' | awk '{print $2}')

Ce n'est pas encore parfait, mais cela fonctionne. Le code est dans un fichier bash. Pour en faciliter l'accès, j'ai créer une entrée dans le menu KDE pointant vers mon script.

Hors ligne