PrintQueue is a super easy and hassle-free Linux desktop application for collecting, arranging and printing multiple documents. It supports KDE Plasma and GNOME and is designed as a Linux alternative to Print Conductor.
- Add files through drag and drop or a file dialog
- Add multiple files from the command line, Dolphin, or GNOME Files
- Reorder files and remove individual or all entries
- Select a printer, copy count, duplex mode, paper size, and orientation
- Detect printer capabilities dynamically through CUPS
- Convert office documents to PDF with LibreOffice in headless mode
- Convert images, including multi-page TIFF files, to PDF
- Merge all documents in list order and submit them as one print job
- Show progress and actionable error messages, with support for cancellation
- Forward files from additional launches to the running PrintQueue instance
| Category | Formats |
|---|---|
| Documents | |
| Microsoft Office | DOC, DOCX, XLS, XLSX, PPT, PPTX |
| OpenDocument | ODT, ODS, ODP |
| Text | TXT |
| Images | PNG, JPG, JPEG, TIFF, BMP, WebP |
- A Linux distribution with KDE Plasma or GNOME
- Python 3.10 or newer for development or source installation
- The CUPS client commands
lp,lpstat, andlpoptions - LibreOffice only when printing Office or OpenDocument files
On Ubuntu/Kubuntu, install only the missing runtime components:
command -v lp >/dev/null || sudo apt install cups-client
command -v libreoffice >/dev/null || command -v soffice >/dev/null || sudo apt install libreofficeThis does not reinstall an existing LibreOffice installation. Installations outside APT
are also recognized when libreoffice or soffice is available through PATH.
Download the latest release from https://github.com/geri777/print-queue/releases/ Install the printqueue package with:
sudo apt install ./printqueue_0.1.1_amd64.debInstall the integration package for your desktop (Right-click → Add to PrintQueue in the file manager). The integration packages are optional and can be installed or removed at any time.
# KDE Plasma / Dolphin
sudo apt install ./printqueue-dolphin_0.1.1_all.deb
# GNOME / Files (Nautilus)
sudo apt install ./printqueue-nautilus_0.1.1_all.debThe integration packages depend on the matching version of the main printqueue package.
They are intentionally separate, so installing PrintQueue on GNOME does not install
Dolphin and installing it on KDE does not install Nautilus integration.
LibreOffice is deliberately declared as Suggests, not as a hard dependency. PDFs and
images can be printed without it; PrintQueue reports the missing component only when an
office document needs to be converted.
Uninstall PrintQueue with:
sudo apt remove printqueueClone the repository and create an isolated Python environment:
git clone https://github.com/geri777/print-queue.git
cd print-queue
python3 -m venv .venv
.venv/bin/python -m pip install --upgrade pip
.venv/bin/python -m pip install -e .
.venv/bin/printqueueLaunch PrintQueue without arguments or pass multiple files directly:
printqueue
printqueue proposal.docx appendix.pdf scan.pngAdditional launches forward their files to the existing window. After a successful print submission, PrintQueue asks whether the files should be removed from the list.
Converted files exist only during print preparation in a protected subdirectory of the
system temporary directory, normally /tmp/printqueue-* on Linux. They are removed after
submission to CUPS and also after errors or cancellation.
For an installation from source, install the application entry and Dolphin service menu for the current user:
install -Dm644 resources/org.printqueue.PrintQueue.desktop \
~/.local/share/applications/org.printqueue.PrintQueue.desktop
install -Dm755 resources/dolphin/printqueue-servicemenu.desktop \
~/.local/share/kio/servicemenus/printqueue-servicemenu.desktopSupported files then provide a direct Add to PrintQueue action in Dolphin's context
menu; no intermediate PrintQueue submenu is used. Restart Dolphin if it was already
running. The Debian package installs this integration system-wide through the separate
printqueue-dolphin package.
Install the Nautilus extension for the current user:
install -Dm644 resources/nautilus/printqueue.py \
~/.local/share/nautilus-python/extensions/printqueue.py
nautilus -qThe Add to PrintQueue action appears for supported local files after GNOME Files is
started again. The printqueue-nautilus package installs the extension system-wide and
declares nautilus and python3-nautilus as its dependencies.
Install the development dependencies:
python3 -m venv .venv
.venv/bin/python -m pip install --upgrade pip
.venv/bin/python -m pip install -e '.[dev]'Run the tests and static checks:
.venv/bin/pytest -q
.venv/bin/ruff check .
.venv/bin/ruff format --check .Project layout:
src/printqueue/ Application and user interface
src/printqueue/services Conversion and printing services
tests/ Automated tests
resources/ Desktop and Dolphin integration
resources/nautilus/ GNOME Files integration
packaging/ Binary and Debian packaging scripts
The supplied script uses Nuitka with its official PySide6 integration. Install the build prerequisites on Ubuntu/Kubuntu, create a fresh virtual environment, and run the build:
sudo apt install python3-venv build-essential dpkg-dev libxkbcommon0
python3 -m venv .venv
.venv/bin/python -m pip install --upgrade pip
.venv/bin/python -m pip install -e '.[dev]'
packaging/build-binary.shThe script installs its Python-side build tools, including patchelf, inside the virtual
environment and adds that environment to PATH for the build. If this is not possible on
the target system, install the native command with sudo apt install patchelf.
The result is written to dist/printqueue.bin. The script exposes the complete Nuitka
output and stops on compilation errors. The binary includes Python, PySide6/Qt, and the
required Python libraries. CUPS and LibreOffice remain system components.
Do not move a virtual environment after creating it because its launcher scripts contain absolute paths. If the repository has moved, create a new virtual environment at the new location. A custom environment can be passed explicitly:
packaging/build-binary.sh /path/to/venv/bin/pythonCreate the main package and both optional integration packages from the standalone binary:
packaging/build-deb.sh dist/printqueue.bin 0.1.1The results are written to dist:
dist/printqueue_0.1.1_amd64.deb
dist/printqueue-dolphin_0.1.1_all.deb
dist/printqueue-nautilus_0.1.1_all.deb
Inspect and install the package:
dpkg-deb --info dist/printqueue_0.1.1_amd64.deb
dpkg-deb --contents dist/printqueue_0.1.1_amd64.deb
sudo apt install ./dist/printqueue_0.1.1_amd64.debInstall one of the optional desktop integrations afterward as shown above.
PrintQueue can be distributed as a .deb. Before publishing a GitHub release:
-
Update the version in
pyproject.tomlandsrc/printqueue/__init__.py. -
Run the complete test and Ruff suites.
-
Build on the oldest Ubuntu/Kubuntu version you intend to support. A binary built there will generally run on newer glibc versions; the reverse is not reliable.
-
Build the
.debwith the same version number. -
Test installation, launch, LibreOffice conversion, CUPS printing, and removal in a clean virtual machine.
-
Generate a checksum:
sha256sum dist/printqueue_0.1.1_amd64.deb \ > dist/printqueue_0.1.1_amd64.deb.sha256 -
Create a Git tag such as
v0.1.1and attach the main.deb, both integration packages, and their.sha256files to the GitHub release.
Build and test separate packages in reproducible CI environments for each supported CPU architecture or substantially different distribution baseline.
This project is published under GPL-3.0-or-later
This software is provided "as is" without warranty of any kind. The author is not liable for any damages or losses resulting from the use of this software. Use at your own risk.
Print Conductor is a registered trademark of fCoder Group, Inc. This project is not affiliated with or endorsed by fCoder Group, Inc.
