4.6 KiB
Install
./install.sh takes a machine with nothing but Arch on it to a running Blob
desktop. Every step is idempotent, reports what it did, and can be previewed
with --check.
Layout
| Path | Role |
|---|---|
install.sh |
flags and the order the steps run in |
install/helpers/lib.sh |
reporting, file copies, unit queries |
install/helpers/as-root.sh |
as_root, a no-op when already root |
install/steps/directories.sh |
the directories the shell and scripts expect |
install/steps/packages.sh |
repo and AUR packages, and the yay bootstrap |
install/steps/config.sh |
the BLOB_PATH symlink and everything under ~/.config |
install/steps/services.sh |
system services, systemd drop-ins, user units |
install/steps/login.sh |
SDDM, the session entry, and the first launch |
Steps
-
BLOB_PATHis symlinked to the checkout at~/.local/share/blob. Nothing underbin/,shell/,themes/ordefault/is ever copied. -
Directories are created, including
~/.config/systemd/user/app.slice.dand~/wallpapers. -
Packages come from
packages/blob.packagesandpackages/blob-aur.packages. A machine with no AUR helper getsyay-binbuilt once withmakepkg. See packages.md. -
Config is copied into
~/.config:hypr/, the themed app configs,blob/shell.json, the uwsm environment, and the icon font. -
User units land in
~/.config/systemd/userand are enabled, not started: they are allWantedBy=graphical-session.target, so they come up with the session.blob-speaker-tuning.serviceis left out, becauseblob-audio-tuninginstalls it only on machines with a tuning profile. -
systemd drop-ins are written under
/etc: the shutdown timeouts, the oomd pressure thresholds, the plocate prune paths, and the sleep hooks. -
System services are enabled: NetworkManager, resolved, bluetooth, cups, avahi, docker, power-profiles-daemon, and oomd.
NetworkManager-wait-online.serviceis masked so a slow DHCP lease cannot hold up the login screen. -
The login screen is SDDM. Three pieces have to be in place:
File Why /usr/local/share/wayland-sessions/blob.desktopthe session SDDM offers /etc/sddm.conf.d/zz-blob.confWayland greeter, run on Hyprland, stock theme, remember the last session /etc/sddm/hyprland-greeter.confthe greeter's own tiny Hyprland config The greeter config matters more than it looks: SDDM's stock Wayland greeter runs on
weston, which Blob does not install, so a default SDDM would fail to draw anything.sddm.serviceis enabled and the default systemd target is set tographical.target, which an Arch install without a display manager does not have.The
zz-prefix is load-bearing. SDDM reads/etc/sddm.conf.din alphabetical order and the last file wins, so a leftover10-wayland.conf,10-theme.conforautologin.conffrom another desktop would otherwise override Blob's. For the same reasonzz-blob.confblanksThemeandAutologin: a greeter pointed at an uninstalled theme, or an autologin pointed at a session entry that no longer exists, leaves SDDM on a black screen it never falls back from, and the only way in is a TTY.The Omarchy ISO wrote exactly such an autologin, owned by no package, so it outlives Omarchy. The installer reports it and overrides it; deleting it stops the warning:
sudo rm /etc/sddm.conf.d/autologin.conf--autologinwriteszzz-blob-autologin.conf, the only file that sorts afterzz-blob.conf. -
Launch. When the installer was run from a console and nothing graphical is running, it starts
sddm.serviceso the desktop appears without a reboot.--no-launchprints the command instead.--autologinwrites/etc/sddm.conf.d/99-blob-autologin.conffor the current user.
Flags
| Flag | Effect |
|---|---|
--check |
report every change, write nothing, exit 1 if anything differs |
--force |
overwrite files that differ from the repo copy |
--skip-packages |
directories, config and services only |
--autologin |
skip the SDDM prompt for this user |
--no-launch |
leave the login screen for the next reboot |
Uninstall
./uninstall.sh removes the config, the user units, the /etc drop-ins, the
session entry and the symlink, restoring any .bak the installer left.
--keep-session keeps the session entry and the SDDM config, --keep-state
keeps ~/.local/state/blob. sddm.service is left enabled either way, so the
machine still reaches a login screen.