Code Monkey home page Code Monkey logo

auto-dark-mode's Introduction

Note for Windows and macOS users:

In IDEA versions >= 2020.3 the functionality of this plugin already exists out of the box.

Auto Dark Mode IDEA Plugin

Plugin that automatically switches the IDEA theme based on operating system settings. The plugin distinguishes between Light, Dark and High Contrast mode and the theme used for each mode can be customized. This plugin currently works for Windows and macOS.

Linux support is both limited and experimental. At the moment, Linux desktop environments that have an XSettings daemon running are supported. Gtk based desktop environments such as Gnome and Xfce ship with such a daemon out of the box. Users of minimalist window managers (such as i3) can choose to run a daemon shipped with Gnome (gsd-xsettings) or Xfce (xfsettingsd), among many choices.

By default, the following themes are used:

Mode Theme
Light IntelliJ
Dark Darcula
High Contrast High Contrast

Building

./gradlew build
./gradlew buildPlugin

Architecture support

Operating System x86 Support x86_64 Support arm64 Support
Windows ✔️ ✔️
macOS ✔️ ✔️(M1)
Linux ✔️

OS-dependent build components

When Gradle builds the plugin, it will only be able to compile native components for the operating system running the build. For example, macOS toolchains won't be available to someone who is compiling on Windows. For this reason, this plugin depends on artifacts built by a custom GitHub Actions workflow for the platforms which cannot be compiled in the given environment. A custom Gradle plugin downloads these artifacts during the build if necessary.

This step requires a GitHub access token

For Gradle to be able to retrieve the pre-built artifacts, you need to provide a personal access token using the githubAccessToken property in gradle.properties file. The access token only needs to have the permission to read repositories. Be sure to not commit your token.

Requirements for building

With exception to Linux, this plugin only requires that a standard C++ toolchain be installed when building on Windows (i.e. VisualCpp) and an Objective-C++ toolchain when building on macOS (i.e. Gcc or Clang).

At the moment, Linux requires a standard C++ toolchain like Gcc as well as the following packages.

libsigc++-2.0-dev libglibmm-2.4-dev libgtk-3-dev libgtkmm-3.0-dev

Running

You can use the standard runIde task to run this plugin in a sandbox IDE. If you encounter errors like "Directory '[project-folder]/auto-dark-mode/base/build/idea-sandbox/plugins' specified for property 'pluginsDirectory' does not exist.", you might want to try running the task :auto-dark-mode-plugin:runIde instead.

If you experience other issues, you can try a clean environment by running the following command.

./gradlew clean build :auto-dark-mode-plugin:runIde

auto-dark-mode's People

Contributors

incplusplus avatar l0drex avatar lacasseio avatar maicol07 avatar tsbarnes avatar weisj avatar zliuva avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

auto-dark-mode's Issues

Incompatible with IDEA 2021.3

This excellent plugin unfortunately stopped working after updating to IDEA 2021.3 with the following message: "Incompatible: requires IDE build 212.* or earlier"

[Feature Request] Detect system theme with the new libadwaita baked into GNOME 42

GNOME seems to be moving away from GTK themes (which the plugin is relying on to work on Linux) with the newly released GNOME bringing libadwaita and a new Light/Dark switch inside the Settings, but toggling this switch has no effect on JetBrain IDEs with the plugin!

It seems like, this switch only broadcasts the transition signal to apps adopting the new libadwaita, it would be very much appreciated if support for this change is added.

I have attached a screencast demonstrating this, GNOME now considers GTK apps "Legacy" as it seems in the GNOME Tweaks app and GNOME apps ported to libadwaita, take the theme preference from the switch in the Settings.

Thank you for all the work and effort!

Screencast-05-11-2022-15-36-17.mp4

Gradle build may be unstable

The Gradle build isn't very stable for me. The reason for this is beyond my knowledge with Gradle and the Gradle IntelliJ plugin. This can be replicated on the master branch and on the Gnome branch. The goal of the build is to launch the IDE with the built plugin installed.

There are two main issues that I run into when building.

  1. When running ./gradlew build, task :auto-dark-mode-plugin:buildSearchableOptions will fail with the error kotlin.jvm.KotlinReflectionNotSupportedError: Kotlin reflection implementation is not found at runtime. Make sure you have kotlin-reflect.jar in the classpath. Also interesting is that auto-dark-mode-base will also try to run the same task during the build.
    1. :auto-dark-mode-plugin:buildSearchableOptions can also not fail the build while still logging errors.
  2. Running ./gradlew :auto-dark-mode-plugin:runIde will make the build hang on task :auto-dark-mode-base:compileJava > Resolve files of :auto-dark-mode-base:compileClasspath. This also happens when running ./gradlew build. I've checked the system monitor and the build seems to be doing nothing at this point. I've let the build sit for up to 10 minutes and it never will get past that point. Usually by killing the hung-up build and running the same command again, the build proceeds past this issue.

What I then do is use CTRL + C to terminate the build. Running ./gradlew :auto-dark-mode-plugin:runIde again after killing the failed run will then allow the IDE to launch without issue.

Steps to reproduce

  1. Clone the project (pick one of these)
    • git clone https://github.com/weisJ/auto-dark-mode.git && cd auto-dark-mode
    • git clone https://github.com/IncPlusPlus/auto-dark-mode.git -b feature/linux+gnome-support && cd auto-dark-mode
  2. Add your GH access token with githubAccessToken=[your token] in gradle.properties in the root of the project
  3. ./gradlew build
    • The build may hang here on :auto-dark-mode-base:compileJava > Resolve files of :auto-dark-mode-base:compileClasspath. If it does, kill the build and run ./gradlew build again. It should build normally
  4. ./gradlew :auto-dark-mode-plugin:runIde
    • The build may hang here on :auto-dark-mode-base:compileJava > Resolve files of :auto-dark-mode-base:compileClasspath. If it does, kill the build and run ./gradlew :auto-dark-mode-plugin:runIde again. It should build normally

I'm not sure what is causing this behavior. I may just be using Gradle wrong. Is this how I'm supposed to build the project or have I been going about this the wrong way?

Plugin is incompatible with Flatpak distribution of IntelliJ

Hi,

I'm trying your plugin on Pop!OS and Gnome with Android Studio, but I get the following exceptions. It also doesn't work for Intellij Ultimate for me. Any ideas?

Could not load library libauto-dark-mode-linux-gnome.so.

java.lang.UnsatisfiedLinkError: /home/agraphie/.var/app/com.google.AndroidStudio/cache/nativeutils3528096291508/libauto-dark-mode-linux-gnome.so: libgiomm-2.4.so.1: Kann die Shared-Object-Datei nicht öffnen: Datei oder Verzeichnis nicht gefunden
	at java.lang.ClassLoader$NativeLibrary.load(Native Method)
	at java.lang.ClassLoader.loadLibrary0(ClassLoader.java:1946)
	at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1828)
	at java.lang.Runtime.load0(Runtime.java:810)
	at java.lang.System.load(System.java:1088)
	at com.github.weisj.darklaf.platform.NativeUtil.loadLibraryFromJar(NativeUtil.java:104)
	at com.github.weisj.darklaf.platform.AbstractLibrary.loadLibrary(AbstractLibrary.java:65)
	at com.github.weisj.darklaf.platform.AbstractLibrary.updateLibrary(AbstractLibrary.java:53)
	at com.github.weisj.darkmode.platform.linux.gnome.GnomeLibrary.get(GnomeLibrary.java:43)
	at com.github.weisj.darkmode.platform.linux.gnome.GnomeSettings.<clinit>(GnomeSettings.kt:61)
	at com.github.weisj.darkmode.platform.linux.gnome.GnomeSettingsProvider$1.invoke(GnomeSettings.kt:10)
	at com.github.weisj.darkmode.platform.linux.gnome.GnomeSettingsProvider$1.invoke(GnomeSettings.kt:10)
	at kotlin.SynchronizedLazyImpl.getValue(LazyJVM.kt:74)
	at com.github.weisj.darkmode.platform.settings.SingletonSettingsContainerProvider.getContainer(Settings.kt)
	at com.github.weisj.darkmode.platform.settings.SingletonSettingsContainerProvider.create(Settings.kt:16)
	at com.github.weisj.darkmode.AutoDarkModeOptions.<init>(AutoDarkModeOptions.kt:28)
	at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
	at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
	at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
	at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
	at com.intellij.serviceContainer.ConstructorInjectionKt.instantiateUsingPicoContainer(constructorInjection.kt:44)
	at com.intellij.serviceContainer.PlatformComponentManagerImpl.instantiateClassWithConstructorInjection(PlatformComponentManagerImpl.kt:505)
	at com.intellij.serviceContainer.ServiceComponentAdapter.createAndInitialize(ServiceComponentAdapter.kt:52)
	at com.intellij.serviceContainer.ServiceComponentAdapter.doCreateInstance(ServiceComponentAdapter.kt:39)
	at com.intellij.serviceContainer.BaseComponentAdapter.getInstanceUncached(BaseComponentAdapter.kt:110)
	at com.intellij.serviceContainer.BaseComponentAdapter.getInstance(BaseComponentAdapter.kt:72)
	at com.intellij.serviceContainer.BaseComponentAdapter.getInstance$default(BaseComponentAdapter.kt:65)
	at com.intellij.serviceContainer.PlatformComponentManagerImpl.getService(PlatformComponentManagerImpl.kt:288)
	at com.intellij.openapi.components.ServiceManager.getService(ServiceManager.java:18)
	at com.github.weisj.darkmode.AutoDarkMode.<clinit>(AutoDarkMode.kt:105)
	at java.lang.Class.forName0(Native Method)
	at java.lang.Class.forName(Class.java:348)
	at com.intellij.serviceContainer.BaseComponentAdapter.getImplementationClass(BaseComponentAdapter.kt:46)
	at com.intellij.serviceContainer.BaseComponentAdapter.getInstanceUncached(BaseComponentAdapter.kt:105)
	at com.intellij.serviceContainer.BaseComponentAdapter.getInstance(BaseComponentAdapter.kt:72)
	at com.intellij.serviceContainer.BaseComponentAdapter.getInstance$default(BaseComponentAdapter.kt:65)
	at com.intellij.serviceContainer.PlatformComponentManagerImpl.getService(PlatformComponentManagerImpl.kt:288)
	at com.intellij.openapi.components.ServiceManager.getService(ServiceManager.java:18)
	at com.github.weisj.darkmode.AutoDarkModeStartupListener.appFrameCreated(AutoDarkModeStartupListener.kt:10)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:498)
	at com.intellij.util.messages.impl.MessageBusImpl.invokeListener(MessageBusImpl.java:518)
	at com.intellij.util.messages.impl.MessageBusConnectionImpl.deliverMessage(MessageBusConnectionImpl.java:138)
	at com.intellij.util.messages.impl.MessageBusImpl.doPumpMessages(MessageBusImpl.java:438)
	at com.intellij.util.messages.impl.MessageBusImpl.pumpWaitingBuses(MessageBusImpl.java:398)
	at com.intellij.util.messages.impl.MessageBusImpl.pumpMessages(MessageBusImpl.java:388)
	at com.intellij.util.messages.impl.MessageBusImpl.sendMessage(MessageBusImpl.java:372)
	at com.intellij.util.messages.impl.MessageBusImpl.lambda$createTopicHandler$1(MessageBusImpl.java:241)
	at com.sun.proxy.$Proxy51.appFrameCreated(Unknown Source)
	at com.intellij.idea.IdeStarter.main(ApplicationLoader.kt:497)
	at com.intellij.idea.ApplicationLoader$startApp$8$1.run(ApplicationLoader.kt:240)
	at com.intellij.openapi.application.TransactionGuardImpl.performUserActivity(TransactionGuardImpl.java:193)
	at com.intellij.idea.ApplicationLoader$startApp$8.run(ApplicationLoader.kt:239)
	at java.util.concurrent.CompletableFuture.uniRun(CompletableFuture.java:719)
	at java.util.concurrent.CompletableFuture$UniRun.tryFire(CompletableFuture.java:701)
	at java.util.concurrent.CompletableFuture$Completion.run(CompletableFuture.java:456)
	at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:311)
	at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:764)
	at java.awt.EventQueue.access$500(EventQueue.java:98)
	at java.awt.EventQueue$3.run(EventQueue.java:715)
	at java.awt.EventQueue$3.run(EventQueue.java:709)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:74)
	at java.awt.EventQueue.dispatchEvent(EventQueue.java:734)
	at com.intellij.ide.IdeEventQueue.defaultDispatchEvent(IdeEventQueue.java:908)
	at com.intellij.ide.IdeEventQueue._dispatchEvent(IdeEventQueue.java:781)
	at com.intellij.ide.IdeEventQueue.lambda$dispatchEvent$8(IdeEventQueue.java:424)
	at com.intellij.openapi.progress.impl.CoreProgressManager.computePrioritized(CoreProgressManager.java:698)
	at com.intellij.ide.IdeEventQueue.dispatchEvent(IdeEventQueue.java:423)
	at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:205)
	at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)
	at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)
	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
	at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)
