Crie capturas de tela periodicamente usando o scrot, excluindo o tempo quando a tela está bloqueada

1

Eu faço uma captura de tela por minuto usando o próximo script bash

while true;
do
    scrot -d 60 -q 1 '%Y-%m-%d-%H:%M:%S.png' -e 'mkdir -p ~/screen-snapshots/%Y-%m-%d & mv $f ~/screen-snapshots/%Y-%m-%d/';
done

Mas as capturas de tela são feitas também se a tela estiver bloqueada. Como fazer capturas de tela apenas a tela não está bloqueada?

System - Ubuntu 14.10 com Unity

[Solução]

Obrigado pelo @solsTiCe. Todo o roteiro é

#!/bin/bash

function isScreenLocked() {
    gdbus call -e -d com.canonical.Unity -o /com/canonical/Unity/Session -m com.canonical.Unity.Session.IsLocked | grep -q false
}

while true;
do
    sleep 60;
    if isScreenLocked
    then
        scrot -q 1 '%Y-%m-%d-%H:%M:%S.png' -e 'mkdir -p ~/screen-snapshots/%Y-%m-%d; mv $f ~/screen-snapshots/%Y-%m-%d/';
    fi
done
    
por Nawa 10.05.2015 / 16:05

1 resposta

2

você pode usar gdbus para verificar a propriedade locked unity .

gdbus call -e -d com.canonical.Unity -o /com/canonical/Unity/Session -m com.canonical.Unity.Session.IsLocked

Então, em bash você pode fazer uma função como esta

function IsScreenLocked() {
    gdbus call -e -d com.canonical.Unity -o /com/canonical/Unity/Session -m com.canonical.Unity.Session.IsLocked|grep -q true
}
    
por solsTiCe 10.05.2015 / 16:20