src/xlib-util.lisp (compress-motion-notify): Use a loop instead of an event-case.
[clfswm.git] / ChangeLog
blob06b5e892c17189f3c7d28cc5676ff27891253ed0
1 2010-08-17  Philippe Brochard  <pbrochard@common-lisp.net>
3         * src/xlib-util.lisp (compress-motion-notify): Use a loop instead
4         of an event-case.
6         * src/clfswm-internal.lisp (with-find-in-all-frames): New macro.
7         (find-parent-frame, find-frame-window, find-frame-by-name)
8         (find-frame-by-number): Use with-find-in-all-frames to search in
9         frames in the right order.
11         * src/clfswm-util.lisp (mouse-click-to-focus-generic): Fix an
12         unwanted flickering with unmanaged windows.
14 2010-08-16  Philippe Brochard  <pbrochard@common-lisp.net>
16         * src/package.lisp: Remove event handler hooks as they're not
17         needed anymore (To replace them: use closure and define-handler).
19         * src/xlib-util.lisp (move-window, resize-window)
20         (wait-mouse-button-release): Use a generic mode.
22         * src/*.lisp: Replace the case to handle event with a more (tricky)
23         lispy  method which bind a function to each keywords associated
24         to graphics events.
26 2010-07-23  Philippe Brochard  <pbrochard@common-lisp.net>
28         * src/clfswm-util.lisp (delete-current-child): Invert bindings and
29         menu entry between delete-current-child and remove-current-child.
30         ie: Delete a child and its children in all frames by default.
32 2010-07-21  Philippe Brochard  <pbrochard@common-lisp.net>
34         * src/package.lisp: Add a placement configuration group.
36         * src/binding*.lisp: Bind control+g to escape the current action
37         like emacs.
39         * src/clfswm-internal.lisp
40         (delete-child-and-children-in-all-frames): New function and
41         binding: Second mode - Control+Delete delete the current child and
42         its children in all frames (ie: close the current child and its
43         children).
45 2010-07-20  Philippe Brochard  <pbrochard@common-lisp.net>
47         * src/clfswm-internal.lisp (remove-child-in-frame): Do not destroy
48         the frame window and the frame gc. Close a very annoying bug when
49         cuting/pasting a frame or moving a child over frames with the
50         mouse.
52         * src/clfswm-util.lisp (mouse-click-to-focus-generic): Redisplay
53         all children in *current-root* after moving/resizing a frame.
55 2010-07-18  Philippe Brochard  <pbrochard@common-lisp.net>
57         * src/clfswm-util.lisp (delete-focus-window)
58         (destroy-focus-window): Remove child in parent frame before
59         stopping it.
61 2010-07-16  Philippe Brochard  <pbrochard@common-lisp.net>
63         * src/clfswm-util.lisp (identify-key): Add a timeout in
64         xlib:process-event.
65         (mouse-click-to-focus-generic): Use find-child-under-mouse instead
66         of the window passed by xlib:process-event.
68         * src/xlib-util.lisp (move-window, resize-window)
69         (wait-mouse-button-release): Add a timeout in xlib:process-event.
71 2010-04-11  Philippe Brochard  <pbrochard@common-lisp.net>
73         * src/clfswm-util.lisp (run-other-window-manager): Add the ability
74         to launch an other window manager and to return to clfswm.
76 2010-03-18  Philippe Brochard  <pbrochard@common-lisp.net>
78         * src/clfswm-layout.lisp (set-tile-space-layout): Set default
79         to 1%.
81 2009-12-15  Philippe Brochard  <pbrochard@common-lisp.net>
83         * src/clfswm.lisp (main-loop): Add a *loop-hook* parameter and a
84         loop timeout.
86         * src/clfswm-generic-mode.lisp (generic-mode): Add a loop-hook
87         parameter and a loop timeout.
89 2009-12-05  Philippe Brochard  <pbrochard@common-lisp.net>
91         * src/clfswm.lisp (main): Add an alternate configuration filename
92         parameter.
94         * load.lisp: Add a debuging code example.
96 2009-11-14  Philippe Brochard  <pbrochard@common-lisp.net>
98         * src/clfswm-configuration.lisp (create-configuration-menu): New
99         menu to configure all clfswm variables while clfswm is running.
101 2009-11-12  Philippe Brochard  <pbrochard@common-lisp.net>
103         * src/clfswm-util.lisp (save-configuration-variables): New
104         function to save all configuration variables in clfswmrc.
106 2009-11-11  Philippe Brochard  <pbrochard@common-lisp.net>
108         * src/clfswm-info.lisp (info-mode): Begining of mouse support in
109         info mode.
110         (set-default-info-keys): Add cursor key support in info mode.
112 2009-11-08  Philippe Brochard  <pbrochard@common-lisp.net>
114         * contrib/reboot-halt.lisp: Add a Suspend/Reboot/Halt menu in
115         contrib.
117         * src/clfswm.lisp (main): Add a read-conf-file-p parameter to
118         prevent reading the configuration file (this may be useful to
119         produce the original documentation without user modifications
120         with the rc configuration file).
122 2009-11-07  Philippe Brochard  <pbrochard@common-lisp.net>
124         * src/bindings-second-mode.lisp (set-default-second-keys):
125         Simplification of Escape key to close/kill/remove the focus window
126         and unhide all windows.
128         * src/bindings.lisp (set-default-main-keys): Simplification of
129         Escape key to close/kill/remove the focus window and unhide all
130         windows.
132         * src/clfswm-util.lisp (ask-close/kill-current-window): Add remove
133         focus and unhide all windows capabilities.
135 2009-10-10  Philippe Brochard  <pbrochard@common-lisp.net>
137         * contrib/mpd.lisp (start-gmpc): Add gmpc in the mpd menu.
139 2009-07-29  Philippe Brochard  <pbrochard@common-lisp.net>
141         * src/clfswm-layout.lisp (tile-layout, tile-horizontal-layout):
142         Keep child order and don't make unnecessary child movement.
143         (one-column-layout, one-line-layout): New layouts.
145 2009-06-29  Philippe Brochard  <pbrochard@common-lisp.net>
147         * contrib/cd-player.lisp: New file to handle the CD player.
149         * contrib/xmms.lisp: New file to handle the xmms player.
151 2009-06-28  Philippe Brochard  <pbrochard@common-lisp.net>
153         * src/clfswm-layout.lisp (set-no-layout-remember-size): New layout:
154         Maximize windows in there frame - Leave frames to there actual
155         size.
157         * src/bindings-second-mode.lisp (set-default-second-keys): Bind
158         "o" on set-open-in-new-frame-in-parent-frame-nw-hook.
160 2009-06-27  Philippe Brochard  <pbrochard@common-lisp.net>
162         * contrib/keyb_fr.lisp: New file to handle an azerty keyboard.
164 2009-06-24  Philippe Brochard  <pbrochard@common-lisp.net>
166         * contrib/mpd.lisp: Use a standard menu.
168         * src/clfswm-info.lisp: Use a standard menu for the help-menu.
170 2009-06-22  Philippe Brochard  <pbrochard@common-lisp.net>
172         * contrib/mpd.lisp: New file to handle the Music Player Daemon (MPD)
174 2009-06-19  Philippe Brochard  <pbrochard@common-lisp.net>
176         * src/clfswm-autodoc.lisp (produce-doc, produce-doc-html): Minor
177         number key cleanup.
179 2009-06-18  Philippe Brochard  <pbrochard@common-lisp.net>
181         * src/config.lisp (get-fullscreen-size):  One pixel adjustment
182         (again).
184         * src/clfswm-placement.lisp (*-child-placement): One pixel
185         adjustment (again).
187 2009-06-16  Philippe Brochard  <pbrochard@common-lisp.net>
189         * src/clfswm-circulate-mode.lisp (draw-circulate-mode-window):
190         Ensure that all characters are printable.
192         * src/config.lisp (get-fullscreen-size): Adjust default fullscreen
193         sizes.
195         * src/clfswm-placement.lisp (*-child-placement): Adjust
196         coordinates to one pixel in the current child.
198 2009-06-04  Philippe Brochard  <pbrochard@common-lisp.net>
200         * src/clfswm-query.lisp (query-enter-function): Assign font before
201         width and height calculation.
203 2009-06-03  Philippe Brochard  <pbrochard@common-lisp.net>
205         * src/xlib-util.lisp (banish-pointer): Use with-placement macro to
206         bannish the pointer in an arbitrary place.
208         * src/clfswm-info.lisp (info-mode): Use with-placement macro to
209         place the info window in an arbitrary place.
211         * src/clfswm-query.lisp (query-enter-function): Use with-placement
212         macro to place the query window in an arbitrary place.
214         * src/clfswm-placement.lisp: New file. Allow to place info windows
215         or query windows on an arbitrary place. Allow to bannish the
216         pointer on an arbitrary place.
218 2009-05-16  Philippe Brochard  <pbrochard@common-lisp.net>
220         * src/clfswm-circulate-mode.lisp (reorder-child)
221         (reorder-brother): Unfocus windows before reordering children or
222         brothers.
224 2009-05-13  Philippe Brochard  <pbrochard@common-lisp.net>
226         * src/clfswm-circulate-mode.lisp (reorder-brother): Ensure that
227         the parent is a frame.
229         * src/clfswm-second-mode.lisp (sm-handle-motion-notify): Handle
230         motion with a default modifier.
232         * src/clfswm.lisp (handle-motion-notify): Handle motion with a
233         default modifier.
235         * src/clfswm-info.lisp (info-mode): Handle motion with a default
236         modifier.
237         (info-mode): Optimization in loop function.
239 2009-05-10  Philippe Brochard  <pbrochard@common-lisp.net>
241         * src/clfswm-circulate-mode.lisp (reorder-brother): Handle
242         root-frame correctly.
244         * clfswm.asd: Dependency fix for clfswm-generic-mode.
246         * src/clfswm-circulate-mode.lisp (reorder-child)
247         (reorder-brother): Handle empty frames.
248         (reorder-brother): Redisplay only the parent frame of the  current
249         child.
251         * src/clfswm-util.lisp (frame-toggle-maximize): Redisplay only the
252         parent frame of the  current frame.
254 2009-05-09  Philippe Brochard  <pbrochard@common-lisp.net>
256         * src/clfswm-util.lisp (frame-toggle-maximize): New function:
257         Maximize/Unmaximize the current frame in its parent frame.
259         * src/clfswm-layout.lisp (maximize-layout): New layout: Maximize
260         windows and frames in there parent frame.
262 2009-05-05  Philippe Brochard  <pbrochard@common-lisp.net>
264         * src/*.lisp: Add support for Clozure Common Lisp (CCL).
266         * src/clfswm-circulate-mode.lisp (reorder-child)
267         (reorder-brother): Reinitialise on circulate type change
268         child to brother or brother to child.
270         * src/*.lisp (*): Use map-window instead of xlib:map-window. So
271         calls xlib:display-finish-output on each map-request. So speed up
272         the window display.
274         * src/xlib-util.lisp (map-window): New function. Call
275         xlib:display-finish-output on each map request.
277 2009-04-28  Philippe Brochard  <pbrochard@common-lisp.net>
279         * src/clfswm-second-mode.lisp (sm-handle-motion-notify):
280         Optimisation when drawing second mode window.
282 2009-04-27  Philippe Brochard  <pbrochard@common-lisp.net>
284         * src/clfswm-circulate-mode.lisp (circulate-mode): Optimisation in
285         window redraw.
287 2009-04-22  Philippe Brochard  <pbrochard@common-lisp.net>
289         * src/clfswm-util.lisp (run-program-from-query-string): Launch
290         command only with a return validation.
292 2009-04-22  Xavier Maillard  <xma@gnu.org>
294         * src/clfswm-query.lisp (query-string): Use a generic mode.
296 2009-04-19  Xavier Maillard  <xma@gnu.org>
298         * src/clfswm-info.lisp (info-mode): Use generic-mode for info-mode.
300 2009-04-18  Xavier Maillard  <xma@gnu.org>
302         * src/clfswm-generic-mode.lisp (generic-mode): Add a generic mode
303         to define all other modes.
305 2009-04-05  Philippe Brochard  <pbrochard@common-lisp.net>
307         * src/package.lisp (): Use *default-font-string* for all
308         font-string.
310         * src/clfswm-info.lisp (info-mode): Ensure integer windows size.
312 2009-02-17  Philippe Brochard  <pbrochard@common-lisp.net>
314         * src/xlib-util.lisp (null-size-window-p): Better check of null
315         sized windows.
317 2009-02-14  Philippe Brochard  <pbrochard@common-lisp.net>
319         * src/clfswm.lisp (handle-map-request): Add a fix to manage
320         correctly fullscreen windows (SDL particularly).
322 2008-12-20  Philippe Brochard  <pbrochard@common-lisp.net>
324         * src/xlib-util.lisp (get-color): Allocate colors only once -> fix
325         a segfault with clisp/new-clx.
327         * src/clfswm.lisp (handle-motion-notify): Add a needed window
328         argument.
330         * src/clfswm-second-mode.lisp (sm-handle-motion-notify): Add a
331         needed window argument.
333 2008-10-30  Philippe Brochard  <pbrochard@common-lisp.net>
335         * src/xlib-util.lisp (wait-no-key-or-button-press)
336         (wait-a-key-or-button-press): Check buttons press/release correctly"
338 2008-10-28  Philippe Brochard  <pbrochard@common-lisp.net>
340         * src/menu-def.lisp: Add children navigation menu in the movement
341         menu (select next/previous child/brother/level).
343 2008-10-26  Philippe Brochard  <pbrochard@common-lisp.net>
345         *  *: Rename 'sister' frame to 'brother' frame.
347         * src/clfswm-keys.lisp (unalias-modifiers): Convert a modifier
348         alias in a real modifier.
350         * src/package.lisp (*modifier-alias*): New list of modifier alias
351         For example: :alt is :mod-1, :numlock is :mod-2...
353         * src/tools.lisp (remove-hook): New function.
355         * src/clfswm-keys.lisp (with-capslock, without-capslock)
356         (with-numlock, without-cnumlock): New functions.
358 2008-10-25  Philippe Brochard  <pbrochard@common-lisp.net>
360         * src/clfswm-info.lisp: Use the *binding-hook* to create info
361         keys and mouse bindings.
363         * src/bindings-second-mode.lisp: Use the *binding-hook* to create
364         second keys and mouse bindings.
366         * src/bindings.lisp: Use the *binding-hook* to create main keys
367         and mouse bindings.
369 2008-10-10  Philippe Brochard  <pbrochard@common-lisp.net>
371         * src/clfswm-menu.lisp (open-menu): Remember parent menu to undo
372         menu opening.
374 2008-10-09  Philippe Brochard  <pbrochard@common-lisp.net>
376         * src/menu-def.lisp: Use a menu instead of a function for the
377         standard menu.
379 2008-10-08  Philippe Brochard  <pbrochard@common-lisp.net>
381         * src/clfswm-util.lisp (show-standard-menu): Display the standard
382         menu from the 'update-menus' command.
384 2008-10-07  Philippe Brochard  <pbrochard@common-lisp.net>
386         * src/clfswm-query.lisp (query-string): Do not ungrab keyboard if
387         it's already grabbed.
389         * src/clfswm-internal.lisp (display-frame-info): Use configurable
390         colors and fix a bug with background.
391         (display-frame-info): Set window background when displaying info.
393 2008-10-06  Philippe Brochard  <pbrochard@common-lisp.net>
395         * src/xlib-util.lisp (my-character->keysyms): Use a macro to avoid
396         warning with clisp/new-clx.
398 2008-10-04  Philippe Brochard  <pbrochard@common-lisp.net>
400         * src/clfswm-util.lisp (jump-to-slot): Prevent to jump on a
401         deleted child.
403 2008-09-23  Philippe Brochard  <pbrochard@common-lisp.net>
404         * *: **** Release 0809 ****
406 2008-09-23  Philippe Brochard  <pbrochard@common-lisp.net>
408         * src/clfswm-util.lisp (ensure-unique-name): New function and menu
409         entry.
410         (ensure-unique-number): New function and menu entry.
412 2008-09-22  Philippe Brochard  <pbrochard@common-lisp.net>
414         * src/clfswm-nw-hooks.lisp (named-frame-nw-hook): New new window
415         hook: open the next window in a named frame.
416         (numbered-frame-nw-hook): New new window hook: open the next
417         window in a numbered frame.
419         * src/clfswm-query.lisp (query-string): Grab the keyboard in all
420         cases. So query-string can be called even in the main mode.
422         * src/clfswm-internal.lisp (show-all-children): Do not raise a
423         child by default => far less flickering.
425 2008-09-19  Philippe Brochard  <pbrochard@common-lisp.net>
427         * src/bindings-second-mode.lisp: Bind "t" to tile-current-frame.
429         * src/menu-def.lisp: Change key binding for the CLFSWM menu
430         entry.
432         * src/xlib-util.lisp (xgrab-pointer): Handle the case where cursor
433         is nil. (workaround on some CLX implementation).
435 2008-09-12  Philippe Brochard  <pbrochard@common-lisp.net>
437         * src/menu-def.lisp: Add a menu to set a focus policy for all
438         frames.
440         * src/clfswm-util.lisp (set-focus-policy-generic-for-all)
441         (all-frames-set-*-focus-policy): Set a focus policy for all
442         frames.
444         * src/clfswm.lisp (handle-enter-notify): sloppy-select
445         mode. Select a child and its parents on mouse over.
447 2008-09-03  Philippe Brochard  <pbrochard@common-lisp.net>
449         * src/clfswm.lisp (handle-enter-notify): Add a sloppy strict focus
450         policy -> Sloppy focus only for windows in the current frame.
451         (main-unprotected): Exit clfswm on init error (ie: when another
452         window manager is running).
454         * src/clfswm-util.lisp (reset-clfswm): New function.
456 2008-09-02  Philippe Brochard  <pbrochard@common-lisp.net>
458         * src/clfswm-menu.lisp (init-menu): New function.
460         * src/clfswm-util.lisp (reload-clfswm): New function to reload
461         CLFSWM.
462         (exit-clfswm): Rename quit-clfswm to exit-clfswm.
464         * src/clfswm.lisp (main, main-unprotected): Handle error in a
465         superior main function. Now CLFSWM can't break the X session. It
466         just reinitialize the display and run a new main loop.
468         * src/clfswm-corner.lisp: Make *clfswm-terminal* and
469         *vt-keyboard-on* global to avoid warnings when loading clfswm.
471         * src/clfswm-layout.lisp: Add a specific GIMP layout menu.
472         (help-on-gimp-layout): Describe how to use the GIMP layout.
474 2008-09-01  Philippe Brochard  <pbrochard@common-lisp.net>
476         * src/clfswm-layout.lisp (set-gimp-layout): Change the layout to
477         main-window-right-layout. Change the keybinding for (shift)alt+tab
478         to not select windows in the main window lisst.
479         Bind F8 to add a window in the main window list.
480         Bind F9 to remove a window in the main window list.
481         Change the focus policy to :sloppy.
482         (set-previous-layout): Restore the previous layout, keybinding and
483         focus policy.
485 2008-08-31  Philippe Brochard  <pbrochard@common-lisp.net>
487         * src/clfswm-menu.lisp (add-menu-comment): Add comments in menu.
489         * src/clfswm-layout.lisp (main-window-left-layout)
490         (main-window-bottom-layout, main-window-top-layout): New
491         functions.
492         Factorize layouts in menu.
494 2008-08-30  Philippe Brochard  <pbrochard@common-lisp.net>
496         * src/clfswm-layout.lisp (main-window-right-layout): A possible
497         GIMP layout: one or more main windows on one side of the
498         frame. Others on the other size.
500         * src/clfswm-util.lisp
501         (current-frame-set-click/sloppy-focus-policy): Each frame can have
502         a different focus policy (one of :click or :sloppy).
503         The default focus policy is set with *default-focus-policy*.
505 2008-08-23  Philippe Brochard  <pbrochard@common-lisp.net>
507         * src/clfswm-info.lisp (show-config-variable): New function.
509 2008-08-19  Philippe Brochard  <pbrochard@common-lisp.net>
511         * src/clfswm-layout.lisp (tile-horizontal-layout): New layout.
513         * src/clfswm-info.lisp: Colored help for key binding and corners
514         actions.
516 2008-08-18  Philippe Brochard  <pbrochard@common-lisp.net>
518         * src/clfswm-util.lisp (delete-focus-window)
519         (destroy-focus-window): Remove chid only in
520         handle-unmap/destroy-notify. Focus *current-root* only when
521         closing/killing the current child.
523         * src/clfswm-autodoc.lisp (produce-corner-*-doc): New autodoc
524         functions or corners.
526 2008-08-17  Philippe Brochard  <pbrochard@common-lisp.net>
528         * src/clfswm-corner.lisp (present-clfswm-terminal): New corner
529         action: Hide/Unhide a terminal on mouse corner action. (By default
530         right mouse button on the top left corner).
532         * src/config.lisp (*never-managed-window-list*): New config
533         variable.
535         * src/clfswm-internal.lisp (never-managed-window-p): New function:
536         Handle never managed window in a more simple way.
538         * src/clfswm-corner.lisp: New file and new and more simple method
539         to define corners actions.
541 2008-08-15  Philippe Brochard  <pbrochard@common-lisp.net>
543         * src/clfswm-info.lisp (info-mode): Info line can now be colored.
545         * src/clfswm-layout.lisp (fast-layout-switch)
546         (define-fast-layout-switch): New functions: Switch between two
547         layouts.
549         * src/clfswm-second-mode.lisp (leave-second-mode): Takes care if
550         really in the second mode. So leave-second-mode can be used even
551         in the main mode.
553         * src/clfswm-util.lisp (switch-to-last-child): New function:
554         Store the current child and switch to the previous one.
556 2008-07-16  Philippe Brochard  <pbrochard@common-lisp.net>
558         * src/clfswm-util.lisp (display-current-window-info): Display the
559         window id.
560         (have-to-present-virtual-keyboard): Add a virtual keyboard corner
561         (top right by default). By default 'xvkbd' is used.
563 2008-06-28  Philippe Brochard  <pbrochard@common-lisp.net>
565         * src/xlib-util.lisp (move-window, resize-window): Compress motion
566         events.
568         * src/clfswm.lisp (handle-motion-notify): Compress motion events.
570         * src/clfswm-second-mode.lisp (sm-handle-motion-notify): Compress
571         motion events.
573         * src/clfswm-info.lisp (info-mode): Compress motion events.
575 2008-06-21  Philippe Brochard  <pbrochard@common-lisp.net>
577         * src/clfswm-internal.lisp (show-all-children): Compute geometry
578         and selection first and then show only necessary children.
579         (show-child): remove unneeded display-p parameter.
581         * src/config.lisp (get-fullscreen-size): Place the frame border
582         outside the screen (this prevent the loose of 2 pixels per
583         directions :)
585 2008-06-12  Philippe Brochard  <pbrochard@common-lisp.net>
587         * src/clfswm-internal.lisp (focus-child): Algorithm change to
588         raise only the selected child.
590 2008-06-08  Philippe Brochard  <pbrochard@common-lisp.net>
592         * src/clfswm-internal.lisp (raise-p-list, show-all-children):
593         Raise only viewable children.
595 2008-06-06  Philippe Brochard  <pbrochard@common-lisp.net>
597         * src/clfswm-internal.lisp (show-all-children): Always raise all
598         displayed children. Remove all references to raise-p.
600 2008-06-04  Philippe Brochard  <pbrochard@common-lisp.net>
602         * src/menu-def.lisp (child-menu): New menu entry on raise/lower
603         child in its frame.
605         * src/bindings-second-mode.lisp ("Page_Down", "Page_Up"): New
606         second mode binding on raise/lower child in its frame.
608         * src/clfswm-nw-hooks.lisp (leave-focus-frame-nw-hook): Adapt
609         behaviour to the new raise/lower property.
610         Call clear-nw-hook before the rest of the hook.
612         * src/bindings.lisp (mouse-click-to-focus-and-move-window)
613         (mouse-click-to-focus-and-resize-window): Stop button event. This
614         prevent a keyboard/pointer freeze.
616 2008-06-03  Philippe Brochard  <pbrochard@common-lisp.net>
618         * src/clfswm-internal.lisp (frame-lower-child)
619         (frame-raise-child): New functions to raise/lower a child in its
620         frame.
622         * src/clfswm-util.lisp (have-to-present-windows)
623         (have-to-present-all-windows): New functions to have an MaxOS
624         expose like on mouse click in screen corner.
626         * src/clfswm-info.lisp ("Page_Down", "Page_Up"): Add boundaries.
628 2008-05-30  Philippe Brochard  <pbrochard@common-lisp.net>
630         * src/clfswm-util.lisp (unhide-a-child-from-all-frames): Unhide a
631         child from a choice in all frames with hidden children.
633         * src/clfswm-info.lisp (info-mode-menu): Handle separators.
635 2008-05-28  Philippe Brochard  <pbrochard@common-lisp.net>
637         * src/clfswm-util.lisp (hide-current-child, unhide-a-child)
638         (unhide-all-children): New functions.
640         * src/clfswm-info.lisp (info-mode-menu): Handle symbols and
641         functions.
643         * src/clfswm-util.lisp (hide/show-frame-window): new function and
644         menu item.
646 2008-05-23  Philippe Brochard  <pbrochard@common-lisp.net>
648         * src/clfswm-util.lisp (rename-current-child): Do not display the
649         frame info for a window.
651 2008-05-20  Philippe Brochard  <pbrochard@common-lisp.net>
653         * src/clfswm-internal.lisp (remove-child-in-frame): Destroy the
654         frame window for the removed child and its children.
656 2008-05-18  Philippe Brochard  <pbrochard@common-lisp.net>
658         * src/clfswm-autodoc.lisp (produce-*-doc-*): Add a note to use the
659         autodoc functions.
661 2008-05-17  Philippe Brochard  <pbrochard@common-lisp.net>
663         * src/clfswm-nw-hooks.lisp (default-frame-nw-hook): Do not handle
664         the ROX pinboard (ie: leave it lowered in the root window as
665         expected).
667         * src/clfswm-layout.lisp (tile-left-space-layout): New layout.
668         (tile-left-layout, tile-right-layout, tile-top-layout)
669         (tile-bottom-layout): Use all the frame space when there is only
670         one child.
672         * src/clfswm-internal.lisp (place-window-from-hints): Center
673         unmanaged windows in the root screen.
675         * src/clfswm-nw-hooks.lisp (clear-nw-hook, clear-all-nw-hooks):
676         new functions.
678 2008-05-15  Philippe Brochard  <pbrochard@common-lisp.net>
680         * src/clfswm-util.lisp (current-frame-manage-window-type): Fix a
681         typo in managed types.
683         * src/clfswm-internal.lisp (show-child): Always display frame info
684         even if the frame is hidden.
686         * src/xlib-util.lisp (resize-window): Use a better algorithme to
687         resize windows.
689 2008-05-13  Philippe Brochard  <pbrochard@common-lisp.net>
691         * src/clfswm-util.lisp (with-movement): Display frame info for all
692         frames in current root.
694 2008-05-12  Philippe Brochard  <pbrochard@common-lisp.net>
696         * src/*.lisp: Rename 'brother' frames to 'sister' frames.
698         * src/bindings-second-mode.lisp (define-second-key #\a): New
699         binding on 'add-default-frame'.
701         * src/clfswm-autodoc.lisp (produce-*-doc-*-in-file): Show a
702         message to follow the autodocumentation process.
704 2008-05-10  Philippe Brochard  <pbrochard@common-lisp.net>
706         * src/clfswm-util.lisp (bind-or-jump): Bind "Tab", "Return" and
707         "Space" to jump to a child. "B" to bind a slot on the current
708         child.
710         * src/bindings-second-mode.lisp: Use "Tab" instead of
711         "Iso_Left_Tab".
713 2008-05-07  Philippe Brochard  <pbrochard@common-lisp.net>
715         * src/clfswm-util.lisp (find-child-under-mouse): Take care of
716         unmanaged (hidden) windows.
718         * src/clfswm-internal.lisp (place-window-from-hints): Give a
719         minimal size for windows.
720         (with-all-windows-frames-and-parent): New function.
722         * src/config.lisp (*default-window-width/height*): New parameters.
724         * src/clfswm-internal.lisp (place-window-from-hints): Center
725         windows in the screen instead of in there frame.
727         * src/bindings-second-mode.lisp (tile-space-current-frame): New
728         binding on C-t.
730         * src/clfswm-layout.lisp (register-layout): Intern the once name
731         in the right package.
733 2008-05-05  Philippe Brochard  <pbrochard@common-lisp.net>
735         * doc/dot-clfswmrc: Update to  follow the new clfswm way.
737 2008-05-03  Philippe Brochard  <pbrochard@common-lisp.net>
739         * src/clfswm-internal.lisp (set-current-child)
740         (adapt-child-to-parent, show-child, hide-child): Handle the case
741         where child is not a frame or a window.
743         * src/clfswm-util.lisp
744         (mouse-click-to-focus-generic,mouse-focus-move/resize-generic):
745         Check if child is a frame.
747         * src/clfswm-internal.lisp (managed-window-p): Handle the case
748         where frame is null.
749         (place-frame): Check if frame and parent are frames.
751         * src/clfswm-info.lisp (info-mode): display all frame info before
752         leaving.
754         * src/clfswm-second-mode.lisp (second-key-mode): display all frame
755         info before leaving.
757         * src/clfswm-internal.lisp (display-all-frame-info): New function.
759 2008-05-02  Philippe Brochard  <pbrochard@common-lisp.net>
761         * src/tools.lisp (getenv): Implemented for ECL.
762         (urun-prog): Implemented for ECL.
764         * src/clfswm-util.lisp (identify-key): Use a double buffer to
765         display text.
767         * src/clfswm-query.lisp (query-string): Use a double buffer to
768         display text.
770         * src/clfswm-info.lisp (draw-info-window): Use a double buffer to
771         display text.
773         * src/xlib-util.lisp (clear-pixmap-buffer, copy-pixmap-buffer):
774         New functions.
776 2008-05-01  Philippe Brochard  <pbrochard@common-lisp.net>
778         * src/clfswm-info.lisp (info-mode): Add boundaries in the info mode window.
780         * src/menu-def.lisp: New file: move all menu definition in
781         menu-def.lisp.
783         * src/clfswm-layout.lisp (register-layout): Use a function instead
784         of a macro.
786 2008-04-30  Philippe Brochard  <pbrochard@common-lisp.net>
788         * src/clfswm-autodoc.lisp (produce-menu-doc,
789         (produce-menu-doc-html): New functions.
790         (produce-doc-*): Moved to clfswm-autodoc.lisp.
792         * src/clfswm-util.lisp (paste-selection-no-clear): Prevent to
793         paste a child on one of its own children. (this prevent a
794         recursive bug).
795         (move-child-to): Rename move/copy-current-child-by to
796         move/copy-child-to.
797         (mouse-move-window-over-frame): New function to move the window
798         under the mouse cursor to another frame.
800         * src/clfswm-internal.lisp (find-child-in-parent): New function.
802 2008-04-29  Philippe Brochard  <pbrochard@common-lisp.net>
804         * src/clfswm-internal.lisp (show-all-children): Display unmanaged
805         windows only when its window parent is the current child.
807 2008-04-28  Philippe Brochard  <pbrochard@common-lisp.net>
809         * src/clfswm-util.lisp (manage-current-window)
810         (unmanage-current-window): New functions: Allow to force to manage
811         or unmanage a window by its parent frame.
813         * src/bindings-second-mode.lisp (#\o): binded to
814         set-open-in-new-frame-in-parent-frame-nw-hook and
815         (#\o :control) to set-open-in-new-frame-in-root-frame-nw-hook
817         * src/clfswm-util.lisp (with-current-window): New macro.
819         * src/xlib-util.lisp (move-window, resize-window): Remove uneeded
820         exposure and enter-window handle event.
822         * src/clfswm-util.lisp (move-frame, resize-frame): Show all
823         children for the current child after the move/resize.
825 2008-04-27  Philippe Brochard  <pbrochard@common-lisp.net>
827         * src/xlib-util.lisp (resize-window): Take care of window size
828         hints.
830         * src/clfswm-util.lisp (mouse-focus-move/resize-generic): Allow to
831         move/resize unmanaged windows.
833         * src/xlib-util.lisp (move-window, resize-window): New functions.
835 2008-04-25  Philippe Brochard  <pbrochard@common-lisp.net>
837         * src/clfswm-util.lisp (current-frame-manage-window-type): Let the
838         user choose what window type the current frame must handle.
839         (display-current-window-info): New function.
840         (current-frame-manage-all-window-type)
841         (current-frame-manage-only-normal-window-type)
842         (current-frame-manage-no-window-type): New functions.
844         * src/clfswm-internal.lisp (managed-window-p): New function.
846         * src/package.lisp (frame): Managed type: new frame
847         parameter. This allow to choose what window type a frame must
848         handle.
850         * src/*.lisp: Rename all 'father' occurrences to 'parent'.
852         * src/clfswm-nw-hooks.lisp
853         (open-in-new-frame-in-parent-frame-nw-hook): New new window hook.
855         * src/clfswm-util.lisp (adapt-current-frame-to-window-hints): New
856         function.
858         * src/tools.lisp (ensure-printable): Return always a string even
859         with a null string.
861 2008-04-24  Philippe Brochard  <pbrochard@common-lisp.net>
863         * src/config.lisp (*default-nw-hook*): New variable to change the
864         default new window hook.
866 2008-04-22  Philippe Brochard  <pbrochard@common-lisp.net>
868         * clfswm.asd (clfswm): Add a dependency from
869         clfswm-second-mode.lisp to clfswm.lisp.
871         * src/clfswm-util.lisp (identify-key): Show the documentation for
872         the function bound on a key.
873         (with-movement): Move with-movement,
874         current-frame-fill/pack/resize-*  from bindings-second-mode.lisp
875         to clfswm-util.lisp.
877         * src/clfswm-menu.lisp: New menu system that let user change keys
878         or functions associated to keys.
880 2008-04-18  Philippe Brochard  <pbrochard@common-lisp.net>
882         * src/clfswm-internal.lisp (show-all-children): Display-child is
883         the first child by default. Solve a bug with father-p.
885 2008-04-17  Philippe Brochard  <pbrochard@common-lisp.net>
887         * src/clfswm-internal.lisp (add-frame): Add frame return the
888         created frame.
889         (show-all-children): Move the size computation outside the
890         show-child part.
892         * src/bindings-second-mode.lisp (with-movement): Redisplay only
893         the current child.
895         * src/clfswm-util.lisp (mouse-click-to-focus-generic): Redisplay
896         only the current child.
898         * src/clfswm-internal.lisp (show-all-children): New display-child
899         parameter to display only the desired child and its children.
900         (select-next/previous-child): Only display the current child.
902 2008-04-14  Philippe Brochard  <pbrochard@common-lisp.net>
904         * src/clfswm.lisp (init-display): Move the default frame creation
905         on the default init hook.
907         * src/clfswm-keys.lisp (define-ungrab/grab): Handle all keysyms in
908         the main mode (for example: "1" on an azerty keyboard).
910 2008-04-13  Philippe Brochard  <pbrochard@common-lisp.net>
912         * src/clfswm-keys.lisp (find-key-from-code): Better handle of
913         keysyms. Revert to old grabbing method for the main mode.
915 2008-04-12  Philippe Brochard  <pbrochard@common-lisp.net>
917         * src/clfswm.lisp (init-display): Add key handling on no focus
918         window and on frame windows.
920 2008-04-11  Philippe Brochard  <pbrochard@common-lisp.net>
922         * src/clfswm.lisp (main): Keyboard handle strategie change: Grab
923         all keys by default and replay just what is needed. No change for
924         the second mode.
926         * src/clfswm-keys.lisp: remove grab/ungrab main keys.
927         (find-key-from-code): Test for shift and not shift presence.
929 2008-04-09  Philippe Brochard  <pbrochard@common-lisp.net>
931         * src/clfswm-internal.lisp (switch-to-root-frame): show later -
932         new key parameter to have less flickering.
934 2008-04-07  Philippe Brochard  <pbrochard@common-lisp.net>
936         * src/bindings-second-mode.lisp (frame-layout-once-menu): Set the
937         layout only one time and revert to no-layout to freely handle
938         frames.
940         * src/clfswm-nw-hooks.lisp
941         (open-in-new-frame-in-root-frame-nw-hook): Tile layout with spaces
942         with new created window.
944         * src/clfswm-layout.lisp (register-layout): Now register
945         automatically a once layout to set the layout only one time and
946         revert to no-layout to freely handle frames.
948 2008-04-05  Philippe Brochard  <pbrochard@common-lisp.net>
950         * src/clfswm-nw-hooks.lisp (leave-focus-frame-nw-hook): New
951         nw-hook: Open the next window in the current frame and leave the
952         focus to the current child.
954 2008-04-04  Philippe Brochard  <pbrochard@common-lisp.net>
956         * src/bindings-second-mode.lisp: Add keys definitions to
957         bind-or-jump in the second mode.
959         * src/clfswm-util.lisp (bind-or-jump): remove the auto-defining
960         macro for bind-or-jump-(1|2|3...).
962         * src/clfswm-keys.lisp (define-define-key/mouse): Allow additional
963         arguments to function. This allow to do things like:
964         (define-main-key (key) 'my-function 10 20 'foo) -> 10 20 and 'foo
965         are passed to my-function on key press.
967 2008-04-03  Philippe Brochard  <pbrochard@common-lisp.net>
969         * src/clfswm-util.lisp (bind-or-jump): New (great) function.
971 2008-04-02  Philippe Brochard  <pbrochard@common-lisp.net>
973         * src/clfswm-internal.lisp (child-fullname): New function
975         * src/clfswm-info.lisp (info-mode-menu): Add an explicit optional
976         docstring in info-mode-menu. An item can be
977         '((key function) (key function)) or with docstring
978         '((key function "documentation 1") (key function "bla bla") (key function))
980         * src/tools.lisp (ensure-n-elems): New function.
982         * src/bindings-second-mode.lisp: Bind Alt+mouse-1/3 to move or
983         resize a frame or the window's father.
985         * src/clfswm.lisp (init-display): Remove tile-space-layout by
986         default on the root frame.
988         * src/clfswm-util.lisp (move/resize-frame): Add standard event
989         hooks handlers (map-request, configure-notify...)
991         * src/clfswm-internal.lisp (adapt-child-to-father): Limit minimal
992         child size to 1x1.
994 2008-04-01  Philippe Brochard  <pbrochard@common-lisp.net>
996         * src/bindings.lisp: Bind Alt+mouse-1/3 to move or resize a frame
997         or the window's father.
999         * src/clfswm-util.lisp (mouse-click-to-focus-generic): Stop button
1000         event only if there is a geometry change.
1001         (mouse-focus-move/resize-generic): Generic function to move or
1002         resize a frame or a window father frame.
1004 2008-04-01  Philippe Brochard  <pbrochard@common-lisp.net>
1006         * src/clfswm-internal.lisp (show-all-children): Return t if there
1007         is a geometry change.
1009 2008-03-30  Philippe Brochard  <pbrochard@common-lisp.net>
1011         * src/bindings.lisp (Up/Down): Swap select previous/next level.
1013         * src/bindings-second-mode.lisp (Up/Down): Swap select previous/next level.
1015         * src/clfswm.lisp (init-display): Create a default frame in the root frame.
1017         * src/clfswm-internal.lisp (place-frame): Place frame from real (pixel) coordinates.
1018         (with-all-*): Reverse the child list to manage the first child last (like in
1019         show-all-children).
1021         * src/config.lisp (*create-frame-on-root*): New variable: Create a new frame on the
1022         root window only if true.
1024         * src/clfswm-util.lisp (mouse-click-to-focus-generic): Create a new frame on the
1025         root window only if *create-frame-on-root* is true.
1027         * src/bindings-second-mode.lisp (sm-mouse-click-to-focus-generic): Create a new frame
1028         on the root window.
1030 2008-03-29  Philippe Brochard  <pbrochard@common-lisp.net>
1032         * src/bindings-second-mode.lisp (sm-mouse-click-to-focus-generic): Focus, move and resize
1033         the current child (even if it's a window).
1035 2008-03-28  Philippe Brochard  <pbrochard@common-lisp.net>
1037         * src/clfswm-util.lisp (mouse-click-to-focus-and-move)
1038         (mouse-click-to-focus-and-resize): New functions.
1040         * src/clfswm-internal.lisp (*-fl->px): Convert float coordinates to pixel.
1041         (*-px->fl): Convert pixel coordinates to float.
1043         * src/tools.lisp (call-hook): Move call-hook to tools.lisp.
1045 2008-03-27  Philippe Brochard  <pbrochard@common-lisp.net>
1047         * src/clfswm-layout.lisp (no-layout): Use :first-only to raise only the
1048         first child.
1050         * src/clfswm-internal.lisp (hide-all): Split hide-all-children in hide-all
1051         and hide-all-children.
1052         (raise-if-needed): New function.
1053         (show-child): Use a first-p parameter to raise windows only when they are
1054         first child.
1056 2008-03-26  Philippe Brochard  <pbrochard@common-lisp.net>
1058         * src/clfswm-internal.lisp (select-next/previous-level): Don't use show-all-children
1059         -> less flickering.
1061 2008-03-25  Philippe Brochard  <pbrochard@common-lisp.net>
1063         * src/clfswm-info.lisp (keys-from-list): new function.
1065         * src/*: rename 'childs' in 'children'.
1067         * src/*: rename 'group' in 'frame'.
1069 2008-03-22  Philippe Brochard  <pbrochard@common-lisp.net>
1071         * src/clfswm-pack.lisp (explode-group/explode-current-group): new functions.
1073 2008-03-21  Philippe Brochard  <pbrochard@common-lisp.net>
1075         * src/clfswm-pack.lisp: Pack, Fill, Resize functions.
1077 2008-03-16  Philippe Brochard  <pbrochard@common-lisp.net>
1079         * src/clfswm-nw-hooks.lisp: Register system for new window hooks.
1080         Bind control+o to open the next window in a new group in the root group
1081          (as open in next window in a new workspace in 0801 version).
1083 2008-03-15  Philippe Brochard  <pbrochard@common-lisp.net>
1085         * src/clfswm-util.lisp (show/hide-all-groups-info/key): Show/hide all groups info
1086         window.
1088 2008-03-14  Philippe Brochard  <pbrochard@common-lisp.net>
1090         * bindings-second-mode.lisp ("ISO_Left_Tab"): Use ISO_Left_Tab
1091         instead of Tab for select-previous-child.
1093 2008-03-13  Philippe Brochard  <pbrochard@common-lisp.net>
1095         * clfswm-util.lisp (force-window-in-group/force-window-center-in-group):
1096         new functions.
1098 2008-03-11  Philippe Brochard  <pbrochard@common-lisp.net>
1100         * clfswm-util.lisp (identify-key): Display the documentation
1101         associated to keys when identifying a key.
1103 2008-03-10  Xavier Maillard  <xma@gnu.org>
1105         * contrib/clfswm: Complete rewrite of the script. Detect error and
1106         act accordingly. Add command line arguments to configure the
1107         script execution. User can now choose different common lisp
1108         implementation (clisp and sbcl only), choose where to store the
1109         dumped image, where to find clfswm source.
1111 2008-03-09  Philippe Brochard  <pbrochard@common-lisp.net>
1113         * clfswm-internal.lisp (process-new-window): Beginning of new
1114         window hook: each group have a hook to tell what he wants to do
1115         with the new created window.
1117 2008-03-08  Xavier Maillard  <xma@gnu.org>
1119         * contrib/clfswm: New script. Dump a CLISP image of CLFSWM then
1120         call the resulting executable.
1122         * clfswm.lisp (read-conf-file): Check for the user config file in
1123         XDG_CONFIG_HOME *first*. Freedesktop.org standards should be
1124         prefered whenever possible.
1126 2008-02-27  Philippe Brochard  <pbrochard@common-lisp.net>
1128         * clfswm-layout.lisp (*-layout): Add an optional raise-p
1129         parameter in each layout.
1131 2008-02-26  Philippe Brochard  <pbrochard@common-lisp.net>
1133         * clfswm-util.lisp (copy/cut-current-child): Does not affect the
1134         root group.
1135         (copy/move-current-child-by-name/number): new functions
1136         (focus-group-by-name/number): new functions
1137         (delete-group-by-name/number): new functions
1139 2008-02-24  Philippe Brochard  <pbrochard@common-lisp.net>
1141         * ************************************************************ *
1142         *: Major update - No more reference  to workspaces. The main   *
1143         structure is a tree of groups or application windows.          *
1144         * ************************************************************ *
1146 2008-02-07  Philippe Brochard  <pbrochard@common-lisp.net>
1148         * clfswm.lisp (read-conf-file): Read configuration in
1149         $HOME/.clfswmrc or in /etc/clfswmrc or in
1150         $XDG_CONFIG_HOME/clfswm/clfswmrc.
1151         (xdg-config-home): Return the content of $XDG-CONFIG-HOME (default
1152         to $HOME/.config/).
1154 2008-01-18  Philippe Brochard  <pbrochard@common-lisp.net>
1156         * clfswm-internal.lisp (show-all-group): Use *root* and *root-gc*
1157         by default.
1159 2008-01-03  Philippe Brochard  <pbrochard@common-lisp.net>
1161         * clfswm-internal.lisp (find-window-group): New function.
1163         * clfswm*: Change to make clfswm run with clisp/new-clx.
1165 2008-01-01  Philippe Brochard  <pbrochard@common-lisp.net>
1167         * clfswm-util.lisp (query-show-paren): Add show parent matching in
1168         query string.
1169         (query-string): Bind control+k to delete end of line.
1171         * clfswm-second-mode.lisp (draw-second-mode-window): Display
1172         the action on mouse motion in second mode.
1174         * clfswm.lisp (handle-exposure): Redisplay groups on exposure
1175         event but do not clear the root window.
1176         (handle-configure-request): Adjust unmanaged window from there
1177         request.
1179         * clfswm-internal.lisp (process-new-window): Adjust new window
1180         with the specified hints (max/min/base width/height).
1182 2007-12-31  Philippe Brochard  <pbrochard@common-lisp.net>
1184         * clfswm.lisp (handle-configure-request): Send an Configuration
1185         Notify event. This solve a bug with xterm and rxvt who takes some
1186         times to be mapped. Now there is no delay.
1188         * bindings-second-mode.lisp (define-shell): Run programs after
1189         living the second mode.
1191 2007-12-30  Philippe Brochard  <pbrochard@common-lisp.net>
1193         * clfswm-internal.lisp (process-new-window): Do not crop transient
1194         window to group size.
1195         (adapt-window-to-group): Do not crop transient window to group
1196         size.
1198         * clfswm.lisp (handle-configure-request): Adapt just the window to
1199         its group and don't take care of the configure request. Remove the
1200         bug with the Gimp outside the group and speed up the window
1201         manipulation.
1202         (handle-exposure): Remove show-all-group on exposure event
1203         -> Speed up.
1205 2007-12-29  Philippe Brochard  <pbrochard@common-lisp.net>
1207         * clfswm-util.lisp (circulate-group-up-copy-window)
1208         (circulate-group-down-copy-window)
1209         (circulate-workspace-up-copy-group)
1210         (circulate-workspace-down-copy-group): Prevent the copy of the
1211         same window in the same workspace.
1213         * bindings-second-mode.lisp (release-copy-selected-window)
1214         (release-copy-selected-group): Prevent the copy of the same window
1215         in the same workspace.
1217         * clfswm-pager.lisp (generic-pager-move-window-on-previous-line)
1218         (generic-pager-move-window-on-next-line): Remove the copy
1219         property.
1220         (generic-pager-move-group-on-next-workspace)
1221         (generic-pager-move-group-on-previous-workspace): Prevent the copy
1222         of the same window in the same workspace.
1224         * bindings-pager.lisp (mouse-pager-copy-selected-window-release)
1225         (mouse-pager-copy-selected-group-release): Prevent the copy of the
1226         same window in the same workspace.
1228         * tools.lisp (setf/=): new macro to set a variable only when
1229         necessary.
1231         * clfswm-internal.lisp (adapt-window-to-group): use set/= to set
1232         x, y... only when necessary.
1234 2007-12-28  Philippe Brochard  <pbrochard@common-lisp.net>
1236         * clfswm.lisp (handle-configure-notify, *configure-notify-hook*):
1237         new function and hook: force windows to stay in its group (solve a
1238         bug with the Gimp).
1240 2007-12-25  Philippe Brochard  <pbrochard@common-lisp.net>
1242         * bindings-second-mode.lisp (mouse-motion): use hide-group to have
1243         less flickering when moving/resizing groups.
1245         * clfswm-internal.lisp (hide-group): new function.
1246         (show-all-group): clear-all: new parameter.
1248 2007-12-22  Philippe Brochard  <pbrochard@common-lisp.net>
1250         * clfswm-keys.lisp (define-define-key): undefine-*-multi-name: new
1251         macro.
1252         * clfswm*: Color change for the pager. Typo or better description
1253         in bindings definitions. Define bindings for a qwerty keyboard by
1254         default. dot-clfswmrc show examples to switch to an azerty
1255         keyboard.
1256         License change to GPL v3.
1257         * config.lisp: new file - group all globals variables in this
1258         file.
1260 2007-08-26  Philippe Brochard  <pbrochard@common-lisp.net>
1262         * xlib-util.lisp (hide-window): Remove structure-notivy events
1263         when hidding a window.
1265 2007-05-16  Philippe Brochard  <pbrochard@common-lisp.net>
1267         * package.lisp (*sm-property-notify-hook*): Readded
1268         property-notify-hook in second mode.
1270 2007-05-15  Philippe Brochard  <pbrochard@common-lisp.net>
1272         * clfswm-keys.lisp (produce-doc-html): Better clean up for strings.
1274 2007-05-13  Philippe Brochard  <pbrochard@common-lisp.net>
1276         * clfswm-pack.lisp (tile-current-workspace-to/right/left/top/bottom):
1277         Tile the current workspace with the current window on one side and
1278         others on the other (this emulate the larswm, dwm, wmii way). See
1279         the default configuration file to enable this mode by default.
1281         * clfswm-pager.lisp (pager-tile-current-workspace-to): idem for
1282         the pager.
1284 2007-05-12  Philippe Brochard  <pbrochard@common-lisp.net>
1286         * clfswm-pager.lisp (pager-draw-window-in-group): Add
1287         ensure-printable to print windows name even with non-ascii
1288         characters.
1290 2007-05-11  Philippe Brochard  <pbrochard@common-lisp.net>
1292         * clfswm-pager.lisp (pager-explode-current-group): Create a new
1293         group for each window in group.
1294         (pager-implode-current-group): Move all windows in workspace to
1295         one group and remove other groups.
1297         * clfswm-pack.lisp (explode-group): Create a new group for each
1298         window in group.
1299         (implode-group): Move all windows in workspace to one group and
1300         remove other groups.
1302         * clfswm-util.lisp (identify-key): Remove local configuration
1303         variables and made them available for configuration from
1304         package.lisp.
1305         (query-string): idem.
1307 2007-04-29  Philippe Brochard  <pbrochard@common-lisp.net>
1309         * netwm-util.lisp: Start of NetWM compliance.
1310         Add a Netwm client list gestion.
1312 2007-04-28  Philippe Brochard  <pbrochard@common-lisp.net>
1314         * clfswm-internal.lisp (create-group-on-request): open a new group
1315         only when the current group is not empty.
1317         * bindings-second-mode.lisp (define-second-key-#\o-control): Fix a
1318         bug with null workspace.
1320         * clfswm-pager.lisp (pager-handle-event): Add a hook
1321         system. This hooks can be changed in the user configuration file.
1323         * package.lisp: All colors and font variables are set in
1324         package.lisp and can be configured in the user configuration
1325         file.
1326         Note: If you have configured some less ugly colors (esp. for the
1327         pager) don't hesitate to let me know :)
1329         * clfswm-second-mode.lisp (sm-handle-event): Add a hook
1330         system. This hooks can be changed in the user configuration file.
1332         * clfswm.lisp (handle-event): Add a hook system. This hooks can be
1333         changed in the user configuration file (~/.clfswmrc)
1335 2007-04-25  Philippe Brochard  <pbrochard@common-lisp.net>
1337         * clfswm-util.lisp (stop-all-pending-actions): new function: reset
1338         arrow action, open next window in new workspace/group.
1340         * bindings.lisp (stop-all-pending-actions): new binding.
1341         (open-next-window-in-new-group-once): Open the next windows in a
1342         new group (only once) or open all new windows in a new group (like
1343         others windows managers).
1345 2007-04-22  Philippe Brochard  <pbrochard@common-lisp.net>
1347         * clfswm.lisp (read-conf-file): New function to read a lisp
1348         configuration file at startup.
1349         (focus-group-under-mouse): Check if group isn't the current group
1350         ( prevent a bug with unclutter ).
1352 2007-03-02  Philippe Brochard  <pbrochard@common-lisp.net>
1354         * bindings.lisp (run-program-from-query-string): A program can be
1355         launch from a input query window.
1357 2007-03-01  Philippe Brochard  <pbrochard@common-lisp.net>
1359         * clfswm-info.lisp: Fix a bug with banish pointer in info mode.
1361 2007-02-28  Philippe Brochard  <pbrochard@common-lisp.net>
1363         * clfswm.lisp (process-new-window): One can now open the next
1364         window in a workspace called by its number.
1366         * clfswm-util.lisp (query-font-string): Minimal editing
1367         capabilities.
1368         (eval-from-string): And an REPL in the window manager... :)
1370 2007-02-26  Philippe Brochard  <pbrochard@common-lisp.net>
1372         * clfswm.lisp (process-new-window): One can now open the next
1373         window in a new workspace or a new group.
1375         * clfswm-pager.lisp (pager-mode): Display the next arrow action
1376         with the hidden windows.
1378         * clfswm.lisp (second-key-mode): Display the current workspace
1379         number and the next arrow action in the state window.
1381         * clfswm-pager.lisp (pager-mode): Hide all windows before leaving
1382         the pager mode and then redisplay only the current workspace.
1384 2007-02-25  Philippe Brochard  <pbrochard@common-lisp.net>
1386         * clfswm.lisp (add-workspace): Workspaces are now numbered. So
1387         they can be focused with a keypress, sorted or renumbered.
1389 2007-02-24  Philippe Brochard  <pbrochard@common-lisp.net>
1391         * clfswm-pager.lisp (pager-mode): Remove multiple silly
1392         pager-draw-display. This prevent a lot of flickering in the
1393         pager.
1395         * clfswm.lisp: Remove all display-force-output and replace them
1396         with only one display-finish-output in the event loop.
1398 2006-11-06  Philippe Brochard  <pbrochard@common-lisp.net>
1400         * clfswm-pager.lisp (pager-center-group): New function - center a
1401         group at the middle of the screen.
1403         * clfswm-pack.lisp (center-group): New function - center a group
1404         at the middle of the screen.
1406         * clfswm.lisp (show-group): Add a cross line under the group.
1407         (show-group): Group are showned even if fullscreened.
1408         (init-display): Add an exposure event on the root window.
1410 2006-11-05  Philippe Brochard  <pbrochard@common-lisp.net>
1412         * package.lisp (*default-group*): Default group is the same size
1413         of a fullscreened group.
1415         * bindings*: Use shift to move, control+shift to copy.
1417         * *.lisp: Add comments for configuration or alternatives. So grep
1418         for CONFIG to see where you can configure clfswm. And grep for
1419         Alternative to use some commented code.
1421         * clfswm.lisp (second-key-mode): Use a single window to show the
1422         second mode. See for alternatives at the end of this file.
1424 2006-11-03  Philippe Brochard  <pbrochard@common-lisp.net>
1426         * clfswm-keys.lisp (define-define-key/mouse): Factorisation in a
1427         macro of key and mouse definitions.
1428         (define-define-key/mouse): Use state instead of modifiers list
1429         this fix a bug when the modifiers list is not in the rigth order.
1431         * clfswm.lisp (second-key-mode): Add a colored border in second mode.
1433 2006-11-02  Philippe Brochard  <pbrochard@common-lisp.net>
1435         * clfswm-info.lisp (info-mode): Add an info mode.
1437 2006-11-01  Philippe Brochard  <pbrochard@common-lisp.net>
1439         * clfswm.lisp (process-new-window): Change border size for
1440         transient windows.
1441         (show-all-windows-in-workspace): Unhide all windows even when the
1442         current group is in fullscreen mode.
1444 2006-10-26  Philippe Brochard  <pbrochard@common-lisp.net>
1446         * clfswm-util.lisp (identify-key): Add an exposure handle-event to
1447         redisplay the identify window after a terminal switch.
1449         * clfswm-pager.lisp (pager-mode): Add an exposure handle-event to
1450         redisplay the pager after a terminal switch.
1452 2006-10-24  Philippe Brochard  <pbrochard@common-lisp.net>
1454         * clfswm-util.lisp (identify-key): Add a window to display
1455         the keys to identify on screen.
1457         * bindings.lisp, bindings-pager.lisp: Define same keys to
1458         move/copy groups/windows in second mode and in pager.
1460         * clfswm.lisp (handle-event*): Same version in all clfswm (fix some
1461         drawing lags).
1462         (show-all-windows-in-workspace): unhide window before adapting it
1463         to group.
1465 2006-10-23  Philippe Brochard  <pbrochard@common-lisp.net>
1467         * clfswm.lisp (handle-event): Revert to an older version.
1469 2006-10-18  Philippe Brochard  <pbrochard@common-lisp.net>
1471         * clfswm-util.lisp (force-window-in-group)
1472         (force-window-center-in-group): New functions for transient windows.
1474         * clfswm-pager.lisp (pager-remove-current-workspace/group):
1475         bugfix: hide all windows before removing group or workspace.
1477 2006-10-17  Philippe Brochard  <pbrochard@common-lisp.net>
1479         * bindings-pager.lisp (mouse-pager-move-selected-group)
1480         (mouse-pager-copy-selected-group)
1481         (mouse-pager-move-selected-window)
1482         (mouse-pager-copy-selected-window, mouse-pager-rotate-window-up)
1483         (mouse-pager-rotate-window-down): New functions to have mouse in
1484         pager mode.
1486         * clfswm-pager.lisp (pager-swap-window)
1487         (pager-copy-group-on-next/previous-workspace)
1488         (pager-copy-window-on-next/previous-line): New functions
1490 2006-10-15  Philippe Brochard  <pbrochard@common-lisp.net>
1492         * clfswm-pager.lisp (pager-move-window-on-next/previous-line,
1493         (pager-move-group-on-next/previous-workspace): new functions.
1495         * clfswm-pack.lisp (resize-half-x-x-current-group): resize group
1496         to its half size (new functions).
1498 2006-10-11  Philippe Brochard  <pbrochard@common-lisp.net>
1500         * clfswm-pager.lisp: workspaces, groups and windows can now be
1501         selectionned with the keyboard or the mouse.
1503 2006-10-09  Philippe Brochard  <pbrochard@common-lisp.net>
1505         * clfswm-pager.lisp (pager-select-workspace-right/left):
1506         workspaces can now be selectionned with the keyboard.
1508 2006-10-08  Philippe Brochard  <pbrochard@common-lisp.net>
1510         * clfswm-keys.lisp (undefine-main-key, undefine-second-key, undefine-mouse-action):
1511         new function to remove a previous defined key or mouse combination.
1513 2006-10-07  Philippe Brochard  <pbrochard@common-lisp.net>
1515         * clfswm.lisp (main): Check for access error in init-display.
1517         * clfswm-keys.lisp (define-ungrab/grab): check for keysym and
1518         keycode before grabbing.
1520         * bindings.lisp: Remove nlambda and use defun to keep the function
1521         documentation with clisp.
1522         (define-shell): new macro to define shell command for the second
1523         mode.
1525 2006-10-06  Philippe Brochard  <pbrochard@common-lisp.net>
1527         * clfswm-keys.lisp (define-ungrab/grab): use a cond instead of a
1528         boggus typecase.
1530 2006-10-05  Philippe Brochard  <pbrochard@common-lisp.net>
1532         * bindings.lisp (accept-motion): Move group bugfix in upper mouse
1533         workspace circulation.
1535         * clfswm-util.lisp (absorb-orphan-window): new function.
1537         * clfswm-keys.lisp: Keysyms support.
1539 2006-10-02  Philippe Brochard  <pbrochard@common-lisp.net>
1541         * clfswm.lisp (show-group): Use one gc for all groups and not one
1542         per group.
1544 2006-10-01  Philippe Brochard  <pbrochard@common-lisp.net>
1546         * bindings.lisp (define-second-key (#\l :mod-1)): fix a typo.
1548         * clfswm.lisp (adapt-window-to-group): Adapt only windows with
1549         width and height outside group.
1551 2006-09-28  Philippe Brochard  <pbrochard@common-lisp.net>
1553         * clfswm.lisp: First public release.