it* dwm + patches Err codevoid.de 70 i Err codevoid.de 70 hgit clone git://git.codevoid.de/dwm-sdk URL:git://git.codevoid.de/dwm-sdk codevoid.de 70 1Log /git/dwm-sdk/log.gph codevoid.de 70 1Files /git/dwm-sdk/files.gph codevoid.de 70 1Refs /git/dwm-sdk/refs.gph codevoid.de 70 1README /git/dwm-sdk/file/README.gph codevoid.de 70 1LICENSE /git/dwm-sdk/file/LICENSE.gph codevoid.de 70 i--- Err codevoid.de 70 1commit 74f4a5968e3410a9017b98ceeabbaa74a3c9ce80 /git/dwm-sdk/commit/74f4a5968e3410a9017b98ceeabbaa74a3c9ce80.gph codevoid.de 70 1parent 330633b5a3c5c70618bc3c98aab68bcf4821bb6e /git/dwm-sdk/commit/330633b5a3c5c70618bc3c98aab68bcf4821bb6e.gph codevoid.de 70 hAuthor: Stefan Hagen URL:mailto:sh+git[at]codevoid[dot]de codevoid.de 70 iDate: Fri, 25 May 2018 10:51:00 +0200 Err codevoid.de 70 i Err codevoid.de 70 iStyle + self_restart patch Err codevoid.de 70 i Err codevoid.de 70 iDiffstat: Err codevoid.de 70 i M config.def.h | 4 +++- Err codevoid.de 70 i M config.h | 37 ++++++++++++++++++++++++++----- Err codevoid.de 70 i A patches/dwm-r1615-selfrestart.diff | 101 +++++++++++++++++++++++++++++++ Err codevoid.de 70 i A selfrestart.c | 65 +++++++++++++++++++++++++++++++ Err codevoid.de 70 i Err codevoid.de 70 i4 files changed, 200 insertions(+), 7 deletions(-) Err codevoid.de 70 i--- Err codevoid.de 70 1diff --git a/config.def.h b/config.def.h /git/dwm-sdk/file/config.def.h.gph codevoid.de 70 it@@ -67,6 +67,8 @@ static const char *termcmd[] = { "st", NULL }; Err codevoid.de 70 i static const char scratchpadname[] = "scratchpad"; Err codevoid.de 70 i static const char *scratchpadcmd[] = { "st", "-t", scratchpadname, "-g", "120x34", NULL }; Err codevoid.de 70 i Err codevoid.de 70 i+#include "selfrestart.c" Err codevoid.de 70 i+ Err codevoid.de 70 i static Key keys[] = { Err codevoid.de 70 i /* modifier key function argument */ Err codevoid.de 70 i { MODKEY, XK_p, spawn, {.v = dmenucmd } }, Err codevoid.de 70 it@@ -104,6 +106,7 @@ static Key keys[] = { Err codevoid.de 70 i TAGKEYS( XK_7, 6) Err codevoid.de 70 i TAGKEYS( XK_8, 7) Err codevoid.de 70 i TAGKEYS( XK_9, 8) Err codevoid.de 70 i+ { MODKEY|ShiftMask, XK_r, self_restart, {0} }, Err codevoid.de 70 i { MODKEY|ShiftMask, XK_q, quit, {0} }, Err codevoid.de 70 i }; Err codevoid.de 70 i Err codevoid.de 70 it@@ -123,4 +126,3 @@ static Button buttons[] = { Err codevoid.de 70 i { ClkTagBar, MODKEY, Button1, tag, {0} }, Err codevoid.de 70 i { ClkTagBar, MODKEY, Button3, toggletag, {0} }, Err codevoid.de 70 i }; Err codevoid.de 70 i- Err codevoid.de 70 1diff --git a/config.h b/config.h /git/dwm-sdk/file/config.h.gph codevoid.de 70 it@@ -9,21 +9,33 @@ static const int systraypinningfailfirst = 1; /* 1: if pinning fails, display Err codevoid.de 70 i static const int showsystray = 1; /* 0 means no systray */ Err codevoid.de 70 i static const int showbar = 1; /* 0 means no bar */ Err codevoid.de 70 i static const int topbar = 1; /* 0 means bottom bar */ Err codevoid.de 70 i+ Err codevoid.de 70 i static const char *fonts[] = { "Droid Sans Mono for Powerline:size=11" }; Err codevoid.de 70 i static const char dmenufont[] = "Droid Sans Mono for Powerline:size=11"; Err codevoid.de 70 i+ Err codevoid.de 70 i+static const char col_vdark[] = "#1c1c1c"; Err codevoid.de 70 i+static const char col_dark[] = "#333333"; Err codevoid.de 70 i+static const char col_norm[] = "#666666"; Err codevoid.de 70 i+static const char col_full[] = "#eeeeee"; Err codevoid.de 70 i+ Err codevoid.de 70 i static const char col_gray1[] = "#222222"; Err codevoid.de 70 i static const char col_gray2[] = "#444444"; Err codevoid.de 70 i static const char col_gray3[] = "#bbbbbb"; Err codevoid.de 70 i static const char col_gray4[] = "#eeeeee"; Err codevoid.de 70 i+ Err codevoid.de 70 i static const char col_cyan[] = "#005577"; Err codevoid.de 70 i+ Err codevoid.de 70 i+ Err codevoid.de 70 i static const char *colors[][3] = { Err codevoid.de 70 i- /* fg bg border */ Err codevoid.de 70 i- [SchemeNorm] = { col_gray3, col_gray1, col_gray2 }, Err codevoid.de 70 i- [SchemeSel] = { col_gray4, col_cyan, col_cyan }, Err codevoid.de 70 i+ /* fg bg border */ Err codevoid.de 70 i+ [SchemeNorm] = { col_norm, col_vdark, col_dark }, Err codevoid.de 70 i+ [SchemeSel] = { col_full, col_vdark, col_norm }, Err codevoid.de 70 i }; Err codevoid.de 70 i Err codevoid.de 70 i+ Err codevoid.de 70 i /* tagging */ Err codevoid.de 70 i-static const char *tags[] = { "1", "2", "3", "4", "5", "6", "7", "8", "9" }; Err codevoid.de 70 i+//static const char *tags[] = { "1", "2", "3", "4", "5", "6", "7", "8", "9" }; Err codevoid.de 70 i+static const char *tags[] = { "One", "Two", "Three", "Four", "Five" }; Err codevoid.de 70 i Err codevoid.de 70 i static const Rule rules[] = { Err codevoid.de 70 i /* xprop(1): Err codevoid.de 70 it@@ -36,7 +48,7 @@ static const Rule rules[] = { Err codevoid.de 70 i }; Err codevoid.de 70 i Err codevoid.de 70 i /* layout(s) */ Err codevoid.de 70 i-static const float mfact = 0.55; /* factor of master area size [0.05..0.95] */ Err codevoid.de 70 i+static const float mfact = 0.75; /* factor of master area size [0.05..0.95] */ Err codevoid.de 70 i static const int nmaster = 1; /* number of clients in master area */ Err codevoid.de 70 i static const int resizehints = 0; /* 1 means respect size hints in tiled resizals */ Err codevoid.de 70 i Err codevoid.de 70 it@@ -70,6 +82,8 @@ static const char *passmenucmd[] = { ".dwm/passmenu", "-m", dmenumon, "-fn", d Err codevoid.de 70 i static const char *volumeupcmd[] = { ".dwm/mixer", "+2", NULL }; Err codevoid.de 70 i static const char *volumedowncmd[] = { ".dwm/mixer", "-2", NULL }; Err codevoid.de 70 i Err codevoid.de 70 i+#include "selfrestart.c" Err codevoid.de 70 i+ Err codevoid.de 70 i static Key keys[] = { Err codevoid.de 70 i /* modifier key function argument */ Err codevoid.de 70 i // application launcher Err codevoid.de 70 it@@ -137,7 +151,18 @@ static Key keys[] = { Err codevoid.de 70 i TAGKEYS( XK_7, 6) Err codevoid.de 70 i TAGKEYS( XK_8, 7) Err codevoid.de 70 i TAGKEYS( XK_9, 8) Err codevoid.de 70 i- { MODKEY|ShiftMask, XK_End, quit, {0} }, Err codevoid.de 70 i+ { MODKEY|ShiftMask, XK_End, quit, {0} }, Err codevoid.de 70 i+ { MODKEY|ShiftMask, XK_Home, self_restart, {0} }, Err codevoid.de 70 i+ Err codevoid.de 70 i+// /* Media keys */ Err codevoid.de 70 i+// { 0, XF86XK_AudioRaiseVolume, spawn, {.v = volumeupcmd } }, Err codevoid.de 70 i+// { 0, XF86XK_AudioLowerVolume, spawn, {.v = volumedowncmd } }, Err codevoid.de 70 i+// { 0, XF86XK_AudioMute, spawn, {.v = volmute } }, Err codevoid.de 70 i+// { 0, XF86XK_AudioPlay, spawn, {.v = audioplay } }, Err codevoid.de 70 i+// { 0, XF86XK_AudioPrev, spawn, {.v = audioback } }, Err codevoid.de 70 i+// { 0, XF86XK_AudioNext, spawn, {.v = audionext } }, Err codevoid.de 70 i+// { 0, XF86XK_MonBrightnessUp, spawn, {.v = backlightup } }, Err codevoid.de 70 i+// { 0, XF86XK_MonBrightnessDown, spawn, {.v = backlightdown } } Err codevoid.de 70 i }; Err codevoid.de 70 i Err codevoid.de 70 i /* button definitions */ Err codevoid.de 70 1diff --git a/patches/dwm-r1615-selfrestart.diff b/patches/dwm-r1615-selfrestart.diff /git/dwm-sdk/file/patches/dwm-r1615-selfrestart.diff.gph codevoid.de 70 it@@ -0,0 +1,101 @@ Err codevoid.de 70 i+# HG changeset patch Err codevoid.de 70 i+# User Barbu Paul - Gheorghe Err codevoid.de 70 i+# Date 1354650884 -7200 Err codevoid.de 70 i+# Node ID 6c472a21a5887c5295a331c48c4da188ec2c8413 Err codevoid.de 70 i+# Parent aaab44133a6830c9a00263731d098c01cc1d6fb5 Err codevoid.de 70 i+selfrestart now magically locates the current dwm (no need to hardcode a path) Err codevoid.de 70 i+ Err codevoid.de 70 i+diff -r aaab44133a68 -r 6c472a21a588 config.def.h Err codevoid.de 70 i+--- a/config.def.h Tue Dec 04 21:54:44 2012 +0200 Err codevoid.de 70 i++++ b/config.def.h Tue Dec 04 21:54:44 2012 +0200 Err codevoid.de 70 i+@@ -54,6 +54,8 @@ Err codevoid.de 70 i+ static const char *termcmd[] = { "urxvtc", NULL }; Err codevoid.de 70 i+ static const char *filemancmd[] = { "thunar", NULL }; Err codevoid.de 70 i+ Err codevoid.de 70 i++#include "selfrestart.c" Err codevoid.de 70 i++ Err codevoid.de 70 i+ static Key keys[] = { Err codevoid.de 70 i+ /* modifier key function argument */ Err codevoid.de 70 i+ { MODKEY, XK_r, spawn, {.v = dmenucmd } }, Err codevoid.de 70 i+@@ -89,6 +91,7 @@ Err codevoid.de 70 i+ TAGKEYS( XK_7, 6) Err codevoid.de 70 i+ TAGKEYS( XK_8, 7) Err codevoid.de 70 i+ TAGKEYS( XK_9, 8) Err codevoid.de 70 i++ { MODKEY|ShiftMask, XK_r, self_restart, {0} }, Err codevoid.de 70 i+ { MODKEY|ShiftMask, XK_q, quit, {0} }, Err codevoid.de 70 i+ }; Err codevoid.de 70 i+ Err codevoid.de 70 i+@@ -108,4 +111,3 @@ Err codevoid.de 70 i+ { ClkTagBar, MODKEY, Button1, tag, {0} }, Err codevoid.de 70 i+ { ClkTagBar, MODKEY, Button3, toggletag, {0} }, Err codevoid.de 70 i+ }; Err codevoid.de 70 i+- Err codevoid.de 70 i+diff -r aaab44133a68 -r 6c472a21a588 selfrestart.c Err codevoid.de 70 i+--- /dev/null Thu Jan 01 00:00:00 1970 +0000 Err codevoid.de 70 i++++ b/selfrestart.c Tue Dec 04 21:54:44 2012 +0200 Err codevoid.de 70 i+@@ -0,0 +1,65 @@ Err codevoid.de 70 i++#include Err codevoid.de 70 i++#include Err codevoid.de 70 i++#include Err codevoid.de 70 i++#include Err codevoid.de 70 i++#include Err codevoid.de 70 i++ Err codevoid.de 70 i++/** Err codevoid.de 70 i++ * Magically finds the current's executable path Err codevoid.de 70 i++ * Err codevoid.de 70 i++ * I'm doing the do{}while(); trick because Linux (what I'm running) is not Err codevoid.de 70 i++ * POSIX compilant and so lstat() cannot be trusted on /proc entries Err codevoid.de 70 i++ * Err codevoid.de 70 i++ * @return char* the path of the current executable Err codevoid.de 70 i++ */ Err codevoid.de 70 i++char *get_dwm_path(){ Err codevoid.de 70 i++ struct stat s; Err codevoid.de 70 i++ int r, length, rate = 42; Err codevoid.de 70 i++ char *path = NULL; Err codevoid.de 70 i++ Err codevoid.de 70 i++ if(lstat("/proc/self/exe", &s) == -1){ Err codevoid.de 70 i++ perror("lstat:"); Err codevoid.de 70 i++ return NULL; Err codevoid.de 70 i++ } Err codevoid.de 70 i++ Err codevoid.de 70 i++ length = s.st_size + 1 - rate; Err codevoid.de 70 i++ Err codevoid.de 70 i++ do{ Err codevoid.de 70 i++ length+=rate; Err codevoid.de 70 i++ Err codevoid.de 70 i++ free(path); Err codevoid.de 70 i++ path = malloc(sizeof(char) * length); Err codevoid.de 70 i++ Err codevoid.de 70 i++ if(path == NULL){ Err codevoid.de 70 i++ perror("malloc:"); Err codevoid.de 70 i++ return NULL; Err codevoid.de 70 i++ } Err codevoid.de 70 i++ Err codevoid.de 70 i++ r = readlink("/proc/self/exe", path, length); Err codevoid.de 70 i++ Err codevoid.de 70 i++ if(r == -1){ Err codevoid.de 70 i++ perror("readlink:"); Err codevoid.de 70 i++ return NULL; Err codevoid.de 70 i++ } Err codevoid.de 70 i++ }while(r >= length); Err codevoid.de 70 i++ Err codevoid.de 70 i++ path[r] = '\0'; Err codevoid.de 70 i++ Err codevoid.de 70 i++ return path; Err codevoid.de 70 i++} Err codevoid.de 70 i++ Err codevoid.de 70 i++/** Err codevoid.de 70 i++ * self-restart Err codevoid.de 70 i++ * Err codevoid.de 70 i++ * Initially inspired by: Yu-Jie Lin Err codevoid.de 70 i++ * https://sites.google.com/site/yjlnotes/notes/dwm Err codevoid.de 70 i++ */ Err codevoid.de 70 i++void self_restart(const Arg *arg) { Err codevoid.de 70 i++ char *const argv[] = {get_dwm_path(), NULL}; Err codevoid.de 70 i++ Err codevoid.de 70 i++ if(argv[0] == NULL){ Err codevoid.de 70 i++ return; Err codevoid.de 70 i++ } Err codevoid.de 70 i++ Err codevoid.de 70 i++ execv(argv[0], argv); Err codevoid.de 70 i++} Err codevoid.de 70 1diff --git a/selfrestart.c b/selfrestart.c /git/dwm-sdk/file/selfrestart.c.gph codevoid.de 70 it@@ -0,0 +1,65 @@ Err codevoid.de 70 i+#include Err codevoid.de 70 i+#include Err codevoid.de 70 i+#include Err codevoid.de 70 i+#include Err codevoid.de 70 i+#include Err codevoid.de 70 i+ Err codevoid.de 70 i+/** Err codevoid.de 70 i+ * Magically finds the current's executable path Err codevoid.de 70 i+ * Err codevoid.de 70 i+ * I'm doing the do{}while(); trick because Linux (what I'm running) is not Err codevoid.de 70 i+ * POSIX compilant and so lstat() cannot be trusted on /proc entries Err codevoid.de 70 i+ * Err codevoid.de 70 i+ * @return char* the path of the current executable Err codevoid.de 70 i+ */ Err codevoid.de 70 i+char *get_dwm_path(){ Err codevoid.de 70 i+ struct stat s; Err codevoid.de 70 i+ int r, length, rate = 42; Err codevoid.de 70 i+ char *path = NULL; Err codevoid.de 70 i+ Err codevoid.de 70 i+ if(lstat("/proc/self/exe", &s) == -1){ Err codevoid.de 70 i+ perror("lstat:"); Err codevoid.de 70 i+ return NULL; Err codevoid.de 70 i+ } Err codevoid.de 70 i+ Err codevoid.de 70 i+ length = s.st_size + 1 - rate; Err codevoid.de 70 i+ Err codevoid.de 70 i+ do{ Err codevoid.de 70 i+ length+=rate; Err codevoid.de 70 i+ Err codevoid.de 70 i+ free(path); Err codevoid.de 70 i+ path = malloc(sizeof(char) * length); Err codevoid.de 70 i+ Err codevoid.de 70 i+ if(path == NULL){ Err codevoid.de 70 i+ perror("malloc:"); Err codevoid.de 70 i+ return NULL; Err codevoid.de 70 i+ } Err codevoid.de 70 i+ Err codevoid.de 70 i+ r = readlink("/proc/self/exe", path, length); Err codevoid.de 70 i+ Err codevoid.de 70 i+ if(r == -1){ Err codevoid.de 70 i+ perror("readlink:"); Err codevoid.de 70 i+ return NULL; Err codevoid.de 70 i+ } Err codevoid.de 70 i+ }while(r >= length); Err codevoid.de 70 i+ Err codevoid.de 70 i+ path[r] = '\0'; Err codevoid.de 70 i+ Err codevoid.de 70 i+ return path; Err codevoid.de 70 i+} Err codevoid.de 70 i+ Err codevoid.de 70 i+/** Err codevoid.de 70 i+ * self-restart Err codevoid.de 70 i+ * Err codevoid.de 70 i+ * Initially inspired by: Yu-Jie Lin Err codevoid.de 70 i+ * https://sites.google.com/site/yjlnotes/notes/dwm Err codevoid.de 70 i+ */ Err codevoid.de 70 i+void self_restart(const Arg *arg) { Err codevoid.de 70 i+ char *const argv[] = {get_dwm_path(), NULL}; Err codevoid.de 70 i+ Err codevoid.de 70 i+ if(argv[0] == NULL){ Err codevoid.de 70 i+ return; Err codevoid.de 70 i+ } Err codevoid.de 70 i+ Err codevoid.de 70 i+ execv(argv[0], argv); Err codevoid.de 70 i+} Err codevoid.de 70 .