Acciones desde el menú de contextual en KDE
2006-01-07 15:05 - m77
Copyright© 2005 M. Alejandro Bárcena Campos www.gulag.org.mx Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.2 or any later version published by the Free Software Foundation; with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license is included in the section entitled “GNU Free Documentation License”.
1. Advertencia
El siguiente documento se ofrece en buena fe. Bajo ninguna circunstancia me hago responsable por cualquier daño o pérdida de datos en cualquier forma a cualquier persona o equipo como consecuencia directa o indirecta de estas instrucciones.
Este documento se distribuye bajo la licencia: GNU FDL.
2. Introducción
Hay tareas o procesos repetitivos que aplicamos a ciertos archivos del mismo tipo. Para simplificar esta tarea a un par de clicks, KDE nos permite modificar las acciones que se aplicarán a los archivos. Lo que podrás hacer estara limitado por tu conocimiento, pericia e imaginación. Lo bueno de esto es que las primeras 2 tienen solución XD y que no esta ligado a sólo un lenguaje de programación.
3. Requisitos
- KDE
- Editor de texto (kate, vim, emacs, nano, pico, kwrite, etc…)
- Konqueror
- 10 minutos libres
4. Procedimiento
Para facilitar la explicación del procedimiento vamos a tomar un par de ejemplos prácticos y sencillos. Empezaré con uno muy sencillo: cambiar los permisos a mis scripts, sin meterme en detalles, ya habrá tiempo en el segundo ejemplo. Abre tu editor favorito, teclea o pega lo siguiente:
[Desktop Entry] ServiceTypes=application/x-shellscript Actions=SoloYo;MiGrupoyYo;Todos X-KDE-Submenu=Ejecucion [Desktop Action SoloYo] Name=Permiso de ejecucion para mi Icon=misc Exec=chmod u+x,g-x,o-x %F [Desktop Action MiGrupoyYo] Name=Permiso de ejecucion para mi grupo y para mi Icon=misc Exec=chmod u+x,g+x,o-x %F [Desktop Action SoloYo] Name=Permiso de ejecucion para todos Icon=misc Exec=chmod u+x,g+x,o+x %F
Lo guardamos en: ~/.kde/share/apps/konqueror/servicemenus/ con el nombre: ejecucion.desktop. Ahora en konqueror selecciona alguno de tus scripts, dale click derecho, selecciona acciones. Ahí encontraremos un submenú llamado Ejecucion, accede a él y selecciona una de las opciones.