java.lang.NoClassDefFoundError: Could not initialize class com.github.weisj.darkmode.platform.linux.gnome.GnomeSettings
	at com.github.weisj.darkmode.platform.linux.gnome.GnomeSettingsProvider$1.invoke(GnomeSettings.kt:10)
	at com.github.weisj.darkmode.platform.linux.gnome.GnomeSettingsProvider$1.invoke(GnomeSettings.kt:10)
	at kotlin.SynchronizedLazyImpl.getValue(LazyJVM.kt:74)
	at com.github.weisj.darkmode.platform.settings.SingletonSettingsContainerProvider.getContainer(Settings.kt)
	at com.github.weisj.darkmode.platform.settings.SingletonSettingsContainerProvider.create(Settings.kt:16)
	at com.github.weisj.darkmode.AutoDarkModeOptions.<init>(AutoDarkModeOptions.kt:28)
	at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
	at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
	at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
	at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
	at com.intellij.serviceContainer.ConstructorInjectionKt.instantiateUsingPicoContainer(constructorInjection.kt:44)
	at com.intellij.serviceContainer.PlatformComponentManagerImpl.instantiateClassWithConstructorInjection(PlatformComponentManagerImpl.kt:505)
	at com.intellij.serviceContainer.ServiceComponentAdapter.createAndInitialize(ServiceComponentAdapter.kt:52)
	at com.intellij.serviceContainer.ServiceComponentAdapter.doCreateInstance(ServiceComponentAdapter.kt:39)
	at com.intellij.serviceContainer.BaseComponentAdapter.getInstanceUncached(BaseComponentAdapter.kt:110)
	at com.intellij.serviceContainer.BaseComponentAdapter.getInstance(BaseComponentAdapter.kt:72)
	at com.intellij.serviceContainer.BaseComponentAdapter.getInstance$default(BaseComponentAdapter.kt:65)
	at com.intellij.serviceContainer.PlatformComponentManagerImpl.getService(PlatformComponentManagerImpl.kt:288)
	at com.intellij.openapi.components.ServiceManager.getService(ServiceManager.java:18)
	at com.github.weisj.darkmode.DarkModeConfigurable.createPanel(DarkModeConfigurable.kt:20)
	at com.intellij.openapi.options.BoundConfigurable$panel$1.compute(BoundConfigurable.kt:21)
	at com.intellij.openapi.options.BoundConfigurable$panel$1.compute(BoundConfigurable.kt:16)
	at com.intellij.openapi.util.ClearableLazyValue.getValue(ClearableLazyValue.java:47)
	at com.intellij.openapi.options.BoundConfigurable.createComponent(BoundConfigurable.kt:29)
	at com.intellij.openapi.options.ex.ConfigurableWrapper.createComponent(ConfigurableWrapper.java:158)
	at com.intellij.openapi.options.ex.ConfigurableCardPanel.lambda$createConfigurableComponent$0(ConfigurableCardPanel.java:74)
	at com.intellij.openapi.application.impl.ApplicationImpl.runReadAction(ApplicationImpl.java:821)
	at com.intellij.openapi.application.ReadAction.compute(ReadAction.java:71)
	at com.intellij.openapi.options.ex.ConfigurableCardPanel.createConfigurableComponent(ConfigurableCardPanel.java:70)
	at com.intellij.openapi.options.ex.ConfigurableCardPanel.create(ConfigurableCardPanel.java:56)
	at com.intellij.openapi.options.newEditor.ConfigurableEditor$1.create(ConfigurableEditor.java:56)
	at com.intellij.openapi.options.newEditor.ConfigurableEditor$1.create(ConfigurableEditor.java:53)
	at com.intellij.ui.CardLayoutPanel.createValue(CardLayoutPanel.java:87)
	at com.intellij.ui.CardLayoutPanel.select(CardLayoutPanel.java:115)
	at com.intellij.ui.CardLayoutPanel.lambda$null$0(CardLayoutPanel.java:131)
	at com.intellij.openapi.application.TransactionGuardImpl$2.run(TransactionGuardImpl.java:309)
	at com.intellij.openapi.application.impl.LaterInvocator$FlushQueue.doRun(LaterInvocator.java:441)
	at com.intellij.openapi.application.impl.LaterInvocator$FlushQueue.runNextEvent(LaterInvocator.java:424)
	at com.intellij.openapi.application.impl.LaterInvocator$FlushQueue.run(LaterInvocator.java:407)
	at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:311)
	at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:764)
	at java.awt.EventQueue.access$500(EventQueue.java:98)
	at java.awt.EventQueue$3.run(EventQueue.java:715)
	at java.awt.EventQueue$3.run(EventQueue.java:709)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:74)
	at java.awt.EventQueue.dispatchEvent(EventQueue.java:734)
	at com.intellij.ide.IdeEventQueue.defaultDispatchEvent(IdeEventQueue.java:908)
	at com.intellij.ide.IdeEventQueue._dispatchEvent(IdeEventQueue.java:781)
	at com.intellij.ide.IdeEventQueue.lambda$dispatchEvent$8(IdeEventQueue.java:424)
	at com.intellij.openapi.progress.impl.CoreProgressManager.computePrioritized(CoreProgressManager.java:687)
	at com.intellij.ide.IdeEventQueue.dispatchEvent(IdeEventQueue.java:423)
	at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:205)
	at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)
	at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:109)
	at java.awt.WaitDispatchSupport$2.run(WaitDispatchSupport.java:190)
	at java.awt.WaitDispatchSupport$4.run(WaitDispatchSupport.java:235)
	at java.awt.WaitDispatchSupport$4.run(WaitDispatchSupport.java:233)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.awt.WaitDispatchSupport.enter(WaitDispatchSupport.java:233)
	at java.awt.Dialog.show(Dialog.java:1077)
	at com.intellij.openapi.ui.impl.DialogWrapperPeerImpl$MyDialog.show(DialogWrapperPeerImpl.java:708)
	at com.intellij.openapi.ui.impl.DialogWrapperPeerImpl.show(DialogWrapperPeerImpl.java:433)
	at com.intellij.openapi.ui.DialogWrapper.doShow(DialogWrapper.java:1698)
	at com.intellij.openapi.ui.DialogWrapper.show(DialogWrapper.java:1657)
	at com.intellij.openapi.options.newEditor.SettingsDialog.lambda$show$0(SettingsDialog.java:86)
	at com.intellij.openapi.application.TransactionGuardImpl.runSyncTransaction(TransactionGuardImpl.java:83)
	at com.intellij.openapi.application.TransactionGuardImpl.submitTransactionAndWait(TransactionGuardImpl.java:149)
	at com.intellij.openapi.options.newEditor.SettingsDialog.show(SettingsDialog.java:86)
	at com.intellij.ide.actions.ShowSettingsUtilImpl.showSettingsDialog(ShowSettingsUtilImpl.java:84)
	at com.intellij.ide.actions.ShowSettingsAction.perform(ShowSettingsAction.java:54)
	at com.intellij.ide.actions.ShowSettingsAction.actionPerformed(ShowSettingsAction.java:41)
	at com.intellij.openapi.actionSystem.ex.ActionUtil$1.run(ActionUtil.java:298)
	at com.intellij.openapi.actionSystem.ex.ActionUtil.performActionDumbAware(ActionUtil.java:315)
	at com.intellij.openapi.actionSystem.impl.ActionMenuItem$ActionTransmitter.lambda$actionPerformed$0(ActionMenuItem.java:293)
	at com.intellij.openapi.wm.impl.FocusManagerImpl.runOnOwnContext(FocusManagerImpl.java:263)
	at com.intellij.openapi.wm.impl.IdeFocusManagerImpl.runOnOwnContext(IdeFocusManagerImpl.java:77)
	at com.intellij.openapi.actionSystem.impl.ActionMenuItem$ActionTransmitter.actionPerformed(ActionMenuItem.java:282)
	at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2022)
	at com.intellij.openapi.actionSystem.impl.ActionMenuItem.lambda$fireActionPerformed$0(ActionMenuItem.java:110)
	at com.intellij.openapi.application.TransactionGuardImpl.runSyncTransaction(TransactionGuardImpl.java:83)
	at com.intellij.openapi.application.TransactionGuardImpl.lambda$submitTransaction$1(TransactionGuardImpl.java:107)
	at com.intellij.openapi.application.TransactionGuardImpl.submitTransaction(TransactionGuardImpl.java:116)
	at com.intellij.openapi.application.TransactionGuard.submitTransaction(TransactionGuard.java:121)
	at com.intellij.openapi.actionSystem.impl.ActionMenuItem.fireActionPerformed(ActionMenuItem.java:110)
	at com.intellij.ui.plaf.beg.BegMenuItemUI.doClick(BegMenuItemUI.java:517)
	at com.intellij.ui.plaf.beg.BegMenuItemUI.access$300(BegMenuItemUI.java:36)
	at com.intellij.ui.plaf.beg.BegMenuItemUI$MyMouseInputHandler.mouseReleased(BegMenuItemUI.java:539)
	at java.awt.Component.processMouseEvent(Component.java:6550)
	at javax.swing.JComponent.processMouseEvent(JComponent.java:3325)
	at java.awt.Component.processEvent(Component.java:6315)
	at java.awt.Container.processEvent(Container.java:2239)
	at java.awt.Component.dispatchEventImpl(Component.java:4899)
	at java.awt.Container.dispatchEventImpl(Container.java:2297)
	at java.awt.Component.dispatchEvent(Component.java:4721)
	at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4904)
	at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4535)
	at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4476)
	at java.awt.Container.dispatchEventImpl(Container.java:2283)
	at java.awt.Window.dispatchEventImpl(Window.java:2746)
	at java.awt.Component.dispatchEvent(Component.java:4721)
	at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:766)
	at java.awt.EventQueue.access$500(EventQueue.java:98)
	at java.awt.EventQueue$3.run(EventQueue.java:715)
	at java.awt.EventQueue$3.run(EventQueue.java:709)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:74)
	at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:84)
	at java.awt.EventQueue$4.run(EventQueue.java:739)
	at java.awt.EventQueue$4.run(EventQueue.java:737)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:74)
	at java.awt.EventQueue.dispatchEvent(EventQueue.java:736)
	at com.intellij.ide.IdeEventQueue.defaultDispatchEvent(IdeEventQueue.java:908)
	at com.intellij.ide.IdeEventQueue.dispatchMouseEvent(IdeEventQueue.java:846)
	at com.intellij.ide.IdeEventQueue._dispatchEvent(IdeEventQueue.java:778)
	at com.intellij.ide.IdeEventQueue.lambda$dispatchEvent$8(IdeEventQueue.java:424)
	at com.intellij.openapi.progress.impl.CoreProgressManager.computePrioritized(CoreProgressManager.java:698)
	at com.intellij.ide.IdeEventQueue.dispatchEvent(IdeEventQueue.java:423)
	at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:205)
	at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)
	at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)
	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
	at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)
``

Exception on Big Sur with IntelliJ 2021.2

I am getting the following exception after updating to IntelliJ 2021.2 and plugin version 1.6.0-2021.2 on Big Sur 11.5.1:
`Could not load library libdarklaf-macos.dylib.

java.io.FileNotFoundException: File /com/github/weisj/darkmode/auto-dark-mode-macos/macos-x86-64/libdarklaf-macos.dylib was not found inside JAR.
	at com.github.weisj.darklaf.platform.NativeUtil.extractFile(NativeUtil.java:153)
	at com.github.weisj.darklaf.platform.NativeUtil.loadLibraryFromJar(NativeUtil.java:141)
	at com.github.weisj.darklaf.platform.NativeUtil.loadLibraryFromJarWithExtraResources(NativeUtil.java:87)
	at com.github.weisj.darklaf.platform.AbstractLibrary.loadLibrary(AbstractLibrary.java:62)
	at com.github.weisj.darklaf.platform.AbstractLibrary.updateLibrary(AbstractLibrary.java:50)
	at com.github.weisj.darkmode.platform.macos.MacOSLibrary.get(MacOSLibrary.java:47)
	at com.github.weisj.darkmode.platform.macos.MacOSThemeMonitorService.isSupported(MacOSThemeMonitorService.kt:37)
	at com.github.weisj.darkmode.platform.ThemeMonitorImpl.<init>(ThemeMonitorImpl.kt:46)
	at com.github.weisj.darkmode.AutoDarkMode.createMonitor(AutoDarkMode.kt:50)
	at com.github.weisj.darkmode.AutoDarkMode.access$createMonitor(AutoDarkMode.kt:44)
	at com.github.weisj.darkmode.AutoDarkMode$monitor$1.invoke(AutoDarkMode.kt:46)
	at com.github.weisj.darkmode.AutoDarkMode$monitor$1.invoke(AutoDarkMode.kt:44)
	at kotlin.SynchronizedLazyImpl.getValue(LazyJVM.kt:74)
	at com.github.weisj.darkmode.platform.settings.UtilKt.letValue(Util.kt:49)
	at com.github.weisj.darkmode.AutoDarkMode.start(AutoDarkMode.kt:57)
	at com.github.weisj.darkmode.AutoDarkMode.pluginLoaded(AutoDarkMode.kt:122)
	at com.github.weisj.darkmode.AutoDarkModePluginListener.pluginLoaded(AutoDarkModePluginListener.kt:34)
	at com.intellij.util.messages.impl.MessageBusImpl.invokeMethod(MessageBusImpl.java:645)
	at com.intellij.util.messages.impl.MessageBusImpl.invokeListener(MessageBusImpl.java:620)
	at com.intellij.util.messages.impl.MessageBusImpl.access$300(MessageBusImpl.java:33)
	at com.intellij.util.messages.impl.MessageBusImpl$MessagePublisher.executeOrAddToQueue(MessageBusImpl.java:208)
	at com.intellij.util.messages.impl.CompositeMessageBus$ToDirectChildrenMessagePublisher.publish(CompositeMessageBus.java:105)
	at com.intellij.util.messages.impl.MessageBusImpl$MessagePublisher.invoke(MessageBusImpl.java:166)
	at com.sun.proxy.$Proxy225.pluginLoaded(Unknown Source)
	at com.intellij.ide.plugins.DynamicPlugins$loadPlugin$1.run(DynamicPlugins.kt:827)
	at com.intellij.openapi.application.impl.ApplicationImpl.runWriteAction(ApplicationImpl.java:936)
	at com.intellij.ide.plugins.DynamicPlugins.loadPlugin(DynamicPlugins.kt:807)
	at com.intellij.ide.plugins.DynamicPlugins.loadPlugin(DynamicPlugins.kt:790)
	at com.intellij.ide.plugins.PluginInstaller.installAndLoadDynamicPlugin(PluginInstaller.java:392)
	at com.intellij.ide.plugins.newui.MyPluginModel.lambda$apply$0(MyPluginModel.java:176)
	at com.intellij.ide.plugins.InstalledPluginsState.trackPluginInstallation(InstalledPluginsState.java:177)
	at com.intellij.ide.plugins.newui.MyPluginModel.apply(MyPluginModel.java:175)
	at com.intellij.ide.plugins.PluginManagerConfigurable.apply(PluginManagerConfigurable.java:1627)
	at com.intellij.openapi.options.ex.ConfigurableWrapper.apply(ConfigurableWrapper.java:179)
	at com.intellij.openapi.options.newEditor.ConfigurableEditor.apply(ConfigurableEditor.java:316)
	at com.intellij.openapi.options.newEditor.SettingsEditor$5.apply(SettingsEditor.java:207)
	at com.intellij.openapi.options.newEditor.ConfigurableEditor$2.actionPerformed(ConfigurableEditor.java:62)
	at java.desktop/javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1967)
	at java.desktop/javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2308)
	at java.desktop/javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:405)
	at java.desktop/javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:262)
	at java.desktop/javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:270)
	at java.desktop/java.awt.Component.processMouseEvent(Component.java:6652)
	at java.desktop/javax.swing.JComponent.processMouseEvent(JComponent.java:3345)
	at java.desktop/java.awt.Component.processEvent(Component.java:6417)
	at java.desktop/java.awt.Container.processEvent(Container.java:2263)
	at java.desktop/java.awt.Component.dispatchEventImpl(Component.java:5027)
	at java.desktop/java.awt.Container.dispatchEventImpl(Container.java:2321)
	at java.desktop/java.awt.Component.dispatchEvent(Component.java:4859)
	at java.desktop/java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4918)
	at java.desktop/java.awt.LightweightDispatcher.processMouseEvent(Container.java:4547)
	at java.desktop/java.awt.LightweightDispatcher.dispatchEvent(Container.java:4488)
	at java.desktop/java.awt.Container.dispatchEventImpl(Container.java:2307)
	at java.desktop/java.awt.Window.dispatchEventImpl(Window.java:2784)
	at java.desktop/java.awt.Component.dispatchEvent(Component.java:4859)
	at java.desktop/java.awt.EventQueue.dispatchEventImpl(EventQueue.java:778)
	at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:727)
	at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:721)
	at java.base/java.security.AccessController.doPrivileged(Native Method)
	at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:85)
	at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:95)
	at java.desktop/java.awt.EventQueue$5.run(EventQueue.java:751)
	at java.desktop/java.awt.EventQueue$5.run(EventQueue.java:749)
	at java.base/java.security.AccessController.doPrivileged(Native Method)
	at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:85)
	at java.desktop/java.awt.EventQueue.dispatchEvent(EventQueue.java:748)
	at com.intellij.ide.IdeEventQueue.defaultDispatchEvent(IdeEventQueue.java:886)
	at com.intellij.ide.IdeEventQueue.dispatchMouseEvent(IdeEventQueue.java:815)
	at com.intellij.ide.IdeEventQueue._dispatchEvent(IdeEventQueue.java:752)
	at com.intellij.ide.IdeEventQueue.lambda$dispatchEvent$7(IdeEventQueue.java:442)
	at com.intellij.openapi.progress.impl.CoreProgressManager.computePrioritized(CoreProgressManager.java:825)
	at com.intellij.ide.IdeEventQueue.lambda$dispatchEvent$8(IdeEventQueue.java:441)
	at com.intellij.openapi.application.impl.ApplicationImpl.runIntendedWriteActionOnCurrentThread(ApplicationImpl.java:794)
	at com.intellij.ide.IdeEventQueue.dispatchEvent(IdeEventQueue.java:493)
	at java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:203)
	at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:124)
	at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:117)
	at java.desktop/java.awt.WaitDispatchSupport$2.run(WaitDispatchSupport.java:190)
	at java.desktop/java.awt.WaitDispatchSupport$4.run(WaitDispatchSupport.java:235)
	at java.desktop/java.awt.WaitDispatchSupport$4.run(WaitDispatchSupport.java:233)
	at java.base/java.security.AccessController.doPrivileged(Native Method)
	at java.desktop/java.awt.WaitDispatchSupport.enter(WaitDispatchSupport.java:233)
	at java.desktop/java.awt.Dialog.show(Dialog.java:1063)
	at com.intellij.openapi.ui.impl.DialogWrapperPeerImpl$MyDialog.show(DialogWrapperPeerImpl.java:699)
	at com.intellij.openapi.ui.impl.DialogWrapperPeerImpl.show(DialogWrapperPeerImpl.java:435)
	at com.intellij.openapi.ui.DialogWrapper.doShow(DialogWrapper.java:1726)
	at com.intellij.openapi.ui.DialogWrapper.show(DialogWrapper.java:1685)
	at com.intellij.ide.actions.ShowSettingsUtilImpl.showSettingsDialog(ShowSettingsUtilImpl.java:90)
	at com.intellij.ide.actions.ShowSettingsAction.perform(ShowSettingsAction.java:55)
	at com.intellij.ui.mac.MacOSApplicationProvider$Worker.lambda$initMacApplication$1(MacOSApplicationProvider.java:80)
	at com.intellij.ui.mac.MacOSApplicationProvider$Worker.lambda$submit$8(MacOSApplicationProvider.java:180)
	at com.intellij.openapi.application.TransactionGuardImpl.runWithWritingAllowed(TransactionGuardImpl.java:214)
	at com.intellij.openapi.application.TransactionGuardImpl.access$200(TransactionGuardImpl.java:21)
	at com.intellij.openapi.application.TransactionGuardImpl$2.run(TransactionGuardImpl.java:196)
	at com.intellij.openapi.application.impl.ApplicationImpl.runIntendedWriteActionOnCurrentThread(ApplicationImpl.java:794)
	at com.intellij.openapi.application.impl.ApplicationImpl.lambda$invokeLater$4(ApplicationImpl.java:350)
	at com.intellij.openapi.application.impl.FlushQueue.doRun(FlushQueue.java:84)
	at com.intellij.openapi.application.impl.FlushQueue.runNextEvent(FlushQueue.java:133)
	at com.intellij.openapi.application.impl.FlushQueue.flushNow(FlushQueue.java:46)
	at com.intellij.openapi.application.impl.FlushQueue$FlushNow.run(FlushQueue.java:189)
	at java.desktop/java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:313)
	at java.desktop/java.awt.EventQueue.dispatchEventImpl(EventQueue.java:776)
	at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:727)
	at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:721)
	at java.base/java.security.AccessController.doPrivileged(Native Method)
	at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:85)
	at java.desktop/java.awt.EventQueue.dispatchEvent(EventQueue.java:746)
	at com.intellij.ide.IdeEventQueue.defaultDispatchEvent(IdeEventQueue.java:886)
	at com.intellij.ide.IdeEventQueue._dispatchEvent(IdeEventQueue.java:755)
	at com.intellij.ide.IdeEventQueue.lambda$dispatchEvent$7(IdeEventQueue.java:442)
	at com.intellij.openapi.progress.impl.CoreProgressManager.computePrioritized(CoreProgressManager.java:825)
	at com.intellij.ide.IdeEventQueue.lambda$dispatchEvent$8(IdeEventQueue.java:441)
	at com.intellij.openapi.application.impl.ApplicationImpl.runIntendedWriteActionOnCurrentThread(ApplicationImpl.java:794)
	at com.intellij.ide.IdeEventQueue.dispatchEvent(IdeEventQueue.java:487)
	at java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:203)
	at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:124)
	at java.desktop/java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:113)
	at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:109)
	at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
	at java.desktop/java.awt.EventDispatchThread.run(EventDispatchThread.java:90)`

