CLI tool
Taiko2k/Tauon avatar
Taiko2k/Tauon

Tauon: three links still point at the old repository name, and the GTK binding has no platform marker

The music player of today! :citysunrise:

2,967 stars157 forksPythonGPL-3.0

At a glance

What is it?
A desktop music player written in Python whose download links point at two different repository names, whose Pillow dependency carries a commented-out platform marker, whose GTK binding is required on every platform, and which ships a setup.py alongside pyproject.toml purely to compile translations during the build.
Who is it for?
Tauon suits a desktop listener who wants gapless playback, tracker formats, visualiser support and self-hosted library streaming without a subscription, and the dependency list shows the feature set is real rather than aspirational. Verify five things first.
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 1 day ago.
What is it written in?
Mainly Python, according to GitHub's language statistics.

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

From daily snapshots

Star history

  • Taiko2k/Tauon2,967 ★ · +206
Star history
Repository2026-08-012026-11-14
Taiko2k/Tauon2.8k3k

206 Stars in the last 105 days, measured from the daily GitHub snapshot. Compare with other projects

Editorial analysis

Three download links point at a repository name that is not this one

The project has two names in circulation inside one page. This repository is called Tauon, and the download links are split between that name and an older one. The macOS disk image link and the Windows installer link both go to a releases page under the older name, and so does the link to the sandboxing notes. The Linux portable binaries link goes to the current name. So a reader following the macOS or Windows instructions may land on a renamed or redirected repository, and the sandboxing notes, which are the one page a Flatpak user most needs, are reached through the same older path. The package metadata points at the older name too, in a comment telling the maintainer which two other files to bump alongside the version, so the older name is not a leftover in the readme alone.

The same flatpak application is linked under two different path shapes

The flatpak listing appears twice and the two links are not the same address. The header navigation points at an application path, while the Linux installation section uses a details path for what is otherwise the same application identifier. Both carry the same reverse-domain application id, so the target is the same package and only the route differs. One of the two is wrapped in an anchor with no text of its own, so in the rendered page it appears as an empty link between paragraphs rather than as a labelled button. That is a small thing on its own, but it is the shape a reader is most likely to click without reading, and a link that renders as nothing gives no signal about where it goes or whether it worked.

Pillow is required everywhere and the comment shows the platform marker was switched off

The dependency list gates four packages by platform: a Windows automation library, a Linux message bus binding, a global hotkey library, and the macOS Cocoa bridge. A fifth entry, the imaging library, carries a commented-out platform marker followed by a note to install it from a different package manager on macOS. The marker is inert, so the imaging library is now required on macOS as well, and the note tells you where to get it there instead. Two of the remaining unconditional entries are worth more attention. The GTK binding has no platform marker at all, so it is required on Windows and macOS too, and the dependency list gives no hint that this is unusual. The OpenGL binding is also unconditional, which is consistent with the visualiser support the feature list advertises.

A library integration is switched off in the metadata with a version conflict recorded beside it

Two optional entries carry explanatory comments, and both explain a disablement rather than a choice. One adds a traceback colouring library everywhere except Windows, with a link to an open issue on that library as the reason. The other is commented out entirely, and the comment records a transitive version conflict in full: the integration requires a charset normaliser at one version while something else in the environment has already resolved a newer incompatible one. So a MusicBrainz Picard integration exists in the project's intent and is absent from the build, with the reason recorded where a maintainer will see it rather than in an issue tracker. That is a good practice and a useful one to read before assuming the extra is complete.

The optional extra bundles four streaming clients and two discovery libraries behind one switch

The optional dependencies are grouped into a single named extra rather than being separable, and the group mixes unrelated things. It contains a Plex client, a Chromecast client, a Tidal client, a set-title library, a process-title library, a network discovery library, and two variants of a Chinese conversion library, one for every platform except Windows and a different implementation for Windows. That means a user who wants nothing but a Tidal client also installs the Chromecast client and the discovery library, and there is no way to take one without the rest. The Windows and non-Windows split on the conversion library is the only per-platform decision made inside the extra, and it exists because the original package does not work there.

Translations are compiled by a setup.py hook rather than by the declarative metadata

