¿Determinar qué tty está en "primer plano"/"mostrado actualmente"?

¿Determinar qué tty está en "primer plano"/"mostrado actualmente"?

En Linux puedo usar las combinaciones de teclas Alt-Ctrl-F1, Alt-Ctrl-F2... para cambiar a las diferentes tty1que pueda usar man chvt.

Al usar el comando, ttytambién se muestra la consola virtual de teletipo/linux en la que estoy.

Sin embargo, si estoy en xtermo en gnome-terminaltty, se mostrará el pseudoterminal correspondiente.

Teniendo en cuenta todo eso:

  • ¿Cómo puedo saber cuál está actualmente "activo" tty(es decir, cuál se muestra en la pantalla)?

Esta sería en cierto modo la solución (aunque parezca retorcido y se base en loginctl logind, debe haber unano sistemadescubrir):

for sessionid in $(loginctl list-sessions --no-legend | awk '{ print $1 }'); do loginctl show-session -p State -p TTY  $sessionid; done | grep "State=active" -B1 | head -n 1 | sed 's/.*=//g'

Respuesta1

cat /sys/devices/virtual/tty/tty0/active

tty0se refiere a la consola virtual actual (compáreseesta respuesta). Al leer /sys/devices/virtual/tty/tty0/activepodrás saber qué consola es esta.

"Actual" significa lo que ves, no dónde catse está ejecutando. Por ejemplo, si inicias este bucle

while sleep 1; do
   cat /sys/devices/virtual/tty/tty0/active
done

Deje que se ejecute, cambie manualmente a otra consola, espere unos segundos y vuelva a cambiar, luego verá que se informó sobre la otra consola cuando la estaba mirando.

información relacionada