Bloqueio de tela do Ubuntu

2

Quando bloqueio o ecrã no Ubuntu, quero que a transmissão se abra automaticamente e, quando desbloqueio o ecrã, a transmissão deve parar-se ou morrer.

Eu pesquisei muito, mas não encontrei nada que valesse a pena.

Pensei em uma solução, de criar um cron job e usar gnome-screensaver-command -q e iniciar a transmissão, parece um desperdício. Existe uma maneira melhor (algo baseado em eventos)?

    
por N 1.1 17.10.2010 / 10:41

2 respostas

2

Você pode usar o dbus para se apossar dos eventos quando o protetor de tela é ativado ou desativado, veja here .

Você pode usar transmission-remote para controlar a transmissão a partir da linha de comando, conforme mostrado aqui .

Portanto, você terminará com um script perl nos seguintes termos:

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;
    }
}

(Estou escrevendo isso no Windows sem perl / transmissão, então é quase certo que não funcionará corretamente.)

    
por 17.10.2010 / 11:56
1

Ok. Eu criei um script python que faz o que eu quero usando monitor-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")

No shell,

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