Ubuntu Screen Lock

2

Cuando bloqueo la pantalla en Ubuntu, quiero que la transmisión se abra automáticamente, y cuando desbloqueo la pantalla, la transmisión debería detenerse o morir.

He buscado mucho pero no puedo encontrar nada que valga la pena.

Pensé en una solución, crear un trabajo cron y usar gnome-screensaver-command -qe iniciar la transmisión, parece un desperdicio. ¿Hay una mejor manera (algo basado en eventos)?

N 1.1
fuente

Respuestas:

2

Puede usar dbus para obtener los eventos cuando el protector de pantalla se activa o desactiva, consulte aquí .

Puede usar transmission-remotepara controlar la transmisión desde la línea de comando, como se muestra aquí .

Por lo tanto, terminará con un script perl en la línea de:

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

(Estoy escribiendo esto en Windows sin perl / transmisión, por lo que es casi seguro que no funcionará correctamente).

Neal
fuente
Gracias por señalar en la dirección correcta, pero no sé Perl, así que no puedo comprobarlo ahora. Y esto para "member = 'SessionIdleChanged'". Quiero cuando bloqueo la pantalla manualmente.
N 1.1
1

Okay. Se me ocurrió un script de Python que hace lo que quiero usando dbus-monitor

#!/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")

En el caparazón

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