MacOS cmd tab增强
问题背景在日常使用mac时,经常会使用cmd w关闭窗口或是cmd m最小化窗口,但是使用cmd w或cmd m后,会导致在cmd tab时,虽然会显示该应用,但是无法重新唤起窗口。
比如,使用cmd w关闭spotify或者chatgpt后,cmd tab无法唤醒。
解决方法初探
[*]尝试搜索cmd tab的增强方案,比如 HyperSwitch, Witch, AltTab等软件,但是无法实现需求
[*]改变使用习惯,不使用cmd w或cmd m,而是cmd h,但是cmd h需要两只手按,而cmd w只需要单手,所以也不方便。
Hammerspoon搭配Lua脚本
Hammerspoon 是一款 macOS 自动化工具,可以通过 Lua 脚本控制和增强系统行为。它就像是 macOS 的“自动化万能遥控器”,功能非常强大但也偏技术向。
具体步骤:
[*]安装软件
[*]右键菜单 Open Config 打开配置文件
[*]添加脚本
-- 需要管理的 App 列表(可按需扩展)
local managedApps = {
["Spotify"] = "com.spotify.client",
["ChatGPT"] = "com.openai.chat"
}
-- 保存上次切换的 App,避免重复处理
local lastAppName = nil
-- 应用切换监听器
hs.application.watcher.new(function(appName, eventType, app)
if eventType == hs.application.watcher.activated then
-- 避免重复处理相同 App
if appName == lastAppName then return end
lastAppName = appName
-- 延迟执行以等待系统切换完成
hs.timer.doAfter(0.05, function()
local frontApp = hs.application.frontmostApplication()
if not frontApp then return end
-- 如果是被管理的 App,则尝试恢复窗口
if managedApps then
local mainWin = frontApp:mainWindow()
-- 情况1:窗口存在但被最小化
if mainWin and mainWin:isMinimized() then
mainWin:unminimize()
mainWin:focus()
-- 情况2:主窗口不存在(可能被 Cmd+W 关闭)
elseif not mainWin then
hs.timer.doAfter(0.05, function()
hs.application.launchOrFocusByBundleID(managedApps)
end)
end
end
end)
end
end):start()
[*]右键菜单 Reload Config 打开配置文件
如何添加其他APP:
[*]获取 App 的 Bundle ID:
osascript -e 'id of app "App名称"'例如:
osascript -e 'id of app "WeChat"'
# 输出: com.tencent.xinWeChat
[*]在 managedApps 中添加:
["App显示名"] = "App的BundleID"
来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
页:
[1]