* refs/heads/master:
Fixed memory leak in xu_get_strprop.
Prevent out of boundary write with configuration files in which too many quoted arguments are stored for other window managers.
Allow configuring a percentage window size of the master window during htile/vtile actions. From Uwe Werler, with a few manpage tweaks.
zap stray tabs
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.
Add support for SIGINT/SIGTERM.
Simplify conditional construct.
Trim event_mask to those that the root window actually needs.
No need to lookup current client early; move to right before it is needed.
Recommit 1.259, but now with TAILQ_FOREACH_SAFE.
Revert previous. Causes a crash as reported by Tom Murphy.
Simplify list markup.
Plug two memory leaks. Also get rid of a variable that is no longer necessary.
Remove ColormaskChange from event-mask since there's no event handler.
Unrelated style fixes, consistency changes and sorting, appropriate dosage/removal of wrappers, simplification of name queue, client cycle joins other kb/mb bound functions.
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@
* refs/heads/master:
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.
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.
Add application section
command uses execvp(3) not execve(2)
Plug a memory leak in log_debug(); OK okan@
Handle _NET_WM_NAME changes.
* refs/heads/master:
Add 'group-close-[n]' action to close all windows within specified group.
simplify screen 'area' usage for initial client placement
restore order from before r1.248 (vtile/vtile containment changes).
Rename internal functions to delinate between client remove, delete and xproto delete; 'window-close' is now the proper action, but 'window-delete' as an alias will remain until more interesting changes require breaking configs.
Limit vtile/htile actions to clients fully within the screen of master client.
fix missing includes
* refs/heads/master: (28 commits)
Use screen's saved view instead of re-querying the server.
Slightly expand and expose verbose debugging.
add debugging for x events
Add a simple debug logging mechanism.
Simplification; use asprintf where appropriate now.
Use func attributes where appropriate.
Fix wins comparison declaration since it's unsigned from XQueryTree().
Generate name_to_func[] in a clean and readable fashion.
Shrink tier[] by one after removing matchname in r1.55.
If the requested group number is invalid, bail but don't kill cwm.
Quick fix: exit after a failed execvp in u_spawn instead; previously we did in u_exec, but the introduction of re-exec'ing the previous invocation of cwm if 'exec_wm' failed missed the 'exec' failing path. Will likely split out as a proper fix.
Only exec the fallback when in CWM_EXEC_WM state.
Typo, from Julien Steinhauser.
Convert menu-exec-wm from an abritrary exec menu, into a config-based menu from which one may configure (wm <name> <path_and_args>) (and choose) specific window managers to replace the running one. 'wm cwm cwm' is included by default.
As done for buttonrelease, work specific un-cycling and un-highlighting actions into the keyrelease event, only performing what's actually needed for each; should result in much fewer events against keyreleases. No intended behaviour change.
Merge group_toggle_membership_leave into the buttonrelease event and only do border work for a group/ungroup action.
add helper function client_show to bring together like actions for unhide/raise
Add support for re-exec'ing with SIGHUP; equivalent to the already built-in 'restart' function.
Use poll and XNextEvent to replace XNextEvent blocking inside the x11 event handler.
zap stray that snuck in
...
u_exec, but the introduction of re-exec'ing the previous invocation of cwm if
'exec_wm' failed missed the 'exec' failing path. Will likely split out as a
proper fix.
Odd behaviour reported by Ve Telko.
* refs/heads/master:
Only when mapping clients from an initial wm start or restart, query the pointer and if it matches the child window, activate it; new clients will not need to make this roundtrip to the server.
On execwm, we should properly release resources before exec'ing into a new window manager; so allow CWM_EXEC_WM to assign new wm to wm_argv and pass through cwm_status (now EXECWM) so that x_teardown() gets called before exec'ing the new window manager. Removes the need for a separate x_restart() now, using new wm_argv; and consolidates errno for execvp.
new window manager; so allow CWM_EXEC_WM to assign new wm to wm_argv and
pass through cwm_status (now EXECWM) so that x_teardown() gets called
before exec'ing the new window manager. Removes the need for a separate
x_restart() now, using new wm_argv; and consolidates errno for execvp.
there make u_spawn use exec_wm (renamed to u_exec) for it's execution to
remove duplicated code.
This means constructs like this work in .cwmrc:
bind CM-t "ssh -Y 192.168.1.2 \"xterm -e top\""
or alternatively:
bind CM-t "ssh -Y 192.168.1.2 'xterm -e top'"
"in it goes" okan@.
Also, exec_wm() currenty err()s out if something failed with the exec,
killing the currently running wm. This is bad. Replace the err() with
warn() instead.
from Gleydson Soares, thanks!
full description of changes:
-remove fontlist, and all associated structures/calls, it's not needed.
this also removes any doubt about leftover 9wm code (the list was
borrowed from it). Since cwm now uses Xft for everything, the legacy
font handling is just not needed.
-add /* FALLTHROUGH */ comments into grab_{label,menu}. I actually
didn't intend grab_menu to be a fallthrough, but it actually works quite
well there, so remove the extra rectangle drawing. I love it when that
happens.
-remove a couple of unused prototypes that were obviously missed
before.
-remove a bunch of commented out or if 0ed out code. It doesn't look to
be coming back anytime soon.
-several functions returned an int, but this was never checked. most of
them only failed if they failed to grab the pointer (thus the internal
state didn't change), so just make them void and return early if this is
the case.
-remove several unused functions and some useless variables.
knocks something like 200bytes off the stripped binary size for me.
ok marc@, tested by several others.
files, and replace them with the actual ISC license.
- add license to the manpage (it was lacking before)
- correct license statement in the README
Permission given by Marius (copyright holder):
"1. please replace with the standard ISC license
2. you may add the ISC license to the man page
3. feel free to replace the information in the README as well"
and Dros (copyright holder for group.c):
"Please switch group.c to the ISC License."
ok ian@