DCOP
Présentation de DCOP
Présentation
DCOP (Desktop COmmunication Protocol) est un service interne à KDE permettant de communiquer avec les applications KDE. Vous allez donc pouvoir communiquer avec ces applications grâce à votre shell. Cela inclut la récupération d'informations, ou la demande d'exécution d'actions à ces applications.
DCOP est intégré aux librairies de KDE. Vous n'avez pas à vous soucier de l'installation et de la configuration de DCOP. Si vous avez installé Kdelib (une version au moins égale à 2.0) sur votre distribution, il se lancera automatiquement.
Les programmeurs d'une application KDE ne sont pas obligés d'utiliser DCOP. Mais cela constitue certainement un plus. Pour une application, un programmeur aura donné la possibilité à l'utilisateur de faire un certain nombre d'appels.
Quant à la nature des appels DCOP que l'utilisateur final pourra faire à partir de son shell, il s'agit ni plus ni moins que de fonctions, avec tout ce que cela implique : une fonction a un nom, des arguments et un résultat. L'utilisateur fera appel à la fonction grâce au nom de la fonction, et en fonction des arguments qu'il aura entré, la fonction lui retournera un résultat. Ce résultat peut être une information affichée et/ou une action que va effectuer le programme.
Utilisation
Nous allons ici aborder la façon dont l'utilisateur va pouvoir communiquer avec le service DCOP à partir de son shell. L'utilisation de DCOP est très simple, elle se fait par la commande dcop
.
La syntaxe pour faire un appel à une fonction est la suivante :
Avec | APPLICATION | : | C'est le nom de l'application que l'on vise. | |
INTERFACE | : | Les fonctions DCOP d'une application sont regroupées par interface. | ||
FONCTION | : | C'est le nom de la fonction que l'on souhaite appeler. | ||
ARGUMENTS | : | Ce sont les arguments que l'on souhaite passer à la fonction. Il peut y en avoir un, plusieurs ou aucun. S'il y a plusieurs arguments, il suffit de les séparer par un espace. |
Mais heureusement, vous n'êtes pas obligés de connaître toutes ces informations par cœur.
- Si vous entrez juste
dcop
, vous obtiendrez la liste des applications qui ont ouvert une interface DCOP. - Si vous entrez alors
dcop APPLICATION
, vous obtiendrez la liste des interfaces DCOP disponibles pour cette application. Les applications sont désignées par leur nom. - Si vous entrez maintenant
dcop APPLICATION INTERFACE
, vous obtiendrez la liste des fonctions qui sont à votre disposition pour cette interface. Et pour chaque fonction, vous obtiendrez le type de résultat auquel vous devez vous attendre et les arguments nécessaires pour la fonction : c'est le prototype de la fonction. Il se présente sous la forme :TYPE_RETOURNÉ NOM_FONCTION(TYPE_DES_ARGUMENTS)
.
Exemple
Maintenant que je vous ai présenté le fonctionnement basique de DCOP, il est temps de passer à la pratique avec un exemple.
Ouvrez une console sur KDE.
Entrer la commande dcop
pour afficher la liste des applications accessibles. Vous obtiendrez alors une liste telle que celle-ci :
KWeatherService
konsole-7205
kwin
kicker
amarok
kded
knotify
kio_uiserver
kcookiejar
konqueror-7327
rssservice
korgac
konsole-7165
klauncher
khotkeys
kopete
kdesktop
korn
klipper
ksmserver
konqueror-5837
Pour utiliser une application que tout le monde a, essayons avec KWin (le gestionnaire de fenêtres de KDE). Affichons maintenant les interfaces DCOP ouvertes pour KWin :
qt
KWinInterface (default)
MainApplication-Interface
Voyons alors les fonctions de "KWinInterface" :
QCStringList interfaces()
QCStringList functions()
ASYNC cascadeDesktop()
ASYNC unclutterDesktop()
ASYNC reconfigure()
ASYNC killWindow()
void refresh()
void doNotManage(QString)
void showWindowMenuAt(unsigned long int winId,int x,int y)
void setDesktopLayout(int orientation,int x,int y)
bool setCurrentDesktop(int)
int currentDesktop()
void nextDesktop()
void previousDesktop()
void circulateDesktopApplications()
Intéressons-nous dans un premier temps à la fonction int currentDesktop()
. Pour ceux qui ne sont pas habitués à ce type de syntaxe (que l'on retrouve en C par exemple), le int
représente le résultat de la fonction. Là, c'est un entier. Entre les parenthèses, il n'y a rien, ça veut donc dire qu'il n'y a pas d'argument à transmettre à la fonction. Il ne reste plus qu'à tester :
4
La fonction m'a donc retourné un 4
. Il n'y a pas de description pour cette fonction, mais son nom est assez explicite : on imagine bien qu'elle m'a renvoyé le numéro du bureau sur lequel j'étais, en l'occurence le bureau 4.
Essayons maintenant la fonction void nextDesktop()
de cette même interface. Le void
au début m'informe que cette fonction ne renvoie rien. Je m'attends donc à ce que l'appel de cette fonction effectue une action plutôt que de renvoyer une information. Ainsi, en entrant la commande :
Je me retrouve sur le bureau suivant, dans mon cas soit le 5, soit le 1 (les bureaux tournent en boucle, si le 4 est mon dernier, je reviens au 1). Encore une fois, le nom de la fonction est assez explicite.
Essayons maintenant une fonction avec un argument : bool setCurrentDesktop(int)
. Comme vous l'imaginez, cette fonction va permettre d'afficher le bureau que l'on souhaite. Le bool
au début m'informe que la fonction va me renvoyer un booléen, soit VRAI (true) ou FAUX (false). Vraisemblablement, le "VRAI" est obtenu si le changement a pu s'effectuer. Entre les parenthèses, il y a cette fois un int
, c'est l'argument que l'on doit donner à la fonction. Ici, c'est donc un entier. Vous imaginez bien que cet entier va représenter le bureau que l'on souhaite afficher. Ainsi, pour afficher le bureau 2 :
KDCOP
KDCOP est une application KDE qui répertorie toutes les entrées DCOP actives. Vous pouvez vous y référer pour visualiser facilement les appels que vous pouvez faire. Cette application est accessible en lançant la commande kdcop
.
En plus de visualiser la liste des entrées possibles, vous pouvez y faire directement vos appels.
Application
Vous allez pouvoir utiliser les possibilités de DCOP à plusieurs niveaux :
- Vous allez pouvoir inclure ce genre de communication dans vos propres applications KDE. Pour cela, je vous renvoie à La Documentation de l'API.
- Cela vous permet d'étendre vous possibilités de scripts en pilotant les applications KDE. Par exemple, pour Amarok (lecteur multimédia de KDE) rien ne vous empêche de créer un script qui en fonction du pourcentage de la piste lue, revient soit au début de la chanson, soit à la chanson précédente. Ça peut être utilisé quand on configure les touches multimédia de son clavier.
- Kommander : c'est une application qui permet à partir d'une interface de lier des commandes shell. Kommander est une application qui repose beaucoup sur DCOP, car la communication entre les différents composants de l'interface est assurée par DCOP. Pour plus de détails, je vous renvoie à la page de Kommander sur KDE-Apps.org.
Sources
Copyright
Copyright © 29/12/2004, Teotihuacan
Ce document est publié sous licence Creative Commons Attribution, Partage à l'identique, Contexte non commercial 2.0 : http://creativecommons.org/licenses/by-nc-sa/2.0/fr/ |