繁华依在的小站

Ubuntu 设置电源键黑屏但不休眠

技术 作者:繁华依在 | 发布时间:2026-01-21 00:13 | 更新时间:2026-02-07 17:48 | 阅读:12 |
标签: Ubuntu Linux 系统配置 电源管理

Ubuntu 设置电源键黑屏但不休眠

前言

在日常使用电脑时,有时候我们希望按下电源键时只关闭屏幕,而不是让系统休眠或关机。这样做的好处是: - 保护屏幕,延长显示器寿命 - 节省电力 - 系统保持运行,后台任务继续执行 - 需要使用时可以快速恢复(移动鼠标或按键)

本文将介绍如何在 Ubuntu 系统中实现"按下电源键时黑屏但不休眠"的功能。

适用场景

  • 下载大文件时不想让屏幕一直亮着
  • 运行长时间计算任务需要保持系统运行
  • 听音乐时不需要屏幕显示
  • 离开工位但希望快速恢复工作

实现原理

在 Linux 系统中,电源按钮事件由以下组件处理:

  1. systemd-logind:系统级别的电源管理服务
  2. acpid(ACPI daemon):监听 ACPI 事件,包括电源键按下
  3. 桌面环境(如 GNOME):处理用户级别的电源设置

我们的实现方案是: - 让 systemd 忽略电源键事件 - 使用 acpid 监听电源键事件 - 触发自定义脚本关闭屏幕 - 使用 xset 命令控制显示器电源

实施步骤

1. 创建屏幕关闭脚本

首先创建一个脚本来实现关闭屏幕的功能:

#!/bin/bash
# 按下电源键时关闭屏幕但不休眠

if [ -x /usr/bin/xset ]; then
    # 使用 xset 关闭屏幕(适用于 X11)
    export DISPLAY=:0
    export XAUTHORITY=/home/lwl/.Xauthority
    /usr/bin/xset dpms force off
fi

exit 0

将这个脚本保存到 /etc/acpi/power-button.sh 并添加执行权限。

2. 创建 ACPI 事件配置

创建 ACPI 事件处理器配置文件 /etc/acpi/events/power-button

event=button/power PWR[BF] 00000080 00000000
action=/etc/acpi/power-button.sh %e

这个配置告诉 acpid 监听电源键按下事件,并执行我们的脚本。

3. 配置 systemd 忽略电源键

编辑 /etc/systemd/logind.conf 文件,修改电源键处理策略:

# 找到这一行:
#HandlePowerKey=poweroff

# 改为:
HandlePowerKey=ignore

这样 systemd 就不会处理电源键事件,避免与 acpid 冲突。

4. 重启相关服务

配置完成后,重启相关服务使设置生效:

# 重启 acpid 服务
sudo systemctl restart acpid

# 启用 acpid 开机自启
sudo systemctl enable acpid

# 重启 systemd-logind 服务
sudo systemctl restart systemd-logind

完整配置命令

为了方便,这里提供完整的配置命令:

# 1. 创建事件处理器配置
echo 'qwer' | sudo -S sh -c 'cat > /etc/acpi/events/power-button << "EOF"
event=button/power PWR[BF] 00000080 00000000
action=/etc/acpi/power-button.sh %e
EOF'

# 2. 创建动作脚本
echo 'qwer' | sudo -S sh -c 'cat > /etc/acpi/power-button.sh << "EOF"
#!/bin/bash
# 按下电源键时关闭屏幕但不休眠

if [ -x /usr/bin/xset ]; then
    export DISPLAY=:0
    export XAUTHORITY=/home/lwl/.Xauthority
    /usr/bin/xset dpms force off
fi

exit 0
EOF'

# 3. 添加执行权限
echo 'qwer' | sudo -S chmod +x /etc/acpi/power-button.sh

# 4. 修改 systemd 配置
echo 'qwer' | sudo -S sed -i 's/#HandlePowerKey=poweroff/HandlePowerKey=ignore/' /etc/systemd/logind.conf

# 5. 重启服务
echo 'qwer' | sudo -S systemctl restart acpid
echo 'qwer' | sudo -S systemctl enable acpid
echo 'qwer' | sudo -S systemctl restart systemd-logind

注意:将命令中的 qwer 替换为你自己的 sudo 密码。

测试方法

