# ibus 1.5.34 — el bus de métodos de entrada (teclados de chino/japonés/coreano, emoji, Unicode). # De acá sale el typelib `IBus-1.0`. # # POR QUÉ ENTRA, y es el caso más claro de la tanda: gnome-shell lo importa desde JavaScript **sin # condicional** (`js/misc/dependencies.js`: `import 'gi://IBus?version=1.0'`), aunque el usuario no # use ningún método de entrada. El panel de teclado del shell habla con ibus siempre. Dep de RUNTIME # invisible al grafo de build — el mismo patrón que AccountsService, Gdm, Geoclue y GWeather. # # LO QUE SE CONSTRUYE ES LA LIBRERÍA Y EL BUS, NO EL ESCRITORIO DE ibus. Casi todos los # `--disable-*` de abajo apagan piezas que dependen de cosas que esta distro no tiene y que el shell # no consulta: # --disable-gtk2/3/4 los módulos de método de entrada para GTK. GTK3 no está en el # corpus (decisión de X11-al-tacho) y el de GTK4 no hace falta: # GTK4 habla `text-input` de Wayland directo con el compositor. # ⚠ OJO CON EL TEXTO DE AYUDA DE UPSTREAM: dice `--enable-gtk4` # y `--enable-wayland`, lo que sugiere que están APAGADAS por # defecto. No lo están: `enable_gtk4=yes` y `enable_wayland=yes` # son los defaults reales (configure.ac:277 y :299). Sin # `--disable-gtk4` explícito el configure corta pidiendo gtk4. # La ayuda miente; el default manda. # # ⚠ `--enable-wayland` VA PRENDIDA, y no por gusto. Empezó apagada —el módulo Wayland es para que el # demonio de ibus hable con un compositor, y el shell implementa `text-input` por su cuenta— pero con # `--disable-wayland` el build MUERE igual: `tools/main.c` incluye `` y llama # `wl_display_connect`/`wl_display_disconnect` **sin ningún `#ifdef`** (:1260), mientras que el # `WAYLAND_LIBS` que resolvería esos símbolos sólo se agrega si la opción está encendida. Es un bug # de upstream en su propia configuración «sin Wayland». Prenderla es más honesto que parchear el # `tools/`: esta distro ES Wayland. Arrastra `libxkbcommon`, que su PKG_CHECK pide junto a # `wayland-client`. # --disable-xim el servidor XIM. Es X11 puro. # --disable-setup `ibus-setup`, una GUI en Python+GTK3. # --disable-python2 / --disable-python-library / --disable-dbus-python-check # bindings de Python 2. No hay Python 2 y no va a haber. # --disable-dconf --enable-memconf ibus guarda su configuración en dconf por defecto; dconf no # está en el corpus (ya lo esquivó gdm por la misma razón). # `memconf` es el backend EN MEMORIA que trae upstream para # exactamente este caso: la config no persiste entre sesiones, # que para un escritorio sin métodos de entrada configurados es # la diferencia entre nada y nada. # --disable-systemd-services acá PID1 es arje-zero. # --disable-appindicator pide dbusmenu-glib/dbusmenu-gtk3 (bandeja legacy de Ubuntu). # --disable-libnotify sirve para que el DEMONIO avise «se cambió el método de # entrada» por notificación de escritorio. libnotify no está en # el corpus, y las notificaciones del escritorio las sirve el # propio gnome-shell. # --disable-engine el motor `simple` (mapas de teclado de teclas muertas). Va # junto con emoji-dict: son datos y lógica de método de entrada, # no la librería. # --disable-emoji-dict el diccionario de emoji se compila desde los XML de CLDR y # `/usr/share/unicode/emoji`, datos que no están en el corpus. # Se pierde el selector de emoji de ibus, no el typelib. # --disable-unicode-dict su hermano: el índice de nombres de caracteres se compila desde # los ficheros UCD (`NamesList.txt`, `Blocks.txt` de # `/usr/share/unicode/ucd`). Apagar emoji-dict NO lo apaga —son # dos opciones distintas, y el configure aborta por la segunda # después de pasar la primera. # --disable-tests --disable-gtk-doc --disable-vala # # Las comprobaciones de X11/XFixes y de libevdev/libudev son BLANDAS en el configure.ac # (:778 y :785 no abortan, sólo definen un condicional), así que no hace falta apagarlas ni # satisfacerlas: se resuelven en "no" solas. # # ══ LA DEP QUE NO SE VE VENIR: `x11-compose-data` ══════════════════════════════════════════════ # ibus COMPILA la tabla de teclas muertas de X11 dentro de libibus. `gen-internal-compose-table` # (src/gencomposetable.c:70) lee un fichero `Compose` en tiempo de build y lo convierte en un # GResource que entra en `ibusresources.c`; ese paso es INCONDICIONAL en su Makefile.am:310 y no hay # `--disable-` que lo evite. Sin datos el build muere con # `Failed to open file "/X11/locale/en/Compose"`. # # Los datos viven en el tarball de libX11 —por historia, no por necesidad técnica— así que hay una # receta aparte, `x11-compose-data`, que extrae SÓLO los ficheros de locale y no compila una línea # de X11. Es la tensión de un escritorio Wayland-only con un mundo Unix cuya tabla de composición # sigue publicándose dentro de X11, y queda escrita ahí. # # También pide `iso-codes` (nombres de idioma para el selector de método de entrada), que ya estaba. # # ISLA DINÁMICA: el typelib nombra `libibus-1.0.so.5` y gjs la dlopea. name = "ibus" version = "1.5.34" license = "LGPL-2.1" [source] tarball = "https://github.com/ibus/ibus/releases/download/1.5.34/ibus-1.5.34.tar.gz" sha256 = "12a72210ce5250f8a66df562a75e034e67b2bce74c4df2983dc86d1154894943" [build] compiler = "zig-cc" target = "x86_64-linux-musl" link = "dynamic" [build.phases] configure = ''' set -e PKG_CONFIG_PATH=/usr/lib/pkgconfig ./configure --prefix=/usr \ --enable-introspection --enable-memconf \ --disable-gtk2 --disable-gtk3 --disable-gtk4 --enable-wayland \ --disable-xim --disable-dconf \ --disable-setup --disable-python2 --disable-python-library \ --disable-dbus-python-check --disable-systemd-services \ --disable-appindicator --disable-libnotify --disable-engine \ --disable-emoji-dict --disable-unicode-dict --disable-tests \ --disable-gtk-doc --disable-vala --disable-nls ''' compile = "make" install = "DESTDIR=/out make install" [deps] build = ["make", "pkgconf", "python3", "py3-setuptools", "gobject-introspection", "gi-foreign-girs", "glib", "glib-introspected", "iso-codes", "x11-compose-data", "wayland", "wayland-protocols", "libxkbcommon", "dbus-shared", "libffi", "pcre2", "zlib-shared", "expat"]