set-globally-hide-unmanaged-window, set-globally-show-unmanaged-window: New functions...
[clfswm.git] / ChangeLog
blob0a8f51a4c10284a784785de6d5433583d0a73cde
1 2010-09-11  Philippe Brochard  <pbrochard@common-lisp.net>
3         * src/clfswm-util.lisp (set-hide-unmanaged-window)
4         (set-show-unmanaged-window, set-default-hide-unmanaged-window):
5         New functions and menu entry.
6         (set-globally-hide-unmanaged-window)
7         (set-globally-show-unmanaged-window): New functions and menu
8         entry.
10         * src/clfswm-internal.lisp (hide-unmanager-window-p): New
11         function.
12         (show-child): Add a data slot on frame to hide or not unmanaged
13         windows.
15         * src/clfswm-corner.lisp (present-clfswm-terminal)
16         (present-virtual-keyboard): Use a function (generic-present-body)
17         instead of a macro (generate-present-body).
19         * src/clfswm-util.lisp (update-menus): List all directories and
20         subdirectories in $XDG_DATA_DIRS/applications.
22 2010-09-10  Philippe Brochard  <pbrochard@common-lisp.net>
24         * src/clfswm-corner.lisp (generate-present-body): New macro.
25         (present-clfswm-terminal, present-virtual-keyboard): Use
26         generate-present-body.
28 2010-09-09  Philippe Brochard  <pbrochard@common-lisp.net>
30         * src/clfswm-util.lisp (update-menus): Follow XDG specifications
31         instead of the non-portable Debian update-menu.
33 2010-09-07  Philippe Brochard  <pbrochard@common-lisp.net>
35         * src/clfswm.lisp (error-handler): New function do handle
36         asynchronous errors and ignore them.
37         (open-display): Install the new error-handler on display.
39 2010-09-05  Philippe Brochard  <pbrochard@common-lisp.net>
41         * src/xlib-util.lisp (with-xlib-protect): Add a
42         with-simple-restart on top of body execution.
44 2010-09-04  Philippe Brochard  <pbrochard@common-lisp.net>
46         * src/clfswm.lisp (main-loop): Protect all xlib functions with an
47         with-xlib-protect.
49         * src/xlib-util.lisp (handle-event): use with-xlib-protect only in
50         handle-event. Add a with-simple-restart to prevent a
51         clisp/new-lisp infinite loop.
53 2010-08-30  Philippe Brochard  <pbrochard@common-lisp.net>
55         * src/clfswm-corner.lisp (present-clfswm-terminal): Make the
56         clfswm terminal working even on xterm title changes.
58 2010-08-29  Philippe Brochard  <pbrochard@common-lisp.net>
60         * src/clfswm-util.lisp (run-other-window-manager): Update for
61         clisp compatibility.
63         * src/tools.lisp (do-execute): New parameter io to change the
64         input/output method.
66         * src/clfswm-util.lisp (hide-current-child): Prevent from removing
67         the current root.
69         * src/clfswm-internal.lisp (child-member): New predicate.
70         (child-remove): New function.
72         * src/*.lisp: Use child-member and child-remove everywhere it's
73         needed.
75 2010-08-28  Philippe Brochard  <pbrochard@common-lisp.net>
77         * src/clfswm.lisp (main-loop): Ensure that all events have been
78         processed after a process-event.
80         * src/clfswm-internal.lisp (is-in-current-child-p): New function.
82 2010-08-27  Philippe Brochard  <pbrochard@common-lisp.net>
84         * src/clfswm.lisp (main-mode:configure-request): Raise the window
85         only when present on the current child and focus it accordingly.
87 2010-08-26  Philippe Brochard  <pbrochard@common-lisp.net>
89         * src/clfswm-circulate-mode.lisp (circulate-loop-function):
90         Use is-a-key-pressed-p.
92         * src/xlib-util.lisp (is-a-key-pressed-p): New predicate.
94         * src/clfswm-keys.lisp (define-ungrab/grab): Use all values
95         returned by xlib:keysym->keycodes.
97         * src/*.lisp: Use the new child-equal-p to compare children. This
98         prevent a bug with sbcl/cmucl when the standard equal function
99         does not work with xlib:window.
101         * src/clfswm-internal.lisp (child-equal-p): New predicate.
103 2010-08-25  Philippe Brochard  <pbrochard@common-lisp.net>
105         * src/clfswm-generic-mode.lisp (generic-mode): Use an
106         xlib:event-listen before processing event with
107         xlib:process-event. This prevent a bug with CLX threaded
108         implementation like sbcl.
110         * src/clfswm.lisp (main-loop): Use an xlib:event-listen before
111         processing event with xlib:process-event. This prevent a bug with
112         CLX threaded implementation like sbcl.
114 2010-08-17  Philippe Brochard  <pbrochard@common-lisp.net>
116         * contrib/server/key.lisp (ushell-sh): Add ccl and ecl support.
118         * src/xlib-util.lisp (compress-motion-notify): Use a loop instead
119         of an event-case.
121         * src/clfswm-internal.lisp (with-find-in-all-frames): New macro.
122         (find-parent-frame, find-frame-window, find-frame-by-name)
123         (find-frame-by-number): Use with-find-in-all-frames to search in
124         frames in the right order.
126         * src/clfswm-util.lisp (mouse-click-to-focus-generic): Fix an
127         unwanted flickering with unmanaged windows.
129 2010-08-16  Philippe Brochard  <pbrochard@common-lisp.net>
131         * src/package.lisp: Remove event handler hooks as they're not
132         needed anymore (To replace them: use closure and define-handler).
134         * src/xlib-util.lisp (move-window, resize-window)
135         (wait-mouse-button-release): Use a generic mode.
137         * src/*.lisp: Replace the case to handle event with a more (tricky)
138         lispy  method which bind a function to each keywords associated
139         to graphics events.
141 2010-07-23  Philippe Brochard  <pbrochard@common-lisp.net>
143         * src/clfswm-util.lisp (delete-current-child): Invert bindings and
144         menu entry between delete-current-child and remove-current-child.
145         ie: Delete a child and its children in all frames by default.
147 2010-07-21  Philippe Brochard  <pbrochard@common-lisp.net>
149         * src/package.lisp: Add a placement configuration group.
151         * src/binding*.lisp: Bind control+g to escape the current action
152         like emacs.
154         * src/clfswm-internal.lisp
155         (delete-child-and-children-in-all-frames): New function and
156         binding: Second mode - Control+Delete delete the current child and
157         its children in all frames (ie: close the current child and its
158         children).
160 2010-07-20  Philippe Brochard  <pbrochard@common-lisp.net>
162         * src/clfswm-internal.lisp (remove-child-in-frame): Do not destroy
163         the frame window and the frame gc. Close a very annoying bug when
164         cuting/pasting a frame or moving a child over frames with the
165         mouse.
167         * src/clfswm-util.lisp (mouse-click-to-focus-generic): Redisplay
168         all children in *current-root* after moving/resizing a frame.
170 2010-07-18  Philippe Brochard  <pbrochard@common-lisp.net>
172         * src/clfswm-util.lisp (delete-focus-window)
173         (destroy-focus-window): Remove child in parent frame before
174         stopping it.
176 2010-07-16  Philippe Brochard  <pbrochard@common-lisp.net>
178         * src/clfswm-util.lisp (identify-key): Add a timeout in
179         xlib:process-event.
180         (mouse-click-to-focus-generic): Use find-child-under-mouse instead
181         of the window passed by xlib:process-event.
183         * src/xlib-util.lisp (move-window, resize-window)
184         (wait-mouse-button-release): Add a timeout in xlib:process-event.
186 2010-04-11  Philippe Brochard  <pbrochard@common-lisp.net>
188         * src/clfswm-util.lisp (run-other-window-manager): Add the ability
189         to launch an other window manager and to return to clfswm.
191 2010-03-18  Philippe Brochard  <pbrochard@common-lisp.net>
193         * src/clfswm-layout.lisp (set-tile-space-layout): Set default
194         to 1%.
196 2009-12-15  Philippe Brochard  <pbrochard@common-lisp.net>
198         * src/clfswm.lisp (main-loop): Add a *loop-hook* parameter and a
199         loop timeout.
201         * src/clfswm-generic-mode.lisp (generic-mode): Add a loop-hook
202         parameter and a loop timeout.
204 2009-12-05  Philippe Brochard  <pbrochard@common-lisp.net>
206         * src/clfswm.lisp (main): Add an alternate configuration filename
207         parameter.
209         * load.lisp: Add a debuging code example.
211 2009-11-14  Philippe Brochard  <pbrochard@common-lisp.net>
213         * src/clfswm-configuration.lisp (create-configuration-menu): New
214         menu to configure all clfswm variables while clfswm is running.
216 2009-11-12  Philippe Brochard  <pbrochard@common-lisp.net>
218         * src/clfswm-util.lisp (save-configuration-variables): New
219         function to save all configuration variables in clfswmrc.
221 2009-11-11  Philippe Brochard  <pbrochard@common-lisp.net>
223         * src/clfswm-info.lisp (info-mode): Begining of mouse support in
224         info mode.
225         (set-default-info-keys): Add cursor key support in info mode.
227 2009-11-08  Philippe Brochard  <pbrochard@common-lisp.net>
229         * contrib/reboot-halt.lisp: Add a Suspend/Reboot/Halt menu in
230         contrib.
232         * src/clfswm.lisp (main): Add a read-conf-file-p parameter to
233         prevent reading the configuration file (this may be useful to
234         produce the original documentation without user modifications
235         with the rc configuration file).
237 2009-11-07  Philippe Brochard  <pbrochard@common-lisp.net>
239         * src/bindings-second-mode.lisp (set-default-second-keys):
240         Simplification of Escape key to close/kill/remove the focus window
241         and unhide all windows.
243         * src/bindings.lisp (set-default-main-keys): Simplification of
244         Escape key to close/kill/remove the focus window and unhide all
245         windows.
247         * src/clfswm-util.lisp (ask-close/kill-current-window): Add remove
248         focus and unhide all windows capabilities.
250 2009-10-10  Philippe Brochard  <pbrochard@common-lisp.net>
252         * contrib/mpd.lisp (start-gmpc): Add gmpc in the mpd menu.
254 2009-07-29  Philippe Brochard  <pbrochard@common-lisp.net>
256         * src/clfswm-layout.lisp (tile-layout, tile-horizontal-layout):
257         Keep child order and don't make unnecessary child movement.
258         (one-column-layout, one-line-layout): New layouts.
260 2009-06-29  Philippe Brochard  <pbrochard@common-lisp.net>
262         * contrib/cd-player.lisp: New file to handle the CD player.
264         * contrib/xmms.lisp: New file to handle the xmms player.
266 2009-06-28  Philippe Brochard  <pbrochard@common-lisp.net>
268         * src/clfswm-layout.lisp (set-no-layout-remember-size): New layout:
269         Maximize windows in there frame - Leave frames to there actual
270         size.
272         * src/bindings-second-mode.lisp (set-default-second-keys): Bind
273         "o" on set-open-in-new-frame-in-parent-frame-nw-hook.
275 2009-06-27  Philippe Brochard  <pbrochard@common-lisp.net>
277         * contrib/keyb_fr.lisp: New file to handle an azerty keyboard.
279 2009-06-24  Philippe Brochard  <pbrochard@common-lisp.net>
281         * contrib/mpd.lisp: Use a standard menu.
283         * src/clfswm-info.lisp: Use a standard menu for the help-menu.
285 2009-06-22  Philippe Brochard  <pbrochard@common-lisp.net>
287         * contrib/mpd.lisp: New file to handle the Music Player Daemon (MPD)
289 2009-06-19  Philippe Brochard  <pbrochard@common-lisp.net>
291         * src/clfswm-autodoc.lisp (produce-doc, produce-doc-html): Minor
292         number key cleanup.
294 2009-06-18  Philippe Brochard  <pbrochard@common-lisp.net>
296         * src/config.lisp (get-fullscreen-size):  One pixel adjustment
297         (again).
299         * src/clfswm-placement.lisp (*-child-placement): One pixel
300         adjustment (again).
302 2009-06-16  Philippe Brochard  <pbrochard@common-lisp.net>
304         * src/clfswm-circulate-mode.lisp (draw-circulate-mode-window):
305         Ensure that all characters are printable.
307         * src/config.lisp (get-fullscreen-size): Adjust default fullscreen
308         sizes.
310         * src/clfswm-placement.lisp (*-child-placement): Adjust
311         coordinates to one pixel in the current child.
313 2009-06-04  Philippe Brochard  <pbrochard@common-lisp.net>
315         * src/clfswm-query.lisp (query-enter-function): Assign font before
316         width and height calculation.
318 2009-06-03  Philippe Brochard  <pbrochard@common-lisp.net>
320         * src/xlib-util.lisp (banish-pointer): Use with-placement macro to
321         bannish the pointer in an arbitrary place.
323         * src/clfswm-info.lisp (info-mode): Use with-placement macro to
324         place the info window in an arbitrary place.
326         * src/clfswm-query.lisp (query-enter-function): Use with-placement
327         macro to place the query window in an arbitrary place.
329         * src/clfswm-placement.lisp: New file. Allow to place info windows
330         or query windows on an arbitrary place. Allow to bannish the
331         pointer on an arbitrary place.
333 2009-05-16  Philippe Brochard  <pbrochard@common-lisp.net>
335         * src/clfswm-circulate-mode.lisp (reorder-child)
336         (reorder-brother): Unfocus windows before reordering children or
337         brothers.
339 2009-05-13  Philippe Brochard  <pbrochard@common-lisp.net>
341         * src/clfswm-circulate-mode.lisp (reorder-brother): Ensure that
342         the parent is a frame.
344         * src/clfswm-second-mode.lisp (sm-handle-motion-notify): Handle
345         motion with a default modifier.
347         * src/clfswm.lisp (handle-motion-notify): Handle motion with a
348         default modifier.
350         * src/clfswm-info.lisp (info-mode): Handle motion with a default
351         modifier.
352         (info-mode): Optimization in loop function.
354 2009-05-10  Philippe Brochard  <pbrochard@common-lisp.net>
356         * src/clfswm-circulate-mode.lisp (reorder-brother): Handle
357         root-frame correctly.
359         * clfswm.asd: Dependency fix for clfswm-generic-mode.
361         * src/clfswm-circulate-mode.lisp (reorder-child)
362         (reorder-brother): Handle empty frames.
363         (reorder-brother): Redisplay only the parent frame of the  current
364         child.
366         * src/clfswm-util.lisp (frame-toggle-maximize): Redisplay only the
367         parent frame of the  current frame.
369 2009-05-09  Philippe Brochard  <pbrochard@common-lisp.net>
371         * src/clfswm-util.lisp (frame-toggle-maximize): New function:
372         Maximize/Unmaximize the current frame in its parent frame.
374         * src/clfswm-layout.lisp (maximize-layout): New layout: Maximize
375         windows and frames in there parent frame.
377 2009-05-05  Philippe Brochard  <pbrochard@common-lisp.net>
379         * src/*.lisp: Add support for Clozure Common Lisp (CCL).
381         * src/clfswm-circulate-mode.lisp (reorder-child)
382         (reorder-brother): Reinitialise on circulate type change
383         child to brother or brother to child.
385         * src/*.lisp (*): Use map-window instead of xlib:map-window. So
386         calls xlib:display-finish-output on each map-request. So speed up
387         the window display.
389         * src/xlib-util.lisp (map-window): New function. Call
390         xlib:display-finish-output on each map request.
392 2009-04-28  Philippe Brochard  <pbrochard@common-lisp.net>
394         * src/clfswm-second-mode.lisp (sm-handle-motion-notify):
395         Optimisation when drawing second mode window.
397 2009-04-27  Philippe Brochard  <pbrochard@common-lisp.net>
399         * src/clfswm-circulate-mode.lisp (circulate-mode): Optimisation in
400         window redraw.
402 2009-04-22  Philippe Brochard  <pbrochard@common-lisp.net>
404         * src/clfswm-util.lisp (run-program-from-query-string): Launch
405         command only with a return validation.
407 2009-04-22  Xavier Maillard  <xma@gnu.org>
409         * src/clfswm-query.lisp (query-string): Use a generic mode.
411 2009-04-19  Xavier Maillard  <xma@gnu.org>
413         * src/clfswm-info.lisp (info-mode): Use generic-mode for info-mode.
415 2009-04-18  Xavier Maillard  <xma@gnu.org>
417         * src/clfswm-generic-mode.lisp (generic-mode): Add a generic mode
418         to define all other modes.
420 2009-04-05  Philippe Brochard  <pbrochard@common-lisp.net>
422         * src/package.lisp (): Use *default-font-string* for all
423         font-string.
425         * src/clfswm-info.lisp (info-mode): Ensure integer windows size.
427 2009-02-17  Philippe Brochard  <pbrochard@common-lisp.net>
429         * src/xlib-util.lisp (null-size-window-p): Better check of null
430         sized windows.
432 2009-02-14  Philippe Brochard  <pbrochard@common-lisp.net>
434         * src/clfswm.lisp (handle-map-request): Add a fix to manage
435         correctly fullscreen windows (SDL particularly).
437 2008-12-20  Philippe Brochard  <pbrochard@common-lisp.net>
439         * src/xlib-util.lisp (get-color): Allocate colors only once -> fix
440         a segfault with clisp/new-clx.
442         * src/clfswm.lisp (handle-motion-notify): Add a needed window
443         argument.
445         * src/clfswm-second-mode.lisp (sm-handle-motion-notify): Add a
446         needed window argument.
448 2008-10-30  Philippe Brochard  <pbrochard@common-lisp.net>
450         * src/xlib-util.lisp (wait-no-key-or-button-press)
451         (wait-a-key-or-button-press): Check buttons press/release correctly"
453 2008-10-28  Philippe Brochard  <pbrochard@common-lisp.net>
455         * src/menu-def.lisp: Add children navigation menu in the movement
456         menu (select next/previous child/brother/level).
458 2008-10-26  Philippe Brochard  <pbrochard@common-lisp.net>
460         *  *: Rename 'sister' frame to 'brother' frame.
462         * src/clfswm-keys.lisp (unalias-modifiers): Convert a modifier
463         alias in a real modifier.
465         * src/package.lisp (*modifier-alias*): New list of modifier alias
466         For example: :alt is :mod-1, :numlock is :mod-2...
468         * src/tools.lisp (remove-hook): New function.
470         * src/clfswm-keys.lisp (with-capslock, without-capslock)
471         (with-numlock, without-cnumlock): New functions.
473 2008-10-25  Philippe Brochard  <pbrochard@common-lisp.net>
475         * src/clfswm-info.lisp: Use the *binding-hook* to create info
476         keys and mouse bindings.
478         * src/bindings-second-mode.lisp: Use the *binding-hook* to create
479         second keys and mouse bindings.
481         * src/bindings.lisp: Use the *binding-hook* to create main keys
482         and mouse bindings.
484 2008-10-10  Philippe Brochard  <pbrochard@common-lisp.net>
486         * src/clfswm-menu.lisp (open-menu): Remember parent menu to undo
487         menu opening.
489 2008-10-09  Philippe Brochard  <pbrochard@common-lisp.net>
491         * src/menu-def.lisp: Use a menu instead of a function for the
492         standard menu.
494 2008-10-08  Philippe Brochard  <pbrochard@common-lisp.net>
496         * src/clfswm-util.lisp (show-standard-menu): Display the standard
497         menu from the 'update-menus' command.
499 2008-10-07  Philippe Brochard  <pbrochard@common-lisp.net>
501         * src/clfswm-query.lisp (query-string): Do not ungrab keyboard if
502         it's already grabbed.
504         * src/clfswm-internal.lisp (display-frame-info): Use configurable
505         colors and fix a bug with background.
506         (display-frame-info): Set window background when displaying info.
508 2008-10-06  Philippe Brochard  <pbrochard@common-lisp.net>
510         * src/xlib-util.lisp (my-character->keysyms): Use a macro to avoid
511         warning with clisp/new-clx.
513 2008-10-04  Philippe Brochard  <pbrochard@common-lisp.net>
515         * src/clfswm-util.lisp (jump-to-slot): Prevent to jump on a
516         deleted child.
518 2008-09-23  Philippe Brochard  <pbrochard@common-lisp.net>
519         * *: **** Release 0809 ****
521 2008-09-23  Philippe Brochard  <pbrochard@common-lisp.net>
523         * src/clfswm-util.lisp (ensure-unique-name): New function and menu
524         entry.
525         (ensure-unique-number): New function and menu entry.
527 2008-09-22  Philippe Brochard  <pbrochard@common-lisp.net>
529         * src/clfswm-nw-hooks.lisp (named-frame-nw-hook): New new window
530         hook: open the next window in a named frame.
531         (numbered-frame-nw-hook): New new window hook: open the next
532         window in a numbered frame.
534         * src/clfswm-query.lisp (query-string): Grab the keyboard in all
535         cases. So query-string can be called even in the main mode.
537         * src/clfswm-internal.lisp (show-all-children): Do not raise a
538         child by default => far less flickering.
540 2008-09-19  Philippe Brochard  <pbrochard@common-lisp.net>
542         * src/bindings-second-mode.lisp: Bind "t" to tile-current-frame.
544         * src/menu-def.lisp: Change key binding for the CLFSWM menu
545         entry.
547         * src/xlib-util.lisp (xgrab-pointer): Handle the case where cursor
548         is nil. (workaround on some CLX implementation).
550 2008-09-12  Philippe Brochard  <pbrochard@common-lisp.net>
552         * src/menu-def.lisp: Add a menu to set a focus policy for all
553         frames.
555         * src/clfswm-util.lisp (set-focus-policy-generic-for-all)
556         (all-frames-set-*-focus-policy): Set a focus policy for all
557         frames.
559         * src/clfswm.lisp (handle-enter-notify): sloppy-select
560         mode. Select a child and its parents on mouse over.
562 2008-09-03  Philippe Brochard  <pbrochard@common-lisp.net>
564         * src/clfswm.lisp (handle-enter-notify): Add a sloppy strict focus
565         policy -> Sloppy focus only for windows in the current frame.
566         (main-unprotected): Exit clfswm on init error (ie: when another
567         window manager is running).
569         * src/clfswm-util.lisp (reset-clfswm): New function.
571 2008-09-02  Philippe Brochard  <pbrochard@common-lisp.net>
573         * src/clfswm-menu.lisp (init-menu): New function.
575         * src/clfswm-util.lisp (reload-clfswm): New function to reload
576         CLFSWM.
577         (exit-clfswm): Rename quit-clfswm to exit-clfswm.
579         * src/clfswm.lisp (main, main-unprotected): Handle error in a
580         superior main function. Now CLFSWM can't break the X session. It
581         just reinitialize the display and run a new main loop.
583         * src/clfswm-corner.lisp: Make *clfswm-terminal* and
584         *vt-keyboard-on* global to avoid warnings when loading clfswm.
586         * src/clfswm-layout.lisp: Add a specific GIMP layout menu.
587         (help-on-gimp-layout): Describe how to use the GIMP layout.
589 2008-09-01  Philippe Brochard  <pbrochard@common-lisp.net>
591         * src/clfswm-layout.lisp (set-gimp-layout): Change the layout to
592         main-window-right-layout. Change the keybinding for (shift)alt+tab
593         to not select windows in the main window lisst.
594         Bind F8 to add a window in the main window list.
595         Bind F9 to remove a window in the main window list.
596         Change the focus policy to :sloppy.
597         (set-previous-layout): Restore the previous layout, keybinding and
598         focus policy.
600 2008-08-31  Philippe Brochard  <pbrochard@common-lisp.net>
602         * src/clfswm-menu.lisp (add-menu-comment): Add comments in menu.
604         * src/clfswm-layout.lisp (main-window-left-layout)
605         (main-window-bottom-layout, main-window-top-layout): New
606         functions.
607         Factorize layouts in menu.
609 2008-08-30  Philippe Brochard  <pbrochard@common-lisp.net>
611         * src/clfswm-layout.lisp (main-window-right-layout): A possible
612         GIMP layout: one or more main windows on one side of the
613         frame. Others on the other size.
615         * src/clfswm-util.lisp
616         (current-frame-set-click/sloppy-focus-policy): Each frame can have
617         a different focus policy (one of :click or :sloppy).
618         The default focus policy is set with *default-focus-policy*.
620 2008-08-23  Philippe Brochard  <pbrochard@common-lisp.net>
622         * src/clfswm-info.lisp (show-config-variable): New function.
624 2008-08-19  Philippe Brochard  <pbrochard@common-lisp.net>
626         * src/clfswm-layout.lisp (tile-horizontal-layout): New layout.
628         * src/clfswm-info.lisp: Colored help for key binding and corners
629         actions.
631 2008-08-18  Philippe Brochard  <pbrochard@common-lisp.net>
633         * src/clfswm-util.lisp (delete-focus-window)
634         (destroy-focus-window): Remove chid only in
635         handle-unmap/destroy-notify. Focus *current-root* only when
636         closing/killing the current child.
638         * src/clfswm-autodoc.lisp (produce-corner-*-doc): New autodoc
639         functions or corners.
641 2008-08-17  Philippe Brochard  <pbrochard@common-lisp.net>
643         * src/clfswm-corner.lisp (present-clfswm-terminal): New corner
644         action: Hide/Unhide a terminal on mouse corner action. (By default
645         right mouse button on the top left corner).
647         * src/config.lisp (*never-managed-window-list*): New config
648         variable.
650         * src/clfswm-internal.lisp (never-managed-window-p): New function:
651         Handle never managed window in a more simple way.
653         * src/clfswm-corner.lisp: New file and new and more simple method
654         to define corners actions.
656 2008-08-15  Philippe Brochard  <pbrochard@common-lisp.net>
658         * src/clfswm-info.lisp (info-mode): Info line can now be colored.
660         * src/clfswm-layout.lisp (fast-layout-switch)
661         (define-fast-layout-switch): New functions: Switch between two
662         layouts.
664         * src/clfswm-second-mode.lisp (leave-second-mode): Takes care if
665         really in the second mode. So leave-second-mode can be used even
666         in the main mode.
668         * src/clfswm-util.lisp (switch-to-last-child): New function:
669         Store the current child and switch to the previous one.
671 2008-07-16  Philippe Brochard  <pbrochard@common-lisp.net>
673         * src/clfswm-util.lisp (display-current-window-info): Display the
674         window id.
675         (have-to-present-virtual-keyboard): Add a virtual keyboard corner
676         (top right by default). By default 'xvkbd' is used.
678 2008-06-28  Philippe Brochard  <pbrochard@common-lisp.net>
680         * src/xlib-util.lisp (move-window, resize-window): Compress motion
681         events.
683         * src/clfswm.lisp (handle-motion-notify): Compress motion events.
685         * src/clfswm-second-mode.lisp (sm-handle-motion-notify): Compress
686         motion events.
688         * src/clfswm-info.lisp (info-mode): Compress motion events.
690 2008-06-21  Philippe Brochard  <pbrochard@common-lisp.net>
692         * src/clfswm-internal.lisp (show-all-children): Compute geometry
693         and selection first and then show only necessary children.
694         (show-child): remove unneeded display-p parameter.
696         * src/config.lisp (get-fullscreen-size): Place the frame border
697         outside the screen (this prevent the loose of 2 pixels per
698         directions :)
700 2008-06-12  Philippe Brochard  <pbrochard@common-lisp.net>
702         * src/clfswm-internal.lisp (focus-child): Algorithm change to
703         raise only the selected child.
705 2008-06-08  Philippe Brochard  <pbrochard@common-lisp.net>
707         * src/clfswm-internal.lisp (raise-p-list, show-all-children):
708         Raise only viewable children.
710 2008-06-06  Philippe Brochard  <pbrochard@common-lisp.net>
712         * src/clfswm-internal.lisp (show-all-children): Always raise all
713         displayed children. Remove all references to raise-p.
715 2008-06-04  Philippe Brochard  <pbrochard@common-lisp.net>
717         * src/menu-def.lisp (child-menu): New menu entry on raise/lower
718         child in its frame.
720         * src/bindings-second-mode.lisp ("Page_Down", "Page_Up"): New
721         second mode binding on raise/lower child in its frame.
723         * src/clfswm-nw-hooks.lisp (leave-focus-frame-nw-hook): Adapt
724         behaviour to the new raise/lower property.
725         Call clear-nw-hook before the rest of the hook.
727         * src/bindings.lisp (mouse-click-to-focus-and-move-window)
728         (mouse-click-to-focus-and-resize-window): Stop button event. This
729         prevent a keyboard/pointer freeze.
731 2008-06-03  Philippe Brochard  <pbrochard@common-lisp.net>
733         * src/clfswm-internal.lisp (frame-lower-child)
734         (frame-raise-child): New functions to raise/lower a child in its
735         frame.
737         * src/clfswm-util.lisp (have-to-present-windows)
738         (have-to-present-all-windows): New functions to have an MaxOS
739         expose like on mouse click in screen corner.
741         * src/clfswm-info.lisp ("Page_Down", "Page_Up"): Add boundaries.
743 2008-05-30  Philippe Brochard  <pbrochard@common-lisp.net>
745         * src/clfswm-util.lisp (unhide-a-child-from-all-frames): Unhide a
746         child from a choice in all frames with hidden children.
748         * src/clfswm-info.lisp (info-mode-menu): Handle separators.
750 2008-05-28  Philippe Brochard  <pbrochard@common-lisp.net>
752         * src/clfswm-util.lisp (hide-current-child, unhide-a-child)
753         (unhide-all-children): New functions.
755         * src/clfswm-info.lisp (info-mode-menu): Handle symbols and
756         functions.
758         * src/clfswm-util.lisp (hide/show-frame-window): new function and
759         menu item.
761 2008-05-23  Philippe Brochard  <pbrochard@common-lisp.net>
763         * src/clfswm-util.lisp (rename-current-child): Do not display the
764         frame info for a window.
766 2008-05-20  Philippe Brochard  <pbrochard@common-lisp.net>
768         * src/clfswm-internal.lisp (remove-child-in-frame): Destroy the
769         frame window for the removed child and its children.
771 2008-05-18  Philippe Brochard  <pbrochard@common-lisp.net>
773         * src/clfswm-autodoc.lisp (produce-*-doc-*): Add a note to use the
774         autodoc functions.
776 2008-05-17  Philippe Brochard  <pbrochard@common-lisp.net>
778         * src/clfswm-nw-hooks.lisp (default-frame-nw-hook): Do not handle
779         the ROX pinboard (ie: leave it lowered in the root window as
780         expected).
782         * src/clfswm-layout.lisp (tile-left-space-layout): New layout.
783         (tile-left-layout, tile-right-layout, tile-top-layout)
784         (tile-bottom-layout): Use all the frame space when there is only
785         one child.
787         * src/clfswm-internal.lisp (place-window-from-hints): Center
788         unmanaged windows in the root screen.
790         * src/clfswm-nw-hooks.lisp (clear-nw-hook, clear-all-nw-hooks):
791         new functions.
793 2008-05-15  Philippe Brochard  <pbrochard@common-lisp.net>
795         * src/clfswm-util.lisp (current-frame-manage-window-type): Fix a
796         typo in managed types.
798         * src/clfswm-internal.lisp (show-child): Always display frame info
799         even if the frame is hidden.
801         * src/xlib-util.lisp (resize-window): Use a better algorithme to
802         resize windows.
804 2008-05-13  Philippe Brochard  <pbrochard@common-lisp.net>
806         * src/clfswm-util.lisp (with-movement): Display frame info for all
807         frames in current root.
809 2008-05-12  Philippe Brochard  <pbrochard@common-lisp.net>
811         * src/*.lisp: Rename 'brother' frames to 'sister' frames.
813         * src/bindings-second-mode.lisp (define-second-key #\a): New
814         binding on 'add-default-frame'.
816         * src/clfswm-autodoc.lisp (produce-*-doc-*-in-file): Show a
817         message to follow the autodocumentation process.
819 2008-05-10  Philippe Brochard  <pbrochard@common-lisp.net>
821         * src/clfswm-util.lisp (bind-or-jump): Bind "Tab", "Return" and
822         "Space" to jump to a child. "B" to bind a slot on the current
823         child.
825         * src/bindings-second-mode.lisp: Use "Tab" instead of
826         "Iso_Left_Tab".
828 2008-05-07  Philippe Brochard  <pbrochard@common-lisp.net>
830         * src/clfswm-util.lisp (find-child-under-mouse): Take care of
831         unmanaged (hidden) windows.
833         * src/clfswm-internal.lisp (place-window-from-hints): Give a
834         minimal size for windows.
835         (with-all-windows-frames-and-parent): New function.
837         * src/config.lisp (*default-window-width/height*): New parameters.
839         * src/clfswm-internal.lisp (place-window-from-hints): Center
840         windows in the screen instead of in there frame.
842         * src/bindings-second-mode.lisp (tile-space-current-frame): New
843         binding on C-t.
845         * src/clfswm-layout.lisp (register-layout): Intern the once name
846         in the right package.
848 2008-05-05  Philippe Brochard  <pbrochard@common-lisp.net>
850         * doc/dot-clfswmrc: Update to  follow the new clfswm way.
852 2008-05-03  Philippe Brochard  <pbrochard@common-lisp.net>
854         * src/clfswm-internal.lisp (set-current-child)
855         (adapt-child-to-parent, show-child, hide-child): Handle the case
856         where child is not a frame or a window.
858         * src/clfswm-util.lisp
859         (mouse-click-to-focus-generic,mouse-focus-move/resize-generic):
860         Check if child is a frame.
862         * src/clfswm-internal.lisp (managed-window-p): Handle the case
863         where frame is null.
864         (place-frame): Check if frame and parent are frames.
866         * src/clfswm-info.lisp (info-mode): display all frame info before
867         leaving.
869         * src/clfswm-second-mode.lisp (second-key-mode): display all frame
870         info before leaving.
872         * src/clfswm-internal.lisp (display-all-frame-info): New function.
874 2008-05-02  Philippe Brochard  <pbrochard@common-lisp.net>
876         * src/tools.lisp (getenv): Implemented for ECL.
877         (urun-prog): Implemented for ECL.
879         * src/clfswm-util.lisp (identify-key): Use a double buffer to
880         display text.
882         * src/clfswm-query.lisp (query-string): Use a double buffer to
883         display text.
885         * src/clfswm-info.lisp (draw-info-window): Use a double buffer to
886         display text.
888         * src/xlib-util.lisp (clear-pixmap-buffer, copy-pixmap-buffer):
889         New functions.
891 2008-05-01  Philippe Brochard  <pbrochard@common-lisp.net>
893         * src/clfswm-info.lisp (info-mode): Add boundaries in the info mode window.
895         * src/menu-def.lisp: New file: move all menu definition in
896         menu-def.lisp.
898         * src/clfswm-layout.lisp (register-layout): Use a function instead
899         of a macro.
901 2008-04-30  Philippe Brochard  <pbrochard@common-lisp.net>
903         * src/clfswm-autodoc.lisp (produce-menu-doc,
904         (produce-menu-doc-html): New functions.
905         (produce-doc-*): Moved to clfswm-autodoc.lisp.
907         * src/clfswm-util.lisp (paste-selection-no-clear): Prevent to
908         paste a child on one of its own children. (this prevent a
909         recursive bug).
910         (move-child-to): Rename move/copy-current-child-by to
911         move/copy-child-to.
912         (mouse-move-window-over-frame): New function to move the window
913         under the mouse cursor to another frame.
915         * src/clfswm-internal.lisp (find-child-in-parent): New function.
917 2008-04-29  Philippe Brochard  <pbrochard@common-lisp.net>
919         * src/clfswm-internal.lisp (show-all-children): Display unmanaged
920         windows only when its window parent is the current child.
922 2008-04-28  Philippe Brochard  <pbrochard@common-lisp.net>
924         * src/clfswm-util.lisp (manage-current-window)
925         (unmanage-current-window): New functions: Allow to force to manage
926         or unmanage a window by its parent frame.
928         * src/bindings-second-mode.lisp (#\o): binded to
929         set-open-in-new-frame-in-parent-frame-nw-hook and
930         (#\o :control) to set-open-in-new-frame-in-root-frame-nw-hook
932         * src/clfswm-util.lisp (with-current-window): New macro.
934         * src/xlib-util.lisp (move-window, resize-window): Remove uneeded
935         exposure and enter-window handle event.
937         * src/clfswm-util.lisp (move-frame, resize-frame): Show all
938         children for the current child after the move/resize.
940 2008-04-27  Philippe Brochard  <pbrochard@common-lisp.net>
942         * src/xlib-util.lisp (resize-window): Take care of window size
943         hints.
945         * src/clfswm-util.lisp (mouse-focus-move/resize-generic): Allow to
946         move/resize unmanaged windows.
948         * src/xlib-util.lisp (move-window, resize-window): New functions.
950 2008-04-25  Philippe Brochard  <pbrochard@common-lisp.net>
952         * src/clfswm-util.lisp (current-frame-manage-window-type): Let the
953         user choose what window type the current frame must handle.
954         (display-current-window-info): New function.
955         (current-frame-manage-all-window-type)
956         (current-frame-manage-only-normal-window-type)
957         (current-frame-manage-no-window-type): New functions.
959         * src/clfswm-internal.lisp (managed-window-p): New function.
961         * src/package.lisp (frame): Managed type: new frame
962         parameter. This allow to choose what window type a frame must
963         handle.
965         * src/*.lisp: Rename all 'father' occurrences to 'parent'.
967         * src/clfswm-nw-hooks.lisp
968         (open-in-new-frame-in-parent-frame-nw-hook): New new window hook.
970         * src/clfswm-util.lisp (adapt-current-frame-to-window-hints): New
971         function.
973         * src/tools.lisp (ensure-printable): Return always a string even
974         with a null string.
976 2008-04-24  Philippe Brochard  <pbrochard@common-lisp.net>
978         * src/config.lisp (*default-nw-hook*): New variable to change the
979         default new window hook.
981 2008-04-22  Philippe Brochard  <pbrochard@common-lisp.net>
983         * clfswm.asd (clfswm): Add a dependency from
984         clfswm-second-mode.lisp to clfswm.lisp.
986         * src/clfswm-util.lisp (identify-key): Show the documentation for
987         the function bound on a key.
988         (with-movement): Move with-movement,
989         current-frame-fill/pack/resize-*  from bindings-second-mode.lisp
990         to clfswm-util.lisp.
992         * src/clfswm-menu.lisp: New menu system that let user change keys
993         or functions associated to keys.
995 2008-04-18  Philippe Brochard  <pbrochard@common-lisp.net>
997         * src/clfswm-internal.lisp (show-all-children): Display-child is
998         the first child by default. Solve a bug with father-p.
1000 2008-04-17  Philippe Brochard  <pbrochard@common-lisp.net>
1002         * src/clfswm-internal.lisp (add-frame): Add frame return the
1003         created frame.
1004         (show-all-children): Move the size computation outside the
1005         show-child part.
1007         * src/bindings-second-mode.lisp (with-movement): Redisplay only
1008         the current child.
1010         * src/clfswm-util.lisp (mouse-click-to-focus-generic): Redisplay
1011         only the current child.
1013         * src/clfswm-internal.lisp (show-all-children): New display-child
1014         parameter to display only the desired child and its children.
1015         (select-next/previous-child): Only display the current child.
1017 2008-04-14  Philippe Brochard  <pbrochard@common-lisp.net>
1019         * src/clfswm.lisp (init-display): Move the default frame creation
1020         on the default init hook.
1022         * src/clfswm-keys.lisp (define-ungrab/grab): Handle all keysyms in
1023         the main mode (for example: "1" on an azerty keyboard).
1025 2008-04-13  Philippe Brochard  <pbrochard@common-lisp.net>
1027         * src/clfswm-keys.lisp (find-key-from-code): Better handle of
1028         keysyms. Revert to old grabbing method for the main mode.
1030 2008-04-12  Philippe Brochard  <pbrochard@common-lisp.net>
1032         * src/clfswm.lisp (init-display): Add key handling on no focus
1033         window and on frame windows.
1035 2008-04-11  Philippe Brochard  <pbrochard@common-lisp.net>
1037         * src/clfswm.lisp (main): Keyboard handle strategie change: Grab
1038         all keys by default and replay just what is needed. No change for
1039         the second mode.
1041         * src/clfswm-keys.lisp: remove grab/ungrab main keys.
1042         (find-key-from-code): Test for shift and not shift presence.
1044 2008-04-09  Philippe Brochard  <pbrochard@common-lisp.net>
1046         * src/clfswm-internal.lisp (switch-to-root-frame): show later -
1047         new key parameter to have less flickering.
1049 2008-04-07  Philippe Brochard  <pbrochard@common-lisp.net>
1051         * src/bindings-second-mode.lisp (frame-layout-once-menu): Set the
1052         layout only one time and revert to no-layout to freely handle
1053         frames.
1055         * src/clfswm-nw-hooks.lisp
1056         (open-in-new-frame-in-root-frame-nw-hook): Tile layout with spaces
1057         with new created window.
1059         * src/clfswm-layout.lisp (register-layout): Now register
1060         automatically a once layout to set the layout only one time and
1061         revert to no-layout to freely handle frames.
1063 2008-04-05  Philippe Brochard  <pbrochard@common-lisp.net>
1065         * src/clfswm-nw-hooks.lisp (leave-focus-frame-nw-hook): New
1066         nw-hook: Open the next window in the current frame and leave the
1067         focus to the current child.
1069 2008-04-04  Philippe Brochard  <pbrochard@common-lisp.net>
1071         * src/bindings-second-mode.lisp: Add keys definitions to
1072         bind-or-jump in the second mode.
1074         * src/clfswm-util.lisp (bind-or-jump): remove the auto-defining
1075         macro for bind-or-jump-(1|2|3...).
1077         * src/clfswm-keys.lisp (define-define-key/mouse): Allow additional
1078         arguments to function. This allow to do things like:
1079         (define-main-key (key) 'my-function 10 20 'foo) -> 10 20 and 'foo
1080         are passed to my-function on key press.
1082 2008-04-03  Philippe Brochard  <pbrochard@common-lisp.net>
1084         * src/clfswm-util.lisp (bind-or-jump): New (great) function.
1086 2008-04-02  Philippe Brochard  <pbrochard@common-lisp.net>
1088         * src/clfswm-internal.lisp (child-fullname): New function
1090         * src/clfswm-info.lisp (info-mode-menu): Add an explicit optional
1091         docstring in info-mode-menu. An item can be
1092         '((key function) (key function)) or with docstring
1093         '((key function "documentation 1") (key function "bla bla") (key function))
1095         * src/tools.lisp (ensure-n-elems): New function.
1097         * src/bindings-second-mode.lisp: Bind Alt+mouse-1/3 to move or
1098         resize a frame or the window's father.
1100         * src/clfswm.lisp (init-display): Remove tile-space-layout by
1101         default on the root frame.
1103         * src/clfswm-util.lisp (move/resize-frame): Add standard event
1104         hooks handlers (map-request, configure-notify...)
1106         * src/clfswm-internal.lisp (adapt-child-to-father): Limit minimal
1107         child size to 1x1.
1109 2008-04-01  Philippe Brochard  <pbrochard@common-lisp.net>
1111         * src/bindings.lisp: Bind Alt+mouse-1/3 to move or resize a frame
1112         or the window's father.
1114         * src/clfswm-util.lisp (mouse-click-to-focus-generic): Stop button
1115         event only if there is a geometry change.
1116         (mouse-focus-move/resize-generic): Generic function to move or
1117         resize a frame or a window father frame.
1119 2008-04-01  Philippe Brochard  <pbrochard@common-lisp.net>
1121         * src/clfswm-internal.lisp (show-all-children): Return t if there
1122         is a geometry change.
1124 2008-03-30  Philippe Brochard  <pbrochard@common-lisp.net>
1126         * src/bindings.lisp (Up/Down): Swap select previous/next level.
1128         * src/bindings-second-mode.lisp (Up/Down): Swap select previous/next level.
1130         * src/clfswm.lisp (init-display): Create a default frame in the root frame.
1132         * src/clfswm-internal.lisp (place-frame): Place frame from real (pixel) coordinates.
1133         (with-all-*): Reverse the child list to manage the first child last (like in
1134         show-all-children).
1136         * src/config.lisp (*create-frame-on-root*): New variable: Create a new frame on the
1137         root window only if true.
1139         * src/clfswm-util.lisp (mouse-click-to-focus-generic): Create a new frame on the
1140         root window only if *create-frame-on-root* is true.
1142         * src/bindings-second-mode.lisp (sm-mouse-click-to-focus-generic): Create a new frame
1143         on the root window.
1145 2008-03-29  Philippe Brochard  <pbrochard@common-lisp.net>
1147         * src/bindings-second-mode.lisp (sm-mouse-click-to-focus-generic): Focus, move and resize
1148         the current child (even if it's a window).
1150 2008-03-28  Philippe Brochard  <pbrochard@common-lisp.net>
1152         * src/clfswm-util.lisp (mouse-click-to-focus-and-move)
1153         (mouse-click-to-focus-and-resize): New functions.
1155         * src/clfswm-internal.lisp (*-fl->px): Convert float coordinates to pixel.
1156         (*-px->fl): Convert pixel coordinates to float.
1158         * src/tools.lisp (call-hook): Move call-hook to tools.lisp.
1160 2008-03-27  Philippe Brochard  <pbrochard@common-lisp.net>
1162         * src/clfswm-layout.lisp (no-layout): Use :first-only to raise only the
1163         first child.
1165         * src/clfswm-internal.lisp (hide-all): Split hide-all-children in hide-all
1166         and hide-all-children.
1167         (raise-if-needed): New function.
1168         (show-child): Use a first-p parameter to raise windows only when they are
1169         first child.
1171 2008-03-26  Philippe Brochard  <pbrochard@common-lisp.net>
1173         * src/clfswm-internal.lisp (select-next/previous-level): Don't use show-all-children
1174         -> less flickering.
1176 2008-03-25  Philippe Brochard  <pbrochard@common-lisp.net>
1178         * src/clfswm-info.lisp (keys-from-list): new function.
1180         * src/*: rename 'childs' in 'children'.
1182         * src/*: rename 'group' in 'frame'.
1184 2008-03-22  Philippe Brochard  <pbrochard@common-lisp.net>
1186         * src/clfswm-pack.lisp (explode-group/explode-current-group): new functions.
1188 2008-03-21  Philippe Brochard  <pbrochard@common-lisp.net>
1190         * src/clfswm-pack.lisp: Pack, Fill, Resize functions.
1192 2008-03-16  Philippe Brochard  <pbrochard@common-lisp.net>
1194         * src/clfswm-nw-hooks.lisp: Register system for new window hooks.
1195         Bind control+o to open the next window in a new group in the root group
1196          (as open in next window in a new workspace in 0801 version).
1198 2008-03-15  Philippe Brochard  <pbrochard@common-lisp.net>
1200         * src/clfswm-util.lisp (show/hide-all-groups-info/key): Show/hide all groups info
1201         window.
1203 2008-03-14  Philippe Brochard  <pbrochard@common-lisp.net>
1205         * bindings-second-mode.lisp ("ISO_Left_Tab"): Use ISO_Left_Tab
1206         instead of Tab for select-previous-child.
1208 2008-03-13  Philippe Brochard  <pbrochard@common-lisp.net>
1210         * clfswm-util.lisp (force-window-in-group/force-window-center-in-group):
1211         new functions.
1213 2008-03-11  Philippe Brochard  <pbrochard@common-lisp.net>
1215         * clfswm-util.lisp (identify-key): Display the documentation
1216         associated to keys when identifying a key.
1218 2008-03-10  Xavier Maillard  <xma@gnu.org>
1220         * contrib/clfswm: Complete rewrite of the script. Detect error and
1221         act accordingly. Add command line arguments to configure the
1222         script execution. User can now choose different common lisp
1223         implementation (clisp and sbcl only), choose where to store the
1224         dumped image, where to find clfswm source.
1226 2008-03-09  Philippe Brochard  <pbrochard@common-lisp.net>
1228         * clfswm-internal.lisp (process-new-window): Beginning of new
1229         window hook: each group have a hook to tell what he wants to do
1230         with the new created window.
1232 2008-03-08  Xavier Maillard  <xma@gnu.org>
1234         * contrib/clfswm: New script. Dump a CLISP image of CLFSWM then
1235         call the resulting executable.
1237         * clfswm.lisp (read-conf-file): Check for the user config file in
1238         XDG_CONFIG_HOME *first*. Freedesktop.org standards should be
1239         prefered whenever possible.
1241 2008-02-27  Philippe Brochard  <pbrochard@common-lisp.net>
1243         * clfswm-layout.lisp (*-layout): Add an optional raise-p
1244         parameter in each layout.
1246 2008-02-26  Philippe Brochard  <pbrochard@common-lisp.net>
1248         * clfswm-util.lisp (copy/cut-current-child): Does not affect the
1249         root group.
1250         (copy/move-current-child-by-name/number): new functions
1251         (focus-group-by-name/number): new functions
1252         (delete-group-by-name/number): new functions
1254 2008-02-24  Philippe Brochard  <pbrochard@common-lisp.net>
1256         * ************************************************************ *
1257         *: Major update - No more reference  to workspaces. The main   *
1258         structure is a tree of groups or application windows.          *
1259         * ************************************************************ *
1261 2008-02-07  Philippe Brochard  <pbrochard@common-lisp.net>
1263         * clfswm.lisp (read-conf-file): Read configuration in
1264         $HOME/.clfswmrc or in /etc/clfswmrc or in
1265         $XDG_CONFIG_HOME/clfswm/clfswmrc.
1266         (xdg-config-home): Return the content of $XDG-CONFIG-HOME (default
1267         to $HOME/.config/).
1269 2008-01-18  Philippe Brochard  <pbrochard@common-lisp.net>
1271         * clfswm-internal.lisp (show-all-group): Use *root* and *root-gc*
1272         by default.
1274 2008-01-03  Philippe Brochard  <pbrochard@common-lisp.net>
1276         * clfswm-internal.lisp (find-window-group): New function.
1278         * clfswm*: Change to make clfswm run with clisp/new-clx.
1280 2008-01-01  Philippe Brochard  <pbrochard@common-lisp.net>
1282         * clfswm-util.lisp (query-show-paren): Add show parent matching in
1283         query string.
1284         (query-string): Bind control+k to delete end of line.
1286         * clfswm-second-mode.lisp (draw-second-mode-window): Display
1287         the action on mouse motion in second mode.
1289         * clfswm.lisp (handle-exposure): Redisplay groups on exposure
1290         event but do not clear the root window.
1291         (handle-configure-request): Adjust unmanaged window from there
1292         request.
1294         * clfswm-internal.lisp (process-new-window): Adjust new window
1295         with the specified hints (max/min/base width/height).
1297 2007-12-31  Philippe Brochard  <pbrochard@common-lisp.net>
1299         * clfswm.lisp (handle-configure-request): Send an Configuration
1300         Notify event. This solve a bug with xterm and rxvt who takes some
1301         times to be mapped. Now there is no delay.
1303         * bindings-second-mode.lisp (define-shell): Run programs after
1304         living the second mode.
1306 2007-12-30  Philippe Brochard  <pbrochard@common-lisp.net>
1308         * clfswm-internal.lisp (process-new-window): Do not crop transient
1309         window to group size.
1310         (adapt-window-to-group): Do not crop transient window to group
1311         size.
1313         * clfswm.lisp (handle-configure-request): Adapt just the window to
1314         its group and don't take care of the configure request. Remove the
1315         bug with the Gimp outside the group and speed up the window
1316         manipulation.
1317         (handle-exposure): Remove show-all-group on exposure event
1318         -> Speed up.
1320 2007-12-29  Philippe Brochard  <pbrochard@common-lisp.net>
1322         * clfswm-util.lisp (circulate-group-up-copy-window)
1323         (circulate-group-down-copy-window)
1324         (circulate-workspace-up-copy-group)
1325         (circulate-workspace-down-copy-group): Prevent the copy of the
1326         same window in the same workspace.
1328         * bindings-second-mode.lisp (release-copy-selected-window)
1329         (release-copy-selected-group): Prevent the copy of the same window
1330         in the same workspace.
1332         * clfswm-pager.lisp (generic-pager-move-window-on-previous-line)
1333         (generic-pager-move-window-on-next-line): Remove the copy
1334         property.
1335         (generic-pager-move-group-on-next-workspace)
1336         (generic-pager-move-group-on-previous-workspace): Prevent the copy
1337         of the same window in the same workspace.
1339         * bindings-pager.lisp (mouse-pager-copy-selected-window-release)
1340         (mouse-pager-copy-selected-group-release): Prevent the copy of the
1341         same window in the same workspace.
1343         * tools.lisp (setf/=): new macro to set a variable only when
1344         necessary.
1346         * clfswm-internal.lisp (adapt-window-to-group): use set/= to set
1347         x, y... only when necessary.
1349 2007-12-28  Philippe Brochard  <pbrochard@common-lisp.net>
1351         * clfswm.lisp (handle-configure-notify, *configure-notify-hook*):
1352         new function and hook: force windows to stay in its group (solve a
1353         bug with the Gimp).
1355 2007-12-25  Philippe Brochard  <pbrochard@common-lisp.net>
1357         * bindings-second-mode.lisp (mouse-motion): use hide-group to have
1358         less flickering when moving/resizing groups.
1360         * clfswm-internal.lisp (hide-group): new function.
1361         (show-all-group): clear-all: new parameter.
1363 2007-12-22  Philippe Brochard  <pbrochard@common-lisp.net>
1365         * clfswm-keys.lisp (define-define-key): undefine-*-multi-name: new
1366         macro.
1367         * clfswm*: Color change for the pager. Typo or better description
1368         in bindings definitions. Define bindings for a qwerty keyboard by
1369         default. dot-clfswmrc show examples to switch to an azerty
1370         keyboard.
1371         License change to GPL v3.
1372         * config.lisp: new file - group all globals variables in this
1373         file.
1375 2007-08-26  Philippe Brochard  <pbrochard@common-lisp.net>
1377         * xlib-util.lisp (hide-window): Remove structure-notivy events
1378         when hidding a window.
1380 2007-05-16  Philippe Brochard  <pbrochard@common-lisp.net>
1382         * package.lisp (*sm-property-notify-hook*): Readded
1383         property-notify-hook in second mode.
1385 2007-05-15  Philippe Brochard  <pbrochard@common-lisp.net>
1387         * clfswm-keys.lisp (produce-doc-html): Better clean up for strings.
1389 2007-05-13  Philippe Brochard  <pbrochard@common-lisp.net>
1391         * clfswm-pack.lisp (tile-current-workspace-to/right/left/top/bottom):
1392         Tile the current workspace with the current window on one side and
1393         others on the other (this emulate the larswm, dwm, wmii way). See
1394         the default configuration file to enable this mode by default.
1396         * clfswm-pager.lisp (pager-tile-current-workspace-to): idem for
1397         the pager.
1399 2007-05-12  Philippe Brochard  <pbrochard@common-lisp.net>
1401         * clfswm-pager.lisp (pager-draw-window-in-group): Add
1402         ensure-printable to print windows name even with non-ascii
1403         characters.
1405 2007-05-11  Philippe Brochard  <pbrochard@common-lisp.net>
1407         * clfswm-pager.lisp (pager-explode-current-group): Create a new
1408         group for each window in group.
1409         (pager-implode-current-group): Move all windows in workspace to
1410         one group and remove other groups.
1412         * clfswm-pack.lisp (explode-group): Create a new group for each
1413         window in group.
1414         (implode-group): Move all windows in workspace to one group and
1415         remove other groups.
1417         * clfswm-util.lisp (identify-key): Remove local configuration
1418         variables and made them available for configuration from
1419         package.lisp.
1420         (query-string): idem.
1422 2007-04-29  Philippe Brochard  <pbrochard@common-lisp.net>
1424         * netwm-util.lisp: Start of NetWM compliance.
1425         Add a Netwm client list gestion.
1427 2007-04-28  Philippe Brochard  <pbrochard@common-lisp.net>
1429         * clfswm-internal.lisp (create-group-on-request): open a new group
1430         only when the current group is not empty.
1432         * bindings-second-mode.lisp (define-second-key-#\o-control): Fix a
1433         bug with null workspace.
1435         * clfswm-pager.lisp (pager-handle-event): Add a hook
1436         system. This hooks can be changed in the user configuration file.
1438         * package.lisp: All colors and font variables are set in
1439         package.lisp and can be configured in the user configuration
1440         file.
1441         Note: If you have configured some less ugly colors (esp. for the
1442         pager) don't hesitate to let me know :)
1444         * clfswm-second-mode.lisp (sm-handle-event): Add a hook
1445         system. This hooks can be changed in the user configuration file.
1447         * clfswm.lisp (handle-event): Add a hook system. This hooks can be
1448         changed in the user configuration file (~/.clfswmrc)
1450 2007-04-25  Philippe Brochard  <pbrochard@common-lisp.net>
1452         * clfswm-util.lisp (stop-all-pending-actions): new function: reset
1453         arrow action, open next window in new workspace/group.
1455         * bindings.lisp (stop-all-pending-actions): new binding.
1456         (open-next-window-in-new-group-once): Open the next windows in a
1457         new group (only once) or open all new windows in a new group (like
1458         others windows managers).
1460 2007-04-22  Philippe Brochard  <pbrochard@common-lisp.net>
1462         * clfswm.lisp (read-conf-file): New function to read a lisp
1463         configuration file at startup.
1464         (focus-group-under-mouse): Check if group isn't the current group
1465         ( prevent a bug with unclutter ).
1467 2007-03-02  Philippe Brochard  <pbrochard@common-lisp.net>
1469         * bindings.lisp (run-program-from-query-string): A program can be
1470         launch from a input query window.
1472 2007-03-01  Philippe Brochard  <pbrochard@common-lisp.net>
1474         * clfswm-info.lisp: Fix a bug with banish pointer in info mode.
1476 2007-02-28  Philippe Brochard  <pbrochard@common-lisp.net>
1478         * clfswm.lisp (process-new-window): One can now open the next
1479         window in a workspace called by its number.
1481         * clfswm-util.lisp (query-font-string): Minimal editing
1482         capabilities.
1483         (eval-from-string): And an REPL in the window manager... :)
1485 2007-02-26  Philippe Brochard  <pbrochard@common-lisp.net>
1487         * clfswm.lisp (process-new-window): One can now open the next
1488         window in a new workspace or a new group.
1490         * clfswm-pager.lisp (pager-mode): Display the next arrow action
1491         with the hidden windows.
1493         * clfswm.lisp (second-key-mode): Display the current workspace
1494         number and the next arrow action in the state window.
1496         * clfswm-pager.lisp (pager-mode): Hide all windows before leaving
1497         the pager mode and then redisplay only the current workspace.
1499 2007-02-25  Philippe Brochard  <pbrochard@common-lisp.net>
1501         * clfswm.lisp (add-workspace): Workspaces are now numbered. So
1502         they can be focused with a keypress, sorted or renumbered.
1504 2007-02-24  Philippe Brochard  <pbrochard@common-lisp.net>
1506         * clfswm-pager.lisp (pager-mode): Remove multiple silly
1507         pager-draw-display. This prevent a lot of flickering in the
1508         pager.
1510         * clfswm.lisp: Remove all display-force-output and replace them
1511         with only one display-finish-output in the event loop.
1513 2006-11-06  Philippe Brochard  <pbrochard@common-lisp.net>
1515         * clfswm-pager.lisp (pager-center-group): New function - center a
1516         group at the middle of the screen.
1518         * clfswm-pack.lisp (center-group): New function - center a group
1519         at the middle of the screen.
1521         * clfswm.lisp (show-group): Add a cross line under the group.
1522         (show-group): Group are showned even if fullscreened.
1523         (init-display): Add an exposure event on the root window.
1525 2006-11-05  Philippe Brochard  <pbrochard@common-lisp.net>
1527         * package.lisp (*default-group*): Default group is the same size
1528         of a fullscreened group.
1530         * bindings*: Use shift to move, control+shift to copy.
1532         * *.lisp: Add comments for configuration or alternatives. So grep
1533         for CONFIG to see where you can configure clfswm. And grep for
1534         Alternative to use some commented code.
1536         * clfswm.lisp (second-key-mode): Use a single window to show the
1537         second mode. See for alternatives at the end of this file.
1539 2006-11-03  Philippe Brochard  <pbrochard@common-lisp.net>
1541         * clfswm-keys.lisp (define-define-key/mouse): Factorisation in a
1542         macro of key and mouse definitions.
1543         (define-define-key/mouse): Use state instead of modifiers list
1544         this fix a bug when the modifiers list is not in the rigth order.
1546         * clfswm.lisp (second-key-mode): Add a colored border in second mode.
1548 2006-11-02  Philippe Brochard  <pbrochard@common-lisp.net>
1550         * clfswm-info.lisp (info-mode): Add an info mode.
1552 2006-11-01  Philippe Brochard  <pbrochard@common-lisp.net>
1554         * clfswm.lisp (process-new-window): Change border size for
1555         transient windows.
1556         (show-all-windows-in-workspace): Unhide all windows even when the
1557         current group is in fullscreen mode.
1559 2006-10-26  Philippe Brochard  <pbrochard@common-lisp.net>
1561         * clfswm-util.lisp (identify-key): Add an exposure handle-event to
1562         redisplay the identify window after a terminal switch.
1564         * clfswm-pager.lisp (pager-mode): Add an exposure handle-event to
1565         redisplay the pager after a terminal switch.
1567 2006-10-24  Philippe Brochard  <pbrochard@common-lisp.net>
1569         * clfswm-util.lisp (identify-key): Add a window to display
1570         the keys to identify on screen.
1572         * bindings.lisp, bindings-pager.lisp: Define same keys to
1573         move/copy groups/windows in second mode and in pager.
1575         * clfswm.lisp (handle-event*): Same version in all clfswm (fix some
1576         drawing lags).
1577         (show-all-windows-in-workspace): unhide window before adapting it
1578         to group.
1580 2006-10-23  Philippe Brochard  <pbrochard@common-lisp.net>
1582         * clfswm.lisp (handle-event): Revert to an older version.
1584 2006-10-18  Philippe Brochard  <pbrochard@common-lisp.net>
1586         * clfswm-util.lisp (force-window-in-group)
1587         (force-window-center-in-group): New functions for transient windows.
1589         * clfswm-pager.lisp (pager-remove-current-workspace/group):
1590         bugfix: hide all windows before removing group or workspace.
1592 2006-10-17  Philippe Brochard  <pbrochard@common-lisp.net>
1594         * bindings-pager.lisp (mouse-pager-move-selected-group)
1595         (mouse-pager-copy-selected-group)
1596         (mouse-pager-move-selected-window)
1597         (mouse-pager-copy-selected-window, mouse-pager-rotate-window-up)
1598         (mouse-pager-rotate-window-down): New functions to have mouse in
1599         pager mode.
1601         * clfswm-pager.lisp (pager-swap-window)
1602         (pager-copy-group-on-next/previous-workspace)
1603         (pager-copy-window-on-next/previous-line): New functions
1605 2006-10-15  Philippe Brochard  <pbrochard@common-lisp.net>
1607         * clfswm-pager.lisp (pager-move-window-on-next/previous-line,
1608         (pager-move-group-on-next/previous-workspace): new functions.
1610         * clfswm-pack.lisp (resize-half-x-x-current-group): resize group
1611         to its half size (new functions).
1613 2006-10-11  Philippe Brochard  <pbrochard@common-lisp.net>
1615         * clfswm-pager.lisp: workspaces, groups and windows can now be
1616         selectionned with the keyboard or the mouse.
1618 2006-10-09  Philippe Brochard  <pbrochard@common-lisp.net>
1620         * clfswm-pager.lisp (pager-select-workspace-right/left):
1621         workspaces can now be selectionned with the keyboard.
1623 2006-10-08  Philippe Brochard  <pbrochard@common-lisp.net>
1625         * clfswm-keys.lisp (undefine-main-key, undefine-second-key, undefine-mouse-action):
1626         new function to remove a previous defined key or mouse combination.
1628 2006-10-07  Philippe Brochard  <pbrochard@common-lisp.net>
1630         * clfswm.lisp (main): Check for access error in init-display.
1632         * clfswm-keys.lisp (define-ungrab/grab): check for keysym and
1633         keycode before grabbing.
1635         * bindings.lisp: Remove nlambda and use defun to keep the function
1636         documentation with clisp.
1637         (define-shell): new macro to define shell command for the second
1638         mode.
1640 2006-10-06  Philippe Brochard  <pbrochard@common-lisp.net>
1642         * clfswm-keys.lisp (define-ungrab/grab): use a cond instead of a
1643         boggus typecase.
1645 2006-10-05  Philippe Brochard  <pbrochard@common-lisp.net>
1647         * bindings.lisp (accept-motion): Move group bugfix in upper mouse
1648         workspace circulation.
1650         * clfswm-util.lisp (absorb-orphan-window): new function.
1652         * clfswm-keys.lisp: Keysyms support.
1654 2006-10-02  Philippe Brochard  <pbrochard@common-lisp.net>
1656         * clfswm.lisp (show-group): Use one gc for all groups and not one
1657         per group.
1659 2006-10-01  Philippe Brochard  <pbrochard@common-lisp.net>
1661         * bindings.lisp (define-second-key (#\l :mod-1)): fix a typo.
1663         * clfswm.lisp (adapt-window-to-group): Adapt only windows with
1664         width and height outside group.
1666 2006-09-28  Philippe Brochard  <pbrochard@common-lisp.net>
1668         * clfswm.lisp: First public release.