geany / geany-osx

Things needed to bundle Geany for OSX
Other
24 stars 14 forks source link

Dark / light mode Macos #22

Closed pragma-git closed 3 years ago

pragma-git commented 3 years ago

Thanks once more for such a great editor!

Intro

Working in dark mode in the MacOs system (and probably other systems too) it is annoying with a single application that does not adhere, and that does not have an obvious way of changing to dark mode. It is possible that I have missed how to do this

Changing color theme works. BUT, it is only the text area that changes (all the rest of the GUI is light).

Digging around, I found that dark mode is in principle implemented, and that there are indeed two different css:

/Applications/Geany.app/Contents/Resources/share/themes/Mojave-light-solid/gtk-3.0/gtk.css /Applications/Geany.app/Contents/Resources/share/themes/Mojave-light-solid/gtk-3.0/gtk-dark.css but I am not aware of a way to tell Geany which one should be active (gtk.css is on by default)

What works: It is possible to rename gtk-dark.css to gtk.css, and then Geany looks beatiful in Dark mode.

Request: Listen to the system setting, with option to override to dark/light mode from the settings menu. As a last resource (not as good) allow and document a "less hacky" way to change to dark mode, such as a setting in geany.conf

(Tested on Geany 1.36 with GTK+ v3.24.10 and Glib v2.60.6 runtime libraries)

elextr commented 3 years ago

Except for the editing window, Geany follows your GTK theme, so on systems where GTK theming is set by the system (like my Linux Mint here) it just works if your machine is set to a dark theme, so the problem is basically Macos specific where GTK doesn't follow the system theme it seems. Will transfer to the Geany-OSX issues.

codebrainz commented 3 years ago

As a last resource (not as good) allow and document a "less hacky" way to change to dark mode...

If you set the GTK_THEME environment variable you should be able to switch to the dark version, for example setting the environment variable to GTK_THEME=Mojave-light-solid:dark should work. There are a few other ways using settings.ini file and gsettings as well, but I'm not really sure what's available/included in the Macos bundle.

JanAxelssonTest commented 3 years ago

The solution https://github.com/geany/geany-osx/issues/22#issuecomment-772130658 works from command line export GTK_THEME=Mojave-light-solid:dark; open -a geany

BUT, it does not work in normal Mac workflow. That is, double-clicking a file which opens with Geany, makes light mode. Also starting Geany from the dock defaults to light mode

There is a settings.ini in the Macos bundle. Adding the following allows for dark-mode works: gtk-application-prefer-dark-theme=true

I don't think gsettings exist for Macos.

For the average user, I think the best solution would be to keep Macos bundle intact. To reiterate: now two bundle-based alternatives exists (gtk-application-prefer-dark-theme=true, or changing gtk-dark.css file names as in original post https://github.com/geany/geany-osx/issues/22#issue-799806336). At least theoretically, maybe one of these could be jacked into to allow dark-mode setting from inside Geany menus?

Willing to test-drive if you don't have a Mac available

elextr commented 3 years ago

That is, double-clicking a file which opens with Geany, makes light mode. Also starting Geany from the dock defaults to light mode

I'm totally macos illiterate, but I would have thought these can be modified to do the setting of GTK_THEME.

The problem with adding it into a menu in Geany will be that its a macos special since other systems provide their own methods of setting themes, and we don't want conflicts, if its gonna work, it better do it the system way.

A better place to add an option might be in the macos launcher, then it may work in all situations, thats something a macos expert like @techee will have to comment on.

JanAxelssonTest commented 3 years ago

1) I do understand that you wish to keep the code the same, but I do disagree that having the suggested setting would disrupt cross-platform conformity. To clairfy the setting I talk about: I think having the possibility to force light/dark for the single Geany application may be useful for some people (also on platforms where you pick up system setting). Such an option would also solve the Macos issue, without disturbing the cross-platform.

2) Regarding adding the setting in a non-Macos fashion (like from the dock), would not follow the standard, but I understand how you think. One such possibility could be to add an extra Mac-specific setting-menu where settings on Macos are normally situated (under the Geany application name; @techee would know). That way, the normal Geany Edit/Settings menu would not need to be touched. Just a suggestion!

codebrainz commented 3 years ago

From this comment:

The main feature of this release is that I made a few things configurable (probably the most interesting one is the dark/light theme) using a config file which is created when you start Geany under ~/.config/geany/geany_mac.conf. The default value for the theme is to use your macOS settings so if you use the dark theme system-wise, it will be picked automatically for you. Note that if you previously set the theme using the .config/gtk-3.0/settings.ini file, you'll have to remove this file first, otherwise it overrides the settings specified in ~/config/geany/geany_mac.conf.

JanAxelssonTest commented 3 years ago

I can confirm that version 1.37 works as anticipated (problem reported for version 1.36, which I thought was latest).

elextr commented 3 years ago

@pragma-git does it work for you?

techee commented 3 years ago

Basically the quote @codebrainz mentioned should describe how theme picking works - and at least on my machine theme selection works automatically for 1.37.

pragma-git commented 3 years ago

Yes it works very well (sorry I used the wrong account when answering above).