The plugin is not working.

Publish 2021.1 release to Github?

Hi, can you please published the 211.* version of this plugin to GitHub for direct download? I only see the 2020.3 version currently

Doesn't work on android studio, osx m1 monterey (works on Idea on the same mac)

On android studio (AS) there is an error on AS startup.

Could not load library libauto-dark-mode-macos.dylib.

java.lang.UnsatisfiedLinkError: /private/var/folders/1c/2jwn_cdx3hs1w57c_xg3yz5w0000gn/T/nativeutils50706038885166/libauto-dark-mode-macos.dylib: dlopen(/private/var/folders/1c/2jwn_cdx3hs1w57c_xg3yz5w0000gn/T/nativeutils50706038885166/libauto-dark-mode-macos.dylib, 0x0001): tried: '/private/var/folders/1c/2jwn_cdx3hs1w57c_xg3yz5w0000gn/T/nativeutils50706038885166/libauto-dark-mode-macos.dylib' (mach-o file, but is an incompatible architecture (have 'x86_64', need 'arm64e')), '/usr/local/lib/libauto-dark-mode-macos.dylib' (no such file), '/usr/lib/libauto-dark-mode-macos.dylib' (no such file)
	at java.base/java.lang.ClassLoader$NativeLibrary.load0(Native Method)
	at java.base/java.lang.ClassLoader$NativeLibrary.load(ClassLoader.java:2442)
	at java.base/java.lang.ClassLoader$NativeLibrary.loadLibrary(ClassLoader.java:2498)
	at java.base/java.lang.ClassLoader.loadLibrary0(ClassLoader.java:2694)
	at java.base/java.lang.ClassLoader.loadLibrary(ClassLoader.java:2627)
	at java.base/java.lang.Runtime.load0(Runtime.java:768)
	at java.base/java.lang.System.load(System.java:1837)
	at com.github.weisj.darklaf.platform.NativeUtil.loadLibraryFromJar(NativeUtil.java:104)
	at com.github.weisj.darklaf.platform.AbstractLibrary.loadLibrary(AbstractLibrary.java:65)
	at com.github.weisj.darklaf.platform.AbstractLibrary.updateLibrary(AbstractLibrary.java:53)
	at com.github.weisj.darkmode.platform.macos.MacOSLibrary.get(MacOSLibrary.java:39)
	at com.github.weisj.darkmode.platform.macos.MacOSThemeMonitorService.isSupported(MacOSThemeMonitorService.kt:37)
	at com.github.weisj.darkmode.platform.ThemeMonitorImpl.<init>(ThemeMonitorImpl.kt:46)
	at com.github.weisj.darkmode.AutoDarkMode.createMonitor(AutoDarkMode.kt:49)
	at com.github.weisj.darkmode.AutoDarkMode.access$createMonitor(AutoDarkMode.kt:43)
	at com.github.weisj.darkmode.AutoDarkMode$monitor$1.invoke(AutoDarkMode.kt:45)
	at com.github.weisj.darkmode.AutoDarkMode$monitor$1.invoke(AutoDarkMode.kt:43)
	at kotlin.SynchronizedLazyImpl.getValue(LazyJVM.kt:74)
	at com.github.weisj.darkmode.platform.settings.UtilKt.letValue(Util.kt:49)
	at com.github.weisj.darkmode.AutoDarkMode.start(AutoDarkMode.kt:56)
	at com.github.weisj.darkmode.AutoDarkModeStartupListener.appFrameCreated(AutoDarkModeStartupListener.kt:34)
	at com.intellij.util.messages.impl.MessageBusImpl.invokeMethod(MessageBusImpl.java:674)
	at com.intellij.util.messages.impl.MessageBusImpl.invokeListener(MessageBusImpl.java:653)
	at com.intellij.util.messages.impl.MessageBusImpl.deliverMessage(MessageBusImpl.java:422)
	at com.intellij.util.messages.impl.MessageBusImpl.pumpWaitingBuses(MessageBusImpl.java:397)
	at com.intellij.util.messages.impl.MessageBusImpl.pumpMessages(MessageBusImpl.java:379)
	at com.intellij.util.messages.impl.MessageBusImpl.access$100(MessageBusImpl.java:33)
	at com.intellij.util.messages.impl.MessageBusImpl$MessagePublisher.invoke(MessageBusImpl.java:185)
	at com.sun.proxy.$Proxy51.appFrameCreated(Unknown Source)
	at com.intellij.idea.IdeStarter.main(IdeStarter.kt:101)
	at com.intellij.idea.ApplicationLoader$startApp$8.run(ApplicationLoader.kt:237)
	at java.base/java.util.concurrent.CompletableFuture$UniRun.tryFire(CompletableFuture.java:783)
	at java.base/java.util.concurrent.CompletableFuture.postComplete(CompletableFuture.java:506)
	at java.base/java.util.concurrent.CompletableFuture.postFire(CompletableFuture.java:610)
	at java.base/java.util.concurrent.CompletableFuture$UniCompose.tryFire(CompletableFuture.java:1085)
	at java.base/java.util.concurrent.CompletableFuture$Completion.run(CompletableFuture.java:478)
	at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
	at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
	at java.base/java.util.concurrent.Executors$PrivilegedThreadFactory$1$1.run(Executors.java:668)
	at java.base/java.util.concurrent.Executors$PrivilegedThreadFactory$1$1.run(Executors.java:665)
	at java.base/java.security.AccessController.doPrivileged(Native Method)
	at java.base/java.util.concurrent.Executors$PrivilegedThreadFactory$1.run(Executors.java:665)
	at java.base/java.lang.Thread.run(Thread.java:829)

Theme doesn't switch on Gnome with IDEA 2020.2.1 base

After updating to IntelliJ 2020.2.1, the plugin doesn't switch themes for me on Gnome. It works fine if I roll back to 2020.2. I'm going to dig into this later today or tomorrow to find the cause. I'll put updates here.

Didn't work on MacOS (tried CLion and Android Studio)

Hi I think this is a really useful plugin!
Unfortunately, I couldn't get it to work on either IDE (Android Studio / CLion) on macOS, is there a tutorial somewhere I'm supposed to follow?

Installed it first on Android studio (during night time) my theme was already dark so I didn't see any changes, the next morning it was still dark (I restarted the IDE).

Installed it later on CLion, during day time, the theme switched to dark (I was expecting to stay on light mode)

The time/timezone on my machine configured properly.

Screen Shot 2020-11-14 at 13 17 39

[Question] What's the future of this plugin past IJ 2020.3 release?

I was reading JetBrain's blog post today on IntelliJ IDEA 2020.3 EAP which covers some of the features coming to the next release.

One of the features highlighted in this post is IDE theme synced with OS settings which seems to natively bring to IJ the feature this plugin brings.

I was just curious what this means for the Auto Dark Mode plugin. Will this be kept around to continue to bring the feature / functionality to older versions of IJ / other IDEs?

Some parts of UI are not updated on theme switch

MacOS Catalina. WebStorm 2020.1. v1.1.0-pre2
I noticed that sometimes some parts of UI are not updated to the respective colour theme.
Please see light toolbars when the dark theme is applied
image

GTK themes list is incomplete

The lists of GTK themes for manual selection don't show all my themes. I was looking at the code and noticed it only shows themes that have a gtk-3.x directory matching the current version. It should include any that have a gtk-3.0 directory as well.

libauto-dark-mode-linux-gtk.so not found

Hi,

I just updated to the latest version on my PyCharm and after a re-launch, I face this error:

.
.
.
2022-05-10 16:16:42,921 [   5485] SEVERE - #c.g.w.d.p.l.g.GtkLibrary - Could not load library libauto-dark-mode-linux-gtk.so.
java.io.FileNotFoundException: File /com/github/weisj/darkmode/auto-dark-mode-linux-gtk/linux-x86-64/libauto-dark-mode-linux-gtk.so was not found inside JAR.
	at com.github.weisj.darklaf.platform.NativeUtil.extractFile(NativeUtil.java:153)
	at com.github.weisj.darklaf.platform.NativeUtil.loadLibraryFromJar(NativeUtil.java:141)
	at com.github.weisj.darklaf.platform.NativeUtil.loadLibraryFromJarWithExtraResources(NativeUtil.java:87)
	at com.github.weisj.darklaf.platform.AbstractLibrary.loadLibrary(AbstractLibrary.java:62)
	at com.github.weisj.darklaf.platform.AbstractLibrary.updateLibrary(AbstractLibrary.java:50)
	at com.github.weisj.darkmode.platform.linux.gtk.GtkLibrary.get(GtkLibrary.java:39)
	at com.github.weisj.darkmode.platform.linux.gtk.GtkSettings.<clinit>(GtkSettings.kt:86)
	at com.github.weisj.darkmode.platform.linux.gtk.GtkSettingsProvider$1.invoke(GtkSettings.kt:34)
	at com.github.weisj.darkmode.platform.linux.gtk.GtkSettingsProvider$1.invoke(GtkSettings.kt:34)
	at kotlin.SynchronizedLazyImpl.getValue(LazyJVM.kt:74)
	at com.github.weisj.darkmode.platform.settings.SingletonSettingsContainerProvider.getContainer(Settings.kt:42)
	at com.github.weisj.darkmode.platform.settings.SingletonSettingsContainerProvider.create(Settings.kt:43)
	at com.github.weisj.darkmode.AutoDarkModeOptions$containers$2$2.invoke(AutoDarkModeOptions.kt:70)
	at com.github.weisj.darkmode.AutoDarkModeOptions$containers$2$2.invoke(AutoDarkModeOptions.kt:70)
	at kotlin.sequences.TransformingSequence$iterator$1.next(Sequences.kt:210)
	at kotlin.sequences.TransformingSequence$iterator$1.next(Sequences.kt:210)
	at kotlin.sequences.SequencesKt___SequencesKt.toCollection(_Sequences.kt:786)
	at kotlin.sequences.SequencesKt___SequencesKt.toMutableList(_Sequences.kt:816)
	at kotlin.sequences.SequencesKt___SequencesKt.toList(_Sequences.kt:807)
	at com.github.weisj.darkmode.AutoDarkModeOptions$containers$2.invoke(AutoDarkModeOptions.kt:72)
	at com.github.weisj.darkmode.AutoDarkModeOptions$containers$2.invoke(AutoDarkModeOptions.kt:66)
	at kotlin.SynchronizedLazyImpl.getValue(LazyJVM.kt:74)
	at com.github.weisj.darkmode.AutoDarkModeOptions.getContainers(AutoDarkModeOptions.kt:66)
	at com.github.weisj.darkmode.AutoDarkModeOptions$properties$2.invoke(AutoDarkModeOptions.kt:75)
	at com.github.weisj.darkmode.AutoDarkModeOptions$properties$2.invoke(AutoDarkModeOptions.kt:74)
	at kotlin.SynchronizedLazyImpl.getValue(LazyJVM.kt:74)
	at com.github.weisj.darkmode.AutoDarkModeOptions.getProperties(AutoDarkModeOptions.kt:74)
	at com.github.weisj.darkmode.AutoDarkModeOptions.loadState(AutoDarkModeOptions.kt:135)
	at com.github.weisj.darkmode.AutoDarkModeOptions.loadState(AutoDarkModeOptions.kt:39)
	at com.intellij.configurationStore.ComponentStoreImpl.doInitComponent(ComponentStoreImpl.kt:441)
	at com.intellij.configurationStore.ComponentStoreImpl.initComponent(ComponentStoreImpl.kt:373)
	at com.intellij.configurationStore.ComponentStoreImpl.initComponent(ComponentStoreImpl.kt:119)
	at com.intellij.configurationStore.ComponentStoreWithExtraComponents.initComponent(ComponentStoreWithExtraComponents.kt:48)
	at com.intellij.serviceContainer.ComponentManagerImpl.initializeComponent$intellij_platform_serviceContainer(ComponentManagerImpl.kt:536)
	at com.intellij.serviceContainer.ServiceComponentAdapter.createAndInitialize(ServiceComponentAdapter.kt:55)
	at com.intellij.serviceContainer.ServiceComponentAdapter.doCreateInstance(ServiceComponentAdapter.kt:41)
	at com.intellij.serviceContainer.BaseComponentAdapter.getInstanceUncached(BaseComponentAdapter.kt:119)
	at com.intellij.serviceContainer.BaseComponentAdapter.getInstance(BaseComponentAdapter.kt:73)
	at com.intellij.serviceContainer.BaseComponentAdapter.getInstance$default(BaseComponentAdapter.kt:66)
	at com.intellij.serviceContainer.ComponentManagerImpl.doGetService(ComponentManagerImpl.kt:610)
	at com.intellij.serviceContainer.ComponentManagerImpl.getService(ComponentManagerImpl.kt:584)
	at com.intellij.openapi.client.ClientAwareComponentManager.getFromSelfOrCurrentSession(ClientAwareComponentManager.kt:37)
	at com.intellij.openapi.client.ClientAwareComponentManager.getService(ClientAwareComponentManager.kt:22)
	at com.github.weisj.darkmode.AutoDarkMode.<clinit>(AutoDarkMode.kt:126)
	at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
	at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
	at java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
	at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:490)
	at com.intellij.serviceContainer.ConstructorInjectionKt.instantiateUsingPicoContainer(constructorInjection.kt:47)
	at com.intellij.serviceContainer.ComponentManagerImpl.instantiateClassWithConstructorInjection(ComponentManagerImpl.kt:891)
	at com.intellij.serviceContainer.ServiceComponentAdapter.createAndInitialize(ServiceComponentAdapter.kt:51)
	at com.intellij.serviceContainer.ServiceComponentAdapter.doCreateInstance(ServiceComponentAdapter.kt:41)
	at com.intellij.serviceContainer.BaseComponentAdapter.getInstanceUncached(BaseComponentAdapter.kt:119)
	at com.intellij.serviceContainer.BaseComponentAdapter.getInstance(BaseComponentAdapter.kt:73)
	at com.intellij.serviceContainer.BaseComponentAdapter.getInstance$default(BaseComponentAdapter.kt:66)
	at com.intellij.serviceContainer.ComponentManagerImpl.doGetService(ComponentManagerImpl.kt:610)
	at com.intellij.serviceContainer.ComponentManagerImpl.getService(ComponentManagerImpl.kt:584)
	at com.intellij.openapi.client.ClientAwareComponentManager.getFromSelfOrCurrentSession(ClientAwareComponentManager.kt:37)
	at com.intellij.openapi.client.ClientAwareComponentManager.getService(ClientAwareComponentManager.kt:22)
	at com.github.weisj.darkmode.AutoDarkModeStartupListener.appFrameCreated(AutoDarkModeStartupListener.kt:33)
	at com.intellij.util.messages.impl.MessageBusImpl.invokeMethod(MessageBusImpl.java:642)
	at com.intellij.util.messages.impl.MessageBusImpl.invokeListener(MessageBusImpl.java:621)
	at com.intellij.util.messages.impl.MessageBusImpl.deliverMessage(MessageBusImpl.java:417)
	at com.intellij.util.messages.impl.MessageBusImpl.pumpWaitingBuses(MessageBusImpl.java:391)
	at com.intellij.util.messages.impl.MessageBusImpl.pumpMessages(MessageBusImpl.java:373)
	at com.intellij.util.messages.impl.MessageBusImpl.access$200(MessageBusImpl.java:34)
	at com.intellij.util.messages.impl.MessageBusImpl$MessagePublisher.invoke(MessageBusImpl.java:180)
	at com.sun.proxy.$Proxy35.appFrameCreated(Unknown Source)
	at com.intellij.idea.IdeStarter.openProjectIfNeeded(IdeStarter.kt:98)
	at com.intellij.idea.IdeStarter.main(IdeStarter.kt:79)
	at com.intellij.idea.ApplicationLoader$initApplication$4.accept(ApplicationLoader.kt:176)
	at com.intellij.idea.ApplicationLoader$initApplication$4.accept(ApplicationLoader.kt)
	at java.base/java.util.concurrent.CompletableFuture$UniAccept.tryFire(CompletableFuture.java:714)
	at java.base/java.util.concurrent.CompletableFuture.postComplete(CompletableFuture.java:506)
	at java.base/java.util.concurrent.CompletableFuture$AsyncRun.run(CompletableFuture.java:1742)
	at java.base/java.util.concurrent.CompletableFuture$AsyncRun.exec(CompletableFuture.java:1728)
	at java.base/java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:290)
	at java.base/java.util.concurrent.ForkJoinPool$WorkQueue.topLevelExec(ForkJoinPool.java:1020)
	at java.base/java.util.concurrent.ForkJoinPool.scan(ForkJoinPool.java:1656)
	at java.base/java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1594)
	at java.base/java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:183)
