A comprehensive package management GUI for MX Linux with support for multiple package sources including APT repositories, Flatpak applications, and curated popular applications.
mx-packageinstaller/
├── src/ # Source code (*.cpp, *.h, *.ui files)
├── Testing/ # Unit tests and test configuration
├── translations/ # Translation files (*.ts)
├── scripts/ # Helper scripts and policies
├── help/ # Documentation and help files
├── icons/ # Application icons and resources
├── debian/ # Debian packaging files
└── CMakeLists.txt # Build configuration
This is a Qt6 application using both CMake (recommended) and qmake build systems.
# Basic build
cmake -B build -DCMAKE_BUILD_TYPE=Release
cmake --build build
# Build with tests
cmake -B build -DBUILD_TESTS=ON -DCMAKE_BUILD_TYPE=Release
cmake --build build
# Run tests
cd build && ./Testing/test_versionnumber && ./Testing/test_aptcache
# Continuous testing (requires inotify-tools)
cd build && make watch_tests
# Basic build
qmake6 && make
# Release build
qmake6 CONFIG+=release && make
# Clean
make clean
# Update translations
/usr/lib/qt6/bin/lrelease translations/*.ts
The project includes comprehensive unit tests for critical components:
- test_versionnumber: Tests Debian version comparison logic including epochs, revisions, tildes, and real-world scenarios (14 tests)
- test_aptcache: Tests APT cache parsing, architecture filtering, version selection, and file processing (11 tests)
All tests use QtTest framework and can be run individually or through CMake's test runner.
- Multiple Package Sources: APT repositories, Flatpak, curated popular applications
- Architecture Filtering: Automatic detection and filtering for current system architecture
- Version Management: Sophisticated Debian version comparison and selection
- Privilege Escalation: Secure administrative operations via pkexec/gksu
- Comprehensive Testing: Unit tests for critical package management logic
- Internationalization: Full translation support for multiple languages
Application logs are written to /tmp/mxpi.log
during runtime and copied to /var/log/mxpi.log
at exit.
- Qt6 (Core, Gui, Widgets, Network, Xml, LinguistTools)
- C++20 compiler (GCC 12+ or Clang)
- CMake 3.16+ (for CMake builds)
- qmake6 (for qmake builds)