Documentation menu

Documentation

Files, Code and Shell

The everyday trio: browse, edit and run.

On this page

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

KeyAction
Tab / Shift+TabNext / previous pane
, j kMove the selection
, Backspace, hGo to the parent directory
, lEnter the selected directory
EnterOpen the selected item
eOpen in the app associated with that file type
SpaceContext menu for the current selection
Ctrl+SpaceAdd or remove this row from a multi-selection
/Filter the current directory
.Show or hide dotfiles
c / x / vCopy / cut / paste
n / NNew file / new folder
p / PCopy the selected path / the working directory to the clipboard
Delete, DDelete — see the warning below
=, +Toggle the second panel
1 / 2Focus panel 1 / panel 2
s / SCycle the sort column / flip its direction
J, ] / K, [Scroll the preview down / up
PageUp / PageDownMove the selection by 8 rows

Previews

The Preview pane picks a renderer from the file itself:

ContentRendered as
pdf, png, jpg, jpeg, gif, webp, bmp, icoReal pixels through the media viewer, animated GIFs included
md, markdownRendered Markdown
txt, rs, toml, json, yaml, yml, log, sh, sql, csv, tsv, js, ts, tsx, jsx, css, html, xmlPlain text with line numbers
A directoryAn item count
Anything elseA 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

KeyAction
Ctrl+S / Alt+S / Alt+ASave / save all / save as
Ctrl+O / Ctrl+NOpen a file / new untitled buffer
Ctrl+WClose the current file
Ctrl+Q, EscQuit — asks first when there are unsaved changes
Ctrl+Z / Ctrl+YUndo / redo
Ctrl+X / Ctrl+C / Ctrl+VCut / copy / paste
Ctrl+A / Ctrl+L / Ctrl+DSelect all / select line / select the word under the cursor
Ctrl+F / Ctrl+GFind / go to line
F10 / Shift+F10Find next / previous
Ctrl+[ / Ctrl+]Previous / next file
Ctrl+B / Ctrl+EToggle the explorer sidebar / focus it
Ctrl+\New split
Ctrl+Alt+arrowsMove focus between splits
Alt+↑ / Alt+↓Move the current line up / down
Shift+Alt+↑ / Shift+Alt+↓Duplicate the line up / down
Alt+MToggle a bookmark on this line
Alt+N / Alt+PNext / previous bookmark in this file
Ctrl+PageUp / Ctrl+PageDownJump to the previous / next blank line
F11Unified finder — files and symbols
Ctrl+PConsole — 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.

LanguageServerFallback
Rustrust-analyzer
TypeScript, JavaScript, TSX, JSXvtslstypescript-language-server
Pythonbasedpyrightpyright
Gogopls
Rubyruby-lsp

Check and install from the console:

bash
lsp status
lsp install
lsp restart

lsp 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.

KeyLSP action
Ctrl+SpaceCompletion
Ctrl+KHover
Ctrl+Shift+SpaceSignature help — also fires automatically after (
F9Go to definition
Ctrl+UJump back from a definition
Shift+F12Find references
Ctrl+.Code actions and quick fixes
Ctrl+RRename symbol
Ctrl+TFormat document
Shift+F11Problems 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

KeyAction
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+CCopy the selection to the system clipboard
Ctrl+GOpen TDE Env at the shell's current directory
Right-clickCopy if there is a selection, otherwise paste
WheelScroll 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.

KeyAction
/ Previous / next history entry
Ctrl+RReverse search — press again to cycle matches
TabOpen the completion menu
, Ctrl+FAccept the ghost suggestion
Ctrl+A / Ctrl+EStart / end of line
Alt+B / Alt+F, Ctrl+← / Ctrl+→Word left / right
Ctrl+K / Ctrl+UKill to end / to start of line
Ctrl+WDelete the word behind the cursor
Ctrl+CClear 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.