dwm-xtheme-20220218-001337-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-20220218-001337-dwm-6.3.diff (5188B)
       ---
            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..359c520 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 unsigned int borderpx  = DWM_BORDERPX;        /* border pixel of windows */
           51 +static const unsigned int snap      = DWM_SNAP;            /* snap pixel */
           52 +static const int showbar            = DWM_SHOWBAR;         /* 0 means no bar */
           53 +static const int topbar             = DWM_TOPBAR;          /* 0 means bottom bar */
           54 +static const char *fonts[]          = DWM_FONT;
           55  static const char dmenufont[]       = "monospace:size=10";
           56  static const char col_gray1[]       = "#222222";
           57  static const char col_gray2[]       = "#444444";
           58 @@ -13,9 +17,9 @@ static const char col_gray3[]       = "#bbbbbb";
           59  static const char col_gray4[]       = "#eeeeee";
           60  static const char col_cyan[]        = "#005577";
           61  static const char *colors[][3]      = {
           62 -        /*               fg         bg         border   */
           63 -        [SchemeNorm] = { col_gray3, col_gray1, col_gray2 },
           64 -        [SchemeSel]  = { col_gray4, col_cyan,  col_cyan  },
           65 +        /*               fg                 bg                 border   */
           66 +        [SchemeNorm] = { DWM_FOREGROUND,    DWM_BACKGROUND,    DWM_BORDER },
           67 +        [SchemeSel]  = { DWM_SELFOREGROUND, DWM_SELBACKGROUND, DWM_SELBORDER },
           68  };
           69  
           70  /* tagging */
           71 @@ -60,6 +64,9 @@ static char dmenumon[2] = "0"; /* component of dmenucmd, manipulated in spawn()
           72  static const char *dmenucmd[] = { "dmenu_run", "-m", dmenumon, "-fn", dmenufont, "-nb", col_gray1, "-nf", col_gray3, "-sb", col_cyan, "-sf", col_gray4, NULL };
           73  static const char *termcmd[]  = { "st", NULL };
           74  
           75 +/* theme management */
           76 +# include "theme_end.h" /* this is a compile-time generated header file */
           77 +
           78  static Key keys[] = {
           79          /* modifier                     key        function        argument */
           80          { MODKEY,                       XK_p,      spawn,          {.v = dmenucmd } },
           81 diff --git a/themesetup b/themesetup
           82 new file mode 100755
           83 index 0000000..e8710c1
           84 --- /dev/null
           85 +++ b/themesetup
           86 @@ -0,0 +1,5 @@
           87 +#!/bin/sh
           88 +
           89 +echo \# if $(cat theme.h | cut -d' ' -f3 | sed "s/^/defined /;s/$/ ||/" | tr "\n" " ") 0 > theme_beg.h
           90 +echo -e "# error (conflicting macro names)\n# endif" >> theme_beg.h
           91 +cat theme.h | cut -d' ' -f3 | sed "s/^/# undef /;" > theme_end.h
           92 diff --git a/xtable.md b/xtable.md
           93 new file mode 100644
           94 index 0000000..ff87701
           95 --- /dev/null
           96 +++ b/xtable.md
           97 @@ -0,0 +1,13 @@
           98 +|        TYPE        |        RESOURCE                |        DEFAULT VALUE                |        [ALTERNATIVE RESOURCE]        |
           99 +|:---------:|:-----------------:|:---------------------:|:-------------------------:|
          100 +|        U                |        borderpx                |        1                                        |                                                        |
          101 +|        U                |        snap                        |        32                                        |                                                        |
          102 +|        I                |        showbar                        |        1                                        |                                                        |
          103 +|        I                |        topbar                        |        1                                        |                                                        |
          104 +|        SA                |        font                        |        monospace:size=10        |                                                        |
          105 +|        S                |        foreground                |        #93a1a1                                |                                                        |
          106 +|        S                |        background                |        #002b36                                |                                                        |
          107 +|        S                |        border                        |        #93a1a1                                |        background                                |
          108 +|        S                |        selforeground        |        #073642                                |        background                                |
          109 +|        S                |        selbackground        |        #2aa198                                |        foreground                                |
          110 +|        S                |        selborder                |        #cb4b16                                |        foreground                                |
          111 diff --git a/xtheme b/xtheme
          112 new file mode 100755
          113 index 0000000..9a2f299
          114 --- /dev/null
          115 +++ b/xtheme
          116 @@ -0,0 +1,63 @@
          117 +#!/bin/sh
          118 +
          119 +prefix=dwm
          120 +themeout=theme.h
          121 +xtable=xtable.md
          122 +
          123 +rm -f $themeout
          124 +
          125 +set_resource ()
          126 +{
          127 +        T=$1
          128 +        M=$2
          129 +        V=$3
          130 +
          131 +        case $T in
          132 +                S)
          133 +                        V=\"$V\"
          134 +                        ;;
          135 +                SA)
          136 +                        V="{\"$(echo $V | sed 's/, /", "/g')\"}"
          137 +        esac
          138 +
          139 +        echo "# define $M $V" >> $themeout
          140 +}
          141 +
          142 +cat "$xtable"                                                                                                |
          143 +        sed '1,2d;s/\(^|\t*\)\|\(|$\)//g;s/\t\+|\t\+/|/g'                |
          144 +        while IFS='|' read T R D A
          145 +        do
          146 +                m=$(echo "$prefix"'_'"$R" | tr '[:lower:]' '[:upper:]')
          147 +
          148 +                l=''
          149 +
          150 +                for r in "$R" "$A"
          151 +                do
          152 +                        [[ "$r" == '' ]] && continue
          153 +
          154 +                        e=0
          155 +
          156 +                        for p in "$prefix" ''
          157 +                        do
          158 +                                l="$(                                                                                                        \
          159 +                                        xrdb -query                                                                                        \
          160 +                                                | grep -P "^$p\*?\.?$r:\s+\S+" | tail -n 1                \
          161 +                                                | sed 's/\s\+/ /g' | cut -d' ' -f 2                                \
          162 +                                )"
          163 +
          164 +                                if [[ "$l" != '' ]]
          165 +                                then
          166 +                                        e=1
          167 +                                        set_resource $T $m "$l"
          168 +                                        break
          169 +                                fi
          170 +                        done
          171 +
          172 +                        [[ $e == 1 ]] && break
          173 +                done
          174 +
          175 +                if [[ "$l" == '' ]]
          176 +                then
          177 +                        set_resource $T $m "$D"
          178 +                fi
          179 +        done