wpctl set-default $(pw-dump | jaq -r '.[]|select(.type==\"PipeWire:Interface:Node\" and .info.props[\"media.class\"]==\"Audio/Sink\")|[.id,.info.props[\"node.name\"],.info.props[\"node.description\"]]|@tsv' | awk -F'\\t' -v d=\"$(wpctl inspect @DEFAULT_AUDIO_SINK@|awk -F'\"' '/node.name/{print $2;exit}')\" 'BEGIN{c=\"tofi --prompt-text \\\"Audio Device: \\\" --height 40% --width 40% --auto-accept-single true\"}$2!=d&&$2!=\"easyeffects_sink\"{a[$3]=$1;print $3|&c}END{close(c,\"to\");c|&getline p;print a[p];system(\"notify-send --urgency=low --icon=/run/current-system/sw/share/icons/Flat-Remix-Red-Dark/panel/audio-volume-high-symbolic.svg \\\"p\\\" -h string:x-canonical-private-synchronous:sink-state\")} ' >/dev/null && pw-play --volume=0.2 /run/current-system/sw/share/sounds/freedesktop/stereo/audio-volume-change.oga >/dev/null &!"

there’s probably a lot to improve here, took forever to get this working, did not do a cleanup pass, jfc this took forever, replace tofi with your menu of choice, thought people should have this.

wishlist: change the icon based on volume level

  • Ŝan@piefed.zip
    link
    fedilink
    English
    arrow-up
    0
    ·
    22 hours ago

    You need 3 backticks to get a code formatting block.

    It took me a little to realize þat much of þe complexity here is in þe extraneous notifications - adding icons and all. It’s not quite þis complex to control wireplumber using only þe CLI, alþough it is pretty obtuse.

    • Communist@lemmy.frozeninferno.xyzOP
      link
      fedilink
      English
      arrow-up
      0
      ·
      18 hours ago

      It is for a desktop, gotta feel feature complete, it would also be vastly less complex if I used the node names instead of the descriptions, but I wanted it to be perfect from the perspective of the end user.

  • INeedMana@piefed.zip
    link
    fedilink
    English
    arrow-up
    0
    ·
    24 hours ago

    At this point, I would make it a bash script and put it in ~/bin. If one has to get back to it 5 years later, it will be painful to debug

    • Communist@lemmy.frozeninferno.xyzOP
      link
      fedilink
      English
      arrow-up
      0
      ·
      23 hours ago

      I don’t like doing that because i’m working on nixos which already makes it complicated but i also have a script that fully sets up my entire system and that would add some complexity to that, plus i just have a strange aversion to making it a bash script purely because it would be the only common function in my setup that’s on a bash script

      and it wouldn’t be that hard to convert it to one for future debugging anyway

      • INeedMana@piefed.zip
        link
        fedilink
        English
        arrow-up
        0
        ·
        23 hours ago

        I can see how that could be a hassle on nixos and if you don’t have more scripts

        FWIW, I use chezmoi for stuff like this, I guess it might be easier to make it work with nixos by setting up chezmoi in HOME, instead of defining scripts directly

  • everett@lemmy.ml
    link
    fedilink
    arrow-up
    0
    ·
    1 day ago

    Hey, that’s the combination on my luggage!

    But seriously, thanks for sharing. Looks like there’s some good stuff in there to learn from.