BLINKENLIGHTS(1)

πŸ“¦
version 2.2.3 Β· 3 versions
, in fedora 43

πŸ’– BLINKENLIGHTS πŸ’–

okay bestie, welcome to blinkenlights(1) β€” it's part of the User Contributed Perl Documentation squad, and it's genuinely one of the most iconic little tools in the DNSSEC-Tools universe. let's get into it πŸ¦‹


✨ NAME ✨

blinkenlights β€” the DNSSEC-Tools rollerd GUI. that's the whole vibe. πŸ’…


✨ SYNOPSIS ✨

blinkenlights <rollrec-file>

✨ DESCRIPTION ✨

so blinkenlights is a GUI tool, and its whole job is helping you monitor and control the DNSSEC-Tools rollerd program. it shows you what's going on with the zones rollerd is managing, and you can also poke at some aspects of rollerd's execution using blinkenlights menu commands. it's giving ✨mission control✨.

blinkenlights pops open a window and displays info about every zone rollerd is managing β€” and no cap, "every zone" here means the zones in rollerd's current rollrec file. when a zone's rollover status changes, blinkenlights updates that zone's display. and skipped zones β€” which are zones listed in the rollrec file but which are not in rollover or normal operation β€” do get displayed, but there's very little useful info to show for them, so don't expect much. πŸ™ˆ

you can also pick a set of zones to hide from the display. heads up though: if those zones are in the rolling state, they'll keep rolling regardless β€” you're just hiding their zone info, not stopping anything. and the display state for each zone persists across blinkenlights executions, so your hiding choices stick around. 🫢

there are menu commands for controlling rollerd too. the commands that operate on a single zone can be fired off with keyboard shortcuts, and you select the zone either by clicking in its "zone stripe" or by choosing from a dialog box. display and execution options for blinkenlights also live in the menu commands. more deets on all of that are down in the MENU COMMANDS section.

πŸ’€ real talk: blinkenlights is only intended to be started by rollerd, not directly by a user. there are exactly two ways to make rollerd start it: first, rollctl may be given the -display option. second, the -display option may be given on rollerd's command line. that's it, that's the door.

✨ OPTIONS ✨

blinkenlights takes the following options, bestie:

  • -display β€” tells rollerd to execute blinkenlights as a child process. 🍼
  • -maxzones β€” tells blinkenlights how many zones to display.
  • -Version β€” displays the version information for blinkenlights and the DNSSEC-Tools package. ⭐
  • -help β€” displays a usage message and exits. bye πŸ‘‹

✨ SCREEN LAYOUT ✨

the blinkenlights window is laid out as a series of "stripes". the top stripe has status info about rollerd, the second stripe has the column headers, and the bulk of the window is zone stripes. here's the breakdown, stripe by stripe:

🎨 check the WINDOW COLORS section for the whole discussion of the colors used for the zone stripes.
  • rollerd information stripe β€” this one holds five pieces of info: rollerd's current rollrec file, the count of rolling zones, the count of skipped zones, the count of zones to be displayed, and the amount of time rollerd waits between processing its queue. and coincidentally πŸ‘€ that last datum is also the amount of time between blinkenlights screen updates. two for one, slay.
  • column headers stripe β€” holds the column headers for the columns of each zone stripe.
  • zone stripes β€” every zone managed by rollerd (i.e., every zone in the current rollrec file) gets a zone stripe describing that zone's current state. each stripe is divided into three sections: zone identification, the current rollover state, and the zone's DNSSEC keys.
    • the zone identification section contains the name of the zone, the name of the zone's rollrec entry, and the zone's zonegroup.
    • the rollover state section contains the rollover phase number, a text explanation of the phase, and the amount of time remaining in that rollover phase. when the zone isn't currently in rollover, that phase explanation is literally just "normal operation".
    • the DNSSEC key section has two subsections β€” one for the zone's ZSK keys and another for the zone's KSK keys. each subsection contains the names of the signing sets active for the zone. the ZSK subsection lists the Current, Published, and New ZSK keys; the KSK subsection lists the Current and Published. πŸ‘‘
🎨 again: see the WINDOW COLORS section for the colors used for the zone stripes.

✨ WINDOW COLORS ✨

