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)
-
+

> [!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)
-
+

> [!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 @@
+
+
@@ -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)