LazyDotIDE 0.0.16

dotnet tool install --global LazyDotIDE --version 0.0.16
                    
This package contains a .NET tool you can call from the shell/command line.
dotnet new tool-manifest
                    
if you are setting up this repo
dotnet tool install --local LazyDotIDE --version 0.0.16
                    
This package contains a .NET tool you can call from the shell/command line.
#tool dotnet:?package=LazyDotIDE&version=0.0.16
                    
nuke :add-package LazyDotIDE --version 0.0.16
                    

LazyDotIDE

<div align="center"> <img src=".github/logo.svg" alt="LazyDotIDE Logo" width="600"> </div>

<div align="center">

License: MIT NuGet .NET Platform

</div>

<div align="center">

⭐ If you find LazyDotIDE useful, please consider giving it a star! ⭐

It helps others discover the project and motivates continued development.

GitHub stars

</div>

A console-based .NET IDE built on SharpConsoleUI.

Edit. Build. Ship.

Main Editor

View more screenshots

Why LazyDotIDE?

Sometimes you just want to stay in the terminal. Install it as a dotnet tool, and you get C# IntelliSense, git, build, test, and a shell — zero config, works anywhere you have a console.

Highlights

  • LSP IntelliSense — completions, go to definition, rename, code actions, diagnostics
  • Multi-tab editor — syntax highlighting for C#, JSON, XML, YAML, JS/TS, Razor, and more
  • Built-in terminal — full PTY shell in tabs, bottom panel, or side panel
  • Git integration — stage, commit, push, pull, diff, blame, branch management
  • Build & test — one-key build/run/test with click-to-navigate errors
  • Zero config — just dotnet tool install and go

For the full feature list, see Features below.

Quick Start

dotnet tool install --global LazyDotIDE
lazydotide /path/to/your/project

Or from source:

git clone https://github.com/nickprotop/lazydotide.git
cd lazydotide
dotnet run -- /path/to/your/project

Run without arguments to open in the current directory.

Features

