Kodet e ikjes ANSI: Një vështrim në 50 vjetë të standardit
Kodet e ikjes ANSI duket se janë “çmendur”, por në të vërtetë ato përfaqësojnë një koncept të thjeshtë dhe të qëndrueshëm që ka kaluar gati pesëdhjetë vjet. Çdo herë që terminali juaj shfaq tekst të trashë në të kuqe, ose se një shirit progresi kalon nëpër ekran, po përdorni një standard të krijuar në fund të viteve ’70, i cili ende drejton ndërveprimin tonë me ndërfaqet e linjës së komandave.
Para se kompjuterët modernë të ekzistonin, terminalet ishin pajisje fizike – monitorë CRT të lidhur me mainframe‑ra përmes kabllove seriale. Këto “terminalë të thjeshtë” mund të shfaqnin vetëm tekst, dhe formati i vetëm i disponueshëm ishte tekst i thjeshtë, i përpunuar karakter pas karakteri. Për të kapërcyer kufizimet e tyre, u hartua standardi ANSI që lejonte rrjedhën e tekstit të përmbajë sekuenca speciale për kontrollin e kursorit, formatimin e tekstit dhe ngjyrat. Një sekuencë e tillë fillon me karakterin ESC (ASCII 27, \x1b) ndjekur nga një kllapë e majtë “[”, e njohur si Control Sequence Introducer (CSI), pas së cilës vjen komanda, për shembull \x1b[1;31m për tekst të trashë në të kuqe.
Sistemet e sotme të emulimit të terminaleve lexojnë rrjedhën karakter për karakter dhe, kur hasin në një sekuencë ikjeje, e interpretojnë si urdhër në vend që ta shfaqin. Specifikimi fillestar përfshinte vetëm 8 ngjyra bazë (e zezë, e kuqe, e gjelbër, e verdhë, blu, magjenta, cian, e bardhë), por terminalet moderne kanë zgjeruar këtë gamë në mënyrë të konsiderueshme. Modaliteti 256-ngjyrash përdor kode si \x1b[38;5;208m për ngjyra të zgjeruara, ndërsa mbështetja e vërtetë 24‑bit shfaqet si \x1b[38;2;255;128;0m për vlera RGB. Nëse keni personalizuar promptin e shell‑it tuaj me ngjyra të ndryshme, ose keni parë shfaqje të ngjyrës në daljen e komandave, po shfrytëzoni këto kode ANSI.
Mjetet më të sofistikuara, si redaktori Vim apo monitori i proceseve htop, shfrytëzojnë sekuenca të tilla për pozicionimin e kursorit dhe manipulimin e ekranit, duke krijuar ndërfaqe interaktive plotësisht në tekst. Për shembull, \x1b[10;20H i thotë terminalit të vendosë kursorin në rreshtin 10, kolonën 20. Këto mundësi lejojnë ndërtimin e ndërfaqeve komplekse pa përdorur asnjë grafikë, vetëm përmes rrjedhës së tekstit. Në fund, kam krijuar një mini‑aplikim interaktiv ku lexuesit mund të eksperimentojnë me sekuenca të ndryshme dhe të shohin në kohë reale se si ato shfaqen. Ky projekt shërbeu si provë për aftësitë e mia në dizajn dhe për të demonstruar se sa argëtuese mund të jetë puna me Tailwind dhe AI në ndërtimin e veglave edukative.
