Hace un tiempo, pregunté cómo detener un reproductor de música mientras la pantalla está bloqueada. La respuesta fue usar actkbd que funciona de maravilla. Ahora quería agregar actkbd como un servicio a systemd para iniciarlo automáticamente al arrancar. Como puede ver, el servicio se inicia correctamente y también se muestra en htop. Algunos resultados a continuación:
[root@hostname init.d]# systemctl start actkbd.service
[root@hostname init.d]# systemctl status actkbd.service
actkbd.service - Actkbd: Daemon for X-independent shortcuts
Loaded: loaded (/etc/systemd/system/multi-user.target.wants/actkbd.service)
Active: active (running) since Tue, 10 Apr 2012 17:50:36 +0200; 2s ago
Process: 23526 ExecStart=/usr/local/sbin/actkbd -d /dev/input/event3 -D (code=exited, status=0/SUCCESS)
Main PID: 23527 (actkbd)
CGroup: name=systemd:/system/actkbd.service
└ 23527 /usr/local/sbin/actkbd -d /dev/input/event3 -D
[root@hostname init.d]# systemctl stop actkbd.service
[root@hostname init.d]# ps -C actkbd
PID TTY TIME CMD
Tengo el siguiente actkbd.servicearchivo en/etc/systemd/system/multi-user.target.wants/
[Unit]
Description=Actkbd: Daemon for X-independent shortcuts
[Service]
Type=forking
ExecStart=/usr/local/sbin/actkbd -d /dev/input/event3 -D
ExecReload=/bin/kill -HUP $MAINPID
ExecStop=/bin/kill -15 $MAINPID
Restart=always
User=root
Entonces, el problema es que después de iniciar el servicio con systemctl no pasa nada si presiono mi acceso directo habitual para pausar Rhythmbox. Si en su lugar solo ejecuto el comando a /usr/local/sbin/actkbd -d /dev/input/event3 -Dtravés de un terminal raíz, todo funciona bien. ¿Por qué eso?
Lo siento si es algo obvio, soy nuevo en el negocio de systemd pero no pude encontrar nada que me ayudara.
Salud.
EDITAR: Esto todavía no funciona. Si alguien tiene algo de tiempo, agradecería que uno pudiera intentar reproducirlo. Si eso es posible, entonces presentaré un informe de error.
actkbdconsystemd, debido a la falta de tiempo, pero sospecho que su problema tiene que ver conactkbdque se inició antes de que el sistema de entrada está totalmente inicializado -actkbdfunciona bien cuando se inicia como un servicio de LSB en mi portátil desarrollo. Debe asegurarse de que se inicie después de iniciar elevdevmódulo y de que su teclado siempre tenga el mismoeventXnodo de dispositivo.