Iniciando o tmux usando o gnome-terminal

7

Eu sou um pouco confuso sobre como alguém inicia o tmux. Quando eu lanço meu terminal (atual gnome-terminal), eu gostaria de ter o tmux instalado e funcionando.

Atualmente estou fazendo isso chamando "tmux" no meu .zshenv (como bashrc no bash). Isso de fato inicia o tmux, mas tem alguns efeitos colaterais irritantes. Primeiro, pressionar Ctrl-D para sair do shell, apenas mata o tmux e deixa o terminal gnome sem o tmux ainda em execução. Um Ctrl-D adicional também matará isso. Segundo, quando o ssh entra em uma caixa com essa configuração, recebo uma segunda instância aninhada do tmux. Eu não quero o tmux para iniciar novamente quando eu ssh.

Esta é a abordagem correta, como o tmux deve ser lançado normalmente?

    
por oneself 18.10.2010 / 20:24

4 respostas

9

Iniciar qualquer coisa de .zshenv é definitivamente a abordagem errada. Este arquivo é executado por todas as instâncias de zsh , mesmo ao executar um script. Use .zshrc para coisas que devem ser feitas em shells interativos e .profile (ou .zprofile , se você tiver definido zsh como seu shell de login) para coisas que devem ser feitas quando você efetuar login.

Se você quiser o tmux em todos os terminais, inicie o tmux diretamente sob o terminal, por exemplo, gnome-terminal -e tmux (altere seu ativador GUI para passar esses argumentos). Você pode passar argumentos mesmo com -e (embora tenha cuidado ao citar), por exemplo gnome-termminal -e 'tmux -s ~/.alternate.tmux.conf' .

Se você também quiser iniciar o tmux ao efetuar login no ssh, será necessário iniciá-lo a partir do ~/.profile . Faça isso apenas se o processo pai do shell de login for sshd :

parent_process_name=$(ps -o comm= -p $PPID')
case ${parent_process_name##*/} in
  sshd) type tmux >/dev/null 2>/dev/null && exec tmux;;
esac

Outra abordagem para iniciar o tmux sobre o ssh seria obter um nome de sessão do ambiente. Dessa forma você pode anexar a uma sessão existente. A maneira mais fácil é escrever um pequeno script no lado do servidor, por ex. ~/bin/tmux-login-session :

#!/bin/sh
if tmux has-session -t "$1"; then
  exec tmux attach-session -t "$1"
else
  . ~/.profile
  exec tmux new-session -s "$1"
fi

Em seguida, use um comando ssh como o seguinte:

ssh -t hostname.example.com bin/tmux-login-session SESSION_NAME
    
por 18.10.2010 / 21:59
8

Veja como definir o tmux para ser iniciado com o gnome-terminal :

  1. Iniciar o terminal do gnome
  2. Menu > Editar > Preferências de perfil > Título e Comando (Tab)
  3. Verificar Executar um comando personalizado em vez do meu shell
  4. Preencha o comando personalizado com tmux

Estas instruções funcionam para mim no Ubuntu 11.04. O equivalente deve funcionar para o gnome-terminal para qualquer sabor do Linux.

    
por 27.02.2012 / 20:10
5

Execute os seguintes comandos no terminal para que o tmux seja executado toda vez que você iniciar o gnome-terminal :

gconftool --type string --set /apps/gnome-terminal/profiles/Default/custom_command "tmux"
gconftool --type bool --set /apps/gnome-terminal/profiles/Default/use_custom_command "true"

Esse conjunto de comandos faz o gnome-terminal iniciar o tmux no início do terminal.

  • Isso resultará no encerramento do gnome-terminal quando você sair do tmux.
  • Ele não interferirá no ssh ou fará login de qualquer forma, já que é uma configuração do terminal do gnome.
  • Além disso, você pode usar todos os atalhos do gnome-terminal que você fixou na área de trabalho e iniciá-lo a partir da linha de comando com o tmux em execução, então você não precisará criar um atalho personalizado para esse comportamento.
por 26.02.2012 / 10:58
0

Ctrl+D sai do shell atual, ele não sai do emulador de terminal (a menos que seu shell atual seja o primeiro processo iniciado dentro do emulador de terminal). Se você quiser sair de gnome-terminal , poderá usar Alt+F4 ou Shift+Ctrl+Q .

    
por 18.10.2010 / 22:51