Notes techniques de zhaoJian

Définir les apps par défaut sur Mac en un coup avec Defaultly, y compris pour .env, Dockerfile et les fichiers sans extension

Technologie ~12302 mots · 31 min de lecture - vues

Quand on code sur Mac, les fichiers sans extension comme .env, .gitignore ou Dockerfile sont une source d’agacement permanente : un double-clic les ouvre dans TextEdit, ou ne les ouvre pas du tout. Passer par « Lire les informations › Ouvrir avec › Tout modifier… » dans le Finder pour choisir VS Code ou Zed ne sert à rien, et « Toujours ouvrir avec » ne s’applique qu’au seul fichier sélectionné.

La raison : macOS classe la plupart des fichiers sans extension dans le type public.data et n’autorise aucune app à devenir l’app par défaut pour ce type. Les outils en ligne de commande, eux, échouent avec l’erreur -50.

Autre problème : les associations de fichiers se font souvent voler. Installez une nouvelle app (typiquement Xcode) et elle peut s’approprier les associations que vous aviez réglées. macOS ne prévient pas et n’offre aucun moyen de tout rétablir d’un coup. Il faut tout remettre format par format, et depuis macOS 26.4 il faut en plus confirmer chaque type modifié.

J’ai donc écrit Defaultly, une app macOS gratuite et open source qui gère depuis une seule fenêtre les apps par défaut des types de fichiers, des extensions et des liens.

Fenêtre principale de Defaultly : l'onglet Types de fichiers est organisé en groupes Texte, Markdown, Code, Configuration et données, Fichiers sans extension, PDF, Documents, etc., avec à droite de chaque groupe l'app qui l'ouvre par défaut

Ce que fait Defaultly

  • Apps par défaut par groupe : les types de fichiers sont regroupés par usage (Texte, Markdown, Code, Configuration et données, Fichiers sans extension, PDF, Documents, Images, Vidéo, Audio, Archives), chaque groupe a un menu d’app, et tout le groupe est réglé d’un coup, sans confirmer chaque format. C’est effectif en quelques secondes.
  • Fichiers sans extension : .env, Dockerfile, .gitignore et .npmrc s’ouvrent dans l’éditeur de votre choix, même si cet éditeur ne déclare pas les prendre en charge.
  • Exceptions par format : développez un groupe pour attribuer une app à part à un format comme .md ou .py. Si vous changez ensuite l’app du groupe, ces formats ne bougent pas.
  • Extensions personnalisées : ajoutez les extensions absentes de la liste, y compris celles que macOS ne connaît que comme types temporaires, comme .go, .rs, .kt, .dart et .lua.
  • Apps par défaut pour les liens : liens web (http, https), e-mail (mailto), abonnements de calendrier (webcal), appels, SMS, FaceTime, SSH, FTP, partage d’écran. Vous pouvez choisir une app pour chacun, ou « Ne pas ouvrir », par exemple pour qu’un clic sur un numéro de téléphone dans une page web ne lance plus d’appel.
  • Diagnostic : déposez un fichier pour voir pourquoi il s’ouvre dans telle app et en choisir une autre sur place ; déposez un dossier pour trouver les fichiers qui ont leur propre réglage « Ouvrir avec » et les effacer.
  • Alertes d’appropriation : quand Xcode, un navigateur ou une autre app s’approprie une association que vous aviez définie, Defaultly affiche une bannière qui la rétablit en un clic.
  • Annuler et restaurer : un instantané est enregistré avant chaque modification. Vous pouvez annuler avec ⌘Z, ou tout ramener à l’état d’avant le premier lancement de Defaultly, avec un aperçu de chaque changement au préalable.
  • Désinstallation propre : le désinstalleur intégré remet d’abord chaque association sur son app d’origine, puis place Defaultly dans la corbeille.
  • 15 langues : l’interface existe en 15 langues, dont le français, l’anglais, le chinois simplifié, le chinois traditionnel et le japonais, et se change dans l’app.

Defaultly ne tourne pas en arrière-plan, n’a pas d’élément de connexion, ne se connecte pas au réseau et ne collecte aucune donnée.

Installer Defaultly

