Add .config/DankMaterialShell/plugin_settings.json Add .config/DankMaterialShell/plugins/dankDesktopWeather.meta Add .config/DankMaterialShell/plugins/dankHooks.meta Add .config/DankMaterialShell/plugins/desktopCommand/LICENSE Add .config/DankMaterialShell/plugins/desktopCommand/README.md Add .config/DankMaterialShell/plugins/desktopCommand/Settings.qml Add .config/DankMaterialShell/plugins/desktopCommand/Widget.qml Add .config/DankMaterialShell/plugins/desktopCommand/assets/screenshot.jpg Add .config/DankMaterialShell/plugins/desktopCommand/.git/HEAD Add .config/DankMaterialShell/plugins/desktopCommand/.git/config Add .config/DankMaterialShell/plugins/desktopCommand/.git/index Add .config/DankMaterialShell/plugins/desktopCommand/.git/objects/info/.keep Add .config/DankMaterialShell/plugins/desktopCommand/.git/objects/pack/pack-c2ca48eacecc3ab45931476641d058a89d755775.idx Add .config/DankMaterialShell/plugins/desktopCommand/.git/objects/pack/pack-c2ca48eacecc3ab45931476641d058a89d755775.rev Add .config/DankMaterialShell/plugins/desktopCommand/.git/objects/pack/pack-c2ca48eacecc3ab45931476641d058a89d755775.pack Add .config/DankMaterialShell/plugins/desktopCommand/.git/refs/heads/main Add .config/DankMaterialShell/plugins/desktopCommand/.git/refs/remotes/origin/main Add .config/DankMaterialShell/plugins/desktopCommand/.git/refs/tags/.keep Add .config/DankMaterialShell/plugins/desktopCommand/.gitignore Add .config/DankMaterialShell/plugins/desktopCommand/wrapCommand Add .config/DankMaterialShell/plugins/desktopCommand/plugin.json Add .config/DankMaterialShell/plugins/.repos/0026f1eba8dedaec/DankActions/DankActionsSettings.qml Add .config/DankMaterialShell/plugins/.repos/0026f1eba8dedaec/DankActions/DankActionsWidget.qml Add .config/DankMaterialShell/plugins/.repos/0026f1eba8dedaec/DankActions/plugin.json Add .config/DankMaterialShell/plugins/.repos/0026f1eba8dedaec/DankBatteryAlerts/DankBatteryAlerts.qml Add .config/DankMaterialShell/plugins/.repos/0026f1eba8dedaec/DankBatteryAlerts/DankBatteryAlertsSettings.qml Add .config/DankMaterialShell/plugins/.repos/0026f1eba8dedaec/DankBatteryAlerts/plugin.json Add .config/DankMaterialShell/plugins/.repos/0026f1eba8dedaec/DankDesktopWeather/DankDesktopWeather.qml Add .config/DankMaterialShell/plugins/.repos/0026f1eba8dedaec/DankDesktopWeather/DankDesktopWeatherSettings.qml Add .config/DankMaterialShell/plugins/.repos/0026f1eba8dedaec/DankDesktopWeather/plugin.json Add .config/DankMaterialShell/plugins/.repos/0026f1eba8dedaec/DankHooks/DankHooks.qml Add .config/DankMaterialShell/plugins/.repos/0026f1eba8dedaec/DankHooks/DankHooksSettings.qml Add .config/DankMaterialShell/plugins/.repos/0026f1eba8dedaec/DankHooks/README.md Add .config/DankMaterialShell/plugins/.repos/0026f1eba8dedaec/DankHooks/plugin.json Add .config/DankMaterialShell/plugins/.repos/0026f1eba8dedaec/DankPomodoroTimer/DankPomodoroSettings.qml Add .config/DankMaterialShell/plugins/.repos/0026f1eba8dedaec/DankPomodoroTimer/DankPomodoroWidget.qml Add .config/DankMaterialShell/plugins/.repos/0026f1eba8dedaec/DankPomodoroTimer/plugin.json Add .config/DankMaterialShell/plugins/.repos/0026f1eba8dedaec/LICENSE Add .config/DankMaterialShell/plugins/.repos/0026f1eba8dedaec/README.md Add .config/DankMaterialShell/plugins/.repos/0026f1eba8dedaec/.git/HEAD Add .config/DankMaterialShell/plugins/.repos/0026f1eba8dedaec/.git/config Add .config/DankMaterialShell/plugins/.repos/0026f1eba8dedaec/.git/index Add .config/DankMaterialShell/plugins/.repos/0026f1eba8dedaec/.git/objects/info/.keep Add .config/DankMaterialShell/plugins/.repos/0026f1eba8dedaec/.git/objects/pack/pack-3221a15c022ef4a7bb6bf2c47e40068b66b3588b.idx Add .config/DankMaterialShell/plugins/.repos/0026f1eba8dedaec/.git/objects/pack/pack-3221a15c022ef4a7bb6bf2c47e40068b66b3588b.rev Add .config/DankMaterialShell/plugins/.repos/0026f1eba8dedaec/.git/objects/pack/pack-9aca069a8b76b40fcc472eba1ed9b8219a87776b.idx Add .config/DankMaterialShell/plugins/.repos/0026f1eba8dedaec/.git/objects/pack/pack-9aca069a8b76b40fcc472eba1ed9b8219a87776b.rev Add .config/DankMaterialShell/plugins/.repos/0026f1eba8dedaec/.git/objects/pack/pack-e6f6cdfe9914bfb4a5717ef6036821794d59ab4b.idx Add .config/DankMaterialShell/plugins/.repos/0026f1eba8dedaec/.git/objects/pack/pack-e6f6cdfe9914bfb4a5717ef6036821794d59ab4b.rev Add .config/DankMaterialShell/plugins/.repos/0026f1eba8dedaec/.git/objects/pack/pack-3221a15c022ef4a7bb6bf2c47e40068b66b3588b.pack Add .config/DankMaterialShell/plugins/.repos/0026f1eba8dedaec/.git/objects/pack/pack-9aca069a8b76b40fcc472eba1ed9b8219a87776b.pack Add .config/DankMaterialShell/plugins/.repos/0026f1eba8dedaec/.git/objects/pack/pack-e6f6cdfe9914bfb4a5717ef6036821794d59ab4b.pack Add .config/DankMaterialShell/plugins/.repos/0026f1eba8dedaec/.git/refs/heads/master Add .config/DankMaterialShell/plugins/.repos/0026f1eba8dedaec/.git/refs/remotes/origin/master Add .config/DankMaterialShell/plugins/.repos/0026f1eba8dedaec/.git/refs/tags/.keep Add .config/DankMaterialShell/plugins/.repos/0026f1eba8dedaec/.gitignore Add .config/DankMaterialShell/plugins/emojiLauncher/EmojiLauncher.qml Add .config/DankMaterialShell/plugins/emojiLauncher/EmojiLauncherSettings.qml Add .config/DankMaterialShell/plugins/emojiLauncher/LICENSE Add .config/DankMaterialShell/plugins/emojiLauncher/README.md Add .config/DankMaterialShell/plugins/emojiLauncher/catalog.js Add .config/DankMaterialShell/plugins/emojiLauncher/data/emojis.txt Add .config/DankMaterialShell/plugins/emojiLauncher/data/math.txt Add .config/DankMaterialShell/plugins/emojiLauncher/data/nerdfont.txt Add .config/DankMaterialShell/plugins/emojiLauncher/.git/HEAD Add .config/DankMaterialShell/plugins/emojiLauncher/.git/config Add .config/DankMaterialShell/plugins/emojiLauncher/.git/index Add .config/DankMaterialShell/plugins/emojiLauncher/.git/objects/info/.keep Add .config/DankMaterialShell/plugins/emojiLauncher/.git/objects/pack/pack-e04a5b1ea381dc3a792b8bf08cf70e735b195c0d.idx Add .config/DankMaterialShell/plugins/emojiLauncher/.git/objects/pack/pack-e04a5b1ea381dc3a792b8bf08cf70e735b195c0d.rev Add .config/DankMaterialShell/plugins/emojiLauncher/.git/objects/pack/pack-e04a5b1ea381dc3a792b8bf08cf70e735b195c0d.pack Add .config/DankMaterialShell/plugins/emojiLauncher/.git/refs/heads/main Add .config/DankMaterialShell/plugins/emojiLauncher/.git/refs/remotes/origin/main Add .config/DankMaterialShell/plugins/emojiLauncher/.git/refs/tags/.keep Add .config/DankMaterialShell/plugins/emojiLauncher/plugin.json Add .config/DankMaterialShell/plugins/emojiLauncher/screenshot.png Add .config/DankMaterialShell/plugins/emojiLauncher/scripts/generate_catalog.py Add .config/DankMaterialShell/plugins/mediaPlayer/MediaPlayerSettings.qml Add .config/DankMaterialShell/plugins/mediaPlayer/MediaPlayerTab.qml Add .config/DankMaterialShell/plugins/mediaPlayer/README.md Add .config/DankMaterialShell/plugins/mediaPlayer/.git/HEAD Add .config/DankMaterialShell/plugins/mediaPlayer/.git/config Add .config/DankMaterialShell/plugins/mediaPlayer/.git/index Add .config/DankMaterialShell/plugins/mediaPlayer/.git/objects/info/.keep Add .config/DankMaterialShell/plugins/mediaPlayer/.git/objects/pack/pack-0b9cb33f7da23f6ff361ee3aa5117928714bc3be.idx Add .config/DankMaterialShell/plugins/mediaPlayer/.git/objects/pack/pack-0b9cb33f7da23f6ff361ee3aa5117928714bc3be.rev Add .config/DankMaterialShell/plugins/mediaPlayer/.git/objects/pack/pack-0b9cb33f7da23f6ff361ee3aa5117928714bc3be.pack Add .config/DankMaterialShell/plugins/mediaPlayer/.git/refs/heads/main Add .config/DankMaterialShell/plugins/mediaPlayer/.git/refs/remotes/origin/main Add .config/DankMaterialShell/plugins/mediaPlayer/.git/refs/tags/.keep Add .config/DankMaterialShell/plugins/mediaPlayer/plugin.json Add .config/DankMaterialShell/plugins/mediaPlayer/screenshot_8.png Add .config/DankMaterialShell/plugins/dankDesktopWeather Add .config/DankMaterialShell/plugins/dankHooks Add .config/DankMaterialShell/settings.json
250 lines
8.1 KiB
QML
250 lines
8.1 KiB
QML
import QtQuick
|
|
import QtQuick.Controls
|
|
import qs.Common
|
|
import qs.Widgets
|
|
import qs.Modules.Plugins
|
|
|
|
PluginSettings {
|
|
id: root
|
|
pluginId: "desktopCommand"
|
|
|
|
property string defaultCommand: "fastfetch --logo-type builtin"
|
|
property int defaultFontSize: Theme.fontSizeSmall
|
|
property string command: root.loadValue("command", defaultCommand)
|
|
property bool autoRefresh: root.loadValue("autoRefresh", false)
|
|
property bool useDank16: root.loadValue("useDank16", true)
|
|
property string commandTimeout: String(root.loadValue("commandTimeout", "1"))
|
|
property string refreshInterval: String(root.loadValue("refreshInterval", "5"))
|
|
property int fontSize: String(root.loadValue("fontSize", defaultFontSize))
|
|
property int backgroundOpacity: root.loadValue("backgroundOpacity", 50)
|
|
|
|
function sanitizeIntInput(textValue, fallback) {
|
|
const cleaned = String(textValue ?? "").replace(/[^0-9]/g, "")
|
|
return cleaned.length > 0 ? cleaned : String(fallback)
|
|
}
|
|
|
|
function sanitizeDecimalInput(textValue, fallback) {
|
|
let cleaned = String(textValue ?? "").replace(/[^0-9.]/g, "")
|
|
const dot = cleaned.indexOf(".")
|
|
if (dot !== -1) {
|
|
cleaned = cleaned.slice(0, dot + 1) + cleaned.slice(dot + 1).replace(/\./g, "")
|
|
}
|
|
return cleaned.length > 0 ? cleaned : String(fallback)
|
|
}
|
|
|
|
StyledText {
|
|
text: I18n.tr("Command Settings")
|
|
font.pixelSize: Theme.fontSizeLarge
|
|
font.weight: Font.Medium
|
|
color: Theme.surfaceText
|
|
}
|
|
|
|
Column {
|
|
id: content
|
|
spacing: Theme.spacingM
|
|
anchors.left: parent.left
|
|
anchors.right: parent.right
|
|
|
|
Column {
|
|
spacing: Theme.spacingXS
|
|
width: parent.width
|
|
|
|
StyledText {
|
|
text: I18n.tr("Shell command")
|
|
font.pixelSize: Theme.fontSizeMedium
|
|
font.weight: Font.Medium
|
|
color: Theme.surfaceText
|
|
}
|
|
|
|
StyledText {
|
|
text: I18n.tr("Shell command to run and display.")
|
|
font.pixelSize: Theme.fontSizeSmall
|
|
color: Theme.surfaceVariantText
|
|
wrapMode: Text.WordWrap
|
|
}
|
|
|
|
DankTextField {
|
|
id: commandField
|
|
width: parent.width
|
|
height: 40
|
|
text: command
|
|
placeholderText: defaultCommand
|
|
backgroundColor: Theme.surfaceContainer
|
|
textColor: Theme.surfaceText
|
|
}
|
|
}
|
|
|
|
Column {
|
|
spacing: Theme.spacingXS
|
|
width: parent.width
|
|
|
|
StyledText {
|
|
text: I18n.tr("Command Timeout (seconds)")
|
|
font.pixelSize: Theme.fontSizeMedium
|
|
font.weight: Font.Medium
|
|
color: Theme.surfaceText
|
|
}
|
|
|
|
StyledText {
|
|
text: I18n.tr("Maximum amount of time to run the command.<br />Important when running commands taht never exit, like TUI apps.")
|
|
font.pixelSize: Theme.fontSizeSmall
|
|
color: Theme.surfaceVariantText
|
|
wrapMode: Text.WordWrap
|
|
}
|
|
|
|
DankTextField {
|
|
id: timeoutField
|
|
width: parent.width
|
|
height: 40
|
|
text: commandTimeout
|
|
placeholderText: "1"
|
|
backgroundColor: Theme.surfaceContainer
|
|
textColor: Theme.surfaceText
|
|
|
|
onEditingFinished: {
|
|
commandTimeout = sanitizeDecimalInput(text, "1")
|
|
text = commandTimeout
|
|
}
|
|
}
|
|
}
|
|
|
|
Column {
|
|
spacing: Theme.spacingS
|
|
width: parent.width
|
|
|
|
CheckBox {
|
|
id: autoRefreshToggle
|
|
checked: autoRefresh
|
|
|
|
contentItem: StyledText {
|
|
text: I18n.tr("Auto Refresh")
|
|
font.pixelSize: Theme.fontSizeMedium
|
|
color: Theme.surfaceText
|
|
leftPadding: autoRefreshToggle.indicator.width + 8
|
|
verticalAlignment: Text.AlignVCenter
|
|
}
|
|
}
|
|
|
|
StyledText {
|
|
text: I18n.tr("Automatically rerun the command on the chosen interval.")
|
|
font.pixelSize: Theme.fontSizeSmall
|
|
color: Theme.surfaceVariantText
|
|
wrapMode: Text.WordWrap
|
|
width: parent.width - autoRefreshToggle.width - Theme.spacingS
|
|
}
|
|
}
|
|
|
|
Column {
|
|
spacing: Theme.spacingXS
|
|
width: parent.width
|
|
|
|
StyledText {
|
|
text: I18n.tr("Refresh Interval (seconds)")
|
|
font.pixelSize: Theme.fontSizeMedium
|
|
font.weight: Font.Medium
|
|
color: Theme.surfaceText
|
|
opacity: autoRefreshToggle.checked ? 1.0 : 0.3
|
|
}
|
|
|
|
StyledText {
|
|
text: I18n.tr("How often to rerun the command (supports decimals).")
|
|
font.pixelSize: Theme.fontSizeSmall
|
|
color: Theme.surfaceVariantText
|
|
wrapMode: Text.WordWrap
|
|
opacity: autoRefreshToggle.checked ? 1.0 : 0.3
|
|
}
|
|
|
|
DankTextField {
|
|
id: intervalField
|
|
width: parent.width
|
|
height: 40
|
|
text: refreshInterval
|
|
placeholderText: "5"
|
|
backgroundColor: Theme.surfaceContainer
|
|
textColor: Theme.surfaceText
|
|
enabled: autoRefreshToggle.checked
|
|
opacity: autoRefreshToggle.checked ? 1.0 : 0.3
|
|
|
|
onEditingFinished: {
|
|
refreshInterval = sanitizeDecimalInput(text, "5")
|
|
text = refreshInterval
|
|
}
|
|
}
|
|
}
|
|
|
|
DankButton {
|
|
text: I18n.tr("Save command settings")
|
|
width: parent.width
|
|
onClicked: {
|
|
command = commandField.text.trim()
|
|
root.saveValue("command", command)
|
|
|
|
root.saveValue("autoRefresh", autoRefreshToggle.checked)
|
|
|
|
commandTimeout = sanitizeDecimalInput(timeoutField.text, "1")
|
|
root.saveValue("commandTimeout", commandTimeout)
|
|
|
|
refreshInterval = sanitizeDecimalInput(intervalField.text, "5")
|
|
root.saveValue("refreshInterval", refreshInterval)
|
|
|
|
commandField.text = command
|
|
timeoutField.text = commandTimeout
|
|
intervalField.text = refreshInterval
|
|
}
|
|
}
|
|
|
|
Column {
|
|
topPadding: Theme.spacingL*2
|
|
spacing: Theme.spacingXS
|
|
width: parent.width
|
|
|
|
StyledText {
|
|
text: I18n.tr("Appearance Settings")
|
|
font.pixelSize: Theme.fontSizeLarge
|
|
font.weight: Font.Medium
|
|
color: Theme.surfaceText
|
|
}
|
|
|
|
Item {
|
|
width: parent.width
|
|
height: Theme.spacingM
|
|
}
|
|
|
|
SliderSetting {
|
|
settingKey: "fontSize"
|
|
label: I18n.tr("Font size (px)")
|
|
description: I18n.tr("Default monospace font is being used,<br />but you can set a custom size.")
|
|
defaultValue: fontSize
|
|
minimum: 8
|
|
maximum: 100
|
|
unit: "px"
|
|
}
|
|
|
|
Item {
|
|
width: parent.width
|
|
height: Theme.spacingM
|
|
}
|
|
|
|
SliderSetting {
|
|
settingKey: "backgroundOpacity"
|
|
label: I18n.tr("Background Opacity")
|
|
defaultValue: backgroundOpacity
|
|
minimum: 0
|
|
maximum: 100
|
|
unit: "%"
|
|
}
|
|
|
|
Item {
|
|
width: parent.width
|
|
height: Theme.spacingM
|
|
}
|
|
|
|
ToggleSetting {
|
|
settingKey: "useDank16"
|
|
label: I18n.tr("Use Dank16 Colorscheme")
|
|
description: I18n.tr("Will be applied after the next refresh.")
|
|
defaultValue: useDank16
|
|
}
|
|
}
|
|
}
|
|
}
|