# Dépannage global

# Dépannage Windows

# Afficher les réseaux WiFi et leurs mots de passes enregistrés sur Windows 10

## Introduction

Ce document explique comment afficher tous les réseaux Wi-Fi enregistrés sur un PC sous Windows 10, ainsi que leurs mots de passe (clés de sécurité). Ces informations sont utiles pour retrouver un mot de passe oublié ou pour auditer les connexions sauvegardées sur un appareil.

> **Attention :**
> - Ces commandes nécessitent des droits administrateur.
> - Les mots de passe s'affichent en clair : manipulez-les avec prudence.

---

## Méthode : Utiliser l'Invite de commandes (CMD)

### Étape 1 : Ouvrir CMD en tant qu'administrateur

1. Appuyer sur **Win + X** puis sélectionner **Invite de commandes (Admin)**.
2. Ou rechercher `cmd` dans le menu Démarrer, faire un clic droit sur **Invite de commandes** et choisir **Exécuter en tant qu'administrateur**.

### Étape 2 : Lister tous les réseaux Wi-Fi enregistrés

Exécuter la commande suivante pour afficher la liste des réseaux sauvegardés :

```cmd
netsh wlan show profiles
```

> Une liste des profils utilisateur (noms des réseaux Wi-Fi) s'affiche.

### Étape 3 : Afficher le mot de passe d'un réseau spécifique

Remplacer `NOM_DU_RESEAU` par le nom du réseau souhaité :

```cmd
netsh wlan show profile name="NOM_DU_RESEAU" key=clear
```

> Chercher la ligne **"Contenu de la clé"** dans la section **"Paramètres de sécurité"**. La valeur affichée est le mot de passe.

**Exemple :**

```cmd
netsh wlan show profile name="PixelVert_WiFi" key=clear
```

Sortie :

```
Paramètres de sécurité
----------------------
Contenu de la clé       : MonMotDePasse123
```

# Automatiser une sauvegarde Windows avec Robocopy

# Sauvegarde mensuelle avec Robocopy

## 1. Objectif

Mettre en place une sauvegarde automatique mensuelle sous Windows 10/11 qui :

- copie les fichiers d'un dossier source
- crée un dossier de sauvegarde par mois
- conserve uniquement les 6 derniers mois
- fonctionne automatiquement via le Planificateur de tâches

---

## 2. Architecture

Le système repose sur trois éléments :

```
Planificateur de tâches
         ↓
       .bat
         ↓
 Script PowerShell
         ↓
      Robocopy
```

---

## 3. Dossiers utilisés

**Dossier source**

```
C:\DossierASauvegarder
```

Contient les fichiers à sauvegarder.

**Dossier de destination**

```
C:\DossierDeDestinationDeSauvegarde
```

Une fois peuplé, le dossier ressemble à ceci :

```
DossierDeDestinationDeSauvegarde
│
├── 2026-01
├── 2026-02
├── 2026-03
├── 2026-04
├── 2026-05
├── 2026-06
│
└── backup_2026-06.log
```

Chaque sous-dossier correspond à une sauvegarde mensuelle.

---

## 4. Script PowerShell

**Fichier :** `C:\Scripts\backup_mensuel.ps1`

```powershell
$Source = "C:\DossierASauvegarder"
$BackupRoot = "C:\DossierDeDestinationDeSauvegarde"
$Now = Get-Date
$MonthFolder = $Now.ToString("yyyy-MM")
$Dest = Join-Path $BackupRoot $MonthFolder

New-Item -ItemType Directory -Path $Dest -Force | Out-Null

$LogFile = Join-Path $BackupRoot "backup_$MonthFolder.log"

robocopy `
    $Source `
    $Dest `
    /E `
    /XO `
    /R:2 `
    /W:5 `
    /Z `
    /FFT `
    /XA:H `
    /LOG:$LogFile

$LimitMonth = (Get-Date).AddMonths(-6)
Get-ChildItem $BackupRoot -Directory |
Where-Object {
    $_.Name -match '^\d{4}-\d{2}$' -and
    ([datetime]::ParseExact($_.Name, 'yyyy-MM', $null)) -lt $LimitMonth
} |
Remove-Item -Recurse -Force
```

**Options Robocopy**

| Option  | Description                          |
|---------|--------------------------------------|
| `/E`    | Copie tous les sous-dossiers         |
| `/XO`   | Ignore les fichiers plus anciens     |
| `/R:2`  | 2 tentatives en cas d'erreur         |
| `/W:5`  | Attente de 5 secondes entre tentatives |
| `/Z`    | Mode redémarrable                    |
| `/FFT`  | Compatibilité systèmes de fichiers   |
| `/XA:H` | Ignore les fichiers cachés           |

---

## 5. Fonctionnement du script

**Création du dossier mensuel**

Le script génère automatiquement un dossier basé sur la date courante au format `YYYY-MM`. Exemple : `2026-03`.

**Nettoyage des anciennes sauvegardes**

Le script conserve uniquement les 6 derniers mois et supprime automatiquement les dossiers plus anciens. Exemple de dossiers conservés :

```
2025-12
2026-01
2026-02
2026-03
2026-04
2026-05
```

---

## 6. Fichier batch

**Fichier :** `C:\Scripts\backup_mensuel.bat`

```bat
@echo off
powershell.exe -ExecutionPolicy Bypass -File "C:\Scripts\backup_mensuel.ps1"
```

Rôle : lance le script PowerShell et sert de point d'entrée pour le Planificateur de tâches.

---

## 7. Planification automatique

1. Ouvrir le **Planificateur de tâches**
2. Créer une nouvelle tâche
3. Cocher :
   - **Exécuter même si l'utilisateur n'est pas connecté**
   - **Exécuter avec les autorisations maximales**
4. **Déclencheur :** choisir l'intervalle souhaité
5. **Action :**
   - Programme : `C:\Scripts\backup_mensuel.bat`
   - Arguments : *(vide)*

---

## 8. Logs

Chaque exécution génère un fichier log au format `backup_YYYY-MM.log`. Exemple : `backup_2026-03.log`

Ce fichier contient :

- les fichiers copiés
- les fichiers ignorés
- les erreurs éventuelles

---

## 9. Tests recommandés

Avant la première utilisation, exécuter manuellement :

```bat
backup_mensuel.bat
```

Puis vérifier :

- la création du dossier mensuel
- la copie des fichiers
- la génération du log

---

## 10. Maintenance

Vérifier occasionnellement :

- l'espace disque disponible
- la présence des logs
- le bon fonctionnement de la tâche planifiée

# Dépannage Linux Mint Debian Edition

# Blacklister des secteur de mémoire corrompue

## Intro
Si vous avez des instabilités, que vous faites un memtest86+ et que vous avez des erreurs, la solution est de remplacer la ram, mais vu le prix de la RAM aujourd'hui et les rams soudées à la carte mere de plus en plus démocratisées, ce n'est pas toujours possible. Donc, pourquoi ne pas empêcher le système de s'en servir au demarrage ?

## badram
Badram est un utilitaire dans GRUB permettant de faire juste ca. Il suffit pour cela de lui passer en argument l'adresse mémoire, suivi du masque, le tout en hexadecimal dans le fichier de config par défaut de grub (/etc/default/grub) dans la clé "BAD_RAM=" et faire un petit grub_update

## Récupérer les secteur et masques
Facile il suffit de lancer memtest86+, et dans les options de signaler qu'on veux le retour en format badram (F1, F4, F4)
et de recopier les secteurs,masques

## Résolution des problèmes
Il peut arriver que grub refuse de demarrer après la mise en place du badram. C'est un bug connu sur les kernels 64bits. Il suffit de delancer le système en passant par SuperGrubDisk, remplacer le premier F des masques par des 7, et relancer update-grub

# Lire le SMART d'un HDD / SSD en USB

## Problème

