Tinycast Palette 完全指南:单窗口启动器的键盘导航、屏幕栈与外观定制

发布时间:2026/9/20 7:25:06

Tinycast Palette 完全指南:单窗口启动器的键盘导航、屏幕栈与外观定制 Tinycast Palette 完全指南单窗口启动器的键盘导航、屏幕栈与外观定制【免费下载链接】tinycastTinycast — a tiny, fully native macOS launcher, hotkeys, and clipboard history.项目地址: https://gitcode.com/GitHub_Trending/ti/tinycastTinycast 是一个原生 macOS 启动器应用而它的整个交互都发生在一个浮动的调色板Palette窗口中启动器是根屏幕其余所有功能AI 对话、剪贴板历史、计算器历史、Emoji、文件搜索等都是从它打开的屏幕。本文以 Tinycast 官方文档为骨架结合仓库源码Tinycast/Palette 目录与 AppSettings.swift深入讲解这个调色板窗口的键盘导航体系、Tab 三屏循环、屏幕栈机制、打开位置控制、外观设置与输入源切换读完你就能像快捷键专家一样驾驭 Tinycast并理解其背后的实现原理。一个面板承载一切Tinycast 的单一窗口哲学Almost everything Tinycast does happens in one floating panel. 几乎 Tinycast 的所有功能都发生在同一个浮动面板中。每个功能要么是启动器launcher即根屏幕要么是从启动器打开的屏幕。esc键负责沿着你来的路径逐级后退——这正是屏幕栈模型的体现。从源码看PaletteState.swift 中维护了一个backStack: [PaletteFrame]每次打开新屏幕时push(mode:)将当前屏幕连同查询文本与选中行一起压栈按esc时pop()恢复下层屏幕的mode、query与selection实现回去就像从未离开过的体验。移动与操作核心快捷键一览按键作用return对当前选中项执行主操作⌘return第二操作通常是在 Finder 中显示或复制⌘K为当前选中项打开动作菜单Actions menu↑↓移动选中项tab在启动器、AI Chat 与剪贴板之间切换esc先清空搜索然后返回上一屏幕最后关闭窗口⌘esc从任意屏幕直接跳回根搜索delete在空搜索框中时返回上一屏幕⌘,打开设置⌘W关闭窗口⌘K是你学习这款应用的钥匙。每个屏幕都会在动作菜单中列出它的全部动作且每个动作旁都印有对应快捷键。完整的快捷键清单见 Keyboard shortcuts。在源码层面动作菜单通过 PaletteScreen.swift 的PaletteScreen协议实现每个屏幕提供actions(at:)或menuContent(at:searchQuery:menuSelection:onActivate:)返回PopoverMenuContent并支持在菜单中直接输入过滤ActionMenuSearchQuery会对菜单项标题打分见matching(_:)扩展选中行后回车即触发动作。除启动器外的每个屏幕左上角都有一个返回箭头。悬停它可以看到点击是后退一步还是关闭窗口。这是因为esc的逐级行为见下文屏幕栈使返回箭头的语义可能随栈深而变化。⌘esc需要 辅助功能Accessibility权限因为 macOS 默认占用这个组合键除非 Tinycast 先截获它。Emacs 按键如果你的手指熟悉 Emacs这些按键在整个调色板中随处可用按键等价于⌃N↓⌃P↑⌃F→⌃B←在 emoji 网格 上这四个键都移动选中项在其他任何地方⌃F和⌃B移动文本光标——因为在搜索框里这才是你通常想要的。带额外修饰键的组合如⌃⇧Q则原样保留不参与映射。从实现看这种按位置而非字符的映射贯穿整个键盘处理PaletteShortcut.swift 中resolve(command:shift:option:control:isDeleteKey:matches:)通过matches: (Character) - Bool闭包按当前布局下的按键位置来匹配字符。文档也明确指出快捷键跟随按键位置而不是输入源输出的字符。如果你使用日文、俄文或其他非拉丁布局⌘K依然是⌘K。Tab 在三屏之间循环tab在一个小循环中往返launcher启动器→ AI Chat → clipboard剪贴板→ launcher。从启动器按tab是提问。你输入的文本会被作为问题发送到一个全新的 AI 对话中所以一次按键就能把一次搜索变成一个问题。当这种情况将要发生时头部会显示AI Chat提示和一个tab键图标。从剪贴板出发你的搜索文本会随你一起回到启动器。esc按tab进来的原路退回去。当 AI 关闭时AI Chat 从循环中退出当 剪贴板历史 关闭时剪贴板从循环中退出。其他屏幕——比如计算器历史或搜索快捷链接——始终保持在循环之外。那些是你主动选择去的地方而不是应该意外降落的地方。唯一的例外当选中的行需要参数时比如一个 快捷链接 或 扩展命令tab会先遍历它的参数字段。源码中的对应实现非常精确PaletteTabAction.swift 的resolve(mode:aiEnabled:clipboardEnabled:)描述了三种动作.ask——从启动器进入 AI 时把已输入文本当作问题case .launcher: if aiEnabled { return .ask }.carryQuery(mode)——把查询文本带到另一端剪贴板 → 启动器.freshScreen(mode)——进入全新屏幕AI → 剪贴板时 AI 的半截消息不属于任何人的搜索。被关闭的功能停靠点会离开循环在代码里同样成立case .launcher:下若 AI 关闭则clipboardEnabled ? .carryQuery(.clipboard) : .carryQuery(.launcher)即直接跳过停靠点。循环的状态转移由 PaletteState.swift 的pushCarryingQuery(mode:)与resetNavigation()完成——前者压栈并切换模式后者在 Tab 回到根启动器时清空栈。屏幕如何堆叠在启动器中输入某个屏幕的名字来打开它该屏幕会堆叠在顶层因此esc会带你回到找到它的那次搜索。如果用屏幕自身的全局快捷键打开同一个屏幕它会独立打开背后没有任何东西。再次按下该快捷键则关闭它。设置 → 通用 → Escape Key Behavior退出键行为决定当搜索框已经为空时esc做什么Navigate back or close window返回或关闭窗口默认返回上一屏幕仅在根屏幕时关闭窗口。Close window and pop to root关闭窗口并回到根立即关闭下次从启动器开始。无论哪种方式第一次按下总是会先清空你输入的任何文本。源码层面PaletteEscapeAction.swift 把退出行为建模成一个按优先级排列的枚举clearMenuQuery→closeMenu→leaveArgumentField→clearQuery→exitExtensionScreen→goBack→hidePalette。解析顺序与文档描述完全一致先处理打开的动作菜单再处理参数字段比搜索框更深一层因此先退出然后清空查询最后按EscapeKeyBehavior定义在 EscapeKeyBehavior.swift决定是goBack还是hidePalette。扩展命令.extensionCommand会先弹出自己的导航栈再退出命令。该行为偏好由 AppSettings.swift 中的escapeKeyBehavior属性持久化默认.navigateBackOrClose。它在哪里打开设置 → 通用 → 外观Appearance同时包含两个位置设置。跟随光标跨显示器打开默认开启会在指针所在的显示器上打开调色板。关闭后则始终使用带菜单栏的那台显示器。对应偏好是openOnCursorScreenAppSettings.swift默认值为 true未设置时按 true 处理。拖拽重新定位默认关闭允许你移动面板。抓住搜索框上方那条细边、头部区域的空白处或空着的搜索框本身即可拖动。对应偏好paletteDraggableAppSettings.swift默认关闭注释解释了原因默认关闭这样大多数启动不会误抓它。拖动过程中虚线引导会显示默认位置当你足够近时亮起表示可以吸附。在那里松手就会吸附回默认位置在其他任何地方松手Tinycast 会记住这个位置即使重启后也仍然有效。源码揭示了位置记忆的细节PalettePlacement.swift 定义了默认锚点defaultAnchor居中、顶部边距为可见区域高度的一小部分、向下生长并以相对于当前显示器的方式存储偏移offset(of:on:)把锚点转为距左边缘的距离 距顶部的距离anchor(for:on:)再转回来。记忆的位置在 AppSettings.swift 中按显示器分别保存palettePositions: [String: [Double]]key 是显示器标识这正是跨显示器独立记忆的机制。而restored(_:graspable:visibleFrame:minimumVisible:)实现了文档中只有没有任何屏幕能再显示调色板时才丢弃记忆位置的逻辑——当显示器上可见区域过小比如拔掉了外接显示器时返回 nil从而放弃该记忆点。记忆的位置不会被包含在备份中因为窗口位置不会在不同的 Mac 之间迁移。外观Appearance设置 → 通用 → 外观包含以下设置设置项选项默认值主题Theme跟随系统 · 浅色 · 深色跟随系统界面尺寸Interface size默认 · 大 · 更大默认背景透明度Background transparency从更少到更多的滑块带重置中间紧凑模式Compact mode开 · 关关紧凑模式下显示收藏Show favorites in compact mode开 · 关开主题。跟随系统会随 macOS 的变化而切换。浅色是同一套设计反色后的结果布局、字体与动效完全一致。偏好appearance由 AppSettings.swift 持久化注释指明由AppCore.applyAppearance()应用。界面尺寸让调色板及其浮动窗口放大 10% 或 20%。设置窗口本身保持原尺寸。实现上InterfaceSize.swift 定义了三个档位standardscale 1.0、large1.1、larger1.2并通过InterfaceMetrics(scale:)把缩放注入调色板的全部度量——因此浮动窗口也随动、设置窗口不变是由指标注入范围决定的。背景透明度改变桌面的玻璃效果透出程度。重置恢复原始观感。偏好paletteTransparency在 AppSettings.swift 中按 -100 到 100 的整数夹取存储max(-100, min(100, ...))。紧凑模式将启动器打开为一条纤细的搜索栏随着你输入逐渐生长为完整列表。↓展开它并选中第一行。开启Show favorites in compact mode后你的收藏应用会位于搜索栏右侧见 Favorites。对应偏好compactMode与showFavoritesInCompactMode默认开见 AppSettings.swift。Toggle System Appearance切换系统外观 动作改变的是macOS 本身。Tinycast 只有在自己的主题设置为跟随系统时才会随之变化。输入源Input source设置 → 通用 → 自动切换输入源可以挑选一个在调色板打开期间使用的键盘布局。如果你大部分时间输入日文或中文而应用名是拉丁字母这个功能能省去每次打开启动器时的手动切换。Tinycast 会在调色板打开时切换输入源关闭时切换回来。如果它在打开期间你自己改了布局你的选择会被保留。偏好autoSwitchInputSourceIDAppSettings.swift保存布局标识设为 nil 时从 UserDefaults 移除键即不自动切换。回到根搜索Pop to root设置 → 通用 → Pop to Root Search决定窗口关闭后 Tinycast 多久回到启动器Immediately立即默认或 5、15、30、60、90 秒后。如果你经常关闭调色板后又马上回到同一屏幕可以把时间调长。对应偏好popToRootTimeoutAppSettings.swift底层枚举 AppSettings.swift 的PopToRootTimeout定义了immediately 0及 5/15/30/60/90 秒六个档位。AI Chat 对会话是否重新打开有自己的规则见 AI Chat。菜单栏Tinycast 的菜单栏图标包含Open Tinycast打开 Tinycast、Clipboard History剪贴板历史、Settings…设置…、Check for Updates…检查更新…、Support Tinycast…支持 Tinycast…和Quit Tinycast退出 Tinycast。设置 → 通用 → 在菜单栏中显示可以隐藏该图标。即使没有图标你的快捷键依然正常工作——对应偏好键showInMenuBarSettingsKey由菜单栏项和通用设置页共同读写。进一步阅读全部屏幕模式的枚举定义PaletteMode.swift其中每个模式还带有系统图标与搜索框占位符placeholder例如启动器是Search for apps and commands…、AI 是Ask anything…。调色板的快捷键解析与⌘K 动作菜单设计PaletteShortcut.swift 与 PaletteScreen.swift。窗口打开/关闭的完整状态机PaletteState.swift。官方完整快捷键参考Keyboard shortcuts。【免费下载链接】tinycastTinycast — a tiny, fully native macOS launcher, hotkeys, and clipboard history.项目地址: https://gitcode.com/GitHub_Trending/ti/tinycast创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
延伸阅读

