On Tue, Nov 10, 2015 at 07:44:06PM -0300, Gleydson Soares wrote:
> On Tue, Nov 10, 2015 at 11:30:02AM +0100, Joerg Jung wrote:
> > 
> > > On 09 Nov 2015, at 22:07, Ted Unangst <[email protected]> wrote:
> > > Joerg Jung wrote:
> > >> 
> > >> please find below an update for x11/dwm to 6.1.  This release contains
> > >> various fixes and improvements, see announcement [1] for more details.
> > >> 
> > >> OK?
> > > 
> > > so now that we finally changed the default xterm back to uxterm, they 
> > > changed
> > > it to st. needs another man page patch. :)
> > 
> > I wonder what dwm users think about the following proposal:
> > 
> > Remove the uxterm patch and keep st as the default terminal.
> > If you are a dwm/dmenu suckless user on your desktop you are 
> > probably also fine with using st. 
> > 
> > st has become rather stable and usable. A lot of issues are 
> > fixed and most terminal applications seem to work just fine.
> > 
> > Other “desktop environments” also all start their own terminals 
> > (e.g. gnome, kde, xfce, …).
> > 
> > Or does this go one step too far?!  What do you think?
> 
> here is a proposal [1]
> the idea of dwm is that user can edit your own def.h and rebuild it.

Right. The same approach is used in others as well, e.g. 
tabbed, dmenu, surf, ... 

So this is not only needed by dwm but all suckless ports and leads to a
suckless bsd.port.mk module.

> we should zap the patch and add our modified config.def.h to files/ directory
> so others can to edit/override it with your own version....
> ?

Mhhmmm... this way you have always M's in your tree, because 
config.def.h is committed.
Better not commit it to have '?' instead of 'M's?
And what about using patches instead, like this:

pre-configure:
        cd ${WRKSRC} && patch -p0 < ${FILESDIR}/config.def.h.diff

However, I think this is a good starting point, but might be not enough. 
Think of package updates/upgrades: You will loose the customizations 
with them.

I already discussed a similar approach with czarkoff@ at u2k15, here are 
some of our thoughts:

1. first, we need a directory were root user can put (config.def.h)
   patches he wants to have applied on top of existing port
        - should be something standardized like /usr/ports/mypatches or
          /etc/ports/patches or whatever... no matter, let's call this
          dir $PATCHES for now

2. secondly, we need a bsd.port.mk module which uses/applies these
   patches from $PATCHES folder
        - so, sub-folders for ports are needed, e.g. $PATCHES/dwm
        - the module might also "bump" the port, and introduce a
          "-custom flavor", e.g. dwm-6.0p1-custom.tgz

3. once the ports infrastructure is there and working, the pkg_* tools
   can be adjusted: e.g. if pkg_add -u finds a dwm -custom installed, it
   should issue a rebuild with user patches applied from ports tree

I think 1.+2. are easy and we should start with it.
The 3. is much more complicated and others like espie might not like it.

...

But maybe this all goes to far and is not worthwhile, and we should
instead just handle all suckless ports as you proposed below -- simply
put all own patches/files in files/ dir and force users to manually
rebuilt from port after upgrades... fine with me as well, as long as
all suckless ports treated similar.

> diff includes man page bit pointed out by ingo@
> 
> [1] - shutupandhack.org/~gsoares/openbsd/dwm-6.1_.diff
> 
> ?

