

Desktop COmmunication Protocol, DCOP (protocole de communication du bureau) est un mécanisme léger permettant la communication inter-processus. DCOP permet à l'utilisateur d'interagir avec les applications qui s'exécutent actuellement. KDE fournit deux programmes pour tirer parti de DCOP : dcop, un programme en ligne de commande et kdcop, un programme d'interface graphique (GUI).
Voici quelques remarques sur l'utilisation de dcop :
dcop [options] [application [object [function [arg1] [arg2] ... ] ] ]
Les applications qui peuvent ouvrir plusieurs fenêtres à la fois seront répertoriées sous la forme d'un PID d'<application>
Tous les arguments sont sensibles à la casse. 'setFullScreen' et 'setfullscreen' sont deux fonctions différentes.
Le jeton (token) de l'expression rationnelle * peut être utilisé dans l'application et les arguments de l'objet.
%dcopkonqueror-16006 konsole-8954kon*
Voici quelques exemples de commandes et leur sortie :
%dcopkonsole-8954konsole*
Une Konsole s'exécute avec un PID de 8954.
%dcopKBookmarkManager-.../share/apps/kfile/bookmarks.xml KBookmarkManager-.../share/apps/konqueror/bookmarks.xml KBookmarkNotifier KDebug MainApplication-Interface konsole (default) konsole-mainwindow#1 ksycoca session-1 session-2 session-3 session-4konsole-8954
Vous voyez ici qu'il y a quatre sessions actives.
%dcopQCStringList interfaces() QCStringList functions() int sessionCount() QString currentSession() QString newSession() QString newSession(QString type) QString sessionId(int position) void activateSession(QString sessionId) void nextSession() void prevSession() void moveSessionLeft() void moveSessionRight() bool fullScreen() void setFullScreen(bool on) ASYNC reparseConfiguration()konsole-8954konsole
Voici les options du programme Konsole principal.
%dcopQCStringList interfaces() QCStringList functions() bool closeSession() bool sendSignal(int signal) void clearHistory() void renameSession(QString name) QString sessionName() int sessionPID() QString schema() void setSchema(QString schema) QString encoding() void setEncoding(QString encoding) QString keytab() void setKeytab(QString keyboard) QSize size() void setSize(QSize size)konsole-8954session-1
Voici les options de la première session, session-1.
%dcopkonsole-8954konsolesetFullScreentrue
Cette commande place Konsole en mode plein écran.
Quand il y a plusieurs applications/objets, lequel devrez-vous utiliser ? Avez-vous une référence ?
%echoDCOPRef(konsole-7547,konsole)$KONSOLE_DCOP%dcopsession-6$KONSOLE_DCOPnewSession%dcopstartkonsole-9058 #!/bin/sh konsole=$(dcopstart konsole-script) session=$(dcop $konsole konsole currentSession) dcop $konsole $session renameSession Local session=$(dcop $konsole konsole newSession) dcop $konsole $session renameSession Remote session=$(dcop $konsole konsole newSession) dcop $konsole $session renameSession Code dcop $konsole $session sendSession 'cd /my/work/directory'konsole
Vous pouvez utiliser les boîtes de dialogue KDE depuis vos propres scripts pour combiner la puissance du scriptage shell d'UNIX® à la facilité d'utilisation de KDE.
kdialog --msgbox 'Vous avez de nouveaux messages !'kdialog --title 'Nouveaux messages' --msgbox 'Vous avez de nouveaux messages !'Le composant KDialog peut être remplacé par l'option --caption
kdialog --title 'Nouveaux messages' --msgbox 'Vous avez de nouveaux messages !' --dontagain myfile:mykeyEnregistre ce qu'il faut ou non afficher à nouveau dans $ (en insérant dans ce fichier les lignes suivantes :KDEHOME/share/config/myfile
[Notification Messages] mykey=false
À la place de --msgbox, vous pouvez également faire appel à --sorry et --error, comme approprié. Par exemple, vous pourriez utiliser kdialog --sorry 'Le réseau est inaccessible' ou kdialog --error 'Impossible d'ouvrir la boîte aux lettres'.
Il est également possible de créer des boîtes de messages qui acceptent une réponse oui ou non.
kdialog --yesno 'Voulez-vous vous connecter
à l'Internet ?' echo $?| Valeur de retour | Signification |
|---|---|
| 0 | Oui, OK, Continuer |
| 1 | Non |
| 2 | Annuler |
Veillez à enregistrer le résultat dans une variable si vous ne l'utilisez pas directement, la prochaine commande complète $? avec une nouvelle valeur. Vous pouvez faire appel à --dontagain ici également, car elle retient le choix de l'utilisateur et le retourne les fois suivantes sans jamais plus afficher la boîte de dialogue.
Les autres variations sont :
--warningyesnocomme --yesno, mais avec une icône différente
--warningcontinuecancelAvec les boutons et .
--warningyesnocancelAvec les boutons , et . Par exemple :
kdialog --warningyesnocancel 'Voulez-vous
enregistrer les changements ?'kdialog --inputbox "Saisissez votre nom :" "VotreNom"Le résultat s'affiche sur la sortie standard. Pour le placer dans une variable, vous pouvez utiliser name=$(kdialog --inputbox "Saisissez votre nom :" "VotreNom"). Le dernier argument est optionnel, il sert à préremplir la boîte de dialogue.
mot_de_passe=$(kdialog --password "Saisissez votre mot de passe :")L'option --dontagain ne fonctionne pas avec --inputbox ou --password
Il y a deux boîtes de dialogue qui permettent à l'utilisateur de faire un choix dans une liste :
--menuPermet à l'utilisateur de sélectionner un seul élément dans une liste.
--checklistPermet à l'utilisateur de sélectionner un ou plusieurs éléments dans une liste.
ville=$(kdialog --menu "Sélectionnez une ville" a Londres b Madrid c Paris d Berlin)$ville sera a, b, c ou d.
ville=$(kdialog --checklist "Sélectionnez des villes" a Londres off b Madrid on c Paris on d Berlin off)Madrid et Paris seront présélectionnées. Le résultat avec Madrid et Paris sélectionnées sera "b" "c".
Si vous ajoutez l'option --separate-output, elle placera b etc chacune sur une ligne propre, ce qui rend le résultat plus facile à traiter.
file=$(kdialog --getopenfilename $HOME) file=$(kdialog --getopenfilename $HOME "*.png *.jpg|Image Files") file=$(kdialog --getsavefilename $HOME/SaveMe.png) file=$(kdialog --getexistingdirectory $HOME)