Colored Characters and Emoji in Dwm
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:
* https://github.com/uditkarode/libxft-bgra
* http://www.0xdde.xyz/blog/dwm_color_emoticons.html
* https://github.com/LukeSmithxyz/voidrice/issues/284#issuecomment-534297661
Imam Az-Zuhri rahimahullah mengatakan :
"Sesungguhnya yang menyebabkan ilmu hilang adalah lupa dan tidak mengulanginya."
Catatan Terkait :
#semuabisaonline dengan Jetdino
Nestero
🔥 GNU/Linux Enthusiast 🔥
🌟 Void Linux User 🌟