Executando isto:
[Unit]
Description=Save a screenshot
Wants=screenshot.timer
[Service]
Type=oneshot
ExecStart=/bin/sh -c 'DISPLAY=:0 scrot /home/myuser/Pictures/Journal/$(date +"%s").png'
[Install]
Resulta em:
scrot: Saving to file /home/myuser/Pictures/Journal//usr/bin/zsh.png failed: No such file or directory
Por que? O mesmo comando, executado em um shell, funciona:
% /bin/sh -c 'DISPLAY=:0 scrot /home/myuser/Pictures/Journal/$(date +"%s").png'
% echo $?
0
%
O comando que uso é:
systemctl --user daemon-reload && systemctl --user start screenshot.service; systemctl --user status screenshot.service
Uma unidade systemd pode fazer uso de vários "especificadores" em vários campos, um dos quais é
%s
:Quando você precisar usar
%
em uma unidade systemd em um campo sujeito à interpretação do especificador, use%%
.