如何从命令行控制 KDE 中的音量?

Ben*_*ird 5 kde volume-control

我想使用 xbindkeys 设置组合键来增大/减小音量,但要做到这一点,我需要运行一个命令来更改音量,而不必单击音量图标并用鼠标更改它。我怎样才能做到这一点?

Ben*_*ird 3

您可以使用qdbus命令行访问图形 kmix。这些是增加和减少音量的命令:

qdbus org.kde.kmix /kmix/KMixWindow/actions/increase_volume com.trolltech.Qt.QAction.trigger

qdbus org.kde.kmix /kmix/KMixWindow/actions/decrease_volume com.trolltech.Qt.QAction.trigger
Run Code Online (Sandbox Code Playgroud)

作为参考,man qdbus 显示语法为qdbus <service> <path> <method> <args>,您可以通过运行较短的命令来查看每个阶段的可用选项列表 - 例如,运行qdbus org.kde.kmix将显示可用路径列表,并将qdbus org.kde.kmix /kmix/KMixWindow/actions/decrease_volume显示该路径的可用方法列表等. 请注意,可以在不带参数的情况下调用标记为正在读取或可读写的方法来获取其当前值 - 这可能对您的自动化有用。

或者,您可以使用 /Mixers 选项直接访问音量控制 - 即不通过图形 kmixer。

只需致电qdbus org.kde.kmix /Mixers org.kde.KMix.MixSet.currentMasterControl找出当前的主控制(在我的例子中,alsa_output.pci-0000_00_1b.0.analog-stereo)。然后使用与该名称匹配的混音器,即 /Mixers/0/alsa_output_pci_0000_00_1b_0_analog_stereo,方法为 org.kde.KMix.Control.increaseVolume 或 org.kde.KMix.Control.decreaseVolume。

因此,直接访问音量控制将是这样的:

qdbus org.kde.kmix /Mixers/0/alsa_output_pci_0000_00_1b_0_analog_stereo org.kde.KMix.Control.increaseVolume

qdbus org.kde.kmix /Mixers/0/alsa_output_pci_0000_00_1b_0_analog_stereo org.kde.KMix.Control.decreaseVolume
Run Code Online (Sandbox Code Playgroud)

这将改变音量,而不做任何图形处理。

  • 当我尝试这个答案时,我得到“服务‘org.kde.kmix’不存在。”。目前2022年的解决方案是 `qdbus org.kde.kglobalaccel /component/kmix invokeShortcut "decrease_volume"` 来减小音量;将“decrease_volume”替换为“increase_volume”或“mute”来执行这些操作。 (3认同)
  • N1!请注意:qt 参数发生了变化,现在是 `org.qtproject.Qt.QAction.trigger`,即要增加音量,应该调用 `qdbus org.kde.kmix /kmix/KMixWindow/actions/decrease_volume org. qtproject.Qt.QAction.trigger` (2认同)

小智 0

音量增加

qdbus org.kde.kglobalaccel /component/kmix invokeShortcut increase_volume
Run Code Online (Sandbox Code Playgroud)

成交量减少

qdbus org.kde.kglobalaccel /component/kmix invokeShortcut decrease_volume
Run Code Online (Sandbox Code Playgroud)

沉默的

qdbus org.kde.kglobalaccel /component/kmix invokeShortcut mute
Run Code Online (Sandbox Code Playgroud)