From edu at thorsten-wissmann.de Tue Mar 4 16:02:01 2014 From: edu at thorsten-wissmann.de (Thorsten =?iso-8859-1?Q?Wi=DFmann?=) Date: Tue, 4 Mar 2014 16:02:01 +0100 Subject: Patch: keymasks In-Reply-To: <52F7AEDF.8040306@dokucode.de> References: <52F7AEDF.8040306@dokucode.de> Message-ID: <20140304150201.GA9422@hoth.roethelheim.stw.uni-erlangen.de> Hi chris, On Sun, Feb 09, 2014 at 05:37:51PM +0100, Christian Dietrich wrote: > since I'm a heavy emacs user (sounds like taking drugs...) I want as > many keybindings as possible. But herbstluftwm is stealing so many of > them for managing my windows, which is kind of useless, since my emacs > is always fullscreen on a single tag. > > Therefore there is no reason why herbstluftwm should bind most of the > keys, when Emacs is focused. I wrote a patch, that does exactly that. > Each client has a keymask (which is matched against the keybindings as a > regular expression): All matching keybindings are enabled, all others > are disabled. > > Keymasks can be applied by client rules, so > > hc rule class~'Emacs' keymask="Mod4.[1-5qweras]" > > applies the keymask, that only enables monitor and tag switching > bindings when Emacs is focused. When refocusing only the wrongly > disabled or enabled keybindings are regrabbed. So it should be kind of > fast. When not using keybindings no performance impact should be measurable. Very nice documentation! It's now merged as: 7ebb2e2 Adding keymask feature to disable keybindings temporarily Actually, I would expect that users of that feature might be interested in also modifying the client attribute after the window already has shown up. But if you don't need it there's no reason to put effort into it. Regards, Thorsten -------------- next part -------------- A non-text attachment was scrubbed... Name: not available Type: application/pgp-signature Size: 230 bytes Desc: not available URL: From hpdeifel at gmx.de Sat Mar 8 14:31:48 2014 From: hpdeifel at gmx.de (Hans-Peter Deifel) Date: Sat, 8 Mar 2014 14:31:48 +0100 Subject: [PATCH] Only put child windows in EWMH client lists Message-ID: <1394285508-26433-1-git-send-email-hpdeifel@gmx.de> Previously, only our own decoration windows showed up in the _NET_CLIENT_LIST_STACKING property. This confused pagers like xfce4-panel. The responsible function 'stack_to_window_buf' is also used in a context where we want to have only children of the root window in the result buffer. Now stack_to_window_buf and it's helpers accept a parameter specifying if they should return real_clients (aka application windows) or other windows. --- src/monitor.c | 8 ++++---- src/monitor.h | 4 ++-- src/stack.c | 22 +++++++++++++--------- src/stack.h | 4 ++-- 4 files changed, 21 insertions(+), 17 deletions(-) diff --git a/src/monitor.c b/src/monitor.c index 85e6af7..3a64599 100644 --- a/src/monitor.c +++ b/src/monitor.c @@ -1292,13 +1292,13 @@ int detect_monitors_command(int argc, char **argv, GString* output) { return ret; } -int monitor_stack_window_count(bool only_clients) { - return stack_window_count(g_monitor_stack, only_clients); +int monitor_stack_window_count(bool real_clients) { + return stack_window_count(g_monitor_stack, real_clients); } -void monitor_stack_to_window_buf(Window* buf, int len, bool only_clients, +void monitor_stack_to_window_buf(Window* buf, int len, bool real_clients, int* remain_len) { - stack_to_window_buf(g_monitor_stack, buf, len, only_clients, remain_len); + stack_to_window_buf(g_monitor_stack, buf, len, real_clients, remain_len); } HSStack* get_monitor_stack() { diff --git a/src/monitor.h b/src/monitor.h index 5d715d3..6a4579e 100644 --- a/src/monitor.h +++ b/src/monitor.h @@ -101,8 +101,8 @@ void all_monitors_replace_previous_tag(struct HSTag* old, struct HSTag* new); void drop_enternotify_events(); void monitor_restack(HSMonitor* monitor); -int monitor_stack_window_count(bool only_clients); -void monitor_stack_to_window_buf(Window* buf, int len, bool only_clients, +int monitor_stack_window_count(bool real_clients); +void monitor_stack_to_window_buf(Window* buf, int len, bool real_clients, int* remain_len); struct HSStack* get_monitor_stack(); diff --git a/src/stack.c b/src/stack.c index 7d31e2d..223805b 100644 --- a/src/stack.c +++ b/src/stack.c @@ -216,9 +216,9 @@ int print_stack_command(int argc, char** argv, GString* output) { return 0; } -int stack_window_count(HSStack* stack, bool only_clients) { +int stack_window_count(HSStack* stack, bool real_clients) { int counter = 0; - stack_to_window_buf(stack, NULL, 0, only_clients, &counter); + stack_to_window_buf(stack, NULL, 0, real_clients, &counter); return -counter; } @@ -227,7 +227,7 @@ struct s2wb { int len; Window* buf; int missing; /* number of slices that could not find space in buf */ - bool only_clients; /* whether to include windows that aren't clients */ + bool real_clients; /* whether to include windows that aren't clients */ HSLayer layer; /* the layer the slice should be added to */ }; @@ -241,7 +241,11 @@ static void slice_to_window_buf(HSSlice* s, struct s2wb* data) { switch (s->type) { case SLICE_CLIENT: if (data->len) { - data->buf[0] = s->data.client->dec.decwin; + if (data->real_clients) { + data->buf[0] = s->data.client->window; + } else { + data->buf[0] = s->data.client->dec.decwin; + } data->buf++; data->len--; } else { @@ -249,7 +253,7 @@ static void slice_to_window_buf(HSSlice* s, struct s2wb* data) { } break; case SLICE_WINDOW: - if (!data->only_clients) { + if (!data->real_clients) { if (data->len) { data->buf[0] = s->data.window; data->buf++; @@ -261,7 +265,7 @@ static void slice_to_window_buf(HSSlice* s, struct s2wb* data) { break; case SLICE_MONITOR: tag = s->data.monitor->tag; - if (!data->only_clients) { + if (!data->real_clients) { if (data->len) { data->buf[0] = s->data.monitor->stacking_window; data->buf++; @@ -272,7 +276,7 @@ static void slice_to_window_buf(HSSlice* s, struct s2wb* data) { } int remain_len = 0; /* remaining length */ stack_to_window_buf(tag->stack, data->buf, data->len, - data->only_clients, &remain_len); + data->real_clients, &remain_len); int len_used = data->len - remain_len; if (remain_len >= 0) { data->buf += len_used; @@ -286,12 +290,12 @@ static void slice_to_window_buf(HSSlice* s, struct s2wb* data) { } void stack_to_window_buf(HSStack* stack, Window* buf, int len, - bool only_clients, int* remain_len) { + bool real_clients, int* remain_len) { struct s2wb data = { .len = len, .buf = buf, .missing = 0, - .only_clients = only_clients, + .real_clients = real_clients, }; for (int i = 0; i < LAYER_COUNT; i++) { data.layer = i; diff --git a/src/stack.h b/src/stack.h index fca3168..41748c2 100644 --- a/src/stack.h +++ b/src/stack.h @@ -69,8 +69,8 @@ void stack_clear_layer(HSStack* stack, HSLayer layer); int print_stack_command(int argc, char** argv, GString* output); // returns the number of windows in this stack -int stack_window_count(HSStack* stack, bool only_clients); -void stack_to_window_buf(HSStack* stack, Window* buf, int len, bool only_clients, +int stack_window_count(HSStack* stack, bool real_clients); +void stack_to_window_buf(HSStack* stack, Window* buf, int len, bool real_clients, int* remain_len); void stack_restack(HSStack* stack); Window stack_lowest_window(HSStack* stack); -- 1.9.0 From edu at thorsten-wissmann.de Mon Mar 10 11:53:58 2014 From: edu at thorsten-wissmann.de (Thorsten =?iso-8859-1?Q?Wi=DFmann?=) Date: Mon, 10 Mar 2014 11:53:58 +0100 Subject: [PATCH] Only put child windows in EWMH client lists In-Reply-To: <1394285508-26433-1-git-send-email-hpdeifel@gmx.de> References: <1394285508-26433-1-git-send-email-hpdeifel@gmx.de> Message-ID: <20140310105358.GE6659@hoth.roethelheim.stw.uni-erlangen.de> On Sat, Mar 08, 2014 at 02:31:48PM +0100, Hans-Peter Deifel wrote: > Previously, only our own decoration windows showed up in the > _NET_CLIENT_LIST_STACKING property. This confused pagers like > xfce4-panel. And of course it was not EWMH conform :) Thanks, great patch! 331e8bf Only put child windows in EWMH client lists Cheers, Thorsten > > The responsible function 'stack_to_window_buf' is also used in a context > where we want to have only children of the root window in the result > buffer. Now stack_to_window_buf and it's helpers accept a parameter > specifying if they should return real_clients (aka application windows) > or other windows. > --- > src/monitor.c | 8 ++++---- > src/monitor.h | 4 ++-- > src/stack.c | 22 +++++++++++++--------- > src/stack.h | 4 ++-- > 4 files changed, 21 insertions(+), 17 deletions(-) > > diff --git a/src/monitor.c b/src/monitor.c > index 85e6af7..3a64599 100644 > --- a/src/monitor.c > +++ b/src/monitor.c > @@ -1292,13 +1292,13 @@ int detect_monitors_command(int argc, char **argv, GString* output) { > return ret; > } > > -int monitor_stack_window_count(bool only_clients) { > - return stack_window_count(g_monitor_stack, only_clients); > +int monitor_stack_window_count(bool real_clients) { > + return stack_window_count(g_monitor_stack, real_clients); > } > > -void monitor_stack_to_window_buf(Window* buf, int len, bool only_clients, > +void monitor_stack_to_window_buf(Window* buf, int len, bool real_clients, > int* remain_len) { > - stack_to_window_buf(g_monitor_stack, buf, len, only_clients, remain_len); > + stack_to_window_buf(g_monitor_stack, buf, len, real_clients, remain_len); > } > > HSStack* get_monitor_stack() { > diff --git a/src/monitor.h b/src/monitor.h > index 5d715d3..6a4579e 100644 > --- a/src/monitor.h > +++ b/src/monitor.h > @@ -101,8 +101,8 @@ void all_monitors_replace_previous_tag(struct HSTag* old, struct HSTag* new); > void drop_enternotify_events(); > > void monitor_restack(HSMonitor* monitor); > -int monitor_stack_window_count(bool only_clients); > -void monitor_stack_to_window_buf(Window* buf, int len, bool only_clients, > +int monitor_stack_window_count(bool real_clients); > +void monitor_stack_to_window_buf(Window* buf, int len, bool real_clients, > int* remain_len); > struct HSStack* get_monitor_stack(); > > diff --git a/src/stack.c b/src/stack.c > index 7d31e2d..223805b 100644 > --- a/src/stack.c > +++ b/src/stack.c > @@ -216,9 +216,9 @@ int print_stack_command(int argc, char** argv, GString* output) { > return 0; > } > > -int stack_window_count(HSStack* stack, bool only_clients) { > +int stack_window_count(HSStack* stack, bool real_clients) { > int counter = 0; > - stack_to_window_buf(stack, NULL, 0, only_clients, &counter); > + stack_to_window_buf(stack, NULL, 0, real_clients, &counter); > return -counter; > } > > @@ -227,7 +227,7 @@ struct s2wb { > int len; > Window* buf; > int missing; /* number of slices that could not find space in buf */ > - bool only_clients; /* whether to include windows that aren't clients */ > + bool real_clients; /* whether to include windows that aren't clients */ > HSLayer layer; /* the layer the slice should be added to */ > }; > > @@ -241,7 +241,11 @@ static void slice_to_window_buf(HSSlice* s, struct s2wb* data) { > switch (s->type) { > case SLICE_CLIENT: > if (data->len) { > - data->buf[0] = s->data.client->dec.decwin; > + if (data->real_clients) { > + data->buf[0] = s->data.client->window; > + } else { > + data->buf[0] = s->data.client->dec.decwin; > + } > data->buf++; > data->len--; > } else { > @@ -249,7 +253,7 @@ static void slice_to_window_buf(HSSlice* s, struct s2wb* data) { > } > break; > case SLICE_WINDOW: > - if (!data->only_clients) { > + if (!data->real_clients) { > if (data->len) { > data->buf[0] = s->data.window; > data->buf++; > @@ -261,7 +265,7 @@ static void slice_to_window_buf(HSSlice* s, struct s2wb* data) { > break; > case SLICE_MONITOR: > tag = s->data.monitor->tag; > - if (!data->only_clients) { > + if (!data->real_clients) { > if (data->len) { > data->buf[0] = s->data.monitor->stacking_window; > data->buf++; > @@ -272,7 +276,7 @@ static void slice_to_window_buf(HSSlice* s, struct s2wb* data) { > } > int remain_len = 0; /* remaining length */ > stack_to_window_buf(tag->stack, data->buf, data->len, > - data->only_clients, &remain_len); > + data->real_clients, &remain_len); > int len_used = data->len - remain_len; > if (remain_len >= 0) { > data->buf += len_used; > @@ -286,12 +290,12 @@ static void slice_to_window_buf(HSSlice* s, struct s2wb* data) { > } > > void stack_to_window_buf(HSStack* stack, Window* buf, int len, > - bool only_clients, int* remain_len) { > + bool real_clients, int* remain_len) { > struct s2wb data = { > .len = len, > .buf = buf, > .missing = 0, > - .only_clients = only_clients, > + .real_clients = real_clients, > }; > for (int i = 0; i < LAYER_COUNT; i++) { > data.layer = i; > diff --git a/src/stack.h b/src/stack.h > index fca3168..41748c2 100644 > --- a/src/stack.h > +++ b/src/stack.h > @@ -69,8 +69,8 @@ void stack_clear_layer(HSStack* stack, HSLayer layer); > int print_stack_command(int argc, char** argv, GString* output); > > // returns the number of windows in this stack > -int stack_window_count(HSStack* stack, bool only_clients); > -void stack_to_window_buf(HSStack* stack, Window* buf, int len, bool only_clients, > +int stack_window_count(HSStack* stack, bool real_clients); > +void stack_to_window_buf(HSStack* stack, Window* buf, int len, bool real_clients, > int* remain_len); > void stack_restack(HSStack* stack); > Window stack_lowest_window(HSStack* stack); > -- > 1.9.0 > -------------- next part -------------- A non-text attachment was scrubbed... Name: not available Type: application/pgp-signature Size: 230 bytes Desc: not available URL: From edu at thorsten-wissmann.de Mon Mar 10 16:17:09 2014 From: edu at thorsten-wissmann.de (Thorsten =?iso-8859-1?Q?Wi=DFmann?=) Date: Mon, 10 Mar 2014 16:17:09 +0100 Subject: [PATCH] Spelling/grammar/other fixes for manpages In-Reply-To: <20140204173624.GG1146@ghul> References: <20140108141823.GB22910@lupin> <20140108143630.GC22910@lupin> <20140204173624.GG1146@ghul> Message-ID: <20140310151709.GA20147@hoth.roethelheim.stw.uni-erlangen.de> Hi, On Tue, Feb 04, 2014 at 06:36:24PM +0100, Thorsten Wi?mann wrote: > On Wed, Jan 08, 2014 at 03:36:31PM +0100, Florian Bruhin wrote: > > Ohshit, I just noticed I accidentally removed an 'f' for > > always_show_frame. I pushed a fixup, please rebase-fixup it before > > pushing it :) > > No problem, just sent an updated patch :P... I updated it for you and > merged it as: > > 7f4f6da Spelling fixes for manpages Sorry, I forgot to merge that temporary branch to master... I just rebased it to the current master and it's id is 24fd799. Sorry for the confusion. Cheers, Thorsten -------------- next part -------------- A non-text attachment was scrubbed... Name: not available Type: application/pgp-signature Size: 230 bytes Desc: not available URL: From sircmpwn at gmail.com Tue Mar 11 02:02:53 2014 From: sircmpwn at gmail.com (Drew DeVault) Date: Mon, 10 Mar 2014 19:02:53 -0600 Subject: susbcribe Message-ID: <531E60BD.5070007@gmail.com> From me at the-compiler.org Thu Mar 13 11:39:22 2014 From: me at the-compiler.org (Florian Bruhin) Date: Thu, 13 Mar 2014 11:39:22 +0100 Subject: [PATCH] Spelling fix: Tripple -> Triple Message-ID: <20140313103922.GD262@lupin> See attached patch, small spelling fix :) -- () ascii ribbon campaign - stop html mail www.asciiribbon.org /\ www.the-compiler.org | I love long mails http://email.is-not-s.ms/ But has any little atom, While a-sittin' and a-splittin', Ever stopped to think or CARE That E = m c**2 ? -------------- next part -------------- A non-text attachment was scrubbed... Name: 0001-Spelling-fix-Tripple-Triple.patch Type: text/x-diff Size: 5430 bytes Desc: not available URL: -------------- next part -------------- A non-text attachment was scrubbed... Name: not available Type: application/pgp-signature Size: 836 bytes Desc: not available URL: From me at the-compiler.org Thu Mar 13 11:41:59 2014 From: me at the-compiler.org (Florian Bruhin) Date: Thu, 13 Mar 2014 11:41:59 +0100 Subject: [PATCH] Spelling fix: sould -> should Message-ID: <20140313104158.GE262@lupin> Another one ;) -- () ascii ribbon campaign - stop html mail www.asciiribbon.org /\ www.the-compiler.org | I love long mails http://email.is-not-s.ms/ Sed quis custodiet ipsos Custodes? [Who guards the Guardians?] -------------- next part -------------- A non-text attachment was scrubbed... Name: 0001-Spelling-fix-sould-should.patch Type: text/x-diff Size: 937 bytes Desc: not available URL: -------------- next part -------------- A non-text attachment was scrubbed... Name: not available Type: application/pgp-signature Size: 836 bytes Desc: not available URL: From me at the-compiler.org Thu Mar 13 11:43:04 2014 From: me at the-compiler.org (Florian Bruhin) Date: Thu, 13 Mar 2014 11:43:04 +0100 Subject: [PATCH] Spelling fix: sould -> should In-Reply-To: <20140313104158.GE262@lupin> References: <20140313104158.GE262@lupin> Message-ID: <20140313104304.GF262@lupin> * Florian Bruhin [2014-03-13 11:41:59 +0100]: > Another one ;) Also in the same line: Cant -> Can't ;) -- () ascii ribbon campaign - stop html mail www.asciiribbon.org /\ www.the-compiler.org | I love long mails http://email.is-not-s.ms/ Fatal Error: Found [MS-Windows] System -> Repartitioning Disk for Linux... (By cbbrown at io.org, Christopher Browne) -------------- next part -------------- A non-text attachment was scrubbed... Name: not available Type: application/pgp-signature Size: 836 bytes Desc: not available URL: From edu at thorsten-wissmann.de Thu Mar 13 11:50:18 2014 From: edu at thorsten-wissmann.de (Thorsten =?iso-8859-1?Q?Wi=DFmann?=) Date: Thu, 13 Mar 2014 11:50:18 +0100 Subject: [PATCH] Spelling fix: Tripple -> Triple In-Reply-To: <20140313103922.GD262@lupin> References: <20140313103922.GD262@lupin> Message-ID: <20140313105018.GA22894@hoth.roethelheim.stw.uni-erlangen.de> On Thu, Mar 13, 2014 at 11:39:22AM +0100, Florian Bruhin wrote: > See attached patch, small spelling fix :) > > @@ -59,7 +59,7 @@ typedef struct { > HSObject obj_urgent; > HSDecorationScheme propagate; // meta-scheme for propagating values to members > HSObject object; > -} HSDecTripple; > +} HSDecTriple; Oups. Thanks :) ebe59e3 Spelling fix: Tripple -> Triple Cheers, Thorsten -------------- next part -------------- A non-text attachment was scrubbed... Name: not available Type: application/pgp-signature Size: 230 bytes Desc: not available URL: From edu at thorsten-wissmann.de Thu Mar 13 11:54:05 2014 From: edu at thorsten-wissmann.de (Thorsten =?iso-8859-1?Q?Wi=DFmann?=) Date: Thu, 13 Mar 2014 11:54:05 +0100 Subject: [PATCH] Spelling fix: sould -> should In-Reply-To: <20140313104304.GF262@lupin> References: <20140313104158.GE262@lupin> <20140313104304.GF262@lupin> Message-ID: <20140313105405.GB22894@hoth.roethelheim.stw.uni-erlangen.de> On Thu, Mar 13, 2014 at 11:43:04AM +0100, Florian Bruhin wrote: > * Florian Bruhin [2014-03-13 11:41:59 +0100]: > > Another one ;) > > Also in the same line: Cant -> Can't ;) Oups. Added it to your patch :) Cheers, Thorsten commit ff5e0e647bd322be559d8aabbbe1503504edd2dc Author: Florian Bruhin Date: Thu Mar 13 11:41:26 2014 +0100 Spelling fix: sould -> should and Cant -> Can not diff --git a/src/decoration.c b/src/decoration.c index f46fdda..2acfd97 100644 --- a/src/decoration.c +++ b/src/decoration.c @@ -120,7 +120,7 @@ static GString* PROP2MEMBERS(HSAttribute* attr) { for (int i = 0; i < member_cnt; i++) { HSAttribute* oth_a = hsobject_find_attribute(members[i], attr->name); if (!oth_a) { - HSDebug("%d: Cant find attribute %s. This sould not happen!\n", i, attr->name); + HSDebug("%d: Can not find attribute %s. This should not happen!\n", i, attr->name); continue; } hsattribute_assign(oth_a, val->str, output); -------------- next part -------------- A non-text attachment was scrubbed... Name: not available Type: application/pgp-signature Size: 230 bytes Desc: not available URL: From ooesili at gmail.com Sat Mar 15 07:01:36 2014 From: ooesili at gmail.com (Wesley Merkel) Date: Sat, 15 Mar 2014 00:01:36 -0600 Subject: [PATCH] Add consequence to move a client to a monitor Message-ID: <20140315055836.GA16941@archbox> The new 'monitor' consequence will move the client to the specified monitor. It will interact with the 'tag' consequence if it is also specified for the given client. This behaviour is documented in doc/herbstluftwm.txt, so I will not go into it here. --- NEWS | 1 + doc/herbstluftwm.txt | 7 +++++++ src/clientlist.c | 9 +++++++++ src/rules.c | 11 +++++++++++ src/rules.h | 1 + 5 files changed, 29 insertions(+) diff --git a/NEWS b/NEWS index 35fc160..4f1a3b7 100644 --- a/NEWS +++ b/NEWS @@ -29,6 +29,7 @@ Current git version * add completion to the mousebind command * add mouse function call to call commands on mouse button press * add setting update_dragged_clients + * new rule consequence: monitor Release 0.5.3 on 2013-12-24 --------------------------- diff --git a/doc/herbstluftwm.txt b/doc/herbstluftwm.txt index 8137dda..c973c2e 100644 --- a/doc/herbstluftwm.txt +++ b/doc/herbstluftwm.txt @@ -1120,6 +1120,13 @@ Each 'CONSEQUENCE' consists of a 'NAME'='VALUE' pair. Valid 'NAMES' are: +tag+:: moves the client to tag 'VALUE'. ++monitor+:: + moves the client to the tag on monitor 'VALUE'. If the tag consequence was + also specified, move the client to that tag, then display that tag on + monitor 'VALUE'. In the case where the tag consequence is also specified, if + either of the tag or monitor values do not refer to an actual monitor or + tag, hlwm will behave as if that consequence was not set. + +focus+:: decides whether the client gets the input focus on his tag. The default is *off*. 'VALUE' can be *on*, *off* or *toggle*. diff --git a/src/clientlist.c b/src/clientlist.c index a6d2821..56721f2 100644 --- a/src/clientlist.c +++ b/src/clientlist.c @@ -245,6 +245,15 @@ HSClient* manage_client(Window win) { if (changes.tag_name) { client->tag = find_tag(changes.tag_name->str); } + if (changes.monitor_name) { + HSMonitor *monitor = string_to_monitor(changes.monitor_name->str); + if (monitor) { + // a valid tag was not already found, use the target monitor's tag + if (!client->tag) { client->tag = monitor->tag; } + // a tag was already found, display it on the target monitor + else { monitor_set_tag(monitor, client->tag); } + } + } // Reuse the keymask string client->keymask = changes.keymask; diff --git a/src/rules.c b/src/rules.c index 46defad..3800ee2 100644 --- a/src/rules.c +++ b/src/rules.c @@ -64,6 +64,7 @@ DECLARE_CONSEQUENCE(consequence_ewmhrequests); DECLARE_CONSEQUENCE(consequence_ewmhnotify); DECLARE_CONSEQUENCE(consequence_hook); DECLARE_CONSEQUENCE(consequence_keymask); +DECLARE_CONSEQUENCE(consequence_monitor); /// GLOBALS /// @@ -93,6 +94,7 @@ static HSConsequenceType g_consequence_types[] = { { "ewmhnotify", consequence_ewmhnotify }, { "hook", consequence_hook }, { "keymask", consequence_keymask }, + { "monitor", consequence_monitor }, }; static GQueue g_rules = G_QUEUE_INIT; // a list of HSRule* elements @@ -832,3 +834,12 @@ void consequence_keymask(HSConsequence* cons, changes->keymask = g_string_new(cons->value.str); } } + +void consequence_monitor(HSConsequence* cons, HSClient* client, + HSClientChanges* changes) { + if (changes->monitor_name) { + g_string_assign(changes->monitor_name, cons->value.str); + } else { + changes->monitor_name = g_string_new(cons->value.str); + } +} diff --git a/src/rules.h b/src/rules.h index 07a6584..b7f1202 100644 --- a/src/rules.h +++ b/src/rules.h @@ -57,6 +57,7 @@ typedef struct { typedef struct { GString* tag_name; + GString* monitor_name; GString* tree_index; bool focus; // if client should get focus bool switchtag; // if the tag may be switched for focusing it -- 1.9.0 From edu at thorsten-wissmann.de Sat Mar 15 14:48:38 2014 From: edu at thorsten-wissmann.de (Thorsten =?iso-8859-1?Q?Wi=DFmann?=) Date: Sat, 15 Mar 2014 14:48:38 +0100 Subject: [PATCH] Add consequence to move a client to a monitor In-Reply-To: <20140315055836.GA16941@archbox> References: <20140315055836.GA16941@archbox> Message-ID: <20140315134838.GA305@ghul.roethelheim.stw.uni-erlangen.de> Hi Wesley, On Sat, Mar 15, 2014 at 12:01:36AM -0600, Wesley Merkel wrote: > The new 'monitor' consequence will move the client to the specified > monitor. It will interact with the 'tag' consequence if it is also > specified for the given client. This behaviour is documented in > doc/herbstluftwm.txt, so I will not go into it here. Nice patch, good documentation, thanks! By the way you forgot to free the monitor_name in client_changes_free_members(). You can check it with valgrind, as described in the HACKING: If you use tools like valgrind, then it is needed to turn of the memory optimization settings for glib. So export this before running herbstluftwm within valgrind: export G_SLICE=always-malloc export G_DEBUG=gc-friendly valgrind --leak-check=full ./herbstluftwm -c share/autostart It's partially my fault because I was to lazy recently to check it and so there were two other memory leaks in the current head (fixed now). So the valgrind output was full of leak reports. I added the according g_string_free() to your patch and it's applied as: 7907ef5 Add consequence to move a client to a monitor I'm not quite sure why one needs that consequence, can you name one application for it? Cheers, Thorsten -------------- next part -------------- A non-text attachment was scrubbed... Name: not available Type: application/pgp-signature Size: 230 bytes Desc: not available URL: From ooesili at gmail.com Sat Mar 15 19:01:23 2014 From: ooesili at gmail.com (Wesley Merkel) Date: Sat, 15 Mar 2014 12:01:23 -0600 Subject: [PATCH] Add consequence to move a client to a monitor In-Reply-To: <20140315134838.GA305@ghul.roethelheim.stw.uni-erlangen.de> References: <20140315055836.GA16941@archbox> <20140315134838.GA305@ghul.roethelheim.stw.uni-erlangen.de> Message-ID: <20140315180123.GA1116@archbox> On Sat, Mar 15, 2014 at 02:48:38PM +0100, Thorsten Wi?mann wrote: > I'm not quite sure why one needs that consequence, can you name one > application for it? My original reason for the consequence was for use with the floatmon.sh script. I use a more convoluted version of the script where I have a specific floating tag for each of my normal tags, but the idea is the same. Now I can make dialog and splash windows always display on the floating monitor. However, I could see this being useful to anyone who likes certain windows to always be on a specific monitor. On an unrelated note, I made an improvement to my patch that, I feel, better integrates with hlwm's existing behaviour. -------------- next part -------------- A non-text attachment was scrubbed... Name: 0001-Integrate-monitor-consequence-with-switchtag.patch Type: text/x-diff Size: 2249 bytes Desc: not available URL: From edu at thorsten-wissmann.de Sat Mar 15 23:23:50 2014 From: edu at thorsten-wissmann.de (Thorsten =?iso-8859-1?Q?Wi=DFmann?=) Date: Sat, 15 Mar 2014 23:23:50 +0100 Subject: [PATCH] Add consequence to move a client to a monitor In-Reply-To: <20140315180123.GA1116@archbox> References: <20140315055836.GA16941@archbox> <20140315134838.GA305@ghul.roethelheim.stw.uni-erlangen.de> <20140315180123.GA1116@archbox> Message-ID: <20140315222350.GA1155@hoth.roethelheim.stw.uni-erlangen.de> On Sat, Mar 15, 2014 at 12:01:23PM -0600, Wesley Merkel wrote: > On Sat, Mar 15, 2014 at 02:48:38PM +0100, Thorsten Wi?mann wrote: > > I'm not quite sure why one needs that consequence, can you name one > > application for it? > > My original reason for the consequence was for use with the floatmon.sh > script. I use a more convoluted version of the script where I have a > specific floating tag for each of my normal tags, but the idea is the > same. Now I can make dialog and splash windows always display on the > floating monitor. However, I could see this being useful to anyone who > likes certain windows to always be on a specific monitor. > > On an unrelated note, I made an improvement to my patch that, I feel, > better integrates with hlwm's existing behaviour. Be aware that I won't change the behaviour of things after it has been official for a long time (in case of a few days it's OK). > +monitor+:: > moves the client to the tag on monitor 'VALUE'. If the tag consequence was > - also specified, move the client to that tag, then display that tag on > - monitor 'VALUE'. In the case where the tag consequence is also specified, if > - either of the tag or monitor values do not refer to an actual monitor or > - tag, hlwm will behave as if that consequence was not set. > + also specified, and switchtag is set for the client, move the client to that > + tag, then display that tag on monitor 'VALUE'. If the tag consequence was > + specified, but switchtag was not, ignore this consequence. Sounds OK, but this is weird: > + In the case where > + the tag consequence is also specified, if either of the tag or monitor > + values do not refer to an actual monitor or tag, hlwm will behave as if that > + consequence was not set. I did not get what you want to say after reading it multiple times. Please rephrase that. Do you want to say something like this? If an invalid monitor description is given, nothing is done. If the tag does not exist, then nothing is done. Regards, Thorsten -------------- next part -------------- A non-text attachment was scrubbed... Name: not available Type: application/pgp-signature Size: 230 bytes Desc: not available URL: From ooesili at gmail.com Sun Mar 16 00:52:28 2014 From: ooesili at gmail.com (Wesley Merkel) Date: Sat, 15 Mar 2014 17:52:28 -0600 Subject: [PATCH] Add consequence to move a client to a monitor In-Reply-To: <20140315222350.GA1155@hoth.roethelheim.stw.uni-erlangen.de> References: <20140315055836.GA16941@archbox> <20140315134838.GA305@ghul.roethelheim.stw.uni-erlangen.de> <20140315180123.GA1116@archbox> <20140315222350.GA1155@hoth.roethelheim.stw.uni-erlangen.de> Message-ID: <20140315235148.GA8416@archbox> On Sat, Mar 15, 2014 at 11:23:50PM +0100, Thorsten Wi?mann wrote: > Be aware that I won't change the behaviour of things after it has been > official for a long time (in case of a few days it's OK). Good to know. I think that the behaviour is now satisfactory. > Sounds OK, but this is weird: > > > + In the case where > > + the tag consequence is also specified, if either of the tag or monitor > > + values do not refer to an actual monitor or tag, hlwm will behave as if that > > + consequence was not set. > > I did not get what you want to say after reading it multiple times. > Please rephrase that. Do you want to say something like this? > > If an invalid monitor description is given, nothing is done. If the > tag does not exist, then nothing is done. I apologize for the confusion, that is a rather strange sentence. I meant to say something more like this: If an invalid monitor description is given, this consequence is ignored. If the tag does not exist, the tag consequence is ignored. From edu at thorsten-wissmann.de Sun Mar 16 01:13:14 2014 From: edu at thorsten-wissmann.de (Thorsten =?iso-8859-1?Q?Wi=DFmann?=) Date: Sun, 16 Mar 2014 01:13:14 +0100 Subject: [PATCH] Add consequence to move a client to a monitor In-Reply-To: <20140315235148.GA8416@archbox> References: <20140315055836.GA16941@archbox> <20140315134838.GA305@ghul.roethelheim.stw.uni-erlangen.de> <20140315180123.GA1116@archbox> <20140315222350.GA1155@hoth.roethelheim.stw.uni-erlangen.de> <20140315235148.GA8416@archbox> Message-ID: <20140316001313.GA7971@hoth.roethelheim.stw.uni-erlangen.de> On Sat, Mar 15, 2014 at 05:52:28PM -0600, Wesley Merkel wrote: > On Sat, Mar 15, 2014 at 11:23:50PM +0100, Thorsten Wi?mann wrote: > > Sounds OK, but this is weird: > > > > > + In the case where > > > + the tag consequence is also specified, if either of the tag or monitor > > > + values do not refer to an actual monitor or tag, hlwm will behave as if that > > > + consequence was not set. > > > > I did not get what you want to say after reading it multiple times. > > Please rephrase that. Do you want to say something like this? > > > > If an invalid monitor description is given, nothing is done. If the > > tag does not exist, then nothing is done. > > I apologize for the confusion, that is a rather strange sentence. I > meant to say something more like this: > > If an invalid monitor description is given, this consequence is > ignored. If the tag does not exist, the tag consequence is ignored. OK, but if I put an invalid tag= consequence, then client->tag will be NULL and monitor->tag will be set there, so it's not completely ignored. So I would drop this sentence: it's normal that anything invalid will be ignored. I merged it as: 368b78b Integrate monitor consequence with switchtag Regards, Thorsten -------------- next part -------------- A non-text attachment was scrubbed... Name: not available Type: application/pgp-signature Size: 230 bytes Desc: not available URL: From edu at thorsten-wissmann.de Thu Mar 20 14:03:39 2014 From: edu at thorsten-wissmann.de (Thorsten =?iso-8859-1?Q?Wi=DFmann?=) Date: Thu, 20 Mar 2014 14:03:39 +0100 Subject: herbstluftwm 0.6.0 release Message-ID: <20140320130338.GA32285@hoth.roethelheim.stw.uni-erlangen.de> Hi friends, most of you probably already noticed the 0.6.0 release yesterday. Hlwm seemed to be quite stable and usable in the last days, and some bugs and annoying things were fixed. So release early, release often! It's main features are: - add window decorations - swap_monitors_to_get_tag=0 now focused the correct monitor instead of doing nothing - settings-object to be able to use all attribute commands also for settings - bind mouse buttons to commands - lazy window update when resizing a floating window - directional focusing for monitors and floating windows The full list of new features[1] and release tarballs[2] are at the usual place. Thanks to all contributors and bug reporters, Thorsten [1] http://herbstluftwm.org/news.html [2] http://herbstluftwm.org/tarballs/ $ git shortlog v0.5.3..v0.6.0 Christian Dietrich (1): Adding keymask feature to disable keybindings temporarily Florian Bruhin (15): Assert that frame type is clients in frame_split() Add frame objects to object tree Add frame index to layout command Remove old windex/wcount attributes Update object attribute example in manpage Add client objects to frame objects Initialize frame objects correctly in load Always update complete client object Fix 'make uninstall' Add 'auto' split alignment Add version output to herbstclient. Add tag-switching by mousewheel to panel Spelling fixes for manpages Spelling fix: Tripple -> Triple Spelling fix: sould -> should and Cant -> Can not Hans-Peter Deifel (1): Only put child windows in EWMH client lists Simon Ruderich (7): Refactor smart window surrounding check. NEWS: Remove duplicate line. main.c: Fix yoda condition. colors.mk: No duplicate make output in verbose mode. Makefile: Use $(CFLAGS) when linking. settings: Fix indentation. doc: Fix ## hack. Thorsten Wi?mann (129): www: Add 0.5.3 tarball www: Remove version numbers from distro listing www: Link Debian package overview Set pseudotile_center_threshold to 10 per default Add source file for client decorations Use decorations for tiled clients Add decorations to floated clients Update decorations on focus change Update window decoration on focus change Apply window gap correctly Ignore first unmap notify events Apply pseudotile_center_threshold to decorations Add some notes regarding smart window surroundings decoration: Handle pseudotiled clients Remove unnneded resetting of the window border Relayout monitor if sizehints change Pretend _NET_MOVERESIZE_WINDOW, _NET_WM_MOVERESIZE Do not manage desktop type windows Disable window border of managed clients Switch to python based compose.py Make the website look more like hlwm www: Install css stylesheet Remove unneeded install.sh script www: Use rsync for installing files Improve the www a lot Extend tutorial chapter on the tiling Add monitors and tags to the tutorial www: mv tour tutorial doc: Minor spelling fix ewmh: Handle _NET_WM_MOVERESIZE requests basically Respect padding for floating coordinates Do reparenting correctly Send synthetic configure events correctly Remember the visibility state of clients Add example script scratchpad Add configurable window border padding Only require const char* as object name parameters Add objects for decoration schemes Add color as a object attribute type Make border color configurable via object tree Add collective attributes to scheme tripples Handle unparsed_value in hsattribute_assign() Add collective objects for normal,active,urgent Send Configure Notifications correctly Only append in frame_index_to_gstring Update NEWS and MIGRATION doc: Link to other manpages www: Remove borders on small displays Only remove client from frame layout if tag exists Draw inner window border Revert frame_objects Fixup client inner border drawing decoration: Add outer border Fix snapping for new decorations Make object find parameters const char* Accept black in color attributes Allow to write custom attributes Add reset attributes to scheme objects Remove legacy theme settings www: Link Fedora package page Add option dependencies Focus monitor on swap_monitors_to_get_tag=0 Place floating windows relative to monitor Assign own decoration class to decoration window Maintain WM_STATE property for clients Fixup decoration scheme member order Maintain _NET_FRAME_EXTENTS correctly Apply size hints for pseudotiled clients earlier Fixup type for WM_STATE client property Use color depth for decoration from client Ensure every original client is managed Update _NET_FRAME_EXTENTS on quit Initialize window attribute mask correctly www: Now also in OpenBSD ports Update MIGRATION for reverted frame patches Add attribute monitors.count Update monitor.focus on remove_monitor, set_monitors Make Attribute macros more verbose Initialize user attributes correctly Abort assign if attribute value can not be parsed Reassign color attribute value if the string changes More verbose error message on colors in assign Make meta-decoration schemes more compact Add meta-attributes for scheme in theme. Fix warnings Reparent clients back to root on crash Fixup writable indicator of attr command Draw decorations via bg pixmap and fix colors Introduce extra schemes for meta objects of themes Only recreate decoration pixmap if needed Add a settings object Let theme settings become attribute wrappers Implement smart_window_surroundings for decorations Allow mouse dragging on non-focused monitors Uptade the decoration pixmap before resizing it Merge branch 'decoration' Add first directional focus templates Add basic directional focus for floating clients Draw fullscreen window border entirely black Fixup cycle command Add directional monitor focusing Add focus_crosses_monitor_boundaries setting Add --list -l --no-disjoin to detect_monitors Make directional rectangles only center based Add documentation for decorations Raise floating window after directional focus Fixup theme section in man page Remove unused variable Draw fullscreen border entirely black Always do callback for theme meta attributes Fixup border snapping in floating mode Refactor mouse bindings and functions Implement call mouse function and add completion Update mailing list address and homepage Add setting update_dragged_clients Do not send configure event to dragged clients Send correct window position to clients Use a clients size as initial "last_inner_rect" Ensure client's initial corner is on the monitor Free client->keymask and gc for drawing Simplify completion for ! command Add command try Add command silent Donot call Clear() manually if size is changed Fix decoration flicker on client unmap Ensure that client size is applied after drag Add theme property background_color Improve default theme Release 0.6.0 Wesley Merkel (2): Add consequence to move a client to a monitor Integrate monitor consequence with switchtag -------------- next part -------------- A non-text attachment was scrubbed... Name: not available Type: application/pgp-signature Size: 230 bytes Desc: not available URL: From udvzsolt at gmail.com Thu Mar 20 16:03:38 2014 From: udvzsolt at gmail.com (Zsolt Udvari) Date: Thu, 20 Mar 2014 16:03:38 +0100 Subject: herbstluftwm 0.6.0 release In-Reply-To: <20140320130338.GA32285@hoth.roethelheim.stw.uni-erlangen.de> References: <20140320130338.GA32285@hoth.roethelheim.stw.uni-erlangen.de> Message-ID: Thanks for your work! I've used some tiling window managers (ion2/3, awesome, i3) but I think the herbstluftwm is the best! Simple and can do what I need. Keep going! Zsolt 2014-03-20 14:03 GMT+01:00 Thorsten Wi?mann : > Hi friends, > > most of you probably already noticed the 0.6.0 release yesterday. Hlwm > seemed to be quite stable and usable in the last days, and some bugs and > annoying things were fixed. So release early, release often! It's main > features are: > > - add window decorations > - swap_monitors_to_get_tag=0 now focused the correct monitor instead > of doing nothing > - settings-object to be able to use all attribute commands also for > settings > - bind mouse buttons to commands > - lazy window update when resizing a floating window > - directional focusing for monitors and floating windows > > The full list of new features[1] and release tarballs[2] are at the > usual place. > > Thanks to all contributors and bug reporters, > Thorsten > > [1] http://herbstluftwm.org/news.html > [2] http://herbstluftwm.org/tarballs/ > > $ git shortlog v0.5.3..v0.6.0 > > Christian Dietrich (1): > Adding keymask feature to disable keybindings temporarily > > Florian Bruhin (15): > Assert that frame type is clients in frame_split() > Add frame objects to object tree > Add frame index to layout command > Remove old windex/wcount attributes > Update object attribute example in manpage > Add client objects to frame objects > Initialize frame objects correctly in load > Always update complete client object > Fix 'make uninstall' > Add 'auto' split alignment > Add version output to herbstclient. > Add tag-switching by mousewheel to panel > Spelling fixes for manpages > Spelling fix: Tripple -> Triple > Spelling fix: sould -> should and Cant -> Can not > > Hans-Peter Deifel (1): > Only put child windows in EWMH client lists > > Simon Ruderich (7): > Refactor smart window surrounding check. > NEWS: Remove duplicate line. > main.c: Fix yoda condition. > colors.mk: No duplicate make output in verbose mode. > Makefile: Use $(CFLAGS) when linking. > settings: Fix indentation. > doc: Fix ## hack. > > Thorsten Wi?mann (129): > www: Add 0.5.3 tarball > www: Remove version numbers from distro listing > www: Link Debian package overview > Set pseudotile_center_threshold to 10 per default > Add source file for client decorations > Use decorations for tiled clients > Add decorations to floated clients > Update decorations on focus change > Update window decoration on focus change > Apply window gap correctly > Ignore first unmap notify events > Apply pseudotile_center_threshold to decorations > Add some notes regarding smart window surroundings > decoration: Handle pseudotiled clients > Remove unnneded resetting of the window border > Relayout monitor if sizehints change > Pretend _NET_MOVERESIZE_WINDOW, _NET_WM_MOVERESIZE > Do not manage desktop type windows > Disable window border of managed clients > Switch to python based compose.py > Make the website look more like hlwm > www: Install css stylesheet > Remove unneeded install.sh script > www: Use rsync for installing files > Improve the www a lot > Extend tutorial chapter on the tiling > Add monitors and tags to the tutorial > www: mv tour tutorial > doc: Minor spelling fix > ewmh: Handle _NET_WM_MOVERESIZE requests basically > Respect padding for floating coordinates > Do reparenting correctly > Send synthetic configure events correctly > Remember the visibility state of clients > Add example script scratchpad > Add configurable window border padding > Only require const char* as object name parameters > Add objects for decoration schemes > Add color as a object attribute type > Make border color configurable via object tree > Add collective attributes to scheme tripples > Handle unparsed_value in hsattribute_assign() > Add collective objects for normal,active,urgent > Send Configure Notifications correctly > Only append in frame_index_to_gstring > Update NEWS and MIGRATION > doc: Link to other manpages > www: Remove borders on small displays > Only remove client from frame layout if tag exists > Draw inner window border > Revert frame_objects > Fixup client inner border drawing > decoration: Add outer border > Fix snapping for new decorations > Make object find parameters const char* > Accept black in color attributes > Allow to write custom attributes > Add reset attributes to scheme objects > Remove legacy theme settings > www: Link Fedora package page > Add option dependencies > Focus monitor on swap_monitors_to_get_tag=0 > Place floating windows relative to monitor > Assign own decoration class to decoration window > Maintain WM_STATE property for clients > Fixup decoration scheme member order > Maintain _NET_FRAME_EXTENTS correctly > Apply size hints for pseudotiled clients earlier > Fixup type for WM_STATE client property > Use color depth for decoration from client > Ensure every original client is managed > Update _NET_FRAME_EXTENTS on quit > Initialize window attribute mask correctly > www: Now also in OpenBSD ports > Update MIGRATION for reverted frame patches > Add attribute monitors.count > Update monitor.focus on remove_monitor, set_monitors > Make Attribute macros more verbose > Initialize user attributes correctly > Abort assign if attribute value can not be parsed > Reassign color attribute value if the string changes > More verbose error message on colors in assign > Make meta-decoration schemes more compact > Add meta-attributes for scheme in theme. > Fix warnings > Reparent clients back to root on crash > Fixup writable indicator of attr command > Draw decorations via bg pixmap and fix colors > Introduce extra schemes for meta objects of themes > Only recreate decoration pixmap if needed > Add a settings object > Let theme settings become attribute wrappers > Implement smart_window_surroundings for decorations > Allow mouse dragging on non-focused monitors > Uptade the decoration pixmap before resizing it > Merge branch 'decoration' > Add first directional focus templates > Add basic directional focus for floating clients > Draw fullscreen window border entirely black > Fixup cycle command > Add directional monitor focusing > Add focus_crosses_monitor_boundaries setting > Add --list -l --no-disjoin to detect_monitors > Make directional rectangles only center based > Add documentation for decorations > Raise floating window after directional focus > Fixup theme section in man page > Remove unused variable > Draw fullscreen border entirely black > Always do callback for theme meta attributes > Fixup border snapping in floating mode > Refactor mouse bindings and functions > Implement call mouse function and add completion > Update mailing list address and homepage > Add setting update_dragged_clients > Do not send configure event to dragged clients > Send correct window position to clients > Use a clients size as initial "last_inner_rect" > Ensure client's initial corner is on the monitor > Free client->keymask and gc for drawing > Simplify completion for ! command > Add command try > Add command silent > Donot call Clear() manually if size is changed > Fix decoration flicker on client unmap > Ensure that client size is applied after drag > Add theme property background_color > Improve default theme > Release 0.6.0 > > Wesley Merkel (2): > Add consequence to move a client to a monitor > Integrate monitor consequence with switchtag > From cickumqt at gmail.com Fri Mar 21 02:42:58 2014 From: cickumqt at gmail.com (Christopher Meng) Date: Fri, 21 Mar 2014 09:42:58 +0800 Subject: herbstluftwm 0.6.0 release In-Reply-To: <20140320130338.GA32285@hoth.roethelheim.stw.uni-erlangen.de> References: <20140320130338.GA32285@hoth.roethelheim.stw.uni-erlangen.de> Message-ID: On Thu, Mar 20, 2014 at 9:03 PM, Thorsten Wi?mann wrote: > Hi friends, > > most of you probably already noticed the 0.6.0 release yesterday. Thank you. Fedora 20+ and EPEL7+ updated. Yours sincerely, Christopher Meng Noob here. http://cicku.me From ooesili at gmail.com Mon Mar 24 07:11:21 2014 From: ooesili at gmail.com (Wesley Merkel) Date: Mon, 24 Mar 2014 00:11:21 -0600 Subject: [Bug] Window mapping/unmapping problem Message-ID: <20140324061121.GA30910@archbox> When using qjackctl (http://qjackctl.sourceforge.net/), some of the sub-windows of the program don't re-show after being opened again. For example, if you open the Connections window by clicking the "Connect" button, close it, then re-open it, then window does not re-appear. Here is an animation of this: (http://imgur.com/PGobhVh.gif). Although I am using a custom settings in the animation, I assure you that the bug still exists when using the default autostart settings. I should also add that if I close the main qjackctl window and restart the application, the bug "resets". The windows will appear again, but only once. A narrowed down the commit which introduced the bug. It is 33a9258, which is somewhere between v0.5.3 and v0.6.0. I also ran `xwininfo -root -all` a few times to figure out what was going on. The results are attached in "xwininfos.tar.gz", and are organized accordingly: xwininfo ran on the first commit with the bug (33a9258): buggy/*/* xwininfo ran on the last commit without the bug (33a9258~): clean/*/* xwininfo ran during various times during the use of the "Connections" window, a window in which the bug is present: */connections/* xwininfo ran during various times during the use of the "Setup" window, a window in which the bug is not present: */setup/* xwininfo ran right after starting qjackctl: */*/1-before xwininfo ran right after opening the window in question: */*/2-opened xwininfo ran right after closing the window: */*/3-closed I did not include the output of xwininfo after the re-opening of the window failed, because it does not change from the '3-closed' state, which seems to be the problem. If you want to see the bug with your own eyes, you can download qjackctl and try opening the aforementioned windows. You don't need to setup anything or use any audio hardware to run the application, the bug exists right out of the box. I'm trying to fix the bug myself, but I don't know much about X, or the internals of herbstluftwm, so I am having a little trouble. Any help would be much appreciated. -------------- next part -------------- A non-text attachment was scrubbed... Name: xwininfos.tar.gz Type: application/octet-stream Size: 2435 bytes Desc: not available URL: From edu at thorsten-wissmann.de Mon Mar 24 20:43:02 2014 From: edu at thorsten-wissmann.de (Thorsten =?iso-8859-1?Q?Wi=DFmann?=) Date: Mon, 24 Mar 2014 20:43:02 +0100 Subject: [Bug] Window mapping/unmapping problem In-Reply-To: <20140324061121.GA30910@archbox> References: <20140324061121.GA30910@archbox> Message-ID: <20140324194302.GB18993@ghul> Hey Wesley, On Mon, Mar 24, 2014 at 12:11:21AM -0600, Wesley Merkel wrote: > When using qjackctl (http://qjackctl.sourceforge.net/), some of the > sub-windows of the program don't re-show after being opened again. For > example, if you open the Connections window by clicking the "Connect" > button, close it, then re-open it, then window does not re-appear. Here > is an animation of this: (http://imgur.com/PGobhVh.gif). I can reproduce it, thanks for reporting it! I'll try to fix it in the next hours. Cheers, Thorsten > Although I am using a custom settings in the animation, I assure you > that the bug still exists when using the default autostart settings. I > should also add that if I close the main qjackctl window and restart > the application, the bug "resets". The windows will appear again, but > only once. > > A narrowed down the commit which introduced the bug. It is 33a9258, > which is somewhere between v0.5.3 and v0.6.0. I also ran `xwininfo -root > -all` a few times to figure out what was going on. The results are > attached in "xwininfos.tar.gz", and are organized accordingly: > > xwininfo ran on the first commit with the bug (33a9258): > buggy/*/* > xwininfo ran on the last commit without the bug (33a9258~): > clean/*/* > > xwininfo ran during various times during the use of the "Connections" > window, a window in which the bug is present: > */connections/* > xwininfo ran during various times during the use of the "Setup" window, > a window in which the bug is not present: > */setup/* > > xwininfo ran right after starting qjackctl: > */*/1-before > xwininfo ran right after opening the window in question: > */*/2-opened > xwininfo ran right after closing the window: > */*/3-closed > > I did not include the output of xwininfo after the re-opening of the > window failed, because it does not change from the '3-closed' state, > which seems to be the problem. > > If you want to see the bug with your own eyes, you can download qjackctl > and try opening the aforementioned windows. You don't need to setup > anything or use any audio hardware to run the application, the bug > exists right out of the box. > > I'm trying to fix the bug myself, but I don't know much about X, or the > internals of herbstluftwm, so I am having a little trouble. Any help > would be much appreciated. -------------- next part -------------- A non-text attachment was scrubbed... Name: not available Type: application/pgp-signature Size: 230 bytes Desc: not available URL: From edu at thorsten-wissmann.de Tue Mar 25 02:54:51 2014 From: edu at thorsten-wissmann.de (Thorsten =?iso-8859-1?Q?Wi=DFmann?=) Date: Tue, 25 Mar 2014 02:54:51 +0100 Subject: herbstluftwm 0.6.1 release Message-ID: <20140325015451.GA16014@hoth.roethelheim.stw.uni-erlangen.de> Hi, due to a bug which made hlwm crash, another release seemed to be the easiest fix. So there aren't any new features beside directional shift of floating windows. I'm sorry that I *could not* fix the following high-priority bugs yet: - the bug Wesley Merkel of dialog windows which are kept hidden - herbstluftwm with reparenting gets really slow on some machines - max/grid layout is very slow for large screen (maybe the same bug as the above one) So these are the next things to fix -- hopefully very soon. The current release tarball can be found on the homepage[1]: c385fe9e68876961faf185fab2ca8247 herbstluftwm-0.6.1.tar.gz Regards, Thorsten [1] http://herbstluftwm.org/tarballs/herbstluftwm-0.6.1.tar.gz $ git shortlog v0.6.0..v0.6.1 Thorsten Wi?mann (8): www: Add 0.6.0 tarball Focus new clients per default Implement directional shift of floating windows Respect monitor coordinates for directional shift Fix many shift_edge bugs Describe theme.minimal in the manpage Update NEWS for 0.6.1 release Release 0.6.1 -------------- next part -------------- A non-text attachment was scrubbed... Name: not available Type: application/pgp-signature Size: 230 bytes Desc: not available URL: From simon at ruderich.org Tue Mar 25 03:24:25 2014 From: simon at ruderich.org (Simon Ruderich) Date: Tue, 25 Mar 2014 03:24:25 +0100 Subject: [PATCH] monitor: fix detect_monitors_simple() Message-ID: <8e7390c21f0a747440b280926387e9f9affe5fc0.1395714182.git.simon@ruderich.org> Get the screen size from the root window. --- src/monitor.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/monitor.c b/src/monitor.c index e0169ec..83beae1 100644 --- a/src/monitor.c +++ b/src/monitor.c @@ -1206,12 +1206,15 @@ bool detect_monitors_xinerama(Rectangle** ret_rects, size_t* ret_count) { // monitor detection that always works: one monitor across the entire screen bool detect_monitors_simple(Rectangle** ret_rects, size_t* ret_count) { + XWindowAttributes attributes; + XGetWindowAttributes(g_display, g_root, &attributes); + *ret_count = 1; *ret_rects = g_new0(Rectangle, 1); (*ret_rects)->x = 0; (*ret_rects)->y = 0; - (*ret_rects)->width = g_screen_width; - (*ret_rects)->height = g_screen_height; + (*ret_rects)->width = attributes.width; + (*ret_rects)->height = attributes.height; return true; } -- 1.8.4.rc4 -- + privacy is necessary + using gnupg http://gnupg.org + public key id: 0x92FEFDB7E44C32F9 -------------- next part -------------- A non-text attachment was scrubbed... Name: signature.asc Type: application/pgp-signature Size: 836 bytes Desc: Digital signature URL: From ml.0101 at 0x2501.org Tue Mar 25 15:09:05 2014 From: ml.0101 at 0x2501.org (ml.0101 at 0x2501.org) Date: Tue, 25 Mar 2014 15:09:05 +0100 Subject: [Bug] Window mapping/unmapping problem In-Reply-To: <20140324194302.GB18993@ghul> References: <20140324061121.GA30910@archbox> <20140324194302.GB18993@ghul> Message-ID: <20140325140905.GA7601@lostintheshell> Hello Thorsten, seem I have the same problem here: https://bbs.archlinux.org/viewtopic.php?pid=1394268#p1394268 https://bbs.archlinux.org/viewtopic.php?pid=1394757#p1394757 Thank you. F. > Hey Wesley, > > On Mon, Mar 24, 2014 at 12:11:21AM -0600, Wesley Merkel wrote: > > When using qjackctl (http://qjackctl.sourceforge.net/), some of the > > sub-windows of the program don't re-show after being opened again. For > > example, if you open the Connections window by clicking the "Connect" > > button, close it, then re-open it, then window does not re-appear. Here > > is an animation of this: (http://imgur.com/PGobhVh.gif). > > I can reproduce it, thanks for reporting it! I'll try to fix it in the > next hours. > > Cheers, > Thorsten > From edu at thorsten-wissmann.de Tue Mar 25 16:21:22 2014 From: edu at thorsten-wissmann.de (Thorsten =?iso-8859-1?Q?Wi=DFmann?=) Date: Tue, 25 Mar 2014 16:21:22 +0100 Subject: [PATCH] monitor: fix detect_monitors_simple() In-Reply-To: <8e7390c21f0a747440b280926387e9f9affe5fc0.1395714182.git.simon@ruderich.org> References: <8e7390c21f0a747440b280926387e9f9affe5fc0.1395714182.git.simon@ruderich.org> Message-ID: <20140325152122.GA24441@ghul> On Tue, Mar 25, 2014 at 03:24:25AM +0100, Simon Ruderich wrote: > Get the screen size from the root window. Thanks, as discussed. 3ea3f42 monitor: fix detect_monitors_simple() Cheers, Thorsten -------------- next part -------------- A non-text attachment was scrubbed... Name: not available Type: application/pgp-signature Size: 230 bytes Desc: not available URL: From simon at ruderich.org Wed Mar 26 23:47:22 2014 From: simon at ruderich.org (Simon Ruderich) Date: Wed, 26 Mar 2014 23:47:22 +0100 Subject: [PATCH] clientlist: use smart_window_surroundings_active() Message-ID: <7391622cd577f7f472531899e0ebd3bdff40e34f.1395873797.git.simon@ruderich.org> --- Hello, This reduces a little bit of duplication. Regards Simon src/clientlist.c | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/src/clientlist.c b/src/clientlist.c index 6d634b1..deaa090 100644 --- a/src/clientlist.c +++ b/src/clientlist.c @@ -36,7 +36,6 @@ int g_monitor_float_treshold = 24; int* g_raise_on_focus; int* g_snap_gap; -int* g_smart_window_surroundings; static GHashTable* g_clients; // container of all clients static HSObject* g_client_object; @@ -426,11 +425,10 @@ bool client_needs_minimal_dec(HSClient* client, HSFrame* frame) { frame = find_frame_with_client(client->tag->frame, client); HSAssert(frame != NULL); } - if (!*g_smart_window_surroundings) return false; + if (!smart_window_surroundings_active(frame)) return false; if (client->pseudotile) return false; if (is_client_floated(client)) return false; - return (frame->content.clients.count == 1 - || frame->content.clients.layout == LAYOUT_MAX); + return true; } void client_window_unfocus(HSClient* client) { -- 1.8.4.rc4 -- + privacy is necessary + using gnupg http://gnupg.org + public key id: 0x92FEFDB7E44C32F9 -------------- next part -------------- A non-text attachment was scrubbed... Name: signature.asc Type: application/pgp-signature Size: 836 bytes Desc: Digital signature URL: From edu at thorsten-wissmann.de Thu Mar 27 01:54:13 2014 From: edu at thorsten-wissmann.de (Thorsten =?iso-8859-1?Q?Wi=DFmann?=) Date: Thu, 27 Mar 2014 01:54:13 +0100 Subject: [PATCH] clientlist: use smart_window_surroundings_active() In-Reply-To: <7391622cd577f7f472531899e0ebd3bdff40e34f.1395873797.git.simon@ruderich.org> References: <7391622cd577f7f472531899e0ebd3bdff40e34f.1395873797.git.simon@ruderich.org> Message-ID: <20140327005413.GA9002@hoth.roethelheim.stw.uni-erlangen.de> Hi, On Wed, Mar 26, 2014 at 11:47:22PM +0100, Simon Ruderich wrote: > This reduces a little bit of duplication. Yes, and... > -int* g_smart_window_surroundings; > > static GHashTable* g_clients; // container of all clients > static HSObject* g_client_object; > @@ -426,11 +425,10 @@ bool client_needs_minimal_dec(HSClient* client, HSFrame* frame) { > frame = find_frame_with_client(client->tag->frame, client); > HSAssert(frame != NULL); > } > - if (!*g_smart_window_surroundings) return false; > + if (!smart_window_surroundings_active(frame)) return false; > if (client->pseudotile) return false; > if (is_client_floated(client)) return false; > - return (frame->content.clients.count == 1 > - || frame->content.clients.layout == LAYOUT_MAX); > + return true; > } g_smart_window_surroundings was not initialized before in a sane way. It only was initializied because there was a global of the same name in the layout.c file. Maybe I should define nearly all global variables static... Anyway: 7e60762 clientlist: use smart_window_surroundings_active() Regards, Thorsten -------------- next part -------------- A non-text attachment was scrubbed... Name: not available Type: application/pgp-signature Size: 230 bytes Desc: not available URL: From edu at thorsten-wissmann.de Thu Mar 27 03:02:55 2014 From: edu at thorsten-wissmann.de (Thorsten =?iso-8859-1?Q?Wi=DFmann?=) Date: Thu, 27 Mar 2014 03:02:55 +0100 Subject: [Bug] Window mapping/unmapping problem In-Reply-To: <20140324194302.GB18993@ghul> References: <20140324061121.GA30910@archbox> <20140324194302.GB18993@ghul> Message-ID: <20140327020254.GA1240@hoth.roethelheim.stw.uni-erlangen.de> Hey Wesley and others, On Mon, Mar 24, 2014 at 08:43:02PM +0100, Thorsten Wi?mann wrote: > On Mon, Mar 24, 2014 at 12:11:21AM -0600, Wesley Merkel wrote: > > When using qjackctl (http://qjackctl.sourceforge.net/), some of the > > sub-windows of the program don't re-show after being opened again. For > > example, if you open the Connections window by clicking the "Connect" > > button, close it, then re-open it, then window does not re-appear. Here > > is an animation of this: (http://imgur.com/PGobhVh.gif). > > I can reproduce it, thanks for reporting it! I'll try to fix it in the > next hours. I've just fixed that bug [1] and directly released 0.6.2. Sorry for the trouble, Regards, Thorsten [1] https://git.cs.fau.de/?p=hlwm;a=commitdiff;h=fa1ec6856044369b9786ff5 > > Although I am using a custom settings in the animation, I assure you > > that the bug still exists when using the default autostart settings. I > > should also add that if I close the main qjackctl window and restart > > the application, the bug "resets". The windows will appear again, but > > only once. > > > > A narrowed down the commit which introduced the bug. It is 33a9258, > > which is somewhere between v0.5.3 and v0.6.0. I also ran `xwininfo -root > > -all` a few times to figure out what was going on. The results are > > attached in "xwininfos.tar.gz", and are organized accordingly: > > > > xwininfo ran on the first commit with the bug (33a9258): > > buggy/*/* > > xwininfo ran on the last commit without the bug (33a9258~): > > clean/*/* > > > > xwininfo ran during various times during the use of the "Connections" > > window, a window in which the bug is present: > > */connections/* > > xwininfo ran during various times during the use of the "Setup" window, > > a window in which the bug is not present: > > */setup/* > > > > xwininfo ran right after starting qjackctl: > > */*/1-before > > xwininfo ran right after opening the window in question: > > */*/2-opened > > xwininfo ran right after closing the window: > > */*/3-closed > > > > I did not include the output of xwininfo after the re-opening of the > > window failed, because it does not change from the '3-closed' state, > > which seems to be the problem. > > > > If you want to see the bug with your own eyes, you can download qjackctl > > and try opening the aforementioned windows. You don't need to setup > > anything or use any audio hardware to run the application, the bug > > exists right out of the box. > > > > I'm trying to fix the bug myself, but I don't know much about X, or the > > internals of herbstluftwm, so I am having a little trouble. Any help > > would be much appreciated. > > -------------- next part -------------- A non-text attachment was scrubbed... Name: not available Type: application/pgp-signature Size: 230 bytes Desc: not available URL: From edu at thorsten-wissmann.de Thu Mar 27 03:06:22 2014 From: edu at thorsten-wissmann.de (Thorsten =?iso-8859-1?Q?Wi=DFmann?=) Date: Thu, 27 Mar 2014 03:06:22 +0100 Subject: herbstluftwm 0.6.2 release Message-ID: <20140327020622.GA4117@hoth.roethelheim.stw.uni-erlangen.de> Hi, I've just released 0.6.2 for the following reasons: - A hlwm crash has been fixed. (Could be triggered by changing a non-callback settings attribute e.g. settings.raise_on_focus) - The dialog re-mapping-problem of qjackctl and scribus etc has been fixed - Releasing is so easy and so much fun using the release.sh I.e. only bugfixes. The new tarball is 8bfbbdb16cf88821c8dacd5165590fd2 herbstluftwm-0.6.2.tar.gz on the homepage[1] and the next things to do is speeding up hlwm for the use case of many (>10) clients. Regards, Thorsten [1] http://herbstluftwm.org/tarballs/herbstluftwm-0.6.1.tar.gz -------------- next part -------------- A non-text attachment was scrubbed... Name: not available Type: application/pgp-signature Size: 230 bytes Desc: not available URL: From me at the-compiler.org Thu Mar 27 06:40:22 2014 From: me at the-compiler.org (Florian Bruhin) Date: Thu, 27 Mar 2014 06:40:22 +0100 Subject: [PATCH] Use HSAttributeValue in hsattribute_assign Message-ID: <20140327054022.GD10738@lupin> is there any reason why hsattribute_assign (object.c:536) doesn't use the HSAttributeValue typedef? the typedef is newer than that code, I'd guess it just got forgotten -- () ascii ribbon campaign - stop html mail www.asciiribbon.org /\ www.the-compiler.org | I love long mails http://email.is-not-s.ms/ Chuck Norris doesn't look both ways before he crosses the street... he just roundhouses any cars that get too close. -------------- next part -------------- A non-text attachment was scrubbed... Name: 0001-Use-HSAttributeValue-in-hsattribute_assign.patch Type: text/x-diff Size: 843 bytes Desc: not available URL: -------------- next part -------------- A non-text attachment was scrubbed... Name: not available Type: application/pgp-signature Size: 836 bytes Desc: not available URL: From me at the-compiler.org Thu Mar 27 10:28:58 2014 From: me at the-compiler.org (Florian Bruhin) Date: Thu, 27 Mar 2014 10:28:58 +0100 Subject: [PATCH] clientlist: use smart_window_surroundings_active() In-Reply-To: <20140327005413.GA9002@hoth.roethelheim.stw.uni-erlangen.de> References: <7391622cd577f7f472531899e0ebd3bdff40e34f.1395873797.git.simon@ruderich.org> <20140327005413.GA9002@hoth.roethelheim.stw.uni-erlangen.de> Message-ID: <20140327092858.GG10738@lupin> * Thorsten Wi?mann [2014-03-27 01:54:13 +0100]: > Maybe I should define nearly all global variables static... Actually I always wondered why you don't do that. Currently in hlwm, all global variables are project-global, and for most of them it'd be enough if they were file-global, leading to less namespace pollution. Florian -- () ascii ribbon campaign - stop html mail www.asciiribbon.org /\ www.the-compiler.org | I love long mails http://email.is-not-s.ms/ Happiness isn't something you experience; it's something you remember. -- Oscar Levant -------------- next part -------------- A non-text attachment was scrubbed... Name: not available Type: application/pgp-signature Size: 836 bytes Desc: not available URL: From edu at thorsten-wissmann.de Sat Mar 29 10:24:21 2014 From: edu at thorsten-wissmann.de (Thorsten =?iso-8859-1?Q?Wi=DFmann?=) Date: Sat, 29 Mar 2014 10:24:21 +0100 Subject: [PATCH] Use HSAttributeValue in hsattribute_assign In-Reply-To: <20140327054022.GD10738@lupin> References: <20140327054022.GD10738@lupin> Message-ID: <20140329092421.GA5310@hoth.roethelheim.stw.uni-erlangen.de> On Thu, Mar 27, 2014 at 06:40:22AM +0100, Florian Bruhin wrote: > is there any reason why hsattribute_assign (object.c:536) doesn't use the HSAttributeValue typedef? > the typedef is newer than that code, I'd guess it just got forgotten yeah, right: 858159d Use HSAttributeValue in hsattribute_assign. Regards, Thorsten -------------- next part -------------- A non-text attachment was scrubbed... Name: not available Type: application/pgp-signature Size: 230 bytes Desc: not available URL: From edu at thorsten-wissmann.de Sat Mar 29 10:47:24 2014 From: edu at thorsten-wissmann.de (Thorsten =?iso-8859-1?Q?Wi=DFmann?=) Date: Sat, 29 Mar 2014 10:47:24 +0100 Subject: [PATCH] clientlist: use smart_window_surroundings_active() In-Reply-To: <20140327092858.GG10738@lupin> References: <7391622cd577f7f472531899e0ebd3bdff40e34f.1395873797.git.simon@ruderich.org> <20140327005413.GA9002@hoth.roethelheim.stw.uni-erlangen.de> <20140327092858.GG10738@lupin> Message-ID: <20140329094724.GA4077@hoth.roethelheim.stw.uni-erlangen.de> On Thu, Mar 27, 2014 at 10:28:58AM +0100, Florian Bruhin wrote: > * Thorsten Wi?mann [2014-03-27 01:54:13 +0100]: > > Maybe I should define nearly all global variables static... > > Actually I always wondered why you don't do that. > > Currently in hlwm, all global variables are project-global, and for > most of them it'd be enough if they were file-global, leading to less > namespace pollution. It weren't all but in most c-files all. I just made nearly all of them static (commit cb12ee6). Cheers, Thorsten -------------- next part -------------- A non-text attachment was scrubbed... Name: not available Type: application/pgp-signature Size: 230 bytes Desc: not available URL: