this post was submitted on 08 Nov 2024
15 points (94.1% liked)

Linux Questions

1139 readers
20 users here now

Linux questions Rules (in addition of the Lemmy.zip rules)

Tips for giving and receiving help

Any rule violations will result in disciplinary actions

founded 1 year ago
MODERATORS
 

Hello. I want to write an Udev rule to change my laptops's EasyEffects profile whenever I connect a speaker set or headphones to the 3.5mm jack. The concept is relatively simple: when I connect something to the jack, I want it to fire a script that will set this Dconf setting:

gsettings set com.github.wwmm.easyeffects last-loaded-output-preset 'None'

And when I unplug the speakers/headphones, it'll set this:

gsettings set com.github.wwmm.easyeffects last-loaded-output-preset 'Laptop'

("None" and "Laptop" are EasyEffects profiles).

Unfortunately, I haven't been able to find useful info, since almost all of the results I found online refer to Bluetooth or USB devices. I checked within /sys/class/sound/ and /dev/ for a file where I could query the status of the jack (something like "connected"/"disconnected") but I can't find something relevant. I have a similar rule that changes GNOME's font scaling when I plug my HDMI display, and it does that by running this script:

function monitorConnected () {
  statuses=$(cat /sys/class/drm/card1-HDMI-A-{1,2,3,4}/status 2>/dev/null)    
  for status in ${statuses[@]}                                                
  do                                                                          
        [[ ${status} == "connected" ]] && return 0                              
  done                                                                        
  return 1                                                                    
  }

So I thought that I could do something similar for the 3.5mm jack. Or maybe there's another method? Any hints? My OS is Fedora 41 and I'm using Pipewire, btw.

you are viewing a single comment's thread
view the rest of the comments
[โ€“] [email protected] 5 points 2 weeks ago (1 children)

I remember doing this with dbus but I can't find that set-up anymore. This stackoverflow answer looks a bit more elegant: https://unix.stackexchange.com/a/128007/37570

A little script could run your command when matching the jack/headphone events from acpi_listen.

[โ€“] bazzett 1 points 1 week ago

Cool, I need to check this. Thanks!