dwm, branch HEADdynamic window manager
a7c5e3e53ca98b3d5e3b36d6ad77e60e9bdd4fba2023-11-02T11:15:27Z2023-11-02T11:16:13ZVolume hotkeysparazydparazyd@dyne.orgcommit a7c5e3e53ca98b3d5e3b36d6ad77e60e9bdd4fba
parent 7987560dc7390df306774fa5ff593c23e683df6a
Author: parazyd <parazyd@dyne.org>
Date: Thu, 2 Nov 2023 12:15:27 +0100
Volume hotkeys
7987560dc7390df306774fa5ff593c23e683df6a2023-07-31T12:50:32Z2023-11-02T11:16:13Zst extern size tweakparazydparazyd@dyne.orgcommit 7987560dc7390df306774fa5ff593c23e683df6a
parent e8a3ec4547d8eccc3cad32a863d3d0df7c0a2cbc
Author: parazyd <parazyd@dyne.org>
Date: Mon, 31 Jul 2023 14:50:32 +0200
st extern size tweak
e8a3ec4547d8eccc3cad32a863d3d0df7c0a2cbc2023-05-10T09:58:22Z2023-11-02T11:16:13Zviewto{left,right}parazydparazyd@dyne.orgcommit e8a3ec4547d8eccc3cad32a863d3d0df7c0a2cbc
parent 8f6b3c299e84a2682264118ddd01b18ffb538f06
Author: parazyd <parazyd@dyne.org>
Date: Wed, 10 May 2023 11:58:22 +0200
viewto{left,right}
8f6b3c299e84a2682264118ddd01b18ffb538f062022-12-02T18:24:50Z2023-11-02T11:16:13Zsmol changesparazydparazyd@dyne.orgcommit 8f6b3c299e84a2682264118ddd01b18ffb538f06
parent a8ebe5f1b8dbbfb40840229f0c8467489f766094
Author: parazyd <parazyd@dyne.org>
Date: Fri, 2 Dec 2022 19:24:50 +0100
smol changes
a8ebe5f1b8dbbfb40840229f0c8467489f7660942022-10-08T09:06:19Z2023-11-02T11:16:13Zconst Keys.parazydparazyd@dyne.orgcommit a8ebe5f1b8dbbfb40840229f0c8467489f766094
parent c991d778f03b992ced97e091f933b2869a12aa4a
Author: parazyd <parazyd@dyne.org>
Date: Sat, 8 Oct 2022 11:06:19 +0200
const Keys.
c991d778f03b992ced97e091f933b2869a12aa4a2022-10-08T09:02:16Z2023-11-02T11:16:13ZAdd thinglaunchparazydparazyd@dyne.orgcommit c991d778f03b992ced97e091f933b2869a12aa4a
parent bc34facd9f430c2e0c862672a952ec80f5e1d6f4
Author: parazyd <parazyd@dyne.org>
Date: Sat, 8 Oct 2022 11:02:16 +0200
Add thinglaunch
bc34facd9f430c2e0c862672a952ec80f5e1d6f42022-07-15T20:03:22Z2023-11-02T11:16:13Zmath hotkeysparazydparazyd@dyne.orgcommit bc34facd9f430c2e0c862672a952ec80f5e1d6f4
parent 96e2c42482108ecbec17683c399af8efc65c2f8b
Author: parazyd <parazyd@dyne.org>
Date: Fri, 15 Jul 2022 22:03:22 +0200
math hotkeys
96e2c42482108ecbec17683c399af8efc65c2f8b2022-04-26T18:00:09Z2023-11-02T11:16:13ZConfig, add dunstclosecmdparazydparazyd@dyne.orgcommit 96e2c42482108ecbec17683c399af8efc65c2f8b
parent 5d724733483b327aa3173a59022b751b38085909
Author: parazyd <parazyd@dyne.org>
Date: Tue, 26 Apr 2022 20:00:09 +0200
Config, add dunstclosecmd
5d724733483b327aa3173a59022b751b380859092022-04-24T09:56:57Z2023-11-02T11:16:13Zfocusurgentparazydparazyd@dyne.orgcommit 5d724733483b327aa3173a59022b751b38085909
parent ab128d39306091645ffa318cd8baab08d1128bd8
Author: parazyd <parazyd@dyne.org>
Date: Sun, 24 Apr 2022 11:56:57 +0200
focusurgent
ab128d39306091645ffa318cd8baab08d1128bd82022-04-24T09:50:18Z2023-11-02T11:16:13Zsmartbordersparazydparazyd@dyne.orgcommit ab128d39306091645ffa318cd8baab08d1128bd8
parent 5581ad51344486680d377831ab21dd1d0190b2d5
Author: parazyd <parazyd@dyne.org>
Date: Sun, 24 Apr 2022 11:50:18 +0200
smartborders
5581ad51344486680d377831ab21dd1d0190b2d52022-04-24T09:16:15Z2023-11-02T11:16:13Zattachaboveparazydparazyd@dyne.orgcommit 5581ad51344486680d377831ab21dd1d0190b2d5
parent 64ec191cb2bf0410d2ad23665dac3712fe26f70b
Author: parazyd <parazyd@dyne.org>
Date: Sun, 24 Apr 2022 11:16:15 +0200
attachabove
64ec191cb2bf0410d2ad23665dac3712fe26f70b2022-04-24T08:47:07Z2023-11-02T11:16:13Zmovestackparazydparazyd@dyne.orgcommit 64ec191cb2bf0410d2ad23665dac3712fe26f70b
parent d828c0def978069ab512aee073135fd3f79f02cf
Author: parazyd <parazyd@dyne.org>
Date: Sun, 24 Apr 2022 10:47:07 +0200
movestack
d828c0def978069ab512aee073135fd3f79f02cf2022-04-24T07:59:24Z2023-11-02T11:16:13ZHotkeysparazydparazyd@dyne.orgcommit d828c0def978069ab512aee073135fd3f79f02cf
parent 981ba3e87611cd5d2bd1673b20fcd0bcf2ee9553
Author: parazyd <parazyd@dyne.org>
Date: Sun, 24 Apr 2022 09:59:24 +0200
Hotkeys
981ba3e87611cd5d2bd1673b20fcd0bcf2ee95532022-04-23T22:19:07Z2023-11-02T11:16:13Zcolumnsparazydparazyd@dyne.orgcommit 981ba3e87611cd5d2bd1673b20fcd0bcf2ee9553
parent e250e8dce3c926caaacf1555ef4763aee3eb8109
Author: parazyd <parazyd@dyne.org>
Date: Sun, 24 Apr 2022 00:19:07 +0200
columns
e250e8dce3c926caaacf1555ef4763aee3eb81092022-04-23T22:08:19Z2023-11-02T11:16:13Zsystrayparazydparazyd@dyne.orgcommit e250e8dce3c926caaacf1555ef4763aee3eb8109
parent cb0f4a25dbf8d19cca950e67fb5da0b6c2a5b408
Author: parazyd <parazyd@dyne.org>
Date: Sun, 24 Apr 2022 00:08:19 +0200
systray
cb0f4a25dbf8d19cca950e67fb5da0b6c2a5b4082022-04-23T22:04:30Z2023-11-02T11:16:13Zscratchpadparazydparazyd@dyne.orgcommit cb0f4a25dbf8d19cca950e67fb5da0b6c2a5b408
parent 05f6ab9ff69a4e8297a7d05f7fe463cd84c9ecbd
Author: parazyd <parazyd@dyne.org>
Date: Sun, 24 Apr 2022 00:04:30 +0200
scratchpad
05f6ab9ff69a4e8297a7d05f7fe463cd84c9ecbd2022-04-23T22:01:35Z2023-11-02T11:16:13Zpertagparazydparazyd@dyne.orgcommit 05f6ab9ff69a4e8297a7d05f7fe463cd84c9ecbd
parent b43bd229c3efda95d18e7025c355beaa357caf5c
Author: parazyd <parazyd@dyne.org>
Date: Sun, 24 Apr 2022 00:01:35 +0200
pertag
b43bd229c3efda95d18e7025c355beaa357caf5c2022-04-23T21:51:06Z2023-11-02T11:16:13ZWindow mapping.parazydparazyd@dyne.orgcommit b43bd229c3efda95d18e7025c355beaa357caf5c
parent 5f54f09a5723d628a88d42a6a7b290982cdf1dec
Author: parazyd <parazyd@dyne.org>
Date: Sat, 23 Apr 2022 23:51:06 +0200
Window mapping.
5f54f09a5723d628a88d42a6a7b290982cdf1dec2022-04-23T21:50:55Z2023-11-02T11:16:13ZAdd config file.parazydparazyd@dyne.orgcommit 5f54f09a5723d628a88d42a6a7b290982cdf1dec
parent 9f8855343c881bdc01b9fff5b956537ba1106b76
Author: parazyd <parazyd@dyne.org>
Date: Sat, 23 Apr 2022 23:50:55 +0200
Add config file.
9f8855343c881bdc01b9fff5b956537ba1106b762023-09-22T13:13:29Z2023-09-22T13:13:29ZMakefile: remove the options targetHiltjo Posthumahiltjo@codemadness.orgcommit 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.
e81f17d4c196aaed6893fd4beed49991caa3e2a42023-04-09T10:37:14Z2023-04-09T10:37:14Zrestore SIGCHLD sighandler to default before spawning a programHiltjo Posthumahiltjo@codemadness.orgcommit 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.
348f6559ab0d4793db196ffa56ba96ab95a594a62023-02-17T05:05:09Z2023-02-17T14:27:34Zconfig.mk: update to _XOPEN_SOURCE=700LNRKnrk@disroot.orgcommit 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>
712d6639ff8e863560328131bbb92b248dc9cde72023-01-28T11:53:48Z2023-01-28T12:34:43ZUse sigaction(SA_NOCLDWAIT) for SIGCHLD handlingChris Downchris@chrisdown.namecommit 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
89f9905714c1c1b2e8b09986dfbeca15b68d8af82022-12-07T14:55:08Z2022-12-07T22:06:26Zgrabkeys: Avoid missing events when a keysym maps to multiple keycodesChris Downchris@chrisdown.namecommit 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
ba56fe9fea0a28d8184a727a987836a0903e26822022-10-28T14:37:56Z2022-10-28T14:37:56ZRevert "Remove dmenumon variable"Hiltjo Posthumahiltjo@codemadness.orgcommit 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.
50ad171eea9db5ccb36fce2592e047c3282975ff2022-10-04T17:35:13Z2022-10-04T17:35:13Zbump version to 6.4Hiltjo Posthumahiltjo@codemadness.orgcommit 50ad171eea9db5ccb36fce2592e047c3282975ff
parent 970f37697358574e127019eb0ee2f5725ec05ce0
Author: Hiltjo Posthuma <hiltjo@codemadness.org>
Date: Tue, 4 Oct 2022 19:35:13 +0200
bump version to 6.4
970f37697358574e127019eb0ee2f5725ec05ce02022-09-16T21:06:47Z2022-09-17T13:32:41Zremove workaround for a crash with color emojis on some systems, now fixed in libXft 2.3.5Hiltjo Posthumahiltjo@codemadness.orgcommit 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
c2b748e7931e5f28984efc236f9b1a212dbc65e82022-08-26T12:48:46Z2022-08-28T09:39:43ZRemove dmenumon variableSteinbakkeby@gmail.comcommit 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).
84d7322113c2bf023f5eaa8537fb0e72d41050462022-08-18T16:13:08Z2022-08-19T09:47:22Zconfig.def.h: make keys and buttons constNRKnrk@disroot.orgcommit 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.
5799dd1fca6576b662d299e210cd5933b29d502d2022-08-15T12:31:22Z2022-08-17T11:33:57ZRemove blw variable in favour of calculating the value when neededSteinbakkeby@gmail.comcommit 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.
44adafe0069e73aa03a3829d7bb39591cd8b3f1d2022-08-11T09:15:55Z2022-08-12T07:02:34ZMake floating windows spawn within the monitor's window areaSteinbakkeby@gmail.comcommit 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.
a859676ead17017bbe81b4989b2f2e0b00a0b4ba2022-08-09T08:38:08Z2022-08-10T13:31:21ZSimplify client y-offset correctionSteinbakkeby@gmail.comcommit 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.
e0dee911455cee739a5b05a994828f4a37a2764d2022-08-08T08:43:09Z2022-08-08T08:43:09Zsync code-style patch from libslHiltjo Posthumahiltjo@codemadness.orgcommit e0dee911455cee739a5b05a994828f4a37a2764d
parent 5e76e7e21da042c493c59235ca82d7275f20a7e4
Author: Hiltjo Posthuma <hiltjo@codemadness.org>
Date: Mon, 8 Aug 2022 10:43:09 +0200
sync code-style patch from libsl
5e76e7e21da042c493c59235ca82d7275f20a7e42022-08-05T22:27:13Z2022-08-06T14:09:01Zcode-style: simplify some checksNRKnrk@disroot.orgcommit 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.
5b2e5e7a4001479e4dc3e245f96e49f7ea0da6582022-07-29T23:26:04Z2022-08-02T16:08:51Zspawn: reduce 2 lines, change fprintf() + perror() + exit() to die("... :")explosion-mentalexplosion0mental@gmail.comcommit 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
786f6e2a6f8466ad94706781bc93bc6eb6e695122022-08-01T09:42:44Z2022-08-02T16:04:56Zunmanage: stop listening for events for unmanaged windowsSteinbakkeby@gmail.comcommit 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.
e03248a4d5feaaacb130416be6e467a04de81f782022-07-22T07:18:52Z2022-07-22T07:18:52ZRevert "do not call signal-unsafe function inside sighanlder"Hiltjo Posthumahiltjo@codemadness.orgcommit 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
6613d9f9a1a5630bab30bc2b70bdc793977073ee2022-07-14T01:26:40Z2022-07-15T18:53:58Zdo not call signal-unsafe function inside sighanlderNRKnrk@disroot.orgcommit 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`.
9bffa845faa181fb3afe05f3dc86ad79c80736be2022-07-14T01:27:34Z2022-07-15T18:53:56Zuse named parameter for func prototypeNRKnrk@disroot.orgcommit 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.
d3f93c7c1a13a2a78f04fb41ad1935525df948db2022-05-10T17:07:56Z2022-05-10T17:07:56Zsync latest drw.{c,h} changes from dmenuHiltjo Posthumahiltjo@codemadness.orgcommit 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
cd0773cee9bad694dc9a6b1355a32bbe61abadff2022-05-01T16:37:54Z2022-05-01T16:37:54ZMakefile: add manual path for OpenBSDHiltjo Posthumahiltjo@codemadness.orgcommit 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
8b48e309735f5fe49d35f86e967f4b5dea2a2f2d2022-04-26T08:42:23Z2022-04-26T13:50:55Zmanage: Make sure c->isfixed is applied before floating checksChris Downchris@chrisdown.namecommit 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.
a83dc2031050d786ddf5f329b57d658a931c94b72022-04-26T13:50:32Z2022-04-26T13:50:32ZLICENSE: add Chris DownHiltjo Posthumahiltjo@codemadness.orgcommit a83dc2031050d786ddf5f329b57d658a931c94b7
parent a4771de5ba54a38b062a7d748635f21c141b5c7e
Author: Hiltjo Posthuma <hiltjo@codemadness.org>
Date: Tue, 26 Apr 2022 15:50:32 +0200
LICENSE: add Chris Down
a4771de5ba54a38b062a7d748635f21c141b5c7e2022-04-26T08:30:59Z2022-04-26T08:30:59ZRevert "manage: For isfloating/oldstate check/set, ensure trans client actually exists"Hiltjo Posthumahiltjo@codemadness.orgcommit 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
d93ff48803f04f1363bf303af1d7e6ccc5cb8d3f2022-02-21T14:58:28Z2022-04-16T14:59:03ZUpdate monitor positions also on removalSanttu Lakkalainz@inz.ficommit 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.
8806b6e2379372900e3d9e0bf6604bc7f727350b2022-03-17T15:56:13Z2022-04-16T14:37:46Zmanage: propertynotify: Reduce cost of unused size hintsChris Downchris@chrisdown.namecommit 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.
bece862a0fc4fc18ef9065b18cd28e2032d0d9752022-02-21T06:10:56Z2022-03-13T16:32:56Zmanage: For isfloating/oldstate check/set, ensure trans client actually existsMiles Alanm@milesalan.comcommit 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.
60e9a14998bfe8666c641f7c27fec18e85ac74942022-03-11T14:40:05Z2022-03-13T09:49:43Zfix mem leak in cleanup()NRKnrk@disroot.orgcommit 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.
d39e2f3441fe18aba8d1a62c08918a411ec6f2372022-01-07T11:39:18Z2022-01-07T11:39:18Zbump version to 6.3Hiltjo Posthumahiltjo@codemadness.orgcommit d39e2f3441fe18aba8d1a62c08918a411ec6f237
parent 8657affa2a61e85ca8df76b62e43cb02897d1d80
Author: Hiltjo Posthuma <hiltjo@codemadness.org>
Date: Fri, 7 Jan 2022 12:39:18 +0100
bump version to 6.3
8657affa2a61e85ca8df76b62e43cb02897d1d802021-12-18T16:58:23Z2021-12-19T15:16:30Zdrawbar: Don't expend effort drawing bar if it is occludedChris Downchris@chrisdown.namecommit 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().
a786211d6cb794fba0ea406d86002c7618998afc2021-08-20T21:09:48Z2021-08-20T21:09:48ZRevert "Improve speed of drw_text when provided with large strings"Hiltjo Posthumahiltjo@codemadness.orgcommit 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.
716233534b35f74dba5a46ade8f1a6f8cc72fea42021-08-09T16:24:14Z2021-08-09T16:25:19ZImprove speed of drw_text when provided with large stringsMiles Alanm@milesalan.comcommit 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.
138b405f0c8aa24d8a040cc1a1cf6e3eb5a0ebc72021-07-12T21:44:16Z2021-07-14T09:26:37ZAdd a configuration option for fullscreen lockingQuentin Rameauquinq@fifth.spacecommit 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.
67d76bdc68102df976177de351f65329d86830642020-07-02T19:18:30Z2021-03-29T17:16:27ZDo not allow focus to drift from fullscreen client via focusstack()Chris Downchris@chrisdown.namecommit 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/
61bb8b2241d4db08bea4261c82e27cd9797099e72020-03-03T22:23:53Z2020-08-21T14:13:22ZFix x coordinate calculation in buttonpress.Ian Remmlerian@remmler.orgcommit 61bb8b2241d4db08bea4261c82e27cd9797099e7
parent bb2e7222baeec7776930354d0e9f210cc2aaad5f
Author: Ian Remmler <ian@remmler.org>
Date: Tue, 3 Mar 2020 16:23:53 -0600
Fix x coordinate calculation in buttonpress.
bb2e7222baeec7776930354d0e9f210cc2aaad5f2020-07-08T16:05:50Z2020-07-08T16:05:50Zdwm.1: fix wrong text in man pageHiltjo Posthumahiltjo@codemadness.orgcommit 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
f04cac6d6e39cd9e3fc4fae526e3d1e8df5e34b22020-06-11T13:28:32Z2020-06-11T16:32:21ZFix memory leaks in drwAlex Flierlshad0w73@freenet.decommit 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.
f09418bbb6651ab4c299cfefbe1d18de401f630e2020-04-23T07:50:54Z2020-04-25T11:31:02Zdwm crashes when opening 50+ clients (tile layout)bakkebybakkeby@gmail.comcommit 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.
ed3ab6b4fceded0e9f2d22372df49a2bbd58de662020-04-22T14:48:27Z2020-04-22T18:33:39Zdrawbar: Don't shadow sw globalChris Downchris@chrisdown.namecommit 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.
f087d20e6e60a49c756936b4312f5d194d8e63b42020-04-22T14:48:08Z2020-04-22T18:33:26Zgetatomprop: Add forward declarationChris Downchris@chrisdown.namecommit 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.
a8e9513783f335b1ac7255e40a663adfffc4b4752020-04-20T15:41:52Z2020-04-20T15:56:41Zsetmfact: Unify bounds for compile-time and runtime mfactChris Downchris@chrisdown.namecommit 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.
c82db690cc0c4624dad4dc6ae899020799ec84db2020-04-03T13:36:32Z2020-04-03T13:36:32Zconfig.mk: fix POSIX_C_SOURCE macro for feature test for snprintf()Hiltjo Posthumahiltjo@codemadness.orgcommit 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.
cb3f58ad06993f7ef3a7d8f61468012e2b786cab2019-02-02T12:50:42Z2019-02-02T12:50:42ZPrepare 6.2 release.Anselm R Garbeanselm@garbe.cacommit cb3f58ad06993f7ef3a7d8f61468012e2b786cab
parent b69c870a3076d78ab595ed1cd4b41cf6b03b2610
Author: Anselm R Garbe <anselm@garbe.ca>
Date: Sat, 2 Feb 2019 04:50:42 -0800
Prepare 6.2 release.
b69c870a3076d78ab595ed1cd4b41cf6b03b26102018-06-02T15:15:42Z2018-06-02T15:15:42Zpledge: add rpath promise for the ugly Xft font fallbackHiltjo Posthumahiltjo@codemadness.orgcommit 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
e78b4a9207d92956cee3e5bc3f70b5acabe72e5c2018-06-02T15:04:44Z2018-06-02T15:10:28ZMakefile: just show the compiler outputHiltjo Posthumahiltjo@codemadness.orgcommit 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.
3cd4023fb35d0aeb6e888bfdc1845f2f0251ad202018-06-02T13:12:42Z2018-06-02T14:56:10ZDo not strip at link stageKlemens Nannikn@openbsd.orgcommit 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.
f40f86fa873bc4acccdf3d929aa0f786993ae31d2018-05-25T05:56:27Z2018-05-25T09:49:30ZPledge on OpenBSDKlemens Nannikn@openbsd.orgcommit f40f86fa873bc4acccdf3d929aa0f786993ae31d
parent c3a2e016bb65c00bd44b6461b1b1bbaa61f20093
Author: Klemens Nanni <kn@openbsd.org>
Date: Fri, 25 May 2018 07:56:27 +0200
Pledge on OpenBSD
c3a2e016bb65c00bd44b6461b1b1bbaa61f200932018-05-25T04:56:36Z2018-05-25T04:56:36Zconfig.def.h: ClkTagBar missing from commentHiltjo Posthumahiltjo@codemadness.orgcommit 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
c8e9479186dd7e3a0d6dc938369ab3bf7dc4a1d02018-05-02T22:09:50Z2018-05-12T17:19:20ZFunction declarations in correct order.Christopher Drelichcd@cdrakka.comcommit 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.
10dfa65860d770cbce2cdaf67618f44f726a27c32018-05-12T17:14:19Z2018-05-12T17:14:19Zremove old TODO and BUGS entriesHiltjo Posthumahiltjo@codemadness.orgcommit 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!
3bd8466e93b2c81be86e67c6ecdda4e1d240fe4b2018-03-14T20:03:11Z2018-03-14T20:03:11Zupdate README: remove mentioning the old dextra repoHiltjo Posthumahiltjo@codemadness.orgcommit 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>
76c8c16d79d4fd2a3e776800637d211e4dc8e50a2018-03-14T17:58:06Z2018-03-14T20:02:06ZAll functions in alphabetical order except for this one.Christopher Drelichcd@cdrakka.comcommit 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.
3cb34830eb25ebda15a23d8391fd69cddb4fc0242018-03-14T16:44:53Z2018-03-14T16:46:48ZColBorder has been moved to the enum with ColFg and ColBg.Christopher Drelichcd@cdrakka.comcommit 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.
db2236001c1cb042a2f24052849da96578273b1c2017-12-27T12:36:53Z2017-12-27T12:36:53Zdont NUL terminate _NET_WM_NAMEHiltjo Posthumahiltjo@codemadness.orgcommit 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.
3756f7f6b8dccf7a31789ffaf073a76fd1a87eb92017-11-03T20:20:48Z2017-11-03T20:20:48Zsync dmenu drw.{c,h} code: use Clr* (was Scm)Hiltjo Posthumahiltjo@codemadness.orgcommit 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)
99f78fa553f9ddb23fab73e47a408d66ca7f974c2017-11-03T15:36:32Z2017-11-03T20:14:58Zgettextprop: check result of XGetTextProperty (undefined behaviour for XFree)Hiltjo Posthumahiltjo@codemadness.orgcommit 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)
a9b6a312a77b9cc81ca8b08a95c09e9f7948d7a62017-11-03T16:58:38Z2017-11-03T19:40:34ZSet class name on status barOmar Sandovalosandov@osandov.comcommit 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.
6aa8e37efe22c8a2a7713d9a437491c564c04b7e2017-10-10T21:10:45Z2017-10-11T07:46:28Zsimplify isfixed conditionsDaniel Cousensgithub@dcousens.comcommit 6aa8e37efe22c8a2a7713d9a437491c564c04b7e
parent ceac8c91ff3bf45ae53135658d6f560cb2335133
Author: Daniel Cousens <github@dcousens.com>
Date: Wed, 11 Oct 2017 08:10:45 +1100
simplify isfixed conditions
ceac8c91ff3bf45ae53135658d6f560cb23351332017-05-08T19:08:27Z2017-05-08T19:08:27Zyet another cleanupAnselm R Garbegarbeam@gmail.comcommit 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.
5b238c8dab945023b6a16a6c9f642b11137f22042017-01-07T16:21:30Z2017-03-28T18:23:38ZDon't restrict snap in mousemoveMarkus Teichmarkus.teich@stusta.mhn.decommit 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.
022d07605412bc5bd9726f74af9355c562ba49572017-01-07T16:21:29Z2017-03-28T18:23:34ZButton passthrough when client is not focusedMarkus Teichmarkus.teich@stusta.mhn.decommit 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.
2952b68db88f38be8d34b80c7a7d2c7eb5b2484d2017-01-07T16:21:28Z2017-03-28T18:23:28ZcleanupMarkus Teichmarkus.teich@stusta.mhn.decommit 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.
bb3bd6fec37174e8d4bb9457ca815c00609e51572016-12-05T09:16:46Z2016-12-05T09:16:46Zapplied Markus' tagset purge of alternative view on _NET_ACTIVE_WINDOW eventAnselm R Garbegarbeam@gmail.comcommit 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
e63bf229485a576d68975dd4eb00c210394133ae2016-12-05T09:09:49Z2016-12-05T09:09:49Zapplied Ivan Delalande's NET_SUPPORTING_WM_CHECK patch for gtk3 compatibilityAnselm R Garbegarbeam@gmail.comcommit 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
5376947571040a4654384ea8889a54cc2313cca72016-12-05T09:05:00Z2016-12-05T09:05:00Zapplied Ian Remmler's man page adjustment suggestionsAnselm R Garbegarbeam@gmail.comcommit 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
975c8983762246b50026d43079c60a78b341f81c2016-12-05T09:01:33Z2016-12-05T09:01:33Zapplied Markus' decouple color-scheme patchAnselm R Garbegarbeam@gmail.comcommit 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
a137a86a234476bc3c7128fecbf845e6fc1de9952016-12-05T08:54:20Z2016-12-05T08:54:20Zapplied Markus' clarify status text padding patchAnselm R Garbegarbeam@gmail.comcommit 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
839c7f6939368fe5784058975ee95062cc88d4c32016-11-14T10:49:17Z2016-11-15T16:35:33ZLICENSE: update peopleQuentin Rameauquinq@fifth.spacecommit 839c7f6939368fe5784058975ee95062cc88d4c3
parent 7a59cd14573b2ead4e69a609e27992f0b7493b19
Author: Quentin Rameau <quinq@fifth.space>
Date: Mon, 14 Nov 2016 11:49:17 +0100
LICENSE: update people
7a59cd14573b2ead4e69a609e27992f0b7493b192016-11-14T10:18:27Z2016-11-15T16:35:30Zdwm.1: add keybinding for spawning dmenuQuentin Rameauquinq@fifth.spacecommit 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
24849acada79977cea6acd2d8741d2bd00891ff62016-11-05T10:34:52Z2016-11-05T10:34:52Zdie() on calloc failureHiltjo Posthumahiltjo@codemadness.orgcommit 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!
ab9571bbc5f6fb04fd583238a665a7e830fc13972016-08-12T12:35:25Z2016-08-12T12:36:35Zdie() consistency: always add newlineHiltjo Posthumahiltjo@codemadness.orgcommit ab9571bbc5f6fb04fd583238a665a7e830fc1397
parent 56a31dc4a7be459e3a1ea06d45427e1a4087a1a6
Author: Hiltjo Posthuma <hiltjo@codemadness.org>
Date: Fri, 12 Aug 2016 14:35:25 +0200
die() consistency: always add newline
56a31dc4a7be459e3a1ea06d45427e1a4087a1a62016-06-28T16:04:56Z2016-06-28T16:04:56Zconfig.def.h: style improvement, use color Scheme enumHiltjo Posthumahiltjo@codemadness.orgcommit 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
7af4d439bdb5a2e40aca69446a3367bd71431c452016-05-22T20:33:56Z2016-06-26T11:52:36Zimport new drw from libsl and minor fixes.Markus Teichmarkus.teich@stusta.mhn.decommit 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.
cd2d7549b3ae5ec234b45d85608f79f4d3aaa8512016-05-25T23:33:11Z2016-06-24T03:38:58ZConfigure geometry before applying rulesEric Pruitteric.pruitt@gmail.comcommit 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.
3465bed290abc62cb2e69a8096084ba6b8eb49562015-12-19T19:25:26Z2015-12-19T19:25:26Zfix fullscreen clients not resized on X display resolution changeHiltjo Posthumahiltjo@codemadness.orgcommit 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!
4ec3a673ff81275a9157d6801ea4a2b17031e5ba2015-12-19T19:04:19Z2015-12-19T19:20:26ZShut up glibc about _BSD_SOURCE being deprecatedQuentin Rameauquinq@fifth.spacecommit 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
5ed9c481968a45f5032f1011d92ab8d5237aeba12015-11-08T22:11:48Z2015-11-08T22:11:48Zcode-style consistencyHiltjo Posthumahiltjo@codemadness.orgcommit 5ed9c481968a45f5032f1011d92ab8d5237aeba1
parent 3c91283ede911916452345d545435b08dce9d556
Author: Hiltjo Posthuma <hiltjo@codemadness.org>
Date: Sun, 8 Nov 2015 23:11:48 +0100
code-style consistency
3c91283ede911916452345d545435b08dce9d5562015-11-08T21:48:43Z2015-11-08T21:48:43ZunboolificationHiltjo Posthumahiltjo@codemadness.orgcommit 3c91283ede911916452345d545435b08dce9d556
parent e941181f464e43765bab98509ef6524e688a46ff
Author: Hiltjo Posthuma <hiltjo@codemadness.org>
Date: Sun, 8 Nov 2015 22:48:43 +0100
unboolification
e941181f464e43765bab98509ef6524e688a46ff2015-11-08T19:38:00Z2015-11-08T19:38:00Zsort include + whitespace fixHiltjo Posthumahiltjo@codemadness.orgcommit e941181f464e43765bab98509ef6524e688a46ff
parent 43e82adf0dc37411fdcc6406b3cdf5d572387b9f
Author: Hiltjo Posthuma <hiltjo@codemadness.org>
Date: Sun, 8 Nov 2015 20:38:00 +0100
sort include + whitespace fix
43e82adf0dc37411fdcc6406b3cdf5d572387b9f2015-11-07T13:04:49Z2015-11-08T19:35:25Zseparate program-specific c99 bool and X11Hiltjo Posthumahiltjo@codemadness.orgcommit 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.