Links is a Qt 6 desktop client for real-time audio/video meetings. The project combines a QML-based UI, a C++ conference core, LiveKit-based media transport, device capture, chat, screen sharing, and local recording support.
The repository currently contains:
- A Qt Quick desktop client under active development
- Core conference/media control logic in C++
- Cross-platform build scripts for Windows, Linux, and macOS
- GitHub Actions workflows for build validation and packaging
- GoogleTest-based unit and integration-style tests for core modules
The repository also contains a server/ directory in the project layout notes, but the main actively built target in the current top-level CMake project is the desktop client application.
- Email/password login and meeting join/start flows
- Real-time conferencing with LiveKit
- Microphone and camera device control
- Screen sharing
- In-meeting chat and participant state updates
- Local recording pipeline
- Theme, appearance, audio, video, and network settings
Key directories:
- core: conference control, capture, media pipeline, desktop capture, recording core
- ui: QML pages/components and Qt backend bridge classes
- utils: logging, settings, shared helpers
- tests: GoogleTest targets and test registration
- cmake: SDK fetch/config helpers
- res: icons and packaged resources
- tools: packaging assets and scripts
- third_party: vendored dependencies and downloaded SDKs
Minimum tooling reflected by the current build files:
- CMake 3.21+ for presets
- C++17 compiler
- Ninja
- Qt 6.8.x or 6.10.x with at least:
CoreGuiNetworkMultimediaQuickQuickControls2QmlConcurrent
- Git
- vcpkg
Additional platform tools currently used by the repository:
- Windows:
- Visual Studio C++ toolchain
windeployqt- Inno Setup for installer packaging
- Linux:
patchelf- X11 and Pulse/ALSA development libraries
linuxdeploy+linuxdeploy-plugin-qtduring packaging
- macOS:
- Xcode toolchain
macdeployqt
The project uses platform-specific prebuilt SDKs that are resolved by CMake fetch modules:
- LiveKit C++ SDK
- WebRTC Audio Processing
Architecture is selected through LINKS_SDK_ARCH:
x64arm64
The current CI and packaging configuration uses:
- Windows:
x64 - Linux:
x64 - macOS:
x64
cmake --preset release
cmake --build --preset release
ctest --preset releaseWindows:
build.cmd release
build.cmd test
build.cmd cleanLinux / macOS:
./build.sh release
./build.sh test
./build.sh cleanThe current scripts and workflows support these inputs:
LINKS_SDK_ARCH- Selects SDK architecture, for example
x64orarm64
- Selects SDK architecture, for example
VCPKG_TARGET_TRIPLET- Overrides the vcpkg triplet
LINKS_ENABLE_LOCAL_RECORDING- Controls whether local recording is compiled in
Examples:
LINKS_SDK_ARCH=x64 ./build.sh release
LINKS_SDK_ARCH=x64 LINKS_ENABLE_LOCAL_RECORDING=OFF ./build.sh testset LINKS_SDK_ARCH=x64
set LINKS_ENABLE_LOCAL_RECORDING=ON
build.cmd release- Local recording is enabled by default on Windows in the top-level CMake configuration.
- Local recording is disabled by default on non-Windows platforms unless explicitly enabled.
- The desktop capture implementation is platform-specific:
- Windows: WGC / DXGI / GDI paths
- macOS: ScreenCaptureKit-based path
- Linux: X11 path
- The top-level
CMakeLists.txtcurrently prepends a Windows Qt path (D:/Qt/6.10.0/msvc2022_64) when building on Windows. Adjust this locally if your environment differs.
The current test suite includes coverage for several core areas, including:
- Audio processing
- Microphone capturer
- Desktop frame / geometry logic
- Conference network stats aggregation
- Participant metadata parsing
- Recording core helpers
- Cross-platform capture code on supported Unix platforms
Tests are registered from tests/CMakeLists.txt.
GitHub Actions workflows live under .github/workflows:
build.yml- Cross-platform build and test validation
package.yml- Windows portable zip + installer
- macOS app zip + DMG
- Linux AppImage
Release packaging is currently triggered by tags matching:
v*
- QML files and backend sources must be registered in CMakeLists.txt.
- This repository uses Qt
AUTOMOCandqt_add_qml_module, so missing source registration is a common cause of build errors. - The fetch modules under cmake are part of the active build path and should be kept in sync with CI architecture settings.