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.