Your cloud drives in the bar: what's transferring, what's mounted, how much space is left — and adding a new provider without opening a terminal.
Built for my own machine and verified against live Google Drive, Box, OneDrive, Dropbox and Zoho accounts on Omarchy 4.0 / rclone 1.75.
git clone https://github.com/davidszp/omarchy-rclone ~/.config/omarchy/plugins/io.github.davidszp.omarchy-rclone
omarchy restart shellAdd the widget to your bar, click it, and follow the panel. It sets up the rclone daemon on first run and walks you through connecting a drive. If rclone isn't installed it offers to do that too.
Needs Omarchy 4.x. (Python 3 is already there — uwsm, which starts your
session, depends on it.)
- Mount a drive with a switch, and have it come back after a reboot.
- See what's transferring, with speed and progress, and stop a job.
- Add a provider in the panel — Drive, OneDrive, Dropbox, Box, pCloud,
Jottacloud, Yandex, Zoho, plus S3, B2, SFTP, WebDAV and FTP. Anything else
falls back to
rclone configin a terminal. - Copy, mirror or two-way sync a folder, with a dry run first.
- Cap the bandwidth so a big upload doesn't eat your connection.
- Open a drive in your file manager — double click the row, or use its menu.
- Remove a remote, or stop every transfer and unmount everything at once.
Worth knowing, because rclone is not Dropbox and this trips people up.
Mounting gives you a folder that is the cloud. Nothing is downloaded up front; files are fetched when you open them and uploaded a few seconds after you save. Unmount and they're gone from your disk again. There's no local copy.
Transferring makes a real second copy — for offline access, or a backup that survives losing the account. It runs once when you click it. Nothing watches for changes afterwards.
So: mount to use your files, transfer to duplicate them.
If a row says "3 not uploaded yet", those writes are still in the local cache. Unmounting then will ask before throwing them away.
Up/down between remotes, left/right across a row's actions, Enter to run one. Actions are matched by name rather than position, so a row that gains a button doesn't shift what Enter does.
r refreshes, c checks each remote is reachable, a opens the Drive wizard.
Two, in the bar's plugin settings: how often to poll when idle (30s) and while something is transferring (2s).
./check # everything verifiable without a running shell — run this firstThat covers the pure logic, the Python helpers, shell syntax, the manifest, that every icon exists in the font, and that nothing in the plugin has lost its last caller. It also runs the add → mount → remove lifecycle against a throwaway rclone daemon, and drives the live panel over IPC — the only way to test QML that imports Omarchy's own components. The last two skip themselves when there is no rclone or no running shell, and a skip is not a pass.
One rule worth repeating: after changing a .qml file, restart the shell
before believing anything. Saving hot-reloads the plugin and that covers edits
to existing code, but a newly added function does not take effect until
omarchy restart shell — with no error to tell you which case you are in
(NOTES.md, gotcha 11).
Give it a second or two between saving and restarting, though: restarting inside the plugin's own reload window crashes Quickshell (quickshell#956, open, not this plugin's bug). The shell restarts itself, but you lose your place.
status.py is the only thing that reads rclone's state, and rcclient.py the
only thing that talks to its API — over a unix socket, so no credential is ever an
argument. Model.js is pure logic with no QML imports, which is why it can be unit
tested. Everything else is a panel component. See NOTES.md for how it fits together and the
traps found on the way.
- Most of rclone's 69 backends — thirteen are in the grid; the rest go through the terminal.
- Encrypted remotes (
crypt) — wraps an existing remote, so it needs a different form than "pick a provider and sign in". - Notifications — a mount that fails at login is only visible if you look.
MIT — see LICENSE.
