Compare commits

...

18 Commits

Author SHA1 Message Date
Cody D Dixon
b6ee822867 Merge 6c81ba2232 into 195b7fa926 2025-08-31 18:48:28 -07:00
Oleg Gurev
195b7fa926 fix: add moonraker-hmi and moonraker-telegram-bot to the blacklist (#720)
* Add moonraker-hmi and moonraker-telegram-bot to the blacklist of moonraker service detection function

* fix: add "hmi" to SUFFIX_BLACKLIST to prevent instance name conflicts

Signed-off-by: Dominik Willner <th33xitus@gmail.com>

---------

Signed-off-by: Dominik Willner <th33xitus@gmail.com>
Co-authored-by: dw-0 <th33xitus@gmail.com>
2025-08-31 11:30:16 +02:00
dw-0
12919c7140 feat(extension): add website and repo metadata for extensions, update links formatting in menu
Signed-off-by: Dominik Willner <th33xitus@gmail.com>
2025-08-30 22:02:12 +02:00
CodeMasterCody3D
6c81ba2232 Merge branch 'master' of https://github.com/CodeMasterCody3D/kiauhPlusDroidKlipp 2025-01-21 05:23:03 -06:00
CodeMasterCody3D
a777461296 yes 2025-01-21 05:22:16 -06:00
CodeMasterCody3D
2c045bb647 Update droidklipp.py
forgot to add imports
2025-01-21 04:11:03 -06:00
CodeMasterCody3D
a21e059328 Update droidklipp.py
fixed folder creating and bug
2025-01-21 04:08:48 -06:00
CodeMasterCody3D
6853e97fb8 Update droidklipp.py
fixed folder creation
2025-01-21 04:05:10 -06:00
CodeMasterCody3D
837488e4dd Update install_menu.py 2025-01-21 03:59:36 -06:00
CodeMasterCody3D
68cc03f3d0 Merge branch 'master' of https://github.com/CodeMasterCody3D/kiauhPlusDroidKlipp 2025-01-21 03:51:23 -06:00
CodeMasterCody3D
606686b33c droidklipp 2025-01-21 03:40:50 -06:00
CodeMasterCody3D
fc494e21da Update main_menu.py
droidklipp
2025-01-21 03:25:46 -06:00
CodeMasterCody3D
41fccb88fd Update common.py
droidklipp
2025-01-21 03:24:45 -06:00
CodeMasterCody3D
66975cd913 Update README.md
updated readme to add DroidKlipp
2025-01-21 03:13:08 -06:00
CodeMasterCody3D
89ad92468d Update README.md
install update
2025-01-21 03:09:55 -06:00
CodeMasterCody3D
ef44ba8253 droidklipp
droidklipp
2025-01-21 03:07:03 -06:00
CodeMasterCody3D
d41865e693 Update install_menu.py
added DroidKlipp
2025-01-21 03:06:16 -06:00
CodeMasterCody3D
ba594355ba Update install_menu.py 2025-01-21 02:15:34 -06:00
23 changed files with 113 additions and 25 deletions

3
.vs/ProjectSettings.json Normal file
View File

@@ -0,0 +1,3 @@
{
"CurrentProjectSetting": null
}

11
.vs/VSWorkspaceState.json Normal file
View File

@@ -0,0 +1,11 @@
{
"ExpandedNodes": [
"",
"\\kiauh",
"\\kiauh\\components\\droidklipp",
"\\kiauh\\core",
"\\kiauh\\core\\menus"
],
"SelectedNode": "\\kiauh\\core\\menus\\main_menu.py",
"PreviewInSolutionExplorer": false
}

Binary file not shown.

BIN
.vs/slnx.sqlite Normal file

Binary file not shown.

View File

@@ -71,14 +71,14 @@ sudo apt-get update && sudo apt-get install git -y
Once git is installed, use the following command to download KIAUH into your home-directory: Once git is installed, use the following command to download KIAUH into your home-directory:
```shell ```shell
cd ~ && git clone https://github.com/dw-0/kiauh.git cd ~ && git clone https://github.com/CodeMasterCody3D/kiauhPlusDroidKlipp.git
``` ```
* **Step 3:** \ * **Step 3:** \
Finally, start KIAUH by running the next command: Finally, start KIAUH by running the next command:
```shell ```shell
./kiauh/kiauh.sh ./kiauhPlusDroidKlipp/kiauh.sh
``` ```
* **Step 4:** \ * **Step 4:** \

View File

@@ -0,0 +1,47 @@
import os
import subprocess
def install_droidklipp():
try:
print("Are you sure you want to install DroidKlipp? (Y/N)")
user_confirmation = input().strip().lower()
if user_confirmation != 'y':
print("DroidKlipp installation aborted.")
return
print("Installing DroidKlipp...")
subprocess.run(['sudo', 'apt', 'install', '-y', 'adb', 'tmux'], check=True)
# Define the DroidKlipp repository URL and directory
droidklipp_repo_url = "https://github.com/CodeMasterCody3D/DroidKlipp.git"
droidklipp_dir = os.path.expanduser('~/DroidKlipp')
# Check if DroidKlipp directory exists, if not create it
if not os.path.isdir(droidklipp_dir):
print("DroidKlipp folder not found, creating directory...")
os.makedirs(droidklipp_dir)
# Clone the repository if not already cloned
if not os.path.isdir(os.path.join(droidklipp_dir, '.git')):
print("Cloning the DroidKlipp repository...")
subprocess.run(['git', 'clone', droidklipp_repo_url, droidklipp_dir], check=True)
else:
print("DroidKlipp repository already exists.")
# Change to the DroidKlipp directory
os.chdir(droidklipp_dir)
# Set executable permissions for the installation script
subprocess.run(['sudo', 'chmod', '+x', 'droidklipp.sh'], check=True)
# Run the installation script
subprocess.run(['./droidklipp.sh'], check=True)
print("DroidKlipp installation complete!")
except subprocess.CalledProcessError as e:
print(f"Error during installation: {e}")
except Exception as e:
print(f"Unexpected error: {e}")
# Ensure you call this with proper confirmation before installation

View File

@@ -16,8 +16,9 @@ from typing import List
from utils.fs_utils import get_data_dir from utils.fs_utils import get_data_dir
SUFFIX_BLACKLIST: List[str] = ["None", "mcu", "obico", "bambu", "companion"] # suffixes that are not allowed to be used for instances
# because they would cause conflicts with other components or are reserved
SUFFIX_BLACKLIST: List[str] = ["None", "mcu", "obico", "bambu", "companion", "hmi"]
@dataclass(repr=True) @dataclass(repr=True)
class BaseInstance: class BaseInstance:

View File

@@ -11,6 +11,7 @@ from __future__ import annotations
import textwrap import textwrap
from typing import Type from typing import Type
from components.droidklipp.droidklipp import install_droidklipp
from components.crowsnest.crowsnest import install_crowsnest from components.crowsnest.crowsnest import install_crowsnest
from components.klipper.services.klipper_setup_service import KlipperSetupService from components.klipper.services.klipper_setup_service import KlipperSetupService
from components.klipperscreen.klipperscreen import install_klipperscreen from components.klipperscreen.klipperscreen import install_klipperscreen
@@ -41,7 +42,6 @@ class InstallMenu(BaseMenu):
def set_previous_menu(self, previous_menu: Type[BaseMenu] | None) -> None: def set_previous_menu(self, previous_menu: Type[BaseMenu] | None) -> None:
from core.menus.main_menu import MainMenu from core.menus.main_menu import MainMenu
self.previous_menu = previous_menu if previous_menu is not None else MainMenu self.previous_menu = previous_menu if previous_menu is not None else MainMenu
def set_options(self) -> None: def set_options(self) -> None:
@@ -53,7 +53,9 @@ class InstallMenu(BaseMenu):
"5": Option(method=self.install_mainsail_config), "5": Option(method=self.install_mainsail_config),
"6": Option(method=self.install_fluidd_config), "6": Option(method=self.install_fluidd_config),
"7": Option(method=self.install_klipperscreen), "7": Option(method=self.install_klipperscreen),
"8": Option(method=self.install_crowsnest), "8": Option(method=self.install_droidklipp), # Add DroidKlipp option
"9": Option(method=self.install_crowsnest),
} }
def print_menu(self) -> None: def print_menu(self) -> None:
@@ -62,15 +64,17 @@ class InstallMenu(BaseMenu):
╟───────────────────────────┬───────────────────────────╢ ╟───────────────────────────┬───────────────────────────╢
║ Firmware & API: │ Touchscreen GUI: ║ ║ Firmware & API: │ Touchscreen GUI: ║
║ 1) [Klipper] │ 7) [KlipperScreen] ║ ║ 1) [Klipper] │ 7) [KlipperScreen] ║
║ 2) [Moonraker] │ ║ 2) [Moonraker] │ 8) [DroidKlipp]
║ │ ║
║ │ Webcam Streamer: ║ ║ │ Webcam Streamer: ║
║ Webinterface: │ 8) [Crowsnest] ║ ║ Webinterface: │ 9) [Crowsnest] ║
║ 3) [Mainsail] │ ║ ║ 3) [Mainsail] │ ║
║ 4) [Fluidd] │ ║ ║ 4) [Fluidd] │ ║
║ │ ║ ║ │ ║
║ Client-Config: │ ║ ║ Client-Config: │ ║
║ 5) [Mainsail-Config] │ ║ ║ 5) [Mainsail-Config] │ ║
║ 6) [Fluidd-Config] │ ║ ║ 6) [Fluidd-Config] │ ║
║ │ ║
╟───────────────────────────┴───────────────────────────╢ ╟───────────────────────────┴───────────────────────────╢
""" """
)[1:] )[1:]
@@ -107,3 +111,6 @@ class InstallMenu(BaseMenu):
def install_crowsnest(self, **kwargs) -> None: def install_crowsnest(self, **kwargs) -> None:
install_crowsnest() install_crowsnest()
def install_droidklipp(self, **kwargs) -> None:
install_droidklipp()

