v0.3 theme: match onyx exactly — solid black wallpaper, Linux Konsole scheme, Breeze_Light cursor

Onyx uses Plasma's org.kde.color plugin for solid #000000 (no SVG/image),
default Konsole 'Linux' palette, Breeze_Light cursor, IAX kwin buttons.
Removed wallpaper SVG (not used). Added plasma-desktop.conf snippet +
kdedefaults override for new users.
This commit is contained in:
veilor-org 2026-04-30 17:18:14 +01:00
parent 084582e0e5
commit d2649fb335
18 changed files with 968 additions and 0 deletions

60
assets/kde/breezerc Normal file
View file

@ -0,0 +1,60 @@
# veilor-os — Breeze window decoration override
# Tighter borders, solid black title bar, minimal buttons, smallest border.
# Merged into /etc/xdg/breezerc (system default) by 30-apply-v03-theme.sh.
[Common]
# Tighter outline; subtle separator only when active.
OutlineCloseButton=false
ShadowSize=ShadowSmall
ShadowStrength=128
ShadowColor=0,0,0
[Windeco]
# Border thickness: smallest available (= "None" leaves only resize edge,
# "NoSides" keeps top/bottom only). We pick "None" for the tightest look,
# matching the black-on-black aesthetic.
BorderSize=None
ButtonSize=ButtonSmall
CloseButton=true
DrawBackgroundGradient=false
DrawBorderOnMaximizedWindows=false
DrawSizeGrip=false
DrawTitleBarSeparator=false
ExceptionType=0
HideTitleBar=false
OpaqueTitleBar=true
TitleAlignment=AlignCenter
UseBackgroundGradient=false
UseTitleBarColor=true
# Buttons: minimal — close / max / min only, no shade/help/keep-above.
ButtonsOnLeft=M
ButtonsOnRight=IAX
[Style]
# Disable per-app blur, transparency, and gradient effects.
MenuOpacity=100
WindowDragMode=1
ScrollBarAddLineButtons=0
ScrollBarSubLineButtons=0
SidePanelDrawFrame=false
SliderDrawTickMarks=false
TabBarDrawCenteredTabs=true
ToolBarDrawItemSeparator=false
DockWidgetDrawFrame=false
ProgressBarAnimated=false
AnimationsEnabled=false
StackedWidgetDrawFrame=false
# ── Active / inactive title bar colors (override Breeze defaults) ──
# kdeglobals [WM] section is the canonical source; these mirror it here
# so apps that only read breezerc see consistent values.
[Windeco][Active]
TitleBarColor=0,0,0
TitleBarTextColor=216,216,216
TitleBarBorderColor=104,107,111
[Windeco][Inactive]
TitleBarColor=15,17,18
TitleBarTextColor=161,169,177
TitleBarBorderColor=42,46,50

View file

@ -0,0 +1,9 @@
# veilor-os default desktop config — solid black wallpaper (matches onyx).
# Plasma uses `wallpaperplugin=org.kde.color` (not org.kde.image) — pure
# black solid color rendering, no SVG asset needed.
# Applied via 30-apply-v03-theme.sh into ~/.config/plasma-org.kde.plasma.desktop-appletsrc
# default for new users.
[Containments][Wallpaper]
wallpaperplugin=org.kde.color
Color=0,0,0

View file

@ -16,3 +16,14 @@ Theme=breeze-dark
LookAndFeelPackage=org.kde.breezedark.desktop LookAndFeelPackage=org.kde.breezedark.desktop
SingleClick=false SingleClick=false
contrast=4 contrast=4
widgetStyle=Breeze
[Mouse]
cursorTheme=Breeze_Light
cursorSize=24
[KDecoration]
theme=Breeze
ButtonsOnLeft=
ButtonsOnRight=IAX
BorderSize=None

View file

