Implement setting of default terminal menu item

This commit is contained in:
Iheanyi Ekechukwu
2024-11-25 08:23:36 -06:00
parent fbe7235e47
commit 2c21ca119e
2 changed files with 13 additions and 9 deletions

View File

@ -24,7 +24,7 @@ class AppDelegate: NSObject,
@IBOutlet private var menuReloadConfig: NSMenuItem? @IBOutlet private var menuReloadConfig: NSMenuItem?
@IBOutlet private var menuSecureInput: NSMenuItem? @IBOutlet private var menuSecureInput: NSMenuItem?
@IBOutlet private var menuQuit: NSMenuItem? @IBOutlet private var menuQuit: NSMenuItem?
@IBOutlet private var menuMakeDefaultTerminal: NSMenuItem? @IBOutlet private var menuMakeGhosttyDefaultTerminal: NSMenuItem?
@IBOutlet private var menuNewWindow: NSMenuItem? @IBOutlet private var menuNewWindow: NSMenuItem?
@IBOutlet private var menuNewTab: NSMenuItem? @IBOutlet private var menuNewTab: NSMenuItem?
@ -208,6 +208,9 @@ class AppDelegate: NSObject,
ghostty_app_set_color_scheme(app, scheme) ghostty_app_set_color_scheme(app, scheme)
} }
// Check if Ghostty is already the default terminal
updateDefaultTerminalMenuItem()
} }
func applicationDidBecomeActive(_ notification: Notification) { func applicationDidBecomeActive(_ notification: Notification) {
@ -666,13 +669,11 @@ class AppDelegate: NSObject,
} }
@IBAction func makeGhosttyDefaultTerminal(_ sender: Any) { @IBAction func makeGhosttyDefaultTerminal(_ sender: Any) {
Ghostty.logger.debug("Clicked makeDefaultTerminal")
let ghosttyBundleID = Bundle.main.bundleIdentifier! let ghosttyBundleID = Bundle.main.bundleIdentifier!
setDefaultTerminal(bundleID: ghosttyBundleID) setDefaultTerminal(bundleID: ghosttyBundleID)
} }
@IBAction func makeTerminalDefaultTerminal(_ sender: Any) { @IBAction func makeTerminalDefaultTerminal(_ sender: Any) {
Ghostty.logger.debug("Clicked makeTerminalDefaultTerminal")
let terminalBundleID = "com.apple.terminal" let terminalBundleID = "com.apple.terminal"
setDefaultTerminal(bundleID: terminalBundleID) setDefaultTerminal(bundleID: terminalBundleID)
} }
@ -687,7 +688,6 @@ class AppDelegate: NSObject,
func isDefaultTerminal(bundleID: String) -> Bool { func isDefaultTerminal(bundleID: String) -> Bool {
return bundleID.isEqual(defaultTerminal()) return bundleID.isEqual(defaultTerminal())
// return CFStringCompare(bundleID as CFString, unixHandler?.takeRetainedValue(), CFStringCompareFlags.compareBackwards) == CFComparisonResult.compareEqualTo
} }
func defaultTerminal() -> String { func defaultTerminal() -> String {
@ -699,10 +699,14 @@ class AppDelegate: NSObject,
} }
func setDefaultTerminal(bundleID: String) { func setDefaultTerminal(bundleID: String) {
Ghostty.logger.debug("Setting default terminal to \(bundleID)") let unixExecutableContentType: CFString = "public.unix-executable" as CFString
Ghostty.logger.debug("Is Ghostty default? \(self.isGhosttyDefault())") LSSetDefaultRoleHandlerForContentType(unixExecutableContentType, LSRolesMask.shell, bundleID as CFString)
Ghostty.logger.debug("Is Terminal default? \(self.isTerminalDefault())")
Ghostty.logger.debug("Debugging default terminal: \(self.defaultTerminal())") updateDefaultTerminalMenuItem()
}
func updateDefaultTerminalMenuItem() {
menuMakeGhosttyDefaultTerminal?.isEnabled = !self.isGhosttyDefault()
} }
@IBAction func toggleQuickTerminal(_ sender: Any) { @IBAction func toggleQuickTerminal(_ sender: Any) {

View File

@ -22,7 +22,7 @@
<outlet property="menuDecreaseFontSize" destination="kzb-SZ-dOA" id="Y1B-Vh-6Z2"/> <outlet property="menuDecreaseFontSize" destination="kzb-SZ-dOA" id="Y1B-Vh-6Z2"/>
<outlet property="menuEqualizeSplits" destination="3gH-VD-vL9" id="SiZ-ce-FOF"/> <outlet property="menuEqualizeSplits" destination="3gH-VD-vL9" id="SiZ-ce-FOF"/>
<outlet property="menuIncreaseFontSize" destination="CIH-ey-Z6x" id="hkc-9C-80E"/> <outlet property="menuIncreaseFontSize" destination="CIH-ey-Z6x" id="hkc-9C-80E"/>
<outlet property="menuMakeDefaultTerminal" destination="gFP-FT-8g6" id="KNl-nG-qQv"/> <outlet property="menuMakeGhosttyDefaultTerminal" destination="gFP-FT-8g6" id="m5T-sE-1oX"/>
<outlet property="menuMoveSplitDividerDown" destination="Zj7-2W-fdF" id="997-LL-nlN"/> <outlet property="menuMoveSplitDividerDown" destination="Zj7-2W-fdF" id="997-LL-nlN"/>
<outlet property="menuMoveSplitDividerLeft" destination="wSR-ny-j1a" id="HCZ-CI-2ob"/> <outlet property="menuMoveSplitDividerLeft" destination="wSR-ny-j1a" id="HCZ-CI-2ob"/>
<outlet property="menuMoveSplitDividerRight" destination="CcX-ql-QU4" id="rIn-PK-fVM"/> <outlet property="menuMoveSplitDividerRight" destination="CcX-ql-QU4" id="rIn-PK-fVM"/>