文档说明: 本文档记录 Beelink SER8 mini PC 在 Arch Linux + KDE 桌面环境下使用过程中遇到的问题、解决方案和系统操作。


亮度自动降低问题解决方案

问题描述

系统在锁屏、关闭显示器或重启后,显示器亮度会被自动调低到 30% 左右,且不会自动恢复。

环境信息

  • 设备: Beelink SER8 (mini PC)
  • 系统: Arch Linux
  • 桌面环境: KDE Plasma
  • 亮度控制: DDC/CI (通过 ddcutil)

解决方案

方案 1: 禁用 KDE 的自动亮度调节 (推荐)

  1. 打开 KDE 系统设置:
1
systemsettings5
  1. 导航到: 电源管理 (Power Management)节能 (Energy Saving)

  2. 检查以下设置:

    • 取消勾选 “当空闲时降低屏幕亮度” (Dim screen when idle)
    • 取消勾选 “在锁定屏幕时降低亮度” (Dim screen on lock)
    • 在 “屏幕亮度” 部分,将所有电源模式下的亮度设置为你想要的值(如 100%)
  3. 点击 “应用” 保存设置

方案 2: 创建亮度恢复脚本

创建一个脚本在登录时自动恢复亮度:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
# 1. 首先检查显示器信息
ddcutil detect

# 2. 获取当前亮度值
ddcutil getvcp 10

# 3. 创建亮度恢复脚本
cat > ~/.local/bin/restore-brightness.sh << 'EOF'
#!/bin/bash
# 设置显示器亮度为 100%
# 如果有多个显示器,可能需要指定 --display 参数
sleep 2  # 等待显示器就绪
ddcutil setvcp 10 100
EOF

chmod +x ~/.local/bin/restore-brightness.sh

# 4. 创建 systemd 用户服务
mkdir -p ~/.config/systemd/user/
cat > ~/.config/systemd/user/restore-brightness.service << 'EOF'
[Unit]
Description=Restore monitor brightness
After=graphical-session.target

[Service]
Type=oneshot
ExecStart=%h/.local/bin/restore-brightness.sh
RemainAfterExit=yes

[Install]
WantedBy=default.target
EOF

# 5. 启用服务
systemctl --user enable restore-brightness.service
systemctl --user start restore-brightness.service

方案 3: 配置 DDC/CI 权限和模块

确保 DDC/CI 模块正确加载:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
# 1. 检查 i2c 模块
lsmod | grep i2c

# 2. 加载必要模块(如果未加载)
sudo modprobe i2c-dev

# 3. 永久加载模块
echo "i2c-dev" | sudo tee /etc/modules-load.d/i2c.conf

# 4. 添加用户到 i2c 组
sudo usermod -aG i2c $USER

# 5. 创建 udev 规则
sudo tee /etc/udev/rules.d/45-ddcutil-i2c.rules << 'EOF'
KERNEL=="i2c-[0-9]*", GROUP="i2c", MODE="0660"
EOF

# 6. 重新加载 udev 规则
sudo udevadm control --reload-rules
sudo udevadm trigger

方案 4: 禁用 KDE 的 PowerDevil 亮度管理

如果上述方案都不奏效,可以尝试禁用 PowerDevil 对亮度的控制:

1
2
3
4
5
6
7
8
# 编辑 PowerDevil 配置
kwriteconfig5 --file powermanagementprofilesrc --group AC --group DimDisplay --key idleTime 0
kwriteconfig5 --file powermanagementprofilesrc --group Battery --group DimDisplay --key idleTime 0
kwriteconfig5 --file powermanagementprofilesrc --group LowBattery --group DimDisplay --key idleTime 0

# 重启 PowerDevil
killall plasmashell
kstart5 plasmashell

方案 5: 检查和修复 DPMS 设置

显示器可能在 DPMS 待机后恢复时亮度被重置:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
# 1. 检查当前 DPMS 设置
xset q | grep -A 5 "DPMS"

# 2. 创建脚本在显示器唤醒时恢复亮度
cat > ~/.local/bin/monitor-wake-brightness.sh << 'EOF'
#!/bin/bash
# 监听显示器状态变化并恢复亮度
while true; do
    if xset q | grep "Monitor is On" > /dev/null 2>&1; then
        ddcutil setvcp 10 100
        sleep 60  # 避免频繁执行
    fi
    sleep 5
done
EOF

chmod +x ~/.local/bin/monitor-wake-brightness.sh

调试步骤

如果问题依然存在,请执行以下命令收集信息:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
# 1. 检查显示器
ddcutil detect
ddcutil getvcp 10  # 获取当前亮度

# 2. 检查 KDE 电源管理日志
journalctl --user -u plasma-kwin_x11.service -f

# 3. 监控亮度变化
watch -n 1 'ddcutil getvcp 10'

# 4. 检查 PowerDevil 配置
cat ~/.config/powermanagementprofilesrc

# 5. 检查是否有其他亮度控制服务
systemctl --user list-units | grep -i bright
systemctl list-units | grep -i bright

推荐操作顺序

  1. 首先尝试方案 1 - 最简单直接
  2. 如果方案 1 不奏效,尝试 方案 2 - 创建自动恢复脚本
  3. 确保 方案 3 的权限配置正确
  4. 如果还有问题,执行 调试步骤 找出具体原因

注意事项

  • 重启系统或重新登录后测试效果
  • 有些设置可能需要注销后才能生效
  • 如果使用多个显示器,ddcutil 命令可能需要添加 --display 参数
  • 确保显示器支持 DDC/CI 协议(大多数现代显示器都支持)

常见问题

Q: 为什么亮度总是重置为 30%?
A: 这通常是 KDE PowerDevil 的默认"节能"设置。检查电源管理中的所有配置文件(交流电、电池、低电量)。

Q: ddcutil 命令执行很慢
A: 这是正常的,DDC/CI 通信需要时间。可以添加 --sleep-multiplier 0.1 参数加快速度。

Q: 显示器不支持 DDC/CI 怎么办?
A: 如果显示器不支持 DDC/CI,可能需要通过显示器的 OSD 菜单手动设置亮度,并禁用系统的亮度控制。


KDE Plasma 窗口无法拖动问题解决方案

问题描述

重启电脑后,KDE Plasma 桌面环境中的窗口无法通过标题栏拖动,只能进行最小化和最大化操作。

可能原因

  • KWin 窗口管理器配置损坏
  • 窗口装饰(Window Decorations)未正确加载
  • KWin 合成器(Compositor)问题
  • 快捷键冲突

解决方案

方案 1: 重启 KWin 窗口管理器 (最快速)

⚠️ 重要提示 - Wayland 会话注意事项
根据实际测试,不同的重启方法在不同系统上效果不同:

  • kwin_wayland --replace & - 在某些系统上可正常工作
  • systemctl --user restart plasma-kwin_wayland.service - 可能导致黑屏需重新登录
  • 建议先尝试风险较小的方法,如果不行再尝试其他方法

方法 A: 直接替换 KWin 进程(经测试有效)

1
2
3
4
5
6
# 在后台替换 KWin 窗口管理器
kwin_wayland --replace &

# 注意:此命令在某些系统上可能导致会话崩溃
# 但在部分系统上是唯一有效的方法
# 使用前建议保存所有工作

方法 B: 使用 D-Bus 重新配置 KWin(温和方式)

1
2
3
4
5
6
7
# 不重启 KWin,只重新加载配置
qdbus6 org.kde.KWin /KWin reconfigure

