Classic X11 applications
For classic X11 applications (such as xclipboard, xman, xterm, etc.), yes, there is a way, through X resources. X resources settings are conventionally stored in a file called ~/.Xresources
which is loaded by the command xrdb -merge ~/.Xresources
during the startup of your session (not all environments load it by default though).
You can find examples of X resource settings in the app-defaults
directory (the exact location can vary: /usr/share/X11/app-defaults
, /usr/X11/lib/app-defaults
, /etc/X11/app-defaults
, …). These are the system-wide settings for each application. You can also run appres
to list the user-defined settings loaded in the server plus the system-wide settings in app-defaults
, e.g. appres Xman
. Note that app-defaults
files and appres
output omits the class name, but in your own configuration file, you should start every setting with a class or instance name, otherwise the setting will apply to every application.
A resource setting consists of a qualified widget component name and a value, e.g. XClipboard.form.text.textSink.font: fixed
. See .Xresources settings in effect and the manual for more information on resource identifiers. Note that X resources are case sensitive. Conventionally, class names start with an uppercase letter, and instance names start with a lowercase letter. You can use the wildcard *
to stand for any number of components, e.g. XClipboard*font
would set all fonts in XClipboard.
Note that classic X11 applications use server-side text rendering. They do not have the same fonts available as applications that use client-side rendering with fonts managed by fontconfig. You can use xfontsel
to see what fonts are available server-side. X11 fonts use a 14-part naming scheme encoding the font, size, boldness, etc.; see the manual for detail.
Most classic X11 applications support resource settings on the command line, with arguments like -xrm '*text*font: fixed'
, as well as some shortcuts such as -font fixed
to set the main font. Xterm supports those, and in addition supports client-side rendering, which can be set through resources or through the command line argument -fa
(see the manual for details).
GTK applications
The GTK font is normally set by the theme and can be overridden in ~.gtkrc
.
gtk-font-name = "Roboto 12"
You can run an application with an alternate gtkrc file or alternate theme through environment variables. With the older Gtk2:
GTK2_RC_FILES=/path/to/alternate/gtkrc my-gtk2-app
The newer Gtk3 is expectedly less configurable, but you can use an alternate theme:
GTK_THEME=/path/to/alternate/theme.css my-gtk3-app
You can also look for application-specific settings with gconf-editor (GTK 2) or dconf-editor (GTK 3) or gsettings. I don't think it's common for GTK applications to have specific font settings though.