From b8f728f4ee50b667d4685d36ad12e53b07c490ff Mon Sep 17 00:00:00 2001 From: xgui4 <134389196+xgui4@users.noreply.github.com> Date: Thu, 12 Mar 2026 19:13:03 -0400 Subject: [PATCH] Add initial implementation of Minecraft LCE QT Launcher - Added assets including Minecraft icon and styles for the UI. - Created a Code of Conduct to promote inclusivity and respect within the community. - Implemented app configuration management with `app_config.py` and `config.py`. - Developed instance management functionality in `instance_manager.py`. - Introduced a downloader class for handling client downloads in `downloader.py`. - Designed the main UI layout using Qt Designer in `form.ui`. - Established the main application logic in `launcher.py`, including command-line argument handling. - Added system management capabilities to detect the operating system in `system_manager.py`. --- .github/workflows/nightly.yml | 58 +++++ .gitignore | 5 +- .vscode/launch.json | 15 ++ .vscode/tasks.json | 12 ++ CODE-DE-CONDUITE.md | 45 ++++ assets/Launcher_medium.png | Bin 0 -> 29266 bytes assets/Launcher_small.png | Bin 0 -> 14003 bytes assets/button-pressed.png | Bin 0 -> 4017 bytes assets/button.png | Bin 0 -> 2796 bytes assets/minecraft-lce-title.png | Bin 0 -> 41317 bytes assets/minecraft.png | Bin 0 -> 1766 bytes assets/styles/minecraft.qss | 18 ++ code-of-conduct.md | 45 ++++ form.ui | 239 --------------------- pyproject.toml | 18 +- readme.md | 20 ++ res.qrc | 13 +- setup.bat | 3 - setup.sh | 5 - src/app_config.py | 36 ++++ config.py => src/config.py | 7 +- src/downloader.py | 25 +++ src/form.ui | 376 +++++++++++++++++++++++++++++++++ src/instance_manager.py | 30 +++ launcher.py => src/launcher.py | 56 ++--- src/system_manager.py | 26 +++ 26 files changed, 748 insertions(+), 304 deletions(-) create mode 100644 .github/workflows/nightly.yml create mode 100644 .vscode/launch.json create mode 100644 .vscode/tasks.json create mode 100644 CODE-DE-CONDUITE.md create mode 100644 assets/Launcher_medium.png create mode 100644 assets/Launcher_small.png create mode 100644 assets/button-pressed.png create mode 100644 assets/button.png create mode 100644 assets/minecraft-lce-title.png create mode 100644 assets/minecraft.png create mode 100644 assets/styles/minecraft.qss create mode 100644 code-of-conduct.md delete mode 100644 form.ui delete mode 100644 setup.bat delete mode 100755 setup.sh create mode 100644 src/app_config.py rename config.py => src/config.py (98%) create mode 100644 src/downloader.py create mode 100644 src/form.ui create mode 100644 src/instance_manager.py rename launcher.py => src/launcher.py (60%) create mode 100644 src/system_manager.py diff --git a/.github/workflows/nightly.yml b/.github/workflows/nightly.yml new file mode 100644 index 0000000..058da65 --- /dev/null +++ b/.github/workflows/nightly.yml @@ -0,0 +1,58 @@ +name: Build and Deploy Nightly + +on: + push: + branches: + - master + +jobs: + nightly: + name: Build Nightly + strategy: + fail-fast: false + matrix: + os: [ubuntu-latest, windows-latest] + + runs-on: ${{ matrix.os }} + + steps: + - name: Checkout repository + uses: actions/checkout@v4 + + - name: Set up Python + uses: actions/setup-python@v5 + with: + python-version: "3.x" + + - name: Install dependencies + run: | + python -m pip install --upgrade pip + pip install -r requirements.txt + pip install nuitka + + - name: Build with Nuitka + run: | + python -m nuitka --onefile --standalone --enable-plugin=pyside6 --output-dir=dist src/launcher.py + + - name: Package Windows build + if: matrix.os == 'windows-latest' + run: | + powershell Compress-Archive -Path dist/* -DestinationPath LCE-WQt-Launcher-Windows.zip + + - name: Package Linux build + if: matrix.os == 'ubuntu-latest' + run: | + tar -czf LCE-WQt-Launcher-Linux.tar.gz dist/* + + - name: Upload Nightly + uses: andelf/nightly-release@main + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + with: + tag_name: nightly + name: Nightly Release + body: | + Experimental nightly builds for Windows and Linux. + files: | + *.zip + *.tar.gz \ No newline at end of file diff --git a/.gitignore b/.gitignore index 7dd4336..fc24fc1 100644 --- a/.gitignore +++ b/.gitignore @@ -30,7 +30,6 @@ .qmake.cache .qmake.stash .qmlls.ini -.vscode .axivion Makefile* Thumbs.db @@ -288,7 +287,7 @@ tmp/ /*-debug/ /*-release/ /out/ -rc_res.py -ui_form.py +**/res_rc.py +**/ui_form.py MinecraftLCEClient/ diff --git a/.vscode/launch.json b/.vscode/launch.json new file mode 100644 index 0000000..8881901 --- /dev/null +++ b/.vscode/launch.json @@ -0,0 +1,15 @@ +{ + // Use IntelliSense to learn about possible attributes. + // Hover to view descriptions of existing attributes. + // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387 + "version": "0.2.0", + "configurations": [ + { + "name": "PySide: Launch", + "type": "debugpy", + "request": "launch", + "program": "${workspaceFolder}/src/launcher.py", + "preLaunchTask": "PySide: build" + } + ] +} \ No newline at end of file diff --git a/.vscode/tasks.json b/.vscode/tasks.json new file mode 100644 index 0000000..1e6760c --- /dev/null +++ b/.vscode/tasks.json @@ -0,0 +1,12 @@ +{ + "version": "2.0.0", + "tasks": [ + { + "label": "PySide: build", + "type": "shell", + "command": "/usr/lib/qt6/uic -g python ${workspaceFolder}/src/form.ui -o ${workspaceFolder}/src/ui_form.py && /usr/lib/qt6/rcc -g python ${workspaceFolder}/res.qrc -o ${workspaceFolder}/src/res_rc.py", + "group": "build", + "problemMatcher": [] + } + ] +} diff --git a/CODE-DE-CONDUITE.md b/CODE-DE-CONDUITE.md new file mode 100644 index 0000000..998e18b --- /dev/null +++ b/CODE-DE-CONDUITE.md @@ -0,0 +1,45 @@ +# Code du respect + +## Ce document contient des renseignements importants concernant les règles du projet + +## Objectifs + +- Développement de logiciels +- Excellence technique (pas de débats politiques ni d'activisme) +- Accueil pour tous +- Contribution positive technique +- Respecter les consignes +- Accepter la diversité naturel (y compris la neurodiversité et les handicaps) +- Traiter les autres avec respect et professionnalisme +- Le contenu NSFW est interdit (sauf autorisation). + +## Inclusivité et professionnalisme + +Vous êtes bienvenue ici + +Cela signifie que vous êtes invités à contribuer et à faire partie de la communauté, peu importe votre identité, votre sexe/genre, votre origine ethnique, votre religion, votre handicap, votre neurodiversité, votre milieu, vos convictions personnelles ou vos opinions politiques. + +## Objectif + +Ce projet suit la philosophie des logiciels et les logiciels libres et open source (FLOSS). + +Les contributions doivent privilégier le code, la qualité et la collaboration avant tout. + +## Comportements inacceptables + +Le harcèlement, l'intimidation, la discrimination (y compris le capacitisme, l'homophobie et l'hétérophobie, le sexisme, quel qu'il soit) et les propos violents ne seront pas tolérés. + +Tout comportement perturbateur ou irrespectueux pourrait entraîner l'exclusion du projet. + +## Application des règles + +Nous n'avons pas d'équipe chargée d'appliquer les règles (et nous n'en voulons pas). + +Vous pouvez signaler un problème sur le système de suivi des problèmes du projet. + +Créons des logiciels ensemble ! + +Le Code de respect s'inspire du << No Code Of Conduct >> + +Dernières modifications : 16 novembre 2025 +Version Française : 15 Janvier 2026 diff --git a/assets/Launcher_medium.png b/assets/Launcher_medium.png new file mode 100644 index 0000000000000000000000000000000000000000..5ccfcfe12facc986b0ee43884aad6c823bec236f GIT binary patch literal 29266 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 Z{|8ML1ry44vQ+>8002ovPDHLkV1k1y(oz5b literal 0 HcmV?d00001 diff --git a/assets/button-pressed.png b/assets/button-pressed.png new file mode 100644 index 0000000000000000000000000000000000000000..bcd15d54de2ad5e8e1e6f40707e7b69f68304a05 GIT binary patch literal 4017 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 - - launcher - - - - 0 - 0 - 800 - 600 - - - - Minecraft LCE QT Launcher - - - - :/assets/assets/Launcher.png:/assets/assets/Launcher.png - - - false - - - - - Adwaita Sans - - - - false - - - - - 30 - 30 - 751 - 337 - - - - - - - - - - - - :/assets/assets/Launcher.png - - - - - - - - 50 - 50 - - - - - Adwaita Sans - 31 - - - - LCE QT Launcher - - - - - - - - - Play - - - - - - - - - - - 0 - 0 - 800 - 22 - - - - - File - - - - - - - Help - - - - - - - - Instances - - - - - - Profiles - - - - - - Plugins - - - - - - News - - - - - - Settings - - - - - - - - - - - - - - - - - Quit - - - Quit the app - - - QAction::MenuRole::QuitRole - - - - - - - - Update - - - Update The App - - - QAction::MenuRole::ApplicationSpecificRole - - - - - - - - About - - - QAction::MenuRole::AboutRole - - - - - - - - About Qt - - - QAction::MenuRole::AboutQtRole - - - - - - - - System Information - - - QAction::MenuRole::ApplicationSpecificRole - - - - - Coming Soon - - - - - Coming Soon - - - - - Coming soon - - - - - Coming soon - - - - - Coming Soon - - - - - - - - diff --git a/pyproject.toml b/pyproject.toml index 9a9e279..62588ea 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,16 +1,22 @@ [project] name = "LCE-Qt-Launcher" +version = "0.0.0" +description = "This is a custom MCLCE Launcher written in python and Qt with Freedom and GNU/Linux support in mind." [tool.pyside6-project] files = [ - "config.py", - "form.ui", - "launcher.py", - "license.md", + "src/app_config.py", + "src/config.py", + "src/downloader.py", + "src/instance_manager.py", + "src/launcher.py", + "src/system_manager.py", + "src/form.ui", "pkg/LCE-Qt-Launcher.desktop", + "license.md", "readme.md", "requirements.txt", "res.qrc", - "setup.bat", - "setup.sh", + "CODE-DE-CONDUITE.md", + "code-of-conduct.md" ] diff --git a/readme.md b/readme.md index 2468f79..419d2f7 100644 --- a/readme.md +++ b/readme.md @@ -6,5 +6,25 @@ This is a custom MCLCE Launcher written in python and Qt with Freedom and GNU/Linux support in mind. +## Software Requirement + +- Pythom 3.10 and later +- PySide6 and its tool +- [Monocraft Font](https://github.com/IdreesInc/Monocraft) installed +- A display server or compositor (for Unix like system, MacOS and Windows use their own proprietary one) + + +## Compatible Operating System + +- Windows 10 and later (not tested yet) +- GNU/Linux +- MacOS (not officially supported, since I cannot test it, but should work with POISX compatibility) +- Android (not tested yet) + +## Code of Respect + +- [English](code-of-respect.md) +- [French](CODE-DE-CONDUITE.md) + ## License [GPLV3](license.md) diff --git a/res.qrc b/res.qrc index 918e865..709d259 100644 --- a/res.qrc +++ b/res.qrc @@ -1,6 +1,15 @@ - assets/Launcher.png - assets/background.png + assets/Launcher_small.png + assets/background.png + assets/Launcher_medium.png + assets/Launcher.png + assets/minecraft.png + assets/minecraft-lce-title.png + assets/button.png + assets/button-pressed.png + + + assets/styles/minecraft.qss diff --git a/setup.bat b/setup.bat deleted file mode 100644 index 3ebeadf..0000000 --- a/setup.bat +++ /dev/null @@ -1,3 +0,0 @@ -pyside6-uic form.ui -o ui_form.py - -python -m pip install -r requirement.txt diff --git a/setup.sh b/setup.sh deleted file mode 100755 index 76efc6f..0000000 --- a/setup.sh +++ /dev/null @@ -1,5 +0,0 @@ -#!/usr/bin/sh - -pyside6-uic form.ui -o ui_form.py - -python -m pip install -r requirement.txt diff --git a/src/app_config.py b/src/app_config.py new file mode 100644 index 0000000..cd30e32 --- /dev/null +++ b/src/app_config.py @@ -0,0 +1,36 @@ +from PySide6.QtCore import qVersion + +import subprocess + +from system_manager import SystemManager + +GITHUB_RELEASE_STR = "/releases/download/" + +LAUNCHER_REPO = "https://github.com/xgui4/LCE_QT_Launcher" + + +#LAUNCHER_STRING : str = config.get__instance_url() + \ +# GITHUB_RELEASE_STR + \ +# config.get_instance_version() + "/" + \ +# config.get_instance_archive() + +def get_git_branch(): + try: + return subprocess.run( + ["git", "rev-parse", "--aabbrev-ref", "HEAD"], + capture_output=True, + text=True, + check=True + ) + except: + print("Not a developpement version") + return "" + + +class AppConfig: + def __init__(self): + self.version : str = get_git_branch(), + self.name : str = "Minecraft LCE QT Launcher", + self.version_type : str = "pre-alpha", + self.qt_version : str = qVersion(), + self.system_manager : SystemManager = SystemManager() diff --git a/config.py b/src/config.py similarity index 98% rename from config.py rename to src/config.py index c0b3a9e..5323178 100644 --- a/config.py +++ b/src/config.py @@ -2,12 +2,11 @@ from PySide6.QtCore import QSettings class Config (QSettings): def __init__(self): - super().__init__(QSettings.NativeFormat, QSettings.UserScope, "Xgui4", "LCE QT Laucher") + super().__init__(QSettings.NativeFormat, QSettings.UserScope, "Xgui4", "LCE-QT-Laucher") def set_instance_url(self, url_str : str): super().setValue("instances/repo", url_str) super().sync() - def set_instance_exe_name(self, filename : str): super().setValue("instances/filename", filename) super().sync() @@ -34,16 +33,12 @@ class Config (QSettings): def get__instance_url(self) -> str: return self.value("instances/repo", "https://github.com/smartcmd/MinecraftConsoles"); - def get_instance_name(self) -> str: return self.value("instances/name", "default") - def get_instance_exe_name(self) -> str: return self.value("instances/filename", "Minecraft.Client.exe") - def get_instance_archive(self) -> str: return self.value("instances/archive", "LCEWindows64.zip") - def get_instance_version(self) -> str: return self.value("instances/version", "default") diff --git a/src/downloader.py b/src/downloader.py new file mode 100644 index 0000000..4161c1b --- /dev/null +++ b/src/downloader.py @@ -0,0 +1,25 @@ +from instance_manager import Instance + +import requests +import zipfile +import io + +SUCCESS_STATUS_CODE = 200 + +class Downloader: + def __init__(self, instance : Instance): + self.instance: Instance = instance + + def download_client(self): + response = requests.get(self.instance) + + if response.status_code == SUCCESS_STATUS_CODE: + try: + with zipfile.ZipFile(io.BytesIO(response.content)) as archive: + archive.extractall(self.installation_path) + except zipfile.BadZipFile as err: + print(f"Error : {err} while extracting {archive.filename}") + except zipfile.zipfile.LargeZipFile as err: + print(f"Error : {archive.filename} was too big.") + else: + print(f"Error : {response.status_code} during the dowbloading of the Minecraft LCE Client") \ No newline at end of file diff --git a/src/form.ui b/src/form.ui new file mode 100644 index 0000000..4713610 --- /dev/null +++ b/src/form.ui @@ -0,0 +1,376 @@ + + + launcher + + + + 0 + 0 + 800 + 600 + + + + + Adwaita Sans + + + + Minecraft LCE QT Launcher + + + + :/assets/launcher_small.png:/assets/launcher_small.png + + + false + + + + + Adwaita Sans + + + + false + + + + + 10 + 100 + 781 + 381 + + + + + + + + 0 + 86 + + + + Username + + + + + + + + + + Path + + + + + + + + + + Server IP + + + + + + + + + + Server Name + + + + + + + + + + Play + + + + + + + Install + + + + + + + Setting + + + + + + + + + 30 + 520 + 751 + 23 + + + + Installation Progress Bar + + + The percentage of the installation + + + install progress bar + + + 0 + + + false + + + + + + 30 + 500 + 131 + 17 + + + + Progress + + + + + + 160 + 0 + 461 + 101 + + + + + 50 + 50 + + + + + Adwaita Sans + 31 + + + + + + + :/assets/minecraft_lce_titl;e.png + + + + + + + + 0 + 0 + 800 + 27 + + + + + File + + + + + + + + + Help + + + + + + + + + + Instances + + + + + + Plugins + + + + + + News + + + + + + View + + + + + + + + + + + + + + + Quit + + + Quit the app + + + QAction::MenuRole::QuitRole + + + + + + + + Update + + + Update The App + + + QAction::MenuRole::ApplicationSpecificRole + + + + + + + + About + + + QAction::MenuRole::AboutRole + + + + + + + + About Qt + + + QAction::MenuRole::AboutQtRole + + + + + + + + System Information + + + QAction::MenuRole::ApplicationSpecificRole + + + + + Coming Soon + + + + + Coming Soon + + + + + Coming soon + + + + + Coming soon + + + + + Coming Soon + + + + + Default + + + + + + :/assets/minecraft.png + + + + About Minecraft + + + + + + + + More Minecraft LCE Projects + + + + + Save Instance + + + + + Create New Instance + + + + + usernameInputBox + pathInputBox + serverIPInputBox + serverNameInputBox + playButton + installButton + settingButton + + + + + + + diff --git a/src/instance_manager.py b/src/instance_manager.py new file mode 100644 index 0000000..2a3eea0 --- /dev/null +++ b/src/instance_manager.py @@ -0,0 +1,30 @@ +from enum import Enum + +class InstanceType(Enum): + GITHUB_RELEASE = 0 + GITHUB_SOURCE = 1 + LOCAL_NO_INSTALL = 2 + +class Instance: + def __init__(self, + name : str, + installation_path : str, + exe_name : str, + url : str, + instance_type : InstanceType, + version : str, + skin_path : str, + servers : list + ): + self.name = name + self.installation_path = installation_path + self.exe_name = exe_name + self.url = url + self.instance_type = instance_type + self.version = version + self.skin_path = skin_path + self.servers = servers + +class InstanceManager: + def __init__(self): + pass diff --git a/launcher.py b/src/launcher.py similarity index 60% rename from launcher.py rename to src/launcher.py index 84ee487..3498f25 100755 --- a/launcher.py +++ b/src/launcher.py @@ -2,29 +2,23 @@ import sys -from PySide6.QtWidgets import QApplication, QMainWindow +from PySide6.QtWidgets import QApplication, QMainWindow, QLabel from PySide6.QtGui import QPalette, QPixmap, QBrush from config import Config +from app_config import AppConfig import webbrowser -import requests -import zipfile -import io -import subprocess config = Config() -LAUNCHER_REPO = "https://github.com/xgui4/LCE_QT_Launcher" +appConfig = AppConfig() + -LAUNCHER_STRING = config.get__instance_url() + \ - "/releases/download/" + \ - config.get_instance_version() + "/" + \ - config.get_instance_archive() SUCCESS_STATUS_CODE = 200 -BACKGROUND_PIXMAP_IMG = ":/assets/assets/background.png" +BACKGROUND_PIXMAP_IMG = ":/assets/background.png" GEN_CONFIG_CMD_ARG = "--gen-config" GEN_CONFIG_CMD_ARG_SHORT = "-g" @@ -53,35 +47,11 @@ HELP_STR = """ """ def launch(): - config = Config() - print(f"Lauching {config.get_instance_name()} {config.get_instance_version()}") - - print(f"Downloading {LAUNCHER_STRING}.") - - response = requests.get(LAUNCHER_STRING) - - if response.status_code == SUCCESS_STATUS_CODE: - try: - with zipfile.ZipFile(io.BytesIO(response.content)) as archive: - archive.extractall("./MinecraftLCEClient") - except zipfile.BadZipFile as err: - print(f"Error : {err}") - except zipfile.zipfile.LargeZipFile as err: - print(f"Error : {err}") - else: - client = f"./MinecraftLCEClient/{config.get_instance_exe_name}" - print(f"Launching {client}") - subprocess.run(client) - else: - print(f"Error : {response.status_code} during the dowbloading of the Minecraft LCE Client") + print("not implemented yet!") def update_page(): - webbrowser.open_new_tab(LAUNCHER_REPO) + webbrowser.open_new_tab(config.LAUNCHER_REPO) -# Important: -# You need to run the following command to generate the ui_form.py file -# pyside6-uic form.ui -o ui_form.py, or -# pyside2-uic form.ui -o ui_form.py from ui_form import Ui_launcher class launcher(QMainWindow): @@ -97,13 +67,12 @@ class launcher(QMainWindow): self.ui = Ui_launcher() self.ui.setupUi(self) - self.ui.actionQuit.triggered.connect(app.quit) self.ui.playButton.clicked.connect(launch) - self.ui.actionUpdate.triggered.connect(update_page) - self.ui.actionAbout.triggered.connect(self.createPopupMenu) + self.versionlabel = QLabel(f"Version {VERSION}") + self.ui.statusbar.addPermanentWidget(self.versionlabel) if __name__ == "__main__": if len(sys.argv) > 1: @@ -120,6 +89,13 @@ if __name__ == "__main__": print(HELP_STR) else: app = QApplication(sys.argv) + + try: + with open("assets/styles/minecraft.qss", "r") as file: + app.setStyleSheet(file.read()) + except FileNotFoundError: + print(f"Error : qrc:/styles/minecraft.qss file not found. Reverting to default theme") + widget = launcher() widget.show() sys.exit(app.exec()) diff --git a/src/system_manager.py b/src/system_manager.py new file mode 100644 index 0000000..72bf214 --- /dev/null +++ b/src/system_manager.py @@ -0,0 +1,26 @@ +from enum import StrEnum + +import platform + +class OperatingSystemType(StrEnum): + WINDOWS = "Microsoft Windows", + MACOS = "MacOS", + LINUX = "GNU/Linux", + FREEBSD = "FreeBSD", + ANDROID = "Android" + +class SystemManager(): + def __init__(self): + self.type : OperatingSystemType = None + self.name : str = None + self.version : str = None + + def determine_os_type() -> OperatingSystemType : + if (platform.system() == "Linux") : + return OperatingSystemType.LINUX + if (platform.system() == "Darwin") : + return OperatingSystemType.MACOS + if (platform.system() == "Windows") : + return OperatingSystemType.WINDOWS + if (platform.system() == "Android") : + return OperatingSystemType.WINDOWS