2022-05-10 16:16:42,977 [   5541] SEVERE - #c.g.w.d.p.l.g.GtkLibrary - PyCharm 2022.1  Build #PC-221.5080.212
2022-05-10 16:16:42,981 [   5545] SEVERE - #c.g.w.d.p.l.g.GtkLibrary - JDK: 11.0.14.1; VM: OpenJDK 64-Bit Server VM; Vendor: JetBrains s.r.o.
2022-05-10 16:16:43,003 [   5567] SEVERE - #c.g.w.d.p.l.g.GtkLibrary - OS: Linux
2022-05-10 16:16:43,006 [   5570] SEVERE - #c.g.w.d.p.l.g.GtkLibrary - Plugin to blame: Auto Dark Mode version: 1.7.0-2022.1

Distro: Fedora 35

gnome-settings-daemon detection doesn't work outside of i3, GNOME, or XFCE

I use sway, which is a Wayland based successor to i3. I still manage light/dark mode with gsettings, but Auto Dark Mode says it's not supported because it's not one of the selected desktop environments. It should work, because the associated gsettings command does indeed return information about the theme.

public static final boolean isGtk = SystemInfo.isGNOME || SystemInfo.isXfce || SystemInfo.isI3;

It appears that SystemInfo in IntelliJ has similar limitations by design. https://github.com/JetBrains/intellij-community/blob/ceb2e26bfe1707dad40b3de02871b14445d8f766/platform/util/src/com/intellij/openapi/util/SystemInfo.java#L67-L81.

I noticed a recent merged PR #54 which expanded the detection and a discussion at #50 (comment) which I think was discussing adding a xdg-desktop-portal component and separate detection.

Unreliable dark mode detection on Catalina.

Actually I think I encountered a bug.

  • Use sunset mode in nightowl
  • Use the laptop after the sunset, ie in dark mode
  • Close the lid
  • Open the lid after the sunrise, the UI is light
  • I needed to test some other stuff, so I switched manually to Dark appearance, but IJ didn't respond to that change. Restarting is the only option.

Maybe I should log that in another issue.

Originally posted by @bric3 in #1 (comment)

Illegal State Exception on macOS 10.15.5

  • OS: macOS 10.15.5
  • IDE: CLion 2020.1.1
  • Default Java: 11.0.2
  • auto-dark-mode Version: 1.2.0

Hi,
I get an Illegal State Exception for auto-dark-mode when I start CLion. I tried to update everything to the newest version, didn't help. I think it happens since the update to auto-dark-mode 1.2.0, but could also be since the new macOS-update.
Here is the stacktrace:

java.lang.IllegalStateException: Could not load library.
	at com.github.weisj.darkmode.platform.AbstractThemeMonitor.<init>(AbstractThemeMonitor.java:22)
	at com.github.weisj.darkmode.AutoDarkMode.createMonitor(AutoDarkMode.java:32)
	at java.base/java.util.Optional.orElseGet(Optional.java:369)
	at com.github.weisj.darkmode.AutoDarkMode.start(AutoDarkMode.java:41)
	at com.github.weisj.darkmode.AutoDarkModeStartupListener.appFrameCreated(AutoDarkModeStartupListener.java:14)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.base/java.lang.reflect.Method.invoke(Method.java:566)
	at com.intellij.util.messages.impl.MessageBusImpl.invokeListener(MessageBusImpl.java:546)
	at com.intellij.util.messages.impl.MessageBusConnectionImpl.deliverMessage(MessageBusConnectionImpl.java:139)
	at com.intellij.util.messages.impl.MessageBusImpl.doPumpMessages(MessageBusImpl.java:465)
	at com.intellij.util.messages.impl.MessageBusImpl.pumpWaitingBuses(MessageBusImpl.java:426)
	at com.intellij.util.messages.impl.MessageBusImpl.pumpMessages(MessageBusImpl.java:415)
	at com.intellij.util.messages.impl.MessageBusImpl.sendMessage(MessageBusImpl.java:397)
	at com.intellij.util.messages.impl.MessageBusImpl.lambda$createTopicHandler$3(MessageBusImpl.java:237)
	at com.sun.proxy.$Proxy40.appFrameCreated(Unknown Source)
	at com.intellij.idea.IdeStarter.main(IdeStarter.kt:103)
	at com.intellij.idea.ApplicationLoader$startApp$8.run(ApplicationLoader.kt:222)
	at java.base/java.util.concurrent.CompletableFuture$UniRun.tryFire(CompletableFuture.java:783)
	at java.base/java.util.concurrent.CompletableFuture.postComplete(CompletableFuture.java:506)
	at java.base/java.util.concurrent.CompletableFuture.postFire(CompletableFuture.java:610)
	at java.base/java.util.concurrent.CompletableFuture$UniCompose.tryFire(CompletableFuture.java:1085)
	at java.base/java.util.concurrent.CompletableFuture$Completion.run(CompletableFuture.java:478)
	at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
	at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
	at java.base/java.lang.Thread.run(Thread.java:834)

Plugin prevents IDE from working (PyCharm Pop!_OS 20.10)

Well, that's about it. If I try to fire PyCharm the splash will appear and then it vanishes. I actually had to remove the plugin manually because I can't get into PyCharm, of course.

The error log has 1657 lines, will add it if requested.

Otherwise, great work! I really hope I can use this plugin!

Make IDEA crash on RHEL 8.5

Greetings!

As the title says, the plugin prevents IDEA IDE from starting. Here's the error message I got:

/home/yoeight/.local/share/JetBrains/Toolbox/apps/IDEA-U/ch-0/213.5744.223/jbr/bin/java: symbol lookup error: /tmp/nativeutils1248496824722005276886558020021/libauto-dark-mode-linux-gnome.so: undefined symbol: _ZN4Glib11MainContext19push_thread_defaultEv

Thanks for your time.

UI freeze upon exit

I have been experiencing UI freezes on closing PyCharm and after a little troubleshooting I noticed they only happen when I enable this plugin!

When plugin is enabled I see this line on my Terminal on closing the IDE (executed by [install-dir]/bin/pycharm.sh):

2022-06-06 23:07:41,892 [ 160834]   WARN - #c.i.d.PerformanceWatcherImpl - UI was frozen for 137071ms, details saved to /home/myusername/.cache/JetBrains/PyCharm2022.1/log/threadDumps-freeze-20220606-230529-PY-221.5787.24-137sec

I have attached the above mentioned file plus idea.log down below, if anything else needed, let me know.
logs.zip

System info:
OS: Linux Fedora 36
DE: GNOME 42 on X11
IDE: PyCharm 2022.1 with the latest version of this plugin

NullPointerException while editing preferences

To be clear, I experienced no issues or loss of functionality from this error, but thought you might want to know about it.

I notified of this error while I was editing preferences before opening a project:

image

After I finished editing, there was a red alert icon next to "Configure" and it when showed me this exception:

java.lang.NullPointerException
	at com.github.weisj.darkmode.platform.AbstractThemeMonitor.install(AbstractThemeMonitor.java:80)
	at com.github.weisj.darkmode.AutoDarkMode.install(AutoDarkMode.kt:94)
	at com.github.weisj.darkmode.AutoDarkModePluginListener.pluginLoaded(AutoDarkModePluginListener.java:14)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.base/java.lang.reflect.Method.invoke(Method.java:566)
	at com.intellij.util.messages.impl.MessageBusImpl.invokeListener(MessageBusImpl.java:546)
	at com.intellij.util.messages.impl.MessageBusConnectionImpl.deliverMessage(MessageBusConnectionImpl.java:139)
	at com.intellij.util.messages.impl.MessageBusImpl.doPumpMessages(MessageBusImpl.java:465)
	at com.intellij.util.messages.impl.MessageBusImpl.pumpWaitingBuses(MessageBusImpl.java:426)
	at com.intellij.util.messages.impl.MessageBusImpl.pumpMessages(MessageBusImpl.java:415)
	at com.intellij.util.messages.impl.MessageBusImpl.sendMessage(MessageBusImpl.java:397)
	at com.intellij.util.messages.impl.MessageBusImpl.lambda$createTopicHandler$3(MessageBusImpl.java:237)
	at com.sun.proxy.$Proxy95.pluginLoaded(Unknown Source)
	at com.intellij.ide.plugins.DynamicPlugins$loadPlugin$1.run(DynamicPlugins.kt:523)
	at com.intellij.openapi.application.impl.ApplicationImpl.runWriteAction(ApplicationImpl.java:976)
	at com.intellij.ide.plugins.DynamicPlugins.loadPlugin(DynamicPlugins.kt:496)
	at com.intellij.ide.plugins.PluginInstaller.installAndLoadDynamicPlugin(PluginInstaller.java:269)
	at com.intellij.ide.plugins.newui.MyPluginModel.lambda$apply$0(MyPluginModel.java:170)
	at com.intellij.ide.plugins.InstalledPluginsState.trackPluginInstallation(InstalledPluginsState.java:172)
	at com.intellij.ide.plugins.newui.MyPluginModel.apply(MyPluginModel.java:169)
	at com.intellij.ide.plugins.PluginManagerConfigurable.apply(PluginManagerConfigurable.java:1656)
	at com.intellij.openapi.options.ex.ConfigurableWrapper.apply(ConfigurableWrapper.java:172)
	at com.intellij.openapi.options.newEditor.ConfigurableEditor.apply(ConfigurableEditor.java:309)
	at com.intellij.openapi.options.newEditor.SettingsEditor$5.apply(SettingsEditor.java:173)
	at com.intellij.openapi.options.newEditor.ConfigurableEditor$2.actionPerformed(ConfigurableEditor.java:59)
	at java.desktop/javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1967)
	at java.desktop/javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2308)
	at java.desktop/javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:405)
	at java.desktop/javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:262)
	at java.desktop/javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:270)
	at java.desktop/java.awt.Component.processMouseEvent(Component.java:6650)
	at java.desktop/javax.swing.JComponent.processMouseEvent(JComponent.java:3345)
	at java.desktop/java.awt.Component.processEvent(Component.java:6415)
	at java.desktop/java.awt.Container.processEvent(Container.java:2263)
	at java.desktop/java.awt.Component.dispatchEventImpl(Component.java:5025)
	at java.desktop/java.awt.Container.dispatchEventImpl(Container.java:2321)
	at java.desktop/java.awt.Component.dispatchEvent(Component.java:4857)
	at java.desktop/java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4918)
	at java.desktop/java.awt.LightweightDispatcher.processMouseEvent(Container.java:4547)
	at java.desktop/java.awt.LightweightDispatcher.dispatchEvent(Container.java:4488)
	at java.desktop/java.awt.Container.dispatchEventImpl(Container.java:2307)
	at java.desktop/java.awt.Window.dispatchEventImpl(Window.java:2773)
	at java.desktop/java.awt.Component.dispatchEvent(Component.java:4857)
	at java.desktop/java.awt.EventQueue.dispatchEventImpl(EventQueue.java:778)
	at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:727)
	at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:721)
	at java.base/java.security.AccessController.doPrivileged(Native Method)
	at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:85)
	at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:95)
	at java.desktop/java.awt.EventQueue$5.run(EventQueue.java:751)
	at java.desktop/java.awt.EventQueue$5.run(EventQueue.java:749)
	at java.base/java.security.AccessController.doPrivileged(Native Method)
	at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:85)
	at java.desktop/java.awt.EventQueue.dispatchEvent(EventQueue.java:748)
	at com.intellij.ide.IdeEventQueue.defaultDispatchEvent(IdeEventQueue.java:974)
	at com.intellij.ide.IdeEventQueue.dispatchMouseEvent(IdeEventQueue.java:912)
	at com.intellij.ide.IdeEventQueue._dispatchEvent(IdeEventQueue.java:844)
	at com.intellij.ide.IdeEventQueue.lambda$null$8(IdeEventQueue.java:449)
	at com.intellij.openapi.progress.impl.CoreProgressManager.computePrioritized(CoreProgressManager.java:741)
	at com.intellij.ide.IdeEventQueue.lambda$dispatchEvent$9(IdeEventQueue.java:448)
	at com.intellij.openapi.application.impl.ApplicationImpl.runIntendedWriteActionOnCurrentThread(ApplicationImpl.java:831)
	at com.intellij.ide.IdeEventQueue.dispatchEvent(IdeEventQueue.java:502)
	at java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:203)
	at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:124)
	at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:117)
	at java.desktop/java.awt.WaitDispatchSupport$2.run(WaitDispatchSupport.java:190)
	at java.desktop/java.awt.WaitDispatchSupport$4.run(WaitDispatchSupport.java:235)
	at java.desktop/java.awt.WaitDispatchSupport$4.run(WaitDispatchSupport.java:233)
	at java.base/java.security.AccessController.doPrivileged(Native Method)
	at java.desktop/java.awt.WaitDispatchSupport.enter(WaitDispatchSupport.java:233)
	at java.desktop/java.awt.Dialog.show(Dialog.java:1063)
	at com.intellij.openapi.ui.impl.DialogWrapperPeerImpl$MyDialog.show(DialogWrapperPeerImpl.java:708)
	at com.intellij.openapi.ui.impl.DialogWrapperPeerImpl.show(DialogWrapperPeerImpl.java:437)
	at com.intellij.openapi.ui.DialogWrapper.doShow(DialogWrapper.java:1685)
	at com.intellij.openapi.ui.DialogWrapper.show(DialogWrapper.java:1644)
	at com.intellij.ide.actions.ShowSettingsUtilImpl.showSettingsDialog(ShowSettingsUtilImpl.java:80)
	at com.intellij.ide.actions.ShowSettingsAction.perform(ShowSettingsAction.java:54)
	at com.intellij.ide.actions.ShowSettingsAction.actionPerformed(ShowSettingsAction.java:41)
	at com.intellij.openapi.actionSystem.ex.ActionUtil.performActionDumbAware(ActionUtil.java:280)
	at com.intellij.openapi.actionSystem.ex.ActionUtil.performActionDumbAwareWithCallbacks(ActionUtil.java:274)
	at com.intellij.ui.popup.ActionPopupStep.performAction(ActionPopupStep.java:223)
	at com.intellij.ui.popup.ActionPopupStep.performAction(ActionPopupStep.java:213)
	at com.intellij.ui.popup.ActionPopupStep.lambda$onChosen$2(ActionPopupStep.java:207)
	at com.intellij.openapi.application.TransactionGuardImpl.performUserActivity(TransactionGuardImpl.java:94)
	at com.intellij.ui.popup.AbstractPopup.lambda$dispose$13(AbstractPopup.java:1454)
	at com.intellij.util.ui.UIUtil.invokeLaterIfNeeded(UIUtil.java:2319)
	at com.intellij.ide.IdeEventQueue.ifFocusEventsInTheQueue(IdeEventQueue.java:188)
	at com.intellij.ide.IdeEventQueue.executeWhenAllFocusEventsLeftTheQueue(IdeEventQueue.java:140)
	at com.intellij.openapi.wm.impl.FocusManagerImpl.doWhenFocusSettlesDown(FocusManagerImpl.java:171)
	at com.intellij.openapi.wm.impl.IdeFocusManagerImpl.doWhenFocusSettlesDown(IdeFocusManagerImpl.java:36)
	at com.intellij.ui.popup.AbstractPopup.dispose(AbstractPopup.java:1450)
	at com.intellij.ui.popup.WizardPopup.dispose(WizardPopup.java:152)
	at com.intellij.ui.popup.list.ListPopupImpl.dispose(ListPopupImpl.java:326)
	at com.intellij.ui.popup.PopupFactoryImpl$ActionGroupPopup.dispose(PopupFactoryImpl.java:301)
	at com.intellij.openapi.util.ObjectNode.lambda$execute$0(ObjectNode.java:111)
	at com.intellij.openapi.util.ObjectTree.executeActionWithRecursiveGuard(ObjectTree.java:184)
	at com.intellij.openapi.util.ObjectNode.execute(ObjectNode.java:71)
	at com.intellij.openapi.util.ObjectTree.executeAll(ObjectTree.java:134)
	at com.intellij.openapi.util.Disposer.dispose(Disposer.java:116)
	at com.intellij.openapi.util.Disposer.dispose(Disposer.java:106)
	at com.intellij.ui.popup.WizardPopup.disposeAllParents(WizardPopup.java:255)
	at com.intellij.ui.popup.list.ListPopupImpl.handleNextStep(ListPopupImpl.java:461)
	at com.intellij.ui.popup.list.ListPopupImpl._handleSelect(ListPopupImpl.java:415)
	at com.intellij.ui.popup.list.ListPopupImpl.handleSelect(ListPopupImpl.java:361)
	at com.intellij.ui.popup.PopupFactoryImpl$ActionGroupPopup.handleSelect(PopupFactoryImpl.java:321)
	at com.intellij.ui.popup.list.ListPopupImpl$MyMouseListener.mouseReleased(ListPopupImpl.java:526)
	at java.desktop/java.awt.AWTEventMulticaster.mouseReleased(AWTEventMulticaster.java:298)
	at java.desktop/java.awt.Component.processMouseEvent(Component.java:6650)
	at java.desktop/javax.swing.JComponent.processMouseEvent(JComponent.java:3345)
	at com.intellij.ui.popup.list.ListPopupImpl$MyList.processMouseEvent(ListPopupImpl.java:583)
	at java.desktop/java.awt.Component.processEvent(Component.java:6415)
	at java.desktop/java.awt.Container.processEvent(Container.java:2263)
	at java.desktop/java.awt.Component.dispatchEventImpl(Component.java:5025)
	at java.desktop/java.awt.Container.dispatchEventImpl(Container.java:2321)
	at java.desktop/java.awt.Component.dispatchEvent(Component.java:4857)
	at java.desktop/java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4918)
	at java.desktop/java.awt.LightweightDispatcher.processMouseEvent(Container.java:4547)
	at java.desktop/java.awt.LightweightDispatcher.dispatchEvent(Container.java:4488)
	at java.desktop/java.awt.Container.dispatchEventImpl(Container.java:2307)
	at java.desktop/java.awt.Window.dispatchEventImpl(Window.java:2773)
	at java.desktop/java.awt.Component.dispatchEvent(Component.java:4857)
	at java.desktop/java.awt.EventQueue.dispatchEventImpl(EventQueue.java:778)
	at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:727)
	at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:721)
	at java.base/java.security.AccessController.doPrivileged(Native Method)
	at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:85)
	at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:95)
	at java.desktop/java.awt.EventQueue$5.run(EventQueue.java:751)
	at java.desktop/java.awt.EventQueue$5.run(EventQueue.java:749)
	at java.base/java.security.AccessController.doPrivileged(Native Method)
	at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:85)
	at java.desktop/java.awt.EventQueue.dispatchEvent(EventQueue.java:748)
	at com.intellij.ide.IdeEventQueue.defaultDispatchEvent(IdeEventQueue.java:974)
	at com.intellij.ide.IdeEventQueue.dispatchMouseEvent(IdeEventQueue.java:912)
	at com.intellij.ide.IdeEventQueue._dispatchEvent(IdeEventQueue.java:844)
	at com.intellij.ide.IdeEventQueue.lambda$null$8(IdeEventQueue.java:449)
	at com.intellij.openapi.progress.impl.CoreProgressManager.computePrioritized(CoreProgressManager.java:741)
	at com.intellij.ide.IdeEventQueue.lambda$dispatchEvent$9(IdeEventQueue.java:448)
	at com.intellij.openapi.application.impl.ApplicationImpl.runIntendedWriteActionOnCurrentThread(ApplicationImpl.java:831)
	at com.intellij.ide.IdeEventQueue.dispatchEvent(IdeEventQueue.java:502)
	at java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:203)
	at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:124)
	at java.desktop/java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:113)
	at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:109)
	at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
	at java.desktop/java.awt.EventDispatchThread.run(EventDispatchThread.java:90)

