gpt4 book ai didi

java - macOS "Big Sur"检测深色菜单栏/系统托盘

转载 作者:行者123 更新时间:2023-12-02 11:17:52 25 4
gpt4 key购买 nike

从 macOS (10.16 "Beta"/11.0) "Big Sur"开始,菜单栏和系统托盘不再支持桌面暗模式首选项,因此很难为该桌面正确设置系统托盘图标的主题。
以前,使用 shell 命令 default read ,可以检测到暗模式:

defaults read -g AppleInterfaceStyle
# "Dark"
这仍然适用于检测 Window 主题,但不适用于菜单栏和系统托盘主题。
由于这个区域似乎是由壁纸亮度/白度/亮度驱动的,我们如何检测黑暗的系统托盘?
n
如何在(例如)Objective-C/C++ 中检测到这一点?欢迎任何解决方案,因为大多数都可以适应。
问题也发布到 Apple 开发者论坛: https://developer.apple.com/forums/thread/652540
Qt5.6 有一个特性叫做 setIsMask(...) 这允许操作系统自动处理这个问题。这实际上是 NSImage::setTemplate:Yes 的别名。
更多关于 macOS“黑暗模式”的引用:
  • How to detect if OS X is in dark mode?
  • MenuBar Icon for Dark Mode on OS X in Java

  • AdoptOpenJDK 上游错误报告:
  • https://github.com/AdoptOpenJDK/openjdk-support/issues/146

  • 关键词: NSStatusBar , Menu Bar Extras

    最佳答案

    我有同样的问题,但我想我找到了解决方案。如 AppKit Release Notes for Big Sur 中所写(见 NSStatusItem 的条目)你可以观察 NSStatusItembuttoneffectiveAppearance .如果 effectiveAppearance 的名称包含 dark ,然后是暗模式。否则就是灯光模式。
    我创建的示例代码显示 lightdark作为 NSStatusItem 的文本标签可在 this GitHub repo 获得, 特别见 AppDelegate.m . (我很抱歉因为使用 Objective-C 而成为一个近乎灭绝的恐龙。)您可以通过在 Catalina 或 Big Sur 上运行来测试它,从系统偏好设置中更改暗/亮设置或桌面图片的颜色。
    编辑:原来大苏尔有时会改变effectiveAppearance从亮到亮或从暗到暗(从某种意义上说,虽然外观实际上并没有改变,但调用了 KVO。)因此建议检查 effectiveApparance 的值。确认更改前后的值实际更改。

    关于java - macOS "Big Sur"检测深色菜单栏/系统托盘,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62685948/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com