Skip to content

[Bug] macOS 26 主题模式-跟随系统设置 失效 #6526

Closed

Description

@ToobLac

问题描述 | Bug Description

31st July 更新:问题的表现可以归纳为以下两点:
在 macOS 上:

  • “主题模式“不是”跟随系统设置“时,切换到”跟随系统设置“不会有任何效果
  • 即使”主题模式“在开启启动器时就是”跟随系统设置“,后续系统深浅色模式切换时HMCL也不会跟随切换

原因:

  • 在应用程序未使用 NSApplication::setAppearance 设置自己的深浅色模式时,JavaFX的 colorScheme 属性(也就是 FXUtils::DARK_MODE 属性)能正常跟随系统切换,此时“跟随系统设置”表现正常,代价是文件选择窗口颜色始终与系统而非HMCL匹配
  • 在 在 macOS 下随明暗模式设置 NSAppearance #5778 以后,在macOS上HMCL会把上述属性设置为自己的深浅色模式,以改变文件选择窗口的颜色。然而这导致 colorScheme 属性被设置为HMCL自己的深浅色模式,且不再随系统深浅色模式变化
  • HMCL在使用“跟随系统设置”时,会优先使用 FXUtils::DARK_MODE 的值。然而这个值此时已经是HMCL自己的颜色了,所以不会产生任何效果。

  1. 将启动器“主题模式”设置为“深色模式”
  2. 重启启动器,将“主题模式”设置为“跟随系统设置”
  3. 启动器表现为深色模式
  4. 将“主题模式”设置为“浅色模式”
  5. 重复2
  6. 启动器表现为浅色模式
  7. 保持“主题模式”为“跟随系统设置”,重启启动器
  8. 启动器能正常跟随系统设置

macOS 26.5.2, Oracle JDK 26.0.2, HMCL v3.17.0.351

启动器崩溃报告 / 启动器日志文件 | Launcher Crash Report / Launcher Log File

N/A

Activity

  1. ToobLac commented on Jul 28, 2026

    @ToobLac
    ContributorAuthor

    经过测试,发现启动器设置深/浅色模式时,会改变 javafx.application.Platform::getPreferences 中 colorSchemeProperty 的值,导致 FXUtils::DARK_MODE 同步改变。而获取系统设置时会优先使用 FXUtils::DARK_MODE 的值,导致设置失效。

    /// Returns the brightness requested by the current system or platform settings.
    private static Brightness getAutomaticBrightness() {
    if (FXUtils.DARK_MODE != null) {
    return FXUtils.DARK_MODE.get() ? Brightness.DARK : Brightness.LIGHT;
    }
    return getDefaultBrightness();
    }

    @SuppressWarnings("unchecked")
    var colorSchemeProperty = (ReadOnlyObjectProperty<? extends Enum<?>>)
    lookup.findVirtual(preferencesClass, "colorSchemeProperty", MethodType.methodType(ReadOnlyObjectProperty.class))
    .invoke(preferences);
    darkMode = Bindings.createBooleanBinding(() ->
    "DARK".equals(colorSchemeProperty.get().name()), colorSchemeProperty);

  2. SinetianLiu commented on Aug 18, 2026

    @SinetianLiu

    最新测试版已修复。

  3. 3gf8jv4dv commented on Aug 18, 2026

    @3gf8jv4dv
    Contributor

    呃,PR #6555 还没合呢…… 确定修了?

  4. SinetianLiu commented on Aug 18, 2026

    @SinetianLiu

    怪了,我的是27,但应该不会有差别。启动器3.17.0.354.

  5. ToobLac commented on Aug 19, 2026

    @ToobLac
    ContributorAuthor

    怪了,我的是27,但应该不会有差别。启动器3.17.0.354.

    难道升级到 macOS 27 就好了?

    按理说不应该啊,而且最近好像也没有其他动这里的 pr 被合并

  6. added a commit that references this issue on Sep 9, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions