Skip to main content

CLI and tray tools for mounting rclone remotes

Project description

Mountlet

Mountlet is a desktop tray and terminal tool for mounting and unmounting rclone remotes. It uses your existing rclone configuration and does not store cloud credentials inside the application install directory.

How It Works

Mountlet is a friendly control panel for two standard tools:

  • rclone connects to cloud storage providers such as Google Drive, Dropbox, S3-compatible storage, and WebDAV.
  • A filesystem driver lets the operating system show a cloud remote as if it were a normal folder: FUSE on Linux, WinFsp on Windows, or macFUSE on macOS.

This app reads your rclone remotes, creates local mount folders, and starts or stops rclone mount for you.

Requirements

  • Python 3.10 or newer.
  • rclone, which connects to your cloud storage.
  • A compatible filesystem driver: FUSE on Linux, WinFsp on Windows, or macFUSE on macOS.

On Ubuntu, install the system tools with:

sudo apt install rclone fuse3

Install

For isolated CLI use:

pipx install mountlet

For the desktop tray preview:

pipx install "mountlet[tray]"

For a local checkout:

python -m pip install .

Install a GitHub Preview

GitHub previews are source snapshots from the wip branch, not signed native installers. They may be unstable and can change without notice. Linux is the primary supported platform. Source-installed Windows and macOS tray and mount flows are available as experimental support while native packaging is developed.

Each section starts with the system prerequisites and installs Mountlet in an isolated environment, so a GitHub preview does not replace a stable PyPI installation.

Use only the subsection for your operating system. Linux and macOS use shell commands; Windows uses PowerShell. Their syntax is not interchangeable.

Linux

Install FUSE 3 through your distribution. On Ubuntu or Debian:

sudo apt update
sudo apt install rclone fuse3 python3-venv

Install and start the preview:

PREVIEW="$HOME/.local/share/mountlet-preview"
python3 -m venv "$PREVIEW"
"$PREVIEW/bin/python" -m pip install --upgrade pip
"$PREVIEW/bin/python" -m pip install --upgrade --force-reinstall \
  "mountlet[tray] @ https://github.com/eric-holt/mountlet/archive/refs/heads/wip.zip"
"$PREVIEW/bin/mountlet" tray

Windows (Experimental)

Install Python 3.12 and rclone with WinGet:

winget install --id Python.Python.3.12 --exact
winget install --id Rclone.Rclone --exact

Install WinFsp using its Windows installer, then close and reopen PowerShell so Python and rclone are available.

If you downloaded the portable rclone.exe instead, place it in a permanent folder and tell Mountlet where it is. Replace the example path as needed:

$env:RCLONE_PATH = "C:\Tools\rclone\rclone.exe"
[Environment]::SetEnvironmentVariable("RCLONE_PATH", $env:RCLONE_PATH, "User")

Mountlet also checks PATH and common WinGet, Chocolatey, Scoop, and manual installation folders. Confirm that rclone is available before continuing:

& $env:RCLONE_PATH version

If you used WinGet and did not set RCLONE_PATH, use rclone version instead.

Install pipx and add its application directory to your user PATH:

py -3.12 -m pip install --user --upgrade pipx
py -3.12 -m pipx ensurepath

Close and reopen PowerShell so the updated PATH is loaded. Then install and start Mountlet. pipx keeps the preview isolated while making the mountlet command available to your user account:

pipx install --force "mountlet[tray] @ https://github.com/eric-holt/mountlet/archive/refs/heads/wip.zip"
mountlet tray

macOS (Experimental)

Install Apple's Command Line Tools first. A system dialog opens; finish that installation before continuing:

xcode-select --install

Install Homebrew and activate it in the current shell. The path check supports both Apple Silicon and Intel Macs:

/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
BREW=/opt/homebrew/bin/brew
[ -x "$BREW" ] || BREW=/usr/local/bin/brew
printf 'eval "$(%s shellenv)"\n' "$BREW" >> "$HOME/.zprofile"
eval "$("$BREW" shellenv)"

