diff --git a/src/x.c b/src/x.c index dbb074a..190337d 100644 --- a/src/x.c +++ b/src/x.c @@ -6,6 +6,7 @@ #include #include #include +#include #ifdef XINERAMA #include #include @@ -136,6 +137,28 @@ static color_t x_get_separator_color(colored_layout *cl, colored_layout *cl_next } } +static void set_dpi_value() +{ + double dpi = 0.0; + XrmInitialize(); + char * xRMS = XResourceManagerString(xctx.dpy); + + if ( xRMS != NULL ) { + XrmDatabase xDB = XrmGetStringDatabase(xRMS); + char * xrmType; + XrmValue xrmValue; + + if ( XrmGetResource(xDB, "Xft.dpi", NULL, &xrmType, &xrmValue)) + dpi = strtod(xrmValue.addr, NULL); + + } + + if (dpi > 0.0) { + PangoFontMap *font_map = pango_cairo_font_map_get_default(); + pango_cairo_font_map_set_resolution((PangoCairoFontMap *) font_map, dpi); + } +} + static void x_cairo_setup(void) { cairo_ctx.surface = cairo_xlib_surface_create(xctx.dpy, @@ -143,6 +166,8 @@ static void x_cairo_setup(void) cairo_ctx.context = cairo_create(cairo_ctx.surface); + set_dpi_value(); + cairo_ctx.desc = pango_font_description_from_string(settings.font); }