Use XFT fonts if available

The silent error `user error (createFontSet)` would break certain
modules (like the prompt) by simply not showing anything.

Pango 1.44 dropped support for FreeType in favor of HarfBuzz, losing
support for traditional BDF/PCF bitmap fonts.  Hence, some distributions
don't ship `xorg-fonts-misc` anymore.

Fixes https://github.com/xmonad/xmonad-contrib/issues/348
This commit is contained in:
Sergey Kish
2020-06-01 00:54:58 +03:00
committed by slotThe
parent cb86dd3c61
commit 619d0819af
5 changed files with 39 additions and 2 deletions

View File

@@ -4,6 +4,16 @@
### Breaking Changes
* All modules that export bitmap fonts as their default
- If xmonad is compiled with XFT support (the default), use an XFT
font instead. The previous default expected an X11 misc font
(PCF), which is not supported in pango 1.44 anymore and thus some
distributions have stopped shipping these.
This fixes the silent `user error (createFontSet)`; this would
break the respective modules.
* `XMonad.Prompt`
- Now `mkComplFunFromList` and `mkComplFunFromList'` take an

View File

@@ -1,4 +1,5 @@
{-# LANGUAGE DeriveDataTypeable #-}
{-# LANGUAGE CPP #-}
-----------------------------------------------------------------------------
-- |
-- Module : XMonad.Actions.ShowText
@@ -74,7 +75,11 @@ data ShowTextConfig =
instance Default ShowTextConfig where
def =
#ifdef XFT
STC { st_font = "xft:monospace-20"
#else
STC { st_font = "-misc-fixed-*-*-*-*-20-*-*-*-*-*-*-*"
#endif
, st_bg = "black"
, st_fg = "white"
}

View File

@@ -1,4 +1,10 @@
{-# LANGUAGE DeriveDataTypeable, FlexibleContexts, FlexibleInstances, MultiParamTypeClasses, PatternGuards, TypeSynonymInstances #-}
{-# LANGUAGE DeriveDataTypeable #-}
{-# LANGUAGE FlexibleContexts #-}
{-# LANGUAGE FlexibleInstances #-}
{-# LANGUAGE MultiParamTypeClasses #-}
{-# LANGUAGE PatternGuards #-}
{-# LANGUAGE TypeSynonymInstances #-}
{-# LANGUAGE CPP #-}
-----------------------------------------------------------------------------
-- |
-- Module : XMonad.Layout.Decoration
@@ -104,7 +110,11 @@ instance Default Theme where
, activeTextColor = "#FFFFFF"
, inactiveTextColor = "#BFBFBF"
, urgentTextColor = "#FF0000"
#ifdef XFT
, fontName = "xft:monospace"
#else
, fontName = "-misc-fixed-*-*-*-*-10-*-*-*-*-*-*-*"
#endif
, decoWidth = 200
, decoHeight = 20
, windowTitleAddons = []

View File

@@ -1,4 +1,7 @@
{-# LANGUAGE PatternGuards, FlexibleInstances, MultiParamTypeClasses #-}
{-# LANGUAGE FlexibleInstances #-}
{-# LANGUAGE MultiParamTypeClasses #-}
{-# LANGUAGE PatternGuards #-}
{-# LANGUAGE CPP #-}
-----------------------------------------------------------------------------
-- |
-- Module : XMonad.Layout.ShowWName
@@ -62,7 +65,11 @@ data SWNConfig =
instance Default SWNConfig where
def =
#ifdef XFT
SWNC { swn_font = "xft:monospace-20"
#else
SWNC { swn_font = "-misc-fixed-*-*-*-*-20-*-*-*-*-*-*-*"
#endif
, swn_bgcolor = "black"
, swn_color = "white"
, swn_fade = 1

View File

@@ -3,6 +3,7 @@
{-# LANGUAGE MultiWayIf #-}
{-# LANGUAGE FlexibleContexts #-}
{-# LANGUAGE ExistentialQuantification #-}
{-# LANGUAGE CPP #-}
-----------------------------------------------------------------------------
-- |
-- Module : XMonad.Prompt
@@ -310,7 +311,11 @@ instance Default XPColor where
instance Default XPConfig where
def =
#ifdef XFT
XPC { font = "xft:monospace-12"
#else
XPC { font = "-misc-fixed-*-*-*-*-12-*-*-*-*-*-*-*"
#endif
, bgColor = bgNormal def
, fgColor = fgNormal def
, bgHLight = bgHighlight def