Install Python, pipx, and macFUSE:

brew install python@3.12 pipx
brew install --cask macfuse
pipx ensurepath

Before macFUSE can mount anything, macOS may block its kernel extension. Follow the prompts shown when you first try to mount a remote:

  1. Choose Open System Settings, then open Privacy & Security.
  2. If an Allow button appears for system software from developer Benjamin Fleischer, select it, authenticate, and restart the Mac.
  3. On an Apple Silicon Mac, macOS may first show Enable System Extensions. Select it and shut down when prompted. Hold the power button to enter Recovery, open Startup Security Utility, select the macOS volume, and choose Security Policy.
  4. Select Reduced Security, enable Allow user management of kernel extensions from identified developers, and restart.
  5. Try mounting again, return to Privacy & Security, select Allow for macFUSE if requested, and restart once more.

These security changes are required by macFUSE's kernel backend, not by Mountlet. See the official macFUSE setup guide for screenshots and troubleshooting.

Install rclone using its official script. Do not use brew install rclone for Mountlet: that macOS build does not include mount support.

sudo -v
curl https://rclone.org/install.sh | sudo bash

Finally, install Mountlet with the Homebrew Python:

PYTHON="$(brew --prefix python@3.12)/bin/python3.12"
"$PYTHON" --version
pipx install --force --python "$PYTHON" \
  "mountlet[tray] @ https://github.com/eric-holt/mountlet/archive/refs/heads/wip.zip"

The version check must report Python 3.10 or newer. Close and reopen the terminal after pipx ensurepath, then start the preview:

mountlet tray

Run the same install command again to update an existing preview. To test a specific tagged pre-release instead, replace refs/heads/wip.zip with refs/tags/vX.Y.Z.zip.

Use

Open Mountlet:

mountlet

The app checks whether your computer is ready before it opens the menu. If something is missing, it prints the next step instead of dropping you into an empty screen.

For a guided setup check:

mountlet setup

If you have not added any cloud storage to rclone yet, let setup open rclone's connection flow:

mountlet setup --configure-rclone

Normal use is:

mountlet

Quitting the menu leaves mounted remotes connected. Use u in the menu to unmount everything.

Desktop Tray Preview

The tray app is optional and uses PySide6. Start it with:

mountlet tray

If you installed the CLI without tray support, add PySide6 with:

pipx inject mountlet PySide6

The tray app uses the tray icon this way:

  • Hover shows a short mounted/unmounted summary.
  • Left-click opens or closes the Mountlet window. If it is behind another window, the first click brings it forward. On Plasma X11, opening it from a different desktop moves it to the current desktop.
  • Right-click shows app-level actions such as mount all, unmount all, update status, app settings, available configuration files, and quit.

On macOS, Mountlet runs as a menu-bar utility without a separate Dock icon. Left-click opens or closes the Mountlet window, and right-click opens the app menu, matching the other supported desktops.

The Mountlet window provides:

  • Compact remote strips with storage usage and mount-state toggles.
  • Click-to-open folders, provider website shortcuts, and per-remote settings.
  • A guided + flow for adding supported cloud remotes through rclone.
  • Sorting by registration time, name, provider, total size, used space, or remaining space, with manual move controls for final adjustments.
  • A pin control that keeps the window above other windows without tying it to one desktop.
  • A file-manager selector in App settings. Mountlet follows the Linux desktop default, uses File Explorer by default on Windows, and Finder on macOS; other detected managers can be selected without changing the operating-system default.

If your desktop session does not expose a system tray, use the terminal menu instead.

Provider Support

Mountlet uses rclone under the hood, so provider support depends on both Mountlet's setup UI and rclone's backend behavior.

Locally tested with the current GUI flow and/or active local remotes:

  • Google Drive
  • Dropbox
  • Microsoft OneDrive
  • Box
  • pCloud
  • Cloudflare R2 through the S3-compatible wizard
  • Koofr through rclone's dedicated Koofr backend

