# Focus sur icones du bureau

**URL:** <https://discuss.afpy.org/t/focus-sur-icones-du-bureau/1859>\
**Category:** Entraide\
**Created:** [Décembre 17, 2023, 10:02 UTC](https://discuss.afpy.org/t/focus-sur-icones-du-bureau/1859 "2023-12-17T22:02:26Z")\
**Posts on this page:** 7\
**Page:** 1

<div class="post-metadata">

**Author:** ![estrem](https://discuss.afpy.org/letter_avatar_proxy/v4/letter/e/5fc32e/32.png) [@estrem](https://discuss.afpy.org/u/estrem)\
**Post date:** [Décembre 17, 2023, 10:02 UTC](https://discuss.afpy.org/t/focus-sur-icones-du-bureau/1859/1 "2023-12-17T22:02:27Z")

</div>

Bonjour,

Pour rappel je suis déficient visuel.

Je continue avec Python ei j’ai écrit un Player qui utilise espeak pour vocaliser un texte.  
Dans une petite interface tkinter j’ai “bindé” des raccourcis pour réaliser des fonctions.

Je voudrais aller plus loin et récupérer le focus clavier des icones du bureau comme on le ferait avec les widgets de tkinter.  
Evidemment ce n’est pas avec tkinter que je ferais cela.

J’étudie le module Xlib et je tourne autour uniquement du type window sans deviner où trouver les objets comme les icones.  
Une icone pourrait-elle être une window “réduite” ?

Je ne trouve aucun post sur Xlib sur [afpy.org](http://afpy.org).

Ce n’est peut-être pas la bonne méthode pour connaître quelle icone a le focus.

Auriez-vous une solution ou piste ?

Cordialement  
pierre estrem

---

<div class="post-metadata">

**Author:** ![estrem](https://discuss.afpy.org/letter_avatar_proxy/v4/letter/e/5fc32e/32.png) [@estrem](https://discuss.afpy.org/u/estrem)\
**Post date:** [Décembre 20, 2023, 1:17 UTC](https://discuss.afpy.org/t/focus-sur-icones-du-bureau/1859/2 "2023-12-20T01:17:34Z")

</div>

Je vais essayer d’être exact…

Je voudrais utiliser un module qui fasse exactement ce que fait tkinter mais appliquer au bureau XFCE.

Autrement dit pouvoir intercepter les frappes clavier (bind) et connaître quel objet a le focus.

Le script devrait donc tourner en arrière-plan.

Merci  
pierre estrem

---

<div class="post-metadata">

**Author:** ![Mindiell](https://discuss.afpy.org/user_avatar/discuss.afpy.org/mindiell/32/10_2.png) [@Mindiell](https://discuss.afpy.org/u/Mindiell)\
**Post date:** [Décembre 21, 2023, 11:55 UTC](https://discuss.afpy.org/t/focus-sur-icones-du-bureau/1859/3 "2023-12-21T11:55:03Z")

</div>

Ca me semble devoir être fait au niveau système en effet. Je vais voir si je peux ramener une personne qui a bossé sur xlib pour voir s’il a une idée.

---

<div class="post-metadata">

**Author:** ![estrem](https://discuss.afpy.org/letter_avatar_proxy/v4/letter/e/5fc32e/32.png) [@estrem](https://discuss.afpy.org/u/estrem)\
**Post date:** [Décembre 21, 2023, 4:05 UTC](https://discuss.afpy.org/t/focus-sur-icones-du-bureau/1859/4 "2023-12-21T16:05:34Z")

</div>

Bonjour,

Grand merci pour ce retour ! 🙂

Tel que j’ai étudié Xlib je comprenais qu’on manipulait des fenêtres et  
fait penser aussi à la commande “wmctrl” qui donne des infos sur les  
desktops/windows mais rien sur le focus sur ces desktops, et c’est tout  
ce que je souhaite.

J’ai vu du code qui semblait répondre mais dans un langage inconnu  
(AutoIt ?).

Je reste sur le pont pour vous dire où j’en suis sur ce sujet.

Cordialement  
pierre estrem

---

<div class="post-metadata">

**Author:** ![fabien](https://discuss.afpy.org/user_avatar/discuss.afpy.org/fabien/32/135_2.png) [@fabien](https://discuss.afpy.org/u/fabien)\
**Post date:** [Décembre 21, 2023, 8:27 UTC](https://discuss.afpy.org/t/focus-sur-icones-du-bureau/1859/5 "2023-12-21T20:27:25Z")

</div>

Bonjour,  
Regarde “xdotool getwindowfocus”. C’est une commande du shell…  
Imaginons que tu es sur une fenetre A:  
` FOCUS_A = int(subprocess.run(["xdotool getwindowfocus"], shell=True, stdout=subprocess.PIPE).stdout)`  
si par la suite tu veux savoir si c’est la fenetre A qui a le focus:

```python
if int(subprocess.run(["xdotool getwindowfocus", shell=True, stdout=subprocess.PIPE).stdout) == FOCUS: 

```

---

<div class="post-metadata">

**Author:** ![estrem](https://discuss.afpy.org/letter_avatar_proxy/v4/letter/e/5fc32e/32.png) [@estrem](https://discuss.afpy.org/u/estrem)\
**Post date:** [Décembre 21, 2023, 10:35 UTC](https://discuss.afpy.org/t/focus-sur-icones-du-bureau/1859/6 "2023-12-21T22:35:07Z")

</div>

Bonsoir,

Hélas xdotool (équivalent au module xdo de Python) retourne l’ID d’une  
fenêtre alors que le Bureau XFCE est autre chose qu’une fenêtre.

On est plus bas dans le système, serveur X ?

Je vais voir du côté des modules Python relatif au keyboard.  
Ca pourrait le faire.

Merci pour votre contribution

---

<div class="post-metadata">

**Author:** ![estrem](https://discuss.afpy.org/letter_avatar_proxy/v4/letter/e/5fc32e/32.png) [@estrem](https://discuss.afpy.org/u/estrem)\
**Post date:** [Février 5, 2024, 1:16 UTC](https://discuss.afpy.org/t/focus-sur-icones-du-bureau/1859/7 "2024-02-05T01:16:25Z")

</div>

Bonjour,

Un petit retour pour vous informer que le bon module pour intercepter  
les frappes du clavier se nomme “pyxhook” et qu’il faut utiliser la  
classe HookManager() ainsi :

`
from pyxhook import HookManager
...
hm = HookManager()
hm.HookKeyboard()
hm.KeyDown = onKeyDown
hm.KeyUp = onKeyUp
hm.start()
`

pierre estrem
