如何自动关闭和打开用作服务器的笔记本电脑的显示器正文:

如何自动关闭和打开用作服务器的笔记本电脑的显示器正文:

我正在将笔记本电脑重新用作家庭服务器(运行 Ubuntu Server 22.04 LTS)。为了节省能源(并延长背光寿命),我正在寻找一种方法,当我按下某个键时,显示器会自动关闭并重新打开。

具体要求如下:

自动开启:当我按下物理键盘上的任意键时,笔记本电脑显示器会自动打开,并在一段时间后关闭。

自动关闭:交互一段时间后它应该会重新关闭。

当通过 SSH 连接到服务器时,我成功使用sudo vbetool dpms off并打开和sudo vbetool dpms on关闭监视器。

我也成功使用evtest来识别键盘/dev/input

在一些人工智能的帮助下,我使用了以下脚本并将其作为服务运行:

  #!/bin/bash

  while true; do
    sudo vbetool dpms off
    # turn on if anything from the keyboard
    sudo cat "\dev\input\event4" | (
        # Read a byte if any
        read -n 1
        sudo vbetool dpms on

        sleep 10 #seconds
    )
  done

我在检测物理输入以重新激活显示器时遇到问题。使用 sudo cat 时,\dev\input\event4我看到按下某个键时出现了一些垃圾,但服务运行时显示器不会重新打开。

有人可以提出解决办法吗?

谢谢你!

答案1

手动检查:

sudo vbetool dpms off; sleep 5; sudo vbetool dpms on

如果显示器 5 秒后仍未唤醒,则

sudo vbetool dpms on

然后请使用“编辑”按钮更新问题,并提供相应信息以确认其是否有效。

答案2

#!/bin/bash

KEYBOARD_DEVICE="/dev/input/event4"
IDLE_TIME=10

turn_off_monitor() {
  echo 'OFF'
  sudo vbetool dpms off
}

turn_on_monitor() {
  echo 'ON'
  sudo vbetool dpms on
}

turn_on_monitor

reset_timer() {
  if [[ -n $TIMER_PID ]]; then
    kill $TIMER_PID 2>/dev/null
  fi
  # Special for MURU from the comments: SLEEP, again...
  (sleep $IDLE_TIME; turn_off_monitor) &
  TIMER_PID=$!
}

reset_timer

sudo evtest "$KEYBOARD_DEVICE" | while read line; do
  turn_on_monitor
  reset_timer
done

我刚刚尝试了一下,效果与预期一致。首先,请注释掉以下行sudo vbetool dpms onsudo vbetool dpms 关闭。然后,只需在终端中测试一下,确保你看到离开消息按预期显示。确认后,您可以取消注释工具行并再次测试。

相关内容