Chidule cha ma terminal emulators

Mawu ochepa ochokera kuofesi yathu yomasulira: nthawi zambiri aliyense amayesetsa kumasulira zatsopano ndi zofalitsa, ndipo ifenso timachita chimodzimodzi. Koma ma terminals sizinthu zomwe zimasinthidwa kamodzi pa sabata. Chifukwa chake, takumasulirani nkhani ya Antoine Beaupré, yomwe idasindikizidwa kumapeto kwa chaka cha 2018: ngakhale "zaka" zake zazikulu ndi miyezo yamakono, m'malingaliro athu, zinthuzo sizinataye kufunika kwake konse. Kuonjezera apo, izi poyamba zinali mndandanda wa zolemba ziwiri, koma tinaganiza zoziphatikiza kukhala positi imodzi yayikulu.

Chidule cha ma terminal emulators

Ma terminal ali ndi malo apadera m'mbiri yamakompyuta, koma m'zaka zaposachedwa adakakamizika kupulumuka motsatira mzere wolamula pomwe mawonekedwe azithunzi amakhala ponseponse. Terminal emulators m'malo awo hardware abale, omwe, nawonso, anali kusinthidwa kwa machitidwe otengera makhadi okhomeredwa ndi ma switch switch. Zogawa zamakono zimabwera ndi ma emulators osiyanasiyana amitundu yonse ndi mitundu. Ndipo ngakhale ambiri amakhutira ndi ma terminal omwe amaperekedwa ndi malo omwe amagwirira ntchito, ena monyadira amagwiritsa ntchito pulogalamu yachilendo kuti ayendetse chipolopolo chawo chomwe amakonda kapena cholembera. Koma, monga momwe tidzaonera m'nkhaniyi, si ma terminals onse omwe adapangidwa m'chifaniziro chomwecho: amasiyana kwambiri ndi machitidwe, kukula ndi ntchito.

Ma terminals ena ali ndi mabowo otetezedwa modabwitsa, kuphatikiza ambiri amakhala ndi magwiridwe antchito osiyanasiyana, kuyambira pakuthandizira mawonekedwe a tabbed mpaka scripting. Ngakhale ife adayang'ana ma emulators omaliza kalekale. Gawo loyamba la nkhaniyi likufanizira zinthu, ndipo theka lachiwiri limayesa ntchito.

Nawa ma terminal omwe ndidawunikiranso:

Chidule cha ma terminal emulators

Izi mwina sizingakhale zaposachedwa, popeza ndinali ndi malire pazomanga zokhazikika panthawi yolemba, zomwe ndidatha kuzitulutsa pa Debian 9 kapena Fedora 27. Chokhacho ndi Alacritty. Ndi mbadwa ya ma terminals othamanga a GPU ndipo amalembedwa m'chinenero chachilendo komanso chatsopano pa ntchitoyi - Dzimbiri. Sindinaphatikizepo ma terminals pamawunidwe anga (kuphatikiza omwe ali pa Electron), chifukwa mayeso oyambira adawonetsa kusachita bwino kwambiri.

Thandizo la Unicode

Ndinayamba mayeso anga ndi thandizo la Unicode. Chiyeso choyamba cha ma terminals chinali kuwonetsa chingwe cha Unicode kuchokera Wikipedia zolemba: “é, Δ, И, ק, م, ๗, あ, 叶, 葉 ndi 말.” Mayeso osavuta awa akuwonetsa ngati terminal ikhoza kugwira ntchito moyenera padziko lonse lapansi. xterm terminal sawonetsa zilembo zachiarabu kukumbukira mukusintha kosasintha:

Chidule cha ma terminal emulators

Mwachikhazikitso, xterm imagwiritsa ntchito mawonekedwe apamwamba "okhazikika", omwe, malinga ndi Vicki yemweyo, ili ndi "kufalikira kwakukulu kwa Unicode kuyambira 1997". Pali china chake chomwe chikuchitika mu font iyi chomwe chimapangitsa kuti munthu aziwoneka ngati chimango chopanda kanthu ndipo ndipamene mafonti amawonjezedwa mpaka 20+ mfundo pomwe munthu amayamba kuwonetsa bwino. Komabe, "kukonza" uku kumaphwanya mawonekedwe a zilembo zina za Unicode:

Chidule cha ma terminal emulators