@ -0,0 +1,104 @@
[General]
Anchor=0.5,0.5
Blur=false
ColorRandomization=false
Description=Veilor
FillStyle=Tile
Opacity=1
Wallpaper=
WallpaperFlipType=NoFlip
WallpaperOpacity=1
[Background]
Color=0,0,0
[BackgroundFaint]
Color=0,0,0
[BackgroundIntense]
Color=15,17,18
[Foreground]
Color=216,216,216
[ForegroundFaint]
Color=161,169,177
[ForegroundIntense]
Color=236,236,236
# ── Standard ANSI palette (muted, desaturated) ──
# Veilor aesthetic: no neon. Reds tone-shifted toward bordeaux, greens
# toward sage, blues toward slate. Greys lifted to remain readable.
[Color0]
Color=27,27,27
[Color0Faint]
Color=20,20,20
[Color0Intense]
Color=58,58,58
[Color1]
Color=176,55,69
[Color1Faint]
Color=130,40,52
[Color1Intense]
Color=205,87,99
[Color2]
Color=102,138,90
[Color2Faint]
Color=78,107,68
[Color2Intense]
Color=141,176,128
[Color3]
Color=185,158,98
[Color3Faint]
Color=140,118,72
[Color3Intense]
Color=216,193,134
[Color4]
Color=92,116,143
[Color4Faint]
Color=68,87,107
[Color4Intense]
Color=131,154,182
[Color5]
Color=141,113,150
[Color5Faint]
Color=104,84,112
[Color5Intense]
Color=176,148,186
[Color6]
Color=99,144,148
[Color6Faint]
Color=72,107,110
[Color6Intense]
Color=139,180,184
[Color7]
Color=200,200,200
[Color7Faint]
Color=161,169,177
[Color7Intense]
Color=236,236,236

View file

@ -0,0 +1,55 @@
[General]
Name=Veilor
Parent=FALLBACK/
Command=/bin/bash
Directory=
Icon=utilities-terminal
LocalTabTitleFormat=%w
RemoteTabTitleFormat=(%u) %h
ShowTerminalSizeHint=false
StartInCurrentSessionDir=true
TerminalCenter=false
TerminalMargin=4
[Appearance]
ColorScheme=Linux
Font=Fira Code,11,-1,5,400,0,0,0,0,0,0,0,0,0,0,1
LineSpacing=1
UseFontLineCharacters=true
[Cursor Options]
CursorShape=0
UseCustomCursorColor=true
CustomCursorColor=104,107,111
CustomCursorTextColor=216,216,216
[Scrolling]
HistoryMode=2
HistorySize=10000
ScrollBarPosition=2
HighlightScrolledLines=false
[Terminal Features]
BellMode=3
BlinkingCursorEnabled=false
BlinkingTextEnabled=false
FlowControlEnabled=false
UrlHintsModifiers=67108864
ReverseUrlHints=false
VerticalLine=false
[Interaction Options]
AutoCopySelectedText=false
CopyTextAsHTML=false
TrimLeadingSpacesInSelectedText=false
TrimTrailingSpacesInSelectedText=true
UnderlineFilesEnabled=true
UnderlineLinksEnabled=true
OpenLinksByDirectClickEnabled=false
WordCharacters=:@-./_~?&=%+#
[Encoding Options]
DefaultEncoding=UTF-8
[Keyboard]
KeyBindings=default

View file

@ -0,0 +1,8 @@
[Plymouth Theme]
Name=veilor
Description=veilor-os boot splash — black background, centered wordmark, slow pulse dot
ModuleName=script
[script]
ImageDir=/usr/share/plymouth/themes/veilor
ScriptFile=/usr/share/plymouth/themes/veilor/veilor.script

View file

