WhimsyDesk

Your files deserve a nicer place to live.

Little objects for your Mac desktop that hold your files, with doors and drawers that move like real ones. Free and open source.

For macOS 14 or later, and Windows in beta.

Drag a file into the fridge.

The library

Free objects for your Mac desktop. All open source, all made by people who like small things.

House rules

Gentle with your files, every time.

Every object in the library follows the same five rules. They are part of the guide, and each object is checked against them before it is added.

Read the rules

For makers

Make your own object.

Start from a template that already opens, closes, holds files and puts them back. Bring two pictures and the template does the rest. About 15 minutes, no Swift needed.

How do you want to build it?
  1. Copy the template

    Fork whimsydesk on GitHub to get your own copy. Then in Phoenix Code, get your fork, add the extension, and make your object.

    No Phoenix Code yet? Get it free at phcode.dev.

    1. Start ProjectGet from Gitpaste your fork
    2. Extension ManagerDesktop Objects StudioInstall
    3. FileNew Desktop Object

    Fork the repo on GitHub, then make your object from the template. Replace the name and username with yours.

    Terminal
    # Fork github.com/Electrofist/whimsydesk, then:
    git clone https://github.com/your-username/whimsydesk.git
    cd whimsydesk
    scripts/new-object.sh "Toaster" your-username

    Fork whimsydesk on GitHub. Then open your AI assistant in an empty folder and paste this prompt. Change the name and username first.

    Works with any assistant that can run commands on your Mac, like Claude Code, Codex or Cursor.

    Prompt
    I want to make a new object for WhimsyDesk, an open source library of Mac desktop objects that hold files: https://github.com/Electrofist/whimsydesk
    
    My object is called Toaster and my GitHub username is your-username.
    
    Please:
    1. Clone my fork, https://github.com/your-username/whimsydesk, into this folder.
    2. Read docs/make-your-own.md and CONTRIBUTING.md, and follow them.
    3. Run scripts/new-object.sh "Toaster" your-username
    4. Build and run it with: cd objects/toaster && bash build.sh run
    5. Wait while I put closed.png and open.png in objects/toaster/Art. Then rebuild it and help me set look.itemsArea in object.json so files sit inside the open picture.
    6. Help me write the tagline, description and README in plain words.
    7. Run scripts/check-objects.sh and fix everything it lists.
    
    Keep the house rules: files are moved, never lost. Put Back works. Nothing runs while nobody touches the object. No network or tracking. Ask me before anything you are unsure about.
  2. Draw two pictures

    One closed.png and one open.png. Same size, transparent background, exported at 2x.

    Try them here first. Drop both on the crate and yours takes its place.

    In Phoenix Code, the Studio panel shows your art as you work. Drag the files area over your open picture to set where files sit.

    Put them in your object's Art folder, keeping the names.

    Put them in your object's Art folder and tell your assistant they are there.

    The template crateClick it to open

      Stays in your browser. Never uploaded.

    • Put it on your desktop

      Open the terminal panel in Phoenix Code and run these two lines.

      The first build takes a minute or two. Your object appears at the lower left of your screen, behind your windows. Click it, drop a file on it, and right-click a file inside for Put Back.

      Terminal
      cd objects/toaster
      bash build.sh run

      Build it and run it.

      The first build takes a minute or two. Your object appears at the lower left of your screen, behind your windows. Click it, drop a file on it, and right-click a file inside for Put Back.

      Terminal
      cd objects/toaster
      bash build.sh run

      Your assistant builds and runs it for you. When your pictures are in, ask it to rebuild.

      Your object appears at the lower left of your screen, behind your windows. Click it, drop a file on it, and right-click a file inside for Put Back.

      Prompt
      My pictures are in objects/toaster/Art. Rebuild it, run it, and help me set where files sit in the open picture.
    • Send it in

      Mistakes in object.json are marked as you type. When it looks right, use the Git panel to commit objects/toaster and .github/CODEOWNERS on a new branch, and push.

      Then open your fork on GitHub and choose Compare & pull request. GitHub checks and builds your object for you.

      1. Git panelNew branchadd-toaster
      2. Commitobjects/toaster, .github/CODEOWNERS
      3. Push

      Check your card, then send a pull request.

      Then open your fork on GitHub and choose Compare & pull request. GitHub checks and builds your object for you.

      Terminal
      scripts/check-objects.sh
      git checkout -b add-toaster
      git add objects/toaster .github/CODEOWNERS
      git commit -m "Add Toaster"
      git push -u origin add-toaster

      Ask your assistant to check it and send it in.

      GitHub checks and builds your object for you, and the pull request shows anything to fix.

      Prompt
      Run scripts/check-objects.sh and fix what it lists. Then commit objects/toaster and .github/CODEOWNERS on a new branch called add-toaster, push it, and open a pull request to Electrofist/whimsydesk.