💾 Archived View for gemini.rmf-dev.com › repo › Vaati › cwm captured on 2023-01-29 at 02:38:55. Gemini links have been rewritten to link to archived content

View Raw

More Information

-=-=-=-=-=-=-

Go back

cwm by Vaati

View account

Fork of the Calm Window Manager
git clone https://gmi.rmf-dev.com/Vaati/cwm

Log

Files

Refs

Commits

4a6128d5e461515b87da0dabf31dd1c7288b26db, by okan on 2022-10-15 16:06:07
Fix overlapping menu items as reported by kn@ and probably others at
some point; with op@ and Walter Alejandro Iglesias helping along the
way.  Consistently use font ascent+descent instead of an arbitrary font
height+1 for individual menu item rectangles and placement.

ok kn@ op@

4e73ce533c98c54a83fa24c71105bbb1b40a0803, by okan on 2022-02-27 14:59:55
cycling fix: when no client is active, warp pointer to last active;
from Walter Alejandro Iglesias.

496bcc879de1186e62bac6fbeff531dbdc9e871c, by okan on 2022-02-26 15:19:18
whitespace

5e5221d82d1d0c8679329e5bfb5a913e1b543a29, by okan on 2022-02-26 15:03:42
Fix spelling of some unused MWM hints; from Sean C. Farley.

While here, flesh out the rest of the MWM hints.

7c22b36a230ea740a0fe2b9d089f3b3340dc182b, by op on 2022-01-27 18:45:10
Add group-last command that shows only the previously active group; ok okan

81a08ddb896dacfe2c7b2e9cad43a8f623fadd24, by okan on 2021-12-24 16:00:47
Allow bare numbers for key and mouse bindings; taken from similar
support in other parse.y's; from Leon Fischer <lfischer@airmail.cc>.

a9eeb04606b8002d41b2ad5bc715ec7253f2e77a, by okan on 2021-11-22 00:51:54
sync parse.y changes from base; ok naddy@

original from naddy@:
> Don't declare variables as "unsigned char *" that are passed to
> functions that take "char *" arguments.  Where such chars are
> assigned to int or passed to ctype functions, explicitly cast them
> to unsigned char.
>
> For OpenBSD's clang, -Wpointer-sign has been disabled by default,
> but when the parse.y code was built elsewhere, the compiler would
> complain.
>
> With help from millert@
> ok benno@ deraadt@

055b84f4d47e05031ba03044dfa111d28e52a31d, by okan on 2021-11-19 19:13:14
Do not attempt to grab keys without a keycode; this incidentally allows
XF86 keys support.

found and fix by Luis Henriques <henrix@camandro.org>

d46f34f01eba56f989af90e277fc0c673ad3684f, by kn on 2021-04-22 10:02:55
Keep pointer within window on maximize/fullscreen toggle

Spawn a window, maximize it in any way, move the cursor to a window border
that is not on the screen's edge and unmaximize again:  While the window
goes back the cursor stays at the screen's edge, i.e.  focus is lost to the
underlaying window.

Moving, resizing, tiling or snapping windows in any way always moves the
cursor along iff needed, e.g. using MS-[hjkl] to move a small window from
the center to the edge keeps the cursor within window borders -- no matter
what you do with the keyboard, focus stays on that window.

Make CM-f, CM-m, CM-equal and CMS-equal (default bindings) for toggling
full-screen mode, maximization, vertical maximization and horizontal
maximization of the current window drag the cursor along if needed as well.

OK okan kmos dv

91c05f94032debb645c14c76c9911ea5cfba5d3c, by tobias on 2020-04-25 20:07:28
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@

3ebe04ee8ea2e5362678a102f6b1a4b418613f20, by tobias on 2020-04-16 17:12:49
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@

6407eb9bc1380d879f354c0331dbb5ea5302fe51, by okan on 2020-04-16 13:32:35
Allow configuring a percentage window size of the master window during
htile/vtile actions. From Uwe Werler, with a few manpage tweaks.

6afdd483c774925dacc39dcc2b290d3bbfacdf21, by okan on 2020-03-24 14:48:29
zap stray tabs

6c20772841684c18d85b45888de01e538f2999b4, by okan on 2020-03-24 14:47:29
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.

0a7d8cc5c4bfa8df89c7b876d9f52bea14f37014, by okan on 2020-03-23 20:14:27
Add support for SIGINT/SIGTERM.

6c7b8261df821459a7e0e6e04f5b4751132e25e4, by tim on 2020-03-20 18:50:08
Simplify conditional construct.

OK okan@

49f839e194b990dde123f35435c86cf5baa42c4d, by okan on 2020-03-20 15:16:31
Trim event_mask to those that the root window actually needs.

207b71ef1ca478e81fa812e6a1a757e98ac9a344, by okan on 2020-03-20 12:13:20
No need to lookup current client early; move to right before it is
needed.

3b9b98c024dc0100af3a0700d8057b2ea96a6714, by tim on 2020-03-16 17:50:44
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@

b9213d0a02de1254358a878cf14ee53f4fb4df0d, by tim on 2020-03-14 16:11:09
Revert previous. Causes a crash as reported by Tom Murphy.

146fa08e4db93bc8910df5280eaab51a4257ceaf, by tim on 2020-03-13 20:50:07
Simplify list markup.

OK okan@ schwarze@

d8c7d877379385cdf30d84498db5e7f2e6da28b9, by tim on 2020-03-13 20:49:13
Plug two memory leaks. Also get rid of a variable that is no longer
necessary.

OK okan@

3d1a8028c2cf9921ba66e7c0e8a76523a4ecde1e, by okan on 2020-02-28 13:38:35
Remove ColormaskChange from event-mask since there's no event handler.

96275a835d34b0e17da0c4d3bad294620f82d4d5, by okan on 2020-02-27 14:56:39
Unrelated style fixes, consistency changes and sorting, appropriate
dosage/removal of wrappers, simplification of name queue, client cycle joins
other kb/mb bound functions.

7a88b2bdb2789e549ed4caab37c814198e347696, by okan on 2020-02-07 18:53:41
Allow the 'empty' group clients to be window-{h,v}tile'd.

Behaviour (or lack there of) noticed by Raf Czlonka.

d3410dd10d9c199521f92fcf45a43766bcd8f8d3, by okan on 2020-02-03 16:38:02
Map ('5') and allow mod5mask (altgr) as a modifier.

From Artturi Alm (though changed from 'm' to '5')

83de84b7f822a2211d81d9bb11d4a3e41588c364, by okan on 2020-01-22 19:58:35
add, then use, xvasprintf, checking for appropriate return.

2fc191f978225291055477f42d2b59afd62b5c75, by okan on 2020-01-21 15:50:03
Ensure the pointer stays within client bounds after a window 'snap' (to edge).

reported by Stefan Hagen.

781af9c998b109ffc21569afcca8e0f850c4ddbf, by okan on 2019-08-13 18:45:38
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@

6131e36f8a838aa54ed687dc08b387bceeb70fdf, by okan on 2019-08-12 00:52:36
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.

fdb841c3b0393f960afaab6bcc9dcc1c0d569018, by kn on 2019-07-09 21:38:44
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

40000724cce67a6346c8af3972da020d4249d8fe, by kn on 2019-07-02 23:37:47
command uses execvp(3) not execve(2)

util.c:u_exec() has been doing so since import.

25b699b582aff7587fe2c5ca61434c8d3e4a2c0c, by tim on 2019-04-29 19:03:20
Plug a memory leak in log_debug(); OK okan@

3f1caab46a090ee48879bd5de43774dd285f2cbb, by tim on 2019-04-29 19:02:21
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@

9a7528f5b99bd234f724aa229cbf75fb6a813282, by okan on 2019-03-11 15:25:46
Check the atom type on propertynotify before iterating.

e55c0d48fab32daba096b61d0b63b2fcbfa49ed7, by okan on 2019-03-10 22:53:11
use screen_find() for xrandr crtc changes

5bc2098c6f9f1e95462e43adcd2922d7730c0b60, by okan on 2019-03-10 20:38:28
Find the managed screen from the parent window for client_current().

5071baa2aad12f8de2c9591fdf753ff4edec5df7, by okan on 2019-03-08 20:33:30
Print window id in hex; while here, remove unnecessary newline.

4470a247c8d30f0c7acdc44905feecd0ed3edf10, by okan on 2019-03-08 17:40:43
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.

eab4b7e4b5f026d6859d92a18e1630197bd602e0, by okan on 2019-03-08 15:04:39
extend verbose logging for key/button events

