Chapitre 4 : Tutoriel : Créer sa première application (Calculatrice)

Mockup de la calculatrice GrimOS

Dans le chapitre précédent, nous avons vu que GrimOS ne possède pas de "bureau" au sens Unix du terme. Chaque fenêtre n'est en fait qu'un petit composant (un Frame Tkinter) dessiné à l'intérieur de l'application principale.

Maintenant que vous avez compris l'architecture de GrimOS (Chapitre 4) et que votre environnement de développement à distance est prêt (Chapitre 3), il est temps de mettre les mains dans le code !

Dans ce chapitre, nous allons créer ensemble une application de A à Z : une petite Calculatrice.

1. Créer le dossier de l'application

Toutes les applications de GrimOS vivent de manière indépendante dans le dossier apps/. Pour commencer, créez un nouveau dossier nommé calculatrice dans ce répertoire.

💻 Terminal :

cd grimos_build/apps/
mkdir calculatrice

À l'intérieur de ce dossier, créez un fichier Python nommé obligatoirement app.py. C'est le point d'entrée que le moteur de GrimOS cherchera à lancer.

2. Le code minimal (Le contrat GrimOS)

Ouvrez le fichier app.py. Pour qu'une application soit reconnue par le système, elle doit posséder une fonction nommée start(window, app_manager=None, **kwargs).

L'argument window correspond au "panneau intérieur" de la fenêtre. C'est un simple cadre (Frame) Tkinter dans lequel nous avons le droit de dessiner.

Copiez le code suivant :

import tkinter as tk
from tkinter import messagebox

def start(window, app_manager=None, **kwargs):
    # Changement de la couleur de fond du panneau
    window.configure(bg="#f0f0f0")

    # Titre de l'application
    titre = tk.Label(window, text="Calculatrice GrimOS", font=("Arial", 16, "bold"), bg="#f0f0f0")
    titre.pack(pady=10)

    # Un champ de texte pour taper le calcul
    entree = tk.Entry(window, font=("Arial", 14), width=20)
    entree.pack(pady=10)

    # Fonction qui sera appelée quand on clique sur le bouton
    def calculer():
        expression = entree.get()
        try:
            # Évaluation mathématique simple
            resultat = eval(expression)
            messagebox.showinfo("Résultat", f"Le résultat est : {resultat}")
        except Exception as e:
            messagebox.showerror("Erreur", "Calcul invalide !")

    # Le bouton d'action
    btn = tk.Button(window, text="Calculer", font=("Arial", 12), command=calculer)
    btn.pack(pady=10)

Explications :

  1. Nous importons tkinter pour dessiner nos boutons et nos champs de texte.
  2. Nous utilisons window comme "parent" pour tous nos composants (Label, Entry, Button). C'est ce qui permet à l'application d'être proprement contenue dans la fenêtre générée par GrimOS.
  3. La fonction eval() est utilisée ici pour la simplicité de l'exemple afin de calculer mathématiquement le texte tapé par l'utilisateur.

3. Déclarer l'application au système

Si vous lancez GrimOS maintenant, votre application existe bien sur le disque dur, mais le système ne la connaît pas encore. Il faut l'inscrire dans le grand registre : le fichier config/applications.json.

Ouvrez ce fichier et ajoutez un nouveau bloc à la fin de la liste (n'oubliez pas la virgule après le bloc précédent !) :

  {
    "name": "Calculatrice",
    "module": "apps.calculatrice.app",
    "icon": "icons/terminal.png",
    "category": "Bureautique"
  }

Note : Pour l'icône, nous utilisons ici temporairement l'icône du terminal (icons/terminal.png). Vous pourrez par la suite ajouter votre propre fichier calculatrice.png dans le dossier icons/.

4. Tester l'application

C'est l'heure de vérité. Relancez GrimOS (ou cliquez sur "Redémarrer GrimOS" dans le menu Démarrer si vous êtes déjà connecté).

  1. Ouvrez le menu Démarrer.
  2. Allez dans la catégorie Bureautique.
  3. Cliquez sur Calculatrice.

Une magnifique fenêtre s'ouvre ! Vous pouvez la déplacer en cliquant sur sa barre de titre bleue, la redimensionner (si autorisé) et la fermer avec la croix rouge. Tout ce "simulacre de fenêtre" a été généré automatiquement par core/window.py sans que vous n'ayez eu à écrire une seule ligne de code pour le gérer.

Tapez 5 + 5 * 2 dans le champ et cliquez sur Calculer. Une petite fenêtre d'alerte s'ouvrira pour vous afficher le résultat : 15.

Conclusion

Félicitations, vous venez de créer votre première application native pour GrimOS !

L'architecture est volontairement d'une simplicité enfantine. Que vous vouliez développer un simple lecteur de musique, un jeu de démineur ou un outil de surveillance réseau, le principe sera exactement le même : un dossier dans apps/, une fonction start(), et une déclaration JSON.

La seule limite est votre imagination et vos connaissances en Python !