获取 xautolock 状态

获取 xautolock 状态

我目前正在使用自动锁定自动锁定我的屏幕。不过,当我看电影的时候,我当然想让我的屏幕突然变黑。我阅读了联机帮助页,发现xautolock -toggle绑定到键盘快捷键应该可以让我控制整个事情。

但是,我想看看现在的状态。否则我会感到困惑。有谁知道找到 xautolock 状态的方法,或者我应该做一些事情,比如制作一个包含当前状态的文件并使用 -enable / -disable,检查文件,然后notify-send执行某些操作?

答案1

快速检查源代码当前版本的,表明它不支持此功能,尽管如果您了解一点关于以及如何编写程序xautolock 2.2的话,自己实现它并不难。CX

原因可能是这样的:每当您想知道 的状态时xautolock,您也知道您希望它处于什么状态。因此,xautolock -disable如果您希望它关闭,则只需发出即可,xautolock -enable反之则发出。请注意,xautolock执行此操作不会影响您的所有其他设置。

按照您建议的方式自己跟踪状态也是可能的,但可能有些不可靠且容易出错。

答案2

您可以使用大多数媒体播放器内置的功能来管理它;它可以与xautolock储物柜有效配合。

多用途车播放器两者都有屏幕保护程序选项:

--停止屏幕保护程序,--不停止屏幕保护程序 在启动时关闭屏幕保护程序(或屏幕消隐器和类似机制)并将其打开 退出时再次打开(默认值:是)。当播放器播放时,屏幕保护程序始终会重新启用 已暂停。 并非所有视频输出或平台都支持此功能。有时会实施, 但不起作用(在 GNOME 上经常发生)。您也许可以使用以下方法来解决此问题 --heartbeat-cmd 代替。

您可以通过在以下内容中包含该行来启用此功能~/.mpv/config

stop-screensaver=yes

并享受不间断的视频播放。

如果您使用的媒体播放器不具备此基本功能,则可以使用简单的包装器来实现相同的效果:

#!/usr/bin/env bash
# wrapper to prevent screen blanking when files are played from ~/Videos

usage() {
    printf "%s\n" "Usage: ${0##*/} /path/to/file"
    exit 1
}

case $# in
    1)  if [[ $1 =~ Videos ]]; then
            xset dpms 0 0 0
            xautolock -disable
            vlc "$1"
            xautolock -enable
            xset dpms 900 900 900
        else
            usage
        fi
        ;;
    *) usage
        ;;
esac

答案3

我设法按照OP的要求去做,它全部包含在我的i3配置中,绑定到快捷方式(见下文)。因此,我使用 Mod+o 锁定屏幕,然后使用 Mod+Shift+o 切换自动屏幕锁定,其中会出现通知,告诉我“锁定”或“锁定关闭”,具体取决于 xautolock 的“状态”。我用它来xautlock -exit确定它是否正在运行,而无需在额外的文件中管理状态。

单独处理切换状态的脚本如下所示

if xautolock -exit
    then (notify-send -u normal -t 100 -- 'LOCK OFF') 2> /dev/null
    else
        notify-send -u normal -t 100 -- 'LOCK on'
        xautolock -time 2 -locker 'slock' -notify 10 -notifier "notify-send -u normal -t 100 -- 'LOCKING screen ...'"
fi

根据您调用该脚本的位置,您必须确保xautolock -time ...在后台运行(例如通过添加&)。

从我的.i3/config文件中:

exec --no-startup-id xautolock -time 2 -locker 'slock' -notify 10 -notifier "notify-send -u normal -t 10000 -- 'LOCKING screen'"

bindsym $mod+o exec --no-startup-id xautolock -locknow
bindsym $mod+Shift+o exec --no-startup-id "if xautolock -exit; then (notify-send -u normal -t 100 -- 'LOCK OFF') 2> /dev/null; else notify-send -u normal -t 100 -- 'LOCK on'; xautolock -time 2 -locker 'slock' -notify 10 -notifier \\"notify-send -u normal -t 100 -- 'LOCKING screen ...'\\"; fi"

相关内容