如何从命令行唤醒 Debian 11 屏幕 (Wayland)? (停用“黑屏”)

如何从命令行唤醒 Debian 11 屏幕 (Wayland)? (停用“黑屏”)

我已经设置了一个 MQTT 程序来控制我的 Debian 服务器。我的服务器机柜中有一个运动传感器,我希望当我走进机柜时(甚至在我移动鼠标或触摸键盘之前)屏幕自动打开。我仍然希望屏幕在 5 分钟后关闭不活动。

我能够跑去sudo vbetool dpms off关闭显示器,然后sudo vbetool dpms on再次打开它。但是,我注意到即使显示器关闭,我仍然可以通过 VNC 访问服务器。

我在“设置”中有这些省电选项,“黑屏”设置似乎破坏了一切:

Debian 电源设置

如果激活“黑屏”,sudo vbetool dpms on则会打开屏幕,但屏幕保持黑屏。我也无法再通过 VNC 连接。

如何从命令行停用 Debian 的“黑屏”?我可以运行一些东西来模拟摆动鼠标吗?或者我应该禁用“黑屏”设置并使用其他东西在不活动后关闭屏幕? (x屏保?)

我正在使用 Wayland,所以我似乎无法运行xset我在网上找到的任何命令或 Xorg 的其他东西。

这是我拥有的包含“会话”的所有进程:

# ps ax | grep session
  24510 ?        Ss     0:00 /usr/bin/dbus-daemon --session --address=systemd: --nofork --nopidfile --systemd-activation --syslog-only
  27420 ?        Sl     0:00 gdm-session-worker [pam/gdm-password]
  27451 ?        Ss     0:00 /usr/bin/dbus-daemon --session --address=systemd: --nofork --nopidfile --systemd-activation --syslog-only
  27475 ?        S<l    0:00 /usr/bin/pipewire-media-session
  27480 tty3     Ssl+   0:00 /usr/libexec/gdm-wayland-session /usr/bin/gnome-session
  27487 tty3     Sl+    0:00 /usr/libexec/gnome-session-binary --systemd
  27541 ?        Ssl    0:00 /usr/libexec/gnome-session-ctl --monitor
  27546 ?        Ssl    0:00 /usr/libexec/gnome-session-binary --systemd-service --session=gnome
  27708 ?        Sl     0:00 /usr/libexec/at-spi2-registryd --use-gnome-session
  28262 pts/1    S+     0:00 grep --color=auto session

答案1

我终于找到了一个可靠的解决方案。有一个名为“ydotool”的命令行工具,您可以使用它来移动鼠标或发送击键。

您可以使用 apt 安装的版本太旧并且有很多错误,因此我需要从 GitHub 克隆它并从源代码编译它。这是我为此运行的所有命令:

git clone https://github.com/ReimuNotMoe/ydotool
cd ydotool
mkdir build
cd build
cmake ..
make -j `nproc`
sudo make install
cp ydotool.service /etc/systemd/system/
systemctl daemon-reload
systemctl enable ydotool.service
systemctl start ydotool.service

现在您将拥有一个ydotool可以使用的命令。

这是我编写的一个简单的“摆动鼠标”脚本,用于唤醒屏幕:

#!/bin/bash

set -eu
ydotool mousemove --absolute -- 355 0
sleep 0.1
ydotool mousemove --absolute -- 350 0

这对我来说效果很好,我可以继续使用 Debian 省电设置中的内置“黑屏”功能。

相关内容