Zithunzizi zidatengedwa ku Fedora 27, chifukwa zidapereka zotsatira zabwinoko kuposa Debian 9, pomwe ma terminals ena akale (makamaka mlterm) sanathe kugwira bwino mafonti. Mwamwayi izi zidakonzedwa m'matembenuzidwe am'tsogolo.

Tsopano zindikirani momwe mzerewo ukuwonekera mu xterm. Zikuoneka kuti chizindikiro Mem ndi Semitic zotsatirazi qoph onani zolemba za RTL (kuchokera kumanzere), kotero mwaukadaulo ayenera kuwonetsedwa kuchokera kumanja kupita kumanzere. Osakatula pa intaneti monga Firefox 57 amayendetsa mzere womwe uli pamwambapa molondola. Mtundu wosavuta wa mawu a RTL ndi mawu akuti "Сара"mu Chihebri (Sarah). Tsamba la Wiki pamalemba apawiri akuti:

“Mapulogalamu ambiri apakompyuta satha kusonyeza mawu olunjika bwino. Mwachitsanzo, dzina lachihebri lakuti “Sarah” liri ndi zilembo za sin (ש) (zimene zimawonekera kumanja), ndiye resh (ר) ndipo pomalizira pake iye (ה) (zimene ziyenera kuonekera kumanzere).”

Malo ambiri amalephera mayeso awa: Alacritty, VTE-derived Gnome ndi XFCE terminals, urxvt, st ndi xterm display "Sara" motsatira dongosolo, ngati kuti talemba dzina kuti "Aras".

Chidule cha ma terminal emulators

Vuto linanso ndi malemba opangira bidirectional ndiloti ayenera kugwirizanitsa mwanjira ina, makamaka pokhudzana ndi kusakaniza malemba a RTL ndi LTR. Zolemba za RTL ziyenera kuyenda kuchokera kumanja kwa zenera la terminal, koma zikuyenera kuchitika chiyani pama terminal omwe sasintha kukhala LTR English? Ambiri aiwo alibe makina apadera ndikugwirizanitsa zolemba zonse kumanzere (kuphatikiza mu Konsole). Kupatulapo ndi pterm ndi mlterm, zomwe zimatsatira miyezo ndikugwirizanitsa bwino mizere yotere.

Chidule cha ma terminal emulators

Chitetezo chambiri

Chotsatira chovuta kwambiri chomwe ndazindikira ndi chitetezo choletsa kulowetsa. Ngakhale ambiri amadziwika kuti amalankhula motere:

$ curl http://example.com/ | sh

Ndi ma code execution push commands, anthu ochepa amadziwa kuti malamulo obisika amatha kulowa mu console akamakopera ndi kumata kuchokera pa msakatuli, ngakhale atayang'anitsitsa mosamala. Tsamba lotsimikizira Gianna Horna zikuwonetsa bwino momwe lamuloli liri lowoneka bwino:

git clone git: //git.kernel.org/pub/scm/utils/kup/kup.git

zimasintha kukhala zovuta zotere zikachotsedwa patsamba la Horn kupita ku terminal:

git clone /dev/null;
    clear;
	echo -n "Hello ";
	whoami|tr -d 'n';
	echo -e '!nThat was a bad idea. Don'"'"'t copy code from websites you don'"'"'t trust! 
	Here'"'"'s the first line of your /etc/passwd: ';
	head -n1 /etc/passwd
	git clone git://git.kernel.org/pub/scm/utils/kup/kup.git

Zimagwira ntchito bwanji? Khodi yoyipa ikuphatikizidwa mu block , zomwe zimachotsedwa kwa ogwiritsa ntchito pogwiritsa ntchito CSS.

Mode ya phala la bulaketi mwachionekere analinganizidwira kuletsa kuukira koteroko. Munjira iyi, materminal amatsekera mawu omwe adayikidwa munjira zingapo zapadera zothawira kuti auze chigoba za komwe mawuwo adachokera. Izi zimauza chigobacho kuti chikhoza kunyalanyaza zilembo zapadera zomwe mawu omwe adasindikizidwa angakhale nawo. Ma terminal onse obwerera ku xterm olemekezeka amathandizira izi, koma kuyika mu Bracketed mode kumafuna thandizo kuchokera ku chipolopolo kapena kugwiritsa ntchito pa terminal. Mwachitsanzo, kugwiritsa ntchito mapulogalamu GNU Readline (Bash yemweyo), amafunikira fayilo ~/.inputrc:

