feat(assets): NexusOS asset + theme rebrand

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
jon
2026-07-11 07:25:15 -05:00
parent 5c2df30342
commit 3d1168ff8c
564 changed files with 4823 additions and 56 deletions
+30
View File
@@ -0,0 +1,30 @@
[General]
TitleAlignment=Left
TitleEdgeTop=0
TitleEdgeBottom=0
TitleEdgeLeft=12
TitleEdgeRight=8
TitleBorderLeft=0
TitleBorderRight=0
TitleHeight=30
BorderLeft=1
BorderRight=1
BorderBottom=5
BorderTop=0
ButtonWidth=32
ButtonSize=32
ButtonSpacing=8
ButtonMarginTop=0
ExplicitButtonSpacer=0
PaddingTop=0
PaddingBottom=0
PaddingRight=0
PaddingLeft=0
ActiveTextColor=#f2f2f2
ActiveTextShadowColor=0,0,0,0
InactiveTextColor=#6e7173
InactiveTextShadowColor=0,0,0,0
Shadow=false
ShadowColor=0,0,0,180
ShadowStrength=100
Animation=0
+29
View File
@@ -0,0 +1,29 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg xmlns="http://www.w3.org/2000/svg" width="20" height="20">
<g id="active-center">
<circle cx="7.5" cy="7.5" r="1.5" fill="#a8a8a8"/>
<circle cx="12.5" cy="7.5" r="1.5" fill="#a8a8a8"/>
<circle cx="7.5" cy="12.5" r="1.5" fill="#a8a8a8"/>
<circle cx="12.5" cy="12.5" r="1.5" fill="#a8a8a8"/>
</g>
<g id="hover-center">
<circle cx="10" cy="10" r="9" fill="#88008f"/>
<circle cx="7.5" cy="7.5" r="1.5" fill="#ffffff"/>
<circle cx="12.5" cy="7.5" r="1.5" fill="#ffffff"/>
<circle cx="7.5" cy="12.5" r="1.5" fill="#ffffff"/>
<circle cx="12.5" cy="12.5" r="1.5" fill="#ffffff"/>
</g>
<g id="pressed-center">
<circle cx="10" cy="10" r="9" fill="#5e0066"/>
<circle cx="7.5" cy="7.5" r="1.5" fill="#ffffff"/>
<circle cx="12.5" cy="7.5" r="1.5" fill="#ffffff"/>
<circle cx="7.5" cy="12.5" r="1.5" fill="#ffffff"/>
<circle cx="12.5" cy="12.5" r="1.5" fill="#ffffff"/>
</g>
<g id="inactive-center">
<circle cx="7.5" cy="7.5" r="1.5" fill="#6e7173"/>
<circle cx="12.5" cy="7.5" r="1.5" fill="#6e7173"/>
<circle cx="7.5" cy="12.5" r="1.5" fill="#6e7173"/>
<circle cx="12.5" cy="12.5" r="1.5" fill="#6e7173"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 1.2 KiB

+17
View File
@@ -0,0 +1,17 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg xmlns="http://www.w3.org/2000/svg" width="20" height="20">
<g id="active-center">
<circle cx="10" cy="10" r="6" fill="#e9524a"/>
</g>
<g id="hover-center">
<circle cx="10" cy="10" r="6" fill="#e9524a"/>
<path d="M7.5,7.5 L12.5,12.5 M12.5,7.5 L7.5,12.5" stroke="#4a0000" stroke-width="1.2" stroke-linecap="round"/>
</g>
<g id="pressed-center">
<circle cx="10" cy="10" r="6" fill="#c04040"/>
<path d="M7.5,7.5 L12.5,12.5 M12.5,7.5 L7.5,12.5" stroke="#4a0000" stroke-width="1.2" stroke-linecap="round"/>
</g>
<g id="inactive-center">
<circle cx="10" cy="10" r="6" fill="#5d5d5d"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 674 B

