# Persona Quickshell: A Persona 3 Themed Desktop Shell for Hyprland

> Persona Quickshell is a Quickshell theme for Hyprland, written in QML, that replaces the whole desktop surface with a Persona 3 Reload look: a wallpaper-driven background, a media player, an application launcher and a power menu, assembled from layers, widgets and data directories rather than a single stylesheet.

**Yujonpradhananga/Persona-Quickshell** — Persona 3 Reload Quickshell theme for Hyprland

- Repository: https://github.com/Yujonpradhananga/Persona-Quickshell
- Stars: 1,216 · Forks: 41
- Language: QML
- License: not declared
- Published: 2026-10-19 · Updated: 2026-10-19 · Language: en
- Canonical page: https://hysenlabs.com/projects/yujonpradhananga-persona-quickshell

## A Desktop Shell Written in QML

Persona Quickshell is a Persona 3 Reload themed shell for Hyprland, and the language it is written in is QML, which is the Qt Quick markup language. The Quickshell badge in the README points at the project it builds on, and the Hyprland badge marks the compositor it targets.

The scope is worth being clear about, because a theme in the wallpaper sense and a theme in the shell sense are different things. This is the second kind. It draws a background, a media player, an application launcher and a power menu, and it does that with the window management compositor underneath providing the actual windows.

So the result is a desktop where the chrome is a themed application rather than a set of styled panels, and the windows of the programs you actually run sit on top of it. That is why the project needs Hyprland specifically, and why the AppLauncher section later in the README is about a Hyprland keybind rather than a standalone shortcut.

The repository is a small set of directories, with shell.qml at the root and then Assets/, Data/, Layers/, Widgets/ and Tests/. So it is a QML project with a tests directory, which is unusual for a theme and suggests the author treats it as a project rather than a wallpaper pack.

## Assets, Data, Layers and Widgets

The directory names describe the anatomy of the shell, and the split is the design.

Assets/ holds the images and other resources the shell draws, which for a Persona themed shell means the character art, the wallpaper and the visual pieces. Data/ holds the data the shell reads, which is where content such as media or configuration lives rather than being baked into the interface code.

Layers/ is the term the project uses for the stacked background elements, and it is where the wallpaper engine sits. The README refers to a WallpaperEngine.qml file, and the Cava plugin section talks about removing lines from it, so the wallpaper engine is a QML file in that stack that composites the wallpaper, the visualiser and the rest of the background.

Widgets/ is the reusable piece: the media player, the app launcher and the power menu are widgets that the layers place, and the fact that they are separated is what lets the launcher be invoked on its own, which is exactly what the keybind does.

Tests/ is the least common directory in a theme repository, and its presence is a signal that the author wanted the QML to be checked somehow rather than only looked at.

## The Cava Plugin and the Lines You Can Delete

The one real dependency is a custom Cava plugin, linked in the README to a separate repository of the same author for a Qt 6 Cava plugin. Cava is the audio visualiser, so the plugin is what makes the shell react to sound.

The README is unusually helpful here, because it gives you both paths. You can build the plugin manually and go through the installation process, or you can delete the CavaVisualizer.qml file and remove the corresponding lines from the WallpaperEngine.qml file:

```qml
//delete these
CavaVisualizer {
  id: s1_cava
  anchors {
    left: parent.left
    right: parent.right
    top: parent.top
    topMargin: 0
  }
  height: 555
}
```

So the visualiser is one QML component with anchors and a fixed height, and removing it means deleting CavaVisualizer.qml and lines 171-180 of WallpaperEngine.qml. That is a good sign for a theme that depends on a plugin you may not be able to build, because the fallback is documented rather than implied.

The note about building the plugin manually, rather than installing it from a package, is a consequence of it being a custom Qt 6 plugin rather than a stock one, and the plugin repository link is where the build instructions live.

## The App Launcher Needs a Hyprland Keybind

The AppLauncher is the one part of the shell that cannot start itself, and the README explains why in a single line: it requires a hyprland keybind for it to work.

The example given is a Hyprland configuration snippet:

```lua
hl.bind(
    mainMod .. " + R",
    hl.dsp.exec_cmd("qs -c /path to where you have installed the repo/Persona-Quickshell/ ipc call searchapp toggle")
)
```

The command itself is the interesting part, because it shows how the shell is addressed. The qs executable is pointed at the theme directory with -c, which selects the configuration, and then ipc call searchapp toggle is sent to it. The toggle verb is what makes the keybind work as a toggle rather than a one-shot, so pressing the combination twice opens and closes the launcher.

The path in the example has a space in it, which is a detail worth copying rather than improvising, since the shell is addressed by a path rather than by a running service name, and a path with a space in it needs the quoting that the example does not show. The ipc call interface is also what an external script would use to drive the shell, so it is the integration point for anything you want to trigger from elsewhere.

## Where the Visual Pieces Come From

The credits section is where a project like this is honest about what it did and did not draw.

