Vous pouvez créer une action de deux façons :
à l'aide de l'utilitaire “Créer action” ;
en créant manuellement une définition d'action.
Pour créer une action manuellement, vous devez éditer un fichier de base de données ; le présent chapitre explique comment effectuer cette opération.
Support de fenêtrage et émulateurs de terminal pour les actions COMMAND
Création d'actions exécutant des applications sur des systèmes distants
Utilisation de variables dans les définitions d'actions et de types de données
Pour une présentation des actions, reportez-vous au Chapitre 10.
Pour savoir comment utiliser “Créer action”, reportez-vous au Chapitre 11.
Pour des informations de référence sur les définitions d'actions, consultez la page de manuel dtactionfile(4).
Il existe trois principaux types d'action :
COMMAND
MAP
TT_MSG
L'utilitaire “Créer action” permet uniquement de créer certains types d'actions COMMAND et MAP. Toutes les actions TT_MSG doivent être créées manuellement.
Pour plus d'informations, reportez-vous à la section Limites de Créer une action.
Une action de type commande permet d'exécuter une commande de lancement d'application ou d'utilitaire, de lancer un script shell ou d'exécuter une commande du système d'exploitation. La définition de l'action indique la commande à exécuter (zone EXEC_STRING).
“Créer action” s'applique aux types les plus courants d'actions de commande. Cependant, certaines d'entre elles doivent être créées manuellement, par exemple dans les cas suivants :
lorsque l'action comporte plusieurs fichiers comme arguments et qu'une invite différente est utilisée pour chacun d'eux ;
lorsque l'action en appelle une autre ;
lorsque l'action définit des comportements dépendant du nombre de fichiers en arguments ;
lorsque l'action doit s'exécuter sur un système distant, différent de celui sur lequel elle est définie ;
lorsque l'action doit pouvoir être exécutée sous une autre identité d'utilisateur (elle peut par exemple demander le mot de passe du superutilisateur à un moment spécifique de l'exécution, puis continuer de s'exécuter avec des autorisations de superutilisateur).
Une action de type MAP n'indique pas directement de commande ou de message ToolTalk, mais elle est mise en correspondance avec une autre action.
Cette méthode permet de spécifier plusieurs noms pour une même action. Par exemple, l'action de commande intégrée Editeur d'icônes permet de lancer le programme correspondant. La base de données inclut également une action Ouvrir, ne s'appliquant qu'aux fichiers bitmaps et pixmaps (caractéristique indiquée dans la zone ARG_TYPE), correspondant à l'action Editeur d'icônes. Ainsi, l'utilisateur peut lancer l'Editeur d'icônes en sélectionnant un fichier bitmap ou pixmap dans le Gestionnaire de fichiers, et en choisissant “Ouvrir” dans le menu “Sélectionné(s)”.
L'outil “Créer action” permet uniquement de mettre en correspondance les actions “Ouvrir” et “Imprimer” ; toutes les autres actions doivent être mises en correspondance manuellement.
Les actions TT_MSG permettent d'envoyer des messages ToolTalk. Toutes les actions TT_MSG doivent être créées manuellement.
La présente section explique comment créer un fichier de configuration pour une définition d'action.
Les fichiers de configuration contenant des définitions d'actions doivent respecter les règles ci-dessous.
Respecter la convention d'appellation nom.dt.
Les fichiers doivent se trouver dans le chemin de recherche de la base de données des actions et des types de données. Les chemins de recherche par défaut sont les suivants :
Actions personnelles : RépPersonnel/.dt/types ;
Actions système : /etc/dt/appconfig/types/langue ;
Actions intégrées : /usr/dt/appconfig/types/langue. Vous ne devez pas utiliser ce répertoire.
Pour plus de détails sur la modification du chemin de recherche des actions et des types de données, reportez-vous à la section Définition de la valeur d'un chemin de recherche.
Ouvrez un fichier de base de données existant ou créez-en un nouveau.
Pour plus d'informations, reportez-vous à la section précédente, Fichiers de configuration d'action.
Créez la définition de l'action en utilisant la syntaxe :
ACTION nom_action { TYPE type_action zone_action … }
où :
nom_action : nom utilisé pour appeler l'action.
type_action : COMMAND (défaut), MAP ou TT_MSG.
zone_action : une ou plusieurs des zones requises ou facultatives pour ce type d'action. Toutes les zones se composent d'un mot clé et d'une valeur.
La plupart des zones d'action sont décrites dans ce chapitre. Pour plus de détails, consultez la page de manuel dtactionfile(4).
Sauvegardez le fichier.
Pour associer des icônes particulières à l'action, créez-les. Par défaut, les icônes se trouvent dans les répertoires suivants :
Icônes personnelles : RépPersonnel/.dt/icons ;
icônes système : /etc/dt/appconfig/icons/langue. La langue par défaut est C.
Pour plus d'informations, reportez-vous à la section Définition d'une icône d'action.
Cliquez deux fois sur Recharger actions dans le groupe d'applications Outils_Bureau.
Créez un fichier d'action, pour qu'une icône représentant l'action soit ajoutée dans le Gestionnaire de fichiers ou dans le Gestionnaire d'applications. Si l'action est destinée à lancer une application, l'icône est appelée icône d'application.
Pour créer le fichier d'action, créez un fichier exécutable portant le même nom que l'action (nom_action), dans n'importe quel répertoire auquel vous pouvez accéder en écriture. Vous pouvez créer autant de fichiers d'action que nécessaire.
Les étapes suivantes créent une action personnelle permettant de lancer une application de télécopie sur un système distant appelé Serveur_AppA. La commande de lancement de cette application est la suivante :
/usr/fax/bin/faxcompose [nom_fichier]
Créez le fichier RépPersonnel/.dt/types/Fax.dt.
Entrez la définition d'action suivante dans le fichier :
ACTION Compo_télécopie { TYPE COMMAND ICON fax WINDOW_TYPE NO_STDIO EXEC_STRING /usr/fax/bin/faxcompose -c %Arg_1% EXEC_HOST Serveur_AppA DESCRIPTION Lance le programme de composition des télécopies
}
Les zones WINDOW_TYPE et EXEC_STRING décrivent le comportement de l'action.
WINDOW_TYPE : le mot clé NO_STDIO indique que l'action ne doit pas nécessairement être exécutée dans une fenêtre d'émulation de terminal.
Pour plus d'informations, reportez-vous à la section Définition du support de fenêtrage.
EXEC_STRING : la syntaxe %Arg_1% accepte le dépôt d'un fichier. Lorsque l'utilisateur clique deux fois sur l'icône d'action, une fenêtre de composition de télécopie vide s'affiche.
Pour plus d'informations, reportez-vous à la section Création de la chaîne d'exécution d'une action COMMAND.
Sauvegardez le fichier.
A l'aide de l'Editeur d'icônes, créez les icônes suivantes dans le répertoire RépPersonnel/.dt/icons :
Télécopie.m.pm (32 x 32 pixels)
Télécopie.t.pm (16 x 16 pixels)
Cliquez deux fois sur Recharger actions dans le groupe d'applications Outils_Bureau.
Créez un fichier exécutable appelé Compo_télécopie dans un répertoire auquel vous avez accès en écriture (votre répertoire personnel, par exemple).
Supposons que vous créez la plupart des fichiers que vous télécopiez à l'aide de l'Editeur de texte et qu'ils ont le type de données TEXTFILE (leur extension est *.txt).
La procédure ci-après permet d'ajouter une option Télécopier au menu Sélectionné(s) associé à ce type de données.
Ouvrez le fichier RépPersonnel/.dt/types/Fax.dt créé précédemment.
Ajoutez-y la définition d'action MAP suivante :
ACTION Télécopier { ARG_TYPE TEXTFILE TYPE MAP MAP_ACTION Compo_télécopie }
Sauvegardez le fichier.
Copiez la définition des attributs des données TEXTFILE de /usr/dt/appconfig/types/langue/dtpad.dt dans un nouveau fichier, RépPersonnel/.dt/types/textfile.dt. Ajoutez l'action Télécopier à la zone ACTIONS.
DATA_ATTRIBUTES TEXTFILE { ACTIONS Ouvrir,Imprimer,Télécopier ICON Dtpenpd … }
Sauvegardez le fichier.
Ouvrez le Gestionnaire d'applications et cliquez deux fois sur Recharger applications, dans le groupe d'applications Outils_Bureau.
Pour que les nouvelles définitions d'action ou les actions modifiées prennent effet, le bureau doit relire la base de données.
Ouvrez le groupe d'applications Outils_Bureau et cliquez deux fois sur Recharger actions.
Ou lancez la commande suivante :
dtaction ReloadActions
ReloadActions est le nom de l'action correspondant à l'icône Recharger actions.
La base de données est également relue lorsque l'utilisateur :
se connecte ;
relance le Gestionnaire de l'espace de travail ;
sauvegarde une action à l'aide de l'option Sauvegarder du menu Fichier de la fenêtre Créer action.
Un fichier d'action permet de créer une représentation visuelle d'une action dans le Gestionnaire de fichiers ou d'applications.
Les icônes des fichiers d'action représentant des actions, elles sont parfois appelées icônes d'action. Si les actions associées permettent de lancer une application, ces icônes sont appelées icônes d'application.
Lorsque vous cliquez deux fois sur une icône d'action, l'action correspondante est lancée. Une icône d'action peut également être une zone de pose.
Par exemple, dans le cas d'une action définie comme suit :
ACTION Mon_application { EXEC_STRING Mfa -file %Arg_1% DESCRIPTION Lance Mon_application ICON Mfapp }
le fichier d'action est un fichier exécutable appelé Mon_application. Dans le Gestionnaire de fichiers et le Gestionnaire d'applications, ce fichier utilise l'icône Mfapp.taille.type. Si vous cliquez deux fois sur cette icône, le système lance la chaîne d'exécution de l'action. Lorsque vous demandez l'aide sur l'élément de l'action, le contenu de la zone DESCRIPTION apparaît (“exécute Mon_application”).
Si la zone LABEL figure dans la définition d'action, sa valeur sera utilisée comme libellé du fichier d'action dans le Gestionnaire de fichiers et le Gestionnaire d'applications, à la place du nom du fichier (nom_action). Par exemple, si la définition d'action comporte les zones suivantes :
ACTION Mon_application { LABEL Mon application … }
Le libellé de l'icône d'action sera "Mon application".
Utilisez la zone ICON pour indiquer l'icône utilisée dans le Gestionnaire de fichiers et le Gestionnaire d'applications pour les icônes d'action créées.
Si vous ne spécifiez pas d'icône, le système utilise les fichiers d'icônes d'action par défaut situés dans le répertoire /usr/dt/appconfig/icons/langue/Dtactn.*.
Pour modifier l'icône d'action, utilisez la ressource suivante :
*actionIcon: nom_fichier_icône
où nom_fichier_icône peut être un nom de base ou un chemin d'accès absolu.
La valeur de la zone ICON peut être :
Un nom de base de fichier.
Le nom de base du fichier est le nom du fichier contenant l'icône moins les suffixes de taille (m et t) et de type (bm et pm). Par exemple, si des fichiers s'appellent IcôneJeu.m.pm et IcôneJeu.t.pm, utilisez IcôneJeu.
Si vous utilisez un nom de fichier de base, les fichiers d'icône doivent être copiés dans un répertoire figurant dans le chemin de recherche des icônes.
Icônes personnelles : RépPersonnel/.dt/icons ;
Icônes système : /etc/dt/appconfig/icons/langue.
Un chemin d'accès absolu, comprenant le nom complet du fichier.
Utilisez le chemin absolu uniquement si le fichier d'icône ne figure pas dans le chemin de recherche de l'icône. Par exemple, si le fichier IcôneJeu.m.pm se trouve dans le répertoire /doc/projects, qui ne figure pas dans le chemin de recherche, la valeur de la zone ICON sera /doc/projects/GameIcon.m.pm.
Le Tableau 12–1répertorie les tailles d'icônes que vous devez créer et les noms de fichiers correspondants.
Taille en pixels |
Nom bitmap |
Nom pixmap |
---|---|---|
48 x 48 |
nom.l.bm |
nom.l.pm |
32 x 32 |
nom.m.bm |
nom.m.pm |
16 x 16 |
nom.t.bm |
nom.t.pm |
Toutes les actions installées sur le système peuvent être modifiées, y compris les actions intégrées.
toute modification de la base de données des actions intégrées doit être effectuée avec précaution, en veillant à ne pas compromettre la compatibilité des actions intégrées avec les applications du bureau.
Repérez la définition de l'action à modifier.
Les emplacements par défaut des définitions d'action sont les suivants :
actions intégrées : /usr/dt/appconfig/types/langue ;
Actions système : /etc/dt/appconfig/types/langue ;
Actions personnelles : RépPersonnel/.dt/types.
Il est possible que des emplacements supplémentaires soient disponibles sur votre système. Pour en afficher la liste, entrez la commande suivante :
dtsearchpath -v
Votre système utilise les répertoires indiqués par la variable DTDATABASESEARCHPATH.
S'il y a lieu, copiez la définition d'action dans un fichier (nouveau ou existant) de l'un des répertoires suivants :
Actions système : /etc/dt/appconfig/types/langue ;
Actions personnelles : RépPersonnel/.dt/types.
Les fichiers situés dans /usr/dt/appconfig/types/langue ne pouvant pas être modifiés, vous devez copier les actions intégrées.
Effectuez les modifications voulues.
Une fois cette opération terminée, sauvegardez le fichier.
Cliquez deux fois sur Recharger actions dans le groupe d'applications Outils_Bureau.
Lorsque l'utilisateur lance une action, le système recherche une entrée correspondante dans la base de données. Lorsqu'il existe plusieurs occurrences, des règles de priorité sont appliquées pour sélectionner l'action à utiliser.
La priorité est déterminée par l'emplacement de la définition d'action, si aucune autre règle ne s'applique. La liste suivante indique les répertoires d'actions, dans l'ordre décroissant des priorités :
actions personnelles (RépPersonnel/.dt/types).
actions système locales (/etc/dt/appconfig/types/langue).
actions système distantes (nom_hôte:/etc/dt/appconfig/types/langue). Les systèmes hôtes distants recherchés sont ceux définis dans le chemin de recherche des applications.
actions intégrées (/usr/dt/appconfig/types/langue).
Dans un même répertoire, les fichiers *.dt sont lus dans l'ordre alphabétique.
Les actions restreintes par ARG_CLASS, ARG_TYPE, ARG_MODE ou ARG_COUNT ont priorité sur les actions non restreintes. La valeur par défaut de ces zones est *.
Lorsque plusieurs restrictions s'appliquent, l'ordre (décroissant) de priorité est le suivant :
ARG_CLASS ;
ARG_TYPE ;
ARG_MODE ;
ARG_COUNT.
Lorsque plusieurs restrictions ARG_COUNT s'appliquent, l'ordre (décroissant) de priorité est le suivant :
Valeur entière n
<n
>n
*
Prenons par exemple la définition d'action (partielle) suivante :
ACTION Editer_graphiques # Editer_graphiques-1 { ARG_TYPE XWD … }
ACTION Editer_graphiques # Editer_graphiques-2 { ARG_COUNT 0 … }
ACTION Editer_graphiques # Editer_graphiques-3 { ARG_TYPE * … }
Lorsque vous cliquez deux fois sur l'icône d'action Editer_graphiques, l'action Editer_graphiques-2 est lancée. En effet, aucun argument n'ayant été indiqué, ARG_COUNT 0 est prioritaire. Lorsqu'un argument (fichier de type XWD) est spécifié, Editer_graphiques-1 est lancée car la zone ARG_TYPE est définie (sa valeur est XWD). Editer_graphiques-3 est utilisée pour tous les autres arguments (fichiers).
Les deux zones requises pour une action de type COMMAND sont les suivantes : ACTION et EXEC_STRING.
ACTION nom_action { EXEC_STRING chaîne_exécution }
La chaîne d'exécution est la partie essentielle d'une définition d'action COMMAND ; sa syntaxe est identique à celle de la ligne de commande entrée dans une fenêtre d'émulation de terminal. Elle contient cependant des éléments supplémentaires destinés au traitement des arguments (chaînes et fichiers).
Une chaîne d'exécution peut contenir :
des arguments (fichiers ou autres) ;
une syntaxe de shell ;
des chemins d'accès absolus ou des noms de fichiers exécutables.
Un argument est une donnée nécessaire à l'exécution d'une application ou d'une commande. Par exemple, la ligne de commande ci-après permet d'ouvrir un fichier dans une fenêtre de l'Editeur de texte.
dtpad nom_fichier
Dans cette commande, nom_fichier est un fichier indiqué comme argument de la commande dtpad.
Tout comme les applications et les commandes, les actions peuvent être associées à des arguments. Les deux types d'arguments disponibles pour les actions COMMAND sont les suivants :
fichiers,
chaînes.
Bien que la chaîne s'exécute directement, sans passer par un shell, vous pouvez en indiquer un dans sa syntaxe.
Par exemple :
EXEC_STRING \ /bin/sh -c \ 'tar -tvf %(File)Arg_1% 2>&1 | \${PAGER:-more};\ echo "\\n*** Sélectionnez Fermer pour sortir ***"'
Si votre application est installée dans un répertoire figurant dans la variable PATH, vous pouvez indiquer uniquement le nom du fichier exécutable. Sinon, vous devez utiliser son chemin d'accès absolu.
Pour EXEC_STRING, utilisez la syntaxe permettant de lancer l'application à partir de la ligne de commande.
La chaîne d'exécution suivante fait partie d'une action permettant de lancer le client X xcutsel.
EXEC_STRING xcutsel
La chaîne suivante permet de lancer le client xclock en demandant un affichage numérique ; la ligne de commande comporte une option mais aucun argument n'est requis.
EXEC_STRING xclock -digital
Utilisez la syntaxe suivante pour le(s) fichier(s) argument(s) :
%Arg_n%
ou
%(File)Arg_n%
(File) est facultatif, puisque les arguments fournis dans Arg_n sont considérés par défaut comme des fichiers. Reportez-vous à la section Interprétation d'un argument (fichier) en tant que chaîne pour plus de détails sur l'utilisation de la syntaxe %(String)Arg_n%).
Cette syntaxe permet à l'utilisateur de poser un fichier de données sur une icône d'action afin de l'utiliser comme argument pour cette dernière. Il remplace le nième argument de la ligne de commande. Il peut s'agir d'un fichier local ou distant.
Cette chaîne d'exécution exécute wc -w en utilisant un fichier posé en tant que paramètre -load.
EXEC_STRING wc -w %Arg_1%
L'exemple ci-dessous représente la définition partielle d'une action qui n'accepte que des répertoires en tant qu'arguments. Lorsqu'un répertoire est posé sur l'icône de cette action, celle-ci affiche la liste des fichiers accessibles en lecture-écriture du répertoire.
ACTION Liste_fich_accessibles { ARG_TYPE FOLDER EXEC_STRING /bin/sh -c 's -l %Arg_1% | grep rw-' … }
Utilisez la syntaxe suivante pour le(s) fichier(s) argument(s) :
%(File)"invite"%
Lorsque l'utilisateur clique deux fois sur l'icône correspondant à cette action, un message l'invitant à indiquer un nom de fichier s'affiche.
Par exemple, la chaîne d'exécution suivante affiche une boîte de dialogue demandant le fichier argument de la commande wc -w :
EXEC_STRING wc -w %(File)"Fichier à compter :"%
Utilisez la syntaxe suivante pour le(s) fichier(s) argument(s) :
%Arg_n"invite"%
ou
%(File)Arg_n"invite"%
L'action créée par cette syntaxe :
accepte les fichiers posés en tant qu'arguments ;
affiche, lorsque l'utilisateur clique deux fois sur l'icône correspondante, une boîte de dialogue l'invitant à entrer un nom de fichier.
Par exemple, la chaîne d'exécution suivante imprime le fichier posé avec la commande lp -oraw. Si l'utilisateur a cliqué deux fois sur l'icône de l'action pour la lancer, il est invité à indiquer un nom de fichier.
EXEC_STRING lp -oraw %Arg_1"Fichier à imprimer:"%
Utilisez la syntaxe suivante pour les arguments autres que les fichiers :
%"invite"%
ou
%(String)"invite"%
(String) est facultatif ; en effet, le texte indiqué entre guillemets est considéré par défaut comme une chaîne. Cette syntaxe affiche une boîte de dialogue qui invite l'utilisateur à entrer des données ; ne l'utilisez pas lorsqu'un nom de fichier doit être indiqué.
Par exemple, la chaîne d'exécution suivante lance la commande xwd et invite l'utilisateur à indiquer une valeur à ajouter à chaque pixel :
EXEC_STRING xwd -add %"Valeur à ajouter :"% -out %Arg_1"Nom du fichier :"%
Utilisez la syntaxe suivante pour l'argument :
%(String)Arg_n%
Par exemple, la chaîne d'exécution suivante permet d'imprimer, lp -tnom de fichier bannière, un fichier accompagné d'une page bannière indiquant son nom à l'aide de la commande.
EXEC_STRING lp -t%(String)Arg_1% %(File)Arg_1"Fichier à imprimer:"%
Indiquez le shell dans la chaîne d'exécution :
/bin/sh -c 'commande' /bin/ksh -c 'commande' /bin/csh -c 'commande'
La chaîne d'exécution suivante correspond à une action qui utilise les fonctions de pipeline du shell :
EXEC_STRING /bin/sh -c 'ps | lp'
La chaîne suivante est plus complexe ; elle requiert un traitement par le shell et accepte un fichier comme argument :
EXEC_STRING /bin/sh -c 'tbl %Arg_1"Page de manuel :"% | troff -man'
Pour la chaîne ci-après, l'argument doit être un fichier compressé ; l'action le décompresse et l'imprime à l'aide de la commande lp -oraw.
EXEC_STRING /bin/sh -c 'cat %Arg_1 "Fichier à imprimer:"% | \ uncompress | lp -oraw'
Les actions peuvent gérer les arguments multiples de trois manières, décrites ci-dessous.
L'action peut être exécutée à plusieurs reprises, une fois par argument. Lorsqu'une zone EXEC_STRING définit un seul argument et que plusieurs fichiers sont posés sur l'icône de l'action, celle-ci est exécutée pour chaque fichier.
Par exemple, si plusieurs arguments sont indiqués pour la définition d'action suivante :
ACTION Affich_image_écran { EXEC_STRING xwud -in %Arg_1% … }
l'action Affich_image_écran est exécutée à plusieurs reprises.
L'action peut utiliser plusieurs fichiers non interchangeables. Par exemple :
xsetroot -cursor fichier_curseur fichier_masque
Cette action requiert deux fichiers, indiqués dans un ordre donné.
Une action peut également exécuter la même commande de façon séquentielle sur chaque fichier. Par exemple :
pr fichier [fichier …]
Cette action regroupe un ou plusieurs fichiers dans un même travail d'impression.
Utilisez l'une des syntaxes décrites ci-dessous.
Pour que l'action demande les noms des fichiers, utilisez la syntaxe suivante pour chaque argument :
%(File)"invite"%
Utilisez une chaîne invite différente pour chaque argument.
Par exemple, la chaîne d'exécution suivante invite l'utilisateur à spécifier deux fichiers :
EXEC_STRING xsetroot -cursor %(File)"Bitmap curseur:"% \ %(File)"Bitmap masque:"%
Pour que l'action accepte les fichiers posés, utilisez la syntaxe suivante pour chaque argument :
%Arg_n%
Attribuez une valeur différente à n pour chaque argument. Par exemple :
EXEC_STRING diff %Arg_1% %Arg_2%
Utilisez l'une des syntaxes décrites ci-dessous.
Pour créer une action acceptant les fichiers posés, chargée d'exécuter une commande du type commande fichier 1 fichier 2 …, utilisez la syntaxe suivante pour les arguments :
%Args%
Pour créer une action qui accepte plusieurs fichiers posés, ou qui affiche un message demandant à l'utilisateur d'indiquer un fichier unique lorsqu'il clique deux fois dessus, utilisez la syntaxe suivante pour les arguments :
%Arg_1"invite"% %Args%
La commande sera lancée sous la forme commande fichier 1 fichier 2 ….
La chaîne suivante crée une action qui exécute la commande :
pr fichier 1 fichier 2
Cette action accepte plusieurs fichiers comme arguments.
EXEC_STRING pr %Args%
La chaîne suivante crée une action semblable à la précédente, qui affiche en plus une invite lorsque l'utilisateur clique deux fois dessus (pas d'arguments) :
EXEC_STRING pr %Arg_1"Fichier(s) à imprimer:"% %Args%
Pour créer une action qui accepte plusieurs arguments et exécute une commande du type :
commande fichier 1 fichier 2 …
Utilisez la syntaxe :
%Args%
La chaîne suivante lance le script Vérification sur plusieurs fichiers :
EXEC_STRING /usr/local/bin/Vérification \ %Arg_1"Fichier à vérifier?"% %Args%
La chaîne suivante exécute la commande lp -oraw sur plusieurs fichiers :
EXEC_STRING lp -oraw %Arg_1"Fichier à imprimer:"% %Args%
Les actions COMMAND prennent en charge les fenêtres du bureau de plusieurs manières.
Si l'application dispose de sa propre fenêtre, l'action peut être conçue de sorte qu'aucune fenêtre supplémentaire ne soit ouverte. Cette option est également utilisée pour les actions qui lancent des commandes ne requérant aucune entrée utilisateur et ne générant aucune sortie.
Si l'application doit s'exécuter dans une fenêtre d'émulation de terminal, l'action peut ouvrir cette fenêtre avant de lancer l'application. Il existe plusieurs options de terminal.
Utilisez la ressource WINDOW_TYPE pour spécifier le type de support de fenêtrage requis par l'action, comme indiqué dans le Tableau 12–2.
Tableau 12–2 Zone WINDOW_TYPE et support de fenêtrage fourni
Type de support de fenêtrage |
|
---|---|
Aucun. Utilisez NO_STDIO si l'application dispose de sa propre fenêtre ou si la commande ne génère aucune sortie visible. |
|
Fenêtre d'émulation de terminal permanente. L'action ouvre une fenêtre de terminal qui reste ouverte jusqu'à ce que l'utilisateur demande explicitement sa fermeture ; des données peuvent être entrées dans cette fenêtre. Cette valeur doit être utilisée dans le cas des commandes qui requièrent des entrées et génèrent une sortie avant de se terminer (par exemple, ls répertoire). |
|
Fenêtre d'émulation de terminal provisoire. L'action ouvre une fenêtre de terminal qui se ferme dès la fin de l'exécution de la commande. Utilisez cette valeur dans le cas des commandes plein écran (par exemple, vi). |
Utilisez la zone TERM_OPTS dans la définition de l'action pour indiquer les options de ligne de commande de l'émulateur de terminal.
Par exemple, l'action suivante demande l'hôte d'exécution :
ACTION Ouvrir_term_sur_système_indiqué { WINDOW_TYPE PERM_TERMINAL EXEC_HOST %(String)"Terminal distant sur :"% TERM_OPTS -title %(String)"Titre de la fenêtre :"% EXEC_STRING $SHELL }
Par défaut, les actions utilisent l'émulateur de terminal dtterm ; vous pouvez cependant en indiquer un autre. L'émulateur par défaut est pris en compte lorsque l'action n'identifie pas explicitement l'émulateur à utiliser.
L'émulateur utilisé par les actions doit être associé aux options de ligne de commande suivantes :
-title titre_fenêtre
-e commande
Les ressources ci-dessous définissent l'émulateur utilisé par les actions.
La ressource localTerminal indique l'émulateur associé aux applications locales.
*localTerminal: terminal
Par exemple :
*localTerminal: xterm
La ressource remoteTerminal indique l'émulateur associé aux applications distantes.
*remoteTerminal: hôte:terminal [,hôte:terminal…]
Par exemple :
*remoteTerminal: sysibm1:/usr/bin/xterm,syshp2:/usr/bin/yterm
Pour préciser l'action, vous avez la possibilité de l'associer à certains arguments uniquement. Par exemple, il est préférable de faire en sorte que l'action permettant d'afficher les fichiers PostScript n'accepte que ce type de fichier comme argument. Si un fichier incorrect est indiqué, l'action affiche un message d'erreur.
Les restrictions s'appliquent en fonction :
du type de données du fichier indiqué comme argument ;
du nombre d'arguments (par exemple, aucun argument ou un ou plusieurs arguments), ce qui permet d'indiquer différents comportements pour la pose et le double-clic sur l'icône de l'action ;
du mode de lecture-écriture de l'argument.
Utilisez la zone ARG_TYPE pour définir les types de données auxquels l'action s'applique (indiquez les noms d'attributs de données).
Vous pouvez indiquer plusieurs types de données, à condition de les séparer par des virgules.
Dans l'exemple de définition d'action suivante, on considère que le type de données GIF a été créé.
ACTION Ouvrir_Gif { TYPE COMMAND LABEL "Afficher fichier Gif" rm $HOME/readme.temp' WINDOW_TYPE NO_STDIO ARG_TYPE Gif ICON xgif DESCRIPTION Permet d'afficher fichiers GIF EXEC_STRING xgif }
Utilisez la zone ARG_COUNT pour indiquer le nombre d'arguments que l'action peut accepter. Les valeurs autorisées sont les suivantes :
* (par défaut) : nombre d'arguments illimité. Les autres valeurs sont prioritaires par rapport à *.
n : toute valeur entière, y compris 0.
>n : plus de n arguments.
<n : moins de n arguments.
ARG_COUNT permet d'indiquer différents comportements pour l'icône d'action, selon que l'utilisateur clique deux fois dessus ou y pose un fichier. Pour plus de détails, reportez-vous à la section suivante, “Définition de comportements différents pour la pose et le double-clic”.
La procédure suivante permet de créer une action acceptant les fichiers posés, mais n'invitant pas à indiquer un fichier lorsque l'utilisateur clique deux fois dessus :
Créez une définition d'action pour la fonction double-clic.
Utilisez la zone ARG_COUNT pour indiquer 0 arguments. Utilisez une syntaxe pour la zone EXEC_STRING qui n'accepte pas les arguments posés.
Créez une deuxième définition d'action pour la fonction pose.
Utilisez la zone ARG_COUNT pour indiquer >0 arguments. Utilisez une syntaxe pour la zone EXEC_STRING qui accepte les fichiers posés.
Dans les exemples ci-dessous, les commandes suivantes permettent de lancer l'éditeur vedit
Pour lancer l'éditeur et ouvrir un fichier en lecture seule :
vedit -R nom_fichier
Les deux actions ci-dessous permettent de créer les fonctions pose et double-clic pour l'action Vedit. La première action est prioritaire lors de la recherche dans la base de données ; en effet, l'argument ARG_COUNT 0 est plus spécifique que l'argument ARG_COUNT * de la définition de la fonctionnalité de pose.
# Fonction double-clic ACTION Vedit { TYPE COMMAND ARG_COUNT 0 WINDOW_TYPE PERM_TERMINAL EXEC_STRING vedit } # Fonction pose ACTION Vedit { TYPE COMMAND WINDOW_TYPE PERM_TERMINAL EXEC_STRING vedit -R %Arg_1% }
Utilisez la zone ARG_MODE pour spécifier le mode lecture/écriture de l'argument. Les valeurs autorisées sont les suivantes :
* (par défaut) : mode quelconque
!w : non accessible en écriture
w : accessible en écriture
Vous devez connaître la signification des termes suivants :
Hôte de base de données : système contenant la définition de l'action.
Hôte d'exécution : système sur lequel le programme s'exécute.
Dans la plupart des cas, les actions et les applications associées sont installées sur le même système ; étant donné que l'hôte d'exécution par défaut d'une action est l'hôte de base de données, aucune syntaxe particulière n'est requise.
Cependant, lorsque l'hôte d'exécution est différent de l'hôte de base de données, le système sur lequel la chaîne d'exécution sera lancée doit être indiqué dans la définition de l'action.
La fonction de recherche des actions et des applications sur différents systèmes fait partie de l'architecture client/serveur du bureau. Pour plus de détails sur les applications en réseau, reportez-vous à la section Administration des services d'applications.
Utilisez la zone EXEC_HOST dans la définition de l'action pour indiquer l'emplacement de l'application.
Les valeurs autorisées pour la zone EXEC_HOST sont les suivantes :
%DatabaseHost% : système hôte sur lequel l'action est définie.
%LocalHost% : système hôte sur lequel l'action est lancée (serveur de sessions).
%DisplayHost% : système hôte sur lequel le serveur X s'exécute (non autorisé dans le cas des terminaux X).
%SessionHost% : système hôte exécutant le Gestionnaire de connexion de contrôle.
nom_machine : nom de la machine. Utilisez cette valeur pour des environnements dans lesquels l'action doit toujours être lancée sur une machine particulière.
%"invite"% : invite l'utilisateur à saisir le nom de l'hôte à chaque fois que l'action est appelée.
La valeur par défaut est %DatabaseHost%, %LocalHost%. Ainsi, lorsque la zone EXEC_HOST n'est pas précisée, une tentative d'exécution de la commande est effectuée sur le système hôte contenant la définition de l'action. En cas d'échec, le serveur de sessions est utilisé.
La zone suivante indique que l'action tente de lancer l'application sur le système hôte qui contient sa définition. En cas d'échec, elle tente de la lancer sur le système hôte ddsyd.
EXEC_HOST %DatabaseHost%, ddsyd
Vous pouvez indiquer des variables d'environnement et des variables de type chaînes de caractères dans les fichiers de définition d'actions et de types de données.
Une variable de ce type est définie entre la ligne où elle apparaît et la fin du fichier. Il n'existe aucune variable globale pour la base de données.
Si une variable d'environnement et une variable de type chaîne de caractères portent le même nom, cette dernière est prioritaire.
Utilisez la syntaxe :
set nom_variable=valeur
Les noms de variables peuvent contenir des caractères alphanumériques et le caractère de soulignement (_) qui accepte les fichiers posés.
Par exemple :
set Serveur_applications_distant=sysapp set Serveur_fichiers_distant=sysdata
Utilisez la syntaxe :
$[{]nom_variable[}]
Par exemple :
EXEC-HOST $Serveur_applications_distant CWD /net/${Serveur_fichiers_distant}/doc/project
Utilisez la syntaxe suivante pour faire référence à une variable d'environnement :
$[{]variable[}].
La variable est remplacée par sa valeur lors du chargement de la base de données. Si une variable d'environnement et une variable de type chaîne de caractères portent le même nom, cette dernière est prioritaire.
Par exemple, la chaîne d'exécution suivante permet d'imprimer un fichier avec une bannière indiquant le nom de connexion :
EXEC-STRING lp -t$LOGNAME %(File)Arg_1%
Pour effectuer cette opération, utilisez la commande du bureau dtaction. Les actions peuvent être exécutées à partir :
de scripts ;
d'autres actions ;
de la ligne de commande d'une fenêtre d'émulation de terminal.
dtaction [-user nom_utilisateur] [-execHost nom_hôte] \ nom_action [argument [argument]…]
-user nom_utilisateur : permet à un autre utilisateur d'exécuter l'action. Si dtaction est lancée par un utilisateur différent de nom_utilisateur, cet utilisateur est invité à indiquer un mot de passe.
-execHost nom_hôte : actions de type COMMAND uniquement ; indique le système hôte sur lequel la commande sera exécutée.
argument : arguments associés à l'action ; il s'agit généralement de fichiers.
Le client dtaction dispose d'options de ligne de commande supplémentaires. Pour plus de détails, consultez la page de manuel dtaction(1).
Utilisez la commande dtaction dans la zone EXEC_STRING de l'action.
Par exemple, l'action ci-dessous utilise l'action intégrée Spell, dont le libellé est Vérifier orthographe dans le Gestionnaire d'applications. La nouvelle action lance l'Editeur de texte et Spell, puis affiche les erreurs d'orthographe dans une fenêtre d'émulation de terminal distincte.
ACTION Editer_et_vérifier { WINDOW_TYPE NO_STDIO EXEC_STRING /bin/sh -c 'dtaction Spell \ %Arg_1"Fichier :"%; dtpad %Arg_1%' }
Utilisez la syntaxe suivante dans la zone EXEC_STRING :
EXEC_STRING dtaction -user nom_utilisateur nom_action [argument_fichier]
Pour avoir accès au système, le nouvel utilisateur (nom_utilisateur) doit disposer de l'une des autorisations suivantes :
autorisation de lecture sur le fichier .Xauthority de l'utilisateur de connexion ;
ou autorisation xhost.
Par exemple, les actions suivantes permettent de devenir superutilisateur et d'éditer un fichier app-defaults.
ACTION AppDefaults { WINDOW_TYPE NO_STDIO EXEC_STRING /usr/dt/bin/dtaction -user root \ EditAppDefaults %Arg_1"Fichier :"% } ACTION EditAppDefaults { WINDOW_TYPE TERMINAL EXEC_STRING /bin/sh -c 'chmod +w %Arg_1%; \ vi %Arg_1%; chmod -w %Arg_1%' }
Le chemin de recherche des types de données comporte des emplacements dépendant la langue utilisée. Le bureau utilise la valeur de la variable LANG pour déterminer les emplacements des définitions de types de données.
Les définitions des actions localisées doivent être situées dans les répertoires associés à la langue utilisée, dans le chemin de recherche des actions.
Les chemins de recherche par défaut sont les suivants :
Actions personnelles : RépPersonnel/.dt/types ;
Actions système : /etc/dt/appconfig/types/langue ;
actions intégrées : /usr/dt/appconfig/types/langue.
Créez un fichier dans le répertoire correspondant à la langue (par exemple, dans /etc/dt/appconfig/types/japanese).
Copiez la définition de l'action dans le fichier de configuration lié à la langue.
Par exemple, vous pouvez copier une définition d'action de
racine_app/dt/appconfig/types/C/fichier.dt
vers
racine_app/dt/appconfig/types/japanese/nouveau_fichier.dt
Ajoutez une zone LABEL ou modifiez la zone LABEL existante.
LABEL chaîne
Le Gestionnaire d'applications et le Gestionnaire de fichiers utilisent cette chaîne pour identifier l'icône d'action.
Localisez un ou plusieurs des éléments suivants :
icônes localisées : zone ICON ;
aide sur l'élément localisée : zone DESCRIPTION ;
invites localisées : texte entre guillemets dans la zone EXEC_STRING.
les informations suivantes ne s'appliquent qu'aux programmes qui prennent en charge la messagerie ToolTalk.
Utilisez le type d'action TT_MSG
pour créer une
action envoyant un message ToolTalk.
ACTION nom_action { TYPE TT_MSG … }
La zone d'adressage de ToolTalk est toujours réglée sur TT_PROCEDURE.
La zone disposition de ToolTalk est définie par défaut selon le modèle des messages statiques.
Les messages suivants ne sont pas pris en charge par les actions de
typeTT_MSG
:
messages ToolTalk orientés objet ;
arguments contextuels des messages.
Le Tableau 12–3montre les mots-clés et les utilisations des actions TT_MSG.
Tableau 12–3 Mots-clés des actions TT_MSG et utilisation
Mot-clé |
Utilisez |
---|---|
TT_CLASS |
Définit la valeur de la zone ToolTalk “class”. |
TT_SCOPE |
Définit la valeur de la zone ToolTalk “scope”. |
TT_OPERATION |
Définit la valeur de la zone ToolTalk “operation”. |
TT_FILE |
Définit la valeur de la zone ToolTalk “file”. |
TT_ARGn_MODE |
Définit la valeur de l'attribut ToolTalk “mode” pour le nième argument de message. |
TT_ARGn_VTYPE |
Définit la valeur de l'attribut ToolTalk “vtype” pour le nième argument de message. |
TT_ARGn_VALUE |
Définit la valeur du nième argument de message. |