Close
0%
0%

YGWM Whygee's JavaScript Window Manager

YGWM is much more than a window manager! It's a JavaScript framework that turns your website into a "HTML5 application" (or vice versa).

Similar projects worth following
YGWM needs your help ! Are you a skilled HTML5/JS hacker ?

YGWM is a framework that wraps your dynamic contents and provides services to your modules, the most obvious service being the window manager. Others are available too : drag&drop trash, multi-language support, a custom code minifier to pack your site, file save and load, and many other useful tools developed for the YASEP project. See https://hackaday.io/project/6930-yasep-yet-another-small-embedded-processor for a real-world application !

Oh and it's completely licensed under Affero GPLv3.

YGWM is a minimalist framework that aims at speed and compacity so only important features are kept. Fancy visual effects are NOT necessary so if you don't like the look, hack the CSS ;-) But if it doesn't run on a Raspberry Pi, forget it.

YGWM must load fast so a minifier has been integrated in the system. A "development" version loads all the files individually and can generate the "production" single file, devoid of useless spaces (plus a few dirty tricks) and easy to gzip. This is good both for the user (little latency) and the server (reduced load or caching for the web host).

YGWM started in 2009 as a "quantum leap" project because the YASEP homepage was getting cluttered with widgets. Each new page would reload the whole system and there was no way to let pages communicate...

So I opted for a "single page" approach where all the actual pages are included in a window manager. The whole site is now loaded once and the JS modules share data and code. They can communicate and call each other!

Soon the window manager was not enough so the startup systems, the minifier, the documentation and a lot of widgets took a life of their own. In the summer of 2013, a new website ( http://ygwm.org ) was created for the sole purpose of hosting and documenting the framework (without the YASEP specific files), in the hope that other hackers would benefit from it and expand its domain of use. What new applications could this system spur ?

This "fork" from YASEP is also the opportunity to rewrite old dusty parts that pre-date HTML5 and many advanced methods. Actually I have learned JavaScript by developing YGWM over the years. For example, window positions were stored in a cookie that is now replaced by "web storage" element, which opens new opportunities for data persistence and convenience. Worse offenses to coding standards are present though and need to be corrected !


20200412 : Time to reboot the project :-)

  • il nous FAUT un window manager solide pour les navigateurs internet

    llo01/26/2021 at 21:08 3 comments

    Préambule

    (juste un petit mot pour rappeler à quel point je hais le thème sombre de #hackaday, qui me donne l'impression de devoir naviguer en plein brouillard au milieu d'une nuit sans lune, et que proposer un thème clair c'est quand même pas si compliqué et personne ne va en enfer pour ça ... voilà, c'est dit).

    Contexte

    Il y a quelques semaines, j'ai démarré un projet ambitieux de logiciel visant à aider le plus grand nombre à faire du DataScience dans le sens noble du terme, c'est à dire à s'accaparer les données statistiques provenant de nombreux sites à travers le monde pour en extraire des informations utiles afin de faire avancer les choses et de participer à la vie scientifique, même modestement.

    Étant donc un projet au moins en partie éducatif, Il me fallait une interface user friendly. Je me suis donc dirigée vers le blockly et j'ai accepté de mettre un peu de JavaScript dans mon java. Or le navigateur Chromium, bien qu'il ait l'extrême bonté (je ne suis pas sarcastique, je trouve ça fabuleux et rien ne les y obligeaient) de se proposer dans une version toute nue intégrable partout (le Chromium Embedded Framework, cef pour les intimes), cela ne suffisait pas, car il me fallait gérer des alert(), ce qu'il ne peux pas faire. C'est en effet une fonctionnalité liée à l'environnement, trop éloignée du cœur donc. J'aurai pu régler ça en Java (on peut TOUT régler en Java, et là non plus je ne suis pas sarcastique, j'aurai pu, je pourrais, grâce à graalvm (si si, Dieu existe : https://www.graalvm.org/) mais étant donné que c'était du côté client, autant régler ça en JavaScript. Or je connaissais YGWM, le Window Manager de Whygee, qui est décidemment bien sa créature >-) J'ai donc plongé dans le code, je l'ai nettoyé, un peu ordonné, j'ai séparé la partie WM de la partie YASEP. Le résultat, perfectible, est disponible ici (lien github). L'opération fut longue et pas indolore. Hélas, à l'heure actuelle, son code est trop 2010 pour qu'il soit compréhensible par les devs du futur, voir du présent, il lui fallait faire carrément un saut générationnel vers 2020, notamment en matière de lisibilité et de concepts absurdes tel que le nommage, la documentation ou ne pas sauter directement du développement à la compaction.......................... l'intéressé comprendra.

    J'encourage vivement son développeur a se retrousser les manches pour produire un code réellement accessible à tous, donc réellement open source et je serai à ses côtés pour l'y aider. Ça n'est pas si difficile qu'il y parait, on peut y arriver. En attendant, je développe de mon côté son petit frère : yglloWM, que j'essaie de garder sociable et moderne, avec une emphase sur l'ergonomie, non seulement de l'interface elle-même mais aussi de son code et de son API. D'ici quelques mois, je prévois ensuite de rejoindre Whygee sur sa refonte du code de YGWM pour proposer une version retro, à quatre mains, qui sera probablement le nouveau YGWM, mais qui sera conçu pour être compatible avec tous les navigateurs depuis l'invention du HTML et avec cette fois une emphase également sur la performance dans des ordinateurs un peu faiblards voire carrément à genoux, mais en restant lisible et simple dans sa structure et son déploiement. On a le code qu'on mérite et on mérite ce qu'il y a de mieux.

    La documentation

    Il faudra aussi faire une documentation accessible à tous et facile à parcourir, particulièrement en ce qui concerne l'API donc. Je suggèrerai qu'elle ne soit pas intégrée à...

    Read more »

View project log

Enjoy this project?

Share

Discussions

llo wrote 01/14/2021 at 18:27 point

I intend to roll up my sleeves and bring YGWM into the 2020s with a big overhaul ^^ Particulary, to develop desktop applications in JavaScript, a window manager is veryinteresting because it allow to create internal frames and to create complex and personalized experiences.

  Are you sure? yes | no

Yann Guidon / YGDES wrote 01/14/2021 at 18:50 point

And I envisioned this 8 years ago :-D

  Are you sure? yes | no

Yann Guidon / YGDES wrote 01/14/2021 at 18:51 point

are you thinking of Electron apps ?...... ;-)

  Are you sure? yes | no

llo wrote 01/15/2021 at 07:04 point

Yes of course ! Java is great but with all this javascript technology who are develop this decade, there is a urge to complete and flexible desktop solutions in javascript like we already have in java since mostly the beginning.

  Are you sure? yes | no

Yann Guidon / YGDES wrote 01/14/2021 at 17:16 point

Welcome @llo ! it's only fair since you were one of the first to see ygwm coming to life :-)

  Are you sure? yes | no

Similar Projects

Does this project spark your interest?

Become a member to follow this project and never miss any updates