nxi est un navigateur flexible, modulable et entièrement customisable apportant de nouvelles fonctionnalités manquantes dans les navigateur classiques.
Et bien super ! Alors je vais présenter de nouveau le projet nxi à l’occasion de mon arrivé dans le projet et de la fusion avec Sielo car on ne va pas se mentir, @ads00 explique mal.
Les bases
C’est assez simple, nxi est un navigateur. Par exemple, un navigateur web est un logiciel qui utilise un moteur web pour afficher des données venant du web. Et bien nxi est multi-protocolaire et donc pas seulement un navigateur web !
Cela veut dire que nxi pourra être un navigateur web puisqu’il peut utiliser un moteur de rendu web, mais il peut aussi utiliser un moteur de rendu 3D par exemple.
Il est important de noter qu’à la base nxi devait être un navigateur nex, nex étant une sorte de protocole développé par @ads00. Mais je ne m’étendrai pas dessus puisque @ads00 a fait un post dédié à nex.
Une architecture puissante
Le gros point fort de nxi sera son architecture. L’architecture sera pensée pour fournir un système d’interfaces flexibles, génériques et modulaires. Il sera donc très simple d’intégrer toutes sortes de fonctionnalité avec de simples commandes et interfaces. Voilà une image pour illustrer brièvement :
De plus, chaque action sera liée à une commande pour rendre le tout encore plus facile à utiliser. (pour reprendre un exemple, nxi::tab_switch;interface=bidule;page=3 changera d’onglet)
Un exemple concret
Ce qui fait la force de Sielo, ce sont les espaces d’onglets. Et bien les espaces d’onglets seront simplement des interfaces dans des interfaces, il y a donc beaucoup plus de possibilités comme ce créer des "workspace" d’espaces d’onglets, ou avoir des espaces d’onglets dans des espaces d’onglets… Vous voyez la puissance de la bête ?
De plus, je réfléchissais à l’ajout du support des WebExtension dans Sielo. Cela aurai été un processus assez long et difficile. Or, avec nxi ce sera assez simple. Les WebExtension étant faites en JS on pourra traduire cela comme ça :
1
commande WebExtension -> commande nxi -> action sur nxi
Comment placer nxi par rapport à un navigateur web
Et bien déjà, c’est plus qu’un navigateur web comme je l’ai déjà dit. Il y a une image que j’aime beaucoup avec nxi, c’est celle de Linux.
On peut ainsi voir nxi comme le noyau avec ses distributions. Ainsi par exemple, Sielo sera simplement une "distribution" de nxi. Sielo se contentera d’apporter des configurations par défaut un peu différentes pour mettre en avant le côté navigateur web de nxi ainsi que les espaces d’onglets. Quelqu’un pourrait très bien prendre nxi, y ajouter une configuration qui utilise un moteur 3D pour afficher un "switcher" d’onglet 3D a la Windows 7,
et distribuer sa build avec cette configuration par défaut.
Bien sur il sera possible de changer ces configurations et donc d’avoir le switcher 3D dans Sielo, mais nous savons tous que l’humain est relativement flemmard et donc que les configurations par défaut ont leur importance.
En conclusion
Je le sais, c’est assez compliqué à bien tout saisir. Le but de nxi est assez en profondeur et tellement générique qu’on peut voir énormément de cas d’utilisation et donc s’y perdre. De plus le concept peut paraître assez fou et va demander pas mal d’efforts à développer. Mais c’est pour ça que @ads00 a besoin d’aide et m’a finalement trouvé ! Bref, si vous avez des questions n’hésitez pas, elles seront importantes et pourront m’aider à clarifier ce post.
Les pages peuvent être connectées entre elles quel que soit le type de page.
Les modules (Strateon ici) peuvent ajouter des commandes et des types ce qui permet d’avoir un comportement spécifique lorsqu’on affiche une page du module Strateon.
C’est encore en test, ça va servir pour gérer les contextes.
Par exemple, quand tu entres une recherche dans la barre de commande, tu peux choisir de faire la recherche dans le contexte actuel (auto) ou un autre (web pour lancer une recherche web, explorer pour rechercher dans le système de fichiers, page pour rechercher dans le document actuel etc …)
Auto peut également déduire le contexte depuis la commande, par exemple http://... changera le contexte en web, /path/... changera le contexte en explorer etc …
Les suggestions peuvent être de différents types (commande, page, text)
Les commandes peuvent avoir des paramètres, la barre de commande se met en mode "param" quand une commande a besoin de paramètres utilisateur
Une commande peut ajouter des suggestions pour ses paramètres
Une commande peut avoir un mode preview qui permet d’exécuter la commande avec le paramètre sélectionné dans les suggestions
Une commande peut avoir des raccourcis de type {combo} + {sequence}. Par exemple pour {CTRL ALT} {N, T}, la commande associée est exécutée lorsque CTRL + ALT est maintenu puis la séquence N, T est entrée.
Les raccourcis affichent les suggestions des commandes associées qui match le combo/séquence en cours
A suivre :
On rend le code plus propre pour tout ce qui a été testé plus haut
On continue le système de pages
On ajoute des commandes liées aux pages
On trouve une solution pour visualiser le graph de page
On est dans le contexte "command", les suggestions de commandes sont affichées, on tape une commande qui requiert des paramètres, donc on passe dans le contexte "command_executor", les suggestions chercheront dans les suggestions de paramètre de la commande.
On peut être sur plusieurs contextes en même temps, si on est sur le contexte "page" et "command" en même temps, la recherche de suggestion se fera sur la liste des commandes et des pages ouvertes.
Les contextes sont applicables aux commandes et aux raccourcis.
L’ancien système de session a été renommé en "user". Les nouvelles sessions permettent d’avoir plusieurs configurations via ces sessions(cookies, thèmes, historique etc ..) et de les associer à des pages.
Plusieurs sessions peuvent être activent en même temps (ce qui permet d’afficher les pages de plusieurs sessions) mais une seule peut être focus (une nouvelle page sera ouverte dans la session focus)
Le support des multiview et multifenêtre vient d’être ajouté en utilisant un système de buffers / groupe de buffers qui permet également de gérer plusieurs inputs.
On peut donc avoir plusieurs buffers associés à plusieurs fenêtres / views ou simplement une fenêtre qui gère plusieurs inputs.
Connectez-vous pour pouvoir poster un message.
Connexion
Pas encore membre ?
Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte