Skip to content
GitHub

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.

  • Arch Linux, with git to 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 setup cannot build them from a TTY or from another desktop.
  • Your password, for sudo.
  1. Clone the repository and run the installer from a terminal in Hyprland:

    Terminal window
    git clone https://github.com/andreumassanet/impasto.git ~/impasto
    cd ~/impasto
    ./setup install
  2. Answer pacman’s questions and give your password when sudo asks for it.

  3. 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.

Terminal window
./setup install --dry-run
StepWhat happens
PackagesInstalls 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 foldersRuns xdg-user-dirs-update, which creates the folders captures and recordings land in. Existing folders are never renamed.
oh-my-zshClones 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.
PluginsBuilds and enables hypr-dynamic-cursors (shake to find) and hyprglass (glass on the windows) with hyprpm.
ExtrasSets 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.

FlagEffect
--skip-packagesInstall nothing; copy and build only.
--skip-systemLeave / alone: no login screen, and no password for it.
--skip-pluginsDo not build the plugins: no shake to find, no glass.
--aur-helper yay or paruWhich 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).
--noconfirmTake the default answer at every question, pacman’s and the helper’s included.
-n, --dry-runSay what would happen, and do none of it.
  • 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/spotify writable with sudo.

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.

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 lock screen and the login screen: the same clock, face and field.

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:

Terminal window
sudo install -m 644 ~/picture.png /var/lib/impasto/faces/$USER.face.icon

setup creates the directory and never removes it, not even on uninstall.

Next: First steps.