diff options
-rw-r--r-- | .SRCINFO | 26 | ||||
-rwxr-xr-x | PKGBUILD | 45 | ||||
-rwxr-xr-x | compile.sh | 7 | ||||
-rwxr-xr-x | config.def.h | 148 | ||||
-rwxr-xr-x | dwm-6.1-center.diff | 42 | ||||
-rwxr-xr-x | dwm.install | 4 | ||||
-rw-r--r-- | md5sums | 3 |
7 files changed, 275 insertions, 0 deletions
diff --git a/.SRCINFO b/.SRCINFO new file mode 100644 index 000000000000..b39c99d20d54 --- /dev/null +++ b/.SRCINFO @@ -0,0 +1,26 @@ +pkgbase = dwm-git + pkgdesc = A dynamic window manager for X + pkgver = 6.1 + pkgrel = 1 + epoch = 1 + url = http://dwm.suckless.org + install = dwm.install + arch = i686 + arch = x86_64 + license = MIT + makedepends = git + depends = libx11 + depends = libxinerama + depends = libxft + provides = dwm + conflicts = dwm + options = zipman + source = dwm::git+http://git.suckless.org/dwm + source = config.def.h + source = dwm-6.1-center.diff + md5sums = SKIP + md5sums = 596c20f45d805c872789037a338a358d + md5sums = 5f6f840c692f43f7e349bb87e895ff26 + +pkgname = dwm-git + diff --git a/PKGBUILD b/PKGBUILD new file mode 100755 index 000000000000..d94f4bd4b342 --- /dev/null +++ b/PKGBUILD @@ -0,0 +1,45 @@ +pkgname=dwm-git +_pkgname=dwm +pkgdesc="dwm with uleenucks personalisations" +pkgver=6.1 +pkgver(){ + cd $_pkgname + git describe --tags |sed 's/-/./g' +} +pkgrel=1 +pkgdesc="A dynamic window manager for X" +url="http://dwm.suckless.org" +arch=('i686' 'x86_64') +license=('MIT') +options=(zipman) +depends=('libx11' 'libxinerama' 'libxft') +makedepends=('git') +install=dwm.install +provides=('dwm') +conflicts=('dwm') +epoch=1 +source=("$_pkgname::git+http://git.suckless.org/dwm" + config.def.h + dwm-6.1-center.diff) + +. md5sums +prepare() { + if [[ -f $SRCDEST/config.def.h ]]; then + ln -sf $SRCDEST/config.def.h $srcdir/dwm/config.h + fi +} + +build() { + cd $_pkgname + + patch -p1 < ../dwm-6.1-center.diff || exit 1 + make X11INC=/usr/include/X11 X11LIB=/usr/lib/X11 +} + +package() { + make -C $_pkgname PREFIX=/usr DESTDIR=$pkgdir install + install -m644 -D $_pkgname/LICENSE $pkgdir/usr/share/licenses/$pkgname/LICENSE + install -m644 -D $_pkgname/README $pkgdir/usr/share/doc/$pkgname/README +} + +# vim:set ts=2 sw=2 et: diff --git a/compile.sh b/compile.sh new file mode 100755 index 000000000000..52173923dd9c --- /dev/null +++ b/compile.sh @@ -0,0 +1,7 @@ +#!/bin/sh +rm -rf src/ +[[ -f "config.def.h" ]] && rm config.def.h +[[ "$(hostname)" == "uh-x200s" ]] && cp config.def.h.x200s config.def.h +[[ "$(hostname)" == "uh-lin" ]] && cp config.def.h.work config.def.h +makepkg -g > md5sums +makepkg -fi diff --git a/config.def.h b/config.def.h new file mode 100755 index 000000000000..6d4e0f05f969 --- /dev/null +++ b/config.def.h @@ -0,0 +1,148 @@ +/* See LICENSE file for copyright and license details. */ + +/* appearance */ +static const char *fonts[] = { + "Erusfont:size=8", + "VL Gothic:size=10.5", + "WenQuanYi Micro Hei:size=10.5", +}; +static const char font[] = "-*-proggyoptis-*-*-*-*-11-*-*-*-*-*-*-*"; +static const char normbordercolor[] = "#002b36"; +static const char normbgcolor[] = "#002b36"; +static const char normfgcolor[] = "#839496"; +static const char selbordercolor[] = "#0066ff"; +static const char selbgcolor[] = "#073642"; +static const char selfgcolor[] = "#cb4b16"; +static const unsigned int borderpx = 1; /* border pixel of windows */ +static const unsigned int snap = 32; /* snap pixel */ +static const unsigned int systraypinning = 0; /* 0: sloppy systray follows selected monitor, >0: pin systray to monitor X */ +static const unsigned int systrayspacing = 2; /* systray spacing */ +static const Bool systraypinningfailfirst = True; /* True: if pinning fails, display systray on the first monitor, False: display systray on the last monitor*/ +static const Bool showsystray = True; /* False means no systray */ +static const int nmaster = 2; /* number of clients in master area */ +static const Bool showbar = True; /* False means no bar */ +static const Bool topbar = True; /* False means bottom bar */ + +/* tagging */ +static const char *tags[] = { "1/main", "2/web", "3/stuff", "4/office" }; + +static const Rule rules[] = { + /* class instance title tags mask iscentered isfloating monitor */ + /* monitor 0 */ + { "Wine", NULL, NULL, 1 << 1, True, True, 0 }, + { "Remmina", NULL, NULL, 1 << 1, True, True, 0 }, + { "calibre-gui", NULL, NULL, 1 << 1, True, True, 0 }, + { "VirtualBox", NULL, NULL, 1 << 1, True, True, 0 }, + { "Chromium", NULL, NULL, 1 << 1, False, False, 0 }, + { "google-chrome-beta", NULL, NULL, 1 << 1, False, False, 0 }, + { NULL, "Browser", NULL, 1 << 1, True, True, 0 }, + { NULL, "dwb", NULL, 1 << 1, False, False, 0 }, + { "Firefox", NULL, NULL, 1 << 1, False, False, 0 }, + { "KeePass2", NULL, "Auto-Type Entry Selection", 1 << 1, True, True, 0 }, + { "Gajim", NULL, NULL, 1 << 2, True, True, 0 }, + { "KeePass2", NULL, NULL, 1 << 2, True, True, 0 }, + { "Corebird", NULL, NULL, 1 << 2, True, True, 0 }, + { "Spotify", NULL, NULL, 1 << 2, True, True, 0 }, + { NULL, "libreoffice", NULL, 1 << 3, False, False, 0 }, + { NULL, "Eclipse", NULL, 1 << 3, False, False, 0 }, + { "Gimp", NULL, NULL, 1 << 3, False, True, 0 }, + { "PacketTracer6", NULL, NULL, 1 << 3, True, True, 0 }, + { "feh", NULL, NULL, 0, True, True, -1 }, + { "Sxiv", NULL, NULL, 0, True, True, -1 }, + { "mpv", NULL, NULL, 0, True, True, -1 }, + { "Wine", NULL, NULL, 0, True, True, -1 }, + { "XFontSel", NULL, NULL, 0, True, True, -1 }, + { NULL, "xterm", NULL, 0, True, True, -1 }, + { "Zathura", NULL, NULL, 0, True, True, -1 }, + { NULL, NULL, "Save file", 0, True, True, -1 }, + { NULL, NULL, "Wicd Network Manager", 0, True, True, -1 }, +}; + +/* layout(s) */ +static const float mfact = 0.50; /* factor of master area size [0.05..0.95] */ +static const Bool resizehints = False; /* True means respect size hints in tiled resizals */ + +static const Layout layouts[] = { + /* symbol arrange function */ + { "[T]", tile }, /* first entry is default */ + { "[M]", monocle }, /* maximized */ + { "><>", NULL }, /* floating */ +}; + +/* key definitions */ +#define MODKEY Mod4Mask +#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", font, "-nb", normbgcolor, "-nf", normfgcolor, "-sb", selbgcolor, "-sf", selfgcolor, NULL }; +static const char *termcmd[] = { "tmuxattach.sh", NULL }; +static const char *mostusedcmd[] = { "mostused", NULL }; +static const char *lockcmd[] = { "slock", NULL }; +static const char *passcmd[] = { "keepass", "--auto-type", NULL }; + +static Key keys[] = { + /* modifier key function argument */ + { MODKEY, XK_p, spawn, {.v = dmenucmd } }, + { MODKEY, XK_v, spawn, {.v = mostusedcmd } }, + { MODKEY|ShiftMask, XK_Return, spawn, {.v = termcmd } }, + { MODKEY|ShiftMask, XK_l, spawn, {.v = lockcmd } }, + { ControlMask|Mod1Mask, XK_a, spawn, {.v = passcmd } }, + { MODKEY|ShiftMask, XK_b, togglebar, {0} }, + { MODKEY, XK_j, focusstack, {.i = +1 } }, + { MODKEY, XK_k, focusstack, {.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_a, incnmaster, {.i = +1 } }, + { MODKEY, XK_z, incnmaster, {.i = -1 } }, + { MODKEY, XK_t, setlayout, {.v = &layouts[0]} }, + { MODKEY, XK_b, setlayout, {.v = &layouts[1]} }, + { MODKEY, XK_m, setlayout, {.v = &layouts[2]} }, + { MODKEY, XK_f, setlayout, {.v = &layouts[3]} }, + { 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} }, +}; + diff --git a/dwm-6.1-center.diff b/dwm-6.1-center.diff new file mode 100755 index 000000000000..b96685879fab --- /dev/null +++ b/dwm-6.1-center.diff @@ -0,0 +1,42 @@ + /* layout(s) */ +diff --git a/dwm.c b/dwm.c +index 0362114..4aaaa60 100644 +--- a/dwm.c ++++ b/dwm.c +@@ -92,7 +92,7 @@ struct Client { + int basew, baseh, incw, inch, maxw, maxh, minw, minh; + int bw, oldbw; + unsigned int tags; +- int isfixed, isfloating, isurgent, neverfocus, oldstate, isfullscreen; ++ int isfixed, iscentered, isfloating, isurgent, neverfocus, oldstate, isfullscreen; + Client *next; + Client *snext; + Monitor *mon; +@@ -137,6 +137,7 @@ typedef struct { + const char *instance; + const char *title; + unsigned int tags; ++ int iscentered; + int isfloating; + int monitor; + } Rule; +@@ -296,6 +297,7 @@ applyrules(Client *c) + && (!r->class || strstr(class, r->class)) + && (!r->instance || strstr(instance, r->instance))) + { ++ c->iscentered = r->iscentered; + c->isfloating = r->isfloating; + c->tags |= r->tags; + for (m = mons; m && m->num != r->monitor; m = m->next); +@@ -1063,6 +1065,11 @@ manage(Window w, XWindowAttributes *wa) + && (c->x + (c->w / 2) < c->mon->wx + c->mon->ww)) ? bh : c->mon->my); + c->bw = borderpx; + ++ if(c->iscentered) { ++ c->x = (c->mon->mw - WIDTH(c)) / 2; ++ c->y = (c->mon->mh - HEIGHT(c)) / 2; ++ } ++ + wc.border_width = c->bw; + XConfigureWindow(dpy, w, CWBorderWidth, &wc); + XSetWindowBorder(dpy, w, scheme[SchemeNorm].border->pix); diff --git a/dwm.install b/dwm.install new file mode 100755 index 000000000000..44b50ed824c7 --- /dev/null +++ b/dwm.install @@ -0,0 +1,4 @@ +post_install() { + echo "-- Edit config.h in dwm's PKGBUILD directory (generally /var/abs/community/dwm/)" + echo "-- and rebuild package if you want to change settings." +} diff --git a/md5sums b/md5sums new file mode 100644 index 000000000000..767ac849e3cd --- /dev/null +++ b/md5sums @@ -0,0 +1,3 @@ +md5sums=('SKIP' + '596c20f45d805c872789037a338a358d' + '5f6f840c692f43f7e349bb87e895ff26') |