Release 1106
[clfswm.git] / ChangeLog
blob4cdf441f0d8eb4a1c0f4cf88855ada65b8cfd754
1 2011-06-08  Philippe Brochard  <pbrochard@common-lisp.net>
3         * *: **** Release 1102 ****
5 2011-06-08  Philippe Brochard  <pbrochard@common-lisp.net>
7         * src/clfswm-internal.lisp
8         (delete-child-and-children-in-all-frames): Delete or destroy
9         children before displaying all children.
11 2011-06-05  Philippe Brochard  <pbrochard@common-lisp.net>
13         * src/clfswm-util.lisp (add-frame-in-parent-frame): New function
14         and binding.
16 2011-06-04  Philippe Brochard  <pbrochard@common-lisp.net>
18         * src/clfswm.lisp (main-unprotected): Destroy all frames windows
19         before closing the display (not really needed).
21 2011-06-02  Philippe Brochard  <pbrochard@common-lisp.net>
23         * src/clfswm-layout.lisp (inc-tile-layout-size)
24         (dec-tile-layout-size, inc-slow-tile-layout-size)
25         (dec-slow-tile-layout-size): New functions and bindings.
27 2011-06-01  Philippe Brochard  <pbrochard@common-lisp.net>
29         * src/clfswm-expose-mode.lisp (define-expose-letter-keys): Add
30         0..1 and A..Z keys to select a child in exposé mode.
32         * src/clfswm-internal.lisp (display-frame-info): Remove hidden
33         infos in frames windows.
35         * src/clfswm-util.lisp (ask-close/kill-current-window): Menu
36         update.
38 2011-05-30  Philippe Brochard  <pbrochard@common-lisp.net>
40         * src/clfswm-internal.lisp (get-parent-layout): Minor fullscreen
41         size tweaking.
43 2011-05-29  Philippe Brochard  <pbrochard@common-lisp.net>
45         * src/clfswm-internal.lisp
46         (delete-child-and-children-in-all-frames): Show all children
47         before deleting/destroying a windows, so prevent a flickering.
48         (get-parent-layout): Return the fullscreen size when the current
49         root is a window.
51 2011-05-28  Philippe Brochard  <pbrochard@common-lisp.net>
53         * src/clfswm-internal.lisp (get-parent-layout): Handle correctly
54         unmanaged windows.
56         * src/clfswm-util.lisp (delete-focus-window-generic): Do not hide
57         child before removing, so prevent a flickering.
59         * src/clfswm-internal.lisp (show-all-children): Rectangular
60         optimization to display only needed children.
61         (show-all-children): Remove flickering on
62         select-next/previous-brother.
64 2011-05-17  Philippe Brochard  <pbrochard@common-lisp.net>
66         * src/clfswm-util.lisp (copy-focus-window, cut-focus-window): New
67         functions and ask-close/kill-current-window menu and bindings
68         entry.
70 2011-05-16  Philippe Brochard  <pbrochard@common-lisp.net>
72         * src/clfswm-util.lisp (ask-close/kill-current-window): Add an
73         *ask-close/kill-placement* placement window variable.
75 2011-05-09  Philippe Brochard  <pbrochard@common-lisp.net>
77         * contrib/osd.lisp (funcall-button-from-code): Display osd
78         documention for buttons and fix some redefining warnings.
80 2011-05-07  Philippe Brochard  <pbrochard@common-lisp.net>
82         * src/clfswm-nw-hooks.lisp (make-permanent-nw-hook-frame): New
83         function. Prevent to add or delete a new window hook for this
84         frame.
86         * src/clfswm-layout.lisp (update-layout-managed-children-position):
87         New function.
89 2011-05-06  Philippe Brochard  <pbrochard@common-lisp.net>
91         * src/bindings-second-mode.lisp (set-default-second-keys):
92         select-brother-spatial-move-* binding update.
94         * src/clfswm-layout.lisp (tile-left|right|top|bottom-layout): Ask
95         to keep children positions or not.
97         * src/clfswm-internal.lisp (fixe-real-size): Takes care of border
98         size.
100         * src/clfswm-layout.lisp (update-layout-managed-children): Fix a
101         bug by using the parent frame instead of the current child.
103         * src/clfswm-circulate-mode.lisp
104         (select-brother-generic-spatial-move+right/left/up/down): New
105         function to select a brother from another in a spatial move.
107 2011-04-19  Philippe Brochard  <pbrochard@common-lisp.net>
109         * src/clfswm-pack.lisp (move-frame-constrained)
110         (resize-frame-constrained): Use pixels instead of floating
111         measure.
113 2011-04-18  Philippe Brochard  <pbrochard@common-lisp.net>
115         * src/clfswm-pack.lisp (resize-frame-constrained): Takes care of
116         border size.
117         (implode-frame, implode-current-frame): New functions. Absorb all
118         frames subchildren in frame. Explode frame opposite.
120 2011-04-17  Philippe Brochard  <pbrochard@common-lisp.net>
122         * src/clfswm-pack.lisp (move-frame-constrained)
123         (resize-frame-constrained): New function. Move and resize frame
124         with the mouse constrained by other frame brothers.
126 2011-04-14  Philippe Brochard  <pbrochard@common-lisp.net>
128         * src/clfswm-util.lisp (with-movement-select-next-brother)
129         (with-movement-select-previous-brother)
130         (with-movement-select-next-child): Use a simple method (do not
131         enter in the circulate mode) to allow to circulate in all children
132         or brothers.
134         * src/clfswm-menu.lisp (open-menu): Save info hash table keys
135         instead of deleting newly created keys.
137 2011-03-21  Philippe Brochard  <pbrochard@common-lisp.net>
139         * src/clfswm-internal.lisp (x-px->fl, y-px->fl): Takes care of
140         border size.
142 2011-03-20  Philippe Brochard  <pbrochard@common-lisp.net>
144         * src/clfswm-info.lisp (show-config-variable): call
145         produce-conf-var-doc.
147 2011-03-18  Philippe Brochard  <pbrochard@common-lisp.net>
149         * src/clfswm-autodoc.lisp (produce-conf-var-doc-html): Produce a
150         documentation for all configurable variables in CLFSWM -
151         HTML version.
153         * src/clfswm-internal.lisp (leave-frame): Hide all children except
154         the current window.
156 2011-03-16  Philippe Brochard  <pbrochard@common-lisp.net>
158         * src/clfswm-autodoc.lisp (produce-all-docs): Produce a
159         documentation for all configurable variables in CLFSWM.
161         * src/clfswm-layout.lisp (set-gimp-layout): Display a notify
162         window with the help on the GIMP layout.
164 2011-03-12  Philippe Brochard  <pbrochard@common-lisp.net>
166         * src/menu-def.lisp: Menu update to prevent cursor keys clash.
168         * clfswm.asd: Change compilation order to prevent undefined
169         variables.
171         * src/clfswm-internal.lisp (show-child(frame)): Handle properly
172         the show-root-frame-p parameter.
174 2011-03-11  Philippe Brochard  <pbrochard@common-lisp.net>
176         * src/clfswm-util.lisp (move-frame, resize-frame): Do not move or
177         resize a frame when it's the current root.
179 2011-03-10  Philippe Brochard  <pbrochard@common-lisp.net>
181         * src/clfswm-internal.lisp (show-all-children): Handle properly
182         duplicated child in multipe frames.
184 2011-03-09  Philippe Brochard  <pbrochard@common-lisp.net>
186         * contrib/volume-mode.lisp (set-default-volume-keys): Add more
187         keybindings (up/down, right/left) to raise/lower the volume.
189         * src/clfswm-layout.lisp: Add a variable border size for frames
190         and windows.
192 2011-03-08  Philippe Brochard  <pbrochard@common-lisp.net>
194         * src/clfswm-util.lisp (cut-current-child, remove-current-child)
195         (delete-current-child): Hide the current child before doing the
196         action.
198         * src/clfswm-internal.lisp (show-all-children): Hide windows not
199         in the current root before displaying those in current root.
200         Remove all hide-all unnecessary calls.
202         * src/clfswm-configuration.lisp (save-variables-in-conf-file):
203         Save only variables with a different value than there original
204         value.
206 2011-03-07  Philippe Brochard  <pbrochard@common-lisp.net>
208         * src/clfswm-info.lisp (show-config-variable): Use the new
209         defconfig method.
211         * src/clfswm-autodoc.lisp (produce-configuration-variables): Use
212         the new defconfig method.
214         * src/clfswm-configuration.lisp (create-configuration-menu):
215         Change the config system with a more lispy one and a less string
216         based one: (defconfig name value group doc).
219 2011-03-06  Philippe Brochard  <pbrochard@common-lisp.net>
221         * src/clfswm-internal.lisp (show-all-children): Simplify the
222         selection method.
223         (show-child): Display an unmanaged window whe  it's the current
224         child.
225         (show-all-children): add the ability to display all child from
226         *root-frame* and hide all those who are not in *current-root*.
227         -> remove hide-all-children when needed.
229         * src/xlib-util.lisp (move-window,resize-window): Add a
230         *color-move-window* border when moving or resizing a window.
232 2011-03-04  Philippe Brochard  <pbrochard@common-lisp.net>
234         * src/clfswm-internal.lisp (show-all-children): Perform only one
235         recusion on the clfswm tree: calculate geometry and place child in
236         one pass.
238 2011-03-03  Philippe Brochard  <pbrochard@common-lisp.net>
240         * src/clfswm-internal.lisp (show-all-children): Rethink of display
241         child order to prevent very annoying flickering.
243 2011-02-27  Philippe Brochard  <pbrochard@common-lisp.net>
245         * src/clfswm-util.lisp (query-yes-or-no): New function.
247         * src/clfswm-configuration.lisp (reset-all-config-variables): New
248         function and menu entry.
249         (query-conf-value): Add the ability to leave the field blank to
250         reset the variable to its default value.
252 2011-02-26  Philippe Brochard  <pbrochard@common-lisp.net>
254         * src/clfswm-configuration.lisp
255         (add-all-configuration-default-value): Add a default value to
256         configurable variables.
258 2011-02-23  Philippe Brochard  <pbrochard@common-lisp.net>
260         * src/clfswm.lisp (main-unprotected): Create the configuration
261         menu only once at startup.
263 2011-02-22  Desmond O. Chang <dochang@gmail.com>
265         * contrib/amixer.lisp: Add a volume mode inspired by the emms
266         volume package. Alsa mixer interface.
268         * contrib/volume-mode.lisp: Add a volume mode inspired by the emms
269         volume package.
271 2011-02-22 Desmond O. Chang <dochang@gmail.com>
273         * src/clfswm.lisp (main): Use ASDF:SYSTEM-SOURCE-DIRECTORY instead
274         of *LOAD-TRUENAME*. *LOAD-TRUENAME* is only bound during a call to
275         LOAD. If one eval CLFSWM:MAIN in repl, BASE-DIR will be an empty
276         string. Use ASDF:SYSTEM-SOURCE-DIRECTORY to fix it.
278 2011-02-16  Philippe Brochard  <pbrochard@common-lisp.net>
280         * src/clfswm.lisp (main-unprotected): Add a close hook. And close
281         the notify window, the virtual keyboard and the clfswm terminal by
282         default.
284 2011-02-15  Philippe Brochard  <pbrochard@common-lisp.net>
286         * src/clfswm.lisp (main-unprotected): Destroy the notify window
287         before closing the display. This fix a bug when resetting/reloading
288         clfswm.
290 2011-02-12  Philippe Brochard  <pbrochard@common-lisp.net>
292         * src/xlib-util.lisp (equal-wm-class-fun, equal-wm-name-fun)
293         (raise-window-fun, raise-and-focus-window-fun): New functions.
295         * src/config.lisp (*clfswm-terminal-cmd*): Switch from xterm to
296         urxvt.
297         (*never-managed-window-list*): Structure change to be more
298         flexible. Let the choice to focus, raise and do nothing on never
299         managed windows.
301 2011-02-09  Philippe Brochard  <pbrochard@common-lisp.net>
303         * src/clfswm-util.lisp (mouse-focus-move/resize-generic): Take
304         care of never managed windows to move or resize them if the raise
305         parameter is true.
307         * src/clfswm-internal.lisp (in-frame, in-window, in-child): New
308         functions.
310 2011-02-08  Philippe Brochard  <pbrochard@common-lisp.net>
312         * src/clfswm.lisp (main-mode): Raise or not unmanaged windows
313         following request in *never-managed-window-list*.
315 2011-02-05  Philippe Brochard  <pbrochard@common-lisp.net>
317         * *: **** Release 1102 ****
319 2011-02-05  Desmond O. Chang <dochang@gmail.com>
321         * src/keysyms.lisp: Add extended keysyms from stumpwm.
323 2011-02-01  Desmond O. Chang <dochang@gmail.com>
325         * src/clfswm-util.lisp (run-or-raise): New function (thanks to
326         Desmond O. Chang).
328         * src/clfswm-internal.lisp (with-all-*): add a nil block.
330 2011-01-28  Desmond O. Chang <dochang@gmail.com>
332         * src/clfswm-util.lisp (xdg-config-home): XDG_CONFIG_HOME should
333         be $HOME/.config by default.
335 2010-12-29  Philippe Brochard  <pbrochard@common-lisp.net>
337         * contrib/osd.lisp (display-doc): Add another method where a
338         CLFSWM native window is used to display the key documentation.
340 2010-12-27  Philippe Brochard  <pbrochard@common-lisp.net>
342         * src/xlib-util.lisp (with-xlib-protect): Force to revert to the
343         main mode state.
345 2010-12-25  Philippe Brochard  <pbrochard@common-lisp.net>
347         * src/clfswm-second-mode.lisp (second-key-mode): Call the second
348         mode leave function only when the generic mode was ended.
350 2010-12-08  Philippe Brochard  <pbrochard@common-lisp.net>
352         * src/clfswm-second-mode.lisp (sm-leave-function): Do not use
353         *second-mode-program* anymore.
355 2010-12-07  Philippe Brochard  <pbrochard@common-lisp.net>
357         * src/clfswm-second-mode.lisp (*second-mode-leave-function*): New
358         variable bound to a function executed (when not null) on second
359         mode leaving.
361 2010-11-14  Philippe Brochard  <pbrochard@common-lisp.net>
363         * src/clfswm-util.lisp (find-child-under-mouse): Do not find
364         hidden windows.
366 2010-11-13  Philippe Brochard  <pbrochard@common-lisp.net>
368         * src/clfswm-expose-mode.lisp (expose-mode-display-accel-windows):
369         Do not display the accel window for unmanaged windows.
371 2010-11-11  Philippe Brochard  <pbrochard@common-lisp.net>
373         * src/clfswm-internal.lisp (set-current-root): Handle
374         window-parent in set-current-root.
376         * src/clfswm-util.lisp (mouse-click-to-focus-generic): Do not
377         focus the parent child when the current root is a window.
379 2010-11-09  Philippe Brochard  <pbrochard@common-lisp.net>
381         * src/clfswm-expose-mode.lisp (expose-windows-current-child-mode):
382         New function an bindings.
384         * src/clfswm-layout.lisp (tile-layout, set-tile-layout): Fill
385         blanks if needed.
387 2010-11-07  Philippe Brochard  <pbrochard@common-lisp.net>
389         * src/clfswm-layout.lisp (tile-layout-ask-keep-position): New
390         function to let the user choose to keep child position with
391         tile layout.
393         * src/clfswm-internal.lisp (remove-frame-data-slot): New
394         function.
396 2010-11-05  Philippe Brochard  <pbrochard@common-lisp.net>
398         * src/clfswm-internal.lisp (frame-select-next-child)
399         (frame-select-previous-child): New functions and bindings. Select
400         the next/previous child in the current frame.
402 2010-10-31  Philippe Brochard  <pbrochard@common-lisp.net>
404         * src/clfswm-query.lisp (query-mode-complet): New function: Handle
405         completion in query-mode.
407 2010-10-30  Philippe Brochard  <pbrochard@common-lisp.net>
409         * src/clfswm-query.lisp (query-print-string): Handle long lines
410         correctly.
412 2010-10-27  Philippe Brochard  <pbrochard@common-lisp.net>
414         * src/clfswm-expose-mode.lisp (expose-create-window): Ensure that
415         all characters are printable.
417 2010-10-25  Philippe Brochard  <pbrochard@common-lisp.net>
419         * contrib/server/server.lisp: Load clfswm client code in the main
420         program and let the user start it with a --client command line
421         option.
423         * src/package.lisp (*main-entrance-hook*): New hook executed after
424         loading configuration file and before opening the display.
426 2010-10-23  Philippe Brochard  <pbrochard@common-lisp.net>
428         * src/xlib-util.lisp: Remove unnecessary xlib:display-finish-output.
430         * src/clfswm-internal.lisp (show-child): Show window only if not
431         hidden.
433         * src/clfswm-keys.lisp (binding-substitute-modifier): Utility to
434         change modifiers after binding definition.
436 2010-10-21  Philippe Brochard  <pbrochard@common-lisp.net>
438         * contrib/osd.lisp: New file: OSD (On Screen Display) for
439         presentations.
441         * src/clfswm-menu.lisp (open-menu): Modularise function.
443 2010-10-13  Philippe Brochard  <pbrochard@common-lisp.net>
445         * src/clfswm-info.lisp (show-first-aid-kit): Display the essential
446         key binding in main and second mode.
448 2010-10-10  Philippe Brochard  <pbrochard@common-lisp.net>
450         * src/clfswm-util.lisp (open-notify-window): Convert hello-window
451         functions to a more generic Notify-window system.
453         * src/tools.lisp (add-timer): Add an id to identify the timer.
455 2010-10-09  Philippe Brochard  <pbrochard@common-lisp.net>
457         * src/tools.lisp (erase-timer): New function.
459         * src/clfswm-util.lisp (display-hello-window): Add a timer to hide
460         the hello window. Add Configuration variables.
462 2010-10-08  Philippe Brochard  <pbrochard@common-lisp.net>
464         * src/clfswm-util.lisp (): Add an Hello window at startup.
466         * src/tools.lisp (process-timers): Add a timer system.
468 2010-10-07  Philippe Brochard  <pbrochard@common-lisp.net>
470         * src/clfswm-query.lisp (add-in-query-string): Handle correctly
471         the mod-5 modifier.
473 2010-10-06  Philippe Brochard  <pbrochard@common-lisp.net>
475         * src/clfswm-query.lisp (query-print-string): Change cursor color
476         and show parenthesis matching with colors (on match and on
477         errors).
479 2010-10-05  Philippe Brochard  <pbrochard@common-lisp.net>
481         * src/clfswm-internal.lisp (show-all-children): Do not raise a
482         child when its parent is hidden.
484 2010-10-02  Philippe Brochard  <pbrochard@common-lisp.net>
486         * src/clfswm-circulate-mode.lisp (select-next-subchild): Add the
487         possibility to circulate over subchild of the current child.
489         * src/clfswm-expose-mode.lisp (expose-all-windows-mode)
490         (expose-windows-generic): Add an escape-body function to return to
491         the original state on escape key.
493         * src/clfswm-util.lisp (bind-on-slot): Add an optional parameter
494         to bind the current child from the configuration file.
496 2010-10-01  Philippe Brochard  <pbrochard@common-lisp.net>
498         * src/clfswm-nw-hooks.lisp (absorb-window-nw-hook): Absorb new
499         window hook: the frame absorb all new windows that match
500         nw-absorb-test frame data slot.
502 2010-09-30  Philippe Brochard  <pbrochard@common-lisp.net>
504         * src/clfswm-expose-mode.lisp (expose-create-window): Show window
505         title in accel window.
507 2010-09-29  Philippe Brochard  <pbrochard@common-lisp.net>
509         * configure: Use the Xavier Maillard clfswm script in contrib to
510         build an executable in the standard way.
512 2010-09-26  Philippe Brochard  <pbrochard@common-lisp.net>
514         * src/clfswm-expose-mode.lisp (expose-mode-display-accel-windows):
515         New functions. Add a window on each child in the expose mode to
516         quickly select them.
518         * src/clfswm-internal.lisp (child-x, child-y, child-width)
519         (child-height): New methods to get real child coordinates.
521 2010-09-25  Philippe Brochard  <pbrochard@common-lisp.net>
523         * src/clfswm-layout.lisp (*-layout): Use child-position.
525         * src/clfswm-internal.lisp (child-position): New function.
527         * src/clfswm-expose-mode.lisp (expose-windows-mode)
528         (expose-all-windows-mode): Use a generic mode.
530         * src/xlib-util.lisp (with-handle-event-symbol): Use a filled list
531         with handle-event-fun symbols instead of inspecting clfswm
532         internals symbols on each mode change.
534         * src/clfswm-expose-mode.lisp: Move and rename present*-windows in
535         a separate clfswm-expose-mode.lisp file.
537         * src/clfswm-util.lisp (speed-mouse-right, speed-mouse-down): Use
538         screen size instead of hardcoded test coordinates.
540 2010-09-24  Philippe Brochard  <pbrochard@common-lisp.net>
542         * src/clfswm-util.lisp (speed-mouse-reset, speed-mouse-left)
543         (speed-mouse-right, speed-mouse-up, speed-mouse-down)
544         (speed-mouse-undo, speed-mouse-first-history): New functions to
545         quickly move the mouse. Implemented for the second mode.
547 2010-09-16  Philippe Brochard  <pbrochard@common-lisp.net>
549         * contrib/clfswm: Move clfswm sources to $tmp_dir if there is no
550         write permission on $clfswm_asd_path. So anybody can start clfswm
551         even if there is no write permission on the source directory.
553 2010-09-12  Philippe Brochard  <pbrochard@common-lisp.net>
555         * contrib/clfswm: Add support to cmucl, ccl and ecl.
557 2010-09-11  Philippe Brochard  <pbrochard@common-lisp.net>
559         * src/clfswm-util.lisp (set-hide-unmanaged-window)
560         (set-show-unmanaged-window, set-default-hide-unmanaged-window):
561         New functions and menu entry.
562         (set-globally-hide-unmanaged-window)
563         (set-globally-show-unmanaged-window): New functions and menu
564         entry.
566         * src/clfswm-internal.lisp (hide-unmanager-window-p): New
567         function.
568         (show-child): Add a data slot on frame to hide or not unmanaged
569         windows.
571         * src/clfswm-corner.lisp (present-clfswm-terminal)
572         (present-virtual-keyboard): Use a function (generic-present-body)
573         instead of a macro (generate-present-body).
575         * src/clfswm-util.lisp (update-menus): List all directories and
576         subdirectories in $XDG_DATA_DIRS/applications.
578 2010-09-10  Philippe Brochard  <pbrochard@common-lisp.net>
580         * src/clfswm-corner.lisp (generate-present-body): New macro.
581         (present-clfswm-terminal, present-virtual-keyboard): Use
582         generate-present-body.
584 2010-09-09  Philippe Brochard  <pbrochard@common-lisp.net>
586         * src/clfswm-util.lisp (update-menus): Follow XDG specifications
587         instead of the non-portable Debian update-menu.
589 2010-09-07  Philippe Brochard  <pbrochard@common-lisp.net>
591         * src/clfswm.lisp (error-handler): New function do handle
592         asynchronous errors and ignore them.
593         (open-display): Install the new error-handler on display.
595 2010-09-05  Philippe Brochard  <pbrochard@common-lisp.net>
597         * src/xlib-util.lisp (with-xlib-protect): Add a
598         with-simple-restart on top of body execution.
600 2010-09-04  Philippe Brochard  <pbrochard@common-lisp.net>
602         * src/clfswm.lisp (main-loop): Protect all xlib functions with an
603         with-xlib-protect.
605         * src/xlib-util.lisp (handle-event): use with-xlib-protect only in
606         handle-event. Add a with-simple-restart to prevent a
607         clisp/new-lisp infinite loop.
609 2010-08-30  Philippe Brochard  <pbrochard@common-lisp.net>
611         * src/clfswm-corner.lisp (present-clfswm-terminal): Make the
612         clfswm terminal working even on xterm title changes.
614 2010-08-29  Philippe Brochard  <pbrochard@common-lisp.net>
616         * src/clfswm-util.lisp (run-other-window-manager): Update for
617         clisp compatibility.
619         * src/tools.lisp (do-execute): New parameter io to change the
620         input/output method.
622         * src/clfswm-util.lisp (hide-current-child): Prevent from removing
623         the current root.
625         * src/clfswm-internal.lisp (child-member): New predicate.
626         (child-remove): New function.
628         * src/*.lisp: Use child-member and child-remove everywhere it's
629         needed.
631 2010-08-28  Philippe Brochard  <pbrochard@common-lisp.net>
633         * src/clfswm.lisp (main-loop): Ensure that all events have been
634         processed after a process-event.
636         * src/clfswm-internal.lisp (is-in-current-child-p): New function.
638 2010-08-27  Philippe Brochard  <pbrochard@common-lisp.net>
640         * src/clfswm.lisp (main-mode:configure-request): Raise the window
641         only when present on the current child and focus it accordingly.
643 2010-08-26  Philippe Brochard  <pbrochard@common-lisp.net>
645         * src/clfswm-circulate-mode.lisp (circulate-loop-function):
646         Use is-a-key-pressed-p.
648         * src/xlib-util.lisp (is-a-key-pressed-p): New predicate.
650         * src/clfswm-keys.lisp (define-ungrab/grab): Use all values
651         returned by xlib:keysym->keycodes.
653         * src/*.lisp: Use the new child-equal-p to compare children. This
654         prevent a bug with sbcl/cmucl when the standard equal function
655         does not work with xlib:window.
657         * src/clfswm-internal.lisp (child-equal-p): New predicate.
659 2010-08-25  Philippe Brochard  <pbrochard@common-lisp.net>
661         * src/clfswm-generic-mode.lisp (generic-mode): Use an
662         xlib:event-listen before processing event with
663         xlib:process-event. This prevent a bug with CLX threaded
664         implementation like sbcl.
666         * src/clfswm.lisp (main-loop): Use an xlib:event-listen before
667         processing event with xlib:process-event. This prevent a bug with
668         CLX threaded implementation like sbcl.
670 2010-08-17  Philippe Brochard  <pbrochard@common-lisp.net>
672         * contrib/server/key.lisp (ushell-sh): Add ccl and ecl support.
674         * src/xlib-util.lisp (compress-motion-notify): Use a loop instead
675         of an event-case.
677         * src/clfswm-internal.lisp (with-find-in-all-frames): New macro.
678         (find-parent-frame, find-frame-window, find-frame-by-name)
679         (find-frame-by-number): Use with-find-in-all-frames to search in
680         frames in the right order.
682         * src/clfswm-util.lisp (mouse-click-to-focus-generic): Fix an
683         unwanted flickering with unmanaged windows.
685 2010-08-16  Philippe Brochard  <pbrochard@common-lisp.net>
687         * src/package.lisp: Remove event handler hooks as they're not
688         needed anymore (To replace them: use closure and define-handler).
690         * src/xlib-util.lisp (move-window, resize-window)
691         (wait-mouse-button-release): Use a generic mode.
693         * src/*.lisp: Replace the case to handle event with a more (tricky)
694         lispy  method which bind a function to each keywords associated
695         to graphics events.
697 2010-07-23  Philippe Brochard  <pbrochard@common-lisp.net>
699         * src/clfswm-util.lisp (delete-current-child): Invert bindings and
700         menu entry between delete-current-child and remove-current-child.
701         ie: Delete a child and its children in all frames by default.
703 2010-07-21  Philippe Brochard  <pbrochard@common-lisp.net>
705         * src/package.lisp: Add a placement configuration group.
707         * src/binding*.lisp: Bind control+g to escape the current action
708         like emacs.
710         * src/clfswm-internal.lisp
711         (delete-child-and-children-in-all-frames): New function and
712         binding: Second mode - Control+Delete delete the current child and
713         its children in all frames (ie: close the current child and its
714         children).
716 2010-07-20  Philippe Brochard  <pbrochard@common-lisp.net>
718         * src/clfswm-internal.lisp (remove-child-in-frame): Do not destroy
719         the frame window and the frame gc. Close a very annoying bug when
720         cuting/pasting a frame or moving a child over frames with the
721         mouse.
723         * src/clfswm-util.lisp (mouse-click-to-focus-generic): Redisplay
724         all children in *current-root* after moving/resizing a frame.
726 2010-07-18  Philippe Brochard  <pbrochard@common-lisp.net>
728         * src/clfswm-util.lisp (delete-focus-window)
729         (destroy-focus-window): Remove child in parent frame before
730         stopping it.
732 2010-07-16  Philippe Brochard  <pbrochard@common-lisp.net>
734         * src/clfswm-util.lisp (identify-key): Add a timeout in
735         xlib:process-event.
736         (mouse-click-to-focus-generic): Use find-child-under-mouse instead
737         of the window passed by xlib:process-event.
739         * src/xlib-util.lisp (move-window, resize-window)
740         (wait-mouse-button-release): Add a timeout in xlib:process-event.
742 2010-04-11  Philippe Brochard  <pbrochard@common-lisp.net>
744         * src/clfswm-util.lisp (run-other-window-manager): Add the ability
745         to launch an other window manager and to return to clfswm.
747 2010-03-18  Philippe Brochard  <pbrochard@common-lisp.net>
749         * src/clfswm-layout.lisp (set-tile-space-layout): Set default
750         to 1%.
752 2009-12-15  Philippe Brochard  <pbrochard@common-lisp.net>
754         * src/clfswm.lisp (main-loop): Add a *loop-hook* parameter and a
755         loop timeout.
757         * src/clfswm-generic-mode.lisp (generic-mode): Add a loop-hook
758         parameter and a loop timeout.
760 2009-12-05  Philippe Brochard  <pbrochard@common-lisp.net>
762         * src/clfswm.lisp (main): Add an alternate configuration filename
763         parameter.
765         * load.lisp: Add a debuging code example.
767 2009-11-14  Philippe Brochard  <pbrochard@common-lisp.net>
769         * src/clfswm-configuration.lisp (create-configuration-menu): New
770         menu to configure all clfswm variables while clfswm is running.
772 2009-11-12  Philippe Brochard  <pbrochard@common-lisp.net>
774         * src/clfswm-util.lisp (save-configuration-variables): New
775         function to save all configuration variables in clfswmrc.
777 2009-11-11  Philippe Brochard  <pbrochard@common-lisp.net>
779         * src/clfswm-info.lisp (info-mode): Begining of mouse support in
780         info mode.
781         (set-default-info-keys): Add cursor key support in info mode.
783 2009-11-08  Philippe Brochard  <pbrochard@common-lisp.net>
785         * contrib/reboot-halt.lisp: Add a Suspend/Reboot/Halt menu in
786         contrib.
788         * src/clfswm.lisp (main): Add a read-conf-file-p parameter to
789         prevent reading the configuration file (this may be useful to
790         produce the original documentation without user modifications
791         with the rc configuration file).
793 2009-11-07  Philippe Brochard  <pbrochard@common-lisp.net>
795         * src/bindings-second-mode.lisp (set-default-second-keys):
796         Simplification of Escape key to close/kill/remove the focus window
797         and unhide all windows.
799         * src/bindings.lisp (set-default-main-keys): Simplification of
800         Escape key to close/kill/remove the focus window and unhide all
801         windows.
803         * src/clfswm-util.lisp (ask-close/kill-current-window): Add remove
804         focus and unhide all windows capabilities.
806 2009-10-10  Philippe Brochard  <pbrochard@common-lisp.net>
808         * contrib/mpd.lisp (start-gmpc): Add gmpc in the mpd menu.
810 2009-07-29  Philippe Brochard  <pbrochard@common-lisp.net>
812         * src/clfswm-layout.lisp (tile-layout, tile-horizontal-layout):
813         Keep child order and don't make unnecessary child movement.
814         (one-column-layout, one-line-layout): New layouts.
816 2009-06-29  Philippe Brochard  <pbrochard@common-lisp.net>
818         * *: **** Release 0906 ****
820         * contrib/cd-player.lisp: New file to handle the CD player.
822         * contrib/xmms.lisp: New file to handle the xmms player.
824 2009-06-28  Philippe Brochard  <pbrochard@common-lisp.net>
826         * src/clfswm-layout.lisp (set-no-layout-remember-size): New layout:
827         Maximize windows in there frame - Leave frames to there actual
828         size.
830         * src/bindings-second-mode.lisp (set-default-second-keys): Bind
831         "o" on set-open-in-new-frame-in-parent-frame-nw-hook.
833 2009-06-27  Philippe Brochard  <pbrochard@common-lisp.net>
835         * contrib/keyb_fr.lisp: New file to handle an azerty keyboard.
837 2009-06-24  Philippe Brochard  <pbrochard@common-lisp.net>
839         * contrib/mpd.lisp: Use a standard menu.
841         * src/clfswm-info.lisp: Use a standard menu for the help-menu.
843 2009-06-22  Philippe Brochard  <pbrochard@common-lisp.net>
845         * contrib/mpd.lisp: New file to handle the Music Player Daemon (MPD)
847 2009-06-19  Philippe Brochard  <pbrochard@common-lisp.net>
849         * src/clfswm-autodoc.lisp (produce-doc, produce-doc-html): Minor
850         number key cleanup.
852 2009-06-18  Philippe Brochard  <pbrochard@common-lisp.net>
854         * src/config.lisp (get-fullscreen-size):  One pixel adjustment
855         (again).
857         * src/clfswm-placement.lisp (*-child-placement): One pixel
858         adjustment (again).
860 2009-06-16  Philippe Brochard  <pbrochard@common-lisp.net>
862         * src/clfswm-circulate-mode.lisp (draw-circulate-mode-window):
863         Ensure that all characters are printable.
865         * src/config.lisp (get-fullscreen-size): Adjust default fullscreen
866         sizes.
868         * src/clfswm-placement.lisp (*-child-placement): Adjust
869         coordinates to one pixel in the current child.
871 2009-06-04  Philippe Brochard  <pbrochard@common-lisp.net>
873         * src/clfswm-query.lisp (query-enter-function): Assign font before
874         width and height calculation.
876 2009-06-03  Philippe Brochard  <pbrochard@common-lisp.net>
878         * src/xlib-util.lisp (banish-pointer): Use with-placement macro to
879         bannish the pointer in an arbitrary place.
881         * src/clfswm-info.lisp (info-mode): Use with-placement macro to
882         place the info window in an arbitrary place.
884         * src/clfswm-query.lisp (query-enter-function): Use with-placement
885         macro to place the query window in an arbitrary place.
887         * src/clfswm-placement.lisp: New file. Allow to place info windows
888         or query windows on an arbitrary place. Allow to bannish the
889         pointer on an arbitrary place.
891 2009-05-16  Philippe Brochard  <pbrochard@common-lisp.net>
893         * src/clfswm-circulate-mode.lisp (reorder-child)
894         (reorder-brother): Unfocus windows before reordering children or
895         brothers.
897 2009-05-13  Philippe Brochard  <pbrochard@common-lisp.net>
899         * src/clfswm-circulate-mode.lisp (reorder-brother): Ensure that
900         the parent is a frame.
902         * src/clfswm-second-mode.lisp (sm-handle-motion-notify): Handle
903         motion with a default modifier.
905         * src/clfswm.lisp (handle-motion-notify): Handle motion with a
906         default modifier.
908         * src/clfswm-info.lisp (info-mode): Handle motion with a default
909         modifier.
910         (info-mode): Optimization in loop function.
912 2009-05-10  Philippe Brochard  <pbrochard@common-lisp.net>
914         * src/clfswm-circulate-mode.lisp (reorder-brother): Handle
915         root-frame correctly.
917         * clfswm.asd: Dependency fix for clfswm-generic-mode.
919         * src/clfswm-circulate-mode.lisp (reorder-child)
920         (reorder-brother): Handle empty frames.
921         (reorder-brother): Redisplay only the parent frame of the  current
922         child.
924         * src/clfswm-util.lisp (frame-toggle-maximize): Redisplay only the
925         parent frame of the  current frame.
927 2009-05-09  Philippe Brochard  <pbrochard@common-lisp.net>
929         * src/clfswm-util.lisp (frame-toggle-maximize): New function:
930         Maximize/Unmaximize the current frame in its parent frame.
932         * src/clfswm-layout.lisp (maximize-layout): New layout: Maximize
933         windows and frames in there parent frame.
935 2009-05-05  Philippe Brochard  <pbrochard@common-lisp.net>
937         * src/*.lisp: Add support for Clozure Common Lisp (CCL).
939         * src/clfswm-circulate-mode.lisp (reorder-child)
940         (reorder-brother): Reinitialise on circulate type change
941         child to brother or brother to child.
943         * src/*.lisp (*): Use map-window instead of xlib:map-window. So
944         calls xlib:display-finish-output on each map-request. So speed up
945         the window display.
947         * src/xlib-util.lisp (map-window): New function. Call
948         xlib:display-finish-output on each map request.
950 2009-04-28  Philippe Brochard  <pbrochard@common-lisp.net>
952         * src/clfswm-second-mode.lisp (sm-handle-motion-notify):
953         Optimisation when drawing second mode window.
955 2009-04-27  Philippe Brochard  <pbrochard@common-lisp.net>
957         * src/clfswm-circulate-mode.lisp (circulate-mode): Optimisation in
958         window redraw.
960 2009-04-22  Philippe Brochard  <pbrochard@common-lisp.net>
962         * src/clfswm-util.lisp (run-program-from-query-string): Launch
963         command only with a return validation.
965 2009-04-22  Xavier Maillard  <xma@gnu.org>
967         * src/clfswm-query.lisp (query-string): Use a generic mode.
969 2009-04-19  Xavier Maillard  <xma@gnu.org>
971         * src/clfswm-info.lisp (info-mode): Use generic-mode for info-mode.
973 2009-04-18  Xavier Maillard  <xma@gnu.org>
975         * src/clfswm-generic-mode.lisp (generic-mode): Add a generic mode
976         to define all other modes.
978 2009-04-05  Philippe Brochard  <pbrochard@common-lisp.net>
980         * src/package.lisp (): Use *default-font-string* for all
981         font-string.
983         * src/clfswm-info.lisp (info-mode): Ensure integer windows size.
985 2009-02-17  Philippe Brochard  <pbrochard@common-lisp.net>
987         * src/xlib-util.lisp (null-size-window-p): Better check of null
988         sized windows.
990 2009-02-14  Philippe Brochard  <pbrochard@common-lisp.net>
992         * src/clfswm.lisp (handle-map-request): Add a fix to manage
993         correctly fullscreen windows (SDL particularly).
995 2008-12-20  Philippe Brochard  <pbrochard@common-lisp.net>
997         * src/xlib-util.lisp (get-color): Allocate colors only once -> fix
998         a segfault with clisp/new-clx.
1000         * src/clfswm.lisp (handle-motion-notify): Add a needed window
1001         argument.
1003         * src/clfswm-second-mode.lisp (sm-handle-motion-notify): Add a
1004         needed window argument.
1006 2008-10-30  Philippe Brochard  <pbrochard@common-lisp.net>
1008         * src/xlib-util.lisp (wait-no-key-or-button-press)
1009         (wait-a-key-or-button-press): Check buttons press/release correctly"
1011 2008-10-28  Philippe Brochard  <pbrochard@common-lisp.net>
1013         * src/menu-def.lisp: Add children navigation menu in the movement
1014         menu (select next/previous child/brother/level).
1016 2008-10-26  Philippe Brochard  <pbrochard@common-lisp.net>
1018         *  *: Rename 'sister' frame to 'brother' frame.
1020         * src/clfswm-keys.lisp (unalias-modifiers): Convert a modifier
1021         alias in a real modifier.
1023         * src/package.lisp (*modifier-alias*): New list of modifier alias
1024         For example: :alt is :mod-1, :numlock is :mod-2...
1026         * src/tools.lisp (remove-hook): New function.
1028         * src/clfswm-keys.lisp (with-capslock, without-capslock)
1029         (with-numlock, without-cnumlock): New functions.
1031 2008-10-25  Philippe Brochard  <pbrochard@common-lisp.net>
1033         * src/clfswm-info.lisp: Use the *binding-hook* to create info
1034         keys and mouse bindings.
1036         * src/bindings-second-mode.lisp: Use the *binding-hook* to create
1037         second keys and mouse bindings.
1039         * src/bindings.lisp: Use the *binding-hook* to create main keys
1040         and mouse bindings.
1042 2008-10-10  Philippe Brochard  <pbrochard@common-lisp.net>
1044         * src/clfswm-menu.lisp (open-menu): Remember parent menu to undo
1045         menu opening.
1047 2008-10-09  Philippe Brochard  <pbrochard@common-lisp.net>
1049         * src/menu-def.lisp: Use a menu instead of a function for the
1050         standard menu.
1052 2008-10-08  Philippe Brochard  <pbrochard@common-lisp.net>
1054         * src/clfswm-util.lisp (show-standard-menu): Display the standard
1055         menu from the 'update-menus' command.
1057 2008-10-07  Philippe Brochard  <pbrochard@common-lisp.net>
1059         * src/clfswm-query.lisp (query-string): Do not ungrab keyboard if
1060         it's already grabbed.
1062         * src/clfswm-internal.lisp (display-frame-info): Use configurable
1063         colors and fix a bug with background.
1064         (display-frame-info): Set window background when displaying info.
1066 2008-10-06  Philippe Brochard  <pbrochard@common-lisp.net>
1068         * src/xlib-util.lisp (my-character->keysyms): Use a macro to avoid
1069         warning with clisp/new-clx.
1071 2008-10-04  Philippe Brochard  <pbrochard@common-lisp.net>
1073         * src/clfswm-util.lisp (jump-to-slot): Prevent to jump on a
1074         deleted child.
1076 2008-09-23  Philippe Brochard  <pbrochard@common-lisp.net>
1078         * *: **** Release 0809 ****
1080 2008-09-23  Philippe Brochard  <pbrochard@common-lisp.net>
1082         * src/clfswm-util.lisp (ensure-unique-name): New function and menu
1083         entry.
1084         (ensure-unique-number): New function and menu entry.
1086 2008-09-22  Philippe Brochard  <pbrochard@common-lisp.net>
1088         * src/clfswm-nw-hooks.lisp (named-frame-nw-hook): New new window
1089         hook: open the next window in a named frame.
1090         (numbered-frame-nw-hook): New new window hook: open the next
1091         window in a numbered frame.
1093         * src/clfswm-query.lisp (query-string): Grab the keyboard in all
1094         cases. So query-string can be called even in the main mode.
1096         * src/clfswm-internal.lisp (show-all-children): Do not raise a
1097         child by default => far less flickering.
1099 2008-09-19  Philippe Brochard  <pbrochard@common-lisp.net>
1101         * src/bindings-second-mode.lisp: Bind "t" to tile-current-frame.
1103         * src/menu-def.lisp: Change key binding for the CLFSWM menu
1104         entry.
1106         * src/xlib-util.lisp (xgrab-pointer): Handle the case where cursor
1107         is nil. (workaround on some CLX implementation).
1109 2008-09-12  Philippe Brochard  <pbrochard@common-lisp.net>
1111         * src/menu-def.lisp: Add a menu to set a focus policy for all
1112         frames.
1114         * src/clfswm-util.lisp (set-focus-policy-generic-for-all)
1115         (all-frames-set-*-focus-policy): Set a focus policy for all
1116         frames.
1118         * src/clfswm.lisp (handle-enter-notify): sloppy-select
1119         mode. Select a child and its parents on mouse over.
1121 2008-09-03  Philippe Brochard  <pbrochard@common-lisp.net>
1123         * src/clfswm.lisp (handle-enter-notify): Add a sloppy strict focus
1124         policy -> Sloppy focus only for windows in the current frame.
1125         (main-unprotected): Exit clfswm on init error (ie: when another
1126         window manager is running).
1128         * src/clfswm-util.lisp (reset-clfswm): New function.
1130 2008-09-02  Philippe Brochard  <pbrochard@common-lisp.net>
1132         * src/clfswm-menu.lisp (init-menu): New function.
1134         * src/clfswm-util.lisp (reload-clfswm): New function to reload
1135         CLFSWM.
1136         (exit-clfswm): Rename quit-clfswm to exit-clfswm.
1138         * src/clfswm.lisp (main, main-unprotected): Handle error in a
1139         superior main function. Now CLFSWM can't break the X session. It
1140         just reinitialize the display and run a new main loop.
1142         * src/clfswm-corner.lisp: Make *clfswm-terminal* and
1143         *vt-keyboard-on* global to avoid warnings when loading clfswm.
1145         * src/clfswm-layout.lisp: Add a specific GIMP layout menu.
1146         (help-on-gimp-layout): Describe how to use the GIMP layout.
1148 2008-09-01  Philippe Brochard  <pbrochard@common-lisp.net>
1150         * src/clfswm-layout.lisp (set-gimp-layout): Change the layout to
1151         main-window-right-layout. Change the keybinding for (shift)alt+tab
1152         to not select windows in the main window lisst.
1153         Bind F8 to add a window in the main window list.
1154         Bind F9 to remove a window in the main window list.
1155         Change the focus policy to :sloppy.
1156         (set-previous-layout): Restore the previous layout, keybinding and
1157         focus policy.
1159 2008-08-31  Philippe Brochard  <pbrochard@common-lisp.net>
1161         * src/clfswm-menu.lisp (add-menu-comment): Add comments in menu.
1163         * src/clfswm-layout.lisp (main-window-left-layout)
1164         (main-window-bottom-layout, main-window-top-layout): New
1165         functions.
1166         Factorize layouts in menu.
1168 2008-08-30  Philippe Brochard  <pbrochard@common-lisp.net>
1170         * src/clfswm-layout.lisp (main-window-right-layout): A possible
1171         GIMP layout: one or more main windows on one side of the
1172         frame. Others on the other size.
1174         * src/clfswm-util.lisp
1175         (current-frame-set-click/sloppy-focus-policy): Each frame can have
1176         a different focus policy (one of :click or :sloppy).
1177         The default focus policy is set with *default-focus-policy*.
1179 2008-08-23  Philippe Brochard  <pbrochard@common-lisp.net>
1181         * src/clfswm-info.lisp (show-config-variable): New function.
1183 2008-08-19  Philippe Brochard  <pbrochard@common-lisp.net>
1185         * src/clfswm-layout.lisp (tile-horizontal-layout): New layout.
1187         * src/clfswm-info.lisp: Colored help for key binding and corners
1188         actions.
1190 2008-08-18  Philippe Brochard  <pbrochard@common-lisp.net>
1192         * src/clfswm-util.lisp (delete-focus-window)
1193         (destroy-focus-window): Remove chid only in
1194         handle-unmap/destroy-notify. Focus *current-root* only when
1195         closing/killing the current child.
1197         * src/clfswm-autodoc.lisp (produce-corner-*-doc): New autodoc
1198         functions or corners.
1200 2008-08-17  Philippe Brochard  <pbrochard@common-lisp.net>
1202         * src/clfswm-corner.lisp (present-clfswm-terminal): New corner
1203         action: Hide/Unhide a terminal on mouse corner action. (By default
1204         right mouse button on the top left corner).
1206         * src/config.lisp (*never-managed-window-list*): New config
1207         variable.
1209         * src/clfswm-internal.lisp (never-managed-window-p): New function:
1210         Handle never managed window in a more simple way.
1212         * src/clfswm-corner.lisp: New file and new and more simple method
1213         to define corners actions.
1215 2008-08-15  Philippe Brochard  <pbrochard@common-lisp.net>
1217         * src/clfswm-info.lisp (info-mode): Info line can now be colored.
1219         * src/clfswm-layout.lisp (fast-layout-switch)
1220         (define-fast-layout-switch): New functions: Switch between two
1221         layouts.
1223         * src/clfswm-second-mode.lisp (leave-second-mode): Takes care if
1224         really in the second mode. So leave-second-mode can be used even
1225         in the main mode.
1227         * src/clfswm-util.lisp (switch-to-last-child): New function:
1228         Store the current child and switch to the previous one.
1230 2008-07-16  Philippe Brochard  <pbrochard@common-lisp.net>
1232         * src/clfswm-util.lisp (display-current-window-info): Display the
1233         window id.
1234         (have-to-present-virtual-keyboard): Add a virtual keyboard corner
1235         (top right by default). By default 'xvkbd' is used.
1237 2008-06-28  Philippe Brochard  <pbrochard@common-lisp.net>
1239         * src/xlib-util.lisp (move-window, resize-window): Compress motion
1240         events.
1242         * src/clfswm.lisp (handle-motion-notify): Compress motion events.
1244         * src/clfswm-second-mode.lisp (sm-handle-motion-notify): Compress
1245         motion events.
1247         * src/clfswm-info.lisp (info-mode): Compress motion events.
1249 2008-06-21  Philippe Brochard  <pbrochard@common-lisp.net>
1251         * src/clfswm-internal.lisp (show-all-children): Compute geometry
1252         and selection first and then show only necessary children.
1253         (show-child): remove unneeded display-p parameter.
1255         * src/config.lisp (get-fullscreen-size): Place the frame border
1256         outside the screen (this prevent the loose of 2 pixels per
1257         directions :)
1259 2008-06-12  Philippe Brochard  <pbrochard@common-lisp.net>
1261         * src/clfswm-internal.lisp (focus-child): Algorithm change to
1262         raise only the selected child.
1264 2008-06-08  Philippe Brochard  <pbrochard@common-lisp.net>
1266         * src/clfswm-internal.lisp (raise-p-list, show-all-children):
1267         Raise only viewable children.
1269 2008-06-06  Philippe Brochard  <pbrochard@common-lisp.net>
1271         * src/clfswm-internal.lisp (show-all-children): Always raise all
1272         displayed children. Remove all references to raise-p.
1274 2008-06-04  Philippe Brochard  <pbrochard@common-lisp.net>
1276         * src/menu-def.lisp (child-menu): New menu entry on raise/lower
1277         child in its frame.
1279         * src/bindings-second-mode.lisp ("Page_Down", "Page_Up"): New
1280         second mode binding on raise/lower child in its frame.
1282         * src/clfswm-nw-hooks.lisp (leave-focus-frame-nw-hook): Adapt
1283         behaviour to the new raise/lower property.
1284         Call clear-nw-hook before the rest of the hook.
1286         * src/bindings.lisp (mouse-click-to-focus-and-move-window)
1287         (mouse-click-to-focus-and-resize-window): Stop button event. This
1288         prevent a keyboard/pointer freeze.
1290 2008-06-03  Philippe Brochard  <pbrochard@common-lisp.net>
1292         * src/clfswm-internal.lisp (frame-lower-child)
1293         (frame-raise-child): New functions to raise/lower a child in its
1294         frame.
1296         * src/clfswm-util.lisp (have-to-present-windows)
1297         (have-to-present-all-windows): New functions to have an MaxOS
1298         expose like on mouse click in screen corner.
1300         * src/clfswm-info.lisp ("Page_Down", "Page_Up"): Add boundaries.
1302 2008-05-30  Philippe Brochard  <pbrochard@common-lisp.net>
1304         * src/clfswm-util.lisp (unhide-a-child-from-all-frames): Unhide a
1305         child from a choice in all frames with hidden children.
1307         * src/clfswm-info.lisp (info-mode-menu): Handle separators.
1309 2008-05-28  Philippe Brochard  <pbrochard@common-lisp.net>
1311         * src/clfswm-util.lisp (hide-current-child, unhide-a-child)
1312         (unhide-all-children): New functions.
1314         * src/clfswm-info.lisp (info-mode-menu): Handle symbols and
1315         functions.
1317         * src/clfswm-util.lisp (hide/show-frame-window): new function and
1318         menu item.
1320 2008-05-23  Philippe Brochard  <pbrochard@common-lisp.net>
1322         * src/clfswm-util.lisp (rename-current-child): Do not display the
1323         frame info for a window.
1325 2008-05-20  Philippe Brochard  <pbrochard@common-lisp.net>
1327         * src/clfswm-internal.lisp (remove-child-in-frame): Destroy the
1328         frame window for the removed child and its children.
1330 2008-05-18  Philippe Brochard  <pbrochard@common-lisp.net>
1332         * src/clfswm-autodoc.lisp (produce-*-doc-*): Add a note to use the
1333         autodoc functions.
1335 2008-05-17  Philippe Brochard  <pbrochard@common-lisp.net>
1337         * src/clfswm-nw-hooks.lisp (default-frame-nw-hook): Do not handle
1338         the ROX pinboard (ie: leave it lowered in the root window as
1339         expected).
1341         * src/clfswm-layout.lisp (tile-left-space-layout): New layout.
1342         (tile-left-layout, tile-right-layout, tile-top-layout)
1343         (tile-bottom-layout): Use all the frame space when there is only
1344         one child.
1346         * src/clfswm-internal.lisp (place-window-from-hints): Center
1347         unmanaged windows in the root screen.
1349         * src/clfswm-nw-hooks.lisp (clear-nw-hook, clear-all-nw-hooks):
1350         new functions.
1352 2008-05-15  Philippe Brochard  <pbrochard@common-lisp.net>
1354         * src/clfswm-util.lisp (current-frame-manage-window-type): Fix a
1355         typo in managed types.
1357         * src/clfswm-internal.lisp (show-child): Always display frame info
1358         even if the frame is hidden.
1360         * src/xlib-util.lisp (resize-window): Use a better algorithme to
1361         resize windows.
1363 2008-05-13  Philippe Brochard  <pbrochard@common-lisp.net>
1365         * src/clfswm-util.lisp (with-movement): Display frame info for all
1366         frames in current root.
1368 2008-05-12  Philippe Brochard  <pbrochard@common-lisp.net>
1370         * src/*.lisp: Rename 'brother' frames to 'sister' frames.
1372         * src/bindings-second-mode.lisp (define-second-key #\a): New
1373         binding on 'add-default-frame'.
1375         * src/clfswm-autodoc.lisp (produce-*-doc-*-in-file): Show a
1376         message to follow the autodocumentation process.
1378 2008-05-10  Philippe Brochard  <pbrochard@common-lisp.net>
1380         * src/clfswm-util.lisp (bind-or-jump): Bind "Tab", "Return" and
1381         "Space" to jump to a child. "B" to bind a slot on the current
1382         child.
1384         * src/bindings-second-mode.lisp: Use "Tab" instead of
1385         "Iso_Left_Tab".
1387 2008-05-07  Philippe Brochard  <pbrochard@common-lisp.net>
1389         * src/clfswm-util.lisp (find-child-under-mouse): Take care of
1390         unmanaged (hidden) windows.
1392         * src/clfswm-internal.lisp (place-window-from-hints): Give a
1393         minimal size for windows.
1394         (with-all-windows-frames-and-parent): New function.
1396         * src/config.lisp (*default-window-width/height*): New parameters.
1398         * src/clfswm-internal.lisp (place-window-from-hints): Center
1399         windows in the screen instead of in there frame.
1401         * src/bindings-second-mode.lisp (tile-space-current-frame): New
1402         binding on C-t.
1404         * src/clfswm-layout.lisp (register-layout): Intern the once name
1405         in the right package.
1407 2008-05-05  Philippe Brochard  <pbrochard@common-lisp.net>
1409         * doc/dot-clfswmrc: Update to  follow the new clfswm way.
1411 2008-05-03  Philippe Brochard  <pbrochard@common-lisp.net>
1413         * src/clfswm-internal.lisp (set-current-child)
1414         (adapt-child-to-parent, show-child, hide-child): Handle the case
1415         where child is not a frame or a window.
1417         * src/clfswm-util.lisp
1418         (mouse-click-to-focus-generic,mouse-focus-move/resize-generic):
1419         Check if child is a frame.
1421         * src/clfswm-internal.lisp (managed-window-p): Handle the case
1422         where frame is null.
1423         (place-frame): Check if frame and parent are frames.
1425         * src/clfswm-info.lisp (info-mode): display all frame info before
1426         leaving.
1428         * src/clfswm-second-mode.lisp (second-key-mode): display all frame
1429         info before leaving.
1431         * src/clfswm-internal.lisp (display-all-frame-info): New function.
1433 2008-05-02  Philippe Brochard  <pbrochard@common-lisp.net>
1435         * src/tools.lisp (getenv): Implemented for ECL.
1436         (urun-prog): Implemented for ECL.
1438         * src/clfswm-util.lisp (identify-key): Use a double buffer to
1439         display text.
1441         * src/clfswm-query.lisp (query-string): Use a double buffer to
1442         display text.
1444         * src/clfswm-info.lisp (draw-info-window): Use a double buffer to
1445         display text.
1447         * src/xlib-util.lisp (clear-pixmap-buffer, copy-pixmap-buffer):
1448         New functions.
1450 2008-05-01  Philippe Brochard  <pbrochard@common-lisp.net>
1452         * src/clfswm-info.lisp (info-mode): Add boundaries in the info mode window.
1454         * src/menu-def.lisp: New file: move all menu definition in
1455         menu-def.lisp.
1457         * src/clfswm-layout.lisp (register-layout): Use a function instead
1458         of a macro.
1460 2008-04-30  Philippe Brochard  <pbrochard@common-lisp.net>
1462         * src/clfswm-autodoc.lisp (produce-menu-doc,
1463         (produce-menu-doc-html): New functions.
1464         (produce-doc-*): Moved to clfswm-autodoc.lisp.
1466         * src/clfswm-util.lisp (paste-selection-no-clear): Prevent to
1467         paste a child on one of its own children. (this prevent a
1468         recursive bug).
1469         (move-child-to): Rename move/copy-current-child-by to
1470         move/copy-child-to.
1471         (mouse-move-window-over-frame): New function to move the window
1472         under the mouse cursor to another frame.
1474         * src/clfswm-internal.lisp (find-child-in-parent): New function.
1476 2008-04-29  Philippe Brochard  <pbrochard@common-lisp.net>
1478         * src/clfswm-internal.lisp (show-all-children): Display unmanaged
1479         windows only when its window parent is the current child.
1481 2008-04-28  Philippe Brochard  <pbrochard@common-lisp.net>
1483         * src/clfswm-util.lisp (manage-current-window)
1484         (unmanage-current-window): New functions: Allow to force to manage
1485         or unmanage a window by its parent frame.
1487         * src/bindings-second-mode.lisp (#\o): binded to
1488         set-open-in-new-frame-in-parent-frame-nw-hook and
1489         (#\o :control) to set-open-in-new-frame-in-root-frame-nw-hook
1491         * src/clfswm-util.lisp (with-current-window): New macro.
1493         * src/xlib-util.lisp (move-window, resize-window): Remove uneeded
1494         exposure and enter-window handle event.
1496         * src/clfswm-util.lisp (move-frame, resize-frame): Show all
1497         children for the current child after the move/resize.
1499 2008-04-27  Philippe Brochard  <pbrochard@common-lisp.net>
1501         * src/xlib-util.lisp (resize-window): Take care of window size
1502         hints.
1504         * src/clfswm-util.lisp (mouse-focus-move/resize-generic): Allow to
1505         move/resize unmanaged windows.
1507         * src/xlib-util.lisp (move-window, resize-window): New functions.
1509 2008-04-25  Philippe Brochard  <pbrochard@common-lisp.net>
1511         * src/clfswm-util.lisp (current-frame-manage-window-type): Let the
1512         user choose what window type the current frame must handle.
1513         (display-current-window-info): New function.
1514         (current-frame-manage-all-window-type)
1515         (current-frame-manage-only-normal-window-type)
1516         (current-frame-manage-no-window-type): New functions.
1518         * src/clfswm-internal.lisp (managed-window-p): New function.
1520         * src/package.lisp (frame): Managed type: new frame
1521         parameter. This allow to choose what window type a frame must
1522         handle.
1524         * src/*.lisp: Rename all 'father' occurrences to 'parent'.
1526         * src/clfswm-nw-hooks.lisp
1527         (open-in-new-frame-in-parent-frame-nw-hook): New new window hook.
1529         * src/clfswm-util.lisp (adapt-current-frame-to-window-hints): New
1530         function.
1532         * src/tools.lisp (ensure-printable): Return always a string even
1533         with a null string.
1535 2008-04-24  Philippe Brochard  <pbrochard@common-lisp.net>
1537         * src/config.lisp (*default-nw-hook*): New variable to change the
1538         default new window hook.
1540 2008-04-22  Philippe Brochard  <pbrochard@common-lisp.net>
1542         * clfswm.asd (clfswm): Add a dependency from
1543         clfswm-second-mode.lisp to clfswm.lisp.
1545         * src/clfswm-util.lisp (identify-key): Show the documentation for
1546         the function bound on a key.
1547         (with-movement): Move with-movement,
1548         current-frame-fill/pack/resize-*  from bindings-second-mode.lisp
1549         to clfswm-util.lisp.
1551         * src/clfswm-menu.lisp: New menu system that let user change keys
1552         or functions associated to keys.
1554 2008-04-18  Philippe Brochard  <pbrochard@common-lisp.net>
1556         * src/clfswm-internal.lisp (show-all-children): Display-child is
1557         the first child by default. Solve a bug with father-p.
1559 2008-04-17  Philippe Brochard  <pbrochard@common-lisp.net>
1561         * src/clfswm-internal.lisp (add-frame): Add frame return the
1562         created frame.
1563         (show-all-children): Move the size computation outside the
1564         show-child part.
1566         * src/bindings-second-mode.lisp (with-movement): Redisplay only
1567         the current child.
1569         * src/clfswm-util.lisp (mouse-click-to-focus-generic): Redisplay
1570         only the current child.
1572         * src/clfswm-internal.lisp (show-all-children): New display-child
1573         parameter to display only the desired child and its children.
1574         (select-next/previous-child): Only display the current child.
1576 2008-04-14  Philippe Brochard  <pbrochard@common-lisp.net>
1578         * src/clfswm.lisp (init-display): Move the default frame creation
1579         on the default init hook.
1581         * src/clfswm-keys.lisp (define-ungrab/grab): Handle all keysyms in
1582         the main mode (for example: "1" on an azerty keyboard).
1584 2008-04-13  Philippe Brochard  <pbrochard@common-lisp.net>
1586         * src/clfswm-keys.lisp (find-key-from-code): Better handle of
1587         keysyms. Revert to old grabbing method for the main mode.
1589 2008-04-12  Philippe Brochard  <pbrochard@common-lisp.net>
1591         * src/clfswm.lisp (init-display): Add key handling on no focus
1592         window and on frame windows.
1594 2008-04-11  Philippe Brochard  <pbrochard@common-lisp.net>
1596         * src/clfswm.lisp (main): Keyboard handle strategie change: Grab
1597         all keys by default and replay just what is needed. No change for
1598         the second mode.
1600         * src/clfswm-keys.lisp: remove grab/ungrab main keys.
1601         (find-key-from-code): Test for shift and not shift presence.
1603 2008-04-09  Philippe Brochard  <pbrochard@common-lisp.net>
1605         * src/clfswm-internal.lisp (switch-to-root-frame): show later -
1606         new key parameter to have less flickering.
1608 2008-04-07  Philippe Brochard  <pbrochard@common-lisp.net>
1610         * src/bindings-second-mode.lisp (frame-layout-once-menu): Set the
1611         layout only one time and revert to no-layout to freely handle
1612         frames.
1614         * src/clfswm-nw-hooks.lisp
1615         (open-in-new-frame-in-root-frame-nw-hook): Tile layout with spaces
1616         with new created window.
1618         * src/clfswm-layout.lisp (register-layout): Now register
1619         automatically a once layout to set the layout only one time and
1620         revert to no-layout to freely handle frames.
1622 2008-04-05  Philippe Brochard  <pbrochard@common-lisp.net>
1624         * src/clfswm-nw-hooks.lisp (leave-focus-frame-nw-hook): New
1625         nw-hook: Open the next window in the current frame and leave the
1626         focus to the current child.
1628 2008-04-04  Philippe Brochard  <pbrochard@common-lisp.net>
1630         * src/bindings-second-mode.lisp: Add keys definitions to
1631         bind-or-jump in the second mode.
1633         * src/clfswm-util.lisp (bind-or-jump): remove the auto-defining
1634         macro for bind-or-jump-(1|2|3...).
1636         * src/clfswm-keys.lisp (define-define-key/mouse): Allow additional
1637         arguments to function. This allow to do things like:
1638         (define-main-key (key) 'my-function 10 20 'foo) -> 10 20 and 'foo
1639         are passed to my-function on key press.
1641 2008-04-03  Philippe Brochard  <pbrochard@common-lisp.net>
1643         * src/clfswm-util.lisp (bind-or-jump): New (great) function.
1645 2008-04-02  Philippe Brochard  <pbrochard@common-lisp.net>
1647         * src/clfswm-internal.lisp (child-fullname): New function
1649         * src/clfswm-info.lisp (info-mode-menu): Add an explicit optional
1650         docstring in info-mode-menu. An item can be
1651         '((key function) (key function)) or with docstring
1652         '((key function "documentation 1") (key function "bla bla") (key function))
1654         * src/tools.lisp (ensure-n-elems): New function.
1656         * src/bindings-second-mode.lisp: Bind Alt+mouse-1/3 to move or
1657         resize a frame or the window's father.
1659         * src/clfswm.lisp (init-display): Remove tile-space-layout by
1660         default on the root frame.
1662         * src/clfswm-util.lisp (move/resize-frame): Add standard event
1663         hooks handlers (map-request, configure-notify...)
1665         * src/clfswm-internal.lisp (adapt-child-to-father): Limit minimal
1666         child size to 1x1.
1668 2008-04-01  Philippe Brochard  <pbrochard@common-lisp.net>
1670         * src/bindings.lisp: Bind Alt+mouse-1/3 to move or resize a frame
1671         or the window's father.
1673         * src/clfswm-util.lisp (mouse-click-to-focus-generic): Stop button
1674         event only if there is a geometry change.
1675         (mouse-focus-move/resize-generic): Generic function to move or
1676         resize a frame or a window father frame.
1678 2008-04-01  Philippe Brochard  <pbrochard@common-lisp.net>
1680         * src/clfswm-internal.lisp (show-all-children): Return t if there
1681         is a geometry change.
1683 2008-03-30  Philippe Brochard  <pbrochard@common-lisp.net>
1685         * src/bindings.lisp (Up/Down): Swap select previous/next level.
1687         * src/bindings-second-mode.lisp (Up/Down): Swap select previous/next level.
1689         * src/clfswm.lisp (init-display): Create a default frame in the root frame.
1691         * src/clfswm-internal.lisp (place-frame): Place frame from real (pixel) coordinates.
1692         (with-all-*): Reverse the child list to manage the first child last (like in
1693         show-all-children).
1695         * src/config.lisp (*create-frame-on-root*): New variable: Create a new frame on the
1696         root window only if true.
1698         * src/clfswm-util.lisp (mouse-click-to-focus-generic): Create a new frame on the
1699         root window only if *create-frame-on-root* is true.
1701         * src/bindings-second-mode.lisp (sm-mouse-click-to-focus-generic): Create a new frame
1702         on the root window.
1704 2008-03-29  Philippe Brochard  <pbrochard@common-lisp.net>
1706         * src/bindings-second-mode.lisp (sm-mouse-click-to-focus-generic): Focus, move and resize
1707         the current child (even if it's a window).
1709 2008-03-28  Philippe Brochard  <pbrochard@common-lisp.net>
1711         * src/clfswm-util.lisp (mouse-click-to-focus-and-move)
1712         (mouse-click-to-focus-and-resize): New functions.
1714         * src/clfswm-internal.lisp (*-fl->px): Convert float coordinates to pixel.
1715         (*-px->fl): Convert pixel coordinates to float.
1717         * src/tools.lisp (call-hook): Move call-hook to tools.lisp.
1719 2008-03-27  Philippe Brochard  <pbrochard@common-lisp.net>
1721         * src/clfswm-layout.lisp (no-layout): Use :first-only to raise only the
1722         first child.
1724         * src/clfswm-internal.lisp (hide-all): Split hide-all-children in hide-all
1725         and hide-all-children.
1726         (raise-if-needed): New function.
1727         (show-child): Use a first-p parameter to raise windows only when they are
1728         first child.
1730 2008-03-26  Philippe Brochard  <pbrochard@common-lisp.net>
1732         * src/clfswm-internal.lisp (select-next/previous-level): Don't use show-all-children
1733         -> less flickering.
1735 2008-03-25  Philippe Brochard  <pbrochard@common-lisp.net>
1737         * src/clfswm-info.lisp (keys-from-list): new function.
1739         * src/*: rename 'childs' in 'children'.
1741         * src/*: rename 'group' in 'frame'.
1743 2008-03-22  Philippe Brochard  <pbrochard@common-lisp.net>
1745         * src/clfswm-pack.lisp (explode-group/explode-current-group): new functions.
1747 2008-03-21  Philippe Brochard  <pbrochard@common-lisp.net>
1749         * src/clfswm-pack.lisp: Pack, Fill, Resize functions.
1751 2008-03-16  Philippe Brochard  <pbrochard@common-lisp.net>
1753         * src/clfswm-nw-hooks.lisp: Register system for new window hooks.
1754         Bind control+o to open the next window in a new group in the root group
1755          (as open in next window in a new workspace in 0801 version).
1757 2008-03-15  Philippe Brochard  <pbrochard@common-lisp.net>
1759         * src/clfswm-util.lisp (show/hide-all-groups-info/key): Show/hide all groups info
1760         window.
1762 2008-03-14  Philippe Brochard  <pbrochard@common-lisp.net>
1764         * bindings-second-mode.lisp ("ISO_Left_Tab"): Use ISO_Left_Tab
1765         instead of Tab for select-previous-child.
1767 2008-03-13  Philippe Brochard  <pbrochard@common-lisp.net>
1769         * clfswm-util.lisp (force-window-in-group/force-window-center-in-group):
1770         new functions.
1772 2008-03-11  Philippe Brochard  <pbrochard@common-lisp.net>
1774         * clfswm-util.lisp (identify-key): Display the documentation
1775         associated to keys when identifying a key.
1777 2008-03-10  Xavier Maillard  <xma@gnu.org>
1779         * contrib/clfswm: Complete rewrite of the script. Detect error and
1780         act accordingly. Add command line arguments to configure the
1781         script execution. User can now choose different common lisp
1782         implementation (clisp and sbcl only), choose where to store the
1783         dumped image, where to find clfswm source.
1785 2008-03-09  Philippe Brochard  <pbrochard@common-lisp.net>
1787         * clfswm-internal.lisp (process-new-window): Beginning of new
1788         window hook: each group have a hook to tell what he wants to do
1789         with the new created window.
1791 2008-03-08  Xavier Maillard  <xma@gnu.org>
1793         * contrib/clfswm: New script. Dump a CLISP image of CLFSWM then
1794         call the resulting executable.
1796         * clfswm.lisp (read-conf-file): Check for the user config file in
1797         XDG_CONFIG_HOME *first*. Freedesktop.org standards should be
1798         prefered whenever possible.
1800 2008-02-27  Philippe Brochard  <pbrochard@common-lisp.net>
1802         * clfswm-layout.lisp (*-layout): Add an optional raise-p
1803         parameter in each layout.
1805 2008-02-26  Philippe Brochard  <pbrochard@common-lisp.net>
1807         * clfswm-util.lisp (copy/cut-current-child): Does not affect the
1808         root group.
1809         (copy/move-current-child-by-name/number): new functions
1810         (focus-group-by-name/number): new functions
1811         (delete-group-by-name/number): new functions
1813 2008-02-24  Philippe Brochard  <pbrochard@common-lisp.net>
1815         * ************************************************************ *
1816         *: Major update - No more reference  to workspaces. The main   *
1817         structure is a tree of groups or application windows.          *
1818         * ************************************************************ *
1820 2008-02-07  Philippe Brochard  <pbrochard@common-lisp.net>
1822         * clfswm.lisp (read-conf-file): Read configuration in
1823         $HOME/.clfswmrc or in /etc/clfswmrc or in
1824         $XDG_CONFIG_HOME/clfswm/clfswmrc.
1825         (xdg-config-home): Return the content of $XDG-CONFIG-HOME (default
1826         to $HOME/.config/).
1828 2008-01-18  Philippe Brochard  <pbrochard@common-lisp.net>
1830         * clfswm-internal.lisp (show-all-group): Use *root* and *root-gc*
1831         by default.
1833 2008-01-03  Philippe Brochard  <pbrochard@common-lisp.net>
1835         * clfswm-internal.lisp (find-window-group): New function.
1837         * clfswm*: Change to make clfswm run with clisp/new-clx.
1839 2008-01-01  Philippe Brochard  <pbrochard@common-lisp.net>
1841         * clfswm-util.lisp (query-show-paren): Add show parent matching in
1842         query string.
1843         (query-string): Bind control+k to delete end of line.
1845         * clfswm-second-mode.lisp (draw-second-mode-window): Display
1846         the action on mouse motion in second mode.
1848         * clfswm.lisp (handle-exposure): Redisplay groups on exposure
1849         event but do not clear the root window.
1850         (handle-configure-request): Adjust unmanaged window from there
1851         request.
1853         * clfswm-internal.lisp (process-new-window): Adjust new window
1854         with the specified hints (max/min/base width/height).
1856 2007-12-31  Philippe Brochard  <pbrochard@common-lisp.net>
1858         * clfswm.lisp (handle-configure-request): Send an Configuration
1859         Notify event. This solve a bug with xterm and rxvt who takes some
1860         times to be mapped. Now there is no delay.
1862         * bindings-second-mode.lisp (define-shell): Run programs after
1863         living the second mode.
1865 2007-12-30  Philippe Brochard  <pbrochard@common-lisp.net>
1867         * clfswm-internal.lisp (process-new-window): Do not crop transient
1868         window to group size.
1869         (adapt-window-to-group): Do not crop transient window to group
1870         size.
1872         * clfswm.lisp (handle-configure-request): Adapt just the window to
1873         its group and don't take care of the configure request. Remove the
1874         bug with the Gimp outside the group and speed up the window
1875         manipulation.
1876         (handle-exposure): Remove show-all-group on exposure event
1877         -> Speed up.
1879 2007-12-29  Philippe Brochard  <pbrochard@common-lisp.net>
1881         * clfswm-util.lisp (circulate-group-up-copy-window)
1882         (circulate-group-down-copy-window)
1883         (circulate-workspace-up-copy-group)
1884         (circulate-workspace-down-copy-group): Prevent the copy of the
1885         same window in the same workspace.
1887         * bindings-second-mode.lisp (release-copy-selected-window)
1888         (release-copy-selected-group): Prevent the copy of the same window
1889         in the same workspace.
1891         * clfswm-pager.lisp (generic-pager-move-window-on-previous-line)
1892         (generic-pager-move-window-on-next-line): Remove the copy
1893         property.
1894         (generic-pager-move-group-on-next-workspace)
1895         (generic-pager-move-group-on-previous-workspace): Prevent the copy
1896         of the same window in the same workspace.
1898         * bindings-pager.lisp (mouse-pager-copy-selected-window-release)
1899         (mouse-pager-copy-selected-group-release): Prevent the copy of the
1900         same window in the same workspace.
1902         * tools.lisp (setf/=): new macro to set a variable only when
1903         necessary.
1905         * clfswm-internal.lisp (adapt-window-to-group): use set/= to set
1906         x, y... only when necessary.
1908 2007-12-28  Philippe Brochard  <pbrochard@common-lisp.net>
1910         * clfswm.lisp (handle-configure-notify, *configure-notify-hook*):
1911         new function and hook: force windows to stay in its group (solve a
1912         bug with the Gimp).
1914 2007-12-25  Philippe Brochard  <pbrochard@common-lisp.net>
1916         * bindings-second-mode.lisp (mouse-motion): use hide-group to have
1917         less flickering when moving/resizing groups.
1919         * clfswm-internal.lisp (hide-group): new function.
1920         (show-all-group): clear-all: new parameter.
1922 2007-12-22  Philippe Brochard  <pbrochard@common-lisp.net>
1924         * clfswm-keys.lisp (define-define-key): undefine-*-multi-name: new
1925         macro.
1926         * clfswm*: Color change for the pager. Typo or better description
1927         in bindings definitions. Define bindings for a qwerty keyboard by
1928         default. dot-clfswmrc show examples to switch to an azerty
1929         keyboard.
1930         License change to GPL v3.
1931         * config.lisp: new file - group all globals variables in this
1932         file.
1934 2007-08-26  Philippe Brochard  <pbrochard@common-lisp.net>
1936         * xlib-util.lisp (hide-window): Remove structure-notivy events
1937         when hidding a window.
1939 2007-05-16  Philippe Brochard  <pbrochard@common-lisp.net>
1941         * package.lisp (*sm-property-notify-hook*): Readded
1942         property-notify-hook in second mode.
1944 2007-05-15  Philippe Brochard  <pbrochard@common-lisp.net>
1946         * clfswm-keys.lisp (produce-doc-html): Better clean up for strings.
1948 2007-05-13  Philippe Brochard  <pbrochard@common-lisp.net>
1950         * clfswm-pack.lisp (tile-current-workspace-to/right/left/top/bottom):
1951         Tile the current workspace with the current window on one side and
1952         others on the other (this emulate the larswm, dwm, wmii way). See
1953         the default configuration file to enable this mode by default.
1955         * clfswm-pager.lisp (pager-tile-current-workspace-to): idem for
1956         the pager.
1958 2007-05-12  Philippe Brochard  <pbrochard@common-lisp.net>
1960         * clfswm-pager.lisp (pager-draw-window-in-group): Add
1961         ensure-printable to print windows name even with non-ascii
1962         characters.
1964 2007-05-11  Philippe Brochard  <pbrochard@common-lisp.net>
1966         * clfswm-pager.lisp (pager-explode-current-group): Create a new
1967         group for each window in group.
1968         (pager-implode-current-group): Move all windows in workspace to
1969         one group and remove other groups.
1971         * clfswm-pack.lisp (explode-group): Create a new group for each
1972         window in group.
1973         (implode-group): Move all windows in workspace to one group and
1974         remove other groups.
1976         * clfswm-util.lisp (identify-key): Remove local configuration
1977         variables and made them available for configuration from
1978         package.lisp.
1979         (query-string): idem.
1981 2007-04-29  Philippe Brochard  <pbrochard@common-lisp.net>
1983         * netwm-util.lisp: Start of NetWM compliance.
1984         Add a Netwm client list gestion.
1986 2007-04-28  Philippe Brochard  <pbrochard@common-lisp.net>
1988         * clfswm-internal.lisp (create-group-on-request): open a new group
1989         only when the current group is not empty.
1991         * bindings-second-mode.lisp (define-second-key-#\o-control): Fix a
1992         bug with null workspace.
1994         * clfswm-pager.lisp (pager-handle-event): Add a hook
1995         system. This hooks can be changed in the user configuration file.
1997         * package.lisp: All colors and font variables are set in
1998         package.lisp and can be configured in the user configuration
1999         file.
2000         Note: If you have configured some less ugly colors (esp. for the
2001         pager) don't hesitate to let me know :)
2003         * clfswm-second-mode.lisp (sm-handle-event): Add a hook
2004         system. This hooks can be changed in the user configuration file.
2006         * clfswm.lisp (handle-event): Add a hook system. This hooks can be
2007         changed in the user configuration file (~/.clfswmrc)
2009 2007-04-25  Philippe Brochard  <pbrochard@common-lisp.net>
2011         * clfswm-util.lisp (stop-all-pending-actions): new function: reset
2012         arrow action, open next window in new workspace/group.
2014         * bindings.lisp (stop-all-pending-actions): new binding.
2015         (open-next-window-in-new-group-once): Open the next windows in a
2016         new group (only once) or open all new windows in a new group (like
2017         others windows managers).
2019 2007-04-22  Philippe Brochard  <pbrochard@common-lisp.net>
2021         * clfswm.lisp (read-conf-file): New function to read a lisp
2022         configuration file at startup.
2023         (focus-group-under-mouse): Check if group isn't the current group
2024         ( prevent a bug with unclutter ).
2026 2007-03-02  Philippe Brochard  <pbrochard@common-lisp.net>
2028         * bindings.lisp (run-program-from-query-string): A program can be
2029         launch from a input query window.
2031 2007-03-01  Philippe Brochard  <pbrochard@common-lisp.net>
2033         * clfswm-info.lisp: Fix a bug with banish pointer in info mode.
2035 2007-02-28  Philippe Brochard  <pbrochard@common-lisp.net>
2037         * clfswm.lisp (process-new-window): One can now open the next
2038         window in a workspace called by its number.
2040         * clfswm-util.lisp (query-font-string): Minimal editing
2041         capabilities.
2042         (eval-from-string): And an REPL in the window manager... :)
2044 2007-02-26  Philippe Brochard  <pbrochard@common-lisp.net>
2046         * clfswm.lisp (process-new-window): One can now open the next
2047         window in a new workspace or a new group.
2049         * clfswm-pager.lisp (pager-mode): Display the next arrow action
2050         with the hidden windows.
2052         * clfswm.lisp (second-key-mode): Display the current workspace
2053         number and the next arrow action in the state window.
2055         * clfswm-pager.lisp (pager-mode): Hide all windows before leaving
2056         the pager mode and then redisplay only the current workspace.
2058 2007-02-25  Philippe Brochard  <pbrochard@common-lisp.net>
2060         * clfswm.lisp (add-workspace): Workspaces are now numbered. So
2061         they can be focused with a keypress, sorted or renumbered.
2063 2007-02-24  Philippe Brochard  <pbrochard@common-lisp.net>
2065         * clfswm-pager.lisp (pager-mode): Remove multiple silly
2066         pager-draw-display. This prevent a lot of flickering in the
2067         pager.
2069         * clfswm.lisp: Remove all display-force-output and replace them
2070         with only one display-finish-output in the event loop.
2072 2006-11-06  Philippe Brochard  <pbrochard@common-lisp.net>
2074         * clfswm-pager.lisp (pager-center-group): New function - center a
2075         group at the middle of the screen.
2077         * clfswm-pack.lisp (center-group): New function - center a group
2078         at the middle of the screen.
2080         * clfswm.lisp (show-group): Add a cross line under the group.
2081         (show-group): Group are showned even if fullscreened.
2082         (init-display): Add an exposure event on the root window.
2084 2006-11-05  Philippe Brochard  <pbrochard@common-lisp.net>
2086         * package.lisp (*default-group*): Default group is the same size
2087         of a fullscreened group.
2089         * bindings*: Use shift to move, control+shift to copy.
2091         * *.lisp: Add comments for configuration or alternatives. So grep
2092         for CONFIG to see where you can configure clfswm. And grep for
2093         Alternative to use some commented code.
2095         * clfswm.lisp (second-key-mode): Use a single window to show the
2096         second mode. See for alternatives at the end of this file.
2098 2006-11-03  Philippe Brochard  <pbrochard@common-lisp.net>
2100         * clfswm-keys.lisp (define-define-key/mouse): Factorisation in a
2101         macro of key and mouse definitions.
2102         (define-define-key/mouse): Use state instead of modifiers list
2103         this fix a bug when the modifiers list is not in the rigth order.
2105         * clfswm.lisp (second-key-mode): Add a colored border in second mode.
2107 2006-11-02  Philippe Brochard  <pbrochard@common-lisp.net>
2109         * clfswm-info.lisp (info-mode): Add an info mode.
2111 2006-11-01  Philippe Brochard  <pbrochard@common-lisp.net>
2113         * clfswm.lisp (process-new-window): Change border size for
2114         transient windows.
2115         (show-all-windows-in-workspace): Unhide all windows even when the
2116         current group is in fullscreen mode.
2118 2006-10-26  Philippe Brochard  <pbrochard@common-lisp.net>
2120         * clfswm-util.lisp (identify-key): Add an exposure handle-event to
2121         redisplay the identify window after a terminal switch.
2123         * clfswm-pager.lisp (pager-mode): Add an exposure handle-event to
2124         redisplay the pager after a terminal switch.
2126 2006-10-24  Philippe Brochard  <pbrochard@common-lisp.net>
2128         * clfswm-util.lisp (identify-key): Add a window to display
2129         the keys to identify on screen.
2131         * bindings.lisp, bindings-pager.lisp: Define same keys to
2132         move/copy groups/windows in second mode and in pager.
2134         * clfswm.lisp (handle-event*): Same version in all clfswm (fix some
2135         drawing lags).
2136         (show-all-windows-in-workspace): unhide window before adapting it
2137         to group.
2139 2006-10-23  Philippe Brochard  <pbrochard@common-lisp.net>
2141         * clfswm.lisp (handle-event): Revert to an older version.
2143 2006-10-18  Philippe Brochard  <pbrochard@common-lisp.net>
2145         * clfswm-util.lisp (force-window-in-group)
2146         (force-window-center-in-group): New functions for transient windows.
2148         * clfswm-pager.lisp (pager-remove-current-workspace/group):
2149         bugfix: hide all windows before removing group or workspace.
2151 2006-10-17  Philippe Brochard  <pbrochard@common-lisp.net>
2153         * bindings-pager.lisp (mouse-pager-move-selected-group)
2154         (mouse-pager-copy-selected-group)
2155         (mouse-pager-move-selected-window)
2156         (mouse-pager-copy-selected-window, mouse-pager-rotate-window-up)
2157         (mouse-pager-rotate-window-down): New functions to have mouse in
2158         pager mode.
2160         * clfswm-pager.lisp (pager-swap-window)
2161         (pager-copy-group-on-next/previous-workspace)
2162         (pager-copy-window-on-next/previous-line): New functions
2164 2006-10-15  Philippe Brochard  <pbrochard@common-lisp.net>
2166         * clfswm-pager.lisp (pager-move-window-on-next/previous-line,
2167         (pager-move-group-on-next/previous-workspace): new functions.
2169         * clfswm-pack.lisp (resize-half-x-x-current-group): resize group
2170         to its half size (new functions).
2172 2006-10-11  Philippe Brochard  <pbrochard@common-lisp.net>
2174         * clfswm-pager.lisp: workspaces, groups and windows can now be
2175         selectionned with the keyboard or the mouse.
2177 2006-10-09  Philippe Brochard  <pbrochard@common-lisp.net>
2179         * clfswm-pager.lisp (pager-select-workspace-right/left):
2180         workspaces can now be selectionned with the keyboard.
2182 2006-10-08  Philippe Brochard  <pbrochard@common-lisp.net>
2184         * clfswm-keys.lisp (undefine-main-key, undefine-second-key, undefine-mouse-action):
2185         new function to remove a previous defined key or mouse combination.
2187 2006-10-07  Philippe Brochard  <pbrochard@common-lisp.net>
2189         * clfswm.lisp (main): Check for access error in init-display.
2191         * clfswm-keys.lisp (define-ungrab/grab): check for keysym and
2192         keycode before grabbing.
2194         * bindings.lisp: Remove nlambda and use defun to keep the function
2195         documentation with clisp.
2196         (define-shell): new macro to define shell command for the second
2197         mode.
2199 2006-10-06  Philippe Brochard  <pbrochard@common-lisp.net>
2201         * clfswm-keys.lisp (define-ungrab/grab): use a cond instead of a
2202         boggus typecase.
2204 2006-10-05  Philippe Brochard  <pbrochard@common-lisp.net>
2206         * bindings.lisp (accept-motion): Move group bugfix in upper mouse
2207         workspace circulation.
2209         * clfswm-util.lisp (absorb-orphan-window): new function.
2211         * clfswm-keys.lisp: Keysyms support.
2213 2006-10-02  Philippe Brochard  <pbrochard@common-lisp.net>
2215         * clfswm.lisp (show-group): Use one gc for all groups and not one
2216         per group.
2218 2006-10-01  Philippe Brochard  <pbrochard@common-lisp.net>
2220         * bindings.lisp (define-second-key (#\l :mod-1)): fix a typo.
2222         * clfswm.lisp (adapt-window-to-group): Adapt only windows with
2223         width and height outside group.
2225 2006-09-28  Philippe Brochard  <pbrochard@common-lisp.net>
2227         * clfswm.lisp: First public release.