+93
View File
@@ -0,0 +1,93 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
NexusOS Aurorae decoration — PlasmaCore.FrameSvg format.
Aurorae uses PlasmaCore.FrameSvg, which requires elements named:
{prefix}-topleft {prefix}-top {prefix}-topright
{prefix}-left {prefix}-center {prefix}-right
{prefix}-bottomleft {prefix}-bottom {prefix}-bottomright
Prefixes used: decoration, decoration-inactive,
decoration-maximized, decoration-maximized-inactive
All elements sit at (0,0). QSvgRenderer renders each by ID independently
so coordinate overlap is harmless — FrameSvg uses each element's own
bounding box as the source rect and stretches/tiles it as needed.
Corner sizes drive FrameSvg margin inference:
topleft = 1×30 → left=1px, top(titlebar)=30px
bottomleft = 1×5 → bottom=5px, right=1px
-->
<svg xmlns="http://www.w3.org/2000/svg" version="1.1" width="32" height="36">
<!-- ══ ACTIVE (non-maximized) — prefix: decoration ══════════════════ -->
<g id="decoration-topleft">
<rect x="0" y="0" width="1" height="29" fill="#1e1526"/>
<rect x="0" y="29" width="1" height="1" fill="#8cc63f"/>
</g>
<g id="decoration-top">
<rect x="0" y="0" width="32" height="29" fill="#1e1526"/>
<rect x="0" y="29" width="32" height="1" fill="#8cc63f"/>
</g>
<g id="decoration-topright">
<rect x="0" y="0" width="1" height="29" fill="#1e1526"/>
<rect x="0" y="29" width="1" height="1" fill="#8cc63f"/>
</g>
<rect id="decoration-left" x="0" y="0" width="1" height="1" fill="#2e3236"/>
<rect id="decoration-center" x="0" y="0" width="32" height="1" fill="none"/>
<rect id="decoration-right" x="0" y="0" width="1" height="1" fill="#2e3236"/>
<rect id="decoration-bottomleft" x="0" y="0" width="1" height="5" fill="#2e3236"/>
<rect id="decoration-bottom" x="0" y="0" width="32" height="5" fill="#2e3236"/>
<rect id="decoration-bottomright" x="0" y="0" width="1" height="5" fill="#2e3236"/>
<!-- ══ INACTIVE (non-maximized) — prefix: decoration-inactive ═══════ -->
<rect id="decoration-inactive-topleft" x="0" y="0" width="1" height="30" fill="#1a1a20"/>
<rect id="decoration-inactive-top" x="0" y="0" width="32" height="30" fill="#1a1a20"/>
<rect id="decoration-inactive-topright" x="0" y="0" width="1" height="30" fill="#1a1a20"/>
<rect id="decoration-inactive-left" x="0" y="0" width="1" height="1" fill="#252525"/>
<rect id="decoration-inactive-center" x="0" y="0" width="32" height="1" fill="none"/>
<rect id="decoration-inactive-right" x="0" y="0" width="1" height="1" fill="#252525"/>
<rect id="decoration-inactive-bottomleft" x="0" y="0" width="1" height="5" fill="#252525"/>
<rect id="decoration-inactive-bottom" x="0" y="0" width="32" height="5" fill="#252525"/>
<rect id="decoration-inactive-bottomright" x="0" y="0" width="1" height="5" fill="#252525"/>
<!-- ══ MAXIMIZED ACTIVE — prefix: decoration-maximized ═════════════ -->
<!-- FrameSvg uses NoBorder for maximized: only -center is rendered,
stretched to fill the full width × maximizedBorders.top (TitleHeight). -->
<g id="decoration-maximized-center">
<rect x="0" y="0" width="32" height="29" fill="#1e1526"/>
<rect x="0" y="29" width="32" height="1" fill="#8cc63f"/>
</g>
<rect id="decoration-maximized-topleft" x="0" y="0" width="1" height="30" fill="#1e1526"/>
<rect id="decoration-maximized-top" x="0" y="0" width="32" height="30" fill="#1e1526"/>
<rect id="decoration-maximized-topright" x="0" y="0" width="1" height="30" fill="#1e1526"/>
<rect id="decoration-maximized-left" x="0" y="0" width="1" height="1" fill="none"/>
<rect id="decoration-maximized-right" x="0" y="0" width="1" height="1" fill="none"/>
<rect id="decoration-maximized-bottomleft" x="0" y="0" width="1" height="1" fill="none"/>
<rect id="decoration-maximized-bottom" x="0" y="0" width="32" height="1" fill="none"/>
<rect id="decoration-maximized-bottomright" x="0" y="0" width="1" height="1" fill="none"/>
<!-- ══ MAXIMIZED INACTIVE — prefix: decoration-maximized-inactive ══ -->
<rect id="decoration-maximized-inactive-center" x="0" y="0" width="32" height="30" fill="#1a1a20"/>
<rect id="decoration-maximized-inactive-topleft" x="0" y="0" width="1" height="30" fill="#1a1a20"/>
<rect id="decoration-maximized-inactive-top" x="0" y="0" width="32" height="30" fill="#1a1a20"/>
<rect id="decoration-maximized-inactive-topright" x="0" y="0" width="1" height="30" fill="#1a1a20"/>
<rect id="decoration-maximized-inactive-left" x="0" y="0" width="1" height="1" fill="none"/>
<rect id="decoration-maximized-inactive-right" x="0" y="0" width="1" height="1" fill="none"/>
<rect id="decoration-maximized-inactive-bottomleft" x="0" y="0" width="1" height="1" fill="none"/>
<rect id="decoration-maximized-inactive-bottom" x="0" y="0" width="32" height="1" fill="none"/>
<rect id="decoration-maximized-inactive-bottomright" x="0" y="0" width="1" height="1" fill="none"/>
</svg>