the default blinkenlights configuration uses window coloring to give you visual cues and to help you tell zone info apart at a glance. in the default behavior, each zone stripe gets its own color, and the rollover state section of each zone stripe is shaded to show the zone's phase. you can turn window coloring off (and back on) with configuration options and menu commands. πŸ’…

🎨 Color Usage

the two window coloring behaviors, explained fully:

  • zone stripe colors β€” each rolling zone's stripe gets one of three colors: blue, red, or green. the color is assigned on a top-down basis and the colors wrap if there are more than three zones. so the first zone is always blue, the second zone red, the third zone green, the fourth zone blue, etc. πŸ”
    • the colors do not stay with a particular zone. if a rolling zone becomes a skipped zone, the zone stripes get reassigned new colors to account for that skipped zone.
    • skipped zones are not colored with those three colors. their stripes are colored either grey or a color set in the configuration file. if you choose to use a non-standard color for skipped zones, you should make sure it's not one of the colors used for rolling zones' stripes. modifying the skipcolor configuration field is how you change the skipped-zone color.
    • the colors configuration field can turn on or off the use of colors for zone stripes. if stripe coloring is turned off, then every stripe is displayed using the skipcolor color.
  • rollover-state shading β€” the only portion of a zone stripe that changes color is the status column; the rest of the zone stripe stays the same color throughout. before a zone enters rollover, the status column is the same color as the rest of the stripe. when the zone enters rollover, the status column's color changes to a very light shade of the stripe's normal color. as the rollover phases progress toward rollover completion, the status column's shade darkens. once rollover completes, the status column returns to the same shade as the rest of that stripe. it's giving a lil glow-up that fades back down. πŸŒ—
    • the shading configuration field turns on or off the use of shading in the rollover-state column. if shading is turned off, then the zone stripe is a solid color.
    • see the CONFIGURATION FILE section for info on setting the configuration fields.

🎨 Colors Used

the color names come from the X11 rgb.txt file (X11 1.1.3 - XFree86 4.4.0 for MacOS X). if these aren't available in your rgb.txt file, similar names should be selected. the actual red/green/blue values used are given below to help you find suitable replacements β€” these values were taken from the rgb.txt file.

Blue Shades:

blue                0   0 255
lightblue2        178 223 238
darkslategray1    151 255 255
skyblue1          135 206 255
steelblue1         99 184 255
turquoise1          0 245 255
cornflower blue   100 149 237
dodger blue        30 144 255

Red Shades:

red               255   0   0
pink              255 192 203
lightsalmon1      255 160 122
tomato            255  99  71
indianred         205  92  92
violetred1        255  62 150
orangered1        255  69   0
firebrick1        255  48  48

Green Shades:

green               0 255   0
darkseagreen1     193 255 193
darkolivegreen1   202 255 112
lightgreen        144 238 144
seagreen1          84 255 159
spring green        0 255 127
greenyellow       173 255  47
lawngreen         124 252   0

there are a bunch of menu commands for controlling blinkenlights' behavior and for sending commands to rollerd. let's go through them.

πŸ“ File Menu

these are the basic GUI commands:

  • Halt Rollerd After Current Operations β€” rollerd's execution is halted after completing its current set of zone operations. and as a result, blinkenlights' execution is also halted. πŸ›‘
  • Halt Rollerd Now β€” rollerd's execution is halted immediately. as a result, blinkenlights' execution is also halted. heads up: if rollerd's command queue already contains a set of commands, they may be processed prior to this command. πŸ‘€
  • Quit β€” blinkenlights will stop execution. simple as that. πŸ‘‹

βš™οΈ Options Menu

