summaryrefslogtreecommitdiff
path: root/dwm-6.2/dwm.c.orig
diff options
context:
space:
mode:
Diffstat (limited to 'dwm-6.2/dwm.c.orig')
-rw-r--r--dwm-6.2/dwm.c.orig105
1 files changed, 18 insertions, 87 deletions
diff --git a/dwm-6.2/dwm.c.orig b/dwm-6.2/dwm.c.orig
index 520b818..0dfbe8b 100644
--- a/dwm-6.2/dwm.c.orig
+++ b/dwm-6.2/dwm.c.orig
@@ -29,7 +29,6 @@
#include <string.h>
#include <unistd.h>
#include <sys/types.h>
-#include <sys/stat.h>
#include <sys/wait.h>
#include <X11/cursorfont.h>
#include <X11/keysym.h>
@@ -152,6 +151,7 @@ static int applysizehints(Client *c, int *x, int *y, int *w, int *h, int interac
static void arrange(Monitor *m);
static void arrangemon(Monitor *m);
static void attach(Client *c);
+static void attachabove(Client *c);
static void attachstack(Client *c);
static void buttonpress(XEvent *e);
static void checkotherwm(void);
@@ -198,7 +198,6 @@ static void resizeclient(Client *c, int x, int y, int w, int h);
static void resizemouse(const Arg *arg);
static void restack(Monitor *m);
static void run(void);
-static void runautostart(void);
static void scan(void);
static int sendevent(Client *c, Atom proto);
static void sendmon(Client *c, Monitor *m);
@@ -251,11 +250,7 @@ static int xerrorstart(Display *dpy, XErrorEvent *ee);
static void zoom(const Arg *arg);
/* variables */
-static const char autostartblocksh[] = "autostart_blocking.sh";
-static const char autostartsh[] = "autostart.sh";
static const char broken[] = "broken";
-static const char dwmdir[] = "dwm";
-static const char localshare[] = ".local/share";
static char stext[256];
static int screen;
static int sw, sh; /* X display screen geometry width, height */
@@ -428,6 +423,20 @@ attach(Client *c)
}
void
+attachabove(Client *c)
+{
+ if (c->mon->sel == NULL || c->mon->sel == c->mon->clients || c->mon->sel->isfloating) {
+ attach(c);
+ return;
+ }
+
+ Client *at;
+ for (at = c->mon->clients; at->next != c->mon->sel; at = at->next);
+ c->next = at->next;
+ at->next = c;
+}
+
+void
attachstack(Client *c)
{
c->snext = c->mon->stack;
@@ -1087,7 +1096,7 @@ manage(Window w, XWindowAttributes *wa)
c->isfloating = c->oldstate = trans != None || c->isfixed;
if (c->isfloating)
XRaiseWindow(dpy, c->win);
- attach(c);
+ attachabove(c);
attachstack(c);
XChangeProperty(dpy, root, netatom[NetClientList], XA_WINDOW, 32, PropModeAppend,
(unsigned char *) &(c->win), 1);
@@ -1406,83 +1415,6 @@ run(void)
}
void
-runautostart(void)
-{
- char *pathpfx;
- char *path;
- char *xdgdatahome;
- char *home;
- struct stat sb;
-
- if ((home = getenv("HOME")) == NULL)
- /* this is almost impossible */
- return;
-
- /* if $XDG_DATA_HOME is set and not empty, use $XDG_DATA_HOME/dwm,
- * otherwise use ~/.local/share/dwm as autostart script directory
- */
- xdgdatahome = getenv("XDG_DATA_HOME");
- if (xdgdatahome != NULL && *xdgdatahome != '\0') {
- /* space for path segments, separators and nul */
- pathpfx = ecalloc(1, strlen(xdgdatahome) + strlen(dwmdir) + 2);
-
- if (sprintf(pathpfx, "%s/%s", xdgdatahome, dwmdir) <= 0) {
- free(pathpfx);
- return;
- }
- } else {
- /* space for path segments, separators and nul */
- pathpfx = ecalloc(1, strlen(home) + strlen(localshare)
- + strlen(dwmdir) + 3);
-
- if (sprintf(pathpfx, "%s/%s/%s", home, localshare, dwmdir) < 0) {
- free(pathpfx);
- return;
- }
- }
-
- /* check if the autostart script directory exists */
- if (! (stat(pathpfx, &sb) == 0 && S_ISDIR(sb.st_mode))) {
- /* the XDG conformant path does not exist or is no directory
- * so we try ~/.dwm instead
- */
- char *pathpfx_new = realloc(pathpfx, strlen(home) + strlen(dwmdir) + 3);
- if(pathpfx_new == NULL) {
- free(pathpfx);
- return;
- }
- pathpfx = pathpfx_new;
-
- if (sprintf(pathpfx, "%s/.%s", home, dwmdir) <= 0) {
- free(pathpfx);
- return;
- }
- }
-
- /* try the blocking script first */
- path = ecalloc(1, strlen(pathpfx) + strlen(autostartblocksh) + 2);
- if (sprintf(path, "%s/%s", pathpfx, autostartblocksh) <= 0) {
- free(path);
- free(pathpfx);
- }
-
- if (access(path, X_OK) == 0)
- system(path);
-
- /* now the non-blocking script */
- if (sprintf(path, "%s/%s", pathpfx, autostartsh) <= 0) {
- free(path);
- free(pathpfx);
- }
-
- if (access(path, X_OK) == 0)
- system(strcat(path, " &"));
-
- free(pathpfx);
- free(path);
-}
-
-void
scan(void)
{
unsigned int i, num;
@@ -1519,7 +1451,7 @@ sendmon(Client *c, Monitor *m)
detachstack(c);
c->mon = m;
c->tags = m->tagset[m->seltags]; /* assign tags of target monitor */
- attach(c);
+ attachabove(c);
attachstack(c);
focus(NULL);
arrange(NULL);
@@ -2110,7 +2042,7 @@ updategeom(void)
m->clients = c->next;
detachstack(c);
c->mon = mons;
- attach(c);
+ attachabove(c);
attachstack(c);
}
if (m == selmon)
@@ -2355,7 +2287,6 @@ main(int argc, char *argv[])
die("pledge");
#endif /* __OpenBSD__ */
scan();
- runautostart();
run();
cleanup();
XCloseDisplay(dpy);