The project carries both a modern declarative manifest and a legacy setup script, and the script exists for one reason. It subclasses the standard build and source distribution commands and runs a translation compiler before each one, so the compiled message catalogues are produced as part of building rather than being committed. The same compiler is exposed as a command through the manifest's entry points, so the function is reachable both as a build step and as a standalone command. What this means in practice is that a build performed by a tool that reads only the declarative metadata will skip the translation step, and the artefact will contain whatever was already compiled in the working tree. There is a manifest file at the root governing what gets included, and a comment in the manifest notes an ordering requirement between this hook and another build step.

Two release channels run at once, one of them dated by commit hash

The recent releases include a properly versioned tag and something else entirely. The versioned line shows a twelve series with two entries a few days apart, one for the minor release and one for a point release. The third entry is named as a pre-release and carries the date and a short commit hash in its name, which is the pattern you would use for a continuous build rather than for a release anyone pins. The pre-release was cut the same day as the last push, so the two are the same event. For a consumer this means the download page offers both a stable artefact and a rolling one under the same heading, and nothing in the readme explains which to take.

The tagline uses a code comment separator and the project ships a type stub at the root

Two small details say more about the project than the feature list does. The banner line separates the product name from its tagline with a double slash and a space, which is the convention for a comment inside a script rather than the convention for a headline, and the tagline it introduces describes the player as streamlined for the desktop. The repository's own one-line summary says something different again, with no mention of the desktop or of streamlining. Separately, a file whose name marks it as type stubs sits at the repository root rather than inside the source tree, which is how a typed Python package advertises its annotations to an editor.

Editorial conclusion

Tauon suits a desktop listener who wants gapless playback, tracker formats, visualiser support and self-hosted library streaming without a subscription, and the dependency list shows the feature set is real rather than aspirational. Verify five things first. Three download links point at a repository name that is not this one, so check they resolve before recommending them. The GTK binding is required on every platform while its neighbours are gated, which is the part most likely to fail on a machine that is not a Linux desktop. A library integration is commented out in the metadata with a transitive version conflict recorded as the reason, so that feature is absent rather than merely untested. Translations are compiled by a setup.py hook rather than by the declarative metadata, so a build that bypasses that file ships uncompiled catalogues. And the optional extra bundles streaming clients and discovery libraries behind one switch, so a plain install has none of them.

Frequently asked questions

how to install tauon music box

Four routes are given. macOS and Windows both point at a releases page for a disk image and an installer respectively, Linux has a distribution package, and there is also a flatpak listing plus portable binaries on the releases page. The macOS, Windows and sandboxing-notes links use a repository name that differs from this one.

What does Tauon need to run on Linux?

Python 3.11 or newer, plus a required GTK binding that carries no platform marker even though the neighbouring dependencies are gated by platform. The dependency list also marks a Linux message bus binding as Linux-only, so the GTK entry is the one that has to build everywhere.

Does Tauon support streaming from a self-hosted music server?

Yes, the feature list names three server types, and the optional dependency group contains a client library for one of them alongside a Chromecast client, a Tidal client, a set-title library and a network discovery library. All of those sit in one group, so none of them can be installed alone.

Which audio formats does Tauon play?

The feature list names a common lossless format and tracker file types by extension, and calls out support for gapless playback and for CUE sheets as its own item. It also states support for a visualiser system, which is the reason an OpenGL binding sits in the unconditional dependency list.

What licence is Tauon released under?

The package metadata declares the GPL version 3 or later, using the SPDX form rather than a bare name, and a licence file is tracked at the repository root. The package name in the metadata is the distribution name, which differs from the repository name.

How does Tauon build its translations?

A legacy setup script subclasses the standard build and source distribution commands and runs a translation compiler before each one, so the compiled catalogues are produced during the build. The same compiler is also exposed as a command through the declarative metadata, which means a build that reads only that metadata would skip the step.

Official sources

  1. Official documentation
  2. Official README
  3. Project repository
  4. Release notes
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/taiko2k-tauon.svg)](https://hysenlabs.com/projects/taiko2k-tauon)

Star history chart for your README

markdown
[![Star history](https://hysenlabs.com/chart/taiko2k-tauon.svg)](https://hysenlabs.com/projects/taiko2k-tauon)

Was this useful?