Commit Graph

964 Commits

Author SHA1 Message Date
tobias
c45f7648e9 Fixed memory leak in xu_get_strprop.
If a client calls XSetTextProperty for a window to clear all its
properties, then allocated memory within libX11 is not freed.

OK okan@
2020-04-25 20:07:28 +00:00
tobias
493e33f3b9 Prevent out of boundary write with configuration files in which too many
quoted arguments are stored for other window managers.

The quotation handling happens within the while loop without checking if
the "end" limit has been already reached. If this happens, the final
NULL assignment leads to an out of boundary write on stack.

OK okan@
2020-04-16 17:12:49 +00:00
okan
831953a478 Allow configuring a percentage window size of the master window during
htile/vtile actions. From Uwe Werler, with a few manpage tweaks.
2020-04-16 13:32:35 +00:00
okan
6a7a7f23d8 zap stray tabs 2020-03-24 14:48:29 +00:00
okan
9be0e4bdf0 Instead of using _NET_ACTIVE_WINDOW on restart, use the pointer location
to determine what client to set active. Reduces a round trip for every
window.
2020-03-24 14:47:29 +00:00
okan
afa5b8b67f Add support for SIGINT/SIGTERM. 2020-03-23 20:14:27 +00:00
tim
4b4fe72f09 Simplify conditional construct.
OK okan@
2020-03-20 18:50:08 +00:00
okan
0f6482dcc4 Trim event_mask to those that the root window actually needs. 2020-03-20 15:16:31 +00:00
okan
f91df0c64f No need to lookup current client early; move to right before it is
needed.
2020-03-20 12:13:20 +00:00
tim
caa175be7e Recommit 1.259, but now with TAILQ_FOREACH_SAFE.
From and OK okan@

Original commit message:

Plug two memory leaks. Also get rid of a variable that is no longer
necessary.

OK okan@
2020-03-16 17:50:44 +00:00
tim
5376c8c363 Revert previous. Causes a crash as reported by Tom Murphy. 2020-03-14 16:11:09 +00:00
tim
99b5f48359 Simplify list markup.
OK okan@ schwarze@
2020-03-13 20:50:07 +00:00
tim
8990b0be5d Plug two memory leaks. Also get rid of a variable that is no longer
necessary.

OK okan@
2020-03-13 20:49:13 +00:00
okan
aa3cb8422c Remove ColormaskChange from event-mask since there's no event handler. 2020-02-28 13:38:35 +00:00
okan
caa934d82b Unrelated style fixes, consistency changes and sorting, appropriate
dosage/removal of wrappers, simplification of name queue, client cycle joins
other kb/mb bound functions.
2020-02-27 14:56:39 +00:00
okan
ea9d0bc072 Allow the 'empty' group clients to be window-{h,v}tile'd.
Behaviour (or lack there of) noticed by Raf Czlonka.
2020-02-07 18:53:41 +00:00
okan
363365145d Map ('5') and allow mod5mask (altgr) as a modifier.
From Artturi Alm (though changed from 'm' to '5')
2020-02-03 16:38:02 +00:00
okan
b6e5a98f51 add, then use, xvasprintf, checking for appropriate return. 2020-01-22 19:58:35 +00:00
okan
9f969d0080 Ensure the pointer stays within client bounds after a window 'snap' (to edge).
reported by Stefan Hagen.
2020-01-21 15:50:03 +00:00
okan
2bcb96d9fd Because cwm warps the pointer during a client move (to stay within the client),
there's a window of time where an expose or enternotify event will get
generated for a lower client; use a hammer and drain events after keyboard
move/resize, until such a time that cwm doesn't warp the pointer.  Behavior
noticed by kn.

ok kn@
2019-08-13 18:45:38 +00:00
okan
ba4d949d04 Fix regression from r1.107 (lost a return); kettenis@ pointed out the high
potential for a use-after-free (true!) where kn@ ran into the regression using
an app that actually exercised the XGrabPointer() failure path.
2019-08-12 00:52:36 +00:00
kn
795560f751 Add application section
Link what is described as "applications" here to how they are actually
defined in cwmrc(5).

While here, call the configuration file what it is instead of reusing
the default path (already mentioned in the FILES section).