# 或尝试刷新合成器
qdbus6 org.kde.KWin /Compositor suspend
sleep 1
qdbus6 org.kde.KWin /Compositor resume

方法 C: 注销重新登录(最安全但最慢)

1
2
3
# 保存所有工作后注销
qdbus6 org.kde.Shutdown /Shutdown logout
# 或使用快捷键: Ctrl+Alt+Del

方法 D: systemctl 重启(风险较高,慎用)

1
2
3
# ⚠️ 警告:在某些系统上可能导致黑屏,需要重新登录
# 如果方法 A 不行再尝试此方法
systemctl --user restart plasma-kwin_wayland.service

方案 2: 检查并重新启用窗口装饰

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
# 1. 打开系统设置
systemsettings5

# 2. 导航到: 外观 (Appearance) → 应用程序样式 (Application Style) → 窗口装饰 (Window Decorations)

# 3. 或使用命令行检查当前窗口装饰
kreadconfig5 --file kwinrc --group org.kde.kdecoration2 --key library

# 4. 重新设置默认窗口装饰
kwriteconfig5 --file kwinrc --group org.kde.kdecoration2 --key library org.kde.breeze

# 5. 重启 KWin
kwin_x11 --replace &

方案 3: 重置 KWin 配置

如果问题持续存在,可以尝试重置 KWin 配置:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
# 1. 备份当前配置
cp ~/.config/kwinrc ~/.config/kwinrc.backup

# 2. 删除可能损坏的配置
rm ~/.config/kwinrc

# 3. 重启 KWin (会自动生成新配置)
systemctl --user restart plasma-kwin_wayland.service

# 4. 如果需要恢复配置
# mv ~/.config/kwinrc.backup ~/.config/kwinrc

方案 4: 检查窗口规则

可能存在某些窗口规则阻止了窗口拖动:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
# 1. 打开系统设置
systemsettings5

# 2. 导航到: 窗口管理 (Window Management) → 窗口规则 (Window Rules)

# 3. 检查是否有规则限制了窗口移动
# 删除或禁用可疑的规则

# 4. 或直接编辑配置文件
cat ~/.config/kwinrulesrc

# 5. 如果配置有问题,可以备份后删除
mv ~/.config/kwinrulesrc ~/.config/kwinrulesrc.backup

方案 5: 检查鼠标和触摸板设置

1
2
3
4
5
6
7
8
9
# 1. 检查是否启用了特殊的鼠标手势或触摸板手势
systemsettings5

# 2. 导航到: 输入设备 (Input Devices) → 鼠标 (Mouse) / 触摸板 (Touchpad)

# 3. 检查快捷键设置
# 导航到: 快捷键 (Shortcuts) → 全局快捷键 (Global Shortcuts) → KWin

# 4. 确认 "窗口移动" 相关的快捷键没有冲突

方案 6: 重建 KDE 缓存

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
# 1. 清理 KDE 缓存
rm -rf ~/.cache/kwin*
rm -rf ~/.cache/plasma*

# 2. 重启 Plasma Shell
killall plasmashell
kstart5 plasmashell &

# 3. 重启 KWin
systemctl --user restart plasma-kwin_wayland.service

方案 7: 临时修复 - 使用快捷键移动窗口

如果上述方案都不立即奏效,可以临时使用快捷键:

1
2
3
4
# Alt + F7 - 进入移动窗口模式
# 然后使用方向键或鼠标移动窗口

# Alt + F8 - 调整窗口大小模式

方案 8: 检查合成器设置

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
# 1. 检查合成器是否启用
kreadconfig5 --file kwinrc --group Compositing --key Enabled

# 2. 如果禁用,重新启用
kwriteconfig5 --file kwinrc --group Compositing --key Enabled true

# 3. 或在系统设置中检查
# 系统设置 → 显示和监控 → 合成器 (Compositor)

# 4. 重启 KWin
systemctl --user restart plasma-kwin_wayland.service

调试步骤

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
# 1. 检查 KWin 是否正在运行
ps aux | grep kwin

# 2. 查看 KWin 日志
journalctl --user -u plasma-kwin_wayland.service -n 100

# 3. 检查 KWin 配置
cat ~/.config/kwinrc | grep -A 5 "decoration"

# 4. 测试窗口装饰
qdbus6 org.kde.KWin /KWin supportInformation

# 5. 检查是否有错误
dmesg | grep -i kwin

推荐操作顺序

针对 Wayland 环境的窗口拖动问题:

  1. 首先尝试方案 1 方法 A - kwin_wayland --replace &(经测试在多数系统上有效)
  2. 如果失败,尝试方案 7 - 使用快捷键临时移动窗口(Alt+F7)
  3. 尝试方案 1 方法 B - 使用 D-Bus 重新配置(最温和)
  4. 如果都不行,检查方案 4 - 窗口规则是否有问题
  5. 最后手段:方案 1 方法 C - 注销重新登录(最可靠)

⚠️ 根据实际测试的重要提示:

  • kwin_wayland --replace & - 在大多数系统上可以正常工作,是最快速的方法
  • ⚠️ systemctl --user restart plasma-kwin_wayland.service - 在某些系统上会导致黑屏
  • 💡 建议:每次使用前先保存所有工作,以防万一

预防措施

为避免此问题再次发生:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
# 创建定期备份 KWin 配置的脚本
cat > ~/.local/bin/backup-kde-config.sh << 'EOF'
#!/bin/bash
BACKUP_DIR="$HOME/.config-backups/kde-$(date +%Y%m%d)"
mkdir -p "$BACKUP_DIR"
cp ~/.config/kwinrc "$BACKUP_DIR/"
cp ~/.config/kwinrulesrc "$BACKUP_DIR/" 2>/dev/null
echo "KDE config backed up to $BACKUP_DIR"
EOF

chmod +x ~/.local/bin/backup-kde-config.sh

# 设置每周自动备份 (使用 cron)
(crontab -l 2>/dev/null; echo "0 0 * * 0 $HOME/.local/bin/backup-kde-config.sh") | crontab -

常见问题

Q: 为什么只在重启后出现这个问题?
A: 可能是 KWin 在启动时加载了损坏的配置,或窗口装饰主题文件损坏。

Q: 重启 KWin 后设置会丢失吗?
A: 不会,重启 KWin 只是重新加载配置,不会删除设置。

Q: 所有方案都试过了还是不行怎么办?
A: 可以考虑创建新的 KDE 用户配置文件,或检查是否是系统更新导致的软件包冲突。

Q: Wayland 下窗口无法拖动,重启后又出现怎么办?
A: 经过实际测试,推荐使用 kwin_wayland --replace & 命令,这在大多数系统上可以正常工作。如果担心风险,可以先用 Alt+F7 快捷键临时移动窗口,或使用 qdbus6 org.kde.KWin /KWin reconfigure 重新配置 KWin。如果问题反复出现,检查 KWin 配置文件或窗口规则是否有问题。

Q: kwin_wayland –replace 和 systemctl restart 有什么区别?
A: kwin_wayland --replace & 会直接替换当前运行的 KWin 进程,通常能保持会话稳定。而 systemctl --user restart plasma-kwin_wayland.service 通过 systemd 管理服务,在某些系统配置下可能导致整个会话中断(黑屏)。实际效果因系统配置而异,建议先尝试 kwin_wayland --replace &

Q: 为什么重启 KWin 服务后会黑屏?
A: 在 Wayland 会话中,KWin 是整个图形会话的核心组件。使用 systemctl 重启服务时,systemd 可能会完全终止并重启整个服务,导致会话中断。而直接使用 --replace 参数可以让新进程无缝接管旧进程,通常更稳定。这是 Wayland 架构和 systemd 服务管理的综合影响。

