st-cyclefonts-0.8.4.diff (2253B)
1 From 9262cecf21a3a2fcf5f5c0f7dcc872fdc5435ca1 Mon Sep 17 00:00:00 2001 2 From: Miles Alan <m@milesalan.com> 3 Date: Mon, 7 Dec 2020 21:16:37 -0600 4 Subject: [PATCH] cyclefont: Add keybinding to cycle between multiple different 5 fonts 6 7 --- 8 config.def.h | 8 +++++++- 9 x.c | 17 +++++++++++++++-- 10 2 files changed, 22 insertions(+), 3 deletions(-) 11 12 diff --git a/config.def.h b/config.def.h 13 index 6f05dce..5cd506c 100644 14 --- a/config.def.h 15 +++ b/config.def.h 16 @@ -5,7 +5,12 @@ 17 * 18 * font: see http://freedesktop.org/software/fontconfig/fontconfig-user.html 19 */ 20 -static char *font = "Liberation Mono:pixelsize=12:antialias=true:autohint=true"; 21 +static char *fonts[] = { 22 + "Liberation Mono:pixelsize=12:antialias=true:autohint=true", 23 + "tewi:pixelsize=12:antialias=true:autohint=true" 24 +}; 25 +static int fonts_current = 0; 26 + 27 static int borderpx = 2; 28 29 /* 30 @@ -199,6 +204,7 @@ static Shortcut shortcuts[] = { 31 { TERMMOD, XK_Y, selpaste, {.i = 0} }, 32 { ShiftMask, XK_Insert, selpaste, {.i = 0} }, 33 { TERMMOD, XK_Num_Lock, numlock, {.i = 0} }, 34 + { TERMMOD, XK_S, cyclefonts, {} }, 35 }; 36 37 /* 38 diff --git a/x.c b/x.c 39 index 210f184..88cb8e7 100644 40 --- a/x.c 41 +++ b/x.c 42 @@ -59,6 +59,7 @@ static void zoom(const Arg *); 43 static void zoomabs(const Arg *); 44 static void zoomreset(const Arg *); 45 static void ttysend(const Arg *); 46 +static void cyclefonts(const Arg *); 47 48 /* config.h for applying patches and the configuration. */ 49 #include "config.h" 50 @@ -949,6 +950,18 @@ xloadfont(Font *f, FcPattern *pattern) 51 return 0; 52 } 53 54 +void 55 +cyclefonts(const Arg *dummy) 56 +{ 57 + fonts_current++; 58 + if (fonts_current > (sizeof fonts / sizeof fonts[0]) - 1) { 59 + fonts_current = 0; 60 + } 61 + usedfont = fonts[fonts_current]; 62 + xloadfonts(fonts[fonts_current], 0); 63 + redraw(); 64 +} 65 + 66 void 67 xloadfonts(char *fontstr, double fontsize) 68 { 69 @@ -1113,8 +1126,8 @@ xinit(int cols, int rows) 70 if (!FcInit()) 71 die("could not init fontconfig.\n"); 72 73 - usedfont = (opt_font == NULL)? font : opt_font; 74 - xloadfonts(usedfont, 0); 75 + usedfont = fonts[fonts_current]; 76 + xloadfonts(fonts[fonts_current], 0); 77 78 /* colors */ 79 xw.cmap = XDefaultColormap(xw.dpy, xw.scr); 80 -- 81 2.26.2 82