# Action à exécuter

Vous souhaitez selon toute vraisemblance que votre action soit clôturée par l'exécution de quelque chose. Et bien, pragmatiquement, avoir quelque chose à exécuter est une des quelques conditions requises pour qu'une action soit considérée comme valide.

As we have already seen, the command to be executed is configured in the Command page.

Cette commande peut prendre des paramètres, qui eux-mêmes peuvent incorporer d'autres paramètres. Ces paramètres sont développés lors de l'exécution avec les valeurs dépendantes des éléments actuellement sélectionnés.

## Paramètres disponibles

In the Command page, click on Legend button to see the list of available parameters.

### Liste des paramètres disponibles

Affiche la liste des paramètres disponibles.

The Legend button has a toggling action: click once to display the Parameter Legend dialog box; click a second time to hide it.

The word « first » may be misleading as it only refers to the list of selected items internally provided by the file manager to the Caja-Actions plugin.

In particular, it has nothing to do with the visual selection you may have done in the file manager window. And, in fact, which is the « first » selected item in a multiple selection is absolutely undefined and rather unpredictable.

## Emplacement où l'action est exécutée

Votre action peut être exécutée dans un répertoire de travail donné.

You may specify it in the Command tab, in the Working directory entry box, or by clicking on Browse to select a folder on the filesystem.

### Encadré Répertoire de travail

Détail de l'encadré pour la sélection du répertoire de travail.

The working directory defaults to `%d`, which runs the command in the base directory of the (first) selected item.

In the particular case of the `%d` parameter, the « first » selected item is not very important because it is very likely that all selected items are located in the same base directory.

## Mode d'exécution de l'action

Apart from configuring the conditions, the selection must be met in order your action be displayed in file manager menus, Caja-Actions allows you to configure how exactly your command will be executed.

Click on the Execution tab to show the page which configures the execution of your command.

### Configuration des modes d'exécution

Affiche comment configurer les modes d'exécution d'une commande.

### Mode d'exécution

#### Configuration du mode d'exécution

Détail de l'encadré concernant le mode d'exécution.

Le mode d'exécution de la commande peut être choisi parmi les valeurs suivantes :

Normal

- Lance la commande dans l'interface utilisateur graphique standard.

Dans un terminal

- Ouvre le terminal préféré de l'environnement bureau et y lance la commande.

Incorporé

- Utilise une fonctionnalité spéciale du gestionnaire de fichiers qui peut autoriser l'ouverture d'un terminal dans sa fenêtre.

  As Caja does not have this feature, this option is strictly equivalent to `Terminal` option.

Affichage des sorties

- Ouvre le terminal préféré de l'environnement bureau et y lance la commande. À la fin, les flux standard (stdout, stderr) sont rassemblés et affichés.

The execution mode of a command defaults to `Normal`. That is, the command is executed without any particular pre- or post-work.

### Notification de lancement

#### Configuration des modes de lancement

Détail de l'encadré du mode de lancement.

If the execution mode of the command is `Normal`, and if you know that the application will send a `remove` message with the `DESKTOP_STARTUP_ID` environment variable set, then check the Startup notify checkbox.

See the Startup Notification Protocol Specification for more details.

### Classe de la fenêtre

If the execution mode of the command is `Normal`, and if you know that the application will map at least one window with a given class name, then enter that name into the Startup Window Manager class entry box.

See the Startup Notification Protocol Specification for more details.

### Propriétaire de l'exécution

#### Configuration du propriétaire du lancement

Focus on the Execute as frame.

Enter in the Execute as user entry box the username or the UID of the user your command will be run as.

Si vous ne saisissez rien dans ce champ, la commande est alors exécutée au nom de l'utilisateur en cours.

### Exécutions multiples

Vous pouvez souhaiter que la commande soit exécutée une fois, en lui donnant la liste des éléments sélectionnés comme argument.

Vous pouvez aussi préférer que votre commande soit répétée pour chaque élément sélectionné, en donnant pour chaque exécution un élément différent comme argument.

