Command-line reference

wusel [--account NAME] <command> [args]

wusel with no command prints its help and exits.

Global options

Option Meaning

--account NAME

Which account profile to act on. Omitted, every command uses the implicit default account, whose files sit directly in the base directories. Available on every subcommand.

--version

Print the version and exit.

--help

Print help. Also available per subcommand.

Connecting

wusel login <SERVER_URL>

Log in through Nextcloud’s Login Flow v2 and store the credentials. Prints a URL to confirm in a browser; your real account password is never seen or stored. Nothing is mounted.

Argument / option Meaning

<SERVER_URL>

The Nextcloud base URL, for example https://cloud.example.org.

--keyring [true|false]

Where to keep the app password. Unset, [auth] keyring from the configuration decides (default: the OS keyring). --keyring false forces the 0600 file. Either way it is fail-soft — an unusable keyring falls back to the file.

wusel mount [MOUNTPOINT]

Mount the filesystem in the foreground. Requires a binary built with the fuse feature; the distribution packages are.

Argument Meaning

[MOUNTPOINT]

Where to attach. Omitted, [mount] point from the configuration is used, and failing that ~/Wusel (or ~/Wusel-<account> for a named account).

Two accounts may not share or nest a mountpoint; mount refuses to start where its target equals or contains any active mount, or sits inside another wusel mount. Linux only.

While mounted, the daemon also serves the account’s IPC socket (see wusel serve), which the file manager queries for per-file state.

wusel serve

Run the engine without a FUSE mount and serve its intent protocol over a Unix-domain socket — how the macOS File Provider agent drives the engine, and a way to exercise it for diagnostics and tests. Not behind the fuse feature.

Option Meaning

--socket PATH

The socket to bind. Default: ipc-<account>.sock in $XDG_RUNTIME_DIR/wusel, or in the state directory when XDG_RUNTIME_DIR is unset.

Refuses to start while the account is mounted: the mount already serves the socket, and two engines must not share one state database. Exits when the process that started it goes away.

wusel service <enable|disable|status>

Manage the systemd user service for this account. Linux only.

Subcommand Meaning

enable

Mount now and at every login, in the background.

disable

Stop the mount and stop it starting at login.

status

Show the service status — the equivalent of systemctl --user status.

On a machine where the package installed the unit template, systemctl --user enable --now wusel@<account> does the same thing.

Keeping files offline

wusel pin <PATH> / wusel pin --all

Keep a file or directory offline permanently. Downloads it now — a directory recursively — and exempts it from cache eviction.

Argument Meaning

<PATH>

The path to pin: relative to the account root, for example Photos, or an absolute path inside a wusel mount (the account is then taken from the mount). Required.

--all

The whole account: the old desktop client’s "download everything". The only way to make that pin — a path that resolves to the account root is refused and points here instead.

The path is not optional, and neither is the flag: an account-wide pin downloads everything the account holds and marks every file in it as kept offline, so it has to be asked for. Leaving the argument out used to do exactly that.

A directory pin covers its whole subtree, including entries not yet listed. Needs no running mount.

wusel unpin [PATH]

Remove a pin. The files become ordinary, evictable cache again; nothing is deleted from the server. Omitting PATH removes the whole-account pin. PATH takes the same two forms as for pin.

wusel update [PATH]

Fetch what a pin promised and the disk does not have: a copy that has gone out of date, and one that was never fetched at all (a directory pin covers files the server grows afterwards). In place. PATH takes the same two forms as for pin.

Omitting PATH covers every pin in the account: the whole-account pin if there is one, otherwise each pin in turn (a pin inside a pinned folder is left to that folder). A pin that fails does not stop the others; the failures are reported together at the end. With nothing pinned at all, it refuses.

Deliberately not the same as unpinning and pinning again, which would drop the eviction marker first — a re-download that then failed would leave the file both outdated and unprotected.

wusel pins

List the account’s pins.

Accounts

wusel accounts

List the configured accounts. Identical to wusel account list.

wusel account <list|remove NAME>

Subcommand Meaning

list

List the configured accounts.

remove NAME (alias rm)

