Compare commits

..

No commits in common. 'ce45735a76e01aa016d4904c90d361b74ead35fe' and '5fe48352a3ebc1cef6e6f5af7a64fa5ed63a5fa8' have entirely different histories.

  1. 2
      LICENSE
  2. 2
      README.md
  3. 67
      config.def.h
  4. 4
      config.mk
  5. 74
      dwm.c

2
LICENSE

@ -18,7 +18,7 @@ MIT/X Consortium License @@ -18,7 +18,7 @@ MIT/X Consortium License
© 2015-2016 Eric Pruitt <eric.pruitt@gmail.com>
© 2016-2017 Markus Teich <markus.teich@stusta.mhn.de>
© 2020-2022 Chris Down <chris@chrisdown.name>
© 2021-2024 Ivan Polyakov <code at vilor dot one>
© 2021-2022 Ivan Polyakov <code at vilor dot one>
Permission is hereby granted, free of charge, to any person obtaining a
copy of this software and associated documentation files (the "Software"),

2
README.md

@ -1,6 +1,6 @@ @@ -1,6 +1,6 @@
dwm
===
Vilor's dwm based on [dwm 6.5](README.dwm.md)
Vilor's dwm based on [dwm 6.4](README.dwm.md)
Used patches
------------

67
config.def.h

