Se a sua shell de terminal tiver acesso fácil à sua própria ID de janela X, você provavelmente está fazendo algo errado! Eles não têm nada a ver um com o outro - por exemplo, você poderia (e deveria) estar executando trabalhos longos dentro de screen
, o que poderia, em teoria, ser enviado para qualquer número de terminais em qualquer lugar do mundo.
Dito isto, a maneira como eu resolvo este problema é usando a habilidade do prompt de atualizar o "status" / "title" de um terminal para relatar o PID do shell, como no prompt a seguir:
PS1=\u@\H:\w\$\ \[\e]2;\u@\H:\w [$$]\a\]
Qualquer pseudo-terminal mostrando o shell com este prompt e o PID 6399 tem um título como user@host:~ [6399]
. Então , usando uma ferramenta como wmctrl , você pode escrever um script bash como este:
win_from_pid() {
type wmctrl &>/dev/null || return 1
wmctrl -l | awk '/^.*\['"$1"'\]$/ { print $1 }'
}
Isso pesquisa a lista de janelas e fornece a (s) ID (s) da X Window de qualquer final com esse título. Assim, a função win_from_pid $$
pode informar sua (s) ID (s) de janela no mesmo host que está executando o script, se houver. Você pode descobrir como determinar o foco a partir daí. :)