Linux Mint Cinnamon support

There is no effect when theme is switched on Linux Mint 20.2 Cinnamon (I think it uses GNOME 3). The plugin version is latest. The IDE version is latest from JB website.

Not working in 2023.1 EAP

Hi,
currently, the plugin is marked as incompatible on JetBrains Marketplace with 2023.1. Can you add support for it?
There is also this exception on 2023.1 with the force-enabled plugin:

java.lang.Throwable: java.lang.IllegalStateException: Monitoring is not supported.
	at com.intellij.openapi.diagnostic.Logger.error(Logger.java:202)
	at com.intellij.openapi.diagnostic.Logger.error(Logger.java:206)
	at com.intellij.idea.IdeaLogger.error(IdeaLogger.java:120)
	at com.github.weisj.darkmode.platform.PluginLogger.error(PluginLogger.kt:44)
	at com.github.weisj.darkmode.AutoDarkMode.createMonitor(AutoDarkMode.kt:52)
	at com.github.weisj.darkmode.AutoDarkMode.access$createMonitor(AutoDarkMode.kt:43)
	at com.github.weisj.darkmode.AutoDarkMode$monitor$1.invoke(AutoDarkMode.kt:45)
	at com.github.weisj.darkmode.AutoDarkMode$monitor$1.invoke(AutoDarkMode.kt:45)
	at kotlin.SynchronizedLazyImpl.getValue(LazyJVM.kt:74)
	at com.github.weisj.darkmode.platform.settings.UtilKt.letValue(Util.kt:49)
	at com.github.weisj.darkmode.AutoDarkMode.start(AutoDarkMode.kt:57)
	at com.github.weisj.darkmode.AutoDarkModeStartupListener.appFrameCreated(AutoDarkModeStartupListener.kt:33)
	at com.intellij.util.messages.impl.MessageBusImplKt.invokeMethod(MessageBusImpl.kt:680)
	at com.intellij.util.messages.impl.MessageBusImplKt.invokeListener(MessageBusImpl.kt:644)
	at com.intellij.util.messages.impl.MessageBusImplKt.deliverMessage(MessageBusImpl.kt:415)
	at com.intellij.util.messages.impl.MessageBusImplKt.pumpWaiting(MessageBusImpl.kt:394)
	at com.intellij.util.messages.impl.MessageBusImplKt.access$pumpWaiting(MessageBusImpl.kt:1)
	at com.intellij.util.messages.impl.MessagePublisher.invoke(MessageBusImpl.kt:454)
	at jdk.proxy2/jdk.proxy2.$Proxy47.appFrameCreated(Unknown Source)
	at com.intellij.idea.IdeStarter.openProjectIfNeeded$suspendImpl(IdeStarter.kt:91)
	at com.intellij.idea.IdeStarter.openProjectIfNeeded(IdeStarter.kt)
	at com.intellij.idea.IdeStarter$start$2.invokeSuspend(IdeStarter.kt:72)
	at com.intellij.idea.IdeStarter$start$2.invoke(IdeStarter.kt)
	at com.intellij.idea.IdeStarter$start$2.invoke(IdeStarter.kt)
	at kotlinx.coroutines.intrinsics.UndispatchedKt.startUndispatchedOrReturn(Undispatched.kt:89)
	at kotlinx.coroutines.CoroutineScopeKt.coroutineScope(CoroutineScope.kt:264)
	at com.intellij.idea.IdeStarter.start$suspendImpl(IdeStarter.kt:70)
	at com.intellij.idea.IdeStarter.start(IdeStarter.kt)
	at com.intellij.idea.ApplicationLoader.initApplicationImpl(ApplicationLoader.kt:192)
	at com.intellij.idea.ApplicationLoader.access$initApplicationImpl(ApplicationLoader.kt:1)
	at com.intellij.idea.ApplicationLoader$initApplicationImpl$1.invokeSuspend(ApplicationLoader.kt)
	at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33)
	at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:106)
	at kotlinx.coroutines.scheduling.CoroutineScheduler.runSafely(CoroutineScheduler.kt:570)
	at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.executeTask(CoroutineScheduler.kt:750)
	at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.runWorker(CoroutineScheduler.kt:677)
	at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.run(CoroutineScheduler.kt:664)

Thanks

Not compatible with WebStorm 2022.2

The current version of this plugin at the Marketplace is not compatible with the latest release of WebStorm.

The logs shows the following error:

2022-07-30 23:00:53,882 [    181]   WARN - #c.i.i.p.PluginManager - Problems found loading plugins:
  The Auto Dark Mode (id=com.github.weisj.darkmode, path=~/Library/Application Support/JetBrains/Toolbox/apps/WebStorm/ch-0/222.3345.108/WebStorm.app.plugins/auto-dark-mode-plugin, version=1.7.0-2021.1) plugin Plugin 'Auto Dark Mode' (version '1.7.0-2021.1') is not compatible with the current version of the IDE, because it requires build 221.* or older but the current build is WS-222.3345.108

WebStorm 2022.2
Build #WS-222.3345.108, built on July 22, 2022
Runtime version: 17.0.3+7-b469.32 aarch64
VM: OpenJDK 64-Bit Server VM by JetBrains s.r.o.
macOS 12.5

Compatiable issue with latest CLion

The CLion said:
Plugin Error: Plugin "Auto Dark Mode" is incompatible (until build 201.SNAPSHOT < CL-202.6250.12).
Please tell me how can I fix this issue?

Support for Intellij 2021.2

Hey, first of all thanks for this great plugin! As the title states, the plugin is marked as incompatible after upgrading to Intellij 2021.2 (Pycharm, CLion). Not sure if that has technical reasons or just requires an update of the manifest. It would be fantastic to see an update on this as this is the only way I found so far that enables the automatic theme switching behaviour under Gnome.

Wrong 'Editor Theme' is applied when switching to dark mode

I have this amazing plugin on Android Studio Arctic Fox (2020.3.1) running on Ubuntu 21.04 (GNOME 3.38.5) and only one minor issue, as the title suggests the wrong editor theme is applied after auto-switching to dark mode!

I have selected "Dracula" as my night 'IDE Theme' and a customized color scheme for my 'Editor Theme' but when switching, 'Dracula' is applied as both the IDE and the Editor theme!

MacOS Auto settings is treated as dark mode

Thank you for your great job!
I've tried 1.1.0-pre on MacOS 10.15.4 and it seems like Auto appearance setting is treated as dark mode even if it is not a late evening and light mode is automatically set by the operating system. Can you please check?

Exception repeatedly happens on M1 macOS

Exception throws every time I start DataGrip. I believe it works on my other JetBrains IDEs.

OS: macOS Big Sur 11.4
Arch: Apple M1

Could not load library libauto-dark-mode-macos.dylib.

java.lang.UnsatisfiedLinkError: /private/var/folders/m6/51kww85d01s9s1dwdrx_51880000gn/T/nativeutils232039527520916/libauto-dark-mode-macos.dylib: dlopen(/private/var/folders/m6/51kww85d01s9s1dwdrx_51880000gn/T/nativeutils232039527520916/libauto-dark-mode-macos.dylib, 1): no suitable image found.  Did find:
	/private/var/folders/m6/51kww85d01s9s1dwdrx_51880000gn/T/nativeutils232039527520916/libauto-dark-mode-macos.dylib: mach-o, but wrong architecture
	/private/var/folders/m6/51kww85d01s9s1dwdrx_51880000gn/T/nativeutils232039527520916/libauto-dark-mode-macos.dylib: mach-o, but wrong architecture
	at java.base/java.lang.ClassLoader$NativeLibrary.load0(Native Method)
	at java.base/java.lang.ClassLoader$NativeLibrary.load(ClassLoader.java:2442)
	at java.base/java.lang.ClassLoader$NativeLibrary.loadLibrary(ClassLoader.java:2498)
	at java.base/java.lang.ClassLoader.loadLibrary0(ClassLoader.java:2694)
	at java.base/java.lang.ClassLoader.loadLibrary(ClassLoader.java:2627)
	at java.base/java.lang.Runtime.load0(Runtime.java:768)
	at java.base/java.lang.System.load(System.java:1837)
	at com.github.weisj.darklaf.platform.NativeUtil.loadLibraryFromJar(NativeUtil.java:104)
	at com.github.weisj.darklaf.platform.AbstractLibrary.loadLibrary(AbstractLibrary.java:65)
	at com.github.weisj.darklaf.platform.AbstractLibrary.updateLibrary(AbstractLibrary.java:53)
	at com.github.weisj.darkmode.platform.macos.MacOSLibrary.get(MacOSLibrary.java:39)
	at com.github.weisj.darkmode.platform.macos.MacOSThemeMonitorService.isSupported(MacOSThemeMonitorService.kt:37)
	at com.github.weisj.darkmode.platform.ThemeMonitorImpl.<init>(ThemeMonitorImpl.kt:46)
	at com.github.weisj.darkmode.AutoDarkMode.createMonitor(AutoDarkMode.kt:49)
	at com.github.weisj.darkmode.AutoDarkMode.access$createMonitor(AutoDarkMode.kt:43)
	at com.github.weisj.darkmode.AutoDarkMode$monitor$1.invoke(AutoDarkMode.kt:45)
	at com.github.weisj.darkmode.AutoDarkMode$monitor$1.invoke(AutoDarkMode.kt:43)
	at kotlin.SynchronizedLazyImpl.getValue(LazyJVM.kt:74)
	at com.github.weisj.darkmode.platform.settings.UtilKt.letValue(Util.kt:49)
	at com.github.weisj.darkmode.AutoDarkMode.start(AutoDarkMode.kt:56)
	at com.github.weisj.darkmode.AutoDarkModeStartupListener.appFrameCreated(AutoDarkModeStartupListener.kt:34)
	at com.intellij.util.messages.impl.MessageBusImpl.invokeMethod(MessageBusImpl.java:674)
	at com.intellij.util.messages.impl.MessageBusImpl.invokeListener(MessageBusImpl.java:653)
	at com.intellij.util.messages.impl.MessageBusImpl.deliverMessage(MessageBusImpl.java:422)
	at com.intellij.util.messages.impl.MessageBusImpl.pumpWaitingBuses(MessageBusImpl.java:397)
	at com.intellij.util.messages.impl.MessageBusImpl.pumpMessages(MessageBusImpl.java:379)
	at com.intellij.util.messages.impl.MessageBusImpl.access$100(MessageBusImpl.java:33)
	at com.intellij.util.messages.impl.MessageBusImpl$MessagePublisher.invoke(MessageBusImpl.java:185)
	at com.sun.proxy.$Proxy35.appFrameCreated(Unknown Source)
	at com.intellij.idea.IdeStarter.main(IdeStarter.kt:101)
	at com.intellij.idea.ApplicationLoader$startApp$8.run(ApplicationLoader.kt:237)
	at java.base/java.util.concurrent.CompletableFuture$UniRun.tryFire(CompletableFuture.java:783)
	at java.base/java.util.concurrent.CompletableFuture.postComplete(CompletableFuture.java:506)
	at java.base/java.util.concurrent.CompletableFuture.postFire(CompletableFuture.java:610)
	at java.base/java.util.concurrent.CompletableFuture$UniCompose.tryFire(CompletableFuture.java:1085)
	at java.base/java.util.concurrent.CompletableFuture$Completion.run(CompletableFuture.java:478)
	at com.intellij.idea.ApplicationLoader$startApp$nonEdtExecutor$1.execute(ApplicationLoader.kt:135)
	at java.base/java.util.concurrent.CompletableFuture$UniCompletion.claim(CompletableFuture.java:568)
	at java.base/java.util.concurrent.CompletableFuture$UniCompose.tryFire(CompletableFuture.java:1069)
	at java.base/java.util.concurrent.CompletableFuture.postComplete(CompletableFuture.java:506)
	at java.base/java.util.concurrent.CompletableFuture$AsyncRun.run(CompletableFuture.java:1742)
	at com.intellij.util.concurrency.BoundedTaskExecutor.doRun(BoundedTaskExecutor.java:216)
	at com.intellij.util.concurrency.BoundedTaskExecutor.access$200(BoundedTaskExecutor.java:27)
	at com.intellij.util.concurrency.BoundedTaskExecutor$1.execute(BoundedTaskExecutor.java:195)
	at com.intellij.util.concurrency.BoundedTaskExecutor$1.run(BoundedTaskExecutor.java:187)
	at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
	at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
	at java.base/java.util.concurrent.Executors$PrivilegedThreadFactory$1$1.run(Executors.java:668)
	at java.base/java.util.concurrent.Executors$PrivilegedThreadFactory$1$1.run(Executors.java:665)
	at java.base/java.security.AccessController.doPrivileged(Native Method)
	at java.base/java.util.concurrent.Executors$PrivilegedThreadFactory$1.run(Executors.java:665)
	at java.base/java.lang.Thread.run(Thread.java:834)

