Files
taninux/distro/MANIFEST.md
T
karim e8d93e6b1d gui: native libadwaita-free UI backend + dark shell; packaging/iso updates
- 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)
2026-06-25 00:40:21 +02:00

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, the tanin-desktop PKGBUILD) 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

  1. Foundationtaninux builds (makepkg -si).
  2. Meta + config tanin-eww, tanin-desktop (niri), tanin-greet, tanin-libadwaita, tanin-setup. Dotfiles ship to /usr/share/tanin/skel, never to /home at package time; tanin-setup seeds them on first run.
  3. [tanin] reporepo-add -s to build+sign the DB. Host as a Gitea/Forgejo Arch registry or a static dir behind taninux.kgva.ch.
  4. ISO scaffolded in iso/ (archiso releng-base + overrides). Calamares packages module installs tanin-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] to SigLevel = Required + distribute the key.
  • AUR check: confirm which rebuilt-AUR entries are already in extra.
  • Blur/shadow: niri layer-rule blur+shadow for eww layers (template is commented in the niri config).
  • App repo & packaging: ~/projects/taninux (this repo)
  • Desktop shell: ~/projects/eww — read its HANDOVER.md first
  • Older prose draft (Hyprland-era): ../docs/distribution.md