@ -0,0 +1,114 @@
// veilor-os Plymouth boot splash
// minimal: pure black background, centered "veilor" wordmark, single
// slowly-pulsing dot underneath. no fedora f, no spinning bar.
//
// Plymouth script reference: https://www.freedesktop.org/wiki/Software/Plymouth/Scripts/
// ── Background: pure black ──────────────────────────────────────────────
Window.SetBackgroundTopColor (0.0, 0.0, 0.0);
Window.SetBackgroundBottomColor(0.0, 0.0, 0.0);
screen_w = Window.GetWidth();
screen_h = Window.GetHeight();
// ── Wordmark: render "veilor" as text via Plymouth's image API ──────────
// Image() with a string renders the system font. Color is white (216/255).
wordmark.image = Image.Text("veilor", 0.847, 0.847, 0.847, 1.0, "Sans 28");
wordmark.sprite = Sprite(wordmark.image);
wordmark.sprite.SetX((screen_w - wordmark.image.GetWidth()) / 2);
wordmark.sprite.SetY((screen_h - wordmark.image.GetHeight()) / 2 - 12);
wordmark.sprite.SetOpacity(0.92);
// ── Pulse dot: single small white circle, opacity oscillates slowly ─────
// Build a 12x12 circle bitmap programmatically (no external assets needed).
dot_size = 12;
dot.image = Image("dot.png");
if (!dot.image) {
// Plymouth can't draw arbitrary shapes from script; if dot.png is
// missing, fall back to a small text bullet which the system font
// will render as a centered glyph. Keeps the theme self-contained.
dot.image = Image.Text("●", 0.847, 0.847, 0.847, 1.0, "Sans 18");
}
dot.sprite = Sprite(dot.image);
dot.sprite.SetX((screen_w - dot.image.GetWidth()) / 2);
dot.sprite.SetY((screen_h - dot.image.GetHeight()) / 2 + wordmark.image.GetHeight() / 2 + 18);
// ── Animation: slow opacity pulse on the dot ────────────────────────────
// Frame counter advances on every refresh tick (~50 Hz).
pulse_phase = 0;
fun refresh_callback() {
pulse_phase++;
// 240-tick cycle ≈ 4.8 s. sin-like via fractional triangle wave.
cycle = pulse_phase % 240;
half = 120;
if (cycle < half)
ratio = cycle / half;
else
ratio = (240 - cycle) / half;
// map 0..1 to opacity 0.25..0.95
opacity = 0.25 + ratio * 0.70;
dot.sprite.SetOpacity(opacity);
}
Plymouth.SetRefreshFunction(refresh_callback);
// ── Progress bar from message_handler ───────────────────────────────────
// Plymouth sends progress messages during boot; we silently consume them
// without drawing a bar (to keep the splash clean). Override as needed.
fun message_callback(text) {
// intentionally silent — keep splash uncluttered. Reserved for future
// status-line overlay if requested.
}
Plymouth.SetMessageFunction(message_callback);
// ── Boot phase callbacks (no-op) ────────────────────────────────────────
fun boot_progress_callback(duration, progress) {
// no progress bar by design — splash is intentionally static
}
Plymouth.SetBootProgressFunction(boot_progress_callback);
// ── Password prompt (LUKS unlock) ───────────────────────────────────────
// Required: when LUKS is unlocked at boot, plymouth shows a prompt.
// We render a minimal centered prompt under the dot.
prompt.label_image = NULL;
prompt.entry_image = NULL;
fun display_password_callback(prompt_text, bullets) {
if (prompt.label_image)
prompt.label_image = NULL;
if (prompt.entry_image)
prompt.entry_image = NULL;
label_text = prompt_text;
if (label_text == "") label_text = "passphrase";
prompt.label_image = Image.Text(label_text, 0.63, 0.63, 0.63, 1.0, "Sans 12");
prompt.label_sprite = Sprite(prompt.label_image);
prompt.label_sprite.SetX((screen_w - prompt.label_image.GetWidth()) / 2);
prompt.label_sprite.SetY(screen_h * 0.65);
bullet_text = "";
i = 0;
while (i < bullets) {
bullet_text += "•";
i++;
}
if (bullet_text == "") bullet_text = " ";
prompt.entry_image = Image.Text(bullet_text, 0.847, 0.847, 0.847, 1.0, "Sans 18");
prompt.entry_sprite = Sprite(prompt.entry_image);
prompt.entry_sprite.SetX((screen_w - prompt.entry_image.GetWidth()) / 2);
prompt.entry_sprite.SetY(screen_h * 0.65 + 24);
}
Plymouth.SetDisplayPasswordFunction(display_password_callback);
fun display_normal_callback() {
if (prompt.label_image) { prompt.label_image = NULL; prompt.label_sprite = NULL; }
if (prompt.entry_image) { prompt.entry_image = NULL; prompt.entry_sprite = NULL; }
}
Plymouth.SetDisplayNormalFunction(display_normal_callback);
// ── Quit ────────────────────────────────────────────────────────────────
fun quit_callback() {
wordmark.sprite.SetOpacity(0);
dot.sprite.SetOpacity(0);
}
Plymouth.SetQuitFunction(quit_callback);

