Crédito a respuesta de superusuario por esto.
Sin duda hay otras formas de conseguirlo, pero si eres hábil con Python, aquí tienes un práctico script que te mostrará los detalles pertinentes para el Windows que se esté mostrando en ese momento. Después de ejecutar, mueva la ventana en cuestión, y el script le dará los detalles específicos (por ejemplo, PID) para esa ventana. A partir de ahí, usted puede hurgar y ver quién le está molestando para su.
#!/usr/bin/env python
import Quartz
import time
from Foundation import NSSet, NSMutableSet
def transformWindowData(data):
list1 = []
for v in data:
if not v.valueForKey_('kCGWindowIsOnscreen'):
continue
row = ( \
str(v.valueForKey_('kCGWindowOwnerPID') or '?').rjust(7) + \
' ' + str(v.valueForKey_('kCGWindowNumber') or '?').rjust(5) + \
' {' + ('}' if v.valueForKey_('kCGWindowBounds') is None else \
( \
str(int(v.valueForKey_('kCGWindowBounds').valueForKey_('X'))) + ',' + \
str(int(v.valueForKey_('kCGWindowBounds').valueForKey_('Y'))) + ',' + \
str(int(v.valueForKey_('kCGWindowBounds').valueForKey_('Width'))) + ',' + \
str(int(v.valueForKey_('kCGWindowBounds').valueForKey_('Height'))) \
) + '}' \
).ljust(21) + \
'\t[' + ((v.valueForKey_('kCGWindowOwnerName') or '') + ']:') + \
('' if v.valueForKey_('kCGWindowName') is None else (" " + v.valueForKey_('kCGWindowName') )) \
)
list1.append(row)
return list1;
def printBeautifully(dataSet):
print ('PID'.rjust(7) + ' ' + 'WinID'.rjust(5) + ' ' + 'x,y,w,h'.ljust(21) + ' ' + '\t[Title]:SubTitle')
print ('-'.rjust(7,'-') + ' ' + '-'.rjust(5,'-') + ' ' + '-'.ljust(21,'-') + ' ' + '\t-------------------------------------------')
# print textList1
for v in dataSet:
print (v);
#grab initial set
wl = Quartz.CGWindowListCopyWindowInfo( Quartz.kCGWindowListOptionAll, Quartz.kCGNullWindowID)
wl = sorted(wl, key=lambda k: k.valueForKey_('kCGWindowOwnerPID'))
#convert into readable format
textList1 = transformWindowData(wl);
#print everything we have on the screen
print ('all windows:')
printBeautifully(textList1)
print ('Move target window')
time.sleep(5)
#grab window data the second time
wl2 = Quartz.CGWindowListCopyWindowInfo(Quartz.kCGWindowListOptionAll, Quartz.kCGNullWindowID)
textList2 = transformWindowData(wl2)
#check the difference
w = NSMutableSet.setWithArray_(textList1)
w.minusSet_(NSSet.setWithArray_(textList2))
#print the difference
printBeautifully(w)
Nota: Este script es para Python 3.x. Me peleé con el script original durante bastante tiempo (no soy programador de Python). No pude conseguir que funcionara (con 2.x) debido a una dependencia de Quartz que requería 3.x.
Un par de requisitos previos son:
pip install pyobjc-framework-Quartz
pip install quartz
0 votos
Hay muchas cosas en MacOS donde necesitas ser un administrador para hacer algunos cambios en los archivos del sistema.
0 votos
Arrancar en modo seguro (Mantenga pulsado
Shift
durante el arranque). Evitará que se carguen software y controladores de terceros. ¿Sigue apareciendo el cuadro de diálogo de la contraseña de administrador?0 votos
¿Cuáles son sus elementos de inicio de sesión? sys pref > Usuarios y cuentas > elementos de inicio de sesión
0 votos
No se puede instalar nada en Mac sin acceso de administrador