How to run a X11 only app with user defined font size and font style ?

Is it possible to run different X11 apps with different font size and style ? e.g. Run xclipboard with font FreeSans 14px and run xman with Roboto 12px .

Is there any environment variable available to override font settings of GUI apps ? like

env FONT_SIZE="16px" xterm


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.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.