this post was submitted on 08 Nov 2024
16 points (100.0% liked)

Linux Questions

1182 readers
3 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 1 month 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.

[โ€“] [email protected] 1 points 1 month ago

Cool, I need to check this. Thanks!