Na sessão X, você sempre pode consultar a DISPLAY
variável de ambiente para obter o número de exibição atual ( echo $DISPLAY
).
Descobrir os números de exibição dos outros é mais difícil. Eu não acho que exista uma maneira padrão de obter as informações além de perguntar a todos os usuários que exibem que estão conectados, portanto, qualquer tentativa de obter essas informações requer algum tipo de hackeria e não funcionará para todos os casos.
Existem algumas opções dadas em outros lugares no SE, mas elas não funcionam no Debian Wheezy, por exemplo. No entanto, listar as exibições atualmente ativas é fácil, conforme mostrado na postagem vinculada acima:
ps axu | grep "X "
irá mostrar-lhe os processos X que estão atualmente em execução, algo como o seguinte:
root 2354 0.0 0.5 23380 18292 tty8 Ss+ Sep15 2:36 /usr/bin/X :1 vt8 -br -nolisten tcp -auth /var/run/xauth/A:1-7xlyuc
root 7901 0.0 0.3 17044 12072 tty7 Ss+ Sep14 5:58 /usr/bin/X :0 vt7 -br -nolisten tcp -auth /var/run/xauth/A:0-wckh0a
O primeiro parâmetro depois /usr/bin/X
é o número de exibição prefixado por dois pontos, e o próximo mostra o terminal virtual atribuído à sessão.
Você pode conseguir que você responda olhando a lista de processos, embora:
ps axu |grep -3 "X "
root 1990 0.0 0.0 0 0 ? S Sep14 0:00 [kjournald]
root 1991 0.0 0.0 0 0 ? S Sep14 0:00 [kjournald]
root 1992 0.0 0.0 0 0 ? S Sep14 0:00 [kjournald]
root 2354 0.0 0.5 23380 18292 tty8 Ss+ Sep15 2:36 /usr/bin/X :1 vt8 -br -nolisten tcp -auth /var/run/xauth/A:1-7xlyuc
root 2359 0.0 0.0 5264 2228 ? S Sep15 0:00 -:1
user_1 2378 0.0 0.0 4920 1348 ? Ss Sep15 0:00 /bin/sh /usr/bin/startkde
user_1 2443 0.0 0.0 3868 348 ? Ss Sep15 0:00 /usr/bin/ssh-agent env TMPDIR=/var/tmp /usr/bin/dbus-launch --exit-with-session /usr/bin/openbox-kde-session
--
root 7500 0.0 0.0 6460 1080 ? Ss Sep14 0:00 /usr/sbin/sshd
ntp 7841 0.0 0.0 5352 1760 ? Ss Sep14 0:17 /usr/sbin/ntpd -p /var/run/ntpd.pid -g -u 108:111
root 7882 0.0 0.0 3964 716 ? Ss Sep14 0:00 /usr/bin/kdm -config /var/run/kdm/kdmrc
root 7901 0.0 0.3 17044 12072 tty7 Ss+ Sep14 5:59 /usr/bin/X :0 vt7 -br -nolisten tcp -auth /var/run/xauth/A:0-wckh0a
root 7906 0.0 0.0 5260 2224 ? S Sep14 0:00 -:0
user_2 7925 0.0 0.0 12924 1560 ? Ssl Sep14 0:00 /usr/bin/lxsession -s LXDE -e LXDE
user_2 7990 0.0 0.0 3868 348 ? Ss Sep14 0:00 /usr/bin/ssh-agent env TMPDIR=/var/tmp /usr/bin/dbus-launch --exit-with-session /usr/bin/startlxde
Observe as linhas depois /usr/bin/X
- quando a sessão X é iniciada, um gerenciador de janelas é normalmente iniciado como o usuário ao qual a sessão pertence, e lá você obtém o nome de usuário. No meu caso, o user_1 está usando o KDE e o user_2 está usando o LXDE. No entanto, essa solução depende exclusivamente do fato de que o kernel está atribuindo novos IDs de processo em seqüência crescente, o que pode não ser o caso sempre.
;
antes dodone
.