我有一个在后台运行的程序,该程序仅每N秒拍摄一次屏幕截图。
例如:

#!/bin/sh

while true; do
  take-screenshot
  sleep 10
done

我要实现的只是在屏幕未锁定的情况下截取屏幕截图。
例如:
#!/bin/sh

while true; do
  if ! screen-is-locking; then
    take-screenshot
    sleep 10
  fi
done
如何确定我的桌面是否锁定在命令行中?

最佳答案

根据该问题下其他评论提供的this link,我得到了我的问题的解决方案或解决方法,它在5.4.58-1-MANJARO KDE Plasma下效果很好(根据该回答的陈述,其他DE可能具有不同的方式)。
dbus服务中有一种方法很适合我的需求:

#/bin/sh

is_screen_locking()
{
  if dbus-send --session --dest=org.freedesktop.ScreenSaver --type=method_call --print-reply /org/freedesktop/ScreenSaver org.freedesktop.ScreenSaver.GetActive | grep 'boolean true' > /dev/null; then
    return 0
  else
    return 1
  fi
}



if is_screen_locking; then
   echo 'screen is locking'
else
   echo 'screen is not locking'
fi

09-16 04:24