You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Raspbian(RPI4)中用Conky显示DPMS待机剩余时间?

在Raspbian树莓派4上用Conky显示DPMS待机剩余时间

在树莓派4的Raspbian系统上实现这个需求其实不难,核心是结合两个小工具获取必要数据,计算剩余时间后传给Conky显示。下面是具体步骤:

1. 安装必要工具

首先需要xprintidle来获取系统当前的空闲时长(毫秒数),Raspbian默认没有预装这个工具,执行以下命令安装:

sudo apt update && sudo apt install xprintidle

2. 提取DPMS待机超时时间

我们可以用xset q命令查看当前DPMS的配置,其中包含待机(Standby)的超时秒数。用以下命令可以直接提取这个数值:

xset q | grep -A 1 'DPMS is Enabled' | grep 'Standby:' | awk '{print $2}'

执行后会返回类似1200这样的数字,也就是你设置的待机超时秒数。

3. 编写计算剩余时间的脚本

创建一个名为dpms_remaining.sh的脚本(建议放在用户主目录下,比如~/dpms_remaining.sh),内容如下:

#!/bin/bash

# 获取DPMS待机超时的秒数
DPMS_STANDBY=$(xset q | grep -A 1 'DPMS is Enabled' | grep 'Standby:' | awk '{print $2}')
# 如果DPMS未启用,提示信息并退出
if [ -z "$DPMS_STANDBY" ]; then
    echo "DPMS未启用"
    exit 1
fi

# 获取当前系统空闲的毫秒数
IDLE_MS=$(xprintidle)
# 转换为秒
IDLE_SEC=$((IDLE_MS / 1000))

# 计算剩余待机时间(秒)
REMAINING_SEC=$((DPMS_STANDBY - IDLE_SEC))

# 处理剩余时间为负的情况(已进入待机)
if [ $REMAINING_SEC -lt 0 ]; then
    echo "屏幕已待机"
else
    # 转换为分钟
    REMAINING_MIN=$((REMAINING_SEC / 60))
    echo "距离屏幕关闭还有${REMAINING_MIN}分钟"
fi

给脚本添加执行权限:

chmod +x ~/dpms_remaining.sh

4. 在Conky配置中调用脚本

打开你的Conky配置文件(通常是~/.conkyrc),添加一行内容来调用这个脚本:

${execpi 10} ~/dpms_remaining.sh}

这里的execpi表示每隔指定秒数(这里是10秒)重新执行脚本并更新显示,你可以根据需要调整这个间隔(比如改成5秒)。

注意事项

  • 确保你的用户有访问X服务器的权限:xset和xprintidle都依赖X环境,如果你是自动登录的桌面用户,一般没问题;如果是远程连接,可能需要先设置export DISPLAY=:0环境变量。
  • 如果DPMS未启用,可以用xset s on启用,或者用xset s 1200直接设置待机超时为1200秒(20分钟)。

内容的提问来源于stack exchange,提问作者Bdgisme

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.07 16:58:09