Alacritty
Alacritty ist ein in Rust geschriebener Terminalemulator der sich umfangreich konfigurieren lässt und viele moderne Funktionen unterstützt.
Installation
Das Programm ist als
alacritty
in extra
verfügbar, und kann von dort
mittels Pacman
installiert werden.
Konfiguration
Alacrity sucht in dieser Reihenfolge nach den Konfigurationsdateien. Die Konfiguration von Alacritty wird über TOML durchgeführt. Sobald eine der Dateien geändert wird, aktualisieren sich laufende Alacritty-Instanzen automatisch.
$XDG_CONFIG_HOME/alacritty/alacritty.toml
$XDG_CONFIG_HOME/alacritty.toml
$HOME/.config/alacritty/alacritty.toml
$HOME/.alacritty.toml
Aufgrund des hohen Konfigurationsumfangs sei an dieser Stelle nur auf einige Optionen eingegangen.
Fenstergröße und Schriftarten
Die Schriftgröße lässt sich Temporär mittels Strg + +/− größer/kleiner machen, mittels Strg + 0 wird die Ursprungsgröße wieder hergestellt.
Die Standardschriftgröße lässt sich, wie die Schriftart, per Konfiguration setzen. Zusätzlich lassen sich auch diverse Schriftstile setzen. Die Schriften müssen nicht vom gleichen Typ sein, sollten aber Monospace-Schriftarten sein, da proportionale Schriften sehr hässlich gerendert werden.
$XDG_CONFIG_HOME/alacritty/alacritty.toml
[font] size = 14 normal = { family = 'DejaVu Sans Mono', style = 'Regular' } bold = { family = 'F25 Bank Printer', style = 'Bold' } italic = { family = 'Nimbus Mono PS', style = 'Italic' } bold_italic = { family = 'Source Code Pro Black', style = 'Italic' }
Wenn man es einheitlich haben will, kann man auch einfach nur eine einzelne Schriftart definieren, diese wird dann von Alacritty automatisch für die verschiedenen Stile erweitert.
$XDG_CONFIG_HOME/alacritty/alacritty.toml
[font] size = 14 normal = { family = 'DejaVu Sans Mono' }
Die Schriftart muss für die verschiedenen Schriftstile ausgelegt sein, ansonsten wird sie unabhängig des angefragten Stils immer einheitlich dargestellt.
Terminalfarben
Die Farben die Alacritty zur Darstellung benutzen soll, lassen sich über drei abschnitte Konfigurieren
$XDG_CONFIG_HOME/alacritty/alacritty.toml
[colors.primary] foreground = '#d3d7cf' background = '#2e3436' [colors.normal] black = '#2e2e34' red = '#cc0000' green = '#4e9a06' yellow = '#c4a000' blue = '#3465a4' magenta = '#75507b' cyan = '#06989a' white = '#d3d7cf' [colors.bright] black = '#555753' red = '#ef2929' green = '#8ae234' yellow = '#fce94f' blue = '#729fcf' magenta = '#ad7fa8' cyan = '#34e2e2' white = '#eeeeec'
Mit diesem Set wird ein dunkles Theme basierend auf den Tango-Farben definiert.
Es besteht zudem die Möglichkeit, Themes separat von der Konfiguration zu erstellen, und dann zu importieren.
[general] import = [ "/pfad/zum/theme.toml" ]
Dateilinks öffnen (Hints)
Standardmäßig lassen sich in Alacritty nur Weblinks öffnen, diese Funktionalität lässt sich aber leicht konfigurierbar basierend auf regulären Ausdrücken durch so genannte „Hints“ auf beliebige Strings erweitern. Hierzu werden beliebig viele Abschnitte für die jeweilige Hint-Konfiguration hinzugefügt. Weblinks werden ohne weitere Konfiguration mittels Strg + ⇧ Shift und Mausklick links geöffnet.
$XDG_CONFIG_HOME/alacritty/alacritty.toml
[[hints.enabled]] regex = "[^ ]+\\.jpe?g" command = { program = "imv" } mouse = { enabled = true, mods = "Control|Shift" } [[hints.enabled]] regex = "[^ ]+\\.(mp4|webm|mkv)" command = { program = "mpv" } mouse = { enabled = true, mods = "Control|Shift" }
Dieses Beispiel erfasst einers Strings die auf eine JPEG-Bilddatei hindeuten (.jpg
oder .jpeg
), und weist diesen das Programm imv, bzw mpv zu, sowie andererseits alle Strings die auf eine Videodatei mit den Endungen .mp4
, .webm
, oder .mkv
hindeuten.
Durch die Konfiguration in mouse = {}
lassen sich dadurch diese Dateien genau so wie Links öffnen. Alacritty übergibt dem angegebenen Programm automatisch den Kompletten aktuellen Pfad, sowie den String auf den der reguläre Ausdruck zutrifft.
Die regulären Ausdrücke sind dem beispielhaften Charakter geschuldet sehr kurz, und erfassen nur Zeichenketten, die am Zeilenanfang stehen oder mit einem Leerzeichen beginnen und auf die jeweilige angegebene Endung enden.
Troubleshooting
Wenn Alacritty nicht vernünftig laden kann, weil in der Konfiguration ein Fehler besteht, so wird eine Meldung am unteren Fensterrand aller geöffneter Alacritty-Fenster ausgegeben, diese ist dabei entweder eine Warnung, oder eine Fehlermeldung. In beiden Fällen wird eine temporäre Logdatei referenziert, die man sich ansehen kann.
Zudem wird in der Meldung beschrieben, was genau das Problem ist. Im Falle eines Fehlers öffnen sich neue Fenster mit der Standardkonfiguration und zeigen weiterhin die Meldung an.
Debugging ohne konkrete Meldung
Um vermutete Probleme mit der Konfiguration auszuschließen, die keine Meldung auslösen, kann man Alacritty anweisen, eine nicht existente Konfigurationsdatei zu laden. In diesem Fall wird dann die Standardkonfiguration benutzt.
alacritty --config-file=/dev/null
Auch kann man Alacritty anweisen, beim starten erweitere Informationen auszugeben. Dies geschieht den Parameter -v
. Diesen kann man bis zu dreimal angeben, um schrittweise detailliertere Informationen zu erhalten.
alacritty -vvv
Created log file at "/tmp/Alacritty-33735.log" [0.000000761s] [INFO ] [alacritty] Welcome to Alacritty [0.000026749s] [INFO ] [alacritty] Version 0.15.0 (53395536) [0.000034666s] [INFO ] [alacritty] Running on Wayland [0.000227330s] [INFO ] [alacritty] Configuration files loaded from: "/home/USERNAME/.config/alacritty/alacritty.toml" [0.021397213s] [INFO ] [alacritty] Using EGL 1.5 [0.021433471s] [DEBUG] [alacritty] Picked GL Config: buffer_type: Some(Rgb { r_size: 8, g_size: 8, b_size: 8 }) alpha_size: 8 num_samples: 0 hardware_accelerated: true supports_transparency: Some(true) config_api: Api(OPENGL | GLES1 | GLES2 | GLES3) srgb_capable: true [0.026852407s] [INFO ] [alacritty] Window scale factor: 1 [viele weitere Ablaufmeldungen]
Diese Informationen kann man dann für die Fehleranalyse oder das Erstellen eines Bugreports benutzen
Remote-Verbindungen
Es kann beim Verbinden zu externen Systemen (zum Beispiel per SSH) passieren, dass die Gegenstelle die nötigen Terminfo-Angaben nicht hat, und daher nicht korrekt antwortet oder Anfragen fehlinterpretiert. In diesem Fall kann man entweder die notwendigen Informationen an die Gegenstelle übertragen, oder Alacritty anweisen, sich als ein anderes, eventuell (besser) unterstütztes, Terminal auszugeben.
Entweder der Gegenstelle die nötigen Terminfo-Daten übermitteln …
infocmp | ssh user@host 'tic -x /dev/stdin'
… oder Alacritty anweisen, sich zum Beispiel als xterm mit 256-Farben-Unterstützung auszugeben:
$XDG_CONFIG_HOME/alacritty/alacritty.toml
[env] TERM = "xterm-256color"
Es ist ratsam, in beiden Fällen alle interaktiven Verbindungen zur Gegenstelle zu trennen und sich neu einzuwählen.