Como eu crio uma hierarquia de terminais ou espaços de trabalho?

3

Eu estou querendo saber se existe alguma maneira de criar uma hierarquia / árvore de terminais em uma sessão de tela no Linux?

Eu não me importo de invadir isso, então se há um projeto lá fora que está trabalhando nisso, eu gostaria de me envolver com isso.

Explicação:

Eu gostaria de ter algo parecido com

1 bash
  1.1 bash
  1.2 bash 2 bash 3 bash
  3.1 bash
    3.1.1 bash
    3.1.2 bash

Seria bom se os terminais pudessem ser rotulados em vez de terem que ser navegados para algum acordo que eu suspeito que não exista. Então, você poderia pular para um usando, por exemplo, ^A:goto happydays ou ^A:goto dykstra.angry .

Todo navegador oferece a capacidade de criar um conjunto simples de guias contendo documentos de natureza idêntica. O GNU- screen implementa a mesma funcionalidade sem usar guias. Os gerenciadores de janelas Linux e OS / X fornecem a capacidade de organizar janelas em uma variedade de áreas de trabalho, o que equivale, novamente, ao mesmo negócio.

Gostaria de poder não apenas agrupar coisas em uma estrutura de árvore, mas também criar referências (também conhecidas como links simbólicos, ponteiros) de uma parte da estrutura para outra, bem como aplicar propriedades (por exemplo, padrão diretório, esquema de cores, ...) recursivamente para baixo a partir de um determinado nó.

    
por intuited 29.01.2011 / 18:55

3 respostas

1

Yanno, isso soa muito parecido com o que o Byobu pode fazer

    
por 18.04.2010 / 06:35
1

acabou de encontrar esta pergunta.

Você pode fazer o que eu acredito que você está procurando dentro do gnu-screen. Em .screenrc, adicione:

screen -t 1.1 0 # just a shell

screen -t 1.2 1 screen -m -e ^ xx -c ${HOME}/.screenrc-1.2 #new session inside accessed by Ctrl-x

screen -t 1.3 2 screen -m -e '^xx' -c ${HOME}/.screenrc-1.3 #yet another new session

Então o ~ / .screenrc-1.2 e ~ / .screenrc-1.3 podem ser configurações separadas para as subsessões; por exemplo, .screenrc-1.3 poderia definir mais subsessões. Uma vez dentro da sessão inteira, você pode alternar entre eles, e as sessões internas têm suas próprias seqüências de controle (ctrl-x), você pode navegar para o nome ou número: select 1.2 .

    
por 29.01.2011 / 18:51
0

Aninhamento de sessões de tela (como sugerido por Archege) vai conseguir o que você está procurando fazer, mas gerenciar as múltiplas camadas de aninhamento (especialmente quando se trata de enviar comandos para a sessão de tela correta) pode ser uma dor. Versões mais recentes de tela (eu estou usando 4.1.0) suportam grupos de janelas, que podem fazer a maior parte do que você está procurando realizar. Os grupos de janelas não parecem ser capazes de fazer nada análogo ao hardlink, e o recurso tem apenas uma integração e documentação mínima (presumivelmente devido a ser relativamente novo e relativamente obscuro). No entanto, uma vantagem notável dos grupos de janelas é que eles funcionam em uma única sessão de tela; conseqüentemente, gerenciar o arranjo aninhado é menos problemático.

O bloco de código abaixo é uma cópia / colagem comentada das seções do meu .screenrc que são relevantes para grupos de janelas:

# first, make a root group that all of the other groups will go into
# note that the "//group" is *NOT* a comment; without it, only a
#  standard window will be spawned
screen -t root    0 //group

# select the root window to make sure that the next created group will
#  end up there, and make another group nested inside of it
select 0
screen -t shells  1 //group

# rinse and repeat for more groups
select 0
screen -t editors 2 //group
select 0
screen -t SSH     3 //group
select 0
screen -t scratch 4 //group
select 0
screen -t scripts 5 //group

# to add windows into first group, select it and then create windows
#  as normal
select 1
screen 6
screen 7

# rinse and repeat as desired for the other groups
select 2
screen 8
# and so on...
    
por 06.06.2014 / 10:04