更多相关文章

2026/9/20 7:25:06

智能运维调用链根因分析:基于 Trace 关键路径算法

智能运维调用链根因分析:基于 Trace 关键路径算法在现代微服务与分布式中台架构中,当一次前端用户请求(如点击“立即下单”)响应耗时从平常的 80ms 飙升至 1500ms 时,分布式链路追踪系统(如 OpenTelemetry …

2026/9/20 7:25:06

Opencode接入第三方模型完整教程:安装、配置、实战与排错

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/20 11:10:28

电力系统经济调度的多智能体一致性算法与Matlab实现

1. 项目概述:电力系统经济调度的智能解法在电力系统运行中,经济调度一直是个经典难题。传统集中式调度方法虽然成熟,但随着新能源大规模并网和电力市场开放,其局限性日益凸显——计算复杂度高、通信负担重、容错性差。这就好比让一…

2026/9/20 11:10:28

OpenClaw 2.7.1 跑 Skill,Base URL 填 TaoToken

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/20 11:10:28

Codex CLI 评测:TaoToken 实测拆一个 Node 仓库模块的 Token 与轮次

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/20 11:05:28

uniapp商城与团购源码实战:从选型拆解到打包上架避坑指南

简介:面向uniapp与mpvue开发者的跨端项目源码合集,覆盖商城团购、外卖点餐、音乐播放、新闻资讯、在线聊天、智能家居等常见业务场景,既能作为新手从零学习组件化开发与生命周期管理的练习素材,也可为中小团队快速搭建小程序提供可…

2026/9/20 0:04:49

GAMP 5 基于风险的计算机化系统验证:软件分类与审计追踪实践

简介:《A Risk-Based Approach to Compliant GxP Computerized Systems》即业内熟知的GAMP 5指南,面向制药企业质量与IT合规人员、验证工程师及计算机化系统管理者,用于解决GxP法规环境下系统合规性难以科学落地的问题。文档以风险管理为主线…

2026/9/20 0:04:49

安全托管MSSP实战:从静态防御到人机协同的攻防运营与应急响应

简介:这份PPT围绕互联网业务安全托管服务展开,面向企业安全负责人、IT运维人员及关注MSSP/MSS选型的读者,重点回应传统安全过度依赖人工、碎片化静态防御难以对抗产业化攻击等痛点。资源共1个pptx文件,包体约30.63MB,以…

2026/9/20 0:04:49

GAMP 5 基于风险的计算机化系统验证:软件分类与审计追踪实践

简介:《A Risk-Based Approach to Compliant GxP Computerized Systems》即业内熟知的GAMP 5指南,面向制药企业质量与IT合规人员、验证工程师及计算机化系统管理者,用于解决GxP法规环境下系统合规性难以科学落地的问题。文档以风险管理为主线…

2026/9/20 0:04:49

安全托管MSSP实战:从静态防御到人机协同的攻防运营与应急响应

简介:这份PPT围绕互联网业务安全托管服务展开,面向企业安全负责人、IT运维人员及关注MSSP/MSS选型的读者,重点回应传统安全过度依赖人工、碎片化静态防御难以对抗产业化攻击等痛点。资源共1个pptx文件,包体约30.63MB,以…

2026/9/20 4:54:47

USB Type-C PCB布局分区设计:电源、高速信号与PD协议全攻略

做硬件这行,Type-C接口算是典型的“看着简单,做起来全坑”的东西。光引脚就24个,高低速信号、电源、控制线全部塞在一个小小的连接器里,如果PCB布局不做规划,打样回来基本就是“插上没反应”、“高速掉线”、“静电一打…

2026/9/20 5:01:23

系统编程学习原型如何补齐稳定性边界

系统编程学习原型如何补齐稳定性边界预算有限时&#xff0c;我先优化明显多余的复制&#xff0c;而不是猜测性地换容器。用借用传递只读数据通常就能减少分配&#xff1a; fn parse(line: &str) -> Result<Item, Error> { /* ... */ }用基准确认热点确实在分配&am…

2026/9/20 5:09:33

雨花区哪家财务公司代理记账比较好?

在雨花区&#xff0c;企业处理财税事务常常面临诸多挑战&#xff0c;选择一家靠谱的财务公司至关重要。湖南巨勤财务管理咨询有限公司就是本地正规实体财税服务机构&#xff0c;深耕本地工商财税行业多年&#xff0c;熟悉当地工商局、税务局最新政策与申报流程。主营公司注册、…

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
咨询二维码