bf43b6241405dffa02ae15bf4ec1d55f84ea52aa, by okan on 2019-03-08 14:48:02
[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.

2a3c2b5231e42691580c6ad90d82980e84cd5302, by okan on 2019-03-08 13:17:26
add parans for readibility

7c45b87622c069a176359df3c632086540a7fe3f, by okan on 2019-03-07 14:28:17
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().

01be5b4e4a04e5f454d0e685c71c8023c7c0b731, by okan on 2019-03-07 13:24:44
check cc->gc directly

823566a65309c047695f5f2b22a93e8f43a54396, by okan on 2019-03-07 13:24:10
zip extra lines

aa79351d2e85e04add3ad684f15528f2efcba46a, by okan on 2019-03-07 13:14:41
gc clientq inside groups, instead use the better maintained one per-screen

b26202724a342b596692b5e9b1f47c7c491a1934, by okan on 2019-03-07 12:54:21
shuffle deck chairs: rename group actions to match intent for clarity

9efa6c8c85780c3d5604d0686c943627765dd1a5, by okan on 2019-03-06 13:32:19
same thing as screen_find()

0bda8f76067b737f34c11ef094b349c0c12fe118, by okan on 2019-03-04 19:28:17
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.

9d5b0e5d22fca1b6fb37a8df906bdad0317238c9, by okan on 2019-03-04 14:48:59
fix a few misplaced (and misnamed) ewmh root window functions

fda68a40de36baebe1c27b91a49c7ee062555103, by okan on 2019-03-04 14:36:02
_NET_WORKAREA needs ngroups, so screen_update_geometry() needs to come after
conf_group().

0c0551b8bffd9a978247a9c6b98e84a9bdd6f76c, by okan on 2019-03-04 13:33:39
simplify xftcolor config

9d252184582d96dd916bc97675d6a35a18921140, by okan on 2019-03-01 14:32:01
Tie group number and name together during config.

ae231f67d0ac54fb6281831c10972cc2f1f37acf, by okan on 2019-02-28 23:26:12
Move the group index (desktop number) check to the only 2 callers that require
checking due to ewmh.

880b5cda3f36e0135632d6670717e9a964caf0ec, by okan on 2019-02-28 23:20:52
Ensure we don't action on the last group when the requested one is not found.

8cd6d1154c6e5198403270a66fffb8a4f0c56cf6, by okan on 2019-02-28 13:11:53
Selectively hide and show clients based on state; merge client_unhide() and
client_show().

cd4be1c17a537cc398520140c547370d1061b841, by okan on 2019-02-25 18:07:48
Add a configtest flag (-n).

based on a diff from Sascha Paunovic.

a5ba9aa9da9567244d1c3d1d8ccacfdb51b044de, by okan on 2019-02-25 16:40:49
Add 'group-close-[n]' action to close all windows within specified group.

heavily based on a diff from Nam Nguyen.

43cd19378ed244f9bd9f86e51bca0f3905055bdf, by okan on 2019-02-23 19:17:17
simplify screen 'area' usage for initial client placement

953cf1ce89525d9c64bb4b484195def605632422, by okan on 2019-02-22 20:52:13
restore order from before r1.248 (vtile/vtile containment changes).

535cf541c8fb229d3223dbed5da3b6400a12abe6, by okan on 2019-02-22 19:40:32
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.

044ef5a8cd71dc8935ba40015d3583d231d0bf27, by okan on 2019-02-22 14:39:18
Limit vtile/htile actions to clients fully within the screen of master client.

from Charles A Daniels.

c307e37dcb8f280e0c3c51248e71e4292e62631d, by okan on 2019-02-13 15:43:24
fix missing includes

695eb1d8e52c8498afe342ec8ecd404fbffb9e1c, by okan on 2018-11-14 19:22:51
Stop asking for events (NoEventMask) from menu window once done with
the menu (we don't destroy it, only unmap).

194589eb6bfd9d44d2c595035475af14644350c1, by okan on 2018-11-13 17:37:13
Allow 'transientfor' clients to inherit group and bwidth either during init or
via property notify events. Previously only the flags were set but nothing was
in the path to apply said flags and/or bwidth. Required slight of re-orgnaization
of client_init.

268deed916cd217b39568809d520f9d4515abdac, by okan on 2018-11-09 16:00:54
merge from base, from sashan@:

> - odd condition/test in PF lexer
> (and other lexers too)
>
> This commit rectifies earlier change:
>
> in the lex... even inside quotes, a \ followed by space or tab should
> expand to space or tab, and a \ followed by newline should be ignored
> (as a line continuation).  compatible with the needs of hoststated
> (which has the most strict quoted string requirements), and ifstated
> (where one commonly does line continuations in strings).
>
> OK deraadt@, OK millert@

a63b87e31561b68c0daad5ffaa0ff47cb84ab402, by okan on 2018-11-08 15:49:42
Use the original client border width to adjust initial placement of clients
containing {P,US}Position requests where they are explicitly set to 'ignore' in
cwmrc(5); clients are unaware that their border will be altered (removed in
this case) when calcuating position and thus end up a factor of their original
border width off once mapped by cwm(1). cwm(1) will essentially shift the
client to the edge if the original request's position and border match.

Window offset noticed by at least Andre Stoebe via bugs@, and others since
(and likely before). Thanks!

9999c3e6e0191c91d36674e5968000b58610ed14, by okan on 2018-07-16 14:19:23
Remove unused prototype; from Ross L Richardson.

05510941822cb14969bae35d57ff7778fc4daee1, by anton on 2018-02-19 19:29:42
Do not print any parse errors when ~/.cwmrc is missing. Regression introduced in
revision 1.109 of calmwm.c.

ok okan@

b1929b5ed6a33fa6d031912c9963ab5e113f81ea, by okan on 2018-02-13 15:43:15
Store the screen's visual type and colormap.

13763662c9ba3c0fed9732b14fb81a63235a1f26, by okan on 2018-02-13 15:06:22
Consolidate region 'view' and 'area'.

e6bf7429b3443b2ed6491774995658aaad0a5b3a, by okan on 2018-02-09 20:08:07
limit scope of screen_apply_gap()

1a5f80bd0b9865994ef02244da597044dd99a309, by okan on 2018-02-09 19:54:54
Clean up conf_file/homedir and conf_init() bits.

f3211427c16b755db20bc71ce4074e9fb9aae8af, by okan on 2018-02-06 15:05:20
Use screen's saved view instead of re-querying the server.

14c17b5f9b8b21860e42cad4fa24d4b87b84a8f1, by okan on 2018-02-04 22:56:26
Slightly expand and expose verbose debugging.

8623c7add79876a138bc40c9ecdd1b3e5609fd70, by okan on 2018-02-02 13:50:22
add debugging for x events

34e15dbd7a2226de417fe60c69de777667b8d6af, by okan on 2018-02-02 13:40:55
Add a simple debug logging mechanism.

9bf750b0549f10fdd4f5898dbab40ad4c946eee6, by okan on 2018-02-02 13:27:25
Simplification; use asprintf where appropriate now.

174537f29e4735799f5cafd29e34bb31f831f9b3, by okan on 2018-02-01 15:17:51
Use func attributes where appropriate.

f34e659ca7a8f169ba26f4ace13c3b2885888847, by okan on 2018-01-23 16:18:59
Fix wins comparison declaration since it's unsigned from XQueryTree().

03a2e9cf052f9dcc3e357c38f0c527cdfe40eac1, by okan on 2018-01-23 16:00:21
Generate name_to_func[] in a clean and readable fashion.

5324f9a4e321adbad7d5d7014286509aa74d0012, by okan on 2018-01-23 13:51:39
Shrink tier[] by one after removing matchname in r1.55.

8675b5e158aabf4be9be8289f3553d399474e42a, by okan on 2018-01-23 13:48:49
If the requested group number is invalid, bail but don't kill cwm.

e99f1d4683eb348d5b8174212f7738d76039b32a, by okan on 2018-01-08 16:21:54
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.

Odd behaviour reported by Ve Telko.

50c0a4eef624cf43a9c652f286e65b54b3ccde88, by okan on 2018-01-02 14:04:58
Only exec the fallback when in CWM_EXEC_WM state.

Broken quit noticed by Ve Telko.

5672d5d2038596d965fc18875c88a085a72f0f45, by okan on 2017-12-30 22:25:09
Typo, from Julien Steinhauser.

15ca9c03ba2260debfd1b8029c1435ea4a872d1b, by okan on 2017-12-29 20:09:19
If the replacement window manager fails to start, restart the fallback (the
original invocation of cwm).

6e7dbf5bb71d56bb3443f57cb6b8707a291fe0d2, by okan on 2017-12-29 20:03:46
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.

No objections and seems sensible to sthen.

43db5b55eaae67515ae926c0d195c1ef6aa4b607, by okan on 2017-12-29 18:50:43
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.

Additionally, like we do for group membership, grab the keyboard only when
required for cycling.

ba75c139531d2a52dfa43a0302d9c8886ed1a820, by okan on 2017-12-29 16:55:50
Merge group_toggle_membership_leave into the buttonrelease event and only do
border work for a group/ungroup action.

5ddaed415c895e56e7c1e6e7b881df8d3c4214bd, by okan on 2017-12-29 12:54:54
add helper function client_show to bring together like actions for unhide/raise

156681f0a5af18704faab52929badc671390ec61, by okan on 2017-12-27 18:46:18
Add support for re-exec'ing with SIGHUP; equivalent to the already built-in
'restart' function.

3d7c82936e6cbc49c92cdd985f8c3a8588028da5, by okan on 2017-12-27 17:04:35
Use poll and XNextEvent to replace XNextEvent blocking inside the x11 event
handler.

03e5d869522e7fcc9243e6877bdc05cef2856c79, by okan on 2017-12-22 21:30:01
zap stray that snuck in

dfaf44c0acfbe9a1f30b7ed5d830b257cbbb70db, by okan on 2017-12-22 21:27:45
Return the connection number for the display.

c5d03b0853b8b2c5e3c6cb1ed95b7339e11e5fad, by okan on 2017-12-22 21:21:44
Fix a few comments and while here, wrap some long lines.

18a53717aec5c3a9a30df6c45646561aff9d9c1a, by okan on 2017-12-19 19:38:43
Use a variable to keep track of flags for menu_filter().

bc5215f41a5a8084b2496b7a3477a4cdac7b4695, by okan on 2017-12-19 14:30:53
Add support for _NET_WM_STATE_SKIP_PAGER and _NET_WM_STATE_SKIP_TASKBAR; eerily
close to cwm's 'ignore'.

Roughly based on an initial diff from Walter Alejandro Iglesias, but with
support for both Atoms and without cwm-based bindings.

5e5d06f06354f5d90aa11beaace16fa5e6e34cce, by okan on 2017-12-15 13:13:17
remove duplicate ExposureMask

64ff5f399ab16f8615bb32cd452e26cba8e0ce43, by okan on 2017-12-13 15:10:17
move variable declarations up, to match everything else

add109c0069ae420b53b8ba1c10023ae384ecbc3, by okan on 2017-12-12 15:37:16
clean up after previous (noprompt removal)

888f6c53195e2a6d4145e5e9d761fc8289c6f650, by okan on 2017-12-11 20:58:18
Unconditionally show prompt on menus, regardless of invocation.

0fc9d47fb407a65fd08e3095fface42eb93ac914, by okan on 2017-12-07 16:25:33
Original idea from Dimitris Papastamos to move windows to corners a while ago;
re-proposed by Julien Steinhauser with an updated diff. Apparently this was in
the original calmnwm.

However, expand the original idea and let clients 'snap' to edges instead,
neatly allowing key bindings that snap to adjacent edges (i.e. corners) as
well. No default bindings assigned.

f0524fe07a3a671f706d7183bb0cfbc6c8f09780, by okan on 2017-12-07 16:03:10
give command and group menus their own match callbacks

b06ddae6249cca671046d04c0cf709cd0c48fd90, by okan on 2017-12-07 15:47:14
stash dir into conf since it'll be of use

0d76265e23f497624e5390759e612a2b16a6b5b9, by okan on 2017-12-07 15:40:54
organize this a bit better

592e8efaeec5e24ee35e8da4e845de577aeb6f0a, by okan on 2017-12-07 15:39:47
spacing

d9d6b4f88fa9e3a0f1c7908aa6b237b2d77d298b, by okan on 2017-11-30 18:18:51
Revert r1.109 (Switch to XWindowEvent() pulling out events that match the mask

moving or resizing it, XWindowEvent() blocks. Found the hard way by Anton
Lazarov, and Lea°hNeukirchen found the right bit to revert - thanks! Reverting
since the reason to switch from XMaskEvent was unclear.

7d7e2563962c338daeb61f24573fc0a64a958121, by okan on 2017-09-06 14:15:13
Case matters for menu matching on executables; from ben@lloyd.im.

8dee1182a2a65a0286c68310f6f5181560f6275a, by okan on 2017-07-21 15:55:37
Use the key names from keysymdef.h in the default key bindings list for
clarification.

from Michael Reed.

60ed85c50fc5ab032aab8d44f37b7abc22acf3a0, by okan on 2017-07-14 18:01:46
remove extra parentheses

c039e7fb8c96fbfbcadade008abbf50af71735c3, by okan on 2017-07-14 17:23:38
Pull over the remaining re-implemented window move/resize functions and create
a wrapper so that the key and mouse based move/resize callbacks can be unified.
This has already been done with other window operations and menus.

aefc0bf0fbbe6c32360f41fc13653d4efd72e73a, by okan on 2017-07-12 16:56:26
rename one function, matching others, to help upcoming change

d179dfdeb97d1f4d16d56ae5783044770d87898c, by okan on 2017-07-10 13:36:58
Replace fgetln(3) with POSIX getline(3); inspired by brynet and Ingo.

feedback and ok brynet@

f94fde51fb5c0a0afe44d627ba7493118bfc3d6f, by okan on 2017-07-06 17:09:17
fix a few WARNINGS (new sentence, new line and extraneous Pp macro) found with
mandoc -Tlint

eb79ce65c9eacef95887d9a92d820951fb25fc7c, by okan on 2017-07-06 17:01:10
from src, by espie@:
no need to generate y.tab.h if nothing uses it, set YFLAGS to nothing

16a2ccc225dc002e87f8f88481cbb8dc669a3d3e, by okan on 2017-05-09 18:43:40
drop obsolete comment

113ffcf47e3988730f393eb2ce8de734f8f22e89, by okan on 2017-05-09 13:40:18
Alter callbacks to take a struct instead of a growing number of arguments;
greatly simplifies upcoming work.

189a735eaa16a01b491518fc5db5183ef0c6d76b, by okan on 2017-05-05 14:14:19
Ensure clients stay within the viewable bounds on placement, even with empty
borders; based on a patch from Vadim Vygonets.

3d6ff6dabfba7bb863970a7780c3e6ba19f06612, by okan on 2017-05-01 12:54:55
Clean up, unify and accurately calculate edge distance with client move/resize
actions, so as to not lose windows off the edge.

inspired by diffs (and feedback) from Vadim Vygonets.

4d85e2e2a606f822f84fff544ec375270c44be34, by okan on 2017-04-26 21:10:54
Switch bwidth type; unfortunately X11 is inconsistent.

15b9a8fe27a72e58f1fb488ebf14c3fcae4b98a9, by okan on 2017-04-25 13:40:33
The r1.36 menuq_add() conversion did this one wrong; fix by reverting to the
original code which adds to resultentry list, as opposed to the wrong one in
menuq_add(). Fixes crash noticed by at least Rickard Gustafsson.

717e6c8167978bef3ffaba49322724e72cb78ba3, by okan on 2017-04-25 12:08:05
Remove 'noresult' (and simplify) as it does nothing and makes the logic around
it needless. History doesn't show what this might have been used for in future
iterations.

ffcfff3dea48485f806670b1d34b7a6db1363c8d, by okan on 2017-04-24 15:06:11
search_match_path() isn't supposed to return anything.

56b44257a56417f038255c340f89eb3df90f1241, by okan on 2017-04-24 13:35:25
Move queue init to caller so it's only called once in a few cases.

15a6fcc851d0e04f1a53beec6b2db81109e9a058, by okan on 2017-04-24 13:31:19
sort

9b5632590822eea5d11d0994fd7a6e1a5feffb7a, by okan on 2017-04-24 12:27:32
Raise the previously focused window, instead of the previous window in the
cycle list; seems to match behaviour of other wm's; from Walter Alejandro
Iglesias.

50dd70afc5f37b724ce0f68dd6755faffbb994df, by okan on 2017-04-24 12:18:04
For {h,v}tile, instead of keeping the master client's {h,v} geometry, expand it
to %! (MISSING)of the area, then fill in the remaining space with the other clients in
the same group; from Gerrit Meyerheim.

support from ajacoutot.

8d9d84d8592fb03c7a6cf7f68f61b1e84c3ac596, by okan on 2017-02-10 15:00:54
Fix group hidden state when a client wants to be on all desktops on start;
reported by Vadim Vygonets with diff, but another approach was taken.

172da14d77718199a262fe0ae593d6a5862714da, by okan on 2017-02-06 18:10:28
Call client_resize instead of client_move after client_placecalc since the size
may also change.

from Vadim Vygonets

f908118a3a013ad3a1f4717ec036bf2fa8b5582e, by okan on 2017-01-15 21:07:44
Typo on binding name; from Redouan Ait Mallouk.

96918a06e68bc9940a9205b2c312707f09c415bf, by okan on 2017-01-05 21:18:20
Ensure client stays inbound on key-based resize; based on logic existing in
key-based client move; from Vadim Vygonets.

613d11434a7e950c62b68829e583fabb84c73238, by okan on 2016-12-19 14:17:26
When a window has a user or program specified position, ensure the edge of the
final position is at least viewable and warp'able by the difference of bwidth;
prevents mapping windows completely off the virtual screen.

8b4666cb926121481905b68bf93d6e81c307e9e3, by okan on 2016-12-06 21:59:33
stray newlines

a7f2ab7497f32c6ed740b610fc8120f934a4893a, by okan on 2016-12-06 21:54:10
Add search_print_text(), a default callback for mi->print in menu_filter(). While
here, normalize the remaining search_print_* argument paramters.

89e4e7fb140a65726a9ce55179535b782e4b2d57, by okan on 2016-12-06 21:09:22
Consistent use of menuq_add for ssh menu.

2ae4797297a240f80c61324dfc7862f2c00af964, by okan on 2016-12-06 21:03:58
Now that dim.{x,y} are available early, use them before requiring a
MotionNotify event.

74092f78aac0dbb9e86621f620d49341f7387053, by okan on 2016-12-06 21:00:13
Set dim.{x,y} during client_init and update on resize, instead of
(re)calculating only when applying hints.

cf4c1879e52449eb6b921c876e79fc854d079434, by okan on 2016-12-06 15:03:13
'window-search' is spelled 'menu-window'; the former snuck in during the
conversion('menu-window' already existed and was properlly documented); found
the hard way by sthen@ while trying to convert.

cfffa703647f2c2fbddce654322767fa95edffb3, by okan on 2016-12-02 17:02:17
Fold unbinding functions into one for each, key and mouse; plugs a leak when
unbinding a mouse button bound to a command.

5b7e66a13b79c1c8b7a4f2661912271f1777d892, by okan on 2016-12-02 16:50:19
use the correct type

94f681fc90229362e7e9bcc3c3699bb191f61ccc, by okan on 2016-12-01 20:28:19
Tame the number of 'exec' and 'path' search_match wrappers. No functional
change now, though more can likely go later, losing the (paritally complete or
incomplete/broken) argument completion bits.

b94f0748d8872fa52f6c4f0e2feeba8e2dae131e, by okan on 2016-12-01 18:44:09
Switch ssh menu to search_match_text; like group/window/cmd menus, use only a
substring match. The previous matching is only intended for the exec menus.

92111e526d34a0bd808c40ae5d7634900c726d0b, by okan on 2016-12-01 18:17:52
Change 'menu-window' to display all windows; then add 'menu-window-hidden' for
the previous behaviour of 'menu-window'.  'menu-window' becomes the default
binding; use 'bind-mouse "1" menu-window-hidden' to restore old behaviour for
those who prefer.

OK sthen@ (long long time ago on a different version)

d968a6c1bf1115fe261e979ac1d58ab5c12cd176, by okan on 2016-12-01 17:17:27
Normalize bind function names, based on a few categories: window, group, menu
and pointer.

Replace 'bind' and 'mousebind' options with 'bind-key' and 'bind-mouse',
respectively, replace special 'unmap' keyword with 'unbind-key' and
'unbind-mouse', and additionally allow unbinding all with 'all' keyword.

ae9f900b91373f744fda7540cb42f281533fb7e4, by okan on 2016-11-15 18:43:09
Use an additional check with lstat(2) when d_type is unknown.

from James McDonald via portable.

db02592e5cfd5cf1395b4e40be8feb54f943a603, by okan on 2016-11-15 00:22:02
revert previous; upcoming changes will hopefully deal with these more
naturally.

62dc5ae1320c833d1d6a8354543cada41a2bc4f3, by okan on 2016-11-15 00:07:03
Add a wrapper based upon xevent handlers around client move/resize for key and
mouse bindings.

ed22d7a944879a2b296a53e40fbce2b86339ce9f, by okan on 2016-11-14 21:25:59
Define callbacks, then default bindings.

64e133b289383890c9e381a49f78008d824a6467, by okan on 2016-11-14 19:56:05
Reorganize for upcoming changes.

98c913cc3b54f3785546a87db7ac0b8a33a2c443, by okan on 2016-11-14 13:52:33
Remove the (8) default bindings for pointer move since they conflict with
default bindings for emacs, which wins; the feature remains and can be bound to
whatever users wish with cwmrc(5).

from mpi@

db93599a0fb302271e10a9dcbcbe6cafdc8aa2cb, by okan on 2016-10-24 20:44:08
Make it clear these are flags.

972e28d58cd3a2c4e3bd4cc746cd94f0056cd9a3, by okan on 2016-10-24 18:57:12
Remove duplicate check that strsubmatch() already does; while here, fix a
comment.

eb43101591ca45754f4805dd1f7101c79a487ddb, by okan on 2016-10-24 17:39:38
Sprinkle __func__ in appropriate error messages.

ffd60b3cabc361f9432c863ff58e823db5b7aa14, by okan on 2016-10-24 17:16:23
Get rid of 'matchname'; it's too surprising to have the menu change during
client search as different potential str matches are cycled through. If there's
interest, the only string that doesn't exist in the listing is the window's
class - that can be added of course, but it makes the line too long imho.

b1af1bedd009221477e49cc77010ccc37e1ae014, by okan on 2016-10-22 19:16:43
clean up search_match_client(); no behaviour change

0bb1be86c69ea95103e1a6b38c093406a47cdb07, by okan on 2016-10-18 17:03:30
Refactor callbacks to take a void * so as to not try and generalize into
client_ctx in keypress and buttonpress event handlers; pass appropriate *ctx's
based on context.

While here, limit some globals, replace defines with appropriate variables and
fix some naming.

38eac7d7e9d36243271eb7f968a3152c9eb0cfbc, by okan on 2016-10-12 16:11:15
remove another unused proto

15bf703e1cb65dcad697f7e3637437e1b96169e2, by okan on 2016-10-06 14:53:52
Rename 2 kbfunc to match closer to what they do

987ee736b92ec889391283624d84cc6cc87c8c1a, by okan on 2016-10-06 14:41:19
Add an argument to the callbacks to pass the xevent context, button or
key press. This allows to remove a few hacks to duplicate functions only
for behaviour changes; now differing behaviours are pushed down to the
callback. Also will allow for previously unavailable actions to be bind-able
down the road.

66f5360fd48401a1d8ac204e36567597a3974164, by okan on 2016-10-06 14:30:05
Check the ptr bounds in the new client during cycling, since not all
actions do ptrsave, such as restoring client geometry; adapted from a
diff by Vadim Vygonets.

e7dcb17e1e5df88e90efd67e63d46f0435ad8099, by okan on 2016-10-05 14:01:23
More accurate to say 'toggle', rather than 'select', for group[n]/nogroup.

c131620d7bfe451c5366a1dcfd5a9a1d5689f5f1, by okan on 2016-10-05 13:35:17
Add CM-a for 'nogroup' (CM-0 stays for now); update manpage to reflect.

d40820d3f34f2787fa6397216112281b1eead3b7, by okan on 2016-10-05 13:10:59
Stash wmname into conf.

a37606c63ff059a458023ddef1bd6e8926497f18, by okan on 2016-10-04 20:15:55
When removing xrandr regions, ensure clients are within the bounds of
the screen; adapted from an ancient diff from Sviatoslav Chagaev. Things
in this area will likely change, but put this in so it works now and
serves as a reminder.

5c13775d31ce277bba94c68daff12cf50224aba0, by okan on 2016-10-04 15:52:32
Calculate client nameqlen in client_setname(), the only place it's
needed/used.

9306c1fbd3e491b9dcdcbb8587460296843a10ce, by okan on 2016-10-04 15:18:20
Turn CALMWM_NGROUPS define into variable, ngroups.

8aa5033d12eec5e764885f3e8b27c1df22d6b0df, by okan on 2016-10-03 18:43:49
Start simplifying menu code; and in turn, remove a cursor no longer
needed.

03f5dc219e20edbcf4b7eac1f733a188ab8f7c29, by okan on 2016-10-03 14:42:34
Defaults are split between defines and conf_init(); normalize these, as
well as give 'sticky' groups its own variable.

792f85cde97742d0c580ee2354044870d0f8754f, by okan on 2016-10-03 13:52:17
For both kb and mouse move, it is possible to grab a client and move it
completely off the screen/region; instead, if the pointer is outside of
the client bounds, warp the pointer to the closest edge before moving.

a8a111dffd2752fc5be7773a67d03306dd92d05e, by okan on 2016-10-03 13:41:30
client_ptrwarp should not deal with unhiding or raising clients (non ptr
requests); most callers do this already - deal with the few that do not.
client_ptrwarp becomes a simple wrapper (setpos) but it will be expanded.

1d3a6905f13d83e61cf5b7403a09d6899cd067e3, by okan on 2016-09-30 21:44:51
remove unused proto

1c54fc079dab7dcc56d057f40be01fb1f3a21c2a, by okan on 2016-09-30 20:55:54
Set the initial ptr position during client init, instead of waiting
until (maybe) a ptrwarp call. Likewise, explicitly ensure an inbounds ptr
position (same as initial) when saving.

2d8f621b8d285b1cf8e29feb383fa2268e57ee5a, by okan on 2016-09-30 18:28:06
Use instinsic X11 functions for key/btn/ptr grab/ungrab/regrab requests;
the one line wrappers provided no value and limited altering calls where
needed; additionally, most of them had but one caller.

8b26a43bf17b3834de3127408e7274e8effc9beb, by okan on 2016-09-30 15:12:19
Replace mousefunc_sweep_draw() with a generic menu_windraw() using va
lists; use it appropriately for both window dimension and position in
the respective mousefunc calls.

ok bryent@

f63b2e2341b8e883598ab33a46708ae315a63a99, by okan on 2016-09-30 15:05:02
Switch to XWindowEvent() pulling out events that match the mask *and*
window.

24d6348e52c0732e1c2564eceeae8159a47d9bb7, by okan on 2016-09-29 00:30:40
no need to unmap menu window again

0e8c7066333ffd331743658e82cfedaf3e0078a2, by okan on 2016-09-29 00:21:55
Mechanical change: move screen menu bits to their own struct.

92b81d3df5d28e86e849a414eb9bc6cebe0c5f3f, by okan on 2016-09-28 17:06:33
Inline Xft draw and extents wrappers; too much abstraction.

b32989d3793bf0247cd517bf232799f12b5652ab, by okan on 2016-09-28 15:54:54
Do not call sweep_draw() too early: don't yet have w/h dimensions; plus
we will get a MotionNotify event right away anyway, setting required
parameters.

57b2a6cf796614df4723cc5ffff12101a21e7850, by okan on 2016-09-22 14:36:03
Continue merging kb and mouse functions: fold
mousefunc_menu_{client,cmd,group} into the respective
kbfunc_menu_{client,cmd,group} functions; simply pass a flag down from
config denoting mouse action behaviour.

3947f1268ab4ba15af8f4eeea6224628188a7f5f, by okan on 2016-09-20 19:58:54
Allow ctrl-[ for abort (esc); from Benjamin Scher Purcell

08631748fdd4abfdb90c6f57acb273e066bef1f4, by okan on 2016-09-20 19:11:19
de-static client_inbound()

74e4a3c60b75db4687d1032cc3d95709ccd4fb90, by okan on 2016-09-20 18:23:12
remove debug that accidentally snuck in

9cf31746965729f6ea8289849f08fe7a8b825555, by okan on 2016-09-20 18:21:32
Get rid of curcc, instead cycle through the queue; removes the need for
client_none().

6a53e3a859cd55b6f01ecb2a8a8a30af5d940345, by okan on 2016-09-16 14:32:02
During init, query screen for _NET_ACTIVE_WINDOW and set that client as
active; while we already look at what's under the pointer, use this
information first, then look under the pointer (saving that round-trip).
This restores the active state to a client after restart even if the
pointer is not above it (and of course the pointer is not above another
client).

2bbe111cc0e2ddd8b684e22dab337086c39ac46a, by okan on 2016-09-14 21:00:24
Some clients fail to setup hints at all, so initalize for them; fallout
from r1.218 switching to malloc - clearly missed this case.

found the hard way by brynet@

b8933ebccaba603c47d15026ed22a2afabbd9d67, by okan on 2016-09-14 19:45:33
Fix-up a few simple uses of client_current(): check CLIENT_ACTIVE flag
instead of relying on curcc.

9124a561e317d68454ce22c65da47cff10482ce5, by okan on 2016-09-13 17:42:58
init label

a94254137c6916d65be42fb90a9e60c384b8a088, by okan on 2016-09-13 13:42:28
Limit mouse resize to hints within the client; matches kbd resize
behaviour.

e1234b75b8d9ba3dc414af1fc2e04f159a5d6f7e, by okan on 2016-09-12 13:48:41
Switch to just malloc since we need initialize most everything anyway.

b14a4b222d43a798971e62627b862046b540cda9, by okan on 2016-09-12 13:47:00
change 'sticky' to 'stick' to toggle client stickiness (seems the
default binding worked for everyone for a long time!); conflict with
group sticky found by Ali Farzanrad - thanks!

c82c3f08356d4debd69f1f15be3fc065a2010b8e, by okan on 2016-09-02 16:07:11
Simplify group_holds_only_hidden(); from Vadim Vygonets.

67a9eaa440ddc535fc7707883baca9f263cf4ae8, by okan on 2016-09-02 15:08:44
Simplify toggling flags; from Vadim Vygonets.

44f3fefe1135a5ca9e7f662cf9d7321fee174615, by okan on 2016-09-01 18:38:52
Do not draw borders on ignored clients when returning from fullscreen;
from Vadim Vygonets.

4cf9a34b65cbb495088d33fd16dd68400ded62c0, by okan on 2016-09-01 18:34:04
Remove redundant minimum client size adjustment (minw and minh are
always positive since r1.214); from Vadim Vygonets.

8c1b05e534ec0f2ffa0a8914fc2a8cc324456f69, by okan on 2016-08-28 15:23:24
Enable the use of numpad Enter key on menus; from Henrique N. Lengler.

ok beck phessler

5015c850bd3f0bc460d1b93e47c03cb8e10ba0e1, by matthieu on 2016-08-13 09:59:48
add a column to previous commit for consitency.

375368a94c5c5682ea516a4164c3b55792b8c56f, by matthieu on 2016-08-13 09:58:37
conf_screen: report the fontname that can't be opened in case of failure.
ok dcoppa@

ffc365bc5d1c5dee337a2869fcc728f46dd262a8, by okan on 2016-04-28 16:28:38
If supplied format to menuq_add() is NULL, fill text with an empty
string; found by Christian Neukirchen.

4ac6daa27ded7927d481810a2350942feef20978, by okan on 2015-11-17 15:19:19
Fix a typo from r1.201; fixes window_grouptoggle binding.

8aa2f317afcc0f4896b341b16e760f3913d16437, by okan on 2015-11-17 14:32:38
If a client does not set increment values, use 'moveamount' as a way to
scale keyboard based resizes; extend kbfunc_amount().

Behaviour noted by, tested by, and ok sthen@

e8d77b6890b82961f0bb5bc85c6916f7b5c26445, by okan on 2015-11-17 14:31:28
Inline the only use of mousefunc_sweep_calc.

323672ace778a61f6f51032453f781d50701e349, by okan on 2015-11-12 21:28:03
more client vs screen context differences

4aca2b876485fa011298c9d7c0fe5b296b2ed122, by okan on 2015-11-12 18:33:30
If a client sets hints, honor them for kb resize requests, just like we
do for mouse based resize requests.

Based on a patch from Vadim Vygonets.

9a48836ceb40313cd12c05781d57f291401de7b0, by okan on 2015-11-12 18:26:41
Move kb pointer movement out of the kbfunc_client_moveresize since it's
got nothing to do with clients, thus doing flags work causes lots of
waste and almost useless jumpy pointer movements; while here, split out
move and resize since they share almost no code, just like mouse client
move/resize; factor out amount and factor. Still wonder why this is
here, but it works now.

a2c066e447f8c3f754cc5559066b09f80e4c148e, by okan on 2015-11-12 17:56:54
pledge "stdio rpath proc exec" cwm before main event loop, after
init/setup - mostly for menu building.

ok semarie@ (another cwm user)

00bdd48b1d93b91946c7655ec8829060040aec22, by okan on 2015-11-11 14:22:01
Partial revert of replacing screen_area() with region_find(); until a
fix for a regression is found; this bug has been around for a long time
it seems, but this change exposed it. Likely need to track clients in to
and out of regions.

09565bc42362bb3a9fd24c75441e89c723114364, by okan on 2015-11-10 22:06:57
Use position on root to figure out region.

e20110f3445ba7f388482f5be7b72a922e548c92, by okan on 2015-11-10 20:05:33
Start cleaning up name vs function differences; replace magic numbers.

31c74e915752ef1c4ed637a4fd3cee5cd14a7d8b, by okan on 2015-11-09 20:15:23
Clean up unused defines.

d7bd2998191af2ce1d6c0018e7c3a43a01ed3be5, by okan on 2015-11-09 20:03:29
Extend region to include both view and work areas; switch to
region_find() which no longer needs to recalculate gap each time
a client (or menu) is created or altered. If no RandR, fall back
to display dimensions while building regions instead of during
execution.

5fcf2516721dd441b435ba07f73c6315c104f5a3, by okan on 2015-09-23 14:09:40
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.

Based on a patch from Preben Guldberg.

0fdcf3f3dfd336e7593482286dff49cd8be6ce44, by okan on 2015-09-16 17:58:25
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.

47a10cc05549b0a94e3606ca7be9fe626754d12d, by okan on 2015-08-28 12:07:28
Lost fix from r1.112; add comment.

Reported (again!) by Peter Kane.

28d4001ecaf57a722ec418f8b8b955242402e5a2, by okan on 2015-08-27 18:53:14
Mechanical change: group->gc

f467838e7b1045c43f2b2ad9622736a614c8c58f, by okan on 2015-08-27 18:42:56
Add consistent checks against NULL.

19826222f6dc85116145acaf8210c83c2c91dab6, by okan on 2015-08-27 18:40:09
Move client cycle grab/ungrab into a more relevant place; while here,
update comments about why we need to grab/ungrab the keyboard.

5391659629a7fa75b7447e824e56e179c10ca642, by okan on 2015-08-27 17:43:44
Re-add lost chunk in group_cycle from r1.113.

6d53091429e074e0d5bd504a9001016106d2d1ac, by okan on 2015-08-25 20:35:49
Further simplify _NET_WM_DESKTOP handling using new group_assign().

871ed39ccf6b6ab7385c87f849a7c9bcff130792, by okan on 2015-08-25 19:52:02
oops; remove left over debug print

cb60a4b917a4e72cd579f1f7bc8d863be00498bb, by okan on 2015-08-25 19:49:19
Allowing sending a valid 'nogroup' (0) group_ctx to group_assign()
(since we init all groups), though assigning the client's group to NULL
for 'sticky'; use this simplification in a few places (others to
follow).

96262a6b0cc6dbf5d82fcac45b81cbc376c2a0ef, by okan on 2015-08-25 18:29:10
Split out sticky mode checks and the restoring of a client's group and
_NET_WM_DESKTOP from the config-based auto-grouping; no (intentional)
behavior changes.  Needed for further work in cleaning up this area.

dcfbc9e809623eee64e9df28fd8cfc754d1f6a6a, by okan on 2015-08-24 15:42:57
Implement _NET_CLIENT_LIST_STACKING (from Thomas Admin), but
bottom-to-top order, as per spec (notified Thomas as well).

97db17d0568c8dcb41173104af16b000879a36e4, by okan on 2015-08-24 14:57:19
Don't allow freeze operations on fullscreen (consistent with what
fullscreen does).

4269ea046355991779eaf397fb9d99685532af69, by okan on 2015-08-24 14:56:10
Sort _NET_WM_STATE Atoms like the spec.

b224945446083ec061cea8ae41ee98190f7a4185, by okan on 2015-08-23 17:31:20
Move CLIENT_STICKY logic from client hide/unhide to group hide/unhide;
rationale being that clients should be able to hide/unhide independently
of group switching.

ae9306748b36c5264ac95a9b50ffbbde94911b48, by okan on 2015-08-21 16:53:48
Add Xkb modifier to ignore mask; from Alexander Polakov.

cd3bbb1c9c2d789977ec761aeddedc26d282de89, by okan on 2015-08-21 16:52:37
Fix whitespace.

1d31f9000cabc965f478991c4ad11c43f163c30f, by okan on 2015-08-21 16:30:02
Add client freeze extension to _NET_WM_STATE Atom, allowing flag to
persist. As usual with new Atoms, requires X restart.

05478f061e0b934a0d7d729f0e8ea5755b167487, by okan on 2015-08-21 16:14:39
_NET_WM_STATE_STICKY implies only sticky at the group/desktop level, not
position and size; based on discussion with a few.

c96fd247dd951cbbb5ea27a6be3f57f243e2d32a, by okan on 2015-08-21 16:05:55
Instead of special casing the 'term' and 'lock' commands, go back to
keeping them hidden; showing them has apparently caused confusion/angst.

a79253abdc9a66fb22e1e88c9514013605610daa, by okan on 2015-08-21 15:55:39
Leave command list order from .cwmrc alone; remove sort.

871c9f24ba413a7c528ddff2d5c4c8f1601364f3, by okan on 2015-08-21 15:52:49
Bring group and client cycle closer together.

54bbd88e5108cc44822763038bb9bebb4cf4dcbb, by okan on 2015-08-20 14:45:15
Alter big move and resize bindings to match what's in cwm(1);
functionally the same, but re-binding should be based on default
bindings. Matches other similiar bindings.

Discovered by a portable user.

0d13b7c2205bd40d9fd4db016c8cf96f620c4f8d, by okan on 2015-07-12 14:31:47
introduce 'groupsearch' for group menu search; matches on either group
number/shortcut and/or name.

5c2decc8d000098ef682efd21392f7205fac77cf, by okan on 2015-07-12 14:21:09
simplify menu print text

02779e64b89267cc78b21114642391411adc897e, by okan on 2015-07-03 17:11:16
revert previous; seems search_match_text() needs mi->text pre-populated.
(only used in one place, application menu searching); re-visit later.

broken application menu searching reported by Peter Kane.

cb900def7f4da5216d567a27a04429d3dac85ae8, by okan on 2015-07-01 14:36:42
style

8efaf33cfbced84ff073f5c4d3b2c8e9d7b3bff4, by okan on 2015-06-30 19:02:24
no longer need to pass down format strings after introducing search_print_cmd

5d8027b75d20174446aa3788f856280aae7dd622, by okan on 2015-06-30 18:54:12
Introduce a callback for cmd menu printing, special-casing 'lock' and
'term'.

c87953eb647c360cef8834c381bd22de4a0b524b, by okan on 2015-06-30 18:44:29
keep cmdq sorted

6b8b8562172c860b8341fc9acf45ee7e2880e45a, by okan on 2015-06-30 18:42:50
style and spacing nits

8515d717ae5bb336e089e9c10a92b499de5d4c81, by okan on 2015-06-30 14:01:43
Re-implement XClientMessage handling so that we can feed screen_find and
client_find valid resources as needed, relieving the need for
screen_find to ungracefully handle invalid root windows. Removes a long
standing XXX.  Should theoretically allow XClientMessage handling on
more than one X screen.  Alter callers of screen_find to handle
failures.

9ea5f25347c056fc1ad2bf61a25dcb7181d5179b, by okan on 2015-06-29 14:24:40
Shuffle code in kbfunc_ssh so that a missing known_hosts file still
allows a (now blank) menu to appear, as opposed to nothing at all.

Behavior reported by Alex Greif.

e7b4045ecea3b063bc8238172998ce5b1ed5bb97, by okan on 2015-06-28 19:54:37
move client_find down

17720de4abd818ec04447f255e3d670ed2929911, by okan on 2015-06-28 19:50:46
replace assert usage

18f63629fdb322e2bd9d39972bf28c3bc96d0942, by okan on 2015-06-26 18:54:25
region is a _ctx, so name it so

66bc4162170b72f192c156b692b621643f1e5d52, by okan on 2015-06-26 17:17:46
Mechanical change from xinerama to region backed areas.

90288e2fc36a3b8be8f16b4f110b8af7e7a2ca12, by okan on 2015-06-26 16:11:21
collect 'gap' applications

8aa40078d19b99124efb149bfc43fed47937fc15, by okan on 2015-06-26 15:21:58
Replace screen region info gathering with XRandR equivalent of Xinerama
queries (currently act on XRandR events anyway). Fall-back mode without
XRandR is still what X provides. This removes -lXinerama.

ee400b08a8d7f1a0ef9ba1403285b1e32a08e39f, by okan on 2015-06-09 13:02:15
typo in comment; from jsteinha [at] iutbayonne.univ-pau.fr

654bae4f59e15631163be702833cebe3894ef945, by okan on 2015-06-08 15:43:13
just populating the ctx is enough since the menu uses a callback and ignores anything else

e9750e2144a48dc10cab60dd4a07f537b6dcd20d, by okan on 2015-06-08 15:41:27
switch to search_print_client() as the print callback since it will now display labels as well

8888c44888c65f1ba76b1ddc5e37dbc644856642, by okan on 2015-06-08 15:34:03
add client label

9180bb1a06abc01e8b0eaa0ae6b8c934988a8f6e, by okan on 2015-06-08 15:11:29
stash window dimensions

8653c88c90d88dd849910ca742184de89c133a22, by okan on 2015-06-08 15:08:44
clean up

bd5f724931404c9dd95eda0c9c962a68e9e31ef2, by okan on 2015-06-07 19:10:00
even if the menuq is empty, at least show an empty menu instead of just
bailing making it look like the binding isn't working.

cd5827491c7f5d6d74014c424f47623141a4dc9c, by okan on 2015-06-05 18:43:36
use the same geometry struct in menus as everywhere else

a4cba7e113490fdf691ccc52a1cae6629cdf97b4, by okan on 2015-06-05 15:01:51
add a flag to indicate a menu list instead of overloading 'prompt'

f22a3b1065a2b71acfc422cb447445452929b834, by okan on 2015-06-05 14:54:04
redundant check for 'list'

d9f38134bee3a61964358b2a7f3a136264ec1c4a, by okan on 2015-05-31 23:07:36
a start to cleaning:
- no reason for pointer movement and window movement and resizing
  sections that just describe default key bindings
- key bindings are for all search and exec dialogs, not just for windows
- adding missing bindings
- normalize and wordsmith
- re-order sections according to mdoc(7)

feedback and ok from jmc@

b1c2046efd856c4d32ba1a50a83e8b651f1769bd, by okan on 2015-05-21 00:37:04
merge kbd and mouse grouptoggle

31d4fe9f33d5bb80c3e490c5dbbbd774b0a124a4, by okan on 2015-05-20 23:54:39
fill in mwm defines

b9db4486da7e0fda4c90329bb66f646e0b2634de, by kspillner on 2015-05-17 04:39:50
Fix autogroup so name,class doesn't need to be quoted.

ok okan@ on an older version of this diff

d328f63c7dfe14507eb4f6f8c7c8ae1594b12dcd, by kspillner on 2015-05-17 04:34:01
Make window name and window class separate parameters to conf_autogroup.
No functional change, but will be used shortly.

ok okan@

557cd382dcd973fd96605c3359e3d6dfa45a4fd9, by okan on 2015-03-29 00:21:05
plug a leak

a4a414b68bf8a59255ee68959863f4c5fdee85d9, by okan on 2015-03-28 23:12:47
Introduce a xreallocarray and convert a few xcalloc instances that do
not require zero'ing.

0bbe0ad98c7b8ed5d081747ee3bdb2dbf7a1b848, by okan on 2015-03-28 22:09:10
Reshuffle and slightly simplify menu_complete_path(), removing an
allocation, for tab-completion; checked by Alexander Polakov as well.

5b64e1540c01fb9e24dde30e05308be3d4dfc86c, by okan on 2015-03-28 21:55:48
plug a leak

bad97699f9142838adec5005dc7a44d6b5bb187e, by okan on 2015-03-26 21:41:43
Simplify key/mb binding moving argtype into flags and dropping another
variable; removes the need to zero out struct binding, leaving a simple
malloc.

ac42dff6c1a55baf1f73a98dee9b6c4541b64e7b, by okan on 2015-02-14 18:24:12
simplify error messages; discussed with doug@

7e0c2e77288ce7e056402f9a242f1fde99d15ab2, by okan on 2015-01-24 18:16:59
calloc -> malloc

d8fa58bb6256d5a499d7cd957b95b5b052cf16a2, by okan on 2015-01-23 20:26:36
use malloc over calloc here

5146f661bd970ea1aa7e05b3647bd9dc8a555a81, by okan on 2015-01-23 19:35:11
First restore net_wm_state(ewmh), then wm_state(iccc); prevents clients
from re-hiding on restart due to flag toggling (note that this is ripe
for re-vamping). Behavior only observed on restarts.

Problem found by, and initial patch from, Henri Kemppainen (thanks!),
though ever so slightly different one applied.

7936b9b2a7c7c3cc06d3fb60c22ed535b610cd63, by okan on 2015-01-19 14:54:16
Switch to limits.h; replace MAXPATHLEN and MAXHOSTNAMELEN with PATH_MAX
and HOST_NAME_MAX+1, respectively.

ok doug@

c412f040df05c7221537a598786e0cea4b35167f, by okan on 2015-01-17 02:05:03
Catch up with src parse.y changes by jsg@:

Don't allow embedded nul characters in strings.
Fixes a pfctl crash with an anchor name containing
an embedded nul found with the afl fuzzer.

pfctl parse.y patch from and ok deraadt@

8d1eb202bf13dbe23d8379b095f64a10c0204676, by okan on 2015-01-16 18:28:08
Add gcc format attributes for yyerror(); fix a few yyerror() calls.

Adapted from src parse.y changes by doug@. OK doug@

9cada703b9772c5d9738c9bfa632e57678174025, by okan on 2014-10-08 15:31:01
no need for calloc(1,.. here, malloc is fine since we initialize

836c9f49d644e52395a12d0805260e070c999099, by okan on 2014-10-08 12:48:51
make group_init work like other *_init's

e9dbd150eaf14d230e7aa6191e5762b69e6b1241, by okan on 2014-09-27 19:04:32
these have nothing to do with 'sticky', but rather group membership; rename.

319d90099d96e5f9d2b9b3ef182baf17a051a357, by okan on 2014-09-27 18:57:11
Pass just the group to group_setactive instead of the screen and an
index which then needed to be found in a queue.

845e82015ce9c1467f100a7f3d9c0310b00e353c, by okan on 2014-09-23 14:25:08
Update _NET_CURRENT_DESKTOP with the screen's group_active->num.

cb65869d7a01eb093e8a95caea5a6e21b6689f42, by okan on 2014-09-23 13:45:48
Move stuff that doesn't belong in group_init; while here, explicitly
initialize hideall and cycling.

cbc7f760748f0519c70fa6c6d3c40a05810b7f9c, by okan on 2014-09-18 13:56:58
Move motion time check to the top of each MotionNotify block (and
eliminate from ButtonRelease); further limits the amount of work done
outside the threshold, notably mousefunc_sweep_calc,
screen_find_xinerama and client_snapcalc.

8fd0f43ec2027080cc3b6199897b905b134b79c5, by okan on 2014-09-17 18:41:44
these client actions are just toggles; less confusing with better names

458dd31b937e1ee84699ec346fd1304a14bb0cf6, by okan on 2014-09-17 18:09:30
ewmh states _NET_WM_STATE_STICKY should not alter position

736d973f4668d0c2db37b54c3ecfd41aa6e5ca39, by okan on 2014-09-17 16:32:53
Use a similarly named check as sticky for hidden check in a group.

7eef4eb63d7d2b2295091e6c1ccb68449e5a05e5, by okan on 2014-09-17 16:30:21
don't toggle _WM_STATE_HIDDEN here yet

a61812d52dfd2eb607516bfc7d5daa664070c8d3, by okan on 2014-09-17 16:00:44
Implement EWMH _NET_WM_STATE_HIDDEN.

74f4a1bad98bdb25212b32d15fa411d2ed16b6df, by okan on 2014-09-17 14:31:37
Introduce a check to see if a group holds only 'sticky' clients and use
this check to decide if a group is virtually empty.  Rationale: if a
group contains *only* 'sticky' clients, it should be skipped while
cycling through groups.  Apply similar logic to the group menu.

Based on an idea from phessler@, who also tested another version.

4b6dc963983906e9a2866565da003840037dff23, by okan on 2014-09-15 13:00:49
use similiar style for client flags

26b95de0194865a3638689d48e61221f90b9b73b, by okan on 2014-09-11 16:06:26
Remove incorrect cast in kbfunc_exec. In kbfunc_ssh, reverse logic on
truncation check so it's obvious.

d27fc997848f2c48bbf3b18bab6de7cd1b2b8b5d, by okan on 2014-09-10 20:30:38
fold in 'active' into 'flags'

20c1113fdd58103b91af9d7b0a24fe575c208fc9, by okan on 2014-09-08 21:24:27
move the check for an empty queue up during cycle

aac16013d21fd14ac9e570ffee91a591987c50d1, by okan on 2014-09-08 21:15:14
name the group client queue appropriately, like other queues

b64ce8558c8077716776758390864eaef9cfd5b5, by okan on 2014-09-08 20:37:02
more style nits and wrapping

bc703742647e3ae9238d72d6ef6ad711b97462a7, by okan on 2014-09-08 20:32:40
since mruq has been folded in, rename mru-named functions

26ba1526929931660ac22757ac752f15d5b64fb2, by okan on 2014-09-08 20:11:22
Remove duplicate client queue (mruq); instead, remove and take the
global Clientq and place it inside screen_ctx since every client belongs
to a screen, then use the same per screen clientq to track stacking
order (the sole reason for mruq).

a7f3f29ea91dc06ad326d22a161f046aab03697e, by okan on 2014-09-08 13:51:29
Now that a group knows its screen, only pass down the group_ctx.

5b46f0f7d8c6bb97f6eef28ee21d762fb65e9c88, by okan on 2014-09-07 20:57:26
Add screen_ctx to group_ctx, and populate on init.

3d12b6d1d940d40c1298ae03e519c8ac4a9a1407, by okan on 2014-09-07 19:27:30
more style nits

be091b35236438d578782c7d5711a512451f302b, by okan on 2014-09-07 17:38:38
screen_fromroot -> screen_find

78e0f2122580291206b5c9c3d07db9663f409c0b, by okan on 2014-09-07 17:27:20
Get rid of a redundant array of groups per screen; we already have a
link to the group queue for each screen.

f7af0ebd7267cdfd4e7b9c12bb910992f1a094e5, by okan on 2014-09-06 18:50:43
Few style nits; extend 'path' to MAXPATHLEN.

977992626a092487f4d5df364729693ad2be0131, by okan on 2014-09-06 16:24:32
generic sighandler

140f8b9eba06dfd416ae1503130da374867dd8d8, by okan on 2014-09-06 16:18:08
style nit

5cd4cce3a02203aaf1e85ffbe7155a782161ff5c, by okan on 2014-09-06 16:14:35
Move termpath and lockpath into cmdq; side effect is that 'lock' and
'term' now show up in the application menu.

142f52a0aab29681a46e4ce10eb2618ee99ede95, by okan on 2014-09-06 16:08:58
Rework group names: stash the group name inside the group_ctx as opposed
to having to manage an array outside in screen_ctx for group names and
shortcuts.  Simplifies (and moves bits for) reading, and constructing
data for, EWMH's _NET_DESKTOP_NAMES.

87d604f119e3598ca2b0311082c89ebb67782f76, by okan on 2014-09-02 14:08:39
bring menu bits closer together

231abb818ae3bdb8ea01a7df99d0895f38327748, by okan on 2014-09-01 18:17:32
add explicit paran and drop some empty lines bringing like functions closer

becc7f260c1230def154a98b8f80829d466aa18c, by okan on 2014-09-01 18:04:58
Merge group_menu into mousefunc_menu_group.

3b99d5357667095b3b89e2c41c2cb17d07537b42, by okan on 2014-08-25 14:31:22
Since the flatting out of sc->group_names is only for setting
NET_DESKTOP_NAMES, merge the helper into xu_ewmh_net_desktop_names,
where we actually set the property.

7314a3aefd33e901cfa1bd4a48eb4e75be4c01e2, by okan on 2014-08-25 12:49:19
Implement _NET_WM_STATE_STICKY, bound to CM-s by default; allows any
client to 'stick' to all desktops (ewmh speak) or groups - this
currently has the same affect as setting a client's group to 'nogroup',
with the exception that the client can also be in a group, so when
un-sticking, the client will go back to its original group/desktop.

ed164794cb3d375b24809f1f042124109ee1fbea, by okan on 2014-08-24 15:49:58
Continue effort to bring keyboard and mouse functions together; merge
name_to_kbfunc and name_to_mousefunc.

9f36d4af355facd1307989d203fa4f5a780007a1, by okan on 2014-08-24 15:37:45
gc->hidden has never consistently kept track of a group's state;
group_show() and group_hide() are not the only ways a group can change
state - if all clients in a group are either hidden or unhidden, then
that group's state should change, as well as the various EWMH ways.
Instead of trying to keep track in a wide variety of places, simply
query the clients in a group before needing to take action based on the
group's state.  Solves long standing confusion of when a group is hidden
or not.

fe533fdc8edb2584b40a8bad9f00b8258529854f, by okan on 2014-08-22 19:04:00
Fix nogroup regression, where nogroup became an actual group - the
symantics between cwm groups and ewmh got in the way.  Ensure a client
that wants to be in nogroup stays in nogroup (thus stays in view), even
when (re)reading NET_WM_DESKTOP.  Paritially reverts patchset 644
(2014-02-07 13:09 PST) which deals with a NULL cc->group.  All to be
revisited when NET_WM_STATE_STICKY hits cwm.

Reported by many; testing and ok phessler.

b31b09dfc26b4b17c025d7196b8b5a4a26f599df, by okan on 2014-08-20 15:15:29
Purely mechanical; unify 'num', 'no' and 'shortcut'.

30da2211ddbc39036e98ae951ea53d9a1793c376, by okan on 2014-08-20 13:42:27
Split off group window restacking.

7f4547153815a2851b158fab11de1ea6d96dba76, by okan on 2014-08-20 12:35:39
whitespace

5d22b261a61ae114cf969e3687571a4cc08c4044, by okan on 2014-08-20 12:33:12
fix a misleading comment and function name

6c835fd5854bab5de651757ba987b660ceb492a1, by okan on 2014-08-19 18:39:41
Remove unnecessary memset since reload was replaced with restart;
from Kent Spillner.

01cca3c114a6a4b82892c7c6f34b00dd898a5900, by okan on 2014-08-19 12:47:51
Pull highstack from group_ctx (and useless calculations of); in the one
place that we use highstack, replace that usage with a local variable
(for now until stacking is done properly).

11920071711238fdfcaf89feb35ab1bf68160347, by okan on 2014-08-18 13:57:57
Get rid of nhidden in group_ctx; it actually never reported correctly
since nhidden wasn't incremented nor decremeted in all the right places,
thus confusing matters.  We don't need to carry a count around, so just
use a local variable in the one place we need one to supply
XRestackWindows().

e9cb5b743f06baea2d0c469a11bdbe0224c15881, by okan on 2014-04-21 12:52:14
plug memleak (currently unused func); from Tiago Cunha

d46b0f88489ca0bdc6ec7825cd1a71f97d68cb28, by okan on 2014-02-27 00:52:57
Alignment fix; found the hard way on sparc64 by landry@ (and thanks too
for fast access to a box!)

ok deraadt@, matthieu@

6798e3dde302febeef3aa641eadea55d394461ff, by okan on 2014-02-08 02:49:30
Make sure we cycle through existing client's group membership and set
the hidden state on the group; important to know group hidden state
after a re-exec or restart of cwm (as easily seen in group menu).

1208225fbde43db8858e4d0c26ac6bac6f27166d, by okan on 2014-02-08 02:40:43
Replace a few hand rolled loops with like tailq loops.

2a87320bbf34457b79c55ad95d92a5eda4465073, by okan on 2014-02-07 21:59:56
all mapped clients now should have a group, so simplify some cases

3cb81ebeead55a21f679f54e1a4105dccb2a613c, by okan on 2014-02-07 18:09:54
If _NET_WM_DESKTOP is set to -1 during client creation, place the client into
group 0 (nogroup); solves problem initially discovered by oga@nicotinebsd with
tint2.  A clientmessage *after* client creation already handles this case.

Go further and assign every client to a group; in non-sticky mode, group 0
(nogroup) and sticky mode, the active group.  In both cases, autogroup will
override the group assignment.  Removing a group from a client always places
the client back into group 0 (nogroup).  Autogroup can also assign a client to
group 0 (nogroup) to keep a client always visible (unless of course one opts to
hide all clients).

98d8483d358747ad006cb37a9f29fc96e10a8827, by okan on 2014-02-06 20:58:46
Some clients set the urgency flag even if they are the active client;
prevent annoying behavior by only setting the cwm urgency flag if the client
is not active; diff from Thomas Adam.

f793964c9ec586b9c4b4843c14bc83afaf275cb4, by okan on 2014-02-03 21:07:47
Introduce a region queue and replace screen's XineramaScreenInfo; we
still use Xinerama to populate the regions per screen, but will switch
at a more appropriate time.

8a6dd51fac7632b413dd36c08d725ab28b161797, by okan on 2014-02-03 20:29:05
make this XQueryTree like the other

ad96c168386aced17e3fa4859dad1e1e2d80bb57, by okan on 2014-02-03 20:20:39
Move redundant bits from screen_init (while dealing with existing
clients) directly into client_init, performing the X roundtrip only
once. With the previous change in maprequest, this moves decision making
into one place for creating new clients.

ad76995af7e1bbae8ec81dd917def917453c379b, by okan on 2014-02-02 21:34:05
Move redundant window attr fetch from maprequest directly into
client_init and perform that X roundtrip only once.

ad1b78c6d1b466fbc2c11eec92ad5ce75bb44515, by okan on 2014-02-02 16:29:04
No need to store screen colormap and visual; rather just use the X
macros in the one place they are needed.

5f9c7a21c71d8386ae7eb7b03bdfb9c58dbe1b19, by okan on 2014-02-02 16:13:50
Unlike free(3), XFree(3) can't be passed a NULL pointer.

0a71742af4f4b54cc1b2ea5efd5acfa2eb4113ba, by okan on 2014-02-02 15:46:05
The menu already limits entries with MENU_MAXENTRY, so don't bother
holding a command name limit as well.

fd827fd7578faae62b798c4b24f2aa6d80b7b7ce, by okan on 2014-02-01 19:28:46
Take menu's bwidth into account for position/size; reported by Thomas Adam.

8b63ac62c2d87eb5c66dea85acaa53ab26898a49, by okan on 2014-02-01 00:25:04
Let the config parser continue parsing even after encountering an error;
original idea (with now-outdated patch) from Thomas Adam.  Since we now
report where errors exist, this now makes more sense.  Expand a bit on
config file parsing in the cwm(1).

Discussed with a few, including sthen; ok sthen.

34477b8a35ab71bf384db714ad0e7043b701be0e, by okan on 2014-01-30 22:41:16
re-add lost free from previous

cc1902f57cb23e0028c07e149882698124b025bd, by okan on 2014-01-30 22:17:22
Switch ignoreq to winname struct since it's basically the same thing;
removes limit on name matching.

7928c1ad7c7e2e4420669062a25fc4b2291e5f1f, by okan on 2014-01-30 15:43:53
use the same autogroupwin variable as everywhere else

fdefcecfa0281a9cd63fbfc32ac9bf768c65357a, by okan on 2014-01-30 15:41:11
Move cwm_status around to avoid header fu, and remove extraneous signal
header from xevents.c; noticed by Christian Neukirchen.

7b5b7cc9e986c7c711c524e6969c0ecbdd8cf1e1, by okan on 2014-01-30 14:40:21
Remove duplicate mouse functions and instead use the kbfunc ones.  No
user visable changes at this point, but they'll merge at an appropriate
time.

2be890489b8542b12f77133fbba404210c1b5f54, by okan on 2014-01-29 22:30:00
Minimize trivial differences between a few kb and mb functions.

59fe14bd2f2876beb16497f950ce589ccab4beb6, by okan on 2014-01-29 21:17:33
keybinding -> key binding

db0b2fde5cb55a8867d9781dd0acb7c0ef92bcd2, by okan on 2014-01-29 21:13:52
Merge keybinding and mousebinding queues into using the same merged
struct, binding; they were essentially the same accept for what was
'pressed', keysym or button.

4438970b649d8c6b0d662576bc37fc577b8de1b6, by okan on 2014-01-29 18:43:27
Much like we do for keyboard and mouse bindings, remove duplicates for
command name - last match.

1f8f19b4d50f59624e84a3c932b639670e0d8b27, by okan on 2014-01-29 18:34:22
Check command name/path for truncation and provide user feedback during
config parse (and use conf_cmd_add to populate defaults); based on a
discussion with Tiago Cunha.  While this looks ugly, there are likely
some other changes here to come.

c28467cda5323f2251ed16a407fd77b7ec9e5ba6, by okan on 2014-01-28 20:22:21
Check ignore windowname for truncation and provide user feedback during
config parse; based on a discussion with Tiago Cunha.

df15337a9f180e41d5489ad9d45fc39ed3cdd335, by okan on 2014-01-28 13:40:40
The EWMH spec states that if the cardinal returned is 0xFFFFFFFF (-1)
then the window should appear on all desktops, which in our case is
assigned to group 0.  Found to fix stalonetray due to the non-ewmh aware
range checking in group_movetogroup(); from Thomas Adam.

51b3fbee52a54cd068b5485542b454244d651c34, by okan on 2014-01-28 00:42:20
Move conf_init/clear into main - no behaviour change; from Tiago Cunha.

0608610cc7fb83ffa360fa85968e60b098cf3ded, by okan on 2014-01-27 15:13:09
move some init up and shed some blank lines

469db5f3719333ff97443e17b81008fb0cddf922, by okan on 2014-01-27 14:49:40
simplify parse_config using assignment; inspired by a very old diff from
Tiago Cunha.

6f103498437d2b2b9eeee66be168a1cc0144bdff, by okan on 2014-01-24 22:38:02
more range checking

c7e2ee5dd567888f30028250a7cdbadecdad4d73, by okan on 2014-01-24 15:08:06
correct arguments and drop the cast.

sanity check by oga@nicotinebsd

53e77acafcc0f419d4020ad63c030f6b577be34b, by okan on 2014-01-23 17:13:38
no need to quote within warning

79248a385ba53bc41c1a8200799b6250f7c922bb, by okan on 2014-01-23 16:51:28
If no title is supplied, term uses only the basename for its title.
This is useless when searching for windows launched via the ssh command
menu; supply a more useful title: '[ssh] <hostname>'.

Idea from todd@, ok todd@

3d2eec293a2cf4a0a2b7082e26d68c2bd8589d65, by okan on 2014-01-22 22:41:09
zap whitespace

978a5767ec1a3264a4576c38bcb8718cdbadf09b, by okan on 2014-01-22 22:26:05
cwm_argv doesn't need to be global any longer

5121ea5e10bce88d1716f5fc719b4385a26289ff, by okan on 2014-01-22 22:14:02
start properly releasing X resources during teardown

77aa5ac45b06b4afa392e21d55e3318913b0347b, by okan on 2014-01-22 21:48:27
Somewhat streamline event loop/restart/quit handling; most notable
change allows a restart to trigger proper teardown first, even though
teardown is not (yet) complete.

After some discussion with oga@nicotinebsd.org regarding a more
complicated version/idea.

ac3162439ad826026b499363b445e8c533313ff2, by okan on 2014-01-21 15:42:44
Sprinkle a few more const; from Tiago Cunha.

83f9ef884a07fc5b408aae2e7ccefbac33cb379f, by okan on 2014-01-20 23:18:47
Save the ptr position before lowering via kbd, so as to be able to cycle
back with the pointer in the right place; matches behaviour when
lowering via the mouse function.

c7adadaf9de082d9a0d811cdf8b0b24de6da31b4, by okan on 2014-01-20 23:03:51
merge KBFLAG_NEEDCLIENT and MOUSEBIND_CTX_*; brings kbfunc and mousefunc
bits even closer.

34f43e3f2d34874cd2e7d8c81d6b8814f8292de6, by okan on 2014-01-20 22:31:53
Use argument to pass down flags for mousefunc cyclegroup; removes
rcyclegroup wrapper need - now similar to kbfunc.

d91571c567fc74c422d766fd2613c9ae23ccbc36, by okan on 2014-01-20 21:34:32
constify and rename some confusing variables around cmdq.

7263fb4c8457631a921c20a93bb339dfe638bb34, by okan on 2014-01-20 19:06:04
 - remove redundant range check for buttons in conf_bind_mouse.
 - make conf_bind_kbd return error on non-matches to match what
   conf_bind_mouse does.
 - rename some variables while here for clarity.
 - constify bind and cmd.

from Tiago Cunha.

720b5452aa13bf27740a2b923617188fde8814ed, by okan on 2014-01-20 18:58:03
Add a function that adds an entry to a menuq, normalizing a common code
path; from Tiago Cunha.

43ccf4eae0f0f5c50495834e29f93671468a7cfe, by okan on 2014-01-03 15:29:06
use consistent types

08342471c86ca88dbfe71fffa55697f92378ff76, by okan on 2014-01-03 14:23:50
state is long

2843ba1e2812f8424e0649946d77bd92a3ad49d8, by okan on 2014-01-02 22:49:10
calculate proper menu width/height on the first Expose event; 'jump' (while using gap) noticed by Christian Neukirchen

376e98c2c8db3e298d503ef5ccf2c78937adad9b, by okan on 2014-01-02 22:43:55
Accept _NET_CURRENT_DESKTOP ClientMessage; from Thomas Adam, though
instead of group toggle, group only.

5a5e7441e1185d457372e0655e063cd99546d989, by okan on 2014-01-02 22:26:27
Accept _NET_WM_DESKTOP clientmessage; from Thomas Adam

10d4dcb1278b8ff01d5338aa58d50fa38978a9d5, by okan on 2014-01-02 21:30:20
bring mousefunc closer to kbfunc

c4f6134ebe2bf68943d8660b9933137e7215e0d6, by okan on 2014-01-02 21:17:23
gc keycode in keybinding since we only deal with keysym now

8420398068f8ec29995432d5ce55eba92982620d, by okan on 2014-01-02 21:15:39
rename for clarity

46b1d6ef1e3a45a4ce8b3f5d3c4f9631e793e785, by okan on 2014-01-02 20:58:20
When a client doesn't specify size hints, nothing prevents a resize to
0x0 - don't allow this situation during mouse resize (check already in
place for kbd resize).

Reported by brynet@

9b8dc1ba7f9af194a19f7cd1c34bfa051250cc18, by okan on 2013-12-17 16:12:18
missing stdarg.h include

da2bea3ffac03b74709fa4d9d3f12582f1912917, by okan on 2013-12-17 16:10:43
replace with memset

19fc7f666bd8e2d5956a7a3958bf6be4f5fea137, by okan on 2013-12-16 19:02:17
Implement support for EWMH's _NET_WM_STATE_FULLSCREEN hint.

Since we already have a form of 'maximize', we need to differentiate
between 'maximize' and the new 'fullscreen' mode.  The 'maximize' mode
will continue to honor gap but now *retains* the border, matching the
'vert/horz maximize' behaviour.  The new 'fullscreen' mode supports and
follows the _NET_WM_STATE_FULLSCREEN hint, allowing the client perform
additional window modifications; in this mode, cwm(1) will *ignore* gap,
remove borders and freeze(move/resize) the client.  Additionally,
'fullscreen' mode will remember various combinations of previous states.


  as desired).

Positive feedback from a few, testing and ok sthen@

f98f4615c0bf2fbf3f6229ccb9cb46284f3dd18a, by okan on 2013-12-13 22:39:13
Teach screen_find_xinerama() to apply gap only when told to do so;
adjust callers.  Needed for an upcoming feature.

5732b65139493570e331fbc298eb6920f0878e5f, by okan on 2013-12-13 21:51:56
Instead of using work area, use the Xinerama area for snap calculations;
based on a patch from Thomas Adam with appropriate adjustments for gap.

91a29396e84b49fcb942bbe476ad43e727b6cbc3, by okan on 2013-12-13 15:56:44
we need the save-set when re-exec'ing so as to not lose State on our hidden clients

40858be0ae7c6f23cb214932979c604b06c74d8c, by okan on 2013-12-13 14:45:47
stray space and sort while here

34ae428cec9f2c63a215e6c45f0e73aba584b6e5, by okan on 2013-12-13 14:40:52
Add support for XUrgency and matching _NET_WM_STATE_DEMANDS_ATTENTION
ewmh hint; urgencyborder is configurable.  The urgency flag will stick,
even while on a client in a non-viewable group, until the client
receives focus (where the border is reset).  Initial diff from Thomas
Adam with some changes/enhancements from me.

fe177b7c611d6c557275c7c9869cb7c31fa1a7e2, by okan on 2013-12-12 21:50:50
Make sure we really take work area gap into account with snap calculations;
from Dominik Honnef via Christian Neukirchen.

b276a2ef00a3333e0d474ad960c0e2b16880904d, by okan on 2013-12-12 20:15:07
ICCCM explicitly states that server time (CurrentTime) should *not* be
used for focus events, but rather the timestamp of the generated event.
Track the last event timestamp and send it down for a WM_TAKE_FOCUS
ClientMessage.  I suspect we should do this for clients that don't
announce this Atom as well, though the raciness gets us into a bind.

Solves focus order issue since WM_TAKE_FOCUS; fix verified by sthen@

ok sthen@

e767ac9c6556d04c346b89e8d47d721c38cc366e, by okan on 2013-12-11 22:14:23
we don't need to manage the save-set since we're not reparenting; left-over from pwin

09e07ddaafe617fccd7c7ac98004d300e1cd8cba, by okan on 2013-12-11 17:23:31
since we are drawing in unhide, no need to during client setup

68f365cddbf9ae293d20b3088403aa9972854b29, by okan on 2013-12-11 15:46:47
apply mwm hints later

7e0749b0b1e62f490f37aeb65302cd38b1fb52be, by okan on 2013-12-11 15:41:11
Add client wrapper for XWMHints to support XA_WM_HINTS in PropertyNotify
events; based off a diff from Thomas Adam.

0d9b1becff4661134895780e4d610521582dc288, by okan on 2013-12-11 14:16:09
Remove extra work and simplify client state handling.

23a1abdd8ac7025ff55e287bd4437594618781d2, by okan on 2013-12-11 14:09:21
Stash Class and WM Hints in client_ctx

1d68f0683a784420b5a6ec0b8f1622b6ccd5fcc7, by okan on 2013-12-10 21:27:37
Redraw client border when unhiding; during a hide, we just unset
the active flag but never redraw since it'll be in IconicState.

Behaviour reported by sthen@

7fad5224d47aba47d4fe02d2ce2b20e058bdedc0, by okan on 2013-12-08 13:51:38
If not using sticky mode (the default), clients aren't automagically
assigned a group, thus cc->group will be NULL - fix the client group
shortcut in menu lists; crash reported by Christian Neukirchen.

5dc65d9242c423fd4f45ec48c32e525d9f1300f2, by okan on 2013-12-02 20:01:19
When we receive a NotionNotify event, there's no need to (incorrectly
might I add) redraw the top menu selection.

161ed1801aa57e0fbb2f88be508d2dd0d1873d09, by okan on 2013-12-02 19:49:26
Always highlight the first menu item (helpful to see selected items when
not using a mouse and therefore not generating Expose/MotionNotify
events); from Thomas Adam.

d1b232fe8111cb748383727528aa90bbe740b507, by okan on 2013-12-02 19:30:27
Prepend the group shortcut in the client search menu; from Thomas Adam.
Likewise, prepend shortcut in unhide menu.

6b72168d9243bed163cd90d6271b5df7d151f6e8, by okan on 2013-12-02 14:30:12
Since we use IconicState as our hidden state, check for the hidden flag
and unmanage the client if we're not hidden (basically if NormalState)
during an UnmapNotify event.

Resolves an issue with mplayer going fullscreen while not using NetWM
hints; behaviour regression reported by Ido Admon.

5e67a12262c061ecabc03e1cd73fdbb5c3c00196, by okan on 2013-11-27 18:34:34
like gap, make snapdist per screen

1b6ef8e9edfca41c4339c83b481d47d839100984, by okan on 2013-11-27 17:04:35
alter -r1.145 getsizehints to deal with clients that don't have
WM_NORMAL_HINTS.

abf52049b9e93e026c9299f65f326b975fd2f2cc, by okan on 2013-11-27 16:24:17
Remove the option to bind a key by keycode with brackets; it never
worked (and no one complained!).  While it's fairly easy to fix, users
should be using keysym names and not keycodes.

Discussed at length months ago with todd@, matthieu@ and Owain.

250f98bf1552ebbff28ff4d9c7b853687065d476, by okan on 2013-11-27 14:20:32
simplify/unfold

fa25915a75551c36495c8a0fa2754ac3091c529e, by okan on 2013-11-27 00:01:23
Rewrite active/inactive client handling in client_setactive();
client_leave() served no real purpose, likewise no reason to handle
LeaveNotify events since an EnterNotify will process the next active
client (and we don't have anything important to process anyway), so
xev_handle_leavenotify() goes as well.  Allows a simplification of
client_mtf() and client_cycle_leave() for clarity.  While here, unify a
few client_current() checks.

No intended behaviour change.

03b19f1487135d8e8a80e0aad5aef447776c7c11, by benno on 2013-11-25 18:21:55
Log message:
use u_char for buffers in yylex, for ctype calls, as done in all other
parse.y in the tree
found by millert@, ok okan@

2937b2066f005ccb6f89bfe6480284874a398feb, by okan on 2013-11-12 21:25:00
Alter the r1.35 of event.c race fix.  Remove the forward looking event
queue check (removing the need for a server grab/ungrab) - if the client
is going away, let it fall all the way through to a DestroyNotify event.
There's no longer a need for us to manually destroy a client ourselves
(removing yet another server grab/ungrab).  Instead, when the
UnmapNotify event is synthetic, simply set the state to Withdrawn (as
per ICCCM), else Iconic (in our case 'hidden').

Verified with test case from the 2009 race which was the original reason
for r1.35 of event.c.

bda68b09244bc2130839e6a828158cf1a9f0839b, by okan on 2013-11-11 12:51:15
Put back the border draw call in client_resize; since we are adding and
removing the border on maximized clients we need to redraw.

Also noticed by Tim van der Molen

3bb928a1c26c76d7e0a929ca3502c29170a83e53, by okan on 2013-11-08 17:35:12
stash WMProtocols in flags

c1bc6d37b385ff4dad1582583fd21f2c45b2c168, by okan on 2013-11-05 00:55:42
quick keyboard focus fix for clients that neither populate wmhints nor wmprotocols, like rdesktop; focus needs to be re-visited

b5915eb9898b93d0f9eeb42df3f7a8a2bd839e49, by okan on 2013-11-02 19:13:56
The only reason we need to keep XSizeHints in our client_ctx is for
flags, so just add one to hints; consolidates sizehints and shrinks.
Additionally don't abuse PSize for XGetWMNormalHints() failures.

b8f53666bd3d84114c6beab636ad410c51e86c67, by okan on 2013-11-01 21:54:20
x/y from XSizeHints are obsolete (and have been for a long time), so
instead use x/y from XWindowAttributes when USPosition|PPosition are
set.

06eb13dfd949199a730e9373529ef2a7e9f4b1e6, by okan on 2013-11-01 14:07:19
re-add support for WM_TAKE_FOCUS, and additionally this time only call
XSetInputFocus() for clients that have the InputHint; latter fix
discovered by Valery Masiutsin with a PoC patch - solves keyboard input
focus loss for java apps.

6e17b41f566865629d3dd35a6a60e081e6e2b089, by okan on 2013-10-25 19:46:16
A client_delete should behave differently depending on whether the
triggering event was unmap (with pending destroy) log destroy; we only
need to grab/ungrab the server lock, set WithdrawnState and
XRemoveFromSaveSet clients coming from an unmap event - doing so for
clients coming from destroy are already gone, hence we generate errors.

6867821abefd761a840befcfee5a1f1f2fef9831, by okan on 2013-10-20 02:00:02
shuffle

5b733a152daa01493301333a7e756394f9b45455, by okan on 2013-10-20 01:55:32
wrap key ungrab like btn ungrab, for it'll be used again

9ff288baefadb19f50def66072d1a9a765efe5b5, by okan on 2013-10-20 01:35:47
revert 1.138 (WM_TAKE_FOCUS) for now

a2013ee9dd9b152c044f8120a89c3d5aa17af4ea, by okan on 2013-10-19 19:39:34
Using xu_btn_ungrab() buttons during client_leave doesn't work (error
BadValue) when the modifier is already AnyModifier .  Instead alter
xu_btn_ungrab() to ungrab AnyButton/AnyModifier and call it only when a
client is coming into focus in client_setactive(), instead of iterating
over ignore mods - matches how we handle key grabs.

083a023f2c0f36676d1015e1713ccac1b99bad59, by okan on 2013-10-19 18:59:22
I believe we redraw the border in too many cases; likely a leftover from
the cc->pwin days - don't redraw on every unhide, resize, and mouse
move/resize Expose event (note, all Expose events trigger a redraw
anyway).

Tested with some finicky X apps I could think of, though I'm sure others
will find more - if so, and they 'lose' the border, please report!

a70b2d81af54121eb080d7e9f149b892f78a0b67, by okan on 2013-10-19 00:24:54
For clients that support WM_TAKE_FOCUS in their WM_PROTOCOLS property, send
a ClientMessage event.

a88b8c1363bfcb9ddaf1311f6d1e43021a5ce180, by okan on 2013-10-17 13:59:10
a few err->errx since we don't have error messages here; from Tiago Cunha

bfd3f5e5e1728cacf0046e7d8e724e10b7380e7b, by okan on 2013-10-07 13:40:26
trying parsing a XLFD string first, then by pattern

6ac51b8e41da0f47b6cf95bcb8ca58ec86378d88, by okan on 2013-10-03 13:51:57
unify type; no change

a439012b5806997e60df870faad87a5fec20d4e8, by okan on 2013-07-16 14:30:48
we no longer need to construct an array for _NET_SUPPORTED.

fbb9d32d0a04bc1cc17636460f9a92a2595130e9, by okan on 2013-07-16 14:22:25
don't need the size here

ca416b6b82ace271f29e591081d4a9fe87614d06, by okan on 2013-07-16 14:04:44
max -> nitems

ae4ab065599ec7b0656c513f8243036b19b5703a, by okan on 2013-07-15 23:53:19
shuffle down protoypes

4ef96a27726725e2a0919e4de59ee00114b0d0e2, by okan on 2013-07-15 23:51:59
collapse lines

4119b5c065ee32189f26a0a95d4c36539003b142, by okan on 2013-07-15 14:50:44
simplify atom handling; allows us to limit to one round-trip to server
for gathering Atoms.

bd7b8163bb0be2bd4904a179771a8f79163e8161, by okan on 2013-07-10 14:15:58
bring buttonpress and keypress event handlers slightly closer together

95710383580ecf66a58f27ecaa62dfe6c714c682, by okan on 2013-07-10 14:11:42
type fixes

dd10412804923a5e1b2aab46ab94c4f8e29696fb, by okan on 2013-07-09 01:24:49
since the root and event window are the same in the case of a button
event on the screen's root window, there's no need to pass down the
entire XButtonEvent event, at least to group_menu(), the only callback
which takes an argument at this point; instead use the already populated
screen.

9bf2498d7e388a7c0a05e3850b5235c5bb381d47, by okan on 2013-07-08 18:39:20
add support for mouse based group {,r}cycle; from Rodrigo Mosconi.  not
bound by default.

1f244fe29c7234b05614f4040208f60052a8d377, by okan on 2013-07-08 18:19:22
move kbfunc and mousefunc closer together

a49373406607e71601ac062c0a75ad36219065e2, by okan on 2013-07-08 16:32:51
clarify kbd vs mouse functions

912ec90ea1f6e25b33a2bb0d6d7a1138622bd099, by okan on 2013-07-08 16:10:55
move duplicate kbd and mouse modifier parsing to a generic function;
from Tiago Cunha

fe439f2b965b9ee6e9dc9a6d8e2ecb443f86e788, by okan on 2013-07-08 15:48:16
replace a few (x)malloc with (x)calloc to prevent potential integer
overflows; from Tiago Cunha

7a7e5cd59254ab17f1f37affa868858160eca07a, by okan on 2013-07-08 15:46:16
whitespace and style fixes; from Tiago Cunha and one from me.

fbcdce6be90df22da222192f4c54b170e945f36f, by okan on 2013-06-23 17:57:50
properly fix (and re-organize) selfont selection.

7004700ce0b216f4ea4bb84043acb311928c9a6d, by okan on 2013-06-20 02:33:57
when selfont is configured, make sure we continue and configure the rest
of the screen (quick fix); discovered the hard way by Rodrigo Mosconi.

234b8214df298740b37ad566771a9df2f1b3aec6, by okan on 2013-06-17 17:11:10
move Cursors into conf.

23d84adb5ed6cc3890fb1d74d4d5a43004b0ea0d, by okan on 2013-06-17 14:08:51
now that we have conf_screen, which configures individual screens

initialization, so collapse.

8b00f438bef0780a3243c68fbfbb568365504c96, by okan on 2013-06-17 00:57:47
allow mouse button4 and button5; from Rodrigo Mosconi

6059073a5fedd7ef3d97e44ea8eb1511d82087b9, by okan on 2013-06-10 21:37:30
move synthetic responses and have client_msg only work with WM_PROTOCOLS,
since that's all ClientMessageEvent is for anyway.

b365ceac0e5370ac151362aa077e2620f9ec9d09, by okan on 2013-06-10 20:11:43
Check for, and honour, CWStackMode and CWSibling change requests during a
ConfigureRequest event.  Additionally, honour a border width change;
detailed report and patch from Mike Small.

09f327556155b606f108a920c8b8125cdd4f08bd, by sthen on 2013-06-03 20:33:17
Unlike other parse.y variants, cwm's allowed 'command xx /path/to/xx' without
quotes. Reinstate this support lost in recent sync diff and add a comment to
show that it's intentional. ok okan@

692d341dfc6b059db570356e9dfadba92dc93f19, by okan on 2013-05-27 23:20:45
fix type in a ClientMessage (xu_sendmsg).

be1a7a3f5c7c0777ba86d40c49425e97fbae62a1, by okan on 2013-05-23 16:52:39
alter conf_grab(_kbd) to first ungrab AnyKey/AnyModifier, then proceed
to grab keys in keybindingq.  we don't need to ungrab/grab on every
addition to the queue, just once with a complete keybindingq; simplify
grabbing keys per screen (during init) and during a MappingNotify.

while here, change conf_grab_{kbd,mouse} to require only a Window.

7cc1c7344fe74b91e528ea6792318d7af0d833ef, by okan on 2013-05-22 20:23:21
since we don't have any screens yet, there's no reason to conf_{,un}grab
here; just build keybindingq.

d1eadee9226043af0e2a7043a958e6c4d8e405bc, by okan on 2013-05-22 16:54:09
get rid of long standing XXX: now that we configure screens based on
config options, add the keybinding GrabKey calls here

532f132194751bd2f530a13c243a30c76f66bfaa, by okan on 2013-05-22 16:32:15
move validation of pointer Button into conf_mousebind so we check
validity during the parse phase and not bother adding it to the queue,
instead of each time a client needs to grab (when it's too late);
furthermore, make this a config error, stop parsing and load the
default config.

866f5af9c746d84e68ab1a376c18f96581fb0765, by okan on 2013-05-22 13:02:14
sync with src changes

421bf22ac7a165f0f4d5608ffa22c887ff857d53, by okan on 2013-05-21 00:29:20
handle _NET_WM_STATE ClientMessage; from Alexander Polakov.

c2042cd5238e74bcc3763a1e90917425eb41964e, by okan on 2013-05-20 21:32:00
stray whitespace

ad8020e17dc6277cc956d00eb869fc8703079f5f, by okan on 2013-05-20 21:19:15
handle _NET_ACTIVE_WINDOW ClientMessage; from Alexander Polakov.

284af4ca0c40d7a90ea0f574924abb707db7db05, by okan on 2013-05-20 21:13:58
add support for _NET_WM_STATE_MAXIMIZED_{HORZ,VERT}; from Alexander Polakov.

while I'm unsure of the final look of _NET_WM_STATE, there's no reason
to delay this support.

270df196ac17363536c44fe342b4e71e1c8450e3, by okan on 2013-05-20 20:21:04
- configure menuwin with the screen, then create the xft drawable using
  the menu window since that's the only place on which we draw
- elminate the need to change the drawable on every font draw

e14123210a7773a0fda562eb367d71482c872e60, by okan on 2013-05-20 20:04:36
no reason to pass around *sc when it's already in menu_ctx.

5b4c55616a58c058cb1f3f80c4e04a24b8e824a3, by okan on 2013-05-19 23:38:20
move the 2 small font helper functions to xutil.c

e41c84c752c46b78c0996489e150515751ae8ac8, by okan on 2013-05-19 23:16:29
move the rest of xft init into screen_conf, since most of it is based on
config parameters.

dac00a232f975967dec9ae8e838b069ec01e6c62, by okan on 2013-05-19 23:09:59
- switch border colors to Xft
- merge border/menu color structures/functions since they now both use Xft
- switch xu_xorcolor to operating on XftColor instead of just
  XRenderColor (basically adding pixel)
- if color name allocation fails, revert back to default (this, along
  with font validation should occur during config parse, but we don't
  have screens setup yet - likely to change at some point)

c84145661e14cc62032f30c6a8c744ba84b95601, by okan on 2013-05-19 17:05:52
add support for _NET_CLOSE_WINDOW

556a50d8f7f6804630bfffc6b1f1817fd67a273b, by okan on 2013-05-19 17:03:55
treat WM_CHANGE_STATE like other atoms

01bfdd7b42834de62e66b57b15145fe483cabdd6, by okan on 2013-05-19 17:02:04
use XGetWMProtocols and simplify WM_PROTOCOL handling

3253f5a4a1b849ea51594eccff2f6974e578b4af, by okan on 2013-05-19 17:01:29
simplify

be72620432190a8919f257d0734ef9ee96b86cfc, by okan on 2013-05-14 13:39:53
if -> ifdef

c637a5404809f3856e5f9b8890f6ef0fe8f55fe8, by okan on 2013-05-14 12:35:56
- let callers of font_draw figure out (and pass) the color instead of an
  'active' flag.
- use strlen() inside of font_draw; the only instance where it wasn't
  used happened to be ignored on a subsequent draw.

112f616d1d3a6377407071f4327c1a2b31cb6e9f, by okan on 2013-05-11 22:03:17
swap x/y calculations in kbd move/resize to match those in the respective mouse functions

2b926784ba44c5ef28e9cb239e3acbeb866c6d12, by okan on 2013-05-11 22:01:07
new -> init

3a38686137d0a0fad56db25a4c7c23ca6419f467, by okan on 2013-05-11 21:46:27
replace conf_{gap,color,font} with conf_screen since really we are
configuring the screen *after* parsing, just as we do a conf_client on
client manage.

9b9e95d74236b135d799c19c94d9b8070ffc6a58, by okan on 2013-05-10 16:32:47
more type fixes for mask/button

d0fe80b1f46a3049635c12deb62f73f6cea30f25, by okan on 2013-05-10 16:10:40
spacing

e05c0a2c600d22841d6950abf6fc013efe6a7cad, by okan on 2013-05-10 16:05:34
int type fixes

457938fbd750388907876ce30a98b216ae758922, by okan on 2013-05-10 15:44:43
fix KeySym type

5f06e5a8caf07223bef5da977868ca8738f95a0f, by okan on 2013-05-07 01:35:41
border width/color makes sense for some, so put it back

1a06f09fa0e1a92d98757f1d9d0a001ecf3e3bb4, by okan on 2013-05-06 19:09:19
negative values for borderwith, moveamount, snapdist and gap are
configuration errors, so warn and load defaults.

1db7cc2a18d2d3665a4d589d9bc39312eca42268, by okan on 2013-05-06 16:03:11
remove group in client_delete directly.

27854d9061eab7da9ef10bb36b9b8c7f971baebe, by okan on 2013-05-06 16:00:34
border width/color makes no sense on menuwin

e91c7162623a0b83fe83a528d7a382f268b22a8b, by okan on 2013-05-02 20:18:35
- no need to position and size the menu window before an Expose event
  since we'll be calculating required size later anyway; allows us to
  consolidate all prompt/display/search string building goop into
  menu_draw.
- reset the pos/size of menuwin when leaving a menu.
- reverse the 'prompt' NULL check to be consistent with 'initial' one
  and fix a whitespace nit while here.

0d209028be47411cf2e7515dc3ce7ea9d9dc8c3c, by okan on 2013-05-02 19:41:52
zap leftover debug printf

9de81f3d2e0810f27740b32a2a81d8729eedae4a, by okan on 2013-05-02 19:33:17
get rid of cc->name in the resize box and make dimensions more readable.

bb56bf4c4b97d0141792cc99a8a31531424476c5, by okan on 2013-05-02 19:30:10
only redraw the name/size box when the client resizes, not every time
there's movement; should slightly help with resize syncs.

5acf6c147f88233c477e6f87ca94c45d8475ac73, by okan on 2013-05-02 17:25:15
no need for font_{ascent,descent,height} wrappers; limit font_width to
just requiring xftfont.

5ab3b373d39c333de5774a9503c450fc9fccd814, by okan on 2013-04-30 21:12:20
group conf_* init functions

ff6f5301f0c768e28af0e5e0457385556782dbde, by okan on 2013-04-30 21:11:07
missing proto

6e8f1f29554e917676a910d7a1568415e52b870a, by okan on 2013-04-30 21:10:23
type fix

94e341725b9e44c4ce1b15135b5b825c5c2b2dd3, by okan on 2013-04-29 00:56:47
use an int in screen_init and avoid needing to cast for screen number (which).

006a29e61773b02855e3c4e4a85d0e05f2837c6e, by okan on 2013-04-17 13:57:06
mechanical xu_{get,set}state -> xu_{get,set}_wm_state change

302690624e29eddb506e4a377b59eac029128f3f, by okan on 2013-04-17 13:52:20
slightly rework WM_STATE set/get to make it less ambigious; will be more clear
on what needs to change to make it right in the end.

1dbcc394aed6f7e4161ab065516128fa94bd0149, by okan on 2013-04-17 13:31:47
zap extra space

a899d267fe78dbbb923c8626528973f8e6b65bae, by okan on 2013-04-17 13:30:38
add conf_ignore and move group_make_autogroup to conf_autogroup to match.

16ed8bf8e4f561049b732b326f3d0ee475fe13f6, by okan on 2013-04-14 16:13:17
only a window is required to set WM_STATE.  also un-confuse xu_ptr_getpos
by using 'win' instead of 'rootwin' so as not to imply only the root
window is queried, rather any window.

f3dfc4968cee2080cfa4a4f24f0977b962aa367d, by okan on 2013-04-12 20:54:27
we handle WM_STATE here, so remove misleading comment.

ef1b78f4649612a9db2614abcfe968cdec13e139, by okan on 2013-04-12 20:45:57
we already set window state in client_hide or client_unhide right before, so
there's no need to do it again.

b5f6bd205c97405e85cf19f3a1f4f162400d7897, by okan on 2013-04-12 14:49:16
makes no sense to set an error handler which uses X_Dpy before XOpenDisplay.

6296efadaa6bcc09068030bec4cb01904ca1a010, by okan on 2013-04-12 14:46:30
push Screenq into screen_init

90f95416c6f4461625dd37d5cc44dd92a067a030, by okan on 2013-04-10 19:08:09
_NET_WM_NAME is UTF8_STRING type

58c1d48d10cd7bec3bd186ef2f584b1ad1974f5b, by okan on 2013-04-08 15:43:04
plug memleak; always need to menuq_clear even when a selection is made.

62a685d82a7c2c91ce82323778f0105d34ad7321, by okan on 2013-04-08 13:05:27
reverse logic to make it like the others

28b54db2217c0398132a6b049231c99a99a84160, by okan on 2013-04-08 13:02:31
consistency

8c47a12a8669ffec92a6b9ca922eaec0f192b546, by okan on 2013-04-08 00:56:21
missing prototype

f18d2c94c2efe8d580aa9b1cd71f83bfe10474aa, by okan on 2013-04-05 17:36:02
add missing proto; replace magic number

670207f79b2cc8bf4dec97ba404f6922e33dac8e, by okan on 2013-04-05 17:07:25
zap stray whitespace

c5a76f1d5bbde32778859cfd1e190e89fb9a68e2, by okan on 2013-04-03 20:22:55
- no reason to breakout ClassHints work, so fold into client_{new,delete},
  but keep _MOTIF_WM_HINTS separate.
- simplify fetching app/class hint.
- fix _MOTIF_WM_HINTS Atom type.

9cad4c73b36c922d9b251c9fc31eb6e9bee64f4e, by okan on 2013-04-03 19:28:00
honor PATH search order for exec; from Andres Perera.

ec4474a33acd02d1bf0df17aee7fb1a490bc9676, by okan on 2013-04-03 19:20:50
move XUngrabServer to the end of client_new() to avoid races where clients,
such as those using sdl, attempt to manage the clients themselves when the
clients aren't fully ready.  other wm's grab the xserver during the whole
client setup process, so match.

behavior found by jsg.

fbb0df415528094cb7ead17ad3a50dcf6fba6008, by okan on 2013-03-09 21:55:56
replace handrolled for loop with TAILQ_FOREACH; from andres.p@zoho.com

47aa485fa259965609d3e13cce7a03ac64b14e6f, by okan on 2013-01-13 13:55:12
put back r1.68 which allows an empty group to be sticky; behavior
change noticed by Thomas Pfaff and diagnosis why we need to
group_setactive in this case by Alexander Polakov.  replace XXX with
a useful comment.

62acbee4b3f0bb69db00c070d8b92ed0db2caf5d, by okan on 2013-01-10 15:28:11
set the initial group to '1', missed by recent off-by-one group
numbering re-work; discovered the hard way by sthen@.

ok sthen@

3a7596968b740328c41f6807800d004c75e3c62f, by okan on 2013-01-08 15:16:04
add per-group vert/horiz tiling support; introduces 2 new bind commands,
'vtile' and 'htile'; from Alexander Polakov.

bf9d9815976c0afae2e87afeebaa57b02b1d911c, by okan on 2013-01-08 04:12:51
teach screen_find_xinerama() about gap and adjust (simplify) callers;
menu becomes gap-aware for free.

e7b85cfb2f4d04e283d448cc3a09014e858eeb94, by okan on 2013-01-07 21:53:23
fix menu/client placement in panning setups; XineramaQueryScreens gives
us the width of the psuedo screen, but here we need the edge instead
(xmax/ymax); just re-use w/h here for now.

4ffe56b9a3dfe958c1ad51a0064efe8094a306da, by okan on 2013-01-07 21:45:24
revert previous

7c4ed94757dcc7c62d6bee03aeeb7b2947c84916, by okan on 2013-01-07 20:32:19
unbreak xinerama support from r1.41 for panning setups

c426254da5ff69102284524ddc560cfb00c73204, by okan on 2013-01-06 01:01:26
use cc->bwidth in client_vmax since we've yet to reset it (matches
client_hmax); from Jan Stary

6d123cd96d889cbff140e5ed0d897462d9fec3d4, by okan on 2013-01-04 16:30:03
rename {h,v}max functions for consistency; from Jan Stary

579f981718c9444630afc34f8ab5dfe6e983427a, by okan on 2013-01-04 16:27:58
really these are just border colors, so adjust the define

96adffcd9d0187285f2236b2fd9f5646d21ee72a, by okan on 2013-01-04 16:23:51
spacing

698530155d0e76265fa85c24159d58eaaea9ef31, by okan on 2013-01-04 16:23:04
get rid of struct color

c139df129c45eab966836e622c71deec821ba370, by okan on 2013-01-02 21:41:14
pass the screen workarea, as opposed to viewarea, allowing client
snapping to honor gap.

2ac65bd2882c26dc4dddac26d1883dd140704fef, by okan on 2013-01-02 21:37:21
re-work client_snapcalc() so it takes client and edge dimensions with
snapdist; allows for simplier snap calculations.

required for an upcoming diff for honoring gap.

6e5dda99a62cb659d30cdb6a59478a042fb485ed, by okan on 2013-01-02 18:11:23
merge in Xinerama screen query; no functional change.

ce8ef02ed22041e88d23c20341060b3b977906a5, by okan on 2013-01-02 16:26:34
have screen_find_xinerama() return struct geom *reliably* instead of
XineramaScreenInfo; simplifies goop around the callers.

e492ed8e4138b3552349c314d45f2514ad3e62d5, by okan on 2013-01-02 02:19:20
more variable consistency

2d28b71a1b0253b4b0d58019b8c15bf4631e7914, by okan on 2013-01-02 02:02:08
info->xine, for consistent variable names

afb36484404f5664f1f4533cfa97989f0af3b04c, by okan on 2013-01-01 14:50:01
after we toggle a group hidden, it makes no sense to set it as active
(in sticky or non-stick mode), regardless of existing clients assigned
to that group; oga marked this bit XXX in -r1.34 for it didn't seem make
sense then either.

pulled from a diff from from Alexander Polakov.

ccbb1f1529e539dce9b4520349407b146cd07edd, by okan on 2013-01-01 14:33:52
least intrusive way to plug a memleak when unbinding a duplicate key for
kbfunc_cmdexec; from Tiago Cunha

6cb334e50375837365cea46b962a534c852df055, by okan on 2013-01-01 14:26:29
replace emptystring with strdup here as well so we know we are free'ing
a malloc'd variable everytime; from Tiago Cunha

0957fbbee2426faa00ca759ad772e650f87c745c, by okan on 2013-01-01 14:19:56
make num of groups no longer off-by-one; from Alexander Polakov

note that a re-exec of cwm will not rewrite the group number atom of

its atom updated, or of course a restart of X.

dc1e3a88438dc732349154bca610dbe813d2fc04, by okan on 2012-12-19 15:21:34
gc unused cmd 'flags' variable

c565b790eda26074619aaf7c29234b6975862056, by okan on 2012-12-18 18:39:55
expand CHILDMASK

86eaf5e973a19f2edb9b7c2921363b7a70413049, by okan on 2012-12-18 18:35:36
use MOUSEMASK since we already have it

31e9fe4dcdc59eb5ff74e69f9e674a74905f27bf, by okan on 2012-12-18 17:44:18
remove unused SEARCHMASK

e5d59c2d7b9934445c060b03a1f3c99246d65b93, by okan on 2012-12-18 17:37:39
define LockMask|Mod2Mask; no functional change

b848a2b236424a33d0fcf1f07e3b4473a56604ff, by okan on 2012-12-18 00:14:41
simplify config file setup; with Tiago Cunha

479e9f769c5a822da49ec60cd7ceb533e1739527, by okan on 2012-12-17 23:54:57
put a default known_hosts into conf

75f65f399e2cfc0fd73f6ae9f68e60313cfdd7e5, by okan on 2012-12-17 23:03:41
pull user home directory via getenv or getpwuid and stash it so we don't
need to do this everytime; with Tiago Cunha

fe44d1dfce326c846fa199d6972ca77649176046, by okan on 2012-12-17 18:35:26
cmap -> colormap in client_ctx

af13c081080574a036565e2fa7c761b6e6233068, by okan on 2012-12-17 18:34:06
stash the default screen visual and colormap in screen_ctx

82e8ec4245f44bd10c0fc5ed27640dafbb7beb44, by okan on 2012-12-17 17:48:57
replace client highlight with a client flag

8e67d1389ceb0450712039832e5ff868335c6846, by okan on 2012-12-17 14:58:46
make client_mtf static

3a3e0383b2b605ede516f4f58eef778bea7815e4, by okan on 2012-12-17 14:32:39
create and use menuq_clear() helper; from Tiago Cunha

d651c1cc3b5b1f4c00cbefd6247083c5f3f0fce5, by okan on 2012-12-17 14:26:29
current_client() returns _curcc, so use it where appropriate

980c6de1ff5e836b831e0cd49fcea5db4792103e, by okan on 2012-12-17 14:20:52
screen font -> xftfont

96cd288a2a34e90eb617e2225615eeba2ba690fb, by okan on 2012-12-17 02:53:29
knf

6900cd36121062f81f29ec3651aa1ee8807edbe1, by okan on 2012-12-17 02:28:45
non-trivial menu drawing rewrite, moving to Xft and solving various
font/color drawing issues; from Alexander Polakov

a3aaad2c187278b7ac1cf75cb03882dd3d20f29b, by okan on 2012-11-29 16:50:03
zap extra lines

560acb43fca290db3009a0b992c7c7c4a09d4c52, by okan on 2012-11-29 04:25:49
specific last match for autogroup; few iterations with Kent Spillner.

7edabe94f2f5a0ac7b900908056173f00cde3837, by okan on 2012-11-29 03:54:46
x_setupscreen -> screen_init; no functional change.

5947879dfb16da35be7391e6f81d9313b9fab4c0, by okan on 2012-11-29 03:34:19
remove dead extern

3e151f8c764a5f1116fae3bea87f3d4474dc686a, by okan on 2012-11-28 14:32:44
add xasprintf() for upcoming changes.

2b9d921edaa665f896cf29bf6ba332c6ac11dd21, by okan on 2012-11-28 14:25:05
ever since the 9wm code bits were removed or replaced, this file has
been a no-op, for each source file has a complete license marker (ISC).

no objections from oga, who did the 9wm rewrite/remove work in 2008.

fad4798e5be4fb560c70c6f0e68aa576c28b85a4, by okan on 2012-11-28 14:14:44
replace hand rolled font_make() with XftFontOpenName() and merge into
font_init().

93f64ffc55d29947614f234a5c6deddcbc2d4e81, by okan on 2012-11-16 14:15:48
add some checks

7b00e3fe76148403292f2332b2398d24a16d0453, by okan on 2012-11-14 21:31:53
variable name consistency; from Thomas Pfaff

587d623e4a0a2173b5b0596107206a6ce1be99db, by okan on 2012-11-14 21:12:24
tab-complete buglet fix: once exec_path is completed, allow for
subsequent completion; from Alexander Polakov

28224ff830f2841fd9481e33894b29f3c156f5aa, by okan on 2012-11-09 03:52:02
sort

04d4ed7b7e1f71d72e326429dc816988892be7eb, by okan on 2012-11-08 20:18:19
fix some warnings; inspired by a diff from Thordur Bjornsson.

c9c0a5fdbb8ce451b9706fc33999a1667b60cd6f, by okan on 2012-11-07 21:10:32
style nit; from Tiago Cunha.

55edbe460da2a91aa80555e1b2af417307fc5004, by okan on 2012-11-07 21:04:55
add comment why we mouse unbind, just like kbd

7f1851b8f60ad4aead8668e8ea37e8e85d315383, by okan on 2012-11-07 21:01:48
now that we have FOREACH_SAFE queue macros, use them where appropriate;
from Tiago Cunha.

bd252183338229977adc77849a857b597908f71c, by okan on 2012-11-07 20:37:55
plug a leak when using 'unmap' for kbd/mouse bindings; from Tiago Cunha.

76b0874b4caa937b5313b3604208d050b4868b04, by okan on 2012-11-07 20:34:39
get rid of the xfree() wrapper around free(); from Tiago Cunha.

dfb6aed82aa9a75d895f75984013f07a474c4d7a, by okan on 2012-11-07 14:59:07
clarify windowname and windowclass values are pulled from the WM_CLASS
property; from Kent Spillner

94db8ca2ed43a8e89c6c7f1ad652ea8127820131, by okan on 2012-11-07 14:58:26
zap trailing space

438c0332a11ee13494d4bcebdb28607efbdd2f65, by okan on 2012-11-07 14:49:46
missing headers; from Thordur Bjornsson.

c53c1af2db17dd4b9fb2d1fbc1b909e32b060531, by okan on 2012-11-07 14:40:51
spacing

4b84287d1935144625bd506facbf56e8470ce5be, by okan on 2012-11-07 14:39:44
tab completion support for menus; from Alexander Polakov.

ok sthen@ on an older incarnation

dabc05034f56a14fb85e7b448b489f52a60ee600, by okan on 2012-11-01 01:10:47
try to clarify xprop(1) output, with respect to WM_CLASS, without going
overboard; suggested idea by jmc

620af2e52d71d3df86c5da594a3f70f3c263b344, by okan on 2012-10-31 22:06:24
no longer a reason to carry conf_path in struct conf, so dice.

4fb420514d73699acfc7ec1c35124cf7819a277f, by okan on 2012-10-31 19:30:19
replace 'reload' with 'restart', which merely re-exec's cwm using the
existing argv; same idea with respect to argv saving as Alexander
Polakov.  reload support was half-complete and is getting in the way.

agreed to by many

c256052308d9135454b91fa16ba7aaef97923b4b, by okan on 2012-10-29 19:46:03
on reload, run each client through conf_client to pick up potential
ignore and bwidth changes; also add a hack for existing maximized
windows so they don't inherit a new bwidth.

based on a diff from, and discussion with, Tiago Cunha.

56358be75520d6b631da07590b4a034d850062c6, by okan on 2012-10-28 20:13:02
clarify autogroup option; based on diffs from kspillner@acm.org with
feedback from jmc

742bcec5222c199913a651f29b0b8d5238cfc7de, by okan on 2012-10-23 16:13:59
comment what this whole bit does, not just part of it.

710347df1b5545daf215a24699540e7940ba6fa7, by okan on 2012-10-23 16:08:59
add a height to struct menu and use it in the most obvious of places.

637c52abf81512406d0f157357d961e72628f1da, by okan on 2012-10-23 15:50:15
treat menu width the same as the height is treated when deciding its
max size and location; partially from a diff from Alexander Polakov.

c21d56e5a1c98eacb70f3197311232731ccf1a6f, by okan on 2012-10-23 15:32:38
Stop drawing when menu doesn't fit inside the screen; picked from a
larger diff from Alexander Polakov.

871fdf56715dbc85b2ad4f058366a06a66615c65, by okan on 2012-09-12 15:09:33
revert previous for now until a way to test more than a few encodings is found

637edf38d51024ba88184b1457640f8fa459e693, by okan on 2012-09-10 13:28:04
be explicit in which key masks we allow during keypress and buttonpress
events; from Alexander Polakov - makes non-us layout reliable.

3a45879d76f1fb222417a83d312fba42ae2eadf6, by okan on 2012-09-09 20:52:57
replace with xu_getprop wrapper used everywhere else.

86524e21dd53bad45f4586a7cc856062b67f8033, by okan on 2012-09-09 19:47:47
extend client_resize so that it can know when to reset max flags and
bwidth; this allows a client to be resized from a max state, which now
gets treated like a non-max'd client.  based on a diff that does part of
this in a different way from Alexander Polakov.

7071261bde1d100629765ca179a6e8ee662569a6, by okan on 2012-08-07 14:05:49
support multibyte input to menu code; from Alexander Polakov with a tiny tweak.

013497c79cdb17d8a40f53d5535b4ba8362f0ef5, by okan on 2012-07-18 21:53:22
Further simplify Xinerama init and re-init on XRR events.

While testing for Xinerama during setup was done display-wide, each time
XineramaQueryScreens() is called either in start-up or due to an XRR
event, the library re-tests for the Xinerama extension anyway before
moving on; so the initial test is redundant and allows another global to
go away with one other change: always fill in sc->xinerama (and _no),
regardless of the success of malloc in XineramaQueryScreens(), and use
it to see if Xinerama dimensions exist when asked by client and/or menu
code.

3f956098d9e8382d27a81aedd1e77220dff4865f, by okan on 2012-07-16 01:53:14
unify various max routines to match client placement and partially menu ones
when calculating screen dimensions.

57af364a2188e90c68b14852c85f26aba04be334, by okan on 2012-07-16 01:42:00
check value

e42d1c7f01e06665a3e6e763685e47b965e7b0ae, by okan on 2012-07-16 01:36:30
move the HasXinerama check into screen_find_xinerama and simplify logic;
moves closer to logic in menu code.

0e8815dfb02f38a622d71ea3eb5644e6d5b8fb90, by okan on 2012-07-13 17:01:04
re-use geom struct in client_ctx (saved)geometry.

186a78ff1e8f19155b337b68586cebc7495fcdf9, by okan on 2012-07-13 15:21:35
convert xmax/ymax uses to view geometry.

cc08aef0df6236f794fb1d5dfcef265dba9da228, by okan on 2012-07-13 14:18:04
introduce screen "view" area and "work" area (gap applied) to simplify
various blocks that require understanding the screen geometry.

2450e309ea6b0666606adcd93146687ece13c11e, by okan on 2012-07-08 02:55:01
fix atom for setting WM_STATE.

6faef40c55bdf81ed638085f224cda8b9001fb85, by okan on 2012-07-08 02:50:41
fix atom for retrieving WM_STATE between re-exec's.

c8a17ef5364a1ed43e709da40f1f4715e2852e3c, by okan on 2012-07-08 01:00:24
remove a redundant assignment and another one up.

cb893d0aa96e0a3e86cbd1094206871b10d92cd0, by okan on 2012-07-06 14:18:00
querying for Xinerama should be done per display, not per screen, so
move chuck to display init; allows some shuffling to occur limiting
screen_init_xinerama()'s scope while keeping order intact.

315f25f7aba3eb416757465a55b487289d8f8c27, by dcoppa on 2012-07-06 08:41:29
Add a couple examples of keybindings using keysyms, as discussed
with okan@ and sthen@.

OK okan@, sthen@

1124ee5cc1342d62ccdcb6d163809434184b9301, by okan on 2012-07-05 17:35:13
the display's width and height are updated after an XRandR event so we
don't need to pass down the new values to screen_update_geometry(); so
just read the width/height values directly for both uses of
screen_update_geometry().  prep for further changes in this area.

287a5b2aad2fb54fbe7016fc90f8a62b1433547b, by okan on 2012-07-04 23:42:03
assign and use screen ctx where appropriate and consistently.

3681b26914c3097295c37027bbf7eede76e308bf, by okan on 2012-07-04 18:07:12
use the screen ctx since we already have it assigned.

8c7964468fe82bfd557165f7b42874933fc2a586, by okan on 2012-07-04 18:00:13
fix missing atom (WM_PROTOCOLS) wrt new style handing; without this, the
window manager didn't know if a client supported CLIENT_PROTO_DELETE and
thus used a hammer, XKillClient.

behaviour reported by Tim van der Molen.

f98e123bfccf2ededa1cd22dbf88bedc5e4a2ccf, by okan on 2012-07-03 13:49:03
re-implement atom handing; makes for a normalized and more consistent
separation between cwm and ewmh.  seen by a few.

956c47dbeb5bf55913340d80bd0f4423a422a1e8, by okan on 2012-05-16 21:57:21
get rid of more stray lines/spaces

490ef6a7df81e768730d5701959dde154b8916a5, by okan on 2012-05-16 01:17:14
instead of using the menu window for _NET_SUPPORTING_WM_CHECK, create a
dummy one to use instead; allows us to not have to wait for menu_init(),
so re-shuffle _NET_SUPPORTED slightly.

ok sthen@

b4d582c6ef5ffa5030f3b376b7bbbca177c1bee6, by okan on 2012-05-16 01:10:11
fix comment

ac82403a5166ac99aaf8fc7ad15242b1a0843f5b, by okan on 2012-05-16 01:09:17
cycle through other common cycling modifiers; based on a diff from
Alexander Polakov.

ok sthen@

dd5bfdb064470cfa2555003a13a70b8fa7cd6431, by okan on 2012-05-16 01:04:36
convert from deprecated XKeycodeToKeysym to XkbKeycodeToKeysym

ok sthen@

57766d860642855dbbd706fef90b1560551463a7, by okan on 2012-05-13 15:17:13
altpersist->cycling to be more clear that this is for cycling mod
persistence; based on a diff from Alexander Polakov, in preparation for
looping through other potential cycling modifiers.

fb4936d0f7ea06554a2b11aaa2272f7ca1dd4a98, by okan on 2012-05-13 15:15:54
knf, some from a diff from Tiago Cunha.

63b59e44c14fd8d7cce4abba064fa71a9fb6ac65, by okan on 2012-05-10 00:39:47
wrap long lines; from Tiago Cunha.

1d8839e8adbcd0197fb9db695ecadcd11318cd5d, by okan on 2012-05-09 18:37:39
fix section order: move AUTHORS below HISTORY; from Tiago Cunha

ok jmc@

26c391b3dd59f588877c578eadf5496b15ccbfd3, by pascal on 2012-05-07 21:25:29
kill useless .Pp

ok jmc@

fd9b83a232ecfbd1bcd5c5e80117931019964db4, by okan on 2011-12-29 20:48:38
check if we're in the group already, else multiple calls to
group_movetogroup() on one client will still increment nhidden if the
group is hidden.

found the hard way by Thomas Jeunet and fix from Alexander Polakov -
thanks to both!

ok oga@

22c2bc618b6cd047aee2f54ee7c526c39e846885, by okan on 2011-11-06 02:03:47
put snapdist in the correct location; as an option, not a bind; Tiago Cunha.

ok oga@

fded46ba9f3dd3f6b8173856cc4247a21ef3994e, by okan on 2011-10-17 18:18:38
rename variable to reduce potential for name-space collision.

bikesheding and ok oga@.

f60f630b811991d0e21b1339918e2ccdc89c4df0, by okan on 2011-10-12 15:43:50
use xfree instead of free since strings is allocated with xmalloc; from
dhill

ok oga@

ba3dfcf7bdd993e2a2bed8e55a3ea904f67e234f, by okan on 2011-09-19 07:23:03
move client to group (movetogroup) and hide client only if group is
already hidden (suggested behavior from Alexander Polakov).

ok sthen oga

22f366830e6fc06931f9e0a905e6c34fab0f7a20, by okan on 2011-09-13 09:17:30
fix spelling I keep getting wrong for some unknown reason; found by and
diff from Alexander Polakov.

796b32123d88fd5946c97fb79ad551600c772f62, by okan on 2011-09-13 08:41:57
add WM_TRANSIENT_FOR event support: moves dialogs, toolbars and such to
the group of the main application window; based on a diff from Alexander
Polakov with CLIENT_IGNORE flag suggestion from oga@.

ok oga@

b96caa16e6a6406a0f837637cd5529f0d778b927, by okan on 2011-09-13 08:37:49
repair groupcycle (broke after cycle-in-group support added more flags);
found by and fix from Thomas Pfaff.

ok oga@

82d31aec1d380bc53a1ccfdabe81e37d9b7213c2, by okan on 2011-09-08 12:35:33
allow configurable menu font color; from Alexander Polakov with a tweak
from me.

ok oga@

a262f8e80cb02238e7b01fde8faf4085115acd1c, by okan on 2011-09-08 12:07:03
allow menufg/menubg to be configurable; from Alexander Polakov.

ok oga@

840323558d6b6e2b32df27232a0ebe66c45d6952, by okan on 2011-09-08 12:00:49
reinit menu on reload; from Alexander Polakov.  needed for catching
upcoming menu config changes.

ok oga@

d85b3adc0c77fb932927671cd0a473885a975c3e, by okan on 2011-09-05 07:37:55
restore a comment and add another for clarity.

44d8b1d3ace79e2c648e859f931f76a027f51ff0, by oga on 2011-09-04 16:59:31
Make flavours of maximisation additive.

i.e. horiz-max + vertmax = full maximisation.  full - horiz = vertmax.
etc.

Martynas wrote something like this once, so I did okan, this version
seems to finally deal with the corner cases.

ok okan@.

b852a73a60f96b45ae93ab5c7ea23a68743eaf04, by okan on 2011-09-03 09:42:33
split off window hints from geometry so we don't need to carry them all
around when dealing with {,h,v}max.  same idea from oga.

325129c6baa2aca0cadbdb965fcdb520fc7d3912, by okan on 2011-09-03 09:25:39
simplify color initialization.

ok oga@

142a36a0c0448ef9c9f7eb36068d45dce09839a9, by okan on 2011-09-03 09:20:58
Add {r,}cycleingroup to cycle through clients belonging to the same
group as the active client (as opposed to all unhidden clients); from
Alexander Polakov, with a tiny tweak requested by oga.

ok oga@

b51f8e6a990c3462464b3830e51b54605e2ade6a, by okan on 2011-09-03 09:17:16
"defaultfont" is unclear (and confusing while reading code) when it also
applies to the user supplied font, so rename.

ok oga@

a4683b55f8cdac9c0884f44896ed972864b81f78, by okan on 2011-08-29 09:10:49
zap unused macro. ok oga@

0dcf7efb8eef706b36af4197514671e524482b43, by okan on 2011-08-29 09:09:45
restore mouse move via the keyboard, noticed by todd@.  while the check
for cc was wrong due to the fact that cc->sc is always filled in during
the event, we don't even need it - just operate on the focused screen's
root window regardless.

ok todd@ oga@

be3b8a0748f7470ed4a6e8bc51fe7622c93c6707, by oga on 2011-08-22 16:34:34
A while ago I wrote some code to not warp to ignored windows on map (rev
1.52), not realising that the previous (less efficient) fix had already
been commited (rev 1.50).

Had this in my tree for ages to remove the previous code. Effectively
reverts rev 1.50.

ok okan@

2dc8df110c738f4bcbe300a5ec1dec1f555765e7, by okan on 2011-08-22 16:18:05
revert r1.11 of parse.y and create logic in conf_setup instead to deal
with the various scenarios of when to attempt a parse of the config,
load defaults, and when to warn and/or exit.  triggered by bogus warning
first noticed by sobrado@.

ok oga@

912dd46a7e5aac20c685fcb424a484a44bb9c713, by okan on 2011-07-26 08:51:24
Re-draw borders after reloading, not before; from Alexander Polakov.

ok oga@

30dbdf4178a2b9e07debb36b85aa3dd9f73cdcc3, by okan on 2011-07-25 15:41:05
use the menu border; from Alexander Polakov, but with the existing define.

ok oga@

f51f3cb9c2b39f728f2708d7ab798ecaf1cebaf0, by okan on 2011-07-25 15:10:24
We are inconsistent when it comes to function returns, so just go all
the way with the cwm specific parts.

ok oga@

69ac0624cc07ffc8df11287a8827b42773371b0e, by okan on 2011-07-23 13:09:11
Clarify defines and make them not look like non-local ones; started by a
small diff from Thomas Pfaff.

ok oga@

c585dfbf32b69daa483ad129cc2349ce26102dec, by okan on 2011-07-14 11:39:53
correct spelling; from Alexander Polakov.

3db2d84fa8b36f43a72be28fe2c6700e70849552, by okan on 2011-06-27 12:46:54
UTF8-ify, from Alexander Polakov, but without setlocale(), after
feedback from stsp@ - thanks!

'go for it' oga@

bcf90f5f3494e3406a1b66ed0b6f8232d55e1a16, by okan on 2011-06-25 13:37:05
warn if we can't parse the config file on start, just like we do on reload.

part of a larger diff that was ok oga@

0573d184f7fe80a1278f66aaf8692361965615bf, by okan on 2011-06-25 13:12:56
Since cwm(1) uses the same parser as others in src, document how
comments and line extensions work.  Taken from sthen@'s recent
commit in src.

ok sthen@

d8747ae7023d5c5e2c6542a835c008b262261e82, by okan on 2011-06-24 06:52:23
add 'normal' cursor and shuffle the others we use to make a bit more
sense and to be slightly less un-expected.  from Alexander Polakov.
re-use 'normal' cursor now instead XC_hand1 for menu selection.  i
really wish X had real docs and made sense.

ok on earlier diff with '?' removed (but it's back now) oga@

8f1c5833613687e67c8422bd50c34b4d11fa2e6c, by okan on 2011-06-24 06:09:26
New option to raise a client via the mouse (unbound by default);
opposing action, lower, already exists and bound.  Both keyboard
mappings already exist.

'no opinion either way' oga@

34ba6cdbcc03111d75e2336739aa70edc7da5a1d, by okan on 2011-06-24 06:06:24
introduce a new config option to snap to the screen edge.  'snapdist'
keyword taken from a diff from Sviatoslav Chagaev to do the same thing,
but implemented in a completely way (based on some very old code from
mk@).  default set to 0, so no behavior change.

ok oga@ (who would also like to take it further...)

b230e611beebcaab31379f2230b81ab4cf6b890a, by okan on 2011-06-24 06:01:47
re-do various bits of {,h,v}max for simplicity and less flag handling.
as a bonus, flipping between various combinations of vmax+hmax provides
a more predictable behavior.

commitski oga@

c566b31bd056677cefe5758095d76eb28c92665e, by okan on 2011-06-24 05:58:51
replace the non-working check to see if another wm is running with a
method that actually works.  checking for icccm compliant wm's should
also be done first, but that's another diff (noted by oga).

ok oga@

d39f5b9183121f3d127964f68f18a220adf97d01, by okan on 2011-06-24 05:54:30
more nitems usage.

ok oga@

c8ea76a9657c6e70d9bd2198639076e2235a4ea2, by okan on 2011-06-24 05:51:25
re-order sweep draw so that we map into the client window after
re-parenting; from Sviatoslav Chagaev.

ok oga@

c2a8363dd9868776c12bcdf172b7a02188621c90, by okan on 2011-06-24 05:45:57
struct XftFont already has height which we can use directly instead of
calculating ourselves, so do so.

ok oga@

f6fcd0eb5d2f48b82f52b65fa343a83c74a8f55f, by okan on 2011-06-24 05:40:09
alter a few function returns and prototypes; found by lint.

ok oga@

69cc58555de66b0ff67fd0c3880fcb70eb06f837, by okan on 2011-06-24 05:33:41
Correct extern declaration and while here, rename a variable to be
pedantic.

from Thomas Pfaff.

ok oga@

89d8a14b6d0e32cffa8dab1d9ea929d1d25b30c4, by okan on 2011-06-24 05:30:42
collapse client and group {r,}cycle defines since they are really
the same thing.

ok oga@

9a6a2d3cf369d174d5b19fb7927697f117a24fad, by naddy on 2011-06-23 22:48:59
switch to installing source manuals:


ports use of imake remains unchanged

64d8bb630afbe1d278a721d45c8e8d2c46d147f0, by okan on 2011-05-15 17:58:47
fix botched client and group cycle defines; noticed by Thomas Pfaff.

"no cookie! fix it" - oga@

fa64bc2f32dd4635bd90712eb1a144c7ea593288, by okan on 2011-05-13 12:53:19
remove left over XSync; ok oga@

c8cd94882d79fe1d2601df7a7aafe08bad0f62f6, by okan on 2011-05-11 13:53:51
tag and comment cleanup; ok oga@

43450c8fd744b85aaed80da3f6132acfd4dafd8c, by okan on 2011-05-07 17:15:37
introduce a new 'freeze' flag (CMS-f by default) which may be applied to
any window, after which all move/resize requests will be ignored,
essentially freezing the window in place.

there's a possibility to merge this with the 'ignore' concept, pending
on how ignore+freeze should behave (really more ewmh stuff), but punting
for now since ponies are on the line.

requested and tested by thib at k2k11 with ponies, unicorns and rainbows.

'save the unicorns' todd@, ok oga@

760c6b5522626145662eb423ec77ccf4d19da584, by oga on 2011-05-06 19:39:44
On map, don't warp to windows that are marked as ignored.

Requested by Christian Neukirchen last august. He provided a patch but the one I
wrote was significantly simpler (1 - 2 + in the whole diff).

makes sense to okan@.

604a5d07a47ef516e83ac68d02861188d725951c, by okan on 2011-05-05 19:52:52
bump window resize back to 60hz. instead, we should not need to sync
every time we move/resize a window, so remove XSync in both mouse move
and resize events.  tested by Brynet as well.

ok oga@

8ed968601e207b31a21dbec19e61b17580d456b7, by okan on 2011-05-05 16:40:37
re-org. ok oga@

c62c0ee9dbc3603558da76d48379edc1c29688dc, by okan on 2011-05-05 15:32:24
make the menu window aware of xinerama info; this makes the menu stay
within the current screen, like other cwm window placements and
mutations (vmax/hmax/max) - from Sviatoslav Chagaev.

ok oga@

349b3295b8791fd08fbf1307576fe8ecd2c3f374, by okan on 2011-03-23 07:27:32
revert the XSync timing change for client move only; first noticed by
brynet.

sure oga@

5972c7a507d37556b378b9490d56de296f9396e2, by okan on 2011-03-22 13:50:40
warp the pointer back, iff we don't move the mouse, once we are done
with the menu; idea and initial from Sviatoslav Chagaev.

discussion with and ok oga@

e28a7f832e0cfa4e69a6018027f8c8cc27ca8eac, by okan on 2011-03-22 11:09:52
we should re-focus the client and ungrab the ptr even if we don't have a
mouse based match (i.e. in the kbd no match case).  update the comment
as well.

ok oga@

9c587d972584743333a17b54d4062692fc779a88, by okan on 2011-03-22 11:05:13
fix nousance of always highlighting the first entry even when there is
no match (seen in the ctrl-a case)

ok oga@

765479fc86223de51cb46f5dbce1dfabb4bb8354, by okan on 2011-03-22 11:03:05
move the default case to the end.

ok oga@

a50bfb613dab86e9b124324dff4289bc4679423f, by okan on 2011-03-22 10:59:08
reduce the number of times we sync during a window resize.

ok oga@

2c706e60c7b9c7da4198fac2ca9bc01e7d26895a, by okan on 2011-03-22 10:57:31
introduce nitems macro, with the appropriate ifndef.

ok oga@

8f88cd474a20772e72a7db5abe3013e2be223108, by okan on 2011-03-22 10:56:08
if virt/horz un-maximizing, restore only the un-maximized axis
coordinates; allows moving a client and not restoring the maximized axis
coordinates.

picked from a larger martynas diff from ages ago.

ok oga@

9b4985439e1a1f5acd54cf21039307dba660eed4, by okan on 2011-03-22 10:54:42
(0,0) is also inside in the screen; from Sviatoslav Chagaev.

ok oga@

3ff303658c1baf85e5248138a62781c48760945c, by okan on 2011-03-22 10:52:37
while this piece deals with client argv's in a seemingly inefficient way
(noticed by Tim Peniket), since we don't ever do anything with cliarg,
remove the hunk and cliarg completely.

ok oga@

a12fb346a2d45a046d69c78410c1afc5e7c311d2, by okan on 2011-03-22 10:49:46
remove XXX and move a configure event out of the event handler functions.

reminded by a similiar diff from Thomas Pfaff.

ok oga@

00b502b1da59c43a82af9afb18f4e5cd0ea6f0c1, by okan on 2011-03-22 10:47:59
move the single keycode function directly into the menu code.

ok oga@

e03323d22e01f5cfd9ddf5997bfb2b01b6b0a1cc, by matthieu on 2011-03-08 20:48:59
xcb is no longer optional.

64e62989d01a1a14065ec220362dd67e85ce0b94, by okan on 2011-02-13 20:09:57
if we are saving the pointer location for a specific client, make sure
that if it is not already inbounds, put it in the default location,
which happens to be inbounds.

behavior noticed by Thomas Pfaff while maximizing and un-maximizing a
window, leaving the pointer behind and causing client_cycle() to be a
bit lost.

ok oga@

0884d38e3b1e458d4b247db358e8b5238b0d5774, by tedu on 2011-02-13 17:25:20
we lose track of highstack somewhere, so recompute it before we need it.
fixes a crash reported by christian neukirchen.  ok okan

cd23316a72b1549ba0cd6941ee2472f420c75c75, by martynas on 2010-12-14 11:08:47
in MotionNotify geom.x, geom.y calculations take into account bwidth.
fixes the annoying bug where windows would go +bwidth pixels right,
+bwidth pixels down.  ok okan@

111a88129dcd5891b7fad40771f07cc73183e146, by matthieu on 2010-11-27 14:25:47
Explicitely link libxcb when needed for static arches.

1f310d57e2284d7e6bf1edc947a7f263baef8d5d, by schwarze on 2010-09-25 21:58:18
s/-offset -indent/-offset indent/  for correct indentation,
and properly encode \(:a
found by mandoc -Tlint

ff3df256a10d5ab40bbbe019860af9adbfbac16b, by schwarze on 2010-09-25 21:48:08
s/\.Pb/.Pp/ for correct vertical spacing; found by mandoc -Tlint

dee6ac5b7db3605e1364789001aa2502f0b2d287, by okan on 2010-09-25 20:04:55
do not warp to clients marked 'ignore'; from chneukirchen at gmail - thanks.
(with the manpage bit from me).

ok oga@

2d66003e4b8013d02370982fdf617510b108144c, by okan on 2010-09-25 20:02:58
picked a henning diff from src - original log:
fix linecount bug with comments spanning multiple lines
problem reported with the obvious fix for bgpd by Sebastian Benoit
<benoit-lists at fb12.de>, also PR 6432

ok oga@

917bce4b8da39e68ed2200f1e2eab09582e7fa34, by okan on 2010-09-25 20:01:27
spacing nits

2440efad06f6c6d13d5d46c498d29ccee4d58c42, by okan on 2010-07-30 12:28:19
revert -r1.45 of group.c (log was: fix window name and class to match
cwmrc(5)).  instead, fix cwmrc(5) to match the old behavior which also
happens to match the example config, of which many have based their
configs; this also nicely matches the output of xprop(1).

clean-up of variable names as a separate commit.

suggested by sthen (and something we should have done initially).

discussed with and ok oga@

aaca5b7e45d4d4bdbd3e1001d80cccca4c14d77c, by okan on 2010-07-23 15:13:00
fix backwards example (after r1.45 of group.c); noticed by phessler@

ok oga@ phessler@

2a5e1791d47ad603d135f8d472135cb6a2aadfb0, by okan on 2010-06-28 12:29:04
fix window name and class to match cwmrc(5); from Holger Mikolon - thanks!

ok oga@

85a53083cbe06c33cdea95b6a9fcb953bcc3afa2, by okan on 2010-05-22 22:32:08
initialize nitems

ok oga@

72e6d2d0a9e3f1ac1c2fc52e03648c625b07a49c, by okan on 2010-05-22 22:10:31
replace XFetchName() with something more intelligent which attempts to
use the appropriate netwm Atom first, as well as deal with utf8.

slightly different incarnation tested by sthen@ and ajacoutot@ - thanks!

ok oga@

a292c96977547511316acc8e20798f7c2b1edb19, by oga on 2010-04-12 16:17:46
grab events on the root window *before* we look for existing windows.

This closes a race we were hitting often where stuff started right
before cwm may not get noticed and not have borders.

ok okan@. Prompted by something todd noticed.

b12e6fc5cdba5683832ddaace84150ff6cc507a8, by okan on 2010-04-11 16:51:26
clean up a few xu_* functions to just accept what they need (Window).

ok oga@

46c9b5cbae1fca201b2ffdcc9e7d9ff0dcd7ed27, by schwarze on 2010-03-20 20:13:27
Fix formatting errors breaking the xenocara mandoc(1) build:


Now "cd /usr/xenocara && make man" succeeds,
but unfortunately, that covers a minority of X11 manuals only.

ok matthieu@

507480a69503bd3a5924ebd8cc2e9a971efe62d9, by okan on 2010-02-10 01:23:05
preserve labels after an edit action is aborted; extending the menu
struct just for this is the least intrusive approach until the menu code
is reviewed.

inspired by Thomas Pfaff's report on tech@

ok oga@

c4a97053cd98160c9e0f55e2b7fb71de73616579, by stsp on 2010-02-02 19:28:46
Honour program-specified window position in size hints when placing windows.
Makes XMMS windows appear as expected.

ok okan, oga

e88bda0df5002adb58fb96bd8f5b5b34f619c41d, by okan on 2010-01-27 03:04:50
- allow per-screen gap; not (yet) user configurable.
- teach _NET_WORKAREA about gap.

ok oga@

ccb207a8a8d95d9673614727a5f60facdf57b275, by okan on 2009-12-15 04:10:42
pull all non-X11 headers from calmwm.h and place them only where they
are required.

encourged to go all the way by oga@

09a2d7fb98b326dc43b932c43beb34b5924d7266, by okan on 2009-12-15 03:38:11
spacing

b27c3c22b508889678986f74b2ca3082a4b577ad, by okan on 2009-12-15 03:34:34
pull these headers only into files that need them.

ok oga@

2ad2b5f31d01d8c0c3a45c542fc525ae79b4ae29, by okan on 2009-12-15 03:26:22
rid ourselves of these functional macros; convert to real functions.

ok oga@

597cb25820b9b89d6876d37bcdae6ba49f67de30, by okan on 2009-12-15 03:25:22
mostly irrelevant now, so remove.

ok oga@

b6b7d273d4bf5486a6efb4ec2100f59d8dfaf8a8, by okan on 2009-12-15 03:24:36
merge the 2 common header files; specific includes to be pulled out as
separate commits.

ok oga@

49661d405b6414357f60e75135c5cce3967fa519, by oga on 2009-12-14 16:39:01
kill _CWM_GRP atom setting. The netwm stuff does us well enough now that
it's superfluous.

ok okan@

3b87bdb04759237cc4dbdca600854d1f95659fff, by oga on 2009-12-11 18:09:16
add _NET_WORKAREA. for now we ignore the gap, this'll change soonish.

ok okan@

28e94b2fbcb7ca75059a9334ab9f0bcfac3787a0, by oga on 2009-12-11 17:57:38
another int/long fixup that was giving dodgy property values on amd64, shame on
me for not reading xlibs (appauling) documentation more closely.

ok okan@

a0ec2515e932183c01a7f9e61386b0741bef5f33, by oga on 2009-12-11 17:55:42
implement support for _NET_WM_DESKTOP properties on windows.

it works kinda like _CWM_GRP, which we added to aid restarts a while
ago, but it's standardised and clients are specifically allowed to set
it to request a desktop.

for noe we leave _CWM_GRP support in, but its days are now numbered.

while i'm here fixup an int/long mixup with an earlier diff.

ok okan@

b35cbf81d84c97e7c444aafe491597bd6db6cfab, by oga on 2009-12-11 17:51:42
Implement _NET_DESKTOP_NAMES, this one was a bit tricky since thespec
says that a pager can change the property at any time (most need a
clientmessage). So deal with property updates.

Needed to shuffle some of the other code around since we can't just use
shortcut_to_name[] everywhere now.

ok okan@

9b04930f24bb3acc3626f442eff074b6b80821f3, by oga on 2009-12-10 23:21:26
Implement _NET_VIRTUAL_ROOTS (just clear it, we don't use that technique)
and _NET_SHOWING_DESKTOP (we're never doing so right now).

only three informational root-window hints to go.

ok okan@

a7c3a7cac323e5522f70f6f4fb3c6eb6607d1b99, by oga on 2009-12-10 23:14:58
Implement _NET_CURRENT_DESKTOP, _NET_DESKTOP_VIEWPORT and
_NET_DESKTOP_GEOMETRY.

ok okan@

134e777cf095ae292730e1c9d3f7967099878024, by oga on 2009-12-10 17:16:51
finish unfucking the screen_ctx handling.

remove screen_current() it was utterly bogus when nscreens > 1.

pass a fake client_ctx in the case where there's no client and the
kbfunc or mousefunc doesn't need a real one, it just contains the
current screen, modify these functions so that they pass down the screen
context to their callees.

make groups per screen, it's the only way it makes sense in this regard.

ok okan@.

ee7df6a95f80bebc9ec2d8571c1ff8ff2f53cfd0, by okan on 2009-12-08 16:52:17
start fixing screen_ctx usage, for it is utterly broken.  bring font
into screen_ctx and start passing screen_ctx around to in order get rid
of Curscreen; fixup per-screen config colors the same way.

diff mostly from oga@, with a bit harsher reaction to the state of screen_ctx.

"please commit" oga@

aa88d5848e0b3ee3ea7c64c7582eddd963dcecb2, by oga on 2009-12-07 23:19:51
Implement _NET_NUMBER_OF_DESKTOPS, currently this is statically 9 and
unchangable. the group code needs some cleaning up before this will be a
bit less hackish.

ok okan@

728d2a40dd4e0151c6473179d35ca08fd0a0f1b4, by oga on 2009-12-07 22:46:15
support _NET_CLIENT_LIST.

the x property api doesn't let you remove one entry from an X property
array, so client_remove is kinda expensive, but there's no real way
around that..

ok okan@

3c60d854db25c4cf0c72a981b108bde0bbf933fd, by oga on 2009-12-07 22:21:59
Implement _NET_ACTIVE_WINDOW. for now just the informational hint is
supported, the client message to change this will be supported when all
informational hints are working.

ok okan@

3e309894c1d0f6ff9302109d72a0ffb25612d537, by okan on 2009-12-07 21:20:52
introduce the beginnings of netwm support, minimally and correctly;
allows java to be happy, but additionally stops others from whinning
about a non-netwm complaint wm.  more to come.

written a few times; this one includes a clever hack from oga@ to
populate _NET_SUPPORTED.

ok oga@

46630531f876c8043756e6622ca8be9e578bb2fa, by okan on 2009-12-07 19:48:08
fix off-by-one where a mere click would select the first item inside a menu

from Thomas Pfaff

ok oga@

ab4d36531c79b466e69d7dbd90329d58b8dce7ca, by okan on 2009-12-07 19:45:36
we already have sc from the passed cc, so just used that instead.

ok oga@

892e1e1c0d67438b6b0d36cb4ebce6dbede4e983, by okan on 2009-12-07 19:44:31
be consistent

ok oga@

4e2014863b7572aafbab77dd6482cfa74bf35110, by okan on 2009-12-07 19:42:59
remove unused extern

ok oga@

42bf29fb20349b0c92307a4a9c503bee3e8e9039, by tobias on 2009-11-28 17:52:12
style (whitespaces)

ok oga, okan

afaf69cefc0f30ae80d842a17cb1b446ec2a6996, by tobias on 2009-11-22 21:38:50
Corrected grammar in comment.

ok (and better style suggestion by) oga, okan

85d8697676f81a863b980e12ba0bf7a132f641cf, by oga on 2009-09-25 15:57:49
With Xinerama enabled, the borders of a maximized window will show up on
all adjacent screens. This patch hides the borders while the window is
maximized.

From Bertrand Janin; thanks!

ok okan@

4af6a60d849f7023a9b3622cb57731898a7f72f3, by okan on 2009-09-05 16:06:15
re-introduce the intention of the change from rev 1.4 in menu.c here
instead, by moving the check for '\0' to only the places that it
matters.  hint and 50%!o(MISSING)f the diff from oga@, prodded by todd@

ok oga@

38ad2e1d9c4414d8af4821a81c43aa98255198d8, by tobias on 2009-09-05 14:10:11
style

ok oga

7295c511559f292d849cfe037747c8321fc615e6, by okan on 2009-08-27 01:38:08
unroll the CCTOSC macro; from Thomas Pfaff

ok oga@

b9f83670895f8c61d11e32515cd696299d2d92ea, by okan on 2009-08-25 12:05:11
static; ok oga@

0a44f2e5c41bb60f9f426e4cf6e019067660e130, by okan on 2009-08-25 02:02:59
we are not doing access control here, so replace the "check if file is
executable" goo with access(2).

originally from jacekm@ long time ago.

"i can live with that" oga@

1968561fcc1520c97a7b994e11a5dbf58721e1fe, by oga on 2009-08-25 01:44:39
Reduce duplciation of code for checking modifiers in key/mouse bindings.
shaves a bunch of bytes.

ok okan@

95f65b8be6a012fab3233b5e468c1b2763e652a9, by oga on 2009-08-25 01:42:05
Instead of calling conf_bind*() 50 gazillion times in a row, store an
array with all the parameters in and just loop over that to setup the
default keybindings - it's so much easier to read.

okan@ "love love love"ed this

8fd4ff1c7c4c3914e75213df9fce4c5e65cf2cd4, by oga on 2009-08-25 01:32:40
Instead of messing around everytime we do a resize, just clamp the
resize increments to a minimum of one, and use it unconditionally.

"you've convinced me, do it!" okan@

fcb2684db1d3e102b6ff578e0e686e0e089a403a, by okan on 2009-08-25 01:26:09
unroll macro; ok oga@

e2b1cb98c1bc82d407e8a1004c3a5135ffa1d86c, by oga on 2009-08-24 23:54:41
Add a keybinding to allow horizontal maximisation of a window (CMS-enter).

based on a diff by Thomas Pfaff; thanks!

ok okan@

028a1778db0caa04ca4f82be32998a7f65c802a5, by okan on 2009-08-24 23:49:04
bring together gathering, calculating and applying of size hints;
additionally, respect aspect ratio hints.

ok oga@

09d88f4a18623fff580e7381aa242dae5b53cc18, by oga on 2009-08-24 21:22:48
Instead of having a function that just calls TAILQ_INIT on a global, use
TAILQ_HEAD_INITIALIZER() and drop the function.

ok okan@

e7f0d63413565065d6681acb5ca53654a473e126, by oga on 2009-08-24 17:04:39
instead of checking for flags in the client context, then removing them.
e.g.:

if (flags & flags_we_care_about)
	flags &= ~(flags_we_care_about);

just whack the flags unconditionally, it's simpler.

okan@ agrees.

82911249e2a50b50ed19ebc12fe957d84e1ff1f2, by okan on 2009-08-08 17:27:51
remove unnecessary Ar macros

ok jmc@

e095e955a85cc894447068ceac69ad274f9bf4f4, by okan on 2009-08-08 00:25:52
remove unnecessary Dq macro; based on a diff from Martin Toft

feedback and ok jmc@, martynas@

590eb4f37b8da3eba787e63acaf6e5be3ee911fc, by oga on 2009-06-26 12:45:12
use fnmatch to glob the entries in the exec menu.

allows shell globbing constructs such as *ctl, etc in the exec menu (m-?
by default).

Adapted from a diff from Thomas Pfaff, okan@ got almost the same diff as
me when reworking it, and oked this one.

f44862be9c4d3332d3f9ee9760e7014814eaeeb3, by okan on 2009-06-26 12:21:58
static local functions and data; almost identical diff from Thomas Pfaff

ok oga@

b13d592c572bde4a2b2039e7ef30e501ac97a21a, by okan on 2009-06-23 21:52:38
tidy up startup/init routines

ok oga@

bcc0f73bb68bab7bff0e0c969b81fe7547caa58a, by okan on 2009-06-20 00:55:41
compact a bit by condensing a few if-else's; from Thomas Pfaff

"go on then" oga@

58d12134b1679a9172a7131abffc27769780b9c5, by okan on 2009-06-20 00:22:39
unroll XCALLOC/XMALLOC macros; since we use xcalloc/xmalloc all over the
place anyway, this makes things a bit more consistent; from Thomas Pfaff

ok oga@

18c7d89c985cda7a9a5fa7de7c13ae177509380b, by okan on 2009-06-20 00:19:56
spacing

ee59e4a5a10ff944916494ef647feb05553c3b07, by sobrado on 2009-06-19 10:43:49
``exec'' and ``ssh'' are lowercase.

ok martynas@

055b244bb420d61f436c423d9387c4cfc608044d, by sobrado on 2009-06-18 20:44:40
items on the first list should have full stops too.

ok martynas@

71ad069846bcbddc5bb4464f79b98a04286b0135, by sobrado on 2009-06-18 20:24:54
the on-line manual should use the same notation for key bindings
as the configuration file, this way writing configuration files is easier;
add a few missing interactive command (.Ic) macros to key bindings;
slightly improve spacing in the lists; other tweaks.

ok martynas@

11b4b7fec6bb62598d06a09c61ff470097ff6bb8, by okan on 2009-06-17 13:08:37
remove unnecessary casts; from Thomas Pfaff

ok oga@

61f841ea589c4f20cdc7c2d5b6a08567e9ca2487, by okan on 2009-06-17 12:45:01
re-factor parts of mouse move/resize bit to shrink and make more
readable; no behavior change

ok oga@

d7589ca80b81ca4f743e74c88629e4e39a86445d, by okan on 2009-06-17 12:30:17
move like defines to a central, logical location; no binary change.

aok oga@

3eec3b3802971d8bf784aff21b3e4bbcc48f7c13, by okan on 2009-05-30 00:30:27
'no' is the answer to the comment question: cc->name can't be NULL at
this point due to client_setname()'s work; remove this check.

ok oga@

d1b84c5415e555b377e869aa67fa57fbdd0ef59f, by okan on 2009-05-30 00:30:17
re-order a bit for readability.

"if it makes you happy" oga@

6e9fa7548bf7c5eefad86108fee2bfce34e76072, by okan on 2009-05-30 00:29:08
revert the 1.4 change - causes a double free noticed by grange@ a while
ago while using kazehakase (or clients that don't set a name).

ok oga@

8bbc376fd9c46218563b1927fc900ccb2aaa5390, by sthen on 2009-05-19 12:49:37
In movetogroup, check the window's current group and skip client_hide()
if it's the same as the active group. Was in my original movetogroup diff,
but it got simplified a little too far.  ok oga@

2c29a1de65d9b1a752e1090ab3192ed5edf7afc8, by okan on 2009-05-18 00:23:35
nuke the leading underscore notation for local static functions - there
are far better ways to know.

"go for it" oga@

d2cfeb40b4bba4914b72f743b4b316e31560c17b, by oga on 2009-05-18 00:17:46
oops, we appear to have grown an extra prototype for group_only(), get
the secateurs out.

382662d00365eb762b60fdd1ef7ac2c06beee0ec, by oga on 2009-05-18 00:14:19
Rip out the event layer and just use a static array of callbacks like
every other window manager since twm.

The event layer is very nice, very shiny, very flexible, and very much
underutilised. We don't need any of those shiny features so it's
probably better to earn ourselves 1k smaller text size instead.

ok todd@, okan@

9be77266063c3ef82aeb0dc305d7e82dc517dbff, by okan on 2009-05-17 23:54:17
redraw all borders at once on reload

"sure" oga@

4d5dc5d9ea24d1b856c8b8c13c36a16daa396a4d, by okan on 2009-05-17 23:40:57
a long time coming - re-work the way we deal with colors: since we're
using Xft(3), use it to select the font color as well instead of trying
to build one; properly allocate and free colors at-will, e.g. we now
have configurable colors.

feedback and ok's todd@ and oga@

5d51c8e0e541449093913ff3b1f78989c82ed035, by okan on 2009-05-17 23:37:52
minor bit of knf, just to be consistent; oga@ doesn't mind that much

4c10afe2cc8468d9cfbbd489a2ca4c91329b556a, by okan on 2009-05-17 22:48:47
unbreak

eb7803269e63acabfacbfd95c32e8ca44963f8d6, by sthen on 2009-05-17 17:04:59
add a "movetogroup" function, which hides the current window from
display and moves it to another group. useful with the recently added
"grouponly" function, giving the ability to use groups as simple
virtual desktops (similar to e.g. xmonad, dwm and scrotwm).

this doesn't have default keyboard bindings; cwmrc(5) now shows how
you could use these functions (use M-1...9 for grouponly1...9 and
MS-1...9 for movetogroup1...9 to emulate the default dwm bindings).

ok oga@

6df7cba24ed6c628a3640e8ce4d249d1ad91451b, by sthen on 2009-05-17 16:51:43
redraw the border when unhiding a client window. fixes the situation where
you change to a different group and the mouse isn't over a window; previously
the border of the previously active window was highlighted but it didn't
actually have focus.

reads ok to oga@.

29cdc29c6e8fa06717eaa56d614c312ef9aa72f8, by oga on 2009-05-14 16:29:58
add missing prototype.

3de90d44fc13ee83b7f5b11282e757765364fffc, by oga on 2009-05-14 16:24:04
Add a new command (currently no default keybindings for it), grouponly[1-9].

This works like the group select binding, but hides all other groups.

So, the people who've been complaining that they don't get "virtual
desktops" in cwm may want to try this out in cwmrc (from memory, untested):

---

#cwmrc

# add new windows to the current group
set sticky

# automatically sticky windows. xclock for now.
# to make more windows sticky use group_toggle to unset their group
autogroup 0 xclock

# make the group selection keys hide other groups, emulate virtual desktops
bind CM-1 grouponly1
bind CM-2 grouponly2
bind CM-3 grouponly3
bind CM-4 grouponly4
bind CM-5 grouponly5
bind CM-6 grouponly6
bind CM-7 grouponly7
bind CM-8 grouponly8
bind CM-9 grouponly9

---

mostly by sthen, tweaks from me.

ok todd@, "if it works i'm ok with it" okan@, ok sthen@

fbb1edf2b3a1b4dc977de6793bc474b866e8a075, by okan on 2009-05-04 22:01:35
right and middle mouse buttons swapped; from rgouveia@cosmico.net

64f0038db757b05cb4eaf0bfd616af280b24358e, by okan on 2009-05-04 19:13:33
no need to use the global here.

ok todd@ oga@

4f34392258aba07d511ace70e5c516a6f0dfe282, by okan on 2009-05-04 18:05:21
properly document menu_unhide; tweak a patch from rgouveia@cosmico.net - thanks.

ok oga@

655c33c4898338db7cb3c9099e6eae6ec4e362f3, by okan on 2009-05-01 17:50:20
fix the other 50%!o(MISSING)f xrandr cases; reported by sthen@

"commit that" oga@, ok sthen@

cc68490fe12513394e9218740d28ba23ec158cbd, by okan on 2009-04-15 14:10:07
don't sync more than 60 times per sec on resize and move; idea from scrotwm.

ok oga@ sometime ago

ea96e92ac8ab68439f7cafa294e3905818324960, by okan on 2009-04-15 14:01:45
properly teardown X connection upon quit; static a few while here,
requested by oga@

ok oga@ sometime ago

8a490fc270f961a30dadd8b0cb29c09d88c5554d, by okan on 2009-04-12 23:51:10
we include sys/param.h, so remove sys/types.h; sort while here.

ok oga@

8346de997f4b33d7d039076fa9ccb5ce3ff0425a, by martynas on 2009-03-28 16:38:54
- avoid shadowed Mask declaration in menu_filter
- make _xev_reincorporate static
evmask naming oga@, input okan@.  ok okan@, oga@

17ae65adc59532b77d845c823b9902f7feff1f23, by martynas on 2009-02-07 21:07:00
add 'moveamount' to cwmrc;  it sets keyboard movement amount, making
it more useful on large screens
manpage tweak & ok jmc@
ok okan@, oga@

507b65a27fedf439cdba086c4f918d3efaeae8dd, by martynas on 2009-02-07 16:59:11
remove leftover from mdoc.samples;  ok jmc@

4fe12f528c4774c7b14bc50382731ec3a6eb55cc, by martynas on 2009-02-03 22:20:31
fix off-by-one in geom.[xy], after pwin changes.  keyboard movement
to the rightmost or bottommost corners would confuse cwm:
- there's no way to get the window back
- tab cycling breaks
ok okan@, oga@

6ad198022b7ccdcaba091827d6cef3be27bb8d87, by okan on 2009-01-27 02:16:20
remove Nscreens and x_screenname() - we really don't need them.

ok oga@

c750462d13e2ee289d715bca58a85123d6f055f5, by oga on 2009-01-27 00:42:53
One of the most annoying things to do was restart cwm and lose all of
your group state. Fix this up by using an X Atom (_CWM_GRP) to store the
name of the group that we're using (the name, not the number is because
at one point we may make the group numbers dynamic). I've been talking
about this since c2k8. so CM-w means you keep all of your windows grouped
properly.

ok okan@, todd@

9203c7e8cacbc14878f49b5199650566b33b6e95, by okan on 2009-01-23 20:47:45
passing a null pointer to free() is valid; sprinkle a few free->xfree.

ok oga@

b23cef2e4ad9a311af720f08662f9243ee0de82a, by oga on 2009-01-23 20:07:20
Whitespace nit.

pointed out by okan.

01af04a34209a9e99e52567b5f4c96fe044093cf, by oga on 2009-01-23 20:04:30
Switch to using XInternAtoms for caching the atom numbers. Saves a pile
of function calls and server roundtrips.

ok okan@

7660bf0db0042ea140e5ca6fd0b639583719da28, by okan on 2009-01-23 19:00:59
move conf_clear() and add proto.

ok todd@ oga@

779177a53d2d0c9a02905a43f250f4ae08cb1dff, by oga on 2009-01-23 18:58:40
Move the keybinding argument to a union to prevent warnings where
sizeof(int) != sizeof(void *). This has been annoying me for ages.

ok okan@, todd@

87964e5c7e4cfa96f34187a993d10cc5ec37e881, by okan on 2009-01-22 19:01:56
now that pwin is gone gone gone, we no longer have to do the bwidth
dance; xevents now able to deal with a border being set (which fixes
those annoying movie-watching apps).

ok todd@, oga@

e2399760789158633a6d2fa95aad274021ccdd8b, by oga on 2009-01-22 18:16:38
The default font name is strduped, so don't test for default font name
(therefore leaking it) when cleaning up a conf struct.

ok okan@

712f3f62c7265bd8998e692868f653471dacf3be, by oga on 2009-01-22 18:06:16
Oops, missed an atom.

ok okan@.

e2f3810fe83a7c7fdb4bd245ccdf5e4e343d1a55, by oga on 2009-01-22 15:26:33
Cache all of the X atoms we use at startup.

Do this instead of querying for them every time we use them. This
removes an XXX that has been in there since time began. This will become
more important as we move towards supporting netwm.

ok todd@, okan@.

1b269199c16190c92f9318152c5beb84a854be3c, by todd on 2009-01-21 15:04:38
borderwidth as a cwmrc(5) keyword, really helps debugging
from okan@
ok oga@

0548673f2f9c0cc89c85bb5789d111dabf1faa67, by todd on 2009-01-19 20:23:19
library dependency ordering matters for static archs, -lXext last in this case
from matthieu@, verified on vax

bd4c4d7734207c59fc0459fbf2832c2df3d15b54, by okan on 2009-01-17 20:39:24
remove unused

ok oga@

fa87ef4a9e6131597d86b0d3e76cd2e7b6911bcd, by oga on 2009-01-17 18:41:50
Finally fix the really annoying race where if you rapidly switch groups several
times you'd end up losing clients (thinking they had gone away).

From the ICCCM (which should not be read without a stiff drink in hand,
I made this mistake so you don't have to): to request a window to be
withdrawn one should send a synthetic UnmapRequest event when iconified.
To request iconification one should just unmap the window. The ICCM
further recommends that the synthetic event should just be taken as a
cue to withdraw, to deal with legacy clients. Taking a hint from this,
rework xev_handle_unmaprequest to correctly detect these situations.  A
Withdrawn window may come back anywhere, even as a subwindow of
something else, so the correct way to handle this state is to forget it
ever existed.

While i'm here, kill a dumb attempt to notice this in client_delete, and
nuke the very unnecessary arguments.

Todd confirmed this fixes the `race'.

ok todd@, ok ok okan@

399253a4ff975c3858b9bba1db8e7aca15860399, by okan on 2009-01-16 16:49:17
revert just the 'race fix'; more works needs to be ironed out with
events and state.

agreed by oga

ec8e6052ba902d2b6afced31008aad015d38f062, by okan on 2009-01-16 15:24:14
remove pwin, bringing us to one client, one window.  we no longer have
to push attributes around, so things get a lot simplier, while fixing a
few issues in the meantime; original suggestion by Edd Barrett many many
moons ago.

annoying window placement and race, found in c2k8 by todd, fix by oga!

lots of feedback from todd and oga - thanks!

"commit that bad boy" oga@

5c757cc7f420f58112d3e2af7a6f124994bcbe23, by oga on 2009-01-15 17:23:12
On startup, don't leak memory when we enumerate existing windows.

The behaviour until now was to ask X for the windows name (which is
malloced) then drop that on the floor and do nothing with it. Skip this
foolery and just skip the window. I don't believe I never noticed this before!

"you can has ok" okan@

49e218cf53abe04f6ab07ef29687c9e0ece46a89, by okan on 2009-01-15 00:32:35
- add missing prototypes.
- properly name, place and static private functions.
- move function which finds the xinerama screen for a coordinate to
a more appropriate place while altering its semantics to match others.
- tiny bit of style.

ok oga@

7e110f379be217bbf6a5476acb8043c1ff73a8e6, by okan on 2009-01-13 15:25:43
better cast; noticed by ray@

ok ray@ oga@

c07123ec78c8a9ef8be1a320fd6ccc7f9b0deb51, by oga on 2009-01-11 21:48:27
Add -Wall to CFLAGS, it's helped find a few dodgy constructs.

ok okan@.

d1050afb6001ef6134b816b21867466195153ecb, by oga on 2009-01-11 21:46:48
shortcut_to_name should not be defined as static in a header file. Put
it in group.c where it it used most, and add an extern definition for
the other users of it.

Found by gcc -Wall. ok okan@

dcfae161a2a0d58ece35336c0749079fcbf77097, by okan on 2009-01-11 21:34:22
add missing prototypes

ok oga@

0aca400461ed99c9b8e3bcc6c8e1d5ebb6eb7b12, by okan on 2009-01-11 21:33:45
better comparison idiom; found with -Wall

ok oga@

590169ce240e38bb9a90fc178f2fce65afb7bef0, by okan on 2009-01-11 18:34:46
- merge grab_sweep() into mousefunc_window_resize().
- merge grab_drag() into mousefunc_window_move().
- properly name, proto and static private functions.
- since we already do XMoveResizeWindow() and XMoveWindow() in (now)
mousefunc_window_resize() and mousefunc_window_move() respectively,
client_resize() and client_move() calls are unnecessary.

ok oga@

99afa5091fc6e3904a50fb31fbd8cc5396dcff9b, by okan on 2009-01-11 18:32:08
FcNameParse() manpage lies, cast here.

found with pcc.

ok oga@

b47283ab41758acf9b347edbf91d38cb2f122202, by okan on 2009-01-11 18:25:49
remove unused variables

ok oga@

b523788c0e61249cf8a1f33b5b96b42c83f129eb, by oga on 2009-01-08 21:35:19
If the mousebutton is unknown when we go to grab, don't just print a
warning, but also skip the XGrabButton call. Noticed by code inspection
by okan@, but we agreed my fix was cleaner.

ok okan.

ee0ec9a4537c9eb57fa319b6fcfec0ba4689818f, by okan on 2009-01-06 00:41:09
remove "search should ignore the current window" from list, for the
current behavior is better...

ok oga@

d2a54bc1156c93d325c8aabffc4d637a688d02a3, by okan on 2009-01-06 00:19:55
HasXinerama is an int

ok oga@

841c646a2bd69fe290640f0728c472c0575c6d9f, by okan on 2009-01-06 00:18:07
remove unused code

ok oga@

25af744559f9627d1471e0d304fb6ab95c7542d2, by oga on 2008-12-04 23:55:04
Kill obviously dead variable.

be5dfb4ea448bd416500690788270bfed26a0b26, by oga on 2008-12-03 23:55:46
Don't ignore sigpipe. Everytime cwm forks it execs anyway (so it
shouldn't get that signal), and this causes problems for our children
since they inherit the ignore.

Pointed out by Jacek Masiulani in pr 6010; thanks!

a0739c6cd4df1890751e2527c899756d7a49b6c5, by oga on 2008-09-29 23:16:46
Xinerama and XRandR dual head support for cwm(1). Now we detect the xrandr
reconfiguration events and change our sizes depending on that. We also detect
the xinerama screens for maximize, vertmaximize and initial window placement.

This could be improved by automatically resizing maximized windows when
the screen resolution changes and by moving windows that would be hidden
into visible space. Said changes will come shortly.

Tested by many. matthieu@ didn't oppose.

e2610449d11d3b5100aad319e8fa70c370b734bf, by oga on 2008-09-22 14:37:12
.Bl needs a matching .El. From Martin Toft a while ago, thanks!

2bd5e53c2ea748ae48362baebed5ca6c9413939f, by oga on 2008-09-22 14:35:16
Improve wording of the ``ignore'' directive. From Martin Toft a while
ago, ok okan@ from similar amount of time ago.

60a88f54cc546dadde180ecc9e146e16bab91072, by oga on 2008-09-22 14:28:04


note to self: When you mean to type cvs commit search.c, don't forget
the filename.

61601991b5151be7500cf7581b303b7f12ddb905, by oga on 2008-09-22 14:15:03
Display the current window title not a previous one in the case of
``show all'' in the window search dialogue. Noticed and diff from Tim
van der Molen, thanks!

a0082c58a4a95d05f452cfa3da7eaf4e1eb17dba, by canacar on 2008-09-03 04:39:12
Keep the exec menu entries sorted.
Go for it okan@

04441482d4ceab6eab0eaadc5188997a245bf061, by oga on 2008-07-22 21:01:54
fix the froggy problem.

Implement a handler for the MappingEvent, meaning that the keymap has changed.
When this happens, ungrab all bindings, update the map, and regrab.

Fixes the problem where some keybindings wouldn't work under non us or
uk keymaps (especially the .fr map, it seems). Issue noticed by
ajacoutot@, ratchov@, and a few people on misc. Based on an initial diff
from ratchov@.

ok okan.

0df9e0673c948d588be79ba5beef761d3709b3d5, by oga on 2008-07-22 20:51:54
We've been handling grabbing wrong all this time (noticed at c2k8).

add conf_grab() and conf_ungrab, and use them in the keybinding manipulation
functions to {,un}grab the binding for all screens we have defined.

the lovely little ordering problem comes in here, since when we parse
the config initially Screenq is empty, so regrab after we fill the
queue, hopefully later reordering will remove this little need and there
will be much rejoicing.

ok okan.

436a9e5c54297a7b9b684d307106e62764cd5e93, by oga on 2008-07-22 20:42:24
split x_setup() into two. dpy_init() for setting up the display and
checking the X config, and x_setup to set up the screens.

There's an ordering problem that means that some of this init needs to
come after the config is parsed, the rest should ideally happen before
though. This is a rough split, it will be refined later. Again, needed
for an upcoming change.

ok okan.

20052e024894b7cc2196c43076cfb441a57a99a6, by oga on 2008-07-22 20:26:12
Add xu_key_ungrab() and a mirror to xu_key_ungrab(). a couple of changes
that are coming up depend on it.

ok okan.

13b640ea29cc07d725b25635617daeb1e8839dd3, by oga on 2008-07-22 19:54:57
Kill screen_init(). it's been stubbed out for a while now. I don't envision it
coming back in it's current form.

ok okan@.

2f8639d37b5d243fd4704a55430e35dad0c4a4bd, by oga on 2008-07-22 19:52:54
kill another leftover prototype.

ok okan@

556f7a08715aac4229db4d4d5a350a40fef3f95c, by oga on 2008-07-18 15:40:52
Put back the initialisation of gc in group_cycle. No cookie for okan.


Reported by Dan Harnett, thanks!

2798cdc9a7a252797f365818ef49e6db8167696c, by okan on 2008-07-15 22:12:09
move client_vertmaximize to a more sensible location, purely for readability.

"don't mind at all" oga@

8afabd6c552f16cbf487eb791e6cc480032d3b9c, by okan on 2008-07-15 22:06:48
save an X call and use what we already have stored.

ok oga@

96f03c8cbc22e9df92880aa0d7a2a7cff92701b2, by okan on 2008-07-15 13:52:02
don't compensate for bwidth twice.

ok oga@

6d268bfa4af47938fa55e2e8b4f2f141fee0753a, by okan on 2008-07-11 22:43:44
Nm makes more sense than Xr, from Pierre Riteau - thanks!

b6dab5ccf30039e3713e1ecd0b04b20d63172f4d, by oga on 2008-07-11 15:42:29
Change "a window" to "current window" in documentation. it's more correct.

While i'm here: Capital letter and full stop in descriptions in cwmrc.5

"looks good - do it" okan@.

a556d3fa1f4fc918a3a90fb56f9982bdc6e245da, by okan on 2008-07-11 15:20:04
add Xr for cwm(1)

6ea4b1bd3b3f6106a61e4fbb98a267f86a32261f, by okan on 2008-07-11 15:18:29
no more hidden (and mysterious) config reloads and allow binding a key
to a config reload; CMS-r by default.

ok oga@

8be175b175f04c4c16ec4be63bab6b1d2b0ebbfd, by okan on 2008-07-11 14:24:34
replace snprintf with strlcpy

ok oga@

85e6c613606d444e08a9b1a2d53049c46a57e2a2, by okan on 2008-07-11 14:23:30
we already have ymax, so use it instead of asking X for it again.

ok oga@

b23fad398789ed8d7412813e5b178a38a6667ee7, by okan on 2008-07-11 14:21:28
spacing, declaration lineup to be consistent throughout cwm,
readability, and a bit of knf.

ok oga@

734f45ab4bdaf25835e90a56a1803de23ff49975, by okan on 2008-06-30 17:52:37
only cycle through visible *and* non-ignored windows.

ok oga@

993fd4311f8514a93138e3f0547e13075db971c5, by oga on 2008-06-25 22:44:42
Allow a mouse binding to hide a window, and add a default keybinding for CMS-M3,
so it's hard to press by accident, but there if you need it.

requested (in a way) and tested by johan and todd.

a6ec6cd9e98d9ef0cb4a03daabd108d4f844592d, by oga on 2008-06-25 22:40:27
Support mod4 (windows key) in mouse bindings too.

05b17bf803f84fd7bc12c96a0eff32b515794253, by oga on 2008-06-25 22:38:36
Support shift in mouse bindings. There's really no reason not to.

tested by johan@ and todd@.

2dfd021f8bd4298624d10b18969e52032a198a6a, by oga on 2008-06-25 22:37:29
Actually grab the correct mouse buttons for a window, instead of doing the
old hardcoded ones (which now can be wrong).

tested by todd@ and johan@.

77058c59e296434dc2ba1f39e27f64630b12f656, by oga on 2008-06-25 01:09:09
Sort flags.

From Pierre Riteau, thanks!

ok okan@.

187e7dfad2e4cbd46b608b36a8ec654739731edd, by oga on 2008-06-25 00:52:47
Stop keyboard move moving the window utterly off the screen. If that
happens there's no way to get it back.  Also, stop resize making a
windows size negative or zero. X does not like that one bit.

Diff from Martynas. Ok okan@.

6f1ed5bfe3c924c603eae6a0f436dcc9494dd5f0, by oga on 2008-06-19 02:21:30
Don't link "-lX11 -lXau -lXdmcp" twice.

From Martin Toft, thanks!

e21e7680e499e3b2361b6742581139aababe2a42, by oga on 2008-06-18 20:42:29
No need to map/unmap the window on hide/show since we already do the
same to its parent.

"makes sense" okan@.

2bddbe12f46962e069370569c90f09e621cdc559, by oga on 2008-06-18 19:09:12
Revert previous "fix" it introduces new issues of its own.

The problem that's causing us to lose windows is that rapid hiding and
unhiding causes a backlog of X events, so we lose track of client state,
and delete cc->pwin when we should not. A proper fix will arrive when it's been
worked out.

0ba60f0b94a6097a33aa434ade04bda619e6e33b, by okan on 2008-06-17 23:46:49
missed one mouse function

noticed by oga

4f2d4724c961aac55558069973f8a20bf01d8338, by oga on 2008-06-17 23:40:33
Ignore caps lock and numlock for keyboard bindings. The way Xlib makes
you do this is ugly. Also remove mod2 (numlock) and mod3 (odd) from the
list of keybinding modifiers. They don't make much sense here.

based on a heavily modified diff from Martynas.

ok okan.

19ba704ee3b16bcf4a29c223c5796a7f63fa6b6d, by oga on 2008-06-17 20:55:48
Just rework the mouse binding calculation on event to look like the
kbfunc one.  Makes the code a lot easier to read.

Fixes a bug i introduced in the last commit here.

ok okan.

9657664c7bd1b6fe61bf0605a8503569ec79e10e, by oga on 2008-06-17 20:21:17
The mousebinding code missing a break once it had found the correct
binding, this expose another issue that's still being debugged.
Issue pointed out by Dan Harnett, thanks!

While i'm here KNF and rework the logic to not be ass-backwards.

ok okan.

867652c484176909c61c74f59ba240039c8b9a1b, by mk on 2008-06-16 19:09:48
Make this not crash when compiled with -g.

Found by myself, analysis by kurt@, fix by me with input from otto.

``Just get some fix in...'' deraadt

07cd0b1ac55f819f42b2936339843bb85e7630bb, by oga on 2008-06-15 02:47:46
Rip out and burn the HASH_* stuff. We don't need a SPLAY tree for one font.
makes the code a lot simpler. While here rearrange the font handling functions
to be less shit.

ok and help okan@.

96d7310b4a224d50aeb2e5e94031d14b9bd6daf5, by okan on 2008-06-14 22:04:11
(mostly) proper xshape event support

ok oga@

160228210ba05be788d3537ee64e269882a66aa9, by okan on 2008-06-14 21:59:09
unbreak

9d9c61b8f6cd0bdf57c925a27de584e697743981, by okan on 2008-06-14 21:51:00
slightly alter the semantics of config files:
 - if no config file, continue silently and apply defaults
 - if config file, parse and move on
 - if config file specified but not found, error out

ok oga@

bdcbbe7f53ce140df98f06a31dfe5cb19a40d708, by okan on 2008-06-14 21:48:54
confable menu and window mouse bindings from rivo nurges (thanks!) with
some minor fixups, man page bits and knf.

ok oga@

b4ae492b7ba7bf40147c1ad4b8d036aa32053f58, by okan on 2008-06-13 21:22:34
finally document functions that can be bound, removing the need to have
name_to_kbfunc[] around.

feedback jmc@, ok oga@

01eecac5d41058d900b25cf2df6ee413a8e4dd50, by oga on 2008-06-13 03:41:58
Don't client_delete() on an Unmap event, only do that on a client delete event.

found by (among others) todd@ when you have a lot of clients and do something
that maps and umaps a lot of windows fast.

Debugged with aid of gdb, todd, okan and NULL pointers in a pizza place in
edmonton while waiting an inordinately long time for food.

ok okan@, todd@

077173527b37c91887a331893529db0c5afc883e, by okan on 2008-06-12 19:10:56
kill another long gone proto

ff9e573e1de0b1fa78c37820b9bf99ba0bb196a6, by okan on 2008-06-12 18:55:35
remove old (moved) code

ok oga@

198bb381a96c14aec2b542879f966a53992c8184, by okan on 2008-06-12 18:32:06
instead of forcing the ptr in the middle everytime, be more 'calm'; keep
the ptr still unless it moves out-of-bounds, then just follow the edge.

brought up by todd@

ok oga@

6f1f3592d4c93d625b37d0f9842ab32a78766c7b, by okan on 2008-06-12 05:10:24
place the pointer in the middle of the window after resizing with grab,
just like keyboard resize.

from Edd Barrett

ok oga@

78c8bf08cb658c4ada3dae70a1804dffb402ef92, by okan on 2008-06-12 05:01:13
ignore if non-zero expose events, for we could be covered by multiple
windows; merely an optimization.

ok oga@

4377b5ac3f90aa555647c5c6db6a37b945657539, by okan on 2008-06-12 04:59:51
re-work client_placecalc()
- make sure new clients sit inside the current screen
- respect 'gap' placement on new clients

ok oga@

90370430880948ba1e1bf2570745b89e736dc159, by okan on 2008-06-05 14:29:01
Enter -> Return, to be consistant and correct.

found the hard way by johan and discovered by oga.

"do it" oga@

610e8e83acf679d74a5f22912084a9d8a78ccfe1, by okan on 2008-06-05 04:01:37
prevent trying to exec a null char; could potentially happen with a
canceled or empty searchstr.

ok oga@

efbfc5fa42ad9d9bb65ef01635b9598a0cd36de0, by okan on 2008-06-05 00:07:05
actually honor termpath and lockpath if specified in cwmrc.

"now" oga@

b86d3cfae92475f332fca9c5312bb40efc6d032b, by okan on 2008-06-03 21:27:47
"Meta is a perfectly well defined concept in X (The keys bound to the
Meta_L or Meta_R keysysm).  no need to redefine it roughly there" - matthieu@

72bc2a295bee9be28c3169f37c82000ae2a25f3b, by okan on 2008-05-23 18:57:35
make sure to take bwdith into account when placing a new window.

ok oga@

48528d9ba1b2b2fb1b0a46d772d280827018a246, by oga on 2008-05-23 18:48:57
Grab the keyboard when we initialise the menu. This stops the keyboard
shortcut code stealing our events in some cases.

"put 'er in" okan@.

779cf04f0557baa2f94ab788e0a1c36cd3a613c5, by oga on 2008-05-21 14:11:19
Make menu_filter handle mouse movement too. This enables the keyboard
search dialogues to be manipulated with the mouse, too. It also allows
me to shrink the codebase further by killing grab_menu().

One known issue with highlighting the first entry in a search dialogue,
that'll be fixed soonish.

ok okan@, tested by Edd Barrett and todd@.

1e46ba72f706d7ab2b0f7a6a14054b908348d10e, by oga on 2008-05-20 14:50:51
Pull out the behaviour in grab_label and search_start into one utility
function menu_filter(). The plan is to eventually merge in grab_menu too.
Shrinks the code a fair bit.

Also, change XMaskEvent for XWindowEvent to prevent getting exposes for other
windows. This is particuarly noticable on slow machines with a LOT of xterms
(todd, you're an odd man).

ok okan@, todd@.

3bb0b451f78d13b4624e52b726f51e4847a84a2f, by oga on 2008-05-19 18:53:09
General cleanup.

ok okan@.

53116c4ec3792901d7ac774199963d915ea0da5a, by okan on 2008-05-19 18:07:53
stop normalizing search input; searching and matching are still
case-insensitive.  since this was the only use of normalizing input,
simplify as well.

allows one to exec with mixed case unmatched commands.

"works for me" oga@

981c2480dbeba34162711766a3b258421fe88ff8, by oga on 2008-05-19 17:32:22
Function prototypes should not have parameter names in them. These must
have been missed last time i knfed this.

ok okan.

6733ac217fdab8fc80621c1756303dbe1f1f0b43, by okan on 2008-05-19 17:24:19
client_cyclenext() -> client_cycle() since we now pass an arg.

removes a stray proto as well.

discussed with and ok oga@

71f99ab78fb8f5f8c4ae93f7ed0529320c6fe391, by oga on 2008-05-19 17:13:55
allow an autogroup value of 0 to mean no group. This means you can set
automatically "sticky" (in the traditional sense of the word) windows in
autogroup mode.

Based on an initial diff from Andrew Fresh, thanks!

ok okan@.

d347aa3d9a1ad8fb01286c51027c411f83d06a9c, by okan on 2008-05-19 17:11:19
as done with cycle/rcycle, make prev/next group switching one kbfuncs
and use a flag; adjusted to match and rename to {r,}cycle.

"ok, since i came up with the same thing" oga@

43d6e147c2e0998f3e256fd2b90d85fd079429f4, by oga on 2008-05-19 15:17:50
Use the XGrabKeyboard hack in for alt-tabbing as well. This stops the
mru getting the order messed up when gvim/xpdf et all steal key events.

While i'm here, change the logic in client_cyclenext() to use break instead
of goto, it's nicer that way.

Thirdly, instead of two different kbfuncs, just use the one and a flag.

"put your cycle diff in so I can pkg_delete gvim" okan@

7957a470fd60e9d50057989595dd3b36010211e2, by okan on 2008-05-19 12:56:58
finally implement keyboard binding for group toggling

idea for the
    "slightly-less-abhorrent-hack-but-a-hack-nonetheless-TM" from oga@

grab and ungrab the keyboard to get around some silly X apps that like
stealing events

ok oga@

a94f4bbb7a5771fd20c300893f6331aba9f4d571, by okan on 2008-05-18 20:06:36
send the correct x/y coordinates to XConfigureWindow()

fixes some windows that seem as if they don't fit; noticed by Edd Barrett.

ok oga@

5a0128bdc7d9291dd47861acd88a649e30e08400, by okan on 2008-05-18 20:00:16
remove extra calls to client_draw_border()

ok oga@

5fee379cb533e7844db03a9a3a22ed1b4cede289, by okan on 2008-05-18 19:57:43
fix backwards logic in example; found by oga@

b700be764a6c0d725653f67a220a1586354cd838, by oga on 2008-05-18 19:47:19
Fix two problems with conf_unbind():

1) it used TAILQ_FOREACH() when it's removing entrys from the list, this
   is bad.
2) We didn't free key, so there was a small memleak too.

also rework conf_bindname's logic slightly to be more simple.

ok okan@

27b023ebcbe1f4ec24c6044fee51c22c55d5993b, by oga on 2008-05-18 19:43:50
Kill conf_get_int(), it was a silly function anyway.

Since it's only used once just put the (simplified) logic into
conf_client() instead. This  means we can kill an enum and
CONF_IGNORECASE, too.

ok okan@

5c402536fa7dfe6805ab1cb9e1cd96feaaf69c41, by oga on 2008-05-18 19:38:18
group_ctx->name is only used in this one function, and for now it
corresponds directly to the static list of group names. Just use the
static list and stop strdup()ing a new version for the context struct.
Since that never got freed this also fixes a small memleak.

Kill some unused variables while i'm here.

ok okan@

a21a064a9b0d15239f72d5e6d5d9181fc387a427, by oga on 2008-05-18 19:34:09
When we're cleaning out the lists in parse_config and conf_clear it's a
lot simpler just to do while (entry = TAILQ_FIRST(head)) than to do a
for () over the whole lot. Simpler, shorter and probably faster.

ok okan@

0f50af616e623455a6a00d941c33886be0e96486, by okan on 2008-05-18 19:33:36
- re-order and mostly re-write cwmrc(5)
- merge example config file into cwmrc(5) and remove (little good in here)

feedback from jmc@ - thanks!

ok simon@

9a58e74401a651b770e1f6fcbf5f7edfcc4ee9d1, by okan on 2008-05-17 03:59:54
fix cwm's current XShape support from Edd Barrett -thanks.

XShape events should be handled at some point.

ok oga@

5034a77849c3a0ed91b67d1de65f063c9056cbc7, by oga on 2008-05-15 22:18:00
KNF, no binary change.

From Pierre Riteau. Thanks!

ec77265b87ceb612df9d02cdf0336cdf77d3099d, by okan on 2008-05-15 21:56:21
tiny bit of knf

ok oga@

458f96936dfd720466f17861f15ab4d9dc703350, by tobias on 2008-05-06 15:12:04
Signal handler of SIGCHLD calls waitpid() which sets errno on error. To
avoid clubbering of errno in normal context, save_errno got introduced.

ok oga

cd0ce468175113c2bd7fdae285a7fe508151fc5b, by oga on 2008-05-01 18:01:13
Rework the alt-tabbing code to be a lot simpler.

Diff mostly from Edd Barrett, with some minor changes from me.
Unfortunately the issue where apps like gvim and xpdf are stealing
keyrelease events causing the ordering to be messed up, but this is a
lot better. A fix for the aforementioned issue shall be forthcoming,
once a good one's been found.

ok okan@, also tested by todd@

79569a4d5963e27f9e3180b9249ceba32be8ac99, by simon on 2008-04-29 20:17:28
Allow slashes in unquoted strings.

From Pierre Riteau
Makes sense to oga@

e3971fc75814f33b1ed694a11e8669664bc9bd03, by okan on 2008-04-28 01:27:46
nits from Pierre Riteau - thanks!

ok oga@

898bfff36a8ce64146f1e1bc4452859dbda7595d, by oga on 2008-04-16 13:47:29
merge kbfunc_{ptrmove,client_{move,resize}} into one function that takes a flag,
this code was almost identical...

ok okan.

cd5c340e011da37650125d75c40aedda51757a5b, by oga on 2008-04-16 13:40:34
remove infowin. It slipped out of the last commit, for some reason.

f473dc3d12f4a1237fa020bff58fd44c3c6489de, by oga on 2008-04-16 13:38:09
Replace a few leftover calls to strdup and calloc with xstrdup and xcalloc
respectively.

ok okan.

f67772be650718b2e408a26ef08e1946a0abf1ab, by oga on 2008-04-16 13:35:37
Remove screen_infomsg(), nothing uses it.

ok okan.

642afbdf8ca97818e849d126619cbc1bb7ff5871, by oga on 2008-04-16 13:33:26
kill an unused struct member.

ok okan

d5794a6b0278433d4a5d288543f74770399e3a91, by oga on 2008-04-15 21:20:56
make the argument parser for commands accept quoted strings, while i'm
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@.

887a5aa65f255ac0ae4fdc2e7a3ad1c94a435da8, by oga on 2008-04-15 20:26:50
Kill dirent_isdir() and dirent_islink() nothing used them since the new
parser went in.

ok okan.

75182c6d9c3ce832401eea8822ca599513dc8505, by oga on 2008-04-15 20:24:41
hit it with the knf stick.

3a94c57afc6067c60b639944ef2042b0d73fb47e, by oga on 2008-04-15 18:46:58
Add "gap" support to .cwmrc. The options put in here make gaps on the edge
of the screen where an application won't be {,vert}maximized over. used for
placing a statusbar or something like xclock.

Patch from Edd Barrett, with input from myself and okan. Thanks!

ok okan@.

4bbb472a25c62b8266de2225c5f98b96ab829e1c, by okan on 2008-04-15 18:33:13
- add vi keybindings to search
- allow for ctrl-h as well

discussion with and ok oga@

fe80d400634a3b5e38ad8d1e9b5a3146306305d2, by okan on 2008-04-15 18:22:08
malloc -> calloc

suggested by and ok oga@

343ec1bb4fa42eabd35222b4dc1bd53fc7690026, by okan on 2008-04-09 18:10:47
remove alt-tab menu

discussed with a few

ok oga@

eb77aabea1029d97489611c71c11ab32e7329cee, by oga on 2008-04-08 17:38:27
No cookie for okan.

fix use-after-free that broke exec's path getting stuff.

``paths'' isn't used anymore, but pointers to within that array are still
used in the next loop. delay freeing it until after then.

9702d4cfd7f41866b97849e4ed62ab7b91071054, by okan on 2008-04-08 14:12:28
better 'quit' keybinding default (CMS-q)

feedback from oga@ and simon@

ok oga@ simon@

539b5c65340ff6ebdd83f0b491f2f1e212e5e75e, by simon on 2008-04-08 00:09:50
Make _xev_quit "volatile sig_atomic_t" for proper correctness.

Noticed by oga@, thanks!

0f182230426e86175a00b6e9328cc8d9bf0b876e, by simon on 2008-04-07 23:47:09
Add quit function, bind it per default to CM-q and change exec_wm
binding to CM-w.

Inital diff from Gleydson Soares
Feedback from oga@ and okan@

ok oga@

cb2cc70c3f757ca57addd3d7fba49353380ed5b2, by okan on 2008-04-05 21:09:19
- use $PATH before _PATH_DEFPATH, from Tim van der Molen
- plug leak, noticed by oga

feedback and ok oga@

ef0859de2063bf735afd142613f2ea3212e6558f, by simon on 2008-04-03 13:58:57
Sync usage() with reality and manpage.

"ok, but no cookie" oga@

34c0a0635f3323bc31481bba7b830f1e06bf3534, by oga on 2008-03-26 15:45:42
Fix a couple of issues with the maximization code.

If a window is vertically maximized, then resized, before the MAXIMIZED
flag wasn't removed, now it is. so doing a resize then does the right
thing.

Also, separate flags are needed for vertical and normal maximziation,
else when you do vertical-maximize, followed by maximize, the window
returns to it's original size.

ok simon@, okan@

e704b57d33e738ffde59921f9c9b6dad8ab6ae7b, by matthieu on 2008-03-25 23:41:50
Introduce bsd.xconf.mk to set default config variables used
at several places in the Xenocara build in a central place instead
of duplicating the checks all over the place. ok oga@.

c3aa344e7836f4214f6cff6e2fa7c0297e7da16e, by simon on 2008-03-23 15:09:21
Replace the symlink configuration scheme with a simple yacc parser as
found in other places of the tree.  Remove sticky and font commandline
options and add another one for alternative config locations.
Split off cwmrc(5) from cwm(1), nuke #ifdef __OpenBSD__ while there.

tested by various kind people, feedback from oga@ and okan@ - thanks!
ok oga@, jasper@, okan@

38ff7a904ede4e6412e5d89844e62b60e2c90fdb, by okan on 2008-03-22 21:34:07
allow autogrouping and sticky mode to work together

ok oga@

36c1aac90f7253ba173ebedf1ed76fb743c8f828, by oga on 2008-03-22 15:09:45
Rip out, burn, and dance around the grave of group-edit mode.
I've yet to speak to anyone who uses it, so just kill it.

You can still add/remove from groups using the mouse binding.  Groups
may get a re-work sometime soon if i have a stroke of genius.

knocks about 4k off the i386 binary for me.

ok okan@, todd@.

cd46788d85428b539975d8923549bc282eb1b68d, by oga on 2008-03-22 14:09:02
Remove a bunch of unused variables and incorrect comments.

"ok with me" okan@.

fead0d511fef0f54cca29b3c4af68ab80289c117, by oga on 2008-03-19 00:18:28
As mentioned in my last commit, there was an issue where the switching
code would always assume that the number of windows to switch to was
three if there were more windows hidden. Check for CLIENT_HIDDEN when we
count. Now it counts correctly.

ok simon@.

f85ba10437bfc58fabf8ccd98a1a8db858651a48, by oga on 2008-03-18 00:48:56
client_{,r}cycle() doens't need a client. so get rid of KBFUNC_NEEDSCLIENT.

this prevents the issue where you close or hide a window, and end up
with no client selected (you're on the root window). When that happened
alt-tab failed.  This, however, exposed to me a few more issues in the
alt-tabbing code:

-the code to detect how many lines we need looks bogus (you always get
three)

-alt-tabbing when everything is hidden always reawakes the most recent
window.

Fixes for these will be forthcoming.

ok simon@.

a466ddaa2dca046693e819644ef527327de8f1a3, by sthen on 2008-03-14 14:38:10
typo fix. ok oga

d816834954ba3dbda426ae4bf9036ef951787ba7, by matthieu on 2008-03-03 07:01:44
Change the default for XSRCDIR to /usr/xenocara. ok deraadt@

de36e6ec2fe85d353a9c18110316530f4054e207, by oga on 2008-02-20 13:00:18
add exec_wm to calmwm.h, it was missing (bad ian@!)

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!

7ef6f635573761f8f54f6736a07f55198aa9e3e7, by oga on 2008-02-20 12:56:10
Typo: s/supression/suppression

from Pierre Riteau, thanks!

3f63e529bfa7a0b2f8a8fd168b2fd44bb6121acc, by oga on 2008-02-13 21:48:03
usage never returns, and thus should be __dead.

ok jasper@.

9cb4f8884eb4f633d1d3983285aa1025c0ed7efc, by oga on 2008-02-13 21:04:19
add usage() for when an unknown option is given.

from Gleydson Soares <gsoares@gmail.com>, thanks!

ok jasper@

09dbddac8750b72eb00950b3f1a20c3fb81c6240, by oga on 2008-02-13 12:09:47
Make cwm print the XDisplayName() if it fails to open the display,
instead of an error message that'll be gibberish to most people.

from Gleydson Soares. Thanks!

ok simon@.

a936ffc470e55c256bb4b1f34a8fb991fb5e15c8, by ian on 2008-01-22 17:35:23
Trivial typo in recent "exec windowmanager" addition

de72f62924b2a65077f56d22690b017a467361bd, by oga on 2008-01-16 16:14:55
All of the 9wm code in cwm has been removed or re-written. Edit LICENSE
and the manpage to reflect this. While i'm here remove the note in todo
about cleaning up the menu code; it's been done.

ok ian@, okan@ (he also provided most of the manpage rework)

7fb2664f92a087762ab58158ab5c4f7c442bcd1b, by oga on 2008-01-16 11:39:20
huge amount of cleanup and dead code removal.

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.

1eed217b1c54d32d3c9269be79c3cb298b4b2805, by oga on 2008-01-14 15:21:10
Rewrite most of grab_menu in grab.c (it was partly 9wm code).
This should work functionally the same, with a few simplifications.

Changes:
- we don't care if you're holding another button when you release the
  menu key if you don't want to select anything, move off the menu.
- remove the hysteresis from the menu selection (before you had to move
  more than three pixels onto a new menu entry before it selected it)
- simplify a lot of the selection code
- kill dead code.
- do what the XXX comment said and cache the screensize (i may tweak
  this later).

As far as I can tell, the only code remaining from 9wm is the list of
fonts in calmwm.c. Others appear to concur.

ok marc@, looked over and tested by a few others. Reminders from okan@.

e5cabb0f43a4e584f09bda9fc3423f0df7a295d3, by oga on 2008-01-11 16:06:44
- Remove the "all rights reserved" tag at the top of most of the source
  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@

3de5c68888ab62ceabfe7f435cc300d8c7725075, by oga on 2008-01-08 20:21:43
Kill some more dead code, cursor.c goes away.

ok marc@

160d6aa910416ac7393876f6330b0a34371f7d69, by marc on 2008-01-03 20:20:20

Adjust initial window placement with any geometry that would place
the window at or over the right or bottom edge.
OK oda@

847191cff3d72264f815738f045ff749d6d8ea18, by oga on 2008-01-03 01:58:16
Kill draw.c, nothing uses the code in it.

More dead code removals to come.

ok marc@

f82afee4e2368cdfdaab0c8151de1f4a37371b5f, by oga on 2008-01-03 01:56:25
Kill some warnings intoduced with the execwm feature.

ok marc@

381ba77e031384c440d28668b93ab4cb17e0d623, by marc on 2008-01-02 20:54:32
remove declaration of removed function
Reminded by matthieu@  (thanks!)

01a3f493d6ff55f0c054329bb81941ff133e1f47, by marc on 2008-01-02 20:47:11
remove unused code
OK oga@

219f297493ae2593fd3dc92a0ad454f4fdc5e62f, by marc on 2008-01-01 22:28:59

Only use the x,y values from the XSizeHints structure when they are greater
than zero.   The fields are obsolete and not always used.
OK jasper@

2e72df662d00e066e5f58450f6ac28e00ff94983, by okan on 2007-12-31 02:49:45
allow the search feature to work in the root window, like other similar ones.

ok todd@

8b3cd2243acdd75581b9d50c9ca9fb60b98cd494, by ian on 2007-11-28 16:35:52
Add a "restart wm" function. ok oga@

f14a3eeebff6e0a378b38629bc1202af7e74b420, by oga on 2007-11-28 16:02:37
Another messed up keybinding.
I blame todd...

ok okan@

19ae2f65de9bba2ce86b80bbc0bafa5bddae6d61, by okan on 2007-11-27 17:17:08
re-add a lost group keybinding

ok oga@ todd@

3341229c74b64a725995dc95726a76ebab157b6b, by oga on 2007-11-19 22:18:16
Make cwm default keybindings always exist. Additional keybindings now
overlap with the new ones, overriding them. Also a new "unmap" keyword
in binding definitions now unmaps a binding without adding a new one.

This seriously shrinks the ~/.calmwm/.keys directory of anyone who defines
their own bindings whilst wanting some of the defaults.

Looked over, liked and ok todd@

ebebed71bd2e4f425a2ada2fd69c4f839a174104, by jmc on 2007-11-16 23:04:56
fix a pasto: documentation/5639 from viq

while i'm at it:
- fix an .El botch up
- kill trailing whitespace
- new sentence, new line

4b85adbe60dbc1338cfa1aa401646f168299f342, by todd on 2007-11-13 23:26:04
introduce conf_bindname() to drastically simplify conf.c
really liked by oga@

576d299095ac1a0aec7fef700d94f6c1a53c2bcb, by todd on 2007-11-13 23:08:49
enable pointer movement in cwm via C-<arrowkeys>
looked over by oga@

dc39e11ff9da56fe22f9c29eb90be8508e50d0be, by oga on 2007-11-08 13:03:22
Small manpage nit.

From Okan Demirmen, thanks!

6b00b86622f710d6103681ac6455775d115ef4fd, by oga on 2007-11-07 22:02:04
Change MOVE_AMOUNT in kbfunc.c to 1 from 10. This allows more fine tuning when
moving and resizing windows using the keyboard.

Future diffs might make this value configurable.

ok jasper@, todd@.

e64e1709ba829a6da005ea8f861ce4efeb95b480, by oga on 2007-11-07 22:00:26
Document cwm's keybinding support. It was already there, but not in the manpage.

While I'm here add support for extra modifier keys.

"commit commit!" jasper@, ok todd@.

699b04895988048447b0b80c2d751db4de4d18c0, by oga on 2007-11-07 21:58:03
Add support to cwm for resizing the windows using Control-Meta-[hjkl].

Please note that this remaps Control-Meta-L (label) to Control-Meta-N (name).

ok jasper@, todd@.

af71fc930af0ef837a0a06f98cdd77d9c704a171, by ian on 2007-10-07 16:56:21
wording

56994282f007b8b5175f08eb3dfab40713f7e9b4, by jasper on 2007-10-02 18:01:45
When cycling, only the end of the window names will be printed if the
name is too long. so show the beginning instead.

from Pierre Riteau <pierre.riteau at free.fr>

"looks correct" matthieu@

05848673965c20c4a0be4d3d0b024b75ba234e51, by jasper on 2007-09-06 06:01:14
fix buffer overflow, as sizeof(paths) won't fit inside the array.

from Stefan Kempf

"looks right to me" matthieu@

964a1e73a7bf3a4723f6f07f5e161dfd63199c6f, by jmc on 2007-06-29 21:10:37
Okan Demirmen sent me a diff to kill some silly Fa macros, then persuaded
me to clean this page up;

jasper and bernd gave oks for the Fa removal;

365aecd25e854df386f1980d925301a9b0e8056f, by todd on 2007-06-27 13:28:22
implement keyboard initiated movement of windows
enhanced version of diff originally from niallo@
man bits from niallo@
ok niallo@ japser@

a1d4169eb318f504f3a869ec429517de25eb5427, by niallo on 2007-06-26 19:34:26
modify "exec" dialog so that it auto-completes based on executables in
_PATH_DEFPATH

add an "ssh-to" dialog which auto-completes based on contents of
 ~/.ssh/known_hosts (M-.)

testing and eyeballing by Simon Kuhnle <simonkuhnle at web.de>, todd@, pedro@
mk@ and David Cathcart <david at cathcart.cx>

ok todd@

80d08270b87adce365904cfa43a8135cf7b13fb1, by jasper on 2007-06-08 16:29:19
don't map hidden windows on re-start.
from aon@iki.fi

35887fbdf6e97591feb8f0daf1d7123a5bbe9ed5, by jasper on 2007-06-06 22:08:02
document the autogroup functionality.
with aon@iki.fi

c025dc90897fa7f96859e84b709443d70e8a2980, by jasper on 2007-06-05 19:03:20
make it possible to cycle through the windows when non are selected.
(eg. when they're hidden, now you can cycle through them)

from aon@iki.fi

15fdb76df90671c40afed1b95b7e2ee3a52aa1ce, by jasper on 2007-06-05 18:57:03
draw window borders when redrawing a window

from aon@iki.fi

9b04f2582ba67e3cd4c60d93758b3ac298a432d2, by jasper on 2007-05-29 22:38:44
show hidden windows when they should (eg. when the pointer is warped to them)

from aon@iki.fi via bernd@

5a0f777c6f9b3d9a0d46b933ead17a26b10295e9, by jasper on 2007-05-29 22:35:04
don't give borderless windows a border, when they're inactive

from aon@iki.fi via bernd@

04248d0ed30b14173996ef42313eaf317884a344, by jasper on 2007-05-28 21:11:39
add two missing closedir()'s

from Antti Nyk�nen <aon at iki.fi> via bernd@

ok pedro@

9006bbf20b0c37ab3b4891f4c178fe86383cab1b, by jasper on 2007-05-28 18:34:27
convert globals from G_foo to Foo, as per TODO.

"looks good" pedro@, ok matthieu@

4a498a4c60bbc7fe5bcb0427e64a883e458d714b, by jasper on 2007-05-27 09:23:12
full screen sized windows

ok matthieu@

31356d9833987d0ecb9da1fc426fea2fda3537d0, by jasper on 2007-05-22 22:14:42
autoconf junk was zapped, so no need for HAVE_CONFIG_H

2742ebe21cc78969211fca768ef971608069068f, by jasper on 2007-05-22 17:59:17
remove useless #ifdef

ok pedro@

2b75f1ef962cbe59cb84763351895ab7a7847ffe, by jasper on 2007-05-22 17:38:51
remove bogus entry (shortcut for xlock) which has been taken care of (C-M-DEL)

ok pedro@

57da7d7cd8701b8c01c9fd97d51ed820845ee2bb, by jasper on 2007-05-21 19:24:46
we don't use this file on openbsd, so zap it.

ok matthieu@ pedro@

c3a569adfb65336dc8f62f9b70140a91e9378dc6, by jasper on 2007-05-21 07:53:11
fix optind

ok ray@

22329fd6f6b37a7672fbf5d7df2b27a172a4aed9, by jasper on 2007-05-10 21:28:23
- new sentence, new line.
- use .Pp instead of just a newline
- no empty lines between sections.

ok jmc@ matthieu@

9d51a8cf844e9a4deaaa706ee895383ccd7d44a9, by jasper on 2007-05-10 17:23:49
- add a "-d" option, to specify the display cwm should be started on
- adjust argc/argv by optind
- add an ENVIRONMENT section to the manpage

ok matthieu@ ray@

8d6050329032f6f294118f53e0902a3a9e8afe7e, by bernd on 2007-04-27 18:10:39
Apply cwm-3-input_shift.diff from http://aon.iki.fi/cwm/.

890a32aa33a71b66c2b976342ffad80150f05bb8, by bernd on 2007-04-27 18:08:14
Apply cwm-3-exec.diff from http://aon.iki.fi/cwm/. Document the new
key binding.

fa515a82d06813c0ee1a0ae049b14b79626bf664, by bernd on 2007-04-27 18:04:40
Remove autoconf crap and other stuff we don't need.

d957b53c6f55b3db8d3afc2544c15c0253f96251, by bernd on 2007-04-27 18:01:38
Simple Makefile to build cwm.

3d12c94f42f91e957fa8a68efcd3b0387791e6cf, by bernd on 2007-04-27 17:58:48
Initial revision

5fa1a970345160a2cdd15460c6435446e8ab71a3, by bernd on 2007-04-27 17:58:48
Initial import of cwm-3.

tested by sturm@, ok matthieu@