explaingit

davepl/blinkendisk

101SwiftAudience · developerComplexity · 2/5LicenseSetup · moderate

TLDR

A macOS menu bar app that shows a tiny LED indicator for each monitored drive and lights it up whenever that drive is actively reading or writing data.

Mindmap

mindmap
  root((BlinkenDisk))
    What it does
      Menu bar LED per drive
      Polls IO every 50ms
      Flickers on activity
    Configuration
      Choose drives to watch
      Pick LED color
      Reorder LEDs
      Set flash duration
    Tech Stack
      Swift
      IOKit
      DiskArbitration
      macOS
    Audience
      Mac developers
      Power users
      System monitors
Click or tap to explore — scroll the page freely

Code map

Detail Auto

An interactive map of this repo's files and how they connect — its source is parsed live in your browser. Click Visualize to build it.

filefunction / class

Things people build with this

USE CASE 1

Add a visual drive activity indicator to your macOS menu bar to see when your internal drives are doing heavy work.

USE CASE 2

Monitor multiple drives simultaneously with different LED colors to distinguish activity between your system drive and external storage.

USE CASE 3

Use the project as a reference for how to read IOKit block-storage statistics and build menu bar apps in Swift.

Tech stack

SwiftIOKitDiskArbitrationmacOS

Getting it running

Difficulty · moderate Time to first run · 30min

Requires macOS 12+ and Xcode command-line tools, run ./build.sh to compile and bundle the app.

Personal and non-commercial use only, commercial or organizational use requires prior written permission from the author.

In plain English

BlinkenDisk is a small macOS app that sits in your menu bar and lights up a tiny LED indicator whenever one of your internal drives is actively reading or writing data. The idea comes from the blinking drive activity lights that used to appear on the front panels of old desktop computers. This app brings that same quick visual feedback to modern Macs. Each drive you choose to monitor gets its own LED in the menu bar. When the app detects I/O activity, the LED turns on briefly, then fades back to a dim state so you can always see where it sits. During sustained heavy activity, such as a long file copy or backup, the LED stays solidly lit rather than flickering. The app checks drive statistics every 50 milliseconds using macOS system-level APIs, which cover entire disk devices rather than individual partitions. A settings window lets you configure which drives to watch, what color to use for each LED (red, green, yellow, amber, or blue), the order they appear in the menu bar, and how long each flash lasts. The default flash duration is 10 milliseconds, which is short enough to register individual I/O bursts. Your choices are saved and restored the next time you launch the app. Clicking any LED in the menu bar opens a small menu with shortcuts to Settings and Quit. The app is built with Swift and targets macOS 12 (Monterey) or newer. Building it requires only the Xcode command-line tools, not the full Xcode IDE. A provided build script handles compiling and packaging the final app bundle. The app runs without a Dock icon or a floating window, it lives entirely within the macOS menu bar. The license allows personal and non-commercial use. Organizations and commercial users need written permission from the author before deploying or redistributing the app. The repository also notes current limitations: it monitors whole disks rather than individual volumes, does not separate read and write activity into distinct indicators, and does not cover network-attached drives.

Copy-paste prompts

Prompt 1
I cloned BlinkenDisk. Walk me through running ./build.sh to compile and assemble BlinkenDisk.app on macOS.
Prompt 2
Show me how BlinkenDisk's DiskMonitor.swift reads IOBlockStorageDriver statistics via IOKit to detect disk I/O events.
Prompt 3
How would I add a second LED per drive in BlinkenDisk to show read activity in green and write activity in red separately?
Prompt 4
I want BlinkenDisk to launch at login on macOS. What is the correct way to add it to Login Items using Swift or System Settings?
Open on GitHub → Explain another repo

← davepl on gitmyhub — every repo by this author, as a profile.

Verify against the repo before relying on details.