macos: sync File menu

This commit is contained in:
Mitchell Hashimoto
2023-08-31 11:40:21 -07:00
parent 22b925223a
commit 76053460d5
3 changed files with 57 additions and 32 deletions

View File

@@ -15,6 +15,12 @@ class AppDelegate: NSObject, NSApplicationDelegate, ObservableObject {
@Published var confirmQuit: Bool = false
/// Various menu items so that we can programmatically sync the keyboard shortcut with the Ghostty config.
@IBOutlet private var menuNewWindow: NSMenuItem?
@IBOutlet private var menuNewTab: NSMenuItem?
@IBOutlet private var menuSplitHorizontal: NSMenuItem?
@IBOutlet private var menuSplitVertical: NSMenuItem?
@IBOutlet private var menuClose: NSMenuItem?
@IBOutlet private var menuCloseWindow: NSMenuItem?
@IBOutlet private var menuPreviousSplit: NSMenuItem?
@IBOutlet private var menuNextSplit: NSMenuItem?
@IBOutlet private var menuSelectSplitAbove: NSMenuItem?
@@ -91,6 +97,13 @@ class AppDelegate: NSObject, NSApplicationDelegate, ObservableObject {
private func syncMenuShortcuts() {
guard ghostty.config != nil else { return }
syncMenuShortcut(action: "new_window", menuItem: self.menuNewWindow)
syncMenuShortcut(action: "new_tab", menuItem: self.menuNewTab)
syncMenuShortcut(action: "close_surface", menuItem: self.menuClose)
syncMenuShortcut(action: "close_window", menuItem: self.menuCloseWindow)
syncMenuShortcut(action: "new_split:right", menuItem: self.menuSplitHorizontal)
syncMenuShortcut(action: "new_split:down", menuItem: self.menuSplitVertical)
syncMenuShortcut(action: "goto_split:previous", menuItem: self.menuPreviousSplit)
syncMenuShortcut(action: "goto_split:next", menuItem: self.menuNextSplit)
syncMenuShortcut(action: "goto_split:top", menuItem: self.menuSelectSplitAbove)

View File

@@ -32,32 +32,32 @@ extension Ghostty {
GHOSTTY_KEY_NINE: "9",
// a-z
GHOSTTY_KEY_A: "A",
GHOSTTY_KEY_B: "B",
GHOSTTY_KEY_C: "C",
GHOSTTY_KEY_D: "D",
GHOSTTY_KEY_E: "E",
GHOSTTY_KEY_F: "F",
GHOSTTY_KEY_G: "G",
GHOSTTY_KEY_H: "H",
GHOSTTY_KEY_I: "I",
GHOSTTY_KEY_J: "J",
GHOSTTY_KEY_K: "K",
GHOSTTY_KEY_L: "L",
GHOSTTY_KEY_M: "M",
GHOSTTY_KEY_N: "N",
GHOSTTY_KEY_O: "O",
GHOSTTY_KEY_P: "P",
GHOSTTY_KEY_Q: "Q",
GHOSTTY_KEY_R: "R",
GHOSTTY_KEY_S: "S",
GHOSTTY_KEY_T: "T",
GHOSTTY_KEY_U: "U",
GHOSTTY_KEY_V: "V",
GHOSTTY_KEY_W: "W",
GHOSTTY_KEY_X: "X",
GHOSTTY_KEY_Y: "Y",
GHOSTTY_KEY_Z: "Z",
GHOSTTY_KEY_A: "a",
GHOSTTY_KEY_B: "b",
GHOSTTY_KEY_C: "c",
GHOSTTY_KEY_D: "d",
GHOSTTY_KEY_E: "e",
GHOSTTY_KEY_F: "f",
GHOSTTY_KEY_G: "g",
GHOSTTY_KEY_H: "h",
GHOSTTY_KEY_I: "i",
GHOSTTY_KEY_J: "j",
GHOSTTY_KEY_K: "k",
GHOSTTY_KEY_L: "l",
GHOSTTY_KEY_M: "m",
GHOSTTY_KEY_N: "n",
GHOSTTY_KEY_O: "o",
GHOSTTY_KEY_P: "p",
GHOSTTY_KEY_Q: "q",
GHOSTTY_KEY_R: "r",
GHOSTTY_KEY_S: "s",
GHOSTTY_KEY_T: "t",
GHOSTTY_KEY_U: "u",
GHOSTTY_KEY_V: "v",
GHOSTTY_KEY_W: "w",
GHOSTTY_KEY_X: "x",
GHOSTTY_KEY_Y: "y",
GHOSTTY_KEY_Z: "z",
// Symbols
GHOSTTY_KEY_APOSTROPHE: "'",

View File

@@ -14,12 +14,18 @@
<customObject id="-3" userLabel="Application" customClass="NSObject"/>
<customObject id="bbz-4X-AYv" userLabel="AppDelegate" customClass="AppDelegate" customModule="Ghostty" customModuleProvider="target">
<connections>
<outlet property="menuClose" destination="DVo-aG-piG" id="R3t-0C-aSU"/>
<outlet property="menuCloseWindow" destination="W5w-UZ-crk" id="6ff-BT-ENV"/>
<outlet property="menuNewTab" destination="uTG-Vz-hJU" id="eMg-R3-SeS"/>
<outlet property="menuNewWindow" destination="Was-JA-tGl" id="lK7-3I-CPG"/>
<outlet property="menuNextSplit" destination="bD7-ei-wKU" id="LeT-xw-eh4"/>
<outlet property="menuPreviousSplit" destination="Lic-px-1wg" id="Rto-CG-yRe"/>
<outlet property="menuSelectSplitAbove" destination="0yU-hC-8xF" id="aPc-lS-own"/>
<outlet property="menuSelectSplitBelow" destination="QDz-d9-CBr" id="FsH-Dq-jij"/>
<outlet property="menuSelectSplitLeft" destination="cTK-oy-KuV" id="Jpr-5q-dqz"/>
<outlet property="menuSelectSplitRight" destination="upj-mc-L7X" id="nLY-o1-lky"/>
<outlet property="menuSplitHorizontal" destination="VUR-Ld-nLx" id="RxO-Zw-ovb"/>
<outlet property="menuSplitVertical" destination="UDZ-4y-6xL" id="fgZ-Wb-8OR"/>
</connections>
</customObject>
<customObject id="YLy-65-1bz" customClass="NSFontManager"/>
@@ -68,34 +74,40 @@
<modifierMask key="keyEquivalentModifierMask"/>
<menu key="submenu" title="File" id="bib-Uj-vzu">
<items>
<menuItem title="New Window" keyEquivalent="n" id="Was-JA-tGl">
<menuItem title="New Window" id="Was-JA-tGl">
<modifierMask key="keyEquivalentModifierMask"/>
<connections>
<action selector="newWindow:" target="bbz-4X-AYv" id="NnC-l5-DUY"/>
</connections>
</menuItem>
<menuItem title="New Tab" keyEquivalent="t" id="uTG-Vz-hJU">
<menuItem title="New Tab" id="uTG-Vz-hJU">
<modifierMask key="keyEquivalentModifierMask"/>
<connections>
<action selector="newTab:" target="bbz-4X-AYv" id="cxO-CS-TJq"/>
</connections>
</menuItem>
<menuItem isSeparatorItem="YES" id="m54-Is-iLE"/>
<menuItem title="Split Horizontally" keyEquivalent="d" id="VUR-Ld-nLx">
<menuItem title="Split Horizontally" id="VUR-Ld-nLx">
<modifierMask key="keyEquivalentModifierMask"/>
<connections>
<action selector="splitHorizontally:" target="bbz-4X-AYv" id="QT1-Yt-gYJ"/>
</connections>
</menuItem>
<menuItem title="Split Vertically" keyEquivalent="D" id="UDZ-4y-6xL">
<menuItem title="Split Vertically" id="UDZ-4y-6xL">
<modifierMask key="keyEquivalentModifierMask"/>
<connections>
<action selector="splitVertically:" target="bbz-4X-AYv" id="ZZF-3f-OwW"/>
</connections>
</menuItem>
<menuItem isSeparatorItem="YES" id="sjq-M1-UGS"/>
<menuItem title="Close" keyEquivalent="w" id="DVo-aG-piG">
<menuItem title="Close" id="DVo-aG-piG">
<modifierMask key="keyEquivalentModifierMask"/>
<connections>
<action selector="close:" target="bbz-4X-AYv" id="Szc-Fu-9yk"/>
</connections>
</menuItem>
<menuItem title="Close Window" keyEquivalent="W" id="W5w-UZ-crk">
<menuItem title="Close Window" id="W5w-UZ-crk">
<modifierMask key="keyEquivalentModifierMask"/>
<connections>
<action selector="closeWindow:" target="bbz-4X-AYv" id="j4w-Nd-9bO"/>
</connections>