web-dev-qa-db-fra.com

comment redessiner ou invalider le bureau ubuntu par programmation par c ou python

J'utilise maintenant ubuntu16.04 avec l'environnement de bureau GNOME. Je peux changer les attributs (par exemple metadata::nautilus-icon-position) Des fichiers sur le bureau par c ou python, mais l'affichage du bureau ne se met pas à jour. Ensuite, je simule un événement de presse "F5" en utilisant xdo_send_keysequence_window(x, CURRENTWINDOW, "F5", 0) de libxdo, affiche maintenant la mise à jour mais avec un clin d'œil (il me semble que tous les widgets sur le bureau sont d'abord effacés, puis redessinés). Si je change continuellement les attributs de fichier et simule la presse "F5", le bureau continue de se mettre à jour et de clignoter.

J'ai deux questions:

  1. comment le système de bureau gère-t-il l'événement de presse "F5"? (d'abord effacer tous les widgets sauf l'arrière-plan sur le bureau, puis peut-être dans la prochaine tranche de temps redessiner tous les widgets ??)
  2. existe-t-il un moyen (interface API ou envoyer des événements au bureau) d'invalider ou de redessiner le bureau sans clignoter, tout comme une application GUI normale (widget.move () ou container.invalidate ())?

J'ai beaucoup cherché et je ne trouve pas de réponse. Merci beaucoup

1
growingant

Comme F5 est le raccourci clavier pour la fonction Refresh, il est géré comme tel. Ce n'est pas différent de frapper F5 dans un navigateur Web pour actualiser. La page est effacée et une nouvelle demande est envoyée au serveur. Dans le cas de Nautilus, cela signifie que la vue est effacée et le répertoire analysé de nouveau.

Vous pouvez éventuellement écrire un plug-in (extension) pour Nautilus, qui pourrait saisir le widget réel pour l'arrière-plan, puis invalider uniquement un rectangle partiel, bien que je ne suis pas sûr que cela résoudrait votre problème (vous devriez pouvoir tester en déplacer les fenêtres sur la zone en question, puis les éloigner à nouveau).

La meilleure solution ici, cependant, serait de déposer un bogue contre Nautilus et de résoudre le problème directement, de sorte que lorsque de tels attributs sont modifiés dans les fichiers, Nautilus fera la bonne chose et changera la position de l'icône ou autre.

1
dobey