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

View File

@ -22,7 +22,7 @@
<outlet property="menuDecreaseFontSize" destination="kzb-SZ-dOA" id="Y1B-Vh-6Z2"/>
<outlet property="menuEqualizeSplits" destination="3gH-VD-vL9" id="SiZ-ce-FOF"/>
<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="menuMoveSplitDividerLeft" destination="wSR-ny-j1a" id="HCZ-CI-2ob"/>
<outlet property="menuMoveSplitDividerRight" destination="CcX-ql-QU4" id="rIn-PK-fVM"/>