The wallpaper comes from a Steam Community shared file. The greyscale shader is taken from @snes19xx's surface-dots project, in the reading_mode.glsl file under a Hyprland shaders directory. The media player's album art implementation is taken from @Rexcrazy804's Zaphkiel. And there is a shoutout to @blairxu13's persona3-website.

The greyscale shader is the most interesting credit, because it is a filter that a theme applies to whatever is behind it, and taking one from another person's dot matrix shader is what gives the Persona look its texture. The Zaphkiel credit is the media player, which is the component with the most logic in it, since it has to fetch and display album art for whatever is playing.

So the project is an assembly: the theme's own work is the composition, the layout and the Persona styling, and the parts that are hard, the audio visualiser, the shader and the album art, are credited to the people who built them.

## The Power Menu and the loginctl Commands

The power menu is the shortest section in the README and the only one with a caveat.

It says the power menu currently uses loginctl commands, and that you are free to change them to your needs.

That is a small but significant statement. loginctl is the systemd utility for talking to the session manager, and it is the right tool for suspend, hibernate, power off and reboot on a systemd system. It is also the right tool only on a systemd system, and it is not what a user running a different init would want, nor what a user who wants the menu to offer a logout or a lock script would get by default.

So the note is telling you that the menu is wired to a specific set of commands on a specific platform, and that the shell is meant to be edited. That is consistent with the rest of the project, where the wallpaper plugin can be removed and the keybind is yours to write.

The power menu is also the piece with the highest consequence if it is wrong, since it is the interface to shutting the machine down, and the fact that the commands are documented as editable rather than presented as fixed is a reasonable signal to read them before you rely on them.

## What This Repository Is and Is Not

A theme repository like this is easy to misjudge, so it is worth being explicit about what it is.

It is a Quickshell configuration and a set of QML widgets, not a distribution of Hyprland. It does not install Quickshell, it does not install the Cava plugin for you, and it does not configure your keybinds. The README's job is to tell you what to do, and the actual work is three commands: run Quickshell with the theme, add the keybind, and either build the plugin or remove the visualiser block.

The licence is the MIT License, with the README adding feel free to use and modify as needed, which is the right licence for something people are expected to edit. The repository metadata does not classify it, which is a platform detail rather than a real difference.

The project publishes no GitHub releases, so the main branch is the version, and the last commit badge in the README is the visible sign of how current it is. The last push was on 2026-07-24.

The broader context is that Hyprland users build their desktops out of composable pieces, and a project like this is one of those pieces. It is a good example of the kind of thing that only exists because the compositor and the shell are separate and scriptable.

## Conclusion

Persona Quickshell fits a Hyprland user who wants a complete themed shell rather than a set of window decorations, and who is prepared to run Quickshell and, optionally, build a Cava plugin from source. It is a poor fit if you want only a colour scheme, since the theme is an application surface rather than a palette, and a poor fit if you do not use Hyprland, since the keybind and the shell integration are Hyprland specific. Before installing it, read the plugin section, because the audio visualiser is a separately built Qt 6 plugin and the README gives you the lines to remove if you would rather not build it. The project is MIT licensed, the last push was on 2026-07-24, and it publishes no GitHub releases.

## FAQ

### What is Persona Quickshell?

It is a Persona 3 Reload themed Quickshell shell for Hyprland, written in QML. The repository holds shell.qml plus Assets, Data, Layers, Widgets and Tests directories, and the shell draws a wallpaper driven background, a media player, an application launcher and a power menu.

### Does Persona Quickshell need a plugin?

It uses a custom Cava plugin for the audio visualiser, linked to a separate Qt 6 Cava plugin repository that you can build manually. If you would rather not build it, you can delete the CavaVisualizer.qml file and remove the CavaVisualizer block from the WallpaperEngine.qml file, as the README shows.

### How do I open the app launcher in Persona Quickshell?

You need a Hyprland keybind. The README example binds a combination to run `qs -c` with the path to the installed theme directory, followed by `ipc call searchapp toggle`, so pressing the key twice opens and closes the launcher.

### Which parts of the shell were taken from other projects?

The wallpaper comes from a Steam Community shared file, the greyscale shader from @snes19xx's surface-dots reading_mode.glsl, the media player's album art implementation from @Rexcrazy804's Zaphkiel, and the README gives a shoutout to @blairxu13's persona3-website.

### What does the power menu in Persona Quickshell do?

It currently uses loginctl commands, and the README says you are free to change them to your needs, which matters because loginctl is the systemd session tool and is not what a system running a different init would use.

## Sources

- [Issues](https://github.com/Yujonpradhananga/Persona-Quickshell/issues)
- [README](https://github.com/Yujonpradhananga/Persona-Quickshell/blob/main/README.md)
- [Yujonpradhananga/Persona-Quickshell on GitHub](https://github.com/Yujonpradhananga/Persona-Quickshell)

---

Hysen Labs editorial analysis, written from the project's own repository and release notes. Cite the canonical page: https://hysenlabs.com/projects/yujonpradhananga-persona-quickshell
