The project's README from github.com/nikgrbn/finder-menu. As one markdown file: README.md.
The right-click options macOS is missing.
New File, Open Terminal Here, Open Folder With, Copy Path and Go to Parent Folder, in Finder's own menu.
Install · What's in the menu · Templates · Settings · Languages · Privacy · How it works
Right-click empty space in any folder. Finder's own items are faded here to show what Finder Menu adds.
📂Built-inFive actions in Finder's own right-click menu. |
🧰Your toolsTerminals, VS Code, Cursor, JetBrains, Xcode… |
🔒PrivateNo network code, no telemetry. |
🪶TinyAbout 900 lines of Swift, built on your Mac. |
Right-click empty space in any folder, with nothing selected:
| Menu item | What it does | |
|---|---|---|
| New File… | Asks for a name with any extension (notes.md, main.py, .env), creates it in the current folder and selects it. Never overwrites. Names you use often can be saved as templates. |
|
| Open Terminal Here | Opens a terminal in the current folder: iTerm2, Ghostty, Warp, WezTerm, kitty or Alacritty if you have one, otherwise Terminal. Pick your own. | |
| Open Folder With ▸ | Opens the current folder in an IDE or editor. Lists the ones you have installed (VS Code, Cursor, Windsurf, Zed, Sublime Text, JetBrains IDEs, Android Studio, Xcode…), plus Other App… to pick any app. | |
| Copy Path | Copies the current folder's full path. | |
| Go to Parent Folder | Moves the window up one level, even when Finder's Back button is greyed out (e.g. a window opened with open .). |
Right-clicking a file or folder works too: Copy Path copies the selected items' paths, and Open Terminal Here and Open Folder With use the selected folder.
The menu also appears on external drives, disk images and network shares (such as SMB), not just your Mac's own disk.
notes.md in one click.If the name is taken, you get notes 2.md, like in Finder. Manage Templates… removes templates.
With Homebrew:
brew install nikgrbn/tap/finder-menu
finder-menu enable
Or from source:
git clone https://github.com/nikgrbn/finder-menu.git
cd finder-menu
./install.sh
Either way, the app is built on your machine, installed to ~/Applications/Finder Menu.app and the Finder extension is turned on. There's nothing to launch: Finder loads the extension by itself, including after a restart.
[!NOTE] The first time you use Go to Parent Folder, macOS asks whether Finder Menu can control Finder. Click OK, because that's how it moves the window.
brew update && brew upgrade finder-menu
finder-menu enable
From source, run git pull && ./install.sh in the repo folder.
[!TIP] Don't skip
brew update: on its own,brew upgradechecks for new versions only once a day.
Open Finder Menu from Spotlight or your Applications folder, or run finder-menu settings. The settings window lets you:
Changes apply the next time you right-click. You can also set the terminal from the command line: finder-menu terminal Ghostty (any app name works), finder-menu terminal to see the current choice, and finder-menu terminal auto to go back to automatic. If you installed from source, run scripts/finder-menu from the repo folder instead.
Finder Menu uses your Mac's language:
Any other language falls back to English. Want yours? See Contributing.
With Homebrew:
finder-menu disable
brew uninstall finder-menu
From source:
./uninstall.sh
Sources/FinderMenuExtension is a Finder Sync extension that adds the menu items to every folder. Finder only asks it about the drives it lists, so it lists every mounted drive and updates the list when one is mounted or ejected. Finder extensions must run sandboxed, so this part only reads the clicked folder and copies paths.Sources/FinderMenu is a small helper app that isn't sandboxed and has no Dock icon. The extension hands it actions through a findermenu:// URL, and the helper ignores those URLs from anything else. It creates the files, opens the terminal and moves the Finder window, then quits.Sources/Shared/Settings.swift holds the list of menu items and reads the settings; Sources/FinderMenu/SettingsWindow.swift is the settings window. The helper writes the settings, and the extension only reads them.Sources/Shared/Templates.swift holds the New File templates (saved file names). The extension builds the New File submenu from them, and the helper looks up the chosen template by id, so the file name never travels in the URL.Sources/Shared/Editors.swift is the IDE list. The extension builds the submenu from it, and the helper refuses links naming any app that isn't on it.scripts/build.sh compiles and signs the app; scripts/finder-menu enable|disable copies it into ~/Applications and turns the extension on or off. install.sh, uninstall.sh and the Homebrew formula all use these two.Resources/*.lproj holds the translations, one folder per language. scripts/build.sh copies them into both the helper and the extension, because the extension shows the menu titles.scripts/make-icon.swift draws the app icon in code and regenerates Resources/AppIcon.icns and docs/icon.png.docs/mockups/mockups.html draws the pictures in this README with HTML and CSS, and scripts/make-mockups.swift renders them to docs/images in light and dark.You build Finder Menu yourself from this source, so there's no downloaded app to trust. Everything below can be checked in the code:
install.sh, uninstall.sh and scripts/). Read them before you run them.findermenu:// links. Other apps can send those links too, and so can a website after your browser asks you. Opening a folder they choose in a terminal or IDE could run code from it, so the helper checks the code signature of whatever sent each link and ignores any that didn't come from its own Finder extension. On top of that, it only acts on folders that exist, only opens apps from its built-in IDE list (or one you pick yourself), asks before a custom New File, and for templates only uses a file name you already saved (never taken from the URL).install.sh signs the build on your Mac ("Sign to Run Locally"). It isn't notarized by Apple, because there's no download for Apple to check.Found a security problem? Please report it privately, as described in SECURITY.md.
Bug reports and pull requests are welcome.
Resources/en.lproj to Resources/<code>.lproj, translate the text in it, add the code to CFBundleLocalizations in both Resources/*-Info.plist files, and open a pull request.docs/mockups/mockups.html, then run swift scripts/make-mockups.swift.