Skip to content

About

Bring the National Gallery of Art to your Mac: sets your wallpaper from 60,000 public-domain works.

Topics

Resources

Stars

1 star

Watchers

0 watching

Forks

Latest commit

 

History

39 Commits

Folders and files

Repository files navigation

OpenGallery app icon

OpenGallery

OpenGallery brings the National Gallery of Art to your Mac. It sets your wallpaper from 60,000 of its public-domain works, at full resolution on every screen.

macOS 13+ Universal binary Swift and SwiftUI MIT license Artwork CC0

Download for macOS

Three paintings from the collection
Wivenhoe Park, Essex, John Constable, 1816 · Farmhouse in Provence, Vincent van Gogh, 1888 · The Bridge at Argenteuil, Claude Monet, 1874

Features

Rotation: Changes the artwork every hour, or every 15 minutes, 3 hours or day. Show the same artwork on every display or different art on each.

Filters: Choose artwork by type, orientation, art movement and palette. Nudity is hidden by default, using the National Gallery of Art's own tags and image analysis.

Desktop gestures: Swipe sideways with two fingers to see the next or previous artwork. Force Click to see the artwork's title, artist, date and medium.

Favorites: Save up to 20 favorites, and show only those if you like.

On/off: Switch it off from the menu to revert to your system wallpaper.

Offline: Keeps rotating through artwork it has already downloaded.

Small cache: Keeps only the 15 most recent images and deletes older ones as it goes, so it never grows past about 25–50 MB, depending on your screens.

Runs on Apple Silicon and Intel Macs with macOS 13 or later.

Privacy

OpenGallery collects no data about you and has no accounts, analytics or tracking. It only connects to the National Gallery of Art's image server to download artwork.

Force Click needs the Input Monitoring permission because macOS only shares trackpad pressure with apps that have it. OpenGallery listens for trackpad pressure and gestures on the desktop, never reads your keystrokes, and keeps nothing. Force Click is off by default, so OpenGallery doesn't ask for the permission unless you turn it on.

Install

Agent prompt

Paste this into any coding agent that can run commands on your Mac, such as Claude Code, Codex, Cursor or Gemini CLI, and it installs OpenGallery for you:

Install OpenGallery from https://github.com/isaaczaak/opengallery.

What it is: an open-source (MIT) macOS menu bar app, written in Swift, that
sets the desktop wallpaper to public-domain paintings from the National
Gallery of Art. It downloads images only from the National Gallery of Art's
image server (api.nga.gov), collects no data, and needs no account or API
key. You'll build it from source with Apple's command line tools. The only
thing it installs is /Applications/OpenGallery.app, which starts at login.

1. Check this Mac runs macOS 13 or later (sw_vers). If `swift --version`
   fails, run `xcode-select --install`, wait for me to finish the installer,
   then continue.
2. Clone the repo into ~/Code/opengallery (or update it with git pull if it's
   already there) and run `scripts/bundle.sh --install` from inside it.
3. Confirm OpenGallery is running (pgrep -x OpenGallery) and tell me to look
   for its icon in the menu bar.
4. Tell me that Force Click artwork details is optional and off by default:
   to use it, I turn it on in OpenGallery's Settings and allow OpenGallery
   under System Settings → Privacy & Security → Input Monitoring. After a
   future update I may need to allow it again.

Don't use sudo, and don't change any other system or privacy settings.

Download

  1. Download the latest OpenGallery zip from Releases.
  2. Unzip it and move OpenGallery to your Applications folder.
  3. Open it. Apple hasn't notarized OpenGallery yet, so macOS blocks it the first time. Go to System Settings → Privacy & Security, scroll down and click Open Anyway.

To update, quit OpenGallery from its menu and replace the app with the new version.

Build from source

You need macOS 13 or later and Apple's command line tools. To install the tools, run xcode-select --install.

git clone https://github.com/isaaczaak/opengallery.git
cd opengallery
scripts/bundle.sh --install

The script builds OpenGallery, copies it to /Applications and opens it. You built it yourself, so macOS opens it without a security warning. To update, run git pull and scripts/bundle.sh --install again.

After installing

OpenGallery lives in your menu bar, with a small frame icon. Click it to see what's on each screen, change the artwork, or open Settings. It starts at login; you can turn that off in Settings.

Force Click is off by default. Turn it on in OpenGallery's Settings, then allow OpenGallery when macOS asks for Input Monitoring. macOS ties this permission to each version, so allow it again if Force Click stops working after an update.

Uninstall

Quit OpenGallery from its menu, then drag it from Applications to the Trash.

Development

How OpenGallery works: the build scripts turn NGA open data into a packed catalog; on your Mac, OpenGallery picks artwork, downloads it from the NGA image server and sets the wallpaper, with swipe and Force Click on the desktop

How it works

Downloads: Each image downloads only when it's about to show, sized for your screen.

Storage: The 15 most recent images, about 25–50 MB depending on your screens, in ~/Library/Caches, which macOS can clear when it needs space.

Memory: About 50 MB.

Artwork list

scripts/build_manifest.py builds Resources/manifest.json from the National Gallery of Art's open data. It keeps open-access images at least 2000px on the long side. Landscape works fill the screen; the app shows portrait and square works whole, on a gallery wall. Two more scripts tag the artwork and then rebuild the list:

scripts/build_manifest.py
scripts/analyze_colors.py      # palette tags, cached in .data/colors.json

# Nudity scores with CLIP, cached in .data/nudity.json
python3 -m venv .data/venv && .data/venv/bin/pip install torch open_clip_torch pillow
.data/venv/bin/python scripts/detect_nudity.py

bundle.sh compresses the list into the app, and the app unpacks it at launch.

Layout

  • Sources/OpenGallery/: the SwiftUI menu bar app and Settings window
  • scripts/: artwork list, icon, signing and build scripts
  • Resources/: the artwork list and icon bundled into the app

Signing

Each build gets a new signature, so macOS forgets OpenGallery's Input Monitoring permission every time you rebuild. If you rebuild often, run scripts/make_signing_cert.sh once. It adds a self-signed certificate to your login keychain, trusted only for code signing, and bundle.sh signs with it from then on, so the permission sticks. Any program running as you can also sign with this certificate and take over that permission. To undo it, delete the certificate in Keychain Access.

License

The code is MIT licensed (see LICENSE). The artwork images and collection data come from the National Gallery of Art's open access program. The Gallery releases images of works it believes to be in the public domain under CC0, along with the collection data. Artwork courtesy National Gallery of Art, Washington. OpenGallery isn't affiliated with or endorsed by the National Gallery of Art.


Made by Isaac Ng

About

Bring the National Gallery of Art to your Mac: sets your wallpaper from 60,000 public-domain works.

Topics

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages