1
1
Fork
You've already forked Flow-Desktop
0
A lightweight desktop, built on X11, designed to be fast and easily customiziable
This repository has been archived on 2025年06月28日. You can view files and clone it, but you cannot make any changes to its state, such as pushing and creating new issues, pull requests or comments.
C++ 72.6%
Python 23.4%
C 4%
2025年05月21日 22:51:07 +02:00
programs Update programs/archiver.py 2025年05月16日 18:32:57 +00:00
flow.cpp Update flow.cpp 2025年05月21日 22:51:07 +02:00
LICENSE Initial commit 2025年04月09日 18:59:46 -04:00
README.md Update README.md 2025年05月16日 18:54:57 +00:00

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 .desktop entries.
    • Launches applications via GDesktopAppInfo, ensuring compatibility with standards.

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 GIO APIs.
  • 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 pactl ensures 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 (Openbox recommended)
  • 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

  1. Clone the Codeberg Repository 📥

    git clone https://codeberg.org/flow-desktop/Flow-Desktop.git
    cd Flow-Desktop
    
  2. 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
    
  3. 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:

  1. Fork the project on Codeberg.
  2. Create a new branch:
    git checkout -b feature-name
    
  3. Make changes, commit, and push:
    git commit -m "Describe feature"
    git push origin feature-name
    
  4. 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