Actually, Caja-Actions automatically handles these two behaviors, depending of the form and the order of the parameters in the command arguments.

Though some parameters are not depending on the count of the selection (e.g. « `%c` », the selection count itself), most have two declensions:

- a « singular » one, e.g. « `%b` », the basename of the selected item;

- a « plural » one, e.g. « `%B` », the space-separated list of the basenames of selected items.

Quand la sélection est vide ou ne comporte qu'un seul élément, ces deux formes sont rigoureusement équivalentes pour ce qui concerne ce paragraphe.

Quand la sélection comporte plus d'un élément :

- if the first relevant parameter is of a singular form, then Caja-Actions will consider that the command is only able to deal with one item at a time, and thus that it has to be ran one time for each selected item;

- contrarily, if the first relevant parameter found is of the plural form, then Caja-Actions will consider that the command is able to deal with a list of items, and thus the command will be executed only once;

- if all found parameters are irrelevant, then Caja-Actions defaults to consider that the command should be executed only once.

### Characterization of the parameters vs. multiple execution

Paramètre | Description | Répétition
`%b` | (premier) nom de base | au singulier |  |
`%B` | liste des noms de base séparés par des espaces |  |  | au pluriel
`%c` | nombre d'éléments sélectionnés |  | non pertinent |
`%d` | (premier) répertoire de base | au singulier |  |
`%D` | liste des répertoires de base de chaque élément sélectionné séparés par des espaces |  |  | au pluriel
`%f` | (premier) nom de fichier | au singulier |  |
`%F` | liste des noms des fichiers sélectionnés séparés par des espaces |  |  | au pluriel
`%h` | nom d'hôte du (premier) URI |  | non pertinent |
`%m` | type MIME du (premier) élément sélectionné | au singulier |  |
`%M` | liste des types MIME des éléments sélectionnés séparés par des espaces |  |  | au pluriel
`%n` | nom d'utilisateur du (premier) URI |  | non pertinent |
`%o` | opérateur qui force l'exécution de l'action fichier par fichier | au singulier |  |
`%O` | opérateur qui force l'exécution de l'action simultanément sur plusieurs fichiers |  |  | au pluriel
`%p` | numéro de port du (premier) URI |  | non pertinent |
`%s` | protocole du (premier) URI |  | non pertinent |
`%u` | (premier) URI | au singulier |  |
`%U` | liste des URI sélectionnés séparés par des espaces |  |  | au pluriel
`%w` | (premier) nom de base sans extension | au singulier |  |
`%W` | liste des noms de base sans extension séparés par des espaces |  |  | au pluriel
`%x` | (première) extension | au singulier |  |
`%X` | liste des extensions séparées par des espaces |  |  | au pluriel
`%%` | the « `%` » character |  | non pertinent |

#### Usage of singular vs. plural forms

Say the current folder is `/data`, and the current selection contains the three files `pierre`, `paul` and `jacques`.

#### If we have requested `echo %b`,

alors les trois commandes suivantes sont successivement exécutées :

- `echo pierre`
- `echo paul`
- `echo jacques`

This is because `%b` marks a singular parameter. The command is then run once for each of the selected items.

#### Contrarily, if we have requested `echo %B`,

alors la commande suivante est lancée :

- `echo pierre paul jacques`

This is because `%B` marks a plural parameter. The command is then run only once, with the list of selected items as arguments.

#### If we have requested `echo %b %B`,

alors les trois commandes suivantes sont successivement exécutées :

- `echo pierre pierre paul jacques`
- `echo paul pierre paul jacques`
- `echo jacques pierre paul jacques`

This is because the first relevant parameter is `%b`, and so the command is run once for each selected item, replacing at each occurrence the `%b` parameter with the corresponding item. The second parameter is computed and added as arguments to the executed command.

#### And if we have requested `echo %B %b`,

alors la commande ci-après serait lancée :

- `echo pierre paul jacques pierre`

This is because the first relevant parameter here is `%B`. The command is then run only once, replacing `%B` with the space-separated list of basenames. As the command is only run once, the `%b` is substituted only once with the (first) basename.