Thanks for this! So handy for whipping up agent interaction enhancements!
I noticed standard key commands (specifically: close/quit, undo/redo, copy/paste) currently don't work in a glimpse window (environment: macOS).
Codex says it's because on macOS you need menu items for those actions and suggested this patch, which works for me locally. Having done no native mac dev myself, I have no idea if this is right/reasonable... but happy to submit as a PR if you want it:
diff --git a/src/glimpse.swift b/src/glimpse.swift
index 825480d..1e241dc 100644
--- a/src/glimpse.swift
+++ b/src/glimpse.swift
@@ -336,7 +336,54 @@ class AppDelegate: NSObject, NSApplicationDelegate, WKNavigationDelegate, WKScri
self.config = config
}
+ private func setupMainMenu() {
+ let appName = ProcessInfo.processInfo.processName
+
+ func makeMenuItem(
+ _ title: String,
+ action: Selector?,
+ keyEquivalent: String,
+ modifiers: NSEvent.ModifierFlags = [.command]
+ ) -> NSMenuItem {
+ let item = NSMenuItem(title: title, action: action, keyEquivalent: keyEquivalent)
+ item.keyEquivalentModifierMask = modifiers
+ return item
+ }
+
+ let mainMenu = NSMenu()
+
+ let appMenu = NSMenu(title: appName)
+ appMenu.addItem(makeMenuItem("Quit \(appName)", action: #selector(NSApplication.terminate(_:)), keyEquivalent: "q"))
+ let appMenuItem = NSMenuItem(title: appName, action: nil, keyEquivalent: "")
+ appMenuItem.submenu = appMenu
+ mainMenu.addItem(appMenuItem)
+
+ let fileMenu = NSMenu(title: "File")
+ fileMenu.addItem(makeMenuItem("Close Window", action: #selector(NSWindow.performClose(_:)), keyEquivalent: "w"))
+ let fileMenuItem = NSMenuItem(title: "File", action: nil, keyEquivalent: "")
+ fileMenuItem.submenu = fileMenu
+ mainMenu.addItem(fileMenuItem)
+
+ let editMenu = NSMenu(title: "Edit")
+ editMenu.addItem(makeMenuItem("Undo", action: Selector(("undo:")), keyEquivalent: "z"))
+ editMenu.addItem(makeMenuItem("Redo", action: Selector(("redo:")), keyEquivalent: "Z", modifiers: [.command, .shift]))
+ editMenu.addItem(.separator())
+ editMenu.addItem(makeMenuItem("Cut", action: Selector(("cut:")), keyEquivalent: "x"))
+ editMenu.addItem(makeMenuItem("Copy", action: Selector(("copy:")), keyEquivalent: "c"))
+ editMenu.addItem(makeMenuItem("Paste", action: Selector(("paste:")), keyEquivalent: "v"))
+ editMenu.addItem(makeMenuItem("Select All", action: Selector(("selectAll:")), keyEquivalent: "a"))
+ let editMenuItem = NSMenuItem(title: "Edit", action: nil, keyEquivalent: "")
+ editMenuItem.submenu = editMenu
+ mainMenu.addItem(editMenuItem)
+
+ NSApp.mainMenu = mainMenu
+ }
+
func applicationDidFinishLaunching(_ notification: Notification) {
+ if !config.statusItem {
+ setupMainMenu()
+ }
+
if config.statusItem {
setupStatusItem()
} else {
Thanks for this! So handy for whipping up agent interaction enhancements!
I noticed standard key commands (specifically: close/quit, undo/redo, copy/paste) currently don't work in a glimpse window (environment: macOS).
Codex says it's because on macOS you need menu items for those actions and suggested this patch, which works for me locally. Having done no native mac dev myself, I have no idea if this is right/reasonable... but happy to submit as a PR if you want it: