使用 scrot 定期创建屏幕截图(不包括屏幕锁定的时间)

使用 scrot 定期创建屏幕截图(不包括屏幕锁定的时间)

我使用下一个 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

但是如果屏幕锁定,也可以截屏。如果屏幕未锁定,如何截屏?

系统 - Ubuntu 14.10 与 Unity

[解决方案]

感谢@solsTiCe。整个剧本是

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

答案1

您可以使用总线检查统一锁定的财产。

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

因此狂欢你可以做这样的函数

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

相关内容