Giocoso Broken!

Click on the thumbnail to this post and see if you can see a bit of a problem!

In one window, on the left, you see Giocoso running as it's supposed to: displaying album art within its terminal session. In the window on the right, however, you see Giocoso playing music just fine… but there's no album art on display.

Giocoso has always displayed its album art by using a technology called “sixel graphics”. Terminals that support sixel graphics can display an image within the terminal by using a command such as: img2sixel albumart.jpg. Konsole, the KDE terminal I'm using on the right of that thumbnail has always supported doing this, which is just as well as it's the terminal I use daily to develop Giocoso in the first place! Unfortunately, as that screenshot tells you, Konsole has stopped doing this for mysterious reasons that I can't fathom. It now means that Giocoso run on any version of KDE within a Konsole window is at risk of not being able to display album art graphics sometime in the near future. The specific version of Konsole that appears to have developed this problem is version 25.08.2.

Since my desktop PC runs on EndeavourOS (a bleeding-edge distro based on Arch Linux), it's software stack is forever being updated: it's picked up the new version of Konsole and has lost the ability it once had to display in-terminal album art. My music playing PC (the one that's plugged into the amplifier and speakers) is running Debian 13, a much more sedate (some would call it old-fashioned!) distro that is running version 24ish of Konsole. Clearly, the Konsole developers nixed sixel graphics sometime in the last year: I'm not holding my breath for them to un-nix any time soon, sadly.

There are alternative terminal emulators, of course: xterm, for one. Unfortunately, they need to be compiled with sixel graphics support and none of the many terminals I've tried on EndeavourOS display sixel graphics properly:

That's xterm not displaying a JPG file. It's true for uxterm, too; for ghosty; for mintty; darktile, gnome-terminal and any other terminal emulator you might suggest, at least on EndeavourOS (and Arch or Arch-derived distros in general: I found Manjaro to be similarly affected).

The only exception is a terminal emulator called kitty, which doesn't use sixel graphics at all, but its own unique way of doing in-terminal graphics which continues to work in every environment I tested:

Unfortunately, you can see that kitty displaying anything requires some quite new syntax… and positioning the graphics display is nowhere near as easy to do as with sixel graphics. I'm also reluctant to make Giocoso dependent on a specific terminal emulator. So, this is not a road I'm keen to journey down.

Of course, Giocoso already has a workaround:

You've always been able to configure Giocoso to display the album art in its own separate pop-out window, which is nowhere near as elegant but continues to work fine, even on Arch-based distros:

For now, my understanding is that this is the only way to get album art displayed correctly on a fully-updated Arch-based distro. More worryingly, as other distros upgrade their KDE environments, I suspect they will lose the ability to do in-terminal graphics display, too. There's nothing much I can do about that, I'm afraid, though I am on a kitty learning curve as we speak.

Edited to add: I have swiftly realised that the kitty terminal emulator is just a special example of a terminal that understands the kitty graphics protocol. Other browsers can understand that protocol too, so it's easy (even on an Arch-based distro!) to get Konsole or other browsers to display images using it:

The title bar tells you this is Konsole… but it's still displaying a piece of albumart anyway! So this is definitely a route I will have to travel in the near future, I think!

  • blog/giocoso_broken.txt
  • Last modified: 2025/10/24 14:26
  • by hjr