Diferença entre opções globais, servidor, sessão e janela

10

O manual do tmux discute vários tipos de opções, por exemplo, opções globais , opções do servidor e assim por diante. A pergunta Onde está o arquivo de configuração padrão do tmux? também se refere a alguns desses tipos de configuração.

Alguns desses tipos são fáceis de entender: as opções de janela lidam com coisas relacionadas apenas a uma única janela. Por exemplo, "permitir renomear": as janelas têm nomes, as sessões não. Para outros tipos, no entanto, a distinção não é muito clara.

Qual é a diferença entre

  • opções do servidor ( set-option -s ),
  • opções de sessão global ( set-option -g ),
  • opções de sessão ( set-option ),
  • opções da janela global ( set-window-option -g ),
  • opções de janela ( set-window-option )?

Além disso, quais são as regras de herança para esses tipos?

    
por gioele 26.05.2014 / 12:19

1 resposta

16

Existem três classes distintas de opções: servidor, sessão e janela. Essas classes são exclusivas: cada opção pertence a apenas uma das classes. Nunca há herança entre as classes de opções.

Há apenas um nível de opções de servidor, portanto, não há herança (embora você possa ter vários servidores independentes usando os sinalizadores de linha de comando -L ou -S ).

As opções de sessão e janela usam uma hierarquia de dois níveis: as opções de sessão global (janela) fornecem valores padrão para opções de sessão (janela) não definidas. As opções de sessão e janela são inicialmente não definidas, portanto, novas sessões / janelas usarão automaticamente os valores das opções globais de sessão / janela.

Quando uma opção de sessão é definida ( set-option ), o valor recém-definido substituirá o valor global dessa sessão. Para voltar a usar o valor global, desmarque a opção ( set-option -u ). As alterações nos valores da opção de sessão global afetarão todas as sessões nas quais essa opção está atualmente não definida. A mesma ideia aplica-se às opções da janela (exceto definir uma opção de janela substitui o valor de uma janela individual em vez de uma sessão individual).

Por exemplo, para encontrar o valor efetivo da opção base-index session para uma sessão específica:

  • Verifique a opção base-index da sessão (por exemplo, o que você obtém de tmux -t «target-session» show-options base-index * ).
    1. Se a sessão tiver um valor base-index , use-a.
    2. Se o valor da sessão não foi definido, use o valor global (por exemplo, o que você obtém de tmux show-options -g base-index ).

Da mesma forma, para encontrar o valor efetivo da opção mode-keys window para uma janela específica:

  • Verifique a opção mode-keys da janela (por exemplo, o que você obtém de tmux -t «target-window» show-options -w mode-keys ** ).
    1. Se a janela tiver um valor mode-keys , use-a.
    2. Se o valor da janela não foi definido, use o valor global (por exemplo, o que você obtém de tmux show-options -gw mode-keys ).

* As versões mais antigas do tmux não aceitam um argumento de nome de opção para show-options . Com essas versões, você terá que fazer algo parecido com grep : tmux -t target show-options | grep '^base-index ' .
** Isso é o mesmo que tmux show-window-options base-index , se você gostar disso Melhor. O comando relacionado para as opções da janela global é tmux show-window-options -g base-index .

Aqui está um diagrama:

                 .---------------.
                ( 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)
    
por 27.05.2014 / 08:42

Tags