Listo, ya creamos nuestro primer menú contextual. Ahora veremos un ejemplo más interesante y explicaremos las opciones principales.
En mi caso, desarrollo mucho en php y no me gustan los editores de páginas web. Así que crearemos un menú contextual que abra kwrite y nos genere la base del archivo para comenzar a desarrollar.
El primer paso es abrir tu editor favorito e insertar lo siguiente:
[Desktop Entry] ServiceTypes=inode/directory Actions=CrearPhp [Desktop Action CrearPhp] Name=Crear pagina Php Icon=kfm Exec=/home/m77/bin/crearphp.sh
Reemplaza m77 por tu nombre de usuario XD. Lo guardaremos en: ~/.kde/share/apps/konqueror/servicemenus/ con el nombre: crearphp.desktop
Si no existe el directorio servicemenus lo podemos crear.
En este caso el menú contextual estará disponible sólo para nuestro usuario; si queremos que todos nuestros usuarios tengan acceso a él, deberemos guardarlo en: $KDEHOME/share/apps/konqueror/servicemenus/
En debian la instalación default de KDE esta en /usr por lo tanto sería: /usr/share/apps/konqueror/servicemenus/
Ahora a explicar un poco lo que hemos hecho. El nombre del archivo puede ser cualquiera, siempre y cuando sea válido, único, y tenga la extensión .desktop.
Sobre el contenido:
[Desktop Entry] ServiceTypes=inode/directory Actions=CrearPhp
* Los archivos de configuración y de escritorio de KDE se dividen en secciones. Una sección empieza con un encabezado, permitiendo letras, números y espacios, encerrado entre corchetes []. Esto le indica a KDE que a partir de ahí, todas las opciones siguientes pertenecen a la sección, en este caso Desktop Entry hasta que aparezca una nueva sección.
ServiceTypes=inode/directory* La opción ServiceTypes definirá a qué archivos o carpetas es aplicable nuestro menú contextual. Se define por medio de mimetypes. En este caso aplica sólo a directorios o a un espacio en blanco dentro de konqueror. Podemos definir varios tipos separándolos por comas, sin espacios. Si no conoces el mimetype de algún archivo puedes buscarlo en File Associatons dentro del Control Panel, o bien en /etc/mime.types.
Además de los mimetypes existen 3 definiciones especiales:
- inode/directory para directorios o espacios en blanco.
- all/all para todos los archivos y directorios.
- all/allfiles para todos los archivos.
A partir de KDE 3.2 podemos usar typeglobs que nos permiten especificar todos los archivos del mismo grupo mimetype, por ejemplo: images/* o text/
Actions=CrearPhp* Esta opción define la acción que crearemos en nuestro menú contextual. Al igual que en ServiceTypes podemos definir varias acciones separándolas por punto y coma sin espacios. Por cada acción que definamos aquí habrá una sección donde se definirá lo que cada una hace. En este caso sólo hemos definido una acción, así que sólo habrá una sección de acciones.
[Desktop Action CrearPhp] Name=Crear pagina Php Icon=kfm Exec=/home/m77/bin/crearphp.sh
* Define una nueva sección, hay que tomar en cuenta que es sensible a mayúsculas y minúsculas, por lo cual debemos escribir el nombre tal cual lo pusimos en la sección pasada.
Name=Crear pagina Php* Esta opción define el texto de nuestro menú contextual.
Icon=kfm Esta opción define el ícono a mostrar, observa que no he incluido la extensión. Esta opción no es necesaria, sólo es para que se vea mejor.
Exec=/home/m77/bin/crearphp.sh %d Aquí definimos lo que se ejecutará al seleccionar esta opción del menú contextual. Podemos poner un comando, un programa, o como en este caso, un script.
Konqueror le pasa a nuestro menú contextual la URL y los archivos seleccionados por medio de símbolos.
%f Pasa sólo 1 nombre de archivo, aún cuando hayamos seleccionado varios. En general lo usaremos cuando sólo queramos trabajar con 1 archivo, sin embargo lo podemos emplear para varios archivos siempre y cuando el programa que llamemos sepa levantar una instancia por cada archivo.
%F Múltiples archivos.
%u Una URL
%U Múltiples URLs.
%d Directorio seleccionado o bien, directorio donde se encuentra el archivo seleccionado.
%D Múltiples directorios.
%n Archivo sin path.
%N Múltiples archivos sin path.
%k Archivo representado como una URL.
Bien, ya casi terminamos, sólo nos falta crear el script al que llamaremos. Abrimos nuestro editor de texto favorito y creamos el archivo: ~/bin/crearphp.sh e insertamos en él lo siguiente:
#!/bin/bash cd $1 kwrite & sleep 2 kwid=`dcop | grep kwrite | sort | tail -n 1` dcop $kwid EditInterface#1 insertText 0 0 '<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">' dcop $kwid EditInterface#1 insertLine 1 '<html lang="es-mx">' dcop $kwid EditInterface#1 insertLine 2 '<head>' dcop $kwid EditInterface#1 insertLine 3 '<meta http-equiv="content-type" content="text/html; charset=ISO-8859-1">' dcop $kwid EditInterface#1 insertLine 4 '<title>Php</title>' dcop $kwid EditInterface#1 insertLine 5 '<meta name="author" content="Alejandro Barcena Campos">' dcop $kwid EditInterface#1 insertLine 6 '</head>' dcop $kwid EditInterface#1 insertLine 7 '<body style="color: rgb(0,0,0); background-color: rgb(255,255,255);">' dcop $kwid EditInterface#1 insertLine 8 '<?php' dcop $kwid EditInterface#1 insertLine 9 '' dcop $kwid EditInterface#1 insertLine 10 '' dcop $kwid EditInterface#1 insertLine 11 '' dcop $kwid EditInterface#1 insertLine 12 '?>' dcop $kwid EditInterface#1 insertLine 13 '</body>' dcop $kwid EditInterface#1 insertLine 14 '</html>' dcop $kwid ViewCursorInterface#1-1 setCursorPosition 10 0
Lo guardamos y si seguiste el ejemplo anterior, puedes usar tu menú contextual para cambiarle los permisos, sino abre una consola y le damos los siguientes permisos:
chmod 750 ~/bin/crearphp.sh
Ahora abrimos el konqueror, seleccionamos un directorio o un espacio en blanco, damos click con el botón derecho del mouse, seleccionamos Actions y luego Crear pagina Php.
Muy sencillo ¿no?
5. Notas finales
Como vimos en el segundo ejemplo, podemos usar DCOP para manipular los programas corriendo en KDE. Te recomiendo leas la documentación de DCOP, es muy sencillo de usar y cuenta con mucha potencia. Para ejecutarlo desde la línea de comandos: dcop si prefieres un GUI: alt+F2 y teclea: kdcop.
6. Agradecimientos
A Carlos Rojas por externarme su decepción al ver que KDE no contaba con algunas acciones directas a cierto tipo de archivos… de ahí nació este pequeño documento.
A Leonardo Ibarra y a Carlos Rojas por insistir en la creación del GuLag.
A Viviana García por el diseño de nuestro logotipo.
7. Acerca del autor
Dudas, aclaraciones, correcciones y demás: alejandro(en)gulag.org.mx
Información sobre mi: alejandro.barcena.com.mx
Espero les haya servido…
Categorías: KDE







