Skip to content

Commit d360962

Browse files
committed
feat(macos): 添加macOS环境初始化脚本和Hammerspoon配置
添加macOS环境初始化脚本,包括homebrew、powershell安装和zshrc配置 新增Hammerspoon配置实现Windows风格快捷键映射,包含窗口管理、文本编辑等功能 添加自动加载脚本和详细文档说明
1 parent 95f86b6 commit d360962

7 files changed

Lines changed: 963 additions & 1 deletion

File tree

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,5 +17,8 @@ if command_exists fnm; then
1717
eval "$(fnm env --use-on-cd --shell zsh)"
1818
fi
1919

20-
20+
# hammerspoon 相关配置
21+
# win.lua相关配置
22+
# 启用修饰键交换(默认行为)
23+
export HAMMERSPOON_MODIFIER_SWAP=true
2124

macos/hammerspoon/README.md

Lines changed: 212 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,212 @@
1+
# Hammerspoon Windows风格快捷键脚本
2+
3+
这个项目为macOS用户提供了Windows风格的快捷键映射,让经常使用Windows系统的用户在macOS上有更熟悉的操作体验。
4+
5+
## 📋 功能特性
6+
7+
### 🪟 窗口管理
8+
- **Alt+Tab**: 应用程序切换(类似Windows)
9+
- **Win+Tab**: 显示所有窗口(Mission Control)
10+
- **Win+D**: 显示桌面
11+
- **Win+L**: 锁定屏幕
12+
- **Win+E**: 打开Finder(类似Windows资源管理器)
13+
- **Win+R**: 运行对话框(Spotlight搜索)
14+
- **Win+X**: 系统工具菜单(打开系统偏好设置)
15+
16+
### 📐 窗口排列
17+
- **Win+Left**: 窗口靠左半屏
18+
- **Win+Right**: 窗口靠右半屏
19+
- **Win+Up**: 窗口最大化
20+
- **Win+Down**: 窗口最小化
21+
22+
### ✏️ 文本编辑
23+
- **Ctrl+A**: 全选
24+
- **Ctrl+C**: 复制
25+
- **Ctrl+V**: 粘贴
26+
- **Ctrl+X**: 剪切
27+
- **Ctrl+Z**: 撤销
28+
- **Ctrl+Y**: 重做
29+
- **Ctrl+S**: 保存
30+
- **Ctrl+F**: 查找
31+
- **Ctrl+N**: 新建
32+
- **Ctrl+O**: 打开
33+
- **Ctrl+P**: 打印
34+
- **Ctrl+W**: 关闭窗口/标签页
35+
- **Ctrl+T**: 新建标签页
36+
37+
### 🌐 浏览器快捷键
38+
- **Ctrl+Tab**: 下一个标签页
39+
- **Ctrl+Shift+Tab**: 上一个标签页
40+
- **F5**: 刷新页面
41+
- **Ctrl+R**: 刷新页面
42+
- **Ctrl+Shift+T**: 恢复关闭的标签页
43+
44+
### 🖥️ 系统快捷键
45+
- **Alt+F4**: 关闭应用程序
46+
- **Ctrl+Shift+Esc**: 打开活动监视器(类似任务管理器)
47+
- **Win+I**: 打开系统偏好设置
48+
- **Win+Pause**: 打开关于本机
49+
50+
### 📸 截图快捷键
51+
- **Print Screen (F13)**: 全屏截图
52+
- **Alt+Print Screen**: 窗口截图
53+
54+
### 🔊 音量控制
55+
- **Ctrl+Alt+Up**: 音量增加
56+
- **Ctrl+Alt+Down**: 音量减少
57+
- **Ctrl+Alt+M**: 静音切换
58+
59+
### 🖥️ 虚拟桌面
60+
- **Ctrl+Win+Left**: 切换到左边的桌面
61+
- **Ctrl+Win+Right**: 切换到右边的桌面
62+
- **Ctrl+Win+D**: 创建新的桌面
63+
64+
### 🚀 应用程序快速启动
65+
- **Win+1到Win+9**: 快速切换到运行中的应用程序
66+
67+
### 📁 文件管理器
68+
- **F2**: 重命名文件
69+
- **Delete**: 移到废纸篓
70+
- **Shift+Delete**: 永久删除
71+
- **Ctrl+Shift+N**: 新建文件夹
72+
73+
## 🛠️ 安装和使用
74+
75+
### 前置要求
76+
1. **安装Hammerspoon**:
77+
```bash
78+
brew install hammerspoon
79+
```
80+
或者从官网下载: https://www.hammerspoon.org/
81+
82+
2. **启动Hammerspoon**并给予必要的权限(辅助功能权限)
83+
84+
### 自动安装
85+
运行提供的zsh脚本来自动安装和配置:
86+
87+
```bash
88+
./load_scripts.zsh
89+
```
90+
91+
这个脚本会:
92+
- 检查Hammerspoon是否已安装
93+
- 备份现有的配置文件
94+
- 创建新的配置文件
95+
- 复制所有lua脚本到正确位置
96+
- 启动或重新加载Hammerspoon
97+
98+
### 手动安装
99+
如果你想手动安装:
100+
101+
1. 复制`win.lua``~/.hammerspoon/scripts/`目录
102+
2. 创建或修改`~/.hammerspoon/init.lua`文件来加载脚本
103+
3. 重新加载Hammerspoon配置
104+
105+
## 🔧 配置管理
106+
107+
### 修饰键配置
108+
脚本默认启用**修饰键交换模式**,将Windows风格的快捷键更好地适配到macOS:
109+
- **Win键****Ctrl键**(macOS的Control键)
110+
- **Ctrl键****Cmd键**(macOS的Command键)
111+
112+
#### 环境变量配置(推荐)
113+
通过设置环境变量来控制修饰键映射:
114+
115+
```bash
116+
# 禁用修饰键交换(使用标准映射)
117+
export HAMMERSPOON_MODIFIER_SWAP=false
118+
119+
# 启用修饰键交换(默认行为)
120+
export HAMMERSPOON_MODIFIER_SWAP=true
121+
```
122+
123+
将环境变量添加到你的shell配置文件中:
124+
```bash
125+
# 添加到 ~/.zshrc 或 ~/.bash_profile
126+
echo 'export HAMMERSPOON_MODIFIER_SWAP=false' >> ~/.zshrc
127+
source ~/.zshrc
128+
```
129+
130+
#### 全局变量配置(向后兼容)
131+
也可以通过在`~/.hammerspoon/init.lua`中设置全局变量:
132+
133+
```lua
134+
-- 在加载win.lua之前设置
135+
_G.modifierSwapped = false -- 禁用交换
136+
-- 然后加载脚本
137+
require('scripts.win')
138+
```
139+
140+
#### 配置模式对比
141+
142+
| 功能 | 交换模式(默认) | 标准模式 |
143+
|------|------------------|----------|
144+
| 窗口排列 | **Ctrl+方向键** | **Cmd+方向键** |
145+
| 文本操作 | **Cmd+C/V/X/Z** | **Ctrl+C/V/X/Z** |
146+
| 锁定屏幕 | **Ctrl+L** | **Cmd+L** |
147+
| 打开Finder | **Ctrl+E** | **Cmd+E** |
148+
| 系统设置 | **Ctrl+I** | **Cmd+I** |
149+
150+
**推荐使用交换模式**,因为它让Windows用户在macOS上有更自然的操作体验。
151+
152+
### 重新加载配置
153+
- **快捷键**: `Cmd+Alt+Ctrl+R`
154+
- **自动重载**: 修改lua文件后会自动重新加载
155+
156+
### 查看日志
157+
打开Hammerspoon控制台可以查看详细的加载日志和错误信息,包括当前的修饰键配置状态。
158+
159+
### 自定义配置
160+
你可以修改`win.lua`文件来自定义快捷键映射:
161+
162+
```lua
163+
-- 例如:添加新的快捷键
164+
hs.hotkey.bind({"cmd"}, "j", function()
165+
-- 你的自定义功能
166+
end)
167+
```
168+
169+
## 📁 文件结构
170+
171+
```
172+
hammerspoon/
173+
├── win.lua # 主要的Windows风格快捷键脚本
174+
├── load_scripts.zsh # 自动安装和配置脚本
175+
└── README.md # 说明文档
176+
```
177+
178+
安装后的Hammerspoon配置结构:
179+
```
180+
~/.hammerspoon/
181+
├── init.lua # 主配置文件(自动生成)
182+
└── scripts/
183+
└── win.lua # Windows风格快捷键脚本
184+
```
185+
186+
## 🐛 故障排除
187+
188+
### 快捷键不工作
189+
1. 确保Hammerspoon有辅助功能权限
190+
2. 检查是否有其他应用占用了相同的快捷键
191+
3. 查看Hammerspoon控制台的错误信息
192+
193+
### 脚本加载失败
194+
1. 检查lua语法是否正确
195+
2. 查看Hammerspoon控制台的错误日志
196+
3. 尝试重新加载配置(`Cmd+Alt+Ctrl+R`
197+
198+
### 权限问题
199+
1. 在系统偏好设置 > 安全性与隐私 > 隐私 > 辅助功能中添加Hammerspoon
200+
2. 重启Hammerspoon应用
201+
202+
## 🤝 贡献
203+
204+
欢迎提交Issue和Pull Request来改进这个项目!
205+
206+
## 📄 许可证
207+
208+
本项目采用MIT许可证。
209+
210+
## 🙏 致谢
211+
212+
感谢[Hammerspoon](https://www.hammerspoon.org/)项目提供了强大的macOS自动化工具。

macos/hammerspoon/init/init.lua

Lines changed: 111 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,111 @@
1+
-- Hammerspoon Configuration
2+
-- Auto-generated by load_scripts.zsh
3+
-- 自动生成的Hammerspoon配置文件
4+
5+
-- 设置日志级别
6+
hs.logger.defaultLogLevel = 'info'
7+
8+
-- 创建主日志记录器
9+
local log = hs.logger.new('main', 'info')
10+
11+
-- 显示加载开始消息
12+
log.i("开始加载Hammerspoon配置...")
13+
14+
-- 获取配置目录路径
15+
local configDir = hs.configdir
16+
local scriptsDir = configDir .. "/scripts"
17+
18+
-- 创建scripts目录(如果不存在)
19+
local scriptsPath = hs.fs.pathToAbsolute(scriptsDir)
20+
if not scriptsPath then
21+
hs.fs.mkdir(scriptsDir)
22+
log.i("创建scripts目录: " .. scriptsDir)
23+
end
24+
25+
-- 加载所有lua脚本的函数
26+
local function loadLuaScripts(directory)
27+
local loadedCount = 0
28+
local errorCount = 0
29+
30+
log.i("扫描目录: " .. directory)
31+
32+
-- 遍历目录中的所有文件
33+
for file in hs.fs.dir(directory) do
34+
if file:match("%.lua$") and file ~= "init.lua" then
35+
local filePath = directory .. "/" .. file
36+
local relativePath = file
37+
38+
log.i("尝试加载: " .. relativePath)
39+
40+
-- 尝试加载脚本
41+
local success, result = pcall(function()
42+
return dofile(filePath)
43+
end)
44+
45+
if success then
46+
log.i("✅ 成功加载: " .. relativePath)
47+
loadedCount = loadedCount + 1
48+
else
49+
log.e("❌ 加载失败: " .. relativePath .. " - " .. tostring(result))
50+
errorCount = errorCount + 1
51+
end
52+
end
53+
end
54+
55+
return loadedCount, errorCount
56+
end
57+
58+
-- 加载主配置目录中的lua文件
59+
local mainLoaded, mainErrors = loadLuaScripts(configDir)
60+
61+
-- 加载scripts子目录中的lua文件
62+
local scriptsLoaded, scriptsErrors = loadLuaScripts(scriptsDir)
63+
64+
-- 总计
65+
local totalLoaded = mainLoaded + scriptsLoaded
66+
local totalErrors = mainErrors + scriptsErrors
67+
68+
-- 显示加载结果
69+
if totalLoaded > 0 then
70+
local message = string.format("🎉 Hammerspoon配置加载完成!\n✅ 成功: %d个脚本\n❌ 失败: %d个脚本", totalLoaded, totalErrors)
71+
hs.alert.show(message, 3)
72+
log.i(message)
73+
else
74+
local message = "⚠️ 没有找到可加载的lua脚本"
75+
hs.alert.show(message, 2)
76+
log.w(message)
77+
end
78+
79+
-- 设置配置文件重新加载快捷键
80+
hs.hotkey.bind({"cmd", "alt", "ctrl"}, "R", function()
81+
hs.reload()
82+
end)
83+
84+
hs.alert.show("按 Cmd+Alt+Ctrl+R 重新加载配置", 2)
85+
86+
-- 监听配置文件变化并自动重新加载
87+
local function reloadConfig(files)
88+
local doReload = false
89+
for _, file in pairs(files) do
90+
if file:sub(-4) == ".lua" then
91+
doReload = true
92+
break
93+
end
94+
end
95+
if doReload then
96+
hs.timer.doAfter(0.5, function()
97+
hs.reload()
98+
end)
99+
end
100+
end
101+
102+
-- 监听配置目录变化
103+
local configWatcher = hs.pathwatcher.new(configDir, reloadConfig)
104+
configWatcher:start()
105+
106+
-- 监听scripts目录变化
107+
local scriptsWatcher = hs.pathwatcher.new(scriptsDir, reloadConfig)
108+
scriptsWatcher:start()
109+
110+
log.i("配置文件监听已启动")
111+
log.i("Hammerspoon配置加载完成!")

0 commit comments

Comments
 (0)