- gui/ui: native GTK4 widget vocabulary (.tn-*) behind the ui.* seam, default backend now native; style_apple.css design language - shell: sidebar/topbar/content all #0f0f0f in dark (matches eww panels) - new pages: wine, online_accounts - packaging: tanin-icons (accent folder theme), tanin-calendar, gtklock, taninux-gtk3-theme, flatpak install handler - iso/distro: profile + manifest tweaks (ISO binary not included)
6.7 KiB
camel — Distribution Manifest
Codename camel. The project/OS name is still provisional (taninux · tanin · or a later marketing name). Everything stable keys off the codename, not the name. Machine-readable source of truth:
camel.toml. Last reconciled 2026-06-17.
camel is not a fork. It's stock Arch Linux plus one extra binary repo
([tanin]) holding our own packages — the EndeavourOS/CachyOS model. A
Calamares installer lays down a ready-to-use niri + eww desktop managed by
the TANINUX apps.
Identity (Fuji palette)
Dark, monochrome, libadwaita, rounded, soft short shadows.
| Token | Value | Used by |
|---|---|---|
| accent | #a39ec4 (violet) |
greeter, eww (accent.sh), GTK |
| bg / fg | #0f0f0f / #f0f0f0 |
theme |
| UI font | Inter (Medium) | apps, bar |
| icon font | Iosevka Nerd Font | nf-md-* glyphs |
| icon theme | Adwaita + tanin-icons |
base + Fuji-accent folders (Tanin-<accent>) |
The stack (what it boots into)
| Layer | Choice | Package(s) |
|---|---|---|
| Display manager | greetd + custom GTK4 greeter (via cage) |
greetd, cage, tanin-greet |
| Compositor | niri (Wayland, niri-only) | niri |
| Bar/dock/panels | eww + Spotlight | eww, tanin-eww |
| Notifications | tiramisu (headless) + eww UI | tiramisu |
| Terminal | foot | foot |
| Wallpaper | waypaper (swaybg) + blurred Overview backdrop (awww) | waypaper, awww, imagemagick |
| Apps | tsettings · thub · taninux (TUI) | taninux |
| GTK4 theme | Fuji recolour, light + dark | tanin-libadwaita |
| Portals | gtk (dark mode) + gnome (screencast) | xdg-desktop-portal-{gtk,gnome} |
Compositor note: earlier docs (
docs/distribution.md, thetanin-desktopPKGBUILD) still say Hyprland. That is stale — the desktop is niri-only. Reconcile both against this manifest.
Package model
official Arch repos (core/extra/multilib) → everything standard
[tanin] (own binary repo) → our packages + rebuilt AUR deps
AUR → OPT-IN only (paru = optdepend)
Our packages ([tanin]):
| Package | Role | Status |
|---|---|---|
taninux |
tsettings + thub + TUI, helper, polkit, .desktop | ready |
tanin-greet |
custom GTK4 greeter for greetd → /etc/greetd/ |
ready (preview) |
tanin-libadwaita |
Fuji libadwaita recolour, light + dark (pills) | ready (preview) |
tanin-icons |
Adwaita overlay, folders recoloured per accent (Tanin-<accent>) |
ready |
tanin-eww |
eww bar/dock/panels + niri config → /usr/share/tanin/skel/.config |
ready |
tanin-setup |
seed ~/.config + enable session target |
ready |
tanin-desktop |
metapackage pulling the whole environment (niri) | ready |
Rebuilt AUR deps — the desktop's hard requirements that aren't in the
official repos. We rebuild them into [tanin] so tanin-desktop can hard-depend
on them without the AUR (binary repos must never need it): eww, tiramisu,
waypaper. (cliphist + cage are in extra — pulled from official repos.)
The full Arch package set (compositor, portals, audio, connectivity, fonts, …)
is enumerated under [packages.arch] in camel.toml and is the seed for the
archiso packages.x86_64.
Why these are first-class (not "just config")
Discovered from the live stack (eww launch.sh + scripts):
the bar genuinely shells out to eww · niri · jq · wpctl · cliphist · playerctl · bluetoothctl · nmcli · wl-clipboard · checkupdates · qalc · grim · flatpak · tiramisu. These map to the package set above; the AUR ones (eww/tiramisu/
waypaper/cliphist) are exactly why [tanin] must carry rebuilt AUR packages.
Delivery
- Foundation —
taninuxbuilds (makepkg -si). ✅ - Meta + config — ✅
tanin-eww,tanin-desktop(niri),tanin-greet,tanin-libadwaita,tanin-setup. Dotfiles ship to/usr/share/tanin/skel, never to/homeat package time;tanin-setupseeds them on first run. [tanin]repo —repo-add -sto build+sign the DB. Host as a Gitea/Forgejo Arch registry or a static dir behindtaninux.kgva.ch.- ISO — ✅ scaffolded in
iso/(archiso releng-base + overrides). Calamarespackagesmodule installstanin-desktop; greetd + tanin-greet enabled; session target wired.
Overview backdrop (blurred wallpaper)
niri's Overview shows a flat grey backdrop behind the zoomed-out workspaces. We
fill it with a blurred copy of the wallpaper via a second background surface:
awww (namespace awww-daemon) shows the blurred image, and a niri
layer-rule … place-within-backdrop true moves it into the backdrop (so the
sharp swaybg wallpaper stays on the desktop). niri has no blur of its own — the
copy is pre-blurred by ~/.config/eww/scripts/overview-backdrop.sh with
ImageMagick. Started via niri spawn-at-startup "… overview-backdrop.sh start"
and regenerated on each wallpaper change via waypaper's post_command.
Session / dark-mode fix
libadwaita apps read light/dark via org.freedesktop.portal.Settings, which
needs graphical-session.target active. tanin-setup installs
tanin-session.target; the shipped niri autostart must run:
dbus-update-activation-environment --systemd --all
systemctl --user start tanin-session.target
Open questions (decide before a release tag)
- Name: keep TANINUX, or split
app = tanin/OS = <marketing name>? - Repo hosting: Gitea Arch registry vs static dir behind
taninux.kgva.ch. - Signing: move
[tanin]toSigLevel = Required+ distribute the key. - AUR check: confirm which rebuilt-AUR entries are already in
extra. - Blur/shadow: niri
layer-ruleblur+shadow for eww layers (template is commented in the niri config).
Related
- App repo & packaging:
~/projects/taninux(this repo) - Desktop shell:
~/projects/eww— read itsHANDOVER.mdfirst - Older prose draft (Hyprland-era):
../docs/distribution.md