Node-GTK

de | janvier 6, 2020

Constat

GJS, c’est sympa, mais je dois vous avouer que le manque de documentation commence sérieusement à me décourager. En ce moment, ce qui me pose le plus problème ce n’est pas GJS en lui-même mais bien ce qu’il y a autour.

Quand vous faîtes une application, vous avez besoin de faire autre chose que d’afficher des widget à l’écran. Avec GTK vous avez des librairies permettant de générer les IO comme l’acès au fichier avec GLIB, de gérér tout ce qui est Socket avec Soup, etc …. GTJ support tout les binding officiels de GTK.

Problématique

Le problème arrive une fois que vous avez besoin de quelque chose non supporté par GTK. Dans mon cas il s’agit du protocole ZeroConf. Et c’est la ou le point faible de GJS par rapport à des binding comme Python, Go, R etc… En JavaScript vous n’avez pas accès au système car GJS, ne supporte pas NodeJS. Donc adieux les milliers de librairies permettant de rrépondre facilement à tel ou tel besoin. Avec GJS la solution est de passer par des lib C compatible avec GTK. EN gros ce sont des librairies exportant un fichier .gir. Si votre librairie ne le fait pas. Tant pis pour vous.

Dans mon cas, la librairie pour faire du ZeroConf s’appelle LibAvahi. Coup de chance, celle-ci supporte GTK. Enfin partiellement puisque le contenu du .gir n’est pas vraiment aussi complet que la documentation de la librairie. Ensuite les exemples de code ne sont que en C. Bref quand vous êtes un développeur qui viens du Web comme moi. Cela deviens vite lassant de galérer pour compiler la librairie avec les bon flags et de déchiffrer le code source pour essayer de comprendre comment cela pourrais bien marcher en Javascript. Tout cela sans peu voir aucune documentation.

Node-GTK

C’est en partant de ce constat que Node-GTK est né. Le but étant de fourni un binding GTK non pas à partir de JavaScript mais du Runtime de NodeJS. Et cela change absolument tout puisque maintenant vous avez un accès au système via NodeJS.

https://github.com/romgrk/node-gtk

Les avantages que je vois actuellement après un petit test :

  • Le support de presque l’intégralité de GTK. Actuellement il manque Cairo. https://github.com/romgrk/node-gtk/pull/93
  • Le support de typescript qui est en cours
  • L’ensemble des nouveautés JS supporté par Node
  • L’accès à l’ensemble des modules nodeJS
  • Le développeur qui est très impliqué et réactif.

Les inconvénients sont pour moi :

  • Un manque de soutiens sur le projet. 1 développeur
  • Une documentation qui pourrait être elle aussi améliorée. Je me base sur celle du GJS pour tout ce qui est binding GTK.
  • Une mise en place manuelle. Builder ne supportant pas Node-Gtk, nous n’avons pas la configuration de flatpak fonctionnelle dès le début

Conclusion

Je vais donner une chance à ce projet qui m’a l’air clairement prometteur. Pour le moment je teste les différentes possibilités pour retomber sur mes pattes avec la configuration de build et flatpak. Je ferrai un article dès que j’aurai trouvé comment mettre en place tout cela.

00

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.