Feature Description
Add support for multiple terminal sessions/tabs in a single window.
Current Status
β NOT IMPLEMENTED - Only single terminal instance supported
Legacy UI Capabilities
The legacy ui/ module has:
TerminalSession - Session management
TerminalWidget - Multiple terminal instances
- Tab support for multiple shells
- Session lifecycle management
TerminalWidgetListener for session events
Proposed Implementation
1. Tab Bar UI
- Horizontal tab strip at top
- "+" button to create new tab
- "X" button on each tab to close
- Tab titles (shell name or custom title)
- Active tab highlighting
2. Session Management
data class TerminalTab(
val id: String,
val title: String,
val terminal: JediTerminal,
val ttyConnector: TtyConnector,
val dataStream: BlockingTerminalDataStream
)
class SessionManager {
val tabs: StateFlow<List<TerminalTab>>
val activeTabId: StateFlow<String?>
fun createNewTab(shell: String = "/bin/zsh")
fun closeTab(id: String)
fun switchToTab(id: String)
}
3. Keyboard Shortcuts
Ctrl+T / Cmd+T - New tab
Ctrl+W / Cmd+W - Close tab
Ctrl+Tab - Next tab
Ctrl+Shift+Tab - Previous tab
Ctrl+1-9 / Cmd+1-9 - Jump to tab N
4. Tab Lifecycle
- Each tab has independent:
- Terminal state
- PTY connection
- Scrollback buffer
- Selection state
Priority
π‘ MEDIUM - Power users expect tabs, but can use OS terminal tabs as workaround
Files to Modify
compose-ui/src/desktopMain/kotlin/org/jetbrains/jediterm/compose/demo/Main.kt
- Create new:
compose-ui/src/desktopMain/kotlin/org/jetbrains/jediterm/compose/SessionManager.kt
- Create new:
compose-ui/src/desktopMain/kotlin/org/jetbrains/jediterm/compose/TabBar.kt
References
- Legacy:
ui/src/com/jediterm/terminal/ui/TerminalSession.java
- Legacy:
ui/src/com/jediterm/terminal/ui/TerminalWidget.java
Feature Description
Add support for multiple terminal sessions/tabs in a single window.
Current Status
β NOT IMPLEMENTED - Only single terminal instance supported
Legacy UI Capabilities
The legacy
ui/module has:TerminalSession- Session managementTerminalWidget- Multiple terminal instancesTerminalWidgetListenerfor session eventsProposed Implementation
1. Tab Bar UI
2. Session Management
3. Keyboard Shortcuts
Ctrl+T/Cmd+T- New tabCtrl+W/Cmd+W- Close tabCtrl+Tab- Next tabCtrl+Shift+Tab- Previous tabCtrl+1-9/Cmd+1-9- Jump to tab N4. Tab Lifecycle
Priority
π‘ MEDIUM - Power users expect tabs, but can use OS terminal tabs as workaround
Files to Modify
compose-ui/src/desktopMain/kotlin/org/jetbrains/jediterm/compose/demo/Main.ktcompose-ui/src/desktopMain/kotlin/org/jetbrains/jediterm/compose/SessionManager.ktcompose-ui/src/desktopMain/kotlin/org/jetbrains/jediterm/compose/TabBar.ktReferences
ui/src/com/jediterm/terminal/ui/TerminalSession.javaui/src/com/jediterm/terminal/ui/TerminalWidget.java