View file

@ -0,0 +1,155 @@
// veilor-os SDDM login theme "veilor-black"
// Minimal black-on-black login screen. Single password field, admin
// pre-filled. Fira Code throughout. Grey accent (#686B6F) on focus.
//
// SDDM QML reference: https://github.com/sddm/sddm/wiki/Themes
import QtQuick 2.15
import QtQuick.Controls 2.15
import QtQuick.Layouts 1.15
import SddmComponents 2.0
Rectangle {
id: root
width: 1920
height: 1080
color: "#000000"
// Fixed user admin only (matches kickstart user creation)
property string fixedUser: "admin"
// Palette (mirrors veilor-black.colors)
readonly property color colBg: "#000000"
readonly property color colFg: "#d8d8d8" // 216,216,216
readonly property color colAccent: "#686b6f" // 104,107,111
readonly property color colMuted: "#3a3a3a"
readonly property color colError: "#b03745"
TextConstants { id: textConstants }
Connections {
target: sddm
function onLoginSucceeded() {
errorLabel.text = ""
}
function onLoginFailed() {
errorLabel.text = textConstants.loginFailed
passwordField.text = ""
passwordField.focus = true
}
}
// Wordmark
Text {
id: wordmark
anchors.horizontalCenter: parent.horizontalCenter
anchors.verticalCenter: parent.verticalCenter
anchors.verticalCenterOffset: -120
text: "veilor"
color: colFg
opacity: 0.85
font.family: "Fira Code"
font.pixelSize: 32
font.weight: Font.Light
}
// Login form
Column {
id: form
anchors.horizontalCenter: parent.horizontalCenter
anchors.verticalCenter: parent.verticalCenter
anchors.verticalCenterOffset: -10
spacing: 12
width: 320
Text {
anchors.horizontalCenter: parent.horizontalCenter
text: root.fixedUser
color: colAccent
font.family: "Fira Code"
font.pixelSize: 13
font.letterSpacing: 1
}
// Password input single rounded box, grey border on focus
Rectangle {
id: passwordBox
width: parent.width
height: 44
radius: 4
color: colBg
border.width: 1
border.color: passwordField.focus ? colAccent : colMuted
TextInput {
id: passwordField
anchors.fill: parent
anchors.leftMargin: 12
anchors.rightMargin: 12
verticalAlignment: TextInput.AlignVCenter
color: colFg
selectionColor: colAccent
selectedTextColor: colFg
echoMode: TextInput.Password
passwordCharacter: "•"
font.family: "Fira Code"
font.pixelSize: 14
clip: true
focus: true
activeFocusOnTab: true
Keys.onPressed: function(event) {
if (event.key === Qt.Key_Return || event.key === Qt.Key_Enter) {
sddm.login(root.fixedUser, passwordField.text, sessionCombo.currentIndex)
event.accepted = true
}
}
Text {
anchors.fill: parent
verticalAlignment: Text.AlignVCenter
text: "passphrase"
color: colMuted
font.family: "Fira Code"
font.pixelSize: 14
visible: passwordField.text.length === 0 && !passwordField.focus
}
}
}
Text {
id: errorLabel
anchors.horizontalCenter: parent.horizontalCenter
text: ""
color: colError
font.family: "Fira Code"
font.pixelSize: 11
visible: text.length > 0
}
// Hidden session selector defaults to first (Plasma)
ComboBox {
id: sessionCombo
visible: false
model: sessionModel
textRole: "name"
currentIndex: sessionModel.lastIndex
}
}
// Footer
Text {
anchors.horizontalCenter: parent.horizontalCenter
anchors.bottom: parent.bottom
anchors.bottomMargin: 24
text: "veilor-os"
color: colMuted
font.family: "Fira Code"
font.pixelSize: 10
font.letterSpacing: 2
}
Component.onCompleted: {
passwordField.forceActiveFocus()
}
}

View file

@ -0,0 +1,16 @@
[SddmGreeterTheme]
Name=veilor-black
Description=veilor-os login theme black background, grey accent, single passphrase prompt
Author=veilor-os
Copyright=(c) veilor-os
License=MIT
Type=sddm-theme
Version=0.3
Website=https://github.com/veilor-org/veilor-os
Screenshot=
MainScript=Main.qml
ConfigFile=theme.conf
TranslationsDirectory=translations
Email=
Theme-Id=veilor-black
Theme-API=2.0

