From a9ca97928cc69d618479491748675c3adb9b60d0 Mon Sep 17 00:00:00 2001 From: thinkgem Date: Wed, 13 May 2026 14:11:25 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=B7=BB=E5=8A=A0=E6=8B=B7=E8=B4=9D?= =?UTF-8?q?=E8=B7=AF=E5=BE=84=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 新增右键菜单'拷贝路径'选项 - 支持单个或多个文件路径复制 - 多个路径使用逗号分隔 - 复制到系统剪贴板 --- FinderSyncExtension/FinderSync.swift | 29 ++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/FinderSyncExtension/FinderSync.swift b/FinderSyncExtension/FinderSync.swift index f8330d0..f453c22 100644 --- a/FinderSyncExtension/FinderSync.swift +++ b/FinderSyncExtension/FinderSync.swift @@ -68,6 +68,7 @@ class FinderSync: FIFinderSync { if CmuxLauncher.isInstalled { menu.addItem(NSMenuItem(title: "在此处打开 cmux", action: #selector(openCmux(_:)), keyEquivalent: "")) } + menu.addItem(NSMenuItem(title: "拷贝路径", action: #selector(copyPaths(_:)), keyEquivalent: "")) return menu } @@ -129,4 +130,32 @@ class FinderSync: FIFinderSync { guard let dir = targetDirectory else { NSLog("MacRight: no target dir"); return } CmuxLauncher.open(at: dir) } + + @objc func copyPaths(_ sender: AnyObject?) { + NSLog("MacRight: copyPaths called!") + + // 获取选中的项目 + guard let selectedItems = FIFinderSyncController.default().selectedItemURLs(), + !selectedItems.isEmpty else { + NSLog("MacRight: No items selected") + return + } + + NSLog("MacRight: Selected items count = \(selectedItems.count)") + + // 提取所有选中项目的路径 + let paths = selectedItems.map { $0.path } + + // 用逗号分隔多个路径 + let pathsString = paths.joined(separator: ", ") + + NSLog("MacRight: Copying paths: \(pathsString)") + + // 复制到剪贴板 + let pasteboard = NSPasteboard.general + pasteboard.clearContents() + pasteboard.setString(pathsString, forType: .string) + + NSLog("MacRight: Paths copied to clipboard successfully") + } }