set enable-bracketed-paste on

Tsoka ilo, tsamba loyesa la Horn likuwonetsanso momwe mungalambalale chitetezo ichi kudzera muzolemba zokha ndikumaliza kugwiritsa ntchito ma Bracketed mode. Izi zimagwira ntchito chifukwa ma terminals ena samasefa njira zothawira bwino asanawonjezere awo. Mwachitsanzo, mwanga sindinathe kumaliza mayeso a Konsole ngakhale ndikukonza koyenera .inputrc wapamwamba. Izi zikutanthauza kuti mutha kusokoneza dongosolo lanu mosavuta chifukwa cha pulogalamu yosagwiritsidwa ntchito kapena chipolopolo chosasinthika molakwika. Izi ndizowopsa makamaka mukalowa ma seva akutali, pomwe kusanja bwino sikumakhala kofala, makamaka ngati muli ndi makina ambiri akutali.

Yankho labwino pavutoli ndi pulogalamu yowonjezera yotsimikizira phala ya terminal alireza, zomwe zimangopempha chilolezo kuti muyike mawu aliwonse omwe ali ndi mizere yatsopano. Sindinapeze njira yotetezeka kwambiri pazowukira zomwe zafotokozedwa ndi Horn.

Ma tabu ndi mbiri

Chodziwika pakali pano ndikuthandizira mawonekedwe ojambulidwa, omwe tidzawafotokozera ngati zenera limodzi lokhala ndi ma terminals ena angapo. Ntchitoyi imasiyana ndi ma terminals osiyanasiyana, ndipo ngakhale ma terminals achikhalidwe a xterm samathandizira ma tabo konse, zotengera zamakono monga Xfce Terminal, GNOME Terminal ndi Konsole zili ndi ntchitoyi. Urxvt imathandiziranso ma tabo, koma pokhapokha mutagwiritsa ntchito pulogalamu yowonjezera. Koma pankhani yodzithandizira yokha, Terminator ndiye mtsogoleri wosatsutsika: sikuti amangothandizira ma tabo, komanso amatha kukonza ma terminals mwanjira iliyonse (onani chithunzi pansipa).

Chidule cha ma terminal emulators

Mbali ina ya Terminator ndikutha "kuphatikiza" ma tabowa palimodzi ndikutumiza makiyi omwewo kumaterminal angapo nthawi imodzi, ndikupereka chida choyipa chochitira ntchito zambiri pamaseva angapo nthawi imodzi. Chinthu chofananacho chimagwiritsidwanso ntchito ku Konsole. Kuti mugwiritse ntchito izi pama terminals ena, muyenera kugwiritsa ntchito mapulogalamu ena monga Cluster SSH, xlax kapena tmux.

Ma tabu amagwira ntchito bwino kwambiri akaphatikizidwa ndi mbiri: mwachitsanzo, mutha kukhala ndi tsamba limodzi la imelo, lina la macheza, ndi zina zotero. Izi zimathandizidwa bwino ndi Konsole Terminal ndi GNOME Terminal. Onsewa amalola kuti tabu iliyonse iziyambitsa yokha mbiri yake. Terminator imathandiziranso mbiri, koma sindinapeze njira yoyambira mapulogalamu ena mukatsegula tabu inayake. Ma terminals ena alibe lingaliro la "mbiri" konse.

Ruffles

Chomaliza chomwe ndifotokoze mu gawo loyamba la nkhaniyi ndikuwoneka kwa ma terminal. Mwachitsanzo GNOME, Xfce ndi urxvt amathandizira kuwonekera, koma posachedwapa asiya chithandizo chazithunzi zakumbuyo, kukakamiza ogwiritsa ntchito ena kusintha kupita ku terminal. Tilix. Inemwini, ndine wokondwa nazo ndipo ndizosavuta Zowonjezera, yomwe imayika maziko amitundu yakumbuyo ya urxvt. Komabe, mitu yosagwirizana ndi mitundu ingabweretsenso mavuto. Mwachitsanzo, Zosangalatsa sagwira ntchito ndi mapulogalamu htop и IPTraf, popeza amagwiritsa kale mitundu yawoyawo.

