Adds file conversion, media tools, link actions, and a 7-Zip-style Archive menu to Dolphin's right-click menu.
Right-click a supported file to see the actions that apply to it.
The menu adapts to the file you right-click:
| File type | Menu shows |
|---|---|
.gif |
Convert to MP4, WebM, MKV · Extract Audio · Upload to Imgur · Audio conversion |
.mp4 / .webm / .mkv / .avi / .mov |
Convert to GIF (with quality presets) · Re-encode to MP4, WebM, MKV · Extract Audio · Upload to Imgur |
.mp3 / .ogg / .flac / .wav / .m4a / .opus |
Convert between formats (source format is omitted) |
.png / .jpg / .jpeg |
Upload to Imgur |
.pdf / office documents |
Extract text or create a PDF |
.md / .html |
Convert between Markdown, HTML, and PDF |
.yaml / .json / .toml / .csv / .tsv |
Convert structured data |
.png / .jpg / .webp / .heic |
Convert image formats |
A dedicated Audio Converter submenu also appears for audio and video files with all 7 formats available as one-click actions.
- Two-directional menus — only relevant actions shown per file type
- GIF from video — 4 quality presets (Small/Medium/Large/Source) using ffmpeg's two-pass palettegen method for clean colours
- Video transcoding — re-encode between MP4 (H.264+AAC), WebM (VP9+Opus), and MKV (H.264+AAC)
- Audio conversion — 7 formats: MP3 (V0), OGG (Q6), FLAC, WAV, M4A (AAC 192k), Opus (128k), ALAC
- Audio extraction — pull audio track from video files as MP3
- Imgur upload — upload images/GIFs/videos to Imgur with automatic clipboard copy of the URL
- Progress bars — real-time progress via kdialog/qdbus, cancel any job
- Batch processing — select multiple files, process them all at once
- Configurable defaults — set your preferred audio format and GIF preset
- Notifications — desktop notification on completion (or errors)
- Document conversion — use LibreOffice, pandoc, or
pdftotextwhen installed - Data conversion — convert YAML, JSON, TOML, CSV, and TSV files
- Image conversion — convert PNG, JPEG, WebP, and HEIC files with ImageMagick
The context menu follows the stateful flow from Link Shell Extension:
- Before picking, Pick Link Source appears at the context-menu root.
- After picking, Drop Link As and Cancel Link Creation replace it.
- Drop Link As expands to hardlink, symlink, clone, copy, and inspection actions.
- Successful drops return the menu to Pick Link Source.
- Failed drops keep the source so you can retry.
A root-level Archive submenu matches 7-Zip's cascaded Windows Explorer menu:
- Archives: Open archive, Extract files..., Extract Here, Extract to "name/", Test archive
- Anything: Add to archive..., Compress and email..., Add to "name.7z", Add to "name.zip", and the matching email items
- CRC SHA nested hashes (CRC-32 through BLAKE2sp,
*, sidecar.sha256, checksum test)
Extract Here / Extract to / Test / one-click zip items use 7z when it is on PATH, otherwise unzip/zip, tar, gzip/bzip2/xz, unrar/unar, or bsdtar. .7z archives still need 7-Zip. CRC-32, MD5, and SHA hashes work without 7z; CRC-64, XXH64, and BLAKE2sp do not. Open / Extract files… / Add to archive… use Ark when present, otherwise xdg-open and the same zip/tar tools. Email uses xdg-email --attach.
Extract Here and Extract to run inside Dolphin: each click becomes one job in Dolphin's notification group, like a copy. It shows "Extracting 2 of 4", byte progress and speed, with Pause and Cancel for that click only.
Like the link actions, this menu comes from kio-plugin/ and needs a source install (make install / install.sh).
Dolphin can install these without a terminal:
- Open Settings → Configure Dolphin → Context Menu.
- Click Download New Services….
- Search for Dolphin Context Actions, Dolphin Archive, or Dolphin Link and click Install.
That downloads a small package from store.kde.org and runs its installer as you — no root, no compiler. Everything lands under your home directory plus the service menus, and the same dialog uninstalls it again. Conversion menus are generated on your machine, so they list only what your installed tools (ffmpeg, LibreOffice, pandoc, …) can actually do.
The three listings are separate products. Install the ones you want. Dynamic archive names and elevated link drops still need the KIO plugin from a source build (below).
See INSTALL.md for every available method:
| Method | Command |
|---|---|
| From source | make install (needs CMake and Qt 6) |
| GHNS | Download New Services (ships a prebuilt helper) |
| Debian/Ubuntu | sudo apt install ./dolphin-context-actions_0.1.0-1_all.deb |
| Fedora/openSUSE | sudo rpm -i dolphin-context-actions-0.1.0-1.noarch.rpm |
| Arch Linux | makepkg -si (from packaging/arch/) |
| Snap | snap install dolphin-context-actions |
| Flatpak | flatpak install io.github.bodencrouch.dolphin-context-actions |
| AppImage | Download and run from releases |
The helper is a C++/Qt 6 binary, same language as Dolphin.
Only the source install (make install / install.sh) currently builds
kio-plugin/, so it's the only method that provides dynamic Archive names
and elevated Link drops — see
Limitations below.
After installation, restart Dolphin (killall dolphin) to load the service
menus. The matching action menus will appear when you right-click a supported
file.
- Install (see above) and restart Dolphin
- Right-click a
.gif→ Context Actions → Convert to MP4 - Right-click a
.mp4→ Context Actions → Convert to GIF… → choose a preset - Right-click an
.mp3→ Audio Converter → Convert to FLAC - Right-click a
.csvfile → Convert → To JSON - Right-click an image → Context Actions → Upload to Imgur
- Right-click a file or folder, then choose Pick Link Source.
- Right-click the destination folder or its background.
- Open Drop Link As.
- Choose Drop Hardlink, Drop Symlink, or another drop action.
- Right-click a
.zip/.7z/.tar.gz→ Archive → Extract Here or Extract to "name/" - Right-click files or a folder → Archive → Add to "name.7z" or Add to archive...
- Right-click anything → Archive → CRC SHA → SHA-256
Right-click any media file → Context Actions → Configure… to open the settings dialog where you can set:
- Default audio format — the format used when converting audio
- Default GIF preset — the GIF quality preset used for video-to-GIF
- Imgur Client ID — required for Imgur upload (register at https://api.imgur.com/oauth2/addclient)
Configuration is stored in ~/.config/dolphin-context-actions/config.json.
The editable conversion catalog is stored beside it as conversions.json.
- CMake + Qt 6 (from-source builds; GHNS ships a prebuilt helper)
- ffmpeg (≥ 4.4) with ffprobe (for media conversion only)
- kdialog (part of KDE)
- libnotify (for desktop notifications)
- KIO 6 (for the root context-menu plugins)
- 7zip (optional; zip/unzip/tar/unrar are used when it is missing)
- Ark (optional; opens the Archive dialogs when installed)
Some conversions need extra tools. The installer only adds menu actions whose dependencies are available. See Adding conversions for the engine list.
The Link Shell Extension features work on most modern Linux filesystems (ext4, btrfs, xfs, etc.) but have some limitations compared to the Windows version:
- No Junctions — NTFS Junctions are Windows-specific and cannot be created on Linux
- No Volume Mountpoints — Windows Volume Mountpoints are not supported on Linux
- Directory Hardlinks — Unix filesystems do not allow them. Use Drop Symlink.
- Smart Move — Dolphin does not expose file moves to context-menu plugins.
- Reparse Points — NTFS-specific reparse point operations are not applicable on Linux
- Backup Mode — The Windows version's backup mode with elevated privileges is not implemented
- Flatpak / Snap / AppImage — the context-menu plugins (and with them, all Link Shell Extension features, including elevated drops, and the Archive submenu) are not built or packaged for these formats. A root-owned, D-Bus-activated privileged helper is fundamentally incompatible with their sandboxing — there is no way to install a system D-Bus service or polkit action from inside a Flatpak/Snap confinement. Those formats ship the media-conversion CLI and service menus only.
- rpm / deb / Arch packages — these still package the old Python CLI and
service menus only; none of them build
kio-plugin/yet either, so the Link Shell Extension features (Pick Link Source / Drop Link As) and the Archive submenu aren't available from the packaged builds at all right now.install.sh/make install, run from a source checkout, is the only path that builds the C++ helper, the plugins, and the KAuth helper today.
The drop menu supports hardlinks, symlinks, clones, smart copy, link properties, and local hardlink enumeration.
A drop never overwrites what is already in the folder, and never fails just because the name is used. It renames what it drops, the way Link Shell Extension does:
| Dropped as | First collision | Next |
|---|---|---|
| Drop Hardlink | report - Hardlink.txt |
report - Hardlink (2).txt |
| Drop Symlink | report - Symlink.txt |
report - Symlink (2).txt |
| Hardlink Clone | project - Hardlink Clone |
project - Hardlink Clone (2) |
| Symlink Clone | project - Symlink Clone |
project - Symlink Clone (2) |
| Smart Copy | project - Smart Copy |
project - Smart Copy (2) |
The number is the first one free in that folder. Folders keep their whole
name, so v1.2 becomes v1.2 - Symlink, not v1 - Symlink.2.
Dropping a hardlink or symlink into a directory you can't write to (/, /usr, etc.)
prompts for the administrator password via polkit, same as Dolphin's own
"Open as Administrator". The privileged half is a small KAuth helper
(kio-plugin/linkhelper.cpp) installed root-owned to /usr/libexec/kf6/kauth/
and D-Bus-activated — it is never a user-writable script pointed at by
pkexec, since pkexec performs no ownership check on its target and would
make that equivalent to granting root to anything that can write your
~/.local/bin.
Hardlink Clone / Symlink Clone / Smart Copy are not offered elevated — those recurse over an arbitrarily large, user-controlled tree, which isn't something a reviewable privileged helper should do. They work normally when the destination is writable, and fail with a plain permission error otherwise.
This elevation path requires the KAuth helper to be installed to system
directories, which today only install.sh / make install do — see
Limitations above for which install
methods currently build kio-plugin/ at all.
Older checkouts shipped a Python package. If you ever installed that as
root (sudo pip install, pkexec pip install --user -e .), run
scripts/check-privileged-pth.py --fix (or make doctor). Editable
installs write a .pth file into site-packages that adds this checkout's
old src/ directory to sys.path; done as root, that .pth file ends up
root-owned while still pointing at a directory your normal user can write to,
which means anything that can write there gets code run as root the next time
anything does sudo python3 / pkexec ... python3. Current installs use
CMake and do not write .pth files. install.sh/make install
still call sudo only for the plugin step, and refuse to run under sudo
themselves.
├── CMakeLists.txt # Qt 6 helper
├── Makefile # Build/install/uninstall
├── install.sh # Manual install script
├── kio-plugin/ # Context-menu plugins + KAuth privileged-link helper
├── scripts/
│ └── check-privileged-pth.py # Scan leftover root-owned .pth files from old pip installs
├── debian/ # Debian packaging
├── packaging/
│ ├── rpm/ # RPM spec
│ ├── arch/ # Arch Linux PKGBUILD
│ ├── snap/ # Snapcraft yaml
│ ├── flatpak/ # Flatpak manifest
│ └── appimage/ # AppImage builder
├── servicemenus/
│ ├── dolphin-context-actions.desktop # Smart menu (all media)
│ └── dolphin-audio-converter.desktop # Dedicated audio submenu
├── assets/
│ └── conversions.json # Bundled conversion catalog
├── helper/
│ ├── main.cpp # CLI binary
│ ├── cli.cpp # CLI entry point + smart dispatch
│ ├── file_converter.cpp # Document, data, and image conversion engines
│ ├── file_converter_menus.cpp # Generate conversion service menus
│ ├── ui.cpp # kdialog progress bars / dialogs
│ ├── config.cpp # Config management
│ ├── link_ops.cpp # Link Shell Extension operations
│ ├── archive_ops.cpp # 7-Zip-style Archive menu operations
│ ├── converters.cpp # Audio/video transcoding
│ └── uploaders.cpp # Imgur upload
├── docs/
│ ├── CONFIGURATION.md # Full config reference
│ └── DEVELOPMENT.md # Contributor guide
└── man/
└── dolphin-context-actions.1
scripts/build-ghns-package.sh <product> builds the archive that
store.kde.org serves to Dolphin's Download New Services dialog
(context-actions, archive, or link). tests/test_ghns_package.sh
installs each into a throwaway $HOME and verifies the whole
install/run/uninstall cycle. Releases are cut by release-please and all
three packages are attached to each GitHub release automatically — see
packaging/pling/PUBLISHING.md for how the
store products are created and updated.
If this saved you a trip to a sketchy online converter, a rating on the store page helps other people find it.
# Debian .deb
dpkg-buildpackage -us -uc
# RPM
rpmbuild -ba packaging/rpm/dolphin-context-actions.spec
# Arch Linux
cd packaging/arch && makepkg -si
# AppImage
appimage-builder --recipe packaging/appimage/AppImageBuilder.ymlMIT