View file

@ -0,0 +1,10 @@
[General]
# veilor-black SDDM theme — black background, grey accent, Fira Code
background=
type=color
color=#000000
fontFamily=Fira Code
fontSize=12
foreground=#d8d8d8
accent=#686b6f
muted=#3a3a3a

205
scripts/30-apply-v03-theme.sh Executable file
View file

@ -0,0 +1,205 @@
#!/usr/bin/env bash
# veilor-os — v0.3 theme polish: Plymouth, SDDM, Konsole, wallpaper, Breeze
# Idempotent. Run as root during %post (chroot) or post-install.
# Tools missing in the build chroot (e.g. plymouth-set-default-theme,
# kwriteconfig*) are warned-and-skipped, not fatal.
set -uo pipefail
GREEN='\033[0;32m'; YELLOW='\033[1;33m'; RED='\033[0;31m'; NC='\033[0m'
ok() { echo -e "${GREEN}[OK]${NC} $*"; }
info() { echo -e "${YELLOW}[INFO]${NC} $*"; }
warn() { echo -e "${YELLOW}[WARN]${NC} $*"; }
err() { echo -e "${RED}[ERR]${NC} $*"; }
[[ $EUID -eq 0 ]] || { err "Must run as root"; exit 1; }
REPO="${VEILOR_REPO:-/usr/share/veilor-os}"
ASSETS="$REPO/assets"
if [[ ! -d $ASSETS ]]; then
err "asset tree not found at $ASSETS — aborting"
exit 1
fi
echo "════════════════════════════════════════════════════════"
echo " veilor-os :: 30-apply-v03-theme"
echo "════════════════════════════════════════════════════════"
# ─────────────────────────────────────────────────────────────────────
# 1. Plymouth boot splash
# ─────────────────────────────────────────────────────────────────────
info "Plymouth: installing veilor theme"
PLY_SRC="$ASSETS/plymouth/veilor"
PLY_DST="/usr/share/plymouth/themes/veilor"
if [[ -d $PLY_SRC ]]; then
install -d -m 0755 "$PLY_DST"
cp -af "$PLY_SRC/." "$PLY_DST/"
chmod 0644 "$PLY_DST/"*
ok "plymouth files copied to $PLY_DST"
if command -v plymouth-set-default-theme &>/dev/null; then
plymouth-set-default-theme -R veilor 2>/dev/null \
&& ok "plymouth default theme = veilor (initramfs rebuilt)" \
|| warn "plymouth-set-default-theme failed — set manually post-install"
else
warn "plymouth-set-default-theme not present (build chroot?) — skipping default-theme set"
# Fall back: write theme name to plymouth config so dracut picks it up
# next time initramfs is regenerated.
if [[ -f /etc/plymouth/plymouthd.conf ]]; then
sed -i 's/^Theme=.*/Theme=veilor/' /etc/plymouth/plymouthd.conf
else
install -d -m 0755 /etc/plymouth
cat > /etc/plymouth/plymouthd.conf << 'EOF'
[Daemon]
Theme=veilor
EOF
fi
ok "plymouth Theme= written to /etc/plymouth/plymouthd.conf"
fi
else
warn "plymouth source dir missing at $PLY_SRC — skipping"
fi
# ─────────────────────────────────────────────────────────────────────
# 2. SDDM theme
# ─────────────────────────────────────────────────────────────────────
info "SDDM: installing veilor-black theme"
SDDM_SRC="$ASSETS/sddm/veilor-black"
SDDM_DST="/usr/share/sddm/themes/veilor-black"
if [[ -d $SDDM_SRC ]]; then
install -d -m 0755 "$SDDM_DST"
cp -af "$SDDM_SRC/." "$SDDM_DST/"
chmod 0644 "$SDDM_DST/"*
ok "sddm theme copied to $SDDM_DST"
install -d -m 0755 /etc/sddm.conf.d
# Preserve other sddm.conf.d/*.conf entries; this file owns [Theme] only.
cat > /etc/sddm.conf.d/veilor-theme.conf << 'EOF'
# veilor-os v0.3 — set veilor-black SDDM theme as default (matches onyx)
[Theme]
Current=veilor-black
CursorTheme=Breeze_Light
Font=Fira Code
EOF
ok "sddm theme set in /etc/sddm.conf.d/veilor-theme.conf"
else
warn "sddm source dir missing at $SDDM_SRC — skipping"
fi
# ─────────────────────────────────────────────────────────────────────
# 3. Konsole profile + colorscheme
# ─────────────────────────────────────────────────────────────────────
info "Konsole: installing Veilor profile + colorscheme"
KONS_SRC="$ASSETS/konsole"
if [[ -d $KONS_SRC ]]; then
install -d -m 0755 /usr/share/konsole
install -m 0644 "$KONS_SRC/veilor.profile" /usr/share/konsole/Veilor.profile
install -m 0644 "$KONS_SRC/veilor.colorscheme" /usr/share/konsole/Veilor.colorscheme
ok "konsole profile + colorscheme installed"
# Set as default in /etc/xdg/konsolerc (system-wide). Idempotent rewrite
# of the [Desktop Entry] section's DefaultProfile key.
install -d -m 0755 /etc/xdg
if [[ -f /etc/xdg/konsolerc ]]; then
# Remove any existing DefaultProfile= line, then re-add under [Desktop Entry].
if grep -q '^\[Desktop Entry\]' /etc/xdg/konsolerc; then
sed -i '/^DefaultProfile=/d' /etc/xdg/konsolerc
sed -i '/^\[Desktop Entry\]/a DefaultProfile=Veilor.profile' /etc/xdg/konsolerc
else
printf '\n[Desktop Entry]\nDefaultProfile=Veilor.profile\n' >> /etc/xdg/konsolerc
fi
else
cat > /etc/xdg/konsolerc << 'EOF'
[Desktop Entry]
DefaultProfile=Veilor.profile
[KonsoleWindow]
ShowMenuBarByDefault=false
ShowWindowTitleOnTitleBar=true
[TabBar]
TabBarVisibility=AlwaysHideTabBar
EOF
fi
ok "konsole default profile set in /etc/xdg/konsolerc"
else
warn "konsole source dir missing at $KONS_SRC — skipping"
fi
# ─────────────────────────────────────────────────────────────────────
# 4. Wallpaper — solid black (matches onyx, no SVG asset)
# ─────────────────────────────────────────────────────────────────────
info "Wallpaper: setting Plasma default to org.kde.color (solid black)"
# onyx uses `wallpaperplugin=org.kde.color` + `Color=0,0,0` — pure black
# rendered by Plasma's color plugin, no image asset needed.
# Apply via system-wide kdedefaults so new users inherit.
KDD=/etc/xdg/kdedefaults
install -d -m 0755 "$KDD"
cat > "$KDD/plasma-org.kde.plasma.desktop-appletsrc" << 'EOF'
[Containments][1]
plugin=org.kde.desktopcontainment
wallpaperplugin=org.kde.color
[Containments][1][Wallpaper][org.kde.color][General]
Color=0,0,0
EOF
ok "default wallpaper = solid #000000 (Plasma color plugin)"
# ─────────────────────────────────────────────────────────────────────
# 5. Breeze decoration override
# ─────────────────────────────────────────────────────────────────────
info "Breeze: installing veilor decoration override"
BRZ_SRC="$ASSETS/kde/breezerc"
BRZ_DST="/etc/xdg/breezerc"
if [[ -f $BRZ_SRC ]]; then
install -d -m 0755 /etc/xdg
install -m 0644 "$BRZ_SRC" "$BRZ_DST"
ok "breezerc installed at $BRZ_DST"
# Also reflect title bar / button settings into kdeglobals so KWin
# picks up the same values without users running kde-theme-apply.sh.
KDG="/etc/xdg/kdedefaults/kdeglobals"
if [[ -f $KDG ]]; then
if ! grep -q '^\[KDE\]' "$KDG"; then
echo -e '\n[KDE]\nSingleClick=false' >> "$KDG"
fi
ok "kdeglobals already present at $KDG (no overwrite)"
else
warn "kdeglobals not found at $KDG — kde-theme-apply.sh runs separately"
fi
else
warn "breezerc source missing at $BRZ_SRC — skipping"
fi
# ─────────────────────────────────────────────────────────────────────
# 6. Sanity: brand leak check (mirrors kickstart %post sanity)
# ─────────────────────────────────────────────────────────────────────
info "Sanity: scanning installed v0.3 paths for brand leaks"
LEAK_PATHS=(
"/usr/share/plymouth/themes/veilor"
"/usr/share/sddm/themes/veilor-black"
"/usr/share/konsole/Veilor.profile"
"/usr/share/konsole/Veilor.colorscheme"
"/etc/xdg/breezerc"
"/etc/sddm.conf.d/veilor-theme.conf"
"/etc/xdg/konsolerc"
"/etc/xdg/kdedefaults/plasma-org.kde.plasma.desktop-appletsrc"
)
LEAK=0
for p in "${LEAK_PATHS[@]}"; do
[[ -e $p ]] || continue
if grep -rqi 'onyx\|192\.168\.0\.\|fedora\.local\|admin@gmail' "$p" 2>/dev/null; then
err "brand leak detected in $p"
LEAK=1
fi
done
if [[ $LEAK -eq 0 ]]; then
ok "no brand leaks in v0.3 theme assets"
else
warn "brand leaks present — review and rebuild"
fi
echo "════════════════════════════════════════════════════════"
echo " 30-apply-v03-theme complete"
echo "════════════════════════════════════════════════════════"

