[wiki] [sites] Improve st patch naming scheme || FRIGN

From: <git_AT_suckless.org>
Date: Wed, 15 Jun 2016 14:06:45 +0200

commit 8825492293097aed5204104ac961e2cd3d303258
Author: FRIGN <dev_AT_frign.de>
Date: Wed Jun 15 14:05:24 2016 +0200

    Improve st patch naming scheme
    
    This is much better when sorting file lists and better reflects the
    hierarchy. This already helped me spot old files in the tree that
    will be removed in a later commit.

diff --git a/st.suckless.org/patches/argbbg.md b/st.suckless.org/patches/argbbg.md
index 8a68d9b..08b2e5c 100644
--- a/st.suckless.org/patches/argbbg.md
+++ b/st.suckless.org/patches/argbbg.md
_AT_@ -14,14 +14,14 @@ make this patch effective.
  - Embedding might fail after applying this patch.
 
 ## Download ##
- * [st-0.4.1-argbbg.diff](st-0.4.1-argbbg.diff)
- * [st-0.5-argbbg.diff](st-0.5-argbbg.diff)
- * [st-0.6-argbbg.diff](st-0.6-argbbg.diff)
- * [st-git-20160131-argbbg.diff](st-git-20160131-argbbg.diff)
- * [st-git-20160425-argbbg.diff](st-git-20160425-argbbg.diff)
+ * [st-argbbg-0.4.1.diff](st-argbbg-0.4.1.diff)
+ * [st-argbbg-0.5.diff](st-argbbg-0.5.diff)
+ * [st-argbbg-0.6.diff](st-argbbg-0.6.diff)
+ * [st-argbbg-git-20160131.diff](st-argbbg-git-20160131.diff)
+ * [st-argbbg-git-20160425.diff](st-argbbg-git-20160425.diff)
 
 ## Authors ##
  * Eon S. Jeon - esjeon_AT_hyunmu.am
- * pr - protodev_AT_gmx.net (st-0.5 port)
- * Laslo Hunhold - dev_AT_frign.de (st-0.6 port)
- * David Phillips - dbphillipsnz_AT_gmail.com (st-git-20160131 port)
+ * pr - protodev_AT_gmx.net (0.5 port)
+ * Laslo Hunhold - dev_AT_frign.de (0.6 port)
+ * David Phillips - dbphillipsnz_AT_gmail.com (git-20160425 port)
diff --git a/st.suckless.org/patches/boldcolor.md b/st.suckless.org/patches/boldcolor.md
index 967bf0a..ce780fe 100644
--- a/st.suckless.org/patches/boldcolor.md
+++ b/st.suckless.org/patches/boldcolor.md
_AT_@ -39,7 +39,7 @@ config.h example:
 
 Download
 --------
-* [st-0.3-boldcolor.diff](st-0.3-boldcolor.diff)
+* [st-boldcolor-0.3.diff](st-boldcolor-0.3.diff)
 
 Author
 ------
diff --git a/st.suckless.org/patches/clipboard.md b/st.suckless.org/patches/clipboard.md
index c04a8dc..6016fae 100644
--- a/st.suckless.org/patches/clipboard.md
+++ b/st.suckless.org/patches/clipboard.md
_AT_@ -12,10 +12,10 @@ CLIPBOARD.
 
 ## Download
 
-* [st-0.6-clipboard.diff](st-0.6-clipboard.diff)
-* [st-git-20150917-clipboard.diff](st-git-20150917-clipboard.diff)
+* [st-clipboard-0.6.diff](st-clipboard-0.6.diff)
+* [st-clipboard-git-20150917.diff](st-clipboard-git-20150917.diff)
 
 ## Authors
 
  * Kai Hendry - hendry_AT_iki.fi
- * Laslo Hunhold - dev_AT_frign.de (st-git-20150917 port)
+ * Laslo Hunhold - dev_AT_frign.de (git-20150917 port)
diff --git a/st.suckless.org/patches/copyurl.md b/st.suckless.org/patches/copyurl.md
index 5b81e67..60bc038 100644
--- a/st.suckless.org/patches/copyurl.md
+++ b/st.suckless.org/patches/copyurl.md
_AT_@ -16,12 +16,12 @@ URL on each line is selected.
 Download
 --------
 
- * [st-0.6-copyurl.diff](st-0.6-copyurl.diff)
- * [st-git-20160210-copyurl.diff](st-git-20160210-copyurl.diff)
+ * [st-copyurl-0.6.diff](st-copyurl-0.6.diff)
+ * [st-copyurl-git-20160210.diff](st-copyurl-git-20160210.diff)
 
 Authors
 -------
 
  * Brandon Mulcahy - brandon_AT_jangler.info
- * Laslo Hunhold - dev_AT_frign.de (st-0.6 port)
- * David Phillips - dbphillipsnz_AT_gmail.com (st-git-20160210 port)
+ * Laslo Hunhold - dev_AT_frign.de (0.6 port)
+ * David Phillips - dbphillipsnz_AT_gmail.com (git-20160210 port)
diff --git a/st.suckless.org/patches/delkey.md b/st.suckless.org/patches/delkey.md
index 4347aca..61c5855 100644
--- a/st.suckless.org/patches/delkey.md
+++ b/st.suckless.org/patches/delkey.md
_AT_@ -9,11 +9,11 @@ Return BS on pressing backspace and DEL on pressing the delete key.
 Download
 --------
 
- * [st-0.6-delkey.diff](st-0.6-delkey.diff)
- * [st-git-20150917-delkey.diff](st-git-20150917-delkey.diff)
+ * [st-delkey-0.6.diff](st-delkey-0.6.diff)
+ * [st-delkey-git-20150917.diff](st-delkey-git-20150917.diff)
 
 Authors
 -------
 
  * Roberto E. Vargas Caballero - k0ga_AT_shike2.com
- * Laslo Hunhold - dev_AT_frign.de (st-0.6, st-git-20150917 ports)
+ * Laslo Hunhold - dev_AT_frign.de (0.6, git-20150917 ports)
diff --git a/st.suckless.org/patches/externalpipe.md b/st.suckless.org/patches/externalpipe.md
index 51abe28..41376d8 100644
--- a/st.suckless.org/patches/externalpipe.md
+++ b/st.suckless.org/patches/externalpipe.md
_AT_@ -24,13 +24,13 @@ dmenu to select and open one:
 Download
 --------
 
-* [st-0.4.1-externalpipe.diff](st-0.4.1-externalpipe.diff)
-* [st-0.5-externalpipe.diff](st-0.5-externalpipe.diff)
-* [st-0.6-externalpipe.diff](st-0.6-externalpipe.diff)
-* [st-git-20160204-externalpipe.diff](st-git-20160204-externalpipe.diff)
+* [st-externalpipe-0.4.1.diff](st-externalpipe-0.4.1.diff)
+* [st-externalpipe-0.5.diff](st-externalpipe-0.5.diff)
+* [st-externalpipe-0.6.diff](st-externalpipe-0.6.diff)
+* [st-externalpipe-git-20160204.diff](st-externalpipe-git-20160204.diff)
 
 Authors
 -------
 
  * Rob Pilling - robpilling_AT_gmail.com
- * Laslo Hunhold - dev_AT_frign.de (st-0.4.1, st-0.5, st-0.6, st-git-20150917 ports)
+ * Laslo Hunhold - dev_AT_frign.de (0.4.1, 0.5, 0.6, git-20150917 ports)
diff --git a/st.suckless.org/patches/hidecursor.md b/st.suckless.org/patches/hidecursor.md
index e260e94..e2cfd81 100644
--- a/st.suckless.org/patches/hidecursor.md
+++ b/st.suckless.org/patches/hidecursor.md
_AT_@ -10,12 +10,12 @@ is moved in the terminal window.
 Download
 --------
 
-* [st-0.5-hidecursor.diff](st-0.5-hidecursor.diff)
-* [st-0.6-hidecursor.diff](st-0.6-hidecursor.diff)
-* [st-git-20150917-hidecursor.diff](st-git-20150917-hidecursor.diff)
+* [st-hidecursor-0.5.diff](st-hidecursor-0.5.diff)
+* [st-hidecursor-0.6.diff](st-hidecursor-0.6.diff)
+* [st-hidecursor-git-20150917.diff](st-hidecursor-git-20150917.diff)
 
-Author
-------
+Authors
+-------
 
  * Ivan Delalande - colona_AT_ycc.fr
- * Laslo Hunhold - dev_AT_frign.de (st-git-20150917 port)
+ * Laslo Hunhold - dev_AT_frign.de (git-20150917 port)
diff --git a/st.suckless.org/patches/openbsd.md b/st.suckless.org/patches/openbsd.md
index 7f86f0f..7ff109b 100644
--- a/st.suckless.org/patches/openbsd.md
+++ b/st.suckless.org/patches/openbsd.md
_AT_@ -27,11 +27,11 @@ More information on this issue can be found in this
 Download
 --------
 
-* [st-git-20150920-openbsd.diff](st-git-20150920-openbsd.diff)
+* [st-openbsd-git-20150920.diff](st-openbsd-git-20150920.diff)
 
 
 Authors
 -------
 
  * Nils Reuße - nilsreusse_AT_gmail.com
