# Native File Copy Windows-only Obsidian plugin that changes `Ctrl+C` in the focused File Explorer into a native Windows file copy. It copies the selected files and folders as a `FileDrop` clipboard object. Applications that accept file attachments can receive the files directly instead of receiving a text path. ## Features - Activates after clicking inside Obsidian's File Explorer. - Restores normal text copying when focus moves to an editor or text input. - Supports one or more selected files and folders. - Keeps a selected parent folder and ignores selected descendants inside it. - Does not change `Ctrl+C` behavior in the editor or other views. - Does not archive folders. The receiving application decides whether it accepts a copied folder. ## Requirements - Obsidian desktop on Windows. - A local filesystem vault. Remote or read-only vault adapters are not supported. ## Install from Community Plugins After the plugin is published in the Obsidian Community directory, open **Settings → Community plugins → Browse**, search for **Native File Copy**, and select **Install** followed by **Enable**. ## Manual installation For a local build, run: ```powershell npm ci npm test npm run build ``` Copy `main.js` and `manifest.json` into: ```text /.obsidian/plugins/native-file-copy/ ``` Then reload Obsidian and enable **Native File Copy** in **Settings → Community plugins**. The development helper can install the current build into any local vault: ```powershell npm run install:vault -- "C:\path\to\your\vault" ``` ## Privacy and capabilities The plugin does not use network services or telemetry. When copying, it reads the selected vault paths and invokes the local Windows `powershell.exe` process to place those paths on the Windows file-drop clipboard. This is why the plugin is desktop-only and Windows-only. Obsidian does not expose File Explorer selection as a stable public plugin API. This plugin reads the File Explorer's internal selection state, which should be retested after major Obsidian upgrades. ## Release checklist Before publishing a release: ```powershell npm ci npm test npm run build ``` Create a GitHub release whose tag exactly matches the version in `manifest.json`, then upload `main.js` and `manifest.json` as individual release assets. ## License [MIT](LICENSE)