101 lines
5.1 KiB
Markdown
101 lines
5.1 KiB
Markdown
|
|
# KDE theme + DuckSans + /etc/skel branding audit
|
||
|
|
|
||
|
|
**Agent 7 of 9-agent wave, 2026-05-05.**
|
||
|
|
|
||
|
|
## Catalog: what's currently shipped
|
||
|
|
|
||
|
|
| Component | Status | Path |
|
||
|
|
|---|---|---|
|
||
|
|
| Color scheme | shipped | `assets/kde/veilor-black.colors` → `/usr/share/color-schemes/` |
|
||
|
|
| System kdeglobals | shipped | `assets/kde/veilor-default.kdeglobals` → `/etc/xdg/kdedefaults/kdeglobals` |
|
||
|
|
| Breeze decoration override | shipped | `assets/kde/breezerc` → `/etc/xdg/breezerc` |
|
||
|
|
| Plasma containment defaults | shipped | written by `30-apply-v03-theme.sh` → `/etc/xdg/kdedefaults/plasma-org.kde.plasma.desktop-appletsrc` |
|
||
|
|
| Wallpaper (PNG+SVG) | shipped | `assets/wallpapers/veilor-black.{png,svg}` → `/usr/share/wallpapers/veilor-black/` |
|
||
|
|
| SDDM theme | shipped (full QML) | `assets/sddm/veilor-black/` → `/usr/share/sddm/themes/veilor-black/` |
|
||
|
|
| SDDM theme activation | shipped | `30-apply-v03-theme.sh` writes `/etc/sddm.conf.d/veilor-theme.conf` (Current=veilor-black) |
|
||
|
|
| Konsole profile + colorscheme | shipped | `assets/konsole/veilor.{profile,colorscheme}` → `/usr/share/konsole/Veilor.*` + `/etc/xdg/konsolerc` |
|
||
|
|
| Plymouth theme | shipped | `assets/plymouth/veilor/` |
|
||
|
|
| os-release branding | shipped | PRETTY_NAME="veilor-os 0.5.27", LOGO=veilor-logo |
|
||
|
|
| Fira Code fontconfig | shipped | `/etc/fonts/conf.d/55-veilor-firacode.conf` |
|
||
|
|
| DuckSans font | DEFERRED — empty dir, README only | |
|
||
|
|
|
||
|
|
## Drift inside active configs
|
||
|
|
|
||
|
|
- `overlay/etc/sddm.conf.d/veilor.conf` sets `[Theme] Current=breeze`.
|
||
|
|
- `30-apply-v03-theme.sh` then writes
|
||
|
|
`/etc/sddm.conf.d/veilor-theme.conf` with `Current=veilor-black`.
|
||
|
|
- SDDM merges alphabetically → `veilor-theme.conf` wins (loads after).
|
||
|
|
- Shipping a `Current=breeze` line in the overlay is misleading drift.
|
||
|
|
|
||
|
|
## Specific gaps preventing visual brand consistency
|
||
|
|
|
||
|
|
1. **No `/etc/skel/` whatsoever.** `overlay/etc/skel/` does not exist.
|
||
|
|
All KDE config lives in `/etc/xdg/kdedefaults/` and `/etc/xdg/*rc`.
|
||
|
|
Works for fresh boots, but the moment the user clicks anything in
|
||
|
|
System Settings, KDE writes `~/.config/kdeglobals` and silently
|
||
|
|
shadows the system defaults. **Zero per-user seeding** = one click
|
||
|
|
away from losing all branding.
|
||
|
|
|
||
|
|
2. **No PRETTY_NAME secondaries.** `/etc/system-release`, `/etc/issue`,
|
||
|
|
`/etc/issue.net`, `/etc/lsb-release` never written. `lsb_release
|
||
|
|
-a` reports Fedora. KDE About dialog uses os-release (OK) but TTY
|
||
|
|
login banner + many user-space tools read `/etc/system-release`.
|
||
|
|
|
||
|
|
3. **No `kwinrc` shipped.** Plasma 6 Wayland-specific defaults
|
||
|
|
(TitlebarDoubleClick, Compositor backend, FocusPolicy, animation
|
||
|
|
speed) not seeded. Vanilla Fedora KDE animations + click-to-focus
|
||
|
|
prevail.
|
||
|
|
|
||
|
|
4. **No panel layout** (`plasma-org.kde.plasma.desktop-appletsrc`
|
||
|
|
containment for panel). The file written by `30-apply-v03-theme.sh`
|
||
|
|
only seeds `[Containments][1]` (desktop containment) for wallpaper.
|
||
|
|
Actual Plasma panel containment (taskbar, system tray, clock,
|
||
|
|
kickoff icon) is unseeded → users get stock Fedora panel with
|
||
|
|
Fedora-blue kickoff button.
|
||
|
|
|
||
|
|
5. **DuckSans deferred but README claims it as the brand font.**
|
||
|
|
`kdeglobals`, Konsole, SDDM all hardcode `Fira Code`. If DuckSans
|
||
|
|
ever ships, ten files need synchronized edits.
|
||
|
|
|
||
|
|
6. **`overlay/etc/sddm.conf.d/veilor.conf` says `Current=breeze`** —
|
||
|
|
internal contradiction with script-written `veilor-theme.conf`.
|
||
|
|
Cosmetic but confusing.
|
||
|
|
|
||
|
|
7. **`kde-theme-apply.sh` has `warn()` undefined** (line 64) — calls
|
||
|
|
`warn` but only `ok`/`info` defined. If os-release source ever
|
||
|
|
goes missing, script crashes with `command not found`.
|
||
|
|
|
||
|
|
## Top 5 `/etc/skel/` additions (highest impact, lowest effort)
|
||
|
|
|
||
|
|
1. **`/etc/skel/.config/kdeglobals`** — copy of
|
||
|
|
`assets/kde/veilor-default.kdeglobals`. Single highest-impact file:
|
||
|
|
locks ColorScheme, AccentColor, Font, Icons.Theme,
|
||
|
|
LookAndFeelPackage into the user's first-write file so System
|
||
|
|
Settings interaction won't revert anything to Breeze defaults.
|
||
|
|
|
||
|
|
2. **`/etc/skel/.config/konsolerc`** — `[Desktop Entry]
|
||
|
|
DefaultProfile=Veilor.profile` plus `[KonsoleWindow]
|
||
|
|
ShowMenuBarByDefault=false`. Per-user override of system konsolerc;
|
||
|
|
ensures first konsole launch is branded even if user's home
|
||
|
|
pre-exists.
|
||
|
|
|
||
|
|
3. **`/etc/skel/.config/kwinrc`** — Plasma 6 Wayland defaults:
|
||
|
|
`[Compositing] AnimationSpeed=0`, `[Windows]
|
||
|
|
FocusPolicy=ClickToFocus`, `[Plugins] blurEnabled=false` (mirrors
|
||
|
|
the no-animations Breeze override).
|
||
|
|
|
||
|
|
4. **`/etc/skel/.config/plasma-org.kde.plasma.desktop-appletsrc`** —
|
||
|
|
full containment file with both desktop containment
|
||
|
|
(wallpaper=veilor-black) AND panel containment (kickoff icon =
|
||
|
|
`/usr/share/pixmaps/veilor-logo.svg`, panel height/position).
|
||
|
|
Without this, the taskbar is vanilla Fedora.
|
||
|
|
|
||
|
|
5. **`/etc/skel/.local/share/konsole/Veilor.profile`** — local copy so
|
||
|
|
user-local konsole sees the profile in its dropdown without needing
|
||
|
|
`/usr/share/konsole/` walk. Pair with #2.
|
||
|
|
|
||
|
|
**Bonus near-zero-effort:** write `/etc/system-release`, `/etc/issue`,
|
||
|
|
and `/etc/lsb-release` in `kde-theme-apply.sh` to close the
|
||
|
|
lsb_release/TTY-banner gap. And fix the undefined `warn()` in
|
||
|
|
`kde-theme-apply.sh:64`.
|