Choyambirira cha VT100 silinagwirizane ndi mitundu, ndipo zatsopano kaŵirikaŵiri zinali ndi utoto wamitundu 256. Kwa ogwiritsa ntchito apamwamba omwe amajambula ma terminals awo, zipolopolo zolimbikitsa kapena mipiringidzo m'njira zovuta zitha kukhala zolepheretsa. Gist nyimbo zomwe ma terminal ali ndi chithandizo cha "True Color". Mayesero anga amatsimikizira kuti st, Alacritty ndi VTE-based terminals amathandizira True Colour bwino. Ma terminals ena sizikuyenda bwino pankhaniyi ndipo, kwenikweni, samawonetsa ngakhale mitundu 256. Pansipa mutha kuwona kusiyana pakati pa chithandizo cha Mtundu Weniweni mu ma terminals a GNOME, st ndi xterm, omwe amachita bwino izi ndi utoto wawo wa 256, ndi urxvt, zomwe sizimangolephera mayeso, komanso zimawonetsa zilembo zina zothwanima m'malo mwa iwo.

Chidule cha ma terminal emulators

Ma terminals ena amasanthulanso mawu amtundu wa ma URL kuti maulalo azidina. Izi zimagwiranso ntchito pama terminal onse opangidwa ndi VTE, pomwe urxvt imafuna pulogalamu yowonjezera yomwe ingasinthe ma URL pakadina kapena kugwiritsa ntchito njira yachidule ya kiyibodi. Malo ena omwe ndayesa ma URL owonetsera m'njira zina.

Pomaliza, njira yatsopano pamaterminal ndikusankha kwa buffer ya scroll. Mwachitsanzo, st ilibe buffer mpukutu; zimaganiziridwa kuti wogwiritsa ntchitoyo adzagwiritsa ntchito terminal multiplexer ngati tmux ndi Screen ya GNU.

Alacritty ilibenso ma buffers akumbuyo, koma zidzawonjezedwa posachedwa thandizo lake chifukwa cha "ndemanga zambiri" pamutuwu kuchokera kwa ogwiritsa ntchito. Kupatula izi zapamwamba, terminal iliyonse yomwe ndidayesa yomwe ndidapeza imathandizira kupukusa mobwerera.

Ma subtotals

Mu gawo lachiwiri la zinthuzo (poyambirira izi zinali zolemba ziwiri zosiyana - pafupifupi. msewu) tidzafanizira magwiridwe antchito, kugwiritsa ntchito kukumbukira ndi latency. Koma titha kuwona kale kuti ma terminals ena omwe akufunsidwa ali ndi zolakwika zazikulu. Mwachitsanzo, ogwiritsa ntchito omwe amagwira ntchito nthawi zonse ndi zolemba za RTL angafune kuganizira za mlterm ndi pterm, chifukwa amatha kugwira ntchito zofanana kuposa ena. Konsole naye anachita bwino. Ogwiritsa ntchito omwe sagwira ntchito ndi zolemba za RTL akhoza kusankha china.

Pankhani yachitetezo pakuyika ma code oyipa, urxvt imadziwika chifukwa chokhazikitsa mwapadera chitetezo ku mtundu woterewu, womwe umawoneka ngati wabwino kwa ine. Kwa iwo omwe akufunafuna mabelu ndi mluzu, Konsole ndiyofunika kuyang'ana. Pomaliza, ndikofunikira kudziwa kuti VTE ndi maziko abwino kwambiri a ma terminals, omwe amatsimikizira chithandizo chamtundu, kuzindikira kwa URL, ndi zina zotero. Kungoyang'ana koyamba, cholumikizira chosasinthika chomwe chimabwera ndi malo omwe mumawakonda chikhoza kukwaniritsa zofunikira zonse, koma tiyeni tisiye funsoli lotseguka mpaka timvetsetse momwe ntchitoyi ikuyendera.

Tiyeni tipitilize kukambirana


Nthawi zambiri, magwiridwe antchito pawokha amatha kuwoneka ngati vuto lalikulu, koma zikuwoneka kuti, ena mwa iwo amawonetsa kuchedwa kwambiri kwa mapulogalamu amtundu wotere. Komanso chotsatira tiwona zomwe mwachizoloŵezi zimatchedwa "liwiro" (kwenikweni, uku ndiko kuthamanga kwa scrolling) ndi kukumbukira kukumbukira kwa terminal (ndi chenjezo kuti izi sizowopsa lero monga momwe zinalili zaka zambiri zapitazo).

Kuchedwa

