V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
monetto
V2EX  ›  macOS

macbook 显示器关闭后再开启 夜览失效

  •  
  •   monetto · 2021-11-03 11:42:23 +08:00 · 1027 次点击
    这是一个创建于 938 天前的主题,其中的信息可能已经有所发展或是发生改变。

    如题,大家有这个问题吗?

    MBP 16 2019

    7 条回复    2022-11-18 11:43:57 +08:00
    muntoya
        1
    muntoya  
       2021-11-03 11:54:38 +08:00 via iPhone   ❤️ 1
    同款,已经一年了,拿去店里说重装系统试试,没法解决。
    原彩和夜览都会在显示器重新亮的时候随机失效。网上发现遇到的人不少,用 pmset 重置好过几天,然后就又坏了。
    monetto
        2
    monetto  
    OP
       2021-11-03 13:03:47 +08:00
    @muntoya 唉。系统是 Big Sur 11.6.1 ,升级系统也没用。OnyX 重置也没用。
    Catalina 的 15 款 MBP13 就没这个问题。

    目前想知道 有没有啥办法可以终端调用夜览,做到定时或者检测屏幕唤醒自动执行夜览。
    monetto
        3
    monetto  
    OP
       2021-11-04 16:06:10 +08:00   ❤️ 1
    @muntoya 使用 Hammerspoon 监听屏幕唤醒事件 + LUA 脚本 + nightlight (Terminal 调用夜览),可以做到亮屏的时候先关闭夜览,再开启。一定程度解决。
    conver
        4
    conver  
       2022-11-17 09:55:40 +08:00
    @monetto 脚本可以分享下吗
    monetto
        5
    monetto  
    OP
       2022-11-17 11:10:06 +08:00
    @conver 当时写了一半放弃了,工作太忙...不过查查 Hammerspoon 文档就可以。本质上就是监听 解锁事件,然后通过终端调用 nightlight 先关闭,过 1s 再开启。
    conver
        6
    conver  
       2022-11-17 19:51:51 +08:00
    这样应该行
    ```
    function nightlightControl(state)
    cmd = "/usr/local/bin/nightlight " .. (state)
    result = hs.osascript.applescript(string.format('do shell script "%s"', cmd))
    end

    function caffeinateCallback(eventType)
    if (eventType == hs.caffeinate.watcher.screensDidSleep) then
    nightlightControl('off')
    elseif (eventType == hs.caffeinate.watcher.screensDidWake) then
    nightlightControl('on')
    elseif (eventType == hs.caffeinate.watcher.screensDidLock) then
    nightlightControl('off')
    elseif (eventType == hs.caffeinate.watcher.screensDidUnlock) then
    nightlightControl('on')
    end
    end

    caffeinateWatcher = hs.caffeinate.watcher.new(caffeinateCallback)
    caffeinateWatcher:start()

    ```
    conver
        7
    conver  
       2022-11-18 11:43:57 +08:00   ❤️ 2
    ```
    -- brew install hammerspoon
    -- brew install smudge/smudge/nightlight
    function nightlightControl(state)
    cmd = "/usr/local/bin/nightlight " .. (state)
    ok, result = hs.osascript.applescript(string.format('do shell script "%s"', cmd))
    return result
    end

    function caffeinateCallback(eventType)
    if (eventType == hs.caffeinate.watcher.screensDidUnlock) then
    if (string.match(nightlightControl('status'), 'on')) then
    nightlightControl('off')
    nightlightControl('on')
    end
    end
    end

    caffeinateWatcher = hs.caffeinate.watcher.new(caffeinateCallback)
    caffeinateWatcher:start()
    ```
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1109 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 18:56 · PVG 02:56 · LAX 11:56 · JFK 14:56
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.