Open-source project
enhaoswen/Tide-island avatar
enhaoswen/Tide-island

Tide Island puts a Dynamic Island style panel inside a Hyprland or niri desktop

Tide Island is a smooth, lightweight, and flexible interactive island for Hyprland.

755 stars49 forksQMLGPL-3.0

At a glance

What is it?
Tide Island is a QML desktop widget built on Quickshell and Qt 6 that idles in the corner and expands into a panel with lyrics, workspaces, system controls and notifications, and its README says development has moved to a new repository.
Who is it for?
Adopt Tide Island if you run Hyprland or niri on Wayland, like the Dynamic Island interaction, and want one widget that covers music, workspaces, system feedback and notifications without writing QML yourself. Do not adopt it if you are starting fresh on a compositor it does not cover, or if you need a project with a single active upstream, because the README states that development has moved to a new repository.
Can I use it commercially?
Yes, with conditions. GPL-3.0 is a copyleft licence: if you distribute software that includes it, you must release that software's source code under the same licence. Running it internally without distributing it does not trigger that obligation.
Is it still maintained?
Yes. The repository last received commits 3 days ago.
What is it written in?
Mainly QML, according to GitHub's language statistics.

Answers come from the project's GitHub data, last synced on October 23, 2026, and from our analysis. They are not legal advice.

Editorial analysis

A desktop widget that pretends to be a phone notch

Tide Island is a small desktop widget for Hyprland and niri, styled like the Dynamic Island. The description explains the interaction model better than any feature list could. When nothing much is going on it just sits in the corner, staying out of the way, and when you need to check something it expands into a panel where you can view lyrics, switch workspaces, adjust system settings, check notifications, or put in some custom content. That is a different design from a bar or a set of always visible panels. The widget is idle by default, so it costs attention only when summoned, which is why it belongs to the category of things people add to a Wayland desktop as a personal touch rather than a piece of a standard configuration. The stack is Quickshell, QML and C++ with Qt 6, and the author says most of the effort went into making the animations as smooth as possible, interactions responsive, and resource usage kept in check. The primary language recorded for the repository is QML, which matches a project whose interface is a QML scene graph rather than a web view.

A fixed panel of features, and one page for your own widgets

The feature list is long and concrete, which makes it easy to judge fit before installing. The panel includes a clock, a music player, a control center, a timer, a lyrics displayer, an application launcher, a file shelf, a clipboard history manager, weather with a forecast, a calendar, a wallpaper switcher, a workspace overview, a notification centre, a power menu, and a custom page. The custom page is the interesting part for anyone who wants something the author did not think of, because it lists the widgets it can show, among them time, date, battery, volume, CPU usage, the current workspace, memory usage, brightness, Cava for the audio visualiser, storage usage and weather. There is also a set of system feedback items that the widget surfaces as they happen, covering volume changes, brightness changes, battery charging and discharging, workspace changes, optional media playback and system notifications. Two features have behaviour worth knowing in advance. Clicking a date in the calendar writes a note, and dates with notes show a small dot, with the notes saved automatically. And clipboard history is not self contained, since it requires cliphist and wl-clipboard, with Tide Island starting the clipboard watcher automatically while it is running.

Compositor detection is explicit before it is clever

The compositor support section is the part that shows the most care, and it is worth reading because a wrong guess here means a widget that does nothing. Hyprland gets the full current experience, including the Tide workspace overview, workspace animations, shortcuts, and Night Light through hyprsunset. niri gets island views, focused output IPC commands, workspace change hints, the native niri overview, shortcuts configured through a file at ~/.config/tide-island/niri-shortcuts.kdl, and Night Light through gammastep. The detection order is described precisely, which is the part that matters operationally. Tide Island checks TIDE_ISLAND_COMPOSITOR first, then $XDG_CURRENT_DESKTOP, uses $NIRI_SOCKET only when the desktop environment is inconclusive, and then falls back to Hyprland. The stated reason for that last rule is that it prevents inherited compositor sockets from causing a false detection. In practice this means a session launched from inside another compositor, or a container with a stale socket in the environment, will not silently attach to the wrong thing. It also means there is a supported way to override the guess, which is the kind of escape hatch a desktop widget needs when the compositor changes its session variables.

Install from the AUR or from a checksummed source tarball

Arch Linux users have the short path, a package from the AUR:

bash
yay -S tide-island

For other distributions the documentation points at the latest GitHub release, where a source package and a checksum file are published:

bash
curl -fLO https://github.com/enhaoswen/Tide-island/releases/latest/download/tide-island-source.tar.xz
curl -fLO https://github.com/enhaoswen/Tide-island/releases/latest/download/SHA256SUMS
sha256sum --check SHA256SUMS
tar -xf tide-island-source.tar.xz
cd Tide-island-*
./install.sh

The checksum step is not decoration. The download is verified against SHA256SUMS before anything is unpacked, which is the right way to install a script that writes to /usr. The installer writes Tide Island to /usr and can install dependencies automatically on Debian, Ubuntu and derivatives using apt, on Fedora, RHEL and derivatives using dnf, and on openSUSE using zypper. On anything else you install the dependencies by hand and run:

