Como posso saber qual aplicativo roubou meu foco no OS X?


25

A janela ativa da minha máquina ocasionalmente perde o foco. O aplicativo ativo permanece o mesmo - se eu estava no Chrome antes, ainda estou no Chrome agora - mas a janela ativa não está mais ativa. Nenhuma janela está ativa. Isso é frustrante; isso aconteceu durante a digitação desta pergunta e, de repente, minhas teclas pararam de registrar.

Acredito que algum outro aplicativo está roubando o foco, mas que ele próprio não possui interface do usuário para exibir, portanto a janela ativa fica inativa, mas o aplicativo ativo permanece ativo.

A pergunta é: como rastrear o aplicativo incorreto, para poder excluí-lo com raiva? Normalmente, em casos de roubo de foco, o culpado é óbvio, porque tem foco. Nesse caso, estou perplexo.


Você pode tentar o Apple > Force Quit...menu para ver se há algo em execução que não deveria existir.
— Michael Frank

1
@MichaelFrank Não mostrará aplicativos que não possuem barra de menus (por exemplo, aqueles com LSUIElementdefinido como truein Info.plist). Aqueles são perfeitamente capazes desse comportamento.
— Daniel Beck

@DanielBeck Ahh, entendi. Isso é útil para saber.
— Michael Frank

1
Para sua informação, eu fiz basicamente a mesma pergunta no Apple SE: Existe uma maneira de detectar qual programa está roubando o foco no meu Mac?
— Kevin Reid

tell application "System Events" to display alert ((name of first application process whose frontmost is true) as string)infelizmente não considera processos sem barra de menus.
— Daniel Beck

Respostas:


35

Aqui está um script que informa qual aplicativo está sendo ativado sem que você informe. Adaptei-o de uma resposta à pergunta de @ KevinReid no Apple SE .

Deixe-o em execução em um terminal, aguarde o aplicativo invasor roubar o foco e veja qual aplicativo está listado por último. (Para mim: Google Drive. Outros relataram coisas sobre o 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)

Este script me diz a minha culpado éGoogle Drive [/Applications/Google Drive.app]
— MarkHu

O culpado por mim acabou sendo a Symantec.
— Josh Bleecher Snyder

1
No meu caso, é SecurityAgent [/System/Library/Frameworks/Security.framework/Versions/A/MachServices/SecurityAgent.bundle]
— Ed Randall

O aplicativo ofensivo foi o Microsoft Update Assistant. Aprecio muito essa resposta, esse problema me deixa louco há um tempo.
— jamesbev

2
Meu culpado era o JetBrains Toolbox [/ Applications / JetBrains Toolbox.app/Contents/jetbrains-toolbox-cef.app], estava tentando se atualizar e travar no processo. Muito obrigado muuuitooooo !! Também consumia uma quantidade enorme de recursos.
— Gabriel

1

Isso vai parecer bobo e absurdamente simples ... Eu tive o mesmo problema com meu laptop quando usei o trackpad ou o teclado embutido. Dois laptops separados tiveram experiências semelhantes após serem expostos a um pouco de umidade (sim, eu derramei no teclado).

A adição de mouse e teclado periféricos resolveu isso para mim.


1
Interessante. Eu uso um mouse e teclado externos, mas espero que isso ajude outra pessoa. Obrigado.
— Josh Bleecher Snyder
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.