Ubuntu 屏幕锁定

Ubuntu 屏幕锁定

当我在 Ubuntu 上锁定屏幕时,我希望传输自动打开,而当我解锁屏幕时,传输应该自动暂停或停止。

我搜索了很多,但没有找到任何有价值的东西。

我想到了一个解决方案,创建一个 cron 作业并使用gnome-screensaver-command -q并启动传输,这似乎是一种浪费。有没有更好的方法(基于事件的方法)?

答案1

您可以使用 dbus 来获取屏幕保护程序激活或停用时的事件,请参阅这里

您可以使用transmission-remote从命令行控制传输,如下所示这里

因此你最终会得到如下的 perl 脚本:

my $cmd = "dbus-monitor --session \"type='signal',interface='org.gnome.ScreenSaver',member='ActiveChanged'\"";

$starttrans="transmission-remote --torrent all --start";
$stoptrans="transmission-remote --torrent all --stop";

open (IN, "$cmd |");

while (<IN>) {
    if (m/^\s+boolean true/) {
        starttrans;
    } elsif (m/^\s+boolean false/) {
        stoptrans;
    }
}

(我在没有 perl/传输的 Windows 中编写此程序,因此它几乎肯定无法正常工作。)

答案2

好的。我已经想出了一个python脚本,它可以完成我想要的操作dbus 监控

#!/usr/bin/python
import os, sys

while True:
    line = sys.stdin.readline()
    if "boolean true" in line:
        print os.system("transmission -m &")
    elif "boolean false" in line:
        print os.system("pkill transmission")

在贝壳上,

dbus-monitor type=signal,\
             interface=org.gnome.ScreenSaver,\
             member=ActiveChanged\
             | ./script.py  &

相关内容