- * Laslo Hunhold - dev_AT_frign.de (st-git-20150920 port)
+ * Laslo Hunhold - dev_AT_frign.de (git-20150920 port)
diff --git a/st.suckless.org/patches/scrollback.md b/st.suckless.org/patches/scrollback.md
index 323e7a5..2b68f67 100644
--- a/st.suckless.org/patches/scrollback.md
+++ b/st.suckless.org/patches/scrollback.md
_AT_@ -9,12 +9,12 @@ Scroll back through terminal output using Shift+{PageUp, PageDown}.
 Download
 --------
 
-* [st-git-20160425-scrollback.diff](st-git-20160425-scrollback.diff)
+* [st-scrollback-git-20160425.diff](st-scrollback-git-20160425.diff)
 
 Apply the following patch on top of the previous to allow scrolling
 using `Shift+MouseWheel`.
 
-* [st-git-20151106-scrollback-mouse.diff](st-git-20151106-scrollback-mouse.diff)
+* [st-scrollback-mouse-git-20151106.diff](st-scrollback-mouse-git-20151106.diff)
 
 Apply the following patch on top of the previous two to allow scrollback using
 mouse wheel only when not in `MODE_ALTSCREEN`. eg. The content is being
_AT_@ -22,14 +22,14 @@ scrolled instead of the scrollback buffer in `less`. Consequently the Shift
 modifier for scrolling is not needed anymore. **Note: It might break other
 mkeys excluding scrolling functions.**
 
-* [st-git-20160203-scrollback-mouse-altscreen.diff](st-git-20160203-scrollback-mouse-altscreen.diff)
+* [st-scrollback-mouse-altscreen-git-20160203.diff](st-scrollback-mouse-altscreen-git-20160203.diff)
 
 Authors
 -------
 
  * Jochen Sprickerhof - dwm_AT_jochen.sprickerhof.de
  * M Farkas-Dyck - strake888_AT_gmail.com
- * Ivan Tham - pickfire_AT_riseup.net (mouse scrolling, st-git-20151122 port)
- * Laslo Hunhold - dev_AT_frign.de (unscrambling, st-git-20151106 port)
- * Ori Bernstein - ori_AT_eigenstate.org (fix memory bug, st-git-20151216 port)
+ * Ivan Tham - pickfire_AT_riseup.net (mouse scrolling, git-20151122 port)
+ * Laslo Hunhold - dev_AT_frign.de (unscrambling, git-20151106 port)
+ * Ori Bernstein - ori_AT_eigenstate.org (fix memory bug, git-20151216 port)
  * Matthias Schoth - mschoth_AT_gmail.com (auto altscreen scrolling)
diff --git a/st.suckless.org/patches/solarized.md b/st.suckless.org/patches/solarized.md
index 663400a..9831902 100644
--- a/st.suckless.org/patches/solarized.md
+++ b/st.suckless.org/patches/solarized.md
_AT_@ -32,27 +32,27 @@ Download
 To get correct colors, you first need to apply the following patch
 to disable lighting up bold colors.
 
- * [st-0.5-no-bold-colors.diff](st-0.5-no-bold-colors.diff)
- * [st-0.6-no-bold-colors.diff](st-0.6-no-bold-colors.diff)
- * [st-git-20150917-no-bold-colors.diff](st-git-20150917-no-bold-colors.diff)
+ * [st-no_bold_colors-0.5.diff](st-no_bold_colors-0.5.diff)
+ * [st-no_bold_colors-0.6.diff](st-no_bold_colors-0.6.diff)
+ * [st-no_bold_colors-git-20150917.diff](st-no_bold_colors-git-20150917.diff)
 
 Choose one of the following patches to get either the light
 or the dark color scheme:
 
 *Light*:
 
- * [st-0.5-solarized-light.diff](st-0.5-solarized-light.diff)
- * [st-0.6-solarized-light.diff](st-0.6-solarized-light.diff)
- * [st-git-20151119-solarized-light.diff](st-git-20151119-solarized-light.diff)
+ * [st-solarized-light-0.5.diff](st-solarized-light-0.5.diff)
+ * [st-solarized-light-0.6.diff](st-solarized-light-0.6.diff)
+ * [st-solarized-light-git-20151119.diff](st-solarized-light-git-20151119.diff)
 
 *Dark*:
 
- * [st-0.5-solarized-dark.diff](st-0.5-solarized-dark.diff)
- * [st-0.6-solarized-dark.diff](st-0.6-solarized-dark.diff)
- * [st-git-20151119-solarized-dark.diff](st-git-20151119-solarized-dark.diff)
+ * [st-solarized-dark-0.5.diff](st-solarized-dark-0.5.diff)
+ * [st-solarized-dark-0.6.diff](st-solarized-dark-0.6.diff)
+ * [st-solarized-dark-git-20151119.diff](st-solarized-dark-git-20151119.diff)
 
 Authors
 -------
 
  * Nils Reuße - nilsreusse_AT_gmail.com
- * Laslo Hunhold - dev_AT_frign.de (st-0.5, st-0.6, st-git-20150917 ports)
+ * Laslo Hunhold - dev_AT_frign.de (0.5, 0.6, git-20150917 ports)
diff --git a/st.suckless.org/patches/spoiler.md b/st.suckless.org/patches/spoiler.md
index 952b4f9..84431cb 100644
--- a/st.suckless.org/patches/spoiler.md
+++ b/st.suckless.org/patches/spoiler.md
_AT_@ -19,8 +19,8 @@ just like most normal unformatted text when selected.
 Download
 --------
 
- * [st-0.6-spoiler.diff](st-0.6-spoiler.diff)
- * [st-git-20150922-spoiler.diff](st-git-20150922-spoiler.diff)
+ * [st-spoiler-0.6.diff](st-spoiler-0.6.diff)
+ * [st-spoiler-git-20150922.diff](st-spoiler-git-20150922.diff)
 
 Author
 ------
