|
|
||
|---|---|---|
| programs | Update programs/archiver.py | |
| flow.cpp | Update flow.cpp | |
| LICENSE | Initial commit | |
| README.md | Update README.md | |
Flow Desktop 🚀
Flow Desktop is a modern, ultra-lightweight Linux desktop environment engineered for efficiency and customization. Built with modern C++, leveraging XCB, GSettings, and GDesktopAppInfo, Flow Desktop is designed to be minimalistic yet powerful, making it an excellent choice for low-resource systems and users who demand performance without bloat.
Codeberg Repository: Flow Desktop
✨ Technical Overview & Features
🌟 Lightweight & Efficient Architecture
- Developed using C++17 with STL, ensuring fast execution and easy maintainability.
- XCB-based taskbar enables direct, low-level interaction with the X11 windowing system, minimizing dependencies.
- Optimized event handling to reduce latency and improve responsiveness.
- Uses GSettings for persistent configuration management.
Proper memory management
- Proper
xcb(flush) - Better memory management
- No-leak teechnology
📏 Modular Taskbar System
- Efficient XCB-based Taskbar
- Direct low-level interaction with the X server ensures minimal overhead.
- Multi-button layout: Apps, Terminal, Settings, Volume, Theme, About, Logout.
- Designed to be extensible—new functionalities can be added easily.
- Application Menu 📂
- Automatically scans XDG_DATA_DIRS for
.desktopentries. - Launches applications via
GDesktopAppInfo, ensuring compatibility with standards.
- Automatically scans XDG_DATA_DIRS for
⏰ Real-Time System Clock
- Continuously updated via an asynchronous event loop for smooth performance.
- Optimized rendering to avoid unnecessary refresh cycles.
⚙️ Configurable & Themeable
- User Configuration Support (
~/.config/flow-desktop.conf)- Set custom wallpaper paths and theme colors dynamically.
- Parses user preferences efficiently using
GIOAPIs.
- Live Theming 🎨
- Dynamically toggles desktop theme colors.
- Supports on-the-fly UI adjustments without requiring a restart.
🔊 Integrated Audio Controls
- Uses PulseAudio for real-time volume adjustments.
- Supports both on-screen volume indicators and keyboard shortcuts.
- Direct integration with
pactlensures smooth audio management.
🛠 Optimized Codebase for Extensibility
- Written with modern C++ practices, avoiding unnecessary memory overhead.
- Modular design allows easy customization and feature expansion.
📋 Requirements
To run Flow Desktop, install the following dependencies:
- XCB Development Libraries (
libxcb1-dev,libxcb-util-dev,libxcb-cursor-dev,libxcb-shape0-dev,libxcb-render0-dev) - GIO Development Libraries (
libglib2.0-dev, for GSettings and desktop file handling) - C++17+ Compiler (
g++or equivalent) - Meson & Ninja (for build automation)
- Lightweight Window Manager (
Openboxrecommended) - PulseAudio Utilities (optional, for volume control)
On Debian/Ubuntu, dependencies can be installed with:
sudo apt update
sudo apt install g++ pkg-config libxcb1-dev libxcb-util-dev libxcb-cursor-dev libxcb-shape0-dev libxcb-render0-dev libglib2.0-dev
🛠️ Building & Installation
🔨 Building from Source
-
Clone the Codeberg Repository 📥
git clone https://codeberg.org/flow-desktop/Flow-Desktop.git cd Flow-Desktop -
Compile the Source Code
g++ flow.cpp -o flow `pkg-config --cflags --libs xcb xcb-util xcb-cursor xcb-shape xcb-render gio-2.0` -std=c++17 -
Launch Flow Desktop 🚀
startx ./flow
⚙️ Configuration & Customization
Editing Configuration File
Flow Desktop settings are stored in:
~/.config/flow-desktop.conf
Example configuration:
wallpaper=/path/to/your/wallpaper.jpg
themeColor=0x444444
Modify the file to customize appearance, behavior, and UI elements.
🎮 Usage & Shortcuts
Taskbar Controls
- Apps: Opens the dynamically-generated application menu.
- Terminal: Launches the default terminal emulator (
xterm). - Settings: Provides a basic configuration interface (stub for future expansion).
- Volume: Displays volume adjustment window; keyboard shortcuts supported.
- Theme: Instantly toggles theme colors.
- About: Displays version, authors, and acknowledgments.
- Logout: Terminates the desktop session gracefully.
Keyboard Shortcuts
- Super/Windows key: Opens application menu.
- Volume Keys: Adjust system volume (PulseAudio integration).
🤝 Contributing to Flow Desktop
Code Contributions Welcome!
Want to improve Flow Desktop? Follow these steps:
- Fork the project on Codeberg.
- Create a new branch:
git checkout -b feature-name - Make changes, commit, and push:
git commit -m "Describe feature" git push origin feature-name - Open a pull request with a description of the updates.
Contributors should follow the Contributor Covenant Code of Conduct for a welcoming community.
📜 License & Open-Source Commitment
Flow Desktop is licensed under the GNU General Public License v3.0. See LICENSE for full details.
🌐 More Information
- Repository: Flow Desktop on Codeberg
- Issue Tracker: Report bugs and suggest features on Codeberg.