View file

@ -0,0 +1,51 @@
%packages
# install env-group to resolve RhBug:1891500
@^kde-desktop-environment
@firefox
@kde-apps
@kde-media
@kde-pim
# Ensure we have Anaconda initial setup using kwin
@kde-spin-initial-setup
@libreoffice
# add libreoffice-draw and libreoffice-math (pagureio:fedora-kde/SIG#103)
libreoffice-draw
libreoffice-math
fedora-release-kde
-@admin-tools
# drop tracker stuff pulled in by gtk3 (pagureio:fedora-kde/SIG#124)
-tracker-miners
-tracker
# Not needed on desktops. See: https://pagure.io/fedora-kde/SIG/issue/566
-mariadb-server-utils
### The KDE-Desktop
# fedora-specific packages
plasma-welcome-fedora
### fixes
# minimal localization support - allows installing the kde-l10n-* packages
kde-l10n
# Additional packages that are not default in kde-* groups, but useful
fuse
mediawriter
### space issues
-ktorrent # kget has also basic torrent features (~3 megs)
-digikam # digikam has duplicate functionality with gwenview (~28 megs)
-kipi-plugins # ~8 megs + drags in Marble
-krusader # ~4 megs
-k3b # ~15 megs
## avoid serious bugs by omitting broken stuff
%end

