diff --git a/.DirIcon b/.DirIcon
deleted file mode 100644
index dfcab71..0000000
Binary files a/.DirIcon and /dev/null differ
diff --git a/assets/background.png b/assets/background.png
old mode 100644
new mode 100755
diff --git a/assets/boot/my-custom-logo/animation-0001.png b/assets/boot/my-custom-logo/animation-0001.png
old mode 100644
new mode 100755
diff --git a/assets/boot/my-custom-logo/animation-0002.png b/assets/boot/my-custom-logo/animation-0002.png
old mode 100644
new mode 100755
diff --git a/assets/boot/my-custom-logo/animation-0003.png b/assets/boot/my-custom-logo/animation-0003.png
old mode 100644
new mode 100755
diff --git a/assets/boot/my-custom-logo/animation-0004.png b/assets/boot/my-custom-logo/animation-0004.png
old mode 100644
new mode 100755
diff --git a/assets/boot/my-custom-logo/animation-0005.png b/assets/boot/my-custom-logo/animation-0005.png
old mode 100644
new mode 100755
diff --git a/assets/boot/my-custom-logo/animation-0006.png b/assets/boot/my-custom-logo/animation-0006.png
old mode 100644
new mode 100755
diff --git a/assets/boot/my-custom-logo/animation-0007.png b/assets/boot/my-custom-logo/animation-0007.png
old mode 100644
new mode 100755
diff --git a/assets/boot/my-custom-logo/animation-0008.png b/assets/boot/my-custom-logo/animation-0008.png
old mode 100644
new mode 100755
diff --git a/assets/boot/my-custom-logo/animation-0009.png b/assets/boot/my-custom-logo/animation-0009.png
old mode 100644
new mode 100755
diff --git a/assets/boot/my-custom-logo/animation-0010.png b/assets/boot/my-custom-logo/animation-0010.png
old mode 100644
new mode 100755
diff --git a/assets/boot/my-custom-logo/animation-0011.png b/assets/boot/my-custom-logo/animation-0011.png
old mode 100644
new mode 100755
diff --git a/assets/boot/my-custom-logo/animation-0012.png b/assets/boot/my-custom-logo/animation-0012.png
old mode 100644
new mode 100755
diff --git a/assets/boot/my-custom-logo/animation-0013.png b/assets/boot/my-custom-logo/animation-0013.png
old mode 100644
new mode 100755
diff --git a/assets/boot/my-custom-logo/animation-0014.png b/assets/boot/my-custom-logo/animation-0014.png
old mode 100644
new mode 100755
diff --git a/assets/boot/my-custom-logo/animation-0015.png b/assets/boot/my-custom-logo/animation-0015.png
old mode 100644
new mode 100755
diff --git a/assets/boot/my-custom-logo/animation-0016.png b/assets/boot/my-custom-logo/animation-0016.png
old mode 100644
new mode 100755
diff --git a/assets/boot/my-custom-logo/animation-0017.png b/assets/boot/my-custom-logo/animation-0017.png
old mode 100644
new mode 100755
diff --git a/assets/boot/my-custom-logo/animation-0018.png b/assets/boot/my-custom-logo/animation-0018.png
old mode 100644
new mode 100755
diff --git a/assets/boot/my-custom-logo/animation-0019.png b/assets/boot/my-custom-logo/animation-0019.png
old mode 100644
new mode 100755
diff --git a/assets/boot/my-custom-logo/animation-0020.png b/assets/boot/my-custom-logo/animation-0020.png
old mode 100644
new mode 100755
diff --git a/assets/boot/my-custom-logo/animation-0021.png b/assets/boot/my-custom-logo/animation-0021.png
old mode 100644
new mode 100755
diff --git a/assets/boot/my-custom-logo/animation-0022.png b/assets/boot/my-custom-logo/animation-0022.png
old mode 100644
new mode 100755
diff --git a/assets/boot/my-custom-logo/animation-0023.png b/assets/boot/my-custom-logo/animation-0023.png
old mode 100644
new mode 100755
diff --git a/assets/boot/my-custom-logo/animation-0024.png b/assets/boot/my-custom-logo/animation-0024.png
old mode 100644
new mode 100755
diff --git a/assets/boot/my-custom-logo/animation-0025.png b/assets/boot/my-custom-logo/animation-0025.png
old mode 100644
new mode 100755
diff --git a/assets/boot/my-custom-logo/animation-0026.png b/assets/boot/my-custom-logo/animation-0026.png
old mode 100644
new mode 100755
diff --git a/assets/boot/my-custom-logo/animation-0027.png b/assets/boot/my-custom-logo/animation-0027.png
old mode 100644
new mode 100755
diff --git a/assets/boot/my-custom-logo/animation-0028.png b/assets/boot/my-custom-logo/animation-0028.png
old mode 100644
new mode 100755
diff --git a/assets/boot/my-custom-logo/animation-0029.png b/assets/boot/my-custom-logo/animation-0029.png
old mode 100644
new mode 100755
diff --git a/assets/boot/my-custom-logo/animation-0030.png b/assets/boot/my-custom-logo/animation-0030.png
old mode 100644
new mode 100755
diff --git a/assets/boot/my-custom-logo/animation-0031.png b/assets/boot/my-custom-logo/animation-0031.png
old mode 100644
new mode 100755
diff --git a/assets/boot/my-custom-logo/animation-0032.png b/assets/boot/my-custom-logo/animation-0032.png
old mode 100644
new mode 100755
diff --git a/assets/boot/my-custom-logo/animation-0033.png b/assets/boot/my-custom-logo/animation-0033.png
old mode 100644
new mode 100755
diff --git a/assets/boot/my-custom-logo/animation-0034.png b/assets/boot/my-custom-logo/animation-0034.png
old mode 100644
new mode 100755
diff --git a/assets/boot/my-custom-logo/animation-0035.png b/assets/boot/my-custom-logo/animation-0035.png
old mode 100644
new mode 100755
diff --git a/assets/boot/my-custom-logo/animation-0036.png b/assets/boot/my-custom-logo/animation-0036.png
old mode 100644
new mode 100755
diff --git a/assets/boot/my-custom-logo/bgrt-fallback.png b/assets/boot/my-custom-logo/bgrt-fallback.png
old mode 100644
new mode 100755
diff --git a/assets/boot/my-custom-logo/bullet.png b/assets/boot/my-custom-logo/bullet.png
old mode 100644
new mode 100755
diff --git a/assets/boot/my-custom-logo/capslock.png b/assets/boot/my-custom-logo/capslock.png
old mode 100644
new mode 100755
diff --git a/assets/boot/my-custom-logo/entry.png b/assets/boot/my-custom-logo/entry.png
old mode 100644
new mode 100755
diff --git a/assets/boot/my-custom-logo/keyboard.png b/assets/boot/my-custom-logo/keyboard.png
old mode 100644
new mode 100755
diff --git a/assets/boot/my-custom-logo/keymap-render.png b/assets/boot/my-custom-logo/keymap-render.png
old mode 100644
new mode 100755
diff --git a/assets/boot/my-custom-logo/lock.png b/assets/boot/my-custom-logo/lock.png
old mode 100644
new mode 100755
diff --git a/assets/boot/my-custom-logo/my-custom-logo.plymouth b/assets/boot/my-custom-logo/my-custom-logo.plymouth
old mode 100644
new mode 100755
diff --git a/assets/boot/my-custom-logo/throbber-0001.png b/assets/boot/my-custom-logo/throbber-0001.png
old mode 100644
new mode 100755
diff --git a/assets/boot/my-custom-logo/throbber-0002.png b/assets/boot/my-custom-logo/throbber-0002.png
old mode 100644
new mode 100755
diff --git a/assets/boot/my-custom-logo/throbber-0003.png b/assets/boot/my-custom-logo/throbber-0003.png
old mode 100644
new mode 100755
diff --git a/assets/boot/my-custom-logo/throbber-0004.png b/assets/boot/my-custom-logo/throbber-0004.png
old mode 100644
new mode 100755
diff --git a/assets/boot/my-custom-logo/throbber-0005.png b/assets/boot/my-custom-logo/throbber-0005.png
old mode 100644
new mode 100755
diff --git a/assets/boot/my-custom-logo/throbber-0006.png b/assets/boot/my-custom-logo/throbber-0006.png
old mode 100644
new mode 100755
diff --git a/assets/boot/my-custom-logo/throbber-0007.png b/assets/boot/my-custom-logo/throbber-0007.png
old mode 100644
new mode 100755
diff --git a/assets/boot/my-custom-logo/throbber-0008.png b/assets/boot/my-custom-logo/throbber-0008.png
old mode 100644
new mode 100755
diff --git a/assets/boot/my-custom-logo/throbber-0009.png b/assets/boot/my-custom-logo/throbber-0009.png
old mode 100644
new mode 100755
diff --git a/assets/boot/my-custom-logo/throbber-0010.png b/assets/boot/my-custom-logo/throbber-0010.png
old mode 100644
new mode 100755
diff --git a/assets/boot/my-custom-logo/throbber-0011.png b/assets/boot/my-custom-logo/throbber-0011.png
old mode 100644
new mode 100755
diff --git a/assets/boot/my-custom-logo/throbber-0012.png b/assets/boot/my-custom-logo/throbber-0012.png
old mode 100644
new mode 100755
diff --git a/assets/boot/my-custom-logo/throbber-0013.png b/assets/boot/my-custom-logo/throbber-0013.png
old mode 100644
new mode 100755
diff --git a/assets/boot/my-custom-logo/throbber-0014.png b/assets/boot/my-custom-logo/throbber-0014.png
old mode 100644
new mode 100755
diff --git a/assets/boot/my-custom-logo/throbber-0015.png b/assets/boot/my-custom-logo/throbber-0015.png
old mode 100644
new mode 100755
diff --git a/assets/boot/my-custom-logo/throbber-0016.png b/assets/boot/my-custom-logo/throbber-0016.png
old mode 100644
new mode 100755
diff --git a/assets/boot/my-custom-logo/throbber-0017.png b/assets/boot/my-custom-logo/throbber-0017.png
old mode 100644
new mode 100755
diff --git a/assets/boot/my-custom-logo/throbber-0018.png b/assets/boot/my-custom-logo/throbber-0018.png
old mode 100644
new mode 100755
diff --git a/assets/boot/my-custom-logo/throbber-0019.png b/assets/boot/my-custom-logo/throbber-0019.png
old mode 100644
new mode 100755
diff --git a/assets/boot/my-custom-logo/throbber-0020.png b/assets/boot/my-custom-logo/throbber-0020.png
old mode 100644
new mode 100755
diff --git a/assets/boot/my-custom-logo/throbber-0021.png b/assets/boot/my-custom-logo/throbber-0021.png
old mode 100644
new mode 100755
diff --git a/assets/boot/my-custom-logo/throbber-0022.png b/assets/boot/my-custom-logo/throbber-0022.png
old mode 100644
new mode 100755
diff --git a/assets/boot/my-custom-logo/throbber-0023.png b/assets/boot/my-custom-logo/throbber-0023.png
old mode 100644
new mode 100755
diff --git a/assets/boot/my-custom-logo/throbber-0024.png b/assets/boot/my-custom-logo/throbber-0024.png
old mode 100644
new mode 100755
diff --git a/assets/boot/my-custom-logo/throbber-0025.png b/assets/boot/my-custom-logo/throbber-0025.png
old mode 100644
new mode 100755
diff --git a/assets/boot/my-custom-logo/throbber-0026.png b/assets/boot/my-custom-logo/throbber-0026.png
old mode 100644
new mode 100755
diff --git a/assets/boot/my-custom-logo/throbber-0027.png b/assets/boot/my-custom-logo/throbber-0027.png
old mode 100644
new mode 100755
diff --git a/assets/boot/my-custom-logo/throbber-0028.png b/assets/boot/my-custom-logo/throbber-0028.png
old mode 100644
new mode 100755
diff --git a/assets/boot/my-custom-logo/throbber-0029.png b/assets/boot/my-custom-logo/throbber-0029.png
old mode 100644
new mode 100755
diff --git a/assets/boot/my-custom-logo/throbber-0030.png b/assets/boot/my-custom-logo/throbber-0030.png
old mode 100644
new mode 100755
diff --git a/assets/boot/my-custom-logo/watermark.png b/assets/boot/my-custom-logo/watermark.png
old mode 100644
new mode 100755
diff --git a/assets/gitnexus-logo.svg b/assets/gitnexus-logo.svg
new file mode 100644
index 0000000..ca49156
--- /dev/null
+++ b/assets/gitnexus-logo.svg
@@ -0,0 +1,14 @@
+
diff --git a/assets/n-folder.png b/assets/n-folder.png
index dfcab71..b4cea46 100644
Binary files a/assets/n-folder.png and b/assets/n-folder.png differ
diff --git a/assets/n-small.png b/assets/n-small.png
old mode 100644
new mode 100755
diff --git a/assets/nexus-folder-app.png b/assets/nexus-folder-app.png
new file mode 100644
index 0000000..239f381
Binary files /dev/null and b/assets/nexus-folder-app.png differ
diff --git a/assets/nexus-terminal.svg b/assets/nexus-terminal-blank.svg
old mode 100644
new mode 100755
similarity index 100%
rename from assets/nexus-terminal.svg
rename to assets/nexus-terminal-blank.svg
diff --git a/assets/nexus-terminal.png b/assets/nexus-terminal-draft.png
old mode 100644
new mode 100755
similarity index 100%
rename from assets/nexus-terminal.png
rename to assets/nexus-terminal-draft.png
diff --git a/assets/nexus-terminal-naked.png b/assets/nexus-terminal-naked.png
new file mode 100644
index 0000000..dc9c154
Binary files /dev/null and b/assets/nexus-terminal-naked.png differ
diff --git a/assets/themes/NexusOS-icons/scalable/apps/utilities-terminal.png b/assets/nexus-terminal-ring.png
similarity index 100%
rename from assets/themes/NexusOS-icons/scalable/apps/utilities-terminal.png
rename to assets/nexus-terminal-ring.png
diff --git a/assets/notes/MEMORY.md b/assets/notes/MEMORY.md
new file mode 120000
index 0000000..36d5e77
--- /dev/null
+++ b/assets/notes/MEMORY.md
@@ -0,0 +1 @@
+../../../.claude/projects/-home-jon-nexus-core/memory/MEMORY.md
\ No newline at end of file
diff --git a/assets/notes/README.md b/assets/notes/README.md
new file mode 100755
index 0000000..716563d
--- /dev/null
+++ b/assets/notes/README.md
@@ -0,0 +1,12 @@
+# assets/notes
+
+In-repo snapshot of the project's working notes (Claude Code memory).
+
+**Canonical source:** `~/.claude/projects/-home-jon-nexus-core/memory/`
+The files here are a committed copy so the notes travel with the repo and survive
+a fresh machine. They are **not** read by any code at runtime — purely reference.
+
+`MEMORY.md` is the index; the other `*.md` files are one note each.
+
+If the two locations drift, the `~/.claude/.../memory/` copy is authoritative —
+re-sync from there, not the other way around.
diff --git a/assets/notes/code-widget-lifecycle.md b/assets/notes/code-widget-lifecycle.md
new file mode 120000
index 0000000..bb0c656
--- /dev/null
+++ b/assets/notes/code-widget-lifecycle.md
@@ -0,0 +1 @@
+../../../.claude/projects/-home-jon-nexus-core/memory/code-widget-lifecycle.md
\ No newline at end of file
diff --git a/assets/notes/cross-machine-sync-constraint.md b/assets/notes/cross-machine-sync-constraint.md
new file mode 120000
index 0000000..b84750b
--- /dev/null
+++ b/assets/notes/cross-machine-sync-constraint.md
@@ -0,0 +1 @@
+../../../.claude/projects/-home-jon-nexus-core/memory/cross-machine-sync-constraint.md
\ No newline at end of file
diff --git a/assets/notes/fusion360_linux_proton.md b/assets/notes/fusion360_linux_proton.md
new file mode 120000
index 0000000..0f40571
--- /dev/null
+++ b/assets/notes/fusion360_linux_proton.md
@@ -0,0 +1 @@
+../../../.claude/projects/-home-jon-nexus-core/memory/fusion360_linux_proton.md
\ No newline at end of file
diff --git a/assets/notes/multimonitor_primary_follow.md b/assets/notes/multimonitor_primary_follow.md
new file mode 120000
index 0000000..ab2534f
--- /dev/null
+++ b/assets/notes/multimonitor_primary_follow.md
@@ -0,0 +1 @@
+../../../.claude/projects/-home-jon-nexus-core/memory/multimonitor_primary_follow.md
\ No newline at end of file
diff --git a/assets/notes/nexusos_desktop_theme.md b/assets/notes/nexusos_desktop_theme.md
new file mode 120000
index 0000000..bd8e415
--- /dev/null
+++ b/assets/notes/nexusos_desktop_theme.md
@@ -0,0 +1 @@
+../../../.claude/projects/-home-jon-nexus-core/memory/nexusos_desktop_theme.md
\ No newline at end of file
diff --git a/assets/notes/nexusos_distro_identity_wine.md b/assets/notes/nexusos_distro_identity_wine.md
new file mode 120000
index 0000000..b206da6
--- /dev/null
+++ b/assets/notes/nexusos_distro_identity_wine.md
@@ -0,0 +1 @@
+../../../.claude/projects/-home-jon-nexus-core/memory/nexusos_distro_identity_wine.md
\ No newline at end of file
diff --git a/assets/notes/nexusos_genmon_applet_pattern.md b/assets/notes/nexusos_genmon_applet_pattern.md
new file mode 120000
index 0000000..21accb8
--- /dev/null
+++ b/assets/notes/nexusos_genmon_applet_pattern.md
@@ -0,0 +1 @@
+../../../.claude/projects/-home-jon-nexus-core/memory/nexusos_genmon_applet_pattern.md
\ No newline at end of file
diff --git a/assets/notes/nexusos_icon_branding_pipeline.md b/assets/notes/nexusos_icon_branding_pipeline.md
new file mode 120000
index 0000000..473afff
--- /dev/null
+++ b/assets/notes/nexusos_icon_branding_pipeline.md
@@ -0,0 +1 @@
+../../../.claude/projects/-home-jon-nexus-core/memory/nexusos_icon_branding_pipeline.md
\ No newline at end of file
diff --git a/assets/notes/user_desktop_env.md b/assets/notes/user_desktop_env.md
new file mode 120000
index 0000000..dcacd7e
--- /dev/null
+++ b/assets/notes/user_desktop_env.md
@@ -0,0 +1 @@
+../../../.claude/projects/-home-jon-nexus-core/memory/user_desktop_env.md
\ No newline at end of file
diff --git a/assets/notes/user_no_git.md b/assets/notes/user_no_git.md
new file mode 120000
index 0000000..38142fa
--- /dev/null
+++ b/assets/notes/user_no_git.md
@@ -0,0 +1 @@
+../../../.claude/projects/-home-jon-nexus-core/memory/user_no_git.md
\ No newline at end of file
diff --git a/assets/panel-icons/audio-volume-high.png b/assets/panel-icons/audio-volume-high.png
new file mode 100755
index 0000000..495c963
Binary files /dev/null and b/assets/panel-icons/audio-volume-high.png differ
diff --git a/assets/panel-icons/audio-volume-low.png b/assets/panel-icons/audio-volume-low.png
new file mode 100755
index 0000000..fdd681e
Binary files /dev/null and b/assets/panel-icons/audio-volume-low.png differ
diff --git a/assets/panel-icons/audio-volume-medium.png b/assets/panel-icons/audio-volume-medium.png
new file mode 100755
index 0000000..3e2914d
Binary files /dev/null and b/assets/panel-icons/audio-volume-medium.png differ
diff --git a/assets/panel-icons/audio-volume-muted.png b/assets/panel-icons/audio-volume-muted.png
new file mode 100755
index 0000000..53266f0
Binary files /dev/null and b/assets/panel-icons/audio-volume-muted.png differ
diff --git a/assets/panel-icons/bluetooth-active.png b/assets/panel-icons/bluetooth-active.png
new file mode 100755
index 0000000..1d054f9
Binary files /dev/null and b/assets/panel-icons/bluetooth-active.png differ
diff --git a/assets/panel-icons/bluetooth-disabled.png b/assets/panel-icons/bluetooth-disabled.png
new file mode 100755
index 0000000..2bfddb1
Binary files /dev/null and b/assets/panel-icons/bluetooth-disabled.png differ
diff --git a/assets/panel-icons/bluetooth-online.png b/assets/panel-icons/bluetooth-online.png
new file mode 100755
index 0000000..70a741e
Binary files /dev/null and b/assets/panel-icons/bluetooth-online.png differ
diff --git a/assets/panel-icons/bluetooth-paired.png b/assets/panel-icons/bluetooth-paired.png
new file mode 100755
index 0000000..4341d6c
Binary files /dev/null and b/assets/panel-icons/bluetooth-paired.png differ
diff --git a/assets/panel-icons/network-offline.png b/assets/panel-icons/network-offline.png
new file mode 100755
index 0000000..3f97c32
Binary files /dev/null and b/assets/panel-icons/network-offline.png differ
diff --git a/assets/panel-icons/network-wired.png b/assets/panel-icons/network-wired.png
new file mode 100755
index 0000000..4bedd5a
Binary files /dev/null and b/assets/panel-icons/network-wired.png differ
diff --git a/assets/panel-icons/network-wireless-signal-excellent.png b/assets/panel-icons/network-wireless-signal-excellent.png
new file mode 100755
index 0000000..91b22d9
Binary files /dev/null and b/assets/panel-icons/network-wireless-signal-excellent.png differ
diff --git a/assets/panel-icons/network-wireless-signal-good.png b/assets/panel-icons/network-wireless-signal-good.png
new file mode 100755
index 0000000..2c735e0
Binary files /dev/null and b/assets/panel-icons/network-wireless-signal-good.png differ
diff --git a/assets/panel-icons/network-wireless-signal-none.png b/assets/panel-icons/network-wireless-signal-none.png
new file mode 100755
index 0000000..8a5a579
Binary files /dev/null and b/assets/panel-icons/network-wireless-signal-none.png differ
diff --git a/assets/panel-icons/network-wireless-signal-ok.png b/assets/panel-icons/network-wireless-signal-ok.png
new file mode 100755
index 0000000..29f095a
Binary files /dev/null and b/assets/panel-icons/network-wireless-signal-ok.png differ
diff --git a/assets/panel-icons/network-wireless-signal-weak.png b/assets/panel-icons/network-wireless-signal-weak.png
new file mode 100755
index 0000000..ce82778
Binary files /dev/null and b/assets/panel-icons/network-wireless-signal-weak.png differ
diff --git a/assets/panel-icons/nexus-off.png b/assets/panel-icons/nexus-off.png
new file mode 100644
index 0000000..fde6fc9
Binary files /dev/null and b/assets/panel-icons/nexus-off.png differ
diff --git a/assets/panel-icons/nexus-on.png b/assets/panel-icons/nexus-on.png
new file mode 100644
index 0000000..6bd2ca2
Binary files /dev/null and b/assets/panel-icons/nexus-on.png differ
diff --git a/assets/panel-icons/nexus-partial.png b/assets/panel-icons/nexus-partial.png
new file mode 100644
index 0000000..2b1d244
Binary files /dev/null and b/assets/panel-icons/nexus-partial.png differ
diff --git a/assets/promethean-terminal.png b/assets/promethean-terminal.png
new file mode 100644
index 0000000..61c6079
Binary files /dev/null and b/assets/promethean-terminal.png differ
diff --git a/assets/themes/CREDITS.md b/assets/themes/CREDITS.md
old mode 100644
new mode 100755
diff --git a/assets/themes/KDE/aurorae/NexusOS/NexusOSrc b/assets/themes/KDE/aurorae/NexusOS/NexusOSrc
new file mode 100755
index 0000000..f552dad
--- /dev/null
+++ b/assets/themes/KDE/aurorae/NexusOS/NexusOSrc
@@ -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
diff --git a/assets/themes/KDE/aurorae/NexusOS/alldesktops.svg b/assets/themes/KDE/aurorae/NexusOS/alldesktops.svg
new file mode 100755
index 0000000..6786a6c
--- /dev/null
+++ b/assets/themes/KDE/aurorae/NexusOS/alldesktops.svg
@@ -0,0 +1,29 @@
+
+
diff --git a/assets/themes/KDE/aurorae/NexusOS/close.svg b/assets/themes/KDE/aurorae/NexusOS/close.svg
new file mode 100755
index 0000000..1313b7e
--- /dev/null
+++ b/assets/themes/KDE/aurorae/NexusOS/close.svg
@@ -0,0 +1,17 @@
+
+
diff --git a/assets/themes/KDE/aurorae/NexusOS/decoration.svg b/assets/themes/KDE/aurorae/NexusOS/decoration.svg
new file mode 100755
index 0000000..01a78b1
--- /dev/null
+++ b/assets/themes/KDE/aurorae/NexusOS/decoration.svg
@@ -0,0 +1,93 @@
+
+
+
diff --git a/assets/themes/KDE/aurorae/NexusOS/keepabove.svg b/assets/themes/KDE/aurorae/NexusOS/keepabove.svg
new file mode 100755
index 0000000..a772438
--- /dev/null
+++ b/assets/themes/KDE/aurorae/NexusOS/keepabove.svg
@@ -0,0 +1,17 @@
+
+
diff --git a/assets/themes/KDE/aurorae/NexusOS/keepbelow.svg b/assets/themes/KDE/aurorae/NexusOS/keepbelow.svg
new file mode 100755
index 0000000..fc8032d
--- /dev/null
+++ b/assets/themes/KDE/aurorae/NexusOS/keepbelow.svg
@@ -0,0 +1,17 @@
+
+
diff --git a/assets/themes/KDE/aurorae/NexusOS/maximize.svg b/assets/themes/KDE/aurorae/NexusOS/maximize.svg
new file mode 100755
index 0000000..2c8d255
--- /dev/null
+++ b/assets/themes/KDE/aurorae/NexusOS/maximize.svg
@@ -0,0 +1,17 @@
+
+
diff --git a/assets/themes/KDE/aurorae/NexusOS/metadata.desktop b/assets/themes/KDE/aurorae/NexusOS/metadata.desktop
new file mode 100755
index 0000000..92ed21f
--- /dev/null
+++ b/assets/themes/KDE/aurorae/NexusOS/metadata.desktop
@@ -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
diff --git a/assets/themes/KDE/aurorae/NexusOS/minimize.svg b/assets/themes/KDE/aurorae/NexusOS/minimize.svg
new file mode 100755
index 0000000..b4a8754
--- /dev/null
+++ b/assets/themes/KDE/aurorae/NexusOS/minimize.svg
@@ -0,0 +1,17 @@
+
+
diff --git a/assets/themes/KDE/aurorae/NexusOS/restore.svg b/assets/themes/KDE/aurorae/NexusOS/restore.svg
new file mode 100755
index 0000000..27f72c0
--- /dev/null
+++ b/assets/themes/KDE/aurorae/NexusOS/restore.svg
@@ -0,0 +1,19 @@
+
+
diff --git a/assets/themes/KDE/aurorae/NexusOS/shade.svg b/assets/themes/KDE/aurorae/NexusOS/shade.svg
new file mode 100755
index 0000000..bb4e7df
--- /dev/null
+++ b/assets/themes/KDE/aurorae/NexusOS/shade.svg
@@ -0,0 +1,21 @@
+
+
diff --git a/assets/themes/KDE/generate_plasma_colors.py b/assets/themes/KDE/generate_plasma_colors.py
new file mode 100755
index 0000000..1871513
--- /dev/null
+++ b/assets/themes/KDE/generate_plasma_colors.py
@@ -0,0 +1,138 @@
+#!/usr/bin/env python3
+"""Generate NexusOS.colors (KDE KColorScheme format) from _palette.py.
+
+Run from anywhere:
+ python3 assets/themes/KDE/generate_plasma_colors.py
+
+Writes to assets/themes/KDE/plasma/NexusOS/NexusOS.colors (relative to repo root).
+"""
+import os
+import sys
+
+# Resolve repo root relative to this script's location
+SCRIPT_DIR = os.path.dirname(os.path.abspath(__file__))
+REPO_ROOT = os.path.abspath(os.path.join(SCRIPT_DIR, "../../.."))
+sys.path.insert(0, os.path.join(REPO_ROOT, "assets/themes"))
+
+import _palette as p # noqa: E402
+
+OUT = os.path.join(SCRIPT_DIR, "plasma/NexusOS/NexusOS.colors")
+
+
+def rgb(hexstr):
+ h = hexstr.lstrip("#")
+ return f"{int(h[0:2],16)},{int(h[2:4],16)},{int(h[4:6],16)}"
+
+
+def section(name, bg_normal, bg_alt, fg_normal, fg_inactive, fg_active,
+ fg_link, fg_visited, fg_neg, fg_neutral, fg_pos,
+ deco_focus, deco_hover):
+ return f"""[Colors:{name}]
+BackgroundNormal={rgb(bg_normal)}
+BackgroundAlternate={rgb(bg_alt)}
+ForegroundNormal={rgb(fg_normal)}
+ForegroundInactive={rgb(fg_inactive)}
+ForegroundActive={rgb(fg_active)}
+ForegroundLink={rgb(fg_link)}
+ForegroundVisited={rgb(fg_visited)}
+ForegroundNegative={rgb(fg_neg)}
+ForegroundNeutral={rgb(fg_neutral)}
+ForegroundPositive={rgb(fg_pos)}
+DecorationFocus={rgb(deco_focus)}
+DecorationHover={rgb(deco_hover)}
+"""
+
+
+SHARED = dict(
+ fg_normal = "#" + p.TEXT_PRIMARY,
+ fg_inactive = "#" + p.TEXT_SECONDARY,
+ fg_active = "#" + p.BRAND_GREEN,
+ fg_link = "#" + p.BRAND_GREEN_LIGHT,
+ fg_visited = "#" + p.BRAND_PURPLE_LIGHT,
+ fg_neg = "#" + p.ERROR,
+ fg_neutral = "#" + p.WARNING,
+ fg_pos = "#" + p.SUCCESS,
+ deco_focus = "#" + p.BRAND_GREEN,
+ deco_hover = "#" + p.BRAND_PURPLE,
+)
+
+content = f"""\
+[ColorEffects:Disabled]
+Color=56,56,56
+ColorAmount=0
+ColorEffect=0
+ContrastAmount=0.1
+ContrastEffect=2
+IntensityAmount=0
+IntensityEffect=0
+
+[ColorEffects:Inactive]
+ChangeSelectionColor=true
+Color=112,111,110
+ColorAmount=0.025
+ColorEffect=0
+ContrastAmount=0.1
+ContrastEffect=2
+Enable=false
+IntensityAmount=0
+IntensityEffect=0
+
+""" + section(
+ "Window",
+ bg_normal="#" + p.BASE_BG,
+ bg_alt ="#" + p.SURFACE_BG,
+ **SHARED,
+) + section(
+ "View",
+ bg_normal="#" + p.BASE_BG,
+ bg_alt ="#" + p.SURFACE_BG,
+ **SHARED,
+) + section(
+ "Button",
+ bg_normal="#" + p.SURFACE_BG_ALT,
+ bg_alt ="#" + p.BASE_BG,
+ **SHARED,
+) + section(
+ "Selection",
+ bg_normal ="#" + p.BRAND_PURPLE,
+ bg_alt ="#" + p.BRAND_GREEN_DARK,
+ fg_normal ="#" + p.TEXT_ON_SELECTION,
+ fg_inactive="#" + p.TEXT_ON_SELECTION,
+ fg_active ="#" + p.BRAND_GREEN,
+ fg_link ="#" + p.BRAND_GREEN_LIGHT,
+ fg_visited="#" + p.BRAND_PURPLE_LIGHT,
+ fg_neg ="#" + p.ERROR,
+ fg_neutral="#" + p.WARNING,
+ fg_pos ="#" + p.SUCCESS,
+ deco_focus="#" + p.BRAND_GREEN,
+ deco_hover="#" + p.BRAND_PURPLE,
+) + section(
+ "Tooltip",
+ bg_normal="#" + p.OVERLAY_BG,
+ bg_alt ="#" + p.BORDER_STRONG,
+ **SHARED,
+) + section(
+ "Complementary",
+ bg_normal="#" + p.SURFACE_BG_ALT,
+ bg_alt ="#" + p.OVERLAY_BG,
+ **SHARED,
+) + section(
+ "Header",
+ bg_normal="#" + p.BASE_BG,
+ bg_alt ="#" + p.SURFACE_BG_ALT,
+ **SHARED,
+) + f"""\
+[General]
+ColorScheme=NexusOS
+Name=NexusOS
+shadeSortColumn=true
+
+[KDE]
+contrast=4
+"""
+
+os.makedirs(os.path.dirname(OUT), exist_ok=True)
+with open(OUT, "w") as f:
+ f.write(content)
+
+print(f"Written: {OUT}")
diff --git a/assets/themes/KDE/install-plasma.sh b/assets/themes/KDE/install-plasma.sh
new file mode 100755
index 0000000..454a959
--- /dev/null
+++ b/assets/themes/KDE/install-plasma.sh
@@ -0,0 +1,145 @@
+#!/usr/bin/env bash
+# NexusOS KDE Plasma theme installer — idempotent, safe to re-run.
+# Equivalent of assets/themes/install-theme.sh but for KDE.
+#
+# Usage:
+# assets/themes/KDE/install-plasma.sh [--no-sddm]
+#
+# --no-sddm skip the SDDM step (requires sudo) — useful for live testing
+set -euo pipefail
+
+KDE="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
+REPO="$(cd "$KDE/../../.." && pwd)"
+
+NO_SDDM=0
+for arg in "$@"; do
+ [[ "$arg" == "--no-sddm" ]] && NO_SDDM=1
+done
+
+echo "NexusOS KDE installer — repo: $REPO"
+
+# ── 1. Create target directories ────────────────────────────────────────
+mkdir -p \
+ ~/.local/share/aurorae/themes \
+ ~/.local/share/plasma/desktoptheme \
+ ~/.local/share/color-schemes \
+ ~/.local/share/konsole \
+ ~/.local/share/kscreenlocker/themes \
+ ~/.config/Kvantum
+
+# ── 2. Symlink theme directories (update automatically on git pull) ──────
+ln -sfn "$KDE/aurorae/NexusOS" ~/.local/share/aurorae/themes/NexusOS
+ln -sfn "$KDE/plasma/NexusOS" ~/.local/share/plasma/desktoptheme/NexusOS
+ln -sfn "$KDE/kscreenlocker/NexusOS" ~/.local/share/kscreenlocker/themes/NexusOS
+ln -sfn "$KDE/kvantum/NexusOS" ~/.config/Kvantum/NexusOS
+
+echo " [ok] theme symlinks"
+
+# ── 3. Copy files that need to be in specific locations (not symlinks) ───
+cp -f "$KDE/plasma/NexusOS/NexusOS.colors" ~/.local/share/color-schemes/
+cp -f "$KDE/konsole/NexusOS.colorscheme" ~/.local/share/konsole/
+cp -f "$KDE/konsole/NexusOS-Promethean.colorscheme" ~/.local/share/konsole/
+cp -f "$KDE/konsole/Promethean.profile" ~/.local/share/konsole/
+
+echo " [ok] color scheme + konsole files"
+
+# ── 4. KDE color scheme ──────────────────────────────────────────────────
+if command -v plasma-apply-colorscheme &>/dev/null; then
+ plasma-apply-colorscheme NexusOS 2>/dev/null && echo " [ok] color scheme applied"
+else
+ echo " [skip] plasma-apply-colorscheme not found — apply color scheme manually"
+fi
+
+# ── 5. Kvantum ───────────────────────────────────────────────────────────
+if command -v kvantummanager &>/dev/null; then
+ kvantummanager --set NexusOS 2>/dev/null && echo " [ok] Kvantum set to NexusOS"
+else
+ echo " [skip] kvantummanager not found — install qt5-style-kvantum and run: kvantummanager --set NexusOS"
+fi
+
+# ── 6. KWin Aurorae decoration ───────────────────────────────────────────
+if command -v kwriteconfig5 &>/dev/null; then
+ kwriteconfig5 --file kwinrc \
+ --group "org.kde.kdecoration2" --key library "org.kde.kwin.aurorae"
+ kwriteconfig5 --file kwinrc \
+ --group "org.kde.kdecoration2" --key theme "__aurorae__svg__NexusOS"
+ # Buttons on the right: minimize, maximize, close (I=minimize, A=maximize, X=close)
+ kwriteconfig5 --file kwinrc \
+ --group "org.kde.kdecoration2" --key ButtonsOnLeft ""
+ kwriteconfig5 --file kwinrc \
+ --group "org.kde.kdecoration2" --key ButtonsOnRight "IAX"
+ echo " [ok] KWin decoration: Aurorae NexusOS, buttons right"
+else
+ echo " [skip] kwriteconfig5 not found — configure KWin decoration manually"
+fi
+
+# ── 7. Plasma shell theme ────────────────────────────────────────────────
+if command -v plasma-apply-desktoptheme &>/dev/null; then
+ plasma-apply-desktoptheme NexusOS 2>/dev/null && echo " [ok] Plasma shell theme: NexusOS"
+else
+ echo " [skip] plasma-apply-desktoptheme not found — apply desktop theme manually"
+fi
+
+# ── 8. kscreenlocker ─────────────────────────────────────────────────────
+if command -v kwriteconfig5 &>/dev/null; then
+ kwriteconfig5 --file kscreenlockerrc --group Greeter --key Theme NexusOS
+ echo " [ok] kscreenlocker theme: NexusOS"
+fi
+
+# ── 9. GTK apps under Plasma ─────────────────────────────────────────────
+if command -v kwriteconfig5 &>/dev/null; then
+ kwriteconfig5 --file kdeglobals --group KDE --key widgetStyle "kvantum-dark"
+ kwriteconfig5 --file kdeglobals --group Icons --key Theme NexusOS
+ kwriteconfig5 --file kdeglobals --group General \
+ --key font "Ubuntu,10,-1,5,50,0,0,0,0,0"
+ echo " [ok] kdeglobals: Kvantum style, NexusOS icons, Ubuntu 10"
+fi
+if command -v gsettings &>/dev/null; then
+ gsettings set org.gnome.desktop.interface gtk-theme NexusOS 2>/dev/null || true
+ gsettings set org.gnome.desktop.interface icon-theme NexusOS 2>/dev/null || true
+ echo " [ok] gsettings: GTK theme + icons = NexusOS"
+fi
+
+# ── 10. SDDM login theme ─────────────────────────────────────────────────
+if [[ $NO_SDDM -eq 0 ]]; then
+ echo " Deploying SDDM theme + KDE session entry (requires sudo)..."
+ sudo cp -r "$KDE/sddm/NexusOS-QML" /usr/share/sddm/themes/
+ sudo cp "$REPO/management/sessions/nexusos-kde.desktop" /usr/share/xsessions/
+ if command -v kwriteconfig5 &>/dev/null; then
+ sudo kwriteconfig5 --file /etc/sddm.conf --group Theme --key Current NexusOS-QML
+ else
+ # Fallback: write the INI directly
+ sudo bash -c 'printf "[Theme]\nCurrent=NexusOS-QML\n" > /etc/sddm.conf.d/nexusos.conf'
+ fi
+ echo " [ok] SDDM theme: NexusOS-QML"
+ echo " [ok] KDE session: NexusOS-KDE added to /usr/share/xsessions/"
+else
+ echo " [skip] SDDM (--no-sddm passed)"
+fi
+
+# ── 11. Promethean Terminal desktop launcher ──────────────────────────────
+DESKTOP_SRC="$REPO/bin/promethean/promethean-terminal.desktop"
+DESKTOP_DEST="$HOME/.local/share/applications/promethean-terminal.desktop"
+if [[ -f "$DESKTOP_SRC" ]]; then
+ cp -f "$DESKTOP_SRC" "$DESKTOP_DEST"
+ echo " [ok] Promethean Terminal launcher updated"
+fi
+
+# ── 12. Apply live changes (if Plasma is running) ────────────────────────
+if qdbus org.kde.KWin /KWin reconfigure 2>/dev/null; then
+ echo " [ok] KWin reconfigured"
+ # Restart plasmashell to pick up new shell theme
+ if command -v kquitapp5 &>/dev/null && command -v kstart5 &>/dev/null; then
+ kquitapp5 plasmashell 2>/dev/null
+ sleep 1
+ kstart5 plasmashell &
+ echo " [ok] plasmashell restarted"
+ fi
+fi
+
+echo ""
+echo "NexusOS KDE theme installed. On first KDE session:"
+echo " 1. System Settings → Appearance → verify all components show NexusOS"
+echo " 2. Panel: right-click → Edit Panel to adjust height/position"
+echo " 3. Konsole: Settings → Edit Profile → select Promethean (for Promethean Terminal)"
+echo " 4. Test lock screen: Meta+L"
diff --git a/assets/themes/KDE/konsole/NexusOS-Promethean.colorscheme b/assets/themes/KDE/konsole/NexusOS-Promethean.colorscheme
new file mode 100755
index 0000000..c43aca7
--- /dev/null
+++ b/assets/themes/KDE/konsole/NexusOS-Promethean.colorscheme
@@ -0,0 +1,94 @@
+[General]
+Description=NexusOS Promethean
+Opacity=1
+Wallpaper=
+
+[Background]
+Color=26,0,48
+
+[BackgroundFaint]
+Color=13,0,16
+
+[BackgroundIntense]
+Color=61,0,96
+
+[Foreground]
+Color=204,204,204
+
+[ForegroundFaint]
+Color=140,140,140
+
+[ForegroundIntense]
+Color=230,230,230
+
+[Color0]
+Color=26,0,48
+
+[Color0Faint]
+Color=13,0,24
+
+[Color0Intense]
+Color=61,0,96
+
+[Color1]
+Color=218,68,83
+
+[Color1Faint]
+Color=160,50,60
+
+[Color1Intense]
+Color=235,100,110
+
+[Color2]
+Color=39,174,96
+
+[Color2Faint]
+Color=28,128,70
+
+[Color2Intense]
+Color=80,200,120
+
+[Color3]
+Color=246,116,0
+
+[Color3Faint]
+Color=180,85,0
+
+[Color3Intense]
+Color=255,160,50
+
+[Color4]
+Color=136,0,143
+
+[Color4Faint]
+Color=94,0,100
+
+[Color4Intense]
+Color=176,64,192
+
+[Color5]
+Color=176,64,192
+
+[Color5Faint]
+Color=120,40,135
+
+[Color5Intense]
+Color=210,110,225
+
+[Color6]
+Color=140,198,63
+
+[Color6Faint]
+Color=100,145,45
+
+[Color6Intense]
+Color=184,227,115
+
+[Color7]
+Color=204,204,204
+
+[Color7Faint]
+Color=150,150,150
+
+[Color7Intense]
+Color=230,230,230
diff --git a/assets/themes/KDE/konsole/NexusOS.colorscheme b/assets/themes/KDE/konsole/NexusOS.colorscheme
new file mode 100755
index 0000000..6a761dd
--- /dev/null
+++ b/assets/themes/KDE/konsole/NexusOS.colorscheme
@@ -0,0 +1,94 @@
+[General]
+Description=NexusOS
+Opacity=1
+Wallpaper=
+
+[Background]
+Color=30,21,38
+
+[BackgroundFaint]
+Color=31,34,37
+
+[BackgroundIntense]
+Color=46,50,54
+
+[Foreground]
+Color=242,242,242
+
+[ForegroundFaint]
+Color=168,168,168
+
+[ForegroundIntense]
+Color=255,255,255
+
+[Color0]
+Color=31,34,37
+
+[Color0Faint]
+Color=20,20,25
+
+[Color0Intense]
+Color=58,61,65
+
+[Color1]
+Color=218,68,83
+
+[Color1Faint]
+Color=160,50,60
+
+[Color1Intense]
+Color=235,100,110
+
+[Color2]
+Color=39,174,96
+
+[Color2Faint]
+Color=28,128,70
+
+[Color2Intense]
+Color=80,200,120
+
+[Color3]
+Color=246,116,0
+
+[Color3Faint]
+Color=180,85,0
+
+[Color3Intense]
+Color=255,160,50
+
+[Color4]
+Color=136,0,143
+
+[Color4Faint]
+Color=94,0,100
+
+[Color4Intense]
+Color=162,50,168
+
+[Color5]
+Color=162,50,168
+
+[Color5Faint]
+Color=110,30,115
+
+[Color5Intense]
+Color=200,100,210
+
+[Color6]
+Color=140,198,63
+
+[Color6Faint]
+Color=100,145,45
+
+[Color6Intense]
+Color=184,227,115
+
+[Color7]
+Color=168,168,168
+
+[Color7Faint]
+Color=110,113,115
+
+[Color7Intense]
+Color=242,242,242
diff --git a/assets/themes/KDE/konsole/Promethean.profile b/assets/themes/KDE/konsole/Promethean.profile
new file mode 100755
index 0000000..a4b993e
--- /dev/null
+++ b/assets/themes/KDE/konsole/Promethean.profile
@@ -0,0 +1,36 @@
+[Appearance]
+ColorScheme=NexusOS-Promethean
+Font=Monospace,12,-1,5,50,0,0,0,0,0
+LineSpacing=1
+UseFontLineCharacters=false
+
+[Cursor Options]
+CursorShape=0
+CustomCursorColor=#b040c0
+UseCustomCursorColor=true
+
+[General]
+Command=/bin/bash --rcfile /home/jon/nexus-core/.promethean_bashrc -i
+Name=Promethean
+Parent=FALLBACK/
+TerminalCenter=false
+TerminalColumns=110
+TerminalRows=30
+
+[Interaction Options]
+AutoCopySelectedText=false
+UnderlineFilesEnabled=false
+
+[Scrolling]
+HistoryMode=2
+HistorySize=5000
+ScrollBarPosition=2
+
+[Terminal Features]
+BidiRenderingEnabled=true
+BlinkingCursorEnabled=true
+BlinkingTextEnabled=true
+UrlHintsModifiers=0
+
+[Window]
+RememberWindowSize=true
diff --git a/assets/themes/KDE/kscreenlocker/NexusOS/assets/background.svg b/assets/themes/KDE/kscreenlocker/NexusOS/assets/background.svg
new file mode 100755
index 0000000..395f6f9
--- /dev/null
+++ b/assets/themes/KDE/kscreenlocker/NexusOS/assets/background.svg
@@ -0,0 +1,27 @@
+
+
diff --git a/assets/themes/KDE/kscreenlocker/NexusOS/assets/logo.png b/assets/themes/KDE/kscreenlocker/NexusOS/assets/logo.png
new file mode 100755
index 0000000..c96bb05
Binary files /dev/null and b/assets/themes/KDE/kscreenlocker/NexusOS/assets/logo.png differ
diff --git a/assets/themes/KDE/kscreenlocker/NexusOS/contents/config/main.xml b/assets/themes/KDE/kscreenlocker/NexusOS/contents/config/main.xml
new file mode 100755
index 0000000..6747792
--- /dev/null
+++ b/assets/themes/KDE/kscreenlocker/NexusOS/contents/config/main.xml
@@ -0,0 +1,9 @@
+
+
+
+
+
+
diff --git a/assets/themes/KDE/kscreenlocker/NexusOS/contents/ui/LockScreenUi.qml b/assets/themes/KDE/kscreenlocker/NexusOS/contents/ui/LockScreenUi.qml
new file mode 100755
index 0000000..7d130a5
--- /dev/null
+++ b/assets/themes/KDE/kscreenlocker/NexusOS/contents/ui/LockScreenUi.qml
@@ -0,0 +1,268 @@
+import QtQuick 2.15
+import QtQuick.Controls 2.15
+import org.kde.plasma.core 2.0 as PlasmaCore
+
+/*
+ * NexusOS kscreenlocker theme.
+ * Mirrors the SDDM NexusOS-QML aesthetic: logo upper-center,
+ * clock/date bottom-center, centered password box.
+ *
+ * kscreenlocker API differences from SDDM:
+ * - authenticator.tryUnlock(password) instead of sddm.login(...)
+ * - authenticator.failed / authenticator.succeeded signals
+ * - No session selector, no power buttons
+ * - walletModel, userModel available but not mandatory
+ */
+
+Rectangle {
+ id: root
+
+ // kscreenlocker injects these from the surrounding PlasmaShell context
+ property bool locked: true
+
+ readonly property color accentColor: "#8cc63f" // brand_green
+ readonly property color bgDark: "#1e1526" // base_bg
+ readonly property color textPrimary: "#f2f2f2"
+ readonly property color textMuted: "#a8a8a8"
+ readonly property color fieldBg: "#1f2225" // surface_bg
+ readonly property color fieldBorder: "#4d3461" // menu_border
+ readonly property color errorColor: "#da4453"
+
+ anchors.fill: parent
+ color: bgDark
+
+ // ── Background image (reuses SDDM background asset) ────────────────
+ Image {
+ anchors.fill: parent
+ source: Qt.resolvedUrl("../../assets/background.svg")
+ fillMode: Image.PreserveAspectCrop
+ smooth: true
+ asynchronous: false
+ }
+
+ Rectangle {
+ anchors.fill: parent
+ color: "#000000"
+ opacity: 0.30
+ }
+
+ // ── Logo area ───────────────────────────────────────────────────────
+ Item {
+ id: logoArea
+ width: 100
+ height: 100
+ anchors.horizontalCenter: parent.horizontalCenter
+ anchors.top: parent.top
+ anchors.topMargin: parent.height * 0.10
+
+ Rectangle {
+ anchors.centerIn: parent
+ width: parent.width * 1.6
+ height: parent.height * 1.6
+ radius: width / 2
+ color: accentColor
+ opacity: 0.06
+ }
+
+ Image {
+ anchors.fill: parent
+ source: Qt.resolvedUrl("../../assets/logo.png")
+ sourceSize: Qt.size(200, 200)
+ smooth: true
+ }
+ }
+
+ Text {
+ text: "NexusOS"
+ color: textPrimary
+ font.family: "Sans"
+ font.pixelSize: 26
+ font.letterSpacing: 6
+ font.weight: Font.Light
+ anchors.horizontalCenter: parent.horizontalCenter
+ anchors.top: logoArea.bottom
+ anchors.topMargin: 14
+ }
+
+ // ── Password box ────────────────────────────────────────────────────
+ Rectangle {
+ id: loginBox
+ width: 340
+ height: loginColumn.height + 56
+ anchors.horizontalCenter: parent.horizontalCenter
+ anchors.verticalCenter: parent.verticalCenter
+ color: Qt.rgba(30/255, 21/255, 38/255, 0.80)
+ radius: 12
+ border.color: fieldBorder
+ border.width: 1
+
+ SequentialAnimation {
+ id: shakeAnim
+ NumberAnimation { target: loginBox; property: "x"; to: loginBox.x - 10; duration: 50 }
+ NumberAnimation { target: loginBox; property: "x"; to: loginBox.x + 10; duration: 50 }
+ NumberAnimation { target: loginBox; property: "x"; to: loginBox.x - 6; duration: 50 }
+ NumberAnimation { target: loginBox; property: "x"; to: loginBox.x + 6; duration: 50 }
+ NumberAnimation { target: loginBox; property: "x"; to: loginBox.x; duration: 40 }
+ }
+
+ Column {
+ id: loginColumn
+ anchors.left: parent.left
+ anchors.right: parent.right
+ anchors.top: parent.top
+ anchors.margins: 28
+ spacing: 12
+
+ // Username label (read-only; kscreenlocker always locks current session)
+ Text {
+ width: parent.width
+ text: kscreenlocker_userName || userModel.data(userModel.index(0, 0), Qt.DisplayRole) || ""
+ color: textPrimary
+ font.pixelSize: 14
+ font.weight: Font.Medium
+ horizontalAlignment: Text.AlignHCenter
+ elide: Text.ElideRight
+ }
+
+ // Password field
+ Rectangle {
+ width: parent.width
+ height: 44
+ color: fieldBg
+ radius: 6
+ border.color: passwordInput.activeFocus ? accentColor : fieldBorder
+ border.width: 1
+
+ TextInput {
+ id: passwordInput
+ anchors.fill: parent
+ anchors.leftMargin: 14
+ anchors.rightMargin: 14
+ verticalAlignment: TextInput.AlignVCenter
+ color: textPrimary
+ font.pixelSize: 14
+ echoMode: TextInput.Password
+ focus: true
+ clip: true
+
+ Keys.onReturnPressed: authenticator.tryUnlock(passwordInput.text)
+ Keys.onEnterPressed: authenticator.tryUnlock(passwordInput.text)
+ }
+
+ Text {
+ anchors.verticalCenter: parent.verticalCenter
+ anchors.left: parent.left
+ anchors.leftMargin: 14
+ text: "Password"
+ color: textMuted
+ font.pixelSize: 14
+ visible: passwordInput.text.length === 0 && !passwordInput.activeFocus
+ }
+ }
+
+ // Error message
+ Text {
+ id: errorMsg
+ width: parent.width
+ text: ""
+ color: errorColor
+ font.pixelSize: 12
+ horizontalAlignment: Text.AlignHCenter
+ wrapMode: Text.WordWrap
+ visible: text !== ""
+ }
+
+ // Unlock button
+ Rectangle {
+ id: unlockButton
+ width: parent.width
+ height: 44
+ radius: 6
+ color: unlockMouse.pressed
+ ? Qt.darker(accentColor, 1.3)
+ : unlockMouse.containsMouse
+ ? Qt.lighter(accentColor, 1.15)
+ : accentColor
+
+ Behavior on color { ColorAnimation { duration: 150 } }
+
+ Text {
+ anchors.centerIn: parent
+ text: "UNLOCK"
+ color: "#0a0a00" // text_on_accent
+ font.pixelSize: 14
+ font.letterSpacing: 3
+ font.weight: Font.DemiBold
+ }
+
+ MouseArea {
+ id: unlockMouse
+ anchors.fill: parent
+ hoverEnabled: true
+ cursorShape: Qt.PointingHandCursor
+ onClicked: authenticator.tryUnlock(passwordInput.text)
+ }
+ }
+ }
+ }
+
+ // ── Authenticator connections ───────────────────────────────────────
+ Connections {
+ target: authenticator
+
+ function onFailed() {
+ errorMsg.text = "Incorrect password — try again."
+ passwordInput.text = ""
+ passwordInput.forceActiveFocus()
+ shakeAnim.start()
+ }
+
+ function onSucceeded() {
+ errorMsg.text = ""
+ }
+
+ function onGraceLockedChanged() {}
+ function onMessage(msg) {}
+ function onError(err) {
+ errorMsg.text = err
+ }
+ }
+
+ // ── Clock / date (bottom) ───────────────────────────────────────────
+ Column {
+ anchors.horizontalCenter: parent.horizontalCenter
+ anchors.bottom: parent.bottom
+ anchors.bottomMargin: parent.height * 0.05
+ spacing: 2
+
+ Text {
+ id: clockText
+ anchors.horizontalCenter: parent.horizontalCenter
+ color: textPrimary
+ font.family: "Sans"
+ font.pixelSize: 42
+ font.weight: Font.Thin
+ }
+
+ Text {
+ id: dateText
+ anchors.horizontalCenter: parent.horizontalCenter
+ color: textMuted
+ font.family: "Sans"
+ font.pixelSize: 14
+ font.letterSpacing: 2
+ }
+
+ Timer {
+ interval: 1000
+ running: true
+ repeat: true
+ triggeredOnStart: true
+ onTriggered: {
+ var d = new Date()
+ clockText.text = Qt.formatTime(d, "hh:mm")
+ dateText.text = Qt.formatDate(d, "dddd, MMMM d")
+ }
+ }
+ }
+}
diff --git a/assets/themes/KDE/kscreenlocker/NexusOS/metadata.desktop b/assets/themes/KDE/kscreenlocker/NexusOS/metadata.desktop
new file mode 100755
index 0000000..1109447
--- /dev/null
+++ b/assets/themes/KDE/kscreenlocker/NexusOS/metadata.desktop
@@ -0,0 +1,10 @@
+[Desktop Entry]
+Name=NexusOS
+Comment=NexusOS lock screen — dark purple, lime-green accents
+Type=Service
+X-KDE-ServiceTypes=org.kde.kscreenlocker.Greeter
+
+[ScreenLocker]
+Name=NexusOS
+Description=NexusOS lock screen — dark purple, lime-green accents
+MainScript=contents/ui/LockScreenUi.qml
diff --git a/assets/themes/KDE/kvantum/NexusOS/NexusOS.kvconfig b/assets/themes/KDE/kvantum/NexusOS/NexusOS.kvconfig
new file mode 100755
index 0000000..8f44e00
--- /dev/null
+++ b/assets/themes/KDE/kvantum/NexusOS/NexusOS.kvconfig
@@ -0,0 +1,397 @@
+[%GradualConfiguration]
+# Toolbar / menubar gradient — flat: both ends same color
+left.header.color=#2a2e32
+right.header.color=#2a2e32
+header.text.color=#f2f2f2
+header.text.shadow.color=0,0,0,0
+left.dock.header.color=#1e1526
+right.dock.header.color=#1e1526
+dock.header.text.color=#f2f2f2
+dock.header.text.shadow.color=0,0,0,0
+
+[%ThemeHacks]
+transparent.menus=false
+transparent.tooltips=false
+blurring=false
+composite=false
+
+[General]
+author=NexusOS
+comment=Flat dark purple theme, lime-green accents, purple selections
+x11drag=all
+double.click.exception=
+group.label.boldFont=false
+menubar.mouse.tracking=true
+toolbutton.style=0
+dialog.button.layout=0
+splitter.width=4
+scroll.arrows=false
+scroll.min.extent=36
+tooltip.delay=500
+tooltip.count=1
+vertical.center.dialogs=true
+inline.spin.indicators=true
+transient.scrollbar=false
+submenu.overlap=3
+submenu.delay=250
+shadow.spread=0
+shadow.x.offset=0
+shadow.y.offset=0
+focus.rect.color=#8cc63f
+reduce.window.opacity=0
+reduce.menu.opacity=0
+small.icon.size=16
+large.icon.size=32
+button.icon.size=16
+toolbar.icon.size=16
+
+[PanelButtonCommand]
+inherits=PanelButtonTool
+frame=false
+interior=true
+interior.element=button
+interior.x.padding=8
+interior.y.padding=4
+indicator.size=0
+text.shadow=0
+text.margin=1
+text.bold=false
+min.height=26
+min.width=60
+
+[PanelButtonTool]
+frame=false
+interior=true
+interior.element=toolbutton
+interior.x.padding=6
+interior.y.padding=3
+indicator.size=0
+text.shadow=0
+text.margin=0
+text.bold=false
+min.height=22
+min.width=0
+
+[ToolbarButton]
+inherits=PanelButtonTool
+
+[Dock]
+frame=false
+interior=true
+interior.element=dock
+
+[DockTitle]
+frame=false
+interior=false
+indicator.element=arrow
+text.margin=3
+text.shadow=0
+
+[TitleBar]
+frame=false
+interior=true
+interior.element=titlebar
+indicator.element=button
+min.height=30
+text.margin=4
+text.shadow=0
+text.bold=false
+
+[GroupBox]
+frame=true
+frame.element=groupbox
+frame.top=6
+frame.bottom=2
+frame.left=2
+frame.right=2
+interior=false
+text.margin=4
+text.shadow=0
+text.bold=false
+text.italic=false
+
+[LineEdit]
+frame=false
+interior=true
+interior.element=lineedit
+interior.x.padding=8
+interior.y.padding=4
+min.height=26
+min.width=0
+
+[DropDownButton]
+frame=false
+interior=true
+interior.element=button
+indicator.element=arrow-down
+indicator.size=10
+
+[ToolboxTab]
+frame=false
+interior=true
+interior.element=tab
+text.margin=4
+text.shadow=0
+text.bold=false
+
+[Tab]
+frame=false
+interior=true
+interior.element=tab
+interior.x.padding=10
+interior.y.padding=4
+indicator.element=tab-close
+indicator.size=12
+text.shadow=0
+text.margin=2
+min.height=26
+min.width=60
+
+[TabFrame]
+frame=false
+interior=true
+interior.element=tabframe
+frame.top=0
+frame.bottom=0
+frame.left=0
+frame.right=0
+
+[TreeExpander]
+frame=false
+interior=false
+indicator.element=arrow
+indicator.size=10
+
+[HeaderSection]
+frame=false
+interior=true
+interior.element=header
+interior.x.padding=6
+interior.y.padding=3
+indicator.element=arrow
+indicator.size=10
+text.shadow=0
+min.height=24
+
+[SizeGrip]
+frame=false
+interior=false
+indicator.element=sizegrip
+indicator.size=14
+
+[Splitter]
+frame=false
+interior=true
+interior.element=splitter
+min.height=4
+min.width=4
+
+[Slider]
+frame=false
+interior=true
+interior.element=slider
+indicator.element=slider-handle
+indicator.size=16
+min.height=4
+min.width=4
+
+[SliderCursorFlat]
+frame=false
+interior=true
+interior.element=slider-handle
+min.height=16
+min.width=16
+
+[ProgressbarContents]
+frame=false
+interior=true
+interior.element=progressbar-fill
+
+[Progressbar]
+frame=false
+interior=true
+interior.element=progressbar
+indicator.size=0
+text.shadow=0
+min.height=6
+min.width=0
+
+[ItemView]
+frame=false
+interior=true
+interior.element=itemview
+interior.x.padding=4
+interior.y.padding=2
+
+[Toolbar]
+frame=false
+interior=true
+interior.element=toolbar
+interior.x.padding=2
+interior.y.padding=2
+indicator.element=toolbar-handle
+indicator.size=8
+
+[ScrollbarSlider]
+frame=false
+interior=true
+interior.element=scrollbar-slider
+min.height=36
+min.width=8
+
+[ScrollbarGroove]
+frame=false
+interior=true
+interior.element=scrollbar-groove
+
+[Scrollbar]
+frame=false
+interior=true
+interior.element=scrollbar-groove
+indicator.element=arrow
+indicator.size=0
+min.height=8
+min.width=8
+
+[ScrollArrow]
+frame=false
+interior=false
+indicator.element=arrow
+indicator.size=8
+min.height=0
+min.width=0
+
+[CheckBox]
+frame=false
+interior=true
+interior.element=checkbox
+indicator.element=checkbox-indicator
+indicator.size=14
+text.shadow=0
+text.margin=3
+min.height=16
+min.width=16
+
+[RadioButton]
+frame=false
+interior=true
+interior.element=radiobutton
+indicator.element=radiobutton-indicator
+indicator.size=8
+text.shadow=0
+text.margin=3
+min.height=16
+min.width=16
+
+[Separator]
+frame=false
+interior=true
+interior.element=separator
+min.height=1
+min.width=1
+
+[ComboBox]
+frame=false
+interior=true
+interior.element=combobox
+interior.x.padding=8
+interior.y.padding=4
+indicator.element=arrow-down
+indicator.size=10
+min.height=26
+min.width=0
+
+[SpinBox]
+frame=false
+interior=true
+interior.element=spinbox
+interior.x.padding=6
+interior.y.padding=3
+indicator.element=arrow
+indicator.size=10
+min.height=26
+min.width=0
+
+[Frame]
+frame=true
+frame.element=frame
+frame.top=1
+frame.bottom=1
+frame.left=1
+frame.right=1
+interior=false
+
+[MenuItem]
+frame=false
+interior=true
+interior.element=menuitem
+interior.x.padding=6
+interior.y.padding=1
+indicator.element=menuitem-arrow
+indicator.size=10
+text.shadow=0
+min.height=22
+
+[Menu]
+frame=false
+interior=true
+interior.element=menu
+interior.x.padding=0
+interior.y.padding=2
+text.shadow=0
+min.height=0
+min.width=0
+
+[Menubar]
+frame=false
+interior=true
+interior.element=menubar
+text.shadow=0
+
+[MenubarItem]
+frame=false
+interior=true
+interior.element=menubaritem
+interior.x.padding=10
+interior.y.padding=4
+text.shadow=0
+
+[ToolTip]
+frame=false
+interior=true
+interior.element=tooltip
+interior.x.padding=8
+interior.y.padding=4
+text.shadow=0
+min.height=0
+min.width=0
+
+[StatusBar]
+frame=false
+interior=true
+interior.element=statusbar
+
+[Window]
+frame=false
+interior=true
+interior.element=window
+interior.x.padding=0
+interior.y.padding=0
+
+[Dialog]
+frame=false
+interior=true
+interior.element=window
+
+[MessageBox]
+inherits=Dialog
+text.bold=false
+
+[GenericFrame]
+frame=true
+frame.element=frame
+frame.top=1
+frame.bottom=1
+frame.left=1
+frame.right=1
+interior=false
diff --git a/assets/themes/KDE/kvantum/NexusOS/NexusOS.svg b/assets/themes/KDE/kvantum/NexusOS/NexusOS.svg
new file mode 100755
index 0000000..0c7a5d2
--- /dev/null
+++ b/assets/themes/KDE/kvantum/NexusOS/NexusOS.svg
@@ -0,0 +1,619 @@
+
+
+
diff --git a/assets/themes/KDE/plasma/NexusOS/NexusOS.colors b/assets/themes/KDE/plasma/NexusOS/NexusOS.colors
new file mode 100755
index 0000000..1d7b77c
--- /dev/null
+++ b/assets/themes/KDE/plasma/NexusOS/NexusOS.colors
@@ -0,0 +1,118 @@
+[ColorEffects:Disabled]
+Color=56,56,56
+ColorAmount=0
+ColorEffect=0
+ContrastAmount=0.1
+ContrastEffect=2
+IntensityAmount=0
+IntensityEffect=0
+
+[ColorEffects:Inactive]
+ChangeSelectionColor=true
+Color=112,111,110
+ColorAmount=0.025
+ColorEffect=0
+ContrastAmount=0.1
+ContrastEffect=2
+Enable=false
+IntensityAmount=0
+IntensityEffect=0
+
+[Colors:Window]
+BackgroundNormal=30,21,38
+BackgroundAlternate=31,34,37
+ForegroundNormal=242,242,242
+ForegroundInactive=168,168,168
+ForegroundActive=140,198,63
+ForegroundLink=184,227,115
+ForegroundVisited=162,50,168
+ForegroundNegative=218,68,83
+ForegroundNeutral=246,116,0
+ForegroundPositive=39,174,96
+DecorationFocus=140,198,63
+DecorationHover=136,0,143
+[Colors:View]
+BackgroundNormal=30,21,38
+BackgroundAlternate=31,34,37
+ForegroundNormal=242,242,242
+ForegroundInactive=168,168,168
+ForegroundActive=140,198,63
+ForegroundLink=184,227,115
+ForegroundVisited=162,50,168
+ForegroundNegative=218,68,83
+ForegroundNeutral=246,116,0
+ForegroundPositive=39,174,96
+DecorationFocus=140,198,63
+DecorationHover=136,0,143
+[Colors:Button]
+BackgroundNormal=42,46,50
+BackgroundAlternate=30,21,38
+ForegroundNormal=242,242,242
+ForegroundInactive=168,168,168
+ForegroundActive=140,198,63
+ForegroundLink=184,227,115
+ForegroundVisited=162,50,168
+ForegroundNegative=218,68,83
+ForegroundNeutral=246,116,0
+ForegroundPositive=39,174,96
+DecorationFocus=140,198,63
+DecorationHover=136,0,143
+[Colors:Selection]
+BackgroundNormal=136,0,143
+BackgroundAlternate=107,166,42
+ForegroundNormal=255,255,255
+ForegroundInactive=255,255,255
+ForegroundActive=140,198,63
+ForegroundLink=184,227,115
+ForegroundVisited=162,50,168
+ForegroundNegative=218,68,83
+ForegroundNeutral=246,116,0
+ForegroundPositive=39,174,96
+DecorationFocus=140,198,63
+DecorationHover=136,0,143
+[Colors:Tooltip]
+BackgroundNormal=46,50,54
+BackgroundAlternate=58,61,65
+ForegroundNormal=242,242,242
+ForegroundInactive=168,168,168
+ForegroundActive=140,198,63
+ForegroundLink=184,227,115
+ForegroundVisited=162,50,168
+ForegroundNegative=218,68,83
+ForegroundNeutral=246,116,0
+ForegroundPositive=39,174,96
+DecorationFocus=140,198,63
+DecorationHover=136,0,143
+[Colors:Complementary]
+BackgroundNormal=42,46,50
+BackgroundAlternate=46,50,54
+ForegroundNormal=242,242,242
+ForegroundInactive=168,168,168
+ForegroundActive=140,198,63
+ForegroundLink=184,227,115
+ForegroundVisited=162,50,168
+ForegroundNegative=218,68,83
+ForegroundNeutral=246,116,0
+ForegroundPositive=39,174,96
+DecorationFocus=140,198,63
+DecorationHover=136,0,143
+[Colors:Header]
+BackgroundNormal=30,21,38
+BackgroundAlternate=42,46,50
+ForegroundNormal=242,242,242
+ForegroundInactive=168,168,168
+ForegroundActive=140,198,63
+ForegroundLink=184,227,115
+ForegroundVisited=162,50,168
+ForegroundNegative=218,68,83
+ForegroundNeutral=246,116,0
+ForegroundPositive=39,174,96
+DecorationFocus=140,198,63
+DecorationHover=136,0,143
+[General]
+ColorScheme=NexusOS
+Name=NexusOS
+shadeSortColumn=true
+
+[KDE]
+contrast=4
diff --git a/assets/themes/KDE/plasma/NexusOS/colors b/assets/themes/KDE/plasma/NexusOS/colors
new file mode 100755
index 0000000..f7ff83a
--- /dev/null
+++ b/assets/themes/KDE/plasma/NexusOS/colors
@@ -0,0 +1,53 @@
+[Colors:Window]
+BackgroundNormal=30,21,38
+BackgroundAlternate=31,34,37
+ForegroundNormal=242,242,242
+ForegroundInactive=168,168,168
+ForegroundActive=140,198,63
+DecorationFocus=140,198,63
+DecorationHover=136,0,143
+
+[Colors:Button]
+BackgroundNormal=42,46,50
+BackgroundAlternate=30,21,38
+ForegroundNormal=242,242,242
+ForegroundInactive=168,168,168
+ForegroundActive=140,198,63
+DecorationFocus=140,198,63
+DecorationHover=136,0,143
+
+[Colors:View]
+BackgroundNormal=30,21,38
+BackgroundAlternate=31,34,37
+ForegroundNormal=242,242,242
+ForegroundInactive=168,168,168
+ForegroundActive=140,198,63
+DecorationFocus=140,198,63
+DecorationHover=136,0,143
+
+[Colors:Selection]
+BackgroundNormal=136,0,143
+BackgroundAlternate=107,166,42
+ForegroundNormal=255,255,255
+ForegroundInactive=255,255,255
+ForegroundActive=140,198,63
+DecorationFocus=140,198,63
+DecorationHover=136,0,143
+
+[Colors:Tooltip]
+BackgroundNormal=46,50,54
+BackgroundAlternate=58,61,65
+ForegroundNormal=242,242,242
+ForegroundInactive=168,168,168
+ForegroundActive=140,198,63
+DecorationFocus=140,198,63
+DecorationHover=136,0,143
+
+[Colors:Complementary]
+BackgroundNormal=42,46,50
+BackgroundAlternate=46,50,54
+ForegroundNormal=242,242,242
+ForegroundInactive=168,168,168
+ForegroundActive=140,198,63
+DecorationFocus=140,198,63
+DecorationHover=136,0,143
diff --git a/assets/themes/KDE/plasma/NexusOS/metadata.desktop b/assets/themes/KDE/plasma/NexusOS/metadata.desktop
new file mode 100755
index 0000000..e9d00b8
--- /dev/null
+++ b/assets/themes/KDE/plasma/NexusOS/metadata.desktop
@@ -0,0 +1,16 @@
+[Desktop Entry]
+Name=NexusOS
+Comment=Dark purple Plasma shell theme, lime-green accents
+Type=Service
+
+[KPackageStructure]
+X-KDE-ServiceTypes=Plasma/Theme
+
+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-License=GPL
+X-KDE-PluginInfo-EnabledByDefault=false
diff --git a/assets/themes/KDE/plasma/NexusOS/opaque/widgets/panel-background.svg b/assets/themes/KDE/plasma/NexusOS/opaque/widgets/panel-background.svg
new file mode 100755
index 0000000..2c360c5
--- /dev/null
+++ b/assets/themes/KDE/plasma/NexusOS/opaque/widgets/panel-background.svg
@@ -0,0 +1,27 @@
+
+
+
diff --git a/assets/themes/KDE/plasma/NexusOS/widgets/background.svg b/assets/themes/KDE/plasma/NexusOS/widgets/background.svg
new file mode 100755
index 0000000..04dbe18
--- /dev/null
+++ b/assets/themes/KDE/plasma/NexusOS/widgets/background.svg
@@ -0,0 +1,27 @@
+
+
+
diff --git a/assets/themes/KDE/plasma/NexusOS/widgets/button.svg b/assets/themes/KDE/plasma/NexusOS/widgets/button.svg
new file mode 100755
index 0000000..af5f63b
--- /dev/null
+++ b/assets/themes/KDE/plasma/NexusOS/widgets/button.svg
@@ -0,0 +1,36 @@
+
+
+
diff --git a/assets/themes/KDE/plasma/NexusOS/widgets/panel-background.svg b/assets/themes/KDE/plasma/NexusOS/widgets/panel-background.svg
new file mode 100755
index 0000000..c48eb7b
--- /dev/null
+++ b/assets/themes/KDE/plasma/NexusOS/widgets/panel-background.svg
@@ -0,0 +1,53 @@
+
+
+
diff --git a/assets/themes/KDE/plasma/NexusOS/widgets/plasmoidheading.svg b/assets/themes/KDE/plasma/NexusOS/widgets/plasmoidheading.svg
new file mode 100755
index 0000000..28a3f8e
--- /dev/null
+++ b/assets/themes/KDE/plasma/NexusOS/widgets/plasmoidheading.svg
@@ -0,0 +1,23 @@
+
+
+
diff --git a/assets/themes/KDE/plasma/NexusOS/widgets/tooltip.svg b/assets/themes/KDE/plasma/NexusOS/widgets/tooltip.svg
new file mode 100755
index 0000000..7e925b4
--- /dev/null
+++ b/assets/themes/KDE/plasma/NexusOS/widgets/tooltip.svg
@@ -0,0 +1,24 @@
+
+
+
diff --git a/assets/themes/KDE/sddm/NexusOS-QML/Main.qml b/assets/themes/KDE/sddm/NexusOS-QML/Main.qml
new file mode 100755
index 0000000..e8b5ed7
--- /dev/null
+++ b/assets/themes/KDE/sddm/NexusOS-QML/Main.qml
@@ -0,0 +1,397 @@
+import QtQuick 2.0
+import SddmComponents 2.0
+
+Rectangle {
+ id: root
+ width: 1920
+ height: 1200
+
+ readonly property color accentColor: "#8cc63f" // brand_green
+ readonly property color bgDark: "#1e1526" // base_bg
+ readonly property color textPrimary: "#f2f2f2" // text_primary
+ readonly property color textMuted: "#a8a8a8" // text_secondary
+ readonly property color fieldBg: "#1f2225" // surface_bg
+ readonly property color fieldBorder: "#4d3461" // menu_border (purple tint)
+ readonly property color errorColor: "#da4453" // error_color
+
+ property int sessionIndex: sessionModel.lastIndex
+
+ Connections {
+ target: sddm
+ onLoginFailed: {
+ errorMsg.text = "Login failed — check your credentials."
+ passwordInput.text = ""
+ passwordInput.focus = true
+ shakeAnim.start()
+ }
+ onLoginSucceeded: {
+ errorMsg.text = ""
+ }
+ }
+
+ Image {
+ anchors.fill: parent
+ source: "assets/background.svg"
+ fillMode: Image.PreserveAspectCrop
+ smooth: true
+ asynchronous: false
+ }
+
+ Rectangle {
+ anchors.fill: parent
+ color: "#000000"
+ opacity: 0.25
+ }
+
+ Item {
+ id: logoArea
+ width: 120
+ height: 120
+ anchors.horizontalCenter: parent.horizontalCenter
+ anchors.top: parent.top
+ anchors.topMargin: parent.height * 0.10
+
+ Rectangle {
+ anchors.centerIn: parent
+ width: parent.width * 1.6
+ height: parent.height * 1.6
+ radius: width / 2
+ color: accentColor
+ opacity: 0.06
+ }
+
+ Image {
+ id: logo
+ anchors.fill: parent
+ source: "assets/logo.png"
+ sourceSize: Qt.size(200, 200)
+ smooth: true
+ }
+ }
+
+ Text {
+ id: brandLabel
+ text: "NexusOS"
+ color: textPrimary
+ font.family: "Sans"
+ font.pixelSize: 28
+ font.letterSpacing: 6
+ font.weight: Font.Light
+ anchors.horizontalCenter: parent.horizontalCenter
+ anchors.top: logoArea.bottom
+ anchors.topMargin: 16
+ }
+
+ Rectangle {
+ id: loginBox
+ width: 360
+ height: loginColumn.height + 60
+ anchors.horizontalCenter: parent.horizontalCenter
+ anchors.top: brandLabel.bottom
+ anchors.topMargin: parent.height * 0.08
+ color: Qt.rgba(15/255, 22/255, 38/255, 0.75)
+ radius: 12
+ border.color: fieldBorder
+ border.width: 1
+
+ SequentialAnimation {
+ id: shakeAnim
+ NumberAnimation { target: loginBox; property: "x"; to: loginBox.x - 10; duration: 50 }
+ NumberAnimation { target: loginBox; property: "x"; to: loginBox.x + 10; duration: 50 }
+ NumberAnimation { target: loginBox; property: "x"; to: loginBox.x - 6; duration: 50 }
+ NumberAnimation { target: loginBox; property: "x"; to: loginBox.x + 6; duration: 50 }
+ NumberAnimation { target: loginBox; property: "x"; to: loginBox.x; duration: 40 }
+ }
+
+ Column {
+ id: loginColumn
+ anchors.left: parent.left
+ anchors.right: parent.right
+ anchors.top: parent.top
+ anchors.margins: 30
+ spacing: 14
+
+ Rectangle {
+ id: sessionBox
+ width: parent.width
+ height: 40
+ color: fieldBg
+ radius: 6
+ border.color: sessionDropdown.visible ? accentColor : fieldBorder
+ border.width: 1
+
+ Text {
+ anchors.verticalCenter: parent.verticalCenter
+ anchors.left: parent.left
+ anchors.leftMargin: 14
+ anchors.right: sessionArrow.left
+ anchors.rightMargin: 8
+ text: sessionModel.data(sessionModel.index(sessionIndex, 0), Qt.DisplayRole) || "Session"
+ color: textPrimary
+ font.pixelSize: 13
+ elide: Text.ElideRight
+ }
+
+ Text {
+ id: sessionArrow
+ anchors.verticalCenter: parent.verticalCenter
+ anchors.right: parent.right
+ anchors.rightMargin: 14
+ text: sessionDropdown.visible ? "▲" : "▼"
+ color: textMuted
+ font.pixelSize: 10
+ }
+
+ MouseArea {
+ anchors.fill: parent
+ cursorShape: Qt.PointingHandCursor
+ onClicked: {
+ if (!sessionDropdown.visible) {
+ var pos = sessionBox.mapToItem(root, 0, sessionBox.height)
+ sessionDropdown.x = pos.x
+ sessionDropdown.y = pos.y + 2
+ sessionDropdown.width = sessionBox.width
+ }
+ sessionDropdown.visible = !sessionDropdown.visible
+ }
+ }
+ }
+
+ Rectangle {
+ width: parent.width
+ height: 44
+ color: fieldBg
+ radius: 6
+ border.color: usernameInput.activeFocus ? accentColor : fieldBorder
+ border.width: 1
+
+ TextInput {
+ id: usernameInput
+ anchors.fill: parent
+ anchors.leftMargin: 14
+ anchors.rightMargin: 14
+ verticalAlignment: TextInput.AlignVCenter
+ color: textPrimary
+ font.pixelSize: 14
+ clip: true
+ text: userModel.lastUser
+
+ Keys.onTabPressed: passwordInput.forceActiveFocus()
+ Keys.onReturnPressed: sddm.login(usernameInput.text, passwordInput.text, sessionIndex)
+ }
+
+ Text {
+ anchors.verticalCenter: parent.verticalCenter
+ anchors.left: parent.left
+ anchors.leftMargin: 14
+ text: "Username"
+ color: textMuted
+ font.pixelSize: 14
+ visible: usernameInput.text.length === 0 && !usernameInput.activeFocus
+ }
+ }
+
+ Rectangle {
+ width: parent.width
+ height: 44
+ color: fieldBg
+ radius: 6
+ border.color: passwordInput.activeFocus ? accentColor : fieldBorder
+ border.width: 1
+
+ TextInput {
+ id: passwordInput
+ anchors.fill: parent
+ anchors.leftMargin: 14
+ anchors.rightMargin: 14
+ verticalAlignment: TextInput.AlignVCenter
+ color: textPrimary
+ font.pixelSize: 14
+ echoMode: TextInput.Password
+ clip: true
+ focus: true
+
+ Keys.onReturnPressed: sddm.login(usernameInput.text, passwordInput.text, sessionIndex)
+ }
+
+ Text {
+ anchors.verticalCenter: parent.verticalCenter
+ anchors.left: parent.left
+ anchors.leftMargin: 14
+ text: "Password"
+ color: textMuted
+ font.pixelSize: 14
+ visible: passwordInput.text.length === 0 && !passwordInput.activeFocus
+ }
+ }
+
+ Text {
+ id: errorMsg
+ width: parent.width
+ text: ""
+ color: errorColor
+ font.pixelSize: 12
+ horizontalAlignment: Text.AlignHCenter
+ wrapMode: Text.WordWrap
+ visible: text !== ""
+ }
+
+ Rectangle {
+ id: loginButton
+ width: parent.width
+ height: 44
+ radius: 6
+ color: loginMouse.pressed
+ ? Qt.darker(accentColor, 1.3)
+ : loginMouse.containsMouse
+ ? Qt.lighter(accentColor, 1.15)
+ : accentColor
+
+ Behavior on color { ColorAnimation { duration: 150 } }
+
+ Text {
+ anchors.centerIn: parent
+ text: "LOGIN"
+ color: "#0a0a00" // text_on_accent (dark on lime green)
+ font.pixelSize: 14
+ font.letterSpacing: 3
+ font.weight: Font.DemiBold
+ }
+
+ MouseArea {
+ id: loginMouse
+ anchors.fill: parent
+ hoverEnabled: true
+ cursorShape: Qt.PointingHandCursor
+ onClicked: sddm.login(usernameInput.text, passwordInput.text, sessionIndex)
+ }
+ }
+
+ Item {
+ width: parent.width
+ height: 30
+
+ Row {
+ anchors.horizontalCenter: parent.horizontalCenter
+ anchors.verticalCenter: parent.verticalCenter
+ spacing: 30
+
+ Text {
+ text: "⏻ Shutdown"
+ color: textMuted
+ font.pixelSize: 12
+ opacity: shutdownMouse.containsMouse ? 1.0 : 0.7
+ Behavior on opacity { NumberAnimation { duration: 120 } }
+
+ MouseArea {
+ id: shutdownMouse
+ anchors.fill: parent
+ hoverEnabled: true
+ cursorShape: Qt.PointingHandCursor
+ onClicked: sddm.powerOff()
+ }
+ }
+
+ Text {
+ text: "↻ Reboot"
+ color: textMuted
+ font.pixelSize: 12
+ opacity: rebootMouse.containsMouse ? 1.0 : 0.7
+ Behavior on opacity { NumberAnimation { duration: 120 } }
+
+ MouseArea {
+ id: rebootMouse
+ anchors.fill: parent
+ hoverEnabled: true
+ cursorShape: Qt.PointingHandCursor
+ onClicked: sddm.reboot()
+ }
+ }
+ }
+ }
+ }
+ }
+
+ Rectangle {
+ id: sessionDropdown
+ visible: false
+ z: 999
+ color: fieldBg
+ radius: 6
+ border.color: fieldBorder
+ border.width: 1
+ height: sessionList.contentHeight
+ clip: true
+
+ ListView {
+ id: sessionList
+ anchors.fill: parent
+ model: sessionModel
+ interactive: false
+
+ delegate: Rectangle {
+ width: sessionList.width
+ height: 36
+ color: sessionItemMouse.containsMouse ? Qt.lighter(fieldBg, 1.4) : "transparent"
+ radius: 4
+
+ Text {
+ anchors.verticalCenter: parent.verticalCenter
+ anchors.left: parent.left
+ anchors.leftMargin: 14
+ text: model.name || ""
+ color: index === sessionIndex ? accentColor : textPrimary
+ font.pixelSize: 13
+ }
+
+ MouseArea {
+ id: sessionItemMouse
+ anchors.fill: parent
+ hoverEnabled: true
+ cursorShape: Qt.PointingHandCursor
+ onClicked: {
+ sessionIndex = index
+ sessionDropdown.visible = false
+ }
+ }
+ }
+ }
+ }
+
+ Column {
+ anchors.horizontalCenter: parent.horizontalCenter
+ anchors.bottom: parent.bottom
+ anchors.bottomMargin: parent.height * 0.05
+ spacing: 2
+
+ Text {
+ id: clockText
+ anchors.horizontalCenter: parent.horizontalCenter
+ color: textPrimary
+ font.family: "Sans"
+ font.pixelSize: 42
+ font.weight: Font.Thin
+ }
+
+ Text {
+ id: dateText
+ anchors.horizontalCenter: parent.horizontalCenter
+ color: textMuted
+ font.family: "Sans"
+ font.pixelSize: 14
+ font.letterSpacing: 2
+ }
+
+ Timer {
+ interval: 1000
+ running: true
+ repeat: true
+ triggeredOnStart: true
+ onTriggered: {
+ var d = new Date()
+ clockText.text = Qt.formatTime(d, "hh:mm")
+ dateText.text = Qt.formatDate(d, "dddd, MMMM d")
+ }
+ }
+ }
+}
diff --git a/assets/themes/KDE/sddm/NexusOS-QML/assets/background.svg b/assets/themes/KDE/sddm/NexusOS-QML/assets/background.svg
new file mode 100755
index 0000000..395f6f9
--- /dev/null
+++ b/assets/themes/KDE/sddm/NexusOS-QML/assets/background.svg
@@ -0,0 +1,27 @@
+
+
diff --git a/assets/themes/KDE/sddm/NexusOS-QML/assets/logo.png b/assets/themes/KDE/sddm/NexusOS-QML/assets/logo.png
new file mode 100755
index 0000000..c96bb05
Binary files /dev/null and b/assets/themes/KDE/sddm/NexusOS-QML/assets/logo.png differ
diff --git a/assets/themes/KDE/sddm/NexusOS-QML/metadata.desktop b/assets/themes/KDE/sddm/NexusOS-QML/metadata.desktop
new file mode 100755
index 0000000..f4aa5a1
--- /dev/null
+++ b/assets/themes/KDE/sddm/NexusOS-QML/metadata.desktop
@@ -0,0 +1,10 @@
+[SddmGreeterTheme]
+Name=NexusOS-QML
+Description=Dark brushed-metal lockscreen theme with flat N logo, upper-center branding, and centered login box.
+Author=Jon
+Version=1.0
+Website=
+Screenshot=
+MainScript=Main.qml
+ConfigFile=theme.conf
+TranslationsDirectory=
diff --git a/assets/themes/KDE/sddm/NexusOS-QML/theme.conf b/assets/themes/KDE/sddm/NexusOS-QML/theme.conf
new file mode 100755
index 0000000..115bc41
--- /dev/null
+++ b/assets/themes/KDE/sddm/NexusOS-QML/theme.conf
@@ -0,0 +1,16 @@
+[General]
+# ── NexusOS-QML Theme Configuration ──
+
+background=assets/background.svg
+logo=assets/logo.png
+
+# Color palette
+accentColor=#8cc63f
+bgDark=#1e1526
+textPrimary=#f2f2f2
+textMuted=#a8a8a8
+fieldBg=#1f2225
+fieldBorder=#4d3461
+errorColor=#da4453
+
+type=color
diff --git a/assets/themes/LICENSE b/assets/themes/LICENSE
old mode 100644
new mode 100755
diff --git a/assets/themes/NexusOS-gtk2-src/build.py b/assets/themes/NexusOS-gtk2-src/build.py
old mode 100644
new mode 100755
diff --git a/assets/themes/NexusOS-icons-src/_backup/folder-nexus-core-original/128.png b/assets/themes/NexusOS-icons-src/_backup/folder-nexus-core-original/128.png
old mode 100644
new mode 100755
diff --git a/assets/themes/NexusOS-icons-src/_backup/folder-nexus-core-original/16.png b/assets/themes/NexusOS-icons-src/_backup/folder-nexus-core-original/16.png
old mode 100644
new mode 100755
diff --git a/assets/themes/NexusOS-icons-src/_backup/folder-nexus-core-original/22.png b/assets/themes/NexusOS-icons-src/_backup/folder-nexus-core-original/22.png
old mode 100644
new mode 100755
diff --git a/assets/themes/NexusOS-icons-src/_backup/folder-nexus-core-original/24.png b/assets/themes/NexusOS-icons-src/_backup/folder-nexus-core-original/24.png
old mode 100644
new mode 100755
diff --git a/assets/themes/NexusOS-icons-src/_backup/folder-nexus-core-original/32.png b/assets/themes/NexusOS-icons-src/_backup/folder-nexus-core-original/32.png
old mode 100644
new mode 100755
diff --git a/assets/themes/NexusOS-icons-src/_backup/folder-nexus-core-original/48.png b/assets/themes/NexusOS-icons-src/_backup/folder-nexus-core-original/48.png
old mode 100644
new mode 100755
diff --git a/assets/themes/NexusOS-icons-src/_backup/folder-nexus-core-original/64.png b/assets/themes/NexusOS-icons-src/_backup/folder-nexus-core-original/64.png
old mode 100644
new mode 100755
diff --git a/assets/themes/NexusOS-icons-src/_previews/folder-128.png b/assets/themes/NexusOS-icons-src/_previews/folder-128.png
old mode 100644
new mode 100755
diff --git a/assets/themes/NexusOS-icons-src/_previews/folder-documents-128.png b/assets/themes/NexusOS-icons-src/_previews/folder-documents-128.png
old mode 100644
new mode 100755
diff --git a/assets/themes/NexusOS-icons-src/_previews/folder-download-128.png b/assets/themes/NexusOS-icons-src/_previews/folder-download-128.png
old mode 100644
new mode 100755
diff --git a/assets/themes/NexusOS-icons-src/_previews/folder-drag-accept-128.png b/assets/themes/NexusOS-icons-src/_previews/folder-drag-accept-128.png
old mode 100644
new mode 100755
diff --git a/assets/themes/NexusOS-icons-src/_previews/folder-home-128.png b/assets/themes/NexusOS-icons-src/_previews/folder-home-128.png
old mode 100644
new mode 100755
diff --git a/assets/themes/NexusOS-icons-src/_previews/folder-music-128.png b/assets/themes/NexusOS-icons-src/_previews/folder-music-128.png
old mode 100644
new mode 100755
diff --git a/assets/themes/NexusOS-icons-src/_previews/folder-nexus-core-128.png b/assets/themes/NexusOS-icons-src/_previews/folder-nexus-core-128.png
old mode 100644
new mode 100755
diff --git a/assets/themes/NexusOS-icons-src/_previews/folder-open-128.png b/assets/themes/NexusOS-icons-src/_previews/folder-open-128.png
old mode 100644
new mode 100755
diff --git a/assets/themes/NexusOS-icons-src/_previews/folder-pictures-128.png b/assets/themes/NexusOS-icons-src/_previews/folder-pictures-128.png
old mode 100644
new mode 100755
diff --git a/assets/themes/NexusOS-icons-src/_previews/folder-publicshare-128.png b/assets/themes/NexusOS-icons-src/_previews/folder-publicshare-128.png
old mode 100644
new mode 100755
diff --git a/assets/themes/NexusOS-icons-src/_previews/folder-recent-128.png b/assets/themes/NexusOS-icons-src/_previews/folder-recent-128.png
old mode 100644
new mode 100755
diff --git a/assets/themes/NexusOS-icons-src/_previews/folder-remote-128.png b/assets/themes/NexusOS-icons-src/_previews/folder-remote-128.png
old mode 100644
new mode 100755
diff --git a/assets/themes/NexusOS-icons-src/_previews/folder-saved-search-128.png b/assets/themes/NexusOS-icons-src/_previews/folder-saved-search-128.png
old mode 100644
new mode 100755
diff --git a/assets/themes/NexusOS-icons-src/_previews/folder-templates-128.png b/assets/themes/NexusOS-icons-src/_previews/folder-templates-128.png
old mode 100644
new mode 100755
diff --git a/assets/themes/NexusOS-icons-src/_previews/folder-videos-128.png b/assets/themes/NexusOS-icons-src/_previews/folder-videos-128.png
old mode 100644
new mode 100755
diff --git a/assets/themes/NexusOS-icons-src/actions/applications-development.svg b/assets/themes/NexusOS-icons-src/actions/applications-development.svg
new file mode 100644
index 0000000..880eee0
--- /dev/null
+++ b/assets/themes/NexusOS-icons-src/actions/applications-development.svg
@@ -0,0 +1,11 @@
+
+
diff --git a/assets/themes/NexusOS-icons-src/actions/applications-games.svg b/assets/themes/NexusOS-icons-src/actions/applications-games.svg
new file mode 100644
index 0000000..c676a9c
--- /dev/null
+++ b/assets/themes/NexusOS-icons-src/actions/applications-games.svg
@@ -0,0 +1,10 @@
+
+
diff --git a/assets/themes/NexusOS-icons-src/actions/applications-graphics.svg b/assets/themes/NexusOS-icons-src/actions/applications-graphics.svg
new file mode 100644
index 0000000..4218480
--- /dev/null
+++ b/assets/themes/NexusOS-icons-src/actions/applications-graphics.svg
@@ -0,0 +1,8 @@
+
+
diff --git a/assets/themes/NexusOS-icons-src/actions/applications-internet.svg b/assets/themes/NexusOS-icons-src/actions/applications-internet.svg
new file mode 100644
index 0000000..7fa26a6
--- /dev/null
+++ b/assets/themes/NexusOS-icons-src/actions/applications-internet.svg
@@ -0,0 +1,9 @@
+
+
diff --git a/assets/themes/NexusOS-icons-src/actions/applications-multimedia.svg b/assets/themes/NexusOS-icons-src/actions/applications-multimedia.svg
new file mode 100644
index 0000000..98ecd0d
--- /dev/null
+++ b/assets/themes/NexusOS-icons-src/actions/applications-multimedia.svg
@@ -0,0 +1,6 @@
+
+
diff --git a/assets/themes/NexusOS-icons-src/actions/applications-office.svg b/assets/themes/NexusOS-icons-src/actions/applications-office.svg
new file mode 100644
index 0000000..56f157e
--- /dev/null
+++ b/assets/themes/NexusOS-icons-src/actions/applications-office.svg
@@ -0,0 +1,10 @@
+
+
diff --git a/assets/themes/NexusOS-icons-src/actions/applications-science.svg b/assets/themes/NexusOS-icons-src/actions/applications-science.svg
new file mode 100644
index 0000000..d89eb36
--- /dev/null
+++ b/assets/themes/NexusOS-icons-src/actions/applications-science.svg
@@ -0,0 +1,9 @@
+
+
diff --git a/assets/themes/NexusOS-icons-src/actions/applications-system.svg b/assets/themes/NexusOS-icons-src/actions/applications-system.svg
new file mode 100644
index 0000000..60125e4
--- /dev/null
+++ b/assets/themes/NexusOS-icons-src/actions/applications-system.svg
@@ -0,0 +1,9 @@
+
+
diff --git a/assets/themes/NexusOS-icons-src/actions/applications-utilities.svg b/assets/themes/NexusOS-icons-src/actions/applications-utilities.svg
new file mode 100644
index 0000000..02e9ebc
--- /dev/null
+++ b/assets/themes/NexusOS-icons-src/actions/applications-utilities.svg
@@ -0,0 +1,10 @@
+
+
diff --git a/assets/themes/NexusOS-icons-src/actions/preferences-desktop.svg b/assets/themes/NexusOS-icons-src/actions/preferences-desktop.svg
new file mode 100755
index 0000000..d7d0503
--- /dev/null
+++ b/assets/themes/NexusOS-icons-src/actions/preferences-desktop.svg
@@ -0,0 +1,15 @@
+
+
diff --git a/assets/themes/NexusOS-icons-src/actions/system-hibernate.svg b/assets/themes/NexusOS-icons-src/actions/system-hibernate.svg
new file mode 100755
index 0000000..aaa5b4a
--- /dev/null
+++ b/assets/themes/NexusOS-icons-src/actions/system-hibernate.svg
@@ -0,0 +1,9 @@
+
+
diff --git a/assets/themes/NexusOS-icons-src/actions/system-lock-screen.svg b/assets/themes/NexusOS-icons-src/actions/system-lock-screen.svg
new file mode 100755
index 0000000..6aa1edc
--- /dev/null
+++ b/assets/themes/NexusOS-icons-src/actions/system-lock-screen.svg
@@ -0,0 +1,10 @@
+
+
diff --git a/assets/themes/NexusOS-icons-src/actions/system-log-out.svg b/assets/themes/NexusOS-icons-src/actions/system-log-out.svg
new file mode 100755
index 0000000..6796f44
--- /dev/null
+++ b/assets/themes/NexusOS-icons-src/actions/system-log-out.svg
@@ -0,0 +1,12 @@
+
+
diff --git a/assets/themes/NexusOS-icons-src/actions/system-reboot.svg b/assets/themes/NexusOS-icons-src/actions/system-reboot.svg
new file mode 100755
index 0000000..9fee993
--- /dev/null
+++ b/assets/themes/NexusOS-icons-src/actions/system-reboot.svg
@@ -0,0 +1,8 @@
+
+
diff --git a/assets/themes/NexusOS-icons-src/actions/system-shutdown.svg b/assets/themes/NexusOS-icons-src/actions/system-shutdown.svg
new file mode 100755
index 0000000..0e5bc8f
--- /dev/null
+++ b/assets/themes/NexusOS-icons-src/actions/system-shutdown.svg
@@ -0,0 +1,8 @@
+
+
diff --git a/assets/themes/NexusOS-icons-src/actions/system-suspend.svg b/assets/themes/NexusOS-icons-src/actions/system-suspend.svg
new file mode 100755
index 0000000..ea8ae40
--- /dev/null
+++ b/assets/themes/NexusOS-icons-src/actions/system-suspend.svg
@@ -0,0 +1,7 @@
+
+
diff --git a/assets/themes/NexusOS-icons-src/actions/system-switch-user.svg b/assets/themes/NexusOS-icons-src/actions/system-switch-user.svg
new file mode 100755
index 0000000..c161ff5
--- /dev/null
+++ b/assets/themes/NexusOS-icons-src/actions/system-switch-user.svg
@@ -0,0 +1,10 @@
+
+
diff --git a/assets/themes/NexusOS-icons-src/build.py b/assets/themes/NexusOS-icons-src/build.py
old mode 100644
new mode 100755
diff --git a/assets/themes/NexusOS-icons-src/build_actions.py b/assets/themes/NexusOS-icons-src/build_actions.py
new file mode 100755
index 0000000..1fbc260
--- /dev/null
+++ b/assets/themes/NexusOS-icons-src/build_actions.py
@@ -0,0 +1,278 @@
+#!/usr/bin/env python3
+"""
+NexusOS action-icon generator.
+
+Builds the icons the XFCE logoff dialog (xfce4-session-logout) and the
+Whisker menu command buttons request — shutdown / reboot / log-out /
+suspend / hibernate / switch-user / lock-screen / settings — in the
+NexusOS palette (white glyph on a deep-purple disc with a lime ring).
+
+Emits one SVG per icon into actions/, rasterizes to
+~/.icons/NexusOS//actions/.png at 16/22/24/32/48/64/128,
+then writes the alias copies (xfsm-*, system-suspend-hibernate, and the
+settings-manager app-icon names that Whisker's Settings button uses).
+
+Run: python3 build_actions.py # SVGs + PNGs + aliases
+ python3 build_actions.py --svg-only # just rewrite SVGs
+"""
+
+from pathlib import Path
+import shutil
+import subprocess
+import sys
+
+ROOT = Path(__file__).resolve().parent
+ACTIONS = ROOT / "actions"
+ICONS_OUT = Path.home() / ".icons" / "NexusOS"
+SIZES = [16, 22, 24, 32, 48, 64, 128]
+
+# ── colors (mirror gtk-3.0/colors.css) ────────────────────────────────
+BODY = "#5e0066" # brand_purple_dark — disc fill
+RING = "#8cc63f" # brand_green — disc ring
+GLYPH = "#f2f2f2" # text_primary — glyph
+
+# ── master: purple disc + lime ring, viewBox 0 0 128 128 ──────────────
+# Glyph area: a ~70px box centered on (64, 64).
+DISC = f' \n'
+
+
+def _gear_glyph() -> str:
+ """Settings cog: 8 teeth on a white disc with a punched centre hole."""
+ teeth = "".join(
+ f' \n'
+ for k in range(8)
+ )
+ return (
+ " \n"
+ + teeth
+ + f' \n'
+ + f' \n'
+ )
+
+
+# ── glyph fragments — white, centered on (64, 64) ─────────────────────
+GLYPHS = {
+ "system-shutdown": f"""\
+
+
+
+""",
+
+ "system-reboot": f"""\
+
+
+
+""",
+
+ "system-log-out": f"""\
+
+
+
+
+
+""",
+
+ "system-suspend": f"""\
+
+
+""",
+
+ "system-hibernate": f"""\
+
+
+
+""",
+
+ "system-switch-user": f"""\
+
+
+
+
+
+""",
+
+ "system-lock-screen": f"""\
+
+
+
+
+
+""",
+
+ "preferences-desktop": _gear_glyph(),
+
+ # ── Whisker menu application-category glyphs ──────────────────────
+ "applications-internet": f"""\
+
+
+
+
+
+""",
+
+ "applications-development": f"""\
+
+
+
+
+""",
+
+ "applications-multimedia": f"""\
+
+
+""",
+
+ "applications-office": f"""\
+
+
+
+
+
+
+""",
+
+ "applications-graphics": f"""\
+
+
+
+
+""",
+
+ "applications-system": f"""\
+
+
+
+
+
+""",
+
+ "applications-utilities": f"""\
+
+
+
+
+
+
+""",
+
+ "applications-games": f"""\
+
+
+
+
+
+
+""",
+
+ "applications-science": f"""\
+
+
+
+
+""",
+}
+
+# Extra filenames that render the same art (XFCE's xfsm-* lookup names,
+# the hybrid-sleep alias, and the Whisker command-button names).
+ALIASES = {
+ "xfsm-logout": "system-log-out",
+ "xfsm-reboot": "system-reboot",
+ "xfsm-shutdown": "system-shutdown",
+ "xfsm-suspend": "system-suspend",
+ "xfsm-hibernate": "system-hibernate",
+ "xfsm-switch-user": "system-switch-user",
+ "system-suspend-hibernate": "system-suspend",
+ "xfsm-lock": "system-lock-screen",
+ "preferences-system": "preferences-desktop",
+ "org.xfce.settings.manager": "preferences-desktop",
+ "xfce4-settings-manager": "preferences-desktop",
+ # XFCE's "Accessories" menu uses xfce-accessories.directory
+ # (Icon=applications-accessories), NOT the freedesktop Utility name, so
+ # it needs the same wrench/tools badge as applications-utilities.
+ "applications-accessories": "applications-utilities",
+}
+
+
+def svg_for(glyph: str) -> str:
+ return (
+ '\n'
+ '\n"
+ )
+
+
+def write_svgs() -> list[str]:
+ ACTIONS.mkdir(parents=True, exist_ok=True)
+ for name, glyph in GLYPHS.items():
+ (ACTIONS / f"{name}.svg").write_text(svg_for(glyph))
+ return list(GLYPHS)
+
+
+def render_pngs(names: list[str]) -> None:
+ for name in names:
+ svg = ACTIONS / f"{name}.svg"
+ for size in SIZES:
+ out_dir = ICONS_OUT / f"{size}x{size}" / "actions"
+ out_dir.mkdir(parents=True, exist_ok=True)
+ out = out_dir / f"{name}.png"
+ subprocess.run(
+ [
+ "inkscape",
+ str(svg),
+ "--export-type=png",
+ f"--export-filename={out}",
+ f"--export-width={size}",
+ f"--export-height={size}",
+ ],
+ check=True,
+ stdout=subprocess.DEVNULL,
+ stderr=subprocess.DEVNULL,
+ )
+ print(f" rendered {name} @ {size}")
+
+
+def write_aliases() -> None:
+ for alias, src in ALIASES.items():
+ for size in SIZES:
+ d = ICONS_OUT / f"{size}x{size}" / "actions"
+ src_png = d / f"{src}.png"
+ if src_png.exists():
+ shutil.copy2(src_png, d / f"{alias}.png")
+ print(f" alias {alias} -> {src}")
+
+
+def main() -> None:
+ svg_only = "--svg-only" in sys.argv
+ names = write_svgs()
+ print(f"Wrote {len(names)} SVGs into {ACTIONS}")
+ if svg_only:
+ return
+ render_pngs(names)
+ write_aliases()
+ subprocess.run(
+ ["gtk-update-icon-cache", "-f", str(ICONS_OUT)],
+ stdout=subprocess.DEVNULL,
+ stderr=subprocess.DEVNULL,
+ )
+ print("\nDone. Reload: xfdesktop --reload & xfce4-panel -r")
+
+
+if __name__ == "__main__":
+ main()
diff --git a/assets/themes/NexusOS-icons-src/build_battery.py b/assets/themes/NexusOS-icons-src/build_battery.py
new file mode 100755
index 0000000..75bb69f
--- /dev/null
+++ b/assets/themes/NexusOS-icons-src/build_battery.py
@@ -0,0 +1,54 @@
+#!/usr/bin/env python3
+"""
+NexusOS battery-icon recolorizer.
+
+xfce4-power-manager draws the panel battery from the icon theme's
+`battery-*-charging-symbolic` icons. Papirus-Dark (which NexusOS
+inherits from) paints the charging bolt/fill in its own material green
+(#4caf50). This script copies every charging battery symbolic icon into
+the NexusOS theme with that green swapped for brand_green (#8cc63f), so
+the charging indicator matches the rest of the NexusOS accent.
+
+Only the green is touched — the gray battery body (#dfdfdf) is left
+alone (it already reads fine on the dark panel). Symlinked aliases
+(good/low/medium/caution/empty-charging) are resolved and written as
+real recolored files so every requested name overrides Papirus.
+
+Run: python3 build_battery.py
+Then: gtk-update-icon-cache -f -t ../NexusOS-icons
+ xfce4-panel -r # reload panel to pick up new icons
+"""
+
+from pathlib import Path
+
+ROOT = Path(__file__).resolve().parent
+OUT = ROOT.parent / "NexusOS-icons" / "scalable" / "status"
+SRC = Path("/usr/share/icons/Papirus-Dark/symbolic/status")
+
+PAPIRUS_GREEN = "#4caf50"
+NEXUS_GREEN = "#8cc63f" # brand_green
+
+
+def main() -> None:
+ OUT.mkdir(parents=True, exist_ok=True)
+ # Every charging battery symbolic icon (charged-100 has no green, so
+ # the replace is a harmless no-op there; we copy it too for a
+ # consistent battery set under the NexusOS theme).
+ sources = sorted(SRC.glob("battery-*charg*-symbolic.svg"))
+ written = 0
+ for src in sources:
+ # read_text follows symlinks, so alias names get the real content
+ content = src.read_text()
+ if PAPIRUS_GREEN not in content:
+ # charged/full icons with no green — skip; let them fall
+ # through to Papirus unchanged.
+ continue
+ recolored = content.replace(PAPIRUS_GREEN, NEXUS_GREEN)
+ (OUT / src.name).write_text(recolored)
+ written += 1
+ print(f"Recolored {written} charging battery icons "
+ f"({PAPIRUS_GREEN} -> {NEXUS_GREEN}) into {OUT}")
+
+
+if __name__ == "__main__":
+ main()
diff --git a/assets/themes/NexusOS-icons-src/build_icons.py b/assets/themes/NexusOS-icons-src/build_icons.py
old mode 100644
new mode 100755
diff --git a/assets/themes/NexusOS-icons-src/build_status.py b/assets/themes/NexusOS-icons-src/build_status.py
new file mode 100755
index 0000000..f268a71
--- /dev/null
+++ b/assets/themes/NexusOS-icons-src/build_status.py
@@ -0,0 +1,398 @@
+#!/usr/bin/env python3
+"""
+NexusOS network status icons generator.
+
+Generates flat symbolic-style SVGs for nm-tray and any other Qt/GTK app
+that requests network-* status icons. Output goes to
+scalable/status/ of the NexusOS-icons theme.
+
+Design language:
+ * 16×16 viewBox, scalable SVG (no rasterization needed — Qt5 + GTK3
+ both handle SVG fine in scalable/ dirs)
+ * Light off-white stroke for base shape (wifi fan, ethernet plug,
+ globe) — readable on the dark NexusOS surfaces
+ * Lime brand accent for connected / active states
+ * Purple lock for encryption
+ * Red for error, orange for acquiring / no-route
+
+Run: python3 build_status.py
+"""
+
+from pathlib import Path
+import math
+
+ROOT = Path(__file__).resolve().parent
+OUT = ROOT.parent / "NexusOS-icons" / "scalable" / "status"
+
+# Palette — mirrors gtk-3.0/colors.css.
+BASE = "#f2f2f2" # text_primary
+MUTED = "#6e7173" # text_disabled
+GOOD = "#8cc63f" # brand_green
+LOCK = "#f2f2f2" # text_primary (white) — neutral attribute indicator
+ # while green is reserved for active signal strength.
+ERROR = "#da4453" # error_color
+WARN = "#f67400" # warning_color
+
+SW = 1.6
+# Wifi fan arc geometry: half-angle from vertical. Smaller half-angle ⇒
+# narrower sweep but allows bigger radius (taller fan) before endpoints
+# run off the sides at 16x16. 40° (80° total sweep) is a sweet spot.
+ARC_HALF_ANGLE = 40
+S_ARC = math.sin(math.radians(ARC_HALF_ANGLE)) # x offset coefficient
+C_ARC = math.cos(math.radians(ARC_HALF_ANGLE)) # y offset coefficient
+
+
+def svg(body: str) -> str:
+ return (
+ '\n"
+ )
+
+
+# ── wifi fan ────────────────────────────────────────────────────────
+# Fan sits low in the viewBox with arcs reaching almost the top edge so
+# the rendered icon matches the height of neighboring tray icons (shield,
+# bluetooth, etc.). Outermost r=11.5 with the narrower 80° arc sweep
+# keeps endpoints inside x=[0.61, 15.39] — fits with stroke-cap margin.
+WIFI_CX, WIFI_CY = 8, 13.0
+WIFI_R = [3.0, 5.5, 8.5, 11.5]
+DOT_R = 1.3
+
+
+def _arc(r: float, color: str, opacity: float = 1.0) -> str:
+ x0 = WIFI_CX - r * S_ARC
+ x1 = WIFI_CX + r * S_ARC
+ y = WIFI_CY - r * C_ARC
+ return (
+ f' '
+ )
+
+
+def wifi_fan(level: int, active_color: str = GOOD) -> str:
+ """level 0 (none) .. 4 (excellent). Filled arcs use brand_green by
+ default so signal strength reads as the primary visual element."""
+ parts = []
+ for i, r in enumerate(WIFI_R):
+ if i < level:
+ parts.append(_arc(r, active_color, 1.0))
+ else:
+ parts.append(_arc(r, MUTED, 0.35))
+ if level > 0:
+ parts.append(
+ f' '
+ )
+ else:
+ parts.append(
+ f' '
+ )
+ return "\n".join(parts)
+
+
+# ── ethernet plug (RJ45) ────────────────────────────────────────────
+# Sized to fill ~75% of the viewBox vertically (y=2→14) and horizontally
+# (x=2→14) so the rendered icon matches the height of neighboring tray
+# icons (shield, notification, bluetooth) instead of looking like a tiny
+# crate in the middle of the slot.
+def ethernet_plug(color: str = GOOD, opacity: float = 1.0) -> str:
+ return (
+ f' \n'
+ # Pentagonal RJ45 outline
+ ' \n'
+ # Three pins, spread wider to match the bigger body
+ ' \n'
+ ' \n'
+ ' \n'
+ " "
+ )
+
+
+# ── globe (generic network) ─────────────────────────────────────────
+def globe(color: str = BASE, opacity: float = 1.0) -> str:
+ return (
+ f' \n'
+ ' \n'
+ ' \n'
+ ' \n'
+ " "
+ )
+
+
+# ── key (vpn) ───────────────────────────────────────────────────────
+def vpn_key(color: str = GOOD, opacity: float = 1.0) -> str:
+ """Horizontal key: round bow on the left, shaft to the right with
+ two teeth hanging down. Stroke-only so it doesn't visually dominate
+ the way the filled globe did."""
+ return (
+ f' \n'
+ # Bow (handle) — outline circle on the left
+ ' \n'
+ # Shaft
+ ' \n'
+ # Two teeth pointing down
+ ' \n'
+ " "
+ )
+
+
+# ── state overlays / badges ─────────────────────────────────────────
+# nm-tray's MultiIconDelegate stacks state icons on top of the signal-
+# level base, so each overlay icon is *just the badge* — no wifi fan,
+# no globe. That way stacking signal-good + encrypted gives fan + lock
+# instead of fan + fan + lock, and adding -disconnected on top of an
+# unsaved network adds a single X instead of another fan.
+
+def standalone_lock(color: str = LOCK) -> str:
+ """Centered padlock filling most of the 16x16 box. This is the icon
+ nm-tray actually loads for encryption — it requests `security-high`
+ / `security-high-symbolic` (NOT `network-wireless-encrypted`) and
+ overlays it on top of a `network-wireless-signal-*` base via its
+ MultiIconDelegate, scaling our full-size lock into a corner badge.
+
+ Keyhole detail intentionally omitted: at the corner-badge render
+ size nm-tray uses, it's invisible anyway, and a dark keyhole on a
+ white body reads as visual noise rather than as a lock detail."""
+ return (
+ # Body: 8.5w x 6h, centered horizontally, sitting low
+ f' \n'
+ # Shackle: pronounced U above the body
+ f' '
+ )
+
+
+def badge_lock() -> str:
+ """Lock badge: body 4.4w × 3.8h + shackle 3w × 2h on top, lower-right
+ corner. Made deliberately larger and with a thicker shackle stroke
+ than a typical badge — at 16-24px render, a small thin-stroke lock
+ blurs into a shield-like rounded shape. The big-shackle proportions
+ here keep the lock recognizable down to ~18px icon size."""
+ return (
+ ' \n'
+ f' \n'
+ f' \n'
+ " "
+ )
+
+
+def badge_x(color: str = ERROR) -> str:
+ return (
+ f' \n'
+ ' \n'
+ ' \n'
+ " "
+ )
+
+
+def badge_dots(color: str = WARN) -> str:
+ return (
+ f' \n'
+ ' \n'
+ ' \n'
+ ' \n'
+ " "
+ )
+
+
+def badge_excl(color: str = ERROR) -> str:
+ return (
+ f' \n'
+ ' \n'
+ ' \n'
+ " "
+ )
+
+
+def badge_slash(color: str = MUTED) -> str:
+ return (
+ f' '
+ )
+
+
+def badge_arrow_up(color: str = GOOD) -> str:
+ return (
+ f' '
+ )
+
+
+def badge_arrow_down(color: str = GOOD) -> str:
+ return (
+ f' '
+ )
+
+
+# ── icon catalog ────────────────────────────────────────────────────
+def cell_tech(label: str) -> str:
+ """Wifi fan + tiny generation-tech label (2G/3G/4G/5G/E/G/H/U/1x)."""
+ return svg(
+ wifi_fan(3) + "\n"
+ f' {label}'
+ )
+
+
+ICONS = {
+ # wireless signal levels
+ "network-wireless-signal-none": svg(wifi_fan(0)),
+ "network-wireless-signal-weak": svg(wifi_fan(1)),
+ "network-wireless-signal-ok": svg(wifi_fan(2)),
+ "network-wireless-signal-good": svg(wifi_fan(3)),
+ "network-wireless-signal-excellent": svg(wifi_fan(4)),
+
+ # wireless — nm-tray picks one icon per row, so each name is a
+ # self-contained composite (signal-level fan + state badge if any).
+ "network-wireless": svg(wifi_fan(3)),
+ "network-wireless-connected": svg(wifi_fan(4, GOOD)),
+ # Disconnected: faded-empty fan. NO X badge — nm-tray overlays this
+ # on top of saved-network rows, so an X here would visually pile up
+ # with the encrypted-lock overlay. The dim level-0 fan already reads
+ # as "no signal/disconnected" without the extra badge.
+ "network-wireless-disconnected": svg(wifi_fan(0)),
+ "network-wireless-disabled": svg(wifi_fan(0) + "\n" + badge_slash()),
+ "network-wireless-acquiring": svg(wifi_fan(2) + "\n" + badge_dots()),
+ "network-wireless-error": svg(wifi_fan(2) + "\n" + badge_excl()),
+ "network-wireless-no-route": svg(wifi_fan(3) + "\n" + badge_excl(WARN)),
+ "network-wireless-offline": svg(wifi_fan(0)),
+ "network-wireless-encrypted": svg(wifi_fan(3) + "\n" + badge_lock()),
+ "network-wireless-hotspot": svg(wifi_fan(4, GOOD) + "\n" + badge_dots(GOOD)),
+ "network-wireless-hardware-disabled": svg(wifi_fan(0) + "\n" + badge_slash(ERROR)),
+
+ # wired
+ "network-wired": svg(ethernet_plug()),
+ "network-wired-disconnected": svg(ethernet_plug(MUTED, 0.55) + "\n" + badge_x()),
+ "network-wired-acquiring": svg(ethernet_plug() + "\n" + badge_dots()),
+ "network-wired-error": svg(ethernet_plug() + "\n" + badge_excl()),
+ "network-wired-no-route": svg(ethernet_plug() + "\n" + badge_excl(WARN)),
+ "network-wired-offline": svg(ethernet_plug(MUTED, 0.55)),
+
+ # vpn — green key. Stroke-only so it doesn't dominate the menu row.
+ "network-vpn": svg(vpn_key()),
+ "network-vpn-connected": svg(vpn_key()),
+ "network-vpn-acquiring": svg(vpn_key() + "\n" + badge_dots()),
+ "network-vpn-disconnected": svg(vpn_key(MUTED, 0.55) + "\n" + badge_x()),
+ "network-vpn-error": svg(vpn_key(ERROR)),
+ "network-vpn-no-route": svg(vpn_key() + "\n" + badge_excl(WARN)),
+ "network-vpn-offline": svg(vpn_key(MUTED, 0.55)),
+
+ # generic
+ "network-error": svg(globe() + "\n" + badge_excl()),
+ "network-idle": svg(globe()),
+ "network-offline": svg(globe(MUTED, 0.55) + "\n" + badge_slash()),
+ "network-no-route": svg(globe() + "\n" + badge_excl(WARN)),
+ "network-acquiring": svg(globe() + "\n" + badge_dots()),
+ "network-transmit": svg(globe() + "\n" + badge_arrow_up()),
+ "network-receive": svg(globe() + "\n" + badge_arrow_down()),
+ "network-transmit-receive": svg(globe() + "\n" + badge_arrow_up() + "\n" + badge_arrow_down()),
+
+ # cellular — same fan, with state badges
+ "network-cellular-signal-none": svg(wifi_fan(0)),
+ "network-cellular-signal-weak": svg(wifi_fan(1)),
+ "network-cellular-signal-ok": svg(wifi_fan(2)),
+ "network-cellular-signal-good": svg(wifi_fan(3)),
+ "network-cellular-signal-excellent": svg(wifi_fan(4)),
+ "network-cellular-acquiring": svg(wifi_fan(2) + "\n" + badge_dots()),
+ "network-cellular-connected": svg(wifi_fan(4, GOOD)),
+ "network-cellular-disabled": svg(wifi_fan(0) + "\n" + badge_slash()),
+ "network-cellular-disconnected": svg(wifi_fan(0) + "\n" + badge_x()),
+ "network-cellular-error": svg(wifi_fan(2) + "\n" + badge_excl()),
+ "network-cellular-hardware-disabled": svg(wifi_fan(0) + "\n" + badge_slash(ERROR)),
+ "network-cellular-no-route": svg(wifi_fan(3) + "\n" + badge_excl(WARN)),
+ "network-cellular-offline": svg(wifi_fan(0)),
+
+ # security indicators — nm-tray's actual encryption overlay icon
+ "security-high": svg(standalone_lock()),
+ "security-high-symbolic": svg(standalone_lock()),
+ "security-medium": svg(standalone_lock(WARN)),
+ "security-medium-symbolic": svg(standalone_lock(WARN)),
+ "security-low": svg(standalone_lock(ERROR)),
+ "security-low-symbolic": svg(standalone_lock(ERROR)),
+
+ # cellular generation-tech labels
+ "network-cellular-2g": cell_tech("2G"),
+ "network-cellular-3g": cell_tech("3G"),
+ "network-cellular-4g": cell_tech("4G"),
+ "network-cellular-5g": cell_tech("5G"),
+ "network-cellular-edge": cell_tech("E"),
+ "network-cellular-gprs": cell_tech("G"),
+ "network-cellular-cdma-1x": cell_tech("1x"),
+ "network-cellular-hspa": cell_tech("H"),
+ "network-cellular-umts": cell_tech("U"),
+}
+
+
+# ── genmon panel applet PNGs ─────────────────────────────────────────
+# bin/panel/network-applet.sh (the XFCE genmon network applet) loads PNGs
+# directly from assets/panel-icons/ by path — it does NOT go through the
+# icon theme. Rasterize the relevant status icons there too so the applet
+# stays in sync with the canonical SVG design above (otherwise the PNGs
+# drift into a different look, e.g. solid filled cones vs. arc bars).
+PANEL_PNG_DIR = ROOT.parent.parent / "panel-icons" # assets/panel-icons
+PANEL_PNG_SIZE = 22
+PANEL_PNG_NAMES = [
+ "network-wireless-signal-none",
+ "network-wireless-signal-weak",
+ "network-wireless-signal-ok",
+ "network-wireless-signal-good",
+ "network-wireless-signal-excellent",
+ "network-wired",
+ "network-offline",
+]
+
+
+def _rasterize_panel_pngs() -> int:
+ import subprocess
+ if not PANEL_PNG_DIR.is_dir():
+ return 0
+ n = 0
+ for name in PANEL_PNG_NAMES:
+ svg_path = OUT / f"{name}.svg"
+ if not svg_path.exists():
+ continue
+ subprocess.run(
+ ["inkscape", str(svg_path), "--export-type=png",
+ f"--export-filename={PANEL_PNG_DIR / (name + '.png')}",
+ f"--export-width={PANEL_PNG_SIZE}",
+ f"--export-height={PANEL_PNG_SIZE}",
+ "--export-background-opacity=0"],
+ check=True, stdout=subprocess.DEVNULL, stderr=subprocess.DEVNULL,
+ )
+ n += 1
+ return n
+
+
+def main() -> None:
+ OUT.mkdir(parents=True, exist_ok=True)
+ # Sweep any leftover Papirus fallback symlinks from the same dir.
+ cleaned = 0
+ for entry in OUT.iterdir():
+ if entry.is_symlink():
+ entry.unlink()
+ cleaned += 1
+ for name, body in ICONS.items():
+ (OUT / f"{name}.svg").write_text(body)
+ print(f"Cleared {cleaned} symlinks, wrote {len(ICONS)} SVGs to {OUT}")
+ n = _rasterize_panel_pngs()
+ print(f"Rasterized {n} genmon panel PNGs to {PANEL_PNG_DIR}")
+
+
+if __name__ == "__main__":
+ main()
diff --git a/assets/themes/NexusOS-icons-src/nexus-underlay-ring.svg b/assets/themes/NexusOS-icons-src/nexus-underlay-ring.svg
new file mode 100644
index 0000000..7222fc9
--- /dev/null
+++ b/assets/themes/NexusOS-icons-src/nexus-underlay-ring.svg
@@ -0,0 +1,21 @@
+
+
diff --git a/assets/themes/NexusOS-icons-src/nexus-underlay.svg b/assets/themes/NexusOS-icons-src/nexus-underlay.svg
new file mode 100644
index 0000000..e3646de
--- /dev/null
+++ b/assets/themes/NexusOS-icons-src/nexus-underlay.svg
@@ -0,0 +1,15 @@
+
+
diff --git a/assets/themes/NexusOS-icons-src/places/folder-documents.svg b/assets/themes/NexusOS-icons-src/places/folder-documents.svg
old mode 100644
new mode 100755
diff --git a/assets/themes/NexusOS-icons-src/places/folder-download.svg b/assets/themes/NexusOS-icons-src/places/folder-download.svg
old mode 100644
new mode 100755
diff --git a/assets/themes/NexusOS-icons-src/places/folder-drag-accept.svg b/assets/themes/NexusOS-icons-src/places/folder-drag-accept.svg
old mode 100644
new mode 100755
diff --git a/assets/themes/NexusOS-icons-src/places/folder-home.svg b/assets/themes/NexusOS-icons-src/places/folder-home.svg
old mode 100644
new mode 100755
diff --git a/assets/themes/NexusOS-icons-src/places/folder-music.svg b/assets/themes/NexusOS-icons-src/places/folder-music.svg
old mode 100644
new mode 100755
diff --git a/assets/themes/NexusOS-icons-src/places/folder-nexus-core.svg b/assets/themes/NexusOS-icons-src/places/folder-nexus-core.svg
old mode 100644
new mode 100755
diff --git a/assets/themes/NexusOS-icons-src/places/folder-open.svg b/assets/themes/NexusOS-icons-src/places/folder-open.svg
old mode 100644
new mode 100755
diff --git a/assets/themes/NexusOS-icons-src/places/folder-pictures.svg b/assets/themes/NexusOS-icons-src/places/folder-pictures.svg
old mode 100644
new mode 100755
diff --git a/assets/themes/NexusOS-icons-src/places/folder-publicshare.svg b/assets/themes/NexusOS-icons-src/places/folder-publicshare.svg
old mode 100644
new mode 100755
diff --git a/assets/themes/NexusOS-icons-src/places/folder-recent.svg b/assets/themes/NexusOS-icons-src/places/folder-recent.svg
old mode 100644
new mode 100755
diff --git a/assets/themes/NexusOS-icons-src/places/folder-remote.svg b/assets/themes/NexusOS-icons-src/places/folder-remote.svg
old mode 100644
new mode 100755
diff --git a/assets/themes/NexusOS-icons-src/places/folder-saved-search.svg b/assets/themes/NexusOS-icons-src/places/folder-saved-search.svg
old mode 100644
new mode 100755
diff --git a/assets/themes/NexusOS-icons-src/places/folder-templates.svg b/assets/themes/NexusOS-icons-src/places/folder-templates.svg
old mode 100644
new mode 100755
diff --git a/assets/themes/NexusOS-icons-src/places/folder-videos.svg b/assets/themes/NexusOS-icons-src/places/folder-videos.svg
old mode 100644
new mode 100755
diff --git a/assets/themes/NexusOS-icons-src/places/folder.svg b/assets/themes/NexusOS-icons-src/places/folder.svg
old mode 100644
new mode 100755
diff --git a/assets/themes/NexusOS-icons/128x128/apps/com.visualstudio.code.png b/assets/themes/NexusOS-icons/128x128/apps/com.visualstudio.code.png
new file mode 100644
index 0000000..cf0ad9d
Binary files /dev/null and b/assets/themes/NexusOS-icons/128x128/apps/com.visualstudio.code.png differ
diff --git a/assets/themes/NexusOS-icons/128x128/apps/microsoft-edge.png b/assets/themes/NexusOS-icons/128x128/apps/microsoft-edge.png
new file mode 100644
index 0000000..3b1c52b
Binary files /dev/null and b/assets/themes/NexusOS-icons/128x128/apps/microsoft-edge.png differ
diff --git a/assets/themes/NexusOS-icons/128x128/apps/nexusos-logo.png b/assets/themes/NexusOS-icons/128x128/apps/nexusos-logo.png
old mode 100644
new mode 100755
index c96bb05..baf2050
Binary files a/assets/themes/NexusOS-icons/128x128/apps/nexusos-logo.png and b/assets/themes/NexusOS-icons/128x128/apps/nexusos-logo.png differ
diff --git a/assets/themes/NexusOS-icons/128x128/apps/utilities-terminal.png b/assets/themes/NexusOS-icons/128x128/apps/utilities-terminal.png
deleted file mode 100644
index def29dd..0000000
Binary files a/assets/themes/NexusOS-icons/128x128/apps/utilities-terminal.png and /dev/null differ
diff --git a/assets/themes/NexusOS-icons/128x128/places/folder-documents.png b/assets/themes/NexusOS-icons/128x128/places/folder-documents.png
old mode 100644
new mode 100755
diff --git a/assets/themes/NexusOS-icons/128x128/places/folder-download.png b/assets/themes/NexusOS-icons/128x128/places/folder-download.png
old mode 100644
new mode 100755
diff --git a/assets/themes/NexusOS-icons/128x128/places/folder-drag-accept.png b/assets/themes/NexusOS-icons/128x128/places/folder-drag-accept.png
old mode 100644
new mode 100755
diff --git a/assets/themes/NexusOS-icons/128x128/places/folder-home.png b/assets/themes/NexusOS-icons/128x128/places/folder-home.png
old mode 100644
new mode 100755
diff --git a/assets/themes/NexusOS-icons/128x128/places/folder-music.png b/assets/themes/NexusOS-icons/128x128/places/folder-music.png
old mode 100644
new mode 100755
diff --git a/assets/themes/NexusOS-icons/128x128/places/folder-nexus-core.png b/assets/themes/NexusOS-icons/128x128/places/folder-nexus-core.png
index 79a5b02..9b68987 100644
Binary files a/assets/themes/NexusOS-icons/128x128/places/folder-nexus-core.png and b/assets/themes/NexusOS-icons/128x128/places/folder-nexus-core.png differ
diff --git a/assets/themes/NexusOS-icons/128x128/places/folder-open.png b/assets/themes/NexusOS-icons/128x128/places/folder-open.png
old mode 100644
new mode 100755
diff --git a/assets/themes/NexusOS-icons/128x128/places/folder-pictures.png b/assets/themes/NexusOS-icons/128x128/places/folder-pictures.png
old mode 100644
new mode 100755
diff --git a/assets/themes/NexusOS-icons/128x128/places/folder-publicshare.png b/assets/themes/NexusOS-icons/128x128/places/folder-publicshare.png
old mode 100644
new mode 100755
diff --git a/assets/themes/NexusOS-icons/128x128/places/folder-recent.png b/assets/themes/NexusOS-icons/128x128/places/folder-recent.png
old mode 100644
new mode 100755
diff --git a/assets/themes/NexusOS-icons/128x128/places/folder-remote.png b/assets/themes/NexusOS-icons/128x128/places/folder-remote.png
old mode 100644
new mode 100755
diff --git a/assets/themes/NexusOS-icons/128x128/places/folder-saved-search.png b/assets/themes/NexusOS-icons/128x128/places/folder-saved-search.png
old mode 100644
new mode 100755
diff --git a/assets/themes/NexusOS-icons/128x128/places/folder-templates.png b/assets/themes/NexusOS-icons/128x128/places/folder-templates.png
old mode 100644
new mode 100755
diff --git a/assets/themes/NexusOS-icons/128x128/places/folder-videos.png b/assets/themes/NexusOS-icons/128x128/places/folder-videos.png
old mode 100644
new mode 100755
diff --git a/assets/themes/NexusOS-icons/128x128/places/folder.png b/assets/themes/NexusOS-icons/128x128/places/folder.png
old mode 100644
new mode 100755
diff --git a/assets/themes/NexusOS-icons/16x16/apps/com.visualstudio.code.png b/assets/themes/NexusOS-icons/16x16/apps/com.visualstudio.code.png
new file mode 100644
index 0000000..9c90355
Binary files /dev/null and b/assets/themes/NexusOS-icons/16x16/apps/com.visualstudio.code.png differ
diff --git a/assets/themes/NexusOS-icons/16x16/apps/microsoft-edge.png b/assets/themes/NexusOS-icons/16x16/apps/microsoft-edge.png
new file mode 100644
index 0000000..3e68a44
Binary files /dev/null and b/assets/themes/NexusOS-icons/16x16/apps/microsoft-edge.png differ
diff --git a/assets/themes/NexusOS-icons/16x16/apps/nexusos-logo.png b/assets/themes/NexusOS-icons/16x16/apps/nexusos-logo.png
old mode 100644
new mode 100755
index c96bb05..b3ef393
Binary files a/assets/themes/NexusOS-icons/16x16/apps/nexusos-logo.png and b/assets/themes/NexusOS-icons/16x16/apps/nexusos-logo.png differ
diff --git a/assets/themes/NexusOS-icons/16x16/apps/utilities-terminal.png b/assets/themes/NexusOS-icons/16x16/apps/utilities-terminal.png
deleted file mode 100644
index 8b7b259..0000000
Binary files a/assets/themes/NexusOS-icons/16x16/apps/utilities-terminal.png and /dev/null differ
diff --git a/assets/themes/NexusOS-icons/16x16/places/folder-documents.png b/assets/themes/NexusOS-icons/16x16/places/folder-documents.png
old mode 100644
new mode 100755
diff --git a/assets/themes/NexusOS-icons/16x16/places/folder-download.png b/assets/themes/NexusOS-icons/16x16/places/folder-download.png
old mode 100644
new mode 100755
diff --git a/assets/themes/NexusOS-icons/16x16/places/folder-drag-accept.png b/assets/themes/NexusOS-icons/16x16/places/folder-drag-accept.png
old mode 100644
new mode 100755
diff --git a/assets/themes/NexusOS-icons/16x16/places/folder-home.png b/assets/themes/NexusOS-icons/16x16/places/folder-home.png
old mode 100644
new mode 100755
diff --git a/assets/themes/NexusOS-icons/16x16/places/folder-music.png b/assets/themes/NexusOS-icons/16x16/places/folder-music.png
old mode 100644
new mode 100755
diff --git a/assets/themes/NexusOS-icons/16x16/places/folder-nexus-core.png b/assets/themes/NexusOS-icons/16x16/places/folder-nexus-core.png
index 626d329..7e56f97 100644
Binary files a/assets/themes/NexusOS-icons/16x16/places/folder-nexus-core.png and b/assets/themes/NexusOS-icons/16x16/places/folder-nexus-core.png differ
diff --git a/assets/themes/NexusOS-icons/16x16/places/folder-open.png b/assets/themes/NexusOS-icons/16x16/places/folder-open.png
old mode 100644
new mode 100755
diff --git a/assets/themes/NexusOS-icons/16x16/places/folder-pictures.png b/assets/themes/NexusOS-icons/16x16/places/folder-pictures.png
old mode 100644
new mode 100755
diff --git a/assets/themes/NexusOS-icons/16x16/places/folder-publicshare.png b/assets/themes/NexusOS-icons/16x16/places/folder-publicshare.png
old mode 100644
new mode 100755
diff --git a/assets/themes/NexusOS-icons/16x16/places/folder-recent.png b/assets/themes/NexusOS-icons/16x16/places/folder-recent.png
old mode 100644
new mode 100755
diff --git a/assets/themes/NexusOS-icons/16x16/places/folder-remote.png b/assets/themes/NexusOS-icons/16x16/places/folder-remote.png
old mode 100644
new mode 100755
diff --git a/assets/themes/NexusOS-icons/16x16/places/folder-saved-search.png b/assets/themes/NexusOS-icons/16x16/places/folder-saved-search.png
old mode 100644
new mode 100755
diff --git a/assets/themes/NexusOS-icons/16x16/places/folder-templates.png b/assets/themes/NexusOS-icons/16x16/places/folder-templates.png
old mode 100644
new mode 100755
diff --git a/assets/themes/NexusOS-icons/16x16/places/folder-videos.png b/assets/themes/NexusOS-icons/16x16/places/folder-videos.png
old mode 100644
new mode 100755
diff --git a/assets/themes/NexusOS-icons/16x16/places/folder.png b/assets/themes/NexusOS-icons/16x16/places/folder.png
old mode 100644
new mode 100755
diff --git a/assets/themes/NexusOS-icons/22x22/apps/com.visualstudio.code.png b/assets/themes/NexusOS-icons/22x22/apps/com.visualstudio.code.png
new file mode 100644
index 0000000..896eff4
Binary files /dev/null and b/assets/themes/NexusOS-icons/22x22/apps/com.visualstudio.code.png differ
diff --git a/assets/themes/NexusOS-icons/22x22/apps/microsoft-edge.png b/assets/themes/NexusOS-icons/22x22/apps/microsoft-edge.png
new file mode 100644
index 0000000..f7b5d72
Binary files /dev/null and b/assets/themes/NexusOS-icons/22x22/apps/microsoft-edge.png differ
diff --git a/assets/themes/NexusOS-icons/22x22/apps/nexusos-logo.png b/assets/themes/NexusOS-icons/22x22/apps/nexusos-logo.png
old mode 100644
new mode 100755
index c96bb05..67057f5
Binary files a/assets/themes/NexusOS-icons/22x22/apps/nexusos-logo.png and b/assets/themes/NexusOS-icons/22x22/apps/nexusos-logo.png differ
diff --git a/assets/themes/NexusOS-icons/22x22/apps/utilities-terminal.png b/assets/themes/NexusOS-icons/22x22/apps/utilities-terminal.png
deleted file mode 100644
index 11279ba..0000000
Binary files a/assets/themes/NexusOS-icons/22x22/apps/utilities-terminal.png and /dev/null differ
diff --git a/assets/themes/NexusOS-icons/22x22/places/folder-documents.png b/assets/themes/NexusOS-icons/22x22/places/folder-documents.png
old mode 100644
new mode 100755
diff --git a/assets/themes/NexusOS-icons/22x22/places/folder-download.png b/assets/themes/NexusOS-icons/22x22/places/folder-download.png
old mode 100644
new mode 100755
diff --git a/assets/themes/NexusOS-icons/22x22/places/folder-drag-accept.png b/assets/themes/NexusOS-icons/22x22/places/folder-drag-accept.png
old mode 100644
new mode 100755
diff --git a/assets/themes/NexusOS-icons/22x22/places/folder-home.png b/assets/themes/NexusOS-icons/22x22/places/folder-home.png
old mode 100644
new mode 100755
diff --git a/assets/themes/NexusOS-icons/22x22/places/folder-music.png b/assets/themes/NexusOS-icons/22x22/places/folder-music.png
old mode 100644
new mode 100755
diff --git a/assets/themes/NexusOS-icons/22x22/places/folder-nexus-core.png b/assets/themes/NexusOS-icons/22x22/places/folder-nexus-core.png
index ac68825..76b46a9 100644
Binary files a/assets/themes/NexusOS-icons/22x22/places/folder-nexus-core.png and b/assets/themes/NexusOS-icons/22x22/places/folder-nexus-core.png differ
diff --git a/assets/themes/NexusOS-icons/22x22/places/folder-open.png b/assets/themes/NexusOS-icons/22x22/places/folder-open.png
old mode 100644
new mode 100755
diff --git a/assets/themes/NexusOS-icons/22x22/places/folder-pictures.png b/assets/themes/NexusOS-icons/22x22/places/folder-pictures.png
old mode 100644
new mode 100755
diff --git a/assets/themes/NexusOS-icons/22x22/places/folder-publicshare.png b/assets/themes/NexusOS-icons/22x22/places/folder-publicshare.png
old mode 100644
new mode 100755
diff --git a/assets/themes/NexusOS-icons/22x22/places/folder-recent.png b/assets/themes/NexusOS-icons/22x22/places/folder-recent.png
old mode 100644
new mode 100755
diff --git a/assets/themes/NexusOS-icons/22x22/places/folder-remote.png b/assets/themes/NexusOS-icons/22x22/places/folder-remote.png
old mode 100644
new mode 100755
diff --git a/assets/themes/NexusOS-icons/22x22/places/folder-saved-search.png b/assets/themes/NexusOS-icons/22x22/places/folder-saved-search.png
old mode 100644
new mode 100755
diff --git a/assets/themes/NexusOS-icons/22x22/places/folder-templates.png b/assets/themes/NexusOS-icons/22x22/places/folder-templates.png
old mode 100644
new mode 100755
diff --git a/assets/themes/NexusOS-icons/22x22/places/folder-videos.png b/assets/themes/NexusOS-icons/22x22/places/folder-videos.png
old mode 100644
new mode 100755
diff --git a/assets/themes/NexusOS-icons/22x22/places/folder.png b/assets/themes/NexusOS-icons/22x22/places/folder.png
old mode 100644
new mode 100755
diff --git a/assets/themes/NexusOS-icons/24x24/apps/com.visualstudio.code.png b/assets/themes/NexusOS-icons/24x24/apps/com.visualstudio.code.png
new file mode 100644
index 0000000..6245110
Binary files /dev/null and b/assets/themes/NexusOS-icons/24x24/apps/com.visualstudio.code.png differ
diff --git a/assets/themes/NexusOS-icons/24x24/apps/microsoft-edge.png b/assets/themes/NexusOS-icons/24x24/apps/microsoft-edge.png
new file mode 100644
index 0000000..b6f6c07
Binary files /dev/null and b/assets/themes/NexusOS-icons/24x24/apps/microsoft-edge.png differ
diff --git a/assets/themes/NexusOS-icons/24x24/apps/nexusos-logo.png b/assets/themes/NexusOS-icons/24x24/apps/nexusos-logo.png
old mode 100644
new mode 100755
index c96bb05..90b8440
Binary files a/assets/themes/NexusOS-icons/24x24/apps/nexusos-logo.png and b/assets/themes/NexusOS-icons/24x24/apps/nexusos-logo.png differ
diff --git a/assets/themes/NexusOS-icons/24x24/apps/utilities-terminal.png b/assets/themes/NexusOS-icons/24x24/apps/utilities-terminal.png
deleted file mode 100644
index 63f83c8..0000000
Binary files a/assets/themes/NexusOS-icons/24x24/apps/utilities-terminal.png and /dev/null differ
diff --git a/assets/themes/NexusOS-icons/24x24/places/folder-documents.png b/assets/themes/NexusOS-icons/24x24/places/folder-documents.png
old mode 100644
new mode 100755
diff --git a/assets/themes/NexusOS-icons/24x24/places/folder-download.png b/assets/themes/NexusOS-icons/24x24/places/folder-download.png
old mode 100644
new mode 100755
diff --git a/assets/themes/NexusOS-icons/24x24/places/folder-drag-accept.png b/assets/themes/NexusOS-icons/24x24/places/folder-drag-accept.png
old mode 100644
new mode 100755
diff --git a/assets/themes/NexusOS-icons/24x24/places/folder-home.png b/assets/themes/NexusOS-icons/24x24/places/folder-home.png
old mode 100644
new mode 100755
diff --git a/assets/themes/NexusOS-icons/24x24/places/folder-music.png b/assets/themes/NexusOS-icons/24x24/places/folder-music.png
old mode 100644
new mode 100755
diff --git a/assets/themes/NexusOS-icons/24x24/places/folder-nexus-core.png b/assets/themes/NexusOS-icons/24x24/places/folder-nexus-core.png
index e5a5824..333480a 100644
Binary files a/assets/themes/NexusOS-icons/24x24/places/folder-nexus-core.png and b/assets/themes/NexusOS-icons/24x24/places/folder-nexus-core.png differ
diff --git a/assets/themes/NexusOS-icons/24x24/places/folder-open.png b/assets/themes/NexusOS-icons/24x24/places/folder-open.png
old mode 100644
new mode 100755
diff --git a/assets/themes/NexusOS-icons/24x24/places/folder-pictures.png b/assets/themes/NexusOS-icons/24x24/places/folder-pictures.png
old mode 100644
new mode 100755
diff --git a/assets/themes/NexusOS-icons/24x24/places/folder-publicshare.png b/assets/themes/NexusOS-icons/24x24/places/folder-publicshare.png
old mode 100644
new mode 100755
diff --git a/assets/themes/NexusOS-icons/24x24/places/folder-recent.png b/assets/themes/NexusOS-icons/24x24/places/folder-recent.png
old mode 100644
new mode 100755
diff --git a/assets/themes/NexusOS-icons/24x24/places/folder-remote.png b/assets/themes/NexusOS-icons/24x24/places/folder-remote.png
old mode 100644
new mode 100755
diff --git a/assets/themes/NexusOS-icons/24x24/places/folder-saved-search.png b/assets/themes/NexusOS-icons/24x24/places/folder-saved-search.png
old mode 100644
new mode 100755
diff --git a/assets/themes/NexusOS-icons/24x24/places/folder-templates.png b/assets/themes/NexusOS-icons/24x24/places/folder-templates.png
old mode 100644
new mode 100755
diff --git a/assets/themes/NexusOS-icons/24x24/places/folder-videos.png b/assets/themes/NexusOS-icons/24x24/places/folder-videos.png
old mode 100644
new mode 100755
diff --git a/assets/themes/NexusOS-icons/24x24/places/folder.png b/assets/themes/NexusOS-icons/24x24/places/folder.png
old mode 100644
new mode 100755
diff --git a/assets/themes/NexusOS-icons/32x32/apps/com.visualstudio.code.png b/assets/themes/NexusOS-icons/32x32/apps/com.visualstudio.code.png
new file mode 100644
index 0000000..1f3a90b
Binary files /dev/null and b/assets/themes/NexusOS-icons/32x32/apps/com.visualstudio.code.png differ
diff --git a/assets/themes/NexusOS-icons/32x32/apps/microsoft-edge.png b/assets/themes/NexusOS-icons/32x32/apps/microsoft-edge.png
new file mode 100644
index 0000000..bcea0be
Binary files /dev/null and b/assets/themes/NexusOS-icons/32x32/apps/microsoft-edge.png differ
diff --git a/assets/themes/NexusOS-icons/32x32/apps/nexusos-logo.png b/assets/themes/NexusOS-icons/32x32/apps/nexusos-logo.png
old mode 100644
new mode 100755
index c96bb05..59bce6c
Binary files a/assets/themes/NexusOS-icons/32x32/apps/nexusos-logo.png and b/assets/themes/NexusOS-icons/32x32/apps/nexusos-logo.png differ
diff --git a/assets/themes/NexusOS-icons/32x32/apps/utilities-terminal.png b/assets/themes/NexusOS-icons/32x32/apps/utilities-terminal.png
deleted file mode 100644
index 178f800..0000000
Binary files a/assets/themes/NexusOS-icons/32x32/apps/utilities-terminal.png and /dev/null differ
diff --git a/assets/themes/NexusOS-icons/32x32/places/folder-documents.png b/assets/themes/NexusOS-icons/32x32/places/folder-documents.png
old mode 100644
new mode 100755
diff --git a/assets/themes/NexusOS-icons/32x32/places/folder-download.png b/assets/themes/NexusOS-icons/32x32/places/folder-download.png
old mode 100644
new mode 100755
diff --git a/assets/themes/NexusOS-icons/32x32/places/folder-drag-accept.png b/assets/themes/NexusOS-icons/32x32/places/folder-drag-accept.png
old mode 100644
new mode 100755
diff --git a/assets/themes/NexusOS-icons/32x32/places/folder-home.png b/assets/themes/NexusOS-icons/32x32/places/folder-home.png
old mode 100644
new mode 100755
diff --git a/assets/themes/NexusOS-icons/32x32/places/folder-music.png b/assets/themes/NexusOS-icons/32x32/places/folder-music.png
old mode 100644
new mode 100755
diff --git a/assets/themes/NexusOS-icons/32x32/places/folder-nexus-core.png b/assets/themes/NexusOS-icons/32x32/places/folder-nexus-core.png
index 6a20755..b938707 100644
Binary files a/assets/themes/NexusOS-icons/32x32/places/folder-nexus-core.png and b/assets/themes/NexusOS-icons/32x32/places/folder-nexus-core.png differ
diff --git a/assets/themes/NexusOS-icons/32x32/places/folder-open.png b/assets/themes/NexusOS-icons/32x32/places/folder-open.png
old mode 100644
new mode 100755
diff --git a/assets/themes/NexusOS-icons/32x32/places/folder-pictures.png b/assets/themes/NexusOS-icons/32x32/places/folder-pictures.png
old mode 100644
new mode 100755
diff --git a/assets/themes/NexusOS-icons/32x32/places/folder-publicshare.png b/assets/themes/NexusOS-icons/32x32/places/folder-publicshare.png
old mode 100644
new mode 100755
diff --git a/assets/themes/NexusOS-icons/32x32/places/folder-recent.png b/assets/themes/NexusOS-icons/32x32/places/folder-recent.png
old mode 100644
new mode 100755
diff --git a/assets/themes/NexusOS-icons/32x32/places/folder-remote.png b/assets/themes/NexusOS-icons/32x32/places/folder-remote.png
old mode 100644
new mode 100755
diff --git a/assets/themes/NexusOS-icons/32x32/places/folder-saved-search.png b/assets/themes/NexusOS-icons/32x32/places/folder-saved-search.png
old mode 100644
new mode 100755
diff --git a/assets/themes/NexusOS-icons/32x32/places/folder-templates.png b/assets/themes/NexusOS-icons/32x32/places/folder-templates.png
old mode 100644
new mode 100755
diff --git a/assets/themes/NexusOS-icons/32x32/places/folder-videos.png b/assets/themes/NexusOS-icons/32x32/places/folder-videos.png
old mode 100644
new mode 100755
diff --git a/assets/themes/NexusOS-icons/32x32/places/folder.png b/assets/themes/NexusOS-icons/32x32/places/folder.png
old mode 100644
new mode 100755
diff --git a/assets/themes/NexusOS-icons/48x48/apps/com.visualstudio.code.png b/assets/themes/NexusOS-icons/48x48/apps/com.visualstudio.code.png
new file mode 100644
index 0000000..5d1d790
Binary files /dev/null and b/assets/themes/NexusOS-icons/48x48/apps/com.visualstudio.code.png differ
diff --git a/assets/themes/NexusOS-icons/48x48/apps/microsoft-edge.png b/assets/themes/NexusOS-icons/48x48/apps/microsoft-edge.png
new file mode 100644
index 0000000..e399431
Binary files /dev/null and b/assets/themes/NexusOS-icons/48x48/apps/microsoft-edge.png differ
diff --git a/assets/themes/NexusOS-icons/48x48/apps/nexusos-logo.png b/assets/themes/NexusOS-icons/48x48/apps/nexusos-logo.png
old mode 100644
new mode 100755
index c96bb05..ca5b2ab
Binary files a/assets/themes/NexusOS-icons/48x48/apps/nexusos-logo.png and b/assets/themes/NexusOS-icons/48x48/apps/nexusos-logo.png differ
diff --git a/assets/themes/NexusOS-icons/48x48/apps/utilities-terminal.png b/assets/themes/NexusOS-icons/48x48/apps/utilities-terminal.png
deleted file mode 100644
index a7a4039..0000000
Binary files a/assets/themes/NexusOS-icons/48x48/apps/utilities-terminal.png and /dev/null differ
diff --git a/assets/themes/NexusOS-icons/48x48/places/folder-documents.png b/assets/themes/NexusOS-icons/48x48/places/folder-documents.png
old mode 100644
new mode 100755
diff --git a/assets/themes/NexusOS-icons/48x48/places/folder-download.png b/assets/themes/NexusOS-icons/48x48/places/folder-download.png
old mode 100644
new mode 100755
diff --git a/assets/themes/NexusOS-icons/48x48/places/folder-drag-accept.png b/assets/themes/NexusOS-icons/48x48/places/folder-drag-accept.png
old mode 100644
new mode 100755
diff --git a/assets/themes/NexusOS-icons/48x48/places/folder-home.png b/assets/themes/NexusOS-icons/48x48/places/folder-home.png
old mode 100644
new mode 100755
diff --git a/assets/themes/NexusOS-icons/48x48/places/folder-music.png b/assets/themes/NexusOS-icons/48x48/places/folder-music.png
old mode 100644
new mode 100755
diff --git a/assets/themes/NexusOS-icons/48x48/places/folder-nexus-core.png b/assets/themes/NexusOS-icons/48x48/places/folder-nexus-core.png
index 98916cc..745561f 100644
Binary files a/assets/themes/NexusOS-icons/48x48/places/folder-nexus-core.png and b/assets/themes/NexusOS-icons/48x48/places/folder-nexus-core.png differ
diff --git a/assets/themes/NexusOS-icons/48x48/places/folder-open.png b/assets/themes/NexusOS-icons/48x48/places/folder-open.png
old mode 100644
new mode 100755
diff --git a/assets/themes/NexusOS-icons/48x48/places/folder-pictures.png b/assets/themes/NexusOS-icons/48x48/places/folder-pictures.png
old mode 100644
new mode 100755
diff --git a/assets/themes/NexusOS-icons/48x48/places/folder-publicshare.png b/assets/themes/NexusOS-icons/48x48/places/folder-publicshare.png
old mode 100644
new mode 100755
diff --git a/assets/themes/NexusOS-icons/48x48/places/folder-recent.png b/assets/themes/NexusOS-icons/48x48/places/folder-recent.png
old mode 100644
new mode 100755
diff --git a/assets/themes/NexusOS-icons/48x48/places/folder-remote.png b/assets/themes/NexusOS-icons/48x48/places/folder-remote.png
old mode 100644
new mode 100755
diff --git a/assets/themes/NexusOS-icons/48x48/places/folder-saved-search.png b/assets/themes/NexusOS-icons/48x48/places/folder-saved-search.png
old mode 100644
new mode 100755
diff --git a/assets/themes/NexusOS-icons/48x48/places/folder-templates.png b/assets/themes/NexusOS-icons/48x48/places/folder-templates.png
old mode 100644
new mode 100755
diff --git a/assets/themes/NexusOS-icons/48x48/places/folder-videos.png b/assets/themes/NexusOS-icons/48x48/places/folder-videos.png
old mode 100644
new mode 100755
diff --git a/assets/themes/NexusOS-icons/48x48/places/folder.png b/assets/themes/NexusOS-icons/48x48/places/folder.png
old mode 100644
new mode 100755
diff --git a/assets/themes/NexusOS-icons/64x64/apps/com.visualstudio.code.png b/assets/themes/NexusOS-icons/64x64/apps/com.visualstudio.code.png
new file mode 100644
index 0000000..97ab954
Binary files /dev/null and b/assets/themes/NexusOS-icons/64x64/apps/com.visualstudio.code.png differ
diff --git a/assets/themes/NexusOS-icons/64x64/apps/microsoft-edge.png b/assets/themes/NexusOS-icons/64x64/apps/microsoft-edge.png
new file mode 100644
index 0000000..7981afd
Binary files /dev/null and b/assets/themes/NexusOS-icons/64x64/apps/microsoft-edge.png differ
diff --git a/assets/themes/NexusOS-icons/64x64/apps/nexusos-logo.png b/assets/themes/NexusOS-icons/64x64/apps/nexusos-logo.png
old mode 100644
new mode 100755
index c96bb05..d961a6e
Binary files a/assets/themes/NexusOS-icons/64x64/apps/nexusos-logo.png and b/assets/themes/NexusOS-icons/64x64/apps/nexusos-logo.png differ
diff --git a/assets/themes/NexusOS-icons/64x64/apps/utilities-terminal.png b/assets/themes/NexusOS-icons/64x64/apps/utilities-terminal.png
deleted file mode 100644
index e139c9f..0000000
Binary files a/assets/themes/NexusOS-icons/64x64/apps/utilities-terminal.png and /dev/null differ
diff --git a/assets/themes/NexusOS-icons/64x64/places/folder-documents.png b/assets/themes/NexusOS-icons/64x64/places/folder-documents.png
old mode 100644
new mode 100755
diff --git a/assets/themes/NexusOS-icons/64x64/places/folder-download.png b/assets/themes/NexusOS-icons/64x64/places/folder-download.png
old mode 100644
new mode 100755
diff --git a/assets/themes/NexusOS-icons/64x64/places/folder-drag-accept.png b/assets/themes/NexusOS-icons/64x64/places/folder-drag-accept.png
old mode 100644
new mode 100755
diff --git a/assets/themes/NexusOS-icons/64x64/places/folder-home.png b/assets/themes/NexusOS-icons/64x64/places/folder-home.png
old mode 100644
new mode 100755
diff --git a/assets/themes/NexusOS-icons/64x64/places/folder-music.png b/assets/themes/NexusOS-icons/64x64/places/folder-music.png
old mode 100644
new mode 100755
diff --git a/assets/themes/NexusOS-icons/64x64/places/folder-nexus-core.png b/assets/themes/NexusOS-icons/64x64/places/folder-nexus-core.png
index a15d279..caff89c 100644
Binary files a/assets/themes/NexusOS-icons/64x64/places/folder-nexus-core.png and b/assets/themes/NexusOS-icons/64x64/places/folder-nexus-core.png differ
diff --git a/assets/themes/NexusOS-icons/64x64/places/folder-open.png b/assets/themes/NexusOS-icons/64x64/places/folder-open.png
old mode 100644
new mode 100755
diff --git a/assets/themes/NexusOS-icons/64x64/places/folder-pictures.png b/assets/themes/NexusOS-icons/64x64/places/folder-pictures.png
old mode 100644
new mode 100755
diff --git a/assets/themes/NexusOS-icons/64x64/places/folder-publicshare.png b/assets/themes/NexusOS-icons/64x64/places/folder-publicshare.png
old mode 100644
new mode 100755
diff --git a/assets/themes/NexusOS-icons/64x64/places/folder-recent.png b/assets/themes/NexusOS-icons/64x64/places/folder-recent.png
old mode 100644
new mode 100755
diff --git a/assets/themes/NexusOS-icons/64x64/places/folder-remote.png b/assets/themes/NexusOS-icons/64x64/places/folder-remote.png
old mode 100644
new mode 100755
diff --git a/assets/themes/NexusOS-icons/64x64/places/folder-saved-search.png b/assets/themes/NexusOS-icons/64x64/places/folder-saved-search.png
old mode 100644
new mode 100755
diff --git a/assets/themes/NexusOS-icons/64x64/places/folder-templates.png b/assets/themes/NexusOS-icons/64x64/places/folder-templates.png
old mode 100644
new mode 100755
diff --git a/assets/themes/NexusOS-icons/64x64/places/folder-videos.png b/assets/themes/NexusOS-icons/64x64/places/folder-videos.png
old mode 100644
new mode 100755
diff --git a/assets/themes/NexusOS-icons/64x64/places/folder.png b/assets/themes/NexusOS-icons/64x64/places/folder.png
old mode 100644
new mode 100755
diff --git a/assets/themes/NexusOS-icons/icon-theme.cache b/assets/themes/NexusOS-icons/icon-theme.cache
index fcde1c8..fca834f 100644
Binary files a/assets/themes/NexusOS-icons/icon-theme.cache and b/assets/themes/NexusOS-icons/icon-theme.cache differ
diff --git a/assets/themes/NexusOS-icons/index.theme b/assets/themes/NexusOS-icons/index.theme
old mode 100644
new mode 100755
index dbee5c4..769fa0c
--- a/assets/themes/NexusOS-icons/index.theme
+++ b/assets/themes/NexusOS-icons/index.theme
@@ -1,75 +1,702 @@
[Icon Theme]
Name=NexusOS
Comment=NexusOS accent icon theme
-Inherits=Papirus-Dark
-Directories=16x16/apps,22x22/apps,24x24/apps,32x32/apps,48x48/apps,64x64/apps,128x128/apps,16x16/places,22x22/places,24x24/places,32x32/places,48x48/places,64x64/places,128x128/places
+Inherits=Papirus-Dark,hicolor
+Directories=16x16/apps,22x22/apps,24x24/apps,32x32/apps,48x48/apps,64x64/apps,128x128/apps,16x16/places,22x22/places,24x24/places,32x32/places,48x48/places,64x64/places,128x128/places,16x16/actions,22x22/actions,24x24/actions,32x32/actions,48x48/actions,64x64/actions,128x128/actions,scalable/status,8x8/emblems,16x16/devices,16x16/emblems,16x16/emotes,16x16/mimetypes,16x16/panel,16x16/status,16x16@2x/actions,16x16@2x/apps,16x16@2x/devices,16x16@2x/emblems,16x16@2x/emotes,16x16@2x/mimetypes,16x16@2x/panel,16x16@2x/places,16x16@2x/status,18x18/actions,18x18@2x/actions,22x22/animations,22x22/devices,22x22/emblems,22x22/emotes,22x22/mimetypes,22x22/panel,22x22/status,22x22@2x/actions,22x22@2x/animations,22x22@2x/apps,22x22@2x/devices,22x22@2x/emblems,22x22@2x/emotes,22x22@2x/mimetypes,22x22@2x/panel,22x22@2x/places,22x22@2x/status,24x24/animations,24x24/devices,24x24/emblems,24x24/emotes,24x24/mimetypes,24x24/panel,24x24/status,24x24@2x/actions,24x24@2x/animations,24x24@2x/apps,24x24@2x/devices,24x24@2x/emblems,24x24@2x/emotes,24x24@2x/mimetypes,24x24@2x/panel,24x24@2x/places,24x24@2x/status,32x32/devices,32x32/emblems,32x32/emotes,32x32/mimetypes,32x32/status,32x32@2x/actions,32x32@2x/apps,32x32@2x/devices,32x32@2x/emblems,32x32@2x/emotes,32x32@2x/mimetypes,32x32@2x/places,32x32@2x/status,42x42/apps,48x48/devices,48x48/emblems,48x48/emotes,48x48/mimetypes,48x48/status,48x48@2x/actions,48x48@2x/apps,48x48@2x/devices,48x48@2x/emblems,48x48@2x/emotes,48x48@2x/mimetypes,48x48@2x/places,48x48@2x/status,64x64/devices,64x64/mimetypes,64x64@2x/apps,64x64@2x/devices,64x64@2x/mimetypes,64x64@2x/places,84x84/apps,96x96/apps,96x96/devices,96x96/mimetypes,96x96/places,128x128/devices,128x128/mimetypes,symbolic/actions,symbolic/apps,symbolic/devices,symbolic/emblems,symbolic/emotes,symbolic/mimetypes,symbolic/places,symbolic/status,symbolic/up-to-32
[16x16/apps]
-Size=16
Context=Applications
+Size=16
Type=Fixed
[22x22/apps]
-Size=22
Context=Applications
+Size=22
Type=Fixed
[24x24/apps]
-Size=24
Context=Applications
+Size=24
Type=Fixed
[32x32/apps]
-Size=32
Context=Applications
+Size=32
Type=Fixed
[48x48/apps]
-Size=48
Context=Applications
+Size=48
Type=Fixed
[64x64/apps]
-Size=64
Context=Applications
+Size=64
Type=Fixed
[128x128/apps]
-Size=128
Context=Applications
-Type=Fixed
+Size=128
+MinSize=128
+MaxSize=512
+Type=Scalable
[16x16/places]
-Size=16
Context=Places
+Size=16
Type=Fixed
[22x22/places]
-Size=22
Context=Places
+Size=22
Type=Fixed
[24x24/places]
-Size=24
Context=Places
+Size=24
Type=Fixed
[32x32/places]
-Size=32
Context=Places
+Size=32
Type=Fixed
[48x48/places]
-Size=48
Context=Places
+Size=48
Type=Fixed
[64x64/places]
-Size=64
Context=Places
+Size=64
Type=Fixed
[128x128/places]
-Size=128
Context=Places
+Size=128
+MinSize=128
+MaxSize=512
+Type=Scalable
+
+[16x16/actions]
+Context=Actions
+Size=16
Type=Fixed
+
+[22x22/actions]
+Context=Actions
+Size=22
+Type=Fixed
+
+[24x24/actions]
+Context=Actions
+Size=24
+Type=Fixed
+
+[32x32/actions]
+Context=Actions
+Size=32
+Type=Fixed
+
+[48x48/actions]
+Context=Actions
+Size=48
+Type=Fixed
+
+[64x64/actions]
+Size=64
+Context=Actions
+Type=Fixed
+
+[128x128/actions]
+Size=128
+Context=Actions
+Type=Fixed
+
+[scalable/status]
+Size=16
+Context=Status
+MinSize=8
+MaxSize=512
+Type=Scalable
+
+[8x8/emblems]
+Context=Emblems
+Size=8
+Type=Fixed
+
+[16x16/devices]
+Context=Devices
+Size=16
+Type=Fixed
+
+[16x16/emblems]
+Context=Emblems
+Size=16
+Type=Fixed
+
+[16x16/emotes]
+Context=Emotes
+Size=16
+Type=Fixed
+
+[16x16/mimetypes]
+Context=MimeTypes
+Size=16
+Type=Fixed
+
+[16x16/panel]
+Context=Status
+Size=16
+Type=Fixed
+
+[16x16/status]
+Context=Status
+Size=16
+Type=Fixed
+
+[16x16@2x/actions]
+Context=Actions
+Size=16
+Scale=2
+Type=Fixed
+
+[16x16@2x/apps]
+Context=Applications
+Size=16
+Scale=2
+Type=Fixed
+
+[16x16@2x/devices]
+Context=Devices
+Size=16
+Scale=2
+Type=Fixed
+
+[16x16@2x/emblems]
+Context=Emblems
+Size=16
+Scale=2
+Type=Fixed
+
+[16x16@2x/emotes]
+Context=Emotes
+Size=16
+Scale=2
+Type=Fixed
+
+[16x16@2x/mimetypes]
+Context=MimeTypes
+Size=16
+Scale=2
+Type=Fixed
+
+[16x16@2x/panel]
+Context=Status
+Size=16
+Scale=2
+Type=Fixed
+
+[16x16@2x/places]
+Context=Places
+Size=16
+Scale=2
+Type=Fixed
+
+[16x16@2x/status]
+Context=Status
+Size=16
+Scale=2
+Type=Fixed
+
+[18x18/actions]
+Context=Actions
+Size=18
+Type=Fixed
+
+[18x18@2x/actions]
+Context=Actions
+Size=18
+Scale=2
+Type=Fixed
+
+[22x22/animations]
+Context=Animations
+Size=22
+Type=Fixed
+
+[22x22/devices]
+Context=Devices
+Size=22
+Type=Fixed
+
+[22x22/emblems]
+Context=Emblems
+Size=22
+Type=Fixed
+
+[22x22/emotes]
+Context=Emotes
+Size=22
+Type=Fixed
+
+[22x22/mimetypes]
+Context=MimeTypes
+Size=22
+Type=Fixed
+
+[22x22/panel]
+Context=Status
+Size=22
+Type=Fixed
+
+[22x22/status]
+Context=Status
+Size=22
+Type=Fixed
+
+[22x22@2x/actions]
+Context=Actions
+Size=22
+Scale=2
+Type=Fixed
+
+[22x22@2x/animations]
+Context=Animations
+Size=22
+Scale=2
+Type=Fixed
+
+[22x22@2x/apps]
+Context=Applications
+Size=22
+Scale=2
+Type=Fixed
+
+[22x22@2x/devices]
+Context=Devices
+Size=22
+Scale=2
+Type=Fixed
+
+[22x22@2x/emblems]
+Context=Emblems
+Size=22
+Scale=2
+Type=Fixed
+
+[22x22@2x/emotes]
+Context=Emotes
+Size=22
+Scale=2
+Type=Fixed
+
+[22x22@2x/mimetypes]
+Context=MimeTypes
+Size=22
+Scale=2
+Type=Fixed
+
+[22x22@2x/panel]
+Context=Status
+Size=22
+Scale=2
+Type=Fixed
+
+[22x22@2x/places]
+Context=Places
+Size=22
+Scale=2
+Type=Fixed
+
+[22x22@2x/status]
+Context=Status
+Size=22
+Scale=2
+Type=Fixed
+
+[24x24/animations]
+Context=Animations
+Size=24
+Type=Fixed
+
+[24x24/devices]
+Context=Devices
+Size=24
+Type=Fixed
+
+[24x24/emblems]
+Context=Emblems
+Size=24
+Type=Fixed
+
+[24x24/emotes]
+Context=Emotes
+Size=24
+Type=Fixed
+
+[24x24/mimetypes]
+Context=MimeTypes
+Size=24
+Type=Fixed
+
+[24x24/panel]
+Context=Status
+Size=24
+Type=Fixed
+
+[24x24/status]
+Context=Status
+Size=24
+Type=Fixed
+
+[24x24@2x/actions]
+Context=Actions
+Size=24
+Scale=2
+Type=Fixed
+
+[24x24@2x/animations]
+Context=Animations
+Size=24
+Scale=2
+Type=Fixed
+
+[24x24@2x/apps]
+Context=Applications
+Size=24
+Scale=2
+Type=Fixed
+
+[24x24@2x/devices]
+Context=Devices
+Size=24
+Scale=2
+Type=Fixed
+
+[24x24@2x/emblems]
+Context=Emblems
+Size=24
+Scale=2
+Type=Fixed
+
+[24x24@2x/emotes]
+Context=Emotes
+Size=24
+Scale=2
+Type=Fixed
+
+[24x24@2x/mimetypes]
+Context=MimeTypes
+Size=24
+Scale=2
+Type=Fixed
+
+[24x24@2x/panel]
+Context=Status
+Size=24
+Scale=2
+Type=Fixed
+
+[24x24@2x/places]
+Context=Places
+Size=24
+Scale=2
+Type=Fixed
+
+[24x24@2x/status]
+Context=Status
+Size=24
+Scale=2
+Type=Fixed
+
+[32x32/devices]
+Context=Devices
+Size=32
+Type=Fixed
+
+[32x32/emblems]
+Context=Emblems
+Size=32
+Type=Fixed
+
+[32x32/emotes]
+Context=Emotes
+Size=32
+Type=Fixed
+
+[32x32/mimetypes]
+Context=MimeTypes
+Size=32
+Type=Fixed
+
+[32x32/status]
+Context=Status
+Size=32
+Type=Fixed
+
+[32x32@2x/actions]
+Context=Actions
+Size=32
+Scale=2
+Type=Fixed
+
+[32x32@2x/apps]
+Context=Applications
+Size=32
+Scale=2
+Type=Fixed
+
+[32x32@2x/devices]
+Context=Devices
+Size=32
+Scale=2
+Type=Fixed
+
+[32x32@2x/emblems]
+Context=Emblems
+Size=32
+Scale=2
+Type=Fixed
+
+[32x32@2x/emotes]
+Context=Emotes
+Size=32
+Scale=2
+Type=Fixed
+
+[32x32@2x/mimetypes]
+Context=MimeTypes
+Size=32
+Scale=2
+Type=Fixed
+
+[32x32@2x/places]
+Context=Places
+Size=32
+Scale=2
+Type=Fixed
+
+[32x32@2x/status]
+Context=Status
+Size=32
+Scale=2
+Type=Fixed
+
+[42x42/apps]
+Context=Applications
+Size=42
+Type=Fixed
+
+[48x48/devices]
+Context=Devices
+Size=48
+Type=Fixed
+
+[48x48/emblems]
+Context=Emblems
+Size=48
+Type=Fixed
+
+[48x48/emotes]
+Context=Emotes
+Size=48
+Type=Fixed
+
+[48x48/mimetypes]
+Context=MimeTypes
+Size=48
+Type=Fixed
+
+[48x48/status]
+Context=Status
+Size=48
+MinSize=48
+MaxSize=512
+Type=Scalable
+
+[48x48@2x/actions]
+Context=Actions
+Size=48
+Scale=2
+Type=Fixed
+
+[48x48@2x/apps]
+Context=Applications
+Size=48
+Scale=2
+Type=Fixed
+
+[48x48@2x/devices]
+Context=Devices
+Size=48
+Scale=2
+Type=Fixed
+
+[48x48@2x/emblems]
+Context=Emblems
+Size=48
+Scale=2
+Type=Fixed
+
+[48x48@2x/emotes]
+Context=Emotes
+Size=48
+Scale=2
+Type=Fixed
+
+[48x48@2x/mimetypes]
+Context=MimeTypes
+Size=48
+Scale=2
+Type=Fixed
+
+[48x48@2x/places]
+Context=Places
+Size=48
+Scale=2
+Type=Fixed
+
+[48x48@2x/status]
+Context=Status
+Size=48
+MinSize=48
+MaxSize=512
+Scale=2
+Type=Scalable
+
+[64x64/devices]
+Context=Devices
+Size=64
+Type=Fixed
+
+[64x64/mimetypes]
+Context=MimeTypes
+Size=64
+Type=Fixed
+
+[64x64@2x/apps]
+Context=Applications
+Size=64
+Scale=2
+Type=Fixed
+
+[64x64@2x/devices]
+Context=Devices
+Size=64
+Scale=2
+Type=Fixed
+
+[64x64@2x/mimetypes]
+Context=MimeTypes
+Size=64
+Scale=2
+Type=Fixed
+
+[64x64@2x/places]
+Context=Places
+Size=64
+Scale=2
+Type=Fixed
+
+[84x84/apps]
+Context=Applications
+Size=84
+Type=Fixed
+
+[96x96/apps]
+Context=Applications
+Size=96
+Type=Fixed
+
+[96x96/devices]
+Context=Devices
+Size=96
+Type=Fixed
+
+[96x96/mimetypes]
+Context=MimeTypes
+Size=96
+Type=Fixed
+
+[96x96/places]
+Context=Places
+Size=96
+Type=Fixed
+
+[128x128/devices]
+Context=Devices
+Size=128
+MinSize=128
+MaxSize=512
+Type=Scalable
+
+[128x128/mimetypes]
+Context=MimeTypes
+Size=128
+MinSize=128
+MaxSize=512
+Type=Scalable
+
+[symbolic/actions]
+Context=Actions
+Size=16
+MinSize=16
+MaxSize=512
+Type=Scalable
+
+[symbolic/apps]
+Context=Applications
+Size=16
+MinSize=16
+MaxSize=512
+Type=Scalable
+
+[symbolic/devices]
+Context=Devices
+Size=16
+MinSize=16
+MaxSize=512
+Type=Scalable
+
+[symbolic/emblems]
+Context=Emblems
+Size=16
+MinSize=16
+MaxSize=512
+Type=Scalable
+
+[symbolic/emotes]
+Context=Emotes
+Size=16
+MinSize=16
+MaxSize=512
+Type=Scalable
+
+[symbolic/mimetypes]
+Context=MimeTypes
+Size=16
+MinSize=16
+MaxSize=512
+Type=Scalable
+
+[symbolic/places]
+Context=Places
+Size=16
+MinSize=16
+MaxSize=512
+Type=Scalable
+
+[symbolic/status]
+Context=Status
+Size=16
+MinSize=16
+MaxSize=512
+Type=Scalable
+
+[symbolic/up-to-32]
+Context=Status
+Size=16
+MinSize=16
+MaxSize=32
+Type=Scalable
diff --git a/assets/themes/NexusOS-xfwm4-src/build.py b/assets/themes/NexusOS-xfwm4-src/build.py
old mode 100644
new mode 100755
diff --git a/assets/themes/NexusOS/gtk-2.0/apps.rc b/assets/themes/NexusOS/gtk-2.0/apps.rc
old mode 100644
new mode 100755
diff --git a/assets/themes/NexusOS/gtk-2.0/assets/arrow-down-insens.png b/assets/themes/NexusOS/gtk-2.0/assets/arrow-down-insens.png
old mode 100644
new mode 100755
diff --git a/assets/themes/NexusOS/gtk-2.0/assets/arrow-down-prelight.png b/assets/themes/NexusOS/gtk-2.0/assets/arrow-down-prelight.png
old mode 100644
new mode 100755
diff --git a/assets/themes/NexusOS/gtk-2.0/assets/arrow-down-small-insens.png b/assets/themes/NexusOS/gtk-2.0/assets/arrow-down-small-insens.png
old mode 100644
new mode 100755
diff --git a/assets/themes/NexusOS/gtk-2.0/assets/arrow-down-small-prelight.png b/assets/themes/NexusOS/gtk-2.0/assets/arrow-down-small-prelight.png
old mode 100644
new mode 100755
diff --git a/assets/themes/NexusOS/gtk-2.0/assets/arrow-down-small.png b/assets/themes/NexusOS/gtk-2.0/assets/arrow-down-small.png
old mode 100644
new mode 100755
diff --git a/assets/themes/NexusOS/gtk-2.0/assets/arrow-down.png b/assets/themes/NexusOS/gtk-2.0/assets/arrow-down.png
old mode 100644
new mode 100755
diff --git a/assets/themes/NexusOS/gtk-2.0/assets/arrow-left-insens.png b/assets/themes/NexusOS/gtk-2.0/assets/arrow-left-insens.png
old mode 100644
new mode 100755
diff --git a/assets/themes/NexusOS/gtk-2.0/assets/arrow-left-prelight.png b/assets/themes/NexusOS/gtk-2.0/assets/arrow-left-prelight.png
old mode 100644
new mode 100755
diff --git a/assets/themes/NexusOS/gtk-2.0/assets/arrow-left.png b/assets/themes/NexusOS/gtk-2.0/assets/arrow-left.png
old mode 100644
new mode 100755
diff --git a/assets/themes/NexusOS/gtk-2.0/assets/arrow-right-insens.png b/assets/themes/NexusOS/gtk-2.0/assets/arrow-right-insens.png
old mode 100644
new mode 100755
diff --git a/assets/themes/NexusOS/gtk-2.0/assets/arrow-right-prelight.png b/assets/themes/NexusOS/gtk-2.0/assets/arrow-right-prelight.png
old mode 100644
new mode 100755
diff --git a/assets/themes/NexusOS/gtk-2.0/assets/arrow-right.png b/assets/themes/NexusOS/gtk-2.0/assets/arrow-right.png
old mode 100644
new mode 100755
diff --git a/assets/themes/NexusOS/gtk-2.0/assets/arrow-up-insens.png b/assets/themes/NexusOS/gtk-2.0/assets/arrow-up-insens.png
old mode 100644
new mode 100755
diff --git a/assets/themes/NexusOS/gtk-2.0/assets/arrow-up-prelight.png b/assets/themes/NexusOS/gtk-2.0/assets/arrow-up-prelight.png
old mode 100644
new mode 100755
diff --git a/assets/themes/NexusOS/gtk-2.0/assets/arrow-up-small-insens.png b/assets/themes/NexusOS/gtk-2.0/assets/arrow-up-small-insens.png
old mode 100644
new mode 100755
diff --git a/assets/themes/NexusOS/gtk-2.0/assets/arrow-up-small-prelight.png b/assets/themes/NexusOS/gtk-2.0/assets/arrow-up-small-prelight.png
old mode 100644
new mode 100755
diff --git a/assets/themes/NexusOS/gtk-2.0/assets/arrow-up-small.png b/assets/themes/NexusOS/gtk-2.0/assets/arrow-up-small.png
old mode 100644
new mode 100755
diff --git a/assets/themes/NexusOS/gtk-2.0/assets/arrow-up.png b/assets/themes/NexusOS/gtk-2.0/assets/arrow-up.png
old mode 100644
new mode 100755
diff --git a/assets/themes/NexusOS/gtk-2.0/assets/border.png b/assets/themes/NexusOS/gtk-2.0/assets/border.png
old mode 100644
new mode 100755
diff --git a/assets/themes/NexusOS/gtk-2.0/assets/button-active-hover.png b/assets/themes/NexusOS/gtk-2.0/assets/button-active-hover.png
old mode 100644
new mode 100755
diff --git a/assets/themes/NexusOS/gtk-2.0/assets/button-active.png b/assets/themes/NexusOS/gtk-2.0/assets/button-active.png
old mode 100644
new mode 100755
diff --git a/assets/themes/NexusOS/gtk-2.0/assets/button-hover.png b/assets/themes/NexusOS/gtk-2.0/assets/button-hover.png
old mode 100644
new mode 100755
diff --git a/assets/themes/NexusOS/gtk-2.0/assets/button-insensitive.png b/assets/themes/NexusOS/gtk-2.0/assets/button-insensitive.png
old mode 100644
new mode 100755
diff --git a/assets/themes/NexusOS/gtk-2.0/assets/button.png b/assets/themes/NexusOS/gtk-2.0/assets/button.png
old mode 100644
new mode 100755
diff --git a/assets/themes/NexusOS/gtk-2.0/assets/checkbox-checked-insensitive.png b/assets/themes/NexusOS/gtk-2.0/assets/checkbox-checked-insensitive.png
old mode 100644
new mode 100755
diff --git a/assets/themes/NexusOS/gtk-2.0/assets/checkbox-checked.png b/assets/themes/NexusOS/gtk-2.0/assets/checkbox-checked.png
old mode 100644
new mode 100755
diff --git a/assets/themes/NexusOS/gtk-2.0/assets/checkbox-unchecked-insensitive.png b/assets/themes/NexusOS/gtk-2.0/assets/checkbox-unchecked-insensitive.png
old mode 100644
new mode 100755
diff --git a/assets/themes/NexusOS/gtk-2.0/assets/checkbox-unchecked.png b/assets/themes/NexusOS/gtk-2.0/assets/checkbox-unchecked.png
old mode 100644
new mode 100755
diff --git a/assets/themes/NexusOS/gtk-2.0/assets/combo-entry-border-focus-rtl.png b/assets/themes/NexusOS/gtk-2.0/assets/combo-entry-border-focus-rtl.png
old mode 100644
new mode 100755
diff --git a/assets/themes/NexusOS/gtk-2.0/assets/combo-entry-border-focus.png b/assets/themes/NexusOS/gtk-2.0/assets/combo-entry-border-focus.png
old mode 100644
new mode 100755
diff --git a/assets/themes/NexusOS/gtk-2.0/assets/combo-entry-border-rtl.png b/assets/themes/NexusOS/gtk-2.0/assets/combo-entry-border-rtl.png
old mode 100644
new mode 100755
diff --git a/assets/themes/NexusOS/gtk-2.0/assets/combo-entry-border.png b/assets/themes/NexusOS/gtk-2.0/assets/combo-entry-border.png
old mode 100644
new mode 100755
diff --git a/assets/themes/NexusOS/gtk-2.0/assets/combo-entry-button-active-rtl.png b/assets/themes/NexusOS/gtk-2.0/assets/combo-entry-button-active-rtl.png
old mode 100644
new mode 100755
diff --git a/assets/themes/NexusOS/gtk-2.0/assets/combo-entry-button-active.png b/assets/themes/NexusOS/gtk-2.0/assets/combo-entry-button-active.png
old mode 100644
new mode 100755
diff --git a/assets/themes/NexusOS/gtk-2.0/assets/combo-entry-button-insensitive-rtl.png b/assets/themes/NexusOS/gtk-2.0/assets/combo-entry-button-insensitive-rtl.png
old mode 100644
new mode 100755
diff --git a/assets/themes/NexusOS/gtk-2.0/assets/combo-entry-button-insensitive.png b/assets/themes/NexusOS/gtk-2.0/assets/combo-entry-button-insensitive.png
old mode 100644
new mode 100755
diff --git a/assets/themes/NexusOS/gtk-2.0/assets/combo-entry-button-rtl.png b/assets/themes/NexusOS/gtk-2.0/assets/combo-entry-button-rtl.png
old mode 100644
new mode 100755
diff --git a/assets/themes/NexusOS/gtk-2.0/assets/combo-entry-button.png b/assets/themes/NexusOS/gtk-2.0/assets/combo-entry-button.png
old mode 100644
new mode 100755
diff --git a/assets/themes/NexusOS/gtk-2.0/assets/combo-entry-focus-notebook-rtl.png b/assets/themes/NexusOS/gtk-2.0/assets/combo-entry-focus-notebook-rtl.png
old mode 100644
new mode 100755
diff --git a/assets/themes/NexusOS/gtk-2.0/assets/combo-entry-focus-notebook.png b/assets/themes/NexusOS/gtk-2.0/assets/combo-entry-focus-notebook.png
old mode 100644
new mode 100755
diff --git a/assets/themes/NexusOS/gtk-2.0/assets/combo-entry-focus-rtl.png b/assets/themes/NexusOS/gtk-2.0/assets/combo-entry-focus-rtl.png
old mode 100644
new mode 100755
diff --git a/assets/themes/NexusOS/gtk-2.0/assets/combo-entry-focus.png b/assets/themes/NexusOS/gtk-2.0/assets/combo-entry-focus.png
old mode 100644
new mode 100755
diff --git a/assets/themes/NexusOS/gtk-2.0/assets/combo-entry-insensitive-notebook-rtl.png b/assets/themes/NexusOS/gtk-2.0/assets/combo-entry-insensitive-notebook-rtl.png
old mode 100644
new mode 100755
diff --git a/assets/themes/NexusOS/gtk-2.0/assets/combo-entry-insensitive-notebook.png b/assets/themes/NexusOS/gtk-2.0/assets/combo-entry-insensitive-notebook.png
old mode 100644
new mode 100755
diff --git a/assets/themes/NexusOS/gtk-2.0/assets/combo-entry-insensitive-rtl.png b/assets/themes/NexusOS/gtk-2.0/assets/combo-entry-insensitive-rtl.png
old mode 100644
new mode 100755
diff --git a/assets/themes/NexusOS/gtk-2.0/assets/combo-entry-insensitive.png b/assets/themes/NexusOS/gtk-2.0/assets/combo-entry-insensitive.png
old mode 100644
new mode 100755
diff --git a/assets/themes/NexusOS/gtk-2.0/assets/combo-entry-notebook-rtl.png b/assets/themes/NexusOS/gtk-2.0/assets/combo-entry-notebook-rtl.png
old mode 100644
new mode 100755
diff --git a/assets/themes/NexusOS/gtk-2.0/assets/combo-entry-notebook.png b/assets/themes/NexusOS/gtk-2.0/assets/combo-entry-notebook.png
old mode 100644
new mode 100755
diff --git a/assets/themes/NexusOS/gtk-2.0/assets/combo-entry-rtl.png b/assets/themes/NexusOS/gtk-2.0/assets/combo-entry-rtl.png
old mode 100644
new mode 100755
diff --git a/assets/themes/NexusOS/gtk-2.0/assets/combo-entry.png b/assets/themes/NexusOS/gtk-2.0/assets/combo-entry.png
old mode 100644
new mode 100755
diff --git a/assets/themes/NexusOS/gtk-2.0/assets/down-background-disable-rtl.png b/assets/themes/NexusOS/gtk-2.0/assets/down-background-disable-rtl.png
old mode 100644
new mode 100755
diff --git a/assets/themes/NexusOS/gtk-2.0/assets/down-background-disable.png b/assets/themes/NexusOS/gtk-2.0/assets/down-background-disable.png
old mode 100644
new mode 100755
diff --git a/assets/themes/NexusOS/gtk-2.0/assets/down-background-rtl.png b/assets/themes/NexusOS/gtk-2.0/assets/down-background-rtl.png
old mode 100644
new mode 100755
diff --git a/assets/themes/NexusOS/gtk-2.0/assets/down-background.png b/assets/themes/NexusOS/gtk-2.0/assets/down-background.png
old mode 100644
new mode 100755
diff --git a/assets/themes/NexusOS/gtk-2.0/assets/entry-active-bg.png b/assets/themes/NexusOS/gtk-2.0/assets/entry-active-bg.png
old mode 100644
new mode 100755
diff --git a/assets/themes/NexusOS/gtk-2.0/assets/entry-active-notebook.png b/assets/themes/NexusOS/gtk-2.0/assets/entry-active-notebook.png
old mode 100644
new mode 100755
diff --git a/assets/themes/NexusOS/gtk-2.0/assets/entry-active-toolbar.png b/assets/themes/NexusOS/gtk-2.0/assets/entry-active-toolbar.png
old mode 100644
new mode 100755
diff --git a/assets/themes/NexusOS/gtk-2.0/assets/entry-background-disabled.png b/assets/themes/NexusOS/gtk-2.0/assets/entry-background-disabled.png
old mode 100644
new mode 100755
diff --git a/assets/themes/NexusOS/gtk-2.0/assets/entry-background.png b/assets/themes/NexusOS/gtk-2.0/assets/entry-background.png
old mode 100644
new mode 100755
diff --git a/assets/themes/NexusOS/gtk-2.0/assets/entry-bg.png b/assets/themes/NexusOS/gtk-2.0/assets/entry-bg.png
old mode 100644
new mode 100755
diff --git a/assets/themes/NexusOS/gtk-2.0/assets/entry-border-active-bg.png b/assets/themes/NexusOS/gtk-2.0/assets/entry-border-active-bg.png
old mode 100644
new mode 100755
diff --git a/assets/themes/NexusOS/gtk-2.0/assets/entry-border-bg.png b/assets/themes/NexusOS/gtk-2.0/assets/entry-border-bg.png
old mode 100644
new mode 100755
diff --git a/assets/themes/NexusOS/gtk-2.0/assets/entry-disabled-bg.png b/assets/themes/NexusOS/gtk-2.0/assets/entry-disabled-bg.png
old mode 100644
new mode 100755
diff --git a/assets/themes/NexusOS/gtk-2.0/assets/entry-disabled-notebook.png b/assets/themes/NexusOS/gtk-2.0/assets/entry-disabled-notebook.png
old mode 100644
new mode 100755
diff --git a/assets/themes/NexusOS/gtk-2.0/assets/entry-disabled-toolbar.png b/assets/themes/NexusOS/gtk-2.0/assets/entry-disabled-toolbar.png
old mode 100644
new mode 100755
diff --git a/assets/themes/NexusOS/gtk-2.0/assets/entry-notebook.png b/assets/themes/NexusOS/gtk-2.0/assets/entry-notebook.png
old mode 100644
new mode 100755
diff --git a/assets/themes/NexusOS/gtk-2.0/assets/entry-toolbar.png b/assets/themes/NexusOS/gtk-2.0/assets/entry-toolbar.png
old mode 100644
new mode 100755
diff --git a/assets/themes/NexusOS/gtk-2.0/assets/focus-line.png b/assets/themes/NexusOS/gtk-2.0/assets/focus-line.png
old mode 100644
new mode 100755
diff --git a/assets/themes/NexusOS/gtk-2.0/assets/frame-gap-end.png b/assets/themes/NexusOS/gtk-2.0/assets/frame-gap-end.png
old mode 100644
new mode 100755
diff --git a/assets/themes/NexusOS/gtk-2.0/assets/frame-gap-start.png b/assets/themes/NexusOS/gtk-2.0/assets/frame-gap-start.png
old mode 100644
new mode 100755
diff --git a/assets/themes/NexusOS/gtk-2.0/assets/frame.png b/assets/themes/NexusOS/gtk-2.0/assets/frame.png
old mode 100644
new mode 100755
diff --git a/assets/themes/NexusOS/gtk-2.0/assets/handle-h.png b/assets/themes/NexusOS/gtk-2.0/assets/handle-h.png
old mode 100644
new mode 100755
diff --git a/assets/themes/NexusOS/gtk-2.0/assets/handle-v.png b/assets/themes/NexusOS/gtk-2.0/assets/handle-v.png
old mode 100644
new mode 100755
diff --git a/assets/themes/NexusOS/gtk-2.0/assets/inline-toolbar.png b/assets/themes/NexusOS/gtk-2.0/assets/inline-toolbar.png
old mode 100644
new mode 100755
diff --git a/assets/themes/NexusOS/gtk-2.0/assets/line-h.png b/assets/themes/NexusOS/gtk-2.0/assets/line-h.png
old mode 100644
new mode 100755
diff --git a/assets/themes/NexusOS/gtk-2.0/assets/line-v.png b/assets/themes/NexusOS/gtk-2.0/assets/line-v.png
old mode 100644
new mode 100755
diff --git a/assets/themes/NexusOS/gtk-2.0/assets/menu-arrow-prelight.png b/assets/themes/NexusOS/gtk-2.0/assets/menu-arrow-prelight.png
old mode 100644
new mode 100755
diff --git a/assets/themes/NexusOS/gtk-2.0/assets/menu-arrow.png b/assets/themes/NexusOS/gtk-2.0/assets/menu-arrow.png
old mode 100644
new mode 100755
diff --git a/assets/themes/NexusOS/gtk-2.0/assets/menu-checkbox-checked-insensitive.png b/assets/themes/NexusOS/gtk-2.0/assets/menu-checkbox-checked-insensitive.png
old mode 100644
new mode 100755
diff --git a/assets/themes/NexusOS/gtk-2.0/assets/menu-checkbox-checked.png b/assets/themes/NexusOS/gtk-2.0/assets/menu-checkbox-checked.png
old mode 100644
new mode 100755
diff --git a/assets/themes/NexusOS/gtk-2.0/assets/menu-checkbox-unchecked-insensitive.png b/assets/themes/NexusOS/gtk-2.0/assets/menu-checkbox-unchecked-insensitive.png
old mode 100644
new mode 100755
diff --git a/assets/themes/NexusOS/gtk-2.0/assets/menu-checkbox-unchecked.png b/assets/themes/NexusOS/gtk-2.0/assets/menu-checkbox-unchecked.png
old mode 100644
new mode 100755
diff --git a/assets/themes/NexusOS/gtk-2.0/assets/menu-radio-checked-insensitive.png b/assets/themes/NexusOS/gtk-2.0/assets/menu-radio-checked-insensitive.png
old mode 100644
new mode 100755
diff --git a/assets/themes/NexusOS/gtk-2.0/assets/menu-radio-checked.png b/assets/themes/NexusOS/gtk-2.0/assets/menu-radio-checked.png
old mode 100644
new mode 100755
diff --git a/assets/themes/NexusOS/gtk-2.0/assets/menu-radio-unchecked-insensitive.png b/assets/themes/NexusOS/gtk-2.0/assets/menu-radio-unchecked-insensitive.png
old mode 100644
new mode 100755
diff --git a/assets/themes/NexusOS/gtk-2.0/assets/menu-radio-unchecked.png b/assets/themes/NexusOS/gtk-2.0/assets/menu-radio-unchecked.png
old mode 100644
new mode 100755
diff --git a/assets/themes/NexusOS/gtk-2.0/assets/menu-separator.png b/assets/themes/NexusOS/gtk-2.0/assets/menu-separator.png
old mode 100644
new mode 100755
diff --git a/assets/themes/NexusOS/gtk-2.0/assets/menubar.png b/assets/themes/NexusOS/gtk-2.0/assets/menubar.png
old mode 100644
new mode 100755
diff --git a/assets/themes/NexusOS/gtk-2.0/assets/menubar_button.png b/assets/themes/NexusOS/gtk-2.0/assets/menubar_button.png
old mode 100644
new mode 100755
diff --git a/assets/themes/NexusOS/gtk-2.0/assets/menuitem.png b/assets/themes/NexusOS/gtk-2.0/assets/menuitem.png
old mode 100644
new mode 100755
diff --git a/assets/themes/NexusOS/gtk-2.0/assets/minus.png b/assets/themes/NexusOS/gtk-2.0/assets/minus.png
old mode 100644
new mode 100755
diff --git a/assets/themes/NexusOS/gtk-2.0/assets/notebook-gap-horiz.png b/assets/themes/NexusOS/gtk-2.0/assets/notebook-gap-horiz.png
old mode 100644
new mode 100755
diff --git a/assets/themes/NexusOS/gtk-2.0/assets/notebook-gap-vert.png b/assets/themes/NexusOS/gtk-2.0/assets/notebook-gap-vert.png
old mode 100644
new mode 100755
diff --git a/assets/themes/NexusOS/gtk-2.0/assets/notebook.png b/assets/themes/NexusOS/gtk-2.0/assets/notebook.png
old mode 100644
new mode 100755
diff --git a/assets/themes/NexusOS/gtk-2.0/assets/null.png b/assets/themes/NexusOS/gtk-2.0/assets/null.png
old mode 100644
new mode 100755
diff --git a/assets/themes/NexusOS/gtk-2.0/assets/pathbar_button_active.png b/assets/themes/NexusOS/gtk-2.0/assets/pathbar_button_active.png
old mode 100644
new mode 100755
diff --git a/assets/themes/NexusOS/gtk-2.0/assets/pathbar_button_prelight.png b/assets/themes/NexusOS/gtk-2.0/assets/pathbar_button_prelight.png
old mode 100644
new mode 100755
diff --git a/assets/themes/NexusOS/gtk-2.0/assets/plus.png b/assets/themes/NexusOS/gtk-2.0/assets/plus.png
old mode 100644
new mode 100755
diff --git a/assets/themes/NexusOS/gtk-2.0/assets/progressbar.png b/assets/themes/NexusOS/gtk-2.0/assets/progressbar.png
old mode 100644
new mode 100755
diff --git a/assets/themes/NexusOS/gtk-2.0/assets/progressbar_v.png b/assets/themes/NexusOS/gtk-2.0/assets/progressbar_v.png
old mode 100644
new mode 100755
diff --git a/assets/themes/NexusOS/gtk-2.0/assets/radio-checked-insensitive.png b/assets/themes/NexusOS/gtk-2.0/assets/radio-checked-insensitive.png
old mode 100644
new mode 100755
diff --git a/assets/themes/NexusOS/gtk-2.0/assets/radio-checked.png b/assets/themes/NexusOS/gtk-2.0/assets/radio-checked.png
old mode 100644
new mode 100755
diff --git a/assets/themes/NexusOS/gtk-2.0/assets/radio-unchecked-insensitive.png b/assets/themes/NexusOS/gtk-2.0/assets/radio-unchecked-insensitive.png
old mode 100644
new mode 100755
diff --git a/assets/themes/NexusOS/gtk-2.0/assets/radio-unchecked.png b/assets/themes/NexusOS/gtk-2.0/assets/radio-unchecked.png
old mode 100644
new mode 100755
diff --git a/assets/themes/NexusOS/gtk-2.0/assets/slider-horiz-active.png b/assets/themes/NexusOS/gtk-2.0/assets/slider-horiz-active.png
old mode 100644
new mode 100755
diff --git a/assets/themes/NexusOS/gtk-2.0/assets/slider-horiz-insens.png b/assets/themes/NexusOS/gtk-2.0/assets/slider-horiz-insens.png
old mode 100644
new mode 100755
diff --git a/assets/themes/NexusOS/gtk-2.0/assets/slider-horiz-prelight.png b/assets/themes/NexusOS/gtk-2.0/assets/slider-horiz-prelight.png
old mode 100644
new mode 100755
diff --git a/assets/themes/NexusOS/gtk-2.0/assets/slider-horiz.png b/assets/themes/NexusOS/gtk-2.0/assets/slider-horiz.png
old mode 100644
new mode 100755
diff --git a/assets/themes/NexusOS/gtk-2.0/assets/slider-insensitive.png b/assets/themes/NexusOS/gtk-2.0/assets/slider-insensitive.png
old mode 100644
new mode 100755
diff --git a/assets/themes/NexusOS/gtk-2.0/assets/slider-prelight.png b/assets/themes/NexusOS/gtk-2.0/assets/slider-prelight.png
old mode 100644
new mode 100755
diff --git a/assets/themes/NexusOS/gtk-2.0/assets/slider-vert-active.png b/assets/themes/NexusOS/gtk-2.0/assets/slider-vert-active.png
old mode 100644
new mode 100755
diff --git a/assets/themes/NexusOS/gtk-2.0/assets/slider-vert-insens.png b/assets/themes/NexusOS/gtk-2.0/assets/slider-vert-insens.png
old mode 100644
new mode 100755
diff --git a/assets/themes/NexusOS/gtk-2.0/assets/slider-vert-prelight.png b/assets/themes/NexusOS/gtk-2.0/assets/slider-vert-prelight.png
old mode 100644
new mode 100755
diff --git a/assets/themes/NexusOS/gtk-2.0/assets/slider-vert.png b/assets/themes/NexusOS/gtk-2.0/assets/slider-vert.png
old mode 100644
new mode 100755
diff --git a/assets/themes/NexusOS/gtk-2.0/assets/slider.png b/assets/themes/NexusOS/gtk-2.0/assets/slider.png
old mode 100644
new mode 100755
diff --git a/assets/themes/NexusOS/gtk-2.0/assets/tab-bottom-active.png b/assets/themes/NexusOS/gtk-2.0/assets/tab-bottom-active.png
old mode 100644
new mode 100755
diff --git a/assets/themes/NexusOS/gtk-2.0/assets/tab-left-active.png b/assets/themes/NexusOS/gtk-2.0/assets/tab-left-active.png
old mode 100644
new mode 100755
diff --git a/assets/themes/NexusOS/gtk-2.0/assets/tab-right-active.png b/assets/themes/NexusOS/gtk-2.0/assets/tab-right-active.png
old mode 100644
new mode 100755
diff --git a/assets/themes/NexusOS/gtk-2.0/assets/tab-top-active.png b/assets/themes/NexusOS/gtk-2.0/assets/tab-top-active.png
old mode 100644
new mode 100755
diff --git a/assets/themes/NexusOS/gtk-2.0/assets/toolbar-button-active-hover.png b/assets/themes/NexusOS/gtk-2.0/assets/toolbar-button-active-hover.png
old mode 100644
new mode 100755
diff --git a/assets/themes/NexusOS/gtk-2.0/assets/toolbar-button-active.png b/assets/themes/NexusOS/gtk-2.0/assets/toolbar-button-active.png
old mode 100644
new mode 100755
diff --git a/assets/themes/NexusOS/gtk-2.0/assets/toolbar.png b/assets/themes/NexusOS/gtk-2.0/assets/toolbar.png
old mode 100644
new mode 100755
diff --git a/assets/themes/NexusOS/gtk-2.0/assets/tree_header.png b/assets/themes/NexusOS/gtk-2.0/assets/tree_header.png
old mode 100644
new mode 100755
diff --git a/assets/themes/NexusOS/gtk-2.0/assets/trough-horizontal-active.png b/assets/themes/NexusOS/gtk-2.0/assets/trough-horizontal-active.png
old mode 100644
new mode 100755
diff --git a/assets/themes/NexusOS/gtk-2.0/assets/trough-horizontal.png b/assets/themes/NexusOS/gtk-2.0/assets/trough-horizontal.png
old mode 100644
new mode 100755
diff --git a/assets/themes/NexusOS/gtk-2.0/assets/trough-progressbar.png b/assets/themes/NexusOS/gtk-2.0/assets/trough-progressbar.png
old mode 100644
new mode 100755
diff --git a/assets/themes/NexusOS/gtk-2.0/assets/trough-progressbar_v.png b/assets/themes/NexusOS/gtk-2.0/assets/trough-progressbar_v.png
old mode 100644
new mode 100755
diff --git a/assets/themes/NexusOS/gtk-2.0/assets/trough-scrollbar-horiz.png b/assets/themes/NexusOS/gtk-2.0/assets/trough-scrollbar-horiz.png
old mode 100644
new mode 100755
diff --git a/assets/themes/NexusOS/gtk-2.0/assets/trough-scrollbar-vert.png b/assets/themes/NexusOS/gtk-2.0/assets/trough-scrollbar-vert.png
old mode 100644
new mode 100755
diff --git a/assets/themes/NexusOS/gtk-2.0/assets/trough-vertical-active.png b/assets/themes/NexusOS/gtk-2.0/assets/trough-vertical-active.png
old mode 100644
new mode 100755
diff --git a/assets/themes/NexusOS/gtk-2.0/assets/trough-vertical.png b/assets/themes/NexusOS/gtk-2.0/assets/trough-vertical.png
old mode 100644
new mode 100755
diff --git a/assets/themes/NexusOS/gtk-2.0/assets/up-background-disable-rtl.png b/assets/themes/NexusOS/gtk-2.0/assets/up-background-disable-rtl.png
old mode 100644
new mode 100755
diff --git a/assets/themes/NexusOS/gtk-2.0/assets/up-background-disable.png b/assets/themes/NexusOS/gtk-2.0/assets/up-background-disable.png
old mode 100644
new mode 100755
diff --git a/assets/themes/NexusOS/gtk-2.0/assets/up-background-rtl.png b/assets/themes/NexusOS/gtk-2.0/assets/up-background-rtl.png
old mode 100644
new mode 100755
diff --git a/assets/themes/NexusOS/gtk-2.0/assets/up-background.png b/assets/themes/NexusOS/gtk-2.0/assets/up-background.png
old mode 100644
new mode 100755
diff --git a/assets/themes/NexusOS/gtk-2.0/gtkrc b/assets/themes/NexusOS/gtk-2.0/gtkrc
old mode 100644
new mode 100755
index d5c5ebb..0144af5
--- a/assets/themes/NexusOS/gtk-2.0/gtkrc
+++ b/assets/themes/NexusOS/gtk-2.0/gtkrc
@@ -12,7 +12,7 @@ gtk-color-scheme = "insensitive_button_fg_color: #565656"
gtk-color-scheme = "notebook_bg: #242424"
gtk-color-scheme = "dark_sidebar_bg: #3b3b3b"
gtk-color-scheme = "link_color: #5294e2"
-gtk-color-scheme = "menu_bg: #333333"
+gtk-color-scheme = "menu_bg: #2a1d33"
gtk-color-scheme = "menu_fg: #dedede"
gtk-icon-sizes = "gtk-button=16,16" # This makes button icons smaller.
diff --git a/assets/themes/NexusOS/gtk-2.0/main.rc b/assets/themes/NexusOS/gtk-2.0/main.rc
old mode 100644
new mode 100755
diff --git a/assets/themes/NexusOS/gtk-2.0/menubar-toolbar.rc b/assets/themes/NexusOS/gtk-2.0/menubar-toolbar.rc
old mode 100644
new mode 100755
diff --git a/assets/themes/NexusOS/gtk-2.0/panel.rc b/assets/themes/NexusOS/gtk-2.0/panel.rc
old mode 100644
new mode 100755
diff --git a/assets/themes/NexusOS/gtk-2.0/xfce-notify.rc b/assets/themes/NexusOS/gtk-2.0/xfce-notify.rc
old mode 100644
new mode 100755
diff --git a/assets/themes/NexusOS/gtk-3.0/buttons-entries.css b/assets/themes/NexusOS/gtk-3.0/buttons-entries.css
old mode 100644
new mode 100755
diff --git a/assets/themes/NexusOS/gtk-3.0/colors.css b/assets/themes/NexusOS/gtk-3.0/colors.css
old mode 100644
new mode 100755
index 74e60ee..ea8cbce
--- a/assets/themes/NexusOS/gtk-3.0/colors.css
+++ b/assets/themes/NexusOS/gtk-3.0/colors.css
@@ -12,7 +12,7 @@
@define-color brand_purple_dark #5e0066;
/* ── Foundation (dark) ─────────────────────────────── */
-@define-color base_bg #16181a; /* deepest background */
+@define-color base_bg #1e1526; /* deepest background — dark purple */
@define-color surface_bg #1f2225; /* cards, popovers, entries */
@define-color surface_bg_alt #2a2e32; /* alt rows, headerbars */
@define-color overlay_bg #2e3236; /* tooltips, raised surfaces */
diff --git a/assets/themes/NexusOS/gtk-3.0/dialogs-infobars.css b/assets/themes/NexusOS/gtk-3.0/dialogs-infobars.css
old mode 100644
new mode 100755
index 82fd921..cf44439
--- a/assets/themes/NexusOS/gtk-3.0/dialogs-infobars.css
+++ b/assets/themes/NexusOS/gtk-3.0/dialogs-infobars.css
@@ -290,6 +290,16 @@ frame > border,
padding: 0;
}
+/* Breathing room so group content doesn't sit flush against the
+ frame border. XFCE settings dialogs indent frame content 12px on
+ the left (the HIG sub-section indent), so the left padding is
+ dropped to 0 and the right bumped to 12px to keep the gap even.
+ Scoped to real GtkFrames — not the broad .frame class, which also
+ lands on scrolledwindows. */
+frame > border {
+ padding: 6px 12px 6px 0;
+}
+
frame > label,
.frame > label {
color: @text_secondary;
diff --git a/assets/themes/NexusOS/gtk-3.0/gtk-dark.css b/assets/themes/NexusOS/gtk-3.0/gtk-dark.css
old mode 100644
new mode 100755
diff --git a/assets/themes/NexusOS/gtk-3.0/gtk.css b/assets/themes/NexusOS/gtk-3.0/gtk.css
old mode 100644
new mode 100755
diff --git a/assets/themes/NexusOS/gtk-3.0/headerbars.css b/assets/themes/NexusOS/gtk-3.0/headerbars.css
old mode 100644
new mode 100755
diff --git a/assets/themes/NexusOS/gtk-3.0/lists-sidebars.css b/assets/themes/NexusOS/gtk-3.0/lists-sidebars.css
old mode 100644
new mode 100755
index 3d77fb4..99e4bfa
--- a/assets/themes/NexusOS/gtk-3.0/lists-sidebars.css
+++ b/assets/themes/NexusOS/gtk-3.0/lists-sidebars.css
@@ -99,7 +99,7 @@ list.rich-list row:selected .subtitle {
.sidebar,
stacksidebar,
stacksidebar.sidebar {
- background-color: @surface_bg;
+ background-color: @base_bg;
color: @text_primary;
border-right: 1px solid @border;
padding: 0;
@@ -113,7 +113,7 @@ stacksidebar:dir(rtl) {
.sidebar:backdrop,
stacksidebar:backdrop {
- background-color: @surface_bg;
+ background-color: @base_bg;
color: @text_secondary;
}
@@ -162,7 +162,7 @@ stacksidebar list row:selected:hover {
/* ── Places sidebar (file managers, GtkFileChooser) ──────── */
placessidebar {
- background-color: @surface_bg;
+ background-color: @base_bg;
color: @text_primary;
}
diff --git a/assets/themes/NexusOS/gtk-3.0/menus-popovers.css b/assets/themes/NexusOS/gtk-3.0/menus-popovers.css
old mode 100644
new mode 100755
index 92c61b6..f7dcd27
--- a/assets/themes/NexusOS/gtk-3.0/menus-popovers.css
+++ b/assets/themes/NexusOS/gtk-3.0/menus-popovers.css
@@ -55,8 +55,8 @@ menu,
menu menuitem,
.menu menuitem,
.context-menu menuitem {
- padding: 2px 10px;
- min-height: 10px;
+ padding: 1px 10px;
+ min-height: 0;
color: @text_primary;
background-color: transparent;
text-shadow: none;
@@ -64,13 +64,15 @@ menu menuitem,
/* Normalize the optional menu icon (gtk-menu-images=true) so an icon'd
row — e.g. xfdesktop's "Desktop Settings…" — is the same height as a
- text-only row instead of being sized by the raw icon + GTK defaults. */
+ text-only row instead of being sized by the raw icon + GTK defaults.
+ Kept tight because nm-applet's wifi list grows long and the menu is
+ bounded by screen height — every px per row matters. */
menu menuitem image,
.menu menuitem image,
.context-menu menuitem image {
- min-width: 16px;
- min-height: 16px;
- margin: 0 8px 0 0;
+ min-width: 14px;
+ min-height: 14px;
+ margin: 0 6px 0 0;
-gtk-icon-transform: scale(1);
}
@@ -79,7 +81,14 @@ menu menuitem box,
.context-menu menuitem box {
margin: 0;
padding: 0;
- border-spacing: 0;
+ /* border-spacing not valid in GTK3; gap managed by margin/padding above */
+}
+
+/* nm-applet wraps the Wi-Fi list in a GtkScrolledWindow inside the menu.
+ GTK caps it programmatically; min-height overrides that cap so all
+ networks are visible without scrolling. */
+menu scrolledwindow {
+ min-height: 800px;
}
menu menuitem:hover,
diff --git a/assets/themes/NexusOS/gtk-3.0/notebooks.css b/assets/themes/NexusOS/gtk-3.0/notebooks.css
old mode 100644
new mode 100755
index 6081125..56c9f6d
--- a/assets/themes/NexusOS/gtk-3.0/notebooks.css
+++ b/assets/themes/NexusOS/gtk-3.0/notebooks.css
@@ -51,8 +51,8 @@ notebook > header > tabs > tab {
background-color: transparent;
background-image: none;
color: @text_secondary;
- padding: 8px 14px;
- min-height: 28px;
+ padding: 4px 12px;
+ min-height: 20px;
border: none;
border-radius: 0;
transition: background-color 120ms ease,
diff --git a/assets/themes/NexusOS/gtk-3.0/polish.css b/assets/themes/NexusOS/gtk-3.0/polish.css
old mode 100644
new mode 100755
index 3391175..8d1eae9
--- a/assets/themes/NexusOS/gtk-3.0/polish.css
+++ b/assets/themes/NexusOS/gtk-3.0/polish.css
@@ -13,7 +13,7 @@ combobox button {
}
combobox button.combo {
- padding: 4px 10px;
+ padding: 2px 8px;
border: 1px solid @border_strong;
border-radius: 6px;
}
@@ -37,6 +37,7 @@ combobox arrow {
color: @text_secondary;
min-width: 12px;
min-height: 12px;
+ margin-left: 6px;
-gtk-icon-source: -gtk-icontheme("pan-down-symbolic");
}
@@ -491,3 +492,78 @@ icon:disabled {
-gtk-icon-effect: dim;
opacity: 0.5;
}
+
+/* ── Nemo file manager ───────────────────────────────────── */
+/* Compact the top toolbar and the bottom status bar. */
+.nemo-window .primary-toolbar,
+.nemo-window statusbar {
+ padding-top: 0;
+ padding-bottom: 0;
+ min-height: 0;
+}
+
+/* Slimmer buttons across the toolbar/statusbar chrome. */
+.nemo-window .primary-toolbar button,
+.nemo-window statusbar button,
+.nemo-window statusbar radiobutton {
+ min-height: 0;
+ padding-top: 3px;
+ padding-bottom: 3px;
+}
+
+/* The zoom slider's tall padding inflates the bottom bar. */
+.nemo-window statusbar scale {
+ min-height: 0;
+ padding-top: 2px;
+ padding-bottom: 2px;
+}
+
+/* The item/size readout sits in a plain GtkFrame — give it tight,
+ symmetric padding (the group-frame rule's asymmetric padding is
+ wrong for it and shoves the text off-centre) and a larger font. */
+.nemo-window statusbar frame > border {
+ padding: 1px 8px;
+}
+
+.nemo-window statusbar label {
+ font-size: 11pt;
+}
+
+/* ── Desktop icon labels (xfdesktop 4.20) ──────────────────
+ xfdesktop ships its own built-in CSS for the desktop icon
+ view. Its label rule is:
+ XfdesktopIconView.view.label { color: @theme_selected_fg_color; }
+ In our palette theme_selected_fg_color resolves to #0a0a00
+ (text_on_accent — meant to sit on lime-green), so unselected
+ desktop labels render near-black and vanish on the dark
+ wallpaper. Override with the exact selectors xfdesktop uses
+ (CSS node name is the GType name "XfdesktopIconView", the
+ label is a ".view.label" sub-node) so the cascade wins. */
+XfdesktopIconView.view.label {
+ color: @text_primary;
+ background-color: transparent;
+ border-radius: 3px;
+ text-shadow: 1px 1px 3px rgba(0, 0, 0, 0.9);
+}
+
+/* Selected icon: purple chip behind the (white) label. */
+XfdesktopIconView.view.label:selected {
+ color: @selected_fg;
+ background-color: @selected_bg;
+ text-shadow: none;
+}
+
+XfdesktopIconView.view.label:selected:backdrop {
+ background-color: alpha(@selected_bg, 0.5);
+}
+
+/* Keyboard-cursor / active item tint. */
+XfdesktopIconView.view:active {
+ color: @selected_bg;
+}
+
+/* Rubber-band marquee when drag-selecting icons. */
+XfdesktopIconView.rubberband {
+ border: 1px solid @selected_bg;
+ background-color: alpha(@selected_bg, 0.2);
+}
diff --git a/assets/themes/NexusOS/gtk-3.0/scrollbars-progress.css b/assets/themes/NexusOS/gtk-3.0/scrollbars-progress.css
old mode 100644
new mode 100755
diff --git a/assets/themes/NexusOS/gtk-3.0/toggles-sliders.css b/assets/themes/NexusOS/gtk-3.0/toggles-sliders.css
old mode 100644
new mode 100755
index 7da4402..6cf0281
--- a/assets/themes/NexusOS/gtk-3.0/toggles-sliders.css
+++ b/assets/themes/NexusOS/gtk-3.0/toggles-sliders.css
@@ -207,6 +207,19 @@ radiobutton:disabled label {
color: @text_disabled;
}
+/* Gap between the indicator and its label. Without this the label sits
+ flush against the box. first/last-child keeps it correct under RTL;
+ :only-child excludes indicator-only (label-less) check/radio buttons. */
+checkbutton check:first-child:not(:only-child),
+radiobutton radio:first-child:not(:only-child) {
+ margin-right: 6px;
+}
+
+checkbutton check:last-child:not(:only-child),
+radiobutton radio:last-child:not(:only-child) {
+ margin-left: 6px;
+}
+
/* ── Scale / slider (GtkScale) ───────────────────────────── */
scale {
diff --git a/assets/themes/NexusOS/index.theme b/assets/themes/NexusOS/index.theme
old mode 100644
new mode 100755
diff --git a/assets/themes/NexusOS/xfwm4/bottom-active.png b/assets/themes/NexusOS/xfwm4/bottom-active.png
old mode 100644
new mode 100755
diff --git a/assets/themes/NexusOS/xfwm4/bottom-inactive.png b/assets/themes/NexusOS/xfwm4/bottom-inactive.png
old mode 100644
new mode 100755
diff --git a/assets/themes/NexusOS/xfwm4/bottom-left-active.png b/assets/themes/NexusOS/xfwm4/bottom-left-active.png
old mode 100644
new mode 100755
diff --git a/assets/themes/NexusOS/xfwm4/bottom-left-inactive.png b/assets/themes/NexusOS/xfwm4/bottom-left-inactive.png
old mode 100644
new mode 100755
diff --git a/assets/themes/NexusOS/xfwm4/bottom-right-active.png b/assets/themes/NexusOS/xfwm4/bottom-right-active.png
old mode 100644
new mode 100755
diff --git a/assets/themes/NexusOS/xfwm4/bottom-right-inactive.png b/assets/themes/NexusOS/xfwm4/bottom-right-inactive.png
old mode 100644
new mode 100755
diff --git a/assets/themes/NexusOS/xfwm4/close-active.png b/assets/themes/NexusOS/xfwm4/close-active.png
old mode 100644
new mode 100755
diff --git a/assets/themes/NexusOS/xfwm4/close-inactive.png b/assets/themes/NexusOS/xfwm4/close-inactive.png
old mode 100644
new mode 100755
diff --git a/assets/themes/NexusOS/xfwm4/close-prelight.png b/assets/themes/NexusOS/xfwm4/close-prelight.png
old mode 100644
new mode 100755
diff --git a/assets/themes/NexusOS/xfwm4/close-pressed.png b/assets/themes/NexusOS/xfwm4/close-pressed.png
old mode 100644
new mode 100755
diff --git a/assets/themes/NexusOS/xfwm4/hide-active.png b/assets/themes/NexusOS/xfwm4/hide-active.png
old mode 100644
new mode 100755
diff --git a/assets/themes/NexusOS/xfwm4/hide-inactive.png b/assets/themes/NexusOS/xfwm4/hide-inactive.png
old mode 100644
new mode 100755
diff --git a/assets/themes/NexusOS/xfwm4/hide-prelight.png b/assets/themes/NexusOS/xfwm4/hide-prelight.png
old mode 100644
new mode 100755
diff --git a/assets/themes/NexusOS/xfwm4/hide-pressed.png b/assets/themes/NexusOS/xfwm4/hide-pressed.png
old mode 100644
new mode 100755
diff --git a/assets/themes/NexusOS/xfwm4/left-active.png b/assets/themes/NexusOS/xfwm4/left-active.png
old mode 100644
new mode 100755
diff --git a/assets/themes/NexusOS/xfwm4/left-inactive.png b/assets/themes/NexusOS/xfwm4/left-inactive.png
old mode 100644
new mode 100755
diff --git a/assets/themes/NexusOS/xfwm4/maximize-active.png b/assets/themes/NexusOS/xfwm4/maximize-active.png
old mode 100644
new mode 100755
diff --git a/assets/themes/NexusOS/xfwm4/maximize-inactive.png b/assets/themes/NexusOS/xfwm4/maximize-inactive.png
old mode 100644
new mode 100755
diff --git a/assets/themes/NexusOS/xfwm4/maximize-prelight.png b/assets/themes/NexusOS/xfwm4/maximize-prelight.png
old mode 100644
new mode 100755
diff --git a/assets/themes/NexusOS/xfwm4/maximize-pressed.png b/assets/themes/NexusOS/xfwm4/maximize-pressed.png
old mode 100644
new mode 100755
diff --git a/assets/themes/NexusOS/xfwm4/maximize-toggled-active.png b/assets/themes/NexusOS/xfwm4/maximize-toggled-active.png
old mode 100644
new mode 100755
diff --git a/assets/themes/NexusOS/xfwm4/maximize-toggled-inactive.png b/assets/themes/NexusOS/xfwm4/maximize-toggled-inactive.png
old mode 100644
new mode 100755
diff --git a/assets/themes/NexusOS/xfwm4/maximize-toggled-prelight.png b/assets/themes/NexusOS/xfwm4/maximize-toggled-prelight.png
old mode 100644
new mode 100755
diff --git a/assets/themes/NexusOS/xfwm4/maximize-toggled-pressed.png b/assets/themes/NexusOS/xfwm4/maximize-toggled-pressed.png
old mode 100644
new mode 100755
diff --git a/assets/themes/NexusOS/xfwm4/menu-active.png b/assets/themes/NexusOS/xfwm4/menu-active.png
old mode 100644
new mode 100755
diff --git a/assets/themes/NexusOS/xfwm4/menu-inactive.png b/assets/themes/NexusOS/xfwm4/menu-inactive.png
old mode 100644
new mode 100755
diff --git a/assets/themes/NexusOS/xfwm4/menu-pressed.png b/assets/themes/NexusOS/xfwm4/menu-pressed.png
old mode 100644
new mode 100755
diff --git a/assets/themes/NexusOS/xfwm4/right-active.png b/assets/themes/NexusOS/xfwm4/right-active.png
old mode 100644
new mode 100755
diff --git a/assets/themes/NexusOS/xfwm4/right-inactive.png b/assets/themes/NexusOS/xfwm4/right-inactive.png
old mode 100644
new mode 100755
diff --git a/assets/themes/NexusOS/xfwm4/shade-active.png b/assets/themes/NexusOS/xfwm4/shade-active.png
old mode 100644
new mode 100755
diff --git a/assets/themes/NexusOS/xfwm4/shade-inactive.png b/assets/themes/NexusOS/xfwm4/shade-inactive.png
old mode 100644
new mode 100755
diff --git a/assets/themes/NexusOS/xfwm4/shade-pressed.png b/assets/themes/NexusOS/xfwm4/shade-pressed.png
old mode 100644
new mode 100755
diff --git a/assets/themes/NexusOS/xfwm4/stick-active.png b/assets/themes/NexusOS/xfwm4/stick-active.png
old mode 100644
new mode 100755
diff --git a/assets/themes/NexusOS/xfwm4/stick-inactive.png b/assets/themes/NexusOS/xfwm4/stick-inactive.png
old mode 100644
new mode 100755
diff --git a/assets/themes/NexusOS/xfwm4/stick-pressed.png b/assets/themes/NexusOS/xfwm4/stick-pressed.png
old mode 100644
new mode 100755
diff --git a/assets/themes/NexusOS/xfwm4/themerc b/assets/themes/NexusOS/xfwm4/themerc
old mode 100644
new mode 100755
diff --git a/assets/themes/NexusOS/xfwm4/title-1-active.png b/assets/themes/NexusOS/xfwm4/title-1-active.png
old mode 100644
new mode 100755
diff --git a/assets/themes/NexusOS/xfwm4/title-1-inactive.png b/assets/themes/NexusOS/xfwm4/title-1-inactive.png
old mode 100644
new mode 100755
diff --git a/assets/themes/NexusOS/xfwm4/title-2-active.png b/assets/themes/NexusOS/xfwm4/title-2-active.png
old mode 100644
new mode 100755
diff --git a/assets/themes/NexusOS/xfwm4/title-2-inactive.png b/assets/themes/NexusOS/xfwm4/title-2-inactive.png
old mode 100644
new mode 100755
diff --git a/assets/themes/NexusOS/xfwm4/title-3-active.png b/assets/themes/NexusOS/xfwm4/title-3-active.png
old mode 100644
new mode 100755
diff --git a/assets/themes/NexusOS/xfwm4/title-3-inactive.png b/assets/themes/NexusOS/xfwm4/title-3-inactive.png
old mode 100644
new mode 100755
diff --git a/assets/themes/NexusOS/xfwm4/title-4-active.png b/assets/themes/NexusOS/xfwm4/title-4-active.png
old mode 100644
new mode 100755
diff --git a/assets/themes/NexusOS/xfwm4/title-4-inactive.png b/assets/themes/NexusOS/xfwm4/title-4-inactive.png
old mode 100644
new mode 100755
diff --git a/assets/themes/NexusOS/xfwm4/title-5-active.png b/assets/themes/NexusOS/xfwm4/title-5-active.png
old mode 100644
new mode 100755
diff --git a/assets/themes/NexusOS/xfwm4/title-5-inactive.png b/assets/themes/NexusOS/xfwm4/title-5-inactive.png
old mode 100644
new mode 100755
diff --git a/assets/themes/NexusOS/xfwm4/top-left-active.png b/assets/themes/NexusOS/xfwm4/top-left-active.png
old mode 100644
new mode 100755
diff --git a/assets/themes/NexusOS/xfwm4/top-left-inactive.png b/assets/themes/NexusOS/xfwm4/top-left-inactive.png
old mode 100644
new mode 100755
diff --git a/assets/themes/NexusOS/xfwm4/top-right-active.png b/assets/themes/NexusOS/xfwm4/top-right-active.png
old mode 100644
new mode 100755
diff --git a/assets/themes/NexusOS/xfwm4/top-right-inactive.png b/assets/themes/NexusOS/xfwm4/top-right-inactive.png
old mode 100644
new mode 100755
diff --git a/assets/themes/README.md b/assets/themes/README.md
old mode 100644
new mode 100755
index 7572e2d..723f52c
--- a/assets/themes/README.md
+++ b/assets/themes/README.md
@@ -10,8 +10,8 @@ Lime-green + purple, dark, with tightened menus.
| `NexusOS/` | GTK2/3 + xfwm4 theme. **GTK3 CSS in `NexusOS/gtk-3.0/` is hand-maintained** (no build step). |
| `NexusOS/gtk-3.0/colors.css` | All color tokens. Edit colors here, not in the widget files. |
| `NexusOS-icons/` | Icon theme (inherits `Papirus-Dark`). |
-| `../../management/Mint-Y-Nexus/` | XFCE app-icon set. |
| `_palette.py` + `*-src/build.py` | Regenerate gtk2 / icons / xfwm4 — **NOT gtk-3.0**. |
+| `NexusOS-icons-src/build_actions.py` | Regenerate the `actions` icons (logoff dialog / Whisker session buttons). |
| `install-theme.sh` | Idempotent restore of all the *wiring* (see below). |
| `gtk3-user-overrides.css` | Symlinked to `~/.config/gtk-3.0/gtk.css`. |
@@ -20,7 +20,7 @@ Lime-green + purple, dark, with tightened menus.
The files above are just *source*. What makes the desktop use them lives
outside this folder and is recreated by `install-theme.sh`:
-- Symlinks: `~/.themes/NexusOS`, `~/.icons/NexusOS`, `~/.icons/Mint-Y-Nexus`,
+- Symlinks: `~/.themes/NexusOS`, `~/.icons/NexusOS`,
`~/.config/gtk-3.0/gtk.css`.
- xfconf: `xsettings` (`/Net/ThemeName`, `/Net/IconThemeName`,
`/Gtk/CursorThemeName`, `/Gtk/FontName`) and `xfwm4 /general/theme`.
@@ -43,9 +43,10 @@ Some apps cache the theme at startup and need a full restart.
## Backup / restore
- `bin/backup.sh` (run at home): snapshots live wiring into
- `restore-snapshot/`, then lftp-mirrors the repo to the router.
-- `bin/restore.sh` / `bin/restore-full.sh`: pull back, rebuild
- venv/frontend, then auto-run `install-theme.sh`.
+ `restore-snapshot/`, then rsyncs the repo to the router.
+- `bin/restore.sh`: pull back, rebuild venv/frontend, then auto-run
+ `install-theme.sh`. Use `bin/restore.sh --checksum` for a content-only
+ dry-run.
- The repo is git-tracked; **`backup.sh` mirrors `.git` too**, so if a
bulk `git add` is ever interrupted run `git gc --prune=now` before
backing up (a killed `git add -A` once left 4 GB of loose objects).
@@ -78,3 +79,100 @@ Some apps cache the theme at startup and need a full restart.
7. **`.gitignore` does not support trailing/inline comments.** A
`Dir/ # note` line matches nothing — comments must be on their own
line. (This once let a `git add` start ingesting the 28 GB venv.)
+
+---
+
+## KDE Plasma migration (`KDE/`)
+
+All KDE Plasma theme assets live under `KDE/`. These are built to mirror the NexusOS
+visual design — same palette, same flat aesthetic — in KDE-native formats. The GTK 3
+theme and icon theme carry over unchanged.
+
+```
+KDE/
+ install-plasma.sh # idempotent installer (run once after switching)
+ generate_plasma_colors.py # regenerate NexusOS.colors from _palette.py
+
+ plasma/NexusOS/ # Plasma shell theme (panel, widgets, tooltips)
+ NexusOS.colors # KDE color scheme — source of truth for Qt/KDE colors
+ colors # Plasma shell palette overrides
+ widgets/*.svg # 9-slice SVGs: panel-background, tooltip, button, etc.
+ opaque/widgets/ # compositor-off variants
+
+ kvantum/NexusOS/ # Qt5/Qt6 app styling
+ NexusOS.kvconfig # widget geometry + element references
+ NexusOS.svg # flat SVG widget drawings
+
+ aurorae/NexusOS/ # KWin window decoration
+ NexusOSrc # titlebar height, button layout, colors
+ decoration.svg # window frame (9-slice)
+ close/maximize/minimize/restore/alldesktops/keepabove/keepbelow/shade.svg
+
+ sddm/NexusOS-QML/ # Login screen (already deployed; palette now aligned)
+ Main.qml # QML login UI — NexusOS purple/green palette
+ assets/background.svg assets/logo.png
+
+ kscreenlocker/NexusOS/ # Runtime screen lock (Meta+L in KDE)
+ contents/ui/LockScreenUi.qml # matches SDDM aesthetic; kscreenlocker API
+
+ konsole/
+ NexusOS.colorscheme # general terminal colors
+ NexusOS-Promethean.colorscheme # deep purple — matches promethean-kitty.conf
+ Promethean.profile # Konsole profile: rcfile, cursor, color scheme
+```
+
+### What survives the switch unchanged
+
+| Asset | Status |
+|---|---|
+| `NexusOS/gtk-3.0/` (all CSS) | GTK apps on Plasma use it as-is |
+| `NexusOS-icons/` | Freedesktop spec — works on any DE |
+| `_palette.py` / `colors.css` | Source of truth; KDE palette generated from it |
+| Plymouth boot splash | System-level; unaffected by DE switch |
+
+### Installing before the switch (XFCE)
+
+**Testable now:**
+```bash
+# Kvantum (Qt5 app styling — works on XFCE)
+sudo apt install qt5-style-kvantum qt5-style-kvantum-themes
+ln -sfn "$PWD/assets/themes/KDE/kvantum/NexusOS" ~/.config/Kvantum/NexusOS
+kvantummanager --set NexusOS # then open any Qt5 app
+
+# Konsole colors (works on XFCE if konsole installed)
+cp assets/themes/KDE/konsole/*.colorscheme assets/themes/KDE/konsole/Promethean.profile \
+ ~/.local/share/konsole/
+
+# SDDM palette (already live; installer will redeploy if needed)
+```
+
+**Needs KDE session:** Aurorae decoration, Plasma shell theme, kscreenlocker.
+
+### First boot into Plasma
+
+```bash
+assets/themes/KDE/install-plasma.sh
+```
+
+Then in System Settings → Appearance verify:
+- Global Theme: (manual if needed — set individual components below)
+- Colors: NexusOS
+- Application Style: Kvantum-dark
+- Plasma Style: NexusOS
+- Window Decorations: NexusOS
+- Icons: NexusOS
+
+Test lock screen: **Meta+L**
+
+### Promethean Terminal on KDE
+
+`bin/promethean/promethean-terminal.desktop` now uses `konsole --profile Promethean`.
+The Promethean Konsole profile configures the rcfile, deep-purple color scheme,
+and `#b040c0` cursor. The kitty fallback line is commented out in the `.desktop`.
+
+### Palette alignment note
+
+The SDDM `NexusOS-QML` theme previously used a navy/cyan palette (`#0f1626` / `#00d4ff`).
+It has been updated to the NexusOS palette (`#1e1526` / `#8cc63f`) for consistency.
+The live SDDM at `/usr/share/sddm/themes/NexusOS-QML/` still has the old colors;
+`install-plasma.sh` will replace it.
diff --git a/assets/themes/_palette.py b/assets/themes/_palette.py
old mode 100644
new mode 100755
index 143ad87..eba09ec
--- a/assets/themes/_palette.py
+++ b/assets/themes/_palette.py
@@ -13,7 +13,7 @@ BRAND_PURPLE_LIGHT = "a232a8"
BRAND_PURPLE_DARK = "5e0066"
# Foundation
-BASE_BG = "16181a"
+BASE_BG = "1e1526"
SURFACE_BG = "1f2225"
SURFACE_BG_ALT = "2a2e32"
OVERLAY_BG = "2e3236"
diff --git a/assets/themes/gtk3-user-overrides.css b/assets/themes/gtk3-user-overrides.css
old mode 100644
new mode 100755
diff --git a/assets/themes/install-theme.sh b/assets/themes/install-theme.sh
index 6dfe370..5de40e1 100755
--- a/assets/themes/install-theme.sh
+++ b/assets/themes/install-theme.sh
@@ -1,7 +1,7 @@
#!/usr/bin/env bash
# install-theme.sh — restore the NexusOS desktop theme wiring.
#
-# The theme *assets* live in this repo (assets/themes/, management/Mint-Y-Nexus/).
+# The theme *assets* live in this repo (assets/themes/).
# This script recreates everything OUTSIDE the repo that makes the desktop
# actually use them: symlinks, xfconf (xsettings + xfwm4), and the canonical
# lines in the GTK 3/4 settings.ini files.
@@ -75,7 +75,6 @@ echo "NexusOS theme — restoring wiring from $REPO"
echo "[1/4] Symlinks"
link "$REPO/assets/themes/NexusOS" "$HOME/.themes/NexusOS"
link "$REPO/assets/themes/NexusOS-icons" "$HOME/.icons/NexusOS"
-link "$REPO/management/Mint-Y-Nexus" "$HOME/.icons/Mint-Y-Nexus"
link "$REPO/assets/themes/gtk3-user-overrides.css" "$HOME/.config/gtk-3.0/gtk.css"
echo "[2/4] xfconf (xsettings + xfwm4)"
@@ -95,22 +94,34 @@ for f in "$HOME/.config/gtk-3.0/settings.ini" "$HOME/.config/gtk-4.0/settings.in
set_ini "$f" gtk-font-name "$FONT_NAME"
done
-echo "[4/4] Sanity"
-for dir in /usr/share/icons ~/.icons ~/.local/share/icons; do
- [[ -d "$dir/$CURSOR_THEME" ]] && { say "ok cursor '$CURSOR_THEME' found"; CUR_OK=1; break; }
-done
-[[ "${CUR_OK:-0}" == 1 ]] || say "WARN cursor theme '$CURSOR_THEME' not installed — will fall back"
+echo "[4/4] Icon caches"
+gtk-update-icon-cache -f -t "$HOME/.icons/NexusOS" 2>/dev/null \
+ && say "ok NexusOS icon cache rebuilt" \
+ || say "WARN NexusOS icon cache rebuild failed"
INH="$(grep -i '^Inherits=' "$REPO/assets/themes/NexusOS-icons/index.theme" 2>/dev/null | cut -d= -f2)"
if [[ -n "$INH" ]]; then
INH_OK=0
for dir in /usr/share/icons ~/.icons ~/.local/share/icons; do
- [[ -d "$dir/$INH" ]] && { INH_OK=1; break; }
+ [[ -d "$dir/$INH" ]] && { INH_OK=1; INH_DIR="$dir/$INH"; break; }
done
- [[ "$INH_OK" == 1 ]] \
- && say "ok icon fallback '$INH' found" \
- || say "WARN icon fallback '$INH' not installed — icons may be missing"
+ if [[ "$INH_OK" == 1 ]]; then
+ say "ok icon fallback '$INH' found"
+ if sudo -n gtk-update-icon-cache -f -t "$INH_DIR" 2>/dev/null; then
+ say "ok $INH icon cache rebuilt"
+ else
+ say "note $INH cache skipped (no passwordless sudo — run manually if needed)"
+ fi
+ else
+ say "WARN icon fallback '$INH' not installed — icons may be missing"
+ fi
fi
+echo "[5/5] Sanity"
+for dir in /usr/share/icons ~/.icons ~/.local/share/icons; do
+ [[ -d "$dir/$CURSOR_THEME" ]] && { say "ok cursor '$CURSOR_THEME' found"; CUR_OK=1; break; }
+done
+[[ "${CUR_OK:-0}" == 1 ]] || say "WARN cursor theme '$CURSOR_THEME' not installed — will fall back"
+
if [[ "$RELOAD" == 1 ]] && command -v xfconf-query >/dev/null && [[ -n "${DISPLAY:-}" ]]; then
xfconf-query -c xsettings -p /Net/ThemeName -s "Adwaita" 2>/dev/null || true
xfconf-query -c xsettings -p /Net/ThemeName -s "$GTK_THEME" 2>/dev/null || true
diff --git a/assets/themes/restore-snapshot/gtk-3.0-settings.ini b/assets/themes/restore-snapshot/gtk-3.0-settings.ini
old mode 100644
new mode 100755
index dd2d180..2864a2f
--- a/assets/themes/restore-snapshot/gtk-3.0-settings.ini
+++ b/assets/themes/restore-snapshot/gtk-3.0-settings.ini
@@ -3,12 +3,12 @@ gtk-application-prefer-dark-theme=true
gtk-button-images=true
gtk-cursor-theme-name=DMZ-White
gtk-cursor-theme-size=24
-gtk-decoration-layout=icon:minimize,maximize,close
+gtk-decoration-layout=close,minimize,maximize:
gtk-enable-animations=true
gtk-font-name=Ubuntu 10
gtk-icon-theme-name=NexusOS
-gtk-menu-images=false
-# gtk-modules=colorreload-gtk-module:window-decorations-gtk-module
+gtk-menu-images=true
+gtk-modules=colorreload-gtk-module
gtk-primary-button-warps-slider=false
gtk-theme-name=NexusOS
gtk-toolbar-style=3
diff --git a/assets/themes/restore-snapshot/gtk-4.0-settings.ini b/assets/themes/restore-snapshot/gtk-4.0-settings.ini
old mode 100644
new mode 100755
index 4dd0147..90b2453
--- a/assets/themes/restore-snapshot/gtk-4.0-settings.ini
+++ b/assets/themes/restore-snapshot/gtk-4.0-settings.ini
@@ -1,12 +1,12 @@
[Settings]
gtk-application-prefer-dark-theme=true
-gtk-theme-name=NexusOS
gtk-cursor-theme-name=DMZ-White
gtk-cursor-theme-size=24
-gtk-decoration-layout=icon:minimize,maximize,close
+gtk-decoration-layout=close,minimize,maximize:
gtk-enable-animations=true
gtk-font-name=Ubuntu 10
gtk-icon-theme-name=NexusOS
-gtk-modules=colorreload-gtk-module:window-decorations-gtk-module
+gtk-modules=colorreload-gtk-module
gtk-primary-button-warps-slider=false
+gtk-theme-name=NexusOS
gtk-xft-dpi=98304
diff --git a/assets/themes/restore-snapshot/xfconf.txt b/assets/themes/restore-snapshot/xfconf.txt
old mode 100644
new mode 100755
index 10457a9..7693eb8
--- a/assets/themes/restore-snapshot/xfconf.txt
+++ b/assets/themes/restore-snapshot/xfconf.txt
@@ -1,4 +1,4 @@
-# NexusOS live desktop wiring — snapshot 2026-05-18T13:42:57-05:00
+# NexusOS live desktop wiring — snapshot 2026-06-26T18:32:17-05:00
# Reference only. Restore is done by assets/themes/install-theme.sh
xsettings /Net/ThemeName = NexusOS
xsettings /Net/IconThemeName = NexusOS