锁屏时关闭浏览器

锁屏时关闭浏览器

我在共享的低资源计算机上运行 xubuntu。我想运行一个脚本,每当用户锁定屏幕时,该脚本就会终止浏览器(firefox 和 chromium),以便其他用户可以使用资源。

我相信这不是很难做到,但我在这方面的经验为零。有人可以帮忙吗,我想一个简短的脚本应该可以做到这一点?

谢谢你们。

答案1

由于您使用的是低资源系统,我猜测默认的屏幕锁是 xlock,没有打开任何屏幕保护程序。在这种情况下,您必须将屏幕锁定命令从“xlock”编辑为“xlock && pkill firefox”或“xlock && pkill chromium”。我对此不了解更多,但基本上,如果您在命令后添加“ && ”,则可以放置另一个命令,该命令仅在第一个命令完成时才会执行(例如,当 xlock 退出解锁屏幕时)。

答案2

编写一个屏幕保护程序。

这并不像听起来那么疯狂。 Xlock 使用不属于屏幕锁定程序的屏幕保护程序在屏幕上绘图,因此您可以编写一个简单的 shell 脚本来终止浏览器,然后exec使用另一个屏幕保护程序在屏幕上绘图,并将 xlock 设置为使用该脚本作为屏幕保护程序。我可能可以把它减少到大约五行。

答案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

它来自在屏幕锁定/解锁时运行脚本

相关内容