View file

@ -0,0 +1,106 @@
# fedora-live-base.ks
#
# Defines the basics for all kickstarts in the fedora-live branch
# Does not include package selection (other then mandatory)
# Does not include localization packages or configuration
#
# Does includes "default" language configuration (kickstarts including
# this template can override these settings)
lang en_US.UTF-8
keyboard us
timezone US/Eastern
selinux --enforcing
firewall --enabled --service=mdns
xconfig --startxonboot
zerombr
clearpart --all
part / --size 5120 --fstype ext4
services --enabled=NetworkManager,ModemManager --disabled=sshd
network --bootproto=dhcp --device=link --activate
rootpw --lock --iscrypted locked
shutdown
%include fedora-repo.ks
%packages
# Explicitly specified here:
# <notting> walters: because otherwise dependency loops cause yum issues.
kernel
kernel-modules
kernel-modules-extra
# The point of a live image is to install
anaconda-install-env-deps
anaconda-live
@anaconda-tools
# Anaconda has a weak dep on this and we don't want it on livecds, see
# https://fedoraproject.org/wiki/Changes/RemoveDeviceMapperMultipathFromWorkstationLiveCD
-fcoe-utils
-device-mapper-multipath
-sdubby
# Need aajohan-comfortaa-fonts for the SVG rnotes images
aajohan-comfortaa-fonts
# Without this, initramfs generation during live image creation fails: #1242586
dracut-live
# anaconda needs the locales available to run for different locales
glibc-all-langpacks
# provide the livesys scripts
livesys-scripts
%end
%post
# Enable livesys services
systemctl enable livesys.service
systemctl enable livesys-late.service
# enable tmpfs for /tmp
systemctl enable tmp.mount
# make it so that we don't do writing to the overlay for things which
# are just tmpdirs/caches
# note https://bugzilla.redhat.com/show_bug.cgi?id=1135475
cat >> /etc/fstab << EOF
vartmp /var/tmp tmpfs defaults 0 0
EOF
# work around for poor key import UI in PackageKit
rm -f /var/lib/rpm/__db*
echo "Packages within this LiveCD"
rpm -qa --qf '%{size}\t%{name}-%{version}-%{release}.%{arch}\n' |sort -rn
# Note that running rpm recreates the rpm db files which aren't needed or wanted
rm -f /var/lib/rpm/__db*
# go ahead and pre-make the man -k cache (#455968)
/usr/bin/mandb
# make sure there aren't core files lying around
rm -f /core*
# remove random seed, the newly installed instance should make it's own
rm -f /var/lib/systemd/random-seed
# convince readahead not to collect
# FIXME: for systemd
echo 'File created by kickstart. See systemd-update-done.service(8).' \
| tee /etc/.updated >/var/.updated
# Drop the rescue kernel and initramfs, we don't need them on the live media itself.
# See bug 1317709
rm -f /boot/*-rescue*
# Disable network service here, as doing it in the services line
# fails due to RHBZ #1369794
systemctl disable network
# Remove machine-id on pre generated images
rm -f /etc/machine-id
touch /etc/machine-id
%end

View file

@ -0,0 +1,25 @@
# Maintained by the Fedora KDE SIG:
# http://fedoraproject.org/wiki/SIGs/KDE
# mailto:kde@lists.fedoraproject.org
%include fedora-live-base.ks
%include fedora-kde-common.ks
%post
# set default GTK+ theme for root (see #683855, #689070, #808062)
cat > /root/.gtkrc-2.0 << EOF
include "/usr/share/themes/Adwaita/gtk-2.0/gtkrc"
include "/etc/gtk-2.0/gtkrc"
gtk-theme-name="Adwaita"
EOF
mkdir -p /root/.config/gtk-3.0
cat > /root/.config/gtk-3.0/settings.ini << EOF
[Settings]
gtk-theme-name = Adwaita
EOF
# set livesys session type
sed -i 's/^livesys_session=.*/livesys_session="kde"/' /etc/sysconfig/livesys
%end

