~pkal/dwm

Removed binary files
Add zoom binding
Resolve keybinding conflict

Both "hide-bar" and "bottom stack tiling" were bound to s-b.
Add missing header
Update config.h with new layouts
Merge branch 'patch/centeredmaster' into local
Import config.h
Merge branch 'patch/time' into local
Merge branch 'patch/maybe-select' into local
Add time patch

This patch implements a simple clock in the status bar, replacing the
X property status-updater.
Add maybe-select patch

This patch will only use a selected border, if there is more than one
window active per tag or if it's floating.
61bb8b22 — Ian Remmler 1 year, 8 months ago
Fix x coordinate calculation in buttonpress.
bb2e7222 — Hiltjo Posthuma 1 year, 4 months ago
dwm.1: fix wrong text in man page
f04cac6d — Alex Flierl 1 year, 5 months ago
Fix memory leaks in drw

The function drw_fontset_free in drw.c was never called.
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.
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.
getatomprop: Add forward declaration

No functional changes, but for every other function we have a forward
declaration here. getatomprop should be no exception.
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.
Next