Commit Graph

1789 Commits

Author SHA1 Message Date
Chris Down
8b48e30973 manage: Make sure c->isfixed is applied before floating checks
Commit 8806b6e237 ("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 bece862a0f.

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
3807b98084 Change config
Fix firefox
add android-studio
2022-03-19 15:33:48 +01: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
12569e61c5 Selective fullscreen config 2022-01-10 22:09:42 +01:00
Francisco Tapia
50514a2e9a [PATCH] Selective fake full screen 2022-01-10 22:09:30 +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
bb6ccde971 Fix fullscreen 2021-11-13 02:03:43 +01:00
Sermak
75a4d98edc [PATCH] Simulate toggleable fullscreen mode 2021-11-13 01:15:37 +01:00
590f4d7602 Update keybindings 2021-10-15 01:04:42 +02:00
Soenke Lambert
43d9dc4a93 [PATCH] Fullscreen current window with [Alt]+[Shift]+[f]
This actually fullscreens a window, instead of just hiding the statusbar
and applying the monocle layout.
2021-09-27 22:37:32 +02:00
f8030a0859 Add makefile target for reloading dwm 2021-09-27 22:26:48 +02:00
f20074cd72 Add bt-menu shortcut 2021-09-27 22:25:58 +02:00
Hiltjo Posthuma
a786211d6c Revert "Improve speed of drw_text when provided with large strings"
This reverts commit 716233534b.

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
cedafa274c Add configuration for more jetbrains apps 2021-07-07 01:54:34 +02:00
24c27ad415 Add ignoretransient to default config 2021-07-07 01:52:21 +02:00
Wilfried SUGNIAUX
9d11cd7d18 DWM 6.2:
-Making a Workaround patch for WebStorm:
do not care about property notification saying that a second window is transient to the first webstorm window

(cherry picked from commit f47c3c83257eed490c6aaf876fbb67b2ddb8b62c)
2021-07-07 01:51:11 +02:00
d2b23e176d Change command to run when clicked on statusbar 2021-07-07 01:43:01 +02:00
7a3a2c3cc1 Fix gapps in column mode 2021-07-07 01:04:04 +02:00
c4ccdce0b6 Change colors 2021-07-07 00:51:47 +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
40701c6c58 Add pause action 2021-01-21 17:40:25 +01:00
Przemysław Grondek
216c8b8e11 Colors change 2021-01-21 10:19:17 +01:00
Przemysław Grondek
f6e8d58514 Update some programs configuration 2021-01-21 10:16:30 +01:00
057ce85595 Update config 2020-12-02 12:21:59 +01:00
Przemysław Grondek
6699479e62 Add media keys 2020-10-29 14:30:37 +01:00
Przemysław Grondek
5d027b08f3 Bind printscreen key to screenshot command 2020-08-26 16:54:06 +02:00
Ian Remmler
61bb8b2241 Fix x coordinate calculation in buttonpress. 2020-08-21 16:13:22 +02:00
Przemysław Grondek
82aa4b8325 Add config for Xephyr and Xnest 2020-08-03 10:29:10 +02:00
Hiltjo Posthuma
bb2e7222ba dwm.1: fix wrong text in man page 2020-07-08 18:05:50 +02:00
pgrondek
17555f86d1 Update config 2020-07-02 11:41:26 +02:00
Alex Flierl
54d641ef3f Fix memory leaks in drw
The function drw_fontset_free in drw.c was never called.

(cherry picked from commit f04cac6d6e)
2020-06-29 01:24:56 +02:00
pgrondek
b774677b0a Hide vacant tags
https://dwm.suckless.org/patches/hide_vacant_tags/
2020-06-16 01:43:25 +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
pgrondek
ed637dac70 Add window swallowing
https://dwm.suckless.org/patches/swallow/
2020-06-08 20:30:45 +02:00
pgrondek
a0d0d123a7 Fix bottom gapp in stac 2020-06-01 01:35:59 +02:00
pgrondek
d5b301e51c Make gapps work with column layout 2020-06-01 01:31:44 +02:00
pgrondek
7ba333192a Change shortcuts for IDE's 2020-06-01 00:57:38 +02:00
pgrondek
f490c2d1b2 Show firefox pip window on all tags 2020-06-01 00:55:43 +02:00
pgrondek
2ded22419e Revert "Revert "Add columns layout""
This reverts commit 03d28aa963.
2020-05-29 23:24:11 +02:00
pgrondek
03d28aa963 Revert "Add columns layout"
This reverts commit acdf610fda.
2020-05-29 12:20:24 +02:00
pgrondek
5eee770269 Update gitignore 2020-05-29 11:34:31 +02:00
pgrondek
9023b15621 Add config for locking 2020-05-29 11:34:17 +02:00