mirror of
https://github.com/AvengeMedia/DankMaterialShell.git
synced 2026-04-30 09:32:05 -04:00
- 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
63 lines
1.6 KiB
QML
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);
|
|
}
|
|
}
|