配置完成后,按照以下步骤测试:

  1. 按一下电源键(轻按,不要长按)
  2. 屏幕应该会立即黑屏
  3. 移动鼠标或按键盘任意键
  4. 屏幕应该会恢复正常显示

如果成功,说明配置已生效!

验证配置

可以通过以下命令验证配置是否正确:

# 查看 acpid 服务状态
sudo systemctl status acpid

# 查看事件配置
cat /etc/acpi/events/power-button

# 查看动作脚本
cat /etc/acpi/power-button.sh

# 查看 systemd logind 配置
grep HandlePowerKey /etc/systemd/logind.conf

注意事项

  1. 电源键操作方式

    • 轻按一次:关闭屏幕(我们配置的功能)
    • 长按 4 秒以上:强制关机(系统保留的安全机制)
    • 短按两次:关闭屏幕两次
  2. 系统兼容性

    • 适用于 Ubuntu 及其他使用 systemd 的 Linux 发行版
    • 需要安装 acpid 服务(通常已预装)
    • X11 和 Wayland 环境均可使用
  3. 唤醒方式

    • 移动鼠标
    • 按键盘任意键
    • 触摸板操作(如果是笔记本)
  4. 安全提示

    • 配置前建议先备份系统
    • 长按电源键仍然会强制关机
    • 如需恢复默认行为,删除配置文件并重启服务即可

故障排除

问题1:按电源键没反应

可能原因: - acpid 服务未运行 - 配置文件格式错误

解决方法

# 检查 acpid 服务状态
sudo systemctl status acpid

# 如果未运行,启动服务
sudo systemctl start acpid

# 查看日志
sudo journalctl -u acpid -f

问题2:按电源键直接关机

可能原因: - systemd logind 配置未生效 - acpid 配置未生效

解决方法

# 检查 systemd 配置
grep HandlePowerKey /etc/systemd/logind.conf

# 应该显示:HandlePowerKey=ignore

# 重启 systemd-logind
sudo systemctl restart systemd-logind

问题3:屏幕关闭后无法唤醒

可能原因: - 系统进入休眠状态而非只是关闭屏幕 - 显示器电源管理问题

解决方法

# 禁用系统自动休眠
gsettings set org.gnome.settings-daemon.plugins.power sleep-inactive-ac-type 'nothing'
gsettings set org.gnome.settings-daemon.plugins.power sleep-inactive-battery-timeout 0

恢复默认设置

如果需要恢复电源键的默认行为,执行以下操作:

# 1. 删除 acpid 配置
sudo rm /etc/acpi/events/power-button
sudo rm /etc/acpi/power-button.sh

# 2. 恢复 systemd 配置
sudo sed -i 's/HandlePowerKey=ignore/#HandlePowerKey=poweroff/' /etc/systemd/logind.conf

# 3. 重启服务
sudo systemctl restart acpid
sudo systemctl restart systemd-logind

进阶配置

1. 添加延迟关闭

如果希望电源键按下后延迟几秒再关闭屏幕:

#!/bin/bash
sleep 3  # 延迟 3 秒
/usr/bin/xset dpms force off

2. 添加通知提醒

在关闭屏幕前显示桌面通知:

#!/bin/bash
# 发送桌面通知
notify-send "电源管理" "屏幕即将关闭..."

# 延迟 2 秒后关闭屏幕
sleep 2
/usr/bin/xset dpms force off

3. 关闭屏幕并锁定

结合屏幕锁定功能:

#!/bin/bash
# 锁定屏幕
xdg-screensaver lock

# 关闭屏幕
/usr/bin/xset dpms force off

总结

通过配置 acpid 和修改 systemd 设置,我们成功实现了"按下电源键时黑屏但不休眠"的功能。这个配置:

优点: - 操作简单,一键实现 - 系统保持运行,不影响后台任务 - 快速恢复,无需等待系统唤醒 - 保护屏幕,节省电力

⚠️ 注意事项: - 长按电源键仍会强制关机 - 需要注意区分短按和长按 - 建议配合屏幕锁定功能使用

这个功能特别适合需要让电脑长时间运行但又不想屏幕一直亮着的场景,比如下载文件、编译代码、运行计算任务等。

参考资料


发布时间:2026-01-21

标签:#Ubuntu #Linux #系统配置 #电源管理

分类:技术

评论 (0)

暂无评论,快来抢沙发吧~

发表评论