docs/features/terminal.md
Fresh includes a built-in terminal emulator.
Ctrl+P and search for "Open Terminal"The terminal has two modes, indicated in the status bar:
Terminal Mode (status bar shows "Terminal"): Your keyboard input goes directly to the shell.
Scrollback Mode (status bar shows "Terminal (read only)"): The terminal output becomes a read-only buffer that you can scroll through, search, and copy text from.
Ctrl+Space: Toggle between terminal mode and scrollback modeCtrl+]: Exit terminal mode (same as Ctrl+Space)By default, most editor keybindings (like Ctrl+P for command palette) still work in terminal mode. If you need to send these keys to the terminal instead:
F9: Toggle keyboard capture modeF9 are sent to the terminalIn scrollback mode, you can use standard editor navigation:
Ctrl+Home: Jump to the beginning of scrollback historyCtrl+End: Jump to the endCtrl+F: Search through terminal outputBy default the integrated terminal runs $SHELL (or the platform default if $SHELL is empty). Override this with terminal.shell in config without changing $SHELL for the whole process — handy when you want a wrapper that forces an interactive shell, or a different shell inside a container:
{
"terminal": {
"shell": { "command": "/usr/bin/bash", "args": ["--login", "-i"] }
}
}
The override applies to host-shell terminals; plugin-managed wrappers (e.g. docker exec when attached to a devcontainer) keep their own spawn contract.
fresh -a to start in session mode, then detach with Ctrl+Shift+D to keep terminal processes running in the background. Reattach with fresh -a. See Session Persistence for details.terminal.jump_to_end_on_output config option.Fresh supports full terminal emulation on Windows 10 (1809+) via ConPTY. PowerShell is preferred over cmd.exe. Stdin piping works with type file | fresh.