src/clfswm-nw-hooks.lisp (absorb-window-nw-hook): Absorb new window hook: the frame...
[clfswm.git] / ChangeLog
blob4031fccfb7fde085d73b4fb8c621ac4e273d9941
1 2010-10-01  Philippe Brochard  <pbrochard@common-lisp.net>
3         * src/clfswm-nw-hooks.lisp (absorb-window-nw-hook): Absorb new
4         window hook: the frame absorb all new windows that match
5         nw-absorb-test frame data slot.
7 2010-09-30  Philippe Brochard  <pbrochard@common-lisp.net>
9         * src/clfswm-expose-mode.lisp (expose-create-window): Show window
10         title in accel window.
12 2010-09-29  Philippe Brochard  <pbrochard@common-lisp.net>
14         * configure: Use the Xavier Maillard clfswm script in contrib to
15         build an executable in the standard way.
17 2010-09-26  Philippe Brochard  <pbrochard@common-lisp.net>
19         * src/clfswm-expose-mode.lisp (expose-mode-display-accel-windows):
20         New functions. Add a window on each child in the expose mode to
21         quickly select them.
23         * src/clfswm-internal.lisp (child-x, child-y, child-width)
24         (child-height): New methods to get real child coordinates.
26 2010-09-25  Philippe Brochard  <pbrochard@common-lisp.net>
28         * src/clfswm-layout.lisp (*-layout): Use child-position.
30         * src/clfswm-internal.lisp (child-position): New function.
32         * src/clfswm-expose-mode.lisp (expose-windows-mode)
33         (expose-all-windows-mode): Use a generic mode.
35         * src/xlib-util.lisp (with-handle-event-symbol): Use a filled list
36         with handle-event-fun symbols instead of inspecting clfswm
37         internals symbols on each mode change.
39         * src/clfswm-expose-mode.lisp: Move and rename present*-windows in
40         a separate clfswm-expose-mode.lisp file.
42         * src/clfswm-util.lisp (speed-mouse-right, speed-mouse-down): Use
43         screen size instead of hardcoded test coordinates.
45 2010-09-24  Philippe Brochard  <pbrochard@common-lisp.net>
47         * src/clfswm-util.lisp (speed-mouse-reset, speed-mouse-left)
48         (speed-mouse-right, speed-mouse-up, speed-mouse-down)
49         (speed-mouse-undo, speed-mouse-first-history): New functions to
50         quickly move the mouse. Implemented for the second mode.
52 2010-09-16  Philippe Brochard  <pbrochard@common-lisp.net>
54         * contrib/clfswm: Move clfswm sources to $tmp_dir if there is no
55         write permission on $clfswm_asd_path. So anybody can start clfswm
56         even if there is no write permission on the source directory.
58 2010-09-12  Philippe Brochard  <pbrochard@common-lisp.net>
60         * contrib/clfswm: Add support to cmucl, ccl and ecl.
62 2010-09-11  Philippe Brochard  <pbrochard@common-lisp.net>
64         * src/clfswm-util.lisp (set-hide-unmanaged-window)
65         (set-show-unmanaged-window, set-default-hide-unmanaged-window):
66         New functions and menu entry.
67         (set-globally-hide-unmanaged-window)
68         (set-globally-show-unmanaged-window): New functions and menu
69         entry.
71         * src/clfswm-internal.lisp (hide-unmanager-window-p): New
72         function.
73         (show-child): Add a data slot on frame to hide or not unmanaged
74         windows.
76         * src/clfswm-corner.lisp (present-clfswm-terminal)
77         (present-virtual-keyboard): Use a function (generic-present-body)
78         instead of a macro (generate-present-body).
80         * src/clfswm-util.lisp (update-menus): List all directories and
81         subdirectories in $XDG_DATA_DIRS/applications.
83 2010-09-10  Philippe Brochard  <pbrochard@common-lisp.net>
85         * src/clfswm-corner.lisp (generate-present-body): New macro.
86         (present-clfswm-terminal, present-virtual-keyboard): Use
87         generate-present-body.
89 2010-09-09  Philippe Brochard  <pbrochard@common-lisp.net>
91         * src/clfswm-util.lisp (update-menus): Follow XDG specifications
92         instead of the non-portable Debian update-menu.
94 2010-09-07  Philippe Brochard  <pbrochard@common-lisp.net>
96         * src/clfswm.lisp (error-handler): New function do handle
97         asynchronous errors and ignore them.
98         (open-display): Install the new error-handler on display.
100 2010-09-05  Philippe Brochard  <pbrochard@common-lisp.net>
102         * src/xlib-util.lisp (with-xlib-protect): Add a
103         with-simple-restart on top of body execution.
105 2010-09-04  Philippe Brochard  <pbrochard@common-lisp.net>
107         * src/clfswm.lisp (main-loop): Protect all xlib functions with an
108         with-xlib-protect.
110         * src/xlib-util.lisp (handle-event): use with-xlib-protect only in
111         handle-event. Add a with-simple-restart to prevent a
112         clisp/new-lisp infinite loop.
114 2010-08-30  Philippe Brochard  <pbrochard@common-lisp.net>
116         * src/clfswm-corner.lisp (present-clfswm-terminal): Make the
117         clfswm terminal working even on xterm title changes.
119 2010-08-29  Philippe Brochard  <pbrochard@common-lisp.net>
121         * src/clfswm-util.lisp (run-other-window-manager): Update for
122         clisp compatibility.
124         * src/tools.lisp (do-execute): New parameter io to change the
125         input/output method.
127         * src/clfswm-util.lisp (hide-current-child): Prevent from removing
128         the current root.
130         * src/clfswm-internal.lisp (child-member): New predicate.
131         (child-remove): New function.
133         * src/*.lisp: Use child-member and child-remove everywhere it's
134         needed.
136 2010-08-28  Philippe Brochard  <pbrochard@common-lisp.net>
138         * src/clfswm.lisp (main-loop): Ensure that all events have been
139         processed after a process-event.
141         * src/clfswm-internal.lisp (is-in-current-child-p): New function.
143 2010-08-27  Philippe Brochard  <pbrochard@common-lisp.net>
145         * src/clfswm.lisp (main-mode:configure-request): Raise the window
146         only when present on the current child and focus it accordingly.
148 2010-08-26  Philippe Brochard  <pbrochard@common-lisp.net>
150         * src/clfswm-circulate-mode.lisp (circulate-loop-function):
151         Use is-a-key-pressed-p.
153         * src/xlib-util.lisp (is-a-key-pressed-p): New predicate.
155         * src/clfswm-keys.lisp (define-ungrab/grab): Use all values
156         returned by xlib:keysym->keycodes.
158         * src/*.lisp: Use the new child-equal-p to compare children. This
159         prevent a bug with sbcl/cmucl when the standard equal function
160         does not work with xlib:window.
162         * src/clfswm-internal.lisp (child-equal-p): New predicate.
164 2010-08-25  Philippe Brochard  <pbrochard@common-lisp.net>
166         * src/clfswm-generic-mode.lisp (generic-mode): Use an
167         xlib:event-listen before processing event with
168         xlib:process-event. This prevent a bug with CLX threaded
169         implementation like sbcl.
171         * src/clfswm.lisp (main-loop): Use an xlib:event-listen before
172         processing event with xlib:process-event. This prevent a bug with
173         CLX threaded implementation like sbcl.
175 2010-08-17  Philippe Brochard  <pbrochard@common-lisp.net>
177         * contrib/server/key.lisp (ushell-sh): Add ccl and ecl support.
179         * src/xlib-util.lisp (compress-motion-notify): Use a loop instead
180         of an event-case.
182         * src/clfswm-internal.lisp (with-find-in-all-frames): New macro.
183         (find-parent-frame, find-frame-window, find-frame-by-name)
184         (find-frame-by-number): Use with-find-in-all-frames to search in
185         frames in the right order.
187         * src/clfswm-util.lisp (mouse-click-to-focus-generic): Fix an
188         unwanted flickering with unmanaged windows.
190 2010-08-16  Philippe Brochard  <pbrochard@common-lisp.net>
192         * src/package.lisp: Remove event handler hooks as they're not
193         needed anymore (To replace them: use closure and define-handler).
195         * src/xlib-util.lisp (move-window, resize-window)
196         (wait-mouse-button-release): Use a generic mode.
198         * src/*.lisp: Replace the case to handle event with a more (tricky)
199         lispy  method which bind a function to each keywords associated
200         to graphics events.
202 2010-07-23  Philippe Brochard  <pbrochard@common-lisp.net>
204         * src/clfswm-util.lisp (delete-current-child): Invert bindings and
205         menu entry between delete-current-child and remove-current-child.
206         ie: Delete a child and its children in all frames by default.
208 2010-07-21  Philippe Brochard  <pbrochard@common-lisp.net>
210         * src/package.lisp: Add a placement configuration group.
212         * src/binding*.lisp: Bind control+g to escape the current action
213         like emacs.
215         * src/clfswm-internal.lisp
216         (delete-child-and-children-in-all-frames): New function and
217         binding: Second mode - Control+Delete delete the current child and
218         its children in all frames (ie: close the current child and its
219         children).
221 2010-07-20  Philippe Brochard  <pbrochard@common-lisp.net>
223         * src/clfswm-internal.lisp (remove-child-in-frame): Do not destroy
224         the frame window and the frame gc. Close a very annoying bug when
225         cuting/pasting a frame or moving a child over frames with the
226         mouse.
228         * src/clfswm-util.lisp (mouse-click-to-focus-generic): Redisplay
229         all children in *current-root* after moving/resizing a frame.
231 2010-07-18  Philippe Brochard  <pbrochard@common-lisp.net>
233         * src/clfswm-util.lisp (delete-focus-window)
234         (destroy-focus-window): Remove child in parent frame before
235         stopping it.
237 2010-07-16  Philippe Brochard  <pbrochard@common-lisp.net>
239         * src/clfswm-util.lisp (identify-key): Add a timeout in
240         xlib:process-event.
241         (mouse-click-to-focus-generic): Use find-child-under-mouse instead
242         of the window passed by xlib:process-event.
244         * src/xlib-util.lisp (move-window, resize-window)
245         (wait-mouse-button-release): Add a timeout in xlib:process-event.
247 2010-04-11  Philippe Brochard  <pbrochard@common-lisp.net>
249         * src/clfswm-util.lisp (run-other-window-manager): Add the ability
250         to launch an other window manager and to return to clfswm.
252 2010-03-18  Philippe Brochard  <pbrochard@common-lisp.net>
254         * src/clfswm-layout.lisp (set-tile-space-layout): Set default
255         to 1%.
257 2009-12-15  Philippe Brochard  <pbrochard@common-lisp.net>
259         * src/clfswm.lisp (main-loop): Add a *loop-hook* parameter and a
260         loop timeout.
262         * src/clfswm-generic-mode.lisp (generic-mode): Add a loop-hook
263         parameter and a loop timeout.
265 2009-12-05  Philippe Brochard  <pbrochard@common-lisp.net>
267         * src/clfswm.lisp (main): Add an alternate configuration filename
268         parameter.
270         * load.lisp: Add a debuging code example.
272 2009-11-14  Philippe Brochard  <pbrochard@common-lisp.net>
274         * src/clfswm-configuration.lisp (create-configuration-menu): New
275         menu to configure all clfswm variables while clfswm is running.
277 2009-11-12  Philippe Brochard  <pbrochard@common-lisp.net>
279         * src/clfswm-util.lisp (save-configuration-variables): New
280         function to save all configuration variables in clfswmrc.
282 2009-11-11  Philippe Brochard  <pbrochard@common-lisp.net>
284         * src/clfswm-info.lisp (info-mode): Begining of mouse support in
285         info mode.
286         (set-default-info-keys): Add cursor key support in info mode.
288 2009-11-08  Philippe Brochard  <pbrochard@common-lisp.net>
290         * contrib/reboot-halt.lisp: Add a Suspend/Reboot/Halt menu in
291         contrib.
293         * src/clfswm.lisp (main): Add a read-conf-file-p parameter to
294         prevent reading the configuration file (this may be useful to
295         produce the original documentation without user modifications
296         with the rc configuration file).
298 2009-11-07  Philippe Brochard  <pbrochard@common-lisp.net>
300         * src/bindings-second-mode.lisp (set-default-second-keys):
301         Simplification of Escape key to close/kill/remove the focus window
302         and unhide all windows.
304         * src/bindings.lisp (set-default-main-keys): Simplification of
305         Escape key to close/kill/remove the focus window and unhide all
306         windows.
308         * src/clfswm-util.lisp (ask-close/kill-current-window): Add remove
309         focus and unhide all windows capabilities.
311 2009-10-10  Philippe Brochard  <pbrochard@common-lisp.net>
313         * contrib/mpd.lisp (start-gmpc): Add gmpc in the mpd menu.
315 2009-07-29  Philippe Brochard  <pbrochard@common-lisp.net>
317         * src/clfswm-layout.lisp (tile-layout, tile-horizontal-layout):
318         Keep child order and don't make unnecessary child movement.
319         (one-column-layout, one-line-layout): New layouts.
321 2009-06-29  Philippe Brochard  <pbrochard@common-lisp.net>
323         * contrib/cd-player.lisp: New file to handle the CD player.
325         * contrib/xmms.lisp: New file to handle the xmms player.
327 2009-06-28  Philippe Brochard  <pbrochard@common-lisp.net>
329         * src/clfswm-layout.lisp (set-no-layout-remember-size): New layout:
330         Maximize windows in there frame - Leave frames to there actual
331         size.
333         * src/bindings-second-mode.lisp (set-default-second-keys): Bind
334         "o" on set-open-in-new-frame-in-parent-frame-nw-hook.
336 2009-06-27  Philippe Brochard  <pbrochard@common-lisp.net>
338         * contrib/keyb_fr.lisp: New file to handle an azerty keyboard.
340 2009-06-24  Philippe Brochard  <pbrochard@common-lisp.net>
342         * contrib/mpd.lisp: Use a standard menu.
344         * src/clfswm-info.lisp: Use a standard menu for the help-menu.
346 2009-06-22  Philippe Brochard  <pbrochard@common-lisp.net>
348         * contrib/mpd.lisp: New file to handle the Music Player Daemon (MPD)
350 2009-06-19  Philippe Brochard  <pbrochard@common-lisp.net>
352         * src/clfswm-autodoc.lisp (produce-doc, produce-doc-html): Minor
353         number key cleanup.
355 2009-06-18  Philippe Brochard  <pbrochard@common-lisp.net>
357         * src/config.lisp (get-fullscreen-size):  One pixel adjustment
358         (again).
360         * src/clfswm-placement.lisp (*-child-placement): One pixel
361         adjustment (again).
363 2009-06-16  Philippe Brochard  <pbrochard@common-lisp.net>
365         * src/clfswm-circulate-mode.lisp (draw-circulate-mode-window):
366         Ensure that all characters are printable.
368         * src/config.lisp (get-fullscreen-size): Adjust default fullscreen
369         sizes.
371         * src/clfswm-placement.lisp (*-child-placement): Adjust
372         coordinates to one pixel in the current child.
374 2009-06-04  Philippe Brochard  <pbrochard@common-lisp.net>
376         * src/clfswm-query.lisp (query-enter-function): Assign font before
377         width and height calculation.
379 2009-06-03  Philippe Brochard  <pbrochard@common-lisp.net>
381         * src/xlib-util.lisp (banish-pointer): Use with-placement macro to
382         bannish the pointer in an arbitrary place.
384         * src/clfswm-info.lisp (info-mode): Use with-placement macro to
385         place the info window in an arbitrary place.
387         * src/clfswm-query.lisp (query-enter-function): Use with-placement
388         macro to place the query window in an arbitrary place.
390         * src/clfswm-placement.lisp: New file. Allow to place info windows
391         or query windows on an arbitrary place. Allow to bannish the
392         pointer on an arbitrary place.
394 2009-05-16  Philippe Brochard  <pbrochard@common-lisp.net>
396         * src/clfswm-circulate-mode.lisp (reorder-child)
397         (reorder-brother): Unfocus windows before reordering children or
398         brothers.
400 2009-05-13  Philippe Brochard  <pbrochard@common-lisp.net>
402         * src/clfswm-circulate-mode.lisp (reorder-brother): Ensure that
403         the parent is a frame.
405         * src/clfswm-second-mode.lisp (sm-handle-motion-notify): Handle
406         motion with a default modifier.
408         * src/clfswm.lisp (handle-motion-notify): Handle motion with a
409         default modifier.
411         * src/clfswm-info.lisp (info-mode): Handle motion with a default
412         modifier.
413         (info-mode): Optimization in loop function.
415 2009-05-10  Philippe Brochard  <pbrochard@common-lisp.net>
417         * src/clfswm-circulate-mode.lisp (reorder-brother): Handle
418         root-frame correctly.
420         * clfswm.asd: Dependency fix for clfswm-generic-mode.
422         * src/clfswm-circulate-mode.lisp (reorder-child)
423         (reorder-brother): Handle empty frames.
424         (reorder-brother): Redisplay only the parent frame of the  current
425         child.
427         * src/clfswm-util.lisp (frame-toggle-maximize): Redisplay only the
428         parent frame of the  current frame.
430 2009-05-09  Philippe Brochard  <pbrochard@common-lisp.net>
432         * src/clfswm-util.lisp (frame-toggle-maximize): New function:
433         Maximize/Unmaximize the current frame in its parent frame.
435         * src/clfswm-layout.lisp (maximize-layout): New layout: Maximize
436         windows and frames in there parent frame.
438 2009-05-05  Philippe Brochard  <pbrochard@common-lisp.net>
440         * src/*.lisp: Add support for Clozure Common Lisp (CCL).
442         * src/clfswm-circulate-mode.lisp (reorder-child)
443         (reorder-brother): Reinitialise on circulate type change
444         child to brother or brother to child.
446         * src/*.lisp (*): Use map-window instead of xlib:map-window. So
447         calls xlib:display-finish-output on each map-request. So speed up
448         the window display.
450         * src/xlib-util.lisp (map-window): New function. Call
451         xlib:display-finish-output on each map request.
453 2009-04-28  Philippe Brochard  <pbrochard@common-lisp.net>
455         * src/clfswm-second-mode.lisp (sm-handle-motion-notify):
456         Optimisation when drawing second mode window.
458 2009-04-27  Philippe Brochard  <pbrochard@common-lisp.net>
460         * src/clfswm-circulate-mode.lisp (circulate-mode): Optimisation in
461         window redraw.
463 2009-04-22  Philippe Brochard  <pbrochard@common-lisp.net>
465         * src/clfswm-util.lisp (run-program-from-query-string): Launch
466         command only with a return validation.
468 2009-04-22  Xavier Maillard  <xma@gnu.org>
470         * src/clfswm-query.lisp (query-string): Use a generic mode.
472 2009-04-19  Xavier Maillard  <xma@gnu.org>
474         * src/clfswm-info.lisp (info-mode): Use generic-mode for info-mode.
476 2009-04-18  Xavier Maillard  <xma@gnu.org>
478         * src/clfswm-generic-mode.lisp (generic-mode): Add a generic mode
479         to define all other modes.
481 2009-04-05  Philippe Brochard  <pbrochard@common-lisp.net>
483         * src/package.lisp (): Use *default-font-string* for all
484         font-string.
486         * src/clfswm-info.lisp (info-mode): Ensure integer windows size.
488 2009-02-17  Philippe Brochard  <pbrochard@common-lisp.net>
490         * src/xlib-util.lisp (null-size-window-p): Better check of null
491         sized windows.
493 2009-02-14  Philippe Brochard  <pbrochard@common-lisp.net>
495         * src/clfswm.lisp (handle-map-request): Add a fix to manage
496         correctly fullscreen windows (SDL particularly).
498 2008-12-20  Philippe Brochard  <pbrochard@common-lisp.net>
500         * src/xlib-util.lisp (get-color): Allocate colors only once -> fix
501         a segfault with clisp/new-clx.
503         * src/clfswm.lisp (handle-motion-notify): Add a needed window
504         argument.
506         * src/clfswm-second-mode.lisp (sm-handle-motion-notify): Add a
507         needed window argument.
509 2008-10-30  Philippe Brochard  <pbrochard@common-lisp.net>
511         * src/xlib-util.lisp (wait-no-key-or-button-press)
512         (wait-a-key-or-button-press): Check buttons press/release correctly"
514 2008-10-28  Philippe Brochard  <pbrochard@common-lisp.net>
516         * src/menu-def.lisp: Add children navigation menu in the movement
517         menu (select next/previous child/brother/level).
519 2008-10-26  Philippe Brochard  <pbrochard@common-lisp.net>
521         *  *: Rename 'sister' frame to 'brother' frame.
523         * src/clfswm-keys.lisp (unalias-modifiers): Convert a modifier
524         alias in a real modifier.
526         * src/package.lisp (*modifier-alias*): New list of modifier alias
527         For example: :alt is :mod-1, :numlock is :mod-2...
529         * src/tools.lisp (remove-hook): New function.
531         * src/clfswm-keys.lisp (with-capslock, without-capslock)
532         (with-numlock, without-cnumlock): New functions.
534 2008-10-25  Philippe Brochard  <pbrochard@common-lisp.net>
536         * src/clfswm-info.lisp: Use the *binding-hook* to create info
537         keys and mouse bindings.
539         * src/bindings-second-mode.lisp: Use the *binding-hook* to create
540         second keys and mouse bindings.
542         * src/bindings.lisp: Use the *binding-hook* to create main keys
543         and mouse bindings.
545 2008-10-10  Philippe Brochard  <pbrochard@common-lisp.net>
547         * src/clfswm-menu.lisp (open-menu): Remember parent menu to undo
548         menu opening.
550 2008-10-09  Philippe Brochard  <pbrochard@common-lisp.net>
552         * src/menu-def.lisp: Use a menu instead of a function for the
553         standard menu.
555 2008-10-08  Philippe Brochard  <pbrochard@common-lisp.net>
557         * src/clfswm-util.lisp (show-standard-menu): Display the standard
558         menu from the 'update-menus' command.
560 2008-10-07  Philippe Brochard  <pbrochard@common-lisp.net>
562         * src/clfswm-query.lisp (query-string): Do not ungrab keyboard if
563         it's already grabbed.
565         * src/clfswm-internal.lisp (display-frame-info): Use configurable
566         colors and fix a bug with background.
567         (display-frame-info): Set window background when displaying info.
569 2008-10-06  Philippe Brochard  <pbrochard@common-lisp.net>
571         * src/xlib-util.lisp (my-character->keysyms): Use a macro to avoid
572         warning with clisp/new-clx.
574 2008-10-04  Philippe Brochard  <pbrochard@common-lisp.net>
576         * src/clfswm-util.lisp (jump-to-slot): Prevent to jump on a
577         deleted child.
579 2008-09-23  Philippe Brochard  <pbrochard@common-lisp.net>
580         * *: **** Release 0809 ****
582 2008-09-23  Philippe Brochard  <pbrochard@common-lisp.net>
584         * src/clfswm-util.lisp (ensure-unique-name): New function and menu
585         entry.
586         (ensure-unique-number): New function and menu entry.
588 2008-09-22  Philippe Brochard  <pbrochard@common-lisp.net>
590         * src/clfswm-nw-hooks.lisp (named-frame-nw-hook): New new window
591         hook: open the next window in a named frame.
592         (numbered-frame-nw-hook): New new window hook: open the next
593         window in a numbered frame.
595         * src/clfswm-query.lisp (query-string): Grab the keyboard in all
596         cases. So query-string can be called even in the main mode.
598         * src/clfswm-internal.lisp (show-all-children): Do not raise a
599         child by default => far less flickering.
601 2008-09-19  Philippe Brochard  <pbrochard@common-lisp.net>
603         * src/bindings-second-mode.lisp: Bind "t" to tile-current-frame.
605         * src/menu-def.lisp: Change key binding for the CLFSWM menu
606         entry.
608         * src/xlib-util.lisp (xgrab-pointer): Handle the case where cursor
609         is nil. (workaround on some CLX implementation).
611 2008-09-12  Philippe Brochard  <pbrochard@common-lisp.net>
613         * src/menu-def.lisp: Add a menu to set a focus policy for all
614         frames.
616         * src/clfswm-util.lisp (set-focus-policy-generic-for-all)
617         (all-frames-set-*-focus-policy): Set a focus policy for all
618         frames.
620         * src/clfswm.lisp (handle-enter-notify): sloppy-select
621         mode. Select a child and its parents on mouse over.
623 2008-09-03  Philippe Brochard  <pbrochard@common-lisp.net>
625         * src/clfswm.lisp (handle-enter-notify): Add a sloppy strict focus
626         policy -> Sloppy focus only for windows in the current frame.
627         (main-unprotected): Exit clfswm on init error (ie: when another
628         window manager is running).
630         * src/clfswm-util.lisp (reset-clfswm): New function.
632 2008-09-02  Philippe Brochard  <pbrochard@common-lisp.net>
634         * src/clfswm-menu.lisp (init-menu): New function.
636         * src/clfswm-util.lisp (reload-clfswm): New function to reload
637         CLFSWM.
638         (exit-clfswm): Rename quit-clfswm to exit-clfswm.
640         * src/clfswm.lisp (main, main-unprotected): Handle error in a
641         superior main function. Now CLFSWM can't break the X session. It
642         just reinitialize the display and run a new main loop.
644         * src/clfswm-corner.lisp: Make *clfswm-terminal* and
645         *vt-keyboard-on* global to avoid warnings when loading clfswm.
647         * src/clfswm-layout.lisp: Add a specific GIMP layout menu.
648         (help-on-gimp-layout): Describe how to use the GIMP layout.
650 2008-09-01  Philippe Brochard  <pbrochard@common-lisp.net>
652         * src/clfswm-layout.lisp (set-gimp-layout): Change the layout to
653         main-window-right-layout. Change the keybinding for (shift)alt+tab
654         to not select windows in the main window lisst.
655         Bind F8 to add a window in the main window list.
656         Bind F9 to remove a window in the main window list.
657         Change the focus policy to :sloppy.
658         (set-previous-layout): Restore the previous layout, keybinding and
659         focus policy.
661 2008-08-31  Philippe Brochard  <pbrochard@common-lisp.net>
663         * src/clfswm-menu.lisp (add-menu-comment): Add comments in menu.
665         * src/clfswm-layout.lisp (main-window-left-layout)
666         (main-window-bottom-layout, main-window-top-layout): New
667         functions.
668         Factorize layouts in menu.
670 2008-08-30  Philippe Brochard  <pbrochard@common-lisp.net>
672         * src/clfswm-layout.lisp (main-window-right-layout): A possible
673         GIMP layout: one or more main windows on one side of the
674         frame. Others on the other size.
676         * src/clfswm-util.lisp
677         (current-frame-set-click/sloppy-focus-policy): Each frame can have
678         a different focus policy (one of :click or :sloppy).
679         The default focus policy is set with *default-focus-policy*.
681 2008-08-23  Philippe Brochard  <pbrochard@common-lisp.net>
683         * src/clfswm-info.lisp (show-config-variable): New function.
685 2008-08-19  Philippe Brochard  <pbrochard@common-lisp.net>
687         * src/clfswm-layout.lisp (tile-horizontal-layout): New layout.
689         * src/clfswm-info.lisp: Colored help for key binding and corners
690         actions.
692 2008-08-18  Philippe Brochard  <pbrochard@common-lisp.net>
694         * src/clfswm-util.lisp (delete-focus-window)
695         (destroy-focus-window): Remove chid only in
696         handle-unmap/destroy-notify. Focus *current-root* only when
697         closing/killing the current child.
699         * src/clfswm-autodoc.lisp (produce-corner-*-doc): New autodoc
700         functions or corners.
702 2008-08-17  Philippe Brochard  <pbrochard@common-lisp.net>
704         * src/clfswm-corner.lisp (present-clfswm-terminal): New corner
705         action: Hide/Unhide a terminal on mouse corner action. (By default
706         right mouse button on the top left corner).
708         * src/config.lisp (*never-managed-window-list*): New config
709         variable.
711         * src/clfswm-internal.lisp (never-managed-window-p): New function:
712         Handle never managed window in a more simple way.
714         * src/clfswm-corner.lisp: New file and new and more simple method
715         to define corners actions.
717 2008-08-15  Philippe Brochard  <pbrochard@common-lisp.net>
719         * src/clfswm-info.lisp (info-mode): Info line can now be colored.
721         * src/clfswm-layout.lisp (fast-layout-switch)
722         (define-fast-layout-switch): New functions: Switch between two
723         layouts.
725         * src/clfswm-second-mode.lisp (leave-second-mode): Takes care if
726         really in the second mode. So leave-second-mode can be used even
727         in the main mode.
729         * src/clfswm-util.lisp (switch-to-last-child): New function:
730         Store the current child and switch to the previous one.
732 2008-07-16  Philippe Brochard  <pbrochard@common-lisp.net>
734         * src/clfswm-util.lisp (display-current-window-info): Display the
735         window id.
736         (have-to-present-virtual-keyboard): Add a virtual keyboard corner
737         (top right by default). By default 'xvkbd' is used.
739 2008-06-28  Philippe Brochard  <pbrochard@common-lisp.net>
741         * src/xlib-util.lisp (move-window, resize-window): Compress motion
742         events.
744         * src/clfswm.lisp (handle-motion-notify): Compress motion events.
746         * src/clfswm-second-mode.lisp (sm-handle-motion-notify): Compress
747         motion events.
749         * src/clfswm-info.lisp (info-mode): Compress motion events.
751 2008-06-21  Philippe Brochard  <pbrochard@common-lisp.net>
753         * src/clfswm-internal.lisp (show-all-children): Compute geometry
754         and selection first and then show only necessary children.
755         (show-child): remove unneeded display-p parameter.
757         * src/config.lisp (get-fullscreen-size): Place the frame border
758         outside the screen (this prevent the loose of 2 pixels per
759         directions :)
761 2008-06-12  Philippe Brochard  <pbrochard@common-lisp.net>
763         * src/clfswm-internal.lisp (focus-child): Algorithm change to
764         raise only the selected child.
766 2008-06-08  Philippe Brochard  <pbrochard@common-lisp.net>
768         * src/clfswm-internal.lisp (raise-p-list, show-all-children):
769         Raise only viewable children.
771 2008-06-06  Philippe Brochard  <pbrochard@common-lisp.net>
773         * src/clfswm-internal.lisp (show-all-children): Always raise all
774         displayed children. Remove all references to raise-p.
776 2008-06-04  Philippe Brochard  <pbrochard@common-lisp.net>
778         * src/menu-def.lisp (child-menu): New menu entry on raise/lower
779         child in its frame.
781         * src/bindings-second-mode.lisp ("Page_Down", "Page_Up"): New
782         second mode binding on raise/lower child in its frame.
784         * src/clfswm-nw-hooks.lisp (leave-focus-frame-nw-hook): Adapt
785         behaviour to the new raise/lower property.
786         Call clear-nw-hook before the rest of the hook.
788         * src/bindings.lisp (mouse-click-to-focus-and-move-window)
789         (mouse-click-to-focus-and-resize-window): Stop button event. This
790         prevent a keyboard/pointer freeze.
792 2008-06-03  Philippe Brochard  <pbrochard@common-lisp.net>
794         * src/clfswm-internal.lisp (frame-lower-child)
795         (frame-raise-child): New functions to raise/lower a child in its
796         frame.
798         * src/clfswm-util.lisp (have-to-present-windows)
799         (have-to-present-all-windows): New functions to have an MaxOS
800         expose like on mouse click in screen corner.
802         * src/clfswm-info.lisp ("Page_Down", "Page_Up"): Add boundaries.
804 2008-05-30  Philippe Brochard  <pbrochard@common-lisp.net>
806         * src/clfswm-util.lisp (unhide-a-child-from-all-frames): Unhide a
807         child from a choice in all frames with hidden children.
809         * src/clfswm-info.lisp (info-mode-menu): Handle separators.
811 2008-05-28  Philippe Brochard  <pbrochard@common-lisp.net>
813         * src/clfswm-util.lisp (hide-current-child, unhide-a-child)
814         (unhide-all-children): New functions.
816         * src/clfswm-info.lisp (info-mode-menu): Handle symbols and
817         functions.
819         * src/clfswm-util.lisp (hide/show-frame-window): new function and
820         menu item.
822 2008-05-23  Philippe Brochard  <pbrochard@common-lisp.net>
824         * src/clfswm-util.lisp (rename-current-child): Do not display the
825         frame info for a window.
827 2008-05-20  Philippe Brochard  <pbrochard@common-lisp.net>
829         * src/clfswm-internal.lisp (remove-child-in-frame): Destroy the
830         frame window for the removed child and its children.
832 2008-05-18  Philippe Brochard  <pbrochard@common-lisp.net>
834         * src/clfswm-autodoc.lisp (produce-*-doc-*): Add a note to use the
835         autodoc functions.
837 2008-05-17  Philippe Brochard  <pbrochard@common-lisp.net>
839         * src/clfswm-nw-hooks.lisp (default-frame-nw-hook): Do not handle
840         the ROX pinboard (ie: leave it lowered in the root window as
841         expected).
843         * src/clfswm-layout.lisp (tile-left-space-layout): New layout.
844         (tile-left-layout, tile-right-layout, tile-top-layout)
845         (tile-bottom-layout): Use all the frame space when there is only
846         one child.
848         * src/clfswm-internal.lisp (place-window-from-hints): Center
849         unmanaged windows in the root screen.
851         * src/clfswm-nw-hooks.lisp (clear-nw-hook, clear-all-nw-hooks):
852         new functions.
854 2008-05-15  Philippe Brochard  <pbrochard@common-lisp.net>
856         * src/clfswm-util.lisp (current-frame-manage-window-type): Fix a
857         typo in managed types.
859         * src/clfswm-internal.lisp (show-child): Always display frame info
860         even if the frame is hidden.
862         * src/xlib-util.lisp (resize-window): Use a better algorithme to
863         resize windows.
865 2008-05-13  Philippe Brochard  <pbrochard@common-lisp.net>
867         * src/clfswm-util.lisp (with-movement): Display frame info for all
868         frames in current root.
870 2008-05-12  Philippe Brochard  <pbrochard@common-lisp.net>
872         * src/*.lisp: Rename 'brother' frames to 'sister' frames.
874         * src/bindings-second-mode.lisp (define-second-key #\a): New
875         binding on 'add-default-frame'.
877         * src/clfswm-autodoc.lisp (produce-*-doc-*-in-file): Show a
878         message to follow the autodocumentation process.
880 2008-05-10  Philippe Brochard  <pbrochard@common-lisp.net>
882         * src/clfswm-util.lisp (bind-or-jump): Bind "Tab", "Return" and
883         "Space" to jump to a child. "B" to bind a slot on the current
884         child.
886         * src/bindings-second-mode.lisp: Use "Tab" instead of
887         "Iso_Left_Tab".
889 2008-05-07  Philippe Brochard  <pbrochard@common-lisp.net>
891         * src/clfswm-util.lisp (find-child-under-mouse): Take care of
892         unmanaged (hidden) windows.
894         * src/clfswm-internal.lisp (place-window-from-hints): Give a
895         minimal size for windows.
896         (with-all-windows-frames-and-parent): New function.
898         * src/config.lisp (*default-window-width/height*): New parameters.
900         * src/clfswm-internal.lisp (place-window-from-hints): Center
901         windows in the screen instead of in there frame.
903         * src/bindings-second-mode.lisp (tile-space-current-frame): New
904         binding on C-t.
906         * src/clfswm-layout.lisp (register-layout): Intern the once name
907         in the right package.
909 2008-05-05  Philippe Brochard  <pbrochard@common-lisp.net>
911         * doc/dot-clfswmrc: Update to  follow the new clfswm way.
913 2008-05-03  Philippe Brochard  <pbrochard@common-lisp.net>
915         * src/clfswm-internal.lisp (set-current-child)
916         (adapt-child-to-parent, show-child, hide-child): Handle the case
917         where child is not a frame or a window.
919         * src/clfswm-util.lisp
920         (mouse-click-to-focus-generic,mouse-focus-move/resize-generic):
921         Check if child is a frame.
923         * src/clfswm-internal.lisp (managed-window-p): Handle the case
924         where frame is null.
925         (place-frame): Check if frame and parent are frames.
927         * src/clfswm-info.lisp (info-mode): display all frame info before
928         leaving.
930         * src/clfswm-second-mode.lisp (second-key-mode): display all frame
931         info before leaving.
933         * src/clfswm-internal.lisp (display-all-frame-info): New function.
935 2008-05-02  Philippe Brochard  <pbrochard@common-lisp.net>
937         * src/tools.lisp (getenv): Implemented for ECL.
938         (urun-prog): Implemented for ECL.
940         * src/clfswm-util.lisp (identify-key): Use a double buffer to
941         display text.
943         * src/clfswm-query.lisp (query-string): Use a double buffer to
944         display text.
946         * src/clfswm-info.lisp (draw-info-window): Use a double buffer to
947         display text.
949         * src/xlib-util.lisp (clear-pixmap-buffer, copy-pixmap-buffer):
950         New functions.
952 2008-05-01  Philippe Brochard  <pbrochard@common-lisp.net>
954         * src/clfswm-info.lisp (info-mode): Add boundaries in the info mode window.
956         * src/menu-def.lisp: New file: move all menu definition in
957         menu-def.lisp.
959         * src/clfswm-layout.lisp (register-layout): Use a function instead
960         of a macro.
962 2008-04-30  Philippe Brochard  <pbrochard@common-lisp.net>
964         * src/clfswm-autodoc.lisp (produce-menu-doc,
965         (produce-menu-doc-html): New functions.
966         (produce-doc-*): Moved to clfswm-autodoc.lisp.
968         * src/clfswm-util.lisp (paste-selection-no-clear): Prevent to
969         paste a child on one of its own children. (this prevent a
970         recursive bug).
971         (move-child-to): Rename move/copy-current-child-by to
972         move/copy-child-to.
973         (mouse-move-window-over-frame): New function to move the window
974         under the mouse cursor to another frame.
976         * src/clfswm-internal.lisp (find-child-in-parent): New function.
978 2008-04-29  Philippe Brochard  <pbrochard@common-lisp.net>
980         * src/clfswm-internal.lisp (show-all-children): Display unmanaged
981         windows only when its window parent is the current child.
983 2008-04-28  Philippe Brochard  <pbrochard@common-lisp.net>
985         * src/clfswm-util.lisp (manage-current-window)
986         (unmanage-current-window): New functions: Allow to force to manage
987         or unmanage a window by its parent frame.
989         * src/bindings-second-mode.lisp (#\o): binded to
990         set-open-in-new-frame-in-parent-frame-nw-hook and
991         (#\o :control) to set-open-in-new-frame-in-root-frame-nw-hook
993         * src/clfswm-util.lisp (with-current-window): New macro.
995         * src/xlib-util.lisp (move-window, resize-window): Remove uneeded
996         exposure and enter-window handle event.
998         * src/clfswm-util.lisp (move-frame, resize-frame): Show all
999         children for the current child after the move/resize.
1001 2008-04-27  Philippe Brochard  <pbrochard@common-lisp.net>
1003         * src/xlib-util.lisp (resize-window): Take care of window size
1004         hints.
1006         * src/clfswm-util.lisp (mouse-focus-move/resize-generic): Allow to
1007         move/resize unmanaged windows.
1009         * src/xlib-util.lisp (move-window, resize-window): New functions.
1011 2008-04-25  Philippe Brochard  <pbrochard@common-lisp.net>
1013         * src/clfswm-util.lisp (current-frame-manage-window-type): Let the
1014         user choose what window type the current frame must handle.
1015         (display-current-window-info): New function.
1016         (current-frame-manage-all-window-type)
1017         (current-frame-manage-only-normal-window-type)
1018         (current-frame-manage-no-window-type): New functions.
1020         * src/clfswm-internal.lisp (managed-window-p): New function.
1022         * src/package.lisp (frame): Managed type: new frame
1023         parameter. This allow to choose what window type a frame must
1024         handle.
1026         * src/*.lisp: Rename all 'father' occurrences to 'parent'.
1028         * src/clfswm-nw-hooks.lisp
1029         (open-in-new-frame-in-parent-frame-nw-hook): New new window hook.
1031         * src/clfswm-util.lisp (adapt-current-frame-to-window-hints): New
1032         function.
1034         * src/tools.lisp (ensure-printable): Return always a string even
1035         with a null string.
1037 2008-04-24  Philippe Brochard  <pbrochard@common-lisp.net>
1039         * src/config.lisp (*default-nw-hook*): New variable to change the
1040         default new window hook.
1042 2008-04-22  Philippe Brochard  <pbrochard@common-lisp.net>
1044         * clfswm.asd (clfswm): Add a dependency from
1045         clfswm-second-mode.lisp to clfswm.lisp.
1047         * src/clfswm-util.lisp (identify-key): Show the documentation for
1048         the function bound on a key.
1049         (with-movement): Move with-movement,
1050         current-frame-fill/pack/resize-*  from bindings-second-mode.lisp
1051         to clfswm-util.lisp.
1053         * src/clfswm-menu.lisp: New menu system that let user change keys
1054         or functions associated to keys.
1056 2008-04-18  Philippe Brochard  <pbrochard@common-lisp.net>
1058         * src/clfswm-internal.lisp (show-all-children): Display-child is
1059         the first child by default. Solve a bug with father-p.
1061 2008-04-17  Philippe Brochard  <pbrochard@common-lisp.net>
1063         * src/clfswm-internal.lisp (add-frame): Add frame return the
1064         created frame.
1065         (show-all-children): Move the size computation outside the
1066         show-child part.
1068         * src/bindings-second-mode.lisp (with-movement): Redisplay only
1069         the current child.
1071         * src/clfswm-util.lisp (mouse-click-to-focus-generic): Redisplay
1072         only the current child.
1074         * src/clfswm-internal.lisp (show-all-children): New display-child
1075         parameter to display only the desired child and its children.
1076         (select-next/previous-child): Only display the current child.
1078 2008-04-14  Philippe Brochard  <pbrochard@common-lisp.net>
1080         * src/clfswm.lisp (init-display): Move the default frame creation
1081         on the default init hook.
1083         * src/clfswm-keys.lisp (define-ungrab/grab): Handle all keysyms in
1084         the main mode (for example: "1" on an azerty keyboard).
1086 2008-04-13  Philippe Brochard  <pbrochard@common-lisp.net>
1088         * src/clfswm-keys.lisp (find-key-from-code): Better handle of
1089         keysyms. Revert to old grabbing method for the main mode.
1091 2008-04-12  Philippe Brochard  <pbrochard@common-lisp.net>
1093         * src/clfswm.lisp (init-display): Add key handling on no focus
1094         window and on frame windows.
1096 2008-04-11  Philippe Brochard  <pbrochard@common-lisp.net>
1098         * src/clfswm.lisp (main): Keyboard handle strategie change: Grab
1099         all keys by default and replay just what is needed. No change for
1100         the second mode.
1102         * src/clfswm-keys.lisp: remove grab/ungrab main keys.
1103         (find-key-from-code): Test for shift and not shift presence.
1105 2008-04-09  Philippe Brochard  <pbrochard@common-lisp.net>
1107         * src/clfswm-internal.lisp (switch-to-root-frame): show later -
1108         new key parameter to have less flickering.
1110 2008-04-07  Philippe Brochard  <pbrochard@common-lisp.net>
1112         * src/bindings-second-mode.lisp (frame-layout-once-menu): Set the
1113         layout only one time and revert to no-layout to freely handle
1114         frames.
1116         * src/clfswm-nw-hooks.lisp
1117         (open-in-new-frame-in-root-frame-nw-hook): Tile layout with spaces
1118         with new created window.
1120         * src/clfswm-layout.lisp (register-layout): Now register
1121         automatically a once layout to set the layout only one time and
1122         revert to no-layout to freely handle frames.
1124 2008-04-05  Philippe Brochard  <pbrochard@common-lisp.net>
1126         * src/clfswm-nw-hooks.lisp (leave-focus-frame-nw-hook): New
1127         nw-hook: Open the next window in the current frame and leave the
1128         focus to the current child.
1130 2008-04-04  Philippe Brochard  <pbrochard@common-lisp.net>
1132         * src/bindings-second-mode.lisp: Add keys definitions to
1133         bind-or-jump in the second mode.
1135         * src/clfswm-util.lisp (bind-or-jump): remove the auto-defining
1136         macro for bind-or-jump-(1|2|3...).
1138         * src/clfswm-keys.lisp (define-define-key/mouse): Allow additional
1139         arguments to function. This allow to do things like:
1140         (define-main-key (key) 'my-function 10 20 'foo) -> 10 20 and 'foo
1141         are passed to my-function on key press.
1143 2008-04-03  Philippe Brochard  <pbrochard@common-lisp.net>
1145         * src/clfswm-util.lisp (bind-or-jump): New (great) function.
1147 2008-04-02  Philippe Brochard  <pbrochard@common-lisp.net>
1149         * src/clfswm-internal.lisp (child-fullname): New function
1151         * src/clfswm-info.lisp (info-mode-menu): Add an explicit optional
1152         docstring in info-mode-menu. An item can be
1153         '((key function) (key function)) or with docstring
1154         '((key function "documentation 1") (key function "bla bla") (key function))
1156         * src/tools.lisp (ensure-n-elems): New function.
1158         * src/bindings-second-mode.lisp: Bind Alt+mouse-1/3 to move or
1159         resize a frame or the window's father.
1161         * src/clfswm.lisp (init-display): Remove tile-space-layout by
1162         default on the root frame.
1164         * src/clfswm-util.lisp (move/resize-frame): Add standard event
1165         hooks handlers (map-request, configure-notify...)
1167         * src/clfswm-internal.lisp (adapt-child-to-father): Limit minimal
1168         child size to 1x1.
1170 2008-04-01  Philippe Brochard  <pbrochard@common-lisp.net>
1172         * src/bindings.lisp: Bind Alt+mouse-1/3 to move or resize a frame
1173         or the window's father.
1175         * src/clfswm-util.lisp (mouse-click-to-focus-generic): Stop button
1176         event only if there is a geometry change.
1177         (mouse-focus-move/resize-generic): Generic function to move or
1178         resize a frame or a window father frame.
1180 2008-04-01  Philippe Brochard  <pbrochard@common-lisp.net>
1182         * src/clfswm-internal.lisp (show-all-children): Return t if there
1183         is a geometry change.
1185 2008-03-30  Philippe Brochard  <pbrochard@common-lisp.net>
1187         * src/bindings.lisp (Up/Down): Swap select previous/next level.
1189         * src/bindings-second-mode.lisp (Up/Down): Swap select previous/next level.
1191         * src/clfswm.lisp (init-display): Create a default frame in the root frame.
1193         * src/clfswm-internal.lisp (place-frame): Place frame from real (pixel) coordinates.
1194         (with-all-*): Reverse the child list to manage the first child last (like in
1195         show-all-children).
1197         * src/config.lisp (*create-frame-on-root*): New variable: Create a new frame on the
1198         root window only if true.
1200         * src/clfswm-util.lisp (mouse-click-to-focus-generic): Create a new frame on the
1201         root window only if *create-frame-on-root* is true.
1203         * src/bindings-second-mode.lisp (sm-mouse-click-to-focus-generic): Create a new frame
1204         on the root window.
1206 2008-03-29  Philippe Brochard  <pbrochard@common-lisp.net>
1208         * src/bindings-second-mode.lisp (sm-mouse-click-to-focus-generic): Focus, move and resize
1209         the current child (even if it's a window).
1211 2008-03-28  Philippe Brochard  <pbrochard@common-lisp.net>
1213         * src/clfswm-util.lisp (mouse-click-to-focus-and-move)
1214         (mouse-click-to-focus-and-resize): New functions.
1216         * src/clfswm-internal.lisp (*-fl->px): Convert float coordinates to pixel.
1217         (*-px->fl): Convert pixel coordinates to float.
1219         * src/tools.lisp (call-hook): Move call-hook to tools.lisp.
1221 2008-03-27  Philippe Brochard  <pbrochard@common-lisp.net>
1223         * src/clfswm-layout.lisp (no-layout): Use :first-only to raise only the
1224         first child.
1226         * src/clfswm-internal.lisp (hide-all): Split hide-all-children in hide-all
1227         and hide-all-children.
1228         (raise-if-needed): New function.
1229         (show-child): Use a first-p parameter to raise windows only when they are
1230         first child.
1232 2008-03-26  Philippe Brochard  <pbrochard@common-lisp.net>
1234         * src/clfswm-internal.lisp (select-next/previous-level): Don't use show-all-children
1235         -> less flickering.
1237 2008-03-25  Philippe Brochard  <pbrochard@common-lisp.net>
1239         * src/clfswm-info.lisp (keys-from-list): new function.
1241         * src/*: rename 'childs' in 'children'.
1243         * src/*: rename 'group' in 'frame'.
1245 2008-03-22  Philippe Brochard  <pbrochard@common-lisp.net>
1247         * src/clfswm-pack.lisp (explode-group/explode-current-group): new functions.
1249 2008-03-21  Philippe Brochard  <pbrochard@common-lisp.net>
1251         * src/clfswm-pack.lisp: Pack, Fill, Resize functions.
1253 2008-03-16  Philippe Brochard  <pbrochard@common-lisp.net>
1255         * src/clfswm-nw-hooks.lisp: Register system for new window hooks.
1256         Bind control+o to open the next window in a new group in the root group
1257          (as open in next window in a new workspace in 0801 version).
1259 2008-03-15  Philippe Brochard  <pbrochard@common-lisp.net>
1261         * src/clfswm-util.lisp (show/hide-all-groups-info/key): Show/hide all groups info
1262         window.
1264 2008-03-14  Philippe Brochard  <pbrochard@common-lisp.net>
1266         * bindings-second-mode.lisp ("ISO_Left_Tab"): Use ISO_Left_Tab
1267         instead of Tab for select-previous-child.
1269 2008-03-13  Philippe Brochard  <pbrochard@common-lisp.net>
1271         * clfswm-util.lisp (force-window-in-group/force-window-center-in-group):
1272         new functions.
1274 2008-03-11  Philippe Brochard  <pbrochard@common-lisp.net>
1276         * clfswm-util.lisp (identify-key): Display the documentation
1277         associated to keys when identifying a key.
1279 2008-03-10  Xavier Maillard  <xma@gnu.org>
1281         * contrib/clfswm: Complete rewrite of the script. Detect error and
1282         act accordingly. Add command line arguments to configure the
1283         script execution. User can now choose different common lisp
1284         implementation (clisp and sbcl only), choose where to store the
1285         dumped image, where to find clfswm source.
1287 2008-03-09  Philippe Brochard  <pbrochard@common-lisp.net>
1289         * clfswm-internal.lisp (process-new-window): Beginning of new
1290         window hook: each group have a hook to tell what he wants to do
1291         with the new created window.
1293 2008-03-08  Xavier Maillard  <xma@gnu.org>
1295         * contrib/clfswm: New script. Dump a CLISP image of CLFSWM then
1296         call the resulting executable.
1298         * clfswm.lisp (read-conf-file): Check for the user config file in
1299         XDG_CONFIG_HOME *first*. Freedesktop.org standards should be
1300         prefered whenever possible.
1302 2008-02-27  Philippe Brochard  <pbrochard@common-lisp.net>
1304         * clfswm-layout.lisp (*-layout): Add an optional raise-p
1305         parameter in each layout.
1307 2008-02-26  Philippe Brochard  <pbrochard@common-lisp.net>
1309         * clfswm-util.lisp (copy/cut-current-child): Does not affect the
1310         root group.
1311         (copy/move-current-child-by-name/number): new functions
1312         (focus-group-by-name/number): new functions
1313         (delete-group-by-name/number): new functions
1315 2008-02-24  Philippe Brochard  <pbrochard@common-lisp.net>
1317         * ************************************************************ *
1318         *: Major update - No more reference  to workspaces. The main   *
1319         structure is a tree of groups or application windows.          *
1320         * ************************************************************ *
1322 2008-02-07  Philippe Brochard  <pbrochard@common-lisp.net>
1324         * clfswm.lisp (read-conf-file): Read configuration in
1325         $HOME/.clfswmrc or in /etc/clfswmrc or in
1326         $XDG_CONFIG_HOME/clfswm/clfswmrc.
1327         (xdg-config-home): Return the content of $XDG-CONFIG-HOME (default
1328         to $HOME/.config/).
1330 2008-01-18  Philippe Brochard  <pbrochard@common-lisp.net>
1332         * clfswm-internal.lisp (show-all-group): Use *root* and *root-gc*
1333         by default.
1335 2008-01-03  Philippe Brochard  <pbrochard@common-lisp.net>
1337         * clfswm-internal.lisp (find-window-group): New function.
1339         * clfswm*: Change to make clfswm run with clisp/new-clx.
1341 2008-01-01  Philippe Brochard  <pbrochard@common-lisp.net>
1343         * clfswm-util.lisp (query-show-paren): Add show parent matching in
1344         query string.
1345         (query-string): Bind control+k to delete end of line.
1347         * clfswm-second-mode.lisp (draw-second-mode-window): Display
1348         the action on mouse motion in second mode.
1350         * clfswm.lisp (handle-exposure): Redisplay groups on exposure
1351         event but do not clear the root window.
1352         (handle-configure-request): Adjust unmanaged window from there
1353         request.
1355         * clfswm-internal.lisp (process-new-window): Adjust new window
1356         with the specified hints (max/min/base width/height).
1358 2007-12-31  Philippe Brochard  <pbrochard@common-lisp.net>
1360         * clfswm.lisp (handle-configure-request): Send an Configuration
1361         Notify event. This solve a bug with xterm and rxvt who takes some
1362         times to be mapped. Now there is no delay.
1364         * bindings-second-mode.lisp (define-shell): Run programs after
1365         living the second mode.
1367 2007-12-30  Philippe Brochard  <pbrochard@common-lisp.net>
1369         * clfswm-internal.lisp (process-new-window): Do not crop transient
1370         window to group size.
1371         (adapt-window-to-group): Do not crop transient window to group
1372         size.
1374         * clfswm.lisp (handle-configure-request): Adapt just the window to
1375         its group and don't take care of the configure request. Remove the
1376         bug with the Gimp outside the group and speed up the window
1377         manipulation.
1378         (handle-exposure): Remove show-all-group on exposure event
1379         -> Speed up.
1381 2007-12-29  Philippe Brochard  <pbrochard@common-lisp.net>
1383         * clfswm-util.lisp (circulate-group-up-copy-window)
1384         (circulate-group-down-copy-window)
1385         (circulate-workspace-up-copy-group)
1386         (circulate-workspace-down-copy-group): Prevent the copy of the
1387         same window in the same workspace.
1389         * bindings-second-mode.lisp (release-copy-selected-window)
1390         (release-copy-selected-group): Prevent the copy of the same window
1391         in the same workspace.
1393         * clfswm-pager.lisp (generic-pager-move-window-on-previous-line)
1394         (generic-pager-move-window-on-next-line): Remove the copy
1395         property.
1396         (generic-pager-move-group-on-next-workspace)
1397         (generic-pager-move-group-on-previous-workspace): Prevent the copy
1398         of the same window in the same workspace.
1400         * bindings-pager.lisp (mouse-pager-copy-selected-window-release)
1401         (mouse-pager-copy-selected-group-release): Prevent the copy of the
1402         same window in the same workspace.
1404         * tools.lisp (setf/=): new macro to set a variable only when
1405         necessary.
1407         * clfswm-internal.lisp (adapt-window-to-group): use set/= to set
1408         x, y... only when necessary.
1410 2007-12-28  Philippe Brochard  <pbrochard@common-lisp.net>
1412         * clfswm.lisp (handle-configure-notify, *configure-notify-hook*):
1413         new function and hook: force windows to stay in its group (solve a
1414         bug with the Gimp).
1416 2007-12-25  Philippe Brochard  <pbrochard@common-lisp.net>
1418         * bindings-second-mode.lisp (mouse-motion): use hide-group to have
1419         less flickering when moving/resizing groups.
1421         * clfswm-internal.lisp (hide-group): new function.
1422         (show-all-group): clear-all: new parameter.
1424 2007-12-22  Philippe Brochard  <pbrochard@common-lisp.net>
1426         * clfswm-keys.lisp (define-define-key): undefine-*-multi-name: new
1427         macro.
1428         * clfswm*: Color change for the pager. Typo or better description
1429         in bindings definitions. Define bindings for a qwerty keyboard by
1430         default. dot-clfswmrc show examples to switch to an azerty
1431         keyboard.
1432         License change to GPL v3.
1433         * config.lisp: new file - group all globals variables in this
1434         file.
1436 2007-08-26  Philippe Brochard  <pbrochard@common-lisp.net>
1438         * xlib-util.lisp (hide-window): Remove structure-notivy events
1439         when hidding a window.
1441 2007-05-16  Philippe Brochard  <pbrochard@common-lisp.net>
1443         * package.lisp (*sm-property-notify-hook*): Readded
1444         property-notify-hook in second mode.
1446 2007-05-15  Philippe Brochard  <pbrochard@common-lisp.net>
1448         * clfswm-keys.lisp (produce-doc-html): Better clean up for strings.
1450 2007-05-13  Philippe Brochard  <pbrochard@common-lisp.net>
1452         * clfswm-pack.lisp (tile-current-workspace-to/right/left/top/bottom):
1453         Tile the current workspace with the current window on one side and
1454         others on the other (this emulate the larswm, dwm, wmii way). See
1455         the default configuration file to enable this mode by default.
1457         * clfswm-pager.lisp (pager-tile-current-workspace-to): idem for
1458         the pager.
1460 2007-05-12  Philippe Brochard  <pbrochard@common-lisp.net>
1462         * clfswm-pager.lisp (pager-draw-window-in-group): Add
1463         ensure-printable to print windows name even with non-ascii
1464         characters.
1466 2007-05-11  Philippe Brochard  <pbrochard@common-lisp.net>
1468         * clfswm-pager.lisp (pager-explode-current-group): Create a new
1469         group for each window in group.
1470         (pager-implode-current-group): Move all windows in workspace to
1471         one group and remove other groups.
1473         * clfswm-pack.lisp (explode-group): Create a new group for each
1474         window in group.
1475         (implode-group): Move all windows in workspace to one group and
1476         remove other groups.
1478         * clfswm-util.lisp (identify-key): Remove local configuration
1479         variables and made them available for configuration from
1480         package.lisp.
1481         (query-string): idem.
1483 2007-04-29  Philippe Brochard  <pbrochard@common-lisp.net>
1485         * netwm-util.lisp: Start of NetWM compliance.
1486         Add a Netwm client list gestion.
1488 2007-04-28  Philippe Brochard  <pbrochard@common-lisp.net>
1490         * clfswm-internal.lisp (create-group-on-request): open a new group
1491         only when the current group is not empty.
1493         * bindings-second-mode.lisp (define-second-key-#\o-control): Fix a
1494         bug with null workspace.
1496         * clfswm-pager.lisp (pager-handle-event): Add a hook
1497         system. This hooks can be changed in the user configuration file.
1499         * package.lisp: All colors and font variables are set in
1500         package.lisp and can be configured in the user configuration
1501         file.
1502         Note: If you have configured some less ugly colors (esp. for the
1503         pager) don't hesitate to let me know :)
1505         * clfswm-second-mode.lisp (sm-handle-event): Add a hook
1506         system. This hooks can be changed in the user configuration file.
1508         * clfswm.lisp (handle-event): Add a hook system. This hooks can be
1509         changed in the user configuration file (~/.clfswmrc)
1511 2007-04-25  Philippe Brochard  <pbrochard@common-lisp.net>
1513         * clfswm-util.lisp (stop-all-pending-actions): new function: reset
1514         arrow action, open next window in new workspace/group.
1516         * bindings.lisp (stop-all-pending-actions): new binding.
1517         (open-next-window-in-new-group-once): Open the next windows in a
1518         new group (only once) or open all new windows in a new group (like
1519         others windows managers).
1521 2007-04-22  Philippe Brochard  <pbrochard@common-lisp.net>
1523         * clfswm.lisp (read-conf-file): New function to read a lisp
1524         configuration file at startup.
1525         (focus-group-under-mouse): Check if group isn't the current group
1526         ( prevent a bug with unclutter ).
1528 2007-03-02  Philippe Brochard  <pbrochard@common-lisp.net>
1530         * bindings.lisp (run-program-from-query-string): A program can be
1531         launch from a input query window.
1533 2007-03-01  Philippe Brochard  <pbrochard@common-lisp.net>
1535         * clfswm-info.lisp: Fix a bug with banish pointer in info mode.
1537 2007-02-28  Philippe Brochard  <pbrochard@common-lisp.net>
1539         * clfswm.lisp (process-new-window): One can now open the next
1540         window in a workspace called by its number.
1542         * clfswm-util.lisp (query-font-string): Minimal editing
1543         capabilities.
1544         (eval-from-string): And an REPL in the window manager... :)
1546 2007-02-26  Philippe Brochard  <pbrochard@common-lisp.net>
1548         * clfswm.lisp (process-new-window): One can now open the next
1549         window in a new workspace or a new group.
1551         * clfswm-pager.lisp (pager-mode): Display the next arrow action
1552         with the hidden windows.
1554         * clfswm.lisp (second-key-mode): Display the current workspace
1555         number and the next arrow action in the state window.
1557         * clfswm-pager.lisp (pager-mode): Hide all windows before leaving
1558         the pager mode and then redisplay only the current workspace.
1560 2007-02-25  Philippe Brochard  <pbrochard@common-lisp.net>
1562         * clfswm.lisp (add-workspace): Workspaces are now numbered. So
1563         they can be focused with a keypress, sorted or renumbered.
1565 2007-02-24  Philippe Brochard  <pbrochard@common-lisp.net>
1567         * clfswm-pager.lisp (pager-mode): Remove multiple silly
1568         pager-draw-display. This prevent a lot of flickering in the
1569         pager.
1571         * clfswm.lisp: Remove all display-force-output and replace them
1572         with only one display-finish-output in the event loop.
1574 2006-11-06  Philippe Brochard  <pbrochard@common-lisp.net>
1576         * clfswm-pager.lisp (pager-center-group): New function - center a
1577         group at the middle of the screen.
1579         * clfswm-pack.lisp (center-group): New function - center a group
1580         at the middle of the screen.
1582         * clfswm.lisp (show-group): Add a cross line under the group.
1583         (show-group): Group are showned even if fullscreened.
1584         (init-display): Add an exposure event on the root window.
1586 2006-11-05  Philippe Brochard  <pbrochard@common-lisp.net>
1588         * package.lisp (*default-group*): Default group is the same size
1589         of a fullscreened group.
1591         * bindings*: Use shift to move, control+shift to copy.
1593         * *.lisp: Add comments for configuration or alternatives. So grep
1594         for CONFIG to see where you can configure clfswm. And grep for
1595         Alternative to use some commented code.
1597         * clfswm.lisp (second-key-mode): Use a single window to show the
1598         second mode. See for alternatives at the end of this file.
1600 2006-11-03  Philippe Brochard  <pbrochard@common-lisp.net>
1602         * clfswm-keys.lisp (define-define-key/mouse): Factorisation in a
1603         macro of key and mouse definitions.
1604         (define-define-key/mouse): Use state instead of modifiers list
1605         this fix a bug when the modifiers list is not in the rigth order.
1607         * clfswm.lisp (second-key-mode): Add a colored border in second mode.
1609 2006-11-02  Philippe Brochard  <pbrochard@common-lisp.net>
1611         * clfswm-info.lisp (info-mode): Add an info mode.
1613 2006-11-01  Philippe Brochard  <pbrochard@common-lisp.net>
1615         * clfswm.lisp (process-new-window): Change border size for
1616         transient windows.
1617         (show-all-windows-in-workspace): Unhide all windows even when the
1618         current group is in fullscreen mode.
1620 2006-10-26  Philippe Brochard  <pbrochard@common-lisp.net>
1622         * clfswm-util.lisp (identify-key): Add an exposure handle-event to
1623         redisplay the identify window after a terminal switch.
1625         * clfswm-pager.lisp (pager-mode): Add an exposure handle-event to
1626         redisplay the pager after a terminal switch.
1628 2006-10-24  Philippe Brochard  <pbrochard@common-lisp.net>
1630         * clfswm-util.lisp (identify-key): Add a window to display
1631         the keys to identify on screen.
1633         * bindings.lisp, bindings-pager.lisp: Define same keys to
1634         move/copy groups/windows in second mode and in pager.
1636         * clfswm.lisp (handle-event*): Same version in all clfswm (fix some
1637         drawing lags).
1638         (show-all-windows-in-workspace): unhide window before adapting it
1639         to group.
1641 2006-10-23  Philippe Brochard  <pbrochard@common-lisp.net>
1643         * clfswm.lisp (handle-event): Revert to an older version.
1645 2006-10-18  Philippe Brochard  <pbrochard@common-lisp.net>
1647         * clfswm-util.lisp (force-window-in-group)
1648         (force-window-center-in-group): New functions for transient windows.
1650         * clfswm-pager.lisp (pager-remove-current-workspace/group):
1651         bugfix: hide all windows before removing group or workspace.
1653 2006-10-17  Philippe Brochard  <pbrochard@common-lisp.net>
1655         * bindings-pager.lisp (mouse-pager-move-selected-group)
1656         (mouse-pager-copy-selected-group)
1657         (mouse-pager-move-selected-window)
1658         (mouse-pager-copy-selected-window, mouse-pager-rotate-window-up)
1659         (mouse-pager-rotate-window-down): New functions to have mouse in
1660         pager mode.
1662         * clfswm-pager.lisp (pager-swap-window)
1663         (pager-copy-group-on-next/previous-workspace)
1664         (pager-copy-window-on-next/previous-line): New functions
1666 2006-10-15  Philippe Brochard  <pbrochard@common-lisp.net>
1668         * clfswm-pager.lisp (pager-move-window-on-next/previous-line,
1669         (pager-move-group-on-next/previous-workspace): new functions.
1671         * clfswm-pack.lisp (resize-half-x-x-current-group): resize group
1672         to its half size (new functions).
1674 2006-10-11  Philippe Brochard  <pbrochard@common-lisp.net>
1676         * clfswm-pager.lisp: workspaces, groups and windows can now be
1677         selectionned with the keyboard or the mouse.
1679 2006-10-09  Philippe Brochard  <pbrochard@common-lisp.net>
1681         * clfswm-pager.lisp (pager-select-workspace-right/left):
1682         workspaces can now be selectionned with the keyboard.
1684 2006-10-08  Philippe Brochard  <pbrochard@common-lisp.net>
1686         * clfswm-keys.lisp (undefine-main-key, undefine-second-key, undefine-mouse-action):
1687         new function to remove a previous defined key or mouse combination.
1689 2006-10-07  Philippe Brochard  <pbrochard@common-lisp.net>
1691         * clfswm.lisp (main): Check for access error in init-display.
1693         * clfswm-keys.lisp (define-ungrab/grab): check for keysym and
1694         keycode before grabbing.
1696         * bindings.lisp: Remove nlambda and use defun to keep the function
1697         documentation with clisp.
1698         (define-shell): new macro to define shell command for the second
1699         mode.
1701 2006-10-06  Philippe Brochard  <pbrochard@common-lisp.net>
1703         * clfswm-keys.lisp (define-ungrab/grab): use a cond instead of a
1704         boggus typecase.
1706 2006-10-05  Philippe Brochard  <pbrochard@common-lisp.net>
1708         * bindings.lisp (accept-motion): Move group bugfix in upper mouse
1709         workspace circulation.
1711         * clfswm-util.lisp (absorb-orphan-window): new function.
1713         * clfswm-keys.lisp: Keysyms support.
1715 2006-10-02  Philippe Brochard  <pbrochard@common-lisp.net>
1717         * clfswm.lisp (show-group): Use one gc for all groups and not one
1718         per group.
1720 2006-10-01  Philippe Brochard  <pbrochard@common-lisp.net>
1722         * bindings.lisp (define-second-key (#\l :mod-1)): fix a typo.
1724         * clfswm.lisp (adapt-window-to-group): Adapt only windows with
1725         width and height outside group.
1727 2006-09-28  Philippe Brochard  <pbrochard@common-lisp.net>
1729         * clfswm.lisp: First public release.