diff --git a/.envrc b/.envrc new file mode 100644 index 0000000..731a62e --- /dev/null +++ b/.envrc @@ -0,0 +1 @@ +use nix-shell \ No newline at end of file diff --git a/.github/screenshots/image.png b/.github/screenshots/image.png index 20cc655..15e31b0 100644 Binary files a/.github/screenshots/image.png and b/.github/screenshots/image.png differ diff --git a/hatch_build.py b/hatch_build.py index f3b0377..e43003d 100644 --- a/hatch_build.py +++ b/hatch_build.py @@ -1,11 +1,9 @@ import subprocess import os -from typing import override from hatchling.builders.hooks.plugin.interface import BuildHookInterface class CustomBuildHook(BuildHookInterface): # pyright: ignore[reportMissingTypeArgument] - @override def clean(self, versions) -> None: # pyright: ignore[reportMissingParameterType] if os.name == "posix": _ = subprocess.run("./scripts/clean.sh", check=True) @@ -13,7 +11,6 @@ class CustomBuildHook(BuildHookInterface): # pyright: ignore[reportMissingTypeA _ = subprocess.run("scripts\\clean.cmd", check=True, shell=True) return super().clean(versions) - @override def initialize(self, version, build_data) -> None: # pyright: ignore[reportMissingParameterType] if os.name == "posix": _ = subprocess.run("./scripts/build.sh", check=True) diff --git a/lisezmoi.md b/lisezmoi.md index e24221f..651dd14 100644 --- a/lisezmoi.md +++ b/lisezmoi.md @@ -1,38 +1,48 @@ -# LCE QT Launcher +# LCE Qt Launcher -[Version Anglaise](readme.md) +[Version anglaise](readme.md) -![LCE-QT-Launcher](assets/images/Launcher.png) +![LCE-QT-Launcher](assets/io.github.xgui4.lce_qt_launcher.png) ![Capture d'écran du lanceur](.github/screenshots/image.png) > [!WARNING] > Ce lanceur est en cours de développement et ses fonctionnalités peuvent être modifiées ou supprimées à tout moment. -> Les contributions (PR) sont les bienvenues pour corriger ou ajouter des fonctionnalités. Veuillez respecter la [licence GPLv3](license.md) et le [Code de conduite](CODE-DE-CONDUITE.md). +> Les contributions (PR) sont les bienvenues pour corriger ou ajouter des fonctionnalités. Veuillez respecter la [licence GPLv3](license.md) et le [Code de conduite](code-of-conduct.md). ## À propos -Il s'agit d'un lanceur LCE personnalisé pour Minecraft, écrit en Python et Qt avec Freedom et conçu pour être compatible avec GNU/Linux. +Il s'agit d'un lanceur LCE personnalisé pour Minecraft, écrit en Python et Qt avec Freedom et conçu pour GNU/Linux. + +## Pourquoi le lanceur LCE Qt ? + +- Développé en Python avec Qt 6 : léger et compatible avec le thème Plasma 6/Qt 6 de GNU/Linux +- Personnalisation avec les thèmes et les modules/plugins (prochainement) +- Intégration avec les outils communautaires +- Compatibilité GNU/Linux optimale +- Licence copyleft (GPLv3), donc sans big tech +- Gratuit comme Freedom Launcher +- Thème Minecraft par défaut ## Fonctionnalités - Interface en ligne de commande (CLI) -- Interface graphique Qt 6 (interface de type natif) -- Écrit en Python (sans Electron ni Rust) -- Personnalisable -- Logiciel libre (GPLv3) -- Instances multiples (en cours de développement) -- Localisations (en cours de développement) - -- Plusieurs instances par défaut : MCLE et Legacy Evolved +- Prise en charge de plusieurs instances (en cours de développement) +- Prise en charge des localisations (en cours de développement) +- Instances préconfigurées : + - [MCLCE/MinecraftConsoles](https://github.com/mclce/minecraftconsoles) (anciennement smartcmd/MinecraftConsoles) + - LegacyEvolved (sera bientôt supprimé car remplacé par NeoLegacy) + - [NeoLegacy](https://github.com/pieeebot/neoLegacy/) +- Places de marché / Workshop : + - [Atelier du lanceur Emeralds de LCE Hub](https://github.com/LCE-Hub/piston) + - [LegacyMods (bientôt disponible)](https://legacymods.org/) - Actualités intégrées -- Thème Minecraft préconfiguré -## Objectif à long terme +## Objectif à long terme / Feuille de route - Accessibilité +- Prise en charge des mods +- Plugins pour le lanceur +- Prise en charge des thèmes - Compatibilité GNU/Linux - Prise en charge de Windows - Prise en charge expérimentale de FreeBSD @@ -42,18 +52,51 @@ Il s'agit d'un lanceur LCE personnalisé pour Minecraft, écrit en Python et Qt ### VSCode -1. Créez un environnement virtuel Python avec un outil comme UV. -2. Configurez VSCode pour utiliser cet environnement virtuel Python. +> [!NOTE] +> Sous Windows, remplacez `/` par `\`. + +> [!WARNING] +> Cette méthode n'est ni recommandée ni testée pour NixOS. Consultez la section NixOS pour la procédure spécifique à ce système d'exploitation. + +1. Créez un environnement virtuel Python à l'aide d'un outil comme UV (si ce n'est pas déjà fait). +2. Configurez VS Code pour utiliser cet environnement virtuel Python. 3. Exécutez « PySide : Sync Virtual Env and Launch ». -4. Exécutez l'application via le mode débogage de VS Code ou via directement le fichier [`src/main.py`](src/main.py). +4. Exécutez l'application via le mode débogage de VS Code ou directement le fichier [`src/lce_qt_launcher/main.py`](src/lce_qt_launcher/main.py). + +### NixOS + +1. Lancez le shell Nix avec la commande `nix-shell`. +2. Compilez l'interface utilisateur et le fichier de ressources avec `scripts/build.sh`. +3. Executé l'application avec `python src/lce_qt_launcher/main.py`. ### Autres -Guide à venir +À venir ## Comment compiler -Disponible dans la prochaine version stable, lorsque le programme sera plus stable. +### Compilation portable avec Nuitka + +0. Créez un environnement virtuel Python avec un outil comme UV (si ce n'est pas déjà fait). +1. Exécutez `hatch run packages`. + +### Arch Linux + +1. Accédez au répertoire `packages/linux`. +2. Choisissez un canal : dev, nightly ou stable (accédez au répertoire correspondant). +3. Exécutez `makepkg -si` ou `makepkg -s` (pour une installation sans paquets) dans l'un de ces répertoires. + +### Paquet Nix + +#### Nix Flake (Non testé/En cours de développement) +Exécutez `nix build` + +#### Nixpkg +Exécutez `nix-build default.nix` + +### Installateurs Flatpak et Windows + +- Guide à venir ## Versions Quotidiennes (Nightly Release) @@ -61,48 +104,56 @@ Disponible dans la prochaine version stable, lorsque le programme sera plus stab > Les versions quotidiennes automatiques sont actuellement instable, très expérimentale et en développement actif. > Cette branche n'est pas stable et des modifications y sont apportées presque quotidiennement ; elle peut donc parfois dysfonctionner. De plus, macOS n'est pas disponible dans la compilation nocturne en raison des restrictions d'Apple et du fait que je ne possède pas de Mac. -Sur cette page [GitHub Release](https://github.com/xgui4/LCE-Qt-Launcher/releases/tag/nightly), vous trouverez les versions de développement quotidiennes automatiques (Nighly Build), générées automatiquement via GitHub Actions lors de modifications apportées à la branche `nighly`. +Sur cette page [GitHub Release](https://github.com/xgui4/LCE-Qt-Launcher/releases/tag/nightly), vous trouverez les versions nightly, générées automatiquement via GitHub Actions lors de modifications apportées à la branche `nighly`. ## Configuration logicielle requise -- [Python 3.11 (Pour FreeBSD) ou Python 3.12 ((GNU/Linux, Windows ou MacOS)](https://www.python.org) -- Un environnement virtuel avec les bibliothèques requises installées (spécifiées dans le fichier README et [`pyproject.toml`](pyproject.toml)) +- [Python 3.11 (pour FreeBSD) à Python 3.12 (GNU/Linux, Windows et macOS)](https://www.python.org) +- Un environnement virtuel avec les bibliothèques requises installées (spécifiées dans le fichier README et le fichier [`pyproject.toml`](pyproject.toml)) - [PySide6](https://pypi.org/project/PySide6/) - [Police Monocraft](https://github.com/IdreesInc/Monocraft) installée -- Pour un système de type UNIX - - Un serveur d'affichage ou un compositeur (sauf sur macOS où un serveur propriétaire est utilisé) - - Bash (Généralement préinstallé sous Linux, mais souvent requis sous *BSD et macOS) +- Pour les systèmes de type UNIX + - Un serveur d'affichage ou un compositeur (sauf sur macOS où un serveur propriétaire est utilisé). + - Bash (normalement préinstallé sous Linux, mais souvent requis sous *BSD et macOS) ## Bibliothèques et outils Python utilisés - PySide 6 - requests +- platformdirs - rich - hatch - uv ## Systèmes d'exploitation compatibles -### Compatibilité optimale +### Compatibilité officielle - Windows 10 et versions ultérieures - GNU/Linux ### Compatibilité expérimentale -- FreeBSD +- NixOS + +### Plateformes prises en charge prochainement + +- FreeBSD (Bien que cela puisse fonctionner, cela n'a pas encore été testé et le fonctionnement n'est pas garanti) +- Flatpak (Bien que cela puisse fonctionner, cela n'a pas encore été testé et le fonctionnement n'est pas garanti) ### Systèmes d'exploitation non pris en charge -- Autres systèmes *BSD, car Minecraft LCE n'est pas pris en charge sur ceux-ci et Wine n'est pas disponible. -- Android : Minecraft LCE a actuellement des ralentissements et des bugs importants sur Android. -- macOS : LCE Qt Launcher ne supporte pas officialiement MacOS et n'est pas tester lors des PR, mais la compatibilité POISX devrait permettre de l'utiliser. +- Autres systèmes *BSD, car Minecraft LCE n'est pas pris en charge sur ces systèmes et Wine n'est pas disponible. +- Minecraft LCE sur Android est actuellement assez lent et bogué. +- macOS : LCE Qt Launcher ne prend pas officiellement en charge macOS et n'est pas testé lors des contributions, mais la compatibilité POISX devrait permettre son utilisation. -## Remerciements +### Remerciements particuliers à : - [Prism Launcher](https://github.com/PrismLauncher/PrismLauncher) pour certains éléments et fichiers d'interface utilisateur -- [MCLCE/MinecraftConsoles](https://github.com/MCLCE/MinecraftConsoles) pour le portage du jeu pour PC -- [pieeebot/neoLegacy](https://github.com/pieeebot/neoLegacy) pour le backportage des mise a jours pour le pc port +- [MCLCE/MinecraftConsoles](https://github.com/MCLCE/MinecraftConsoles) +aftConsoles) pour le portage du jeu sur PC +- [pieeebot/neoLegacy](https://github.com/pieeebot/neoLegacy) pour la rétrocompatibilité des mises à jour pour le portage PC +- [LCE Hub](https://github.com/LCE-Hub) pour la Marketplace/Workshop ## Code de conduite diff --git a/readme.md b/readme.md index 1c6d3f7..cbc43af 100644 --- a/readme.md +++ b/readme.md @@ -1,8 +1,8 @@ # LCE QT Launcher -[French Version](lisezmoi.md) +[French Version](lisezmoi.md) (Not updated yet) -![LCE-QT-Launcher](assets/images/Launcher.png) +![LCE-QT-Launcher](assets/io.github.xgui4.lce_qt_launcher.png) ![Screnshot of the launcher](.github/screenshots/image.png) > [!WARNING] @@ -13,26 +13,36 @@ This is a custom Minecraft LCE Launcher written in Python and Qt with Freedom and with GNU/Linux support in mind. +## Why LCE Qt Launcher ? + +- Made in Python with Qt 6 : bloat free and integrate with GNU/Linux Plasma 6/Qt 6 Theme +- Customisation with Themes and laters modules/plugins +- Integration with Community Tools +- GNU/Linux first class support +- Licensed via copyleft licensing (GPLv3), so big tech free +- Free as Freedom Launcher +- Minecraft Themed by default + ## Features - Command Line interface (CLI) -- Qt 6 GUI (Native like Interface) -- Written in Python (No Electron or Rust) -- Customisable -- Free Software (GPLv3) -- Multiple Instances (Work in progress) -- localisations (Work in progress) - -- Multiples Defaults Instances : MCLE and Legacy Evolved +- Multiple Instances support (Work in progress) +- localisations support (Work in progress) + - Pre-Configured ones : + - [MCLCE/MinecraftConsoles](https://github.com/mclce/minecraftconsoles) (previously smartcmd/MinecraftConsoles) + - LegacyEvolved (will be removed soon as was replaced with NeoLegacy) + - [NeoLegacy](https://github.com/pieeebot/neoLegacy/) +- Marketplaces : + - [LCE Hub Emeralds Launcher Workshop](https://github.com/LCE-Hub/piston) + - [LegacyMods (coming soon)](https://legacymods.org/) - in-app news -- Minecraft Theme pre-configured -## Long Term Goal +## Long Term Goal / Roadmap - Accessibility +- Modding Support +- Launcher Plugins +- Skin support - GNU/Linux compatibility - Windows support - Experimental FreeBSD support @@ -40,20 +50,51 @@ This is a custom Minecraft LCE Launcher written in Python and Qt with Freedom an ## How to run -### VSCode +### VSCode -1. Create a Python Virtual Env via a tool like UV +> [!NOTE] +> In Windows where you need to replace `/` with `\` + +> [!WARNING] +> This method is not recommed nore tested for NixOS, go to the NixOS Section, for the step for this particular OS. + +1. Create a Python Virtual Env via a tool like UV (if not already done) 2. Set VSCode to that Python Virtual Env 3. Run "Pyside : Sync Virtual Env and Launch" -4. Run the app via Vscode debug mode or directly the [`src/main.py`](src/main.py) file. +4. Run the app via Vscode debug mode or directly the [`src/lce_qt_launcher/main.py`](src/lce_qt_launcher/main.py) file. + +### NixOS + +1. load the nix shell with `nix-shell` command +2. compiled the ui and ressource file with [`scripts/build.sh`](scripts/build.sh) +3. load the app with [`python src/lce_qt_launcher/main.py`](src/lce_qt_launcher/main.py) ### Others -Guide coming laters +coming soon ## How to build -Coming in the next stable release when the program will be more stable +### Portable Nuitka Build + +0. Create a Python Virtual Env via a tool like UV (if not already done) +1. Run `hatch run packages` + +### Arch Linux + +1. Go the [`packages/linux` directory](packages/linux) +2. Choose a channel dev, nigthly or stable (go to the directory) +3. Run `makepkg -si` or `makepkg -s` (for no install) in one of these directory + +### Nix Package + +#### Nix Flake (Not tested yet/Work in progress) + Run `nix build` +#### Nixpkg + Run `nix-build default.nix` + +### Flatpak and Windows Installers +- Guide Coming Later ## Nigthly Build @@ -77,6 +118,7 @@ In this [GitHub Release](https://github.com/xgui4/LCE-Qt-Launcher/releases/tag/n - PySide 6 - requests +- platformdirs - rich - hatch - uv @@ -90,7 +132,12 @@ In this [GitHub Release](https://github.com/xgui4/LCE-Qt-Launcher/releases/tag/n ### Experimental Support -- FreeBSD +- NixOS + +### Future Supported Platform + +- FreeBSD (While it may worked, it is not tested for it yet and might not worked at all) +- Flatpak (While it may worked, it is not tested for it yet and might not worked at all) ### Unsupported OS @@ -98,11 +145,12 @@ In this [GitHub Release](https://github.com/xgui4/LCE-Qt-Launcher/releases/tag/n - Minecraft LCE on Android is currently quite laggy and buggy - macOS: LCE Qt Launcher does not officially support MacOS and is not tested during PRs, but POISX compatibility should allow its use. -## Thank to +## Special Thank to - [Prism Launcher](https://github.com/PrismLauncher/PrismLauncher) for certain UI elements and ui files - [MCLCE/MinecraftConsoles](https://github.com/MCLCE/MinecraftConsoles) for the port of the game for PC - [pieeebot/neoLegacy](https://github.com/pieeebot/neoLegacy) for backporting updates for the PC port +- [LCE Hub](https://github.com/LCE-Hub) for the Marketplace/Workshop ## Code of Respect diff --git a/src/form.ui b/src/form.ui index e455e2e..2e3ca3f 100644 --- a/src/form.ui +++ b/src/form.ui @@ -705,10 +705,18 @@ + + + Marketplace + + + + + @@ -1015,6 +1023,16 @@ Report a Bugs or Suggest a feature + + + LCE-Hub Workshop + + + + + LegacyMods (Coming Soon) + + diff --git a/src/lce_qt_launcher/views/launcher.py b/src/lce_qt_launcher/views/launcher.py index d52c049..5e9a1e9 100644 --- a/src/lce_qt_launcher/views/launcher.py +++ b/src/lce_qt_launcher/views/launcher.py @@ -247,6 +247,14 @@ class Launcher(QMainWindow): _ = self.ui.actionSave.triggered.connect(save_instance) _ = self.ui.actionImport_Instance.triggered.connect(load_instance) + open_workshop = lambda : features.show_webbrowser(self, "https://lce-hub.github.io/piston/", buildInfo); + + _ = self.ui.actionLCE_Hub_Workshop.triggered.connect(open_workshop) + + open_legacymods = lambda : features.show_webbrowser(self, "https://legacymods.org/", buildInfo); + + _ = self.ui.actionLegacyMods_Coming_Soon.triggered.connect(open_legacymods) + openAppRoot = lambda : systemManager.open_url_with_system(appData.projectRootDir); _= self.ui.actionApp_Root.triggered.connect(openAppRoot)