src/clfswm-util.lisp (eval-from-query-string): Add completion for eval for query...
[clfswm.git] / ChangeLog
blobadee0ccf1ce67db8a42e672b09b907ecdad02317
1 2012-06-27  Philippe Brochard  <pbrochard@common-lisp.net>
3         * src/clfswm-util.lisp (eval-from-query-string): Add completion
4         for eval for query string.
6 2012-06-26  Philippe Brochard  <pbrochard@common-lisp.net>
8         * src/clfswm-query.lisp: Add completion for shell commands.
10 2012-06-18  Philippe Brochard  <pbrochard@common-lisp.net>
12         * src/clfswm-placement.lisp: Each child can have its own border
13         size. New binding to change the child border size on the fly.
15 2012-06-08  Philippe Brochard  <pbrochard@common-lisp.net>
17         * src/tools.lisp (process-timers): Call get-internal-real-time
18         only once for all times.
20 2012-06-07  Philippe Brochard  <pbrochard@common-lisp.net>
22         * contrib/toolbar.lisp (define-toolbar-hooks): Add auto-hide
23         clickable toolbar.
24         (define-toolbar-hooks): Add auto-hide toolbar (show/hide on mouse
25         motion event).
27 2012-06-06  Philippe Brochard  <pbrochard@common-lisp.net>
29         * src/xlib-util.lisp (handle-event): Add an additional hook event
30         system to handle events in contrib code.
32 2012-06-03  Philippe Brochard  <pbrochard@common-lisp.net>
34         * src/clfswm-placement.lisp: Add an optional border size in all
35         placement functions.
37 2012-05-30  Philippe Brochard  <pbrochard@common-lisp.net>
39         * contrib/toolbar.lisp (clock): Add a clock module.
41 2012-05-28  Philippe Brochard  <pbrochard@common-lisp.net>
43         * contrib/toolbar.lisp: begining of toolbar support.
45 2012-05-24  Philippe Brochard  <pbrochard@common-lisp.net>
47         * src/clfswm-internal.lisp (rotate-root-geometry): Do not use
48         rotatef but a simpler algorithm.
50 2012-05-19  Philippe Brochard  <pbrochard@common-lisp.net>
52         * src/clfswm-placement.lisp: Adjust width and height in child and
53         root placement to prevent too big child size.
55 2012-05-18  Philippe Brochard  <pbrochard@common-lisp.net>
57         * src/clfswm-placement.lisp: New root placement possibility.
59         * src/clfswm-util.lisp (change-current-root-geometry): New
60         function.
62 2012-05-17  Philippe Brochard  <pbrochard@common-lisp.net>
64         * src/clfswm-util.lisp (exchange-root-geometry-with-mouse): New
65         function and menu.
67 2012-05-16  Philippe Brochard  <pbrochard@common-lisp.net>
69         * src/menu-def.lisp: New root menu.
71 2012-05-15  Philippe Brochard  <pbrochard@common-lisp.net>
73         * src/clfswm-circulate-mode.lisp (rotate-root-geometry-next)
74         (rotate-root-geometry-previous): New second mode binding to change
75         root geometry.
77 2012-05-13  Philippe Brochard  <pbrochard@common-lisp.net>
79         * src/clfswm-internal.lisp: Remove the *current-child* variable
80         and use a setfable function (current-child) instead.
81         (current-child-setter): Store root current child before apllying
82         current child change.
84 2012-05-09  Philippe Brochard  <pbrochard@common-lisp.net>
86         * src/clfswm-internal.lisp: Use xdpyinfo/xinerama informations
87         instead of xrandr informations.
89 2012-05-06  Philippe Brochard  <pbrochard@common-lisp.net>
91         * src/clfswm-internal.lisp : Use only one list for root
92         management.
93         (*root*): Root management API simplification.
95 2012-04-30  Philippe Brochard  <pbrochard@common-lisp.net>
97         * src/clfswm-internal.lisp: Big change to replace *current-root*
98         variable to support multiple root.
100 2012-04-18  Philippe Brochard  <pbrochard@common-lisp.net>
102         * src/tools.lisp (add-new-hook, add-hook): New macro. Do not
103         duplicate hooks by default. Use add-new-hook if you want to
104         duplicate them.
106 2012-04-16  Philippe Brochard  <pbrochard@common-lisp.net>
108         * src/clfswm-corner.lisp (wait-window-in-query-tree): Add a limit
109         of try to wait the command window.
111 2012-02-25  Philippe Brochard  <pbrochard@common-lisp.net>
113         * src/clfswm-util.lisp (place-frames-from-xrandr)
114         (swap-frame-geometry, rotate-frame-geometry): New helper functions
115         for multiple physical screen.
116         (jump-to-slot, add-frame-in-parent-frame): Change *current-root*
117         only when needed.
119 2012-01-18  Philippe Brochard  <pbrochard@common-lisp.net>
121         * src/*.lisp: Use create-symbol and create-symbol-in-package
122         instead of the shorter symb. (Thanks Aad Versteden).
124         * src/bindings-second-mode.lisp (set-default-second-keys): New
125         key binding to set window and frame transparency.
127         * src/bindings.lisp (set-default-main-mouse): New mouse binding to
128         set window and frame transparency.
130         * src/clfswm-keys.lisp (define-keys): New macro to ease multiple
131         keys definitions. (Thanks Valentin Plechinger for the request).
133         * src/*.lisp: Add full transparency support with xcompmgr.
135 2012-01-14  Philippe Brochard  <pbrochard@common-lisp.net>
137         * src/*.lisp: Add transparency support.
139 2012-01-09  Ales Guzik <ales.guzik@gmail.com>
141         * src/clfswm-layout.lisp (tile-layout-mix): New layout to
142         automatically choose between vertival and horizontal tile layout.
143         (tile-space-layout): Fix to have space between screen border and
144         frame the same as between frames.
146 2012-01-04  Philippe Brochard  <pbrochard@common-lisp.net>
148         * load.lisp: Support clisp 2.49+ module system to load CLX.
150 2012-01-04  Ales Guzik <ales.guzik@gmail.com>
152         * src/clfswm-layout.lisp (update-layout-managed-children-keep-position):
153         Fix an inattention error.
155 2012-01-04  Philippe Brochard  <pbrochard@common-lisp.net>
157         * src/xlib-util.lisp (with-xlib-protect): Protect from
158         xlib:lookup-error. This prevent an error in clisp/new-clx when
159         sometimes an xlib:colormap is expected instead of an xlib:window.
161 2012-01-03  Philippe Brochard  <pbrochard@common-lisp.net>
163         * src/xlib-util.lisp (handle-event): Fix a clisp/new-clx error
164         when sometimes window slot of event-slots is a pixmap instead of a
165         window.
167 2011-12-26  Philippe Brochard  <pbrochard@common-lisp.net>
169         * src/clfswm-query.lisp: Fill the history list with a non-nil
170         value.
172 2011-12-25  Philippe Brochard  <pbrochard@common-lisp.net>
174         * src/package.lisp (make-x-drawable): Drawable wrapper to prevent
175         type error in some CLX versions.
176         Replace xlib:drawable-* functions with x-drawable-* equivalents
178 2011-12-14  Philippe Brochard  <pbrochard@common-lisp.net>
180         * src/clfswm-util.lisp (um-create-xdg-section-list): Add at least
181         the 'Utility menu entry.
183         * src/config.lisp (*xdg-section-list*): moved to config.lisp.
185         * src/clfswm-util.lisp (update-menus): Set a default value for
186         searching .desktop files when XDG_DATA_DIRS is not set.
188 2011-10-15  Philippe Brochard  <pbrochard@common-lisp.net>
190         * src/clfswm-internal.lisp (place-window-from-hints): Use
191         with-placement macro to place unmanaged windows in an arbitrary
192         place.
194 2011-06-16  Philippe Brochard  <pbrochard@common-lisp.net>
196         * src/clfswm-internal.lisp (clean-windows-in-all-frames): Prevent
197         current root and current child being equal to child.
199 2011-06-13  Philippe Brochard  <pbrochard@common-lisp.net>
201         * src/keysyms.lisp: Repeat Page_Down/Up keysym definitions at the
202         end of the file to change keysyms priority.
204 2011-06-13  Sylvain HENRY <hsyl20@gmail.com>
206         *  *.*: Minor spelling fix.
208 2011-06-12  Philippe Brochard  <pbrochard@common-lisp.net>
210         * src/clfswm.lisp (:unmap-notify, :destroy-notify): Show all
211         children just after the xlib tree cleanup -> reduce the
212         flickering when a window is deleted or destroyed.
214         * src/clfswm-internal.lisp (process-existing-windows): Do not
215         process the notify window.
217 2011-06-08  Philippe Brochard  <pbrochard@common-lisp.net>
219         * *: **** Release 1106 ****
221 2011-06-08  Philippe Brochard  <pbrochard@common-lisp.net>
223         * src/clfswm-internal.lisp (clean-windows-in-all-frames): New
224         function to prevent xlib error when a window is deleted.
226 2011-06-08  Philippe Brochard  <pbrochard@common-lisp.net>
228         * src/clfswm-internal.lisp
229         (delete-child-and-children-in-all-frames): Delete or destroy
230         children before displaying all children.
232 2011-06-05  Philippe Brochard  <pbrochard@common-lisp.net>
234         * src/clfswm-util.lisp (add-frame-in-parent-frame): New function
235         and binding.
237 2011-06-04  Philippe Brochard  <pbrochard@common-lisp.net>
239         * src/clfswm.lisp (main-unprotected): Destroy all frames windows
240         before closing the display (not really needed).
242 2011-06-02  Philippe Brochard  <pbrochard@common-lisp.net>
244         * src/clfswm-layout.lisp (inc-tile-layout-size)
245         (dec-tile-layout-size, inc-slow-tile-layout-size)
246         (dec-slow-tile-layout-size): New functions and bindings.
248 2011-06-01  Philippe Brochard  <pbrochard@common-lisp.net>
250         * src/clfswm-expose-mode.lisp (define-expose-letter-keys): Add
251         0..1 and A..Z keys to select a child in exposé mode.
253         * src/clfswm-internal.lisp (display-frame-info): Remove hidden
254         infos in frames windows.
256         * src/clfswm-util.lisp (ask-close/kill-current-window): Menu
257         update.
259 2011-05-30  Philippe Brochard  <pbrochard@common-lisp.net>
261         * src/clfswm-internal.lisp (get-parent-layout): Minor fullscreen
262         size tweaking.
264 2011-05-29  Philippe Brochard  <pbrochard@common-lisp.net>
266         * src/clfswm-internal.lisp
267         (delete-child-and-children-in-all-frames): Show all children
268         before deleting/destroying a windows, so prevent a flickering.
269         (get-parent-layout): Return the fullscreen size when the current
270         root is a window.
272 2011-05-28  Philippe Brochard  <pbrochard@common-lisp.net>
274         * src/clfswm-internal.lisp (get-parent-layout): Handle correctly
275         unmanaged windows.
277         * src/clfswm-util.lisp (delete-focus-window-generic): Do not hide
278         child before removing, so prevent a flickering.
280         * src/clfswm-internal.lisp (show-all-children): Rectangular
281         optimization to display only needed children.
282         (show-all-children): Remove flickering on
283         select-next/previous-brother.
285 2011-05-17  Philippe Brochard  <pbrochard@common-lisp.net>
287         * src/clfswm-util.lisp (copy-focus-window, cut-focus-window): New
288         functions and ask-close/kill-current-window menu and bindings
289         entry.
291 2011-05-16  Philippe Brochard  <pbrochard@common-lisp.net>
293         * src/clfswm-util.lisp (ask-close/kill-current-window): Add an
294         *ask-close/kill-placement* placement window variable.
296 2011-05-09  Philippe Brochard  <pbrochard@common-lisp.net>
298         * contrib/osd.lisp (funcall-button-from-code): Display osd
299         documention for buttons and fix some redefining warnings.
301 2011-05-07  Philippe Brochard  <pbrochard@common-lisp.net>
303         * src/clfswm-nw-hooks.lisp (make-permanent-nw-hook-frame): New
304         function. Prevent to add or delete a new window hook for this
305         frame.
307         * src/clfswm-layout.lisp (update-layout-managed-children-position):
308         New function.
310 2011-05-06  Philippe Brochard  <pbrochard@common-lisp.net>
312         * src/bindings-second-mode.lisp (set-default-second-keys):
313         select-brother-spatial-move-* binding update.
315         * src/clfswm-layout.lisp (tile-left|right|top|bottom-layout): Ask
316         to keep children positions or not.
318         * src/clfswm-internal.lisp (fixe-real-size): Takes care of border
319         size.
321         * src/clfswm-layout.lisp (update-layout-managed-children): Fix a
322         bug by using the parent frame instead of the current child.
324         * src/clfswm-circulate-mode.lisp
325         (select-brother-generic-spatial-move+right/left/up/down): New
326         function to select a brother from another in a spatial move.
328 2011-04-19  Philippe Brochard  <pbrochard@common-lisp.net>
330         * src/clfswm-pack.lisp (move-frame-constrained)
331         (resize-frame-constrained): Use pixels instead of floating
332         measure.
334 2011-04-18  Philippe Brochard  <pbrochard@common-lisp.net>
336         * src/clfswm-pack.lisp (resize-frame-constrained): Takes care of
337         border size.
338         (implode-frame, implode-current-frame): New functions. Absorb all
339         frames subchildren in frame. Explode frame opposite.
341 2011-04-17  Philippe Brochard  <pbrochard@common-lisp.net>
343         * src/clfswm-pack.lisp (move-frame-constrained)
344         (resize-frame-constrained): New function. Move and resize frame
345         with the mouse constrained by other frame brothers.
347 2011-04-14  Philippe Brochard  <pbrochard@common-lisp.net>
349         * src/clfswm-util.lisp (with-movement-select-next-brother)
350         (with-movement-select-previous-brother)
351         (with-movement-select-next-child): Use a simple method (do not
352         enter in the circulate mode) to allow to circulate in all children
353         or brothers.
355         * src/clfswm-menu.lisp (open-menu): Save info hash table keys
356         instead of deleting newly created keys.
358 2011-03-21  Philippe Brochard  <pbrochard@common-lisp.net>
360         * src/clfswm-internal.lisp (x-px->fl, y-px->fl): Takes care of
361         border size.
363 2011-03-20  Philippe Brochard  <pbrochard@common-lisp.net>
365         * src/clfswm-info.lisp (show-config-variable): call
366         produce-conf-var-doc.
368 2011-03-18  Philippe Brochard  <pbrochard@common-lisp.net>
370         * src/clfswm-autodoc.lisp (produce-conf-var-doc-html): Produce a
371         documentation for all configurable variables in CLFSWM -
372         HTML version.
374         * src/clfswm-internal.lisp (leave-frame): Hide all children except
375         the current window.
377 2011-03-16  Philippe Brochard  <pbrochard@common-lisp.net>
379         * src/clfswm-autodoc.lisp (produce-all-docs): Produce a
380         documentation for all configurable variables in CLFSWM.
382         * src/clfswm-layout.lisp (set-gimp-layout): Display a notify
383         window with the help on the GIMP layout.
385 2011-03-12  Philippe Brochard  <pbrochard@common-lisp.net>
387         * src/menu-def.lisp: Menu update to prevent cursor keys clash.
389         * clfswm.asd: Change compilation order to prevent undefined
390         variables.
392         * src/clfswm-internal.lisp (show-child(frame)): Handle properly
393         the show-root-frame-p parameter.
395 2011-03-11  Philippe Brochard  <pbrochard@common-lisp.net>
397         * src/clfswm-util.lisp (move-frame, resize-frame): Do not move or
398         resize a frame when it's the current root.
400 2011-03-10  Philippe Brochard  <pbrochard@common-lisp.net>
402         * src/clfswm-internal.lisp (show-all-children): Handle properly
403         duplicated child in multipe frames.
405 2011-03-09  Philippe Brochard  <pbrochard@common-lisp.net>
407         * contrib/volume-mode.lisp (set-default-volume-keys): Add more
408         keybindings (up/down, right/left) to raise/lower the volume.
410         * src/clfswm-layout.lisp: Add a variable border size for frames
411         and windows.
413 2011-03-08  Philippe Brochard  <pbrochard@common-lisp.net>
415         * src/clfswm-util.lisp (cut-current-child, remove-current-child)
416         (delete-current-child): Hide the current child before doing the
417         action.
419         * src/clfswm-internal.lisp (show-all-children): Hide windows not
420         in the current root before displaying those in current root.
421         Remove all hide-all unnecessary calls.
423         * src/clfswm-configuration.lisp (save-variables-in-conf-file):
424         Save only variables with a different value than their original
425         value.
427 2011-03-07  Philippe Brochard  <pbrochard@common-lisp.net>
429         * src/clfswm-info.lisp (show-config-variable): Use the new
430         defconfig method.
432         * src/clfswm-autodoc.lisp (produce-configuration-variables): Use
433         the new defconfig method.
435         * src/clfswm-configuration.lisp (create-configuration-menu):
436         Change the config system with a more lispy one and a less string
437         based one: (defconfig name value group doc).
440 2011-03-06  Philippe Brochard  <pbrochard@common-lisp.net>
442         * src/clfswm-internal.lisp (show-all-children): Simplify the
443         selection method.
444         (show-child): Display an unmanaged window whe  it's the current
445         child.
446         (show-all-children): add the ability to display all child from
447         *root-frame* and hide all those who are not in *current-root*.
448         -> remove hide-all-children when needed.
450         * src/xlib-util.lisp (move-window,resize-window): Add a
451         *color-move-window* border when moving or resizing a window.
453 2011-03-04  Philippe Brochard  <pbrochard@common-lisp.net>
455         * src/clfswm-internal.lisp (show-all-children): Perform only one
456         recusion on the clfswm tree: calculate geometry and place child in
457         one pass.
459 2011-03-03  Philippe Brochard  <pbrochard@common-lisp.net>
461         * src/clfswm-internal.lisp (show-all-children): Rethink of display
462         child order to prevent very annoying flickering.
464 2011-02-27  Philippe Brochard  <pbrochard@common-lisp.net>
466         * src/clfswm-util.lisp (query-yes-or-no): New function.
468         * src/clfswm-configuration.lisp (reset-all-config-variables): New
469         function and menu entry.
470         (query-conf-value): Add the ability to leave the field blank to
471         reset the variable to its default value.
473 2011-02-26  Philippe Brochard  <pbrochard@common-lisp.net>
475         * src/clfswm-configuration.lisp
476         (add-all-configuration-default-value): Add a default value to
477         configurable variables.
479 2011-02-23  Philippe Brochard  <pbrochard@common-lisp.net>
481         * src/clfswm.lisp (main-unprotected): Create the configuration
482         menu only once at startup.
484 2011-02-22  Desmond O. Chang <dochang@gmail.com>
486         * contrib/amixer.lisp: Add a volume mode inspired by the emms
487         volume package. Alsa mixer interface.
489         * contrib/volume-mode.lisp: Add a volume mode inspired by the emms
490         volume package.
492 2011-02-22 Desmond O. Chang <dochang@gmail.com>
494         * src/clfswm.lisp (main): Use ASDF:SYSTEM-SOURCE-DIRECTORY instead
495         of *LOAD-TRUENAME*. *LOAD-TRUENAME* is only bound during a call to
496         LOAD. If one eval CLFSWM:MAIN in repl, BASE-DIR will be an empty
497         string. Use ASDF:SYSTEM-SOURCE-DIRECTORY to fix it.
499 2011-02-16  Philippe Brochard  <pbrochard@common-lisp.net>
501         * src/clfswm.lisp (main-unprotected): Add a close hook. And close
502         the notify window, the virtual keyboard and the clfswm terminal by
503         default.
505 2011-02-15  Philippe Brochard  <pbrochard@common-lisp.net>
507         * src/clfswm.lisp (main-unprotected): Destroy the notify window
508         before closing the display. This fix a bug when resetting/reloading
509         clfswm.
511 2011-02-12  Philippe Brochard  <pbrochard@common-lisp.net>
513         * src/xlib-util.lisp (equal-wm-class-fun, equal-wm-name-fun)
514         (raise-window-fun, raise-and-focus-window-fun): New functions.
516         * src/config.lisp (*clfswm-terminal-cmd*): Switch from xterm to
517         urxvt.
518         (*never-managed-window-list*): Structure change to be more
519         flexible. Let the choice to focus, raise and do nothing on never
520         managed windows.
522 2011-02-09  Philippe Brochard  <pbrochard@common-lisp.net>
524         * src/clfswm-util.lisp (mouse-focus-move/resize-generic): Take
525         care of never managed windows to move or resize them if the raise
526         parameter is true.
528         * src/clfswm-internal.lisp (in-frame, in-window, in-child): New
529         functions.
531 2011-02-08  Philippe Brochard  <pbrochard@common-lisp.net>
533         * src/clfswm.lisp (main-mode): Raise or not unmanaged windows
534         following request in *never-managed-window-list*.
536 2011-02-05  Philippe Brochard  <pbrochard@common-lisp.net>
538         * *: **** Release 1102 ****
540 2011-02-05  Desmond O. Chang <dochang@gmail.com>
542         * src/keysyms.lisp: Add extended keysyms from stumpwm.
544 2011-02-01  Desmond O. Chang <dochang@gmail.com>
546         * src/clfswm-util.lisp (run-or-raise): New function (thanks to
547         Desmond O. Chang).
549         * src/clfswm-internal.lisp (with-all-*): add a nil block.
551 2011-01-28  Desmond O. Chang <dochang@gmail.com>
553         * src/clfswm-util.lisp (xdg-config-home): XDG_CONFIG_HOME should
554         be $HOME/.config by default.
556 2010-12-29  Philippe Brochard  <pbrochard@common-lisp.net>
558         * contrib/osd.lisp (display-doc): Add another method where a
559         CLFSWM native window is used to display the key documentation.
561 2010-12-27  Philippe Brochard  <pbrochard@common-lisp.net>
563         * src/xlib-util.lisp (with-xlib-protect): Force to revert to the
564         main mode state.
566 2010-12-25  Philippe Brochard  <pbrochard@common-lisp.net>
568         * src/clfswm-second-mode.lisp (second-key-mode): Call the second
569         mode leave function only when the generic mode was ended.
571 2010-12-08  Philippe Brochard  <pbrochard@common-lisp.net>
573         * src/clfswm-second-mode.lisp (sm-leave-function): Do not use
574         *second-mode-program* anymore.
576 2010-12-07  Philippe Brochard  <pbrochard@common-lisp.net>
578         * src/clfswm-second-mode.lisp (*second-mode-leave-function*): New
579         variable bound to a function executed (when not null) on second
580         mode leaving.
582 2010-11-14  Philippe Brochard  <pbrochard@common-lisp.net>
584         * src/clfswm-util.lisp (find-child-under-mouse): Do not find
585         hidden windows.
587 2010-11-13  Philippe Brochard  <pbrochard@common-lisp.net>
589         * src/clfswm-expose-mode.lisp (expose-mode-display-accel-windows):
590         Do not display the accel window for unmanaged windows.
592 2010-11-11  Philippe Brochard  <pbrochard@common-lisp.net>
594         * src/clfswm-internal.lisp (set-current-root): Handle
595         window-parent in set-current-root.
597         * src/clfswm-util.lisp (mouse-click-to-focus-generic): Do not
598         focus the parent child when the current root is a window.
600 2010-11-09  Philippe Brochard  <pbrochard@common-lisp.net>
602         * src/clfswm-expose-mode.lisp (expose-windows-current-child-mode):
603         New function an bindings.
605         * src/clfswm-layout.lisp (tile-layout, set-tile-layout): Fill
606         blanks if needed.
608 2010-11-07  Philippe Brochard  <pbrochard@common-lisp.net>
610         * src/clfswm-layout.lisp (tile-layout-ask-keep-position): New
611         function to let the user choose to keep child position with
612         tile layout.
614         * src/clfswm-internal.lisp (remove-frame-data-slot): New
615         function.
617 2010-11-05  Philippe Brochard  <pbrochard@common-lisp.net>
619         * src/clfswm-internal.lisp (frame-select-next-child)
620         (frame-select-previous-child): New functions and bindings. Select
621         the next/previous child in the current frame.
623 2010-10-31  Philippe Brochard  <pbrochard@common-lisp.net>
625         * src/clfswm-query.lisp (query-mode-complet): New function: Handle
626         completion in query-mode.
628 2010-10-30  Philippe Brochard  <pbrochard@common-lisp.net>
630         * src/clfswm-query.lisp (query-print-string): Handle long lines
631         correctly.
633 2010-10-27  Philippe Brochard  <pbrochard@common-lisp.net>
635         * src/clfswm-expose-mode.lisp (expose-create-window): Ensure that
636         all characters are printable.
638 2010-10-25  Philippe Brochard  <pbrochard@common-lisp.net>
640         * contrib/server/server.lisp: Load clfswm client code in the main
641         program and let the user start it with a --client command line
642         option.
644         * src/package.lisp (*main-entrance-hook*): New hook executed after
645         loading configuration file and before opening the display.
647 2010-10-23  Philippe Brochard  <pbrochard@common-lisp.net>
649         * src/xlib-util.lisp: Remove unnecessary xlib:display-finish-output.
651         * src/clfswm-internal.lisp (show-child): Show window only if not
652         hidden.
654         * src/clfswm-keys.lisp (binding-substitute-modifier): Utility to
655         change modifiers after binding definition.
657 2010-10-21  Philippe Brochard  <pbrochard@common-lisp.net>
659         * contrib/osd.lisp: New file: OSD (On Screen Display) for
660         presentations.
662         * src/clfswm-menu.lisp (open-menu): Modularise function.
664 2010-10-13  Philippe Brochard  <pbrochard@common-lisp.net>
666         * src/clfswm-info.lisp (show-first-aid-kit): Display the essential
667         key binding in main and second mode.
669 2010-10-10  Philippe Brochard  <pbrochard@common-lisp.net>
671         * src/clfswm-util.lisp (open-notify-window): Convert hello-window
672         functions to a more generic Notify-window system.
674         * src/tools.lisp (add-timer): Add an id to identify the timer.
676 2010-10-09  Philippe Brochard  <pbrochard@common-lisp.net>
678         * src/tools.lisp (erase-timer): New function.
680         * src/clfswm-util.lisp (display-hello-window): Add a timer to hide
681         the hello window. Add Configuration variables.
683 2010-10-08  Philippe Brochard  <pbrochard@common-lisp.net>
685         * src/clfswm-util.lisp (): Add an Hello window at startup.
687         * src/tools.lisp (process-timers): Add a timer system.
689 2010-10-07  Philippe Brochard  <pbrochard@common-lisp.net>
691         * src/clfswm-query.lisp (add-in-query-string): Handle correctly
692         the mod-5 modifier.
694 2010-10-06  Philippe Brochard  <pbrochard@common-lisp.net>
696         * src/clfswm-query.lisp (query-print-string): Change cursor color
697         and show parenthesis matching with colors (on match and on
698         errors).
700 2010-10-05  Philippe Brochard  <pbrochard@common-lisp.net>
702         * src/clfswm-internal.lisp (show-all-children): Do not raise a
703         child when its parent is hidden.
705 2010-10-02  Philippe Brochard  <pbrochard@common-lisp.net>
707         * src/clfswm-circulate-mode.lisp (select-next-subchild): Add the
708         possibility to circulate over subchild of the current child.
710         * src/clfswm-expose-mode.lisp (expose-all-windows-mode)
711         (expose-windows-generic): Add an escape-body function to return to
712         the original state on escape key.
714         * src/clfswm-util.lisp (bind-on-slot): Add an optional parameter
715         to bind the current child from the configuration file.
717 2010-10-01  Philippe Brochard  <pbrochard@common-lisp.net>
719         * src/clfswm-nw-hooks.lisp (absorb-window-nw-hook): Absorb new
720         window hook: the frame absorb all new windows that match
721         nw-absorb-test frame data slot.
723 2010-09-30  Philippe Brochard  <pbrochard@common-lisp.net>
725         * src/clfswm-expose-mode.lisp (expose-create-window): Show window
726         title in accel window.
728 2010-09-29  Philippe Brochard  <pbrochard@common-lisp.net>
730         * configure: Use the Xavier Maillard clfswm script in contrib to
731         build an executable in the standard way.
733 2010-09-26  Philippe Brochard  <pbrochard@common-lisp.net>
735         * src/clfswm-expose-mode.lisp (expose-mode-display-accel-windows):
736         New functions. Add a window on each child in the expose mode to
737         quickly select them.
739         * src/clfswm-internal.lisp (child-x, child-y, child-width)
740         (child-height): New methods to get real child coordinates.
742 2010-09-25  Philippe Brochard  <pbrochard@common-lisp.net>
744         * src/clfswm-layout.lisp (*-layout): Use child-position.
746         * src/clfswm-internal.lisp (child-position): New function.
748         * src/clfswm-expose-mode.lisp (expose-windows-mode)
749         (expose-all-windows-mode): Use a generic mode.
751         * src/xlib-util.lisp (with-handle-event-symbol): Use a filled list
752         with handle-event-fun symbols instead of inspecting clfswm
753         internals symbols on each mode change.
755         * src/clfswm-expose-mode.lisp: Move and rename present*-windows in
756         a separate clfswm-expose-mode.lisp file.
758         * src/clfswm-util.lisp (speed-mouse-right, speed-mouse-down): Use
759         screen size instead of hardcoded test coordinates.
761 2010-09-24  Philippe Brochard  <pbrochard@common-lisp.net>
763         * src/clfswm-util.lisp (speed-mouse-reset, speed-mouse-left)
764         (speed-mouse-right, speed-mouse-up, speed-mouse-down)
765         (speed-mouse-undo, speed-mouse-first-history): New functions to
766         quickly move the mouse. Implemented for the second mode.
768 2010-09-16  Philippe Brochard  <pbrochard@common-lisp.net>
770         * contrib/clfswm: Move clfswm sources to $tmp_dir if there is no
771         write permission on $clfswm_asd_path. So anybody can start clfswm
772         even if there is no write permission on the source directory.
774 2010-09-12  Philippe Brochard  <pbrochard@common-lisp.net>
776         * contrib/clfswm: Add support to cmucl, ccl and ecl.
778 2010-09-11  Philippe Brochard  <pbrochard@common-lisp.net>
780         * src/clfswm-util.lisp (set-hide-unmanaged-window)
781         (set-show-unmanaged-window, set-default-hide-unmanaged-window):
782         New functions and menu entry.
783         (set-globally-hide-unmanaged-window)
784         (set-globally-show-unmanaged-window): New functions and menu
785         entry.
787         * src/clfswm-internal.lisp (hide-unmanager-window-p): New
788         function.
789         (show-child): Add a data slot on frame to hide or not unmanaged
790         windows.
792         * src/clfswm-corner.lisp (present-clfswm-terminal)
793         (present-virtual-keyboard): Use a function (generic-present-body)
794         instead of a macro (generate-present-body).
796         * src/clfswm-util.lisp (update-menus): List all directories and
797         subdirectories in $XDG_DATA_DIRS/applications.
799 2010-09-10  Philippe Brochard  <pbrochard@common-lisp.net>
801         * src/clfswm-corner.lisp (generate-present-body): New macro.
802         (present-clfswm-terminal, present-virtual-keyboard): Use
803         generate-present-body.
805 2010-09-09  Philippe Brochard  <pbrochard@common-lisp.net>
807         * src/clfswm-util.lisp (update-menus): Follow XDG specifications
808         instead of the non-portable Debian update-menu.
810 2010-09-07  Philippe Brochard  <pbrochard@common-lisp.net>
812         * src/clfswm.lisp (error-handler): New function do handle
813         asynchronous errors and ignore them.
814         (open-display): Install the new error-handler on display.
816 2010-09-05  Philippe Brochard  <pbrochard@common-lisp.net>
818         * src/xlib-util.lisp (with-xlib-protect): Add a
819         with-simple-restart on top of body execution.
821 2010-09-04  Philippe Brochard  <pbrochard@common-lisp.net>
823         * src/clfswm.lisp (main-loop): Protect all xlib functions with an
824         with-xlib-protect.
826         * src/xlib-util.lisp (handle-event): use with-xlib-protect only in
827         handle-event. Add a with-simple-restart to prevent a
828         clisp/new-lisp infinite loop.
830 2010-08-30  Philippe Brochard  <pbrochard@common-lisp.net>
832         * src/clfswm-corner.lisp (present-clfswm-terminal): Make the
833         clfswm terminal working even on xterm title changes.
835 2010-08-29  Philippe Brochard  <pbrochard@common-lisp.net>
837         * src/clfswm-util.lisp (run-other-window-manager): Update for
838         clisp compatibility.
840         * src/tools.lisp (do-execute): New parameter io to change the
841         input/output method.
843         * src/clfswm-util.lisp (hide-current-child): Prevent from removing
844         the current root.
846         * src/clfswm-internal.lisp (child-member): New predicate.
847         (child-remove): New function.
849         * src/*.lisp: Use child-member and child-remove everywhere it's
850         needed.
852 2010-08-28  Philippe Brochard  <pbrochard@common-lisp.net>
854         * src/clfswm.lisp (main-loop): Ensure that all events have been
855         processed after a process-event.
857         * src/clfswm-internal.lisp (is-in-current-child-p): New function.
859 2010-08-27  Philippe Brochard  <pbrochard@common-lisp.net>
861         * src/clfswm.lisp (main-mode:configure-request): Raise the window
862         only when present on the current child and focus it accordingly.
864 2010-08-26  Philippe Brochard  <pbrochard@common-lisp.net>
866         * src/clfswm-circulate-mode.lisp (circulate-loop-function):
867         Use is-a-key-pressed-p.
869         * src/xlib-util.lisp (is-a-key-pressed-p): New predicate.
871         * src/clfswm-keys.lisp (define-ungrab/grab): Use all values
872         returned by xlib:keysym->keycodes.
874         * src/*.lisp: Use the new child-equal-p to compare children. This
875         prevent a bug with sbcl/cmucl when the standard equal function
876         does not work with xlib:window.
878         * src/clfswm-internal.lisp (child-equal-p): New predicate.
880 2010-08-25  Philippe Brochard  <pbrochard@common-lisp.net>
882         * src/clfswm-generic-mode.lisp (generic-mode): Use an
883         xlib:event-listen before processing event with
884         xlib:process-event. This prevent a bug with CLX threaded
885         implementation like sbcl.
887         * src/clfswm.lisp (main-loop): Use an xlib:event-listen before
888         processing event with xlib:process-event. This prevent a bug with
889         CLX threaded implementation like sbcl.
891 2010-08-17  Philippe Brochard  <pbrochard@common-lisp.net>
893         * contrib/server/key.lisp (ushell-sh): Add ccl and ecl support.
895         * src/xlib-util.lisp (compress-motion-notify): Use a loop instead
896         of an event-case.
898         * src/clfswm-internal.lisp (with-find-in-all-frames): New macro.
899         (find-parent-frame, find-frame-window, find-frame-by-name)
900         (find-frame-by-number): Use with-find-in-all-frames to search in
901         frames in the right order.
903         * src/clfswm-util.lisp (mouse-click-to-focus-generic): Fix an
904         unwanted flickering with unmanaged windows.
906 2010-08-16  Philippe Brochard  <pbrochard@common-lisp.net>
908         * src/package.lisp: Remove event handler hooks as they're not
909         needed anymore (To replace them: use closure and define-handler).
911         * src/xlib-util.lisp (move-window, resize-window)
912         (wait-mouse-button-release): Use a generic mode.
914         * src/*.lisp: Replace the case to handle event with a more (tricky)
915         lispy  method which bind a function to each keywords associated
916         to graphics events.
918 2010-07-23  Philippe Brochard  <pbrochard@common-lisp.net>
920         * src/clfswm-util.lisp (delete-current-child): Invert bindings and
921         menu entry between delete-current-child and remove-current-child.
922         ie: Delete a child and its children in all frames by default.
924 2010-07-21  Philippe Brochard  <pbrochard@common-lisp.net>
926         * src/package.lisp: Add a placement configuration group.
928         * src/binding*.lisp: Bind control+g to escape the current action
929         like emacs.
931         * src/clfswm-internal.lisp
932         (delete-child-and-children-in-all-frames): New function and
933         binding: Second mode - Control+Delete delete the current child and
934         its children in all frames (ie: close the current child and its
935         children).
937 2010-07-20  Philippe Brochard  <pbrochard@common-lisp.net>
939         * src/clfswm-internal.lisp (remove-child-in-frame): Do not destroy
940         the frame window and the frame gc. Close a very annoying bug when
941         cuting/pasting a frame or moving a child over frames with the
942         mouse.
944         * src/clfswm-util.lisp (mouse-click-to-focus-generic): Redisplay
945         all children in *current-root* after moving/resizing a frame.
947 2010-07-18  Philippe Brochard  <pbrochard@common-lisp.net>
949         * src/clfswm-util.lisp (delete-focus-window)
950         (destroy-focus-window): Remove child in parent frame before
951         stopping it.
953 2010-07-16  Philippe Brochard  <pbrochard@common-lisp.net>
955         * src/clfswm-util.lisp (identify-key): Add a timeout in
956         xlib:process-event.
957         (mouse-click-to-focus-generic): Use find-child-under-mouse instead
958         of the window passed by xlib:process-event.
960         * src/xlib-util.lisp (move-window, resize-window)
961         (wait-mouse-button-release): Add a timeout in xlib:process-event.
963 2010-04-11  Philippe Brochard  <pbrochard@common-lisp.net>
965         * src/clfswm-util.lisp (run-other-window-manager): Add the ability
966         to launch an other window manager and to return to clfswm.
968 2010-03-18  Philippe Brochard  <pbrochard@common-lisp.net>
970         * src/clfswm-layout.lisp (set-tile-space-layout): Set default
971         to 1%.
973 2009-12-15  Philippe Brochard  <pbrochard@common-lisp.net>
975         * src/clfswm.lisp (main-loop): Add a *loop-hook* parameter and a
976         loop timeout.
978         * src/clfswm-generic-mode.lisp (generic-mode): Add a loop-hook
979         parameter and a loop timeout.
981 2009-12-05  Philippe Brochard  <pbrochard@common-lisp.net>
983         * src/clfswm.lisp (main): Add an alternate configuration filename
984         parameter.
986         * load.lisp: Add a debuging code example.
988 2009-11-14  Philippe Brochard  <pbrochard@common-lisp.net>
990         * src/clfswm-configuration.lisp (create-configuration-menu): New
991         menu to configure all clfswm variables while clfswm is running.
993 2009-11-12  Philippe Brochard  <pbrochard@common-lisp.net>
995         * src/clfswm-util.lisp (save-configuration-variables): New
996         function to save all configuration variables in clfswmrc.
998 2009-11-11  Philippe Brochard  <pbrochard@common-lisp.net>
1000         * src/clfswm-info.lisp (info-mode): Begining of mouse support in
1001         info mode.
1002         (set-default-info-keys): Add cursor key support in info mode.
1004 2009-11-08  Philippe Brochard  <pbrochard@common-lisp.net>
1006         * contrib/reboot-halt.lisp: Add a Suspend/Reboot/Halt menu in
1007         contrib.
1009         * src/clfswm.lisp (main): Add a read-conf-file-p parameter to
1010         prevent reading the configuration file (this may be useful to
1011         produce the original documentation without user modifications
1012         with the rc configuration file).
1014 2009-11-07  Philippe Brochard  <pbrochard@common-lisp.net>
1016         * src/bindings-second-mode.lisp (set-default-second-keys):
1017         Simplification of Escape key to close/kill/remove the focus window
1018         and unhide all windows.
1020         * src/bindings.lisp (set-default-main-keys): Simplification of
1021         Escape key to close/kill/remove the focus window and unhide all
1022         windows.
1024         * src/clfswm-util.lisp (ask-close/kill-current-window): Add remove
1025         focus and unhide all windows capabilities.
1027 2009-10-10  Philippe Brochard  <pbrochard@common-lisp.net>
1029         * contrib/mpd.lisp (start-gmpc): Add gmpc in the mpd menu.
1031 2009-07-29  Philippe Brochard  <pbrochard@common-lisp.net>
1033         * src/clfswm-layout.lisp (tile-layout, tile-horizontal-layout):
1034         Keep child order and don't make unnecessary child movement.
1035         (one-column-layout, one-line-layout): New layouts.
1037 2009-06-29  Philippe Brochard  <pbrochard@common-lisp.net>
1039         * *: **** Release 0906 ****
1041         * contrib/cd-player.lisp: New file to handle the CD player.
1043         * contrib/xmms.lisp: New file to handle the xmms player.
1045 2009-06-28  Philippe Brochard  <pbrochard@common-lisp.net>
1047         * src/clfswm-layout.lisp (set-no-layout-remember-size): New layout:
1048         Maximize windows in their frame - Leave frames to their actual
1049         size.
1051         * src/bindings-second-mode.lisp (set-default-second-keys): Bind
1052         "o" on set-open-in-new-frame-in-parent-frame-nw-hook.
1054 2009-06-27  Philippe Brochard  <pbrochard@common-lisp.net>
1056         * contrib/keyb_fr.lisp: New file to handle an azerty keyboard.
1058 2009-06-24  Philippe Brochard  <pbrochard@common-lisp.net>
1060         * contrib/mpd.lisp: Use a standard menu.
1062         * src/clfswm-info.lisp: Use a standard menu for the help-menu.
1064 2009-06-22  Philippe Brochard  <pbrochard@common-lisp.net>
1066         * contrib/mpd.lisp: New file to handle the Music Player Daemon (MPD)
1068 2009-06-19  Philippe Brochard  <pbrochard@common-lisp.net>
1070         * src/clfswm-autodoc.lisp (produce-doc, produce-doc-html): Minor
1071         number key cleanup.
1073 2009-06-18  Philippe Brochard  <pbrochard@common-lisp.net>
1075         * src/config.lisp (get-fullscreen-size):  One pixel adjustment
1076         (again).
1078         * src/clfswm-placement.lisp (*-child-placement): One pixel
1079         adjustment (again).
1081 2009-06-16  Philippe Brochard  <pbrochard@common-lisp.net>
1083         * src/clfswm-circulate-mode.lisp (draw-circulate-mode-window):
1084         Ensure that all characters are printable.
1086         * src/config.lisp (get-fullscreen-size): Adjust default fullscreen
1087         sizes.
1089         * src/clfswm-placement.lisp (*-child-placement): Adjust
1090         coordinates to one pixel in the current child.
1092 2009-06-04  Philippe Brochard  <pbrochard@common-lisp.net>
1094         * src/clfswm-query.lisp (query-enter-function): Assign font before
1095         width and height calculation.
1097 2009-06-03  Philippe Brochard  <pbrochard@common-lisp.net>
1099         * src/xlib-util.lisp (banish-pointer): Use with-placement macro to
1100         bannish the pointer in an arbitrary place.
1102         * src/clfswm-info.lisp (info-mode): Use with-placement macro to
1103         place the info window in an arbitrary place.
1105         * src/clfswm-query.lisp (query-enter-function): Use with-placement
1106         macro to place the query window in an arbitrary place.
1108         * src/clfswm-placement.lisp: New file. Allow to place info windows
1109         or query windows on an arbitrary place. Allow to bannish the
1110         pointer on an arbitrary place.
1112 2009-05-16  Philippe Brochard  <pbrochard@common-lisp.net>
1114         * src/clfswm-circulate-mode.lisp (reorder-child)
1115         (reorder-brother): Unfocus windows before reordering children or
1116         brothers.
1118 2009-05-13  Philippe Brochard  <pbrochard@common-lisp.net>
1120         * src/clfswm-circulate-mode.lisp (reorder-brother): Ensure that
1121         the parent is a frame.
1123         * src/clfswm-second-mode.lisp (sm-handle-motion-notify): Handle
1124         motion with a default modifier.
1126         * src/clfswm.lisp (handle-motion-notify): Handle motion with a
1127         default modifier.
1129         * src/clfswm-info.lisp (info-mode): Handle motion with a default
1130         modifier.
1131         (info-mode): Optimization in loop function.
1133 2009-05-10  Philippe Brochard  <pbrochard@common-lisp.net>
1135         * src/clfswm-circulate-mode.lisp (reorder-brother): Handle
1136         root-frame correctly.
1138         * clfswm.asd: Dependency fix for clfswm-generic-mode.
1140         * src/clfswm-circulate-mode.lisp (reorder-child)
1141         (reorder-brother): Handle empty frames.
1142         (reorder-brother): Redisplay only the parent frame of the  current
1143         child.
1145         * src/clfswm-util.lisp (frame-toggle-maximize): Redisplay only the
1146         parent frame of the  current frame.
1148 2009-05-09  Philippe Brochard  <pbrochard@common-lisp.net>
1150         * src/clfswm-util.lisp (frame-toggle-maximize): New function:
1151         Maximize/Unmaximize the current frame in its parent frame.
1153         * src/clfswm-layout.lisp (maximize-layout): New layout: Maximize
1154         windows and frames in their parent frame.
1156 2009-05-05  Philippe Brochard  <pbrochard@common-lisp.net>
1158         * src/*.lisp: Add support for Clozure Common Lisp (CCL).
1160         * src/clfswm-circulate-mode.lisp (reorder-child)
1161         (reorder-brother): Reinitialise on circulate type change
1162         child to brother or brother to child.
1164         * src/*.lisp (*): Use map-window instead of xlib:map-window. So
1165         calls xlib:display-finish-output on each map-request. So speed up
1166         the window display.
1168         * src/xlib-util.lisp (map-window): New function. Call
1169         xlib:display-finish-output on each map request.
1171 2009-04-28  Philippe Brochard  <pbrochard@common-lisp.net>
1173         * src/clfswm-second-mode.lisp (sm-handle-motion-notify):
1174         Optimisation when drawing second mode window.
1176 2009-04-27  Philippe Brochard  <pbrochard@common-lisp.net>
1178         * src/clfswm-circulate-mode.lisp (circulate-mode): Optimisation in
1179         window redraw.
1181 2009-04-22  Philippe Brochard  <pbrochard@common-lisp.net>
1183         * src/clfswm-util.lisp (run-program-from-query-string): Launch
1184         command only with a return validation.
1186 2009-04-22  Xavier Maillard  <xma@gnu.org>
1188         * src/clfswm-query.lisp (query-string): Use a generic mode.
1190 2009-04-19  Xavier Maillard  <xma@gnu.org>
1192         * src/clfswm-info.lisp (info-mode): Use generic-mode for info-mode.
1194 2009-04-18  Xavier Maillard  <xma@gnu.org>
1196         * src/clfswm-generic-mode.lisp (generic-mode): Add a generic mode
1197         to define all other modes.
1199 2009-04-05  Philippe Brochard  <pbrochard@common-lisp.net>
1201         * src/package.lisp (): Use *default-font-string* for all
1202         font-string.
1204         * src/clfswm-info.lisp (info-mode): Ensure integer windows size.
1206 2009-02-17  Philippe Brochard  <pbrochard@common-lisp.net>
1208         * src/xlib-util.lisp (null-size-window-p): Better check of null
1209         sized windows.
1211 2009-02-14  Philippe Brochard  <pbrochard@common-lisp.net>
1213         * src/clfswm.lisp (handle-map-request): Add a fix to manage
1214         correctly fullscreen windows (SDL particularly).
1216 2008-12-20  Philippe Brochard  <pbrochard@common-lisp.net>
1218         * src/xlib-util.lisp (get-color): Allocate colors only once -> fix
1219         a segfault with clisp/new-clx.
1221         * src/clfswm.lisp (handle-motion-notify): Add a needed window
1222         argument.
1224         * src/clfswm-second-mode.lisp (sm-handle-motion-notify): Add a
1225         needed window argument.
1227 2008-10-30  Philippe Brochard  <pbrochard@common-lisp.net>
1229         * src/xlib-util.lisp (wait-no-key-or-button-press)
1230         (wait-a-key-or-button-press): Check buttons press/release correctly"
1232 2008-10-28  Philippe Brochard  <pbrochard@common-lisp.net>
1234         * src/menu-def.lisp: Add children navigation menu in the movement
1235         menu (select next/previous child/brother/level).
1237 2008-10-26  Philippe Brochard  <pbrochard@common-lisp.net>
1239         *  *: Rename 'sister' frame to 'brother' frame.
1241         * src/clfswm-keys.lisp (unalias-modifiers): Convert a modifier
1242         alias in a real modifier.
1244         * src/package.lisp (*modifier-alias*): New list of modifier alias
1245         For example: :alt is :mod-1, :numlock is :mod-2...
1247         * src/tools.lisp (remove-hook): New function.
1249         * src/clfswm-keys.lisp (with-capslock, without-capslock)
1250         (with-numlock, without-cnumlock): New functions.
1252 2008-10-25  Philippe Brochard  <pbrochard@common-lisp.net>
1254         * src/clfswm-info.lisp: Use the *binding-hook* to create info
1255         keys and mouse bindings.
1257         * src/bindings-second-mode.lisp: Use the *binding-hook* to create
1258         second keys and mouse bindings.
1260         * src/bindings.lisp: Use the *binding-hook* to create main keys
1261         and mouse bindings.
1263 2008-10-10  Philippe Brochard  <pbrochard@common-lisp.net>
1265         * src/clfswm-menu.lisp (open-menu): Remember parent menu to undo
1266         menu opening.
1268 2008-10-09  Philippe Brochard  <pbrochard@common-lisp.net>
1270         * src/menu-def.lisp: Use a menu instead of a function for the
1271         standard menu.
1273 2008-10-08  Philippe Brochard  <pbrochard@common-lisp.net>
1275         * src/clfswm-util.lisp (show-standard-menu): Display the standard
1276         menu from the 'update-menus' command.
1278 2008-10-07  Philippe Brochard  <pbrochard@common-lisp.net>
1280         * src/clfswm-query.lisp (query-string): Do not ungrab keyboard if
1281         it's already grabbed.
1283         * src/clfswm-internal.lisp (display-frame-info): Use configurable
1284         colors and fix a bug with background.
1285         (display-frame-info): Set window background when displaying info.
1287 2008-10-06  Philippe Brochard  <pbrochard@common-lisp.net>
1289         * src/xlib-util.lisp (my-character->keysyms): Use a macro to avoid
1290         warning with clisp/new-clx.
1292 2008-10-04  Philippe Brochard  <pbrochard@common-lisp.net>
1294         * src/clfswm-util.lisp (jump-to-slot): Prevent to jump on a
1295         deleted child.
1297 2008-09-23  Philippe Brochard  <pbrochard@common-lisp.net>
1299         * *: **** Release 0809 ****
1301 2008-09-23  Philippe Brochard  <pbrochard@common-lisp.net>
1303         * src/clfswm-util.lisp (ensure-unique-name): New function and menu
1304         entry.
1305         (ensure-unique-number): New function and menu entry.
1307 2008-09-22  Philippe Brochard  <pbrochard@common-lisp.net>
1309         * src/clfswm-nw-hooks.lisp (named-frame-nw-hook): New new window
1310         hook: open the next window in a named frame.
1311         (numbered-frame-nw-hook): New new window hook: open the next
1312         window in a numbered frame.
1314         * src/clfswm-query.lisp (query-string): Grab the keyboard in all
1315         cases. So query-string can be called even in the main mode.
1317         * src/clfswm-internal.lisp (show-all-children): Do not raise a
1318         child by default => far less flickering.
1320 2008-09-19  Philippe Brochard  <pbrochard@common-lisp.net>
1322         * src/bindings-second-mode.lisp: Bind "t" to tile-current-frame.
1324         * src/menu-def.lisp: Change key binding for the CLFSWM menu
1325         entry.
1327         * src/xlib-util.lisp (xgrab-pointer): Handle the case where cursor
1328         is nil. (workaround on some CLX implementation).
1330 2008-09-12  Philippe Brochard  <pbrochard@common-lisp.net>
1332         * src/menu-def.lisp: Add a menu to set a focus policy for all
1333         frames.
1335         * src/clfswm-util.lisp (set-focus-policy-generic-for-all)
1336         (all-frames-set-*-focus-policy): Set a focus policy for all
1337         frames.
1339         * src/clfswm.lisp (handle-enter-notify): sloppy-select
1340         mode. Select a child and its parents on mouse over.
1342 2008-09-03  Philippe Brochard  <pbrochard@common-lisp.net>
1344         * src/clfswm.lisp (handle-enter-notify): Add a sloppy strict focus
1345         policy -> Sloppy focus only for windows in the current frame.
1346         (main-unprotected): Exit clfswm on init error (ie: when another
1347         window manager is running).
1349         * src/clfswm-util.lisp (reset-clfswm): New function.
1351 2008-09-02  Philippe Brochard  <pbrochard@common-lisp.net>
1353         * src/clfswm-menu.lisp (init-menu): New function.
1355         * src/clfswm-util.lisp (reload-clfswm): New function to reload
1356         CLFSWM.
1357         (exit-clfswm): Rename quit-clfswm to exit-clfswm.
1359         * src/clfswm.lisp (main, main-unprotected): Handle error in a
1360         superior main function. Now CLFSWM can't break the X session. It
1361         just reinitialize the display and run a new main loop.
1363         * src/clfswm-corner.lisp: Make *clfswm-terminal* and
1364         *vt-keyboard-on* global to avoid warnings when loading clfswm.
1366         * src/clfswm-layout.lisp: Add a specific GIMP layout menu.
1367         (help-on-gimp-layout): Describe how to use the GIMP layout.
1369 2008-09-01  Philippe Brochard  <pbrochard@common-lisp.net>
1371         * src/clfswm-layout.lisp (set-gimp-layout): Change the layout to
1372         main-window-right-layout. Change the keybinding for (shift)alt+tab
1373         to not select windows in the main window lisst.
1374         Bind F8 to add a window in the main window list.
1375         Bind F9 to remove a window in the main window list.
1376         Change the focus policy to :sloppy.
1377         (set-previous-layout): Restore the previous layout, keybinding and
1378         focus policy.
1380 2008-08-31  Philippe Brochard  <pbrochard@common-lisp.net>
1382         * src/clfswm-menu.lisp (add-menu-comment): Add comments in menu.
1384         * src/clfswm-layout.lisp (main-window-left-layout)
1385         (main-window-bottom-layout, main-window-top-layout): New
1386         functions.
1387         Factorize layouts in menu.
1389 2008-08-30  Philippe Brochard  <pbrochard@common-lisp.net>
1391         * src/clfswm-layout.lisp (main-window-right-layout): A possible
1392         GIMP layout: one or more main windows on one side of the
1393         frame. Others on the other size.
1395         * src/clfswm-util.lisp
1396         (current-frame-set-click/sloppy-focus-policy): Each frame can have
1397         a different focus policy (one of :click or :sloppy).
1398         The default focus policy is set with *default-focus-policy*.
1400 2008-08-23  Philippe Brochard  <pbrochard@common-lisp.net>
1402         * src/clfswm-info.lisp (show-config-variable): New function.
1404 2008-08-19  Philippe Brochard  <pbrochard@common-lisp.net>
1406         * src/clfswm-layout.lisp (tile-horizontal-layout): New layout.
1408         * src/clfswm-info.lisp: Colored help for key binding and corners
1409         actions.
1411 2008-08-18  Philippe Brochard  <pbrochard@common-lisp.net>
1413         * src/clfswm-util.lisp (delete-focus-window)
1414         (destroy-focus-window): Remove chid only in
1415         handle-unmap/destroy-notify. Focus *current-root* only when
1416         closing/killing the current child.
1418         * src/clfswm-autodoc.lisp (produce-corner-*-doc): New autodoc
1419         functions or corners.
1421 2008-08-17  Philippe Brochard  <pbrochard@common-lisp.net>
1423         * src/clfswm-corner.lisp (present-clfswm-terminal): New corner
1424         action: Hide/Unhide a terminal on mouse corner action. (By default
1425         right mouse button on the top left corner).
1427         * src/config.lisp (*never-managed-window-list*): New config
1428         variable.
1430         * src/clfswm-internal.lisp (never-managed-window-p): New function:
1431         Handle never managed window in a more simple way.
1433         * src/clfswm-corner.lisp: New file and new and more simple method
1434         to define corners actions.
1436 2008-08-15  Philippe Brochard  <pbrochard@common-lisp.net>
1438         * src/clfswm-info.lisp (info-mode): Info line can now be colored.
1440         * src/clfswm-layout.lisp (fast-layout-switch)
1441         (define-fast-layout-switch): New functions: Switch between two
1442         layouts.
1444         * src/clfswm-second-mode.lisp (leave-second-mode): Takes care if
1445         really in the second mode. So leave-second-mode can be used even
1446         in the main mode.
1448         * src/clfswm-util.lisp (switch-to-last-child): New function:
1449         Store the current child and switch to the previous one.
1451 2008-07-16  Philippe Brochard  <pbrochard@common-lisp.net>
1453         * src/clfswm-util.lisp (display-current-window-info): Display the
1454         window id.
1455         (have-to-present-virtual-keyboard): Add a virtual keyboard corner
1456         (top right by default). By default 'xvkbd' is used.
1458 2008-06-28  Philippe Brochard  <pbrochard@common-lisp.net>
1460         * src/xlib-util.lisp (move-window, resize-window): Compress motion
1461         events.
1463         * src/clfswm.lisp (handle-motion-notify): Compress motion events.
1465         * src/clfswm-second-mode.lisp (sm-handle-motion-notify): Compress
1466         motion events.
1468         * src/clfswm-info.lisp (info-mode): Compress motion events.
1470 2008-06-21  Philippe Brochard  <pbrochard@common-lisp.net>
1472         * src/clfswm-internal.lisp (show-all-children): Compute geometry
1473         and selection first and then show only necessary children.
1474         (show-child): remove unneeded display-p parameter.
1476         * src/config.lisp (get-fullscreen-size): Place the frame border
1477         outside the screen (this prevent the loose of 2 pixels per
1478         directions :)
1480 2008-06-12  Philippe Brochard  <pbrochard@common-lisp.net>
1482         * src/clfswm-internal.lisp (focus-child): Algorithm change to
1483         raise only the selected child.
1485 2008-06-08  Philippe Brochard  <pbrochard@common-lisp.net>
1487         * src/clfswm-internal.lisp (raise-p-list, show-all-children):
1488         Raise only viewable children.
1490 2008-06-06  Philippe Brochard  <pbrochard@common-lisp.net>
1492         * src/clfswm-internal.lisp (show-all-children): Always raise all
1493         displayed children. Remove all references to raise-p.
1495 2008-06-04  Philippe Brochard  <pbrochard@common-lisp.net>
1497         * src/menu-def.lisp (child-menu): New menu entry on raise/lower
1498         child in its frame.
1500         * src/bindings-second-mode.lisp ("Page_Down", "Page_Up"): New
1501         second mode binding on raise/lower child in its frame.
1503         * src/clfswm-nw-hooks.lisp (leave-focus-frame-nw-hook): Adapt
1504         behaviour to the new raise/lower property.
1505         Call clear-nw-hook before the rest of the hook.
1507         * src/bindings.lisp (mouse-click-to-focus-and-move-window)
1508         (mouse-click-to-focus-and-resize-window): Stop button event. This
1509         prevent a keyboard/pointer freeze.
1511 2008-06-03  Philippe Brochard  <pbrochard@common-lisp.net>
1513         * src/clfswm-internal.lisp (frame-lower-child)
1514         (frame-raise-child): New functions to raise/lower a child in its
1515         frame.
1517         * src/clfswm-util.lisp (have-to-present-windows)
1518         (have-to-present-all-windows): New functions to have an MaxOS
1519         expose like on mouse click in screen corner.
1521         * src/clfswm-info.lisp ("Page_Down", "Page_Up"): Add boundaries.
1523 2008-05-30  Philippe Brochard  <pbrochard@common-lisp.net>
1525         * src/clfswm-util.lisp (unhide-a-child-from-all-frames): Unhide a
1526         child from a choice in all frames with hidden children.
1528         * src/clfswm-info.lisp (info-mode-menu): Handle separators.
1530 2008-05-28  Philippe Brochard  <pbrochard@common-lisp.net>
1532         * src/clfswm-util.lisp (hide-current-child, unhide-a-child)
1533         (unhide-all-children): New functions.
1535         * src/clfswm-info.lisp (info-mode-menu): Handle symbols and
1536         functions.
1538         * src/clfswm-util.lisp (hide/show-frame-window): new function and
1539         menu item.
1541 2008-05-23  Philippe Brochard  <pbrochard@common-lisp.net>
1543         * src/clfswm-util.lisp (rename-current-child): Do not display the
1544         frame info for a window.
1546 2008-05-20  Philippe Brochard  <pbrochard@common-lisp.net>
1548         * src/clfswm-internal.lisp (remove-child-in-frame): Destroy the
1549         frame window for the removed child and its children.
1551 2008-05-18  Philippe Brochard  <pbrochard@common-lisp.net>
1553         * src/clfswm-autodoc.lisp (produce-*-doc-*): Add a note to use the
1554         autodoc functions.
1556 2008-05-17  Philippe Brochard  <pbrochard@common-lisp.net>
1558         * src/clfswm-nw-hooks.lisp (default-frame-nw-hook): Do not handle
1559         the ROX pinboard (ie: leave it lowered in the root window as
1560         expected).
1562         * src/clfswm-layout.lisp (tile-left-space-layout): New layout.
1563         (tile-left-layout, tile-right-layout, tile-top-layout)
1564         (tile-bottom-layout): Use all the frame space when there is only
1565         one child.
1567         * src/clfswm-internal.lisp (place-window-from-hints): Center
1568         unmanaged windows in the root screen.
1570         * src/clfswm-nw-hooks.lisp (clear-nw-hook, clear-all-nw-hooks):
1571         new functions.
1573 2008-05-15  Philippe Brochard  <pbrochard@common-lisp.net>
1575         * src/clfswm-util.lisp (current-frame-manage-window-type): Fix a
1576         typo in managed types.
1578         * src/clfswm-internal.lisp (show-child): Always display frame info
1579         even if the frame is hidden.
1581         * src/xlib-util.lisp (resize-window): Use a better algorithme to
1582         resize windows.
1584 2008-05-13  Philippe Brochard  <pbrochard@common-lisp.net>
1586         * src/clfswm-util.lisp (with-movement): Display frame info for all
1587         frames in current root.
1589 2008-05-12  Philippe Brochard  <pbrochard@common-lisp.net>
1591         * src/*.lisp: Rename 'brother' frames to 'sister' frames.
1593         * src/bindings-second-mode.lisp (define-second-key #\a): New
1594         binding on 'add-default-frame'.
1596         * src/clfswm-autodoc.lisp (produce-*-doc-*-in-file): Show a
1597         message to follow the autodocumentation process.
1599 2008-05-10  Philippe Brochard  <pbrochard@common-lisp.net>
1601         * src/clfswm-util.lisp (bind-or-jump): Bind "Tab", "Return" and
1602         "Space" to jump to a child. "B" to bind a slot on the current
1603         child.
1605         * src/bindings-second-mode.lisp: Use "Tab" instead of
1606         "Iso_Left_Tab".
1608 2008-05-07  Philippe Brochard  <pbrochard@common-lisp.net>
1610         * src/clfswm-util.lisp (find-child-under-mouse): Take care of
1611         unmanaged (hidden) windows.
1613         * src/clfswm-internal.lisp (place-window-from-hints): Give a
1614         minimal size for windows.
1615         (with-all-windows-frames-and-parent): New function.
1617         * src/config.lisp (*default-window-width/height*): New parameters.
1619         * src/clfswm-internal.lisp (place-window-from-hints): Center
1620         windows in the screen instead of in their frame.
1622         * src/bindings-second-mode.lisp (tile-space-current-frame): New
1623         binding on C-t.
1625         * src/clfswm-layout.lisp (register-layout): Intern the once name
1626         in the right package.
1628 2008-05-05  Philippe Brochard  <pbrochard@common-lisp.net>
1630         * doc/dot-clfswmrc: Update to  follow the new clfswm way.
1632 2008-05-03  Philippe Brochard  <pbrochard@common-lisp.net>
1634         * src/clfswm-internal.lisp (set-current-child)
1635         (adapt-child-to-parent, show-child, hide-child): Handle the case
1636         where child is not a frame or a window.
1638         * src/clfswm-util.lisp
1639         (mouse-click-to-focus-generic,mouse-focus-move/resize-generic):
1640         Check if child is a frame.
1642         * src/clfswm-internal.lisp (managed-window-p): Handle the case
1643         where frame is null.
1644         (place-frame): Check if frame and parent are frames.
1646         * src/clfswm-info.lisp (info-mode): display all frame info before
1647         leaving.
1649         * src/clfswm-second-mode.lisp (second-key-mode): display all frame
1650         info before leaving.
1652         * src/clfswm-internal.lisp (display-all-frame-info): New function.
1654 2008-05-02  Philippe Brochard  <pbrochard@common-lisp.net>
1656         * src/tools.lisp (getenv): Implemented for ECL.
1657         (urun-prog): Implemented for ECL.
1659         * src/clfswm-util.lisp (identify-key): Use a double buffer to
1660         display text.
1662         * src/clfswm-query.lisp (query-string): Use a double buffer to
1663         display text.
1665         * src/clfswm-info.lisp (draw-info-window): Use a double buffer to
1666         display text.
1668         * src/xlib-util.lisp (clear-pixmap-buffer, copy-pixmap-buffer):
1669         New functions.
1671 2008-05-01  Philippe Brochard  <pbrochard@common-lisp.net>
1673         * src/clfswm-info.lisp (info-mode): Add boundaries in the info mode window.
1675         * src/menu-def.lisp: New file: move all menu definition in
1676         menu-def.lisp.
1678         * src/clfswm-layout.lisp (register-layout): Use a function instead
1679         of a macro.
1681 2008-04-30  Philippe Brochard  <pbrochard@common-lisp.net>
1683         * src/clfswm-autodoc.lisp (produce-menu-doc,
1684         (produce-menu-doc-html): New functions.
1685         (produce-doc-*): Moved to clfswm-autodoc.lisp.
1687         * src/clfswm-util.lisp (paste-selection-no-clear): Prevent to
1688         paste a child on one of its own children. (this prevent a
1689         recursive bug).
1690         (move-child-to): Rename move/copy-current-child-by to
1691         move/copy-child-to.
1692         (mouse-move-window-over-frame): New function to move the window
1693         under the mouse cursor to another frame.
1695         * src/clfswm-internal.lisp (find-child-in-parent): New function.
1697 2008-04-29  Philippe Brochard  <pbrochard@common-lisp.net>
1699         * src/clfswm-internal.lisp (show-all-children): Display unmanaged
1700         windows only when its window parent is the current child.
1702 2008-04-28  Philippe Brochard  <pbrochard@common-lisp.net>
1704         * src/clfswm-util.lisp (manage-current-window)
1705         (unmanage-current-window): New functions: Allow to force to manage
1706         or unmanage a window by its parent frame.
1708         * src/bindings-second-mode.lisp (#\o): binded to
1709         set-open-in-new-frame-in-parent-frame-nw-hook and
1710         (#\o :control) to set-open-in-new-frame-in-root-frame-nw-hook
1712         * src/clfswm-util.lisp (with-current-window): New macro.
1714         * src/xlib-util.lisp (move-window, resize-window): Remove uneeded
1715         exposure and enter-window handle event.
1717         * src/clfswm-util.lisp (move-frame, resize-frame): Show all
1718         children for the current child after the move/resize.
1720 2008-04-27  Philippe Brochard  <pbrochard@common-lisp.net>
1722         * src/xlib-util.lisp (resize-window): Take care of window size
1723         hints.
1725         * src/clfswm-util.lisp (mouse-focus-move/resize-generic): Allow to
1726         move/resize unmanaged windows.
1728         * src/xlib-util.lisp (move-window, resize-window): New functions.
1730 2008-04-25  Philippe Brochard  <pbrochard@common-lisp.net>
1732         * src/clfswm-util.lisp (current-frame-manage-window-type): Let the
1733         user choose what window type the current frame must handle.
1734         (display-current-window-info): New function.
1735         (current-frame-manage-all-window-type)
1736         (current-frame-manage-only-normal-window-type)
1737         (current-frame-manage-no-window-type): New functions.
1739         * src/clfswm-internal.lisp (managed-window-p): New function.
1741         * src/package.lisp (frame): Managed type: new frame
1742         parameter. This allow to choose what window type a frame must
1743         handle.
1745         * src/*.lisp: Rename all 'father' occurrences to 'parent'.
1747         * src/clfswm-nw-hooks.lisp
1748         (open-in-new-frame-in-parent-frame-nw-hook): New new window hook.
1750         * src/clfswm-util.lisp (adapt-current-frame-to-window-hints): New
1751         function.
1753         * src/tools.lisp (ensure-printable): Return always a string even
1754         with a null string.
1756 2008-04-24  Philippe Brochard  <pbrochard@common-lisp.net>
1758         * src/config.lisp (*default-nw-hook*): New variable to change the
1759         default new window hook.
1761 2008-04-22  Philippe Brochard  <pbrochard@common-lisp.net>
1763         * clfswm.asd (clfswm): Add a dependency from
1764         clfswm-second-mode.lisp to clfswm.lisp.
1766         * src/clfswm-util.lisp (identify-key): Show the documentation for
1767         the function bound on a key.
1768         (with-movement): Move with-movement,
1769         current-frame-fill/pack/resize-*  from bindings-second-mode.lisp
1770         to clfswm-util.lisp.
1772         * src/clfswm-menu.lisp: New menu system that let user change keys
1773         or functions associated to keys.
1775 2008-04-18  Philippe Brochard  <pbrochard@common-lisp.net>
1777         * src/clfswm-internal.lisp (show-all-children): Display-child is
1778         the first child by default. Solve a bug with father-p.
1780 2008-04-17  Philippe Brochard  <pbrochard@common-lisp.net>
1782         * src/clfswm-internal.lisp (add-frame): Add frame return the
1783         created frame.
1784         (show-all-children): Move the size computation outside the
1785         show-child part.
1787         * src/bindings-second-mode.lisp (with-movement): Redisplay only
1788         the current child.
1790         * src/clfswm-util.lisp (mouse-click-to-focus-generic): Redisplay
1791         only the current child.
1793         * src/clfswm-internal.lisp (show-all-children): New display-child
1794         parameter to display only the desired child and its children.
1795         (select-next/previous-child): Only display the current child.
1797 2008-04-14  Philippe Brochard  <pbrochard@common-lisp.net>
1799         * src/clfswm.lisp (init-display): Move the default frame creation
1800         on the default init hook.
1802         * src/clfswm-keys.lisp (define-ungrab/grab): Handle all keysyms in
1803         the main mode (for example: "1" on an azerty keyboard).
1805 2008-04-13  Philippe Brochard  <pbrochard@common-lisp.net>
1807         * src/clfswm-keys.lisp (find-key-from-code): Better handle of
1808         keysyms. Revert to old grabbing method for the main mode.
1810 2008-04-12  Philippe Brochard  <pbrochard@common-lisp.net>
1812         * src/clfswm.lisp (init-display): Add key handling on no focus
1813         window and on frame windows.
1815 2008-04-11  Philippe Brochard  <pbrochard@common-lisp.net>
1817         * src/clfswm.lisp (main): Keyboard handle strategie change: Grab
1818         all keys by default and replay just what is needed. No change for
1819         the second mode.
1821         * src/clfswm-keys.lisp: remove grab/ungrab main keys.
1822         (find-key-from-code): Test for shift and not shift presence.
1824 2008-04-09  Philippe Brochard  <pbrochard@common-lisp.net>
1826         * src/clfswm-internal.lisp (switch-to-root-frame): show later -
1827         new key parameter to have less flickering.
1829 2008-04-07  Philippe Brochard  <pbrochard@common-lisp.net>
1831         * src/bindings-second-mode.lisp (frame-layout-once-menu): Set the
1832         layout only one time and revert to no-layout to freely handle
1833         frames.
1835         * src/clfswm-nw-hooks.lisp
1836         (open-in-new-frame-in-root-frame-nw-hook): Tile layout with spaces
1837         with new created window.
1839         * src/clfswm-layout.lisp (register-layout): Now register
1840         automatically a once layout to set the layout only one time and
1841         revert to no-layout to freely handle frames.
1843 2008-04-05  Philippe Brochard  <pbrochard@common-lisp.net>
1845         * src/clfswm-nw-hooks.lisp (leave-focus-frame-nw-hook): New
1846         nw-hook: Open the next window in the current frame and leave the
1847         focus to the current child.
1849 2008-04-04  Philippe Brochard  <pbrochard@common-lisp.net>
1851         * src/bindings-second-mode.lisp: Add keys definitions to
1852         bind-or-jump in the second mode.
1854         * src/clfswm-util.lisp (bind-or-jump): remove the auto-defining
1855         macro for bind-or-jump-(1|2|3...).
1857         * src/clfswm-keys.lisp (define-define-key/mouse): Allow additional
1858         arguments to function. This allow to do things like:
1859         (define-main-key (key) 'my-function 10 20 'foo) -> 10 20 and 'foo
1860         are passed to my-function on key press.
1862 2008-04-03  Philippe Brochard  <pbrochard@common-lisp.net>
1864         * src/clfswm-util.lisp (bind-or-jump): New (great) function.
1866 2008-04-02  Philippe Brochard  <pbrochard@common-lisp.net>
1868         * src/clfswm-internal.lisp (child-fullname): New function
1870         * src/clfswm-info.lisp (info-mode-menu): Add an explicit optional
1871         docstring in info-mode-menu. An item can be
1872         '((key function) (key function)) or with docstring
1873         '((key function "documentation 1") (key function "bla bla") (key function))
1875         * src/tools.lisp (ensure-n-elems): New function.
1877         * src/bindings-second-mode.lisp: Bind Alt+mouse-1/3 to move or
1878         resize a frame or the window's father.
1880         * src/clfswm.lisp (init-display): Remove tile-space-layout by
1881         default on the root frame.
1883         * src/clfswm-util.lisp (move/resize-frame): Add standard event
1884         hooks handlers (map-request, configure-notify...)
1886         * src/clfswm-internal.lisp (adapt-child-to-father): Limit minimal
1887         child size to 1x1.
1889 2008-04-01  Philippe Brochard  <pbrochard@common-lisp.net>
1891         * src/bindings.lisp: Bind Alt+mouse-1/3 to move or resize a frame
1892         or the window's father.
1894         * src/clfswm-util.lisp (mouse-click-to-focus-generic): Stop button
1895         event only if there is a geometry change.
1896         (mouse-focus-move/resize-generic): Generic function to move or
1897         resize a frame or a window father frame.
1899 2008-04-01  Philippe Brochard  <pbrochard@common-lisp.net>
1901         * src/clfswm-internal.lisp (show-all-children): Return t if there
1902         is a geometry change.
1904 2008-03-30  Philippe Brochard  <pbrochard@common-lisp.net>
1906         * src/bindings.lisp (Up/Down): Swap select previous/next level.
1908         * src/bindings-second-mode.lisp (Up/Down): Swap select previous/next level.
1910         * src/clfswm.lisp (init-display): Create a default frame in the root frame.
1912         * src/clfswm-internal.lisp (place-frame): Place frame from real (pixel) coordinates.
1913         (with-all-*): Reverse the child list to manage the first child last (like in
1914         show-all-children).
1916         * src/config.lisp (*create-frame-on-root*): New variable: Create a new frame on the
1917         root window only if true.
1919         * src/clfswm-util.lisp (mouse-click-to-focus-generic): Create a new frame on the
1920         root window only if *create-frame-on-root* is true.
1922         * src/bindings-second-mode.lisp (sm-mouse-click-to-focus-generic): Create a new frame
1923         on the root window.
1925 2008-03-29  Philippe Brochard  <pbrochard@common-lisp.net>
1927         * src/bindings-second-mode.lisp (sm-mouse-click-to-focus-generic): Focus, move and resize
1928         the current child (even if it's a window).
1930 2008-03-28  Philippe Brochard  <pbrochard@common-lisp.net>
1932         * src/clfswm-util.lisp (mouse-click-to-focus-and-move)
1933         (mouse-click-to-focus-and-resize): New functions.
1935         * src/clfswm-internal.lisp (*-fl->px): Convert float coordinates to pixel.
1936         (*-px->fl): Convert pixel coordinates to float.
1938         * src/tools.lisp (call-hook): Move call-hook to tools.lisp.
1940 2008-03-27  Philippe Brochard  <pbrochard@common-lisp.net>
1942         * src/clfswm-layout.lisp (no-layout): Use :first-only to raise only the
1943         first child.
1945         * src/clfswm-internal.lisp (hide-all): Split hide-all-children in hide-all
1946         and hide-all-children.
1947         (raise-if-needed): New function.
1948         (show-child): Use a first-p parameter to raise windows only when they are
1949         first child.
1951 2008-03-26  Philippe Brochard  <pbrochard@common-lisp.net>
1953         * src/clfswm-internal.lisp (select-next/previous-level): Don't use show-all-children
1954         -> less flickering.
1956 2008-03-25  Philippe Brochard  <pbrochard@common-lisp.net>
1958         * src/clfswm-info.lisp (keys-from-list): new function.
1960         * src/*: rename 'childs' in 'children'.
1962         * src/*: rename 'group' in 'frame'.
1964 2008-03-22  Philippe Brochard  <pbrochard@common-lisp.net>
1966         * src/clfswm-pack.lisp (explode-group/explode-current-group): new functions.
1968 2008-03-21  Philippe Brochard  <pbrochard@common-lisp.net>
1970         * src/clfswm-pack.lisp: Pack, Fill, Resize functions.
1972 2008-03-16  Philippe Brochard  <pbrochard@common-lisp.net>
1974         * src/clfswm-nw-hooks.lisp: Register system for new window hooks.
1975         Bind control+o to open the next window in a new group in the root group
1976          (as open in next window in a new workspace in 0801 version).
1978 2008-03-15  Philippe Brochard  <pbrochard@common-lisp.net>
1980         * src/clfswm-util.lisp (show/hide-all-groups-info/key): Show/hide all groups info
1981         window.
1983 2008-03-14  Philippe Brochard  <pbrochard@common-lisp.net>
1985         * bindings-second-mode.lisp ("ISO_Left_Tab"): Use ISO_Left_Tab
1986         instead of Tab for select-previous-child.
1988 2008-03-13  Philippe Brochard  <pbrochard@common-lisp.net>
1990         * clfswm-util.lisp (force-window-in-group/force-window-center-in-group):
1991         new functions.
1993 2008-03-11  Philippe Brochard  <pbrochard@common-lisp.net>
1995         * clfswm-util.lisp (identify-key): Display the documentation
1996         associated to keys when identifying a key.
1998 2008-03-10  Xavier Maillard  <xma@gnu.org>
2000         * contrib/clfswm: Complete rewrite of the script. Detect error and
2001         act accordingly. Add command line arguments to configure the
2002         script execution. User can now choose different common lisp
2003         implementation (clisp and sbcl only), choose where to store the
2004         dumped image, where to find clfswm source.
2006 2008-03-09  Philippe Brochard  <pbrochard@common-lisp.net>
2008         * clfswm-internal.lisp (process-new-window): Beginning of new
2009         window hook: each group have a hook to tell what he wants to do
2010         with the new created window.
2012 2008-03-08  Xavier Maillard  <xma@gnu.org>
2014         * contrib/clfswm: New script. Dump a CLISP image of CLFSWM then
2015         call the resulting executable.
2017         * clfswm.lisp (read-conf-file): Check for the user config file in
2018         XDG_CONFIG_HOME *first*. Freedesktop.org standards should be
2019         prefered whenever possible.
2021 2008-02-27  Philippe Brochard  <pbrochard@common-lisp.net>
2023         * clfswm-layout.lisp (*-layout): Add an optional raise-p
2024         parameter in each layout.
2026 2008-02-26  Philippe Brochard  <pbrochard@common-lisp.net>
2028         * clfswm-util.lisp (copy/cut-current-child): Does not affect the
2029         root group.
2030         (copy/move-current-child-by-name/number): new functions
2031         (focus-group-by-name/number): new functions
2032         (delete-group-by-name/number): new functions
2034 2008-02-24  Philippe Brochard  <pbrochard@common-lisp.net>
2036         * ************************************************************ *
2037         *: Major update - No more reference  to workspaces. The main   *
2038         structure is a tree of groups or application windows.          *
2039         * ************************************************************ *
2041 2008-02-07  Philippe Brochard  <pbrochard@common-lisp.net>
2043         * clfswm.lisp (read-conf-file): Read configuration in
2044         $HOME/.clfswmrc or in /etc/clfswmrc or in
2045         $XDG_CONFIG_HOME/clfswm/clfswmrc.
2046         (xdg-config-home): Return the content of $XDG-CONFIG-HOME (default
2047         to $HOME/.config/).
2049 2008-01-18  Philippe Brochard  <pbrochard@common-lisp.net>
2051         * clfswm-internal.lisp (show-all-group): Use *root* and *root-gc*
2052         by default.
2054 2008-01-03  Philippe Brochard  <pbrochard@common-lisp.net>
2056         * clfswm-internal.lisp (find-window-group): New function.
2058         * clfswm*: Change to make clfswm run with clisp/new-clx.
2060 2008-01-01  Philippe Brochard  <pbrochard@common-lisp.net>
2062         * clfswm-util.lisp (query-show-paren): Add show parent matching in
2063         query string.
2064         (query-string): Bind control+k to delete end of line.
2066         * clfswm-second-mode.lisp (draw-second-mode-window): Display
2067         the action on mouse motion in second mode.
2069         * clfswm.lisp (handle-exposure): Redisplay groups on exposure
2070         event but do not clear the root window.
2071         (handle-configure-request): Adjust unmanaged window from their
2072         request.
2074         * clfswm-internal.lisp (process-new-window): Adjust new window
2075         with the specified hints (max/min/base width/height).
2077 2007-12-31  Philippe Brochard  <pbrochard@common-lisp.net>
2079         * clfswm.lisp (handle-configure-request): Send an Configuration
2080         Notify event. This solve a bug with xterm and rxvt who takes some
2081         times to be mapped. Now there is no delay.
2083         * bindings-second-mode.lisp (define-shell): Run programs after
2084         living the second mode.
2086 2007-12-30  Philippe Brochard  <pbrochard@common-lisp.net>
2088         * clfswm-internal.lisp (process-new-window): Do not crop transient
2089         window to group size.
2090         (adapt-window-to-group): Do not crop transient window to group
2091         size.
2093         * clfswm.lisp (handle-configure-request): Adapt just the window to
2094         its group and don't take care of the configure request. Remove the
2095         bug with the Gimp outside the group and speed up the window
2096         manipulation.
2097         (handle-exposure): Remove show-all-group on exposure event
2098         -> Speed up.
2100 2007-12-29  Philippe Brochard  <pbrochard@common-lisp.net>
2102         * clfswm-util.lisp (circulate-group-up-copy-window)
2103         (circulate-group-down-copy-window)
2104         (circulate-workspace-up-copy-group)
2105         (circulate-workspace-down-copy-group): Prevent the copy of the
2106         same window in the same workspace.
2108         * bindings-second-mode.lisp (release-copy-selected-window)
2109         (release-copy-selected-group): Prevent the copy of the same window
2110         in the same workspace.
2112         * clfswm-pager.lisp (generic-pager-move-window-on-previous-line)
2113         (generic-pager-move-window-on-next-line): Remove the copy
2114         property.
2115         (generic-pager-move-group-on-next-workspace)
2116         (generic-pager-move-group-on-previous-workspace): Prevent the copy
2117         of the same window in the same workspace.
2119         * bindings-pager.lisp (mouse-pager-copy-selected-window-release)
2120         (mouse-pager-copy-selected-group-release): Prevent the copy of the
2121         same window in the same workspace.
2123         * tools.lisp (setf/=): new macro to set a variable only when
2124         necessary.
2126         * clfswm-internal.lisp (adapt-window-to-group): use set/= to set
2127         x, y... only when necessary.
2129 2007-12-28  Philippe Brochard  <pbrochard@common-lisp.net>
2131         * clfswm.lisp (handle-configure-notify, *configure-notify-hook*):
2132         new function and hook: force windows to stay in its group (solve a
2133         bug with the Gimp).
2135 2007-12-25  Philippe Brochard  <pbrochard@common-lisp.net>
2137         * bindings-second-mode.lisp (mouse-motion): use hide-group to have
2138         less flickering when moving/resizing groups.
2140         * clfswm-internal.lisp (hide-group): new function.
2141         (show-all-group): clear-all: new parameter.
2143 2007-12-22  Philippe Brochard  <pbrochard@common-lisp.net>
2145         * clfswm-keys.lisp (define-define-key): undefine-*-multi-name: new
2146         macro.
2147         * clfswm*: Color change for the pager. Typo or better description
2148         in bindings definitions. Define bindings for a qwerty keyboard by
2149         default. dot-clfswmrc show examples to switch to an azerty
2150         keyboard.
2151         License change to GPL v3.
2152         * config.lisp: new file - group all globals variables in this
2153         file.
2155 2007-08-26  Philippe Brochard  <pbrochard@common-lisp.net>
2157         * xlib-util.lisp (hide-window): Remove structure-notivy events
2158         when hidding a window.
2160 2007-05-16  Philippe Brochard  <pbrochard@common-lisp.net>
2162         * package.lisp (*sm-property-notify-hook*): Readded
2163         property-notify-hook in second mode.
2165 2007-05-15  Philippe Brochard  <pbrochard@common-lisp.net>
2167         * clfswm-keys.lisp (produce-doc-html): Better clean up for strings.
2169 2007-05-13  Philippe Brochard  <pbrochard@common-lisp.net>
2171         * clfswm-pack.lisp (tile-current-workspace-to/right/left/top/bottom):
2172         Tile the current workspace with the current window on one side and
2173         others on the other (this emulate the larswm, dwm, wmii way). See
2174         the default configuration file to enable this mode by default.
2176         * clfswm-pager.lisp (pager-tile-current-workspace-to): idem for
2177         the pager.
2179 2007-05-12  Philippe Brochard  <pbrochard@common-lisp.net>
2181         * clfswm-pager.lisp (pager-draw-window-in-group): Add
2182         ensure-printable to print windows name even with non-ascii
2183         characters.
2185 2007-05-11  Philippe Brochard  <pbrochard@common-lisp.net>
2187         * clfswm-pager.lisp (pager-explode-current-group): Create a new
2188         group for each window in group.
2189         (pager-implode-current-group): Move all windows in workspace to
2190         one group and remove other groups.
2192         * clfswm-pack.lisp (explode-group): Create a new group for each
2193         window in group.
2194         (implode-group): Move all windows in workspace to one group and
2195         remove other groups.
2197         * clfswm-util.lisp (identify-key): Remove local configuration
2198         variables and made them available for configuration from
2199         package.lisp.
2200         (query-string): idem.
2202 2007-04-29  Philippe Brochard  <pbrochard@common-lisp.net>
2204         * netwm-util.lisp: Start of NetWM compliance.
2205         Add a Netwm client list gestion.
2207 2007-04-28  Philippe Brochard  <pbrochard@common-lisp.net>
2209         * clfswm-internal.lisp (create-group-on-request): open a new group
2210         only when the current group is not empty.
2212         * bindings-second-mode.lisp (define-second-key-#\o-control): Fix a
2213         bug with null workspace.
2215         * clfswm-pager.lisp (pager-handle-event): Add a hook
2216         system. This hooks can be changed in the user configuration file.
2218         * package.lisp: All colors and font variables are set in
2219         package.lisp and can be configured in the user configuration
2220         file.
2221         Note: If you have configured some less ugly colors (esp. for the
2222         pager) don't hesitate to let me know :)
2224         * clfswm-second-mode.lisp (sm-handle-event): Add a hook
2225         system. This hooks can be changed in the user configuration file.
2227         * clfswm.lisp (handle-event): Add a hook system. This hooks can be
2228         changed in the user configuration file (~/.clfswmrc)
2230 2007-04-25  Philippe Brochard  <pbrochard@common-lisp.net>
2232         * clfswm-util.lisp (stop-all-pending-actions): new function: reset
2233         arrow action, open next window in new workspace/group.
2235         * bindings.lisp (stop-all-pending-actions): new binding.
2236         (open-next-window-in-new-group-once): Open the next windows in a
2237         new group (only once) or open all new windows in a new group (like
2238         others windows managers).
2240 2007-04-22  Philippe Brochard  <pbrochard@common-lisp.net>
2242         * clfswm.lisp (read-conf-file): New function to read a lisp
2243         configuration file at startup.
2244         (focus-group-under-mouse): Check if group isn't the current group
2245         ( prevent a bug with unclutter ).
2247 2007-03-02  Philippe Brochard  <pbrochard@common-lisp.net>
2249         * bindings.lisp (run-program-from-query-string): A program can be
2250         launch from a input query window.
2252 2007-03-01  Philippe Brochard  <pbrochard@common-lisp.net>
2254         * clfswm-info.lisp: Fix a bug with banish pointer in info mode.
2256 2007-02-28  Philippe Brochard  <pbrochard@common-lisp.net>
2258         * clfswm.lisp (process-new-window): One can now open the next
2259         window in a workspace called by its number.
2261         * clfswm-util.lisp (query-font-string): Minimal editing
2262         capabilities.
2263         (eval-from-string): And an REPL in the window manager... :)
2265 2007-02-26  Philippe Brochard  <pbrochard@common-lisp.net>
2267         * clfswm.lisp (process-new-window): One can now open the next
2268         window in a new workspace or a new group.
2270         * clfswm-pager.lisp (pager-mode): Display the next arrow action
2271         with the hidden windows.
2273         * clfswm.lisp (second-key-mode): Display the current workspace
2274         number and the next arrow action in the state window.
2276         * clfswm-pager.lisp (pager-mode): Hide all windows before leaving
2277         the pager mode and then redisplay only the current workspace.
2279 2007-02-25  Philippe Brochard  <pbrochard@common-lisp.net>
2281         * clfswm.lisp (add-workspace): Workspaces are now numbered. So
2282         they can be focused with a keypress, sorted or renumbered.
2284 2007-02-24  Philippe Brochard  <pbrochard@common-lisp.net>
2286         * clfswm-pager.lisp (pager-mode): Remove multiple silly
2287         pager-draw-display. This prevent a lot of flickering in the
2288         pager.
2290         * clfswm.lisp: Remove all display-force-output and replace them
2291         with only one display-finish-output in the event loop.
2293 2006-11-06  Philippe Brochard  <pbrochard@common-lisp.net>
2295         * clfswm-pager.lisp (pager-center-group): New function - center a
2296         group at the middle of the screen.
2298         * clfswm-pack.lisp (center-group): New function - center a group
2299         at the middle of the screen.
2301         * clfswm.lisp (show-group): Add a cross line under the group.
2302         (show-group): Group are showned even if fullscreened.
2303         (init-display): Add an exposure event on the root window.
2305 2006-11-05  Philippe Brochard  <pbrochard@common-lisp.net>
2307         * package.lisp (*default-group*): Default group is the same size
2308         of a fullscreened group.
2310         * bindings*: Use shift to move, control+shift to copy.
2312         * *.lisp: Add comments for configuration or alternatives. So grep
2313         for CONFIG to see where you can configure clfswm. And grep for
2314         Alternative to use some commented code.
2316         * clfswm.lisp (second-key-mode): Use a single window to show the
2317         second mode. See for alternatives at the end of this file.
2319 2006-11-03  Philippe Brochard  <pbrochard@common-lisp.net>
2321         * clfswm-keys.lisp (define-define-key/mouse): Factorisation in a
2322         macro of key and mouse definitions.
2323         (define-define-key/mouse): Use state instead of modifiers list
2324         this fix a bug when the modifiers list is not in the rigth order.
2326         * clfswm.lisp (second-key-mode): Add a colored border in second mode.
2328 2006-11-02  Philippe Brochard  <pbrochard@common-lisp.net>
2330         * clfswm-info.lisp (info-mode): Add an info mode.
2332 2006-11-01  Philippe Brochard  <pbrochard@common-lisp.net>
2334         * clfswm.lisp (process-new-window): Change border size for
2335         transient windows.
2336         (show-all-windows-in-workspace): Unhide all windows even when the
2337         current group is in fullscreen mode.
2339 2006-10-26  Philippe Brochard  <pbrochard@common-lisp.net>
2341         * clfswm-util.lisp (identify-key): Add an exposure handle-event to
2342         redisplay the identify window after a terminal switch.
2344         * clfswm-pager.lisp (pager-mode): Add an exposure handle-event to
2345         redisplay the pager after a terminal switch.
2347 2006-10-24  Philippe Brochard  <pbrochard@common-lisp.net>
2349         * clfswm-util.lisp (identify-key): Add a window to display
2350         the keys to identify on screen.
2352         * bindings.lisp, bindings-pager.lisp: Define same keys to
2353         move/copy groups/windows in second mode and in pager.
2355         * clfswm.lisp (handle-event*): Same version in all clfswm (fix some
2356         drawing lags).
2357         (show-all-windows-in-workspace): unhide window before adapting it
2358         to group.
2360 2006-10-23  Philippe Brochard  <pbrochard@common-lisp.net>
2362         * clfswm.lisp (handle-event): Revert to an older version.
2364 2006-10-18  Philippe Brochard  <pbrochard@common-lisp.net>
2366         * clfswm-util.lisp (force-window-in-group)
2367         (force-window-center-in-group): New functions for transient windows.
2369         * clfswm-pager.lisp (pager-remove-current-workspace/group):
2370         bugfix: hide all windows before removing group or workspace.
2372 2006-10-17  Philippe Brochard  <pbrochard@common-lisp.net>
2374         * bindings-pager.lisp (mouse-pager-move-selected-group)
2375         (mouse-pager-copy-selected-group)
2376         (mouse-pager-move-selected-window)
2377         (mouse-pager-copy-selected-window, mouse-pager-rotate-window-up)
2378         (mouse-pager-rotate-window-down): New functions to have mouse in
2379         pager mode.
2381         * clfswm-pager.lisp (pager-swap-window)
2382         (pager-copy-group-on-next/previous-workspace)
2383         (pager-copy-window-on-next/previous-line): New functions
2385 2006-10-15  Philippe Brochard  <pbrochard@common-lisp.net>
2387         * clfswm-pager.lisp (pager-move-window-on-next/previous-line,
2388         (pager-move-group-on-next/previous-workspace): new functions.
2390         * clfswm-pack.lisp (resize-half-x-x-current-group): resize group
2391         to its half size (new functions).
2393 2006-10-11  Philippe Brochard  <pbrochard@common-lisp.net>
2395         * clfswm-pager.lisp: workspaces, groups and windows can now be
2396         selectionned with the keyboard or the mouse.
2398 2006-10-09  Philippe Brochard  <pbrochard@common-lisp.net>
2400         * clfswm-pager.lisp (pager-select-workspace-right/left):
2401         workspaces can now be selectionned with the keyboard.
2403 2006-10-08  Philippe Brochard  <pbrochard@common-lisp.net>
2405         * clfswm-keys.lisp (undefine-main-key, undefine-second-key, undefine-mouse-action):
2406         new function to remove a previous defined key or mouse combination.
2408 2006-10-07  Philippe Brochard  <pbrochard@common-lisp.net>
2410         * clfswm.lisp (main): Check for access error in init-display.
2412         * clfswm-keys.lisp (define-ungrab/grab): check for keysym and
2413         keycode before grabbing.
2415         * bindings.lisp: Remove nlambda and use defun to keep the function
2416         documentation with clisp.
2417         (define-shell): new macro to define shell command for the second
2418         mode.
2420 2006-10-06  Philippe Brochard  <pbrochard@common-lisp.net>
2422         * clfswm-keys.lisp (define-ungrab/grab): use a cond instead of a
2423         boggus typecase.
2425 2006-10-05  Philippe Brochard  <pbrochard@common-lisp.net>
2427         * bindings.lisp (accept-motion): Move group bugfix in upper mouse
2428         workspace circulation.
2430         * clfswm-util.lisp (absorb-orphan-window): new function.
2432         * clfswm-keys.lisp: Keysyms support.
2434 2006-10-02  Philippe Brochard  <pbrochard@common-lisp.net>
2436         * clfswm.lisp (show-group): Use one gc for all groups and not one
2437         per group.
2439 2006-10-01  Philippe Brochard  <pbrochard@common-lisp.net>
2441         * bindings.lisp (define-second-key (#\l :mod-1)): fix a typo.
2443         * clfswm.lisp (adapt-window-to-group): Adapt only windows with
2444         width and height outside group.
2446 2006-09-28  Philippe Brochard  <pbrochard@common-lisp.net>
2448         * clfswm.lisp: First public release.