Skip to content

Latest commit

History

50 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

P R I N T E R G E I S T ★

LicencePythonLinux

A command-line utility built in Python (pycups) to send files directly to your USB printer on Linux — tested on Fedora 41 with the Epson L3250 (my personal printer and OS, btw), but with cross-platform dreams.

The project was born out of personal frustration: even after installing the correct drivers, communicating with my printer and actually sending print jobs was more painful than it should be. Printing documents became a bottleneck in my workflow. So I decided to build something fast, simple, and intuitive (and customizable!) to solve it once and for all — and thus, printergeist was born.

Besides just working (hopefully), it also:

  • 💅 Uses rich to make your terminal a beautiful place.
  • 🔍 Displays detailed technical info about the print job (format, color, size, status, etc.).
  • 🧠 Features custom error messages and feedback with colorful ASCII-style emojis to make the experience fun and friendly.
  • 💡 Fully hackable and extensible — feel free to play with the visuals or extend the logic.

Printergeist Software Officially Supported Models (PSOSM - Official List)


EpsonCanonDELLSamsungXeroxBrotherKyoceraRicohHPLexmark


The list above highlights a selection of representative printer models from each major brand that offer official Linux driver support. As of the latest update (2025-04-08), these models are known to be compatible with printergeist or are expected to function correctly when configured via CUPS.

This list is curated for reference and user convenience only. As a Free and Open Source Software (FOSS) project licensed under the GPLv2 License, printergeist operates independently and is not affiliated with, endorsed by, or sponsored by any of the manufacturers mentioned.

Compatibility may vary depending on the Linux distribution, driver version, and CUPS configuration. Users are encouraged to consult the official documentation of each vendor to ensure full support for advanced printing features (e.g., duplex, color modes, resolution control).

REQUIREMENTS

To run printergeist smoothly on your system, you'll need the following:

  • Python 3.9 or newer

  • Python dependencies:

    pip install pycups rich

USAGE AND INSTALLATION

Before running the project, make sure CUPS is installed:

DistributionPackage ManagerInstallation CommandEnable & Start Service
Ubuntu/Debianaptsudo apt install cupssudo systemctl enable --now cups
Fedora/RHEL/CentOSdnf or dnf5sudo dnf install cupssudo systemctl enable --now cups
Arch/Manjaropacmansudo pacman -S cupssudo systemctl enable --now cups
openSUSEzyppersudo zypper install cupssudo systemctl enable --now cups
Alpine Linuxapksudo apk add cups cups-daemonsudo rc-update add cupsd default && sudo service cupsd start
Gentooemergesudo emerge --ask net-print/cupssudo rc-update add cupsd default && sudo /etc/init.d/cupsd start
NixOSnixos-rebuildservices.printing.enable = true;sudo nixos-rebuild switch

Also make sure you have your printer drivers installed on your computer. If not, check if your printer brand is on the list below and download the available drivers for it:

BrandLinux SupportDriver Download Page
HP✅ Fully supported via HPLIP (HP Linux Imaging and Printing)developers.hp.com
Epson✅ Wide support with official .deb/.rpm packagesdownload.ebz.epson.net
Brother✅ Supports many models via Driver Install Toolsupport.brother.com
Canon⚠️ Limited support; only select modelsusa.canon.com
Lexmark✅ Offers a Universal Print Driver for Linuxsupport.lexmark.com
Samsung⚠️ Legacy support via Unified Linux Driversamsungsetup.com
Xerox✅ Provides Linux-compatible drivers and PPDssupport.xerox.com
Ricoh✅ Universal drivers for many modelssupport.ricoh.com
Kyocera✅ Good Linux support with documentationkyoceradocumentsolutions.us
Dell⚠️ Basic support for some legacy printersdell.com

After reviewing the project requirements and ensuring all dependencies are properly installed, you can proceed by cloning this repository:

git clone https://github.com/mvghasty/printergeist.git

Once the repository is cloned, navigate to the application directory and run the main script:

cd printergeist/src
python main.py

Alternatively, you can create a binary-like executable using the pgeist bash script located in the src/ directory. This allows you to run the program from anywhere as a CLI tool.

Creating the CLI Executable

1. Open the pgeist file in your preferred text editor:

emacs pgeist # or use nano, vim, code, etc.

2. Locate the following line:

PATH_PGT="path/to/main.py"

3. Replace "path/to/main.py" with the absolute or relative path to the main.py file inside the printergeist/src directory.

4. Save the file and execute it. The script will automatically handle the installation and move the executable to the /usr/local/bin directory, making it accessible system-wide as pgeist.

The source code is thoroughly documented. If you have any questions about implementation details or internal logic, please refer to the inline comments within the codebase.

About

Printergeist is a Python application based on the pycups library and enhanced with the powerful formatting capabilities of rich, designed to simplify sending files to USB-connected printers on Linux systems.

Topics

Resources

Stars

0 stars

Watchers

1 watching

Forks

Contributors

Languages