From 254dd0a1202424bf2f011c668c153a77b5fc12c4 Mon Sep 17 00:00:00 2001 From: Kris Date: Fri, 30 Jan 2026 13:40:57 +0200 Subject: [PATCH] chore: working menu --- Apps/QsDebugger/shell.qml | 74 +++++++ CONSTANTS.txt | 10 + Shell/DialogBox.qml | 2 +- Shell/DialogBox/frame.png | Bin 1587836 -> 2010423 bytes Shell/Windows/QuickSettings/QuickSettings.qml | 21 ++ .../QuickSettings/QuickSettingsApp.qml | 206 ++++++++++++++++++ Shell/Windows/QuickSettings/soul.png | Bin 0 -> 5414 bytes 7 files changed, 312 insertions(+), 1 deletion(-) create mode 100644 Apps/QsDebugger/shell.qml create mode 100644 Shell/Windows/QuickSettings/QuickSettingsApp.qml create mode 100644 Shell/Windows/QuickSettings/soul.png diff --git a/Apps/QsDebugger/shell.qml b/Apps/QsDebugger/shell.qml new file mode 100644 index 0000000..f656bd9 --- /dev/null +++ b/Apps/QsDebugger/shell.qml @@ -0,0 +1,74 @@ +import QtQuick +import Quickshell +import Quickshell.Widgets +import Quickshell.Services.Mpris + +FloatingWindow { + title: "Quickshell debugger" + color: "#000000" + visible: true + minimumSize: Qt.size(824, 497) + maximumSize: Qt.size(824, 497) + + Text { + text: "Yall lets hype up DELTARUNE TOMMOROW!!!! Btw this window is pure quickshell + qml" + color: "#ffffff" + font.family: "8bitoperator JVE" + font.pixelSize: 16 + anchors.horizontalCenter: parent.horizontalCenter + y: 470 + } + + Text { + text: "Quickshell debugger" + color: "#ffffff" + font.family: "8bitoperator JVE" + font.pixelSize: 32 + anchors.horizontalCenter: parent.horizontalCenter + y: 15 + } + + Image { + source: "/home/ralsei/Projects/Krisifier/icons/com.atproto.sync.jpg" + x: 10 + y: 10 + width: 128 + height: 128 + } + + Text { + text: "Heaven knows\nthe story what we're born\nfrom our hearts\n\nOf the shadows cutting deep\nand the heroes that save us\n\nHeaven knows\nThe beauty of the soul \nand we weep\n\nTo the majesty and\npray we not forget\nthe tale of DELTARUNE" + color: "#ffffff" + font.family: "Determination Mono" + font.pixelSize: 32 + } + + Repeater { + model: Mpris.players + Item { + IconImage { + source: modelData.trackArtUrl + x: 64 + 128 + y: 16 + 128 + implicitSize: 128 + asynchronous: true + } + Text { + text: "mpris" + index + JSON.stringify(modelData.metadata, undefined, "\t") + color: "#04047C" + font.family: "Determination Mono" + font.pixelSize: 16 + y: 64 + 128 + 1 + x: 64 + 1 + } + Text { + text: "mpris" + index + JSON.stringify(modelData.metadata, undefined, "\t") + color: "#ff0000" + font.family: "Determination Mono" + font.pixelSize: 16 + y: 64 + 128 + x: 64 + } + } + } +} diff --git a/CONSTANTS.txt b/CONSTANTS.txt index 4bf7828..abf3088 100644 --- a/CONSTANTS.txt +++ b/CONSTANTS.txt @@ -1,5 +1,15 @@ 1:1 dimensions + colors from deltarune in 1920x1080 fullscreen +Deltarune font: + +font.family: "8bitoperator JVE" +font.pixelSize: 71 +font.letterSpacing: 1 +renderType: Text.NativeRendering +font.hintingPreference: Font.PreferNoHinting +smooth: false +antialiasing: false + top bar: width: 1312px height: 182px diff --git a/Shell/DialogBox.qml b/Shell/DialogBox.qml index fc37225..289d62d 100644 --- a/Shell/DialogBox.qml +++ b/Shell/DialogBox.qml @@ -24,7 +24,7 @@ PanelWindow { mask: Region {} implicitHeight: 378 - implicitWidth: 1334 - 147 + implicitWidth: 1332 color: '#000000ff' DialogBox { diff --git a/Shell/DialogBox/frame.png b/Shell/DialogBox/frame.png index 533fe215b2b475d76a362cf568449ea3bde3ef69..82346456e2d8f5753760a2735611b61a12e07265 100644 GIT binary patch delta 13029 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 delta 11974 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 diff --git a/Shell/Windows/QuickSettings/QuickSettings.qml b/Shell/Windows/QuickSettings/QuickSettings.qml index a85854d..90969f5 100644 --- a/Shell/Windows/QuickSettings/QuickSettings.qml +++ b/Shell/Windows/QuickSettings/QuickSettings.qml @@ -6,14 +6,35 @@ ShellWindow.Window { id: quickSettingsWindow property var manager: ShellStateManager + property var quickSettingsApp: null + width: 1217 + 52 height: 767 + 52 visible: manager ? manager.quickSettingsOpen : false anchors.centerIn: parent + Loader { + id: quickSettingsLoader + anchors.fill: parent + asynchronous: true + source: "./QuickSettingsApp.qml" + onLoaded: { + quickSettingsApp = item; + if (quickSettingsApp) + quickSettingsApp.manager = manager; + } + } + + onManagerChanged: { + if (quickSettingsApp) + quickSettingsApp.manager = manager; + } + QtObject { id: quickSettingsKeyHandler function handle(event) { + if (quickSettingsApp && quickSettingsApp.handleKey) + return quickSettingsApp.handleKey(event.key); return false; } diff --git a/Shell/Windows/QuickSettings/QuickSettingsApp.qml b/Shell/Windows/QuickSettings/QuickSettingsApp.qml new file mode 100644 index 0000000..326886d --- /dev/null +++ b/Shell/Windows/QuickSettings/QuickSettingsApp.qml @@ -0,0 +1,206 @@ +import QtQuick +import Quickshell.Services.Pipewire +import "../.." + +Item { + id: root + width: parent ? parent.width : 1280 + height: parent ? parent.height : 820 + focus: true + + /* ------------------------------ + PIXEL CONSTANTS (DO NOT TOUCH) + ------------------------------ */ + + property int menuLeft: 64 + property int menuTop: 140 + property int lineHeight: 38 + 40 + 1 + + property int nameFontSize: 32 + property int stateFontSize: 28 + + property int stateColumnX: 824 + + property int soulOffsetX: -36 - 32 + property int soulOffsetY: -26 + + /* ------------------------------ */ + + property ShellStateManager manager: null + property int activeSelection: 0 + + property bool isSelected: false + + function clamp(v, lo, hi) { + return Math.max(lo, Math.min(hi, v)); + } + + function wrapIndex(i) { + if (actions.length === 0) + return 0; + return (i + actions.length) % actions.length; + } + + function currentAction() { + return actions.length > 0 ? actions[activeSelection] : null; + } + + PwObjectTracker { + objects: [Pipewire.defaultAudioSink] + } + + property var actions: [ + { + name: "Master Volume", + arr: function (dir) { + const sink = Pipewire.defaultAudioSink; + if (!sink || !sink.audio) + return; + const step = 0.05; + sink.audio.muted = false; + sink.audio.volume = clamp(sink.audio.volume + dir * step, 0, 1); + }, + getState: function () { + const sink = Pipewire.defaultAudioSink; + if (!sink || !sink.audio) + return "—"; + return Math.round(sink.audio.volume * 100) + "%"; + } + }, + { + name: "Controls", + ent: function () {}, + getState: function () { + console.log("deltarune tommorow"); + return ""; + } + } + ] + + Text { + text: "CONFIG" + font.family: "8bitoperator JVE" + font.pixelSize: 71 + renderType: Text.NativeRendering + font.hintingPreference: Font.PreferNoHinting + smooth: false + antialiasing: false + anchors.horizontalCenter: parent.horizontalCenter + color: "#ffffff" + y: 32 + } + + Repeater { + model: root.actions + + delegate: Item { + width: root.width + height: lineHeight + x: 0 + y: menuTop + index * lineHeight + + Image { + source: "./soul.png" + width: 36 + height: 36 + x: 182 + y: 8 + 14 + visible: root.activeSelection == index + } + + Text { + x: 239 + y: 0 + text: modelData.name + font.family: "8bitoperator JVE" + font.pixelSize: 71 + font.letterSpacing: 1 + renderType: Text.NativeRendering + font.hintingPreference: Font.PreferNoHinting + smooth: false + antialiasing: false + color: (root.activeSelection == index && root.isSelected == true) ? "#fefe00" : "#ffffff" + } + + // Option state + Text { + x: menuLeft + stateColumnX + y: 4 + text: modelData.getState ? modelData.getState() : "" + font.family: "8bitoperator JVE" + font.pixelSize: 71 + font.letterSpacing: 1 + renderType: Text.NativeRendering + font.hintingPreference: Font.PreferNoHinting + smooth: false + antialiasing: false + color: (root.activeSelection == index && root.isSelected == true) ? "#fefe00" : "#ffffff" + } + } + } + + /* ------------------------------ + INPUT HANDLING + ------------------------------ */ + + function handleKey(key) { + switch (key) { + case Qt.Key_Up: + if (root.isSelected === false) + activeSelection = wrapIndex(activeSelection - 1); + return true; + case Qt.Key_Down: + if (root.isSelected === false) + activeSelection = wrapIndex(activeSelection + 1); + return true; + case Qt.Key_Left: + { + const a = currentAction(); + if (a && a.arr && root.isSelected === true) + a.arr(-1); + return true; + } + case Qt.Key_Right: + { + const a = currentAction(); + if (a && a.arr && root.isSelected === true) + a.arr(1); + return true; + } + case Qt.Key_Z: + case Qt.Key_Return: + case Qt.Key_Enter: + { + const a = currentAction(); + if (a && a.ent) { + a.ent(); + } else { + root.isSelected = !root.isSelected; + } + return true; + } + case Qt.Key_X: + case Qt.Key_Shift: + case Qt.Key_Escape: + if (root.isSelected === true) { + root.isSelected = false; + } else { + if (manager && manager.closeQuickSettings) { + manager.closeQuickSettings(); + } + } + return true; + } + return false; + } + + Component.onCompleted: { + root.activeSelection = 0; + root.isSelected = false; + ShellInputManager.registerHandler("quickSettings", handleKey); + } + + Component.onDestruction: { + ShellInputManager.unregisterHandler("quickSettings"); + } +} diff --git a/Shell/Windows/QuickSettings/soul.png b/Shell/Windows/QuickSettings/soul.png new file mode 100644 index 0000000000000000000000000000000000000000..136d6afb12157a683312f6cf1bf33c20153ac10f GIT binary patch literal 5414 zcmeAS@N?(olHy`uVBq!ia0y~yU{C>J4mJh`#%b&;_!t-%7>k44ofvPP)Tw7+U|>mi z^mSxl*x1kgCy|wbfk7eJBgmJ5p-PQ`p`nF=;THn~L&FOOhEf9thF1v;3|2E37{m+a z>>21hNDp0|QtLBn~nZ#ayr;hydwe0udk#5&&Tg3%~{;s{pA2W0)X@3YhgU z1t8TJ=7I##F%!A~Ha^%om;|yFATgNLAU4?N=n6o55C$nA&N`TCkPZ+AS%D#jE&x)9 zj)}64C`I5Pz-J}MjbKF}H(*l;QUH>JD*|zl6~YvN#NmpN6@Vl_7+E2R55l@W5ck>KrslWkQf7D2Eg=SH3%k&%|LVm zU~1t8p=-jW0hcZBO#h}>OJKHwXnd{$ z$z#K$m~VjM<}c?1huWJh3QV{;fO4na4QYH^QlFu8n+Lx^09ap@a$ zAvEeBTu}uR9}OW`NZ_IeT?nC+)G$|5Qn10yAeKfiScgUkq5FJGKAcuOo`njxgN@xNAZdH*p literal 0 HcmV?d00001