Skip to main content
Back to Home

Karaoke for Linux

HomeKaraoke is a free, open source karaoke app for Linux, published as a deb, an rpm and an AppImage. It plays karaoke from YouTube and from video files you already own, keeps a queue of who sings what, and sends the video to a projector.

Version 0.9.0 · View changelog

System requirements

Distribution
Ubuntu 22.04 or Debian 12 and newer, Fedora, and their equivalents
Architecture
x86_64 only, no ARM64 build
Libraries
WebKitGTK 4.1, GTK 3 and the GStreamer base, good and libav plugins

How to install on Linux

  1. 1. Pick a native package

    Take the .deb on Debian and Ubuntu, or the .rpm on Fedora and RHEL. Prefer either of them over the AppImage; the reason is worth reading before you decide.

  2. 2. Install it

    Your package manager pulls in WebKitGTK, GTK and the GStreamer plugins for you.

    sudo apt install ./HomeKaraoke_*.deb
    # Fedora and RHEL
    sudo dnf install ./HomeKaraoke-*.rpm
  3. 3. Launch HomeKaraoke

    Find it in your applications menu, or start it from a terminal.

    homekaraoke

Choose a native package over the AppImage

The deb and rpm packages use the WebKitGTK your distribution ships and declare the libraries they need, so your package manager resolves them. The AppImage instead carries its own copy of WebKitGTK, built against Ubuntu 22.04.

That difference causes real failures. On rolling distributions with a newer graphics stack, the bundled WebKit can fail to create an EGL display and the app aborts before a window ever appears. It is open as issue #237, reported on Arch Linux, with no confirmed workaround. If you are on Arch there is no good option today: we publish no Arch package and the AppImage does not start, which leaves building from source.

If you do use the AppImage, make it executable first with chmod +x, and note that it will not install any dependencies for you.

What it does

YouTube and your own files

Search YouTube and queue the results, or point HomeKaraoke at folders of video files you already own. The local library, the queue and playback all work with no internet connection.

A queue built for a room full of people

Assign songs to singers, reorder by drag and drop, and use Fair Shuffle to spread turns evenly instead of letting one person hold the microphone. Singers and their favourites persist between sessions.

Projector and second screen

Detach the video into its own window, drag it onto the projector and press F for full screen. It stays above other windows by default.

Guests join from their phones

Start a hosted session and share the code, something like HK-7X4M-9K2P, or its QR code. Guests request YouTube songs from a browser without installing anything. Requests reach you within about 30 seconds. You need an account to host a session.

What works and what does not on Linux

  • Media keys work through MPRIS, so play, pause and skip from your desktop shell reach HomeKaraoke.
  • There is no display layout memory. The detached window works, but you position it by hand each time. Automatic display handling is compiled for macOS only.
  • Video in the detached window needed a workaround. HomeKaraoke disables the WebKitGTK DMABuf renderer, which is what fixed stuttering playback in the second window on Fedora (#100). It works, but this is the area that has given Linux the most trouble.
  • Your login may not survive a restart. The Linux build ships without a keyring backend, so authentication tokens probably do not persist between runs, and a hosted session may not come back after you restart the app. Hosting works fine while the app stays open. This is issue #240, found by reading the build configuration; nobody has yet tested it on a live desktop.

Questions

Which package should I download?
The .deb on Debian and Ubuntu, the .rpm on Fedora and RHEL. Both use your system WebKitGTK and pull their dependencies through your package manager. The AppImage is a fallback for distributions that take neither, and it carries its own WebKit. That copy is what breaks on newer systems.
The AppImage will not start and prints EGL_BAD_PARAMETER.
That is issue #237. The WebKit build inside the AppImage cannot create an EGL display against a newer graphics stack, and the render process aborts. It was reported on Arch Linux and there is no confirmed fix. Install the .deb or .rpm instead where your distribution allows it, and please add your details to the issue if you are on Arch.
Which distributions are actually tested?
We build releases on Ubuntu 22.04, so Ubuntu 22.04 and Debian 12 and newer are the safest ground. The maintainer has tested Fedora and fixed the two problems that turned up there: missing codec plugins, and stuttering video in the second window. Arch has an open blocking issue. Everything else is untested rather than unsupported.
Is there an ARM64 build, for a Raspberry Pi?
No. Linux releases are x86_64 only.
Will it remember that I am signed in?
Probably not, on Linux. The keyring backend is not compiled in, so tokens are unlikely to persist across restarts and you may need to sign in again to host a session. This is issue #240.
Do I need anything else before I can search YouTube?
Yes, and it catches people out. Search needs either your own YouTube Data API key, which you create for free in the Google Cloud console and paste into Settings, or yt-dlp - installed and then selected as the search method, because HomeKaraoke does not pick it up on its own. Without one of the two, search reports itself as not configured. Playing files you already own needs neither.
Which video files can I play?
The library scans .mp4, .mkv, .webm, .avi and .mov. Playback goes through the Linux system WebView, which decides what actually plays, so stick to MP4 with H.264 and AAC, or WebM. MKV and AVI files land in your library and then refuse to play.

Search returning nothing after you install? Set up YouTube search walks through both ways to fix it.