Comment savoir quelle application a volé mon attention dans OS X?


25

La fenêtre active de ma machine perd occasionnellement le focus. L'application active reste la même - si j'étais dans Chrome auparavant, je suis toujours dans Chrome maintenant - mais la fenêtre active n'est plus active. Aucune fenêtre n'est active. C'est frustrant; cela s'est produit en tapant cette question, et mes frappes ont soudainement cessé de s'enregistrer.

Je crois qu'une autre application vole le focus, mais qu'elle n'a pas d'interface utilisateur à afficher, de sorte que la fenêtre active ne devient pas active, mais l'application active reste active.

La question est la suivante: comment localiser l'application incriminée afin de la supprimer avec colère? Normalement, en cas de vol de focus, le coupable est évident, car il a le focus. Dans ce cas, je suis perplexe.


Vous pouvez essayer le Apple > Force Quit...menu pour voir s'il y a quelque chose qui ne devrait pas fonctionner.
Michael Frank

1
@MichaelFrank Il n'affichera pas les applications qui n'ont pas de barre de menu (par exemple, celles qui sont LSUIElementdéfinies sur truein Info.plist). Ceux-ci sont parfaitement capables de ce comportement.
Daniel Beck

@DanielBeck Ahh, gotcha. C'est pratique à savoir.
Michael Frank

1
Pour info, j'ai posé essentiellement cette même question sur Apple SE: Existe
Kevin Reid

tell application "System Events" to display alert ((name of first application process whose frontmost is true) as string)ne considère malheureusement pas les processus sans barre de menus.
Daniel Beck

Réponses:


35

Voici un script qui vous indiquera quelle application est activée sans vous le dire. Je l'ai adapté d'une réponse à la question de @ KevinReid sur Apple SE .

Laissez-le fonctionner dans un terminal, attendez que l'application escroc vole le focus et voyez quelle application est répertoriée en dernier. (Pour moi: Google Drive. D'autres ont signalé des trucs Symantec AV.)

#!/usr/bin/python                                                                                                       

try:
    from AppKit import NSWorkspace
except ImportError:
    print "Can't import AppKit -- maybe you're running python from brew?"
    print "Try running with Apple's /usr/bin/python instead."
    exit(1)

from datetime import datetime
from time import sleep

last_active_name = None
while True:
    active_app = NSWorkspace.sharedWorkspace().activeApplication()
    if active_app['NSApplicationName'] != last_active_name:
        last_active_name = active_app['NSApplicationName']
        print '%s: %s [%s]' % (
            datetime.now().strftime('%Y-%m-%d %H:%M:%S'),
            active_app['NSApplicationName'],
            active_app['NSApplicationPath']
        )
    sleep(1)

Ce script me dit que mon coupable estGoogle Drive [/Applications/Google Drive.app]
MarkHu

Le coupable pour moi a fini par être Symantec.
Josh Bleecher Snyder

1
Dans mon cas, c'est SecurityAgent [/System/Library/Frameworks/Security.framework/Versions/A/MachServices/SecurityAgent.bundle]
Ed Randall

L'application incriminée était Microsoft Update Assistant. J'apprécie beaucoup cette réponse, ce problème me rend fou depuis un moment.
jamesbev

2
Mon coupable était JetBrains Toolbox [/ Applications / JetBrains Toolbox.app/Contents/jetbrains-toolbox-cef.app], essayait de se mettre à jour et plantait dans le processus. Merci beaucoup! Il consommait également une énorme quantité de ressources.
Gabriel

1

Cela semblera ridicule et ridiculement simple ... J'ai eu le même problème avec mon ordinateur portable lorsque j'ai utilisé le trackpad ou le clavier intégré. Deux ordinateurs portables distincts ont donné des expériences similaires après avoir été exposés à un peu d'humidité (oui, j'ai renversé sur le clavier).

L'ajout de souris et de clavier périphériques l'a résolu pour moi.


1
Intéressant. J'utilise une souris et un clavier externes, mais j'espère que cela aide quelqu'un d'autre. Merci.
Josh Bleecher Snyder
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.