tmux: criar nova janela dividida não funciona

1

Eu quero uma nova sessão com duas janelas chamadas mutt e offlineimap. a janela offlineimap deve ser dividida em duas usando duas instâncias offlineimap diferentes (com perfis diferentes).

tmux new-session -d -s mail -n mutt mutt
tmux new-window -d -t mail -n offlineimap "offlineimap -c ~/.dotfiles/mutt/dev.offimap"
tmux split-window -d -v -t mail "offlineimap -c ~/.dotfiles/mutt/trash.offimap"

cria apenas uma janela mutt, mas nenhuma janela offlineimap. = > O que há de errado com esse código?

Editar:

Quando altero o conteúdo do "" para sleep 1000 , funciona.

EDIT2:

Descobri que a segunda janela do tmux sai instantaneamente após sua criação, porque "usa os mesmos metadados do primeiro offlineimap"

    
por toogley 25.12.2015 / 21:32

1 resposta

0

Você escreveu:

tmux new-session -d -s mail -n mutt mutt
tmux new-window -d -t mail -n offlineimap "offlineimap -c ~/.dotfiles/mutt/dev.offimap"
tmux split-window -d -v -t mail "offlineimap -c ~/.dotfiles/mutt/trash.offimap"

Tente isso, escreva isso em tmux_mail.sh ou o nome que você quiser:

#!/bin/bash

tmux \
    -v \
    new-session \
        -d \
        -s mail \
        -n mutt \
        mutt \
    \; \
    new-window \
        -d \
        -n offlineimap \
        "offlineimap -c ~/.dotfiles/mutt/dev.offimap" \
    \; \
    split-window \
        -d \
        "offlineimap -c ~/.dotfiles/mutt/trash.offimap" \
    \; \
    attach

Depois de salvar e tornar executável, execute-o no prompt de comando para aproveitar sua nova sessão de email do tmux:

$ ./tmux_mail.sh

Explicação

  • \; para tornar cada parte de new-window ou split-window parte de um único comando tmux contínuo
  • , então omitimos -t , já que você não precisa de -t para especificar a sessão de destino quando tudo isso é especificado como parte de um único comando tmux
  • todas as linhas, exceto as últimas, usam a continuação da linha de bash \ (uma barra invertida seguida por um espaço, seguido por um retorno de linha) para continuar as linhas do comando que queremos que o bash execute, enquanto nos permite escrever o comando ainda com quase uma opção por linha, para facilitar a leitura e a clareza, o que pode ajudá-lo a manter esse script a longo prazo
  • -v para log detalhado precisa ser especificado no início, conforme a sinopse da sintaxe em man tmux
  • o -d é desanexar para que não execute o comportamento padrão de anexar ao terminal atual imediatamente, até que tenhamos a chance de especificar totalmente as opções que queremos
  • assim, no final, quando terminar com todas as nossas opções que queremos que o tmux faça, temos que attach para realmente ver o resultado final em nosso terminal
  • observe que se um programa não é interativo, apenas executa e sai como echo , então isso ocorrerá de forma semelhante no tmux, ele apenas executaria o programa e fecharia a janela quando o programa sair

Assim, enquanto seus comandos mutt e offlineimap realmente funcionarem e não saiam de imediato normalmente, e funcionem bem fora do tmux, então com esses comandos eles devem funcionar no tmux, criando a sessão tmux que você queria .

    
por 26.12.2015 / 01:06