suckless/dwm.git
2 years agobump version to 6.4
Hiltjo Posthuma [Tue, 4 Oct 2022 17:35:13 +0000 (19:35 +0200)]
bump version to 6.4

2 years agoremove workaround for a crash with color emojis on some systems, now fixed in libXft...
Hiltjo Posthuma [Fri, 16 Sep 2022 21:06:47 +0000 (23:06 +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

2 years agoRemove dmenumon variable
Stein [Fri, 26 Aug 2022 12:48:46 +0000 (14:48 +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).

2 years agoconfig.def.h: make keys and buttons const
NRK [Thu, 18 Aug 2022 16:13:08 +0000 (22:13 +0600)]
config.def.h: make keys and buttons const

pretty much all other variables are declared as const when they're not
modified.

2 years agoRemove blw variable in favour of calculating the value when needed
Stein [Mon, 15 Aug 2022 12:31:22 +0000 (14:31 +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.

2 years agoMake floating windows spawn within the monitor's window area
Stein [Thu, 11 Aug 2022 09:15:55 +0000 (11:15 +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.

2 years agoSimplify client y-offset correction
Stein [Tue, 9 Aug 2022 08:38:08 +0000 (10:38 +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.

2 years agosync code-style patch from libsl
Hiltjo Posthuma [Mon, 8 Aug 2022 08:43:09 +0000 (10:43 +0200)]
sync code-style patch from libsl

2 years agocode-style: simplify some checks
NRK [Fri, 5 Aug 2022 22:27:13 +0000 (04:27 +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.

2 years agospawn: reduce 2 lines, change fprintf() + perror() + exit() to die("... :")
explosion-mental [Fri, 29 Jul 2022 23:26:04 +0000 (18:26 -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

2 years agounmanage: stop listening for events for unmanaged windows
Stein [Mon, 1 Aug 2022 09:42:44 +0000 (11:42 +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.

2 years agoRevert "do not call signal-unsafe function inside sighanlder"
Hiltjo Posthuma [Fri, 22 Jul 2022 07:18:52 +0000 (09:18 +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

2 years agodo not call signal-unsafe function inside sighanlder
NRK [Thu, 14 Jul 2022 01:26:40 +0000 (07:26 +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`.

2 years agouse named parameter for func prototype
NRK [Thu, 14 Jul 2022 01:27:34 +0000 (07:27 +0600)]
use named parameter for func prototype

all the other prototypes use names.

2 years agosync latest drw.{c,h} changes from dmenu
Hiltjo Posthuma [Tue, 10 May 2022 17:07:56 +0000 (19:07 +0200)]
sync latest drw.{c,h} changes from dmenu

2 years agoMakefile: add manual path for OpenBSD
Hiltjo Posthuma [Sun, 1 May 2022 16:37:54 +0000 (18:37 +0200)]
Makefile: add manual path for OpenBSD

Reported by fossy <fossy@dnmx.org>, thanks

2 years agomanage: Make sure c->isfixed is applied before floating checks
Chris Down [Tue, 26 Apr 2022 08:42:23 +0000 (09:42 +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.

2 years agoLICENSE: add Chris Down
Hiltjo Posthuma [Tue, 26 Apr 2022 13:50:32 +0000 (15:50 +0200)]
LICENSE: add Chris Down

2 years agoRevert "manage: For isfloating/oldstate check/set, ensure trans client actually exists"
Hiltjo Posthuma [Tue, 26 Apr 2022 08:30:59 +0000 (10:30 +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

2 years agoUpdate monitor positions also on removal
Santtu Lakkala [Mon, 21 Feb 2022 14:58:28 +0000 (16:58 +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.

2 years agomanage: propertynotify: Reduce cost of unused size hints
Chris Down [Thu, 17 Mar 2022 15:56:13 +0000 (15:56 +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.

2 years agomanage: For isfloating/oldstate check/set, ensure trans client actually exists
Miles Alan [Mon, 21 Feb 2022 06:10:56 +0000 (01:10 -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.

2 years agofix mem leak in cleanup()
NRK [Fri, 11 Mar 2022 14:40:05 +0000 (20:40 +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.

2 years agobump version to 6.3
Hiltjo Posthuma [Fri, 7 Jan 2022 11:39:18 +0000 (12:39 +0100)]
bump version to 6.3

2 years agodrawbar: Don't expend effort drawing bar if it is occluded
Chris Down [Sat, 18 Dec 2021 16:58:23 +0000 (16:58 +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().

3 years agoRevert "Improve speed of drw_text when provided with large strings"
Hiltjo Posthuma [Fri, 20 Aug 2021 21:09:48 +0000 (23:09 +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.

3 years agoImprove speed of drw_text when provided with large strings
Miles Alan [Mon, 9 Aug 2021 16:24:14 +0000 (18:24 +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.

3 years agoAdd a configuration option for fullscreen locking
Quentin Rameau [Mon, 12 Jul 2021 21:44:16 +0000 (23:44 +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.

3 years agoDo not allow focus to drift from fullscreen client via focusstack()
Chris Down [Thu, 2 Jul 2020 19:18:30 +0000 (20:18 +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/

4 years agoFix x coordinate calculation in buttonpress.
Ian Remmler [Tue, 3 Mar 2020 22:23:53 +0000 (16:23 -0600)]
Fix x coordinate calculation in buttonpress.

4 years agodwm.1: fix wrong text in man page
Hiltjo Posthuma [Wed, 8 Jul 2020 16:05:50 +0000 (18:05 +0200)]
dwm.1: fix wrong text in man page

4 years agoFix memory leaks in drw
Alex Flierl [Thu, 11 Jun 2020 13:28:32 +0000 (15:28 +0200)]
Fix memory leaks in drw

The function drw_fontset_free in drw.c was never called.

4 years agodwm crashes when opening 50+ clients (tile layout)
bakkeby [Thu, 23 Apr 2020 07:50:54 +0000 (09:50 +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.

4 years agodrawbar: Don't shadow sw global
Chris Down [Wed, 22 Apr 2020 14:48:27 +0000 (15:48 +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.

4 years agogetatomprop: Add forward declaration
Chris Down [Wed, 22 Apr 2020 14:48:08 +0000 (15:48 +0100)]
getatomprop: Add forward declaration

No functional changes, but for every other function we have a forward
declaration here. getatomprop should be no exception.

4 years agosetmfact: Unify bounds for compile-time and runtime mfact
Chris Down [Mon, 20 Apr 2020 15:41:52 +0000 (16:41 +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.

4 years agoconfig.mk: fix POSIX_C_SOURCE macro for feature test for snprintf()
Hiltjo Posthuma [Fri, 3 Apr 2020 13:36:32 +0000 (15:36 +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.

5 years agoPrepare 6.2 release.
Anselm R Garbe [Sat, 2 Feb 2019 12:50:42 +0000 (04:50 -0800)]
Prepare 6.2 release.

6 years agopledge: add rpath promise for the ugly Xft font fallback
Hiltjo Posthuma [Sat, 2 Jun 2018 15:15:42 +0000 (17:15 +0200)]
pledge: add rpath promise for the ugly Xft font fallback

6 years agoMakefile: just show the compiler output
Hiltjo Posthuma [Sat, 2 Jun 2018 15:04:44 +0000 (17:04 +0200)]
Makefile: just show the compiler output

Don't be fancy and just show the actual output so debugging is simpler.

6 years agoDo not strip at link stage
Klemens Nanni [Sat, 2 Jun 2018 13:12:42 +0000 (15:12 +0200)]
Do not strip at link stage

Building with debug symbols is worthless unless LDFLAGS are manually
adjusted as well.

6 years agoPledge on OpenBSD
Klemens Nanni [Fri, 25 May 2018 05:56:27 +0000 (07:56 +0200)]
Pledge on OpenBSD

6 years agoconfig.def.h: ClkTagBar missing from comment
Hiltjo Posthuma [Fri, 25 May 2018 04:56:36 +0000 (06:56 +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

6 years agoFunction declarations in correct order.
Christopher Drelich [Wed, 2 May 2018 22:09:50 +0000 (18:09 -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.

6 years agoremove old TODO and BUGS entries
Hiltjo Posthuma [Sat, 12 May 2018 17:14:19 +0000 (19:14 +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!

6 years agoupdate README: remove mentioning the old dextra repo
Hiltjo Posthuma [Wed, 14 Mar 2018 20:03:11 +0000 (21:03 +0100)]
update README: remove mentioning the old dextra repo

Thanks Christopher Drelich <cd@cdrakka.com>

6 years agoAll functions in alphabetical order except for this one.
Christopher Drelich [Wed, 14 Mar 2018 17:58:06 +0000 (13:58 -0400)]
All functions in alphabetical order except for this one.

6 years agoColBorder has been moved to the enum with ColFg and ColBg.
Christopher Drelich [Wed, 14 Mar 2018 16:44:53 +0000 (17:44 +0100)]
ColBorder has been moved to the enum with ColFg and ColBg.

6 years agodont NUL terminate _NET_WM_NAME
Hiltjo Posthuma [Wed, 27 Dec 2017 12:36:53 +0000 (13:36 +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.

6 years agosync dmenu drw.{c,h} code: use Clr* (was Scm)
Hiltjo Posthuma [Fri, 3 Nov 2017 20:20:48 +0000 (21:20 +0100)]
sync dmenu drw.{c,h} code: use Clr* (was Scm)

6 years agogettextprop: check result of XGetTextProperty (undefined behaviour for XFree)
Hiltjo Posthuma [Fri, 3 Nov 2017 15:36:32 +0000 (16:36 +0100)]
gettextprop: check result of XGetTextProperty (undefined behaviour for XFree)

6 years agoSet class name on status bar
Omar Sandoval [Fri, 3 Nov 2017 16:58:38 +0000 (09:58 -0700)]
Set class name on status bar

This is useful for configuring compositors to ignore the status bar
window.

7 years agosimplify isfixed conditions
Daniel Cousens [Tue, 10 Oct 2017 21:10:45 +0000 (08:10 +1100)]
simplify isfixed conditions

7 years agoyet another cleanup
Anselm R Garbe [Mon, 8 May 2017 19:08:27 +0000 (21:08 +0200)]
yet another cleanup

The previous patches introduced some unclean space-based indentation
patterns. This patch fixes them.

7 years agoDon't restrict snap in mousemove
Markus Teich [Sat, 7 Jan 2017 16:21:30 +0000 (17:21 +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.

7 years agoButton passthrough when client is not focused
Markus Teich [Sat, 7 Jan 2017 16:21:29 +0000 (17:21 +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.

7 years agocleanup
Markus Teich [Sat, 7 Jan 2017 16:21:28 +0000 (17:21 +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.

7 years agoapplied Markus' tagset purge of alternative view on _NET_ACTIVE_WINDOW event
Anselm R Garbe [Mon, 5 Dec 2016 09:16:46 +0000 (10:16 +0100)]
applied Markus' tagset purge of alternative view on _NET_ACTIVE_WINDOW event

7 years agoapplied Ivan Delalande's NET_SUPPORTING_WM_CHECK patch for gtk3 compatibility
Anselm R Garbe [Mon, 5 Dec 2016 09:09:49 +0000 (10:09 +0100)]
applied Ivan Delalande's NET_SUPPORTING_WM_CHECK patch for gtk3 compatibility

7 years agoapplied Ian Remmler's man page adjustment suggestions
Anselm R Garbe [Mon, 5 Dec 2016 09:05:00 +0000 (10:05 +0100)]
applied Ian Remmler's man page adjustment suggestions

7 years agoapplied Markus' decouple color-scheme patch
Anselm R Garbe [Mon, 5 Dec 2016 09:01:33 +0000 (10:01 +0100)]
applied Markus' decouple color-scheme patch

7 years agoapplied Markus' clarify status text padding patch
Anselm R Garbe [Mon, 5 Dec 2016 08:54:20 +0000 (09:54 +0100)]
applied Markus' clarify status text padding patch

7 years agoLICENSE: update people
Quentin Rameau [Mon, 14 Nov 2016 10:49:17 +0000 (11:49 +0100)]
LICENSE: update people

7 years agodwm.1: add keybinding for spawning dmenu
Quentin Rameau [Mon, 14 Nov 2016 10:18:27 +0000 (11:18 +0100)]
dwm.1: add keybinding for spawning dmenu

7 years agodie() on calloc failure
Hiltjo Posthuma [Sat, 5 Nov 2016 10:34:52 +0000 (11:34 +0100)]
die() on calloc failure

thanks Markus Teich and David!

8 years agodie() consistency: always add newline
Hiltjo Posthuma [Fri, 12 Aug 2016 12:35:25 +0000 (14:35 +0200)]
die() consistency: always add newline

8 years agoconfig.def.h: style improvement, use color Scheme enum
Hiltjo Posthuma [Tue, 28 Jun 2016 16:04:56 +0000 (18:04 +0200)]
config.def.h: style improvement, use color Scheme enum

8 years agoimport new drw from libsl and minor fixes.
Markus Teich [Sun, 22 May 2016 20:33:56 +0000 (22:33 +0200)]
import new drw from libsl and minor fixes.

- better scaling for occupied tag squares.
- draw statusline first to omitt some complicated calculations.

8 years agoConfigure geometry before applying rules
Eric Pruitt [Wed, 25 May 2016 23:33:11 +0000 (16:33 -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.

8 years agofix fullscreen clients not resized on X display resolution change
Hiltjo Posthuma [Sat, 19 Dec 2015 19:25:26 +0000 (20:25 +0100)]
fix fullscreen clients not resized on X display resolution change

patch provided by Bert Münnich <ber.t_AT_posteo.de>, thanks!

8 years agoShut up glibc about _BSD_SOURCE being deprecated
Quentin Rameau [Sat, 19 Dec 2015 19:04:19 +0000 (20:04 +0100)]
Shut up glibc about _BSD_SOURCE being deprecated

8 years agocode-style consistency
Hiltjo Posthuma [Sun, 8 Nov 2015 22:11:48 +0000 (23:11 +0100)]
code-style consistency

8 years agounboolification
Hiltjo Posthuma [Sun, 8 Nov 2015 21:48:43 +0000 (22:48 +0100)]
unboolification

8 years agosort include + whitespace fix
Hiltjo Posthuma [Sun, 8 Nov 2015 19:38:00 +0000 (20:38 +0100)]
sort include + whitespace fix

8 years agoseparate program-specific c99 bool and X11
Hiltjo Posthuma [Sat, 7 Nov 2015 13:04:49 +0000 (14:04 +0100)]
separate program-specific c99 bool and X11

True, False are X11-specific (int), make sure to use c99 stdbool for
program-specific things.

8 years agoMakefile: package all files with make dist
Hiltjo Posthuma [Sun, 8 Nov 2015 15:52:53 +0000 (16:52 +0100)]
Makefile: package all files with make dist

8 years agosetfullscreen: don't process the property twice
Quentin Rameau [Sat, 7 Nov 2015 13:09:08 +0000 (14:09 +0100)]
setfullscreen: don't process the property twice

Some clients try to set _NET_WM_STATE_FULLSCREEN even when the window is
already in fullscreen.
For example, c->oldstate was set two times in a raw and window would
then always be floating.
We must check that it's not the case before processing it.
(original patch modified with suggestion from Markus Teich
<markus.teich@stusta.mhn.de>)

8 years agosync updated drw code from dmenu
Hiltjo Posthuma [Tue, 20 Oct 2015 21:34:49 +0000 (23:34 +0200)]
sync updated drw code from dmenu

important:
- drw_rect: didn't use w and h, change the dwm code accordingly.
- drw_text: text is NULL is not allowed, use drw_rect().

8 years agodwm: use ecalloc, prevent theoretical overflow
Hiltjo Posthuma [Tue, 20 Oct 2015 21:30:31 +0000 (23:30 +0200)]
dwm: use ecalloc, prevent theoretical overflow

8 years agocleanup, dont use c++ style comments
Hiltjo Posthuma [Tue, 20 Oct 2015 21:28:30 +0000 (23:28 +0200)]
cleanup, dont use c++ style comments

- signal: print error string.
- die: start message with lower-case (consistency).
- bump version to 2015.

8 years agodwm: cleanup: free schemes and cursors as array
Hiltjo Posthuma [Tue, 20 Oct 2015 21:27:31 +0000 (23:27 +0200)]
dwm: cleanup: free schemes and cursors as array

8 years agoconfig.h: use common default font, pass Xft font name to dmenu
Hiltjo Posthuma [Tue, 20 Oct 2015 21:10:54 +0000 (23:10 +0200)]
config.h: use common default font, pass Xft font name to dmenu

dmenu uses Xft now (soon to be released).

8 years agoconfig.mk: add $FREETYPELIBS and $FREETYPEINC, simpler to override (ports and *BSDs)
Hiltjo Posthuma [Tue, 20 Oct 2015 21:01:49 +0000 (23:01 +0200)]
config.mk: add $FREETYPELIBS and $FREETYPEINC, simpler to override (ports and *BSDs)

9 years agoAdd Xft and follback-fonts support to graphics lib
Eric Pruitt [Fri, 6 Mar 2015 04:26:11 +0000 (20:26 -0800)]
Add Xft and follback-fonts support to graphics lib

9 years agoremoved .hgtags, thanks Dimitris for spotting
Anselm R Garbe [Sun, 23 Nov 2014 14:25:35 +0000 (15:25 +0100)]
removed .hgtags, thanks Dimitris for spotting

10 years agoapplied Hiltjo's resize/move limitation
Anselm R Garbe [Mon, 11 Aug 2014 05:24:29 +0000 (07:24 +0200)]
applied Hiltjo's resize/move limitation

"Limit the amount of updates when resizing or moving a window in floating
mode to 60 times per second. This makes resizing and moving alot smoother
and by limiting it it also uses alot less resources on my machine.

10 years agosame as before with dwm.c as well
Anselm R Garbe [Thu, 29 May 2014 16:05:17 +0000 (18:05 +0200)]
same as before with dwm.c as well

10 years agoupdated copyright notice in LICENSE file
Anselm R Garbe [Thu, 29 May 2014 16:02:12 +0000 (18:02 +0200)]
updated copyright notice in LICENSE file

11 years agoapplied Lukas' focus suggestion at startup, thanks
Anselm R Garbe [Tue, 27 Aug 2013 18:39:21 +0000 (20:39 +0200)]
applied Lukas' focus suggestion at startup, thanks

11 years agoapplied improved version of Martti Kühne's dmenu/multi monitor approach from dwm...
Anselm R Garbe [Fri, 2 Aug 2013 20:40:20 +0000 (22:40 +0200)]
applied improved version of Martti Kühne's dmenu/multi monitor approach from dwm, no dmenuspawn required

11 years agodo not take our font declaration as default for st
Anselm R Garbe [Sat, 20 Jul 2013 07:08:46 +0000 (09:08 +0200)]
do not take our font declaration as default for st

11 years agoapplied Jochen's drw_text patch, thanks
Anselm R Garbe [Sun, 23 Jun 2013 19:53:09 +0000 (21:53 +0200)]
applied Jochen's drw_text patch, thanks

11 years agoapplied Julian's enum approach,
Anselm R Garbe [Wed, 19 Jun 2013 17:35:33 +0000 (19:35 +0200)]
applied Julian's enum approach,
however renamed theme into scheme resp. Theme into ClrScheme

11 years agofinished libsl/drw integration
Anselm R Garbe [Sun, 16 Jun 2013 13:20:29 +0000 (15:20 +0200)]
finished libsl/drw integration

11 years agoinclude font argument for st by default
Anselm R Garbe [Thu, 2 May 2013 15:31:22 +0000 (17:31 +0200)]
include font argument for st by default

11 years agoadded st to SEE ALSO section
Anselm R Garbe [Wed, 1 May 2013 13:45:32 +0000 (15:45 +0200)]
added st to SEE ALSO section

11 years agouse st as default terminal from now on
Anselm R Garbe [Wed, 1 May 2013 13:41:44 +0000 (15:41 +0200)]
use st as default terminal from now on

11 years agoshut up about deprecated Xlib functions
Anselm R Garbe [Wed, 1 May 2013 13:39:06 +0000 (15:39 +0200)]
shut up about deprecated Xlib functions

11 years agorenamed draw into drw
Anselm R Garbe [Wed, 17 Apr 2013 19:21:47 +0000 (21:21 +0200)]
renamed draw into drw

11 years agocontinued with draw.c and draw.h implementation, now the integration begins
Anselm R Garbe [Sun, 9 Dec 2012 18:11:11 +0000 (19:11 +0100)]
continued with draw.c and draw.h implementation, now the integration begins