From 1eca425c5f453bc0ed47f780d491656549d3ab53 Mon Sep 17 00:00:00 2001 From: relikd Date: Tue, 27 Jan 2026 16:07:35 +0100 Subject: [PATCH] Initial --- .gitignore | 4 + LICENSE | 7 + Makefile | 55 ++++ README.md | 67 +++++ examples/Custom Sort Order/1. One | 2 + examples/Custom Sort Order/2. Two | 2 + examples/Custom Sort Order/3. Three | 2 + examples/Custom Sort Order/4. Four | 2 + examples/Custom Sort Order/9 Nine | 2 + examples/Custom Sort Order/999 Zero | 2 + examples/Custom Sort Order/Five | 2 + examples/Flags/999 Python example [verbose] | 4 + examples/Flags/icon.svg | 5 + examples/Flags/ifconfig (text editor) [txt] | 2 + examples/Flags/top (updated) [verbose] | 2 + examples/Open Desktop Folder | 2 + examples/Toggle Desktop Icons | 8 + img/icon-sm.svg | 28 ++ img/icon.svg | 30 +++ img/screenshot.png | Bin 0 -> 54265 bytes src/AppIcon.icns | Bin 0 -> 27582 bytes src/Info.plist | 36 +++ src/main.swift | 276 ++++++++++++++++++++ 23 files changed, 540 insertions(+) create mode 100644 .gitignore create mode 100644 LICENSE create mode 100644 Makefile create mode 100644 README.md create mode 100755 examples/Custom Sort Order/1. One create mode 100755 examples/Custom Sort Order/2. Two create mode 100755 examples/Custom Sort Order/3. Three create mode 100755 examples/Custom Sort Order/4. Four create mode 100755 examples/Custom Sort Order/9 Nine create mode 100755 examples/Custom Sort Order/999 Zero create mode 100755 examples/Custom Sort Order/Five create mode 100755 examples/Flags/999 Python example [verbose] create mode 100644 examples/Flags/icon.svg create mode 100755 examples/Flags/ifconfig (text editor) [txt] create mode 100755 examples/Flags/top (updated) [verbose] create mode 100755 examples/Open Desktop Folder create mode 100755 examples/Toggle Desktop Icons create mode 100644 img/icon-sm.svg create mode 100644 img/icon.svg create mode 100644 img/screenshot.png create mode 100644 src/AppIcon.icns create mode 100644 src/Info.plist create mode 100755 src/main.swift diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..0e1b3d6 --- /dev/null +++ b/.gitignore @@ -0,0 +1,4 @@ +.DS_Store +/*.app +/*.tar.gz +*.xcodeproj diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..edc2ee6 --- /dev/null +++ b/LICENSE @@ -0,0 +1,7 @@ +Copyright 2026 relikd + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..ab74d4d --- /dev/null +++ b/Makefile @@ -0,0 +1,55 @@ +# usage: make [CONFIG=debug|release] + +ifeq ($(CONFIG), debug) + CFLAGS=-Onone -g +else + CFLAGS=-O +endif + +PLIST=$(shell grep -A1 $(1) src/Info.plist | tail -1 | cut -d'>' -f2 | cut -d'<' -f1) +HAS_SIGN_IDENTITY=$(shell security find-identity -v -p codesigning | grep -q "Apple Development" && echo 1 || echo 0) + + +Menuscript.app: SDK_PATH=$(shell xcrun --show-sdk-path --sdk macosx) +Menuscript.app: src/* examples/* + @mkdir -p Menuscript.app/Contents/MacOS/ + swiftc ${CFLAGS} src/main.swift -target x86_64-apple-macos10.13 \ + -emit-executable -sdk ${SDK_PATH} -o bin_x64 + swiftc ${CFLAGS} src/main.swift -target arm64-apple-macos10.13 \ + -emit-executable -sdk ${SDK_PATH} -o bin_arm64 + lipo -create bin_x64 bin_arm64 -o Menuscript.app/Contents/MacOS/Menuscript + @rm bin_x64 bin_arm64 + @echo 'APPL????' > Menuscript.app/Contents/PkgInfo + @mkdir -p Menuscript.app/Contents/Resources/ + @cp src/AppIcon.icns Menuscript.app/Contents/Resources/AppIcon.icns + @rm -rf Menuscript.app/Contents/Resources/examples/ + @cp -R examples/ Menuscript.app/Contents/Resources/examples/ + @cp src/Info.plist Menuscript.app/Contents/Info.plist + @touch Menuscript.app + @echo +ifeq ($(HAS_SIGN_IDENTITY),1) + codesign -v -s 'Apple Development' --options=runtime --timestamp Menuscript.app +else + codesign -v -s - Menuscript.app +endif + @echo + @echo 'Verify Signature...' + @echo + codesign -dvv Menuscript.app + @echo + codesign -vvv --deep --strict Menuscript.app +ifeq ($(HAS_SIGN_IDENTITY),1) + @echo + -spctl -vvv --assess --type exec Menuscript.app +endif + + +.PHONY: clean +clean: + rm -rf Menuscript.app bin_x64 bin_arm64 + + +.PHONY: release +release: VERSION=$(call PLIST,CFBundleShortVersionString) +release: Menuscript.app + tar -czf "Menuscript_v${VERSION}.tar.gz" Menuscript.app diff --git a/README.md b/README.md new file mode 100644 index 0000000..5caf756 --- /dev/null +++ b/README.md @@ -0,0 +1,67 @@ +[![macOS 10.13+](https://img.shields.io/badge/macOS-10.13+-888)](#install) +[![Current release](https://img.shields.io/github/release/relikd/Menuscript)](https://github.com/relikd/Menuscript/releases) +[![All downloads](https://img.shields.io/github/downloads/relikd/Menuscript/total)](https://github.com/relikd/Menuscript/releases) + + + +# Menuscript + +A menu bar script executor. + + + +Menuscript adds a status bar menu to call custom (user defined) scripts. +The app reads the content of a directory and adds all executable files to the status menu. +The screenshot above represents the content of the [examples](examples/) directory. + + +## Usage + +1) Define your own script directory in Preferences. +2) Add subdirectories and scripts to your scripts dir. +3) Run a script from your status menu. +4) Depending on your script action, you may want to allow `Full Disk Access` for Menuscript. + +*Note:* Menuscript reloads the directory structure each time you open the status menu, no need to restart the app. + + +### Requirements + +Script files are called as is. +Therefore each script __must__ have the executable flag (`chmod 755` or `chmod +x`) and __must__ execute itself on double-click. +The latter can be achieved by adding a shebang (e.g., `#!/bin/sh`) to the script file. +You may want to omit the file extension (in case of Python, that would launch the editor instead of executing the script). + +Apart from that, there is no limitation on the script language. +You can use Bash, Python, Swift, Ruby, whatever. +And of course, you can always write a script wrapper to call something else. + +=> If you can call the script with `open` (e.g., `open myscript`), it will work in the status menu too. + + +### Configuration + +There are a few ways to modify the menu structure: + +#### Sort Order + +By default, menu items are sorted in alphabetic order (case-insensitive). +You can change the item order by prepending numbers to the filename. +It does not matter whether you prepend your files with `42` or `42.` or `42 - `, as long as the first character is a number. + +You dont need to rename all items either. +Each item has a default numerical order of `100`. +By prepending a number lower or higher than 100, you can place items at the top or bottom of the menu respectively. + +#### Modifier Flags + +Modifier flags change what happens if you click on the menu item. +Flags are defined by adding a text snippet to the filename. +These constant strings are defined: + +- __[txt]__: Execute the script and dump all output in a new `TextEdit` window (useful for reports or log files, etc.) +- __[verbose]__: Usually, script files are executed in the background. With this flag, a new `Terminal` window will open and show the activley running script (useful for continuous output like `top` or `netstat -w`, etc.) + +#### Menu Icon + +A subdirectory can have a custom icon if the folder contains an image file named `icon.X` (where `X` is one of: `svg`, `png`, `jpg`, `jpeg`, `gif`, `ico`). diff --git a/examples/Custom Sort Order/1. One b/examples/Custom Sort Order/1. One new file mode 100755 index 0000000..c3c7a92 --- /dev/null +++ b/examples/Custom Sort Order/1. One @@ -0,0 +1,2 @@ +#!/bin/sh +say 1 diff --git a/examples/Custom Sort Order/2. Two b/examples/Custom Sort Order/2. Two new file mode 100755 index 0000000..2370dc1 --- /dev/null +++ b/examples/Custom Sort Order/2. Two @@ -0,0 +1,2 @@ +#!/bin/sh +say 2 diff --git a/examples/Custom Sort Order/3. Three b/examples/Custom Sort Order/3. Three new file mode 100755 index 0000000..c77c076 --- /dev/null +++ b/examples/Custom Sort Order/3. Three @@ -0,0 +1,2 @@ +#!/bin/sh +say 3 diff --git a/examples/Custom Sort Order/4. Four b/examples/Custom Sort Order/4. Four new file mode 100755 index 0000000..5d0b4ee --- /dev/null +++ b/examples/Custom Sort Order/4. Four @@ -0,0 +1,2 @@ +#!/bin/sh +say 4 diff --git a/examples/Custom Sort Order/9 Nine b/examples/Custom Sort Order/9 Nine new file mode 100755 index 0000000..2504f3f --- /dev/null +++ b/examples/Custom Sort Order/9 Nine @@ -0,0 +1,2 @@ +#!/bin/sh +say 9 diff --git a/examples/Custom Sort Order/999 Zero b/examples/Custom Sort Order/999 Zero new file mode 100755 index 0000000..c049e92 --- /dev/null +++ b/examples/Custom Sort Order/999 Zero @@ -0,0 +1,2 @@ +#!/bin/sh +say 0 diff --git a/examples/Custom Sort Order/Five b/examples/Custom Sort Order/Five new file mode 100755 index 0000000..55841a7 --- /dev/null +++ b/examples/Custom Sort Order/Five @@ -0,0 +1,2 @@ +#!/bin/sh +say 5 diff --git a/examples/Flags/999 Python example [verbose] b/examples/Flags/999 Python example [verbose] new file mode 100755 index 0000000..0ca94ad --- /dev/null +++ b/examples/Flags/999 Python example [verbose] @@ -0,0 +1,4 @@ +#!/usr/bin/env python3 +print() +print("=> 2^8 is", 2**8) +print() diff --git a/examples/Flags/icon.svg b/examples/Flags/icon.svg new file mode 100644 index 0000000..8eb51d4 --- /dev/null +++ b/examples/Flags/icon.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/examples/Flags/ifconfig (text editor) [txt] b/examples/Flags/ifconfig (text editor) [txt] new file mode 100755 index 0000000..e541c14 --- /dev/null +++ b/examples/Flags/ifconfig (text editor) [txt] @@ -0,0 +1,2 @@ +#!/bin/sh +ifconfig diff --git a/examples/Flags/top (updated) [verbose] b/examples/Flags/top (updated) [verbose] new file mode 100755 index 0000000..6ceae65 --- /dev/null +++ b/examples/Flags/top (updated) [verbose] @@ -0,0 +1,2 @@ +#!/bin/sh +top diff --git a/examples/Open Desktop Folder b/examples/Open Desktop Folder new file mode 100755 index 0000000..a3a7d04 --- /dev/null +++ b/examples/Open Desktop Folder @@ -0,0 +1,2 @@ +#!/bin/sh +open ~/Desktop diff --git a/examples/Toggle Desktop Icons b/examples/Toggle Desktop Icons new file mode 100755 index 0000000..bebd9b2 --- /dev/null +++ b/examples/Toggle Desktop Icons @@ -0,0 +1,8 @@ +#!/bin/sh +prev=$(defaults read com.apple.finder CreateDesktop) +if [ "$prev" = 0 ]; then + flag=1 +else + flag=0 +fi +defaults write com.apple.finder CreateDesktop $flag && killall Finder diff --git a/img/icon-sm.svg b/img/icon-sm.svg new file mode 100644 index 0000000..fa119ca --- /dev/null +++ b/img/icon-sm.svg @@ -0,0 +1,28 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + run.sh + + \ No newline at end of file diff --git a/img/icon.svg b/img/icon.svg new file mode 100644 index 0000000..4082c4a --- /dev/null +++ b/img/icon.svg @@ -0,0 +1,30 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + run.sh + + Quit + + \ No newline at end of file diff --git a/img/screenshot.png b/img/screenshot.png new file mode 100644 index 0000000000000000000000000000000000000000..27317c4f4327e340681375be5f3ab7ff8e70110a GIT binary patch literal 54265 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
|oet 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

Xr{>@-<7G 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 I5j|Q607asWLjV8( literal 0 HcmV?d00001 diff --git a/src/Info.plist b/src/Info.plist new file mode 100644 index 0000000..aada7a0 --- /dev/null +++ b/src/Info.plist @@ -0,0 +1,36 @@ + + + + + CFBundleIdentifier + de.relikd.Menuscript + CFBundleExecutable + Menuscript + CFBundleName + Menuscript + CFBundleIconFile + AppIcon + CFBundleInfoDictionaryVersion + 6.0 + CFBundlePackageType + APPL + CFBundleShortVersionString + 1.0.0 + CFBundleVersion + 1 + LSMinimumSystemVersion + 10.13 + LSBackgroundOnly + + LSUIElement + + NSHighResolutionCapable + + NSSupportsSuddenTermination + + NSPrincipalClass + NSApplication + NSHumanReadableCopyright + Copyright © 2026 relikd. + + diff --git a/src/main.swift b/src/main.swift new file mode 100755 index 0000000..da75caf --- /dev/null +++ b/src/main.swift @@ -0,0 +1,276 @@ +#!/usr/bin/env swift +import AppKit +import Cocoa +import SwiftUI + +class FlippedView: NSView { + override var isFlipped: Bool { true } +} + +class AppDelegate: NSObject, NSApplicationDelegate, NSMenuDelegate { + private var statusItem: NSStatusItem! + private weak var settingsWindow: NSWindow? = nil + + func applicationDidFinishLaunching(_ aNotification: Notification) { + // UserDefaults.standard.register(defaults: ["storage": "~/"]) + initStatusIcon() + if userStorageURL() == nil { + showSettings() + } + } + + private func initStatusIcon() { + self.statusItem = NSStatusBar.system.statusItem(withLength: NSStatusItem.variableLength) + self.statusItem.button?.title = "⌘" + // self.statusItem.button?.image = NSImage.statusIcon + self.statusItem.menu = NSMenu(title: resolvedStorageURL().path) + self.statusItem.menu?.delegate = self + } + + func menuDidClose(_ menu: NSMenu) { + if menu == self.statusItem.menu { + self.statusItem.menu = NSMenu(title: menu.title) + self.statusItem.menu?.delegate = self + } + } + + /** + Delegate method not used. Here to prevent weird `NSMenu` behavior. + Otherwise, Cmd-Q (Quit) will traverse all submenus (incl. creating unopened). + */ + func menuHasKeyEquivalent(_ menu: NSMenu, for event: NSEvent, target: AutoreleasingUnsafeMutablePointer, action: UnsafeMutablePointer) -> Bool { + return false + } + + func menuNeedsUpdate(_ menu: NSMenu) { + for entry in Entry.listDir(menu.title) { + let itm = menu.addItem(withTitle: entry.title, action: nil, keyEquivalent: "") + itm.representedObject = entry + itm.image = entry.icon() + + if entry.isDir { + itm.submenu = NSMenu(title: entry.url.path) + itm.submenu?.delegate = self + } else { + itm.action = #selector(menuItemCallback) + } + } + + if menu == self.statusItem.menu { + menu.addItem(NSMenuItem.separator()) + menu.addItem(withTitle: "Preferences", action: #selector(showSettings), keyEquivalent: ",") + menu.addItem(withTitle: "Quit", action: #selector(NSApp.terminate), keyEquivalent: "q") + } + } + + @objc private func menuItemCallback(sender: NSMenuItem) { + (sender.representedObject as! Entry).run() + } + + // MARK: - Manage storage path + + private func resolvedStorageURL() -> URL { + userStorageURL() + // if run via .app bundle + ?? Bundle.main.url(forResource: "examples", withExtension: nil) + // if calling swift directly + ?? URL(string: "file://" + FileManager.default.currentDirectoryPath + "/" + #file)! + .deletingLastPathComponent() + .deletingLastPathComponent() + .appendingPathComponent("examples") + } + + private func userStorageURL() -> URL? { + UserDefaults.standard.url(forKey: "storage") + } + + @objc func selectStoragePath() { + let panel = NSOpenPanel() + panel.canChooseDirectories = true + panel.canCreateDirectories = true + panel.canChooseFiles = false + panel.allowsMultipleSelection = false + panel.begin { + if $0 == .OK { + UserDefaults.standard.set(panel.url, forKey: "storage") + self.statusItem.menu?.title = panel.url!.path + } + } + } + + @objc func openStoragePath() { + NSWorkspace.shared.open(resolvedStorageURL()) + } + + // MARK: - Settings View + + @objc func showSettings() { + if self.settingsWindow == nil { + let win = NSWindow( + contentRect: NSMakeRect(0, 0, 400, 115), + styleMask: [.titled, .closable, .miniaturizable, .resizable], backing: .buffered, + defer: true) + self.settingsWindow = win + win.title = "Preferences" + win.isReleasedWhenClosed = false // because .buffered + win.contentView = initSettingsView() + win.contentMinSize = NSMakeSize(300, win.contentView!.frame.size.height) + win.center() + win.makeKeyAndOrderFront(nil) + } + self.settingsWindow!.orderFrontRegardless() + } + + private func initSettingsView() -> NSView { + let pad = 20.0 + let view = FlippedView(frame: NSMakeRect(0, 0, 400, 120)) + + let lbl = NSTextField(frame: NSMakeRect(pad, pad, 400 - 2 * pad, 22)) + lbl.isEditable = false + lbl.isBezeled = false + lbl.drawsBackground = false + lbl.stringValue = "Scripts storage path:" + view.addSubview(lbl) + + let pth = NSPathControl(frame: NSMakeRect(pad, NSMaxY(lbl.frame), 400 - 2 * pad, 22)) + pth.autoresizingMask = [.maxYMargin, .width] + pth.isEditable = true + pth.allowedTypes = ["public.folder"] + pth.pathStyle = .standard + pth.url = resolvedStorageURL() + view.addSubview(pth) + + let chg = NSButton(title: "Change", target: self, action: #selector(selectStoragePath)) + chg.frame = NSMakeRect(pad, NSMaxY(pth.frame), 90, 40) + chg.autoresizingMask = [.maxXMargin, .maxYMargin] + view.addSubview(chg) + + let opn = NSButton(title: "Open", target: self, action: #selector(openStoragePath)) + opn.frame = NSMakeRect(NSMaxX(chg.frame), NSMaxY(pth.frame), 90, 40) + // opn.autoresizingMask = [.maxXMargin, .maxYMargin] + view.addSubview(opn) + view.frame.size.height = NSMaxY(pth.frame) + 40 + pad + return view + } +} + +// MARK: - A menu item + +struct Entry { + enum Flags { + case Verbose + case Text + } + + let order: Int + let title: String + let flags: [Flags] + let url: URL + + var isDir: Bool { url.hasDirectoryPath } + + init(_ url: URL) { + self.url = url + // TODO: remove file extension? + var fname = url.lastPathComponent + var idx = fname.firstIndex { !$0.isWholeNumber } ?? fname.startIndex + // sort order + if let order = Int(fname[.. [Entry] { + var rv: [Entry] = [] + for url + in (try? FileManager.default.contentsOfDirectory( + at: URL(string: path)!, + includingPropertiesForKeys: [.isDirectoryKey, .isExecutableKey])) ?? [] + { + if url.hasDirectoryPath || FileManager.default.isExecutableFile(atPath: url.path) { + rv.append(Entry(url)) + } + } + return rv.sorted() + } + + func icon() -> NSImage? { + guard isDir else { + return nil + } + var img: NSImage? = nil + for ext in ["svg", "png", "jpg", "jpeg", "gif", "ico"] { + let iconPath = self.url.appendingPathComponent("icon." + ext) + if FileManager.default.fileExists(atPath: iconPath.path) { + img = NSImage(contentsOf: iconPath) + break + } + } + if img == nil { + img = NSImage(named: NSImage.folderName) + } + img?.size = NSMakeSize(16, 16) + return img + } + + func run() { + let proc = Process() + proc.currentDirectoryURL = self.url.deletingLastPathComponent() + // proc.environment = ["HOME": "$HOME"] + if self.flags.contains(.Verbose) { + proc.launchPath = "/usr/bin/open" + proc.arguments = [self.url.path] + } else { + proc.executableURL = self.url + } + + if self.flags.contains(.Text) { + // open result in default text editor + let io = Pipe() + proc.standardOutput = io + proc.standardError = io + + proc.launch() + + let p2 = Process() + p2.launchPath = "/usr/bin/open" + p2.arguments = ["-f"] + p2.standardInput = io + p2.launch() + + // let data = io.fileHandleForReading.readDataToEndOfFile() + // let output = String(data: data, encoding: .utf8) ?? "" + } else { + proc.launch() + } + } +} + +extension Entry : Comparable { + static func < (lhs: Entry, rhs: Entry) -> Bool { + return (lhs.order, lhs.title) < (rhs.order, rhs.title) + } +} + +// MARK: - Main Entry + +let delegate = AppDelegate() +NSApplication.shared.delegate = delegate +NSApplication.shared.run() +// _ = NSApplicationMain(CommandLine.argc, CommandLine.unsafeArgv)