2 pointsby gzson792 hours ago1 comment
  • gzson792 hours ago
    Dashboard is a Qt6 desktop overlay where widgets are shared libraries (.so files) loaded at runtime via QPluginLoader. Drop a plugin into the plugins/ directory and it appears in the picker immediately — no rebuild, no restart.

      **Why I built it**
    
      I wanted glanceable system info (CPU, memory, logs) alongside productivity
      widgets (todo, pomodoro, AI chat) in a single persistent window I could
      arrange freely. Existing solutions were either too rigid or required a
      specific DE.
    
      **Architecture**
    
      Each widget implements a small C++ interface (IWidget):
    
        QString name() const;
        QWidget* createWidget(WidgetContext*, QWidget* parent);
        void saveState(QJsonObject&);
        void loadState(const QJsonObject&);
    
      The host application (PluginLoader → WidgetManager → WidgetCanvas) handles
      discovery, layout, and serialization. Widget state is stored as per-instance
      JSON files under ~/.config/Dashboard/widget-data/.
    
      **Widgets included (12)**
    
      Clock, Calendar, Todo, Notes, Pomodoro, Countdown, Links, Weather
      (Open-Meteo — no API key), System Status (/proc), Htop, AI Chat (OpenAI),
      Log Tail (file or systemd journal).
    
      **Distribution**
    
      AppImage built on ubuntu-22.04 (GLIBC 2.35) and Flatpak (org.kde.Platform
      6.9, app ID io.github.duh_dashboard.Dashboard). Both bundle Qt and all 12
      plugins. The AppImage build uses linuxdeploy + patchelf to fix up plugin
      RPATHs so Qt is found at $APPDIR/usr/lib/.
    
      **SDK**
    
      There's a widget-sdk package (CMake, installs headers + a cmake target) and
      a Python scaffolding script that generates a complete, buildable widget
      skeleton from a name. Each first-party widget is its own independent repo.
    
      Repo: https://github.com/duh-dashboard/dashboard
      Releases: https://github.com/duh-dashboard/dashboard/releases
      SDK: https://github.com/duh-dashboard/widget-sdk