Commit Graph

13 Commits

Author SHA1 Message Date
karim faaba27ed4 Display arrangement persistence + centering fix, packaging hardening
- core/display.py: write_positions() persists Arrangement's drag-and-drop
  layout into niri's config.kdl (one output { position x= y= } per output),
  validated via `niri validate` on a temp copy with a .kdl.bak backup before
  writing — same pattern as core/keybindings.py's rebind(). Previously the
  page only ever called `niri msg output … position set`, which niri treats
  as live-only and drops on the next login/reload.
- gui/pages/display.py: Arrangement's Apply now runs each output's `niri msg
  output … position set` synchronously instead of queuing them all on the
  single-shot ProcessRunner (which rejects a second run() while the first is
  still async) — a 2-monitor apply previously moved only the first output
  and silently dropped the rest. _dock_to_nearest keeps the free axis at the
  dragged position (so a shorter display can sit vertically centered next to
  a taller rotated one) rather than forcing corner alignment.
- core/panel.py, files/__init__.py: incidental fixes alongside the above.
- packaging/: signing-key generation script + build-user systemd setup for
  the [tanin] AUR auto-rebuild pipeline; PKGBUILD bumped to pkgrel=5.
- src/taninux/browser/: new module for browser theme sync (Fuji accent).
2026-07-13 14:19:50 +02:00
karim 8fb8efcbbd packaging/iso: uninstall safety, fail-closed AUR updates, no sshd on live ISO
- tanin-greet.install: post_remove restores the previous greetd config —
  removing the package no longer leaves greetd pointing at a dead binary
- aur-autoupdate: skip packages when the AUR RPC is unreachable instead of
  building blind (fail closed)
- build-tanin-repo: per-package makepkg logs instead of >/dev/null
- live ISO: drop sshd.service enablement (root has an empty password on the
  live medium); encoded in bootstrap-profile.sh so it survives re-bootstrap
- gtklock config: de-personalize hardcoded /home/karim path, mark as
  not-yet-packaged reference
- tanin-desktop PKGBUILD: correct stale AUR-vs-extra comments (gtklock,
  awww, cliphist are in extra), document the eww-git provides=eww contract
- docs/distribution.md: mark SigLevel TrustAll as temporary/insecure, add
  repo-signing TODO (repo-add -s, SigLevel Required), tick done roadmap items
- tanin-calendar + niri-config.kdl: pending session work

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-02 21:22:20 +02:00
karim 774809a579 chore(repo): stop tracking build artifacts; add README, license metadata, ruff config
Untrack iso/out/ (3.4 GB ISO), packaging/*/pkg/ trees, *.pkg.tar.zst and
tanin-icons/src/ (529 files) and ignore them going forward. Files stay on
disk. NOTE: history still carries ~13 GiB of old ISO blobs — needs a
git filter-repo pass (see README/report).

Also: first README.md, license + license-files in pyproject, minimal ruff
config, demo scripts moved to scripts/demo/.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-02 21:21:28 +02:00
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
karim ca94a1828a iso: launch installer via greetd initial_session (proper seat for cage)
seatd alone didn't fix it (getty-autologin gives cage no logind seat; 5x respawn
then systemd start-limit -> black). Switch to greetd's initial_session, which
creates a real logind session WITH A SEAT and auto-runs cage+calamares (no login
prompt). Calamares' striplive restores the tanin-greet greetd config on the target.
Drop the getty-autologin + /root/.zprofile hack.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-20 02:43:09 +02:00
karim a1bd74ccd2 iso: cage needs a seat -> add+enable seatd (+ qt6-wayland for calamares)
VM test showed: boot menu (TANINUX branding ✓), root autologin ✓, motd ✓,
then cage failed: libseat 'Could not connect to /run/seatd.sock'. The getty
autologin has no logind seat, so run seatd in the live (disabled on the target,
where greetd uses logind). qt6-wayland so calamares (Qt) runs under cage.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-20 02:30:41 +02:00
karim 1b81ad4914 iso: fresh work dir each build (avoid stale-stage reuse) + modern bootmodes
mkarchiso reuses completed stages in the work dir -> a 'too short' build that
ships a stale airootfs. bootstrap now 'rm -rf' the work dir first. Also switch
profiledef bootmodes to the non-deprecated names (bios.syslinux, uefi.systemd-boot).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-20 02:09:54 +02:00
karim d7691994db iso: fix installer autostart (root uses zsh) + TANINUX branding
- /root/.zprofile launches tanin-installer on tty1 (root shell is zsh, so
  .bash_profile was ignored); striplive removes .zprofile on the target
- profiledef: MERGE releng's file_permissions (lost .automated_script.sh +x ->
  the 'permission denied' message) + keep our entries
- branding: TANINUX os-release/hostname/motd; bootstrap rebrands the boot menus

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-20 02:04:59 +02:00
karim 4389590294 iso: resolve jack/iptables provider prompts; calamares + waypaper deps in [tanin]
- packages.x86_64: add pipewire-jack + iptables (non-interactive provider choice)
- [tanin] now also hosts calamares, python-screeninfo, python-imageio-ffmpeg
  (waypaper's AUR deps) — all built without sudo

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-20 01:48:16 +02:00
karim ce5d8de7ad iso: calamares from [tanin] (AUR rebuild); document the build step
- packages.x86_64: calamares enabled (served from [tanin])
- finish/build-tanin-repo.sh: add calamares to the AUR rebuild list
- BUILD.md + manifest: calamares rebuild step + status

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-20 01:29:54 +02:00
karim c7039f13b9 iso: fix packages.x86_64 (no inline comments; gstreamer-vaapi -> gst-plugin-va)
Inline comments after a package name broke kitty/flatpak (became invalid
names with trailing whitespace). gstreamer-vaapi was removed from Arch.
calamares is AUR-only -> commented pending a [tanin] rebuild decision.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-19 22:34:35 +02:00
karim ac9b94b0b2 Complete archiso/Calamares profile scaffold (iso/)
- Calamares modules: unpackfs (clone), partition/mount/fstab (btrfs subvols),
  bootloader (systemd-boot + quiet splash), packages (strip live), services
  (greetd), shellprocess (snapper, flathub, strip-live), branding (Fuji)
- bootstrap-profile.sh: releng base + linux-zen swap + overlay our deltas
- BUILD.md: build steps, decisions, and honest open items (needs build-test)

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-19 19:55:46 +02:00
karim d32383ee6c Fonts + kitty config in the desktop
- tanin-eww: ship Fuji kitty.conf into skel (~/.config/kitty)
- add missing font deps to tanin-eww + tanin-desktop:
  ttc-iosevka-aile (bar's 'Iosevka Aile' UI font) + ttf-nerd-fonts-symbols
  ('Symbols Nerd Font' icon fallback). ttf-iosevka-nerd covers kitty.
- start archiso profile under iso/ (releng-base + overrides; systemd-boot,
  btrfs+snapshots, plymouth, linux-zen, Calamares clone-install)

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-19 19:51:25 +02:00