![]() |
Bienvenue invité ( Connexion | Inscription )
![]() |
![]()
Message
#1
|
|
Adepte de Macbidouille ![]() Groupe : Membres Messages : 43 Inscrit : 26 May 2008 Membre no 114 865 ![]() |
Bonjour.
J'ai un Mac mini 2018 - OSX MONTERY 12.5 - J'ouvre une application, exemple TexEdit, j'ai mon application qui fonctionne et j'ai une fenêtre, la fenêtre active commence à perdre le focus de manière aléatoire - la fenêtre active devient légèrement grisée et je dois cliquer à nouveau dessus ! Donc la fenêtre active perd le focus. Pas de changement avec ONYX et PRAM… ça recommence après quelques jours le problème. Une solution sans avoir à réinstaller OSX ? J'ai un script qui fonctionne en Python 2 pour OSX 10.12.6 mais pas avec OSX MONTERY 12.5.… Ce script sert a savoir en tache de fond le dernier programme qui s'active. Je ne suis pas programmeur pour que cela fonctionne avec Python3. Code #!/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 message a été modifié par pimentpub - 29 Jul 2022, 10:37. |
|
|
![]() |
![]()
Message
#2
|
|
Macbidouilleur d'Or ! ![]() ![]() ![]() ![]() ![]() Groupe : Membres Messages : 3 544 Inscrit : 5 Sep 2005 Membre no 45 266 ![]() |
Pour faire fonctionner ton script, la syntaxe de "print" a changé avec python 3, il faut rajouter des parenthèses, ça donne ça :
Code #!/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) Il faudra ensuite installer une dépendance pour que le script fonctionne, voir ici : https://developer.apple.com/forums/thread/702611 L'application qui, comme tu dis « prend le focus », ce n'est pas simplement celle qui apparaît dans la barre des menus ? ![]() Ou alors je n'ai rien compris… ![]() Hélas c'est un vieux talon d'Achille de macOS qui me gonfle depuis des années, la gestion du focus est complètement anarchique. On le voit particulièrement au lancement de l'OS quand toutes les apps se réveillent. Il m'arrive parfois de ne pas patienter, et de commencer à taper quelque part. Je dois alors re-cliquer 1 fois, 2… 3… 5 fois sur ma fenêtre qui n'arrête pas de se désactiver. Au delà de l'aspect peu pratique (ex : on est en tranquillement en train de taper dans une app et tout à coup une autre vole le focus et on tape dans le vide…), c'est carrément un trou béant de sécurité puisque n'importe quelle app peut voler le focus à n'importe qui, n'importe quand. On imagine facilement une petite app qui aurait le don de s'imposer pile au moment où on est sur le point de taper son mot de passe… Ce message a été modifié par Krazubu - 29 Jul 2022, 14:25. |
|
|
![]() ![]() |
Nous sommes le : 18th July 2025 - 02:04 |