
1. 为什么鼠须管的皮肤值得单独折腾用 macOS 自带输入法的人大概率都有过这种体验候选词框要么白底黑字毫无个性要么跟随系统深色模式但字体大小、圆角、阴影全都不受自己控制。而鼠须管Squirrel作为一款基于 Rime 引擎的 macOS 输入法前端最大的特点就是一切皆可配置——包括输入法皮肤。它的皮肤系统不是简单的换张背景图而是通过 YAML 配置文件对候选词窗口的圆角、边框、阴影、字体、颜色、透明度、间距等几十个参数进行像素级控制。这意味着什么意味着你可以把候选框做成类似系统原生 Spotlight 的毛玻璃质感也可以做成极简的纯色方块甚至可以让它根据输入状态动态改变颜色。但问题也恰恰出在这里鼠须管的皮肤配置参数多、文档分散、不同版本之间还有差异很多人第一次打开squirrel.custom.yaml时完全不知道从哪下手。我见过太多人复制了一份网上的配置结果候选框直接消失或者颜色变成诡异的荧光绿最后只能删掉配置重来。这篇内容就是来解决这个问题的。我会把鼠须管皮肤配置的完整逻辑拆开讲清楚——从配置文件的位置、每个参数的实际效果到几套可以直接抄作业的完整皮肤方案再到配色时容易踩的坑。无论你是刚装上鼠须管的新手还是想深度定制但被参数劝退的老用户都能在这里找到能直接用的东西。整套内容基于 macOS 平台和鼠须管 0.16 及以上版本配置方式在 0.18 上同样适用。2. 皮肤配置文件的正确打开方式2.1 配置文件到底放在哪鼠须管的用户配置目录在~/Library/Rime/注意这个路径在 Finder 里默认是隐藏的。你可以用快捷键Command Shift G打开前往文件夹粘贴这个路径直接跳转。目录里会有一堆.yaml文件其中和皮肤直接相关的是squirrel.custom.yaml。如果这个文件不存在自己新建一个就行文件名必须完全一致包括大小写。这里有个很多人会忽略的细节不要直接改squirrel.yaml。那个是程序自带的默认配置每次升级鼠须管都会被覆盖。正确的做法是在squirrel.custom.yaml里写配置这个文件里的内容会覆盖默认值。配置写完后需要重新部署才能生效——点击菜单栏的鼠须管图标选择重新部署或者用快捷键Control Option ~调出菜单再选。部署过程中如果配置有语法错误候选框会直接不显示这时候别慌把配置文件里的内容清空再部署一次就能恢复。2.2 配置文件的整体结构squirrel.custom.yaml的结构是固定的所有皮肤相关的配置都写在patch:下面。一个最简结构长这样patch: style: color_scheme: my_scheme font_point: 16 corner_radius: 8 preset_color_schemes: my_scheme: name: 我的皮肤 back_color: 0xFFFFFF text_color: 0x000000 candidate_text_color: 0x333333 hilited_candidate_back_color: 0x4A90D9 hilited_candidate_text_color: 0xFFFFFFstyle下面控制的是全局的样式参数比如字体大小、圆角、透明度这些和具体配色无关的东西。preset_color_schemes下面定义的是配色方案每个方案有自己的名字和一组颜色值。color_scheme这个字段用来指定当前使用哪个配色方案值就是你在preset_color_schemes里定义的键名。2.3 颜色值的写法规则鼠须管里的颜色用的是ARGB 十六进制格式注意是 ARGB 不是 RGBA。前两位是透明度Alpha0x00是全透明0xFF是全不透明后面六位才是 RGB。比如0xFF4A90D9表示不透明的蓝色0x804A90D9表示半透明的蓝色。很多人从网上抄配置时发现颜色不对十有八九是把 ARGB 当成了 RGBA 来写。另外颜色值前面的0x不能省略也不能写成#。我试过用#FFFFFF这种 CSS 风格的写法鼠须管直接忽略这个字段候选框会用默认颜色而且不会有任何报错提示排查起来很费时间。3. 每个样式参数到底控制什么3.1 字体与排版相关参数font_point控制候选词的字体大小单位是 pt。这个值设得太大会导致候选框超出屏幕边缘太小又看不清。我个人的经验是 13 到 18 之间比较合适具体取决于你的屏幕分辨率和缩放设置。font_face用来指定字体名称比如PingFang SC或者SF Pro Text不写的话会用系统默认字体。candidate_format是一个容易被忽略但很有用的参数它控制候选词的显示格式。默认值是%c. %意思是序号 点 空格 候选词。你可以改成%c %去掉那个点或者改成%只显示候选词不显示序号。不过去掉序号后用数字键选词时会不太直观这个取舍看个人习惯。line_spacing控制候选词之间的行间距spacing控制候选框内文字与边框的距离。这两个参数配合调整能让候选框看起来更透气。我一般会把spacing设在 8 到 12 之间line_spacing设在 4 到 8 之间。3.2 边框、圆角与阴影corner_radius是圆角半径值越大越圆。想要完全直角就设 0想要胶囊形状就设成候选框高度的一半左右。border_height和border_width分别控制边框的上下和左右宽度注意这两个参数只影响边框的粗细不影响颜色——边框颜色是由配色方案里的border_color决定的。shadow_size控制阴影大小shadow_color控制阴影颜色。阴影这个东西在浅色背景下效果明显在深色背景下几乎看不出来。如果你用的是深色皮肤可以把shadow_size设小一点甚至设成 0省得浪费渲染性能。shadow_offset_x和shadow_offset_y控制阴影的偏移方向默认是向右下偏移改成负值可以向左上偏移。3.3 透明度与模糊效果translucency这个参数控制候选框的整体透明度值在 0 到 1 之间。设成true会启用半透明效果但具体透明度还是由配色方案里的back_color的 Alpha 通道决定。也就是说如果你想让候选框半透明需要同时做两件事把translucency设为true并且把back_color的 Alpha 值设成小于0xFF。blur_radius控制背景模糊半径这个参数只在translucency为true时生效。值越大模糊效果越明显但也会增加 GPU 负担。我实测下来blur_radius设在 10 到 20 之间效果比较自然超过 30 会明显感觉到候选框弹出时有延迟。color_space这个参数比较冷门它控制颜色空间默认是srgb。如果你发现颜色显示和预期有偏差可以试试改成display_p3在支持广色域的屏幕上颜色会更准确。4. 几套可以直接用的完整皮肤方案4.1 极简白底方案这套方案适合喜欢干净界面的人候选框是纯白底、深灰字、浅灰边框选中项用蓝色高亮。整体风格接近系统原生输入法但圆角和间距更舒服。patch: style: color_scheme: minimal_white font_point: 16 corner_radius: 10 border_height: 0 border_width: 0 spacing: 10 line_spacing: 6 shadow_size: 4 shadow_color: 0x20000000 preset_color_schemes: minimal_white: name: 极简白 back_color: 0xFFFFFFFF border_color: 0xE0E0E0 text_color: 0x333333 candidate_text_color: 0x333333 hilited_candidate_back_color: 0x4A90D9 hilited_candidate_text_color: 0xFFFFFF comment_text_color: 0x999999这套配置里我把border_height和border_width都设成了 0因为白色背景下边框容易显得脏。阴影用了很淡的黑色Alpha 值0x20让候选框有轻微的悬浮感但不突兀。4.2 深色毛玻璃方案这套方案适合深色模式用户候选框是半透明深灰底、白色字带背景模糊效果选中项用橙色高亮。整体质感接近 macOS 的毛玻璃效果。patch: style: color_scheme: dark_blur font_point: 16 corner_radius: 12 translucency: true blur_radius: 15 spacing: 12 line_spacing: 6 shadow_size: 8 shadow_color: 0x40000000 preset_color_schemes: dark_blur: name: 深色毛玻璃 back_color: 0xCC2D2D2D border_color: 0x40FFFFFF text_color: 0xFFFFFF candidate_text_color: 0xE0E0E0 hilited_candidate_back_color: 0xFF8C42 hilited_candidate_text_color: 0xFFFFFF comment_text_color: 0x808080注意back_color的 Alpha 值是0xCC大约是 80% 不透明度配合blur_radius: 15就能出毛玻璃效果。border_color用了半透明白色在深色背景上能勾出一个很细的亮边增加层次感。4.3 高对比度护眼方案这套方案适合长时间打字的人背景用了低饱和度的米黄色文字是深棕色减少蓝光刺激。选中项用深绿色高亮整体对比度适中不刺眼。patch: style: color_scheme: eye_care font_point: 17 corner_radius: 8 spacing: 10 line_spacing: 8 shadow_size: 0 preset_color_schemes: eye_care: name: 护眼米黄 back_color: 0xFFF5F0E1 border_color: 0xFFD7CFC0 text_color: 0xFF4A3F35 candidate_text_color: 0xFF4A3F35 hilited_candidate_back_color: 0xFF2E7D5B hilited_candidate_text_color: 0xFFFFFFFF comment_text_color: 0xFF8A7F70这套方案里我把shadow_size设成了 0因为米黄色背景本身就很柔和加阴影反而显得多余。字体大小调到了 17比默认稍大一点长时间看眼睛不容易累。5. 配色时最容易踩的五个坑5.1 候选框直接消失不见这是最常见的问题原因通常是配置文件语法错误。YAML 对缩进极其敏感必须用空格不能用 Tab同一层级的缩进必须完全一致。我建议用 VS Code 或者 Sublime Text 这类支持 YAML 语法高亮的编辑器来写配置缩进错了会直接标红。另外如果color_scheme指定的方案名在preset_color_schemes里找不到候选框也会不显示。排查方法是先把squirrel.custom.yaml内容全部清空部署一次确认输入法正常再逐段加回配置。5.2 颜色和预期完全不一样前面提过鼠须管用的是 ARGB 不是 RGBA。如果你从设计工具里复制了一个#4A90D9的颜色直接写进去会变成 Alpha 值为0x4A的半透明色看起来就是颜色变淡了。正确的写法是0xFF4A90D9。另外有些在线颜色工具输出的十六进制不带 Alpha你需要自己补上0xFF前缀。5.3 半透明效果不生效translucency和back_color的 Alpha 值必须配合使用。只设translucency: true但back_color的 Alpha 是0xFF候选框依然是不透明的。反过来只把back_color设成半透明但translucency是false也不会有透明效果。两个条件缺一不可。5.4 字体设置后没变化font_face里写的字体名称必须是系统里真实安装的字体而且要用字体的 PostScript 名称或者家族名称。比如苹方要写PingFang SC思源黑体要写Source Han Sans SC。写错了不会报错但字体会回退到系统默认。你可以在字体册应用里查看字体的准确名称。5.5 部署后配置没生效鼠须管的配置修改后必须重新部署才会生效。有时候部署了但没变化可能是因为配置文件里有缓存。可以试试先切换到其他输入法再切回来或者重启一下鼠须管进程。如果还是不行检查一下是不是改错了文件——必须是squirrel.custom.yaml不是squirrel.yaml也不是default.custom.yaml。6. 进阶玩法让皮肤跟着场景变6.1 根据输入模式切换配色鼠须管支持根据不同的输入方案比如拼音、双拼、五笔使用不同的皮肤。你可以在squirrel.custom.yaml里针对特定方案写配置patch: style/color_schemeluna_pinyin: dark_blur style/color_schemedouble_pinyin: minimal_white这样用拼音时是深色毛玻璃切换到双拼时自动变成极简白。这个功能在需要区分中英文输入场景时特别有用比如写代码时用一套低调的皮肤写文档时用另一套更醒目的。6.2 用脚本动态生成配色如果你对颜色有极致追求可以用 Python 脚本读取系统当前壁纸的主色调然后自动生成一套匹配的皮肤配色。思路是用PIL库提取壁纸的主色再根据主色计算互补色和对比色最后写入squirrel.custom.yaml并触发重新部署。这个玩法稍微复杂一点但效果很惊艳——你的输入法皮肤会随着壁纸自动变化。6.3 皮肤配置的版本管理鼠须管的配置文件是纯文本非常适合用 Git 做版本管理。我建议把整个~/Library/Rime/目录纳入 Git 仓库每次调整皮肤后提交一次。这样万一改坏了可以随时回滚换电脑时也能一键同步所有配置。注意.gitignore里要排除掉*.userdb这类用户词库文件那些是二进制格式而且体积很大。7. 我个人的几条实操心得折腾鼠须管皮肤这些年有几个经验是文档里不会写的。第一不要一次性改太多参数。每次只调一两个值部署后看效果确认没问题再继续。一次性改十几个参数出了问题根本不知道是哪个引起的。第二善用注释。YAML 支持#注释把你每个参数为什么设成这个值写在旁边过几个月回头看还能想起来。第三备份原始配置。在改任何东西之前先把squirrel.custom.yaml复制一份到桌面改坏了直接覆盖回来比一点点排查快得多。还有一点关于性能的观察blur_radius和shadow_size这两个参数对渲染性能影响最大。如果你用的是老款 Mac建议把blur_radius控制在 10 以内shadow_size控制在 5 以内。我实测在 2015 款 MacBook Pro 上blur_radius设到 25 时候选框弹出会有肉眼可见的延迟。另外translucency开启后候选框的渲染会走 GPU 合成路径在连接外接显示器时偶尔会出现闪烁这个目前没有完美的解决办法只能把透明度调高一点来缓解。最后分享一个快速预览配色的小技巧你不需要每次都部署才能看效果。可以先把配色方案写进squirrel.custom.yaml然后打开文本编辑应用随便打几个字触发候选框这时候改配置文件并保存再重新部署候选框会立即刷新。这样调整颜色的效率比反复切换应用高很多。