{"id":37222,"date":"2019-10-31T22:16:26","date_gmt":"2019-10-31T19:16:26","guid":{"rendered":"https:\/\/prohoster.info\/blog\/obzor-emulyatorov-terminala\/"},"modified":"2019-10-31T22:16:26","modified_gmt":"2019-10-31T19:16:26","slug":"obzor-emulyatorov-terminala","status":"publish","type":"post","link":"https:\/\/prohoster.info\/sv\/blog\/administrirovanie\/obzor-emulyatorov-terminala","title":{"rendered":"\u00d6versikt \u00f6ver terminalemulatorer","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><i>Ett par ord fr\u00e5n v\u00e5rt \u00f6vers\u00e4ttningskontor: vanligtvis str\u00e4var alla efter att \u00f6vers\u00e4tta de senaste materialen och publikationerna, och vi \u00e4r inget undantag. Men terminaler \u00e4r inte n\u00e5got som uppdateras varje vecka. D\u00e4rf\u00f6r har vi \u00f6versatt artikeln av Antoine Bopre, publicerad v\u00e5ren 2018: trots sin anseende '\u00e5lder' enligt moderna standarder, anser vi att materialet definitivt inte har f\u00f6rlorat sin relevans. Dessutom \u00e4r originalet en serie av tv\u00e5 artiklar, men vi har beslutat att sammanfoga dem till ett stort inl\u00e4gg.<\/i><\/p>\n<p><img decoding=\"async\" alt=\"\u00d6versikt \u00f6ver terminalemulatorer\" src=\"\/wp-content\/uploads\/2019\/08\/23b2893d4d23ee402f42f8d686fec788.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nTerminaler har en s\u00e4rskild plats i datorhistorien, men under de senaste decennierna har de 'tvingats' bokstavligen \u00f6verleva tillsammans med kommandoraden mot bakgrund av de grafiska gr\u00e4nssnittens allm\u00e4na spridning. <noindex><a rel=\"nofollow\" href=\"https:\/\/en.wikipedia.org\/wiki\/Terminal_emulator\">Terminalemulatorer<\/a><\/noindex> har ersatt sina <noindex><a rel=\"nofollow\" href=\"https:\/\/en.wikipedia.org\/wiki\/Computer_terminal\">h\u00e5rdvarukamrater<\/a><\/noindex>, som i sin tur var en modifiering av system baserade p\u00e5 h\u00e5lkort och switchar. Moderna distributioner levereras med ett helt spektrum av terminalemulatorer i alla former och f\u00e4rger. Medan m\u00e5nga n\u00f6jer sig med den standardterminal som tillhandah\u00e5lls av deras arbetsmilj\u00f6, anv\u00e4nder vissa stolt uppenbart exotisk programvara f\u00f6r att k\u00f6ra sitt favoritgr\u00e4nssnitt eller textredigerare. Men, som vi kommer att se i denna artikel, var inte alla terminaler skapade p\u00e5 samma s\u00e4tt: de varierar kraftigt i funktionalitet, storlek och prestanda.<br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<p>Vissa terminaler har helt fantastiska s\u00e4kerhetsluckor, och dessutom har de flesta en helt olika upps\u00e4ttning funktioner, fr\u00e5n st\u00f6d f\u00f6r flikgr\u00e4nssnitt till skript. \u00c4ven om vi <noindex><a rel=\"nofollow\" href=\"https:\/\/lwn.net\/Articles\/88161\/\">redan har t\u00e4ckt terminalemulatorer f\u00f6r l\u00e4nge sedan<\/a><\/noindex>, \u00e4r denna artikel en uppdatering av det tidigare materialet som hj\u00e4lper l\u00e4sarna att avg\u00f6ra vilken terminal de ska anv\u00e4nda 2018. I f\u00f6rsta halvan av artikeln j\u00e4mf\u00f6rs funktionerna, medan den andra halvan bed\u00f6mer prestandan.<\/p>\n<p>H\u00e4r \u00e4r de terminaler jag har diskuterat:<\/p>\n<p><img decoding=\"async\" alt=\"\u00d6versikt \u00f6ver terminalemulatorer\" src=\"\/wp-content\/uploads\/2019\/08\/be76032ca4392c23dd0c111a36b199ef.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nDet kan h\u00e4nda att dessa inte \u00e4r de mest aktuella versionerna, eftersom jag har begr\u00e4nsat mig till stabila byggnader vid tidpunkten f\u00f6r skrivandet, som jag har kunnat installera p\u00e5 Debian 9 eller Fedora 27. Det enda undantaget \u00e4r Alacritty. Det \u00e4r en avkomling till terminaler med GPU-accelerering och skriven i ett ovanligt och nytt spr\u00e5k f\u00f6r denna uppgift - Rust. Jag exkluderade webbterminaler (inklusive, och p\u00e5 <noindex><a rel=\"nofollow\" href=\"https:\/\/electronjs.org\/\">Electron<\/a><\/noindex>), eftersom prelimin\u00e4ra tester visade p\u00e5 deras extremt l\u00e5ga prestanda.<\/p>\n<h4>Unicode-st\u00f6d<\/h4>\n<p>\nMina tester b\u00f6rjade med unicode-st\u00f6d. Det f\u00f6rsta testet av terminalerna var att visa en str\u00e4ng om unicode fr\u00e5n <noindex><a rel=\"nofollow\" href=\"https:\/\/en.wikipedia.org\/wiki\/Unicode#Web\">artikel p\u00e5 Wikipedia<\/a><\/noindex>: \"\u00e9, \u0394, \u0419, \u05e7, \u0645, \u0e57, \u3042, \u53f6, \u8449 och \ub9d0\". Detta enkla test visar om terminalen kan fungera korrekt \u00f6ver hela v\u00e4rlden. Terminalen xterm visar inte den arabiska symbolen <noindex><a rel=\"nofollow\" href=\"https:\/\/en.wikipedia.org\/wiki\/Mem\">Mem<\/a><\/noindex> i standardkonfigurationen:<\/p>\n<p><img decoding=\"async\" alt=\"\u00d6versikt \u00f6ver terminalemulatorer\" src=\"\/wp-content\/uploads\/2019\/08\/92e1b9f6e7f3129a55d09cd48310c699.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nSom standard anv\u00e4nder xterm det klassiska \"monospace\"-teckensnittet, som enligt <noindex><a rel=\"nofollow\" href=\"https:\/\/en.wikipedia.org\/wiki\/Open-source_Unicode_typefaces\">samma Wiki<\/a><\/noindex>, har \"betydande unicode-kompatibilitet sedan 1997\". I detta teckensnitt sker det n\u00e5got som g\u00f6r att symbolen visas som en tom ram och endast vid \u00f6kning av textstorleken till 20+ punkter b\u00f6rjar symbolen \u00e4ntligen visas korrekt. Men en s\u00e5dan \"fix\" f\u00f6rst\u00f6r visningen av andra unicode-symboler:<\/p>\n<p><img decoding=\"async\" alt=\"\u00d6versikt \u00f6ver terminalemulatorer\" src=\"\/wp-content\/uploads\/2019\/08\/4300f72d87bb9b729d4c682e876b4998.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nDessa sk\u00e4rmdumpar togs i Fedora 27, eftersom det var d\u00e4r jag fick de b\u00e4sta resultaten, medan Debian 9, d\u00e4r vissa \u00e4ldre versioner av terminaler (specifikt - mlterm) inte fungerade ordentligt med typsNitten. Lyckligtvis \u00e5tg\u00e4rdades detta i senare versioner.<\/p>\n<p>Observera nu visningen av str\u00e4ngen i xterm. Det visar sig att symbolen Mem och den f\u00f6ljande semitiska <noindex><a rel=\"nofollow\" href=\"https:\/\/en.wikipedia.org\/wiki\/Qoph\">Qoph<\/a><\/noindex> tillh\u00f6r RTL-skript (<noindex><a rel=\"nofollow\" href=\"https:\/\/en.wikipedia.org\/wiki\/Right-to-left\">right-to-left<\/a><\/noindex>), s\u00e5 de borde tekniskt sett visas fr\u00e5n h\u00f6ger till v\u00e4nster. Webbl\u00e4sare, till exempel Firefox 57, hanterar korrekt ovanst\u00e5ende str\u00e4ng. En enklare variant av RTL-text \u00e4r ordet \"<noindex><a rel=\"nofollow\" href=\"https:\/\/en.wikipedia.org\/wiki\/Sarah\">Sara<\/a><\/noindex>\" p\u00e5 hebreiska (<noindex><a rel=\"nofollow\" href=\"https:\/\/he.wikipedia.org\/wiki\/%D7%A9%D7%A8%D7%94\">\u05e9\u05e8\u05d4<\/a><\/noindex>). <noindex><a rel=\"nofollow\" href=\"https:\/\/en.wikipedia.org\/wiki\/Bi-directional_text\">Wikipedia-sidan om flerspr\u00e5kig text<\/a><\/noindex> s\u00e4ger f\u00f6ljande:<\/p>\n<blockquote><p>\"M\u00e5nga datorprogram kan inte korrekt visa flerspr\u00e5kig text. Till exempel best\u00e5r det hebreiska namnet \"Sara\" av tecknen sin (\u05e9) (som visas till h\u00f6ger), f\u00f6ljt av resh (\u05e8) och till sist he (\u05d4) (som ska visas till v\u00e4nster).\"<\/p><\/blockquote>\n<p>\nM\u00e5nga terminaler klarar inte detta test: Alacritty, VTE-baserade terminaler i Gnome och XFCE, urxvt, st och xterm visar \"Sara\" bakl\u00e4nges, som om vi skulle skriva namnet som \"Aras\".<\/p>\n<p><img decoding=\"async\" alt=\"\u00d6versikt \u00f6ver terminalemulatorer\" src=\"\/wp-content\/uploads\/2019\/08\/9decee6d198bd9d3e4f4883a8f2b0da6.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nEtt annat problem med tv\u00e5v\u00e4gs texter \u00e4r att de m\u00e5ste p\u00e5 n\u00e5got s\u00e4tt justeras, s\u00e4rskilt n\u00e4r det handlar om blandning av RTL och LTR-text. RTL-skript b\u00f6r starta fr\u00e5n h\u00f6ger sida av terminalf\u00f6nstret, men vad ska h\u00e4nda i terminaler som normalt arbetar med LTR-engelska? De flesta av dem har inga specifika mekanismer och justerar hela texten till v\u00e4nster (inklusive i Konsole). Undantagen \u00e4r pterm och mlterm, som f\u00f6ljer standarderna och justerar s\u00e5dana rader till h\u00f6ger.<\/p>\n<p><img decoding=\"async\" alt=\"\u00d6versikt \u00f6ver terminalemulatorer\" src=\"\/wp-content\/uploads\/2019\/08\/a32675d44e7cadce6d197d6eb5c8d9e2.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<h4>Skydd mot klipp och klistra<\/h4>\n<p>\nDen n\u00e4sta kritiska egenskapen som jag har identifierat \u00e4r skydd mot klipp och klistra. \u00c4ven om det \u00e4r allm\u00e4nt k\u00e4nt att kommandon som:<\/p>\n<pre><code class=\"plaintext\">$ curl http:\/\/example.com\/ | sh<\/code><\/pre>\n<p>\n\u00e4r push-kommandon f\u00f6r att k\u00f6ra kod, \u00e4r det f\u00e5 som vet att dolda kommandon kan tr\u00e4nga in i konsolen vid klipp och klistra fr\u00e5n en webbl\u00e4sare, \u00e4ven efter noggrann inspektion. <noindex><a rel=\"nofollow\" href=\"http:\/\/thejh.net\/misc\/website-terminal-copy-paste\">Janna Horns verifieringssida<\/a><\/noindex> visar tydligt hur ett oskyldigt utseende kommando:<\/p>\n<pre><code class=\"plaintext\">git clone git:\/\/git.kernel.org\/pub\/scm\/utils\/kup\/kup.git<\/code><\/pre>\n<p>\nblir ett s\u00e5dant problem vid ins\u00e4ttning fr\u00e5n Horns webbplats i terminalen:<\/p>\n<pre><code class=\"plaintext\">git clone \/dev\/null;\n    clear;\n\techo -n \"Hello \";\n\twhoami|tr -d 'n';\n\techo -e '!nDet var en d\u00e5lig id\u00e9. Kopiera inte kod fr\u00e5n webbplatser du inte litar p\u00e5! \n\tH\u00e4r \u00e4r den f\u00f6rsta raden av din \/etc\/passwd: ';\n\thead -n1 \/etc\/passwd\n\tgit clone git:\/\/git.kernel.org\/pub\/scm\/utils\/kup\/kup.git<\/code><\/pre>\n<p>\nHur fungerar det? Skadlig kod placeras i en block <b><span><\/b>, som flyttas ut ur anv\u00e4ndarens synf\u00e4lt med hj\u00e4lp av CSS.<\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/cirw.in\/blog\/bracketed-paste\">Bracketed paste-l\u00e4get<\/a><\/noindex> \u00e4r tydligt avsett f\u00f6r att neutralisera s\u00e5dana attacker. I detta l\u00e4ge omger terminalerna den klippt texten med ett par speciella escape-sekvenser f\u00f6r att informera skalet om textens ursprung. S\u00e5 skalet f\u00e5r signalen att det kan ignorera speciella tecken som kan finnas i den klippta texten. Alla terminaler, s\u00e5 l\u00e5ngt tillbaka som det respekterade xterm, st\u00f6der denna funktion, men klippning i Bracketed-l\u00e4ge kr\u00e4ver st\u00f6d fr\u00e5n skalet eller programmet som k\u00f6rs i terminalen. Till exempel beh\u00f6ver programvara som anv\u00e4nder <noindex><a rel=\"nofollow\" href=\"https:\/\/tiswww.case.edu\/php\/chet\/readline\/rltop.html\">GNU Readline<\/a><\/noindex> (samma Bash), en fil <b>~\/.inputrc<\/b>:<\/p>\n<pre><code class=\"plaintext\">set enable-bracketed-paste on<\/code><\/pre>\n<p>\nTyv\u00e4rr visar testwebbplatsen Horn ocks\u00e5 hur man kringg\u00e5r detta skydd genom att formatera texten och f\u00f6r tidigt avsluta till\u00e4mpningen av Bracketed-l\u00e4get. Detta fungerar eftersom vissa terminaler filtrerar escape-sekvenser felaktigt innan de l\u00e4gger till sina egna. Till exempel lyckades jag aldrig avsluta testerna f\u00f6r Konsole, \u00e4ven med korrekt konfiguration. <b>.inputrc<\/b> filen. Detta inneb\u00e4r att du enkelt kan f\u00e5 skador p\u00e5 systemkonfigurationen p\u00e5 grund av ett osupporterat program eller en felaktigt konfigurerad shell. Detta \u00e4r s\u00e4rskilt farligt n\u00e4r man loggar in p\u00e5 fj\u00e4rrservrar, d\u00e4r noggrant utf\u00f6rande av konfigurationen \u00e4r mindre vanligt, s\u00e4rskilt om du har m\u00e5nga s\u00e5dana fj\u00e4rrmaskiner.<\/p>\n<p>En bra l\u00f6sning p\u00e5 detta problem \u00e4r ett ins\u00e4ttningsbekr\u00e4ftelse-plugin f\u00f6r terminalen <b>urxvt<\/b>, som helt enkelt ber om tillst\u00e5nd att klistra in vilken text som helst som inneh\u00e5ller nya rader. Jag har inte hittat en mer s\u00e4ker l\u00f6sning f\u00f6r den textattack som beskrivits av Horn.<\/p>\n<h4>Flikar och profiler<\/h4>\n<p>\nEn popul\u00e4r funktion just nu \u00e4r st\u00f6d f\u00f6r flikar, vilket vi kommer att definiera som ett terminalf\u00f6nster som inneh\u00e5ller flera terminaler. F\u00f6r olika terminaler skiljer sig denna funktion, och medan traditionella terminaler som xterm inte alls st\u00f6der flikar, har modernare versioner av terminaler som Xfce Terminal, GNOME Terminal och Konsole denna funktion. Urxvt har ocks\u00e5 st\u00f6d f\u00f6r flikar, men endast om ett plugin anv\u00e4nds. Men n\u00e4r det g\u00e4ller st\u00f6d f\u00f6r flikar \u00e4r Terminator den obestridda ledaren: den st\u00f6der inte bara flikar utan kan ocks\u00e5 placera terminaler i godtycklig ordning (se bilden nedan).<\/p>\n<p><img decoding=\"async\" alt=\"\u00d6versikt \u00f6ver terminalemulatorer\" src=\"\/wp-content\/uploads\/2019\/08\/5ac2cdbdd969420cd7c19597d20c8c35.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nEn annan funktion hos Terminator \u00e4r m\u00f6jligheten att \"gruppera\" dessa flikar tillsammans och skicka samma tangenttryckningar till flera terminaler samtidigt, vilket ger ett grovt verktyg f\u00f6r att utf\u00f6ra massoperationer p\u00e5 flera servrar samtidigt. En liknande funktion finns ocks\u00e5 i Konsole. F\u00f6r att anv\u00e4nda denna funktion i andra terminaler m\u00e5ste man anv\u00e4nda tredjepartsprogramvara som <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/duncs\/clusterssh\">Cluster SSH<\/a><\/noindex>, <noindex><a rel=\"nofollow\" href=\"http:\/\/hea-www.harvard.edu\/~fine\/Tech\/xlax.html\">xlax<\/a><\/noindex> eller <noindex><a rel=\"nofollow\" href=\"https:\/\/tmux.github.io\/\">tmux<\/a><\/noindex>.<\/p>\n<p>S\u00e4rskilt bra fungerar flikarna tillsammans med profiler: till exempel kan du ha en flik f\u00f6r e-post, en annan f\u00f6r chatt och s\u00e5 vidare. Detta st\u00f6ds bra av terminalerna Konsole och GNOME Terminal. B\u00e5da till\u00e5ter varje flik att automatiskt starta sin egen profil. Terminator st\u00f6der ocks\u00e5 profiler, men jag kunde inte hitta n\u00e5got s\u00e4tt att automatiskt starta specifika program n\u00e4r en viss flik \u00f6ppnas. Andra terminaler har \u00f6verhuvudtaget ingen uppfattning om \"profil\".<\/p>\n<h4>Ryschki<\/h4>\n<p>\nDet sista jag kommer att g\u00e5 igenom i den f\u00f6rsta delen av denna artikel \u00e4r utseendet p\u00e5 terminalerna. Till exempel st\u00f6der GNOME, Xfce och urxvt genomskinlighet, men nyligen har de slutat st\u00f6dja bakgrundsbilder, vilket f\u00e5tt vissa anv\u00e4ndare att byta till en annan terminal. <noindex><a rel=\"nofollow\" href=\"https:\/\/gnunn1.github.io\/tilix-web\/\">Tilix<\/a><\/noindex>. Personligen \u00e4r jag n\u00f6jd med den enklaste formen. <b>Xresources<\/b>, som st\u00e4ller in en grundl\u00e4ggande upps\u00e4ttning bakgrundsf\u00e4rger f\u00f6r urxvt. Men icke-standardf\u00e4rgteman kan skapa problem. Till exempel, <noindex><a rel=\"nofollow\" href=\"http:\/\/ethanschoonover.com\/solarized\">Solarized<\/a><\/noindex> <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/altercation\/solarized\/issues\/220\">funkar inte<\/a><\/noindex> med applikationerna <noindex><a rel=\"nofollow\" href=\"http:\/\/hisham.hm\/htop\/\">htop<\/a><\/noindex> och <noindex><a rel=\"nofollow\" href=\"http:\/\/iptraf.seul.org\/\">IPTraf<\/a><\/noindex>, eftersom de redan anv\u00e4nder sina egna f\u00e4rger.<\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/en.wikipedia.org\/wiki\/VT100\">Den ursprungliga VT100-terminalen<\/a><\/noindex> st\u00f6ddes inte av f\u00e4rger, och nya begr\u00e4nsades ofta till en 256-f\u00e4rgspalett. F\u00f6r erfarna anv\u00e4ndare som stylar sina terminaler, kan krav p\u00e5 komplexa skal eller statusrader bli en obehaglig begr\u00e4nsning. <noindex><a rel=\"nofollow\" href=\"https:\/\/gist.github.com\/XVilka\/8346728\">Gist<\/a><\/noindex> sp\u00e5rar vilka terminaler som har st\u00f6d f\u00f6r \"True Color\". Mina tester bekr\u00e4ftar att st, Alacritty och terminaler baserade p\u00e5 VTE perfekt st\u00f6der True Color. Andra terminaler presterar inte s\u00e5 bra i detta avseende och visar egentligen inte ens 256 f\u00e4rger. Nedan kan du se skillnaden mellan st\u00f6det f\u00f6r True Color i terminalerna GNOME, st och xterm, som klarar detta bra med sin 256-f\u00e4rgspalett, och urxvt, som inte bara misslyckas testet men ocks\u00e5 visar olika blinkande symboler ist\u00e4llet.<\/p>\n<p><img decoding=\"async\" alt=\"\u00d6versikt \u00f6ver terminalemulatorer\" src=\"\/wp-content\/uploads\/2019\/08\/bc6ceac84a1918b9bfa14a5cadd28746.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nVissa terminaler analyserar ocks\u00e5 texten f\u00f6r att hitta URL-m\u00f6nster f\u00f6r att g\u00f6ra l\u00e4nkar klickbara. Detta g\u00e4ller alla VTE-baserade terminaler, medan urxvt kr\u00e4ver en speciell plugin-modul som transformera URL-adresser vid klick eller med hj\u00e4lp av kortkommandon. Andra terminaler som jag testat visar URL-adresser p\u00e5 andra s\u00e4tt.<\/p>\n<p>Slutligen \u00e4r en ny trend f\u00f6r terminaler \u2013 valfri scrollbuffert. Till exempel, i st finns ingen scrollbuffert; det antas att anv\u00e4ndaren kommer att anv\u00e4nda en terminalmultiplexer, som tmux och <noindex><a rel=\"nofollow\" href=\"https:\/\/www.gnu.org\/software\/screen\/\">GNU Screen<\/a><\/noindex>.<\/p>\n<p>I Alacritty finns det ocks\u00e5 ingen bak\u00e5trullningsbuffert, men <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/jwilm\/alacritty\/issues\/124\">st\u00f6d f\u00f6r den kommer snart att l\u00e4ggas till<\/a><\/noindex> p\u00e5 grund av \"omfattande feedback\" fr\u00e5n anv\u00e4ndare ang\u00e5ende detta \u00e4mne. F\u00f6rutom dessa avvikare har varje terminal jag har unders\u00f6kt som jag kunnat hitta st\u00f6d f\u00f6r bak\u00e5trullning.<\/p>\n<h4>Mellanliggande resultat<\/h4>\n<p>\nI den andra delen av materialet (<i>i originalet var detta tv\u00e5 olika artiklar, - anm. \u00f6vers.<\/i>) kommer vi att j\u00e4mf\u00f6ra prestanda, minnesanv\u00e4ndning och latens. Men vi ser redan att vissa av de terminaler som \u00f6verv\u00e4gs har allvarliga brister. Till exempel kan anv\u00e4ndare som regelbundet arbetar med RTL-skript uppm\u00e4rksamma mlterm och pterm, eftersom de hanterar s\u00e5dana uppgifter b\u00e4ttre \u00e4n andra. Konsole har ocks\u00e5 visat sig fungera bra. Anv\u00e4ndare som inte arbetar med RTL-skript kan v\u00e4lja n\u00e5got annat.<\/p>\n<p>Ur s\u00e4kerhetssynpunkt n\u00e4r det g\u00e4ller skydd mot ins\u00e4ttning av skadlig kod st\u00e5r urxvt ut p\u00e5 grund av sin s\u00e4rskilda implementering av skydd mot denna typ av attacker, vilket jag tycker \u00e4r definitivt l\u00e4mpligt. De som s\u00f6ker efter n\u00e5gra funktioner b\u00f6r titta p\u00e5 Konsole. Slutligen \u00e4r det v\u00e4rt att notera att VTE \u00e4r en utm\u00e4rkt bas f\u00f6r terminaler, vilket garanterar f\u00e4rgst\u00f6d, URL-igenk\u00e4nning och s\u00e5 vidare. Vid f\u00f6rsta anblicken kan den standardterminal som levereras med din favoritmilj\u00f6 uppfylla alla krav, men vi l\u00e4mnar den fr\u00e5gan \u00f6ppen tills vi utreder prestandan.<\/p>\n<p><i><\/p>\n<h4>Vi forts\u00e4tter diskussionen<\/h4>\n<p><\/i><br \/>\n\u00d6verlag kan terminalernas prestanda verka som en \u00f6verdriven fr\u00e5ga, men som det visar sig uppvisar vissa av dem en \u00f6verraskande h\u00f6g latens f\u00f6r s\u00e5dan grundl\u00e4ggande programvara. Vidare kommer vi att titta p\u00e5 det som traditionellt kallas \"hastighet\" (egentligen \u00e4r det scrollhastigheten) och hur mycket minne terminalen anv\u00e4nder (med tanke p\u00e5 att detta idag inte \u00e4r lika kritiskt som f\u00f6r flera decennier sedan).<\/p>\n<h4>F\u00f6rdr\u00f6jning<\/h4>\n<p>\nEfter noggrant unders\u00f6kande av terminalernas prestanda har jag kommit fram till att den viktigaste parametern i detta avseende \u00e4r storleken p\u00e5 latensen (ping). I min artikel <noindex><a rel=\"nofollow\" href=\"https:\/\/pavelfatin.com\/typing-with-pleasure\/\">\u00abVi skriver med gl\u00e4dje\u00bb<\/a><\/noindex> Pavel Fatin unders\u00f6kte f\u00f6rdr\u00f6jningen hos olika textredigerare och antydde att terminaler i detta avseende kan fungera l\u00e5ngsammare \u00e4n de snabbaste textredigerarna. Just denna antydan ledde mig, i slut\u00e4ndan, till att starta egna tester och skriva denna artikel.<\/p>\n<p>Men vad \u00e4r f\u00f6rdr\u00f6jning, och varf\u00f6r \u00e4r den s\u00e5 viktig? I sin artikel definierade Fatin den som \u00abf\u00f6rdr\u00f6jningen mellan tangenttryckningen och den motsvarande uppdateringen p\u00e5 sk\u00e4rmen\u00bb och citerade <noindex><a rel=\"nofollow\" href=\"https:\/\/books.google.com\/books\/about\/Handbook_of_Human_Computer_Interaction.html?id=WuQbERgXR10C&amp;redir_esc=y\">\u00abHandbok f\u00f6r m\u00e4nniskans interaktion med datorer\u00bb<\/a><\/noindex>, d\u00e4r det st\u00e5r: \u00abF\u00f6rdr\u00f6jningen i visuell \u00e5terkoppling p\u00e5 datorsk\u00e4rmen har stor p\u00e5verkan p\u00e5 skrivf\u00f6tterens beteende och deras tillfredsst\u00e4llelse\u00bb.<\/p>\n<p>Fatin f\u00f6rklarar att denna ping har djupare konsekvenser \u00e4n bara tillfredsst\u00e4llelse: \u00abatt skriva blir l\u00e5ngsammare, fler misstag uppst\u00e5r, \u00f6gon- och muskelsp\u00e4nningar \u00f6kar\u00bb. Med andra ord kan en st\u00f6rre f\u00f6rdr\u00f6jning leda till skrivfel samt en minskning av kodkvaliteten, eftersom det medf\u00f6r en extra kognitiv belastning p\u00e5 hj\u00e4rnan. Men vad som \u00e4r \u00e4nnu v\u00e4rre \u00e4r att pingen \u00ab\u00f6kar \u00f6gon- och muskelsp\u00e4nningen\u00bb, vilket tycks inneb\u00e4ra <noindex><a rel=\"nofollow\" href=\"https:\/\/en.wikipedia.org\/wiki\/Repetitive_strain_injury\">utvecklingen av professionella skador<\/a><\/noindex> i framtiden (<i>till synes syftar f\u00f6rfattaren p\u00e5 problem med \u00f6gon, rygg, armar och givetvis synen, \u2014 \u00f6vers. anm.<\/i>) p\u00e5 grund av upprepad belastning.<\/p>\n<p>N\u00e5gra av dessa effekter \u00e4r v\u00e4lk\u00e4nda, och resultaten <noindex><a rel=\"nofollow\" href=\"https:\/\/doi.org\/10.1080\/00140137608931531\">forskning<\/a><\/noindex>, publicerade redan 1976 i tidskriften Ergonomics, visar att en f\u00f6rdr\u00f6jning p\u00e5 100 millisekunder \u00abf\u00f6rs\u00e4mrar skrivhastigheten avsev\u00e4rt\u00bb. Nyligen har anv\u00e4ndarmanualen f\u00f6r GNOME angett <noindex><a rel=\"nofollow\" href=\"https:\/\/developer.gnome.org\/hig-book\/3.12\/feedback-response-times.html.en\">ett acceptabelt svarstid<\/a><\/noindex> p\u00e5 10 millisekunder, och om vi g\u00e5r l\u00e4ngre, s\u00e5 <noindex><a rel=\"nofollow\" href=\"https:\/\/www.youtube.com\/watch?v=vOvQCPLkPt4\">Microsoft Research<\/a><\/noindex> visar att idealet \u00e4r 1 millisekund.<\/p>\n<p>Fatin utf\u00f6rde sina tester p\u00e5 textredigerare; han skapade ett b\u00e4rbart verktyg som kallas <noindex><a rel=\"nofollow\" href=\"https:\/\/pavelfatin.com\/typometer\">Typometer<\/a><\/noindex>, som jag anv\u00e4nd f\u00f6r att kontrollera ping i terminalemulatorer. T\u00e4nk p\u00e5 att testet utf\u00f6rdes i simuleringsl\u00e4ge: i verkligheten m\u00e5ste vi ta h\u00e4nsyn till b\u00e5de inmatningsf\u00f6rdr\u00f6jning (tangentbord, USB-kontroller och s\u00e5 vidare) och utmatningsf\u00f6rdr\u00f6jning (grafikkortsbuffer, monitor). Enligt Fatins uppgifter ligger den typiska f\u00f6rdr\u00f6jningen runt 20 ms. Med spelutrustning kan den uppn\u00e5s p\u00e5 endast 3 millisekunder. Eftersom vi redan har s\u00e5dan snabb utrustning, b\u00f6r applikationen inte introducera sin egen f\u00f6rdr\u00f6jning. Fatins m\u00e5l \u00e4r att minska applikationens f\u00f6rdr\u00f6jning till 1 millisekund, eller helst att n\u00e5 ett f\u00f6rdr\u00f6jningsfritt tillst\u00e5nd. <noindex><a rel=\"nofollow\" href=\"https:\/\/blog.jetbrains.com\/idea\/2015\/08\/experimental-zero-latency-typing-in-intellij-idea-15-eap\/\">m\u00e4tbar f\u00f6rdr\u00f6jning<\/a><\/noindex>, som i <noindex><a rel=\"nofollow\" href=\"https:\/\/confluence.jetbrains.com\/display\/IDEADEV\/IDEA+15+EAP\">IntelliJ IDEA 15<\/a><\/noindex>.<\/p>\n<p>H\u00e4r \u00e4r resultaten av mina m\u00e4tningar, samt n\u00e5gra av Fatins resultat f\u00f6r att visa att mitt experiment \u00f6verensst\u00e4mmer med hans tester:<\/p>\n<p><img decoding=\"async\" alt=\"\u00d6versikt \u00f6ver terminalemulatorer\" src=\"\/wp-content\/uploads\/2019\/08\/d7ae46c8309e9cfd517164d5fed093f7.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nDet f\u00f6rsta som f\u00f6rv\u00e5nade mig var den b\u00e4ttre svarstiden hos \u00e4ldre program, som xterm och mlterm. Trots s\u00e4mre registreringsf\u00f6rdr\u00f6jning (2,4 ms) visade de ett b\u00e4ttre resultat \u00e4n den snabbaste moderna terminalen (10,6 ms f\u00f6r st). Ingen modern terminal kommer under tr\u00f6skeln p\u00e5 10 millisekunder. I synnerhet uppfyller Alacritty inte kraven f\u00f6r att vara \"den snabbaste av alla existerande terminalemulatorer\", \u00e4ven om dess resultat har f\u00f6rb\u00e4ttrats sedan den f\u00f6rsta kontrollen 2017. Faktum \u00e4r att projektets f\u00f6rfattare <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/jwilm\/alacritty\/issues\/673\">\u00e4r medvetna om situationen<\/a><\/noindex> och arbetar p\u00e5 att f\u00f6rb\u00e4ttra rendering. Det \u00e4r ocks\u00e5 v\u00e4rt att notera att Vim, som anv\u00e4nder GTK3, \u00e4r avsev\u00e4rt l\u00e5ngsammare \u00e4n sin GTK2-motsvarighet. Detta tyder p\u00e5 att GTK3 skapar en extra f\u00f6rdr\u00f6jning, som p\u00e5verkar alla andra terminaler som anv\u00e4nder det (Terminator, Xfce4 Terminal och GNOME Terminal).<\/p>\n<p>Men f\u00f6r \u00f6gat kan skillnaderna vara osynliga. Som Fatin f\u00f6rklarar: \"Det \u00e4r inte n\u00f6dv\u00e4ndigt att vara medveten om f\u00f6rdr\u00f6jningen f\u00f6r att den ska p\u00e5verka dig.\" Fatin varnar ocks\u00e5 f\u00f6r standardavvikelsen: \"Alla avvikelser i l\u00e4ngden p\u00e5 f\u00f6rdr\u00f6jningen (skakningar) skapar extra belastning p\u00e5 grund av deras of\u00f6ruts\u00e4gbarhet.\"<\/p>\n<p><img decoding=\"async\" alt=\"\u00d6versikt \u00f6ver terminalemulatorer\" src=\"\/wp-content\/uploads\/2019\/08\/e128a7e6c32a1517c98ffc612fe09128.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nDiagrammet ovan \u00e4r taget fr\u00e5n en ren Debian 9 (stretch) med <noindex><a rel=\"nofollow\" href=\"https:\/\/i3wm.org\/\">i3-f\u00f6nsterhanteraren<\/a><\/noindex>. Den h\u00e4r milj\u00f6n ger de b\u00e4sta resultaten i latensm\u00e4tningar. Det visar sig att GNOME skapar en extra ping p\u00e5 20 ms f\u00f6r alla m\u00e4tningar. En m\u00f6jlig f\u00f6rklaring till detta \u00e4r att det finns program med synkron bearbetning av inmatningsevent. Fatin ger ett exempel p\u00e5 detta fall. <noindex><a rel=\"nofollow\" href=\"http:\/\/www.workrave.org\/\">Workrave<\/a><\/noindex>, som l\u00e4gger till latens genom att behandla alla input-events synkront. GNOME \u00e4r ocks\u00e5 f\u00f6rinst\u00e4llt med ett f\u00f6nsterhanteringssystem. <noindex><a rel=\"nofollow\" href=\"https:\/\/en.wikipedia.org\/wiki\/Mutter_(software)\">Mutter<\/a><\/noindex>, vilket skapar ett extra lager av buffring, vilket p\u00e5verkar ping och l\u00e4gger till minst 8 millisekunders latens.<\/p>\n<p><img decoding=\"async\" alt=\"\u00d6versikt \u00f6ver terminalemulatorer\" src=\"\/wp-content\/uploads\/2019\/08\/3585d1edf4cee214d7a53858943b1845.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<h4>Rullningshastighet<\/h4>\n<p>\nN\u00e4sta test \u00e4r en traditionell kontroll av \"hastighet\" eller \"bandbredd\", som m\u00e4ter hur snabbt terminalen kan rulla ner sidan och visa en stor m\u00e4ngd text p\u00e5 sk\u00e4rmen. Testets mekanik varierar; det ursprungliga testet bestod av att helt enkelt generera samma textstr\u00e4ng med kommandot seq. Andra tester inkluderar Thomas E. Dickys test (som \u00e4r kopplad till xterm), d\u00e4r en fil med namnet terminfo.src upprepade g\u00e5nger <noindex><a rel=\"nofollow\" href=\"https:\/\/invisible-island.net\/xterm\/xterm.faq.html#scroll_speed\">laddas ner.<\/a><\/noindex>I en annan prestanda\u00f6versyn av terminaler <noindex><a rel=\"nofollow\" href=\"https:\/\/danluu.com\/term-latency\/\">Den Luu<\/a><\/noindex> anv\u00e4nder en str\u00e4ng av slumpm\u00e4ssiga byte i base32-kodning, som skrivs ut till terminalen med hj\u00e4lp av cat. Luu anser att detta test \u00e4r \"s\u00e5 oanv\u00e4ndbart referensv\u00e4rde som man kan f\u00f6rest\u00e4lla sig\" och f\u00f6resl\u00e5r att man ist\u00e4llet anv\u00e4nder terminalens respons som det prim\u00e4ra m\u00e5ttet. Dicky kallade ocks\u00e5 sitt test missvisande. Trots detta erk\u00e4nner b\u00e5da f\u00f6rfattarna att terminalf\u00f6nstrets bandbredd kan vara ett problem. Luu uppt\u00e4ckte att Emacs Eshell h\u00e4ngde vid visning av stora filer, och Dicky optimerade terminalen f\u00f6r att eliminera den visuella segheten i xterm. D\u00e4rf\u00f6r finns det fortfarande en viss po\u00e4ng med detta test, men eftersom renderingsprocessen skiljer sig avsev\u00e4rt mellan terminaler, kan det ocks\u00e5 anv\u00e4ndas som en testkomponent f\u00f6r att kontrollera andra parametrar.<\/p>\n<p><img decoding=\"async\" alt=\"\u00d6versikt \u00f6ver terminalemulatorer\" src=\"\/wp-content\/uploads\/2019\/08\/3231877fdcd7725c3248fb393185ece4.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nH\u00e4r ser vi att rxvt och st sticker ut bland konkurrenterna, f\u00f6ljt av det mycket nyare Alacritty, som utvecklas med fokus p\u00e5 hastighet. D\u00e4refter kommer Xfce (familjen VTE) och Konsole, som arbetar n\u00e4stan dubbelt s\u00e5 snabbt. Sist i tur st\u00e5r xterm, som \u00e4r fem g\u00e5nger l\u00e5ngsammare \u00e4n rxvt. Under testet visade xterm ocks\u00e5 mycket flimmer, och det var sv\u00e5rt att s\u00e4rskilja den passerande texten, \u00e4ven om det var samma rad. Konsole visade sig vara snabb, men hade ibland \"tricks\": sk\u00e4rmen h\u00e4ngde ibland, vilket gjorde att texten visades delvis eller inte alls. Andra terminaler visade rader tydligt, inklusive st, Alacritty och rxvt.<\/p>\n<p>Diki f\u00f6rklarar att skillnaderna i prestanda beror p\u00e5 designen av scrollningsbuffrar i olika terminaler. I synnerhet anklagar han rxvt och andra terminaler f\u00f6r att \"inte f\u00f6lja allm\u00e4nna regler\":<\/p>\n<blockquote><p>\"Till skillnad fr\u00e5n xterm f\u00f6rs\u00f6kte rxvt inte visa alla uppdateringar. Om det hamnade efter skulle det avst\u00e5 fr\u00e5n vissa uppdateringar f\u00f6r att kunna ikapp. Detta hade st\u00f6rre inverkan p\u00e5 den upplevda scrollhastigheten \u00e4n p\u00e5 organisationen av internminnet. En nackdel var att ASCII-animationen var n\u00e5got oprecis.\"<\/p><\/blockquote>\n<p>\nF\u00f6r att \u00e5tg\u00e4rda den uppenbara tr\u00f6gheten hos xterm? f\u00f6resl\u00e5r Diki att anv\u00e4nda resursen <noindex><a rel=\"nofollow\" href=\"https:\/\/invisible-island.net\/xterm\/manpage\/xterm.html#VT100-Widget-Resources:fastScroll\">fastScroll<\/a><\/noindex>, vilket g\u00f6r att xterm kan avst\u00e5 fr\u00e5n vissa sk\u00e4rmutppdateringar f\u00f6r att inte hamna efter fl\u00f6det. Mina tester bekr\u00e4ftar att fastScroll \u00f6kar prestandan och lyfter xterm till samma niv\u00e5 som rxvt. Detta \u00e4r dock en ganska grov tillf\u00e4llig l\u00f6sning, som Diki sj\u00e4lv f\u00f6rklarar: \"ibland verkar xterm - precis som konsole - stanna, eftersom det v\u00e4ntar p\u00e5 en ny upps\u00e4ttning sk\u00e4rmutppdateringar efter att vissa har tagits bort.\" I detta sammanhang verkar det som om andra terminaler har hittat den b\u00e4sta kompromissen mellan hastighet och integritet i sk\u00e4rmen.<\/p>\n<h4>Resursanv\u00e4ndning<\/h4>\n<p>\nOavsett om det \u00e4r rimligt att betrakta scrollhastighet som en prestandam\u00e4tning, g\u00f6r detta test det m\u00f6jligt att simulera belastningen p\u00e5 terminalerna, vilket i sin tur g\u00f6r att vi kan m\u00e4ta andra parametrar, s\u00e5som minnes- eller disk-anv\u00e4ndning. Metrikerna erh\u00f6lls genom att k\u00f6ra det angivna testet <b>seq<\/b> under \u00f6vervakning av Python-processen. Den samlade in data om r\u00e4knarna <noindex><a rel=\"nofollow\" href=\"http:\/\/man7.org\/linux\/man-pages\/man2\/getrusage.2.html\">getrusage ()<\/a><\/noindex> f\u00f6r <b>ru_maxrss<\/b>, summan av <b>ru_oublock<\/b> och <b>ru_inblock<\/b> och en enkel tidsr\u00e4knare.<\/p>\n<p><img decoding=\"async\" alt=\"\u00d6versikt \u00f6ver terminalemulatorer\" src=\"\/wp-content\/uploads\/2019\/08\/df378c145a559ed4aad98fa70b58c72c.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nI det h\u00e4r testet ligger ST p\u00e5 f\u00f6rsta plats med den l\u00e4gsta genomsnittliga minnesanv\u00e4ndningen p\u00e5 8 MB, vilket inte \u00e4r f\u00f6rv\u00e5nande med tanke p\u00e5 att projektets huvudid\u00e9 \u00e4r enkelhet. Lite mer anv\u00e4nder mlterm, xterm och rxvt \u2013 cirka 12 MB. Ett annat anm\u00e4rkningsv\u00e4rt resultat \u00e4r Alacritty, som kr\u00e4ver 30 MB f\u00f6r att fungera. D\u00e4refter kommer terminaler av VTE-familjen med siffror mellan 40 och 60 MB, vilket \u00e4r ganska mycket. Denna f\u00f6rbrukning kan f\u00f6rklaras av att dessa terminaler anv\u00e4nder mer avancerade bibliotek, som GTK. Konsole hamnar sist med en kolossal minnesanv\u00e4ndning p\u00e5 65 MB under testerna, \u00e4ven om detta kan r\u00e4ttf\u00e4rdigas av dess omfattande funktionsupps\u00e4ttning.<\/p>\n<p>J\u00e4mf\u00f6rt med tidigare resultat fr\u00e5n f\u00f6r tio \u00e5r sedan, har alla program nu mycket h\u00f6gre minnesanv\u00e4ndning. Tidigare kr\u00e4vde Xterm 4 MB, och nu 15 MB bara f\u00f6r att starta. En liknande \u00f6kning ses hos rxvt, som nu i standardutf\u00f6rande kr\u00e4ver 16 MB. Xfce Terminal tar 34 MB, vilket \u00e4r tre g\u00e5nger mer \u00e4n tidigare, medan GNOME Terminal kr\u00e4ver 20 MB. Naturligtvis genomf\u00f6rdes alla tidigare tester p\u00e5 en 32-bitarsarkitektur. Vid LCA 2012, Rasty Russell <noindex><a rel=\"nofollow\" href=\"https:\/\/lwn.net\/Articles\/477155\/\">ber\u00e4ttade<\/a><\/noindex>, finns det m\u00e5nga mer subtila anledningar som kan f\u00f6rklara den \u00f6kade minnesanv\u00e4ndningen. Med allt detta lever vi nu i en tid d\u00e5 vi har hela gigabyte minne, s\u00e5 vi klarar oss p\u00e5 n\u00e5got s\u00e4tt.<\/p>\n<p>Trots det kan jag inte skaka av mig k\u00e4nslan av att avs\u00e4tta mer minne f\u00f6r s\u00e5 grundl\u00e4ggande mjukvara som terminalen \u00e4r en sl\u00f6seri med resurser. Dessa program borde vara bland de minsta av de sm\u00e5 och borde kunna fungera p\u00e5 vilken \"l\u00e5da\" som helst, \u00e4ven en skokartong, om vi n\u00e5gonsin kommer dit att de beh\u00f6ver utrustas med Linux-system (och ni vet att s\u00e5 kommer att bli fallet). Men med dessa siffror kommer minnesanv\u00e4ndningen i framtiden att bli ett problem i alla milj\u00f6er vid start av flera terminaler, utom i situationer med n\u00e5gra av de l\u00e4ttaste och mest begr\u00e4nsade alternativen. F\u00f6r att kompensera f\u00f6r detta har GNOME Terminal, Konsole, urxvt, Terminator och Xfce Terminal ett daemon-l\u00e4ge som g\u00f6r det m\u00f6jligt att hantera flera terminaler genom en process, vilket begr\u00e4nsar deras minnesanv\u00e4ndning.<\/p>\n<p><img decoding=\"async\" alt=\"\u00d6versikt \u00f6ver terminalemulatorer\" src=\"\/wp-content\/uploads\/2019\/08\/65ade9cc81284f24f0c44322eec73ef0.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nUnder mina tester kom jag fram till en annan ov\u00e4ntad slutsats ang\u00e5ende diskens l\u00e4s- och skrivprestanda: jag f\u00f6rv\u00e4ntade mig verkligen inte att se n\u00e5got h\u00e4r, men det visade sig att vissa terminaler skriver de mest omfattande data till disken. S\u00e5ledes h\u00e5ller VTE-biblioteket faktiskt en scrollbuffert p\u00e5 disken (denna funktionalitet <noindex><a rel=\"nofollow\" href=\"https:\/\/bugzilla.gnome.org\/show_bug.cgi?id=631685\">uppt\u00e4cktes redan 2010<\/a><\/noindex>, och det p\u00e5g\u00e5r fortfarande). Men till skillnad fr\u00e5n de gamla implementeringarna, s\u00e5 \u00e4r dessa data nu \u00e5tminstone krypterade med hj\u00e4lp av AES256 GCM (<noindex><a rel=\"nofollow\" href=\"https:\/\/bugzilla.gnome.org\/show_bug.cgi?id=664611#c48\">fr\u00e5n version 0.39.2<\/a><\/noindex>). Men det v\u00e4cks en rimlig fr\u00e5ga: vad \u00e4r det som \u00e4r s\u00e5 speciellt med VTE-biblioteket att det kr\u00e4ver en s\u00e5dan icke-standardiserad implementering\u2026<\/p>\n<h4>Slutsats<\/h4>\n<p>\nI den f\u00f6rsta delen av artikeln uppt\u00e4ckte vi att terminaler baserade p\u00e5 VTE har en bra upps\u00e4ttning funktioner, men nu ser vi att detta \u00e4r kopplat till vissa kostnader f\u00f6r att s\u00e4kerst\u00e4lla deras prestanda. Just nu \u00e4r minnet inte ett problem, eftersom alla VTE-terminaler kan hanteras via en Daemon-process som begr\u00e4nsar deras resursanv\u00e4ndning. \u00c4nd\u00e5 kan gamla system, som har fysiska begr\u00e4nsningar av m\u00e4ngden RAM och k\u00e4rnbuffer, fortfarande beh\u00f6va tidigare versioner av terminalerna, eftersom de konsumerar betydligt mindre resurser. \u00c4ven om VTE-terminaler har presterat bra i tester f\u00f6r bandbredd (scrollning), \u00e4r deras visningsf\u00f6rdr\u00f6jning av data p\u00e5 sk\u00e4rmen \u00f6ver den fastst\u00e4llda tr\u00f6skeln i GNOME-anv\u00e4ndarhandboken. Troligtvis b\u00f6r VTE-utvecklarna ta h\u00e4nsyn till detta. Med tanke p\u00e5 att \u00e4ven nyb\u00f6rjare inom Linux oundvikligen kommer att st\u00f6ta p\u00e5 terminalen, kan de g\u00f6ra den mer anv\u00e4ndarv\u00e4nlig. F\u00f6r erfarna anv\u00e4ndare kan \u00f6verg\u00e5ngen fr\u00e5n standardterminalen inneb\u00e4ra en minskad belastning p\u00e5 \u00f6gonen och m\u00f6jligheten att undvika yrkesskador och sjukdomar i framtiden p\u00e5 grund av l\u00e5ngvariga arbetspass. Tyv\u00e4rr ger endast de gamla xterm och mlterm oss den magiska pingtr\u00f6skeln p\u00e5 10 millisekunder, vilket \u00e4r oacceptabelt f\u00f6r m\u00e5nga.<\/p>\n<p>Kontrollm\u00e4tningar har ocks\u00e5 visat att utvecklingen av grafiska milj\u00f6er i Linux har tvingat utvecklarna att g\u00f6ra en rad kompromisser. Vissa anv\u00e4ndare b\u00f6r \u00f6verv\u00e4ga att anv\u00e4nda vanliga f\u00f6nsterhanterare, eftersom de ger en avsev\u00e4rd minskning av ping. Tyv\u00e4rr gick det inte att m\u00e4ta f\u00f6rdr\u00f6jningen f\u00f6r Wayland: programmet Typometer, som jag anv\u00e4nde, skapades f\u00f6r att f\u00f6rhindra det som Wayland \u00e4r avsett att g\u00f6ra - att spionera p\u00e5 andra f\u00f6nster. Jag hoppas att Waylands sammans\u00e4ttning har b\u00e4ttre prestanda \u00e4n X.org och att n\u00e5gon i framtiden hittar ett s\u00e4tt att m\u00e4ta f\u00f6rdr\u00f6jningsniv\u00e5n i denna milj\u00f6.<br \/>\n<br \/>K\u00e4lla: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/itsumma\/blog\/463785\/\">habr.com<\/a><\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u041f\u0430\u0440\u0430 \u0441\u043b\u043e\u0432 \u043e\u0442 \u043d\u0430\u0448\u0435\u0433\u043e translate-\u0431\u044e\u0440\u043e: \u043e\u0431\u044b\u0447\u043d\u043e \u0432\u0441\u0435 \u0441\u0442\u0440\u0435\u043c\u044f\u0442\u0441\u044f \u043f\u0435\u0440\u0435\u0432\u043e\u0434\u0438\u0442\u044c \u0441\u0430\u043c\u044b\u0435 \u0441\u0432\u0435\u0436\u0438\u0435 \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b\u044b \u0438 \u043f\u0443\u0431\u043b\u0438\u043a\u0430\u0446\u0438\u0438, \u0438 \u043c\u044b \u043d\u0435 \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435. \u041d\u043e \u0442\u0435\u0440\u043c\u0438\u043d\u0430\u043b\u044b \u2014 \u044d\u0442\u043e \u043d\u0435 \u0442\u043e, \u0447\u0442\u043e \u043e\u0431\u043d\u043e\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0440\u0430\u0437 \u0432 \u043d\u0435\u0434\u0435\u043b\u044e. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u043c\u044b \u043f\u0435\u0440\u0435\u0432\u0435\u043b\u0438 \u0434\u043b\u044f \u0432\u0430\u0441 \u0441\u0442\u0430\u0442\u044c\u044e \u0410\u043d\u0442\u0443\u0430\u043d\u0430 \u0411\u043e\u043f\u0440\u0435, \u043e\u043f\u0443\u0431\u043b\u0438\u043a\u043e\u0432\u0430\u043d\u043d\u0443\u044e \u0432\u0435\u0441\u043d\u043e\u0439 2018 \u0433\u043e\u0434\u0430: \u043d\u0435\u0441\u043c\u043e\u0442\u0440\u044f \u043d\u0430 \u0441\u043e\u043b\u0438\u0434\u043d\u044b\u0439 \u043f\u043e \u0441\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u043c \u043c\u0435\u0440\u043a\u0430\u043c \u00ab\u0432\u043e\u0437\u0440\u0430\u0441\u0442\u00bb, \u043d\u0430 \u043d\u0430\u0448 \u0432\u0437\u0433\u043b\u044f\u0434, \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b \u0441\u043e\u0432\u0435\u0440\u0448\u0435\u043d\u043d\u043e \u043d\u0435 \u043f\u043e\u0442\u0435\u0440\u044f\u043b [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":27911,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-37222","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-administrirovanie"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.4 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u041f\u0430\u0440\u0430 \u0441\u043b\u043e\u0432 \u043e\u0442 \u043d\u0430\u0448\u0435\u0433\u043e translate-\u0431\u044e\u0440\u043e: \u043e\u0431\u044b\u0447\u043d\u043e \u0432\u0441\u0435 \u0441\u0442\u0440\u0435\u043c\u044f\u0442\u0441\u044f \u043f\u0435\u0440\u0435\u0432\u043e\u0434\u0438\u0442\u044c \u0441\u0430\u043c\u044b\u0435 \u0441\u0432\u0435\u0436\u0438\u0435 \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b\u044b \u0438 \u043f\u0443\u0431\u043b\u0438\u043a\u0430\u0446\u0438\u0438, \u0438 \u043c\u044b \u043d\u0435 \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435. \u041d\u043e \u0442\u0435\u0440\u043c\u0438\u043d\u0430\u043b\u044b \u2014 \u044d\u0442\u043e \u043d\u0435 \u0442\u043e, \u0447\u0442\u043e \u043e\u0431\u043d\u043e\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0440\u0430\u0437 \u0432 \u043d\u0435\u0434\u0435\u043b\u044e.\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/sv\/blog\/administrirovanie\/obzor-emulyatorov-terminala\" \/>\n\t\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.4\" \/>\n\t\t<meta property=\"og:locale\" content=\"sv_SE\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd47\u041e\u0431\u0437\u043e\u0440 \u044d\u043c\u0443\u043b\u044f\u0442\u043e\u0440\u043e\u0432 \u0442\u0435\u0440\u043c\u0438\u043d\u0430\u043b\u0430 | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u041f\u0430\u0440\u0430 \u0441\u043b\u043e\u0432 \u043e\u0442 \u043d\u0430\u0448\u0435\u0433\u043e translate-\u0431\u044e\u0440\u043e: \u043e\u0431\u044b\u0447\u043d\u043e \u0432\u0441\u0435 \u0441\u0442\u0440\u0435\u043c\u044f\u0442\u0441\u044f \u043f\u0435\u0440\u0435\u0432\u043e\u0434\u0438\u0442\u044c \u0441\u0430\u043c\u044b\u0435 \u0441\u0432\u0435\u0436\u0438\u0435 \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b\u044b \u0438 \u043f\u0443\u0431\u043b\u0438\u043a\u0430\u0446\u0438\u0438, \u0438 \u043c\u044b \u043d\u0435 \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435. \u041d\u043e \u0442\u0435\u0440\u043c\u0438\u043d\u0430\u043b\u044b \u2014 \u044d\u0442\u043e \u043d\u0435 \u0442\u043e, \u0447\u0442\u043e \u043e\u0431\u043d\u043e\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0440\u0430\u0437 \u0432 \u043d\u0435\u0434\u0435\u043b\u044e.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/sv\/blog\/administrirovanie\/obzor-emulyatorov-terminala\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2019-10-31T19:16:26+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2019-10-31T19:16:26+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\ud83e\udd47 \u00d6versyn av terminalemulatorer | ProHoster","description":"N\u00e5gra ord fr\u00e5n v\u00e5rt \u00f6vers\u00e4ttningskontor: vanligtvis str\u00e4var alla efter att \u00f6vers\u00e4tta det senaste materialet och publikationerna, och vi \u00e4r inget undantag. Men terminaler \u00e4r inte n\u00e5got som uppdateras varje vecka.","canonical_url":"https:\/\/prohoster.info\/sv\/blog\/administrirovanie\/obzor-emulyatorov-terminala","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"sv_SE","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd47\u041e\u0431\u0437\u043e\u0440 \u044d\u043c\u0443\u043b\u044f\u0442\u043e\u0440\u043e\u0432 \u0442\u0435\u0440\u043c\u0438\u043d\u0430\u043b\u0430 | ProHoster","og:description":"\u041f\u0430\u0440\u0430 \u0441\u043b\u043e\u0432 \u043e\u0442 \u043d\u0430\u0448\u0435\u0433\u043e translate-\u0431\u044e\u0440\u043e: \u043e\u0431\u044b\u0447\u043d\u043e \u0432\u0441\u0435 \u0441\u0442\u0440\u0435\u043c\u044f\u0442\u0441\u044f \u043f\u0435\u0440\u0435\u0432\u043e\u0434\u0438\u0442\u044c \u0441\u0430\u043c\u044b\u0435 \u0441\u0432\u0435\u0436\u0438\u0435 \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b\u044b \u0438 \u043f\u0443\u0431\u043b\u0438\u043a\u0430\u0446\u0438\u0438, \u0438 \u043c\u044b \u043d\u0435 \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435. \u041d\u043e \u0442\u0435\u0440\u043c\u0438\u043d\u0430\u043b\u044b \u2014 \u044d\u0442\u043e \u043d\u0435 \u0442\u043e, \u0447\u0442\u043e \u043e\u0431\u043d\u043e\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0440\u0430\u0437 \u0432 \u043d\u0435\u0434\u0435\u043b\u044e.","og:url":"https:\/\/prohoster.info\/sv\/blog\/administrirovanie\/obzor-emulyatorov-terminala","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2019-10-31T19:16:26+00:00","article:modified_time":"2019-10-31T19:16:26+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"37222","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"seo_analyzer_scan_date":"2026-01-23 16:48:19","breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-03-01 01:31:24","updated":"2026-01-23 16:48:19","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/posts\/37222","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/comments?post=37222"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/posts\/37222\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/media\/27911"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/media?parent=37222"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/categories?post=37222"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/tags?post=37222"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}