ApolloZhu / Dynamic-Dark-Mode

The smart, automatic Dark Mode toggle for macOS Mojave+
https://apollozhu.github.io/Dynamic-Dark-Mode/
GNU General Public License v3.0
504 stars 31 forks source link

自动、手动调节之间冲突是怎么处理的 #58

Closed mpco closed 5 years ago

mpco commented 5 years ago

版本:1.1.4 系统:10.14.3

有个疑问:当 App 通过亮度阈值或定时判断并开启 暗色模式 时,我手动切换到 亮色模式,App 会怎么处理?之后还会自动切换到 暗色模式 吗?

另外,开启根据亮度自动切换后,使用快捷键调节亮度至应该自动切换的范围时,App 没有正常工作。在 App 偏好设置中,关闭并重新开启基于亮度的自动调节时,App 会切换一次暗色/亮色模式。 不过我用的 黑苹果,也可能有所影响。

ApolloZhu commented 5 years ago
  1. 当基于阀值调节勾选时,每次亮度变化时会判断是否需要切换
  2. 手动切换和阀值切换会打断当前定时切换,直到下一次定时切换
  3. 亮度变化监测是通过系统通知,不知道您的黑苹果配置是否会发送 com.apple.AmbientLightSensorHID.PreferencesChanged
  4. “快捷键调节亮度”具体是如何操作的?
mpco commented 5 years ago

谢谢

使用 F14、F15 或者 Fn 功能键 可以调节屏幕亮度,你可以看看 系统偏好设置>键盘>快捷键>显示。

不知道是不是,只有亮度传感器检测到变化时才会发送 com.apple.AmbientLightSensorHID.PreferencesChanged,而快捷键手动调节屏幕亮度不会发送?

我试了下,没有收到通知,但是不知道这个代码有错没

import Cocoa

@NSApplicationMain
class AppDelegate: NSObject, NSApplicationDelegate {

    func applicationDidFinishLaunching(_ aNotification: Notification) {
        DistributedNotificationCenter.default().addObserver(self, selector: #selector(updateForBrightnessChange), name: .brightnessDidChange, object: nil)
    }

    @objc func updateForBrightnessChange() {
        print("## Bright changed")
    }
}

extension Notification.Name {
    static let brightnessDidChange = Notification.Name(
        "com.apple.AmbientLightSensorHID.PreferencesChanged"
    )
}
ApolloZhu commented 5 years ago

我这边用键盘调节亮度(且最终亮度发生了变化)是会有这个通知的。

我会考虑考虑是否需要额外监听这两个键