mirror of
https://github.com/ghostty-org/ghostty.git
synced 2025-08-02 14:57:31 +03:00
Implement setting of default terminal menu item
This commit is contained in:
@ -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) {
|
||||||
|
@ -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"/>
|
||||||
|
Reference in New Issue
Block a user