diff --git a/.config/menus/applications-merged/wine-Programs-LiveWall.menu b/.config/menus/applications-merged/wine-Programs-LiveWall.menu
new file mode 100644
index 0000000..13f0115
--- /dev/null
+++ b/.config/menus/applications-merged/wine-Programs-LiveWall.menu
@@ -0,0 +1,16 @@
+
+
diff --git a/.dotnet/.workloadAdvertisingManifestSentinel8.0.400 b/.dotnet/.workloadAdvertisingManifestSentinel8.0.400
new file mode 100644
index 0000000..e69de29
diff --git a/.dotnet/.workloadAdvertisingUpdates8.0.400 b/.dotnet/.workloadAdvertisingUpdates8.0.400
new file mode 100644
index 0000000..0637a08
--- /dev/null
+++ b/.dotnet/.workloadAdvertisingUpdates8.0.400
@@ -0,0 +1 @@
+[]
\ No newline at end of file
diff --git a/.dotnet/8.0.427.aspNetCertificateSentinel b/.dotnet/8.0.427.aspNetCertificateSentinel
new file mode 100644
index 0000000..e69de29
diff --git a/.dotnet/8.0.427.dotnetFirstUseSentinel b/.dotnet/8.0.427.dotnetFirstUseSentinel
new file mode 100644
index 0000000..e69de29
diff --git a/.dotnet/8.0.427.toolpath.sentinel b/.dotnet/8.0.427.toolpath.sentinel
new file mode 100644
index 0000000..e69de29
diff --git a/.dotnet/corefx/Runtime/SharedMemory/.dotnet/shm/global/V6vJPHVvg+Sp3Qh189_2qXHgPkI4qqe8oyDQZN+k+MM.server b/.dotnet/corefx/Runtime/SharedMemory/.dotnet/shm/global/V6vJPHVvg+Sp3Qh189_2qXHgPkI4qqe8oyDQZN+k+MM.server
new file mode 100644
index 0000000..b9ff8df
Binary files /dev/null and b/.dotnet/corefx/Runtime/SharedMemory/.dotnet/shm/global/V6vJPHVvg+Sp3Qh189_2qXHgPkI4qqe8oyDQZN+k+MM.server differ
diff --git a/.dotnet/corefx/cryptography/crls/75d1b2ed.de05bb98.crl b/.dotnet/corefx/cryptography/crls/75d1b2ed.de05bb98.crl
new file mode 100644
index 0000000..805aa25
--- /dev/null
+++ b/.dotnet/corefx/cryptography/crls/75d1b2ed.de05bb98.crl
@@ -0,0 +1,18 @@
+-----BEGIN X509 CRL-----
+MIIC3TCBxgIBATANBgkqhkiG9w0BAQwFADBiMQswCQYDVQQGEwJVUzEVMBMGA1UE
+ChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cuZGlnaWNlcnQuY29tMSEwHwYD
+VQQDExhEaWdpQ2VydCBUcnVzdGVkIFJvb3QgRzQXDTI2MTAzMDE3NDIzNVoXDTI2
+MTEyMDE3NDIzNVqgMDAuMB8GA1UdIwQYMBaAFOzX44LScV1kTN8uZz/nupiuHA9P
+MAsGA1UdFAQEAgIDCTANBgkqhkiG9w0BAQwFAAOCAgEAuyJwNbNRv3YXzowM4Pyb
+NM3mYGWmADl/YbLkMc3yJ5fI/9zLkR3QtHr570Gh6YDuciCuUs/U4UbQDrvNm/3j
+q618MXyBpRnHgsNZZ4+snIzUUlmX9LVk47/NMMNcKyOHAfcJnz/5ZrDltSmL5DuB
+MAJn5ufIVJwwdZjYEv1fdPKaJmDF9Pbe+qp8rUdcpNgaqkHToDROixgZ4EB8aEes
+5qjDnvFDt6Xd/mcY59NoAjnocv2RdN+PmelO5B48aiahf5XMceKAAPDhCazg+DZo
+Yi7X6coMS8ahQLPjuqn6lIr617edeUOsyQ+Bsh9PBmMstTDYGr0UiCLHIcATBdC4
+RSqjKgf8QUgJu1cvo3tikYzcQANMR6njJ/KEWR8Nr978JSpFfYcmsrfUm6I1Eytn
+bKP3woWntBJTVX3PFrq9NMnFQXLfKALhIVIRzRoc849j7L8eNqKnpcKNqc0mHBSd
+KsPOT8TLxe6opfRybG2yDpfqs+ugWC1ydkMmQbI+MVD+u5l+WnpRdA+sdYFpn0kV
+pJQDaNIwdNKjvYywsVeNJALH+wArpwBfuBoPxwkwXHjWj9SEgbOjide6nwZRXqAS
+rUppXgLzJBgULsOfiU6mHrB4TCFRmkCFBiAXRosON17uRP69O7eIzojOnz1ENu1/
+PJuwNwV8oNxqqQPpk7DhtEE=
+-----END X509 CRL-----
diff --git a/.dotnet/corefx/cryptography/crls/cf887acb.0f995861.crl b/.dotnet/corefx/cryptography/crls/cf887acb.0f995861.crl
new file mode 100644
index 0000000..80eac52
--- /dev/null
+++ b/.dotnet/corefx/cryptography/crls/cf887acb.0f995861.crl
@@ -0,0 +1,22 @@
+-----BEGIN X509 CRL-----
+MIIDnTCCAYUCAQEwDQYJKoZIhvcNAQELBQAwaTELMAkGA1UEBhMCVVMxFzAVBgNV
+BAoTDkRpZ2lDZXJ0LCBJbmMuMUEwPwYDVQQDEzhEaWdpQ2VydCBUcnVzdGVkIEc0
+IFRpbWVTdGFtcGluZyBSU0E0MDk2IFNIQTI1NiAyMDI1IENBMRcNMjYxMDI4MTY0
+MDI2WhcNMjYxMTE4MTY0MDI2WqCB5zCB5DAfBgNVHSMEGDAWgBTvb1NK6eQGfHrK
+4pBW9i/USezLTjAKBgNVHRQEAwIBTzCBtAYDVR0cAQH/BIGpMIGmoIGjoIGghk5o
+dHRwOi8vY3JsMy5kaWdpY2VydC5jb20vRGlnaUNlcnRUcnVzdGVkRzRUaW1lU3Rh
+bXBpbmdSU0E0MDk2U0hBMjU2MjAyNUNBMS5jcmyGTmh0dHA6Ly9jcmw0LmRpZ2lj
+ZXJ0LmNvbS9EaWdpQ2VydFRydXN0ZWRHNFRpbWVTdGFtcGluZ1JTQTQwOTZTSEEy
+NTYyMDI1Q0ExLmNybDANBgkqhkiG9w0BAQsFAAOCAgEADAj8kSpzYt1n103D8QgZ
+VdSZZl+pNdH3M8IwSpQz3yOHIl0+HJoRH+yIAUsBUf7kqtAghfkb68DdsINrmEn1
+HChyzQZMZko/qrA42wXRBgDoxbfNoLhJnG64PwbOb0oRlc8q+4cxcb+pzlFkszFs
+6yr/HY3SEgLj/Yf4oFNsWToGmfjgb7nK6zZXQqD/GjrRLhaO9bxyb2o2XupHcwlf
+t8oJ+P+62eb0PX4OZ7icR0Akn+dMoYvSxKyI5RplS6mdBxmjE7T7cJee1RNbWPyl
+3kd7LjLEdvszA0y6SzChhRxhmEGGR9XFSweAs4hF5IjX65chf2arNKdJy9ITxDS3
+1N3fmkYq0uAe86l/swXoKg63eStu22QNaH7FuiNBOFWFcUsDVn+EJiXlFJdCkK9e
+2YL6yjxarZZ78q9GuG6Wo86HpRMU2bV4uCbAv7x6Y5sS7jgCTvUGWq6kKcyz5h6l
+rHLIB0IpJTOZ+HPMOVPbblElKDW/yFKfIz2vXY/rbxocQII5ykJw6XLEaIRAG+jh
+kAQArkbBE1iLdCFxpnPwT0EJd1jHdBnIeQd/SbYhI7KUN5Gkp3JNNXuLUjlzFn4J
+90iFoniPRfegIYJISk6n8i3v4rryOC/Ks1aTFNoiMHi3wwQ+1rvWj9fpa8/x31P0
+xIgqutlMiFp2Y29qv5i8LG4=
+-----END X509 CRL-----
diff --git a/.dotnet/corefx/cryptography/crls/d16da424.cbeb964c.crl b/.dotnet/corefx/cryptography/crls/d16da424.cbeb964c.crl
new file mode 100644
index 0000000..ea66e4f
--- /dev/null
+++ b/.dotnet/corefx/cryptography/crls/d16da424.cbeb964c.crl
@@ -0,0 +1,3921 @@
+-----BEGIN X509 CRL-----
+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
+q8RT88YmZpnd
+-----END X509 CRL-----
diff --git a/.dotnet/corefx/cryptography/x509stores/my/D169BA29079C4DB30CD080EFC95B92BB93841802.pfx b/.dotnet/corefx/cryptography/x509stores/my/D169BA29079C4DB30CD080EFC95B92BB93841802.pfx
new file mode 100644
index 0000000..5c0b15e
Binary files /dev/null and b/.dotnet/corefx/cryptography/x509stores/my/D169BA29079C4DB30CD080EFC95B92BB93841802.pfx differ
diff --git a/.dotnet/sdk-advertising/8.0.400/microsoft.net.sdk.android/AdvertisedManifestFeatureBand.txt b/.dotnet/sdk-advertising/8.0.400/microsoft.net.sdk.android/AdvertisedManifestFeatureBand.txt
new file mode 100644
index 0000000..d3f1dda
--- /dev/null
+++ b/.dotnet/sdk-advertising/8.0.400/microsoft.net.sdk.android/AdvertisedManifestFeatureBand.txt
@@ -0,0 +1 @@
+8.0.100
\ No newline at end of file
diff --git a/.dotnet/sdk-advertising/8.0.400/microsoft.net.sdk.android/WorkloadManifest.json b/.dotnet/sdk-advertising/8.0.400/microsoft.net.sdk.android/WorkloadManifest.json
new file mode 100644
index 0000000..f474874
--- /dev/null
+++ b/.dotnet/sdk-advertising/8.0.400/microsoft.net.sdk.android/WorkloadManifest.json
@@ -0,0 +1,77 @@
+{
+ "version": "34.0.154",
+ "workloads": {
+ "android": {
+ "description": ".NET SDK Workload for building Android applications.",
+ "packs": [
+ "Microsoft.Android.Sdk.net8",
+ "Microsoft.Android.Sdk.net7",
+ "Microsoft.Android.Ref.34",
+ "Microsoft.Android.Runtime.34.android-arm",
+ "Microsoft.Android.Runtime.34.android-arm64",
+ "Microsoft.Android.Runtime.34.android-x86",
+ "Microsoft.Android.Runtime.34.android-x64",
+ "Microsoft.Android.Templates"
+ ],
+ "platforms": [ "win-x64", "win-arm64", "linux-x64", "linux-arm64", "osx-x64", "osx-arm64" ],
+ "extends" : [
+ "microsoft-net-runtime-android-net7",
+ "microsoft-net-runtime-android-aot-net7",
+ "microsoft-net-runtime-android",
+ "microsoft-net-runtime-android-aot"
+ ]
+ }
+ },
+ "packs": {
+ "Microsoft.Android.Sdk.net8": {
+ "kind": "sdk",
+ "version": "34.0.154",
+ "alias-to": {
+ "osx-x64": "Microsoft.Android.Sdk.Darwin",
+ "osx-arm64": "Microsoft.Android.Sdk.Darwin",
+ "win-x86": "Microsoft.Android.Sdk.Windows",
+ "win-x64": "Microsoft.Android.Sdk.Windows",
+ "win-arm64": "Microsoft.Android.Sdk.Windows",
+ "linux-x64": "Microsoft.Android.Sdk.Linux",
+ "linux-arm64": "Microsoft.Android.Sdk.Linux"
+ }
+ },
+ "Microsoft.Android.Sdk.net7": {
+ "kind": "sdk",
+ "version": "33.0.95",
+ "alias-to": {
+ "osx-x64": "Microsoft.Android.Sdk.Darwin",
+ "osx-arm64": "Microsoft.Android.Sdk.Darwin",
+ "win-x86": "Microsoft.Android.Sdk.Windows",
+ "win-x64": "Microsoft.Android.Sdk.Windows",
+ "win-arm64": "Microsoft.Android.Sdk.Windows",
+ "linux-x64": "Microsoft.Android.Sdk.Linux",
+ "linux-arm64": "Microsoft.Android.Sdk.Linux"
+ }
+ },
+ "Microsoft.Android.Ref.34": {
+ "kind": "framework",
+ "version": "34.0.154"
+ },
+ "Microsoft.Android.Runtime.34.android-arm": {
+ "kind": "framework",
+ "version": "34.0.154"
+ },
+ "Microsoft.Android.Runtime.34.android-arm64": {
+ "kind": "framework",
+ "version": "34.0.154"
+ },
+ "Microsoft.Android.Runtime.34.android-x86": {
+ "kind": "framework",
+ "version": "34.0.154"
+ },
+ "Microsoft.Android.Runtime.34.android-x64": {
+ "kind": "framework",
+ "version": "34.0.154"
+ },
+ "Microsoft.Android.Templates": {
+ "kind": "template",
+ "version": "34.0.154"
+ }
+ }
+}
diff --git a/.dotnet/sdk-advertising/8.0.400/microsoft.net.sdk.android/WorkloadManifest.targets b/.dotnet/sdk-advertising/8.0.400/microsoft.net.sdk.android/WorkloadManifest.targets
new file mode 100644
index 0000000..029e436
--- /dev/null
+++ b/.dotnet/sdk-advertising/8.0.400/microsoft.net.sdk.android/WorkloadManifest.targets
@@ -0,0 +1,22 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/.dotnet/sdk-advertising/8.0.400/microsoft.net.sdk.aspire/AdvertisedManifestFeatureBand.txt b/.dotnet/sdk-advertising/8.0.400/microsoft.net.sdk.aspire/AdvertisedManifestFeatureBand.txt
new file mode 100644
index 0000000..d3f1dda
--- /dev/null
+++ b/.dotnet/sdk-advertising/8.0.400/microsoft.net.sdk.aspire/AdvertisedManifestFeatureBand.txt
@@ -0,0 +1 @@
+8.0.100
\ No newline at end of file
diff --git a/.dotnet/sdk-advertising/8.0.400/microsoft.net.sdk.aspire/WorkloadManifest.Aspire.targets b/.dotnet/sdk-advertising/8.0.400/microsoft.net.sdk.aspire/WorkloadManifest.Aspire.targets
new file mode 100644
index 0000000..1b7b21f
--- /dev/null
+++ b/.dotnet/sdk-advertising/8.0.400/microsoft.net.sdk.aspire/WorkloadManifest.Aspire.targets
@@ -0,0 +1,6 @@
+
+
+
+
+
+
diff --git a/.dotnet/sdk-advertising/8.0.400/microsoft.net.sdk.aspire/WorkloadManifest.json b/.dotnet/sdk-advertising/8.0.400/microsoft.net.sdk.aspire/WorkloadManifest.json
new file mode 100644
index 0000000..dbf830d
--- /dev/null
+++ b/.dotnet/sdk-advertising/8.0.400/microsoft.net.sdk.aspire/WorkloadManifest.json
@@ -0,0 +1,22 @@
+{
+ "version": "8.2.2",
+ "workloads": {
+ "aspire": {
+ "description": ".NET Aspire SDK",
+ "packs": [
+ "Aspire.Hosting.Sdk",
+ "Aspire.ProjectTemplates"
+ ]
+ }
+ },
+ "packs": {
+ "Aspire.Hosting.Sdk": {
+ "kind": "sdk",
+ "version": "8.2.2"
+ },
+ "Aspire.ProjectTemplates": {
+ "kind": "template",
+ "version": "8.2.2"
+ }
+ }
+}
diff --git a/.dotnet/sdk-advertising/8.0.400/microsoft.net.sdk.aspire/WorkloadManifest.targets b/.dotnet/sdk-advertising/8.0.400/microsoft.net.sdk.aspire/WorkloadManifest.targets
new file mode 100644
index 0000000..20a0461
--- /dev/null
+++ b/.dotnet/sdk-advertising/8.0.400/microsoft.net.sdk.aspire/WorkloadManifest.targets
@@ -0,0 +1,8 @@
+
+
+
+
+
diff --git a/.dotnet/sdk-advertising/8.0.400/microsoft.net.sdk.ios/AdvertisedManifestFeatureBand.txt b/.dotnet/sdk-advertising/8.0.400/microsoft.net.sdk.ios/AdvertisedManifestFeatureBand.txt
new file mode 100644
index 0000000..d3f1dda
--- /dev/null
+++ b/.dotnet/sdk-advertising/8.0.400/microsoft.net.sdk.ios/AdvertisedManifestFeatureBand.txt
@@ -0,0 +1 @@
+8.0.100
\ No newline at end of file
diff --git a/.dotnet/sdk-advertising/8.0.400/microsoft.net.sdk.ios/WorkloadManifest.json b/.dotnet/sdk-advertising/8.0.400/microsoft.net.sdk.ios/WorkloadManifest.json
new file mode 100644
index 0000000..895586c
--- /dev/null
+++ b/.dotnet/sdk-advertising/8.0.400/microsoft.net.sdk.ios/WorkloadManifest.json
@@ -0,0 +1,92 @@
+{
+ "version": "18.0.8319",
+ "workloads": {
+ "ios": {
+ "description": ".NET SDK Workload for building iOS applications.",
+ "packs": [
+ "Microsoft.iOS.Sdk.net8.0_18.0",
+ "Microsoft.iOS.Sdk.net8.0_17.0",
+ "Microsoft.iOS.Sdk.net7",
+ "Microsoft.iOS.Windows.Sdk.Aliased.net8.0_18.0",
+ "Microsoft.iOS.Windows.Sdk.Aliased.net8.0_17.0",
+ "Microsoft.iOS.Windows.Sdk.Aliased.net7",
+ "Microsoft.iOS.Ref.net8.0_18.0",
+ "Microsoft.iOS.Runtime.ios-arm64.net8.0_18.0",
+ "Microsoft.iOS.Runtime.iossimulator-x64.net8.0_18.0",
+ "Microsoft.iOS.Runtime.iossimulator-arm64.net8.0_18.0",
+ "Microsoft.iOS.Templates.net8"
+ ],
+ "extends": [
+ "microsoft-net-runtime-ios",
+ "microsoft-net-runtime-ios-net7",
+ ]
+ },
+ },
+ "packs": {
+ "Microsoft.iOS.Sdk.net8.0_18.0": {
+ "kind": "sdk",
+ "version": "18.0.8319",
+ },
+ "Microsoft.iOS.Windows.Sdk.Aliased.net8.0_18.0": {
+ "kind": "sdk",
+ "version": "18.0.8319",
+ "alias-to": {
+ "win-x64": "Microsoft.iOS.Windows.Sdk.net8.0_18.0",
+ "win-x86": "Microsoft.iOS.Windows.Sdk.net8.0_18.0",
+ "win-arm64": "Microsoft.iOS.Windows.Sdk.net8.0_18.0",
+ }
+ },
+ "Microsoft.iOS.Sdk.net8.0_17.0": {
+ "kind": "sdk",
+ "version": "17.0.8523",
+ },
+ "Microsoft.iOS.Windows.Sdk.Aliased.net8.0_17.0": {
+ "kind": "sdk",
+ "version": "17.0.8523",
+ "alias-to": {
+ "win-x64": "Microsoft.iOS.Windows.Sdk.net8.0_17.0",
+ "win-x86": "Microsoft.iOS.Windows.Sdk.net8.0_17.0",
+ "win-arm64": "Microsoft.iOS.Windows.Sdk.net8.0_17.0",
+ }
+ },
+ "Microsoft.iOS.Sdk.net7": {
+ "kind": "sdk",
+ "version": "16.4.7142",
+ "alias-to": {
+ "any": "Microsoft.iOS.Sdk"
+ }
+ },
+ "Microsoft.iOS.Windows.Sdk.Aliased.net7": {
+ "kind": "sdk",
+ "version": "16.4.7142",
+ "alias-to": {
+ "win-x64": "Microsoft.iOS.Windows.Sdk",
+ "win-x86": "Microsoft.iOS.Windows.Sdk",
+ "win-arm64": "Microsoft.iOS.Windows.Sdk",
+ }
+ },
+ "Microsoft.iOS.Ref.net8.0_18.0": {
+ "kind": "framework",
+ "version": "18.0.8319"
+ },
+ "Microsoft.iOS.Runtime.ios-arm64.net8.0_18.0": {
+ "kind": "framework",
+ "version": "18.0.8319"
+ },
+ "Microsoft.iOS.Runtime.iossimulator-x64.net8.0_18.0": {
+ "kind": "framework",
+ "version": "18.0.8319"
+ },
+ "Microsoft.iOS.Runtime.iossimulator-arm64.net8.0_18.0": {
+ "kind": "framework",
+ "version": "18.0.8319"
+ },
+ "Microsoft.iOS.Templates.net8": {
+ "kind": "template",
+ "version": "18.0.8319",
+ "alias-to": {
+ "any": "Microsoft.iOS.Templates",
+ }
+ }
+ }
+}
diff --git a/.dotnet/sdk-advertising/8.0.400/microsoft.net.sdk.ios/WorkloadManifest.targets b/.dotnet/sdk-advertising/8.0.400/microsoft.net.sdk.ios/WorkloadManifest.targets
new file mode 100644
index 0000000..206a89a
--- /dev/null
+++ b/.dotnet/sdk-advertising/8.0.400/microsoft.net.sdk.ios/WorkloadManifest.targets
@@ -0,0 +1,26 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/.dotnet/sdk-advertising/8.0.400/microsoft.net.sdk.maccatalyst/AdvertisedManifestFeatureBand.txt b/.dotnet/sdk-advertising/8.0.400/microsoft.net.sdk.maccatalyst/AdvertisedManifestFeatureBand.txt
new file mode 100644
index 0000000..d3f1dda
--- /dev/null
+++ b/.dotnet/sdk-advertising/8.0.400/microsoft.net.sdk.maccatalyst/AdvertisedManifestFeatureBand.txt
@@ -0,0 +1 @@
+8.0.100
\ No newline at end of file
diff --git a/.dotnet/sdk-advertising/8.0.400/microsoft.net.sdk.maccatalyst/WorkloadManifest.json b/.dotnet/sdk-advertising/8.0.400/microsoft.net.sdk.maccatalyst/WorkloadManifest.json
new file mode 100644
index 0000000..cc8a729
--- /dev/null
+++ b/.dotnet/sdk-advertising/8.0.400/microsoft.net.sdk.maccatalyst/WorkloadManifest.json
@@ -0,0 +1,57 @@
+{
+ "version": "18.0.8319",
+ "workloads": {
+ "maccatalyst": {
+ "description": ".NET SDK Workload for building MacCatalyst applications.",
+ "packs": [
+ "Microsoft.MacCatalyst.Sdk.net8.0_18.0",
+ "Microsoft.MacCatalyst.Sdk.net8.0_17.0",
+ "Microsoft.MacCatalyst.Sdk.net7",
+ "Microsoft.MacCatalyst.Ref.net8.0_18.0",
+ "Microsoft.MacCatalyst.Runtime.maccatalyst-x64.net8.0_18.0",
+ "Microsoft.MacCatalyst.Runtime.maccatalyst-arm64.net8.0_18.0",
+ "Microsoft.MacCatalyst.Templates.net8"
+ ],
+ "extends": [
+ "microsoft-net-runtime-maccatalyst",
+ "microsoft-net-runtime-maccatalyst-net7",
+ ]
+ },
+ },
+ "packs": {
+ "Microsoft.MacCatalyst.Sdk.net8.0_18.0": {
+ "kind": "sdk",
+ "version": "18.0.8319",
+ },
+ "Microsoft.MacCatalyst.Sdk.net8.0_17.0": {
+ "kind": "sdk",
+ "version": "17.0.8523",
+ },
+ "Microsoft.MacCatalyst.Sdk.net7": {
+ "kind": "sdk",
+ "version": "16.4.7142",
+ "alias-to": {
+ "any": "Microsoft.MacCatalyst.Sdk"
+ }
+ },
+ "Microsoft.MacCatalyst.Ref.net8.0_18.0": {
+ "kind": "framework",
+ "version": "18.0.8319"
+ },
+ "Microsoft.MacCatalyst.Runtime.maccatalyst-x64.net8.0_18.0": {
+ "kind": "framework",
+ "version": "18.0.8319"
+ },
+ "Microsoft.MacCatalyst.Runtime.maccatalyst-arm64.net8.0_18.0": {
+ "kind": "framework",
+ "version": "18.0.8319"
+ },
+ "Microsoft.MacCatalyst.Templates.net8": {
+ "kind": "template",
+ "version": "18.0.8319",
+ "alias-to": {
+ "any": "Microsoft.MacCatalyst.Templates",
+ }
+ }
+ }
+}
diff --git a/.dotnet/sdk-advertising/8.0.400/microsoft.net.sdk.maccatalyst/WorkloadManifest.targets b/.dotnet/sdk-advertising/8.0.400/microsoft.net.sdk.maccatalyst/WorkloadManifest.targets
new file mode 100644
index 0000000..3b79453
--- /dev/null
+++ b/.dotnet/sdk-advertising/8.0.400/microsoft.net.sdk.maccatalyst/WorkloadManifest.targets
@@ -0,0 +1,23 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/.dotnet/sdk-advertising/8.0.400/microsoft.net.sdk.macos/AdvertisedManifestFeatureBand.txt b/.dotnet/sdk-advertising/8.0.400/microsoft.net.sdk.macos/AdvertisedManifestFeatureBand.txt
new file mode 100644
index 0000000..d3f1dda
--- /dev/null
+++ b/.dotnet/sdk-advertising/8.0.400/microsoft.net.sdk.macos/AdvertisedManifestFeatureBand.txt
@@ -0,0 +1 @@
+8.0.100
\ No newline at end of file
diff --git a/.dotnet/sdk-advertising/8.0.400/microsoft.net.sdk.macos/WorkloadManifest.json b/.dotnet/sdk-advertising/8.0.400/microsoft.net.sdk.macos/WorkloadManifest.json
new file mode 100644
index 0000000..1f0340f
--- /dev/null
+++ b/.dotnet/sdk-advertising/8.0.400/microsoft.net.sdk.macos/WorkloadManifest.json
@@ -0,0 +1,57 @@
+{
+ "version": "15.0.8319",
+ "workloads": {
+ "macos": {
+ "description": ".NET SDK Workload for building macOS applications.",
+ "packs": [
+ "Microsoft.macOS.Sdk.net8.0_15.0",
+ "Microsoft.macOS.Sdk.net8.0_14.0",
+ "Microsoft.macOS.Sdk.net7",
+ "Microsoft.macOS.Ref.net8.0_15.0",
+ "Microsoft.macOS.Runtime.osx-x64.net8.0_15.0",
+ "Microsoft.macOS.Runtime.osx-arm64.net8.0_15.0",
+ "Microsoft.macOS.Templates.net8"
+ ],
+ "extends": [
+ "microsoft-net-runtime-mono-tooling",
+ "microsoft-net-runtime-mono-tooling-net7",
+ ]
+ },
+ },
+ "packs": {
+ "Microsoft.macOS.Sdk.net8.0_15.0": {
+ "kind": "sdk",
+ "version": "15.0.8319",
+ },
+ "Microsoft.macOS.Sdk.net8.0_14.0": {
+ "kind": "sdk",
+ "version": "14.0.8523",
+ },
+ "Microsoft.macOS.Sdk.net7": {
+ "kind": "sdk",
+ "version": "13.3.7142",
+ "alias-to": {
+ "any": "Microsoft.macOS.Sdk"
+ }
+ },
+ "Microsoft.macOS.Ref.net8.0_15.0": {
+ "kind": "framework",
+ "version": "15.0.8319"
+ },
+ "Microsoft.macOS.Runtime.osx-x64.net8.0_15.0": {
+ "kind": "framework",
+ "version": "15.0.8319"
+ },
+ "Microsoft.macOS.Runtime.osx-arm64.net8.0_15.0": {
+ "kind": "framework",
+ "version": "15.0.8319"
+ },
+ "Microsoft.macOS.Templates.net8": {
+ "kind": "template",
+ "version": "15.0.8319",
+ "alias-to": {
+ "any": "Microsoft.macOS.Templates",
+ }
+ }
+ }
+}
diff --git a/.dotnet/sdk-advertising/8.0.400/microsoft.net.sdk.macos/WorkloadManifest.targets b/.dotnet/sdk-advertising/8.0.400/microsoft.net.sdk.macos/WorkloadManifest.targets
new file mode 100644
index 0000000..2d40387
--- /dev/null
+++ b/.dotnet/sdk-advertising/8.0.400/microsoft.net.sdk.macos/WorkloadManifest.targets
@@ -0,0 +1,23 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/.dotnet/sdk-advertising/8.0.400/microsoft.net.sdk.maui/AdvertisedManifestFeatureBand.txt b/.dotnet/sdk-advertising/8.0.400/microsoft.net.sdk.maui/AdvertisedManifestFeatureBand.txt
new file mode 100644
index 0000000..d3f1dda
--- /dev/null
+++ b/.dotnet/sdk-advertising/8.0.400/microsoft.net.sdk.maui/AdvertisedManifestFeatureBand.txt
@@ -0,0 +1 @@
+8.0.100
\ No newline at end of file
diff --git a/.dotnet/sdk-advertising/8.0.400/microsoft.net.sdk.maui/WorkloadManifest.json b/.dotnet/sdk-advertising/8.0.400/microsoft.net.sdk.maui/WorkloadManifest.json
new file mode 100644
index 0000000..963b9f3
--- /dev/null
+++ b/.dotnet/sdk-advertising/8.0.400/microsoft.net.sdk.maui/WorkloadManifest.json
@@ -0,0 +1,166 @@
+{
+ "version": "8.0.100",
+ "workloads": {
+ "maui": {
+ "description": ".NET MAUI SDK for all platforms",
+ "extends": [
+ "maui-mobile",
+ "maui-desktop"
+ ]
+ },
+ "maui-mobile": {
+ "description": ".NET MAUI SDK for Mobile",
+ "extends": [
+ "maui-android",
+ "maui-ios",
+ "maui-tizen"
+ ]
+ },
+ "maui-desktop": {
+ "description": ".NET MAUI SDK for Desktop",
+ "extends": [
+ "maui-maccatalyst",
+ "maui-windows"
+ ]
+ },
+ "maui-core": {
+ "abstract": true,
+ "description": ".NET MAUI SDK Core Packages",
+ "packs": [
+ "Microsoft.Maui.Sdk.net8",
+ "Microsoft.Maui.Sdk.net7",
+ "Microsoft.Maui.Graphics",
+ "Microsoft.Maui.Resizetizer",
+ "Microsoft.Maui.Resizetizer.Sdk",
+ "Microsoft.Maui.Templates.net8",
+ "Microsoft.Maui.Templates.net7",
+ "Microsoft.Maui.Core",
+ "Microsoft.Maui.Controls",
+ "Microsoft.Maui.Controls.Build.Tasks",
+ "Microsoft.Maui.Controls.Core",
+ "Microsoft.Maui.Controls.Xaml",
+ "Microsoft.Maui.Controls.Compatibility",
+ "Microsoft.Maui.Essentials"
+ ]
+ },
+ "maui-blazor": {
+ "abstract": true,
+ "description": ".NET MAUI SDK Blazor Packages",
+ "extends": [ "maui-core" ],
+ "packs": [
+ "Microsoft.AspNetCore.Components.WebView.Maui"
+ ]
+ },
+ "maui-android": {
+ "description": ".NET MAUI SDK for Android",
+ "extends": [
+ "maui-blazor",
+ "android"
+ ]
+ },
+ "maui-maccatalyst": {
+ "description": ".NET MAUI SDK for Mac Catalyst",
+ "extends": [
+ "maui-blazor",
+ "maccatalyst"
+ ]
+ },
+ "maui-ios": {
+ "description": ".NET MAUI SDK for iOS",
+ "extends": [
+ "maui-blazor",
+ "ios"
+ ]
+ },
+ "maui-windows": {
+ "description": ".NET MAUI SDK for Windows",
+ "extends": [ "maui-blazor" ],
+ "packs": [
+ "Microsoft.Maui.Graphics.Windows"
+ ]
+ },
+ "maui-tizen": {
+ "description": ".NET MAUI SDK for Tizen",
+ "extends": [
+ "maui-blazor"
+ ]
+ }
+ },
+ "packs": {
+ "Microsoft.AspNetCore.Components.WebView.Maui": {
+ "kind": "library",
+ "version": "8.0.100"
+ },
+ "Microsoft.Maui.Core": {
+ "kind": "library",
+ "version": "8.0.100"
+ },
+ "Microsoft.Maui.Controls": {
+ "kind": "library",
+ "version": "8.0.100"
+ },
+ "Microsoft.Maui.Controls.Build.Tasks": {
+ "kind": "library",
+ "version": "8.0.100"
+ },
+ "Microsoft.Maui.Controls.Core": {
+ "kind": "library",
+ "version": "8.0.100"
+ },
+ "Microsoft.Maui.Controls.Xaml": {
+ "kind": "library",
+ "version": "8.0.100"
+ },
+ "Microsoft.Maui.Controls.Compatibility": {
+ "kind": "library",
+ "version": "8.0.100"
+ },
+ "Microsoft.Maui.Essentials": {
+ "kind": "library",
+ "version": "8.0.100"
+ },
+ "Microsoft.Maui.Graphics": {
+ "kind": "library",
+ "version": "8.0.100"
+ },
+ "Microsoft.Maui.Graphics.Windows": {
+ "kind": "library",
+ "version": "8.0.100",
+ "alias-to": {
+ "win-x86": "Microsoft.Maui.Graphics.Win2D.WinUI.Desktop",
+ "win-x64": "Microsoft.Maui.Graphics.Win2D.WinUI.Desktop",
+ "win-arm64": "Microsoft.Maui.Graphics.Win2D.WinUI.Desktop"
+ }
+ },
+ "Microsoft.Maui.Resizetizer": {
+ "kind": "library",
+ "version": "8.0.100"
+ },
+ "Microsoft.Maui.Sdk.net8": {
+ "kind": "sdk",
+ "version": "8.0.100",
+ "alias-to": {
+ "any": "Microsoft.Maui.Sdk"
+ }
+ },
+ "Microsoft.Maui.Sdk.net7": {
+ "kind": "sdk",
+ "version": "7.0.101",
+ "alias-to": {
+ "any": "Microsoft.Maui.Sdk"
+ }
+ },
+ "Microsoft.Maui.Resizetizer.Sdk": {
+ "kind": "sdk",
+ "version": "7.0.101"
+ },
+ "Microsoft.Maui.Templates.net8": {
+ "kind": "template",
+ "version": "8.0.100"
+ },
+ "Microsoft.Maui.Templates.net7": {
+ "kind": "template",
+ "version": "7.0.101"
+ }
+ }
+}
diff --git a/.dotnet/sdk-advertising/8.0.400/microsoft.net.sdk.maui/WorkloadManifest.targets b/.dotnet/sdk-advertising/8.0.400/microsoft.net.sdk.maui/WorkloadManifest.targets
new file mode 100644
index 0000000..0d95bee
--- /dev/null
+++ b/.dotnet/sdk-advertising/8.0.400/microsoft.net.sdk.maui/WorkloadManifest.targets
@@ -0,0 +1,61 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/.dotnet/sdk-advertising/8.0.400/microsoft.net.sdk.tvos/AdvertisedManifestFeatureBand.txt b/.dotnet/sdk-advertising/8.0.400/microsoft.net.sdk.tvos/AdvertisedManifestFeatureBand.txt
new file mode 100644
index 0000000..d3f1dda
--- /dev/null
+++ b/.dotnet/sdk-advertising/8.0.400/microsoft.net.sdk.tvos/AdvertisedManifestFeatureBand.txt
@@ -0,0 +1 @@
+8.0.100
\ No newline at end of file
diff --git a/.dotnet/sdk-advertising/8.0.400/microsoft.net.sdk.tvos/WorkloadManifest.json b/.dotnet/sdk-advertising/8.0.400/microsoft.net.sdk.tvos/WorkloadManifest.json
new file mode 100644
index 0000000..d80b8e8
--- /dev/null
+++ b/.dotnet/sdk-advertising/8.0.400/microsoft.net.sdk.tvos/WorkloadManifest.json
@@ -0,0 +1,62 @@
+{
+ "version": "18.0.8319",
+ "workloads": {
+ "tvos": {
+ "description": ".NET SDK Workload for building tvOS applications.",
+ "packs": [
+ "Microsoft.tvOS.Sdk.net8.0_18.0",
+ "Microsoft.tvOS.Sdk.net8.0_17.0",
+ "Microsoft.tvOS.Sdk.net7",
+ "Microsoft.tvOS.Ref.net8.0_18.0",
+ "Microsoft.tvOS.Runtime.tvos-arm64.net8.0_18.0",
+ "Microsoft.tvOS.Runtime.tvossimulator-x64.net8.0_18.0",
+ "Microsoft.tvOS.Runtime.tvossimulator-arm64.net8.0_18.0",
+ "Microsoft.tvOS.Templates.net8"
+ ],
+ "extends": [
+ "microsoft-net-runtime-tvos",
+ "microsoft-net-runtime-tvos-net7",
+ ]
+ },
+ },
+ "packs": {
+ "Microsoft.tvOS.Sdk.net8.0_18.0": {
+ "kind": "sdk",
+ "version": "18.0.8319",
+ },
+ "Microsoft.tvOS.Sdk.net8.0_17.0": {
+ "kind": "sdk",
+ "version": "17.0.8523",
+ },
+ "Microsoft.tvOS.Sdk.net7": {
+ "kind": "sdk",
+ "version": "16.4.7142",
+ "alias-to": {
+ "any": "Microsoft.tvOS.Sdk"
+ }
+ },
+ "Microsoft.tvOS.Ref.net8.0_18.0": {
+ "kind": "framework",
+ "version": "18.0.8319"
+ },
+ "Microsoft.tvOS.Runtime.tvos-arm64.net8.0_18.0": {
+ "kind": "framework",
+ "version": "18.0.8319"
+ },
+ "Microsoft.tvOS.Runtime.tvossimulator-x64.net8.0_18.0": {
+ "kind": "framework",
+ "version": "18.0.8319"
+ },
+ "Microsoft.tvOS.Runtime.tvossimulator-arm64.net8.0_18.0": {
+ "kind": "framework",
+ "version": "18.0.8319"
+ },
+ "Microsoft.tvOS.Templates.net8": {
+ "kind": "template",
+ "version": "18.0.8319",
+ "alias-to": {
+ "any": "Microsoft.tvOS.Templates",
+ }
+ }
+ }
+}
diff --git a/.dotnet/sdk-advertising/8.0.400/microsoft.net.sdk.tvos/WorkloadManifest.targets b/.dotnet/sdk-advertising/8.0.400/microsoft.net.sdk.tvos/WorkloadManifest.targets
new file mode 100644
index 0000000..cfe68f4
--- /dev/null
+++ b/.dotnet/sdk-advertising/8.0.400/microsoft.net.sdk.tvos/WorkloadManifest.targets
@@ -0,0 +1,23 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/.dotnet/sdk-advertising/8.0.400/microsoft.net.workload.emscripten.current/AdvertisedManifestFeatureBand.txt b/.dotnet/sdk-advertising/8.0.400/microsoft.net.workload.emscripten.current/AdvertisedManifestFeatureBand.txt
new file mode 100644
index 0000000..d3f1dda
--- /dev/null
+++ b/.dotnet/sdk-advertising/8.0.400/microsoft.net.workload.emscripten.current/AdvertisedManifestFeatureBand.txt
@@ -0,0 +1 @@
+8.0.100
\ No newline at end of file
diff --git a/.dotnet/sdk-advertising/8.0.400/microsoft.net.workload.emscripten.current/WorkloadManifest.json b/.dotnet/sdk-advertising/8.0.400/microsoft.net.workload.emscripten.current/WorkloadManifest.json
new file mode 100644
index 0000000..53fb31e
--- /dev/null
+++ b/.dotnet/sdk-advertising/8.0.400/microsoft.net.workload.emscripten.current/WorkloadManifest.json
@@ -0,0 +1,64 @@
+{
+ "version": "8.0.33",
+ "workloads": {
+ "microsoft-net-sdk-emscripten": {
+ "abstract": true,
+ "description": "Emscripten SDK compiler tooling for net8.0",
+ "packs": [
+ "Microsoft.NET.Runtime.Emscripten.Node.net8",
+ "Microsoft.NET.Runtime.Emscripten.Python.net8",
+ "Microsoft.NET.Runtime.Emscripten.Cache.net8",
+ "Microsoft.NET.Runtime.Emscripten.Sdk.net8"
+ ],
+ "platforms": [ "win-x64", "win-arm64", "linux-x64", "linux-arm64", "osx-x64", "osx-arm64" ]
+ }
+ },
+ "packs": {
+ "Microsoft.NET.Runtime.Emscripten.Node.net8" : {
+ "kind": "Sdk",
+ "version": "8.0.33",
+ "alias-to": {
+ "win-x64": "Microsoft.NET.Runtime.Emscripten.3.1.34.Node.win-x64",
+ "win-arm64": "Microsoft.NET.Runtime.Emscripten.3.1.34.Node.win-arm64",
+ "linux-x64": "Microsoft.NET.Runtime.Emscripten.3.1.34.Node.linux-x64",
+ "linux-arm64": "Microsoft.NET.Runtime.Emscripten.3.1.34.Node.linux-arm64",
+ "osx-x64": "Microsoft.NET.Runtime.Emscripten.3.1.34.Node.osx-x64",
+ "osx-arm64": "Microsoft.NET.Runtime.Emscripten.3.1.34.Node.osx-arm64"
+ }
+ },
+ "Microsoft.NET.Runtime.Emscripten.Python.net8" : {
+ "kind": "Sdk",
+ "version": "8.0.33",
+ "alias-to": {
+ "win-x64": "Microsoft.NET.Runtime.Emscripten.3.1.34.Python.win-x64",
+ "win-arm64": "Microsoft.NET.Runtime.Emscripten.3.1.34.Python.win-arm64",
+ "osx-x64": "Microsoft.NET.Runtime.Emscripten.3.1.34.Python.osx-x64",
+ "osx-arm64": "Microsoft.NET.Runtime.Emscripten.3.1.34.Python.osx-arm64"
+ }
+ },
+ "Microsoft.NET.Runtime.Emscripten.Cache.net8" : {
+ "kind": "Sdk",
+ "version": "8.0.33",
+ "alias-to": {
+ "win-x64": "Microsoft.NET.Runtime.Emscripten.3.1.34.Cache.win-x64",
+ "win-arm64": "Microsoft.NET.Runtime.Emscripten.3.1.34.Cache.win-arm64",
+ "linux-x64": "Microsoft.NET.Runtime.Emscripten.3.1.34.Cache.linux-x64",
+ "linux-arm64": "Microsoft.NET.Runtime.Emscripten.3.1.34.Cache.linux-arm64",
+ "osx-x64": "Microsoft.NET.Runtime.Emscripten.3.1.34.Cache.osx-x64",
+ "osx-arm64": "Microsoft.NET.Runtime.Emscripten.3.1.34.Cache.osx-arm64"
+ }
+ },
+ "Microsoft.NET.Runtime.Emscripten.Sdk.net8" : {
+ "kind": "Sdk",
+ "version": "8.0.33",
+ "alias-to": {
+ "win-x64": "Microsoft.NET.Runtime.Emscripten.3.1.34.Sdk.win-x64",
+ "win-arm64": "Microsoft.NET.Runtime.Emscripten.3.1.34.Sdk.win-arm64",
+ "linux-x64": "Microsoft.NET.Runtime.Emscripten.3.1.34.Sdk.linux-x64",
+ "linux-arm64": "Microsoft.NET.Runtime.Emscripten.3.1.34.Sdk.linux-arm64",
+ "osx-x64": "Microsoft.NET.Runtime.Emscripten.3.1.34.Sdk.osx-x64",
+ "osx-arm64": "Microsoft.NET.Runtime.Emscripten.3.1.34.Sdk.osx-arm64"
+ }
+ }
+ }
+}
diff --git a/.dotnet/sdk-advertising/8.0.400/microsoft.net.workload.emscripten.current/WorkloadManifest.targets b/.dotnet/sdk-advertising/8.0.400/microsoft.net.workload.emscripten.current/WorkloadManifest.targets
new file mode 100644
index 0000000..a3419ba
--- /dev/null
+++ b/.dotnet/sdk-advertising/8.0.400/microsoft.net.workload.emscripten.current/WorkloadManifest.targets
@@ -0,0 +1,28 @@
+
+
+ true
+
+
+
+ <_NativeBuildNeeded Condition="'$(RunAOTCompilation)' == 'true'">true
+ WebAssembly workloads (required for AOT) are only supported for projects targeting net6.0+
+
+
+
+ true
+ $(WasmNativeWorkload)
+
+
+
+ false
+ false
+
+
+
+
+
+
+
+
+
+
diff --git a/.dotnet/sdk-advertising/8.0.400/microsoft.net.workload.emscripten.net6/AdvertisedManifestFeatureBand.txt b/.dotnet/sdk-advertising/8.0.400/microsoft.net.workload.emscripten.net6/AdvertisedManifestFeatureBand.txt
new file mode 100644
index 0000000..d3f1dda
--- /dev/null
+++ b/.dotnet/sdk-advertising/8.0.400/microsoft.net.workload.emscripten.net6/AdvertisedManifestFeatureBand.txt
@@ -0,0 +1 @@
+8.0.100
\ No newline at end of file
diff --git a/.dotnet/sdk-advertising/8.0.400/microsoft.net.workload.emscripten.net6/WorkloadManifest.json b/.dotnet/sdk-advertising/8.0.400/microsoft.net.workload.emscripten.net6/WorkloadManifest.json
new file mode 100644
index 0000000..988e2ca
--- /dev/null
+++ b/.dotnet/sdk-advertising/8.0.400/microsoft.net.workload.emscripten.net6/WorkloadManifest.json
@@ -0,0 +1,49 @@
+{
+ "version": "8.0.33",
+ "workloads": {
+ "microsoft-net-sdk-emscripten-net6": {
+ "abstract": true,
+ "description": "Emscripten SDK compiler tooling",
+ "packs": [
+ "Microsoft.NET.Runtime.Emscripten.Node.net6",
+ "Microsoft.NET.Runtime.Emscripten.Python.net6",
+ "Microsoft.NET.Runtime.Emscripten.Sdk.net6"
+ ],
+ "platforms": [ "win-x64", "win-arm64", "linux-x64", "osx-x64", "osx-arm64" ]
+ }
+ },
+ "packs": {
+ "Microsoft.NET.Runtime.Emscripten.Node.net6" : {
+ "kind": "Sdk",
+ "version": "6.0.36",
+ "alias-to": {
+ "win-x64": "Microsoft.NET.Runtime.Emscripten.2.0.23.Node.win-x64",
+ "win-arm64": "Microsoft.NET.Runtime.Emscripten.2.0.23.Node.win-x64",
+ "linux-x64": "Microsoft.NET.Runtime.Emscripten.2.0.23.Node.linux-x64",
+ "osx-x64": "Microsoft.NET.Runtime.Emscripten.2.0.23.Node.osx-x64",
+ "osx-arm64": "Microsoft.NET.Runtime.Emscripten.2.0.23.Node.osx-x64"
+ }
+ },
+ "Microsoft.NET.Runtime.Emscripten.Python.net6" : {
+ "kind": "Sdk",
+ "version": "6.0.36",
+ "alias-to": {
+ "win-x64": "Microsoft.NET.Runtime.Emscripten.2.0.23.Python.win-x64",
+ "win-arm64": "Microsoft.NET.Runtime.Emscripten.2.0.23.Python.win-x64",
+ "osx-x64": "Microsoft.NET.Runtime.Emscripten.2.0.23.Python.osx-x64",
+ "osx-arm64": "Microsoft.NET.Runtime.Emscripten.2.0.23.Python.osx-x64"
+ }
+ },
+ "Microsoft.NET.Runtime.Emscripten.Sdk.net6" : {
+ "kind": "Sdk",
+ "version": "6.0.36",
+ "alias-to": {
+ "win-x64": "Microsoft.NET.Runtime.Emscripten.2.0.23.Sdk.win-x64",
+ "win-arm64": "Microsoft.NET.Runtime.Emscripten.2.0.23.Sdk.win-x64",
+ "linux-x64": "Microsoft.NET.Runtime.Emscripten.2.0.23.Sdk.linux-x64",
+ "osx-x64": "Microsoft.NET.Runtime.Emscripten.2.0.23.Sdk.osx-x64",
+ "osx-arm64": "Microsoft.NET.Runtime.Emscripten.2.0.23.Sdk.osx-x64"
+ }
+ }
+ }
+}
diff --git a/.dotnet/sdk-advertising/8.0.400/microsoft.net.workload.emscripten.net6/WorkloadManifest.targets b/.dotnet/sdk-advertising/8.0.400/microsoft.net.workload.emscripten.net6/WorkloadManifest.targets
new file mode 100644
index 0000000..d543257
--- /dev/null
+++ b/.dotnet/sdk-advertising/8.0.400/microsoft.net.workload.emscripten.net6/WorkloadManifest.targets
@@ -0,0 +1,7 @@
+
+
+
+
+
+
+
diff --git a/.dotnet/sdk-advertising/8.0.400/microsoft.net.workload.emscripten.net7/AdvertisedManifestFeatureBand.txt b/.dotnet/sdk-advertising/8.0.400/microsoft.net.workload.emscripten.net7/AdvertisedManifestFeatureBand.txt
new file mode 100644
index 0000000..d3f1dda
--- /dev/null
+++ b/.dotnet/sdk-advertising/8.0.400/microsoft.net.workload.emscripten.net7/AdvertisedManifestFeatureBand.txt
@@ -0,0 +1 @@
+8.0.100
\ No newline at end of file
diff --git a/.dotnet/sdk-advertising/8.0.400/microsoft.net.workload.emscripten.net7/WorkloadManifest.json b/.dotnet/sdk-advertising/8.0.400/microsoft.net.workload.emscripten.net7/WorkloadManifest.json
new file mode 100644
index 0000000..72e13ad
--- /dev/null
+++ b/.dotnet/sdk-advertising/8.0.400/microsoft.net.workload.emscripten.net7/WorkloadManifest.json
@@ -0,0 +1,61 @@
+{
+ "version": "8.0.33",
+ "workloads": {
+ "microsoft-net-sdk-emscripten-net7": {
+ "abstract": true,
+ "description": "Emscripten SDK compiler tooling",
+ "packs": [
+ "Microsoft.NET.Runtime.Emscripten.Node.net7",
+ "Microsoft.NET.Runtime.Emscripten.Python.net7",
+ "Microsoft.NET.Runtime.Emscripten.Cache.net7",
+ "Microsoft.NET.Runtime.Emscripten.Sdk.net7"
+ ],
+ "platforms": [ "win-x64", "win-arm64", "linux-x64", "osx-x64", "osx-arm64" ]
+ }
+ },
+ "packs": {
+ "Microsoft.NET.Runtime.Emscripten.Node.net7" : {
+ "kind": "Sdk",
+ "version": "7.0.20",
+ "alias-to": {
+ "win-x64": "Microsoft.NET.Runtime.Emscripten.3.1.12.Node.win-x64",
+ "win-arm64": "Microsoft.NET.Runtime.Emscripten.3.1.12.Node.win-x64",
+ "linux-x64": "Microsoft.NET.Runtime.Emscripten.3.1.12.Node.linux-x64",
+ "osx-x64": "Microsoft.NET.Runtime.Emscripten.3.1.12.Node.osx-x64",
+ "osx-arm64": "Microsoft.NET.Runtime.Emscripten.3.1.12.Node.osx-x64"
+ }
+ },
+ "Microsoft.NET.Runtime.Emscripten.Python.net7" : {
+ "kind": "Sdk",
+ "version": "7.0.20",
+ "alias-to": {
+ "win-x64": "Microsoft.NET.Runtime.Emscripten.3.1.12.Python.win-x64",
+ "win-arm64": "Microsoft.NET.Runtime.Emscripten.3.1.12.Python.win-x64",
+ "osx-x64": "Microsoft.NET.Runtime.Emscripten.3.1.12.Python.osx-x64",
+ "osx-arm64": "Microsoft.NET.Runtime.Emscripten.3.1.12.Python.osx-x64"
+ }
+ },
+ "Microsoft.NET.Runtime.Emscripten.Cache.net7" : {
+ "kind": "Sdk",
+ "version": "7.0.20",
+ "alias-to": {
+ "win-x64": "Microsoft.NET.Runtime.Emscripten.3.1.12.Cache.win-x64",
+ "win-arm64": "Microsoft.NET.Runtime.Emscripten.3.1.12.Cache.win-x64",
+ "linux-x64": "Microsoft.NET.Runtime.Emscripten.3.1.12.Cache.linux-x64",
+ "osx-x64": "Microsoft.NET.Runtime.Emscripten.3.1.12.Cache.osx-x64",
+ "osx-arm64": "Microsoft.NET.Runtime.Emscripten.3.1.12.Cache.osx-x64"
+ }
+ },
+ "Microsoft.NET.Runtime.Emscripten.Sdk.net7" : {
+ "kind": "Sdk",
+ "version": "7.0.20",
+ "alias-to": {
+ "win-x64": "Microsoft.NET.Runtime.Emscripten.3.1.12.Sdk.win-x64",
+ "win-arm64": "Microsoft.NET.Runtime.Emscripten.3.1.12.Sdk.win-x64",
+ "linux-x64": "Microsoft.NET.Runtime.Emscripten.3.1.12.Sdk.linux-x64",
+ "osx-x64": "Microsoft.NET.Runtime.Emscripten.3.1.12.Sdk.osx-x64",
+ "osx-arm64": "Microsoft.NET.Runtime.Emscripten.3.1.12.Sdk.osx-x64"
+ }
+ }
+ }
+}
diff --git a/.dotnet/sdk-advertising/8.0.400/microsoft.net.workload.emscripten.net7/WorkloadManifest.targets b/.dotnet/sdk-advertising/8.0.400/microsoft.net.workload.emscripten.net7/WorkloadManifest.targets
new file mode 100644
index 0000000..3a2dbbd
--- /dev/null
+++ b/.dotnet/sdk-advertising/8.0.400/microsoft.net.workload.emscripten.net7/WorkloadManifest.targets
@@ -0,0 +1,28 @@
+
+
+ true
+
+
+
+ <_NativeBuildNeeded Condition="'$(RunAOTCompilation)' == 'true'">true
+ WebAssembly workloads (required for AOT) are only supported for projects targeting net6.0+
+
+
+
+ true
+ $(WasmNativeWorkload)
+
+
+
+ false
+ false
+
+
+
+
+
+
+
+
+
+
diff --git a/.dotnet/sdk-advertising/8.0.400/microsoft.net.workload.mono.toolchain.current/AdvertisedManifestFeatureBand.txt b/.dotnet/sdk-advertising/8.0.400/microsoft.net.workload.mono.toolchain.current/AdvertisedManifestFeatureBand.txt
new file mode 100644
index 0000000..d3f1dda
--- /dev/null
+++ b/.dotnet/sdk-advertising/8.0.400/microsoft.net.workload.mono.toolchain.current/AdvertisedManifestFeatureBand.txt
@@ -0,0 +1 @@
+8.0.100
\ No newline at end of file
diff --git a/.dotnet/sdk-advertising/8.0.400/microsoft.net.workload.mono.toolchain.current/WorkloadManifest.Wasi.targets b/.dotnet/sdk-advertising/8.0.400/microsoft.net.workload.mono.toolchain.current/WorkloadManifest.Wasi.targets
new file mode 100644
index 0000000..f6197d5
--- /dev/null
+++ b/.dotnet/sdk-advertising/8.0.400/microsoft.net.workload.mono.toolchain.current/WorkloadManifest.Wasi.targets
@@ -0,0 +1,10 @@
+
+
+
+ true
+
+
+
+ $(WasiNativeWorkloadAvailable)
+
+
diff --git a/.dotnet/sdk-advertising/8.0.400/microsoft.net.workload.mono.toolchain.current/WorkloadManifest.json b/.dotnet/sdk-advertising/8.0.400/microsoft.net.workload.mono.toolchain.current/WorkloadManifest.json
new file mode 100644
index 0000000..7bda6dd
--- /dev/null
+++ b/.dotnet/sdk-advertising/8.0.400/microsoft.net.workload.mono.toolchain.current/WorkloadManifest.json
@@ -0,0 +1,469 @@
+{
+ "version": "8.0.33",
+ "depends-on": {
+ "Microsoft.NET.Workload.Emscripten.Current": "8.0.33"
+ },
+ "workloads": {
+ "wasm-tools": {
+ "description": ".NET WebAssembly build tools for net8.0",
+ "packs": [
+ "Microsoft.NET.Runtime.WebAssembly.Sdk.net8",
+ "Microsoft.NETCore.App.Runtime.Mono.net8.browser-wasm",
+ "Microsoft.NETCore.App.Runtime.AOT.Cross.net8.browser-wasm"
+ ],
+ "extends": [ "microsoft-net-runtime-mono-tooling", "microsoft-net-sdk-emscripten" ],
+ "platforms": [ "win-x64", "win-arm64", "linux-x64", "linux-arm64", "osx-x64", "osx-arm64"]
+ },
+ "wasm-experimental": {
+ "description": ".NET WebAssembly experimental tooling for net8.0",
+ "packs": [
+ "Microsoft.NET.Runtime.WebAssembly.Templates.net8",
+ "Microsoft.NETCore.App.Runtime.Mono.multithread.net8.browser-wasm",
+ ],
+ "extends": [ "wasm-tools" ],
+ "platforms": [ "win-x64", "win-arm64", "linux-x64", "linux-arm64", "osx-x64", "osx-arm64" ]
+ },
+ "wasi-experimental": {
+ "description": ".NET WASI experimental for net8.0",
+ "packs": [
+ "Microsoft.NET.Runtime.WebAssembly.Wasi.Sdk.net8",
+ "Microsoft.NETCore.App.Runtime.Mono.net8.wasi-wasm",
+ "Microsoft.NET.Runtime.WebAssembly.Templates.net8"
+ ],
+ "extends": [ "microsoft-net-runtime-mono-tooling" ],
+ "platforms": [ "win-x64", "win-arm64", "linux-x64", "linux-arm64", "osx-x64", "osx-arm64" ]
+ },
+ "mobile-librarybuilder": {
+ "description": "Mobile SDK for building a self-contained .NET native library",
+ "packs": [
+ "Microsoft.NET.Runtime.LibraryBuilder.Sdk.net8"
+ ],
+ "extends": [ "microsoft-net-runtime-android-aot", "microsoft-net-runtime-ios", "microsoft-net-runtime-maccatalyst", "microsoft-net-runtime-tvos" ],
+ "platforms": [ "win-x64", "win-arm64", "osx-x64", "osx-arm64" ]
+ },
+ "microsoft-net-runtime-android": {
+ "abstract": true,
+ "description": "Android Mono Runtime",
+ "packs": [
+ "Microsoft.NETCore.App.Runtime.Mono.net8.android-arm",
+ "Microsoft.NETCore.App.Runtime.Mono.net8.android-arm64",
+ "Microsoft.NETCore.App.Runtime.Mono.net8.android-x64",
+ "Microsoft.NETCore.App.Runtime.Mono.net8.android-x86"
+ ],
+ "extends": [ "microsoft-net-runtime-mono-tooling" ],
+ "platforms": [ "win-x64", "win-arm64", "linux-x64", "osx-x64", "osx-arm64" ]
+ },
+ "microsoft-net-runtime-android-aot": {
+ "abstract": true,
+ "description": "Android Mono AOT Workload",
+ "packs": [
+ "Microsoft.NETCore.App.Runtime.AOT.Cross.net8.android-x86",
+ "Microsoft.NETCore.App.Runtime.AOT.Cross.net8.android-x64",
+ "Microsoft.NETCore.App.Runtime.AOT.Cross.net8.android-arm",
+ "Microsoft.NETCore.App.Runtime.AOT.Cross.net8.android-arm64"
+ ],
+ "extends": [ "microsoft-net-runtime-android" ],
+ "platforms": [ "win-x64", "win-arm64", "linux-x64", "osx-x64", "osx-arm64" ]
+ },
+ "microsoft-net-runtime-ios": {
+ "abstract": true,
+ "description": "iOS Mono Runtime and AOT Workload",
+ "packs": [
+ "Microsoft.NETCore.App.Runtime.AOT.Cross.net8.ios-arm64",
+ "Microsoft.NETCore.App.Runtime.AOT.Cross.net8.iossimulator-arm64",
+ "Microsoft.NETCore.App.Runtime.AOT.Cross.net8.iossimulator-x64"
+ ],
+ "extends": [ "runtimes-ios" ],
+ "platforms": [ "win-x64", "win-arm64", "osx-arm64", "osx-x64" ]
+ },
+ "runtimes-ios": {
+ "abstract": true,
+ "description": "iOS Mono Runtime Packs",
+ "packs": [
+ "Microsoft.NETCore.App.Runtime.Mono.net8.ios-arm64",
+ "Microsoft.NETCore.App.Runtime.Mono.net8.iossimulator-arm64",
+ "Microsoft.NETCore.App.Runtime.Mono.net8.iossimulator-x64"
+ ],
+ "extends": [ "microsoft-net-runtime-mono-tooling" ],
+ "platforms": [ "win-x64", "win-arm64", "osx-arm64", "osx-x64" ]
+ },
+ "microsoft-net-runtime-maccatalyst": {
+ "abstract": true,
+ "description": "MacCatalyst Mono Runtime and AOT Workload",
+ "packs": [
+ "Microsoft.NETCore.App.Runtime.AOT.Cross.net8.maccatalyst-arm64",
+ "Microsoft.NETCore.App.Runtime.AOT.Cross.net8.maccatalyst-x64"
+ ],
+ "extends": [ "runtimes-maccatalyst" ],
+ "platforms": [ "win-x64", "win-arm64", "osx-arm64", "osx-x64" ]
+ },
+ "runtimes-maccatalyst": {
+ "abstract": true,
+ "description": "MacCatalyst Mono Runtime Packs",
+ "packs": [
+ "Microsoft.NETCore.App.Runtime.Mono.net8.maccatalyst-arm64",
+ "Microsoft.NETCore.App.Runtime.Mono.net8.maccatalyst-x64"
+ ],
+ "extends": [ "microsoft-net-runtime-mono-tooling" ],
+ "platforms": [ "win-x64", "win-arm64", "osx-arm64", "osx-x64" ]
+ },
+ "microsoft-net-runtime-macos": {
+ "abstract": true,
+ "description": "MacOS CoreCLR and Mono Runtime Workload",
+ "packs": [
+ "Microsoft.NETCore.App.Runtime.Mono.net8.osx-arm64",
+ "Microsoft.NETCore.App.Runtime.Mono.net8.osx-x64",
+ "Microsoft.NETCore.App.Runtime.osx-arm64",
+ "Microsoft.NETCore.App.Runtime.osx-x64"
+ ],
+ "extends": [ "microsoft-net-runtime-mono-tooling" ],
+ "platforms": [ "osx-arm64", "osx-x64" ]
+ },
+ "microsoft-net-runtime-tvos": {
+ "abstract": true,
+ "description": "tvOS Mono Runtime and AOT Workload",
+ "packs": [
+ "Microsoft.NETCore.App.Runtime.AOT.Cross.net8.tvos-arm64",
+ "Microsoft.NETCore.App.Runtime.AOT.Cross.net8.tvossimulator-arm64",
+ "Microsoft.NETCore.App.Runtime.AOT.Cross.net8.tvossimulator-x64"
+ ],
+ "extends": [ "runtimes-tvos" ],
+ "platforms": [ "win-x64", "win-arm64", "osx-arm64", "osx-x64" ]
+ },
+ "runtimes-tvos": {
+ "abstract": true,
+ "description": "tvOS Mono Runtime Packs",
+ "packs": [
+ "Microsoft.NETCore.App.Runtime.Mono.net8.tvos-arm64",
+ "Microsoft.NETCore.App.Runtime.Mono.net8.tvossimulator-arm64",
+ "Microsoft.NETCore.App.Runtime.Mono.net8.tvossimulator-x64"
+ ],
+ "extends": [ "microsoft-net-runtime-mono-tooling" ],
+ "platforms": [ "win-x64", "win-arm64", "osx-arm64", "osx-x64" ]
+ },
+ "runtimes-windows": {
+ "abstract": true,
+ "description": "Windows Runtime Packs",
+ "packs": [
+ "Microsoft.NETCore.App.Runtime.win-x64",
+ "Microsoft.NETCore.App.Runtime.win-x86",
+ "Microsoft.NETCore.App.Runtime.win-arm64"
+ ]
+ },
+ "microsoft-net-runtime-mono-tooling": {
+ "abstract": true,
+ "description": "Shared native build tooling for Mono runtime",
+ "packs": [
+ "Microsoft.NET.Runtime.MonoAOTCompiler.Task.net8",
+ "Microsoft.NET.Runtime.MonoTargets.Sdk.net8"
+ ]
+ }
+ },
+ "packs": {
+ "Microsoft.NET.Runtime.MonoAOTCompiler.Task.net8": {
+ "kind": "Sdk",
+ "version": "8.0.33",
+ "alias-to": {
+ "any": "Microsoft.NET.Runtime.MonoAOTCompiler.Task"
+ }
+ },
+ "Microsoft.NET.Runtime.MonoTargets.Sdk.net8": {
+ "kind": "Sdk",
+ "version": "8.0.33",
+ "alias-to": {
+ "any": "Microsoft.NET.Runtime.MonoTargets.Sdk"
+ }
+ },
+ "Microsoft.NET.Runtime.LibraryBuilder.Sdk.net8": {
+ "kind": "Sdk",
+ "version": "8.0.33",
+ "alias-to": {
+ "any": "Microsoft.NET.Runtime.LibraryBuilder.Sdk"
+ }
+ },
+ "Microsoft.NET.Runtime.WebAssembly.Sdk.net8": {
+ "kind": "Sdk",
+ "version": "8.0.33",
+ "alias-to": {
+ "any": "Microsoft.NET.Runtime.WebAssembly.Sdk"
+ }
+ },
+ "Microsoft.NET.Runtime.WebAssembly.Wasi.Sdk.net8": {
+ "kind": "Sdk",
+ "version": "8.0.33",
+ "alias-to": {
+ "any": "Microsoft.NET.Runtime.WebAssembly.Wasi.Sdk"
+ }
+ },
+ "Microsoft.NET.Runtime.WebAssembly.Templates.net8": {
+ "kind": "template",
+ "version": "8.0.33",
+ "alias-to": {
+ "any": "Microsoft.NET.Runtime.WebAssembly.Templates"
+ }
+ },
+ "Microsoft.NETCore.App.Runtime.Mono.net8.android-arm": {
+ "kind": "framework",
+ "version": "8.0.33",
+ "alias-to": {
+ "any": "Microsoft.NETCore.App.Runtime.Mono.android-arm"
+ }
+ },
+ "Microsoft.NETCore.App.Runtime.Mono.net8.android-arm64": {
+ "kind": "framework",
+ "version": "8.0.33",
+ "alias-to": {
+ "any": "Microsoft.NETCore.App.Runtime.Mono.android-arm64"
+ }
+ },
+ "Microsoft.NETCore.App.Runtime.Mono.net8.android-x64": {
+ "kind": "framework",
+ "version": "8.0.33",
+ "alias-to": {
+ "any": "Microsoft.NETCore.App.Runtime.Mono.android-x64"
+ }
+ },
+ "Microsoft.NETCore.App.Runtime.Mono.net8.android-x86": {
+ "kind": "framework",
+ "version": "8.0.33",
+ "alias-to": {
+ "any": "Microsoft.NETCore.App.Runtime.Mono.android-x86"
+ }
+ },
+ "Microsoft.NETCore.App.Runtime.AOT.Cross.net8.android-x86": {
+ "kind": "Sdk",
+ "version": "8.0.33",
+ "alias-to": {
+ "win-x64": "Microsoft.NETCore.App.Runtime.AOT.win-x64.Cross.android-x86",
+ "win-arm64": "Microsoft.NETCore.App.Runtime.AOT.win-x64.Cross.android-x86",
+ "linux-x64": "Microsoft.NETCore.App.Runtime.AOT.linux-x64.Cross.android-x86",
+ "linux-arm64": "Microsoft.NETCore.App.Runtime.AOT.linux-arm64.Cross.android-x86",
+ "osx-x64": "Microsoft.NETCore.App.Runtime.AOT.osx-x64.Cross.android-x86",
+ "osx-arm64": "Microsoft.NETCore.App.Runtime.AOT.osx-arm64.Cross.android-x86"
+ }
+ },
+ "Microsoft.NETCore.App.Runtime.AOT.Cross.net8.android-x64": {
+ "kind": "Sdk",
+ "version": "8.0.33",
+ "alias-to": {
+ "win-x64": "Microsoft.NETCore.App.Runtime.AOT.win-x64.Cross.android-x64",
+ "win-arm64": "Microsoft.NETCore.App.Runtime.AOT.win-x64.Cross.android-x64",
+ "linux-x64": "Microsoft.NETCore.App.Runtime.AOT.linux-x64.Cross.android-x64",
+ "linux-arm64": "Microsoft.NETCore.App.Runtime.AOT.linux-arm64.Cross.android-x64",
+ "osx-x64": "Microsoft.NETCore.App.Runtime.AOT.osx-x64.Cross.android-x64",
+ "osx-arm64": "Microsoft.NETCore.App.Runtime.AOT.osx-arm64.Cross.android-x64"
+ }
+ },
+ "Microsoft.NETCore.App.Runtime.AOT.Cross.net8.android-arm": {
+ "kind": "Sdk",
+ "version": "8.0.33",
+ "alias-to": {
+ "win-x64": "Microsoft.NETCore.App.Runtime.AOT.win-x64.Cross.android-arm",
+ "win-arm64": "Microsoft.NETCore.App.Runtime.AOT.win-x64.Cross.android-arm",
+ "linux-x64": "Microsoft.NETCore.App.Runtime.AOT.linux-x64.Cross.android-arm",
+ "linux-arm64": "Microsoft.NETCore.App.Runtime.AOT.linux-arm64.Cross.android-arm",
+ "osx-x64": "Microsoft.NETCore.App.Runtime.AOT.osx-x64.Cross.android-arm",
+ "osx-arm64": "Microsoft.NETCore.App.Runtime.AOT.osx-arm64.Cross.android-arm"
+ }
+ },
+ "Microsoft.NETCore.App.Runtime.AOT.Cross.net8.android-arm64": {
+ "kind": "Sdk",
+ "version": "8.0.33",
+ "alias-to": {
+ "win-x64": "Microsoft.NETCore.App.Runtime.AOT.win-x64.Cross.android-arm64",
+ "win-arm64": "Microsoft.NETCore.App.Runtime.AOT.win-x64.Cross.android-arm64",
+ "linux-x64": "Microsoft.NETCore.App.Runtime.AOT.linux-x64.Cross.android-arm64",
+ "linux-arm64": "Microsoft.NETCore.App.Runtime.AOT.linux-arm64.Cross.android-arm64",
+ "osx-x64": "Microsoft.NETCore.App.Runtime.AOT.osx-x64.Cross.android-arm64",
+ "osx-arm64": "Microsoft.NETCore.App.Runtime.AOT.osx-arm64.Cross.android-arm64"
+ }
+ },
+ "Microsoft.NETCore.App.Runtime.Mono.net8.maccatalyst-arm64": {
+ "kind": "framework",
+ "version": "8.0.33",
+ "alias-to": {
+ "any": "Microsoft.NETCore.App.Runtime.Mono.maccatalyst-arm64"
+ }
+ },
+ "Microsoft.NETCore.App.Runtime.Mono.net8.maccatalyst-x64": {
+ "kind": "framework",
+ "version": "8.0.33",
+ "alias-to": {
+ "any": "Microsoft.NETCore.App.Runtime.Mono.maccatalyst-x64"
+ }
+ },
+ "Microsoft.NETCore.App.Runtime.Mono.net8.osx-arm64": {
+ "kind": "framework",
+ "version": "8.0.33",
+ "alias-to": {
+ "any": "Microsoft.NETCore.App.Runtime.Mono.osx-arm64"
+ }
+ },
+ "Microsoft.NETCore.App.Runtime.Mono.net8.osx-x64": {
+ "kind": "framework",
+ "version": "8.0.33",
+ "alias-to": {
+ "any": "Microsoft.NETCore.App.Runtime.Mono.osx-x64"
+ }
+ },
+ "Microsoft.NETCore.App.Runtime.osx-arm64": {
+ "kind": "framework",
+ "version": "8.0.33"
+ },
+ "Microsoft.NETCore.App.Runtime.osx-x64": {
+ "kind": "framework",
+ "version": "8.0.33"
+ },
+ "Microsoft.NETCore.App.Runtime.Mono.net8.ios-arm64" : {
+ "kind": "framework",
+ "version": "8.0.33",
+ "alias-to": {
+ "any": "Microsoft.NETCore.App.Runtime.Mono.ios-arm64"
+ }
+ },
+ "Microsoft.NETCore.App.Runtime.Mono.net8.iossimulator-arm64" : {
+ "kind": "framework",
+ "version": "8.0.33",
+ "alias-to": {
+ "any": "Microsoft.NETCore.App.Runtime.Mono.iossimulator-arm64"
+ }
+ },
+ "Microsoft.NETCore.App.Runtime.Mono.net8.iossimulator-x64" : {
+ "kind": "framework",
+ "version": "8.0.33",
+ "alias-to": {
+ "any": "Microsoft.NETCore.App.Runtime.Mono.iossimulator-x64"
+ }
+ },
+ "Microsoft.NETCore.App.Runtime.AOT.Cross.net8.tvos-arm64": {
+ "kind": "Sdk",
+ "version": "8.0.33",
+ "alias-to": {
+ "osx-x64": "Microsoft.NETCore.App.Runtime.AOT.osx-x64.Cross.tvos-arm64",
+ "osx-arm64": "Microsoft.NETCore.App.Runtime.AOT.osx-arm64.Cross.tvos-arm64",
+ }
+ },
+ "Microsoft.NETCore.App.Runtime.Mono.net8.tvos-arm64" : {
+ "kind": "framework",
+ "version": "8.0.33",
+ "alias-to": {
+ "any": "Microsoft.NETCore.App.Runtime.Mono.tvos-arm64"
+ }
+ },
+ "Microsoft.NETCore.App.Runtime.Mono.net8.tvossimulator-arm64" : {
+ "kind": "framework",
+ "version": "8.0.33",
+ "alias-to": {
+ "any": "Microsoft.NETCore.App.Runtime.Mono.tvossimulator-arm64"
+ }
+ },
+ "Microsoft.NETCore.App.Runtime.Mono.net8.tvossimulator-x64" : {
+ "kind": "framework",
+ "version": "8.0.33",
+ "alias-to": {
+ "any": "Microsoft.NETCore.App.Runtime.Mono.tvossimulator-x64"
+ }
+ },
+ "Microsoft.NETCore.App.Runtime.AOT.Cross.net8.maccatalyst-arm64": {
+ "kind": "Sdk",
+ "version": "8.0.33",
+ "alias-to": {
+ "osx-arm64": "Microsoft.NETCore.App.Runtime.AOT.osx-arm64.Cross.maccatalyst-arm64",
+ "osx-x64": "Microsoft.NETCore.App.Runtime.AOT.osx-x64.Cross.maccatalyst-arm64"
+ }
+ },
+ "Microsoft.NETCore.App.Runtime.AOT.Cross.net8.maccatalyst-x64": {
+ "kind": "Sdk",
+ "version": "8.0.33",
+ "alias-to": {
+ "osx-arm64": "Microsoft.NETCore.App.Runtime.AOT.osx-arm64.Cross.maccatalyst-x64",
+ "osx-x64": "Microsoft.NETCore.App.Runtime.AOT.osx-x64.Cross.maccatalyst-x64"
+ }
+ },
+ "Microsoft.NETCore.App.Runtime.AOT.Cross.net8.tvossimulator-arm64": {
+ "kind": "Sdk",
+ "version": "8.0.33",
+ "alias-to": {
+ "osx-arm64": "Microsoft.NETCore.App.Runtime.AOT.osx-arm64.Cross.tvossimulator-arm64",
+ "osx-x64": "Microsoft.NETCore.App.Runtime.AOT.osx-x64.Cross.tvossimulator-arm64"
+ }
+ },
+ "Microsoft.NETCore.App.Runtime.AOT.Cross.net8.tvossimulator-x64": {
+ "kind": "Sdk",
+ "version": "8.0.33",
+ "alias-to": {
+ "osx-arm64": "Microsoft.NETCore.App.Runtime.AOT.osx-arm64.Cross.tvossimulator-x64",
+ "osx-x64": "Microsoft.NETCore.App.Runtime.AOT.osx-x64.Cross.tvossimulator-x64"
+ }
+ },
+ "Microsoft.NETCore.App.Runtime.AOT.Cross.net8.ios-arm64": {
+ "kind": "Sdk",
+ "version": "8.0.33",
+ "alias-to": {
+ "osx-x64": "Microsoft.NETCore.App.Runtime.AOT.osx-x64.Cross.ios-arm64",
+ "osx-arm64": "Microsoft.NETCore.App.Runtime.AOT.osx-arm64.Cross.ios-arm64",
+ }
+ },
+ "Microsoft.NETCore.App.Runtime.AOT.Cross.net8.iossimulator-arm64": {
+ "kind": "Sdk",
+ "version": "8.0.33",
+ "alias-to": {
+ "osx-arm64": "Microsoft.NETCore.App.Runtime.AOT.osx-arm64.Cross.iossimulator-arm64",
+ "osx-x64": "Microsoft.NETCore.App.Runtime.AOT.osx-x64.Cross.iossimulator-arm64"
+ }
+ },
+ "Microsoft.NETCore.App.Runtime.AOT.Cross.net8.iossimulator-x64": {
+ "kind": "Sdk",
+ "version": "8.0.33",
+ "alias-to": {
+ "osx-arm64": "Microsoft.NETCore.App.Runtime.AOT.osx-arm64.Cross.iossimulator-x64",
+ "osx-x64": "Microsoft.NETCore.App.Runtime.AOT.osx-x64.Cross.iossimulator-x64"
+ }
+ },
+ "Microsoft.NETCore.App.Runtime.AOT.Cross.net8.browser-wasm": {
+ "kind": "Sdk",
+ "version": "8.0.33",
+ "alias-to": {
+ "win-x64": "Microsoft.NETCore.App.Runtime.AOT.win-x64.Cross.browser-wasm",
+ "win-arm64": "Microsoft.NETCore.App.Runtime.AOT.win-x64.Cross.browser-wasm",
+ "linux-x64": "Microsoft.NETCore.App.Runtime.AOT.linux-x64.Cross.browser-wasm",
+ "linux-arm64": "Microsoft.NETCore.App.Runtime.AOT.linux-arm64.Cross.browser-wasm",
+ "osx-x64": "Microsoft.NETCore.App.Runtime.AOT.osx-x64.Cross.browser-wasm",
+ "osx-arm64": "Microsoft.NETCore.App.Runtime.AOT.osx-arm64.Cross.browser-wasm"
+ }
+ },
+ "Microsoft.NETCore.App.Runtime.Mono.net8.browser-wasm" : {
+ "kind": "framework",
+ "version": "8.0.33",
+ "alias-to": {
+ "any": "Microsoft.NETCore.App.Runtime.Mono.browser-wasm"
+ }
+ },
+ "Microsoft.NETCore.App.Runtime.Mono.multithread.net8.browser-wasm" : {
+ "kind": "framework",
+ "version": "8.0.33",
+ "alias-to": {
+ "any": "Microsoft.NETCore.App.Runtime.Mono.multithread.browser-wasm"
+ }
+ },
+ "Microsoft.NETCore.App.Runtime.Mono.net8.wasi-wasm" : {
+ "kind": "framework",
+ "version": "8.0.33",
+ "alias-to": {
+ "any": "Microsoft.NETCore.App.Runtime.Mono.wasi-wasm"
+ }
+ },
+ "Microsoft.NETCore.App.Runtime.win-x64" : {
+ "kind": "framework",
+ "version": "8.0.33"
+ },
+ "Microsoft.NETCore.App.Runtime.win-x86" : {
+ "kind": "framework",
+ "version": "8.0.33"
+ },
+ "Microsoft.NETCore.App.Runtime.win-arm64" : {
+ "kind": "framework",
+ "version": "8.0.33"
+ }
+ }
+}
diff --git a/.dotnet/sdk-advertising/8.0.400/microsoft.net.workload.mono.toolchain.current/WorkloadManifest.targets b/.dotnet/sdk-advertising/8.0.400/microsoft.net.workload.mono.toolchain.current/WorkloadManifest.targets
new file mode 100644
index 0000000..74ebdb2
--- /dev/null
+++ b/.dotnet/sdk-advertising/8.0.400/microsoft.net.workload.mono.toolchain.current/WorkloadManifest.targets
@@ -0,0 +1,218 @@
+
+
+
+ <_RuntimePackInWorkloadVersionCurrent>8.0.33
+ <_RuntimePackInWorkloadVersion7>7.0.20
+ <_RuntimePackInWorkloadVersion6>6.0.36
+
+ true
+ true
+ true
+ true
+
+
+ $(WasmNativeWorkload8)
+
+
+
+
+
+ <_BrowserWorkloadNotSupportedForTFM Condition="$([MSBuild]::VersionLessThan($(TargetFrameworkVersion), '6.0'))">true
+ <_BrowserWorkloadDisabled>$(_BrowserWorkloadNotSupportedForTFM)
+
+ <_UsingBlazorOrWasmSdk Condition="'$(UsingMicrosoftNETSdkBlazorWebAssembly)' == 'true' or '$(UsingMicrosoftNETSdkWebAssembly)' == 'true'">true
+
+
+
+
+
+
+
+
+
+ true
+ $(WasmNativeWorkload7)
+ $(WasmNativeWorkload8)
+ $(WasmNativeWorkload)
+ false
+ $(WasmNativeWorkloadAvailable)
+
+
+
+
+ <_WasmPropertiesDifferFromRuntimePackThusNativeBuildNeeded Condition="
+ '$(WasmEnableLegacyJsInterop)' == 'false' or
+ '$(WasmEnableSIMD)' == 'false' or
+ '$(WasmEnableExceptionHandling)' == 'false' or
+ '$(InvariantTimezone)' == 'true' or
+ ('$(_UsingBlazorOrWasmSdk)' != 'true' and '$(InvariantGlobalization)' == 'true') or
+ '$(WasmNativeStrip)' == 'false'">true
+
+
+
+ <_WasmNativeWorkloadNeeded Condition="
+ '$(_WasmPropertiesDifferFromRuntimePackThusNativeBuildNeeded)' == 'true' or
+ '$(RunAOTCompilation)' == 'true' or
+ '$(WasmBuildNative)' == 'true' or
+ '$(WasmGenerateAppBundle)' == 'true' or
+ '$(_UsingBlazorOrWasmSdk)' != 'true'" >true
+
+ false
+ true
+ $(WasmNativeWorkloadAvailable)
+
+
+
+
+ <_IsAndroidLibraryMode Condition="'$(RuntimeIdentifier)' == 'android-arm64' or '$(RuntimeIdentifier)' == 'android-arm' or '$(RuntimeIdentifier)' == 'android-x64' or '$(RuntimeIdentifier)' == 'android-x86'">true
+ <_IsAppleMobileLibraryMode Condition="'$(RuntimeIdentifier)' == 'ios-arm64' or '$(RuntimeIdentifier)' == 'iossimulator-arm64' or '$(RuntimeIdentifier)' == 'iossimulator-x64' or '$(RuntimeIdentifier)' == 'maccatalyst-arm64' or '$(RuntimeIdentifier)' == 'maccatalyst-x64' or '$(RuntimeIdentifier)' == 'tvos-arm64'">true
+ <_IsiOSLibraryMode Condition="'$(RuntimeIdentifier)' == 'ios-arm64' or '$(RuntimeIdentifier)' == 'iossimulator-arm64' or '$(RuntimeIdentifier)' == 'iossimulator-x64'">true
+ <_IsMacCatalystLibraryMode Condition="'$(RuntimeIdentifier)' == 'maccatalyst-arm64' or '$(RuntimeIdentifier)' == 'maccatalyst-x64'">true
+ <_IstvOSLibraryMode Condition="'$(RuntimeIdentifier)' == 'tvos-arm64'">true
+
+
+
+ true
+
+
+
+ false
+ true
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <_MonoWorkloadTargetsMobile>true
+ <_MonoWorkloadRuntimePackPackageVersion>$(_RuntimePackInWorkloadVersionCurrent)
+ <_KnownWebAssemblySdkPackVersion>$(_RuntimePackInWorkloadVersionCurrent)
+
+
+
+
+ true
+ 1.0
+
+
+
+
+
+
+
+
+ %(RuntimePackRuntimeIdentifiers);wasi-wasm
+
+ $(_MonoWorkloadRuntimePackPackageVersion)
+
+ Microsoft.NETCore.App.Runtime.Mono.multithread.**RID**
+
+
+ $(_KnownWebAssemblySdkPackVersion)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/.dotnet/sdk-advertising/8.0.400/microsoft.net.workload.mono.toolchain.current/WorkloadTelemetry.targets b/.dotnet/sdk-advertising/8.0.400/microsoft.net.workload.mono.toolchain.current/WorkloadTelemetry.targets
new file mode 100644
index 0000000..d94c7de
--- /dev/null
+++ b/.dotnet/sdk-advertising/8.0.400/microsoft.net.workload.mono.toolchain.current/WorkloadTelemetry.targets
@@ -0,0 +1,48 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <_WorkloadUsesBlazorWasm>$(UsingMicrosoftNETSdkBlazorWebAssembly)
+ <_WorkloadUsesWasmSDK>$(UsingMicrosoftNETSdkWebAssembly)
+ <_WorkloadUsesMonoAOT>$(RunAOTCompilation)
+ <_WorkloadUsesMonoAOT Condition="'$(_WorkloadUsesMonoAOT)' == '' and '$(PublishAot)' != 'true' and ('$(TargetPlatformIdentifier)' == 'maccatalyst' or '$(TargetPlatformIdentifier)' == 'ios' or '$(TargetPlatformIdentifier)' == 'tvos')">$(_RunAotCompiler)
+ <_WorkloadUsesNativeAOT>$(PublishAot)
+ <_WorkloadUsesInterpreter>$(MonoForceInterpreter)
+ <_WorkloadUsesInterpreter Condition="'$(_WorkloadUsesInterpreter)' == '' and '$(UseInterpreter)' == 'true'">true
+ <_WorkloadUsesInterpreter Condition="'$(_WorkloadUsesInterpreter)' == '' and '$(RunAOTCompilation)' != 'true' and ('$(_WorkloadUsesBlazorWasm)' == 'true' or '$(_WorkloadUsesWasmSDK)' == 'true')">true
+ <_WorkloadUsesLibraryMode Condition="'$(NativeLib)' != '' and ('$(_WorkloadUsesMonoAOT)' == 'true' or '$(_WorkloadUsesNativeAOT)' == 'true')">true
+ <_WorkloadUsesStripILAfterAOT Condition="'$(WasmStripILAfterAOT)' == 'true' or '$(AndroidStripILAfterAOT)' == 'true'">true
+
+
+
+ <_WorkloadUsesOther Condition="'$([System.IO.Path]::GetFileName("%(ReferencePath.Identity)").ToLowerInvariant())' == 'avalonia.dll'">true
+ <_WorkloadUsesOther Condition="'$([System.IO.Path]::GetFileName("%(ReferencePath.Identity)").ToLowerInvariant())' == 'uno.dll'">true
+ <_WorkloadUsesMobileSDKOnly Condition="'$(RuntimeIdentifier)' != 'browser-wasm' and '$(UseMaui)' != 'true' and '$(_WorkloadUsesOther)' != 'true'">true
+
+
+
diff --git a/.dotnet/sdk-advertising/8.0.400/microsoft.net.workload.mono.toolchain.current/localize/WorkloadManifest.cs.json b/.dotnet/sdk-advertising/8.0.400/microsoft.net.workload.mono.toolchain.current/localize/WorkloadManifest.cs.json
new file mode 100644
index 0000000..24ca535
--- /dev/null
+++ b/.dotnet/sdk-advertising/8.0.400/microsoft.net.workload.mono.toolchain.current/localize/WorkloadManifest.cs.json
@@ -0,0 +1,3 @@
+{
+ "workloads/wasm-tools/description": "Nástroje pro sestavení .NET WebAssembly"
+}
\ No newline at end of file
diff --git a/.dotnet/sdk-advertising/8.0.400/microsoft.net.workload.mono.toolchain.current/localize/WorkloadManifest.de.json b/.dotnet/sdk-advertising/8.0.400/microsoft.net.workload.mono.toolchain.current/localize/WorkloadManifest.de.json
new file mode 100644
index 0000000..891691d
--- /dev/null
+++ b/.dotnet/sdk-advertising/8.0.400/microsoft.net.workload.mono.toolchain.current/localize/WorkloadManifest.de.json
@@ -0,0 +1,3 @@
+{
+ "workloads/wasm-tools/description": ".NET WebAssembly-Buildtools"
+}
\ No newline at end of file
diff --git a/.dotnet/sdk-advertising/8.0.400/microsoft.net.workload.mono.toolchain.current/localize/WorkloadManifest.en.json b/.dotnet/sdk-advertising/8.0.400/microsoft.net.workload.mono.toolchain.current/localize/WorkloadManifest.en.json
new file mode 100644
index 0000000..5bcb3f5
--- /dev/null
+++ b/.dotnet/sdk-advertising/8.0.400/microsoft.net.workload.mono.toolchain.current/localize/WorkloadManifest.en.json
@@ -0,0 +1,5 @@
+{
+ "workloads/wasm-tools/description": ".NET WebAssembly build tools",
+ "workloads/wasm-tools-experimental/description": ".NET WebAssembly experimental tooling",
+ "workloads/runtimes-windows/description": "Windows Runtime Packs"
+}
diff --git a/.dotnet/sdk-advertising/8.0.400/microsoft.net.workload.mono.toolchain.current/localize/WorkloadManifest.es.json b/.dotnet/sdk-advertising/8.0.400/microsoft.net.workload.mono.toolchain.current/localize/WorkloadManifest.es.json
new file mode 100644
index 0000000..4d54ce7
--- /dev/null
+++ b/.dotnet/sdk-advertising/8.0.400/microsoft.net.workload.mono.toolchain.current/localize/WorkloadManifest.es.json
@@ -0,0 +1,3 @@
+{
+ "workloads/wasm-tools/description": "Herramientas de compilación de WebAssembly de .NET"
+}
\ No newline at end of file
diff --git a/.dotnet/sdk-advertising/8.0.400/microsoft.net.workload.mono.toolchain.current/localize/WorkloadManifest.fr.json b/.dotnet/sdk-advertising/8.0.400/microsoft.net.workload.mono.toolchain.current/localize/WorkloadManifest.fr.json
new file mode 100644
index 0000000..e7a3dfe
--- /dev/null
+++ b/.dotnet/sdk-advertising/8.0.400/microsoft.net.workload.mono.toolchain.current/localize/WorkloadManifest.fr.json
@@ -0,0 +1,3 @@
+{
+ "workloads/wasm-tools/description": "Outils de construction .NET WebAssembly"
+}
\ No newline at end of file
diff --git a/.dotnet/sdk-advertising/8.0.400/microsoft.net.workload.mono.toolchain.current/localize/WorkloadManifest.it.json b/.dotnet/sdk-advertising/8.0.400/microsoft.net.workload.mono.toolchain.current/localize/WorkloadManifest.it.json
new file mode 100644
index 0000000..65b188d
--- /dev/null
+++ b/.dotnet/sdk-advertising/8.0.400/microsoft.net.workload.mono.toolchain.current/localize/WorkloadManifest.it.json
@@ -0,0 +1,3 @@
+{
+ "workloads/wasm-tools/description": "Strumenti di compilazione WebAssembly .NET"
+}
\ No newline at end of file
diff --git a/.dotnet/sdk-advertising/8.0.400/microsoft.net.workload.mono.toolchain.current/localize/WorkloadManifest.ja.json b/.dotnet/sdk-advertising/8.0.400/microsoft.net.workload.mono.toolchain.current/localize/WorkloadManifest.ja.json
new file mode 100644
index 0000000..bed9081
--- /dev/null
+++ b/.dotnet/sdk-advertising/8.0.400/microsoft.net.workload.mono.toolchain.current/localize/WorkloadManifest.ja.json
@@ -0,0 +1,3 @@
+{
+ "workloads/wasm-tools/description": ".NET WebAssembly ビルド ツール"
+}
\ No newline at end of file
diff --git a/.dotnet/sdk-advertising/8.0.400/microsoft.net.workload.mono.toolchain.current/localize/WorkloadManifest.ko.json b/.dotnet/sdk-advertising/8.0.400/microsoft.net.workload.mono.toolchain.current/localize/WorkloadManifest.ko.json
new file mode 100644
index 0000000..9e7a2f0
--- /dev/null
+++ b/.dotnet/sdk-advertising/8.0.400/microsoft.net.workload.mono.toolchain.current/localize/WorkloadManifest.ko.json
@@ -0,0 +1,3 @@
+{
+ "workloads/wasm-tools/description": ".NET WebAssembly 빌드 도구"
+}
\ No newline at end of file
diff --git a/.dotnet/sdk-advertising/8.0.400/microsoft.net.workload.mono.toolchain.current/localize/WorkloadManifest.pl.json b/.dotnet/sdk-advertising/8.0.400/microsoft.net.workload.mono.toolchain.current/localize/WorkloadManifest.pl.json
new file mode 100644
index 0000000..62e111d
--- /dev/null
+++ b/.dotnet/sdk-advertising/8.0.400/microsoft.net.workload.mono.toolchain.current/localize/WorkloadManifest.pl.json
@@ -0,0 +1,3 @@
+{
+ "workloads/wasm-tools/description": "Narzędzia kompilacji zestawu WebAssembly platformy .NET"
+}
\ No newline at end of file
diff --git a/.dotnet/sdk-advertising/8.0.400/microsoft.net.workload.mono.toolchain.current/localize/WorkloadManifest.pt-BR.json b/.dotnet/sdk-advertising/8.0.400/microsoft.net.workload.mono.toolchain.current/localize/WorkloadManifest.pt-BR.json
new file mode 100644
index 0000000..db37343
--- /dev/null
+++ b/.dotnet/sdk-advertising/8.0.400/microsoft.net.workload.mono.toolchain.current/localize/WorkloadManifest.pt-BR.json
@@ -0,0 +1,3 @@
+{
+ "workloads/wasm-tools/description": "Ferramentas de build do .NET WebAssembly"
+}
\ No newline at end of file
diff --git a/.dotnet/sdk-advertising/8.0.400/microsoft.net.workload.mono.toolchain.current/localize/WorkloadManifest.ru.json b/.dotnet/sdk-advertising/8.0.400/microsoft.net.workload.mono.toolchain.current/localize/WorkloadManifest.ru.json
new file mode 100644
index 0000000..7230d7e
--- /dev/null
+++ b/.dotnet/sdk-advertising/8.0.400/microsoft.net.workload.mono.toolchain.current/localize/WorkloadManifest.ru.json
@@ -0,0 +1,3 @@
+{
+ "workloads/wasm-tools/description": "Средства сборки WebAssembly .NET"
+}
\ No newline at end of file
diff --git a/.dotnet/sdk-advertising/8.0.400/microsoft.net.workload.mono.toolchain.current/localize/WorkloadManifest.tr.json b/.dotnet/sdk-advertising/8.0.400/microsoft.net.workload.mono.toolchain.current/localize/WorkloadManifest.tr.json
new file mode 100644
index 0000000..6fa976b
--- /dev/null
+++ b/.dotnet/sdk-advertising/8.0.400/microsoft.net.workload.mono.toolchain.current/localize/WorkloadManifest.tr.json
@@ -0,0 +1,3 @@
+{
+ "workloads/wasm-tools/description": ".NET WebAssembly derleme araçları"
+}
\ No newline at end of file
diff --git a/.dotnet/sdk-advertising/8.0.400/microsoft.net.workload.mono.toolchain.current/localize/WorkloadManifest.zh-Hans.json b/.dotnet/sdk-advertising/8.0.400/microsoft.net.workload.mono.toolchain.current/localize/WorkloadManifest.zh-Hans.json
new file mode 100644
index 0000000..5c042d0
--- /dev/null
+++ b/.dotnet/sdk-advertising/8.0.400/microsoft.net.workload.mono.toolchain.current/localize/WorkloadManifest.zh-Hans.json
@@ -0,0 +1,3 @@
+{
+ "workloads/wasm-tools/description": ".NET WebAssembly 生成工具"
+}
\ No newline at end of file
diff --git a/.dotnet/sdk-advertising/8.0.400/microsoft.net.workload.mono.toolchain.current/localize/WorkloadManifest.zh-Hant.json b/.dotnet/sdk-advertising/8.0.400/microsoft.net.workload.mono.toolchain.current/localize/WorkloadManifest.zh-Hant.json
new file mode 100644
index 0000000..17e6026
--- /dev/null
+++ b/.dotnet/sdk-advertising/8.0.400/microsoft.net.workload.mono.toolchain.current/localize/WorkloadManifest.zh-Hant.json
@@ -0,0 +1,3 @@
+{
+ "workloads/wasm-tools/description": ".NET WebAssembly 組建工具"
+}
\ No newline at end of file
diff --git a/.dotnet/sdk-advertising/8.0.400/microsoft.net.workload.mono.toolchain.net6/AdvertisedManifestFeatureBand.txt b/.dotnet/sdk-advertising/8.0.400/microsoft.net.workload.mono.toolchain.net6/AdvertisedManifestFeatureBand.txt
new file mode 100644
index 0000000..d3f1dda
--- /dev/null
+++ b/.dotnet/sdk-advertising/8.0.400/microsoft.net.workload.mono.toolchain.net6/AdvertisedManifestFeatureBand.txt
@@ -0,0 +1 @@
+8.0.100
\ No newline at end of file
diff --git a/.dotnet/sdk-advertising/8.0.400/microsoft.net.workload.mono.toolchain.net6/WorkloadManifest.json b/.dotnet/sdk-advertising/8.0.400/microsoft.net.workload.mono.toolchain.net6/WorkloadManifest.json
new file mode 100644
index 0000000..85c5a88
--- /dev/null
+++ b/.dotnet/sdk-advertising/8.0.400/microsoft.net.workload.mono.toolchain.net6/WorkloadManifest.json
@@ -0,0 +1,459 @@
+{
+ "version": "8.0.33",
+ "depends-on": {
+ "Microsoft.NET.Workload.Emscripten.net6": "8.0.33"
+ },
+ "workloads": {
+ "wasm-tools-net6": {
+ "description": ".NET WebAssembly build tools for net6.0",
+ "packs": [
+ "Microsoft.NET.Runtime.WebAssembly.Sdk.net6",
+ "Microsoft.NETCore.App.Runtime.Mono.net6.browser-wasm",
+ "Microsoft.NETCore.App.Runtime.AOT.Cross.net6.browser-wasm"
+ ],
+ "extends": [ "microsoft-net-runtime-mono-tooling-net6", "microsoft-net-sdk-emscripten-net6" ],
+ "platforms": [ "win-x64", "win-arm64", "linux-x64", "osx-x64", "osx-arm64" ]
+ },
+ "microsoft-net-runtime-android-net6": {
+ "abstract": true,
+ "description": "Android Mono Runtime",
+ "packs": [
+ "Microsoft.NETCore.App.Runtime.Mono.net6.android-arm",
+ "Microsoft.NETCore.App.Runtime.Mono.net6.android-arm64",
+ "Microsoft.NETCore.App.Runtime.Mono.net6.android-x64",
+ "Microsoft.NETCore.App.Runtime.Mono.net6.android-x86"
+ ],
+ "extends": [ "microsoft-net-runtime-mono-tooling-net6" ],
+ "platforms": [ "win-x64", "win-arm64", "linux-x64", "osx-x64", "osx-arm64" ]
+ },
+ "microsoft-net-runtime-android-aot-net6": {
+ "abstract": true,
+ "description": "Android Mono AOT Workload",
+ "packs": [
+ "Microsoft.NETCore.App.Runtime.AOT.Cross.net6.android-x86",
+ "Microsoft.NETCore.App.Runtime.AOT.Cross.net6.android-x64",
+ "Microsoft.NETCore.App.Runtime.AOT.Cross.net6.android-arm",
+ "Microsoft.NETCore.App.Runtime.AOT.Cross.net6.android-arm64"
+ ],
+ "extends": [ "microsoft-net-runtime-android-net6" ],
+ "platforms": [ "win-x64", "win-arm64", "linux-x64", "osx-x64", "osx-arm64" ]
+ },
+ "microsoft-net-runtime-ios-net6": {
+ "abstract": true,
+ "description": "iOS Mono Runtime and AOT Workload",
+ "packs": [
+ "Microsoft.NETCore.App.Runtime.AOT.Cross.net6.ios-arm",
+ "Microsoft.NETCore.App.Runtime.AOT.Cross.net6.ios-arm64",
+ "Microsoft.NETCore.App.Runtime.AOT.Cross.net6.iossimulator-arm64",
+ "Microsoft.NETCore.App.Runtime.AOT.Cross.net6.iossimulator-x64",
+ "Microsoft.NETCore.App.Runtime.AOT.Cross.net6.iossimulator-x86"
+ ],
+ "extends": [ "runtimes-ios-net6" ],
+ "platforms": [ "win-x64", "win-arm64", "osx-arm64", "osx-x64" ]
+ },
+ "runtimes-ios-net6": {
+ "abstract": true,
+ "description": "iOS Mono Runtime Packs",
+ "packs": [
+ "Microsoft.NETCore.App.Runtime.Mono.net6.ios-arm",
+ "Microsoft.NETCore.App.Runtime.Mono.net6.ios-arm64",
+ "Microsoft.NETCore.App.Runtime.Mono.net6.iossimulator-arm64",
+ "Microsoft.NETCore.App.Runtime.Mono.net6.iossimulator-x64",
+ "Microsoft.NETCore.App.Runtime.Mono.net6.iossimulator-x86"
+ ],
+ "extends": [ "microsoft-net-runtime-mono-tooling-net6" ],
+ "platforms": [ "win-x64", "win-arm64", "osx-arm64", "osx-x64" ]
+ },
+ "microsoft-net-runtime-maccatalyst-net6": {
+ "abstract": true,
+ "description": "MacCatalyst Mono Runtime and AOT Workload",
+ "packs": [
+ "Microsoft.NETCore.App.Runtime.AOT.Cross.net6.maccatalyst-arm64",
+ "Microsoft.NETCore.App.Runtime.AOT.Cross.net6.maccatalyst-x64"
+ ],
+ "extends": [ "runtimes-maccatalyst-net6" ],
+ "platforms": [ "win-x64", "win-arm64", "osx-arm64", "osx-x64" ]
+ },
+ "runtimes-maccatalyst-net6": {
+ "abstract": true,
+ "description": "MacCatalyst Mono Runtime Packs",
+ "packs": [
+ "Microsoft.NETCore.App.Runtime.Mono.net6.maccatalyst-arm64",
+ "Microsoft.NETCore.App.Runtime.Mono.net6.maccatalyst-x64"
+ ],
+ "extends": [ "microsoft-net-runtime-mono-tooling-net6" ],
+ "platforms": [ "win-x64", "win-arm64", "osx-arm64", "osx-x64" ]
+ },
+ "microsoft-net-runtime-macos-net6": {
+ "abstract": true,
+ "description": "MacOS CoreCLR and Mono Runtime Workload",
+ "packs": [
+ "Microsoft.NETCore.App.Runtime.Mono.net6.osx-arm64",
+ "Microsoft.NETCore.App.Runtime.Mono.net6.osx-x64",
+ "Microsoft.NETCore.App.Runtime.net6.osx-arm64",
+ "Microsoft.NETCore.App.Runtime.net6.osx-x64"
+ ],
+ "extends": [ "microsoft-net-runtime-mono-tooling-net6" ],
+ "platforms": [ "osx-arm64", "osx-x64" ]
+ },
+ "microsoft-net-runtime-tvos-net6": {
+ "abstract": true,
+ "description": "tvOS Mono Runtime and AOT Workload",
+ "packs": [
+ "Microsoft.NETCore.App.Runtime.AOT.Cross.net6.tvos-arm64",
+ "Microsoft.NETCore.App.Runtime.AOT.Cross.net6.tvossimulator-arm64",
+ "Microsoft.NETCore.App.Runtime.AOT.Cross.net6.tvossimulator-x64"
+ ],
+ "extends": [ "runtimes-tvos-net6" ],
+ "platforms": [ "win-x64", "win-arm64", "osx-arm64", "osx-x64" ]
+ },
+ "runtimes-tvos-net6": {
+ "abstract": true,
+ "description": "tvOS Mono Runtime Packs",
+ "packs": [
+ "Microsoft.NETCore.App.Runtime.Mono.net6.tvos-arm64",
+ "Microsoft.NETCore.App.Runtime.Mono.net6.tvossimulator-arm64",
+ "Microsoft.NETCore.App.Runtime.Mono.net6.tvossimulator-x64"
+ ],
+ "extends": [ "microsoft-net-runtime-mono-tooling-net6" ],
+ "platforms": [ "win-x64", "win-arm64", "osx-arm64", "osx-x64" ]
+ },
+ "runtimes-windows-net6": {
+ "abstract": true,
+ "description": "Windows Runtime Packs for net6.0",
+ "packs": [
+ "Microsoft.NETCore.App.Runtime.net6.win-x64",
+ "Microsoft.NETCore.App.Runtime.net6.win-x86",
+ "Microsoft.NETCore.App.Runtime.net6.win-arm",
+ "Microsoft.NETCore.App.Runtime.net6.win-arm64"
+ ]
+ },
+ "microsoft-net-runtime-mono-tooling-net6": {
+ "abstract": true,
+ "description": "Shared native build tooling for Mono runtime",
+ "packs": [
+ "Microsoft.NET.Runtime.MonoAOTCompiler.Task.net6",
+ "Microsoft.NET.Runtime.MonoTargets.Sdk.net6"
+ ]
+ }
+ },
+ "packs": {
+ "Microsoft.NET.Runtime.MonoAOTCompiler.Task.net6": {
+ "kind": "Sdk",
+ "version": "6.0.36",
+ "alias-to": {
+ "any": "Microsoft.NET.Runtime.MonoAOTCompiler.Task"
+ }
+ },
+ "Microsoft.NET.Runtime.MonoTargets.Sdk.net6": {
+ "kind": "Sdk",
+ "version": "6.0.36",
+ "alias-to": {
+ "any": "Microsoft.NET.Runtime.MonoTargets.Sdk"
+ }
+ },
+ "Microsoft.NET.Runtime.WebAssembly.Sdk.net6": {
+ "kind": "Sdk",
+ "version": "6.0.36",
+ "alias-to": {
+ "any": "Microsoft.NET.Runtime.WebAssembly.Sdk"
+ }
+ },
+ "Microsoft.NETCore.App.Runtime.Mono.net6.android-arm": {
+ "kind": "framework",
+ "version": "6.0.36",
+ "alias-to": {
+ "any": "Microsoft.NETCore.App.Runtime.Mono.android-arm"
+ }
+ },
+ "Microsoft.NETCore.App.Runtime.Mono.net6.android-arm64": {
+ "kind": "framework",
+ "version": "6.0.36",
+ "alias-to": {
+ "any": "Microsoft.NETCore.App.Runtime.Mono.android-arm64"
+ }
+ },
+ "Microsoft.NETCore.App.Runtime.Mono.net6.android-x64": {
+ "kind": "framework",
+ "version": "6.0.36",
+ "alias-to": {
+ "any": "Microsoft.NETCore.App.Runtime.Mono.android-x64"
+ }
+ },
+ "Microsoft.NETCore.App.Runtime.Mono.net6.android-x86": {
+ "kind": "framework",
+ "version": "6.0.36",
+ "alias-to": {
+ "any": "Microsoft.NETCore.App.Runtime.Mono.android-x86"
+ }
+ },
+ "Microsoft.NETCore.App.Runtime.AOT.Cross.net6.android-x86": {
+ "kind": "Sdk",
+ "version": "6.0.36",
+ "alias-to": {
+ "win-x64": "Microsoft.NETCore.App.Runtime.AOT.win-x64.Cross.android-x86",
+ "win-arm64": "Microsoft.NETCore.App.Runtime.AOT.win-x64.Cross.android-x86",
+ "linux-x64": "Microsoft.NETCore.App.Runtime.AOT.linux-x64.Cross.android-x86",
+ "osx-x64": "Microsoft.NETCore.App.Runtime.AOT.osx-x64.Cross.android-x86",
+ "osx-arm64": "Microsoft.NETCore.App.Runtime.AOT.osx-x64.Cross.android-x86"
+ }
+ },
+ "Microsoft.NETCore.App.Runtime.AOT.Cross.net6.android-x64": {
+ "kind": "Sdk",
+ "version": "6.0.36",
+ "alias-to": {
+ "win-x64": "Microsoft.NETCore.App.Runtime.AOT.win-x64.Cross.android-x64",
+ "win-arm64": "Microsoft.NETCore.App.Runtime.AOT.win-x64.Cross.android-x64",
+ "linux-x64": "Microsoft.NETCore.App.Runtime.AOT.linux-x64.Cross.android-x64",
+ "osx-x64": "Microsoft.NETCore.App.Runtime.AOT.osx-x64.Cross.android-x64",
+ "osx-arm64": "Microsoft.NETCore.App.Runtime.AOT.osx-x64.Cross.android-x64"
+ }
+ },
+ "Microsoft.NETCore.App.Runtime.AOT.Cross.net6.android-arm": {
+ "kind": "Sdk",
+ "version": "6.0.36",
+ "alias-to": {
+ "win-x64": "Microsoft.NETCore.App.Runtime.AOT.win-x64.Cross.android-arm",
+ "win-arm64": "Microsoft.NETCore.App.Runtime.AOT.win-x64.Cross.android-arm",
+ "linux-x64": "Microsoft.NETCore.App.Runtime.AOT.linux-x64.Cross.android-arm",
+ "osx-x64": "Microsoft.NETCore.App.Runtime.AOT.osx-x64.Cross.android-arm",
+ "osx-arm64": "Microsoft.NETCore.App.Runtime.AOT.osx-x64.Cross.android-arm"
+ }
+ },
+ "Microsoft.NETCore.App.Runtime.AOT.Cross.net6.android-arm64": {
+ "kind": "Sdk",
+ "version": "6.0.36",
+ "alias-to": {
+ "win-x64": "Microsoft.NETCore.App.Runtime.AOT.win-x64.Cross.android-arm64",
+ "win-arm64": "Microsoft.NETCore.App.Runtime.AOT.win-x64.Cross.android-arm64",
+ "linux-x64": "Microsoft.NETCore.App.Runtime.AOT.linux-x64.Cross.android-arm64",
+ "osx-x64": "Microsoft.NETCore.App.Runtime.AOT.osx-x64.Cross.android-arm64",
+ "osx-arm64": "Microsoft.NETCore.App.Runtime.AOT.osx-x64.Cross.android-arm64"
+ }
+ },
+ "Microsoft.NETCore.App.Runtime.Mono.net6.maccatalyst-arm64": {
+ "kind": "framework",
+ "version": "6.0.36",
+ "alias-to": {
+ "any": "Microsoft.NETCore.App.Runtime.Mono.maccatalyst-arm64"
+ }
+ },
+ "Microsoft.NETCore.App.Runtime.Mono.net6.maccatalyst-x64": {
+ "kind": "framework",
+ "version": "6.0.36",
+ "alias-to": {
+ "any": "Microsoft.NETCore.App.Runtime.Mono.maccatalyst-x64"
+ }
+ },
+ "Microsoft.NETCore.App.Runtime.Mono.net6.osx-arm64": {
+ "kind": "framework",
+ "version": "6.0.36",
+ "alias-to": {
+ "any": "Microsoft.NETCore.App.Runtime.Mono.osx-arm64"
+ }
+ },
+ "Microsoft.NETCore.App.Runtime.Mono.net6.osx-x64": {
+ "kind": "framework",
+ "version": "6.0.36",
+ "alias-to": {
+ "any": "Microsoft.NETCore.App.Runtime.Mono.osx-x64"
+ }
+ },
+ "Microsoft.NETCore.App.Runtime.net6.osx-arm64": {
+ "kind": "framework",
+ "version": "6.0.36",
+ "alias-to": {
+ "any": "Microsoft.NETCore.App.Runtime.Mono.osx-arm64"
+ }
+ },
+ "Microsoft.NETCore.App.Runtime.net6.osx-x64": {
+ "kind": "framework",
+ "version": "6.0.36",
+ "alias-to": {
+ "any": "Microsoft.NETCore.App.Runtime.osx-x64"
+ }
+ },
+ "Microsoft.NETCore.App.Runtime.Mono.net6.ios-arm" : {
+ "kind": "framework",
+ "version": "6.0.36",
+ "alias-to": {
+ "any": "Microsoft.NETCore.App.Runtime.Mono.ios-arm"
+ }
+ },
+ "Microsoft.NETCore.App.Runtime.Mono.net6.ios-arm64" : {
+ "kind": "framework",
+ "version": "6.0.36",
+ "alias-to": {
+ "any": "Microsoft.NETCore.App.Runtime.Mono.ios-arm64"
+ }
+ },
+ "Microsoft.NETCore.App.Runtime.Mono.net6.iossimulator-arm64" : {
+ "kind": "framework",
+ "version": "6.0.36",
+ "alias-to": {
+ "any": "Microsoft.NETCore.App.Runtime.Mono.iossimulator-arm64"
+ }
+ },
+ "Microsoft.NETCore.App.Runtime.Mono.net6.iossimulator-x64" : {
+ "kind": "framework",
+ "version": "6.0.36",
+ "alias-to": {
+ "any": "Microsoft.NETCore.App.Runtime.Mono.iossimulator-x64"
+ }
+ },
+ "Microsoft.NETCore.App.Runtime.Mono.net6.iossimulator-x86" : {
+ "kind": "framework",
+ "version": "6.0.36",
+ "alias-to": {
+ "any": "Microsoft.NETCore.App.Runtime.Mono.iossimulator-x86"
+ }
+ },
+ "Microsoft.NETCore.App.Runtime.AOT.Cross.net6.tvos-arm64": {
+ "kind": "Sdk",
+ "version": "6.0.36",
+ "alias-to": {
+ "osx-x64": "Microsoft.NETCore.App.Runtime.AOT.osx-x64.Cross.tvos-arm64",
+ "osx-arm64": "Microsoft.NETCore.App.Runtime.AOT.osx-x64.Cross.tvos-arm64"
+ }
+ },
+ "Microsoft.NETCore.App.Runtime.Mono.net6.tvos-arm64" : {
+ "kind": "framework",
+ "version": "6.0.36",
+ "alias-to": {
+ "any": "Microsoft.NETCore.App.Runtime.Mono.tvos-arm64"
+ }
+ },
+ "Microsoft.NETCore.App.Runtime.Mono.net6.tvossimulator-arm64" : {
+ "kind": "framework",
+ "version": "6.0.36",
+ "alias-to": {
+ "any": "Microsoft.NETCore.App.Runtime.Mono.tvossimulator-arm64"
+ }
+ },
+ "Microsoft.NETCore.App.Runtime.Mono.net6.tvossimulator-x64" : {
+ "kind": "framework",
+ "version": "6.0.36",
+ "alias-to": {
+ "any": "Microsoft.NETCore.App.Runtime.Mono.tvossimulator-x64"
+ }
+ },
+ "Microsoft.NETCore.App.Runtime.AOT.Cross.net6.maccatalyst-arm64": {
+ "kind": "Sdk",
+ "version": "6.0.36",
+ "alias-to": {
+ "osx-arm64": "Microsoft.NETCore.App.Runtime.AOT.osx-x64.Cross.maccatalyst-arm64",
+ "osx-x64": "Microsoft.NETCore.App.Runtime.AOT.osx-x64.Cross.maccatalyst-arm64"
+ }
+ },
+ "Microsoft.NETCore.App.Runtime.AOT.Cross.net6.maccatalyst-x64": {
+ "kind": "Sdk",
+ "version": "6.0.36",
+ "alias-to": {
+ "osx-arm64": "Microsoft.NETCore.App.Runtime.AOT.osx-x64.Cross.maccatalyst-x64",
+ "osx-x64": "Microsoft.NETCore.App.Runtime.AOT.osx-x64.Cross.maccatalyst-x64"
+ }
+ },
+ "Microsoft.NETCore.App.Runtime.AOT.Cross.net6.tvossimulator-arm64": {
+ "kind": "Sdk",
+ "version": "6.0.36",
+ "alias-to": {
+ "osx-arm64": "Microsoft.NETCore.App.Runtime.AOT.osx-x64.Cross.tvossimulator-arm64",
+ "osx-x64": "Microsoft.NETCore.App.Runtime.AOT.osx-x64.Cross.tvossimulator-arm64"
+ }
+ },
+ "Microsoft.NETCore.App.Runtime.AOT.Cross.net6.tvossimulator-x64": {
+ "kind": "Sdk",
+ "version": "6.0.36",
+ "alias-to": {
+ "osx-arm64": "Microsoft.NETCore.App.Runtime.AOT.osx-x64.Cross.tvossimulator-x64",
+ "osx-x64": "Microsoft.NETCore.App.Runtime.AOT.osx-x64.Cross.tvossimulator-x64"
+ }
+ },
+ "Microsoft.NETCore.App.Runtime.AOT.Cross.net6.ios-arm": {
+ "kind": "Sdk",
+ "version": "6.0.36",
+ "alias-to": {
+ "osx-x64": "Microsoft.NETCore.App.Runtime.AOT.osx-x64.Cross.ios-arm",
+ "osx-arm64": "Microsoft.NETCore.App.Runtime.AOT.osx-x64.Cross.ios-arm"
+ }
+ },
+ "Microsoft.NETCore.App.Runtime.AOT.Cross.net6.ios-arm64": {
+ "kind": "Sdk",
+ "version": "6.0.36",
+ "alias-to": {
+ "osx-x64": "Microsoft.NETCore.App.Runtime.AOT.osx-x64.Cross.ios-arm64",
+ "osx-arm64": "Microsoft.NETCore.App.Runtime.AOT.osx-x64.Cross.ios-arm64"
+ }
+ },
+ "Microsoft.NETCore.App.Runtime.AOT.Cross.net6.iossimulator-arm64": {
+ "kind": "Sdk",
+ "version": "6.0.36",
+ "alias-to": {
+ "osx-arm64": "Microsoft.NETCore.App.Runtime.AOT.osx-x64.Cross.iossimulator-arm64",
+ "osx-x64": "Microsoft.NETCore.App.Runtime.AOT.osx-x64.Cross.iossimulator-arm64"
+ }
+ },
+ "Microsoft.NETCore.App.Runtime.AOT.Cross.net6.iossimulator-x64": {
+ "kind": "Sdk",
+ "version": "6.0.36",
+ "alias-to": {
+ "osx-arm64": "Microsoft.NETCore.App.Runtime.AOT.osx-x64.Cross.iossimulator-x64",
+ "osx-x64": "Microsoft.NETCore.App.Runtime.AOT.osx-x64.Cross.iossimulator-x64"
+ }
+ },
+ "Microsoft.NETCore.App.Runtime.AOT.Cross.net6.iossimulator-x86": {
+ "kind": "Sdk",
+ "version": "6.0.36",
+ "alias-to": {
+ "osx-arm64": "Microsoft.NETCore.App.Runtime.AOT.osx-x64.Cross.iossimulator-x86",
+ "osx-x64": "Microsoft.NETCore.App.Runtime.AOT.osx-x64.Cross.iossimulator-x86"
+ }
+ },
+ "Microsoft.NETCore.App.Runtime.AOT.Cross.net6.browser-wasm": {
+ "kind": "Sdk",
+ "version": "6.0.36",
+ "alias-to": {
+ "win-x64": "Microsoft.NETCore.App.Runtime.AOT.win-x64.Cross.browser-wasm",
+ "win-arm64": "Microsoft.NETCore.App.Runtime.AOT.win-x64.Cross.browser-wasm",
+ "linux-x64": "Microsoft.NETCore.App.Runtime.AOT.linux-x64.Cross.browser-wasm",
+ "osx-x64": "Microsoft.NETCore.App.Runtime.AOT.osx-x64.Cross.browser-wasm",
+ "osx-arm64": "Microsoft.NETCore.App.Runtime.AOT.osx-x64.Cross.browser-wasm"
+ }
+ },
+ "Microsoft.NETCore.App.Runtime.Mono.net6.browser-wasm" : {
+ "kind": "framework",
+ "version": "6.0.36",
+ "alias-to": {
+ "any": "Microsoft.NETCore.App.Runtime.Mono.browser-wasm"
+ }
+ },
+ "Microsoft.NETCore.App.Runtime.net6.win-x64" : {
+ "kind": "framework",
+ "version": "6.0.36",
+ "alias-to": {
+ "any": "Microsoft.NETCore.App.Runtime.win-x64"
+ }
+ },
+ "Microsoft.NETCore.App.Runtime.net6.win-x86" : {
+ "kind": "framework",
+ "version": "6.0.36",
+ "alias-to": {
+ "any": "Microsoft.NETCore.App.Runtime.win-x86"
+ }
+ },
+ "Microsoft.NETCore.App.Runtime.net6.win-arm" : {
+ "kind": "framework",
+ "version": "6.0.36",
+ "alias-to": {
+ "any": "Microsoft.NETCore.App.Runtime.win-arm"
+ }
+ },
+ "Microsoft.NETCore.App.Runtime.net6.win-arm64" : {
+ "kind": "framework",
+ "version": "6.0.36",
+ "alias-to": {
+ "any": "Microsoft.NETCore.App.Runtime.win-arm64"
+ }
+ }
+ }
+}
diff --git a/.dotnet/sdk-advertising/8.0.400/microsoft.net.workload.mono.toolchain.net6/WorkloadManifest.targets b/.dotnet/sdk-advertising/8.0.400/microsoft.net.workload.mono.toolchain.net6/WorkloadManifest.targets
new file mode 100644
index 0000000..12f4083
--- /dev/null
+++ b/.dotnet/sdk-advertising/8.0.400/microsoft.net.workload.mono.toolchain.net6/WorkloadManifest.targets
@@ -0,0 +1,75 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <_MonoWorkloadTargetsMobile>true
+ <_MonoWorkloadRuntimePackPackageVersion>$(_RuntimePackInWorkloadVersion6)
+
+
+
+
+ $(_MonoWorkloadRuntimePackPackageVersion)
+
+
+
diff --git a/.dotnet/sdk-advertising/8.0.400/microsoft.net.workload.mono.toolchain.net6/localize/WorkloadManifest.cs.json b/.dotnet/sdk-advertising/8.0.400/microsoft.net.workload.mono.toolchain.net6/localize/WorkloadManifest.cs.json
new file mode 100644
index 0000000..1ab9678
--- /dev/null
+++ b/.dotnet/sdk-advertising/8.0.400/microsoft.net.workload.mono.toolchain.net6/localize/WorkloadManifest.cs.json
@@ -0,0 +1,3 @@
+{
+ "workloads/wasm-tools-net6/description": "Nástroje pro sestavení .NET WebAssembly"
+}
\ No newline at end of file
diff --git a/.dotnet/sdk-advertising/8.0.400/microsoft.net.workload.mono.toolchain.net6/localize/WorkloadManifest.de.json b/.dotnet/sdk-advertising/8.0.400/microsoft.net.workload.mono.toolchain.net6/localize/WorkloadManifest.de.json
new file mode 100644
index 0000000..c8fd66a
--- /dev/null
+++ b/.dotnet/sdk-advertising/8.0.400/microsoft.net.workload.mono.toolchain.net6/localize/WorkloadManifest.de.json
@@ -0,0 +1,3 @@
+{
+ "workloads/wasm-tools-net6/description": ".NET WebAssembly-Buildtools"
+}
\ No newline at end of file
diff --git a/.dotnet/sdk-advertising/8.0.400/microsoft.net.workload.mono.toolchain.net6/localize/WorkloadManifest.en.json b/.dotnet/sdk-advertising/8.0.400/microsoft.net.workload.mono.toolchain.net6/localize/WorkloadManifest.en.json
new file mode 100644
index 0000000..8199246
--- /dev/null
+++ b/.dotnet/sdk-advertising/8.0.400/microsoft.net.workload.mono.toolchain.net6/localize/WorkloadManifest.en.json
@@ -0,0 +1,4 @@
+{
+ "workloads/wasm-tools-net6/description": ".NET WebAssembly build tools for net6.0",
+ "workloads/runtimes-windows-net6/description": "Windows Runtime Packs for net6.0"
+}
diff --git a/.dotnet/sdk-advertising/8.0.400/microsoft.net.workload.mono.toolchain.net6/localize/WorkloadManifest.es.json b/.dotnet/sdk-advertising/8.0.400/microsoft.net.workload.mono.toolchain.net6/localize/WorkloadManifest.es.json
new file mode 100644
index 0000000..3e24863
--- /dev/null
+++ b/.dotnet/sdk-advertising/8.0.400/microsoft.net.workload.mono.toolchain.net6/localize/WorkloadManifest.es.json
@@ -0,0 +1,3 @@
+{
+ "workloads/wasm-tools-net6/description": "Herramientas de compilación de WebAssembly de .NET"
+}
\ No newline at end of file
diff --git a/.dotnet/sdk-advertising/8.0.400/microsoft.net.workload.mono.toolchain.net6/localize/WorkloadManifest.fr.json b/.dotnet/sdk-advertising/8.0.400/microsoft.net.workload.mono.toolchain.net6/localize/WorkloadManifest.fr.json
new file mode 100644
index 0000000..3a83ef2
--- /dev/null
+++ b/.dotnet/sdk-advertising/8.0.400/microsoft.net.workload.mono.toolchain.net6/localize/WorkloadManifest.fr.json
@@ -0,0 +1,3 @@
+{
+ "workloads/wasm-tools-net6/description": "Outils de construction .NET WebAssembly"
+}
\ No newline at end of file
diff --git a/.dotnet/sdk-advertising/8.0.400/microsoft.net.workload.mono.toolchain.net6/localize/WorkloadManifest.it.json b/.dotnet/sdk-advertising/8.0.400/microsoft.net.workload.mono.toolchain.net6/localize/WorkloadManifest.it.json
new file mode 100644
index 0000000..2e5d725
--- /dev/null
+++ b/.dotnet/sdk-advertising/8.0.400/microsoft.net.workload.mono.toolchain.net6/localize/WorkloadManifest.it.json
@@ -0,0 +1,3 @@
+{
+ "workloads/wasm-tools-net6/description": "Strumenti di compilazione WebAssembly .NET"
+}
\ No newline at end of file
diff --git a/.dotnet/sdk-advertising/8.0.400/microsoft.net.workload.mono.toolchain.net6/localize/WorkloadManifest.ja.json b/.dotnet/sdk-advertising/8.0.400/microsoft.net.workload.mono.toolchain.net6/localize/WorkloadManifest.ja.json
new file mode 100644
index 0000000..9543778
--- /dev/null
+++ b/.dotnet/sdk-advertising/8.0.400/microsoft.net.workload.mono.toolchain.net6/localize/WorkloadManifest.ja.json
@@ -0,0 +1,3 @@
+{
+ "workloads/wasm-tools-net6/description": ".NET WebAssembly ビルド ツール"
+}
\ No newline at end of file
diff --git a/.dotnet/sdk-advertising/8.0.400/microsoft.net.workload.mono.toolchain.net6/localize/WorkloadManifest.ko.json b/.dotnet/sdk-advertising/8.0.400/microsoft.net.workload.mono.toolchain.net6/localize/WorkloadManifest.ko.json
new file mode 100644
index 0000000..c10840d
--- /dev/null
+++ b/.dotnet/sdk-advertising/8.0.400/microsoft.net.workload.mono.toolchain.net6/localize/WorkloadManifest.ko.json
@@ -0,0 +1,3 @@
+{
+ "workloads/wasm-tools-net6/description": ".NET WebAssembly 빌드 도구"
+}
\ No newline at end of file
diff --git a/.dotnet/sdk-advertising/8.0.400/microsoft.net.workload.mono.toolchain.net6/localize/WorkloadManifest.pl.json b/.dotnet/sdk-advertising/8.0.400/microsoft.net.workload.mono.toolchain.net6/localize/WorkloadManifest.pl.json
new file mode 100644
index 0000000..118033e
--- /dev/null
+++ b/.dotnet/sdk-advertising/8.0.400/microsoft.net.workload.mono.toolchain.net6/localize/WorkloadManifest.pl.json
@@ -0,0 +1,3 @@
+{
+ "workloads/wasm-tools-net6/description": "Narzędzia kompilacji zestawu WebAssembly platformy .NET"
+}
\ No newline at end of file
diff --git a/.dotnet/sdk-advertising/8.0.400/microsoft.net.workload.mono.toolchain.net6/localize/WorkloadManifest.pt-BR.json b/.dotnet/sdk-advertising/8.0.400/microsoft.net.workload.mono.toolchain.net6/localize/WorkloadManifest.pt-BR.json
new file mode 100644
index 0000000..2689089
--- /dev/null
+++ b/.dotnet/sdk-advertising/8.0.400/microsoft.net.workload.mono.toolchain.net6/localize/WorkloadManifest.pt-BR.json
@@ -0,0 +1,3 @@
+{
+ "workloads/wasm-tools-net6/description": "Ferramentas de build do .NET WebAssembly"
+}
\ No newline at end of file
diff --git a/.dotnet/sdk-advertising/8.0.400/microsoft.net.workload.mono.toolchain.net6/localize/WorkloadManifest.ru.json b/.dotnet/sdk-advertising/8.0.400/microsoft.net.workload.mono.toolchain.net6/localize/WorkloadManifest.ru.json
new file mode 100644
index 0000000..6a3d87f
--- /dev/null
+++ b/.dotnet/sdk-advertising/8.0.400/microsoft.net.workload.mono.toolchain.net6/localize/WorkloadManifest.ru.json
@@ -0,0 +1,3 @@
+{
+ "workloads/wasm-tools-net6/description": "Средства сборки WebAssembly .NET"
+}
\ No newline at end of file
diff --git a/.dotnet/sdk-advertising/8.0.400/microsoft.net.workload.mono.toolchain.net6/localize/WorkloadManifest.tr.json b/.dotnet/sdk-advertising/8.0.400/microsoft.net.workload.mono.toolchain.net6/localize/WorkloadManifest.tr.json
new file mode 100644
index 0000000..d9524bb
--- /dev/null
+++ b/.dotnet/sdk-advertising/8.0.400/microsoft.net.workload.mono.toolchain.net6/localize/WorkloadManifest.tr.json
@@ -0,0 +1,3 @@
+{
+ "workloads/wasm-tools-net6/description": ".NET WebAssembly derleme araçları"
+}
\ No newline at end of file
diff --git a/.dotnet/sdk-advertising/8.0.400/microsoft.net.workload.mono.toolchain.net6/localize/WorkloadManifest.zh-Hans.json b/.dotnet/sdk-advertising/8.0.400/microsoft.net.workload.mono.toolchain.net6/localize/WorkloadManifest.zh-Hans.json
new file mode 100644
index 0000000..aeadc4d
--- /dev/null
+++ b/.dotnet/sdk-advertising/8.0.400/microsoft.net.workload.mono.toolchain.net6/localize/WorkloadManifest.zh-Hans.json
@@ -0,0 +1,3 @@
+{
+ "workloads/wasm-tools-net6/description": ".NET WebAssembly 生成工具"
+}
\ No newline at end of file
diff --git a/.dotnet/sdk-advertising/8.0.400/microsoft.net.workload.mono.toolchain.net6/localize/WorkloadManifest.zh-Hant.json b/.dotnet/sdk-advertising/8.0.400/microsoft.net.workload.mono.toolchain.net6/localize/WorkloadManifest.zh-Hant.json
new file mode 100644
index 0000000..c43e1e7
--- /dev/null
+++ b/.dotnet/sdk-advertising/8.0.400/microsoft.net.workload.mono.toolchain.net6/localize/WorkloadManifest.zh-Hant.json
@@ -0,0 +1,3 @@
+{
+ "workloads/wasm-tools-net6/description": ".NET WebAssembly 組建工具"
+}
\ No newline at end of file
diff --git a/.dotnet/sdk-advertising/8.0.400/microsoft.net.workload.mono.toolchain.net7/AdvertisedManifestFeatureBand.txt b/.dotnet/sdk-advertising/8.0.400/microsoft.net.workload.mono.toolchain.net7/AdvertisedManifestFeatureBand.txt
new file mode 100644
index 0000000..d3f1dda
--- /dev/null
+++ b/.dotnet/sdk-advertising/8.0.400/microsoft.net.workload.mono.toolchain.net7/AdvertisedManifestFeatureBand.txt
@@ -0,0 +1 @@
+8.0.100
\ No newline at end of file
diff --git a/.dotnet/sdk-advertising/8.0.400/microsoft.net.workload.mono.toolchain.net7/WorkloadManifest.json b/.dotnet/sdk-advertising/8.0.400/microsoft.net.workload.mono.toolchain.net7/WorkloadManifest.json
new file mode 100644
index 0000000..5afe915
--- /dev/null
+++ b/.dotnet/sdk-advertising/8.0.400/microsoft.net.workload.mono.toolchain.net7/WorkloadManifest.json
@@ -0,0 +1,490 @@
+{
+ "version": "8.0.33",
+ "depends-on": {
+ "Microsoft.NET.Workload.Emscripten.net7": "8.0.33"
+ },
+ "workloads": {
+ "wasm-tools-net7": {
+ "description": ".NET WebAssembly build tools for net7.0",
+ "packs": [
+ "Microsoft.NET.Runtime.WebAssembly.Sdk.net7",
+ "Microsoft.NETCore.App.Runtime.Mono.net7.browser-wasm",
+ "Microsoft.NETCore.App.Runtime.AOT.Cross.net7.browser-wasm"
+ ],
+ "extends": [ "microsoft-net-runtime-mono-tooling-net7", "microsoft-net-sdk-emscripten-net7" ],
+ "platforms": [ "win-x64", "win-arm64", "linux-x64", "osx-x64", "osx-arm64" ]
+ },
+ "wasm-experimental-net7": {
+ "description": ".NET WebAssembly experimental tooling for net7.0",
+ "packs": [
+ "Microsoft.NET.Runtime.WebAssembly.Templates.net7",
+ "Microsoft.NETCore.App.Runtime.Mono.multithread.net7.browser-wasm",
+ "Microsoft.NETCore.App.Runtime.Mono.perftrace.net7.browser-wasm"
+ ],
+ "extends": [ "wasm-tools-net7" ],
+ "platforms": [ "win-x64", "win-arm64", "linux-x64", "osx-x64", "osx-arm64" ]
+ },
+ "microsoft-net-runtime-android-net7": {
+ "abstract": true,
+ "description": "Android Mono Runtime",
+ "packs": [
+ "Microsoft.NETCore.App.Runtime.Mono.net7.android-arm",
+ "Microsoft.NETCore.App.Runtime.Mono.net7.android-arm64",
+ "Microsoft.NETCore.App.Runtime.Mono.net7.android-x64",
+ "Microsoft.NETCore.App.Runtime.Mono.net7.android-x86"
+ ],
+ "extends": [ "microsoft-net-runtime-mono-tooling-net7" ],
+ "platforms": [ "win-x64", "win-arm64", "linux-x64", "osx-x64", "osx-arm64" ]
+ },
+ "microsoft-net-runtime-android-aot-net7": {
+ "abstract": true,
+ "description": "Android Mono AOT Workload",
+ "packs": [
+ "Microsoft.NETCore.App.Runtime.AOT.Cross.net7.android-x86",
+ "Microsoft.NETCore.App.Runtime.AOT.Cross.net7.android-x64",
+ "Microsoft.NETCore.App.Runtime.AOT.Cross.net7.android-arm",
+ "Microsoft.NETCore.App.Runtime.AOT.Cross.net7.android-arm64"
+ ],
+ "extends": [ "microsoft-net-runtime-android-net7" ],
+ "platforms": [ "win-x64", "win-arm64", "linux-x64", "osx-x64", "osx-arm64" ]
+ },
+ "microsoft-net-runtime-ios-net7": {
+ "abstract": true,
+ "description": "iOS Mono Runtime and AOT Workload",
+ "packs": [
+ "Microsoft.NETCore.App.Runtime.AOT.Cross.net7.ios-arm",
+ "Microsoft.NETCore.App.Runtime.AOT.Cross.net7.ios-arm64",
+ "Microsoft.NETCore.App.Runtime.AOT.Cross.net7.iossimulator-arm64",
+ "Microsoft.NETCore.App.Runtime.AOT.Cross.net7.iossimulator-x64",
+ "Microsoft.NETCore.App.Runtime.AOT.Cross.net7.iossimulator-x86"
+ ],
+ "extends": [ "runtimes-ios-net7" ],
+ "platforms": [ "win-x64", "win-arm64", "osx-arm64", "osx-x64" ]
+ },
+ "runtimes-ios-net7": {
+ "abstract": true,
+ "description": "iOS Mono Runtime Packs",
+ "packs": [
+ "Microsoft.NETCore.App.Runtime.Mono.net7.ios-arm",
+ "Microsoft.NETCore.App.Runtime.Mono.net7.ios-arm64",
+ "Microsoft.NETCore.App.Runtime.Mono.net7.iossimulator-arm64",
+ "Microsoft.NETCore.App.Runtime.Mono.net7.iossimulator-x64",
+ "Microsoft.NETCore.App.Runtime.Mono.net7.iossimulator-x86"
+ ],
+ "extends": [ "microsoft-net-runtime-mono-tooling-net7" ],
+ "platforms": [ "win-x64", "win-arm64", "osx-arm64", "osx-x64" ]
+ },
+ "microsoft-net-runtime-maccatalyst-net7": {
+ "abstract": true,
+ "description": "MacCatalyst Mono Runtime and AOT Workload",
+ "packs": [
+ "Microsoft.NETCore.App.Runtime.AOT.Cross.net7.maccatalyst-arm64",
+ "Microsoft.NETCore.App.Runtime.AOT.Cross.net7.maccatalyst-x64"
+ ],
+ "extends": [ "runtimes-maccatalyst-net7" ],
+ "platforms": [ "win-x64", "win-arm64", "osx-arm64", "osx-x64" ]
+ },
+ "runtimes-maccatalyst-net7": {
+ "abstract": true,
+ "description": "MacCatalyst Mono Runtime Packs",
+ "packs": [
+ "Microsoft.NETCore.App.Runtime.Mono.net7.maccatalyst-arm64",
+ "Microsoft.NETCore.App.Runtime.Mono.net7.maccatalyst-x64"
+ ],
+ "extends": [ "microsoft-net-runtime-mono-tooling-net7" ],
+ "platforms": [ "win-x64", "win-arm64", "osx-arm64", "osx-x64" ]
+ },
+ "microsoft-net-runtime-macos-net7": {
+ "abstract": true,
+ "description": "MacOS CoreCLR and Mono Runtime Workload",
+ "packs": [
+ "Microsoft.NETCore.App.Runtime.Mono.net7.osx-arm64",
+ "Microsoft.NETCore.App.Runtime.Mono.net7.osx-x64",
+ "Microsoft.NETCore.App.Runtime.osx-arm64",
+ "Microsoft.NETCore.App.Runtime.osx-x64"
+ ],
+ "extends": [ "microsoft-net-runtime-mono-tooling-net7" ],
+ "platforms": [ "osx-arm64", "osx-x64" ]
+ },
+ "microsoft-net-runtime-tvos-net7": {
+ "abstract": true,
+ "description": "tvOS Mono Runtime and AOT Workload",
+ "packs": [
+ "Microsoft.NETCore.App.Runtime.AOT.Cross.net7.tvos-arm64",
+ "Microsoft.NETCore.App.Runtime.AOT.Cross.net7.tvossimulator-arm64",
+ "Microsoft.NETCore.App.Runtime.AOT.Cross.net7.tvossimulator-x64"
+ ],
+ "extends": [ "runtimes-tvos-net7" ],
+ "platforms": [ "win-x64", "win-arm64", "osx-arm64", "osx-x64" ]
+ },
+ "runtimes-tvos-net7": {
+ "abstract": true,
+ "description": "tvOS Mono Runtime Packs",
+ "packs": [
+ "Microsoft.NETCore.App.Runtime.Mono.net7.tvos-arm64",
+ "Microsoft.NETCore.App.Runtime.Mono.net7.tvossimulator-arm64",
+ "Microsoft.NETCore.App.Runtime.Mono.net7.tvossimulator-x64"
+ ],
+ "extends": [ "microsoft-net-runtime-mono-tooling-net7" ],
+ "platforms": [ "win-x64", "win-arm64", "osx-arm64", "osx-x64" ]
+ },
+ "runtimes-windows-net7": {
+ "abstract": true,
+ "description": "Windows Runtime Packs for net7.0",
+ "packs": [
+ "Microsoft.NETCore.App.Runtime.net7.win-x64",
+ "Microsoft.NETCore.App.Runtime.net7.win-x86",
+ "Microsoft.NETCore.App.Runtime.net7.win-arm",
+ "Microsoft.NETCore.App.Runtime.net7.win-arm64"
+ ]
+ },
+ "microsoft-net-runtime-mono-tooling-net7": {
+ "abstract": true,
+ "description": "Shared native build tooling for Mono runtime",
+ "packs": [
+ "Microsoft.NET.Runtime.MonoAOTCompiler.Task.net7",
+ "Microsoft.NET.Runtime.MonoTargets.Sdk.net7"
+ ]
+ }
+ },
+ "packs": {
+ "Microsoft.NET.Runtime.MonoAOTCompiler.Task.net7": {
+ "kind": "Sdk",
+ "version": "7.0.20",
+ "alias-to": {
+ "any": "Microsoft.NET.Runtime.MonoAOTCompiler.Task"
+ }
+ },
+ "Microsoft.NET.Runtime.MonoTargets.Sdk.net7": {
+ "kind": "Sdk",
+ "version": "7.0.20",
+ "alias-to": {
+ "any": "Microsoft.NET.Runtime.MonoTargets.Sdk"
+ }
+ },
+ "Microsoft.NET.Runtime.WebAssembly.Sdk.net7": {
+ "kind": "Sdk",
+ "version": "7.0.20",
+ "alias-to": {
+ "any": "Microsoft.NET.Runtime.WebAssembly.Sdk"
+ }
+ },
+ "Microsoft.NET.Runtime.WebAssembly.Templates.net7": {
+ "kind": "template",
+ "version": "7.0.20",
+ "alias-to": {
+ "any": "Microsoft.NET.Runtime.WebAssembly.Templates"
+ }
+ },
+ "Microsoft.NETCore.App.Runtime.Mono.net7.android-arm": {
+ "kind": "framework",
+ "version": "7.0.20",
+ "alias-to": {
+ "any": "Microsoft.NETCore.App.Runtime.Mono.android-arm"
+ }
+ },
+ "Microsoft.NETCore.App.Runtime.Mono.net7.android-arm64": {
+ "kind": "framework",
+ "version": "7.0.20",
+ "alias-to": {
+ "any": "Microsoft.NETCore.App.Runtime.Mono.android-arm64"
+ }
+ },
+ "Microsoft.NETCore.App.Runtime.Mono.net7.android-x64": {
+ "kind": "framework",
+ "version": "7.0.20",
+ "alias-to": {
+ "any": "Microsoft.NETCore.App.Runtime.Mono.android-x64"
+ }
+ },
+ "Microsoft.NETCore.App.Runtime.Mono.net7.android-x86": {
+ "kind": "framework",
+ "version": "7.0.20",
+ "alias-to": {
+ "any": "Microsoft.NETCore.App.Runtime.Mono.android-x86"
+ }
+ },
+ "Microsoft.NETCore.App.Runtime.AOT.Cross.net7.android-x86": {
+ "kind": "Sdk",
+ "version": "7.0.20",
+ "alias-to": {
+ "win-x64": "Microsoft.NETCore.App.Runtime.AOT.win-x64.Cross.android-x86",
+ "win-arm64": "Microsoft.NETCore.App.Runtime.AOT.win-x64.Cross.android-x86",
+ "linux-x64": "Microsoft.NETCore.App.Runtime.AOT.linux-x64.Cross.android-x86",
+ "osx-x64": "Microsoft.NETCore.App.Runtime.AOT.osx-x64.Cross.android-x86",
+ "osx-arm64": "Microsoft.NETCore.App.Runtime.AOT.osx-x64.Cross.android-x86"
+ }
+ },
+ "Microsoft.NETCore.App.Runtime.AOT.Cross.net7.android-x64": {
+ "kind": "Sdk",
+ "version": "7.0.20",
+ "alias-to": {
+ "win-x64": "Microsoft.NETCore.App.Runtime.AOT.win-x64.Cross.android-x64",
+ "win-arm64": "Microsoft.NETCore.App.Runtime.AOT.win-x64.Cross.android-x64",
+ "linux-x64": "Microsoft.NETCore.App.Runtime.AOT.linux-x64.Cross.android-x64",
+ "osx-x64": "Microsoft.NETCore.App.Runtime.AOT.osx-x64.Cross.android-x64",
+ "osx-arm64": "Microsoft.NETCore.App.Runtime.AOT.osx-x64.Cross.android-x64"
+ }
+ },
+ "Microsoft.NETCore.App.Runtime.AOT.Cross.net7.android-arm": {
+ "kind": "Sdk",
+ "version": "7.0.20",
+ "alias-to": {
+ "win-x64": "Microsoft.NETCore.App.Runtime.AOT.win-x64.Cross.android-arm",
+ "win-arm64": "Microsoft.NETCore.App.Runtime.AOT.win-x64.Cross.android-arm",
+ "linux-x64": "Microsoft.NETCore.App.Runtime.AOT.linux-x64.Cross.android-arm",
+ "osx-x64": "Microsoft.NETCore.App.Runtime.AOT.osx-x64.Cross.android-arm",
+ "osx-arm64": "Microsoft.NETCore.App.Runtime.AOT.osx-x64.Cross.android-arm"
+ }
+ },
+ "Microsoft.NETCore.App.Runtime.AOT.Cross.net7.android-arm64": {
+ "kind": "Sdk",
+ "version": "7.0.20",
+ "alias-to": {
+ "win-x64": "Microsoft.NETCore.App.Runtime.AOT.win-x64.Cross.android-arm64",
+ "win-arm64": "Microsoft.NETCore.App.Runtime.AOT.win-x64.Cross.android-arm64",
+ "linux-x64": "Microsoft.NETCore.App.Runtime.AOT.linux-x64.Cross.android-arm64",
+ "osx-x64": "Microsoft.NETCore.App.Runtime.AOT.osx-x64.Cross.android-arm64",
+ "osx-arm64": "Microsoft.NETCore.App.Runtime.AOT.osx-x64.Cross.android-arm64"
+ }
+ },
+ "Microsoft.NETCore.App.Runtime.Mono.net7.maccatalyst-arm64": {
+ "kind": "framework",
+ "version": "7.0.20",
+ "alias-to": {
+ "any": "Microsoft.NETCore.App.Runtime.Mono.maccatalyst-arm64"
+ }
+ },
+ "Microsoft.NETCore.App.Runtime.Mono.net7.maccatalyst-x64": {
+ "kind": "framework",
+ "version": "7.0.20",
+ "alias-to": {
+ "any": "Microsoft.NETCore.App.Runtime.Mono.maccatalyst-x64"
+ }
+ },
+ "Microsoft.NETCore.App.Runtime.Mono.net7.osx-arm64": {
+ "kind": "framework",
+ "version": "7.0.20",
+ "alias-to": {
+ "any": "Microsoft.NETCore.App.Runtime.Mono.osx-arm64"
+ }
+ },
+ "Microsoft.NETCore.App.Runtime.Mono.net7.osx-x64": {
+ "kind": "framework",
+ "version": "7.0.20",
+ "alias-to": {
+ "any": "Microsoft.NETCore.App.Runtime.Mono.osx-x64"
+ }
+ },
+ "Microsoft.NETCore.App.Runtime.net7.osx-arm64": {
+ "kind": "framework",
+ "version": "7.0.20",
+ "alias-to": {
+ "any": "Microsoft.NETCore.App.Runtime.Mono.osx-arm64"
+ }
+ },
+ "Microsoft.NETCore.App.Runtime.net7.osx-x64": {
+ "kind": "framework",
+ "version": "7.0.20",
+ "alias-to": {
+ "any": "Microsoft.NETCore.App.Runtime.osx-x64"
+ }
+ },
+ "Microsoft.NETCore.App.Runtime.Mono.net7.ios-arm" : {
+ "kind": "framework",
+ "version": "7.0.20",
+ "alias-to": {
+ "any": "Microsoft.NETCore.App.Runtime.Mono.ios-arm"
+ }
+ },
+ "Microsoft.NETCore.App.Runtime.Mono.net7.ios-arm64" : {
+ "kind": "framework",
+ "version": "7.0.20",
+ "alias-to": {
+ "any": "Microsoft.NETCore.App.Runtime.Mono.ios-arm64"
+ }
+ },
+ "Microsoft.NETCore.App.Runtime.Mono.net7.iossimulator-arm64" : {
+ "kind": "framework",
+ "version": "7.0.20",
+ "alias-to": {
+ "any": "Microsoft.NETCore.App.Runtime.Mono.iossimulator-arm64"
+ }
+ },
+ "Microsoft.NETCore.App.Runtime.Mono.net7.iossimulator-x64" : {
+ "kind": "framework",
+ "version": "7.0.20",
+ "alias-to": {
+ "any": "Microsoft.NETCore.App.Runtime.Mono.iossimulator-x64"
+ }
+ },
+ "Microsoft.NETCore.App.Runtime.Mono.net7.iossimulator-x86" : {
+ "kind": "framework",
+ "version": "7.0.20",
+ "alias-to": {
+ "any": "Microsoft.NETCore.App.Runtime.Mono.iossimulator-x86"
+ }
+ },
+ "Microsoft.NETCore.App.Runtime.AOT.Cross.net7.tvos-arm64": {
+ "kind": "Sdk",
+ "version": "7.0.20",
+ "alias-to": {
+ "osx-x64": "Microsoft.NETCore.App.Runtime.AOT.osx-x64.Cross.tvos-arm64",
+ "osx-arm64": "Microsoft.NETCore.App.Runtime.AOT.osx-x64.Cross.tvos-arm64"
+ }
+ },
+ "Microsoft.NETCore.App.Runtime.Mono.net7.tvos-arm64" : {
+ "kind": "framework",
+ "version": "7.0.20",
+ "alias-to": {
+ "any": "Microsoft.NETCore.App.Runtime.Mono.tvos-arm64"
+ }
+ },
+ "Microsoft.NETCore.App.Runtime.Mono.net7.tvossimulator-arm64" : {
+ "kind": "framework",
+ "version": "7.0.20",
+ "alias-to": {
+ "any": "Microsoft.NETCore.App.Runtime.Mono.tvossimulator-arm64"
+ }
+ },
+ "Microsoft.NETCore.App.Runtime.Mono.net7.tvossimulator-x64" : {
+ "kind": "framework",
+ "version": "7.0.20",
+ "alias-to": {
+ "any": "Microsoft.NETCore.App.Runtime.Mono.tvossimulator-x64"
+ }
+ },
+ "Microsoft.NETCore.App.Runtime.AOT.Cross.net7.maccatalyst-arm64": {
+ "kind": "Sdk",
+ "version": "7.0.20",
+ "alias-to": {
+ "osx-arm64": "Microsoft.NETCore.App.Runtime.AOT.osx-x64.Cross.maccatalyst-arm64",
+ "osx-x64": "Microsoft.NETCore.App.Runtime.AOT.osx-x64.Cross.maccatalyst-arm64"
+ }
+ },
+ "Microsoft.NETCore.App.Runtime.AOT.Cross.net7.maccatalyst-x64": {
+ "kind": "Sdk",
+ "version": "7.0.20",
+ "alias-to": {
+ "osx-arm64": "Microsoft.NETCore.App.Runtime.AOT.osx-x64.Cross.maccatalyst-x64",
+ "osx-x64": "Microsoft.NETCore.App.Runtime.AOT.osx-x64.Cross.maccatalyst-x64"
+ }
+ },
+ "Microsoft.NETCore.App.Runtime.AOT.Cross.net7.tvossimulator-arm64": {
+ "kind": "Sdk",
+ "version": "7.0.20",
+ "alias-to": {
+ "osx-arm64": "Microsoft.NETCore.App.Runtime.AOT.osx-x64.Cross.tvossimulator-arm64",
+ "osx-x64": "Microsoft.NETCore.App.Runtime.AOT.osx-x64.Cross.tvossimulator-arm64"
+ }
+ },
+ "Microsoft.NETCore.App.Runtime.AOT.Cross.net7.tvossimulator-x64": {
+ "kind": "Sdk",
+ "version": "7.0.20",
+ "alias-to": {
+ "osx-arm64": "Microsoft.NETCore.App.Runtime.AOT.osx-x64.Cross.tvossimulator-x64",
+ "osx-x64": "Microsoft.NETCore.App.Runtime.AOT.osx-x64.Cross.tvossimulator-x64"
+ }
+ },
+ "Microsoft.NETCore.App.Runtime.AOT.Cross.net7.ios-arm": {
+ "kind": "Sdk",
+ "version": "7.0.20",
+ "alias-to": {
+ "osx-x64": "Microsoft.NETCore.App.Runtime.AOT.osx-x64.Cross.ios-arm",
+ "osx-arm64": "Microsoft.NETCore.App.Runtime.AOT.osx-x64.Cross.ios-arm"
+ }
+ },
+ "Microsoft.NETCore.App.Runtime.AOT.Cross.net7.ios-arm64": {
+ "kind": "Sdk",
+ "version": "7.0.20",
+ "alias-to": {
+ "osx-x64": "Microsoft.NETCore.App.Runtime.AOT.osx-x64.Cross.ios-arm64",
+ "osx-arm64": "Microsoft.NETCore.App.Runtime.AOT.osx-x64.Cross.ios-arm64"
+ }
+ },
+ "Microsoft.NETCore.App.Runtime.AOT.Cross.net7.iossimulator-arm64": {
+ "kind": "Sdk",
+ "version": "7.0.20",
+ "alias-to": {
+ "osx-arm64": "Microsoft.NETCore.App.Runtime.AOT.osx-x64.Cross.iossimulator-arm64",
+ "osx-x64": "Microsoft.NETCore.App.Runtime.AOT.osx-x64.Cross.iossimulator-arm64"
+ }
+ },
+ "Microsoft.NETCore.App.Runtime.AOT.Cross.net7.iossimulator-x64": {
+ "kind": "Sdk",
+ "version": "7.0.20",
+ "alias-to": {
+ "osx-arm64": "Microsoft.NETCore.App.Runtime.AOT.osx-x64.Cross.iossimulator-x64",
+ "osx-x64": "Microsoft.NETCore.App.Runtime.AOT.osx-x64.Cross.iossimulator-x64"
+ }
+ },
+ "Microsoft.NETCore.App.Runtime.AOT.Cross.net7.iossimulator-x86": {
+ "kind": "Sdk",
+ "version": "7.0.20",
+ "alias-to": {
+ "osx-arm64": "Microsoft.NETCore.App.Runtime.AOT.osx-x64.Cross.iossimulator-x86",
+ "osx-x64": "Microsoft.NETCore.App.Runtime.AOT.osx-x64.Cross.iossimulator-x86"
+ }
+ },
+ "Microsoft.NETCore.App.Runtime.AOT.Cross.net7.browser-wasm": {
+ "kind": "Sdk",
+ "version": "7.0.20",
+ "alias-to": {
+ "win-x64": "Microsoft.NETCore.App.Runtime.AOT.win-x64.Cross.browser-wasm",
+ "win-arm64": "Microsoft.NETCore.App.Runtime.AOT.win-x64.Cross.browser-wasm",
+ "linux-x64": "Microsoft.NETCore.App.Runtime.AOT.linux-x64.Cross.browser-wasm",
+ "osx-x64": "Microsoft.NETCore.App.Runtime.AOT.osx-x64.Cross.browser-wasm",
+ "osx-arm64": "Microsoft.NETCore.App.Runtime.AOT.osx-x64.Cross.browser-wasm"
+ }
+ },
+ "Microsoft.NETCore.App.Runtime.Mono.net7.browser-wasm" : {
+ "kind": "framework",
+ "version": "7.0.20",
+ "alias-to": {
+ "any": "Microsoft.NETCore.App.Runtime.Mono.browser-wasm"
+ }
+ },
+ "Microsoft.NETCore.App.Runtime.Mono.multithread.net7.browser-wasm" : {
+ "kind": "framework",
+ "version": "7.0.20",
+ "alias-to": {
+ "any": "Microsoft.NETCore.App.Runtime.Mono.multithread.browser-wasm"
+ }
+ },
+ "Microsoft.NETCore.App.Runtime.Mono.perftrace.net7.browser-wasm" : {
+ "kind": "framework",
+ "version": "7.0.20",
+ "alias-to": {
+ "any": "Microsoft.NETCore.App.Runtime.Mono.perftrace.browser-wasm"
+ }
+ },
+ "Microsoft.NETCore.App.Runtime.net7.win-x64" : {
+ "kind": "framework",
+ "version": "7.0.20",
+ "alias-to": {
+ "any": "Microsoft.NETCore.App.Runtime.win-x64"
+ }
+ },
+ "Microsoft.NETCore.App.Runtime.net7.win-x86" : {
+ "kind": "framework",
+ "version": "7.0.20",
+ "alias-to": {
+ "any": "Microsoft.NETCore.App.Runtime.win-x86"
+ }
+ },
+ "Microsoft.NETCore.App.Runtime.net7.win-arm" : {
+ "kind": "framework",
+ "version": "7.0.20",
+ "alias-to": {
+ "any": "Microsoft.NETCore.App.Runtime.win-arm"
+ }
+ },
+ "Microsoft.NETCore.App.Runtime.net7.win-arm64" : {
+ "kind": "framework",
+ "version": "7.0.20",
+ "alias-to": {
+ "any": "Microsoft.NETCore.App.Runtime.win-arm64"
+ }
+ }
+ }
+}
diff --git a/.dotnet/sdk-advertising/8.0.400/microsoft.net.workload.mono.toolchain.net7/WorkloadManifest.targets b/.dotnet/sdk-advertising/8.0.400/microsoft.net.workload.mono.toolchain.net7/WorkloadManifest.targets
new file mode 100644
index 0000000..39288d1
--- /dev/null
+++ b/.dotnet/sdk-advertising/8.0.400/microsoft.net.workload.mono.toolchain.net7/WorkloadManifest.targets
@@ -0,0 +1,73 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <_MonoWorkloadTargetsMobile>true
+ <_MonoWorkloadRuntimePackPackageVersion>$(_RuntimePackInWorkloadVersion7)
+
+
+
+
+ $(_MonoWorkloadRuntimePackPackageVersion)
+
+ Microsoft.NETCore.App.Runtime.Mono.multithread.**RID**
+ Microsoft.NETCore.App.Runtime.Mono.perftrace.**RID**
+
+
+
diff --git a/.dotnet/sdk-advertising/8.0.400/microsoft.net.workload.mono.toolchain.net7/localize/WorkloadManifest.cs.json b/.dotnet/sdk-advertising/8.0.400/microsoft.net.workload.mono.toolchain.net7/localize/WorkloadManifest.cs.json
new file mode 100644
index 0000000..2866f53
--- /dev/null
+++ b/.dotnet/sdk-advertising/8.0.400/microsoft.net.workload.mono.toolchain.net7/localize/WorkloadManifest.cs.json
@@ -0,0 +1,3 @@
+{
+ "workloads/wasm-tools-net7/description": "Nástroje pro sestavení .NET WebAssembly"
+}
diff --git a/.dotnet/sdk-advertising/8.0.400/microsoft.net.workload.mono.toolchain.net7/localize/WorkloadManifest.de.json b/.dotnet/sdk-advertising/8.0.400/microsoft.net.workload.mono.toolchain.net7/localize/WorkloadManifest.de.json
new file mode 100644
index 0000000..1190fc2
--- /dev/null
+++ b/.dotnet/sdk-advertising/8.0.400/microsoft.net.workload.mono.toolchain.net7/localize/WorkloadManifest.de.json
@@ -0,0 +1,3 @@
+{
+ "workloads/wasm-tools-net7/description": ".NET WebAssembly-Buildtools"
+}
diff --git a/.dotnet/sdk-advertising/8.0.400/microsoft.net.workload.mono.toolchain.net7/localize/WorkloadManifest.en.json b/.dotnet/sdk-advertising/8.0.400/microsoft.net.workload.mono.toolchain.net7/localize/WorkloadManifest.en.json
new file mode 100644
index 0000000..9818c50
--- /dev/null
+++ b/.dotnet/sdk-advertising/8.0.400/microsoft.net.workload.mono.toolchain.net7/localize/WorkloadManifest.en.json
@@ -0,0 +1,5 @@
+{
+ "workloads/wasm-tools-net7/description": ".NET WebAssembly build tools for net7.0",
+ "workloads/wasm-experimental-net7/description": ".NET WebAssembly experimental tooling for net7.0",
+ "workloads/runtimes-windows-net7/description": "Windows Runtime Packs for net7.0"
+}
diff --git a/.dotnet/sdk-advertising/8.0.400/microsoft.net.workload.mono.toolchain.net7/localize/WorkloadManifest.es.json b/.dotnet/sdk-advertising/8.0.400/microsoft.net.workload.mono.toolchain.net7/localize/WorkloadManifest.es.json
new file mode 100644
index 0000000..88e0301
--- /dev/null
+++ b/.dotnet/sdk-advertising/8.0.400/microsoft.net.workload.mono.toolchain.net7/localize/WorkloadManifest.es.json
@@ -0,0 +1,3 @@
+{
+ "workloads/wasm-tools-net7/description": "Herramientas de compilación de WebAssembly de .NET"
+}
diff --git a/.dotnet/sdk-advertising/8.0.400/microsoft.net.workload.mono.toolchain.net7/localize/WorkloadManifest.fr.json b/.dotnet/sdk-advertising/8.0.400/microsoft.net.workload.mono.toolchain.net7/localize/WorkloadManifest.fr.json
new file mode 100644
index 0000000..b3609f7
--- /dev/null
+++ b/.dotnet/sdk-advertising/8.0.400/microsoft.net.workload.mono.toolchain.net7/localize/WorkloadManifest.fr.json
@@ -0,0 +1,3 @@
+{
+ "workloads/wasm-tools-net7/description": "Outils de construction .NET WebAssembly"
+}
diff --git a/.dotnet/sdk-advertising/8.0.400/microsoft.net.workload.mono.toolchain.net7/localize/WorkloadManifest.it.json b/.dotnet/sdk-advertising/8.0.400/microsoft.net.workload.mono.toolchain.net7/localize/WorkloadManifest.it.json
new file mode 100644
index 0000000..d45e15b
--- /dev/null
+++ b/.dotnet/sdk-advertising/8.0.400/microsoft.net.workload.mono.toolchain.net7/localize/WorkloadManifest.it.json
@@ -0,0 +1,3 @@
+{
+ "workloads/wasm-tools-net7/description": "Strumenti di compilazione WebAssembly .NET"
+}
diff --git a/.dotnet/sdk-advertising/8.0.400/microsoft.net.workload.mono.toolchain.net7/localize/WorkloadManifest.ja.json b/.dotnet/sdk-advertising/8.0.400/microsoft.net.workload.mono.toolchain.net7/localize/WorkloadManifest.ja.json
new file mode 100644
index 0000000..7a1ec2c
--- /dev/null
+++ b/.dotnet/sdk-advertising/8.0.400/microsoft.net.workload.mono.toolchain.net7/localize/WorkloadManifest.ja.json
@@ -0,0 +1,3 @@
+{
+ "workloads/wasm-tools-net7/description": ".NET WebAssembly ビルド ツール"
+}
diff --git a/.dotnet/sdk-advertising/8.0.400/microsoft.net.workload.mono.toolchain.net7/localize/WorkloadManifest.ko.json b/.dotnet/sdk-advertising/8.0.400/microsoft.net.workload.mono.toolchain.net7/localize/WorkloadManifest.ko.json
new file mode 100644
index 0000000..3fbb236
--- /dev/null
+++ b/.dotnet/sdk-advertising/8.0.400/microsoft.net.workload.mono.toolchain.net7/localize/WorkloadManifest.ko.json
@@ -0,0 +1,3 @@
+{
+ "workloads/wasm-tools-net7/description": ".NET WebAssembly 빌드 도구"
+}
diff --git a/.dotnet/sdk-advertising/8.0.400/microsoft.net.workload.mono.toolchain.net7/localize/WorkloadManifest.pl.json b/.dotnet/sdk-advertising/8.0.400/microsoft.net.workload.mono.toolchain.net7/localize/WorkloadManifest.pl.json
new file mode 100644
index 0000000..0041a66
--- /dev/null
+++ b/.dotnet/sdk-advertising/8.0.400/microsoft.net.workload.mono.toolchain.net7/localize/WorkloadManifest.pl.json
@@ -0,0 +1,3 @@
+{
+ "workloads/wasm-tools-net7/description": "Narzędzia kompilacji zestawu WebAssembly platformy .NET"
+}
diff --git a/.dotnet/sdk-advertising/8.0.400/microsoft.net.workload.mono.toolchain.net7/localize/WorkloadManifest.pt-BR.json b/.dotnet/sdk-advertising/8.0.400/microsoft.net.workload.mono.toolchain.net7/localize/WorkloadManifest.pt-BR.json
new file mode 100644
index 0000000..7694f2c
--- /dev/null
+++ b/.dotnet/sdk-advertising/8.0.400/microsoft.net.workload.mono.toolchain.net7/localize/WorkloadManifest.pt-BR.json
@@ -0,0 +1,3 @@
+{
+ "workloads/wasm-tools-net7/description": "Ferramentas de build do .NET WebAssembly"
+}
diff --git a/.dotnet/sdk-advertising/8.0.400/microsoft.net.workload.mono.toolchain.net7/localize/WorkloadManifest.ru.json b/.dotnet/sdk-advertising/8.0.400/microsoft.net.workload.mono.toolchain.net7/localize/WorkloadManifest.ru.json
new file mode 100644
index 0000000..7230d7e
--- /dev/null
+++ b/.dotnet/sdk-advertising/8.0.400/microsoft.net.workload.mono.toolchain.net7/localize/WorkloadManifest.ru.json
@@ -0,0 +1,3 @@
+{
+ "workloads/wasm-tools/description": "Средства сборки WebAssembly .NET"
+}
\ No newline at end of file
diff --git a/.dotnet/sdk-advertising/8.0.400/microsoft.net.workload.mono.toolchain.net7/localize/WorkloadManifest.tr.json b/.dotnet/sdk-advertising/8.0.400/microsoft.net.workload.mono.toolchain.net7/localize/WorkloadManifest.tr.json
new file mode 100644
index 0000000..eaeb79b
--- /dev/null
+++ b/.dotnet/sdk-advertising/8.0.400/microsoft.net.workload.mono.toolchain.net7/localize/WorkloadManifest.tr.json
@@ -0,0 +1,3 @@
+{
+ "workloads/wasm-tools-net7/description": ".NET WebAssembly derleme araçları"
+}
diff --git a/.dotnet/sdk-advertising/8.0.400/microsoft.net.workload.mono.toolchain.net7/localize/WorkloadManifest.zh-Hans.json b/.dotnet/sdk-advertising/8.0.400/microsoft.net.workload.mono.toolchain.net7/localize/WorkloadManifest.zh-Hans.json
new file mode 100644
index 0000000..33f8aae
--- /dev/null
+++ b/.dotnet/sdk-advertising/8.0.400/microsoft.net.workload.mono.toolchain.net7/localize/WorkloadManifest.zh-Hans.json
@@ -0,0 +1,3 @@
+{
+ "workloads/wasm-tools-net7/description": ".NET WebAssembly 生成工具"
+}
diff --git a/.dotnet/sdk-advertising/8.0.400/microsoft.net.workload.mono.toolchain.net7/localize/WorkloadManifest.zh-Hant.json b/.dotnet/sdk-advertising/8.0.400/microsoft.net.workload.mono.toolchain.net7/localize/WorkloadManifest.zh-Hant.json
new file mode 100644
index 0000000..112ff46
--- /dev/null
+++ b/.dotnet/sdk-advertising/8.0.400/microsoft.net.workload.mono.toolchain.net7/localize/WorkloadManifest.zh-Hant.json
@@ -0,0 +1,3 @@
+{
+ "workloads/wasm-tools-net7/description": ".NET WebAssembly 組建工具"
+}
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..1d11926
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,10 @@
+# build output
+bin/
+obj/
+prebuilt/
+*.user
+.vs/
+# installers and archives — attach these to a Gitea Release instead of committing them
+*.exe
+*.zip
+*.pdb
\ No newline at end of file
diff --git a/.nuget/NuGet/NuGet.Config b/.nuget/NuGet/NuGet.Config
new file mode 100644
index 0000000..2c70539
--- /dev/null
+++ b/.nuget/NuGet/NuGet.Config
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.sudo_as_admin_successful b/.sudo_as_admin_successful
new file mode 100644
index 0000000..e69de29
diff --git a/LiveWall.Sdk/Contracts.cs b/LiveWall.Sdk/Contracts.cs
new file mode 100644
index 0000000..52b237f
--- /dev/null
+++ b/LiveWall.Sdk/Contracts.cs
@@ -0,0 +1,359 @@
+using System.Windows;
+
+namespace LiveWall.Sdk;
+
+/// Version of the plugin API. Bumped when contracts change in an incompatible way.
+public static class PluginApi
+{
+ /// Current contract version. Plugins must declare a compatible version in plugin.json.
+ public const string Version = "1.0";
+
+ /// Host application version this SDK shipped with (informational).
+ public const string HostVersion = "1.8.4";
+}
+
+///
+/// What a plugin is allowed to do, declared in its plugin.json and shown to the user before
+/// the plugin is enabled. These are declarations, not a sandbox: a plugin runs inside LiveWall's
+/// process with full .NET rights. They exist so the user knows what they are agreeing to.
+///
+[Flags]
+public enum PluginPermission
+{
+ None = 0,
+
+ /// Read the current wallpaper, playback state and a snapshot of the settings.
+ ReadWallpaper = 1 << 0,
+
+ /// Play / pause / next / set the wallpaper.
+ ControlPlayback = 1 << 1,
+
+ /// Draw a layer on top of the wallpaper (clocks, visualisers, badges…).
+ DesktopOverlay = 1 << 2,
+
+ /// Contribute pages to the LiveWall settings window.
+ SettingsUi = 1 << 3,
+
+ /// Contribute commands the user can run from the app.
+ Commands = 1 << 4,
+
+ /// Contribute entries to the tray menu.
+ TrayMenu = 1 << 5,
+
+ /// Register global hotkeys.
+ Hotkeys = 1 << 6,
+
+ /// Read and write files (the plugin's data folder, and anything the user points it at).
+ FileSystem = 1 << 7,
+
+ /// Make outbound network requests.
+ Network = 1 << 8,
+
+ /// Supply a wallpaper renderer for sources it claims (overrides the built-in players).
+ Renderer = 1 << 9,
+
+ /// Rewrite or veto wallpaper requests before the engine applies them.
+ Filters = 1 << 10,
+
+ All = ReadWallpaper | ControlPlayback | DesktopOverlay | SettingsUi | Commands | TrayMenu |
+ Hotkeys | FileSystem | Network | Renderer | Filters
+}
+
+/// Human readable description of what every permission means (used by the warning dialog).
+public static class PluginPermissionInfo
+{
+ public static string Describe(PluginPermission permission) => permission switch
+ {
+ PluginPermission.ReadWallpaper => "Read your current wallpaper, playback state and settings",
+ PluginPermission.ControlPlayback => "Start, stop, skip and replace your wallpaper",
+ PluginPermission.DesktopOverlay => "Draw content on top of your desktop wallpaper",
+ PluginPermission.SettingsUi => "Add pages to the LiveWall settings window",
+ PluginPermission.Commands => "Add commands to LiveWall",
+ PluginPermission.TrayMenu => "Add entries to the LiveWall tray menu",
+ PluginPermission.Hotkeys => "Register system-wide keyboard shortcuts",
+ PluginPermission.FileSystem => "Read and write files on your computer",
+ PluginPermission.Network => "Connect to the internet",
+ PluginPermission.Renderer => "Take over wallpaper playback with its own renderer",
+ PluginPermission.Filters => "Rewrite or block wallpaper changes",
+ _ => permission.ToString()
+ };
+
+ /// Expands a flag set into individual descriptions.
+ public static IReadOnlyList<(PluginPermission Permission, string Description)> Expand(PluginPermission permissions)
+ {
+ var list = new List<(PluginPermission, string)>();
+ foreach (PluginPermission p in Enum.GetValues())
+ {
+ if (p is PluginPermission.None or PluginPermission.All) continue;
+ if (permissions.HasFlag(p)) list.Add((p, Describe(p)));
+ }
+ return list;
+ }
+}
+
+/// Everything the host knows about a plugin. Filled in by LiveWall before Initialize.
+public sealed class PluginInfo
+{
+ public string Id { get; init; } = "";
+ public string Name { get; init; } = "";
+ public string Version { get; init; } = "";
+ public string Author { get; init; } = "";
+ public string Description { get; init; } = "";
+ public string Homepage { get; init; } = "";
+ public string ApiVersion { get; init; } = "";
+ public PluginPermission Permissions { get; init; }
+
+ /// Absolute path of the plugin folder.
+ public string Folder { get; init; } = "";
+
+ /// Absolute path of the plugin assembly.
+ public string AssemblyPath { get; init; } = "";
+
+ /// SHA-256 of the plugin assembly (lower case hex).
+ public string Sha256 { get; init; } = "";
+
+ ///
+ /// True when the loaded assembly hash matches the hash the user trusted on this machine, or the
+ /// publisher ships it in LiveWall's built-in trusted list. Unverified plugins run with a warning.
+ ///
+ public bool Verified { get; init; }
+}
+
+/// The plugin entry point. One public class implementing this per assembly.
+public interface ILiveWallPlugin
+{
+ ///
+ /// Called once, on the UI thread, after the user enabled the plugin. Register your extensions
+ /// and subscribe to events here. Exceptions are caught, logged and disable the plugin.
+ ///
+ void Initialize(IPluginContext context);
+
+ /// Called when the plugin is disabled, reloaded or the app is closing.
+ void Shutdown();
+}
+
+/// Everything a plugin can reach. One instance per plugin.
+public interface IPluginContext
+{
+ PluginInfo Info { get; }
+
+ /// Writes to the LiveWall log next to the host's own messages.
+ IPluginLog Log { get; }
+
+ /// Persistent key/value storage owned by the plugin (JSON file in its data folder).
+ IPluginStorage Storage { get; }
+
+ /// Read-only snapshot of the user's configuration.
+ ISettingsSnapshot Settings { get; }
+
+ /// Actions a plugin may trigger in the host.
+ IHostActions Host { get; }
+
+ /// Type based publish/subscribe bus.
+ IPluginEvents Events { get; }
+
+ /// Registers extension points (overlays, pages, commands, renderers, filters, hotkeys).
+ IPluginRegistrar Extensions { get; }
+
+ /// Cancelled when the plugin is being shut down. Pass it to your async work.
+ CancellationToken ShutdownToken { get; }
+}
+
+/// Logging façade. Everything lands in %APPDATA%\LiveWall\logs.
+public interface IPluginLog
+{
+ void Debug(string message);
+ void Info(string message);
+ void Warn(string message);
+ void Error(string message, Exception? exception = null);
+}
+
+///
+/// Per plugin JSON storage. Values are serialised with System.Text.Json, so any POCO works.
+///
+public interface IPluginStorage
+{
+ /// The plugin's private data folder (created on demand).
+ string DataFolder { get; }
+
+ T? Get(string key, T? fallback = default);
+ void Set(string key, T value);
+ bool Remove(string key);
+ IReadOnlyCollection Keys { get; }
+
+ /// Absolute path inside the data folder; the directory is created for you.
+ string PathFor(string fileName);
+
+ /// Writes pending changes immediately (normally done automatically).
+ void Flush();
+}
+
+/// Read-only view of the live settings.
+public interface ISettingsSnapshot
+{
+ Guid SnapshotId { get; }
+ string SourceKind { get; } // "Video", "AnimatedGif", "Image", "YouTube", "WebPage"
+ string SourceLocation { get; } // file path or URL
+ bool Muted { get; }
+ double Volume { get; } // 0–100
+ double Speed { get; } // 0.25–4
+ bool Loop { get; }
+ bool InteractiveMode { get; }
+ bool Paused { get; }
+ int DimPercent { get; }
+ string DimColor { get; }
+ IReadOnlyList DisplayDevices { get; }
+}
+
+/// The current wallpaper, as seen by plugins.
+public sealed class WallpaperState
+{
+ public string Kind { get; init; } = "";
+ public string Source { get; init; } = "";
+ public string Title { get; init; } = "";
+ public bool IsPlaying { get; init; }
+ public bool IsPaused { get; init; }
+ public bool IsInteractive { get; init; }
+ public bool SuppliedByPlugin { get; init; }
+ public string RendererName { get; init; } = "";
+}
+
+/// Host actions. Each one is a no-op when the plugin lacks the permission for it.
+public interface IHostActions
+{
+ WallpaperState Current { get; }
+
+ /// Replaces the wallpaper (needs ).
+ void SetWallpaper(WallpaperRequest request);
+
+ void Play();
+ void Pause();
+ void TogglePause();
+ void NextWallpaper();
+ void ReloadWallpaper();
+ void Reattach();
+
+ /// Opens the LiveWall settings window.
+ void OpenSettings();
+
+ /// Status line in the settings window.
+ void SetStatus(string text);
+
+ /// Balloon notification (respects the user's notification setting).
+ void ShowNotification(string title, string message);
+
+ /// Shows or hides the desktop overlay layer for this plugin.
+ void SetOverlayVisible(bool visible);
+}
+
+/// A wallpaper a plugin wants to show.
+public sealed class WallpaperRequest
+{
+ /// "Video", "AnimatedGif", "Image", "YouTube", "WebPage" or "Custom".
+ public string Kind { get; set; } = "Custom";
+
+ /// File path, URL or any string your renderer interprets.
+ public string Source { get; set; } = "";
+
+ public string Title { get; set; } = "";
+
+ /// Free-form data for your own renderer (survives filters, not persisted).
+ public Dictionary Metadata { get; } = new(StringComparer.OrdinalIgnoreCase);
+
+ public WallpaperRequest Clone()
+ {
+ var clone = new WallpaperRequest { Kind = Kind, Source = Source, Title = Title };
+ foreach (var pair in Metadata) clone.Metadata[pair.Key] = pair.Value;
+ return clone;
+ }
+
+ public override string ToString() => $"{Kind}:{Source}";
+}
+
+/// Registers extension points. All calls are thread safe and may happen in Initialize.
+public interface IPluginRegistrar
+{
+ /// Draws above the wallpaper (needs ).
+ void AddOverlay(IWallpaperOverlay overlay);
+
+ void RemoveOverlay(IWallpaperOverlay overlay);
+
+ /// Adds a page to the Plugins tab (needs ).
+ void AddSettingsPage(IPluginSettingsPage page);
+
+ /// Adds a command to the app and the tray menu.
+ void AddCommand(PluginCommand command);
+
+ /// Adds a wallpaper filter (needs ).
+ void AddFilter(IWallpaperFilter filter);
+
+ /// Takes over rendering of sources it claims (needs ).
+ void AddRenderer(IWallpaperRendererPlugin renderer);
+
+ /// Registers a global hotkey such as "Ctrl+Alt+K" (needs ).
+ void AddHotkey(PluginHotkey hotkey);
+}
+
+/// An entry in the app's plugin command list and the tray menu.
+public sealed class PluginCommand
+{
+ public PluginCommand(string id, string title, Action execute)
+ {
+ Id = id;
+ Title = title;
+ Execute = execute;
+ }
+
+ public string Id { get; }
+ public string Title { get; set; }
+
+ /// Optional grouping label, e.g. "Wallpaper".
+ public string Category { get; set; } = "";
+
+ /// Return false to disable the entry (evaluated when the menu opens).
+ public Func? CanExecute { get; set; }
+
+ internal Action Execute { get; }
+
+ public void Run(PluginCommandContext context) => Execute(context);
+}
+
+/// Passed to .
+public sealed class PluginCommandContext
+{
+ public PluginCommandContext(IPluginContext plugin, IHostActions host)
+ {
+ Plugin = plugin;
+ Host = host;
+ }
+
+ public IPluginContext Plugin { get; }
+ public IHostActions Host { get; }
+}
+
+/// A global keyboard shortcut contributed by a plugin.
+public sealed class PluginHotkey
+{
+ public PluginHotkey(string id, string gesture, Action action)
+ {
+ Id = id;
+ Gesture = gesture;
+ Action = action;
+ }
+
+ public string Id { get; }
+
+ /// Combination such as "Ctrl+Alt+K", parsed like LiveWall's own hotkeys.
+ public string Gesture { get; }
+
+ public string Description { get; set; } = "";
+
+ public Action Action { get; }
+}
+
+/// Raised by plugins to inform others about something (or to listen).
+public interface IPluginEvents
+{
+ IDisposable Subscribe(Action handler) where TEvent : class;
+ void Publish(TEvent payload) where TEvent : class;
+}
diff --git a/LiveWall.Sdk/Events.cs b/LiveWall.Sdk/Events.cs
new file mode 100644
index 0000000..f42eccd
--- /dev/null
+++ b/LiveWall.Sdk/Events.cs
@@ -0,0 +1,82 @@
+namespace LiveWall.Sdk;
+
+// ---------------------------------------------------------------------------------------------
+// Events published on IPluginEvents. Subscribe from ILiveWallPlugin.Initialize:
+//
+// context.Events.Subscribe(e => context.Log.Info($"now: {e.Source}"));
+//
+// Handlers always run on the WPF UI thread.
+// ---------------------------------------------------------------------------------------------
+
+/// The host finished starting: settings are loaded and the wallpaper is attached.
+public sealed class AppStartedEvent
+{
+ public string HostVersion { get; init; } = "";
+ public string PluginApiVersion { get; init; } = "";
+}
+
+/// LiveWall is shutting down. Unsubscribe and release resources now.
+public sealed class AppStoppingEvent
+{
+ public string Reason { get; init; } = "exit";
+}
+
+/// A new wallpaper was applied (kind/source/renderer as they are now).
+public sealed class WallpaperChangedEvent
+{
+ public string Kind { get; init; } = "";
+ public string Source { get; init; } = "";
+ public string RendererName { get; init; } = "";
+ public bool FromPlugin { get; init; }
+}
+
+/// Playback started, stopped or was suspended (lock screen, battery, fullscreen…).
+public sealed class PlaybackChangedEvent
+{
+ public bool IsPlaying { get; init; }
+ public bool IsPaused { get; init; }
+ public string Reason { get; init; } = "";
+}
+
+/// Interactive mode was toggled.
+public sealed class InteractionChangedEvent
+{
+ public bool Interactive { get; init; }
+}
+
+/// Any settings change. is the property name that changed.
+public sealed class SettingsChangedEvent
+{
+ public string Property { get; init; } = "";
+ public ISettingsSnapshot Snapshot { get; init; } = null!;
+}
+
+/// Display topology changed or the wallpaper was re-attached.
+public sealed class DisplayChangedEvent
+{
+ public IReadOnlyList Devices { get; init; } = Array.Empty();
+ public bool Reattached { get; init; }
+}
+
+/// Session state (lock screen, battery, remote desktop) changed.
+public sealed class SessionChangedEvent
+{
+ public bool Locked { get; init; }
+ public bool OnBattery { get; init; }
+ public bool RemoteSession { get; init; }
+}
+
+/// Something failed inside the host; useful for plugins that surface errors.
+public sealed class HostErrorEvent
+{
+ public string Message { get; init; } = "";
+ public string Source { get; init; } = "";
+}
+
+/// Plugin-to-plugin messaging: publish any class you like.
+public sealed class PluginMessageEvent
+{
+ public string FromPluginId { get; init; } = "";
+ public string Topic { get; init; } = "";
+ public string? Payload { get; init; }
+}
diff --git a/LiveWall.Sdk/Extensions.cs b/LiveWall.Sdk/Extensions.cs
new file mode 100644
index 0000000..7299077
--- /dev/null
+++ b/LiveWall.Sdk/Extensions.cs
@@ -0,0 +1,115 @@
+using System.Windows;
+
+namespace LiveWall.Sdk;
+
+///
+/// A visual layer drawn on top of the wallpaper, inside LiveWall's desktop overlay window (the same
+/// window that carries the desktop icons). Because that window is per-pixel transparent, only the
+/// pixels you paint block the mouse - everything else falls through to the desktop.
+///
+public interface IWallpaperOverlay
+{
+ /// Shown in the plugin's UI and the diagnostics report.
+ string Name { get; }
+
+ ///
+ /// Creates the visual. Called once per display, on the UI thread. Keep it cheap and transparent.
+ /// The returned element is stretched to the display and is not hit-testable by default.
+ ///
+ FrameworkElement CreateView(OverlayContext context);
+
+ /// Called whenever the wallpaper, playback or interaction state changes.
+ void Update(OverlayState state);
+
+ /// Called when the user hides the overlay or the plugin is disabled.
+ void OnVisibilityChanged(bool visible) { }
+}
+
+/// Display specific context handed to .
+public sealed class OverlayContext
+{
+ public int DisplayIndex { get; init; }
+ public string DeviceName { get; init; } = "";
+ public double Width { get; init; }
+ public double Height { get; init; }
+ public double DpiScale { get; init; } = 1.0;
+ public bool Primary { get; init; }
+}
+
+/// State handed to .
+public sealed class OverlayState
+{
+ public string Kind { get; init; } = "";
+ public string Source { get; init; } = "";
+ public string Title { get; init; } = "";
+ public bool IsPlaying { get; init; }
+ public bool IsPaused { get; init; }
+ public bool IsInteractive { get; init; }
+ public DateTime TimestampUtc { get; init; } = DateTime.UtcNow;
+}
+
+/// A page the plugin adds to the LiveWall settings window (Plugins tab).
+public interface IPluginSettingsPage
+{
+ string Title { get; }
+
+ /// One or two sentences for the page header.
+ string Description { get; }
+
+ /// Builds the page content. Called once, on the UI thread.
+ FrameworkElement CreateView();
+}
+
+///
+/// Rewrites wallpaper requests before the engine applies them: resolve a URL, swap a file, pin a
+/// playlist entry, or veto a change by returning the previous request.
+///
+public interface IWallpaperFilter
+{
+ /// Higher runs first. 0 is a good default.
+ int Priority { get; }
+
+ /// Return the request to apply (return the argument unchanged to leave it alone).
+ WallpaperRequest Apply(WallpaperRequest request, IHostActions host);
+}
+
+///
+/// Renders wallpaper sources the built-in players cannot handle. The first renderer whose
+/// returns true wins (highest first), so a plugin can
+/// also take over a source LiveWall would otherwise play itself.
+///
+public interface IWallpaperRendererPlugin
+{
+ string Name { get; }
+
+ /// Higher wins over other plugins (built-in renderers are not in this race).
+ int Priority { get; }
+
+ /// Decides whether this renderer handles the source string.
+ bool CanRender(WallpaperRequest request);
+
+ IWallpaperRenderer Create();
+}
+
+/// The renderer instance. LiveWall owns its lifetime.
+public interface IWallpaperRenderer : IDisposable
+{
+ /// The visual shown as the wallpaper. Keep the background opaque.
+ FrameworkElement View { get; }
+
+ /// Loads the source. Throw to report a problem (it is shown to the user).
+ void Load(WallpaperRequest request);
+
+ void Play();
+ void Pause();
+ void Unload();
+
+ /// Volume is 0–100, speed 0.25–4.
+ void ApplyPlayback(bool muted, double volume, double speed);
+
+ /// Raised when playback fails (message is shown in the status bar and the log).
+ event EventHandler? Failed;
+
+ /// Raised when a non-looping source finished.
+ event EventHandler? Ended;
+}
diff --git a/LiveWall.Sdk/LiveWall.Sdk.csproj b/LiveWall.Sdk/LiveWall.Sdk.csproj
new file mode 100644
index 0000000..479d455
--- /dev/null
+++ b/LiveWall.Sdk/LiveWall.Sdk.csproj
@@ -0,0 +1,17 @@
+
+
+
+ net8.0-windows
+ true
+ enable
+ enable
+ latest
+ LiveWall.Sdk
+ LiveWall.Sdk
+ true
+ true
+ $(NoWarn);CA1416;CS1591
+ Contract assembly for LiveWall plugins.
+
+
+
diff --git a/LiveWall/.gitignore b/LiveWall/.gitignore
new file mode 100644
index 0000000..1c53e31
--- /dev/null
+++ b/LiveWall/.gitignore
@@ -0,0 +1,6 @@
+bin/
+obj/
+dist/
+*.user
+.vs/
+*.log
diff --git a/LiveWall/App.xaml b/LiveWall/App.xaml
new file mode 100644
index 0000000..96e6962
--- /dev/null
+++ b/LiveWall/App.xaml
@@ -0,0 +1,14 @@
+
+
+
+
+
+
+
+
+
+
diff --git a/LiveWall/App.xaml.cs b/LiveWall/App.xaml.cs
new file mode 100644
index 0000000..82e3fb8
--- /dev/null
+++ b/LiveWall/App.xaml.cs
@@ -0,0 +1,466 @@
+using System.Windows;
+using System.Windows.Threading;
+using LiveWall.Models;
+using LiveWall.Plugins;
+using LiveWall.Sdk;
+using LiveWall.Services;
+
+namespace LiveWall;
+
+public partial class App : Application
+{
+ private Mutex? _mutex;
+ private EventWaitHandle? _showEvent;
+ private Thread? _showListener;
+ private volatile bool _running = true;
+
+ private MainWindow? _window;
+ private TrayService? _tray;
+ private HotkeyManager? _hotkeys;
+ private PluginHost? _plugins;
+ private DispatcherTimer? _saveTimer;
+ private bool _exiting;
+
+ public AppSettings Settings { get; private set; } = new();
+ public WallpaperEngine Engine { get; private set; } = null!;
+
+ protected override void OnStartup(StartupEventArgs e)
+ {
+ base.OnStartup(e);
+
+ if (!AcquireSingleInstance())
+ {
+ Shutdown();
+ return;
+ }
+
+ DispatcherUnhandledException += OnUnhandledException;
+ AppDomain.CurrentDomain.UnhandledException += (_, args) =>
+ {
+ if (args.ExceptionObject is Exception ex)
+ Log.Error("Unhandled", ex);
+ };
+
+ Log.Info("==== LiveWall starting ====");
+
+ Settings = SettingsStore.Load();
+ Log.Verbose = Settings.Advanced.VerboseLogging;
+
+ // The registry is the source of truth for autostart.
+ Settings.Automation.StartWithWindows = StartupManager.IsEnabled();
+
+ _saveTimer = new DispatcherTimer(DispatcherPriority.Background) { Interval = TimeSpan.FromSeconds(1.2) };
+ _saveTimer.Tick += (_, _) =>
+ {
+ _saveTimer!.Stop();
+ SettingsStore.Save(Settings);
+ Log.Debug("Settings saved");
+ };
+ Settings.Changed += (_, _) =>
+ {
+ _saveTimer.Stop();
+ _saveTimer.Start();
+ };
+
+ Engine = new WallpaperEngine(Settings);
+ Engine.Failure += OnEngineFailure;
+ Engine.SettingsRequested += (_, _) => ShowSettingsWindow();
+ Engine.StatusChanged += (_, _) => UpdateStatusUi();
+ Engine.Start();
+
+ _hotkeys = new HotkeyManager();
+ ApplyHotkeys();
+
+ if (Settings.Automation.ShowTrayIcon)
+ CreateTray();
+
+ StartPlugins();
+
+ _window = new MainWindow(Settings, Engine, _plugins);
+ MainWindow = _window;
+
+ bool startMinimized = Settings.Automation.StartMinimized
+ || e.Args.Any(a => a.Equals("--minimized", StringComparison.OrdinalIgnoreCase));
+
+ if (startMinimized && Settings.Automation.ShowTrayIcon)
+ {
+ Log.Info("Starting minimized to tray");
+ }
+ else
+ {
+ _window.Show();
+ _window.Activate();
+ }
+
+ StartShowListener();
+ UpdateStatusUi();
+ }
+
+ // -------------------------------------------------------------- plugins
+
+ /// Wires the plugin host to the engine and the UI, then loads the enabled plugins.
+ private void StartPlugins()
+ {
+ try
+ {
+ _plugins = new PluginHost(Settings, new PluginBridge
+ {
+ SetWallpaper = ApplyPluginWallpaper,
+ Play = () => Engine.Resume(),
+ Pause = () => Engine.Pause(),
+ TogglePause = () => Engine.TogglePause(),
+ NextWallpaper = () => Engine.NextWallpaper(),
+ ReloadWallpaper = () => Engine.Reload(),
+ Reattach = () => Engine.Reattach(),
+ OpenSettings = ShowSettingsWindow,
+ SetStatus = text => Engine.SetStatusText(text),
+ Notify = (title, message) => _tray?.ShowBalloon(title, message),
+ GetState = BuildWallpaperState,
+ GetSnapshot = BuildSnapshot,
+ OverlaysChanged = () => Engine.RefreshPluginOverlays()
+ });
+
+ Engine.Plugins = _plugins;
+ _plugins.Changed += (_, _) => RefreshTrayPluginCommands();
+ _plugins.OverlaysChanged += (_, _) => RefreshTrayPluginCommands();
+
+ _plugins.Start();
+ if (_hotkeys != null) _plugins.RegisterHotkeys(_hotkeys);
+ RefreshTrayPluginCommands();
+
+ _plugins.Publish(new AppStartedEvent
+ {
+ HostVersion = PluginApi.HostVersion,
+ PluginApiVersion = PluginApi.Version
+ });
+
+ Log.Info($"Plugin system ready ({_plugins.ActiveCount} active)");
+ }
+ catch (Exception ex)
+ {
+ // Plugins are an optional extra: never let them stop LiveWall from starting.
+ Log.Error("The plugin system failed to start", ex);
+ _plugins = null;
+ Engine.Plugins = null;
+ }
+ }
+
+ private void RefreshTrayPluginCommands()
+ {
+ try
+ {
+ _tray?.SetPluginCommands(_plugins?.TrayCommands() ?? Array.Empty<(string, Action)>());
+
+ bool hasOverlays = _plugins?.Overlays.Count > 0;
+ _tray?.SetOverlayToggle(hasOverlays, _plugins?.AllOverlaysHidden ?? false, () =>
+ {
+ if (_plugins == null) return;
+ _plugins.SetAllOverlaysVisible(_plugins.AllOverlaysHidden);
+ });
+ }
+ catch (Exception ex) { Log.Debug($"Tray plugin commands: {ex.Message}"); }
+ }
+
+ /// A plugin asked for a different wallpaper: translate it into settings and reload.
+ private void ApplyPluginWallpaper(WallpaperRequest request)
+ {
+ if (request == null || string.IsNullOrWhiteSpace(request.Source))
+ return;
+
+ try
+ {
+ Log.Info($"A plugin set the wallpaper: {request.Kind} -> {request.Source}");
+
+ switch (request.Kind?.ToLowerInvariant())
+ {
+ case "video":
+ Settings.Source.Type = WallpaperType.Video;
+ Settings.Source.FilePath = request.Source;
+ break;
+ case "animatedgif":
+ case "gif":
+ Settings.Source.Type = WallpaperType.AnimatedGif;
+ Settings.Source.FilePath = request.Source;
+ break;
+ case "image":
+ Settings.Source.Type = WallpaperType.Image;
+ Settings.Source.FilePath = request.Source;
+ break;
+ case "youtube":
+ Settings.Source.Type = WallpaperType.YouTube;
+ Settings.Source.WebUrl = request.Source;
+ break;
+ default:
+ // "Custom" and web pages: a plugin renderer may claim this source, otherwise
+ // WebView2 shows it as a page.
+ Settings.Source.Type = WallpaperType.WebPage;
+ Settings.Source.WebUrl = request.Source;
+ break;
+ }
+
+ Engine.Reload();
+ }
+ catch (Exception ex)
+ {
+ Log.Error("Applying a wallpaper requested by a plugin failed", ex);
+ }
+ }
+
+ private static WallpaperState BuildWallpaperState()
+ => new()
+ {
+ Kind = "",
+ Source = "",
+ Title = "",
+ IsPlaying = false,
+ IsPaused = false,
+ IsInteractive = false
+ };
+
+ private ISettingsSnapshot BuildSnapshot()
+ {
+ var devices = Util.Displays.Resolve(Settings.Displays).Select(d => d.DeviceName).ToList();
+
+ return new LiveSettingsSnapshot
+ {
+ SnapshotId = Guid.NewGuid(),
+ SourceKind = Settings.Source.Type.ToString(),
+ SourceLocation = Settings.Source.Type is WallpaperType.YouTube or WallpaperType.WebPage
+ ? Settings.Source.WebUrl
+ : Settings.Source.FilePath,
+ Muted = Settings.Playback.Muted,
+ Volume = Settings.Playback.Volume,
+ Speed = Settings.Playback.Speed,
+ Loop = Settings.Playback.Loop,
+ InteractiveMode = Settings.Displays.Interaction == InteractionMode.Interactive,
+ Paused = Engine.IsPaused,
+ DimPercent = (int)Settings.Playback.Dim,
+ DimColor = Settings.Playback.DimColor,
+ DisplayDevices = devices
+ };
+ }
+
+ // -------------------------------------------------------------- single instance
+
+ private bool AcquireSingleInstance()
+ {
+ try
+ {
+ _mutex = new Mutex(initiallyOwned: true, name: @"Global\LiveWall.SingleInstance", out bool createdNew);
+ if (createdNew) return true;
+
+ // Another instance is running – ask it to show its window, then quit.
+ try
+ {
+ if (EventWaitHandle.TryOpenExisting(@"Global\LiveWall.ShowSettings", out var handle))
+ {
+ handle.Set();
+ handle.Dispose();
+ }
+ }
+ catch { }
+ return false;
+ }
+ catch (Exception ex)
+ {
+ Log.Warn($"Single-instance check failed: {ex.Message}");
+ return true;
+ }
+ }
+
+ private void StartShowListener()
+ {
+ try
+ {
+ _showEvent = new EventWaitHandle(false, EventResetMode.AutoReset, @"Global\LiveWall.ShowSettings");
+ }
+ catch (Exception ex)
+ {
+ Log.Warn($"Could not create show-event: {ex.Message}");
+ return;
+ }
+
+ _showListener = new Thread(() =>
+ {
+ while (_running)
+ {
+ try
+ {
+ _showEvent.WaitOne();
+ if (!_running) break;
+ Dispatcher.BeginInvoke(ShowSettingsWindow);
+ }
+ catch { break; }
+ }
+ })
+ { IsBackground = true, Name = "LiveWall.ShowListener" };
+ _showListener.Start();
+ }
+
+ // -------------------------------------------------------------- tray / hotkeys
+
+ private void CreateTray()
+ {
+ _tray?.Dispose();
+ _tray = new TrayService(
+ openSettings: ShowSettingsWindow,
+ togglePause: () => Engine.TogglePause(),
+ nextWallpaper: () => Engine.NextWallpaper(),
+ reload: () => Engine.Reload(),
+ toggleInteractive: () => Engine.ToggleInteractive(),
+ openLogs: OpenLogFolder,
+ exit: ExitApp);
+ UpdateStatusUi();
+ }
+
+ public void ApplyHotkeys()
+ {
+ if (_hotkeys == null) return;
+
+ var problems = _hotkeys.Apply(Settings.Hotkeys, action =>
+ {
+ switch (action)
+ {
+ case HotkeyAction.TogglePause:
+ Engine.TogglePause();
+ break;
+ case HotkeyAction.NextWallpaper:
+ Engine.NextWallpaper();
+ break;
+ case HotkeyAction.Reload:
+ Engine.Reload();
+ break;
+ case HotkeyAction.ToggleInteractive:
+ Engine.ToggleInteractive();
+ break;
+ }
+ });
+
+ if (problems.Count > 0)
+ {
+ Log.Warn("Hotkey problems: " + string.Join("; ", problems));
+ _window?.SetHotkeyWarning(string.Join("\n", problems));
+ }
+ else
+ {
+ _window?.SetHotkeyWarning(null);
+ }
+ }
+
+ public void ApplyTrayVisibility()
+ {
+ if (Settings.Automation.ShowTrayIcon)
+ {
+ if (_tray == null) CreateTray();
+ else _tray.SetVisible(true);
+ }
+ else
+ {
+ _tray?.SetVisible(false);
+ }
+ }
+
+ // -------------------------------------------------------------- window / status
+
+ public void ShowSettingsWindow()
+ {
+ if (_window == null) return;
+ _window.Show();
+ if (_window.WindowState == WindowState.Minimized)
+ _window.WindowState = WindowState.Normal;
+ _window.Activate();
+ _window.Topmost = true;
+ _window.Topmost = false;
+ _window.Focus();
+ }
+
+ private void UpdateStatusUi()
+ {
+ _window?.RefreshStatus(Engine.Status, Engine.IsPaused, Engine.IsInteractive);
+ _tray?.UpdateState(Engine.IsPaused, Engine.IsInteractive);
+ }
+
+ private void OnEngineFailure(object? sender, string message)
+ {
+ Dispatcher.BeginInvoke(() =>
+ {
+ _window?.ShowTransientError(message);
+ if (Settings.Automation.ShowNotifications)
+ _tray?.ShowBalloon("LiveWall", message);
+ });
+ }
+
+ public void OpenLogFolder()
+ {
+ try
+ {
+ System.Diagnostics.Process.Start(new System.Diagnostics.ProcessStartInfo
+ {
+ FileName = Paths.LogFolder,
+ UseShellExecute = true
+ });
+ }
+ catch (Exception ex)
+ {
+ Log.Warn($"Could not open log folder: {ex.Message}");
+ }
+ }
+
+ // -------------------------------------------------------------- shutdown
+
+ public void ExitApp()
+ {
+ if (_exiting) return;
+ _exiting = true;
+ Log.Info("Exit requested");
+
+ _running = false;
+ try { _showEvent?.Set(); } catch { }
+ _saveTimer?.Stop();
+
+ try { SettingsStore.Save(Settings); } catch { }
+
+ // Plugins first: they may still want to talk to the engine while it is alive.
+ try
+ {
+ _plugins?.Publish(new AppStoppingEvent { Reason = "exit" });
+ _plugins?.Dispose();
+ }
+ catch (Exception ex) { Log.Error("Plugin host dispose", ex); }
+
+ try { _hotkeys?.Dispose(); } catch { }
+ try { Engine?.Dispose(); } catch (Exception ex) { Log.Error("Engine dispose", ex); }
+ try { _tray?.Dispose(); } catch { }
+ try { _window?.ForceClose(); } catch { }
+
+ Shutdown();
+ }
+
+ protected override void OnExit(ExitEventArgs e)
+ {
+ _running = false;
+ try { _showEvent?.Set(); } catch { }
+ _mutex?.Dispose();
+ Log.Info("==== LiveWall stopped ====");
+ base.OnExit(e);
+ }
+
+ private void OnUnhandledException(object sender, DispatcherUnhandledExceptionEventArgs e)
+ {
+ Log.Error("Unhandled UI exception", e.Exception);
+
+ // Keep running, but tell the user exactly what failed and where to find the details.
+ string headline = $"{e.Exception.GetType().Name}: {e.Exception.Message}";
+ Log.Warn("Reported to user: " + headline);
+
+ e.Handled = true;
+
+ if (_window != null)
+ {
+ _window.ShowTransientError("Something went wrong - " + headline +
+ " (full details in the log: Advanced ▸ Open log folder)");
+ if (Settings.Automation.ShowNotifications)
+ _tray?.ShowBalloon("LiveWall hit a problem", headline);
+ }
+ }
+}
diff --git a/LiveWall/Assets/app.ico b/LiveWall/Assets/app.ico
new file mode 100644
index 0000000..79e7cc8
Binary files /dev/null and b/LiveWall/Assets/app.ico differ
diff --git a/LiveWall/Desktop/DesktopIconLayer.cs b/LiveWall/Desktop/DesktopIconLayer.cs
new file mode 100644
index 0000000..8c00b38
--- /dev/null
+++ b/LiveWall/Desktop/DesktopIconLayer.cs
@@ -0,0 +1,311 @@
+using System.Diagnostics;
+using System.IO;
+using System.Windows;
+using System.Windows.Controls;
+using System.Windows.Input;
+using System.Windows.Media;
+using System.Windows.Media.Effects;
+using LiveWall.Models;
+
+namespace LiveWall.Desktop;
+
+///
+/// Draws the desktop icons on top of an overlay wallpaper and makes them usable:
+/// click to select, double-click to open, right-click for a small menu.
+///
+/// This exists because the overlay wallpaper sits above the shell's own icon window, so the real
+/// icons would otherwise be covered. The layout is a simple grid (Explorer's own arrangement can't
+/// be read reliably), and the items come straight from the two desktop folders.
+///
+public sealed class DesktopIconLayer : Canvas, IDisposable
+{
+ private readonly DesktopIconsSettings _settings;
+ private readonly DesktopIconService _service = new();
+ private readonly List _items = new();
+ private readonly List _tiles = new();
+ private Border? _selected;
+
+ /// Number of icons currently drawn (used by the diagnostics report).
+ public int Tiles => _tiles.Count;
+ private bool _disposed;
+
+ public event EventHandler? SettingsRequested;
+ public event EventHandler? DisableRequested;
+
+ public DesktopIconLayer(DesktopIconsSettings settings)
+ {
+ _settings = settings;
+
+ // The layer lives in its own per-pixel transparent window: pixels with alpha 0 (or no
+ // brush at all) let the click fall through to the desktop, which is what we want between
+ // icons. Right-clicking empty space only works when the canvas paints something.
+ Background = settings.BlockDesktopClicks
+ ? new SolidColorBrush(Color.FromArgb(1, 0, 0, 0))
+ : null;
+
+ ClipToBounds = true;
+ SizeChanged += (_, _) => LayoutTiles();
+ }
+
+ public void Initialize()
+ {
+ Reload();
+ _service.StartWatching(() => Dispatcher.Invoke(Reload));
+ }
+
+ public void Reload()
+ {
+ if (_disposed) return;
+
+ _items.Clear();
+ _items.AddRange(_service.Load());
+ BuildTiles();
+ LayoutTiles();
+ }
+
+ // ------------------------------------------------------------------ visuals
+
+ private void BuildTiles()
+ {
+ Children.Clear();
+ _tiles.Clear();
+ _selected = null;
+
+ double iconSize = _settings.IconSize;
+
+ foreach (var item in _items)
+ {
+ var image = new Image
+ {
+ Source = item.Icon,
+ Width = iconSize,
+ Height = iconSize,
+ Stretch = Stretch.Uniform,
+ SnapsToDevicePixels = true,
+ HorizontalAlignment = HorizontalAlignment.Center
+ };
+
+ var stack = new StackPanel { HorizontalAlignment = HorizontalAlignment.Center };
+
+ // Icons without an image still need the space.
+ if (item.Icon == null)
+ {
+ image.Source = null;
+ image.Width = iconSize;
+ image.Height = iconSize;
+ }
+ stack.Children.Add(image);
+
+ if (_settings.ShowLabels)
+ {
+ var label = new TextBlock
+ {
+ Text = item.Name,
+ FontSize = 11.5,
+ Foreground = Brushes.White,
+ TextWrapping = TextWrapping.Wrap,
+ TextAlignment = TextAlignment.Center,
+ MaxWidth = iconSize + 44,
+ Margin = new Thickness(0, 4, 0, 0),
+ Effect = new DropShadowEffect
+ {
+ BlurRadius = 4,
+ ShadowDepth = 0,
+ Opacity = 0.95,
+ Color = Colors.Black
+ }
+ };
+ stack.Children.Add(label);
+ }
+
+ var tile = new Border
+ {
+ Child = stack,
+ Background = Brushes.Transparent,
+ BorderBrush = Brushes.Transparent,
+ BorderThickness = new Thickness(1),
+ CornerRadius = new CornerRadius(4),
+ Padding = new Thickness(4),
+ Tag = item,
+ Cursor = Cursors.Hand,
+ ToolTip = item.Path
+ };
+
+ tile.MouseLeftButtonDown += (_, e) =>
+ {
+ if (e.ClickCount == 2) Open(item);
+ else Select(tile);
+ e.Handled = true;
+ };
+
+ tile.MouseRightButtonDown += (_, e) =>
+ {
+ Select(tile);
+ tile.ContextMenu = BuildItemMenu(item);
+ tile.ContextMenu.IsOpen = true;
+ e.Handled = true;
+ };
+
+ Children.Add(tile);
+ _tiles.Add(tile);
+ }
+ }
+
+ private void LayoutTiles()
+ {
+ if (ActualWidth < 10 || ActualHeight < 10 || _tiles.Count == 0) return;
+
+ double iconSize = _settings.IconSize;
+ double cellWidth = iconSize + 52;
+ double cellHeight = iconSize + (_settings.ShowLabels ? 34 : 14);
+
+ const double marginX = 14;
+ const double marginY = 14;
+
+ double usableHeight = Math.Max(cellHeight, ActualHeight - marginY * 2);
+ int rows = Math.Max(1, (int)(usableHeight / cellHeight));
+
+ for (int i = 0; i < _tiles.Count; i++)
+ {
+ int column = i / rows;
+ int row = i % rows;
+
+ var tile = _tiles[i];
+ tile.Width = cellWidth;
+ tile.Height = cellHeight;
+ SetLeft(tile, marginX + column * cellWidth);
+ SetTop(tile, marginY + row * cellHeight);
+ }
+ }
+
+ ///
+ /// Points that sit on actual icons, in this element's coordinates. Used to ask Windows which
+ /// window is really on top there - the only trustworthy check that the icons are visible.
+ /// Several points are returned so a single transparent pixel cannot fake a failure.
+ ///
+ public List<(double X, double Y)> ProbePoints()
+ {
+ var points = new List<(double, double)>();
+ if (_tiles.Count == 0) return points;
+
+ void Add(Border tile)
+ {
+ double left = GetLeft(tile);
+ double top = GetTop(tile);
+ if (double.IsNaN(left) || double.IsNaN(top)) return;
+
+ double centreX = left + tile.Width / 2.0;
+ points.Add((centreX, top + 4 + _settings.IconSize / 2.0)); // the glyph itself
+ points.Add((centreX, top + tile.Height / 2.0)); // between glyph and label
+ if (_settings.ShowLabels)
+ points.Add((centreX, top + 4 + _settings.IconSize + 10)); // the label text
+ }
+
+ Add(_tiles[0]);
+ if (_tiles.Count > 1) Add(_tiles[_tiles.Count / 2]);
+ if (_tiles.Count > 2) Add(_tiles[^1]);
+
+ return points;
+ }
+
+ private void Select(Border? tile)
+ {
+ if (_selected != null)
+ {
+ _selected.Background = Brushes.Transparent;
+ _selected.BorderBrush = Brushes.Transparent;
+ }
+
+ _selected = tile;
+
+ if (_selected != null)
+ {
+ _selected.Background = new SolidColorBrush(Color.FromArgb(64, 108, 140, 255));
+ _selected.BorderBrush = new SolidColorBrush(Color.FromArgb(140, 108, 140, 255));
+ }
+ }
+
+ // ------------------------------------------------------------------ actions
+
+ private void Open(DesktopItem item)
+ {
+ try
+ {
+ Log.Info($"Opening desktop item '{item.Path}'");
+ Process.Start(new ProcessStartInfo
+ {
+ FileName = item.Path,
+ UseShellExecute = true
+ });
+ }
+ catch (Exception ex)
+ {
+ Log.Error($"Could not open '{item.Path}'", ex);
+ }
+ }
+
+ private ContextMenu BuildItemMenu(DesktopItem item)
+ {
+ var menu = new ContextMenu();
+
+ menu.Items.Add(MenuItem("Open", () => Open(item)));
+ menu.Items.Add(MenuItem("Show in File Explorer", () =>
+ {
+ try
+ {
+ Process.Start(new ProcessStartInfo
+ {
+ FileName = "explorer.exe",
+ Arguments = item.IsFolder ? $"\"{item.Path}\"" : $"/select,\"{item.Path}\"",
+ UseShellExecute = true
+ });
+ }
+ catch (Exception ex) { Log.Warn(ex.Message); }
+ }));
+ menu.Items.Add(new Separator());
+ menu.Items.Add(MenuItem("Refresh desktop icons", Reload));
+ menu.Items.Add(MenuItem("LiveWall settings…", () => SettingsRequested?.Invoke(this, EventArgs.Empty)));
+ menu.Items.Add(MenuItem("Stop drawing icons on the wallpaper", () => DisableRequested?.Invoke(this, EventArgs.Empty)));
+
+ return menu;
+ }
+
+ private static MenuItem MenuItem(string header, Action action)
+ {
+ var item = new MenuItem { Header = header };
+ item.Click += (_, _) =>
+ {
+ try { action(); } catch (Exception ex) { Log.Error("Menu action failed", ex); }
+ };
+ return item;
+ }
+
+ protected override void OnMouseRightButtonDown(MouseButtonEventArgs e)
+ {
+ base.OnMouseRightButtonDown(e);
+
+ var menu = new ContextMenu();
+ menu.Items.Add(MenuItem("Refresh desktop icons", Reload));
+ menu.Items.Add(MenuItem("LiveWall settings…", () => SettingsRequested?.Invoke(this, EventArgs.Empty)));
+ menu.Items.Add(MenuItem("Stop drawing icons on the wallpaper", () => DisableRequested?.Invoke(this, EventArgs.Empty)));
+ ContextMenu = menu;
+ menu.IsOpen = true;
+ e.Handled = true;
+ }
+
+ protected override void OnMouseLeftButtonDown(MouseButtonEventArgs e)
+ {
+ base.OnMouseLeftButtonDown(e);
+ Select(null);
+ }
+
+ public void Dispose()
+ {
+ if (_disposed) return;
+ _disposed = true;
+ _service.Dispose();
+ Children.Clear();
+ _tiles.Clear();
+ _items.Clear();
+ }
+}
diff --git a/LiveWall/Desktop/DesktopIconService.cs b/LiveWall/Desktop/DesktopIconService.cs
new file mode 100644
index 0000000..37a2c55
--- /dev/null
+++ b/LiveWall/Desktop/DesktopIconService.cs
@@ -0,0 +1,201 @@
+using System.IO;
+using System.Runtime.InteropServices;
+using System.Windows;
+using System.Windows.Interop;
+using System.Windows.Media;
+using System.Windows.Media.Imaging;
+
+namespace LiveWall.Desktop;
+
+/// One item from the user's %USERPROFILE%\Desktop or the public desktop folder.
+public sealed class DesktopItem
+{
+ public string Name { get; init; } = "";
+ public string Path { get; init; } = "";
+ public bool IsFolder { get; init; }
+ public ImageSource? Icon { get; init; }
+}
+
+/// Reads the desktop folders and their shell icons, and watches them for changes.
+public sealed class DesktopIconService : IDisposable
+{
+ private const uint ShgfiIcon = 0x00000100;
+ private const uint ShgfiLargeIcon = 0x00000000;
+ private const uint ShgfiUseFileAttributes = 0x00000010;
+ private const uint FileAttributeDirectory = 0x00000010;
+
+ [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
+ private struct ShFileInfo
+ {
+ public IntPtr hIcon;
+ public int iIcon;
+ public uint dwAttributes;
+ [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 260)] public string szDisplayName;
+ [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 80)] public string szTypeName;
+ }
+
+ [DllImport("shell32.dll", CharSet = CharSet.Unicode)]
+ private static extern IntPtr SHGetFileInfo(string pszPath, uint dwFileAttributes,
+ ref ShFileInfo psfi, uint cbFileInfo, uint uFlags);
+
+ [DllImport("user32.dll")]
+ private static extern bool DestroyIcon(IntPtr hIcon);
+
+ private readonly List _watchers = new();
+ private readonly System.Windows.Threading.DispatcherTimer _debounce;
+ private Action? _onChanged;
+
+ public DesktopIconService()
+ {
+ _debounce = new System.Windows.Threading.DispatcherTimer { Interval = TimeSpan.FromSeconds(1.5) };
+ _debounce.Tick += (_, _) =>
+ {
+ _debounce.Stop();
+ Log.Debug("Desktop folder changed – reloading icons");
+ _onChanged?.Invoke();
+ };
+ }
+
+ public string[] Folders => new[]
+ {
+ Environment.GetFolderPath(Environment.SpecialFolder.Desktop),
+ Environment.GetFolderPath(Environment.SpecialFolder.CommonDesktopDirectory)
+ }.Where(Directory.Exists).ToArray();
+
+ public void StartWatching(Action onChanged)
+ {
+ _onChanged = onChanged;
+
+ foreach (string folder in Folders)
+ {
+ try
+ {
+ var watcher = new FileSystemWatcher(folder)
+ {
+ NotifyFilter = NotifyFilters.FileName | NotifyFilters.DirectoryName | NotifyFilters.LastWrite | NotifyFilters.Attributes,
+ IncludeSubdirectories = false,
+ EnableRaisingEvents = true
+ };
+ watcher.Created += (_, _) => Trigger();
+ watcher.Deleted += (_, _) => Trigger();
+ watcher.Changed += (_, _) => Trigger();
+ watcher.Renamed += (_, _) => Trigger();
+ _watchers.Add(watcher);
+ }
+ catch (Exception ex)
+ {
+ Log.Warn($"Cannot watch '{folder}': {ex.Message}");
+ }
+ }
+ }
+
+ private void Trigger()
+ {
+ _debounce.Stop();
+ _debounce.Start();
+ }
+
+ public List Load()
+ {
+ var items = new List();
+
+ foreach (string folder in Folders)
+ {
+ try
+ {
+ foreach (string path in Directory.EnumerateFileSystemEntries(folder))
+ {
+ try
+ {
+ // Skip hidden/system entries (desktop.ini, thumbnails, …)
+ FileAttributes attributes = File.GetAttributes(path);
+ if ((attributes & (FileAttributes.Hidden | FileAttributes.System)) != 0) continue;
+
+ bool isFolder = (attributes & FileAttributes.Directory) != 0;
+ items.Add(new DesktopItem
+ {
+ Name = PrettyName(path),
+ Path = path,
+ IsFolder = isFolder,
+ Icon = LoadIcon(path, isFolder)
+ });
+ }
+ catch (Exception ex)
+ {
+ Log.Debug($"Skipping '{path}': {ex.Message}");
+ }
+ }
+ }
+ catch (Exception ex)
+ {
+ Log.Warn($"Cannot enumerate '{folder}': {ex.Message}");
+ }
+ }
+
+ // Same ordering Explorer uses: folders first, then alphabetical.
+ return items
+ .OrderByDescending(i => i.IsFolder)
+ .ThenBy(i => i.Name, StringComparer.CurrentCultureIgnoreCase)
+ .ToList();
+ }
+
+ private static string PrettyName(string path)
+ {
+ string name = Path.GetFileName(path);
+ // Shortcuts are shown without their ".lnk" extension.
+ if (name.EndsWith(".lnk", StringComparison.OrdinalIgnoreCase))
+ return Path.GetFileNameWithoutExtension(name);
+ return name;
+ }
+
+ private static ImageSource? LoadIcon(string path, bool isFolder)
+ {
+ var info = new ShFileInfo();
+ uint flags = ShgfiIcon | ShgfiLargeIcon;
+ uint attributes = 0;
+
+ if (isFolder)
+ {
+ // Ask for the generic folder icon instead of touching the disk entry.
+ flags |= ShgfiUseFileAttributes;
+ attributes = FileAttributeDirectory;
+ path = "folder";
+ }
+
+ try
+ {
+ IntPtr result = SHGetFileInfo(path, attributes, ref info,
+ (uint)Marshal.SizeOf(), flags);
+
+ if (result == IntPtr.Zero || info.hIcon == IntPtr.Zero)
+ return null;
+
+ try
+ {
+ var source = Imaging.CreateBitmapSourceFromHIcon(info.hIcon, Int32Rect.Empty,
+ BitmapSizeOptions.FromEmptyOptions());
+ source.Freeze();
+ return source;
+ }
+ finally
+ {
+ DestroyIcon(info.hIcon);
+ }
+ }
+ catch (Exception ex)
+ {
+ Log.Debug($"Icon for '{path}' failed: {ex.Message}");
+ return null;
+ }
+ }
+
+ public void Dispose()
+ {
+ _debounce.Stop();
+ foreach (var watcher in _watchers)
+ {
+ try { watcher.EnableRaisingEvents = false; watcher.Dispose(); } catch { }
+ }
+ _watchers.Clear();
+ }
+}
diff --git a/LiveWall/Desktop/DesktopIconWindow.cs b/LiveWall/Desktop/DesktopIconWindow.cs
new file mode 100644
index 0000000..c3f05fd
--- /dev/null
+++ b/LiveWall/Desktop/DesktopIconWindow.cs
@@ -0,0 +1,468 @@
+using System.Windows;
+using System.Windows.Controls;
+using System.Windows.Interop;
+using System.Windows.Media;
+using System.Windows.Threading;
+using LiveWall.Interop;
+using LiveWall.Models;
+using Drawing = System.Drawing;
+
+namespace LiveWall.Desktop;
+
+///
+/// Hosts the desktop icon layer in a window of its own, kept one slot above the wallpaper window.
+///
+/// The icons cannot live inside the wallpaper window: WebView2 (YouTube / web pages) and hardware
+/// video surfaces render into a child HWND that is always composited above every WPF element of
+/// that window, so the icons disappeared as soon as the wallpaper was anything but a bitmap.
+/// A second, per-pixel transparent, non activating window solves it for every source type.
+/// Only the icons themselves are opaque, so clicks anywhere else fall through to the desktop.
+///
+public sealed class DesktopIconWindow : IDisposable
+{
+ private readonly Window _window;
+ private DispatcherTimer? _watchdog;
+ private bool _ownerApplied;
+ private int _coveredStrikes;
+ private DateTime _lastRepair = DateTime.MinValue;
+ private bool _disposed;
+
+ /// The icon layer, or null when this window only carries plugin overlays.
+ public DesktopIconLayer? Layer { get; }
+
+ /// Where plugin overlays are placed (above the wallpaper and the icons).
+ public Canvas OverlayLayer { get; } = new() { IsHitTestVisible = false, ClipToBounds = true };
+
+ public Drawing.Rectangle Bounds { get; private set; }
+ public IntPtr Handle { get; private set; }
+
+ /// The wallpaper window this icon window belongs to (may be null for spanned setups).
+ public Wallpaper.WallpaperWindow? Host { get; }
+
+ public event EventHandler? SettingsRequested;
+ public event EventHandler? DisableRequested;
+
+ public DesktopIconWindow(Drawing.Rectangle bounds, DesktopIconsSettings? settings, Wallpaper.WallpaperWindow? host)
+ {
+ Bounds = bounds;
+ Host = host;
+
+ var root = new Grid();
+
+ if (settings != null)
+ {
+ Layer = new DesktopIconLayer(settings);
+ Layer.SettingsRequested += (_, e) => SettingsRequested?.Invoke(this, e);
+ Layer.DisableRequested += (_, e) => DisableRequested?.Invoke(this, e);
+ root.Children.Add(Layer);
+ }
+
+ root.Children.Add(OverlayLayer);
+
+ _window = new Window
+ {
+ WindowStyle = WindowStyle.None,
+ AllowsTransparency = true,
+ Background = Brushes.Transparent,
+ ShowInTaskbar = false,
+ ShowActivated = false,
+ Topmost = false,
+ Focusable = false,
+ ResizeMode = ResizeMode.NoResize,
+ WindowStartupLocation = WindowStartupLocation.Manual,
+ SizeToContent = SizeToContent.Manual,
+ UseLayoutRounding = true,
+ SnapsToDevicePixels = true,
+ Title = "LiveWall desktop overlay",
+ Content = root
+ };
+
+ try
+ {
+ var helper = new WindowInteropHelper(_window);
+ Handle = helper.EnsureHandle();
+
+ // Post-pixel alpha needs WS_EX_LAYERED, which AllowsTransparency provides; on top of
+ // that the window must never take focus or show up in Alt+Tab.
+ long ex = Native.GetWindowLongPtr(Handle, Native.GWL_EXSTYLE).ToInt64();
+ ex |= Native.WS_EX_NOACTIVATE | Native.WS_EX_TOOLWINDOW;
+ Native.SetWindowLongPtr(Handle, Native.GWL_EXSTYLE, new IntPtr(ex));
+
+ ApplyBounds(bounds);
+ }
+ catch (Exception ex)
+ {
+ Log.Error("Could not create the desktop icon window", ex);
+ }
+ }
+
+ public bool IsShown { get; private set; }
+
+ public void Start()
+ {
+ if (_disposed) return;
+ if (Layer != null)
+ {
+ try { Layer.Initialize(); }
+ catch (Exception ex) { Log.Error("Desktop icon layer failed to initialise", ex); }
+ }
+ Show();
+
+ // A moment later everything (window rect, WPF layout, tile count) is settled: check that the
+ // icons really are where and how big they should be, fix it if not, and leave a breadcrumb.
+ var verify = new DispatcherTimer(DispatcherPriority.Background) { Interval = TimeSpan.FromSeconds(1.5) };
+ verify.Tick += (_, _) =>
+ {
+ verify.Stop();
+ Verify();
+ };
+ verify.Start();
+
+ // Ground truth watchdog: ask Windows which window is really on top of an icon. Nothing we
+ // compute ourselves can be as trustworthy as that, and it repairs itself when it fails.
+ _watchdog = new DispatcherTimer(DispatcherPriority.Background) { Interval = TimeSpan.FromSeconds(2) };
+ _watchdog.Tick += (_, _) => CheckOnTop();
+ _watchdog.Start();
+ }
+
+ private void ApplyBounds(Drawing.Rectangle bounds, bool force = false)
+ {
+ Bounds = bounds;
+ if (Handle == IntPtr.Zero) return;
+
+ // WPF works in DIPs: keep Left/Top/Width/Height in sync so no later layout pass shrinks the
+ // window to the size of its (absolutely positioned) content, which would leave the icons
+ // drawn into a window of no size and therefore invisible.
+ double scale = 1.0;
+ try
+ {
+ uint dpi = Native.GetDpiForWindow(Handle);
+ if (dpi >= 48) scale = dpi / 96.0;
+ }
+ catch { /* older Windows: assume 100 % */ }
+
+ double dipWidth = Math.Max(1, bounds.Width) / scale;
+ double dipHeight = Math.Max(1, bounds.Height) / scale;
+
+ if (!_window.IsVisible || Math.Abs(_window.Width - dipWidth) > 0.5 || Math.Abs(_window.Height - dipHeight) > 0.5)
+ {
+ _window.Left = bounds.X / scale;
+ _window.Top = bounds.Y / scale;
+ _window.Width = dipWidth;
+ _window.Height = dipHeight;
+ }
+
+ // The canvases get an explicit size as well, so laying things out never depends on what WPF
+ // believes the client area is.
+ if (Layer != null &&
+ (Math.Abs(Layer.Width - dipWidth) > 0.5 || Math.Abs(Layer.Height - dipHeight) > 0.5))
+ {
+ Layer.Width = dipWidth;
+ Layer.Height = dipHeight;
+ }
+
+ if (Math.Abs(OverlayLayer.Width - dipWidth) > 0.5 || Math.Abs(OverlayLayer.Height - dipHeight) > 0.5)
+ {
+ OverlayLayer.Width = dipWidth;
+ OverlayLayer.Height = dipHeight;
+ }
+
+ if (!force && Native.GetWindowRect(Handle, out RECT current) &&
+ current.Left == bounds.X && current.Top == bounds.Y &&
+ current.Width == Math.Max(1, bounds.Width) && current.Height == Math.Max(1, bounds.Height))
+ return; // already there - every SetWindowPos would repaint the layered window
+
+ Native.SetWindowPos(Handle, IntPtr.Zero, bounds.X, bounds.Y,
+ Math.Max(1, bounds.Width), Math.Max(1, bounds.Height),
+ Native.SWP_NOZORDER | Native.SWP_NOACTIVATE | Native.SWP_NOOWNERZORDER);
+ }
+
+ public void Show()
+ {
+ if (_disposed) return;
+
+ try
+ {
+ if (!_window.IsVisible) _window.Show();
+ IsShown = true;
+ ApplyBounds(Bounds);
+ ClaimOwnership();
+ Pin();
+ }
+ catch (Exception ex) { Log.Warn($"Showing desktop icon window: {ex.Message}"); }
+ }
+
+ public void Hide()
+ {
+ if (_disposed) return;
+ if (!IsShown && !_window.IsVisible) return;
+
+ try
+ {
+ if (_window.IsVisible) _window.Hide();
+ IsShown = false;
+ }
+ catch (Exception ex) { Log.Debug($"Hiding desktop icon window: {ex.Message}"); }
+ }
+
+ public void Resize(Drawing.Rectangle bounds) => ApplyBounds(bounds);
+
+ ///
+ /// Makes the wallpaper window the *owner* of this window. Windows then guarantees that an owned
+ /// window stays above its owner - permanently, without any timer re-raising anything, and
+ /// therefore without the repaint storm that made the icons flicker.
+ ///
+ private void ClaimOwnership()
+ {
+ if (_ownerApplied || Handle == IntPtr.Zero) return;
+ if (Host is not { IsOverlay: true } || Host.Handle == IntPtr.Zero) return;
+
+ try
+ {
+ Native.SetWindowLongPtr(Handle, Native.GWLP_HWNDPARENT, Host.Handle);
+ Native.SetWindowPos(Handle, Host.Handle, 0, 0, 0, 0,
+ Native.SWP_NOMOVE | Native.SWP_NOSIZE | Native.SWP_NOACTIVATE);
+ _ownerApplied = true;
+ Log.Info($"Icon window 0x{Handle.ToInt64():X} is now owned by wallpaper window 0x{Host.Handle.ToInt64():X}");
+ }
+ catch (Exception ex)
+ {
+ Log.Warn($"Could not set the icon window owner: {ex.Message}");
+ }
+ }
+
+ ///
+ /// Asks Windows which window is on top of the first icon. If it is not ours, something has
+ /// covered or buried the icons - say so in the log and repair it.
+ ///
+ private void CheckOnTop()
+ {
+ if (_disposed || !IsShown) return;
+
+ try
+ {
+ if (!Native.IsWindowVisible(Handle))
+ {
+ Log.Warn("Icon watchdog: the window is not visible – showing it again");
+ Repair("window was hidden");
+ return;
+ }
+
+ if (Layer == null) return; // nothing to verify without icons
+ var points = Layer.ProbePoints();
+ if (points.Count == 0) return;
+
+ int shellHits = 0;
+ foreach (var (x, y) in points)
+ {
+ System.Windows.Point screen;
+ try { screen = Layer.PointToScreen(new System.Windows.Point(x, y)); }
+ catch { continue; }
+
+ IntPtr at = Native.WindowFromPoint(new POINT { X = (int)screen.X, Y = (int)screen.Y });
+ if (at == IntPtr.Zero || IsMine(at)) continue; // ours (or nothing) - fine
+ if (!IsDesktopShell(at)) continue; // a normal app - fine
+ shellHits++;
+ }
+
+ if (shellHits == 0)
+ {
+ _coveredStrikes = 0;
+ return;
+ }
+
+ _coveredStrikes++;
+ Log.Debug($"Icon watchdog: the desktop shell is above the icons at {shellHits}/{points.Count} points " +
+ $"(strike {_coveredStrikes})");
+
+ if (_coveredStrikes < 2) return;
+ if (DateTime.UtcNow - _lastRepair < TimeSpan.FromSeconds(10)) return;
+
+ _coveredStrikes = 0;
+ Log.Warn($"Icon watchdog: the desktop shell is drawn above the icons ({shellHits}/{points.Count} points) – repairing");
+ Repair("the desktop shell was drawn above the icons");
+ }
+ catch (Exception ex)
+ {
+ Log.Debug($"Icon watchdog: {ex.Message}");
+ }
+ }
+
+ private static bool IsDesktopShell(IntPtr hwnd)
+ {
+ string name = ClassNameOf(hwnd);
+ return name is "Progman" or "WorkerW" or "SHELLDLL_DefView" or "SysListView32" or "SysTreeView32"
+ || name.StartsWith("Shell_TrayWnd", StringComparison.OrdinalIgnoreCase);
+ }
+
+ private static string ClassNameOf(IntPtr hwnd)
+ {
+ try
+ {
+ var buffer = new System.Text.StringBuilder(256);
+ return Native.GetClassName(hwnd, buffer, buffer.Capacity) > 0 ? buffer.ToString() : "?";
+ }
+ catch { return "?"; }
+ }
+
+ private bool IsMine(IntPtr hwnd)
+ {
+ IntPtr current = hwnd;
+ for (int depth = 0; depth < 6 && current != IntPtr.Zero; depth++)
+ {
+ if (current == Handle) return true;
+ current = Native.GetParent(current);
+ }
+
+ Native.GetWindowThreadProcessId(hwnd, out uint pid);
+ return pid == (uint)Environment.ProcessId;
+ }
+
+ /// Rebuilds the visible state: re-shows, re-raises and re-applies the geometry.
+ public void Repair(string why)
+ {
+ if (_disposed) return;
+
+ Log.Info($"Repairing the desktop icon layer ({why})");
+
+ try
+ {
+ if (!_window.IsVisible) _window.Show();
+ IsShown = true;
+ ApplyBounds(Bounds, force: true);
+ ClaimOwnership();
+
+ // Owner semantics keep us above the wallpaper; this is the belt to that brace.
+ IntPtr after = Host?.Handle ?? IntPtr.Zero;
+ if (after != IntPtr.Zero)
+ Native.SetWindowPos(Handle, after, 0, 0, 0, 0,
+ Native.SWP_NOMOVE | Native.SWP_NOSIZE | Native.SWP_NOACTIVATE);
+
+ _lastRepair = DateTime.UtcNow;
+ Layer?.Reload();
+ Log.Info("Icon window after repair: " + Describe());
+ }
+ catch (Exception ex)
+ {
+ Log.Error("Could not repair the desktop icon layer", ex);
+ }
+ }
+
+ ///
+ /// Places the icon window directly above its wallpaper window. Called from the pin timer, so it
+ /// survives the desktop stealing the z-order back.
+ ///
+ public void Pin()
+ {
+ if (_disposed || Handle == IntPtr.Zero || !IsShown) return;
+
+ // An owned window is kept above its owner by Windows itself - no timer needed.
+ if (_ownerApplied) return;
+
+ try
+ {
+ IntPtr after = Host?.Handle ?? IntPtr.Zero;
+
+ if (after == IntPtr.Zero || (Host != null && !Host.IsOverlay))
+ {
+ // The wallpaper lives inside Progman/WorkerW; sit just above that band instead.
+ IntPtr progman = DesktopAttacher.Progman;
+ if (progman == IntPtr.Zero || !Native.IsWindow(progman))
+ after = Native.HWND_TOP;
+ else
+ {
+ IntPtr above = Native.GetWindow(progman, Native.GW_HWNDPREV);
+ after = above == IntPtr.Zero ? Native.HWND_TOP : above;
+ }
+ }
+
+ if (after == Handle) return; // degenerate: we would be placing us after ourselves
+
+ // SetWindowPos on a layered window repaints it, so never call it "just in case":
+ // if the window directly below us is already the anchor, the order is correct.
+ IntPtr below = Native.GetWindow(Handle, Native.GW_HWNDNEXT);
+ bool inPlace = after == Native.HWND_TOP
+ ? Native.GetWindow(Handle, Native.GW_HWNDPREV) == IntPtr.Zero
+ : below == after;
+ if (inPlace) return;
+
+ Native.SetWindowPos(Handle, after, 0, 0, 0, 0,
+ Native.SWP_NOMOVE | Native.SWP_NOSIZE | Native.SWP_NOACTIVATE | Native.SWP_NOOWNERZORDER);
+ }
+ catch (Exception ex)
+ {
+ Log.Debug($"Pinning desktop icons: {ex.Message}");
+ }
+ }
+
+ /// Checks the icon window against what it should look like and repairs it if needed.
+ public void Verify()
+ {
+ if (_disposed || Handle == IntPtr.Zero) return;
+
+ try
+ {
+ if (Native.GetWindowRect(Handle, out RECT rect))
+ {
+ bool wrongSize = rect.Width != Math.Max(1, Bounds.Width) || rect.Height != Math.Max(1, Bounds.Height);
+ bool wrongPlace = rect.Left != Bounds.X || rect.Top != Bounds.Y;
+
+ if (wrongSize || wrongPlace)
+ {
+ Log.Warn($"Icon window is at {rect.Left},{rect.Top} {rect.Width}x{rect.Height} but should be " +
+ $"{Bounds.X},{Bounds.Y} {Bounds.Width}x{Bounds.Height} – re-applying");
+ ApplyBounds(Bounds, force: true);
+ }
+ }
+
+ Pin();
+ Log.Info("Icon window: " + Describe());
+ }
+ catch (Exception ex)
+ {
+ Log.Warn($"Could not verify the icon window: {ex.Message}");
+ }
+ }
+
+ public string Describe()
+ {
+ string zorder;
+ try
+ {
+ IntPtr below = Native.GetWindow(Handle, Native.GW_HWNDNEXT);
+ IntPtr host = Host?.Handle ?? IntPtr.Zero;
+ zorder = below == host ? "directly above wallpaper" : $"next below = 0x{below.ToInt64():X}";
+ }
+ catch { zorder = "unknown"; }
+
+ string rect = "?";
+ try
+ {
+ if (Native.GetWindowRect(Handle, out RECT r))
+ rect = $"{r.Left},{r.Top} {r.Width}x{r.Height}";
+ }
+ catch { }
+
+ bool windowVisible = false;
+ try { windowVisible = Native.IsWindowVisible(Handle); } catch { }
+
+ return $"icons hwnd=0x{Handle.ToInt64():X} shown={IsShown} windowVisible={windowVisible} " +
+ $"rect={rect} expected={Bounds.X},{Bounds.Y} {Bounds.Width}x{Bounds.Height} " +
+ $"layer={(Layer == null ? "none" : $"{Layer.ActualWidth:0}x{Layer.ActualHeight:0}")} " +
+ $"tiles={(Layer?.Tiles ?? 0)} overlays={OverlayLayer.Children.Count} ({zorder})";
+ }
+
+ public void Dispose()
+ {
+ if (_disposed) return;
+ _disposed = true;
+
+ try { _watchdog?.Stop(); _watchdog = null; } catch { }
+ try { Layer?.Dispose(); } catch { }
+ try { OverlayLayer.Children.Clear(); } catch { }
+ try { _window.Content = null; _window.Close(); } catch (Exception ex) { Log.Debug($"Closing icon window: {ex.Message}"); }
+
+ Handle = IntPtr.Zero;
+ IsShown = false;
+ }
+}
diff --git a/LiveWall/Interop/DesktopAttacher.cs b/LiveWall/Interop/DesktopAttacher.cs
new file mode 100644
index 0000000..7835849
--- /dev/null
+++ b/LiveWall/Interop/DesktopAttacher.cs
@@ -0,0 +1,316 @@
+using System.Drawing;
+using System.Text;
+using static LiveWall.Interop.Native;
+
+namespace LiveWall.Interop;
+
+/// One way of hosting our window inside the shell's desktop layer.
+public sealed class AttachCandidate
+{
+ public string Name { get; init; } = "";
+ public IntPtr Parent { get; init; }
+ public bool TopOfZOrder { get; init; }
+ public string Describe() => $"{Name} (parent=0x{Parent.ToInt64():X}, z={(TopOfZOrder ? "top" : "bottom")})";
+}
+
+///
+/// Finds the shell windows that make up the desktop and reparents our host window into them.
+///
+/// The layout of the desktop layer is NOT stable across Windows builds:
+/// Win10 / early Win11 : Progman + WorkerW … icons live in a separate WorkerW, the wallpaper
+/// is painted by a sibling WorkerW behind it.
+/// Win11 24H2+ : the icon host and the background layer are arranged differently, and
+/// sometimes the second WorkerW never appears at all.
+/// So instead of betting on one layout we build a list of candidates, try them in order and let
+/// prove which one actually shows up on screen.
+///
+internal static class DesktopAttacher
+{
+ private static IntPtr _progman;
+ private static IntPtr _iconHost; // window that hosts SHELLDLL_DefView (the icons)
+ private static IntPtr _bgWorker; // WorkerW behind the icon host (classic wallpaper layer)
+ private static string _rememberedStrategy = "";
+ private static string _rememberedMode = "";
+ private static bool _strategyConfirmed;
+
+ public static IntPtr Progman { get { DiscoverIfNeeded(); return _progman; } }
+ public static IntPtr IconHost { get { DiscoverIfNeeded(); return _iconHost; } }
+ public static IntPtr BackgroundWorker { get { DiscoverIfNeeded(); return _bgWorker; } }
+
+ public static string RememberedStrategy
+ {
+ get => _rememberedStrategy;
+ set => _rememberedStrategy = value;
+ }
+
+ /// Hosting technique (parent at creation / adopt / overlay) that worked last time.
+ public static string RememberedMode
+ {
+ get => _rememberedMode;
+ set => _rememberedMode = value;
+ }
+
+ /// True once a strategy has been proven visible in this session (skips re-probing).
+ public static bool StrategyConfirmed
+ {
+ get => _strategyConfirmed;
+ set => _strategyConfirmed = value;
+ }
+
+ /// Forgets the cached strategy so the next attach re-detects the shell layout.
+ public static void ForgetStrategy()
+ {
+ _rememberedStrategy = "";
+ _rememberedMode = "";
+ _strategyConfirmed = false;
+ _progman = IntPtr.Zero;
+ _iconHost = IntPtr.Zero;
+ _bgWorker = IntPtr.Zero;
+ }
+
+ private static bool DiscoverIfNeeded()
+ {
+ if (_progman != IntPtr.Zero && IsWindow(_progman) && (_iconHost == IntPtr.Zero || IsWindow(_iconHost)))
+ return true;
+
+ Discover();
+ return _progman != IntPtr.Zero;
+ }
+
+ /// Asks the shell to create the WorkerW layer and re-reads the desktop window layout.
+ public static void Discover()
+ {
+ _progman = FindWindow("Progman", null);
+ _iconHost = IntPtr.Zero;
+ _bgWorker = IntPtr.Zero;
+
+ if (_progman == IntPtr.Zero)
+ {
+ Log.Warn("Progman was not found – the shell may not be running.");
+ return;
+ }
+
+ // Classic kick: makes Explorer spawn the WorkerW that lives behind the icons.
+ SendMessageTimeout(_progman, WM_SPAWN_WORKER, new IntPtr(0xD), new IntPtr(0x1), SMTO_NORMAL, 1000, out _);
+ SendMessageTimeout(_progman, WM_SPAWN_WORKER, new IntPtr(0xD), new IntPtr(0x0), SMTO_NORMAL, 1000, out _);
+ SendMessageTimeout(_progman, WM_SPAWN_WORKER, IntPtr.Zero, IntPtr.Zero, SMTO_NORMAL, 1000, out _);
+
+ // 1) Top-level window that contains SHELLDLL_DefView = the icon host.
+ EnumWindows((hwnd, _) =>
+ {
+ if (FindWindowEx(hwnd, IntPtr.Zero, "SHELLDLL_DefView", null) != IntPtr.Zero)
+ {
+ _iconHost = hwnd;
+
+ // 2) The classic wallpaper layer: the WorkerW that follows the icon host in z-order.
+ IntPtr behind = FindWindowEx(IntPtr.Zero, hwnd, "WorkerW", null);
+ if (behind != IntPtr.Zero)
+ _bgWorker = behind;
+ return false;
+ }
+ return true;
+ }, IntPtr.Zero);
+
+ // 3) Newer builds: the background WorkerW is a *child* of Progman, next to the icon host.
+ if (_bgWorker == IntPtr.Zero)
+ {
+ EnumChildWindows(_progman, (hwnd, _) =>
+ {
+ string cls = ClassOf(hwnd);
+ if (!cls.Equals("WorkerW", StringComparison.OrdinalIgnoreCase))
+ return true;
+ if (FindWindowEx(hwnd, IntPtr.Zero, "SHELLDLL_DefView", null) != IntPtr.Zero)
+ return true; // that one holds the icons
+
+ _bgWorker = hwnd;
+ return false;
+ }, IntPtr.Zero);
+ }
+
+ Log.Info($"Shell layout: Progman=0x{_progman.ToInt64():X}, icons=0x{_iconHost.ToInt64():X} " +
+ $"({ClassOf(_iconHost)}), background WorkerW=0x{_bgWorker.ToInt64():X} ({ClassOf(_bgWorker)})");
+ }
+
+ /// Candidate parents, most likely to work first – ordered by how the shell is built.
+ public static List GetCandidates()
+ {
+ if (!DiscoverIfNeeded())
+ return new List();
+
+ var list = new List();
+ bool iconsInsideProgman = _iconHost == _progman || _iconHost == IntPtr.Zero;
+ bool hasBackgroundWorker = _bgWorker != IntPtr.Zero && IsWindow(_bgWorker);
+ bool hasProgman = IsWindow(_progman);
+
+ if (iconsInsideProgman)
+ {
+ // Icons are drawn by Progman itself: the wallpaper belongs *inside* Progman, below the
+ // icon view. The sibling WorkerW (if any) sits in front of Progman's background, so it
+ // would cover the icons – only used if the preferred slot proves to be invisible.
+ if (hasProgman)
+ list.Add(new AttachCandidate { Name = "inside Progman, below the icons", Parent = _progman, TopOfZOrder = false });
+
+ if (hasBackgroundWorker)
+ {
+ list.Add(new AttachCandidate { Name = "WorkerW behind the desktop (classic wallpaper layer)", Parent = _bgWorker, TopOfZOrder = true });
+ list.Add(new AttachCandidate { Name = "WorkerW behind the desktop, bottom", Parent = _bgWorker, TopOfZOrder = false });
+ }
+
+ if (hasProgman)
+ list.Add(new AttachCandidate { Name = "inside Progman, above the icons", Parent = _progman, TopOfZOrder = true });
+ }
+ else
+ {
+ // Classic layout: icons live in their own WorkerW, the wallpaper layer is behind it.
+ if (hasBackgroundWorker)
+ {
+ list.Add(new AttachCandidate { Name = "WorkerW behind the icons, top of its layer", Parent = _bgWorker, TopOfZOrder = true });
+ list.Add(new AttachCandidate { Name = "WorkerW behind the icons, bottom of its layer", Parent = _bgWorker, TopOfZOrder = false });
+ }
+
+ if (_iconHost != IntPtr.Zero && IsWindow(_iconHost))
+ {
+ list.Add(new AttachCandidate { Name = "icon host window, below the icons", Parent = _iconHost, TopOfZOrder = false });
+ list.Add(new AttachCandidate { Name = "icon host window, above the icons", Parent = _iconHost, TopOfZOrder = true });
+ }
+
+ if (hasProgman)
+ {
+ list.Add(new AttachCandidate { Name = "inside Progman, below the icons", Parent = _progman, TopOfZOrder = false });
+ list.Add(new AttachCandidate { Name = "inside Progman, above the icons", Parent = _progman, TopOfZOrder = true });
+ }
+ }
+
+ // Put the strategy that worked before first.
+ if (!string.IsNullOrEmpty(_rememberedStrategy))
+ {
+ int index = list.FindIndex(c => c.Name == _rememberedStrategy);
+ if (index > 0)
+ {
+ var preferred = list[index];
+ list.RemoveAt(index);
+ list.Insert(0, preferred);
+ }
+ }
+
+ return list;
+ }
+
+ /// True when the icons live in their own window (so hiding it is safe in interactive mode).
+ public static bool IconLayerIsSeparate => _iconHost != IntPtr.Zero && _iconHost != _progman && IsWindow(_iconHost);
+
+ /// Reparents the window and turns it into a real child window at the given z-order.
+ public static bool Attach(IntPtr child, AttachCandidate candidate, Rectangle screenBounds, out string error)
+ {
+ error = "";
+
+ if (!IsWindow(child))
+ {
+ error = "The wallpaper window no longer exists.";
+ return false;
+ }
+ if (!IsWindow(candidate.Parent))
+ {
+ error = $"Parent window 0x{candidate.Parent.ToInt64():X} is gone.";
+ return false;
+ }
+
+ SetParent(child, candidate.Parent);
+
+ // Convert it into a genuine child window: no Alt+Tab entry, clipped by the desktop layer.
+ // NOTE: this must happen before the parent is verified – GetParent() reports the *owner*
+ // for a window that is still WS_POPUP, so checking earlier always looked like a failure.
+ uint style = unchecked((uint)GetWindowLongPtr(child, GWL_STYLE).ToInt64());
+ style &= ~WS_POPUP;
+ style |= WS_CHILD | WS_CLIPCHILDREN | WS_CLIPSIBLINGS;
+ SetWindowLongPtr(child, GWL_STYLE, new IntPtr(style));
+
+ uint ex = unchecked((uint)GetWindowLongPtr(child, GWL_EXSTYLE).ToInt64());
+ ex |= WS_EX_TOOLWINDOW | WS_EX_NOACTIVATE;
+ ex &= ~WS_EX_TRANSPARENT;
+ SetWindowLongPtr(child, GWL_EXSTYLE, new IntPtr(ex));
+
+ if (GetParent(child) != candidate.Parent && GetAncestor(child, GA_PARENT) != candidate.Parent)
+ {
+ error = $"SetParent to {candidate.Name} was refused by Windows.";
+ return false;
+ }
+
+ Position(child, screenBounds, candidate.TopOfZOrder);
+ return true;
+ }
+
+ /// Moves/resizes a child window inside the desktop layer (coordinates are parent relative).
+ public static void Position(IntPtr child, Rectangle screenBounds, bool topOfZOrder = true)
+ {
+ IntPtr parent = GetParent(child);
+ if (parent == IntPtr.Zero)
+ return;
+
+ POINT origin = new() { X = 0, Y = 0 };
+ ClientToScreen(parent, ref origin);
+
+ if (screenBounds == Rectangle.Empty)
+ screenBounds = ScreenBounds();
+
+ SetWindowPos(child, topOfZOrder ? HWND_TOP : HWND_BOTTOM,
+ screenBounds.X - origin.X,
+ screenBounds.Y - origin.Y,
+ Math.Max(1, screenBounds.Width),
+ Math.Max(1, screenBounds.Height),
+ SWP_NOACTIVATE | SWP_NOOWNERZORDER);
+ }
+
+ public static Rectangle ScreenBounds()
+ => new(GetSystemMetrics(SM_XVIRTUALSCREEN),
+ GetSystemMetrics(SM_YVIRTUALSCREEN),
+ Math.Max(1, GetSystemMetrics(SM_CXVIRTUALSCREEN)),
+ Math.Max(1, GetSystemMetrics(SM_CYVIRTUALSCREEN)));
+
+ ///
+ /// Interactive mode: the icons live in a separate shell window above the wallpaper, so we hide
+ /// that layer while interactive mode is on. Input then reaches the wallpaper and you can click
+ /// YouTube controls / web pages. Desktop icons are hidden while it's active.
+ ///
+ public static void SetInteractive(bool interactive)
+ {
+ if (!DiscoverIfNeeded() || _iconHost == IntPtr.Zero || !IsWindow(_iconHost))
+ return;
+
+ try
+ {
+ ShowWindow(_iconHost, interactive ? SW_HIDE : SW_SHOWNOACTIVATE);
+ Log.Info($"Interactive mode {(interactive ? "on (desktop icons hidden)" : "off")}");
+ }
+ catch (Exception ex)
+ {
+ Log.Warn($"Could not toggle interactive mode: {ex.Message}");
+ }
+ }
+
+ public static string ClassOf(IntPtr hwnd)
+ {
+ if (hwnd == IntPtr.Zero) return "-";
+ var sb = new StringBuilder(256);
+ try { GetClassName(hwnd, sb, sb.Capacity); } catch { }
+ return sb.Length == 0 ? "-" : sb.ToString();
+ }
+
+ /// Human readable snapshot of the shell layer, used by the diagnostics panel.
+ public static string DescribeLayout()
+ {
+ DiscoverIfNeeded();
+ var sb = new StringBuilder();
+ sb.AppendLine($"Progman: 0x{_progman.ToInt64():X}");
+ sb.AppendLine($"Icon host: 0x{_iconHost.ToInt64():X} ({ClassOf(_iconHost)})");
+ sb.AppendLine($"Background WorkerW: 0x{_bgWorker.ToInt64():X} ({ClassOf(_bgWorker)})");
+ sb.AppendLine($"Last good strategy: {(string.IsNullOrEmpty(_rememberedStrategy) ? "(not verified yet)" : _rememberedStrategy)}");
+
+ int index = 0;
+ foreach (var candidate in GetCandidates())
+ {
+ sb.AppendLine($" {++index}. {candidate.Describe()}");
+ }
+ return sb.ToString();
+ }
+}
diff --git a/LiveWall/Interop/DpiContextScope.cs b/LiveWall/Interop/DpiContextScope.cs
new file mode 100644
index 0000000..42c2199
--- /dev/null
+++ b/LiveWall/Interop/DpiContextScope.cs
@@ -0,0 +1,53 @@
+using static LiveWall.Interop.Native;
+
+namespace LiveWall.Interop;
+
+///
+/// Temporarily switches the calling thread to the DPI awareness context of another window.
+///
+/// Cross-process parenting (SetParent into Explorer's desktop window) is sensitive to DPI
+/// awareness mismatches: when the child and parent threads disagree, Windows can accept the
+/// parenting yet never composite the child. Matching the shell's context while the window is
+/// created and adopted avoids that class of failure.
+///
+internal readonly struct DpiContextScope : IDisposable
+{
+ private readonly IntPtr _previous;
+ private readonly bool _changed;
+
+ private DpiContextScope(IntPtr previous, bool changed)
+ {
+ _previous = previous;
+ _changed = changed;
+ }
+
+ public static DpiContextScope MatchWindow(IntPtr reference)
+ {
+ try
+ {
+ if (reference == IntPtr.Zero) return default;
+
+ IntPtr target = GetWindowDpiAwarenessContext(reference);
+ if (target == IntPtr.Zero) return default;
+
+ IntPtr current = GetWindowDpiAwarenessContext(IntPtr.Zero);
+ if (current != IntPtr.Zero && AreDpiAwarenessContextsEqual(current, target))
+ return default; // already matching – nothing to do
+
+ IntPtr previous = SetThreadDpiAwarenessContext(target);
+ Log.Debug($"DPI context switched to match shell window 0x{reference.ToInt64():X}");
+ return new DpiContextScope(previous, true);
+ }
+ catch (Exception ex)
+ {
+ Log.Debug($"DPI context switch failed: {ex.Message}");
+ return default;
+ }
+ }
+
+ public void Dispose()
+ {
+ if (!_changed) return;
+ try { SetThreadDpiAwarenessContext(_previous); } catch { }
+ }
+}
diff --git a/LiveWall/Interop/Native.cs b/LiveWall/Interop/Native.cs
new file mode 100644
index 0000000..f2cf2ef
--- /dev/null
+++ b/LiveWall/Interop/Native.cs
@@ -0,0 +1,305 @@
+using System.Runtime.InteropServices;
+using System.Text;
+
+namespace LiveWall.Interop;
+
+[StructLayout(LayoutKind.Sequential)]
+internal struct RECT
+{
+ public int Left, Top, Right, Bottom;
+ public int Width => Right - Left;
+ public int Height => Bottom - Top;
+}
+
+[StructLayout(LayoutKind.Sequential)]
+internal struct POINT
+{
+ public int X, Y;
+}
+
+[StructLayout(LayoutKind.Sequential)]
+internal struct MONITORINFO
+{
+ public int cbSize;
+ public RECT rcMonitor;
+ public RECT rcWork;
+ public uint dwFlags;
+}
+
+internal static class Native
+{
+ // ---- window styles -------------------------------------------------
+ public const int GWL_STYLE = -16;
+ public const int GWL_EXSTYLE = -20;
+ public const int GWLP_HWNDPARENT = -8; // sets the OWNER of a top-level window
+
+ public const uint WS_CHILD = 0x40000000;
+ public const uint WS_POPUP = 0x80000000;
+ public const uint WS_VISIBLE = 0x10000000;
+ public const uint WS_CLIPCHILDREN = 0x02000000;
+ public const uint WS_CLIPSIBLINGS = 0x04000000;
+ public const uint WS_DISABLED = 0x08000000;
+
+ public const uint WS_EX_TOOLWINDOW = 0x00000080;
+ public const uint WS_EX_NOACTIVATE = 0x08000000;
+ public const uint WS_EX_TRANSPARENT = 0x00000020;
+
+ // ---- SetWindowPos --------------------------------------------------
+ public static readonly IntPtr HWND_TOP = IntPtr.Zero;
+ public static readonly IntPtr HWND_BOTTOM = new(1);
+ public static readonly IntPtr HWND_TOPMOST = new(-1);
+
+ public const uint SWP_NOSIZE = 0x0001;
+ public const uint SWP_NOMOVE = 0x0002;
+ public const uint SWP_NOZORDER = 0x0004;
+ public const uint SWP_NOREDRAW = 0x0008;
+ public const uint SWP_NOACTIVATE = 0x0010;
+ public const uint SWP_SHOWWINDOW = 0x0040;
+ public const uint SWP_HIDEWINDOW = 0x0080;
+ public const uint SWP_NOOWNERZORDER = 0x0200;
+
+ public const uint WM_SPAWN_WORKER = 0x052C;
+ public const uint SMTO_NORMAL = 0x0000;
+
+ public const int SW_HIDE = 0;
+ public const int SW_SHOWNOACTIVATE = 4;
+
+ public const int SM_REMOTESESSION = 0x1000;
+ public const int SM_XVIRTUALSCREEN = 76;
+ public const int SM_YVIRTUALSCREEN = 77;
+ public const int SM_CXVIRTUALSCREEN = 78;
+ public const int SM_CYVIRTUALSCREEN = 79;
+
+ public delegate bool EnumWindowsProc(IntPtr hWnd, IntPtr lParam);
+
+ [DllImport("user32.dll", SetLastError = true, CharSet = CharSet.Unicode)]
+ public static extern IntPtr FindWindow(string? lpClassName, string? lpWindowName);
+
+ [DllImport("user32.dll", SetLastError = true, CharSet = CharSet.Unicode)]
+ public static extern IntPtr FindWindowEx(IntPtr hwndParent, IntPtr hwndChildAfter, string? lpszClass, string? lpszWindow);
+
+ [DllImport("user32.dll")]
+ [return: MarshalAs(UnmanagedType.Bool)]
+ public static extern bool EnumWindows(EnumWindowsProc lpEnumFunc, IntPtr lParam);
+
+ [DllImport("user32.dll")]
+ [return: MarshalAs(UnmanagedType.Bool)]
+ public static extern bool EnumChildWindows(IntPtr hWndParent, EnumWindowsProc lpEnumFunc, IntPtr lParam);
+
+ /// Waits for the desktop compositor to finish the next frame (makes screen captures reliable).
+ [DllImport("dwmapi.dll")]
+ public static extern int DwmFlush();
+
+ [DllImport("user32.dll", SetLastError = true)]
+ public static extern IntPtr SendMessageTimeout(IntPtr hWnd, uint msg, IntPtr wParam, IntPtr lParam,
+ uint fuFlags, uint uTimeout, out IntPtr lpdwResult);
+
+ [DllImport("user32.dll", SetLastError = true)]
+ public static extern IntPtr SetParent(IntPtr hWndChild, IntPtr hWndNewParent);
+
+ [DllImport("user32.dll", SetLastError = true)]
+ public static extern IntPtr GetParent(IntPtr hWnd);
+
+ public const uint GA_PARENT = 1;
+
+ [DllImport("user32.dll", SetLastError = true)]
+ public static extern IntPtr GetAncestor(IntPtr hWnd, uint gaFlags);
+
+ [DllImport("user32.dll", SetLastError = true)]
+ public static extern bool SetWindowPos(IntPtr hWnd, IntPtr hWndInsertAfter, int x, int y, int cx, int cy, uint flags);
+
+ [DllImport("user32.dll")]
+ public static extern bool GetWindowRect(IntPtr hWnd, out RECT lpRect);
+
+ [DllImport("user32.dll")]
+ public static extern bool GetClientRect(IntPtr hWnd, out RECT lpRect);
+
+ [DllImport("user32.dll")]
+ public static extern bool ClientToScreen(IntPtr hWnd, ref POINT lpPoint);
+
+ [DllImport("user32.dll")]
+ public static extern bool IsWindow(IntPtr hWnd);
+
+ [DllImport("user32.dll")]
+ public static extern bool IsWindowVisible(IntPtr hWnd);
+
+ [DllImport("user32.dll")]
+ public static extern bool IsZoomed(IntPtr hWnd);
+
+ [DllImport("user32.dll", SetLastError = true)]
+ public static extern IntPtr GetForegroundWindow();
+
+ [DllImport("user32.dll", SetLastError = true)]
+ public static extern IntPtr WindowFromPoint(POINT point);
+
+ public const uint GW_HWNDPREV = 3;
+ public const uint GW_HWNDNEXT = 2;
+
+ [DllImport("user32.dll", SetLastError = true)]
+ public static extern IntPtr GetWindow(IntPtr hWnd, uint uCmd);
+
+ // DPI awareness contexts (Windows 10 1607+)
+ [DllImport("user32.dll")]
+ public static extern IntPtr GetWindowDpiAwarenessContext(IntPtr hwnd);
+
+ /// Effective DPI of a window (Windows 10 1607+). 96 = 100 % scaling.
+ [DllImport("user32.dll")]
+ public static extern uint GetDpiForWindow(IntPtr hwnd);
+
+ [DllImport("user32.dll")]
+ public static extern IntPtr SetThreadDpiAwarenessContext(IntPtr dpiContext);
+
+ [DllImport("user32.dll")]
+ [return: MarshalAs(UnmanagedType.Bool)]
+ public static extern bool AreDpiAwarenessContextsEqual(IntPtr a, IntPtr b);
+
+ [DllImport("user32.dll", SetLastError = true)]
+ public static extern IntPtr GetShellWindow();
+
+ [DllImport("user32.dll", SetLastError = true)]
+ public static extern uint GetWindowThreadProcessId(IntPtr hWnd, out uint lpdwProcessId);
+
+ [DllImport("user32.dll", CharSet = CharSet.Unicode)]
+ public static extern int GetClassName(IntPtr hWnd, StringBuilder lpClassName, int nMaxCount);
+
+ [DllImport("user32.dll")]
+ public static extern int GetSystemMetrics(int nIndex);
+
+ [DllImport("user32.dll")]
+ public static extern bool ShowWindow(IntPtr hWnd, int nCmdShow);
+
+ [DllImport("user32.dll")]
+ public static extern IntPtr MonitorFromWindow(IntPtr hwnd, uint dwFlags);
+
+ [DllImport("user32.dll")]
+ public static extern bool GetMonitorInfo(IntPtr hMonitor, ref MONITORINFO lpmi);
+
+ [DllImport("user32.dll", EntryPoint = "GetWindowLongPtrW", SetLastError = true)]
+ private static extern IntPtr GetWindowLongPtr64(IntPtr hWnd, int nIndex);
+
+ [DllImport("user32.dll", EntryPoint = "GetWindowLongW", SetLastError = true)]
+ private static extern IntPtr GetWindowLong32(IntPtr hWnd, int nIndex);
+
+ [DllImport("user32.dll", EntryPoint = "SetWindowLongPtrW", SetLastError = true)]
+ private static extern IntPtr SetWindowLongPtr64(IntPtr hWnd, int nIndex, IntPtr dwNewLong);
+
+ [DllImport("user32.dll", EntryPoint = "SetWindowLongW", SetLastError = true)]
+ private static extern IntPtr SetWindowLong32(IntPtr hWnd, int nIndex, IntPtr dwNewLong);
+
+ public static IntPtr GetWindowLongPtr(IntPtr hWnd, int nIndex)
+ => IntPtr.Size == 8 ? GetWindowLongPtr64(hWnd, nIndex) : GetWindowLong32(hWnd, nIndex);
+
+ public static IntPtr SetWindowLongPtr(IntPtr hWnd, int nIndex, IntPtr dwNewLong)
+ => IntPtr.Size == 8 ? SetWindowLongPtr64(hWnd, nIndex, dwNewLong) : SetWindowLong32(hWnd, nIndex, dwNewLong);
+
+ public static bool IsRemoteSession() => GetSystemMetrics(SM_REMOTESESSION) != 0;
+
+ // ---- global hotkeys ------------------------------------------------
+ public const int WM_HOTKEY = 0x0312;
+
+ [DllImport("user32.dll", SetLastError = true)]
+ public static extern bool RegisterHotKey(IntPtr hWnd, int id, uint fsModifiers, uint vk);
+
+ [DllImport("user32.dll", SetLastError = true)]
+ public static extern bool UnregisterHotKey(IntPtr hWnd, int id);
+
+ // ---- window input: hit-testing, subclassing, message constants -----------------------------
+
+ /// Window-long index of the window procedure (used for chaining subclassing).
+ public const int GWLP_WNDPROC = -4;
+
+ public const int WM_NCHITTEST = 0x0084;
+ public const int WM_SETCURSOR = 0x0020;
+ public const int WM_MOUSEACTIVATE = 0x0021;
+ public const int WM_NCDESTROY = 0x0082;
+ public const int WM_NCMOUSEMOVE = 0x00A0;
+ public const int WM_MOUSEMOVE = 0x0200;
+ public const int WM_LBUTTONDOWN = 0x0201;
+ public const int WM_LBUTTONUP = 0x0202;
+ public const int WM_LBUTTONDBLCLK = 0x0203;
+ public const int WM_RBUTTONDOWN = 0x0204;
+ public const int WM_RBUTTONUP = 0x0205;
+ public const int WM_RBUTTONDBLCLK = 0x0206;
+ public const int WM_MBUTTONDOWN = 0x0207;
+ public const int WM_MBUTTONUP = 0x0208;
+ public const int WM_MBUTTONDBLCLK = 0x0209;
+ public const int WM_MOUSEWHEEL = 0x020A;
+ public const int WM_XBUTTONDOWN = 0x020B;
+ public const int WM_XBUTTONUP = 0x020C;
+ public const int WM_XBUTTONDBLCLK = 0x020D;
+ public const int WM_MOUSEHWHEEL = 0x020E;
+ public const int WM_MOUSELEAVE = 0x02A3;
+ public const int WM_NCMOUSELEAVE = 0x02A2;
+
+ // WM_POINTER* — Chromium on Windows 11 reads pointer input as well as mouse messages.
+ public const int WM_POINTERUPDATE = 0x0245;
+ public const int WM_POINTERDOWN = 0x0246;
+ public const int WM_POINTERUP = 0x0247;
+ public const int WM_POINTERENTER = 0x0249;
+ public const int WM_POINTERLEAVE = 0x024A;
+ public const int WM_POINTERWHEEL = 0x024E;
+ public const int WM_POINTERHWHEEL = 0x024F;
+ public const int WM_TOUCH = 0x0240;
+ public const int WM_GESTURE = 0x0119;
+
+ /// WM_NCHITTEST result: "let the mouse go to the window below me".
+ public const int HTTRANSPARENT = -1;
+
+ /// WM_MOUSEACTIVATE result: activate nothing, do not disturb the foreground window.
+ public const int MA_NOACTIVATE = 3;
+
+ [DllImport("user32.dll", EntryPoint = "DefWindowProcW")]
+ public static extern IntPtr DefWindowProc(IntPtr hWnd, int msg, IntPtr wParam, IntPtr lParam);
+
+ [DllImport("user32.dll", EntryPoint = "CallWindowProcW")]
+ public static extern IntPtr CallWindowProc(IntPtr lpPrevWndFunc, IntPtr hWnd, int msg,
+ IntPtr wParam, IntPtr lParam);
+
+ [DllImport("kernel32.dll")]
+ public static extern uint GetCurrentProcessId();
+
+ // ---- cursor -------------------------------------------------------------------------------
+
+ public const int IDC_ARROW = 32512;
+
+ [DllImport("user32.dll", EntryPoint = "LoadCursorW", SetLastError = true)]
+ public static extern IntPtr LoadCursor(IntPtr hInstance, IntPtr lpCursorName);
+
+ [DllImport("user32.dll", SetLastError = true)]
+ public static extern IntPtr SetCursor(IntPtr hCursor);
+
+ ///
+ /// Restores the standard arrow for this thread's windows.
+ ///
+ /// Needed because a web surface that believes the pointer is inside it can leave a *null* cursor
+ /// installed (that is how `cursor: none` and its own hover handling are implemented). A window
+ /// that then answers WM_SETCURSOR with "handled" without setting anything of its own leaves that
+ /// null cursor in place, and the pointer becomes invisible over the desktop.
+ ///
+ public static void RestoreArrowCursor()
+ {
+ try { SetCursor(LoadCursor(IntPtr.Zero, new IntPtr(IDC_ARROW))); }
+ catch { }
+ }
+
+ /// True when the window belongs to this process (only those can be subclassed).
+ public static bool IsOwnWindow(IntPtr hWnd)
+ {
+ try
+ {
+ GetWindowThreadProcessId(hWnd, out uint pid);
+ return pid == GetCurrentProcessId();
+ }
+ catch
+ {
+ return false;
+ }
+ }
+
+ public static string ClassNameOf(IntPtr hWnd)
+ {
+ var buffer = new StringBuilder(256);
+ try { GetClassName(hWnd, buffer, buffer.Capacity); } catch { }
+ return buffer.ToString();
+ }
+}
diff --git a/LiveWall/LiveWall.csproj b/LiveWall/LiveWall.csproj
new file mode 100644
index 0000000..a450387
--- /dev/null
+++ b/LiveWall/LiveWall.csproj
@@ -0,0 +1,54 @@
+
+
+
+ WinExe
+ net8.0-windows
+ true
+ true
+ enable
+ enable
+ latest
+ LiveWall
+ LiveWall
+ app.manifest
+ Assets\app.ico
+ true
+ en
+ 1.8.4
+
+ LatestMajor
+ LiveWall
+ LiveWall
+ Animated GIF, video and YouTube live wallpapers for Windows 11.
+ embedded
+ $(NoWarn);CA1416;WFAC010
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/LiveWall/MainWindow.xaml b/LiveWall/MainWindow.xaml
new file mode 100644
index 0000000..349a87f
--- /dev/null
+++ b/LiveWall/MainWindow.xaml
@@ -0,0 +1,842 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Nothing appears on the desktop
+
+ Press “Re-attach to desktop” on the Display tab. If you run a third-party shell mod
+ (StartAllBack, ExplorerPatcher…) or a “wallpaper engine” that also grabs the WorkerW,
+ close it first.
+
+ The video is black or won't play
+
+ WPF plays through Media Foundation: MP4/H.264 is safest, MKV/AV1/VP9 often fail.
+ Re-encode with HandBrake if needed.
+
+ YouTube stays black
+
+ Check your internet connection, make sure the video allows embedding, and try
+ “Interactive mode” if you need to click controls. WebView2 must be installed
+ (it ships with Windows 11).
+
+ High CPU / GPU usage
+
+ Turn on “Pause when a full-screen app is running”, keep “Hide the wallpaper while
+ paused” enabled, and prefer 1080p sources.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/LiveWall/MainWindow.xaml.cs b/LiveWall/MainWindow.xaml.cs
new file mode 100644
index 0000000..773ce72
--- /dev/null
+++ b/LiveWall/MainWindow.xaml.cs
@@ -0,0 +1,779 @@
+using System.Collections.ObjectModel;
+using System.ComponentModel;
+using System.IO;
+using System.Reflection;
+using System.Windows;
+using System.Windows.Media.Imaging;
+using LiveWall.Models;
+using LiveWall.Plugins;
+using LiveWall.Services;
+using LiveWall.Util;
+using Microsoft.Win32;
+
+namespace LiveWall;
+
+public partial class MainWindow : Window
+{
+ private readonly AppSettings _settings;
+ private readonly WallpaperEngine _engine;
+ private readonly PluginHost? _plugins;
+ private bool _pluginsUiReady;
+ private bool _forceClose;
+ private readonly List _logLines = new();
+
+ private static readonly string[] VideoExtensions =
+ { ".mp4", ".m4v", ".mov", ".wmv", ".avi", ".mkv", ".webm", ".mpg", ".mpeg", ".ts" };
+
+ private static readonly string[] ImageExtensions =
+ { ".png", ".jpg", ".jpeg", ".bmp", ".tif", ".tiff", ".webp" };
+
+ public MainWindow(AppSettings settings, WallpaperEngine engine, PluginHost? plugins = null)
+ {
+ _settings = settings;
+ _engine = engine;
+ _plugins = plugins;
+
+ InitializeComponent();
+
+ try
+ {
+ var resource = Application.GetResourceStream(new Uri("pack://application:,,,/Assets/app.ico"));
+ if (resource?.Stream != null)
+ {
+ var decoder = new IconBitmapDecoder(resource.Stream,
+ BitmapCreateOptions.PreservePixelFormat, BitmapCacheOption.OnLoad);
+ if (decoder.Frames.Count > 0)
+ Icon = decoder.Frames[0];
+ }
+ }
+ catch (Exception ex)
+ {
+ Log.Debug($"Window icon: {ex.Message}");
+ }
+
+ // Items sources first, then the data context, so SelectedItem bindings land correctly.
+ TypeCombo.ItemsSource = Enum.GetValues();
+ FitCombo.ItemsSource = Enum.GetValues();
+ TargetCombo.ItemsSource = Enum.GetValues();
+ InteractionCombo.ItemsSource = Enum.GetValues();
+ QualityCombo.ItemsSource = Enum.GetValues();
+ LayerCombo.ItemsSource = Enum.GetValues();
+ RecentList.ItemsSource = settings.Recent;
+ PlaylistList.ItemsSource = settings.Playlist.Items;
+
+ DataContext = settings;
+
+ RefreshPluginsTab();
+
+ if (_plugins != null)
+ _plugins.Changed += (_, _) => Dispatcher.BeginInvoke(new Action(RefreshPluginsTab));
+
+ RefreshDisplays();
+ RefreshDiagnostics();
+ RefreshStatus(_engine.Status, _engine.IsPaused, _engine.IsInteractive);
+ BuildAboutInfo();
+
+ Closing += OnClosing;
+ AddLog($"Settings file: {Paths.SettingsFile}");
+ }
+
+ // ================================================================ status
+
+ public void RefreshStatus(string status, bool paused, bool interactive)
+ {
+ StatusText.Text = status;
+ FooterStatus.Text = status;
+ PauseButton.Content = paused ? "Resume" : "Pause";
+
+ if (_logLines.Count == 0 || _logLines[^1] != status)
+ {
+ AddLog(status);
+ }
+ }
+
+ private void AddLog(string line)
+ {
+ _logLines.Add($"{DateTime.Now:HH:mm:ss} {line}");
+ while (_logLines.Count > 25) _logLines.RemoveAt(0);
+ StatusLog.Text = string.Join(Environment.NewLine, _logLines);
+ }
+
+ public void SetHotkeyWarning(string? warning)
+ {
+ if (string.IsNullOrWhiteSpace(warning))
+ {
+ HotkeyWarning.Visibility = Visibility.Collapsed;
+ HotkeyWarning.Text = "";
+ }
+ else
+ {
+ HotkeyWarning.Text = warning;
+ HotkeyWarning.Visibility = Visibility.Visible;
+ }
+ }
+
+ public void ShowTransientError(string message)
+ {
+ SourceError.Text = message;
+ SourceError.Visibility = Visibility.Visible;
+ AddLog("ERROR: " + message);
+ }
+
+ private void ClearError()
+ {
+ SourceError.Visibility = Visibility.Collapsed;
+ SourceError.Text = "";
+ }
+
+ // ================================================================ source handlers
+
+ private void OnBrowseFile(object sender, RoutedEventArgs e)
+ {
+ var dialog = new OpenFileDialog
+ {
+ Title = "Choose a wallpaper",
+ CheckFileExists = true,
+ Multiselect = false,
+ Filter =
+ "All supported wallpapers|*.mp4;*.m4v;*.mov;*.wmv;*.avi;*.mkv;*.webm;*.gif;*.png;*.jpg;*.jpeg;*.bmp;*.tif;*.tiff;*.webp|" +
+ "Videos|*.mp4;*.m4v;*.mov;*.wmv;*.avi;*.mkv;*.webm;*.mpg;*.mpeg;*.ts|" +
+ "Animated GIF|*.gif|" +
+ "Images|*.png;*.jpg;*.jpeg;*.bmp;*.tif;*.tiff;*.webp|" +
+ "All files|*.*"
+ };
+
+ string initial = Path.GetDirectoryName(_settings.Source.FilePath) ?? "";
+ if (Directory.Exists(initial)) dialog.InitialDirectory = initial;
+
+ if (dialog.ShowDialog(this) == true)
+ UseFile(dialog.FileName);
+ }
+
+ private void UseFile(string path)
+ {
+ _settings.Source.Type = DetectType(path);
+ _settings.Source.FilePath = path;
+ ClearError();
+ _engine.AddRecent(_settings.Source.Type, path, Path.GetFileNameWithoutExtension(path));
+ _engine.Reload();
+ AddLog($"Loaded {Path.GetFileName(path)}");
+ }
+
+ private static WallpaperType DetectType(string path)
+ {
+ string ext = Path.GetExtension(path).ToLowerInvariant();
+ if (ext == ".gif") return WallpaperType.AnimatedGif;
+ if (ImageExtensions.Contains(ext)) return WallpaperType.Image;
+ return WallpaperType.Video;
+ }
+
+ private void OnPasteUrl(object sender, RoutedEventArgs e)
+ {
+ try
+ {
+ if (!Clipboard.ContainsText()) return;
+ string text = Clipboard.GetText().Trim();
+ if (string.IsNullOrWhiteSpace(text)) return;
+
+ _settings.Source.WebUrl = text;
+ _settings.Source.Type = YouTubeHelper.TryGetVideoId(text, out _, out _)
+ ? WallpaperType.YouTube
+ : WallpaperType.WebPage;
+ ClearError();
+ _engine.AddRecent(_settings.Source.Type, text, text);
+ _engine.Reload();
+ }
+ catch (Exception ex)
+ {
+ ShowTransientError($"Could not read the clipboard: {ex.Message}");
+ }
+ }
+
+ private void OnApplyWallpaper(object sender, RoutedEventArgs e)
+ {
+ var source = _settings.Source;
+
+ if (source.Type is WallpaperType.Video or WallpaperType.AnimatedGif or WallpaperType.Image)
+ {
+ if (string.IsNullOrWhiteSpace(source.FilePath))
+ {
+ ShowTransientError("Choose a file first (Browse…).");
+ return;
+ }
+ if (!File.Exists(source.FilePath))
+ {
+ ShowTransientError($"'{source.FilePath}' does not exist any more.");
+ return;
+ }
+ _engine.AddRecent(source.Type, source.FilePath, Path.GetFileNameWithoutExtension(source.FilePath));
+ }
+ else
+ {
+ if (string.IsNullOrWhiteSpace(source.WebUrl))
+ {
+ ShowTransientError("Enter a YouTube link or web address.");
+ return;
+ }
+ if (source.Type == WallpaperType.YouTube &&
+ !YouTubeHelper.TryGetVideoId(source.WebUrl, out _, out _))
+ {
+ ShowTransientError("That does not look like a YouTube link. Try https://www.youtube.com/watch?v=…");
+ return;
+ }
+ _engine.AddRecent(source.Type, source.WebUrl, source.WebUrl);
+ }
+
+ ClearError();
+ _engine.Reload();
+ }
+
+ private void OnReloadWallpaper(object sender, RoutedEventArgs e)
+ {
+ ClearError();
+ _engine.Reload();
+ }
+
+ private void OnRecentDoubleClick(object sender, System.Windows.Input.MouseButtonEventArgs e)
+ {
+ if (RecentList.SelectedItem is not RecentEntry entry) return;
+
+ _settings.Source.Type = entry.Type;
+ if (entry.Type is WallpaperType.YouTube or WallpaperType.WebPage)
+ _settings.Source.WebUrl = entry.Source;
+ else
+ _settings.Source.FilePath = entry.Source;
+
+ _engine.Reload();
+ }
+
+ private void OnFileDrop(object sender, DragEventArgs e)
+ {
+ try
+ {
+ if (!e.Data.GetDataPresent(DataFormats.FileDrop)) return;
+ if (e.Data.GetData(DataFormats.FileDrop) is not string[] files || files.Length == 0) return;
+ UseFile(files[0]);
+ }
+ catch (Exception ex)
+ {
+ ShowTransientError(ex.Message);
+ }
+ }
+
+ private void OnDragOver(object sender, DragEventArgs e)
+ {
+ e.Effects = e.Data.GetDataPresent(DataFormats.FileDrop) ? DragDropEffects.Copy : DragDropEffects.None;
+ e.Handled = true;
+ }
+
+ // ================================================================ transport
+
+ private void OnTogglePause(object sender, RoutedEventArgs e)
+ {
+ _engine.TogglePause();
+ RefreshStatus(_engine.Status, _engine.IsPaused, _engine.IsInteractive);
+ }
+
+ private void OnNextWallpaper(object sender, RoutedEventArgs e) => _engine.NextWallpaper();
+
+ private void OnHideToTray(object sender, RoutedEventArgs e)
+ {
+ if (!_settings.Automation.ShowTrayIcon)
+ {
+ ((App)Application.Current).ApplyTrayVisibility();
+ }
+ Hide();
+ }
+
+ // ================================================================ displays
+
+ private void RefreshDisplays()
+ {
+ var displays = Displays.All();
+ DisplayCombo.ItemsSource = displays;
+
+ var current = displays.FirstOrDefault(d => d.DeviceName == _settings.Displays.SpecificDevice)
+ ?? displays.FirstOrDefault(d => d.Primary)
+ ?? displays.FirstOrDefault();
+
+ if (current != null)
+ {
+ DisplayCombo.SelectedItem = current;
+ if (string.IsNullOrEmpty(_settings.Displays.SpecificDevice))
+ _settings.Displays.SpecificDevice = current.DeviceName;
+ }
+ }
+
+ private void OnRefreshDisplays(object sender, RoutedEventArgs e) => RefreshDisplays();
+
+ private void OnDisplaySelectionChanged(object sender, System.Windows.Controls.SelectionChangedEventArgs e)
+ {
+ if (DisplayCombo.SelectedItem is DisplayInfo info)
+ _settings.Displays.SpecificDevice = info.DeviceName;
+ }
+
+ private void OnReattach(object sender, RoutedEventArgs e)
+ {
+ _engine.Reattach();
+ AddLog("Re-attach requested");
+ }
+
+ private void OnRepairIcons(object sender, RoutedEventArgs e)
+ {
+ _engine.RepairIcons();
+ RefreshDiagnostics();
+ AddLog("Desktop icon repair requested");
+ }
+
+ private void OnToggleInteractive(object sender, RoutedEventArgs e)
+ {
+ _engine.ToggleInteractive();
+ AddLog($"Interactive mode: {(_engine.IsInteractive ? "on" : "off")}");
+ }
+
+ // ================================================================ playlist
+
+ private void OnAddCurrentToPlaylist(object sender, RoutedEventArgs e)
+ {
+ var src = _settings.Source;
+ string source = src.Type is WallpaperType.YouTube or WallpaperType.WebPage ? src.WebUrl : src.FilePath;
+
+ if (string.IsNullOrWhiteSpace(source))
+ {
+ ShowTransientError("Nothing to add – pick a file or URL first.");
+ return;
+ }
+
+ _settings.Playlist.Items.Add(new PlaylistItem
+ {
+ Type = src.Type,
+ Source = source,
+ Title = src.Type is WallpaperType.YouTube or WallpaperType.WebPage
+ ? source
+ : Path.GetFileNameWithoutExtension(source)
+ });
+ AddLog("Added to playlist");
+ }
+
+ private void OnAddFileToPlaylist(object sender, RoutedEventArgs e)
+ {
+ var dialog = new OpenFileDialog
+ {
+ Title = "Add wallpaper to playlist",
+ Multiselect = true,
+ Filter = "All supported wallpapers|*.mp4;*.m4v;*.mov;*.wmv;*.avi;*.mkv;*.webm;*.gif;*.png;*.jpg;*.jpeg;*.bmp;*.webp|All files|*.*"
+ };
+
+ if (dialog.ShowDialog(this) != true) return;
+
+ foreach (string file in dialog.FileNames)
+ {
+ _settings.Playlist.Items.Add(new PlaylistItem
+ {
+ Type = DetectType(file),
+ Source = file,
+ Title = Path.GetFileNameWithoutExtension(file)
+ });
+ }
+ AddLog($"Added {dialog.FileNames.Length} item(s) to playlist");
+ }
+
+ private void OnRemovePlaylistItem(object sender, RoutedEventArgs e)
+ {
+ if (PlaylistList.SelectedItem is PlaylistItem item)
+ _settings.Playlist.Items.Remove(item);
+ }
+
+ private void OnMovePlaylistUp(object sender, RoutedEventArgs e) => MovePlaylistItem(-1);
+
+ private void OnMovePlaylistDown(object sender, RoutedEventArgs e) => MovePlaylistItem(+1);
+
+ private void MovePlaylistItem(int delta)
+ {
+ if (PlaylistList.SelectedItem is not PlaylistItem item) return;
+
+ int index = _settings.Playlist.Items.IndexOf(item);
+ int target = index + delta;
+ if (index < 0 || target < 0 || target >= _settings.Playlist.Items.Count) return;
+
+ _settings.Playlist.Items.Move(index, target);
+ PlaylistList.SelectedItem = item;
+ }
+
+ private void OnPlayPlaylistItem(object sender, RoutedEventArgs e)
+ {
+ if (PlaylistList.SelectedItem is not PlaylistItem item) return;
+ int index = _settings.Playlist.Items.IndexOf(item);
+ if (index >= 0) _engine.ApplyPlaylistItem(index);
+ }
+
+ // ================================================================ system integration
+
+ private void OnStartWithWindowsChanged(object sender, RoutedEventArgs e)
+ {
+ bool wanted = _settings.Automation.StartWithWindows;
+ if (!StartupManager.SetEnabled(wanted))
+ {
+ _settings.Automation.StartWithWindows = !wanted;
+ ShowTransientError("Windows refused the autostart change. Check permissions for HKCU\\Software\\Microsoft\\Windows\\CurrentVersion\\Run.");
+ }
+ else
+ {
+ AddLog($"Start with Windows: {(wanted ? "on" : "off")}");
+ }
+ }
+
+ private void OnShowTrayIconChanged(object sender, RoutedEventArgs e)
+ {
+ ((App)Application.Current).ApplyTrayVisibility();
+ }
+
+ private void OnHotkeyChanged(object sender, RoutedEventArgs e)
+ {
+ ((App)Application.Current).ApplyHotkeys();
+ AddLog("Hotkeys re-registered");
+ }
+
+ private void OnOpenLogs(object sender, RoutedEventArgs e) => ((App)Application.Current).OpenLogFolder();
+
+ // ------------------------------------------------------------------ plugins tab
+
+ private void RefreshPluginsTab()
+ {
+ _pluginsUiReady = false;
+
+ PluginsEnabledCheck.IsChecked = _settings.Plugins.Enabled;
+ AllowUnverifiedCheck.IsChecked = _settings.Plugins.AllowUnverified;
+ _pluginsUiReady = true;
+
+ var rows = new List();
+ var commands = new List();
+
+ if (_plugins != null)
+ {
+ foreach (var plugin in _plugins.Plugins)
+ {
+ int pages = _plugins.SettingsPages.Count(p => ReferenceEquals(p.Plugin, plugin));
+ rows.Add(new PluginRow(plugin, pages));
+ }
+
+ foreach (var (plugin, command) in _plugins.Commands)
+ commands.Add(new PluginCommandRow(plugin, command));
+ }
+
+ PluginList.ItemsSource = rows;
+ CommandList.ItemsSource = commands;
+
+ PluginsEmptyText.Visibility = rows.Count == 0 ? Visibility.Visible : Visibility.Collapsed;
+ CommandsEmptyText.Visibility = commands.Count == 0 ? Visibility.Visible : Visibility.Collapsed;
+
+ PluginDiagBox.Text = _plugins?.Describe() ?? "The plugin system is not available.";
+ }
+
+ private void OnPluginsMasterToggled(object sender, RoutedEventArgs e)
+ {
+ if (!_pluginsUiReady) return;
+
+ bool enable = PluginsEnabledCheck.IsChecked == true;
+
+ if (enable && !_settings.Plugins.ConsentGiven)
+ {
+ if (!PluginWarningWindow.ConfirmPluginSystem(this))
+ {
+ _pluginsUiReady = false;
+ PluginsEnabledCheck.IsChecked = false;
+ _pluginsUiReady = true;
+ return;
+ }
+ _settings.Plugins.ConsentGiven = true;
+ }
+
+ _settings.Plugins.Enabled = enable;
+ AddLog(enable ? "Plugin system enabled" : "Plugin system disabled");
+ _plugins?.Rescan();
+ RefreshPluginsTab();
+ }
+
+ private void OnAllowUnverifiedToggled(object sender, RoutedEventArgs e)
+ {
+ if (!_pluginsUiReady) return;
+ _settings.Plugins.AllowUnverified = AllowUnverifiedCheck.IsChecked == true;
+ _plugins?.Rescan();
+ RefreshPluginsTab();
+ }
+
+ private void OnPluginsRescan(object sender, RoutedEventArgs e)
+ {
+ _plugins?.Rescan();
+ RefreshPluginsTab();
+ AddLog("Plugins rescanned");
+ }
+
+ private void OnOpenPluginFolder(object sender, RoutedEventArgs e) => OpenPath(_plugins?.RootFolder);
+
+ private void OnOpenPluginDocs(object sender, RoutedEventArgs e)
+ {
+ string docs = Path.Combine(AppContext.BaseDirectory, "docs", "plugins");
+ if (Directory.Exists(docs)) OpenPath(docs);
+ else AddLog("Developer docs are not installed next to LiveWall.");
+ }
+
+ private void OnCreatePluginTemplate(object sender, RoutedEventArgs e)
+ {
+ if (_plugins == null) return;
+
+ string folder = Path.Combine(_plugins.RootFolder, "com.example.myplugin");
+ try
+ {
+ Directory.CreateDirectory(folder);
+ PluginManifest.WriteTemplate(folder);
+
+ File.WriteAllText(Path.Combine(folder, "README.txt"),
+ "Build a class library against LiveWall.Sdk.dll, copy the output assembly here and name it\r\n" +
+ "in plugin.json (the \"entry\" property). See docs\\plugins for the full walkthrough.\r\n");
+
+ OpenPath(folder);
+ AddLog("Plugin template created in " + folder);
+ }
+ catch (Exception ex)
+ {
+ AddLog("Could not create the plugin template: " + ex.Message);
+ }
+ }
+
+ private void OnPluginToggle(object sender, RoutedEventArgs e)
+ {
+ if (_plugins == null || sender is not FrameworkElement { Tag: PluginRow row }) return;
+
+ var plugin = row.Plugin;
+ bool currentlyActive = plugin.State == PluginState.Active;
+
+ if (currentlyActive)
+ {
+ _plugins.SetEnabled(plugin, false);
+ AddLog($"Plugin '{plugin.Info.Name}' disabled");
+ _engine.RefreshPluginOverlays();
+ RefreshPluginsTab();
+ return;
+ }
+
+ // The mandatory warning, also when "allow changed plugins" is off: the user is looking at the
+ // hash and the permissions, so this click *is* the approval that makes the plugin verified.
+ if (!PluginWarningWindow.ConfirmPlugin(this, plugin))
+ return;
+
+ _plugins.Approve(plugin, remember: true);
+ bool started = _plugins.SetEnabled(plugin, true);
+
+ AddLog(started
+ ? $"Plugin '{plugin.Info.Name}' enabled"
+ : $"Plugin '{plugin.Info.Name}' could not start: {plugin.Error}");
+
+ _engine.RefreshPluginOverlays();
+ RefreshPluginsTab();
+ }
+
+ private void OnPluginForgetTrust(object sender, RoutedEventArgs e)
+ {
+ if (_plugins == null || sender is not FrameworkElement { Tag: PluginRow row }) return;
+
+ _plugins.ForgetTrust(row.Plugin);
+ AddLog($"Trust forgotten for '{row.Plugin.Info.Name}' – it must be approved again");
+ RefreshPluginsTab();
+ }
+
+ private void OnPluginSettings(object sender, RoutedEventArgs e)
+ {
+ if (_plugins == null || sender is not FrameworkElement { Tag: PluginRow row }) return;
+
+ var pages = _plugins.SettingsPages
+ .Where(p => ReferenceEquals(p.Plugin, row.Plugin))
+ .Select(p => p.Page)
+ .ToList();
+
+ if (pages.Count == 0)
+ {
+ AddLog($"'{row.Plugin.Info.Name}' has no settings pages");
+ return;
+ }
+
+ try
+ {
+ var window = new PluginPageWindow($"{row.Plugin.Info.Name} settings", pages) { Owner = this };
+ window.ShowDialog();
+ }
+ catch (Exception ex)
+ {
+ AddLog("Could not open the plugin settings: " + ex.Message);
+ }
+ }
+
+ private void OnRunPluginCommand(object sender, RoutedEventArgs e)
+ {
+ if (_plugins == null || sender is not FrameworkElement { Tag: PluginCommandRow row }) return;
+
+ _plugins.RunCommand(row.Plugin, row.Command);
+ AddLog($"Ran plugin command '{row.Command.Title}'");
+ RefreshPluginsTab();
+ }
+
+ private void OpenPath(string? path)
+ {
+ if (string.IsNullOrWhiteSpace(path)) return;
+
+ try
+ {
+ Directory.CreateDirectory(path);
+ System.Diagnostics.Process.Start(new System.Diagnostics.ProcessStartInfo
+ {
+ FileName = path,
+ UseShellExecute = true
+ });
+ }
+ catch (Exception ex)
+ {
+ AddLog($"Could not open '{path}': {ex.Message}");
+ }
+ }
+
+ private void OnRefreshDiagnostics(object sender, RoutedEventArgs e) => RefreshDiagnostics();
+
+ private void RefreshDiagnostics()
+ {
+ DiagBox.Text = _engine.BuildDiagnostics();
+ }
+
+ private void OnTestVisibility(object sender, RoutedEventArgs e)
+ {
+ string result = _engine.RunVisibilityTest();
+ RefreshDiagnostics();
+ DiagBox.Text = "— Visibility test —" + Environment.NewLine + result +
+ Environment.NewLine + Environment.NewLine + DiagBox.Text;
+ AddLog("Visibility test: " + result.Replace(Environment.NewLine, " | "));
+ }
+
+ private void OnCopyDiagnostics(object sender, RoutedEventArgs e)
+ {
+ try
+ {
+ Clipboard.SetText(DiagBox.Text);
+ AddLog("Diagnostics copied to the clipboard");
+ }
+ catch (Exception ex)
+ {
+ ShowTransientError("Could not copy: " + ex.Message);
+ }
+ }
+
+ private void OnOpenSettingsFile(object sender, RoutedEventArgs e)
+ {
+ try
+ {
+ SettingsStore.Save(_settings);
+ System.Diagnostics.Process.Start(new System.Diagnostics.ProcessStartInfo
+ {
+ FileName = Paths.SettingsFile,
+ UseShellExecute = true
+ });
+ }
+ catch (Exception ex)
+ {
+ ShowTransientError($"Could not open the settings file: {ex.Message}");
+ }
+ }
+
+ private void OnResetSettings(object sender, RoutedEventArgs e)
+ {
+ var result = MessageBox.Show(this,
+ "Reset every setting to its default value?",
+ "LiveWall", MessageBoxButton.YesNo, MessageBoxImage.Question);
+
+ if (result != MessageBoxResult.Yes) return;
+
+ var defaults = new AppSettings();
+ CopyGroup(defaults.Source, _settings.Source);
+ CopyGroup(defaults.Playback, _settings.Playback);
+ CopyGroup(defaults.YouTube, _settings.YouTube);
+ CopyGroup(defaults.Displays, _settings.Displays);
+ CopyGroup(defaults.Automation, _settings.Automation);
+ CopyGroup(defaults.Playlist, _settings.Playlist);
+ CopyGroup(defaults.Hotkeys, _settings.Hotkeys);
+ CopyGroup(defaults.Advanced, _settings.Advanced);
+ _settings.Playlist.Items.Clear();
+
+ StartupManager.SetEnabled(_settings.Automation.StartWithWindows);
+ ((App)Application.Current).ApplyHotkeys();
+ ((App)Application.Current).ApplyTrayVisibility();
+ _engine.Reload();
+ AddLog("Settings reset to defaults");
+ }
+
+ private static void CopyGroup(object source, object target)
+ {
+ foreach (var property in source.GetType().GetProperties(BindingFlags.Public | BindingFlags.Instance))
+ {
+ if (!property.CanRead || !property.CanWrite) continue;
+ if (property.PropertyType.IsGenericType &&
+ property.PropertyType.GetGenericTypeDefinition() == typeof(ObservableCollection<>))
+ continue;
+
+ try { property.SetValue(target, property.GetValue(source)); }
+ catch { }
+ }
+ }
+
+ private void BuildAboutInfo()
+ {
+ string webView2;
+ try
+ {
+ webView2 = Microsoft.Web.WebView2.Core.CoreWebView2Environment.GetAvailableBrowserVersionString();
+ }
+ catch
+ {
+ webView2 = "NOT INSTALLED (YouTube/web wallpapers will not work)";
+ }
+
+ AboutVersionText.Text = "LiveWall " + (Assembly.GetExecutingAssembly().GetName().Version?.ToString(3) ?? "1.8.0");
+
+ AboutInfo.Text = string.Join(Environment.NewLine, new[]
+ {
+ $"LiveWall {Assembly.GetExecutingAssembly().GetName().Version}",
+ $"Plugin API: {Sdk.PluginApi.Version} — plugin system " +
+ (_settings.Plugins.Enabled ? (_plugins?.ActiveCount ?? 0) + " plugin(s) active" : "off"),
+ $".NET runtime: {Environment.Version}",
+ $"WebView2 runtime: {webView2}",
+ $"Windows: {Environment.OSVersion}",
+ $"Desktops: {Environment.UserName} on {Environment.MachineName}",
+ "",
+ $"Settings: {Paths.SettingsFile}",
+ $"Logs: {Paths.LogFolder}",
+ "",
+ "Media support: WPF Media Foundation (mp4/H.264 recommended).",
+ "Web/YouTube: Microsoft Edge WebView2."
+ });
+ }
+
+ // ================================================================ closing
+
+ private void OnClosing(object? sender, CancelEventArgs e)
+ {
+ if (_forceClose) return;
+
+ if (_settings.Automation.CloseToTray && _settings.Automation.ShowTrayIcon)
+ {
+ e.Cancel = true;
+ Hide();
+ AddLog("Minimized to tray – the wallpaper keeps running");
+ return;
+ }
+
+ ((App)Application.Current).ExitApp();
+ }
+
+ public void ForceClose()
+ {
+ _forceClose = true;
+ try { Close(); } catch { }
+ }
+}
diff --git a/LiveWall/Models/AppSettings.cs b/LiveWall/Models/AppSettings.cs
new file mode 100644
index 0000000..e9bd9b8
--- /dev/null
+++ b/LiveWall/Models/AppSettings.cs
@@ -0,0 +1,414 @@
+using System.Collections.ObjectModel;
+using System.ComponentModel;
+using System.Runtime.CompilerServices;
+using System.Text.Json.Serialization;
+
+namespace LiveWall.Models;
+
+public enum WallpaperType
+{
+ Video,
+ AnimatedGif,
+ Image,
+ YouTube,
+ WebPage
+}
+
+public enum WallpaperFit
+{
+ Fill, // cover – keeps aspect ratio, crops
+ Fit, // contain – keeps aspect ratio, letterbox
+ Stretch, // fills, ignores aspect ratio
+ Center, // native size, centered
+ Tile // repeats (images / gifs)
+}
+
+public enum DisplayTarget
+{
+ All,
+ Primary,
+ Specific
+}
+
+/// How the wallpaper window is hosted by the desktop.
+public enum LayerMode
+{
+ /// Try to live inside the desktop; fall back to the overlay if Windows won't composite it.
+ Auto,
+ /// Only ever inside the desktop (keeps desktop icons fully usable).
+ ShellChild,
+ /// Plain top-level window kept above the desktop – always works, but covers the icons.
+ Overlay
+}
+
+public enum InteractionMode
+{
+ ClickThrough, // mouse passes through to your desktop icons (default)
+ Interactive // wallpaper sits above the icon layer so you can click players / web pages
+}
+
+public enum YouTubeQuality
+{
+ Auto,
+ Q2160,
+ Q1440,
+ Q1080,
+ Q720,
+ Q480,
+ Q360
+}
+
+/// Base class with INotifyPropertyChanged plumbing.
+public abstract class ObservableObject : INotifyPropertyChanged
+{
+ public event PropertyChangedEventHandler? PropertyChanged;
+
+ protected void Raise([CallerMemberName] string? name = null)
+ => PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(name));
+
+ protected bool Set(ref T field, T value, [CallerMemberName] string? name = null)
+ {
+ if (EqualityComparer.Default.Equals(field, value)) return false;
+ field = value;
+ Raise(name);
+ return true;
+ }
+}
+
+public sealed class PlaylistItem : ObservableObject
+{
+ private WallpaperType _type = WallpaperType.Video;
+ private string _source = "";
+ private string _title = "";
+
+ public WallpaperType Type { get => _type; set => Set(ref _type, value); }
+
+ /// Absolute file path, or a URL for YouTube / web page entries.
+ public string Source { get => _source; set => Set(ref _source, value); }
+
+ /// Friendly name shown in the settings list.
+ public string Title { get => _title; set => Set(ref _title, value); }
+
+ [JsonIgnore]
+ public string Display => string.IsNullOrWhiteSpace(Title)
+ ? $"{Type}: {System.IO.Path.GetFileName(Source)}"
+ : $"{Title} ({Type})";
+}
+
+public sealed class RecentEntry : ObservableObject
+{
+ public WallpaperType Type { get; set; }
+ public string Source { get; set; } = "";
+ public string Title { get; set; } = "";
+ public DateTime UsedUtc { get; set; } = DateTime.UtcNow;
+
+ [JsonIgnore]
+ public string Display => $"{Title} \u2014 {Source}";
+}
+
+public sealed class SourceSettings : ObservableObject
+{
+ private WallpaperType _type = WallpaperType.Video;
+ private string _filePath = "";
+ private string _webUrl = "";
+
+ public WallpaperType Type { get => _type; set => Set(ref _type, value); }
+
+ /// Video / GIF / image file on disk.
+ public string FilePath { get => _filePath; set => Set(ref _filePath, value); }
+
+ /// YouTube URL (watch, youtu.be, shorts, live, embed) or any web page URL.
+ public string WebUrl { get => _webUrl; set => Set(ref _webUrl, value); }
+}
+
+public sealed class PlaybackSettings : ObservableObject
+{
+ private WallpaperFit _fit = WallpaperFit.Fill;
+ private bool _muted = true;
+ private double _volume = 35;
+ private double _speed = 1.0;
+ private bool _loop = true;
+ private double _startSeconds = 0;
+ private double _dim = 0;
+ private string _dimColor = "#000000";
+ private bool _restartWhenResumed = false;
+
+ public WallpaperFit Fit { get => _fit; set => Set(ref _fit, value); }
+
+ /// Start with audio muted (recommended; wallpapers should not make noise).
+ public bool Muted { get => _muted; set => Set(ref _muted, value); }
+
+ /// 0 – 100.
+ public double Volume { get => _volume; set => Set(ref _volume, Math.Clamp(value, 0, 100)); }
+
+ /// 0.25 – 4.0. Applies to video, GIF and web (YouTube playback rate).
+ public double Speed { get => _speed; set => Set(ref _speed, Math.Clamp(value, 0.25, 4.0)); }
+
+ public bool Loop { get => _loop; set => Set(ref _loop, value); }
+
+ /// Seek to this offset when playback starts (seconds).
+ public double StartSeconds { get => _startSeconds; set => Set(ref _startSeconds, Math.Max(0, value)); }
+
+ /// 0 – 95. Black (or tinted) overlay opacity in percent – handy for bright wallpapers.
+ public double Dim { get => _dim; set => Set(ref _dim, Math.Clamp(value, 0, 95)); }
+
+ public string DimColor { get => _dimColor; set => Set(ref _dimColor, value); }
+
+ /// Seek back to the configured start offset each time playback resumes.
+ public bool RestartWhenResumed { get => _restartWhenResumed; set => Set(ref _restartWhenResumed, value); }
+}
+
+public sealed class YouTubeSettings : ObservableObject
+{
+ private YouTubeQuality _quality = YouTubeQuality.Auto;
+ private double _startSeconds = 0;
+ private bool _loop = true;
+ private bool _showControls = false;
+ private bool _showRelated = false;
+ private bool _privacyEnhanced = false;
+ private string _extraParameters = "";
+
+ public YouTubeQuality Quality { get => _quality; set => Set(ref _quality, value); }
+
+ public double StartSeconds { get => _startSeconds; set => Set(ref _startSeconds, Math.Max(0, value)); }
+
+ public bool Loop { get => _loop; set => Set(ref _loop, value); }
+
+ /// Show the player controls (hover over the wallpaper in Interactive mode).
+ public bool ShowControls { get => _showControls; set => Set(ref _showControls, value); }
+
+ public bool ShowRelated { get => _showRelated; set => Set(ref _showRelated, value); }
+
+ /// Use youtube-nocookie.com for the embed.
+ public bool PrivacyEnhanced { get => _privacyEnhanced; set => Set(ref _privacyEnhanced, value); }
+
+ /// Raw player parameters appended to the embed URL, e.g. "cc_load_policy=1&hl=de".
+ public string ExtraParameters { get => _extraParameters; set => Set(ref _extraParameters, value); }
+
+ public static string[] QualityLabels { get; } =
+ { "Auto (highest)", "2160p / 4K", "1440p", "1080p", "720p", "480p", "360p" };
+
+ public string QualityToVq() => Quality switch
+ {
+ YouTubeQuality.Q2160 => "highres",
+ YouTubeQuality.Q1440 => "hd1440",
+ YouTubeQuality.Q1080 => "hd1080",
+ YouTubeQuality.Q720 => "hd720",
+ YouTubeQuality.Q480 => "large",
+ YouTubeQuality.Q360 => "medium",
+ _ => "default"
+ };
+}
+
+public sealed class DisplaySettings : ObservableObject
+{
+ private DisplayTarget _target = DisplayTarget.All;
+ private string _specificDevice = "";
+ private InteractionMode _interaction = InteractionMode.ClickThrough;
+ private bool _spanAcrossDisplays = false;
+ private bool _keepIconsAboveWallpaper = true;
+ private LayerMode _layerMode = LayerMode.Auto;
+
+ public LayerMode LayerMode { get => _layerMode; set => Set(ref _layerMode, value); }
+
+ public DisplayTarget Target { get => _target; set => Set(ref _target, value); }
+
+ /// Device name (e.g. \\.\DISPLAY2) used when Target = Specific.
+ public string SpecificDevice { get => _specificDevice; set => Set(ref _specificDevice, value); }
+
+ public InteractionMode Interaction { get => _interaction; set => Set(ref _interaction, value); }
+
+ /// Render one wallpaper stretched over the bounding box of all displays instead of one per display.
+ public bool SpanAcrossDisplays { get => _spanAcrossDisplays; set => Set(ref _spanAcrossDisplays, value); }
+
+ /// Keep desktop icons drawn above the wallpaper (always on unless interactive).
+ public bool KeepIconsAboveWallpaper { get => _keepIconsAboveWallpaper; set => Set(ref _keepIconsAboveWallpaper, value); }
+}
+
+/// Desktop icons drawn on top of an overlay wallpaper (the shell's own icons are covered).
+public sealed class DesktopIconsSettings : ObservableObject
+{
+ private bool _enabled = true;
+ private double _iconSize = 48;
+ private bool _showLabels = true;
+ private bool _showOnAllDisplays = false;
+ private bool _blockDesktopClicks = false;
+
+ public bool Enabled { get => _enabled; set => Set(ref _enabled, value); }
+
+ /// Icon size in DIPs (24–128).
+ public double IconSize { get => _iconSize; set => Set(ref _iconSize, Math.Clamp(value, 24, 128)); }
+
+ public bool ShowLabels { get => _showLabels; set => Set(ref _showLabels, value); }
+
+ /// Draw the icons on every overlay display instead of only the primary one.
+ public bool ShowOnAllDisplays { get => _showOnAllDisplays; set => Set(ref _showOnAllDisplays, value); }
+
+ ///
+ /// Let LiveWall answer right-clicks on empty desktop space (its own refresh/settings menu).
+ /// Off by default, because it also swallows the shell's desktop menu.
+ ///
+ public bool BlockDesktopClicks { get => _blockDesktopClicks; set => Set(ref _blockDesktopClicks, value); }
+}
+
+public sealed class AutomationSettings : ObservableObject
+{
+ private bool _pauseOnFullscreen = true;
+ private bool _pauseOnMaximized = false;
+ private bool _pauseOnBattery = false;
+ private bool _pauseOnSessionLock = true;
+ private bool _pauseOnRemoteDesktop = true;
+ private bool _hideWhenPaused = false;
+ private bool _startWithWindows = false;
+ private bool _startMinimized = false;
+ private bool _closeToTray = true;
+ private bool _showTrayIcon = true;
+ private bool _showNotifications = true;
+ private double _pollSeconds = 1.0;
+
+ public bool PauseOnFullscreen { get => _pauseOnFullscreen; set => Set(ref _pauseOnFullscreen, value); }
+
+ public bool PauseOnMaximized { get => _pauseOnMaximized; set => Set(ref _pauseOnMaximized, value); }
+
+ public bool PauseOnBattery { get => _pauseOnBattery; set => Set(ref _pauseOnBattery, value); }
+
+ public bool PauseOnSessionLock { get => _pauseOnSessionLock; set => Set(ref _pauseOnSessionLock, value); }
+
+ public bool PauseOnRemoteDesktop { get => _pauseOnRemoteDesktop; set => Set(ref _pauseOnRemoteDesktop, value); }
+
+ /// While paused, hide the wallpaper window completely so the GPU goes idle.
+ public bool HideWhenPaused { get => _hideWhenPaused; set => Set(ref _hideWhenPaused, value); }
+
+ public bool StartWithWindows { get => _startWithWindows; set => Set(ref _startWithWindows, value); }
+
+ public bool StartMinimized { get => _startMinimized; set => Set(ref _startMinimized, value); }
+
+ public bool CloseToTray { get => _closeToTray; set => Set(ref _closeToTray, value); }
+
+ public bool ShowTrayIcon { get => _showTrayIcon; set => Set(ref _showTrayIcon, value); }
+
+ public bool ShowNotifications { get => _showNotifications; set => Set(ref _showNotifications, value); }
+
+ /// How often (seconds) the pause/full-screen monitor runs. 0.25 – 10.
+ public double PollSeconds { get => _pollSeconds; set => Set(ref _pollSeconds, Math.Clamp(value, 0.25, 10)); }
+}
+
+public sealed class PlaylistSettings : ObservableObject
+{
+ private bool _enabled = false;
+ private bool _shuffle = false;
+ private double _intervalMinutes = 30;
+ private bool _advanceOnMediaEnd = false;
+
+ public bool Enabled { get => _enabled; set => Set(ref _enabled, value); }
+
+ public bool Shuffle { get => _shuffle; set => Set(ref _shuffle, value); }
+
+ public double IntervalMinutes { get => _intervalMinutes; set => Set(ref _intervalMinutes, Math.Clamp(value, 0.1, 1440)); }
+
+ /// If the current video/GIF reaches its end, move to the next playlist entry instead of looping.
+ public bool AdvanceOnMediaEnd { get => _advanceOnMediaEnd; set => Set(ref _advanceOnMediaEnd, value); }
+
+ public ObservableCollection Items { get; set; } = new();
+}
+
+public sealed class HotkeySettings : ObservableObject
+{
+ private bool _enabled = true;
+ private string _togglePause = "Ctrl+Alt+P";
+ private string _nextWallpaper = "Ctrl+Alt+N";
+ private string _reloadWallpaper = "Ctrl+Alt+R";
+ private string _toggleInteraction = "Ctrl+Alt+I";
+
+ public bool Enabled { get => _enabled; set => Set(ref _enabled, value); }
+
+ public string TogglePause { get => _togglePause; set => Set(ref _togglePause, value); }
+
+ public string NextWallpaper { get => _nextWallpaper; set => Set(ref _nextWallpaper, value); }
+
+ public string ReloadWallpaper { get => _reloadWallpaper; set => Set(ref _reloadWallpaper, value); }
+
+ public string ToggleInteraction { get => _toggleInteraction; set => Set(ref _toggleInteraction, value); }
+}
+
+public sealed class AdvancedSettings : ObservableObject
+{
+ private bool _webDevTools = false;
+ private string _extraBrowserArguments = "";
+ private bool _verboseLogging = false;
+ private int _maxRecentEntries = 15;
+ private bool _autoDetectExplorerRestart = true;
+
+ /// Right-click a web/YouTube wallpaper and choose "Inspect" to open DevTools.
+ public bool WebDevTools { get => _webDevTools; set => Set(ref _webDevTools, value); }
+
+ /// Extra Chromium switches for the web renderer (advanced).
+ public string ExtraBrowserArguments { get => _extraBrowserArguments; set => Set(ref _extraBrowserArguments, value); }
+
+ public bool VerboseLogging { get => _verboseLogging; set => Set(ref _verboseLogging, value); }
+
+ public int MaxRecentEntries { get => _maxRecentEntries; set => Set(ref _maxRecentEntries, Math.Clamp(value, 0, 100)); }
+
+ /// Watch for Explorer restarts and automatically re-attach the wallpaper.
+ public bool AutoDetectExplorerRestart { get => _autoDetectExplorerRestart; set => Set(ref _autoDetectExplorerRestart, value); }
+}
+
+/// Root settings object. Every group bubbles its changes up through .
+public sealed class AppSettings : ObservableObject
+{
+ public SourceSettings Source { get; set; } = new();
+ public PlaybackSettings Playback { get; set; } = new();
+ public YouTubeSettings YouTube { get; set; } = new();
+ public DisplaySettings Displays { get; set; } = new();
+ public AutomationSettings Automation { get; set; } = new();
+ public DesktopIconsSettings DesktopIcons { get; set; } = new();
+ public PlaylistSettings Playlist { get; set; } = new();
+ public HotkeySettings Hotkeys { get; set; } = new();
+ public AdvancedSettings Advanced { get; set; } = new();
+ public PluginsSettings Plugins { get; set; } = new();
+
+ public ObservableCollection Recent { get; set; } = new();
+
+ /// Raised whenever anything anywhere in the settings tree changes.
+ public event EventHandler? Changed;
+
+ public AppSettings()
+ {
+ HookAll();
+ }
+
+ /// Re-wires change notifications after JSON deserialisation.
+ public void Rebind() => HookAll();
+
+ private void HookAll()
+ {
+ void H(ObservableObject g, string n)
+ {
+ g.PropertyChanged -= OnGroupChanged;
+ g.PropertyChanged += OnGroupChanged;
+ }
+ H(Source, nameof(Source));
+ H(Playback, nameof(Playback));
+ H(YouTube, nameof(YouTube));
+ H(Displays, nameof(Displays));
+ H(Automation, nameof(Automation));
+ H(DesktopIcons, nameof(DesktopIcons));
+ H(Playlist, nameof(Playlist));
+ H(Hotkeys, nameof(Hotkeys));
+ H(Advanced, nameof(Advanced));
+ H(Plugins, nameof(Plugins));
+ Playlist.Items.CollectionChanged -= OnItemsChanged;
+ Playlist.Items.CollectionChanged += OnItemsChanged;
+ Recent.CollectionChanged -= OnRecentChanged;
+ Recent.CollectionChanged += OnRecentChanged;
+ }
+
+ private void OnGroupChanged(object? sender, PropertyChangedEventArgs e)
+ => Changed?.Invoke(this, e.PropertyName ?? "");
+
+ private void OnItemsChanged(object? sender, System.Collections.Specialized.NotifyCollectionChangedEventArgs e)
+ => Changed?.Invoke(this, nameof(Playlist.Items));
+
+ private void OnRecentChanged(object? sender, System.Collections.Specialized.NotifyCollectionChangedEventArgs e)
+ => Changed?.Invoke(this, nameof(Recent));
+}
diff --git a/LiveWall/Models/LiveSettingsSnapshot.cs b/LiveWall/Models/LiveSettingsSnapshot.cs
new file mode 100644
index 0000000..fe5c532
--- /dev/null
+++ b/LiveWall/Models/LiveSettingsSnapshot.cs
@@ -0,0 +1,20 @@
+using LiveWall.Sdk;
+
+namespace LiveWall.Models;
+
+/// Concrete snapshot of the live settings handed to plugins.
+public sealed class LiveSettingsSnapshot : ISettingsSnapshot
+{
+ public Guid SnapshotId { get; init; }
+ public string SourceKind { get; init; } = "";
+ public string SourceLocation { get; init; } = "";
+ public bool Muted { get; init; }
+ public double Volume { get; init; }
+ public double Speed { get; init; }
+ public bool Loop { get; init; }
+ public bool InteractiveMode { get; init; }
+ public bool Paused { get; init; }
+ public int DimPercent { get; init; }
+ public string DimColor { get; init; } = "#000000";
+ public IReadOnlyList DisplayDevices { get; init; } = Array.Empty();
+}
diff --git a/LiveWall/Models/PluginsSettings.cs b/LiveWall/Models/PluginsSettings.cs
new file mode 100644
index 0000000..029e37c
--- /dev/null
+++ b/LiveWall/Models/PluginsSettings.cs
@@ -0,0 +1,59 @@
+using System.Collections.ObjectModel;
+
+namespace LiveWall.Models;
+
+/// Per plugin state the user chose (enabled?) and the hash they approved.
+public sealed class PluginStateEntry : ObservableObject
+{
+ private bool _enabled;
+ private string _approvedHash = "";
+
+ public string Id { get; set; } = "";
+
+ public string Name { get; set; } = "";
+
+ public bool Enabled { get => _enabled; set => Set(ref _enabled, value); }
+
+ /// SHA-256 of the assembly the user approved. A different hash means "ask again".
+ public string ApprovedHash { get => _approvedHash; set => Set(ref _approvedHash, value); }
+}
+
+///
+/// The plugin system's master switch and per plugin choices. Everything here defaults to "off":
+/// plugins never run until the user has read the warning and opted in.
+///
+public sealed class PluginsSettings : ObservableObject
+{
+ private bool _enabled;
+ private bool _allowUnverified;
+ private bool _consentGiven;
+ private string _folderPath = "";
+
+ /// Master switch. Off by default; enabling it shows the third-party code warning.
+ public bool Enabled { get => _enabled; set => Set(ref _enabled, value); }
+
+ ///
+ /// Whether a plugin whose file changed (hash no longer matches what the user approved) may load
+ /// at start-up without asking again. Off by default: a silently replaced DLL has to be re-approved.
+ /// The warning dialog is always shown when the user enables a plugin by hand.
+ ///
+ public bool AllowUnverified { get => _allowUnverified; set => Set(ref _allowUnverified, value); }
+
+ /// True once the user acknowledged the general "plugins may harm your computer" warning.
+ public bool ConsentGiven { get => _consentGiven; set => Set(ref _consentGiven, value); }
+
+ /// Empty means the default folder (%APPDATA%\LiveWall\plugins).
+ public string FolderPath { get => _folderPath; set => Set(ref _folderPath, value); }
+
+ public ObservableCollection Plugins { get; set; } = new();
+
+ public PluginStateEntry GetOrAdd(string id, string name)
+ {
+ var entry = Plugins.FirstOrDefault(p => string.Equals(p.Id, id, StringComparison.OrdinalIgnoreCase));
+ if (entry != null) return entry;
+
+ entry = new PluginStateEntry { Id = id, Name = name };
+ Plugins.Add(entry);
+ return entry;
+ }
+}
diff --git a/LiveWall/PluginUi.cs b/LiveWall/PluginUi.cs
new file mode 100644
index 0000000..74e8eed
--- /dev/null
+++ b/LiveWall/PluginUi.cs
@@ -0,0 +1,137 @@
+using System.IO;
+using System.Windows;
+using System.Windows.Controls;
+using System.Windows.Media;
+using LiveWall.Plugins;
+using LiveWall.Sdk;
+
+namespace LiveWall;
+
+/// One row in the Plugins tab.
+public sealed class PluginRow
+{
+ public PluginRow(LoadedPlugin plugin, int pages)
+ {
+ Plugin = plugin;
+ Pages = pages;
+
+ Title = plugin.DisplayName;
+ Subtitle = BuildSubtitle(plugin, pages);
+ Badge = plugin.Verified ? "verified" : "unverified";
+
+ BadgeBrush = plugin.State switch
+ {
+ PluginState.Active => plugin.Verified
+ ? new SolidColorBrush(Color.FromRgb(0x35, 0xD0, 0xA5))
+ : new SolidColorBrush(Color.FromRgb(0xF5, 0xC2, 0x5C)),
+ PluginState.Failed or PluginState.Incompatible => new SolidColorBrush(Color.FromRgb(0xFF, 0x7B, 0x7B)),
+ _ => new SolidColorBrush(Color.FromRgb(0x8C, 0x95, 0xA5))
+ };
+
+ bool enabled = plugin.State == PluginState.Active;
+ ToggleText = enabled ? "Disable" : "Enable";
+ }
+
+ public LoadedPlugin Plugin { get; }
+ public int Pages { get; }
+ public bool HasPages => Pages > 0;
+ public bool IsVerified => Plugin.Verified;
+ public string Title { get; }
+ public string Subtitle { get; }
+ public string Badge { get; }
+ public Brush BadgeBrush { get; }
+ public string ToggleText { get; }
+
+ private static string BuildSubtitle(LoadedPlugin plugin, int pages)
+ {
+ var parts = new List();
+
+ parts.Add(string.IsNullOrWhiteSpace(plugin.Info.Author) ? "unknown author" : plugin.Info.Author);
+ parts.Add(plugin.StateText);
+
+ if (plugin.Info.Permissions != PluginPermission.None)
+ {
+ var names = PluginPermissionInfo.Expand(plugin.Info.Permissions).Select(p => p.Permission.ToString());
+ parts.Add("needs: " + string.Join(", ", names));
+ }
+
+ if (pages > 0) parts.Add($"{pages} settings page{(pages == 1 ? "" : "s")}");
+
+ if (plugin.State is PluginState.Failed or PluginState.Incompatible && plugin.Error.Length > 0)
+ parts.Add(plugin.Error);
+
+ return string.Join(" · ", parts);
+ }
+}
+
+/// One runnable command contributed by a plugin.
+public sealed class PluginCommandRow
+{
+ public PluginCommandRow(LoadedPlugin plugin, PluginCommand command)
+ {
+ Plugin = plugin;
+ Command = command;
+ Title = command.Title;
+ Subtitle = plugin.Info.Name + (string.IsNullOrWhiteSpace(command.Category) ? "" : $" · {command.Category}");
+ }
+
+ public LoadedPlugin Plugin { get; }
+ public PluginCommand Command { get; }
+ public string Title { get; }
+ public string Subtitle { get; }
+}
+
+/// Window that hosts one or more plugin settings pages.
+public sealed class PluginPageWindow : Window
+{
+ public PluginPageWindow(string title, IReadOnlyList pages)
+ {
+ Title = title;
+ Width = 640;
+ Height = 560;
+ WindowStartupLocation = WindowStartupLocation.CenterOwner;
+ Background = (Brush)Application.Current.Resources["BgWindow"];
+
+ var tabs = new TabControl { Background = Brushes.Transparent, BorderThickness = new Thickness(0) };
+
+ foreach (var page in pages)
+ {
+ var content = new StackPanel { Margin = new Thickness(18) };
+ content.Children.Add(new TextBlock
+ {
+ Text = page.Title,
+ FontSize = 17,
+ FontWeight = FontWeights.SemiBold,
+ Foreground = (Brush)Application.Current.Resources["TextBrush"],
+ Margin = new Thickness(0, 0, 0, 4)
+ });
+ content.Children.Add(new TextBlock
+ {
+ Text = page.Description,
+ TextWrapping = TextWrapping.Wrap,
+ FontSize = 12.5,
+ Foreground = (Brush)Application.Current.Resources["TextDim"],
+ Margin = new Thickness(0, 0, 0, 14)
+ });
+
+ try
+ {
+ content.Children.Add(page.CreateView());
+ }
+ catch (Exception ex)
+ {
+ content.Children.Add(new TextBlock
+ {
+ Text = "The plugin's page threw while building: " + ex.Message,
+ Foreground = (Brush)Application.Current.Resources["DangerBrush"],
+ TextWrapping = TextWrapping.Wrap
+ });
+ Log.Error("Plugin settings page failed", ex);
+ }
+
+ tabs.Items.Add(new TabItem { Header = page.Title, Content = new ScrollViewer { Content = content } });
+ }
+
+ Content = tabs;
+ }
+}
diff --git a/LiveWall/Plugins/PluginEventBus.cs b/LiveWall/Plugins/PluginEventBus.cs
new file mode 100644
index 0000000..1f7f2e6
--- /dev/null
+++ b/LiveWall/Plugins/PluginEventBus.cs
@@ -0,0 +1,85 @@
+using System.Windows.Threading;
+using LiveWall.Sdk;
+
+namespace LiveWall.Plugins;
+
+///
+/// Type based publish/subscribe. Handlers always run on the UI thread, and a throwing handler can
+/// never take the host down - it is logged and ignored.
+///
+internal sealed class PluginEventBus : IPluginEvents
+{
+ private readonly Dictionary>> _handlers = new();
+ private readonly object _gate = new();
+ private readonly IPluginLog _log;
+ private readonly Dispatcher? _dispatcher;
+
+ public PluginEventBus(IPluginLog log)
+ {
+ _log = log;
+ _dispatcher = System.Windows.Application.Current?.Dispatcher;
+ }
+
+ public IDisposable Subscribe(Action handler) where TEvent : class
+ {
+ ArgumentNullException.ThrowIfNull(handler);
+
+ var key = typeof(TEvent);
+ Action