A Hyprland shell whose colours come from a painting.
One black island that changes shape, a desk of widgets under the windows,
and every program around it repainted by whatever wallpaper is up.
Documentation · The island · The bar · The launcher · The desktop · Installation · Keys
The name is the technique the wallpapers are painted in: paint laid on thick
enough to keep the mark of the brush. It is a shell first and a dotfiles
repository second — home/.config/quickshell is most of the code, and the rest
of home/ is the desk around it: the terminal, the prompt, two editors, two
file managers, a browser, a chat client, the login screen. Change the
wallpaper and all of it follows.
The island
The island is one object that changes shape. A black capsule in the middle of the bar rests on the time and turns into everything else: the glance under the pointer, the control centre, the launcher, the overview, a notification, a game — each the size of what is in it, with no title and no close button. What is running sits either side of the time, and every module on the bar opens into the island rather than into a popup of its own.
The bar
Three styles, one layout. Pieces are dragged out of a catalogue onto a picture of the bar, then drawn grouped round the island, spread to the edges, or all inside one capsule. Each shows its symbol or its ring, with its figure always, never or under the pointer — two settings for the whole bar, and any piece can have a look of its own.
The launcher and the dock
The first character says what the field is for. Plain text searches
applications, = calculates, @ finds an open window, ! starts a countdown,
' is the clipboard history, and > is the shell itself — every panel and
setting by name. Applications are ranked by what you actually launch.
The dock holds what you pinned, then whatever else is open, and the same pins come first in the launcher. Right-click an icon for its windows by name.
The desktop
Any module can live on the wallpaper, on a grid, in four shapes: a square, a card, a large square and a band. Right-click the wallpaper to arrange — a card holds every module, a corner is pulled for another shape, and a click opens that widget's own look — for a photo widget, the picture of your own it holds.
Two themes on the same modules: Modern is a figure with a caption, Analogue draws each one as an object, and either is a choice per widget.
The palette comes out of the painting. Pick a wallpaper and its colours reach everything at once: the island and the widgets, the terminal and the prompt, btop, cava, yazi, neovim, VSCodium, the GTK, Qt and KDE windows, Thunar down to its folders, Vesktop, Zen and Spotify. Or pick one of nine palettes instead. The desk comes with forty paintings, in the style it is named after.
In the terminal, the prompt is laid out like the bar, and fa greets you with
fastfetch beside an animated scene drawn in pixel art out of the palette.
Notes and tasks
A note is paper: a pastel square with a title and the body in handwriting.
SUPER + S opens the deck; on the wallpaper a note sits on a square, or stacks
with others along an edge as tabs that peek out under the pointer.
A board for what has to be done. SUPER + K is to do, doing, done, with
cards dragged between the lanes, and a task's day shows as a dot under the
month wherever a month is drawn.
Games and pets
Eleven small games, played in the island — SUPER + G opens a shelf, and
the island becomes the board. A family of five small creatures lives on the
bar: one out at a time, earning levels from being fed and played with, each
hatched from an egg. Nothing dies, and a week away costs nothing.
Lock and login
The shell locks the session itself, over the blurred desk, and the login
screen is the same lock with the desk taken away: an SDDM theme with the same
clock, the same face and the same field. The face is your initials, or a
picture of yours at /var/lib/impasto/faces/<username>.face.icon.
Settings
Settings is the one panel that is not the island — an ordinary window where each option is drawn as the thing it changes, and profiles keep whole desks under names: Moon castle, Fuji and Night bay come with it.
Installation
Arch Linux, and Hyprland 0.56 or newer (tested on 0.56.2), configured in Lua. Run it from a terminal inside the Hyprland session — the plugins are built against the compositor that is running:
git clone https://github.com/andreumassanet/impasto.git ~/impasto
cd ~/impasto
./setup installIt installs the packages, oh-my-zsh, everything in home/ into your home and
everything in system/ into /, the two Hyprland plugins and the vector
cursor, and the login screen, switched on unless your machine already uses
another display manager. It sets up Thunar, VSCodium, Vesktop and Spotify, dark GTK
applications, and what opens which kind of file — leaving alone any your
machine already has an answer for. It asks for your password through sudo for
pacman, for the copy into /, and to let spicetify patch Spotify. A program
that is open, or a Spotify you have never started, is skipped with the reason
and set up by the next update. After that they follow the wallpaper on their
own; Spotify from its next start.
| Flag | |
|---|---|
--skip-packages | install nothing; copy and build only |
--skip-system | leave / alone — no login screen, and no password for it |
--skip-plugins | no shake to find, no glass |
--aur-helper yay|paru | which helper builds the AUR half — built from the AUR if you have neither |
--noconfirm | take the default at every question |
-n, --dry-run | say what would happen, and do none of it |
./setup update # git pull, then install again — the same flags
./setup uninstall # remove what it installed, and put back what it moved aside
./setup help # every verb and flagupdate follows the branch you cloned: main moves only when a version is
released, and work in progress lives on dev. The version installed is under
Settings → System.
Nothing is linked: setup copies, and remembers what it wrote. A file of
yours already in the way is moved to ~/.local/state/impasto/backups/ first; a
file you edit afterwards is left alone, with the new version beside it as
<name>.new. Editing the repository itself? ./setup sync copies it onto the
desk, and ./setup sync --watch keeps doing it on every save.
Every package is listed in packages/pacman.txt and packages/aur.txt, grouped
by what it is for; an optional one that is missing takes its own control away
rather than failing.
Components
| 🪟 | Compositor | Hyprland |
| 🖱️ | Shake to find | hypr-dynamic-cursors |
| 🫧 | Glass on the windows | hyprglass |
| 🐚 | Desktop shell | Quickshell |
| 🖼️ | Wallpaper daemon | awww |
| 🖥️ | Terminal | kitty |
| ⌨️ | Interactive shell | zsh · oh-my-zsh |
| ❯ | Prompt | starship |
| 🎨 | Greeting | fastfetch |
| 📊 | System monitor | btop |
| 🎵 | Audio visualiser | cava |
| 📁 | File manager | yazi |
| 🗂️ | File manager in a window | Thunar |
| ✏️ | Editor | neovim |
| 📝 | Editor in a window | VSCodium |
| 🖼️ | Image viewer | imv |
| 🪄 | Annotator | satty |
| 💬 | Chat | Vesktop |
| 🎧 | Player | Spotify · spicetify |
| 🌐 | Browser | Zen |
| 🔑 | Login screen | SDDM |
Keys
Every key belongs to a profile: Settings → Keys changes any of them, the compositor's included, and switching profile switches them all. A few worth knowing first:
- SUPER Return a terminal, SUPER Space the launcher, SUPER Q closes the window
- SUPER 1…0 a workspace, SUPER TAB all of them at once
- SUPER X the session menu, SUPER L locks
- SUPER H every other key, on the island
Credits
These are worth your time whether or not you use this repository. No code was copied from any of them; what carried over from the shells are ideas — one file per island state, one transient signal for every ephemeral event, input debounced to one frame, and a capture that photographs the screen and draws the selection on the photograph.
- saneAspect — the Hyprland setups on YouTube that started all this
- Tide-island — the closest thing to a complete dynamic island for Hyprland
- ChillPill-Shell — a dynamic pill bar built to stay light without a dedicated GPU
- k4 — a dynamic island bar with a documented plugin API
- HyprQuickshot and its fork HyprQuickFrame — a capture surface in Quickshell
- diegoMalagrida/dotfiles — an Arch Linux desk ready to install on a fresh system
Built on Quickshell and Hyprland. The pointer is Bibata, repainted; the folders are Papirus, re-pointed; the type is Inter and JetBrains Mono. Six of the nine palettes are other people's work, carried as they are: Catppuccin Mocha and Latte, Tokyo Night, Gruvbox, Nord and Rosé Pine.
License
Copyright © 2026 Andreu Massanet — released under the GNU GPL-3.0.
You may use, study, change and share any of it. If you build on it and pass the result on, it stays under the GPL and its source stays available. Keep the header at the top of each file, which carries this repository's address, and a line of credit back here is the kind thing to do.