78
submitted 7 months ago* (last edited 7 months ago) by Communist@lemmy.ml to c/linux@lemmy.ml

I have a dumb work related chrome thing, i'd like to make it so that when a certain notification sound plays in chromium, my computer does a few things automatically for me

Does anyone know a good way to make this happen?

I imagine it'd have to be setup like:

when chrome starts playing audio && check if that audio matches soundfile.ogg && myscript.sh, but I don't know any good cli utilities that could get something like that done, and if there are any better ideas!

edit: to avoid X/Y issues i've summarized the problem in full here:

  1. I have a work program, this notifies me if I get a call or email, the work program then presents an accept/decline page, and does not proceed until I either accept, decline, or it times out.
  2. I want it to do two different things depending on if it's a call or email
  3. It provides no notification other than the sound and an "accept" button on the page
  4. I have a chrome window open that does nothing but this, and I never use chrome for anything else
  5. I want to automatically do various things when I receive either this call or email
  6. I want it to be broadly applicable rather than a script designed for the specific website giving me the notification (so not a chrome extension). This prevents me from having to update any code in the event that the backend changes dramatically, and even if the notification sound changes, i'd just record a new sound as the activation noise.
  7. The noise is always the same, and hasn't changed for many years, and there is a distinct noise between calls and emails
  8. They never overlap, they never play multiple times at the same time, and they never make any noises other than those two. The noises are distinct.

These factors cause me to want to run a script once the noise is recognized, only if the noise is playing in a particular app. I'm using pipewire/hyprland on arch.

My current plan for isolating the noise is to do the following:

pactl load-module module-combine-sink sink_name='Work' slaves='easyeffects_sink'

and then set chrome exclusively to play audio on work.

Then set a script to check the sink work for audio that matches what I want. That should be simpler than the other methods i've seen to isolate the noise.

you are viewing a single comment's thread
view the rest of the comments
[-] Communist@lemmy.ml 2 points 7 months ago* (last edited 7 months ago)

It's really not in this case, I can see why people think that since i've been vague, but tbh I thought somebody would have already made an easy sound recognition program and I just hadn't seen it, and that once someone pointed that to me the rest would be easy.

Here is the entirety of the problem:

  1. I have a work program, this notifies me if I get a call or email, the work program then presents an accept/decline page, and does not proceed until I either accept, decline, or it times out.
  2. I want it to do two different things depending on if it's a call or email
  3. It provides no notification other than the sound and an "accept" button on the page
  4. I have a chrome window open that does nothing but this, and I never use chrome for anything else
  5. I want to automatically do various things when I receive either this call or email
  6. I want it to be broadly applicable rather than a script designed for the specific website giving me the notification (so not a chrome extension). This prevents me from having to update any code in the event that the backend changes dramatically, and even if the notification sound changes, i'd just record a new sound as the activation noise.
  7. The noise is always the same, and hasn't changed for many years, and there is a distinct noise between calls and emails
  8. They never overlap, they never play multiple times at the same time, and they never make any noises other than those two. The noises are distinct.

These factors cause me to want to run a script once the noise is recognized, only if the noise is playing in a particular app. I'm using pipewire/hyprland on arch.

edit: actually they have, it should be really easy with this: https://github.com/worldveil/dejavu

[-] flashgnash@lemm.ee 2 points 7 months ago

This is absolutely an xy problem. Your problem is that you need to programmatically respond to notifications across multiple applications

You are asking for help with a solution based on notification sounds which is one possible solution but a bit of a weird one

[-] Communist@lemmy.ml 1 points 7 months ago* (last edited 7 months ago)

It does not give a desktop notification, or even a proper chrome notification, it's just a dialogue on a page that says accept/deny

I said that in the post. The sound is the only thing to hook into. It doesn't even set chrome as urgent.

[-] DaGeek247@fedia.io 1 points 7 months ago
  1. It provides no notification other than the sound and an "accept" button on the page
  2. I have a chrome window open that does nothing but this, and I never use chrome for anything else

https://chromewebstore.google.com/detail/distill-web-monitor/inlikjemeeknofckkjolnjbpehgadgge?pli=1

[-] Communist@lemmy.ml 1 points 7 months ago* (last edited 7 months ago)

That's an interesting solution that i'd rather avoid because it's proprietary

Also, that wouldn't distinguish the two states of call/email, I don't think.

[-] DaGeek247@fedia.io 1 points 7 months ago

It was the first result i found for 'monitor webpage chrome'. There's a very good chance that what you're after is just two or three results lower. I promise it would be a lot easier than developing an entirely new solution that works based on speaker sounds. Bonus, these extensions have basic stuff like sms or email support right out of the box.

[-] Communist@lemmy.ml 1 points 7 months ago

I'll consider that after i try and fail with olaf

this post was submitted on 03 Apr 2024
78 points (93.3% liked)

Linux

48058 readers
1073 users here now

From Wikipedia, the free encyclopedia

Linux is a family of open source Unix-like operating systems based on the Linux kernel, an operating system kernel first released on September 17, 1991 by Linus Torvalds. Linux is typically packaged in a Linux distribution (or distro for short).

Distributions include the Linux kernel and supporting system software and libraries, many of which are provided by the GNU Project. Many Linux distributions use the word "Linux" in their name, but the Free Software Foundation uses the name GNU/Linux to emphasize the importance of GNU software, causing some controversy.

Rules

Related Communities

Community icon by Alpár-Etele Méder, licensed under CC BY 3.0

founded 5 years ago
MODERATORS