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 10+ or Clang 10+)
- CMake 3.16+ or qmake6
Ubuntu/Debian:
sudo apt install qt6-base-dev qt6-tools-dev cmake build-essential
Fedora:
sudo dnf install qt6-qtbase-devel qt6-qttools-devel cmake gcc-c++
git clone https://github.com/MX-Linux/custom-toolbox.git
cd custom-toolbox
cmake -B build -DCMAKE_BUILD_TYPE=Release
cmake --build build -j$(nproc)
sudo cmake --install build
git clone https://github.com/MX-Linux/custom-toolbox.git
cd custom-toolbox
qmake6
make -j$(nproc)
sudo make install
- Use Clang:
cmake -B build -DUSE_CLANG=ON
- Debug Build:
cmake -B build -DCMAKE_BUILD_TYPE=Debug
- 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
├── custom-toolbox.pro # qmake build configuration
├── custom-toolbox.conf # Default configuration
├── example.list # Example launcher configuration
└── README.md # This file
- Language: C++20 with strict compiler warnings
- Framework: Qt6 (Core, Gui, Widgets)
- Build Systems: CMake (preferred) and qmake
- Compiler Flags: Pedantic warnings, treat warnings as errors
- Style: Follow existing code conventions
- Fork the repository
- Create a feature branch
- Make your changes following the code standards
- Test with both CMake and qmake builds
- Submit a pull request
# Test CMake build
cmake -B build && cmake --build build
./build/custom-toolbox
# Test qmake build
qmake6 && make
./custom-toolbox
# Clean builds
make clean # for qmake
rm -rf build # for cmake
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