1
0
mirror of https://github.com/AvengeMedia/DankMaterialShell.git synced 2026-04-30 09:32:05 -04:00
Files
DankMaterialShell/quickshell/Modals/BrowserPickerModal.qml
bbedward f76724f7cd 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
2026-04-29 15:42:30 -04:00

63 lines
1.6 KiB
QML

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: ""
title: I18n.tr("Open with...")
targetData: url
targetDataLabel: ""
categoryFilter: ["WebBrowser", "X-WebBrowser"]
viewMode: SettingsData.browserPickerViewMode || "grid"
usageHistoryKey: "browserUsageHistory"
showTargetData: true
function shellEscape(str) {
return "'" + str.replace(/'/g, "'\\''") + "'";
}
onApplicationSelected: (app, url) => {
if (!app)
return;
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;
}
log.debug("BrowserPicker: Launching", cmd);
Quickshell.execDetached({
command: ["sh", "-c", cmd]
});
}
onViewModeChanged: {
SettingsData.set("browserPickerViewMode", viewMode);
}
}