Estou executando um programa de maldições interativo em uma sessão de tela em um hardware bastante fraco. Na maioria das vezes, a tela é desanexada. Existe uma maneira desse programa detectar essa situação e basicamente parar de pintar na tela?
Estou executando um programa de maldições interativo em uma sessão de tela em um hardware bastante fraco. Na maioria das vezes, a tela é desanexada. Existe uma maneira desse programa detectar essa situação e basicamente parar de pintar na tela?
Respostas:
Existe um script irssi chamado screen_away
que define seu status ausente com base no fato de a tela estar ou não conectada. Funciona assim:
Todo shell em execução em uma tela terá a STY
variável de ambiente definida como o nome do soquete. Você pode executar screen -ls
para obter o caminho em que todos os soquetes estão armazenados:
$ screen -ls
There are screens on:
11824.pts-24.mmrozek (Attached)
2306.ssh (Detached)
6615.chat (Attached)
3 Sockets in /var/run/screen/S-mmrozek.
Verifique o bit de execução /var/run/screen/.../$STY
. Se estiver definido, a tela está anexada; caso contrário, é desanexado. Você pode ver na saída acima que duas das minhas três telas estão anexadas e aqui os bits de execução correspondentes estão definidos:
$ ls -l /var/run/screen/S-mmrozek/
total 0
prwx------ 1 mmrozek mmrozek 0 Oct 5 13:04 11824.pts-24.mmrozek
prw------- 1 mmrozek mmrozek 0 Sep 23 23:45 2306.ssh
prwx------ 1 mmrozek mmrozek 0 Oct 5 12:43 6615.chat
Você também pode continuar verificando a saída de screen -ls
uma linha que contém $STY
e ver se ela termina em (Attached)
ou (Detached)
, mas que exige screen
repetidas vezes