') + ')', 'gi'); if (regex.test(text)) { found = true; var frag = document.createDocumentFragment(); var parts = text.split(regex); parts.forEach(function(part, i) { if (i % 2 === 0) { frag.appendChild(document.createTextNode(part)); } else { var span = document.createElement('span'); span.className = 'userscript-highlight'; span.textContent = part; frag.appendChild(span); } }); node.parentNode.replaceChild(frag, node); } }); } else if (node.nodeType === 1 && node.childNodes) { // element var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT']; if (!skipTags.includes(node.tagName)) { Array.from(node.childNodes).forEach(highlight); } } } highlight(document.body); // Re-highlight on dynamic content var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1 || node.nodeType === 3) highlight(node); }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ', 'i'); if (__m === '*' || __re.test(location.href)) { // Strip utm_, fbclid, gclid, etc. from all links on page (function() { var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content', 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid', 'ref', 'ref_src', 'source', 'medium', 'campaign']; function cleanUrl(url) { try { var u = new URL(url, window.location.origin); var changed = false; trackingParams.forEach(function(p) { if (u.searchParams.has(p)) { u.searchParams.delete(p); changed = true; } }); return changed ? u.toString() : url; } catch (e) { return url; } } function cleanLinks() { document.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } cleanLinks(); var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1) { if (node.tagName === 'A') cleanLinks(); node.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + ', 'i'); if (__m === '*' || __re.test(location.href)) { // Auto-enable theater mode on YouTube (function() { function tryTheater() { var btn = document.querySelector('button[aria-label="Theater mode"], ytd-player #player button[title="Theater mode"]'); if (btn && !btn.classList.contains('activated')) { btn.click(); } } // Try immediately tryTheater(); // Try after navigation (SPA) var lastUrl = location.href; setInterval(function() { if (location.href !== lastUrl) { lastUrl = location.href; setTimeout(tryTheater, 500); } }, 1000); // Also try on player load var observer = new MutationObserver(tryTheater); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ', 'i'); if (__m === '*' || __re.test(location.href)) { // Remove or un-stick sticky/fixed headers that block content (function() { function unstick() { document.querySelectorAll('header, nav, [role="banner"], .header, .navbar, .sticky, .fixed-top, [style*="position: fixed"], [style*="position:sticky"]').forEach(function(el) { if (el.style.position === 'fixed' || el.style.position === 'sticky' || getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') { el.style.position = 'static'; el.style.top = 'auto'; el.style.zIndex = 'auto'; } }); } unstick(); var observer = new MutationObserver(unstick); observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] }); })(); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); })(); GitHub - PyCos/guppyscreen: Forked from probielodan/guppyscreen and merged 2 branch from koenpunt , furthermore improved the Guppy macros (Cooldown, Load and Quit) and extended Extrusion panel capabilites · GitHub
Skip to content

Repository files navigation

Guppy Screen for Klipper

Guppy Screen is a touch UI for Klipper using APIs exposed by Moonraker. It builds on LVGL as a standalone executable, has no dependency on any display servers such as X/Wayland.

#### Added chamber tempereture to print status page (forked from Koenpunt) and changed extruder page (temp list and speed and lenght list) 2026.03.03. PyCos

Install script pointed to current repo. 2026.03.10 build by PyCos

USE THE NIGHTLY MATERIAL INSTALL SCRIPT - TESTED 2026.03.16 on K1C @ PyCos

Installation / Update

Run the following interactive script via SSH on your K1/Max/CR-10 SE/Ender 3 V3 KE/Nebula Pad to install Guppy Screen.

Material Design Theme - fixed URL 2026.03.16

sh -c "$(wget --no-check-certificate -qO - https://raw.githubusercontent.com/PyCos/guppyscreen/refs/heads/main/scripts/installer.sh)"

Z-Bolt Theme (Only for the K1/Max) - fixed URL 2026.03.16 - NOT TESTED !

sh -c "$(wget --no-check-certificate -qO - https://raw.githubusercontent.com/PyCos/guppyscreen/refs/heads/main/scripts/installer.sh)" -s zbolt

Nightly Builds

Material (Nightly) - FIXED 2026.03.16. THIS IS LATEST VERSION - WORKING SOLUTION 2026.03.16. PyCos

sh -c "$(wget --no-check-certificate -qO - https://raw.githubusercontent.com/PyCos/guppyscreen/refs/heads/main/scripts/installer.sh)" -s nightly

Uninstall

ssh into your K1/Max and run the following command:

/usr/data/guppyscreen/reinstall-creality.sh

Features

✅ Console/Macro Shell
✅ Bedmesh
✅ Input Shaper (PSD graphs)
✅ Belt Calibration/Excitate
✅ Print Status
✅ Spoolman Integration
✅ Extrude/Retract
✅ Temperature Control
✅ Fans/LED/Move Control
✅ Fine Tune (speed, flow, z-offset, Pressure Advance)
✅ Limits (Velocity, Acel, Square Corner Velocity, etc.)
✅ File Browser
✅ Supports multiple screen resolutions
✅ Cross platform releases (MIPS/ARM/x86)
✅ TMC Metrics
✅ Multi-Printer support

Roadmap

‼️ Exclude Object
‼️ Firmware Retraction

Open for feature requests.

Documentation

You can find various Guppy Screen documents here.

Screenshot

Material Theme - ORIGINAL SCREENSHOTS - NOT UPDATED by me

Material Theme Guppy Screen

Earlier development screenshots can be found here

Video Demo

https://www.reddit.com/r/crealityk1/comments/17jp59g/new_touch_ui_for_the_k1/

Credits

Guppyscreen | Material Design Icons | Z-Bolt Icons | Moonraker | KlipperScreen | Fluidd | Klippain-shaketune

About

Forked from probielodan/guppyscreen and merged 2 branch from koenpunt , furthermore improved the Guppy macros (Cooldown, Load and Quit) and extended Extrusion panel capabilites

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages