Journal Alpha test de mrxvt avec support tout-encodage

Posté par (page perso) .
Tags : aucun
12
25
oct.
2008
Bonjour les gens,

certains ici connaissent-ils l'émulateur de terminal mrxvt ( http://materm.sourceforge.net/wiki/ )? Et en particulier y en a-t-il des utilisateurs dans le coin? Personnellement je suis un gros utilisateur, et comme beaucoup, j'attendais un support pour l'UTF-8. Alors finalement je l'ai fait moi-même.

Pour l'instant le code est très "alpha". Cela marche plutôt bien chez moi (j'utilise même désormais un snapshot de ma version de dév comme terminal principal), mais il n'y a pas eu de test massif. Donc je ne conseille pas d'utiliser chez vous la version actuelle en dehors des tests, et surtout pas pour exécuter un programme super important qui ne doit surtout pas s'arrêter évidemment. On sait jamais, le terminal peut peut-être planter, etc. Même si je crois avoir viré les sources principales de plantage, mon amélioration a tout de même impliqué de changer entièrement la représentation interne des données, donc notamment ça a chamboulé énormément d'allocations mémoires, de boucles, etc. Et je n'ai pas fini toutes les modifs.

Mes principales améliorations consistent donc en 2 points:

1/ Maintenant on peut effectivement lire et taper tous les caractères Unicode, quelque soit l'encodage local (donc notamment UTF-8, mais pas seulement).
Si vous utilisez des programmes d'entrée des caractères exotiques (cad qui ne sont pas sur nos claviers) comme XIM/SCIM, allez y gaiement, ça marche super bien chez moi.

2/ Si l'option xft est activée, plusieurs polices de caractères peuvent être précisées (séparées par des virgules), l'ordre donnant la priorité préférentielle.
Ainsi en donnant plusieurs polices, chaque caractère sera affiché dans la première police de la liste possédant une représentation du dit-caractère.
Cela se fait, soit dans le fichier .mrxvtrc avec l'option 'Mrxvt.xftFont', soit en ligne de commande avec l'option '-xftfn'. Par exemple, si je lance avec la commande suivante:

mrxvt -xft -xftfn 'Bitstream Vera Sans Mono,Sazanami Gothic,Goha-Tibeb Zemen'

Tout caractère s'affichera en Bitstream Vera Sans Mono si possible, puis en Sazanami Gothic (caractères japonais) pour les caractères absents en Bitstream Mono, puis en Goha-Tibeb (police pour l'éthiopien)...

J'ai mis sur cette adresse divers screenshots et fichiers de tests, encodés en UTF-8, qui montrent ce que ça doit donner dans mrxvt:
http://jehan.zemarmot.net/mrxvt_utf8/

Si cela vous intéresse de m'aider, dans un premier temps, je veux surtout repérer tous les cas de plantages, de gros bugs, et de problèmes de compilation (j'ai testé en particulier avec toutes les options, et sans aucune, mais je n'ai pas fait tous les cas particuliers de choix d'options que vous faites habituellement).

Vous pouvez récupérer le code par subversion avec
svn checkout https://materm.svn.sourceforge.net/svnroot/materm/mrxvt05utf(...)

Si ça compile bien, n'hésitez pas à tester cette branche avec tous les
programmes console que vous voulez, ceux qui font du ncurse, vim qui supporte
aussi l'Unicode, ou autre, etc. En long, en large et en travers surtout!

En compilant, vous constaterez pas mal de warning de "incompatible pointer type", la raison est qu'il y a encore plusieurs fonctions que je n'ai pas encore modifiées avec le nouveau type interne. Cela concerne surtout des fonctions du GUI, comme le titre des onglets, des menus, etc. Mais pour l'instant ça ne perturbe pas le fonctionnement "normal" comme un terminal (juste des bugs graphiques dans le GUI), enfin je n'ai pas encore constaté de plantage à cause de ça pour l'instant en tous cas.
La fonction majeure qui ne fonctionne pas avec les encodages multi-octets, c'est le copier-coller (enfin la partie copier sur des caractères multi-octets en fait). Je vais bientôt m'en occuper.

Quand tout sera fait, je nettoierai tout le code (ce que je ne fais pas pour le moment, car tout ce que j'ai commenté du vieux code peut m'être utile tant que je ne suis pas sûr qu'il n'y a pas de régression majeure), puis je proposerai une beta, normalement plus stable.