Updating LAF causes issues down the road

Occurs on every startup, but changing still works. Maybe too early?

java.lang.NullPointerException
	at com.intellij.openapi.wm.impl.IdeRootPane.updateStatusBarVisibility(IdeRootPane.kt:387)
	at com.intellij.openapi.wm.impl.IdeRootPane.uiSettingsChanged(IdeRootPane.kt:452)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.base/java.lang.reflect.Method.invoke(Method.java:568)
	at com.intellij.util.EventDispatcher.dispatchVoidMethod(EventDispatcher.java:120)
	at com.intellij.util.EventDispatcher.lambda$createMulticaster$1(EventDispatcher.java:85)
	at jdk.proxy2/jdk.proxy2.$Proxy25.uiSettingsChanged(Unknown Source)
	at com.intellij.ide.ui.UISettings.fireUISettingsChanged(UISettings.kt:672)
	at com.intellij.ide.ui.laf.LafManagerImpl.setLookAndFeelImpl(LafManagerImpl.kt:539)
	at com.intellij.ide.ui.laf.LafManagerImpl.setCurrentLookAndFeel(LafManagerImpl.kt:516)
	at com.intellij.ide.ui.LafManager.setCurrentLookAndFeel(LafManager.java:40)
	at com.intellij.ide.actions.QuickChangeLookAndFeel.switchLafAndUpdateUI(QuickChangeLookAndFeel.java:102)
	at com.intellij.ide.actions.QuickChangeLookAndFeel.switchLafAndUpdateUI(QuickChangeLookAndFeel.java:93)
	at com.github.weisj.darkmode.AutoDarkMode.updateLaf(AutoDarkMode.kt:108)
	at com.github.weisj.darkmode.AutoDarkMode.access$updateLaf(AutoDarkMode.kt:43)
	at com.github.weisj.darkmode.AutoDarkMode$themeChanged$1.invoke(AutoDarkMode.kt:87)
	at com.github.weisj.darkmode.AutoDarkMode$themeChanged$1.invoke(AutoDarkMode.kt:83)
	at com.github.weisj.darkmode.AutoDarkMode.scheduleRequest$lambda$1(AutoDarkMode.kt:120)
	at com.intellij.util.concurrency.QueueProcessor.runSafely(QueueProcessor.java:249)
	at com.intellij.util.Alarm$Request.runSafely(Alarm.java:365)
	at com.intellij.util.Alarm$Request.run(Alarm.java:354)
	at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:539)
	at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
	at com.intellij.util.concurrency.SchedulingWrapper$MyScheduledFutureTask.run(SchedulingWrapper.java:272)
	at com.intellij.openapi.application.TransactionGuardImpl.runWithWritingAllowed(TransactionGuardImpl.java:209)
	at com.intellij.openapi.application.TransactionGuardImpl.access$100(TransactionGuardImpl.java:21)
	at com.intellij.openapi.application.TransactionGuardImpl$1.run(TransactionGuardImpl.java:191)
	at com.intellij.openapi.application.impl.ApplicationImpl.runIntendedWriteActionOnCurrentThread(ApplicationImpl.java:831)
	at com.intellij.openapi.application.impl.ApplicationImpl$3.run(ApplicationImpl.java:456)
	at com.intellij.openapi.application.impl.FlushQueue.doRun(FlushQueue.java:79)
	at com.intellij.openapi.application.impl.FlushQueue.runNextEvent(FlushQueue.java:122)
	at com.intellij.openapi.application.impl.FlushQueue.flushNow(FlushQueue.java:41)
	at java.desktop/java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:318)
	at java.desktop/java.awt.EventQueue.dispatchEventImpl(EventQueue.java:788)
	at java.desktop/java.awt.EventQueue$3.run(EventQueue.java:739)
	at java.desktop/java.awt.EventQueue$3.run(EventQueue.java:731)
	at java.base/java.security.AccessController.doPrivileged(AccessController.java:399)
	at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:86)
	at java.desktop/java.awt.EventQueue.dispatchEvent(EventQueue.java:758)
	at com.intellij.ide.IdeEventQueue.defaultDispatchEvent(IdeEventQueue.kt:667)
	at com.intellij.ide.IdeEventQueue._dispatchEvent$lambda$7(IdeEventQueue.kt:571)
	at com.intellij.openapi.application.impl.ApplicationImpl.withoutImplicitRead(ApplicationImpl.java:1446)
	at com.intellij.ide.IdeEventQueue._dispatchEvent(IdeEventQueue.kt:571)
	at com.intellij.ide.IdeEventQueue.access$_dispatchEvent(IdeEventQueue.kt:68)
	at com.intellij.ide.IdeEventQueue$dispatchEvent$processEventRunnable$1$1$1.compute(IdeEventQueue.kt:349)
	at com.intellij.ide.IdeEventQueue$dispatchEvent$processEventRunnable$1$1$1.compute(IdeEventQueue.kt:348)
	at com.intellij.openapi.progress.impl.CoreProgressManager.computePrioritized(CoreProgressManager.java:787)
	at com.intellij.ide.IdeEventQueue$dispatchEvent$processEventRunnable$1$1.invoke(IdeEventQueue.kt:348)
	at com.intellij.ide.IdeEventQueue$dispatchEvent$processEventRunnable$1$1.invoke(IdeEventQueue.kt:343)
	at com.intellij.ide.IdeEventQueueKt.performActivity$lambda$1(IdeEventQueue.kt:995)
	at com.intellij.openapi.application.TransactionGuardImpl.performActivity(TransactionGuardImpl.java:105)
	at com.intellij.ide.IdeEventQueueKt.performActivity(IdeEventQueue.kt:995)
	at com.intellij.ide.IdeEventQueue.dispatchEvent$lambda$4(IdeEventQueue.kt:343)
	at com.intellij.openapi.application.impl.ApplicationImpl.runIntendedWriteActionOnCurrentThread(ApplicationImpl.java:831)
	at com.intellij.ide.IdeEventQueue.dispatchEvent(IdeEventQueue.kt:385)
	at java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:207)
	at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:128)
	at java.desktop/java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:117)
	at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:113)
	at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:105)
	at java.desktop/java.awt.EventDispatchThread.run(EventDispatchThread.java:92)

libauto-dark-mode-linux-gtk-x86-64.so GLIBC version for Ubuntu 20.04

Running the plugin with GoLand 2023.1 produces the following error:


java.lang.UnsatisfiedLinkError: /tmp/com-weisj-darklaf-nativeutils-auto-dark-mode-linux-gtk240790328896913605648039264434359/libauto-dark-mode-linux-gtk-x86-64.so: /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.34' not found (required by /tmp/com-weisj-darklaf-nativeutils-auto-dark-mode-linux-gtk240790328896913605648039264434359/libauto-dark-mode-linux-gtk-x86-64.so)
	at java.base/jdk.internal.loader.NativeLibraries.load(Native Method)
	at java.base/jdk.internal.loader.NativeLibraries$NativeLibraryImpl.open(NativeLibraries.java:388)
	at java.base/jdk.internal.loader.NativeLibraries.loadLibrary(NativeLibraries.java:232)
	at java.base/jdk.internal.loader.NativeLibraries.loadLibrary(NativeLibraries.java:174)
	at java.base/java.lang.ClassLoader.loadLibrary(ClassLoader.java:2389)
	at java.base/java.lang.Runtime.load0(Runtime.java:755)
	at java.base/java.lang.System.load(System.java:1953)
	at com.github.weisj.darklaf.nativeutil.NativeUtil.doLoadLibraryFromJar(NativeUtil.java:171)
	at com.github.weisj.darklaf.nativeutil.NativeUtil.loadLibraryFromJar(NativeUtil.java:149)
	at com.github.weisj.darklaf.nativeutil.AbstractLibrary.loadLibrary(AbstractLibrary.java:66)
	at com.github.weisj.darklaf.nativeutil.AbstractLibrary.updateLibrary(AbstractLibrary.java:48)
	at com.github.weisj.darkmode.platform.linux.gtk.GtkLibrary.get(GtkLibrary.java:46)
	at com.github.weisj.darkmode.platform.linux.gtk.GtkSettings.initSettings(GtkSettings.kt:102)
	at com.github.weisj.darkmode.platform.linux.gtk.GtkSettings.<clinit>(GtkSettings.kt:97)
	at com.github.weisj.darkmode.platform.linux.gtk.GtkSettingsProvider$1.invoke(GtkSettings.kt:35)
	at com.github.weisj.darkmode.platform.linux.gtk.GtkSettingsProvider$1.invoke(GtkSettings.kt:35)
	at kotlin.SynchronizedLazyImpl.getValue(LazyJVM.kt:74)
	at com.github.weisj.darkmode.platform.settings.SingletonSettingsContainerProvider.getContainer(Settings.kt:46)
	at com.github.weisj.darkmode.platform.settings.SingletonSettingsContainerProvider.create(Settings.kt:48)
	at com.github.weisj.darkmode.AutoDarkModeOptions$initContainers$2.invoke(AutoDarkModeOptions.kt:77)
	at com.github.weisj.darkmode.AutoDarkModeOptions$initContainers$2.invoke(AutoDarkModeOptions.kt:77)
	at kotlin.sequences.TransformingSequence$iterator$1.next(Sequences.kt:210)
	at kotlin.sequences.TransformingSequence$iterator$1.next(Sequences.kt:210)
	at kotlin.sequences.SequencesKt___SequencesKt.toCollection(_Sequences.kt:786)
	at kotlin.sequences.SequencesKt___SequencesKt.toMutableList(_Sequences.kt:816)
	at kotlin.sequences.SequencesKt___SequencesKt.toList(_Sequences.kt:807)
	at com.github.weisj.darkmode.AutoDarkModeOptions.initContainers(AutoDarkModeOptions.kt:79)
	at com.github.weisj.darkmode.AutoDarkModeOptions.loadState(AutoDarkModeOptions.kt:130)
	at com.github.weisj.darkmode.AutoDarkModeOptions.loadState(AutoDarkModeOptions.kt:39)
	at com.intellij.configurationStore.ComponentStoreImpl.doInitComponent(ComponentStoreImpl.kt:435)
	at com.intellij.configurationStore.ComponentStoreImpl.initComponent(ComponentStoreImpl.kt:368)
	at com.intellij.configurationStore.ComponentStoreImpl.initComponent(ComponentStoreImpl.kt:119)
	at com.intellij.configurationStore.ComponentStoreWithExtraComponents.initComponent(ComponentStoreWithExtraComponents.kt:46)
	at com.intellij.serviceContainer.ComponentManagerImpl.initializeComponent$intellij_platform_serviceContainer(ComponentManagerImpl.kt:622)
	at com.intellij.serviceContainer.ServiceComponentAdapter.createAndInitialize(ServiceComponentAdapter.kt:47)
	at com.intellij.serviceContainer.ServiceComponentAdapter.doCreateInstance(ServiceComponentAdapter.kt:39)
	at com.intellij.serviceContainer.BaseComponentAdapter.doCreateInstance(BaseComponentAdapter.kt:154)
	at com.intellij.serviceContainer.BaseComponentAdapter.createInstance$lambda$1(BaseComponentAdapter.kt:133)
	at com.intellij.openapi.progress.Cancellation.computeInNonCancelableSection(Cancellation.java:95)
	at com.intellij.serviceContainer.BaseComponentAdapter.createInstance(BaseComponentAdapter.kt:132)
	at com.intellij.serviceContainer.BaseComponentAdapter.getInstance(BaseComponentAdapter.kt:92)
	at com.intellij.serviceContainer.ComponentManagerImpl.doGetService(ComponentManagerImpl.kt:714)
	at com.intellij.serviceContainer.ComponentManagerImpl.getService(ComponentManagerImpl.kt:670)
	at com.github.weisj.darkmode.AutoDarkMode.<clinit>(AutoDarkMode.kt:138)
	at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
	at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:77)
	at java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
	at java.base/java.lang.reflect.Constructor.newInstanceWithCaller(Constructor.java:499)
	at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:480)
	at com.intellij.serviceContainer.ConstructorInjectionKt.instantiateUsingPicoContainer(constructorInjection.kt:54)
	at com.intellij.serviceContainer.ComponentManagerImpl.instantiateClassWithConstructorInjection(ComponentManagerImpl.kt:1041)
	at com.intellij.serviceContainer.ServiceComponentAdapter.createAndInitialize(ServiceComponentAdapter.kt:43)
	at com.intellij.serviceContainer.ServiceComponentAdapter.doCreateInstance(ServiceComponentAdapter.kt:39)
	at com.intellij.serviceContainer.BaseComponentAdapter.doCreateInstance(BaseComponentAdapter.kt:154)
	at com.intellij.serviceContainer.BaseComponentAdapter.createInstance$lambda$1(BaseComponentAdapter.kt:133)
	at com.intellij.openapi.progress.Cancellation.computeInNonCancelableSection(Cancellation.java:99)
	at com.intellij.serviceContainer.BaseComponentAdapter.createInstance(BaseComponentAdapter.kt:132)
	at com.intellij.serviceContainer.BaseComponentAdapter.getInstance(BaseComponentAdapter.kt:92)
	at com.intellij.serviceContainer.ComponentManagerImpl.doGetService(ComponentManagerImpl.kt:714)
	at com.intellij.serviceContainer.ComponentManagerImpl.getService(ComponentManagerImpl.kt:670)
	at com.github.weisj.darkmode.AutoDarkModeStartupListener.appFrameCreated(AutoDarkModeStartupListener.kt:33)
	at com.intellij.util.messages.impl.MessageBusImplKt.invokeMethod(MessageBusImpl.kt:680)
	at com.intellij.util.messages.impl.MessageBusImplKt.invokeListener(MessageBusImpl.kt:644)
	at com.intellij.util.messages.impl.MessageBusImplKt.deliverMessage(MessageBusImpl.kt:415)
	at com.intellij.util.messages.impl.MessageBusImplKt.pumpWaiting(MessageBusImpl.kt:394)
	at com.intellij.util.messages.impl.MessageBusImplKt.access$pumpWaiting(MessageBusImpl.kt:1)
	at com.intellij.util.messages.impl.MessagePublisher.invoke(MessageBusImpl.kt:454)
	at jdk.proxy2/jdk.proxy2.$Proxy48.appFrameCreated(Unknown Source)
	at com.intellij.idea.IdeStarter.openProjectIfNeeded$suspendImpl(IdeStarter.kt:89)
	at com.intellij.idea.IdeStarter.openProjectIfNeeded(IdeStarter.kt)
	at com.intellij.idea.IdeStarter$start$2.invokeSuspend(IdeStarter.kt:70)
	at com.intellij.idea.IdeStarter$start$2.invoke(IdeStarter.kt)
	at com.intellij.idea.IdeStarter$start$2.invoke(IdeStarter.kt)
	at kotlinx.coroutines.intrinsics.UndispatchedKt.startUndispatchedOrReturn(Undispatched.kt:89)
	at kotlinx.coroutines.CoroutineScopeKt.coroutineScope(CoroutineScope.kt:264)
	at com.intellij.idea.IdeStarter.start$suspendImpl(IdeStarter.kt:67)
	at com.intellij.idea.IdeStarter.start(IdeStarter.kt)
	at com.intellij.idea.ApplicationLoader.initApplicationImpl(ApplicationLoader.kt:191)
	at com.intellij.idea.ApplicationLoader.access$initApplicationImpl(ApplicationLoader.kt:1)
	at com.intellij.idea.ApplicationLoader$initApplicationImpl$1.invokeSuspend(ApplicationLoader.kt)
	at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33)
	at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:106)
	at kotlinx.coroutines.scheduling.CoroutineScheduler.runSafely(CoroutineScheduler.kt:570)
	at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.executeTask(CoroutineScheduler.kt:750)
	at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.runWorker(CoroutineScheduler.kt:677)
	at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.run(CoroutineScheduler.kt:664)

