Turning my office into a disco with blink(1) and Weechat

My primary workstation is a Linux based system and I really like to keep my desktop as minimal as possible. Actually I run just about everything in a terminal. This provides some interesting challenges for things like notifications.

If you’ve ever worked with me you know I hate pop-up/over notifications. They’re distracting, somehow always cover up what I’m looking at and love to pop up when I’m running a screen share or recording a demo. In short, they annoy me and I turn them off wherever possible - in my opinion they are this decade’s version of Clippy.

I do use tmux and I’ve made some modifications to the bar to include non-annoying status/notifications. This works great when I’m using my terminal or I’m on a multiple monitor setup but it presents issues when traveling due to my use of virtual desktops since virtual desktops hide all content on the other desktops that aren’t currently the active one.

I decided to buy a blink(1) to solve the visibility problem. It’s cheap, it doesn’t clutter up my desktop, the options are flexible and hey, lets face it, it’s cool (and open source!) If you don’t know what a blink(1) is - the short version is its a USB dongle that contains some full color LEDs that you can control arbitrarily with your computer.

How I use blink(1) at a really high level

Overall I use LED 1 for communication notifications and I use LED 2 to monitor build job status. I’m going to skip over my LED2 configuration since it is pretty generic. I modified an existing script that reads Jenkins RSS status and runs a command based on the latest status. The command it does is similar to what I’m going to list below for Weechat but I use different colors and don’t mark them “blink”.

Weechat Setup

The following example assumes:

  1. You have a blink(1) mk2 up and running
  2. You have the blink(1) command line tools installed and working
  3. You have Weechat up and running. There are other IRC programs that have similar functionality. YMMV
  4. Your Weechat is running locally. I’ll leave it up to you to figure out how to trigger your blink(1) remotely (hint: ssh).

In Weechat install the beep script. This will allow you to run a command on notification events. Once the script is installed you’ll need to set the following plugin variables. Read up on the blink1-tool if you want to fully understand what they are doing but the summary is “blink led 1 a few times in a color”.

/set plugins.var.perl.beep.beep_command_pv "blink1-tool --rgb '#47C8FF' --led 1 --blink 10"

/set plugins.var.perl.beep.beep_command_highlight "blink1-tool --rgb '#FF00EA' --blink 5 --led 1"

That’s it. You now have a USB dongle on the side of the computer that will make your office at night look like a European disco if you are popular enough.

Not just Linux

As far as I’m aware you can run both Weechat and the blink(1) command line tools on all three of the major operating systems. Your execution of the script might be a little different if you are on Windows but in theory it should still work.

Quick blink(1) mk2 review

tl;dr: For $29 the blink(1) does everything I want it to. Non-computer geeks won’t understand why you have it but who cares about that. It’s worth the cost for geeky-type-people who aren’t afraid to experiment.

I had been looking for something like the blink(1) for a while now due to my self-inflicted minimalist desktop. When I found the blink(1) I thought the price was a little steep for what amounts to some full color LEDs on a USB board. After doing a little research I decided the price was worth it since it is open source and the team has put out a large amount of software/libraries to support it.

It is very very geeky and there is software to virtually do what the blink(1) does but I wanted a physical manifestation versus 25 pixels on a screen. After using it for a few weeks now I’ve decided it was a good purchase for me. The things that I need to be visible are very visible regardless if I am in a multi-monitor setup or traveling the world on my laptop which was my entire point for buying the thing.