tidal-hifi icon indicating copy to clipboard operation
tidal-hifi copied to clipboard

Volume control is shared with other chromium apps.

Open RondoRevolution opened this issue 3 months ago • 7 comments

Currently, the volume control is shared with other chromium apps. In my case, I'm trying to use Tidal while using Vesktop, but the volume is shared between both, so if I close one and reopen, it sets the volume to the last used setting in a chromium app.

Note that I'm not talking about the volume slider inside Tidal-Hifi. I use KDE and I tend to use the volume slider in the app's icon/preview on the taskbar since it's much quicker than switching to the app's window, and by default on this app, it doesn't affect the volume slider inside the app, but the chromium volume slider.

Is that something that can be changed?

RondoRevolution avatar Sep 23 '25 01:09 RondoRevolution

Not from within the app itself I don't think. Volume control is currently also not a supported API option so the only way to do it inside tidal-hifi is to manually click & drag the little slider.

It's strange that multiple apps would use the same slider in KDE, is it the same for all electron apps 🤔?

Mastermindzh avatar Sep 25 '25 08:09 Mastermindzh

Hey there @Mastermindzh, just starting using this, really enjoying it, thanks for your work.

Volume control is currently also not a supported API option

Is this a planned feature, since I am looking for ways to control the volume from waybar directly (no success with playerctl).

mroetsc avatar Oct 09 '25 19:10 mroetsc

Hey,

To be honest, no. I'm behind on simple features even, and this would be rather involved.

Especially since it would only be fixed for tidal-hifi.

Mastermindzh avatar Oct 10 '25 12:10 Mastermindzh

Hmm i see seprate sliders for vivaldi, chrome and tidal.. but im on MATE desktop and using pipewire. I added a conf file to change the icon to not have same chrome icon on everything but sliders are all separate for me

Image

if anyone is interested. in the ~/.config/pipewire/pipewire-pulse.conf.d

12-tidal.rules.conf

stream.rules = [
    {
        matches = [
            {
                # all keys must match the value. ~ starts regex.
                application.process.binary = "tidal-hifi"
            }
        ]
        actions = {
            update-props = {
                application.name = "Tidal HiFi"
                application.icon-name = "tidal-hifi"
            }
        }
    }
]

xpander69 avatar Nov 05 '25 06:11 xpander69

There are multiple sliders for me in the sound applet for chromium apps, it's just that after changing one, it sets all other ones to the last set slider volume after reopening a chromium app, but I'll try your config, thanks!

RondoRevolution avatar Nov 05 '25 21:11 RondoRevolution

My config only changes icon and app name in the volume slider (so its easier to identify what is what), but yeah i cant reproduce your problem. All of them have their own slider. setting one doesn't change others for me. Maybe KDE bug? or maybe the name change does somehting indeed. i have changed it for multiple applications that otherwise had chromium icon there

xpander69 avatar Nov 06 '25 06:11 xpander69

I have found another solution that works for me:

You can set the voume via pactl as described here

So in practice:

  1. Get the sink id: SINK_INPUT_ID=$(pactl list sink-inputs | awk '/^Sink Input #/{id=$3} /application.name = "Tidal HiFi"/{print id; exit}' | tr -d '#') (this assumes you have the custom pipewire rules from @xpander69's reply above)
  2. Set the volume: pactl set-sink-input-volume $SINK_INPUT_ID +5%. You can use + and - to or absolute values. You can use % or a value between 0 and 65536 (value to percentage: (value / 65536) × 100)

In my script for waybar, this looks like this:

SINK_INPUT_ID=$(pactl list sink-inputs | awk '/^Sink Input #/{id=$3} /application.name = "Tidal HiFi"/{print id; exit}' | tr -d '#')
VOLUME=$(pactl list sink-inputs | awk -v id="$SINK_INPUT_ID" ' $0 ~ "^Sink Input #" id "$" {found=1} found && /Volume:/ {print $5; exit}')

pactl set-sink-input-volume $SINK_INPUT_ID +5%
echo "Tidal Volume set to $VOLUME"

You may find my complete implementation in my dotfiles

mroetsc avatar Nov 07 '25 20:11 mroetsc