技术分析:窗口无法拖动的根本原因

问题的本质

通过分析系统日志,窗口无法拖动的问题通常与以下因素相关:

1. Wayland 协议状态异常

从日志可以看到关键错误:

1
2
The PlasmaWindowManagement protocol hasn't activated in time. 
The client possibly got denied by kwin? Check kwin output.

这表明:

  • KWin 的 PlasmaWindowManagement 协议未能正常激活
  • 这个协议负责管理窗口的基本操作(移动、调整大小等)
  • 协议激活失败导致窗口装饰功能失效

2. 输入事件处理链中断

可能的原因:

  • KWin 的输入事件监听器失效
  • Wayland compositor 的窗口管理器状态异常
  • 窗口装饰(Window Decoration)模块未正确加载

3. 进程状态不一致

查看进程信息:

1
ps aux | grep kwin_wayland

会发现 KWin 进程包含两个部分:

  • kwin_wayland_wrapper - 包装器进程
  • kwin_wayland - 实际的窗口管理器进程

当这两者状态不同步时,可能导致窗口操作异常。

为什么 kwin_wayland --replace 能解决问题?

工作原理:

1
kwin_wayland --replace &

这个命令做了以下操作:

  1. 启动新的 KWin 进程

    • 新进程在后台启动(&
    • 使用 --replace 参数告诉新进程替换现有进程
  2. 平滑过渡机制

    • 新进程先初始化并准备好所有必要的 Wayland 协议
    • 新进程向旧进程发送 TERM 信号
    • 旧进程收到信号后将所有窗口状态、客户端连接转移给新进程
    • 旧进程优雅退出
  3. 重新初始化所有协议

    • PlasmaWindowManagement 协议重新激活
    • 窗口装饰重新加载
    • 输入事件处理链重建
    • Wayland compositor 状态重置

与 systemctl 重启的区别:

systemctl --user restart plasma-kwin_wayland.service:

1
停止服务 → 完全终止进程 → 清理会话 → 启动新进程
  • ❌ 可能导致 Wayland 会话完全中断
  • ❌ 所有 Wayland 客户端(应用窗口)可能丢失连接
  • ❌ 需要重新建立整个图形会话

kwin_wayland --replace &:

1
启动新进程 → 状态转移 → 优雅退出旧进程
  • ✅ Wayland 会话保持连续
  • ✅ 客户端连接无缝转移
  • ✅ 窗口状态得以保留

如何诊断问题

如果窗口无法拖动,可以通过以下命令诊断:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
# 1. 检查 PlasmaWindowManagement 协议状态
journalctl --user -b | grep "PlasmaWindowManagement"

# 2. 查看 KWin 进程状态
ps aux | grep kwin_wayland

# 3. 检查窗口装饰加载情况
qdbus6 org.kde.KWin /KWin supportInformation | grep -i decoration

# 4. 查看 Wayland 输入协议状态
journalctl --user --since "10 minutes ago" | grep -i "input\|wayland"

# 5. 检查 KWin 日志中的错误
journalctl --user -u plasma-kwin_wayland.service -n 50 | grep -i "error\|warning\|failed"

预防措施

为什么会出现这个问题?

常见触发条件:

  1. 系统从休眠/睡眠恢复后 - Wayland 协议状态可能不一致
  2. 显示器热插拔 - 可能导致 compositor 状态异常
  3. KWin 崩溃后自动重启 - 状态恢复不完整
  4. 某些应用程序异常 - 干扰 Wayland 协议栈
  5. 系统更新后 - 配置文件或库不兼容

减少问题发生的建议:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
# 1. 定期清理 KWin 缓存
rm -rf ~/.cache/kwin*

# 2. 确保 KWin 配置文件完整
ls -lh ~/.config/kwinrc

# 3. 检查窗口规则是否有冲突
cat ~/.config/kwinrulesrc

# 4. 监控 KWin 服务状态
systemctl --user status plasma-kwin_wayland.service

深层技术细节

Wayland Compositor 架构:

在 Wayland 下,KWin 同时扮演三个角色:

  1. Compositor(合成器) - 管理屏幕渲染
  2. Window Manager(窗口管理器) - 处理窗口布局和操作
  3. Input Manager(输入管理器) - 处理键盘鼠标事件

当窗口无法拖动时,通常是 Window Manager 和 Input Manager 之间的协调出现问题。

相关协议栈:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
应用程序
    ↓
Wayland Client Protocol
    ↓
KWin (Wayland Compositor)
    ├── PlasmaWindowManagement(窗口管理)
    ├── wl_seat(输入设备)
    └── wl_pointer(鼠标事件)
    ↓
Linux Kernel (libinput)

当这个协议栈中任何一层出现异常,都可能导致窗口拖动失效。kwin_wayland --replace 通过重建整个协议栈来恢复正常状态。

Wayland 特别说明

Wayland 下的 KWin 重启注意事项

如果你使用的是 Wayland 会话(运行 echo $XDG_SESSION_TYPE 显示 wayland):

✅ 推荐方法(安全):

1
2
3
4
5
# 使用 systemctl 重启 KWin
systemctl --user restart plasma-kwin_wayland.service

# 或使用 KRunner (Alt+F2)
# 输入: systemctl --user restart plasma-kwin_wayland

❌ 不推荐方法(可能导致会话崩溃):

1
2
# 不要在 Wayland 下使用这个命令!
kwin_wayland --replace &  # 可能导致整个桌面会话崩溃

原因说明:

  • 在 Wayland 会话中,KWin 同时是窗口管理器和合成器
  • 直接运行 kwin_wayland --replace 会终止当前的 KWin 进程
  • 这会导致整个图形会话崩溃,需要重新登录
  • 使用 systemctl 可以平滑地重启服务,不会中断会话

如果窗口拖动问题反复出现:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
# 1. 检查 KWin 日志查找原因
journalctl --user -u plasma-kwin_wayland.service -n 50

# 2. 检查是否有损坏的窗口规则
cat ~/.config/kwinrulesrc

# 3. 如有必要,重置 KWin 配置
cp ~/.config/kwinrc ~/.config/kwinrc.backup
rm ~/.config/kwinrc
systemctl --user restart plasma-kwin_wayland.service

锁屏后显示器不自动关闭问题

问题描述

禁用 KDE 的 PowerDevil 亮度管理后,锁屏时显示器不会自动关闭,导致屏幕一直开启状态。

原因分析

当禁用 PowerDevil 的亮度调节功能时,可能同时影响了 DPMS (Display Power Management Signaling) 功能,导致显示器电源管理失效。

解决方案

⚠️ Wayland 注意事项: 在 Wayland 会话下,传统的 xset 命令可能不工作或功能受限。 优先使用 方案 4(恢复 PowerDevil 部分功能)方案 3(xidlehook)

方案 1: 单独启用 DPMS 显示器关闭功能 (X11 环境)

⚠️ 此方案主要适用于 X11 环境,Wayland 用户请跳过使用方案 4

保持亮度管理禁用,但启用显示器自动关闭:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
# 1. 检查当前 DPMS 状态
xset q | grep -A 5 "DPMS"

# 2. 启用 DPMS 并设置超时时间
# 语法: xset dpms [standby秒] [suspend秒] [off秒]
xset dpms 300 600 900  # 5分钟待机, 10分钟挂起, 15分钟关闭
xset +dpms  # 确保 DPMS 已启用

# 3. 或者设置锁屏后立即关闭显示器
xset dpms 10 10 10  # 锁屏后10秒关闭显示器

# 4. 让设置在每次登录时自动应用
cat > ~/.config/autostart-scripts/dpms-settings.sh << 'EOF'
#!/bin/bash
# 启用 DPMS 并设置超时
sleep 5  # 等待系统启动完成
xset +dpms
xset dpms 300 600 900  # 根据需要调整时间
EOF

chmod +x ~/.config/autostart-scripts/dpms-settings.sh

# 5. 创建对应的 desktop 文件
mkdir -p ~/.config/autostart
cat > ~/.config/autostart/dpms-settings.desktop << 'EOF'
[Desktop Entry]
Type=Application
Name=DPMS Settings
Exec=/home/$USER/.config/autostart-scripts/dpms-settings.sh
X-KDE-autostart-phase=2
EOF

方案 2: 使用 KDE 锁屏钩子脚本

在锁屏时触发显示器关闭:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
# 1. 安装 xss-lock (如果未安装)
sudo pacman -S xss-lock  # Arch Linux

# 2. 创建锁屏后关闭显示器的脚本
cat > ~/.local/bin/lock-screen-dpms.sh << 'EOF'
#!/bin/bash
# 锁定屏幕并关闭显示器
qdbus org.freedesktop.ScreenSaver /ScreenSaver Lock
sleep 1
xset dpms force off
EOF

chmod +x ~/.local/bin/lock-screen-dpms.sh

# 3. 使用此脚本替代默认锁屏命令
# 可以在系统设置 → 快捷键中修改锁屏快捷键为执行此脚本

方案 3: 使用 systemd 和 xidlehook 实现自动锁屏和关闭显示器

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
# 1. 安装 xidlehook
yay -S xidlehook  # 或从 AUR 安装

# 2. 创建 xidlehook 服务
mkdir -p ~/.config/systemd/user/
cat > ~/.config/systemd/user/xidlehook.service << 'EOF'
[Unit]
Description=xidlehook daemon
PartOf=graphical-session.target

[Service]
Type=simple
ExecStart=/usr/bin/xidlehook \
  --not-when-fullscreen \
  --not-when-audio \
  --timer 300 \
    'xset dpms force off' \
    'xset dpms force on' \
  --timer 600 \
    'qdbus org.freedesktop.ScreenSaver /ScreenSaver Lock' \
    ''

Restart=on-failure

[Install]
WantedBy=graphical-session.target
EOF

# 3. 启用并启动服务
systemctl --user enable xidlehook.service
systemctl --user start xidlehook.service

# 4. 检查服务状态
systemctl --user status xidlehook.service

方案 4: 仅恢复 PowerDevil 的显示器管理,保持亮度禁用

如果你想要更精细的控制:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
# 1. 编辑 PowerDevil 配置,只启用显示器关闭功能
kwriteconfig5 --file powermanagementprofilesrc --group AC --group DPMSControl --key idleTime 300000  # 5分钟(毫秒)
kwriteconfig5 --file powermanagementprofilesrc --group AC --group DPMSControl --key lockScreen true

# 2. 确保亮度调节仍然禁用
kwriteconfig5 --file powermanagementprofilesrc --group AC --group DimDisplay --key idleTime 0

# 3. 重启 PowerDevil
killall org_kde_powerdevil
kstart5 org_kde_powerdevil &

# 4. 或重启整个 Plasma
killall plasmashell
kstart5 plasmashell &

方案 5: 使用 xautolock 实现简单的超时锁屏

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
# 1. 安装 xautolock
sudo pacman -S xautolock

# 2. 创建启动脚本
cat > ~/.config/autostart-scripts/xautolock.sh << 'EOF'
#!/bin/bash
xautolock -time 5 -locker "xset dpms force off" &
EOF

chmod +x ~/.config/autostart-scripts/xautolock.sh

# 3. 创建自动启动项
cat > ~/.config/autostart/xautolock.desktop << 'EOF'
[Desktop Entry]
Type=Application
Name=XAutolock Display Off
Exec=/home/$USER/.config/autostart-scripts/xautolock.sh
X-KDE-autostart-phase=2
EOF

方案 6: 手动锁屏时关闭显示器的快捷方式

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
# 创建一个锁屏+关闭显示器的组合快捷键脚本
cat > ~/.local/bin/lock-and-dpms-off.sh << 'EOF'
#!/bin/bash
# 先锁屏
qdbus org.freedesktop.ScreenSaver /ScreenSaver Lock &
# 等待锁屏完成
sleep 0.5
# 关闭显示器
xset dpms force off
EOF

chmod +x ~/.local/bin/lock-and-dpms-off.sh

# 在 KDE 系统设置 → 快捷键 → 自定义快捷键中添加:
# 命令: /home/$USER/.local/bin/lock-and-dpms-off.sh
# 快捷键: Meta+L (或你喜欢的组合)

调试和验证

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
# 1. 检查 DPMS 当前状态
xset q | grep -A 5 "DPMS"

# 2. 测试 DPMS 功能
xset dpms force off  # 立即关闭显示器
# 移动鼠标或按键盘唤醒

# 3. 监控 PowerDevil 活动
journalctl --user -f | grep -i power

# 4. 检查当前的电源配置
cat ~/.config/powermanagementprofilesrc | grep -A 10 "DPMSControl"

# 5. 查看 xss-lock 状态 (如果使用)
systemctl --user status xss-lock.service

推荐配置

根据你的需求,推荐以下配置:

Wayland 环境(推荐):

  • 使用 方案 4 - 恢复 PowerDevil 的 DPMS 功能,但保持亮度禁用
  • 最稳定且原生支持 Wayland

X11 环境备选:

  • 使用 方案 1 + 方案 6 - xset DPMS + 手动锁屏脚本
  • 使用 方案 3 - xidlehook 自动化管理

建议的完整设置脚本

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
#!/bin/bash
# 完整的显示器管理设置脚本

# 1. 启用 DPMS
xset +dpms
xset dpms 300 600 900  # 5/10/15分钟

# 2. 创建自动启动目录
mkdir -p ~/.config/autostart-scripts

# 3. 创建 DPMS 设置脚本
cat > ~/.config/autostart-scripts/dpms-settings.sh << 'EOFSCRIPT'
#!/bin/bash
sleep 5
xset +dpms
xset dpms 300 600 900
EOFSCRIPT

chmod +x ~/.config/autostart-scripts/dpms-settings.sh

# 4. 创建自动启动项
mkdir -p ~/.config/autostart
cat > ~/.config/autostart/dpms-settings.desktop << 'EOFDESKTOP'
[Desktop Entry]
Type=Application
Name=DPMS Settings
Exec=/bin/bash -c "sleep 5 && xset +dpms && xset dpms 300 600 900"
X-KDE-autostart-phase=2
EOFDESKTOP

# 5. 创建锁屏+关屏脚本
mkdir -p ~/.local/bin
cat > ~/.local/bin/lock-and-dpms-off.sh << 'EOFLOCK'
#!/bin/bash
qdbus org.freedesktop.ScreenSaver /ScreenSaver Lock &
sleep 0.5
xset dpms force off
EOFLOCK

chmod +x ~/.local/bin/lock-and-dpms-off.sh

echo "设置完成!"
echo "1. DPMS 已启用,空闲5/10/15分钟后关闭显示器"
echo "2. 系统启动时会自动应用 DPMS 设置"
echo "3. 使用 ~/.local/bin/lock-and-dpms-off.sh 锁屏并关闭显示器"
echo ""
echo "建议在系统设置中设置快捷键运行 lock-and-dpms-off.sh"

注意事项

  1. DPMS 和 DDC/CI 亮度控制是独立的

    • 禁用亮度自动调节不影响 DPMS
    • 需要单独启用 DPMS 功能
  2. 唤醒显示器

    • 移动鼠标或按任意键可唤醒显示器
    • 某些鼠标可能需要点击才能唤醒
  3. Wayland 环境特别注意

    • ⚠️ Wayland 下 xset 命令可能不工作
    • ✅ 推荐使用 PowerDevil 配置(方案 4)
    • ✅ 或使用 Wayland 原生工具如 xidlehook
  4. 时间设置

    • DPMS 时间单位是秒
    • PowerDevil 配置时间单位是毫秒
    • 根据实际需求调整超时时间

KDE 电源管理设置无法加载问题

问题描述

打开 KDE 系统设置 (System Settings) → 电源管理 (Power Management) 时,显示错误信息:

1
Power management settings could not be loaded

原因分析

这个问题通常由以下原因引起:

  1. PowerDevil 配置文件损坏
  2. PowerDevil 服务未运行或崩溃
  3. 相关依赖包缺失或损坏
  4. 之前手动修改配置导致冲突

解决方案

方案 1: 重启 PowerDevil 服务 (最快速)

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
# 1. 停止 PowerDevil 服务
killall org_kde_powerdevil

# 2. 等待几秒
sleep 2

# 3. 重新启动 PowerDevil
kstart5 org_kde_powerdevil &

# 或使用 systemd 方式
systemctl --user restart plasma-powerdevil.service

# 4. 检查服务状态
systemctl --user status plasma-powerdevil.service

方案 2: 重置 PowerDevil 配置文件

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
# 1. 备份现有配置
mkdir -p ~/.config-backups/powerdevil-$(date +%Y%m%d)
cp ~/.config/powermanagementprofilesrc ~/.config-backups/powerdevil-$(date +%Y%m%d)/ 2>/dev/null
cp ~/.config/powerdevilrc ~/.config-backups/powerdevil-$(date +%Y%m%d)/ 2>/dev/null

# 2. 删除可能损坏的配置文件
rm ~/.config/powermanagementprofilesrc
rm ~/.config/powerdevilrc

# 3. 重启 PowerDevil 服务
killall org_kde_powerdevil
sleep 2
kstart5 org_kde_powerdevil &

# 4. 重新打开系统设置测试
systemsettings5

方案 3: 检查并重新安装 PowerDevil 组件

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
# 1. 检查 PowerDevil 是否已安装
pacman -Q powerdevil

# 2. 如果已安装,重新安装
sudo pacman -S powerdevil --overwrite '*'

# 3. 检查依赖包
pacman -Q plasma-workspace
pacman -Q solid
pacman -Q upower

# 4. 如果有缺失,安装相关包
sudo pacman -S plasma-workspace solid upower

# 5. 重启 Plasma
killall plasmashell
kstart5 plasmashell &

方案 4: 检查 PowerDevil 日志查找具体错误

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
# 1. 查看 PowerDevil 日志
journalctl --user -u plasma-powerdevil.service -n 50

# 2. 查看系统日志中的错误
journalctl -xe | grep -i powerdevil

# 3. 启动 PowerDevil 并实时查看日志
killall org_kde_powerdevil
journalctl --user -f | grep -i power &
kstart5 org_kde_powerdevil

# 4. 查看 D-Bus 相关错误
dbus-monitor --session | grep -i power

方案 5: 手动启动 PowerDevil 查看错误信息

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
# 1. 停止现有的 PowerDevil
killall org_kde_powerdevil

# 2. 在终端中手动启动以查看详细错误
/usr/lib/org_kde_powerdevil

# 或使用调试模式
QT_LOGGING_RULES="*=true" /usr/lib/org_kde_powerdevil

# 观察终端输出的错误信息

方案 6: 清理 KDE 缓存和会话

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
# 1. 清理 KDE 缓存
rm -rf ~/.cache/powerdevil*
rm -rf ~/.cache/ksycoca5*
rm -rf ~/.cache/kded5*

# 2. 重建缓存
kbuildsycoca5 --noincremental

# 3. 清理会话文件
rm ~/.config/session/*powerdevil*

# 4. 重启 Plasma
killall plasmashell
kstart5 plasmashell &

方案 7: 检查文件权限

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
# 1. 检查配置文件权限
ls -la ~/.config/powermanagementprofilesrc
ls -la ~/.config/powerdevilrc

# 2. 修复权限(如果需要)
chmod 644 ~/.config/powermanagementprofilesrc 2>/dev/null
chmod 644 ~/.config/powerdevilrc 2>/dev/null

# 3. 检查配置目录权限
chmod 700 ~/.config

# 4. 修复所有者
chown $USER:$USER ~/.config/powermanagementprofilesrc 2>/dev/null
chown $USER:$USER ~/.config/powerdevilrc 2>/dev/null

方案 8: 创建最小化的有效配置文件

如果配置文件损坏严重,可以创建一个最小化的有效配置:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
# 1. 删除损坏的配置
rm ~/.config/powermanagementprofilesrc

# 2. 创建基本配置文件
cat > ~/.config/powermanagementprofilesrc << 'EOF'
[AC]
icon=battery-charging

[AC][DimDisplay]
idleTime=0

[AC][DPMSControl]
idleTime=300000
lockScreen=false

[Battery]
icon=battery-060

[Battery][DimDisplay]
idleTime=0

[Battery][DPMSControl]
idleTime=300000

[LowBattery]
icon=battery-low

[LowBattery][DimDisplay]
idleTime=0

[LowBattery][DPMSControl]
idleTime=180000
EOF

# 3. 设置正确的权限
chmod 644 ~/.config/powermanagementprofilesrc

# 4. 重启 PowerDevil
killall org_kde_powerdevil
kstart5 org_kde_powerdevil &

方案 9: 检查 UPower 服务状态

PowerDevil 依赖 UPower 服务:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
# 1. 检查 UPower 服务状态
systemctl status upower

# 2. 如果未运行,启动它
sudo systemctl start upower
sudo systemctl enable upower

# 3. 检查 UPower 是否工作
upower --dump

# 4. 重启 PowerDevil
systemctl --user restart plasma-powerdevil.service

方案 10: 使用新的 KDE 配置(最后手段)

如果以上都不行,可以临时使用新的配置测试:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
# 1. 创建测试用户配置目录备份
mv ~/.config ~/.config.backup-$(date +%Y%m%d-%H%M%S)
mkdir ~/.config

# 2. 重启 Plasma
killall plasmashell
kstart5 plasmashell &

# 3. 测试电源管理是否可以打开
systemsettings5

# 4. 如果可以,逐步恢复旧配置
# 如果不行,可能是系统包的问题

调试步骤

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
# 完整的调试命令集合

# 1. 检查 PowerDevil 进程
ps aux | grep powerdevil

# 2. 检查配置文件是否存在和可读
ls -la ~/.config/power*

# 3. 验证配置文件语法
cat ~/.config/powermanagementprofilesrc

# 4. 检查系统服务
systemctl --user status plasma-powerdevil.service

# 5. 查看最近的错误日志
journalctl --user -u plasma-powerdevil.service --since "10 minutes ago"

# 6. 检查 D-Bus 服务
qdbus org.kde.Solid.PowerManagement

# 7. 测试 UPower
upower --enumerate
upower --dump

# 8. 检查已安装的包
pacman -Qs powerdevil
pacman -Qs upower

快速修复脚本

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
#!/bin/bash
# PowerDevil 快速修复脚本

echo "=== KDE PowerDevil 修复脚本 ==="

# 1. 备份配置
echo "1. 备份现有配置..."
BACKUP_DIR=~/.config-backups/powerdevil-$(date +%Y%m%d-%H%M%S)
mkdir -p "$BACKUP_DIR"
cp ~/.config/powermanagementprofilesrc "$BACKUP_DIR/" 2>/dev/null
cp ~/.config/powerdevilrc "$BACKUP_DIR/" 2>/dev/null
echo "   备份保存在: $BACKUP_DIR"

# 2. 停止 PowerDevil
echo "2. 停止 PowerDevil 服务..."
killall org_kde_powerdevil 2>/dev/null
sleep 2

# 3. 删除损坏的配置
echo "3. 删除可能损坏的配置文件..."
rm -f ~/.config/powermanagementprofilesrc
rm -f ~/.config/powerdevilrc

# 4. 清理缓存
echo "4. 清理缓存..."
rm -rf ~/.cache/powerdevil*
rm -rf ~/.cache/ksycoca5*

# 5. 重建缓存
echo "5. 重建系统缓存..."
kbuildsycoca5 --noincremental 2>/dev/null

# 6. 检查 UPower
echo "6. 检查 UPower 服务..."
if ! systemctl is-active --quiet upower; then
    echo "   UPower 未运行,尝试启动..."
    sudo systemctl start upower
fi

# 7. 重启 PowerDevil
echo "7. 重启 PowerDevil 服务..."
kstart5 org_kde_powerdevil &
sleep 3

# 8. 检查状态
echo "8. 检查服务状态..."
if systemctl --user is-active --quiet plasma-powerdevil.service; then
    echo "   ✓ PowerDevil 服务运行正常"
else
    echo "   ✗ PowerDevil 服务未运行"
    systemctl --user status plasma-powerdevil.service
fi

echo ""
echo "=== 修复完成 ==="
echo "请尝试打开系统设置 → 电源管理"
echo ""
echo "如果问题仍然存在,请运行以下命令查看详细日志:"
echo "journalctl --user -u plasma-powerdevil.service -n 50"

推荐操作顺序

  1. 首先尝试方案 1 - 重启 PowerDevil 服务(最简单)
  2. 如果不行,尝试方案 2 - 重置配置文件
  3. 检查方案 4 - 查看日志找出具体错误
  4. 尝试方案 9 - 确保 UPower 服务正常
  5. 使用快速修复脚本 - 自动执行常见修复步骤

常见错误及解决方法

错误 1: “Could not find ‘kded’ module”

1
2
3
# 重启 KDED 服务
kquitapp5 kded5
kded5 &

错误 2: “org.kde.powerdevil not available on D-Bus”

1
2
3
4
# 检查 D-Bus 会话
echo $DBUS_SESSION_BUS_ADDRESS
# 重启 PowerDevil
systemctl --user restart plasma-powerdevil.service

错误 3: UPower 相关错误

1
2
3
4
# 重启 UPower
sudo systemctl restart upower
# 检查设备
upower --dump

预防措施

为避免此问题再次发生:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
# 1. 定期备份电源管理配置
cat > ~/.local/bin/backup-powerdevil.sh << 'EOF'
#!/bin/bash
BACKUP_DIR="$HOME/.config-backups/powerdevil-$(date +%Y%m%d)"
mkdir -p "$BACKUP_DIR"
cp ~/.config/powermanagementprofilesrc "$BACKUP_DIR/" 2>/dev/null
cp ~/.config/powerdevilrc "$BACKUP_DIR/" 2>/dev/null
echo "PowerDevil config backed up to $BACKUP_DIR"
EOF

chmod +x ~/.local/bin/backup-powerdevil.sh

# 2. 设置每周自动备份
(crontab -l 2>/dev/null; echo "0 0 * * 0 $HOME/.local/bin/backup-powerdevil.sh") | crontab -

注意事项

  1. 不要直接手动编辑配置文件

    • 使用 kwriteconfig5 命令修改配置
    • 手动编辑可能导致格式错误
  2. 修改配置后需要重启服务

    • 配置更改不会立即生效
    • 需要重启 PowerDevil 或注销重新登录
  3. 检查系统更新

    • 有时是系统更新导致的兼容性问题
    • 确保所有 Plasma 相关包都是最新版本
  4. 台式机和笔记本的区别

    • 台式机可能没有电池相关功能
    • 某些电源管理选项可能不可用

如何恢复被禁用的 PowerDevil 电源管理

问题背景

如果之前为了解决亮度问题执行了方案 4: 禁用 KDE 的 PowerDevil 亮度管理,可能导致:

  • PowerDevil 配置文件损坏或为空
  • 电源管理设置界面无法打开
  • 锁屏后显示器不自动关闭

检查当前状态

1
2
3
4
5
6
7
8
9
# 1. 检查 PowerDevil 服务状态
systemctl --user status plasma-powerdevil.service

# 2. 检查配置文件大小
ls -lh ~/.config/powerdevilrc
ls -lh ~/.config/powermanagementprofilesrc

# 3. 查看配置文件内容
cat ~/.config/powermanagementprofilesrc

如果看到:

  • 服务状态是 inactive (dead) 或不断重启
  • 配置文件是空的(0字节)或内容很少
  • 那说明 PowerDevil 确实被禁用或损坏了

完整恢复步骤

步骤 1: 备份并删除损坏的配置

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
# 创建备份目录
mkdir -p ~/.config-backups/powerdevil-restore-$(date +%Y%m%d-%H%M%S)

# 备份现有配置(即使是损坏的)
cp ~/.config/powerdevilrc ~/.config-backups/powerdevil-restore-$(date +%Y%m%d-%H%M%S)/ 2>/dev/null
cp ~/.config/powermanagementprofilesrc ~/.config-backups/powerdevil-restore-$(date +%Y%m%d-%H%M%S)/ 2>/dev/null

# 删除损坏的配置文件
rm -f ~/.config/powerdevilrc
rm -f ~/.config/powermanagementprofilesrc

步骤 2: 创建新的有效配置文件

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
# 创建基本的 PowerDevil 配置
cat > ~/.config/powermanagementprofilesrc << 'EOF'
[AC]
icon=battery-charging

[AC][BrightnessControl]
value=100
idleTime=0

[AC][DimDisplay]
idleTime=0

[AC][DPMSControl]
idleTime=300000
lockScreen=false

[AC][HandleButtonEvents]
lidAction=0
powerButtonAction=16
powerDownAction=16

[Battery]
icon=battery-060

[Battery][BrightnessControl]
value=100
idleTime=0

[Battery][DimDisplay]
idleTime=0

[Battery][DPMSControl]
idleTime=300000

[LowBattery]
icon=battery-low

[LowBattery][BrightnessControl]
value=100
idleTime=0

[LowBattery][DimDisplay]
idleTime=0

[LowBattery][DPMSControl]
idleTime=180000
EOF

# 设置正确的权限
chmod 644 ~/.config/powermanagementprofilesrc

步骤 3: 清理缓存并重启服务

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
# 清理相关缓存
rm -rf ~/.cache/powerdevil*
rm -rf ~/.cache/ksycoca5*

# 重建 KDE 系统缓存
kbuildsycoca5 --noincremental

# 确保 UPower 服务运行
sudo systemctl start upower
sudo systemctl enable upower

# 重启 PowerDevil 服务
systemctl --user restart plasma-powerdevil.service

# 等待几秒让服务启动
sleep 3

# 检查服务状态
systemctl --user status plasma-powerdevil.service

步骤 4: 验证修复结果

1
2
3
4
5
6
7
8
# 1. 检查服务是否运行
systemctl --user is-active plasma-powerdevil.service

# 2. 检查 D-Bus 服务
qdbus org.kde.Solid.PowerManagement 2>/dev/null && echo "PowerDevil D-Bus OK" || echo "PowerDevil D-Bus Failed"

# 3. 打开系统设置测试
systemsettings5 &

保持亮度不被自动调节的正确方法

恢复 PowerDevil 后,你可以只禁用亮度调节功能而不破坏整个电源管理:

方法 1: 通过系统设置 GUI(推荐)

1
2
# 打开系统设置
systemsettings5

然后:

  1. 进入 电源管理 (Power Management)节能 (Energy Saving)
  2. 对于每个配置(交流电、电池、低电量):
    • 取消勾选 “当空闲时降低屏幕亮度”
    • 取消勾选 “在锁定屏幕时降低亮度”
    • 将屏幕亮度滑块设为你想要的值
  3. 点击 “应用”

方法 2: 通过命令行配置(安全方式)

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
# 禁用亮度自动降低,但保留其他电源管理功能
kwriteconfig5 --file powermanagementprofilesrc --group AC --group DimDisplay --key idleTime 0
kwriteconfig5 --file powermanagementprofilesrc --group Battery --group DimDisplay --key idleTime 0
kwriteconfig5 --file powermanagementprofilesrc --group LowBattery --group DimDisplay --key idleTime 0

# 设置默认亮度为100%
kwriteconfig5 --file powermanagementprofilesrc --group AC --group BrightnessControl --key value 100
kwriteconfig5 --file powermanagementprofilesrc --group Battery --group BrightnessControl --key value 100
kwriteconfig5 --file powermanagementprofilesrc --group LowBattery --group BrightnessControl --key value 100

# 重启 PowerDevil 使配置生效
systemctl --user restart plasma-powerdevil.service

方法 3: 同时配置 DPMS 显示器管理

如果你还想要锁屏后自动关闭显示器:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
# 启用 DPMS,5分钟后关闭显示器
kwriteconfig5 --file powermanagementprofilesrc --group AC --group DPMSControl --key idleTime 300000
kwriteconfig5 --file powermanagementprofilesrc --group AC --group DPMSControl --key lockScreen false

# 重启服务
systemctl --user restart plasma-powerdevil.service

# 同时设置 X11 DPMS(作为备用)
xset +dpms
xset dpms 300 600 900

一键修复脚本

将以下内容保存为脚本并执行:

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
#!/bin/bash
# PowerDevil 完整恢复脚本

echo "=========================================="
echo "  PowerDevil 电源管理恢复脚本"
echo "=========================================="
echo ""

# 1. 备份现有配置
echo "[1/6] 备份现有配置..."
BACKUP_DIR=~/.config-backups/powerdevil-restore-$(date +%Y%m%d-%H%M%S)
mkdir -p "$BACKUP_DIR"
cp ~/.config/powerdevilrc "$BACKUP_DIR/" 2>/dev/null
cp ~/.config/powermanagementprofilesrc "$BACKUP_DIR/" 2>/dev/null
echo "      备份位置: $BACKUP_DIR"

# 2. 停止服务
echo "[2/6] 停止 PowerDevil 服务..."
systemctl --user stop plasma-powerdevil.service
killall org_kde_powerdevil 2>/dev/null
sleep 2

# 3. 删除损坏的配置
echo "[3/6] 删除损坏的配置文件..."
rm -f ~/.config/powerdevilrc
rm -f ~/.config/powermanagementprofilesrc

# 4. 创建新配置
echo "[4/6] 创建新的配置文件..."
cat > ~/.config/powermanagementprofilesrc << 'EOF'
[AC]
icon=battery-charging

[AC][BrightnessControl]
value=100
idleTime=0

[AC][DimDisplay]
idleTime=0

[AC][DPMSControl]
idleTime=300000
lockScreen=false

[AC][HandleButtonEvents]
lidAction=0
powerButtonAction=16
powerDownAction=16

[Battery]
icon=battery-060

[Battery][BrightnessControl]
value=100
idleTime=0

[Battery][DimDisplay]
idleTime=0

[Battery][DPMSControl]
idleTime=300000

[LowBattery]
icon=battery-low

[LowBattery][BrightnessControl]
value=100
idleTime=0

[LowBattery][DimDisplay]
idleTime=0

[LowBattery][DPMSControl]
idleTime=180000
EOF

chmod 644 ~/.config/powermanagementprofilesrc

# 5. 清理缓存并重建
echo "[5/6] 清理缓存..."
rm -rf ~/.cache/powerdevil*
rm -rf ~/.cache/ksycoca5*
kbuildsycoca5 --noincremental 2>/dev/null

# 6. 启动服务
echo "[6/6] 启动 PowerDevil 服务..."
sudo systemctl start upower 2>/dev/null
systemctl --user start plasma-powerdevil.service
sleep 3

# 验证
echo ""
echo "=========================================="
echo "  验证结果"
echo "=========================================="

if systemctl --user is-active --quiet plasma-powerdevil.service; then
    echo "✓ PowerDevil 服务运行正常"
else
    echo "✗ PowerDevil 服务启动失败"
    echo ""
    echo "查看错误日志:"
    journalctl --user -u plasma-powerdevil.service -n 20 --no-pager
    exit 1
fi

if qdbus org.kde.Solid.PowerManagement >/dev/null 2>&1; then
    echo "✓ D-Bus 接口正常"
else
    echo "✗ D-Bus 接口异常"
fi

echo ""
echo "=========================================="
echo "  修复完成!"
echo "=========================================="
echo ""
echo "现在可以:"
echo "1. 打开系统设置 → 电源管理 查看配置"
echo "2. 运行: systemsettings5"
echo ""
echo "配置说明:"
echo "- 亮度自动降低: 已禁用"
echo "- 显示器自动关闭: 5分钟后关闭"
echo "- 锁屏不降低亮度: 已启用"
echo ""

保存为 restore-powerdevil.sh,然后执行:

1
2
chmod +x restore-powerdevil.sh
./restore-powerdevil.sh

常见问题

Q: 恢复后亮度还是会自动降低吗?
A: 不会。新配置已经禁用了亮度自动降低功能(DimDisplay idleTime=0)。

Q: 锁屏后显示器会关闭吗?
A: 会的。新配置设置了5分钟后关闭显示器(DPMSControl idleTime=300000)。

Q: 如何调整显示器关闭的时间?
A: 在系统设置 → 电源管理 → 节能中调整,或修改配置文件中的 idleTime 值(单位是毫秒)。

Q: 这个配置和之前禁用的方式有什么不同?
A: 之前直接修改配置可能导致文件损坏;现在创建的是完整有效的配置文件,只禁用亮度调节,保留其他功能。

预防措施

以后如果要修改电源管理设置:

  1. 优先使用系统设置 GUI - 最安全
  2. 使用 kwriteconfig5 命令 - 不会破坏文件结构
  3. 避免直接编辑配置文件 - 容易出错
  4. 修改前先备份 - 方便恢复
1
2
# 备份命令
cp ~/.config/powermanagementprofilesrc ~/.config/powermanagementprofilesrc.backup-$(date +%Y%m%d)

问题记录与解决方案日志

📝 使用说明:
本章节用于记录 Beelink SER8 (Arch Linux + KDE) 使用过程中遇到的所有问题、解决方案和系统操作。
每个问题都包含:问题描述、解决方案、执行的操作命令、操作时间和备注。

日志格式规范

每个问题记录应包含以下部分:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
### [YYYY-MM-DD] 问题标题

**问题描述:**
详细描述遇到的问题现象

**环境信息:**
- 系统版本: 
- 桌面环境: KDE Plasma X.X.X
- 相关软件版本:

**解决方案:**
采用的解决方法

**执行的操作:**
\`\`\`bash
# 记录所有执行的命令
命令1
命令2
\`\`\`

**修改的文件:**
- `/path/to/file1` - 具体修改内容
- `/path/to/file2` - 具体修改内容

**操作结果:**
- ✅ 成功 / ❌ 失败
- 具体效果描述

**备注:**
- 可能的副作用
- 需要注意的事项
- 回退方法

**相关链接:**
- [相关文档或讨论](URL)

问题记录

[示例] 2025-10-26 窗口无法拖动问题

问题描述: 重启后 KDE Plasma 窗口无法通过标题栏拖动,只能最小化/最大化

环境信息:

  • 系统版本: Arch Linux (kernel 6.x.x)
  • 桌面环境: KDE Plasma 6.x (Wayland)
  • 相关软件: kwin_wayland

解决方案: 使用 kwin_wayland --replace & 重启窗口管理器

执行的操作:

1
2
3
4
5
6
7
8
# 1. 检查 KWin 进程状态
ps aux | grep kwin_wayland

# 2. 替换 KWin 进程
kwin_wayland --replace &

# 3. 验证窗口是否可以拖动
# (尝试拖动任意窗口)

修改的文件: 无需修改文件

操作结果:

  • ✅ 成功
  • 窗口可以正常拖动
  • 所有窗口状态保持不变

备注:

  • 此方法在 Wayland 下安全有效
  • 不会导致会话中断
  • 如果重启后问题复现,考虑检查窗口规则配置

相关链接:

  • 参考文档上方 “KDE Plasma 窗口无法拖动问题解决方案” 章节

[待记录] 新问题模板

问题描述:

环境信息:

  • 系统版本: Arch Linux
  • 桌面环境: KDE Plasma
  • 相关软件版本:

解决方案:

执行的操作:

1

修改的文件:

操作结果:

备注:

相关链接:


系统操作历史

记录所有对系统做的重要配置修改,方便追踪和回退

配置修改记录

[日期] 操作名称

修改内容:

  • 修改了什么
  • 为什么修改

备份位置:

1
# 备份命令

回退方法:

1
# 如何撤销此修改

已安装的自定义脚本

记录所有创建的自定义脚本和服务

脚本清单

脚本路径功能创建日期状态
~/.local/bin/restore-brightness.sh恢复显示器亮度2025-XX-XX✅ 启用
~/.local/bin/lock-and-dpms-off.sh锁屏并关闭显示器2025-XX-XX✅ 启用

systemd 服务清单

记录所有自定义的 systemd 服务

服务名称功能状态备注
restore-brightness.service登录时恢复亮度enabled用户服务

查看服务状态命令:

1
2
3
4
5
# 列出所有用户服务
systemctl --user list-units --type=service

# 查看特定服务状态
systemctl --user status restore-brightness.service

配置文件备份

记录重要配置文件的备份位置

备份目录结构

1
2
3
4
5
6
7
8
~/.config-backups/
├── kde-20251026/          # KDE 配置备份
│   ├── kwinrc
│   └── kwinrulesrc
├── powerdevil-20251026/   # 电源管理配置备份
│   ├── powerdevilrc
│   └── powermanagementprofilesrc
└── ...

创建备份的命令

1
2
3
4
5
# 备份 KDE 配置
~/.local/bin/backup-kde-config.sh

# 备份电源管理配置
~/.local/bin/backup-powerdevil.sh

故障排查清单

遇到问题时的标准检查流程

KDE 桌面问题排查

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
# 1. 检查 Plasma 进程
ps aux | grep plasmashell
ps aux | grep kwin

# 2. 查看 KDE 日志
journalctl --user -b | grep -i plasma
journalctl --user -b | grep -i kwin

# 3. 检查系统日志
journalctl -xe

# 4. 验证配置文件
ls -la ~/.config/kwin*
ls -la ~/.config/plasma*

# 5. 检查缓存
du -sh ~/.cache/plasma*
du -sh ~/.cache/kwin*

显示器/亮度问题排查

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
# 1. 检查 DDC/CI 通信
ddcutil detect
ddcutil getvcp 10

# 2. 检查 DPMS 状态
xset q | grep -A 5 "DPMS"

# 3. 检查 i2c 模块
lsmod | grep i2c

# 4. 检查电源管理服务
systemctl --user status plasma-powerdevil.service

有用的命令集合

KDE 相关

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
# 重启 Plasma Shell
killall plasmashell && kstart5 plasmashell &

# 重启 KWin (Wayland)
kwin_wayland --replace &

# 重新配置 KWin
qdbus6 org.kde.KWin /KWin reconfigure

# 重建 KDE 缓存
kbuildsycoca5 --noincremental

# 查看 KDE 版本
plasmashell --version
kwin_wayland --version

系统信息

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
# 查看内核版本
uname -r

# 查看系统版本
cat /etc/os-release

# 查看已安装的包
pacman -Q | grep plasma
pacman -Q | grep kde

# 查看显卡信息
lspci | grep -i vga
glxinfo | grep "OpenGL renderer"

日志查看

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
# 查看启动日志
journalctl -b

# 查看最近的错误
journalctl -p err -b

# 实时查看日志
journalctl -f

# 查看特定服务日志
journalctl --user -u plasma-kwin_wayland.service -f

快速参考

常用目录

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
# KDE 配置目录
~/.config/

# KDE 缓存目录
~/.cache/

# KDE 本地数据
~/.local/share/

# 自定义脚本
~/.local/bin/

# systemd 用户服务
~/.config/systemd/user/

# 自动启动
~/.config/autostart/

配置文件位置

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
# KWin 配置
~/.config/kwinrc

# 窗口规则
~/.config/kwinrulesrc

# Plasma 配置
~/.config/plasmarc

# 电源管理
~/.config/powermanagementprofilesrc
~/.config/powerdevilrc

注意事项

⚠️ 重要提示

  1. 修改配置前一定要备份

    1
    
    cp ~/.config/kwinrc ~/.config/kwinrc.backup-$(date +%Y%m%d)
    
  2. 记录所有操作

    • 执行的命令
    • 修改的文件
    • 操作时间
    • 操作结果
  3. 测试回退方案

    • 在应用解决方案前,确保知道如何回退
    • 保留备份文件至少一周
  4. Wayland vs X11

    • 确认当前使用的显示服务器: echo $XDG_SESSION_TYPE
    • 某些命令只在特定环境下有效
  5. 系统更新

    • 定期更新系统: sudo pacman -Syu
    • 更新后检查是否有新问题
    • 记录更新日期和版本

📋 检查清单

使用新的解决方案前:

  • 已备份相关配置文件
  • 已记录当前工作配置
  • 已了解回退方法
  • 已记录操作步骤
  • 已保存所有未保存的工作

更新日志

日期更新内容备注
2025-10-26创建问题记录日志章节初始化文档结构

📌 使用提示:

  1. 添加新问题时: 复制"新问题模板”,填写详细信息
  2. 定期整理: 每月回顾已解决的问题,归档重要解决方案
  3. 交叉引用: 在问题记录中引用文档上方的详细解决方案章节
  4. 持续更新: 每次遇到问题并解决后,立即记录到此文档