Skip to main content
Version: 2.0

Dux Labs

IPC

IPC

The dfiles daemon exposes every operation the UI uses over a unix socket. Invoke a method and pass params as key=value pairs:

dfiles ipc ui.toggle
dfiles ipc ui.open path=~/Downloads newWindow=true
dfiles ipc files.list path=/home/me sort=mtime desc=true limit=20
dfiles ipc trash.count

List every available method and its params:

dfiles ipc list

Results print as JSON. Params marked * are required. List params take a JSON array.

UI​

MethodParams
ui.showShow the last used window, opening one if none is open
ui.hideHide every window
ui.toggleToggle the windows
ui.openpath or paths (absolute paths or URIs, one tab each; an archive is extracted beside itself), select (paths to select, grouped by folder), newWindow
ui.propertiespaths*
ui.quitQuit the running daemon

Location​

MethodParams
location.resolvetext* (what was typed: paths, ~, relative paths and URIs; a file resolves to its folder with it selected), cwd
location.missingpaths* (at most 500): which are no longer folders

Files​

MethodParams
files.listpath*, watchId, includeHidden, sort (name|size|mtime|type), desc, dirsFirst (default true), limit (default 500), cursor, filters (case-insensitive name globs; directories always pass)
files.watchSame as files.list without cursor; streams changes on files:<watchId>
files.unwatchwatchId*
files.statpath*
files.previewpath*, maxBytes (default 16384, max 262144): head of a text file; binary content is flagged instead of returned
files.imageSizepath*: pixel size from the header for png, jpeg, gif, webp, bmp and tiff
files.countpaths*, includeHidden: child counts, capped at 10000
files.thumbnailpaths*, size (normal|large|x-large|xx-large), watchId: cache paths, generating what is missing
files.userDirsXDG user directories, home first
files.iconpaths or mimes: icon name ladders
files.sizepaths*: recursive scan, totals stream on the sizes topic
files.sizeCancelscanId*
files.mkdir, files.rename, files.trashDirect variants without undo: path*; path*, name*; paths*

File Operations​

Operations run as jobs. Each takes an optional scope, the undo stack key, one per window. Progress, conflicts and prompts stream on the jobs topic.

MethodParams
files.op.copy, files.op.move, files.op.linkpaths*, dest*
files.op.renamepath*, name*
files.op.newFolderpath* (parent), name*, unique (number the name when taken)
files.op.newFilepath*, name*, template, unique
files.op.newFolderWithpaths* (to move), path* (parent), name*, unique: one undoable step
files.op.duplicatepaths*: copies beside themselves with a (copy) name
files.op.pasteImagepath* (target directory), name (default Pasted image): answers image=false when the clipboard holds none
files.op.trashpaths*
files.op.restorenames* (inside the trash files dir), trashDir*
files.op.deletepaths*: permanent
files.op.emptyTrash
files.op.compresspaths*, dest*, name* (without extension), format (zip|tar.gz|tar.xz|tar.zst, default zip), password (AES-256, zip only)
files.op.extractpaths*, dest*: zip, tar (gz, bz2, xz, zst, lzma, lz), 7z, rar and cpio into folders named after them; a protected archive pauses for its password
files.op.setPermissionspaths*, mode* (octal), recursive
files.op.setOwnerpaths*, owner, group, recursive
files.op.respondjobId*, id* (prompt id), action* (skip|replace|keepBoth|merge|retry|retryElevated|unlock|cancel), applyToAll, password
files.op.canceljobId*
files.op.jobsRunning, queued and recently finished jobs
files.op.dropActionpaths*, dest*: what a plain drag would do
files.op.undo, files.op.redoscope
files.op.forgetscope: drop a closed window's history

Applications​

MethodParams
files.openpaths*, cwd, activationToken, terminal: open with the default application
files.openWithpaths*, desktopId*, cwd, activationToken, record (false skips the mimeapps.list update)
files.runpath*, cwd, activationToken: run an executable or a trusted desktop entry
files.openTerminalpath*, terminal (defaults to $TERMINAL, then autodetection)
files.apps.forMimemime or path: handlers, most preferred first
files.apps.sectionsmimes or paths: Open With sections: recent, recommended, other
files.apps.allEvery launchable application
files.apps.setDefaultmime*, desktopId*
files.apps.terminalsInstalled terminal emulators
MethodParams
search.startroot*, query (space-separated terms; * and ? make a glob), scope (folder|home|everywhere), includeHidden, includeIgnored, fuzzy, contents (needs Dux Search), direct, crossDevice, types (documents|images|video|audio|archives|folders), modifiedAfterMs, minSize, maxSize, limit (at most 10000): results stream on search:<searchId>
search.cancelsearchId*

A running Dux Search answers when its index covers the search (names only, no gitignore). Otherwise a live walk honours gitignore and matches terms against the path too.

Bookmarks​

MethodParams
bookmarks.listSaved folders in sidebar order, plus whether a GTK import is on offer
bookmarks.addpath*, label, icon
bookmarks.removepath*
bookmarks.renamepath*, label*
bookmarks.reorderpaths* (every bookmark once, in the new order)
bookmarks.importGtkImport GTK file chooser bookmarks not saved yet

Devices​

MethodParams
devices.listDrives and volumes udisks2 knows about
devices.usagepaths (mount points), force: disk usage, cached 30 s
devices.mount, devices.unmount, devices.eject, devices.powerOff, devices.lockid* (unmount also takes force)
devices.unlockid*, passphrase* (never stored), mount

Network​

MethodParams
network.mountsgvfs mounts, connectable schemes and portable devices waiting to be mounted
network.connecturi* (a password inside it is moved out first), password
network.disconnectid* (mount id, uri or path)
network.answerid*, password, user, domain, anonymous, save (0 never, 1 session, 2 permanently), choice, abort
network.recentServers connected to before
network.forgeturi*
network.mountPortablemonitor*, id*: a phone or camera gvfs detected

Trash and Recent​

MethodParams
trash.listItems across the home trash and every mounted volume's trash
trash.countCount plus a stamp that changes when the trash changes
trash.entriesItems as file entries for the trash view, newest first
recent.entriesstamp: recently used files, newest first; answers unchanged when nothing moved
recent.removepaths*
recent.clear

Clipboard​

MethodParams
clipboard.copypaths*, cut
clipboard.pathsThe file selection on the clipboard
clipboard.clear

System​

MethodParams
system.capabilitiesSandbox state, host access, bus policies, portal versions, thumbnailers and the per-feature table with reason codes
system.colorScheme.get0 no preference, 1 dark, 2 light
system.elevationWhether failed operations can be retried as administrator, and why not
system.fileManager.get, system.fileManager.setenabled* on set: own or release org.freedesktop.FileManager1; another owner is never replaced
system.openUriuri*
system.portal.get, system.portal.install, system.portal.uninstall, system.portal.restartThe portal file chooser state and the three actions behind dfiles portal

Live Updates​

Subscribe to push events instead of polling:

MethodParams
subscribetopics: ui, colorScheme, jobs, devices, network, sizes, bookmarks, search:<id>, files:<watchId>
unsubscribetopics
ping, version, describeLiveness, daemon and API version, the method list

Next Steps​

  • Usage - The CLI wrappers around these methods
  • Keyboard - What the window binds by default