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

🏷️ 365bet体育线上 📅 2026-11-08 18:05:35 👤 admin 👁️ 496 ❤️ 469
如何在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

相关内容

国芯科技(688262.SH):广州领芯新产品“RAID(磁盘阵列)控制芯片及阵列卡存储扩展系统”通过测试验收Release date:2022-07-29 Of views:8218
如何查看苹果账户余额
365国际体育官网

如何查看苹果账户余额

📅 08-11 👁️ 1546
福建区号(福建的区号是多少?)
365bet体育线上

福建区号(福建的区号是多少?)

📅 09-16 👁️ 4503