Fork me on Github
Fork me on Github

Joe Dog Software

Proudly serving the Internets since 1999

Wackyd Manual

WACKYD, der Blinken beleuchtet
by Jeffrey Fulmer
May 2006

Introduction ^

wackyd is a notification daemon. It implements the WACKY/1.0 protocol as it listens for connections and parses patterns from a client. The pattern sent by the client is a coded message for wackyd. That message tells wackyd how to blink the keyboard lights on your extended keyboard. While wackyd is not notifying you, it makes your keyboard lights blink in the Knight Rider pattern. The inspiration for the pattern comes from the very bad American television show, Knight Rider which starred the equally bad David Hasselhof. And so it goes.

The biggest single benefit gained from wackyd is that notification events are taken off the screen and put onto the keyboard where they persist until you do something or a client clears the event. If you HATE popup menus, if you want to know what’s going on even when your screen saver is on, then wackyd is for you. I fit that category and personally I love this program.

Invocation ^

The format for invoking wackyd is this: wackyd “host.domain.com” This sends it to the background and starts blinking your lights in the default pattern and it binds a listener to host.domain.com which listens for requests on port 9193. That pattern looks like this: xoo,oxo,oox,oxo but more on that later…. The program also supports the following command line options:

‘ -v ‘
‘ –version’
VERSION, prints version information to the screen.

‘ -h ‘
‘ –help’
HELP, prints the help section. This presents a summary of the options discussed in this section of the manual.

‘ -C ‘
‘ –config’
This option displays the current wackyd configuration.

‘ -s NUM ‘
‘ –speed=NUM’
SPEED, this option changes the default blinking speed from 3 to NUM.

‘ -k ‘
‘ –kill’
KILL, shuts down an instance of wackyd which is already running. This option relies on a two pid files in PREFIX/var/run.

Protocol ^

WACKY/1.0 is an application level protocol for distributed notification systems. The protocol transmits extended keyboard blinking patterns to a wackyd. The keyboard patterns are comprised of a series of comma separated commands. Each series represents one keyboard blink combination comprised of x’s, o’s and an integer. A command string looks like this: [xo][xo][xo][1-9],[repeat as necessary] The brackets are NOT part of the protocol, they are used here to illustrate the positions of a command segement. Each of the first three positions is filled with exactly one character, an ‘x’ or an ‘o.’ The fourth position is optional and it is filled with an integer. That number represents blinking speed in microseconds. The default value is 3.

Wackyd, a program which implements the WACKY protocol, runs a default pattern when it is not sending notification. In WACKY protocol, that pattern is represented like this: xoo3,oxo3,oox3,oxo3 When implemented by wackyd, this pattern causes the LED keyboard lights to rotate like the Kit’s computer in the bad American television show, Knight Rider. Next we’ll examine that pattern in more detail.

In WACKY protocol, the x’s represent LED on while the o’s represent LED off. The fourth position in a command segment is reserved for an optional number. That number is an integer value which dictates the length of the LED blink interation in microseconds. The default value is 3. Therefore this pattern: xoo,oxo,oox,oxo is the same as the default pattern shown above.

WACKY/1.0 Illustrated ^

Nothing demonstrates a protocol like a telnet session. In this chapter, we are going to telnet to a wackyd and manually execute the protocol:

 

Ben: $ telnet ben 9193
Trying 172.16.24.1...
Connected to ben.
Escape character is '^]'.
WACKY/1.0 xxx,ooo
Connection closed by foreign host.

Now ben’s keyboard lights are blinking ALL_ON, ALL_OFF. In the words of Steve Jobs, “insanely great!” Now let’s examine other features of the protocol. If you want a message to accompany the keyboard blinks, then you can include it on a separate line. WACKY/1.0 dictates that the server read from the socket until the client sends two returns ( ). Here we send a different pattern along with a message:

Ben: $ telnet ben 9193
Trying 172.16.24.1...
Connected to ben.
Escape character is '^]'.
WACKY/1.0 xxo5,ooo5
MESSAGE: You have more than 5 messages in your mailbox.
Connection closed by foreign host.

The message is logged via syslog. Another directive in the WACKY/1.0 protocol is PRIORITY: [0-9] which allows the wackyd to prioritize the blinking pattern. This means if wackyd is forced to deal with multiple events, it gives the keyboard lights to the one with the highest priority. If ALL_HELL_IS_BREAKING_LOOSE and YOU_HAVE_MAIL are both in the queue, the ALL_HELL_BREAKING_LOOSE pattern will take priority assuming you set it so.
(Well, you never know, mail is important.)

NOTE: This feature will be available in wackyd 2.0 final. It is not currently in the beta version.

Availability ^

The latest version of wackyd is available via anonymous http.

Platforms ^

GNU/Linux( i[56]86-pc-linux-gnu ) Wacky Lights for Linux were originally developed on SuSE GNU/Linux with gcc, hence the name. [ no additional ports are planned at this time. ]

Authors ^

Jeffrey Fulmer — Designed and implemented wackyd at home in his spare time, a fact that clearly places him in the category “nerds.” When he’s not performing stupid code tricks, he’s been known to walk Pommie, his English Bulldog. [ see contact information ]

License Information ^

Please consult the file, COPYING for complete license information.

Copyright (C) 2001-2012 Jeffrey Fulmer

Permission is granted to anyone to make or distribute verbatim copies of this document as received, in any medium, provided that the copyright notice and this permission notice are preserved, thus giving the recipient permission to redistribute in turn. Permission is granted to distribute modified versions of this document, or of portions of it, under the above conditions, provided also that they carry prominent notices stating who last changed them.