- Python 100%
| Filename | Latest commit message | Latest commit date |
|---|---|---|
| AGENTS.md | ||
| ipfs_nautilus.py | ||
| README.md | ||
IPFS Nautilus Extension
This workspace contains a Nautilus extension that adds a single Publish on IPFS action to the right-click menu for local files and directories.
The action runs this flow:
ipfs add -Q -r --wrap-with-directory <selected path>
ipfs files cp /ipfs/<cid> /GNOME-extension/<generated_folder_name>
ipfs pin remote add --service=$REMOTEPINSERVICE --background <cid>
The extension always copies the published item(s) into a dedicated timestamped folder under /GNOME-extension/, using the path /GNOME-extension/import-YYYY-mm-dd-HH:MM:ss.
After a successful add, it extracts the CID from ipfs add output, registers it in the MFS, optionally queues a remote pin, copies the CID to the clipboard, and shows it in a dialog. Long-running operations execute in the background and show a progress dialog with a cancel button, so Nautilus remains responsive.
Requirements
- Nautilus with
nautilus-python - Python GObject introspection bindings
- The
ipfsCLI available in the Nautilus process environment
On Debian or Ubuntu systems that usually means:
sudo apt install nautilus-python python3-gi
Install
Copy the extension into Nautilus' user extensions directory:
mkdir -p ~/.local/share/nautilus-python/extensions
cp ipfs_nautilus.py ~/.local/share/nautilus-python/extensions/
nautilus -q
Then reopen Files.
Notes
- Only local filesystem items are supported.
- There is no special case for a single file, a directory, or multiple files: all uploads are registered in the same MFS destination pattern
/GNOME-extension/import-YYYY-mm-dd-HH:MM:ss. - The extension runs the
ipfsCLI binary and setsIPFS_PATHfor those commands. - Default
IPFS_PATHis$HOME/.ipfs. - Override by exporting
IPFS_PATHin the Nautilus environment if your IPFS repo is elsewhere. - If Nautilus starts without your shell PATH, set
IPFS_CLIto the absolute path of theipfsbinary. - If
REMOTEPINSERVICEis set in the Nautilus environment (for exampleREMOTEPINSERVICE=web3.storage), the command also queues a remote pin for the published CID.