Dans certaines situations, le pilote Linux `uas` désactive les transferts SAT (ATA passthrough), ce qui empêche `smartmontools` (et d'autres outils comme `hdparm`) de communiquer avec un disque SATA connecté en USB.

Le symptôme typique est une erreur de ce type :

```
Read Device Identity failed: scsi error unsupported field in scsi command
A mandatory SMART command failed: exiting.
```

Ou encore :

```
Unknown USB bridge [0xXXXX:0xXXXX (0xXXXX)]
Please specify device type with the -d option.
```

### Pourquoi ?

Certains chipsets bridges USB-SATA ne gèrent pas correctement les commandes SAT en mode UAS. Le noyau Linux active alors automatiquement le flag `NO_ATA_1X` pour ces chipsets, ce qui désactive le passthrough SAT et bloque smartmontools.

Les appareils concernés incluent notamment les boîtiers Seagate, les chipsets Initio INIC-3069 et VIA VL711.

---

## 1 - Identifier les IDs USB du périphérique

```bash
lsusb
```

Repérez la ligne correspondant à votre disque, par exemple :

```
Bus 002 Device 003: ID XXXX:YYYY Nom du fabricant
```

- `XXXX` = vendor ID
- `YYYY` = product ID

Notez ces deux valeurs, elles seront utilisées dans toutes les commandes suivantes.

---

## 2 - Vérifier le pilote utilisé

```bash
lsusb -t
```

Si votre périphérique utilise le pilote `uas`, c'est probablement la cause du problème.

---

## 3- Forcer le type de device avec smartctl

Avant tout, vérifiez le nom du disque via la commande suivante :

```bash
sudo lsblk
```
Identifiez le nom du disque que vous voulez diagnostiquer.
> Remplacez `/dev/sdX` par le chemin réel de votre disque (`/dev/sda`, `/dev/sdb`, etc.).

> ⚠️ Attention, une mauvaise identification de disque et vous diagnostiquerez le mauvais disque !

Rentrez la commande suivante :
```bash
sudo smartctl -d sat -a /dev/sdX
```

Si ça échoue, tentez avec une longueur de commande différente :

```bash
sudo smartctl -d sat,12 -a /dev/sdX
sudo smartctl -d sat,16 -a /dev/sdX
```



---

## 4 - Basculer temporairement vers usb-storage

Si les commandes ci-dessus échouent, désactivez temporairement UAS pour votre périphérique :

```bash
sudo modprobe -r uas
sudo modprobe usb-storage quirks=XXXX:YYYY:u
```

Débranchez puis rebranchez le disque, puis relancez smartctl :

```bash
sudo smartctl -d sat -a /dev/sdX
```

---

## 5- Solutions permanentes

### Option A — Désactiver UAS (recommandé)

Crée un fichier de configuration modprobe :

```bash
sudo nano /etc/modprobe.d/usb-storage-quirks.conf
```

Ajoutez :

```
options usb-storage quirks=XXXX:YYYY:u
```

Le flag `:u` active `IGNORE_UAS` — le noyau utilisera `usb-storage` à la place de `uas`.

### Option B — Forcer le SAT passthrough en gardant UAS

> ⚠️ À vos risques et périls — peut causer des instabilités sur certains chipsets.

Même fichier, mais avec le flag `:t` qui force le passthrough SAT malgré UAS :

```
options usb-storage quirks=XXXX:YYYY:t
```

### Pour plusieurs périphériques

Séparez les entrées par des virgules :

```
options usb-storage quirks=XXXX:YYYY:u,AAAA:BBBB:u
```

### Mise à jour de l'initramfs

Après avoir créé ou modifié le fichier de configuration :

```bash
sudo update-initramfs -u
```

---

## Option via GRUB

Modifiez `/etc/default/grub` et ajoutez le paramètre à `GRUB_CMDLINE_LINUX_DEFAULT` :

```
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash usb-storage.quirks=XXXX:YYYY:u"
```

Puis mettez à jour GRUB :

```bash
sudo update-grub
```

---

## Référence des flags

| Flag | Valeur hex   | Lettre | Effet                                      |
|------|-------------|--------|--------------------------------------------|
| `IGNORE_UAS`  | `0x00800000` | `:u`   | Désactive UAS, bascule sur usb-storage     |
| `NO_ATA_1X`   | `0x02000000` | `:t`   | Force le SAT passthrough (risqué)          |

---

## Vérification

Après redémarrage ou reconnexion du disque :

```bash
sudo smartctl -a /dev/sdX
```

Un résultat valide commencera par une section `=== START OF INFORMATION SECTION ===` avec les informations de votre disque.

---

## Sources

- [smartmontools Wiki — SAT with UAS under Linux](https://www.smartmontools.org/wiki/SAT-with-UAS-Linux)
- [Kernel Parameters Documentation](https://www.kernel.org/doc/html/latest/admin-guide/kernel-parameters.html)

# Vérifier l'intégrité de la mémoire flash d'une carte SD / clé USB

## Système utilisé

- **Distribution :** LMDE 7 (Linux Mint Debian Edition)

---

## 1. Installation de f3

f3 (Fight Flash Fraud) est un utilitaire pour tester la capacité réelle et détecter les clés USB ou cartes mémoire frauduleuses.

Pour installer f3 sur LMDE 7, ouvrez un terminal et tapez :

```bash
sudo apt update
sudo apt install f3
```

---

## 2. Identifier la clé USB

Avant de tester la clé, il faut connaître son identifiant de périphérique. Branchez la clé USB et exécutez :

```bash
lsblk
```

Vous verrez une liste des disques et partitions. Exemple de sortie :

```
NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda      8:0    0  500G  0 disk
├─sda1   8:1    0  500G  0 part /
sdb      8:16   1  32G   0 disk
└─sdb1   8:17   1  32G   0 part /media/usb
```

> ⚠️ **Important :** Notez bien le périphérique (`/dev/sdX`). Si vous choisissez le mauvais disque, vous risquez de supprimer des données importantes.

---

## 3. Tester la clé USB avec f3probe

La commande `f3probe` permet de vérifier la capacité réelle et la vitesse d'écriture de la clé.

> ⚠️ **Cette opération efface complètement la clé.**

```bash
sudo f3probe --destructive --time-ops /dev/sdX
```

- Remplacez `/dev/sdX` par l'identifiant de votre clé (ex. `/dev/sdb`).
- `--destructive` : efface toutes les données sur la clé.
- `--time-ops` : affiche le temps de chaque opération pour mesurer la vitesse.

Exemple de sortie :

```
F3 probe 7.0
...
Probe finished: 31.2 GiB, speed 20.1 MB/s
No bad sectors found
```

> Si des secteurs sont « bad », cela indique que la clé est défectueuse ou frauduleuse.

---

## 4. Résumé des commandes

```bash
sudo apt install f3                              # Installer f3
lsblk                                            # Identifier la clé USB
sudo f3probe --destructive --time-ops /dev/sdX   # Tester la clé
```

## Liens associés

- [Documentation officielle](https://fight-flash-fraud.readthedocs.io/en/latest/introduction.html)

# Vérifier l'état de la batterie sous Linux

# Vérifier l'état de la batterie sous Linux avec UPower

---

## 1. Ouvrir le terminal

Ouvrir l'application Terminal sur le système Linux.

---

## 2. Lister les périphériques d'alimentation

Utiliser la commande suivante pour afficher tous les périphériques liés à l'alimentation :

```bash
upower --enumerate
```

Cette commande retourne une liste de chemins correspondant aux différents périphériques détectés.

Exemple de sortie :

```
/org/freedesktop/UPower/devices/line_power_AC
/org/freedesktop/UPower/devices/battery_BAT0
/org/freedesktop/UPower/devices/mouse_dev_CD_27_F1_E6_00_B3
/org/freedesktop/UPower/devices/mouse_hidpp_battery_10
/org/freedesktop/UPower/devices/DisplayDevice
```

---

## 3. Identifier le chemin de la batterie

Repérer dans la liste le chemin correspondant à la batterie. Dans la plupart des cas, il ressemble à :

```
/org/freedesktop/UPower/devices/battery_BAT0
```

---

## 4. Afficher les informations de la batterie

Utiliser la commande suivante en remplaçant le chemin par celui de la batterie :

```bash
upower -i /org/freedesktop/UPower/devices/battery_BAT0
```

---

## 5. Comprendre les informations affichées

Cette commande affiche des informations détaillées sur la source d'alimentation, notamment :

- **Niveau de charge actuel**
- **État** (en charge, décharge, etc.)
- **Capacité de la batterie**
- **État de santé de la batterie** (battery health)
- **Temps restant estimé**

# Connecter un clavier Keychron 3 Pro sur LMDE

## Système utilisé

- **Distribution :** LMDE 7 (Linux Mint Debian Edition)

---

## 1. Contexte matériel

Il semble que le firmware de ce clavier nécessite une suite d'actions dans un ordre spécifique pour fonctionner en Bluetooth sous linux.

## 2. Supprimer le clavier si il est déjà reconnu

Supprimer le clavier des périphériques bluetooth connus s'il est déjà reconnu par LMDE.

- Aller dans le Menu
- Rechercher "Gestionnaire Bluetooth"
- Supprimer le clavier

## 3. Amorcer le clavier

- Sur le clavier, maintenez Fn+le chiffre à assigner à cet ordinateur (le clavier peut se connecter en Bluetooth à 3 appareils différents). Le clavier passe en mode jumelage.
- Retourner dans le gestionnaire Bluetooth et actualiser la liste de périphériques

> ⚠️ **Important :** Ne vous connectez pas directement au clavier, faites un clic droit dessus dans la liste, et faites "Jumeler/Appairer". Le jumelage prend quelques secondes, suite à quoi le clavier redémarre. Patientez jusqu'à ce qu'il réapparaisse dans la liste des périphériques Bluetooth.

## 4. Se reconnecter au clavier

- Connectez-vous au clavier en double-cliquant dessus dans la liste.
- Une fois le clavier connecté, faîtes un clic-droit dessus dans la liste, et indiquez "Faire confiance/Approuver".

# Effacer de façon sécurisée des données sous LMDE

## La commande `shred`

`shred` détruit les données en les écrasant avec des informations aléatoires ou des zéros. Il suffit de cibler un fichier ou une zone de stockage et de définir les options souhaitées.

> **Attention :** `shred` est conçu pour rendre les données irrécupérables. Vérifier soigneusement le fichier ou périphérique cible avant d'exécuter la commande. Le traitement peut être très long sur les supports de grande capacité.

### Installation

Vérifier que `shred` est installé en tapant `shred` sans argument. Si ce n'est pas le cas :

```bash
sudo apt install -y shred
```

`shred` fait également partie du paquet **GNU Coreutils**, présent sur la plupart des distributions :

```bash
sudo apt install -y coreutils
```

### Options principales

| Option | Description |
|--------|-------------|
| `-n`   | Définit le nombre de passages (écrasements) |
| `-v`   | Affiche la progression |
| `-f`   | Force l'écrasement des fichiers en lecture seule |
| `-z`   | Ajoute un dernier passage avec des zéros |
| `-u`   | Écrase puis supprime le fichier |

Pour afficher toutes les options :

```bash
shred --help
```

### Exemple 1 : détruire un fichier

Écrasement simple avec les paramètres par défaut :

```bash
shred filename.txt
```

Avec 10 passages :

```bash
shred -n 10 filename.txt
```

Avec un dernier passage à zéros :

```bash
shred -z filename.txt
```

Les options peuvent être combinées selon les besoins.

### Exemple 2 : détruire une partition


Afin de lister les partitions existantes des supports de stockage présents sur le PC, exécuter cette commande :
```bash
lsblk
```
Les partitions seront affichées et vous pourrez choisir la partition à détruire.

Pour cibler une partition (ici `sdb1`) avec 5 passages, un dernier passage à zéros, puis suppression :

```bash
shred -n 5 -uvz /dev/sdb1
```
> **Attention :** Détruire une partition la rend inexploitable. Veuillez vérifier soigneusement la partition sélectionnée.
---

## La commande `dd`

`dd` est une commande polyvalente qui permet notamment d'écraser de manière sécurisée les données d'un volume, ainsi que de copier et convertir des arborescences de systèmes de fichiers.

> **Attention :** `dd` écrase les données existantes de façon irréversible. Vérifier attentivement les commandes avant de les exécuter, en particulier sur des systèmes en production.

### Nettoyer un disque

Démonter le disque, puis l'écraser avec du contenu aléatoire :

```bash
umount /dev/sdX
dd if=/dev/urandom of=/dev/sdb bs=1M status=progress
```
> **Attention :** Remplacer "sdX" par le disque à nettoyer. Sélectionner le mauvais disque l'effacera irrémédiablement.

# Pouvoir taper des chiffres avec Verr. Maj sur la ligne du haut

## Objectif

Par défaut sur un clavier AZERTY, la touche `Verr Maj` active les majuscules mais **ne permet pas** de taper directement les chiffres (1, 2, 3…) sur la ligne du haut. Cette manipulation corrige ce comportement.

---

## Procédure

### 1. Ouvrir les paramètres clavier

Allez dans **Paramètres** > **Clavier**.

### 2. Accéder aux options XKB

Dans la fenêtre des paramètres clavier, cliquez sur l'onglet ou le bouton **Options XKB**.

### 3. Activer l'option

Recherchez l'entrée :

> **Verr Maj donne les chiffres sur la ligne des chiffres des claviers AZERTY*

Cochez cette option.

---

## Résultat

Une fois l'option activée, lorsque `Verr Maj` est enclenché :

| Touche | Sans Verr Maj | Avec Verr Maj |
|--------|--------------|---------------|
| `&`    | &            | 1             |
| `é`    | é            | 2             |
| `"`    | "            | 3             |
| `'`    | '            | 4             |
| `(`    | (            | 5             |
| `-`    | -            | 6             |
| `è`    | è            | 7             |
| `_`    | _            | 8             |
| `ç`    | ç            | 9             |
| `à`    | à            | 0             |

---

> 💡 **Astuce :** Cette option est particulièrement utile si vous saisissez fréquemment des suites de chiffres sans vouloir maintenir `Shift` en permanence.

# LMDE 7 - Dossier boot full !?

@TODO :
ajouter passa mode auto des paquets restants (kbuild)

Lors des mises à jours du noyau Linux, différents fichiers sont créés dans la partition **/boot**.

Cette partition, lors de l'**installation standard de LMDE 7** et dimentionnée à +/- 1GB.

Comme LMDE ne supprime pas automatiquement les anciennes versions du noyau, cette partition ne peut contenir que 6 versions. Une fois pleine, les mises à jour du noyau ne sont plus possibles et l'on se retrouve avec une notification **"L'espace disque est faible" - "Il ne reste plus que boot d'espace libre sur le volume '0 octet'"** (??? traduction).

Pour voir l'encombrement disque et particulièrement celui de **/boot**

    df -h

## Solutions pour le grand public

### À l'installation

Lors de l'installtion et **avant toute mise à jour** :

**Gestionnaire de mises à jour** > Menu **Édition** > **Préférences** > onglet **Automatisation**

Cocher **"Appliquer les mises à jour automatiquement"** et **"Supprimer les noyaux et les dépendances obsolètes"**

En effet, quand les mises à jour sont faites par l'utilisateur elles sont marquées comme installée manuellement et donc, ne sont pas supprimées automatiquement.

### Aprés l'installation

Aprés l'installation, lorsque les paquets Linux sont installés via la Gestionnaire de mises à jour, ils sont marqués étant installés manuellement.

Il faut donc les marquer comme installés automatiquement.

Pour lister les paquets en ** manual**

    apt-mark showmanual | grep linux

Il faut donc passer tous les paquets linux en **auto**

    sudo apt-mark auto linux-headers-6.12.*

    sudo apt-mark auto linux-image-6.12*



On vérifie que les paquets sont passés en **auto**

    apt-mark showauto | grep linux


    

## Solution pour les Geeks

Lister les images présentes :

    dpkg --list | grep linux-image|linux-headers'

Retourne

    ii  linux-headers-6.12.88+deb13-amd64          6.12.88-1                             amd64        Header files for Linux 6.12.88+deb13-amd64
    ii  linux-headers-6.12.88+deb13-common         6.12.88-1                             all          Common header files for Linux 6.12.88+deb13
    ii  linux-headers-6.12.90+deb13-amd64          6.12.90-1                             amd64        Header files for Linux 6.12.90+deb13-amd64
    ii  linux-headers-6.12.90+deb13-common         6.12.90-1                             all          Common header files for Linux 6.12.90+deb13
    ii  linux-headers-6.12.90+deb13.1-amd64        6.12.90-2                             amd64        Header files for Linux 6.12.90+deb13.1-amd64
    ii  linux-headers-6.12.90+deb13.1-common       6.12.90-2                             all          Common header files for Linux 6.12.90+deb13.1
    ii  linux-headers-amd64                        6.12.90-2                             amd64        Header files for Linux amd64 configuration (meta-package)
    ii  linux-image-6.12.88+deb13-amd64            6.12.88-1                             amd64        Linux 6.12 for 64-bit PCs (signed)
    ii  linux-image-6.12.90+deb13-amd64            6.12.90-1                             amd64        Linux 6.12 for 64-bit PCs (signed)
    ii  linux-image-6.12.90+deb13.1-amd64          6.12.90-2                             amd64        Linux 6.12 for 64-bit PCs (signed)
    ii  linux-image-amd64                          6.12.90-2                             amd64        Linux for 64-bit PCs (meta-package)

Supprimer les images non utilisées.

    sudo apt-get --purge remove linux-image-6.12.88+deb13-amd64

Ainsi que les headers 

    sudo apt-get --purge remove linux-headers-6.12.88+deb13-amd64

**À tester** : une fois l'image supprimée la suppression des headers devrait fonctionner avec **sudo apt-get autoremove**
    

**NB : Prendre soin de conserver une ancienne version fonctionnelle en cas de besoin.**

## Via le gestionnaire de mise à jour (Update Manager)

Depuis le **Gestionnaire de mise à jour**, aller dans le menu **Edition > Préférences** puis dans l'onglet **Automatisation**.

En bas de cet onglet, il faut activer **Maintenance Automatique (Automatic Maintenance)**

Les anciens kernels seront supprimés une fois par semaine en conservant une ancienne version.

Cette option ne supprime pas les kernels installés manuellement.

Note : cette tâche est effectuée par l'intermédiaire d'un **timer systemctl** et non par une tâche **cron**.

Elle (**mintupdate-automation-autoremove.timer**) apparait normalement dans le listing des timers systemctl :

    systemctl list-timers

# Préinstallation de LMDE 7 sur un SSD pour en faire un support prêt à l'emploi

## Contexte

- **Machine de travail :** PC sous LMDE 7
- **Clé USB :** Live LMDE 7
- **SSD/HDD externe :** support d'installation
- **Objectif :** Préparer un SSD avec LMDE 7 installé, destiné à être branché sur un **autre PC**

---

## Matériel nécessaire

- Clé USB LMDE 7 (live/bootable)
- SSD/HDD (branché en USB ou en interne)
- Machine sous LMDE 7

---

## Procédure

### Étape 1 — Brancher la clé USB et le SSD

Branchez simultanément :
- la **clé USB LMDE 7**
- le **SSD/HDD cible** (via USB ou SATA)

---

### Étape 2 — Accéder au Boot Menu et démarrer sur la clé USB

1. Démarrez le PC.
2. Au démarrage, appuyez sur la touche du **Boot Menu** 
3. Sélectionnez la **clé USB LMDE 7** dans la liste.
4. Attendez que le bureau live se charge.

---

### Étape 3 — Vérifier le format du SSD

Avant d'installer, confirmez que le SSD est bien formaté en `ext4`.
> ⚠️ **Avant de valider**, vérifiez l'intitulé des disques avec `lsblk` dans un terminal :

```bash
lsblk
```
Ouvrez un terminal et exécutez :

```bash
lsblk -f
```

Repérez votre SSD dans la liste (ex. `sdb`, `sdc`…) et vérifiez que sa partition est en **ext4**.  
Si ce n'est pas le cas, formatez-la :

```bash
# Remplacer /dev/sdX par le bon disque (ex: /dev/sdb)
sudo mkfs.ext4 /dev/sdX
```

---

### Étape 4 — Installer LMDE 7

1. Lancez l'**installeur LMDE 7** depuis le bureau live.
2. Suivez les étapes jusqu'à la sélection des disques.
3. **Sélectionnez le SSD** comme disque d'installation (et non le disque interne du PC).
4. Pour le **GRUB**, installez-le aussi sur le **SSD** (ex. `/dev/sdb`), pas sur le disque interne.



Exemple de sortie attendue :

```
NAME   MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
sda    ...          ...     disk   ← disque interne du PC (ne pas toucher)
sdb    ...          ...     disk   ← SSD cible
```

5. Confirmez et lancez l'installation.

---

### Étape 5 — Redémarrer sur le Boot Menu

1. Une fois l'installation terminée, **redémarrez**.
2. Accédez à nouveau au **Boot Menu**.
3. Sélectionnez le **SSD** dans la liste de démarrage.

---

### Étape 6 — Vérifier le bon fonctionnement

1. LMDE 7 doit démarrer normalement depuis le SSD.
2. Connectez-vous et vérifiez que tout fonctionne.
3. Le SSD est maintenant prêt à être branché sur l'**autre PC**.

---

## Conseils

- Installez le GRUB **uniquement sur le SSD** pour ne pas écraser le bootloader du PC de travail.
- Si le GRUB ne détecte pas le bon disque au démarrage sur l'autre PC, accédez au Boot Menu de ce PC et sélectionnez le SSD manuellement.
- Utilisez `lsblk` et `lsblk -f` autant que nécessaire pour identifier les bons disques avant toute opération.
- Remerciez Timéo pour sa première doc ;)

# Modifier la vitesse de scroll avec un trackpad

## Prérequis

- LMDE 7 avec driver **libinput** (le plus courant)
- Accès au terminal

Pour vérifier ton driver :
```bash
grep -i "using input driver" /var/log/Xorg.0.log
```

---

## 1. Identifier le pavé tactile

```bash
xinput list
```

Repère la ligne correspondant à ton pavé tactile et note son **ID** (ex: `id=9`).

Exemple de sortie :
```
⎜   ↳ ELAN2204:00 04F3:3109 Touchpad    id=9   [slave  pointer  (2)]
```

---

## 2. Vérifier les propriétés disponibles

```bash
xinput list-props 9
```

La propriété qui contrôle la vitesse de défilement est :

```
libinput Scrolling Pixel Distance (344):	15
```

> **Principe :**
> - Valeur **plus grande** → moins d'événements scroll → défilement **plus lent**
> - Valeur **plus petite** → plus d'événements scroll → défilement **plus rapide**

---

## 3. Modifier la vitesse temporairement

Utilise `xinput set-prop` pour tester différentes valeurs **sans redémarrage** :

```bash
# Plus lent (valeur plus grande)
xinput set-prop 9 344 30

# Valeur par défaut
xinput set-prop 9 344 15

# Plus rapide (valeur plus petite)
xinput set-prop 9 344 8
```

> ⚠️ Ce réglage est **temporaire** : il est réinitialisé à chaque redémarrage de session.

---

## 4. Rendre le réglage permanent

Une fois la valeur idéale trouvée, crée un fichier de configuration Xorg :

```bash
sudo nano /etc/X11/xorg.conf.d/70-touchpad.conf
```

Contenu à insérer (remplace `25` par ta valeur) :

```
Section "InputClass"
    Identifier "ELAN2204 Touchpad"
    MatchIsTouchpad "on"
    Driver "libinput"
    Option "ScrollPixelDistance" "25"
EndSection
```

Sauvegarde et quitte :
- `Ctrl+O` → confirmer
- `Ctrl+X` → quitter

Puis **redémarre ta session** (ou le PC) pour appliquer le changement.

---

## 5. Vérifier que le réglage est actif

Après redémarrage :

```bash
xinput list-props 9 | grep "Scrolling Pixel Distance"
```

La valeur doit correspondre à celle définie dans le fichier de config.

---

## Récapitulatif des valeurs

| Valeur | Effet |
|--------|-------|
| `5 – 10` | Défilement très rapide |
| `15` | Valeur par défaut |
| `20 – 30` | Défilement lent |
| `40+` | Défilement très lent |

---

## Références

- [libinput documentation](https://wayland.freedesktop.org/libinput/doc/latest/)
- [Arch Wiki — libinput](https://wiki.archlinux.org/title/libinput)

# Booter sur une autre distribution sur un Mac avec processeur Intel

> **Prérequis :** Clé USB bootable Linux déjà créée.
> Ce guide concerne uniquement les **Mac Intel**. Pour Apple Silicon (M1/M2/M3/M4), la procédure est différente.

---

## Étape 1 — Redémarrer avec la touche Option ⌥

1. Assurez-vous que votre **clé USB Linux est bien branchée** sur le Mac.
2. Redémarrez votre Mac.
3. Dès que l'écran s'éteint (ou dès que vous entendez le son de démarrage), **maintenez la touche `Option (alt) ⌥` enfoncée**.
4. Continuez à maintenir la touche jusqu'à ce que le **gestionnaire de démarrage** apparaisse à l'écran.

---

## Étape 2 — Choisir le périphérique de démarrage

Une fois le gestionnaire de boot affiché, vous verrez plusieurs icônes de disques disponibles.

- Repérez le lecteur intitulé **« EFI Boot »** (icône orange).
- Sélectionnez-le à l'aide :
  - de la **souris**, ou
  - des **touches fléchées** du clavier, puis validez avec `Entrée`.

---

## Étape 3 — Démarrage sur Linux

Le Mac va alors démarrer sur votre distribution Linux (Ubuntu, Mint, Fedora, Debian, etc.).

Vous pourrez :

- **Tester Linux** directement depuis la clé USB, sans rien modifier sur votre Mac.
- **Lancer l'installation** de Linux si vous souhaitez aller plus loin (dual boot ou remplacement de macOS).

---

## Notes importantes

- Cette procédure **ne modifie pas** votre installation macOS existante si vous choisissez uniquement de tester Linux.
- Le Mac redémarrera normalement sur macOS si vous n'appuyez pas sur `Option ⌥` au démarrage.
---

# Installer adb et fastboot sur votre PC avec Linux pour installer une rom custom

> Source originale [community.e.foundation](https://community.e.foundation/t/tuto-installer-adb-et-fastboot-sur-votre-pc-avec-linux/54357)
> 

> Ce document a été édité le 17/07/26. Si les commandes indiquées ne répondent pas au besoin, adaptez le nom du fichier car ce dernier aura probablement changé d'intitulé entre temps.
## 1. Télécharger le SDK Platform Tools

- Je vais sur la page : [Notes de version du composant SDK Platform Tools](https://developer.android.com/studio/releases/platform-tools?hl=fr)
- Je clique sur le lien « Télécharger la version Linux du composant SDK Platform-Tools »
- Je coche en bas de page « I have read and agree with the above terms and conditions »
- Je clique sur le lien « Download Android Platform-Tools for Linux »
- Le fichier `platform-tools-latest-linux.zip` est dans le dossier « Téléchargements »

## 2. Créer un dossier de destination

Je crée un dossier dans le `/home` :

```bash
mkdir ~/android-adb-fastboot
```

> Le [tilde](https://fr.wikipedia.org/wiki/Tilde) suivi de la [barre oblique](https://fr.wikipedia.org/wiki/Barre_oblique) remplace `/home/user/`.

## 3. Déplacer le fichier .zip

Je déplace le fichier `.zip` dans le dossier créé précédemment :

```bash
mv ~/Téléchargements/platform-tools-latest-linux.zip ~/android-adb-fastboot
```

## 4. Dézipper le fichier

```bash
unzip ~/android-adb-fastboot/platform-tools-latest-linux.zip -d ~/android-adb-fastboot
```

## 5. Vérifier l'installation

### Pour adb

```bash
~/android-adb-fastboot/platform-tools/adb version
```

Réponse attendue : `Version 34.0.5-10900879` (même version que le fichier `.zip`, donc c'est ok).

### Pour fastboot

```bash
~/android-adb-fastboot/platform-tools/fastboot --version
```

Réponse attendue : `fastboot version 34.0.5-10900879` (même version que le fichier `.zip`, donc c'est ok).

## 6. Connecter le smartphone

Mon smartphone est allumé sur la page d'accueil, je le branche au PC. Il se met à charger la batterie.

À ce niveau, il y a deux possibilités pour lancer la commande `adb devices` :

### Cas 1 — Installation de e-OS à partir d'Android

- Vous avez activé les **Options développeurs** sur Android.
- Dans ce cas, la commande :

```bash
~/android-adb-fastboot/platform-tools/adb devices
```

- vous demande d'autoriser => **Autoriser**
- puis vous répond :

```
daemon not running; starting now at tcp:5037
daemon started successfully
List of devices attached
2cf1d3c63d037ece	device
```

ou simplement :

```
2cf1d3c63d037ece
```

Vous pouvez maintenant lancer d'autres commandes adb.

### Cas 2 — Mise à niveau (upgrade)

Vous ne pouvez activer les options développeurs qu'à partir d'une installation DEV (développeurs).

## Notes et retours de la communauté

- Il est nécessaire d'avoir activé le **débogage USB (adb)** dans les options développeur au préalable.
- En cas de souci de détection du périphérique, il est recommandé de tester avec un autre câble USB (la mise en charge seule n'est pas un indicateur suffisant de bon fonctionnement du câble pour les données) et éventuellement un autre smartphone.
- L'option **Enable adb** dans e-Recovery (Advanced options) sert à activer le sideload, pas à autoriser les commandes adb vers l'appareil — ce n'est donc pas la même chose que le débogage USB activé depuis Android.
- Il n'est pas possible d'installer /e/OS depuis Android : cela se fait en mode **fastboot**.

## Ressources complémentaires

- [[HOWTO] an Unified Install Guide Project for /e/](https://community.e.foundation/t/howto-an-unified-install-guide-project-for-e/36234/)
- [[HOWTO] Installer ADB / fastboot sur mon PC/Mac](https://community.e.foundation/t/howto-installer-adb-fastboot-sur-mon-pc-mac/3394)

# Installation de LMDE 7 sur Mac qui a déjà eu une tentative d'installation

## Contexte

- **Cible :** Mac avec tentative d'installation Linux précédente ratée
- **Objectif :** Installer LMDE 7 (Linux Mint Debian Edition 7) proprement
- **Situation de départ :** Le disque interne est dans un état instable (install précédente incomplète)

---

## Étape 1 — Premier boot sur la clé USB : BOOT FAILED

### Symptôme

Au démarrage sur la clé USB LMDE 7, le kernel démarre et charge les pilotes USB, puis tombe en erreur dans un shell BusyBox (initramfs) :

```
BOOT FAILED!
This Live System image failed to boot.
...
Unable to find a medium containing a live file system
```

### Cause

Le système live (squashfs) n'est pas trouvé sur le support. Causes possibles :
- Clé USB mal gravée (fichiers copiés au lieu d'une image brute)
- ISO corrompue ou incomplète
- Clé USB abîmée par une tentative précédente

### Solution — Réinstaller le système complètement

## Étape 2 — Boot sur le disque interne : EFI cassé

### Symptôme

En bootant sur le disque interne (hors clé USB), l'EFI affiche :

```
Failed to open \EFI\BOOT\grubx64.efi - Not Found
Failed to load image : Not Found
start_image() returned Not Found, falling back to default loader
Failed to open \EFI\BOOT\grubx64.efi - Not Found
Failed to load image : Not Found
start_image() returned Not Found
```

### Cause

L'installation précédente a laissé le disque dans un état incomplet :
- Partition EFI (ESP) présente mais vide, ou sans bootloader
- Entrée NVRAM pointant vers un fichier inexistant

**Il n'y a aucun système bootable sur ce disque.** C'est attendu si l'install précédente a été interrompue.

Ne pas chercher à réparer ce boot cassé. La solution la plus propre est d'**effacer complètement le disque** puis de repartir sur un disque vierge avec l'installeur LMDE de la clé bootable.

---

## Étape 3 — Effacer le disque depuis le shell

### Contexte

Depuis le shell BusyBox de l'initramfs (clé USB), on peut accéder au disque interne et l'effacer sans avoir besoin d'un système installé.

### Identifier le disque

```sh
ls /dev/sdX
```

Remplacer X par le disque correspondant 

### Effacer la table de partitions et les partitions

```sh
dd if=/dev/zero of=/dev/sdX bs=1M count=100
```

Cela écrit 100 Mo de zéros au début du disque, ce qui efface :
- La table de partitions (GPT/MBR)
- La partition EFI
- Tous les résidus de l'installation précédente

**Résultat attendu :**
```
100+0 records in
100+0 records out
```

> ⚠️ **Cibler `/dev/sdX`** (le disque entier), pas `sdX1` ou `sdX2`.  
> Cette opération est **irréversible**.

### Redémarrer

```sh
reboot
```

Au redémarrage, maintenir **Option (⌥)** pour accéder au boot picker du Mac et sélectionner la clé USB.

---

## Suite

Le disque est maintenant vierge. L'étape suivante est de booter correctement sur la clé USB LMDE et de lancer l'installeur en choisissant l'option **"Effacer le disque entier"**, qui recréera une partition EFI propre avec un GRUB fonctionnel.

# Mac entre 2009 et 2013

# WI-FI
## Symptomes
Le mac refuse de se connecter à certains réseaux wifi malgrès qu'il les voient. Les partages de connexions semblent fonctionner.

## Origine du problème
Le driver de la carte 0a5c:4500 Broadcom Corp. BCM2046B1 USB 2.0 Hub (part of BCM2046 Bluetooth) par défaut est le module wl, utiliser le module br43 semble résoudre le problème.

## Diagnostique
faire un ```lsusb | grep Broadcom``` dans un terminal si le mac utilise la BCM2046B1, on va retirer le module wl avec ```sudo modprobe -r wl``` attendre quelques secondes et charger b43 ```sudo modprobe b43``` Si le wifi fonctionne, on peut pereniser la solution.

## Fix
Il faut blacklist wl et déblacklister b43
```sudo mv /etc/modprobe.d/broadcom-sta-dkms.conf /etc/modprobe.d/broadcom-sta-dkms.conf.disabled ```
```sudo sh -c "echo 'blacklist wl' >> /etc/modprobe.d/blacklist.conf"```

# Configurer l'écran de connexion LMDE 7

## 1. Principe

L'écran de connexion de LMDE 7 est géré par **LightDM**, qui utilise le greeter **Slick Greeter**. Ses réglages sont lus dans un seul fichier :

```
/etc/lightdm/slick-greeter.conf
```

Le greeter tourne sous l'utilisateur système `lightdm`. Toute ressource utilisée (image, logo) doit donc se trouver **hors de votre dossier personnel** et être **lisible par tous**.

## 2. Vérifier que Slick Greeter est actif

```bash
grep -r greeter-session /etc/lightdm/
```

Le résultat doit contenir :

```
greeter-session=slick-greeter
```

Sinon, le fichier `slick-greeter.conf` est ignoré.

Vérifier l'installation du paquet :

```bash
dpkg -l | grep slick-greeter
```

## 3. Préparer les images

```bash
sudo cp ~/Images/mon-fond.jpg /usr/share/backgrounds/mon-fond.jpg
sudo chmod 644 /usr/share/backgrounds/mon-fond.jpg
```

Formats conseillés : JPG ou PNG. Vérification des droits :

```bash
ls -l /usr/share/backgrounds/mon-fond.jpg
# attendu : -rw-r--r--
```

## 4. Éditer la configuration

Sans passer par `xed admin:///` (souvent non fonctionnel), utilisez `nano` :

```bash
sudo nano /etc/lightdm/slick-greeter.conf
```
Puis coller 
```bash
background=/usr/share/backgrounds/mon-fond.jpg
draw-user-backgrounds=false
```


Enregistrer : `Ctrl+X`

Ou en une commande (⚠️ remplace tout le contenu du fichier ; faites d'abord `cat /etc/lightdm/slick-greeter.conf` pour sauvegarder l'existant) :

```bash
sudo tee /etc/lightdm/slick-greeter.conf > /dev/null <<'EOF'
[Greeter]
background=/usr/share/backgrounds/mon-fond.jpg
draw-user-backgrounds=false
EOF
```


## 5. Appliquer les changements

Redémarrer ou se déconnecter. Pour tester sans redémarrer :

```bash
sudo systemctl restart lightdm
```

⚠️ Cela ferme la session graphique : enregistrez votre travail avant.

# Dépannage Ubuntu

# Créer un compte invité sans mot de passe sur Ubuntu 24.04

## Contexte

Par défaut, GDM (GNOME Display Manager) peut être configuré en connexion automatique, ce qui bypasse l'écran de sélection d'utilisateur. L'objectif est de désactiver ce comportement tout en conservant la connexion sans mot de passe pour le compte **guest**.

---
## Étape 1 — Créer un profil invité

Ouvrez vos **Paramètres**, puis allez dans **Système**. Cliquez sur **Ajouter un utilisateur**.

Appelez le compte **guest**, renseignez un mot de passe et enregistrez.
## Étape 2 — Modifier la configuration de GDM

Ouvrez un terminal et éditez le fichier de configuration GDM :

```bash
sudo nano /etc/gdm3/custom.conf
```

Dans la section `[daemon]`, assurez-vous d'avoir :

```ini
[daemon]
AutomaticLoginEnable = false
# AutomaticLogin = guest   ← commenter ou supprimer cette ligne si elle existe
```

Sauvegardez (`Ctrl+O`, `Entrée`, `Ctrl+X`) puis redémarrez GDM :

```bash
sudo systemctl restart gdm3
```

> GDM affichera désormais la liste des utilisateurs au démarrage.
---

# Installation et configuration de Thunar sur Ubuntu 24.04

## Pourquoi Thunar ?

Nautilus (le gestionnaire de fichiers par défaut de GNOME) n'affiche pas nativement :
- La date de création des fichiers
- L'heure et les minutes dans les colonnes
- Les secondes dans les colonnes

Thunar gère tout cela nativement, avec un affichage en liste détaillée configurable.

---

## 1. Installation

```bash
sudo apt install thunar thunar-archive-plugin thunar-volman
```

- `thunar` : le gestionnaire de fichiers principal
- `thunar-archive-plugin` : gestion des archives (zip, tar…) via clic droit
- `thunar-volman` : gestion automatique des volumes/périphériques USB

---

## 2. Premier lancement

```bash
thunar
```

Ou via le lanceur d'applications : chercher **Thunar** ou **Gestionnaire de fichiers**.

---

## 3. Passer en vue Liste

**Affichage → Afficher en liste détaillée**
ou raccourci clavier : `Ctrl+2`

---

## 4. Configurer les colonnes

1. En vue liste, faire un **clic droit sur l'en-tête des colonnes**
2. Sélectionner **Configurer les colonnes…**
3. Cocher les colonnes souhaitées :
   - ✅ **Nom**
   - ✅ **Taille**
   - ✅ **Type**
   - ✅ **Date de modification**
   - ✅ **Date de création**
4. Réorganiser l'ordre par glisser-déposer si besoin
5. Cliquer **Fermer**

---

## 5. Afficher l'heure dans les dates

Par défaut Thunar affiche la date et l'heure (HH:MM) dans les colonnes dès que les fichiers datent de moins d'un an. Pour forcer l'affichage de la date complète avec heure :

**Édition → Préférences → Affichage**
→ Décocher **Afficher les dates relatives** (si disponible selon la version)

---

## 6. Trier par colonne

Cliquer sur l'**en-tête d'une colonne** pour trier.
Cliquer une deuxième fois pour inverser l'ordre (croissant/décroissant).

---

## Résumé des raccourcis clavier Thunar

| Raccourci | Action |
|-----------|--------|
| `Ctrl+1` | Vue icônes |
| `Ctrl+2` | Vue liste détaillée |
| `Ctrl+L` | Barre d'adresse |
| `F5` | Actualiser |
| `Alt+←` | Dossier précédent |
| `Alt+→` | Dossier suivant |
| `Alt+↑` | Dossier parent |

# Dépannage mobile

# Installer LineageOS sur Samsung Galaxy S20 FE 5G (r8q)

> ⚠️ **À NE PAS OUBLIER : le Download Mode**
> Une fois que l'écran de **Download Mode** apparaît sur le téléphone, tu n'as que **10 secondes** pour lancer la commande `samloader` correspondante dans ton terminal. **Un seul essai** est autorisé : si tu rates ce délai, le téléphone **ne prendra plus de commandes** et il faudra tout recommencer depuis le début de l'étape (rallumer, refaire la combinaison de boutons, etc.). Sois donc prêt, avec le terminal ouvert et la commande déjà tapée (ou dans l'historique, prête à relancer), avant de démarrer en Download Mode.

---

## ⚠️ Ne jamais continuer si une étape échoue

Si une étape ne fonctionne pas comme prévu, **arrête-toi** et ne poursuis pas l'installation.

---

## 1. Prérequis de base

- Lire l'intégralité du guide **au moins une fois** avant de commencer, pour éviter les erreurs liées à une étape manquée.
- Avoir `adb` installé sur l'ordinateur.
- Activer le **débogage USB** sur le téléphone.
- Vérifier que le modèle du téléphone correspond **exactement** à l'un de ceux-ci :
  - SM-G781B
  - SM-G781B/DS
  - SM-G781N
  - SM-G7810
- Avoir démarré au moins une fois sur l'OS d'origine (stock) et vérifié que toutes les fonctionnalités marchent.
- Supprimer tous les comptes Google du téléphone pour éviter la protection "Factory Reset Protection" (FRP).
- LineageOS est fourni "tel quel", sans garantie. L'installation se fait **à tes propres risques**.

Si ton téléphone est actuellement sur une version d'Android plus récente ou plus ancienne que celle requise, il faut d'abord mettre à jour ou downgrader avant de continuer. La version requise est **Android 13** (ce qui peut être inférieur à la version de LineageOS installée, ce n'est pas une erreur). S'il existe plusieurs mises à jour de sécurité pour cette version, utiliser la plus récente. Pour upgrade/downgrade, il faudra chercher un guide en ligne (non fourni par LineageOS).

---

## 2. Vérifier le bon firmware

- Le "firmware" = ensemble d'images spécifiques au device, inclus et mis à jour par l'OS stock.
- Les builds LineageOS pour ce device nécessitent qu'**Android 13** (version stock) soit installé avant de suivre ce guide.
- Bien vérifier la **version d'Android**, pas la version de l'OS du fabricant (One UI, etc.).
- Être sur une autre ROM custom, même une build non-officielle de la même version de LineageOS, **ne garantit pas** que ce prérequis est rempli.

> ⚠️ Ne pas installer la bonne version de firmware avant de continuer peut entraîner : échec d'installation de LineageOS, plantages inattendus après installation, ou **dommage permanent** au téléphone.

---

## 3. Instructions pré-installation

1. Connecter le téléphone à un réseau **Wi-Fi**.
2. Activer les **options développeur** : Paramètres → À propos du téléphone → appuyer 7 fois sur "Numéro de build".
3. Dans le menu Options développeur, activer **OEM Unlock**.
4. Télécharger `vbmeta.img` depuis la page officielle (lien "here" dans le wiki source), par exemple vers `~/Bureau/vbmeta.img`.
5. Éteindre le téléphone et démarrer en **Download Mode** :
   - Téléphone éteint : maintenir **Volume Haut + Volume Bas**, puis brancher le câble USB au PC.
   - ⏱️ **Appuyer dans les 10 secondes** sur le bouton correspondant à "Device unlock mode" / "Unlock Bootloader" affiché à l'écran.
   - Le téléphone va redémarrer. Refaire les étapes 1 et 2 (Wi-Fi + réactiver les options développeur).
   - Vérifier que "OEM Unlock" est toujours activé, puis continuer à l'étape suivante.
6. Éteindre à nouveau le téléphone et redémarrer en **Download Mode** :
   - Téléphone éteint : maintenir **Volume Haut + Volume Bas**, puis brancher l'USB.
   - ⏱️ **Tu as 10 secondes** dès l'apparition de l'écran Download Mode pour lancer la commande `samloader` ci-dessous dans ton terminal. **Un seul essai** : passé ce délai, le téléphone reboot automatiquement et il faut recommencer depuis le début de cette étape.
7. Flasher le VBMeta avec `samloader` (remplacer le chemin si besoin) :
   ```
   samloader flash --partition VBMETA ~/Bureau/vbmeta.img
   ```
8. Le téléphone redémarre : tu peux débrancher le câble USB.
9. Le téléphone va demander un **factory reset** : suivre les instructions à l'écran.
10. Refaire la configuration Android en passant toutes les étapes possibles, puis reconnecter au Wi-Fi.
11. Réactiver les options développeur (10 appuis sur "Numéro de build") et vérifier que "OEM Unlock" est toujours activé.

---

## 4. Informations importantes

Les appareils Samsung ont un mode de démarrage spécial appelé **"Download mode"**, similaire au "Fastboot mode" des appareils avec bootloader débloqué. Sous LMDE, on utilise **samloader** pour interagir avec ce mode (au lieu d'Odin, réservé à Windows). La méthode préférée pour installer une recovery custom passe par le Download Mode — rooter le firmware stock n'est **ni nécessaire ni requis**.

---

## 5. Installer la Lineage Recovery via samloader

1. Activer les options développeur (10 appuis sur "Numéro de build").
2. Activer **OEM Unlock** dans le menu Options développeur.
3. Télécharger la **Lineage Recovery** : fichier nommé `recovery.img` (dernière version), par exemple vers `~/Bureau/recovery.img`.
   ⚠️ Utiliser uniquement la recovery officielle liée dans le wiki — les autres recoveries peuvent ne pas fonctionner.
4. Éteindre le téléphone et démarrer en **Download Mode** :
   - Téléphone éteint : maintenir **Volume Haut + Volume Bas**, puis brancher l'USB.
   - Cliquer sur le bouton correspondant à **"Continue"** à l'écran pour entrer en Download Mode.
   - ⏱️ **Tu as 10 secondes** dès l'apparition de l'écran Download Mode pour lancer la commande `samloader` ci-dessous dans ton terminal. **Un seul essai** : passé ce délai, le téléphone reboot automatiquement et il faut recommencer depuis le début de cette étape.
5. Flasher la recovery avec `samloader` (remplacer le chemin si besoin) :
   ```
   samloader flash --partition RECOVERY ~/Bureau/recovery.img
   ```
   Note : le téléphone peut afficher `Downloading... Do not turn off target!!` même une fois le flash terminé, c'est normal.
6. **Rebooter manuellement en recovery** :
   - Retirer/remettre la batterie (si amovible), ou
   - Maintenir **Volume Bas + Power** pendant 8-10 secondes jusqu'à ce que l'écran devienne noir, relâcher immédiatement, puis
   - Téléphone éteint : maintenir **Volume Haut + Power** pendant que le câble USB est branché au PC.
   - ⚠️ Il faut rebooter en recovery **immédiatement** après l'avoir installée, sinon elle sera écrasée au prochain boot.
   - ⚠️ Si la recovery n'affiche pas le logo LineageOS, tu as démarré sur la mauvaise recovery : recommencer cette section depuis le début.

---

## 6. Installer LineageOS depuis la recovery

1. Télécharger le fichier `.zip` de LineageOS souhaité (ou builder son propre package).
   - Note : la page de téléchargement peut contenir des fichiers additionnels non nécessaires à ce guide — les ignorer.
2. Si tu n'es pas déjà en recovery, redémarrer dedans :
   - Téléphone éteint : maintenir **Volume Haut + Power** pendant que l'USB est branché au PC.
   - 💡 Le tactile fonctionne en recovery sur la plupart des appareils. Sinon, utiliser les boutons Volume pour naviguer et Power pour sélectionner.
3. Sélectionner **Factory Reset**, puis **Format data / factory reset**, et suivre le processus de formatage.
   - ⚠️ Cela supprime le chiffrement et **efface tous les fichiers** du stockage interne, et formate la partition cache.
4. Retourner au menu principal.
5. **Sideloader le package `.zip` de LineageOS** — ne pas rebooter avant d'avoir suivi le reste des instructions !
   - Sur le téléphone : sélectionner **"Apply update"**, puis **"Apply from ADB"** pour démarrer le sideload.
   - Sur le PC, lancer la commande de sideload en remplaçant le chemin par le tien :
     ```
     adb -d sideload /home/val/Téléchargements/lineage-23.2-20260711-nightly-r8q-signed.zip
     ```
   - Note : si la vérification de signature échoue, l'image est corrompue ou n'est pas une image LineageOS officielle → la retélécharger.
   - 💡 Normalement `adb` affiche `Total xfer: 1.00x`. Mais parfois le transfert semble s'arrêter à 47% avec `adb: failed to read command: Success`, ou afficher `No error`/`Undefined error: 0` — c'est normal et le flash a quand même réussi.

---

## 7. Installer les add-ons (optionnel)

- Pour l'architecture **arm64**, l'add-on peut être téléchargé depuis le lien du wiki.
- ⚠️ **Cet add-on doit être installé avant le premier boot sur LineageOS !**
- Depuis la recovery : cliquer sur **"Apply update"**, puis **"Apply from ADB"**, puis exécuter pour chaque package :
  ```
  adb -d sideload /path/to/zip
  ```
- Si un écran affiche **"Signature verification failed"**, cliquer sur **"Yes"** — c'est normal, les add-ons ne sont pas signés avec la clé officielle de LineageOS.

---

## 8. Terminé !

Une fois tout installé avec succès, tu peux redémarrer sur le nouvel OS :

- Cliquer sur la flèche retour en haut à gauche, puis **"Reboot system now"**.

### Et après ?

- Pour reverrouiller le bootloader, voir la FAQ officielle LineageOS à ce sujet.
- Si un avertissement s'affiche à chaque démarrage, il n'y a rien à faire, c'est normal — l'ignorer.
- Ne pas désinstaller d'applications système : LineageOS n'embarque déjà qu'un minimum d'apps, et cela peut casser le système.
- LineageOS ne fournit **aucun support** pour le rootage.
- LineageOS est Android : il supporte les apps comme n'importe quel appareil Android, mais certaines apps peuvent choisir d'exclure les appareils selon "l'intégrité du système" (Device integrity) — voir la section "quirks" du device sur le wiki.

---

## 9. Ressources utiles

- **samloader-rs** — outil (réécriture en Rust de samloader) utilisé dans ce guide pour flasher le VBMeta et la recovery (sections 3 et 5), et qui permet aussi de télécharger le firmware stock Samsung officiel (utile pour récupérer le firmware Android 13 requis avant l'installation, voir section 2) :
  https://github.com/topjohnwu/samloader-rs

- **Builds LineageOS pour le r8q** — page officielle listant toutes les builds (nightly, etc.) disponibles à télécharger pour ce device :
  https://download.lineageos.org/devices/r8q/builds

# Dépannage logiciel

# Impossible de démarrer le terminal sous LMDE 7

> **Note :** Problème rencontré sur une configuration bilingue uniquement.

## Configuration

- **Langue :** en_US.UTF-8
- **Région :** fr_FR.UTF-8
- **Time :** fr_FR.UTF-8

Langues complètement installées.

## Problème

Suite à une mise à jour de `libc`, les locales FR ne sont pas générées. Ce qui crée un problème avec le terminal qui ne démarre plus.

## Solution

Pour rétablir les locales FR, il faut repasser par le panneau de configuration des langues et réinstaller.

## Pour éviter que cela se reproduise

Il faut indiquer qu'il faut re-générer la locale FR :

```bash
sudo nano /etc/locale.gen
```

Décommenter la ligne `fr_FR.UTF-8 UTF-8` en supprimant le `#`.

Vérifier que toutes les locales se génèrent bien :

```bash
sudo dpkg-reconfigure locales
```

# Mot de passe oublié (LMDE, Ubuntu, Windaube 10)

## Changement mot de passe LMDE

1. Accéder au GRUB (si le GRUB n'apparaît pas, appuyer sur `Shift` au démarrage)
2. Une fois sur le GRUB, demander l'édition en appuyant sur `e`
3. Se déplacer avec les flèches
4. Trouver la ligne et ajouter `rw init=/bin/bash` à la fin :

```
linux /vmlinuz-6.12.57+deb13-amd64 root=/dev/mapper/lvmlmde-root ro cryptdevice=UUID=d20c4134-96f9-4447-8d57-d0ccabea6757:lvmlmde root=/dev/mapper/lvmlmde-root resume=/dev/mapper/lvmlmde-swap quiet splash rw init=/bin/bash
```

> ⚠️ Attention, clavier en QWERTY ! Voir le [layout ici](https://upload.wikimedia.org/wikipedia/commons/d/da/KB_United_States.svg)

5. Quitter avec `F10` ou `Fn+F10`
6. À l'invite de commande root, vérifier les noms d'utilisateurs présents avec :

```
ls /home
```

7. Changer le mot de passe avec la commande :

```
passwd nomutilisateur
```

8. Entrer le nouveau mot de passe 2 fois
9. Redémarrer avec :

```
reboot -f
```

> **Note :** Cette modification est temporaire et disparaît du GRUB au reboot.

---

## Changement mot de passe perdu sur Ubuntu

1. Démarrer en maintenant la touche `Shift` enfoncée pour forcer l'apparition du menu GRUB
2. Dans GRUB, sélectionner **Options Avancées pour Ubuntu** / *Advanced options for Ubuntu*
3. Sélectionner le noyau le plus récent en mode **recovery** / *recovery mode*
4. Sélectionner **root** > Entrée x2
5. Dans la console, entrer :

```
mount -rw -o remount /
```

6. Faire :

```
ls /home
```

pour voir la liste des utilisateurs

7. Demander le changement de mot de passe avec :

```
passwd username
```

où `username` est le nom de l'utilisateur dont vous voulez changer le mot de passe

8. Entrer le mot de passe et le confirmer
9. Entrer :

```
exit
```

10. Sélectionner **"Resume normal boot"** (1ère option) et faire Entrée

L'ordinateur redémarre et vous pouvez utiliser votre nouveau mot de passe.

---

## Changement mot de passe sous Windows 10

### How to Reset Windows 10 Password with Ubuntu Live CD/USB ?

1. Pour commencer, téléchargez Ubuntu Desktop gratuitement depuis le site officiel d'Ubuntu (environ 1,4 Go). Gravez l'image ISO sur un CD (ou une clé USB) avec un logiciel gratuit comme ISO2Disc.

2. Insérez le Live CD Ubuntu dans l'ordinateur dont vous voulez réinitialiser le mot de passe, puis démarrez sur le disque. Une fois sur l'écran d'accueil Ubuntu, choisissez **Try Ubuntu**.

3. Ouvrez **System Settings**, puis cliquez sur **Software and Updates**. Dans la fenêtre qui apparaît, cochez l'option **Community-maintained free and open-source software** et cliquez sur **Close**.

4. Une boîte de dialogue indiquant que les informations du dépôt sont obsolètes apparaît. Cliquez sur **Reload**.

5. Ouvrez un terminal, puis exécutez les commandes suivantes pour installer l'utilitaire de réinitialisation de mot de passe :

```
sudo add-apt-repository universe
sudo apt-get install chntpw
```

6. Repérez votre partition Windows et naviguez jusqu'au dossier `Windows\System32\Config`. Faites un clic droit sur un espace vide et sélectionnez **Open in Terminal**.

7. Dans le terminal, exécutez la commande suivante : elle listera tous les comptes utilisateurs présents sur le système Windows 10.

```
chntpw -l SAM
```

8. Pour réinitialiser le mot de passe perdu d'un compte spécifique, tapez la commande suivante et appuyez sur Entrée :

```
chntpw -u user_name SAM
```

9. Plusieurs options s'offrent à vous pour réinitialiser, déverrouiller, activer ou promouvoir le compte utilisateur. Tapez `1` et appuyez sur Entrée.

10. Tapez `q` et appuyez sur Entrée pour quitter le menu d'édition utilisateur. Puis tapez `y` pour confirmer et enregistrer les modifications.

11. Redémarrez l'ordinateur et retirez le Live CD Ubuntu du lecteur. Vous pouvez ensuite vous connecter à Windows 10 sans mot de passe !

# Dépannage BIOS

# La danse des doigts 💃🕺

# Keskecé

C’est le moment **juste après avoir allumé l’ordinateur**, où tu dois appuyer **très tôt et plusieurs fois** sur **une touche spéciale** pour :
- soit **entrer dans le BIOS / UEFI**
- soit **afficher le menu de démarrage (Boot Menu)**

=> Ces menus permettent de **désactiver Secure Boot** et/ou **choisir la clé USB Linux**.


(Echap, F1, F2, Suppr > ça dépends de la machine, donc faire tout couvre toutes les options)
F6 (ou F12 ou Echap, encore selon l'ordi)

# Où trouver l’info de la bonne touche ?

Dans l’ordre de probabilité :
1. **F2**
2. **Suppr (Delete)**
3. **F12** 
4. **Esc**
5. **F10**

## Pendant le démarrage

Pendant 1 à 3 secondes, tu peux voir un message du type :
- `Press F2 to enter Setup`
- `Press DEL to enter BIOS`
- `F12 Boot Menu`
- `Esc for Startup Menu`

Le problème :
- ça disparaît vite
- parfois c’est écrit très petit
- parfois… **rien n’est affiché**

## Par la marque de l’ordinateur

**Touches les plus courantes par constructeur** :

|Marque|BIOS / UEFI|Boot Menu|
|---|---|---|
|**Acer**|F2|F12|
|**Asus**|F2 ou Suppr|F8|
|**Dell**|F2|F12|
|**HP**|Esc puis F10|Esc puis F9|
|**Lenovo**|F1 ou F2|F12|
|**Toshiba**|F2|F12|
|**MSI**|Suppr|F11|
|**Samsung**|F2|Esc|
|**Sony VAIO**|F2|F11 / Assist|

# Installer des logiciels

# Installer Stoat sur LMDE7 (64 bits)

### Installer Stoat sur LMDE 7
## 1. Télécharger la version Linux x64 (.zip)

Stoat n'a pas encore de paquet officiel `.deb`/Flathub pour Debian/LMDE — la page officielle renvoie vers les releases GitHub.

1. Va sur la page officielle de téléchargement : **https://stoat.chat/download**
2. Dans la section **Linux**, clique sur **GitHub** (lien vers les releases : `https://github.com/stoatchat/for-desktop/releases`)
3. Sur la page de la dernière release (tout en haut, ex. `v1.4.0`), déroule la section **Assets**
4. Repère l'archive correspondant à Linux 64 bits. Le nom suit généralement ce format :
   ```
   Stoat-linux-x64-<version>.zip
   ```
   *(vérifie bien `linux` + `x64` dans le nom, à ne pas confondre avec `arm64` qui est pour les architectures ARM, ou avec les fichiers `.deb`/`.rpm`/`.AppImage`/`.flatpak` s'ils sont proposés)*
5. Télécharge ce fichier `.zip` (par défaut dans `~/Téléchargements`)

> 💡 Alternative : le dépôt communautaire [stoat-desktop-for-linux](https://github.com/jfoots/stoat-desktop-for-linux) propose aussi des builds Linux, mais privilégie toujours en premier les assets officiels de `stoatchat/for-desktop`.

## 2. Extraire l'archive

```bash
cd ~/Téléchargements
unzip Stoat-linux-x64-*.zip -d ~/Applications/stoat
```

*(crée le dossier `~/Applications/stoat` s'il n'existe pas encore : `mkdir -p ~/Applications`)*

L'exécutable principal se trouve normalement à la racine du dossier extrait, sous un nom comme `stoat` ou `Stoat` (Electron).

## 3. Rendre l'exécutable lançable

```bash
chmod +x ~/Applications/stoat/stoat
```

Adapte le nom du binaire s'il diffère (vérifie avec `ls ~/Applications/stoat`).

## 4. Créer le raccourci (fichier .desktop)

```bash
nano ~/.local/share/applications/stoat.desktop
```

Colle ce contenu (adapte les chemins) :

```ini
[Desktop Entry]
Type=Application
Name=Stoat
Comment=Lancer Stoat
Exec=/home/TON_USER/Applications/stoat/stoat
Icon=/home/TON_USER/Applications/stoat/resources/app/icon.png
Terminal=false
Categories=Network;InstantMessaging;
```

- Remplace `TON_USER` par ton nom d'utilisateur (`whoami`)
- `Icon=` est optionnel : cherche un fichier `.png` dans le dossier extrait (souvent dans `resources/`), ou supprime la ligne pour une icône générique

Sauvegarde (Ctrl+O, Entrée, Ctrl+X), puis rends le fichier exécutable :

```bash
chmod +x ~/.local/share/applications/stoat.desktop
```

## 5. Copier le raccourci sur le bureau

```bash
cp ~/.local/share/applications/stoat.desktop ~/Desktop/
chmod +x ~/Desktop/stoat.desktop
```

Au premier double-clic, Cinnamon/Nemo demandera de confirmer la confiance : clic droit sur l'icône → **« Autoriser le lancement »**.

## 6. Lancement automatique au démarrage de session

**Méthode graphique :**
Menu → « Applications au démarrage » (Startup Applications) → **Ajouter** → sélectionne `stoat.desktop`.

**Méthode terminal :**

```bash
mkdir -p ~/.config/autostart
cp ~/.local/share/applications/stoat.desktop ~/.config/autostart/
```

Stoat se lancera automatiquement à chaque ouverture de session.

---

## Récapitulatif rapide

| Étape | Commande clé |
|---|---|
| Extraction | `unzip Stoat-linux-x64-*.zip -d ~/Applications/stoat` |
| Rendre exécutable | `chmod +x ~/Applications/stoat/stoat` |
| Créer raccourci | `~/.local/share/applications/stoat.desktop` |
| Copier sur le bureau | `cp ... ~/Desktop/` |
| Démarrage auto | `cp ... ~/.config/autostart/` |

## Mettre à jour Stoat plus tard

Comme il n'y a pas de gestionnaire de paquets, la mise à jour est manuelle : retélécharge la nouvelle archive depuis les releases GitHub, extrais-la par-dessus l'ancien dossier (ou dans un nouveau dossier en mettant à jour le chemin `Exec=` du fichier `.desktop` si besoin).

# Installer manuellement RustDesk sous LMDE 7

## Contexte matériel

- **Distribution :** LMDE 7 64 bits

## Contexte

Suite à l'installation de Linux LMDE 7, il peut arriver que RustDesk ne soit pas présent dans la logithèque. Il faut alors l'installer manuellement.

Source : [https://github.com/rustdesk/rustdesk/releases](https://github.com/rustdesk/rustdesk/releases)

---

## Procédure d'installation

### 1. Mise à jour du système

Exécuter dans le terminal :
```bash
sudo apt update
```
Puis :
```bash
sudo apt upgrade
```

### 2. Vérifier la présence dans la logithèque

Ouvrir la logithèque et rechercher **RustDesk**.

> Si RustDesk est présent, l'installer depuis la logithèque et arrêter la procédure ici. Sinon, continuer.

### 3. Installation manuelle

Ouvrir un terminal et exécuter les commandes suivantes :

```bash
wget https://github.com/rustdesk/rustdesk/releases/download/1.4.0/rustdesk-1.4.0-x86_64.deb
sudo dpkg -i rustdesk-1.4.0-x86_64.deb
sudo apt -f install
```

### 4. Redémarrage

Redémarrer l'ordinateur pour finaliser l'installation.


## Liens associés

- [Résolution du problème – Reddit](https://www.reddit.com/r/rustdesk/comments/1k9f9x3/access_rustdesk_before_user_login_on_linux_mint/)

---

## Notes

Activer le mode **headless Linux** dans RustDesk pour les machines sans clavier ni écran.

# Installer NoComprendo 2.X sur Ubuntu

> Basé sur le wiki officiel du projet : [invent.kde.org/beroot/nocomprendo — Install on Debian](https://invent.kde.org/beroot/nocomprendo/-/wikis/debian_install)
> et sur une session de dépannage réelle sur Ubuntu (septembre 2026).

NoComprendo est un outil de commande vocale, de dictée et de synthèse vocale (Text-to-Speech) pour Linux, développé par Bruno Anselme. Il utilise :
- **Vosk** pour la reconnaissance vocale,
- **dotool** pour simuler les entrées clavier/souris (compatible X11/Wayland),
- **svox-pico** / eSpeak pour la synthèse vocale.

---

## 1. Prérequis

### 1.1 Installer dotool (simulation clavier/souris)

```bash
git clone https://git.sr.ht/~geb/dotool
cd dotool
./build.sh
sudo ./build.sh install
```

Autoriser dotool à créer des périphériques d'entrée virtuels via une règle udev :

```bash
sudo udevadm control --reload && sudo udevadm trigger && sudo usermod -a -G input USER_NAME
```

> Remplace `USER_NAME` par ton nom d'utilisateur (ex. `staline`).

**Redémarre ton ordinateur** pour que les nouvelles règles udev prennent effet. Sans ce redémarrage, seuls le lancement de programmes et les méta-commandes fonctionneront — pas le contrôle du clavier/de la souris.

### 1.2 Installer l'environnement Qt6

```bash
sudo apt install qt6-base-dev qt6-multimedia-dev qt6-tools-dev qt6-l10n-tools
```

### 1.3 Installer Vosk (reconnaissance vocale)

Sur Ubuntu, la bibliothèque Vosk s'installe via pip et fournit `libvosk.so`, mais **pas** le header C `vosk_api.h`, nécessaire à la compilation :

```bash
pip3 install vosk
```

Télécharger ensuite le header manquant depuis le dépôt officiel et le copier dans le même dossier que `libvosk.so` :

```bash
wget https://raw.githubusercontent.com/alphacep/vosk-api/master/src/vosk_api.h -P /tmp/
sudo cp /tmp/vosk_api.h /usr/local/lib/python3.12/dist-packages/vosk/
```

> Adapte le chemin (`python3.12`) à ta version de Python — vérifie-le avec la commande de la section 2.2.

---

## 2. Compilation

### 2.1 Récupérer et préparer les sources

```bash
tar zxvf nocomprendo-2.x.tar.gz
cd nocomprendo-2.x
```

### 2.2 Localiser libvosk.so

```bash
sudo find / -name "libvosk.so" 2>/dev/null
```

Résultat typique sur Ubuntu (pip, install système) :
```
/usr/local/lib/python3.12/dist-packages/vosk/libvosk.so
```

### 2.3 Adapter `nocomprendo.pro`

Le fichier `.pro` d'origine référence un chemin Fedora/RedHat (`/usr/lib64/libvosk.so.0`) qui n'existe pas sur Ubuntu, et ne définit **aucun `INCLUDEPATH`** vers le header `vosk_api.h` — c'est la cause de l'erreur `fatal error: vosk_api.h: Aucun fichier ou dossier de ce nom` (que vous aurez en suivant la documentation initiale du développeur)

Remplacer :
```qmake
LIBS += /usr/lib64/libvosk.so.0
# LIBS += -lvosk
# For debians check libvosk.so location. May be next line
# LIBS += /usr/lib/python3.10/site-packages/vosk/libvosk.so
```

par (en adaptant le chemin trouvé à l'étape 2.2) :
```qmake
LIBS += /usr/local/lib/python3.12/dist-packages/vosk/libvosk.so
INCLUDEPATH += /usr/local/lib/python3.12/dist-packages/vosk
```

### 2.4 Compiler

Utiliser `qmake6` (et non `qmake`, au cas où `qmake5` serait aussi présent sur le système) :

```bash
qmake6
make
```

### 2.5 Problème de traduction (.qm manquant)

Erreur possible :
```
RCC: Error in 'qmake_qmake_qm_files.qrc': Cannot find file '.../.qm/nocomprendo_fr_FR.qm'
```

Le fichier de traduction compilé (`.qm`) n'est pas généré automatiquement par `lrelease` générique sur certaines configs Ubuntu. Solution :

```bash
# Si "lrelease" seul échoue avec "could not find a Qt installation"
/usr/lib/qt6/bin/lrelease nocomprendo_fr_FR.ts

# Déplacer le fichier généré dans le dossier attendu par le build
mkdir -p .qm
mv nocomprendo_fr_FR.qm .qm/

# Relancer la compilation (sans make clean)
make
```

### 2.6 Installer l'application

```bash
sudo make install
```

### 2.7 Créer le dossier des modèles de langue Vosk

```bash
sudo mkdir -p /usr/share/vosk-models/
sudo chmod 777 /usr/share/vosk-models/
```

### 2.8 Lancer NoComprendo

```bash
./nocomprendo
```

---

#

## 3. Utilisation de NoComprendo

### 3.1 Premier démarrage — modèle de langue

Au premier lancement, NoComprendo se connecte à **alphacephei.com** et propose de télécharger un modèle de langue Vosk. Pour le français, deux options principales :
- **`fr`** : modèle complet, plus précis mais plus lourd (~1.4 Go)
- **`small-fr`** : modèle léger, plus rapide mais moins précis.

L'application propose aussi de choisir la langue de l'interface (`fr_FR` ou `en_US`) au premier démarrage.

### 3.2 Dictée vocale

- Clique sur l'icône du **micro** dans l'interface et parle distinctement.
- Vosk transcrit la parole en texte au fur et à mesure.
- Commandes de ponctuation orales disponibles : *« point »*, *« virgule »*, *« point à la ligne »*, etc.
- Pour démarrer rapidement : dire *« Je commence à dicter »*.
- Si seule la dictée t'intéresse (pas les commandes vocales), tu peux désactiver les groupes de commandes dans les réglages.

### 3.3 Commandes vocales

- NoComprendo est livré avec des **groupes de commandes de démonstration**, orientés pour l'environnement KDE/Plasma — à vérifier et adapter selon ton propre environnement (GNOME sur Ubuntu par défaut, par exemple).
- Chaque commande associe une phrase prononcée à une action : raccourci clavier, lancement de programme, etc.
- Pour modifier une commande : **double-clic dessus**, puis ré-enregistrer la nouvelle formulation.

### 3.4 Conseils pour une bonne reconnaissance

- Vosk fonctionne mieux avec des **phrases syntaxiquement correctes** plutôt que des mots isolés.
  - Préférer *« Fermer la fenêtre »* à *« fermer fenêtre »*.
- Le résultat exact peut varier selon le modèle (`fr` vs `small-fr`) : par exemple *« Fermez la fenêtre »* ou *« Fermé la fenêtre »* pour la même intention.
- Articuler distinctement, éviter les commandes monosyllabiques et les mots proches phonétiquement (homophonies).
- Ne pas taper au clavier pendant que l'écoute vocale est active (peut perturber la reconnaissance).

### 3.5 Synthèse vocale (Text-to-Speech)

- Fonctionne en copiant du texte dans le presse-papier, puis en demandant à NoComprendo de le vocaliser.
- Six langues disponibles pour la synthèse vocale au moment de la rédaction de cette doc.

### 3.6 Fonctionnement hors-ligne

Reconnaissance et synthèse vocales sont effectuées **entièrement hors-ligne** — aucune donnée vocale n'est envoyée à des serveurs tiers.

---

## 4. Ressources

- Wiki officiel (installation Debian/Ubuntu) : https://invent.kde.org/beroot/nocomprendo/-/wikis/debian_install
- Dépôt Vosk (header et sources) : https://github.com/alphacep/vosk-api
- dotool : https://git.sr.ht/~geb/dotool