Available but not yet locally tested:

  • Amazon S3
  • MinIO and other S3-compatible providers
  • Wasabi
  • WebDAV providers such as Nextcloud, ownCloud, SharePoint, and Fastmail Files

In the setup window, tested options are shown in white and untested options in yellow. Untested providers may work through rclone, but expect rough edges until the wizard path is tested with a real account.

Extra Commands

These are useful for backup, troubleshooting, or moving to another computer:

mountlet path
mountlet verify
mountlet verify --auto-reconnect
mountlet reconnect --remote MyRemote
mountlet export ~/mountlet-backup
mountlet import --config ~/mountlet-backup/rclone.conf

File Locations

Mountlet keeps application data in user-specific locations and leaves rclone credentials in the standard rclone location.

On Linux:

  • ~/.config/rclone/rclone.conf: rclone remotes and credentials.
  • ~/.config/mountlet/config.toml: Mountlet preferences.
  • ~/.config/mountlet/mounts.toml: per-remote mount preferences.
  • ~/.local/state/mountlet/: runtime state.
  • ~/.cache/mountlet/: cache files.
  • ~/cloud_mounts/: default mount root.

Print the paths for your system:

mountlet path

Create the Mountlet user folders:

mountlet path --ensure

That command also creates starter config.toml and mounts.toml files if they do not exist yet.

Override the mount root for a shell session:

export MOUNTLET_MOUNT_BASE=/path/to/mounts

App Settings

In the tray app, use Config > App settings to edit app-wide behavior. Use the gear button on a remote strip to edit only that mount. The settings windows show the available fields with text boxes, checkboxes, and dropdowns, then write config.toml and mounts.toml for you.

Technical users can still open the raw text files from the app-level config menu.

Keep cloud account details in rclone.conf; Mountlet settings only control local app and mount behavior.

Credentials

rclone.conf can contain OAuth tokens and provider credentials. Treat exported bundles as sensitive files.

  • Do not share real rclone.conf files.
  • Do not share client_secret*.json files.
  • Store backups outside application install directories.
  • Review exported bundles before copying them to another machine.

Status

The current public target is Linux CLI and desktop tray use. The tray is still early, but it is the main direction for the app.

See the changelog for version history.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

mountlet-0.3.0.tar.gz (178.8 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

mountlet-0.3.0-py3-none-any.whl (153.7 kB view details)

Uploaded Python 3

File details

Details for the file mountlet-0.3.0.tar.gz.

File metadata

  • Download URL: mountlet-0.3.0.tar.gz
  • Upload date:
  • Size: 178.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for mountlet-0.3.0.tar.gz
Algorithm Hash digest
SHA256 2931ce72964682155720e0145a0e11cee08554d93a901a8de53cbeb76e76b0f7
MD5 8d059ba0e00b2287d8d3f9ea895c6b46
BLAKE2b-256 733db06f60a2d5d5591cdcede4ed57a2c7257b953b0af409718e646f561b95dd

See more details on using hashes here.

Provenance

The following attestation bundles were made for mountlet-0.3.0.tar.gz:

Publisher: python-publish.yml on eric-holt/mountlet

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file mountlet-0.3.0-py3-none-any.whl.

File metadata

  • Download URL: mountlet-0.3.0-py3-none-any.whl
  • Upload date:
  • Size: 153.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for mountlet-0.3.0-py3-none-any.whl
Algorithm Hash digest
SHA256 df5c66823e8e500a557d0dab9caf8c4a4fbf77cba711c42dd1c0c6970afbc242
MD5 7204185e2f8ec7ab127644c5156d622a
BLAKE2b-256 f1ed7d99609c397d8c9f53b03d7e14bcf6098170afd6a706fbf741190ccd0300

See more details on using hashes here.

Provenance

The following attestation bundles were made for mountlet-0.3.0-py3-none-any.whl:

Publisher: python-publish.yml on eric-holt/mountlet

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page