Como configurar o tmux para que ele inicie com as janelas especificadas abertas?
shell
production-environment
tmux
satoru
fonte
fonte
bash --rcfile
um bom shell no Linux científico com uma versão específica do devtools ativada. Deixará isso aqui se alguém tentar fazer o mesmo.tmux new-window -n "git lg" "scl enable devtoolset-3 'bash --rcfile <(echo \"source \"$HOME/.bashrc\";cd ~/workspace/coolproject/;git lg\")'"
vim
significa o comando a ser executado no primeiro painel (e somente naquele momento) da janela. Se você quiser nomear a sessão como 'vim', então sim, você está certo, você deve usar a-s
flag. Sintaxe inteira:tmux new-session -d -s SessionName -n WindowName Command
Eu estava tentando criar uma grade complexa de painéis e tive que lidar com a troca e divisão de painéis repetidas vezes. Aqui estão os meus aprendizados:
Começa com uma nova sessão. Dividi-lo uso horizontal ou vertical
split-window -h
ou-v
posteriormente, assim:Cria 3 painéis, assim:
Para executar comandos nesses painéis, basta adicioná-los com o
send-keys 'my-command'
comando eC-m
qual o executa:E a sessão resultante deve ser assim.
Agora, tentei subdividir novamente o painel inferior esquerdo, para voltar a usar
last-pane
ou em janelas mais complexas, comselect-pane -t 1
onde1
é o número do painel na ordem criada a partir de0
.Faz isso. Basicamente, conhecer o caminho de volta
split-window
eselect-pane
é tudo o que você precisa. Também é útil passar com-p 75
um tamanho percentual do painel criadosplit-window
para ter mais controle sobre o tamanho dos painéis.O que resulta em uma sessão assim
Espero que ajude os
tmux
entusiastas no futuro.fonte
-h -p 30
cria um painel horizontal com 30% da altura disponível;-v -p 75
mesmo para vertical com 75% de largura.\:
? Eu já vi scripts trabalharem com e sem isso.\;
passa o ponto e vírgula para o tmux em vez do bash, permitindo que os comandos sejam enviados com uma chamada para o tmux. stackoverflow.com/questions/20913198/...Você pode obter diferentes sessões do seu
.tmux.conf
gosto, assim:E formate as sessões conforme necessário:
Isso abriria duas janelas, a segunda com o nome foo / bar e seria dividida verticalmente ao meio (50%) com o foo sendo executado acima da barra. O foco estaria na janela 2 (foo / bar), painel superior (foo).
Você pode iniciar sua sessão tmux preferida (nesse caso, sessão1) com PrefixShifts
fonte
Prefix Shift S
, preciso estar no tmux e o sourcing do seu arquivo tenta iniciar uma nova sessão que o tmux não gosta e não fará a menos que você o force.Use tmuxinator - permite que você tenha várias sessões configuradas, e você pode escolher qual iniciar a qualquer momento. Você pode iniciar comandos em janelas ou painéis específicos e atribuir títulos a janelas. Aqui está um exemplo de uso no desenvolvimento de aplicativos Django .
Arquivo de configuração de amostra:
Veja o README no link acima para obter uma explicação completa.
fonte
dê uma olhada em https://github.com/remiprev/teamocil
você pode especificar sua estrutura usando o YAML
fonte
sessão 1
crie um alias no .bashrc
fonte
neww
? Não consigo encontrar esse comando em nenhum lugar. ~ Parece que énew-window
, apesar de não entender por que você usa a forma longa e a curta.Primeiro, tive a abordagem do @jasonwryan, mas se você tiver mais de 2 configurações, pode ficar confuso.
Então, eu criei uma função de alias:
Em
~/.tmux/
eu tenho várias sessões para muitos usos. Por exemplo, eu trabalho para empresas diferentes que têm um ambiente de desenvolvimento para outro. Portanto, com a função alias acima, eu posso simplesmente chamar:tmx company1
e carregar a configuração necessária.Atualização: O objetivo de "$ 2" após o
tmux
comando é que você possa passar argumentos adicionais do tmux.fonte
no server running on /tmp/tmux-1000/default
). É por isso que eu precisava corrigir o comandotmux new-session
. Ref github.com/fatso83/dotfiles/commit/...No meu script "get.all", que invoco todas as manhãs para executar vários trabalhos subsequentes "get.XXX" para atualizar o software que eu rastreado. Alguns deles são encerrados automaticamente. Outros exigem mais interação quando o get terminar (como pedir para criar o emacs).
fonte
Se você quiser apenas dividir a tela em 2 painéis (digamos na horizontal), execute este comando (não são necessários scripts tmux ou shell):
Sua tela ficará assim:
fonte
E é assim que eu faço:
Eu tenho um arquivo para cada um dos meus projetos. Além disso, você pode agrupá-los para ter alguns para trabalhar, alguns para projetos de hobby.
Além disso, você pode movê-lo para a
~/bin
pasta, adicioná-loPATH
e dar umtmux_my_awesome_project
nome. Então você poderá executá-lo em cada lugar.fonte
Isso funciona para mim. Criando 5 janelas com os nomes dados e selecionando automaticamente a
home
janela.fonte
Tente bro , é um bootstrapper de projeto.
Ele fornece APIs fáceis de interagir
tmux
.Parece algo como isto:
Para iniciar um projeto, tudo o que você precisa fazer é executar o seguinte comando -
bro start <project_name>
Confira o screencast abaixo, ele mostra como começar
bro
e usar suatmux
API.https://user-images.githubusercontent.com/8296449/50532502-2cf3e400-0b6e-11e9-84af-c5f77a04e5cc.gif
fonte
O plug - in tmux-continuum salvará automaticamente sua sessão tmux e a carregará na próxima vez que o tmux iniciar, deve ser mais fácil de configurar do que algumas das soluções de script personalizadas aqui.
Para salvar sua sessão sob demanda, você pode usar o plug- in tmux-ressurrect . O tmux-resurrect também é necessário para executar o tmux-continuum
fonte
Existe um plugin tmux para isso.
Confira tmux-ressurrect
Ou tmux-continuum
fonte
Você pode usar os ganchos do tmux para executar comandos quando uma nova sessão é criada. Especificamente, isso é conseguido usando o
session-created
gancho.Por exemplo, para dividir a tela de três maneiras com o htop em execução no canto inferior direito, você pode adicionar a seguinte linha ao seu
~/.tmux.conf
arquivo:A vantagem desse método é que você não precisa executar o tmux de nenhuma maneira especial (por exemplo, shell script ou alias) para obter o resultado desejado. Você também pode combinar isso com o
tmux new-session -A -s mysession
descrito nesta outra resposta , de forma que os comandos hook sejam executados apenas quando você criar a sessão pela primeira vez, e não nos anexos subsequentes.Esse recurso foi adicionado pelo d15d54c2c em 2016. O primeiro lançamento a incluí-lo é o 2.4.
fonte
Você deve especificá-lo no seu arquivo de configuração tmux (
~/.tmux.conf
), por exemplo:(abre uma sessão com 2 janelas com o mocp iniciado em primeiro e o mutt em segundo e outra sessão desanexada com 3 janelas vazias).
fonte
Eu criei esse script . Não precisa de tmuxinator, ruby ou outros. É apenas um script bash, configurável:
Um arquivo chamado config deve conter algo como isto:
e o código do bash deve ser:
fonte
tmux start_server
não inicia um servidor por conta própria. Veja github.com/tmux/tmux/issues/182Eu apenas tentei usar todas as idéias desta página e não gostei de nenhuma delas. Eu só queria uma solução que iniciasse o tmux com um conjunto específico de janelas quando meu terminal fosse aberto. Eu também queria que fosse idempotente, ou seja, abrir uma nova janela de terminal assume a sessão do tmux da anterior.
As soluções acima costumam abrir várias sessões do tmux e eu quero apenas uma. Primeiro, adicionei isso ao meu
~/.bash_profile
:então adicionei o seguinte ao meu
~/.tmux.conf
:agora toda vez que inicio um terminal ou inicio o tmux ou o que quer que seja, recolojo a configuração desejada existente (a sessão denominada
default
) ou crio uma nova sessão com essa configuração.fonte
tmux start_server
não inicia um servidor por conta própria. Veja github.com/tmux/tmux/issues/182O tmuxp suporta a configuração de sessão JSON ou YAML e uma API python. Um arquivo de configuração simples do tmuxp para criar uma nova sessão na sintaxe YAML é:
fonte
Este script inicia uma sessão com o nome "e" e três janelas
fonte