dwm-xtheme-20220214-135624-dwm-6.3.diff - sites - public wiki contents of suckless.org
 (HTM) git clone git://git.suckless.org/sites
 (DIR) Log
 (DIR) Files
 (DIR) Refs
       ---
       dwm-xtheme-20220214-135624-dwm-6.3.diff (4683B)
       ---
            1 diff --git a/Makefile b/Makefile
            2 index 77bcbc0..fadb218 100644
            3 --- a/Makefile
            4 +++ b/Makefile
            5 @@ -17,16 +17,23 @@ options:
            6  .c.o:
            7          ${CC} -c ${CFLAGS} $<
            8  
            9 -${OBJ}: config.h config.mk
           10 +${OBJ}: config.h theme_beg.h config.mk
           11  
           12 -config.h:
           13 -        cp config.def.h $@
           14 +theme.h:
           15 +        ./xtheme
           16 +
           17 +theme_beg.h:
           18 +        ./themesetup
           19 +
           20 +config.h: theme.h
           21 +        cp -n config.def.h $@
           22  
           23  dwm: ${OBJ}
           24          ${CC} -o $@ ${OBJ} ${LDFLAGS}
           25 +        rm -f theme_{beg,end}.h
           26  
           27  clean:
           28 -        rm -f dwm ${OBJ} dwm-${VERSION}.tar.gz
           29 +        rm -f dwm ${OBJ} theme_{beg,end}.h dwm-${VERSION}.tar.gz
           30  
           31  dist: clean
           32          mkdir -p dwm-${VERSION}
           33 diff --git a/config.def.h b/config.def.h
           34 index a2ac963..daf66b3 100644
           35 --- a/config.def.h
           36 +++ b/config.def.h
           37 @@ -1,11 +1,15 @@
           38  /* See LICENSE file for copyright and license details. */
           39  
           40 +/* theme management */
           41 +# include "theme_beg.h" /* this is a compile-time generated header file */
           42 +# include "theme.h"
           43 +
           44  /* appearance */
           45  static const unsigned int borderpx  = 1;        /* border pixel of windows */
           46  static const unsigned int snap      = 32;       /* snap pixel */
           47  static const int showbar            = 1;        /* 0 means no bar */
           48  static const int topbar             = 1;        /* 0 means bottom bar */
           49 -static const char *fonts[]          = { "monospace:size=10" };
           50 +static const char *fonts[]          = { DWM_FONT };
           51  static const char dmenufont[]       = "monospace:size=10";
           52  static const char col_gray1[]       = "#222222";
           53  static const char col_gray2[]       = "#444444";
           54 @@ -13,9 +17,9 @@ static const char col_gray3[]       = "#bbbbbb";
           55  static const char col_gray4[]       = "#eeeeee";
           56  static const char col_cyan[]        = "#005577";
           57  static const char *colors[][3]      = {
           58 -        /*               fg         bg         border   */
           59 -        [SchemeNorm] = { col_gray3, col_gray1, col_gray2 },
           60 -        [SchemeSel]  = { col_gray4, col_cyan,  col_cyan  },
           61 +        /*               fg                 bg                 border   */
           62 +        [SchemeNorm] = { DWM_FOREGROUND,    DWM_BACKGROUND,    DWM_BORDER },
           63 +        [SchemeSel]  = { DWM_SELFOREGROUND, DWM_SELBACKGROUND, DWM_SELBORDER },
           64  };
           65  
           66  /* tagging */
           67 @@ -60,6 +64,9 @@ static char dmenumon[2] = "0"; /* component of dmenucmd, manipulated in spawn()
           68  static const char *dmenucmd[] = { "dmenu_run", "-m", dmenumon, "-fn", dmenufont, "-nb", col_gray1, "-nf", col_gray3, "-sb", col_cyan, "-sf", col_gray4, NULL };
           69  static const char *termcmd[]  = { "st", NULL };
           70  
           71 +/* theme management */
           72 +# include "theme_end.h" /* this is a compile-time generated header file */
           73 +
           74  static Key keys[] = {
           75          /* modifier                     key        function        argument */
           76          { MODKEY,                       XK_p,      spawn,          {.v = dmenucmd } },
           77 diff --git a/themesetup b/themesetup
           78 new file mode 100755
           79 index 0000000..e8710c1
           80 --- /dev/null
           81 +++ b/themesetup
           82 @@ -0,0 +1,5 @@
           83 +#!/bin/sh
           84 +
           85 +echo \# if $(cat theme.h | cut -d' ' -f3 | sed "s/^/defined /;s/$/ ||/" | tr "\n" " ") 0 > theme_beg.h
           86 +echo -e "# error (conflicting macro names)\n# endif" >> theme_beg.h
           87 +cat theme.h | cut -d' ' -f3 | sed "s/^/# undef /;" > theme_end.h
           88 diff --git a/xresources.defaults b/xresources.defaults
           89 new file mode 100644
           90 index 0000000..7f1d86a
           91 --- /dev/null
           92 +++ b/xresources.defaults
           93 @@ -0,0 +1,7 @@
           94 +# define DWM_FONT "monospace"
           95 +# define DWM_FOREGROUND "#93a1a1"
           96 +# define DWM_BACKGROUND "#002b36"
           97 +# define DWM_BORDER "#93a1a1"
           98 +# define DWM_SELFOREGROUND "#073642"
           99 +# define DWM_SELBACKGROUND "#2aa198"
          100 +# define DWM_SELBORDER "#cb4b16"
          101 diff --git a/xresources.list b/xresources.list
          102 new file mode 100644
          103 index 0000000..2b8421f
          104 --- /dev/null
          105 +++ b/xresources.list
          106 @@ -0,0 +1,7 @@
          107 +S        font
          108 +S        foreground
          109 +S        background
          110 +S        border                                background
          111 +S        selforeground                background
          112 +S        selbackground                foreground
          113 +S        selborder                        foreground
          114 diff --git a/xtheme b/xtheme
          115 new file mode 100755
          116 index 0000000..8fa5f08
          117 --- /dev/null
          118 +++ b/xtheme
          119 @@ -0,0 +1,49 @@
          120 +#!/bin/sh
          121 +
          122 +prefix=dwm
          123 +resfile=xresources.list
          124 +themeout=theme.h
          125 +# themedefaults=themes/$prefix-defaults.h
          126 +themedefaults=xresources.defaults
          127 +
          128 +rm -f $themeout
          129 +
          130 +cat "$resfile" | while read T R A
          131 +do
          132 +        m=$(echo "$prefix"'_'"$R" | tr '[:lower:]' '[:upper:]')
          133 +
          134 +        s=''
          135 +        [[ "$T" == "S" ]] && s=\"
          136 +
          137 +        l=''
          138 +
          139 +        for r in "$R" "$A"
          140 +        do
          141 +                [[ "$r" == '' ]] && continue
          142 +
          143 +                e=0
          144 +
          145 +                for p in "$prefix" ''
          146 +                do
          147 +                        l="$(                                                                                                                                \
          148 +                                xrdb -query                                                                                                                \
          149 +                                        | grep -P "^$p\*?\.?$r:\s*\S*$" -m 1                                                \
          150 +                                        | sed "s/^$p\*\?\.\?$r:\s*\(\S*\)$/# define $m $s\1$s/"                \
          151 +                        )"
          152 +
          153 +                        if [[ "$l" != '' ]]
          154 +                        then
          155 +                                e=1
          156 +                                echo "$l" >> $themeout
          157 +                                break
          158 +                        fi
          159 +                done
          160 +
          161 +                [[ $e == 1 ]] && break
          162 +        done
          163 +
          164 +        if [[ "$l" == '' ]]
          165 +        then
          166 +                cat "$themedefaults" | grep -P "^# define $m " -m 1 >> $themeout
          167 +        fi
          168 +done