Hay dos maneras de crear acciones:
Utilizar la aplicación de escritorio Crear acción
Crear manualmente una definición de acción
Para crear una acción manualmente se debe primero editar un archivo de base de datos. Este capítulo describe cómo crear definiciones de acciones manualmente.
"Creación de la cadena de ejecución para una acción COMMAND"
"Soporte de ventanas y emuladores de terminal para acciones COMMAND"
"Creación de acciones que ejecutan aplicaciones en sistemas remotos"
"Uso de variables en las definiciones de acciones y tipos de datos"
Para una introducción a las acciones, véase Capítulo 10.
Para obtener información sobre el uso de Crear acción, véase el capítulo Capítulo 11 .
Para obtener información de referencia sobre definición de acciones, véase la página del comando man dtactionfile(4).
Existen tres tipos básicos de acciones:
COMMAND
MAP
TT_MSG
La herramienta Crear acción se ha diseñado para crear ciertos tipos de acciones COMMAND y MAP. Todas las acciones TT_MSG deben crearse manualmente.
Para más información, consulte "Limitaciones de Crear acción".
Una acción command ejecuta un comando que inicia una aplicación o utilidad, una secuencia de shell o un comando del sistema operativo. La definición de la acción incluye el comando que se ha de ejecutar (EXEC_STRING).
Puede utilizarse la herramienta Crear acción para crear los tipos más comunes de acciones command. Sin embargo, se pueden dar situaciones en las que sea necesario crear la acción manualmente; por ejemplo, deberá crear una acción COMMAND manualmente si la acción especifica:
Varios archivos como argumentos, cada uno de ellos con un indicador distinto.
Invocación de acciones: la capacidad de las acciones para invocar otras acciones.
Comportamiento dependiente del número de argumentos: la capacidad de crear una acción que se comporta de modos distintos según el número de archivos pasados como argumentos.
Un sistema de ejecución remoto: la capacidad de ejecutar una aplicación en un sistema distinto de aquél que contiene la definición de la acción.
Cambio de usuario: la capacidad de ejecutar la acción como un usuario distinto (por ejemplo, solicitar la contraseña del usuario root y luego ejecutarse como root).
Una acción map es la está reasignada a otra acción, en vez de especificar directamente un comando o un mensaje de ToolTalk
La reasignación ofrece la capacidad de especificar nombres alternativos a las acciones. Por ejemplo, existe una acción command incorporada llamada IconEditor que inicia el Editor de iconos. La base de datos incluye también una acción Open, restringida por definición a archivos de tipo mapa de bits y mapa de píxels (mediante el campo ARG_TYPE), asignada a la acción IconEditor. Esto permite al usuario iniciar el editor de iconos seleccionando primero un archivo de mapa de bits o de mapa de píxels en el Gestor de archivos y luego Abrir en el menú Seleccionado.
Crear acción ofrece una capacidad de asignación limitada para las acciones Open y Print. Todas las otras acciones de tipo map deben crearse manualmente.
Las acciones TT_MSG envían un mensaje ToolTalk. Todas las acciones TT_MSG deben crearse manualmente.
Esta sección explica cómo crear un archivo de configuración para una definición de acción.
Los archivos de configuración que contienen definiciones de acciones deben cumplir los siguientes requisitos:
Los archivos deben utilizar la convención de nombrado nombre.dt
Los archivos deben hallarse en la ruta de búsqueda de bases de datos (acciones y tipos de datos). La ruta de búsqueda predeterminada es:
Acciones personales: DirectorioInicio/.dt/types
Acciones accesibles en el sistema: /etc/dt/appconfig/types/idioma
Acciones incorporadas: /usr/dt/appconfig/types/idioma. No se debe utilizar este directorio.
Para obtener información sobre cómo modificar la ruta de búsqueda de acciones y tipos de datos, véase "Establecimiento del valor de una ruta de búsqueda".
Abra un archivo de base de datos existente o cree uno nuevo.
Véase la sección anterior, "Archivos de configuración de acciones".
Cree la definición de la acción mediante la sintaxis:
ACTION nombre_acción { TYPE tipo_acción campo_acción ... }
donde:
nombre_acción: es el nombre utilizado para ejecutar la acción.
tipo_acción: es el COMMAND (predeterminado), MAP o TT_MSG.
campo_acción: es uno de los campos opcionales u obligatorios para este tipo de acción. Todos los campos constan de una palabra clave y un valor.
En este capítulo se tratan diversos campos de acción. Para más información, véase la página del comando man dtactionfile(4).
Guarde el archivo.
Si quiere que el icono de la acción sea exclusivo, cree un icono específico para la acción. La ubicación predeterminada para los iconos es:
Iconos personales: DirectorioInicio/.dt/icons
Iconos accesibles en el sistema: /etc/dt/appconfig/icons/idioma. El idioma predeterminado es C.
Para más información, consulte "Especificación de la imagen de icono utilizada por una acción".
Haga doble clic en Recargar acciones en el grupo de aplicaciones Herramientas_Escritorio.
Cree un archivo de acción para la acción; éste crea un icono en el Gestor de archivos o el Gestor de aplicaciones que representa la acción. (Si la acción inicia una aplicación, el icono se llama icono de aplicación.)
Para crear el archivo de acción, cree un archivo ejecutable con el nombre nombre_acción. Puede colocar el archivo en cualquier directorio para el que tenga permiso de escritura. Puede crear tantos archivos de acción como desee.
Siga estos pasos para crear una acción personal que inicia una aplicación de fax en el sistema remoto AppServerA. El comando para iniciar la aplicación de fax es:
/usr/fax/bin/faxcompose [nombre_archivo]
Cree el archivo DirectorioInicio/.dt/types/Fax.dt.
Escriba en el archivo la siguiente definición de acción:
ACTION FaxComposer { TYPE COMMAND ICON fax WINDOW_TYPE NO_STDIO EXEC_STRING /usr/fax/bin/faxcompose -c %Arg_1% EXEC_HOST AppServerA DESCRIPTION Ejecuta el creador de fax
}
Los campos WINDOW_TYPE y EXEC_STRING describen el comportamiento del sistema.
WINDOW_TYPE: la palabra clave NO_STDIO especifica que no tiene que ejecutarse la acción en una ventana de emulador de terminal.
Véase "Especificación del soporte de ventanas para la acción".
EXEC_STRING: la sintaxis %Arg_1% acepta un archivo soltado sobre el icono. Si se hace doble clic en el icono de la acción, ésta abre una ventana vacía del editor de faxes.
Véase "Creación de la cadena de ejecución para una acción COMMAND".
Guarde el archivo.
Utilice el editor de iconos para crear las siguientes imágenes de iconos en el directorio DirectorioInicio/.dt/icons:
fax.m.pm, tamaño 32 por 32 píxels
fax.t.pm, tamaño 16 por 16 píxels
Haga doble clic en Recargar acciones en el grupo de aplicaciones Herramientas_Escritorio.
Cree un archivo ejecutable llamado FaxComposer en un directorio para el que disponga de permiso de escritura (por ejemplo, su directorio de inicio).
Suponga que la mayoría de los archivos que envía por fax se crean con el editor de texto y son del tipo de datos TEXTFILE (archivos de nombre * .txt).
Los pasos siguientes agregan el elemento de menú 'Fax' en el menú Seleccionado del tipo de datos.
Abra el archivo DirectorioInicio/.dt/types/Fax.dt creado en el ejemplo anterior.
Agregue al archivo la siguiente definición de acción map:
ACTION Fax { ARG_TYPE TEXTFILE TYPE MAP MAP_ACTION FaxComposer }
Guarde el archivo.
Copie la definición de atributos de datos de TEXTFILE desde /usr/dt/appconfig/types/idioma/dtpad.dt a un nuevo archivo, DirectorioInicio/.dt/types/textfile.dt. Agregue la acción Fax en el campo ACTIONS.
DATA_ATTRIBUTES TEXTFILE { ACTIONS Open,Print,Fax ICON Dtpenpd ... }
Guarde el archivo.
Abra el Gestor de aplicaciones y haga doble clic en Recargar acciones en el grupo de aplicaciones Herramientas_Escritorio.
Para que las acciones nuevas o modificadas surtan efecto, el escritorio debe volver a leer la base de datos.
Abra el grupo de aplicación Herramientas_escritorio y haga doble clic en Recargar acciones
O bien, ejecute el comando:
dtaction ReloadActions
ReloadActions es el nombre de la acción cuyo icono está etiquetado como ``Recargar acciones''.
Así se vuelve a leer la base de datos de acciones cuando el usuario:
Inicia la sesión
Reinicia el Gestor del área de trabajo
Guarda una acción en la ventana Crear acción, seleccionando Guardar en el menú Archivo.
Un archivo de acción es un archivo creado para proporcionar una representación visual de la acción en el Gestor de archivos o el Gestor de aplicaciones.
Dado que el icono de un archivo de acción representa una acción, se denomina a veces icono de acción, pero si la acción subyacente inicia una aplicación, recibe el nombre de icono de aplicación.
Al hacer doble clic en el icono de acción, ésta se ejecuta. También se pueden soltar archivos sobre el icono de acción.
Por ejemplo, si la definición de la acción es:
ACTION MyFavoriteApp { EXEC_STRING Mfa -file %Arg_1% DESCRIPTION Ejecuta MyFavoriteApp ICON Mfapp }
el archivo de acción será un archivo ejecutable llamado MyFavoriteApp, el cual, en el Gestor de archivos y el Gestor de aplicaciones, utilizará la imagen de icono Maplf.tamaño .tipo. Si hace doble clic en el icono de MyFavoriteApp, se ejecutará la cadena de ejecución de la acción y la ayuda sobre el tema del icono será el contenido del campo DESCRIPTION ("Ejecuta MyFavoriteApp").
Si la definición de la acción incluye el campo LABEL, el archivo de acción estará etiquetado en el Gestor de archivos y el Gestor de aplicaciones con el contenido de este campo en lugar del nombre de archivo (action_name). Por ejemplo, si la definición de acción incluye:
ACTION MyFavoriteApp { LABEL Aplicación Favorita ... }
el icono de acción se etiquetará 'Aplicación favorita'.
Utilice el campo ICON para especificar el icono usado en el Gestor de archivos y el Gestor de aplicaciones para los iconos creados para la acción.
Si no especifica ningún icono, el sistema utilizará los archivos de imágenes de iconos de acción predeterminados /usr/dt/appconfig/icons/idioma/Dtactn.*.
El icono de acción predeterminado puede cambiarse mediante el recurso:
*actionIcon: nombre_archivo_icono
donde nombre_archivo_icono puede ser un nombre base o una ruta absoluta.
El valor del campo ICON puede ser:
Un nombre de archivo base
El nombre de archivo base es el nombre del archivo que contiene la imagen del icono menos los sufijos de tamaño ( m y t) y tipo de imagen (bm y pm). Por ejemplo, si los archivos se llaman GameIcon.m.pm y GameIcon.t.pm, utilice GameIcon.
Si utiliza el nombre de archivo base, los archivos de iconos deben estar ubicados en la ruta de búsqueda de iconos:
Iconos personales: DirectorioInicio/.dt/icons
Iconos accesibles en el sistema: /etc/dt/appconfig/icons/idioma
Una ruta absoluta al archivo del icono, que incluya el nombre de archivo completo
Deberá utilizar la ruta absoluta sólo si el icono no está ubicado en la ruta de búsqueda de iconos. Por ejemplo, si se coloca el archivo de icono GameIcon.m.pm en el directorio /doc/projects, que no está en la ruta de búsqueda de iconos, el valor del campo ICON sería /doc/projects/GameIcon.m.pm.
La tabla Tabla 12-1 muestra una lista de los tamaños de icono que debe crear y los nombres de archivo correspondientes.
Tamaño en píxels |
Nombre del mapa de bits |
Nombre del mapa de píxels |
---|---|---|
48 por 48 |
nombre.l.bm |
nombre.l.pm |
32 por 32 |
nombre.m.bm |
nombre.m.pm |
16 por 16 |
nombre .t.bm |
nombre .t.pm |
Se puede modificar cualquiera de las acciones disponibles en el sistema, incluidas las incorporadas.
Tenga cuidado al modificar la base de datos de acciones incorporadas, ya que están diseñadas para funcionar correctamente con las aplicaciones de escritorio.
Localice la definición de la acción que desea modificar.
Las ubicaciones predeterminadas para las definiciones de acciones son:
Acciones incorporadas: /usr/dt/appconfig/types/idioma
Acciones accesibles en el sistema: /etc/dt/appconfig/types/idioma
Acciones personales: DirectorioInicio/.dt/types
Posiblemente su sistema incluya ubicaciones adicionales. Para ver una lista de las ubicaciones que el sistema utiliza para las acciones, ejecute el comando:
dtsearchpath -v
Su sistema utiliza los directorios listados en DTDATABASESEARCHPATH.
Si es necesario, copie el texto de la definición de acción en un archivo nuevo o existente de uno de estos directorios:
Acciones accesibles en el sistema: /etc/dt/appconfig/types/idioma
Acciones personales: DirectorioInicio/.dt/types
Debe copiar las acciones incorporadas, ya que no es aconsejable editar los archivos del directorio /usr/dt/appconfig/types/idioma.
Edite la definición de la acción.
Cuando haya terminado, guarde el archivo.
Haga doble clic en Recargar acciones en el grupo de aplicaciones Herramientas_Escritorio.
Cuando el usuario invoca una acción, el sistema busca en la base de datos un nombre de acción que coincida. Si existe más de una acción con el mismo nombre, el sistema utiliza reglas de prioridad para decidir cuál debe utilizar.
Si no es aplicable ninguna otra regla, la prioridad se basa en la ubicación de la definición. La lista siguiente está ordenada de la prioridad más alta a la más baja:
Acciones personales (DirectorioInicio/.dt/types)
Acciones locales accesibles en el sistema (/etc/dt/appconfig/types/idioma)
Acciones remotas accesibles en el sistema (nombre_sistema:/etc/dt/appconfig/types/idioma). Los sistemas remotos en los que se realiza la búsqueda son los listados en la ruta de búsqueda de aplicaciones.
Acciones incorporadas (/usr/dt/appconfig/types/idioma)
Dentro de un directorio determinado, los archivos *.dt se leen por orden alfabético.
Las acciones restringidas por ARG_CLASS, ARG_TYPE, ARG_MODE o ARG_COUNT tienen prioridad sobre las no restringidas. (El valor predeterminado para estos cuatro campos es *.)
Cuando es aplicable más de una restricción, la prioridad en orden descendente es:
ARG_CLASS
ARG_TYPE
ARG_MODE
ARG_COUNT
Cuando existe más de un ARG_COUNT restringido, el orden de preferencia es, de mayor a menor:
Valor entero específico n
<n
>n
*
Por ejemplo, consideremos los siguientes fragmentos de definiciones de acciones:
ACTION EditGraphics # EditGraphics-1 { ARG_TYPE XWD ... }
ACTION EditGraphics # EditGraphics-2 { ARG_COUNT 0 ... }
ACTION EditGraphics # EditGraphics-3 { ARG_TYPE * ... }
Si hace doble clic en el icono de acción EditarGráficos se iniciará EditarGráficos-2, porque no se ha proporcionado ningún argumento y ARG_COUNT 0 tiene prioridad. Si se proporciona un argumento de archivo del tipo XWD, se utilizará EditarGráficos-1, porque especifica ARG_TYPE XWD. Para todos los demás argumentos de archivo se utiliza EditarGráficos-3.
Los requisitos mínimos de una acción COMMAND son dos campos -- ACTION y EXEC_STRING.
ACTION nombre_acción { EXEC_STRING cadena_ejecución }
La cadena de ejecución es la parte más importante de una definición de acción COMMAND. Utiliza una sintaxis similar a la de la línea de comandos que se ejecutaría en una ventana Terminal, pero incluye sintaxis adicional para manejar argumentos de archivo y de cadena.
Las cadenas de ejecución pueden incluir:
Argumentos de archivo o de otros tipos
Sintaxis de shell
Rutas absolutas o nombres de archivos ejecutables
Un argumento es la información que un comando o aplicación necesita para ejecutarse correctamente. Por ejemplo, examinemos la línea de comandos que se podría utilizar para abrir un archivo en el Editor de textos:
dtpad nombre_archivo
En este comando, nombre_archivo es un argumento de archivo del comando dtpad.
Las acciones, al igual que las aplicaciones y los comandos, pueden tener argumentos. Una acción COMMAND puede utilizar dos tipos de datos:
Archivos
Datos de cadena
La cadena de ejecución se ejecuta directamente, en lugar de hacerlo a través de un shell. Sin embargo, se puede invocar un shell de forma explícita en la cadena de ejecución.
Por ejemplo:
EXEC_STRING \ /bin/sh -c \ 'tar -tvf %(File)Arg_1% 2>&1 | \${PAGER:-more};\ echo '\\n*** Seleccione Cerrar en el menú Ventana para cerrar ésta ***''
Si su aplicación está ubicada en un directorio que aparece listado en la variable PATH, puede utilizar el nombre simple del ejecutable. Si la aplicación está en otro lugar, deberá utilizar la ruta absoluta al archivo ejecutable.
Utilice para EXEC_STRING la misma sintaxis que usaría para iniciar la aplicación desde una línea de comandos.
Esta cadena de ejecución es parte de una acción que inicia el cliente X xcutsel.
EXEC_STRING xcutsel
Esta cadena de ejecución inicia el cliente xclock con un reloj digital. La línea de comandos incluye una opción de línea de comandos, pero no necesita ningún argumento.
EXEC_STRING xclock -digital
Utilice esta sintaxis para el argumento de archivo:
%Arg_n%
o
%(File)Arg_n%
(File) es opcional, pues se supone que, de manera predeterminada, los argumentos proporcionados a Arg_n son archivos. (Véase "Interpretación de un argumento de archivo como si fuera una cadena" para conocer el uso de la sintaxis %(String)Arg_n%.)
Esta sintaxis permite al usuario soltar un objeto archivo de datos sobre el icono de la acción, para iniciar ésta con un argumento de archivo. Sustituye el argumento n de la línea de comandos. El archivo puede ser local o remoto.
Esta cadena de ejecución ejecuta wc -w mediante un archivo soltado como parámetro -carga.
EXEC_STRING wc -w %Arg_1%
Este ejemplo muestra un fragmento de una definición que sólo funciona con argumentos de directorio. Cuando se suelta un directorio sobre el icono de acción, ésta muestra una lista de todos los archivos del directorio que tienen permiso de lectura-escritura.
ACTION Lista_Writable_Files { ARG_TYPE FOLDER EXEC_STRING /bin/sh -c 's -l %Arg_1% | grep rw-' ... }
Utilice esta sintaxis para el argumento de archivo:
%(File)'solicitud'%
Esta sintaxis crea una acción que muestra una solicitud de nombre de archivo cuando el usuario hace doble clic en el icono de acción.
Por ejemplo, esta cadena de ejecución muestra un cuadro de diálogo que solicita el argumento de archivo del comando wc -w:
EXEC_STRING wc -w %(File)'Contar palabras en archivo:'%
Utilice esta sintaxis para el argumento de archivo:
%Arg_n'solicitud'%
o
%(File)Arg_n'solicitud'%
Esta sintaxis produce una acción que:
Acepta un archivo soltado como argumento de archivo.
Muestra un cuadro de diálogo que solicita un nombre de archivo cuando el usuario hace doble clic en el icono de acción.
Por ejemplo, esta cadena de ejecución ejecuta lp -oraw en un archivo soltado. Si se inicia la acción haciendo doble clic en el icono, aparece un cuadro de diálogo que solicita el nombre de archivo.
EXEC_STRING lp -oraw %Arg_1'Archivo a imprimir:'%
Utilice esta sintaxis para el parámetro no de archivo:
%"solicitud'%
o
%(String)'solicitud'%
(String) es opcional, dado que el texto entre comillas se interpreta, de manera predeterminada, como datos de tipo cadena. Esta sintaxis muestra un cuadro de diálogo que solicita datos que no sean archivos; no la utilice para solicitar un nombre de archivo.
Por ejemplo, esta cadena de ejecución ejecuta el comando xwd y solicita un valor para sumar a cada píxel:
EXEC_STRING xwd -add %'Sumar valor:'% -out %Arg_1'Nombre de archivo:'%
Utilice esta sintaxis para el argumento:
%(String)Arg_n%
Por ejemplo, esta cadena de ejecución imprime un archivo con una carátula que contiene el nombre de archivo, mediante el comando lp -tcarátula nombre_archivo.
EXEC_STRING lp -t%(String)Arg_1% %(File)Arg_1'Archivo a imprimir:'%
Especifique el shell en la cadena de ejecución:
/bin/sh -c 'comando' /bin/ksh -c 'comando' /bin/csh -c 'comando'
Esta cadena de ejecución ilustra una acción que utiliza reconducción de shell.
EXEC_STRING /bin/sh -c 'ps | lp'
Cadena de ejecución más compleja que requiere el proceso de shell y acepta un argumento de archivo.
EXEC_STRING /bin/sh -c 'tbl %Arg_1'Página del comando man:'% | troff -man'
Cadena de ejecución que requiere que el argumento sea un archivo comprimido. La acción descomprime el archivo y lo imprime mediante lp -oraw.
EXEC_STRING /bin/sh -c 'cat %Arg_1 'Archivo a imprimir:'% | \ uncompress | lp -oraw'
Hay tres procedimientos para que las acciones manejen múltiples argumentos de archivo:
Se puede ejecutar la acción repetidamente, una vez por cada argumento de archivo. Cuando EXEC_STRING contiene un único argumento de archivo y se proporcionan múltiples argumentos de archivo soltando varios archivos sobre el icono de acción, la acción se ejecuta por separado para cada uno de los argumentos.
Por ejemplo, si se proporcionan múltiples argumentos de archivo a la siguiente definición de acción:
ACTION DisplayScreenImage { EXEC_STRING xwud -in %Arg_1% ... }
la acción DisplayScreenImage se ejecuta repetidamente.
La acción puede utilizar dos o más argumentos de archivo no intercambiables. Por ejemplo:
xsetroot -cursor archivo_cursor archivo_máscara
requiere dos archivos únicos en un orden determinado.
La acción puede realizar el mismo comando de forma secuencial en cada argumento de archivo. Por ejemplo:
pr archivo [archivo ...]
imprimirá uno o varios archivos en un único trabajo de impresión.
Utilice una de las siguientes convenciones de sintaxis:
Si desea que la acción solicite los nombres de archivo, utilice esta sintaxis para cada argumento de archivo:
%(File)'solicitud'%
Utilice una cadena solicitud distinta para cada argumento.
Por ejemplo, esta cadena de ejecución solicita dos archivos.
EXEC_STRING xsetroot -cursor %(File)'Mapa de bits de cursor:'% \ %(File)'Mapa de bits de máscara:'%
Para aceptar archivos soltados, utilice esta sintaxis para cada argumento de archivo:
%Arg_n%
mediante diferentes valores de n para cada argumento. Por ejemplo:
EXEC_STRING diff %Arg_1% %Arg_2%
Utilice una de las siguientes convenciones de sintaxis:
Para crear una acción que acepte archivos soltados y ejecute un comando en la forma comando archivo 1 archivo 2 ..., utilice esta sintaxis para los argumentos de archivo:
%Args%
Para crear una acción que acepte varios archivos soltados o muestre una solicitud de un único archivo cuando se haga doble clic, utilice esta sintaxis para los argumentos de archivo:
%Arg_1'solicitud'% %Args%
La acción inicia el comando con el formato: comando archivo 1 archivo 2 ....
Esta cadena de ejecución crea una acción que ejecuta:
pr archivo 1 archivo 2
con múltiples argumentos de archivo.
EXEC_STRING pr %Args%
Esta cadena de ejecución crea una acción similar a la del ejemplo anterior, salvo que la acción muestra una solicitud al hacer doble clic en ella (sin argumentos de archivo).
EXEC_STRING pr %Arg_1'Archivo(s) a imprimir:'% %Args%
Para aceptar múltiples argumentos de archivo soltados y ejecutar una línea de comandos con el formato:
comando archivo 1 archivo 2 ...
utilice la sintaxis:
%Args%
Esta cadena de ejecución ejecuta una secuencia llamada Comprobar para múltiples archivos:
EXEC_STRING /usr/local/bin/Checkout \ %Arg_1'¿Qué archivo desea comprobar?'% %Args%
Esta cadena de ejecución ejecuta lp -oraw con múltiples archivos:
EXEC_STRING lp -oraw %Arg_1'Archivo a imprimir:'% %Args%
Existen diversos procedimientos para que las acciones COMMAND soporten ventanas en el escritorio.
Si la aplicación tiene su propia ventana, se puede escribir la acción de forma que no ofrezca soporte de ventanas adicional. Esta opción se utiliza también cuando una acción ejecuta un comando que no requiere entrada directa del usuario y no tiene salida.
Si la aplicación debe ejecutarse en una ventana de emulador de terminal, se puede escribir la acción de forma que abra una ventana y luego ejecute la aplicación. Existen diversas opciones de terminal.
Utilice el campo WINDOW_TYPE para especificar el tipo de soporte de ventanas que la acción requiere, tal como se muestra en la tabla Tabla 12-2.
Tabla 12-2 Campo WINDOW_TYPE y soporte de ventanas proporcionado
Soporte de ventanas proporcionado |
|
---|---|
Ninguno. Utilice NO_STDIO si la aplicación tiene su propia ventana, o si el comando no tiene salida visible. |
|
Ventana de emulador de terminal permanente. La acción abre una ventana de terminal que permanece abierta hasta que el usuario la cierra explícitamente. El usuario puede introducir datos en la ventana. Utilícelo con comandos que aceptan una entrada, producen una salida y luego terminan (por ejemplo, ls directorio). |
|
Ventana de emulador de terminal temporal. La acción abre una ventana de terminal que se cierra tan pronto como se completa el comando. Utilícelo con comandos de pantalla completa (por ejemplo, vi). |
Utilice el campo TERM_OPTS en la definición de la acción para especificar opciones de línea de comandos para el emulador de terminal.
Por ejemplo, la siguiente acción solicita el sistema de ejecución:
ACTION OpenTermOnSystemUserChooses { WINDOW_TYPE PERM_TERMINAL EXEC_HOST %(String)'Terminal remoto en:'% TERM_OPTS -title %(String)'Título de ventana:'% EXEC_STRING $SHELL }
El emulador de terminal predeterminado utilizado por las acciones es dtterm. Se puede cambiar este emulador de terminal por otro; se utiliza cuando la acción no especifica explícitamente el emulador de terminal que se debe utilizar.
El emulador de terminal utilizado por las acciones debe tener estas opciones de línea de comandos:
-title título_ventana
-e comando
El emulador de terminal predeterminado utilizado por las acciones viene determinado por dos recursos:
El recurso localTerminal especifica el emulador de terminal utilizado por las aplicaciones locales.
*localTerminal: terminal
Por ejemplo:
*localTerminal: xterm
El recurso remoteTerminal especifica el emulador de terminal utilizado por las aplicaciones remotas.
*remoteTerminal: sistema:terminal [,sistema:terminal...]
Por ejemplo:
*remoteTerminal: sysibm1:/usr/bin/xterm,syshp2:/usr/bin/yterm
Si se restringe una acción para un determinado tipo de argumentos, se perfecciona. Por ejemplo, es útil restringir una acción que invoca un visor de archivos PostScript únicamente a argumentos de archivo PostScript; con tal restricción, la acción devolverá un cuadro de diálogo de error si se especifica como argumento un archivo que no sea PostScript.
Puede restringir las acciones basándose en:
El tipo de datos del argumento de archivo.
El número de argumentos de archivo; por ejemplo, ningún argumento contra uno o más argumentos. Esto proporciona una conducta diferente al soltar archivos o hacer doble clic en el icono de la acción.
El modo de lectura/escritura del argumento.
Utilice el campo ARG_TYPE para especificar los tipos de datos para los cuales la acción es válida. Use el nombre de atributo de los datos.
Puede introducir una lista de tipos de datos, separando las entradas con comas.
Por ejemplo, la siguiente definición de acción asume que se ha creado un tipo de datos Gif.
ACTION Open_Gif { TYPE COMMAND LABEL 'Mostrar Gif' WINDOW_TYPE NO_STDIO ARG_TYPE Gif ICON xgif DESCRIPTION Muestra archivos gif EXEC_STRING xgif }
Utilice el campo ARG_COUNT para especificar el número de argumentos aceptado por la acción. Los valores válidos son:
* (Predeterminado) -- cualquier número de argumentos. Los otros valores tienen prioridad sobre *.
n -- cualquier entero no negativo, incluido 0.
>n -- más de n argumentos.
<n -- menos de n argumentos.
Una de las finalidades de ARG_COUNT es proporcionar un comportamiento diferente del icono de la acción, dependiendo de si el usuario hace doble clic en el icono o suelta un archivo sobre él. Véase la sección siguiente, "Para proporcionar un comportamiento diferente al hacer doble clic y al soltar."
Utilice este procedimiento para crear una acción que acepte un archivo soltado, pero que no solicite un archivo al hacer doble clic en el icono de acción.
Cree una definición de acción para el comportamiento del doble clic.
Utilice el campo ARG_COUNT para especificar 0 argumentos. Utilice una sintaxis para EXEC_STRING que no acepte un argumento soltado.
Cree una segunda definición de acción para el comportamiento de soltar.
Utilice el campo ARG_COUNT para especificar >0 argumentos. Utilice una sintaxis para EXEC_STRING que acepte un archivo soltado.
Por ejemplo, supongamos que se puede utilizar cualquiera de las dos líneas de comandos siguientes para iniciar un editor llamado vedit:
Para iniciar el editor con un argumento de archivo que se abre como documento de sólo lectura:
vedit -R nombre_archivo
Las dos acciones siguientes crean funciones de soltar y hacer doble clic para una acción llamada Vedit. La primera acción tiene prioridad cuando se busca en la base de datos de acciones, dado que ARG_COUNT 0 es más específico que el ARG_COUNT * implícito de la definición del comportamiento al soltar.
# Función de doble clic ACTION Vedit { TYPE COMMAND ARG_COUNT 0 WINDOW_TYPE PERM_TERMINAL EXEC_STRING vedit } # Función de soltar ACTION Vedit { TYPE COMMAND WINDOW_TYPE PERM_TERMINAL EXEC_STRING vedit -R %Arg_1% }
Utilice el campo ARG_MODE para especificar el modo de lectura/escritura del argumento. Los valores válidos son:
* (Predeterminado) -- cualquier modo
!w -- no se puede escribir
w -- se puede escribir
Al tratar de las acciones y la ejecución remota, se utilizan con frecuencia dos términos:
sistema de base de datos: sistema que contiene la definición de la acción
sistema de ejecución: sistema donde se ejecuta el archivo ejecutable
En la mayoría de las situaciones, las acciones y sus aplicaciones están ubicadas en el mismo sistema; dado que el sistema de ejecución predeterminado de una acción es el sistema de base de datos, no se requiere ninguna sintaxis especial.
No obstante, cuando los sistemas de ejecución y de base de datos son distintos, la definición de la acción debe especificar dónde debe ejecutarse la cadena de ejecución.
La capacidad para localizar acciones y aplicaciones en sistemas diferentes forma parte de la arquitectura cliente/servidor del escritorio. Para obtener una información más exhaustiva acerca de las aplicaciones en red, véase "Administración de servicios de aplicaciones".
Utilice el campo EXEC_HOST en la definición de la acción para especificar la ubicación de la aplicación.
Los valores válidos de EXEC_HOST son:
%DatabaseHost%: sistema donde está ubicada la definición de la acción.
%LocalHost%: sistema donde se invoca la acción (el servidor de sesiones).
%DisplayHost%: sistema que ejecuta el servidor X (no permitido para terminales X).
%SessionHost%: sistema donde se ejecuta el Gestor de inicio de sesión que ejerce el control.
nombre sistema: el sistema nombrado. Utilice este valor en entornos en los cuales la acción debe siempre invocarse en un sistema determinado.
%"solicitud'%: solicita al usuario el nombre del sistema cada vez que se invoca la acción.
El valor predeterminado es %DatabaseHost%, %LocalHost%. De este modo, si se omite el campo EXEC_HOST, la acción intenta primero ejecutar el comando en el sistema que contiene la definición de la acción. Si esto falla, la acción intenta ejecutar el comando en el servidor de sesiones.
Este campo especifica que la acción intentará ejecutar la aplicación en el sistema que contiene la definición de la acción. Si esto falla, la acción intentará ejecutar la aplicación en el sistema ddsyd.
EXEC_HOST %DatabaseHost%, ddsyd
Se pueden incluir variables de cadena y de entorno en los archivos de definición de acciones y de tipos de datos.
Una definición de variable de cadena permanece en vigor desde la ubicación de la definición dentro del archivo hasta el final de éste. No existen variables de cadena globales para la base de datos.
Si una variable de cadena y una de entorno tienen el mismo nombre, tiene prioridad la de cadena.
Utilice la sintaxis:
set nombre_variable=valor
Los nombres de las variables pueden contener cualquier carácter alfanumérico y el de subrayado (_). Cada definición de variable debe colocarse en una línea separada.
Por ejemplo:
set Remote_Application_Server=sysapp set Remote_File_Server=sysdata
Utilice la sintaxis:
$[{]nombre_variable[}]
Por ejemplo:
EXEC-HOST $Remote_Application_Server CWD /net/${Remote_File_Server}/doc/project
Para hacer referencia a una variable de entorno utilice la sintaxis:
$[{]variable[}].
La variable se expande (sustituida por su valor) cuando se carga la base de datos. Si una variable de cadena y una de entorno tienen el mismo nombre, tiene prioridad la de cadena.
Por ejemplo, esta cadena de ejecución imprime un archivo con una carátula que contiene el nombre de inicio de sesión.
EXEC-STRING lp -t$LOGNAME %(File)Arg_1%
El escritorio incluye el comando dtaction para ejecutar acciones desde una línea de comandos. Se puede utilizar dtaction para ejecutar acciones desde:
Secuencias
Otras acciones
Una línea de comandos de un emulador de terminal
dtaction [-user nombre_usuario] [-execHost nombre_sistema] \ nombre_acción [argumento [argumento]...]
-user nombre_usuario: proporciona la posibilidad de ejecutar la acción como un usuario distinto. Si un usuario distinto de nombre_usuario invoca a dtaction, se muestra un indicador para la contraseña.
-execHost nombre_sistema: sólo para acciones COMMAND; especifica el sistema donde se ejecutará el comando.
argumento: argumentos de la acción; generalmente argumentos de archivo.
El cliente de dtaction posee opciones adicionales de línea de comandos. Para más información, véase la página del comando man dtaction(1).
Utilice dtaction en la EXEC_STRING de la acción.
Por ejemplo, la siguiente acción utiliza una acción incorporada llamada Spell (la acción está etiquetada como 'Revisar ortografía' en el Gestor de aplicaciones). La nueva acción ejecuta el Editor de textos y la acción Spell, mostrando los errores de ortografía en una ventana del emulador de terminal distinta.
ACTION EditAndSpell { WINDOW_TYPE NO_STDIO EXEC_STRING /bin/sh -c 'dtaction Spell \ %Arg_1'Archivo:'%; dtpad %Arg_1%' }
Utilice la siguiente sintaxis en la EXEC_STRING:
EXEC_STRING dtaction -user nombre_usuario nombre_acción [argumento_archivo]
El nuevo usuario (nombre_usuario) debe tener acceso para mostrar en el sistema, mediante uno de los mecanismos siguientes:
Permiso de lectura en el archivo .Xauthority del usuario que inició la sesión.
O bien, permiso de xhost
Por ejemplo, las dos acciones siguientes ofrecen la posibilidad de convertirse en usuario root y editar un archivo app-defaults.
ACTION AppDefaults { WINDOW_TYPE NO_STDIO EXEC_STRING /usr/dt/bin/dtaction -user root \ EditAppDefaults %Arg_1'Archivo:'% } ACTION EditAppDefaults { WINDOW_TYPE TERMINAL EXEC_STRING /bin/sh -c 'chmod +w %Arg_1%; \ vi %Arg_1%; chmod -w %Arg_1%' }
La ruta de búsqueda de tipos de datos incluye ubicaciones que dependen del idioma. El escritorio utiliza el valor de LANG para determinar las ubicaciones donde se deben buscar las definiciones de tipos de datos.
Las definiciones de acciones de entorno nacional deben situarse en los directorios dependientes del idioma adecuados de la ruta de búsqueda de acciones.
La ruta de búsqueda predeterminada es:
Acciones personales: DirectorioInicio/.dt/types
Acciones accesibles en el sistema: /etc/dt/appconfig/types/idioma
Acciones incorporadas: /usr/dt/appconfig/types/idioma
Cree un archivo en el directorio dependiente del idioma apropiado (por ejemplo, en /etc/dt/appconfig/types/japanese) .
Copie la definición de la acción en el archivo de configuración dependiente del idioma.
Por ejemplo, puede copiar una definición de acción de
raíz_apl/dt/appconfig/types/C/archivo.dt
en:
raíz_apl/dt/appconfig/types/japanese/archivonuevo.dt
Agregue un campo LABEL o modifique el campo LABEL existente.
LABEL cadena
El Gestor de aplicaciones y el Gestor de archivos utilizan la cadena de la etiqueta para identificar el icono de acción.
Establezca el entorno nacional para todos los campos siguientes de la definición de la acción:
Para iconos de entorno nacional: ICONO
Para ayuda sobre el tema de entorno nacional: DESCRIPCIÓN
Para indicadores de solicitud de entorno nacional: cualquier texto entrecomillado que aparezca en EXEC_STRING
La siguiente información sólo es válida para las aplicaciones que admitan envío de mensajes de ToolTalk.
Utilice el tipo de acción TT_MSG
para crear una acción que envíe un mensaje de ToolTalk.
ACTION nombre_acción { TYPE TT_MSG ... }
El valor del campo addressing de ToolTalk se establece siempre en TT_PROCEDURE.
El campo disposition de ToolTalk toma como valor predeterminado la especificación que aparece en el patrón estático del mensaje.
Las acciones de tipo TT_MSG
no admiten:
Mensajes orientados a objeto de ToolTalk
Argumentos de contexto en los mensajes
La tabla Tabla 12-3 muestra la palabra clave y su uso en acciones de tipo TT_MSG.
Tabla 12-3 Palabras clave de acción de TT_MSG y su uso
Palabra clave |
Uso |
---|---|
TT_CLASS |
Define el valor del campo class del mensaje de ToolTalk |
TT_SCOPE |
Define el valor del campo scope del mensaje de ToolTalk |
TT_OPERATION |
Define el valor del campo operation del mensaje de ToolTalk |
TT_FILE |
Define el valor del campo file del mensaje de ToolTalk |
TT_ARGn_MODE |
Define el valor del atributo mode de ToolTalk para el enésimo argumento de mensaje |
TT_ARGn_VTYPE |
Define el valor del atributo vtype de ToolTalk para el enésimo argumento de mensaje |
TT_ARGn_VALUE |
Define el valor del enésimo argumento de mensaje |