Lorsqu'un utilisateur charge mon programme C++, je veux que le terminal ait une certaine apparence. J'ai résolu ce problème en enveloppant mon programme dans un AppleScript .app qui écrase ~/Library/Preferences/com.apple.Terminal.plist
(en faisant d'abord une sauvegarde) avant d'ouvrir le programme. Avec une nouvelle killall cfprefsd
Si l'on appelle mon programme, cela fonctionne (si le terminal n'était pas ouvert au départ !), mais je ne veux pas perturber les préférences du terminal de l'utilisateur. Donc, après avoir appelé mon programme, j'écrase ...Terminal.plist
à nouveau avec la sauvegarde des paramètres d'origine.
Le problème est que lorsque mon programme est terminé et que Terminal se ferme, ses préférences sont automatiquement remplacées par celles de la fenêtre en cours, ce qui signifie que l'utilisateur est coincé avec l'apparence que j'ai définie pour mon programme. J'ai essayé de contrer ce problème en faisant en sorte que l'AppleScript attende que Terminal soit fermé, puis écrase la plist avec la sauvegarde une fois de plus, ce qui fonctionne, mais si mon application devait être fermée avant Terminal, cela échouerait bien sûr. Et l'ensemble du processus semble assez compliqué pour commencer.
Puis-je empêcher le terminal d'écraser ses préférences lorsqu'il se ferme ? Ou mieux encore, puis-je faire en sorte que mon code s'exécute dans un terminal qui ait l'apparence que je souhaite sans toucher aux paramètres de l'utilisateur ? De préférence, je n'utiliserais pas du tout Terminal pour exécuter mon code (afin qu'il n'échoue pas non plus lorsque Terminal est déjà ouvert), mais je pense que la seule alternative est d'écrire mon propre code...