debian 13的默认音量设置在哪

用的应该是pulseaudio,默认音量是40%,我把配置文件复制到家目录下:
cp -R /etc/pulse/* ~/.config/pulse/

然后在~/.config/pulse/system.pa和~/.config/pulse/default.pa下添加:
set-sink-volume @DEFAULT_SINK@ 20%

或者

set-sink-volume 0 20%

重启都不起作用。如果在启动脚本(我自己写的一个脚本,开机或者登陆后运行)里写:
pactl set-sink-volume @DEFAULT_SINK@ 20%

可以起作用,但是锁屏后恢复又变为40%。怎么办?多谢各位哈。

首先先确定你的系统真的在用 pulseaudio,还是 pipewire 的 pulseaudio 兼容层。从 PipeWire - Debian Wiki 来看你的 Debian 13 如果新安装那应该默认是 pipewire。

有道理。pactl info的结果是:
服务器字串:/run/user/1000/pulse/native
程序库协议版本:35
服务器协议版本:35
是否本地服务器:是
客户端索引:65
区块大小: 65472
用户名:linlin
主机名:debian
服务器名:PulseAudio (on PipeWire 1.4.2)
服务器版本:15.0.0
默认采样规格:float32le 2ch 48000Hz
默认声道映射:front-left,front-right
默认音频入口:alsa_output.pci-0000_00_1b.0.analog-stereo
默认信源: alsa_output.pci-0000_00_1b.0.analog-stereo.monitor
Cookie:71a9:4dbb
看来确实是pipewire

哎,但是不管怎么改,改pulseaudio配置文件也好,改wireplumber的配置文件也好,将音量设置放在自启动文件里也好,怎么都没法实现锁屏重启后为已设置的音量,不管怎么改,锁屏后再开音量都是40%

好怪。它应该会记住你的音量设置的呀。

只要不锁屏,是可以记住音量设置的,重启,注销都可以,但是锁屏就不行,一锁屏就回到40%

,不知道这个设置在哪里。

好怪啊。

我是debian+xfce4,从debian 12升上来的。更改声音后,注销也不会保存,但是重启是可以保存设置的。

问了deepseek,终于找到问题原因和解决办法了。用方案一解决。

这个问题在Debian上很常见,通常不是因为PipeWire或XFCE本身有Bug,而是登录管理器(SDDM/LightDM/GDM)的启动流程导致的。

简单来说,你在登录界面输入密码时,系统背后其实已经启动了一套临时的PipeWire来播放登陆音效。等你登录进桌面,你设置的音量会被这个"临时音量"(通常是40%)覆盖掉。

针对不同的登录管理器,有以下两种主流且有效的解决办法。

方案一:直接治本(推荐,针对LightDM/GDM/SDDM)

如果你的登录管理器(如LightDM、GDM、SDDM)在登录界面不需要播放声音,最彻底的方案是直接禁止它在后台启动PipeWire。

确认登录管理器用户

根据你用的显示管理器,用户名通常是:

LightDM: lightdm

GDM: gdm 或 gdm3

SDDM: sddm

执行禁用命令

打开终端,假设你用的是 LightDM(XFCE+Dabian通常默认是这个),依次执行:

# 1. 进入登录管理器的系统环境

sudo machinectl shell lightdm@ /bin/sh

# 2. 停止并禁用服务

systemctl --user stop pipewire.service pipewire.socket wireplumber.service wireplumber.socket

systemctl --user disable pipewire.service pipewire.socket wireplumber.service wireplumber.socket

# 3. 彻底屏蔽(防止被其他进程唤醒)

systemctl --user mask pipewire.service pipewire.socket wireplumber.service wireplumber.socket

# 4. 输入 exit 退出该环境回到自己的终端

exit

注意:如果提示machinectl命令不存在,需要先安装systemd-container包:sudo apt install systemd-container。

方案二:覆盖配置(针对SDDM用户)

如果你使用的是SDDM,且不想禁用它的声音,或者方案一不生效,可以将你当前的音量配置复制给SDDM,让它一启动就用你设定的音量-1。

先在XFCE里把音量调整到你满意的数值(比如80%)。

执行以下命令,将配置同步给SDDM:

sudo install -o sddm -g sddm ~/.local/state/wireplumber/default-routes /var/lib/sddm/.local/state/wireplumber/default-routes

方案三:检查服务状态(备选)

如果以上方法都不奏效,请检查一下是否有其他服务在干扰:

检查冲突:Debian从PulseAudio切换到PipeWire时,偶尔会残留pulseaudio服务。确保彻底移除了它:

dpkg -l | grep pulseaudio

如果看到pulseaudio相关的包(非pipewire-pulse),建议卸载以避免冲突。

检查插件:确认你的XFCE面板使用的是xfce4-pulseaudio-plugin,并且没有同时运行xfce4-volumed或xfce4-volumed-pulse,后者可能会尝试接管音量控制逻辑。

操作建议:先尝试方案一。如果你的登录管理器是LightDM或GDM,这个方法最干净;如果是SDDM且不想禁用声音,请用方案二。操作完成后,注销并重新登录一次,你的音量设置就应该被正确保留了。

你这叫「治标」。

我看了一下我的Arch Linux的SDDM+KDE的行为。在登录界面时,sddm用户的音频路由到扬声器,音量40%。登录KDE后,该登录用户的音量被设置为100%,同时sddm用户的音频被路由到空设备(null),音量100%。在锁屏时,KDE会记住用户设置的音量。不过重新登录的时候有点问题,音量经常被重置为100%,有时候是98%,不是登出时的值。

如果真如你所说,你的设备管理显然是有问题的:两个用户在抢设备。

不能说抢设备,只是lightdm改了声音设置没改回来。“简单来说,你在登录界面输入密码时,系统背后其实已经启动了一套临时的PipeWire来播放登陆音效。等你登录进桌面,你设置的音量会被这个"临时音量”(通常是40%)覆盖掉。"

你还没明白吗?音量是每个PipeWire实例自己管理的;它应当在启动的时候设置好音量,不需要管之前是怎样的设置(虽然在系统层级ALSA也会做记住和恢复音量的事情,但那个是和系统的每一次启动耦合的,不是和用户会话耦合的)。

确实如此,但是事实就是lightdm会改过去但是不改回来。如果不用建议的方法,就是在lightdm中禁用pipewire,那么又该怎么做呢?

哦对了,还有一点我没说:锁屏的时候设备不一定会交回给登录管理器——至少KDE不会。我也用lightdm,但是我从来不知道它还有锁屏器。

如果你要「治本」,你首先需要搞清楚具体发生了什么,然后再看是谁的锅。这会用到很多系统调试工具,我懒得教了……

听起来就麻烦,算了,我还是将就用好了。

看了下出处,原帖子是这么解释的:https://unix.stackexchange.com/posts/767917/revisions

Usually, on Linux systems with a graphical desktop user interface, the first program that shows up is the greeter, which renders the login screen. This greeter is executed in a systemd user context, which triggers the startup of user units (services) defined for all users. One of this units is Pipewire, which triggers the startup of WirePlumber.

When WirePlumber starts up, one of the first things it does by default is to restore previously stored routes, which are stored per-user and include volume configuration. If this fails, WirePlumber sets the volume to a default value of 40% for sinks, and 100% for sources.

Therefore, if your greeter is not WirePlumber-aware, it can reset the volume every time the login screen is shown, which is a change that is picked up by the WirePlumber instance for actual users on login, overwriting any previously stored volumes.

It is hard to say without further environment information if this particular problem affects you, but it seems to be a common problem that nevertheless is pretty hard to troubleshoot, so I think it’s a possibility worth exploring. In my case, it happened with LightDM. The Debian Wiki has a section on PipeWire dedicated to this problem with SDDM.
下面就是方法一的解法,直接在lightdm中禁用pipewire。

翻译:

通常,在具有图形桌面用户界面的 Linux 系统上,第一个显示的程序是迎宾程序,它渲染登录屏幕。这个迎宾程序在 systemd 用户中执行,这会触发为所有用户定义的用户单元(服务)的启动。其中一个单元是 Pipewire,它会触发 WirePlumber 的启动。
当 WirePlumber 启动时,默认执行的第一件事情之一是恢复先前存储的路由,这些路由是按用户存储的,并包括音量配置。如果恢复失败,WirePlumber 会将接收端的音量设置为默认值 40%,将发送端的音量设置为默认值 100%.
因此,如果你的迎宾程序不了解 WirePlumber,它可能会在每次显示登录屏幕时重置音量,这会被 WirePlumber 实例在用户实际登录时检测到,从而覆盖之前存储的音量设置。
没有更多的环境信息,很难判断这个特定问题是否会影响你,但它似乎是一个常见问题,尽管排查起来相当困难,所以我认为这是一个值得研究的可能性。在我的情况中,它发生在 LightDM 上。

可能是系统不同的原因,我这里从来没有观测到用户会话的音量被lightdm或者sddm影响。