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.
Ma terminal ali ndi malo apadera m'mbiri yamakompyuta, koma m'zaka zaposachedwa adakakamizika kupulumuka motsatira mzere wolamula pomwe mawonekedwe azithunzi amakhala ponseponse.
Ma terminals ena ali ndi mabowo otetezedwa modabwitsa, kuphatikiza ambiri amakhala ndi magwiridwe antchito osiyanasiyana, kuyambira pakuthandizira mawonekedwe a tabbed mpaka scripting. Ngakhale ife
Nawa ma terminal omwe ndidawunikiranso:
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
Thandizo la Unicode
Ndinayamba mayeso anga ndi thandizo la Unicode. Chiyeso choyamba cha ma terminals chinali kuwonetsa chingwe cha Unicode kuchokera
Mwachikhazikitso, xterm imagwiritsa ntchito mawonekedwe apamwamba "okhazikika", omwe, malinga ndi
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
“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".
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.
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.
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.
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).
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
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.
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
Alacritty ilibenso ma buffers akumbuyo, koma
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
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.
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
Zina mwazotsatirazi zadziwika kwa nthawi yayitali, ndi zotsatira zake
Fatin adayesa mayeso ake pa okonza zolemba; adapanga chida chonyamula chotchedwa
Nazi zotsatira za miyeso yanga, komanso zina mwazotsatira za Fatin, kusonyeza kuti kuyesa kwanga kumagwirizana ndi mayeso ake:
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
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.”
Chithunzi pamwambapa chimatengedwa pa Debian 9 yoyera (kutambasula) ndi
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
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
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
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
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.
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
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