Votre premier nettoyage
Le tableau de bord interactif est la façon la plus sûre de nettoyer : vous voyez chaque élément avant que quoi que ce soit ne soit supprimé, rien n'est sélectionné tant que vous ne l'avez pas choisi, et chaque suppression est revérifiée au dernier moment. Cette visite suit un nettoyage complet, écran par écran. Les projets, chemins et tailles sont donnés à titre d'illustration.
Lancer le tableau de bord
Section intitulée « Lancer le tableau de bord »lu-cleanerlu-cleaner clean ouvre le même sélecteur. Les deux nécessitent un terminal interactif (au moins 40 × 10 ; 32 lignes ou plus pour voir le panneau de détails).
Les filtres habituels préfiltrent le tableau de bord, par exemple lu-cleaner -c artifacts,worktrees --older-than 30d. Rien n'est présélectionné : le tableau de bord s'ouvre toujours avec une sélection vide, et c'est vous qui décidez de ce qui sera supprimé. Pour démarrer avec les éléments recommandés déjà sélectionnés, demandez-le explicitement avec lu-cleaner clean --smart.
1. Lire la vue d'ensemble des catégories
Section intitulée « 1. Lire la vue d'ensemble des catégories »Les scanners tournent en parallèle et transmettent leurs résultats au fil de l'eau : les catégories apparaissent et grossissent pendant que l'en-tête affiche scanning 5/8 providers. Quand le dernier scanner a terminé, la ligne d'état vous dit comment choisir : rien n'est encore sélectionné.
🧹 lu-cleaner ✓ scan done in 21.4s · 339 items · 176 GB reclaimable 💾 ██████████████████████░░ 91% used · 43.0 GB free of 494 GB Categories · enter to open CATEGORY SIZE ITEMS SELECTED › [ ] 🌳 Worktrees 42.8 GB 31 items [ ] 📦 Project artifacts 36.4 GB 118 items [ ] 📱 iOS Simulators 24.1 GB 14 items [ ] 🔨 Xcode 18.6 GB 12 items [ ] 🤖 Android 14.3 GB 19 items [ ] 🧠 AI tools 12.9 GB 57 items [ ] 🟨 JS toolchain 17.2 GB 48 items [ ] 🧩 IDEs 3.10 GB 15 items [ ] 💻 System 6.40 GB 25 items Nothing is selected — space picks an item, a picks the recommended ones, d cleans the selection nothing selected │ delete permanently │ enter open ␣ select a smart d clean t trash / filter ? help q quit
| Zone | Signification |
|---|---|
| En-tête | État de l'analyse, nombre d'éléments listés et total récupérable. |
| Ligne 💾 | Occupation du volume qui contient votre dossier personnel, actualisée après chaque nettoyage. |
| SIZE | Ce que libérerait le nettoyage de tous les éléments de la catégorie. Les entrées en rapport seul ne sont pas comptées. |
| SELECTED | Taille de la sélection actuelle dans cette catégorie. Vide tant que vous n'avez rien sélectionné. |
[✓] [~] [ ] [·] |
Tout est sélectionné, une partie, rien, ou rien n'est nettoyable (entrées en rapport seul). |
| Ligne d'état | Le dernier message (ici, comment sélectionner), ou à défaut une description de la catégorie sous le curseur. |
| Pied de page | Nombre et taille des éléments sélectionnés (nothing selected pour l'instant), mode de nettoyage et principales touches. |
Le mode affiché dans le pied de page compte : delete permanently libère l'espace immédiatement, 🗑 Trash mode (activé ou désactivé avec t) déplace les fichiers et dossiers dans ~/.Trash, ne libère rien tant que vous ne l'avez pas vidée et ignore les worktrees et les commandes (ils ne peuvent pas être annulés), et ○ dry-run ne touche à rien.
Appuyez sur s pour trier les catégories par taille, et sur space pour sélectionner une catégorie entière d'un coup (ou, si une partie est déjà sélectionnée, pour la vider). Cette sélection groupée ignore volontairement les éléments de risque caution : vous devez ouvrir la catégorie et les choisir un par un.
2. Ouvrir une catégorie
Section intitulée « 2. Ouvrir une catégorie »Placez-vous sur Project artifacts et appuyez sur enter (ou →) :
🧹 lu-cleaner ✓ scan done in 21.4s · 339 items · 176 GB reclaimable 💾 ██████████████████████░░ 91% used · 43.0 GB free of 494 GB 📦 Project artifacts (118) · sort: size ↓ · ← back · tab next NAME LOCATION SIZE AGE RISK [ ] my-app › ios/build ~/dev/my-app/ios/build 2.10 GB 5h safe › [ ] shop-app › node_modules ~/dev/shop-app/node_modules 1.42 GB 3mo moderate stale [ ] my-app › node_modules ~/dev/my-app/node_modules 1.31 GB 2d moderate [ ] codex:my-app › node_modules …/worktrees/a1b2/my-app/node_modules 1.28 GB 5w moderate stale [ ] shop-app › android/app/build ~/dev/shop-app/android/app/build 1.20 GB 3mo safe stale [ ] shop-app › ios/Pods ~/dev/shop-app/ios/Pods 980 MB 3mo moderate stale [ ] my-app › ios/Pods ~/dev/my-app/ios/Pods 910 MB 2d moderate … ────────────────────────────────────────────────────────────────────────────────────────────────────────────── shop-app › node_modules · moderate · node_modules · artifacts · 48,210 files Path /Users/you/dev/shop-app/node_modules Method delete Age last used 3mo ago (2026-06-24) · stale Note Installed JS dependencies; reinstall with `yarn install` when you need the project again (minutes, network). Project ~/dev/shop-app Meta package_manager=yarn · project_type=react-native nothing selected │ delete permanently │ ␣ select a smart d clean s sort / filter ← back ? help q quit
Chaque ligne est un élément : quelque chose que lu-cleaner peut supprimer d'un seul bloc (un dossier node_modules, un worktree, un cache, un simulateur…).
| Colonne | Signification |
|---|---|
| NAME | projet › chemin pour les artefacts de projet ; le préfixe codex: signifie que le projet se trouve dans un worktree Codex. |
| LOCATION | Emplacement sur le disque. |
| SIZE | Espace alloué sur le disque. … signifie que l'élément est encore en cours de mesure. |
| AGE | Temps écoulé depuis la dernière utilisation de l'élément. La valeur passe en jaune, avec l'étiquette stale, au bout de 14 jours (stale_after). |
| RISK | safe, moderate, caution ou never. Voir Niveaux de risque et sélection intelligente. |
| Étiquettes | stale, ⚠ (un avertissement), et des indications comme dirty, ↑2 (commits non poussés), locked, running, l'outil et ⎇ branche pour les worktrees. |
Les lignes grisées marquées [·] sont listées à titre informatif et ne peuvent pas être sélectionnées. Appuyez sur space sur l'une d'elles pour savoir pourquoi.
Utilisez tab / shift+tab pour passer à la catégorie suivante ou précédente, ← pour revenir à la vue d'ensemble, / pour filtrer par texte et s pour trier par taille, âge ou nom.
3. Sélectionner ce qu'il faut nettoyer
Section intitulée « 3. Sélectionner ce qu'il faut nettoyer »Rien n'est sélectionné tant que vous n'avez pas choisi. Il y a deux façons de le faire, et vous pouvez les combiner :
- À la main. Placez-vous sur une ligne et appuyez sur
space. Sur la vue d'ensemble des catégories,spacesélectionne une catégorie entière (sauf ses éléments caution). - Avec la sélection intelligente. Appuyez sur
a: lu-cleaner sélectionne les éléments recommandés de la vue actuelle, rien de plus, et indique combien dans la ligne d'état. C'est votre demande explicite, vous voyez donc ce qu'il a choisi avant que quoi que ce soit puisse être nettoyé.
| Touche | Effet |
|---|---|
space |
Sélectionne ou désélectionne l'élément sous le curseur. |
a |
Sélection intelligente sur la vue actuelle : les éléments recommandés sont sélectionnés, tous les autres désélectionnés. |
A |
Sélectionne tous les éléments nettoyables de la vue, éléments caution compris. |
n |
Ne sélectionne rien dans la vue. |
i |
Inverse la sélection dans la vue. |
Dans une catégorie, « la vue » est la liste affichée, après un éventuel filtre /. Sur la vue d'ensemble des catégories, ce sont tous les éléments visibles. La sélection est conservée quand vous passez d'une catégorie à l'autre.
Essayez : dans Project artifacts, appuyez sur a.
📦 Project artifacts (118) · sort: size ↓ · ← back · tab next NAME LOCATION SIZE AGE RISK [ ] my-app › ios/build ~/dev/my-app/ios/build 2.10 GB 5h safe › [✓] shop-app › node_modules ~/dev/shop-app/node_modules 1.42 GB 3mo moderate stale [ ] my-app › node_modules ~/dev/my-app/node_modules 1.31 GB 2d moderate [✓] codex:my-app › node_modules …/worktrees/a1b2/my-app/node_modules 1.28 GB 5w moderate stale [✓] shop-app › android/app/build ~/dev/shop-app/android/app/build 1.20 GB 3mo safe stale [✓] shop-app › ios/Pods ~/dev/shop-app/ios/Pods 980 MB 3mo moderate stale [ ] my-app › ios/Pods ~/dev/my-app/ios/Pods 910 MB 2d moderate … Smart selection: 38 items (safe caches + moderate items unused for 2w) ✓ 38 selected · 9.20 GB │ delete permanently │ ␣ select a smart d clean s sort / filter ← back ? help q quit
Remarquez ce que la sélection intelligente a laissé de côté :
my-app › ios/builda été utilisé il y a 5 heures. La sélection intelligente ne choisit jamais les artefacts d'un projet utilisé au cours des dernières 24 heures : vous êtes probablement en train de travailler dessus.my-app › node_modulesetmy-app › ios/Podssont moderate : les reconstruire prend du temps, ils ne sont donc recommandés qu'après 14 jours sans utilisation.
Vous pouvez toujours ajuster : space désélectionne un élément recommandé ou en sélectionne un qu'elle a laissé de côté. Pour continuer avec les éléments recommandés de toutes les catégories, appuyez sur ← pour revenir à la vue d'ensemble, puis sur a : la suite de cette visite nettoie cette sélection (131 éléments, 69.0 GB).
Quand vous sélectionnez un élément caution, la ligne d'état vous indique ce qui est en jeu, par exemple ⚠ caution: my-app · spike/old-ui — 3 uncommitted changes.
Deux sortes d'éléments ne peuvent pas encore être sélectionnés, et space vous dit pourquoi :
- un élément encore en cours de mesure (
…dans SIZE) : ses vérifications ne sont pas terminées, sélectionnez-le une fois sa taille affichée ; - un élément qui exige
--force, comme un dossier de worktree orphelin dont git ne voit plus le travail non commité. Lancez lu-cleaner avec--forcepour le supprimer, ou passez en mode Corbeille (t), qui le déplace dans la Corbeille où vous pouvez encore le récupérer.
4. Lire les détails
Section intitulée « 4. Lire les détails »Sur un terminal de 32 lignes ou plus, un panneau de détails présente l'élément sous le curseur (en bas de l'écran ci-dessus). enter l'affiche ou le masque : appuyez dessus pour afficher le panneau sur un terminal plus petit, ou pour le masquer sur un grand.
| Ligne | Ce qu'elle vous apprend |
|---|---|
| Première ligne | Nom, risque, type, scanner et nombre de fichiers. |
| Path / Paths / Location | Exactement ce qui sera supprimé. Les éléments groupés (par exemple « Metro / Haste file maps (18) ») listent leurs premiers chemins. |
| Method | delete, trash (Trash mode), command: … (le nettoyage propre à l'outil, comme xcrun simctl delete <UDID>), worktree (git worktree remove) ou report. En mode Corbeille, les worktrees et les commandes affichent skipped in Trash mode. |
| Blocked / Force | Affichée pour un élément qui exige --force, avec la raison. |
| Reclaim | Affichée quand une partie des données est partagée avec d'autres fichiers (liens physiques ou clones APFS) et que la suppression libère moins que la taille. |
| Age | Date de dernière utilisation, et si l'élément est inactif (stale). |
| Warning | Pourquoi un élément est risqué ou n'a pas été recommandé. |
| Note | Ce qu'est l'élément et comment il revient si vous en avez de nouveau besoin. |
| Project, Meta | Le projet auquel il appartient et des détails fournis par le scanner (branche, gestionnaire de paquets, niveau d'API…). |
Appuyez sur o pour afficher l'élément dans le Finder.
5. Nettoyer et confirmer
Section intitulée « 5. Nettoyer et confirmer »Appuyez sur d (ou x). Si rien n'est sélectionné, d vous rappelle seulement de sélectionner quelque chose. Sinon, une fenêtre de confirmation montre ce qui va se passer, avec le total :
╭──────────────────────────────────────────────────────────────────────────╮ │ Clean 131 items — 69.0 GB? │ │ │ │ safe 74 items 31.2 GB │ │ moderate 57 items 37.8 GB │ │ │ │ Method delete permanently — frees space now │ │ Commands xcrun simctl delete 5A1F0C2E-7B3D-4E8A-9C61-2F4B8D0E1A37 │ │ git worktree remove … │ │ Running Xcode — items guarded by them will be skipped │ │ Largest my-app · feature/login (2.40 GB), shop-app (2.30 GB), … │ │ │ │ y/enter confirm n/esc cancel │ ╰──────────────────────────────────────────────────────────────────────────╯
- Répartition par risque : combien d'éléments de chaque niveau de risque, et leur taille. Les éléments situés dans un autre élément sélectionné sont nettoyés avec lui et comptés une seule fois.
- Method : suppression définitive, déplacement vers la Corbeille, ou simulation.
- Skipped (mode Corbeille uniquement) : les worktrees et les éléments de type commande, qui ne peuvent pas être déplacés dans la Corbeille et seraient supprimés définitivement. Appuyez sur
tpour revenir au mode suppression si vous les voulez. - Commands : les commandes externes qui seront lancées, comme
xcrun simctl delete <UDID>ougit worktree remove. - Running : certains éléments refusent d'être nettoyés tant qu'une application les utilise (Xcode pour DerivedData, Simulator pour les simulateurs…). lu-cleaner vérifie ces applications à ce moment-là ; les éléments protégés par une application en cours d'exécution seront ignorés, sauf si vous avez lancé lu-cleaner avec
--force. - Largest : les plus gros éléments de la sélection (sur les terminaux de 24 lignes ou plus).
- Hidden : les éléments sélectionnés que le filtre
/actuel masque. Ils sont nettoyés eux aussi.
Appuyez sur y ou enter pour confirmer, sur n ou esc pour annuler. Vous pouvez aussi nettoyer avant la fin de l'analyse : la fenêtre signale alors que les tailles peuvent être partielles.
Quand la sélection contient des éléments caution
Section intitulée « Quand la sélection contient des éléments caution »Si la sélection contient au moins un élément caution, qu'il soit sélectionné ou situé dans un élément sélectionné (nettoyer le parent le supprime aussi, et la fenêtre le liste), ou un élément nettoyé uniquement grâce à --force, la fenêtre passe au rouge et une seule touche ne suffit plus :
╭──────────────────────────────────────────────────────────────────────────╮ │ Clean 3 items — 7.90 GB? │ │ │ │ moderate 2 items 5.80 GB │ │ caution 1 item 2.10 GB │ │ │ │ Method delete permanently — frees space now │ │ Commands git worktree remove … │ │ │ │ ⚠ 1 caution item selected: may hold data you care about. │ │ Type yes to confirm: ▏ │ │ │ │ enter confirm esc cancel │ ╰──────────────────────────────────────────────────────────────────────────╯
Tapez yes puis appuyez sur enter, ou sur esc pour annuler. Les éléments caution peuvent contenir quelque chose que vous ne pourrez pas régénérer : du travail non commité dans un worktree, des sessions d'agent, des données d'application. Une confirmation en une touche se déclenche facilement par réflexe ; taper un mot vous oblige à vous arrêter et à relire la liste.
La confirmation n'est pas la dernière vérification. Un worktree verrouillé, qui contient des modifications non commitées ou des fichiers non suivis, qui porte des commits sur aucune branche ou qui contient un autre dépôt est encore refusé au moment de la suppression, sauf si vous avez lancé lu-cleaner avec --force. Voir Modèle de sécurité.
lu-cleaner worktrees : la worktree Codex mergée est retirée (sa branche est conservée) ; la worktree Cursor passe la confirmation tapée mais git la refuse au moment de la suppression, car elle contient des modifications non commitées.6. Suivre la progression
Section intitulée « 6. Suivre la progression »🧹 lu-cleaner ✓ scan done in 21.4s · 339 items · 176 GB reclaimable 💾 ██████████████████████░░ 91% used · 43.0 GB free of 494 GB ⠹ Cleaning 131 items — 69.0 GB 12s ctrl+c cancels items ████████████████████████████████░░░░░░░░░░░░░░░░░░ 84/131 data ██████████████████████████████▏░░░░░░░░░░░░░░░░░░░ 41.6 GB / 69.0 GB freed 41.2 GB ✓ shop-app › node_modules 1.42 GB ~/dev/shop-app/node_modules ✓ shop-app › ios/Pods 980 MB ~/dev/shop-app/ios/Pods ↷ shop-app 2.30 GB skipped: Xcode is running — quit it first (or use --force) ✓ my-app · feature/login 2.40 GB git worktree removed (branch kept)
Les suppressions de chemins s'exécutent quatre à la fois ; les commandes et les suppressions de worktrees s'exécutent l'une après l'autre. Chaque élément terminé reçoit une ligne :
| Marque | Signification |
|---|---|
✓ |
Terminé. |
↷ |
Ignoré, avec la raison : une application tourne, un processus travaille dans le dossier, le chemin a changé depuis l'analyse, le garde-fou de sécurité l'a refusé… |
✗ |
Échec, avec l'erreur. |
○ |
Simulation : ce qui aurait été fait. |
Appuyez sur ctrl+c pour annuler : les éléments en cours se terminent, les autres sont ignorés avec le motif cancelled.
7. Lire le récapitulatif
Section intitulée « 7. Lire le récapitulatif »╭──────────────────────────────────────────────────────────────╮ │ ✓ Cleaning finished in 38.2s │ │ 129 done · 2 skipped │ │ │ │ Estimated freed 65.4 GB │ │ Measured freed 64.8 GB (43.0 GB → 108 GB free) │ ╰──────────────────────────────────────────────────────────────╯ items ██████████████████████████████████████████████████ 131/131 data ██████████████████████████████████████████████████ 69.0 GB / 69.0 GB freed 65.4 GB press any key to return to the list ↷ shop-app 2.30 GB skipped: Xcode is running — quit it first (or use --force) ↷ codex:my-app › node_modules 1.28 GB skipped: in use: process 51234 runs a program or library from ~/.codex/… ✓ shop-app › node_modules 1.42 GB ~/dev/shop-app/node_modules …
Les problèmes sont listés en premier. Deux chiffres comptent :
- Estimated freed additionne ce que chaque élément nettoyé devait libérer.
- Measured freed est la différence d'espace libre sur le volume de votre dossier personnel entre avant et après le nettoyage, telle que la signale le système de fichiers.
Ils sont rarement identiques, puisque d'autres applications continuent d'écrire sur le disque. Quand la valeur mesurée est inférieure à la moitié de l'estimation, le récapitulatif suggère de lancer lu-cleaner doctor (section suivante).
En mode Corbeille, ce qui a été déplacé dans la Corbeille n'est jamais compté comme libéré : cela apparaît sur sa propre ligne, Moved to Trash … (not freed yet), avec un rappel de vider la Corbeille.
Appuyez sur n'importe quelle touche pour revenir aux listes. Les éléments nettoyés disparaissent ; les éléments ignorés ou en échec restent listés et sélectionnés. Pour réessayer, quittez l'application qui les bloquait et appuyez de nouveau sur d.
Chaque nettoyage est enregistré dans l'historique (lu-cleaner history), et quand vous quittez avec q, le récapitulatif du dernier s'affiche dans votre terminal :
✓ 129 items cleaned · 65.4 GB freed (estimated) Disk free: 43.0 GB → 108 GB (64.8 GB measured) Skipped: 2 - codex:my-app › node_modules: in use: process 51234 runs a program or library from ~/.codex/worktrees/a1b2/my-app/node_modules - shop-app: Xcode is running — quit it first (or use --force)
Si l'espace n'est pas libéré
Section intitulée « Si l'espace n'est pas libéré »macOS ne rend pas toujours l'espace supprimé immédiatement. Voici ce qu'il faut vérifier, dans l'ordre :
-
Lancez le diagnostic.
doctorliste les instantanés locaux APFS, la taille de la Corbeille et les applications en cours d'exécution qui bloquent le nettoyage :Fenêtre de terminal lu-cleaner doctor -
Les instantanés locaux (Time Machine) conservent les blocs des fichiers supprimés jusqu'à leur expiration, au bout d'environ 24 heures.
doctoraffiche les commandestmutilpour les alléger ou les supprimer. lu-cleaner ne les lance jamais à votre place. -
La Corbeille. Si vous avez nettoyé en mode Corbeille (
t,--trashouuse_trash = true), rien n'est libéré tant que la Corbeille n'est pas vidée. La catégorie System propose de la vider. -
Les fichiers ouverts. Un processus en cours d'exécution garde les fichiers supprimés alloués jusqu'à ce qu'il se termine : Simulator, Xcode, les daemons Gradle (
./gradlew --stop), Docker, un agent qui travaille dans un worktree. Quittez-les. -
Les autres volumes. La valeur mesurée ne concerne que le volume de votre dossier personnel. Les éléments nettoyés sur un disque externe libèrent de l'espace sur ce disque-là.
Pourquoi l'espace libéré n'apparaît pas détaille chaque cas, y compris les liens physiques, les clones APFS, l'espace purgeable et l'image disque de Docker.