these commands control the appearance and behavior of blinkenlights:

  • Row Colors (toggle) β€” a toggle to turn on or off the coloring of zone stripes. if row coloring is turned off, zone stripes will all be the same color. if row coloring is turned on, zone stripes will be displayed in varying colors. see the WINDOW COLORS section for the discussion of row coloring. 🌈
  • Status Column Shading (toggle) β€” a toggle to turn on or off the shading of the zone status column. if shading is turned off, the zone stripes present a solid, unchanging band of color for each zone. if shading is turned on, the color of the zone status column changes according to the zone's rollover state. πŸŒ—
  • Skipped Zones Display (toggle) β€” a toggle to turn on or off the display of skipped zones. if display is turned off, zone stripes for skipped zones will not be displayed. if display is turned on, zone stripes for all zones will be displayed. πŸ™ˆ
  • Status Times Display (toggle) β€” a toggle to turn on or off the display of status times. if display is turned off, the remaining time for a rollover phase will not be displayed in the "Status" column. if display is turned on, the remaining times will be displayed. ⏳
  • Modification Commands (toggle) β€” sometimes you might wanna turn off blinkenlights' ability to send commands to rollerd. this menu item is a toggle for exactly that. if the commands are turned off, then the "ZSK Control" and "KSK Control" menus and their keyboard shortcuts are disabled. if the commands are turned on, then the "ZSK Control" and "KSK Control" menus and their keyboard shortcuts are enabled. πŸ”’
  • Font Size
  • Font size β€” this menu item lets you pick the size of the text that shows up in the main window. Normally, changing the font size makes the window grow and shrink like it's supposed to. But on Mac OS X there's apparently a whole problem where if the size you pick makes the window bigger than your screen can hold, the window will just… not shrink back when you lower the font size again. 😭 It's giving stuck. So yeah, noted, that's a real thing.
  • Zones to Display β€” this menu item lets you choose how many zones get displayed in the main window. Simple as that.

πŸ’… General Control Menu πŸ’…

Okay bestie, the commands in this menu are GUI interfaces for the rollctl commands that deal with general zone management. So it's the same energy, just clickable. 🫢

  • Sign Selected Zone β€” rollerd is told to sign the selected zone. Heads up: the zone will only be signed, no key rollover happens. That's it, that's the whole vibe.
  • Sign All Zones β€” rollerd is told to sign all the zones it manages. Again, the zone will only be signed; no key rollover will occur. Periodt.
  • Sign Active Zones β€” rollerd is told to sign all the zones it manages, except skipped zones will not be signed. And yep, once more: the zone will only be signed, no key rollover will occur.
  • Run the Queue β€” rollerd gets woken up and runs through its queue of zones. The operation required for each zone then gets performed. Wake up babe, the queue is running. ✨
  • Skip Selected Zone β€” the selected zone gets moved to the skipped state. This only does anything to rolling zones. You select a zone by clicking on its zone stripe. If you pick this command without having selected a zone, a dialog box pops up so you can choose one of the currently rolling zones.
  • Skip All Zones β€” every zone gets moved to the skipped state. No effect on zones that are already skipped. They were already living that life. πŸ’€
  • Restart Selected Skipped Zone β€” the selected zone gets moved from the skipped state to the roll state. Big detail: the zone re-enters the roll state at the exact same point where it entered the skip state. It does not get moved back to the beginning of either KSK or ZSK rollover. This only does anything to skipped zones. Select a zone by clicking its zone stripe, and if you run this with nothing selected, a dialog box appears so you can pick a currently skipped zone.
  • Restart All Skipped Zones β€” all zones get moved from the skipped state to the roll state. They re-enter the roll state at the same point from which they entered the skip state β€” not the beginning of either KSK or ZSK rollover. This has no effect on currently rolling zones.

πŸ”‘ ZSK Control Menu πŸ”‘

These ones are GUI interfaces for the rollctl commands about ZSK-specific zone management. ZSK stans rise. πŸ’œ

  • Roll Selected Zone's ZSK β€” the selected zone's ZSK gets moved to the rollover state. No effect on zones that are already in rollover. Select a zone by clicking its zone stripe. And if you select this command with no zone selected, a dialog box is displayed from which a currently skipped zone may be chosen.
  • Roll All Zones' ZSKs β€” every zone's ZSK gets moved to the rollover state. No effect on currently rolling zones.

πŸ‘‘ KSK Control Menu πŸ‘‘

