Colored Characters and Emoji in Dwm

Nestero
Bismillahirrahmanirrahim

Dwm, dmenu atau st crash ketika render karakter berwarna ?

Untuk pengguna dwm yang mengalami crash ketika membuat status menggunakan karakter yang berwarna, atau ketika menulis catatan menggunakan vim/nvim dengan st dan menggunkan color emoji. Tenang ada beberapa solusi untuk mengatasinya antara lain :

  • Menginstall patch bgra dari libxft
  • Membuat st tidak merender karakter yang berwarna

Menginstall patch bgra

Untuk menginstall patch bgra install terlebih dahulu package xorg-util-macros, selanjutnya :

$ git clone https://github.com/uditkarode/libxft-bgra
$ cd libxft-bgra
$ sh autogen.sh --sysconfdir=/etc --prefix=/usr --mandir=/usr/share/man
$ sudo make install

*) Samakan versi libxft yang terpasang pada file configure.ac sebelum melakukan patch.

# This is the package version number, not the shared library
# version.  This version number will be substituted into Xft.h
# Please bump the minor library number at each release as well.
#
AC_INIT([libXft], [2.3.4],
        [https://gitlab.freedesktop.org/xorg/lib/libXft/issues], [libXft])
AC_CONFIG_SRCDIR([Makefile.am])
AC_CONFIG_HEADERS([config.h])

Merubah file drw.c pada dwm dan dmenu

Setelah patch terinstall kita perlu mengubah file drw.c untuk merender karakter yang berwarna, hapus beberapa baris berikut :

/* Do not allow using color fonts. This is a workaround for a BadLength
 * error from Xft with color glyphs. Modelled on the Xterm workaround. See
 * https://bugzilla.redhat.com/show_bug.cgi?id=1498269
 * https://lists.suckless.org/dev/1701/30932.html
 * https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=916349
 * and lots more all over the internet.
 */
FcBool iscol;
if(FcPatternGetBool(xfont->pattern, FC_COLOR, 0, &iscol) == FcResultMatch && iscol) {
	XftFontClose(drw->dpy, xfont);
	return NULL;
}

Terakhir install ulang kembali dwm atau dmenu dengan menggunakan :

$ sudo make clean install

Merubah file x.c pada st

Untuk yang tidak mau menggunakan patch bgra, cukup merubah beberapa baris di dalam file x.c pada st agar st tidak crash ketika menjumpai karakter yang berwarna.

Ubah baris berikut:

XftDrawGlyphFontSpec(xw.draw, fg, specs, len);

Menjadi :

FcBool b = FcFalse;
FcPatternGetBool(specs->font->pattern, FC_COLOR, 0, &b);
if (!b) {
    XftDrawGlyphFontSpec(xw.draw, fg, specs, len);
}

Terakhir install ulang kembali st dengan menggunakan :

$ sudo make clean install

Tags:

Referensi:

Imam Az-Zuhri rahimahullah mengatakan :

Sesungguhnya yang menyebabkan ilmu hilang adalah lupa dan tidak mengulanginya.

"Sesungguhnya yang menyebabkan ilmu hilang adalah lupa dan tidak mengulanginya."

Catatan Terkait :

#semuabisaonline dengan Jetdino

Jetdino

comments powered by Disqus
Catatan Nestero

Nestero

🔥 GNU/Linux Enthusiast 🔥
🌟 Void Linux User 🌟

Catatan Terbaru :

Steam on Void

Nestero
Catatan Nestero

Pyblog

Nestero
Catatan Nestero

Enable Virtual Cam On OBS

Nestero
Catatan Nestero