I am using it on Ubuntu 20.04 which has the GLIBC version of 2.31 by default.

ldd (Ubuntu GLIBC 2.31-0ubuntu9.9) 2.31
Copyright (C) 2020 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
Written by Roland McGrath and Ulrich Drepper.

I would appreciate it if you redistribute the plugin with 2.31 instead of 2.34 for GLIBC.

[IDEA 2020.2] Plugin doesn't seem to save preferences

Hey,

first of all thank you for your plugin, it is exactly what I was looking for.

However, I'm facing the problem that your Plugin always resets it's settings each start,
which makes it quite unusable at the moment.

I'm using IDEA 2020.2 Ultimate, if that is relevant.
Maybe someone else is facing the same problem?

Regards :)

Exception on Rider 2020.3.3

I started getting an exception on Rider 2020.3.3. It started after the plugin is updated. It happens immediately on app launch.

java.util.concurrent.CompletionException: java.lang.NoClassDefFoundError: com/github/weisj/darkmode/platform/AbstractThemeMonitor
	at java.base/java.util.concurrent.CompletableFuture.encodeThrowable(CompletableFuture.java:314)
	at java.base/java.util.concurrent.CompletableFuture.completeThrowable(CompletableFuture.java:319)
	at java.base/java.util.concurrent.CompletableFuture$UniRun.tryFire(CompletableFuture.java:787)
	at java.base/java.util.concurrent.CompletableFuture.postComplete(CompletableFuture.java:506)
	at java.base/java.util.concurrent.CompletableFuture.postFire(CompletableFuture.java:610)
	at java.base/java.util.concurrent.CompletableFuture$UniCompose.tryFire(CompletableFuture.java:1085)
	at java.base/java.util.concurrent.CompletableFuture$Completion.run(CompletableFuture.java:478)
	at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
	at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
	at java.base/java.util.concurrent.Executors$PrivilegedThreadFactory$1$1.run(Executors.java:668)
	at java.base/java.util.concurrent.Executors$PrivilegedThreadFactory$1$1.run(Executors.java:665)
	at java.base/java.security.AccessController.doPrivileged(Native Method)
	at java.base/java.util.concurrent.Executors$PrivilegedThreadFactory$1.run(Executors.java:665)
	at java.base/java.lang.Thread.run(Thread.java:834)
Caused by: java.lang.NoClassDefFoundError: com/github/weisj/darkmode/platform/AbstractThemeMonitor
	at com.github.weisj.darkmode.AutoDarkMode.createMonitor(AutoDarkMode.kt:50)
	at com.github.weisj.darkmode.AutoDarkMode.access$createMonitor(AutoDarkMode.kt:43)
	at com.github.weisj.darkmode.AutoDarkMode$monitor$1.invoke(AutoDarkMode.kt:45)
	at com.github.weisj.darkmode.AutoDarkMode$monitor$1.invoke(AutoDarkMode.kt:43)
	at kotlin.SynchronizedLazyImpl.getValue(LazyJVM.kt:74)
	at com.github.weisj.darkmode.platform.settings.UtilKt.letValue(Util.kt:49)
	at com.github.weisj.darkmode.AutoDarkMode.start(AutoDarkMode.kt:58)
	at com.github.weisj.darkmode.AutoDarkModeStartupListener.appFrameCreated(AutoDarkModeStartupListener.kt:34)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.base/java.lang.reflect.Method.invoke(Method.java:566)
	at com.intellij.util.messages.impl.MessageBusImpl.invokeListener(MessageBusImpl.java:656)
	at com.intellij.util.messages.impl.MessageBusImpl.deliverMessage(MessageBusImpl.java:426)
	at com.intellij.util.messages.impl.MessageBusImpl.pumpWaitingBuses(MessageBusImpl.java:401)
	at com.intellij.util.messages.impl.MessageBusImpl.pumpMessages(MessageBusImpl.java:383)
	at com.intellij.util.messages.impl.MessageBusImpl.access$100(MessageBusImpl.java:33)
	at com.intellij.util.messages.impl.MessageBusImpl$MessagePublisher.invoke(MessageBusImpl.java:189)
	at com.sun.proxy.$Proxy37.appFrameCreated(Unknown Source)
	at com.intellij.idea.IdeStarter.main(IdeStarter.kt:104)
	at com.intellij.idea.ApplicationLoader$startApp$8.run(ApplicationLoader.kt:239)
	at java.base/java.util.concurrent.CompletableFuture$UniRun.tryFire(CompletableFuture.java:783)
	... 11 more
Caused by: java.lang.ClassNotFoundException: com.github.weisj.darkmode.platform.AbstractThemeMonitor PluginClassLoader[PluginDescriptor(name=Auto Dark Mode, id=com.github.weisj.darkmode, path=C:\Users\guney\AppData\Roaming\JetBrains\Rider2020.3\plugins\auto-dark-mode-plugin, version=1.5.2-2020.3)] com.intellij.ide.plugins.cl.PluginClassLoader@6de0ce92
	at com.intellij.ide.plugins.cl.PluginClassLoader.loadClass(PluginClassLoader.java:129)
	at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:522)
	... 33 more

JetBrains Rider 2020.3.3
Build #RD-203.7148.23, built on February 17, 2021
Licensed to Rider Evaluator
Expiration date: April 3, 2021
Runtime version: 11.0.9.1+11-b1145.63 amd64
VM: OpenJDK 64-Bit Server VM by JetBrains s.r.o.
.NET Framework 4.0.30319.42000
Windows 10 10.0
GC: ParNew, ConcurrentMarkSweep
Memory: 1450M
Cores: 8
Registry: debugger.new.debug.tool.window.view=true, ide.tree.horizontal.default.autoscrolling=false, performance.watcher.sampling.interval.ms=200, ide.borderless.tab.caption.in.title=false, ide.tooltip.showAllSeverities=true, show.diff.preview.as.editor.tab=true, ide.mac.bigsur.alerts.enabled=false, debugger.show.values.use.inlays=false, light.edit.file.open.enabled=false, performance.watcher.unresponsive.interval.ms=1000, search.everywhere.settings=true, show.diff.preview.as.editor.tab.with.single.click=true, parameter.info.max.visible.rows=10, ide.win.file.chooser.native=true, vcs.log.show.diff.preview.as.editor.tab=true, search.everywhere.pattern.checking=false, ide.tooltip.initialDelay=0, ide.mac.bigsur.window.with.tabs.enabled=false, ide.require.transaction.for.model.changes=false, ide.debug.in.title=true, rdclient.asyncActions=false, ide.new.project.model=false
Non-Bundled Plugins: com.github.weisj.darkmode

[feature suggestion] ability to select themes for dark/light

Thanks for the great plugin - works for me - just one feature would make it even better:

Currently it seems to select daracula for dark mode - but I would rather use just "Dark" - ideally have this as a default (think easier) - but another option is to be able to select which light/dark theme to use.

Thanks for considering!

Support for Linux

There is now a way to detect the active theme variant on many Linux desktops. It's a xdg-desktop key that can be accessed via dbus: flatpak/xdg-desktop-portal#633 (also works outside of Flatpaks)

Service: org.freedesktop.portal.Desktop
Method: /org/freedesktop/portal/desktop org.freedesktop.Settings.Read
Namespace: org.freedesktop.appearance
Key: color-scheme

It returns a uint32: 1 for dark mode and 2 for light mode

It is not implemented everywhere yet (as far as I can tell), so errors would need to be catched.

SIGSEGV in Android Studio with GTK/Gnome

java_error_in_STUDIO_4237.log
java_error_in_STUDIO_4237.zip

Current version of the plugin 1.5.3 2020.1 for Android Studio 4.1.2 (official Google tgz, no flatpak) crashes at startup with SIGSEV on Linux (current Fedora 33, Gnome 3.38.4, Wayland)

# A fatal error has been detected by the Java Runtime Environment:
#
#  SIGSEGV (0xb) at pc=0x00007fb1cd24b8ac, pid=4237, tid=0x00007fb1cff4b640
#
# JRE version: OpenJDK Runtime Environment (8.0_242) (build 1.8.0_242-release-1644-b3-6222593)
# Java VM: OpenJDK 64-Bit Server VM (25.242-b3-6222593 mixed mode linux-amd64 compressed oops)
# Problematic frame:
# C  [libgiomm-2.4.so.1+0x1458ac]  Gio::Settings::get_string(Glib::ustring const&) const+0x1c

---------------  T H R E A D  ---------------

Current thread (0x00007fb1b816e000):  JavaThread "ApplicationImpl pooled thread 9" [_thread_in_native, id=4281, stack(0x00007fb1cfe4b000,0x00007fb1cff4c000)]

siginfo: si_signo: 11 (SIGSEGV), si_code: 1 (SEGV_MAPERR), si_addr: 0x0000000000000000

Stack: [0x00007fb1cfe4b000,0x00007fb1cff4c000],  sp=0x00007fb1cff495a0,  free space=1017k
Native frames: (J=compiled Java code, j=interpreted, Vv=VM code, C=native code)
C  [libgiomm-2.4.so.1+0x1458ac]  Gio::Settings::get_string(Glib::ustring const&) const+0x1c


