1
0
mirror of https://github.com/AvengeMedia/DankMaterialShell.git synced 2026-04-30 17:42:06 -04:00

logger: add a dedicated QML logging Singleton

- adds log.info/error/debug/warn/fatal
- adds ability to write logs to any file
- add CLI options in addition to env to set log levels
This commit is contained in:
bbedward
2026-04-29 15:40:44 -04:00
parent 3b96c6ab22
commit f76724f7cd
84 changed files with 1764 additions and 1297 deletions

View File

@@ -2,9 +2,11 @@ import QtQuick
import Quickshell
import qs.Common
import qs.Modals
import qs.Services
AppPickerModal {
id: root
readonly property var log: Log.scoped("BrowserPickerModal")
property string url: ""
@@ -17,35 +19,44 @@ AppPickerModal {
showTargetData: true
function shellEscape(str) {
return "'" + str.replace(/'/g, "'\\''") + "'"
return "'" + str.replace(/'/g, "'\\''") + "'";
}
onApplicationSelected: (app, url) => {
if (!app) return
if (!app)
return;
let cmd = app.exec || "";
const escapedUrl = shellEscape(url);
let cmd = app.exec || ""
const escapedUrl = shellEscape(url)
let hasField = false
if (cmd.includes("%u")) { cmd = cmd.replace("%u", escapedUrl); hasField = true }
else if (cmd.includes("%U")) { cmd = cmd.replace("%U", escapedUrl); hasField = true }
else if (cmd.includes("%f")) { cmd = cmd.replace("%f", escapedUrl); hasField = true }
else if (cmd.includes("%F")) { cmd = cmd.replace("%F", escapedUrl); hasField = true }
cmd = cmd.replace(/%[ikc]/g, "")
if (!hasField) {
cmd += " " + escapedUrl
let hasField = false;
if (cmd.includes("%u")) {
cmd = cmd.replace("%u", escapedUrl);
hasField = true;
} else if (cmd.includes("%U")) {
cmd = cmd.replace("%U", escapedUrl);
hasField = true;
} else if (cmd.includes("%f")) {
cmd = cmd.replace("%f", escapedUrl);
hasField = true;
} else if (cmd.includes("%F")) {
cmd = cmd.replace("%F", escapedUrl);
hasField = true;
}
console.log("BrowserPicker: Launching", cmd)
cmd = cmd.replace(/%[ikc]/g, "");
if (!hasField) {
cmd += " " + escapedUrl;
}
log.debug("BrowserPicker: Launching", cmd);
Quickshell.execDetached({
command: ["sh", "-c", cmd]
})
});
}
onViewModeChanged: {
SettingsData.set("browserPickerViewMode", viewMode)
SettingsData.set("browserPickerViewMode", viewMode);
}
}