I’m not too keen on implementing this to be honest, mostly because of how this would work cross platform. But yes, maybe have this for Windows only. In general this theming is handled by Qt, the UI library being used. So there are different cases how this currently works:
On macOS the OS tells the app that dark mode is enabled. Qt already detects this and switches the colors accordingly (respecting e.g. the highlight color the user chose in the OS’s settings). From Picard’s perspective we have not much impact on this, except that we can detect that we are running in dark mode and adjust some colors accordingly (1).
On Linux depending on the desktop environment in use there is either no dark mode supported or the systems sets a specific color palette and Qt uses this. There is also the Picard option for the user to choose to use the system’s theme (this option is not available on macOS or Windows), which might or might not be dark. We don’t have a direct way to detect if the current theme is considered dark or not, but we check for the background color of the theme to decide on some colors to switch.
On Windows Qt has no built-in support for any dark theme handling. Hence we have implemented switching the color palette ourselves (it either uses the default palette of Qt for light theme, or a custom dark palette which was designed to match the colors used by Windows 10).
We could add the dark mode switch option maybe for Windows only, as it would be rather easy to support there. For the Linux case I would not do it, that would require us to define both a dark and light palette hard coded and use that, overwriting what was provided by the system. Considering how different the visuals is there and the Linux user’s desire to use their preferred look and feel across apps this complicates things. For macOS it is similar, we would need to both define a dark and light palette (that fits the default) and make sure it does not interfere with Qt’s own color switching.
Update: I added https://tickets.metabrainz.org/browse/PICARD-2095
(1) Side note: macOS users will rightly notice that it does not work that way at all and Picard has no dark mode support on macOS at all. That’s also true, and it is because macOS thinks our packaged builds are not supporting dark mode. That’s a open problem to solve. But it works as described if one runs e.g. Picard from source.