Nditaphunzira mozama za magwiridwe antchito, ndidazindikira kuti gawo lofunika kwambiri pankhaniyi ndi latency (ping). M'nkhani yake “Timasindikiza mosangalala” Pavel Fatin anayang'ana kuchedwa kwa olemba malemba osiyanasiyana ndikuwonetsa kuti ma terminals pankhaniyi atha kukhala pang'onopang'ono kusiyana ndi omwe amalemba mwachangu kwambiri. Ndilo lingaliro lomwe linandipangitsa kuti ndiyambe kuyesa ndekha ndikulemba nkhaniyi.

Koma kodi latency ndi chiyani, ndipo n’chifukwa chiyani ili yofunika kwambiri? M'nkhani yake, Fatin analongosola kuti ndi "kuchedwa pakati pa kukanikiza kiyi ndi kusintha kwa skrini" ndipo anagwira mawu. "Guide to Human-Computer Interaction", yomwe imati: “Kuchedwa kwa ndemanga pakompyuta kumakhudza kwambiri khalidwe la anthu amene amataipayo komanso kukhutira.”

Fatin akufotokoza kuti ping imeneyi ili ndi zotulukapo zakuya kuposa kungokhutiritsa: “kulemba kumachedwa, zolakwika zambiri zimachitika, ndipo kupsinjika kwa maso ndi minofu kumawonjezereka.” Mwa kuyankhula kwina, kuchedwa kwakukulu kungayambitse typos komanso kutsika kwa code code, chifukwa kumabweretsa kuwonjezereka kwachidziwitso pa ubongo. Koma choyipa kwambiri ndichakuti ping "imawonjezera kupsinjika kwa maso ndi minofu," zomwe zikuwoneka kuti zikutanthawuza kukula kwa kuvulala kwa ntchito mtsogolomo (Zikuoneka kuti wolemba amatanthauza mavuto ndi minofu ya maso, msana, mikono ndipo, ndithudi, masomphenya - pafupifupi. msewu) chifukwa cha kupanikizika mobwerezabwereza.

Zina mwazotsatirazi zadziwika kwa nthawi yayitali, ndi zotsatira zake kafukufuku, lofalitsidwa mmbuyo mu 1976 mu magazini ya Ergonomics, inanena kuti kuchedwa kwa 100 milliseconds "kumasokoneza kwambiri liwiro lolemba." Posachedwapa, GNOME User Guide idayambitsidwa nthawi yovomerezeka yoyankha mu 10 milliseconds, ndipo ngati mupita patsogolo, ndiye Microsoft Research zikuwonetsa kuti 1 millisecond ndi yabwino.

Fatin adayesa mayeso ake pa okonza zolemba; adapanga chida chonyamula chotchedwa Typometer, yomwe ndimakonda kuyesa ping mu ma emulators omaliza. Kumbukirani kuti kuyesaku kunachitika mofananiza: zenizeni, tiyenera kuganizira zolowetsa zonse (kiyibodi, chowongolera cha USB, ndi zina zambiri) ndi zotuluka (makadi a kanema, kuwunika) latency. Malinga ndi Fatin, mumasinthidwe wamba ndi pafupifupi 20 ms. Ngati muli ndi zida zamasewera, mutha kukwaniritsa izi mu ma milliseconds atatu okha. Popeza tili ndi zida zachangu chonchi, kugwiritsa ntchito sikuyenera kuwonjezera latency yake. Cholinga cha Fatin ndikubweretsa latency ya pulogalamu ku 3 millisecond, kapena ngakhale kuyimba popanda kuchedwa koyezeka, momwe IntelliJ IDEA 15.

Nazi zotsatira za miyeso yanga, komanso zina mwazotsatira za Fatin, kusonyeza kuti kuyesa kwanga kumagwirizana ndi mayeso ake:

Chidule cha ma terminal emulators

Chinthu choyamba chomwe chinandikhudza ine chinali nthawi yabwino yoyankhira mapulogalamu akale monga xterm ndi mlterm. Ndi register latency yoyipa kwambiri (2,4 ms), adachita bwino kuposa ma terminal amakono othamanga kwambiri (10,6 ms kwa st). Palibe malo amakono omwe amagwera pansi pa 10 millisecond threshold. Makamaka, Alacritty amalephera kukwaniritsa zonena za "emulator yothamanga kwambiri yomwe ilipo", ngakhale kuchuluka kwake kwayenda bwino kuyambira pomwe adawunikiranso koyamba mu 2017. Zoonadi, olemba ntchitoyo akudziwa momwe zinthu zilili ndipo akuyesetsa kukonza mawonekedwe. Tiyeneranso kukumbukira kuti Vim yogwiritsa ntchito GTK3 ndi dongosolo la kukula pang'onopang'ono kuposa mnzake wa GTK2. Kuchokera apa tikhoza kunena kuti GTK3 imapanga latency yowonjezera, ndipo izi zikuwonekera m'malo ena onse omwe amagwiritsa ntchito (Terminator, Xfce4 Terminal ndi GNOME Terminal).

