# GrimOS : Un Environnement de Bureau Minimaliste en Python

**GrimOS** est un environnement de bureau léger, modulaire et entièrement fonctionnel, écrit presque intégralement en Python (via Tkinter) et conçu pour s'exécuter nativement sur un serveur d'affichage X11 (Xorg).

Il remplace les gestionnaires de fenêtres classiques (comme GNOME, KDE ou XFCE) pour offrir une interface utilisateur sur-mesure, hautement optimisée, et centrée sur l'ergonomie.

---

## 🎯 Objectifs du Projet

1. **Simplicité Extrême et Résilience** : L'OS se débarrasse des lourds daemons en arrière-plan (pas de `systemd` complexe, ni de `NetworkManager`). Il lit l'état de la machine directement à la source (système de fichiers `/proc`, `/sys`).
2. **Conçu pour les Configurations Modestes** : Ne consommant que quelques dizaines de mégaoctets de RAM au repos, il est idéal pour redonner vie à de très vieilles machines (ordinateurs portables de 2010) ou s'exécuter sur des cartes embarquées comme le *Raspberry Pi*.
3. **Ergonomie Mono-utilisateur** : Le système est taillé sur-mesure pour un usage personnel. Il supprime les barrières de sécurité chronophages (comme la demande répétitive du mot de passe administrateur pour monter une clé) en centralisant les droits.
4. **Laboratoire Pédagogique (100% Python)** : Prouver qu'il est possible de recréer l'expérience complète d'un système d'exploitation moderne (fenêtrage, réseau, processus, UI) avec un seul langage de script.

---

## ✨ Fonctionnalités Incluses (Que peut-on faire ?)

### 🖥️ Gestion de l'Environnement de Travail
- **Fenêtrage Intelligent** : Chaque application s'ouvre dans une sous-fenêtre gérée par Python. Le système mémorise automatiquement la taille et la position des fenêtres pour restaurer votre espace de travail à l'identique à la prochaine session.
- **Menu Démarrer & Barre des Tâches** : Accès rapide aux applications et contrôle de l'état global du système en temps réel.

### ⚙️ Composants Système en Temps Réel
- **Moniteur Système Intégré** : Affiche la charge CPU (%), la température matérielle (°C), et l'utilisation RAM/Swap en direct, sans outil tiers.
- **Gestion Wi-Fi Native** : Connexion aux réseaux sans fil via une simple liste déroulante dans la barre des tâches. Le système orchestre discrètement `iw` et `wpa_cli`.
- **Montage USB Automatique (Auto-mount)** : Un démon veille en arrière-plan. Dès qu'une clé USB est insérée, elle est montée de façon invisible et apparaît instantanément dans l'Explorateur. Un bouton « ⏏️ USB » dans la barre des tâches permet une éjection sécurisée en 1 clic.
- **Paramètres Centralisés** : Personnalisation instantanée des couleurs de fond via une palette RGB, ajustement des polices, et stockage du profil système.

### 🧰 Suite Logicielle
1. **L'Explorateur** : Navigation dans les disques, routage intelligent des fichiers (une image s'ouvre avec la visionneuse, du code avec l'IDE).
2. **L'Éditeur de Code** : Un IDE léger dédié aux développeurs avec *Coloration Syntaxique*, *Auto-indentation* et *Numérotation des lignes*.
3. **Terminal TTY Natif** : L'environnement peut être fermé instantanément pour laisser place au véritable terminal maître de Debian (le TTY). Cela permet une administration système robuste (sudo) sans bugs d'affichage, avec retour immédiat via startx.
4. **Visionneuse d'Images & Bloc-notes** : Utilitaires bureautiques classiques.
5. **Gestionnaire des Tâches** : Interface permettant de cibler et de terminer (`kill`) les applications bloquées ou gourmandes.

---

## 🛠️ Comment l'installer ?

### 1. Prérequis Système
Vous avez besoin d'une base Linux minimale (ex: *Debian Minimal* ou *Ubuntu Server* sans interface).
Mettez à jour et installez les paquets de base :
```bash
sudo apt update
sudo apt install xserver-xorg xinit python3-tk iw wpa_supplicant
```

### 2. Déploiement des Fichiers
Placez l'intégralité du dossier `grimos` dans votre répertoire utilisateur.
*(Exemple : `/home/geo/grimos`)*

### 3. Configuration du Démarrage (X11)
À la racine de votre dossier utilisateur (`~`), créez ou modifiez le fichier caché `.xinitrc`. Ce fichier indique à Xorg quel programme graphique lancer au démarrage.
```bash
#!/bin/bash
# ~/.xinitrc
exec python3 /home/geo/grimos/main.py
```
*Assurez-vous que le fichier est exécutable : `chmod +x ~/.xinitrc`.*

### 4. Lancement
Démarrez votre ordinateur. Une fois face à la console noire (tty) et après vous être connecté, tapez simplement :
```bash
startx
```
*L'écran va clignoter un instant, puis la magie de GrimOS apparaîtra !*

---

## 🚀 Quelles Améliorations sont Possibles ?

L'architecture modulaire de GrimOS (via le dossier `apps/` et `applications.json`) permet d'ajouter des modules à l'infini. Voici quelques pistes concrètes pour le futur :

1. **Intégration d'un Navigateur Web** : En encapsulant un navigateur ultra-léger (ex: *Midori* ou *Dillo*) ou en utilisant une bibliothèque comme `tkinterweb` pour naviguer sur le web directement dans une fenêtre GrimOS.
2. **Mode Sombre Global (Thématisation)** : Refonte du système de variables d'environnement de l'interface graphique pour permettre à toutes les applications de basculer instantanément en mode nuit (Dark Mode) de manière harmonieuse.
3. **Lecteur Multimédia (Audio/Vidéo)** : Création d'une application utilisant `pygame` ou les liaisons Python pour `VLC`, permettant d'écouter de la musique ou de regarder des vidéos tout en travaillant.
4. **Centre de Notifications** : Développement de petites "bulles" pop-up qui émergent en bas à droite de l'écran pour alerter l'utilisateur d'une température critique, de la fin de sa batterie (sur PC portable) ou de la perte du réseau Wi-Fi.
5. **Sécurisation Multi-utilisateurs (Chiffrement)** : Actuellement orienté "perso", le mot de passe est stocké en clair pour le confort. Pour un environnement partagé, une refonte de la base `settings.json` vers un *Keyring* (trousseau chiffré) sécuriserait le système contre les lectures malveillantes.
6. **Support du Glisser-Déposer (Drag & Drop)** : Améliorer l'Explorateur et le système de fenêtrage principal avec `tkinterdnd2` pour déplacer des fichiers intuitivement à la souris.