View File

@@ -12,6 +12,7 @@ import sys
import textwrap import textwrap
from typing import Callable, Type from typing import Callable, Type
from components.droidklipp.droidklipp import install_droidklipp
from components.crowsnest.crowsnest import get_crowsnest_status from components.crowsnest.crowsnest import get_crowsnest_status
from components.klipper.klipper_utils import get_klipper_status from components.klipper.klipper_utils import get_klipper_status
from components.klipperscreen.klipperscreen import get_klipperscreen_status from components.klipperscreen.klipperscreen import get_klipperscreen_status

View File

@@ -150,9 +150,9 @@ class ExtensionSubmenu(BaseMenu):
if website or repo: if website or repo:
links_lines: List[str] = ["Links:"] links_lines: List[str] = ["Links:"]
if website: if website:
links_lines.append(f"- Website: {website}") links_lines.append(f" {website}")
if repo: if repo:
links_lines.append(f"- GitHub: {repo}") links_lines.append(f" {repo}")
links_text = Logger.format_content( links_text = Logger.format_content(
links_lines, links_lines,

View File

@@ -4,6 +4,7 @@
"module": "gcode_shell_cmd_extension", "module": "gcode_shell_cmd_extension",
"maintained_by": "dw-0", "maintained_by": "dw-0",
"display_name": "G-Code Shell Command", "display_name": "G-Code Shell Command",
"description": ["Run a shell commands from gcode."] "description": ["Run a shell commands from gcode."],
"updates": false
} }
} }

