V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
Dvel
V2EX  ›  问与答

请问怎么监测 MacBook 合盖了,然后执行一个小脚本呀?

  •  
  •   Dvel · 2020-12-19 02:07:06 +08:00 · 1326 次点击
    这是一个创建于 1468 天前的主题,其中的信息可能已经有所发展或是发生改变。
    import psutil
    
    for pid in psutil.pids():
        name = psutil.Process(pid).name()
        if name == 'QQ jietu plugin' or name == 'QQ':
            print(pid, name)
            psutil.Process(pid).terminate()
    

    比如这样一个小脚本,在合盖的时候执行一下,关掉 QQ 。
    因为我无数次睡前忘了关掉 QQ,刚要睡着 QQ 就他妈响起了登录声。

    第 1 条附言  ·  2020-12-19 03:21:10 +08:00
    解决了,brew 装了一个 sleepwatcher,这个可以在 sleep 和 wakeup 的时候执行一些脚本。
    2 条回复    2020-12-19 02:19:08 +08:00
    geelaw
        1
    geelaw  
       2020-12-19 02:18:53 +08:00 via iPhone
    通常状况下合盖后会进入睡眠状态,我以为 macOS 进入睡眠之后 app 就不运行了?

    可能 1 是程序阻止了睡眠,这样的话就不能检测睡眠事件(因为根本不发生)。
    可能 2 是睡眠期间程序偶尔可以运行,此时可以检测即将睡眠的事件并进行操作。

    另一种思路是检测目前有几个显示器,如果显示器的数目降低到 0 则执行程序。

    不宜检测是否合盖,因为连接外置显示器、键鼠、电源时,合盖不应导致活动暂停。
    ynyounuo
        2
    ynyounuo  
       2020-12-19 02:19:08 +08:00
    ioreg -r -k AppleClamshellState
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3104 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 13:35 · PVG 21:35 · LAX 05:35 · JFK 08:35
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.