What's it all about?
In my previous post, I showed how to run Dropbox as a systemd user service so it keeps syncing even when no user is logged in.
That setup works well — but it introduces a few new challenges:
- The Dropbox desktop app might not start anymore. When Dropbox runs as a systemd service, the desktop app finds the already running daemon but fails to show a tray icon because the communication runs through the socket. This is a known issue with the headless service setup.
- You might want to manage Dropbox from a terminal in general — not everyone runs a desktop environment, and even on desktop machines, a TUI can be faster than the Dropbox UI.
- Over SSH, you need a way to check sync status, exclude folders, or add folders back — and the built-in
dropboxCLI is limited. It can only show you files that are already synced locally. Excluded folders and their contents are completely invisible.
That last point is the real problem: once you exclude a folder from sync, the dropbox CLI has no way to show you what's on the server. You're flying blind.
Introducing LazyDbx
LazyDbx is a terminal UI (TUI) for Dropbox, built with OpenTUI and Bun.
It lets you browse your local and remote Dropbox files, manage sync exclusions, and create share links — all from the terminal.
Requirements
- Bun v1+
- Dropbox installed and running (either via
dropbox startor as a systemd user service) - A Dropbox App for API access (optional, enables the Server tab)
Install
bun install -g github:alexzeitler/lazydbxOr from source:
git clone https://github.com/alexzeitler/lazydbx.git
cd lazydbx
bun installSetup
Each user creates their own Dropbox App. Credentials and tokens stay on your machine (~/.config/lazydbx/config.json) — all API requests go directly from your computer to Dropbox, no third-party servers involved.
1. Create a Dropbox App
Go to https://www.dropbox.com/developers/apps and create a new app:
- Access type: Scoped access, Full Dropbox
- Permissions tab: Enable
account_info.read,files.metadata.read, andsharing.write. Then click Submit in the black overlay bar at the bottom.
2. Initialize config
lazydbx initThis prompts for your App Key and App Secret and saves them to ~/.config/lazydbx/config.json.
3. Authorize
lazydbx authThis opens the Dropbox authorization URL. Copy the code from the Dropbox page and paste it into the terminal. Tokens are saved automatically.
To re-authorize (e.g. after changing scopes):
lazydbx auth --force4. Run
lazydbxBrowsing your Dropbox
Local
Browse files and folders synced locally in ~/Dropbox. You can exclude folders from sync, create share links, copy links, and check the sync status of individual files.

Server
Browse the complete Dropbox folder structure via the API — including folders and files that have never been synced to this machine. This is the key difference to the built-in dropbox CLI: you can see everything on the server, not just what's local.

Without a configured Dropbox App, the Server tab falls back to the local filesystem combined with the exclude list.
Keybindings
Global
| Key | Action |
|---|---|
Tab | Switch between Local and Server |
r | Refresh |
q | Quit |
Local tab
| Key | Action |
|---|---|
j/k | Navigate up/down |
Enter | Open folder or file |
u | Go up one directory |
e | Exclude folder from sync |
s | Get share link |
y | Copy last share link |
f | Show file sync status |
Server tab
| Key | Action |
|---|---|
j/k | Navigate up/down |
Enter | Open folder (or file if synced) |
u | Go up one directory |
Space | Toggle sync (exclude/include) |
a | Show auth status |
Early days
LazyDbx is a fresh project and might still have rough edges. If you run into issues or have ideas, feel free to open an issue or send a pull request on GitHub.