Skip to content

GooseYArd/mutelight

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Trivial Source Mute Monitor for Pulseaudio and the Thingm Blink(1)

After becoming annoyed by trying to use in-app mute controls for videoconferences, I considered writing a simple xmobar or trayer application that would show me the mute state my headset source, but after fooling around with the idea for a while, I realized I wanted the indicator to be more conspicuous, without taking up a lot of screen real estate.

A few people at my office have USB busy lights, so I looked at the options and found the ThingM Blink(1) was inexpensive and seemed to have a library in all the languages I care about, so I got the mark iii model and wired it up.

https://blink1.thingm.com/

After some experimentation with the C and Python bindings, I decided to write a go version, since I've done too-little go and it'd be simple for someone else who wanted to build this code if they wanted to use my hack as a starting point for their own. Indeed, this code is mostly cut and pasted together from the blink and pulseaudio examples.

This code is so trivial that I don't think it warrants much explanation, and I barely know Go anyhow, but I will mention a few things I learned while hacking on it.

Also, I've made no attempt to make this configurable, for the same reason-- see the note below about the audio source index.

On Debian and Ubuntu you'll need libusb-dev installed in order to compile go-blink1, btw.

For non-go-knowers like myself, you can say:

cd $GOPATH
mkdir src/github.com/gooseyard
git clone https://github.com/GooseYArd/mutelight.git src/github.com/gooseyard/mutelight
cd src/github.com/gooseyard/mutelight
go get
go build

I hit one snag in the form of a libusb issue with the mk3 device and hink/go-blink1. A fix existed as a PR against hink's repo, but the repo seems to be unloved, so I'm using todman's fork instead. Should todman's fork ever disappear, I've stashed the patch in this repo as well- just apply it to the go-blink1 sources before building.

I'll probably change the solid red light to the throbbing pattern that I was generating with the Python bindings, but I was too lazy to figure it out with go-blink(1) (although I think its probably trivial).

I'm not totally sure whether the default Pulse source is meant to have index 0 when listing sources, and I'm loathe to screw around with my Pulseaudio configuration much since I've screwed it up many times before, so there's a good chance you'll need to adjust the source index which is hardcoded in the source.

Once its started, you can start it from an ~/.xsession file, or do what I did and use a systemd user system unit.

Create the file ~/.config/systemd/user/mutelight.service

[Unit]
Description=MuteLight

[Service]
Type	    = simple
Restart     = always
RestartSec  = 10
ExecStart   = /home/gooseyard/bin/mutelight

[Install]
WantedBy=session.target

Say:

systemctl --user daemon-reload systemctl --user enable mutelight.service systemctl --user start mutelight.service

To test, say:

pactl set-source-mute 1 toggle

Using the index of your desired source. I use pavucontrol to verify that the source is really muted when the light is on.

If you're an xmobar user, you can add:

Run PipeReader "/tmp/mutelight.sock" "mutelight"

to "commands"

Happy hacking!

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages