Příběh o tom, jak jsem přešel z terminálového emulátoru Konsole na Alacritty.
Historické okénko
Prakticky od doby, kdy jsem začal používat Linux (druhá polovina roku 2005), jsem používal terminálový emulátor Konsole. Důvod byl historický a poměrně prozaický: Začínal jsem s desktopovým prostředím KDE, u kterého byl tento emulátor výchozí. Mimo něj jsem používal i spoustu dalších aplikací z KDE, jako je např. editor Kate (ze kterého jsem v roce 2009 přešel na Vim), "vysouvací" terminál Yakuake, správce souborů Krusader, hudební přehrávač Amarok a další. Postupem času jsem z drtivé většiny těchto aplikací přešel na jiné, ale Konsole a Yakuake jsem si ponechal, protože jsem s nimi byl spokojený. Až do teď.
Proč jsem začal hledat náhradu za Konsole?
Dá se říct, že důvody se začaly postupně hromadit, až se našel jeden, který byl dostatečně silný, abych začal hledat náhradu za Konsole. Jednalo se o následující důvody:
- Změna/bug týkající se slučovní fontů. Po jedné z aktualizací systému jsem přešel na poslední verzi Konsole 24.02, od které mi přestala fungovat má konfigurace fontů. Konkrétně v době psaní tohoto příspěvku používám tuto konfiguraci, kdy výchozí font mám DejaVu se záložním fontem DejaVu Nerd Font pro dodatečné ikony (plugin web-devicosn pro editor Neovim, který aktuálně používám). No a od verze Konsole 24.02 přestal fungovat "propad" (anglicky fallback) na ikony ze záložního fontu. Vše je popsáno v tomto bug reportu. Nechci tady zabíhat do detailů, takže koho by to zajímalo, tak si přečtěte onen bug report. Přejít na Nerd Font jako výchozí font jsem nemohl z technických důvodů (nepodařilo se mi přijít na to, aby fonty vypadaly stejně, jako při výchozím použití DejaVu). Taktéž se mi nepodařilo přijít na způsob, jak to obejít. Patchovat zdrojový kód jsem nechtěl, a stejně tak jsem nechtěl čekat, až (či zda vůbec) se původní chování navrátí.
- Občasné změny výchozího profilu. Používám vlastní profil s nastavením Konsole, fontu, barev atd. Občas se mi po spuštění Konsole stalo, že se mi profil resetoval na výchozí či došlo k tomu, že jsem v Konsole měl profilů několik i přesto, že jsem používal pouze jeden. Toto mě iritovalo, ale teda ne natolik, abych hledal náhradu.
- Nemožnost konfigurace Konsole přes textový soubor. Technicky vzato Konsole svoji konfiguraci ukládá do textového souboru, ale rozhodně to není tak, že by tento emulátor šlo konfigurovat čistě textově. Komplikuje to jednak samotné nastavování (mám rád, když mají programy textový konfigurační soubor) a jednak sdílení konfigurace mezi systémy (domácí počítač versus pracovní počítač).
- Závislost na KDE. Tak nějak jsem počítal s tím, že jednou nastane čas, kdy mě závislost na KDE bude zbytečně omezovat. I kdybych nepřešel na jiný terminálový emulátor teď, tak podle mě by k tomu stejně jednou došlo.
První důvod mě naštval natolik, že jsem prakticky během jednoho dne přešel na Alacritty.
Proč zrovna Alacritty?
Když jsem se rozhodoval, který terminálový emulátor zvolit, tak jsem měl následující požadavky:
- Open-source emulátor běžící na Linuxu. Proprietární emulátor nechci. Zároveň mi stačí, že poběží na Linuxu, ale podpora dalších operačních systémů by byl příjemný bonus.
- Textový konfigurační soubor. Aby bylo možné emulátor plně konfigurovat přes textový soubor, který bych si mohl verzovat a sdílet mezi systémy.
- Dostatečná rozšířenost. Nechtěl jsem se dostat do stavu, kdy si zvolím nějaký obskurní emulátor, který se časem přestane vyvíjet. Vím, že rozšířenost mi to nezaručí, ale o vhodnějším indikátoru nevím.
- Dostatečné možnosti nastavení, především fontu a zobrazení. Chci mít možnost si emulátor nastavit co nejblíže tomu, na co jsem byl doposud zvyklý.
- Kompatibilita s tmuxem, Neovimem apod. Mezi hlavní nástroje, které v terminálu používám, jsou tmux a Neovim. Potřebuji, aby s nimi byl emulátor kompatibilní.
Po krátkém hledání a experimentování jsem se rozhodl pro Alacritty. Je open-source, běží na Linuxu (ale i na macOS a Windows), má textový konfigurační soubor, je rozšířený (viděl jsem ho často zmiňovaný, na GitHubu je v samostatné organizaci a v době psaní tohoto článku má repozitář projektu přes 50 tisíc hvězdiček), má dostatečné možnosti nastavení (včetně fontu a zobrazení) a je kompatibilní s tmuxem a Neovimem. Prakticky během dvou hodin jsem měl zprovozněnou náhradu za Konsole :-).
Takto vypadá Alacritty v mojí konfiguraci (včetně bashe, tmuxu a Neovimu):
Pro zajímavost, můj aktuální konfigurační soubor pro Alacritty je k dispozici zde.
Proč ne Kitty?
Jedním z dalších emulátorů, které jsem zvažoval, byl Kitty. I přes to, že má podobné vlastnosti jako Alacritty, jsem se nakonec rozhodl pro Alacritty. Důvody byly především tyto dva:
- Autor projektu se staví proti terminálovým multiplexerům (např. tmux).
- Autor projektu tvrdošíjně odmítá implementovat podporu pro "render bold text in bright color" (nepřekládám), viz toto a toto issue na GitHubu. A to i přesto, že to podporuje spoustu jiných terminálových emulátorů a chce to spoustu lidí (samozřejmě jako jako možnost konfigurace, ne jako výchozí nastavení).
Po tom, co jsem si prošel dokumentaci a issues na GitHubu, tak jsem neměl z Kity dobrý pocit právě kvůli postojům autora projektu.
Co s Yakuake?
Podařilo se mi najít i náhradu za Yakuake :-). Konkrétně s pomocí výborného projektu tdrop jsem si byl schopen nastavit i Alacritty ve formě "vysouvacího" terminálu, který se chová podobně jako Yakuake. Tím pádem jsem mohl odstranit další závislost na KDE.
Pokud by vás zajímalo, jak jsem si tdrop nastavil, tak v konfiguraci mého správce oken (Fluxbox) mám nastavenou klávesovou zkratku Alt-F1 na spuštění scriptu toggle-terminal-dropdown.sh, ve kterém lze vidět, s jakými parametry tdrop spouštím.