Delete a named account: its configuration directory (config.toml, credentials.json, pins.json), its app password in the OS keyring, its state directory and its cache. The Nextcloud server is untouched. Refuses the default account. Does not unmount a running instance — stop it first.

Finding out what is going on

wusel status

Show what the mount is doing right now, by file name: uploads still owed to the server — including any parked after a permanent failure — files coming down, and the rest of the work in flight.

Option Meaning

--watch

Keep redrawing until interrupted. Individual reads are far too short to be caught by a single print.

This is for the person whose files these are. doctor is the other half: name-free, and made to be shared.

wusel doctor

Collect diagnostics for a support case: system, daemon, mount, the FUSE connection’s waiting count, the daemon’s internal state, the state of the notify_push connection, and a redacted journal tail. Redacted by default, so the output is safe to attach to a ticket.

Option Meaning

-o PREFIX, --output PREFIX

Also write <PREFIX>.txt and <PREFIX>.json beside the printed report.

--include-listing

Include full paths and file names — turns redaction off, for a consenting deep dive.

--no-logs

Omit the journal tail from the report.

Cache

wusel cache clear [PATH]

Drop cached data so the next access loads fresh from the server. Stop a running mount first.

Argument Meaning

[PATH]

A remote path, for example Photos, clearing that subtree. Omitted, the whole account is cleared — metadata and content, like a fresh connection. Credentials, configuration and pins are kept; pinned files download again on first use.

Separates a stale-cache problem from a server-side one. It refuses to run while the account is mounted; see Known limitations for why.

Desktop integration

wusel web url <PATH>

Print the Nextcloud web URL for a file or folder — what the file manager’s "Open in Nextcloud" and "Copy Internal Link" actions use. Built from local metadata only, with no network request; the caller opens or copies it.

Argument / option Meaning

<PATH>

Relative to the account root, or absolute inside a wusel mount.

--reveal

Print the link that opens the parent folder with the object highlighted. Without it, the object link (…/f/<id>) is printed: it opens a file in the web viewer or navigates into a folder, and survives a rename.

Fails for a path not yet in the local metadata, and for an object that exists only locally (created but not yet uploaded).

wusel desktop notify [SEVERITY]

Send a test notification through the real backend, to verify the desktop’s notification channel works independently of any sync event. On Linux it posts to the notification bus directly. On macOS only the agent app may post, so the command hands each notification to the running agent over its socket; the agent must be running.

Argument / option Meaning

[SEVERITY]

info, warning, error, or all. Default all.

--socket PATH

macOS only: the agent’s socket. Default: discovered — the App Group container first, then the fallback under Application Support.

wusel desktop install-provider

Install this account’s file-manager cloud-provider registration, so a file manager shows the mount in its sidebar. Writes into a system directory, so it needs root — the file manager’s collector only scans system data directories, never the user’s home.

Option Meaning

--dir DIR

Target directory. Default: the system applications directory.

The packages do this for the default account already. Named accounts need it run once each.

wusel desktop uninstall-provider

Remove this account’s registration. Takes the same --dir DIR.

Services

wusel ipc <OP> [PATH]

A client for the IPC socket of a running wusel serve or wusel mount, for diagnostics and tests. PATH is account-relative, default /.

Argument / option Meaning

<OP>

Read: stat, enumerate, fetch. Write: create, write, publish, remove, move, setattr. Pins: pin, unpin. Streams: watch (one JSON change per line until the daemon closes the stream; ignores PATH) and notices (one JSON notice per line).

--socket PATH

The socket to connect to. Default: the account’s socket, as for wusel serve.

--offset N, --len N

fetch and write: byte offset (default 0) and length (fetch default 1 MiB). write reads its bytes from stdin.

--to PATH

move: the destination.

--dir

create: make a directory rather than a file.

--size N, --mtime SECS

setattr: the new size and modification time (Unix seconds).

--exec true|false

create and setattr: the executable bit, kept locally and never synced.

Responses are printed as JSON on stdout. fetch writes the content to stdout and the response header to stderr, so it pipes cleanly.

wusel search-provider

Run the GNOME Shell search provider — a D-Bus service that GNOME Shell activates on demand and that answers from the server’s Unified Search. Not something to start by hand; it is listed here because it is a real subcommand and will appear in process listings.