Como iniciar o xev a partir do console?

4

Estou tentando iniciar o Xev a partir do console, ele sempre dá "incapaz de abrir a tela", preciso iniciar o xev de um console como outro usuário (eu uso sudo -u '# 1000' para fazer isso).

Eu sei que o xev tem um argumento "display" ( xev -display ) mas eu simplesmente não consigo descobrir como usá-lo.

Como faço para iniciar o xev a partir do console de fora do meu ambiente X11?

    
por Cestarian 19.02.2015 / 21:28

3 respostas

4

Todos os programas X11 abrem suas janelas na tela indicada pela variável de ambiente DISPLAY . Assim:

sudo -u 1000 env DISPLAY=:0 xev

ou para essa questão, já que você pode executar programas como um usuário diferente do servidor X, apenas

DISPLAY=:0 xev

:NUMBER é a notação para exibições locais; na maioria dos cenários, o servidor X11 que está sendo executado no console é aquele que é iniciado primeiro e acaba sendo o número 0. Você pode executar echo "$DISPLAY" em um terminal nesse visor para verificar se o número de exibição está correto. :0.0 é equivalente a :0 (um .0 pode ser omitido).

Se você executar o programa como um usuário diferente do servidor X e, às vezes, mesmo que você o execute como o mesmo usuário, talvez seja necessário definir também a variável de ambiente XAUTHORITY . Essa variável aponta para um arquivo que contém uma senha (chamada de cookie ) que os aplicativos devem passar para o servidor X. Para ver o valor correto de XAUTHORITY , execute echo $XAUTHORITY nessa exibição; Se não estiver definido, o valor padrão é ~/.Xauthority , em que ~ representa o diretório inicial do usuário.

Se você precisar encontrar os valores de DISPLAY e XAUTHORITY programaticamente, consulte Abra uma janela em um display X remoto (por que" Não é possível abrir a tela ")?

¹ Pelo menos quase todos. É tecnicamente possível para eles não fazê-lo, mas é preciso um trabalho ativo por parte do programador para que não seja assim, enquanto um argumento -display é uma convenção que está longe de ser universal.

    
por 20.02.2015 / 01:10
1

Você deve tentar:

xev --display localhost:0.0

assumindo que X está realmente rodando.

    
por 19.02.2015 / 21:50
-1

O seguinte comando é muito útil:

xev | grep -A2 --line-buffered '^KeyRelease' | sed -n '/keycode /s/^.*keycode \([0-9]*\).* (.*, \(.*\)).*$/ /p'

Mas você precisa definir a variável DISPLAY e está relacionado à sua posição na máquina xev.

NOTA: Quando você aplica a variável DISPALY, sua posição é ilegal, ou você não tem acesso local à máquina.

    
por 20.02.2015 / 06:31