> Index: Makefile
> ===================================================================
> RCS file: /cvs/ports/x11/dwm/Makefile,v
> retrieving revision 1.26
> diff -u -p -u -p -r1.26 Makefile
> --- Makefile  25 Oct 2015 14:23:07 -0000      1.26
> +++ Makefile  10 Nov 2015 22:25:41 -0000
> @@ -2,8 +2,7 @@
>  
>  COMMENT=             dynamic window manager
>  
> -DISTNAME=            dwm-6.0
> -REVISION=            1
> +DISTNAME=            dwm-6.1
>  
>  CATEGORIES=          x11
>  
> @@ -18,12 +17,16 @@ WANTLIB=          X11 Xinerama c
>  
>  MASTER_SITES=                http://dl.suckless.org/dwm/
>  
> -RUN_DEPENDS=         x11/dmenu>=4.4 \
> +RUN_DEPENDS=         x11/dmenu>=4.6 \
>                       fonts/terminus-font
>  
>  MAKE_ENV=            LDFLAGS="${LDFLAGS}"
>  FAKE_FLAGS=          DESTDIR=""
>  
>  NO_TEST=             Yes
> +
> +pre-configure:
> +     cd  ${WRKSRC}/ && cp config.def.h config.def.h.orig
> +     cp ${FILESDIR}/config.def.h ${WRKSRC}
>  
>  .include <bsd.port.mk>
> Index: distinfo
> ===================================================================
> RCS file: /cvs/ports/x11/dwm/distinfo,v
> retrieving revision 1.18
> diff -u -p -u -p -r1.18 distinfo
> --- distinfo  18 Jan 2015 03:15:53 -0000      1.18
> +++ distinfo  10 Nov 2015 22:25:41 -0000
> @@ -1,2 +1,2 @@
> -SHA256 (dwm-6.0.tar.gz) = srlIPeaSWe7qVoRImbsjhRWNPnmkLYKxDBQgmfyO61Y=
> -SIZE (dwm-6.0.tar.gz) = 20810
> +SHA256 (dwm-6.1.tar.gz) = wvbFYWfwrNvj3DfMqcGhkmDAQPLUgA41KaIa18zidf4=
> +SIZE (dwm-6.1.tar.gz) = 25887
> Index: files/config.def.h
> ===================================================================
> RCS file: files/config.def.h
> diff -N files/config.def.h
> --- /dev/null 1 Jan 1970 00:00:00 -0000
> +++ files/config.def.h        10 Nov 2015 22:25:41 -0000
> @@ -0,0 +1,115 @@
> +/* See LICENSE file for copyright and license details. */
> +
> +/* appearance */
> +static const char *fonts[] = {
> +     "terminus:size=8"
> +};
> +static const char dmenufont[]       = "terminus:size=8";
> +static const char normbordercolor[] = "#404040";
> +static const char normbgcolor[]     = "#202020";
> +static const char normfgcolor[]     = "#c0c0c0";
> +static const char selbordercolor[]  = "#8888ff";
> +static const char selbgcolor[]      = "#404040";
> +static const char selfgcolor[]      = "#f0f0f0";
> +static const unsigned int borderpx  = 1;        /* border pixel of windows */
> +static const unsigned int snap      = 32;       /* snap pixel */
> +static const int showbar            = 1;        /* 0 means no bar */
> +static const int topbar             = 1;        /* 0 means bottom bar */
> +
> +/* tagging */
> +static const char *tags[] = { "1", "2", "3", "4", "5", "6", "7", "8", "9" };
> +
> +static const Rule rules[] = {
> +     /* xprop(1):
> +      *      WM_CLASS(STRING) = instance, class
> +      *      WM_NAME(STRING) = title
> +      */
> +     /* class      instance    title       tags mask     isfloating   
> monitor */
> +     { "Gimp",     NULL,       NULL,       0,            1,           -1 },
> +     { "Firefox",  NULL,       NULL,       1 << 8,       0,           -1 },
> +     { "Xonix",    NULL,       NULL,       0,            1,           -1 },
> +     { NULL,       NULL,       "glxgears", 0,            1,           -1 },
> +};
> +
> +/* layout(s) */
> +static const float mfact     = 0.55; /* factor of master area size 
> [0.05..0.95] */
> +static const int nmaster     = 1;    /* number of clients in master area */
> +static const int resizehints = 1;    /* 1 means respect size hints in tiled 
> resizals */
> +
> +static const Layout layouts[] = {
> +     /* symbol     arrange function */
> +     { "[]=",      tile },    /* first entry is default */
> +     { "><>",      NULL },    /* no layout function means floating behavior 
> */
> +     { "[M]",      monocle },
> +};
> +
> +/* key definitions */
> +#define MODKEY Mod1Mask
> +#define TAGKEYS(KEY,TAG) \
> +     { MODKEY,                       KEY,      view,           {.ui = 1 << 
> TAG} }, \
> +     { MODKEY|ControlMask,           KEY,      toggleview,     {.ui = 1 << 
> TAG} }, \
> +     { MODKEY|ShiftMask,             KEY,      tag,            {.ui = 1 << 
> TAG} }, \
> +     { MODKEY|ControlMask|ShiftMask, KEY,      toggletag,      {.ui = 1 << 
> TAG} },
> +
> +/* helper for spawning shell commands in the pre dwm-5.0 fashion */
> +#define SHCMD(cmd) { .v = (const char*[]){ "/bin/sh", "-c", cmd, NULL } }
> +
> +/* commands */
> +static char dmenumon[2] = "0"; /* component of dmenucmd, manipulated in 
> spawn() */
> +static const char *dmenucmd[] = { "dmenu_run", "-m", dmenumon, "-fn", 
> dmenufont, "-nb", normbgcolor, "-nf", normfgcolor, "-sb", selbgcolor, "-sf", 
> selfgcolor, NULL };
> +static const char *termcmd[]  = { "uxterm", NULL };
> +
> +static Key keys[] = {
> +     /* modifier                     key        function        argument */
> +     { MODKEY,                       XK_p,      spawn,          {.v = 
> dmenucmd } },
> +     { MODKEY|ShiftMask,             XK_Return, spawn,          {.v = 
> termcmd } },
> +     { MODKEY,                       XK_b,      togglebar,      {0} },
> +     { MODKEY,                       XK_j,      focusstack,     {.i = +1 } },
> +     { MODKEY,                       XK_k,      focusstack,     {.i = -1 } },
> +     { MODKEY,                       XK_i,      incnmaster,     {.i = +1 } },
> +     { MODKEY,                       XK_d,      incnmaster,     {.i = -1 } },
> +     { MODKEY,                       XK_h,      setmfact,       {.f = -0.05} 
> },
> +     { MODKEY,                       XK_l,      setmfact,       {.f = +0.05} 
> },
> +     { MODKEY,                       XK_Return, zoom,           {0} },
> +     { MODKEY,                       XK_Tab,    view,           {0} },
> +     { MODKEY|ShiftMask,             XK_c,      killclient,     {0} },
> +     { MODKEY,                       XK_t,      setlayout,      {.v = 
> &layouts[0]} },
> +     { MODKEY,                       XK_f,      setlayout,      {.v = 
> &layouts[1]} },
> +     { MODKEY,                       XK_m,      setlayout,      {.v = 
> &layouts[2]} },
> +     { MODKEY,                       XK_space,  setlayout,      {0} },
> +     { MODKEY|ShiftMask,             XK_space,  togglefloating, {0} },
> +     { MODKEY,                       XK_0,      view,           {.ui = ~0 } 
> },
> +     { MODKEY|ShiftMask,             XK_0,      tag,            {.ui = ~0 } 
> },
> +     { MODKEY,                       XK_comma,  focusmon,       {.i = -1 } },
> +     { MODKEY,                       XK_period, focusmon,       {.i = +1 } },
> +     { MODKEY|ShiftMask,             XK_comma,  tagmon,         {.i = -1 } },
> +     { MODKEY|ShiftMask,             XK_period, tagmon,         {.i = +1 } },
> +     TAGKEYS(                        XK_1,                      0)
> +     TAGKEYS(                        XK_2,                      1)
> +     TAGKEYS(                        XK_3,                      2)
> +     TAGKEYS(                        XK_4,                      3)
> +     TAGKEYS(                        XK_5,                      4)
> +     TAGKEYS(                        XK_6,                      5)
> +     TAGKEYS(                        XK_7,                      6)
> +     TAGKEYS(                        XK_8,                      7)
> +     TAGKEYS(                        XK_9,                      8)
> +     { MODKEY|ShiftMask,             XK_q,      quit,           {0} },
> +};
> +
> +/* button definitions */
> +/* click can be ClkLtSymbol, ClkStatusText, ClkWinTitle, ClkClientWin, or 
> ClkRootWin */
> +static Button buttons[] = {
> +     /* click                event mask      button          function        
> argument */
> +     { ClkLtSymbol,          0,              Button1,        setlayout,      
> {0} },
> +     { ClkLtSymbol,          0,              Button3,        setlayout,      
> {.v = &layouts[2]} },
> +     { ClkWinTitle,          0,              Button2,        zoom,           
> {0} },
> +     { ClkStatusText,        0,              Button2,        spawn,          
> {.v = termcmd } },
> +     { ClkClientWin,         MODKEY,         Button1,        movemouse,      
> {0} },
> +     { ClkClientWin,         MODKEY,         Button2,        togglefloating, 
> {0} },
> +     { ClkClientWin,         MODKEY,         Button3,        resizemouse,    
> {0} },
> +     { ClkTagBar,            0,              Button1,        view,           
> {0} },
> +     { ClkTagBar,            0,              Button3,        toggleview,     
> {0} },
> +     { ClkTagBar,            MODKEY,         Button1,        tag,            
> {0} },
> +     { ClkTagBar,            MODKEY,         Button3,        toggletag,      
> {0} },
> +};
> +
> Index: patches/patch-config_def_h
> ===================================================================
> RCS file: patches/patch-config_def_h
> diff -N patches/patch-config_def_h
> --- patches/patch-config_def_h        25 Oct 2015 14:23:07 -0000      1.10
> +++ /dev/null 1 Jan 1970 00:00:00 -0000
> @@ -1,33 +0,0 @@
> -$OpenBSD: patch-config_def_h,v 1.10 2015/10/25 14:23:07 jung Exp $
> ---- config.def.h.orig        Mon Dec 19 16:02:46 2011
> -+++ config.def.h     Thu Oct  8 20:58:14 2015
> -@@ -1,13 +1,13 @@
> - /* See LICENSE file for copyright and license details. */
> - 
> - /* appearance */
> --static const char font[]            = 
> "-*-terminus-medium-r-*-*-16-*-*-*-*-*-*-*";
> --static const char normbordercolor[] = "#444444";
> --static const char normbgcolor[]     = "#222222";
> --static const char normfgcolor[]     = "#bbbbbb";
> --static const char selbordercolor[]  = "#005577";
> --static const char selbgcolor[]      = "#005577";
> --static const char selfgcolor[]      = "#eeeeee";
> -+static const char font[]            = 
> "-*-terminus-medium-*-*-*-*-*-*-*-*-*-*-*";
> -+static const char normbordercolor[] = "#404040";
> -+static const char normbgcolor[]     = "#202020";
> -+static const char normfgcolor[]     = "#c0c0c0";
> -+static const char selbordercolor[]  = "#8888ff";
> -+static const char selbgcolor[]      = "#404040";
> -+static const char selfgcolor[]      = "#f0f0f0";
> - static const unsigned int borderpx  = 1;        /* border pixel of windows 
> */
> - static const unsigned int snap      = 32;       /* snap pixel */
> - static const Bool showbar           = True;     /* False means no bar */
> -@@ -20,6 +20,8 @@ static const Rule rules[] = {
> -     /* class      instance    title       tags mask     isfloating   
> monitor */
> -     { "Gimp",     NULL,       NULL,       0,            True,        -1 },
> -     { "Firefox",  NULL,       NULL,       1 << 8,       False,       -1 },
> -+    { "Xonix",    NULL,       NULL,       0,            True,        -1 },
> -+    { NULL,       NULL,       "glxgears", 0,            True,        -1 },
> - };
> - 
> - /* layout(s) */
> Index: patches/patch-config_mk
> ===================================================================
> RCS file: /cvs/ports/x11/dwm/patches/patch-config_mk,v
> retrieving revision 1.9
> diff -u -p -u -p -r1.9 patch-config_mk
> --- patches/patch-config_mk   9 Jul 2012 16:33:40 -0000       1.9
> +++ patches/patch-config_mk   10 Nov 2015 22:25:41 -0000
> @@ -1,7 +1,7 @@
>  $OpenBSD: patch-config_mk,v 1.9 2012/07/09 16:33:40 zinke Exp $
> ---- config.mk.orig   Mon Dec 19 16:02:46 2011
> -+++ config.mk        Sat Jul  7 22:28:18 2012
> -@@ -4,30 +4,30 @@ VERSION = 6.0
> +--- config.mk.orig   Sun Nov  8 23:39:37 2015
> ++++ config.mk        Mon Nov  9 21:14:22 2015
> +@@ -4,11 +4,11 @@ VERSION = 6.1
>   # Customize below to fit your system
>   
>   # paths
> @@ -15,25 +15,28 @@ $OpenBSD: patch-config_mk,v 1.9 2012/07/
>  +X11INC = ${X11BASE}/include
>  +X11LIB = ${X11BASE}/lib
>   
> - # Xinerama
> - XINERAMALIBS = -L${X11LIB} -lXinerama
> - XINERAMAFLAGS = -DXINERAMA
> - 
> - # includes and libs
> --INCS = -I. -I/usr/include -I${X11INC}
> --LIBS = -L/usr/lib -lc -L${X11LIB} -lX11 ${XINERAMALIBS}
> -+INCS = -I${X11INC}
> -+LIBS = -L${X11LIB} -lX11 ${XINERAMALIBS}
> + # Xinerama, comment if you don't want it
> + XINERAMALIBS  = -lXinerama
> +@@ -16,7 +16,7 @@ XINERAMAFLAGS = -DXINERAMA
> + 
> + # freetype
> + FREETYPELIBS = -lfontconfig -lXft
> +-FREETYPEINC = /usr/include/freetype2
> ++#FREETYPEINC = /usr/include/freetype2
> + # OpenBSD (uncomment)
> + FREETYPEINC = ${X11INC}/freetype2
> + 
> +@@ -25,14 +25,14 @@ INCS = -I${X11INC} -I${FREETYPEINC}
> + LIBS = -L${X11LIB} -lX11 ${XINERAMALIBS} ${FREETYPELIBS}
>   
>   # flags
> --CPPFLAGS = -DVERSION=\"${VERSION}\" ${XINERAMAFLAGS}
> -+CPPFLAGS += -DVERSION=\"${VERSION}\" ${XINERAMAFLAGS}
> - #CFLAGS = -g -std=c99 -pedantic -Wall -O0 ${INCS} ${CPPFLAGS}
> --CFLAGS = -std=c99 -pedantic -Wall -Os ${INCS} ${CPPFLAGS}
> -+CFLAGS += -std=c99 -pedantic -Wall -Os ${INCS} ${CPPFLAGS}
> - #LDFLAGS = -g ${LIBS}
> --LDFLAGS = -s ${LIBS}
> -+LDFLAGS += ${LIBS}
> +-CPPFLAGS = -D_BSD_SOURCE -D_POSIX_C_SOURCE=2 -DVERSION=\"${VERSION}\" 
> ${XINERAMAFLAGS}
> ++CPPFLAGS += -D_BSD_SOURCE -D_POSIX_C_SOURCE=2 -DVERSION=\"${VERSION}\" 
> ${XINERAMAFLAGS}
> + #CFLAGS   = -g -std=c99 -pedantic -Wall -O0 ${INCS} ${CPPFLAGS}
> +-CFLAGS   = -std=c99 -pedantic -Wall -Wno-deprecated-declarations -Os 
> ${INCS} ${CPPFLAGS}
> +-LDFLAGS  = -s ${LIBS}
> ++CFLAGS   += -std=c99 -pedantic -Wall -Wno-deprecated-declarations -Os 
> ${INCS} ${CPPFLAGS}
> ++LDFLAGS  += -s ${LIBS}
>   
>   # Solaris
>   #CFLAGS = -fast ${INCS} -DVERSION=\"${VERSION}\"
> Index: patches/patch-dwm_1
> ===================================================================
> RCS file: patches/patch-dwm_1
> diff -N patches/patch-dwm_1
> --- /dev/null 1 Jan 1970 00:00:00 -0000
> +++ patches/patch-dwm_1       10 Nov 2015 22:25:41 -0000
> @@ -0,0 +1,21 @@
> +$OpenBSD$
> +--- dwm.1.orig       Sun Nov  8 19:39:37 2015
> ++++ dwm.1    Mon Nov  9 20:04:23 2015
> +@@ -57,7 +57,7 @@ click on a tag label adds/removes that tag to/from the
> + .TP
> + .B Mod1\-Shift\-Return
> + Start
> +-.BR st(1).
> ++.BR uxterm (1).
> + .TP
> + .B Mod1\-,
> + Focus previous screen, if any.
> +@@ -151,7 +151,7 @@ dwm is customized by creating a custom config.h and (r
> + code. This keeps it fast, secure and simple.
> + .SH SEE ALSO
> + .BR dmenu (1),
> +-.BR st (1)
> ++.BR uxterm (1)
> + .SH BUGS
> + Java applications which use the XToolkit/XAWT backend may draw grey windows
> + only. The XToolkit/XAWT backend breaks ICCCM-compliance in recent JDK 1.5 
> and early

Reply via email to