@ -2,31 +2,20 @@ @@ -2,31 +2,20 @@
#include <X11/XF86keysym.h>
/*** appearance ***/
/* appearance */
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 systrayonleft = 0; /* 0: systray in the right corner, >0: systray on left of status text */
static const unsigned int systrayspacing = 2; /* systray spacing */
static const int systraypinningfailfirst = 1; /* 1: if pinning fails, display systray on the first monitor, False: display systray on the last monitor*/
static const int showsystray = 1; /* 0 means no systray */
static const int showbar = 1; /* 0 means no bar */
static const int topbar = 1; /* 0 means bottom bar */
static const char *fonts[] = { "monospace:size=10" };
static const char dmenufont[] = "monospace:size=10";
/** systray **/
/* 0: sloppy systray follows selected monitor, >0: pin systray to monitor X */
static const unsigned int systraypinning = 0;
/* 0: systray in the right corner, >0: systray on left of status text */
static const unsigned int systrayonleft = 0;
/* systray spacing */
static const unsigned int systrayspacing = 2;
/*
* 1: if pinning fails, display systray on the first monitor,
* False: display systray on the last monitor
*/
static const int systraypinningfailfirst = 1;
/* 0 means no systray */
static const int showsystray = 1;
/** default theme **/
/*
/* default theme
static const char col_gray1[] = "#222222";
static const char col_gray2[] = "#444444";
static const char col_gray3[] = "#bbbbbb";
@ -34,20 +23,19 @@ static const char col_gray4[] = "#eeeeee"; @@ -34,20 +23,19 @@ static const char col_gray4[] = "#eeeeee";
static const char col_cyan[] = "#005577";
*/
/** my theme **/
/* my theme */
static const char col_gray1[] = "#2e3440";
static const char col_gray2[] = "#444444";
static const char col_gray3[] = "#bbbbbb";
static const char col_gray4[] = "#eeeeee";
static const char col_cyan[] = "#9b3e46";
static const char *colors[][3] = {
/* fg bg border */
[SchemeNorm] = { col_gray3, col_gray1, col_gray2 },
[SchemeSel] = { col_gray4, col_cyan, col_cyan },
};
/** tagging **/
/* tagging */
static const char *tags[] = { "1", "2", "3", "4", "5", "6", "7", "8", "9" };
static const Rule rules[] = {
@ -60,18 +48,11 @@ static const Rule rules[] = { @@ -60,18 +48,11 @@ static const Rule rules[] = {
{ "Firefox", NULL, NULL, 1 << 8, 0, -1 },
};
/*** layout(s) ***/
/* factor of master area size [0.05..0.95] */
static const float mfact = 0.55;
/* number of clients in master area */
static const int nmaster = 1;
/* 1 means respect size hints in tiled resizals */
static const int resizehints = 0;
/* 1 will force focus on the fullscreen window */
static const int lockfullscreen = 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 = 0; /* 1 means respect size hints in tiled resizals */
static const int lockfullscreen = 1; /* 1 will force focus on the fullscreen window */
static const Layout layouts[] = {
/* symbol arrange function */
@ -80,7 +61,7 @@ static const Layout layouts[] = { @@ -80,7 +61,7 @@ static const Layout layouts[] = {
{ "[M]", monocle },
};
/*** key definitions ***/
/* key definitions */
#define MODKEY Mod4Mask
#define TAGKEYS(KEY,TAG) \
{ MODKEY, KEY, view, {.ui = 1 << TAG} }, \
@ -91,16 +72,11 @@ static const Layout layouts[] = { @@ -91,16 +72,11 @@ static const Layout layouts[] = {
/* helper for spawning shell commands in the pre dwm-5.0 fashion */
#define SHCMD(cmd) { .v = (const char*[]){ "/bin/sh", "-c", cmd, NULL } }
/** commands **/
/* component of dmenucmd, manipulated in spawn() */
static char dmenumon[2] = "0";
/* commands */
static const char *dmenucmd[] = { "dmenu_run", "-fn", dmenufont, "-nb", col_gray1, "-nf", col_gray3, "-sb", col_cyan, "-sf", col_gray4, NULL };
static const char *dmenucmd[] = {
"dmenu_run", "-m", dmenumon, "-fn", dmenufont,
"-nb", col_gray1, "-nf", col_gray3, "-sb", col_cyan, "-sf", col_gray4,
NULL
};
static const char *termcmd[] = { "st", NULL };
static const char *volupcmd[] =
{ "/usr/bin/amixer", "set", "Master", "5%+", NULL };
static const char *voldowncmd[] =
@ -157,11 +133,8 @@ static const Key keys[] = { @@ -157,11 +133,8 @@ static const Key keys[] = {
{ MODKEY|ShiftMask, XK_q, quit, {0} },
};
/*** button definitions ***/
/*
* click can be ClkTagBar, ClkLtSymbol, ClkStatusText, ClkWinTitle,
* ClkClientWin, or ClkRootWin
*/
/* button definitions */
/* click can be ClkTagBar, ClkLtSymbol, ClkStatusText, ClkWinTitle, ClkClientWin, or ClkRootWin */
static const Button buttons[] = {
/* click event mask button function argument */
{ ClkLtSymbol, 0, Button1, setlayout, {0} },

4
config.mk

@ -1,5 +1,5 @@ @@ -1,5 +1,5 @@
# dwm version
VERSION = 6.5
VERSION = 6.4
# Customize below to fit your system
@ -26,7 +26,7 @@ INCS = -I${X11INC} -I${FREETYPEINC} @@ -26,7 +26,7 @@ INCS = -I${X11INC} -I${FREETYPEINC}
LIBS = -L${X11LIB} -lX11 ${XINERAMALIBS} ${FREETYPELIBS}
# flags
CPPFLAGS = -D_DEFAULT_SOURCE -D_BSD_SOURCE -D_XOPEN_SOURCE=700L -DVERSION=\"${VERSION}\" ${XINERAMAFLAGS}
CPPFLAGS = -D_DEFAULT_SOURCE -D_BSD_SOURCE -D_POSIX_C_SOURCE=200809L -DVERSION=\"${VERSION}\" ${XINERAMAFLAGS}
#CFLAGS = -g -std=c99 -pedantic -Wall -O0 ${INCS} ${CPPFLAGS}
CFLAGS = -std=c99 -pedantic -Wall -Wno-deprecated-declarations -Os ${INCS} ${CPPFLAGS}
LDFLAGS = ${LIBS}

74
dwm.c

@ -230,6 +230,7 @@ static void setmfact(const Arg *arg); @@ -230,6 +230,7 @@ static void setmfact(const Arg *arg);
static void setup(void);
static void seturgent(Client *c, int urg);
static void showhide(Client *c);
static void sigchld(int unused);
static void spawn(const Arg *arg);
static Monitor *systraytomon(Monitor *m);
static void tag(const Arg *arg);
@ -288,7 +289,6 @@ static void (*handler[LASTEvent]) (XEvent *) = { @@ -288,7 +289,6 @@ static void (*handler[LASTEvent]) (XEvent *) = {
[MapRequest] = maprequest,
[MotionNotify] = motionnotify,
[PropertyNotify] = propertynotify,
[ResizeRequest] = resizerequest,
[UnmapNotify] = unmapnotify
};
static Atom wmatom[WMLast], netatom[NetLast], xatom[XLast];
@ -443,6 +443,7 @@ attach(Client *c) @@ -443,6 +443,7 @@ attach(Client *c)
void
attachstack(Client *c)
{
static Atom wmatom[WMLast], netatom[NetLast];
c->snext = c->mon->stack;
c->mon->stack = c;
}
@ -985,16 +986,6 @@ getatomprop(Client *c, Atom prop) @@ -985,16 +986,6 @@ getatomprop(Client *c, Atom prop)
return atom;
}
unsigned int
getsystraywidth()
{
unsigned int w = 0;
Client *i;
if(showsystray)
for(i = systray->icons; i; w += i->w + systrayspacing, i = i->next) ;
return w ? w + systrayspacing : 1;
}
int
getrootptr(int *x, int *y)
{
@ -1023,6 +1014,16 @@ getstate(Window w) @@ -1023,6 +1014,16 @@ getstate(Window w)
return result;
}
unsigned int
getsystraywidth()
{
unsigned int w = 0;
Client *i;
if(showsystray)
for(i = systray->icons; i; w += i->w + systrayspacing, i = i->next) ;
return w ? w + systrayspacing : 1;
}
int
gettextprop(Window w, Atom atom, char *text, unsigned int size)
{
@ -1072,26 +1073,16 @@ grabkeys(void) @@ -1072,26 +1073,16 @@ grabkeys(void)
{
updatenumlockmask();
{
unsigned int i, j, k;
unsigned int i, j;
unsigned int modifiers[] = { 0, LockMask, numlockmask, numlockmask|LockMask };
int start, end, skip;
KeySym *syms;
KeyCode code;
XUngrabKey(dpy, AnyKey, AnyModifier, root);
XDisplayKeycodes(dpy, &start, &end);
syms = XGetKeyboardMapping(dpy, start, end - start + 1, &skip);
if (!syms)
return;
for (k = start; k <= end; k++)
for (i = 0; i < LENGTH(keys); i++)
/* skip modifier codes, we do that ourselves */
if (keys[i].keysym == syms[(k - start) * skip])
if ((code = XKeysymToKeycode(dpy, keys[i].keysym)))
for (j = 0; j < LENGTH(modifiers); j++)
XGrabKey(dpy, k,
keys[i].mod | modifiers[j],
root, True,
GrabModeAsync, GrabModeAsync);
XFree(syms);
XGrabKey(dpy, code, keys[i].mod | modifiers[j], root,
True, GrabModeAsync, GrabModeAsync);
}
}
@ -1633,7 +1624,6 @@ sendevent(Window w, Atom proto, int mask, long d0, long d1, long d2, long d3, lo @@ -1633,7 +1624,6 @@ sendevent(Window w, Atom proto, int mask, long d0, long d1, long d2, long d3, lo
exists = True;
mt = proto;
}
if (exists) {
ev.type = ClientMessage;
ev.xclient.window = w;
@ -1724,16 +1714,9 @@ setup(void) @@ -1724,16 +1714,9 @@ setup(void)
int i;
XSetWindowAttributes wa;
Atom utf8string;
struct sigaction sa;
/* do not transform children into zombies when they terminate */
sigemptyset(&sa.sa_mask);
sa.sa_flags = SA_NOCLDSTOP | SA_NOCLDWAIT | SA_RESTART;
sa.sa_handler = SIG_IGN;
sigaction(SIGCHLD, &sa, NULL);
/* clean up any zombies (inherited from .xinitrc etc) immediately */
while (waitpid(-1, NULL, WNOHANG) > 0);
/* clean up any zombies immediately */
sigchld(0);
/* init screen */
screen = DefaultScreen(dpy);
@ -1836,22 +1819,20 @@ showhide(Client *c) @@ -1836,22 +1819,20 @@ showhide(Client *c)
}
void
spawn(const Arg *arg)
sigchld(int unused)
{
struct sigaction sa;
if (signal(SIGCHLD, sigchld) == SIG_ERR)
die("can't install SIGCHLD handler:");
while (0 < waitpid(-1, NULL, WNOHANG));
}
if (arg->v == dmenucmd)
dmenumon[0] = '0' + selmon->num;
void
spawn(const Arg *arg)
{
if (fork() == 0) {
if (dpy)
close(ConnectionNumber(dpy));
setsid();
sigemptyset(&sa.sa_mask);
sa.sa_flags = 0;
sa.sa_handler = SIG_DFL;
sigaction(SIGCHLD, &sa, NULL);
execvp(((char **)arg->v)[0], (char **)arg->v);
die("dwm: execvp '%s' failed:", ((char **)arg->v)[0]);
}
@ -2225,7 +2206,6 @@ updatestatus(void) @@ -2225,7 +2206,6 @@ updatestatus(void)
updatesystray();
}
void
updatesystrayicongeom(Client *i, int w, int h)
{

Loading…
Cancel
Save