And these are the GUI interfaces for the rollctl commands about KSK-specific zone management. KSK main character energy, honestly. πŸ’…

  • DS Published for Selected Zone β€” this command is how you tell blinkenlights that the selected zone's parent has published a new DS record for the zone. It moves the zone from phase 5 to phase 6 of KSK rollover. Slay.
  • DS Published for All Zones β€” this is how you say that all the zones in KSK rollover phase 5 have new DS records published by their parents. It moves all of those zones from phase 5 to phase 6 of KSK rollover. Zones that aren't in KSK rollover phase 5? Not affected, not invited. 🚫
  • Roll Selected Zone's KSK β€” the selected zone's KSK gets moved to the rollover state. No effect on zones already in rollover. Click the zone's stripe to select it. If you run this command without a zone selected, a dialog box is displayed from which a currently skipped zone may be chosen.
  • Roll All Zones' KSKs β€” all zones' KSKs get moved to the rollover state. No effect on currently rolling zones.

🌈 Display Menu 🌈

Okay so the commands in this menu are all about controlling what's being displayed. There are commands for showing and hiding zone stripes, columns of key sets, columns of rollrec names, and columns of zonenames. Basically it's your display settings era. πŸŽ€

The zonestripe commands let you display all, some, or none of the zone stripes. Important though: undisplayed rolling zones will keep rolling, they'll just be doing it with zero blinkenlights window indication that it's happening. So like, the drama is still happening, you just can't see it. πŸ™ˆ

The data column commands let you hide or display individual columns of data. Two rules, no cap: the zone status column may not be hidden, and only one of the rollrec name and zonename columns may be hidden at a time.

  • Zone Selection β€” a dialog box pops up holding a list of the zones rollerd is currently managing. You click a zone's checkbox to pick whether it should be displayed. Checkbox selected = displayed, checkbox not selected = not displayed. Easy.
  • Display All Zones β€” all zones get displayed in the blinkenlights window.
  • Hide All Zones β€” no zones get displayed in the blinkenlights window. Nobody's home. πŸ’€
  • Rollrec Name (toggle) β€” a toggle for turning the display of rollrec names on or off. Turn display off and the column holding the rollrec names gets removed from the display, and the display window shrinks. Turn display on and the column holding the rollrec names gets restored, and the display window expands.

When they're displayed, rollrec names will always be the leftmost columns.

  • Zone Name (toggle) β€” a toggle for turning the display of the zone names in a rollrec entry on or off. Turn it off and the column holding the zone names gets removed from the display and the display window shrinks. Turn it on and the column holding the zone names gets restored and the display window expands.

When displayed, the zone name will always be the second-from-left or leftmost column, depending on whether the rollrec name is also being displayed.

  • Zonegroup Name (toggle) β€” a toggle for turning the display of the zonegroup name in rollrec entries on or off. Turn display off and that column gets removed from the display and the display window shrinks. Turn display on and that column gets restored to the display and the display window expands.

When displayed, that column will always be in one of the first through third columns, depending on whether the rollrec name and zone name are also being displayed.

  • KSK Sets (toggle) β€” a toggle for turning the display of KSK signing set names on or off. Turn it off and the columns holding the KSK signing set names and labels get removed from the display and the display window shrinks. Turn it on and the columns holding the KSK signing set names and labels get restored and the display window expands.

When displayed, KSK signing sets will always be the rightmost columns.

  • ZSK Sets (toggle) β€” a toggle for turning the display of ZSK signing set names on or off. Turn it off and the columns holding the ZSK signing set names and labels get removed from the display and the display window shrinks. Turn it on and the columns holding the ZSK signing set names and labels get restored and the display window expands.

When displayed, ZSK signing sets will always be immediately to the right of the zone status column.

  • Hide All Keysets β€” turns off the display of the KSK and ZSK signing set names.
  • Show All Keysets β€” turns on the display of the KSK and ZSK signing set names.
  • Refresh Display β€” refreshes the blinkenlights display. The display will automatically refresh after a certain number of updates, but this command forces it to happen immediately upon invocation. Instant gratification, we love her. ✨

πŸ†˜ Help Menu πŸ†˜

The commands in this menu are here to help you out. Bestie support system fr fr.

  • Help β€” displays a window containing help information.
  • About Blinkenlights β€” displays a window containing version information on blinkenlights and DNSSEC-Tools.

πŸŽ€ CONFIGURATION FILE πŸŽ€

