with-xlib-protect: Add a with-simple-restart on top of body execution.
[clfswm.git] / ChangeLog
blob3cee57511d77f643cc733b1ee8a76c39e9e09ec3
1 2010-09-05  Philippe Brochard  <pbrochard@common-lisp.net>
3         * src/xlib-util.lisp (with-xlib-protect): Add a
4         with-simple-restart on top of body execution.
6 2010-09-04  Philippe Brochard  <pbrochard@common-lisp.net>
8         * src/clfswm.lisp (main-loop): Protect all xlib functions with an
9         with-xlib-protect.
11         * src/xlib-util.lisp (handle-event): use with-xlib-protect only in
12         handle-event. Add a with-simple-restart to prevent a
13         clisp/new-lisp infinite loop.
15 2010-08-30  Philippe Brochard  <pbrochard@common-lisp.net>
17         * src/clfswm-corner.lisp (present-clfswm-terminal): Make the
18         clfswm terminal working even on xterm title changes.
20 2010-08-29  Philippe Brochard  <pbrochard@common-lisp.net>
22         * src/clfswm-util.lisp (run-other-window-manager): Update for
23         clisp compatibility.
25         * src/tools.lisp (do-execute): New parameter io to change the
26         input/output method.
28         * src/clfswm-util.lisp (hide-current-child): Prevent from removing
29         the current root.
31         * src/clfswm-internal.lisp (child-member): New predicate.
32         (child-remove): New function.
34         * src/*.lisp: Use child-member and child-remove everywhere it's
35         needed.
37 2010-08-28  Philippe Brochard  <pbrochard@common-lisp.net>
39         * src/clfswm.lisp (main-loop): Ensure that all events have been
40         processed after a process-event.
42         * src/clfswm-internal.lisp (is-in-current-child-p): New function.
44 2010-08-27  Philippe Brochard  <pbrochard@common-lisp.net>
46         * src/clfswm.lisp (main-mode:configure-request): Raise the window
47         only when present on the current child and focus it accordingly.
49 2010-08-26  Philippe Brochard  <pbrochard@common-lisp.net>
51         * src/clfswm-circulate-mode.lisp (circulate-loop-function):
52         Use is-a-key-pressed-p.
54         * src/xlib-util.lisp (is-a-key-pressed-p): New predicate.
56         * src/clfswm-keys.lisp (define-ungrab/grab): Use all values
57         returned by xlib:keysym->keycodes.
59         * src/*.lisp: Use the new child-equal-p to compare children. This
60         prevent a bug with sbcl/cmucl when the standard equal function
61         does not work with xlib:window.
63         * src/clfswm-internal.lisp (child-equal-p): New predicate.
65 2010-08-25  Philippe Brochard  <pbrochard@common-lisp.net>
67         * src/clfswm-generic-mode.lisp (generic-mode): Use an
68         xlib:event-listen before processing event with
69         xlib:process-event. This prevent a bug with CLX threaded
70         implementation like sbcl.
72         * src/clfswm.lisp (main-loop): Use an xlib:event-listen before
73         processing event with xlib:process-event. This prevent a bug with
74         CLX threaded implementation like sbcl.
76 2010-08-17  Philippe Brochard  <pbrochard@common-lisp.net>
78         * contrib/server/key.lisp (ushell-sh): Add ccl and ecl support.
80         * src/xlib-util.lisp (compress-motion-notify): Use a loop instead
81         of an event-case.
83         * src/clfswm-internal.lisp (with-find-in-all-frames): New macro.
84         (find-parent-frame, find-frame-window, find-frame-by-name)
85         (find-frame-by-number): Use with-find-in-all-frames to search in
86         frames in the right order.
88         * src/clfswm-util.lisp (mouse-click-to-focus-generic): Fix an
89         unwanted flickering with unmanaged windows.
91 2010-08-16  Philippe Brochard  <pbrochard@common-lisp.net>
93         * src/package.lisp: Remove event handler hooks as they're not
94         needed anymore (To replace them: use closure and define-handler).
96         * src/xlib-util.lisp (move-window, resize-window)
97         (wait-mouse-button-release): Use a generic mode.
99         * src/*.lisp: Replace the case to handle event with a more (tricky)
100         lispy  method which bind a function to each keywords associated
101         to graphics events.
103 2010-07-23  Philippe Brochard  <pbrochard@common-lisp.net>
105         * src/clfswm-util.lisp (delete-current-child): Invert bindings and
106         menu entry between delete-current-child and remove-current-child.
107         ie: Delete a child and its children in all frames by default.
109 2010-07-21  Philippe Brochard  <pbrochard@common-lisp.net>
111         * src/package.lisp: Add a placement configuration group.
113         * src/binding*.lisp: Bind control+g to escape the current action
114         like emacs.
116         * src/clfswm-internal.lisp
117         (delete-child-and-children-in-all-frames): New function and
118         binding: Second mode - Control+Delete delete the current child and
119         its children in all frames (ie: close the current child and its
120         children).
122 2010-07-20  Philippe Brochard  <pbrochard@common-lisp.net>
124         * src/clfswm-internal.lisp (remove-child-in-frame): Do not destroy
125         the frame window and the frame gc. Close a very annoying bug when
126         cuting/pasting a frame or moving a child over frames with the
127         mouse.
129         * src/clfswm-util.lisp (mouse-click-to-focus-generic): Redisplay
130         all children in *current-root* after moving/resizing a frame.
132 2010-07-18  Philippe Brochard  <pbrochard@common-lisp.net>
134         * src/clfswm-util.lisp (delete-focus-window)
135         (destroy-focus-window): Remove child in parent frame before
136         stopping it.
138 2010-07-16  Philippe Brochard  <pbrochard@common-lisp.net>
140         * src/clfswm-util.lisp (identify-key): Add a timeout in
141         xlib:process-event.
142         (mouse-click-to-focus-generic): Use find-child-under-mouse instead
143         of the window passed by xlib:process-event.
145         * src/xlib-util.lisp (move-window, resize-window)
146         (wait-mouse-button-release): Add a timeout in xlib:process-event.
148 2010-04-11  Philippe Brochard  <pbrochard@common-lisp.net>
150         * src/clfswm-util.lisp (run-other-window-manager): Add the ability
151         to launch an other window manager and to return to clfswm.
153 2010-03-18  Philippe Brochard  <pbrochard@common-lisp.net>
155         * src/clfswm-layout.lisp (set-tile-space-layout): Set default
156         to 1%.
158 2009-12-15  Philippe Brochard  <pbrochard@common-lisp.net>
160         * src/clfswm.lisp (main-loop): Add a *loop-hook* parameter and a
161         loop timeout.
163         * src/clfswm-generic-mode.lisp (generic-mode): Add a loop-hook
164         parameter and a loop timeout.
166 2009-12-05  Philippe Brochard  <pbrochard@common-lisp.net>
168         * src/clfswm.lisp (main): Add an alternate configuration filename
169         parameter.
171         * load.lisp: Add a debuging code example.
173 2009-11-14  Philippe Brochard  <pbrochard@common-lisp.net>
175         * src/clfswm-configuration.lisp (create-configuration-menu): New
176         menu to configure all clfswm variables while clfswm is running.
178 2009-11-12  Philippe Brochard  <pbrochard@common-lisp.net>
180         * src/clfswm-util.lisp (save-configuration-variables): New
181         function to save all configuration variables in clfswmrc.
183 2009-11-11  Philippe Brochard  <pbrochard@common-lisp.net>
185         * src/clfswm-info.lisp (info-mode): Begining of mouse support in
186         info mode.
187         (set-default-info-keys): Add cursor key support in info mode.
189 2009-11-08  Philippe Brochard  <pbrochard@common-lisp.net>
191         * contrib/reboot-halt.lisp: Add a Suspend/Reboot/Halt menu in
192         contrib.
194         * src/clfswm.lisp (main): Add a read-conf-file-p parameter to
195         prevent reading the configuration file (this may be useful to
196         produce the original documentation without user modifications
197         with the rc configuration file).
199 2009-11-07  Philippe Brochard  <pbrochard@common-lisp.net>
201         * src/bindings-second-mode.lisp (set-default-second-keys):
202         Simplification of Escape key to close/kill/remove the focus window
203         and unhide all windows.
205         * src/bindings.lisp (set-default-main-keys): Simplification of
206         Escape key to close/kill/remove the focus window and unhide all
207         windows.
209         * src/clfswm-util.lisp (ask-close/kill-current-window): Add remove
210         focus and unhide all windows capabilities.
212 2009-10-10  Philippe Brochard  <pbrochard@common-lisp.net>
214         * contrib/mpd.lisp (start-gmpc): Add gmpc in the mpd menu.
216 2009-07-29  Philippe Brochard  <pbrochard@common-lisp.net>
218         * src/clfswm-layout.lisp (tile-layout, tile-horizontal-layout):
219         Keep child order and don't make unnecessary child movement.
220         (one-column-layout, one-line-layout): New layouts.
222 2009-06-29  Philippe Brochard  <pbrochard@common-lisp.net>
224         * contrib/cd-player.lisp: New file to handle the CD player.
226         * contrib/xmms.lisp: New file to handle the xmms player.
228 2009-06-28  Philippe Brochard  <pbrochard@common-lisp.net>
230         * src/clfswm-layout.lisp (set-no-layout-remember-size): New layout:
231         Maximize windows in there frame - Leave frames to there actual
232         size.
234         * src/bindings-second-mode.lisp (set-default-second-keys): Bind
235         "o" on set-open-in-new-frame-in-parent-frame-nw-hook.
237 2009-06-27  Philippe Brochard  <pbrochard@common-lisp.net>
239         * contrib/keyb_fr.lisp: New file to handle an azerty keyboard.
241 2009-06-24  Philippe Brochard  <pbrochard@common-lisp.net>
243         * contrib/mpd.lisp: Use a standard menu.
245         * src/clfswm-info.lisp: Use a standard menu for the help-menu.
247 2009-06-22  Philippe Brochard  <pbrochard@common-lisp.net>
249         * contrib/mpd.lisp: New file to handle the Music Player Daemon (MPD)
251 2009-06-19  Philippe Brochard  <pbrochard@common-lisp.net>
253         * src/clfswm-autodoc.lisp (produce-doc, produce-doc-html): Minor
254         number key cleanup.
256 2009-06-18  Philippe Brochard  <pbrochard@common-lisp.net>
258         * src/config.lisp (get-fullscreen-size):  One pixel adjustment
259         (again).
261         * src/clfswm-placement.lisp (*-child-placement): One pixel
262         adjustment (again).
264 2009-06-16  Philippe Brochard  <pbrochard@common-lisp.net>
266         * src/clfswm-circulate-mode.lisp (draw-circulate-mode-window):
267         Ensure that all characters are printable.
269         * src/config.lisp (get-fullscreen-size): Adjust default fullscreen
270         sizes.
272         * src/clfswm-placement.lisp (*-child-placement): Adjust
273         coordinates to one pixel in the current child.
275 2009-06-04  Philippe Brochard  <pbrochard@common-lisp.net>
277         * src/clfswm-query.lisp (query-enter-function): Assign font before
278         width and height calculation.
280 2009-06-03  Philippe Brochard  <pbrochard@common-lisp.net>
282         * src/xlib-util.lisp (banish-pointer): Use with-placement macro to
283         bannish the pointer in an arbitrary place.
285         * src/clfswm-info.lisp (info-mode): Use with-placement macro to
286         place the info window in an arbitrary place.
288         * src/clfswm-query.lisp (query-enter-function): Use with-placement
289         macro to place the query window in an arbitrary place.
291         * src/clfswm-placement.lisp: New file. Allow to place info windows
292         or query windows on an arbitrary place. Allow to bannish the
293         pointer on an arbitrary place.
295 2009-05-16  Philippe Brochard  <pbrochard@common-lisp.net>
297         * src/clfswm-circulate-mode.lisp (reorder-child)
298         (reorder-brother): Unfocus windows before reordering children or
299         brothers.
301 2009-05-13  Philippe Brochard  <pbrochard@common-lisp.net>
303         * src/clfswm-circulate-mode.lisp (reorder-brother): Ensure that
304         the parent is a frame.
306         * src/clfswm-second-mode.lisp (sm-handle-motion-notify): Handle
307         motion with a default modifier.
309         * src/clfswm.lisp (handle-motion-notify): Handle motion with a
310         default modifier.
312         * src/clfswm-info.lisp (info-mode): Handle motion with a default
313         modifier.
314         (info-mode): Optimization in loop function.
316 2009-05-10  Philippe Brochard  <pbrochard@common-lisp.net>
318         * src/clfswm-circulate-mode.lisp (reorder-brother): Handle
319         root-frame correctly.
321         * clfswm.asd: Dependency fix for clfswm-generic-mode.
323         * src/clfswm-circulate-mode.lisp (reorder-child)
324         (reorder-brother): Handle empty frames.
325         (reorder-brother): Redisplay only the parent frame of the  current
326         child.
328         * src/clfswm-util.lisp (frame-toggle-maximize): Redisplay only the
329         parent frame of the  current frame.
331 2009-05-09  Philippe Brochard  <pbrochard@common-lisp.net>
333         * src/clfswm-util.lisp (frame-toggle-maximize): New function:
334         Maximize/Unmaximize the current frame in its parent frame.
336         * src/clfswm-layout.lisp (maximize-layout): New layout: Maximize
337         windows and frames in there parent frame.
339 2009-05-05  Philippe Brochard  <pbrochard@common-lisp.net>
341         * src/*.lisp: Add support for Clozure Common Lisp (CCL).
343         * src/clfswm-circulate-mode.lisp (reorder-child)
344         (reorder-brother): Reinitialise on circulate type change
345         child to brother or brother to child.
347         * src/*.lisp (*): Use map-window instead of xlib:map-window. So
348         calls xlib:display-finish-output on each map-request. So speed up
349         the window display.
351         * src/xlib-util.lisp (map-window): New function. Call
352         xlib:display-finish-output on each map request.
354 2009-04-28  Philippe Brochard  <pbrochard@common-lisp.net>
356         * src/clfswm-second-mode.lisp (sm-handle-motion-notify):
357         Optimisation when drawing second mode window.
359 2009-04-27  Philippe Brochard  <pbrochard@common-lisp.net>
361         * src/clfswm-circulate-mode.lisp (circulate-mode): Optimisation in
362         window redraw.
364 2009-04-22  Philippe Brochard  <pbrochard@common-lisp.net>
366         * src/clfswm-util.lisp (run-program-from-query-string): Launch
367         command only with a return validation.
369 2009-04-22  Xavier Maillard  <xma@gnu.org>
371         * src/clfswm-query.lisp (query-string): Use a generic mode.
373 2009-04-19  Xavier Maillard  <xma@gnu.org>
375         * src/clfswm-info.lisp (info-mode): Use generic-mode for info-mode.
377 2009-04-18  Xavier Maillard  <xma@gnu.org>
379         * src/clfswm-generic-mode.lisp (generic-mode): Add a generic mode
380         to define all other modes.
382 2009-04-05  Philippe Brochard  <pbrochard@common-lisp.net>
384         * src/package.lisp (): Use *default-font-string* for all
385         font-string.
387         * src/clfswm-info.lisp (info-mode): Ensure integer windows size.
389 2009-02-17  Philippe Brochard  <pbrochard@common-lisp.net>
391         * src/xlib-util.lisp (null-size-window-p): Better check of null
392         sized windows.
394 2009-02-14  Philippe Brochard  <pbrochard@common-lisp.net>
396         * src/clfswm.lisp (handle-map-request): Add a fix to manage
397         correctly fullscreen windows (SDL particularly).
399 2008-12-20  Philippe Brochard  <pbrochard@common-lisp.net>
401         * src/xlib-util.lisp (get-color): Allocate colors only once -> fix
402         a segfault with clisp/new-clx.
404         * src/clfswm.lisp (handle-motion-notify): Add a needed window
405         argument.
407         * src/clfswm-second-mode.lisp (sm-handle-motion-notify): Add a
408         needed window argument.
410 2008-10-30  Philippe Brochard  <pbrochard@common-lisp.net>
412         * src/xlib-util.lisp (wait-no-key-or-button-press)
413         (wait-a-key-or-button-press): Check buttons press/release correctly"
415 2008-10-28  Philippe Brochard  <pbrochard@common-lisp.net>
417         * src/menu-def.lisp: Add children navigation menu in the movement
418         menu (select next/previous child/brother/level).
420 2008-10-26  Philippe Brochard  <pbrochard@common-lisp.net>
422         *  *: Rename 'sister' frame to 'brother' frame.
424         * src/clfswm-keys.lisp (unalias-modifiers): Convert a modifier
425         alias in a real modifier.
427         * src/package.lisp (*modifier-alias*): New list of modifier alias
428         For example: :alt is :mod-1, :numlock is :mod-2...
430         * src/tools.lisp (remove-hook): New function.
432         * src/clfswm-keys.lisp (with-capslock, without-capslock)
433         (with-numlock, without-cnumlock): New functions.
435 2008-10-25  Philippe Brochard  <pbrochard@common-lisp.net>
437         * src/clfswm-info.lisp: Use the *binding-hook* to create info
438         keys and mouse bindings.
440         * src/bindings-second-mode.lisp: Use the *binding-hook* to create
441         second keys and mouse bindings.
443         * src/bindings.lisp: Use the *binding-hook* to create main keys
444         and mouse bindings.
446 2008-10-10  Philippe Brochard  <pbrochard@common-lisp.net>
448         * src/clfswm-menu.lisp (open-menu): Remember parent menu to undo
449         menu opening.
451 2008-10-09  Philippe Brochard  <pbrochard@common-lisp.net>
453         * src/menu-def.lisp: Use a menu instead of a function for the
454         standard menu.
456 2008-10-08  Philippe Brochard  <pbrochard@common-lisp.net>
458         * src/clfswm-util.lisp (show-standard-menu): Display the standard
459         menu from the 'update-menus' command.
461 2008-10-07  Philippe Brochard  <pbrochard@common-lisp.net>
463         * src/clfswm-query.lisp (query-string): Do not ungrab keyboard if
464         it's already grabbed.
466         * src/clfswm-internal.lisp (display-frame-info): Use configurable
467         colors and fix a bug with background.
468         (display-frame-info): Set window background when displaying info.
470 2008-10-06  Philippe Brochard  <pbrochard@common-lisp.net>
472         * src/xlib-util.lisp (my-character->keysyms): Use a macro to avoid
473         warning with clisp/new-clx.
475 2008-10-04  Philippe Brochard  <pbrochard@common-lisp.net>
477         * src/clfswm-util.lisp (jump-to-slot): Prevent to jump on a
478         deleted child.
480 2008-09-23  Philippe Brochard  <pbrochard@common-lisp.net>
481         * *: **** Release 0809 ****
483 2008-09-23  Philippe Brochard  <pbrochard@common-lisp.net>
485         * src/clfswm-util.lisp (ensure-unique-name): New function and menu
486         entry.
487         (ensure-unique-number): New function and menu entry.
489 2008-09-22  Philippe Brochard  <pbrochard@common-lisp.net>
491         * src/clfswm-nw-hooks.lisp (named-frame-nw-hook): New new window
492         hook: open the next window in a named frame.
493         (numbered-frame-nw-hook): New new window hook: open the next
494         window in a numbered frame.
496         * src/clfswm-query.lisp (query-string): Grab the keyboard in all
497         cases. So query-string can be called even in the main mode.
499         * src/clfswm-internal.lisp (show-all-children): Do not raise a
500         child by default => far less flickering.
502 2008-09-19  Philippe Brochard  <pbrochard@common-lisp.net>
504         * src/bindings-second-mode.lisp: Bind "t" to tile-current-frame.
506         * src/menu-def.lisp: Change key binding for the CLFSWM menu
507         entry.
509         * src/xlib-util.lisp (xgrab-pointer): Handle the case where cursor
510         is nil. (workaround on some CLX implementation).
512 2008-09-12  Philippe Brochard  <pbrochard@common-lisp.net>
514         * src/menu-def.lisp: Add a menu to set a focus policy for all
515         frames.
517         * src/clfswm-util.lisp (set-focus-policy-generic-for-all)
518         (all-frames-set-*-focus-policy): Set a focus policy for all
519         frames.
521         * src/clfswm.lisp (handle-enter-notify): sloppy-select
522         mode. Select a child and its parents on mouse over.
524 2008-09-03  Philippe Brochard  <pbrochard@common-lisp.net>
526         * src/clfswm.lisp (handle-enter-notify): Add a sloppy strict focus
527         policy -> Sloppy focus only for windows in the current frame.
528         (main-unprotected): Exit clfswm on init error (ie: when another
529         window manager is running).
531         * src/clfswm-util.lisp (reset-clfswm): New function.
533 2008-09-02  Philippe Brochard  <pbrochard@common-lisp.net>
535         * src/clfswm-menu.lisp (init-menu): New function.
537         * src/clfswm-util.lisp (reload-clfswm): New function to reload
538         CLFSWM.
539         (exit-clfswm): Rename quit-clfswm to exit-clfswm.
541         * src/clfswm.lisp (main, main-unprotected): Handle error in a
542         superior main function. Now CLFSWM can't break the X session. It
543         just reinitialize the display and run a new main loop.
545         * src/clfswm-corner.lisp: Make *clfswm-terminal* and
546         *vt-keyboard-on* global to avoid warnings when loading clfswm.
548         * src/clfswm-layout.lisp: Add a specific GIMP layout menu.
549         (help-on-gimp-layout): Describe how to use the GIMP layout.
551 2008-09-01  Philippe Brochard  <pbrochard@common-lisp.net>
553         * src/clfswm-layout.lisp (set-gimp-layout): Change the layout to
554         main-window-right-layout. Change the keybinding for (shift)alt+tab
555         to not select windows in the main window lisst.
556         Bind F8 to add a window in the main window list.
557         Bind F9 to remove a window in the main window list.
558         Change the focus policy to :sloppy.
559         (set-previous-layout): Restore the previous layout, keybinding and
560         focus policy.
562 2008-08-31  Philippe Brochard  <pbrochard@common-lisp.net>
564         * src/clfswm-menu.lisp (add-menu-comment): Add comments in menu.
566         * src/clfswm-layout.lisp (main-window-left-layout)
567         (main-window-bottom-layout, main-window-top-layout): New
568         functions.
569         Factorize layouts in menu.
571 2008-08-30  Philippe Brochard  <pbrochard@common-lisp.net>
573         * src/clfswm-layout.lisp (main-window-right-layout): A possible
574         GIMP layout: one or more main windows on one side of the
575         frame. Others on the other size.
577         * src/clfswm-util.lisp
578         (current-frame-set-click/sloppy-focus-policy): Each frame can have
579         a different focus policy (one of :click or :sloppy).
580         The default focus policy is set with *default-focus-policy*.
582 2008-08-23  Philippe Brochard  <pbrochard@common-lisp.net>
584         * src/clfswm-info.lisp (show-config-variable): New function.
586 2008-08-19  Philippe Brochard  <pbrochard@common-lisp.net>
588         * src/clfswm-layout.lisp (tile-horizontal-layout): New layout.
590         * src/clfswm-info.lisp: Colored help for key binding and corners
591         actions.
593 2008-08-18  Philippe Brochard  <pbrochard@common-lisp.net>
595         * src/clfswm-util.lisp (delete-focus-window)
596         (destroy-focus-window): Remove chid only in
597         handle-unmap/destroy-notify. Focus *current-root* only when
598         closing/killing the current child.
600         * src/clfswm-autodoc.lisp (produce-corner-*-doc): New autodoc
601         functions or corners.
603 2008-08-17  Philippe Brochard  <pbrochard@common-lisp.net>
605         * src/clfswm-corner.lisp (present-clfswm-terminal): New corner
606         action: Hide/Unhide a terminal on mouse corner action. (By default
607         right mouse button on the top left corner).
609         * src/config.lisp (*never-managed-window-list*): New config
610         variable.
612         * src/clfswm-internal.lisp (never-managed-window-p): New function:
613         Handle never managed window in a more simple way.
615         * src/clfswm-corner.lisp: New file and new and more simple method
616         to define corners actions.
618 2008-08-15  Philippe Brochard  <pbrochard@common-lisp.net>
620         * src/clfswm-info.lisp (info-mode): Info line can now be colored.
622         * src/clfswm-layout.lisp (fast-layout-switch)
623         (define-fast-layout-switch): New functions: Switch between two
624         layouts.
626         * src/clfswm-second-mode.lisp (leave-second-mode): Takes care if
627         really in the second mode. So leave-second-mode can be used even
628         in the main mode.
630         * src/clfswm-util.lisp (switch-to-last-child): New function:
631         Store the current child and switch to the previous one.
633 2008-07-16  Philippe Brochard  <pbrochard@common-lisp.net>
635         * src/clfswm-util.lisp (display-current-window-info): Display the
636         window id.
637         (have-to-present-virtual-keyboard): Add a virtual keyboard corner
638         (top right by default). By default 'xvkbd' is used.
640 2008-06-28  Philippe Brochard  <pbrochard@common-lisp.net>
642         * src/xlib-util.lisp (move-window, resize-window): Compress motion
643         events.
645         * src/clfswm.lisp (handle-motion-notify): Compress motion events.
647         * src/clfswm-second-mode.lisp (sm-handle-motion-notify): Compress
648         motion events.
650         * src/clfswm-info.lisp (info-mode): Compress motion events.
652 2008-06-21  Philippe Brochard  <pbrochard@common-lisp.net>
654         * src/clfswm-internal.lisp (show-all-children): Compute geometry
655         and selection first and then show only necessary children.
656         (show-child): remove unneeded display-p parameter.
658         * src/config.lisp (get-fullscreen-size): Place the frame border
659         outside the screen (this prevent the loose of 2 pixels per
660         directions :)
662 2008-06-12  Philippe Brochard  <pbrochard@common-lisp.net>
664         * src/clfswm-internal.lisp (focus-child): Algorithm change to
665         raise only the selected child.
667 2008-06-08  Philippe Brochard  <pbrochard@common-lisp.net>
669         * src/clfswm-internal.lisp (raise-p-list, show-all-children):
670         Raise only viewable children.
672 2008-06-06  Philippe Brochard  <pbrochard@common-lisp.net>
674         * src/clfswm-internal.lisp (show-all-children): Always raise all
675         displayed children. Remove all references to raise-p.
677 2008-06-04  Philippe Brochard  <pbrochard@common-lisp.net>
679         * src/menu-def.lisp (child-menu): New menu entry on raise/lower
680         child in its frame.
682         * src/bindings-second-mode.lisp ("Page_Down", "Page_Up"): New
683         second mode binding on raise/lower child in its frame.
685         * src/clfswm-nw-hooks.lisp (leave-focus-frame-nw-hook): Adapt
686         behaviour to the new raise/lower property.
687         Call clear-nw-hook before the rest of the hook.
689         * src/bindings.lisp (mouse-click-to-focus-and-move-window)
690         (mouse-click-to-focus-and-resize-window): Stop button event. This
691         prevent a keyboard/pointer freeze.
693 2008-06-03  Philippe Brochard  <pbrochard@common-lisp.net>
695         * src/clfswm-internal.lisp (frame-lower-child)
696         (frame-raise-child): New functions to raise/lower a child in its
697         frame.
699         * src/clfswm-util.lisp (have-to-present-windows)
700         (have-to-present-all-windows): New functions to have an MaxOS
701         expose like on mouse click in screen corner.
703         * src/clfswm-info.lisp ("Page_Down", "Page_Up"): Add boundaries.
705 2008-05-30  Philippe Brochard  <pbrochard@common-lisp.net>
707         * src/clfswm-util.lisp (unhide-a-child-from-all-frames): Unhide a
708         child from a choice in all frames with hidden children.
710         * src/clfswm-info.lisp (info-mode-menu): Handle separators.
712 2008-05-28  Philippe Brochard  <pbrochard@common-lisp.net>
714         * src/clfswm-util.lisp (hide-current-child, unhide-a-child)
715         (unhide-all-children): New functions.
717         * src/clfswm-info.lisp (info-mode-menu): Handle symbols and
718         functions.
720         * src/clfswm-util.lisp (hide/show-frame-window): new function and
721         menu item.
723 2008-05-23  Philippe Brochard  <pbrochard@common-lisp.net>
725         * src/clfswm-util.lisp (rename-current-child): Do not display the
726         frame info for a window.
728 2008-05-20  Philippe Brochard  <pbrochard@common-lisp.net>
730         * src/clfswm-internal.lisp (remove-child-in-frame): Destroy the
731         frame window for the removed child and its children.
733 2008-05-18  Philippe Brochard  <pbrochard@common-lisp.net>
735         * src/clfswm-autodoc.lisp (produce-*-doc-*): Add a note to use the
736         autodoc functions.
738 2008-05-17  Philippe Brochard  <pbrochard@common-lisp.net>
740         * src/clfswm-nw-hooks.lisp (default-frame-nw-hook): Do not handle
741         the ROX pinboard (ie: leave it lowered in the root window as
742         expected).
744         * src/clfswm-layout.lisp (tile-left-space-layout): New layout.
745         (tile-left-layout, tile-right-layout, tile-top-layout)
746         (tile-bottom-layout): Use all the frame space when there is only
747         one child.
749         * src/clfswm-internal.lisp (place-window-from-hints): Center
750         unmanaged windows in the root screen.
752         * src/clfswm-nw-hooks.lisp (clear-nw-hook, clear-all-nw-hooks):
753         new functions.
755 2008-05-15  Philippe Brochard  <pbrochard@common-lisp.net>
757         * src/clfswm-util.lisp (current-frame-manage-window-type): Fix a
758         typo in managed types.
760         * src/clfswm-internal.lisp (show-child): Always display frame info
761         even if the frame is hidden.
763         * src/xlib-util.lisp (resize-window): Use a better algorithme to
764         resize windows.
766 2008-05-13  Philippe Brochard  <pbrochard@common-lisp.net>
768         * src/clfswm-util.lisp (with-movement): Display frame info for all
769         frames in current root.
771 2008-05-12  Philippe Brochard  <pbrochard@common-lisp.net>
773         * src/*.lisp: Rename 'brother' frames to 'sister' frames.
775         * src/bindings-second-mode.lisp (define-second-key #\a): New
776         binding on 'add-default-frame'.
778         * src/clfswm-autodoc.lisp (produce-*-doc-*-in-file): Show a
779         message to follow the autodocumentation process.
781 2008-05-10  Philippe Brochard  <pbrochard@common-lisp.net>
783         * src/clfswm-util.lisp (bind-or-jump): Bind "Tab", "Return" and
784         "Space" to jump to a child. "B" to bind a slot on the current
785         child.
787         * src/bindings-second-mode.lisp: Use "Tab" instead of
788         "Iso_Left_Tab".
790 2008-05-07  Philippe Brochard  <pbrochard@common-lisp.net>
792         * src/clfswm-util.lisp (find-child-under-mouse): Take care of
793         unmanaged (hidden) windows.
795         * src/clfswm-internal.lisp (place-window-from-hints): Give a
796         minimal size for windows.
797         (with-all-windows-frames-and-parent): New function.
799         * src/config.lisp (*default-window-width/height*): New parameters.
801         * src/clfswm-internal.lisp (place-window-from-hints): Center
802         windows in the screen instead of in there frame.
804         * src/bindings-second-mode.lisp (tile-space-current-frame): New
805         binding on C-t.
807         * src/clfswm-layout.lisp (register-layout): Intern the once name
808         in the right package.
810 2008-05-05  Philippe Brochard  <pbrochard@common-lisp.net>
812         * doc/dot-clfswmrc: Update to  follow the new clfswm way.
814 2008-05-03  Philippe Brochard  <pbrochard@common-lisp.net>
816         * src/clfswm-internal.lisp (set-current-child)
817         (adapt-child-to-parent, show-child, hide-child): Handle the case
818         where child is not a frame or a window.
820         * src/clfswm-util.lisp
821         (mouse-click-to-focus-generic,mouse-focus-move/resize-generic):
822         Check if child is a frame.
824         * src/clfswm-internal.lisp (managed-window-p): Handle the case
825         where frame is null.
826         (place-frame): Check if frame and parent are frames.
828         * src/clfswm-info.lisp (info-mode): display all frame info before
829         leaving.
831         * src/clfswm-second-mode.lisp (second-key-mode): display all frame
832         info before leaving.
834         * src/clfswm-internal.lisp (display-all-frame-info): New function.
836 2008-05-02  Philippe Brochard  <pbrochard@common-lisp.net>
838         * src/tools.lisp (getenv): Implemented for ECL.
839         (urun-prog): Implemented for ECL.
841         * src/clfswm-util.lisp (identify-key): Use a double buffer to
842         display text.
844         * src/clfswm-query.lisp (query-string): Use a double buffer to
845         display text.
847         * src/clfswm-info.lisp (draw-info-window): Use a double buffer to
848         display text.
850         * src/xlib-util.lisp (clear-pixmap-buffer, copy-pixmap-buffer):
851         New functions.
853 2008-05-01  Philippe Brochard  <pbrochard@common-lisp.net>
855         * src/clfswm-info.lisp (info-mode): Add boundaries in the info mode window.
857         * src/menu-def.lisp: New file: move all menu definition in
858         menu-def.lisp.
860         * src/clfswm-layout.lisp (register-layout): Use a function instead
861         of a macro.
863 2008-04-30  Philippe Brochard  <pbrochard@common-lisp.net>
865         * src/clfswm-autodoc.lisp (produce-menu-doc,
866         (produce-menu-doc-html): New functions.
867         (produce-doc-*): Moved to clfswm-autodoc.lisp.
869         * src/clfswm-util.lisp (paste-selection-no-clear): Prevent to
870         paste a child on one of its own children. (this prevent a
871         recursive bug).
872         (move-child-to): Rename move/copy-current-child-by to
873         move/copy-child-to.
874         (mouse-move-window-over-frame): New function to move the window
875         under the mouse cursor to another frame.
877         * src/clfswm-internal.lisp (find-child-in-parent): New function.
879 2008-04-29  Philippe Brochard  <pbrochard@common-lisp.net>
881         * src/clfswm-internal.lisp (show-all-children): Display unmanaged
882         windows only when its window parent is the current child.
884 2008-04-28  Philippe Brochard  <pbrochard@common-lisp.net>
886         * src/clfswm-util.lisp (manage-current-window)
887         (unmanage-current-window): New functions: Allow to force to manage
888         or unmanage a window by its parent frame.
890         * src/bindings-second-mode.lisp (#\o): binded to
891         set-open-in-new-frame-in-parent-frame-nw-hook and
892         (#\o :control) to set-open-in-new-frame-in-root-frame-nw-hook
894         * src/clfswm-util.lisp (with-current-window): New macro.
896         * src/xlib-util.lisp (move-window, resize-window): Remove uneeded
897         exposure and enter-window handle event.
899         * src/clfswm-util.lisp (move-frame, resize-frame): Show all
900         children for the current child after the move/resize.
902 2008-04-27  Philippe Brochard  <pbrochard@common-lisp.net>
904         * src/xlib-util.lisp (resize-window): Take care of window size
905         hints.
907         * src/clfswm-util.lisp (mouse-focus-move/resize-generic): Allow to
908         move/resize unmanaged windows.
910         * src/xlib-util.lisp (move-window, resize-window): New functions.
912 2008-04-25  Philippe Brochard  <pbrochard@common-lisp.net>
914         * src/clfswm-util.lisp (current-frame-manage-window-type): Let the
915         user choose what window type the current frame must handle.
916         (display-current-window-info): New function.
917         (current-frame-manage-all-window-type)
918         (current-frame-manage-only-normal-window-type)
919         (current-frame-manage-no-window-type): New functions.
921         * src/clfswm-internal.lisp (managed-window-p): New function.
923         * src/package.lisp (frame): Managed type: new frame
924         parameter. This allow to choose what window type a frame must
925         handle.
927         * src/*.lisp: Rename all 'father' occurrences to 'parent'.
929         * src/clfswm-nw-hooks.lisp
930         (open-in-new-frame-in-parent-frame-nw-hook): New new window hook.
932         * src/clfswm-util.lisp (adapt-current-frame-to-window-hints): New
933         function.
935         * src/tools.lisp (ensure-printable): Return always a string even
936         with a null string.
938 2008-04-24  Philippe Brochard  <pbrochard@common-lisp.net>
940         * src/config.lisp (*default-nw-hook*): New variable to change the
941         default new window hook.
943 2008-04-22  Philippe Brochard  <pbrochard@common-lisp.net>
945         * clfswm.asd (clfswm): Add a dependency from
946         clfswm-second-mode.lisp to clfswm.lisp.
948         * src/clfswm-util.lisp (identify-key): Show the documentation for
949         the function bound on a key.
950         (with-movement): Move with-movement,
951         current-frame-fill/pack/resize-*  from bindings-second-mode.lisp
952         to clfswm-util.lisp.
954         * src/clfswm-menu.lisp: New menu system that let user change keys
955         or functions associated to keys.
957 2008-04-18  Philippe Brochard  <pbrochard@common-lisp.net>
959         * src/clfswm-internal.lisp (show-all-children): Display-child is
960         the first child by default. Solve a bug with father-p.
962 2008-04-17  Philippe Brochard  <pbrochard@common-lisp.net>
964         * src/clfswm-internal.lisp (add-frame): Add frame return the
965         created frame.
966         (show-all-children): Move the size computation outside the
967         show-child part.
969         * src/bindings-second-mode.lisp (with-movement): Redisplay only
970         the current child.
972         * src/clfswm-util.lisp (mouse-click-to-focus-generic): Redisplay
973         only the current child.
975         * src/clfswm-internal.lisp (show-all-children): New display-child
976         parameter to display only the desired child and its children.
977         (select-next/previous-child): Only display the current child.
979 2008-04-14  Philippe Brochard  <pbrochard@common-lisp.net>
981         * src/clfswm.lisp (init-display): Move the default frame creation
982         on the default init hook.
984         * src/clfswm-keys.lisp (define-ungrab/grab): Handle all keysyms in
985         the main mode (for example: "1" on an azerty keyboard).
987 2008-04-13  Philippe Brochard  <pbrochard@common-lisp.net>
989         * src/clfswm-keys.lisp (find-key-from-code): Better handle of
990         keysyms. Revert to old grabbing method for the main mode.
992 2008-04-12  Philippe Brochard  <pbrochard@common-lisp.net>
994         * src/clfswm.lisp (init-display): Add key handling on no focus
995         window and on frame windows.
997 2008-04-11  Philippe Brochard  <pbrochard@common-lisp.net>
999         * src/clfswm.lisp (main): Keyboard handle strategie change: Grab
1000         all keys by default and replay just what is needed. No change for
1001         the second mode.
1003         * src/clfswm-keys.lisp: remove grab/ungrab main keys.
1004         (find-key-from-code): Test for shift and not shift presence.
1006 2008-04-09  Philippe Brochard  <pbrochard@common-lisp.net>
1008         * src/clfswm-internal.lisp (switch-to-root-frame): show later -
1009         new key parameter to have less flickering.
1011 2008-04-07  Philippe Brochard  <pbrochard@common-lisp.net>
1013         * src/bindings-second-mode.lisp (frame-layout-once-menu): Set the
1014         layout only one time and revert to no-layout to freely handle
1015         frames.
1017         * src/clfswm-nw-hooks.lisp
1018         (open-in-new-frame-in-root-frame-nw-hook): Tile layout with spaces
1019         with new created window.
1021         * src/clfswm-layout.lisp (register-layout): Now register
1022         automatically a once layout to set the layout only one time and
1023         revert to no-layout to freely handle frames.
1025 2008-04-05  Philippe Brochard  <pbrochard@common-lisp.net>
1027         * src/clfswm-nw-hooks.lisp (leave-focus-frame-nw-hook): New
1028         nw-hook: Open the next window in the current frame and leave the
1029         focus to the current child.
1031 2008-04-04  Philippe Brochard  <pbrochard@common-lisp.net>
1033         * src/bindings-second-mode.lisp: Add keys definitions to
1034         bind-or-jump in the second mode.
1036         * src/clfswm-util.lisp (bind-or-jump): remove the auto-defining
1037         macro for bind-or-jump-(1|2|3...).
1039         * src/clfswm-keys.lisp (define-define-key/mouse): Allow additional
1040         arguments to function. This allow to do things like:
1041         (define-main-key (key) 'my-function 10 20 'foo) -> 10 20 and 'foo
1042         are passed to my-function on key press.
1044 2008-04-03  Philippe Brochard  <pbrochard@common-lisp.net>
1046         * src/clfswm-util.lisp (bind-or-jump): New (great) function.
1048 2008-04-02  Philippe Brochard  <pbrochard@common-lisp.net>
1050         * src/clfswm-internal.lisp (child-fullname): New function
1052         * src/clfswm-info.lisp (info-mode-menu): Add an explicit optional
1053         docstring in info-mode-menu. An item can be
1054         '((key function) (key function)) or with docstring
1055         '((key function "documentation 1") (key function "bla bla") (key function))
1057         * src/tools.lisp (ensure-n-elems): New function.
1059         * src/bindings-second-mode.lisp: Bind Alt+mouse-1/3 to move or
1060         resize a frame or the window's father.
1062         * src/clfswm.lisp (init-display): Remove tile-space-layout by
1063         default on the root frame.
1065         * src/clfswm-util.lisp (move/resize-frame): Add standard event
1066         hooks handlers (map-request, configure-notify...)
1068         * src/clfswm-internal.lisp (adapt-child-to-father): Limit minimal
1069         child size to 1x1.
1071 2008-04-01  Philippe Brochard  <pbrochard@common-lisp.net>
1073         * src/bindings.lisp: Bind Alt+mouse-1/3 to move or resize a frame
1074         or the window's father.
1076         * src/clfswm-util.lisp (mouse-click-to-focus-generic): Stop button
1077         event only if there is a geometry change.
1078         (mouse-focus-move/resize-generic): Generic function to move or
1079         resize a frame or a window father frame.
1081 2008-04-01  Philippe Brochard  <pbrochard@common-lisp.net>
1083         * src/clfswm-internal.lisp (show-all-children): Return t if there
1084         is a geometry change.
1086 2008-03-30  Philippe Brochard  <pbrochard@common-lisp.net>
1088         * src/bindings.lisp (Up/Down): Swap select previous/next level.
1090         * src/bindings-second-mode.lisp (Up/Down): Swap select previous/next level.
1092         * src/clfswm.lisp (init-display): Create a default frame in the root frame.
1094         * src/clfswm-internal.lisp (place-frame): Place frame from real (pixel) coordinates.
1095         (with-all-*): Reverse the child list to manage the first child last (like in
1096         show-all-children).
1098         * src/config.lisp (*create-frame-on-root*): New variable: Create a new frame on the
1099         root window only if true.
1101         * src/clfswm-util.lisp (mouse-click-to-focus-generic): Create a new frame on the
1102         root window only if *create-frame-on-root* is true.
1104         * src/bindings-second-mode.lisp (sm-mouse-click-to-focus-generic): Create a new frame
1105         on the root window.
1107 2008-03-29  Philippe Brochard  <pbrochard@common-lisp.net>
1109         * src/bindings-second-mode.lisp (sm-mouse-click-to-focus-generic): Focus, move and resize
1110         the current child (even if it's a window).
1112 2008-03-28  Philippe Brochard  <pbrochard@common-lisp.net>
1114         * src/clfswm-util.lisp (mouse-click-to-focus-and-move)
1115         (mouse-click-to-focus-and-resize): New functions.
1117         * src/clfswm-internal.lisp (*-fl->px): Convert float coordinates to pixel.
1118         (*-px->fl): Convert pixel coordinates to float.
1120         * src/tools.lisp (call-hook): Move call-hook to tools.lisp.
1122 2008-03-27  Philippe Brochard  <pbrochard@common-lisp.net>
1124         * src/clfswm-layout.lisp (no-layout): Use :first-only to raise only the
1125         first child.
1127         * src/clfswm-internal.lisp (hide-all): Split hide-all-children in hide-all
1128         and hide-all-children.
1129         (raise-if-needed): New function.
1130         (show-child): Use a first-p parameter to raise windows only when they are
1131         first child.
1133 2008-03-26  Philippe Brochard  <pbrochard@common-lisp.net>
1135         * src/clfswm-internal.lisp (select-next/previous-level): Don't use show-all-children
1136         -> less flickering.
1138 2008-03-25  Philippe Brochard  <pbrochard@common-lisp.net>
1140         * src/clfswm-info.lisp (keys-from-list): new function.
1142         * src/*: rename 'childs' in 'children'.
1144         * src/*: rename 'group' in 'frame'.
1146 2008-03-22  Philippe Brochard  <pbrochard@common-lisp.net>
1148         * src/clfswm-pack.lisp (explode-group/explode-current-group): new functions.
1150 2008-03-21  Philippe Brochard  <pbrochard@common-lisp.net>
1152         * src/clfswm-pack.lisp: Pack, Fill, Resize functions.
1154 2008-03-16  Philippe Brochard  <pbrochard@common-lisp.net>
1156         * src/clfswm-nw-hooks.lisp: Register system for new window hooks.
1157         Bind control+o to open the next window in a new group in the root group
1158          (as open in next window in a new workspace in 0801 version).
1160 2008-03-15  Philippe Brochard  <pbrochard@common-lisp.net>
1162         * src/clfswm-util.lisp (show/hide-all-groups-info/key): Show/hide all groups info
1163         window.
1165 2008-03-14  Philippe Brochard  <pbrochard@common-lisp.net>
1167         * bindings-second-mode.lisp ("ISO_Left_Tab"): Use ISO_Left_Tab
1168         instead of Tab for select-previous-child.
1170 2008-03-13  Philippe Brochard  <pbrochard@common-lisp.net>
1172         * clfswm-util.lisp (force-window-in-group/force-window-center-in-group):
1173         new functions.
1175 2008-03-11  Philippe Brochard  <pbrochard@common-lisp.net>
1177         * clfswm-util.lisp (identify-key): Display the documentation
1178         associated to keys when identifying a key.
1180 2008-03-10  Xavier Maillard  <xma@gnu.org>
1182         * contrib/clfswm: Complete rewrite of the script. Detect error and
1183         act accordingly. Add command line arguments to configure the
1184         script execution. User can now choose different common lisp
1185         implementation (clisp and sbcl only), choose where to store the
1186         dumped image, where to find clfswm source.
1188 2008-03-09  Philippe Brochard  <pbrochard@common-lisp.net>
1190         * clfswm-internal.lisp (process-new-window): Beginning of new
1191         window hook: each group have a hook to tell what he wants to do
1192         with the new created window.
1194 2008-03-08  Xavier Maillard  <xma@gnu.org>
1196         * contrib/clfswm: New script. Dump a CLISP image of CLFSWM then
1197         call the resulting executable.
1199         * clfswm.lisp (read-conf-file): Check for the user config file in
1200         XDG_CONFIG_HOME *first*. Freedesktop.org standards should be
1201         prefered whenever possible.
1203 2008-02-27  Philippe Brochard  <pbrochard@common-lisp.net>
1205         * clfswm-layout.lisp (*-layout): Add an optional raise-p
1206         parameter in each layout.
1208 2008-02-26  Philippe Brochard  <pbrochard@common-lisp.net>
1210         * clfswm-util.lisp (copy/cut-current-child): Does not affect the
1211         root group.
1212         (copy/move-current-child-by-name/number): new functions
1213         (focus-group-by-name/number): new functions
1214         (delete-group-by-name/number): new functions
1216 2008-02-24  Philippe Brochard  <pbrochard@common-lisp.net>
1218         * ************************************************************ *
1219         *: Major update - No more reference  to workspaces. The main   *
1220         structure is a tree of groups or application windows.          *
1221         * ************************************************************ *
1223 2008-02-07  Philippe Brochard  <pbrochard@common-lisp.net>
1225         * clfswm.lisp (read-conf-file): Read configuration in
1226         $HOME/.clfswmrc or in /etc/clfswmrc or in
1227         $XDG_CONFIG_HOME/clfswm/clfswmrc.
1228         (xdg-config-home): Return the content of $XDG-CONFIG-HOME (default
1229         to $HOME/.config/).
1231 2008-01-18  Philippe Brochard  <pbrochard@common-lisp.net>
1233         * clfswm-internal.lisp (show-all-group): Use *root* and *root-gc*
1234         by default.
1236 2008-01-03  Philippe Brochard  <pbrochard@common-lisp.net>
1238         * clfswm-internal.lisp (find-window-group): New function.
1240         * clfswm*: Change to make clfswm run with clisp/new-clx.
1242 2008-01-01  Philippe Brochard  <pbrochard@common-lisp.net>
1244         * clfswm-util.lisp (query-show-paren): Add show parent matching in
1245         query string.
1246         (query-string): Bind control+k to delete end of line.
1248         * clfswm-second-mode.lisp (draw-second-mode-window): Display
1249         the action on mouse motion in second mode.
1251         * clfswm.lisp (handle-exposure): Redisplay groups on exposure
1252         event but do not clear the root window.
1253         (handle-configure-request): Adjust unmanaged window from there
1254         request.
1256         * clfswm-internal.lisp (process-new-window): Adjust new window
1257         with the specified hints (max/min/base width/height).
1259 2007-12-31  Philippe Brochard  <pbrochard@common-lisp.net>
1261         * clfswm.lisp (handle-configure-request): Send an Configuration
1262         Notify event. This solve a bug with xterm and rxvt who takes some
1263         times to be mapped. Now there is no delay.
1265         * bindings-second-mode.lisp (define-shell): Run programs after
1266         living the second mode.
1268 2007-12-30  Philippe Brochard  <pbrochard@common-lisp.net>
1270         * clfswm-internal.lisp (process-new-window): Do not crop transient
1271         window to group size.
1272         (adapt-window-to-group): Do not crop transient window to group
1273         size.
1275         * clfswm.lisp (handle-configure-request): Adapt just the window to
1276         its group and don't take care of the configure request. Remove the
1277         bug with the Gimp outside the group and speed up the window
1278         manipulation.
1279         (handle-exposure): Remove show-all-group on exposure event
1280         -> Speed up.
1282 2007-12-29  Philippe Brochard  <pbrochard@common-lisp.net>
1284         * clfswm-util.lisp (circulate-group-up-copy-window)
1285         (circulate-group-down-copy-window)
1286         (circulate-workspace-up-copy-group)
1287         (circulate-workspace-down-copy-group): Prevent the copy of the
1288         same window in the same workspace.
1290         * bindings-second-mode.lisp (release-copy-selected-window)
1291         (release-copy-selected-group): Prevent the copy of the same window
1292         in the same workspace.
1294         * clfswm-pager.lisp (generic-pager-move-window-on-previous-line)
1295         (generic-pager-move-window-on-next-line): Remove the copy
1296         property.
1297         (generic-pager-move-group-on-next-workspace)
1298         (generic-pager-move-group-on-previous-workspace): Prevent the copy
1299         of the same window in the same workspace.
1301         * bindings-pager.lisp (mouse-pager-copy-selected-window-release)
1302         (mouse-pager-copy-selected-group-release): Prevent the copy of the
1303         same window in the same workspace.
1305         * tools.lisp (setf/=): new macro to set a variable only when
1306         necessary.
1308         * clfswm-internal.lisp (adapt-window-to-group): use set/= to set
1309         x, y... only when necessary.
1311 2007-12-28  Philippe Brochard  <pbrochard@common-lisp.net>
1313         * clfswm.lisp (handle-configure-notify, *configure-notify-hook*):
1314         new function and hook: force windows to stay in its group (solve a
1315         bug with the Gimp).
1317 2007-12-25  Philippe Brochard  <pbrochard@common-lisp.net>
1319         * bindings-second-mode.lisp (mouse-motion): use hide-group to have
1320         less flickering when moving/resizing groups.
1322         * clfswm-internal.lisp (hide-group): new function.
1323         (show-all-group): clear-all: new parameter.
1325 2007-12-22  Philippe Brochard  <pbrochard@common-lisp.net>
1327         * clfswm-keys.lisp (define-define-key): undefine-*-multi-name: new
1328         macro.
1329         * clfswm*: Color change for the pager. Typo or better description
1330         in bindings definitions. Define bindings for a qwerty keyboard by
1331         default. dot-clfswmrc show examples to switch to an azerty
1332         keyboard.
1333         License change to GPL v3.
1334         * config.lisp: new file - group all globals variables in this
1335         file.
1337 2007-08-26  Philippe Brochard  <pbrochard@common-lisp.net>
1339         * xlib-util.lisp (hide-window): Remove structure-notivy events
1340         when hidding a window.
1342 2007-05-16  Philippe Brochard  <pbrochard@common-lisp.net>
1344         * package.lisp (*sm-property-notify-hook*): Readded
1345         property-notify-hook in second mode.
1347 2007-05-15  Philippe Brochard  <pbrochard@common-lisp.net>
1349         * clfswm-keys.lisp (produce-doc-html): Better clean up for strings.
1351 2007-05-13  Philippe Brochard  <pbrochard@common-lisp.net>
1353         * clfswm-pack.lisp (tile-current-workspace-to/right/left/top/bottom):
1354         Tile the current workspace with the current window on one side and
1355         others on the other (this emulate the larswm, dwm, wmii way). See
1356         the default configuration file to enable this mode by default.
1358         * clfswm-pager.lisp (pager-tile-current-workspace-to): idem for
1359         the pager.
1361 2007-05-12  Philippe Brochard  <pbrochard@common-lisp.net>
1363         * clfswm-pager.lisp (pager-draw-window-in-group): Add
1364         ensure-printable to print windows name even with non-ascii
1365         characters.
1367 2007-05-11  Philippe Brochard  <pbrochard@common-lisp.net>
1369         * clfswm-pager.lisp (pager-explode-current-group): Create a new
1370         group for each window in group.
1371         (pager-implode-current-group): Move all windows in workspace to
1372         one group and remove other groups.
1374         * clfswm-pack.lisp (explode-group): Create a new group for each
1375         window in group.
1376         (implode-group): Move all windows in workspace to one group and
1377         remove other groups.
1379         * clfswm-util.lisp (identify-key): Remove local configuration
1380         variables and made them available for configuration from
1381         package.lisp.
1382         (query-string): idem.
1384 2007-04-29  Philippe Brochard  <pbrochard@common-lisp.net>
1386         * netwm-util.lisp: Start of NetWM compliance.
1387         Add a Netwm client list gestion.
1389 2007-04-28  Philippe Brochard  <pbrochard@common-lisp.net>
1391         * clfswm-internal.lisp (create-group-on-request): open a new group
1392         only when the current group is not empty.
1394         * bindings-second-mode.lisp (define-second-key-#\o-control): Fix a
1395         bug with null workspace.
1397         * clfswm-pager.lisp (pager-handle-event): Add a hook
1398         system. This hooks can be changed in the user configuration file.
1400         * package.lisp: All colors and font variables are set in
1401         package.lisp and can be configured in the user configuration
1402         file.
1403         Note: If you have configured some less ugly colors (esp. for the
1404         pager) don't hesitate to let me know :)
1406         * clfswm-second-mode.lisp (sm-handle-event): Add a hook
1407         system. This hooks can be changed in the user configuration file.
1409         * clfswm.lisp (handle-event): Add a hook system. This hooks can be
1410         changed in the user configuration file (~/.clfswmrc)
1412 2007-04-25  Philippe Brochard  <pbrochard@common-lisp.net>
1414         * clfswm-util.lisp (stop-all-pending-actions): new function: reset
1415         arrow action, open next window in new workspace/group.
1417         * bindings.lisp (stop-all-pending-actions): new binding.
1418         (open-next-window-in-new-group-once): Open the next windows in a
1419         new group (only once) or open all new windows in a new group (like
1420         others windows managers).
1422 2007-04-22  Philippe Brochard  <pbrochard@common-lisp.net>
1424         * clfswm.lisp (read-conf-file): New function to read a lisp
1425         configuration file at startup.
1426         (focus-group-under-mouse): Check if group isn't the current group
1427         ( prevent a bug with unclutter ).
1429 2007-03-02  Philippe Brochard  <pbrochard@common-lisp.net>
1431         * bindings.lisp (run-program-from-query-string): A program can be
1432         launch from a input query window.
1434 2007-03-01  Philippe Brochard  <pbrochard@common-lisp.net>
1436         * clfswm-info.lisp: Fix a bug with banish pointer in info mode.
1438 2007-02-28  Philippe Brochard  <pbrochard@common-lisp.net>
1440         * clfswm.lisp (process-new-window): One can now open the next
1441         window in a workspace called by its number.
1443         * clfswm-util.lisp (query-font-string): Minimal editing
1444         capabilities.
1445         (eval-from-string): And an REPL in the window manager... :)
1447 2007-02-26  Philippe Brochard  <pbrochard@common-lisp.net>
1449         * clfswm.lisp (process-new-window): One can now open the next
1450         window in a new workspace or a new group.
1452         * clfswm-pager.lisp (pager-mode): Display the next arrow action
1453         with the hidden windows.
1455         * clfswm.lisp (second-key-mode): Display the current workspace
1456         number and the next arrow action in the state window.
1458         * clfswm-pager.lisp (pager-mode): Hide all windows before leaving
1459         the pager mode and then redisplay only the current workspace.
1461 2007-02-25  Philippe Brochard  <pbrochard@common-lisp.net>
1463         * clfswm.lisp (add-workspace): Workspaces are now numbered. So
1464         they can be focused with a keypress, sorted or renumbered.
1466 2007-02-24  Philippe Brochard  <pbrochard@common-lisp.net>
1468         * clfswm-pager.lisp (pager-mode): Remove multiple silly
1469         pager-draw-display. This prevent a lot of flickering in the
1470         pager.
1472         * clfswm.lisp: Remove all display-force-output and replace them
1473         with only one display-finish-output in the event loop.
1475 2006-11-06  Philippe Brochard  <pbrochard@common-lisp.net>
1477         * clfswm-pager.lisp (pager-center-group): New function - center a
1478         group at the middle of the screen.
1480         * clfswm-pack.lisp (center-group): New function - center a group
1481         at the middle of the screen.
1483         * clfswm.lisp (show-group): Add a cross line under the group.
1484         (show-group): Group are showned even if fullscreened.
1485         (init-display): Add an exposure event on the root window.
1487 2006-11-05  Philippe Brochard  <pbrochard@common-lisp.net>
1489         * package.lisp (*default-group*): Default group is the same size
1490         of a fullscreened group.
1492         * bindings*: Use shift to move, control+shift to copy.
1494         * *.lisp: Add comments for configuration or alternatives. So grep
1495         for CONFIG to see where you can configure clfswm. And grep for
1496         Alternative to use some commented code.
1498         * clfswm.lisp (second-key-mode): Use a single window to show the
1499         second mode. See for alternatives at the end of this file.
1501 2006-11-03  Philippe Brochard  <pbrochard@common-lisp.net>
1503         * clfswm-keys.lisp (define-define-key/mouse): Factorisation in a
1504         macro of key and mouse definitions.
1505         (define-define-key/mouse): Use state instead of modifiers list
1506         this fix a bug when the modifiers list is not in the rigth order.
1508         * clfswm.lisp (second-key-mode): Add a colored border in second mode.
1510 2006-11-02  Philippe Brochard  <pbrochard@common-lisp.net>
1512         * clfswm-info.lisp (info-mode): Add an info mode.
1514 2006-11-01  Philippe Brochard  <pbrochard@common-lisp.net>
1516         * clfswm.lisp (process-new-window): Change border size for
1517         transient windows.
1518         (show-all-windows-in-workspace): Unhide all windows even when the
1519         current group is in fullscreen mode.
1521 2006-10-26  Philippe Brochard  <pbrochard@common-lisp.net>
1523         * clfswm-util.lisp (identify-key): Add an exposure handle-event to
1524         redisplay the identify window after a terminal switch.
1526         * clfswm-pager.lisp (pager-mode): Add an exposure handle-event to
1527         redisplay the pager after a terminal switch.
1529 2006-10-24  Philippe Brochard  <pbrochard@common-lisp.net>
1531         * clfswm-util.lisp (identify-key): Add a window to display
1532         the keys to identify on screen.
1534         * bindings.lisp, bindings-pager.lisp: Define same keys to
1535         move/copy groups/windows in second mode and in pager.
1537         * clfswm.lisp (handle-event*): Same version in all clfswm (fix some
1538         drawing lags).
1539         (show-all-windows-in-workspace): unhide window before adapting it
1540         to group.
1542 2006-10-23  Philippe Brochard  <pbrochard@common-lisp.net>
1544         * clfswm.lisp (handle-event): Revert to an older version.
1546 2006-10-18  Philippe Brochard  <pbrochard@common-lisp.net>
1548         * clfswm-util.lisp (force-window-in-group)
1549         (force-window-center-in-group): New functions for transient windows.
1551         * clfswm-pager.lisp (pager-remove-current-workspace/group):
1552         bugfix: hide all windows before removing group or workspace.
1554 2006-10-17  Philippe Brochard  <pbrochard@common-lisp.net>
1556         * bindings-pager.lisp (mouse-pager-move-selected-group)
1557         (mouse-pager-copy-selected-group)
1558         (mouse-pager-move-selected-window)
1559         (mouse-pager-copy-selected-window, mouse-pager-rotate-window-up)
1560         (mouse-pager-rotate-window-down): New functions to have mouse in
1561         pager mode.
1563         * clfswm-pager.lisp (pager-swap-window)
1564         (pager-copy-group-on-next/previous-workspace)
1565         (pager-copy-window-on-next/previous-line): New functions
1567 2006-10-15  Philippe Brochard  <pbrochard@common-lisp.net>
1569         * clfswm-pager.lisp (pager-move-window-on-next/previous-line,
1570         (pager-move-group-on-next/previous-workspace): new functions.
1572         * clfswm-pack.lisp (resize-half-x-x-current-group): resize group
1573         to its half size (new functions).
1575 2006-10-11  Philippe Brochard  <pbrochard@common-lisp.net>
1577         * clfswm-pager.lisp: workspaces, groups and windows can now be
1578         selectionned with the keyboard or the mouse.
1580 2006-10-09  Philippe Brochard  <pbrochard@common-lisp.net>
1582         * clfswm-pager.lisp (pager-select-workspace-right/left):
1583         workspaces can now be selectionned with the keyboard.
1585 2006-10-08  Philippe Brochard  <pbrochard@common-lisp.net>
1587         * clfswm-keys.lisp (undefine-main-key, undefine-second-key, undefine-mouse-action):
1588         new function to remove a previous defined key or mouse combination.
1590 2006-10-07  Philippe Brochard  <pbrochard@common-lisp.net>
1592         * clfswm.lisp (main): Check for access error in init-display.
1594         * clfswm-keys.lisp (define-ungrab/grab): check for keysym and
1595         keycode before grabbing.
1597         * bindings.lisp: Remove nlambda and use defun to keep the function
1598         documentation with clisp.
1599         (define-shell): new macro to define shell command for the second
1600         mode.
1602 2006-10-06  Philippe Brochard  <pbrochard@common-lisp.net>
1604         * clfswm-keys.lisp (define-ungrab/grab): use a cond instead of a
1605         boggus typecase.
1607 2006-10-05  Philippe Brochard  <pbrochard@common-lisp.net>
1609         * bindings.lisp (accept-motion): Move group bugfix in upper mouse
1610         workspace circulation.
1612         * clfswm-util.lisp (absorb-orphan-window): new function.
1614         * clfswm-keys.lisp: Keysyms support.
1616 2006-10-02  Philippe Brochard  <pbrochard@common-lisp.net>
1618         * clfswm.lisp (show-group): Use one gc for all groups and not one
1619         per group.
1621 2006-10-01  Philippe Brochard  <pbrochard@common-lisp.net>
1623         * bindings.lisp (define-second-key (#\l :mod-1)): fix a typo.
1625         * clfswm.lisp (adapt-window-to-group): Adapt only windows with
1626         width and height outside group.
1628 2006-09-28  Philippe Brochard  <pbrochard@common-lisp.net>
1630         * clfswm.lisp: First public release.