Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ All notable changes to cmux are documented here.

### Added
- iPhone companion app (beta): pair an iPhone from the new Mobile Connect window (also in the command palette) and attach to your Mac's terminals from your phone, with a configurable pairing port and opt-in forwarding of terminal notifications; the iOS beta ships on TestFlight as cmux BETA ([#5079](https://github.com/manaflow-ai/cmux/pull/5079), [#5493](https://github.com/manaflow-ai/cmux/pull/5493), [#5489](https://github.com/manaflow-ai/cmux/pull/5489), [#5518](https://github.com/manaflow-ai/cmux/pull/5518))
- Configurable terminal scrollback shortcuts for page up/down and line up/down, with Shift+Page Up and Shift+Page Down defaults; line scrolling is configurable but unbound by default so shells can receive Shift+Up/Down.
- Drag a workspace into another window's sidebar to move it between windows, including grouped workspaces ([#5399](https://github.com/manaflow-ai/cmux/pull/5399))
- Sign In and Sign Out commands in the command palette ([#5529](https://github.com/manaflow-ai/cmux/pull/5529))
- OMP agent hook integration with notifications and session restore via `cmux hooks omp` ([#5413](https://github.com/manaflow-ai/cmux/pull/5413)) -- thanks @joshrzemien!
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -66,6 +66,10 @@ extension ShortcutAction {
case .selectWorkspaceByNumber: return ShortcutStroke(key: "1", command: true)
case .newSurface: return ShortcutStroke(key: "t", command: true)
case .toggleTerminalCopyMode: return ShortcutStroke(key: "m", command: true, shift: true)
case .scrollbackPageUp: return ShortcutStroke(key: "pageup", shift: true)
case .scrollbackPageDown: return ShortcutStroke(key: "pagedown", shift: true)
case .scrollbackLineUp: return nil
case .scrollbackLineDown: return nil
case .focusTextBoxInput: return ShortcutStroke(key: "a", command: true, shift: true)
case .attachTextBoxFile: return ShortcutStroke(key: "a", command: true, shift: true, option: true)
case .toggleRightSidebar: return ShortcutStroke(key: "b", command: true, option: true)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -61,6 +61,10 @@ public enum ShortcutAction: String, CaseIterable, Sendable, Hashable, SettingCod
case reopenClosedBrowserPanel
case newSurface
case toggleTerminalCopyMode
case scrollbackPageUp
case scrollbackPageDown
case scrollbackLineUp
case scrollbackLineDown
case focusTextBoxInput
case attachTextBoxFile

Expand Down Expand Up @@ -141,6 +145,7 @@ extension ShortcutAction {
.selectWorkspaceByNumber, .renameTab, .renameWorkspace,
.editWorkspaceDescription, .closeTab, .closeOtherTabsInPane, .closeWorkspace,
.reopenClosedBrowserPanel, .newSurface, .toggleTerminalCopyMode,
.scrollbackPageUp, .scrollbackPageDown, .scrollbackLineUp, .scrollbackLineDown,
.focusTextBoxInput, .attachTextBoxFile:
return .navigation
case .focusLeft, .focusRight, .focusUp, .focusDown, .splitRight, .splitDown,
Expand Down Expand Up @@ -205,6 +210,10 @@ extension ShortcutAction {
case .reopenClosedBrowserPanel: return "Reopen Last Closed"
case .newSurface: return "New Surface"
case .toggleTerminalCopyMode: return "Toggle Terminal Copy Mode"
case .scrollbackPageUp: return String(localized: "shortcut.scrollbackPageUp.displayName", defaultValue: "Scrollback Page Up")
case .scrollbackPageDown: return String(localized: "shortcut.scrollbackPageDown.displayName", defaultValue: "Scrollback Page Down")
case .scrollbackLineUp: return String(localized: "shortcut.scrollbackLineUp.displayName", defaultValue: "Scrollback Line Up")
case .scrollbackLineDown: return String(localized: "shortcut.scrollbackLineDown.displayName", defaultValue: "Scrollback Line Down")
case .focusTextBoxInput: return "Focus TextBox Input"
case .attachTextBoxFile: return "Attach File to TextBox Input"
case .focusLeft: return "Focus Pane Left"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -159,6 +159,10 @@ public struct GlobalHotkeySection: View {
return String(localized: "shortcut.key.tab", defaultValue: "Tab")
case "space":
return String(localized: "shortcut.key.space", defaultValue: "Space")
case "pageUp", "pageup":
return String(localized: "shortcut.key.pageUp", defaultValue: "Page Up")
case "pageDown", "pagedown":
return String(localized: "shortcut.key.pageDown", defaultValue: "Page Down")
case "\r":
return "↩"
case "media.brightnessDown":
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -353,6 +353,10 @@ public struct KeyboardShortcutsSection: View {
return String(localized: "shortcut.key.tab", defaultValue: "Tab")
case "space":
return String(localized: "shortcut.key.space", defaultValue: "Space")
case "pageUp", "pageup":
return String(localized: "shortcut.key.pageUp", defaultValue: "Page Up")
case "pageDown", "pagedown":
return String(localized: "shortcut.key.pageDown", defaultValue: "Page Down")
case "\r":
return "↩"
case "media.brightnessDown":
Expand Down
170 changes: 170 additions & 0 deletions Resources/Localizable.xcstrings
Original file line number Diff line number Diff line change
Expand Up @@ -125439,6 +125439,40 @@
}
}
},
"shortcut.key.pageDown": {
"extractionState": "manual",
"localizations": {
"en": {
"stringUnit": {
"state": "translated",
"value": "Page Down"
}
},
"ja": {
"stringUnit": {
"state": "translated",
"value": "ページダウン"
}
}
}
},
"shortcut.key.pageUp": {
"extractionState": "manual",
"localizations": {
"en": {
"stringUnit": {
"state": "translated",
"value": "Page Up"
}
},
"ja": {
"stringUnit": {
"state": "translated",
"value": "ページアップ"
}
}
}
},
Comment thread
coderabbitai[bot] marked this conversation as resolved.
"shortcut.key.space": {
"extractionState": "manual",
"localizations": {
Comment thread
mrzv marked this conversation as resolved.
Expand Down Expand Up @@ -128640,6 +128674,142 @@
}
}
},
"shortcut.scrollbackPageDown.displayName": {
"extractionState": "manual",
"localizations": {
"en": {
"stringUnit": {
"state": "translated",
"value": "Scrollback Page Down"
}
},
"ja": {
"stringUnit": {
"state": "translated",
"value": "スクロールバックを1ページ下へ"
}
}
}
},
"shortcut.scrollbackPageDown.label": {
"extractionState": "manual",
"localizations": {
"en": {
"stringUnit": {
"state": "translated",
"value": "Scrollback Page Down"
}
},
"ja": {
"stringUnit": {
"state": "translated",
"value": "スクロールバックを1ページ下へ"
}
}
}
},
"shortcut.scrollbackLineDown.displayName": {
"extractionState": "manual",
"localizations": {
"en": {
"stringUnit": {
"state": "translated",
"value": "Scrollback Line Down"
}
},
"ja": {
"stringUnit": {
"state": "translated",
"value": "スクロールバックを1行下へ"
}
}
}
},
"shortcut.scrollbackLineDown.label": {
"extractionState": "manual",
"localizations": {
"en": {
"stringUnit": {
"state": "translated",
"value": "Scrollback Line Down"
}
},
"ja": {
"stringUnit": {
"state": "translated",
"value": "スクロールバックを1行下へ"
}
}
}
},
"shortcut.scrollbackLineUp.displayName": {
"extractionState": "manual",
"localizations": {
"en": {
"stringUnit": {
"state": "translated",
"value": "Scrollback Line Up"
}
},
"ja": {
"stringUnit": {
"state": "translated",
"value": "スクロールバックを1行上へ"
}
}
}
},
"shortcut.scrollbackLineUp.label": {
"extractionState": "manual",
"localizations": {
"en": {
"stringUnit": {
"state": "translated",
"value": "Scrollback Line Up"
}
},
"ja": {
"stringUnit": {
"state": "translated",
"value": "スクロールバックを1行上へ"
}
}
}
},
"shortcut.scrollbackPageUp.displayName": {
"extractionState": "manual",
"localizations": {
"en": {
"stringUnit": {
"state": "translated",
"value": "Scrollback Page Up"
}
},
"ja": {
"stringUnit": {
"state": "translated",
"value": "スクロールバックを1ページ上へ"
}
}
}
},
"shortcut.scrollbackPageUp.label": {
"extractionState": "manual",
"localizations": {
"en": {
"stringUnit": {
"state": "translated",
"value": "Scrollback Page Up"
}
},
"ja": {
"stringUnit": {
"state": "translated",
"value": "スクロールバックを1ページ上へ"
}
}
}
},
"sidebar.closeWorkspace.tooltip": {
"extractionState": "manual",
"localizations": {
Expand Down
20 changes: 20 additions & 0 deletions Sources/AppDelegate.swift
Original file line number Diff line number Diff line change
Expand Up @@ -13104,6 +13104,26 @@ final class AppDelegate: NSObject, NSApplicationDelegate, UNUserNotificationCent
return handled
}

if matchConfiguredShortcut(event: event, action: .scrollbackPageUp) {
let routedManager = preferredMainWindowContextForShortcutRouting(event: event)?.tabManager ?? tabManager
return routedManager?.scrollFocusedTerminalScrollbackPage(up: true) ?? false
}

if matchConfiguredShortcut(event: event, action: .scrollbackPageDown) {
let routedManager = preferredMainWindowContextForShortcutRouting(event: event)?.tabManager ?? tabManager
return routedManager?.scrollFocusedTerminalScrollbackPage(up: false) ?? false
}

if matchConfiguredShortcut(event: event, action: .scrollbackLineUp) {
let routedManager = preferredMainWindowContextForShortcutRouting(event: event)?.tabManager ?? tabManager
return routedManager?.scrollFocusedTerminalScrollbackLine(up: true) ?? false
Comment thread
mrzv marked this conversation as resolved.
}

if matchConfiguredShortcut(event: event, action: .scrollbackLineDown) {
let routedManager = preferredMainWindowContextForShortcutRouting(event: event)?.tabManager ?? tabManager
return routedManager?.scrollFocusedTerminalScrollbackLine(up: false) ?? false
}

if matchConfiguredShortcut(event: event, action: .focusTextBoxInput) {
let routedManager = preferredMainWindowContextForShortcutRouting(event: event)?.tabManager ?? tabManager
let handled = routedManager?.focusFocusedTerminalTextBoxInputOrTerminal() ?? false
Expand Down
2 changes: 1 addition & 1 deletion Sources/KeyboardShortcutContext.swift
Original file line number Diff line number Diff line change
Expand Up @@ -76,7 +76,7 @@ extension KeyboardShortcutSettings.Action {
return .browserPanel
case .switchRightSidebarToFiles, .switchRightSidebarToFind, .switchRightSidebarToSessions, .switchRightSidebarToFeed, .switchRightSidebarToDock:
return .rightSidebarFocus
case .renameTab, .renameWorkspace, .sendCtrlFToTerminal:
case .renameTab, .renameWorkspace, .scrollbackPageUp, .scrollbackPageDown, .scrollbackLineUp, .scrollbackLineDown, .sendCtrlFToTerminal:
return .nonBrowserPanel
case .browserBack, .browserForward, .browserReload, .toggleBrowserDeveloperTools, .showBrowserJavaScriptConsole,
.browserZoomIn, .browserZoomOut, .browserZoomReset, .toggleBrowserFocusMode:
Expand Down
Loading