View file

@ -0,0 +1,17 @@
# fedora-livecd-kde.ks
#
# Description:
# - Fedora Live Spin with the K Desktop Environment (KDE), default 1.4 GB version
#
# Maintainer(s):
# - Sebastian Vahl <fedora@deadbabylon.de>
# - Fedora KDE SIG, http://fedoraproject.org/wiki/SIGs/KDE, kde@lists.fedoraproject.org
%include fedora-live-kde-base.ks
%include fedora-live-minimization.ks
# DVD payload
part / --size=9000
%post
%end

View file

@ -0,0 +1,9 @@
# Common packages removed from comps
# For F14, these removals should be moved to comps itself
%packages
# save some space
-hplip
%end

View file

@ -0,0 +1,4 @@
repo --name=fedora --mirrorlist=https://mirrors.fedoraproject.org/mirrorlist?repo=fedora-$releasever&arch=$basearch
repo --name=updates --mirrorlist=https://mirrors.fedoraproject.org/mirrorlist?repo=updates-released-f$releasever&arch=$basearch
#repo --name=updates-testing --mirrorlist=https://mirrors.fedoraproject.org/mirrorlist?repo=updates-testing-f$releasever&arch=$basearch
url --mirrorlist=https://mirrors.fedoraproject.org/mirrorlist?repo=fedora-$releasever&arch=$basearch

9
upstream/fedora-repo.ks Normal file
View file

@ -0,0 +1,9 @@
# Include the appropriate repo definitions
# Exactly one of the following should be uncommented
# For the master branch the following should be uncommented
# %include fedora-repo-rawhide.ks
# For non-master branches the following should be uncommented
%include fedora-repo-not-rawhide.ks