Odysseus
An iPhone-style dynamic island for Windows 11.
A thin status line under the top edge of the screen that opens, like the iPhone's dynamic island, to show what is going on: Claude Code sessions at work, music with synced lyrics, playlists an AI picks for your mood, a focus timer, today's homework from Aethalides, Teams digests from Sisyphus, clipboard history, and a quick chat that can search the web. Each activity has its own colour on the line. Click a colour to open its card, or rest the pointer on the line for an overview.
- Status
- Working, and installed on my own Windows desktop. Its setup wizard can be downloaded here. The repository is private.

Overview§
On a Windows desktop, the things worth watching are scattered: a Claude Code session finishing its task, the song that is playing, a homework block coming up, a busy Teams chat. Each one is in its own window, so keeping track means switching between them. I made Odysseus for my own Windows 11 desktop, where several of these run at once.
At rest it is a thin coloured line under the top edge of the screen, one segment per activity. Rest the pointer on it and Home opens, with one row each for the working session, a focus timer, what is next today and the latest digest. Click a row or a colour to open that card. Bubbles on either side lead to the other pages: Claude's plan limits and spend, Today's homework and tasks, music, Mood playlists, the clipboard, and a quick chat. Drag the island into a corner and it becomes a spinning ring, whose centre shows whatever matters most by rules you set.
It is a native Rust app with no web view. It is always black with a white hairline so it stays visible over dark title bars, and it is built to use almost nothing while nothing is happening. It is new. The setup wizard installs it for one Windows account, with no admin rights needed. The Claude Code, Aethalides and Sisyphus pages need those tools running, the quick chat and Mood need an AI key, and Mood plays through QQ Music. Without them the island shows less.
At a glance§
- Role
- Built alone, with AI coding assistants
- When
- 14 Oct 2026 to 8 Nov 2026 · 4 weeks
- work on 10 different days
- Commits
- 19
- saved steps of work
- Automated tests
- 197
- checks the code runs on itself
- Code
- 35,357 lines of Rust
- 35,664 in all
Counted from the repository on 11 November 2026: commits on every branch, without merges; tests as written, so one that runs several cases counts once; lines that are not blank, without other people's code, generated files or lockfiles.
Key facts§
- About 38,000 lines of Rust, with no web view. The island and its cards are drawn with Direct2D into composition surfaces.
- The process runs under Windows' EcoQoS power-saving scheduling, except while you type into it.
How it works§
Nothing polls. Each source wakes the app only when something changes: a change notification on Claude Code's session and transcript folders, media session events, the clipboard's update message, or a local POST from a small Claude Code plugin that only reports. Other Windows islands that got complaints about battery life checked the cursor or media many times a second.
Windows does the animation. The island is a Win32 window hosting a Windows.UI.Composition tree. Windows animates its size, position and corner radius from springs sampled off the exact damped curve, so the app's own threads sleep during a transition. I ruled out web-based shells because of their idle cost.
Several activities share the line. Each gets a segment in its own colour: orange for a working Claude session (amber near the 5-hour limit), cyan for a focus timer, and the album's colour for music, shown as a single line that grows from its centre with each beat.

Home: rest the pointer on the line and each activity gets a row, one click from its own card. Claude Code's state is read from files it already writes. Busy or idle and to-do progress come from its session registry. Spend and tokens come from its transcripts, read from the last offset. Plan limits and subagents come from the reporting plugin. Claude Code never waits on the island.

A Claude session's card: its current step, to-do progress, the subagent at work and how much of each limit is used. It works with my other projects. The Today page reads Aethalides's plan for the day. Sisyphus's Teams digests show up as prominently as they matter: a full card for an important one, a one-line banner, or a faint capsule that barely leaves the line. When a coding agent asks Sisyphus to message someone, a red card shows the ask until it is approved or rejected.

Today: homework from Aethalides next to the day's own tasks. Focus starts a timer in the island. Mood playlists are real songs. You type how you feel, Claude Haiku 5.5 picks the songs, and each one is looked up on QQ Music. Any it can't find is dropped, so nothing invented plays. Each playlist gets its own card, from a vinyl record to a boarding pass, and new playlists learn from your thumbs and hearts.
Screens§
Built with§
- Rust
- windows-rs
- Windows.UI.Composition
- Direct2D
- DirectWrite
- WASAPI
- OpenCode Go
- Claude Haiku 5.5
- Serper, also used in Datacenter Tracker
- Inno Setup

