Compare commits

...

1656 Commits
0.1 ... master

Author SHA1 Message Date
Raymond Cole
cfb8627a80 Avoid unsigned integer underflow in drw_text() 2024-10-30 13:02:17 +01:00
Hiltjo Posthuma
fcb2476b69 util.c: output function might override errno and thus affect perror()
Original patch by Raymond Cole with some modifications, thanks!
2024-10-27 20:10:07 +01:00
Hiltjo Posthuma
8933ebcf50 sync drw.{c,h} from dmenu
- drw: minor improvement to the nomatches cache
- overhaul utf8decoding and render invalid utf8 sequences as U+FFFD.

Thanks NRK for these improvements!
2024-10-05 13:06:08 +02:00
Pontus Stenetorp
5687f46964 Add missing void to updateclientlist definition
Caught by -pedantic implying -Wstrict-prototypes for OpenBSD's 16.0.6 Clang.
2024-06-08 18:21:00 +02:00
Hiltjo Posthuma
061e9fe9a7 bump version to 6.5 2024-03-19 12:13:16 +01:00
Hiltjo Posthuma
9f8855343c 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.
2023-09-22 15:13:29 +02:00
Hiltjo Posthuma
e81f17d4c1 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.
2023-04-09 12:37:14 +02:00
NRK
348f6559ab 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>
2023-02-17 15:27:34 +01:00
Chris Down
712d6639ff 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
2023-01-28 13:34:43 +01:00
Chris Down
89f9905714 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
2022-12-07 23:06:26 +01:00
Hiltjo Posthuma
ba56fe9fea 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.
2022-10-28 16:37:56 +02:00
Hiltjo Posthuma
50ad171eea bump version to 6.4 2022-10-04 19:35:13 +02:00
Hiltjo Posthuma
970f376973 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
2022-09-17 15:32:41 +02:00
Stein
c2b748e793 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).
2022-08-28 11:39:43 +02:00
NRK
84d7322113 config.def.h: make keys and buttons const
pretty much all other variables are declared as const when they're not
modified.
2022-08-19 11:47:22 +02:00
Stein
5799dd1fca 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.
2022-08-17 13:33:57 +02:00
Stein
44adafe006 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.
2022-08-12 09:02:34 +02:00
Stein
a859676ead 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.
2022-08-10 15:31:21 +02:00
Hiltjo Posthuma
e0dee91145 sync code-style patch from libsl 2022-08-08 10:43:09 +02:00
NRK
5e76e7e21d 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.
2022-08-06 16:09:01 +02:00
explosion-mental
5b2e5e7a40 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
2022-08-02 18:08:51 +02:00
Stein
786f6e2a6f 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.
2022-08-02 18:04:56 +02:00
Hiltjo Posthuma
e03248a4d5 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
2022-07-22 09:18:52 +02:00
NRK
6613d9f9a1 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`.
2022-07-15 20:53:58 +02:00
NRK
9bffa845fa use named parameter for func prototype
all the other prototypes use names.
2022-07-15 20:53:56 +02:00
Hiltjo Posthuma
d3f93c7c1a sync latest drw.{c,h} changes from dmenu 2022-05-10 19:07:56 +02:00
Hiltjo Posthuma
cd0773cee9 Makefile: add manual path for OpenBSD
Reported by fossy <fossy@dnmx.org>, thanks
2022-05-01 18:37:54 +02:00
Chris Down
8b48e30973 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.
2022-04-26 15:50:55 +02:00
Hiltjo Posthuma
a83dc20310 LICENSE: add Chris Down 2022-04-26 15:50:32 +02:00
Hiltjo Posthuma
a4771de5ba 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
2022-04-26 10:30:59 +02:00
Santtu Lakkala
d93ff48803 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.
2022-04-16 16:59:03 +02:00
Chris Down
8806b6e237 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.
2022-04-16 16:37:46 +02:00
Miles Alan
bece862a0f 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.
2022-03-13 17:32:56 +01:00
NRK
60e9a14998 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.
2022-03-13 10:49:43 +01:00
Hiltjo Posthuma
d39e2f3441 bump version to 6.3 2022-01-07 12:39:18 +01:00
Chris Down
8657affa2a 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().
2021-12-19 16:16:30 +01:00
Hiltjo Posthuma
a786211d6c 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.
2021-08-20 23:09:48 +02:00
Miles Alan
716233534b 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.
2021-08-09 18:25:19 +02:00
Quentin Rameau
138b405f0c Add a configuration option for fullscreen locking
Some people are annoyed to have this new behaviour forced for some
application which use fake fullscreen.
2021-07-14 11:26:37 +02:00
Chris Down
67d76bdc68 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/
2021-03-29 19:16:27 +02:00
Ian Remmler
61bb8b2241 Fix x coordinate calculation in buttonpress. 2020-08-21 16:13:22 +02:00
Hiltjo Posthuma
bb2e7222ba dwm.1: fix wrong text in man page 2020-07-08 18:05:50 +02:00
Alex Flierl
f04cac6d6e Fix memory leaks in drw
The function drw_fontset_free in drw.c was never called.
2020-06-11 18:32:21 +02:00
bakkeby
f09418bbb6 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.
2020-04-25 13:31:02 +02:00
Chris Down
ed3ab6b4fc 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.
2020-04-22 20:33:39 +02:00
Chris Down
f087d20e6e getatomprop: Add forward declaration
No functional changes, but for every other function we have a forward
declaration here. getatomprop should be no exception.
2020-04-22 20:33:26 +02:00
Chris Down
a8e9513783 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.
2020-04-20 17:56:41 +02:00
Hiltjo Posthuma
c82db690cc 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.
2020-04-03 15:36:32 +02:00
Anselm R Garbe
cb3f58ad06 Prepare 6.2 release. 2019-02-02 04:50:42 -08:00
Hiltjo Posthuma
b69c870a30 pledge: add rpath promise for the ugly Xft font fallback 2018-06-02 17:15:42 +02:00
Hiltjo Posthuma
e78b4a9207 Makefile: just show the compiler output
Don't be fancy and just show the actual output so debugging is simpler.
2018-06-02 17:10:28 +02:00
Klemens Nanni
3cd4023fb3 Do not strip at link stage
Building with debug symbols is worthless unless LDFLAGS are manually
adjusted as well.
2018-06-02 16:56:10 +02:00
Klemens Nanni
f40f86fa87 Pledge on OpenBSD 2018-05-25 11:49:30 +02:00
Hiltjo Posthuma
c3a2e016bb 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
2018-05-25 06:56:36 +02:00
Christopher Drelich
c8e9479186 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.
2018-05-12 19:19:20 +02:00
Hiltjo Posthuma
10dfa65860 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!
2018-05-12 19:14:19 +02:00
Hiltjo Posthuma
3bd8466e93 update README: remove mentioning the old dextra repo
Thanks Christopher Drelich <cd@cdrakka.com>
2018-03-14 21:03:11 +01:00
Christopher Drelich
76c8c16d79 All functions in alphabetical order except for this one. 2018-03-14 21:02:06 +01:00
Christopher Drelich
3cb34830eb ColBorder has been moved to the enum with ColFg and ColBg. 2018-03-14 17:46:48 +01:00
Hiltjo Posthuma
db2236001c 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.
2017-12-27 13:36:53 +01:00
Hiltjo Posthuma
3756f7f6b8 sync dmenu drw.{c,h} code: use Clr* (was Scm) 2017-11-03 21:20:48 +01:00
Hiltjo Posthuma
99f78fa553 gettextprop: check result of XGetTextProperty (undefined behaviour for XFree) 2017-11-03 21:14:58 +01:00
Omar Sandoval
a9b6a312a7 Set class name on status bar
This is useful for configuring compositors to ignore the status bar
window.
2017-11-03 20:40:34 +01:00
Daniel Cousens
6aa8e37efe simplify isfixed conditions 2017-10-11 09:46:28 +02:00
Anselm R Garbe
ceac8c91ff yet another cleanup
The previous patches introduced some unclean space-based indentation
patterns. This patch fixes them.
2017-05-08 21:08:27 +02:00
Markus Teich
5b238c8dab 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.
2017-03-28 20:23:38 +02:00
Markus Teich
022d076054 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.
2017-03-28 20:23:34 +02:00
Markus Teich
2952b68db8 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.
2017-03-28 20:23:28 +02:00
Anselm R Garbe
bb3bd6fec3 applied Markus' tagset purge of alternative view on _NET_ACTIVE_WINDOW event 2016-12-05 10:16:46 +01:00
Anselm R Garbe
e63bf22948 applied Ivan Delalande's NET_SUPPORTING_WM_CHECK patch for gtk3 compatibility 2016-12-05 10:09:49 +01:00
Anselm R Garbe
5376947571 applied Ian Remmler's man page adjustment suggestions 2016-12-05 10:05:00 +01:00
Anselm R Garbe
975c898376 applied Markus' decouple color-scheme patch 2016-12-05 10:01:33 +01:00
Anselm R Garbe
a137a86a23 applied Markus' clarify status text padding patch 2016-12-05 09:54:20 +01:00
Quentin Rameau
839c7f6939 LICENSE: update people 2016-11-15 17:35:33 +01:00
Quentin Rameau
7a59cd1457 dwm.1: add keybinding for spawning dmenu 2016-11-15 17:35:30 +01:00
Hiltjo Posthuma
24849acada die() on calloc failure
thanks Markus Teich and David!
2016-11-05 11:34:52 +01:00
Hiltjo Posthuma
ab9571bbc5 die() consistency: always add newline 2016-08-12 14:36:35 +02:00
Hiltjo Posthuma
56a31dc4a7 config.def.h: style improvement, use color Scheme enum 2016-06-28 18:04:56 +02:00
Markus Teich
7af4d439bd import new drw from libsl and minor fixes.
- better scaling for occupied tag squares.
- draw statusline first to omitt some complicated calculations.
2016-06-26 13:52:36 +02:00
Eric Pruitt
cd2d7549b3 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.
2016-06-24 05:38:58 +02:00
Hiltjo Posthuma
3465bed290 fix fullscreen clients not resized on X display resolution change
patch provided by Bert Münnich <ber.t_AT_posteo.de>, thanks!
2015-12-19 20:25:26 +01:00
Quentin Rameau
4ec3a673ff Shut up glibc about _BSD_SOURCE being deprecated 2015-12-19 20:20:26 +01:00
Hiltjo Posthuma
5ed9c48196 code-style consistency 2015-11-08 23:11:48 +01:00
Hiltjo Posthuma
3c91283ede unboolification 2015-11-08 22:48:43 +01:00
Hiltjo Posthuma
e941181f46 sort include + whitespace fix 2015-11-08 20:38:00 +01:00
Hiltjo Posthuma
43e82adf0d separate program-specific c99 bool and X11
True, False are X11-specific (int), make sure to use c99 stdbool for
program-specific things.
2015-11-08 20:35:25 +01:00
Hiltjo Posthuma
42cf1c7d8f Makefile: package all files with make dist 2015-11-08 16:52:53 +01:00
Quentin Rameau
dce4fb3737 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>)
2015-11-07 14:31:21 +01:00
Hiltjo Posthuma
646b351cc7 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().
2015-10-20 23:38:31 +02:00
Hiltjo Posthuma
e3b7e1d620 dwm: use ecalloc, prevent theoretical overflow 2015-10-20 23:38:31 +02:00
Hiltjo Posthuma
04db03a4e6 cleanup, dont use c++ style comments
- signal: print error string.
- die: start message with lower-case (consistency).
- bump version to 2015.
2015-10-20 23:38:20 +02:00
Hiltjo Posthuma
4a4817b3aa dwm: cleanup: free schemes and cursors as array 2015-10-20 23:27:31 +02:00
Hiltjo Posthuma
7e1182ce55 config.h: use common default font, pass Xft font name to dmenu
dmenu uses Xft now (soon to be released).
2015-10-20 23:10:54 +02:00
Hiltjo Posthuma
40529e1469 config.mk: add $FREETYPELIBS and $FREETYPEINC, simpler to override (ports and *BSDs) 2015-10-20 23:01:49 +02:00
Eric Pruitt
14343e69cc Add Xft and follback-fonts support to graphics lib 2015-03-13 21:44:22 +01:00
Anselm R Garbe
35db6d8afc removed .hgtags, thanks Dimitris for spotting 2014-11-23 15:25:35 +01:00
Anselm R Garbe
3d1090ba89 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.
2014-08-11 07:24:29 +02:00
Anselm R Garbe
18248ebf4b same as before with dwm.c as well 2014-05-29 18:05:17 +02:00
Anselm R Garbe
b468873b2b updated copyright notice in LICENSE file 2014-05-29 18:02:12 +02:00
Anselm R Garbe
cdec9782a1 applied Lukas' focus suggestion at startup, thanks 2013-08-27 20:39:21 +02:00
Anselm R Garbe
6af273771c applied improved version of Martti Kühne's dmenu/multi monitor approach from dwm, no dmenuspawn required 2013-08-02 22:40:20 +02:00
Anselm R Garbe
4fb31e0896 do not take our font declaration as default for st 2013-07-20 09:08:46 +02:00
Anselm R Garbe
b800a1d136 applied Jochen's drw_text patch, thanks 2013-06-23 21:53:09 +02:00
Anselm R Garbe
33a74489f0 applied Julian's enum approach,
however renamed theme into scheme resp. Theme into ClrScheme
2013-06-19 19:35:33 +02:00
Anselm R Garbe
5364697914 finished libsl/drw integration 2013-06-16 15:20:29 +02:00
Anselm R Garbe
7edc596311 include font argument for st by default 2013-05-02 17:31:22 +02:00
Anselm R Garbe
68b400e95d added st to SEE ALSO section 2013-05-01 15:45:32 +02:00
Anselm R Garbe
656882d76f use st as default terminal from now on 2013-05-01 15:41:44 +02:00
Anselm R Garbe
1479e76f01 shut up about deprecated Xlib functions 2013-05-01 15:39:06 +02:00
Anselm R Garbe
f2544a3318 renamed draw into drw 2013-04-17 21:21:47 +02:00
Anselm R Garbe
aafeaf7317 continued with draw.c and draw.h implementation, now the integration begins 2012-12-09 19:11:11 +01:00
Anselm R Garbe
f21d46ea7d continued with draw.c abstraction, also started util.{h,c} implementation, that will be used by draw.c as well 2012-12-08 10:13:01 +01:00
anselm@garbe.us
c0ba635c50 removed DDC, all is Draw-dependent 2012-11-18 17:52:42 +01:00
anselm@garbe.us
0a673ad7a3 continued, distinction of Draw and DDC is bad, needs to be merged 2012-11-18 17:26:12 +01:00
anselm@garbe.us
3aabc08ede reverting the xkb dependency, I don't care if this function is deprecated, it seems it breaks other stuff instead. 2012-11-18 16:39:56 +01:00
anselm@garbe.us
d456617f0e basic draw.c structure 2012-11-18 12:04:29 +01:00
anselm@garbe.us
61fe833a06 reverting to plain X11 fonts in order to implement draw.c default 2012-11-18 10:56:54 +01:00
anselm@garbe.us
917e281634 removed obsolete bugs from BUGS file 2012-11-17 20:04:04 +01:00
anselm@garbe.us
31451c3ad3 compile fix 2012-11-17 19:12:10 +01:00
anselm@garbe.us
344f35f9f5 applied Neil Klopfstein's patch, slightly modified 2012-11-17 19:10:39 +01:00
anselm@garbe.us
87adcd263b starting with initial draw.h 2012-11-17 19:01:22 +01:00
anselm@garbe.us
fd3c19bd55 incorporating Xft instead of cairo, cairo provides far too many options 2012-11-02 12:17:50 +01:00
anselm@garbe.us
1bdb393f81 keep 6.1 intact 2012-07-08 09:45:53 +02:00
anselm@garbe.us
940feed314 reverted to old updategeom() after several complains, we need to optimize the old way 2012-07-08 09:43:11 +02:00
anselm@garbe.us
606b44179d applied James Turner's XkbKeycodeToKeysym patch, thanks 2012-06-23 20:12:49 +02:00
anselm@garbe.us
20f6917910 drastically changed updategeom() handling, see comment in updategeom() for details 2012-06-23 10:12:46 +02:00
anselm@garbe.us
820cbb3545 reversed Andreas Amann's fullscreen fix with the approach proposed by Gary Langshaw:
- idea is not supporting movemouse/resizemouse/togglefloating for fullscreen windows
- as fullscreen windows are broken anyways, they should only be adjusted by their own means
2012-06-23 09:06:00 +02:00
anselm@garbe.us
90f3238301 added kludge to fix some input focus misbehavior in gedit and anjuta, thanks Martti Kühne 2012-04-15 11:41:18 +02:00
anselm@garbe.us
3bfc43c3d0 applied Andreas Amanns' netwm_client_list patch, but with some indentation fixes 2012-03-25 17:49:35 +02:00
anselm@garbe.us
c1128417a9 applied Andreas Amann's netwm_active_window patch, thx 2012-03-25 17:46:03 +02:00
anselm@garbe.us
1b62f8fa58 applied Andreas Amann fullscreen fix, some minor modifications 2012-03-17 18:14:17 +01:00
Connor Lane Smith
54c3044dec unfocus on slow sloppy monitor focus 2012-02-10 00:36:08 +00:00
anselm@garbe.us
51336aa4a3 applied Eckehard Berns fix fix, sorry that this took so long 2012-02-08 19:54:05 +01:00
anselm@garbe.us
c4b6ac812e added 20h's clarification 2012-01-22 20:23:49 +01:00
anselm@garbe.us
873bcb97a9 applied Eckehard Berns barwin leak fix and his suggestion to deal with restack() -- the latter aspect needs further investigation. 2012-01-12 07:36:05 +01:00
anselm@garbe.us
907db0a851 config.mk cleanup 2012-01-04 13:30:12 +01:00
anselm@garbe.us
4e7c469862 Added tag 6.0 for changeset ec4baab78314 2011-12-19 16:09:07 +01:00
anselm@garbe.us
26445a0dc9 bump version to 6.0 2011-12-19 15:38:30 +01:00
Connor Lane Smith
b5068e32e9 add sloppy monitor focus 2011-11-15 20:16:58 +01:00
Connor Lane Smith
f099d2d5b5 new default colour scheme 2011-11-06 20:36:23 +01:00
Connor Lane Smith
80a9da555e calculate window/monitor intersection 2011-11-06 20:31:29 +01:00
Connor Lane Smith
d21026f0a1 honour fullscreen hint on map 2011-11-06 20:30:06 +01:00
anselm@garbe.us
e5a1e77351 testing Brians multiscreen issue fix 2011-11-04 20:02:35 +01:00
Christoph Lohmann
8262d9e663 make ewmh dialog windows float 2011-11-02 12:01:28 +00:00
Connor Lane Smith
90af1ced3c allow 0 nmaster 2011-10-31 20:09:27 +01:00
Connor Lane Smith
5ccd42f807 fix big-border corner case 2011-10-30 12:14:34 +01:00
garbeam@gmail.com
1586b7a02d added keyrelease remark to TODO 2011-10-29 10:57:27 +02:00
Connor Lane Smith
2420071f4c improve tile spacing 2011-10-28 23:45:12 +01:00
Connor Lane Smith
04c26574b8 add nmaster binds to manpage 2011-10-26 12:16:25 +01:00
Connor Lane Smith
b1a28ae1da apply nmaster patch 2011-10-25 20:40:46 +01:00
Connor Lane Smith
f68a01cd76 apply resize hints in floating layout 2011-10-25 20:08:08 +01:00
Connor Lane Smith
2b625eb73e hide clients to the left, not the right 2011-10-25 20:01:18 +01:00
garbeam@gmail.com
0f1f30daca applied Connors cleanup patch of Eckehards proposed fix of applyrules(), thanks everyone involved 2011-08-15 18:44:12 +02:00
garbeam@gmail.com
dec4850d05 applied Connors and Valentins patch to improve the unmapnotify handling of broken clients 2011-08-08 16:55:06 +00:00
garbeam@gmail.com
0de4197cc5 applied Peter Hartlichs nice interim Xinerama and map fix patches, for debugging purposes I also added his transient test driver 2011-07-29 20:01:22 +02:00
garbeam@gmail.com
a372248b80 applied anonymous code cleanup patch 2011-07-27 19:59:10 +02:00
garbeam@gmail.com
69e7d7dfd3 added a marker for the flash fullscreen issue 2011-07-24 10:41:43 +01:00
garbeam@gmail.com
c99fe7dd7d changed sleep 20 into sleep 1 in example script as suggested by Snader_LB 2011-07-20 18:56:10 +00:00
garbeam@gmail.com
d6670a800d applied Connors aesthitic buf fix in tile(), thanks 2011-07-20 18:45:40 +00:00
garbeam@gmail.com
6288c44697 applied Peters magic float mode bugfix 2011-07-20 18:36:15 +00:00
garbeam@gmail.com
d5c5c52b30 applied lolilolicon's floating center patch, further investigation wrt his second issue reported needed 2011-07-20 18:33:19 +00:00
garbeam@gmail.com
d0b4575bf4 thanks to recursions on IRC for his remark 2011-07-20 18:30:51 +00:00
garbeam@gmail.com
03518ce49e Added tag 5.9 for changeset dd74622a4785 2011-07-10 21:25:23 +01:00
garbeam@gmail.com
cd8bb06af5 enabled release flags 2011-07-10 21:24:17 +01:00
garbeam@gmail.com
3150a8a1be applied Peters wintoclient/wintomon optimisation in enternotify() 2011-07-10 21:22:22 +01:00
garbeam@gmail.com
b3c5f5435a removed unneeded offset recalculation, thanks Jukka, let's see if this breaks some other client 2011-07-10 21:18:50 +01:00
garbeam@gmail.com
a692bdcf2b undo the focus optimisation patch for 5.9 2011-07-10 21:12:05 +01:00
garbeam@gmail.com
d83454f6b7 applied Peters two patches, please test hg tip, if nothing breaks this is 5.9 2011-07-09 07:57:10 +01:00
garbeam@gmail.com
27b0142203 applied Garys patch in a slightly modified way 2011-07-02 11:02:22 +02:00
garbeam@gmail.com
867ba36030 applied Nicolas Capit's patch as interim solution until the multiscreen support is reworked in 6.0 2011-07-01 17:56:53 +01:00
Connor Lane Smith
e83f36db10 fixed scroll lock (thanks bogdan) 2011-06-27 20:12:42 +01:00
Connor Lane Smith
212f417e44 fix numlock (thanks mikhail) 2011-06-27 19:35:11 +01:00
garbeam@gmail.com
3a392b8558 making enternotify less focus hungry 2011-06-25 09:07:28 +01:00
garbeam@gmail.com
92fe06b501 applied Andreas Amann's patch from Oct 2010, thanks 2011-06-24 21:02:32 +01:00
garbeam@gmail.com
6cf29bff33 applied Rudys barwidth patch, thanks Rudy 2011-06-17 20:22:54 +01:00
garbeam@gmail.com
60c06a7cb4 don't check for monocle layout in zoom() exit condition 2011-06-14 22:28:16 +01:00
garbeam@gmail.com
1147546122 Thanks for the pedantic review :) 2011-06-14 05:51:21 +01:00
garbeam@gmail.com
d384cee751 fixing some minor issues, next week is dwm-5.9 release time 2011-06-11 08:33:20 +01:00
Connor Lane Smith
5c710cf89c rm draw.c from 5.9 branch 2011-06-04 23:02:00 +01:00
Connor Lane Smith
8a111c181e fix typo 2011-06-04 10:18:54 +01:00
Connor Lane Smith
2255bf46a0 cleaner drawing 2011-06-04 10:17:25 +01:00
Connor Lane Smith
04797343db update draw.c 2011-05-21 20:26:26 +01:00
Connor Lane Smith
e7d41cc188 added draw.h, draw.c 2011-05-20 19:10:26 +01:00
Anselm R Garbe
22d8818850 applied Evil_Bobs cleanup patch 2011-05-12 14:16:33 +00:00
Anselm R Garbe
6784429c3c applied another minor change to the README 2011-04-27 15:55:18 +00:00
Anselm R Garbe
37fea84de8 applied Thomas' README patch 2011-04-27 12:38:59 +00:00
Anselm R Garbe
c14d293e51 applied Jack's mplayer fullscreen patch 2011-04-26 08:13:39 +00:00
Anselm R Garbe
79b1657a19 missed declaration 2011-04-15 08:13:06 +00:00
Anselm R Garbe
d24837f1ad minor fix of the NetActiveWindow multi-monitor flaw, slight rearrangement 2011-04-15 08:12:20 +00:00
Anselm R Garbe
3c2d303c0e applied Peter/Andreas NetActiveWindow patch in a slightly modified version 2011-04-14 13:46:25 +00:00
Anselm R Garbe
1e20a0f78a applied Brendan MacDonell's WM_TAKE_FOCUS patch, thanks Brendan! 2011-04-12 20:19:32 +00:00
Anselm R Garbe
96f9855248 applied another patch of Hiltjo, thanks 2011-03-25 14:06:46 +00:00
Anselm R Garbe
3c48858ffa applied Hiltjos' BUGS patch from 23 Mar, sorry took a while :) 2011-03-25 13:57:54 +00:00
Anselm R Garbe
dd46d5b588 applied Hiltjo's multimon mouse-based resize fix 2011-03-23 08:58:57 +00:00
Anselm R Garbe
0bc4e41ebd applied anonymous patch, I don't think the reversed array access has semantic side-effects 2011-01-07 16:05:22 +00:00
Anselm R Garbe
703c4dd253 added a todo 2010-12-02 10:16:47 +00:00
Anselm R Garbe
b68528d85d applied Hiltjo's cleanup patch 2010-11-19 11:53:59 +00:00
Anselm R Garbe
a644baf674 applied Hiltjo's tiny cleanup fix 2010-09-27 07:53:44 +00:00
Anselm R Garbe
c1f8688bfa applied Hiltjo's tiny cleanup patch, thanks! 2010-09-25 13:39:08 +00:00
Anselm R Garbe
bea4dd2490 does this make a difference? 2010-09-11 19:00:18 +00:00
anselm@garbe.us
83d10be1c1 added TODO and bumped version to 5.9 2010-08-24 13:13:20 +01:00
anselm@garbe.us
1529058f27 applied Hiltjo Posthuma's line saver patch 2010-08-23 17:25:53 +01:00
Anselm R Garbe
36311d88af applied Hiltjo Posthuma's double-XineramaQueryScreens() patch, thanks Hiltjo! 2010-07-25 09:58:25 +01:00
anselm@garbe.us
f1a2a3c850 Added tag 5.8.2 for changeset a043f0800805 2010-06-04 11:41:16 +01:00
Anselm R Garbe
ee734fae6b increased version 2010-05-30 10:03:09 +01:00
Anselm R Garbe
62d3caa999 implemented better fullscreen handling, please test 2010-05-30 10:02:56 +01:00
Anselm R Garbe
4c9b397ff9 Added tag 5.8.1 for changeset 1ed1e75c9c2e 2010-05-29 12:48:18 +01:00
Anselm R Garbe
5c6545adf5 removing Sylvain's patch because it breaks more than it fixes unfortunately, re-issuing a bugfix release 5.8.1 2010-05-29 12:48:11 +01:00
Anselm R Garbe
a704b1ee34 Added tag 5.8 for changeset 60ea8fed13ab 2010-05-28 11:43:44 +01:00
anselm@garbe.us
f83d61dfe8 removed DEBUG code and added 2010 to the copyright list 2010-05-27 08:20:42 +01:00
anselm@garbe.us
c6180949a7 applied Sylvain Laurent's EWMH fullscreen state patch, simplified his patch a bit 2010-05-27 08:19:08 +01:00
Anselm R Garbe
1973ab0643 added the related bug reported by voltaic 2010-04-11 18:42:32 +01:00
Anselm R Garbe
427053f8d1 pretty printing bugs a bit 2010-04-01 22:34:46 +01:00
Anselm R Garbe
a88e0373ef selmon optimisation is needed 2010-04-01 19:39:24 +01:00
Anselm R Garbe
aa9f2be24e more debug output, experimental focus optimisation 2010-04-01 00:14:15 +01:00
Anselm R Garbe
c53b29e60b quick typo fix 2010-03-31 23:27:30 +01:00
Anselm R Garbe
d6bdd03d91 it's debug season for upcoming dwm 5.8, so only use this if you really want to run experimental code or debug code 2010-03-31 23:24:22 +01:00
Anselm R Garbe
1144e98394 another bug report 2009-11-25 13:56:17 +00:00
Anselm R Garbe
7671d03a90 removed misleading comment, thanks Romain Bertrand 2009-11-24 09:31:17 +00:00
Anselm R Garbe
bc554d45d8 added nsz's last bug corner case 2009-11-23 08:13:18 +00:00
Anselm R Garbe
ac4caea921 added BUGS, next version is 5.8 2009-10-31 11:45:56 +00:00
Anselm R Garbe
161f2d921b Added tag 5.7.2 for changeset 15761ac5e2f1 2009-09-27 20:20:14 +01:00
Anselm R Garbe
210378f198 applied Ryan Zheng's patch and re-releasing 5.7.2 2009-09-27 20:20:10 +01:00
Anselm R Garbe
7879616a75 Added tag 5.7.1 for changeset 48c3f87c335d 2009-09-27 10:31:20 +01:00
Anselm R Garbe
9e8dd3479d fixed the layout symbol bug reported by Nibble (but using a different approach as he suggested)
- optimised drawbar() and arrange() handling for multiple monitors, arrange only arranges the relevant monitors when applicable, same with drawbar
- need to release 5.7.1
2009-09-27 10:31:14 +01:00
Anselm R Garbe
0b72be924d Added tag 5.7 for changeset 257403d4cd96 2009-09-26 19:52:04 +01:00
Anselm R Garbe
91e902f7fe switching to release flags 2009-09-22 20:34:03 +01:00
Anselm R Garbe
30fed9a211 implemented nn < n case, k-zed please recheck 2009-09-22 20:33:42 +01:00
Anselm R Garbe
c45d46ad9a use buffer instead of pointer for mon->ltsymbol 2009-09-22 09:53:11 +01:00
Anselm R Garbe
6f55de8310 added missing scan 2009-09-22 09:16:48 +01:00
Anselm R Garbe
07ad298133 implemented different version of updategeom 2009-09-21 19:51:17 +01:00
Anselm R Garbe
f0a4845e7d added TODO to updategeom in order to implement a decent version of it soon 2009-09-19 11:52:16 +01:00
Anselm R Garbe
82ec7a7ed4 new experimental updategeom() additions that should avoid several problems with Xinerama, this is EXPERIMENTAL and might break something, the algorithms in use are quite complex and cumbersome, patches and comments welcome 2009-09-18 21:18:00 +01:00
Anselm R Garbe
e7300e0f6f implemented dynamic layout symbol stuff 2009-09-16 15:59:54 +01:00
Anselm R Garbe
c3feffa1e2 applied Tony Lainson's config.def.h patch 2009-09-15 13:50:41 +01:00
Anselm R Garbe
956a430054 update 2009-09-08 13:33:58 +01:00
Anselm R Garbe
01056b6636 hard-core destruction 2009-09-08 13:30:18 +01:00
Anselm R Garbe
eb260b1a41 renaming isdestroyed into destroyed 2009-09-08 13:18:05 +01:00
Anselm R Garbe
7fe81359d4 sync when a client is being killed 2009-09-08 13:16:54 +01:00
Anselm R Garbe
a3a859b4e9 added isdestroyed flag to unmanage 2009-09-08 13:13:03 +01:00
nsz@tpx
9c066c24b3 always updategeom when root is configured 2009-09-07 11:46:02 +02:00
Anselm R Garbe
0a668922a4 another small optimisation 2009-08-18 15:59:38 +01:00
Anselm R Garbe
5762964232 also update title if the client is on an unfocused monitor 2009-08-18 15:42:55 +01:00
Anselm R Garbe
cba6b211c2 applied nsz's dwm.1 patch, also added wmname 2009-08-16 21:39:24 +01:00
Anselm R Garbe
42750a621b applied Jukka's cosmetic patch 2009-08-16 08:18:54 +01:00
Anselm R Garbe
8ef465d592 applied Jukka's sigchld patch 2009-08-16 08:18:25 +01:00
Anselm R Garbe
33fe200b52 added merged patch of anydot and Neale 2009-08-13 10:45:59 +01:00
Anselm R Garbe
91fffb3f7d fixed nn declaration 2009-07-27 12:01:58 +01:00
Anselm R Garbe
1fa31efebf Added tag 5.6.1 for changeset e47a47bd3ed4 2009-07-26 14:02:28 +01:00
Anselm R Garbe
244addb3f4 applied nsz patch 2009-07-21 10:57:54 +01:00
Anselm R Garbe
c13be8d620 updategeom fix for same geom screens 2009-07-21 08:57:04 +01:00
Anselm R Garbe
dc39ae8568 applied nsz' man page comment, thanks! 2009-07-20 17:08:34 +01:00
Anselm R Garbe
966d76a428 merge 2009-07-20 16:40:32 +01:00
Anselm R Garbe
7151bf8329 removed Standard input hint 2009-07-20 16:39:42 +01:00
Anselm R Garbe
dfecd46190 merge 2009-07-18 11:28:31 +01:00
Anselm R Garbe
5bc4db0f76 applied nsz' dwm.1 fixes, thanks Szabolcs! 2009-07-18 11:28:03 +01:00
Anselm R Garbe
999d6e795f removed misleading comment 2009-07-17 15:28:07 +01:00
Anselm R Garbe
636075297c merge 2009-07-17 13:35:44 +01:00
Anselm R Garbe
6877a00033 it's all nsz's hard investigation effort, hail nsz! ;) 2009-07-17 13:35:17 +01:00
Anselm R Garbe
0927d635bc Added tag 5.6 for changeset 555070221577 2009-07-14 19:07:53 +01:00
Anselm R Garbe
450b08dde2 final style fixes 2009-07-14 16:26:04 +01:00
Anselm R Garbe
da80487c07 removed int cast in TAGMASK as suggested by nsz 2009-07-14 16:04:07 +01:00
Anselm R Garbe
d9779c06fc some stylistic changes 2009-07-14 16:01:14 +01:00
Anselm R Garbe
20996c6c5a removed obsolete BUG 2009-07-13 12:51:00 +01:00
anselm@x200s.config
8dc9fcf1b9 mark broken clients as broken 2009-07-12 22:49:06 +01:00
anselm@x200s.config
fc21dd4b7e fixing updatetitle 2009-07-12 22:34:29 +01:00
Anselm R Garbe
758b100d12 extended rule to apply monitors if set up accordingly 2009-07-09 21:52:17 +01:00
Anselm R Garbe
8420fb1ced reverting to optimised compiler options, current state seems stable 2009-07-09 20:49:48 +01:00
Anselm R Garbe
f6128a16f9 extended man page to mention number of visible windows 2009-07-09 20:11:33 +01:00
Anselm R Garbe
87526be6f0 added client number printing right of layout symbol 2009-07-09 19:58:58 +01:00
Anselm R Garbe
565050ac51 removed monsyms, useless 2009-07-09 11:29:01 +01:00
Anselm R Garbe
5e408d8ff6 restricting number of mons by length of monsyms 2009-07-09 11:21:06 +01:00
Anselm R Garbe
1724f7fa43 introducing const where it might make some sense 2009-07-08 18:59:20 +01:00
Anselm R Garbe
3e6fe6b541 no that's definately better 2009-07-08 17:24:39 +01:00
Anselm R Garbe
6620615ab9 some minor changes 2009-07-08 17:05:20 +01:00
Anselm R Garbe
61c3095f2f die if malloc sizeof(Monitor) fails 2009-07-08 16:05:36 +01:00
Anselm R Garbe
a72dc2fec2 applied Mate's patch, added Mate to LICENSE 2009-07-06 20:12:47 +01:00
Anselm R Garbe
8b17f5517b some cleanups 2009-07-02 20:56:23 +01:00
Anselm R Garbe
cd96232f7e hotfix 2009-07-02 20:38:56 +01:00
Anselm R Garbe
a9e145fe6d changed focusmon/tagmon to work on prev/next instead (-1/+1), changed shortcuts to Mod1-, Mod1-. and Mod1-Shift-, Mod1-Shift-. 2009-07-02 20:37:26 +01:00
Anselm R Garbe
5dd92c7655 removed some empty lines 2009-07-02 18:40:04 +01:00
Anselm R Garbe
52bd69c2a4 interactive resizals allow display dimensions again 2009-07-02 18:30:01 +01:00
Anselm R Garbe
ca376970db more sensible 2009-07-02 16:48:54 +01:00
Anselm R Garbe
8352f2b3a8 hmm, can't decide on the default monitor symbol set 2009-07-02 16:47:00 +01:00
Anselm R Garbe
d4bfde79f3 update 2009-07-02 16:44:57 +01:00
Anselm R Garbe
7ac8c1d4e1 introduced monitor symbols 2009-07-02 16:41:52 +01:00
Anselm R Garbe
16e1ef5d40 minor fix 2009-07-02 14:42:06 +01:00
Anselm R Garbe
1d729384d1 several bugfixes 2009-07-01 19:15:20 +01:00
Anselm R Garbe
25c1eb28f9 some minor fix if xinerama is disabled, still some odd behavior in there 2009-07-01 17:08:10 +01:00
Anselm R Garbe
d719cc9a0e updated year ranges 2009-06-30 20:20:33 +01:00
Anselm R Garbe
9cde6570cc fixed usage of sx, sy, sw, sh 2009-06-30 20:15:31 +01:00
Anselm R Garbe
e408ca97d8 don't draw monitor number, if there is just one monitor 2009-06-30 20:00:11 +01:00
Anselm R Garbe
183dc670a3 fixed order of transient monitor applicaion and rule application 2009-06-30 19:56:19 +01:00
Anselm R Garbe
25947bcfdb hotfix 2009-06-30 19:45:25 +01:00
Anselm R Garbe
1ddfc571ae several simplifications 2009-06-30 19:39:59 +01:00
Anselm R Garbe
21cd59a630 play safe 2009-06-30 15:56:32 +01:00
Anselm R Garbe
6cbe47d481 applied a collection of Christof Musik patches, and fixed an issue reported by waistcoats on IRC 2009-06-30 15:51:09 +01:00
Anselm R Garbe
029655bb22 some cleanup handling for index based mon search 2009-06-27 18:50:50 +01:00
Anselm R Garbe
27db9d4448 using mon in function names for consistency reasons 2009-06-27 18:42:10 +01:00
Anselm R Garbe
176408afa8 fixed several issues with focus handling via mouse, also added sending clients to the right monitor they belong to after mouse moves/resizals 2009-06-27 18:39:03 +01:00
Anselm R Garbe
64674c395b fixed focusmon brokeness 2009-06-27 17:38:18 +01:00
Anselm R Garbe
b9dee2c6f1 tag fix 2009-06-26 16:41:27 +01:00
Anselm R Garbe
a73ff905b0 typo fix 2009-06-25 11:17:42 +01:00
Anselm R Garbe
e3f0445df1 assign selected tags of target monitor to client when tagmon is performed (less obtrusive imho) 2009-06-25 11:10:19 +01:00
Anselm R Garbe
ab06f7444b added some TODOs, some other focus fixes 2009-06-24 20:04:18 +01:00
Anselm R Garbe
a2a3590979 disabled XINULATOR code for now 2009-06-24 19:52:09 +01:00
Anselm R Garbe
e8aafb8e91 made bar based monitor switching working 2009-06-24 19:51:41 +01:00
Anselm R Garbe
18b1312449 several other focus fixes, introduced unfocus() 2009-06-24 19:45:47 +01:00
Anselm R Garbe
80ee95473b some focus fixes 2009-06-24 15:37:32 +01:00
Anselm R Garbe
454a04acdf fixed title rendering on non-active screen 2009-06-24 13:51:45 +01:00
Anselm R Garbe
891831fe62 fixed getclient brokeness 2009-06-24 12:48:01 +01:00
Anselm R Garbe
cdb8e27453 some hotfix cleanup related to wild selmon-> destruction 2009-06-24 11:14:51 +01:00
Anselm R Garbe
5c4913e983 some restack fixes, still odd behavior if n>1 on unmanaging clients 2009-06-23 19:09:30 +01:00
Anselm R Garbe
fa5ae54bbb added some dual head simulator code 2009-06-23 19:00:32 +01:00
Anselm R Garbe
7de534192c simplified left over re-assignment 2009-06-23 17:39:42 +01:00
Anselm R Garbe
54dc0d542c fixed tagmon, re-using detach/detachstack and attach/attachstack 2009-06-23 17:34:20 +01:00
Anselm R Garbe
913333f518 simplified ISVISBLE and nexttiled 2009-06-23 17:20:33 +01:00
Anselm R Garbe
d702f39274 moved clients/stack/sel to Monitor, that's a per monitor structure from now on 2009-06-23 17:17:25 +01:00
Anselm R Garbe
0d8671a5ad declare buf only if XINERAMA support is used 2009-06-23 16:29:32 +01:00
Anselm R Garbe
38e9b67026 if compiled without XINERAMA support assume 1 monitor by default (n = 1) 2009-06-23 16:28:37 +01:00
Anselm R Garbe
a3bbdb1b7b some more refactoring, bar toggle fixes 2009-06-22 20:29:59 +01:00
Anselm R Garbe
d53ceee682 hotfixes 2009-06-22 18:13:05 +01:00
Anselm R Garbe
78f56672b5 changes monitor structure to be a list 2009-06-22 14:58:08 +01:00
Anselm R Garbe
c2fff604a7 we need a tagset per monitor, removed tagset declaration from config.h 2009-06-20 17:02:55 +01:00
Anselm R Garbe
6644a6aa2e some minor fixes regarding the new xinerama support 2009-06-20 16:18:02 +01:00
Anselm R Garbe
3da2453997 several fixes through ISVISIBLE change (takes Monitor into account) 2009-06-20 15:51:34 +01:00
Anselm R Garbe
2ce37bc69e experimental xinerama support, two new actions, Mod1-w/e and Mod1-Shift-w/e 2009-06-20 15:10:04 +01:00
Anselm R Garbe
f27ccc5c60 introduction of Monitor for better Xinerama support, work in progress 2009-06-19 20:15:15 +01:00
Anselm R Garbe
2dbfda72f0 removed MAXTAGLEN 2009-05-29 09:29:22 +01:00
Anselm R Garbe
7df39f3fc7 next version will be 5.6, shortened some very long lines 2009-04-20 11:03:33 +01:00
Anselm R Garbe
0b45199cec Added tag 5.5 for changeset deaa276abac1 2009-04-18 12:49:34 +01:00
Anselm R Garbe
3632d7132f applied Marc Andre Tanners showhide patch, the removal of ntiled 2009-03-19 13:06:15 +00:00
Anselm R Garbe
565697087b applied Gottox' patches, and also removed usegrab 2009-03-17 19:53:00 +00:00
arg@garbe.us
ea0008cba2 applied the patch I missed from Gottox, thanks mate! 2009-03-03 11:22:16 +00:00
Anselm R Garbe
af508c2e82 applied Gottox' resizehints patch, thanks Gottox! 2009-03-02 10:43:48 +00:00
Anselm R Garbe
f0d1d5206f some NULL fixes 2009-02-21 19:20:11 +00:00
Anselm R Garbe
1c80c05587 override_redirect is Bool 2009-02-21 19:15:30 +00:00
Anselm R Garbe
1e350be229 applied Gottox' adjustborder removal patch (thanks!) 2009-02-21 19:12:46 +00:00
a@null
1a26389e2b applied nsz' remark 2009-02-14 11:21:24 +00:00
Premysl Hruby
bf9da23f07 fix of typo, thx to Enno Gottox Boland 2009-02-12 17:26:12 +01:00
a@null
2373940215 Added tag 5.4.1 for changeset 85a78d8afa0f 2009-02-08 12:11:35 +00:00
a@null
90687482ad fixed an issue reported by Nibble, also fixed s/2008/2009/ 2009-02-08 12:11:22 +00:00
a@null
5ab627c06c Added tag 5.4 for changeset 8b7836a471f8 2009-02-08 09:47:02 +00:00
a@null
76d7e80fc4 avoid reverting the border if it's not necessary (avoids some flashing on view()) 2009-02-08 09:46:23 +00:00
a@null
af8049bce8 spotted missing spaces 2008-12-20 12:02:14 +00:00
a@null
2bb51b3246 reverting some border patches 2008-12-20 00:02:56 +00:00
a@null
b16d8282be changed adjustborder to be a macro 2008-12-19 23:56:00 +00:00
a@null
fef4614772 applied yiyus applyrules() patch 2008-12-19 23:41:31 +00:00
a@null
be39dddcc5 implemented noborder for 1 client in the view 2008-12-17 21:25:32 +00:00
a@null
6d209b9b29 made status script example of .xinitrc more useful 2008-12-13 20:20:26 +00:00
a@null
57a0788bd8 ok, using signal.h for portability reasons 2008-12-13 17:44:29 +00:00
a@null
3ad906eede removed unnecessary closure of stdin reported by Frederic Chardon, thx 2008-12-13 17:27:48 +00:00
a@null
0be9fb8797 added sys/signal.h inclusion for BSD compliance 2008-12-13 16:35:34 +00:00
a@null
62a491e36d re-applied Neale's spawn patch, credited Neale in LICENSE 2008-12-12 19:55:03 +00:00
a@null
0b5dcf229f applied Neale Pickett's xprop status reading patch, updated README and dwm.1 accordingly 2008-12-12 19:49:06 +00:00
arg@localhost.localdomain
fda92f46aa applied yiyus fix 2008-12-06 16:20:14 +00:00
Anselm R Garbe
a62ea4062f fix 2008-12-06 11:22:30 +00:00
Anselm R Garbe
7dc28d130f Added tag 5.3.1 for changeset 335301ed102f 2008-12-06 09:33:58 +00:00
Anselm R Garbe
fbce733532 integrated yiyus clearurgent refactoring 2008-12-06 09:32:32 +00:00
arg@localhost.localdomain
e7572804fa reverted spawn 2008-12-06 09:16:48 +00:00
Anselm R Garbe
ed1bef1241 Added tag 5.3 for changeset 4004d6116035 2008-12-04 20:23:08 +00:00
Anselm R Garbe
2b047e460b added Neale Pickett's spawn patch, thanks Neale 2008-12-04 20:15:00 +00:00
Anselm R Garbe
5f74dc5e78 applied Gottox' comment fix (thanks) 2008-11-16 13:22:24 +00:00
Anselm R Garbe
ea8a4ca46a several changes towards 5.3, XINERAMA is disabled by default, introduced usegrab Bool for grabbing the server during mouse-based resizals/movements (disabled by default), continued debugging tile() with resizehints == True and a lot of terminals supporting resizehints, still no optimal solution, I need to think about it, considering recursive algorithm for the space optimization 2008-10-19 12:59:18 +01:00
Premysl Hruby
4883a06221 removed NOBORDER(broken and badly used), introduce WIDTH/HEIGHT macros for computing client size with border added, fixes bug announced by sergey_m 2008-10-15 18:08:24 +02:00
Anselm R Garbe
4dea5324c0 Added tag 5.2 for changeset e4bcaca8e6ef 2008-09-09 20:47:01 +01:00
Anselm R Garbe
53cac17692 using malloc() instead of calloc() and sticking to static initializer and struct assignment, not using *c = (Client){}; right now to avoid some ugly gcc warning, possibly a gcc bug since we are using -std=c99 2008-09-08 22:24:05 +01:00
Anselm R Garbe
83abfc05eb applied XGetWMNormalHints fix 2008-09-07 09:53:59 +01:00
Anselm R Garbe
862b0d541d I prefer doing the check in showhide 2008-09-06 09:34:49 +01:00
Anselm R Garbe
c1c6fdc5d8 applied Donald Chai's showhide patch in slightly modified ways 2008-09-06 09:21:32 +01:00
Anselm R Garbe
9a4d07d9de applied Martin Hurton's checkotherwm simplification 2008-09-06 08:59:51 +01:00
Anselm R Garbe
30410108eb applied Peter Hartlichs aspect revert fix 2008-09-02 22:36:06 +01:00
Anselm R Garbe
753e0e048e applied Gottox' grabkey patch 2008-09-02 18:47:01 +01:00
Anselm R Garbe
d15d4ba45a applied yiyus tagbar patch 2008-09-01 22:18:50 +01:00
arg@localhost.localdomain
815f9c054d merged merge 2008-09-01 08:22:11 +00:00
Anselm R Garbe
addc52c948 fixed 2008-08-29 11:29:42 +01:00
Anselm R Garbe
26f41c9055 checking result of XGetClassHint, removed some obsolete lines in initfont() 2008-08-29 10:13:47 +01:00
Anselm R Garbe
73ec124ae9 merged my changes 2008-08-27 15:03:35 +01:00
Anselm R Garbe
ec11a3470c introduced NOBORDER macro to hide the nasty - 2 * c->bw in various calculations, moved tagset to config.def.h 2008-08-27 12:52:44 +01:00
Premysl Hruby
4b3b597da3 WM_NAME is builtin atom 2008-08-25 11:43:45 +02:00
Anselm R Garbe
288cf78b18 grabbuttons() and grabkeys() are now independent from prior numlockmask initialization 2008-08-25 09:44:23 +01:00
Anselm R Garbe
6411aa921b reverted some resize() changes, reverted setlocale removal 2008-08-25 09:37:39 +01:00
Anselm R Garbe
db5db8806f applied Peter Hartlich's patch regarding aspect calculation with slight modifications 2008-08-23 09:54:55 +01:00
Anselm R Garbe
258c338030 removed artifact from wmii 2008-08-23 09:33:05 +01:00
Anselm R Garbe
85da537856 changed grabkeys, removed initmodmap 2008-08-23 09:31:28 +01:00
Anselm R Garbe
2b4157eccd applied Peter Hartlich's initmodmap patch 2008-08-23 09:26:11 +01:00
Premysl Hruby
0f26de991f applied fix of toggletag by Jan Kaliszewski 2008-08-22 15:26:30 +02:00
Anselm R Garbe
840f937a98 Martin Hurtons typo fix 2008-08-18 19:28:57 +01:00
Anselm R Garbe
6975a7e31a fixed error I did when applying Martin Hurton's drawtext patch 2008-08-18 19:23:03 +01:00
Anselm R Garbe
47f63dce55 applied Martin Hurtons resizemouse patch 2008-08-18 19:19:15 +01:00
Anselm R Garbe
02a8ca95cf applied Martin Hurton's movemouse() patch 2008-08-18 18:23:39 +01:00
Anselm R Garbe
2ce50a9cad using None instead of 0 for trans 2008-08-18 10:22:46 +01:00
Anselm R Garbe
bfa5869da1 abc... 2008-08-18 10:21:24 +01:00
Anselm R Garbe
087a55f8d3 removed the i = textnw... as remarked by Martin Hurton 2008-08-18 10:16:36 +01:00
Anselm R Garbe
6d7285fd6e applied Martin Hurton's scan() patch with slight modifications 2008-08-18 10:14:51 +01:00
Anselm R Garbe
69c7b4b0ba changed order of variables in drawtext 2008-08-18 10:00:10 +01:00
Anselm R Garbe
97699e5b1b applied Martin Hurton's drawtext() patch 2008-08-18 09:55:36 +01:00
Anselm R Garbe
2dc7f42fd7 applied Martin Hurton's view() simplification, not checking arg 2008-08-18 09:49:44 +01:00
Anselm R Garbe
9f3a5cb754 making a comment more explicit 2008-08-18 09:39:52 +01:00
Anselm R Garbe
b48fa3f101 removed setlocale() stuff, not necessary if Xmb in use 2008-08-18 09:31:55 +01:00
Anselm R Garbe
051a404b66 added a comment about FAQ regarding mfact meaning 2008-08-18 09:11:15 +01:00
Anselm R Garbe
d8d733c34f added some comments regarding FAQ about s{x,y,w,h}, w{x,y,w,h}, b{y,h,lw} 2008-08-18 09:10:21 +01:00
Anselm R Garbe
bb01e5a16f initialize trans with 0 2008-08-18 08:57:34 +01:00
Premysl Hruby
06f7eed103 fix of XGetTransientForHint in manage() 2008-08-14 22:35:52 +02:00
Premysl Hruby
0ffa6d1393 applied cleanup from M. Hurton and S. Nagy 2008-08-14 12:36:49 +02:00
Premysl Hruby
15ce143620 fixes using arg->i instead of arg->ui 2008-08-12 21:24:40 +02:00
anselm@anselm1
63d7190231 applied Johannes Hofmann's patch, please test 2008-08-04 17:39:36 +01:00
Anselm R Garbe
b279cef670 made readin a config.h variable 2008-08-02 19:12:15 +01:00
Anselm R Garbe
6254ef9dc7 Added tag 5.1 for changeset ce355cea9bb8 2008-07-29 19:19:00 +01:00
Anselm R Garbe
4a2902efe4 forcing fullscreen windows to bw=0, though most fullscreen apps are broken anyways 2008-07-29 11:32:22 +01:00
Anselm R Garbe
6fad4c49f1 potential crash fix if xinerama behaves broken, though I doubt it 2008-07-18 20:18:45 +01:00
Premysl Hruby
78f0f8595f make hg tip compilable with default config 2008-07-18 10:57:32 +02:00
Anselm R Garbe
7ecadcee39 local use of xidx is useless, got rid of it, falling back to screen 0 if pointer query fails for whatever reason 2008-07-16 18:39:48 +01:00
Anselm R Garbe
c86ed46a1b got rid of compile time xidx configuration, querying mouse pointer instead 2008-07-16 18:33:51 +01:00
Anselm R Garbe
9086f98068 reverted uint redefinition 2008-07-16 18:17:42 +01:00
anselm@aab
9aa4a9043d applied anydot's urgency hint patch, thanks! 2008-07-13 18:08:55 +01:00
Anselm R Garbe
d5893f55be renamed eprint die 2008-07-03 17:05:56 +01:00
Anselm R Garbe
f529d41ca1 simplified detach() 2008-07-03 10:58:35 +01:00
Anselm R Garbe
45768ee04b removed aux* stuff from Client 2008-07-02 11:54:36 +01:00
Anselm R Garbe
a6d23fb61c removed useless comment 2008-07-02 11:19:02 +01:00
Anselm R Garbe
bf76cefe47 minor fix to view() 2008-07-02 11:06:46 +01:00
Anselm R Garbe
9bb0f20515 applied Frederik Ternerot's grabbuttons patch with slight modifications 2008-07-01 19:26:17 +01:00
Anselm R Garbe
2431ae7df7 locale update 2008-06-30 09:57:45 +01:00
Anselm R Garbe
829b6b57e7 removed useless characters 2008-06-24 12:40:48 +01:00
Anselm R Garbe
7b4c512e62 applied James Turner's dwm.1 patch, thanks James! 2008-06-23 08:59:19 +01:00
Anselm R Garbe
7f7c3140a9 fix of monocle 2008-06-22 09:33:49 +01:00
Anselm R Garbe
277155cf77 another merge 2008-06-22 09:29:35 +01:00
Anselm R Garbe
0c38ec7cd6 does this fix anything? 2008-06-22 09:29:06 +01:00
Anselm R Garbe
deef4c9bfd fixed Gottox' buttonpress/ClkTagBar code 2008-06-21 13:49:43 +01:00
Anselm R Garbe
b86c818599 applied Gottox' ClkTagBar patch 2008-06-20 16:52:07 +01:00
Anselm R Garbe
c2a916bf30 made arrange again like it was once 2008-06-19 14:58:19 +01:00
Anselm R Garbe
2bd46d1ce6 fix 2008-06-19 14:13:07 +01:00
Anselm R Garbe
6e0ce46365 use sel instead of seeking the list 2008-06-19 14:07:55 +01:00
Anselm R Garbe
c853d5e9bb resize should apply if !banned 2008-06-19 14:01:40 +01:00
Anselm R Garbe
31da0b7525 applied Gottox patch 2008-06-19 12:28:56 +01:00
Anselm R Garbe
12ea925076 untested monocle 2008-06-19 11:38:53 +01:00
Anselm R Garbe
79ecbeca7e non-zero 2008-06-19 09:11:11 +01:00
Anselm R Garbe
cf98ea2a9c Added tag 5.0 for changeset 06eb9644e2da 2008-06-18 18:22:54 +01:00
Anselm R Garbe
d8fad9bf7a branch merge 2008-06-17 11:20:18 +01:00
Anselm R Garbe
f25cc5678f tiled layout resizehints should be respected by default 2008-06-17 11:19:17 +01:00
Anselm R Garbe
5a92420fce restored y-coordinate fixing of client windows 2008-06-17 09:57:13 +01:00
arg@suckless.org
ae1d865ac0 s/tags ref/tags mask/ 2008-06-15 23:27:08 +02:00
Anselm R Garbe
1ce173402f updated man page regarding Mod1-m 2008-06-15 18:59:52 +01:00
Anselm R Garbe
a06b9193c7 minor fixes towards 5.0 2008-06-15 10:52:57 +01:00
Anselm R Garbe
43bb77a569 removed explicit warp in movemouse 2008-06-14 15:15:15 +01:00
Anselm R Garbe
e3da222c1e removed scroll-wheel based focussing on window title clicks 2008-06-14 11:25:42 +01:00
Anselm R Garbe
66608a60fe fix of swapped focusstack mouse buttons 2008-06-14 11:23:16 +01:00
Anselm R Garbe
b6aa84e51b removed the ButtonPressMask for root windows as well 2008-06-14 11:22:22 +01:00
Anselm R Garbe
9ff5143acb removed root window click handling 2008-06-14 11:21:50 +01:00
Anselm R Garbe
1edf6a7866 removed font and color definitions 2008-06-14 10:38:18 +01:00
Anselm R Garbe
4db2f44277 minor fix 2008-06-13 17:37:43 +01:00
Anselm R Garbe
1f1a132784 fixed tag click handling, however ClkRootWin doesn't work for me 2008-06-12 23:04:55 +01:00
Anselm R Garbe
512541bfbd update 2008-06-12 16:37:03 +01:00
Anselm R Garbe
709da0b858 some bugfixes of the patch application yesterday 2008-06-12 13:10:14 +01:00
Anselm R Garbe
5cd65f8cd8 integrated yiyus mouse.diff (though the bar click handling is slightly broken, I'm to tired to debug it now, yiyus could you please?) 2008-06-11 20:41:28 +01:00
Anselm R Garbe
e3838e8585 made Xinerama screen index customizable 2008-06-11 19:55:07 +01:00
Anselm R Garbe
016dca4f69 removed trailing spaces reported by Soleen 2008-06-11 19:47:20 +01:00
Anselm R Garbe
8f052596b2 crash fix 2008-06-11 19:42:24 +01:00
Anselm R Garbe
9463d5354b made lt visible again in config.def.h 2008-06-11 17:01:30 +01:00
Anselm R Garbe
d662f98d89 added nsz' patch 2008-06-11 14:10:18 +01:00
Anselm R Garbe
e5a965a274 added SHCMD support for pipe-based commands due the new spawn() versio 2008-06-11 13:20:17 +01:00
Anselm R Garbe
5d422bb1ce using foo layout during cleanup (suggested by Gottox), add Arg->v handling for togglelayout() suggested by anydot 2008-06-11 10:26:57 +01:00
Anselm R Garbe
38a43c2dcc lt will point to a foo-layout during cleanup now (Gottox' suggestion), and togglelayout respects Arg->v 2008-06-11 10:25:02 +01:00
Anselm R Garbe
c56533615f integrated Peter Hartlich's patch, removed const char *c from union, simplified togglelayout 2008-06-11 09:34:00 +01:00
Anselm R Garbe
a8e0772c4d applied anydot's patchset.diff 2008-06-11 09:12:06 +01:00
arg@suckless.org
98e7950be8 final version -- Gottox verified it using the test driver 2008-06-09 11:24:33 +02:00
arg@suckless.org
88e6eb4a3a revert of introduced problem 2008-06-09 11:05:20 +02:00
arg@suckless.org
0840c1367c applied nsz' textnw patch thank you 2008-06-09 10:26:01 +02:00
arg@suckless.org
077d3e435b updated the for-loop with Gottox' proposal 2008-06-09 10:05:40 +02:00
arg@suckless.org
d26b60b43e minor change 2008-06-06 11:49:31 +02:00
arg@suckless.org
32f36ab2d5 applied nsz's patches (many thanks!) 2008-06-04 11:49:46 +02:00
arg@suckless.org
08bcf721b4 small change to drawtext 2008-06-02 12:19:02 +02:00
Anselm R Garbe
fc578c57e4 fixed the tile() issue with xpdf 2008-06-01 17:51:22 +01:00
Anselm R Garbe
c8eaab21b6 using anydot's memcpy-approach in drawtext, however it still looks awkward to me 2008-06-01 17:41:15 +01:00
Anselm R Garbe
c26e22ccee Gottox' drawtext simplification 2008-06-01 11:58:19 +01:00
Anselm R Garbe
c2784e4a38 applied noviewprev.diff, fix.diff and unusedflags.diff 2008-06-01 10:54:02 +01:00
Anselm R Garbe
6e9387793b fix 2008-05-31 17:37:13 +01:00
Anselm R Garbe
92f3c181c3 lt->arrange in mfact 2008-05-31 17:05:28 +01:00
Anselm R Garbe
d589f7679a isfixed implies isfloating 2008-05-30 23:03:03 +01:00
Anselm R Garbe
75690c808d applied nibbles fixes, slightly modified 2008-05-29 18:42:53 +01:00
Anselm R Garbe
fde58d5e63 applied yiyus tip patch from tue 2008-05-29 18:22:51 +01:00
Anselm R Garbe
e1002745fa core dump fix in cleanup 2008-05-28 10:45:18 +01:00
Anselm R Garbe
940a4cc6c6 updated the initial comment to reflect the use of bit arrays 2008-05-26 11:43:51 +01:00
Anselm R Garbe
64243ab05b slight changes 2008-05-26 11:42:02 +01:00
Anselm R Garbe
32c5046635 removed bx and bw, unnecessary 2008-05-26 10:28:18 +01:00
Anselm R Garbe
6c8618f502 renamed domax into ismax 2008-05-26 10:13:51 +01:00
Anselm R Garbe
9189f7a12d simplified tile() 2008-05-26 10:10:33 +01:00
Anselm R Garbe
2d4faae522 removed Layout->updategeom, unnecessary 2008-05-26 09:54:34 +01:00
Anselm R Garbe
5d2385b636 removed TEXTW 2008-05-26 09:45:34 +01:00
Anselm R Garbe
0fe2e783e9 applied yiyus domax patch with slight modifications 2008-05-26 09:39:57 +01:00
Anselm R Garbe
cd3d83f571 replaced isvisible with a macro 2008-05-22 14:15:30 +01:00
Anselm R Garbe
0a9ef560c0 removed emallocz 2008-05-22 14:10:00 +01:00
Anselm R Garbe
0528a37c79 s/int/uint/ in config.h 2008-05-22 14:02:31 +01:00
Anselm R Garbe
56b2fece9e removed debug output, sanitized tag limit check 2008-05-22 13:35:45 +01:00
Anselm R Garbe
9f569fac74 setmfact argument was wrong 2008-05-22 12:00:50 +01:00
Anselm R Garbe
48d0c56eac Key.mod is uint, Client.[old]bw is int 2008-05-22 11:50:18 +01:00
Anselm R Garbe
825d6cb93a s/unsigned long/ulong/ 2008-05-22 11:16:23 +01:00
Anselm R Garbe
f852504014 s/nextunfloating/nexttiled/, changed zoom() behavior 2008-05-22 11:12:22 +01:00
Anselm R Garbe
c3fa9e879f s/unsigned int/uint/ 2008-05-22 11:10:08 +01:00
Anselm R Garbe
8e05f6c592 s/void */const void */ 2008-05-22 11:08:07 +01:00
Anselm R Garbe
39d1ecd5b0 applied Gottox bitmask + void *arg patch 2008-05-22 11:04:19 +01:00
anselm@anselm1
103fb58a44 some minor fixes 2008-05-19 20:29:57 +01:00
anselm@anselm1
5f55af40ae simplification 2008-05-19 20:13:24 +01:00
anselm@anselm1
f806a17692 reverted dist target in Makefile 2008-05-19 20:08:31 +01:00
anselm@anselm1
822101dd5b merged tile.c again into dwm.c 2008-05-19 20:07:12 +01:00
Anselm R Garbe
6bdef73a4f take bar into account 2008-05-19 17:27:30 +01:00
Anselm R Garbe
234b12eb73 be more polite to clients which like to appear outside the window area, but still on the screen 2008-05-19 17:23:49 +01:00
Anselm R Garbe
bd4deaebfc fixed comment 2008-05-19 15:36:45 +01:00
Anselm R Garbe
499315c22c fix 2008-05-19 15:09:16 +01:00
Anselm R Garbe
f22d047d41 make it easier for the user, if Xinerama support is given, always use the screen 0 as window area/bar area, everything else can be used for floating clients 2008-05-19 15:05:46 +01:00
Anselm R Garbe
4a5c8d84db improving space usage if master is left of stack (default) 2008-05-19 14:44:53 +01:00
Anselm R Garbe
71365a524f only snap within window area 2008-05-19 13:41:58 +01:00
Anselm R Garbe
3afca3e6a1 s/DEFGEOM/CUSTOMGEOM/ 2008-05-19 13:37:46 +01:00
Anselm R Garbe
bdc80bdad6 update 2008-05-19 13:32:43 +01:00
Anselm R Garbe
64707da963 updatetilegeom should be fine for setmfact 2008-05-19 12:42:26 +01:00
Anselm R Garbe
549726869b recent changes, introduced togglebar, changed some defines into variable declarations where possible 2008-05-19 12:34:54 +01:00
Anselm R Garbe
42cb2bd3be new stuff 2008-05-17 14:51:12 +01:00
Anselm R Garbe
585294ce0f removed the <M> togglelayout call 2008-05-17 14:50:37 +01:00
Anselm R Garbe
a864a82b34 s/tilegeom/updatetilegeom/ 2008-05-17 14:48:04 +01:00
Anselm R Garbe
bd67a82fb5 removed monocle for now 2008-05-17 14:46:06 +01:00
Anselm R Garbe
14d8d828ab removed the exact focus mechanism of next/prev window 2008-05-17 14:41:41 +01:00
Anselm R Garbe
4246affc15 moved all tile()-related stuff into tile.c which is included from config.def.h, the default dwm is now nearly independent from the arrange() algorithm in use 2008-05-17 14:38:22 +01:00
Anselm R Garbe
42c4b31003 removed tileh, renamed tilev into tile again, removed counttiles, tilemaster 2008-05-17 14:23:05 +01:00
Anselm R Garbe
a785a0d712 removed Layout->isfloating 2008-05-17 14:17:18 +01:00
Anselm R Garbe
489ac07e83 removed reapply() -- unnecessary 2008-05-17 14:06:41 +01:00
Anselm R Garbe
349d768b57 renamed setlayout into togglelayout 2008-05-17 14:04:27 +01:00
Anselm R Garbe
6dfa7cac56 removed temporary wildcard handling 2008-05-15 10:51:37 +01:00
Anselm R Garbe
71681c21a5 added wild-card handling for tags 2008-05-15 10:47:26 +01:00
Anselm R Garbe
704781875c applied nsz's another style patch 2008-05-14 11:24:35 +01:00
Anselm R Garbe
d7cc0f6416 applied nsz's style.diff patch 2008-05-13 14:33:02 +01:00
Anselm R Garbe
6b79f3f326 just added a comment 2008-05-13 11:27:20 +01:00
Anselm R Garbe
446fa8c671 minor fixes 2008-05-11 20:27:01 +01:00
Anselm R Garbe
fa244aa7fb having monocle on Mod1-m 2008-05-11 20:25:24 +01:00
Anselm R Garbe
7ac4f8a4af hotfix 2008-05-11 20:22:20 +01:00
Anselm R Garbe
7eb26288fc removed Geom stuff, introduced updategeom() again, still view is somewhat broken? 2008-05-11 20:20:53 +01:00
Anselm R Garbe
93a4fe1052 cleaned up config.def.h 2008-05-11 14:54:45 +01:00
Anselm R Garbe
5602f44b29 implemented exact focus next, if arg != NULL to focus{next,prev} 2008-05-11 14:40:37 +01:00
Anselm R Garbe
b848f4bda8 applied the proposal by nsz 2008-05-06 15:52:44 +01:00
Anselm R Garbe
86c4797f2c applied JUCE patch 2008-05-06 15:13:36 +01:00
Anselm R Garbe
c094ed2473 simplification of view() as proposed by anydot 2008-04-27 18:36:11 +01:00
Anselm R Garbe
bfd6079a15 applied yiyus tagset patch 2008-04-27 18:33:31 +01:00
Anselm R Garbe
7f70d90219 applied yiyus fgeom patch 2008-04-27 18:22:52 +01:00
Anselm R Garbe
858251de46 applied dfenze drawtext simplifications 2008-04-27 18:00:45 +01:00
anselm@anselm1
d26c28c1e7 this is the correct way 2008-04-20 19:09:30 +01:00
anselm@anselm1
b6335776e4 copyright notice is in LICENSE 2008-04-20 19:09:00 +01:00
anselm@anselm1
c059625128 applied Ph's seltags-simplification with some modifications 2008-04-20 18:35:11 +01:00
anselm@anselm1
874837f653 applied Ph's MIN/MAX patch, nice work! 2008-04-20 18:28:21 +01:00
anselm@anselm1
5fa559dbfc applied Ph's patch regarding geom and lt initialization 2008-04-20 18:23:59 +01:00
anselm@anselm1
146ff227fe applied Gottox' applyrules() fix 2008-04-20 18:17:33 +01:00
Anselm R Garbe
bb0a328978 geometry fix proposed by Jukka 2008-04-08 11:49:35 +01:00
Anselm R Garbe
721b208478 applied applyrules-fix by Jukka, thank you Jukka! 2008-04-07 09:05:41 +01:00
Anselm R Garbe
6229ed20c2 fix 2008-04-05 19:04:53 +01:00
Anselm R Garbe
940240e5e6 applied the proposed monocle patch from the mailinglist 2008-04-05 18:23:31 +01:00
Anselm R Garbe
08c596ed10 next version is 5.0 2008-04-04 11:15:37 +01:00
anselm@anselm1
9ce6abb95c Added tag 4.9 for changeset 22c669b2dd36 2008-04-03 21:57:32 +01:00
Anselm R Garbe
0e21794e02 yet another cleanup 2008-04-03 14:39:19 +01:00
Anselm R Garbe
d477fb6927 some cleanup changes 2008-04-03 14:38:58 +01:00
anselm@anselm1
3d6630b7d2 uncommented dual layout in preparation of dwm 4.9 2008-04-02 22:18:09 +01:00
anselm@anselm1
c982bb1389 applied Peter Hartlich's simplification patch of setmfact and his revival of MFACT, appliead Janness Hofmann's simplification of grabbuttons() -- thanks guys! 2008-04-02 22:10:55 +01:00
Anselm R Garbe
6cf73e706a aspects hints seem broken for fullscreen apps 2008-04-01 15:46:00 +01:00
Anselm R Garbe
a520ba3c0b removed uneccessary line 2008-03-31 10:09:48 +01:00
Anselm R Garbe
0c71b16b92 bugfix 2008-03-25 09:41:14 +00:00
Anselm R Garbe
00c28a7ef2 setmfact should not have any effect if in floating layout 2008-03-24 14:31:02 +00:00
Anselm R Garbe
5a3a2d6b63 minor fix 2008-03-24 14:24:57 +00:00
Anselm R Garbe
a355782a77 revival of mfact and setmfact 2008-03-24 14:23:28 +00:00
Anselm R Garbe
20cd336087 setlayout and setgeom are now togglable again 2008-03-24 13:49:19 +00:00
Anselm R Garbe
a6a216f28c geom indicator and layout indicator is only displayed if there are several geoms/layouts 2008-03-24 13:33:32 +00:00
anselm@anselm1
2c2063bc75 hotfix of idxoftag 2008-03-22 16:53:37 +00:00
anselm@anselm1
e6ede461a9 blw/bgw calculation bugfix 2008-03-22 12:47:12 +00:00
Anselm R Garbe
6877205e9d updated configurenotify 2008-03-19 09:27:17 +00:00
anselm@anselm1
fb5f99d935 minor bugfix in applyrules 2008-03-17 23:45:46 +00:00
Anselm R Garbe
7ebab7533a added sample of {grow,shrink}master to config.def.h 2008-03-17 17:33:25 +00:00
Anselm R Garbe
9fa5ca3538 renamed c->border into c->bw, fixed monocle to subtract c->bw from each h/w value 2008-03-17 16:29:50 +00:00
Anselm R Garbe
fe6b0c0fc1 geoms are now drawed in the status bar 2008-03-17 16:26:06 +00:00
Anselm R Garbe
aa2395b6a8 removed the string-based setgeom approach, introduced a new Geom type instead and a helper macro 2008-03-17 14:56:11 +00:00
Anselm R Garbe
dba22848c7 made the string-based setgeom working 2008-03-15 14:17:42 +00:00
Anselm R Garbe
33b1960220 some experimental state DO NOT USE THIS, I plan to have a nicer interface to change geometries 2008-03-14 17:17:08 +00:00
Anselm R Garbe
e237b2a76f some changes towards 4.9 2008-03-14 14:35:45 +00:00
Anselm R Garbe
dd9ee6d248 Added tag 4.8 for changeset 607015ddb091 2008-03-13 16:56:11 +00:00
Anselm R Garbe
1380569133 removed the comment again 2008-03-13 16:30:29 +00:00
Anselm R Garbe
831428b00c some polishing in tileh/tilev 2008-03-13 13:59:40 +00:00
Anselm R Garbe
69439715c0 minor bugfix 2008-03-13 13:01:42 +00:00
Anselm R Garbe
f2e98f48fb added a new comment 2008-03-13 12:47:41 +00:00
Anselm R Garbe
c19d4b2930 some cleanup 2008-03-13 12:45:30 +00:00
Anselm R Garbe
f77a3d0a62 updated my geoms function 2008-03-13 10:25:50 +00:00
Anselm R Garbe
8aa1533879 update 2008-03-13 10:24:02 +00:00
Anselm R Garbe
2fc9cffdeb set layout already here 2008-03-13 10:22:10 +00:00
Anselm R Garbe
3c5b6f03ba well I use a different default tile 2008-03-13 10:21:03 +00:00
Anselm R Garbe
02673538bc added updatebarpos() 2008-03-13 10:19:05 +00:00
Anselm R Garbe
95eae7b9d2 removed all defines of geoms, implemented setgeoms() instead, added config.anselm.h to show how I'd like to see that people edit their geoms 2008-03-13 10:11:02 +00:00
Anselm R Garbe
59107755c8 some polishing 2008-03-12 16:04:06 +00:00
Anselm R Garbe
d05d09b205 updated dwm(1) 2008-03-12 15:34:36 +00:00
anselm@anselm1
47b1974446 added bx, by, bw, wx, wy, ww, wh, mx, my, mw, mh, mox, moy, mow, moh, tx, ty, tw, th, wx, wy, ww, wh ad variables 2008-03-11 21:52:10 +00:00
Anselm R Garbe
247ba66c08 changed config.def.h 2008-03-06 19:22:00 +00:00
Anselm R Garbe
d7b074fcce new stuff 2008-03-06 19:20:14 +00:00
Anselm R Garbe
c9170189bf implemented setlayout in the way proposed on the ml, split tile() into two functions, a third will follow soon 2008-03-06 18:53:15 +00:00
Anselm R Garbe
f7a45ff28b allow for vstack 2008-03-06 11:56:43 +00:00
Anselm R Garbe
add7df6e9b added some comments what the TODOs are for 4.8 2008-03-06 11:56:00 +00:00
Anselm R Garbe
3a79b82721 changed config.def.h 2008-03-05 21:14:57 +00:00
Anselm R Garbe
b31b430592 integrated the new -x -y -w toggles of dmenu into my setup 2008-03-05 19:03:45 +00:00
Anselm R Garbe
88c8ead3e8 removed some more useless clunk 2008-03-05 18:48:33 +00:00
Anselm R Garbe
2e95837220 implemented the stuff as I discussed on dwm@ 2008-03-05 18:31:08 +00:00
Anselm R Garbe
5d9ae3f3b7 fixed urgent hint handling 2008-03-05 13:13:13 +00:00
Anselm R Garbe
2e38296edd renamed maximise to monocle again. 2008-03-05 10:31:37 +00:00
Anselm R Garbe
59aa02a075 fixed urgency hint, though Xinerama integration is still ongoing 2008-03-05 10:22:21 +00:00
anselm@anselm1
e3c2d327f6 next on TODO 2008-03-05 00:11:44 +00:00
anselm@anselm1
295ad21092 renamed MAXLEN into MAXTAGLEN (backward compliance) 2008-03-04 21:41:36 +00:00
anselm@anselm1
39af3c2607 renamed monocle into maxmise, documented the keybindings in dwm(1) 2008-03-04 21:40:49 +00:00
Anselm R Garbe
96ee9d888c monocle goes mainstream 2008-03-04 18:58:23 +00:00
Anselm R Garbe
a82cba2759 fixed applyrules bug 2008-03-04 18:13:07 +00:00
anselm@anselm1
f7c097e802 removed View cruft, now back to the roots 2008-03-03 21:40:37 +00:00
Anselm R Garbe
da1b3fa437 made tag names snappier 2008-02-29 11:59:28 +00:00
anselm@anselm1
ad0a2fa042 fixed some issues nsz reported in IRC log 2008-02-28 21:44:52 +00:00
anselm@anselm1
9804726c82 well, AIM_XINERAMA should not be enabled 2008-02-28 21:39:45 +00:00
anselm@anselm1
7bc272a4e4 made the basics of the tagging concept working -- if people want dynamic tags, that's even possible with this concept, the vtags[] array needs to be modified during runtime for this -- the new code is quite experimental, ugly and needs polishing 2008-02-28 21:38:53 +00:00
anselm@anselm1
f1719ac2de removed initags -- we autoselect the first tag in each view instead 2008-02-28 20:02:57 +00:00
Anselm R Garbe
d99ec61482 a small fix to buttonpress 2008-02-28 17:13:13 +00:00
Anselm R Garbe
2f70a14ee1 some more changes towards a better dwm 2008-02-28 17:07:30 +00:00
anselm@anselm1
00ca643bd7 proceeded, though we still miss a real Tag struct 2008-02-27 21:50:50 +00:00
anselm@anselm1
0271ac0ed7 disabled AIM_XINERAMA 2008-02-26 22:57:23 +00:00
anselm@anselm1
d5178292ed simplified dwm 2008-02-26 22:51:23 +00:00
anselm@anselm1
2bfd3fffbf certain fixes, though still a lot of the mutex stuff missing 2008-02-25 22:19:17 +00:00
anselm@anselm1
a3d8c05a95 pushing my changes of tonight upstream (hg tip is NOW very UNSTABLE -- but those changes are necessary to get a decent multihead support) -- I renamed Monitor into View, to reflect in a better way the dwm terminology of the past 2008-02-23 23:11:27 +00:00
anselm@anselm1
fd01413fae fixed Gottox' mail address 2008-02-22 19:32:53 +00:00
Anselm R Garbe
d6e24f7116 well typo fix 2008-02-22 15:27:50 +00:00
Anselm R Garbe
c43d7b7587 added Gottox to Copyright holders after all his contributions, applied his last patch 2008-02-22 15:26:27 +00:00
Anselm R Garbe
de5b294edc some other fixes, resize contains a minor bug 2008-02-22 10:34:12 +00:00
Anselm R Garbe
8e0f8ffcc6 crash fix 2008-02-22 10:15:59 +00:00
Anselm R Garbe
dd21823536 made arrange() Monitor-dependent as well, fixed the movemouse/resizemouse issues 2008-02-22 10:03:42 +00:00
Anselm R Garbe
9cb9c32ee7 minor 2008-02-21 19:19:46 +00:00
Anselm R Garbe
4076e2ff60 applied Gottox' monitor.diff patch (thanks btw) 2008-02-21 14:33:59 +00:00
Anselm R Garbe
55edd2d6ec made restack, drawbar also Monitor-related only 2008-02-21 10:31:06 +00:00
Anselm R Garbe
2e8e5509d9 changed arrange functions to contain the Monitor as first argument 2008-02-21 10:14:42 +00:00
Anselm R Garbe
4426032450 applied Jukka's zoom-patch 2008-02-20 13:48:52 +00:00
Anselm R Garbe
e0f0397896 resize handles offscreen issues 2008-02-20 08:13:41 +00:00
Anselm R Garbe
ca3e847e45 applied some necessary changes 2008-02-20 08:09:26 +00:00
Anselm R Garbe
c2737b7b93 removed Monitor->dc, unnecessary 2008-02-18 17:08:22 +00:00
Anselm R Garbe
191cb9ce28 removed Monitor->root, since we do not support classical multihead 2008-02-18 16:47:16 +00:00
Anselm R Garbe
6ab163c695 some drawbar() polishing, and certain related fixes 2008-02-15 16:00:02 +00:00
Anselm R Garbe
e8244395e4 urgency hook handling needs also to invert the square if present 2008-02-13 20:34:17 +00:00
Anselm R Garbe
954db46bac Chris pointed me to the fact, that the window geoms calculation can be done once for each monitor, so I applied this remark 2008-02-11 20:57:56 +00:00
Anselm R Garbe
508922b90d fixed missing else branch 2008-02-11 20:51:04 +00:00
Anselm R Garbe
4adfdc9d95 applied dme's patch to prevent changing prevtags if nothing actually changed 2008-02-11 20:48:22 +00:00
Anselm R Garbe
c619363d15 applied dwm-4.8-snaptileds.diff 2008-02-11 20:43:41 +00:00
anselm@aab
012710a3ce implemented urgent hint handling (with multihead support) 2008-02-11 20:34:17 +00:00
anselm@aab
c2c54cc0fa got initial Xinerama support working, though there is a lot work todo 2008-02-11 15:55:42 +00:00
anselm@anselm1
a62630ae92 some more polishing/consistency changes 2007-12-22 14:40:44 +00:00
anselm@anselm1
62b18fb9d4 proceeded with multihead/Xinerama support 2007-12-22 14:30:47 +00:00
anselm@anselm1
e0d6451086 removed maximize, there will be monocle soon 2007-12-22 12:52:14 +00:00
anselm@anselm1
7a496e9777 fixed wrong tagging stuff 2007-12-22 12:49:04 +00:00
anselm@anselm1
308f95ae5a added dmenu_run to config.h 2007-12-22 12:26:24 +00:00
anselm@anselm1
40a734bca9 root window and screen have to be in Monitor struct, we want side-by-side Xinerama and Multihead support (only Xinerama when enabled and present) 2007-12-21 20:45:46 +00:00
anselm@anselm1
985e330524 merged Christof Musik's Xinerama support patches, though this needs some polishing! 2007-12-21 12:54:45 +00:00
Anselm R. Garbe
5f19423c7b simplified Mod-m 2007-12-09 13:39:29 +01:00
Anselm R. Garbe
d66ad1457e implemented reapply for re-applying the tagging rules during runtime, Mod-r 2007-12-08 20:11:56 +01:00
Anselm R. Garbe
8497f9f781 next version will be 4.8 2007-12-08 19:59:51 +01:00
Anselm R. Garbe
91bb749e97 Added tag 4.7 for changeset d6d3085307d8 2007-11-21 21:19:03 +01:00
Anselm R. Garbe
68ff133857 fixed focus steeling bug done by clients like opera 2007-11-17 19:59:13 +01:00
Anselm R. Garbe
4380db468a removed support for the NetSupportingWmCheck stuff, netbeans, argouml and others also don't work with compiz, so it is Suns problem to provide a fix 2007-11-17 18:59:51 +01:00
Anselm R. Garbe
123a565bb9 yeah compiz didn't did the trick, but identifying dwm as LookingGlass (LG3D) 2007-11-15 20:38:25 +01:00
Anselm R. Garbe
d0e0505301 foo 2007-11-15 19:26:44 +01:00
Anselm R. Garbe
762b66ae7c hack that adds NET_SUPPORTING_WM_CHECK handling, dwm identifies itself as compiz, hence I believe this might workaround the JDK 1.6+ XToolkit bug 2007-11-15 18:57:31 +01:00
Anselm R. Garbe
cb4951dd54 applied Ritesh's patch to stext handling with some minor modifications 2007-11-10 20:21:22 +01:00
Anselm R. Garbe
667da18b31 initialize prevtags in setup, now users can setup which seltags should be selectedin config.h 2007-11-10 19:31:01 +01:00
Anselm R. Garbe
e9a0733506 Using a new tags definition (const char [][MAXTAGLEN] - thanks go to Szabolcs! 2007-11-10 19:16:11 +01:00
arg@suckless.org
198502f41d moved LENGTH to dwm.c, moved prevtags to dwm.c 2007-11-07 09:49:53 +01:00
Anselm R. Garbe
35efafe8ac we check variable == value, and not the other way - the other way is for beginner programmers. 2007-11-04 17:49:56 +01:00
Anselm R. Garbe
951d022dfc removed a misleading comment about client title windows, which don't exist anymore 2007-11-04 12:17:06 +01:00
Anselm R. Garbe
54bde0f9d7 full names in -v output of dwm 2007-11-04 12:12:52 +01:00
Anselm R. Garbe
260a55ef62 doing it in a shorter way 2007-11-03 21:14:04 +01:00
Anselm R. Garbe
0e98090d65 removed fgets usage, increment offset until a line is read, dwm will drop all lines read in one call, except the first!!! one (previously it preferred the last) - but the current approach is simplier and works better for general purpose in conjunction with the offset handling 2007-11-03 20:43:12 +01:00
Anselm R. Garbe
af4667a85a simplified 2007-11-02 17:07:14 +01:00
Anselm R. Garbe
a98b5e5935 made error handling more proper 2007-11-02 17:04:40 +01:00
Anselm R. Garbe
b8985dc7bb replaced low-level stext reading with an fgets call 2007-11-02 16:57:52 +01:00
Anselm R. Garbe
6f60b2e1cd revival of RESIZEHINTS 2007-11-02 10:43:39 +01:00
arg@suckless.org
3033d45d1c sanders patch for b2 toggle 2007-10-29 12:42:58 +01:00
Anselm R. Garbe
34e7872c89 replaced Nmacros with LENGTH(x) macro 2007-10-28 12:52:16 +01:00
Anselm R. Garbe
c36f7c3c5e replaced ISTILE with domwfact/dozoom bools, removed nrules, nlayouts and ltidx, added NRULES, NLAYOUTS and Layout *layout as alternatives, removed isarrange(), checking against layout->arrange instead. 2007-10-28 12:41:14 +01:00
Anselm R. Garbe
3fd39feb41 some sanity changes 2007-10-27 18:21:02 +02:00
Anselm R. Garbe
93eee247ca going toward 4.7 2007-10-27 18:12:54 +02:00
Anselm R. Garbe
d5e8edcbcb Added tag 4.6 for changeset bcd7e18e196a 2007-10-25 20:24:59 +02:00
arg@suckless.org
13577b15e5 fixed a comment 2007-10-25 10:42:55 +02:00
Anselm R. Garbe
5473e763f6 also consider width for tile fallback enforcing 2007-10-24 20:34:08 +02:00
arg@suckless.org
cdd6c3e820 removed RESIZEHINTS and enhanced tile for fixed or aspect-ratio'ed clients 2007-10-24 16:26:59 +02:00
arg@suckless.org
29f2b15ddc some cleanup, removed ntags variable, defined NTAGS macro, simplified tag(), view() and idxoftag(), fixed some NULL comparisions 2007-10-24 16:07:43 +02:00
arg@suckless.org
7b65b763bc parenthized use of ISTILE macro in dwm.c 2007-10-23 09:38:47 +02:00
arg@suckless.org
e94774dd69 thx to Toni Lainson 2007-10-19 09:56:51 +02:00
arg@suckless.org
af0034f3a5 fixed two comments 2007-10-18 17:02:19 +02:00
arg@suckless.org
cd7ebaad25 removed dwm.h, just include C-files in config.h if you extend dwm, that's simplier and most flexible than all other possibilities 2007-10-18 10:28:41 +02:00
arg@suckless.org
8dc03d6e6b small cosmetic fix 2007-10-17 14:35:21 +02:00
arg@suckless.org
1dcb18c124 uncommented DEBUG CFLGAS/LDFLAGS 2007-10-17 12:28:34 +02:00
arg@suckless.org
206eb344e2 just making dwm.h saner 2007-10-17 11:19:14 +02:00
Anselm R. Garbe
04de5720e6 applied Eric Mertens patch to mainstream dwm, however this needs testing 2007-10-16 19:07:51 +02:00
Anselm R. Garbe
5a04edecb1 cleaned up dwm.c/dwm.h somewhat that it allows easier integration of patches 2007-10-16 19:04:49 +02:00
Anselm R. Garbe
24c125cc8a small comment 2007-10-11 20:50:01 +02:00
Anselm R. Garbe
0453c1d180 recreated dwm.h 2007-10-11 20:47:34 +02:00
Anselm R. Garbe
0b5c14cf59 added Mod1-Tab description to dwm.1 2007-10-10 18:51:03 +02:00
Anselm R. Garbe
a73de0cff4 added antoszka's viewprev patch with some minor modifications, restored Client->tags as Bool *, however kept the static initialization of ntags and seltags (prevtags) - this seems to be the best compromise 2007-10-10 18:39:28 +02:00
Anselm R. Garbe
eeea4ef583 applied Brandon MacDone's static initialization patch for seltags and Client->tags 2007-10-06 19:43:15 +02:00
Anselm R. Garbe
883e09b2eb removing NULL-terminating **tags definition in config.h 2007-10-05 18:30:01 +02:00
Anselm R. Garbe
7e25897f11 removed two spaces reported by Soleen 2007-10-03 16:25:25 +02:00
Anselm R. Garbe
95091dcad4 reverted Peters patch to tile, I will discuss the reasons at dwm@ 2007-10-01 21:25:15 +02:00
Anselm R. Garbe
57676994ea s/xterm/uxterm/ 2007-10-01 15:39:37 +02:00
Anselm R. Garbe
60adbab726 added hint for downloading dextra 2007-10-01 14:40:53 +02:00
Anselm R. Garbe
c3eca4d14f fixed font definition 2007-10-01 11:43:53 +02:00
Anselm R. Garbe
d1f4fbb469 fixed man page 2007-09-30 19:20:05 +02:00
Anselm R. Garbe
635b64384d fixed an issue in Peter's patch (it is no good idea to restack() all clients on enternotify() 2007-09-30 18:33:05 +02:00
Anselm R. Garbe
bedbe59aaa applied Peter Hartlich's border collapse patch 2007-09-30 12:47:08 +02:00
Anselm R. Garbe
3f3086f8b8 improved tile() for the RESIZEHINTS == True case, now more space is consumed by the clients (esp. if those clients use increment handling heavily) 2007-09-27 20:08:21 +02:00
Anselm R. Garbe
f92a4e45c4 fixed colors 2007-09-27 18:59:47 +02:00
arg@suckless.org
2fc8a13588 fixed inclusion order 2007-09-27 09:14:32 +02:00
Anselm R. Garbe
63725004f5 updated with my favorite colorscheme 2007-09-26 19:14:22 +02:00
Anselm R. Garbe
e9348dcaca applied colors depend from lavishs proposal 2007-09-25 20:43:29 +02:00
Anselm R. Garbe
fa857b2896 switching to white normal bg, renaming tag 9 into www, for static use in conjunction with ff 2007-09-23 18:50:04 +02:00
Anselm R. Garbe
c77663fcb4 btw 4.6 will be the next release 2007-09-23 11:24:42 +02:00
Anselm R. Garbe
17d39ee014 renamed config.h into config.def.h, config.h will be created if not present, this seems less annoying after all 2007-09-23 11:24:12 +02:00
Anselm R. Garbe
8d1810c85b introduced ISTILE, which can be easily extended with other layout functions to allow reuse of setmwfact() and zoom() 2007-09-22 21:55:19 +02:00
Anselm R. Garbe
60444daa70 setmwfact and zoom check isarrange(floating) now, not !isarrange(tile) - this makes it easier to play well with bstack and nmtile patches 2007-09-22 21:34:06 +02:00
Anselm R. Garbe
b0477c3017 Added tag 4.5 for changeset 2acc60d6dfe2 2007-09-22 09:13:03 +02:00
Anselm R. Garbe
24dae7d7e3 cosmetic fix 2007-09-22 08:57:24 +02:00
Anselm R. Garbe
fa1ce22bc4 fixed a comment 2007-09-20 21:45:27 +02:00
arg@suckless.org
1fafcb1820 applied Peters patch, applied yiyus hint to initfont 2007-09-19 17:32:28 +02:00
Anselm R. Garbe
08c2d92480 applied Peter Hartlich's togglemax patch to allow toggling tiled clients to maximum 2007-09-18 19:04:50 +02:00
arg@suckless.org
fe2775a15b made all stuff non-static - so you can choose wether to use dwm the static or the extern way when extending it 2007-09-17 16:42:37 +02:00
Anselm R. Garbe
01022b95d6 there might be envs which need Xlib.h 2007-09-16 20:02:42 +02:00
Anselm R. Garbe
b2f276b0f9 Mod1-Button2 on a floating but not-fixed client will make it tiled again 2007-09-16 13:42:37 +02:00
Anselm R. Garbe
d1ce3eac33 now tiled windows can be resized/moved, their floating state will be toggled implicitely 2007-09-16 13:27:33 +02:00
Anselm R. Garbe
9449ea3e00 some more rearrangements 2007-09-16 12:34:08 +02:00
Anselm R. Garbe
49197fe4bf ordered all functions alphabetically 2007-09-16 11:53:14 +02:00
Anselm R. Garbe
11cfff2dae corrected a misleading comment 2007-09-16 10:24:35 +02:00
Anselm R. Garbe
a026617c65 macros which have been defined in config.h can only be used at function level, however you can nest code into config.h now for implementing a different layout (just for example), eg. #include "supertile.c" 2007-09-16 10:23:53 +02:00
Anselm R. Garbe
a6df995b5d ordered function forward definitions 2007-09-15 22:45:18 +02:00
Anselm R. Garbe
e041ff70b0 backporting my intro-comment of old dwm.h 2007-09-15 22:33:46 +02:00
Anselm R. Garbe
2d7bb8d7c9 removed grabkeys, not necessary 2007-09-15 22:31:24 +02:00
Anselm R. Garbe
0235a84ef2 micromizing dwm step 1 2007-09-15 22:25:27 +02:00
Anselm R. Garbe
2091200c95 new colorscheme (16-bit compliant) 2007-09-15 20:39:31 +02:00
Anselm R. Garbe
7e476fb86b moved bar-related stuff to bar.c (merged draw.c into that) 2007-09-15 13:16:54 +02:00
Anselm R. Garbe
9800518ae3 renamed drawstatus into drawbar 2007-09-15 12:36:42 +02:00
Anselm R. Garbe
5d831eaa94 renamed config.default.h into config.h 2007-09-15 10:35:18 +02:00
Anselm R. Garbe
e0a6dee30d dist target only needs to add config.default.h 2007-09-15 10:31:28 +02:00
Anselm R. Garbe
73e2aba341 removed config.arg.h, only 1 config.h necessary 2007-09-15 10:30:45 +02:00
Anselm R. Garbe
9f88fd093c small changes of the colors 2007-09-14 20:32:12 +02:00
Anselm R. Garbe
0e515a06c8 other color 2007-09-11 21:30:27 +02:00
Anselm R. Garbe
c4b3c0d979 using light colorscheme, preparing merge of config.arg.h with config.default.h 2007-09-11 20:16:16 +02:00
Anselm R. Garbe
f3a5116248 I work with enabled RESIZEHINTS, simply because I force myself to continue the st development ;) 2007-09-09 18:31:19 +02:00
Anselm R. Garbe
ae760f3f38 introduced new define RESIZEHINTS, which allows to enable/disable size hint handling in tiled resizals 2007-09-09 18:28:39 +02:00
Anselm R. Garbe
169d96ae8f 14px fonts drives me nuts 2007-09-07 21:22:49 +02:00
Anselm R. Garbe
f651435061 Added tag 4.4.1 for changeset 7c117df5d202 2007-08-26 12:54:20 +02:00
Anselm R. Garbe
a92cf496c1 prepared 4.4.1 bugfix and minor feature enhancement release 2007-08-26 12:53:40 +02:00
Anselm R. Garbe
cc7970010b Added tag 4.4 for changeset 408014d21261 2007-08-23 18:15:13 +02:00
Anselm R. Garbe
67a1141f44 removed unnecessary include, prepared dwm-4.4 2007-08-23 18:11:24 +02:00
Anselm R. Garbe
8be3f3ec9e setlayout should perform strcmp's if arg != NULL, because Layout is local to screen.o 2007-08-22 19:06:35 +02:00
Anselm R. Garbe
5762e92994 reverted release CFLAGs 2007-08-22 19:02:17 +02:00
Anselm R. Garbe
36672d0401 removed the _DWM_PROPERTIES handling, reverted ban/unban to XMoveWindow(), and changed argument of setlayout to layout[N].symbol check 2007-08-22 19:01:05 +02:00
Anselm R. Garbe
b18e684015 renamed char prop[] into buf[] 2007-08-19 18:50:47 +02:00
Anselm R. Garbe
fc109ea8f7 fixed misappearance of iconified windows on SIGKILL 2007-08-19 18:39:54 +02:00
Anselm R. Garbe
b975c47280 moved updatebarpos to screen 2007-08-19 11:00:47 +02:00
Anselm R. Garbe
47765f7286 added screen.c, removed layout.c and tag.c 2007-08-19 10:57:02 +02:00
Anselm R. Garbe
96d7fe16ea prepared merging layout.c and tag.c into screen.c 2007-08-19 10:40:07 +02:00
Anselm R. Garbe
78d1a22d4e small fix 2007-08-19 10:13:24 +02:00
Anselm R. Garbe
0c60620410 hmm I doubt the usefulness of storing this information... 2007-08-18 14:20:56 +02:00
Anselm R. Garbe
50be6c8b67 cleaned up settags-handling 2007-08-18 13:48:05 +02:00
Anselm R. Garbe
7d156dee1e applied Gottox mwfact patch 2007-08-18 11:40:25 +02:00
Anselm R. Garbe
55d8dda9f4 replaced static Layout *lt with static unsigned int sellayout... (will be adapted later when _DWM_CONFIG is serialized as root window property) 2007-08-17 21:19:07 +02:00
Anselm R. Garbe
86953bd682 renamed seltag into seltags 2007-08-17 21:12:55 +02:00
Anselm R. Garbe
a923298d35 applied Jukka Salmi's setmwfact patch 2007-08-17 21:10:50 +02:00
Anselm R. Garbe
04dec4c943 made plural arrays 2007-08-16 18:41:22 +02:00
Anselm R. Garbe
e40448fd63 fixed the issue observed by various people, that clients appeared on empty tags 2007-08-16 18:30:25 +02:00
Anselm R. Garbe
10bc0ce912 made tag/view/toggle{tag,view} work on pointer to tags-array, there was the need to define Key key[] not static to do this. split focusclient into focusnext/prev, fixed config.*.h's 2007-08-16 17:55:55 +02:00
Anselm R. Garbe
e8792d95a1 applied Jukka's patch 2007-08-16 08:05:30 +02:00
Anselm R. Garbe
feec92df84 fixed _DWM_CONFIG persistation, fixed the client disapperance bug during restarts 2007-08-15 19:31:41 +02:00
Anselm R. Garbe
10d13f01ff fififi 2007-08-15 19:27:32 +02:00
Anselm R. Garbe
8fcc4ff0ae fix of resize (thanks Sander for the hint!) 2007-08-14 19:38:10 +02:00
Anselm R. Garbe
f2512243f4 fixed a typo 2007-08-14 07:54:51 +02:00
Anselm R. Garbe
b32cd4454b small bugfix 2007-08-13 20:10:44 +02:00
Anselm R. Garbe
9e56e1ded6 tags should be persistent now during X server run 2007-08-13 20:06:00 +02:00
Anselm R. Garbe
e4ad320599 small bugfix 2007-08-13 19:22:51 +02:00
Anselm R. Garbe
a200c39635 made tile simplier 2007-08-13 19:19:38 +02:00
Anselm R. Garbe
77044e8765 made Layout a static struct in layout.c, added some convenience getters in layout.c, now lt->arrange accesses are not possible anymore, arrange() is the super-arrange function which sets up all layouts 2007-08-13 19:13:54 +02:00
Anselm R. Garbe
2feb3afe78 made resize more precise 2007-08-13 18:24:15 +02:00
Anselm R. Garbe
0937cc78bf moved floating to layout.c, kept tile.c outside 2007-08-12 13:10:21 +02:00
Anselm R. Garbe
f6e41b0bc3 renamed MASTER into MWFACT, master into mwfact, and incmaster into addtomwfact 2007-08-12 12:46:08 +02:00
Anselm R. Garbe
2c6087e3d2 fixed a comment 2007-08-11 14:44:11 +02:00
Anselm R. Garbe
2d81b78b85 separated layout-specific stuff into separate .h and .c files which are included in config.h resp. config.mk - this allows writing layouts for dwm without any need to patch existing code 2007-08-11 12:11:50 +02:00
Anselm R. Garbe
b5eea45a31 let not overlap the borders 2007-08-10 18:27:25 +02:00
Anselm R. Garbe
aa53e39ec0 removed VRATIO, NMASTER, inc*(), renamed HRATIO into MASTER, see mailinglist for details 2007-08-10 18:16:05 +02:00
Anselm R. Garbe
4216bf801f slight change of my color scheme 2007-08-05 17:37:40 +02:00
Anselm R. Garbe
2cd1609770 removed spow(x, 0); calls, I did them for consistency's sake, but it should be rather obvious how the scaling works anyways 2007-08-05 16:00:08 +02:00
Anselm R. Garbe
85c9ebf2fc applied Jukka's dwm.1 patch 2007-08-05 15:58:07 +02:00
Anselm R. Garbe
796925089c changed shortcuts as described on the mailinglist, added sanity checks for ratios during tile (fallback to wah if clients would get too small), documented that new stuff/shortcuts in dwm(1) 2007-08-05 12:47:52 +02:00
Anselm R. Garbe
da91dfc948 small fix of static function order 2007-08-04 10:57:56 +02:00
Anselm R. Garbe
4135e34dfa I introduced {H,V}RATIO and inc{h,v,}ratio() functions - the default behaves like in dwm-4.3, config.arg.h shows how I prefer the ratio being handled (for the future I plan to change const char *arg into ..., and renaming Client into Win.) 2007-08-04 10:51:39 +02:00
Anselm R. Garbe
846128a498 removed a C++ style comment 2007-08-03 19:29:58 +02:00
Anselm R. Garbe
e461e60997 implemented ratio tile as described on the mailinglist 2007-08-03 19:23:30 +02:00
Anselm R. Garbe
28c10330bd changed the fix of yesterday, the resize should only be necessary at manage() time, not on any unban() 2007-07-31 18:22:13 +02:00
Anselm R. Garbe
0d40590c2c foo 2007-07-30 21:03:08 +02:00
Anselm R. Garbe
8fda28be35 set client state to iconic on maprequest 2007-07-28 17:25:44 +02:00
Anselm R. Garbe
a54cf2ecef changed ban/unban implementation to not move the windows anymore, but map/unmap them instead - PLEASE TEST THIS 2007-07-28 17:18:45 +02:00
Anselm R. Garbe
4b9337a01e removed shiftview(), if you scroll the views in the tag area, you can also use Button1 instead
removed focusclient([-]1) bound to scroll wheel - if you slightly move the mouse you will focus the first client anways which is in the way
2007-07-28 12:58:56 +02:00
Anselm R. Garbe
154497541d applied Jeroen's {clean,spell}.diff patches, thanks Jeroen! 2007-07-26 20:15:02 +02:00
Anselm R. Garbe
e0cfe07648 applied Jeroen Schot's shiftview patch 2007-07-24 18:29:29 +02:00
arg@f00b4r
82be289985 applied dwm-windowscrolling patch 2007-07-24 18:25:01 +02:00
arg@f00b4r
f2190c8fc2 Added tag 4.3 for changeset e0ec0d5d8b1e 2007-07-14 21:14:15 +02:00
arg@f00b4r
c31648d15d restoring tip to be a working dwm again (switching FONT to terminus in config.arg.h) 2007-07-12 19:45:28 +02:00
Anselm R. Garbe
52250e7c1e please recheck this patch with Mathematica from Wolfram Research - lemme know if it fixes the geyish blob window bug 2007-06-19 09:08:15 +02:00
Anselm R. Garbe
51a94a2f14 removed crappy createnotify handler 2007-06-19 09:04:21 +02:00
Anselm R. Garbe
c95bf3db9d applied restack patch of anydot, with slight changes 2007-06-06 11:43:14 +02:00
Anselm R. Garbe
4bf3b01953 I change the style of init somewhat, init as early as possible. 2007-06-06 11:17:56 +02:00
Anselm R. Garbe
ff957d1eac uncommented creatnotify 2007-06-04 14:38:24 +02:00
Anselm R. Garbe
83aa110c6f added an creatnotify event handler 2007-06-04 11:50:48 +02:00
Anselm R. Garbe
5a1a2edf0e applied anudots [un]ban repair patch 2007-06-04 11:37:33 +02:00
Anselm R. Garbe
b3419f49a3 making variable declarations in dwm.h extern, this seems to be more ansi compliant 2007-06-01 12:11:25 +02:00
Anselm R. Garbe
141beb2704 replaced BORDERPX with sel->border in togglemax(), in other places this is not possible. 2007-05-30 20:49:38 +02:00
Anselm R. Garbe
4e49d5a0ad Added tag 4.2 for changeset c13cb8c6b7a5 2007-05-30 12:22:29 +02:00
Anselm R. Garbe
2c6be7239f referred to LICENSE file 2007-05-30 12:19:28 +02:00
Anselm R. Garbe
d934296476 Jukka also belongs to Copyright holders after all he has contributed and done for dwm, updated -v as well 2007-05-30 12:10:01 +02:00
Anselm R. Garbe
39ae286861 applied Jukkas patch 2007-05-30 08:57:44 +02:00
Anselm R. Garbe
59e65d1709 changed -v output (now also anydot and nsz are contained in this output) 2007-05-29 13:53:08 +02:00
Anselm R. Garbe
9fdd2cd1a9 added nsz to copyright holders as well, because he did a lot recently 2007-05-29 11:57:08 +02:00
Anselm R. Garbe
e1deda9e04 added anydot to Copyright holders, because he contributed a lot recently 2007-05-29 11:47:55 +02:00
Anselm R. Garbe
199a601611 applied anydot's 3 minor patches, thank you anydot 2007-05-29 11:35:20 +02:00
Anselm R. Garbe
492c6f10fc applied Sanders patch 2007-05-28 15:05:47 +02:00
Anselm R. Garbe
caa7ab5362 applied anydots proposal to let togglefloating restore fixed windows 2007-05-25 15:28:10 +02:00
Anselm R. Garbe
f3e672efd8 fix if n < nmaster of remainer calculation for master windows 2007-05-24 16:25:09 +02:00
Anselm R. Garbe
02d5dddc00 rev 900, cool 2007-05-24 15:55:28 +02:00
Anselm R. Garbe
c789941bba fo 2007-05-24 15:53:48 +02:00
Anselm R. Garbe
e45b3ced67 calculating the remainder for master and stack area correctly 2007-05-24 15:40:07 +02:00
Anselm R. Garbe
5a9af492ae fixed issue reported by Christian Garbs 2007-05-24 11:35:32 +02:00
Anselm R. Garbe
32563abe86 removed the only one and superfloues strncmp 2007-05-23 22:33:46 +02:00
Anselm R. Garbe
70c7b432ea foo 2007-05-23 14:51:51 +02:00
Anselm R. Garbe
69dfcaa317 reverted last change after Sander pointed out the original decision 2007-05-23 07:49:05 +02:00
Anselm R. Garbe
6ee8e3e93b applied anydots remark of togglefloating() 2007-05-23 07:47:20 +02:00
Anselm R. Garbe
8439369db9 applied Szabolcs proposal for zoom() as well 2007-05-22 11:29:59 +02:00
Anselm R. Garbe
81658eaab3 applied Szabolcs proposal to simplify setlayout() 2007-05-22 11:29:04 +02:00
Anselm R. Garbe
81aebf8cae Added tag 4.1 for changeset 00f4180df72b 2007-05-21 14:37:26 +02:00
Anselm R. Garbe
fa32f02a43 no that change breaks fullscreen apps 2007-05-16 22:05:02 +02:00
Anselm R. Garbe
598e22907e raise barwin in restack, that's the most elegant solution I think 2007-05-16 21:59:53 +02:00
Anselm R. Garbe
1e826ddd3e simplification 2007-05-15 14:06:18 +02:00
Anselm R. Garbe
a967d7f664 raising the barwin has no effect becasue of restack 2007-05-15 13:58:29 +02:00
Anselm R. Garbe
ce450c5bf1 fix 2007-05-15 13:56:47 +02:00
Anselm R. Garbe
8f5f7a5b5a barwindow raising 2007-05-15 13:56:06 +02:00
Anselm R. Garbe
5ad2828c57 using BarTop as fallback if BARPOS is set to BarOff as default for toggling 2007-05-15 13:49:43 +02:00
Anselm R. Garbe
b896b58d6d removed strip, added -s to LDFLAGS 2007-05-15 13:44:04 +02:00
Anselm R. Garbe
fef6c5c66b added new Mod1-b functionality to dwm(1) 2007-05-15 13:42:07 +02:00
Anselm R. Garbe
37e062b0ed another fix, call lt->arrange() in togglebar only 2007-05-15 13:36:04 +02:00
Anselm R. Garbe
cf58091736 fixed bpos init 2007-05-15 13:23:51 +02:00
Anselm R. Garbe
2aef8b9b4c made bar togglalble 2007-05-15 12:09:18 +02:00
Anselm R. Garbe
d96307cbe4 thanks to Jukka 2007-05-14 16:24:01 +02:00
Anselm R. Garbe
124866e269 added the GTK Save-As bug report to BUGS section of dwm(1) 2007-05-14 13:42:00 +02:00
Anselm R. Garbe
ab3d6a7dfe applied dfenze cleanups, fixed some comments in dwm.h 2007-05-14 11:54:30 +02:00
Anselm R. Garbe
c67dbb28e4 small fix of fix 2007-05-10 13:49:17 +02:00
Anselm R. Garbe
b8bccb4ac5 fixed a potential security flaw 2007-05-10 13:47:44 +02:00
Anselm R. Garbe
b6b2f584ec applied Maarten Maathuis recenter-patch for floating clients only requesting new width and height exceeding the screen space 2007-05-09 11:31:14 +02:00
Anselm R. Garbe
f7bdb39d9e s/remain/remainder/ 2007-05-09 10:12:55 +02:00
Anselm R. Garbe
ecd9c3e222 fixing remaining space calculation 2007-05-09 10:11:34 +02:00
Anselm R. Garbe
216099d072 thanks to Juka to check -Wall ;) 2007-05-08 08:52:34 +02:00
Anselm R. Garbe
fc2e3eae20 next version is 4.1 2007-05-07 13:14:55 +02:00
Anselm R. Garbe
f9e7a33019 applied patch of Paul Liu to allow onthefly resizing due to xrandr changes 2007-05-07 13:12:41 +02:00
Anselm R. Garbe
7c9fa2566f Added tag 4.0 for changeset 018c38468422 2007-04-19 09:26:44 +02:00
Anselm R. Garbe
22399a3bc0 fixed the border issue for mplayer, ff is definately broken when using F11 (fullscreen mode) 2007-04-19 09:24:25 +02:00
Anselm R. Garbe
ad2508f957 touch border 2007-04-19 08:53:40 +02:00
Anselm R. Garbe
b078599833 set border at manage time 2007-04-18 21:11:46 +02:00
Anselm R. Garbe
1e80207876 using pixelcarnage-monospace (proggyclean), because this is better to the eyes 2007-04-18 17:29:38 +02:00
Anselm R. Garbe
464fc2cd18 changed border handling 2007-04-17 14:56:46 +02:00
Anselm R. Garbe
be8d6d40f6 changing order of c->border restorage 2007-04-13 12:22:00 +02:00
Anselm R. Garbe
f0c2353393 I used 2006 in other places as well 2007-04-13 11:41:39 +02:00
Anselm R. Garbe
a730213c3b yet another fix of copyright compactisition 2007-04-13 11:40:09 +02:00
Anselm R. Garbe
399993c6b5 making Copyright notices more compact 2007-04-13 11:32:38 +02:00
Anselm R. Garbe
4d318060a2 next version will be 4.0, so don't expect it within the next days 2007-04-11 15:18:16 +02:00
Anselm R. Garbe
540d5eed46 make also transients floating when we do not know the main window 2007-04-11 15:17:29 +02:00
Anselm R. Garbe
7d071ce2bd Added tag 3.9 for changeset 55478328b242 2007-04-02 11:11:47 +02:00
Anselm R. Garbe
93aeaa53c9 next version will be 3.9, but don't expect it this week 2007-03-29 15:18:30 +02:00
Anselm R. Garbe
06f9f346e6 add an additional check in resize() to prevent a crash of dwm 2007-03-29 15:17:57 +02:00
Anselm R. Garbe
5c48012ad2 Added tag 3.8 for changeset 2ea201354cf0 2007-03-05 11:54:59 +01:00
Anselm R. Garbe
a686c9ccd2 we don't need to set the font all the time 2007-03-02 15:14:40 +01:00
Anselm R. Garbe
9ca5c3b108 some changes to updatesizehints, I don't change the aspect ratio algorithm now - I can't think, it is a mess 2007-03-01 12:33:45 +01:00
Anselm R. Garbe
bab5b1178d removed sendevent 2007-02-26 16:24:51 +01:00
Anselm R. Garbe
ee8fb0c6e4 Escape -s in dwm.1 2007-02-26 10:47:11 +01:00
Anselm R. Garbe
0d9d3e79e9 Added tag 3.7 for changeset baee494346e5 2007-02-24 15:41:05 +01:00
Anselm R. Garbe
12280f0253 prepared 3.7, ready to rambo 2007-02-24 15:40:50 +01:00
Anselm R. Garbe
a58731e835 removed an unnecessary newline 2007-02-24 14:08:27 +01:00
Anselm R. Garbe
1df45593ed removed superfluous externs (except for tags, because tags is defined in the source) 2007-02-24 14:06:35 +01:00
Anselm R. Garbe
2122e39ce1 replacing Mod1-i with Mod1-Shift-j, Mod1-d with Mod1-Shift-k 2007-02-23 13:37:55 +01:00
Anselm R. Garbe
e70139428a oops, small bugfix in my config 2007-02-23 11:17:07 +01:00
Anselm R. Garbe
3d1d75a224 default masterwidth should also be at 600 2007-02-23 11:13:57 +01:00
Anselm R. Garbe
35f08f4231 changed order if h/l 2007-02-23 11:09:18 +01:00
Anselm R. Garbe
0ea0343a63 well I agree to several people claiming h/j/k/l is the better default than Tab/S-Tab/g/s for focus and master resizing 2007-02-23 10:40:32 +01:00
Anselm R. Garbe
338c083858 renamed untiled into floating, keeping tiled instead of tiling (afaik tiled sounds more correct) - English speakers convinced me 2007-02-22 22:10:16 +01:00
Anselm R. Garbe
671442e89d hahaha, untiled and non-untiled sounded really cumbersome 2007-02-22 18:22:51 +01:00
Anselm R. Garbe
8d111632f5 made Fnt an anonymous inner struct 2007-02-22 18:17:07 +01:00
Anselm R. Garbe
fe5acb939a made Fnt an anonymous inner struct 2007-02-22 18:08:31 +01:00
Anselm R. Garbe
cac492b0e9 nah, I don't want 640 as MASTERWIDTH 2007-02-22 17:58:45 +01:00
Anselm R. Garbe
ef9b3e173c using MASTERWIDTH=640 and 32px steps by default (incmasterw()) 2007-02-22 17:52:45 +01:00
Anselm R. Garbe
5a13632afb simplified focusclient() 2007-02-22 17:51:34 +01:00
Anselm R. Garbe
587100873a renamed versatile into untiled 2007-02-22 17:43:41 +01:00
Anselm R. Garbe
27b0595af7 merged focus{prev.next} into focusclient(1/-1) 2007-02-22 15:25:19 +01:00
Anselm R. Garbe
12d5a26fd2 made dwm.h more tidy (thx Jukka for the zoom() hint) 2007-02-22 15:06:56 +01:00
Anselm R. Garbe
89b7f1503e oops 2007-02-22 12:16:58 +01:00
Anselm R. Garbe
5711609203 small bugfix 2007-02-22 12:15:48 +01:00
Anselm R. Garbe
825b7c3eb1 fixed some issues due to the Arg->const char * transition 2007-02-22 12:00:02 +01:00
Anselm R. Garbe
ba96131af0 restoring default keybindings as Sander complained 2007-02-22 11:45:03 +01:00
Anselm R. Garbe
2c477cf661 replaced Arg union with const char *arg, seems cleaner to me, even if we need atoi() in some places 2007-02-22 11:42:08 +01:00
Anselm R. Garbe
986ca73074 re-added xterm to config.default.h 2007-02-22 11:15:31 +01:00
Anselm R. Garbe
288098893c removed button4/5-bindings for incnmaster on mode label - that is misleading 2007-02-22 11:09:44 +01:00
Anselm R. Garbe
cb9607c284 fixed order of key bindings described in dwm.1 2007-02-22 11:06:37 +01:00
Anselm R. Garbe
4bd4f421d3 status needs update even in togglemax() - since we got an indicator for this 2007-02-22 10:59:42 +01:00
Anselm R. Garbe
84432e6b36 reusing drawsquare for client title, empty square before title means versatile window, filled square before title means versatile maximized window. 2007-02-22 10:57:19 +01:00
Anselm R. Garbe
1a25414ace dwm draws a small caret before the client title if it's a versatile client 2007-02-22 10:52:57 +01:00
Anselm R. Garbe
3171371498 nah grouped keybindings by context 2007-02-22 09:29:38 +01:00
Anselm R. Garbe
92105e7862 fixed exit condition in togglemax() 2007-02-22 08:08:36 +01:00
Anselm R. Garbe
6ee9f13457 fixing missing extern declars in dwm.h for {de,at}tach() 2007-02-22 08:02:04 +01:00
Anselm R. Garbe
352cae4380 several changes, made togglemax extern and separated it from zoom() - moved zoom() and togglemax() into layout.c, changed void (*func)(Arg *) into void (*func)(Arg), changed default keybindings of focusnext/focusprev and incmasterw to h/j/k/l accordingly, made keys in config*h appear alphabetically (special keys first), renamed resizemaster into incmasterw, renamed MASTER into MASTERWIDTH 2007-02-22 07:59:13 +01:00
Anselm R. Garbe
b3b58c08e4 just ignore the FD_ISSET check in main.c of xfd, just call XPending (which does the same afair) 2007-02-21 21:36:54 +01:00
Anselm R. Garbe
204f0a340d optimizing background color of terminals 2007-02-21 17:00:06 +01:00
Anselm R. Garbe
78666b99b8 using 333 as background, hey proggyclean is really good 2007-02-21 16:57:21 +01:00
Anselm R. Garbe
0bdcf75e25 switching to 13pt proggyclean (this fits better my 1920x1200 resolution than 12pt terminus which is too small or 14pt terminus which is too fat) 2007-02-21 16:53:25 +01:00
Anselm R. Garbe
f1009285d8 using smaller font 2007-02-21 16:47:53 +01:00
Anselm R. Garbe
f76b3a4685 using a green selborder 2007-02-21 15:47:52 +01:00
Anselm R. Garbe
84ae6e12eb reverting to bg 555 2007-02-21 13:31:04 +01:00
Anselm R. Garbe
784659565a s/555/357/ for SELCOLOR 2007-02-21 13:29:02 +01:00
Anselm R. Garbe
7ae0c198b3 switching to urxvtcd for the moment (the uxterm flicker makes me headaches, st is really highest prio now) 2007-02-21 13:24:37 +01:00
Anselm R. Garbe
dc6623728d Added tag 3.6.1 for changeset 20ec6976cee1 2007-02-21 12:09:10 +01:00
Anselm R. Garbe
7541f1ad49 creating 3.6.1 2007-02-21 12:08:18 +01:00
Anselm R. Garbe
74cbbe5f35 reverted accidental removal of sx, sy 2007-02-21 11:49:06 +01:00
Anselm R. Garbe
52f0b9e2e3 removed some global vars which should be static instead 2007-02-21 11:45:51 +01:00
Anselm R. Garbe
29c26b88e7 moved focus{next,prev} and nexttiled from client.c to layout.c (because those are not client-specific), moved toggleversatile() from layout.c to client.c (because those are client-specific) 2007-02-21 11:39:57 +01:00
Anselm R. Garbe
f196b71e4d cleaned up and commented the config.*.h 2007-02-21 11:30:52 +01:00
Anselm R. Garbe
ab83872134 Added tag 3.6 for changeset 75b1b25fe0d7e29400baf30568153f668324928b 2007-02-21 11:05:27 +01:00
Anselm R. Garbe
ad4962c7eb fixed quoting and a comment 2007-02-21 11:04:33 +01:00
Anselm R. Garbe
d180ba418c renamed setfont to initfont, getcolor to initcolor 2007-02-20 13:56:21 +01:00
Anselm R. Garbe
138b7fbd05 fixed order 2007-02-20 13:48:02 +01:00
Anselm R. Garbe
e7508783e8 added draw.c again (except getcolor and setfont which are helpers in main.c) 2007-02-20 13:46:21 +01:00
Anselm R. Garbe
f4d15b1fec separating drawsquare from drawtext, made drawtext extern 2007-02-20 13:40:31 +01:00
Anselm R. Garbe
355beb53f0 rechecked with OpenBSD 2007-02-20 11:26:16 +01:00
Anselm R. Garbe
8012fcf333 split screen.c into layout.c and tag.c (because the view is an implicit mixture of both) 2007-02-20 10:49:53 +01:00
Anselm R. Garbe
6bc4556ebd using eprint instead of fputs 2007-02-19 21:17:54 +01:00
Anselm R. Garbe
879241c05c replaced togglelayout with setlayout 2007-02-19 18:33:15 +01:00
Anselm R. Garbe
3794c62945 changed some odering in config*.h 2007-02-19 18:19:43 +01:00
Anselm R. Garbe
5a03daf47f renamed Client->versatile and Rule->versatile into Client->isversatile resp. Rule->isversatile 2007-02-19 17:18:24 +01:00
Anselm R. Garbe
6d5f67a092 renames swim[ming] into versatile 2007-02-19 17:12:26 +01:00
Anselm R. Garbe
cee56d3863 renamed floating into swimming (this does not clash with C naming conventions and fits better the fish symbol) - also in man page 2007-02-19 17:00:32 +01:00
Anselm R. Garbe
7c4da24465 removed debug compile flags 2007-02-19 16:41:47 +01:00
Anselm R. Garbe
cdbc84b9a8 introduced Layout struct 2007-02-19 16:40:36 +01:00
Anselm R. Garbe
b2f895166a some more code polishing 2007-02-19 16:07:22 +01:00
Anselm R. Garbe
ebe68f650a forgot an extern declaration 2007-02-19 16:04:38 +01:00
Anselm R. Garbe
df9fd28f9a bugfix of transient handling 2007-02-19 15:57:08 +01:00
Anselm R. Garbe
e9c49ddd7a removed procevent, more refactoring 2007-02-19 15:23:35 +01:00
Anselm R. Garbe
f8415019d4 draw.c is useless (belongs to main.c now) 2007-02-19 15:17:31 +01:00
Anselm R. Garbe
238dd5d2b1 renamed view.c into screen.c 2007-02-19 15:05:29 +01:00
Anselm R. Garbe
64871a7045 renamed manage.c to view.c 2007-02-19 14:57:32 +01:00
Anselm R. Garbe
2e95bc0413 renamed Rule members, renamed RReg into Regexps 2007-02-19 14:52:19 +01:00
Anselm R. Garbe
4cdbd523e5 merged tag.c, view.c and tile.c to manage.c 2007-02-19 14:44:05 +01:00
Anselm R. Garbe
b3d7e07f18 some more refactoring 2007-02-19 13:53:40 +01:00
Anselm R. Garbe
30af19d442 added some new convenience functions 2007-02-19 13:42:39 +01:00
Anselm R. Garbe
5d9146ff37 some more refactoring 2007-02-19 13:17:49 +01:00
Anselm R. Garbe
5cc27f1b3c introduced tile.c, some refactoring of functions 2007-02-19 13:00:29 +01:00
Anselm R. Garbe
39ed54a468 simplified configurerequest to a bare minimum, removed wrong ban() calls 2007-02-19 11:34:12 +01:00
Anselm R. Garbe
b61f91361c fixed configurerequest according to Jukkas complains 2007-02-19 11:22:47 +01:00
Anselm R. Garbe
3167373512 fixed configurerequest according to the problem Jukka reported 2007-02-19 11:03:27 +01:00
Anselm R. Garbe
4cff744438 don't resize master if not in tiled mode 2007-02-19 10:51:11 +01:00
Anselm R. Garbe
c3527bea57 removed useless space 2007-02-16 16:51:27 +01:00
Anselm R. Garbe
de6695792a well, resize should be called in dofloat anyways ;) 2007-02-16 16:41:22 +01:00
Anselm R. Garbe
6e22ccf7b1 removed ugly ban(), extended resize() that it only resets the size if necessary, added border_width commit to manage() 2007-02-16 16:38:40 +01:00
Anselm R. Garbe
8a5f002c41 removed getnext/getprev, redundant 2007-02-16 10:20:34 +01:00
Anselm R. Garbe
3ce8c9f338 added ban() which takes care than a banned window is not banned again... (this reduces the overall ConfigureNotify's to clients) 2007-02-14 14:01:12 +01:00
Anselm R. Garbe
0d095ae2ff Added tag 3.5 for changeset 63ad05e7f9e1 2007-02-14 09:35:48 +01:00
Anselm R. Garbe
2d7f59424c simplifying regexps in config samples 2007-02-14 09:31:23 +01:00
Anselm R. Garbe
e256afe31e made for/if/else constructs more consistent, some code polishing 2007-02-14 09:09:18 +01:00
Anselm R. Garbe
64cfebc5e7 made configurerequest more tidy 2007-02-14 08:14:41 +01:00
Anselm R. Garbe
7a095d0ce2 I didn't knew of c->isfixed, that should fix Jukkas issue with gkrellm ;) 2007-02-13 22:53:58 +01:00
Anselm R. Garbe
5052c538d9 making it more sure that transient checks will work in any case 2007-02-13 22:24:27 +01:00
Anselm R. Garbe
22d8c6fd18 stupid me, one needs to set c->{x,y,w,h} in configurerequest obviously ;) 2007-02-13 14:59:58 +01:00
Anselm R. Garbe
71857b87ee simplified configurerequest 2007-02-13 13:39:33 +01:00
Anselm R. Garbe
6ba400ee0f yet another consistency fix of dwm 2007-02-12 17:20:51 +01:00
Anselm R. Garbe
35e65ea640 I don't see any reason why we should select for input on override-redirect windows? 2007-02-12 16:41:46 +01:00
Anselm R. Garbe
d0d986dd0e bugfix of bugfix (thx to Sander) 2007-02-12 14:20:47 +01:00
Anselm R. Garbe
9685e7dbc2 fixed a bug 2007-02-12 13:04:29 +01:00
Anselm R. Garbe
37f39afb8e during writing 2wm.1 I noticed some bugs in dwm.1 2007-02-12 11:42:32 +01:00
Anselm R. Garbe
dc9f62f393 removing all EnterNotifys after resize 2007-02-12 10:21:26 +01:00
Anselm R. Garbe
7055315725 added pointer warp on drop in resize 2007-02-12 10:19:52 +01:00
Anselm R. Garbe
fd995dac78 pneubeck pointed out an obvious thing, that a second p = stext + strlen(stext) - 1 is unnecessary 2007-02-09 14:56:19 +01:00
Anselm R. Garbe
e5765cdd84 treating acroread and mplayer floating by default 2007-02-09 11:58:37 +01:00
Anselm R. Garbe
8d0e58f80b adapting John Grahor's patch to dwm-3.5 2007-02-09 09:54:08 +01:00
Anselm R. Garbe
8fcd1bfda8 fixed copyright notice in Makefile 2007-02-08 14:09:52 +01:00
Anselm R. Garbe
e39e697998 fixed order of Bool declarations 2007-02-08 13:39:33 +01:00
Anselm R. Garbe
d2dd58eabd added TOPBAR option for making the bar appear what the user likes 2007-02-08 11:48:01 +01:00
Anselm R. Garbe
c6fc6b173d next version is 3.5 2007-02-08 11:11:15 +01:00
Anselm R. Garbe
4590d7877c making the bar appear at bottom 2007-02-08 11:08:40 +01:00
Anselm R. Garbe
f577fe4e27 Added tag 3.4 for changeset 9ede7b2d2450 2007-02-07 12:42:35 +01:00
Anselm R. Garbe
9ed5de00b6 removed debug flags 2007-02-07 12:37:21 +01:00
Anselm R. Garbe
28ffff801b replaced getproto with a saner function, now old-school artifacts of WM times in the early 90s completely disappeared, no punned pointer warning anymore ;) 2007-02-07 12:37:06 +01:00
Anselm R. Garbe
44ef3f5a07 yet another fix 2007-02-06 15:29:19 +01:00
Anselm R. Garbe
dafbd0dcb0 simplification 2007-02-06 15:28:25 +01:00
Anselm R. Garbe
2ddc78720a implemented aspect ratio support of windows 2007-02-06 15:22:13 +01:00
Anselm R. Garbe
7ece30ebc0 made some changes more concistent 2007-02-05 11:19:46 +01:00
Anselm R. Garbe
3d48f33025 got rid of LD (inspired by JGs patch to wmii) 2007-02-05 11:09:53 +01:00
Anselm R. Garbe
19fd903d40 applied apm's patch proposal, getting rid of XDrawLines 2007-02-05 11:05:16 +01:00
Anselm R. Garbe
5732e471ae Added tag 3.3 for changeset 0f91934037b0 2007-02-01 08:23:00 +01:00
Anselm R. Garbe
042297b27b applied Sander's drop_bh patch 2007-01-31 20:08:55 +01:00
Anselm R. Garbe
a5cb80b86c handling WM_STATE seems to make DnD in gtk/qt apps working, well let's handle this in dwm as well 2007-01-28 20:29:41 +01:00
Anselm R. Garbe
7e98db251e regarding to http://plan9.bell-labs.com/sources/contrib/rsc/man.ps the BUGS section should appear after SEE ALSO section. 2007-01-26 12:41:15 +01:00
Anselm R. Garbe
bced9077f9 renamed CAVEATS into BUGS 2007-01-26 12:31:57 +01:00
Anselm R. Garbe
82fed986f9 Added tag 3.2.2 for changeset d3876aa79292 2007-01-25 10:05:02 +01:00
Anselm R. Garbe
2c1db7ed35 prepared yet another hotfix release 2007-01-25 09:59:48 +01:00
Anselm R. Garbe
ea4827a578 Added tag 3.2.1 for changeset f2cabc83a18f 2007-01-24 17:25:37 +01:00
Anselm R. Garbe
55be4d6137 hotfix release 3.2.1 2007-01-24 17:25:30 +01:00
Anselm R. Garbe
1f18466409 applied offscreen appearance hotfix 2007-01-24 17:24:55 +01:00
Anselm R. Garbe
b65a1e3379 Added tag 3.2 for changeset 4ce65f61f01b 2007-01-24 12:12:29 +01:00
Anselm R. Garbe
87836d79ef renamed activescreen into selscreen 2007-01-23 17:12:15 +01:00
Anselm R. Garbe
c8a12a0852 implemented Sanders remarks 2007-01-23 13:10:35 +01:00
Anselm R. Garbe
71b84c2114 small changes 2007-01-23 12:29:17 +01:00
Anselm R. Garbe
edb2660a2e removed a blank line 2007-01-23 12:04:22 +01:00
Anselm R. Garbe
17ec726b49 this version should also work with cornercases (like unmanage during !issel, etc.) 2007-01-23 12:00:49 +01:00
Anselm R. Garbe
373b11de11 I think this is the best solution of multihead support 2007-01-23 11:49:16 +01:00
Anselm R. Garbe
04a2b74529 darker border 2007-01-22 16:02:37 +01:00
Anselm R. Garbe
fcd98308ba this variant is known to work, but focus() is ugly - we need in general a better way to handle multihead, this issel-stuff looks awkward (maybe it might be a good idea to set sel to NULL but to introduce a Client *revert which is set if a screen is unfocused, have to think about it further). 2007-01-22 10:35:58 +01:00
Anselm R. Garbe
b233089815 applied Sanders all5.patch (thanks for your weekend session, Sander!) 2007-01-22 10:22:58 +01:00
Anselm R. Garbe
201c56f6d3 leavenotify also don't needs the check 2007-01-19 15:05:07 +01:00
Anselm R. Garbe
1e051d71f5 deciding for focus(NULL); 2007-01-19 15:01:51 +01:00
Anselm R. Garbe
ddc79603f9 replaced XSetBorder.../focus() 2007-01-19 14:38:09 +01:00
Anselm R. Garbe
dee5ea2335 yet another multihead fix by Christof Musik 2007-01-19 14:36:25 +01:00
Anselm R. Garbe
b1c9f5f144 I prefer BORDERPX=1 2007-01-19 08:05:39 +01:00
Anselm R. Garbe
a542bdf658 personally I prefer 2px borders 2007-01-18 11:46:39 +01:00
Anselm R. Garbe
96e1b25c8c applied a modified version of Christof Musik's multihead patch (though this is not sure if it works in all cases, have to wait for an ACK by Christof) 2007-01-18 11:11:40 +01:00
Anselm R. Garbe
caf5a16271 moved BORDERPX to config.*.h 2007-01-17 12:36:29 +01:00
Anselm R. Garbe
936e11fd54 Added tag 3.1 for changeset e1c8bef05e6e 2007-01-16 11:41:56 +01:00
Anselm R. Garbe
9715ba82aa removed erealloc (not used) 2007-01-16 11:35:56 +01:00
Anselm R. Garbe
3c35b90dd3 removed unnecessary bx, by, bw variables 2007-01-16 11:33:42 +01:00
Anselm R. Garbe
1d63030665 s/444/555/g - enlightened selected background 2007-01-16 11:28:17 +01:00
Anselm R. Garbe
6a5b41203e removed firefox rule from default.h 2007-01-16 11:26:15 +01:00
Anselm R. Garbe
fbd310972d applied new default colors 2007-01-16 11:25:10 +01:00
Anselm R. Garbe
3059c9c507 applied sanders patch of my config 2007-01-16 11:12:34 +01:00
Anselm R. Garbe
3b18f17d4d Jukka, thanks for being faster than me! 2007-01-15 19:01:57 +01:00
Anselm R. Garbe
72faa1919e changed restack, to fix undrawed tag indicators 2007-01-15 12:07:18 +01:00
Anselm R. Garbe
f8181f64e2 removed drawclient and drawall (they performed useless operations/consumed useless cpu cycles) 2007-01-15 12:04:25 +01:00
Anselm R. Garbe
0045ad87df implemented new color scheme accordingly to Sanders proposal 2007-01-14 22:37:34 +01:00
Anselm R. Garbe
ceea528eff removed mode label stuff 2007-01-14 22:32:26 +01:00
Anselm R. Garbe
6c5dc7017c removed client title bar 2007-01-14 22:27:29 +01:00
Anselm R. Garbe
ae0b4fdd92 added missing space 2007-01-12 21:56:01 +01:00
Anselm R. Garbe
b3cea4d388 nah the last change feels bad 2007-01-12 13:06:15 +01:00
Anselm R. Garbe
d296081321 changed incnmaster shortcuts in config.arg.h 2007-01-12 12:48:51 +01:00
Anselm R. Garbe
177ed7e5de Added tag 3.0 for changeset 76b58d21ea98 2007-01-12 12:37:12 +01:00
Anselm R. Garbe
f679125206 removing to allow nmaster=0 2007-01-12 12:15:06 +01:00
Anselm R. Garbe
58beead14d this looks better now ;) 2007-01-11 16:38:45 +01:00
Anselm R. Garbe
e1811c37ca switching to arabic tags 2007-01-11 16:03:06 +01:00
Anselm R. Garbe
a24a6701c8 small fix of initial numlockmask value 2007-01-11 15:51:15 +01:00
Anselm R. Garbe
d108cfa7fc allowing nmaster=0 (I think that's a straight idea) 2007-01-11 13:43:38 +01:00
Anselm R. Garbe
92cb5ebb7c added Button{4,5} description to dwm.1 2007-01-10 12:56:49 +01:00
Anselm R. Garbe
653826572d added comment to %u in config.default.h, added Button{4.5} support on mode label 2007-01-10 12:54:23 +01:00
Anselm R. Garbe
5a5851bac2 reorganized 2007-01-08 17:36:56 +01:00
Anselm R. Garbe
1d4a24dae0 implemented nmaster appearance in mode label (using %u) 2007-01-08 17:33:24 +01:00
Anselm R. Garbe
a768ea93fd Added tag 2.9 for changeset 3a5910fac3cc 2007-01-08 13:01:37 +01:00
Anselm R. Garbe
c95fe6e24b I received Sander's complain just in time ;) 2007-01-08 12:56:35 +01:00
Anselm R. Garbe
c75168186b changed status fg 2007-01-08 12:43:10 +01:00
Anselm R. Garbe
3a96c9a8d5 fofofo 2007-01-08 12:18:49 +01:00
Anselm R. Garbe
1617b95598 extended default tags to 1-9 2007-01-08 12:12:02 +01:00
Anselm R. Garbe
726ae5bf6d small grammar fix of dwm.1 2007-01-07 19:24:21 +01:00
Anselm R. Garbe
3e11b38349 changed a term in dwm.1 2007-01-07 14:38:41 +01:00
Anselm R. Garbe
16ed879524 using shorter tags, using mon instead of cert 2007-01-05 22:27:26 +01:00
Anselm R. Garbe
20d7b5d058 roman numerals suck badly, reverting 2007-01-05 22:22:18 +01:00
Anselm R. Garbe
11a08b9cfc switching to roman tags, I need more tags 2007-01-05 22:13:44 +01:00
Anselm R. Garbe
c2b753d917 I inc/decrease on the fly, feels better 2007-01-05 22:03:09 +01:00
Anselm R. Garbe
6c767072a3 allowing swap() for first master client 2007-01-05 22:00:15 +01:00
Anselm R. Garbe
e9cfae7aba prevent pop() if first sel == nexttiled(clients) 2007-01-05 21:56:57 +01:00
Anselm R. Garbe
7ac0de8350 removed swap(), implemented pop for everything 2007-01-05 21:55:43 +01:00
Anselm R. Garbe
0b7c0f10ee preserving c1->snext and c2->snext in swap() as well. 2007-01-05 21:52:17 +01:00
Anselm R. Garbe
51f6405b0d fixing some minor issues 2007-01-05 16:35:45 +01:00
Anselm R. Garbe
6096f8a113 removed the term clients from dwm.1 2007-01-05 15:37:10 +01:00
Anselm R. Garbe
d939f301fa adding some prevention that master clients get smaller than bh 2007-01-05 15:16:39 +01:00
Anselm R. Garbe
8c4623da80 changed shortcuts to M-i and M-d 2007-01-05 15:11:01 +01:00
Anselm R. Garbe
0faaba04a5 allowing zoom within master area as well 2007-01-05 15:08:25 +01:00
Anselm R. Garbe
ec7a5ffff1 changed plus key to MODKEY-Shift-plus (US-layout restrictions ;) 2007-01-05 15:04:49 +01:00
Anselm R. Garbe
98afb7b9d0 I prefer two master windows by default 2007-01-05 14:49:18 +01:00
Anselm R. Garbe
06bae9dfb7 added MODKEY-{plus,minus} shortcuts (increasing/decreasing master clients) 2007-01-05 14:48:16 +01:00
Anselm R. Garbe
0b80d1842d experimental version which allows master clients being increased/decreased 2007-01-05 12:50:39 +01:00
Anselm R. Garbe
d7ec23a5db fixed comment of drawclient() 2007-01-04 16:45:28 +01:00
Anselm R. Garbe
2cf8ef9520 switching bakc to my previous color favorit 2007-01-04 14:51:43 +01:00
Anselm R. Garbe
184471b4bb renamed drawtitle into drawclient 2007-01-04 14:17:25 +01:00
arg@mig29
21898c6049 using more thinkpad compliant colors 2007-01-02 16:29:01 +01:00
arg@mig29
6a9300e815 changed arg's color scheme 2007-01-02 16:25:01 +01:00
arg@mig29
ac24f132db corrections 2007-01-02 15:44:19 +01:00
arg@mig29
cb4aa5bc35 next version will contain updated copyright notice 2007-01-02 15:37:58 +01:00
arg@mig29
beac539f31 Added tag 2.8 for changeset 107719a9ce3bd0c79f9f1f626596eb338a276561 2007-01-02 14:53:02 +01:00
arg@mig29
b5d297f02f fixed cleanup, using clients instead of sel 2007-01-02 14:40:18 +01:00
arg@mig29
9056d7ea88 changed comment of updatesizehints 2007-01-02 12:28:02 +01:00
arg@mig29
ebd17e4827 renamed updatesize into updatesizehints (thx to Sander for this hint) 2007-01-01 19:10:31 +01:00
arg@mig29
7e59c89250 small simplification to dotile() (thx to Ross for this hint) 2006-12-20 12:07:05 +01:00
arg@mig29
9e4e4d9022 migrated arg's config.h to new dmenu command line options 2006-12-19 11:38:08 +01:00
arg@mig29
71fd06f843 added Solaris hints 2006-12-18 14:39:34 +01:00
arg@mig29
58e6866d86 Added tag 2.7 for changeset 21951c0dfbae5af68ed77821a4d87253ee91803f 2006-12-14 08:50:49 +01:00
arg@mig29
c7da124149 applied Sanders patch 2006-12-13 14:15:38 +01:00
arg@mig29
21bd90d7d3 fixed man page, status bar displays EOF instead of "broken pipe" 2006-12-13 13:53:10 +01:00
arg@mig29
c8f96b5b4c added the java odyssee to CAVEATS section 2006-12-13 13:42:17 +01:00
arg@mig29
ded60365d4 removed Client->grav 2006-12-12 19:14:38 +01:00
arg@mig29
629647dfee removed gravitate for the moment 2006-12-11 16:45:02 +01:00
arg@mig29
4ca3d861f0 disabling configure() during resize 2006-12-11 09:42:16 +01:00
arg@mig29
069e7a6e24 made gravitate effectless, waiting for complains ;) 2006-12-11 08:31:30 +01:00
arg@mig29
ac6e34ea06 fixed diagnostic error message 2006-12-08 11:11:52 +01:00
arg@mig29
a308b7507a removed the hardcoded fixed fallback, it is useless in non-Latin1 environments 2006-12-08 10:40:09 +01:00
arg@mig29
630e7ff26f we don't use the term clients anymore, windows is the better term 2006-12-07 16:38:57 +01:00
arg@mig29
3764ab471b Added tag 2.6 for changeset 5308dd22b6ee8e3218c81d9e7e4125f235bb5778 2006-12-07 14:55:29 +01:00
arg@mig29
a3319c6f8e found compromise for fonts 2006-12-07 14:39:31 +01:00
arg@mig29
66c699a701 nah, people should define 'fixed' to be compatible with their locale 2006-12-07 12:03:15 +01:00
arg@mig29
aaf1e44da9 using a UTF-8 capable fixed font 2006-12-07 11:55:04 +01:00
arg@mig29
1ef2307ec4 switching to uxterm again, I get kretze from this urxvt crap 2006-12-07 10:43:34 +01:00
arg@mig29
d42c3ba2dc with this patch everything works fine for me 2006-12-07 10:02:46 +01:00
arg@mig29
4b06155873 don't use Xlocale crap, let's use locale.h instead 2006-12-07 09:49:45 +01:00
arg@mig29
857d825eeb using the portable Xmb+UTF-8 way of life, will see if this works well... 2006-12-07 09:47:55 +01:00
arg@mig29
6b345353e3 improved the memory leak prevention 2006-12-06 11:19:06 +01:00
arg@mig29
ab3b3a8f61 making terminus more explicit a regular font (otherwise olique font might be used in some setups like mine). 2006-12-05 14:21:18 +01:00
arg@mig29
71b82fb1f6 also setting LC_CTYPE only 2006-12-05 13:31:29 +01:00
arg@mig29
9bd9ea423e enforcing using fontsets even if they are incomplete for some encodings 2006-12-05 10:30:31 +01:00
arg@mig29
99964398e7 Added tag 2.5.1 for changeset c7f84f23ec5aef29988dcdc4ec22a7352ee8f58e 2006-12-04 21:01:14 +01:00
arg@mig29
7009ebfa69 hotfix of a serious crashing bug 2006-12-04 21:00:26 +01:00
arg@mig29
760e23dd3a Added tag 2.5 for changeset dcbbfabc8ecc5f33a6cc950584de87da1a368045 2006-12-04 15:39:43 +01:00
arg@mig29
c53d9d516a applied Manuel's regex patch 2006-12-03 11:21:25 +01:00
arg@mig29
7739e6b466 made squares equally sized, and 1px bigger 2006-12-01 17:55:46 +01:00
arg@mig29
4881857458 if client is focused, the emptysquare don't needs to be drawed 2006-12-01 17:51:05 +01:00
arg@mig29
c73d5cb7b6 and the winner is 2006-12-01 17:45:27 +01:00
arg@mig29
6458803d21 sander1 proposal 2006-12-01 17:36:37 +01:00
arg@mig29
6e72d781f7 dood 2006-12-01 16:55:42 +01:00
arg@mig29
4e926a9ef2 darkening the fg colors somewhat 2006-12-01 15:50:22 +01:00
arg@mig29
4ba3cfaee9 less obtrusive indicator (only a top line) 2006-12-01 15:03:42 +01:00
arg@mig29
e655e8a7d5 final2 indicator 2006-12-01 12:52:16 +01:00
arg@mig29
c34e4e4b39 removing the -1 on final indicators, looks cleaner 2006-12-01 12:39:13 +01:00
arg@mig29
a678ee6365 final indicators 2006-12-01 12:25:23 +01:00
arg@mig29
49f0ee329d changed things like I described in last mail 2006-12-01 10:16:10 +01:00
arg@mig29
0c9d9a3d94 improved tag indicator 2006-12-01 09:52:15 +01:00
arg@mig29
89e1acb0bb removed viewall signature from dwm.h 2006-11-30 17:01:39 +01:00
arg@mig29
c2ed26b711 next version will be 2.5 2006-11-30 15:51:26 +01:00
arg@mig29
42fd392e05 removed viewall(), replaced with view(-1); added tag(-1) to tag a client with all tags (new key combo MODKEY-Shift-0) 2006-11-30 15:27:43 +01:00
arg@mig29
e06447ee88 Added tag 2.4 for changeset 32b246925086910d63147483160281a91a47479f 2006-11-30 09:19:52 +01:00
arg@mig29
683dabe5e6 extended dwm.1 with last change 2006-11-28 17:36:00 +01:00
arg@mig29
3aff96177c togglefloat should only work in dotile mode (thanks to Sander for this hint) 2006-11-28 17:35:31 +01:00
arg@mig29
0a915eba8f applied Alex Elide's tricky patch, thanks! 2006-11-27 17:51:50 +01:00
arg@mig29
19dcbc5717 returning to old Key struct 2006-11-27 17:49:58 +01:00
arg@mig29
d2a4952956 applied Szabolcs Nagy's patch (thank you!) 2006-11-27 17:46:02 +01:00
arg@mig29
0c97b21b61 applied patch by Jukka 2006-11-27 17:30:06 +01:00
arg@mig29
19390b1a91 changing Key.func into Key.func[NFUNCS], this allows sequences execution of functions per keypress (avoids implementing useless masterfunctions which call atomic ones) 2006-11-27 13:21:38 +01:00
arg@mig29
8dc86051df added man page entry 2006-11-27 11:05:47 +01:00
arg@mig29
46d5f9d1bf added togglefloat to hg tip (i consider this useful for some cases), using MODKEY-Shift-space as shortcut 2006-11-27 10:57:37 +01:00
arg@mig29
35e96b8deb applied Jukka's patch preventing some cornercases and making the EOF error message correct 2006-11-27 10:29:47 +01:00
arg@mig29
2210ea7e3b applied yet another proposal of Manuel 2006-11-26 15:43:16 +01:00
arg@mig29
61a1910f91 applied Jukka's sizeof K&R compliance patch, applied Manuels' last-line printage proposal for stdin reading. 2006-11-26 14:26:53 +01:00
arg@mig29
27ef73507b applied Jukka's stdinread patch 2006-11-26 13:31:36 +01:00
arg@mig29
2b35fb643e next version will be 2.4 2006-11-25 19:26:31 +01:00
arg@mig29
478f6f95f1 applied Manuels patch (thanks to Manuel!) 2006-11-25 19:26:16 +01:00
arg@mig29
44411d2d48 small fix of man page 2006-11-24 17:02:41 +01:00
arg@mig29
a2175cf71a Added tag 2.3 for changeset 719b37b37b0df829d7cf017ac70e353088fe5849 2006-11-24 15:46:32 +01:00
arg@mig29
4606d218c3 using the term 'indicated' instead of 'higlighted' 2006-11-23 16:00:16 +01:00
arg@mig29
d37d0f24e6 updated man page with the bottom right corner indicator 2006-11-23 15:59:16 +01:00
arg@mig29
321e8d51ed fififif 2006-11-22 16:17:50 +01:00
arg@mig29
78f4b51757 added a similiar patch to Daves solution to indicate if there are clients with a specific tag 2006-11-22 14:57:09 +01:00
arg@mig29
7d168a2621 returning to old bar colorization behavior, like sander proposed for consistency reasons 2006-11-21 15:03:08 +01:00
arg@mig29
931e712eac applied Gottox patches 2006-11-21 14:49:13 +01:00
arg@mig29
4ec04209e0 using iso10646 explicitely in arg's config.h 2006-11-21 12:17:47 +01:00
arg@mig29
82ddba88a2 Added tag 2.2 for changeset 7e92f58754ae6edb3225f26d754bd89c1ff458cf 2006-11-21 09:41:33 +01:00
arg@mig29
52a8cc8d46 nah reverting to my prev style, that's really the best 2006-11-18 21:33:33 +01:00
arg@mig29
d175df8aa3 applying aluminium style for arg's config.h 2006-11-18 21:26:53 +01:00
arg@mig29
b003a35fde applied Gottox' windowarea patch 2006-11-16 14:40:57 +01:00
arg@mig29
df1a0f9445 using a more blue-ish color... 2006-11-08 17:16:38 +01:00
arg@mig29
5b07b85838 making the selected color more lightning 2006-11-08 17:10:51 +01:00
arg@mig29
f320cd203b next release will be 2.2 2006-11-03 09:22:40 +01:00
arg@mig29
f78c16f8c6 applied Jukkas patch 2006-11-03 08:29:39 +01:00
arg@mig29
0c5f47e720 Added tag 2.1 for changeset a2c465098a3b972bbed00feda9804b6aae1e9531 2006-11-02 10:18:22 +01:00
arg@mig29
4b5b3d90af renamed resizecol into resizemaster 2006-10-31 12:07:32 +01:00
arg@mig29
2cce4b95cd applied Gottox patch to simplify the resizing of col, instead of resizing the current area, it only resizes the master area in the future (seems more predictable) 2006-10-31 12:06:38 +01:00
arg@mig29
8e6eb52196 Added tag 2.0 for changeset 12deea36603da407e3f32640048846a3bd74a9ec 2006-10-31 09:02:42 +01:00
arg@mig29
04b633ddf3 make sure that changing sx has no impact on snapping 2006-10-31 09:02:16 +01:00
arg@mig29
b76561a212 in a 1920x1200 setup 40 pixels of snap value are much better than 20 2006-10-30 12:40:10 +01:00
arg@mig29
51c7589c87 fixed stupid bug of snap-to-screen 2006-10-30 12:26:55 +01:00
arg@mig29
99785382ae changing snap priority 2006-10-30 12:07:00 +01:00
arg@mig29
dc1690ce0f removed useless abs() calls 2006-10-30 12:04:08 +01:00
arg@mig29
b6614261ea added screen-border snapping in floating mode, feels quite well 2006-10-30 11:58:05 +01:00
arg@mig29
91e569ca37 and another fix 2006-10-27 13:29:35 +02:00
arg@mig29
0f395c1b11 applied sanders try2 patch 2006-10-27 13:28:26 +02:00
arg@mig29
2b13e7466f applied sanders max size fix 2006-10-27 12:05:47 +02:00
arg@mig29
0982e47408 stupid urxvt needs bg to highlight selections in a sane way, though that makes sense to some extend 2006-10-27 10:24:15 +02:00
arg@mig29
b93ebcf42f reverting to original 2006-10-26 15:41:40 +02:00
arg@mig29
a08d83ba62 applied sander's config.*h nitpick patch 2006-10-26 15:29:20 +02:00
arg@mig29
2b7c275ce8 some other change 2006-10-26 15:26:17 +02:00
arg@mig29
040d0f48a0 apply small fix to prevent apps like mplayer wandering when toggling fullscreen 2006-10-26 15:05:45 +02:00
arg@mig29
724f35a664 forgot to use -tr, which actually prevents the ugly flicker (using xsetroot -solid black as root window pixmap to make this work nicely) 2006-10-26 12:22:26 +02:00
arg@mig29
6f3872edbd using MASTER 600 again, it is definately better, and using urxvtc for the moment (it doesn't flickers on refreshes, but this is not because of Marc Lehmann, it is because of the original rxvt code) 2006-10-26 12:13:41 +02:00
arg@mig29
87324e680c changing MASTER in config.arg.h from 600 to 550 per thousand 2006-10-26 11:21:45 +02:00
arg@mig29
c2b908f603 my new 1920x1200 Z61p arrived, now I can use terminus in a sane way... 2006-10-26 10:21:27 +02:00
Anselm R. Garbe
d7734f996f moved MOUSEMASK into event.c (not used in other places) 2006-10-16 16:50:03 +02:00
Anselm R. Garbe
8b68890650 now being at v2.0 2006-10-14 18:21:39 +02:00
Anselm R. Garbe
b60406cb9b using lsx instead of Jukka's shell construct 2006-10-13 18:47:24 +02:00
Anselm R. Garbe
ce9a9934ec hotfix 2006-10-06 14:01:53 +02:00
Anselm R. Garbe
720b2abe17 Added tag 1.9 for changeset a5567a0d30112822db2627a04a2e7aa3b6c38148 2006-10-06 13:43:59 +02:00
Anselm R. Garbe
5983c00b95 do* has no Arg arument anymore (never called directly) 2006-10-06 13:06:37 +02:00
Anselm R. Garbe
6651dd7fd9 code polishing, removed unnecessary newlines 2006-10-06 11:50:15 +02:00
Anselm R. Garbe
acdea31916 yet another small fix and simplification of dotile 2006-10-06 11:37:12 +02:00
Anselm R. Garbe
10885d349a removed the stack position stuff 2006-10-05 19:27:28 +02:00
Anselm R. Garbe
1c1d09f3e9 small boundary check fix 2006-10-05 18:23:28 +02:00
Anselm R. Garbe
0384faeee5 changing MASTER value from percent into per mill 2006-10-05 18:18:47 +02:00
Anselm R. Garbe
6cca3999c8 Added tag 1.8 for changeset c71952fa3c7ca848ec38a6923b5c6d0e18fff431 2006-10-05 19:00:58 +02:00
Anselm R. Garbe
69408d384d simplified dotile(), removed misleading line 2006-10-05 13:47:30 +02:00
Anselm R. Garbe
4aea423f06 final fix for man page 2006-10-05 13:44:48 +02:00
Anselm R. Garbe
6fc8a63041 keep master ratio on resizecol -> arrange 2006-10-05 12:59:35 +02:00
Anselm R. Garbe
2583a7c0d1 yet another simplification of dotile() 2006-10-05 12:18:04 +02:00
Anselm R. Garbe
0ef6e3103c simplified dotile() 2006-10-05 12:13:24 +02:00
Anselm R. Garbe
7c052b37c8 applied resizecol fix by Jukka 2006-10-05 11:00:55 +02:00
Anselm R. Garbe
d9c475d7f4 Button3 click on mode label toggles stack position now 2006-10-05 09:37:11 +02:00
Anselm R. Garbe
c8e57332d1 applied dave's highlight patch for big fonts 2006-09-29 19:06:27 +02:00
Anselm R. Garbe
c045459917 using ff tiled again, seems to work perfectly with new bottom stack 2006-09-29 18:40:32 +02:00
Anselm R. Garbe
e0f64e63db applied ality's hardcode-0 patches 2006-09-29 18:21:02 +02:00
Anselm R. Garbe
dddd58a8cd added symbols for different modes 2006-09-29 18:08:20 +02:00
Anselm R. Garbe
010fd21b20 removed useless updatemaster 2006-09-29 17:25:49 +02:00
Anselm R. Garbe
1802fad2f9 documented the new behavior in man page 2006-09-29 17:20:05 +02:00
Anselm R. Garbe
f833d109d1 fixed small offset issue 2006-09-29 17:15:05 +02:00
Anselm R. Garbe
7225c99903 fixed the z-layer issue described on mailinglist 2006-09-29 17:12:57 +02:00
Anselm R. Garbe
36178933ed removed the direction flipping 2006-09-29 17:02:56 +02:00
Anselm R. Garbe
ad0da9a571 small fix of a corner case 2006-09-29 16:54:15 +02:00
Anselm R. Garbe
6646468125 small change 2006-09-29 16:44:02 +02:00
Anselm R. Garbe
fee8df6ccf added the new dotile as described on ml 2006-09-29 16:22:20 +02:00
Anselm R. Garbe
8fa47ac679 prelim of dotile() 2006-09-29 14:39:03 +02:00
Anselm R. Garbe
b427a2c6cb I changed sanders patch to fix the ff issue to be simplier, though it needs testing if this really fixes the issue 2006-09-29 12:56:01 +02:00
Anselm R. Garbe
14d05e7c72 first step to a more flexible dotile() algorithm 2006-09-29 12:38:27 +02:00
Anselm R. Garbe
a118a57fe3 renamed column into area 2006-09-28 21:29:20 +02:00
Anselm R. Garbe
02cea3b47e small change to README 2006-09-28 16:14:48 +02:00
Anselm R. Garbe
1c2d673ded applied Jukkas patch 2006-09-28 14:03:39 +02:00
Anselm R. Garbe
c34df2c1b6 Added tag 1.7.1 for changeset d5ad819f2a66a40fa75dd2e44429f3bfc884d07b 2006-09-27 17:21:25 +02:00
Anselm R. Garbe
6092aa977e fixing the settags issue, preparing 1.7.1 2006-09-27 17:18:46 +02:00
arg@zarathustra
c9cc2b385a removed an unused var 2006-09-26 17:42:14 +02:00
arg@zarathustra
b39d0c521a Added tag 1.7 for changeset 4dbdb61c8b8ce21dee5c7050a6b103855964ed20 2006-09-26 17:39:30 +02:00
arg@mmvi
e87bed6df2 updated README 2006-09-26 14:32:02 +02:00
arg@mmvi
4ee05b3294 small change 2006-09-26 14:08:42 +02:00
arg@mmvi
e81eb46a78 added slight error check to getcolor 2006-09-26 13:49:16 +02:00
arg@mmvi
f315832f75 small fix 2006-09-26 13:30:30 +02:00
arg@mmvi
97ced11e53 changed order of colordefs in config.h's, changed config.arg.h to fit to new dmenu 2006-09-26 13:24:14 +02:00
arg@mmvi
4d6c4d36ce removed useless debug info 2006-09-26 08:17:35 +02:00
arg@mmvi
b4d53bf194 added configure(), but this doesn't really fix those frking broken SDL apps 2006-09-26 07:40:19 +02:00
arg@mmvi
67bc08d1b9 slight change of event handling order 2006-09-25 21:28:00 +02:00
arg@mmvi
bcb07de750 simplified mouse resizals 2006-09-25 21:19:18 +02:00
arg@mmvi
7d7cde0fd6 applied sanders jukka patch 2006-09-25 20:38:30 +02:00
arg@mmvi
6b25d06d7d applied Jukkas patch 2006-09-25 08:21:51 +02:00
arg@mmvi
cff951c650 removed all dotile checks 2006-09-22 18:48:35 +02:00
arg@mmvi
114cc3ec02 applied Jukkas remark (dunno if this is correct though) 2006-09-22 16:35:49 +02:00
arg@mmvi
3c4b7672a8 applied jukkas patch 2006-09-22 15:39:38 +02:00
arg@mmvi
6de149eb22 man page fix 2006-09-22 14:02:41 +02:00
arg@mmvi
da909dd1e8 ismax toggling on mouse based action 2006-09-22 14:00:54 +02:00
arg@mmvi
67986e81ee hotfix 2006-09-22 13:58:21 +02:00
arg@mmvi
346bdea946 small change to achieve Jukka's last proposal 2006-09-22 13:53:28 +02:00
arg@mmvi
05c10c5776 fixed issue pointed out by Jukka 2006-09-22 11:49:24 +02:00
arg@mmvi
b2cb925d99 patched resizemouse according to sanders remark 2006-09-22 11:24:01 +02:00
arg@mmvi
9fb6502b3b small man page fix 2006-09-22 10:01:51 +02:00
arg@mmvi
9eb226ff78 sander check this 2006-09-22 09:43:21 +02:00
arg@mmvi
e34c4eaf61 slight change to config.arg.h (I use ff floating) 2006-09-22 08:22:39 +02:00
arg@mmvi
9e75bcfc75 updated man page 2006-09-22 08:17:42 +02:00
arg@mmvi
d800ec05ff implemented the maximization as I described on the mailinglist, this feels better to me. 2006-09-22 07:37:56 +02:00
arg@mmvi
bda53ac6ad reviewed client.c 2006-09-20 09:53:21 +02:00
arg@mmvi
4230932563 reviewed util.c 2006-09-20 09:49:32 +02:00
arg@mmvi
f17e898bd1 fixed a nuance in dwm.1 2006-09-20 09:45:39 +02:00
arg@mmvi
886b2088f1 improved intro comment in dwm.h, updated config.mk 2006-09-20 09:40:35 +02:00
arg@mmvi
551d6bb23d some simplifications to intro in dwm.h 2006-09-19 16:13:44 +02:00
arg@mmvi
d504005e91 Added tag 1.6 for changeset ad3fa2d185426c51fd5deceae809770363f8d33c 2006-09-16 11:21:01 +02:00
arg@mmvi
2511b5c675 added visibility check to enternotify as well 2006-09-15 14:21:25 +02:00
arg@mmvi
28aba061ec offscreen client appearance fixes 2006-09-15 10:54:32 +02:00
arg@mmvi
8e37c78ce3 focus() enforces visibility of a client if not NULL 2006-09-15 10:49:05 +02:00
Anselm R. Garbe
ca68975ff8 removed useless inclusion 2006-09-14 11:07:44 +02:00
Anselm R. Garbe
529be52fea fixed executing of dmenu output to handle args correctly 2006-09-12 19:09:04 +02:00
Anselm R. Garbe
ca65478c89 removed a bunch of lines through making function signatures more consistent with my style ( { does not belong to a new line, if function args are single-lined) 2006-09-12 10:57:28 +02:00
Anselm R. Garbe
a1e9362d38 some more simplifications of intro comment in dwm.h, this should suffice for comments in dwm 2006-09-12 09:50:06 +02:00
Anselm R. Garbe
cbfc69e310 made introduction comment in dwm.h shorter 2006-09-12 09:46:19 +02:00
Anselm R. Garbe
1d7674bb22 applied Christof Musik's multihead patch for a pathologic cornercase 2006-09-12 08:27:11 +02:00
Anselm R. Garbe
e6cc22396a added a general comment to dwm.h how dwm is basically organized 2006-09-12 08:14:22 +02:00
Anselm R. Garbe
868159fd0a some other simplifications 2006-09-11 17:31:21 +02:00
Anselm R. Garbe
b597fa4637 fixed some other comments, now also the code side seems to be at a level to be reviewed by experienced programmers 2006-09-11 11:28:28 +02:00
Anselm R. Garbe
d2d394eccf small change to comments, renamed two set* functions in client.c into update* 2006-09-11 10:00:56 +02:00
Anselm R. Garbe
438beeabde small fix 2006-09-11 08:58:58 +02:00
Anselm R. Garbe
281f0981a6 added some comments 2006-09-11 07:40:41 +02:00
Anselm R. Garbe
6ff346bed9 Added tag 1.5 for changeset 728c9089b079721b43c3347124639a29baa22a97 2006-09-08 08:32:08 +02:00
Anselm R. Garbe
0925dd588c applied sanders patch of not manipulating sel 2006-09-08 08:19:54 +02:00
Anselm R. Garbe
6f20315dff really small changes to dwm.1 2006-09-08 07:40:16 +02:00
Anselm R. Garbe
2e68f22118 hotfix 2006-09-07 18:13:19 +02:00
Anselm R. Garbe
8aa860d270 simplified unmanage 2006-09-07 18:12:40 +02:00
Anselm R. Garbe
15abade272 using a global stack for focus recovery on arrange() - seems to work great 2006-09-07 17:53:40 +02:00
Anselm R. Garbe
7ab8c87281 made markups in dwm.1 more consistent 2006-09-07 09:26:01 +02:00
Anselm R. Garbe
4ff8f71643 small addition to dwm.1 2006-09-07 07:53:29 +02:00
Anselm R. Garbe
d22abeee86 this patch keeps track of global z-layer order of clients which are floating or if floating mode is enabled 2006-09-06 17:31:52 +02:00
Anselm R. Garbe
a33150eb4b no this is better 2006-09-06 15:36:42 +02:00
Anselm R. Garbe
fd00b3a186 does this preserve z order for anthony? 2006-09-06 15:30:28 +02:00
Anselm R. Garbe
e8389a4cc0 maybe this might work 2006-09-06 13:56:46 +02:00
Anselm R. Garbe
6078d756bc Added tag 1.4 for changeset 3cff9403766bf83a9fc2a0aef230115d68de2a8e 2006-09-06 12:19:07 +02:00
Anselm R. Garbe
57c49fe867 prepared dwm-1.4 update 2006-09-06 12:18:57 +02:00
Anselm R. Garbe
c60de1acd4 drawstatus even if no client exists 2006-09-06 12:10:43 +02:00
Anselm R. Garbe
69b738c097 sanders solution is convincing and elegant 2006-09-06 11:54:16 +02:00
Anselm R. Garbe
da0b2a2f31 seems to preserve floating client z-layer order (even with reorder() calls) 2006-09-06 11:46:35 +02:00
Anselm R. Garbe
2378a558a2 Added tag 1.4 for changeset a6b8994af16491220db0199623bd57d061e06143 2006-09-06 10:54:10 +02:00
Anselm R. Garbe
f18ed615ae small fix 2006-09-06 10:03:21 +02:00
Anselm R. Garbe
f6656fffb4 made args mode symbols the default ones (the default ones look too ugly) 2006-09-06 09:23:34 +02:00
Anselm R. Garbe
aaad7bfd15 moved transient_for tag inheritance to settags 2006-09-06 09:21:17 +02:00
Anselm R. Garbe
0915da8842 no, reodering floating clients definately breaks the manage() policy which attaches all clients zoomed (otherwise higher-weight clients couldn't be attached zoomed, which sucks) 2006-09-06 09:13:31 +02:00
Anselm R. Garbe
0d0e8bde13 no, ordering floating clients at the end seems better 2006-09-05 19:26:34 +02:00
Anselm R. Garbe
838a1ff950 fix 2006-09-05 18:43:15 +02:00
Anselm R. Garbe
e1315fd40c this makes sure the issue mentioned by sander 2006-09-05 18:04:22 +02:00
Anselm R. Garbe
52a3ab1042 fixing zoom 2006-09-05 17:10:48 +02:00
Anselm R. Garbe
a82e7b765e fixing two off-by-ones 2006-09-05 16:11:52 +02:00
Anselm R. Garbe
0ed0fa4d5b ach ich will auch Alt-s 2006-09-05 16:05:09 +02:00
Anselm R. Garbe
ec85fddb9a applied checking existance of >2 tiles patch (proposed by sander) to zoom and resizecol 2006-09-05 16:00:09 +02:00
Anselm R. Garbe
3a1343a245 renamed resizetile into resizecol 2006-09-05 13:52:23 +02:00
Anselm R. Garbe
9066ee2eb4 well ok, added Mod-s to default bindings (however, I don't need it) 2006-09-05 13:27:43 +02:00
Anselm R. Garbe
40bd21ce63 s/growcol/resizetile/g 2006-09-05 13:25:42 +02:00
Anselm R. Garbe
4633fbec61 right, multihead issue is not involved with growcol 2006-09-05 13:21:59 +02:00
Anselm R. Garbe
25060031a5 hotfix 2006-09-05 13:20:29 +02:00
Anselm R. Garbe
c7ae6334b7 applied a fix related to Sanders remark to growcol 2006-09-05 13:19:18 +02:00
Anselm R. Garbe
eac04882b4 sanders toggletag patch is much more elegant 2006-09-05 09:37:45 +02:00
Anselm R. Garbe
6499fc4f93 I really need column growing, now pushing upstream 2006-09-05 09:02:37 +02:00
Anselm R. Garbe
04f27a5438 don't access sel in restack without checking for NULL (multihead crashing bug) 2006-09-05 08:37:34 +02:00
Anselm R. Garbe
1b3903d6e9 fixing c->weight handling 2006-09-05 08:24:00 +02:00
Anselm R. Garbe
cc05093b0d removed some useless tags 2006-09-04 19:19:37 +02:00
Anselm R. Garbe
6436dd4438 after 1.3 2006-09-04 17:52:46 +02:00
Anselm R. Garbe
26c50c780e Added tag 1.3 for changeset f5f5cbf016a94b48a8fe9c47f0736e96d166d5d4 2006-09-04 17:52:16 +02:00
Anselm R. Garbe
01d13b0c49 retagged 2006-09-04 17:52:12 +02:00
Anselm R. Garbe
f15f45a9f8 simplified manage 2006-09-04 17:39:33 +02:00
Anselm R. Garbe
1b2e149cb4 removed html crap 2006-09-04 17:37:31 +02:00
Anselm R. Garbe
6136640ec9 Added tag 1.3 for changeset dd44dc937e8b0a46abf1a15a333dba5304e4fe89 2006-09-04 17:21:18 +02:00
Anselm R. Garbe
95d8423823 hotfixing with sanders hint 2006-09-04 17:21:15 +02:00
Anselm R. Garbe
de6411c338 Added tag 1.3 for changeset 6413ea66b1c2496cfc2173fe58df67cb965eb1da 2006-09-04 17:18:01 +02:00
Anselm R. Garbe
e316cf53f6 fixing the issue that new clients appear lowered 2006-09-04 17:02:13 +02:00
Anselm R. Garbe
c107db57db removed unused vars 2006-09-04 12:23:41 +02:00
Anselm R. Garbe
d39d00057c reducing focus calls (sanders patch) 2006-09-04 10:10:08 +02:00
Anselm R. Garbe
26157e6973 applied Sanders max_and_focus.patch 2006-09-04 08:55:49 +02:00
Anselm R. Garbe
6d22782e8f simplified buttonpress 2006-09-01 15:31:59 +02:00
Anselm R. Garbe
1836b6740d applied sanders patch 2006-09-01 10:32:50 +02:00
Anselm R. Garbe
924a088812 reorder was misssing in Ross version of viewall 2006-08-31 18:08:28 +02:00
Anselm R. Garbe
bab575c868 changed shortcut into Mod1-0 2006-08-31 18:04:34 +02:00
Anselm R. Garbe
daae3bba50 added viewall to mainstream (only Ross Mohns version, not the toggle) 2006-08-31 18:02:38 +02:00
Anselm R. Garbe
05fbbbd8dc implemented Button2 press on tags for toggletag on the focused client 2006-08-31 17:49:04 +02:00
Anselm R. Garbe
4c368bcd24 applied sanders patch to remove unnecessary commit() 2006-08-31 08:48:04 +02:00
Anselm R. Garbe
9927b9e642 small fix in config.arg.h 2006-08-30 13:00:30 +02:00
Anselm R. Garbe
1b492dffc8 Added tag 1.2 for changeset e3179ce2b90451d2807cd53b589d768412b8666b 2006-08-30 12:39:35 +02:00
Anselm R. Garbe
140be1b4b3 prepared 1.2 2006-08-30 12:39:27 +02:00
Anselm R. Garbe
79259acc12 now using Salmi's menu command 2006-08-30 11:21:56 +02:00
Anselm R. Garbe
5a3bea2d69 removed a warning reported by Jukka 2006-08-30 11:15:58 +02:00
Anselm R. Garbe
30d928591d simplified configurerequest 2006-08-29 19:24:28 +02:00
Anselm R. Garbe
70a3e62257 now dwm enforces max screen size also in tiled mode on non-floating clients which are maximized 2006-08-29 18:05:02 +02:00
Anselm R. Garbe
6828fba7a0 fixed 2006-08-29 17:33:27 +02:00
Anselm R. Garbe
aa1bda8164 configurenotify remembers max geom now, and restores this if necessary, however it accepts to touch the max size on configurerequest, this shouldn't break fillscreen apps (tested with mplayer) 2006-08-29 17:31:55 +02:00
Anselm R. Garbe
157ea539a2 applied patch similiar proposed by dave tweed 2006-08-29 17:11:37 +02:00
Anselm R. Garbe
c3c94c0e0a improved selection policy 2006-08-29 15:28:29 +02:00
Anselm R. Garbe
9d73909075 still something wrong with reorder() 2006-08-29 13:40:09 +02:00
Anselm R. Garbe
016c54196e this algorithm seems to keep order for any scenario 2006-08-29 09:57:57 +02:00
Anselm R. Garbe
5056bb952d fix client position in list also on tag and toggletag 2006-08-29 09:25:14 +02:00
Anselm R. Garbe
8a6679b3b4 added attach/detach functions which don't attach at the begin of list, but at the slot of a first match of the tags of a client 2006-08-29 09:23:44 +02:00
Anselm R. Garbe
7b6d5ff298 removed crappy variables 2006-08-28 14:32:51 +02:00
Anselm R. Garbe
846850914d changed config.arg.h - I really need the 4th tag 2006-08-28 12:27:00 +02:00
Anselm R. Garbe
4e6c513ac2 updated html page 2006-08-28 10:21:40 +02:00
Anselm R. Garbe
db9cda6a7d Added tag 1.1 for changeset 44a55e6e46bf6c231780b09d919977d6f01083de 2006-08-28 10:19:55 +02:00
Anselm R. Garbe
a50b15a9e9 added a comment to spawn 2006-08-28 08:17:27 +02:00
Anselm R. Garbe
0a25fe9188 applied sanders focus_ patches 2006-08-28 08:06:50 +02:00
Anselm R. Garbe
2dd5212a79 applied sanders somepatches.patch 2006-08-28 08:02:29 +02:00
Anselm R. Garbe
00e95e1f38 oh frking dear big font... 2006-08-25 18:14:55 +02:00
Anselm R. Garbe
0a0759132c term enlightened 2006-08-25 18:05:18 +02:00
Anselm R. Garbe
5cf362c7d0 switching to darker colorscheme with larger font 2006-08-25 18:03:56 +02:00
Anselm R. Garbe
413be1112a patched arg.h 2006-08-25 17:42:58 +02:00
Anselm R. Garbe
8233dc8568 new stuff 2006-08-25 17:34:03 +02:00
Anselm R. Garbe
afa8b3bcd9 switching to dark colors again 2006-08-25 17:31:57 +02:00
Anselm R. Garbe
c518345f40 updated man page of dwm 2006-08-25 16:21:45 +02:00
Anselm R. Garbe
afe6ac9923 changed order of options 2006-08-25 16:15:13 +02:00
Anselm R. Garbe
e995c1b532 trying a different configuration 2006-08-25 15:48:44 +02:00
Anselm R. Garbe
e36929292e removed small 1px gap, somehow without it things feel better 2006-08-25 15:37:00 +02:00
Anselm R. Garbe
03128f78df oops 2006-08-25 15:24:18 +02:00
Anselm R. Garbe
7d4a5e654c fixed typo 2006-08-25 15:21:49 +02:00
Anselm R. Garbe
41ba7a7984 s/TILED/TILE/g 2006-08-25 15:16:20 +02:00
Anselm R. Garbe
aa471f2d65 removed a bunch of lines, made mode symbols configurable 2006-08-25 15:12:32 +02:00
Anselm R. Garbe
d37dfa1bed changed symbols for float/tiled mode, added mouse-driven mode toggle to buttonpress() 2006-08-25 15:06:38 +02:00
Anselm R. Garbe
9f35cc52fe small fix to separate client title from right-most tag 2006-08-25 14:46:01 +02:00
Anselm R. Garbe
f1fe19bc2b restored config.arg.h 2006-08-25 13:02:07 +02:00
Anselm R. Garbe
b55bd709ee new color stuff/new rendering stuff 2006-08-25 12:59:45 +02:00
Anselm R. Garbe
9833610356 back to 3 colors 2006-08-25 07:54:49 +02:00
Anselm R. Garbe
de7fc0011e fixed 2006-08-24 12:07:10 +02:00
Anselm R. Garbe
2e0c767d74 3->4 colors 2006-08-24 12:04:56 +02:00
Anselm R. Garbe
a5379e901c Added tag 1.0 for changeset bbc98e77ae89a7c9232a5be0835f60ea00d8036e 2006-08-24 10:28:50 +02:00
Anselm R. Garbe
a039d51d5f prepared dwm-1.0 2006-08-24 10:25:05 +02:00
Anselm R. Garbe
60b3dceccf yet another fix 2006-08-24 10:20:00 +02:00
Anselm R. Garbe
c2ac851b90 small man page fix 2006-08-24 10:18:42 +02:00
Anselm R. Garbe
c976bc6c2c found less intrusive way 2006-08-24 09:41:41 +02:00
Anselm R. Garbe
2e834e941f changing tag indicator through underline 2006-08-24 09:25:10 +02:00
Anselm R. Garbe
77e5f3167c black on light is really better, I notice this after all 2006-08-23 19:05:03 +02:00
Anselm R. Garbe
7e597ae204 updated man page 2006-08-23 18:50:46 +02:00
Anselm R. Garbe
c39df91ab9 applied tag drawing change to man page 2006-08-23 14:40:44 +02:00
Anselm R. Garbe
af1158d105 implemented right tag drawing in the status bar and titlebars 2006-08-23 14:38:25 +02:00
Anselm R. Garbe
b739721d9e removed a blank line 2006-08-23 13:04:43 +02:00
Anselm R. Garbe
7711ab6707 eliminated sentinel warning 2006-08-23 12:28:39 +02:00
Anselm R. Garbe
d370c32f69 small fix of man page 2006-08-23 12:10:55 +02:00
Anselm R. Garbe
d6a6eca71d implemented class:inst:title matching 2006-08-23 12:08:37 +02:00
Anselm R. Garbe
39ffc18635 applied zero_to_five patch 2006-08-23 12:03:25 +02:00
Anselm R. Garbe
3e972ec84d tags appear in the left again 2006-08-23 11:33:50 +02:00
Anselm R. Garbe
b5159dfd2f separated setup stuff into main.c:setup() - this makes main() more readable 2006-08-23 10:21:57 +02:00
Anselm R. Garbe
07c2659806 updated man page 2006-08-22 19:56:29 +02:00
Anselm R. Garbe
dc83b9e988 titlebars contain tags in the right now 2006-08-22 19:55:20 +02:00
Anselm R. Garbe
8b4bc8270a fixed default key bindings (indexes of tags were screwed up) 2006-08-22 18:08:25 +02:00
Anselm R. Garbe
0ff80653d3 rearranged getproto 2006-08-22 17:40:21 +02:00
Anselm R. Garbe
352e1b4c81 removed winprop (merged into getproto) 2006-08-22 17:38:59 +02:00
Anselm R. Garbe
aa13727067 separated several functions into view.c 2006-08-22 16:50:21 +02:00
Anselm R. Garbe
595028614b removed DEFTAG 2006-08-22 16:42:29 +02:00
Anselm R. Garbe
6a3ae5e26a removed badmalloc (thx for the pointer to Uriel) 2006-08-22 16:06:11 +02:00
Anselm R. Garbe
8c334ee078 rxvt is quite slow under OpenBSD 2006-08-22 10:06:11 +02:00
Anselm R. Garbe
f60fe2a4f9 font fix 2006-08-22 10:01:32 +02:00
Anselm R. Garbe
b112257bf2 slight change of my config.h 2006-08-22 09:57:32 +02:00
Anselm R. Garbe
eb88adcd8a fixed 2006-08-22 09:49:48 +02:00
arg@localhost.10kloc.org
950a1ab5af windows which have set transient_for hint inherit the transient_for window tags now 2006-08-21 17:35:37 +02:00
arg@localhost.10kloc.org
1b9fe55025 after switching to OpenBSD again, I switched back to a saner color scheme 2006-08-21 17:41:09 +02:00
Anselm R.Garbe
2272df9d31 applied Sanders focus_* patches, removed the unnecessary clean-prefix from the new function names 2006-08-21 09:03:14 +02:00
Anselm R.Garbe
08d85d6d66 small renamings of two static functions 2006-08-21 07:33:18 +02:00
Anselm R.Garbe
b43989207a small changes to dwm.1, rearranged order within main event loop 2006-08-21 07:31:15 +02:00
Anselm R.Garbe
2eebebf262 applied Sanders patch 2006-08-18 13:40:34 +02:00
Anselm R.Garbe
8c1fffe106 made a new client position strategy similiar to that one proposed by Sander, but which takes top bar into account 2006-08-18 08:39:33 +02:00
Anselm R.Garbe
5e9acbc952 fixed a bug reported by sander 2006-08-17 10:06:36 +02:00
Anselm R.Garbe
a420ceab50 applied the shorter xprop command 2006-08-17 09:44:17 +02:00
Anselm R.Garbe
0e1c649dca centering apps only if transient_for is not(!) set 2006-08-17 09:37:43 +02:00
Anselm R.Garbe
67c2124fa9 fixed issue Sander reported 2006-08-17 09:35:44 +02:00
Anselm R.Garbe
a635743c6d corrected order of cleanup code 2006-08-16 19:25:29 +02:00
Anselm R.Garbe
b5c2412d84 condition was insufficient 2006-08-16 17:58:18 +02:00
Anselm R.Garbe
ad2e77d635 fixed issue reported by sander 2006-08-16 17:56:04 +02:00
Anselm R.Garbe
a20b10d01f added general centralization rule for new clients (works around various borken apps) 2006-08-16 15:57:36 +02:00
Anselm R.Garbe
4cc0551948 removed leading ; 2006-08-16 15:31:24 +02:00
Anselm R.Garbe
56130c3689 added sample command to config.default.h to highlight how to query class:instance info with a one-liner of shell commands 2006-08-16 15:00:14 +02:00
Anselm R.Garbe
14f7380308 applied another config.mk patch made by sander 2006-08-16 12:36:32 +02:00
Anselm R.Garbe
727449d1e7 we close stdin as well 2006-08-16 09:31:41 +02:00
Anselm R.Garbe
80bf2aa559 simplified sort | uniq into sort -u (on my boxes all sort support -u) 2006-08-16 09:05:58 +02:00
Anselm R.Garbe
b9cd0c4331 fixing small bug in config.mk 2006-08-15 16:54:54 +02:00
Anselm R.Garbe
f77a87137c adding forgetten whitespace 2006-08-15 10:45:14 +02:00
Anselm R.Garbe
65dfe8fdce added gmane archive to dwm.html 2006-08-15 10:44:15 +02:00
Anselm R.Garbe
e3bb595d77 Added tag 0.9 for changeset fae61afa861755636c4a1070694209ace8efbb6c 2006-08-15 10:25:30 +02:00
Anselm R.Garbe
a1682b8927 prepared dwm-0.9 2006-08-15 10:11:29 +02:00
Anselm R.Garbe
24d91e3b8a extended cleanup 2006-08-15 09:37:12 +02:00
Anselm R.Garbe
ce04a66528 applied Sanders changes to config.arg.h 2006-08-15 08:38:19 +02:00
Anselm R.Garbe
df74b26e5d applied jk_to_tab patch 2006-08-15 08:25:11 +02:00
Anselm R.Garbe
b6ad663f87 changed main event loop 2006-08-15 07:31:42 +02:00
Anselm R.Garbe
ee31e38dc7 removed NUMLOCKMASK, added dynamically calculated numlockmask instead 2006-08-14 19:18:02 +02:00
Anselm R.Garbe
442334641e added Sander to LICENSE (since he has contributed/revised big portions) 2006-08-14 18:47:13 +02:00
Anselm R.Garbe
dfa5ea6360 applied viewsel.patch 2006-08-14 18:46:07 +02:00
Anselm R.Garbe
3e06edeb5d applied sanders man page patch, removed button2 from bar click 2006-08-14 18:14:08 +02:00
Anselm R.Garbe
78b050c13c applied sanders tag()/toggletag() fixes 2006-08-14 17:50:48 +02:00
Anselm R.Garbe
4ad20ffc2c fixed 2006-08-14 17:48:54 +02:00
Anselm R.Garbe
57e6e3bb80 added missing arrange 2006-08-14 17:14:22 +02:00
Anselm R.Garbe
19da197f58 changed replacetag into toggletag 2006-08-14 16:59:18 +02:00
Anselm R.Garbe
666fae97e6 added some flicker prevention 2006-08-14 16:37:55 +02:00
Anselm R.Garbe
823fb1118a remove unnecessary XSync 2006-08-14 16:26:06 +02:00
Anselm R.Garbe
db1d62e184 changed order of selecting input at root window 2006-08-14 16:21:16 +02:00
Anselm R.Garbe
d26ffc7fa3 removed finished message 2006-08-14 16:11:54 +02:00
Anselm R.Garbe
0f3acce042 added mappingnotify event for kb refreshes 2006-08-14 16:08:52 +02:00
Anselm R.Garbe
9eef9f7b02 removed unneecessary crap 2006-08-14 15:43:04 +02:00
Anselm R.Garbe
aff4c787f4 applied the saner patch (removed the pathetic one) 2006-08-14 15:33:23 +02:00
Anselm R.Garbe
fe3dfbbe90 pplied Sanders appendtag patch 2006-08-14 15:31:58 +02:00
Anselm R.Garbe
2ffdc1936c some other small fixes 2006-08-14 15:11:02 +02:00
Anselm R.Garbe
0fe52c63ea removed ungrabkeys again (because of sander's mail) 2006-08-14 11:38:43 +02:00
Anselm R.Garbe
28a52197c4 fixed string cutting 2006-08-14 10:58:03 +02:00
Anselm R.Garbe
2c0d1cc87b fixed a core dump 2006-08-14 10:49:22 +02:00
Anselm R.Garbe
375a251d16 implemented ungrabkeys() which is called in cleanup() 2006-08-14 10:24:38 +02:00
Anselm R.Garbe
d4b7a9a373 implemented restack behavior (floats are on top in tiled mode) 2006-08-14 10:18:24 +02:00
Anselm R.Garbe
4d67199a4b fixed string cutting in draw.c 2006-08-14 08:52:15 +02:00
Anselm R.Garbe
95766d6241 applied Sanders LD and resize patches 2006-08-14 08:43:19 +02:00
Anselm R.Garbe
4cb78a170c removed viewnext/viewprev 2006-08-14 08:38:26 +02:00
Anselm R.Garbe
2c66b422e7 supplying NULL args in select 2006-08-14 07:40:20 +02:00
Anselm R.Garbe
e571de83e9 reducing ConnectionNumber calls to a bare minimum 2006-08-14 07:23:46 +02:00
Anselm R.Garbe
4bb89e2cb1 updated man page, added CAVEATS section 2006-08-13 18:04:42 +02:00
Anselm R.Garbe
349cadacf6 made shortcuts like proposed by Sander, renamed viewextend to toggleview (more clear) 2006-08-13 17:58:06 +02:00
Anselm R.Garbe
292ccc4c43 implemented viewextend and added M-S-C-n shortcuts for extending the current view... updated man page (works great!) nice feature 2006-08-11 19:26:12 +02:00
Anselm R.Garbe
d7413ffd2d implement multi-tag selection through button3 click on the specific tag 2006-08-11 18:37:41 +02:00
Anselm R.Garbe
50729a2e73 after some days of experimenting with grey background, I finally give up and switch to white on black ;) 2006-08-11 18:11:39 +02:00
Anselm R.Garbe
a3e3f0b9ed applied Sanders fixes to dwm.1 2006-08-11 17:12:48 +02:00
Anselm R.Garbe
45aea23355 fixed dwm.1, added Mod1-Shift-c (was missing for an odd reason) 2006-08-11 12:32:34 +02:00
Anselm R.Garbe
975b459c17 simplified drawtext 2006-08-11 11:52:55 +02:00
Anselm R.Garbe
2b35faee06 updated dwm(1) 2006-08-11 10:54:29 +02:00
Anselm R.Garbe
84818bdbb5 upgraded version info 2006-08-11 10:28:51 +02:00
Anselm R.Garbe
895902b57a applied Sander's patch as well 2006-08-11 10:05:53 +02:00
Anselm R.Garbe
7d4184dc5c realized that client focussing through the bar is pretty useless, better is sloppy view focussing for B1/B3 as well instead 2006-08-11 10:00:47 +02:00
Anselm R.Garbe
8278f0a6be implemented focusprev on button1 press in the bar, and focusnext on button3 press in the bar 2006-08-11 09:16:40 +02:00
Anselm R.Garbe
d3969634ac simplified unmanage 2006-08-11 08:47:55 +02:00
Anselm R.Garbe
735ca9ccd6 removed the if(clients) check from popping code 2006-08-11 08:34:42 +02:00
Anselm R.Garbe
4ee661d908 added dwm favicon 2006-08-10 18:44:19 +02:00
Anselm R.Garbe
9fce8215b7 applied Sanders zoom_update patch 2006-08-10 17:48:50 +02:00
Anselm R.Garbe
6521c2dd41 respecting inc hints in floating mode on togglemax 2006-08-10 17:33:11 +02:00
Anselm R.Garbe
9ee9ce7e14 reverting last patch, that sucks, I don't care about retarded apps like gvim 2006-08-10 16:37:13 +02:00
Anselm R.Garbe
9d39da6452 togglemax repects inc-hints (this way gvim can be toggle'maxed as well) 2006-08-10 16:35:36 +02:00
Anselm R.Garbe
0228dcd58f applied grammar correction by ILF 2006-08-10 15:35:02 +02:00
Anselm R.Garbe
3d35ea99bb Added tag 0.8 for changeset cd15de32e173f8ce97bfe1c9b6607937b59056b4 2006-08-10 15:19:31 +02:00
Anselm R.Garbe
0680c76a6f prepared 0.8 2006-08-10 15:19:25 +02:00
Anselm R.Garbe
c3e5f5cc9a updated html 2006-08-10 13:30:39 +02:00
Anselm R.Garbe
1c620d27d8 fixed the issue reported by sander (gaps at left columns button due to round-offs) 2006-08-10 12:33:44 +02:00
Anselm R.Garbe
fde45ebed8 applied sumik's multihead patch 2006-08-10 11:26:32 +02:00
Anselm R.Garbe
4bd0d33f57 applied sander's patch 2006-08-10 11:19:25 +02:00
Anselm R.Garbe
00255728aa readded border color, this sucks least 2006-08-10 11:12:15 +02:00
Anselm R.Garbe
4b0328f209 drawing border with fg color 2006-08-10 11:07:27 +02:00
Anselm R.Garbe
30561a0161 removed unnecessary border color 2006-08-10 10:27:08 +02:00
Anselm R.Garbe
a4c4998c8b swapping my default colors (bg with fg) 2006-08-10 10:22:15 +02:00
Anselm R.Garbe
8e053b6476 made terminals darker, that is better indeed 2006-08-10 10:20:26 +02:00
Anselm R.Garbe
b79b5facb1 disallow zoom on maximized clients 2006-08-10 10:16:12 +02:00
Anselm R.Garbe
c53f0fca91 added zoom on Mod1-Button1 on managed clients only (there is no moving possible) 2006-08-09 18:37:33 +02:00
Anselm R.Garbe
c225e1afc2 removed NET_ACTIVE_WINDOW handling 2006-08-08 18:12:18 +02:00
Anselm R.Garbe
92e55c7c53 implemented NET_ACTIVE_WINDOW support 2006-08-08 17:08:45 +02:00
Anselm R.Garbe
c86f131681 fixed typo 2006-08-08 12:58:05 +02:00
Anselm R.Garbe
e943234d09 it always takes a while until one sticks to a colorscheme, but this one feels well 2006-08-08 12:50:11 +02:00
Anselm R.Garbe
9fc24e371b default colors are best 2006-08-08 12:47:45 +02:00
Anselm R.Garbe
cac467d52c without borders it looks cleaner 2006-08-08 11:47:29 +02:00
Anselm R.Garbe
04f17d2669 red is easier to my eyes with ffffaa bg 2006-08-08 11:18:05 +02:00
Anselm R.Garbe
dff15a02f7 using a better colorscheme (ffffaa is the best background for black) 2006-08-08 11:06:56 +02:00
Anselm R.Garbe
42277b1110 applied Sanders tiny patches 2006-08-08 09:30:45 +02:00
arg@10ksloc.org
095f9e143e removed some " 2006-08-07 17:38:14 +02:00
arg@10ksloc.org
9fbb2ebb90 I really only need 3 tags 2006-08-07 14:12:28 +02:00
arg@10ksloc.org
dbcf87ce76 added a trailing '.' to shortcut descriptions in dwm(1) 2006-08-07 14:10:22 +02:00
arg@10ksloc.org
4250c26e9b changed signature of drawtext 2006-08-07 13:54:59 +02:00
arg@10ksloc.org
e48de30516 applied grabbing-- and shell_minimal 2006-08-07 13:40:31 +02:00
arg@10ksloc.org
1f0060caa3 updated screenshot section 2006-08-07 12:26:28 +02:00
arg@10ksloc.org
c732cc90ab changed font size, I'm not blind... 2006-08-07 12:21:17 +02:00
arg@10ksloc.org
4e2c5b5f25 small fix of a comment 2006-08-07 12:12:56 +02:00
arg@10ksloc.org
d9386a0c07 typo fix 2006-08-07 11:58:46 +02:00
arg@10ksloc.org
66e16c92d3 applied Sanders man page/Makefile patch 2006-08-07 11:57:05 +02:00
arg@10ksloc.org
6a8e176df1 settle with grey 2006-08-07 11:10:19 +02:00
arg@10ksloc.org
632c7f3410 next version is 0.8 2006-08-07 10:32:36 +02:00
arg@10ksloc.org
045f1840e0 made my colors tasting better with the background 2006-08-07 10:28:21 +02:00
arg@10ksloc.org
45d16d090b status box should have a border in my eyes 2006-08-07 09:47:13 +02:00
arg@10ksloc.org
525c5ff4d8 next attempt for w on black switch 2006-08-07 09:41:43 +02:00
arg@10ksloc.org
5952157c3b Added tag 0.7 for changeset 3fb41412e2492f66476d92ce8f007a8b48fb1d2a 2006-08-07 08:55:39 +02:00
arg@10ksloc.org
f777d21899 prepared dwm.html 2006-08-07 08:51:43 +02:00
arg@10ksloc.org
82064af2d7 added stripping to dwm target in Makefile 2006-08-07 08:46:11 +02:00
arg@10ksloc.org
d54444cfd7 changed getproto, maybe that might fix the killclient issue reported on the list 2006-08-07 08:19:58 +02:00
arg@10ksloc.org
525ef3c178 applied endless loop prevention on zoom() 2006-08-07 08:05:04 +02:00
arg@10ksloc.org
5ef6ef1bac updated man page 2006-08-07 07:36:36 +02:00
arg@10ksloc.org
f4208e7cac small fix of the last commit 2006-08-05 14:57:26 +02:00
arg@10ksloc.org
ecc95c903b using -Os again, zoom is ignored in floating mode or on floating clients 2006-08-05 14:56:32 +02:00
arg@10ksloc.org
a207949b65 mouse grab needs also to grab for combinations of numlock/lockmask 2006-08-05 14:02:25 +02:00
arg@10ksloc.org
86d12249dd slight fix 2006-08-05 13:10:09 +02:00
arg@10ksloc.org
b098c94ed4 small performance tweak ;) 2006-08-04 18:34:40 +02:00
arg@10ksloc.org
6a39a496d0 fixed xterm font change (all other related apps should work fine with this fix as well) 2006-08-04 18:25:40 +02:00
arg@10ksloc.org
3d73084b5e fixed view-change bug reported on the list 2006-08-04 18:17:02 +02:00
arg@10ksloc.org
12b1d439e4 no need for -g anymore, regexp matching works now 2006-08-04 17:04:50 +02:00
arg@10ksloc.org
1076161bf3 fixed dmenu link (thx to deifl) 2006-08-04 15:47:50 +02:00
arg@10ksloc.org
e21d93b7bd switched to regexp matching for Rules 2006-08-04 14:40:32 +02:00
arg@10ksloc.org
f504aea132 fixed a bug in dmenu call 2006-08-04 13:42:40 +02:00
arg@10ksloc.org
9955ddc978 using execl now, argv changed, using cmd and const char defs directly in the KEYS struct 2006-08-04 12:00:55 +02:00
arg@10ksloc.org
0dfe729f90 added dmenu to dwm.html 2006-08-04 10:36:22 +02:00
arg@10ksloc.org
8f698bd4cc small stylistic fix 2006-08-04 10:27:16 +02:00
arg@10ksloc.org
99b126d0af removed CONFIG 2006-08-03 17:08:43 +02:00
arg@10ksloc.org
a2d56f6dce make config.h not a time dependence 2006-08-03 15:36:13 +02:00
arg@10ksloc.org
db876f9fb0 removed rm config.h from clean 2006-08-03 15:29:28 +02:00
arg@10ksloc.org
05a618b06e added gmake compliance 2006-08-03 15:21:08 +02:00
arg@10ksloc.org
72608f0d5a s/tag2/two/g 2006-08-03 15:09:52 +02:00
arg@10ksloc.org
bba044de4f applied Jukka's diff 2006-08-03 15:05:34 +02:00
arg@10ksloc.org
4d55eee754 applied Sanders Makefile patch 2006-08-03 13:50:37 +02:00
arg@10ksloc.org
d41b232b52 stylistic chnage 2006-08-03 12:21:00 +02:00
arg@10ksloc.org
b35575574b removed TLast tag enum, now tags is simple defined as char *[] array, the rest is calculated correctly, rules take an int array for the tags 2006-08-03 12:12:26 +02:00
arg@10ksloc.org
666b4563a0 hotfix of settags 2006-08-03 11:38:26 +02:00
arg@10ksloc.org
7315bb08ad using SRC instead of *.c 2006-08-03 11:27:29 +02:00
arg@10ksloc.org
f80688f1c7 changed the files included in make dist 2006-08-03 10:59:20 +02:00
arg@10ksloc.org
dc5c070c44 applied Sanders doc changes, added a PHONY line and changed the output of config.h creation somewhat 2006-08-03 10:58:29 +02:00
arg@10ksloc.org
8cc7f3bace changed Client->tags and Rule->tags to be Bool (I'll also try to remove the TLast enum) 2006-08-03 10:55:07 +02:00
arg@10ksloc.org
5d3fd3707b implemented the idea presented by Sander for dwm target 2006-08-02 17:49:21 +02:00
arg@10ksloc.org
1bf0c4a8e7 changing MASTERW value from 52 to 60 (in both, default and arg), I feel this is better now 2006-08-02 17:19:22 +02:00
arg@10ksloc.org
863656d2bc fixed a type in README, and patched config.mk 2006-08-02 17:12:00 +02:00
arg@10ksloc.org
f1a34ae1e4 updated dwm.html 2006-08-02 16:54:58 +02:00
arg@10ksloc.org
3000cad507 Added tag 0.6 for changeset c11f86db4550cac5d0a648a3fe4d6d3b9a4fcf7e 2006-08-02 16:52:21 +02:00
arg@10ksloc.org
0f8249f262 removed config.h (stupid hg) 2006-08-02 16:52:02 +02:00
arg@10ksloc.org
b515765216 removed the CONFIG variable from config.mk, renamed config.h into config.default.h, after first clone/extract one needs to copy config.default.h to config.h, that is easier than always heavy typing make CONFIG=blafasel 2006-08-02 16:46:59 +02:00
arg@10ksloc.org
85e6d59956 added Acroread.* and MPlayer.* to config.arg.h rules 2006-08-02 16:38:21 +02:00
arg@10ksloc.org
95e8d12b71 made fullscreen apps working fine in floating mode (there is no sane way to make them work in tiled mode, thus I switch to floating mode if I run such kind of app), also fixed the xterm issue reported by Sander 2006-08-02 16:32:05 +02:00
arg@10ksloc.org
a55f0e12fe new stuff 2006-08-02 13:05:04 +02:00
arg@10ksloc.org
0cf3ba0eab dwm is now exit, if stdin is closed due broken pipe 2006-08-02 12:33:24 +02:00
arg@10ksloc.org
1d85225952 implemented focus on enterwindow on titlebars 2006-08-02 11:28:27 +02:00
arg@10ksloc.org
3af6434085 applied Sanders patches (numlock2) 2006-08-02 11:13:32 +02:00
arg@10ksloc.org
57871415c1 reverting to old resize policy 2006-08-02 10:48:58 +02:00
arg@10ksloc.org
52021851d1 new resize stuff (using XConfigureWindow instead of XSendEvent) 2006-08-02 10:43:21 +02:00
arg@10ksloc.org
080a38d62d renamed WM_PROTOCOL_DELWIN into PROTODELWIN 2006-08-01 16:44:23 +02:00
arg@10ksloc.org
ab7a11c0c7 renamed ARRANGE into DEFMODE 2006-08-01 16:39:20 +02:00
arg@10ksloc.org
d8675f6f30 small fixes to dwm.html 2006-08-01 16:35:54 +02:00
arg@10ksloc.org
eff4478c2d simplified README 2006-08-01 16:29:25 +02:00
arg@10ksloc.org
81683351f0 removed 1 missing LOC 2006-08-01 16:20:29 +02:00
arg@10ksloc.org
b38905b004 removed 5LOC 2006-08-01 16:20:03 +02:00
arg@10ksloc.org
d9a6a3b5d2 removed artefacts of single-linked list (thanx to Jukka, I must have been mad) 2006-08-01 16:14:17 +02:00
arg@10ksloc.org
7c2e3bb67d cleaned config.*h to prevent some confusion 2006-08-01 15:29:37 +02:00
arg@10ksloc.org
b01a51a844 saved 2LOC 2006-08-01 15:16:29 +02:00
arg@10ksloc.org
77f8c075c4 uppercasing all define'd values (uppercase-prefixed should only be enum field qualifiers) 2006-08-01 14:46:01 +02:00
arg@10ksloc.org
33b4821cd6 fixed config.h files 2006-08-01 14:03:29 +02:00
arg@10ksloc.org
a73a882806 centralized/externalized configuration to config.h 2006-08-01 13:59:13 +02:00
arg@10ksloc.org
57416beefe applied Cedric's NumLock patch 2006-08-01 12:41:38 +02:00
arg@10ksloc.org
1b63f832c5 applied Jukkas prev/next patch with XK_{h,l} 2006-08-01 12:39:14 +02:00
arg@10ksloc.org
7b5638f61d applied Sanders patches 2006-08-01 12:32:33 +02:00
arg@10ksloc.org
937cabfa0a committed a patch which fixes the hints of Jukka 2006-08-01 11:49:19 +02:00
arg@10ksloc.org
deba5069e5 updated html 2006-07-21 21:15:39 +02:00
arg@10ksloc.org
956113b295 Added tag 0.5 for changeset 22213b9a2114167ee8ba019a012e27da0422a61a 2006-07-21 21:15:11 +02:00
arg@10ksloc.org
db98a7d60f prepared 0.5 2006-07-21 21:15:08 +02:00
arg@10ksloc.org
0464e42231 some cleanups/fixes inspired by Jukka Salmi's feedback 2006-07-21 18:34:10 +02:00
arg@10ksloc.org
4970ef938e simplified main.c, switching back to single urxvt usage 2006-07-21 14:11:38 +02:00
arg@10ksloc.org
f85b163899 s/sleep 5/sleep 2/ 2006-07-21 11:54:14 +02:00
arg@10ksloc.org
2b66f7afb1 changed the status info README hint (more simple now, no extra script necessary) 2006-07-21 11:48:28 +02:00
arg@10ksloc.org
67b3083dfd s/0.5/0.6/ - my steps are wider than the reality 2006-07-21 10:18:12 +02:00
arg@10ksloc.org
0c7bcc24cb applied sanders maxfix patch 2006-07-21 10:07:41 +02:00
arg@10ksloc.org
98c6a92eb5 added a note how to achieve status info in the bar 2006-07-21 09:59:11 +02:00
arg@10ksloc.org
ba59bc8b9f preparing 0.6 which will be available in the evening after sanders patch approx. 2006-07-21 09:39:44 +02:00
arg@10ksloc.org
cd8d8e1208 sanitization of several clunky stuff, removed heretag (rarely of use), simplified pop(), changed shortcuts to always contain MODKEY 2006-07-21 07:37:52 +02:00
arg@10ksloc.org
04eb016e78 applied sanders no_sizehints for tiled mode patch (thx!) 2006-07-20 19:09:11 +02:00
arg@10ksloc.org
0a4342098b serious mistake in pop() (forgot to set c->prev to NULL on pop) 2006-07-20 18:23:43 +02:00
arg@10ksloc.org
72707c2fae using double-linked list in order to get correct prev focus handling 2006-07-20 16:54:20 +02:00
arg@10ksloc.org
06dc514bc7 added yet another CUTOMIZE tag 2006-07-20 15:40:41 +02:00
arg@10ksloc.org
2b5553b1eb cleaned the CUSTOMIZE flags 2006-07-20 15:17:52 +02:00
arg@10ksloc.org
4688ad181d made status bar drawing more robust, implemented togglemax and togglemode, works quite well 2006-07-20 15:07:35 +02:00
arg@10ksloc.org
dc5d967ee6 cleaned up code 2006-07-20 12:18:06 +02:00
arg@10ksloc.org
fe3756c8e1 Added tag 0.4 for changeset eb3165734f00fe7f7da8aeebaed00e60a57caac9 2006-07-20 10:48:22 +02:00
arg@10ksloc.org
01b151f5f8 prepared 0.4 2006-07-20 10:48:19 +02:00
arg@10ksloc.org
8bb4a93f2b using O3 instead of Os, binary size still < 40kb 2006-07-20 10:26:36 +02:00
arg@10ksloc.org
5ec04b7726 fixed version in man page 2006-07-20 10:15:05 +02:00
arg@10ksloc.org
3657eaedf3 yet another html patch 2006-07-20 10:12:41 +02:00
arg@10ksloc.org
9291283a18 updated html 2006-07-20 10:10:58 +02:00
arg@10ksloc.org
eccd02def2 makefile now sets permissions for executables and man pages 2006-07-20 09:45:47 +02:00
arg@10ksloc.org
11737233a7 removed c->f{x,y,w,h} and c->t{x,y,w,h} in favor for the new rule handling remembering two kinds of geometries is unnecessary, removed the randomized (x,y) setting on dofloat startup, was kind too random und unpredictable 2006-07-20 07:26:23 +02:00
arg@10ksloc.org
bcaf6a7a0f implemented regexp matching for rules 2006-07-19 17:42:08 +02:00
arg@10ksloc.org
f95eed34b4 applied Jukka's patch with s/ModKeyMask/MODKEY/g 2006-07-19 16:38:39 +02:00
arg@10ksloc.org
1eaffa372f removed TODO, because dwm is nearly finished 2006-07-19 15:03:53 +02:00
arg@10ksloc.org
b1697e8d5f reapplied my default keybindings 2006-07-19 14:54:19 +02:00
arg@10ksloc.org
801d11c7e7 alternate dwm.png 2006-07-19 14:49:19 +02:00
arg@10ksloc.org
1b855fccd7 Added tag 0.3 for changeset 7e66082e5092fb0bccd18a3695a0bec52c80fdb2 2006-07-19 14:44:44 +02:00
arg@10ksloc.org
d34b4c7b9a some changes in the html page 2006-07-19 14:44:24 +02:00
arg@10ksloc.org
1f9614f82e prepared 0.3 2006-07-19 14:43:17 +02:00
arg@10ksloc.org
4491bdda69 fixed the bug mentioned by Sander 2006-07-19 14:11:27 +02:00
arg@10ksloc.org
8af1d97332 refactored Sanders code somewhat 2006-07-19 13:52:31 +02:00
arg@10ksloc.org
79cd408844 implemented fallback for too many clients in stacked mode 2006-07-19 13:36:04 +02:00
arg@10ksloc.org
18be893b66 and another fix... 2006-07-19 13:30:18 +02:00
arg@10ksloc.org
0fb1842fd0 yet another typo fix 2006-07-19 13:29:45 +02:00
arg@10ksloc.org
f522930a99 fixed a typo 2006-07-19 13:24:58 +02:00
arg@10ksloc.org
aebd745f72 floating clients get random (x,y) offsets now 2006-07-19 13:22:49 +02:00
arg@10ksloc.org
c53980cddc applied Sanders resize patch, fixed lower bug 2006-07-19 11:31:04 +02:00
arg@mmvi
95e56ffc0d changed CFLAGs 2006-07-18 17:54:55 +02:00
arg@mmvi
f1294353f2 firefox instance is different now 2006-07-18 15:10:57 +02:00
Anselm R. Garbe
6649dcce6d changed occurrences of wmii.de into 10kloc.org in dwm.html, because 10kloc.org is already working 2006-07-18 13:01:33 +02:00
Anselm R. Garbe
58f2fe3f6a implemened distinguishing float/managed geometries of clients (works quite well) 2006-07-18 12:36:57 +02:00
Anselm R. Garbe
0aaa9a21f3 pop on heretag 2006-07-18 11:45:32 +02:00
Anselm R. Garbe
4f8b08d330 added heretag command which allows to tag a client of a foreign tag with current tag 2006-07-18 11:38:31 +02:00
Anselm R. Garbe
849e631510 using EXIT_stuff in exit() now 2006-07-18 08:18:54 +02:00
Anselm R. Garbe
789717d109 simplified Makefile 2006-07-17 18:49:13 +02:00
Anselm R. Garbe
605630c145 added new stuff 2006-07-17 16:46:42 +02:00
Anselm R. Garbe
1e7e57dad3 updated html 2006-07-17 11:56:27 +02:00
Anselm R. Garbe
eb184e02ea patched dwm 2006-07-17 11:36:07 +02:00
Anselm R. Garbe
ed41473634 updated README 2006-07-17 10:09:57 +02:00
Anselm R. Garbe
ee5ba14431 Added tag 0.2 for changeset 0a6472e2203994bc5738d40a340d26f7ec9d6062 2006-07-17 10:00:59 +02:00
Anselm R. Garbe
b706893e0a updated html 2006-07-17 10:00:55 +02:00
Anselm R. Garbe
bf35794507 ordered variables in structs and source files alphabetically 2006-07-17 09:12:29 +02:00
Anselm R. Garbe
e743836541 slight change to dwm.1 2006-07-17 08:37:37 +02:00
Anselm R. Garbe
0c3544d42f simplified man page 2006-07-16 23:26:50 +02:00
Anselm R. Garbe
94f7c2707b another XSync 2006-07-16 12:29:50 +02:00
Anselm R. Garbe
901b3ed9b7 several additions in mouse handling ;) 2006-07-16 00:47:40 +02:00
Anselm R. Garbe
e6cbe9c11e fixed XSync handling and finished man page 2006-07-15 18:51:44 +02:00
Anselm R. Garbe
f60c597d65 changing XFlush into XSync 2006-07-15 18:11:14 +02:00
Anselm R. Garbe
c09bf8da07 sanitized other stuff 2006-07-15 17:19:19 +02:00
Anselm R. Garbe
adaa28a6e6 proceeded with cleaning up, sorting functions, etc 2006-07-15 17:00:56 +02:00
Anselm R. Garbe
dba23062ba rearranged several stuff 2006-07-15 16:30:50 +02:00
Anselm R. Garbe
c0705eeb65 sanitized names 2006-07-14 22:54:09 +02:00
Anselm R. Garbe
29355bd382 rearranged 2006-07-14 22:33:38 +02:00
Anselm R. Garbe
91a1f6926e I prefer the tiled/floating indicator on the right side 2006-07-14 18:59:25 +02:00
Anselm R. Garbe
54775e0b3e bar shows if currently is tiled (Mod1-space) or floating (Mod1-Shift-space) mode 2006-07-14 18:55:50 +02:00
Anselm R. Garbe
59b4a5e4ca draw bar on exposure ;) 2006-07-14 18:46:12 +02:00
Anselm R. Garbe
82384e385e Added tag 0.1 for changeset d31b5ad96b0ba7b5b0a30928fcf000428339a577 2006-07-14 18:40:36 +02:00
22 changed files with 3104 additions and 1964 deletions

19
LICENSE
View File

@ -1,6 +1,23 @@
MIT/X Consortium License MIT/X Consortium License
(C)opyright MMVI Anselm R. Garbe <garbeam at gmail dot com> © 2006-2019 Anselm R Garbe <anselm@garbe.ca>
© 2006-2009 Jukka Salmi <jukka at salmi dot ch>
© 2006-2007 Sander van Dijk <a dot h dot vandijk at gmail dot com>
© 2007-2011 Peter Hartlich <sgkkr at hartlich dot com>
© 2007-2009 Szabolcs Nagy <nszabolcs at gmail dot com>
© 2007-2009 Christof Musik <christof at sendfax dot de>
© 2007-2009 Premysl Hruby <dfenze at gmail dot com>
© 2007-2008 Enno Gottox Boland <gottox at s01 dot de>
© 2008 Martin Hurton <martin dot hurton at gmail dot com>
© 2008 Neale Pickett <neale dot woozle dot org>
© 2009 Mate Nagy <mnagy at port70 dot net>
© 2010-2016 Hiltjo Posthuma <hiltjo@codemadness.org>
© 2010-2012 Connor Lane Smith <cls@lubutu.com>
© 2011 Christoph Lohmann <20h@r-36.net>
© 2015-2016 Quentin Rameau <quinq@fifth.space>
© 2015-2016 Eric Pruitt <eric.pruitt@gmail.com>
© 2016-2017 Markus Teich <markus.teich@stusta.mhn.de>
© 2020-2022 Chris Down <chris@chrisdown.name>
Permission is hereby granted, free of charge, to any person obtaining a Permission is hereby granted, free of charge, to any person obtaining a
copy of this software and associated documentation files (the "Software"), copy of this software and associated documentation files (the "Software"),

View File

@ -1,55 +1,45 @@
# dwm - dynamic window manager # dwm - dynamic window manager
# (C)opyright MMVI Anselm R. Garbe # See LICENSE file for copyright and license details.
include config.mk include config.mk
SRC = bar.c client.c dev.c draw.c event.c main.c util.c SRC = drw.c dwm.c util.c
OBJ = ${SRC:.c=.o} OBJ = ${SRC:.c=.o}
MAN1 = dwm.1
BIN = dwm
all: config dwm all: dwm
@echo finished
config:
@echo dwm build options:
@echo "LIBS = ${LIBS}"
@echo "CFLAGS = ${CFLAGS}"
@echo "LDFLAGS = ${LDFLAGS}"
@echo "CC = ${CC}"
.c.o: .c.o:
@echo CC $< ${CC} -c ${CFLAGS} $<
@${CC} -c ${CFLAGS} $<
${OBJ}: dwm.h ${OBJ}: config.h config.mk
config.h:
cp config.def.h $@
dwm: ${OBJ} dwm: ${OBJ}
@echo LD $@ ${CC} -o $@ ${OBJ} ${LDFLAGS}
@${CC} -o $@ ${OBJ} ${LDFLAGS}
clean: clean:
rm -f dwm *.o core rm -f dwm ${OBJ} dwm-${VERSION}.tar.gz
dist: clean dist: clean
mkdir -p dwm-${VERSION} mkdir -p dwm-${VERSION}
cp -R Makefile README LICENSE config.mk *.h *.c ${MAN1} dwm-${VERSION} cp -R LICENSE Makefile README config.def.h config.mk\
dwm.1 drw.h util.h ${SRC} dwm.png transient.c dwm-${VERSION}
tar -cf dwm-${VERSION}.tar dwm-${VERSION} tar -cf dwm-${VERSION}.tar dwm-${VERSION}
gzip dwm-${VERSION}.tar gzip dwm-${VERSION}.tar
rm -rf dwm-${VERSION} rm -rf dwm-${VERSION}
install: all install: all
@mkdir -p ${DESTDIR}${PREFIX}/bin mkdir -p ${DESTDIR}${PREFIX}/bin
@cp -f ${BIN} ${DESTDIR}${PREFIX}/bin cp -f dwm ${DESTDIR}${PREFIX}/bin
@echo installed executable files to ${DESTDIR}${PREFIX}/bin chmod 755 ${DESTDIR}${PREFIX}/bin/dwm
@mkdir -p ${DESTDIR}${MANPREFIX}/man1 mkdir -p ${DESTDIR}${MANPREFIX}/man1
@cp -f ${MAN1} ${DESTDIR}${MANPREFIX}/man1 sed "s/VERSION/${VERSION}/g" < dwm.1 > ${DESTDIR}${MANPREFIX}/man1/dwm.1
@echo installed manual pages to ${DESTDIR}${MANPREFIX}/man1 chmod 644 ${DESTDIR}${MANPREFIX}/man1/dwm.1
uninstall: uninstall:
for i in ${BIN}; do \ rm -f ${DESTDIR}${PREFIX}/bin/dwm\
rm -f ${DESTDIR}${PREFIX}/bin/`basename $$i`; \ ${DESTDIR}${MANPREFIX}/man1/dwm.1
done
for i in ${MAN1}; do \ .PHONY: all clean dist install uninstall
rm -f ${DESTDIR}${MANPREFIX}/man1/`basename $$i`; \
done

24
README
View File

@ -1,7 +1,6 @@
dwm - dynamic window manager dwm - dynamic window manager
---------------------------- ============================
dwm is an extremely fast, small, and dynamic window manager for X.
dwm is an extremly fast, small, and dynamic X11 window manager.
Requirements Requirements
@ -11,8 +10,8 @@ In order to build dwm you need the Xlib header files.
Installation Installation
------------ ------------
Edit config.mk to match your local setup. dwm is installed into Edit config.mk to match your local setup (dwm is installed into
the /usr/local namespace by default. the /usr/local namespace by default).
Afterwards enter the following command to build and install dwm (if Afterwards enter the following command to build and install dwm (if
necessary as root): necessary as root):
@ -31,10 +30,19 @@ the DISPLAY environment variable is set correctly, e.g.:
DISPLAY=foo.bar:1 exec dwm DISPLAY=foo.bar:1 exec dwm
This will start dwm on display :1 of the host foo.bar. (This will start dwm on display :1 of the host foo.bar.)
In order to display status info in the bar, you can do something
like this in your .xinitrc:
while xsetroot -name "`date` `uptime | sed 's/.*,//'`"
do
sleep 1
done &
exec dwm
Configuration Configuration
------------- -------------
The configuration of dwm is done by customizing the wm.h source file. To The configuration of dwm is done by creating a custom config.h
customize the key bindings edit dev.c. and (re)compiling the source code.

1
TODO
View File

@ -1 +0,0 @@
- improve mouse based resizals with quadrant approach (then I think we have feature completeness already)

46
bar.c
View File

@ -1,46 +0,0 @@
/*
* (C)opyright MMVI Anselm R. Garbe <garbeam at gmail dot com>
* See LICENSE file for license details.
*/
#include "dwm.h"
void
barclick(XButtonPressedEvent *e)
{
int x = 0;
Arg a;
for(a.i = 0; a.i < TLast; a.i++) {
x += textw(tags[a.i]) + dc.font.height;
if(e->x < x) {
view(&a);
return;
}
}
}
void
draw_bar()
{
int i;
dc.x = dc.y = 0;
dc.w = bw;
drawtext(NULL, False, False);
dc.w = 0;
for(i = 0; i < TLast; i++) {
dc.x += dc.w;
dc.w = textw(tags[i]) + dc.font.height;
drawtext(tags[i], i == tsel, True);
}
if(sel) {
dc.x += dc.w;
dc.w = textw(sel->name) + dc.font.height;
drawtext(sel->name, True, True);
}
dc.w = textw(stext) + dc.font.height;
dc.x = bx + bw - dc.w;
drawtext(stext, False, False);
XCopyArea(dpy, dc.drawable, barwin, dc.gc, 0, 0, bw, bh, 0, 0);
XFlush(dpy);
}

616
client.c
View File

@ -1,616 +0,0 @@
/*
* (C)opyright MMVI Anselm R. Garbe <garbeam at gmail dot com>
* See LICENSE file for license details.
*/
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <X11/Xatom.h>
#include <X11/Xutil.h>
#include "dwm.h"
void (*arrange)(Arg *) = tiling;
static Rule rule[] = {
/* class instance tags floating */
{ "Firefox-bin", "Gecko", { [Twww] = "www" }, False },
};
static Client *
next(Client *c)
{
for(; c && !c->tags[tsel]; c = c->next);
return c;
}
void
zoom(Arg *arg)
{
Client **l, *c;
if(!sel)
return;
if(sel == next(clients) && sel->next) {
if((c = next(sel->next)))
sel = c;
}
for(l = &clients; *l && *l != sel; l = &(*l)->next);
*l = sel->next;
sel->next = clients; /* pop */
clients = sel;
arrange(NULL);
focus(sel);
}
void
max(Arg *arg)
{
if(!sel)
return;
sel->x = sx;
sel->y = sy + bh;
sel->w = sw - 2 * sel->border;
sel->h = sh - 2 * sel->border - bh;
craise(sel);
resize(sel, False);
}
void
view(Arg *arg)
{
Client *c;
tsel = arg->i;
arrange(NULL);
for(c = clients; c; c = next(c->next))
draw_client(c);
draw_bar();
}
void
tappend(Arg *arg)
{
if(!sel)
return;
sel->tags[arg->i] = tags[arg->i];
arrange(NULL);
}
void
ttrunc(Arg *arg)
{
int i;
if(!sel)
return;
for(i = 0; i < TLast; i++)
sel->tags[i] = NULL;
tappend(arg);
}
static void
ban_client(Client *c)
{
XMoveWindow(dpy, c->win, c->x + 2 * sw, c->y);
XMoveWindow(dpy, c->title, c->tx + 2 * sw, c->ty);
}
void
floating(Arg *arg)
{
Client *c;
arrange = floating;
for(c = clients; c; c = c->next) {
if(c->tags[tsel])
resize(c, True);
else
ban_client(c);
}
if(sel && !sel->tags[tsel]) {
if((sel = next(clients))) {
craise(sel);
focus(sel);
}
}
}
void
tiling(Arg *arg)
{
Client *c;
int n, i, w, h;
w = sw - mw;
arrange = tiling;
for(n = 0, c = clients; c; c = c->next)
if(c->tags[tsel] && !c->floating)
n++;
if(n > 1)
h = (sh - bh) / (n - 1);
else
h = sh - bh;
for(i = 0, c = clients; c; c = c->next) {
if(c->tags[tsel]) {
if(c->floating) {
craise(c);
resize(c, True);
continue;
}
if(n == 1) {
c->x = sx;
c->y = sy + bh;
c->w = sw - 2 * c->border;
c->h = sh - 2 * c->border - bh;
}
else if(i == 0) {
c->x = sx;
c->y = sy + bh;
c->w = mw - 2 * c->border;
c->h = sh - 2 * c->border - bh;
}
else {
c->x = sx + mw;
c->y = sy + (i - 1) * h + bh;
c->w = w - 2 * c->border;
c->h = h - 2 * c->border;
}
resize(c, False);
i++;
}
else
ban_client(c);
}
if(!sel || (sel && !sel->tags[tsel])) {
if((sel = next(clients))) {
craise(sel);
focus(sel);
}
}
}
void
prevc(Arg *arg)
{
Client *c;
if(!sel)
return;
if((c = sel->revert && sel->revert->tags[tsel] ? sel->revert : NULL)) {
craise(c);
focus(c);
}
}
void
nextc(Arg *arg)
{
Client *c;
if(!sel)
return;
if(!(c = next(sel->next)))
c = next(clients);
if(c) {
craise(c);
c->revert = sel;
focus(c);
}
}
void
ckill(Arg *arg)
{
if(!sel)
return;
if(sel->proto & WM_PROTOCOL_DELWIN)
send_message(sel->win, wm_atom[WMProtocols], wm_atom[WMDelete]);
else
XKillClient(dpy, sel->win);
}
static void
resize_title(Client *c)
{
int i;
c->tw = 0;
for(i = 0; i < TLast; i++)
if(c->tags[i])
c->tw += textw(c->tags[i]) + dc.font.height;
c->tw += textw(c->name) + dc.font.height;
if(c->tw > c->w)
c->tw = c->w + 2;
c->tx = c->x + c->w - c->tw + 2;
c->ty = c->y;
XMoveResizeWindow(dpy, c->title, c->tx, c->ty, c->tw, c->th);
}
void
update_name(Client *c)
{
XTextProperty name;
int n;
char **list = NULL;
name.nitems = 0;
c->name[0] = 0;
XGetTextProperty(dpy, c->win, &name, net_atom[NetWMName]);
if(!name.nitems)
XGetWMName(dpy, c->win, &name);
if(!name.nitems)
return;
if(name.encoding == XA_STRING)
strncpy(c->name, (char *)name.value, sizeof(c->name));
else {
if(XmbTextPropertyToTextList(dpy, &name, &list, &n) >= Success
&& n > 0 && *list)
{
strncpy(c->name, *list, sizeof(c->name));
XFreeStringList(list);
}
}
XFree(name.value);
resize_title(c);
}
void
update_size(Client *c)
{
XSizeHints size;
long msize;
if(!XGetWMNormalHints(dpy, c->win, &size, &msize) || !size.flags)
size.flags = PSize;
c->flags = size.flags;
if(c->flags & PBaseSize) {
c->basew = size.base_width;
c->baseh = size.base_height;
}
else
c->basew = c->baseh = 0;
if(c->flags & PResizeInc) {
c->incw = size.width_inc;
c->inch = size.height_inc;
}
else
c->incw = c->inch = 0;
if(c->flags & PMaxSize) {
c->maxw = size.max_width;
c->maxh = size.max_height;
}
else
c->maxw = c->maxh = 0;
if(c->flags & PMinSize) {
c->minw = size.min_width;
c->minh = size.min_height;
}
else
c->minw = c->minh = 0;
if(c->flags & PWinGravity)
c->grav = size.win_gravity;
else
c->grav = NorthWestGravity;
}
void
craise(Client *c)
{
XRaiseWindow(dpy, c->win);
XRaiseWindow(dpy, c->title);
}
void
lower(Client *c)
{
XLowerWindow(dpy, c->title);
XLowerWindow(dpy, c->win);
}
void
focus(Client *c)
{
Client *old = sel;
XEvent ev;
XFlush(dpy);
sel = c;
if(old && old != c)
draw_client(old);
draw_client(c);
XSetInputFocus(dpy, c->win, RevertToPointerRoot, CurrentTime);
XFlush(dpy);
while(XCheckMaskEvent(dpy, EnterWindowMask, &ev));
}
static void
init_tags(Client *c)
{
XClassHint ch;
static unsigned int len = rule ? sizeof(rule) / sizeof(rule[0]) : 0;
unsigned int i, j;
Bool matched = False;
if(!len) {
c->tags[tsel] = tags[tsel];
return;
}
if(XGetClassHint(dpy, c->win, &ch)) {
if(ch.res_class && ch.res_name) {
for(i = 0; i < len; i++)
if(!strncmp(rule[i].class, ch.res_class, sizeof(rule[i].class))
&& !strncmp(rule[i].instance, ch.res_name, sizeof(rule[i].instance)))
{
for(j = 0; j < TLast; j++)
c->tags[j] = rule[i].tags[j];
c->floating = rule[i].floating;
matched = True;
break;
}
}
if(ch.res_class)
XFree(ch.res_class);
if(ch.res_name)
XFree(ch.res_name);
}
if(!matched)
c->tags[tsel] = tags[tsel];
}
void
manage(Window w, XWindowAttributes *wa)
{
Client *c, **l;
XSetWindowAttributes twa;
Window trans;
c = emallocz(sizeof(Client));
c->win = w;
c->tx = c->x = wa->x;
c->ty = c->y = wa->y;
if(c->y < bh)
c->ty = c->y += bh;
c->tw = c->w = wa->width;
c->h = wa->height;
c->th = bh;
c->border = 1;
c->proto = win_proto(c->win);
update_size(c);
XSelectInput(dpy, c->win,
StructureNotifyMask | PropertyChangeMask | EnterWindowMask);
XGetTransientForHint(dpy, c->win, &trans);
twa.override_redirect = 1;
twa.background_pixmap = ParentRelative;
twa.event_mask = ExposureMask;
c->title = XCreateWindow(dpy, root, c->tx, c->ty, c->tw, c->th,
0, DefaultDepth(dpy, screen), CopyFromParent,
DefaultVisual(dpy, screen),
CWOverrideRedirect | CWBackPixmap | CWEventMask, &twa);
update_name(c);
init_tags(c);
for(l = &clients; *l; l = &(*l)->next);
c->next = *l; /* *l == nil */
*l = c;
XGrabButton(dpy, Button1, Mod1Mask, c->win, False, ButtonPressMask,
GrabModeAsync, GrabModeSync, None, None);
XGrabButton(dpy, Button2, Mod1Mask, c->win, False, ButtonPressMask,
GrabModeAsync, GrabModeSync, None, None);
XGrabButton(dpy, Button3, Mod1Mask, c->win, False, ButtonPressMask,
GrabModeAsync, GrabModeSync, None, None);
if(!c->floating)
c->floating = trans
|| ((c->maxw == c->minw) && (c->maxh == c->minh));
arrange(NULL);
/* mapping the window now prevents flicker */
if(c->tags[tsel]) {
XMapRaised(dpy, c->win);
XMapRaised(dpy, c->title);
focus(c);
}
else {
ban_client(c);
XMapRaised(dpy, c->win);
XMapRaised(dpy, c->title);
}
}
void
gravitate(Client *c, Bool invert)
{
int dx = 0, dy = 0;
switch(c->grav) {
case StaticGravity:
case NorthWestGravity:
case NorthGravity:
case NorthEastGravity:
dy = c->border;
break;
case EastGravity:
case CenterGravity:
case WestGravity:
dy = -(c->h / 2) + c->border;
break;
case SouthEastGravity:
case SouthGravity:
case SouthWestGravity:
dy = -c->h;
break;
default:
break;
}
switch (c->grav) {
case StaticGravity:
case NorthWestGravity:
case WestGravity:
case SouthWestGravity:
dx = c->border;
break;
case NorthGravity:
case CenterGravity:
case SouthGravity:
dx = -(c->w / 2) + c->border;
break;
case NorthEastGravity:
case EastGravity:
case SouthEastGravity:
dx = -(c->w + c->border);
break;
default:
break;
}
if(invert) {
dx = -dx;
dy = -dy;
}
c->x += dx;
c->y += dy;
}
void
resize(Client *c, Bool inc)
{
XConfigureEvent e;
if(inc) {
if(c->incw)
c->w -= (c->w - c->basew) % c->incw;
if(c->inch)
c->h -= (c->h - c->baseh) % c->inch;
}
if(c->x > sw) /* might happen on restart */
c->x = sw - c->w;
if(c->y > sh)
c->ty = c->y = sh - c->h;
if(c->minw && c->w < c->minw)
c->w = c->minw;
if(c->minh && c->h < c->minh)
c->h = c->minh;
if(c->maxw && c->w > c->maxw)
c->w = c->maxw;
if(c->maxh && c->h > c->maxh)
c->h = c->maxh;
resize_title(c);
XSetWindowBorderWidth(dpy, c->win, 1);
XMoveResizeWindow(dpy, c->win, c->x, c->y, c->w, c->h);
e.type = ConfigureNotify;
e.event = c->win;
e.window = c->win;
e.x = c->x;
e.y = c->y;
e.width = c->w;
e.height = c->h;
e.border_width = c->border;
e.above = None;
e.override_redirect = False;
XSendEvent(dpy, c->win, False, StructureNotifyMask, (XEvent *)&e);
XFlush(dpy);
}
static int
dummy_error_handler(Display *dsply, XErrorEvent *err)
{
return 0;
}
void
unmanage(Client *c)
{
Client **l;
XGrabServer(dpy);
XSetErrorHandler(dummy_error_handler);
XUngrabButton(dpy, AnyButton, AnyModifier, c->win);
XDestroyWindow(dpy, c->title);
for(l = &clients; *l && *l != c; l = &(*l)->next);
*l = c->next;
for(l = &clients; *l; l = &(*l)->next)
if((*l)->revert == c)
(*l)->revert = NULL;
if(sel == c)
sel = sel->revert ? sel->revert : clients;
free(c);
XFlush(dpy);
XSetErrorHandler(error_handler);
XUngrabServer(dpy);
arrange(NULL);
if(sel)
focus(sel);
}
Client *
gettitle(Window w)
{
Client *c;
for(c = clients; c; c = c->next)
if(c->title == w)
return c;
return NULL;
}
Client *
getclient(Window w)
{
Client *c;
for(c = clients; c; c = c->next)
if(c->win == w)
return c;
return NULL;
}
void
draw_client(Client *c)
{
int i;
if(c == sel) {
draw_bar();
XUnmapWindow(dpy, c->title);
XSetWindowBorder(dpy, c->win, dc.fg);
return;
}
XSetWindowBorder(dpy, c->win, dc.bg);
XMapWindow(dpy, c->title);
dc.x = dc.y = 0;
dc.w = 0;
for(i = 0; i < TLast; i++) {
if(c->tags[i]) {
dc.x += dc.w;
dc.w = textw(c->tags[i]) + dc.font.height;
drawtext(c->tags[i], False, True);
}
}
dc.x += dc.w;
dc.w = textw(c->name) + dc.font.height;
drawtext(c->name, False, True);
XCopyArea(dpy, dc.drawable, c->title, dc.gc,
0, 0, c->tw, c->th, 0, 0);
XFlush(dpy);
}

116
config.def.h Normal file
View File

@ -0,0 +1,116 @@
/* See LICENSE file for copyright and license details. */
/* appearance */
static const unsigned int borderpx = 1; /* border pixel of windows */
static const unsigned int snap = 32; /* snap pixel */
static const int showbar = 1; /* 0 means no bar */
static const int topbar = 1; /* 0 means bottom bar */
static const char *fonts[] = { "monospace:size=10" };
static const char dmenufont[] = "monospace:size=10";
static const char col_gray1[] = "#222222";
static const char col_gray2[] = "#444444";
static const char col_gray3[] = "#bbbbbb";
static const char col_gray4[] = "#eeeeee";
static const char col_cyan[] = "#005577";
static const char *colors[][3] = {
/* fg bg border */
[SchemeNorm] = { col_gray3, col_gray1, col_gray2 },
[SchemeSel] = { col_gray4, col_cyan, col_cyan },
};
/* tagging */
static const char *tags[] = { "1", "2", "3", "4", "5", "6", "7", "8", "9" };
static const Rule rules[] = {
/* xprop(1):
* WM_CLASS(STRING) = instance, class
* WM_NAME(STRING) = title
*/
/* class instance title tags mask isfloating monitor */
{ "Gimp", NULL, NULL, 0, 1, -1 },
{ "Firefox", NULL, NULL, 1 << 8, 0, -1 },
};
/* layout(s) */
static const float mfact = 0.55; /* factor of master area size [0.05..0.95] */
static const int nmaster = 1; /* number of clients in master area */
static const int resizehints = 1; /* 1 means respect size hints in tiled resizals */
static const int lockfullscreen = 1; /* 1 will force focus on the fullscreen window */
static const Layout layouts[] = {
/* symbol arrange function */
{ "[]=", tile }, /* first entry is default */
{ "><>", NULL }, /* no layout function means floating behavior */
{ "[M]", monocle },
};
/* key definitions */
#define MODKEY Mod1Mask
#define TAGKEYS(KEY,TAG) \
{ MODKEY, KEY, view, {.ui = 1 << TAG} }, \
{ MODKEY|ControlMask, KEY, toggleview, {.ui = 1 << TAG} }, \
{ MODKEY|ShiftMask, KEY, tag, {.ui = 1 << TAG} }, \
{ MODKEY|ControlMask|ShiftMask, KEY, toggletag, {.ui = 1 << TAG} },
/* helper for spawning shell commands in the pre dwm-5.0 fashion */
#define SHCMD(cmd) { .v = (const char*[]){ "/bin/sh", "-c", cmd, NULL } }
/* commands */
static char dmenumon[2] = "0"; /* component of dmenucmd, manipulated in spawn() */
static const char *dmenucmd[] = { "dmenu_run", "-m", dmenumon, "-fn", dmenufont, "-nb", col_gray1, "-nf", col_gray3, "-sb", col_cyan, "-sf", col_gray4, NULL };
static const char *termcmd[] = { "st", NULL };
static const Key keys[] = {
/* modifier key function argument */
{ MODKEY, XK_p, spawn, {.v = dmenucmd } },
{ MODKEY|ShiftMask, XK_Return, spawn, {.v = termcmd } },
{ MODKEY, XK_b, togglebar, {0} },
{ MODKEY, XK_j, focusstack, {.i = +1 } },
{ MODKEY, XK_k, focusstack, {.i = -1 } },
{ MODKEY, XK_i, incnmaster, {.i = +1 } },
{ MODKEY, XK_d, incnmaster, {.i = -1 } },
{ MODKEY, XK_h, setmfact, {.f = -0.05} },
{ MODKEY, XK_l, setmfact, {.f = +0.05} },
{ MODKEY, XK_Return, zoom, {0} },
{ MODKEY, XK_Tab, view, {0} },
{ MODKEY|ShiftMask, XK_c, killclient, {0} },
{ MODKEY, XK_t, setlayout, {.v = &layouts[0]} },
{ MODKEY, XK_f, setlayout, {.v = &layouts[1]} },
{ MODKEY, XK_m, setlayout, {.v = &layouts[2]} },
{ MODKEY, XK_space, setlayout, {0} },
{ MODKEY|ShiftMask, XK_space, togglefloating, {0} },
{ MODKEY, XK_0, view, {.ui = ~0 } },
{ MODKEY|ShiftMask, XK_0, tag, {.ui = ~0 } },
{ MODKEY, XK_comma, focusmon, {.i = -1 } },
{ MODKEY, XK_period, focusmon, {.i = +1 } },
{ MODKEY|ShiftMask, XK_comma, tagmon, {.i = -1 } },
{ MODKEY|ShiftMask, XK_period, tagmon, {.i = +1 } },
TAGKEYS( XK_1, 0)
TAGKEYS( XK_2, 1)
TAGKEYS( XK_3, 2)
TAGKEYS( XK_4, 3)
TAGKEYS( XK_5, 4)
TAGKEYS( XK_6, 5)
TAGKEYS( XK_7, 6)
TAGKEYS( XK_8, 7)
TAGKEYS( XK_9, 8)
{ MODKEY|ShiftMask, XK_q, quit, {0} },
};
/* button definitions */
/* click can be ClkTagBar, ClkLtSymbol, ClkStatusText, ClkWinTitle, ClkClientWin, or ClkRootWin */
static const Button buttons[] = {
/* click event mask button function argument */
{ ClkLtSymbol, 0, Button1, setlayout, {0} },
{ ClkLtSymbol, 0, Button3, setlayout, {.v = &layouts[2]} },
{ ClkWinTitle, 0, Button2, zoom, {0} },
{ ClkStatusText, 0, Button2, spawn, {.v = termcmd } },
{ ClkClientWin, MODKEY, Button1, movemouse, {0} },
{ ClkClientWin, MODKEY, Button2, togglefloating, {0} },
{ ClkClientWin, MODKEY, Button3, resizemouse, {0} },
{ ClkTagBar, 0, Button1, view, {0} },
{ ClkTagBar, 0, Button3, toggleview, {0} },
{ ClkTagBar, MODKEY, Button1, tag, {0} },
{ ClkTagBar, MODKEY, Button3, toggletag, {0} },
};

View File

@ -1,31 +1,39 @@
# Customize to fit your system # dwm version
VERSION = 6.5
# Customize below to fit your system
# paths # paths
PREFIX = /usr/local PREFIX = /usr/local
CONFPREFIX = ${PREFIX}/etc
MANPREFIX = ${PREFIX}/share/man MANPREFIX = ${PREFIX}/share/man
X11INC = /usr/X11R6/include X11INC = /usr/X11R6/include
X11LIB = /usr/X11R6/lib X11LIB = /usr/X11R6/lib
VERSION = 0.1 # Xinerama, comment if you don't want it
XINERAMALIBS = -lXinerama
XINERAMAFLAGS = -DXINERAMA
# freetype
FREETYPELIBS = -lfontconfig -lXft
FREETYPEINC = /usr/include/freetype2
# OpenBSD (uncomment)
#FREETYPEINC = ${X11INC}/freetype2
#MANPREFIX = ${PREFIX}/man
# includes and libs # includes and libs
LIBS = -L${PREFIX}/lib -L/usr/lib -lc -L${X11LIB} -lX11 INCS = -I${X11INC} -I${FREETYPEINC}
LIBS = -L${X11LIB} -lX11 ${XINERAMALIBS} ${FREETYPELIBS}
# Linux/BSD # flags
CFLAGS = -Os -I. -I${PREFIX}/include -I/usr/include -I${X11INC} \ CPPFLAGS = -D_DEFAULT_SOURCE -D_BSD_SOURCE -D_XOPEN_SOURCE=700L -DVERSION=\"${VERSION}\" ${XINERAMAFLAGS}
-DVERSION=\"${VERSION}\" #CFLAGS = -g -std=c99 -pedantic -Wall -O0 ${INCS} ${CPPFLAGS}
CFLAGS = -std=c99 -pedantic -Wall -Wno-deprecated-declarations -Os ${INCS} ${CPPFLAGS}
LDFLAGS = ${LIBS} LDFLAGS = ${LIBS}
#CFLAGS = -g -Wall -O2 -I. -I${PREFIX}/include -I/usr/include -I${X11INC} \
# -DVERSION=\"${VERSION}\"
#LDFLAGS = -g ${LIBS}
# Solaris # Solaris
#CFLAGS = -fast -xtarget=ultra ${INCLUDES} -DVERSION=\"${VERSION}\" #CFLAGS = -fast ${INCS} -DVERSION=\"${VERSION}\"
#LIBS += -lnsl -lsocket #LDFLAGS = ${LIBS}
AR = ar cr # compiler and linker
CC = cc CC = cc
RANLIB = ranlib

151
dev.c
View File

@ -1,151 +0,0 @@
/*
* (C)opyright MMVI Anselm R. Garbe <garbeam at gmail dot com>
* See LICENSE file for license details.
*/
#include "dwm.h"
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <X11/keysym.h>
/********** CUSTOMIZE **********/
const char *term[] = {
"urxvtc", "-tr", "+sb", "-bg", "black", "-fg", "white", "-fn",
"-*-terminus-medium-*-*-*-13-*-*-*-*-*-iso10646-*",NULL
};
const char *browse[] = { "firefox", NULL };
const char *xlock[] = { "xlock", NULL };
static Key key[] = {
/* modifier key function arguments */
{ Mod1Mask, XK_Return, zoom, { 0 } },
{ Mod1Mask, XK_k, prevc, { 0 } },
{ Mod1Mask, XK_j, nextc, { 0 } },
{ Mod1Mask, XK_m, max, { 0 } },
{ Mod1Mask, XK_0, view, { .i = Tscratch } },
{ Mod1Mask, XK_1, view, { .i = Tdev } },
{ Mod1Mask, XK_2, view, { .i = Twww } },
{ Mod1Mask, XK_3, view, { .i = Twork } },
{ Mod1Mask, XK_space, tiling, { 0 } },
{ Mod1Mask|ShiftMask, XK_space, floating, { 0 } },
{ Mod1Mask|ShiftMask, XK_0, ttrunc, { .i = Tscratch } },
{ Mod1Mask|ShiftMask, XK_1, ttrunc, { .i = Tdev } },
{ Mod1Mask|ShiftMask, XK_2, ttrunc, { .i = Twww } },
{ Mod1Mask|ShiftMask, XK_3, ttrunc, { .i = Twork } },
{ Mod1Mask|ShiftMask, XK_c, ckill, { 0 } },
{ Mod1Mask|ShiftMask, XK_q, quit, { 0 } },
{ Mod1Mask|ShiftMask, XK_Return, spawn, { .argv = term } },
{ Mod1Mask|ShiftMask, XK_w, spawn, { .argv = browse } },
{ Mod1Mask|ShiftMask, XK_l, spawn, { .argv = xlock } },
{ ControlMask, XK_0, tappend, { .i = Tscratch } },
{ ControlMask, XK_1, tappend, { .i = Tdev } },
{ ControlMask, XK_2, tappend, { .i = Twww } },
{ ControlMask, XK_3, tappend, { .i = Twork } },
};
/********** CUSTOMIZE **********/
void
update_keys(void)
{
static unsigned int len = key ? sizeof(key) / sizeof(key[0]) : 0;
unsigned int i;
KeyCode code;
for(i = 0; i < len; i++) {
code = XKeysymToKeycode(dpy, key[i].keysym);
XUngrabKey(dpy, code, key[i].mod, root);
XGrabKey(dpy, code, key[i].mod, root, True, GrabModeAsync, GrabModeAsync);
}
}
void
keypress(XEvent *e)
{
XKeyEvent *ev = &e->xkey;
static unsigned int len = key ? sizeof(key) / sizeof(key[0]) : 0;
unsigned int i;
KeySym keysym;
keysym = XKeycodeToKeysym(dpy, (KeyCode)ev->keycode, 0);
for(i = 0; i < len; i++)
if((keysym == key[i].keysym) && (key[i].mod == ev->state)) {
if(key[i].func)
key[i].func(&key[i].arg);
return;
}
}
#define ButtonMask (ButtonPressMask | ButtonReleaseMask)
#define MouseMask (ButtonMask | PointerMotionMask)
void
mresize(Client *c)
{
XEvent ev;
int ocx, ocy;
ocx = c->x;
ocy = c->y;
if(XGrabPointer(dpy, root, False, MouseMask, GrabModeAsync, GrabModeAsync,
None, cursor[CurResize], CurrentTime) != GrabSuccess)
return;
XWarpPointer(dpy, None, c->win, 0, 0, 0, 0, c->w, c->h);
for(;;) {
XMaskEvent(dpy, MouseMask | ExposureMask, &ev);
switch(ev.type) {
default: break;
case Expose:
handler[Expose](&ev);
break;
case MotionNotify:
XFlush(dpy);
c->w = abs(ocx - ev.xmotion.x);
c->h = abs(ocy - ev.xmotion.y);
c->x = (ocx <= ev.xmotion.x) ? ocx : ocx - c->w;
c->y = (ocy <= ev.xmotion.y) ? ocy : ocy - c->h;
resize(c, True);
break;
case ButtonRelease:
XUngrabPointer(dpy, CurrentTime);
return;
}
}
}
void
mmove(Client *c)
{
XEvent ev;
int x1, y1, ocx, ocy, di;
unsigned int dui;
Window dummy;
ocx = c->x;
ocy = c->y;
if(XGrabPointer(dpy, root, False, MouseMask, GrabModeAsync, GrabModeAsync,
None, cursor[CurMove], CurrentTime) != GrabSuccess)
return;
XQueryPointer(dpy, root, &dummy, &dummy, &x1, &y1, &di, &di, &dui);
for(;;) {
XMaskEvent(dpy, MouseMask | ExposureMask, &ev);
switch (ev.type) {
default: break;
case Expose:
handler[Expose](&ev);
break;
case MotionNotify:
XFlush(dpy);
c->x = ocx + (ev.xmotion.x - x1);
c->y = ocy + (ev.xmotion.y - y1);
resize(c, False);
break;
case ButtonRelease:
XUngrabPointer(dpy, CurrentTime);
return;
}
}
}

158
draw.c
View File

@ -1,158 +0,0 @@
/*
* (C)opyright MMIV-MMVI Anselm R. Garbe <garbeam at gmail dot com>
* See LICENSE file for license details.
*/
#include <stdio.h>
#include <string.h>
#include <X11/Xlocale.h>
#include "dwm.h"
static void
drawborder(void)
{
XPoint points[5];
XSetLineAttributes(dpy, dc.gc, 1, LineSolid, CapButt, JoinMiter);
XSetForeground(dpy, dc.gc, dc.border);
points[0].x = dc.x;
points[0].y = dc.y;
points[1].x = dc.w - 1;
points[1].y = 0;
points[2].x = 0;
points[2].y = dc.h - 1;
points[3].x = -(dc.w - 1);
points[3].y = 0;
points[4].x = 0;
points[4].y = -(dc.h - 1);
XDrawLines(dpy, dc.drawable, dc.gc, points, 5, CoordModePrevious);
}
void
drawtext(const char *text, Bool invert, Bool border)
{
int x, y, w, h;
unsigned int len;
static char buf[256];
XGCValues gcv;
XRectangle r = { dc.x, dc.y, dc.w, dc.h };
XSetForeground(dpy, dc.gc, invert ? dc.fg : dc.bg);
XFillRectangles(dpy, dc.drawable, dc.gc, &r, 1);
w = 0;
if(border)
drawborder();
if(!text)
return;
len = strlen(text);
if(len >= sizeof(buf))
len = sizeof(buf) - 1;
memcpy(buf, text, len);
buf[len] = 0;
h = dc.font.ascent + dc.font.descent;
y = dc.y + (dc.h / 2) - (h / 2) + dc.font.ascent;
x = dc.x + (h / 2);
/* shorten text if necessary */
while(len && (w = textnw(buf, len)) > dc.w - h)
buf[--len] = 0;
if(w > dc.w)
return; /* too long */
gcv.foreground = invert ? dc.bg : dc.fg;
gcv.background = invert ? dc.fg : dc.bg;
if(dc.font.set) {
XChangeGC(dpy, dc.gc, GCForeground | GCBackground, &gcv);
XmbDrawImageString(dpy, dc.drawable, dc.font.set, dc.gc,
x, y, buf, len);
}
else {
gcv.font = dc.font.xfont->fid;
XChangeGC(dpy, dc.gc, GCForeground | GCBackground | GCFont, &gcv);
XDrawImageString(dpy, dc.drawable, dc.gc, x, y, buf, len);
}
}
unsigned long
initcolor(const char *colstr)
{
XColor color;
Colormap cmap = DefaultColormap(dpy, screen);
XAllocNamedColor(dpy, cmap, colstr, &color, &color);
return color.pixel;
}
unsigned int
textnw(char *text, unsigned int len)
{
XRectangle r;
if(dc.font.set) {
XmbTextExtents(dc.font.set, text, len, NULL, &r);
return r.width;
}
return XTextWidth(dc.font.xfont, text, len);
}
unsigned int
textw(char *text)
{
return textnw(text, strlen(text));
}
void
initfont(const char *fontstr)
{
char **missing, *def;
int i, n;
missing = NULL;
setlocale(LC_ALL, "");
if(dc.font.set)
XFreeFontSet(dpy, dc.font.set);
dc.font.set = XCreateFontSet(dpy, fontstr, &missing, &n, &def);
if(missing) {
while(n--)
fprintf(stderr, "missing fontset: %s\n", missing[n]);
XFreeStringList(missing);
if(dc.font.set) {
XFreeFontSet(dpy, dc.font.set);
dc.font.set = NULL;
}
}
if(dc.font.set) {
XFontSetExtents *font_extents;
XFontStruct **xfonts;
char **font_names;
dc.font.ascent = dc.font.descent = 0;
font_extents = XExtentsOfFontSet(dc.font.set);
n = XFontsOfFontSet(dc.font.set, &xfonts, &font_names);
for(i = 0, dc.font.ascent = 0, dc.font.descent = 0; i < n; i++) {
if(dc.font.ascent < (*xfonts)->ascent)
dc.font.ascent = (*xfonts)->ascent;
if(dc.font.descent < (*xfonts)->descent)
dc.font.descent = (*xfonts)->descent;
xfonts++;
}
}
else {
if(dc.font.xfont)
XFreeFont(dpy, dc.font.xfont);
dc.font.xfont = NULL;
dc.font.xfont = XLoadQueryFont(dpy, fontstr);
if (!dc.font.xfont)
dc.font.xfont = XLoadQueryFont(dpy, "fixed");
if (!dc.font.xfont)
error("error, cannot init 'fixed' font\n");
dc.font.ascent = dc.font.xfont->ascent;
dc.font.descent = dc.font.xfont->descent;
}
dc.font.height = dc.font.ascent + dc.font.descent;
}

448
drw.c Normal file
View File

@ -0,0 +1,448 @@
/* See LICENSE file for copyright and license details. */
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <X11/Xlib.h>
#include <X11/Xft/Xft.h>
#include "drw.h"
#include "util.h"
#define UTF_INVALID 0xFFFD
static int
utf8decode(const char *s_in, long *u, int *err)
{
static const unsigned char lens[] = {
/* 0XXXX */ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
/* 10XXX */ 0, 0, 0, 0, 0, 0, 0, 0, /* invalid */
/* 110XX */ 2, 2, 2, 2,
/* 1110X */ 3, 3,
/* 11110 */ 4,
/* 11111 */ 0, /* invalid */
};
static const unsigned char leading_mask[] = { 0x7F, 0x1F, 0x0F, 0x07 };
static const unsigned int overlong[] = { 0x0, 0x80, 0x0800, 0x10000 };
const unsigned char *s = (const unsigned char *)s_in;
int len = lens[*s >> 3];
*u = UTF_INVALID;
*err = 1;
if (len == 0)
return 1;
long cp = s[0] & leading_mask[len - 1];
for (int i = 1; i < len; ++i) {
if (s[i] == '\0' || (s[i] & 0xC0) != 0x80)
return i;
cp = (cp << 6) | (s[i] & 0x3F);
}
/* out of range, surrogate, overlong encoding */
if (cp > 0x10FFFF || (cp >> 11) == 0x1B || cp < overlong[len - 1])
return len;
*err = 0;
*u = cp;
return len;
}
Drw *
drw_create(Display *dpy, int screen, Window root, unsigned int w, unsigned int h)
{
Drw *drw = ecalloc(1, sizeof(Drw));
drw->dpy = dpy;
drw->screen = screen;
drw->root = root;
drw->w = w;
drw->h = h;
drw->drawable = XCreatePixmap(dpy, root, w, h, DefaultDepth(dpy, screen));
drw->gc = XCreateGC(dpy, root, 0, NULL);
XSetLineAttributes(dpy, drw->gc, 1, LineSolid, CapButt, JoinMiter);
return drw;
}
void
drw_resize(Drw *drw, unsigned int w, unsigned int h)
{
if (!drw)
return;
drw->w = w;
drw->h = h;
if (drw->drawable)
XFreePixmap(drw->dpy, drw->drawable);
drw->drawable = XCreatePixmap(drw->dpy, drw->root, w, h, DefaultDepth(drw->dpy, drw->screen));
}
void
drw_free(Drw *drw)
{
XFreePixmap(drw->dpy, drw->drawable);
XFreeGC(drw->dpy, drw->gc);
drw_fontset_free(drw->fonts);
free(drw);
}
/* This function is an implementation detail. Library users should use
* drw_fontset_create instead.
*/
static Fnt *
xfont_create(Drw *drw, const char *fontname, FcPattern *fontpattern)
{
Fnt *font;
XftFont *xfont = NULL;
FcPattern *pattern = NULL;
if (fontname) {
/* Using the pattern found at font->xfont->pattern does not yield the
* same substitution results as using the pattern returned by
* FcNameParse; using the latter results in the desired fallback
* behaviour whereas the former just results in missing-character
* rectangles being drawn, at least with some fonts. */
if (!(xfont = XftFontOpenName(drw->dpy, drw->screen, fontname))) {
fprintf(stderr, "error, cannot load font from name: '%s'\n", fontname);
return NULL;
}
if (!(pattern = FcNameParse((FcChar8 *) fontname))) {
fprintf(stderr, "error, cannot parse font name to pattern: '%s'\n", fontname);
XftFontClose(drw->dpy, xfont);
return NULL;
}
} else if (fontpattern) {
if (!(xfont = XftFontOpenPattern(drw->dpy, fontpattern))) {
fprintf(stderr, "error, cannot load font from pattern.\n");
return NULL;
}
} else {
die("no font specified.");
}
font = ecalloc(1, sizeof(Fnt));
font->xfont = xfont;
font->pattern = pattern;
font->h = xfont->ascent + xfont->descent;
font->dpy = drw->dpy;
return font;
}
static void
xfont_free(Fnt *font)
{
if (!font)
return;
if (font->pattern)
FcPatternDestroy(font->pattern);
XftFontClose(font->dpy, font->xfont);
free(font);
}
Fnt*
drw_fontset_create(Drw* drw, const char *fonts[], size_t fontcount)
{
Fnt *cur, *ret = NULL;
size_t i;
if (!drw || !fonts)
return NULL;
for (i = 1; i <= fontcount; i++) {
if ((cur = xfont_create(drw, fonts[fontcount - i], NULL))) {
cur->next = ret;
ret = cur;
}
}
return (drw->fonts = ret);
}
void
drw_fontset_free(Fnt *font)
{
if (font) {
drw_fontset_free(font->next);
xfont_free(font);
}
}
void
drw_clr_create(Drw *drw, Clr *dest, const char *clrname)
{
if (!drw || !dest || !clrname)
return;
if (!XftColorAllocName(drw->dpy, DefaultVisual(drw->dpy, drw->screen),
DefaultColormap(drw->dpy, drw->screen),
clrname, dest))
die("error, cannot allocate color '%s'", clrname);
}
/* Wrapper to create color schemes. The caller has to call free(3) on the
* returned color scheme when done using it. */
Clr *
drw_scm_create(Drw *drw, const char *clrnames[], size_t clrcount)
{
size_t i;
Clr *ret;
/* need at least two colors for a scheme */
if (!drw || !clrnames || clrcount < 2 || !(ret = ecalloc(clrcount, sizeof(XftColor))))
return NULL;
for (i = 0; i < clrcount; i++)
drw_clr_create(drw, &ret[i], clrnames[i]);
return ret;
}
void
drw_setfontset(Drw *drw, Fnt *set)
{
if (drw)
drw->fonts = set;
}
void
drw_setscheme(Drw *drw, Clr *scm)
{
if (drw)
drw->scheme = scm;
}
void
drw_rect(Drw *drw, int x, int y, unsigned int w, unsigned int h, int filled, int invert)
{
if (!drw || !drw->scheme)
return;
XSetForeground(drw->dpy, drw->gc, invert ? drw->scheme[ColBg].pixel : drw->scheme[ColFg].pixel);
if (filled)
XFillRectangle(drw->dpy, drw->drawable, drw->gc, x, y, w, h);
else
XDrawRectangle(drw->dpy, drw->drawable, drw->gc, x, y, w - 1, h - 1);
}
int
drw_text(Drw *drw, int x, int y, unsigned int w, unsigned int h, unsigned int lpad, const char *text, int invert)
{
int ty, ellipsis_x = 0;
unsigned int tmpw, ew, ellipsis_w = 0, ellipsis_len, hash, h0, h1;
XftDraw *d = NULL;
Fnt *usedfont, *curfont, *nextfont;
int utf8strlen, utf8charlen, utf8err, render = x || y || w || h;
long utf8codepoint = 0;
const char *utf8str;
FcCharSet *fccharset;
FcPattern *fcpattern;
FcPattern *match;
XftResult result;
int charexists = 0, overflow = 0;
/* keep track of a couple codepoints for which we have no match. */
static unsigned int nomatches[128], ellipsis_width, invalid_width;
static const char invalid[] = "<EFBFBD>";
if (!drw || (render && (!drw->scheme || !w)) || !text || !drw->fonts)
return 0;
if (!render) {
w = invert ? invert : ~invert;
} else {
XSetForeground(drw->dpy, drw->gc, drw->scheme[invert ? ColFg : ColBg].pixel);
XFillRectangle(drw->dpy, drw->drawable, drw->gc, x, y, w, h);
if (w < lpad)
return x + w;
d = XftDrawCreate(drw->dpy, drw->drawable,
DefaultVisual(drw->dpy, drw->screen),
DefaultColormap(drw->dpy, drw->screen));
x += lpad;
w -= lpad;
}
usedfont = drw->fonts;
if (!ellipsis_width && render)
ellipsis_width = drw_fontset_getwidth(drw, "...");
if (!invalid_width && render)
invalid_width = drw_fontset_getwidth(drw, invalid);
while (1) {
ew = ellipsis_len = utf8err = utf8charlen = utf8strlen = 0;
utf8str = text;
nextfont = NULL;
while (*text) {
utf8charlen = utf8decode(text, &utf8codepoint, &utf8err);
for (curfont = drw->fonts; curfont; curfont = curfont->next) {
charexists = charexists || XftCharExists(drw->dpy, curfont->xfont, utf8codepoint);
if (charexists) {
drw_font_getexts(curfont, text, utf8charlen, &tmpw, NULL);
if (ew + ellipsis_width <= w) {
/* keep track where the ellipsis still fits */
ellipsis_x = x + ew;
ellipsis_w = w - ew;
ellipsis_len = utf8strlen;
}
if (ew + tmpw > w) {
overflow = 1;
/* called from drw_fontset_getwidth_clamp():
* it wants the width AFTER the overflow
*/
if (!render)
x += tmpw;
else
utf8strlen = ellipsis_len;
} else if (curfont == usedfont) {
text += utf8charlen;
utf8strlen += utf8err ? 0 : utf8charlen;
ew += utf8err ? 0 : tmpw;
} else {
nextfont = curfont;
}
break;
}
}
if (overflow || !charexists || nextfont || utf8err)
break;
else
charexists = 0;
}
if (utf8strlen) {
if (render) {
ty = y + (h - usedfont->h) / 2 + usedfont->xfont->ascent;
XftDrawStringUtf8(d, &drw->scheme[invert ? ColBg : ColFg],
usedfont->xfont, x, ty, (XftChar8 *)utf8str, utf8strlen);
}
x += ew;
w -= ew;
}
if (utf8err && (!render || invalid_width < w)) {
if (render)
drw_text(drw, x, y, w, h, 0, invalid, invert);
x += invalid_width;
w -= invalid_width;
}
if (render && overflow)
drw_text(drw, ellipsis_x, y, ellipsis_w, h, 0, "...", invert);
if (!*text || overflow) {
break;
} else if (nextfont) {
charexists = 0;
usedfont = nextfont;
} else {
/* Regardless of whether or not a fallback font is found, the
* character must be drawn. */
charexists = 1;
hash = (unsigned int)utf8codepoint;
hash = ((hash >> 16) ^ hash) * 0x21F0AAAD;
hash = ((hash >> 15) ^ hash) * 0xD35A2D97;
h0 = ((hash >> 15) ^ hash) % LENGTH(nomatches);
h1 = (hash >> 17) % LENGTH(nomatches);
/* avoid expensive XftFontMatch call when we know we won't find a match */
if (nomatches[h0] == utf8codepoint || nomatches[h1] == utf8codepoint)
goto no_match;
fccharset = FcCharSetCreate();
FcCharSetAddChar(fccharset, utf8codepoint);
if (!drw->fonts->pattern) {
/* Refer to the comment in xfont_create for more information. */
die("the first font in the cache must be loaded from a font string.");
}
fcpattern = FcPatternDuplicate(drw->fonts->pattern);
FcPatternAddCharSet(fcpattern, FC_CHARSET, fccharset);
FcPatternAddBool(fcpattern, FC_SCALABLE, FcTrue);
FcConfigSubstitute(NULL, fcpattern, FcMatchPattern);
FcDefaultSubstitute(fcpattern);
match = XftFontMatch(drw->dpy, drw->screen, fcpattern, &result);
FcCharSetDestroy(fccharset);
FcPatternDestroy(fcpattern);
if (match) {
usedfont = xfont_create(drw, NULL, match);
if (usedfont && XftCharExists(drw->dpy, usedfont->xfont, utf8codepoint)) {
for (curfont = drw->fonts; curfont->next; curfont = curfont->next)
; /* NOP */
curfont->next = usedfont;
} else {
xfont_free(usedfont);
nomatches[nomatches[h0] ? h1 : h0] = utf8codepoint;
no_match:
usedfont = drw->fonts;
}
}
}
}
if (d)
XftDrawDestroy(d);
return x + (render ? w : 0);
}
void
drw_map(Drw *drw, Window win, int x, int y, unsigned int w, unsigned int h)
{
if (!drw)
return;
XCopyArea(drw->dpy, drw->drawable, win, drw->gc, x, y, w, h, x, y);
XSync(drw->dpy, False);
}
unsigned int
drw_fontset_getwidth(Drw *drw, const char *text)
{
if (!drw || !drw->fonts || !text)
return 0;
return drw_text(drw, 0, 0, 0, 0, 0, text, 0);
}
unsigned int
drw_fontset_getwidth_clamp(Drw *drw, const char *text, unsigned int n)
{
unsigned int tmp = 0;
if (drw && drw->fonts && text && n)
tmp = drw_text(drw, 0, 0, 0, 0, 0, text, n);
return MIN(n, tmp);
}
void
drw_font_getexts(Fnt *font, const char *text, unsigned int len, unsigned int *w, unsigned int *h)
{
XGlyphInfo ext;
if (!font || !text)
return;
XftTextExtentsUtf8(font->dpy, font->xfont, (XftChar8 *)text, len, &ext);
if (w)
*w = ext.xOff;
if (h)
*h = font->h;
}
Cur *
drw_cur_create(Drw *drw, int shape)
{
Cur *cur;
if (!drw || !(cur = ecalloc(1, sizeof(Cur))))
return NULL;
cur->cursor = XCreateFontCursor(drw->dpy, shape);
return cur;
}
void
drw_cur_free(Drw *drw, Cur *cursor)
{
if (!cursor)
return;
XFreeCursor(drw->dpy, cursor->cursor);
free(cursor);
}

58
drw.h Normal file
View File

@ -0,0 +1,58 @@
/* See LICENSE file for copyright and license details. */
typedef struct {
Cursor cursor;
} Cur;
typedef struct Fnt {
Display *dpy;
unsigned int h;
XftFont *xfont;
FcPattern *pattern;
struct Fnt *next;
} Fnt;
enum { ColFg, ColBg, ColBorder }; /* Clr scheme index */
typedef XftColor Clr;
typedef struct {
unsigned int w, h;
Display *dpy;
int screen;
Window root;
Drawable drawable;
GC gc;
Clr *scheme;
Fnt *fonts;
} Drw;
/* Drawable abstraction */
Drw *drw_create(Display *dpy, int screen, Window win, unsigned int w, unsigned int h);
void drw_resize(Drw *drw, unsigned int w, unsigned int h);
void drw_free(Drw *drw);
/* Fnt abstraction */
Fnt *drw_fontset_create(Drw* drw, const char *fonts[], size_t fontcount);
void drw_fontset_free(Fnt* set);
unsigned int drw_fontset_getwidth(Drw *drw, const char *text);
unsigned int drw_fontset_getwidth_clamp(Drw *drw, const char *text, unsigned int n);
void drw_font_getexts(Fnt *font, const char *text, unsigned int len, unsigned int *w, unsigned int *h);
/* Colorscheme abstraction */
void drw_clr_create(Drw *drw, Clr *dest, const char *clrname);
Clr *drw_scm_create(Drw *drw, const char *clrnames[], size_t clrcount);
/* Cursor abstraction */
Cur *drw_cur_create(Drw *drw, int shape);
void drw_cur_free(Drw *drw, Cur *cursor);
/* Drawing context manipulation */
void drw_setfontset(Drw *drw, Fnt *set);
void drw_setscheme(Drw *drw, Clr *scm);
/* Drawing functions */
void drw_rect(Drw *drw, int x, int y, unsigned int w, unsigned int h, int filled, int invert);
int drw_text(Drw *drw, int x, int y, unsigned int w, unsigned int h, unsigned int lpad, const char *text, int invert);
/* Map functions */
void drw_map(Drw *drw, Window win, int x, int y, unsigned int w, unsigned int h);

232
dwm.1
View File

@ -1,98 +1,176 @@
.TH DWM 1 dwm-0.1 .TH DWM 1 dwm\-VERSION
.SH NAME .SH NAME
dwm \- dynamic window manager dwm \- dynamic window manager
.SH SYNOPSIS .SH SYNOPSIS
.B dwm .B dwm
.RB [ \-v ] .RB [ \-v ]
.SH DESCRIPTION .SH DESCRIPTION
.SS Overview dwm is a dynamic window manager for X. It manages windows in tiled, monocle
.B dwm and floating layouts. Either layout can be applied dynamically, optimising the
is a dynamic window manager for X11. environment for the application in use and the task performed.
.SS Options .P
In tiled layouts windows are managed in a master and stacking area. The master
area on the left contains one window by default, and the stacking area on the
right contains all other windows. The number of master area windows can be
adjusted from zero to an arbitrary number. In monocle layout all windows are
maximised to the screen size. In floating layout windows can be resized and
moved freely. Dialog windows are always managed floating, regardless of the
layout applied.
.P
Windows are grouped by tags. Each window can be tagged with one or multiple
tags. Selecting certain tags displays all windows with these tags.
.P
Each screen contains a small status bar which displays all available tags, the
layout, the title of the focused window, and the text read from the root window
name property, if the screen is focused. A floating window is indicated with an
empty square and a maximised floating window is indicated with a filled square
before the windows title. The selected tags are indicated with a different
color. The tags of the focused window are indicated with a filled square in the
top left corner. The tags which are applied to one or more windows are
indicated with an empty square in the top left corner.
.P
dwm draws a small border around windows to indicate the focus state.
.SH OPTIONS
.TP .TP
.B \-v .B \-v
prints version information to stdout, then exits. prints version information to stderr, then exits.
.SS Status text .SH USAGE
.B dwm .SS Status bar
reads from stdin to display status text if provided.
.SS Default Key Bindings
.TP 16
.I Key
.I Action
.TP .TP
.B Mod1-Return .B X root window name
Zoom is read and displayed in the status text area. It can be set with the
.B window .BR xsetroot (1)
to the command.
.B master
track
.TP .TP
.B Mod1-k .B Button1
Focus previous click on a tag label to display all windows with that tag, click on the layout
.B window label toggles between tiled and floating layout.
.TP .TP
.B Mod1-j .B Button3
Focus next click on a tag label adds/removes all windows with that tag to/from the view.
.B window
.TP .TP
.B Mod1-m .B Mod1\-Button1
Maximize current click on a tag label applies that tag to the focused window.
.B window
.TP .TP
.B Mod1-[0..n] .B Mod1\-Button3
Focus click on a tag label adds/removes that tag to/from the focused window.
.B nth .SS Keyboard commands
tag
.TP .TP
.B Mod1-space .B Mod1\-Shift\-Return
(Re-)arrange
.B all
windows tiled
.TP
.B Mod1-Shift-space
(Re-)arrange
.B all
windows floating
.TP
.B Mod1-Shift-[0..n]
Apply
.B nth
tag to current
.B window
.TP
.B Mod1-Shift-q
Quit
.B dwm
.TP
.B Mod1-Shift-Return
Start Start
.B terminal .BR st(1).
.TP .TP
.B Mod1-Shift-w .B Mod1\-p
Start Spawn
.B web browser .BR dmenu(1)
for launching other programs.
.TP .TP
.B Mod1-Shift-l .B Mod1\-,
Lock Focus previous screen, if any.
.B screen
.TP .TP
.B Control-[0..n] .B Mod1\-.
Append Focus next screen, if any.
.B nth
tag to cureent
.B window
.SS Default Mouse Bindings
.TP .TP
.B Mod1-Button1 .B Mod1\-Shift\-,
Moves current Send focused window to previous screen, if any.
.B window
while dragging
.TP .TP
.B Mod1-Button2 .B Mod1\-Shift\-.
Lowers current Send focused window to next screen, if any.
.B window
.TP .TP
.B Mod1-Button3 .B Mod1\-b
Resizes current Toggles bar on and off.
.B window .TP
while dragging .B Mod1\-t
Sets tiled layout.
.TP
.B Mod1\-f
Sets floating layout.
.TP
.B Mod1\-m
Sets monocle layout.
.TP
.B Mod1\-space
Toggles between current and previous layout.
.TP
.B Mod1\-j
Focus next window.
.TP
.B Mod1\-k
Focus previous window.
.TP
.B Mod1\-i
Increase number of windows in master area.
.TP
.B Mod1\-d
Decrease number of windows in master area.
.TP
.B Mod1\-l
Increase master area size.
.TP
.B Mod1\-h
Decrease master area size.
.TP
.B Mod1\-Return
Zooms/cycles focused window to/from master area (tiled layouts only).
.TP
.B Mod1\-Shift\-c
Close focused window.
.TP
.B Mod1\-Shift\-space
Toggle focused window between tiled and floating state.
.TP
.B Mod1\-Tab
Toggles to the previously selected tags.
.TP
.B Mod1\-Shift\-[1..n]
Apply nth tag to focused window.
.TP
.B Mod1\-Shift\-0
Apply all tags to focused window.
.TP
.B Mod1\-Control\-Shift\-[1..n]
Add/remove nth tag to/from focused window.
.TP
.B Mod1\-[1..n]
View all windows with nth tag.
.TP
.B Mod1\-0
View all windows with any tag.
.TP
.B Mod1\-Control\-[1..n]
Add/remove all windows with nth tag to/from the view.
.TP
.B Mod1\-Shift\-q
Quit dwm.
.SS Mouse commands
.TP
.B Mod1\-Button1
Move focused window while dragging. Tiled windows will be toggled to the floating state.
.TP
.B Mod1\-Button2
Toggles focused window between floating and tiled state.
.TP
.B Mod1\-Button3
Resize focused window while dragging. Tiled windows will be toggled to the floating state.
.SH CUSTOMIZATION
dwm is customized by creating a custom config.h and (re)compiling the source
code. This keeps it fast, secure and simple.
.SH SEE ALSO
.BR dmenu (1),
.BR st (1)
.SH ISSUES
Java applications which use the XToolkit/XAWT backend may draw grey windows
only. The XToolkit/XAWT backend breaks ICCCM-compliance in recent JDK 1.5 and early
JDK 1.6 versions, because it assumes a reparenting window manager. Possible workarounds
are using JDK 1.4 (which doesn't contain the XToolkit/XAWT backend) or setting the
environment variable
.BR AWT_TOOLKIT=MToolkit
(to use the older Motif backend instead) or running
.B xprop -root -f _NET_WM_NAME 32a -set _NET_WM_NAME LG3D
or
.B wmname LG3D
(to pretend that a non-reparenting window manager is running that the
XToolkit/XAWT backend can recognize) or when using OpenJDK setting the environment variable
.BR _JAVA_AWT_WM_NONREPARENTING=1 .
.SH BUGS
Send all bug reports with a patch to hackers@suckless.org.

2164
dwm.c Normal file

File diff suppressed because it is too large Load Diff

155
dwm.h
View File

@ -1,155 +0,0 @@
/*
* (C)opyright MMVI Anselm R. Garbe <garbeam at gmail dot com>
* See LICENSE file for license details.
*/
#include <X11/Xlib.h>
/********** CUSTOMIZE **********/
#define FONT "-*-terminus-medium-*-*-*-13-*-*-*-*-*-iso10646-*"
#define BGCOLOR "#666699"
#define FGCOLOR "#eeeeee"
#define BORDERCOLOR "#9999CC"
#define MASTERW 52 /* percent */
#define WM_PROTOCOL_DELWIN 1
/* tags */
enum { Tscratch, Tdev, Twww, Twork, TLast };
/********** CUSTOMIZE **********/
typedef union Arg Arg;
typedef struct DC DC;
typedef struct Client Client;
typedef struct Fnt Fnt;
typedef struct Key Key;
typedef struct Rule Rule;
union Arg {
const char **argv;
int i;
};
/* atoms */
enum { WMProtocols, WMDelete, WMLast };
enum { NetSupported, NetWMName, NetLast };
/* cursor */
enum { CurNormal, CurResize, CurMove, CurInput, CurLast };
struct Fnt {
XFontStruct *xfont;
XFontSet set;
int ascent;
int descent;
int height;
};
struct DC { /* draw context */
GC gc;
Drawable drawable;
int x, y, w, h;
Fnt font;
unsigned long bg;
unsigned long fg;
unsigned long border;
};
struct Client {
char name[256];
char *tags[TLast];
int proto;
int x, y, w, h;
int tx, ty, tw, th;
int basew, baseh, incw, inch, maxw, maxh, minw, minh;
int grav;
unsigned int border;
long flags;
Bool floating;
Window win;
Window title;
Client *next;
Client *revert;
};
struct Rule {
const char *class;
const char *instance;
char *tags[TLast];
Bool floating;
};
struct Key {
unsigned long mod;
KeySym keysym;
void (*func)(Arg *arg);
Arg arg;
};
extern Display *dpy;
extern Window root, barwin;
extern Atom wm_atom[WMLast], net_atom[NetLast];
extern Cursor cursor[CurLast];
extern Bool running, issel;
extern void (*handler[LASTEvent])(XEvent *);
extern void (*arrange)(Arg *);
extern int tsel, screen, sx, sy, sw, sh, bx, by, bw, bh, mw;
extern char *tags[TLast], stext[1024];
extern DC dc;
extern Client *clients, *sel;
/* bar.c */
extern void draw_bar();
extern void barclick(XButtonPressedEvent *e);
/* client.c */
extern void manage(Window w, XWindowAttributes *wa);
extern void unmanage(Client *c);
extern Client *getclient(Window w);
extern void focus(Client *c);
extern void update_name(Client *c);
extern void draw_client(Client *c);
extern void resize(Client *c, Bool inc);
extern void update_size(Client *c);
extern Client *gettitle(Window w);
extern void craise(Client *c);
extern void lower(Client *c);
extern void ckill(Arg *arg);
extern void nextc(Arg *arg);
extern void prevc(Arg *arg);
extern void max(Arg *arg);
extern void floating(Arg *arg);
extern void tiling(Arg *arg);
extern void ttrunc(Arg *arg);
extern void tappend(Arg *arg);
extern void view(Arg *arg);
extern void zoom(Arg *arg);
extern void gravitate(Client *c, Bool invert);
/* draw.c */
extern void drawtext(const char *text, Bool invert, Bool border);
extern unsigned long initcolor(const char *colstr);
extern void initfont(const char *fontstr);
extern unsigned int textnw(char *text, unsigned int len);
extern unsigned int textw(char *text);
extern unsigned int texth(void);
/* dev.c */
extern void update_keys(void);
extern void keypress(XEvent *e);
extern void mresize(Client *c);
extern void mmove(Client *c);
/* main.c */
extern int error_handler(Display *dsply, XErrorEvent *e);
extern void send_message(Window w, Atom a, long value);
extern int win_proto(Window w);
extern void quit(Arg *arg);
/* util.c */
extern void error(const char *errstr, ...);
extern void *emallocz(unsigned int size);
extern void spawn(Arg *arg);

106
dwm.html
View File

@ -1,106 +0,0 @@
<html>
<head>
<title>dwm - dynamic window manager</title>
<meta name="author" content="Anselm R. Garbe">
<meta name="generator" content="ed">
<meta name="copyright" content="(C)opyright 2006 by Anselm R. Garbe">
<style type="text/css">
body {
color: #000000;
font-family: sans-serif;
margin: 20px 20px 20px 20px;
}
</style>
</head>
<body>
<center>
<img src="dwm.png"/><br />
<h3>dynamic window manager</h3>
</center>
<h3>Description</h3>
<p>
dwm is a dynamic window manager for X11.
</p>
<h3>Philosophy</h3>
<p>
As founder and main developer of wmii I came to the conclusion that
wmii is too clunky for my needs. I don't need so many funky features
and all this hype about remote control through a 9P service, I only
want to manage my windows in a simple, but dynamic way. wmii never got
finished because I listened to users, who proposed arbitrary ideas I
considered useful. This resulted in an extreme <a href="http://www.jwz.org/doc/cadt.html">CADT</a>
development model, which was a mistake. Thus the philosophy of
dwm is simply <i>to fit my needs</i> (maybe yours as well). That's it.
</p>
<h3>Differences to wmii</h3
<p>
In contrast to wmii, dwm is only a window manager, and nothing else.
Hence, it is much smaller, faster and simpler.
</p>
<ul>
<li>
dwm has no 9P support, no menu, no editable tagbars,
no shell-based configuration and remote control and comes without
any additional tools like printing the selection or warping the
mouse.
</li>
<li>
dwm is only a single binary, it's source code is intended to never
exceed 2000 SLOC.
</li>
<li>
dwm is customized through editing its source code, that makes it
extremely fast and secure - it does not process any input data which
hasn't been known at compile time, except window title names.
</li>
<li>
dwm is based on tagging and dynamic window management (however simpler
than wmii or larswm).
</li>
<li>
dwm don't distinguishes between layers, there is no floating or
managed layer. Wether the clients of currently selected tag are
managed or not, you can re-arrange all clients on the fly. Popup-
and fixed-size windows are treated unmanaged.
</li>
<li>
dwm uses 1-pixel borders to provide the maximum of screen real
estate to clients. Small titlebars are only drawn in front of unfocused
clients.
</li>
<li>
dwm reads from <b>stdin</b> to print arbitrary status text (like the
date, load, battery charge). That's much simpler than larsremote,
wmiir and what not...
</li>
<li>
garbeam <b>does not</b> want any feedback to dwm. If you ask for support,
feature requests, or if you report bugs, they will be <b>ignored</b>
with a high chance. dwm is only intended to fit garbeams needs.
However you are free to download and distribute/relicense it, with the
conditions of the <a href="http://wmii.de/cgi-bin/hgwebdir.cgi/dwm?f=f10eb1139362;file=LICENSE;style=raw">MIT/X Consortium license</a>.
</li>
</ul>
<h3>Screenshot</h3>
<p>
<a href="http://wmii.de/shots/dwm-20060714.png">Click here for a screenshot</a> (20060714)
</p>
<h3>Development</h3>
<p>
dwm is actively developed in parallel to wmii. You can <a href="http://wmii.de/cgi-bin/hgwebdir.cgi/dwm">browse</a> its source code repository or get a copy using <a href="http://www.selenic.com/mercurial/">Mercurial</a> with following command:
</p>
<p>
<code>hg clone http://wmii.de/cgi-bin/hgwebdir.cgi/dwm</code>
</p>
<h3>Download</h3>
<ul>
<li><a href="http://wmii.de/download/dwm-0.1.tar.gz">dwm 0.1</a> (12kb) (20060714)</li>
</ul>
<h3>Miscellaneous</h3>
<p>
You can purchase this <a href="https://www.spreadshirt.net/shop.php?op=article&article_id=3298632&view=403">tricot</a>
if you like dwm and the dwm logo, which has been designed by garbeam.
</p>
<p><small>--Anselm (20060714)</small></p>
</body>
</html>

BIN
dwm.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 387 B

After

Width:  |  Height:  |  Size: 373 B

216
event.c
View File

@ -1,216 +0,0 @@
/*
* (C)opyright MMVI Anselm R. Garbe <garbeam at gmail dot com>
* See LICENSE file for license details.
*/
#include <fcntl.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <X11/keysym.h>
#include <X11/Xatom.h>
#include "dwm.h"
/* local functions */
static void buttonpress(XEvent *e);
static void configurerequest(XEvent *e);
static void destroynotify(XEvent *e);
static void enternotify(XEvent *e);
static void leavenotify(XEvent *e);
static void expose(XEvent *e);
static void keymapnotify(XEvent *e);
static void maprequest(XEvent *e);
static void propertynotify(XEvent *e);
static void unmapnotify(XEvent *e);
void (*handler[LASTEvent]) (XEvent *) = {
[ButtonPress] = buttonpress,
[ConfigureRequest] = configurerequest,
[DestroyNotify] = destroynotify,
[EnterNotify] = enternotify,
[LeaveNotify] = leavenotify,
[Expose] = expose,
[KeyPress] = keypress,
[KeymapNotify] = keymapnotify,
[MapRequest] = maprequest,
[PropertyNotify] = propertynotify,
[UnmapNotify] = unmapnotify
};
static void
buttonpress(XEvent *e)
{
XButtonPressedEvent *ev = &e->xbutton;
Client *c;
if(barwin == ev->window)
barclick(ev);
else if((c = getclient(ev->window))) {
craise(c);
switch(ev->button) {
default:
break;
case Button1:
mmove(c);
break;
case Button2:
lower(c);
break;
case Button3:
mresize(c);
break;
}
}
}
static void
configurerequest(XEvent *e)
{
XConfigureRequestEvent *ev = &e->xconfigurerequest;
XWindowChanges wc;
Client *c;
ev->value_mask &= ~CWSibling;
if((c = getclient(ev->window))) {
gravitate(c, True);
if(ev->value_mask & CWX)
c->x = ev->x;
if(ev->value_mask & CWY)
c->y = ev->y;
if(ev->value_mask & CWWidth)
c->w = ev->width;
if(ev->value_mask & CWHeight)
c->h = ev->height;
if(ev->value_mask & CWBorderWidth)
c->border = 1;
gravitate(c, False);
resize(c, True);
}
wc.x = ev->x;
wc.y = ev->y;
wc.width = ev->width;
wc.height = ev->height;
wc.border_width = 1;
wc.sibling = None;
wc.stack_mode = Above;
ev->value_mask &= ~CWStackMode;
ev->value_mask |= CWBorderWidth;
XConfigureWindow(dpy, ev->window, ev->value_mask, &wc);
XFlush(dpy);
}
static void
destroynotify(XEvent *e)
{
Client *c;
XDestroyWindowEvent *ev = &e->xdestroywindow;
if((c = getclient(ev->window)))
unmanage(c);
}
static void
enternotify(XEvent *e)
{
XCrossingEvent *ev = &e->xcrossing;
Client *c;
if(ev->mode != NotifyNormal || ev->detail == NotifyInferior)
return;
if((c = getclient(ev->window)))
focus(c);
else if(ev->window == root)
issel = True;
}
static void
leavenotify(XEvent *e)
{
XCrossingEvent *ev = &e->xcrossing;
if((ev->window == root) && !ev->same_screen)
issel = True;
}
static void
expose(XEvent *e)
{
XExposeEvent *ev = &e->xexpose;
Client *c;
if(ev->count == 0) {
if((c = gettitle(ev->window)))
draw_client(c);
}
}
static void
keymapnotify(XEvent *e)
{
update_keys();
}
static void
maprequest(XEvent *e)
{
XMapRequestEvent *ev = &e->xmaprequest;
static XWindowAttributes wa;
if(!XGetWindowAttributes(dpy, ev->window, &wa))
return;
if(wa.override_redirect) {
XSelectInput(dpy, ev->window,
(StructureNotifyMask | PropertyChangeMask));
return;
}
if(!getclient(ev->window))
manage(ev->window, &wa);
}
static void
propertynotify(XEvent *e)
{
XPropertyEvent *ev = &e->xproperty;
Window trans;
Client *c;
if(ev->state == PropertyDelete)
return; /* ignore */
if((c = getclient(ev->window))) {
if(ev->atom == wm_atom[WMProtocols]) {
c->proto = win_proto(c->win);
return;
}
switch (ev->atom) {
default: break;
case XA_WM_TRANSIENT_FOR:
XGetTransientForHint(dpy, c->win, &trans);
if(!c->floating && (c->floating = (trans != 0)))
arrange(NULL);
break;
case XA_WM_NORMAL_HINTS:
update_size(c);
break;
}
if(ev->atom == XA_WM_NAME || ev->atom == net_atom[NetWMName]) {
update_name(c);
draw_client(c);
}
}
}
static void
unmapnotify(XEvent *e)
{
Client *c;
XUnmapEvent *ev = &e->xunmap;
if((c = getclient(ev->window)))
unmanage(c);
}

327
main.c
View File

@ -1,327 +0,0 @@
/*
* (C)opyright MMVI Anselm R. Garbe <garbeam at gmail dot com>
* See LICENSE file for license details.
*/
#include <errno.h>
#include <stdarg.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <X11/cursorfont.h>
#include <X11/Xatom.h>
#include <X11/Xproto.h>
#include "dwm.h"
/********** CUSTOMIZE **********/
char *tags[TLast] = {
[Tscratch] = "scratch",
[Tdev] = "dev",
[Twww] = "www",
[Twork] = "work",
};
/********** CUSTOMIZE **********/
/* X structs */
Display *dpy;
Window root, barwin;
Atom wm_atom[WMLast], net_atom[NetLast];
Cursor cursor[CurLast];
Bool running = True;
Bool issel;
int tsel = Tdev; /* default tag */
int screen, sx, sy, sw, sh, bx, by, bw, bh, mw;
char stext[1024];
DC dc = {0};
Client *clients = NULL;
Client *sel = NULL;
static Bool other_wm_running;
static const char version[] =
"dwm-" VERSION ", (C)opyright MMVI Anselm R. Garbe\n";
static int (*x_error_handler) (Display *, XErrorEvent *);
static void
usage() { error("usage: dwm [-v]\n"); }
static void
scan_wins()
{
unsigned int i, num;
Window *wins;
XWindowAttributes wa;
Window d1, d2;
if(XQueryTree(dpy, root, &d1, &d2, &wins, &num)) {
for(i = 0; i < num; i++) {
if(!XGetWindowAttributes(dpy, wins[i], &wa))
continue;
if(wa.override_redirect || XGetTransientForHint(dpy, wins[i], &d1))
continue;
if(wa.map_state == IsViewable)
manage(wins[i], &wa);
}
}
if(wins)
XFree(wins);
}
static int
win_property(Window w, Atom a, Atom t, long l, unsigned char **prop)
{
Atom real;
int format;
unsigned long res, extra;
int status;
status = XGetWindowProperty(dpy, w, a, 0L, l, False, t, &real, &format,
&res, &extra, prop);
if(status != Success || *prop == 0) {
return 0;
}
if(res == 0) {
free((void *) *prop);
}
return res;
}
int
win_proto(Window w)
{
unsigned char *protocols;
long res;
int protos = 0;
int i;
res = win_property(w, wm_atom[WMProtocols], XA_ATOM, 20L, &protocols);
if(res <= 0) {
return protos;
}
for(i = 0; i < res; i++) {
if(protocols[i] == wm_atom[WMDelete])
protos |= WM_PROTOCOL_DELWIN;
}
free((char *) protocols);
return protos;
}
void
send_message(Window w, Atom a, long value)
{
XEvent e;
e.type = ClientMessage;
e.xclient.window = w;
e.xclient.message_type = a;
e.xclient.format = 32;
e.xclient.data.l[0] = value;
e.xclient.data.l[1] = CurrentTime;
XSendEvent(dpy, w, False, NoEventMask, &e);
XFlush(dpy);
}
/*
* There's no way to check accesses to destroyed windows, thus
* those cases are ignored (especially on UnmapNotify's).
* Other types of errors call Xlib's default error handler, which
* calls exit().
*/
int
error_handler(Display *dpy, XErrorEvent *error)
{
if(error->error_code == BadWindow
|| (error->request_code == X_SetInputFocus
&& error->error_code == BadMatch)
|| (error->request_code == X_PolyText8
&& error->error_code == BadDrawable)
|| (error->request_code == X_PolyFillRectangle
&& error->error_code == BadDrawable)
|| (error->request_code == X_PolySegment
&& error->error_code == BadDrawable)
|| (error->request_code == X_ConfigureWindow
&& error->error_code == BadMatch)
|| (error->request_code == X_GrabKey
&& error->error_code == BadAccess))
return 0;
fprintf(stderr, "dwm: fatal error: request code=%d, error code=%d\n",
error->request_code, error->error_code);
return x_error_handler(dpy, error); /* may call exit() */
}
/*
* Startup Error handler to check if another window manager
* is already running.
*/
static int
startup_error_handler(Display *dpy, XErrorEvent *error)
{
other_wm_running = True;
return -1;
}
static void
cleanup()
{
while(sel) {
resize(sel, True);
unmanage(sel);
}
XSetInputFocus(dpy, PointerRoot, RevertToPointerRoot, CurrentTime);
}
void
quit(Arg *arg)
{
running = False;
}
int
main(int argc, char *argv[])
{
int i, n;
fd_set rd;
XSetWindowAttributes wa;
unsigned int mask;
Bool readstdin = True;
Window w;
XEvent ev;
for(i = 1; (i < argc) && (argv[i][0] == '-'); i++) {
switch (argv[i][1]) {
case 'v':
fprintf(stdout, "%s", version);
exit(0);
break;
default:
usage();
break;
}
}
dpy = XOpenDisplay(0);
if(!dpy)
error("dwm: cannot connect X server\n");
screen = DefaultScreen(dpy);
root = RootWindow(dpy, screen);
/* check if another WM is already running */
other_wm_running = False;
XSetErrorHandler(startup_error_handler);
/* this causes an error if some other WM is running */
XSelectInput(dpy, root, SubstructureRedirectMask);
XFlush(dpy);
if(other_wm_running)
error("dwm: another window manager is already running\n");
XSetErrorHandler(0);
x_error_handler = XSetErrorHandler(error_handler);
/* init atoms */
wm_atom[WMProtocols] = XInternAtom(dpy, "WM_PROTOCOLS", False);
wm_atom[WMDelete] = XInternAtom(dpy, "WM_DELETE_WINDOW", False);
net_atom[NetSupported] = XInternAtom(dpy, "_NET_SUPPORTED", False);
net_atom[NetWMName] = XInternAtom(dpy, "_NET_WM_NAME", False);
XChangeProperty(dpy, root, net_atom[NetSupported], XA_ATOM, 32,
PropModeReplace, (unsigned char *) net_atom, NetLast);
/* init cursors */
cursor[CurNormal] = XCreateFontCursor(dpy, XC_left_ptr);
cursor[CurResize] = XCreateFontCursor(dpy, XC_sizing);
cursor[CurMove] = XCreateFontCursor(dpy, XC_fleur);
update_keys();
/* style */
dc.bg = initcolor(BGCOLOR);
dc.fg = initcolor(FGCOLOR);
dc.border = initcolor(BORDERCOLOR);
initfont(FONT);
sx = sy = 0;
sw = DisplayWidth(dpy, screen);
sh = DisplayHeight(dpy, screen);
mw = (sw * MASTERW) / 100;
wa.override_redirect = 1;
wa.background_pixmap = ParentRelative;
wa.event_mask = ButtonPressMask | ExposureMask;
bx = by = 0;
bw = sw;
dc.h = bh = dc.font.height + 4;
barwin = XCreateWindow(dpy, root, bx, by, bw, bh, 0, DefaultDepth(dpy, screen),
CopyFromParent, DefaultVisual(dpy, screen),
CWOverrideRedirect | CWBackPixmap | CWEventMask, &wa);
XDefineCursor(dpy, barwin, cursor[CurNormal]);
XMapRaised(dpy, barwin);
dc.drawable = XCreatePixmap(dpy, root, sw, bh, DefaultDepth(dpy, screen));
dc.gc = XCreateGC(dpy, root, 0, 0);
draw_bar();
issel = XQueryPointer(dpy, root, &w, &w, &i, &i, &i, &i, &mask);
wa.event_mask = SubstructureRedirectMask | EnterWindowMask \
| LeaveWindowMask;
wa.cursor = cursor[CurNormal];
XChangeWindowAttributes(dpy, root, CWEventMask | CWCursor, &wa);
strcpy(stext, "dwm-"VERSION);
scan_wins();
/* main event loop, reads status text from stdin as well */
Mainloop:
while(running) {
FD_ZERO(&rd);
if(readstdin)
FD_SET(STDIN_FILENO, &rd);
FD_SET(ConnectionNumber(dpy), &rd);
i = select(ConnectionNumber(dpy) + 1, &rd, 0, 0, 0);
if(i == -1 && errno == EINTR)
continue;
if(i < 0)
error("select failed\n");
else if(i > 0) {
if(FD_ISSET(ConnectionNumber(dpy), &rd)) {
while(XPending(dpy)) {
XNextEvent(dpy, &ev);
if(handler[ev.type])
(handler[ev.type])(&ev); /* call handler */
}
}
if(readstdin && FD_ISSET(STDIN_FILENO, &rd)) {
i = n = 0;
for(;;) {
if((i = getchar()) == EOF) {
/* broken pipe/end of producer */
readstdin = False;
strcpy(stext, "broken pipe");
goto Mainloop;
}
if(i == '\n' || n >= sizeof(stext) - 1)
break;
stext[n++] = i;
}
stext[n] = 0;
draw_bar();
}
}
}
cleanup();
XCloseDisplay(dpy);
return 0;
}

42
transient.c Normal file
View File

@ -0,0 +1,42 @@
/* cc transient.c -o transient -lX11 */
#include <stdlib.h>
#include <unistd.h>
#include <X11/Xlib.h>
#include <X11/Xutil.h>
int main(void) {
Display *d;
Window r, f, t = None;
XSizeHints h;
XEvent e;
d = XOpenDisplay(NULL);
if (!d)
exit(1);
r = DefaultRootWindow(d);
f = XCreateSimpleWindow(d, r, 100, 100, 400, 400, 0, 0, 0);
h.min_width = h.max_width = h.min_height = h.max_height = 400;
h.flags = PMinSize | PMaxSize;
XSetWMNormalHints(d, f, &h);
XStoreName(d, f, "floating");
XMapWindow(d, f);
XSelectInput(d, f, ExposureMask);
while (1) {
XNextEvent(d, &e);
if (t == None) {
sleep(5);
t = XCreateSimpleWindow(d, r, 50, 50, 100, 100, 0, 0, 0);
XSetTransientForHint(d, t, f);
XStoreName(d, t, "transient");
XMapWindow(d, t);
XSelectInput(d, t, ExposureMask);
}
}
XCloseDisplay(d);
exit(0);
}

68
util.c
View File

@ -1,59 +1,37 @@
/* /* See LICENSE file for copyright and license details. */
* (C)opyright MMVI Anselm R. Garbe <garbeam at gmail dot com> #include <errno.h>
* See LICENSE file for license details.
*/
#include <stdarg.h> #include <stdarg.h>
#include <stdio.h> #include <stdio.h>
#include <stdlib.h> #include <stdlib.h>
#include <sys/types.h> #include <string.h>
#include <sys/wait.h>
#include <unistd.h>
#include "dwm.h" #include "util.h"
void void
error(const char *errstr, ...) { die(const char *fmt, ...)
va_list ap;
va_start(ap, errstr);
vfprintf(stderr, errstr, ap);
va_end(ap);
exit(1);
}
static void
bad_malloc(unsigned int size)
{ {
fprintf(stderr, "fatal: could not malloc() %d bytes\n", va_list ap;
(int) size); int saved_errno;
saved_errno = errno;
va_start(ap, fmt);
vfprintf(stderr, fmt, ap);
va_end(ap);
if (fmt[0] && fmt[strlen(fmt)-1] == ':')
fprintf(stderr, " %s", strerror(saved_errno));
fputc('\n', stderr);
exit(1); exit(1);
} }
void * void *
emallocz(unsigned int size) ecalloc(size_t nmemb, size_t size)
{ {
void *res = calloc(1, size); void *p;
if(!res)
bad_malloc(size);
return res;
}
void if (!(p = calloc(nmemb, size)))
spawn(Arg *arg) die("calloc:");
{ return p;
char **argv = (char **)arg->argv;
if(!argv || !argv[0])
return;
if(fork() == 0) {
if(fork() == 0) {
if(dpy)
close(ConnectionNumber(dpy));
setsid();
execvp(argv[0], argv);
fprintf(stderr, "dwm: execvp %s", argv[0]);
perror(" failed");
}
exit (0);
}
wait(0);
} }

9
util.h Normal file
View File

@ -0,0 +1,9 @@
/* See LICENSE file for copyright and license details. */
#define MAX(A, B) ((A) > (B) ? (A) : (B))
#define MIN(A, B) ((A) < (B) ? (A) : (B))
#define BETWEEN(X, A, B) ((A) <= (X) && (X) <= (B))
#define LENGTH(X) (sizeof (X) / sizeof (X)[0])
void die(const char *fmt, ...);
void *ecalloc(size_t nmemb, size_t size);