Il faut macOS 26 Tahoe ou une version ultérieure.

  1. Ouvrez la page Releases et, dans la section Assets de la dernière version, téléchargez Defaultly-<version>.dmg.
  2. Double-cliquez sur le DMG pour l’ouvrir et faites glisser Defaultly sur le dossier « Applications » affiché dans la même fenêtre.
  3. Éjectez le DMG et ouvrez Defaultly depuis le dossier « Applications ».

Pas d’installeur, pas de mot de passe administrateur. Pour mettre à jour, téléchargez le nouveau DMG et refaites le glisser-déposer pour remplacer l’ancienne version ; vos réglages, règles et instantanés sont conservés.

Premier lancement : autoriser une app non notarisée

Defaultly n’est pas encore notarisé par Apple, donc macOS le bloque au premier lancement. Il suffit de l’autoriser une fois :

  1. Double-cliquez sur Defaultly. Quand macOS indique qu’il n’a pas pu le vérifier, cliquez sur « Terminé ». Ne cliquez pas sur le bouton bleu « Placer dans la corbeille ».

    Zone de dialogue macOS indiquant que Defaultly n'a pas pu être vérifié, avec le bouton Terminé

  2. Ouvrez « Réglages Système › Confidentialité et sécurité », faites défiler jusqu’à « Sécurité » et cliquez sur « Ouvrir quand même » à côté de Defaultly. Ce bouton reste disponible environ une heure après l’étape 1.

    Réglages Système, page Confidentialité et sécurité : dans la section Sécurité, Defaultly a été bloqué, avec le bouton Ouvrir quand même à côté

  3. Saisissez votre mot de passe de session ou utilisez Touch ID, puis cliquez de nouveau sur « Ouvrir quand même » dans la zone de dialogue qui suit.

    Zone de dialogue de confirmation : cliquez sur Ouvrir quand même pour lancer Defaultly

Ensuite, Defaultly s’ouvre normalement. L’app auxiliaire intégrée est autorisée en même temps, donc l’ouverture des fichiers sans extension ne déclenche plus d’avertissement. Les captures d’écran montrent l’interface en anglais ; dans macOS en français, les boutons portent les noms indiqués ci-dessus.

Utilisation

Ouvrir .env et Dockerfile dans votre éditeur

Dans l’onglet « Types de fichiers », repérez le groupe « Fichiers sans extension », choisissez votre éditeur dans le menu à droite (VS Code, Zed, Sublime Text…), puis cliquez sur « Appliquer » en bas de la fenêtre. Désormais, un double-clic sur .env, Dockerfile et compagnie les ouvre directement dans cet éditeur.

Définir l’éditeur par défaut de tous les fichiers de code

Même principe pour les groupes « Code », « Configuration et données » et « Markdown » : choisissez l’app, cliquez sur « Appliquer ». Le groupe Code couvre les langages courants, dont JavaScript, TypeScript (.tsx), Python, Java, C, C++, C#, PHP, Ruby, Swift, Go, Rust, Kotlin, Dart, Lua, Shell, PowerShell et SQL, y compris .go et .rs qui n’ont pas de type macOS officiel.

Pour faire une exception sur un format, cliquez sur la ligne du groupe pour le développer, puis choisissez une autre app dans le menu de la ligne du format. La ligne est alors marquée « Réglé à part ». Pour qu’elle suive de nouveau le groupe, choisissez « Suivre le groupe ».

Rechercher et ajouter des extensions

Tapez une extension comme py ou env dans le champ de recherche en haut à droite pour sauter directement à la bonne ligne. Si l’extension n’appartient à aucun groupe, le résultat de recherche propose « Ajouter… » : une fois l’extension saisie, Defaultly montre comment macOS la reconnaît et suggère un groupe. Il ne reste qu’à cliquer sur « Ajouter ».

Définir le navigateur et l’app de messagerie par défaut

Sous les types de fichiers se trouve une carte « Liens » qui permet de choisir l’app qui ouvre les liens web, e-mail, abonnements de calendrier, téléphone, SSH, etc. Quand vous changez de navigateur, macOS affiche toujours une zone de dialogue système pour confirmer : c’est une protection contre le détournement silencieux du navigateur.

Appliquer, annuler et restaurer

