Bug 491205

Summary: Show understandable device names in applet
Product: [Plasma] plasma-pa Reporter: gudvinr+kde
Component: appletAssignee: Plasma Bugs List <plasma-bugs>
Status: RESOLVED FIXED    
Severity: normal CC: isma.af, me, nate, sitter
Priority: NOR    
Version: 6.1.3   
Target Milestone: ---   
Platform: Arch Linux   
OS: Linux   
Latest Commit: Version Fixed In:
Sentry Crash Report:

Description gudvinr+kde 2024-08-03 08:08:11 UTC
SUMMARY

Currently, I see device names provided by kernel.
E.g. built-in audio shown as ALCXXX and bluetooth speaker shown as %vendor%-%model%(%serial%)

The problem is that I don't care whatever codec my built-in audio card uses and from this name it is very unclear what "ALCwhatever" even means. Nowhere around your PC you'll find what audio chip is being used and how it's named.

At the same time, in sound settings same device named as "Headphones (Built-in Audio Analog Stereo)".
It is clear and understandable.

Bluetooth device named as "Speaker (%vendor%-%model%(%serial%))". Not that clear but still understandable.
With BT devices at least, you'll benefit from knowing device name since you might just have many of them connected.

SOFTWARE/OS VERSIONS
Operating System: Arch Linux 
KDE Plasma Version: 6.1.3
KDE Frameworks Version: 6.4.0
Qt Version: 6.7.2
Kernel Version: 6.10.2-arch1-1 (64-bit)
Graphics Platform: X11
Comment 1 Nate Graham 2024-08-05 20:22:27 UTC
The underlying problem here is that there are multiple sources of device names, and all of them are bad for some devices. Trying to find one source that works for everything appears to be a fool's errand, unfortunately.

For Plasma 6.2, we're going to let you choose your preferred source, and also override any of them with a custom name. See https://invent.kde.org/plasma/plasma-pa/-/merge_requests/271.
Comment 2 Nate Graham 2024-08-05 20:22:55 UTC
*** Bug 491206 has been marked as a duplicate of this bug. ***
Comment 3 gudvinr+kde 2024-08-06 10:19:48 UTC
(In reply to Nate Graham from comment #1)
> The underlying problem here is that there are multiple sources of device
> names, and all of them are bad for some devices. Trying to find one source
> that works for everything appears to be a fool's errand, unfortunately.

Pipewire uses "node.description" key for representing devices. It looks like it's the case for systemsettings too.

Not sure what was the reason to use "node.nick" instead, especially when "description" key labeled as "localized human readable node one-line description" in their docs.

For all of my devices, "node.nick" either the same as "node.description" or some hardware ID which isn't very "human readable" or just missing.

Some other projects that I am aware of, e.g. helvum (see https://gitlab.freedesktop.org/pipewire/helvum/-/commit/fe05282f5afe4148dedf941df75c50f1c4646916) and easyeffects also prefer description field over nick.

> For Plasma 6.2, we're going to let you choose your preferred source, and also override any of them with a custom name. See https://invent.kde.org/plasma/plasma-pa/-/merge_requests/271.

This MR looks way too technical for a user. People might not know (nor should) what the heck ALSA is or why these "sources" even exist.
IMO, sticking to single source and adding pencil icon for them to set up their own name will be simple than that. And, more importantly, it is simple concept that needs no explanation.
Comment 4 Harald Sitter 2024-08-31 02:42:00 UTC
Git commit eae94ed4f1eb62276fd27c4477347efe17127d90 by Harald Sitter.
Committed on 31/08/2024 at 02:40.
Pushed by sitter into branch 'master'.

allow user to rename devices and select a preferred name source

# Name Source

Allows choosing the name out of a set number of sources. Names have been
unified across applet and kcm now.
Changes here are instantly applied throughout the stack.

# Overrides

Additionally, overrides may be set. These override all supported name
fields so it doesn't matter which name source is chosen at the time the
change is made. The override installs a wireplumber json file and
restarts the stack to apply the change.
Related: bug 487658, bug 488897

M  +6    -1    applet/contents/ui/main.qml
M  +3    -0    src/CMakeLists.txt
A  +66   -0    src/devicenamesourcemodel.cpp     [License: LGPL(3+eV) LGPL(v3.0) LGPL(v2.1)]
A  +27   -0    src/devicenamesourcemodel.h     [License: LGPL(3+eV) LGPL(v3.0) LGPL(v2.1)]
A  +141  -0    src/devicerenamemodel.cpp     [License: LGPL(3+eV) LGPL(v3.0) LGPL(v2.1)]
A  +30   -0    src/devicerenamemodel.h     [License: LGPL(3+eV) LGPL(v3.0) LGPL(v2.1)]
A  +320  -0    src/devicerenamesaver.cpp     [License: LGPL(3+eV) LGPL(v3.0) LGPL(v2.1)]
A  +49   -0    src/devicerenamesaver.h     [License: LGPL(3+eV) LGPL(v3.0) LGPL(v2.1)]
M  +10   -0    src/globalconfig.kcfg
M  +1    -0    src/globalconfig.kcfgc
M  +17   -1    src/kcm/ui/DeviceListItem.qml
A  +267  -0    src/kcm/ui/RenameDevices.qml     [License: GPL(3+eV) GPL(v3.0) GPL(v2.0)]
M  +10   -0    src/kcm/ui/main.qml
M  +14   -0    src/qml/plugin.cpp

https://invent.kde.org/plasma/plasma-pa/-/commit/eae94ed4f1eb62276fd27c4477347efe17127d90