Skip to main content

Terminal-based IDE with file explorer, code editor, and terminal

Project description

CLI-IDE

Terminal-based IDE built with Textual. Features a file explorer, tabbed code editor with syntax highlighting, and an integrated terminal.

Features

  • File explorer with directory tree navigation
  • Tabbed code editor with syntax highlighting
  • Split view (horizontal/vertical)
  • Integrated terminal (PTY-based)
  • Project-wide search (ripgrep or grep)
  • Multi-select editing (Ctrl+I)
  • Configurable via TOML files

Requirements

  • Python 3.11+
  • Dependencies: textual, pyte, rich
  • Optional: ripgrep for faster project search

Installation

cd cli-ide
pip install -e .

Or with virtual environment:

cd cli-ide
python -m venv venv
source venv/bin/activate
pip install -e .

Usage

# Open current directory
cli-ide

# Open specific directory
cli-ide /path/to/project

# Or run as module
python -m cli_ide.app /path/to/project

Keyboard Shortcuts

File Operations

Key Action
Ctrl+S Save file
Ctrl+Q Quit

Navigation

Key Action
Ctrl+E Focus editor
Ctrl+T Focus terminal
Ctrl+B Toggle sidebar
Alt+1-9 Go to tab 1-9

Tab Operations

Key Action
Ctrl+W Close tab

Split View

Key Action
Ctrl+Shift+Left Move file to left pane
Ctrl+Shift+Right Move file to right pane
Ctrl+Shift+Up Move file to top pane
Ctrl+Shift+Down Move file to bottom pane

Search

Key Action
Ctrl+F Find in file
Ctrl+G Find in project

Editing

Key Action
Ctrl+D Delete line
Ctrl+I Select next match (multi-select)
Enter Apply multi-select changes
Escape Cancel multi-select

Configuration

Configuration files are loaded in the following order (later overrides earlier):

  1. User config: ~/.config/cli-ide/config.toml
  2. Project config: .cli-ide.toml (in project root)

Example Configuration

[editor]
theme = "light-ide"
tab_size = 4
show_line_numbers = true

[terminal]
shell = ""  # Empty uses $SHELL environment variable
height = 14

[sidebar]
width = 30
visible = true

Project Structure

cli_ide/
├── __init__.py           # Package entry point
├── app.py                # Main CliIdeApp class
├── utils.py              # Utility functions
├── config/
│   ├── __init__.py
│   ├── defaults.py       # Language mappings, defaults
│   └── settings.py       # Config class (TOML loading)
├── models/
│   ├── __init__.py
│   └── state.py          # EditorState, OpenFile, etc.
├── themes/
│   ├── __init__.py
│   └── light.py          # Light theme definition
└── widgets/
    ├── __init__.py
    ├── dialogs.py        # SaveConfirmDialog
    ├── editor.py         # EditorPaneWidget, SplitContainer
    ├── file_tree.py      # FileTree
    ├── search.py         # SearchBar, ProjectSearchDialog
    └── terminal.py       # Terminal, TerminalInput

License

MIT

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

cli_ide-0.1.0.tar.gz (66.6 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

cli_ide-0.1.0-py3-none-any.whl (30.9 kB view details)

Uploaded Python 3

File details

Details for the file cli_ide-0.1.0.tar.gz.

File metadata

  • Download URL: cli_ide-0.1.0.tar.gz
  • Upload date:
  • Size: 66.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.11.11

File hashes

Hashes for cli_ide-0.1.0.tar.gz
Algorithm Hash digest
SHA256 91b7ebf47c4a5561af77ee4264fcf45523352f119e9a5b5ea0f0f6dbbf42e038
MD5 1e0fa9c692cad0af2704d4ba1687e2df
BLAKE2b-256 a575032878e9400f1e103970d9504ae61d7f65e64440d9360e5c97e438be21f9

See more details on using hashes here.

File details

Details for the file cli_ide-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: cli_ide-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 30.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.11.11

File hashes

Hashes for cli_ide-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 4ce315bd7ffa03fca90c18f3fc07e8e846a08dcf47d5fcefce32161214349bd8
MD5 c22a743bdb38f4b11a6933606af064e0
BLAKE2b-256 63776a9bc19825f0f5175658d8e4ca9d938eeacb4a0bff0746798da70a849ba1

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page