Toutes les modifications sont d’abord mises en attente, et le bas de la fenêtre indique combien sont en attente. « Appliquer » les rend effectives, « Abandonner » les annule.

  • « Édition › Annuler » (⌘Z) annule la dernière application, et on peut annuler plusieurs fois de suite.
  • Le bouton à flèche circulaire de la barre d’outils est « Restaurer l’état initial » : chaque type de fichier et chaque lien modifié par Defaultly est redirigé vers l’app qu’il utilisait au premier lancement de Defaultly. Chaque changement est listé avant exécution.
  • « Réglages › Historique » conserve les 20 derniers instantanés, et n’importe lequel peut être restauré.

Savoir pourquoi un fichier s’ouvre dans cette app

Passez à l’onglet « Diagnostic » et déposez un fichier dans le cadre en pointillés. Defaultly indique quelle app l’ouvre et pourquoi : le fichier a son propre réglage « Ouvrir avec » défini dans le Finder, vous avez choisi cette app pour ce type de fichier, ou rien n’était réglé et macOS a choisi tout seul. Sous le résultat, « Utiliser plutôt » permet de passer directement à une autre app.

Déposez un dossier et Defaultly liste tous les fichiers qu’il contient qui ont leur propre réglage « Ouvrir avec ». Sélectionnez-les, cliquez sur « Supprimer leurs propres réglages », et ils suivent de nouveau le réglage de leur type.

Comment Defaultly s’y prend

Le paquet de Defaultly embarque une minuscule app auxiliaire, Defaultly Helper. Quand vous choisissez un éditeur pour les fichiers sans extension, Defaultly fait pointer public.data vers cette app auxiliaire. À l’ouverture d’un tel fichier, elle regarde son contenu : les fichiers texte partent vers l’éditeur choisi, les fichiers binaires sont affichés dans le Finder, puis elle quitte. Elle n’a pas de fenêtre, ne reste pas en arrière-plan et se termine après moins d’une seconde d’inactivité.

Les types que votre app prend déjà en charge, comme .md ou .py, lui sont attribués directement, sans passer par l’app auxiliaire.

macOS ne fournit pas d’API publique pour définir l’app par défaut de public.data. Defaultly écrit donc toutes les modifications de types de fichiers d’un coup dans les préférences LaunchServices, puis redémarre une fois le service lsd pour qu’elles prennent effet. Ce mécanisme n’est pas documenté par Apple et peut cesser de fonctionner après une mise à jour du système. Si une modification ne prend pas, Defaultly se rabat sur l’API publique (il faut alors confirmer chaque type), et pour les fichiers sans extension on peut passer par les règles de dossier dans les « Réglages ».

Questions fréquentes

Comment changer l’app par défaut des fichiers sans extension sur Mac ? Ouvrez Defaultly, choisissez une app pour « Fichiers sans extension » et cliquez sur « Appliquer ». Les fichiers comme .env et Dockerfile s’ouvrent ensuite dans cette app.

Pourquoi « Tout modifier » du Finder ne fonctionne-t-il pas pour les fichiers .env ? macOS traite ces fichiers comme des données génériques (public.data) et n’autorise pas le changement de leur app par défaut via ses API publiques. Defaultly contourne cette limite grâce à son app auxiliaire.

Pourquoi .ts n’est-il pas dans le groupe Code ? macOS reconnaît .ts comme un format vidéo (flux de transport MPEG-2). Le modifier toucherait de vrais fichiers vidéo, donc le groupe Code ne couvre que le .tsx de TypeScript.

Peut-on annuler toutes les modifications ? Oui. Au premier lancement, Defaultly enregistre les associations d’origine et n’écrase jamais cet enregistrement. « Restaurer l’état initial » redirige chaque type modifié vers son app d’origine.

Comment désinstaller Defaultly ? En bas de « Réglages › Ce que Defaultly a écrit », cliquez sur « Désinstaller Defaultly… ». Il rétablit d’abord toutes les associations modifiées, puis se place lui-même dans la corbeille.

Pour plus de détails, notamment sur le mode développeur, les règles et les règles de dossier, consultez la documentation en français du projet.

Le projet sur GitHub : https://github.com/zhaojiannet/defaultly

Partager :

Commentaires