Un Tip Moribundo de KDE (dcop)

En un episodio del podcast de wedoit4you.com mencione que uno de los atractivos de KDE es su poder de integracion, en el episodio pasado comente nuevamente sobre el tema y hable de DCOP en KDE.

Creo que es hora que ilustre un poco mas como utilizar DCOP (que va a ser remplazado por DBUS y que aun no le he echado mano).

Supon que quieres utilizar Ctrl+Alt+M para mostrar el escritorio, pon que no ten gusta tener que hacer click en el boton opcional que puedes poner en el kicker de KDE.

Sencillo, puedes acceder a esa funcionalidad del kicker, via dcop.

Si quieres hacerlo de manera grafica puedes abrir kdcop y explorar todos los metodos
disponibles del Kicker.

Vas a encontrar lo siguiente.

Si ejecutas ese metodo toggleShowDesktop() vas a esconder o mostrar todas las ventanas. Nice no?

Como accedes esto via linea de comandos…

Juega un poco, y siente el poder:

Si hacemos unicamente dcop

anleon@ubuntu:~$ dcop
konqueror-24277
kwin
kicker
katapult-7854
konsole-7907
amarok
kded
katapult-7816
knotify
kio_uiserver
kcookiejar
klauncher
knotes
khotkeys
kopete
kbluetoothd
kdesktop
klipper
ksmserver
kaccess

Nos mostrara una lista de programas que estan registrados en DCOP. Si quiero ver lo que hay adentro del kicker por ejemplo (El kicker es la barra donde tenemos los iconos, y programas abiertos)


anleon@ubuntu:~$ dcop kicker
qt
0x82a5a7c
0x82b7d04
ClockApplet
KDirNotify-1
KIO::Observer
KIO::Scheduler
MainApplication-Interface
MenuManager
Mixer0
Panel (default)
kicker
ksycoca

Veo que kicker, tiene un objeto “kicker” quizas este es el handle al Kicker como tal, veamos


anleon@ubuntu:~$ dcop kicker kicker
QCStringList interfaces()
QCStringList functions()
void configure()
void restart()
void addExtension(QString desktopFile)
void popupKMenu(QPoint globalPos)
void clearQuickStartMenu()
bool highlightMenuItem(QString menuId)
void showKMenu()
void toggleShowDesktop()
bool desktopShowing()
void showConfig(QString config,int page)
void showTaskBarConfig()
void configureMenubar()

Y ya tienen la idea…(dcop kicker kicker toggleShowDesktop) y ya se pueden imaginar lo pansa que pudo ser programar ese KDCOP, aunque estoy seguro que ellos utilizaron directamente la API de DCOP para mostrarte todo lo que esta disponible.

Entonces… supon que quieres por ejemplo, de una forma bien rebuscada, poner en Ctrl+Alt+M que se muestre o se escondan las ventanas abiertas…

Una forma podria ser, haces un programita bash en un directorio ~/bin que usas generalmente para utilidades creadas por ti…..


anleon@ubuntu:~$ cat ~/bin/toogleDesktop.sh
#!/bin/bash
dcop kicker kicker toggleShowDesktop
(Presiona Ctrl+D para guardar)

anleon@ubuntu:~$ chmod +x ~/bin/toggleDesktop.sh

Total que tienes tu tonto programa, si quieres lo ejecutas


anleon@ubuntu:~$ ./bin/toggleDesktop.sh

Magia!, se esconden, o se muestran las ventanas, vuelve a intentar para que veas.

Empiezas a ver el poder…

Ahora simplemente agrega este programa al submenu de utilidades de KDE (Si, donde esta la K, dale click,
y luego dale click derecho al menu de utilidades “Edit Menu”…), y asignale una combinacion de teclas Ctrl+Alt+M, y listo.

Ahora solo deja volar tu imaginacion, e imaginate todo lo que le puedes agregar a tu aplicacion, puedes interactuar con muchos programas que estan instalados en tu maquina con simples llamadas DCOP.

Ahora… el equipo de KDE anuncio recientemente que DCOP esta descontinuado (awww), pero al menos tienes una idea de que se trata, y ahora KDE va a utilizar D-BUS.

Voy a investigar al respecto, y cuando tenga un ejemplo de como utilizarlo, escribo un tutorial similar a este.

Saludos.