Ensuite en route pour l'intégration de ma branche dans la branche principale quand tout sera nickel! :-)
Donc je suis tout œil de tout retour que vous pourriez me faire.
Merci.
  • # screen

    Posté par . Évalué à  3 .

    Pour les tests, pas de quoi avoir peur, il suffit d'utiliser screen :)
  • # M vs U

    Posté par (page perso) . Évalué à  7 .

    Et concrètement, mrxvt apporte quoi par rapport à urxvt (qui a ma préférence actuellement) ?
    • [^] # Re: M vs U

      Posté par . Évalué à  5 .

      Les onglets si j'ai bien compris. Mais avec un bon gestionnaire de fenêtre (ou avec screen) on a pas besoin d'onglet ;)
      • [^] # Re: M vs U

        Posté par (page perso) . Évalué à  -3 .

        Ah ok, c'est pour les gens qui sont trop bêtes pour utiliser xmonad.
      • [^] # Re: M vs U

        Posté par . Évalué à  8 .

        urxvt propose lui aussi des onglets, avec 2 extensions Perl fournies de base. La première, en CLI, est activable directement par urxvt -pe tabbed (man urxvtperl pour la conf et autres extensions utiles), et l'autre est trouvable avec la doc, elle donne des tabs par GTK+.

        Mais je plussoie que screen rend les onglets inutiles, et apporte même bien plus, et un bon WM supportant les tabs (et même tiled qui plus est) les remplace avantageusement également (genre awesome, xmonad et leurs potes).

        Donc je me demande aussi ce que mrxvt apporte vraiment en plus, à part des plantage sur l'unicode et plein de features en moins ? :)
      • [^] # Re: M vs U

        Posté par . Évalué à  3 .

        La console linux a aussi ses onglets :)

        ok je => []
    • [^] # Re: M vs U

      Posté par (page perso) . Évalué à  8 .

      Salut,

      effectivement mrxvt est multi-tab. Au delà de cela, franchement me demande pas ce genre de choses. Pourquoi je code ça plutôt qu'autre chose? Je sais pas, pour le fun. On aurait aussi pu se contenter d'un unique programme d'émulateur de console, on en a fait plusieurs qui au final font souvent des choses similaires. Pourquoi? C'est comme ça. Les raisons existent, sur le pourquoi je préfère mrxvt moi-même, mais sont-elles réellement pertinentes? Je ne sais pas vraiment car je n'ai pas beaucoup testé urxvt.
      A vrai dire, je trouvais le côté multitab important. Ensuite chacun son truc. J'ai vu que beaucoup de gens trouvent ça inutile dans les autres réponses ici. Mais bon, je trouve pas vraiment intéressant de discuter sur un tel sujet. Si ça vous plaît pas et que moi ça me plaît, ben n'utilisez pas, et moi je continuerai à utiliser. Comme ça tout le monde est content. C'est cool, non? On va pas vraiment en faire toute une histoire, ce qui importe est que chacun y trouve son compte.

      Tout ce que je sais, c'est que je suis en train d'améliorer mrxvt, et que je suis pas contre des retours... Ensuite chacun est libre de l'utiliser ou non. Ça ne me dérange en rien, je vous assure.

      Jehan
  • # Depuis le temps!

    Posté par (page perso) . Évalué à  2 .

    Quel plaisir de voir que une personne a ajouté le support UTF8 a mrxvt!! Depuis le temps ;)

    J'ai téléchargé la version du svn la configuration/compilation c'est passé sans aucun soucis :)

    Mais il semble que le support UTF8 ne fonctionne pas...J'ai du rater un truc?

    J'ai exécuté le configure avec les options suivantes : ./configure --enable-everything --disable-debug

    J'ai bien Freetype Font : yes

    Et je lance mrxvt ainsi :

    mrxvt -xft -xftfn 'Bitstream Vera Sans Mono'

    Merci.
    • [^] # Re: Depuis le temps!

      Posté par (page perso) . Évalué à  3 .

      Salut,

      qu'appelles-tu "le Support UTF-8 ne fonctionne pas"? Quand tu tapes sur les touches 'é', 'à', etc., ça n'affiche pas ces caractères? Ça affiche des rectangles à la place (= caractère manquant)? Ou ça affiche d'autres trucs?

      Normalement les caracs européens spéciaux (é, è, à, œ, ô, ç, ø, etc.) sont bien dispos dans 'Bitstream Vera Sans Mono'. Par contre si t'essaies d'autres caracs spéciaux, genre les caracs asiatiques, ou autres, ils sont pas dispos dans cette police, donc c'est normal.

      Quoiqu'il en soit, en cas de blem, je veux bien une explication détaillée de ce que tu obtiens, sinon je peux pas vraiment comprendre, donc débugguer.
      Tu peux éventuellement m'envoyer un message privé, ou bien en discuter sur la ml mrxvt, si tu parles anglais...
      Merci.
  • # Nouvelles...

    Posté par (page perso) . Évalué à  2 .

    Je viens donner des nouvelles.
    J'ai corrigé quelques trucs par ci par là. Et aussi au niveau des fonctionnalités, désormais dans l'option '-xftfn', vous pouvez utiliser le système de nommage complet Xft. Cela permet par exemple de préciser des tailles de polices différentes pour les diverses polices utilisées, ceci afin de pallier à certains problèmes que des utilisateurs rencontraient avec des polices censées de même taille, et pourtant d'affichage assez différent.

    Donc on peut lancer avec
    -xftfn 'DejaVu Sans Mono-10,MingLiU-12'
    par exemple. Mais on peut même utiliser d'autres options, comme demander de l'italique, etc. Par exemple "times-12:bold:slant=italic,oblique" est compris par mrxvt.

    Notons que pour que cette nouvelle syntaxe soit acceptée, désormais ce n'est plus ',' mais ';' qui sert à séparer les diverses polices (car ',' peut être utilisé dans la syntaxe Xft).

    Les diverses options globales existent toujours (pour préciser la taille -xftsz, le style -xftst, etc.), mais elles n'ont pas la priorité si elle sont définies dans -xftfn pour une police précise.

    Voilà.

Suivre le flux des commentaires

Note : les commentaires appartiennent à ceux qui les ont postés. Nous n'en sommes pas responsables.