Komabe, kusiyanako sikungawonekere m'maso. Monga momwe Fatin akulongosolera, “simufunikira kudziŵa kuchedwa kuti kukhudze inu.” Fatin akuchenjezanso za kupatuka kokhazikika: “kusokonezeka kulikonse mu latency (jitter) kumabweretsa kupsinjika kowonjezereka chifukwa cha kusadziŵika kwake.”

Chidule cha ma terminal emulators

Chithunzi pamwambapa chimatengedwa pa Debian 9 yoyera (kutambasula) ndi i3 woyang'anira zenera. Chilengedwechi chimapanga zotsatira zabwino kwambiri pamayesero a latency. Zotsatira zake, GNOME imapanga ping yowonjezera ya 20 ms pamiyeso yonse. Kufotokozera kotheka kwa izi ndi kukhalapo kwa mapulogalamu omwe ali ndi ma synchronous processing a zochitika zolowetsa. Fatin amapereka chitsanzo pazochitika zotere Ntchito, zomwe zimawonjezera kuchedwa pokonza zochitika zonse zolowetsamo mogwirizana. Mwachikhazikitso, GNOME imabweranso ndi woyang'anira zenera Mutter, yomwe imapanga chowonjezera chowonjezera, chomwe chimakhudza ping ndikuwonjezera osachepera 8 milliseconds of latency.

Chidule cha ma terminal emulators

Liwiro la Mpukutu

Mayeso otsatirawa ndi mayeso achikhalidwe a "liwiro" kapena "bandwidth", omwe amayesa momwe terminal ingayendetse tsamba mwachangu pomwe ikuwonetsa zolemba zambiri pazenera. Makaniko a mayeso amasiyanasiyana; kuyesa koyambirira kunali kungopanga zingwe zomwezo pogwiritsa ntchito seq command. Mayesero ena akuphatikizapo mayeso a Thomas E. Dickey (xterm maintainer), omwe mobwerezabwereza fayilo ya terminfo.src imatsitsidwa. Mukuwunika kwina kwa magwiridwe antchito a terminal Ndi Luu imagwiritsa ntchito chingwe cha base32 chokhala ndi ma byte mwachisawawa, chomwe chimatuluka ku terminal pogwiritsa ntchito mphaka. Luu amaona kuti kuyesa koteroko ndi "chopanda phindu monga momwe munthu angaganizire" ndipo akuganiza kuti agwiritse ntchito mayankho omaliza ngati metric yoyamba m'malo mwake. Dickey amatchanso mayeso ake kukhala osokeretsa. Komabe, olemba onsewo amavomereza kuti terminal window bandwidth ikhoza kukhala vuto. Luu adapeza Emacs Eshell akuzizira kwambiri akamawonetsa mafayilo akulu, ndipo Dickey adawongolera terminal kuti achotse ulesi wa xtrerm. Chifukwa chake palinso zoyenerera pamayesowa, koma popeza njira yoperekera ndiyosiyana kwambiri ndi terminal kupita ku terminal, itha kugwiritsidwanso ntchito ngati gawo loyesa kuyesa magawo ena.

Chidule cha ma terminal emulators

Apa tikuwona rxvt ndi st kukoka patsogolo pa mpikisano, kutsatiridwa ndi Alacritty yatsopano kwambiri, yomwe idapangidwa molunjika pakuchita. Otsatira ndi Xfce (banja la VTE) ndi Konsole, omwe amathamanga pafupifupi kawiri. Chomaliza ndi xterm, chomwe chimachedwetsa kasanu kuposa rxvt. Pakuyesa, xterm idakweranso kwambiri, zomwe zimapangitsa kuti mawu odutsa akhale ovuta kuwona ngakhale atakhala mzere womwewo. Konsole inali yachangu, koma nthawi zina inali yovuta: chiwonetserochi chinkazizira nthawi ndi nthawi, kusonyeza malemba pang'ono kapena osawonetsa konse. Ma terminals ena amawonetsa zingwe momveka bwino, kuphatikiza st, Alacritty, ndi rxvt.

