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.


  • 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 Manager

    Those are the two dialogs I encounter the most.

  • Check out the early LINQPad 8 preview and let us know your thoughts:

  • 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
            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.

Sign In or Register to comment.