From 29e5b7a213ee46312e633fe95ea02a7050aff625 Mon Sep 17 00:00:00 2001 From: moetunes Date: Thu, 24 Nov 2011 12:46:24 +1000 Subject: Unified master and stack resizing functions as per c00kiemon5ter --- src/config.h.def | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) (limited to 'src/config.h.def') diff --git a/src/config.h.def b/src/config.h.def index 19f656b..fed94d4 100644 --- a/src/config.h.def +++ b/src/config.h.def @@ -1,6 +1,6 @@ - /* config.h for dminiwm.c [ 0.1.6 ] + /* config.h for dminiwm.c [ 0.1.7 ] * - * Started from catwm 31/12/10 + * Started from catwm 31/12/10 * Bad window error checking and numlock checking used from * 2wm at http://hg.suckless.org/2wm/ * @@ -26,7 +26,7 @@ /* Mod (Mod1 == alt) (Mod4 == Super/windows) */ #define MOD1 Mod1Mask -#define MOD4 Mod4Mask +#define MOD4 Mod4Mask #define MASTER_SIZE 0.52 #define TOP_PANEL 1 /* 1=Don't 0=Have the panel at the top instead of the bottom */ #define PANEL_HEIGHT 18 /* 0 for no space for a panel */ @@ -77,14 +77,14 @@ const char* shutdowncmd[] = {"sudo","shutdown","-h","now",NULL}; // Shortcuts static key keys[] = { // MOD KEY FUNCTION ARGS - { MOD1, XK_h, increase, {NULL}}, - { MOD1, XK_l, decrease, {NULL}}, + { MOD1, XK_h, resize_master, {.i = 10}}, + { MOD1, XK_l, resize_master, {.i = -10}}, { MOD1, XK_c, kill_client, {NULL}}, { MOD1, XK_j, next_win, {NULL}}, { MOD1, XK_k, prev_win, {NULL}}, { MOD1, XK_v, spawn, {.com = dmenucmd}}, - { MOD1, XK_p, grow_window, {NULL}}, - { MOD1, XK_o, shrink_window, {NULL}}, + { MOD1, XK_p, resize_stack, {.i = 10}}, + { MOD1, XK_o, resize_stack, {.i = -10}}, { MOD1, XK_Return, spawn, {.com = urxvtcmd}}, { MOD1, XK_Up, spawn, {.com = volupcmd}}, { MOD1, XK_Down, spawn, {.com = voldowncmd}}, -- cgit v1.3.1 From c7890dd59f6e0c9cd58bf30ba3ca290f392fa8c8 Mon Sep 17 00:00:00 2001 From: moetunes Date: Sat, 26 Nov 2011 10:10:52 +1000 Subject: Added a click to focus option --- src/ChangeLog | 3 +++ src/Makefile | 2 +- src/README | 8 ++++---- src/config.h.def | 3 ++- src/dminiwm.c | 25 +++++++++++++++++++++++-- 5 files changed, 33 insertions(+), 8 deletions(-) (limited to 'src/config.h.def') diff --git a/src/ChangeLog b/src/ChangeLog index c960952..f3a549b 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,3 +1,6 @@ +26/11/11 + Added option to click on a window to focus it + 21/11/11 Fix for transient windows not being managed diff --git a/src/Makefile b/src/Makefile index 55332f9..0316713 100644 --- a/src/Makefile +++ b/src/Makefile @@ -11,7 +11,7 @@ CC=gcc all: $(EXEC) dminiwm: dminiwm.o - $(CC) $(LDFLAGS) -Os -o $@ $+ $(LDADD) + $(CC) $(LDFLAGS) -s -Os -o $@ $+ $(LDADD) install: all install -Dm 755 dminiwm $(DESTDIR)$(BINDIR)/dminiwm diff --git a/src/README b/src/README index 1580a73..cbe4084 100644 --- a/src/README +++ b/src/README @@ -12,7 +12,7 @@ Screenshots and ramblings/updates at https://bbs.archlinux.org/viewtopic.php?id= **dminiwm** is a very minimal and lightweight dynamic tiling window manager. I will try to stay under 1000 SLOC. - Currently under 900 lines with the config file included. + Currently under 950 lines with the config file included. ###Modes @@ -60,9 +60,8 @@ It allows the "normal" method of tiling window managers(with the new window as t ###Recent Changes -------------- -15/10/11 - Added having applications open on specified desktop - +26/11/11 + Added a click to focus option ###Status ------ @@ -76,6 +75,7 @@ There are more options in the config file than the original catwm. * Fixed a window being destroyed on another desktop creating ghost windows. * Added ability to resize the window on the top of the stack * Added having applications open on specified desktop + * Added a click to focus option ###Installation diff --git a/src/config.h.def b/src/config.h.def index fed94d4..e50253e 100644 --- a/src/config.h.def +++ b/src/config.h.def @@ -1,4 +1,4 @@ - /* config.h for dminiwm.c [ 0.1.7 ] + /* config.h for dminiwm.c [ 0.1.8 ] * * Started from catwm 31/12/10 * Bad window error checking and numlock checking used from @@ -35,6 +35,7 @@ #define DEFAULT_MODE 0 /* 0=Vertical, 1=Fullscreen 2=Horizontal 3=grid*/ #define FOLLOW_MOUSE 0 /* 1=Don't 0=Focus the window the mouse just entered */ #define FOLLOW_WINDOW 0 /* 1=Don't 0=Follow the window when moved to a different desktop */ +#define CLICK_TO_FOCUS 0 /* 1=Don't 0=Focus an unfocused window when clicked */ #define DESKTOPS 6 /* Must edit DESKTOPCHANGE keys to suit */ // Colors diff --git a/src/dminiwm.c b/src/dminiwm.c index 1c1b0ff..d25f05b 100644 --- a/src/dminiwm.c +++ b/src/dminiwm.c @@ -1,4 +1,4 @@ -/* dminiwm.c [ 0.1.7 ] +/* dminiwm.c [ 0.1.8 ] * * I started this from catwm 31/12/10 * Bad window error checking and numlock checking used from @@ -97,6 +97,7 @@ static const AtomNode atomList[] = { // Functions static void add_window(Window w); +static void buttonpressed(XEvent *e); static void change_desktop(const Arg arg); static void client_to_desktop(const Arg arg); static void configurenotify(XEvent *e); @@ -161,6 +162,7 @@ static void (*events[LASTEvent])(XEvent *e) = { [KeyPress] = keypress, [MapRequest] = maprequest, [EnterNotify] = enternotify, + [ButtonPress] = buttonpressed, [DestroyNotify] = destroynotify, [ConfigureNotify] = configurenotify, [ConfigureRequest] = configurerequest @@ -571,9 +573,14 @@ void update_current() { XSetWindowBorder(dis,c->win,win_focus); XSetInputFocus(dis,c->win,RevertToParent,CurrentTime); XRaiseWindow(dis,c->win); + if(CLICK_TO_FOCUS == 0) + XUngrabButton(dis, AnyButton, AnyModifier, c->win); } - else + else { XSetWindowBorder(dis,c->win,win_unfocus); + if(CLICK_TO_FOCUS == 0) + XGrabButton(dis, AnyButton, AnyModifier, c->win, True, ButtonPressMask|ButtonReleaseMask, GrabModeAsync, GrabModeAsync, None, None); + } } XSync(dis, False); } @@ -805,6 +812,20 @@ void enternotify(XEvent *e) { } } +void buttonpressed(XEvent *e) { + client *c; + XButtonPressedEvent *ev = &e->xbutton; + + // change focus with LMB + if(CLICK_TO_FOCUS == 0 && ev->window != current->win && ev->button == Button1) + for(c=head;c;c=c->next) + if(ev->window == c->win) { + current = c; + update_current(); + return; + } +} + void send_kill_signal(Window w) { XEvent ke; ke.type = ClientMessage; -- cgit v1.3.1