Demo of dark mode for any windows app using Xilinx Vivado as an example. Uses magnification API.
Go to file
2024-10-05 03:29:14 +08:00
.gitignore Messy demo code which shows that I can make any windows app dark mode 2024-10-05 03:05:33 +08:00
example_dark_mode.png Add demo image to README and warning. 2024-10-05 03:29:14 +08:00
Form1.cs Add demo image to README and warning. 2024-10-05 03:29:14 +08:00
Form1.Designer.cs Messy demo code which shows that I can make any windows app dark mode 2024-10-05 03:05:33 +08:00
Form1.resx Messy demo code which shows that I can make any windows app dark mode 2024-10-05 03:05:33 +08:00
LICENSE Messy demo code which shows that I can make any windows app dark mode 2024-10-05 03:05:33 +08:00
LICENSE_Karna.Magnification Messy demo code which shows that I can make any windows app dark mode 2024-10-05 03:05:33 +08:00
Magnifier.cs Messy demo code which shows that I can make any windows app dark mode 2024-10-05 03:05:33 +08:00
NativeMethods.cs Messy demo code which shows that I can make any windows app dark mode 2024-10-05 03:05:33 +08:00
NativeStructures.cs Messy demo code which shows that I can make any windows app dark mode 2024-10-05 03:05:33 +08:00
Program.cs Messy demo code which shows that I can make any windows app dark mode 2024-10-05 03:05:33 +08:00
README.md Add demo image to README and warning. 2024-10-05 03:29:14 +08:00
WindowOverlayApp.csproj Messy demo code which shows that I can make any windows app dark mode 2024-10-05 03:05:33 +08:00
WindowOverlayApp.sln Messy demo code which shows that I can make any windows app dark mode 2024-10-05 03:05:33 +08:00

Vivado Dark Mode

Vivado dark mode

Warning

This is demo code to show dark mode for any light mode application on Windows is possible, the code is not polished for a final product and the current code does not handle all edge cases.

This will eventually become a program to make any windows application dark mode, stay tuned.

This demo uses the Windows magnification API to invert a window and make it dark mode.

Bugs/Notes

  • When switching windows, it will momentarily flash. This is because of some latency in handling the window foreground event, I am not sure if it is possible to improve on this to make it less noticeable.
  • Window title is hardcoded, meaning if the dark mode program was started after the window title does not match "Vivado 24.1" (for example after opening a project) it will fail.
  • Currently it just inverts the program, but the magnification API supports transformation matrices so it is possible to use a different color mapping that might be better.
  • Currently this handles sub-windows (such as save dialogs) by making the magnification window have the maximum Z order. This simplifies things, but also means if another window is over the active window it too will be inverted
    • Creating magnification lenses for each window with the Z height 1 above the relavant window would fix this issue.

License

karna-magnification is licensed under the MPL 2.0. See LICENSE_Karna.Magnification

This demo is licensed under GPL-3.0