É possível escolher em qual X a instância do programa deve ser executada?

8

Se houver vários X Windows rodando em um sistema, é possível obter um programa para executar em uma janela específica? Como você identifica a janela e faz o programa rodar lá?

Estou assumindo que tenho todas as permissões necessárias para executar esse programa.

    
por vfclists 19.11.2013 / 02:10

2 respostas

13

Os programas X sabem com qual sessão X eles devem conversar, observando a variável de ambiente DISPLAY .

Primeiro, você precisa descobrir em que DISPLAY está definido na sessão X em que deseja que seu programa seja executado. Faça isso emitindo o comando echo $DISPLAY dentro de um X-terminal nessa sessão X. Normalmente, obtém algo como :0.0 .

Digamos que você queira iniciar o excelente programa xclock em sua sessão X, em que DISPLAY é :0.0 , mas você quer fazer isso no console. Em seguida, pressione Alt-Ctrl-F1 para mudar para esse console e digite:

DISPLAY=:0.0 xclock   # variables set w/ a command are local to that command

Depois, você volta para X pressionando Alt-Ctrl-F7 ou Alt-Ctrl-F8 (ou talvez outra tecla F, dependendo do seu sabor no Linux) e assiste ao novo wallclock bonito que você tem lá.

Na verdade, você poderia ter executado o comando em qualquer shell na mesma máquina (via SSH, em qualquer sessão X, em qualquer console, etc.) - o fato de você ter especificado DISPLAY=:0.0 antes do comando significa que a janela xclock sempre aparecerá na mesma sessão X.

Na verdade, além do fato de os programas X olharem para ele, não há nada de especial na variável DISPLAY . Normalmente, quando você está iniciando programas a partir de um terminal X, eles começam no lugar certo porque DISPLAY já foi definido para você.

Em vez de usar o comando acima, você também pode dividi-lo em dois definindo primeiro DISPLAY e, em seguida, executando xclock . Nesse caso, a configuração DISPLAY persistirá até você fechar o shell, e todos os programas X subseqüentes iniciados a partir dele serão abertos na mesma sessão X que xclock .

                      # variables set w/o a command are local to the shell,
export DISPLAY=:0.0   # unless exported
xclock
    
por 19.11.2013 / 02:23
1

Normalmente, os programas clientes X usam a variável de ambiente DISPLAY para saber a qual servidor X exibir a conexão. Alguns programas também aceitam um parâmetro de linha de comando ( -display ou algo semelhante) que pode ser usado para substituir a variável de ambiente DISPLAY .

    
por 19.11.2013 / 02:15

Tags