mirror of
https://github.com/AvengeMedia/DankMaterialShell.git
synced 2026-05-13 07:42:46 -04:00
Compare commits
13 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 623eec3689 | |||
| 53a033fe35 | |||
| c490ee24f4 | |||
| cc1e49294e | |||
| e6fa46ae26 | |||
| 35fe774a1b | |||
| 1e6a0f9423 | |||
| cc1877aadb | |||
| f1eb1fa9ba | |||
| bdd01e335d | |||
| 4b7baf82cd | |||
| 15c88ce1d2 | |||
| 8891c388d0 |
@@ -4,13 +4,14 @@ on:
|
||||
workflow_dispatch:
|
||||
inputs:
|
||||
package:
|
||||
description: "Package to update (dms, dms-git, or all)"
|
||||
required: false
|
||||
default: "all"
|
||||
tag_version:
|
||||
description: "Specific tag version for dms stable (e.g., v1.0.2). Leave empty to auto-detect latest release."
|
||||
required: false
|
||||
default: ""
|
||||
description: "Package to update"
|
||||
required: true
|
||||
type: choice
|
||||
options:
|
||||
- dms
|
||||
- dms-git
|
||||
- all
|
||||
default: "dms"
|
||||
rebuild_release:
|
||||
description: "Release number for rebuilds (e.g., 2, 3, 4 to increment spec Release)"
|
||||
required: false
|
||||
@@ -56,8 +57,9 @@ jobs:
|
||||
}
|
||||
|
||||
# Helper function to check dms stable tag
|
||||
# Sets LATEST_TAG variable in parent scope if update needed
|
||||
check_dms_stable() {
|
||||
local LATEST_TAG=$(curl -s https://api.github.com/repos/AvengeMedia/DankMaterialShell/releases/latest | grep '"tag_name"' | sed 's/.*"tag_name": "v\?\([^"]*\)".*/\1/' || echo "")
|
||||
LATEST_TAG=$(curl -s https://api.github.com/repos/AvengeMedia/DankMaterialShell/releases/latest | grep '"tag_name"' | sed 's/.*"tag_name": "\([^"]*\)".*/\1/' || echo "")
|
||||
local OBS_SPEC=$(curl -s -u "$OBS_USERNAME:$OBS_PASSWORD" "https://api.opensuse.org/source/home:AvengeMedia:dms/dms/dms.spec" 2>/dev/null || echo "")
|
||||
local OBS_VERSION=$(echo "$OBS_SPEC" | grep "^Version:" | awk '{print $2}' | xargs || echo "")
|
||||
|
||||
@@ -73,8 +75,8 @@ jobs:
|
||||
# Main logic
|
||||
REBUILD="${{ github.event.inputs.rebuild_release }}"
|
||||
|
||||
if [[ "${{ github.event_name }}" == "push" && "${{ github.ref }}" =~ ^refs/tags/ ]]; then
|
||||
# Tag push - always update stable package
|
||||
if [[ "${{ github.ref }}" =~ ^refs/tags/ ]]; then
|
||||
# Tag selected or pushed - always update stable package
|
||||
echo "packages=dms" >> $GITHUB_OUTPUT
|
||||
VERSION="${GITHUB_REF#refs/tags/}"
|
||||
echo "version=$VERSION" >> $GITHUB_OUTPUT
|
||||
@@ -104,7 +106,12 @@ jobs:
|
||||
# Check each package and build list of those needing updates
|
||||
PACKAGES_TO_UPDATE=()
|
||||
check_dms_git && PACKAGES_TO_UPDATE+=("dms-git")
|
||||
check_dms_stable && PACKAGES_TO_UPDATE+=("dms")
|
||||
if check_dms_stable; then
|
||||
PACKAGES_TO_UPDATE+=("dms")
|
||||
if [[ -n "$LATEST_TAG" ]]; then
|
||||
echo "version=$LATEST_TAG" >> $GITHUB_OUTPUT
|
||||
fi
|
||||
fi
|
||||
|
||||
if [[ ${#PACKAGES_TO_UPDATE[@]} -gt 0 ]]; then
|
||||
echo "packages=${PACKAGES_TO_UPDATE[*]}" >> $GITHUB_OUTPUT
|
||||
@@ -129,6 +136,9 @@ jobs:
|
||||
if check_dms_stable; then
|
||||
echo "packages=$PKG" >> $GITHUB_OUTPUT
|
||||
echo "has_updates=true" >> $GITHUB_OUTPUT
|
||||
if [[ -n "$LATEST_TAG" ]]; then
|
||||
echo "version=$LATEST_TAG" >> $GITHUB_OUTPUT
|
||||
fi
|
||||
else
|
||||
echo "packages=" >> $GITHUB_OUTPUT
|
||||
echo "has_updates=false" >> $GITHUB_OUTPUT
|
||||
@@ -161,12 +171,19 @@ jobs:
|
||||
- name: Determine packages to update
|
||||
id: packages
|
||||
run: |
|
||||
if [[ "${{ github.event_name }}" == "push" && "${{ github.ref }}" =~ ^refs/tags/ ]]; then
|
||||
# Tag push event - use the pushed tag
|
||||
# Check if GITHUB_REF points to a tag (works for both push events and workflow_dispatch with tag selected)
|
||||
if [[ "${{ github.ref }}" =~ ^refs/tags/ ]]; then
|
||||
# Tag selected or pushed - use the tag from GITHUB_REF
|
||||
echo "packages=dms" >> $GITHUB_OUTPUT
|
||||
VERSION="${GITHUB_REF#refs/tags/}"
|
||||
echo "version=$VERSION" >> $GITHUB_OUTPUT
|
||||
echo "Triggered by tag: $VERSION"
|
||||
echo "Using tag from GITHUB_REF: $VERSION"
|
||||
# Check if check-updates already determined a version (from auto-detection)
|
||||
elif [[ -n "${{ needs.check-updates.outputs.version }}" ]]; then
|
||||
# Use version from check-updates job
|
||||
echo "packages=${{ needs.check-updates.outputs.packages }}" >> $GITHUB_OUTPUT
|
||||
echo "version=${{ needs.check-updates.outputs.version }}" >> $GITHUB_OUTPUT
|
||||
echo "Using version from check-updates: ${{ needs.check-updates.outputs.version }}"
|
||||
elif [[ "${{ github.event_name }}" == "schedule" ]]; then
|
||||
# Scheduled run - dms-git only
|
||||
echo "packages=${{ needs.check-updates.outputs.packages }}" >> $GITHUB_OUTPUT
|
||||
@@ -176,22 +193,28 @@ jobs:
|
||||
|
||||
# Determine version for dms stable
|
||||
if [[ "${{ github.event.inputs.package }}" == "dms" ]]; then
|
||||
# For explicit dms selection, require tag_version
|
||||
if [[ -n "${{ github.event.inputs.tag_version }}" ]]; then
|
||||
VERSION="${{ github.event.inputs.tag_version }}"
|
||||
# Use github.ref if tag selected, otherwise auto-detect latest
|
||||
if [[ "${{ github.ref }}" =~ ^refs/tags/ ]]; then
|
||||
VERSION="${GITHUB_REF#refs/tags/}"
|
||||
echo "version=$VERSION" >> $GITHUB_OUTPUT
|
||||
echo "Using specified tag: $VERSION"
|
||||
echo "Using tag from GITHUB_REF: $VERSION"
|
||||
else
|
||||
echo "ERROR: tag_version is required when package=dms"
|
||||
echo "Please specify a tag version (e.g., v1.0.2) or use package=all for auto-detection"
|
||||
exit 1
|
||||
# Auto-detect latest release for dms
|
||||
LATEST_TAG=$(curl -s https://api.github.com/repos/AvengeMedia/DankMaterialShell/releases/latest | grep '"tag_name"' | sed 's/.*"tag_name": "\([^"]*\)".*/\1/' || echo "")
|
||||
if [[ -n "$LATEST_TAG" ]]; then
|
||||
echo "version=$LATEST_TAG" >> $GITHUB_OUTPUT
|
||||
echo "Auto-detected latest release: $LATEST_TAG"
|
||||
else
|
||||
echo "ERROR: Could not auto-detect latest release"
|
||||
exit 1
|
||||
fi
|
||||
fi
|
||||
elif [[ "${{ github.event.inputs.package }}" == "all" ]]; then
|
||||
# For "all", auto-detect if tag_version not specified
|
||||
if [[ -n "${{ github.event.inputs.tag_version }}" ]]; then
|
||||
VERSION="${{ github.event.inputs.tag_version }}"
|
||||
# Use github.ref if tag selected, otherwise auto-detect latest
|
||||
if [[ "${{ github.ref }}" =~ ^refs/tags/ ]]; then
|
||||
VERSION="${GITHUB_REF#refs/tags/}"
|
||||
echo "version=$VERSION" >> $GITHUB_OUTPUT
|
||||
echo "Using specified tag: $VERSION"
|
||||
echo "Using tag from GITHUB_REF: $VERSION"
|
||||
else
|
||||
# Auto-detect latest release for "all"
|
||||
LATEST_TAG=$(curl -s https://api.github.com/repos/AvengeMedia/DankMaterialShell/releases/latest | grep '"tag_name"' | sed 's/.*"tag_name": "\([^"]*\)".*/\1/' || echo "")
|
||||
@@ -206,7 +229,7 @@ jobs:
|
||||
fi
|
||||
|
||||
# Use filtered packages from check-updates when package="all" and no rebuild/tag specified
|
||||
if [[ "${{ github.event.inputs.package }}" == "all" ]] && [[ -z "${{ github.event.inputs.rebuild_release }}" ]] && [[ -z "${{ github.event.inputs.tag_version }}" ]]; then
|
||||
if [[ "${{ github.event.inputs.package }}" == "all" ]] && [[ -z "${{ github.event.inputs.rebuild_release }}" ]] && [[ ! "${{ github.ref }}" =~ ^refs/tags/ ]]; then
|
||||
echo "packages=${{ needs.check-updates.outputs.packages }}" >> $GITHUB_OUTPUT
|
||||
echo "Manual trigger: all (filtered to: ${{ needs.check-updates.outputs.packages }})"
|
||||
else
|
||||
@@ -215,6 +238,9 @@ jobs:
|
||||
fi
|
||||
else
|
||||
echo "packages=${{ needs.check-updates.outputs.packages }}" >> $GITHUB_OUTPUT
|
||||
if [[ -n "${{ needs.check-updates.outputs.version }}" ]]; then
|
||||
echo "version=${{ needs.check-updates.outputs.version }}" >> $GITHUB_OUTPUT
|
||||
fi
|
||||
fi
|
||||
|
||||
- name: Update dms-git spec version
|
||||
|
||||
+1
-1
@@ -1 +1 @@
|
||||
Spicy Miso
|
||||
Saffron Bloom
|
||||
|
||||
@@ -145,6 +145,7 @@ Singleton {
|
||||
property bool controlCenterShowMicPercent: true
|
||||
property bool controlCenterShowBatteryIcon: false
|
||||
property bool controlCenterShowPrinterIcon: false
|
||||
property bool controlCenterShowScreenSharingIcon: true
|
||||
property bool showPrivacyButton: true
|
||||
property bool privacyShowMicIcon: false
|
||||
property bool privacyShowCameraIcon: false
|
||||
|
||||
@@ -904,7 +904,7 @@ Singleton {
|
||||
if (typeof SettingsData !== "undefined") {
|
||||
const skipTemplates = [];
|
||||
if (!SettingsData.runDmsMatugenTemplates) {
|
||||
skipTemplates.push("gtk", "neovim", "niri", "qt5ct", "qt6ct", "firefox", "pywalfox", "zenbrowser", "vesktop", "equibop", "ghostty", "kitty", "foot", "alacritty", "wezterm", "dgop", "kcolorscheme", "vscode");
|
||||
skipTemplates.push("gtk", "nvim", "niri", "qt5ct", "qt6ct", "firefox", "pywalfox", "zenbrowser", "vesktop", "equibop", "ghostty", "kitty", "foot", "alacritty", "wezterm", "dgop", "kcolorscheme", "vscode");
|
||||
} else {
|
||||
if (!SettingsData.matugenTemplateGtk)
|
||||
skipTemplates.push("gtk");
|
||||
|
||||
@@ -28,7 +28,8 @@ Singleton {
|
||||
showMicIcon: false,
|
||||
showMicPercent: true,
|
||||
showBatteryIcon: false,
|
||||
showPrinterIcon: false
|
||||
showPrinterIcon: false,
|
||||
showScreenSharingIcon: true
|
||||
};
|
||||
leftModel.append(dummy);
|
||||
centerModel.append(dummy);
|
||||
@@ -84,6 +85,8 @@ Singleton {
|
||||
item.showBatteryIcon = order[i].showBatteryIcon;
|
||||
if (isObj && order[i].showPrinterIcon !== undefined)
|
||||
item.showPrinterIcon = order[i].showPrinterIcon;
|
||||
if (isObj && order[i].showScreenSharingIcon !== undefined)
|
||||
item.showScreenSharingIcon = order[i].showScreenSharingIcon;
|
||||
|
||||
model.append(item);
|
||||
}
|
||||
|
||||
@@ -70,6 +70,7 @@ var SPEC = {
|
||||
controlCenterShowMicPercent: { def: false },
|
||||
controlCenterShowBatteryIcon: { def: false },
|
||||
controlCenterShowPrinterIcon: { def: false },
|
||||
controlCenterShowScreenSharingIcon: { def: true },
|
||||
|
||||
showPrivacyButton: { def: true },
|
||||
privacyShowMicIcon: { def: false },
|
||||
|
||||
@@ -132,8 +132,11 @@ Item {
|
||||
case "media":
|
||||
root.dankDashPopoutLoader.item.currentTabIndex = 1;
|
||||
break;
|
||||
case "wallpaper":
|
||||
root.dankDashPopoutLoader.item.currentTabIndex = 2;
|
||||
break;
|
||||
case "weather":
|
||||
root.dankDashPopoutLoader.item.currentTabIndex = SettingsData.weatherEnabled ? 2 : 0;
|
||||
root.dankDashPopoutLoader.item.currentTabIndex = SettingsData.weatherEnabled ? 3 : 0;
|
||||
break;
|
||||
default:
|
||||
root.dankDashPopoutLoader.item.currentTabIndex = 0;
|
||||
|
||||
@@ -24,6 +24,7 @@ BasePill {
|
||||
property bool showMicPercent: widgetData?.showMicPercent !== undefined ? widgetData.showMicPercent : SettingsData.controlCenterShowMicPercent
|
||||
property bool showBatteryIcon: widgetData?.showBatteryIcon !== undefined ? widgetData.showBatteryIcon : SettingsData.controlCenterShowBatteryIcon
|
||||
property bool showPrinterIcon: widgetData?.showPrinterIcon !== undefined ? widgetData.showPrinterIcon : SettingsData.controlCenterShowPrinterIcon
|
||||
property bool showScreenSharingIcon: widgetData?.showScreenSharingIcon !== undefined ? widgetData.showScreenSharingIcon : SettingsData.controlCenterShowScreenSharingIcon
|
||||
property real touchpadThreshold: 100
|
||||
property real micAccumulator: 0
|
||||
property real volumeAccumulator: 0
|
||||
@@ -213,7 +214,7 @@ BasePill {
|
||||
}
|
||||
|
||||
function hasNoVisibleIcons() {
|
||||
return !root.showNetworkIcon && !root.showBluetoothIcon && !root.showAudioIcon && !root.showVpnIcon && !root.showBrightnessIcon && !root.showMicIcon && !root.showBatteryIcon && !root.showPrinterIcon;
|
||||
return !root.showNetworkIcon && !root.showBluetoothIcon && !root.showAudioIcon && !root.showVpnIcon && !root.showBrightnessIcon && !root.showMicIcon && !root.showBatteryIcon && !root.showPrinterIcon && !root.showScreenSharingIcon;
|
||||
}
|
||||
|
||||
content: Component {
|
||||
@@ -227,6 +228,14 @@ BasePill {
|
||||
anchors.centerIn: parent
|
||||
spacing: Theme.spacingXS
|
||||
|
||||
DankIcon {
|
||||
name: "screen_record"
|
||||
size: Theme.barIconSize(root.barThickness, -4)
|
||||
color: NiriService.hasActiveCast ? Theme.primary : Theme.surfaceText
|
||||
anchors.horizontalCenter: parent.horizontalCenter
|
||||
visible: root.showScreenSharingIcon && NiriService.hasCasts
|
||||
}
|
||||
|
||||
DankIcon {
|
||||
name: root.getNetworkIconName()
|
||||
size: Theme.barIconSize(root.barThickness, -4)
|
||||
@@ -402,6 +411,14 @@ BasePill {
|
||||
anchors.centerIn: parent
|
||||
spacing: Theme.spacingXS
|
||||
|
||||
DankIcon {
|
||||
name: "screen_record"
|
||||
size: Theme.barIconSize(root.barThickness, -4)
|
||||
color: NiriService.hasActiveCast ? Theme.primary : Theme.surfaceText
|
||||
anchors.verticalCenter: parent.verticalCenter
|
||||
visible: root.showScreenSharingIcon && NiriService.hasCasts
|
||||
}
|
||||
|
||||
DankIcon {
|
||||
id: networkIcon
|
||||
name: root.getNetworkIconName()
|
||||
|
||||
@@ -327,11 +327,12 @@ Item {
|
||||
clip: false
|
||||
visible: !_noneAvailable && (!showNoPlayerNow)
|
||||
ColumnLayout {
|
||||
x: 72
|
||||
y: 20
|
||||
width: 484
|
||||
height: 370
|
||||
spacing: Theme.spacingXS
|
||||
anchors.top: parent.top
|
||||
anchors.topMargin: 20
|
||||
anchors.horizontalCenter: parent.horizontalCenter
|
||||
|
||||
Item {
|
||||
width: parent.width
|
||||
|
||||
@@ -1406,6 +1406,14 @@ Item {
|
||||
anchors.verticalCenter: parent.verticalCenter
|
||||
visible: NetworkService.networkAvailable || (BluetoothService.available && BluetoothService.enabled) || (AudioService.sink && AudioService.sink.audio)
|
||||
|
||||
DankIcon {
|
||||
name: "screen_record"
|
||||
size: Theme.iconSize - 2
|
||||
color: NiriService.hasActiveCast ? "white" : Qt.rgba(255, 255, 255, 0.5)
|
||||
anchors.verticalCenter: parent.verticalCenter
|
||||
visible: NiriService.hasCasts
|
||||
}
|
||||
|
||||
DankIcon {
|
||||
name: {
|
||||
if (NetworkService.wifiToggling)
|
||||
|
||||
@@ -383,6 +383,7 @@ Item {
|
||||
widgetObj.showMicPercent = SettingsData.controlCenterShowMicPercent;
|
||||
widgetObj.showBatteryIcon = SettingsData.controlCenterShowBatteryIcon;
|
||||
widgetObj.showPrinterIcon = SettingsData.controlCenterShowPrinterIcon;
|
||||
widgetObj.showScreenSharingIcon = SettingsData.controlCenterShowScreenSharingIcon;
|
||||
}
|
||||
if (widgetId === "diskUsage")
|
||||
widgetObj.mountPath = "/";
|
||||
@@ -443,6 +444,7 @@ Item {
|
||||
newWidget.showMicPercent = widget.showMicPercent ?? SettingsData.controlCenterShowMicPercent;
|
||||
newWidget.showBatteryIcon = widget.showBatteryIcon ?? SettingsData.controlCenterShowBatteryIcon;
|
||||
newWidget.showPrinterIcon = widget.showPrinterIcon ?? SettingsData.controlCenterShowPrinterIcon;
|
||||
newWidget.showScreenSharingIcon = widget.showScreenSharingIcon ?? SettingsData.controlCenterShowScreenSharingIcon;
|
||||
}
|
||||
widgets[i] = newWidget;
|
||||
break;
|
||||
@@ -499,6 +501,7 @@ Item {
|
||||
newWidget.showMicPercent = widget.showMicPercent ?? SettingsData.controlCenterShowMicPercent;
|
||||
newWidget.showBatteryIcon = widget.showBatteryIcon ?? SettingsData.controlCenterShowBatteryIcon;
|
||||
newWidget.showPrinterIcon = widget.showPrinterIcon ?? SettingsData.controlCenterShowPrinterIcon;
|
||||
newWidget.showScreenSharingIcon = widget.showScreenSharingIcon ?? SettingsData.controlCenterShowScreenSharingIcon;
|
||||
}
|
||||
widgets[widgetIndex] = newWidget;
|
||||
setWidgetsForSection(sectionId, widgets);
|
||||
@@ -577,6 +580,7 @@ Item {
|
||||
newWidget.showMicPercent = widget.showMicPercent ?? SettingsData.controlCenterShowMicPercent;
|
||||
newWidget.showBatteryIcon = widget.showBatteryIcon ?? SettingsData.controlCenterShowBatteryIcon;
|
||||
newWidget.showPrinterIcon = widget.showPrinterIcon ?? SettingsData.controlCenterShowPrinterIcon;
|
||||
newWidget.showScreenSharingIcon = widget.showScreenSharingIcon ?? SettingsData.controlCenterShowScreenSharingIcon;
|
||||
}
|
||||
widgets[widgetIndex] = newWidget;
|
||||
setWidgetsForSection(sectionId, widgets);
|
||||
@@ -608,7 +612,8 @@ Item {
|
||||
"showMicIcon": widget.showMicIcon ?? SettingsData.controlCenterShowMicIcon,
|
||||
"showMicPercent": widget.showMicPercent ?? SettingsData.controlCenterShowMicPercent,
|
||||
"showBatteryIcon": widget.showBatteryIcon ?? SettingsData.controlCenterShowBatteryIcon,
|
||||
"showPrinterIcon": widget.showPrinterIcon ?? SettingsData.controlCenterShowPrinterIcon
|
||||
"showPrinterIcon": widget.showPrinterIcon ?? SettingsData.controlCenterShowPrinterIcon,
|
||||
"showScreenSharingIcon": widget.showScreenSharingIcon ?? SettingsData.controlCenterShowScreenSharingIcon
|
||||
};
|
||||
newWidget[settingName] = value;
|
||||
|
||||
@@ -675,6 +680,7 @@ Item {
|
||||
newWidget.showMicPercent = widget.showMicPercent ?? SettingsData.controlCenterShowMicPercent;
|
||||
newWidget.showBatteryIcon = widget.showBatteryIcon ?? SettingsData.controlCenterShowBatteryIcon;
|
||||
newWidget.showPrinterIcon = widget.showPrinterIcon ?? SettingsData.controlCenterShowPrinterIcon;
|
||||
newWidget.showScreenSharingIcon = widget.showScreenSharingIcon ?? SettingsData.controlCenterShowScreenSharingIcon;
|
||||
}
|
||||
widgets[widgetIndex] = newWidget;
|
||||
setWidgetsForSection(sectionId, widgets);
|
||||
@@ -735,6 +741,7 @@ Item {
|
||||
newWidget.showMicPercent = widget.showMicPercent ?? SettingsData.controlCenterShowMicPercent;
|
||||
newWidget.showBatteryIcon = widget.showBatteryIcon ?? SettingsData.controlCenterShowBatteryIcon;
|
||||
newWidget.showPrinterIcon = widget.showPrinterIcon ?? SettingsData.controlCenterShowPrinterIcon;
|
||||
newWidget.showScreenSharingIcon = widget.showScreenSharingIcon ?? SettingsData.controlCenterShowScreenSharingIcon;
|
||||
}
|
||||
widgets[widgetIndex] = newWidget;
|
||||
setWidgetsForSection(sectionId, widgets);
|
||||
@@ -795,6 +802,7 @@ Item {
|
||||
newWidget.showMicPercent = widget.showMicPercent ?? SettingsData.controlCenterShowMicPercent;
|
||||
newWidget.showBatteryIcon = widget.showBatteryIcon ?? SettingsData.controlCenterShowBatteryIcon;
|
||||
newWidget.showPrinterIcon = widget.showPrinterIcon ?? SettingsData.controlCenterShowPrinterIcon;
|
||||
newWidget.showScreenSharingIcon = widget.showScreenSharingIcon ?? SettingsData.controlCenterShowScreenSharingIcon;
|
||||
}
|
||||
widgets[i] = newWidget;
|
||||
widget = newWidget;
|
||||
@@ -867,6 +875,8 @@ Item {
|
||||
item.showBatteryIcon = widget.showBatteryIcon;
|
||||
if (widget.showPrinterIcon !== undefined)
|
||||
item.showPrinterIcon = widget.showPrinterIcon;
|
||||
if (widget.showScreenSharingIcon !== undefined)
|
||||
item.showScreenSharingIcon = widget.showScreenSharingIcon;
|
||||
if (widget.minimumWidth !== undefined)
|
||||
item.minimumWidth = widget.minimumWidth;
|
||||
if (widget.showSwap !== undefined)
|
||||
|
||||
@@ -875,6 +875,11 @@ Column {
|
||||
icon: "print",
|
||||
label: I18n.tr("Printer"),
|
||||
setting: "showPrinterIcon"
|
||||
},
|
||||
{
|
||||
icon: "screen_record",
|
||||
label: I18n.tr("Screen Sharing"),
|
||||
setting: "showScreenSharingIcon"
|
||||
}
|
||||
]
|
||||
|
||||
@@ -907,6 +912,8 @@ Column {
|
||||
return wd?.showBatteryIcon ?? SettingsData.controlCenterShowBatteryIcon;
|
||||
case "showPrinterIcon":
|
||||
return wd?.showPrinterIcon ?? SettingsData.controlCenterShowPrinterIcon;
|
||||
case "showScreenSharingIcon":
|
||||
return wd?.showScreenSharingIcon ?? SettingsData.controlCenterShowScreenSharingIcon;
|
||||
default:
|
||||
return false;
|
||||
}
|
||||
|
||||
@@ -11,7 +11,7 @@ Singleton {
|
||||
id: root
|
||||
|
||||
readonly property string currentVersion: "1.2"
|
||||
readonly property bool changelogEnabled: true
|
||||
readonly property bool changelogEnabled: false
|
||||
|
||||
readonly property string configDir: Paths.strip(StandardPaths.writableLocation(StandardPaths.ConfigLocation)) + "/DankMaterialShell"
|
||||
readonly property string changelogMarkerPath: configDir + "/.changelog-" + currentVersion
|
||||
|
||||
@@ -27,6 +27,10 @@ Singleton {
|
||||
|
||||
property bool inOverview: false
|
||||
|
||||
property var casts: []
|
||||
property bool hasCasts: casts.length > 0
|
||||
property bool hasActiveCast: casts.some(c => c.is_active)
|
||||
|
||||
property int currentKeyboardLayoutIndex: 0
|
||||
property var keyboardLayoutNames: []
|
||||
|
||||
@@ -356,6 +360,15 @@ Singleton {
|
||||
case 'ScreenshotCaptured':
|
||||
handleScreenshotCaptured(event.ScreenshotCaptured);
|
||||
break;
|
||||
case 'CastsChanged':
|
||||
handleCastsChanged(event.CastsChanged);
|
||||
break;
|
||||
case 'CastStartedOrChanged':
|
||||
handleCastStartedOrChanged(event.CastStartedOrChanged);
|
||||
break;
|
||||
case 'CastStopped':
|
||||
handleCastStopped(event.CastStopped);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -649,6 +662,28 @@ Singleton {
|
||||
}
|
||||
}
|
||||
|
||||
function handleCastsChanged(data) {
|
||||
casts = data.casts || [];
|
||||
}
|
||||
|
||||
function handleCastStartedOrChanged(data) {
|
||||
if (!data.cast)
|
||||
return;
|
||||
const cast = data.cast;
|
||||
const existingIndex = casts.findIndex(c => c.stream_id === cast.stream_id);
|
||||
if (existingIndex >= 0) {
|
||||
const updatedCasts = [...casts];
|
||||
updatedCasts[existingIndex] = cast;
|
||||
casts = updatedCasts;
|
||||
} else {
|
||||
casts = [...casts, cast];
|
||||
}
|
||||
}
|
||||
|
||||
function handleCastStopped(data) {
|
||||
casts = casts.filter(c => c.stream_id !== data.stream_id);
|
||||
}
|
||||
|
||||
function updateCurrentOutputWorkspaces() {
|
||||
if (!currentOutput) {
|
||||
currentOutputWorkspaces = allWorkspaces;
|
||||
|
||||
+1
-1
@@ -1 +1 @@
|
||||
v1.2.2
|
||||
v1.4-unstable
|
||||
|
||||
+182
-182
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -240,7 +240,7 @@
|
||||
"All displays": "Tutti gli schermi"
|
||||
},
|
||||
"Allow clicks to pass through the widget": {
|
||||
"Allow clicks to pass through the widget": ""
|
||||
"Allow clicks to pass through the widget": "Consenti il passaggio dei clic attraverso il widget"
|
||||
},
|
||||
"Alt+←/Backspace: Back • F1/I: File Info • F10: Help • Esc: Close": {
|
||||
"Alt+←/Backspace: Back • F1/I: File Info • F10: Help • Esc: Close": "Alt+←/Backspace: Indietro • F1/I: File Info • F10: Aiuto • Esc: Chiudi"
|
||||
@@ -279,7 +279,7 @@
|
||||
"Anonymous Identity (optional)": "Identità anonima (facoltativa)"
|
||||
},
|
||||
"App ID Substitutions": {
|
||||
"App ID Substitutions": ""
|
||||
"App ID Substitutions": "Sostituzioni App ID"
|
||||
},
|
||||
"App Launcher": {
|
||||
"App Launcher": "App Launcher"
|
||||
@@ -729,7 +729,7 @@
|
||||
"Click Import to add a .ovpn or .conf": "Clicca su Importa per aggiungere un file .ovpn o .conf"
|
||||
},
|
||||
"Click Through": {
|
||||
"Click Through": ""
|
||||
"Click Through": "Clic passanti"
|
||||
},
|
||||
"Click any shortcut to edit. Changes save to %1": {
|
||||
"Click any shortcut to edit. Changes save to %1": "Clicca su qualsiasi scorciatoia per modificare. Le modifiche vengono salvate in %1"
|
||||
@@ -1797,7 +1797,7 @@
|
||||
"Grid Columns": "Colonne Griglia"
|
||||
},
|
||||
"Group": {
|
||||
"Group": ""
|
||||
"Group": "Gruppo"
|
||||
},
|
||||
"Group Workspace Apps": {
|
||||
"Group Workspace Apps": "Raggruppa App per Spazio di Lavoro"
|
||||
@@ -1809,13 +1809,13 @@
|
||||
"Group multiple windows of the same app together with a window count indicator": "Raggruppa molteplici finestre della stessa app con un indicatore del numero di finestre"
|
||||
},
|
||||
"Group removed": {
|
||||
"Group removed": ""
|
||||
"Group removed": "Gruppo rimosso"
|
||||
},
|
||||
"Group repeated application icons in unfocused workspaces": {
|
||||
"Group repeated application icons in unfocused workspaces": "Raggruppa le icone delle applicazioni duplicate negli spazi di lavoro non attivi"
|
||||
},
|
||||
"Groups": {
|
||||
"Groups": ""
|
||||
"Groups": "Gruppi"
|
||||
},
|
||||
"HDR (EDID)": {
|
||||
"HDR (EDID)": "HDR (EDID)"
|
||||
@@ -2214,7 +2214,7 @@
|
||||
"Manual Show/Hide": "Mostra/Nascondi Manuale"
|
||||
},
|
||||
"Map window class names to icon names for proper icon display": {
|
||||
"Map window class names to icon names for proper icon display": ""
|
||||
"Map window class names to icon names for proper icon display": "Associa i nomi delle classi delle finestre ai nomi delle icone per una corretta visualizzazione"
|
||||
},
|
||||
"Margin": {
|
||||
"Margin": "Margini"
|
||||
@@ -2439,7 +2439,7 @@
|
||||
"New York, NY": "New York, NY"
|
||||
},
|
||||
"New group name...": {
|
||||
"New group name...": ""
|
||||
"New group name...": "Nome del nuovo gruppo..."
|
||||
},
|
||||
"Next Transition": {
|
||||
"Next Transition": "Prossima Transizione"
|
||||
@@ -2673,7 +2673,7 @@
|
||||
"Options": "Opzioni"
|
||||
},
|
||||
"Organize widgets into collapsible groups": {
|
||||
"Organize widgets into collapsible groups": ""
|
||||
"Organize widgets into collapsible groups": "Organizza i widget in gruppi comprimibili"
|
||||
},
|
||||
"Other": {
|
||||
"Other": "Altro"
|
||||
@@ -2748,7 +2748,7 @@
|
||||
"Password": "Password"
|
||||
},
|
||||
"Pattern": {
|
||||
"Pattern": ""
|
||||
"Pattern": "Pattern"
|
||||
},
|
||||
"Pause": {
|
||||
"Pause": "Pausa"
|
||||
@@ -3012,7 +3012,7 @@
|
||||
"Repeat": "Ripetizione"
|
||||
},
|
||||
"Replacement": {
|
||||
"Replacement": ""
|
||||
"Replacement": "Sostituzione"
|
||||
},
|
||||
"Report": {
|
||||
"Report": "Riepilogo"
|
||||
@@ -3648,7 +3648,7 @@
|
||||
"Sync Mode with Portal": "Modalità Sync con Portale"
|
||||
},
|
||||
"Sync Position Across Screens": {
|
||||
"Sync Position Across Screens": ""
|
||||
"Sync Position Across Screens": "Sincronizza la posizione tra gli schermi"
|
||||
},
|
||||
"Sync dark mode with settings portals for system-wide theme hints": {
|
||||
"Sync dark mode with settings portals for system-wide theme hints": "Sincronizza tema scuro con impostazioni di sistema"
|
||||
@@ -3876,7 +3876,7 @@
|
||||
"Unfocused Color": "Colore Inattivo"
|
||||
},
|
||||
"Ungrouped": {
|
||||
"Ungrouped": ""
|
||||
"Ungrouped": "Non Raggruppato"
|
||||
},
|
||||
"Uninstall Plugin": {
|
||||
"Uninstall Plugin": "Disinstalla Plugin"
|
||||
@@ -3978,13 +3978,13 @@
|
||||
"Use light theme instead of dark theme": "Usa tema chiaro invece del tema scuro"
|
||||
},
|
||||
"Use smaller notification cards": {
|
||||
"Use smaller notification cards": ""
|
||||
"Use smaller notification cards": "Usa schede di notifica più piccole"
|
||||
},
|
||||
"Use sound theme from system settings": {
|
||||
"Use sound theme from system settings": "Usa tema di suoni dalle impostazioni di sistema"
|
||||
},
|
||||
"Use the same position and size on all displays": {
|
||||
"Use the same position and size on all displays": ""
|
||||
"Use the same position and size on all displays": "Usa la stessa posizione e dimensione su tutti gli schermi"
|
||||
},
|
||||
"Use trigger prefix to activate": {
|
||||
"Use trigger prefix to activate": "Usa il prefisso attivatore per attivare"
|
||||
@@ -4553,7 +4553,7 @@
|
||||
"No wallpaper selected": "Nessuno sfondo selezionato"
|
||||
},
|
||||
"notification center tab": {
|
||||
"Current": "Attuale",
|
||||
"Current": "Attuali",
|
||||
"History": "Cronologia"
|
||||
},
|
||||
"notification history filter": {
|
||||
|
||||
@@ -240,7 +240,7 @@
|
||||
"All displays": "所有显示器"
|
||||
},
|
||||
"Allow clicks to pass through the widget": {
|
||||
"Allow clicks to pass through the widget": ""
|
||||
"Allow clicks to pass through the widget": "允许鼠标穿透部件"
|
||||
},
|
||||
"Alt+←/Backspace: Back • F1/I: File Info • F10: Help • Esc: Close": {
|
||||
"Alt+←/Backspace: Back • F1/I: File Info • F10: Help • Esc: Close": "Alt+←/退格: 返回 • F1/I: 文件信息 • F10: 帮助 • Esc: 关闭"
|
||||
@@ -279,7 +279,7 @@
|
||||
"Anonymous Identity (optional)": "匿名身份(可选)"
|
||||
},
|
||||
"App ID Substitutions": {
|
||||
"App ID Substitutions": ""
|
||||
"App ID Substitutions": "应用ID替换"
|
||||
},
|
||||
"App Launcher": {
|
||||
"App Launcher": "启动器"
|
||||
@@ -729,7 +729,7 @@
|
||||
"Click Import to add a .ovpn or .conf": "点击导入添加 .ovpn 或 .conf 文件"
|
||||
},
|
||||
"Click Through": {
|
||||
"Click Through": ""
|
||||
"Click Through": "鼠标穿透"
|
||||
},
|
||||
"Click any shortcut to edit. Changes save to %1": {
|
||||
"Click any shortcut to edit. Changes save to %1": "点击任意快捷方式以编辑。更改将保存至%1。"
|
||||
@@ -1797,7 +1797,7 @@
|
||||
"Grid Columns": "网格列"
|
||||
},
|
||||
"Group": {
|
||||
"Group": ""
|
||||
"Group": "分组"
|
||||
},
|
||||
"Group Workspace Apps": {
|
||||
"Group Workspace Apps": "分组工作区应用"
|
||||
@@ -1809,13 +1809,13 @@
|
||||
"Group multiple windows of the same app together with a window count indicator": "将同一应用的多个窗口合并显示,并标注窗口数量"
|
||||
},
|
||||
"Group removed": {
|
||||
"Group removed": ""
|
||||
"Group removed": "分组已移除"
|
||||
},
|
||||
"Group repeated application icons in unfocused workspaces": {
|
||||
"Group repeated application icons in unfocused workspaces": "在不聚焦的工作区中将重复应用图标分组"
|
||||
},
|
||||
"Groups": {
|
||||
"Groups": ""
|
||||
"Groups": "分组"
|
||||
},
|
||||
"HDR (EDID)": {
|
||||
"HDR (EDID)": "HDR(EDID)"
|
||||
@@ -2214,7 +2214,7 @@
|
||||
"Manual Show/Hide": "手动显示/隐藏"
|
||||
},
|
||||
"Map window class names to icon names for proper icon display": {
|
||||
"Map window class names to icon names for proper icon display": ""
|
||||
"Map window class names to icon names for proper icon display": "将窗口类名称映射到图标名称以实现正确的图标显示"
|
||||
},
|
||||
"Margin": {
|
||||
"Margin": "边距"
|
||||
@@ -2439,7 +2439,7 @@
|
||||
"New York, NY": "纽约,美国纽约州"
|
||||
},
|
||||
"New group name...": {
|
||||
"New group name...": ""
|
||||
"New group name...": "新分组名..."
|
||||
},
|
||||
"Next Transition": {
|
||||
"Next Transition": "下一过渡"
|
||||
@@ -2673,7 +2673,7 @@
|
||||
"Options": "选项"
|
||||
},
|
||||
"Organize widgets into collapsible groups": {
|
||||
"Organize widgets into collapsible groups": ""
|
||||
"Organize widgets into collapsible groups": "将部件组织成可折叠分组"
|
||||
},
|
||||
"Other": {
|
||||
"Other": "其他"
|
||||
@@ -2748,7 +2748,7 @@
|
||||
"Password": "密码"
|
||||
},
|
||||
"Pattern": {
|
||||
"Pattern": ""
|
||||
"Pattern": "模式"
|
||||
},
|
||||
"Pause": {
|
||||
"Pause": "暂停"
|
||||
@@ -3012,7 +3012,7 @@
|
||||
"Repeat": "重复"
|
||||
},
|
||||
"Replacement": {
|
||||
"Replacement": ""
|
||||
"Replacement": "替换"
|
||||
},
|
||||
"Report": {
|
||||
"Report": "报告"
|
||||
@@ -3648,7 +3648,7 @@
|
||||
"Sync Mode with Portal": "同步系统深色模式"
|
||||
},
|
||||
"Sync Position Across Screens": {
|
||||
"Sync Position Across Screens": ""
|
||||
"Sync Position Across Screens": "在显示器间同步位置"
|
||||
},
|
||||
"Sync dark mode with settings portals for system-wide theme hints": {
|
||||
"Sync dark mode with settings portals for system-wide theme hints": "随系统设置开启深色模式,以适配全局主题"
|
||||
@@ -3876,7 +3876,7 @@
|
||||
"Unfocused Color": "未聚焦颜色"
|
||||
},
|
||||
"Ungrouped": {
|
||||
"Ungrouped": ""
|
||||
"Ungrouped": "已解除分组"
|
||||
},
|
||||
"Uninstall Plugin": {
|
||||
"Uninstall Plugin": "卸载插件"
|
||||
@@ -3978,13 +3978,13 @@
|
||||
"Use light theme instead of dark theme": "使用浅色主题替代深色主题"
|
||||
},
|
||||
"Use smaller notification cards": {
|
||||
"Use smaller notification cards": ""
|
||||
"Use smaller notification cards": "使用更小的通知卡"
|
||||
},
|
||||
"Use sound theme from system settings": {
|
||||
"Use sound theme from system settings": "使用系统设置中的声音主题"
|
||||
},
|
||||
"Use the same position and size on all displays": {
|
||||
"Use the same position and size on all displays": ""
|
||||
"Use the same position and size on all displays": "在所有显示器上使用同样的位置与大小"
|
||||
},
|
||||
"Use trigger prefix to activate": {
|
||||
"Use trigger prefix to activate": "使用触发前缀以激活"
|
||||
|
||||
Reference in New Issue
Block a user