
开发工具桌面应用【免费下载链接】OpenInTerminal✨ Finder Toolbar app for macOS to open the current directory in Terminal, iTerm, Hyper or Alacritty.项目地址https://gitcode.com/gh_mirrors/op/OpenInTerminal点击查看免费下载导读OpenInTerminal 是一套为 macOS 访达Finder设计的效率工具其中Lite 系列OpenInTerminal-Lite与OpenInEditor-Lite以点击一次即完成打开为设计目标让用户无需离开访达窗口即可在当前目录中启动终端或在当前选中文件上唤起编辑器。本文基于仓库内 Resources/README-Lite-zh.md 展开结合OpenInTerminalCore框架的源码实现完整讲解 Lite 系列的安装方式、三种典型使用场景、默认应用设置含defaults命令参考表、深色模式图标切换与常见问题排查。读完本文你将能够独立完成 Lite 应用的部署与配置并理解其一次点击打开背后的 AppleScript、ScriptingBridge 与 UserDefaults 工作机制。一、Lite 系列是什么项目定位与适用场景OpenInTerminal 项目包含两个并行的产品线完整版OpenInTerminal以访达扩展Finder Extension形式提供工具栏按钮、右键菜单与快捷键支持拥有图形化设置界面Lite 系列OpenInTerminal-Lite终端版与OpenInEditor-Lite编辑器版是两个独立的轻量应用直接常驻在访达工具栏中。根据 Resources/README-zh.md 的功能对比Lite 系列与完整版在核心能力上保持一致均支持 Terminal、iTerm、Hyper、Alacritty、kitty、Warp、WezTerm、Tabby、Ghostty、cmux 等终端以及 Xcode、Visual Studio Code、Sublime Text、JetBrains 全家桶、Typora、Nova、Cursor、neovim 等编辑器两者的主要差异在于 Lite 系列不提供图形化设置界面和键盘快捷键但换来的是只需一次点击即可完成打开操作行为更轻量、更稳定。从源码结构看Lite 应用本身几乎没有 UI 代码——OpenInTerminal-Lite 的入口 main.swift 和 OpenInEditor-Lite 的入口 main.swift 启动后立即读取默认应用配置并执行打开动作随后进程即结束。这也是它一次点击、无需二次确认体验的来源。二、安装与启用1) 通过 Homebrew 安装Lite 系列的两个应用均已发布为 Homebrew Cask任选其一运行brew install --cask openinterminal-lite # 或者 brew install --cask openineditor-lite2) 手动安装从项目的 release 页面下载对应应用将应用移动到/Applications应用程序文件夹在应用程序文件夹中按住Cmd键将应用图标拖到访达窗口的工具栏中完成固定。⚠️首次运行权限当第一次运行应用时macOS 会要求授予访达和终端或 iTerm的自动化控制权限请务必点击允许。这一要求来自应用的自动化能力声明——在 OpenInTerminal-Lite 的 Info.plist 中可以看到NSAppleEventsUsageDescription键值为Please give permissions to access your Finder Terminal这正是 macOS 弹出权限提示框时展示的文案来源。3) 底层机制一次点击做了什么Lite 应用启动后会执行 App.swift 中的openOutsideSandbox()通过FinderManager获取访达最前窗口的路径或当前选中文件/文件夹的路径若既没有打开的访达窗口也没有选中项则回退到~/Desktop桌面路径若目标应用是系统内置支持的 Terminal则通过ScriptingBridgeSBApplication直接调用其open方法并activate()否则构造open -a AppName path形式的命令包裹在do shell script的 AppleScript 中执行。路径获取逻辑位于 FinderManager.swift优先取 Finder 选中项无选中项时取最前窗口的target路径若选中项是文件而非目录会调用deletingLastPathComponent()自动取其父目录路径——这正是在终端中打开选中的文件所在目录这一行为的实现依据。三、三种使用方式Lite 系列覆盖三种典型操作均基于当前 Finder 上下文执行1) 在终端或编辑器中打开当前目录直接点击访达工具栏中的应用图标即可在默认终端中打开当前访达窗口所在的目录或在默认编辑器中打开该目录。2) 在终端或编辑器中打开选中的文件夹或文件在访达中选中一个文件夹或文件后点击图标选中文件夹 → 直接在该文件夹中打开终端/编辑器选中文件 → 终端会在该文件所在目录打开见上文FinderManager的父目录回退逻辑编辑器则会直接打开该文件。3) 在自定义应用中打开例如 GitHub Desktop除了内置支持的应用清单你还可以将任意已安装应用指定为默认打开方式。以 GitHub Desktop 为例它虽不是终端也非编辑器但通过下述自定义应用配置即可将当前目录交给它处理。⚠️兼容性提示并非所有应用都支持以命令行方式打开目录。判断方法见常见问题第 4 条。四、设置默认终端与编辑器1) 首次运行时的选择器首次运行应用时会弹出一个下拉选择框让你挑选默认终端或编辑器选择后写入偏好设置此后选择框不再出现。从源码看这个选择器经过了精心设计见 OpenInTerminal-Lite 的 main.swift通过FinderManager.getAllInstalledApps()扫描/Applications、~/Applications以及 JetBrains Toolbox 目录本机已安装的应用会排在列表最前面并显示真实的磁盘图标未安装的应用则排在分隔线之后、以灰色文字和内置于 Icons.xcassets 的图标展示——这样无论支持多少种应用选择框都能保持紧凑。补充getAllInstalledApps()还会对安装名做归一化处理例如iTerm2.app会显示为iTerm、IntelliJ IDEA CE会显示为IntelliJ IDEAneovim 因为是命令行工具没有.app会通过检测/opt/homebrew/bin、/usr/local/bin等常见路径中的nvim可执行文件来判断是否已安装。2) 重新选择默认应用若想重新设置默认终端/编辑器在终端中先删除已保存的偏好再重新运行应用即可# 对于 OpenInTerminal-Lite: defaults remove wang.jianing.app.OpenInTerminal-Lite LiteDefaultTerminal # 对于 OpenInEditor-Lite: defaults remove wang.jianing.app.OpenInEditor-Lite LiteDefaultEditor对应的偏好键定义在 Defaults.swiftLiteDefaultTerminal/LiteDefaultEditor存储于标准的UserDefaults.standard中。3) 用defaults write直接指定默认应用无需打开应用直接通过defaults write即可将下列应用设为默认应用命令Alacrittydefaults write wang.jianing.app.OpenInTerminal-Lite LiteDefaultTerminal Alacrittycmuxdefaults write wang.jianing.app.OpenInTerminal-Lite LiteDefaultTerminal cmuxkittydefaults write wang.jianing.app.OpenInTerminal-Lite LiteDefaultTerminal kittyGhosttydefaults write wang.jianing.app.OpenInTerminal-Lite LiteDefaultTerminal ghosttyTextEditdefaults write wang.jianing.app.OpenInEditor-Lite LiteDefaultEditor TextEditVSCodiumdefaults write wang.jianing.app.OpenInEditor-Lite LiteDefaultEditor VSCodiumBBEditdefaults write wang.jianing.app.OpenInEditor-Lite LiteDefaultEditor BBEditVisual Studio Code - Insidersdefaults write wang.jianing.app.OpenInEditor-Lite LiteDefaultEditor Visual\ Studio\ Code\ -\ InsidersTextMatedefaults write wang.jianing.app.OpenInEditor-Lite LiteDefaultEditor TextMateCotEditordefaults write wang.jianing.app.OpenInEditor-Lite LiteDefaultEditor CotEditorMacVimdefaults write wang.jianing.app.OpenInEditor-Lite LiteDefaultEditor MacVimTyporadefaults write wang.jianing.app.OpenInEditor-Lite LiteDefaultEditor TyporaNeovimdefaults write wang.jianing.app.OpenInEditor-Lite LiteDefaultEditor neovimNovadefaults write wang.jianing.app.OpenInEditor-Lite LiteDefaultEditor NovaCursordefaults write wang.jianing.app.OpenInEditor-Lite LiteDefaultEditor CursorAppCodedefaults write wang.jianing.app.OpenInEditor-Lite LiteDefaultEditor AppCodeCLiondefaults write wang.jianing.app.OpenInEditor-Lite LiteDefaultEditor CLionGoLanddefaults write wang.jianing.app.OpenInEditor-Lite LiteDefaultEditor GoLandIntelliJ IDEAdefaults write wang.jianing.app.OpenInEditor-Lite LiteDefaultEditor IntelliJ\ IDEAPhpStormdefaults write wang.jianing.app.OpenInEditor-Lite LiteDefaultEditor PhpStormPyCharmdefaults write wang.jianing.app.OpenInEditor-Lite LiteDefaultEditor PyCharmRubyMinedefaults write wang.jianing.app.OpenInEditor-Lite LiteDefaultEditor RubyMineWebStormdefaults write wang.jianing.app.OpenInEditor-Lite LiteDefaultEditor WebStormAndroid Studiodefaults write wang.jianing.app.OpenInEditor-Lite LiteDefaultEditor Android\ Studio注意应用名中的空格需要以\转义如Visual\ Studio\ Code这与defaults命令的 shell 语法要求一致。4) 设置自定义应用内置清单之外的应用即未在上表出现的名字同样可以直接写入。以 GitHub Desktop 为例defaults write wang.jianing.app.OpenInTerminal-Lite LiteDefaultTerminal GitHub\ Desktop写入后应用会以open -a GitHub\ Desktop 目录路径的方式启动它。底层命令构造位于 DefaultsManager.swift除 Alacritty、kitty、WezTerm、Tabby、neovim、GitKraken 有专用命令模板外其余一律回退到通用的open -a AppName形式。5) 针对 Neovim 用户的配置若选择 Neovim 作为编辑器应用默认使用 Kitty 作为承载终端默认命令见 Constants.swift 的neovim模板。如需切换到其他终端可重写NeovimCommand偏好注意将示例中的/opt/homebrew/bin/nvim替换为你实际的 Neovim 安装路径defaults write wang.jianing.app.OpenInEditor-Lite NeovimCommand open -na Alacritty --args -e /opt/homebrew/bin/nvim PATH其他终端对应的命令模板// Kitty: open -na kitty --args /opt/homebrew/bin/nvim PATH // WezTerm: open -na wezterm --args start /opt/homebrew/bin/nvim PATH // Alacritty: open -na Alacritty --args -e /opt/homebrew/bin/nvim PATH其中的PATH是一个占位符从 App.swift 可以看到当目标是 neovim 时应用会把命令字符串中的PATH替换为实际的路径列表支持一次打开多个选中文件。这是 Neovim 支持多文件打开而其他编辑器采用追加路径方式的原因。6) 针对 Kitty 用户的配置Kitty 的默认启动行为是为每条命令打开一个新实例Lite 为其内置了单实例命令open -na kitty --args --single-instance --instance-group 1 --directory如需自定义该行为可运行defaults write wang.jianing.app.OpenInTerminal-Lite KittyCommand open -na kitty --args --single-instance --instance-group 1 --directory对应的默认值同样定义在 Constants.swift。需要注意的是修改后请重启应用使配置生效。五、深色模式Dark Mode下的图标切换Lite 应用以工具栏图标形式常驻访达应用本身默认使用深色模式也能清晰显示的图标。项目在 release 中提供了多套图标资源本仓库的 Resources/dynamic-icons 目录下也内置了icon_terminal_dynamic.icns、icon_editor_dynamic.icns、icon_iterm_dynamic.icns、icon_hyper_dynamic.icns、icon_atom_dynamic.icns、icon_sublime_dynamic.icns、icon_vscode_dynamic.icns等动态图标文件可作为自定义图标的素材。a. 手动更换图标右键单击应用图标选择显示简介将心仪的.icns图标文件拖到显示简介窗口左上角的应用图标上若同时启用了访达缓存可在显示简介中重新拖拽或重启访达使变更生效。b. 利用 Hammerspoon 自动更换图标如果你使用 macOS 的自动深色模式随系统外观自动切换可以借助 Hammerspoon fileicon 实现图标随明暗模式自动切换。步骤 1安装 Hammerspoon下载最新版本并拖入/Applications文件夹或使用 Homebrew 安装brew install --cask hammerspoon步骤 2安装 fileiconfileicon 用于以命令行方式修改应用图标brew install fileicon步骤 3准备图标素材创建~/.hammerspoon/Icons文件夹将明暗两套图标放入其中命名形如icon_editor_light.icns与icon_editor_dark.icns可参考仓库Resources/dynamic-icons下的动态图标素材。步骤 4编写 Hammerspoon 配置创建或编辑~/.hammerspoon/init.lua添加以下代码local function setOpenInEditorLiteIcon(dark) -- 如果安装到其他路径请替换下面的路径 local appPath /Applications/OpenInEditor-Lite.app -- 根据你想使用的图标(editor, atom, sublime, vscode)来更改下面的类型 local iconType editor local iconsFolder hs.fs.currentDir() .. /Icons local theme dark and dark or light hs.execute(fileicon set .. appPath .. .. iconsFolder .. /icon_ .. iconType .. _ .. theme .. .icns, true) end local function setOpenInTerminalLiteIcon(dark) -- 如果安装到其他路径请替换下面的路径 local appPath /Applications/OpenInTerminal-Lite.app -- 根据你想使用的图标(terminal, iterm, hyper)来更改下面的类型 local iconType terminal local iconsFolder hs.fs.currentDir() .. /Icons local theme dark and dark or light hs.execute(fileicon set .. appPath .. .. iconsFolder .. /icon_ .. iconType .. _ .. theme .. .icns, true) end local function updateIcons() darkMode (hs.settings.get(AppleInterfaceStyle) Dark) setOpenInEditorLiteIcon(darkMode) setOpenInTerminalLiteIcon(darkMode) end updateIcons() hs.settings.watchKey(dark_mode, AppleInterfaceStyle, function() updateIcons() end)步骤 5生效与验证重新加载 Hammerspoon 配置或重启 Hammerspoon并勾选登录时启动 Hammerspoon。之后系统在亮色与深色模式之间切换时Lite 应用图标将自动随之更新。补充说明hs.settings.watchKey(dark_mode, AppleInterfaceStyle, ...)用于监听系统外观模式的变更事件脚本通过fileicon set将对应主题的.icns写入应用实现对应用图标的编程式替换。为什么完整版可以自动切换、Lite 不行访达工具栏中的图标来源不同OpenInTerminal-Lite工具栏里显示的是应用图标本身目前 macOS 没有公开 API 可以随外观自动更换应用图标因此需要借助 Hammerspoon 方案OpenInTerminal完整版工具栏里显示的是访达扩展图标由 FinderSync.swift 中的toolbarItemImage提供因此系统可以基于深色模式自动切换。六、使用 iTerm 时打开新标签页还是新窗口当默认终端为 iTerm 时你可以决定点击后是新开一个标签页还是新开一个窗口。默认行为是打开新窗口可通过 iTerm 自身的偏好键切换# 打开新的标签 defaults write com.googlecode.iterm2 OpenFileInNewWindows -bool false # 打开新的窗口 defaults write com.googlecode.iterm2 OpenFileInNewWindows -bool true这个键值不仅是手动配置手段——完整版应用在图形化设置中切换 iTerm 选项时底层执行的正是同一句defaults write命令见 DefaultsManager.swift 的setNewOption实现两种途径写入的是同一个偏好键因此不会互相覆盖。七、常见问题与故障排查1. 不小心点了不授权按钮如果首次弹出的权限提示被你误点拒绝可以通过tccutil重置系统自动化权限然后重新运行应用# 对于 OpenInTerminal-Lite: tccutil reset AppleEvents wang.jianing.app.OpenInTerminal-Lite # 对于 OpenInEditor-Lite: tccutil reset AppleEvents wang.jianing.app.OpenInEditor-Lite2. 路径中的特殊字符请不要在路径中使用反斜线\和双引号。这并非限制过严——从 PathExtensions.swift 的specialCharEscaped实现看路径会针对空格、括号、、|、;、引号、尖括号、反引号等字符做转义处理但源码中同时留有 FIXME 注释明确说明包含\与的路径会导致脚本异常。其余常见特殊字符如空格、括号、中文等均可正常工作。3. 为什么不能根据深色模式自动切换图标如第五节所述OpenInTerminal-Lite的工具栏图标是应用图标本身目前没有公开 API 可更换应用图标因此默认不支持自动切换现在可通过 Hammerspoon 方案实现参见上文。而OpenInTerminal的工具栏图标是访达扩展图标天然支持深色模式自动切换。4. 我的自定义应用不工作如果你的自定义应用无法通过下述命令正常打开目录说明该应用不支持以命令行方式接收目录路径因此也无法通过 OpenInTerminal 打开open -a GitHub\ Desktop ~/Desktop对于这类应用可以尝试改用它自身的打开最近使用功能或改用支持该行为的内置应用。八、深入阅读源码导航如果你想进一步理解 Lite 系列的内部实现可以按以下路径继续探索本仓库OpenInTerminal-Lite/OpenInTerminal-Lite/main.swift终端版入口默认应用读取 首次选择器逻辑OpenInEditor-Lite/OpenInEditor-Lite/main.swift编辑器版入口与终端版对称OpenInTerminalCore/App.swiftOpenable协议与openOutsideSandbox/openInSandbox的完整打开流程OpenInTerminalCore/FinderManager.swift获取 Finder 路径、扫描已安装应用、检测命令行工具的底层实现OpenInTerminalCore/SupportedApps.swift全部受支持终端/编辑器的名称与bundleId清单OpenInTerminalCore/DefaultsManager.swiftLiteDefaultTerminal/LiteDefaultEditor及各类打开命令的读写OpenInTerminalCore/Constants.swiftAlacritty、kitty、WezTerm、Tabby、neovim、GitKraken 的默认打开命令模板OpenInTerminalCore/Defaults.swiftLite 系列偏好键与 UserDefaults 键值定义OpenInTerminalCore/Extensions/PathExtensions.swift路径转义与目录提取工具OpenInTerminal-Lite/OpenInTerminal-Lite/Info.plist自动化权限声明NSAppleEventsUsageDescription。仓库内还提供了多语言版本的 Lite 使用文档English、中文、Deutsch以及完整版的中文文档 README-zh.md 和配置指南 README-Config-zh.md可作为进一步参考。赞分享开发工具桌面应用【免费下载链接】OpenInTerminal✨ Finder Toolbar app for macOS to open the current directory in Terminal, iTerm, Hyper or Alacritty.项目地址https://gitcode.com/gh_mirrors/op/OpenInTerminal点击查看免费下载相关推荐大麦自动抢票工具教程ticket-purchase 从环境到实战的完整配置大麦自动抢票工具教程ticket purchase 从环境到实战的完整配置 ticket purchase 是一个大麦自动抢票工具基于 Selenium 与开发工具桌面应用大麦自动抢票工具SeleniumAppium 双端部署手册大麦自动抢票工具SeleniumAppium 双端部署手册 大麦自动抢票工具是一款开源抢票工具通过 Python 自动化购票驱动 Selenium 与 A开发工具桌面应用OpenInTerminal-Lite 完整使用指南macOS Finder 工具栏一键打开终端与编辑器OpenInTerminal Lite 完整使用指南macOS Finder 工具栏一键打开终端与编辑器 OpenInTerminal Lite 是 macO开发工具桌面应用上一篇Dify 工作流模板库50 开箱即用的 AI 自动化流程实战手册下一篇英雄联盟Akari助手免费开源的终极游戏效率工具快速提升你的操作水平创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考