A lightweight, feature-rich Python-based IDE built with PyQt6, designed for managing multiple projects in a single workspace with integrated AI assistance via Ollama.
- Split View Editor:
- Vertical and horizontal split views for side-by-side editing
- Independent tab groups with drag-and-drop support
- Move tabs between split groups (
Ctrl+Alt+M) - Focus switching between groups (
Ctrl+Alt+O) - All keyboard shortcuts work correctly in split view
- Multi-File Editing: Tabbed interface with syntax highlighting for Python and other languages
- Line Numbers: Toggle-able line numbers with current line highlighting
- Project-Based Workflow: Organize and activate specific projects within your workspace
- File Explorer:
- Tree view with context menus for file/folder operations
- Unicode file icons (no image assets required)
- Drag-and-drop file moving within the tree
- Press Enter to open files
- Project highlighting for active projects
- Smart Tab Management:
- Reorderable tabs with drag-and-drop
- Middle-click to close tabs
- Modified file indicators (β symbol)
- Active tab highlighting
- Full path tooltips on hover
- Recent tab order switching (
Ctrl+Tab) - Session persistence (reopens tabs on restart)
- Outline Navigator: Multi-language code structure view
- Supports 12+ languages (Python, PHP, Go, Rust, JavaScript/TypeScript, Java, C/C++, Ruby, HTML, CSS, JSON)
- Hierarchical view of classes, functions, methods
- Click to jump to definition
- Search/filter symbols
- Auto-updates on tab switch
- Works seamlessly with split view
- Quick Open (Ctrl+P): Fuzzy file search across active projects
- Intelligent scoring algorithm
- Color-coded results by file type
- Fast caching for instant subsequent opens
- Go to Line (Ctrl+G): Jump directly to any line number
- Recent Files (Ctrl+R): Quick access to recently opened files
- Find & Replace:
- Fuzzy matching
- Regular expression support
- Case-sensitive and whole-word options
- Find in selection
- Replace all functionality
- Match navigation (F3/Shift+F3)
- Works independently in each split group
- Ollama Chat: Built-in AI assistance powered by Ollama
- Support for multiple models
- Configurable timeout settings
- Model status monitoring (
ollama ps) - Smart context-aware prompts
- Send entire files or selections to AI
- Context menu integration in tabs
- AI Actions:
- Send entire file to Ollama (
Ctrl+Shift+O) - Send selected text to Ollama
- Custom prompts for code explanation, refactoring, etc.
- Automatic project context inclusion
- Send entire file to Ollama (
- Intelligent Context: AI receives relevant file context for better responses
- Comment/Uncomment (
Ctrl+/): Toggle line comments for multiple languages - Duplicate Line (
Ctrl+D): Duplicate current line or selection - Indent/Unindent (
Tab/Shift+Tab): Smart indentation - Auto-completion: Context-aware code completion
- Multiple Cursors: Edit multiple locations simultaneously
- Projects Panel: Visual project activation/deactivation
- Checkbox interface for selecting active projects
- Quick Open searches only active projects
- Project highlighting in file explorer
- Persistent project selection across sessions
- Settings Dialog:
- Explorer width adjustment
- Editor font size
- Tab width (spaces)
- Line number toggle
- Gutter width configuration
- Session restore options
- Ollama timeout configuration
- Real-time cursor position (Line, Column)
- File encoding (UTF-8)
- Line ending detection (LF/CRLF/CR)
- Language detection (20+ languages)
- Persistent status messages
- Context Menus:
- Create new files/folders
- Rename files/folders
- Delete with confirmation
- Open in editor
- Copy file path (absolute/relative)
- Drag and drop to move files/folders
- Tab Context Menu:
- Save file
- Close tab/Close others/Close all
- Send to Ollama (entire or selection)
- Copy file path
- Python 3.12 or higher
- PyQt6
# Clone the repository
git clone https://github.com/davro/workspace
cd workspaceInstallation / first run
chmod +x ide.sh
./ide.shUsage section
./ide.sh # Run (auto-install if needed)
./ide.sh install # Force install
./ide.sh update # Update dependencies
./ide.sh workspace.py # Run alternate entry fileTo use the AI features, install Ollama:
# Install Ollama (see https://ollama.ai for platform-specific instructions)
# Pull a model (e.g., llama3)
ollama pull llama3
# The IDE will automatically detect installed models- Launch the IDE: Run
./ide.sh - Default workspace:
~/workspace(created automatically if it doesn't exist) - Activate projects: Click the "π¦ Projects" tab and check the projects you want to work on
- Open files: Use the file explorer or Quick Open (Ctrl+P)
- Split view: Press
Ctrl+\for vertical split orCtrl+Shift+\for horizontal split - Code outline: View code structure in the "π Outline" tab on the right
| Shortcut | Action |
|---|---|
Ctrl+N |
New File |
Ctrl+Shift+N |
New Folder |
Ctrl+P |
Quick Open (fuzzy file search) |
Ctrl+R |
Recent Files |
Ctrl+S |
Save current file |
Ctrl+Shift+S |
Save All |
Ctrl+W |
Close Tab |
Ctrl+Shift+W |
Close All Tabs |
Ctrl+Tab |
Tab Switcher (Recent Order) |
Ctrl+Shift+Tab |
Tab Switcher (Reverse) |
Ctrl+, |
Preferences |
Ctrl+Q |
Exit |
| Shortcut | Action |
|---|---|
Ctrl+Z |
Undo |
Ctrl+Shift+Z |
Redo |
Ctrl+X |
Cut |
Ctrl+C |
Copy |
Ctrl+V |
Paste |
Ctrl+A |
Select All |
Ctrl+D |
Duplicate Line/Selection |
Ctrl+/ |
Toggle Comment |
| Shortcut | Action |
|---|---|
Ctrl+F |
Find & Replace |
Ctrl+H |
Replace |
F3 |
Find Next |
Shift+F3 |
Find Previous |
| Shortcut | Action |
|---|---|
Ctrl+B |
Toggle Explorer |
Ctrl+L |
Toggle AI Chat & Outline |
Ctrl+\ |
Split Editor Vertically |
Ctrl+Shift+\ |
Split Editor Horizontally |
Ctrl+Alt+W |
Close Split |
| Shortcut | Action |
|---|---|
Ctrl+Alt+M |
Move Tab to Other Group |
Ctrl+Alt+O |
Focus Other Group |
Ctrl+Alt+S |
Open in Split |
| Shortcut | Action |
|---|---|
Ctrl+P |
Go to File |
Ctrl+G |
Go to Line |
Enter |
Open file (in File Explorer) |
| Shortcut | Action |
|---|---|
F5 |
Run Current File |
| Shortcut | Action |
|---|---|
Ctrl+Shift+O |
Send to Ollama |
| Shortcut | Action |
|---|---|
F1 |
Documentation |
F2 |
Changelog |
Ctrl+K Ctrl+S |
Keyboard Shortcuts |
- Create Split: Press
Ctrl+\for vertical orCtrl+Shift+\for horizontal split - Move Tabs: Press
Ctrl+Alt+Mto move current tab to other group - Switch Focus: Press
Ctrl+Alt+Oto focus the other editor group - Open in Split: Press
Ctrl+Alt+Sto open current file in the other group - Close Split: Press
Ctrl+Alt+Wto merge back to single editor
- View Outline: Click the "π Outline" tab on the right sidebar
- Search Symbols: Type in the search box to filter classes/functions
- Jump to Definition: Click any symbol to jump to its location in the code
- Auto-Update: Outline automatically updates when switching files or groups
- Organize: Place your projects as directories in
~/workspace/ - Activate: Open the "π¦ Projects" tab and check the projects you're working on
- Search: Press
Ctrl+Pto search files only in active projects - Visual Feedback: Active projects are highlighted in green in the file explorer
- Select code in the editor (or don't select for entire file)
- Right-click on the tab β "π€ AI Actions"
- Choose "Send Entire File" or "Send Selection"
- Enter your prompt (e.g., "Explain this code", "Find bugs", "Add comments")
- View response in the "π€ AI" tab with intelligent context
- Drag and Drop: Drag files/folders to move them within the workspace
- Enter to Open: Navigate with arrow keys, press Enter to open files
- Middle-Click: Middle-click any tab to close it instantly
- Recent Files: Press
Ctrl+Rto see and open recently edited files
The IDE stores configuration in your workspace directory:
~/.workspace/.workspace_ide_config.json- Settings and active projects~/.workspace/.workspace_ide_session.json- Open tabs and window state
- UI Framework: PyQt6
- Language: Python 3.12+
- AI Backend: Ollama (optional)
- Split Editor Manager: Manages multiple editor groups with independent tab sets
- Outline Parser: Multi-language code structure parser (Python AST + regex)
- File Scanner: Background threading for non-blocking file indexing
- Syntax Highlighter: Extensible highlighting system
- Find & Replace: Regex-capable search with scoring algorithm
- Session Manager: Persistent state across restarts
- Tab Order Manager: Intelligent tab switching based on recent usage
- Python (classes, functions, methods - AST-based)
- PHP (classes, functions)
- Go (structs, interfaces, functions)
- Rust (structs, enums, traits, functions)
- JavaScript/TypeScript (classes, functions, arrow functions)
- Java (classes, interfaces, methods)
- C/C++ (structs, classes, functions)
- Ruby (classes, modules, methods)
- HTML (tags with IDs)
- CSS/SCSS (selectors)
- JSON (top-level keys)
- β Split view (side-by-side editing)
- β Drag-and-drop file moving
- β Unicode file icons
- β Middle-click to close tabs
- β Multi-language outline navigator
- β Comment/uncomment with proper indentation
- β Duplicate line/selection
- β Tab switcher with recent order
- β Recent files menu
- β Enter key to open files in tree
- Minimap for code overview
- Additional syntax highlighting (more languages)
- Auto-save functionality
- Move line up/down
- Multi-cursor support
- Code folding
- Git integration
- Extensions system
- Themes support
- Debug console integration
- Breadcrumb navigation
- Symbol search across project
- Advanced refactoring tools
Contributions are welcome! Please feel free to submit a Pull Request.
# Fork and clone the repository
git clone https://github.com/yourusername/workspace-ide.git
# Create a feature branch
git checkout -b feature/amazing-feature
# Make your changes and test
python workspace.py
# Commit and push
git commit -m "Add amazing feature"
git push origin feature/amazing-featureThis project is licensed under the GPL v3 License - see the LICENSE file for details.
- Built with PyQt6
- AI integration powered by Ollama
- Inspired by modern IDEs like Cursor, VS Code, and PyCharm
The IDE features a clean, dark-themed interface with:
- File explorer with Unicode icons
- Split view editor support
- Code outline navigator
- Integrated AI chat
Work on multiple files side-by-side with independent tab groups and synchronized features.
Navigate large files easily with the hierarchical code structure view supporting 12+ languages.
Send code directly to Ollama with intelligent context for explanations, refactoring, and assistance.
For issues, questions, or feature requests, please open an issue on GitHub.
Built with β€οΈ for developers who want a lightweight, AI-enhanced IDE with modern productivity features