Para Ubuntu e Fedora se for aberto um Terminal de Janela através de ctrl+ alt+ tentão é possível abrir uma nova aba através de shift+ ctrl+ t. Suponha que exista um Terminal de Janela com 5 abas. Se possível vá até qualquer um deles através do alt+ #(onde #
pode ser 1-5)...
Agora, se o Window Terminal tiver mais abas como 9,10...
Pergunta
- Como saber qual é a aba atual? Seu número ou posição.
Para lidar com as seguintes situações:
- Como saber para onde retornar depois (suponha que a aba atual seja 8, e vamos para 3, e depois é necessário que ela retorne para 8). Então é preciso saber/obter 8.
- Qual é a próxima/anterior da aba atual (suponha que a aba atual seja 7 e seja necessário ir para a próxima aba, 8). Então é preciso saber/obter 7.
Eu tentei o tty
comando, mas se a aba atual for 5, ele mostra /dev/pts/4
. Como você pode ver N-1
. Até aqui pode ser aplicada uma matemática simples .... e algumas vezes mostra o valor direto esperado, como por exemplo /dev/pts/5
. Não sei por que essa diferença . Portanto, o valor retornado nem sempre é preciso.
Ainda mais, se em outro espaço de trabalho existir outro Window Terminal com algumas abas, se for executado o tty
comando, aparece um número aleatório, normalmente seria a continuação da aba mais alta + 1 do Window Terminal anterior. Então se no primeiro Terminal de Janela tiver 5 abas no segundo Terminal de Janela para sua primeira aba o tty
comando mostra /dev/pts/5
(N-1) ou diretamente /dev/pts/6
. Mas é esperado /dev/pts/1
, portanto, se novas abas forem abertas, a correlação deverá ser baseada a partir de 1.
Observação considere que se alguma aba for movida (arrastar e soltar) para outra posição, o "comando" deverá refletir a nova posição/número
Nota Mesmo que tty
não seja o comando correto, qual comando atingiria esse objetivo?
Presumo que você esteja usando
gnome-terminal
, pois esse é o padrão que você usaria no Gnome, que é o ambiente de área de trabalho padrão nessas plataformas. (e provavelmente, porque você diria se usasse um emulador de terminal diferente!)Pelo que sei, não existe tal comando. O programa (no seu caso, principalmente o shell) executado em uma aba tem muito pouco conhecimento dessa aba. Não deveria ! Além disso, há uma camada indireta entre "guia" e "console virtual" (o servidor de terminal gnome, que pode tecnicamente ser usado para mostrar algum ptty em uma, várias ou nenhuma guia), então, hm, a suposição de que você está sempre em uma guia específica simplesmente não funciona em geral. No entanto, isso pode se aplicar nos casos de seu interesse.
O que você pode fazer é usar a
$GNOME_TERMINAL_SCREEN
variável de ambiente para obter informações sobre a sessão do emulador de terminal em execução. Ele contém um caminho dbus, mas até onde uma introspecção "rápida"¹ nos diz que podemos obter uma lista de abas abertas², podemos executar comandos em abas, mas é isso.Portanto, além de não existir tal comando, parece que o que você deseja não é possível.
Abordando o que você queria alcançar :
Você pode definir o título atual da sua guia manualmente (clique com o botão direito no título da guia, "Definir título…") para saber onde está
Mas, honestamente, tudo isso parece que você é um "usuário avançado", usando muitos terminais virtuais, e
gnome-terminal
talvez não seja a ferramenta para gerenciar tudo isso para você.tmux
pode ter vários chamados painéis que podem ser exibidos ao mesmo tempo, e você pode ter várias janelas (não confundir com janelas no sentido X11/wayland) contendo painéis, que você pode renomear, deslocar, reordenar, abrir, perto... do desejo do seu coração. Tudo isso acontece em uma única instância do terminal gnome.tmux
é um pouco confuso quando alguém vem do mundo gráfico (tipo, todo mundo nascido depois de 1987, eu acho), mas seu Guia de primeiros passos é realmente bom, quando você o lê de cima para baixo e não tenta pular para dentro no meio disso. Você pode fazer coisas inteligentes como "ei, lembro que havia um painel onde estou correndonvim
, você pode procurar isso em todas as janelas, por favor?".Talvez experimente. Instale o tmux e execute
tmux
no seu terminal gnome. Você é saudado por seu shell normal e uma pequena linha de status estranha.Execute
top
para obter um monitor de carga do sistema em execução constante. Como queremos lembrar que esta é a janela com o monitor do sistema, pressionamos ctrl+ b, seguido de ,. Observe a linha de status! Agora nos pede um novo nome para esta janela. Suponho que o "monitoramento do sistema" funcione. Você decide. Ok, legal, parece haver atalhos de teclado para algumas coisas. Não me lembro de muitos atalhos de teclado. Então eu prefiro a interface de comando tmux: pressione ctrl+ b, seguido por :. Agora você pode digitar comandos. Eu digitosplit -h
e clico Enter(também há tabpreenchimento automático). Zack, agora você tem dois painéis em sua janela (divididosh
horizontalmente, aliás). Quero monitorar o espaço livre em meus discos, então nesse novo painel eu executowatch df -h
. Legal.Agora quero uma nova "janela" do tmux. Lembro-me da combinação de teclas para isso, ctrl+ bc(
c
comoc
reate). Eu administro meu editor favorito nisso (no meu caso, serianvim
, mas no seu caso, pode seremacs
,vim
,vi
,nano
,ed
… não julgo.).Porque quero lembrar o que estava fazendo aqui, renomeio minha janela. Mas desta vez, não uso o atalho de teclado ( ctrl+ b), mas simplesmente executo
tmux rename-window "config edit"
ou algo assim).Agora posso fazer esse jogo por um tempo e ter centenas de janelas em minha sessão. A barra de status lista isso, mas isso realmente ajuda? claro, usando ctrl+ bfagora posso procurar a janela onde comecei a escrever uma carta para minha avó antes que meu editor ficasse lento, verifiquei no monitor do sistema e comecei a editar alguns arquivos de configuração… essa é a ideia.
¹
dbus-send --session --print-reply --type=method_call --dest=org.gnome.Terminal "$GNOME_TERMINAL_SCREEN" org.freedesktop.DBus.Introspectable.Introspect
²
dbus-send --session --print-reply --type=method_call --dest=org.gnome.Terminal /org/gnome/Terminal/screen org.freedesktop.DBus.Introspectable.Introspect
Konsole
usa variável de ambiente. Não tenho ideia de outros emuladores de terminal.Parece que você precisa usar a tupla
SESSION
/WINDOW
para identificar uma janela exclusiva esession
a guia =.Considere
tmux
uma ferramenta mais poderosa para fazer isso.