BOINC / boinc

Open-source software for volunteer computing and grid computing.
https://boinc.berkeley.edu
GNU Lesser General Public License v3.0
2.03k stars 449 forks source link

manager: support Mojave Dark Mode #2917

Open JuhaSointusalo opened 5 years ago

JuhaSointusalo commented 5 years ago

From https://boinc.berkeley.edu/forum_thread.php?id=12755:

Hi, would be wonderful if you add a dark theme to reflect Mojave color. Moreover doing a dark theme avoid drastic color changes while switching between apps.

From https://boinc.berkeley.edu/forum_thread.php?id=12684:

The BOINC menu bar icon for macOS is really awful in the Dark Mode of Mojave…

image

Because the current one was drawn for a white background.

image

Is it possible to have another icon displayed in dark mode, to add support for Mojave? Or at least please a simple gray color of the icon? It will be more convenient.

JuhaSointusalo commented 5 years ago

One of the highlights of wxWidgets 3.1.2 released on December 10, 2018 is

wxWidgets ticket #18146 seems to track the progress.

CharlieFenton commented 5 years ago

I doubt that wxWidgets' code will modify the Manager's taskbar (menu bar) icons for dark mode automatically. I expect someone will need to create new artwork for the three icons (normal, suspended [snooze] and disconnected) in addition to the three we already have. Note also that skins can and do override the default taskbar icons, so this will need to be done for all skins (such as World Community Grid, GridRepublic, etc.) These icons are built using the wxWidgets cross-platform approach of XPM files, which is very different from the way this would be handled in a conventional Macintosh application, so the standard way of doing this on the Mac does not apply here.

There is code here for detecting when in Dark Mode. Since this is Cocoa code, it should probably be added to _lib/mac/macutil.mm. Finally, the relevant code in clientgui/BOINCGUIApp.cpp, clientgui/SkinManager.cpp and clientgui/BOINCTaskBar.cpp and related header files will need to be updated to get and select the correct icons.

Although I have retired from software development, I have continued to fix critical problems. I do not consider this to fall into that category. When one or more new Mac programmers have been recruited to support BOINC, I would be happy to point them in the right direction to handle this issue, but I am not prepared to fix it myself. This is a relatively simple fix, and might be a good first project for a new Mac BOINC developer to work on.

TheAspens commented 5 years ago

As an update issue #2981 includes commit e33f384329bfda002908c8691c7cd4a596837dcf implements the option to prevent attempting to render in dark mode (which doesn't work) until such a time as wxWidgets suports dark mode fully. The option is described by mac here.

muescha commented 4 years ago

i get a white on white with: boinc_7.14.3_macOSX_x86_64 10.14.6 (18G103) Mojave

Bildschirmfoto 2020-03-05 um 15 47 04 Bildschirmfoto 2020-03-05 um 15 48 18
ssbarnea commented 4 years ago

Can we please do something about this? In its current form the application is almost impossible to use. That is not a "nice-to-have" feature request, if system is in dark-mode, you cannot really read any text on the UI.

CharlieFenton commented 4 years ago

This needs to be addressed within the wxWidgets GUI library. It will be interesting to see if switching to the latest version of wxWidgets (3.1.3) fixes it. The change log for wxWidgets 3.1.3 does list these two items:

Add wxSystemAppearance, notably useful for macOS dark mode checks.

Support for macOS Mojave and later dark mode.

Hopefully, one of the current Mac BOINC developers will make the changes needed to update to the latest version of the wxWidgets in the near future. However, changing the versions of the dependent libraries, and especially wxWidgets, often introduces new bugs, so it requires a fairly extensive round of testing, and often requires developing patches to wxWidgets to fix any new bugs. For that reason, it probably won't happen until after a stable build of BOINC version 7.16.x is released,

AenBleidd commented 4 years ago

We have some custom-drawn elements (e.g. main grid with progress bar) that should be adjusted too to support Dark Mode.

dhopfm commented 4 years ago

Same issue on macOS 10.15.4 but only with BOINC Manager 7.14.3. Version 7.14.2 works fine.

CharlieFenton commented 4 years ago

This is fixed in BOINC 7.16, which tells the OS to not use dark mode for BOINC even when Dark Mode is generally selected. This is a workaround until BOINC can be updated to fully support dark mode.

Unfortunately, that workaround did not make it into BOINC 7.14.3.

muescha commented 4 years ago

i don't find a 7.16 download :(

dhopfm commented 4 years ago

I found 7.16.3 in the download folder. Would be good to have Release Notes to in order to have an idea about stability etc.

muescha commented 4 years ago

7.16.3 is from 29-Sep-2019

CharlieFenton commented 4 years ago

Sorry I was not as clear as I should have been. BOINC 7.16.3 was rejected due to a critical problem. 7.16.4 should be released for alpha testing soon. I should have written: This will be fixed in BOINC 7.16.

CharlieFenton commented 4 years ago

I have released BOINC 7.14.4 for Macintosh which tells the OS to not use dark mode for BOINC even when Dark Mode is generally selected. This workaround allows BOINC to be usable under Dark Mode until BOINC can be updated to fully support dark mode.

jcr- commented 4 years ago

I still had white text issues with both 7.14.4 and 7.16.6 (the latest I could find) in dark mode, However, entering this command to manually force non-dark mode for the bionic UI did work:

defaults write edu.berkeley.boinc NSRequiresAquaSystemAppearance -bool yes

Not this puts the UI of app windows in Light mode; it does not address the menubar icon.

CharlieFenton commented 4 years ago

Both 7.14.4 and 7.16.6 already contain that property in their info.plst property files: ` NSRequiresAquaSystemAppearance

` I haven't tested 7.6.6 on OS 10.15, but I tested 7.14.4 on OS 10.15.4 and it worked correctly for me in dark mode.

CharlieFenton commented 3 years ago

There is an extra wrinkle even if wxWidgets now supports dark mode on Macs. The main BOINC Advanced View displays use BOINCListCtrl, which is derived from wxListCtrl, which is a native control only under MS Windows but not on MacOS or Linux. So the wxWdgets implementation of wxListCtrl probably requires significant modification.

TrevorBurnham commented 3 years ago

I've posted a branch to replace the menubar icons under macOS with light/dark gray ones: https://github.com/BOINC/boinc/pull/4586 I could use some help from someone with more C++ expertise in getting the icons to change out as the system switches between the light/dark modes.