💾 Archived View for gem.ortie.org › gemlog › sixel.gmi captured on 2023-12-28 at 15:45:51. Gemini links have been rewritten to link to archived content
⬅️ Previous capture (2023-04-19)
-=-=-=-=-=-=-
La technologie sixel (six + pixel) permet d'afficher des images bitmap sur notamment les terminaux et imprimantes DEC (Digital Equipment Corporation) VT340, datant de 1987, mais elle est probablement bien antérieure à cela (début des années 80, voire fin des années 70).
https://fr.wikipedia.org/wiki/Sixel
Il est possible de profiter de cette technologie sur nos terminaux modernes, via l'Ă©mulation VT.
Le site "Are We Sixel Yet?" permet d'ailleurs de lister la prise en charge de cette technologie sur la plupart des Terminaux actuel.
https://www.arewesixelyet.com/
Pour xterm, il faut (parfois) le recompiler mais dans une version récente de xterm sur Debian Bookworm, je n'ai pas eu besoin de le faire :
./configure --enable-sixel-graphics --enable-regis-graphics
Et il faudra le démarrer avec ces options (cela cassera la gestion de l'unicode) :
xterm -ti vt340 +u8
mlterm -y vt340
img2sixel image.jpg
Pour afficher des images dans le terminal avec la nouvelle commande lsix :
function lsix() { montage -tile 7x1 -label %f -background black -fill white "$@" gif:- | convert - -colors 16 sixel:-; }
https://github.com/hackerb9/lsix
La séquence d'échappement [esc] s'écrit avec \e
echo -e '\e Pq"1;1;16;16#0;2;97;97;97#1;2;0;0;0#2;2;91;91;91#3;2;94;94;94#4;2;75;75;75#5;2;66;66;66#6;2;19;19;19#7;2;82;82;82#8;2;9;9;9#9;2;78;78;78#0!4^FF@@FNBB@B~~$#7_#1___?weCGOGCA{$#2!4?W??A#3??C$#8!4?_#5?W???O$#4!7?g___w{$#6!7?OO-#1Rkc_O_!7?@eW$#0c#4RBFN^!7~}W$#2G#9?OO#7_#0!9?@f$#5??G#8G-#0!6NKKKGGGKMNN$#1!6?@@BACCA@$#2!6?A#6A#4?CBB@$#7!9?@~ \e\'
echo -e '\e Pq"1;1;110;104#0;2;6;9;13#1;2;19;25;16#2;2;44;56;28#3;2;28;38;19#4;2;41;53;28#5;2;50;66;31#6;2;31;41;22#7;2;53;72;35#8;2;35;44;22#9;2;35;47;25#10;2;9;13;13#11;2;25;35;19#12;2;47;63;31#13;2;22;28;16#14;2;16;22;16#15;2;53;69;35#16;2;9;16;13#17;2;22;31;19#18;2;44;60;28#19;2;25;31;19#20;2;13;16;13#21;2;38;50;25#22;2;16;19;16#23;2;28;38;22#0!110~-!44~N??wpBFN^!29~^^NNN^!22~$#1!44?_@???_#3!32?_?O#6_O#13_$#10!44?O#6CSCA???_#12!30?_#4_?_$#9!45?O!4?GO#2!33?O$#8!45?GG??C$#4!45?_A?G$#3!45?A?@#7CGo_$#2!46?@#5A?O$#11!46?_-#0!43~F?_}~~~{wo?@BFN^!11~^^NNfbbpxw{{}}{}{?@F!20~$#16!43?G#12_!6?A!5?_#6!12?_!5?C#1A!5?@?@?_?o$#20!43?o#3C!6?C?@#19AC#17G#1O_#5!12?_#4_!4?C?A!7?@s$#2!44?OA#14@???A#7@AKwo_#9!15?O?W#17O!4?@???@?@#6GA$#9!44?G#4D!6?G#5QCGO#12!16?O#2?G??C#18?A@@#20?A?A??G$#11!44?A#1O#8!4?@#15?D#22_#20!19?_#22?C#16O??@#11?A!5?O$#13!44?@#6G#21!30?G#3GAC#21!7?AG$#9!87?C-#0!31~!5^!5NFF?G!5N!4^]wo???@Ffbrpxw{{}}!15~}??!20~$#1!31?_!9?G??C!4?O#4???_???O!4?GG?C#19?C#12?@#20!17?@#2A#3O$#6!32?_!4?O!4?G!5?O#3!5?_!5?_!7?@#4!19?L#6_$#2!33?_#5___???OOOGO!5?__!4?C??_?O#6O???A#8!21?_#17@$#14!36?O#15_#7!5_o!6_!5?@BN][W#1??S?A???A#21!18?O#19M$#4!38?O#12O???C?OO!5?_!5?_#2AC!5?CA??@$#17!43?@#9A#2??O#8!6?@#18A??@??G!6?A$#21!43?A#18@#16!10?C?_#14?@#20A_!5?@???@$#23!56?G#9!7?K#17G-#0!27~^B?o}!4{!5w!5o!5_#4O!9?O!8?C#15??G#13C#16?O#1!11?C#2W#16B$#20!27?_C!7?C#2??CC!5?G#1O#19O#11O#16?_!4?_?___???@#6QO!6?C!14?@#4C#20{$#6!28?GP??A!4?C!5?G!6?O#20?!4_?_???@@@#3??AOO#1A!5?OG#11!11?A#9@$#2!28?O#21G!8?C!6?G#22O#12!5?O???OO#18P#2OO???A#19??A!6?O#22!13?G#18_$!28?_#12E!4?A!6?C#3G#8?G!14?@!4?O#17???A#12C!4?G#21!14?A$#19!29?_#15@!6?A#14???G#13!18?@#0!4_!5`!5bff!11~o??!19~$#16!30?K#7!7@!5B!5F!9N!6M!5K!5G$#17!30?A#4??A#5?AA!5?C!4?G!5?OOO?@!5?A!4?C#11!5O$#21!62?O#9O!7?CC??G-#0!5~NBr!5b!7B!5@!7?!5@!4B!4F!4N!40~??!19~$#11!5?O!5?O#8C#16_#3??CC!5?A!5?@!9?C#12G!4?_O#21_#16O#2!40?w#20~$#21!5?_???C#7!6GOO!4W[[[{!4}!5{!4wo!4O#18??_#22?_#18!40?F$#6!6?c!5?OCCC??C!8?@#2???A!9?G$#12!6?G!7?O!6?C???A#16!5?@!4?A#9C#6C!4?G???O$#4!6?OKC!4?O#23!5?_#21_???A#8!7?A#11A#19A#1A!8?G$#20!8?O!5?!4_??A!4?@@???@!9?C$#18!8?G#5G!5?OGG!4?__!4?@?A!4?C???G??__oO$#1!9?O!8?_??A#19A#15?_#4!11?C!5?G$#9!10?CC!7?C#2C#18_#15!18?__$#19!10?O-#0!4~B?o!19~!11}!52~w_F^!17~$#1!4?C?@#14!19?@#3@#9@#2@#4@@#8@#6@#11@#1@#22@#2!52?BC?_$!4?_C#16G#6!82?C?g$!4?GO#20E#14!83?P#5O$#4!4?O#11_#17!84?A$#12!5?B#18!84?G$#21!5?G-#0~~~p__FNN^!81~}woBF^!13~$#1???AOA#7O__#16!82?@#20C???_$#19???C?@#6G#13?O#3!83?AG#6CO$#14???G#4E!4?_#18!82?@#2AW#1G$#2!4?H#12G?O#4!85?C#14_#12_$#18!5?O#21_#11!86?@$#22!5?C-#0!7~}{woo_@BBFNN^!75~}w`FN!10~$#3!7?@???@#6O#17A#13?C#9G#11?O#9!76?@#4@?G#2_$#7!8?@@AEK[Woo_#15_#5!77?A#12C#6_#13O$#19!8?A#5A@???_G?O#17!78?C#19A#18O$#1!9?C???_#21!83?G$#18!10?C?A!6?_#22!77?O$#20!10?G#21G??C$#16!12?@-#0!14~}}{wo_??@@BBFNN^!68~}{o`F^!6~$#20!14?@#18@#2A???O!8?_#1!68?@#4@AO#5_#22_$#7!16?@@BFM]{{woo__#6!70?A@C#9O$#15!17?A??@#4_??C#19C#21G#11?O#2!71?C#18G#16G$#9!17?C#5C!6?G#19!74?G#20A$#3!18?G!4?A$#12!19?G??A!4?O$#1!19?O#16_#8@-#0!6~@@??__ooo!13_!5?@BBFn!64~}w@Fn~~~$#12!6?GOgG!9?G??@#21!4?O!6?C#12G#3G#6!65?@?a#2O$#18!6?O???G!7?G#11@!4?O#2???O#20___???C?O#1!65?C??O$#16!6?A?@??O???OO#17?@#5?GG!7?OO??C#17__#14_#18!66?B#21GG$#3!6?_#7cCC!12EM!7NM][WWOO#12!67?C#8_$!6?C#6I#22O_O!5@??O#3?@!4?O#16??_#15?@#22?__#19!70?O$#2!8?A!8?G#6???@!4?O#10!5?@#1A$#20!9?@@!6?O#13???O#19OO!7?@#18A$#5!9?A#4?G??GGG$#14!9?O#21??GG#1??@@?OO-#0!7~{wo`BFNN!14^!69~NFbpx{}!5~$#12!7?@!4?G!6?___#4???_#9_#8_#3_#21!69?_oG?C?@$#14!7?A!4?_#9_#20O#16!83?OGC#10A#6A@$#5!8?ACG??O#9!86?OK#4?A$#7!8?@ACGO$#3!8?C#18@!6?___???_$#6!9?G#2AO??__!7?__$#17!10?O#4C$#16!11?_-#0!22~!8}!4{wwwxxx`!6@!8B!4FNNN^!28~^NFbpx{}!11~$#20!22?@#1@!6?A#18?A#20@@#4A??C!8?C!8?G#8G#1G#13??O#9_#10!28?_#14O#6_OG#9C$#19!24?@#3@#6@!4?@!4?C?A#3AA#7K{!8w!7o!4_#18!30?_#1GC#4CAB@$#9!27?@???A!5?C#5??CO?CC!8?G!4?O#2!34?OG#20A$#2!28?@!5?A!4?CG_!4?C!8?G!4?O$#5!29?@#12@??A#14C#16@@#8A#17??O??A#1A#12C!8?G!4?O$#22!32?@#11??C#21A#19!4?AA#14??A#20A#9?C#6CCC#3C#19C#22C$#15!51?GG-#0!41~}{o_#17_#5!16?@?GO#2_#1!18?_???A#6CA#8@$#1!41?@#5@CGO_#1!16?@#0@F^!18~^NFbpw{}!17~$#4!42?A#7BFN^!15~}{o_#12!20?_???A@$#19!43?G#3O#12!18?A#16A#19G#17!20?O#19gC#16?@$#21!64?C#18!22?O#2GC$#3!88?OG-#0!47~}}{{{wwooo___!8?@BN^!7~^NFbpw{}!23~$#9!47?@!8?G#22O???_#23_#12_!4?C#15O_#6_!8?OGC#11A#5?@#13@$#5!48?@??AA??C#17??O#6O#3!7?@??O!8?_#12_???A$#15!49?@!8?G#5!8?A#1A#21G#2!11?OG#18C$#19!49?A#7@@@BBBFFFNN^^^~~~{w_#20!11?_#1OGDA$#2!50?A!6?G??O$#3!52?C??G$#4!53?C#16G!5?_!8?C$#18!54?C-#0!65~}}}{{wwwoprrp{}!30~$#6!65?@??A??C??G?GA@$#12!66?@??A!9?@$#5!67?@??A??CC#9GC#16G$#15!68?@??A?A#3A#4C#21?C$#7!69?@@@A#20@$#14!70?C??G$#2!72?C!5?A$#18!72?@-#0!110~-!110B \e\'
Il existe également la technologie ReGIS, pour afficher des images vectorielles, c'est une sorte d'ancêtre du postscript, juste antérieur de quelques années, 1981 contre 1982-1984 :
https://en.wikipedia.org/wiki/ReGIS
Idem que pour sixel, il faudra configurer xterm pour gérer le format ReGIS :
./configure --enable-regis-graphics
Note : il semble que les macro (macrographs) ne s'affichent pas dans xterm
Le projet ReGIS pour arduino est une interface qui délègue la génération des vecteurs à l'arduino. C'est également un convertisseur d'une syntaxe plus lisible vers la syntaxe ReGIS
https://github.com/feilipu/ReGIS
https://feilipu.me/2022/09/28/regis-serial-graphics-for-arduino-rc2014/
Cela s'interface, comme expliqué dans le projet github, avec un adaptateur série comme picocom :
xterm +u8 -geometry 102x35 -ti 340 -tn 340 -e picocom -b 115200 -p 2 -f h /dev/ttyUSB0
Comme idées possibles d'utilisation, on pourrait voir un capteur arduino qui s'affiche directement dans xterm sur un raspberry connecté, évitant de passer par une interface web.
Mais on peut également afficher des images au format ReGIS directement depuis xterm, en le démarrant avec
xterm +u8 -geometry 102x35 -ti 340 -tn 340
echo -e '\e P0p S(E)(C1) P[100,440] V(B),[+100,+0],[+0,-10],[-100,+0],(E) P[500,300],F(C[+100]) \e\'
echo -e '\e <code> \e\'
echo -e '\e P1pS(E)W(I(M)) P[193,227]V[][260,160]V[][223,096]V[][211,021]V[][150,050]V[][112,009]V[][103,049]V[][080,053]V[][073,059]V[][067,073]V[][018,077]V[][008,107]V[][055,148]V[][018,152]V[][013,159]V[][025,176]V[][147,185]V[][193,227] P[103,049]V[][181,065]V[][129,066]V[][073,059] P[067,073]V[][108,082]V[][018,077] P[008,107]V[][090,158]V[][018,152] P[090,158]V[][055,148]P[095,180]V[][117,209]V[][193,227] \e\'
Dans un autre genre, CFR est amusant. Dessiner avec 5 instructions seulement :
https://susam.net/cfr.html#5
C[RRR][[[FFFFFF]]][RRRRR][CCC][[FF]]R[[FF]]R[[[FF]]]R[[F]]FRR[[FF]]FF[[R][R][R]FF[[FF]]RRF[[F]]R[[FFFF]]R[[FF]]R[FF]FFRRCCC[RR][[C]C]CFF[RRR][[FFF]]FFF[RRR][[[FFFFFFF]]][RRR]CCCC[[[FF]F]]FFFF[RFFFFFF][[[F]]]R[FF]FR[[[FFF]]]RFFFFRRFFFFRR[[R]RRFFFFRRFFFFRR]
https://susam.net/cfr.html#C3B12F2RFEFE3F6R2E2B3F3E3R2B2FE2BR3CEC2E6
https://susam.net/cfr.html#B3F4RF4BF3BR2CBF2C2R2F2E2R4F5E4
Dans le mĂŞme style il y a le bytebeat :
https://dollchan.net/bytebeat/#v3b64q1ZKzk9JVbJSKtHSKFEzNDO2MLE3tzLV1NIw1dUwViuxs7PQ1LSzAzJ1gWygEhMDSzN7IytDM03NGogIRBNUxtjKxMpYU6kWAA
Des mélodies assez complexes à partir de formules simples…