bash
./install.sh --skip-deps

Two build requirements are stated. Quickshell is used from /usr/bin/quickshell when it is available, and otherwise the installer builds the pinned, verified Quickshell version that matches the release, so an offline or minimal machine is handled without you chasing a version. Qt 6.6 or newer is required. The repository is a normal source project rather than a flat script, with a CMakeLists.txt, a PKGBUILD for the AUR package, an install.sh, a tide-island.desktop entry, a tide-island.service unit, a tide-island-launcher, and separate directories for the backend, common code, the QML, integrations, the lyrics bridge, the app, scripts and tests.

A widget is easier to adopt than a QML project of your own

The realistic alternative to Tide Island is not another widget, it is writing the panel yourself on the same stack. Quickshell, QML and Qt 6 are entirely capable of a hand built island, and someone who already maintains QML for their desktop can produce a smaller version of this in a fraction of the code, with only the features they actually use. The difference in approach is ownership. Tide Island gives you a fixed set of features, tested and maintained by somebody else, and the Custom page is the seam where you add what is missing. Writing your own gives you exact control over every pixel and every hotkey, and it gives you a maintenance burden for the lifetime of your configuration, including the part where the compositor changes its IPC and your panel silently stops updating. The trade for a personal desktop is usually about how much attention you want to spend on a status widget. If you already have a QML habit, the custom page plus the feature set may be redundant. If you do not, Tide Island is a working set of panels that someone else maintains, and that is a real saving even though the code is not a general purpose library.

The README says this repository has moved on

The most important line in the documentation is a warning at the top. It states that Tide Island has moved to a new repository, that this version is still working well and remains available, but that it is no longer actively maintained, and that a new version is currently under development but is not finished yet, with a link to Tide Island, New Repository. At the same time the release history shows 1.0.43 on 2026-10-17, 1.0.44 on 2026-10-18 and 1.0.45 on 2026-10-19, and the last push was on 2026-10-20. Those two facts sit awkwardly together, and the honest reading is that the current tree is being finished off and handed over rather than abandoned tomorrow, but that the forward looking work is somewhere else. The project is licensed GPL-3.0, with a LICENSE file at the root, so the terms are clear for anyone who wants to fork it, and the tree is structured for that, with the backend and common code separated from the QML. For a user, the practical question is which line to track. This repository will keep the version you have working, and the new one is where changes land once it is ready.

Editorial conclusion

Adopt Tide Island if you run Hyprland or niri on Wayland, like the Dynamic Island interaction, and want one widget that covers music, workspaces, system feedback and notifications without writing QML yourself. Do not adopt it if you are starting fresh on a compositor it does not cover, or if you need a project with a single active upstream, because the README states that development has moved to a new repository. Before you install, check the compositor detection order against your session, since the fallback to Hyprland is explicit, confirm the Quickshell and Qt 6.6 requirements, and decide whether the clipboard history feature matters to you, because it needs cliphist and wl-clipboard present.

Frequently asked questions

What is Tide Island and which compositors does it support?

Tide Island is a small desktop widget for Hyprland and niri, styled like the Dynamic Island, built with Quickshell, QML and C++ with Qt 6. Hyprland gets the full experience including the workspace overview, workspace animations, shortcuts and Night Light through hyprsunset, while niri gets island views, focused output IPC commands, the native niri overview and Night Light through gammastep.

How do I install Tide Island on a non-Arch Linux system?

Download the source package and SHA256SUMS from the latest GitHub release, verify with sha256sum --check SHA256SUMS, unpack the archive and run ./install.sh. The installer writes to /usr and can install dependencies with apt, dnf or zypper; on other distributions install the dependencies yourself and run ./install.sh --skip-deps. Qt 6.6 or newer is required.

What does Tide Island need for clipboard history?

The clipboard history feature requires cliphist and wl-clipboard to be installed. Tide Island starts the clipboard watcher automatically while it is running.

Is Tide Island still actively maintained in this repository?

The README carries a warning that the project has moved to a new repository, that this version still works and remains available, but that it is no longer actively maintained and that the new version is not finished yet. The last push here was on 2026-10-20, one day after release 1.0.45 was tagged on 2026-10-19.

How does Tide Island decide which compositor it is running on?

It checks TIDE_ISLAND_COMPOSITOR first, then $XDG_CURRENT_DESKTOP, uses $NIRI_SOCKET only when the desktop environment is inconclusive, and then falls back to Hyprland. The documented reason for that order is to prevent inherited compositor sockets from causing a false detection.

Official sources

  1. enhaoswen/Tide-island on GitHub
  2. Issues
  3. License: GPL-3.0
  4. README
  5. Releases
Add this badge to your README

If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.

Add this badge to your README

markdown
[![Hysen Labs](https://hysenlabs.com/badge/enhaoswen-tide-island.svg)](https://hysenlabs.com/projects/enhaoswen-tide-island)

Was this useful?