MyAppNap : une app pour booster l'autonomie de votre Mac

Nicolas Furno |

Son nom n’est pas encore tout à fait déterminé, mais le concept l’est bien : MyAppNap est un utilitaire qui suspend automatiquement une app quand elle n’est plus utilisée. Son principe est très simple : tant qu’une app est au premier-plan, elle fonctionne normalement, mais dès que vous la passez à l’arrière-plan, elle est suspendue. Pourquoi faire ? Par exemple, économiser radicalement la batterie d’un Mac portable en ne laissant fonctionner qu’une seule à la fois, celle qui est au premier plan. Ou bien suspendre une seule app qui pourrait consommer beaucoup de ressources à l’arrière-plan.

Les apps suspendues apparaissent comme ne répondant plus dans macOS, c’est normal.

MyAppNap est encore assez rudimentaire, on est davantage en présence d’un concept fonctionnel que d’une app prête à emploi. L’ensemble prend la forme d’un script Python à activer dans le terminal avec deux options. Soit en désignant l’app ou les apps à suspendre, par exemple :

python NapMyApp.py Twitterrific Tweetbot

Soit sans paramètre, pour suspendre automatiquement toutes les apps, sauf celle qui est au premier-plan :

python NapMyApp.py

La fenêtre du terminal indique automatiquement ce qui se passe, ce qui permet de vérifier que tout fonctionne correctement. Attention néanmoins, la version actuelle contient un bug si vous voulez activer le mode automatique : la fenêtre de terminal qui sert à activer le script sera suspendue, ce qui suspend aussi le script. Une liste blanche devrait être ajoutée, mais pour le moment, mieux vaut s’en tenir au cas par cas.

Le terminal reste encore indispensable pour utiliser cet outil.

Un autre fichier est fourni pour offrir un semblant d’interface de contrôle. Encore une fois, ce n’est pas une app dédiée, mais le script repose sur rumps, un outil qui permet à un script en Python de s’intégrer à la barre de menus de macOS. Vous devrez l’installer au préalable en utilisant cette commande dans le terminal :

pip install rumps

Puis activez cette variante en utilisant cette commande :

python ForceNap.py

La fenêtre de terminal devra rester ouverte et elle sert, elle aussi, à afficher ce qui se passe. Mais vous pourrez désormais contrôler les apps à suspendre en passant par le menu identifié par les lettres FN. Il affiche toutes les apps ouvertes et permet ensuite de (dé)cocher un élément pour l’ajouter ou le retirer de la liste d’apps suspendues.

Le deuxième script contient les prémices d’une app grand public, même si on en est encore loin.

En bref, MyAppNap n’est pas encore prêt à être utilisé largement et mieux vaut s’abstenir si on ne maîtrise pas un minimum le terminal (nous avons publié un livre, si vous voulez apprendre). Néanmoins, le concept a très bien fonctionné pendant nos essais et il pourrait être très intéressant pour maximiser l’autonomie d’un portable. Reste à ajouter une interface digne de ce nom pour éviter totalement le terminal, et on aura peut-être un utilitaire intéressant. En attendant, c’est une béquille qui peut servir si vous n’avez pas peur de mettre les mains dans le cambouis.

MyAppNap est un projet open-source, à suivre sur GitHub. Précisons que son concepteur a publié une pré-version d’une app quelques heures avant la rédaction de cet article, mais elle a planté à l’ouverture pendant nos essais.

avatar ovea | 

Intéressant pour élaborer une stratégie limitant les applications systèmes dédiées exclusivement à Appel et ses connexions sans intérêt, dès lors qu'on utilise aucun de ses services

avatar Brice21 | 

@ovea

Russe ?

avatar ovea | 

@Brice21

TT pô resté au finnois ?

avatar Brice21 | 

@ovea

Quoi j’ai deviné du premier coups?

avatar ovea | 

@Brice21

C'est une langue dans laquelle on a un mode permettant de transformer un mot en quantitatif.
Exemple : une «porte» ? , ça donne «ovea»

avatar Brice21 | 

@ovea

Donc le finnois, correct?

avatar ovea | 

@Brice21

J'aimerais bien retrouver la langue …

