Regenerated
This commit is contained in:
@@ -46,6 +46,16 @@ windowrule {
|
||||
pin = on
|
||||
}
|
||||
|
||||
#Quickshell updater
|
||||
windowrule {
|
||||
name = quickshell-updater
|
||||
match:title = quickshell-updater
|
||||
opacity = 1.0 0.8
|
||||
float = on
|
||||
move = cursor -50% 0
|
||||
pin = on
|
||||
}
|
||||
|
||||
#Quickshell layoutswitcher
|
||||
windowrule {
|
||||
name = quickshell-layoutswitcher
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
// --- This file has been auto-generated. For permanent changes alter the appropriate block in the README.org. ---
|
||||
// --- This file has been auto-generated. For permanent changes alter the appropriate block in the README.org. ---
|
||||
import Quickshell
|
||||
import Quickshell.Io
|
||||
import QtQuick
|
||||
@@ -17,38 +16,35 @@ ShellRoot {
|
||||
readonly property color blue: "#89b4fa"
|
||||
readonly property color red: "#f38ba8"
|
||||
readonly property color yellow: "#f9e2af"
|
||||
readonly property color peach: "#fab387"
|
||||
}
|
||||
|
||||
QtObject {
|
||||
id: state
|
||||
property int step: 0
|
||||
property bool running: false
|
||||
property bool failed: false
|
||||
property string log: ""
|
||||
property int currentStep: 0
|
||||
property bool isRunning: false
|
||||
property bool isFailed: false
|
||||
property string currentLog: ""
|
||||
property bool started: false
|
||||
|
||||
readonly property var steps: [
|
||||
{ label: "Updating flake.lock", cmd: ["nix", "flake", "update"], cwd: "/home/henrov/Repos/nixos/Droidnix" },
|
||||
{ label: "Updating Flatpaks", cmd: ["flatpak", "update", "-y"], cwd: "/home/henrov" },
|
||||
{ label: "Staging changes", cmd: ["git", "add", "."], cwd: "/home/henrov/Repos/nixos/Droidnix" },
|
||||
{ label: "Committing changes", cmd: ["git", "commit", "-m", "Updated system"], cwd: "/home/henrov/Repos/nixos/Droidnix" },
|
||||
{ label: "Pushing to remote", cmd: ["git", "push"], cwd: "/home/henrov/Repos/nixos/Droidnix" },
|
||||
{ label: "Rebuilding NixOS", cmd: ["sudo", "nixos-rebuild", "switch", "--flake", ".#traveldroid"], cwd: "/home/henrov/Repos/nixos/Droidnix" },
|
||||
{ label: "Reloading Hyprland", cmd: ["hyprctl", "reload"], cwd: "/home/henrov" },
|
||||
]
|
||||
}
|
||||
readonly property var steps: [
|
||||
{ label: "Updating flake.lock", cmd: ["nix", "flake", "update"], cwd: "/home/henrov/Repos/nixos/Droidnix" },
|
||||
{ label: "Updating Flatpaks", cmd: ["flatpak", "update", "-y"], cwd: "/home/henrov" },
|
||||
{ label: "Staging changes", cmd: ["git", "add", "."], cwd: "/home/henrov/Repos/nixos/Droidnix" },
|
||||
{ label: "Committing changes", cmd: ["git", "commit", "-m", "Updated system"], cwd: "/home/henrov/Repos/nixos/Droidnix" },
|
||||
{ label: "Pushing to remote", cmd: ["git", "push"], cwd: "/home/henrov/Repos/nixos/Droidnix" },
|
||||
{ label: "Rebuilding NixOS", cmd: ["sudo", "nixos-rebuild", "switch", "--flake", ".#traveldroid"], cwd: "/home/henrov/Repos/nixos/Droidnix" },
|
||||
{ label: "Reloading Hyprland", cmd: ["hyprctl", "reload"], cwd: "/home/henrov" },
|
||||
]
|
||||
|
||||
function runStep(index) {
|
||||
if (index >= state.steps.length) {
|
||||
state.running = false
|
||||
state.step = state.steps.length
|
||||
if (index >= steps.length) {
|
||||
isRunning = false
|
||||
currentStep = steps.length
|
||||
return
|
||||
}
|
||||
state.step = index
|
||||
state.log = "" // clear log for each new step
|
||||
state.running = true
|
||||
stepProc.command = state.steps[index].cmd
|
||||
stepProc.workingDirectory = state.steps[index].cwd
|
||||
currentStep = index
|
||||
currentLog = ""
|
||||
isRunning = true
|
||||
stepProc.command = steps[index].cmd
|
||||
stepProc.workingDirectory = steps[index].cwd
|
||||
stepProc.running = true
|
||||
}
|
||||
|
||||
@@ -57,32 +53,31 @@ ShellRoot {
|
||||
|
||||
stdout: SplitParser {
|
||||
onRead: (line) => {
|
||||
state.log = (state.log + "\n" + line).split("\n").slice(-8).join("\n").trim()
|
||||
currentLog = (currentLog + "\n" + line).split("\n").slice(-8).join("\n").trim()
|
||||
}
|
||||
}
|
||||
|
||||
stderr: SplitParser {
|
||||
onRead: (line) => {
|
||||
if (line.trim() !== "")
|
||||
state.log = (state.log + "\n" + line).split("\n").slice(-8).join("\n").trim()
|
||||
currentLog = (currentLog + "\n" + line).split("\n").slice(-8).join("\n").trim()
|
||||
}
|
||||
}
|
||||
|
||||
onExited: (code) => {
|
||||
if (code !== 0 && state.step !== 3) {
|
||||
state.failed = true
|
||||
state.running = false
|
||||
if (code !== 0 && currentStep !== 3) {
|
||||
isFailed = true
|
||||
isRunning = false
|
||||
} else {
|
||||
runStep(state.step + 1)
|
||||
runStep(currentStep + 1)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
FloatingWindow {
|
||||
id: root
|
||||
title: "quickshell-updater"
|
||||
visible: true
|
||||
width: 520
|
||||
width: 540
|
||||
height: contentCol.implicitHeight + 32
|
||||
color: "transparent"
|
||||
|
||||
@@ -91,7 +86,6 @@ ShellRoot {
|
||||
onActivated: Qt.quit()
|
||||
}
|
||||
|
||||
// Gradient border
|
||||
Rectangle {
|
||||
anchors.fill: parent
|
||||
anchors.margins: -2
|
||||
@@ -117,119 +111,89 @@ ShellRoot {
|
||||
right: parent.right
|
||||
margins: 20
|
||||
}
|
||||
spacing: 12
|
||||
spacing: 8
|
||||
|
||||
// Title
|
||||
Text {
|
||||
text: " System Update"
|
||||
color: colors.text
|
||||
font.pixelSize: 15
|
||||
font.bold: true
|
||||
Layout.topMargin: 4
|
||||
text: " System Update"
|
||||
color: colors.text
|
||||
font.pixelSize: 15
|
||||
font.bold: true
|
||||
Layout.topMargin: 8
|
||||
}
|
||||
|
||||
// Steps list
|
||||
// Steps
|
||||
Repeater {
|
||||
model: state.steps.length
|
||||
model: steps.length
|
||||
|
||||
delegate: RowLayout {
|
||||
spacing: 10
|
||||
spacing: 10
|
||||
Layout.fillWidth: true
|
||||
|
||||
// Icon
|
||||
readonly property bool done: !isFailed && (index < currentStep || (!isRunning && currentStep === steps.length))
|
||||
readonly property bool active: isRunning && index === currentStep
|
||||
readonly property bool failed: isFailed && index === currentStep
|
||||
readonly property bool pending: !done && !active && !failed
|
||||
|
||||
// icon
|
||||
Text {
|
||||
font.pixelSize: 14
|
||||
text: {
|
||||
if (state.failed && index === state.step) return "✗"
|
||||
if (index < state.step || (!state.running && index === state.step)) return "✓"
|
||||
if (index === state.step && state.running) return "…"
|
||||
return "○"
|
||||
}
|
||||
color: {
|
||||
if (state.failed && index === state.step) return colors.red
|
||||
if (index < state.step || (!state.running && !state.failed && index === state.step)) return colors.green
|
||||
if (index === state.step && state.running) return colors.yellow
|
||||
return colors.surface1
|
||||
}
|
||||
text: failed ? "✗" : done ? "✓" : active ? "›" : "○"
|
||||
color: failed ? colors.red : done ? colors.green : active ? colors.yellow : colors.surface1
|
||||
}
|
||||
|
||||
// label
|
||||
Text {
|
||||
text: state.steps[index].label
|
||||
text: steps[index].label
|
||||
font.pixelSize: 13
|
||||
color: {
|
||||
if (state.failed && index === state.step) return colors.red
|
||||
if (index < state.step) return colors.subtext0
|
||||
if (index === state.step) return colors.text
|
||||
return colors.surface1
|
||||
}
|
||||
}
|
||||
|
||||
// Spinner for active step
|
||||
Text {
|
||||
visible: index === state.step && state.running
|
||||
text: "⠋"
|
||||
color: colors.blue
|
||||
font.pixelSize: 13
|
||||
|
||||
RotationAnimation on rotation {
|
||||
running: index === state.step && state.running
|
||||
from: 0; to: 360
|
||||
duration: 1000
|
||||
loops: Animation.Infinite
|
||||
}
|
||||
color: failed ? colors.red : done ? colors.green : active ? colors.text : colors.surface1
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Log output
|
||||
// Log box
|
||||
Rectangle {
|
||||
Layout.fillWidth: true
|
||||
height: 160
|
||||
radius: 8
|
||||
color: colors.surface0
|
||||
visible: state.log !== ""
|
||||
Layout.fillWidth: true
|
||||
height: 160
|
||||
radius: 8
|
||||
color: colors.surface0
|
||||
visible: currentLog !== "" && started
|
||||
|
||||
Text {
|
||||
anchors {
|
||||
fill: parent
|
||||
margins: 8
|
||||
margins: 10
|
||||
}
|
||||
text: state.log
|
||||
color: colors.subtext0
|
||||
font.pixelSize: 11
|
||||
font.family: "monospace"
|
||||
wrapMode: Text.WrapAnywhere
|
||||
elide: Text.ElideLeft
|
||||
text: currentLog
|
||||
color: colors.subtext0
|
||||
font.pixelSize: 11
|
||||
font.family: "monospace"
|
||||
wrapMode: Text.WrapAnywhere
|
||||
verticalAlignment: Text.AlignBottom
|
||||
}
|
||||
}
|
||||
|
||||
// Status / close
|
||||
// Bottom bar
|
||||
RowLayout {
|
||||
Layout.fillWidth: true
|
||||
Layout.bottomMargin: 4
|
||||
Layout.fillWidth: true
|
||||
Layout.bottomMargin: 8
|
||||
|
||||
Text {
|
||||
text: {
|
||||
if (state.failed) return "✗ Failed at: " + state.steps[state.step].label
|
||||
if (state.step === state.steps.length) return "✓ Done!"
|
||||
if (state.running) return "Running…"
|
||||
return "Press Start"
|
||||
}
|
||||
color: {
|
||||
if (state.failed) return colors.red
|
||||
if (state.step === state.steps.length) return colors.green
|
||||
return colors.subtext0
|
||||
}
|
||||
font.pixelSize: 12
|
||||
text: {
|
||||
if (!started) return "Press Start to begin"
|
||||
if (isFailed) return "✗ Failed at: " + steps[currentStep].label
|
||||
if (currentStep === steps.length) return "✓ All done!"
|
||||
if (isRunning) return steps[currentStep].label + "…"
|
||||
return ""
|
||||
}
|
||||
color: isFailed ? colors.red : currentStep === steps.length ? colors.green : colors.subtext0
|
||||
}
|
||||
|
||||
Item { Layout.fillWidth: true }
|
||||
|
||||
// Start button
|
||||
Rectangle {
|
||||
visible: !state.running && state.step === 0
|
||||
width: 80; height: 28
|
||||
visible: !started
|
||||
width: 80; height: 28
|
||||
radius: 14
|
||||
gradient: Gradient {
|
||||
orientation: Gradient.Horizontal
|
||||
@@ -238,29 +202,31 @@ ShellRoot {
|
||||
}
|
||||
Text {
|
||||
anchors.centerIn: parent
|
||||
text: "Start"
|
||||
color: colors.base
|
||||
font.pixelSize: 12
|
||||
font.bold: true
|
||||
text: "Start"
|
||||
color: colors.base
|
||||
font.pixelSize: 12
|
||||
font.bold: true
|
||||
}
|
||||
MouseArea {
|
||||
anchors.fill: parent
|
||||
cursorShape: Qt.PointingHandCursor
|
||||
onClicked: runStep(0)
|
||||
onClicked: {
|
||||
started = true
|
||||
runStep(0)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Close button
|
||||
Rectangle {
|
||||
visible: !state.running && state.step > 0
|
||||
width: 80; height: 28
|
||||
visible: !isRunning && started
|
||||
width: 80; height: 28
|
||||
radius: 14
|
||||
color: colors.surface1
|
||||
Text {
|
||||
anchors.centerIn: parent
|
||||
text: "Close"
|
||||
color: colors.text
|
||||
font.pixelSize: 12
|
||||
text: currentStep === steps.length ? "Close" : "Dismiss"
|
||||
color: colors.text
|
||||
font.pixelSize: 12
|
||||
}
|
||||
MouseArea {
|
||||
anchors.fill: parent
|
||||
|
||||
Reference in New Issue
Block a user