ok so bestie, you can actually control a bunch of blinkenlights' behavior from configuration files πŸ’–. Config values can live in the DNSSEC Tools configuration file, or in a more specific rc.blinkenlights. The system-wide blinkenlights config file sits in the DNSSEC-Tools configuration directory and it's named blinkenlights.conf. You can have multiple rc.blinkenlights files hanging around on a system, but only the one in the directory where blinkenlights is actually executed gets used. periodt.

Here's every config value you can set, no cap:

  • colors β€” turn on/off use of colors on zone stripes 🎨
  • fontsize β€” the size of the font in the output window
  • maxzones β€” the number of zones to display
  • modify β€” turn on/off execution of rollerd modification commands
  • noshow β€” turn off display of particular columns
  • shading β€” turn on/off shading of the status columns
  • showskip β€” turn on/off display of skipped zones
  • skipcolor β€” the background color used for skipped zones

The rc.blinkenlights file is only searched for in the directory where blinkenlights is executed 🫢. The potential problems that come with this whole setup might cause these blinkenlights-specific config files to get removed in the future. iykyk.

This file is in the "field value" format, where field says which output aspect it is and value defines the value for that field ✨.

Empty lines and comments are ignored πŸ’…. Comment lines are lines that start with an octothorpe ('#').

Spaces are not allowed in the configuration values. fr fr.
Choose your skipcolors carefully 😭. The only foreground color used is black, so your background colors must work well with black.

The noshow command controls display of the various data columns πŸ“Š. The valid values for the command are:

  • rollrecs β€” turn off display of the rollrec names column. This value may not be used with "noshow zonenames".
  • zonenames β€” turn off display of the zonenames column. This value may not be used with "noshow rollrecs".
  • zonegroups β€” turn off display of the zonegroups column.
  • kskset β€” turn off display of the KSK signing set columns.
  • zskset β€” turn off display of the ZSK signing set columns.
  • keysets β€” turn off display of the KSK and ZSK signing set columns.

✨ REQUIREMENTS ✨

blinkenlights is implemented in Perl/Tk, so both Perl and Perl/Tk have to be installed on your system, bestie. no skipping that step πŸ’œ


πŸ’€ WARNINGS πŸ’€

blinkenlights has several potential problems that you absolutely must take into account. not me being honest about my own flaws πŸ™ˆ

development environment

blinkenlights was developed and tested on a single-user system running X11 using a relatively small number of zones. It works fine in this environment, but it has not been run on a system with many users, and not in a situation where the system console hasn't been in use by the blinkenlights user. lowkey a humble-brag, highkey a caveat 🫠

long-term performance issues

In early tests, the longer blinkenlights runs, the slower the updates become 😭. This is probably a result of the Tk implementation or the way Tk interfaces with X11. This is pure supposition, though β€” I'm just guessing, don't quote me.

This performance impact is affected by a number of things, such as the number of zones managed by rollerd and the length of rollerd's sleep interval. Large numbers of zones or very short sleep intervals will increase the possibility of blinkenlights' performance degrading.

This appears to have been resolved by periodically performing a complete rebuild of the screen 🧚. blinkenlights keeps track of the number of screen updates it makes and rebuilds the screen when this count exceeds a threshold. The threshold is built into blinkenlights and stored in the $paintmax variable. This threshold may be adjusted if there are too many screen rebuilds or if blinkenlights' performance slows too much. Raising the number will reduce the screen rebuilds; lowering the number will (may) increase performance.

display irregularities

If the user modifies the number of zones to be displayed, then sometimes the blinkenlights window gets left in an irregular state πŸ˜΅β€πŸ’«. The requested number of zones are displayed, but there's a large grey void above and below the zone display. This is an occasional problem and will be fixed as time allows. it's giving "we know, we know" πŸ’€


Copyright 2006-2014 SPARTA, Inc. All rights reserved. See the COPYING file included with the DNSSEC-Tools package for details.


🌸 AUTHOR 🌸

Wayne Morrison, tewok@tislabs.com


🌈 SEE ALSO 🌈


and that's a wrap on the whole page bestie πŸ’– this one's perl v5.42.0, dated 2025-07-23, and it's BLINKENLIGHTS(1) β€” go forth and make those zone stripes ✨ iconic ✨ πŸ¦‹πŸ’…πŸŽ€

πŸ“¦ where this page comes from