Mais en l'état, une définition plus mathématiques serait «le caractère est quantitatif si les modalités qui définissent ce caractère sont mesurables», et il n'existe pas en français de mode pour le que le mot «porte» devienne un quantitatif, sinon en le définissant comme tel, du style : «portē»

Ouiii, c'est bien le finnois :
Une «porte» en finnois se dit «ovi»
Et son partitif «ovea»

Note wiki :«Dans certaines langues, comme le finnois ou l’estonien, l’usage du partitif est très étendu et il est utilisé à chaque fois que l’on ne veut pas parler d’un « tout » (marquage des noms précédés d’un adjectif numéral, marquage du complément d’objet, de l’adjectif attribut, etc.). Il s’exprime alors au moyen de suffixes spécifiques (en finnois) ou de modifications de la racine du mot (estonien).»

avatar iPop | 

Ce qui m’intéresserait, un script pour quitter les applications après un certain temps si inactifs.

avatar C1rc3@0rc | 

iPop

réponse courte: Pas possible

Réponse développée: Mac OS est un Unix, et Unix établit des ordre et hiérarchies de droits et de responsabilité, que ce soit pour les fichiers ou les processus (une application est un processus).

Une application est un processus qui dépend de la sphère de responsabilité de l'utilisateur, c'est donc lui et lui seul qui peut lancer et arrêter une application (hors cas anormaux ou l'OS intervient)

Un script comme tu le demandes devrait obtenir la certitude que l'application n'est utiliser par rien ( pas de réseau, pas de fichier, pas d'autres applications, pas d'UI par l'utilisateur,...) et devrait ensuite fermer l'application en le demandant a l'utilisateur (sinon ce serait une violation de droits et une faille de sécurité)

La seule chose que l'OS peut faire c'est ce qu'il fait deja, a savoir "mettre en sommeil" une application en la sortant de la RAM (avec un enregistrement de celle-ci sur le disque) et vérifier régulièrement qu'elle n'est pas sollicité (si c'est le cas faut la recharger en mémoire)

Après tu peux faire un script Applescript (ou bash/python/ ton langage favori) qui fermera une application au bout d'un délai fixé.

Mais d'une part ça semble pas répondre a ta demande et d'autre part ça va consommer de l’énergie...

En gros ce que fait l'application/script dont il est question dans l'article c'est qu'elle vérifie régulièrement ce que font des applications, le temps depuis lequel elles sont lancées... en fait tu peux t'en inspirer mais l’intérêt est très limité... ça va bouffer plus de ressources rien que par son fonctionnement.

Bref, pour les applications la meilleure solution pour qu'elle ne consomment pas d’énergie ni de ressources, c'est de les lancer que lorsqu'on en a besoin et de les fermer des qu'on en a plus l'usage.

avatar iPop | 

@C1rc3@0rc

Ok merci de tes lumières.

avatar iapx | 

Pour complémenter ce qu'écrit @C1rc3@0rc, une application qui ne fait rien ne consomme quasiment pas d'énergie (l'exception étant les belles animations sur le web ouvertes et consommatrice, jai même participé à ça LaFamilleDuLait, un grand moment de solitude quand je vois ce que ça consomme surtout sur un vieux laptop).

Il est même plus consommateur de ressources de quitter une application "propre" qui n'est pas utilisée, pour la relancer après, que de la laisser en mémoire si on en a assez.

En revanche, limiter la conso d'application en tâche de fond avec un budget énergétique pourrait être très intéressant.
Je conseille en tout cas d'utiliser le Moniteur Système (dans Applications -> Utilitaires), et l'onglet Énergie, il en apprend beaucoup sur ce qui consomme à tout moment ou sur la durée.

avatar Grug | 
avatar iPop | 

@Grug

Merci, excellente trouvaille

avatar ovea | 

@iPop

Faire un test en mettant le processus de l'application en mode zombie et attendre de voir si le système, (tousss ! Tousss ! ) est bien écrit … hoooo hoho

avatar devkid | 

Bonsoir,

Savez-vous si le fonction masquer l'application (cmd + h) permettrait-elle aussi une réduction de l'impact énergétique ?

Merci,

avatar C1rc3@0rc | 

@devkid

Ça va pas changer grand chose en fait.
Masquer une application va eviter qu'elle rafraichisse son interface si elle est bien programmée... mais l'interface ne consomme presque rien.

Une application qui joue une video / genere une animation devrait - si elle est bien programmée - se mettre en pause dans ces conditions, donc oui dans ce cas. Pareil pour la musique.

Apres, tu as des applications moins evidentes comme causes de consommation: processus reseau, activité disque, services aux autres applications... ce sont des applications qui tournent meme si elles n'ont pas d'activité visible / d'interface et tournent en "tache de fond".

Dans les faits il faut voir qu'il y a bien un truc qui bien que pas visible consomme aussi vraiment beaucoup: le navigateur Web.
Les onglets sont un gouffre énergétique du fait surtout des pages avec de la pub qui se rafraîchissent continuellement même si l'onglet/page n'est pas visible. C'est une plaie et c'est de la responsabilité des programmeurs de neutraliser ce comportement.

Le plus simple et efficace pour eviter qu'une application consomme c'est de la fermer.

avatar iapx | 

+1 @C1rc3@0rc

Les web est un gouffre, les publicités animées étant une catastrophe en terme d'usage de nos ressources, un Ad Blocker est une première mesure de défense contre cette gabégie (à laquelle je participe des fois, à mon corps défendant).

avatar cecile_aelita | 

Il n y a pas déjà une couche de Mac OS qui fait un peu ça ? (App nap justement). Optimiser la batterie en mettant au ralenti les app qui ne sont pas au premier plan?
Parce que couper complètement une appli qui n’est pas au premier plan c’est un peu extrême quand même (iTunes pour la musique peut continuer à lire la musique même si elle est pas au premier plan tout en étant mis en stand by

avatar C1rc3@0rc | 

@romainB84

iTunes est un cas d'ecole dans le contre exemple...

Effectivement un lecteur audio ne devrait consommer que tres peu. Mais helas, iTunes est une usine a gaz aux fonctions plethoriques, une amas absurde qui meme pour une activité de base consomme et consomme toujours. Mal conçue, mal programmée, anti-ergonomique,... cette application cumule toutes les tares a commencer qu'elle fait mal ce qu'on en attend.

Autrement dis, pour ecouter de la musique, il faut passer par une autre application et garder iTunes pour gerer les applications iOS, les achats iTunes et l'administration des appareils iOS... sinon il ne faut pas l'utiliser.

avatar Doctomac | 

L'excès dans tes propos reflètent juste ton incompétence à parler du sujet.

Lance la musique sur iTunes, met iTunes en arrière plan et lance Moniteur d'activité. Regarde l'usage processeur d'iTunes et reviens ici pour donner le chiffre.

Cette application MyAppNap est l'abomination dans l'histoire. Je ne sais pas comment fonctionne cette étron d'application que MacG a déniché je ne sais où, mais si effectivement l'app coupe une application audio en arrière plan, cela serait d'une imbécilité à la hauteur de tes commentaires sur iTunes.

Par ailleurs, nous avons posé la question mais pas de réponse, quel est l'intérêt de cette chose en comparaison de App Nap qui est intégré à macOS ? La solution intégrée d'Apple étant bien plus intelligente dans la mesure où justement, une application audio (n'importe laquelle) ne sera pas mise en veille si elle bascule en arrière-plan. C’est un minimum si on veut écouter de la musique pendant que l’on fait autre choses....

avatar Doctomac | 

C’est quoi la différence avec App Nap intégré à macOS (si ce n'est être plus radical dans la gestion des apps restées en arrière-plan)?

avatar stefhan | 

@Doctomac

Merci, j’allais poser la même question.

avatar JPTK | 

C'est efficace sur un mac mini ??

avatar Bigdidou | 

"le concept a très bien fonctionné pendant nos essais"

Vous l'avez testé longtemps ?
J'aurais tendance à penser que c'est le genre de truc qui finit par bloquer inéluctablement la machine, hard reset à la clé...

avatar Yao' | 

Endurance fait ça très bien, en plus d'autres choses ;)
http://www.enduranceapp.com/

avatar SergioSL | 

Sans parler d'App Tamer, très simple à utiliser...

avatar pat3 | 

@Yao'

Connaissais pas, merci, je vais tester

CONNEXION UTILISATEUR