如何为macOS创建支持拖入Dock图标的文件/文件夹的Tauri应用?
在macOS的Tauri应用中实现Dock图标接收拖放文件/文件夹的方法
当然可以实现,Tauri通过配置文件和内置API就能完成这个功能,具体步骤如下:
1. 配置应用支持的文件类型
打开项目根目录的tauri.conf.json,找到tauri.bundle.macOS节点,添加documentTypes数组来定义应用支持的文件/文件夹类型,这对应Electron里的CFBundleTypeExtensions配置:
{ "tauri": { "bundle": { "macOS": { "documentTypes": [ // 支持所有文件 { "name": "任意文件", "extensions": ["*"], "role": "Editor" }, // 支持文件夹 { "name": "文件夹", "extensions": ["public.folder"], "role": "Editor" } ] } } } }
字段说明:
name:该文件类型的显示名称,会在系统的文件关联设置中出现extensions:指定支持的扩展名或系统UTI(Uniform Type Identifier),*代表所有文件,public.folder是系统定义的文件夹标识role:应用对该文件类型的角色,可选值包括Editor(可编辑)、Viewer(仅查看)等
2. 监听拖放事件处理文件
配置完成后,需要在前端代码中监听应用的open事件,当用户将文件拖放到Dock图标时,应用会收到这些文件的路径:
import { app } from '@tauri-apps/api'; // 监听文件打开/拖放事件 app.listen('open', (event) => { const filePaths = event.payload; // 这里处理收到的文件/文件夹路径 console.log('接收的文件路径:', filePaths); });
3. 注意事项
- 配置修改后必须重新打包应用,bundle配置仅在打包阶段生效
- 如果需要支持特定格式,可将
extensions替换为具体扩展名(如["txt", "md"])或对应的UTI(如public.plain-text) - 若应用需要访问用户的隐私目录(如Documents),需在
tauri.bundle.macOS.entitlements中添加对应的权限声明
内容的提问来源于stack exchange,提问作者Johann
相关产品推荐
相关产品推荐