Editor

  • Multi-tab editing with dirty tracking and unsaved-changes prompts
  • Syntax highlighting for 12+ languages (C#, JSON, XML, YAML, Markdown, HTML, CSS, JavaScript/TypeScript, Razor, Dockerfile, Solution files, Diff)
  • Manual syntax override via menu
  • Find and replace (Ctrl+F / Ctrl+H)
  • Word wrap modes (no wrap, word wrap, char wrap)
  • Binary file detection (shown as non-editable)
  • External file change detection with reload prompt

IntelliSense / LSP

  • Auto-completions triggered on ., (, ,, and after typing (also Ctrl+Space)
  • Go to definition (F12), go to implementation (Ctrl+F12), find all references (Shift+F12)
  • Rename symbol across files (Ctrl+F2)
  • Code actions (Ctrl+.)
  • Format document (Alt+Shift+F)
  • Hover / type info (Ctrl+K)
  • Signature help (F2, auto-triggers on ( and ,)
  • Real-time diagnostics (errors/warnings in status bar and problems panel)
  • Document symbols in side panel (Alt+O)
  • Navigation history with navigate back (Alt+Left)

Git

  • Stage, unstage, commit, push, pull, stash (with message), stash pop
  • Branch listing, create branch, switch branch
  • Diff (working directory, staged, full)
  • Blame (per-line: SHA, author, date)
  • Repository log and per-file log with commit detail view
  • Gutter diff markers in editor (green/yellow/red for added/modified/deleted)
  • Real-time status bar (branch, ahead/behind, M/A/D counts)
  • Explorer badges per file (M, A, D, U, R, !, I)
  • Gitignore support (add/remove paths, dimmed display in explorer)
  • Discard changes
  • Source control side panel with interactive staged/unstaged file list

Build & Run

  • Build (F6), test (F7), clean, run (F5) with colorized output
  • Stop running process (F4)
  • Problems panel with click-to-navigate on build errors/warnings
  • Auto-detects .csproj, .fsproj, .sln build targets

Terminal

  • Bottom shell in output panel (F8)
  • Editor tab shell (via menu)
  • Side panel shell (Shift+F8)
  • Full PTY support for interactive programs
  • Multiple concurrent shell instances

File Explorer

  • Tree view with expand/collapse
  • Git status badges and directory change indicators
  • Gitignore dimming for ignored files
  • Context menus (new file/folder, rename, delete, git operations)
  • File watcher for automatic refresh on external changes

NuGet

  • LazyNuGet integration (F9) when installed
  • Built-in add package dialog as fallback

Workspace Persistence

Saved to .lazydotide.workspace in the project root on exit, restored on startup:

  • Open files with cursor positions
  • Panel visibility and column widths
  • Split ratios and word wrap mode
  • Explorer expanded nodes and selected path

Custom Tools

Configure external tools in config.json — each tool appears in the Tools menu and command palette with options to open in a tab, bottom shell, or side panel.

Command Palette

Ctrl+P opens a searchable palette of all commands, organized by category (File, Edit, Build, Run, View, Git, LSP, Terminal, NuGet, Tools, Help). Custom tools are included dynamically.


Keyboard Shortcuts

File

Key Action
Ctrl+S Save current file
Ctrl+W Close current tab
Ctrl+N New file
Ctrl+Shift+N New folder
F2 Rename (explorer focused)
Delete Delete (explorer focused)
Alt+Shift+R Reload file from disk
Alt+F4 Exit

Build & Run

Key Action
F5 Run project
F6 Build
F7 Run tests
F4 Stop

View

Key Action
Ctrl+B Toggle file explorer
Ctrl+J Toggle output panel
Alt+; Toggle side panel
Ctrl+P Command palette
Key Action
Ctrl+F Find / Replace
Ctrl+H Find / Replace

LSP / IntelliSense

Key Action
Ctrl+Space Show completions
F12 Go to definition
Ctrl+F12 Go to implementation
Shift+F12 Find all references
Ctrl+F2 Rename symbol
Ctrl+. Code actions
Ctrl+K Hover / type info
F2 Signature help
Alt+Shift+F Format document
Alt+O Document symbols
Alt+Left Navigate back

Git

Key Action
Alt+G Source control panel
Ctrl+Enter Commit

Terminal

Key Action
F8 Shell in output panel
Shift+F8 Shell in side panel
F9 LazyNuGet (or NuGet dialog)

Syntax Highlighting

Language Extensions
C# .cs
JSON .json
XML .xml, .csproj, .fsproj, .vbproj, .props, .targets
YAML .yml, .yaml
Markdown .md
HTML .html, .htm
CSS .css
JavaScript / TypeScript .js, .jsx, .mjs, .cjs, .ts, .tsx, .mts, .cts
Razor .razor, .cshtml
Dockerfile Dockerfile, Dockerfile.*
Solution .sln
Diff (used in git diff views)

Syntax can be manually overridden via the Edit menu.


Configuration

Config file location:

  • Linux/macOS: ~/.config/lazydotide/config.json
  • Windows: %APPDATA%\lazydotide\config.json

A default config is created on first run. Edit it via Tools > Edit Config — changes reload automatically on save.

{
  "lsp": null,
  "tools": [
    {
      "name": "htop",
      "command": "htop",
      "args": null,
      "workingDir": null
    },
    {
      "name": "Lazygit",
      "command": "lazygit",
      "args": null,
      "workingDir": null
    },
    {
      "name": "Git Log",
      "command": "bash",
      "args": ["-c", "git log --oneline --graph --all --color=always; exec bash"],
      "workingDir": null
    }
  ]
}

Custom Tools

Each tool entry has:

  • name — display name in menus and command palette
  • command — executable to run
  • args — optional argument array
  • workingDir — optional working directory (null = project root)

LSP Override

Set the lsp field to use a specific language server:

{
  "lsp": {
    "command": "csharp-ls",
    "args": []
  }
}

LSP Setup

LazyDotIDE auto-detects a C# language server in this order:

  1. lsp field in config.json
  2. DOTNET_IDE_LSP environment variable
  3. csharp-ls in PATH
  4. OmniSharp in known locations (~/.omnisharp/, /opt/omnisharp/)
  5. OmniSharp in PATH

Recommended: install csharp-ls:

dotnet tool install --global csharp-ls

Requirements

  • .NET 10.0
  • A terminal that supports ANSI escape codes
  • Optional: xclip, xsel, or wl-copy/wl-paste for clipboard support on Linux

Status

LazyDotIDE is in active early development. It works and is used daily, but expect rough edges. Contributions, feedback, and bug reports are welcome.


Built on

SharpConsoleUI — a console windowing and UI framework for .NET.

Product Compatible and additional computed target framework versions.
.NET net10.0 is compatible.  net10.0-android was computed.  net10.0-browser was computed.  net10.0-ios was computed.  net10.0-maccatalyst was computed.  net10.0-macos was computed.  net10.0-tvos was computed.  net10.0-windows was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

This package has no dependencies.

Version Downloads Last Updated
0.0.16 84 3/30/2026
0.0.15 100 3/25/2026
0.0.14 86 3/22/2026
0.0.13 136 3/15/2026
0.0.12 111 3/15/2026
0.0.11 112 3/13/2026
0.0.10 92 3/6/2026
0.0.9 88 3/4/2026
0.0.8 96 2/28/2026
0.0.7 89 2/28/2026
0.0.6 89 2/27/2026
0.0.5 86 2/27/2026
0.0.4 87 2/27/2026
0.0.3 87 2/27/2026
0.0.2 85 2/27/2026
0.0.1 90 2/26/2026