
KRetro is a libretro frontend from KDE written in Qt with Kirigami! That means when given both a libretro core, and a game cartridge/disk ROM, it plays your favourite games. It is designed to be convergent, usable across all Plasma Platforms: Desktop, Mobile and Bigscreen.
What is Libretro?

You may have heard of RetroArch, a popular and famously portable retro game emulator frontend with a console-style UI. One of the important innovations from RetroArch is libretro, a standard API that can adapt the many numbers of independent game console emulators to a single program. This is what allows RetroArch to support a vast number of systems without needing to build support for each bespoke emulator into the frontend itself.
A libretro “core” is simply a .so/.dylib/.dll dynamic library file that packages an emulator (or an independent game), and can be loaded into any application that can consume it using the libretro.h C API specification.
Through the libretro API, cores are adapted to the native Qt interface of KRetro (for example, pixels are drawn onto a QImage, audio is rendered out using Qt Multimedia, and reading keyboard events is handled by the QML engine).
The Road to KRetro

KRetro’s development started in 2023 with a desire to help build more apps for Plasma Mobile (shout out to Devin for the idea and help along the way). I worked on it for a while, but unfortunately got busy with school and other things. In addition, the Qt 6 transition came and went, which left KRetro effectively abandoned.
Thankfully, in 2024, Dexter Reed came through with an MR to port the KRetro codebase to Qt6. And finally, in 2025 with more time on my hands, I finally picked the project back up, bringing us to today!
The name? The K-prefix naming has mostly been phased out these days in KDE for new apps… you could say it is a retro naming scheme 😉
What KRetro Can Do Today
As you probably guessed, this is an Alpha quality release, and while I did my best to have the experience be polished, you should expect bugs and missing features.

More importantly, KRetro is not feature complete. This release is intentionally limited – I wanted to make sure the scope was not too large so meaningful progress can be made towards a release.
As of this first alpha release, KRetro can play games from the following fixed list of consoles:
- Nintendo Entertainment System/Famicom
- Super Nintendo Entertainment System/Super Famicom
- Game Boy Advance
- Sega Master System
- Sega Genesis/Mega Drive
- libretro 2048 (a built-in demo game)

KRetro also supports fully mappable controls for both keyboard and controller inputs, though only 1 port is available for now (so no multiplayer). Controller support is provided by SDL3 (and keyboard input is handled directly from the QML engine).

KRetro has a system for managing save states for each of your games, including a default save slot that automatically saves and restores your game progress when you quit and launch KRetro.
The Road Ahead: What’s Left to Do?
Lots! In fact, too many things to list here in detail. There are a number of big ticket items though, like enabling OpenGL/Vulkan support for cores (this will allow supporting most 3D consoles, like the N64, Wii, or Playstation), or allowing arbitrary core+rom combinations (allowing users to select any of the 200+ libretro cores they want, instead of having a fixed list of consoles as it is currently).
There are also lots of smaller quality of life features, for example:
- Supporting more than 1 controller
- Improve the touch controller layout on tablets
- A better game/ROM list with extended metadata
- Save state screenshots
- And many more…
The Mobile platform also needs some more love specifically, like having transparent and customizable touch controller layouts.
Plasma Bigscreen support is generally pretty rough (given that Bigscreen itself isn’t released yet either), there is only basic remote navigation support for selecting games, and all other parts of the UI require a mouse to reach (such as the settings page).
KRetro has also at one point in the past run on Android (which is to say – it should be able to run on Android, but this hasn’t been tested in quite a while, and is probably broken), and iOS builds have never been attempted (however it has been run on macOS).
Does any of these features interest you, and you want to help out? Do you have more ideas? Come and contribute on the KDE Invent page!
Trying out KRetro

Given that this is the first release, and an alpha quality release, KRetro is not packaged on any distros yet. The easiest way to experience KRetro if you are on x86_64 is to use the nightly flatpak:
flatpak install https://cdn.kde.org/flatpak/kretro-nightly/org.kde.kretro.flatpakref
Otherwise, you’ll need to grab the source and compile it, either the release tarball or even more bleeding edge, from the git repo.
Download the tarball: https://download.kde.org/unstable/kretro/0.0.1/
$ wget https://download.kde.org/unstable/kretro/0.0.1/kretro-0.0.1.tar.xz
$ tar xvf kretro-0.0.1.tar.xz && cd kretro-0.0.1/
$ mkdir build && cd build
$ cmake .. # install required dependencies if needed
$ make -j${nproc}
$ ./bin/kretro # or sudo make install
Besides installing KRetro, you will also need some libretro cores. On the nightly flatpak, these are already bundled in for you, and you’re ready to play games! If you install KRetro manually, the recommended/tested cores are as follows:
- Nestopia for NES
- snes9x for SNES
- mGBA for GBA
- Gearsystem for SMS
- BlastEm for Genesis/MD
Some distros (like Arch and Alpine) already package these, so you can install them from their package managers (ex. pacman -S libretro-snes9x
). Once installed, you can select them for use in the KRetro settings.
Games are detected and matched to their respective console type by their file extension, so all you need to do is place your game ROMs in “~/Documents/Games” (or another folder of your choosing).
Reporting Bugs and Getting Involved
Since this is an alpha release, you’ll probably run into bugs and crashes, the best way to report those is to the KDE Bugzilla: https://bugs.kde.org/enter_bug.cgi?product=kretro
There isn’t a dedicated KRetro Matrix channel yet, but you can easily find me in the Sineware Matrix room or Discord server if you would like to hang out or ask questions. You can also leave a comment on this blog post.
And last but not least, if you would like to develop and hack on KRetro, you can find everything you need at: https://invent.kde.org/games/kretro
Thank you!
Thank you for reading this far! I hope you will try out KRetro and enjoy it, and I hope the KRetro community will grow too!
I would like to give a special thanks to Devin Lin for his invaluable help, without him KRetro would never have gotten this far. I’d like to also give thanks to Carl Schwan for helping me along the KDE development process, his contributions to KRetro, and for being my sponsor for getting KDE developer status.

Leave a Reply