Dickey akufotokoza kuti kusiyana kwa magwiridwe antchito kumachitika chifukwa cha kapangidwe ka ma buffers m'malo osiyanasiyana. Makamaka, amatsutsa rxvt ndi ma terminals ena "osatsata malamulo onse":

"Mosiyana ndi xterm, rxvt sinayese kuwonetsa zosintha zonse. Ngati igwera m'mbuyo, imakana zosintha zina kuti zitheke. Izi zidakhudza kwambiri kuthamanga kowoneka bwino kuposa kuwongolera kukumbukira mkati. Choyipa chimodzi chinali chakuti makanema ojambula a ASCII anali osalongosoka. "

Kuti akonze ulesi womwe umadziwika kuti xterm, Dickey akuwonetsa kugwiritsa ntchito gwero fastScroll, kulola xterm kutaya zosintha zina za skrini kuti ziziyenda bwino. Mayeso anga amatsimikizira kuti FastScroll imathandizira magwiridwe antchito ndikubweretsa xterm par ndi rxvt. Izi, komabe, ndizovuta kwambiri, monga momwe Dickey mwiniwake akufotokozera: "nthawi zina xterm - ngati konsole - imawoneka ngati ikudikirira kudikirira zosintha zatsopano zitachotsedwa." Mwanjira iyi, zikuwoneka kuti ma terminals ena apeza kuyanjana kwabwino kwambiri pakati pa liwiro ndikuwonetsa kukhulupirika.

Kugwiritsa ntchito zinthu

Mosasamala kanthu kuti n'zomveka kulingalira kuthamanga kwa scrolling ngati metric yogwira ntchito, kuyesa kumeneku kumatilola kuyerekezera katundu pazitsulo, zomwe zimatilola kuyeza magawo ena monga kukumbukira kapena kugwiritsa ntchito disk. Ma metrics adapezedwa poyesa mayeso omwe atchulidwa seq pansi pa Python process monitoring. Anasonkhanitsa deta ya mita kuthawa () chifukwa ru_maxrss, kuchuluka ru_oublock и ru_inblock ndi chowerengera chosavuta.

Chidule cha ma terminal emulators

Pachiyeso ichi, ST imatenga malo oyamba ndi kukumbukira kochepa kwambiri kwa 8 MB, zomwe sizodabwitsa poganizira kuti lingaliro lalikulu la mapangidwewo ndi losavuta. mlterm, xterm ndi rxvt amadya pang'ono - pafupifupi 12 MB. Chotsatira china chodziwika ndi Alacritty, chomwe chimafuna 30 MB kuti chiyende. Ndiye pali materminal a banja la VTE okhala ndi ziwerengero kuyambira 40 mpaka 60 MB, zomwe ndizochuluka. Izi zitha kufotokozedwa ndikuti ma terminals amagwiritsa ntchito malaibulale apamwamba, mwachitsanzo, GTK. Konsole imabwera pomaliza ndi 65MB yokumbukira kukumbukira pamayeso, ngakhale izi zitha kulungamitsidwa ndi mawonekedwe ake osiyanasiyana.

Poyerekeza ndi zotsatira zam'mbuyomu zomwe zidapezedwa zaka khumi zapitazo, mapulogalamu onse adayamba kukumbukira kwambiri. Xterm inkafuna 4 MB, koma tsopano ikufunika 15 MB pongoyambitsa. Pali kuwonjezeka kofanana kwa kugwiritsidwa ntchito kwa rxvt, komwe tsopano kukufunika 16 MB kunja kwa bokosi. Xfce Terminal imatenga 34 MB, yomwe ndi yayikulu katatu kuposa kale, koma GNOME Terminal imafuna 20 MB yokha. Zachidziwikire, mayeso onse am'mbuyomu adachitika pamapangidwe a 32-bit. Ku LCA 2012 Rusty Russell ndinauza, kuti pali zifukwa zambiri zosadziwika bwino zomwe zingafotokoze kuwonjezeka kwa kukumbukira kukumbukira. Nditanena izi, tsopano tikukhala mu nthawi yomwe tili ndi ma gigabytes okumbukira, kotero tidzatha mwanjira ina.