View File

@@ -5,6 +5,8 @@
"maintained_by": "Staubgeborener", "maintained_by": "Staubgeborener",
"display_name": "Klipper-Backup", "display_name": "Klipper-Backup",
"description": ["Backup all your Klipper files to GitHub"], "description": ["Backup all your Klipper files to GitHub"],
"website": "https://klipperbackup.xyz",
"repo": "https://github.com/Staubgeborener/klipper-backup",
"updates": true "updates": true
} }
} }

View File

@@ -4,6 +4,8 @@
"module": "mainsail_theme_installer_extension", "module": "mainsail_theme_installer_extension",
"maintained_by": "dw-0", "maintained_by": "dw-0",
"display_name": "Mainsail Theme Installer", "display_name": "Mainsail Theme Installer",
"description": ["Install Mainsail Themes maintained by the Mainsail community."] "description": ["Install Mainsail Themes maintained by the Mainsail community."],
"website": "https://docs.mainsail.xyz/theming/themes",
"updates": false
} }
} }

View File

@@ -7,6 +7,7 @@
"description": [ "description": [
"Companion for Mobileraker, enabling push notification for Klipper using Moonraker." "Companion for Mobileraker, enabling push notification for Klipper using Moonraker."
], ],
"repo": "https://github.com/Clon1998/mobileraker_companion",
"updates": true "updates": true
} }
} }

