nvaccess / nvda

NVDA, the free and open source Screen Reader for Microsoft Windows
Other
2.04k stars 627 forks source link

Support Windows 10/11 Dark Mode #16683

Open SaschaCowley opened 1 month ago

SaschaCowley commented 1 month ago

Is your feature request related to a problem? Please describe.

Windows 10 introduced a system dark mode, which adjusts most of the operating system (and compatible applications) to be displayed with light text on a dark background. This is a valuable accessibility tool for low vision users, many of whom experience photophobia or difficulty focusing on dark text on a bright background. However, NVDA's GUI currently remains in light mode even when the system-wide dark mode is enabled in Windows 10 and Windows 11.

Describe the solution you'd like

I propose adding native dark mode support to NVDA. When dark mode is enabled in the operating system, NVDA should adapt its interface accordingly. This change would enhance the user experience and align with accessibility best practices. The option to override this, and have NVDA display in light or dark mode regardless of the operating system setting, would be a further possible enhancement.

Describe alternatives you've considered

As an alternative to dark mode, users can use Windows High Contrast Mode, but this has a number of downsides, some of which may make the system less accessible to partially sighted users.

Additional context

Win32 UI doesn't support dark mode out of the box, so work would be needed to implement detecting dark mode and changing the colour set in WXPython. We know it's doable, however, as programs like File Explorer and Notepad++ have done it.

bzkmsjy commented 1 month ago

I also hope NVDA can adapt to Windows' dark theme UI. I am a cataract patient, and I cannot read light-colored interfaces, but I can read dark-colored ones. I use NVDA to assist me in reading the screen, reducing my need for glasses. Although Windows offers a high-contrast theme, some light-colored elements in the high-contrast theme make me very uncomfortable, such as the light highlight of the current browser tab and the pure white highlight of the mouse pointer. The dark theme UI is superior to the high-contrast theme in every aspect.

seanbudd commented 1 month ago

reprioritizing as this is something that prevents a subset of users from using NVDA

thienautran commented 1 month ago

I would like to start working on this as a first time contributor to the project.

At the moment, there doesn't appear to be any support for handling colour themes and colours are currently hard coded in. What would the best way of enabling a modular theming system? Obviously hard coding values inside the current implementation is not ideal.

My second question is what aspects of the ui does this issue target. We have both the context menus and the main settings and add on store UIs, does the python interpreter console need to be included? Are there ui components that I'm missing?

josephsl commented 1 month ago

Hi, I think a slightly better place to tackle would be wxPython as this requires collaboration with that GUI framework to bring dark mode support. Thanks.