Documentação
Files, Code and Shell
The everyday trio: browse, edit and run.
Nesta página
Overview
Three apps cover the everyday loop: TDE Files to find things, TDE Code
to change them, TDE Shell to run them. All three are compiled into the tde
binary and open instantly — see the apps overview.
TDE Files
A mouse-first file manager with three panes — Places, Files,
Preview. On a narrow window it collapses to one pane at a time and Esc
walks back up the Places → Files → Preview stack. The Files pane can be split
into two panels with =, so you can copy between directories without leaving
the window.
Mouse works the way you expect: click a breadcrumb ancestor to jump there,
click a column header to sort by it, double-click to open, right-click for a
context menu, drag the divider to resize the panes, and scroll with the wheel.
Shift+click extends a selection, Ctrl+click toggles one row.
Keys
| Key | Action |
|---|---|
Tab / Shift+Tab | Next / previous pane |
↑ ↓, j k | Move the selection |
←, Backspace, h | Go to the parent directory |
→, l | Enter the selected directory |
Enter | Open the selected item |
e | Open in the app associated with that file type |
Space | Context menu for the current selection |
Ctrl+Space | Add or remove this row from a multi-selection |
/ | Filter the current directory |
. | Show or hide dotfiles |
c / x / v | Copy / cut / paste |
n / N | New file / new folder |
p / P | Copy the selected path / the working directory to the clipboard |
Delete, D | Delete — see the warning below |
=, + | Toggle the second panel |
1 / 2 | Focus panel 1 / panel 2 |
s / S | Cycle the sort column / flip its direction |
J, ] / K, [ | Scroll the preview down / up |
PageUp / PageDown | Move the selection by 8 rows |
Previews
The Preview pane picks a renderer from the file itself:
| Content | Rendered as |
|---|---|
pdf, png, jpg, jpeg, gif, webp, bmp, ico | Real pixels through the media viewer, animated GIFs included |
md, markdown | Rendered Markdown |
txt, rs, toml, json, yaml, yml, log, sh, sql, csv, tsv, js, ts, tsx, jsx, css, html, xml | Plain text with line numbers |
| A directory | An item count |
| Anything else | A file-details panel |
Whether images render as real pixels rather than coloured blocks depends on
your terminal — see Terminal graphics.
Remote files over SFTP preview as text up to 256 KB. Press m in the Preview
pane to relay the preview to a phone through a QR code.
Archives
TDE Files compresses and extracts on its own, with no tar or unzip binary
involved. Two formats are supported: .tar.gz (also .tgz) and
.zip. Right-click a selection for Compress to .tar.gz, Compress
to .zip, or Extract Here on an archive. Extraction refuses entries whose
paths escape the destination directory, so a hostile archive cannot write
outside the folder you chose. Other formats — 7z, rar, xz, bz2 — are
not handled.
Places and bookmarks
The Places pane starts with Home, Root, Desktop, Documents,
Downloads and Pictures, plus Trash and any SFTP hosts you have
configured. Right-click a directory and choose Pin to Places to bookmark
it; pins sort above the built-ins and are stored in ~/.config/tde/config.toml
under [files] pinned_places, so they survive restarts and travel with the
rest of your config.
SFTP hosts and authentication
Hosts from your SSH configuration appear in Places. TDE follows repeated
IdentityFile entries in their declared order, then tries the running SSH agent
and the usual default key paths. A passphrase failure on one identity therefore
does not prevent a later key or an already-unlocked agent identity from working.
Remote browsing supports text preview up to 256 KB plus creating empty files and
directories through SFTP. n and N use the same remote operation as their
context-menu actions; failures stay visible instead of leaving a fake local row.
If a host lists as empty with an authentication error, verify the same alias with
ssh HOST, check every IdentityFile path and confirm that an encrypted key is
loaded in ssh-agent.
Which app opens what
Activating a file hands it to the app that owns that type — spreadsheets to TDE
Sheets, documents to TDE Docs, PDFs and images to the viewer, source and config
files to TDE Code, everything else to the host's xdg-open. The full
resolution order, including how to add your own associations, is in
Which app opens a file.
TDE Code
TDE Code is a behavioural port of nino — the keybinding table, the config
grammar and the console commands are deliberately the same — extended with
tree-sitter highlighting, an LSP client, splits and a file explorer.
Because it inherits that configuration, it reads ~/.config/nino/ninorc
(falling back to ~/.ninorc) and per-file .nino settings.
Editing
| Key | Action |
|---|---|
Ctrl+S / Alt+S / Alt+A | Save / save all / save as |
Ctrl+O / Ctrl+N | Open a file / new untitled buffer |
Ctrl+W | Close the current file |
Ctrl+Q, Esc | Quit — asks first when there are unsaved changes |
Ctrl+Z / Ctrl+Y | Undo / redo |
Ctrl+X / Ctrl+C / Ctrl+V | Cut / copy / paste |
Ctrl+A / Ctrl+L / Ctrl+D | Select all / select line / select the word under the cursor |
Ctrl+F / Ctrl+G | Find / go to line |
F10 / Shift+F10 | Find next / previous |
Ctrl+[ / Ctrl+] | Previous / next file |
Ctrl+B / Ctrl+E | Toggle the explorer sidebar / focus it |
Ctrl+\ | New split |
Ctrl+Alt+arrows | Move focus between splits |
Alt+↑ / Alt+↓ | Move the current line up / down |
Shift+Alt+↑ / Shift+Alt+↓ | Duplicate the line up / down |
Alt+M | Toggle a bookmark on this line |
Alt+N / Alt+P | Next / previous bookmark in this file |
Ctrl+PageUp / Ctrl+PageDown | Jump to the previous / next blank line |
F11 | Unified finder — files and symbols |
Ctrl+P | Console — type a command |
Home is smart: it toggles between the first non-space character and column
zero. Holding Shift with any motion extends the selection. Bookmarks persist
per workspace root.
The console (Ctrl+P) accepts 22 commands, among them lang, color,
format, inlay, minimap, find, run, alias, reload and lsp.
Syntax
Tree-sitter grammars ship for Rust, TypeScript, TSX, JavaScript, JSX, Python, Go, Ruby and SQL — these also drive the symbol outline in the finder. A wider set of languages (C, C++, CSS, HTML, Java, JSON, Make, Markdown, shell, TOML, YAML, Zig and more) gets keyword-level highlighting from bundled definitions.
Language servers
The LSP client is opt-in by presence: if the server binary is on your PATH,
the buffer gets language intelligence; if it is not, the buffer is simply plain
text and nothing errors.
| Language | Server | Fallback |
|---|---|---|
| Rust | rust-analyzer | — |
| TypeScript, JavaScript, TSX, JSX | vtsls | typescript-language-server |
| Python | basedpyright | pyright |
| Go | gopls | — |
| Ruby | ruby-lsp | — |
Check and install from the console:
lsp status
lsp install
lsp restartlsp install runs the right recipe for the language you are in —
rustup component add rust-analyzer, npm install -g @vtsls/language-server,
uv tool install basedpyright (falling back to pipx, then pip --user),
go install golang.org/x/tools/gopls@latest, or gem for Ruby.
| Key | LSP action |
|---|---|
Ctrl+Space | Completion |
Ctrl+K | Hover |
Ctrl+Shift+Space | Signature help — also fires automatically after ( |
F9 | Go to definition |
Ctrl+U | Jump back from a definition |
Shift+F12 | Find references |
Ctrl+. | Code actions and quick fixes |
Ctrl+R | Rename symbol |
Ctrl+T | Format document |
Shift+F11 | Problems panel — diagnostics and bookmarks |
TDE Shell
TDE Shell is the desktop's terminal. It runs your real $SHELL — one
long-lived interactive session per window, so cd, exports and aliases persist
exactly as they would anywhere else. It is not a login shell replacement and it
does not implement a shell.
What makes it Warp-style is that the app owns the input line, not the
shell. While you are at a prompt, a pure-Rust line editor buffers what you
type locally and sends the whole line only when you press Enter. The moment a
command starts running — or a full-screen program takes over, or an app turns
on mouse reporting — the shell switches to raw passthrough, so vim, htop
and fzf behave like they would in any other terminal.
Shell integration is injected without touching your rc files: bash starts
with a generated --rcfile that sources your real ~/.bashrc first, zsh with
a generated ZDOTDIR whose .zshrc sources your real ~/.zshrc first. That
integration is what lets TDE track your current directory, the prompt/running
state and each command's exit code.
Window keys
| Key | Action |
|---|---|
Alt+Enter (on the desktop) | Open a new shell window |
Alt+Enter (inside a shell) | Hand the current line to AI Chat instead of running it |
Ctrl+Shift+C | Copy the selection to the system clipboard |
Ctrl+G | Open TDE Env at the shell's current directory |
| Right-click | Copy if there is a selection, otherwise paste |
| Wheel | Scroll the scrollback, in every mode |
Drag to select text, double-click for a word, triple-click for a line.
Scrollback holds 5 000 rows per window and is persisted with the window, so
tde agent scrollback can read back what happened.
Line editing
The line editor is emacs-flavoured. It offers history navigation, reverse
search, a Tab completion menu fed by path and history providers, an inline
"ghost" suggestion you accept with →, and live syntax highlighting that flags
a command word it cannot resolve.
| Key | Action |
|---|---|
↑ / ↓ | Previous / next history entry |
Ctrl+R | Reverse search — press again to cycle matches |
Tab | Open the completion menu |
→, Ctrl+F | Accept the ghost suggestion |
Ctrl+A / Ctrl+E | Start / end of line |
Alt+B / Alt+F, Ctrl+← / Ctrl+→ | Word left / right |
Ctrl+K / Ctrl+U | Kill to end / to start of line |
Ctrl+W | Delete the word behind the cursor |
Ctrl+C | Clear the line and cancel |
In the completion menu, Tab and ↓ move forward, Shift+Tab and ↑ move
back, Enter accepts and Esc closes. In reverse search, Enter accepts and
runs the match while Esc drops it into the buffer without running it.