This is a collection of various Linux system tweaks I've accumulated over the years.
Freetype, since version 2.7 in 2016, enables the v40 interpreter by default, which does less hinting. While more accurate, fonts no longer snap to the pixel grid and appear smudgy. We can enable the old interpreter that has sharper font rendering by using the FREETYPE_PROPERTIES environment variable. Put this in a .sh script within /etc/profile.d to enable globally
export FREETYPE_PROPERTIES="truetype:interpreter-version=35"
The DejaVu and Ubuntu fonts work very well with this setting and are a good choice for your GUI.