标题:Mac 关闭内置显示器 出处:Felix021 时间:Sat, 16 Dec 2023 20:34:18 +0000 作者:felix021 地址:https://www.felix021.com/blog/read.php?2246 内容: // 日常吐槽莎币苹果。 MacOS 有很多很蠢的地方,比如没有快捷键可以让窗口在屏幕间移动;比如不能右键直接创建空文件;比如右键菜单有「复制」和「拷贝」两个选项;比如会莫名其妙出现左右声道不平衡的 bug 并且长期未修复; 再比如,不能在外接显示屏的情况下关闭内屏。 当然也不是完全不能,网友也有一些解决方案: 1. 合上屏幕当主机用,自然就息屏了。不过我需要用 mac 的键盘、触摸板和 TouchID 解锁。过。 2. 随身携带磁铁,欺骗 macOS 屏幕已经关闭。这可能是种行为艺术,可惜我不是艺术家。过。 3. SwitchResX,试了下,确实可以把内屏关闭,只不过拔了外显内屏还是关着的,折腾了几下甚至 mac 都不能识别外显了,重启才解决。卸。 4. 在「系统设置 -> 显示」里,将背光拉到 0;不能直接用 Fn 调节屏幕亮度,因为会把外接屏亮度一起调低(莎币值+1);而且每次接上外显或 wakeup 时,都要重新设置。过……吧? 好在作为一名码农,可以想一些自动化的方式来把方案 4 利用起来。 首先是用 brew install brightness (update: M3 Macbook can not use this. try Lunar, details below),可以用 `brightness -d 1 0` 把 display 1 的亮度调到 0 (注意把主屏设置为外接屏,且把内屏设置为拷贝外屏,这样内屏的编号就是 1,外显是 0)。 其次是有一个叫 hammerspoon 的软件(https://www.hammerspoon.org/),可以在 unlock 的时候自动执行一个 lua 脚本。 把下面这个 lua 脚本存为 ~/.hammerspoon/init.lua -- init.lua local log = hs.logger.new("", "info") local function ok2str(ok) if ok then return "ok" else return "fail" end end hs.caffeinate.watcher.new(function(event) local eventName = hs.caffeinate.watcher[event] log.f("got caffeinate event:%s (id:%d)", eventName, event) local script if event == hs.caffeinate.watcher.screensDidLock then script = "${HOME}/.lock" elseif event == hs.caffeinate.watcher.screensDidUnlock then script = "${HOME}/.unlock" else log.f("ignored event:%s (id:%d)", eventName, event) return end local ok, st, n = os.execute(script) log.f("exec:%s -> %s, %s, %d", script, ok2str(ok), st, n) end ):start() 然后再 touch ~/.unlock && chmod +x ~/.unlock,内容为: #!/bin/bash export PATH=$PATH:/usr/local/bin/ brightness -d 1 0 sleep 5 && brightness -d 1 0 sleep 5 是因为从睡眠状态恢复时,识别外屏会比较慢,可按需调整 sleep 时长。 如果你看到这里,说明你也需要注意日常用电脑的姿势了,避免头颈前倾。 (完)。 update @ 2023-12-12 实际体验下来还有一些问题,例如去倒杯水,锁屏但没有睡眠,解锁后就不会息屏。 最好用的方案往往只需要最简单的工具:crontab。 引用 MAILTO="" * * * * * /Users/bytedance/bin/TurnOffScreen.sh * * * * * sleep 15 && /Users/bytedance/bin/TurnOffScreen.sh * * * * * sleep 30 && /Users/bytedance/bin/TurnOffScreen.sh * * * * * sleep 45 && /Users/bytedance/bin/TurnOffScreen.sh update @ 2024-01-26 brightness seems to be not working on M3 Macbooks, so I switched to lunar: 1. Download and install lunar 2. Run in terminal: /Applications/Lunar.app/Contents/MacOS/Lunar install-cli 3. Update the TurnOffScreen.sh to be (remember to replace with your monitor model or serial id in the pattern): #!/bin/bash pattern='S2721QS' if ~/.local/bin/lunar displays | grep $pattern; then ~/.local/bin/lunar displays "Built-in" brightness 0 fi Generated by Bo-blog 2.1.0