Skip to content

JuanseHevia/dropper

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Dropper

Dropper is a minimal macOS menu bar app for everyday file moves and copies. It lives in the status bar, gives you a small drop shelf for parking files between Finder windows, and remembers a list of destination folders you can copy or move things into with a single click.

It is designed for the boring daily file chores that don't deserve a full file-manager workflow: stashing a few attachments before sorting them, copying screenshots into a project folder, moving downloads into a working directory, and so on.

Dropper lives in your menu bar

Features

  • Status-bar shelf. A drop zone hangs under a small icon in the macOS menu bar. It expands automatically when you start dragging a file from Finder.
  • Park-and-grab. Drop files onto the shelf to hold them, then drag them back out to wherever they belong, even across spaces or windows.
  • Saved destinations. Pin folders you use often. Drop directly onto a destination card, or use the shelf + a destination button.
  • Copy or move. Toggle between copy and move modes; the choice is remembered between launches.
  • Activity strip. See the last few transfers and undo / reveal the results.
  • No Dock icon. Dropper runs as a true menu bar app and stays out of the way.

Requirements

  • macOS 14 (Sonoma) or newer
  • Swift toolchain on your PATH — either the Xcode Command Line Tools or a full Xcode install

Check Swift is available:

swift --version

If that command is not found, install the Command Line Tools:

xcode-select --install

Install

There is no signed release build yet. Dropper is distributed as source and built locally with Swift Package Manager. The whole install flow is:

git clone https://github.com/JuanseHevia/dropper.git
cd dropper
./script/build_and_run.sh

What the script does:

  1. Stops any running Dropper process.
  2. Runs swift build in release-friendly mode.
  3. Stages a self-contained .app bundle at dist/Dropper.app.
  4. Writes an Info.plist so macOS treats it as a real menu bar app (LSUIElement, bundle id, min system version).
  5. Launches the freshly built Dropper.app.

After the first launch, look for the Dropper icon in your menu bar (top right of the screen). Click it once to open or close the shelf.

Install Dropper for everyday use

The build script stages the app at dist/Dropper.app inside the repo. To keep it around like a normal app:

cp -R dist/Dropper.app /Applications/
open /Applications/Dropper.app

You can now launch Dropper from Spotlight or Launchpad like any other app.

Run Dropper at login

Once a copy lives in /Applications:

  1. Open System Settings → General → Login Items & Extensions.
  2. Under Open at Login, click + and pick Dropper.app.

Dropper will appear in the menu bar each time you log in.

Gatekeeper / "unidentified developer"

Because the bundle is built locally and not notarized, macOS may refuse to open it the first time with a message like "Dropper can't be opened because Apple cannot check it for malicious software."

Two ways to allow it:

  • Right-click Dropper.app → Open, then confirm in the dialog. macOS remembers this choice.

  • Or from a terminal:

    xattr -dr com.apple.quarantine /Applications/Dropper.app
    open /Applications/Dropper.app

This is only needed once per build.

Using Dropper

Once Dropper is running, the menu bar icon is your entry point.

  • Open the shelf. Click the menu bar icon, or just start dragging a file from Finder — the shelf opens automatically below the icon.
  • Park files. Drop files or folders onto the shelf to hold them temporarily. The shelf does not move or copy yet; it just keeps a reference.
  • Drag them out. Drag items off the shelf and drop them anywhere — a Finder window, a chat app upload field, an editor, etc.
  • Send to a saved destination. Either drop files directly onto a destination card, or park them on the shelf first and click a destination's copy / move button.
  • Switch copy ↔ move. The shelf has a toggle for the current transfer mode. The setting persists.
  • Manage destinations. Add, rename, or remove saved destinations from the settings view inside the shelf.
  • Activity strip. Recent transfers appear at the bottom of the shelf so you can reveal them in Finder.

Filename collisions in a destination are handled automatically by appending a number before the extension (e.g. notes.txtnotes 2.txt).

Updating

To pull a newer build:

cd dropper
git pull
./script/build_and_run.sh

If you copied the app into /Applications, replace it:

cp -R dist/Dropper.app /Applications/

Uninstalling

# Quit Dropper first (click the menu bar icon → quit, or):
pkill -x Dropper

# Remove the app bundle:
rm -rf /Applications/Dropper.app

# Remove saved settings (destinations, mode, etc.):
defaults delete com.juansegundohevia.Dropper 2>/dev/null || true

If you also want to remove Dropper from login items, do that from System Settings → General → Login Items & Extensions.

Troubleshooting

  • swift: command not found. Install the Xcode Command Line Tools with xcode-select --install, then re-run the build script.

  • Build fails with an SDK / platform error. Make sure you are on macOS 14 or newer. Dropper uses SwiftUI features that require Sonoma.

  • Menu bar icon does not appear. macOS sometimes hides menu bar items when the bar is full. Try removing other items, or open Bartender / Ice and unhide Dropper. You can also confirm the process is running with pgrep -x Dropper.

  • Drag from Finder doesn't open the shelf. Click the menu bar icon to open it manually, and check that no other app is intercepting drags (some clipboard managers do this).

  • Want to see what Dropper is doing. Stream the logs:

    ./script/build_and_run.sh --logs

Development

Build only:

swift build

Build and verify the app process starts:

./script/build_and_run.sh --verify

Stream app logs after launch:

./script/build_and_run.sh --logs

Stream just Dropper's own telemetry (the com.juansegundohevia.Dropper subsystem):

./script/build_and_run.sh --telemetry

Debug the staged app binary in lldb:

./script/build_and_run.sh --debug

The Codex desktop Run action is wired to the same script through .codex/environments/environment.toml, so it stays in sync with the command line.

Project Structure

  • Package.swift — SwiftPM package definition.
  • Sources/Dropper/App — app entrypoint and menu bar scene wiring.
  • Sources/Dropper/Views — SwiftUI views for the shelf, destination cards, status-bar widget, settings, and activity strip.
  • Sources/Dropper/Stores — app state, persistence, and user actions.
  • Sources/Dropper/Models — value types for destinations, modes, and transfer records.
  • Sources/Dropper/Services — file copy/move behavior, file-drag monitoring, and the status-bar widget controller.
  • Sources/Dropper/Support — small platform helpers.
  • script/build_and_run.sh — canonical local build, bundle, and launch script.

How It Works

Dropper persists destination folders and the selected copy/move mode in UserDefaults under the bundle id com.juansegundohevia.Dropper. File operations use FileManager, and destination filename collisions are handled by appending a number before the file extension.

The generated .build/ and dist/ directories are gitignored. Recreate them at any time by running the build script.

Contributing

Issues and pull requests are welcome. A good change usually:

  1. Builds clean with ./script/build_and_run.sh --verify.
  2. Keeps the menu bar UX minimal — Dropper is intentionally tiny.
  3. Includes a short note in the PR description about how you tested it on macOS 14+.

License

Dropper is released under the PolyForm Noncommercial License 1.0.0.

In plain terms:

  • Allowed: personal use, hobby projects, study, research, and use inside charities, schools, public research, public-safety, health, environmental, and government organizations.
  • Allowed: modifying Dropper and sharing your changes, as long as recipients get the same license and notice.
  • Not allowed: using Dropper, or anything derived from it, for a commercial purpose — including selling it, bundling it into a paid product, or running it as part of a for-profit service.

If you want to use Dropper commercially, open an issue to ask about a separate license.

See the LICENSE file for the full legal text.

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors