/var/log/jynus

/var/log/jynus

Blog personal de Jynus

/var/log/jynus RSS Feed
 
 
 
 

Creando “servicemenus” en KDE4

Supongamos que tenemos que realizar una tarea repetitiva varias veces en un escritorio Linux/KDE4. Para facilitarnos la vida, creamos un script en Bash para automatizar todo el proceso. Por ejemplo, el siguiente script automatiza, mediante la utilidad convert de ImageMagick, la transformación de una o varias imágenes al formato JPG y con un tamaño y calidad dadas:

jynus@clonmel2:~> cat ~/bin/resize.sh
#!/bin/sh
SIZE=1280
QUALITY=90

for FILE in "$@"; do
   convert "$FILE" -quality $QUALITY -resize 1280x1280\> \
"`dirname "$FILE"`/${SIZE}px-`basename "${FILE%.[^.]*}"`.jpg"
done

Sin embargo, podemos facilitarnos la vida aún más añadiendo esta utilidad a los menús contextuales en Konqueror y Dolphin, que aparecen al pulsar con el botón derecho > submenú acciones, para hacer más accesible la ejecución de ciertas tareas sobre determinados tipos de archivo. Para ello debemos crear una nueva entrada en los denominados “ServiceMenus”. Es relativamente fácil: para definir una nueva acción, tenemos que generar un archivo de extensión .desktop en el directorio ServiceMenus que se encuentrará en:

/usr/share/kde4/services/ (para todos los usuarios)
~/.kde4/share/kde4/services/ (sólo para el usuario actual)

El lugar exacto puede variar ligeramente entre distribuciones (ejecutar kde4-config --path services para averiguar el lugar exacto). Si dicho directorio no existe, lo cual ocurrirá el caso de utilizar el directorio de usuario, tendremos que crearlo nosotros mismos.
Este archivo tendrá la siguiente pinta (se pueden definir más de una acción por archivo), que explicaré poco a poco:

jynus@clonmel2:~> cat /usr/share/kde4/services/ServiceMenus/resize.desktop
[Desktop Entry]
Encoding=UTF-8
ServiceTypes=KonqPopupMenu/Plugin,image/*
Type=Service
Actions=resizeImages;
TryExec=convert

[Desktop Action resizeImages]
Name=Redimensionar
Icon=image-jpeg
Exec=/home/jynus/bin/resize.sh %F

“ServiceTypes=” define sobre qué tipo de archivos vamos a poder realizar la acción (tipo mime). Por ejemplo, para vídeos sería video/*; para vídeos en formato avi, video/x-msvideo, etc. Para casos especiales como “todos los archivos UNIX” (incluido dispositivos, pipes, etc.), sería all/all, para los archivos “normales”, all/allfiles y para los directorios, inode/directory.
Actions=marca, separados por punto y coma, los nombres de las acciones que definiremos a continuación. En este caso sólo definiremos una, denominada resizeImages.
En la definición de la acción, le asignaremos un nombre (que será el que aparezca en el menú contextual), un icono ver los disponibles en /usr/share/icons/default.kde4/*/actions/ y el comando que finalmente se ejecutará. En esta orden, podremos indicar mediante %f o %F, respectivamente, el archivo o conjunto de varios archivos (si el comando acepta varios parámetros) sobre los cuales se aplica esta función. En nuestro caso, tan sólo llamamos al script que mostrábamos antes para obtener el resultado final:

Servicemenus

Servicemenus

Facebook Twitter Menéame Delicious LinkedIn Google

2 Responses to “Creando “servicemenus” en KDE4”

  1. 1
    vic:

    wow! gracias, muy útil lo de añadirlo al menú contextual!

    Creo que seguiré mirando tu blog, hay cosicas interesantes!

    Saludos,
    vic.

  2. 2
    stertor:

    Gracias, funciono muy bien tambien lo aplique para el thunderbird

    http://www.kde-apps.org/content/show.php/Thunderbird+Service+Menu?content=19328

Leave a Reply