After switching to arch linux as my daily driver I came across a new problem: I couldn't see emojis!
There are some emoji fonts you can install and setup. One of them is noto-fonts-emoji
. I decided to write a small script to automate the setup of the font and explain the steps below:
#!/bin/sh
set -e
if [[ $(id -u) -ne 0 ]] ; then echo "Please run as root" ; exit 1 ; fi
echo "Setting up Noto Emoji font..."
# 1 - install noto-fonts-emoji package
pacman -S noto-fonts-emoji --needed
# pacman -S powerline-fonts --needed
echo "Recommended system font: inconsolata regular (ttf-inconsolata or powerline-fonts)"
# 2 - add font config to /etc/fonts/conf.d/01-notosans.conf
echo "<?xml version="1.0"?>
<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
<fontconfig>
<alias>
<family>sans-serif</family>
<prefer>
<family>Noto Sans</family>
<family>Noto Color Emoji</family>
<family>Noto Emoji</family>
<family>DejaVu Sans</family>
</prefer>
</alias>
<alias>
<family>serif</family>
<prefer>
<family>Noto Serif</family>
<family>Noto Color Emoji</family>
<family>Noto Emoji</family>
<family>DejaVu Serif</family>
</prefer>
</alias>
<alias>
<family>monospace</family>
<prefer>
<family>Noto Mono</family>
<family>Noto Color Emoji</family>
<family>Noto Emoji</family>
<family>DejaVu Sans Mono</family>
</prefer>
</alias>
</fontconfig>
" > /etc/fonts/local.conf
# 3 - update font cache via fc-cache
fc-cache
echo "Noto Emoji Font installed! You may need to restart applications like chrome. If chrome displays no symbols or no letters, your default font contains emojis."
echo "consider inconsolata regular"
The first part is to install the package noto-fonts-emoji
. The parameter --needed
is used to only download and install the package, if it's not already installed.
The second part is just creating a config file and saving it.
The third part with fc-cache
is the refresh of the font cache.
I recommend Inconsolata Nerd Font Mono Regular
or any other font without emojis as system font. If you see numbers as emojis in your Browser, it is likely that your current system font contains emojis itself (DejaVu is one example) and you need to switch to a different font so you get the colored emojis.
Update 20.02.2020
There is a much easier way and I edited this post to contain the new information. Before there was a bit trial and error to find out the number for the font config file. With the new way, it's just one file.
Top comments (17)
Great post!
But I noticed that
<?xml version="1.0"?>
evaluates to<?xml version=1.0?>
(in zsh) which causes a syntax error when running fc-cache.The same thing happens for
<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
. Escaping the double quotes fixes this.Thanks Tim, good point! Maybe I should mention that in the post :)
I believe changing double quotes to single quotes would avoid the error from coming up. Other than that, the script is great! I've been trying to do smth like this for some time now, so thank you for writing this!
Thanks for this!
I was able to get it to work by putting the local.conf file into ~/.fonts and running
fc-cache
without sudo. The only need for sudo is to install the package. Of course putting the file into ~/.fonts will only work for the local user, I just try to avoid sudo when I can.Do you know how I could get this script working with
Twitter Emoji Color
(akatwemoji
)?I replaced all lines with
<family>Noto Color Emoji</family>
with<family>Twitter Color Emoji</family>
, but it didn't work.Go into whatever your font management application is for your DE, and then search for the font's name. Whatever name shows up in the font manager is the name that you have to use in the section. It's how I found out to use JoyPixels for my emojis.
It works better then ArchWiki itself.
However, it destroyed my Conkies. I have to tweak them a bit.
Lastly,
> /etc/fonts/local.conf
is dangerous. You should either use a text editor or backup first.I would also consider using
fc-cache -v
, instead offc-cache
.Actually, only ALMOST perfect.
How do i revert this? My fonts seems weird now,with a lot of space between each word :/
The easiest way would be if you have a backup of your
/etc/fonts/local.conf
file or didn't had this file at all before!In that case, either restore the backup file or delete the
/etc/fonts/local.conf
file completely and runfc-cache
.In case you have no backup and had customizations in that file before, open it with an editor and remove all lines containing the emoji font (in this case e.g.
Noto...
). Save and runfc-cache
.Oh, thanks!
you're welcome ☺️ Did it work?
Worked perfectly!
Nice 👍
worked perfectly!
Thanks a lot! Helped on Debian Bookworm.
I little tweaked it for my own needs and it works perfectly.
Now, KDE shows emojis within the Clipboard Manager. 👍
Emoji