Komabe, sindingachitire mwina koma kumva kuti kugawa zokumbukira zambiri ku chinthu chofunikira kwambiri ngati terminal ndikuwononga chuma. Mapulogalamuwa ayenera kukhala ang'onoang'ono kwambiri, ayenera kuthamanga pa "bokosi" lililonse, ngakhale bokosi la nsapato, ngati tifika pamene akufunikira kukhala ndi machitidwe a Linux (ndipo mukudziwa kuti zidzakhala choncho. ). Koma ndi manambalawa, kugwiritsa ntchito kukumbukira kudzakhala vuto mtsogolomu m'malo aliwonse omwe ali ndi ma terminals angapo kupatula ochepa omwe ali opepuka komanso ochepa kwambiri. Kuti mulipirire izi, GNOME Terminal, Konsole, urxvt, Terminator ndi Xfce Terminal ali ndi njira ya Daemon yomwe imakupatsani mwayi wolamulira ma terminals angapo kudzera munjira imodzi, kuchepetsa kukumbukira kwawo.

Chidule cha ma terminal emulators

M'mayesero anga, ndidapeza zotsatira zina zosayembekezereka zokhudzana ndi kuwerenga-kulemba kwa disk: Sindimayembekezera kuti sindiwona kalikonse pano, koma zidapezeka kuti ma terminals ena amalemba zochulukirapo kwambiri pa disk. Chifukwa chake, laibulale ya VTE imasunga buffer pa disk (chinthu ichi zidadziwika kale mu 2010, ndipo izi zikuchitikabe). Koma mosiyana ndi machitidwe akale, tsopano osachepera deta iyi yasungidwa pogwiritsa ntchito AES256 GCM (kuchokera ku 0.39.2). Koma funso lomveka limabuka: ndi chiyani chapadera kwambiri pa laibulale ya VTE yomwe imafunikira njira yosakhala yanthawi zonse kuti ikwaniritse ...

Pomaliza

Mu gawo loyamba la nkhaniyi, tapeza kuti ma terminals a VTE ali ndi mawonekedwe abwino, koma tsopano tikuwona kuti izi zimabwera ndi ndalama zina zogwirira ntchito. Tsopano kukumbukira si vuto chifukwa ma terminals onse a VTE amatha kuwongoleredwa kudzera munjira ya Daemon, yomwe imalepheretsa chidwi chawo. Komabe, machitidwe akale omwe ali ndi malire pa kuchuluka kwa RAM ndi ma buffers a kernel angafunikebe ma terminals am'mbuyomu, chifukwa amawononga zinthu zochepa kwambiri. Ngakhale ma terminals a VTE adachita bwino pakuyesa (kupukutira), mawonekedwe awo a latency ali pamwamba pa chigawo chokhazikitsidwa mu GNOME User Guide. Opanga VTE ayenera kuganizira izi. Ngati tiganizira kuti ngakhale kwa ogwiritsa ntchito a Linux oyambira kukumana ndi terminal ndikosapeweka, amatha kupangitsa kuti ikhale yosavuta kugwiritsa ntchito. Kwa akatswiri odziwa bwino ntchito, kusintha kuchokera kumalo osungira osasintha kungatanthauzenso kuchepa kwa maso komanso kutha kupewa kuvulala ndi matenda obwera chifukwa cha ntchito yayitali. Tsoka ilo, ma xterm akale okha ndi mlterm omwe amatifikitsa pamlingo wamatsenga wa 10 milliseconds, zomwe sizovomerezeka kwa ambiri.

Miyezo ya benchmark idawonetsanso kuti chifukwa cha chitukuko cha mawonekedwe a Linux, omanga amayenera kusokoneza zingapo. Ogwiritsa ntchito ena angafune kuyang'ana oyang'anira mazenera okhazikika pomwe amapereka kuchepetsa kwakukulu kwa ping. Tsoka ilo, sikunali kotheka kuyeza latency kwa Wayland: pulogalamu ya Typometer yomwe ndidagwiritsa ntchito idapangidwira zomwe Wayland idapangidwa kuti ipewe: kuzonda mazenera ena. Ndikukhulupirira kuti Wayland compositing ichita bwino kuposa X.org, ndipo ndikuyembekezanso kuti mtsogolomo wina apeza njira yoyezera kuchedwa m'malo ano.

Source: www.habr.com

Kuwonjezera ndemanga