您尚未登录。

#1 2024-04-01 19:09:50

xuno
会员
注册时间: 2024-03-27
帖子: 17

[已解决]怎么在播放音频的时候阻止系统进入睡眠?

系统的睡眠/休眠功能工作的很好
但是当我无论用VLC spotify 抑或者是网页端听歌 看视频
系统会休眠 而这些场景有一个共同点就是 音频无论通过笔记本喇叭 蓝牙音响 或者耳机 都是在输出状态
那么我怎么配置一个脚本实现音频工作就不睡眠的功能呢

我查阅了英文forums https://bbs.archlinux.org/viewtopic.php?id=204253
怎么应用这段代码

pacmd list-sink-inputs | grep -c 'state: RUNNING'

我同时询问了GPT

#!/usr/bin/env bash

# 获取当前音频活动的ID
active_sink_id=$(pacmd list-sinks | grep '* index' | awk '{print $3}')

# 检查是否有音频流正在播放
if pacmd list-sink-inputs | grep -q "$active_sink_id"; then    echo "Audio is active"else    echo "Audio is not active"fi```确保给予执行权限:```bashchmod +x check_audio_active.sh```### 步骤 2: 创建一个 systemd 服务接下来,创建一个名为 `prevent-sleep.service` 的 systemd 服务文件,并放在 `/etc/systemd/system/` 目录下:```ini[Unit]Description=Prevent system sleep when audio is active[Service]Type=simpleExecStart=/path/to/check_audio_active.shRestart=on-failureRestartSec=5[Install]WantedBy=multi-user.target```请将 `/path/to/check_audio_active.sh` 替换为您脚本的实际路径。### 步骤 3: 启用并启动服务启用服务,以便在启动时自动运行:```bashsystemctl enable prevent-sleep.service```启动服务:```bashsystemctl start prevent-sleep.service```### 步骤 4: 配置服务触发器为了确保服务能够根据音频活动状态动态运行,我们需要创建一个触发器。创建一个名为 `prevent-sleep.path` 的 systemd 路径文件,并放在 `/etc/systemd/system/` 目录下:```ini[Unit]Description=Trigger prevent-sleep service on audio activity[Path]PathExists=/run/pulse/default.sink.*.state[Install]WantedBy=multi-user.target```启用触发器:```bashsystemctl enable prevent-sleep.path```### 步骤 5: 重启并测试重启您的系统来确保一切正常运行。您可以使用 `systemctl status` 命令来检查服务和触发器的状态。```bashsystemctl status prevent-sleep.servicesystemctl status prevent-sleep.path```这样,当有音频输出活动时,`prevent-sleep.service` 将会阻止系统进入睡眠或休眠状态。如果您希望进一步优化这个脚本,可以考虑添加逻辑来直接与 systemd 的睡眠抑制功能交互,例如使用 `systemctl inhibit` 命令。请注意,这个解决方案是一个基本的示例,您可能需要根据您的具体需求进行调整。此外,确保您的系统已经安装了 `pulseaudio` 和 `systemd`。

请问有没有更简单的脚本方法 毕竟在我的KDE桌面就有gui导入脚本的选项

最近编辑记录 xuno (2024-04-17 01:05:29)

离线

#2 2024-04-01 21:08:59

Bryan2333
会员
注册时间: 2023-01-19
帖子: 104

Re: [已解决]怎么在播放音频的时候阻止系统进入睡眠?

vQH83LcIFt5BkXR.png

你可以试一下把这个选调取消。

离线

#3 2024-04-01 21:15:39

依云
会员
所在地: a.k.a. 百合仙子
注册时间: 2011-08-21
帖子: 8,485
个人网站

Re: [已解决]怎么在播放音频的时候阻止系统进入睡眠?

写个脚本连接到 PipeWire / PulseAudio,如果有程序在输出,你就拿个合适的 systemd inhibitor。程序停止输出,你就释放 inhibitor。
不过我没明白你的系统为什么那么容易就会休眠?确定是休眠吗?确定不是挂起?或者仅仅只是锁屏了?

离线

#4 2024-04-01 21:59:49

xuno
会员
注册时间: 2024-03-27
帖子: 17

Re: [已解决]怎么在播放音频的时候阻止系统进入睡眠?

Bryan2333 说:

https://s2.loli.net/2024/04/01/vQH83LcIFt5BkXR.png

你可以试一下把这个选调取消。

没用诶

离线

#5 2024-04-02 00:24:45

xuno
会员
注册时间: 2024-03-27
帖子: 17

Re: [已解决]怎么在播放音频的时候阻止系统进入睡眠?

我找到了一种相比较脚本更为简单的方法

使用caffeine保持电脑awake

yay -S caffeine-ng

使用PLASMA的图形管理器添加开机启动项 或者手动

systemctl enable caffeine-ng

8OVFSQRr.png

在caffeine界面里手动添加你要守护的进程
s64OrCQ5.png

离线

页脚