CodeIsland is a DankMaterialShell widget plugin for projecting local AI coding
sessions on Wayland/niri. The plugin renders the DMS bar island and popout UI;
the live session data comes from the Linux daemon in linux-skeleton/.
These screenshots show the plugin running as a DMS widget on niri.
| Running task | Finished task |
|---|---|
![]() |
![]() |
plugin.json- DMS widget manifest.CodeIslandWidget.qml- plugin root loaded by DMS.CodeIslandSettings.qml- DMS settings page.components/- reusable QML UI components.assets/- provider SVG icons.lib/- projection, style, and plugin-local i18n helpers.preview/- standalone QML preview fixtures.linux-skeleton/- daemon, hooks, adapters, and tests for live Codex, Claude Code, and OpenCode session data.
The plugin treats linux-skeleton/codeisland_linux/ as the source of truth.
- It subscribes to the daemon over the Unix socket API.
- It renders the current session by projecting
snapshot.fullandsnapshot.patchpayloads. - It prefers the daemon-provided
island_stateprojection so approvals, questions, and recent completions become focused Code Island cards instead of passive list rows. - It groups expanded sessions by provider/source, including OpenCode and Codex when the daemon snapshot carries provider metadata.
- It sends approval/question responses back through
interaction_respond. - It does not move session lifecycle or business logic into the QML plugin.
The widget uses the same daemon path convention as the Linux skeleton:
$XDG_RUNTIME_DIR/codeislandd.sock- fallback to
/tmp/codeisland-<uid>/codeislandd.sockwhenXDG_RUNTIME_DIRis unavailable
You can override the socket path from the plugin settings if your development environment uses a custom path.
The plugin settings expose:
- language (
System,English, orChinese (Simplified)) for plugin settings and the static widget UI - default list tab (
Finished,Active, orAll) - optional popout when an agent tool finishes
- font family and board/focused popout dimensions
- session card height, spacing, and roundness
- action button roundness and outline strength
- DMS bar dot size, spacing, and breathing motion
- provider group headers, time chips, and terminal/app chips
Symlink or copy this directory to your DMS plugins directory:
mkdir -p ~/.config/DankMaterialShell/plugins
ln -sfn /path/to/codeIsland ~/.config/DankMaterialShell/plugins/codeIslandThen scan plugins in DMS settings, enable CodeIsland, and add it to the bar.
The widget supports DMS widget IPC modes:
dms ipc widget toggle codeIsland
dms ipc widget openWith codeIsland all
dms ipc widget openWith codeIsland finished
dms ipc widget openWith codeIsland activeThe popout handles keyboard navigation while it is focused:
1/2/3switch toALL/FINISHED/ACTIVE.TabandShift+Tabcycle view modes.j/kor arrow up/down move the selected session.Enteropens the selected or focused session.Esccloses the popout.- Approval cards accept
afor approve anddfor deny.
This DMS plugin is inspired by the original CodeIsland project. It keeps the island interaction model while adapting the UI and live session bridge for Linux, Wayland, niri, and DankMaterialShell.