After

Width:  |  Height:  |  Size: 5.1 KiB

+17
View File
@@ -0,0 +1,17 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg xmlns="http://www.w3.org/2000/svg" width="20" height="20">
<g id="active-center">
<path d="M5,13 L10,7 L15,13" fill="none" stroke="#a8a8a8" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
</g>
<g id="hover-center">
<circle cx="10" cy="10" r="9" fill="#88008f"/>
<path d="M5,13 L10,7 L15,13" fill="none" stroke="#ffffff" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
</g>
<g id="pressed-center">
<circle cx="10" cy="10" r="9" fill="#5e0066"/>
<path d="M5,13 L10,7 L15,13" fill="none" stroke="#ffffff" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
</g>
<g id="inactive-center">
<path d="M5,13 L10,7 L15,13" fill="none" stroke="#6e7173" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 862 B

+17
View File
@@ -0,0 +1,17 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg xmlns="http://www.w3.org/2000/svg" width="20" height="20">
<g id="active-center">
<path d="M5,7 L10,13 L15,7" fill="none" stroke="#a8a8a8" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
</g>
<g id="hover-center">
<circle cx="10" cy="10" r="9" fill="#88008f"/>
<path d="M5,7 L10,13 L15,7" fill="none" stroke="#ffffff" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
</g>
<g id="pressed-center">
<circle cx="10" cy="10" r="9" fill="#5e0066"/>
<path d="M5,7 L10,13 L15,7" fill="none" stroke="#ffffff" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
</g>
<g id="inactive-center">
<path d="M5,7 L10,13 L15,7" fill="none" stroke="#6e7173" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 858 B

+17
View File
@@ -0,0 +1,17 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg xmlns="http://www.w3.org/2000/svg" width="20" height="20">
<g id="active-center">
<circle cx="10" cy="10" r="6" fill="#59c837"/>
</g>
<g id="hover-center">
<circle cx="10" cy="10" r="6" fill="#59c837"/>
<rect x="7" y="7" width="6" height="6" rx="0.8" fill="none" stroke="#003a00" stroke-width="1.1"/>
</g>
<g id="pressed-center">
<circle cx="10" cy="10" r="6" fill="#3d9a1f"/>
<rect x="7" y="7" width="6" height="6" rx="0.8" fill="none" stroke="#003a00" stroke-width="1.1"/>
</g>
<g id="inactive-center">
<circle cx="10" cy="10" r="6" fill="#5d5d5d"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 648 B

