dwm, branch HEAD dynamic window manager a7c5e3e53ca98b3d5e3b36d6ad77e60e9bdd4fba 2023-11-02T11:15:27Z 2023-11-02T11:16:13Z Volume hotkeys parazyd parazyd@dyne.org commit a7c5e3e53ca98b3d5e3b36d6ad77e60e9bdd4fba parent 7987560dc7390df306774fa5ff593c23e683df6a Author: parazyd <parazyd@dyne.org> Date: Thu, 2 Nov 2023 12:15:27 +0100 Volume hotkeys 7987560dc7390df306774fa5ff593c23e683df6a 2023-07-31T12:50:32Z 2023-11-02T11:16:13Z st extern size tweak parazyd parazyd@dyne.org commit 7987560dc7390df306774fa5ff593c23e683df6a parent e8a3ec4547d8eccc3cad32a863d3d0df7c0a2cbc Author: parazyd <parazyd@dyne.org> Date: Mon, 31 Jul 2023 14:50:32 +0200 st extern size tweak e8a3ec4547d8eccc3cad32a863d3d0df7c0a2cbc 2023-05-10T09:58:22Z 2023-11-02T11:16:13Z viewto{left,right} parazyd parazyd@dyne.org commit e8a3ec4547d8eccc3cad32a863d3d0df7c0a2cbc parent 8f6b3c299e84a2682264118ddd01b18ffb538f06 Author: parazyd <parazyd@dyne.org> Date: Wed, 10 May 2023 11:58:22 +0200 viewto{left,right} 8f6b3c299e84a2682264118ddd01b18ffb538f06 2022-12-02T18:24:50Z 2023-11-02T11:16:13Z smol changes parazyd parazyd@dyne.org commit 8f6b3c299e84a2682264118ddd01b18ffb538f06 parent a8ebe5f1b8dbbfb40840229f0c8467489f766094 Author: parazyd <parazyd@dyne.org> Date: Fri, 2 Dec 2022 19:24:50 +0100 smol changes a8ebe5f1b8dbbfb40840229f0c8467489f766094 2022-10-08T09:06:19Z 2023-11-02T11:16:13Z const Keys. parazyd parazyd@dyne.org commit a8ebe5f1b8dbbfb40840229f0c8467489f766094 parent c991d778f03b992ced97e091f933b2869a12aa4a Author: parazyd <parazyd@dyne.org> Date: Sat, 8 Oct 2022 11:06:19 +0200 const Keys. c991d778f03b992ced97e091f933b2869a12aa4a 2022-10-08T09:02:16Z 2023-11-02T11:16:13Z Add thinglaunch parazyd parazyd@dyne.org commit c991d778f03b992ced97e091f933b2869a12aa4a parent bc34facd9f430c2e0c862672a952ec80f5e1d6f4 Author: parazyd <parazyd@dyne.org> Date: Sat, 8 Oct 2022 11:02:16 +0200 Add thinglaunch bc34facd9f430c2e0c862672a952ec80f5e1d6f4 2022-07-15T20:03:22Z 2023-11-02T11:16:13Z math hotkeys parazyd parazyd@dyne.org commit bc34facd9f430c2e0c862672a952ec80f5e1d6f4 parent 96e2c42482108ecbec17683c399af8efc65c2f8b Author: parazyd <parazyd@dyne.org> Date: Fri, 15 Jul 2022 22:03:22 +0200 math hotkeys 96e2c42482108ecbec17683c399af8efc65c2f8b 2022-04-26T18:00:09Z 2023-11-02T11:16:13Z Config, add dunstclosecmd parazyd parazyd@dyne.org commit 96e2c42482108ecbec17683c399af8efc65c2f8b parent 5d724733483b327aa3173a59022b751b38085909 Author: parazyd <parazyd@dyne.org> Date: Tue, 26 Apr 2022 20:00:09 +0200 Config, add dunstclosecmd 5d724733483b327aa3173a59022b751b38085909 2022-04-24T09:56:57Z 2023-11-02T11:16:13Z focusurgent parazyd parazyd@dyne.org commit 5d724733483b327aa3173a59022b751b38085909 parent ab128d39306091645ffa318cd8baab08d1128bd8 Author: parazyd <parazyd@dyne.org> Date: Sun, 24 Apr 2022 11:56:57 +0200 focusurgent ab128d39306091645ffa318cd8baab08d1128bd8 2022-04-24T09:50:18Z 2023-11-02T11:16:13Z smartborders parazyd parazyd@dyne.org commit ab128d39306091645ffa318cd8baab08d1128bd8 parent 5581ad51344486680d377831ab21dd1d0190b2d5 Author: parazyd <parazyd@dyne.org> Date: Sun, 24 Apr 2022 11:50:18 +0200 smartborders 5581ad51344486680d377831ab21dd1d0190b2d5 2022-04-24T09:16:15Z 2023-11-02T11:16:13Z attachabove parazyd parazyd@dyne.org commit 5581ad51344486680d377831ab21dd1d0190b2d5 parent 64ec191cb2bf0410d2ad23665dac3712fe26f70b Author: parazyd <parazyd@dyne.org> Date: Sun, 24 Apr 2022 11:16:15 +0200 attachabove 64ec191cb2bf0410d2ad23665dac3712fe26f70b 2022-04-24T08:47:07Z 2023-11-02T11:16:13Z movestack parazyd parazyd@dyne.org commit 64ec191cb2bf0410d2ad23665dac3712fe26f70b parent d828c0def978069ab512aee073135fd3f79f02cf Author: parazyd <parazyd@dyne.org> Date: Sun, 24 Apr 2022 10:47:07 +0200 movestack d828c0def978069ab512aee073135fd3f79f02cf 2022-04-24T07:59:24Z 2023-11-02T11:16:13Z Hotkeys parazyd parazyd@dyne.org commit d828c0def978069ab512aee073135fd3f79f02cf parent 981ba3e87611cd5d2bd1673b20fcd0bcf2ee9553 Author: parazyd <parazyd@dyne.org> Date: Sun, 24 Apr 2022 09:59:24 +0200 Hotkeys 981ba3e87611cd5d2bd1673b20fcd0bcf2ee9553 2022-04-23T22:19:07Z 2023-11-02T11:16:13Z columns parazyd parazyd@dyne.org commit 981ba3e87611cd5d2bd1673b20fcd0bcf2ee9553 parent e250e8dce3c926caaacf1555ef4763aee3eb8109 Author: parazyd <parazyd@dyne.org> Date: Sun, 24 Apr 2022 00:19:07 +0200 columns e250e8dce3c926caaacf1555ef4763aee3eb8109 2022-04-23T22:08:19Z 2023-11-02T11:16:13Z systray parazyd parazyd@dyne.org commit e250e8dce3c926caaacf1555ef4763aee3eb8109 parent cb0f4a25dbf8d19cca950e67fb5da0b6c2a5b408 Author: parazyd <parazyd@dyne.org> Date: Sun, 24 Apr 2022 00:08:19 +0200 systray cb0f4a25dbf8d19cca950e67fb5da0b6c2a5b408 2022-04-23T22:04:30Z 2023-11-02T11:16:13Z scratchpad parazyd parazyd@dyne.org commit cb0f4a25dbf8d19cca950e67fb5da0b6c2a5b408 parent 05f6ab9ff69a4e8297a7d05f7fe463cd84c9ecbd Author: parazyd <parazyd@dyne.org> Date: Sun, 24 Apr 2022 00:04:30 +0200 scratchpad 05f6ab9ff69a4e8297a7d05f7fe463cd84c9ecbd 2022-04-23T22:01:35Z 2023-11-02T11:16:13Z pertag parazyd parazyd@dyne.org commit 05f6ab9ff69a4e8297a7d05f7fe463cd84c9ecbd parent b43bd229c3efda95d18e7025c355beaa357caf5c Author: parazyd <parazyd@dyne.org> Date: Sun, 24 Apr 2022 00:01:35 +0200 pertag b43bd229c3efda95d18e7025c355beaa357caf5c 2022-04-23T21:51:06Z 2023-11-02T11:16:13Z Window mapping. parazyd parazyd@dyne.org commit b43bd229c3efda95d18e7025c355beaa357caf5c parent 5f54f09a5723d628a88d42a6a7b290982cdf1dec Author: parazyd <parazyd@dyne.org> Date: Sat, 23 Apr 2022 23:51:06 +0200 Window mapping. 5f54f09a5723d628a88d42a6a7b290982cdf1dec 2022-04-23T21:50:55Z 2023-11-02T11:16:13Z Add config file. parazyd parazyd@dyne.org commit 5f54f09a5723d628a88d42a6a7b290982cdf1dec parent 9f8855343c881bdc01b9fff5b956537ba1106b76 Author: parazyd <parazyd@dyne.org> Date: Sat, 23 Apr 2022 23:50:55 +0200 Add config file. 9f8855343c881bdc01b9fff5b956537ba1106b76 2023-09-22T13:13:29Z 2023-09-22T13:13:29Z Makefile: remove the options target Hiltjo Posthuma hiltjo@codemadness.org commit 9f8855343c881bdc01b9fff5b956537ba1106b76 parent e81f17d4c196aaed6893fd4beed49991caa3e2a4 Author: Hiltjo Posthuma <hiltjo@codemadness.org> Date: Fri, 22 Sep 2023 15:13:29 +0200 Makefile: remove the options target The Makefile used to suppress output (by using @), so this target made sense at the time. But the Makefile should be simple and make debugging with less abstractions or fancy printing. The Makefile was made verbose and doesn't hide the build output, so remove this target. Prompted by a question on the mailing list about the options target. e81f17d4c196aaed6893fd4beed49991caa3e2a4 2023-04-09T10:37:14Z 2023-04-09T10:37:14Z restore SIGCHLD sighandler to default before spawning a program Hiltjo Posthuma hiltjo@codemadness.org commit e81f17d4c196aaed6893fd4beed49991caa3e2a4 parent 348f6559ab0d4793db196ffa56ba96ab95a594a6 Author: Hiltjo Posthuma <hiltjo@codemadness.org> Date: Sun, 9 Apr 2023 12:37:14 +0200 restore SIGCHLD sighandler to default before spawning a program From sigaction(2): A child created via fork(2) inherits a copy of its parent's signal dispositions. During an execve(2), the dispositions of handled signals are reset to the default; the dispositions of ignored signals are left unchanged. This refused to start directly some programs from configuring in config.h: static Key keys[] = { MODKEY, XK_o, spawn, {.v = cmd } }, }; Some reported programs that didn't start were: mpv, anki, dmenu_extended. Reported by pfx. Initial patch suggestion by Storkman. 348f6559ab0d4793db196ffa56ba96ab95a594a6 2023-02-17T05:05:09Z 2023-02-17T14:27:34Z config.mk: update to _XOPEN_SOURCE=700L NRK nrk@disroot.org commit 348f6559ab0d4793db196ffa56ba96ab95a594a6 parent 712d6639ff8e863560328131bbb92b248dc9cde7 Author: NRK <nrk@disroot.org> Date: Fri, 17 Feb 2023 11:05:09 +0600 config.mk: update to _XOPEN_SOURCE=700L SA_NOCLDWAIT is marked as XSI in the posix spec [0] and FreeBSD and NetBSD seems to more be strict about the feature test macro [1]. so update the macro to use _XOPEN_SOURCE=700L instead, which is equivalent to _POSIX_C_SOURCE=200809L except that it also unlocks the X/Open System Interfaces. [0]: https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/signal.h.html#tag_13_42 [1]: https://lists.suckless.org/dev/2302/35111.html Tested on: * NetBSD 9.3 (fixed). * FreeBSD 13 (fixed). * Void Linux musl. * Void Linux glibc. * OpenBSD 7.2 (stable). * Slackware 11. Reported-by: beastie <pufferfish@riseup.net> 712d6639ff8e863560328131bbb92b248dc9cde7 2023-01-28T11:53:48Z 2023-01-28T12:34:43Z Use sigaction(SA_NOCLDWAIT) for SIGCHLD handling Chris Down chris@chrisdown.name commit 712d6639ff8e863560328131bbb92b248dc9cde7 parent 89f9905714c1c1b2e8b09986dfbeca15b68d8af8 Author: Chris Down <chris@chrisdown.name> Date: Sat, 28 Jan 2023 12:53:48 +0100 Use sigaction(SA_NOCLDWAIT) for SIGCHLD handling signal() semantics are pretty unclearly specified. For example, depending on OS kernel and libc, the handler may be returned to SIG_DFL (hence the inner call to read the signal handler). Moving to sigaction() means the behaviour is consistently defined. Using SA_NOCLDWAIT also allows us to avoid calling the non-reentrant function die() in the handler. Some addditional notes for archival purposes: * NRK pointed out errno of waitpid could also theoretically get clobbered. * The original patch was iterated on and modified by NRK and Hiltjo: * SIG_DFL was changed to SIG_IGN, this is required, atleast on older systems such as tested on Slackware 11. * signals are not blocked using sigprocmask, because in theory it would briefly for example also ignore a SIGTERM signal. It is OK if waitpid() is (in theory interrupted). POSIX reference: "Consequences of Process Termination": https://pubs.opengroup.org/onlinepubs/9699919799/functions/_Exit.html#tag_16_01_03_01 89f9905714c1c1b2e8b09986dfbeca15b68d8af8 2022-12-07T14:55:08Z 2022-12-07T22:06:26Z grabkeys: Avoid missing events when a keysym maps to multiple keycodes Chris Down chris@chrisdown.name commit 89f9905714c1c1b2e8b09986dfbeca15b68d8af8 parent ba56fe9fea0a28d8184a727a987836a0903e2682 Author: Chris Down <chris@chrisdown.name> Date: Wed, 7 Dec 2022 14:55:08 +0000 grabkeys: Avoid missing events when a keysym maps to multiple keycodes It's not uncommon for one keysym to map to multiple keycodes. For example, the "play" button on my keyboard sends keycode 172, but my bluetooth headphones send keycode 208, both of which map back to XF86AudioPlay: % xmodmap -pke | grep XF86AudioPlay keycode 172 = XF86AudioPlay XF86AudioPause XF86AudioPlay XF86AudioPause keycode 208 = XF86AudioPlay NoSymbol XF86AudioPlay keycode 215 = XF86AudioPlay NoSymbol XF86AudioPlay This is a problem because the current code only grabs a single one of these keycodes, which means that events for any other keycode also mapping to the bound keysym will not be handled by dwm. In my case, this means that binding XF86AudioPlay does the right thing and correctly handles my keyboard's keys, but does nothing on my headphones. I'm not the only person affected by this, there are other reports[0]. In order to fix this, we look at the mappings between keycodes and keysyms at grabkeys() time and pick out all matching keycodes rather than just the first one. The keypress() side of this doesn't need any changes because the keycode gets converted back to a canonical keysym before any action is taken. 0: https://github.com/cdown/dwm/issues/11 ba56fe9fea0a28d8184a727a987836a0903e2682 2022-10-28T14:37:56Z 2022-10-28T14:37:56Z Revert "Remove dmenumon variable" Hiltjo Posthuma hiltjo@codemadness.org commit ba56fe9fea0a28d8184a727a987836a0903e2682 parent 50ad171eea9db5ccb36fce2592e047c3282975ff Author: Hiltjo Posthuma <hiltjo@codemadness.org> Date: Fri, 28 Oct 2022 16:37:56 +0200 Revert "Remove dmenumon variable" This reverts commit c2b748e7931e5f28984efc236f9b1a212dbc65e8. Revert back this change. It seems to not be an edge-case anymore since multiple users have asked about this new behaviour now. 50ad171eea9db5ccb36fce2592e047c3282975ff 2022-10-04T17:35:13Z 2022-10-04T17:35:13Z bump version to 6.4 Hiltjo Posthuma hiltjo@codemadness.org commit 50ad171eea9db5ccb36fce2592e047c3282975ff parent 970f37697358574e127019eb0ee2f5725ec05ce0 Author: Hiltjo Posthuma <hiltjo@codemadness.org> Date: Tue, 4 Oct 2022 19:35:13 +0200 bump version to 6.4 970f37697358574e127019eb0ee2f5725ec05ce0 2022-09-16T21:06:47Z 2022-09-17T13:32:41Z remove workaround for a crash with color emojis on some systems, now fixed in libXft 2.3.5 Hiltjo Posthuma hiltjo@codemadness.org commit 970f37697358574e127019eb0ee2f5725ec05ce0 parent c2b748e7931e5f28984efc236f9b1a212dbc65e8 Author: Hiltjo Posthuma <hiltjo@codemadness.org> Date: Fri, 16 Sep 2022 23:06:47 +0200 remove workaround for a crash with color emojis on some systems, now fixed in libXft 2.3.5 https://gitlab.freedesktop.org/xorg/lib/libxft/-/blob/libXft-2.3.5/NEWS c2b748e7931e5f28984efc236f9b1a212dbc65e8 2022-08-26T12:48:46Z 2022-08-28T09:39:43Z Remove dmenumon variable Stein bakkeby@gmail.com commit c2b748e7931e5f28984efc236f9b1a212dbc65e8 parent 84d7322113c2bf023f5eaa8537fb0e72d4105046 Author: Stein <bakkeby@gmail.com> Date: Fri, 26 Aug 2022 14:48:46 +0200 Remove dmenumon variable Reasoning: Since 2011 dmenu has been capable of working out which monitor currently has focus in a Xinerama setup, making the use of the -m flag more or less redundant. This is easily demonstrated by using dmenu in any other window manager. There used to be a nodmenu patch that provided these changes: https://git.suckless.org/sites/commit/ed68e3629de4ef2ca2d3f8893a79fb570b4c0cbc.html but this was removed on the basis that it was very easy to work out and apply manually if needed. The proposal here is to remove this dependency from dwm. The mechanism of the dmenumon variable could be provided via a patch if need be. The edge case scenario that dmenu does not handle on its own, and the effect of removing this mechanism, is that if the user trigger focusmon via keybindings to change focus to another monitor that has no clients, then dmenu will open on the monitor containing the window with input focus (or the monitor with the mouse cursor if no windows have input focus). If this edge case is important to cover then this can be addressed by setting input focus to selmon->barwin in the focus function if there is no client to give focus to (rather than giving focus back to the root window). 84d7322113c2bf023f5eaa8537fb0e72d4105046 2022-08-18T16:13:08Z 2022-08-19T09:47:22Z config.def.h: make keys and buttons const NRK nrk@disroot.org commit 84d7322113c2bf023f5eaa8537fb0e72d4105046 parent 5799dd1fca6576b662d299e210cd5933b29d502d Author: NRK <nrk@disroot.org> Date: Thu, 18 Aug 2022 22:13:08 +0600 config.def.h: make keys and buttons const pretty much all other variables are declared as const when they're not modified. 5799dd1fca6576b662d299e210cd5933b29d502d 2022-08-15T12:31:22Z 2022-08-17T11:33:57Z Remove blw variable in favour of calculating the value when needed Stein bakkeby@gmail.com commit 5799dd1fca6576b662d299e210cd5933b29d502d parent 44adafe0069e73aa03a3829d7bb39591cd8b3f1d Author: Stein <bakkeby@gmail.com> Date: Mon, 15 Aug 2022 14:31:22 +0200 Remove blw variable in favour of calculating the value when needed The purpose and reasoning behind the bar layout width (blw) variable in dwm the way it is today may not be immediately obvious. The use of the variable makes more sense when looking at commit 2ce37bc from 2009 where blw was initialised in the setup function and it represented the maximum of all available layout symbols. for(blw = i = 0; LENGTH(layouts) > 1 && i < LENGTH(layouts); i++) { w = TEXTW(layouts[i].symbol); blw = MAX(blw, w); } As such the layout symbol back then was fixed in size and both drawbar and buttonpress depended on this variable. The the way the blw variable is set today in drawbar means that it merely caches the size of the layout symbol for the last bar drawn. While unlikely to happen in practice it is possible that the last bar drawn is not that of the currently selected monitor, which can result in misaligned button clicks if there is a difference in layout symbol width between monitors. 44adafe0069e73aa03a3829d7bb39591cd8b3f1d 2022-08-11T09:15:55Z 2022-08-12T07:02:34Z Make floating windows spawn within the monitor's window area Stein bakkeby@gmail.com commit 44adafe0069e73aa03a3829d7bb39591cd8b3f1d parent a859676ead17017bbe81b4989b2f2e0b00a0b4ba Author: Stein <bakkeby@gmail.com> Date: Thu, 11 Aug 2022 11:15:55 +0200 Make floating windows spawn within the monitor's window area This is a follow-up on this thread: https://lists.suckless.org/hackers/2208/18462.html The orginal code had constraints such that if a window's starting attributes (position and size) were to place the window outside of the edges of the monitor, then the window would be moved into view at the closest monitor edge. There was an exception to this where if a top bar is used then the window should not obscure the bar if present, which meant to place the window within the window area instead. The proposed change here makes it the general rule that floating windows should spawn within the window area rather than within the monitor area. This makes it simple and consistent with no exceptions and it makes the intention of the code clear. This has the benefit of making the behaviour consistent regardless of whether the user is using a top bar or a bottom bar. Additionally this will have an effect on patches that modify the size of the window area. For example if the insets patch is used to reserve space on the left hand side of the monitor for a dock or a vertical bar then new floating clients will not obscure that area. a859676ead17017bbe81b4989b2f2e0b00a0b4ba 2022-08-09T08:38:08Z 2022-08-10T13:31:21Z Simplify client y-offset correction Stein bakkeby@gmail.com commit a859676ead17017bbe81b4989b2f2e0b00a0b4ba parent e0dee911455cee739a5b05a994828f4a37a2764d Author: Stein <bakkeby@gmail.com> Date: Tue, 9 Aug 2022 10:38:08 +0200 Simplify client y-offset correction The reasoning behind the original line may be lost to time as it does not make much sense checking the position on the x-axis to determine how to position the client on the y-axis. In the context of multi-monitor setups the monitor y position (m->my) may be greater than 0 (say 500), in which case the window could be placed out of view if: - the window attributes have a 0 value for the y position and - we end up using the y position of bh (e.g. 22) If the aim is to avoid a new floating client covering the bar then restricting y position to be at least that of the window area (m->wy) should cover the two cases of using a top bar and using a bottom bar. e0dee911455cee739a5b05a994828f4a37a2764d 2022-08-08T08:43:09Z 2022-08-08T08:43:09Z sync code-style patch from libsl Hiltjo Posthuma hiltjo@codemadness.org commit e0dee911455cee739a5b05a994828f4a37a2764d parent 5e76e7e21da042c493c59235ca82d7275f20a7e4 Author: Hiltjo Posthuma <hiltjo@codemadness.org> Date: Mon, 8 Aug 2022 10:43:09 +0200 sync code-style patch from libsl 5e76e7e21da042c493c59235ca82d7275f20a7e4 2022-08-05T22:27:13Z 2022-08-06T14:09:01Z code-style: simplify some checks NRK nrk@disroot.org commit 5e76e7e21da042c493c59235ca82d7275f20a7e4 parent 5b2e5e7a4001479e4dc3e245f96e49f7ea0da658 Author: NRK <nrk@disroot.org> Date: Sat, 6 Aug 2022 04:27:13 +0600 code-style: simplify some checks main change here is making the `zoom()` logic saner. the rest of the changes are just small stuff which accumulated on my local branch. pop() must not be called with NULL. and `zoom()` achieves this, but in a very (unnecessarily) complicated way: if c == NULL then nexttiled() will return NULL as well, so we enter this branch: if (c == nexttiled(selmon->clients)) in here the !c check fails and the function returns before calling pop() if (!c || !(c = nexttiled(c->next))) return; however, none of this was needed. we can simply return early if c was NULL. Also `c` is set to `selmon->sel` so we can use `c` in the first check instead which makes things shorter. 5b2e5e7a4001479e4dc3e245f96e49f7ea0da658 2022-07-29T23:26:04Z 2022-08-02T16:08:51Z spawn: reduce 2 lines, change fprintf() + perror() + exit() to die("... :") explosion-mental explosion0mental@gmail.com commit 5b2e5e7a4001479e4dc3e245f96e49f7ea0da658 parent 786f6e2a6f8466ad94706781bc93bc6eb6e69512 Author: explosion-mental <explosion0mental@gmail.com> Date: Fri, 29 Jul 2022 18:26:04 -0500 spawn: reduce 2 lines, change fprintf() + perror() + exit() to die("... :") when calling die and the last character of the string corresponds to ':', die() will call perror(). See util.c Also change EXIT_SUCCESS to EXIT_FAILURE 786f6e2a6f8466ad94706781bc93bc6eb6e69512 2022-08-01T09:42:44Z 2022-08-02T16:04:56Z unmanage: stop listening for events for unmanaged windows Stein bakkeby@gmail.com commit 786f6e2a6f8466ad94706781bc93bc6eb6e69512 parent e03248a4d5feaaacb130416be6e467a04de81f78 Author: Stein <bakkeby@gmail.com> Date: Mon, 1 Aug 2022 11:42:44 +0200 unmanage: stop listening for events for unmanaged windows This is in particular to avoid flickering in dwm (and high CPU usage) when hovering the mouse over a tabbed window that was previously managed by dwm. Consider the following two scenarios: 1) We start tabbed (window 0xc000003), tabbed is managed by the window manager. We start st being embedded into tabbed. $ st -w 0xc000003 What happens here is that: - tabbed gets a MapRequest for the st window - tabbed reparents the st window - tabbed will receive X events for the window The window manager will have no awareness of the st window and the X server will not send X events to the window manager relating to the st window. There is no flickering or any other issues relating to focus. 2) We start tabbed (window 0xc000003), tabbed is managed by the window manager. We start st as normal (window 0xd400005). What happens here is that: - the window manager gets a MapRequest for the st window - dwm manages the st window as a normal client - dwm will receive X events for the window Now we use xdotool to trigger a reparenting of the st window into tabbed. $ xdotool windowreparent 0xd400005 0xc000003 What happens here is that: - tabbed gets a MapRequest for the st window - tabbed reparents the st window - the window manager gets an UnmapNotify - the window manager no longer manages the st window - both the window manager and tabbed will receive X events for the st window In dwm move the mouse cursor over the tabbed window. What happens now is that: - dwm will receive a FocusIn event for the tabbed window - dwm will set input focus for the tabbed window - tabbed will receive a FocusIn event for the main window - tabbed will give focus to the window on the currently selected tab - which again triggers a FocusIn event which dwm receives - dwm determines that the window that the FocusIn event is for (0xd400005) is not the currently selected client (tabbed) - dwm sets input focus for the tabbed window - this causes an infinite loop as long as the mouse cursor hovers the tabbed window, resulting in flickering and high CPU usage The fix here is to tell the X server that we are no longer interested in receiving events for this window when the window manager stops managing the window. e03248a4d5feaaacb130416be6e467a04de81f78 2022-07-22T07:18:52Z 2022-07-22T07:18:52Z Revert "do not call signal-unsafe function inside sighanlder" Hiltjo Posthuma hiltjo@codemadness.org commit e03248a4d5feaaacb130416be6e467a04de81f78 parent 6613d9f9a1a5630bab30bc2b70bdc793977073ee Author: Hiltjo Posthuma <hiltjo@codemadness.org> Date: Fri, 22 Jul 2022 09:18:52 +0200 Revert "do not call signal-unsafe function inside sighanlder" This reverts commit 6613d9f9a1a5630bab30bc2b70bdc793977073ee. Discussed on the mailinglist: https://lists.suckless.org/hackers/2207/18405.html 6613d9f9a1a5630bab30bc2b70bdc793977073ee 2022-07-14T01:26:40Z 2022-07-15T18:53:58Z do not call signal-unsafe function inside sighanlder NRK nrk@disroot.org commit 6613d9f9a1a5630bab30bc2b70bdc793977073ee parent 9bffa845faa181fb3afe05f3dc86ad79c80736be Author: NRK <nrk@disroot.org> Date: Thu, 14 Jul 2022 07:26:40 +0600 do not call signal-unsafe function inside sighanlder die() calls vprintf, fputc and exit; none of these are async-signal-safe, see `man 7 signal-safety`. 9bffa845faa181fb3afe05f3dc86ad79c80736be 2022-07-14T01:27:34Z 2022-07-15T18:53:56Z use named parameter for func prototype NRK nrk@disroot.org commit 9bffa845faa181fb3afe05f3dc86ad79c80736be parent d3f93c7c1a13a2a78f04fb41ad1935525df948db Author: NRK <nrk@disroot.org> Date: Thu, 14 Jul 2022 07:27:34 +0600 use named parameter for func prototype all the other prototypes use names. d3f93c7c1a13a2a78f04fb41ad1935525df948db 2022-05-10T17:07:56Z 2022-05-10T17:07:56Z sync latest drw.{c,h} changes from dmenu Hiltjo Posthuma hiltjo@codemadness.org commit d3f93c7c1a13a2a78f04fb41ad1935525df948db parent cd0773cee9bad694dc9a6b1355a32bbe61abadff Author: Hiltjo Posthuma <hiltjo@codemadness.org> Date: Tue, 10 May 2022 19:07:56 +0200 sync latest drw.{c,h} changes from dmenu cd0773cee9bad694dc9a6b1355a32bbe61abadff 2022-05-01T16:37:54Z 2022-05-01T16:37:54Z Makefile: add manual path for OpenBSD Hiltjo Posthuma hiltjo@codemadness.org commit cd0773cee9bad694dc9a6b1355a32bbe61abadff parent 8b48e309735f5fe49d35f86e967f4b5dea2a2f2d Author: Hiltjo Posthuma <hiltjo@codemadness.org> Date: Sun, 1 May 2022 18:37:54 +0200 Makefile: add manual path for OpenBSD Reported by fossy <fossy@dnmx.org>, thanks 8b48e309735f5fe49d35f86e967f4b5dea2a2f2d 2022-04-26T08:42:23Z 2022-04-26T13:50:55Z manage: Make sure c->isfixed is applied before floating checks Chris Down chris@chrisdown.name commit 8b48e309735f5fe49d35f86e967f4b5dea2a2f2d parent a83dc2031050d786ddf5f329b57d658a931c94b7 Author: Chris Down <chris@chrisdown.name> Date: Tue, 26 Apr 2022 09:42:23 +0100 manage: Make sure c->isfixed is applied before floating checks Commit 8806b6e23793 ("manage: propertynotify: Reduce cost of unused size hints") mistakenly removed an early size hints update that's needed to populate c->isfixed for floating checks at manage() time. This resulted in fixed (size hint min dimensions == max dimensions) subset of windows not floating when they should. See https://lists.suckless.org/dev/2204/34730.html for discussion. a83dc2031050d786ddf5f329b57d658a931c94b7 2022-04-26T13:50:32Z 2022-04-26T13:50:32Z LICENSE: add Chris Down Hiltjo Posthuma hiltjo@codemadness.org commit a83dc2031050d786ddf5f329b57d658a931c94b7 parent a4771de5ba54a38b062a7d748635f21c141b5c7e Author: Hiltjo Posthuma <hiltjo@codemadness.org> Date: Tue, 26 Apr 2022 15:50:32 +0200 LICENSE: add Chris Down a4771de5ba54a38b062a7d748635f21c141b5c7e 2022-04-26T08:30:59Z 2022-04-26T08:30:59Z Revert "manage: For isfloating/oldstate check/set, ensure trans client actually exists" Hiltjo Posthuma hiltjo@codemadness.org commit a4771de5ba54a38b062a7d748635f21c141b5c7e parent d93ff48803f04f1363bf303af1d7e6ccc5cb8d3f Author: Hiltjo Posthuma <hiltjo@codemadness.org> Date: Tue, 26 Apr 2022 10:30:59 +0200 Revert "manage: For isfloating/oldstate check/set, ensure trans client actually exists" This reverts commit bece862a0fc4fc18ef9065b18cd28e2032d0d975. It caused a regression, for example: https://lists.suckless.org/hackers/2203/18220.html d93ff48803f04f1363bf303af1d7e6ccc5cb8d3f 2022-02-21T14:58:28Z 2022-04-16T14:59:03Z Update monitor positions also on removal Santtu Lakkala inz@inz.fi commit d93ff48803f04f1363bf303af1d7e6ccc5cb8d3f parent 8806b6e2379372900e3d9e0bf6604bc7f727350b Author: Santtu Lakkala <inz@inz.fi> Date: Mon, 21 Feb 2022 16:58:28 +0200 Update monitor positions also on removal When monitors are removed, the coordinates of existing monitors may change, if the removed monitors had smaller coordinates than the remaining ones. Remove special case handling so that the same update-if-necessary loop is run also in the case when monitors are removed. 8806b6e2379372900e3d9e0bf6604bc7f727350b 2022-03-17T15:56:13Z 2022-04-16T14:37:46Z manage: propertynotify: Reduce cost of unused size hints Chris Down chris@chrisdown.name commit 8806b6e2379372900e3d9e0bf6604bc7f727350b parent bece862a0fc4fc18ef9065b18cd28e2032d0d975 Author: Chris Down <chris@chrisdown.name> Date: Thu, 17 Mar 2022 15:56:13 +0000 manage: propertynotify: Reduce cost of unused size hints This patch defers all size hint calculations until they are actually needed, drastically reducing the number of calls to updatesizehints(), which can be expensive when called repeatedly (as it currently is during resizes). In my unscientific testing this reduces calls to updatesizehints() by over 90% during a typical work session. There are no functional changes for users other than an increase in responsiveness after resizes and a reduction in CPU time. In slower environments or X servers, this patch also offers an improvement in responsiveness that is often tangible after resizing a client that changes hints during resizes. There are two main motivations to defer this work to the time of hint application: 1. Some clients, especially terminals using incremental size hints, resend XA_WM_NORMAL_HINTS events on resize to avoid fighting with the WM or mouse resizing. For example, some terminals like urxvt clear PBaseSize and PResizeInc during XResizeWindow and restore them afterwards. For this reason, after the resize is concluded, we typically receive a backlogged XA_WM_NORMAL_HINTS message for each update period with movement, which is useless. In some cases one may get hundreds or thousands of XA_WM_NORMAL_HINTS messages on large resizes, and currently all of these result in a separate updatesizehints() call, of which all but the final one are immediately outdated. (We can't just blindly discard these messages during resizes like we do for EnterNotify, because some of them might actually be for other windows, and may not be XA_WM_NORMAL_HINTS events.) 2. For users which use resizehints=0 most of these updates are unused anyway -- in the normal case where the client is not floating these values won't be used, so there's no need to calculate them up front. A synthetic test using the mouse to resize a floating terminal window from roughly 256x256 to 1024x1024 and back again shows that the number of calls to updatesizehints() goes from over 500 before this patch (one for each update interval with movement) to 2 after this patch (one for each hint application), with no change in user visible behaviour. This also reduces the delay before dwm is ready to process new events again after a large resize on such a client, as it avoids the thundering herd of updatesizehints() calls when hundreds of backlogged XA_WM_NORMAL_HINTS messages appear at once after a resize is finished. bece862a0fc4fc18ef9065b18cd28e2032d0d975 2022-02-21T06:10:56Z 2022-03-13T16:32:56Z manage: For isfloating/oldstate check/set, ensure trans client actually exists Miles Alan m@milesalan.com commit bece862a0fc4fc18ef9065b18cd28e2032d0d975 parent 60e9a14998bfe8666c641f7c27fec18e85ac7494 Author: Miles Alan <m@milesalan.com> Date: Mon, 21 Feb 2022 01:10:56 -0500 manage: For isfloating/oldstate check/set, ensure trans client actually exists In certain instances trans may be set to a window that doesn't actually map to a client via wintoclient; in this case it doesn't make sense to set isfloating/oldstate since trans is essentially invalid in that case / correlates to the above condition check where trans is set / XGetTransientForHint is called. 60e9a14998bfe8666c641f7c27fec18e85ac7494 2022-03-11T14:40:05Z 2022-03-13T09:49:43Z fix mem leak in cleanup() NRK nrk@disroot.org commit 60e9a14998bfe8666c641f7c27fec18e85ac7494 parent d39e2f3441fe18aba8d1a62c08918a411ec6f237 Author: NRK <nrk@disroot.org> Date: Fri, 11 Mar 2022 20:40:05 +0600 fix mem leak in cleanup() maybe leak isn't the best word, given that the object lives for the entire duration of the program's lifetime. however, all elements of scheme are free-ed, can't think of any reason why scheme itself should be an exception. d39e2f3441fe18aba8d1a62c08918a411ec6f237 2022-01-07T11:39:18Z 2022-01-07T11:39:18Z bump version to 6.3 Hiltjo Posthuma hiltjo@codemadness.org commit d39e2f3441fe18aba8d1a62c08918a411ec6f237 parent 8657affa2a61e85ca8df76b62e43cb02897d1d80 Author: Hiltjo Posthuma <hiltjo@codemadness.org> Date: Fri, 7 Jan 2022 12:39:18 +0100 bump version to 6.3 8657affa2a61e85ca8df76b62e43cb02897d1d80 2021-12-18T16:58:23Z 2021-12-19T15:16:30Z drawbar: Don't expend effort drawing bar if it is occluded Chris Down chris@chrisdown.name commit 8657affa2a61e85ca8df76b62e43cb02897d1d80 parent a786211d6cb794fba0ea406d86002c7618998afc Author: Chris Down <chris@chrisdown.name> Date: Sat, 18 Dec 2021 16:58:23 +0000 drawbar: Don't expend effort drawing bar if it is occluded I noticed that a non-trivial amount of dwm's work on my machine was from drw_text, which seemed weird, because I have the bar disabled and we only use drw_text as part of bar drawing. Looking more closely, I realised that while we use m->showbar when updating the monitor bar margins, but don't skip actually drawing the bar if it is hidden. This patch skips drawing it entirely if that is the case. On my machine, this takes 10% of dwm's on-CPU time, primarily from restack() and focus(). When the bar is toggled on again, the X server will generate an Expose event, and we'll redraw the bar as normal as part of expose(). a786211d6cb794fba0ea406d86002c7618998afc 2021-08-20T21:09:48Z 2021-08-20T21:09:48Z Revert "Improve speed of drw_text when provided with large strings" Hiltjo Posthuma hiltjo@codemadness.org commit a786211d6cb794fba0ea406d86002c7618998afc parent 716233534b35f74dba5a46ade8f1a6f8cc72fea4 Author: Hiltjo Posthuma <hiltjo@codemadness.org> Date: Fri, 20 Aug 2021 23:09:48 +0200 Revert "Improve speed of drw_text when provided with large strings" This reverts commit 716233534b35f74dba5a46ade8f1a6f8cc72fea4. It causes issues with truncation of characters when the text does not fit and so on. The patch should be reworked and properly tested. 716233534b35f74dba5a46ade8f1a6f8cc72fea4 2021-08-09T16:24:14Z 2021-08-09T16:25:19Z Improve speed of drw_text when provided with large strings Miles Alan m@milesalan.com commit 716233534b35f74dba5a46ade8f1a6f8cc72fea4 parent 138b405f0c8aa24d8a040cc1a1cf6e3eb5a0ebc7 Author: Miles Alan <m@milesalan.com> Date: Mon, 9 Aug 2021 18:24:14 +0200 Improve speed of drw_text when provided with large strings Calculates len & ew in drw_font_getexts loop by incrementing instead of decrementing; as such avoids proportional increase in time spent in loop based on provided strings size. 138b405f0c8aa24d8a040cc1a1cf6e3eb5a0ebc7 2021-07-12T21:44:16Z 2021-07-14T09:26:37Z Add a configuration option for fullscreen locking Quentin Rameau quinq@fifth.space commit 138b405f0c8aa24d8a040cc1a1cf6e3eb5a0ebc7 parent 67d76bdc68102df976177de351f65329d8683064 Author: Quentin Rameau <quinq@fifth.space> Date: Mon, 12 Jul 2021 23:44:16 +0200 Add a configuration option for fullscreen locking Some people are annoyed to have this new behaviour forced for some application which use fake fullscreen. 67d76bdc68102df976177de351f65329d8683064 2020-07-02T19:18:30Z 2021-03-29T17:16:27Z Do not allow focus to drift from fullscreen client via focusstack() Chris Down chris@chrisdown.name commit 67d76bdc68102df976177de351f65329d8683064 parent 61bb8b2241d4db08bea4261c82e27cd9797099e7 Author: Chris Down <chris@chrisdown.name> Date: Thu, 2 Jul 2020 20:18:30 +0100 Do not allow focus to drift from fullscreen client via focusstack() It generally doesn't make much sense to allow focusstack() to navigate away from the selected fullscreen client, as you can't even see which client you're selecting behind it. I have had this up for a while on the wiki as a separate patch[0], but it seems reasonable to avoid this behaviour in dwm mainline, since I'm struggling to think of any reason to navigate away from a fullscreen client other than a mistake. 0: https://dwm.suckless.org/patches/alwaysfullscreen/ 61bb8b2241d4db08bea4261c82e27cd9797099e7 2020-03-03T22:23:53Z 2020-08-21T14:13:22Z Fix x coordinate calculation in buttonpress. Ian Remmler ian@remmler.org commit 61bb8b2241d4db08bea4261c82e27cd9797099e7 parent bb2e7222baeec7776930354d0e9f210cc2aaad5f Author: Ian Remmler <ian@remmler.org> Date: Tue, 3 Mar 2020 16:23:53 -0600 Fix x coordinate calculation in buttonpress. bb2e7222baeec7776930354d0e9f210cc2aaad5f 2020-07-08T16:05:50Z 2020-07-08T16:05:50Z dwm.1: fix wrong text in man page Hiltjo Posthuma hiltjo@codemadness.org commit bb2e7222baeec7776930354d0e9f210cc2aaad5f parent f04cac6d6e39cd9e3fc4fae526e3d1e8df5e34b2 Author: Hiltjo Posthuma <hiltjo@codemadness.org> Date: Wed, 8 Jul 2020 18:05:50 +0200 dwm.1: fix wrong text in man page f04cac6d6e39cd9e3fc4fae526e3d1e8df5e34b2 2020-06-11T13:28:32Z 2020-06-11T16:32:21Z Fix memory leaks in drw Alex Flierl shad0w73@freenet.de commit f04cac6d6e39cd9e3fc4fae526e3d1e8df5e34b2 parent f09418bbb6651ab4c299cfefbe1d18de401f630e Author: Alex Flierl <shad0w73@freenet.de> Date: Thu, 11 Jun 2020 15:28:32 +0200 Fix memory leaks in drw The function drw_fontset_free in drw.c was never called. f09418bbb6651ab4c299cfefbe1d18de401f630e 2020-04-23T07:50:54Z 2020-04-25T11:31:02Z dwm crashes when opening 50+ clients (tile layout) bakkeby bakkeby@gmail.com commit f09418bbb6651ab4c299cfefbe1d18de401f630e parent ed3ab6b4fceded0e9f2d22372df49a2bbd58de66 Author: bakkeby <bakkeby@gmail.com> Date: Thu, 23 Apr 2020 09:50:54 +0200 dwm crashes when opening 50+ clients (tile layout) Many users new to dwm find themselves caught out by being kicked out to the login manager (dwm crashing) when they open 50+ clients for demonstration purposes. The number of clients reported varies depending on the resolution of the monitor. The cause of this is due to how the default tile layout calculates the height of the next client based on the position of the previous client. Because clients have a minimum size the (ty) position can exceed that of the window height, resulting in (m->wh - ty) becoming negative. The negative height stored as an unsigned int results in a very large height ultimately resulting in dwm crashing. This patch adds safeguards to prevent the ty and my positions from exceeding that of the window height. ed3ab6b4fceded0e9f2d22372df49a2bbd58de66 2020-04-22T14:48:27Z 2020-04-22T18:33:39Z drawbar: Don't shadow sw global Chris Down chris@chrisdown.name commit ed3ab6b4fceded0e9f2d22372df49a2bbd58de66 parent f087d20e6e60a49c756936b4312f5d194d8e63b4 Author: Chris Down <chris@chrisdown.name> Date: Wed, 22 Apr 2020 15:48:27 +0100 drawbar: Don't shadow sw global This jarred me a bit while reading the code, since "sw" usually refers to the global screen geometry, but in drawbar() only it refers to text-related geometry. Renaming it makes it more obvious that these are not related. f087d20e6e60a49c756936b4312f5d194d8e63b4 2020-04-22T14:48:08Z 2020-04-22T18:33:26Z getatomprop: Add forward declaration Chris Down chris@chrisdown.name commit f087d20e6e60a49c756936b4312f5d194d8e63b4 parent a8e9513783f335b1ac7255e40a663adfffc4b475 Author: Chris Down <chris@chrisdown.name> Date: Wed, 22 Apr 2020 15:48:08 +0100 getatomprop: Add forward declaration No functional changes, but for every other function we have a forward declaration here. getatomprop should be no exception. a8e9513783f335b1ac7255e40a663adfffc4b475 2020-04-20T15:41:52Z 2020-04-20T15:56:41Z setmfact: Unify bounds for compile-time and runtime mfact Chris Down chris@chrisdown.name commit a8e9513783f335b1ac7255e40a663adfffc4b475 parent c82db690cc0c4624dad4dc6ae899020799ec84db Author: Chris Down <chris@chrisdown.name> Date: Mon, 20 Apr 2020 16:41:52 +0100 setmfact: Unify bounds for compile-time and runtime mfact There are two places that mfact can be set: - In the mfact global, which is defined at compile time and passed into m->mfact during monitor setup. No bounds checks are performed, but the comment alongside it says that valid values are [0.05..0.95]: static const float mfact = 0.55; /* factor of master area size [0.05..0.95] */ - By setmfact, which adjusts m->mfact at runtime. It also does some minimum and maximum bounds checks, allowing [0.1..0.9]. Values outside of that range are ignored, and mfact is not adjusted. These different thresholds mean that one cannot setmfact 0.95 or 0.05, despite the comment above that lists the legal range for mfact. Clarify this by enforcing the same bounds in setmfact at runtime as those listed for mfact at compile time. c82db690cc0c4624dad4dc6ae899020799ec84db 2020-04-03T13:36:32Z 2020-04-03T13:36:32Z config.mk: fix POSIX_C_SOURCE macro for feature test for snprintf() Hiltjo Posthuma hiltjo@codemadness.org commit c82db690cc0c4624dad4dc6ae899020799ec84db parent cb3f58ad06993f7ef3a7d8f61468012e2b786cab Author: Hiltjo Posthuma <hiltjo@codemadness.org> Date: Fri, 3 Apr 2020 15:36:32 +0200 config.mk: fix POSIX_C_SOURCE macro for feature test for snprintf() The feature test was incorrect: _POSIX_C_SOURCE=2 "The value 2 or greater additionally exposes definitions for POSIX.2-1992." http://man7.org/linux/man-pages/man7/feature_test_macros.7.html A higher value is needed (atleast 1995): https://pubs.opengroup.org/onlinepubs/9699919799/functions/snprintf.html FreeBSD feature test macro: on https://github.com/freebsd/freebsd/blob/master/include/stdio.h line 297 This was already fixed in dmenu. This fixes a warning on FreeBSD, reported by Plasmoduck on IRC, thanks. cb3f58ad06993f7ef3a7d8f61468012e2b786cab 2019-02-02T12:50:42Z 2019-02-02T12:50:42Z Prepare 6.2 release. Anselm R Garbe anselm@garbe.ca commit cb3f58ad06993f7ef3a7d8f61468012e2b786cab parent b69c870a3076d78ab595ed1cd4b41cf6b03b2610 Author: Anselm R Garbe <anselm@garbe.ca> Date: Sat, 2 Feb 2019 04:50:42 -0800 Prepare 6.2 release. b69c870a3076d78ab595ed1cd4b41cf6b03b2610 2018-06-02T15:15:42Z 2018-06-02T15:15:42Z pledge: add rpath promise for the ugly Xft font fallback Hiltjo Posthuma hiltjo@codemadness.org commit b69c870a3076d78ab595ed1cd4b41cf6b03b2610 parent e78b4a9207d92956cee3e5bc3f70b5acabe72e5c Author: Hiltjo Posthuma <hiltjo@codemadness.org> Date: Sat, 2 Jun 2018 17:15:42 +0200 pledge: add rpath promise for the ugly Xft font fallback e78b4a9207d92956cee3e5bc3f70b5acabe72e5c 2018-06-02T15:04:44Z 2018-06-02T15:10:28Z Makefile: just show the compiler output Hiltjo Posthuma hiltjo@codemadness.org commit e78b4a9207d92956cee3e5bc3f70b5acabe72e5c parent 3cd4023fb35d0aeb6e888bfdc1845f2f0251ad20 Author: Hiltjo Posthuma <hiltjo@codemadness.org> Date: Sat, 2 Jun 2018 17:04:44 +0200 Makefile: just show the compiler output Don't be fancy and just show the actual output so debugging is simpler. 3cd4023fb35d0aeb6e888bfdc1845f2f0251ad20 2018-06-02T13:12:42Z 2018-06-02T14:56:10Z Do not strip at link stage Klemens Nanni kn@openbsd.org commit 3cd4023fb35d0aeb6e888bfdc1845f2f0251ad20 parent f40f86fa873bc4acccdf3d929aa0f786993ae31d Author: Klemens Nanni <kn@openbsd.org> Date: Sat, 2 Jun 2018 15:12:42 +0200 Do not strip at link stage Building with debug symbols is worthless unless LDFLAGS are manually adjusted as well. f40f86fa873bc4acccdf3d929aa0f786993ae31d 2018-05-25T05:56:27Z 2018-05-25T09:49:30Z Pledge on OpenBSD Klemens Nanni kn@openbsd.org commit f40f86fa873bc4acccdf3d929aa0f786993ae31d parent c3a2e016bb65c00bd44b6461b1b1bbaa61f20093 Author: Klemens Nanni <kn@openbsd.org> Date: Fri, 25 May 2018 07:56:27 +0200 Pledge on OpenBSD c3a2e016bb65c00bd44b6461b1b1bbaa61f20093 2018-05-25T04:56:36Z 2018-05-25T04:56:36Z config.def.h: ClkTagBar missing from comment Hiltjo Posthuma hiltjo@codemadness.org commit c3a2e016bb65c00bd44b6461b1b1bbaa61f20093 parent c8e9479186dd7e3a0d6dc938369ab3bf7dc4a1d0 Author: Hiltjo Posthuma <hiltjo@codemadness.org> Date: Fri, 25 May 2018 06:56:36 +0200 config.def.h: ClkTagBar missing from comment by Christopher Drelich <cd@cdrakka.com> Patch was mangled on the ML, also adjusted the order to be the same as the enum in dwm.c c8e9479186dd7e3a0d6dc938369ab3bf7dc4a1d0 2018-05-02T22:09:50Z 2018-05-12T17:19:20Z Function declarations in correct order. Christopher Drelich cd@cdrakka.com commit c8e9479186dd7e3a0d6dc938369ab3bf7dc4a1d0 parent 10dfa65860d770cbce2cdaf67618f44f726a27c3 Author: Christopher Drelich <cd@cdrakka.com> Date: Wed, 2 May 2018 18:09:50 -0400 Function declarations in correct order. In dwm.c function declarations are in alphabetical order except for updategeom(). There doesn't appear to be any reason for this, so this patch corrects that, and now all function declarations are in alphabetical order. 10dfa65860d770cbce2cdaf67618f44f726a27c3 2018-05-12T17:14:19Z 2018-05-12T17:14:19Z remove old TODO and BUGS entries Hiltjo Posthuma hiltjo@codemadness.org commit 10dfa65860d770cbce2cdaf67618f44f726a27c3 parent 3bd8466e93b2c81be86e67c6ecdda4e1d240fe4b Author: Hiltjo Posthuma <hiltjo@codemadness.org> Date: Sat, 12 May 2018 19:14:19 +0200 remove old TODO and BUGS entries the bug in the dwm man page is an (ancient) Java issue. Thanks David and quinq for the patches and feedback! 3bd8466e93b2c81be86e67c6ecdda4e1d240fe4b 2018-03-14T20:03:11Z 2018-03-14T20:03:11Z update README: remove mentioning the old dextra repo Hiltjo Posthuma hiltjo@codemadness.org commit 3bd8466e93b2c81be86e67c6ecdda4e1d240fe4b parent 76c8c16d79d4fd2a3e776800637d211e4dc8e50a Author: Hiltjo Posthuma <hiltjo@codemadness.org> Date: Wed, 14 Mar 2018 21:03:11 +0100 update README: remove mentioning the old dextra repo Thanks Christopher Drelich <cd@cdrakka.com> 76c8c16d79d4fd2a3e776800637d211e4dc8e50a 2018-03-14T17:58:06Z 2018-03-14T20:02:06Z All functions in alphabetical order except for this one. Christopher Drelich cd@cdrakka.com commit 76c8c16d79d4fd2a3e776800637d211e4dc8e50a parent 3cb34830eb25ebda15a23d8391fd69cddb4fc024 Author: Christopher Drelich <cd@cdrakka.com> Date: Wed, 14 Mar 2018 13:58:06 -0400 All functions in alphabetical order except for this one. 3cb34830eb25ebda15a23d8391fd69cddb4fc024 2018-03-14T16:44:53Z 2018-03-14T16:46:48Z ColBorder has been moved to the enum with ColFg and ColBg. Christopher Drelich cd@cdrakka.com commit 3cb34830eb25ebda15a23d8391fd69cddb4fc024 parent db2236001c1cb042a2f24052849da96578273b1c Author: Christopher Drelich <cd@cdrakka.com> Date: Wed, 14 Mar 2018 17:44:53 +0100 ColBorder has been moved to the enum with ColFg and ColBg. db2236001c1cb042a2f24052849da96578273b1c 2017-12-27T12:36:53Z 2017-12-27T12:36:53Z dont NUL terminate _NET_WM_NAME Hiltjo Posthuma hiltjo@codemadness.org commit db2236001c1cb042a2f24052849da96578273b1c parent 3756f7f6b8dccf7a31789ffaf073a76fd1a87eb9 Author: Hiltjo Posthuma <hiltjo@codemadness.org> Date: Wed, 27 Dec 2017 13:36:53 +0100 dont NUL terminate _NET_WM_NAME Reported by Kernc, thanks! "This makes a particular program that uses libwnck [1] fail after: Wnck-WARNING **: Property _NET_WM_NAME contained invalid UTF-8 in this code [2] because the returned string contains a '\0' and the documentation for g_utf8_validate() [3] explicitly states that when string length is provided, no nul bytes are allowed." It is not entirely clear it is incorrect, other WM's seem to not NUL terminate it either though. 3756f7f6b8dccf7a31789ffaf073a76fd1a87eb9 2017-11-03T20:20:48Z 2017-11-03T20:20:48Z sync dmenu drw.{c,h} code: use Clr* (was Scm) Hiltjo Posthuma hiltjo@codemadness.org commit 3756f7f6b8dccf7a31789ffaf073a76fd1a87eb9 parent 99f78fa553f9ddb23fab73e47a408d66ca7f974c Author: Hiltjo Posthuma <hiltjo@codemadness.org> Date: Fri, 3 Nov 2017 21:20:48 +0100 sync dmenu drw.{c,h} code: use Clr* (was Scm) 99f78fa553f9ddb23fab73e47a408d66ca7f974c 2017-11-03T15:36:32Z 2017-11-03T20:14:58Z gettextprop: check result of XGetTextProperty (undefined behaviour for XFree) Hiltjo Posthuma hiltjo@codemadness.org commit 99f78fa553f9ddb23fab73e47a408d66ca7f974c parent a9b6a312a77b9cc81ca8b08a95c09e9f7948d7a6 Author: Hiltjo Posthuma <hiltjo@codemadness.org> Date: Fri, 3 Nov 2017 16:36:32 +0100 gettextprop: check result of XGetTextProperty (undefined behaviour for XFree) a9b6a312a77b9cc81ca8b08a95c09e9f7948d7a6 2017-11-03T16:58:38Z 2017-11-03T19:40:34Z Set class name on status bar Omar Sandoval osandov@osandov.com commit a9b6a312a77b9cc81ca8b08a95c09e9f7948d7a6 parent 6aa8e37efe22c8a2a7713d9a437491c564c04b7e Author: Omar Sandoval <osandov@osandov.com> Date: Fri, 3 Nov 2017 09:58:38 -0700 Set class name on status bar This is useful for configuring compositors to ignore the status bar window. 6aa8e37efe22c8a2a7713d9a437491c564c04b7e 2017-10-10T21:10:45Z 2017-10-11T07:46:28Z simplify isfixed conditions Daniel Cousens github@dcousens.com commit 6aa8e37efe22c8a2a7713d9a437491c564c04b7e parent ceac8c91ff3bf45ae53135658d6f560cb2335133 Author: Daniel Cousens <github@dcousens.com> Date: Wed, 11 Oct 2017 08:10:45 +1100 simplify isfixed conditions ceac8c91ff3bf45ae53135658d6f560cb2335133 2017-05-08T19:08:27Z 2017-05-08T19:08:27Z yet another cleanup Anselm R Garbe garbeam@gmail.com commit ceac8c91ff3bf45ae53135658d6f560cb2335133 parent 5b238c8dab945023b6a16a6c9f642b11137f2204 Author: Anselm R Garbe <garbeam@gmail.com> Date: Mon, 8 May 2017 21:08:27 +0200 yet another cleanup The previous patches introduced some unclean space-based indentation patterns. This patch fixes them. 5b238c8dab945023b6a16a6c9f642b11137f2204 2017-01-07T16:21:30Z 2017-03-28T18:23:38Z Don't restrict snap in mousemove Markus Teich markus.teich@stusta.mhn.de commit 5b238c8dab945023b6a16a6c9f642b11137f2204 parent 022d07605412bc5bd9726f74af9355c562ba4957 Author: Markus Teich <markus.teich@stusta.mhn.de> Date: Sat, 7 Jan 2017 17:21:30 +0100 Don't restrict snap in mousemove This also fixes a bug where client windows only switch to floating mode when the mouse is dragged in one specific direction. 022d07605412bc5bd9726f74af9355c562ba4957 2017-01-07T16:21:29Z 2017-03-28T18:23:34Z Button passthrough when client is not focused Markus Teich markus.teich@stusta.mhn.de commit 022d07605412bc5bd9726f74af9355c562ba4957 parent 2952b68db88f38be8d34b80c7a7d2c7eb5b2484d Author: Markus Teich <markus.teich@stusta.mhn.de> Date: Sat, 7 Jan 2017 17:21:29 +0100 Button passthrough when client is not focused Before this change it is not possible to press a button in a client on the first click if the client is not yet focused. The first click on the button would only focus the client and a second click on the button is needed to activate it. This situation can occur when moving the mouse over a client (therefore focusing it) and then moving the focus to another client with keyboard shortcuts. After this commit the behavior is fixed and button presses on unfocused clients are passed to the client correctly. 2952b68db88f38be8d34b80c7a7d2c7eb5b2484d 2017-01-07T16:21:28Z 2017-03-28T18:23:28Z cleanup Markus Teich markus.teich@stusta.mhn.de commit 2952b68db88f38be8d34b80c7a7d2c7eb5b2484d parent bb3bd6fec37174e8d4bb9457ca815c00609e5157 Author: Markus Teich <markus.teich@stusta.mhn.de> Date: Sat, 7 Jan 2017 17:21:28 +0100 cleanup - unify multi-line expression alignment style. - unify multi-line function call alignment style. - simplify client moving on monitor count decrease. - clarify comment for focusin(). - remove old confusing comment about input focus fix in focusmon(). The explanation is already in the old commit message, so no need to keep it in the code. - remove old comment describing even older state of the code in focus(). - unify comment style. - break up some long lines. - fix some typos and grammar. bb3bd6fec37174e8d4bb9457ca815c00609e5157 2016-12-05T09:16:46Z 2016-12-05T09:16:46Z applied Markus' tagset purge of alternative view on _NET_ACTIVE_WINDOW event Anselm R Garbe garbeam@gmail.com commit bb3bd6fec37174e8d4bb9457ca815c00609e5157 parent e63bf229485a576d68975dd4eb00c210394133ae Author: Anselm R Garbe <garbeam@gmail.com> Date: Mon, 5 Dec 2016 10:16:46 +0100 applied Markus' tagset purge of alternative view on _NET_ACTIVE_WINDOW event e63bf229485a576d68975dd4eb00c210394133ae 2016-12-05T09:09:49Z 2016-12-05T09:09:49Z applied Ivan Delalande's NET_SUPPORTING_WM_CHECK patch for gtk3 compatibility Anselm R Garbe garbeam@gmail.com commit e63bf229485a576d68975dd4eb00c210394133ae parent 5376947571040a4654384ea8889a54cc2313cca7 Author: Anselm R Garbe <garbeam@gmail.com> Date: Mon, 5 Dec 2016 10:09:49 +0100 applied Ivan Delalande's NET_SUPPORTING_WM_CHECK patch for gtk3 compatibility 5376947571040a4654384ea8889a54cc2313cca7 2016-12-05T09:05:00Z 2016-12-05T09:05:00Z applied Ian Remmler's man page adjustment suggestions Anselm R Garbe garbeam@gmail.com commit 5376947571040a4654384ea8889a54cc2313cca7 parent 975c8983762246b50026d43079c60a78b341f81c Author: Anselm R Garbe <garbeam@gmail.com> Date: Mon, 5 Dec 2016 10:05:00 +0100 applied Ian Remmler's man page adjustment suggestions 975c8983762246b50026d43079c60a78b341f81c 2016-12-05T09:01:33Z 2016-12-05T09:01:33Z applied Markus' decouple color-scheme patch Anselm R Garbe garbeam@gmail.com commit 975c8983762246b50026d43079c60a78b341f81c parent a137a86a234476bc3c7128fecbf845e6fc1de995 Author: Anselm R Garbe <garbeam@gmail.com> Date: Mon, 5 Dec 2016 10:01:33 +0100 applied Markus' decouple color-scheme patch a137a86a234476bc3c7128fecbf845e6fc1de995 2016-12-05T08:54:20Z 2016-12-05T08:54:20Z applied Markus' clarify status text padding patch Anselm R Garbe garbeam@gmail.com commit a137a86a234476bc3c7128fecbf845e6fc1de995 parent 839c7f6939368fe5784058975ee95062cc88d4c3 Author: Anselm R Garbe <garbeam@gmail.com> Date: Mon, 5 Dec 2016 09:54:20 +0100 applied Markus' clarify status text padding patch 839c7f6939368fe5784058975ee95062cc88d4c3 2016-11-14T10:49:17Z 2016-11-15T16:35:33Z LICENSE: update people Quentin Rameau quinq@fifth.space commit 839c7f6939368fe5784058975ee95062cc88d4c3 parent 7a59cd14573b2ead4e69a609e27992f0b7493b19 Author: Quentin Rameau <quinq@fifth.space> Date: Mon, 14 Nov 2016 11:49:17 +0100 LICENSE: update people 7a59cd14573b2ead4e69a609e27992f0b7493b19 2016-11-14T10:18:27Z 2016-11-15T16:35:30Z dwm.1: add keybinding for spawning dmenu Quentin Rameau quinq@fifth.space commit 7a59cd14573b2ead4e69a609e27992f0b7493b19 parent 24849acada79977cea6acd2d8741d2bd00891ff6 Author: Quentin Rameau <quinq@fifth.space> Date: Mon, 14 Nov 2016 11:18:27 +0100 dwm.1: add keybinding for spawning dmenu 24849acada79977cea6acd2d8741d2bd00891ff6 2016-11-05T10:34:52Z 2016-11-05T10:34:52Z die() on calloc failure Hiltjo Posthuma hiltjo@codemadness.org commit 24849acada79977cea6acd2d8741d2bd00891ff6 parent ab9571bbc5f6fb04fd583238a665a7e830fc1397 Author: Hiltjo Posthuma <hiltjo@codemadness.org> Date: Sat, 5 Nov 2016 11:34:52 +0100 die() on calloc failure thanks Markus Teich and David! ab9571bbc5f6fb04fd583238a665a7e830fc1397 2016-08-12T12:35:25Z 2016-08-12T12:36:35Z die() consistency: always add newline Hiltjo Posthuma hiltjo@codemadness.org commit ab9571bbc5f6fb04fd583238a665a7e830fc1397 parent 56a31dc4a7be459e3a1ea06d45427e1a4087a1a6 Author: Hiltjo Posthuma <hiltjo@codemadness.org> Date: Fri, 12 Aug 2016 14:35:25 +0200 die() consistency: always add newline 56a31dc4a7be459e3a1ea06d45427e1a4087a1a6 2016-06-28T16:04:56Z 2016-06-28T16:04:56Z config.def.h: style improvement, use color Scheme enum Hiltjo Posthuma hiltjo@codemadness.org commit 56a31dc4a7be459e3a1ea06d45427e1a4087a1a6 parent 7af4d439bdb5a2e40aca69446a3367bd71431c45 Author: Hiltjo Posthuma <hiltjo@codemadness.org> Date: Tue, 28 Jun 2016 18:04:56 +0200 config.def.h: style improvement, use color Scheme enum 7af4d439bdb5a2e40aca69446a3367bd71431c45 2016-05-22T20:33:56Z 2016-06-26T11:52:36Z import new drw from libsl and minor fixes. Markus Teich markus.teich@stusta.mhn.de commit 7af4d439bdb5a2e40aca69446a3367bd71431c45 parent cd2d7549b3ae5ec234b45d85608f79f4d3aaa851 Author: Markus Teich <markus.teich@stusta.mhn.de> Date: Sun, 22 May 2016 22:33:56 +0200 import new drw from libsl and minor fixes. - better scaling for occupied tag squares. - draw statusline first to omitt some complicated calculations. cd2d7549b3ae5ec234b45d85608f79f4d3aaa851 2016-05-25T23:33:11Z 2016-06-24T03:38:58Z Configure geometry before applying rules Eric Pruitt eric.pruitt@gmail.com commit cd2d7549b3ae5ec234b45d85608f79f4d3aaa851 parent 3465bed290abc62cb2e69a8096084ba6b8eb4956 Author: Eric Pruitt <eric.pruitt@gmail.com> Date: Wed, 25 May 2016 16:33:11 -0700 Configure geometry before applying rules Configuring geometry before applying rules makes it possible to have more complex constraints in applyrules that depend on the initial window dimensions and location. 3465bed290abc62cb2e69a8096084ba6b8eb4956 2015-12-19T19:25:26Z 2015-12-19T19:25:26Z fix fullscreen clients not resized on X display resolution change Hiltjo Posthuma hiltjo@codemadness.org commit 3465bed290abc62cb2e69a8096084ba6b8eb4956 parent 4ec3a673ff81275a9157d6801ea4a2b17031e5ba Author: Hiltjo Posthuma <hiltjo@codemadness.org> Date: Sat, 19 Dec 2015 20:25:26 +0100 fix fullscreen clients not resized on X display resolution change patch provided by Bert Münnich <ber.t_AT_posteo.de>, thanks! 4ec3a673ff81275a9157d6801ea4a2b17031e5ba 2015-12-19T19:04:19Z 2015-12-19T19:20:26Z Shut up glibc about _BSD_SOURCE being deprecated Quentin Rameau quinq@fifth.space commit 4ec3a673ff81275a9157d6801ea4a2b17031e5ba parent 5ed9c481968a45f5032f1011d92ab8d5237aeba1 Author: Quentin Rameau <quinq@fifth.space> Date: Sat, 19 Dec 2015 20:04:19 +0100 Shut up glibc about _BSD_SOURCE being deprecated 5ed9c481968a45f5032f1011d92ab8d5237aeba1 2015-11-08T22:11:48Z 2015-11-08T22:11:48Z code-style consistency Hiltjo Posthuma hiltjo@codemadness.org commit 5ed9c481968a45f5032f1011d92ab8d5237aeba1 parent 3c91283ede911916452345d545435b08dce9d556 Author: Hiltjo Posthuma <hiltjo@codemadness.org> Date: Sun, 8 Nov 2015 23:11:48 +0100 code-style consistency 3c91283ede911916452345d545435b08dce9d556 2015-11-08T21:48:43Z 2015-11-08T21:48:43Z unboolification Hiltjo Posthuma hiltjo@codemadness.org commit 3c91283ede911916452345d545435b08dce9d556 parent e941181f464e43765bab98509ef6524e688a46ff Author: Hiltjo Posthuma <hiltjo@codemadness.org> Date: Sun, 8 Nov 2015 22:48:43 +0100 unboolification e941181f464e43765bab98509ef6524e688a46ff 2015-11-08T19:38:00Z 2015-11-08T19:38:00Z sort include + whitespace fix Hiltjo Posthuma hiltjo@codemadness.org commit e941181f464e43765bab98509ef6524e688a46ff parent 43e82adf0dc37411fdcc6406b3cdf5d572387b9f Author: Hiltjo Posthuma <hiltjo@codemadness.org> Date: Sun, 8 Nov 2015 20:38:00 +0100 sort include + whitespace fix 43e82adf0dc37411fdcc6406b3cdf5d572387b9f 2015-11-07T13:04:49Z 2015-11-08T19:35:25Z separate program-specific c99 bool and X11 Hiltjo Posthuma hiltjo@codemadness.org commit 43e82adf0dc37411fdcc6406b3cdf5d572387b9f parent 42cf1c7d8f94e1c51a71761ab24414c2f49dac26 Author: Hiltjo Posthuma <hiltjo@codemadness.org> Date: Sat, 7 Nov 2015 14:04:49 +0100 separate program-specific c99 bool and X11 True, False are X11-specific (int), make sure to use c99 stdbool for program-specific things.