-
Notifications
You must be signed in to change notification settings - Fork 164
feat(sound): redesign with separate device profiles page #1500
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
jacobgkau
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
First, there's an overflow/sizing issue with the drop-down box on the Device Profiles page. By default, I had no profile selected (not even "Off"), which seems impossible. In that state, most of the drop-down items flowed out of the end of the window:
It seems like longer labels being selected allowed the drop-down to display more of its contents:
Separate issue, but after I selected "Off" as my profile, the device disappeared from the list, making it impossible to turn on again. The point of the "Off" option is to still show the device in the list while it's disabled, so that shouldn't happen.
|
Fixed the devices on the device profiles page disappearing when setting their profile to off. Which also fixes the device briefly disappearing when the device's nodes are replaced. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
On the same machine as yesterday, I still had one of the devices not have any profile visibly selected at first, which shouldn't be possible:
Here is pw-dump from that system: pw-dump-oryp8.txt
If I set the device to "Off", it initially shows itself as "Off", but if I reboot, I end up in the same state as shown above (it boots up set to nothing instead of showing as set to "Off".)
|
I'm still also seeing menu items getting cut off at the edge of the window. Is that a libcosmic bug? Dropdown menus in other COSMIC apps seem to be able to run out the side of the window. |
|
It's a different dropdown widget. I will switch to it |
717e099 to
278f24d
Compare
|
The index of the selected profile on that Built-in Audio device should be fixed now |
|
On 8688b54 and oryp8, the profile of If I just boot (defaulting to I know some of this might be audio card weirdness that's outside the scope of COSMIC Settings, but does any of this sound like a COSMIC Settings thing? The two distinct problems are the default/last selected profile not being saved between sessions, and not being able to switch from the default to one of the others successfully without first selecting |
|
From @WatchMkr in Mattermost (posting here so it doesn't get lost)-- the design also calls for the device description to be prepended to the profile name when selecting an input/output device (e.g. |
|
Seems I'll need to add the different routes (ports) to the output/input dropdown lists. Pavucontrol puts those on a separate port dropdown. |
|
Not sure if you were ready for me to look at this again yet, but just to corroborate, on f787c83, I'm seeing the The other problems I mentioned before are still occurring. |
cdbd2a9 to
089d65e
Compare
jacobgkau
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
35e3127 still has reliability issues on oryp8.
If I set Built-in Audio's profile to Analog Stereo Duplex and then reboot, it defaults to Digital Surround 5.1 (IEC958/AC3) Output again.
If I change the profile to Analog Stereo Duplex, then both Output device and Input device show their only option as Built-in Audio, with no route name/description prepended. Changing the speaker volume with hotkeys doesn't work in this state.
If I change the profile to Analog Stereo Output, then Output device changes to Speakers - Built-in Audio, and the speaker hotkeys work. Alternatively, if I open up an app and start playing audio, then the Output device does not change, but the speaker hotkeys do start working.
|
What's the output of Based on the logic that I have, the most likely problem is that the node failed to parse. The node ID is required to set a default sink/source, and the route won't be added to the device name if a node isn't associated with it. |
| .info({ | ||
| let state = Rc::downgrade(&state); | ||
| move |info| { | ||
| if let Some(node) = Node::from_node(info) { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This is where the node is parsed. This could be wrapped with dbg!(Node::from_node(info)) to check if all nodes are getting parsed.
jacobgkau
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Here is pw-dump after booting on 4a14492, defaulting to S/PDIF: oryp8-4a14492-default-spdif.txt
Here is pw-dump after changing the profile to Analog Stereo Duplex: oryp8-4a14492-duplex.txt
On 4a14492, the speaker hotkeys work immediately after changing the profile to Analog Stereo Duplex, but the Output device is only labeled Built-in Audio, while the Input device is labeled Speakers - Built-in Audio.
|
I think I see the issue |
|
Hoping this fixes the issue you're seeing. |
|
After looking at WirePlumber's debug logs, I think Pop!_OS is configured to have WirePlumber handle auto-selecting/remembering device profiles, not the PipeWire daemon itself. (PipeWire has an ALSA option for it, but the docs note it's usually disabled so the session manager can handle it instead.) I think it's working correctly. But again, on a44fc56, I'm seeing COSMIC Settings not update to reflect the profile change when I unplug HDMI, until I exit and re-enter the |
|
I'm tearing my hair out trying to test at this point. I'm getting the following crash on this branch very often after trying to reset the config files: I don't think any of the |
|
Just now, I saw Settings start working after I suspended for a while and then resumed. But after removing the config files and rebooting again, it stopped working again. Here is a more complete output doing a |
|
I think that code isn't needed anymore, so we can remove it. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
That last commit solved the crash I was seeing.
I'm seeing the following occur when the Sound applet is in the panel:
- Plug in HDMI for the first time; it gets a profile auto-selected, and that's marked as saved according to
pw-cli e ## Profile. - Unplug HDMI; the profile's changed to Off, still marked as saved in
pw-cli e ## Profile. - On all subsequent plug-ins of HDMI, the profile stays on Off since it was saved.
After removing the Sound applet from the panel (and resetting WirePlumber's state), the Param:Profile:save parameter remains false, both when plugging in HDMI and getting its auto-selected profile, and unplugging it to go to Off again. When I reset my COSMIC settings to get the Sound applet running again, the broken behavior returns.
This suggests to me that the updated Sound applet (which is pointing towards this branch at this time) is saving the profile when it gets auto-selected. It either needs to not do that on auto-selection (and only save if it's an actual user action-- which can't be done through the Applet, anyway), or at least set Param:Profile:save to false when it's (auto-)set to Off.
|
The applet is pointing to an older commit, so I'll update it. |
|
The applet PR has been rebased. The current behavior is to only save when manually saving a profile. |
jacobgkau
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
HDMI plug/unplug is working great now. It switches between the default profile & Off as expected by default; if I set a different profile, then it switches between that profile and Off.
- The broken test case from the current version works (hotkeys & sound work immediately after changing the profile).
- The selected profile is saved across reboots.
- The input & output volume sliders independently work as expected.
- The output balance isn't reset by changing the volume in Settings.
- It's still reset by using the volume hotkeys, but I assume that's a cosmic-osd issue.
- Input & output device names update immediately when plugging/unplugging.
- There's still a delay before the
Confirm Device Typedialog shows up (it waits until the volume slider or any other OSDs have timed out first), but that's not a regression, and is also a cosmic-osd issue.
- There's still a delay before the
- The amplification toggles work as expected (and default to on for output & off for input).
- Pro Audio devices that don't have a physical device attached are labeled with numbers as expected.
- When changing a sole device from a Duplex profile to an Output-only profile, the Input section disappears; when changing to an Input-only profile, the Output section has its device change to
Dummy Output, and the Input section shows up normally.- This seems a little inconsistent, but doesn't seem to present a problem.
- Hotplugging/unplugging entire devices now updates their available profiles as expected.
- Mixing & matching audio profiles between different devices works fine.
- S/PDIF output is able to be configured
I've mostly been testing on laptops, so I'm going to take a quick look on a desktop as well before approving.
jacobgkau
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Working as expected on a desktop as well.


Closes #1325
Closes pop-os/cosmic-osd#158
Closes pop-os/cosmic-epoch#655
Closes pop-os/cosmic-epoch#787
Closes pop-os/cosmic-epoch#946
Closes pop-os/cosmic-epoch#1001
Closes pop-os/cosmic-epoch#568
Closes pop-os/cosmic-epoch#1368
wpctl set-profile {{device-id}} {profile-index}}instead ofpactlwpctl set-default {{node-id}}- Enables using wpctl for setting card profiles, default sinks/sources, volume, and mute
- Significant performance and stability improvements
- Wireplumber state no longer gets corrupted