Dux Labs
Dux Files Installation
Dux Files Installation
Dux Files installs a single dfiles binary with the Quickshell UI embedded, a desktop entry, a D-Bus activation file for org.freedesktop.FileManager1, a polkit policy for the administrator retry, and the portal file chooser backend files.
Requirements
- Quickshell (
qs):quickshell-gitorquickshellfrom the Dux repository - Go 1.27+ (build from source only; the binary is pure Go with no cgo)
Optional, picked up from PATH when the daemon starts:
| Package | Binary | Enables |
|---|---|---|
bubblewrap | bwrap | runs every external thumbnailer in a sandbox |
ffmpegthumbnailer | ffmpegthumbnailer | video thumbnails |
poppler (poppler-utils on Debian) | pdftoppm | PDF thumbnails |
gvfs | network shares, phones and cameras, trash:// on removable media | |
udisks2 | the Devices section of the sidebar |
Images in png, jpeg, gif, bmp, tiff and webp are decoded in-process. Every other format goes through the freedesktop thumbnailers/*.thumbnailer entries under the XDG data dirs, so packages that ship one (glycin for heif, avif, jxl and ico, gsf for office documents, evince or totem on GNOME) work without configuration. dfiles ipc system.capabilities lists what was found under thumbnailers.
Installation Methods
Choose the installation method that best fits your system. Dux Files is not on Flathub yet.
Distribution Packages
Each Dux repository ships two packages: dux-files follows tagged releases, and dux-files-git builds from upstream master. They conflict, so install one.
Fedora & CentOS
sudo dnf copr enable duxlabs/dux
sudo dnf install dux-files # or dux-files-git for the latest development build
Debian & Ubuntu
Debian
Packages are published on OBS for Debian 13 (Trixie), Debian Testing, and Debian Sid.
Select your release:
- Debian 13 (Trixie)
- Debian Testing
- Debian Sid
curl -fsSL https://download.opensuse.org/repositories/home:AvengeMedia:danklinux/Debian_13/Release.key | \
sudo gpg --dearmor -o /etc/apt/keyrings/duxlabs.gpg
echo "deb [signed-by=/etc/apt/keyrings/duxlabs.gpg] https://download.opensuse.org/repositories/home:/AvengeMedia:/danklinux/Debian_13/ /" | \
sudo tee /etc/apt/sources.list.d/duxlabs.list
sudo apt update
sudo apt install dux-files # or dux-files-git for the latest development build
curl -fsSL https://download.opensuse.org/repositories/home:AvengeMedia:danklinux/Debian_Testing/Release.key | \
sudo gpg --dearmor -o /etc/apt/keyrings/duxlabs.gpg
echo "deb [signed-by=/etc/apt/keyrings/duxlabs.gpg] https://download.opensuse.org/repositories/home:/AvengeMedia:/danklinux/Debian_Testing/ /" | \
sudo tee /etc/apt/sources.list.d/duxlabs.list
sudo apt update
sudo apt install dux-files # or dux-files-git for the latest development build
curl -fsSL https://download.opensuse.org/repositories/home:AvengeMedia:danklinux/Debian_Unstable/Release.key | \
sudo gpg --dearmor -o /etc/apt/keyrings/duxlabs.gpg
echo "deb [signed-by=/etc/apt/keyrings/duxlabs.gpg] https://download.opensuse.org/repositories/home:/AvengeMedia:/danklinux/Debian_Unstable/ /" | \
sudo tee /etc/apt/sources.list.d/duxlabs.list
sudo apt update
sudo apt install dux-files # or dux-files-git for the latest development build
Ubuntu
Ubuntu 26.04 LTS+ (Resolute Raccoon) is supported via Launchpad PPA.
sudo add-apt-repository ppa:duxlabs/dux
sudo apt update
sudo apt install dux-files # or dux-files-git for the latest development build
openSUSE & Derivatives
Dux Files is available through the Open Build Service (OBS) for OpenSUSE Tumbleweed, Leap 16/16.1, and Slowroll.
Select your distribution:
- Tumbleweed
- Leap 16
- Leap 16.1
- Slowroll
sudo zypper addrepo https://download.opensuse.org/repositories/home:AvengeMedia:danklinux/openSUSE_Tumbleweed/home:AvengeMedia:danklinux.repo
sudo zypper refresh
sudo zypper install dux-files # or dux-files-git for the latest development build
sudo zypper addrepo https://download.opensuse.org/repositories/home:AvengeMedia:danklinux/16.0/home:AvengeMedia:danklinux.repo
sudo zypper refresh
sudo zypper install dux-files # or dux-files-git for the latest development build
sudo zypper addrepo https://download.opensuse.org/repositories/home:AvengeMedia:danklinux/16.1/home:AvengeMedia:danklinux.repo
sudo zypper refresh
sudo zypper install dux-files # or dux-files-git for the latest development build
sudo zypper addrepo https://download.opensuse.org/repositories/home:AvengeMedia:danklinux/openSUSE_Slowroll/home:AvengeMedia:danklinux.repo
sudo zypper refresh
sudo zypper install dux-files # or dux-files-git for the latest development build
Void Linux
Install Dux Files from our R2-backed XBPS repository or build it from source. Void only carries the stable dux-files package.
- Dux Repository
- Build from Source
echo "repository=https://void.danklinux.com/danklinux/current" | sudo tee /etc/xbps.d/dux.conf
sudo xbps-install -Su
sudo xbps-install -S dux-files
On the first sync, xbps-install will output our signing key fingerprint and ask you to type y to trust and import it. Verify that the key matches our official signing fingerprint.
If you prefer to build from source using xbps-src:
# Set up the Void packages tree (one time)
git clone --depth 1 https://github.com/void-linux/void-packages.git
cd void-packages
./xbps-src binary-bootstrap
# Copy in the template (adjust paths as needed)
cp -R ../Dux/distro/void/srcpkgs/dux-files srcpkgs/
# Build the package
./xbps-src pkg dux-files
# Install the result
sudo xbps-install --repository=hostdir/binpkgs dux-files
Distribution packages install:
dfilesto/usr/bin/dfiles(the Quickshell UI is embedded in the binary)- Desktop entry, icon, metainfo and shell completions
- Polkit policy, the
FileManager1D-Bus activation file and the portal file chooser backend files dfiles.serviceunder/usr/lib/systemd/user/, not enabled (Void skips the unit)
From Source
The Quickshell UI is embedded into the dfiles binary at build time, and part of it lives in the dux-qml-common submodule, so clone with --recurse-submodules (or run git submodule update --init in an existing clone):
git clone --recurse-submodules https://github.com/duxlabs-dev/dux-files
cd dux-files
make
sudo make install
This installs:
dfilesbinary to/usr/local/bin(UI embedded)- Desktop entry, icon and metainfo
- Polkit policy for the administrator retry
FileManager1D-Bus activation file- Portal file chooser backend files, not preferred until you ask (see Open and save dialogs)
Override the prefix with PREFIX=/usr sudo make install. make install-systemd adds the user unit, make uninstall-dbus removes the activation file.
Release Binary
Each tagged release publishes static linux-amd64 and linux-arm64 binaries with the UI embedded, plus a tarball of shell completions, on the GitHub releases page.
curl -fsSLO https://github.com/duxlabs-dev/dux-files/releases/latest/download/dfiles-linux-amd64.tar.gz
tar -xzf dfiles-linux-amd64.tar.gz
sudo install -Dm755 dfiles-linux-amd64 /usr/local/bin/dfiles
The binary alone gives you the app and the CLI. The desktop entry, D-Bus activation, polkit policy and portal files come from make install in a source checkout.
NixOS and home-manager
The repository is a flake with a package, a NixOS module and a home-manager module. See NixOS Installation.
Flatpak
A manifest lives in the repository under distro/flatpak as dev.duxlabs.files. It is not published on Flathub. make flatpak-build builds and installs it locally with org.flatpak.Builder; the manifest pins a git commit, so for a working-tree build follow the notes in distro/flatpak/README.md.
A file manager needs the host filesystem, so the Flatpak grants --filesystem=host. Settings, trash and thumbnails land in the same places as a native install. Three things the sandbox cannot do: answer FileManager1 calls while it is not running, serve the portal file chooser (Flatpak exports no portal backend files), and retry operations as administrator. The Settings page explains each when it applies.
Running at Login
Dux Files does not have to run in the background. Opening a folder starts it, and with the activation file installed a FileManager1 call from another app starts it too. A resident instance opens windows faster and answers the portal file chooser at once, so you can keep one around:
systemctl --user enable --now dfiles
The unit starts dfiles run --session --hidden --keep-running. Started that way, closing the last window hides it instead of quitting. Started any other way, closing the last window quits unless Settings → General → Close behavior says otherwise.
Default File Manager
To open folders here from other apps:
xdg-mime default dev.duxlabs.files.desktop inode/directory
The installer does not run this. Reveal-in-file-manager requests from browsers and other apps go through org.freedesktop.FileManager1 instead, which Dux Files owns while it runs. See Desktop Integration.
Verification
# Check version
dfiles version
# Open a window on your home folder
dfiles
Next Steps
- Usage - Learn the CLI commands
- Desktop Integration - Serve open and save dialogs for every app