Seu arquivo de configuração está funcionando, mas há algumas complicações.
Comandos de curta duração
Primeiro, os comandos que você está iniciando (instâncias de ls ) terminam a execução muito rapidamente. As janelas e painéis dos comandos são criados, mas desaparecem assim que cada comando é encerrado.
Se seu objetivo é realmente usar esses comandos "one shot" em sua configuração eventual, provavelmente você deve usar a opção window remain-on-exit
(e possivelmente a opção session set-remain-on-exit
para fornecer um padrão para todas as janelas criadas na sessão). Quando remain-on-exit
está definido para uma janela, não desaparece quando o comando é encerrado. Provavelmente, você deseja mapear a respawn-window
chave (note: respawn-window
irá reaparecer o comando original; respawn-pane
também está disponível no tmux 1.5 para reaparecer painéis individuais).
bind-key R respawn-window
# set global r-o-e so that initial window of initial session gets it
set -g set-remain-on-exit on
# create a session and its windows/panes
new -n estruct ls
neww -n estruct2 ls
splitw -v -p 50 -t 0 ls
# restore global r-o-e
set -g set-remain-on-exit off
# let session r-o-e inherit from global value for future windows
set -u set-remain-on-exit
Ou, se você não se importa que sua janela inicial seja o número 1 em vez do número 0, podemos evitar a alteração do valor global:
bind-key R respawn-window
# create a session with a throw-away window
new true
# for future windows, stay open after the command exits
set set-remain-on-exit on
# create the windows we really want
neww -n estruct ls
neww -n estruct2 ls
splitw -v -p 50 -t 0 ls
# for future windows, revert r-o-e to global value
set -u set-remain-on-exit
Se você estava usando apenas ls
como um comando de espaço reservado simplificado e realmente pretende gerar algum tipo de comando interativo em suas janelas / painéis, provavelmente deve gerar o comando que pretendia executar eventualmente. Se o seu comando destina-se leva muito tempo para inicialização para usá-lo durante tmux testes, então substituir uma concha ou outro simples comando interativa (por exemplo top
, sqlite3
, etc.).
new-session
É o comando padrão
Segundo, executar o tmux sem um argumento de comando (por exemplo tmux
) é equivalente a usar o new-session
comando (ou seja, tmux
é o mesmo que tmux new-session
). Você .tmux.conf
cria uma sessão para suas janelas / painéis ( new
é um alias para new-session
) e outra sessão está sendo criada para o new-session
comando implícito especificado ao iniciar o tmux sem um argumento de comando. Se você estiver usando a barra de status padrão, verá um [1]
no lado esquerdo da barra de status quando estiver na sessão "extra" (a sessão inicial criada no .tmux.conf
número 0).
Se você deseja evitar criar a sessão extra, use em tmux attach
vez de simples tmux
. Os comandos do seu .tmux.conf
serão executados, criando a sessão 0 e, em seguida, seu cliente será anexado a essa sessão em vez de criar uma nova.
splitw
- nada mais - e ainda não estou recebendo uma tela dividida porque diz não pode estabelecer a sessão atual. Se eu adicionarnew
antes, recebo ... uma janela, um painel. Não consigo parecer, para a minha vida, ter dois painéis na inicialização.new
esplitw
funciona para mim quando inicio o tmux viatmux attach
. Uma coisa a lembrar é que o.tmux.conf
(ou o arquivo especificado com a-f
opção) será usado apenas se ainda não houver um servidor em execução. Verifique se um servidor está sendo executado viatmux ls
. Se você deseja executar os comandos de um arquivo quando um servidor já está em execução, faça o seguinte:tmux source-file /path/to/conf-file-that-creates-a-session-and-windows \; attach
(se você executar isso quando não houver servidor, seu.tmux.conf
(ou o-f
arquivo) será executado primeiro e depois osource-file
arquivo).tmux new -f myconfig
. O conteúdo desse arquivo de configuração contém apenasnew
seguido porsplitw
. Estou matando todo e qualquer processo tmux antes de tentar a linha de comandotmux -f myconfig
. Eu não entendo dois painéis. Estou realmente sem saber o que fazer além deste ponto (além de desistir do tmux).-f
ou não,tmux
sem um argumento de comando, é o mesmotmux new-session
(que, para novos servidores, criará uma nova sessão em cima do que o seu arquivo de configuração fizer). Sua janela pré-dividida é criada na sessão 0, mas onew-session
comando implícito está criando (e anexando a) uma sessão extra (sessão 1; procure[1]
na linha de status). Usetmux -f myconfig attach
para evitar a criação da nova sessão que está ocultando sua janela pré-dividida.Não sei se entendi o que você quer dizer com "inserindo manualmente", mas é assim que faço. Eu escrevi um script de "inicialização automática" que meu gerenciador de janelas inicia. Contém:
onde cada arquivo .session se parece com isso:
Espere, tem mais! Eu tenho um número crescente de arquivos .session que carrego com o konsole:
onde work_console.tabs se parece com isso:
Então eu pressiono F12 para iniciar o konsole.
fonte
suponha que você queira iniciar três tarefas de monitoramento do servidor (aqui execute ping localhost), não há necessidade de mexer nos arquivos de configuração e nas sessões salvas. Tudo isso pode ser feito na linha de comando.
fonte
Achei o teamocil muito útil para automatizar as janelas / sessões do tmux.
Está escrito em Ruby, então você precisa disso instalado.
Aqui está uma configuração de amostra:
Você pode ter um arranjo de janelas e divisões.
fonte
Outra alternativa semelhante ao teamcoil é o tmuxinator , que está em desenvolvimento ativo e funciona muito bem. Também é recomendado (e revisado) no incrível tmux: Desenvolvimento Produtivo Sem Mouse da The Pragmatic Bookshelf .
fonte
**
Melhor salvar sua sessão!
** Descobri que para um administrador preguiçoso como eu, prefiro salvar a sessão do tmux, em vez de passar horas tentando construí-lo perfeitamente. Estou administrando mais de 30 servidores e minhas sessões tmux são dinâmicas, com a configuração mudando o tempo todo. Foi uma dor no pescoço, até que eu descobri recentemente que o tmux-ressurrect é ótimo. De uma chance. Atualmente, os repositórios do Ubuntu têm o tmux 1.8, este plug-in precisa de 1.9, então você precisa atualizar manualmente
Após o qual você pode instalá-lo
Em seguida, instale esta linha na parte inferior de ~ / .tmux.conf (se ~ / .tmux.conf não estiver disponível, crie um arquivo vazio)
Também adiciono esta linha no final do ~ / .tmux.conf, para que o plug-in salve sessões para todos os programas que corro
Em seguida, recarregue o ambiente tmux.
É isso aí! Você terminou. Agora, execute o tmux normalmente, redimensione seus painéis, crie novos painéis, crie novas sessões ... etc. Quando estiver satisfeito com a configuração alcançada (em várias janelas e várias sessões), basta clicar em ctrl + b e, em seguida, em ctrl + s para salvar a sessão. Para testar os resultados, basta matar todos os tmux
Em seguida, execute novamente o tmux
Em seguida, no tmux, clique em ctrl + b e, em seguida, ctrl + r (para restauração) Magicamente, todas as janelas, painéis e sessões são restaurados com a mesma geometria e disposição. Espero que isso ajude.
fonte