diff --git a/src/modules/launcher/Plugins/Microsoft.Plugin.WindowWalker/Components/LivePreview.cs b/src/modules/launcher/Plugins/Microsoft.Plugin.WindowWalker/Components/LivePreview.cs
index 4dd834f6af8e..4ae0d0c42f9a 100644
--- a/src/modules/launcher/Plugins/Microsoft.Plugin.WindowWalker/Components/LivePreview.cs
+++ b/src/modules/launcher/Plugins/Microsoft.Plugin.WindowWalker/Components/LivePreview.cs
@@ -19,13 +19,13 @@ internal class LivePreview
/// handle to the window to exclude
public static void SetWindowExclusionFromLivePreview(IntPtr hwnd)
{
- int renderPolicy = (int)DwmNCRenderingPolicies.Enabled;
+ uint renderPolicy = (uint)DwmNCRenderingPolicies.Enabled;
_ = NativeMethods.DwmSetWindowAttribute(
hwnd,
12,
ref renderPolicy,
- sizeof(int));
+ sizeof(uint));
}
///
diff --git a/src/modules/launcher/PowerLauncher/MainWindow.xaml b/src/modules/launcher/PowerLauncher/MainWindow.xaml
index 9ae9a70cf317..764dee2bbacf 100644
--- a/src/modules/launcher/PowerLauncher/MainWindow.xaml
+++ b/src/modules/launcher/PowerLauncher/MainWindow.xaml
@@ -32,9 +32,9 @@
-
+
@@ -45,11 +45,6 @@
Grid.Row="0"
Padding="12,4,12,3">
-
-
-
-
-
diff --git a/src/modules/launcher/PowerLauncher/MainWindow.xaml.cs b/src/modules/launcher/PowerLauncher/MainWindow.xaml.cs
index 69c4d7108fd6..2fa2699953d8 100644
--- a/src/modules/launcher/PowerLauncher/MainWindow.xaml.cs
+++ b/src/modules/launcher/PowerLauncher/MainWindow.xaml.cs
@@ -63,7 +63,7 @@ public MainWindow(PowerToysRunSettings settings, MainViewModel mainVM, Cancellat
if (OSVersionHelper.IsWindows11())
{
- WindowBackdropType = Wpf.Ui.Controls.WindowBackdropType.Mica;
+ WindowBackdropType = Wpf.Ui.Controls.WindowBackdropType.Acrylic;
}
else
{
diff --git a/src/modules/launcher/PowerLauncher/ViewModel/MainViewModel.cs b/src/modules/launcher/PowerLauncher/ViewModel/MainViewModel.cs
index 43e642dd0b7f..06e80a2a0106 100644
--- a/src/modules/launcher/PowerLauncher/ViewModel/MainViewModel.cs
+++ b/src/modules/launcher/PowerLauncher/ViewModel/MainViewModel.cs
@@ -8,11 +8,13 @@
using System.Globalization;
using System.Linq;
using System.Reflection;
+using System.Runtime.InteropServices;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Input;
+using System.Windows.Interop;
using System.Windows.Threading;
using Common.UI;
using interop;
@@ -1006,6 +1008,36 @@ public void ToggleWox()
if (MainWindowVisibility != Visibility.Visible)
{
MainWindowVisibility = Visibility.Visible;
+
+ // HACK: The following code in this if is a fix for https://github.com/microsoft/PowerToys/issues/30206 and https://github.com/microsoft/PowerToys/issues/33135
+ // WPF UI theme watcher removes the composition target background color, among other weird stuff.
+ // https://github.com/lepoco/wpfui/blob/303f0aefcd59a142bc681415dc4360a34a15f33d/src/Wpf.Ui/Controls/Window/WindowBackdrop.cs#L280
+ // So we set it back with https://github.com/lepoco/wpfui/blob/303f0aefcd59a142bc681415dc4360a34a15f33d/src/Wpf.Ui/Controls/Window/WindowBackdrop.cs#L191
+ var window = Application.Current.MainWindow;
+ Wpf.Ui.Controls.WindowBackdrop.RemoveBackground(window);
+
+ // Taken from WPFUI's fix for the title bar issue. We should be able to remove this fix when WPF UI 4 is integrated.
+ // https://github.com/lepoco/wpfui/pull/1122/files#diff-196b404f4db09632665ef546da6c8e57302b2f3e3d082eb4b5c295ae3482d94a
+ IntPtr windowHandle = new WindowInteropHelper(window).Handle;
+ if (windowHandle == IntPtr.Zero)
+ {
+ return;
+ }
+
+ HwndSource windowSource = HwndSource.FromHwnd(windowHandle);
+
+ // Remove background from client area
+ if (windowSource != null && windowSource.Handle != IntPtr.Zero && windowSource?.CompositionTarget != null)
+ {
+ // NOTE: https://learn.microsoft.com/en-us/windows/win32/api/dwmapi/ne-dwmapi-dwmwindowattribute
+ // Specifying DWMWA_COLOR_DEFAULT (value 0xFFFFFFFF) for the color will reset the window back to using the system's default behavior for the caption color.
+ uint titlebarPvAttribute = 0xFFFFFFFE;
+ _ = Wox.Plugin.Common.Win32.NativeMethods.DwmSetWindowAttribute(
+ windowSource.Handle,
+ (int)Wox.Plugin.Common.Win32.DwmWindowAttributes.CaptionColor,
+ ref titlebarPvAttribute,
+ Marshal.SizeOf(typeof(uint)));
+ }
}
else
{
diff --git a/src/modules/launcher/Wox.Plugin/Common/Win32/NativeMethods.cs b/src/modules/launcher/Wox.Plugin/Common/Win32/NativeMethods.cs
index 0c2c76e8f0b5..0028d9a1a261 100644
--- a/src/modules/launcher/Wox.Plugin/Common/Win32/NativeMethods.cs
+++ b/src/modules/launcher/Wox.Plugin/Common/Win32/NativeMethods.cs
@@ -66,7 +66,7 @@ public static class NativeMethods
public static extern int DwmpActivateLivePreview([MarshalAs(UnmanagedType.Bool)] bool fActivate, IntPtr hWndExclude, IntPtr hWndInsertBefore, LivePreviewTrigger lpt, IntPtr prcFinalRect);
[DllImport("dwmapi.dll", PreserveSig = false)]
- public static extern int DwmSetWindowAttribute(IntPtr hwnd, int attr, ref int attrValue, int attrSize);
+ public static extern int DwmSetWindowAttribute(IntPtr hwnd, int attr, ref uint attrValue, int attrSize);
[DllImport("dwmapi.dll", PreserveSig = false)]
public static extern int DwmGetWindowAttribute(IntPtr hwnd, int dwAttribute, out int pvAttribute, int cbAttribute);
@@ -493,28 +493,28 @@ public enum DwmNCRenderingPolicies
public enum DwmWindowAttributes
{
NCRenderingEnabled = 1,
- NCRenderingPolicy,
- TransitionsForceDisabled,
- AllowNCPaint,
- CaptionButtonBounds,
- NonClientRtlLayout,
- ForceIconicRepresentation,
- Flip3DPolicy,
- ExtendedFrameBounds,
- HasIconicBitmap,
- DisallowPeek,
- ExcludedFromPeek,
- Cloak,
- Cloaked,
- FreezeRepresentation,
- PassiveUpdateMode,
- UseHostbackdropbrush,
- UseImmersiveDarkMode,
- WindowCornerPreference,
- BorderColor,
- CaptionColor,
- TextColor,
- VisibleFrameBorderThickness,
+ NCRenderingPolicy = 2,
+ TransitionsForceDisabled = 3,
+ AllowNCPaint = 4,
+ CaptionButtonBounds = 5,
+ NonClientRtlLayout = 6,
+ ForceIconicRepresentation = 7,
+ Flip3DPolicy = 8,
+ ExtendedFrameBounds = 9,
+ HasIconicBitmap = 10,
+ DisallowPeek = 11,
+ ExcludedFromPeek = 12,
+ Cloak = 13,
+ Cloaked = 14,
+ FreezeRepresentation = 15,
+ PassiveUpdateMode = 16,
+ UseHostbackdropbrush = 17,
+ UseImmersiveDarkMode = 20,
+ WindowCornerPreference = 33,
+ BorderColor = 34,
+ CaptionColor = 35,
+ TextColor = 36,
+ VisibleFrameBorderThickness = 37,
Last,
}