contrib/toolbar.lisp (clock): Add a clock module.
[clfswm.git] / ChangeLog
blob1cf1374e08feb1607457c2cf0939497b12eb7295
1 2012-05-30  Philippe Brochard  <pbrochard@common-lisp.net>
3         * contrib/toolbar.lisp (clock): Add a clock module.
5 2012-05-28  Philippe Brochard  <pbrochard@common-lisp.net>
7         * contrib/toolbar.lisp: begining of toolbar support.
9 2012-05-24  Philippe Brochard  <pbrochard@common-lisp.net>
11         * src/clfswm-internal.lisp (rotate-root-geometry): Do not use
12         rotatef but a simpler algorithm.
14 2012-05-19  Philippe Brochard  <pbrochard@common-lisp.net>
16         * src/clfswm-placement.lisp: Adjust width and height in child and
17         root placement to prevent too big child size.
19 2012-05-18  Philippe Brochard  <pbrochard@common-lisp.net>
21         * src/clfswm-placement.lisp: New root placement possibility.
23         * src/clfswm-util.lisp (change-current-root-geometry): New
24         function.
26 2012-05-17  Philippe Brochard  <pbrochard@common-lisp.net>
28         * src/clfswm-util.lisp (exchange-root-geometry-with-mouse): New
29         function and menu.
31 2012-05-16  Philippe Brochard  <pbrochard@common-lisp.net>
33         * src/menu-def.lisp: New root menu.
35 2012-05-15  Philippe Brochard  <pbrochard@common-lisp.net>
37         * src/clfswm-circulate-mode.lisp (rotate-root-geometry-next)
38         (rotate-root-geometry-previous): New second mode binding to change
39         root geometry.
41 2012-05-13  Philippe Brochard  <pbrochard@common-lisp.net>
43         * src/clfswm-internal.lisp: Remove the *current-child* variable
44         and use a setfable function (current-child) instead.
45         (current-child-setter): Store root current child before apllying
46         current child change.
48 2012-05-09  Philippe Brochard  <pbrochard@common-lisp.net>
50         * src/clfswm-internal.lisp: Use xdpyinfo/xinerama informations
51         instead of xrandr informations.
53 2012-05-06  Philippe Brochard  <pbrochard@common-lisp.net>
55         * src/clfswm-internal.lisp : Use only one list for root
56         management.
57         (*root*): Root management API simplification.
59 2012-04-30  Philippe Brochard  <pbrochard@common-lisp.net>
61         * src/clfswm-internal.lisp: Big change to replace *current-root*
62         variable to support multiple root.
64 2012-04-18  Philippe Brochard  <pbrochard@common-lisp.net>
66         * src/tools.lisp (add-new-hook, add-hook): New macro. Do not
67         duplicate hooks by default. Use add-new-hook if you want to
68         duplicate them.
70 2012-04-16  Philippe Brochard  <pbrochard@common-lisp.net>
72         * src/clfswm-corner.lisp (wait-window-in-query-tree): Add a limit
73         of try to wait the command window.
75 2012-02-25  Philippe Brochard  <pbrochard@common-lisp.net>
77         * src/clfswm-util.lisp (place-frames-from-xrandr)
78         (swap-frame-geometry, rotate-frame-geometry): New helper functions
79         for multiple physical screen.
80         (jump-to-slot, add-frame-in-parent-frame): Change *current-root*
81         only when needed.
83 2012-01-18  Philippe Brochard  <pbrochard@common-lisp.net>
85         * src/*.lisp: Use create-symbol and create-symbol-in-package
86         instead of the shorter symb. (Thanks Aad Versteden).
88         * src/bindings-second-mode.lisp (set-default-second-keys): New
89         key binding to set window and frame transparency.
91         * src/bindings.lisp (set-default-main-mouse): New mouse binding to
92         set window and frame transparency.
94         * src/clfswm-keys.lisp (define-keys): New macro to ease multiple
95         keys definitions. (Thanks Valentin Plechinger for the request).
97         * src/*.lisp: Add full transparency support with xcompmgr.
99 2012-01-14  Philippe Brochard  <pbrochard@common-lisp.net>
101         * src/*.lisp: Add transparency support.
103 2012-01-09  Ales Guzik <ales.guzik@gmail.com>
105         * src/clfswm-layout.lisp (tile-layout-mix): New layout to
106         automatically choose between vertival and horizontal tile layout.
107         (tile-space-layout): Fix to have space between screen border and
108         frame the same as between frames.
110 2012-01-04  Philippe Brochard  <pbrochard@common-lisp.net>
112         * load.lisp: Support clisp 2.49+ module system to load CLX.
114 2012-01-04  Ales Guzik <ales.guzik@gmail.com>
116         * src/clfswm-layout.lisp (update-layout-managed-children-keep-position):
117         Fix an inattention error.
119 2012-01-04  Philippe Brochard  <pbrochard@common-lisp.net>
121         * src/xlib-util.lisp (with-xlib-protect): Protect from
122         xlib:lookup-error. This prevent an error in clisp/new-clx when
123         sometimes an xlib:colormap is expected instead of an xlib:window.
125 2012-01-03  Philippe Brochard  <pbrochard@common-lisp.net>
127         * src/xlib-util.lisp (handle-event): Fix a clisp/new-clx error
128         when sometimes window slot of event-slots is a pixmap instead of a
129         window.
131 2011-12-26  Philippe Brochard  <pbrochard@common-lisp.net>
133         * src/clfswm-query.lisp: Fill the history list with a non-nil
134         value.
136 2011-12-25  Philippe Brochard  <pbrochard@common-lisp.net>
138         * src/package.lisp (make-x-drawable): Drawable wrapper to prevent
139         type error in some CLX versions.
140         Replace xlib:drawable-* functions with x-drawable-* equivalents
142 2011-12-14  Philippe Brochard  <pbrochard@common-lisp.net>
144         * src/clfswm-util.lisp (um-create-xdg-section-list): Add at least
145         the 'Utility menu entry.
147         * src/config.lisp (*xdg-section-list*): moved to config.lisp.
149         * src/clfswm-util.lisp (update-menus): Set a default value for
150         searching .desktop files when XDG_DATA_DIRS is not set.
152 2011-10-15  Philippe Brochard  <pbrochard@common-lisp.net>
154         * src/clfswm-internal.lisp (place-window-from-hints): Use
155         with-placement macro to place unmanaged windows in an arbitrary
156         place.
158 2011-06-16  Philippe Brochard  <pbrochard@common-lisp.net>
160         * src/clfswm-internal.lisp (clean-windows-in-all-frames): Prevent
161         current root and current child being equal to child.
163 2011-06-13  Philippe Brochard  <pbrochard@common-lisp.net>
165         * src/keysyms.lisp: Repeat Page_Down/Up keysym definitions at the
166         end of the file to change keysyms priority.
168 2011-06-13  Sylvain HENRY <hsyl20@gmail.com>
170         *  *.*: Minor spelling fix.
172 2011-06-12  Philippe Brochard  <pbrochard@common-lisp.net>
174         * src/clfswm.lisp (:unmap-notify, :destroy-notify): Show all
175         children just after the xlib tree cleanup -> reduce the
176         flickering when a window is deleted or destroyed.
178         * src/clfswm-internal.lisp (process-existing-windows): Do not
179         process the notify window.
181 2011-06-08  Philippe Brochard  <pbrochard@common-lisp.net>
183         * *: **** Release 1106 ****
185 2011-06-08  Philippe Brochard  <pbrochard@common-lisp.net>
187         * src/clfswm-internal.lisp (clean-windows-in-all-frames): New
188         function to prevent xlib error when a window is deleted.
190 2011-06-08  Philippe Brochard  <pbrochard@common-lisp.net>
192         * src/clfswm-internal.lisp
193         (delete-child-and-children-in-all-frames): Delete or destroy
194         children before displaying all children.
196 2011-06-05  Philippe Brochard  <pbrochard@common-lisp.net>
198         * src/clfswm-util.lisp (add-frame-in-parent-frame): New function
199         and binding.
201 2011-06-04  Philippe Brochard  <pbrochard@common-lisp.net>
203         * src/clfswm.lisp (main-unprotected): Destroy all frames windows
204         before closing the display (not really needed).
206 2011-06-02  Philippe Brochard  <pbrochard@common-lisp.net>
208         * src/clfswm-layout.lisp (inc-tile-layout-size)
209         (dec-tile-layout-size, inc-slow-tile-layout-size)
210         (dec-slow-tile-layout-size): New functions and bindings.
212 2011-06-01  Philippe Brochard  <pbrochard@common-lisp.net>
214         * src/clfswm-expose-mode.lisp (define-expose-letter-keys): Add
215         0..1 and A..Z keys to select a child in exposé mode.
217         * src/clfswm-internal.lisp (display-frame-info): Remove hidden
218         infos in frames windows.
220         * src/clfswm-util.lisp (ask-close/kill-current-window): Menu
221         update.
223 2011-05-30  Philippe Brochard  <pbrochard@common-lisp.net>
225         * src/clfswm-internal.lisp (get-parent-layout): Minor fullscreen
226         size tweaking.
228 2011-05-29  Philippe Brochard  <pbrochard@common-lisp.net>
230         * src/clfswm-internal.lisp
231         (delete-child-and-children-in-all-frames): Show all children
232         before deleting/destroying a windows, so prevent a flickering.
233         (get-parent-layout): Return the fullscreen size when the current
234         root is a window.
236 2011-05-28  Philippe Brochard  <pbrochard@common-lisp.net>
238         * src/clfswm-internal.lisp (get-parent-layout): Handle correctly
239         unmanaged windows.
241         * src/clfswm-util.lisp (delete-focus-window-generic): Do not hide
242         child before removing, so prevent a flickering.
244         * src/clfswm-internal.lisp (show-all-children): Rectangular
245         optimization to display only needed children.
246         (show-all-children): Remove flickering on
247         select-next/previous-brother.
249 2011-05-17  Philippe Brochard  <pbrochard@common-lisp.net>
251         * src/clfswm-util.lisp (copy-focus-window, cut-focus-window): New
252         functions and ask-close/kill-current-window menu and bindings
253         entry.
255 2011-05-16  Philippe Brochard  <pbrochard@common-lisp.net>
257         * src/clfswm-util.lisp (ask-close/kill-current-window): Add an
258         *ask-close/kill-placement* placement window variable.
260 2011-05-09  Philippe Brochard  <pbrochard@common-lisp.net>
262         * contrib/osd.lisp (funcall-button-from-code): Display osd
263         documention for buttons and fix some redefining warnings.
265 2011-05-07  Philippe Brochard  <pbrochard@common-lisp.net>
267         * src/clfswm-nw-hooks.lisp (make-permanent-nw-hook-frame): New
268         function. Prevent to add or delete a new window hook for this
269         frame.
271         * src/clfswm-layout.lisp (update-layout-managed-children-position):
272         New function.
274 2011-05-06  Philippe Brochard  <pbrochard@common-lisp.net>
276         * src/bindings-second-mode.lisp (set-default-second-keys):
277         select-brother-spatial-move-* binding update.
279         * src/clfswm-layout.lisp (tile-left|right|top|bottom-layout): Ask
280         to keep children positions or not.
282         * src/clfswm-internal.lisp (fixe-real-size): Takes care of border
283         size.
285         * src/clfswm-layout.lisp (update-layout-managed-children): Fix a
286         bug by using the parent frame instead of the current child.
288         * src/clfswm-circulate-mode.lisp
289         (select-brother-generic-spatial-move+right/left/up/down): New
290         function to select a brother from another in a spatial move.
292 2011-04-19  Philippe Brochard  <pbrochard@common-lisp.net>
294         * src/clfswm-pack.lisp (move-frame-constrained)
295         (resize-frame-constrained): Use pixels instead of floating
296         measure.
298 2011-04-18  Philippe Brochard  <pbrochard@common-lisp.net>
300         * src/clfswm-pack.lisp (resize-frame-constrained): Takes care of
301         border size.
302         (implode-frame, implode-current-frame): New functions. Absorb all
303         frames subchildren in frame. Explode frame opposite.
305 2011-04-17  Philippe Brochard  <pbrochard@common-lisp.net>
307         * src/clfswm-pack.lisp (move-frame-constrained)
308         (resize-frame-constrained): New function. Move and resize frame
309         with the mouse constrained by other frame brothers.
311 2011-04-14  Philippe Brochard  <pbrochard@common-lisp.net>
313         * src/clfswm-util.lisp (with-movement-select-next-brother)
314         (with-movement-select-previous-brother)
315         (with-movement-select-next-child): Use a simple method (do not
316         enter in the circulate mode) to allow to circulate in all children
317         or brothers.
319         * src/clfswm-menu.lisp (open-menu): Save info hash table keys
320         instead of deleting newly created keys.
322 2011-03-21  Philippe Brochard  <pbrochard@common-lisp.net>
324         * src/clfswm-internal.lisp (x-px->fl, y-px->fl): Takes care of
325         border size.
327 2011-03-20  Philippe Brochard  <pbrochard@common-lisp.net>
329         * src/clfswm-info.lisp (show-config-variable): call
330         produce-conf-var-doc.
332 2011-03-18  Philippe Brochard  <pbrochard@common-lisp.net>
334         * src/clfswm-autodoc.lisp (produce-conf-var-doc-html): Produce a
335         documentation for all configurable variables in CLFSWM -
336         HTML version.
338         * src/clfswm-internal.lisp (leave-frame): Hide all children except
339         the current window.
341 2011-03-16  Philippe Brochard  <pbrochard@common-lisp.net>
343         * src/clfswm-autodoc.lisp (produce-all-docs): Produce a
344         documentation for all configurable variables in CLFSWM.
346         * src/clfswm-layout.lisp (set-gimp-layout): Display a notify
347         window with the help on the GIMP layout.
349 2011-03-12  Philippe Brochard  <pbrochard@common-lisp.net>
351         * src/menu-def.lisp: Menu update to prevent cursor keys clash.
353         * clfswm.asd: Change compilation order to prevent undefined
354         variables.
356         * src/clfswm-internal.lisp (show-child(frame)): Handle properly
357         the show-root-frame-p parameter.
359 2011-03-11  Philippe Brochard  <pbrochard@common-lisp.net>
361         * src/clfswm-util.lisp (move-frame, resize-frame): Do not move or
362         resize a frame when it's the current root.
364 2011-03-10  Philippe Brochard  <pbrochard@common-lisp.net>
366         * src/clfswm-internal.lisp (show-all-children): Handle properly
367         duplicated child in multipe frames.
369 2011-03-09  Philippe Brochard  <pbrochard@common-lisp.net>
371         * contrib/volume-mode.lisp (set-default-volume-keys): Add more
372         keybindings (up/down, right/left) to raise/lower the volume.
374         * src/clfswm-layout.lisp: Add a variable border size for frames
375         and windows.
377 2011-03-08  Philippe Brochard  <pbrochard@common-lisp.net>
379         * src/clfswm-util.lisp (cut-current-child, remove-current-child)
380         (delete-current-child): Hide the current child before doing the
381         action.
383         * src/clfswm-internal.lisp (show-all-children): Hide windows not
384         in the current root before displaying those in current root.
385         Remove all hide-all unnecessary calls.
387         * src/clfswm-configuration.lisp (save-variables-in-conf-file):
388         Save only variables with a different value than their original
389         value.
391 2011-03-07  Philippe Brochard  <pbrochard@common-lisp.net>
393         * src/clfswm-info.lisp (show-config-variable): Use the new
394         defconfig method.
396         * src/clfswm-autodoc.lisp (produce-configuration-variables): Use
397         the new defconfig method.
399         * src/clfswm-configuration.lisp (create-configuration-menu):
400         Change the config system with a more lispy one and a less string
401         based one: (defconfig name value group doc).
404 2011-03-06  Philippe Brochard  <pbrochard@common-lisp.net>
406         * src/clfswm-internal.lisp (show-all-children): Simplify the
407         selection method.
408         (show-child): Display an unmanaged window whe  it's the current
409         child.
410         (show-all-children): add the ability to display all child from
411         *root-frame* and hide all those who are not in *current-root*.
412         -> remove hide-all-children when needed.
414         * src/xlib-util.lisp (move-window,resize-window): Add a
415         *color-move-window* border when moving or resizing a window.
417 2011-03-04  Philippe Brochard  <pbrochard@common-lisp.net>
419         * src/clfswm-internal.lisp (show-all-children): Perform only one
420         recusion on the clfswm tree: calculate geometry and place child in
421         one pass.
423 2011-03-03  Philippe Brochard  <pbrochard@common-lisp.net>
425         * src/clfswm-internal.lisp (show-all-children): Rethink of display
426         child order to prevent very annoying flickering.
428 2011-02-27  Philippe Brochard  <pbrochard@common-lisp.net>
430         * src/clfswm-util.lisp (query-yes-or-no): New function.
432         * src/clfswm-configuration.lisp (reset-all-config-variables): New
433         function and menu entry.
434         (query-conf-value): Add the ability to leave the field blank to
435         reset the variable to its default value.
437 2011-02-26  Philippe Brochard  <pbrochard@common-lisp.net>
439         * src/clfswm-configuration.lisp
440         (add-all-configuration-default-value): Add a default value to
441         configurable variables.
443 2011-02-23  Philippe Brochard  <pbrochard@common-lisp.net>
445         * src/clfswm.lisp (main-unprotected): Create the configuration
446         menu only once at startup.
448 2011-02-22  Desmond O. Chang <dochang@gmail.com>
450         * contrib/amixer.lisp: Add a volume mode inspired by the emms
451         volume package. Alsa mixer interface.
453         * contrib/volume-mode.lisp: Add a volume mode inspired by the emms
454         volume package.
456 2011-02-22 Desmond O. Chang <dochang@gmail.com>
458         * src/clfswm.lisp (main): Use ASDF:SYSTEM-SOURCE-DIRECTORY instead
459         of *LOAD-TRUENAME*. *LOAD-TRUENAME* is only bound during a call to
460         LOAD. If one eval CLFSWM:MAIN in repl, BASE-DIR will be an empty
461         string. Use ASDF:SYSTEM-SOURCE-DIRECTORY to fix it.
463 2011-02-16  Philippe Brochard  <pbrochard@common-lisp.net>
465         * src/clfswm.lisp (main-unprotected): Add a close hook. And close
466         the notify window, the virtual keyboard and the clfswm terminal by
467         default.
469 2011-02-15  Philippe Brochard  <pbrochard@common-lisp.net>
471         * src/clfswm.lisp (main-unprotected): Destroy the notify window
472         before closing the display. This fix a bug when resetting/reloading
473         clfswm.
475 2011-02-12  Philippe Brochard  <pbrochard@common-lisp.net>
477         * src/xlib-util.lisp (equal-wm-class-fun, equal-wm-name-fun)
478         (raise-window-fun, raise-and-focus-window-fun): New functions.
480         * src/config.lisp (*clfswm-terminal-cmd*): Switch from xterm to
481         urxvt.
482         (*never-managed-window-list*): Structure change to be more
483         flexible. Let the choice to focus, raise and do nothing on never
484         managed windows.
486 2011-02-09  Philippe Brochard  <pbrochard@common-lisp.net>
488         * src/clfswm-util.lisp (mouse-focus-move/resize-generic): Take
489         care of never managed windows to move or resize them if the raise
490         parameter is true.
492         * src/clfswm-internal.lisp (in-frame, in-window, in-child): New
493         functions.
495 2011-02-08  Philippe Brochard  <pbrochard@common-lisp.net>
497         * src/clfswm.lisp (main-mode): Raise or not unmanaged windows
498         following request in *never-managed-window-list*.
500 2011-02-05  Philippe Brochard  <pbrochard@common-lisp.net>
502         * *: **** Release 1102 ****
504 2011-02-05  Desmond O. Chang <dochang@gmail.com>
506         * src/keysyms.lisp: Add extended keysyms from stumpwm.
508 2011-02-01  Desmond O. Chang <dochang@gmail.com>
510         * src/clfswm-util.lisp (run-or-raise): New function (thanks to
511         Desmond O. Chang).
513         * src/clfswm-internal.lisp (with-all-*): add a nil block.
515 2011-01-28  Desmond O. Chang <dochang@gmail.com>
517         * src/clfswm-util.lisp (xdg-config-home): XDG_CONFIG_HOME should
518         be $HOME/.config by default.
520 2010-12-29  Philippe Brochard  <pbrochard@common-lisp.net>
522         * contrib/osd.lisp (display-doc): Add another method where a
523         CLFSWM native window is used to display the key documentation.
525 2010-12-27  Philippe Brochard  <pbrochard@common-lisp.net>
527         * src/xlib-util.lisp (with-xlib-protect): Force to revert to the
528         main mode state.
530 2010-12-25  Philippe Brochard  <pbrochard@common-lisp.net>
532         * src/clfswm-second-mode.lisp (second-key-mode): Call the second
533         mode leave function only when the generic mode was ended.
535 2010-12-08  Philippe Brochard  <pbrochard@common-lisp.net>
537         * src/clfswm-second-mode.lisp (sm-leave-function): Do not use
538         *second-mode-program* anymore.
540 2010-12-07  Philippe Brochard  <pbrochard@common-lisp.net>
542         * src/clfswm-second-mode.lisp (*second-mode-leave-function*): New
543         variable bound to a function executed (when not null) on second
544         mode leaving.
546 2010-11-14  Philippe Brochard  <pbrochard@common-lisp.net>
548         * src/clfswm-util.lisp (find-child-under-mouse): Do not find
549         hidden windows.
551 2010-11-13  Philippe Brochard  <pbrochard@common-lisp.net>
553         * src/clfswm-expose-mode.lisp (expose-mode-display-accel-windows):
554         Do not display the accel window for unmanaged windows.
556 2010-11-11  Philippe Brochard  <pbrochard@common-lisp.net>
558         * src/clfswm-internal.lisp (set-current-root): Handle
559         window-parent in set-current-root.
561         * src/clfswm-util.lisp (mouse-click-to-focus-generic): Do not
562         focus the parent child when the current root is a window.
564 2010-11-09  Philippe Brochard  <pbrochard@common-lisp.net>
566         * src/clfswm-expose-mode.lisp (expose-windows-current-child-mode):
567         New function an bindings.
569         * src/clfswm-layout.lisp (tile-layout, set-tile-layout): Fill
570         blanks if needed.
572 2010-11-07  Philippe Brochard  <pbrochard@common-lisp.net>
574         * src/clfswm-layout.lisp (tile-layout-ask-keep-position): New
575         function to let the user choose to keep child position with
576         tile layout.
578         * src/clfswm-internal.lisp (remove-frame-data-slot): New
579         function.
581 2010-11-05  Philippe Brochard  <pbrochard@common-lisp.net>
583         * src/clfswm-internal.lisp (frame-select-next-child)
584         (frame-select-previous-child): New functions and bindings. Select
585         the next/previous child in the current frame.
587 2010-10-31  Philippe Brochard  <pbrochard@common-lisp.net>
589         * src/clfswm-query.lisp (query-mode-complet): New function: Handle
590         completion in query-mode.
592 2010-10-30  Philippe Brochard  <pbrochard@common-lisp.net>
594         * src/clfswm-query.lisp (query-print-string): Handle long lines
595         correctly.
597 2010-10-27  Philippe Brochard  <pbrochard@common-lisp.net>
599         * src/clfswm-expose-mode.lisp (expose-create-window): Ensure that
600         all characters are printable.
602 2010-10-25  Philippe Brochard  <pbrochard@common-lisp.net>
604         * contrib/server/server.lisp: Load clfswm client code in the main
605         program and let the user start it with a --client command line
606         option.
608         * src/package.lisp (*main-entrance-hook*): New hook executed after
609         loading configuration file and before opening the display.
611 2010-10-23  Philippe Brochard  <pbrochard@common-lisp.net>
613         * src/xlib-util.lisp: Remove unnecessary xlib:display-finish-output.
615         * src/clfswm-internal.lisp (show-child): Show window only if not
616         hidden.
618         * src/clfswm-keys.lisp (binding-substitute-modifier): Utility to
619         change modifiers after binding definition.
621 2010-10-21  Philippe Brochard  <pbrochard@common-lisp.net>
623         * contrib/osd.lisp: New file: OSD (On Screen Display) for
624         presentations.
626         * src/clfswm-menu.lisp (open-menu): Modularise function.
628 2010-10-13  Philippe Brochard  <pbrochard@common-lisp.net>
630         * src/clfswm-info.lisp (show-first-aid-kit): Display the essential
631         key binding in main and second mode.
633 2010-10-10  Philippe Brochard  <pbrochard@common-lisp.net>
635         * src/clfswm-util.lisp (open-notify-window): Convert hello-window
636         functions to a more generic Notify-window system.
638         * src/tools.lisp (add-timer): Add an id to identify the timer.
640 2010-10-09  Philippe Brochard  <pbrochard@common-lisp.net>
642         * src/tools.lisp (erase-timer): New function.
644         * src/clfswm-util.lisp (display-hello-window): Add a timer to hide
645         the hello window. Add Configuration variables.
647 2010-10-08  Philippe Brochard  <pbrochard@common-lisp.net>
649         * src/clfswm-util.lisp (): Add an Hello window at startup.
651         * src/tools.lisp (process-timers): Add a timer system.
653 2010-10-07  Philippe Brochard  <pbrochard@common-lisp.net>
655         * src/clfswm-query.lisp (add-in-query-string): Handle correctly
656         the mod-5 modifier.
658 2010-10-06  Philippe Brochard  <pbrochard@common-lisp.net>
660         * src/clfswm-query.lisp (query-print-string): Change cursor color
661         and show parenthesis matching with colors (on match and on
662         errors).
664 2010-10-05  Philippe Brochard  <pbrochard@common-lisp.net>
666         * src/clfswm-internal.lisp (show-all-children): Do not raise a
667         child when its parent is hidden.
669 2010-10-02  Philippe Brochard  <pbrochard@common-lisp.net>
671         * src/clfswm-circulate-mode.lisp (select-next-subchild): Add the
672         possibility to circulate over subchild of the current child.
674         * src/clfswm-expose-mode.lisp (expose-all-windows-mode)
675         (expose-windows-generic): Add an escape-body function to return to
676         the original state on escape key.
678         * src/clfswm-util.lisp (bind-on-slot): Add an optional parameter
679         to bind the current child from the configuration file.
681 2010-10-01  Philippe Brochard  <pbrochard@common-lisp.net>
683         * src/clfswm-nw-hooks.lisp (absorb-window-nw-hook): Absorb new
684         window hook: the frame absorb all new windows that match
685         nw-absorb-test frame data slot.
687 2010-09-30  Philippe Brochard  <pbrochard@common-lisp.net>
689         * src/clfswm-expose-mode.lisp (expose-create-window): Show window
690         title in accel window.
692 2010-09-29  Philippe Brochard  <pbrochard@common-lisp.net>
694         * configure: Use the Xavier Maillard clfswm script in contrib to
695         build an executable in the standard way.
697 2010-09-26  Philippe Brochard  <pbrochard@common-lisp.net>
699         * src/clfswm-expose-mode.lisp (expose-mode-display-accel-windows):
700         New functions. Add a window on each child in the expose mode to
701         quickly select them.
703         * src/clfswm-internal.lisp (child-x, child-y, child-width)
704         (child-height): New methods to get real child coordinates.
706 2010-09-25  Philippe Brochard  <pbrochard@common-lisp.net>
708         * src/clfswm-layout.lisp (*-layout): Use child-position.
710         * src/clfswm-internal.lisp (child-position): New function.
712         * src/clfswm-expose-mode.lisp (expose-windows-mode)
713         (expose-all-windows-mode): Use a generic mode.
715         * src/xlib-util.lisp (with-handle-event-symbol): Use a filled list
716         with handle-event-fun symbols instead of inspecting clfswm
717         internals symbols on each mode change.
719         * src/clfswm-expose-mode.lisp: Move and rename present*-windows in
720         a separate clfswm-expose-mode.lisp file.
722         * src/clfswm-util.lisp (speed-mouse-right, speed-mouse-down): Use
723         screen size instead of hardcoded test coordinates.
725 2010-09-24  Philippe Brochard  <pbrochard@common-lisp.net>
727         * src/clfswm-util.lisp (speed-mouse-reset, speed-mouse-left)
728         (speed-mouse-right, speed-mouse-up, speed-mouse-down)
729         (speed-mouse-undo, speed-mouse-first-history): New functions to
730         quickly move the mouse. Implemented for the second mode.
732 2010-09-16  Philippe Brochard  <pbrochard@common-lisp.net>
734         * contrib/clfswm: Move clfswm sources to $tmp_dir if there is no
735         write permission on $clfswm_asd_path. So anybody can start clfswm
736         even if there is no write permission on the source directory.
738 2010-09-12  Philippe Brochard  <pbrochard@common-lisp.net>
740         * contrib/clfswm: Add support to cmucl, ccl and ecl.
742 2010-09-11  Philippe Brochard  <pbrochard@common-lisp.net>
744         * src/clfswm-util.lisp (set-hide-unmanaged-window)
745         (set-show-unmanaged-window, set-default-hide-unmanaged-window):
746         New functions and menu entry.
747         (set-globally-hide-unmanaged-window)
748         (set-globally-show-unmanaged-window): New functions and menu
749         entry.
751         * src/clfswm-internal.lisp (hide-unmanager-window-p): New
752         function.
753         (show-child): Add a data slot on frame to hide or not unmanaged
754         windows.
756         * src/clfswm-corner.lisp (present-clfswm-terminal)
757         (present-virtual-keyboard): Use a function (generic-present-body)
758         instead of a macro (generate-present-body).
760         * src/clfswm-util.lisp (update-menus): List all directories and
761         subdirectories in $XDG_DATA_DIRS/applications.
763 2010-09-10  Philippe Brochard  <pbrochard@common-lisp.net>
765         * src/clfswm-corner.lisp (generate-present-body): New macro.
766         (present-clfswm-terminal, present-virtual-keyboard): Use
767         generate-present-body.
769 2010-09-09  Philippe Brochard  <pbrochard@common-lisp.net>
771         * src/clfswm-util.lisp (update-menus): Follow XDG specifications
772         instead of the non-portable Debian update-menu.
774 2010-09-07  Philippe Brochard  <pbrochard@common-lisp.net>
776         * src/clfswm.lisp (error-handler): New function do handle
777         asynchronous errors and ignore them.
778         (open-display): Install the new error-handler on display.
780 2010-09-05  Philippe Brochard  <pbrochard@common-lisp.net>
782         * src/xlib-util.lisp (with-xlib-protect): Add a
783         with-simple-restart on top of body execution.
785 2010-09-04  Philippe Brochard  <pbrochard@common-lisp.net>
787         * src/clfswm.lisp (main-loop): Protect all xlib functions with an
788         with-xlib-protect.
790         * src/xlib-util.lisp (handle-event): use with-xlib-protect only in
791         handle-event. Add a with-simple-restart to prevent a
792         clisp/new-lisp infinite loop.
794 2010-08-30  Philippe Brochard  <pbrochard@common-lisp.net>
796         * src/clfswm-corner.lisp (present-clfswm-terminal): Make the
797         clfswm terminal working even on xterm title changes.
799 2010-08-29  Philippe Brochard  <pbrochard@common-lisp.net>
801         * src/clfswm-util.lisp (run-other-window-manager): Update for
802         clisp compatibility.
804         * src/tools.lisp (do-execute): New parameter io to change the
805         input/output method.
807         * src/clfswm-util.lisp (hide-current-child): Prevent from removing
808         the current root.
810         * src/clfswm-internal.lisp (child-member): New predicate.
811         (child-remove): New function.
813         * src/*.lisp: Use child-member and child-remove everywhere it's
814         needed.
816 2010-08-28  Philippe Brochard  <pbrochard@common-lisp.net>
818         * src/clfswm.lisp (main-loop): Ensure that all events have been
819         processed after a process-event.
821         * src/clfswm-internal.lisp (is-in-current-child-p): New function.
823 2010-08-27  Philippe Brochard  <pbrochard@common-lisp.net>
825         * src/clfswm.lisp (main-mode:configure-request): Raise the window
826         only when present on the current child and focus it accordingly.
828 2010-08-26  Philippe Brochard  <pbrochard@common-lisp.net>
830         * src/clfswm-circulate-mode.lisp (circulate-loop-function):
831         Use is-a-key-pressed-p.
833         * src/xlib-util.lisp (is-a-key-pressed-p): New predicate.
835         * src/clfswm-keys.lisp (define-ungrab/grab): Use all values
836         returned by xlib:keysym->keycodes.
838         * src/*.lisp: Use the new child-equal-p to compare children. This
839         prevent a bug with sbcl/cmucl when the standard equal function
840         does not work with xlib:window.
842         * src/clfswm-internal.lisp (child-equal-p): New predicate.
844 2010-08-25  Philippe Brochard  <pbrochard@common-lisp.net>
846         * src/clfswm-generic-mode.lisp (generic-mode): Use an
847         xlib:event-listen before processing event with
848         xlib:process-event. This prevent a bug with CLX threaded
849         implementation like sbcl.
851         * src/clfswm.lisp (main-loop): Use an xlib:event-listen before
852         processing event with xlib:process-event. This prevent a bug with
853         CLX threaded implementation like sbcl.
855 2010-08-17  Philippe Brochard  <pbrochard@common-lisp.net>
857         * contrib/server/key.lisp (ushell-sh): Add ccl and ecl support.
859         * src/xlib-util.lisp (compress-motion-notify): Use a loop instead
860         of an event-case.
862         * src/clfswm-internal.lisp (with-find-in-all-frames): New macro.
863         (find-parent-frame, find-frame-window, find-frame-by-name)
864         (find-frame-by-number): Use with-find-in-all-frames to search in
865         frames in the right order.
867         * src/clfswm-util.lisp (mouse-click-to-focus-generic): Fix an
868         unwanted flickering with unmanaged windows.
870 2010-08-16  Philippe Brochard  <pbrochard@common-lisp.net>
872         * src/package.lisp: Remove event handler hooks as they're not
873         needed anymore (To replace them: use closure and define-handler).
875         * src/xlib-util.lisp (move-window, resize-window)
876         (wait-mouse-button-release): Use a generic mode.
878         * src/*.lisp: Replace the case to handle event with a more (tricky)
879         lispy  method which bind a function to each keywords associated
880         to graphics events.
882 2010-07-23  Philippe Brochard  <pbrochard@common-lisp.net>
884         * src/clfswm-util.lisp (delete-current-child): Invert bindings and
885         menu entry between delete-current-child and remove-current-child.
886         ie: Delete a child and its children in all frames by default.
888 2010-07-21  Philippe Brochard  <pbrochard@common-lisp.net>
890         * src/package.lisp: Add a placement configuration group.
892         * src/binding*.lisp: Bind control+g to escape the current action
893         like emacs.
895         * src/clfswm-internal.lisp
896         (delete-child-and-children-in-all-frames): New function and
897         binding: Second mode - Control+Delete delete the current child and
898         its children in all frames (ie: close the current child and its
899         children).
901 2010-07-20  Philippe Brochard  <pbrochard@common-lisp.net>
903         * src/clfswm-internal.lisp (remove-child-in-frame): Do not destroy
904         the frame window and the frame gc. Close a very annoying bug when
905         cuting/pasting a frame or moving a child over frames with the
906         mouse.
908         * src/clfswm-util.lisp (mouse-click-to-focus-generic): Redisplay
909         all children in *current-root* after moving/resizing a frame.
911 2010-07-18  Philippe Brochard  <pbrochard@common-lisp.net>
913         * src/clfswm-util.lisp (delete-focus-window)
914         (destroy-focus-window): Remove child in parent frame before
915         stopping it.
917 2010-07-16  Philippe Brochard  <pbrochard@common-lisp.net>
919         * src/clfswm-util.lisp (identify-key): Add a timeout in
920         xlib:process-event.
921         (mouse-click-to-focus-generic): Use find-child-under-mouse instead
922         of the window passed by xlib:process-event.
924         * src/xlib-util.lisp (move-window, resize-window)
925         (wait-mouse-button-release): Add a timeout in xlib:process-event.
927 2010-04-11  Philippe Brochard  <pbrochard@common-lisp.net>
929         * src/clfswm-util.lisp (run-other-window-manager): Add the ability
930         to launch an other window manager and to return to clfswm.
932 2010-03-18  Philippe Brochard  <pbrochard@common-lisp.net>
934         * src/clfswm-layout.lisp (set-tile-space-layout): Set default
935         to 1%.
937 2009-12-15  Philippe Brochard  <pbrochard@common-lisp.net>
939         * src/clfswm.lisp (main-loop): Add a *loop-hook* parameter and a
940         loop timeout.
942         * src/clfswm-generic-mode.lisp (generic-mode): Add a loop-hook
943         parameter and a loop timeout.
945 2009-12-05  Philippe Brochard  <pbrochard@common-lisp.net>
947         * src/clfswm.lisp (main): Add an alternate configuration filename
948         parameter.
950         * load.lisp: Add a debuging code example.
952 2009-11-14  Philippe Brochard  <pbrochard@common-lisp.net>
954         * src/clfswm-configuration.lisp (create-configuration-menu): New
955         menu to configure all clfswm variables while clfswm is running.
957 2009-11-12  Philippe Brochard  <pbrochard@common-lisp.net>
959         * src/clfswm-util.lisp (save-configuration-variables): New
960         function to save all configuration variables in clfswmrc.
962 2009-11-11  Philippe Brochard  <pbrochard@common-lisp.net>
964         * src/clfswm-info.lisp (info-mode): Begining of mouse support in
965         info mode.
966         (set-default-info-keys): Add cursor key support in info mode.
968 2009-11-08  Philippe Brochard  <pbrochard@common-lisp.net>
970         * contrib/reboot-halt.lisp: Add a Suspend/Reboot/Halt menu in
971         contrib.
973         * src/clfswm.lisp (main): Add a read-conf-file-p parameter to
974         prevent reading the configuration file (this may be useful to
975         produce the original documentation without user modifications
976         with the rc configuration file).
978 2009-11-07  Philippe Brochard  <pbrochard@common-lisp.net>
980         * src/bindings-second-mode.lisp (set-default-second-keys):
981         Simplification of Escape key to close/kill/remove the focus window
982         and unhide all windows.
984         * src/bindings.lisp (set-default-main-keys): Simplification of
985         Escape key to close/kill/remove the focus window and unhide all
986         windows.
988         * src/clfswm-util.lisp (ask-close/kill-current-window): Add remove
989         focus and unhide all windows capabilities.
991 2009-10-10  Philippe Brochard  <pbrochard@common-lisp.net>
993         * contrib/mpd.lisp (start-gmpc): Add gmpc in the mpd menu.
995 2009-07-29  Philippe Brochard  <pbrochard@common-lisp.net>
997         * src/clfswm-layout.lisp (tile-layout, tile-horizontal-layout):
998         Keep child order and don't make unnecessary child movement.
999         (one-column-layout, one-line-layout): New layouts.
1001 2009-06-29  Philippe Brochard  <pbrochard@common-lisp.net>
1003         * *: **** Release 0906 ****
1005         * contrib/cd-player.lisp: New file to handle the CD player.
1007         * contrib/xmms.lisp: New file to handle the xmms player.
1009 2009-06-28  Philippe Brochard  <pbrochard@common-lisp.net>
1011         * src/clfswm-layout.lisp (set-no-layout-remember-size): New layout:
1012         Maximize windows in their frame - Leave frames to their actual
1013         size.
1015         * src/bindings-second-mode.lisp (set-default-second-keys): Bind
1016         "o" on set-open-in-new-frame-in-parent-frame-nw-hook.
1018 2009-06-27  Philippe Brochard  <pbrochard@common-lisp.net>
1020         * contrib/keyb_fr.lisp: New file to handle an azerty keyboard.
1022 2009-06-24  Philippe Brochard  <pbrochard@common-lisp.net>
1024         * contrib/mpd.lisp: Use a standard menu.
1026         * src/clfswm-info.lisp: Use a standard menu for the help-menu.
1028 2009-06-22  Philippe Brochard  <pbrochard@common-lisp.net>
1030         * contrib/mpd.lisp: New file to handle the Music Player Daemon (MPD)
1032 2009-06-19  Philippe Brochard  <pbrochard@common-lisp.net>
1034         * src/clfswm-autodoc.lisp (produce-doc, produce-doc-html): Minor
1035         number key cleanup.
1037 2009-06-18  Philippe Brochard  <pbrochard@common-lisp.net>
1039         * src/config.lisp (get-fullscreen-size):  One pixel adjustment
1040         (again).
1042         * src/clfswm-placement.lisp (*-child-placement): One pixel
1043         adjustment (again).
1045 2009-06-16  Philippe Brochard  <pbrochard@common-lisp.net>
1047         * src/clfswm-circulate-mode.lisp (draw-circulate-mode-window):
1048         Ensure that all characters are printable.
1050         * src/config.lisp (get-fullscreen-size): Adjust default fullscreen
1051         sizes.
1053         * src/clfswm-placement.lisp (*-child-placement): Adjust
1054         coordinates to one pixel in the current child.
1056 2009-06-04  Philippe Brochard  <pbrochard@common-lisp.net>
1058         * src/clfswm-query.lisp (query-enter-function): Assign font before
1059         width and height calculation.
1061 2009-06-03  Philippe Brochard  <pbrochard@common-lisp.net>
1063         * src/xlib-util.lisp (banish-pointer): Use with-placement macro to
1064         bannish the pointer in an arbitrary place.
1066         * src/clfswm-info.lisp (info-mode): Use with-placement macro to
1067         place the info window in an arbitrary place.
1069         * src/clfswm-query.lisp (query-enter-function): Use with-placement
1070         macro to place the query window in an arbitrary place.
1072         * src/clfswm-placement.lisp: New file. Allow to place info windows
1073         or query windows on an arbitrary place. Allow to bannish the
1074         pointer on an arbitrary place.
1076 2009-05-16  Philippe Brochard  <pbrochard@common-lisp.net>
1078         * src/clfswm-circulate-mode.lisp (reorder-child)
1079         (reorder-brother): Unfocus windows before reordering children or
1080         brothers.
1082 2009-05-13  Philippe Brochard  <pbrochard@common-lisp.net>
1084         * src/clfswm-circulate-mode.lisp (reorder-brother): Ensure that
1085         the parent is a frame.
1087         * src/clfswm-second-mode.lisp (sm-handle-motion-notify): Handle
1088         motion with a default modifier.
1090         * src/clfswm.lisp (handle-motion-notify): Handle motion with a
1091         default modifier.
1093         * src/clfswm-info.lisp (info-mode): Handle motion with a default
1094         modifier.
1095         (info-mode): Optimization in loop function.
1097 2009-05-10  Philippe Brochard  <pbrochard@common-lisp.net>
1099         * src/clfswm-circulate-mode.lisp (reorder-brother): Handle
1100         root-frame correctly.
1102         * clfswm.asd: Dependency fix for clfswm-generic-mode.
1104         * src/clfswm-circulate-mode.lisp (reorder-child)
1105         (reorder-brother): Handle empty frames.
1106         (reorder-brother): Redisplay only the parent frame of the  current
1107         child.
1109         * src/clfswm-util.lisp (frame-toggle-maximize): Redisplay only the
1110         parent frame of the  current frame.
1112 2009-05-09  Philippe Brochard  <pbrochard@common-lisp.net>
1114         * src/clfswm-util.lisp (frame-toggle-maximize): New function:
1115         Maximize/Unmaximize the current frame in its parent frame.
1117         * src/clfswm-layout.lisp (maximize-layout): New layout: Maximize
1118         windows and frames in their parent frame.
1120 2009-05-05  Philippe Brochard  <pbrochard@common-lisp.net>
1122         * src/*.lisp: Add support for Clozure Common Lisp (CCL).
1124         * src/clfswm-circulate-mode.lisp (reorder-child)
1125         (reorder-brother): Reinitialise on circulate type change
1126         child to brother or brother to child.
1128         * src/*.lisp (*): Use map-window instead of xlib:map-window. So
1129         calls xlib:display-finish-output on each map-request. So speed up
1130         the window display.
1132         * src/xlib-util.lisp (map-window): New function. Call
1133         xlib:display-finish-output on each map request.
1135 2009-04-28  Philippe Brochard  <pbrochard@common-lisp.net>
1137         * src/clfswm-second-mode.lisp (sm-handle-motion-notify):
1138         Optimisation when drawing second mode window.
1140 2009-04-27  Philippe Brochard  <pbrochard@common-lisp.net>
1142         * src/clfswm-circulate-mode.lisp (circulate-mode): Optimisation in
1143         window redraw.
1145 2009-04-22  Philippe Brochard  <pbrochard@common-lisp.net>
1147         * src/clfswm-util.lisp (run-program-from-query-string): Launch
1148         command only with a return validation.
1150 2009-04-22  Xavier Maillard  <xma@gnu.org>
1152         * src/clfswm-query.lisp (query-string): Use a generic mode.
1154 2009-04-19  Xavier Maillard  <xma@gnu.org>
1156         * src/clfswm-info.lisp (info-mode): Use generic-mode for info-mode.
1158 2009-04-18  Xavier Maillard  <xma@gnu.org>
1160         * src/clfswm-generic-mode.lisp (generic-mode): Add a generic mode
1161         to define all other modes.
1163 2009-04-05  Philippe Brochard  <pbrochard@common-lisp.net>
1165         * src/package.lisp (): Use *default-font-string* for all
1166         font-string.
1168         * src/clfswm-info.lisp (info-mode): Ensure integer windows size.
1170 2009-02-17  Philippe Brochard  <pbrochard@common-lisp.net>
1172         * src/xlib-util.lisp (null-size-window-p): Better check of null
1173         sized windows.
1175 2009-02-14  Philippe Brochard  <pbrochard@common-lisp.net>
1177         * src/clfswm.lisp (handle-map-request): Add a fix to manage
1178         correctly fullscreen windows (SDL particularly).
1180 2008-12-20  Philippe Brochard  <pbrochard@common-lisp.net>
1182         * src/xlib-util.lisp (get-color): Allocate colors only once -> fix
1183         a segfault with clisp/new-clx.
1185         * src/clfswm.lisp (handle-motion-notify): Add a needed window
1186         argument.
1188         * src/clfswm-second-mode.lisp (sm-handle-motion-notify): Add a
1189         needed window argument.
1191 2008-10-30  Philippe Brochard  <pbrochard@common-lisp.net>
1193         * src/xlib-util.lisp (wait-no-key-or-button-press)
1194         (wait-a-key-or-button-press): Check buttons press/release correctly"
1196 2008-10-28  Philippe Brochard  <pbrochard@common-lisp.net>
1198         * src/menu-def.lisp: Add children navigation menu in the movement
1199         menu (select next/previous child/brother/level).
1201 2008-10-26  Philippe Brochard  <pbrochard@common-lisp.net>
1203         *  *: Rename 'sister' frame to 'brother' frame.
1205         * src/clfswm-keys.lisp (unalias-modifiers): Convert a modifier
1206         alias in a real modifier.
1208         * src/package.lisp (*modifier-alias*): New list of modifier alias
1209         For example: :alt is :mod-1, :numlock is :mod-2...
1211         * src/tools.lisp (remove-hook): New function.
1213         * src/clfswm-keys.lisp (with-capslock, without-capslock)
1214         (with-numlock, without-cnumlock): New functions.
1216 2008-10-25  Philippe Brochard  <pbrochard@common-lisp.net>
1218         * src/clfswm-info.lisp: Use the *binding-hook* to create info
1219         keys and mouse bindings.
1221         * src/bindings-second-mode.lisp: Use the *binding-hook* to create
1222         second keys and mouse bindings.
1224         * src/bindings.lisp: Use the *binding-hook* to create main keys
1225         and mouse bindings.
1227 2008-10-10  Philippe Brochard  <pbrochard@common-lisp.net>
1229         * src/clfswm-menu.lisp (open-menu): Remember parent menu to undo
1230         menu opening.
1232 2008-10-09  Philippe Brochard  <pbrochard@common-lisp.net>
1234         * src/menu-def.lisp: Use a menu instead of a function for the
1235         standard menu.
1237 2008-10-08  Philippe Brochard  <pbrochard@common-lisp.net>
1239         * src/clfswm-util.lisp (show-standard-menu): Display the standard
1240         menu from the 'update-menus' command.
1242 2008-10-07  Philippe Brochard  <pbrochard@common-lisp.net>
1244         * src/clfswm-query.lisp (query-string): Do not ungrab keyboard if
1245         it's already grabbed.
1247         * src/clfswm-internal.lisp (display-frame-info): Use configurable
1248         colors and fix a bug with background.
1249         (display-frame-info): Set window background when displaying info.
1251 2008-10-06  Philippe Brochard  <pbrochard@common-lisp.net>
1253         * src/xlib-util.lisp (my-character->keysyms): Use a macro to avoid
1254         warning with clisp/new-clx.
1256 2008-10-04  Philippe Brochard  <pbrochard@common-lisp.net>
1258         * src/clfswm-util.lisp (jump-to-slot): Prevent to jump on a
1259         deleted child.
1261 2008-09-23  Philippe Brochard  <pbrochard@common-lisp.net>
1263         * *: **** Release 0809 ****
1265 2008-09-23  Philippe Brochard  <pbrochard@common-lisp.net>
1267         * src/clfswm-util.lisp (ensure-unique-name): New function and menu
1268         entry.
1269         (ensure-unique-number): New function and menu entry.
1271 2008-09-22  Philippe Brochard  <pbrochard@common-lisp.net>
1273         * src/clfswm-nw-hooks.lisp (named-frame-nw-hook): New new window
1274         hook: open the next window in a named frame.
1275         (numbered-frame-nw-hook): New new window hook: open the next
1276         window in a numbered frame.
1278         * src/clfswm-query.lisp (query-string): Grab the keyboard in all
1279         cases. So query-string can be called even in the main mode.
1281         * src/clfswm-internal.lisp (show-all-children): Do not raise a
1282         child by default => far less flickering.
1284 2008-09-19  Philippe Brochard  <pbrochard@common-lisp.net>
1286         * src/bindings-second-mode.lisp: Bind "t" to tile-current-frame.
1288         * src/menu-def.lisp: Change key binding for the CLFSWM menu
1289         entry.
1291         * src/xlib-util.lisp (xgrab-pointer): Handle the case where cursor
1292         is nil. (workaround on some CLX implementation).
1294 2008-09-12  Philippe Brochard  <pbrochard@common-lisp.net>
1296         * src/menu-def.lisp: Add a menu to set a focus policy for all
1297         frames.
1299         * src/clfswm-util.lisp (set-focus-policy-generic-for-all)
1300         (all-frames-set-*-focus-policy): Set a focus policy for all
1301         frames.
1303         * src/clfswm.lisp (handle-enter-notify): sloppy-select
1304         mode. Select a child and its parents on mouse over.
1306 2008-09-03  Philippe Brochard  <pbrochard@common-lisp.net>
1308         * src/clfswm.lisp (handle-enter-notify): Add a sloppy strict focus
1309         policy -> Sloppy focus only for windows in the current frame.
1310         (main-unprotected): Exit clfswm on init error (ie: when another
1311         window manager is running).
1313         * src/clfswm-util.lisp (reset-clfswm): New function.
1315 2008-09-02  Philippe Brochard  <pbrochard@common-lisp.net>
1317         * src/clfswm-menu.lisp (init-menu): New function.
1319         * src/clfswm-util.lisp (reload-clfswm): New function to reload
1320         CLFSWM.
1321         (exit-clfswm): Rename quit-clfswm to exit-clfswm.
1323         * src/clfswm.lisp (main, main-unprotected): Handle error in a
1324         superior main function. Now CLFSWM can't break the X session. It
1325         just reinitialize the display and run a new main loop.
1327         * src/clfswm-corner.lisp: Make *clfswm-terminal* and
1328         *vt-keyboard-on* global to avoid warnings when loading clfswm.
1330         * src/clfswm-layout.lisp: Add a specific GIMP layout menu.
1331         (help-on-gimp-layout): Describe how to use the GIMP layout.
1333 2008-09-01  Philippe Brochard  <pbrochard@common-lisp.net>
1335         * src/clfswm-layout.lisp (set-gimp-layout): Change the layout to
1336         main-window-right-layout. Change the keybinding for (shift)alt+tab
1337         to not select windows in the main window lisst.
1338         Bind F8 to add a window in the main window list.
1339         Bind F9 to remove a window in the main window list.
1340         Change the focus policy to :sloppy.
1341         (set-previous-layout): Restore the previous layout, keybinding and
1342         focus policy.
1344 2008-08-31  Philippe Brochard  <pbrochard@common-lisp.net>
1346         * src/clfswm-menu.lisp (add-menu-comment): Add comments in menu.
1348         * src/clfswm-layout.lisp (main-window-left-layout)
1349         (main-window-bottom-layout, main-window-top-layout): New
1350         functions.
1351         Factorize layouts in menu.
1353 2008-08-30  Philippe Brochard  <pbrochard@common-lisp.net>
1355         * src/clfswm-layout.lisp (main-window-right-layout): A possible
1356         GIMP layout: one or more main windows on one side of the
1357         frame. Others on the other size.
1359         * src/clfswm-util.lisp
1360         (current-frame-set-click/sloppy-focus-policy): Each frame can have
1361         a different focus policy (one of :click or :sloppy).
1362         The default focus policy is set with *default-focus-policy*.
1364 2008-08-23  Philippe Brochard  <pbrochard@common-lisp.net>
1366         * src/clfswm-info.lisp (show-config-variable): New function.
1368 2008-08-19  Philippe Brochard  <pbrochard@common-lisp.net>
1370         * src/clfswm-layout.lisp (tile-horizontal-layout): New layout.
1372         * src/clfswm-info.lisp: Colored help for key binding and corners
1373         actions.
1375 2008-08-18  Philippe Brochard  <pbrochard@common-lisp.net>
1377         * src/clfswm-util.lisp (delete-focus-window)
1378         (destroy-focus-window): Remove chid only in
1379         handle-unmap/destroy-notify. Focus *current-root* only when
1380         closing/killing the current child.
1382         * src/clfswm-autodoc.lisp (produce-corner-*-doc): New autodoc
1383         functions or corners.
1385 2008-08-17  Philippe Brochard  <pbrochard@common-lisp.net>
1387         * src/clfswm-corner.lisp (present-clfswm-terminal): New corner
1388         action: Hide/Unhide a terminal on mouse corner action. (By default
1389         right mouse button on the top left corner).
1391         * src/config.lisp (*never-managed-window-list*): New config
1392         variable.
1394         * src/clfswm-internal.lisp (never-managed-window-p): New function:
1395         Handle never managed window in a more simple way.
1397         * src/clfswm-corner.lisp: New file and new and more simple method
1398         to define corners actions.
1400 2008-08-15  Philippe Brochard  <pbrochard@common-lisp.net>
1402         * src/clfswm-info.lisp (info-mode): Info line can now be colored.
1404         * src/clfswm-layout.lisp (fast-layout-switch)
1405         (define-fast-layout-switch): New functions: Switch between two
1406         layouts.
1408         * src/clfswm-second-mode.lisp (leave-second-mode): Takes care if
1409         really in the second mode. So leave-second-mode can be used even
1410         in the main mode.
1412         * src/clfswm-util.lisp (switch-to-last-child): New function:
1413         Store the current child and switch to the previous one.
1415 2008-07-16  Philippe Brochard  <pbrochard@common-lisp.net>
1417         * src/clfswm-util.lisp (display-current-window-info): Display the
1418         window id.
1419         (have-to-present-virtual-keyboard): Add a virtual keyboard corner
1420         (top right by default). By default 'xvkbd' is used.
1422 2008-06-28  Philippe Brochard  <pbrochard@common-lisp.net>
1424         * src/xlib-util.lisp (move-window, resize-window): Compress motion
1425         events.
1427         * src/clfswm.lisp (handle-motion-notify): Compress motion events.
1429         * src/clfswm-second-mode.lisp (sm-handle-motion-notify): Compress
1430         motion events.
1432         * src/clfswm-info.lisp (info-mode): Compress motion events.
1434 2008-06-21  Philippe Brochard  <pbrochard@common-lisp.net>
1436         * src/clfswm-internal.lisp (show-all-children): Compute geometry
1437         and selection first and then show only necessary children.
1438         (show-child): remove unneeded display-p parameter.
1440         * src/config.lisp (get-fullscreen-size): Place the frame border
1441         outside the screen (this prevent the loose of 2 pixels per
1442         directions :)
1444 2008-06-12  Philippe Brochard  <pbrochard@common-lisp.net>
1446         * src/clfswm-internal.lisp (focus-child): Algorithm change to
1447         raise only the selected child.
1449 2008-06-08  Philippe Brochard  <pbrochard@common-lisp.net>
1451         * src/clfswm-internal.lisp (raise-p-list, show-all-children):
1452         Raise only viewable children.
1454 2008-06-06  Philippe Brochard  <pbrochard@common-lisp.net>
1456         * src/clfswm-internal.lisp (show-all-children): Always raise all
1457         displayed children. Remove all references to raise-p.
1459 2008-06-04  Philippe Brochard  <pbrochard@common-lisp.net>
1461         * src/menu-def.lisp (child-menu): New menu entry on raise/lower
1462         child in its frame.
1464         * src/bindings-second-mode.lisp ("Page_Down", "Page_Up"): New
1465         second mode binding on raise/lower child in its frame.
1467         * src/clfswm-nw-hooks.lisp (leave-focus-frame-nw-hook): Adapt
1468         behaviour to the new raise/lower property.
1469         Call clear-nw-hook before the rest of the hook.
1471         * src/bindings.lisp (mouse-click-to-focus-and-move-window)
1472         (mouse-click-to-focus-and-resize-window): Stop button event. This
1473         prevent a keyboard/pointer freeze.
1475 2008-06-03  Philippe Brochard  <pbrochard@common-lisp.net>
1477         * src/clfswm-internal.lisp (frame-lower-child)
1478         (frame-raise-child): New functions to raise/lower a child in its
1479         frame.
1481         * src/clfswm-util.lisp (have-to-present-windows)
1482         (have-to-present-all-windows): New functions to have an MaxOS
1483         expose like on mouse click in screen corner.
1485         * src/clfswm-info.lisp ("Page_Down", "Page_Up"): Add boundaries.
1487 2008-05-30  Philippe Brochard  <pbrochard@common-lisp.net>
1489         * src/clfswm-util.lisp (unhide-a-child-from-all-frames): Unhide a
1490         child from a choice in all frames with hidden children.
1492         * src/clfswm-info.lisp (info-mode-menu): Handle separators.
1494 2008-05-28  Philippe Brochard  <pbrochard@common-lisp.net>
1496         * src/clfswm-util.lisp (hide-current-child, unhide-a-child)
1497         (unhide-all-children): New functions.
1499         * src/clfswm-info.lisp (info-mode-menu): Handle symbols and
1500         functions.
1502         * src/clfswm-util.lisp (hide/show-frame-window): new function and
1503         menu item.
1505 2008-05-23  Philippe Brochard  <pbrochard@common-lisp.net>
1507         * src/clfswm-util.lisp (rename-current-child): Do not display the
1508         frame info for a window.
1510 2008-05-20  Philippe Brochard  <pbrochard@common-lisp.net>
1512         * src/clfswm-internal.lisp (remove-child-in-frame): Destroy the
1513         frame window for the removed child and its children.
1515 2008-05-18  Philippe Brochard  <pbrochard@common-lisp.net>
1517         * src/clfswm-autodoc.lisp (produce-*-doc-*): Add a note to use the
1518         autodoc functions.
1520 2008-05-17  Philippe Brochard  <pbrochard@common-lisp.net>
1522         * src/clfswm-nw-hooks.lisp (default-frame-nw-hook): Do not handle
1523         the ROX pinboard (ie: leave it lowered in the root window as
1524         expected).
1526         * src/clfswm-layout.lisp (tile-left-space-layout): New layout.
1527         (tile-left-layout, tile-right-layout, tile-top-layout)
1528         (tile-bottom-layout): Use all the frame space when there is only
1529         one child.
1531         * src/clfswm-internal.lisp (place-window-from-hints): Center
1532         unmanaged windows in the root screen.
1534         * src/clfswm-nw-hooks.lisp (clear-nw-hook, clear-all-nw-hooks):
1535         new functions.
1537 2008-05-15  Philippe Brochard  <pbrochard@common-lisp.net>
1539         * src/clfswm-util.lisp (current-frame-manage-window-type): Fix a
1540         typo in managed types.
1542         * src/clfswm-internal.lisp (show-child): Always display frame info
1543         even if the frame is hidden.
1545         * src/xlib-util.lisp (resize-window): Use a better algorithme to
1546         resize windows.
1548 2008-05-13  Philippe Brochard  <pbrochard@common-lisp.net>
1550         * src/clfswm-util.lisp (with-movement): Display frame info for all
1551         frames in current root.
1553 2008-05-12  Philippe Brochard  <pbrochard@common-lisp.net>
1555         * src/*.lisp: Rename 'brother' frames to 'sister' frames.
1557         * src/bindings-second-mode.lisp (define-second-key #\a): New
1558         binding on 'add-default-frame'.
1560         * src/clfswm-autodoc.lisp (produce-*-doc-*-in-file): Show a
1561         message to follow the autodocumentation process.
1563 2008-05-10  Philippe Brochard  <pbrochard@common-lisp.net>
1565         * src/clfswm-util.lisp (bind-or-jump): Bind "Tab", "Return" and
1566         "Space" to jump to a child. "B" to bind a slot on the current
1567         child.
1569         * src/bindings-second-mode.lisp: Use "Tab" instead of
1570         "Iso_Left_Tab".
1572 2008-05-07  Philippe Brochard  <pbrochard@common-lisp.net>
1574         * src/clfswm-util.lisp (find-child-under-mouse): Take care of
1575         unmanaged (hidden) windows.
1577         * src/clfswm-internal.lisp (place-window-from-hints): Give a
1578         minimal size for windows.
1579         (with-all-windows-frames-and-parent): New function.
1581         * src/config.lisp (*default-window-width/height*): New parameters.
1583         * src/clfswm-internal.lisp (place-window-from-hints): Center
1584         windows in the screen instead of in their frame.
1586         * src/bindings-second-mode.lisp (tile-space-current-frame): New
1587         binding on C-t.
1589         * src/clfswm-layout.lisp (register-layout): Intern the once name
1590         in the right package.
1592 2008-05-05  Philippe Brochard  <pbrochard@common-lisp.net>
1594         * doc/dot-clfswmrc: Update to  follow the new clfswm way.
1596 2008-05-03  Philippe Brochard  <pbrochard@common-lisp.net>
1598         * src/clfswm-internal.lisp (set-current-child)
1599         (adapt-child-to-parent, show-child, hide-child): Handle the case
1600         where child is not a frame or a window.
1602         * src/clfswm-util.lisp
1603         (mouse-click-to-focus-generic,mouse-focus-move/resize-generic):
1604         Check if child is a frame.
1606         * src/clfswm-internal.lisp (managed-window-p): Handle the case
1607         where frame is null.
1608         (place-frame): Check if frame and parent are frames.
1610         * src/clfswm-info.lisp (info-mode): display all frame info before
1611         leaving.
1613         * src/clfswm-second-mode.lisp (second-key-mode): display all frame
1614         info before leaving.
1616         * src/clfswm-internal.lisp (display-all-frame-info): New function.
1618 2008-05-02  Philippe Brochard  <pbrochard@common-lisp.net>
1620         * src/tools.lisp (getenv): Implemented for ECL.
1621         (urun-prog): Implemented for ECL.
1623         * src/clfswm-util.lisp (identify-key): Use a double buffer to
1624         display text.
1626         * src/clfswm-query.lisp (query-string): Use a double buffer to
1627         display text.
1629         * src/clfswm-info.lisp (draw-info-window): Use a double buffer to
1630         display text.
1632         * src/xlib-util.lisp (clear-pixmap-buffer, copy-pixmap-buffer):
1633         New functions.
1635 2008-05-01  Philippe Brochard  <pbrochard@common-lisp.net>
1637         * src/clfswm-info.lisp (info-mode): Add boundaries in the info mode window.
1639         * src/menu-def.lisp: New file: move all menu definition in
1640         menu-def.lisp.
1642         * src/clfswm-layout.lisp (register-layout): Use a function instead
1643         of a macro.
1645 2008-04-30  Philippe Brochard  <pbrochard@common-lisp.net>
1647         * src/clfswm-autodoc.lisp (produce-menu-doc,
1648         (produce-menu-doc-html): New functions.
1649         (produce-doc-*): Moved to clfswm-autodoc.lisp.
1651         * src/clfswm-util.lisp (paste-selection-no-clear): Prevent to
1652         paste a child on one of its own children. (this prevent a
1653         recursive bug).
1654         (move-child-to): Rename move/copy-current-child-by to
1655         move/copy-child-to.
1656         (mouse-move-window-over-frame): New function to move the window
1657         under the mouse cursor to another frame.
1659         * src/clfswm-internal.lisp (find-child-in-parent): New function.
1661 2008-04-29  Philippe Brochard  <pbrochard@common-lisp.net>
1663         * src/clfswm-internal.lisp (show-all-children): Display unmanaged
1664         windows only when its window parent is the current child.
1666 2008-04-28  Philippe Brochard  <pbrochard@common-lisp.net>
1668         * src/clfswm-util.lisp (manage-current-window)
1669         (unmanage-current-window): New functions: Allow to force to manage
1670         or unmanage a window by its parent frame.
1672         * src/bindings-second-mode.lisp (#\o): binded to
1673         set-open-in-new-frame-in-parent-frame-nw-hook and
1674         (#\o :control) to set-open-in-new-frame-in-root-frame-nw-hook
1676         * src/clfswm-util.lisp (with-current-window): New macro.
1678         * src/xlib-util.lisp (move-window, resize-window): Remove uneeded
1679         exposure and enter-window handle event.
1681         * src/clfswm-util.lisp (move-frame, resize-frame): Show all
1682         children for the current child after the move/resize.
1684 2008-04-27  Philippe Brochard  <pbrochard@common-lisp.net>
1686         * src/xlib-util.lisp (resize-window): Take care of window size
1687         hints.
1689         * src/clfswm-util.lisp (mouse-focus-move/resize-generic): Allow to
1690         move/resize unmanaged windows.
1692         * src/xlib-util.lisp (move-window, resize-window): New functions.
1694 2008-04-25  Philippe Brochard  <pbrochard@common-lisp.net>
1696         * src/clfswm-util.lisp (current-frame-manage-window-type): Let the
1697         user choose what window type the current frame must handle.
1698         (display-current-window-info): New function.
1699         (current-frame-manage-all-window-type)
1700         (current-frame-manage-only-normal-window-type)
1701         (current-frame-manage-no-window-type): New functions.
1703         * src/clfswm-internal.lisp (managed-window-p): New function.
1705         * src/package.lisp (frame): Managed type: new frame
1706         parameter. This allow to choose what window type a frame must
1707         handle.
1709         * src/*.lisp: Rename all 'father' occurrences to 'parent'.
1711         * src/clfswm-nw-hooks.lisp
1712         (open-in-new-frame-in-parent-frame-nw-hook): New new window hook.
1714         * src/clfswm-util.lisp (adapt-current-frame-to-window-hints): New
1715         function.
1717         * src/tools.lisp (ensure-printable): Return always a string even
1718         with a null string.
1720 2008-04-24  Philippe Brochard  <pbrochard@common-lisp.net>
1722         * src/config.lisp (*default-nw-hook*): New variable to change the
1723         default new window hook.
1725 2008-04-22  Philippe Brochard  <pbrochard@common-lisp.net>
1727         * clfswm.asd (clfswm): Add a dependency from
1728         clfswm-second-mode.lisp to clfswm.lisp.
1730         * src/clfswm-util.lisp (identify-key): Show the documentation for
1731         the function bound on a key.
1732         (with-movement): Move with-movement,
1733         current-frame-fill/pack/resize-*  from bindings-second-mode.lisp
1734         to clfswm-util.lisp.
1736         * src/clfswm-menu.lisp: New menu system that let user change keys
1737         or functions associated to keys.
1739 2008-04-18  Philippe Brochard  <pbrochard@common-lisp.net>
1741         * src/clfswm-internal.lisp (show-all-children): Display-child is
1742         the first child by default. Solve a bug with father-p.
1744 2008-04-17  Philippe Brochard  <pbrochard@common-lisp.net>
1746         * src/clfswm-internal.lisp (add-frame): Add frame return the
1747         created frame.
1748         (show-all-children): Move the size computation outside the
1749         show-child part.
1751         * src/bindings-second-mode.lisp (with-movement): Redisplay only
1752         the current child.
1754         * src/clfswm-util.lisp (mouse-click-to-focus-generic): Redisplay
1755         only the current child.
1757         * src/clfswm-internal.lisp (show-all-children): New display-child
1758         parameter to display only the desired child and its children.
1759         (select-next/previous-child): Only display the current child.
1761 2008-04-14  Philippe Brochard  <pbrochard@common-lisp.net>
1763         * src/clfswm.lisp (init-display): Move the default frame creation
1764         on the default init hook.
1766         * src/clfswm-keys.lisp (define-ungrab/grab): Handle all keysyms in
1767         the main mode (for example: "1" on an azerty keyboard).
1769 2008-04-13  Philippe Brochard  <pbrochard@common-lisp.net>
1771         * src/clfswm-keys.lisp (find-key-from-code): Better handle of
1772         keysyms. Revert to old grabbing method for the main mode.
1774 2008-04-12  Philippe Brochard  <pbrochard@common-lisp.net>
1776         * src/clfswm.lisp (init-display): Add key handling on no focus
1777         window and on frame windows.
1779 2008-04-11  Philippe Brochard  <pbrochard@common-lisp.net>
1781         * src/clfswm.lisp (main): Keyboard handle strategie change: Grab
1782         all keys by default and replay just what is needed. No change for
1783         the second mode.
1785         * src/clfswm-keys.lisp: remove grab/ungrab main keys.
1786         (find-key-from-code): Test for shift and not shift presence.
1788 2008-04-09  Philippe Brochard  <pbrochard@common-lisp.net>
1790         * src/clfswm-internal.lisp (switch-to-root-frame): show later -
1791         new key parameter to have less flickering.
1793 2008-04-07  Philippe Brochard  <pbrochard@common-lisp.net>
1795         * src/bindings-second-mode.lisp (frame-layout-once-menu): Set the
1796         layout only one time and revert to no-layout to freely handle
1797         frames.
1799         * src/clfswm-nw-hooks.lisp
1800         (open-in-new-frame-in-root-frame-nw-hook): Tile layout with spaces
1801         with new created window.
1803         * src/clfswm-layout.lisp (register-layout): Now register
1804         automatically a once layout to set the layout only one time and
1805         revert to no-layout to freely handle frames.
1807 2008-04-05  Philippe Brochard  <pbrochard@common-lisp.net>
1809         * src/clfswm-nw-hooks.lisp (leave-focus-frame-nw-hook): New
1810         nw-hook: Open the next window in the current frame and leave the
1811         focus to the current child.
1813 2008-04-04  Philippe Brochard  <pbrochard@common-lisp.net>
1815         * src/bindings-second-mode.lisp: Add keys definitions to
1816         bind-or-jump in the second mode.
1818         * src/clfswm-util.lisp (bind-or-jump): remove the auto-defining
1819         macro for bind-or-jump-(1|2|3...).
1821         * src/clfswm-keys.lisp (define-define-key/mouse): Allow additional
1822         arguments to function. This allow to do things like:
1823         (define-main-key (key) 'my-function 10 20 'foo) -> 10 20 and 'foo
1824         are passed to my-function on key press.
1826 2008-04-03  Philippe Brochard  <pbrochard@common-lisp.net>
1828         * src/clfswm-util.lisp (bind-or-jump): New (great) function.
1830 2008-04-02  Philippe Brochard  <pbrochard@common-lisp.net>
1832         * src/clfswm-internal.lisp (child-fullname): New function
1834         * src/clfswm-info.lisp (info-mode-menu): Add an explicit optional
1835         docstring in info-mode-menu. An item can be
1836         '((key function) (key function)) or with docstring
1837         '((key function "documentation 1") (key function "bla bla") (key function))
1839         * src/tools.lisp (ensure-n-elems): New function.
1841         * src/bindings-second-mode.lisp: Bind Alt+mouse-1/3 to move or
1842         resize a frame or the window's father.
1844         * src/clfswm.lisp (init-display): Remove tile-space-layout by
1845         default on the root frame.
1847         * src/clfswm-util.lisp (move/resize-frame): Add standard event
1848         hooks handlers (map-request, configure-notify...)
1850         * src/clfswm-internal.lisp (adapt-child-to-father): Limit minimal
1851         child size to 1x1.
1853 2008-04-01  Philippe Brochard  <pbrochard@common-lisp.net>
1855         * src/bindings.lisp: Bind Alt+mouse-1/3 to move or resize a frame
1856         or the window's father.
1858         * src/clfswm-util.lisp (mouse-click-to-focus-generic): Stop button
1859         event only if there is a geometry change.
1860         (mouse-focus-move/resize-generic): Generic function to move or
1861         resize a frame or a window father frame.
1863 2008-04-01  Philippe Brochard  <pbrochard@common-lisp.net>
1865         * src/clfswm-internal.lisp (show-all-children): Return t if there
1866         is a geometry change.
1868 2008-03-30  Philippe Brochard  <pbrochard@common-lisp.net>
1870         * src/bindings.lisp (Up/Down): Swap select previous/next level.
1872         * src/bindings-second-mode.lisp (Up/Down): Swap select previous/next level.
1874         * src/clfswm.lisp (init-display): Create a default frame in the root frame.
1876         * src/clfswm-internal.lisp (place-frame): Place frame from real (pixel) coordinates.
1877         (with-all-*): Reverse the child list to manage the first child last (like in
1878         show-all-children).
1880         * src/config.lisp (*create-frame-on-root*): New variable: Create a new frame on the
1881         root window only if true.
1883         * src/clfswm-util.lisp (mouse-click-to-focus-generic): Create a new frame on the
1884         root window only if *create-frame-on-root* is true.
1886         * src/bindings-second-mode.lisp (sm-mouse-click-to-focus-generic): Create a new frame
1887         on the root window.
1889 2008-03-29  Philippe Brochard  <pbrochard@common-lisp.net>
1891         * src/bindings-second-mode.lisp (sm-mouse-click-to-focus-generic): Focus, move and resize
1892         the current child (even if it's a window).
1894 2008-03-28  Philippe Brochard  <pbrochard@common-lisp.net>
1896         * src/clfswm-util.lisp (mouse-click-to-focus-and-move)
1897         (mouse-click-to-focus-and-resize): New functions.
1899         * src/clfswm-internal.lisp (*-fl->px): Convert float coordinates to pixel.
1900         (*-px->fl): Convert pixel coordinates to float.
1902         * src/tools.lisp (call-hook): Move call-hook to tools.lisp.
1904 2008-03-27  Philippe Brochard  <pbrochard@common-lisp.net>
1906         * src/clfswm-layout.lisp (no-layout): Use :first-only to raise only the
1907         first child.
1909         * src/clfswm-internal.lisp (hide-all): Split hide-all-children in hide-all
1910         and hide-all-children.
1911         (raise-if-needed): New function.
1912         (show-child): Use a first-p parameter to raise windows only when they are
1913         first child.
1915 2008-03-26  Philippe Brochard  <pbrochard@common-lisp.net>
1917         * src/clfswm-internal.lisp (select-next/previous-level): Don't use show-all-children
1918         -> less flickering.
1920 2008-03-25  Philippe Brochard  <pbrochard@common-lisp.net>
1922         * src/clfswm-info.lisp (keys-from-list): new function.
1924         * src/*: rename 'childs' in 'children'.
1926         * src/*: rename 'group' in 'frame'.
1928 2008-03-22  Philippe Brochard  <pbrochard@common-lisp.net>
1930         * src/clfswm-pack.lisp (explode-group/explode-current-group): new functions.
1932 2008-03-21  Philippe Brochard  <pbrochard@common-lisp.net>
1934         * src/clfswm-pack.lisp: Pack, Fill, Resize functions.
1936 2008-03-16  Philippe Brochard  <pbrochard@common-lisp.net>
1938         * src/clfswm-nw-hooks.lisp: Register system for new window hooks.
1939         Bind control+o to open the next window in a new group in the root group
1940          (as open in next window in a new workspace in 0801 version).
1942 2008-03-15  Philippe Brochard  <pbrochard@common-lisp.net>
1944         * src/clfswm-util.lisp (show/hide-all-groups-info/key): Show/hide all groups info
1945         window.
1947 2008-03-14  Philippe Brochard  <pbrochard@common-lisp.net>
1949         * bindings-second-mode.lisp ("ISO_Left_Tab"): Use ISO_Left_Tab
1950         instead of Tab for select-previous-child.
1952 2008-03-13  Philippe Brochard  <pbrochard@common-lisp.net>
1954         * clfswm-util.lisp (force-window-in-group/force-window-center-in-group):
1955         new functions.
1957 2008-03-11  Philippe Brochard  <pbrochard@common-lisp.net>
1959         * clfswm-util.lisp (identify-key): Display the documentation
1960         associated to keys when identifying a key.
1962 2008-03-10  Xavier Maillard  <xma@gnu.org>
1964         * contrib/clfswm: Complete rewrite of the script. Detect error and
1965         act accordingly. Add command line arguments to configure the
1966         script execution. User can now choose different common lisp
1967         implementation (clisp and sbcl only), choose where to store the
1968         dumped image, where to find clfswm source.
1970 2008-03-09  Philippe Brochard  <pbrochard@common-lisp.net>
1972         * clfswm-internal.lisp (process-new-window): Beginning of new
1973         window hook: each group have a hook to tell what he wants to do
1974         with the new created window.
1976 2008-03-08  Xavier Maillard  <xma@gnu.org>
1978         * contrib/clfswm: New script. Dump a CLISP image of CLFSWM then
1979         call the resulting executable.
1981         * clfswm.lisp (read-conf-file): Check for the user config file in
1982         XDG_CONFIG_HOME *first*. Freedesktop.org standards should be
1983         prefered whenever possible.
1985 2008-02-27  Philippe Brochard  <pbrochard@common-lisp.net>
1987         * clfswm-layout.lisp (*-layout): Add an optional raise-p
1988         parameter in each layout.
1990 2008-02-26  Philippe Brochard  <pbrochard@common-lisp.net>
1992         * clfswm-util.lisp (copy/cut-current-child): Does not affect the
1993         root group.
1994         (copy/move-current-child-by-name/number): new functions
1995         (focus-group-by-name/number): new functions
1996         (delete-group-by-name/number): new functions
1998 2008-02-24  Philippe Brochard  <pbrochard@common-lisp.net>
2000         * ************************************************************ *
2001         *: Major update - No more reference  to workspaces. The main   *
2002         structure is a tree of groups or application windows.          *
2003         * ************************************************************ *
2005 2008-02-07  Philippe Brochard  <pbrochard@common-lisp.net>
2007         * clfswm.lisp (read-conf-file): Read configuration in
2008         $HOME/.clfswmrc or in /etc/clfswmrc or in
2009         $XDG_CONFIG_HOME/clfswm/clfswmrc.
2010         (xdg-config-home): Return the content of $XDG-CONFIG-HOME (default
2011         to $HOME/.config/).
2013 2008-01-18  Philippe Brochard  <pbrochard@common-lisp.net>
2015         * clfswm-internal.lisp (show-all-group): Use *root* and *root-gc*
2016         by default.
2018 2008-01-03  Philippe Brochard  <pbrochard@common-lisp.net>
2020         * clfswm-internal.lisp (find-window-group): New function.
2022         * clfswm*: Change to make clfswm run with clisp/new-clx.
2024 2008-01-01  Philippe Brochard  <pbrochard@common-lisp.net>
2026         * clfswm-util.lisp (query-show-paren): Add show parent matching in
2027         query string.
2028         (query-string): Bind control+k to delete end of line.
2030         * clfswm-second-mode.lisp (draw-second-mode-window): Display
2031         the action on mouse motion in second mode.
2033         * clfswm.lisp (handle-exposure): Redisplay groups on exposure
2034         event but do not clear the root window.
2035         (handle-configure-request): Adjust unmanaged window from their
2036         request.
2038         * clfswm-internal.lisp (process-new-window): Adjust new window
2039         with the specified hints (max/min/base width/height).
2041 2007-12-31  Philippe Brochard  <pbrochard@common-lisp.net>
2043         * clfswm.lisp (handle-configure-request): Send an Configuration
2044         Notify event. This solve a bug with xterm and rxvt who takes some
2045         times to be mapped. Now there is no delay.
2047         * bindings-second-mode.lisp (define-shell): Run programs after
2048         living the second mode.
2050 2007-12-30  Philippe Brochard  <pbrochard@common-lisp.net>
2052         * clfswm-internal.lisp (process-new-window): Do not crop transient
2053         window to group size.
2054         (adapt-window-to-group): Do not crop transient window to group
2055         size.
2057         * clfswm.lisp (handle-configure-request): Adapt just the window to
2058         its group and don't take care of the configure request. Remove the
2059         bug with the Gimp outside the group and speed up the window
2060         manipulation.
2061         (handle-exposure): Remove show-all-group on exposure event
2062         -> Speed up.
2064 2007-12-29  Philippe Brochard  <pbrochard@common-lisp.net>
2066         * clfswm-util.lisp (circulate-group-up-copy-window)
2067         (circulate-group-down-copy-window)
2068         (circulate-workspace-up-copy-group)
2069         (circulate-workspace-down-copy-group): Prevent the copy of the
2070         same window in the same workspace.
2072         * bindings-second-mode.lisp (release-copy-selected-window)
2073         (release-copy-selected-group): Prevent the copy of the same window
2074         in the same workspace.
2076         * clfswm-pager.lisp (generic-pager-move-window-on-previous-line)
2077         (generic-pager-move-window-on-next-line): Remove the copy
2078         property.
2079         (generic-pager-move-group-on-next-workspace)
2080         (generic-pager-move-group-on-previous-workspace): Prevent the copy
2081         of the same window in the same workspace.
2083         * bindings-pager.lisp (mouse-pager-copy-selected-window-release)
2084         (mouse-pager-copy-selected-group-release): Prevent the copy of the
2085         same window in the same workspace.
2087         * tools.lisp (setf/=): new macro to set a variable only when
2088         necessary.
2090         * clfswm-internal.lisp (adapt-window-to-group): use set/= to set
2091         x, y... only when necessary.
2093 2007-12-28  Philippe Brochard  <pbrochard@common-lisp.net>
2095         * clfswm.lisp (handle-configure-notify, *configure-notify-hook*):
2096         new function and hook: force windows to stay in its group (solve a
2097         bug with the Gimp).
2099 2007-12-25  Philippe Brochard  <pbrochard@common-lisp.net>
2101         * bindings-second-mode.lisp (mouse-motion): use hide-group to have
2102         less flickering when moving/resizing groups.
2104         * clfswm-internal.lisp (hide-group): new function.
2105         (show-all-group): clear-all: new parameter.
2107 2007-12-22  Philippe Brochard  <pbrochard@common-lisp.net>
2109         * clfswm-keys.lisp (define-define-key): undefine-*-multi-name: new
2110         macro.
2111         * clfswm*: Color change for the pager. Typo or better description
2112         in bindings definitions. Define bindings for a qwerty keyboard by
2113         default. dot-clfswmrc show examples to switch to an azerty
2114         keyboard.
2115         License change to GPL v3.
2116         * config.lisp: new file - group all globals variables in this
2117         file.
2119 2007-08-26  Philippe Brochard  <pbrochard@common-lisp.net>
2121         * xlib-util.lisp (hide-window): Remove structure-notivy events
2122         when hidding a window.
2124 2007-05-16  Philippe Brochard  <pbrochard@common-lisp.net>
2126         * package.lisp (*sm-property-notify-hook*): Readded
2127         property-notify-hook in second mode.
2129 2007-05-15  Philippe Brochard  <pbrochard@common-lisp.net>
2131         * clfswm-keys.lisp (produce-doc-html): Better clean up for strings.
2133 2007-05-13  Philippe Brochard  <pbrochard@common-lisp.net>
2135         * clfswm-pack.lisp (tile-current-workspace-to/right/left/top/bottom):
2136         Tile the current workspace with the current window on one side and
2137         others on the other (this emulate the larswm, dwm, wmii way). See
2138         the default configuration file to enable this mode by default.
2140         * clfswm-pager.lisp (pager-tile-current-workspace-to): idem for
2141         the pager.
2143 2007-05-12  Philippe Brochard  <pbrochard@common-lisp.net>
2145         * clfswm-pager.lisp (pager-draw-window-in-group): Add
2146         ensure-printable to print windows name even with non-ascii
2147         characters.
2149 2007-05-11  Philippe Brochard  <pbrochard@common-lisp.net>
2151         * clfswm-pager.lisp (pager-explode-current-group): Create a new
2152         group for each window in group.
2153         (pager-implode-current-group): Move all windows in workspace to
2154         one group and remove other groups.
2156         * clfswm-pack.lisp (explode-group): Create a new group for each
2157         window in group.
2158         (implode-group): Move all windows in workspace to one group and
2159         remove other groups.
2161         * clfswm-util.lisp (identify-key): Remove local configuration
2162         variables and made them available for configuration from
2163         package.lisp.
2164         (query-string): idem.
2166 2007-04-29  Philippe Brochard  <pbrochard@common-lisp.net>
2168         * netwm-util.lisp: Start of NetWM compliance.
2169         Add a Netwm client list gestion.
2171 2007-04-28  Philippe Brochard  <pbrochard@common-lisp.net>
2173         * clfswm-internal.lisp (create-group-on-request): open a new group
2174         only when the current group is not empty.
2176         * bindings-second-mode.lisp (define-second-key-#\o-control): Fix a
2177         bug with null workspace.
2179         * clfswm-pager.lisp (pager-handle-event): Add a hook
2180         system. This hooks can be changed in the user configuration file.
2182         * package.lisp: All colors and font variables are set in
2183         package.lisp and can be configured in the user configuration
2184         file.
2185         Note: If you have configured some less ugly colors (esp. for the
2186         pager) don't hesitate to let me know :)
2188         * clfswm-second-mode.lisp (sm-handle-event): Add a hook
2189         system. This hooks can be changed in the user configuration file.
2191         * clfswm.lisp (handle-event): Add a hook system. This hooks can be
2192         changed in the user configuration file (~/.clfswmrc)
2194 2007-04-25  Philippe Brochard  <pbrochard@common-lisp.net>
2196         * clfswm-util.lisp (stop-all-pending-actions): new function: reset
2197         arrow action, open next window in new workspace/group.
2199         * bindings.lisp (stop-all-pending-actions): new binding.
2200         (open-next-window-in-new-group-once): Open the next windows in a
2201         new group (only once) or open all new windows in a new group (like
2202         others windows managers).
2204 2007-04-22  Philippe Brochard  <pbrochard@common-lisp.net>
2206         * clfswm.lisp (read-conf-file): New function to read a lisp
2207         configuration file at startup.
2208         (focus-group-under-mouse): Check if group isn't the current group
2209         ( prevent a bug with unclutter ).
2211 2007-03-02  Philippe Brochard  <pbrochard@common-lisp.net>
2213         * bindings.lisp (run-program-from-query-string): A program can be
2214         launch from a input query window.
2216 2007-03-01  Philippe Brochard  <pbrochard@common-lisp.net>
2218         * clfswm-info.lisp: Fix a bug with banish pointer in info mode.
2220 2007-02-28  Philippe Brochard  <pbrochard@common-lisp.net>
2222         * clfswm.lisp (process-new-window): One can now open the next
2223         window in a workspace called by its number.
2225         * clfswm-util.lisp (query-font-string): Minimal editing
2226         capabilities.
2227         (eval-from-string): And an REPL in the window manager... :)
2229 2007-02-26  Philippe Brochard  <pbrochard@common-lisp.net>
2231         * clfswm.lisp (process-new-window): One can now open the next
2232         window in a new workspace or a new group.
2234         * clfswm-pager.lisp (pager-mode): Display the next arrow action
2235         with the hidden windows.
2237         * clfswm.lisp (second-key-mode): Display the current workspace
2238         number and the next arrow action in the state window.
2240         * clfswm-pager.lisp (pager-mode): Hide all windows before leaving
2241         the pager mode and then redisplay only the current workspace.
2243 2007-02-25  Philippe Brochard  <pbrochard@common-lisp.net>
2245         * clfswm.lisp (add-workspace): Workspaces are now numbered. So
2246         they can be focused with a keypress, sorted or renumbered.
2248 2007-02-24  Philippe Brochard  <pbrochard@common-lisp.net>
2250         * clfswm-pager.lisp (pager-mode): Remove multiple silly
2251         pager-draw-display. This prevent a lot of flickering in the
2252         pager.
2254         * clfswm.lisp: Remove all display-force-output and replace them
2255         with only one display-finish-output in the event loop.
2257 2006-11-06  Philippe Brochard  <pbrochard@common-lisp.net>
2259         * clfswm-pager.lisp (pager-center-group): New function - center a
2260         group at the middle of the screen.
2262         * clfswm-pack.lisp (center-group): New function - center a group
2263         at the middle of the screen.
2265         * clfswm.lisp (show-group): Add a cross line under the group.
2266         (show-group): Group are showned even if fullscreened.
2267         (init-display): Add an exposure event on the root window.
2269 2006-11-05  Philippe Brochard  <pbrochard@common-lisp.net>
2271         * package.lisp (*default-group*): Default group is the same size
2272         of a fullscreened group.
2274         * bindings*: Use shift to move, control+shift to copy.
2276         * *.lisp: Add comments for configuration or alternatives. So grep
2277         for CONFIG to see where you can configure clfswm. And grep for
2278         Alternative to use some commented code.
2280         * clfswm.lisp (second-key-mode): Use a single window to show the
2281         second mode. See for alternatives at the end of this file.
2283 2006-11-03  Philippe Brochard  <pbrochard@common-lisp.net>
2285         * clfswm-keys.lisp (define-define-key/mouse): Factorisation in a
2286         macro of key and mouse definitions.
2287         (define-define-key/mouse): Use state instead of modifiers list
2288         this fix a bug when the modifiers list is not in the rigth order.
2290         * clfswm.lisp (second-key-mode): Add a colored border in second mode.
2292 2006-11-02  Philippe Brochard  <pbrochard@common-lisp.net>
2294         * clfswm-info.lisp (info-mode): Add an info mode.
2296 2006-11-01  Philippe Brochard  <pbrochard@common-lisp.net>
2298         * clfswm.lisp (process-new-window): Change border size for
2299         transient windows.
2300         (show-all-windows-in-workspace): Unhide all windows even when the
2301         current group is in fullscreen mode.
2303 2006-10-26  Philippe Brochard  <pbrochard@common-lisp.net>
2305         * clfswm-util.lisp (identify-key): Add an exposure handle-event to
2306         redisplay the identify window after a terminal switch.
2308         * clfswm-pager.lisp (pager-mode): Add an exposure handle-event to
2309         redisplay the pager after a terminal switch.
2311 2006-10-24  Philippe Brochard  <pbrochard@common-lisp.net>
2313         * clfswm-util.lisp (identify-key): Add a window to display
2314         the keys to identify on screen.
2316         * bindings.lisp, bindings-pager.lisp: Define same keys to
2317         move/copy groups/windows in second mode and in pager.
2319         * clfswm.lisp (handle-event*): Same version in all clfswm (fix some
2320         drawing lags).
2321         (show-all-windows-in-workspace): unhide window before adapting it
2322         to group.
2324 2006-10-23  Philippe Brochard  <pbrochard@common-lisp.net>
2326         * clfswm.lisp (handle-event): Revert to an older version.
2328 2006-10-18  Philippe Brochard  <pbrochard@common-lisp.net>
2330         * clfswm-util.lisp (force-window-in-group)
2331         (force-window-center-in-group): New functions for transient windows.
2333         * clfswm-pager.lisp (pager-remove-current-workspace/group):
2334         bugfix: hide all windows before removing group or workspace.
2336 2006-10-17  Philippe Brochard  <pbrochard@common-lisp.net>
2338         * bindings-pager.lisp (mouse-pager-move-selected-group)
2339         (mouse-pager-copy-selected-group)
2340         (mouse-pager-move-selected-window)
2341         (mouse-pager-copy-selected-window, mouse-pager-rotate-window-up)
2342         (mouse-pager-rotate-window-down): New functions to have mouse in
2343         pager mode.
2345         * clfswm-pager.lisp (pager-swap-window)
2346         (pager-copy-group-on-next/previous-workspace)
2347         (pager-copy-window-on-next/previous-line): New functions
2349 2006-10-15  Philippe Brochard  <pbrochard@common-lisp.net>
2351         * clfswm-pager.lisp (pager-move-window-on-next/previous-line,
2352         (pager-move-group-on-next/previous-workspace): new functions.
2354         * clfswm-pack.lisp (resize-half-x-x-current-group): resize group
2355         to its half size (new functions).
2357 2006-10-11  Philippe Brochard  <pbrochard@common-lisp.net>
2359         * clfswm-pager.lisp: workspaces, groups and windows can now be
2360         selectionned with the keyboard or the mouse.
2362 2006-10-09  Philippe Brochard  <pbrochard@common-lisp.net>
2364         * clfswm-pager.lisp (pager-select-workspace-right/left):
2365         workspaces can now be selectionned with the keyboard.
2367 2006-10-08  Philippe Brochard  <pbrochard@common-lisp.net>
2369         * clfswm-keys.lisp (undefine-main-key, undefine-second-key, undefine-mouse-action):
2370         new function to remove a previous defined key or mouse combination.
2372 2006-10-07  Philippe Brochard  <pbrochard@common-lisp.net>
2374         * clfswm.lisp (main): Check for access error in init-display.
2376         * clfswm-keys.lisp (define-ungrab/grab): check for keysym and
2377         keycode before grabbing.
2379         * bindings.lisp: Remove nlambda and use defun to keep the function
2380         documentation with clisp.
2381         (define-shell): new macro to define shell command for the second
2382         mode.
2384 2006-10-06  Philippe Brochard  <pbrochard@common-lisp.net>
2386         * clfswm-keys.lisp (define-ungrab/grab): use a cond instead of a
2387         boggus typecase.
2389 2006-10-05  Philippe Brochard  <pbrochard@common-lisp.net>
2391         * bindings.lisp (accept-motion): Move group bugfix in upper mouse
2392         workspace circulation.
2394         * clfswm-util.lisp (absorb-orphan-window): new function.
2396         * clfswm-keys.lisp: Keysyms support.
2398 2006-10-02  Philippe Brochard  <pbrochard@common-lisp.net>
2400         * clfswm.lisp (show-group): Use one gc for all groups and not one
2401         per group.
2403 2006-10-01  Philippe Brochard  <pbrochard@common-lisp.net>
2405         * bindings.lisp (define-second-key (#\l :mod-1)): fix a typo.
2407         * clfswm.lisp (adapt-window-to-group): Adapt only windows with
2408         width and height outside group.
2410 2006-09-28  Philippe Brochard  <pbrochard@common-lisp.net>
2412         * clfswm.lisp: First public release.