A minimal web-based desktop environment for use as a startpage, homelab management dashboard, or just a fun playground on your network. The project is designed to be modular and theme-able, offering diverse usage options.
- Customizable Desktop: Users can add, remove, and arrange desktop icons, and customize the background image.
- Start Menu: A functional start menu provides quick access to applications.
- Taskbar: A taskbar displays open applications and system controls.
- Window Management: Basic window management features including drag and resize, minimize, maximize, and close.
- Persistent State: Application positions, sizes, and open status are saved across sessions using localStorage.
- Settings Editor: Allows customization of various settings such as background image, theme, and font size.
- Shortcut Editor: Provides a simple interface to manage and edit application shortcuts for the desktop, taskbar, and start menu.
- Run the application: Start the Flask server using the
install.shscript (see Installation section). - Access the desktop: Open your web browser and navigate to
http://localhost:5000. - Interact with the desktop: Use the start menu, taskbar, and desktop icons to launch and manage applications.
- Customize settings: Access the settings page through the taskbar icon to adjust various preferences.
- Manage shortcuts: Edit the
shortcuts.jsonfile to customize application shortcuts.
- Clone the repository:
git clone https://github.com/warmbo/WarmbOS.git cd WarmbOS - Run the installation script: This script installs the necessary dependencies and sets up a systemd service (requires root privileges):
Alternatively, use Docker Compose:
sudo ./install.sh
docker-compose up -d
- Python: Backend server using Flask for handling API requests and serving static files.
- Flask: Lightweight web framework for the backend.
- HTML, CSS, JavaScript: Frontend technologies for building the user interface.
- localStorage: Used for persistent storage of desktop state.
- systemd: Used for managing the Flask application as a system service (Linux only).
- Docker: Containerization for simplified deployment.
The application's behavior is configured through two JSON files:
shortcuts.json: Defines the applications and their associated icons, which appear on the desktop, taskbar, and start menu. See the file for example format. The format is flexible, allowing for either a single array of shortcuts or separate arrays for each menu type under keys"desktop","taskbar", and"startMenu".settings.json: Contains customizable settings such as background image, theme, and font size. See the file for example format.
The Flask backend exposes the following endpoints:
/: Serves the main desktop HTML file (desktop.html)./shortcuts.json: GET request returns theshortcuts.jsondata. POST request saves the provided shortcut data toshortcuts.json. Example POST request:{ "desktop": [ { "title": "New App", "iconUrl": "path/to/icon.png", "contentPath": "/path/to/app.html" } ] }/settings.json: GET request returns thesettings.jsondata. POST request saves the provided settings data tosettings.json. Example POST request:{ "backgroundImage": "https://example.com/wallpaper.jpg", "preferences": { "theme": "dark", "fontSize": 14 } }/<path:filename>: Serves any other file from the project root directory.
The project dependencies are listed in the requirements.txt file. Install them using:
pip install -r requirements.txt- Integration with selfh.st/icons
- Upload images for avatar and wallpaper
- Apps (Terminal, Notepad, Calendar, Network Map)
- Ability to call APIs
- Better handling of desktop icon locations and window management
Contributions are welcome! Please open an issue or submit a pull request.
No formal testing framework is currently implemented. Testing is primarily done through manual interaction with the application.
GNU AFFERO GENERAL PUBLIC LICENSE Version 3, 19 November 2007
README.md was made with Etchr


