A modern, lightweight code editor built from scratch in C using SDL3. This project provides a fast, efficient, and customizable text editing experience with a graphical user interface.
- Features
- Screenshots
- Architecture
- Requirements
- Installation
- Building from Source
- Usage
- Project Structure
- Configuration
- Contributing
- License
- Modern GUI: Clean, responsive interface built with SDL3
- File Explorer: Built-in file browser with folder navigation
- Syntax Highlighting: Support for multiple programming languages
- Multi-tab Interface: Work with multiple files simultaneously
- Customizable Interface: Adjustable themes and layout
- Real-time Editing: Fast text rendering and editing capabilities
- Cross-platform: Runs on Linux, Windows, and macOS
- Lightweight: Minimal resource usage and fast startup times
- Extensible: Modular architecture for easy feature additions
Main editor interface with file explorer
The editor follows a modular architecture with clear separation of concerns:
- Renderer Module: Handles all SDL3 graphics operations
- Events Module: Manages user input and event handling
- Files Module: File I/O operations and folder management
- Parser Module: Text parsing and syntax highlighting
- Utils Module: Common utilities and helper functions
- SDL3
- SDL3_image
- SDL3_ttf
- GCC or Clang compiler
- CMake (>= 3.16)
- pkg-config
- JetBrains Mono: For code editing (monospace)
- Poppins: For UI elements
- Montserrat: For headings and labels
# Note: SDL3 packages might not be in the default repositories yet.
# You may need to compile SDL3 from source.
sudo apt update
sudo apt install build-essential cmake pkg-configsudo dnf install cmake gcc make# SDL3 is available in AUR or some repos
sudo pacman -S cmake gcc makebrew install cmake sdl3 sdl3_image sdl3_ttf-
Clone the repository:
git clone https://github.com/7777Satish/Aether.git cd Aether -
Create build directory:
mkdir build cd build -
Configure the project:
cmake ..
-
Build the project:
make
-
Run the editor:
./editor
cmake -DCMAKE_BUILD_TYPE=Debug ..: Build with debug symbolsmake clean: Remove build artifacts (or just delete build folder)sudo make install: Install to system (if configured in CMake)
# Start with empty workspace
./build/editor
# Open a specific file
./build/editor filename.c
# Open a project folder
./build/editor /path/to/project- Open Folder: Click the folder icon in the explorer panel
- Create New File: File → New File or Ctrl+N
- Save File: File → Save or Ctrl+S
- Open File: File → Open or Ctrl+O
- File Explorer: Browse and open files from the left panel
- Tab Navigation: Click tabs or use Ctrl+Tab
- Quick Search: Use the search panel for finding text
- Syntax Highlighting: Automatic detection based on file extension
- Multi-cursor: Hold Ctrl while clicking for multiple cursors
- Auto-indent: Automatic indentation for code blocks
Aether/
├── src/ # Source code
│ ├── main.c # Main application entry point
│ ├── renderer.c # SDL2 rendering and UI
│ ├── events.c # Event handling and input
│ ├── files.c # File operations and explorer
│ ├── parser.c # Text parsing and syntax highlighting
│ └── utils.c # Utility functions
├── include/ # Header files
│ ├── renderer.h # Rendering declarations
│ ├── events.h # Event handling declarations
│ ├── files.h # File operations declarations
│ ├── parser.h # Parser declarations
│ └── utils.h # Utility declarations
├── assets/ # Resources
│ ├── fonts/ # Font files
│ ├── icons/ # UI icons
│ ├── screenshots/ # Project screenshots
│ └── themes/ # Color themes
├── build/ # Compiled objects and executable
├── docs/ # Documentation
├── Makefile # Build configuration
├── config.json # Editor configuration
└── README.md # This file
The editor can be customized through config.json:
{
"theme": "dark",
"font_size": 14,
"tab_size": 4,
"word_wrap": true,
"syntax_highlighting": true,
"auto_save": false,
"line_numbers": true
}dark(default)lightmonokaisolarized
We welcome contributions! Please see our Contributing Guide for details.
- Fork the repository
- Create a feature branch:
git checkout -b feature-name - Make your changes
- Test thoroughly
- Submit a pull request
- Follow K&R C style guidelines
- Use meaningful variable names
- Add comments for complex logic
- Ensure proper error handling
Please use the GitHub issue tracker to report bugs or request features.
This project is licensed under the MIT License - see the LICENSE file for details.
- SDL2 development team for the excellent graphics library
- Font authors: JetBrains, Google (Poppins), and Julieta Ulanovsky (Montserrat)
- Contributors and testers
Made with ❤️ by 7777Satish