Existe-t-il un moyen de désactiver l'arrêt automatique des applications OS X?

11

Existe-t-il un moyen de dire à OS X Lion de désactiver la terminaison automatique pour une application donnée que vous ne souhaitez pas terminer automatiquement?

FYI Lion est un abandon si vous ne le saviez pas déjà, et si vous ne voulez pas que ce soit pour un certain Applicaiton.

Lion quittera vos applications en cours d'exécution derrière votre dos s'il décide qu'il a besoin des ressources et si vous ne semblez pas les utiliser. L'heuristique pour déterminer si une application est «en cours d'utilisation» est très conservatrice: elle ne doit pas être l'application active, elle ne doit pas avoir de fenêtres visibles et non minimisées - et, bien sûr, elle doit explicitement prendre en charge l'arrêt automatique.

Par exemple, disons que je ne veux pas que TextEdit se ferme automatiquement lorsque je n'ai aucune fenêtre TextEdit ouverte et que je passe à une autre application.

Après avoir jeté un œil à la section Guide de programmation de l'application Mac pour la terminaison automatique, j'ai pensé que j'essaierais d'ajouter la clé NSSupportsAutomaticTermination avec la valeur Non au fichier Info.plist pour TextEdit. (N'a pas fonctionné: TextEdit se bloque à l'ouverture.)

À noter, le fichier n'incluait pas la clé NSSupportsAutomaticTermination (ce qui signifie qu'Apple utilisait NSProcessInfo pour activer la terminaison automatique), l'ajout d'une clé n'aurait donc probablement aucun effet puisque NSProcessInfo remplace ce qui se trouve dans le fichier plist. (Vérifié, cela ne fonctionne pas, en auto-signant TextEdit avec un Info.plist modifié comprenant la clé NSSupportsAutomaticTermination et la valeur Non).

Un effet secondaire noté est que la modification de quelque chose dans le fichier Info.plist provoque le blocage de TextEdit lors de son ouverture. La cause est notée dans le journal des pannes comme une "signature de code non valide", ce qui signifie que l'application TextEdit et tout son contenu sont signés par du code. La solution consiste à auto-signer l'application à l'aide de la codesigncommande et d'un certificat racine auto-signé, comme indiqué dans la tâche de signature de code .

Après ce que j'ai essayé jusqu'à présent, TextEdit obéit toujours à la résiliation automatique.

MrDaniel
la source
1
Donc ... si vous signez vous-même l'application, cela fonctionne-t-il?
jtbandes
1
Non, le programme se termine toujours automatiquement même après l'auto-signature, indépendamment de ce que j'ai ajouté à Info.plist
MrDaniel
1
Avez-vous essayé de télécharger l'exemple de source pour TextEdit fourni par Apple avec les outils de développement et de modifier (ou supprimer) les éléments NSProcessInfo qui s'inscrivent pour la terminaison automatique?
Cajunluke
Non, je n'ai pas essayé ça, ça devrait marcher dans ce cas. Mais cette question dépasse TextEdit. Il s'agit plutôt de savoir si nous pouvons contourner ce problème sans intervention du développeur au niveau du code source. Étant donné que nous n'aurons pas toujours accès au code source des applications prenant en charge la terminaison automatique.
MrDaniel
1
«C'est comme ça qu'Apple fonctionne», ce qui est tout simplement faux. Il s'agit d'une nouvelle fonctionnalité qui n'est pas bien annoncée. D'après Apples Docs, il n'est même pas clair ce qui est requis pour que le système d'exploitation arrête automatiquement un programme. Et Apple n'annonce pas cela ni ne le mentionne sur la page des fonctionnalités de Lion pour les utilisateurs finaux. Je pense que c'est quelque chose de nouveau qu'Apple essaie. Si l'utilisateur final n'aime pas cela, il doit exprimer Apple et les développeurs afin de l'améliorer.
MrDaniel

Réponses:

14

Votre souhait est ma commande Terminal ;-)

defaults write -g NSDisableAutomaticTermination -bool yes

Notez que, puisque la terminaison automatique ne quitte pas vraiment les applications, mais les masque plutôt , elles doivent avoir été correctement fermées pour que cela prenne effet.


la source
2
Excellent, bon trouver user22760. J'ai essayé comme indiqué ci-dessus et cela fonctionne, merci. Le scénario de test de TextEdit.app ne se termine plus automatiquement après avoir exécuté les valeurs par défaut ..., puis ouvert puis quitté TextEdit. Lors de la réouverture de TextEdit, il ne se terminera plus automatiquement sans aucune fenêtre ouverte et s'exécutant en arrière-plan.
MrDaniel
Intéressant. Après avoir essayé cette commande, cela fonctionne en effet. Cependant, essayer de l'annuler s'est avéré plus difficile. les valeurs par défaut écrivent -g NSDisableAutomaticTermination -bool no, ou false, ou la suppression de la clé n'a aucun effet et les applications ne se termineront pas automatiquement
DrFloyd5
Cette commande miracle fonctionne pour moi sur Mavericks! Il prend effet lors du retour à la session ou lors de l'ouverture d'une nouvelle session.
Nicolas Barbulesco
Merci beaucoup pour les instructions supplémentaires pour lancer et quitter manuellement l'application, puis relancez-la pour voir l'effet correctement!
jtheletter
1

Il existe un moyen infaillible de résoudre ce problème, si votre matériel le prend en charge. Vous pouvez passer de Mac OS X 10.7 (Lion) à Mac OS X 10.6 (Snow Leopard).

Bien que tout le matériel qui exécutera Lion ne puisse pas prendre en charge ce système d'exploitation amélioré (malheureusement, mon MacBook Air mi-2011 ne le fait pas), il comprend des fonctionnalités telles que l'arrêt automatique, Rosetta (qui permet aux processeurs Intel d'exécuter des logiciels compilés pour PPC processeurs) et la compatibilité avec les fonctionnalités d'enregistrement par application dans l'excellent WireTap Studio.

Comme pour toute mise à niveau, certaines fonctionnalités sont perdues (telles que Mission Control , Launch Pad , certains gestes) et certaines bizarreries du système d'exploitation prennent un certain temps pour s'y habituer (le sens du défilement est inversé, par exemple), mais dans l'ensemble, c'est un belle mise à niveau.

Daniel
la source
2
Bon point, mais pour la plupart des utilisateurs, la terminaison automatique ne vaut pas la peine de revenir à Snow Leopard, c'est juste une gêne mineure pour certains utilisateurs, je ne suis pas l'un d'eux.
MrDaniel
1
C'est une solution extrême, bien sûr, mais c'est l'une des nombreuses façons dont Snow Leopard est supérieur à Lion. Leur effet cumulatif pourrait inciter quelqu'un à vouloir Snow Leopard. Cela dit, j'apprends juste à vivre avec, car d'autres fonctionnalités de Lion (en particulier liées à iCloud) valent la peine de supporter les inconvénients.
Daniel
La question concerne Lion.
Graham Perrin
1
@GrahamPerrin était donc ma réponse. Mon point est que c'est l'une des nombreuses choses que Lion a cassées, et une solution pourrait être de ne pas exécuter Lion.
Daniel