management library/tool for smart lightbulbs so they don't manage *you*
William Pitcock 50c8deb9fe identify: explain blink pattern 3 years ago
cmd identify: explain blink pattern 3 years ago
libbulb libbulb: socket: send duplicate messages due to the lossy nature of wifi 3 years ago
tests group-test: also dump the labels of lights detected in the group 3 years ago
.gitignore update .gitignore again 3 years ago
LICENSE Initial commit 3 years ago lighttoy: probe the network before dispatching to an applet 3 years ago lighttoy: implement --identify 3 years ago add some buildsystem artefacts 3 years ago build: install libbulb pkg-config module headers 3 years ago libbulb: group: add libbulb_group_address_is_member() for membership testing 3 years ago


A library (libbulb) and tool for managing smart lightbulbs. Or, alternatively, making the Internet of Things (groan) work for you.

the elevator pitch

Did you -waste- err, I mean, spend $100 on one of those fancy lightbulbs? If you didn't, well, you're probably more sane than the author of this, and this is probably boring to you as well. If you did and you want to make the lightbulbs do what you want programatically, either libbulb or lighttoy is for you.


As previously mentioned, libbulb is a library that speaks (at present, just the LIFX protocol) to lightbulbs. It can turn them on/off, set their color, and later do some other things (like set their label).

It is kinda, sorta, based on the LIFX C SDK, but not really because that thing is not very good. But the protocol headers definitely are based on that SDK.

Also included is a nifty libbulb.pc pkg-config module which can be used with pkgconf or pkg-config.


This is an application which provides a CLI frontend to libbulb. It exposes all libbulb functionality, in the convenience of a command-line. Imagine the shell-scripting possibilities!

It also has some cool built-in effects such as:

  • --colorstrobe, like a strobelight except it cycles colors instead of turning on/off.

You can also address specific bulbs, using --target. Use --target multiple times to combine the specified lights into a virtual group. Use --identify to make the bulbs in your group blink.