Czy program może wykryć, że działa na odłączonym ekranie?

10

Korzystam z interaktywnego programu przekleństw w sesji ekranowej na dość słabym sprzęcie. Przez większość czasu ekran jest odłączony. Czy istnieje sposób, aby ten program wykrył tę sytuację i po prostu przestał malować na ekranie?

Joachim Breitner
źródło
jestem po prostu ciekawy: jakie są niektóre z powodów, dla których uruchamiałbyś odłączony ekran?
amfibia
3
@foampile Jeśli nigdy nie zamierzasz odłączać ekranu, to po co w ogóle uruchamiać ekran?
Michael Mrozek

Odpowiedzi:

8

Wywoływany jest skrypt irssi, screen_awayktóry określa twój status nieobecności na podstawie tego, czy ekran jest podłączony. Działa to tak:

Każda powłoka działająca na ekranie będzie miała STYzmienną środowiskową ustawioną na nazwę gniazda. Możesz uruchomić, screen -lsaby uzyskać ścieżkę, w której przechowywane są wszystkie gniazda:

$ 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.

Sprawdź bit wykonania na /var/run/screen/.../$STY. Jeśli jest ustawiony, ekran jest dołączony; w przeciwnym razie jest odłączony. Z powyższego wyjścia widać, że dwa z moich trzech ekranów są podłączone, a tutaj ustawione są odpowiednie bity wykonania:

$ 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

Można też po prostu zaglądać wyjście screen -lsdla wiersza, który zawiera $STYi zobacz, jeśli kończy się (Attached)albo (Detached), ale to wymaga prowadzenia screenkółko

Michał Mrożek
źródło
1
Ha, nauczyłem się dzisiaj czegoś nowego. Masz pomysł, czy ten bit wykonania oznacza coś więcej niż tylko flagę „dołączony / odłączony”?
jw013,