DEV Community

Cover image for Compilar Ghostty en Debian
Alejandro Amaral
Alejandro Amaral

Posted on

Compilar Ghostty en Debian

¿Que es Ghostty?

Ghostty es un terminal emulator creado por Mitchell Hashimoto (tal vez lo
conozcan por HashiCorp) cómo proyecto personal. Los puntos más importantes:

  • Es nativo: está diseñado para que sea buildeado nativamente para cada plataforma, usando Swift y AppKit para macOS y Zig con GTK4 para Linux. Esto permite que se integre naturalmente con las funcionalidades del propio sistema operativo, incluyendo atajos de teclado, UI y caracteristicas específicas del OS.
  • Funcionalidades: ofrece features tanto a nivel de terminal (como el protocolo gráfico Kitty, notificaciones, hyperlinks, etc) cómo a nivel de aplicación: pestañas nativas, split screen y drop-down terminal tipo Quake, etc.
  • Rápido: Busca estar al nivel de terminales ultra rápidas cómo Alacritty, para esto se vale de renderizado en la GPU y el lenguaje de programación Zig.

ghostty slide

Prerrequisitos

Ghostty al estar programado en Zig necesita que si o si tengas su compilador instalado en tu máquina. En el sitio oficial recomiendan utilizar Nix cómo ambiente de desarrollo/build oficial, pero la verdad que instalar Zig es muy fácil y, además, ya que está, queda disponible por si tenemos ganas de trastear con el lenguaje más adelante.

Warning "Zig 0.13"
Hay que usar la versión exacta 0.13 de Zig porque de lo contrario va a fallar
la compilación. Intenté con la versión más nueva y falló...

Puedes usar este link para ir la página de descarga de Zig
0.13
o correr este comando:

curl -O 'https://ziglang.org/builds/zig-linux-x86_64-0.14.0-dev.2571+01081cc8e.tar.xz'
Enter fullscreen mode Exit fullscreen mode

Una vez descargado hay que extraer el archivo tar y poner el binario en un directorio que esté dentro del $PATH de tu sistema. En mi caso en particular tengo a ~/.local/bin/ en mi $PATH, entonces voy a usar ese directorio. Si lo quieres tener disponible para todos los usuarios puedes hacer el link simbólico
a /usr/bin/.

En cuanto al directorio donde muevo el binario es porque tengo un repositorio de código fuente
inspirado en FreeBSD src tree donde tengo scripts para mantener y buildear software desde el código fuente. Es un tema para otro post, pero es importante saber para despejar dudas. En tu caso puedes mover los directorios a donde más te guste.

# Extraer archivos
tar -xvf zig-linux-x86_64-0.14.0-dev.2569+30169d1d2.tar.xz

# [Opcional] Mover los archivos extraídos
mv zig-linux-x86_64-0.14.0-dev.2569+30169d1d2.tar.xz ~/jsr/zig/src

# Hacer un link simbólico del binario
ln -s "$HOME/jsr/zig/src/zig" ~/.local/bin/zig
Enter fullscreen mode Exit fullscreen mode

Info "Links simbólicos"
En esta guía utilizo mucho los links simbólicos porque vamos a tener la
ventaja que una vez que esté todo instalado, para actualizar Ghostty sólo va a
ser cuestión de hacer un pull del repositorio y volver a compilar para que
todo se actualice al mismo tiempo.

Realmente no necesita muchos más requisitos instalados. En el caso que estés usando otra distro puedes ver más requisitos en la página oficial. Para Debian con sólo correr el siguiente comando es suficiente.

sudo apt install libgtk-4-dev libadwaita-1-dev git
Enter fullscreen mode Exit fullscreen mode

Ahora sólo queda descargar el repo:

git clone https://github.com/ghostty-org/ghostty.git
Enter fullscreen mode Exit fullscreen mode

Compilación

Llegado a este punto debería ser bastante sencillo compilar Ghostty. Sólo hay
que moverse al directorio del código y buildear

# Moverse al directorio con el código
cd ghostty

# Buildear
zig build -Doptimize=ReleaseFast
Enter fullscreen mode Exit fullscreen mode

Según las características de tu máquina (CPU, RAM, etc) puede tardar unos segundos o varios minutos. Una vez finalizado el proceso, vamos a encontrar los binarios en el directorio zig-out/bin/ghostty. También es necesario saber que hay un directorio
llamado dist que va a ser importante en el siguiente paso. Por lo pronto la estructura quedaría así:

ghostty
├── dist
│  ├── linux
│  ├── macos
│  └── windows
…
└── zig-out
   ├── bin
   └── share
Enter fullscreen mode Exit fullscreen mode

Instalación

Si todo funcionó correctamente ahora sólo queda la instalación, que es linkear el binario a un directorio dentro del $PATH de tu sistema y mover los archivos dist/linux/*.desktop para que puedas ver los íconos y aparezca en el launcher de tu distro.

# Instalar Ghosty
ln -s "$HOME/jsr/ghosty/src/zig-out/bin/ghostty" ~/.local/bin

# Instalar los archivos desktop
ln -s "$HOME/jsr/ghostty/src/dist/linux/ghostty.desktop" ~/.local/share/applications
ln -s "$HOME/jsr/ghostty/src/dist/linux/ghostty_dolphin.desktop" ~/.local/share/applications
Enter fullscreen mode Exit fullscreen mode

Finalmente para configurar la terminal hay que crear el archivo de
configuración, y es tan simple cómo ejecutar lo siguiente

# Crear el directorio si no existe
mkdir -p ~/.config/ghostty/

# Crear el archivo de configuración si no existe
touch ~/.config/ghostty/config
Enter fullscreen mode Exit fullscreen mode

Una vez hecho eso, a configurar Ghostty a tu gusto. Aquí está la
documentación con todas las opciones disponibles.

Demo y configuración

Dejo algunos videos para ver de qué se trata esta nueva terminal y cómo configurarla. Y eso es todo, Happy hacking!

Mi configuración

font-family = JetBrainsMono NF Medium
font-family-italic = JetBrainsMono NF Medium Italic
font-family-bold = JetBrainsMono NF Bold
font-family-bold-italic = JetBrainsMono NF Bold Italic
font-size = 10.2
theme = tokyonight
adjust-cell-height = 6
window-padding-x = 0
window-padding-y = 0
window-decoration = false
adjust-cursor-thickness = 2 
adjust-cursor-height = 6 
cursor-color = #00C2FF
Enter fullscreen mode Exit fullscreen mode

ghostty config

Top comments (0)