Installation
One script installs everything: setup. It installs the packages, copies
home/ into your home and system/ into /, builds two Hyprland plugins, and
sets up once what a copied file cannot hold. Nothing is linked. Every file is
a copy, and setup remembers what it wrote.
Requirements
Section titled “Requirements”- Arch Linux, with
gitto clone the repository. - Hyprland 0.56 or newer (tested on 0.56.2), configured in Lua.
- A terminal inside the Hyprland session. The plugins are built against the
compositor that is running, so
setupcannot build them from a TTY or from another desktop. - Your password, for sudo.
Install
Section titled “Install”-
Clone the repository and run the installer from a terminal in Hyprland:
Terminal window git clone https://github.com/andreumassanet/impasto.git ~/impastocd ~/impasto./setup install -
Answer pacman’s questions and give your password when sudo asks for it.
-
Log out and back in. The shell, the wallpaper daemon and the plugins start with the session, and the login screen with the next boot.
To see what would happen first, add --dry-run. It prints every package it
would install and every file it would write, and changes nothing.
./setup install --dry-runWhat it does, in order
Section titled “What it does, in order”| Step | What happens |
|---|---|
| Packages | Installs whatever packages/pacman.txt lists and is missing, with sudo pacman -S --needed. Then the AUR half, packages/aur.txt, through yay or paru. If you have neither, it offers to build yay-bin from the AUR. |
| User folders | Runs xdg-user-dirs-update, which creates the folders captures and recordings land in. Existing folders are never renamed. |
| oh-my-zsh | Clones oh-my-zsh into ~/.oh-my-zsh, with the zsh-autosuggestions and zsh-syntax-highlighting plugins. It is cloned rather than installed with its own script, because that script replaces ~/.zshrc. |
home/ | Copies every file into $HOME. The first time, it also renders the terminal greeting’s scenes (if ImageMagick is installed) and a minimal impasto icon theme. |
system/ | Copies the login screen’s theme and two configuration fragments into /, with sudo, and creates /var/lib/impasto/faces. Where no display manager is enabled yet, it enables sddm for the next boot. |
| Plugins | Builds and enables hypr-dynamic-cursors (shake to find) and hyprglass (glass on the windows) with hyprpm. |
| Extras | Sets up what a copied file cannot hold: what opens which file, dark GTK windows, the vector cursor, Thunar, VSCodium, Vesktop and Spotify. |
A file of yours that is already in the way is moved to
~/.local/state/impasto/backups/ before anything is written. See
Updating for how the copies are kept after that.
| Flag | Effect |
|---|---|
--skip-packages | Install nothing; copy and build only. |
--skip-system | Leave / alone: no login screen, and no password for it. |
--skip-plugins | Do not build the plugins: no shake to find, no glass. |
--aur-helper yay or paru | Which helper installs the AUR half. The one you have is used; if you have neither, this one is built from the AUR (yay if unset). |
--noconfirm | Take the default answer at every question, pacman’s and the helper’s included. |
-n, --dry-run | Say what would happen, and do none of it. |
What it asks for
Section titled “What it asks for”- sudo for pacman, to install the packages.
- sudo for the copy into
/, once, before the system files are written and sddm is enabled. - sudo for hyprpm, whose plugin store is root’s, under
/var/cache/hyprpm/. This is why the plugins need a terminal that can ask for a password. - Whether to build yay, only when neither yay nor paru is installed.
- Whether spicetify may patch Spotify, which makes
/opt/spotifywritable with sudo.
What it sets up once
Section titled “What it sets up once”The extras run once per machine. Each has a verb of its own —
./setup defaults, cursors, thunar, vscodium, vesktop and spotify —
and after the first time install and update leave them alone, so what you
change in those programs stays.
One that cannot run yet is skipped with the reason, and the next install or
update tries again:
- A program that is open: Thunar and Vesktop write their settings back while they run, and patching Spotify restarts it. Close it and update.
- A Spotify never started: spicetify needs the settings Spotify writes on its first start. Open it once, close it, and update.
- No network, for the cursor and VSCodium’s extensions.
Spotify is also patched again whenever a Spotify update has taken the patch away. Every extra is in The setup script, and what each program takes from the palette is in Applications.
The login screen
Section titled “The login screen”install copies the SDDM theme into /usr/share/sddm/themes/impasto/ and names
it in /etc/sddm.conf.d/10-impasto.conf. Where no display manager is enabled,
it enables sddm, which comes up at the next boot; a machine that already starts
another one keeps it. Lock and login
has the rest.
The face
Section titled “The face”The picture on the lock and login screens is
/var/lib/impasto/faces/<username>.face.icon; without one, both show your
initials. The directory belongs to root, so copy it in with sudo:
sudo install -m 644 ~/picture.png /var/lib/impasto/faces/$USER.face.iconsetup creates the directory and never removes it, not even on uninstall.
Next: First steps.
