화면이 잠겨 있으면 브라우저를 닫으세요.

화면이 잠겨 있으면 브라우저를 닫으세요.

공유 리소스가 적은 시스템에서 xubuntu를 실행하고 있습니다. 다른 사용자가 리소스를 사용할 수 있도록 사용자가 화면을 잠글 때마다 브라우저(firefox 및 chromium)를 종료하는 스크립트를 실행하고 싶습니다.

나는 이것이 하기가 그리 어렵지 않다고 확신하지만, 나는 이 분야에 대한 경험이 전혀 없습니다. 누구든지 도와주실 수 있나요? 짧은 스크립트가 도움이 될 것 같나요?

다들 감사 해요.

답변1

리소스가 적은 시스템을 사용하고 계시기 때문에 기본 화면 잠금은 화면 보호기가 켜지지 않은 xlock인 것 같습니다. 이 경우 화면 잠금 명령을 "xlock"에서 "xlock && pkill firefox" 또는 "xlock && pkill chromium"으로 편집해야 합니다. 나는 이것에 대해 더 많이 알지 못하지만 기본적으로 명령 뒤에 " && "를 추가하면 첫 번째 명령이 완료될 때만 실행되는 다른 명령을 넣을 수 있습니다(예를 들어 xlock이 화면 시간 잠금을 해제하기 위해 종료될 때) ).

답변2

화면 보호기를 작성합니다.

이것은 들리는 것만큼 미친 것이 아닙니다. Xlock은 화면 잠금 프로그램의 일부가 아닌 화면 보호기를 사용하여 화면에 그림을 그립니다. 따라서 브라우저를 종료하는 간단한 쉘 스크립트를 작성한 다음 exec다른 화면 보호기를 사용하여 화면에 그림을 그리고 xlock을 설정하여 해당 스크립트를 브라우저로 사용할 수 있습니다. 화면 보호기. 아마 5줄 정도로 줄일 수 있을 것 같아요.

답변3

Linux의 kill 명령은 프로세스에 다양한 신호를 보낼 수 있습니다. 그 중 하나는 STOP일 수 있으며, 이는 CONT 신호를 보낼 때까지 프로세스를 정지시킵니다. 이 중 어느 것도 사람을 죽이지 않았습니다.

정말로 누군가를 죽이고 싶다면 TERM 신호를 사용하세요.

여러 개의 열려 있는 브라우저가 메모리를 공유할 수 있으며 다른 사람들이 제안한 것처럼 브라우저가 닫혀서 연구 결과가 손실되는 것을 원하지 않습니다.

아무도 뭔가를 하지 않을 때 CPU를 낭비하는 것은...그건 다릅니다.

오래 전에 저는 화면 보호기의 상태에 따라 브라우저를 고정하거나 고정 해제하는 스크립트를 만들었습니다.

코드의 일부는 다음에서 옵니다.https://www.jwz.org/xscreensaver/man3.html

여기에 예제를 복사하고 있습니다.

#!/usr/bin/perl

my $blanked = 0;
open (IN, "xscreensaver-command -watch |");
while (<IN>) {
    if (m/^(BLANK|LOCK)/) {
        if (!$blanked) {
            system "sound-off";
            $blanked = 1;
        }
    } elsif (m/^UNBLANK/) {
        system "sound-on";
        $blanked = 0;
    }
}

다음 명령을 사용하여 신호를 보낼 수 있습니다

system "killall --ignore-case --quiet -s STOP iceweasel chromium firefox firefox-esr"; 

system "killall --ignore-case --quiet -s CONT iceweasel chromium firefox firefox-esr";

이제 조각들을 서로 붙이고 특정 화면 보호기와 브라우저에 적용한 다음 테스트해야 합니다.


또 다른 예는 다음과 같습니다(다시 사용된 화면 보호기에 따라 다름).

dbus-monitor --session "type='signal',interface='org.gnome.ScreenSaver'" |
  while read x; do
    case "$x" in 
      *"boolean true"*) echo SCREEN_LOCKED;;
      *"boolean false"*) echo SCREEN_UNLOCKED;;
      *) echo OTHER_CASE;;  
    esac
  done

그것은에서 온다화면이 잠기거나 잠금 해제되면 스크립트 실행

관련 정보