Não conheço uma maneira fácil de resolver o mapeamento de /dev/ttyNN
to $DISPLAY
. No entanto, isso é possível. No meu sistema baseado em Debian, isso retornará o local DISPLAY
value :0
para uma sessão X em execução em /dev/tty7
:
xtty=/dev/tty7
xpid=$(lsof "$xtty" 2>/dev/null | awk '$1 == "Xorg" {print $2}')
test -n "$xpid" && ps -fp "$xpid" | awk '$2 == xpid {print $9}' xpid="$xpid" # → :0
Os estágios intermediários são os seguintes.
-
O
lsof
retorna todos os processos abertos no terminal tty fornecido. Oawk
seleciona o ID do processo para o processo denominadoXorg
. YMMV se você não estiver executando esse servidor de exibição X em particular.lsof /dev/tty7 2>/dev/null COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME Xorg 695 root 8u CHR 4,7 0t0 1059 /dev/tty7
-
A combinação
ps | awk
fornece detalhes suficientes do processoXorg
correspondente para entregar o nomeDISPLAY
:ps -fp 695 UID PID PPID C STIME TTY TIME CMD root 695 639 0 Jan23 tty7 00:01:44 /usr/bin/X :0 -seat seat0 -auth /var/run/lightdm