OK okan
2019-07-09 21:38:44 +00:00
kn
fed210f7a7 command uses execvp(3) not execve(2)
util.c:u_exec() has been doing so since import.
2019-07-02 23:37:47 +00:00
tim
dbaf2f615b Plug a memory leak in log_debug(); OK okan@ 2019-04-29 19:03:20 +00:00
tim
20bce2a6bf Handle _NET_WM_NAME changes.
This fixes the problem where cwm's window menu wouldn't show Firefox's current
window title if it contains non-ASCII characters.

OK okan@
2019-04-29 19:02:21 +00:00
okan
48e6bf1e48 Check the atom type on propertynotify before iterating. 2019-03-11 15:25:46 +00:00
okan
c8b9937b26 use screen_find() for xrandr crtc changes 2019-03-10 22:53:11 +00:00
okan
b041ee6011 Find the managed screen from the parent window for client_current(). 2019-03-10 20:38:28 +00:00
okan
18c4f462d2 Print window id in hex; while here, remove unnecessary newline. 2019-03-08 20:33:30 +00:00
okan
1dc13f57f5 Similar to keypress event, fetch the screen from the event root window in the
buttonpress handler; bail if we don't manage the screen. Allows us to find the
current client based on the screen/event root.
2019-03-08 17:40:43 +00:00
okan
e34b5f476a extend verbose logging for key/button events 2019-03-08 15:04:39 +00:00
okan
d039ccc7ef [keypress event] turns out we've been checking the wrong window for a matching
client thus always falling back to client_current(); while the current client
is problaby right in most cases, use event's subwindow (not window) to find the
client. Bail early if this event came to us from a screen we don't manage.
This is result of us grabing all keybindings off the root window instead of
selectively.
2019-03-08 14:48:02 +00:00
okan
adfbd35644 add parans for readibility 2019-03-08 13:17:26 +00:00
okan
4957b62d80 Teach client_current() to use a screen to find the current client instead of
iterating over all (fallback if no screen provided for now). Initially convert
trivial uses of client_current().
2019-03-07 14:28:17 +00:00
okan
92b42c1713 check cc->gc directly 2019-03-07 13:24:44 +00:00
okan
42f2ef6661 zip extra lines 2019-03-07 13:24:10 +00:00
okan
723d64d135 gc clientq inside groups, instead use the better maintained one per-screen 2019-03-07 13:14:41 +00:00
okan
053c616a9b shuffle deck chairs: rename group actions to match intent for clarity 2019-03-07 12:54:21 +00:00
okan
af76851447 same thing as screen_find() 2019-03-06 13:32:19 +00:00
okan
8fa20d6f43 Separate out the menu window from the client resize/move geom window; in each
case, create and destroy on-demand. Isolate more menu specific code.
2019-03-04 19:28:17 +00:00
okan
9bf0bd42aa fix a few misplaced (and misnamed) ewmh root window functions 2019-03-04 14:48:59 +00:00
okan
edf7ed842c _NET_WORKAREA needs ngroups, so screen_update_geometry() needs to come after
conf_group().
2019-03-04 14:36:02 +00:00
okan
f18d19c6ef simplify xftcolor config 2019-03-04 13:33:39 +00:00
okan
a15d877277 Tie group number and name together during config. 2019-03-01 14:32:01 +00:00
okan
ef3d45ea45 Move the group index (desktop number) check to the only 2 callers that require
checking due to ewmh.
2019-02-28 23:26:12 +00:00
okan
5efe73bca2 Ensure we don't action on the last group when the requested one is not found. 2019-02-28 23:20:52 +00:00
okan
b08a193eaf Selectively hide and show clients based on state; merge client_unhide() and
client_show().
2019-02-28 13:11:53 +00:00
okan
7d83c3f6e3 Add a configtest flag (-n).
based on a diff from Sascha Paunovic.
2019-02-25 18:07:48 +00:00
okan
93ac77f595 Add 'group-close-[n]' action to close all windows within specified group.
heavily based on a diff from Nam Nguyen.
2019-02-25 16:40:49 +00:00
okan
24bbd9245a simplify screen 'area' usage for initial client placement 2019-02-23 19:17:17 +00:00