{"id":49881118,"url":"https://github.com/grassleaff/printergeist","last_synced_at":"2026-05-15T14:14:03.285Z","repository":{"id":286896065,"uuid":"962913057","full_name":"grassleaff/printergeist","owner":"grassleaff","description":"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.","archived":false,"fork":false,"pushed_at":"2025-12-03T12:19:09.000Z","size":112,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2026-02-20T06:48:59.033Z","etag":null,"topics":["cups","cups-server","driver","drivers","printer-driver","printers","pycups","python-3","python3"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/grassleaff.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-04-08T21:40:22.000Z","updated_at":"2025-12-03T12:19:13.000Z","dependencies_parsed_at":"2025-07-13T21:33:39.534Z","dependency_job_id":"9b1c8226-b260-41fc-8dc7-6116ba1b1598","html_url":"https://github.com/grassleaff/printergeist","commit_stats":null,"previous_names":["mvghasty/smoly","mvghasty/printergeist","mvguest/printergeist","fasmvg/printergeist","letterfenceglasses/printergeist","exzygo/printergeist","nothingburguer/printergeist","grassleaff/printergeist"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/grassleaff/printergeist","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/grassleaff%2Fprintergeist","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/grassleaff%2Fprintergeist/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/grassleaff%2Fprintergeist/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/grassleaff%2Fprintergeist/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/grassleaff","download_url":"https://codeload.github.com/grassleaff/printergeist/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/grassleaff%2Fprintergeist/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33069040,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-15T11:35:32.926Z","status":"ssl_error","status_checked_at":"2026-05-15T11:35:31.362Z","response_time":103,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["cups","cups-server","driver","drivers","printer-driver","printers","pycups","python-3","python3"],"created_at":"2026-05-15T14:14:02.475Z","updated_at":"2026-05-15T14:14:03.280Z","avatar_url":"https://github.com/grassleaff.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# P R I N T E R G E I S T ★ \n[![Licence](https://img.shields.io/github/license/Ileriayo/markdown-badges?style=for-the-badge)](./LICENSE) ![Python](https://img.shields.io/badge/python-3670A0?style=for-the-badge\u0026logo=python\u0026logoColor=ffdd54) ![Linux](https://img.shields.io/badge/Linux-FCC624?style=for-the-badge\u0026logo=linux\u0026logoColor=black) \n\nA 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.\n\nThe 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.\n\nBesides just working (hopefully), it also:\n- 💅 Uses `rich` to make your terminal a beautiful place.\n- 🔍 Displays detailed technical info about the print job (format, color, size, status, etc.).\n- 🧠 Features custom error messages and feedback with colorful **ASCII-style emojis** to make the experience fun and friendly.\n- 💡 Fully hackable and extensible — feel free to play with the visuals or extend the logic.\n\n\n### Printergeist Software Officially Supported Models (PSOSM - Official List)\n\u003cbr\u003e\n\n![Epson](https://img.shields.io/badge/Epson-ECOTANK/WORKFORCE/EXPRESSION-003d99?style=for-the-badge\u0026logo=epson\u0026logoColor=white) ![Canon](https://img.shields.io/badge/Canon-Pixma/imageCLASS/SELPHY-ffffff?style=for-the-badge\u0026logo=canon\u0026logoColor=red) ![DELL](https://img.shields.io/badge/dell-COLOR/C—Series/B—Series-007DB8?style=for-the-badge\u0026logo=dell\u0026logoColor=white) ![Samsung](https://img.shields.io/badge/samsung-Xpress/ProXpress/CLP—Series-1428A0?style=for-the-badge\u0026logo=Samsung\u0026logoColor=white) ![Xerox](https://img.shields.io/badge/Xerox-VersaLink/Phaser/WorkCentre-d51631?style=for-the-badge\u0026logo=xerox\u0026logoColor=white) ![Brother](https://img.shields.io/badge/Brother-MFC—Series/DCP—Series-1535a3?style=for-the-badge\u0026logo=Brother\u0026logoColor=white) ![Kyocera](https://img.shields.io/badge/Kyocera-ECOSYS/TASKalfa-e42136?style=for-the-badge\u0026logo=kyocera\u0026logoColor=white) ![Ricoh](https://img.shields.io/badge/Ricoh-P—Series/SP—Series-727375?style=for-the-badge\u0026logo=lexmark\u0026logoColor=white) ![HP](https://img.shields.io/badge/hp-OfficeJet-0096D6?style=for-the-badge\u0026logo=hp\u0026logoColor=white) ![Lexmark](https://img.shields.io/badge/Lexmark-M—Series-08c62c?style=for-the-badge\u0026logo=lexmark\u0026logoColor=white) \n\n\u003cbr\u003e\n\nThe 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.\n\nThis 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.\n\nCompatibility 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).\n\n## REQUIREMENTS\n\nTo run **printergeist** smoothly on your system, you'll need the following:\n\n- Python 3.9 or newer  \n- Python dependencies:\n\n  ```bash\n  pip install pycups rich\n  ```\n\n\u003cbr\u003e\n\n## USAGE AND INSTALLATION\n\nBefore running the project, make sure CUPS is installed:\n\n| Distribution         | Package Manager        | Installation Command                     | Enable \u0026 Start Service                                      |\n|----------------------|------------------------|------------------------------------------|-------------------------------------------------------------|\n| **Ubuntu/Debian**    | `apt`                  | `sudo apt install cups`                 | `sudo systemctl enable --now cups`                          |\n| **Fedora/RHEL/CentOS** | `dnf` or `dnf5`      | `sudo dnf install cups`                 | `sudo systemctl enable --now cups`                          |\n| **Arch/Manjaro**     | `pacman`               | `sudo pacman -S cups`                   | `sudo systemctl enable --now cups`                          |\n| **openSUSE**         | `zypper`               | `sudo zypper install cups`              | `sudo systemctl enable --now cups`                          |\n| **Alpine Linux**     | `apk`                  | `sudo apk add cups cups-daemon`         | `sudo rc-update add cupsd default \u0026\u0026 sudo service cupsd start` |\n| **Gentoo**           | `emerge`               | `sudo emerge --ask net-print/cups`      | `sudo rc-update add cupsd default \u0026\u0026 sudo /etc/init.d/cupsd start` |\n| **NixOS**            | `nixos-rebuild`        | `services.printing.enable = true;`      | `sudo nixos-rebuild switch` | \n\n\nAlso 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:\n\n\n| Brand     | Linux Support | Driver Download Page |\n|-----------|----------------|-----------------------|\n| **HP**    | ✅ Fully supported via **HPLIP** (HP Linux Imaging and Printing) | [developers.hp.com](https://developers.hp.com/hp-linux-imaging-and-printing) |\n| **Epson** | ✅ Wide support with official `.deb`/`.rpm` packages | [download.ebz.epson.net](https://download.ebz.epson.net/dsc/search/01/search/?OSC=LX) |\n| **Brother** | ✅ Supports many models via **Driver Install Tool** | [support.brother.com](https://support.brother.com/g/b/faqend.aspx?c=us\u0026faqid=faq00100556_000\u0026lang=en) |\n| **Canon** | ⚠️ Limited support; only select models | [usa.canon.com](https://www.usa.canon.com/support/software-and-drivers) |\n| **Lexmark** | ✅ Offers a **Universal Print Driver** for Linux | [support.lexmark.com](https://support.lexmark.com/en_us/drivers-downloads.html) |\n| **Samsung** | ⚠️ Legacy support via Unified Linux Driver | [samsungsetup.com](https://www.samsungsetup.com/ts/client/en/install.html) |\n| **Xerox** | ✅ Provides Linux-compatible drivers and PPDs | [support.xerox.com](https://www.support.xerox.com/en-ca/content/111461) |\n| **Ricoh** | ✅ Universal drivers for many models | [support.ricoh.com](https://support.ricoh.com/bb/html/dr_ut_e/rc3/model/p_i/p_i.htm?lang=en) |\n| **Kyocera** | ✅ Good Linux support with documentation | [kyoceradocumentsolutions.us](https://www.kyoceradocumentsolutions.us/en/support/downloads.html) |\n| **Dell** | ⚠️ Basic support for some legacy printers | [dell.com](https://www.dell.com/support/home/en-us?app=drivers) |\n\n\nAfter reviewing the project requirements and ensuring all dependencies are properly installed, you can proceed by cloning this repository:\n\n\n```shell\ngit clone https://github.com/mvghasty/printergeist.git\n```\n\n\nOnce the repository is cloned, navigate to the application directory and run the main script:\n\n\n```shell\ncd printergeist/src\npython main.py\n```\n\n\nAlternatively, 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.\n\n### Creating the CLI Executable\n\n  **1.** Open the ``pgeist`` file in your preferred text editor:\n\n  ```shell\n  emacs pgeist  # or use nano, vim, code, etc.\n  ```\n\n  **2.** Locate the following line:\n\n  ```shell\n  PATH_PGT=\"path/to/main.py\"\n  ```\n\n  **3.** Replace ``\"path/to/main.py\"`` with the absolute or relative path to the main.py file inside the ``printergeist/src`` directory.\n\n  **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``.\n\nThe 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.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgrassleaff%2Fprintergeist","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fgrassleaff%2Fprintergeist","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgrassleaff%2Fprintergeist/lists"}