+18
View File
@@ -0,0 +1,18 @@
[Desktop Entry]
Name=NexusOS
Comment=Flat dark-purple window decoration, lime-green focus accent
Type=Service
X-KDE-ServiceTypes=org.kde.kwin.decoration
[KWin]
Type=Aurorae
X-KDE-PluginInfo-Author=Jon
X-KDE-PluginInfo-Email=
X-KDE-PluginInfo-Name=NexusOS
X-KDE-PluginInfo-Version=1.0
X-KDE-PluginInfo-Website=
X-KDE-PluginInfo-Category=
X-KDE-PluginInfo-Depends=
X-KDE-PluginInfo-License=GPL
X-KDE-PluginInfo-EnabledByDefault=false
+17
View File
@@ -0,0 +1,17 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg xmlns="http://www.w3.org/2000/svg" width="20" height="20">
<g id="active-center">
<circle cx="10" cy="10" r="6" fill="#f1ae1b"/>
</g>
<g id="hover-center">
<circle cx="10" cy="10" r="6" fill="#f1ae1b"/>
<line x1="7" y1="10" x2="13" y2="10" stroke="#4a3000" stroke-width="1.2" stroke-linecap="round"/>
</g>
<g id="pressed-center">
<circle cx="10" cy="10" r="6" fill="#c48a00"/>
<line x1="7" y1="10" x2="13" y2="10" stroke="#4a3000" stroke-width="1.2" stroke-linecap="round"/>
</g>
<g id="inactive-center">
<circle cx="10" cy="10" r="6" fill="#5d5d5d"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 648 B

+19
View File
@@ -0,0 +1,19 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg xmlns="http://www.w3.org/2000/svg" width="20" height="20">
<g id="active-center">
<circle cx="10" cy="10" r="6" fill="#59c837"/>
</g>
<g id="hover-center">
<circle cx="10" cy="10" r="6" fill="#59c837"/>
<rect x="8" y="6" width="4.5" height="4.5" rx="0.6" fill="none" stroke="#003a00" stroke-width="1.0"/>
<rect x="6.5" y="8" width="4.5" height="4.5" rx="0.6" fill="#59c837" stroke="#003a00" stroke-width="1.0"/>
</g>
<g id="pressed-center">
<circle cx="10" cy="10" r="6" fill="#3d9a1f"/>
<rect x="8" y="6" width="4.5" height="4.5" rx="0.6" fill="none" stroke="#003a00" stroke-width="1.0"/>
<rect x="6.5" y="8" width="4.5" height="4.5" rx="0.6" fill="#3d9a1f" stroke="#003a00" stroke-width="1.0"/>
</g>
<g id="inactive-center">
<circle cx="10" cy="10" r="6" fill="#5d5d5d"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 878 B

+21
View File
@@ -0,0 +1,21 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg xmlns="http://www.w3.org/2000/svg" width="20" height="20">
<g id="active-center">
<line x1="5" y1="7" x2="15" y2="7" stroke="#a8a8a8" stroke-width="1.5" stroke-linecap="round"/>
<path d="M5,10 L10,14 L15,10" fill="none" stroke="#a8a8a8" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
</g>
<g id="hover-center">
<circle cx="10" cy="10" r="9" fill="#88008f"/>
<line x1="5" y1="7" x2="15" y2="7" stroke="#ffffff" stroke-width="1.5" stroke-linecap="round"/>
<path d="M5,10 L10,14 L15,10" fill="none" stroke="#ffffff" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
</g>
<g id="pressed-center">
<circle cx="10" cy="10" r="9" fill="#5e0066"/>
<line x1="5" y1="7" x2="15" y2="7" stroke="#ffffff" stroke-width="1.5" stroke-linecap="round"/>
<path d="M5,10 L10,14 L15,10" fill="none" stroke="#ffffff" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
</g>
<g id="inactive-center">
<line x1="5" y1="7" x2="15" y2="7" stroke="#6e7173" stroke-width="1.5" stroke-linecap="round"/>
<path d="M5,10 L10,14 L15,10" fill="none" stroke="#6e7173" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 1.2 KiB