BO
bobrossrtx/Echelon
Echelon
A C++20 hacking simulator engine with a desktop-like window manager, featuring draggable/resizable windows, a terminal emulator, fake browser, virtual filesystem, and network simulation.
Features
- Desktop-like Window Manager: Multiple application windows with focus management and z-order
- Draggable & Resizable Windows: Click and drag title bars, resize from corners
- Terminal Emulator: Command-line interface (TODO: full implementation)
- Fake Browser: Simulated web browser (TODO: full implementation)
- Virtual Filesystem: In-memory file system simulation
- Network Simulation: Fake network connections and data transfer
Architecture
The project is built with a modular architecture:
- CoreEngine: Main event loop and SDL2 initialization
- WindowManager: Manages all application windows, focus, and z-order
- AppWindow: Base class for draggable/resizable windows
- Terminal: Terminal emulator window (basic stub)
- Browser: Fake browser window (basic stub)
- Network: Network simulation system (basic stub)
- FileSystem: Virtual filesystem (basic implementation)
Requirements
- CMake 3.20 or higher
- C++20 compatible compiler (GCC 10+, Clang 11+, MSVC 2019+)
- SDL2
- SDL2_ttf
Building
Ubuntu/Debian
# Install dependencies
sudo apt-get update
sudo apt-get install -y cmake g++ libsdl2-dev libsdl2-ttf-dev
# Build the project
mkdir build
cd build
cmake ..
make
# Run
./EchelonmacOS
# Install dependencies
brew install cmake sdl2 sdl2_ttf
# Build the project
mkdir build
cd build
cmake ..
make
# Run
./EchelonWindows
# Install SDL2 and SDL2_ttf, then:
mkdir build
cd build
cmake ..
cmake --build .
# Run
.\Debug\Echelon.exeUsage
- Click on window title bars to drag windows
- Click on the bottom-right corner to resize windows
- Close the application with the window close button or Ctrl+C
TODO Subsystems
Terminal
- Command processing and execution
- Text rendering with SDL_ttf
- Command history and completion
- Cursor position tracking
- Color support
Browser
- HTML-like page rendering
- Navigation history (back/forward)
- Fake DNS resolution
- Bookmark system
- URL bar input
Network
- Packet queue simulation
- Bandwidth throttling
- Packet loss simulation
- Firewall simulation
- DNS cache
FileSystem
- Path normalization
- File permissions
- Symbolic links
- File metadata (timestamps, owner)
License
TBD