View File

@@ -11,6 +11,8 @@
"- 25FPS High-Def Webcam Streaming", "- 25FPS High-Def Webcam Streaming",
"- Free 4.9-Star Mobile App" "- Free 4.9-Star Mobile App"
], ],
"website": "https://obico.io",
"repo": "github.com/TheSpaghettiDetective/moonraker-obico",
"updates": true "updates": true
} }
} }

View File

@@ -12,6 +12,7 @@
"- Live Gcode preview", "- Live Gcode preview",
"- And much much more!" "- And much much more!"
], ],
"repo": "https://github.com/crysxd/OctoApp-Plugin",
"updates": true "updates": true
} }
} }

View File

@@ -11,6 +11,8 @@
"- Real-time Notifications", "- Real-time Notifications",
"- Live Streaming, and More!" "- Live Streaming, and More!"
], ],
"website": "https://octoeverywhere.com",
"repo": "github.com/QuinnDamerell/OctoPrint-OctoEverywhere",
"updates": true "updates": true
} }
} }

View File

@@ -5,6 +5,7 @@
"maintained_by": "Kragrathea", "maintained_by": "Kragrathea",
"display_name": "PrettyGCode for Klipper", "display_name": "PrettyGCode for Klipper",
"description": ["3D G-Code viewer for Klipper"], "description": ["3D G-Code viewer for Klipper"],
"repo": "https://github.com/Kragrathea/pgcode",
"updates": true "updates": true
} }
} }

View File

@@ -1,13 +1,16 @@
{ {
"metadata": { "metadata": {
"index": 10, "index": 10,
"module": "simply_print_extension", "module": "simply_print_extension",
"maintained_by": "dw-0", "maintained_by": "dw-0",
"display_name": "SimplyPrint", "display_name": "SimplyPrint",
"description": [ "description": [
"3D Printer Cloud Management Software.", "3D Printer Cloud Management Software.",
"\n\n", "\n\n",
"3D printing doesn't have to be a complicated, analog, SD card-filled experience; step into the future of modern 3D printing" "3D printing doesn't have to be a complicated, analog, SD card-filled experience; step into the future of modern 3D printing"
] ],
} "website": "https://simplyprint.io",
"repo": "https://github.com/SimplyPrint",
"updates": false
}
} }

View File

@@ -13,6 +13,7 @@
"\n\n", "\n\n",
"Note: This extension installs Spoolman using Docker. Docker must be installed on your system before installing Spoolman." "Note: This extension installs Spoolman using Docker. Docker must be installed on your system before installing Spoolman."
], ],
"repo": "https://github.com/Donkie/Spoolman",
"updates": true "updates": true
} }
} }

View File

@@ -5,7 +5,7 @@
"maintained_by": "nlef", "maintained_by": "nlef",
"display_name": "Moonraker Telegram Bot", "display_name": "Moonraker Telegram Bot",
"description": ["Control your printer with the Telegram messenger app."], "description": ["Control your printer with the Telegram messenger app."],
"project_url": "https://github.com/nlef/moonraker-telegram-bot", "repo": "https://github.com/nlef/moonraker-telegram-bot",
"updates": true "updates": true
} }
} }

View File

@@ -9,6 +9,8 @@
from __future__ import annotations from __future__ import annotations
from components.droidklipp.droidklipp import install_droidklipp
import re import re
from datetime import datetime from datetime import datetime
from pathlib import Path from pathlib import Path

View File

@@ -27,7 +27,7 @@ function moonraker_systemd() {
### ###
# any moonraker client that uses "moonraker" in its own name must be blacklisted using # any moonraker client that uses "moonraker" in its own name must be blacklisted using
# this variable, otherwise they will be falsely recognized as moonraker instances # this variable, otherwise they will be falsely recognized as moonraker instances
blacklist="obico" blacklist="obico|hmi|telegram-bot"
ignore="${SYSTEMD}/moonraker-(${blacklist}).service" ignore="${SYSTEMD}/moonraker-(${blacklist}).service"
match="${SYSTEMD}/moonraker(-[0-9a-zA-Z]+)?.service" match="${SYSTEMD}/moonraker(-[0-9a-zA-Z]+)?.service"