diff --git a/st.suckless.org/patches/st-0.3-boldcolor.diff b/st.suckless.org/patches/st-0.3-boldcolor.diff
deleted file mode 100644
index be7655a..0000000
--- a/st.suckless.org/patches/st-0.3-boldcolor.diff
+++ /dev/null
_AT_@ -1,52 +0,0 @@
-diff -r db4f3f0ef420 st.c
---- a/st.c Fri Nov 02 20:08:51 2012 +0100
-+++ b/st.c Sat Nov 03 00:19:19 2012 +0100
-_AT_@ -2260,8 +2260,10 @@
- xw.cw = dc.font.width;
- xw.ch = dc.font.height;
-
-+#ifndef NOBOLDFONT
- FcPatternDel(pattern, FC_WEIGHT);
- FcPatternAddInteger(pattern, FC_WEIGHT, FC_WEIGHT_BOLD);
-+#endif
- if(xloadfont(&dc.bfont, pattern))
- die("st: can't open font %s
", fontstr);
-
-_AT_@ -2397,6 +2399,10 @@
- /* greyscale */
- fg = &dc.xft_col[base.fg + 4];
- }
-+#ifdef DEFAULTBOLD
-+ if(base.fg == defaultfg)
-+ fg = &dc.xft_col[DEFAULTBOLD];
-+#endif
- /*
- * Those ranges will not be brightened:
- * 8 - 15 – bright system colors
-_AT_@ -2406,10 +2412,22 @@
- font = &dc.bfont;
- }
-
-- if(base.mode & ATTR_ITALIC)
-- font = &dc.ifont;
-- if(base.mode & (ATTR_ITALIC|ATTR_ITALIC))
-- font = &dc.ibfont;
-+ if(base.mode & ATTR_ITALIC) {
-+ if(base.mode & ATTR_BOLD) {
-+ font = &dc.ibfont;
-+ } else {
-+ font = &dc.ifont;
-+#ifdef DEFAULTITALIC
-+ if(base.fg == defaultfg)
-+ fg = &dc.xft_col[DEFAULTITALIC];
-+#endif
-+ }
-+ }
-+
-+#ifdef DEFAULTUNDERLINE
-+ if((base.mode & ATTR_UNDERLINE) && base.fg == defaultfg)
-+ fg = &dc.xft_col[DEFAULTUNDERLINE];
-+#endif
-
- if(IS_SET(MODE_REVERSE)) {
- if(fg == &dc.xft_col[defaultfg]) {
diff --git a/st.suckless.org/patches/st-0.3-wordbreak.diff b/st.suckless.org/patches/st-0.3-wordbreak.diff
deleted file mode 100644
index d8193e3..0000000
--- a/st.suckless.org/patches/st-0.3-wordbreak.diff
+++ /dev/null
_AT_@ -1,58 +0,0 @@
-diff --git a/config.def.h b/config.def.h
-index 1ba6d8e..3ddbe10 100644
---- a/config.def.h
-+++ b/config.def.h
-_AT_@ -13,7 +13,7 @@ static unsigned int tripleclicktimeout = 600;
- static char termname[] = "st-256color";
-
- static unsigned int tabspaces = 8;
--
-+#define WORD_BREAK " "
- 
- /* Terminal colors (16 first used in escape sequence) */
- static const char *colorname[] = {
-diff --git a/st.c b/st.c
-index 8e0df08..2998468 100644
---- a/st.c
-+++ b/st.c
-_AT_@ -279,6 +279,7 @@ typedef struct {
- } DC;
- 
- static void die(const char *, ...);
-+static bool is_word_break(char);
- static void draw(void);
- static void redraw(void);
- static void drawregion(int, int, int, int);
-_AT_@ -813,12 +814,12 @@ brelease(XEvent *e) {
- 				/* double click to select word */
- 				sel.bx = sel.ex;
- 				while(sel.bx > 0 && term.line[sel.ey][sel.bx-1].state & GLYPH_SET &&
--						term.line[sel.ey][sel.bx-1].c[0] != ' ') {
-+						!is_word_break(term.line[sel.ey][sel.bx-1].c[0])) {
- 					sel.bx--;
- 				}
- 				sel.b.x = sel.bx;
- 				while(sel.ex < term.col-1 && term.line[sel.ey][sel.ex+1].state & GLYPH_SET &&
--						term.line[sel.ey][sel.ex+1].c[0] != ' ') {
-+						!is_word_break(term.line[sel.ey][sel.ex+1].c[0])) {
- 					sel.ex++;
- 				}
- 				sel.e.x = sel.ex;
-_AT_@ -866,6 +867,17 @@ die(const char *errstr, ...) {
- 	exit(EXIT_FAILURE);
- }
- 
-+bool
-+is_word_break(char c) {
-+	static char *word_break = WORD_BREAK;
-+	char *s = word_break;
-+	while(*s) {
-+		if(*s == c) return true;
-+		s++;
-+	}
-+	return false;
-+}
-+
- void
- execsh(void) {
- 	char **args;
diff --git a/st.suckless.org/patches/st-0.4-wordbreak.diff b/st.suckless.org/patches/st-0.4-wordbreak.diff
deleted file mode 100644
index 578b325..0000000
--- a/st.suckless.org/patches/st-0.4-wordbreak.diff
+++ /dev/null
_AT_@ -1,58 +0,0 @@
-diff --git a/config.def.h b/config.def.h
-index 693bdbd..cba3754 100644
---- a/config.def.h
-+++ b/config.def.h
-_AT_@ -21,7 +21,7 @@ static unsigned int actionfps = 30;
- static char termname[] = "st-256color";
- 
- static unsigned int tabspaces = 8;
--
-+#define WORD_BREAK " "
- 
- /* Terminal colors (16 first used in escape sequence) */
- static const char *colorname[] = {
-diff --git a/st.c b/st.c
-index 8b1fc56..8ed395c 100644
---- a/st.c
-+++ b/st.c
-_AT_@ -294,6 +294,7 @@ typedef struct {
- } DC;
- 
- static void die(const char *, ...);
-+static bool is_word_break(char);
- static void draw(void);
- static void redraw(int);
- static void drawregion(int, int, int, int);
-_AT_@ -920,12 +921,12 @@ brelease(XEvent *e) {
- 				/* double click to select word */
- 				sel.bx = sel.ex;
- 				while(sel.bx > 0 && term.line[sel.ey][sel.bx-1].state & GLYPH_SET &&
--						term.line[sel.ey][sel.bx-1].c[0] != ' ') {
-+						!is_word_break(term.line[sel.ey][sel.bx-1].c[0])) {
- 					sel.bx--;
- 				}
- 				sel.b.x = sel.bx;
- 				while(sel.ex < term.col-1 && term.line[sel.ey][sel.ex+1].state & GLYPH_SET &&
--						term.line[sel.ey][sel.ex+1].c[0] != ' ') {
-+						!is_word_break(term.line[sel.ey][sel.ex+1].c[0])) {
- 					sel.ex++;
- 				}
- 				sel.e.x = sel.ex;
-_AT_@ -974,6 +975,17 @@ die(const char *errstr, ...) {
- 	exit(EXIT_FAILURE);
- }
- 
-+bool
-+is_word_break(char c) {
-+	static char *word_break = WORD_BREAK;
-+	char *s = word_break;
-+	while(*s) {
-+		if(*s == c) return true;
-+		s++;
-+	}
-+	return false;
-+}
-+
- void
- execsh(void) {
- 	char **args;
diff --git a/st.suckless.org/patches/st-0.4.1-argbbg.diff b/st.suckless.org/patches/st-0.4.1-argbbg.diff
deleted file mode 100644
index fe6b47b..0000000
--- a/st.suckless.org/patches/st-0.4.1-argbbg.diff
+++ /dev/null
_AT_@ -1,171 +0,0 @@
-diff --git a/config.def.h b/config.def.h
-index d1c20bd..cc9f34d 100644
---- a/config.def.h
-+++ b/config.def.h
-_AT_@ -25,6 +25,8 @@ static char termname[] = "st-256color";
- 
- static unsigned int tabspaces = 8;
- 
-+/* background opacity */
-+static const int alpha = 0xdd;
- 
- /* Terminal colors (16 first used in escape sequence) */
- static const char *colorname[] = {
-_AT_@ -52,6 +54,7 @@ static const char *colorname[] = {
- 
- 	/* more colors can be added after 255 to use with DefaultXX */
- 	"#cccccc",
-+	"black",
- };
- 
- 
-_AT_@ -60,7 +63,7 @@ static const char *colorname[] = {
-  * foreground, background, cursor
-  */
- static unsigned int defaultfg = 7;
--static unsigned int defaultbg = 0;
-+static unsigned int defaultbg = 257;
- static unsigned int defaultcs = 256;
- 
- /*
-diff --git a/config.mk b/config.mk
-index 9431de2..0b92bf2 100644
---- a/config.mk
-+++ b/config.mk
-_AT_@ -14,7 +14,7 @@ X11LIB = /usr/X11R6/lib
- INCS = -I. -I/usr/include -I${X11INC} \
-        `pkg-config --cflags fontconfig` \
-        `pkg-config --cflags freetype2`
--LIBS = -L/usr/lib -lc -L${X11LIB} -lX11 -lutil -lXext -lXft \
-+LIBS = -L/usr/lib -lc -L${X11LIB} -lX11 -lutil -lXext -lXft -lXrender \
-        `pkg-config --libs fontconfig`  \
-        `pkg-config --libs freetype2`
- 
-diff --git a/st.c b/st.c
-index 686ed5d..de4d0f9 100644
---- a/st.c
-+++ b/st.c
-_AT_@ -60,6 +60,7 @@ char *argv0;
- #define XK_ANY_MOD    UINT_MAX
- #define XK_NO_MOD     0
- #define XK_SWITCH_MOD (1<<13)
-+#define OPAQUE 0Xff
- 
- #define REDRAW_TIMEOUT (80*1000) /* 80 ms */
- 
-_AT_@ -74,6 +75,7 @@ char *argv0;
- #define ATTRCMP(a, b) ((a).mode != (b).mode || (a).fg != (b).fg || (a).bg != (b).bg)
- #define IS_SET(flag) ((term.mode & (flag)) != 0)
- #define TIMEDIFF(t1, t2) ((t1.tv_sec-t2.tv_sec)*1000 + (t1.tv_usec-t2.tv_usec)/1000)
-+#define USE_ARGB (alpha != OPAQUE && opt_embed == NULL)
- 
- #define VT102ID "[?6c"
- 
-_AT_@ -215,6 +217,7 @@ typedef struct {
- 	int w, h; /* window width and height */
- 	int ch; /* char height */
- 	int cw; /* char width  */
-+	int depth; /* bit depth */
- 	char state; /* focus, redraw, visible */
- } XWindow;
- 
-_AT_@ -2335,8 +2338,7 @@ xresize(int col, int row) {
- 	xw.th = MAX(1, row * xw.ch);
- 
- 	XFreePixmap(xw.dpy, xw.buf);
--	xw.buf = XCreatePixmap(xw.dpy, xw.win, xw.w, xw.h,
--			DefaultDepth(xw.dpy, xw.scr));
-+	xw.buf = XCreatePixmap(xw.dpy, xw.win, xw.w, xw.h, xw.depth);
- 	XftDrawChange(xw.draw, xw.buf);
- 	xclear(0, 0, xw.w, xw.h);
- }
-_AT_@ -2360,6 +2362,13 @@ xloadcols(void) {
- 		}
- 	}
- 
-+	/* set alpha value of bg color */
-+	if (USE_ARGB) {
-+		dc.col[defaultbg].color.alpha = (0xffff * alpha) / OPAQUE; //0xcccc;
-+		dc.col[defaultbg].pixel &= 0x00111111;
-+		dc.col[defaultbg].pixel |= alpha << 24; // 0xcc000000;
-+	}
-+
- 	/* load colors [16-255] ; same colors as xterm */
- 	for(i = 16, r = 0; r < 6; r++) {
- 		for(g = 0; g < 6; g++) {
-_AT_@ -2603,7 +2612,38 @@ xinit(void) {
- 	if(!(xw.dpy = XOpenDisplay(NULL)))
- 		die("Can't open display
");
- 	xw.scr = XDefaultScreen(xw.dpy);
--	xw.vis = XDefaultVisual(xw.dpy, xw.scr);
-+	xw.depth = (USE_ARGB)? 32: XDefaultDepth(xw.dpy, xw.scr);
-+	if (! USE_ARGB)
-+		xw.vis = XDefaultVisual(xw.dpy, xw.scr);
-+	else {
-+		XVisualInfo *vis;
-+		XRenderPictFormat *fmt;
-+		int nvi;
-+		int i;
-+
-+		XVisualInfo tpl = {
-+			.screen = xw.scr,
-+			.depth = 32,
-+			.class = TrueColor
-+		};
-+
-+		vis = XGetVisualInfo(xw.dpy, VisualScreenMask | VisualDepthMask | VisualClassMask, &tpl, &nvi);
-+		xw.vis = NULL;
-+		for(i = 0; i < nvi; i ++) {
-+			fmt = XRenderFindVisualFormat(xw.dpy, vis[i].visual);
-+			if (fmt->type == PictTypeDirect && fmt->direct.alphaMask) {
-+				xw.vis = vis[i].visual;
-+				break;
-+			}
-+		}
-+		
-+		XFree(vis);
-+
-+		if (! xw.vis) {
-+			fprintf(stderr, "Couldn't find ARGB visual.
");
-+			exit(1);
-+		}
-+	}
- 
- 	/* font */
- 	if(!FcInit())
-_AT_@ -2613,7 +2653,10 @@ xinit(void) {
- 	xloadfonts(usedfont, 0);
- 
- 	/* colors */
--	xw.cmap = XDefaultColormap(xw.dpy, xw.scr);
-+	if (! USE_ARGB)
-+		xw.cmap = XDefaultColormap(xw.dpy, xw.scr);
-+	else
-+		xw.cmap = XCreateColormap(xw.dpy, XRootWindow(xw.dpy, xw.scr), xw.vis, None);
- 	xloadcols();
- 
- 	/* adjust fixed window geometry */
-_AT_@ -2647,7 +2690,7 @@ xinit(void) {
- 	parent = opt_embed ? strtol(opt_embed, NULL, 0) : \
- 			XRootWindow(xw.dpy, xw.scr);
- 	xw.win = XCreateWindow(xw.dpy, parent, xw.fx, xw.fy,
--			xw.w, xw.h, 0, XDefaultDepth(xw.dpy, xw.scr), InputOutput,
-+			xw.w, xw.h, 0, xw.depth, InputOutput,
- 			xw.vis,
- 			CWBackPixel | CWBorderPixel | CWBitGravity | CWEventMask
- 			| CWColormap,
-_AT_@ -2655,10 +2698,11 @@ xinit(void) {
- 
- 	memset(&gcvalues, 0, sizeof(gcvalues));
- 	gcvalues.graphics_exposures = False;
--	dc.gc = XCreateGC(xw.dpy, parent, GCGraphicsExposures,
-+	xw.buf = XCreatePixmap(xw.dpy, xw.win, xw.w, xw.h, xw.depth);
-+	dc.gc = XCreateGC(xw.dpy,
-+			(USE_ARGB)? xw.buf: parent,
-+			GCGraphicsExposures,
- 			&gcvalues);
--	xw.buf = XCreatePixmap(xw.dpy, xw.win, xw.w, xw.h,
--			DefaultDepth(xw.dpy, xw.scr));
- 	XSetForeground(xw.dpy, dc.gc, dc.col[defaultbg].pixel);
- 	XFillRectangle(xw.dpy, xw.buf, dc.gc, 0, 0, xw.w, xw.h);
- 
diff --git a/st.suckless.org/patches/st-0.4.1-externalpipe.diff b/st.suckless.org/patches/st-0.4.1-externalpipe.diff
deleted file mode 100644
index 7c9c9e2..0000000
--- a/st.suckless.org/patches/st-0.4.1-externalpipe.diff
+++ /dev/null
_AT_@ -1,109 +0,0 @@
-diff --git a/st.c b/st.c
-index 686ed5d..697cd43 100644
---- a/st.c
-+++ b/st.c
-_AT_@ -249,6 +249,7 @@ typedef union {
- 	unsigned int ui;
- 	float f;
- 	const void *v;
-+	const char *s;
- } Arg;
- 
- typedef struct {
-_AT_@ -263,6 +264,7 @@ static void clippaste(const Arg *);
- static void numlock(const Arg *);
- static void selpaste(const Arg *);
- static void xzoom(const Arg *);
-+static void externalpipe(const Arg *);
- 
- /* Config.h for applying patches and the configuration. */
- #include "config.h"
-_AT_@ -1024,15 +1026,22 @@ execsh(void) {
- void
- sigchld(int a) {
- 	int stat = 0;
-+	pid_t r;
- 
--	if(waitpid(pid, &stat, 0) < 0)
--		die("Waiting for pid %hd failed: %s
",	pid, SERRNO);
-+	r = wait(&stat);
-+	if(r < 0)
-+		die("wait(): %s
", SERRNO);
- 
--	if(WIFEXITED(stat)) {
--		exit(WEXITSTATUS(stat));
--	} else {
--		exit(EXIT_FAILURE);
-+	if(r == pid){
-+		/* _the_ sub process */
-+		if(WIFEXITED(stat)) {
-+			exit(WEXITSTATUS(stat));
-+		} else {
-+			exit(EXIT_FAILURE);
-+		}
- 	}
-+
-+	/* something else we've forked out */
- }
- 
- void
-_AT_@ -2593,6 +2602,59 @@ xzoom(const Arg *arg) {
- }
- 
- void
-+externalpipe(const Arg *arg)
-+{
-+	int to[2]; /* 0 = read, 1 = write */
-+	pid_t child;
-+	int y, x;
-+	void (*oldsigpipe)(int);
-+
-+	if(pipe(to) == -1)
-+		return;
-+
-+	/* sigchld() handles this */
-+	switch((child = fork())){
-+		case -1:
-+			close(to[0]), close(to[1]);
-+			return;
-+		case 0:
-+			/* child */
-+			close(to[1]);
-+			dup2(to[0], STDIN_FILENO); /* 0<&to */
-+			close(to[0]);
-+			execvp(
-+					"sh",
-+					(char *const []){
-+						"/bin/sh",
-+						"-c",
-+						(char *)arg->s,
-+						0
-+					});
-+			exit(127);
-+	}
-+
-+	/* parent */
-+	close(to[0]);
-+	/* ignore sigpipe for now, in case child exits early */
-+	oldsigpipe = signal(SIGPIPE, SIG_IGN);
-+
-+	for(y = 0; y < term.row; y++){
-+		for(x = 0; x < term.col; x++){
-+			if(write(to[1], term.line[y][x].c, 1) == -1)
-+				goto done;
-+		}
-+		if(write(to[1], "
", 1) == -1)
-+			break;
-+	}
-+
-+done:
-+	close(to[1]);
-+
-+	/* restore */
-+	signal(SIGPIPE, oldsigpipe);
-+}
-+
-+void
- xinit(void) {
- 	XSetWindowAttributes attrs;
- 	XGCValues gcvalues;
diff --git a/st.suckless.org/patches/st-0.4.1-wordbreak.diff b/st.suckless.org/patches/st-0.4.1-wordbreak.diff
deleted file mode 100644
index 6ee66eb..0000000
--- a/st.suckless.org/patches/st-0.4.1-wordbreak.diff
+++ /dev/null
_AT_@ -1,57 +0,0 @@
-diff --git a/config.def.h b/config.def.h
-index d1c20bd..d8db06d 100644
---- a/config.def.h
-+++ b/config.def.h
-_AT_@ -24,7 +24,7 @@ static unsigned int actionfps = 30;
- static char termname[] = "st-256color";
- 
- static unsigned int tabspaces = 8;
--
-+#define WORD_BREAK " "
- 
- /* Terminal colors (16 first used in escape sequence) */
- static const char *colorname[] = {
-diff --git a/st.c b/st.c
-index 686ed5d..4f5bb05 100644
---- a/st.c
-+++ b/st.c
-_AT_@ -288,6 +288,7 @@ typedef struct {
- } DC;
- 
- static void die(const char *, ...);
-+static bool is_word_break(char);
- static void draw(void);
- static void redraw(int);
- static void drawregion(int, int, int, int);
-_AT_@ -933,11 +934,11 @@ brelease(XEvent *e) {
- 			} else if(TIMEDIFF(now, sel.tclick1) <= doubleclicktimeout) {
- 				/* double click to select word */
- 				sel.bx = sel.ex;
--				while(sel.bx > 0 && term.line[sel.ey][sel.bx-1].c[0] != ' ') {
-+				while(sel.bx > 0 && !is_word_break(term.line[sel.ey][sel.bx-1].c[0])) {
- 					sel.bx--;
- 				}
- 				sel.b.x = sel.bx;
--				while(sel.ex < term.col-1 && term.line[sel.ey][sel.ex+1].c[0] != ' ') {
-+				while(sel.ex < term.col-1 && !is_word_break(term.line[sel.ey][sel.ex+1].c[0])) {
- 					sel.ex++;
- 				}
- 				sel.e.x = sel.ex;
-_AT_@ -986,6 +987,17 @@ die(const char *errstr, ...) {
- 	exit(EXIT_FAILURE);
- }
- 
-+bool
-+is_word_break(char c) {
-+	static char *word_break = WORD_BREAK;
-+	char *s = word_break;
-+	while(*s) {
-+		if(*s == c) return true;
-+		s++;
-+	}
-+	return false;
-+}
-+
- void
- execsh(void) {
- 	char **args;
diff --git a/st.suckless.org/patches/st-0.5-argbbg.diff b/st.suckless.org/patches/st-0.5-argbbg.diff
deleted file mode 100644
index 83cc45a..0000000
--- a/st.suckless.org/patches/st-0.5-argbbg.diff
+++ /dev/null
_AT_@ -1,169 +0,0 @@
-diff --git a/config.def.h b/config.def.h
-index 58b470e..ce34f55 100644
---- a/config.def.h
-+++ b/config.def.h
-_AT_@ -48,6 +48,8 @@ static char termname[] = "st-256color";
- 
- static unsigned int tabspaces = 8;
- 
-+/* background opacity */
-+static const int alpha = 0xdd;
- 
- /* Terminal colors (16 first used in escape sequence) */
- static const char *colorname[] = {
-_AT_@ -75,6 +77,7 @@ static const char *colorname[] = {
- 
- 	/* more colors can be added after 255 to use with DefaultXX */
- 	"#cccccc",
-+	"black",
- };
- 
- 
-_AT_@ -83,7 +86,7 @@ static const char *colorname[] = {
-  * foreground, background, cursor
-  */
- static unsigned int defaultfg = 7;
--static unsigned int defaultbg = 0;
-+static unsigned int defaultbg = 257;
- static unsigned int defaultcs = 256;
- 
- /*
-diff --git a/config.mk b/config.mk
-index 97afa2c..18aec14 100644
---- a/config.mk
-+++ b/config.mk
-_AT_@ -14,7 +14,7 @@ X11LIB = /usr/X11R6/lib
- INCS = -I. -I/usr/include -I${X11INC} \
-        `pkg-config --cflags fontconfig` \
-        `pkg-config --cflags freetype2`
--LIBS = -L/usr/lib -lc -L${X11LIB} -lX11 -lutil -lXext -lXft \
-+LIBS = -L/usr/lib -lc -L${X11LIB} -lX11 -lutil -lXext -lXft -lXrender \
-        `pkg-config --libs fontconfig`  \
-        `pkg-config --libs freetype2`
- 
-diff --git a/st.c b/st.c
-index 392f12d..5b05a5f 100644
---- a/st.c
-+++ b/st.c
-_AT_@ -65,6 +65,7 @@ char *argv0;
- #define XK_ANY_MOD    UINT_MAX
- #define XK_NO_MOD     0
- #define XK_SWITCH_MOD (1<<13)
-+#define OPAQUE 0Xff
- 
- #define REDRAW_TIMEOUT (80*1000) /* 80 ms */
- 
-_AT_@ -79,6 +80,7 @@ char *argv0;
- #define ATTRCMP(a, b) ((a).mode != (b).mode || (a).fg != (b).fg || (a).bg != (b).bg)
- #define IS_SET(flag) ((term.mode & (flag)) != 0)
- #define TIMEDIFF(t1, t2) ((t1.tv_sec-t2.tv_sec)*1000 + (t1.tv_usec-t2.tv_usec)/1000)
-+#define USE_ARGB (alpha != OPAQUE && opt_embed == NULL)
- #define CEIL(x) (((x) != (int) (x)) ? (x) + 1 : (x))
- 
- #define TRUECOLOR(r,g,b) (1 << 24 | (r) << 16 | (g) << 8 | (b))
-_AT_@ -255,6 +257,7 @@ typedef struct {
- 	int w, h; /* window width and height */
- 	int ch; /* char height */
- 	int cw; /* char width  */
-+	int depth; /* bit depth */
- 	char state; /* focus, redraw, visible */
- } XWindow;
- 
-_AT_@ -2706,8 +2709,7 @@ xresize(int col, int row) {
- 	xw.th = MAX(1, row * xw.ch);
- 
- 	XFreePixmap(xw.dpy, xw.buf);
--	xw.buf = XCreatePixmap(xw.dpy, xw.win, xw.w, xw.h,
--			DefaultDepth(xw.dpy, xw.scr));
-+	xw.buf = XCreatePixmap(xw.dpy, xw.win, xw.w, xw.h, xw.depth);
- 	XftDrawChange(xw.draw, xw.buf);
- 	xclear(0, 0, xw.w, xw.h);
- }
-_AT_@ -2738,6 +2740,13 @@ xloadcols(void) {
- 		}
- 	}
- 
-+	/* set alpha value of bg color */
-+	if (USE_ARGB) {
-+		dc.col[defaultbg].color.alpha = (0xffff * alpha) / OPAQUE; //0xcccc;
-+		dc.col[defaultbg].pixel &= 0x00111111;
-+		dc.col[defaultbg].pixel |= alpha << 24; // 0xcc000000;
-+	}
-+
- 	/* load colors [16-255] ; same colors as xterm */
- 	for(i = 16, r = 0; r < 6; r++) {
- 		for(g = 0; g < 6; g++) {
-_AT_@ -2992,7 +3001,38 @@ xinit(void) {
- 	if(!(xw.dpy = XOpenDisplay(NULL)))
- 		die("Can't open display
");
- 	xw.scr = XDefaultScreen(xw.dpy);
--	xw.vis = XDefaultVisual(xw.dpy, xw.scr);
-+	xw.depth = (USE_ARGB)? 32: XDefaultDepth(xw.dpy, xw.scr);
-+	if (! USE_ARGB)
-+		xw.vis = XDefaultVisual(xw.dpy, xw.scr);
-+	else {
-+		XVisualInfo *vis;
-+		XRenderPictFormat *fmt;
-+		int nvi;
-+		int i;
-+
-+		XVisualInfo tpl = {
-+			.screen = xw.scr,
-+			.depth = 32,
-+			.class = TrueColor
-+		};
-+
-+		vis = XGetVisualInfo(xw.dpy, VisualScreenMask | VisualDepthMask | VisualClassMask, &tpl, &nvi);
-+		xw.vis = NULL;
-+		for(i = 0; i < nvi; i ++) {
-+			fmt = XRenderFindVisualFormat(xw.dpy, vis[i].visual);
-+			if (fmt->type == PictTypeDirect && fmt->direct.alphaMask) {
-+				xw.vis = vis[i].visual;
-+				break;
-+			}
-+		}
-+
-+		XFree(vis);
-+
-+		if (! xw.vis) {
-+			fprintf(stderr, "Couldn't find ARGB visual.
");
-+			exit(1);
-+		}
-+	}
- 
- 	/* font */
- 	if(!FcInit())
-_AT_@ -3002,7 +3042,10 @@ xinit(void) {
- 	xloadfonts(usedfont, 0);
- 
- 	/* colors */
--	xw.cmap = XDefaultColormap(xw.dpy, xw.scr);
-+	if (! USE_ARGB)
-+		xw.cmap = XDefaultColormap(xw.dpy, xw.scr);
-+	else
-+		xw.cmap = XCreateColormap(xw.dpy, XRootWindow(xw.dpy, xw.scr), xw.vis, None);
- 	xloadcols();
- 
- 	/* adjust fixed window geometry */
-_AT_@ -3036,16 +3079,17 @@ xinit(void) {
- 	parent = opt_embed ? strtol(opt_embed, NULL, 0) : \
- 			XRootWindow(xw.dpy, xw.scr);
- 	xw.win = XCreateWindow(xw.dpy, parent, xw.fx, xw.fy,
--			xw.w, xw.h, 0, XDefaultDepth(xw.dpy, xw.scr), InputOutput,
-+			xw.w, xw.h, 0, xw.depth, InputOutput,
- 			xw.vis, CWBackPixel | CWBorderPixel | CWBitGravity
- 			| CWEventMask | CWColormap, &xw.attrs);
- 
- 	memset(&gcvalues, 0, sizeof(gcvalues));
- 	gcvalues.graphics_exposures = False;
--	dc.gc = XCreateGC(xw.dpy, parent, GCGraphicsExposures,
-+	xw.buf = XCreatePixmap(xw.dpy, xw.win, xw.w, xw.h, xw.depth);
-+	dc.gc = XCreateGC(xw.dpy,
-+			(USE_ARGB)? xw.buf: parent,
-+			GCGraphicsExposures,
- 			&gcvalues);
--	xw.buf = XCreatePixmap(xw.dpy, xw.win, xw.w, xw.h,
--			DefaultDepth(xw.dpy, xw.scr));
- 	XSetForeground(xw.dpy, dc.gc, dc.col[defaultbg].pixel);
- 	XFillRectangle(xw.dpy, xw.buf, dc.gc, 0, 0, xw.w, xw.h);
- 
diff --git a/st.suckless.org/patches/st-0.5-externalpipe.diff b/st.suckless.org/patches/st-0.5-externalpipe.diff
deleted file mode 100644
index 8a1ef05..0000000
--- a/st.suckless.org/patches/st-0.5-externalpipe.diff
+++ /dev/null
_AT_@ -1,109 +0,0 @@
-diff --git a/st.c b/st.c
-index 392f12d..31660c8 100644
---- a/st.c
-+++ b/st.c
-_AT_@ -301,6 +301,7 @@ typedef union {
- 	unsigned int ui;
- 	float f;
- 	const void *v;
-+	const char *s;
- } Arg;
- 
- typedef struct {
-_AT_@ -315,6 +316,7 @@ static void clippaste(const Arg *);
- static void numlock(const Arg *);
- static void selpaste(const Arg *);
- static void xzoom(const Arg *);
-+static void externalpipe(const Arg *);
- static void printsel(const Arg *);
- static void printscreen(const Arg *) ;
- static void toggleprinter(const Arg *);
-_AT_@ -1179,15 +1181,22 @@ execsh(void) {
- void
- sigchld(int a) {
- 	int stat = 0;
-+	pid_t r;
- 
--	if(waitpid(pid, &stat, 0) < 0)
--		die("Waiting for pid %hd failed: %s
", pid, SERRNO);
-+	r = wait(&stat);
-+	if(r < 0)
-+		die("wait(): %s
", strerror(errno));
- 
--	if(WIFEXITED(stat)) {
--		exit(WEXITSTATUS(stat));
--	} else {
--		exit(EXIT_FAILURE);
-+	if(r == pid){
-+		/* _the_ sub process */
-+		if(WIFEXITED(stat)) {
-+			exit(WEXITSTATUS(stat));
-+		} else {
-+			exit(EXIT_FAILURE);
-+		}
- 	}
-+
-+	/* something else we've forked out */
- }
- 
- void
-_AT_@ -2982,6 +2991,59 @@ xzoom(const Arg *arg) {
- }
- 
- void
-+externalpipe(const Arg *arg)
-+{
-+	int to[2]; /* 0 = read, 1 = write */
-+	pid_t child;
-+	int y, x;
-+	void (*oldsigpipe)(int);
-+
-+	if(pipe(to) == -1)
-+		return;
-+
-+	/* sigchld() handles this */
-+	switch((child = fork())){
-+		case -1:
-+			close(to[0]), close(to[1]);
-+			return;
-+		case 0:
-+			/* child */
-+			close(to[1]);
-+			dup2(to[0], STDIN_FILENO); /* 0<&to */
-+			close(to[0]);
-+			execvp(
-+					"sh",
-+					(char *const []){
-+						"/bin/sh",
-+						"-c",
-+						(char *)arg->s,
-+						0
-+					});
-+			exit(127);
-+	}
-+
-+	/* parent */
-+	close(to[0]);
-+	/* ignore sigpipe for now, in case child exits early */
-+	oldsigpipe = signal(SIGPIPE, SIG_IGN);
-+
-+	for(y = 0; y < term.row; y++){
-+		for(x = 0; x < term.col; x++){
-+			if(write(to[1], term.line[y][x].c, 1) == -1)
-+				goto done;
-+		}
-+		if(write(to[1], "
", 1) == -1)
-+			break;
-+	}
-+
-+done:
-+	close(to[1]);
-+
-+	/* restore */
-+	signal(SIGPIPE, oldsigpipe);
-+}
-+
-+void
- xinit(void) {
- 	XGCValues gcvalues;
- 	Cursor cursor;
diff --git a/st.suckless.org/patches/st-0.5-hidecursor.diff b/st.suckless.org/patches/st-0.5-hidecursor.diff
deleted file mode 100644
index 9ddbc4d..0000000
--- a/st.suckless.org/patches/st-0.5-hidecursor.diff
+++ /dev/null
_AT_@ -1,82 +0,0 @@
-diff --git a/st.c b/st.c
-index 392f12d..52deb92 100644
---- a/st.c
-+++ b/st.c
-_AT_@ -248,6 +248,8 @@ typedef struct {
- 	Draw draw;
- 	Visual *vis;
- 	XSetWindowAttributes attrs;
-+	Cursor cursor, bcursor; /* visible and blank cursors */
-+	bool cursorstate; /* is cursor currently visible */
- 	int scr;
- 	bool isfixed; /* is fixed geometry? */
- 	int fx, fy, fw, fh; /* fixed geometry */
-_AT_@ -1112,6 +1114,13 @@ void
- bmotion(XEvent *e) {
- 	int oldey, oldex, oldsby, oldsey;
- 
-+	if(!xw.cursorstate) {
-+		XDefineCursor(xw.dpy, xw.win, xw.cursor);
-+		xw.cursorstate = true;
-+		if(!IS_SET(MODE_MOUSEMANY))
-+			xsetpointermotion(0);
-+	}
-+
- 	if(IS_SET(MODE_MOUSE)) {
- 		mousereport(e);
- 		return;
-_AT_@ -2984,10 +2993,12 @@ xzoom(const Arg *arg) {
- void
- xinit(void) {
- 	XGCValues gcvalues;
--	Cursor cursor;
- 	Window parent;
- 	int sw, sh;
- 	pid_t thispid = getpid();
-+	XColor xcwhite = {.red = 0xffff, .green = 0xffff, .blue = 0xffff};
-+	XColor xcblack = {.red = 0x0000, .green = 0x0000, .blue = 0x0000};
-+	Pixmap blankpm;
- 
- 	if(!(xw.dpy = XOpenDisplay(NULL)))
- 		die("Can't open display
");
-_AT_@ -3071,11 +3082,13 @@ xinit(void) {
- 		die("XCreateIC failed. Could not obtain input method.
");
- 
- 	/* white cursor, black outline */
--	cursor = XCreateFontCursor(xw.dpy, XC_xterm);
--	XDefineCursor(xw.dpy, xw.win, cursor);
--	XRecolorCursor(xw.dpy, cursor,
--		&(XColor){.red = 0xffff, .green = 0xffff, .blue = 0xffff},
--		&(XColor){.red = 0x0000, .green = 0x0000, .blue = 0x0000});
-+	xw.cursor = XCreateFontCursor(xw.dpy, XC_xterm);
-+	XDefineCursor(xw.dpy, xw.win, xw.cursor);
-+	XRecolorCursor(xw.dpy, xw.cursor, &xcwhite, &xcblack);
-+	xw.cursorstate = true;
-+	blankpm = XCreateBitmapFromData(xw.dpy, xw.win, &(char){0}, 1, 1);
-+	xw.bcursor = XCreatePixmapCursor(xw.dpy, blankpm, blankpm,
-+								     &xcblack, &xcblack, 0, 0);
- 
- 	xw.xembed = XInternAtom(xw.dpy, "_XEMBED", False);
- 	xw.wmdeletewin = XInternAtom(xw.dpy, "WM_DELETE_WINDOW", False);
-_AT_@ -3537,6 +3550,8 @@ unmap(XEvent *ev) {
- 
- void
- xsetpointermotion(int set) {
-+	if(!set && !xw.cursorstate)
-+		return;
- 	MODBIT(xw.attrs.event_mask, set, PointerMotionMask);
- 	XChangeWindowAttributes(xw.dpy, xw.win, CWEventMask, &xw.attrs);
- }
-_AT_@ -3630,6 +3645,12 @@ kpress(XEvent *ev) {
- 	Status status;
- 	Shortcut *bp;
- 
-+	if(xw.cursorstate) {
-+		XDefineCursor(xw.dpy, xw.win, xw.bcursor);
-+		xsetpointermotion(1);
-+		xw.cursorstate = false;
-+	}
-+
- 	if(IS_SET(MODE_KBDLOCK))
- 		return;
- 
diff --git a/st.suckless.org/patches/st-0.5-no-bold-colors.diff b/st.suckless.org/patches/st-0.5-no-bold-colors.diff
deleted file mode 100644
index 4f8814f..0000000
--- a/st.suckless.org/patches/st-0.5-no-bold-colors.diff
+++ /dev/null
_AT_@ -1,13 +0,0 @@
-diff --git a/st.c b/st.c
-index 392f12d..f893147 100644
---- a/st.c
-+++ b/st.c
-_AT_@ -3152,7 +3152,7 @@ xdraws(char *s, Glyph base, int x, int y, int charlen, int bytelen) {
- 	if(base.mode & ATTR_BOLD) {
- 		if(BETWEEN(base.fg, 0, 7)) {
- 			/* basic system colors */
--			fg = &dc.col[base.fg + 8];
-+			fg = &dc.col[base.fg];
- 		} else if(BETWEEN(base.fg, 16, 195)) {
- 			/* 256 colors */
- 			fg = &dc.col[base.fg + 36];
diff --git a/st.suckless.org/patches/st-0.5-solarized-dark.diff b/st.suckless.org/patches/st-0.5-solarized-dark.diff
deleted file mode 100644
index 6c6d0bd..0000000
--- a/st.suckless.org/patches/st-0.5-solarized-dark.diff
+++ /dev/null
_AT_@ -1,65 +0,0 @@
-diff --git a/config.def.h b/config.def.h
-index 58b470e..f1c5ed1 100644
---- a/config.def.h
-+++ b/config.def.h
-_AT_@ -51,30 +51,23 @@ static unsigned int tabspaces = 8;
- 
- /* Terminal colors (16 first used in escape sequence) */
- static const char *colorname[] = {
--	/* 8 normal colors */
--	"black",
--	"red3",
--	"green3",
--	"yellow3",
--	"blue2",
--	"magenta3",
--	"cyan3",
--	"gray90",
--
--	/* 8 bright colors */
--	"gray50",
--	"red",
--	"green",
--	"yellow",
--	"#5c5cff",
--	"magenta",
--	"cyan",
--	"white",
--
--	[255] = 0,
--
--	/* more colors can be added after 255 to use with DefaultXX */
--	"#cccccc",
-+	/* solarized dark */
-+	"#073642",  /*  0: black    */
-+	"#dc322f",  /*  1: red      */
-+	"#859900",  /*  2: green    */
-+	"#b58900",  /*  3: yellow   */
-+	"#268bd2",  /*  4: blue     */
-+	"#d33682",  /*  5: magenta  */
-+	"#2aa198",  /*  6: cyan     */
-+	"#eee8d5",  /*  7: white    */
-+	"#002b36",  /*  8: brblack  */
-+	"#cb4b16",  /*  9: brred    */
-+	"#586e75",  /* 10: brgreen  */
-+	"#657b83",  /* 11: bryellow */
-+	"#839496",  /* 12: brblue   */
-+	"#6c71c4",  /* 13: brmagenta*/
-+	"#93a1a1",  /* 14: brcyan   */
-+	"#fdf6e3",  /* 15: brwhite  */
- };
- 
- 
-_AT_@ -82,9 +75,9 @@ static const char *colorname[] = {
-  * Default colors (colorname index)
-  * foreground, background, cursor
-  */
--static unsigned int defaultfg = 7;
--static unsigned int defaultbg = 0;
--static unsigned int defaultcs = 256;
-+static unsigned int defaultfg = 12;
-+static unsigned int defaultbg = 8;
-+static unsigned int defaultcs = 14;
- 
- /*
-  * Colors used, when the specific fg == defaultfg. So in reverse mode this
diff --git a/st.suckless.org/patches/st-0.5-solarized-light.diff b/st.suckless.org/patches/st-0.5-solarized-light.diff
deleted file mode 100644
index 422a02a..0000000
--- a/st.suckless.org/patches/st-0.5-solarized-light.diff
+++ /dev/null
_AT_@ -1,65 +0,0 @@
-diff --git a/config.def.h b/config.def.h
-index 58b470e..ec39cca 100644
---- a/config.def.h
-+++ b/config.def.h
-_AT_@ -51,30 +51,23 @@ static unsigned int tabspaces = 8;
- 
- /* Terminal colors (16 first used in escape sequence) */
- static const char *colorname[] = {
--	/* 8 normal colors */
--	"black",
--	"red3",
--	"green3",
--	"yellow3",
--	"blue2",
--	"magenta3",
--	"cyan3",
--	"gray90",
--
--	/* 8 bright colors */
--	"gray50",
--	"red",
--	"green",
--	"yellow",
--	"#5c5cff",
--	"magenta",
--	"cyan",
--	"white",
--
--	[255] = 0,
--
--	/* more colors can be added after 255 to use with DefaultXX */
--	"#cccccc",
-+	/* solarized light */
-+	"#eee8d5",  /*  0: black    */
-+	"#dc322f",  /*  1: red      */
-+	"#859900",  /*  2: green    */
-+	"#b58900",  /*  3: yellow   */
-+	"#268bd2",  /*  4: blue     */
-+	"#d33682",  /*  5: magenta  */
-+	"#2aa198",  /*  6: cyan     */
-+	"#073642",  /*  7: white    */
-+	"#fdf6e3",  /*  8: brblack  */
-+	"#cb4b16",  /*  9: brred    */
-+	"#93a1a1",  /* 10: brgreen  */
-+	"#839496",  /* 11: bryellow */
-+	"#657b83",  /* 12: brblue   */
-+	"#6c71c4",  /* 13: brmagenta*/
-+	"#586e75",  /* 14: brcyan   */
-+	"#002b36",  /* 15: brwhite  */
- };
- 
- 
-_AT_@ -82,9 +75,9 @@ static const char *colorname[] = {
-  * Default colors (colorname index)
-  * foreground, background, cursor
-  */
--static unsigned int defaultfg = 7;
--static unsigned int defaultbg = 0;
--static unsigned int defaultcs = 256;
-+static unsigned int defaultfg = 12;
-+static unsigned int defaultbg = 8;
-+static unsigned int defaultcs = 14;
- 
- /*
-  * Colors used, when the specific fg == defaultfg. So in reverse mode this
diff --git a/st.suckless.org/patches/st-0.5-wordbreak.diff b/st.suckless.org/patches/st-0.5-wordbreak.diff
deleted file mode 100644
index f30155e..0000000
--- a/st.suckless.org/patches/st-0.5-wordbreak.diff
+++ /dev/null
_AT_@ -1,52 +0,0 @@
-diff --git a/config.def.h b/config.def.h
-index 58b470e..8a8d968 100644
---- a/config.def.h
-+++ b/config.def.h
-_AT_@ -47,7 +47,7 @@ static int bellvolume = 0;
- static char termname[] = "st-256color";
- 
- static unsigned int tabspaces = 8;
--
-+#define WORD_BREAK " "
- 
- /* Terminal colors (16 first used in escape sequence) */
- static const char *colorname[] = {
-diff --git a/st.c b/st.c
-index 392f12d..6a32d03 100644
---- a/st.c
-+++ b/st.c
-_AT_@ -343,6 +343,7 @@ typedef struct {
- } DC;
- 
- static void die(const char *, ...);
-+static bool is_word_break(char);
- static void draw(void);
- static void redraw(int);
- static void drawregion(int, int, int, int);
-_AT_@ -751,7 +752,7 @@ selsnap(int mode, int *x, int *y, int direction) {
- 		 */
- 		if(direction > 0) {
- 			i = term.col;
--			while(--i > 0 && term.line[*y][i].c[0] == ' ')
-+			while(--i > 0 && is_word_break(term.line[*y][i].c[0]))
- 				/* nothing */;
- 			if(i > 0 && i < *x)
- 				*x = term.col - 1;
-_AT_@ -1141,6 +1142,17 @@ die(const char *errstr, ...) {
- 	exit(EXIT_FAILURE);
- }
- 
-+bool
-+is_word_break(char c) {
-+	static char *word_break = WORD_BREAK;
-+	char *s = word_break;
-+	while(*s) {
-+		if(*s == c) return true;
-+		s++;
-+	}
-+	return false;
-+}
-+
- void
- execsh(void) {
- 	char **args;
diff --git a/st.suckless.org/patches/st-0.6-argbbg.diff b/st.suckless.org/patches/st-0.6-argbbg.diff
deleted file mode 100644
index 4db4442..0000000
--- a/st.suckless.org/patches/st-0.6-argbbg.diff
+++ /dev/null
_AT_@ -1,170 +0,0 @@
-diff --git a/config.def.h b/config.def.h
-index 64e75b8..9a27c14 100644
---- a/config.def.h
-+++ b/config.def.h
-_AT_@ -58,6 +58,8 @@ static char termname[] = "st-256color";
- 
- static unsigned int tabspaces = 8;
- 
-+/* bg opacity */
-+static const int alpha = 0xdd;
- 
- /* Terminal colors (16 first used in escape sequence) */
- static const char *colorname[] = {
-_AT_@ -85,6 +87,7 @@ static const char *colorname[] = {
- 
- 	/* more colors can be added after 255 to use with DefaultXX */
- 	"#cccccc",
-+	"black",
- };
- 
- 
-_AT_@ -93,7 +96,7 @@ static const char *colorname[] = {
-  * foreground, background, cursor
-  */
- static unsigned int defaultfg = 7;
--static unsigned int defaultbg = 0;
-+static unsigned int defaultbg = 257;
- static unsigned int defaultcs = 256;
- 
- /*
-diff --git a/config.mk b/config.mk
-index 67844dc..005b1c6 100644
---- a/config.mk
-+++ b/config.mk
-_AT_@ -14,7 +14,7 @@ X11LIB = /usr/X11R6/lib
- INCS = -I. -I/usr/include -I${X11INC} \
-        `pkg-config --cflags fontconfig` \
-        `pkg-config --cflags freetype2`
--LIBS = -L/usr/lib -lc -L${X11LIB} -lm -lrt -lX11 -lutil -lXext -lXft \
-+LIBS = -L/usr/lib -lc -L${X11LIB} -lm -lrt -lX11 -lutil -lXext -lXft -lXrender\
-        `pkg-config --libs fontconfig`  \
-        `pkg-config --libs freetype2`
- 
-diff --git a/st.c b/st.c
-index b89d094..d212134 100644
---- a/st.c
-+++ b/st.c
-_AT_@ -61,6 +61,7 @@ char *argv0;
- #define XK_ANY_MOD    UINT_MAX
- #define XK_NO_MOD     0
- #define XK_SWITCH_MOD (1<<13)
-+#define OPAQUE 0Xff
- 
- /* macros */
- #define MIN(a, b)  ((a) < (b) ? (a) : (b))
-_AT_@ -77,6 +78,7 @@ char *argv0;
- #define IS_SET(flag) ((term.mode & (flag)) != 0)
- #define TIMEDIFF(t1, t2) ((t1.tv_sec-t2.tv_sec)*1000 + (t1.tv_nsec-t2.tv_nsec)/1E6)
- #define MODBIT(x, set, bit) ((set) ? ((x) |= (bit)) : ((x) &= ~(bit)))
-+#define USE_ARGB (alpha != OPAQUE && opt_embed == NULL)
- 
- #define TRUECOLOR(r,g,b) (1 << 24 | (r) << 16 | (g) << 8 | (b))
- #define IS_TRUECOL(x)    (1 << 24 & (x))
-_AT_@ -265,6 +267,7 @@ typedef struct {
- 	int w, h; /* window width and height */
- 	int ch; /* char height */
- 	int cw; /* char width  */
-+	int depth; /*  bit depth */
- 	char state; /* focus, redraw, visible */
- 	int cursor; /* cursor style */
- } XWindow;
-_AT_@ -2895,8 +2898,7 @@ xresize(int col, int row) {
- 	xw.th = MAX(1, row * xw.ch);
- 
- 	XFreePixmap(xw.dpy, xw.buf);
--	xw.buf = XCreatePixmap(xw.dpy, xw.win, xw.w, xw.h,
--			DefaultDepth(xw.dpy, xw.scr));
-+	xw.buf = XCreatePixmap(xw.dpy, xw.win, xw.w, xw.h, xw.depth);
- 	XftDrawChange(xw.draw, xw.buf);
- 	xclear(0, 0, xw.w, xw.h);
- }
-_AT_@ -2946,6 +2948,14 @@ xloadcols(void) {
- 			else
- 				die("Could not allocate color %d
", i);
- 		}
-+
-+	/* set alpha value of bg color */
-+	if (USE_ARGB) {
-+		dc.col[defaultbg].color.alpha = (0xffff * alpha) / OPAQUE; //0xcccc;
-+		dc.col[defaultbg].pixel &= 0x00111111;
-+		dc.col[defaultbg].pixel |= alpha << 24; // 0xcc000000;
-+	}
-+
- 	loaded = true;
- }
- 
-_AT_@ -3189,7 +3199,38 @@ xinit(void) {
- 	if(!(xw.dpy = XOpenDisplay(NULL)))
- 		die("Can't open display
");
- 	xw.scr = XDefaultScreen(xw.dpy);
--	xw.vis = XDefaultVisual(xw.dpy, xw.scr);
-+	xw.depth = (USE_ARGB) ? 32: XDefaultDepth(xw.dpy, xw.scr);
-+	if (! USE_ARGB)
-+		xw.vis = XDefaultVisual(xw.dpy, xw.scr);
-+	else {
-+		XVisualInfo *vis;
-+		XRenderPictFormat *fmt;
-+		int nvi;
-+		int i;
-+
-+		XVisualInfo tpl = {
-+			.screen = xw.scr,
-+			.depth = 32,
-+			.class = TrueColor
-+		};
-+
-+		vis = XGetVisualInfo(xw.dpy, VisualScreenMask | VisualDepthMask | VisualClassMask, &tpl, &nvi);
-+		xw.vis = NULL;
-+		for(i = 0; i < nvi; i ++) {
-+			fmt = XRenderFindVisualFormat(xw.dpy, vis[i].visual);
-+			if (fmt->type == PictTypeDirect && fmt->direct.alphaMask) {
-+				xw.vis = vis[i].visual;
-+				break;
-+			}
-+		}
-+
-+		XFree(vis);
-+
-+		if (! xw.vis) {
-+			fprintf(stderr, "Couldn't find ARGB visual.
");
-+			exit(1);
-+		}
-+	}
- 
- 	/* font */
- 	if(!FcInit())
-_AT_@ -3199,7 +3240,10 @@ xinit(void) {
- 	xloadfonts(usedfont, 0);
- 
- 	/* colors */
--	xw.cmap = XDefaultColormap(xw.dpy, xw.scr);
-+	if (! USE_ARGB)
-+		xw.cmap = XDefaultColormap(xw.dpy, xw.scr);
-+	else
-+		xw.cmap = XCreateColormap(xw.dpy, XRootWindow(xw.dpy, xw.scr), xw.vis, None);
- 	xloadcols();
- 
- 	/* adjust fixed window geometry */
-_AT_@ -3222,16 +3266,17 @@ xinit(void) {
- 	if (!(opt_embed && (parent = strtol(opt_embed, NULL, 0))))
- 		parent = XRootWindow(xw.dpy, xw.scr);
- 	xw.win = XCreateWindow(xw.dpy, parent, xw.l, xw.t,
--			xw.w, xw.h, 0, XDefaultDepth(xw.dpy, xw.scr), InputOutput,
-+			xw.w, xw.h, 0, xw.depth, InputOutput,
- 			xw.vis, CWBackPixel | CWBorderPixel | CWBitGravity
- 			| CWEventMask | CWColormap, &xw.attrs);
- 
- 	memset(&gcvalues, 0, sizeof(gcvalues));
- 	gcvalues.graphics_exposures = False;
--	dc.gc = XCreateGC(xw.dpy, parent, GCGraphicsExposures,
-+	xw.buf = XCreatePixmap(xw.dpy, xw.win, xw.w, xw.h, xw.depth);
-+	dc.gc = XCreateGC(xw.dpy,
-+			(USE_ARGB)? xw.buf: parent,
-+			GCGraphicsExposures,
- 			&gcvalues);
--	xw.buf = XCreatePixmap(xw.dpy, xw.win, xw.w, xw.h,
--			DefaultDepth(xw.dpy, xw.scr));
- 	XSetForeground(xw.dpy, dc.gc, dc.col[defaultbg].pixel);
- 	XFillRectangle(xw.dpy, xw.buf, dc.gc, 0, 0, xw.w, xw.h);
- 
diff --git a/st.suckless.org/patches/st-0.6-clipboard.diff b/st.suckless.org/patches/st-0.6-clipboard.diff
deleted file mode 100644
index 25e6a2a..0000000
--- a/st.suckless.org/patches/st-0.6-clipboard.diff
+++ /dev/null
_AT_@ -1,13 +0,0 @@
-diff --git a/st.c b/st.c
-index b89d094..6658e6a 100644
---- a/st.c
-+++ b/st.c
-_AT_@ -1155,6 +1155,8 @@ xsetsel(char *str, Time t) {
- 	XSetSelectionOwner(xw.dpy, XA_PRIMARY, xw.win, t);
- 	if (XGetSelectionOwner(xw.dpy, XA_PRIMARY) != xw.win)
- 		selclear(0);
-+
-+	clipcopy(NULL);
- }
- 
- void
diff --git a/st.suckless.org/patches/st-0.6-copyurl.diff b/st.suckless.org/patches/st-0.6-copyurl.diff
deleted file mode 100644
index 2415f46..0000000
--- a/st.suckless.org/patches/st-0.6-copyurl.diff
+++ /dev/null
_AT_@ -1,88 +0,0 @@
-diff --git a/config.def.h b/config.def.h
-index 64e75b8..c3d4e88 100644
---- a/config.def.h
-+++ b/config.def.h
-_AT_@ -128,6 +128,7 @@ static Shortcut shortcuts[] = {
- 	{ MODKEY|ShiftMask,     XK_C,           clipcopy,       {.i =  0} },
- 	{ MODKEY|ShiftMask,     XK_V,           clippaste,      {.i =  0} },
- 	{ MODKEY,               XK_Num_Lock,    numlock,        {.i =  0} },
-+	{ MODKEY,               XK_l,           copyurl,        {.i =  0} },
- };
- 
- /*
-diff --git a/st.c b/st.c
-index b89d094..dafd5ba 100644
---- a/st.c
-+++ b/st.c
-_AT_@ -332,6 +332,7 @@ static void xzoomreset(const Arg *);
- static void printsel(const Arg *);
- static void printscreen(const Arg *) ;
- static void toggleprinter(const Arg *);
-+static void copyurl(const Arg *);
- 
- /* Config.h for applying patches and the configuration. */
- #include "config.h"
-_AT_@ -4080,3 +4081,63 @@ run:
- 	return 0;
- }
- 
-+/* select and copy the previous url on screen (do nothing if there's no url).
-+ * known bug: doesn't handle urls that span multiple lines (wontfix)
-+ * known bug: only finds first url on line (mightfix)
-+ */
-+void
-+copyurl(const Arg *arg) {
-+	/* () and [] can appear in urls, but excluding them here will reduce false
-+	 * positives when figuring out where a given url ends.
-+	 */
-+	static char URLCHARS[] = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
-+		"abcdefghijklmnopqrstuvwxyz"
-+		"0123456789-._~:/?#_AT_!$&'*+,;=%";
-+
-+	int i, row, startrow;
-+	char *linestr = calloc(sizeof(char), term.col+1); /* assume ascii */
-+	char *c, *match = NULL;
-+
-+	row = (sel.ob.x >= 0 && sel.nb.y > 0) ? sel.nb.y-1 : term.bot;
-+	LIMIT(row, term.top, term.bot);
-+	startrow = row;
-+
-+	/* find the start of the last url before selection */
-+	do {
-+		for (i = 0; i < term.col; ++i) {
-+			if (term.line[row][i].u > 127) /* assume ascii */
-+				continue;
-+			linestr[i] = term.line[row][i].u;
-+		}
-+		linestr[term.col] = '
Received on Wed Jun 15 2016 - 14:06:45 CEST

This archive was generated by hypermail 2.3.0 : Wed Jun 15 2016 - 14:12:14 CEST