Bug 509960

Summary: Kasts does not save/restore volume settings - always resets to 100% on restart
Product: [Applications] kasts Reporter: Tobias Sekan <tobias.sekan>
Component: generalAssignee: bart
Status: REPORTED ---    
Severity: normal    
Priority: NOR    
Version First Reported In: 25.08.1   
Target Milestone: ---   
Platform: Arch Linux   
OS: Linux   
Latest Commit: Version Fixed/Implemented In:
Sentry Crash Report:

Description Tobias Sekan 2025-09-26 10:41:58 UTC
STEPS TO REPRODUCE
1. Open Kasts podcast application
2. Adjust the volume using the internal volume slider (e.g., set to 75%)
3. Close the Kasts application completely
4. Restart the Kasts application

OBSERVED RESULT
The volume setting is reset to 100% every time the application is restarted, regardless of what volume level was set before closing the application.

EXPECTED RESULT
The volume setting should be saved and restored to the previously set level (e.g., 75%) when the application is restarted.

SOFTWARE/OS VERSIONS
Windows: N/A
macOS: N/A
Linux/KDE Plasma: Arch Linux
KDE Plasma Version: 6.4.5
KDE Frameworks Version: 6.18.0
Qt Version: 6.9.2
Kasts Version: 25.08.01

ADDITIONAL INFORMATION
- Kernel Version: 6.16.8-arch3-1 (64-bit)
- Graphics Platform: Wayland
- Processors: 16 × AMD Ryzen 7 5800X3D 8-Core Processor
- Memory: 64 GB of RAM (62.7 GB usable)
- Graphics Processor: AMD Radeon RX 7800 XT
- Manufacturer: ASUS

The issue appears to be related to the application's settings persistence mechanism not properly saving or loading the volume configuration. This affects user experience as users need to readjust the volume every time they start the application.
Comment 1 bart 2025-11-16 13:44:54 UTC
The volume settings should actually be saved and restored by the underlying audio system, not the application itself.  This should work for pulseaudio and pipewire out-of-the-box.

Which audio system are you using, and which is the backend audio setting in kasts (VLC, qt multimedia or gstreamer)?
Comment 2 Tobias Sekan 2025-11-17 15:08:17 UTC
(In reply to bart from comment #1)
> The volume settings should actually be saved and restored by the underlying
> audio system, not the application itself.  This should work for pulseaudio
> and pipewire out-of-the-box.
> 
> Which audio system are you using, and which is the backend audio setting in
> kasts (VLC, qt multimedia or gstreamer)?

Hi,

The audio backend in kasts is "Qt Mulitmedia"

"pactl info" says

Server String: /run/user/1000/pulse/native
Library Protocol Version: 35
Server Protocol Version: 35
Is Local: yes
Client Index: 2842
Tile Size: 65472
User Name: ****
Host Name: ****
Server Name: PulseAudio (on PipeWire 1.4.9)
Server Version: 15.0.0
Default Sample Specification: float32le 2ch 48000Hz
Default Channel Map: front-left,front-right
Default Sink: alsa_output.pci-0000_0c_00.4.iec958-stereo
Default Source: alsa_input.usb-046d_MX_Brio_705_for_Business_2352LZ52R6B8-04.analog-stereo
Cookie: 2298:6bc9

"pactl list short" says

1       libpipewire-module-rt   {
            nice.level    = -11
            rt.prio       = 88
            #rt.time.soft = -1
            #rt.time.hard = -1
            #uclamp.min = 0
            #uclamp.max = 1024
        }
2       libpipewire-module-protocol-native      {
            # List of server Unix sockets, and optionally permissions
            #sockets = [ { name = "pipewire-0" }, { name = "pipewire-0-manager" } ]
        }
4       libpipewire-module-profiler     {
            #profile.interval.ms = 0
        }
6       libpipewire-module-metadata
8       libpipewire-module-spa-device-factory
10      libpipewire-module-spa-node-factory
12      libpipewire-module-client-node
14      libpipewire-module-client-device
16      libpipewire-module-portal
17      libpipewire-module-access       {
            # Socket-specific access permissions
            #access.socket = { pipewire-0 = "default", pipewire-0-manager = "unrestricted" }

            # Deprecated legacy mode (not socket-based),
            # for now enabled by default if access.socket is not specified
            #access.legacy = true
        }
18      libpipewire-module-adapter
20      libpipewire-module-link-factory {
            #allow.link.passive = false
        }
22      libpipewire-module-session-manager
536870912       module-always-sink
536870913       module-device-manager
536870914       module-device-restore
536870915       module-stream-restore
51      alsa_output.pci-0000_0c_00.4.iec958-stereo      PipeWire        s32le 2ch 48000Hz       SUSPENDED
51      alsa_output.pci-0000_0c_00.4.iec958-stereo.monitor      PipeWire        s32le 2ch 48000Hz       SUSPENDED
96      alsa_input.usb-046d_MX_Brio_705_for_Business_2352LZ52R6B8-04.analog-stereo      PipeWire        s16le 2ch 48000Hz       SUSPENDED
32      PipeWire        *
33      PipeWire        pipewire-media-session
34      PipeWire        pipewire-media-session
43      PipeWire        pipewire
44      PipeWire        kded6
58      PipeWire        *
59      PipeWire        kded6
60      PipeWire        plasmashell
61      PipeWire        *
62      PipeWire        plasmashell
68      PipeWire        teams-for-linux
1040    PipeWire        librewolf
1041    PipeWire        librewolf
2732    PipeWire        strawberry
2797    PipeWire        librewolf
2798    PipeWire        librewolf
2814    PipeWire        kasts-bin
2892    PipeWire        pactl
0       audio-volume-change     s16le 2ch 48000Hz       0,301
46      alsa_card.pci-0000_0a_00.1      alsa
47      alsa_card.pci-0000_0c_00.4      alsa
95      alsa_card.usb-046d_MX_Brio_705_for_Business_2352LZ52R6B8-04     alsa