![]() |
DeskUp 0.3
|

Directories | |
| desk_up_backend_interface | |
| desk_up_error | |
| desk_up_error_gui_converter | |
| desk_up_frontend | |
| desk_up_window_backend | |
DeskUp is organized into three main layers:
This document is here for anyone to have a clear understanding of how DeskUp operates, or at least to know where to look for a specific thing
When DeskUp starts, the application calls DU_Init (declared in source/desk_up_window_backend/window_core.h and implemented in source/desk_up_window_backend/window_core.cc).
DU_Init() performs three key actions:
If initialization succeeds, DU_Init() logs the connected backend and returns 1. If none is available, it returns 0.
DeskUpBackendInterface is defined in source/desk_up_backend_interface/desk_up_backend_interface.h and implemented in source/desk_up_backend_interface/desk_up_backend_interface.cc.
This class acts as the frontend facade, coordinating workspace-level operations with the backend.
If any backend or I/O operation fails, the function catches the exception and returns 0, avoiding crashes.
Defined in source/desk_up_window_backend/window_desc/window_desc.h and implemented in source/desk_up_window_backend/window_desc/window_desc.cc.
Each windowDesc instance represents a window in an abstract, cross-platform way.
Fields:
Behavior:
The Windows backend lives in source/desk_up_window_backend/window_backends/desk_up_win/desk_up_win.h and source/desk_up_window_backend/window_backends/desk_up_win/desk_up_win.cc.
It defines:
All the common functions necessary for any platform to make DeskUp work. If there are platform-specific calls, they won't appear in the API.
WIN_getAllWindows() calls EnumDesktopWindows, which triggers a callback to:
WIN_getDeskUpPath() determines the folder:
| Layer | Path | Description |
|---|---|---|
| Frontend | source/desk_up/mainWindow.h / .cpp | Qt GUI layer orchestrating workspace operations. |
| Core (Backend interface) | source/desk_up_backend_interface/desk_up_backend_interface.h / .cc | Backend communication facade (DeskUpBackendInterface). |
| Core (Initialization) | source/desk_up_window_backend/window_core.h / .cc | Backend initialization (DU_Init) and global state. |
| Backend (Windows) | source/desk_up_window_backend/window_backends/desk_up_win/desk_up_win.h / .cc | Implements Windows-specific logic. |
| Window record | source/desk_up_window_backend/window_desc/window_desc.h / .cc | Data structure representing windows. |
| Backend utilities | source/desk_up_window_backend/backend_utils/backend_utils.cc | Shared helper functions for backends. |
| Interfaces | source/desk_up_window_backend/desk_up_window_device.h, desk_up_window_bootstrap.h | Device and bootstrap definitions. |
| Error system | source/desk_up_error/ and source/desk_up_error_gui_converter/ | Error logic and GUI integration. |
| Entry point | source/desk_up/main.cpp | Program start (Qt). |
DeskUps modular design allows adding new platforms easily.
Adding a new backend only requires implementing a DeskUpWindowBootStrap with:
It also facilitates creating tests for the backend, as one can create a testing device, which includes predefined values for each function. Multiple devices can be connected, so as to test multiple functionalities.