¿Cómo puedo saber qué aplicación robó mi enfoque en OS X?

25

La ventana activa en mi máquina ocasionalmente pierde el foco. La aplicación activa sigue siendo la misma: si estaba en Chrome antes, todavía estoy en Chrome ahora, pero la ventana activa ya no está activa. No hay ventana activa. Esto es frustrante; sucedió mientras escribía esta pregunta, y mis pulsaciones de teclas de repente dejaron de registrarse.

Creo que alguna otra aplicación está robando foco, pero que en sí misma no tiene interfaz de usuario para mostrar, por lo que la ventana activa deja de estar activa, pero la aplicación activa permanece activa.

La pregunta es: ¿cómo puedo rastrear la aplicación infractora para poder eliminarla con enojo? Normalmente en casos de robo de foco, el culpable es obvio, porque tiene foco. En este caso, estoy perplejo.

Josh Bleecher Snyder
fuente
Puede probar el Apple > Force Quit...menú para ver si hay algo en ejecución que no debería estar.
Michael Frank
1
@MichaelFrank No mostrará las aplicaciones que no tienen barra de menú (por ejemplo, las que están LSUIElementconfiguradas trueen Info.plist). Esos son perfectamente capaces de ese comportamiento.
Daniel Beck
@DanielBeck Ahh, te tengo. Es útil saberlo.
Michael Frank
1
Para su información, hice básicamente esta misma pregunta en Apple SE: ¿Hay alguna forma de detectar qué programa está robando foco en mi Mac?
Kevin Reid
tell application "System Events" to display alert ((name of first application process whose frontmost is true) as string)desafortunadamente no considera procesos sin barra de menú.
Daniel Beck

Respuestas:

35

Aquí hay un script que le dirá qué aplicación se está activando sin avisarle. Lo adapté de una respuesta a la pregunta de @ KevinReid sobre Apple SE .

Deje que se ejecute en una terminal, espere a que la aplicación maliciosa robe el foco y vea qué aplicación aparece en último lugar. (Para mí: Google Drive. Otros han informado cosas de 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)
medmunds
fuente
Este guión me dice que mi culpable esGoogle Drive [/Applications/Google Drive.app]
MarkHu
El culpable para mí terminó siendo Symantec.
Josh Bleecher Snyder
1
En mi caso, es SecurityAgent [/System/Library/Frameworks/Security.framework/Versions/A/MachServices/SecurityAgent.bundle]
Ed Randall el
La aplicación ofensiva era el Asistente de actualización de Microsoft. Aprecio mucho esta respuesta, este problema me ha estado volviendo loco por un tiempo.
jamesbev
2
Mi culpable fue JetBrains Toolbox [/ Applications / JetBrains Toolbox.app/Contents/jetbrains-toolbox-cef.app], estaba tratando de actualizarse y se bloqueó en el proceso. Muchas gracias muchisimo !! También consumía una gran cantidad de recursos.
Gabriel
1

Esto sonará tonto y absurdamente simple ... Tuve el mismo problema con mi computadora portátil cuando utilicé el trackpad o el teclado incorporado. Tenía dos computadoras portátiles separadas que ofrecen experiencias similares después de haber estado expuesto a un poco de humedad (sí, me derramé sobre el teclado).

Agregar mouse y teclado periféricos lo resolvió por mí.

Paul E
fuente
1
Interesante. Utilizo un mouse y teclado externos, pero espero que esto ayude a alguien más. Gracias.
Josh Bleecher Snyder