A lightweight, professional VB.NET IDE built with GTK# 3 on Linux using .NET 8.0. SimpleIDE provides a modern development environment specifically designed for VB.NET projects on Linux systems.
https://discordapp.com/channels/682603493386747904/1408457691734737007
- Multi-file tabbed editing with automatic file type detection
- VB.NET syntax highlighting with customizable color themes
- Line numbers with click-to-select and drag-to-select functionality
- Smart indentation and automatic bracket matching
- Undo/Redo system (Ctrl+Z, Ctrl+R) with per-character tracking
- Code folding for classes, methods, properties (including Get/Set), and regions
- Intelligent code completion with hover tooltips and parameter hints
- Real-time syntax error detection with squiggly underlines
- Project Explorer with .vbproj file parsing and management
- Object Explorer showing hierarchical code structure
- Auto-detection of project files in current directory
- Solution and project file support (.sln, .vbproj)
- Reference management for NuGet packages and assemblies
- Integrated build system using dotnet CLI
- Async build operations with real-time output
- Dockable build output panel with error/warning navigation
- One-click build and run (F5/F6)
- Support for Debug and Release configurations
- Click-to-navigate error and warning messages
- Claude AI assistant for code generation and refactoring
- Multiple chat conversations with persistent history
- Claude Projects integration for context-aware assistance
- Code explanation and documentation generation
- Smart code suggestions based on project context
- Dark and Light themes with system theme detection
- Customizable toolbar with common actions
- Enhanced status bar showing cursor position, language mode, and encoding
- Welcome splash screen with recent projects
- Dockable panels for tools and output
- Integrated help system with searchable documentation
- Git integration for version control operations
- Find and Replace with regex support (Ctrl+F)
- Go to line navigation (Ctrl+G)
- Block commenting (Ctrl+/)
- Settings persistence across sessions
- Linux operating system (Ubuntu 20.04+, Debian 11+, Fedora 34+, or similar)
- .NET 8.0 SDK
- GTK# 3.24 or higher
- Git
# Ubuntu/Debian
wget https://packages.microsoft.com/config/debian/12/packages-microsoft-prod.deb -O packages-microsoft-prod.deb
sudo dpkg -i packages-microsoft-prod.deb
rm packages-microsoft-prod.deb
sudo apt-get update
sudo apt-get install -y dotnet-sdk-8.0
# Fedora
sudo dnf install dotnet-sdk-8.0# Ubuntu/Debian
sudo apt-get install libgtk-3-0 libgtk-3-dev
# Fedora
sudo dnf install gtk3 gtk3-devel# Clone the repository
git clone https://github.com/jamesplotts/simpleide.git
cd simpleide
# Restore dependencies
dotnet restore
# Build the project
dotnet build --configuration Release
# Run SimpleIDE
dotnet run --configuration Release# Launch with auto-detection (finds .vbproj in current directory)
SimpleIDE
# Open specific project
SimpleIDE MyProject.vbproj
# Create new project
SimpleIDE -n MyApp -t Console
# Show help (lists all available options)
SimpleIDE --help
# Show version information
SimpleIDE --versionRun SimpleIDE --help for the full list of options - there are quite a few beyond the basics above (window state, safe mode, settings reset, and several project-maintenance flags).
IMPORTANT FOR CLAUDE: The IDE has a special test mode that allows running it headlessly with automatic exit for diagnostic purposes. This is particularly useful when debugging parsing issues or checking project loading without a display.
# Run in test mode - exits after 5 seconds by default
dotnet run -- --test-mode
# Run with custom delay (in milliseconds)
dotnet run -- --test-delay 5000 --test-mode
# Test with a specific project
dotnet run -- --test-mode --project /path/to/project.vbproj
# Build and test
dotnet build
dotnet run -- --test-mode --test-delay 3000If you're running without a real X11/Wayland display available (e.g. a bare CI container), wrap the command with xvfb-run -a. A real display is used directly otherwise - xvfb is not a hard requirement.
What Test Mode Does:
- Starts the IDE and automatically loads the project (auto-detects or uses
--project) - Outputs all parsing and loading diagnostics to console
- Shows which files are being parsed and any errors
- Exits automatically after the specified delay
- Useful for checking if Object Explorer population is working
- Helps diagnose Roslyn parser initialization issues
- Ctrl+S - Save current file
- Ctrl+Shift+S - Save all files
- Ctrl+Z - Undo
- Ctrl+Shift+Z / Ctrl+R - Redo
- Ctrl+Y - Cut current line (VB.NET classic shortcut)
- Ctrl+X - Cut
- Ctrl+C - Copy
- Ctrl+V - Paste
- Ctrl+Shift+V - Smart paste (strips comment markers and re-indents to the paste location)
- Ctrl+A - Select all
- Ctrl+F - Find
- Ctrl+H - Find and replace
- Ctrl+G - Go to line
- Ctrl+/ - Toggle line comment
- Tab / Shift+Tab - Indent / outdent the current selection
- Ctrl+Space - Trigger code completion (CodeSense) at the cursor
- Ctrl++ / Ctrl+- / Ctrl+0 - Zoom in / out / reset editor font size
- Ctrl+E - Toggle Project Explorer
- F11 - Toggle full screen
- F5 - Build and run
- F6 - Build project
- Ctrl+B - Build project
- F1 - Context-sensitive help
- F2 - Quick find from clipboard
- F3 / Shift+F3 - Find next / previous
- F12 - Go to definition
- Ctrl+Tab - Next tab
- Escape - Context-sensitive close (code completion popup, then Find panel, then clears selection)
Some shortcuts shown in menus (Find in Files, Build Solution, Run without debugging) are wired up but not yet implemented behind the scenes.
SimpleIDE/
├── Program.vb # Entry point
├── MainWindow.vb # Main IDE window
├── MainWindow.*.vb # Partial classes for main window
├── Editors/
│ ├── CustomDrawingEditor.vb # Main code editor implementation
│ └── CustomDrawingEditor.*.vb # Partial classes (folding, drawing, keyboard, etc.)
├── Widgets/
│ ├── CustomDrawProjectExplorer.vb # Project tree view
│ ├── CustomDrawObjectExplorer.vb # Code structure view
│ └── BuildOutputPanel.vb # Build output display
├── Models/
│ ├── SourceFileInfo.vb # File content and metadata
│ └── EditorTheme.vb # Theme definitions
├── Syntax/
│ ├── SyntaxNode.vb # Syntax tree node representation
│ └── VBSyntaxHighlighter.vb # Syntax highlighting engine
├── Parsers/
│ └── RoslynConverter.vb # Converts Roslyn syntax trees to SimpleIDE's model
├── Managers/
│ ├── ProjectManager.vb # Project file management
│ ├── BuildManager.vb # Build system integration
│ └── SettingsManager.vb # Settings persistence
├── Utilities/
│ ├── FileOperations.vb # File operations
│ └── CssHelper.vb # GTK CSS styling
└── Resources/
└── *.png # Embedded icons and images
Parsing is Roslyn-based (Microsoft.CodeAnalysis.VisualBasic) rather than a hand-written parser.
Settings are stored in ~/.config/SimpleIDE/settings.json. Code-folding expansion state is stored separately in ~/.config/SimpleIDE/foldstate.json.
Settings are managed through the IDE's Settings dialog rather than hand-edited; the file holds properties such as EditorFont, TabWidth, UseTabs, CurrentTheme, ShowLineNumbers, and SyntaxHighlighting.
The project follows strict coding conventions:
-
Hungarian Notation for variables:
l= Local variablep= Private fieldv= Parameterg= Global variable
-
Enum Pattern: All enums start with
eUnspecifiedand end witheLastValue -
XML Documentation: All public members must have XML documentation comments
-
Error Handling: Try-Catch blocks in all methods with console logging
# Debug build
dotnet build --configuration Debug
# Release build
dotnet build --configuration Release
# Create self-contained executable
dotnet publish -c Release -r linux-x64 --self-containedContributions are welcome! Please follow these guidelines:
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Follow the coding conventions documented in the project
- Ensure all XML documentation is complete
- Test your changes thoroughly
- Commit your changes (
git commit -m 'Add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
- TextBuffer operations require
SelectRange+DeleteSelectioninstead ofDelete - Icon resources must use full namespace:
SimpleIDE.icon.png - GTK# Path conflicts require fully qualified
System.IO.Path
This project is licensed under the MIT License - see the LICENSE file for details.
- GTK# team for the excellent .NET bindings
- Microsoft for .NET 8.0 and VB.NET
- The open source community for inspiration and support
Note: IntelliSense is a registered trademark of Microsoft Corporation. SimpleIDE's code completion features are independently developed.
- Author: James Duane Plotts
- Repository: https://github.com/jamesplotts/simpleide
- Issues: https://github.com/jamesplotts/simpleide/issues
- Donate: https://buymeacoffee.com/jamesplotts
SimpleIDE - Bringing professional VB.NET development to Linux

