small component patches + code cleanup
This commit is contained in:
68
components/ConfigWriter.qml
Normal file
68
components/ConfigWriter.qml
Normal file
@@ -0,0 +1,68 @@
|
||||
import QtQuick
|
||||
import Quickshell
|
||||
import Quickshell.Io
|
||||
|
||||
Item {
|
||||
id: root
|
||||
|
||||
property string configPath:
|
||||
Quickshell.env("HOME") + "/.config/quickshell/config/config.qml"
|
||||
|
||||
Process {
|
||||
id: writerProc
|
||||
running: false
|
||||
onExited: (code) => {
|
||||
if (code !== 0)
|
||||
console.warn("[ConfigWriter] Patch failed (exit " + code + ")")
|
||||
}
|
||||
property string _name: "ConfigWriter"
|
||||
}
|
||||
|
||||
function writeInt(key, value) {
|
||||
const n = Math.round(value).toString()
|
||||
const sh = "sed -i" +
|
||||
" -e 's/\\(property int[[:space:]]\\+\\b" + key + "\\b:[ ]*\\)[0-9.]\\+/\\1" + n + "/'" +
|
||||
" " + JSON.stringify(root.configPath)
|
||||
writerProc.command = ["/bin/sh", "-c", sh]
|
||||
writerProc.running = true
|
||||
}
|
||||
|
||||
function writeBool(key, value) {
|
||||
const v = value ? "true" : "false"
|
||||
const sh = "sed -i" +
|
||||
" -e 's/\\(property bool[[:space:]]\\+\\b" + key + "\\b:[ ]*\\)\\(true\\|false\\)/\\1" + v + "/'" +
|
||||
" " + JSON.stringify(root.configPath)
|
||||
writerProc.command = ["/bin/sh", "-c", sh]
|
||||
writerProc.running = true
|
||||
}
|
||||
|
||||
function writeInts(pairs) {
|
||||
let args = ""
|
||||
for (let i = 0; i < pairs.length; i++) {
|
||||
const n = Math.round(pairs[i].value).toString()
|
||||
args += " -e 's/\\(property int[[:space:]]\\+\\b" + pairs[i].key + "\\b:[ ]*\\)[0-9.]\\+/\\1" + n + "/'"
|
||||
}
|
||||
const sh = "sed -i" + args + " " + JSON.stringify(root.configPath)
|
||||
writerProc.command = ["/bin/sh", "-c", sh]
|
||||
writerProc.running = true
|
||||
}
|
||||
|
||||
function writeArray(key, pairsQml) {
|
||||
const sh =
|
||||
"CFG=" + JSON.stringify(root.configPath) + "\n" +
|
||||
"QS_PAIRS='" + pairsQml + "'\n" +
|
||||
"awk -v pairs=\"$QS_PAIRS\" '" +
|
||||
"/^[[:space:]]*property var[[:space:]]+" + key + ":[[:space:]]/{print \" property var " + key + ": \"pairs;sk=/\\]/?0:1;next}" +
|
||||
"sk&&/\\]/{sk=0;next}" +
|
||||
"sk{next}" +
|
||||
"{print}'" +
|
||||
" \"$CFG\" > \"${CFG}.tmp\" && mv \"${CFG}.tmp\" \"$CFG\"\n"
|
||||
writerProc.command = ["/bin/sh", "-c", sh]
|
||||
writerProc.running = true
|
||||
}
|
||||
|
||||
function writeScript(sh) {
|
||||
writerProc.command = ["/bin/sh", "-c", sh]
|
||||
writerProc.running = true
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user