A Qt-based application for creating custom launcher toolboxes for Linux. Custom Toolbox allows users to create personalized collections of applications organized by categories, providing quick access to frequently used tools and utilities.
- Custom Launcher Creation: Create personalized toolboxes with your favorite applications
- Category Organization: Group applications into logical categories for easy navigation
- Flexible Configuration: Text-based configuration files for easy customization
- Root Application Support: Launch applications with elevated privileges when needed
- Terminal Application Support: Run terminal-based applications in a terminal window
- Internationalization: Multi-language support with extensive translations
- Theme Integration: Integrates with system themes and icon sets

Custom Toolbox is available in MX Linux repositories:
sudo apt update
sudo apt install custom-toolbox
- Qt6 development libraries (Core, Gui, Widgets, LinguistTools)
- C++20 compatible compiler (GCC 14+ or Clang 15+)
- CMake 3.16+
- Ninja build system (recommended)
Ubuntu/Debian:
sudo apt install qt6-base-dev qt6-tools-dev cmake ninja-build build-essential
Fedora:
sudo dnf install qt6-qtbase-devel qt6-qttools-devel cmake ninja-build gcc-c++
For Clang (optional):
sudo apt install clang # Ubuntu/Debian
sudo dnf install clang # Fedora
git clone https://github.com/MX-Linux/custom-toolbox.git
cd custom-toolbox
./build.sh
sudo cmake --install build
Using build script with options:
./build.sh # Release build
./build.sh --debug # Debug build
./build.sh --clang # Build with clang
./build.sh --clean # Clean rebuild
Direct CMake commands:
cmake -G Ninja -B build -DCMAKE_BUILD_TYPE=Release
cmake --build build --parallel
Compiler Selection:
- GCC (default): Optimized builds with LTO support
- Clang: Alternative compiler with different optimizations
./build.sh --clang # OR cmake -B build -DUSE_CLANG=ON
Build Types:
- Release: Optimized build with
-O3
, LTO, andNDEBUG
- Debug: Debug symbols, no optimization
./build.sh --debug # OR cmake -B build -DCMAKE_BUILD_TYPE=Debug
Features:
- Ninja Build System: Fast parallel builds
- Colored Output: Automatic colored diagnostics
- Compile Commands:
compile_commands.json
for IDE support - Automatic Version: Version extracted from CMakeLists.txt
- Launch Custom Toolbox from the applications menu or run
custom-toolbox
in terminal - The application will scan
/etc/custom-toolbox/
for.list
configuration files - Click on any application button to launch it
- Use the category tabs to navigate between different application groups
Custom Toolbox reads configuration files from /etc/custom-toolbox/
with the .list
extension. These are simple text files that define the launcher's structure.
# Comments start with #
Name=My Custom Launcher
Comment=A collection of my favorite tools
Category=Development
code
gedit
git-gui
Category=System Tools
htop
gparted root
gnome-terminal terminal
Category=Graphics
gimp
inkscape
blender
Header Section:
Name=
- The title displayed in the launcher windowComment=
- Optional description of the launcher
Category Sections:
Category=CategoryName
- Defines a new category tab- Following lines list application names (one per line)
- Applications are launched using their desktop file names or executable names
Application Flags:
appname root
- Launch application with root privilegesappname terminal
- Launch application in a terminal windowappname root terminal
- Launch with both root privileges and in terminal
Development Tools (/etc/custom-toolbox/development.list
):
Name=Development Tools
Comment=Programming and development applications
Category=Editors
code
atom
vim terminal
emacs
Category=Version Control
git-gui
gitk
meld
Category=Databases
mysql-workbench
pgadmin4
System Administration (/etc/custom-toolbox/sysadmin.list
):
Name=System Administration
Comment=System maintenance and administration tools
Category=Monitoring
htop terminal
iotop root terminal
nethogs root terminal
Category=Disk Management
gparted root
baobab
gnome-disk-utility
Category=Network
wireshark root
nmap terminal
iptables root terminal
Media Tools (/etc/custom-toolbox/media.list
):
Name=Media Tools
Comment=Audio, video, and graphics applications
Category=Graphics
gimp
inkscape
krita
blender
Category=Audio
audacity
ardour
lmms
Category=Video
kdenlive
openshot
vlc
The application behavior can be customized using /etc/custom-toolbox/custom-toolbox.conf
:
# Hide GUI or minimize it when launching an app
hideGUI=false
# Set GUI minimum size (pixels)
min_height=500
min_width=0
# Set icon size (pixels)
icon_size=40
# Set the GUI editor used in the program
# Use an absolute path here
gui_editor=/usr/bin/featherpad
- hideGUI: Hide or minimize the launcher window when starting an application
- min_height/min_width: Set minimum window dimensions
- icon_size: Size of application icons in pixels
- gui_editor: Default text editor for editing configuration files
-
Create a new
.list
file in/etc/custom-toolbox/
:sudo nano /etc/custom-toolbox/my-tools.list
-
Define the launcher structure:
Name=My Personal Tools Comment=My frequently used applications Category=Internet firefox thunderbird Category=Office libreoffice-writer libreoffice-calc
-
Restart Custom Toolbox to load the new configuration
To find the correct application names to use in configuration files:
# List all desktop files
ls /usr/share/applications/
# Search for specific applications
find /usr/share/applications/ -name "*firefox*"
# Check if an executable exists
which gimp
custom-toolbox/
├── src/ # Source code
│ ├── main.cpp # Application entry point
│ ├── mainwindow.cpp/h # Main window implementation
│ ├── flatbutton.cpp/h # Custom button widget
│ ├── about.cpp/h # About dialog
│ ├── common.h # Common definitions
│ ├── version.h # Version information
│ └── mainwindow.ui # UI layout file
├── translations/ # Translation files
├── icons/ # Application icons
├── help/ # Help documentation
├── CMakeLists.txt # CMake build configuration
├── build.sh # Build script with options
├── custom-toolbox.conf # Default configuration
├── example.list # Example launcher configuration
└── README.md # This file
- Language: C++20 with strict compiler warnings (
-Wpedantic -Werror
) - Framework: Qt6 (Core, Gui, Widgets)
- Build System: CMake with Ninja generator
- Compilers: GCC 14+ (with LTO) or Clang 15+ (default GCC)
- Optimizations:
-O3
for Release, LTO for GCC builds - Warnings: All warnings as errors, pedantic mode enabled
- Style:
snake_case
variables,PascalCase
classes, minimal comments
- Fork the repository
- Create a feature branch
- Make your changes following the code standards
- Test with both GCC and Clang compilers
- Run the application to verify functionality
- Submit a pull request
# Test with different compilers
./build.sh # GCC Release
./build.sh --clang # Clang Release
./build.sh --debug # GCC Debug
./build.sh --clang --debug # Clang Debug
# Run the application
./build/custom-toolbox
# Clean builds
./build.sh --clean
# Generate compile_commands.json for IDEs
cmake -G Ninja -B build -DCMAKE_BUILD_TYPE=Release -DCMAKE_EXPORT_COMPILE_COMMANDS=ON
# Check version info
./build/custom-toolbox --version
./build/custom-toolbox --help
Run with debug output:
QT_LOGGING_RULES="*=true" custom-toolbox
This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
- Adrian - Main developer
- MX Linux Team - http://mxlinux.org
- Bug Reports: GitHub Issues
- MX Linux Forum: https://forum.mxlinux.org
- Documentation: MX Linux Wiki