Java frames: (J=compiled Java code, j=interpreted, Vv=VM code)
j  com.github.weisj.darkmode.platform.linux.gnome.GnomeNative.getCurrentTheme()Ljava/lang/String;+0
j  com.github.weisj.darkmode.platform.linux.gnome.GnomeThemeMonitorService.isDarkThemeEnabled()Z+0
j  com.github.weisj.darkmode.platform.linux.LinuxThemeMonitorService.isDarkThemeEnabled()Z+4
j  com.github.weisj.darkmode.platform.ThemeMonitorImpl.getState(Lcom/github/weisj/darkmode/platform/ThemeMonitorService;)Lcom/github/weisj/darkmode/platform/ThemeMonitorImpl$MonitorState;+5
j  com.github.weisj.darkmode.platform.ThemeMonitorImpl.start()V+6
j  com.github.weisj.darkmode.platform.ThemeMonitorImpl.setRunning(Z)V+19
j  com.github.weisj.darkmode.AutoDarkMode$start$1.invoke(Lcom/github/weisj/darkmode/platform/ThemeMonitor;)V+8
j  com.github.weisj.darkmode.AutoDarkMode$start$1.invoke(Ljava/lang/Object;)Ljava/lang/Object;+5
j  com.github.weisj.darkmode.platform.settings.UtilKt.letValue(Lkotlin/Lazy;Lkotlin/jvm/functions/Function1;)V+19
j  com.github.weisj.darkmode.AutoDarkMode.start()V+10
j  com.github.weisj.darkmode.AutoDarkModeStartupListener.appFrameCreated(Ljava/util/List;)V+14
v  ~StubRoutines::call_stub
[java_error_in_STUDIO_4237.log](https://github.com/weisJ/auto-dark-mode/files/6211131/java_error_in_STUDIO_4237.log)

(full file attached - can provide more info if needed)

Reduce polling of AppleInterfaceStyle to a lower frequency

As Brice Dutheil already pointed out in the Youtrack issue, the plugin currently polls macOS for the current interface style every 3 seconds.

I would like to ask if it's technically possible to reduce this poll to like 30 or 60 seconds to reduce the load a bit? Not sure if it's really needed to check this every 3 seconds.

Support for KDE

Installed plugin version 1.5.3-2020.3, Pycharm Community version 2020.3.3

java.lang.Throwable: java.lang.IllegalStateException: Monitoring is not supported.
	at com.intellij.openapi.diagnostic.Logger.error(Logger.java:159)
	at com.intellij.openapi.diagnostic.Logger.error(Logger.java:163)
	at com.intellij.idea.IdeaLogger.error(IdeaLogger.java:71)
	at com.github.weisj.darkmode.platform.PluginLogger.error(PluginLogger.kt:44)
	at com.github.weisj.darkmode.AutoDarkMode.createMonitor(AutoDarkMode.kt:51)
	at com.github.weisj.darkmode.AutoDarkMode.access$createMonitor(AutoDarkMode.kt:43)
	at com.github.weisj.darkmode.AutoDarkMode$monitor$1.invoke(AutoDarkMode.kt:45)
	at com.github.weisj.darkmode.AutoDarkMode$monitor$1.invoke(AutoDarkMode.kt:43)
	at kotlin.SynchronizedLazyImpl.getValue(LazyJVM.kt:74)
	at com.github.weisj.darkmode.platform.settings.UtilKt.letValue(Util.kt:49)
	at com.github.weisj.darkmode.AutoDarkMode.start(AutoDarkMode.kt:56)
	at com.github.weisj.darkmode.AutoDarkModeStartupListener.appFrameCreated(AutoDarkModeStartupListener.kt:34)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.base/java.lang.reflect.Method.invoke(Method.java:566)
	at com.intellij.util.messages.impl.MessageBusImpl.invokeListener(MessageBusImpl.java:656)
	at com.intellij.util.messages.impl.MessageBusImpl.deliverMessage(MessageBusImpl.java:426)
	at com.intellij.util.messages.impl.MessageBusImpl.pumpWaitingBuses(MessageBusImpl.java:401)
	at com.intellij.util.messages.impl.MessageBusImpl.pumpMessages(MessageBusImpl.java:383)
	at com.intellij.util.messages.impl.MessageBusImpl.access$100(MessageBusImpl.java:33)
	at com.intellij.util.messages.impl.MessageBusImpl$MessagePublisher.invoke(MessageBusImpl.java:189)
	at com.sun.proxy.$Proxy31.appFrameCreated(Unknown Source)
	at com.intellij.idea.IdeStarter.main(IdeStarter.kt:104)
	at com.intellij.idea.ApplicationLoader$startApp$8.run(ApplicationLoader.kt:239)
	at java.base/java.util.concurrent.CompletableFuture$UniRun.tryFire(CompletableFuture.java:783)
	at java.base/java.util.concurrent.CompletableFuture.postComplete(CompletableFuture.java:506)
	at java.base/java.util.concurrent.CompletableFuture.postFire(CompletableFuture.java:610)
	at java.base/java.util.concurrent.CompletableFuture$UniCompose.tryFire(CompletableFuture.java:1085)
	at java.base/java.util.concurrent.CompletableFuture$Completion.run(CompletableFuture.java:478)
	at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
	at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
	at java.base/java.util.concurrent.Executors$PrivilegedThreadFactory$1$1.run(Executors.java:668)
	at java.base/java.util.concurrent.Executors$PrivilegedThreadFactory$1$1.run(Executors.java:665)
	at java.base/java.security.AccessController.doPrivileged(Native Method)
	at java.base/java.util.concurrent.Executors$PrivilegedThreadFactory$1.run(Executors.java:665)
	at java.base/java.lang.Thread.run(Thread.java:834)

color-scheme in wayland gnome doesn't seem to work

Hello!

I have checked the code in #51 and it doesn't seem like the current gnome implementation is caught by the extension. Just in case, I'm referring to the menu button in the upper corner to switch the theme natively.
image

The current key being monitored is org.freedesktop.appearance:color-scheme, however checking with gsettings, the key in gnome-shell 44.1 it seems to be org.gnome.desktop.interface:color-scheme, with the value default when not in dark mode, and prefer-dark when in dark mode.

The version I'm running is 1.8.1-2023.1.

Plugin switches IDE to a wrong theme

After the last update, I noticed the strange behaviour of a plugin.
It looks like the plugin sets the IDE theme vice versa to the OS theme.
Here is a video below.

  1. I starting the IDEA
  2. plugin switches the IDE theme to match with OS
  3. then I switching the OS theme and the plugin ignores this change
  4. every consequent change of the OS theme triggers the plugin to switch the IDE theme but to the opposite one. (OS=dark -> IDE=light)

Untitled

Here are the plugin settings
Screenshot 2020-08-13 at 09 55 19

Incompatible with PyCharm versions newer than build 231.*

I noticed that PyCharm stopped syncing with my OS theme. I looked at my plugins to see that it has this error message
Incompatible: requires IDE build 231.* or earlier

I'm running:

PyCharm 2023.2 (Professional Edition)
Build #PY-232.8660.197, built on July 26, 2023

com.intellij.serviceContainer.AlreadyDisposedException: Cannot create light service

com.intellij.serviceContainer.AlreadyDisposedException: Cannot create light service com.intellij.ide.navbar.ide.NavBarService because container is already disposed (container=Project(name=REDACTED, containerState=DISPOSE_COMPLETED, componentStore=REDACTED) (disposed))
	at com.intellij.serviceContainer.ContainerUtilKt.throwAlreadyDisposedError(containerUtil.kt:40)
	at com.intellij.serviceContainer.ComponentManagerImpl.checkThatCreatingOfLightServiceIsAllowed(ComponentManagerImpl.kt:790)
	at com.intellij.serviceContainer.ComponentManagerImpl.getOrCreateLightService(ComponentManagerImpl.kt:762)
	at com.intellij.serviceContainer.ComponentManagerImpl.doGetService(ComponentManagerImpl.kt:726)
	at com.intellij.serviceContainer.ComponentManagerImpl.getService(ComponentManagerImpl.kt:670)
	at com.intellij.ide.navbar.ide.NavBarService$Companion.getInstance(NavBarService.kt:165)
	at com.intellij.ide.navbar.ide.NavBarService.getInstance(NavBarService.kt)
	at com.intellij.ide.navigationToolbar.MyNavBarWrapperPanel.uiSettingsChanged(NavBarRootPaneExtension.java:149)
	at jdk.internal.reflect.GeneratedMethodAccessor810.invoke(Unknown Source)
	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.base/java.lang.reflect.Method.invoke(Method.java:568)
	at com.intellij.util.EventDispatcher.dispatchVoidMethod(EventDispatcher.java:120)
	at com.intellij.util.EventDispatcher.lambda$createMulticaster$1(EventDispatcher.java:85)
	at jdk.proxy2/jdk.proxy2.$Proxy28.uiSettingsChanged(Unknown Source)
	at com.intellij.ide.ui.UISettings.fireUISettingsChanged(UISettings.kt:672)
	at com.intellij.ide.ui.laf.LafManagerImpl.setLookAndFeelImpl(LafManagerImpl.kt:539)
	at com.intellij.ide.ui.laf.LafManagerImpl.setCurrentLookAndFeel(LafManagerImpl.kt:516)
	at com.intellij.ide.ui.LafManager.setCurrentLookAndFeel(LafManager.java:40)
	at com.intellij.ide.actions.QuickChangeLookAndFeel.switchLafAndUpdateUI(QuickChangeLookAndFeel.java:102)
	at com.intellij.ide.actions.QuickChangeLookAndFeel.switchLafAndUpdateUI(QuickChangeLookAndFeel.java:93)
	at com.github.weisj.darkmode.AutoDarkMode.updateLaf(AutoDarkMode.kt:99)
	at com.github.weisj.darkmode.AutoDarkMode.access$updateLaf(AutoDarkMode.kt:43)
	at com.github.weisj.darkmode.AutoDarkMode$themeChanged$1.invoke(AutoDarkMode.kt:78)
	at com.github.weisj.darkmode.AutoDarkMode$themeChanged$1.invoke(AutoDarkMode.kt:74)
	at com.github.weisj.darkmode.AutoDarkMode.scheduleRequest$lambda$1(AutoDarkMode.kt:111)
	at com.intellij.util.concurrency.QueueProcessor.runSafely(QueueProcessor.java:249)
	at com.intellij.util.Alarm$Request.runSafely(Alarm.java:365)
	at com.intellij.util.Alarm$Request.run(Alarm.java:354)
	at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:539)
	at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
	at com.intellij.util.concurrency.SchedulingWrapper$MyScheduledFutureTask.run(SchedulingWrapper.java:272)
	at com.intellij.openapi.application.TransactionGuardImpl.runWithWritingAllowed(TransactionGuardImpl.java:209)
	at com.intellij.openapi.application.TransactionGuardImpl.access$100(TransactionGuardImpl.java:21)
	at com.intellij.openapi.application.TransactionGuardImpl$1.run(TransactionGuardImpl.java:191)
	at com.intellij.openapi.application.impl.ApplicationImpl.runIntendedWriteActionOnCurrentThread(ApplicationImpl.java:831)
	at com.intellij.openapi.application.impl.ApplicationImpl$3.run(ApplicationImpl.java:456)
	at com.intellij.openapi.application.impl.FlushQueue.doRun(FlushQueue.java:79)
	at com.intellij.openapi.application.impl.FlushQueue.runNextEvent(FlushQueue.java:122)
	at com.intellij.openapi.application.impl.FlushQueue.flushNow(FlushQueue.java:41)
	at java.desktop/java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:318)
	at java.desktop/java.awt.EventQueue.dispatchEventImpl(EventQueue.java:788)
	at java.desktop/java.awt.EventQueue$3.run(EventQueue.java:739)
	at java.desktop/java.awt.EventQueue$3.run(EventQueue.java:731)
	at java.base/java.security.AccessController.doPrivileged(AccessController.java:399)
	at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:86)
	at java.desktop/java.awt.EventQueue.dispatchEvent(EventQueue.java:758)
	at com.intellij.ide.IdeEventQueue.defaultDispatchEvent(IdeEventQueue.kt:666)
	at com.intellij.ide.IdeEventQueue._dispatchEvent$lambda$7(IdeEventQueue.kt:570)
	at com.intellij.openapi.application.impl.ApplicationImpl.withoutImplicitRead(ApplicationImpl.java:1446)
	at com.intellij.ide.IdeEventQueue._dispatchEvent(IdeEventQueue.kt:570)
	at com.intellij.ide.IdeEventQueue.access$_dispatchEvent(IdeEventQueue.kt:68)
	at com.intellij.ide.IdeEventQueue$dispatchEvent$processEventRunnable$1$1$1.compute(IdeEventQueue.kt:349)
	at com.intellij.ide.IdeEventQueue$dispatchEvent$processEventRunnable$1$1$1.compute(IdeEventQueue.kt:348)
	at com.intellij.openapi.progress.impl.CoreProgressManager.computePrioritized(CoreProgressManager.java:787)
	at com.intellij.ide.IdeEventQueue$dispatchEvent$processEventRunnable$1$1.invoke(IdeEventQueue.kt:348)
	at com.intellij.ide.IdeEventQueue$dispatchEvent$processEventRunnable$1$1.invoke(IdeEventQueue.kt:343)
	at com.intellij.ide.IdeEventQueueKt.performActivity$lambda$1(IdeEventQueue.kt:994)
	at com.intellij.openapi.application.TransactionGuardImpl.performActivity(TransactionGuardImpl.java:105)
	at com.intellij.ide.IdeEventQueueKt.performActivity(IdeEventQueue.kt:994)
	at com.intellij.ide.IdeEventQueue.dispatchEvent$lambda$4(IdeEventQueue.kt:343)
	at com.intellij.openapi.application.impl.ApplicationImpl.runIntendedWriteActionOnCurrentThread(ApplicationImpl.java:831)
	at com.intellij.ide.IdeEventQueue.dispatchEvent(IdeEventQueue.kt:385)
	at java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:207)
	at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:128)
	at java.desktop/java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:117)
	at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:113)
	at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:105)
	at java.desktop/java.awt.EventDispatchThread.run(EventDispatchThread.java:92)

NPE in 1.2.0pre3

Hi,

I don't know when or after which action this appeared, but I just noticed this error. IJ tells me it happened 30 min ago, ubut I'm not sure what I have done. Maybe a check for update, but I'm not quite sure. IJ was opened for 2 days (with laptop sleeping (lid closed) during the night)

java.lang.NullPointerException
	at com.github.weisj.darkmode.AutoDarkMode.uninstall(AutoDarkMode.java:86)
	at java.base/java.util.Optional.ifPresent(Optional.java:183)
	at com.github.weisj.darkmode.AutoDarkModePluginListener.beforePluginUnload(AutoDarkModePluginListener.java:19)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.base/java.lang.reflect.Method.invoke(Method.java:566)
	at com.intellij.util.messages.impl.MessageBusImpl.invokeListener(MessageBusImpl.java:541)
	at com.intellij.util.messages.impl.MessageBusConnectionImpl.deliverMessage(MessageBusConnectionImpl.java:139)
	at com.intellij.util.messages.impl.MessageBusImpl.doPumpMessages(MessageBusImpl.java:465)
	at com.intellij.util.messages.impl.MessageBusImpl.pumpWaitingBuses(MessageBusImpl.java:426)
	at com.intellij.util.messages.impl.MessageBusImpl.pumpMessages(MessageBusImpl.java:415)
	at com.intellij.util.messages.impl.MessageBusImpl.sendMessage(MessageBusImpl.java:395)
	at com.intellij.util.messages.impl.MessageBusImpl.lambda$createTopicHandler$3(MessageBusImpl.java:237)
	at com.sun.proxy.$Proxy70.enteredDumbMode(Unknown Source)
	at com.intellij.openapi.project.DumbServiceImpl.enterDumbMode(DumbServiceImpl.java:372)
	at com.intellij.openapi.project.DumbServiceImpl.queueTaskOnEdt(DumbServiceImpl.java:339)
	at com.intellij.openapi.project.DumbServiceImpl.lambda$queueAsynchronousTask$1(DumbServiceImpl.java:326)
	at com.intellij.openapi.project.DumbServiceImpl.queueAsynchronousTask(DumbServiceImpl.java:328)
	at com.intellij.openapi.project.DumbServiceImpl.queueTask(DumbServiceImpl.java:300)
	at com.intellij.util.indexing.FileBasedIndexSwitcher.turnOff(FileBasedIndexSwitcher.java:42)
	at com.intellij.util.indexing.FileBasedIndexPluginListener.beforePluginSetChanged(FileBasedIndexPluginListener.java:40)
	at com.intellij.util.indexing.FileBasedIndexPluginListener.beforePluginUnload(FileBasedIndexPluginListener.java:26)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.base/java.lang.reflect.Method.invoke(Method.java:566)
	at com.intellij.util.messages.impl.MessageBusImpl.invokeListener(MessageBusImpl.java:541)
	at com.intellij.util.messages.impl.MessageBusConnectionImpl.deliverMessage(MessageBusConnectionImpl.java:143)
	at com.intellij.util.messages.impl.MessageBusImpl.doPumpMessages(MessageBusImpl.java:465)
	at com.intellij.util.messages.impl.MessageBusImpl.pumpWaitingBuses(MessageBusImpl.java:426)
	at com.intellij.util.messages.impl.MessageBusImpl.pumpMessages(MessageBusImpl.java:415)
	at com.intellij.util.messages.impl.MessageBusImpl.sendMessage(MessageBusImpl.java:397)
	at com.intellij.util.messages.impl.MessageBusImpl.lambda$createTopicHandler$3(MessageBusImpl.java:237)
	at com.sun.proxy.$Proxy245.beforePluginUnload(Unknown Source)
	at com.intellij.ide.plugins.DynamicPlugins.unloadPlugin(DynamicPlugins.kt:317)
	at com.intellij.ide.plugins.DynamicPlugins.unloadPlugin$default(DynamicPlugins.kt:305)
	at com.intellij.ide.plugins.DynamicPlugins.unloadPlugin(DynamicPlugins.kt)
	at com.intellij.openapi.updateSettings.impl.PluginDownloader.tryInstallWithoutRestart(PluginDownloader.java:248)
	at com.intellij.openapi.updateSettings.impl.UpdateInstaller.installDownloadedPluginUpdates(UpdateInstaller.kt:102)
	at com.intellij.openapi.updateSettings.impl.PluginUpdateDialog$6.lambda$run$0(PluginUpdateDialog.java:205)
	at com.intellij.openapi.application.TransactionGuardImpl$2.run(TransactionGuardImpl.java:201)
	at com.intellij.openapi.application.impl.ApplicationImpl.runIntendedWriteActionOnCurrentThread(ApplicationImpl.java:831)
	at com.intellij.openapi.application.impl.ApplicationImpl.lambda$invokeLater$4(ApplicationImpl.java:310)
	at com.intellij.openapi.application.impl.FlushQueue.doRun(FlushQueue.java:80)
	at com.intellij.openapi.application.impl.FlushQueue.runNextEvent(FlushQueue.java:128)
	at com.intellij.openapi.application.impl.FlushQueue.flushNow(FlushQueue.java:46)
	at com.intellij.openapi.application.impl.FlushQueue$FlushNow.run(FlushQueue.java:184)
	at java.desktop/java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:313)
	at java.desktop/java.awt.EventQueue.dispatchEventImpl(EventQueue.java:776)
	at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:727)
	at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:721)
	at java.base/java.security.AccessController.doPrivileged(Native Method)
	at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:85)
	at java.desktop/java.awt.EventQueue.dispatchEvent(EventQueue.java:746)
	at com.intellij.ide.IdeEventQueue.defaultDispatchEvent(IdeEventQueue.java:974)
	at com.intellij.ide.IdeEventQueue._dispatchEvent(IdeEventQueue.java:847)
	at com.intellij.ide.IdeEventQueue.lambda$null$8(IdeEventQueue.java:449)
	at com.intellij.openapi.progress.impl.CoreProgressManager.computePrioritized(CoreProgressManager.java:741)
	at com.intellij.ide.IdeEventQueue.lambda$dispatchEvent$9(IdeEventQueue.java:448)
	at com.intellij.openapi.application.impl.ApplicationImpl.runIntendedWriteActionOnCurrentThread(ApplicationImpl.java:831)
	at com.intellij.ide.IdeEventQueue.dispatchEvent(IdeEventQueue.java:496)
	at java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:203)
	at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:124)
	at java.desktop/java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:113)
	at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:109)
	at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
	at java.desktop/java.awt.EventDispatchThread.run(EventDispatchThread.java:90)

And after that the appearance is not synchronized with macOs anymore.

Idea specified Editor theme

Probably it isn't a bug but the behavior of a plugin is significantly differs from the past releases.
When I first time installed the plugin (MacOs) it worked like a charm. It switched the 'IDE theme' and nothing more.
But after a few last updates, it started to switch 'editor theme' as well.

Initially, I specify in IDE the 'editor theme' (cmd+`) and this setting worked for every new or old project for the particular 'IDE theme'.
But now the 'auto-dark-plugin' continuously overrides this setting. You opens a new project after the dark/light theme switching in macOS 'editor theme' drops to default.

Can you provide an ability to plugin to keep the 'Editor theme' without changing while switching between themes?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.