Skip to content

Commit aa56962

Browse files
committed
style: update WhaleOS theme to Cyber Glass color palette and standardize cursor behavior
1 parent 714d4b6 commit aa56962

20 files changed

Lines changed: 3584 additions & 3101 deletions

packages/whaleos/AppDock.qml

Lines changed: 168 additions & 33 deletions
Large diffs are not rendered by default.

packages/whaleos/AppWindow.qml

Lines changed: 86 additions & 135 deletions
Large diffs are not rendered by default.

packages/whaleos/ChatBar.qml

Lines changed: 88 additions & 91 deletions
Large diffs are not rendered by default.

packages/whaleos/Desktop.qml

Lines changed: 99 additions & 956 deletions
Large diffs are not rendered by default.

packages/whaleos/LoginScreen.qml

Lines changed: 56 additions & 117 deletions
Large diffs are not rendered by default.

packages/whaleos/NativeAppsLauncher.qml

Lines changed: 65 additions & 61 deletions
Large diffs are not rendered by default.

packages/whaleos/TopBar.qml

Lines changed: 142 additions & 106 deletions
Large diffs are not rendered by default.

packages/whaleos/main.qml

Lines changed: 29 additions & 54 deletions
Original file line numberDiff line numberDiff line change
@@ -82,31 +82,21 @@ ClipboardCompositor {
8282
readonly property real sf: userScale * Math.max(0.5, Math.min(2.5, Math.min(root.width / 1024.0, root.height / 768.0)))
8383

8484
// ── Global State ──
85-
property bool loggedIn: true
86-
property string currentUser: "ainux"
87-
property string sessionId: "system"
85+
property bool loggedIn: false
86+
property string currentUser: ""
87+
property string sessionId: ""
8888
property var openWindows: []
8989
property string settingsOpenTab: "" // Set before opening Settings to jump to a tab
9090

9191
// ── Open App helper (usable from Desktop, context menu, etc.) ──
9292
// searchName/cmd are optional — used for native app surface matching
9393
function openAppWindow(appId, title, icon, searchName, cmd) {
9494
for (var i = 0; i < openWindows.length; i++) {
95-
if (openWindows[i].appId === appId) {
96-
focusWindow(appId);
97-
return;
98-
}
95+
if (openWindows[i].appId === appId) return;
9996
}
10097
var wins = openWindows.slice();
10198
wins.push({ appId: appId, title: title, icon: icon, searchName: searchName || "", cmd: cmd || "" });
10299
openWindows = wins;
103-
104-
// Launch the native app immediately here (only once!)
105-
var isNative = appId.indexOf("native-") === 0 || appId.indexOf("wayland-") === 0;
106-
if (isNative && cmd && cmd.length > 0) {
107-
console.log("WhaleOS: Launching native app via openAppWindow:", title, cmd);
108-
sysManager.launchNativeApp(cmd);
109-
}
110100
}
111101

112102
// ── Launch a native app directly (no loader window) ──
@@ -123,23 +113,23 @@ ClipboardCompositor {
123113
// ── API ──
124114
property string apiBase: "http://127.0.0.1:7777/dashboard/api"
125115

126-
// ── Theme Constants — Warm Light ──
127-
readonly property color bgVoid: "#f8f9fa"
128-
readonly property color bgSurface: Qt.rgba(1, 1, 1, 0.92)
129-
readonly property color bgElevated: Qt.rgba(1, 1, 1, 0.96)
130-
readonly property color bgCard: Qt.rgba(1, 1, 1, 0.85)
131-
readonly property color borderColor: Qt.rgba(0, 0, 0, 0.08)
132-
readonly property color borderLight: Qt.rgba(0, 0, 0, 0.05)
133-
readonly property color textPrimary: "#000000"
134-
readonly property color textSecondary: "#111827"
135-
readonly property color textMuted: "#374151"
136-
readonly property color accentBlue: "#2563eb"
137-
readonly property color accentGreen: "#16a34a"
138-
readonly property color accentRed: "#dc2626"
139-
readonly property color accentOrange: "#ea580c"
140-
readonly property color accentPurple: "#7c3aed"
141-
readonly property color accentPink: "#db2777"
142-
readonly property color accentCyan: "#0891b2"
116+
// ── Theme Constants — Cyber Glass ──
117+
readonly property color bgVoid: "#030712"
118+
readonly property color bgSurface: "#0a0e1a"
119+
readonly property color bgElevated: "#111827"
120+
readonly property color bgCard: "#1a1f36"
121+
readonly property color borderColor: "#1e293b"
122+
readonly property color borderLight: "#334155"
123+
readonly property color textPrimary: "#f0f4ff"
124+
readonly property color textSecondary: "#94a3b8"
125+
readonly property color textMuted: "#64748b"
126+
readonly property color accentBlue: "#00e5ff"
127+
readonly property color accentGreen: "#00e676"
128+
readonly property color accentRed: "#ff1744"
129+
readonly property color accentOrange: "#ff9100"
130+
readonly property color accentPurple: "#b388ff"
131+
readonly property color accentPink: "#ff4081"
132+
readonly property color accentCyan: "#00e5ff"
143133
readonly property int radiusSm: Math.round(6 * sf)
144134
readonly property int radiusMd: Math.round(10 * sf)
145135
readonly property int radiusLg: Math.round(14 * sf)
@@ -168,12 +158,6 @@ ClipboardCompositor {
168158
win.z = nextZ;
169159
}
170160

171-
function focusWindow(appId) {
172-
if (desktopLoader.status === Loader.Ready && desktopLoader.item) {
173-
desktopLoader.item.focusWindow(appId);
174-
}
175-
}
176-
177161
// ── Assign a Wayland surface to an AppWindow ──
178162
function assignSurface(toplevel, xdgSurface) {
179163
// Try immediate match first
@@ -187,26 +171,17 @@ ClipboardCompositor {
187171
}
188172

189173
function tryMatchSurface(toplevel, xdgSurface) {
190-
var appTitle = (toplevel.title || "").toLowerCase();
191-
var appId = (toplevel.appId || "").toLowerCase();
192-
193-
// Skip background/helper utilities (like clipboard bridge)
194-
var isBackground = (appId.indexOf("clipboard") >= 0 || appTitle.indexOf("clipboard") >= 0 ||
195-
appId.indexOf("cutsel") >= 0 || appTitle.indexOf("cutsel") >= 0 ||
196-
appId.indexOf("xclip") >= 0 || appTitle.indexOf("xsel") >= 0);
197-
if (isBackground) {
198-
console.log("WhaleOS: Ignoring background helper surface:", toplevel.title, toplevel.appId);
199-
return true; // consume and discard
200-
}
174+
var appTitle = toplevel.title || "";
175+
var appId = toplevel.appId || "";
201176

202177
// First: try to match an existing AppWindow waiting for a surface
203178
for (var i = 0; i < openWindows.length; i++) {
204179
var win = openWindows[i];
205180
if (win.appId && win.appId.indexOf("native-") === 0 && !win.surface) {
206181
var searchName = win.searchName || "";
207182
if (searchName.length > 0 && (appTitle.length > 0 || appId.length > 0) &&
208-
(appTitle.indexOf(searchName.toLowerCase()) >= 0 ||
209-
appId.indexOf(searchName.toLowerCase()) >= 0)) {
183+
(appTitle.toLowerCase().indexOf(searchName.toLowerCase()) >= 0 ||
184+
appId.toLowerCase().indexOf(searchName.toLowerCase()) >= 0)) {
210185
var wins = openWindows.slice();
211186
wins[i] = {
212187
appId: win.appId,
@@ -226,8 +201,8 @@ ClipboardCompositor {
226201
// Second: auto-create an AppWindow for this surface
227202
// Skip empty/clipboard surfaces that have no title or appId
228203
if (!appTitle && !appId) {
229-
console.log("WhaleOS: Empty surface title/appId — return false to retry matching");
230-
return false;
204+
console.log("WhaleOS: Ignoring empty WlShell surface (likely clipboard/system)");
205+
return true; // consume but don't create a window
231206
}
232207
root.autoSurfaceCounter++;
233208
var windowTitle = appTitle || appId || "App";
@@ -312,7 +287,7 @@ ClipboardCompositor {
312287
toastIcon.text = "";
313288
toastIcon.color = "#fff";
314289
} else {
315-
toastBg.color = Qt.rgba(0.22, 0.74, 0.97, 0.92);
290+
toastBg.color = Qt.rgba(0.0, 0.90, 1.0, 0.92);
316291
toastIcon.text = "";
317292
toastIcon.color = "#030712";
318293
}
@@ -334,7 +309,7 @@ ClipboardCompositor {
334309
Rectangle {
335310
id: toastBg
336311
anchors.fill: parent; radius: Math.round(12 * root.sf)
337-
color: Qt.rgba(0.22, 0.74, 0.97, 0.92)
312+
color: Qt.rgba(0.0, 0.90, 1.0, 0.92)
338313

339314
Row {
340315
id: toastRow

scripts/build-vmware.sh

Lines changed: 0 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -162,21 +162,6 @@ pciBridge7.present = "TRUE"
162162
pciBridge7.virtualDev = "pcieRootPort"
163163
pciBridge7.functions = "8"
164164
165-
# PCIe Root Ports (needed for VMware Fusion ARM64 to attach PCIe devices)
166-
pciBridge0.present = "TRUE"
167-
pciBridge4.present = "TRUE"
168-
pciBridge4.virtualDev = "pcieRootPort"
169-
pciBridge4.functions = "8"
170-
pciBridge5.present = "TRUE"
171-
pciBridge5.virtualDev = "pcieRootPort"
172-
pciBridge5.functions = "8"
173-
pciBridge6.present = "TRUE"
174-
pciBridge6.virtualDev = "pcieRootPort"
175-
pciBridge6.functions = "8"
176-
pciBridge7.present = "TRUE"
177-
pciBridge7.virtualDev = "pcieRootPort"
178-
pciBridge7.functions = "8"
179-
180165
# ── CPU & Memory ─────────────────────────────────────────────
181166
numvcpus = "4"
182167
cpuid.coresPerSocket = "4"

vm/cidata/user-data

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -525,18 +525,16 @@ runcmd:
525525
#!/bin/bash
526526
sleep 4
527527
export DISPLAY=:0
528-
OUTPUT_NAME=$(xrandr | grep " connected" | awk '{print $1}' | head -n 1)
529-
if [ -z "$OUTPUT_NAME" ]; then OUTPUT_NAME="XWAYLAND0"; fi
530528
xrandr --newmode "1920x1080_60.00" 173.00 1920 2048 2248 2576 1080 1083 1088 1120 -hsync +vsync 2>/dev/null
531-
xrandr --addmode "$OUTPUT_NAME" "1920x1080_60.00" 2>/dev/null
529+
xrandr --addmode XWAYLAND0 "1920x1080_60.00" 2>/dev/null
532530
xrandr --newmode "1600x900_60.00" 118.25 1600 1696 1856 2112 900 903 908 934 -hsync +vsync 2>/dev/null
533-
xrandr --addmode "$OUTPUT_NAME" "1600x900_60.00" 2>/dev/null
531+
xrandr --addmode XWAYLAND0 "1600x900_60.00" 2>/dev/null
534532
xrandr --newmode "1440x900_60.00" 106.50 1440 1528 1672 1904 900 903 909 934 -hsync +vsync 2>/dev/null
535-
xrandr --addmode "$OUTPUT_NAME" "1440x900_60.00" 2>/dev/null
533+
xrandr --addmode XWAYLAND0 "1440x900_60.00" 2>/dev/null
536534
xrandr --newmode "1366x768_60.00" 85.25 1366 1440 1576 1784 768 771 781 798 -hsync +vsync 2>/dev/null
537-
xrandr --addmode "$OUTPUT_NAME" "1366x768_60.00" 2>/dev/null
535+
xrandr --addmode XWAYLAND0 "1366x768_60.00" 2>/dev/null
538536
xrandr --newmode "1024x768_60.00" 63.50 1024 1072 1176 1328 768 771 775 798 -hsync +vsync 2>/dev/null
539-
xrandr --addmode "$OUTPUT_NAME" "1024x768_60.00" 2>/dev/null
537+
xrandr --addmode XWAYLAND0 "1024x768_60.00" 2>/dev/null
540538
DMEOF
541539
- chmod +x /opt/ainux/whaleos/add-display-modes.sh
542540

0 commit comments

Comments
 (0)