Finish LINQPad Dark Theme?
Are there any plans to finish/implement the dark theming for the regular elements of the UI? Menus, pop-up dialogs, etc. Or even just following the current Windows theme.
While I don't live in Query Properties or the NuGet Manager, they come up often enough to be highly jarring relative to the rest of the UI.
Comments
-
The main menu, all context menus and the main toolbar will be properly dark-theme rendered in the first release of LINQPad 8 (there should be a preview out next week). The icons in the TreeViews (and nearly everywhere else) will also be drawn with a vector-based renderer that's dark-theme aware. Some of this required a WPF rewrite, which is why it took some time. There are plans to improve other areas in the following months. What would you rank as the most important elements?
-
Glad to know the work proceeds. Thanks Joe.
In terms of priority:
Query Properties
NuGet ManagerThose are the two dialogs I encounter the most.
-
Check out the early LINQPad 8 preview and let us know your thoughts:
https://www.linqpad.net/linqpad8.aspx -
Would it be much of an issue if Linqpad added support for "immersive dark mode" (native themed titlebar) ?
Attached is a sample how it would look today.
void Main() { IntPtr hWnd = LINQPad.Util.HostWindowHandle; NativeInterop.Dwmapi.UseImmersiveDarkMode(hWnd, true); } internal static class NativeInterop { public class Dwmapi { [DllImport("dwmapi.dll")] private static extern int DwmSetWindowAttribute(IntPtr hwnd, int attr, ref int attrValue, int attrSize); private const int DWMWA_USE_IMMERSIVE_DARK_MODE_BEFORE_20H1 = 19; private const int DWMWA_USE_IMMERSIVE_DARK_MODE = 20; public static bool UseImmersiveDarkMode(IntPtr handle, bool enabled) { if (IsWindows10OrGreater(17763)) { int attribute = DWMWA_USE_IMMERSIVE_DARK_MODE_BEFORE_20H1; if (IsWindows10OrGreater(18985)) { attribute = DWMWA_USE_IMMERSIVE_DARK_MODE; } int useImmersiveDarkMode = enabled ? 1 : 0; return DwmSetWindowAttribute(handle, attribute, ref useImmersiveDarkMode, sizeof(int)) == 0; } return false; } public static bool IsWindows10OrGreater(int build = -1) { return Environment.OSVersion.Version.Major >= 10 && Environment.OSVersion.Version.Build >= build; } } }
-
Thanks - I did not know about this API. Will add this to the next build.