App id io.github.theupriser.Steamify (GNOME matches windows to launchers only by reverse-DNS ids), own dark window frame on GNOME, launcher icon as a full path
Sync git.upriser.nl mirror / sync (push) Skipped

This commit is contained in:
theupriser committed 2026-10-14 15:44:37 +02:00
1 parent 7a84b0dbca
commit dbaeaa14c9
7 files changed
+84 -15

No files matched your search

+34 -1
View File
@@ -4,6 +4,8 @@ import QtQuick
Rectangle {
required property AppState app
required property string iconUrl
// Our own window frame (GNOME): drag the header, double-click to maximize, and the buttons at the right.
property bool customFrame: false
readonly property var titles: ({ review: "Review", password: "Password", applying: app.biosRun ? "BIOS update" : "Applying",
done: "Done", bios1: "BIOS update", bios2: "BIOS update" })
width: parent.width; height: 72; color: Theme.bar
@@ -18,8 +20,39 @@ Rectangle {
}
Rectangle {
visible: app.status.steamMachine === true
anchors.right: parent.right; anchors.rightMargin: 40; anchors.verticalCenter: parent.verticalCenter
anchors.right: parent.right; anchors.rightMargin: customFrame ? 190 : 40; anchors.verticalCenter: parent.verticalCenter
height: 34; radius: 17; color: "#1b2330"; width: mt.implicitWidth + 28
Text { id: mt; anchors.centerIn: parent; text: "Steam Machine · CachyOS"; color: Theme.label; font.family: Theme.body; font.pixelSize: 14 }
}
// Moving the window (and maximizing by double-click) is the part of the header left of the buttons.
Item {
visible: customFrame
anchors { left: parent.left; top: parent.top; bottom: parent.bottom; right: controls.left }
DragHandler { target: null; onActiveChanged: if (active) Window.window.startSystemMove() }
TapHandler { onDoubleTapped: Window.window.visibility === Window.Maximized ? Window.window.showNormal() : Window.window.showMaximized() }
}
Row {
id: controls
visible: customFrame
anchors.right: parent.right; anchors.rightMargin: 16; anchors.verticalCenter: parent.verticalCenter; spacing: 6
Repeater {
model: [ { g: "\u2013", a: "min" }, { g: "\u25a1", a: "max" }, { g: "\u2715", a: "close" } ]
Rectangle {
required property var modelData
width: 44; height: 44; radius: 22
color: area.containsMouse ? (modelData.a === "close" ? "#c0392b" : Theme.line) : "transparent"
Text { anchors.centerIn: parent; text: modelData.g; color: Theme.text; font.family: Theme.body; font.pixelSize: 20 }
MouseArea {
id: area
anchors.fill: parent; hoverEnabled: true; cursorShape: Qt.PointingHandCursor
onClicked: {
var w = Window.window
if (modelData.a === "min") w.showMinimized()
else if (modelData.a === "max") { if (w.visibility === Window.Maximized) w.showNormal(); else w.showMaximized() }
else Qt.quit()
}
}
}
}
}
}