31 votes

Différence entre les options globales, serveur, session et fenêtre

Le manuel de tmux discute de différents types d'options, par exemple options globales , options du serveur et ainsi de suite. La question Où se trouve le fichier de configuration par défaut de tmux ? fait également référence à certains de ces types de configuration.

Certains de ces types sont faciles à comprendre : les options de fenêtre traitent de choses qui ne concernent qu'une seule fenêtre. Par exemple, "allow-rename" : Les fenêtres ont des noms, pas les sessions. Pour d'autres types, cependant, la distinction n'est pas très claire.

Quelle est la différence entre

  • options du serveur ( set-option -s ),
  • les options de session globales ( set-option -g ),
  • les options de la session ( set-option ),
  • les options de la fenêtre globale ( set-window-option -g ),
  • les options de la fenêtre ( set-window-option ) ?

En outre, quelles sont les règles d'héritage pour ces types ?

43voto

Chris Johnsen Points 36743

Il existe trois classes distinctes d'options : serveur, session et fenêtre. Ces classes sont exclusives : chaque option n'appartient qu'à une seule de ces classes. Il n'y a jamais d'héritage entre les classes d'options.

Il n'y a qu'un seul niveau d'options de serveur, il n'y a donc pas d'héritage (bien que vous puissiez avoir plusieurs serveurs indépendants à l'aide de l'option -L o -S drapeaux de ligne de commande).

Les options de session et de fenêtre utilisent chacune une hiérarchie à deux niveaux : les options globales de session (fenêtre) fournissent des valeurs par défaut pour les options de session (fenêtre) qui ne sont pas définies. Les options de session et de fenêtre sont toutes initialement non définies, de sorte que les nouvelles sessions/fenêtres utilisent automatiquement les valeurs des options globales de session/fenêtre.

Lorsqu'une option de session est définie ( set-option ), la nouvelle valeur définie remplacera la valeur globale pour cette session. Pour revenir à l'utilisation de la valeur globale, désactivez l'option ( set-option -u ). Les modifications apportées aux valeurs des options globales de session affecteront toutes les sessions dans lesquelles cette option est actuellement désactivée. La même idée s'applique aux options de fenêtre (sauf que la définition d'une option de fenêtre remplace la valeur pour une fenêtre individuelle au lieu d'une session individuelle).


Par exemple, pour trouver la valeur effective de la base-index option de session pour une session particulière :

  • Vérifier la session base-index (c'est-à-dire ce que vous obtenez de l'option tmux -t «target-session» show-options base-index * ).
    1. Si la session a un base-index valeur, puis l'utiliser.
    2. Si la valeur de la session n'a pas été définie, utilisez la valeur globale (c'est-à-dire ce que vous obtenez à partir de tmux show-options -g base-index ).

De même, pour trouver la valeur effective de la mode-keys option de fenêtre pour une fenêtre particulière :

  • Vérifiez la fenêtre mode-keys (c'est-à-dire ce que vous obtenez de l'option tmux -t «target-window» show-options -w mode-keys ** ).
    1. Si la fenêtre a un mode-keys valeur, puis l'utiliser.
    2. Si la valeur de la fenêtre n'a pas été définie, utilisez la valeur globale (c'est-à-dire ce que vous obtenez à partir de tmux show-options -gw mode-keys ).

* Anciennes versions de tmux n'acceptent pas un argument de nom d'option pour show-options . Avec ces versions, vous devrez faire quelque chose comme grep pour cela : tmux -t target show-options | grep '^base-index ' .
** C'est la même chose que tmux show-window-options base-index si vous préférez. La commande correspondante pour les options globales de la fenêtre est tmux show-window-options -g base-index .


Voici un schéma :

                 .---------------.
                ( server options  )
                 `---------------'

===========================================================

              .----------------------.
             ( global session options )    base-index 1
              `---------+--+---------'     visual-bell on
                     --/    \--
                  --/          \--
           +-----/-----+    +-----\-----+
           | session X |    | session Y |
           +-----------+    +-----------+
           base-index 0     visual-bell off

  effective values for X:
      base-index 0     (set)
      visual-bell on   (global)

  effective values for Y:
      base-index 1     (global)
      visual-bell off  (set)

===========================================================

              .---------------------.
             ( global window options )    pane-base-index 1
              `---------+++---------'     mode-keys emacs
                    ---/ | \---
                 --/     |     \---
             ---/        |         \---
         ---/            |             \---
+-------/----+    +------+-----+    +------\-----+
| window X.0 |    | window X.1 |    | window Y.0 |
+------------+    +------------+    +------------+
pane-base-index 0                   mode-keys vi
mode-keys vi

  effective values for X.0:
      pane-base-index 0   (set)
      mode-keys vi        (set)

  effective values for X.1:
      pane-base-index 1   (global)
      mode-keys emacs     (global)

  effective values for Y.0:
      pane-base-index 1   (global)
      mode-keys vi        (set)

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X