给 macOS 用户分享一下自用 hammerspoon 脚本

2024 年 4 月 12 日
 g1vemep0wer

hammerspoon 已经成功让我卸掉了好几个第三方软件,今天分享一些自用脚本

源码仓库地址 👉 https://github.com/xiaojundebug/hammerspoon-config

介绍

  1. scripts/auto-switch-input-method.lua 根据 app 自动切换输入法,一定程序上取代 SwitchKeyInputSourcePro

  2. scripts/input-method-indicator.lua 自带输入法没有指示器,经常输错中英文,它可以在屏幕顶部显示一条横线,最近我将它支持了渐变色,看上去更美观,一定程序上取代 ShowEdge

  3. scripts/ring.lua 一个丝滑的环形 App 启动器,我甚至为它加上了过渡动画,用 + tab 呼出,划到目标处松开键盘即可, 一定程序上提高软件打开效率

  4. scripts/caffeinated.lua 在状态栏放了一个 icon ,点击使 mac 禁止睡眠

  5. scripts/defeating-paste-blocking.lua 官方示例,部分网站禁止用户粘贴,它可以通过模拟输入事件将字符逐个键入,快捷键 + + v

  6. https://github.com/xiaojundebug/hammerspoon-config/blob/main/scripts/wifi-mute.lua 连接公司 wifi 后自动静音

  7. scripts/show-launchpad.lua macOS 有个很蠢的 bug ,设置中配置的启动台快捷键经常失效,那就用脚本代替它吧

另外还有一个没在仓库中的脚本,名叫“暗格”,如有人需要我再放进去

各位有啥创意可以提高效率,欢迎提意见~

3200 次点击
所在节点    分享创造
10 条回复
NoLifeRyan
2024 年 12 月 6 日
输入法指示器好像无效? macOS 14.7
NoLifeRyan
2024 年 12 月 6 日
@NoLifeRyan 有效,我的问题,怎么删除这条
g1vemep0wer
2025 年 1 月 12 日
由于文件命名有改变,所以文中地址访问会 404 ,有需要的可以访问 https://github.com/xiaojundebug/hammerspoon-config
yukminnie
2 月 2 日
谢谢分享, 用起来.
19cm
4 月 8 日
老哥,想请教下您, input_method_indicator.lua 这个我想改成监听 只监听微信输入法的中英文切换,有办法做到吗,试了几个 ai 写的都不行
g1vemep0wer
4 月 8 日
@19cm 这个真不清楚,我没用过微信自带的英文输入,只用微信的中文输入
19cm
4 月 8 日
@g1vemep0wer #6 还有个问题,想请教下 mac 有没有辅助软件能做到 监听指定软件 当指定点击软件关闭按钮时 让软件强行退出并且在 dock 栏干掉 lua 我写了个不行,只能退出不会在 dock 干掉

-- ===================== 配置区:只改这里 =====================
-- 要监控的软件名称(必须和应用名称完全一致,可在活动监视器看)
local TARGET_APPS = {
'IINA'
}
-- ==========================================================

-- 创建窗口过滤器:只监听目标应用
local wf = hs.window.filter.new(TARGET_APPS)

-- 监听 [窗口被销毁] (点 X 关闭)
wf:subscribe(hs.window.filter.windowDestroyed, function(win)
if not win then return end

local app = win:application()
if not app then return end
local appName = app:name()

-- 延迟 0.2s 再判断,避免窗口还没完全销毁时判断错误
hs.timer.doAfter(0.2, function()
-- 检查该应用是否**已经没有任何窗口**
local allWindows = app:allWindows()
if not allWindows or #allWindows == 0 then
-- 强制退出进程
app:kill()
-- 可选:通知中心提示(可删掉)
hs.notify.new({
title = "已强制退出",
subTitle = appName,
autoWithdraw = true
}):send()
end
end)
end)
g1vemep0wer
4 月 9 日
@19cm 不清楚,退出 app 简单,但是想从 dock 栏移除我印象里没看到过类似 api ,系统默认的行为,就算手动退出也会有记录,但是你可以手动关闭 dock 历史记录功能,这样 dock 右边这块所有记录都没了
g1vemep0wer
4 月 9 日
@19cm 或者你直接编辑 ~/Library/Preferences/com.apple.dock.plist 文件,里边存了最近打开的 app ,删除后,kill dock 也能曲线救国
19cm
4 月 9 日
@g1vemep0wer #9 诶,找不到完美方案,我干脆直接 把 在程序坞中显示建议 App 和最近使用的 App 给关掉了,至少不会让 iina 这种占位置了

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1032079

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX