src/clfswm-expose-mode.lisp: Move and rename present*-windows in a separate clfswm...
[clfswm.git] / ChangeLog
blob7714dfbe2bc86c82419b3da6db42d868de1c3e27
1 2010-09-25  Philippe Brochard  <pbrochard@common-lisp.net>
3         * src/clfswm-expose-mode.lisp: Move and rename present*-windows in
4         a separate clfswm-expose-mode.lisp file.
6         * src/clfswm-util.lisp (speed-mouse-right, speed-mouse-down): Use
7         screen size instead of hardcoded test coordinates.
9 2010-09-24  Philippe Brochard  <pbrochard@common-lisp.net>
11         * src/clfswm-util.lisp (speed-mouse-reset, speed-mouse-left)
12         (speed-mouse-right, speed-mouse-up, speed-mouse-down)
13         (speed-mouse-undo, speed-mouse-first-history): New functions to
14         quickly move the mouse. Implemented for the second mode.
16 2010-09-16  Philippe Brochard  <pbrochard@common-lisp.net>
18         * contrib/clfswm: Move clfswm sources to $tmp_dir if there is no
19         write permission on $clfswm_asd_path. So anybody can start clfswm
20         even if there is no write permission on the source directory.
22 2010-09-12  Philippe Brochard  <pbrochard@common-lisp.net>
24         * contrib/clfswm: Add support to cmucl, ccl and ecl.
26 2010-09-11  Philippe Brochard  <pbrochard@common-lisp.net>
28         * src/clfswm-util.lisp (set-hide-unmanaged-window)
29         (set-show-unmanaged-window, set-default-hide-unmanaged-window):
30         New functions and menu entry.
31         (set-globally-hide-unmanaged-window)
32         (set-globally-show-unmanaged-window): New functions and menu
33         entry.
35         * src/clfswm-internal.lisp (hide-unmanager-window-p): New
36         function.
37         (show-child): Add a data slot on frame to hide or not unmanaged
38         windows.
40         * src/clfswm-corner.lisp (present-clfswm-terminal)
41         (present-virtual-keyboard): Use a function (generic-present-body)
42         instead of a macro (generate-present-body).
44         * src/clfswm-util.lisp (update-menus): List all directories and
45         subdirectories in $XDG_DATA_DIRS/applications.
47 2010-09-10  Philippe Brochard  <pbrochard@common-lisp.net>
49         * src/clfswm-corner.lisp (generate-present-body): New macro.
50         (present-clfswm-terminal, present-virtual-keyboard): Use
51         generate-present-body.
53 2010-09-09  Philippe Brochard  <pbrochard@common-lisp.net>
55         * src/clfswm-util.lisp (update-menus): Follow XDG specifications
56         instead of the non-portable Debian update-menu.
58 2010-09-07  Philippe Brochard  <pbrochard@common-lisp.net>
60         * src/clfswm.lisp (error-handler): New function do handle
61         asynchronous errors and ignore them.
62         (open-display): Install the new error-handler on display.
64 2010-09-05  Philippe Brochard  <pbrochard@common-lisp.net>
66         * src/xlib-util.lisp (with-xlib-protect): Add a
67         with-simple-restart on top of body execution.
69 2010-09-04  Philippe Brochard  <pbrochard@common-lisp.net>
71         * src/clfswm.lisp (main-loop): Protect all xlib functions with an
72         with-xlib-protect.
74         * src/xlib-util.lisp (handle-event): use with-xlib-protect only in
75         handle-event. Add a with-simple-restart to prevent a
76         clisp/new-lisp infinite loop.
78 2010-08-30  Philippe Brochard  <pbrochard@common-lisp.net>
80         * src/clfswm-corner.lisp (present-clfswm-terminal): Make the
81         clfswm terminal working even on xterm title changes.
83 2010-08-29  Philippe Brochard  <pbrochard@common-lisp.net>
85         * src/clfswm-util.lisp (run-other-window-manager): Update for
86         clisp compatibility.
88         * src/tools.lisp (do-execute): New parameter io to change the
89         input/output method.
91         * src/clfswm-util.lisp (hide-current-child): Prevent from removing
92         the current root.
94         * src/clfswm-internal.lisp (child-member): New predicate.
95         (child-remove): New function.
97         * src/*.lisp: Use child-member and child-remove everywhere it's
98         needed.
100 2010-08-28  Philippe Brochard  <pbrochard@common-lisp.net>
102         * src/clfswm.lisp (main-loop): Ensure that all events have been
103         processed after a process-event.
105         * src/clfswm-internal.lisp (is-in-current-child-p): New function.
107 2010-08-27  Philippe Brochard  <pbrochard@common-lisp.net>
109         * src/clfswm.lisp (main-mode:configure-request): Raise the window
110         only when present on the current child and focus it accordingly.
112 2010-08-26  Philippe Brochard  <pbrochard@common-lisp.net>
114         * src/clfswm-circulate-mode.lisp (circulate-loop-function):
115         Use is-a-key-pressed-p.
117         * src/xlib-util.lisp (is-a-key-pressed-p): New predicate.
119         * src/clfswm-keys.lisp (define-ungrab/grab): Use all values
120         returned by xlib:keysym->keycodes.
122         * src/*.lisp: Use the new child-equal-p to compare children. This
123         prevent a bug with sbcl/cmucl when the standard equal function
124         does not work with xlib:window.
126         * src/clfswm-internal.lisp (child-equal-p): New predicate.
128 2010-08-25  Philippe Brochard  <pbrochard@common-lisp.net>
130         * src/clfswm-generic-mode.lisp (generic-mode): Use an
131         xlib:event-listen before processing event with
132         xlib:process-event. This prevent a bug with CLX threaded
133         implementation like sbcl.
135         * src/clfswm.lisp (main-loop): Use an xlib:event-listen before
136         processing event with xlib:process-event. This prevent a bug with
137         CLX threaded implementation like sbcl.
139 2010-08-17  Philippe Brochard  <pbrochard@common-lisp.net>
141         * contrib/server/key.lisp (ushell-sh): Add ccl and ecl support.
143         * src/xlib-util.lisp (compress-motion-notify): Use a loop instead
144         of an event-case.
146         * src/clfswm-internal.lisp (with-find-in-all-frames): New macro.
147         (find-parent-frame, find-frame-window, find-frame-by-name)
148         (find-frame-by-number): Use with-find-in-all-frames to search in
149         frames in the right order.
151         * src/clfswm-util.lisp (mouse-click-to-focus-generic): Fix an
152         unwanted flickering with unmanaged windows.
154 2010-08-16  Philippe Brochard  <pbrochard@common-lisp.net>
156         * src/package.lisp: Remove event handler hooks as they're not
157         needed anymore (To replace them: use closure and define-handler).
159         * src/xlib-util.lisp (move-window, resize-window)
160         (wait-mouse-button-release): Use a generic mode.
162         * src/*.lisp: Replace the case to handle event with a more (tricky)
163         lispy  method which bind a function to each keywords associated
164         to graphics events.
166 2010-07-23  Philippe Brochard  <pbrochard@common-lisp.net>
168         * src/clfswm-util.lisp (delete-current-child): Invert bindings and
169         menu entry between delete-current-child and remove-current-child.
170         ie: Delete a child and its children in all frames by default.
172 2010-07-21  Philippe Brochard  <pbrochard@common-lisp.net>
174         * src/package.lisp: Add a placement configuration group.
176         * src/binding*.lisp: Bind control+g to escape the current action
177         like emacs.
179         * src/clfswm-internal.lisp
180         (delete-child-and-children-in-all-frames): New function and
181         binding: Second mode - Control+Delete delete the current child and
182         its children in all frames (ie: close the current child and its
183         children).
185 2010-07-20  Philippe Brochard  <pbrochard@common-lisp.net>
187         * src/clfswm-internal.lisp (remove-child-in-frame): Do not destroy
188         the frame window and the frame gc. Close a very annoying bug when
189         cuting/pasting a frame or moving a child over frames with the
190         mouse.
192         * src/clfswm-util.lisp (mouse-click-to-focus-generic): Redisplay
193         all children in *current-root* after moving/resizing a frame.
195 2010-07-18  Philippe Brochard  <pbrochard@common-lisp.net>
197         * src/clfswm-util.lisp (delete-focus-window)
198         (destroy-focus-window): Remove child in parent frame before
199         stopping it.
201 2010-07-16  Philippe Brochard  <pbrochard@common-lisp.net>
203         * src/clfswm-util.lisp (identify-key): Add a timeout in
204         xlib:process-event.
205         (mouse-click-to-focus-generic): Use find-child-under-mouse instead
206         of the window passed by xlib:process-event.
208         * src/xlib-util.lisp (move-window, resize-window)
209         (wait-mouse-button-release): Add a timeout in xlib:process-event.
211 2010-04-11  Philippe Brochard  <pbrochard@common-lisp.net>
213         * src/clfswm-util.lisp (run-other-window-manager): Add the ability
214         to launch an other window manager and to return to clfswm.
216 2010-03-18  Philippe Brochard  <pbrochard@common-lisp.net>
218         * src/clfswm-layout.lisp (set-tile-space-layout): Set default
219         to 1%.
221 2009-12-15  Philippe Brochard  <pbrochard@common-lisp.net>
223         * src/clfswm.lisp (main-loop): Add a *loop-hook* parameter and a
224         loop timeout.
226         * src/clfswm-generic-mode.lisp (generic-mode): Add a loop-hook
227         parameter and a loop timeout.
229 2009-12-05  Philippe Brochard  <pbrochard@common-lisp.net>
231         * src/clfswm.lisp (main): Add an alternate configuration filename
232         parameter.
234         * load.lisp: Add a debuging code example.
236 2009-11-14  Philippe Brochard  <pbrochard@common-lisp.net>
238         * src/clfswm-configuration.lisp (create-configuration-menu): New
239         menu to configure all clfswm variables while clfswm is running.
241 2009-11-12  Philippe Brochard  <pbrochard@common-lisp.net>
243         * src/clfswm-util.lisp (save-configuration-variables): New
244         function to save all configuration variables in clfswmrc.
246 2009-11-11  Philippe Brochard  <pbrochard@common-lisp.net>
248         * src/clfswm-info.lisp (info-mode): Begining of mouse support in
249         info mode.
250         (set-default-info-keys): Add cursor key support in info mode.
252 2009-11-08  Philippe Brochard  <pbrochard@common-lisp.net>
254         * contrib/reboot-halt.lisp: Add a Suspend/Reboot/Halt menu in
255         contrib.
257         * src/clfswm.lisp (main): Add a read-conf-file-p parameter to
258         prevent reading the configuration file (this may be useful to
259         produce the original documentation without user modifications
260         with the rc configuration file).
262 2009-11-07  Philippe Brochard  <pbrochard@common-lisp.net>
264         * src/bindings-second-mode.lisp (set-default-second-keys):
265         Simplification of Escape key to close/kill/remove the focus window
266         and unhide all windows.
268         * src/bindings.lisp (set-default-main-keys): Simplification of
269         Escape key to close/kill/remove the focus window and unhide all
270         windows.
272         * src/clfswm-util.lisp (ask-close/kill-current-window): Add remove
273         focus and unhide all windows capabilities.
275 2009-10-10  Philippe Brochard  <pbrochard@common-lisp.net>
277         * contrib/mpd.lisp (start-gmpc): Add gmpc in the mpd menu.
279 2009-07-29  Philippe Brochard  <pbrochard@common-lisp.net>
281         * src/clfswm-layout.lisp (tile-layout, tile-horizontal-layout):
282         Keep child order and don't make unnecessary child movement.
283         (one-column-layout, one-line-layout): New layouts.
285 2009-06-29  Philippe Brochard  <pbrochard@common-lisp.net>
287         * contrib/cd-player.lisp: New file to handle the CD player.
289         * contrib/xmms.lisp: New file to handle the xmms player.
291 2009-06-28  Philippe Brochard  <pbrochard@common-lisp.net>
293         * src/clfswm-layout.lisp (set-no-layout-remember-size): New layout:
294         Maximize windows in there frame - Leave frames to there actual
295         size.
297         * src/bindings-second-mode.lisp (set-default-second-keys): Bind
298         "o" on set-open-in-new-frame-in-parent-frame-nw-hook.
300 2009-06-27  Philippe Brochard  <pbrochard@common-lisp.net>
302         * contrib/keyb_fr.lisp: New file to handle an azerty keyboard.
304 2009-06-24  Philippe Brochard  <pbrochard@common-lisp.net>
306         * contrib/mpd.lisp: Use a standard menu.
308         * src/clfswm-info.lisp: Use a standard menu for the help-menu.
310 2009-06-22  Philippe Brochard  <pbrochard@common-lisp.net>
312         * contrib/mpd.lisp: New file to handle the Music Player Daemon (MPD)
314 2009-06-19  Philippe Brochard  <pbrochard@common-lisp.net>
316         * src/clfswm-autodoc.lisp (produce-doc, produce-doc-html): Minor
317         number key cleanup.
319 2009-06-18  Philippe Brochard  <pbrochard@common-lisp.net>
321         * src/config.lisp (get-fullscreen-size):  One pixel adjustment
322         (again).
324         * src/clfswm-placement.lisp (*-child-placement): One pixel
325         adjustment (again).
327 2009-06-16  Philippe Brochard  <pbrochard@common-lisp.net>
329         * src/clfswm-circulate-mode.lisp (draw-circulate-mode-window):
330         Ensure that all characters are printable.
332         * src/config.lisp (get-fullscreen-size): Adjust default fullscreen
333         sizes.
335         * src/clfswm-placement.lisp (*-child-placement): Adjust
336         coordinates to one pixel in the current child.
338 2009-06-04  Philippe Brochard  <pbrochard@common-lisp.net>
340         * src/clfswm-query.lisp (query-enter-function): Assign font before
341         width and height calculation.
343 2009-06-03  Philippe Brochard  <pbrochard@common-lisp.net>
345         * src/xlib-util.lisp (banish-pointer): Use with-placement macro to
346         bannish the pointer in an arbitrary place.
348         * src/clfswm-info.lisp (info-mode): Use with-placement macro to
349         place the info window in an arbitrary place.
351         * src/clfswm-query.lisp (query-enter-function): Use with-placement
352         macro to place the query window in an arbitrary place.
354         * src/clfswm-placement.lisp: New file. Allow to place info windows
355         or query windows on an arbitrary place. Allow to bannish the
356         pointer on an arbitrary place.
358 2009-05-16  Philippe Brochard  <pbrochard@common-lisp.net>
360         * src/clfswm-circulate-mode.lisp (reorder-child)
361         (reorder-brother): Unfocus windows before reordering children or
362         brothers.
364 2009-05-13  Philippe Brochard  <pbrochard@common-lisp.net>
366         * src/clfswm-circulate-mode.lisp (reorder-brother): Ensure that
367         the parent is a frame.
369         * src/clfswm-second-mode.lisp (sm-handle-motion-notify): Handle
370         motion with a default modifier.
372         * src/clfswm.lisp (handle-motion-notify): Handle motion with a
373         default modifier.
375         * src/clfswm-info.lisp (info-mode): Handle motion with a default
376         modifier.
377         (info-mode): Optimization in loop function.
379 2009-05-10  Philippe Brochard  <pbrochard@common-lisp.net>
381         * src/clfswm-circulate-mode.lisp (reorder-brother): Handle
382         root-frame correctly.
384         * clfswm.asd: Dependency fix for clfswm-generic-mode.
386         * src/clfswm-circulate-mode.lisp (reorder-child)
387         (reorder-brother): Handle empty frames.
388         (reorder-brother): Redisplay only the parent frame of the  current
389         child.
391         * src/clfswm-util.lisp (frame-toggle-maximize): Redisplay only the
392         parent frame of the  current frame.
394 2009-05-09  Philippe Brochard  <pbrochard@common-lisp.net>
396         * src/clfswm-util.lisp (frame-toggle-maximize): New function:
397         Maximize/Unmaximize the current frame in its parent frame.
399         * src/clfswm-layout.lisp (maximize-layout): New layout: Maximize
400         windows and frames in there parent frame.
402 2009-05-05  Philippe Brochard  <pbrochard@common-lisp.net>
404         * src/*.lisp: Add support for Clozure Common Lisp (CCL).
406         * src/clfswm-circulate-mode.lisp (reorder-child)
407         (reorder-brother): Reinitialise on circulate type change
408         child to brother or brother to child.
410         * src/*.lisp (*): Use map-window instead of xlib:map-window. So
411         calls xlib:display-finish-output on each map-request. So speed up
412         the window display.
414         * src/xlib-util.lisp (map-window): New function. Call
415         xlib:display-finish-output on each map request.
417 2009-04-28  Philippe Brochard  <pbrochard@common-lisp.net>
419         * src/clfswm-second-mode.lisp (sm-handle-motion-notify):
420         Optimisation when drawing second mode window.
422 2009-04-27  Philippe Brochard  <pbrochard@common-lisp.net>
424         * src/clfswm-circulate-mode.lisp (circulate-mode): Optimisation in
425         window redraw.
427 2009-04-22  Philippe Brochard  <pbrochard@common-lisp.net>
429         * src/clfswm-util.lisp (run-program-from-query-string): Launch
430         command only with a return validation.
432 2009-04-22  Xavier Maillard  <xma@gnu.org>
434         * src/clfswm-query.lisp (query-string): Use a generic mode.
436 2009-04-19  Xavier Maillard  <xma@gnu.org>
438         * src/clfswm-info.lisp (info-mode): Use generic-mode for info-mode.
440 2009-04-18  Xavier Maillard  <xma@gnu.org>
442         * src/clfswm-generic-mode.lisp (generic-mode): Add a generic mode
443         to define all other modes.
445 2009-04-05  Philippe Brochard  <pbrochard@common-lisp.net>
447         * src/package.lisp (): Use *default-font-string* for all
448         font-string.
450         * src/clfswm-info.lisp (info-mode): Ensure integer windows size.
452 2009-02-17  Philippe Brochard  <pbrochard@common-lisp.net>
454         * src/xlib-util.lisp (null-size-window-p): Better check of null
455         sized windows.
457 2009-02-14  Philippe Brochard  <pbrochard@common-lisp.net>
459         * src/clfswm.lisp (handle-map-request): Add a fix to manage
460         correctly fullscreen windows (SDL particularly).
462 2008-12-20  Philippe Brochard  <pbrochard@common-lisp.net>
464         * src/xlib-util.lisp (get-color): Allocate colors only once -> fix
465         a segfault with clisp/new-clx.
467         * src/clfswm.lisp (handle-motion-notify): Add a needed window
468         argument.
470         * src/clfswm-second-mode.lisp (sm-handle-motion-notify): Add a
471         needed window argument.
473 2008-10-30  Philippe Brochard  <pbrochard@common-lisp.net>
475         * src/xlib-util.lisp (wait-no-key-or-button-press)
476         (wait-a-key-or-button-press): Check buttons press/release correctly"
478 2008-10-28  Philippe Brochard  <pbrochard@common-lisp.net>
480         * src/menu-def.lisp: Add children navigation menu in the movement
481         menu (select next/previous child/brother/level).
483 2008-10-26  Philippe Brochard  <pbrochard@common-lisp.net>
485         *  *: Rename 'sister' frame to 'brother' frame.
487         * src/clfswm-keys.lisp (unalias-modifiers): Convert a modifier
488         alias in a real modifier.
490         * src/package.lisp (*modifier-alias*): New list of modifier alias
491         For example: :alt is :mod-1, :numlock is :mod-2...
493         * src/tools.lisp (remove-hook): New function.
495         * src/clfswm-keys.lisp (with-capslock, without-capslock)
496         (with-numlock, without-cnumlock): New functions.
498 2008-10-25  Philippe Brochard  <pbrochard@common-lisp.net>
500         * src/clfswm-info.lisp: Use the *binding-hook* to create info
501         keys and mouse bindings.
503         * src/bindings-second-mode.lisp: Use the *binding-hook* to create
504         second keys and mouse bindings.
506         * src/bindings.lisp: Use the *binding-hook* to create main keys
507         and mouse bindings.
509 2008-10-10  Philippe Brochard  <pbrochard@common-lisp.net>
511         * src/clfswm-menu.lisp (open-menu): Remember parent menu to undo
512         menu opening.
514 2008-10-09  Philippe Brochard  <pbrochard@common-lisp.net>
516         * src/menu-def.lisp: Use a menu instead of a function for the
517         standard menu.
519 2008-10-08  Philippe Brochard  <pbrochard@common-lisp.net>
521         * src/clfswm-util.lisp (show-standard-menu): Display the standard
522         menu from the 'update-menus' command.
524 2008-10-07  Philippe Brochard  <pbrochard@common-lisp.net>
526         * src/clfswm-query.lisp (query-string): Do not ungrab keyboard if
527         it's already grabbed.
529         * src/clfswm-internal.lisp (display-frame-info): Use configurable
530         colors and fix a bug with background.
531         (display-frame-info): Set window background when displaying info.
533 2008-10-06  Philippe Brochard  <pbrochard@common-lisp.net>
535         * src/xlib-util.lisp (my-character->keysyms): Use a macro to avoid
536         warning with clisp/new-clx.
538 2008-10-04  Philippe Brochard  <pbrochard@common-lisp.net>
540         * src/clfswm-util.lisp (jump-to-slot): Prevent to jump on a
541         deleted child.
543 2008-09-23  Philippe Brochard  <pbrochard@common-lisp.net>
544         * *: **** Release 0809 ****
546 2008-09-23  Philippe Brochard  <pbrochard@common-lisp.net>
548         * src/clfswm-util.lisp (ensure-unique-name): New function and menu
549         entry.
550         (ensure-unique-number): New function and menu entry.
552 2008-09-22  Philippe Brochard  <pbrochard@common-lisp.net>
554         * src/clfswm-nw-hooks.lisp (named-frame-nw-hook): New new window
555         hook: open the next window in a named frame.
556         (numbered-frame-nw-hook): New new window hook: open the next
557         window in a numbered frame.
559         * src/clfswm-query.lisp (query-string): Grab the keyboard in all
560         cases. So query-string can be called even in the main mode.
562         * src/clfswm-internal.lisp (show-all-children): Do not raise a
563         child by default => far less flickering.
565 2008-09-19  Philippe Brochard  <pbrochard@common-lisp.net>
567         * src/bindings-second-mode.lisp: Bind "t" to tile-current-frame.
569         * src/menu-def.lisp: Change key binding for the CLFSWM menu
570         entry.
572         * src/xlib-util.lisp (xgrab-pointer): Handle the case where cursor
573         is nil. (workaround on some CLX implementation).
575 2008-09-12  Philippe Brochard  <pbrochard@common-lisp.net>
577         * src/menu-def.lisp: Add a menu to set a focus policy for all
578         frames.
580         * src/clfswm-util.lisp (set-focus-policy-generic-for-all)
581         (all-frames-set-*-focus-policy): Set a focus policy for all
582         frames.
584         * src/clfswm.lisp (handle-enter-notify): sloppy-select
585         mode. Select a child and its parents on mouse over.
587 2008-09-03  Philippe Brochard  <pbrochard@common-lisp.net>
589         * src/clfswm.lisp (handle-enter-notify): Add a sloppy strict focus
590         policy -> Sloppy focus only for windows in the current frame.
591         (main-unprotected): Exit clfswm on init error (ie: when another
592         window manager is running).
594         * src/clfswm-util.lisp (reset-clfswm): New function.
596 2008-09-02  Philippe Brochard  <pbrochard@common-lisp.net>
598         * src/clfswm-menu.lisp (init-menu): New function.
600         * src/clfswm-util.lisp (reload-clfswm): New function to reload
601         CLFSWM.
602         (exit-clfswm): Rename quit-clfswm to exit-clfswm.
604         * src/clfswm.lisp (main, main-unprotected): Handle error in a
605         superior main function. Now CLFSWM can't break the X session. It
606         just reinitialize the display and run a new main loop.
608         * src/clfswm-corner.lisp: Make *clfswm-terminal* and
609         *vt-keyboard-on* global to avoid warnings when loading clfswm.
611         * src/clfswm-layout.lisp: Add a specific GIMP layout menu.
612         (help-on-gimp-layout): Describe how to use the GIMP layout.
614 2008-09-01  Philippe Brochard  <pbrochard@common-lisp.net>
616         * src/clfswm-layout.lisp (set-gimp-layout): Change the layout to
617         main-window-right-layout. Change the keybinding for (shift)alt+tab
618         to not select windows in the main window lisst.
619         Bind F8 to add a window in the main window list.
620         Bind F9 to remove a window in the main window list.
621         Change the focus policy to :sloppy.
622         (set-previous-layout): Restore the previous layout, keybinding and
623         focus policy.
625 2008-08-31  Philippe Brochard  <pbrochard@common-lisp.net>
627         * src/clfswm-menu.lisp (add-menu-comment): Add comments in menu.
629         * src/clfswm-layout.lisp (main-window-left-layout)
630         (main-window-bottom-layout, main-window-top-layout): New
631         functions.
632         Factorize layouts in menu.
634 2008-08-30  Philippe Brochard  <pbrochard@common-lisp.net>
636         * src/clfswm-layout.lisp (main-window-right-layout): A possible
637         GIMP layout: one or more main windows on one side of the
638         frame. Others on the other size.
640         * src/clfswm-util.lisp
641         (current-frame-set-click/sloppy-focus-policy): Each frame can have
642         a different focus policy (one of :click or :sloppy).
643         The default focus policy is set with *default-focus-policy*.
645 2008-08-23  Philippe Brochard  <pbrochard@common-lisp.net>
647         * src/clfswm-info.lisp (show-config-variable): New function.
649 2008-08-19  Philippe Brochard  <pbrochard@common-lisp.net>
651         * src/clfswm-layout.lisp (tile-horizontal-layout): New layout.
653         * src/clfswm-info.lisp: Colored help for key binding and corners
654         actions.
656 2008-08-18  Philippe Brochard  <pbrochard@common-lisp.net>
658         * src/clfswm-util.lisp (delete-focus-window)
659         (destroy-focus-window): Remove chid only in
660         handle-unmap/destroy-notify. Focus *current-root* only when
661         closing/killing the current child.
663         * src/clfswm-autodoc.lisp (produce-corner-*-doc): New autodoc
664         functions or corners.
666 2008-08-17  Philippe Brochard  <pbrochard@common-lisp.net>
668         * src/clfswm-corner.lisp (present-clfswm-terminal): New corner
669         action: Hide/Unhide a terminal on mouse corner action. (By default
670         right mouse button on the top left corner).
672         * src/config.lisp (*never-managed-window-list*): New config
673         variable.
675         * src/clfswm-internal.lisp (never-managed-window-p): New function:
676         Handle never managed window in a more simple way.
678         * src/clfswm-corner.lisp: New file and new and more simple method
679         to define corners actions.
681 2008-08-15  Philippe Brochard  <pbrochard@common-lisp.net>
683         * src/clfswm-info.lisp (info-mode): Info line can now be colored.
685         * src/clfswm-layout.lisp (fast-layout-switch)
686         (define-fast-layout-switch): New functions: Switch between two
687         layouts.
689         * src/clfswm-second-mode.lisp (leave-second-mode): Takes care if
690         really in the second mode. So leave-second-mode can be used even
691         in the main mode.
693         * src/clfswm-util.lisp (switch-to-last-child): New function:
694         Store the current child and switch to the previous one.
696 2008-07-16  Philippe Brochard  <pbrochard@common-lisp.net>
698         * src/clfswm-util.lisp (display-current-window-info): Display the
699         window id.
700         (have-to-present-virtual-keyboard): Add a virtual keyboard corner
701         (top right by default). By default 'xvkbd' is used.
703 2008-06-28  Philippe Brochard  <pbrochard@common-lisp.net>
705         * src/xlib-util.lisp (move-window, resize-window): Compress motion
706         events.
708         * src/clfswm.lisp (handle-motion-notify): Compress motion events.
710         * src/clfswm-second-mode.lisp (sm-handle-motion-notify): Compress
711         motion events.
713         * src/clfswm-info.lisp (info-mode): Compress motion events.
715 2008-06-21  Philippe Brochard  <pbrochard@common-lisp.net>
717         * src/clfswm-internal.lisp (show-all-children): Compute geometry
718         and selection first and then show only necessary children.
719         (show-child): remove unneeded display-p parameter.
721         * src/config.lisp (get-fullscreen-size): Place the frame border
722         outside the screen (this prevent the loose of 2 pixels per
723         directions :)
725 2008-06-12  Philippe Brochard  <pbrochard@common-lisp.net>
727         * src/clfswm-internal.lisp (focus-child): Algorithm change to
728         raise only the selected child.
730 2008-06-08  Philippe Brochard  <pbrochard@common-lisp.net>
732         * src/clfswm-internal.lisp (raise-p-list, show-all-children):
733         Raise only viewable children.
735 2008-06-06  Philippe Brochard  <pbrochard@common-lisp.net>
737         * src/clfswm-internal.lisp (show-all-children): Always raise all
738         displayed children. Remove all references to raise-p.
740 2008-06-04  Philippe Brochard  <pbrochard@common-lisp.net>
742         * src/menu-def.lisp (child-menu): New menu entry on raise/lower
743         child in its frame.
745         * src/bindings-second-mode.lisp ("Page_Down", "Page_Up"): New
746         second mode binding on raise/lower child in its frame.
748         * src/clfswm-nw-hooks.lisp (leave-focus-frame-nw-hook): Adapt
749         behaviour to the new raise/lower property.
750         Call clear-nw-hook before the rest of the hook.
752         * src/bindings.lisp (mouse-click-to-focus-and-move-window)
753         (mouse-click-to-focus-and-resize-window): Stop button event. This
754         prevent a keyboard/pointer freeze.
756 2008-06-03  Philippe Brochard  <pbrochard@common-lisp.net>
758         * src/clfswm-internal.lisp (frame-lower-child)
759         (frame-raise-child): New functions to raise/lower a child in its
760         frame.
762         * src/clfswm-util.lisp (have-to-present-windows)
763         (have-to-present-all-windows): New functions to have an MaxOS
764         expose like on mouse click in screen corner.
766         * src/clfswm-info.lisp ("Page_Down", "Page_Up"): Add boundaries.
768 2008-05-30  Philippe Brochard  <pbrochard@common-lisp.net>
770         * src/clfswm-util.lisp (unhide-a-child-from-all-frames): Unhide a
771         child from a choice in all frames with hidden children.
773         * src/clfswm-info.lisp (info-mode-menu): Handle separators.
775 2008-05-28  Philippe Brochard  <pbrochard@common-lisp.net>
777         * src/clfswm-util.lisp (hide-current-child, unhide-a-child)
778         (unhide-all-children): New functions.
780         * src/clfswm-info.lisp (info-mode-menu): Handle symbols and
781         functions.
783         * src/clfswm-util.lisp (hide/show-frame-window): new function and
784         menu item.
786 2008-05-23  Philippe Brochard  <pbrochard@common-lisp.net>
788         * src/clfswm-util.lisp (rename-current-child): Do not display the
789         frame info for a window.
791 2008-05-20  Philippe Brochard  <pbrochard@common-lisp.net>
793         * src/clfswm-internal.lisp (remove-child-in-frame): Destroy the
794         frame window for the removed child and its children.
796 2008-05-18  Philippe Brochard  <pbrochard@common-lisp.net>
798         * src/clfswm-autodoc.lisp (produce-*-doc-*): Add a note to use the
799         autodoc functions.
801 2008-05-17  Philippe Brochard  <pbrochard@common-lisp.net>
803         * src/clfswm-nw-hooks.lisp (default-frame-nw-hook): Do not handle
804         the ROX pinboard (ie: leave it lowered in the root window as
805         expected).
807         * src/clfswm-layout.lisp (tile-left-space-layout): New layout.
808         (tile-left-layout, tile-right-layout, tile-top-layout)
809         (tile-bottom-layout): Use all the frame space when there is only
810         one child.
812         * src/clfswm-internal.lisp (place-window-from-hints): Center
813         unmanaged windows in the root screen.
815         * src/clfswm-nw-hooks.lisp (clear-nw-hook, clear-all-nw-hooks):
816         new functions.
818 2008-05-15  Philippe Brochard  <pbrochard@common-lisp.net>
820         * src/clfswm-util.lisp (current-frame-manage-window-type): Fix a
821         typo in managed types.
823         * src/clfswm-internal.lisp (show-child): Always display frame info
824         even if the frame is hidden.
826         * src/xlib-util.lisp (resize-window): Use a better algorithme to
827         resize windows.
829 2008-05-13  Philippe Brochard  <pbrochard@common-lisp.net>
831         * src/clfswm-util.lisp (with-movement): Display frame info for all
832         frames in current root.
834 2008-05-12  Philippe Brochard  <pbrochard@common-lisp.net>
836         * src/*.lisp: Rename 'brother' frames to 'sister' frames.
838         * src/bindings-second-mode.lisp (define-second-key #\a): New
839         binding on 'add-default-frame'.
841         * src/clfswm-autodoc.lisp (produce-*-doc-*-in-file): Show a
842         message to follow the autodocumentation process.
844 2008-05-10  Philippe Brochard  <pbrochard@common-lisp.net>
846         * src/clfswm-util.lisp (bind-or-jump): Bind "Tab", "Return" and
847         "Space" to jump to a child. "B" to bind a slot on the current
848         child.
850         * src/bindings-second-mode.lisp: Use "Tab" instead of
851         "Iso_Left_Tab".
853 2008-05-07  Philippe Brochard  <pbrochard@common-lisp.net>
855         * src/clfswm-util.lisp (find-child-under-mouse): Take care of
856         unmanaged (hidden) windows.
858         * src/clfswm-internal.lisp (place-window-from-hints): Give a
859         minimal size for windows.
860         (with-all-windows-frames-and-parent): New function.
862         * src/config.lisp (*default-window-width/height*): New parameters.
864         * src/clfswm-internal.lisp (place-window-from-hints): Center
865         windows in the screen instead of in there frame.
867         * src/bindings-second-mode.lisp (tile-space-current-frame): New
868         binding on C-t.
870         * src/clfswm-layout.lisp (register-layout): Intern the once name
871         in the right package.
873 2008-05-05  Philippe Brochard  <pbrochard@common-lisp.net>
875         * doc/dot-clfswmrc: Update to  follow the new clfswm way.
877 2008-05-03  Philippe Brochard  <pbrochard@common-lisp.net>
879         * src/clfswm-internal.lisp (set-current-child)
880         (adapt-child-to-parent, show-child, hide-child): Handle the case
881         where child is not a frame or a window.
883         * src/clfswm-util.lisp
884         (mouse-click-to-focus-generic,mouse-focus-move/resize-generic):
885         Check if child is a frame.
887         * src/clfswm-internal.lisp (managed-window-p): Handle the case
888         where frame is null.
889         (place-frame): Check if frame and parent are frames.
891         * src/clfswm-info.lisp (info-mode): display all frame info before
892         leaving.
894         * src/clfswm-second-mode.lisp (second-key-mode): display all frame
895         info before leaving.
897         * src/clfswm-internal.lisp (display-all-frame-info): New function.
899 2008-05-02  Philippe Brochard  <pbrochard@common-lisp.net>
901         * src/tools.lisp (getenv): Implemented for ECL.
902         (urun-prog): Implemented for ECL.
904         * src/clfswm-util.lisp (identify-key): Use a double buffer to
905         display text.
907         * src/clfswm-query.lisp (query-string): Use a double buffer to
908         display text.
910         * src/clfswm-info.lisp (draw-info-window): Use a double buffer to
911         display text.
913         * src/xlib-util.lisp (clear-pixmap-buffer, copy-pixmap-buffer):
914         New functions.
916 2008-05-01  Philippe Brochard  <pbrochard@common-lisp.net>
918         * src/clfswm-info.lisp (info-mode): Add boundaries in the info mode window.
920         * src/menu-def.lisp: New file: move all menu definition in
921         menu-def.lisp.
923         * src/clfswm-layout.lisp (register-layout): Use a function instead
924         of a macro.
926 2008-04-30  Philippe Brochard  <pbrochard@common-lisp.net>
928         * src/clfswm-autodoc.lisp (produce-menu-doc,
929         (produce-menu-doc-html): New functions.
930         (produce-doc-*): Moved to clfswm-autodoc.lisp.
932         * src/clfswm-util.lisp (paste-selection-no-clear): Prevent to
933         paste a child on one of its own children. (this prevent a
934         recursive bug).
935         (move-child-to): Rename move/copy-current-child-by to
936         move/copy-child-to.
937         (mouse-move-window-over-frame): New function to move the window
938         under the mouse cursor to another frame.
940         * src/clfswm-internal.lisp (find-child-in-parent): New function.
942 2008-04-29  Philippe Brochard  <pbrochard@common-lisp.net>
944         * src/clfswm-internal.lisp (show-all-children): Display unmanaged
945         windows only when its window parent is the current child.
947 2008-04-28  Philippe Brochard  <pbrochard@common-lisp.net>
949         * src/clfswm-util.lisp (manage-current-window)
950         (unmanage-current-window): New functions: Allow to force to manage
951         or unmanage a window by its parent frame.
953         * src/bindings-second-mode.lisp (#\o): binded to
954         set-open-in-new-frame-in-parent-frame-nw-hook and
955         (#\o :control) to set-open-in-new-frame-in-root-frame-nw-hook
957         * src/clfswm-util.lisp (with-current-window): New macro.
959         * src/xlib-util.lisp (move-window, resize-window): Remove uneeded
960         exposure and enter-window handle event.
962         * src/clfswm-util.lisp (move-frame, resize-frame): Show all
963         children for the current child after the move/resize.
965 2008-04-27  Philippe Brochard  <pbrochard@common-lisp.net>
967         * src/xlib-util.lisp (resize-window): Take care of window size
968         hints.
970         * src/clfswm-util.lisp (mouse-focus-move/resize-generic): Allow to
971         move/resize unmanaged windows.
973         * src/xlib-util.lisp (move-window, resize-window): New functions.
975 2008-04-25  Philippe Brochard  <pbrochard@common-lisp.net>
977         * src/clfswm-util.lisp (current-frame-manage-window-type): Let the
978         user choose what window type the current frame must handle.
979         (display-current-window-info): New function.
980         (current-frame-manage-all-window-type)
981         (current-frame-manage-only-normal-window-type)
982         (current-frame-manage-no-window-type): New functions.
984         * src/clfswm-internal.lisp (managed-window-p): New function.
986         * src/package.lisp (frame): Managed type: new frame
987         parameter. This allow to choose what window type a frame must
988         handle.
990         * src/*.lisp: Rename all 'father' occurrences to 'parent'.
992         * src/clfswm-nw-hooks.lisp
993         (open-in-new-frame-in-parent-frame-nw-hook): New new window hook.
995         * src/clfswm-util.lisp (adapt-current-frame-to-window-hints): New
996         function.
998         * src/tools.lisp (ensure-printable): Return always a string even
999         with a null string.
1001 2008-04-24  Philippe Brochard  <pbrochard@common-lisp.net>
1003         * src/config.lisp (*default-nw-hook*): New variable to change the
1004         default new window hook.
1006 2008-04-22  Philippe Brochard  <pbrochard@common-lisp.net>
1008         * clfswm.asd (clfswm): Add a dependency from
1009         clfswm-second-mode.lisp to clfswm.lisp.
1011         * src/clfswm-util.lisp (identify-key): Show the documentation for
1012         the function bound on a key.
1013         (with-movement): Move with-movement,
1014         current-frame-fill/pack/resize-*  from bindings-second-mode.lisp
1015         to clfswm-util.lisp.
1017         * src/clfswm-menu.lisp: New menu system that let user change keys
1018         or functions associated to keys.
1020 2008-04-18  Philippe Brochard  <pbrochard@common-lisp.net>
1022         * src/clfswm-internal.lisp (show-all-children): Display-child is
1023         the first child by default. Solve a bug with father-p.
1025 2008-04-17  Philippe Brochard  <pbrochard@common-lisp.net>
1027         * src/clfswm-internal.lisp (add-frame): Add frame return the
1028         created frame.
1029         (show-all-children): Move the size computation outside the
1030         show-child part.
1032         * src/bindings-second-mode.lisp (with-movement): Redisplay only
1033         the current child.
1035         * src/clfswm-util.lisp (mouse-click-to-focus-generic): Redisplay
1036         only the current child.
1038         * src/clfswm-internal.lisp (show-all-children): New display-child
1039         parameter to display only the desired child and its children.
1040         (select-next/previous-child): Only display the current child.
1042 2008-04-14  Philippe Brochard  <pbrochard@common-lisp.net>
1044         * src/clfswm.lisp (init-display): Move the default frame creation
1045         on the default init hook.
1047         * src/clfswm-keys.lisp (define-ungrab/grab): Handle all keysyms in
1048         the main mode (for example: "1" on an azerty keyboard).
1050 2008-04-13  Philippe Brochard  <pbrochard@common-lisp.net>
1052         * src/clfswm-keys.lisp (find-key-from-code): Better handle of
1053         keysyms. Revert to old grabbing method for the main mode.
1055 2008-04-12  Philippe Brochard  <pbrochard@common-lisp.net>
1057         * src/clfswm.lisp (init-display): Add key handling on no focus
1058         window and on frame windows.
1060 2008-04-11  Philippe Brochard  <pbrochard@common-lisp.net>
1062         * src/clfswm.lisp (main): Keyboard handle strategie change: Grab
1063         all keys by default and replay just what is needed. No change for
1064         the second mode.
1066         * src/clfswm-keys.lisp: remove grab/ungrab main keys.
1067         (find-key-from-code): Test for shift and not shift presence.
1069 2008-04-09  Philippe Brochard  <pbrochard@common-lisp.net>
1071         * src/clfswm-internal.lisp (switch-to-root-frame): show later -
1072         new key parameter to have less flickering.
1074 2008-04-07  Philippe Brochard  <pbrochard@common-lisp.net>
1076         * src/bindings-second-mode.lisp (frame-layout-once-menu): Set the
1077         layout only one time and revert to no-layout to freely handle
1078         frames.
1080         * src/clfswm-nw-hooks.lisp
1081         (open-in-new-frame-in-root-frame-nw-hook): Tile layout with spaces
1082         with new created window.
1084         * src/clfswm-layout.lisp (register-layout): Now register
1085         automatically a once layout to set the layout only one time and
1086         revert to no-layout to freely handle frames.
1088 2008-04-05  Philippe Brochard  <pbrochard@common-lisp.net>
1090         * src/clfswm-nw-hooks.lisp (leave-focus-frame-nw-hook): New
1091         nw-hook: Open the next window in the current frame and leave the
1092         focus to the current child.
1094 2008-04-04  Philippe Brochard  <pbrochard@common-lisp.net>
1096         * src/bindings-second-mode.lisp: Add keys definitions to
1097         bind-or-jump in the second mode.
1099         * src/clfswm-util.lisp (bind-or-jump): remove the auto-defining
1100         macro for bind-or-jump-(1|2|3...).
1102         * src/clfswm-keys.lisp (define-define-key/mouse): Allow additional
1103         arguments to function. This allow to do things like:
1104         (define-main-key (key) 'my-function 10 20 'foo) -> 10 20 and 'foo
1105         are passed to my-function on key press.
1107 2008-04-03  Philippe Brochard  <pbrochard@common-lisp.net>
1109         * src/clfswm-util.lisp (bind-or-jump): New (great) function.
1111 2008-04-02  Philippe Brochard  <pbrochard@common-lisp.net>
1113         * src/clfswm-internal.lisp (child-fullname): New function
1115         * src/clfswm-info.lisp (info-mode-menu): Add an explicit optional
1116         docstring in info-mode-menu. An item can be
1117         '((key function) (key function)) or with docstring
1118         '((key function "documentation 1") (key function "bla bla") (key function))
1120         * src/tools.lisp (ensure-n-elems): New function.
1122         * src/bindings-second-mode.lisp: Bind Alt+mouse-1/3 to move or
1123         resize a frame or the window's father.
1125         * src/clfswm.lisp (init-display): Remove tile-space-layout by
1126         default on the root frame.
1128         * src/clfswm-util.lisp (move/resize-frame): Add standard event
1129         hooks handlers (map-request, configure-notify...)
1131         * src/clfswm-internal.lisp (adapt-child-to-father): Limit minimal
1132         child size to 1x1.
1134 2008-04-01  Philippe Brochard  <pbrochard@common-lisp.net>
1136         * src/bindings.lisp: Bind Alt+mouse-1/3 to move or resize a frame
1137         or the window's father.
1139         * src/clfswm-util.lisp (mouse-click-to-focus-generic): Stop button
1140         event only if there is a geometry change.
1141         (mouse-focus-move/resize-generic): Generic function to move or
1142         resize a frame or a window father frame.
1144 2008-04-01  Philippe Brochard  <pbrochard@common-lisp.net>
1146         * src/clfswm-internal.lisp (show-all-children): Return t if there
1147         is a geometry change.
1149 2008-03-30  Philippe Brochard  <pbrochard@common-lisp.net>
1151         * src/bindings.lisp (Up/Down): Swap select previous/next level.
1153         * src/bindings-second-mode.lisp (Up/Down): Swap select previous/next level.
1155         * src/clfswm.lisp (init-display): Create a default frame in the root frame.
1157         * src/clfswm-internal.lisp (place-frame): Place frame from real (pixel) coordinates.
1158         (with-all-*): Reverse the child list to manage the first child last (like in
1159         show-all-children).
1161         * src/config.lisp (*create-frame-on-root*): New variable: Create a new frame on the
1162         root window only if true.
1164         * src/clfswm-util.lisp (mouse-click-to-focus-generic): Create a new frame on the
1165         root window only if *create-frame-on-root* is true.
1167         * src/bindings-second-mode.lisp (sm-mouse-click-to-focus-generic): Create a new frame
1168         on the root window.
1170 2008-03-29  Philippe Brochard  <pbrochard@common-lisp.net>
1172         * src/bindings-second-mode.lisp (sm-mouse-click-to-focus-generic): Focus, move and resize
1173         the current child (even if it's a window).
1175 2008-03-28  Philippe Brochard  <pbrochard@common-lisp.net>
1177         * src/clfswm-util.lisp (mouse-click-to-focus-and-move)
1178         (mouse-click-to-focus-and-resize): New functions.
1180         * src/clfswm-internal.lisp (*-fl->px): Convert float coordinates to pixel.
1181         (*-px->fl): Convert pixel coordinates to float.
1183         * src/tools.lisp (call-hook): Move call-hook to tools.lisp.
1185 2008-03-27  Philippe Brochard  <pbrochard@common-lisp.net>
1187         * src/clfswm-layout.lisp (no-layout): Use :first-only to raise only the
1188         first child.
1190         * src/clfswm-internal.lisp (hide-all): Split hide-all-children in hide-all
1191         and hide-all-children.
1192         (raise-if-needed): New function.
1193         (show-child): Use a first-p parameter to raise windows only when they are
1194         first child.
1196 2008-03-26  Philippe Brochard  <pbrochard@common-lisp.net>
1198         * src/clfswm-internal.lisp (select-next/previous-level): Don't use show-all-children
1199         -> less flickering.
1201 2008-03-25  Philippe Brochard  <pbrochard@common-lisp.net>
1203         * src/clfswm-info.lisp (keys-from-list): new function.
1205         * src/*: rename 'childs' in 'children'.
1207         * src/*: rename 'group' in 'frame'.
1209 2008-03-22  Philippe Brochard  <pbrochard@common-lisp.net>
1211         * src/clfswm-pack.lisp (explode-group/explode-current-group): new functions.
1213 2008-03-21  Philippe Brochard  <pbrochard@common-lisp.net>
1215         * src/clfswm-pack.lisp: Pack, Fill, Resize functions.
1217 2008-03-16  Philippe Brochard  <pbrochard@common-lisp.net>
1219         * src/clfswm-nw-hooks.lisp: Register system for new window hooks.
1220         Bind control+o to open the next window in a new group in the root group
1221          (as open in next window in a new workspace in 0801 version).
1223 2008-03-15  Philippe Brochard  <pbrochard@common-lisp.net>
1225         * src/clfswm-util.lisp (show/hide-all-groups-info/key): Show/hide all groups info
1226         window.
1228 2008-03-14  Philippe Brochard  <pbrochard@common-lisp.net>
1230         * bindings-second-mode.lisp ("ISO_Left_Tab"): Use ISO_Left_Tab
1231         instead of Tab for select-previous-child.
1233 2008-03-13  Philippe Brochard  <pbrochard@common-lisp.net>
1235         * clfswm-util.lisp (force-window-in-group/force-window-center-in-group):
1236         new functions.
1238 2008-03-11  Philippe Brochard  <pbrochard@common-lisp.net>
1240         * clfswm-util.lisp (identify-key): Display the documentation
1241         associated to keys when identifying a key.
1243 2008-03-10  Xavier Maillard  <xma@gnu.org>
1245         * contrib/clfswm: Complete rewrite of the script. Detect error and
1246         act accordingly. Add command line arguments to configure the
1247         script execution. User can now choose different common lisp
1248         implementation (clisp and sbcl only), choose where to store the
1249         dumped image, where to find clfswm source.
1251 2008-03-09  Philippe Brochard  <pbrochard@common-lisp.net>
1253         * clfswm-internal.lisp (process-new-window): Beginning of new
1254         window hook: each group have a hook to tell what he wants to do
1255         with the new created window.
1257 2008-03-08  Xavier Maillard  <xma@gnu.org>
1259         * contrib/clfswm: New script. Dump a CLISP image of CLFSWM then
1260         call the resulting executable.
1262         * clfswm.lisp (read-conf-file): Check for the user config file in
1263         XDG_CONFIG_HOME *first*. Freedesktop.org standards should be
1264         prefered whenever possible.
1266 2008-02-27  Philippe Brochard  <pbrochard@common-lisp.net>
1268         * clfswm-layout.lisp (*-layout): Add an optional raise-p
1269         parameter in each layout.
1271 2008-02-26  Philippe Brochard  <pbrochard@common-lisp.net>
1273         * clfswm-util.lisp (copy/cut-current-child): Does not affect the
1274         root group.
1275         (copy/move-current-child-by-name/number): new functions
1276         (focus-group-by-name/number): new functions
1277         (delete-group-by-name/number): new functions
1279 2008-02-24  Philippe Brochard  <pbrochard@common-lisp.net>
1281         * ************************************************************ *
1282         *: Major update - No more reference  to workspaces. The main   *
1283         structure is a tree of groups or application windows.          *
1284         * ************************************************************ *
1286 2008-02-07  Philippe Brochard  <pbrochard@common-lisp.net>
1288         * clfswm.lisp (read-conf-file): Read configuration in
1289         $HOME/.clfswmrc or in /etc/clfswmrc or in
1290         $XDG_CONFIG_HOME/clfswm/clfswmrc.
1291         (xdg-config-home): Return the content of $XDG-CONFIG-HOME (default
1292         to $HOME/.config/).
1294 2008-01-18  Philippe Brochard  <pbrochard@common-lisp.net>
1296         * clfswm-internal.lisp (show-all-group): Use *root* and *root-gc*
1297         by default.
1299 2008-01-03  Philippe Brochard  <pbrochard@common-lisp.net>
1301         * clfswm-internal.lisp (find-window-group): New function.
1303         * clfswm*: Change to make clfswm run with clisp/new-clx.
1305 2008-01-01  Philippe Brochard  <pbrochard@common-lisp.net>
1307         * clfswm-util.lisp (query-show-paren): Add show parent matching in
1308         query string.
1309         (query-string): Bind control+k to delete end of line.
1311         * clfswm-second-mode.lisp (draw-second-mode-window): Display
1312         the action on mouse motion in second mode.
1314         * clfswm.lisp (handle-exposure): Redisplay groups on exposure
1315         event but do not clear the root window.
1316         (handle-configure-request): Adjust unmanaged window from there
1317         request.
1319         * clfswm-internal.lisp (process-new-window): Adjust new window
1320         with the specified hints (max/min/base width/height).
1322 2007-12-31  Philippe Brochard  <pbrochard@common-lisp.net>
1324         * clfswm.lisp (handle-configure-request): Send an Configuration
1325         Notify event. This solve a bug with xterm and rxvt who takes some
1326         times to be mapped. Now there is no delay.
1328         * bindings-second-mode.lisp (define-shell): Run programs after
1329         living the second mode.
1331 2007-12-30  Philippe Brochard  <pbrochard@common-lisp.net>
1333         * clfswm-internal.lisp (process-new-window): Do not crop transient
1334         window to group size.
1335         (adapt-window-to-group): Do not crop transient window to group
1336         size.
1338         * clfswm.lisp (handle-configure-request): Adapt just the window to
1339         its group and don't take care of the configure request. Remove the
1340         bug with the Gimp outside the group and speed up the window
1341         manipulation.
1342         (handle-exposure): Remove show-all-group on exposure event
1343         -> Speed up.
1345 2007-12-29  Philippe Brochard  <pbrochard@common-lisp.net>
1347         * clfswm-util.lisp (circulate-group-up-copy-window)
1348         (circulate-group-down-copy-window)
1349         (circulate-workspace-up-copy-group)
1350         (circulate-workspace-down-copy-group): Prevent the copy of the
1351         same window in the same workspace.
1353         * bindings-second-mode.lisp (release-copy-selected-window)
1354         (release-copy-selected-group): Prevent the copy of the same window
1355         in the same workspace.
1357         * clfswm-pager.lisp (generic-pager-move-window-on-previous-line)
1358         (generic-pager-move-window-on-next-line): Remove the copy
1359         property.
1360         (generic-pager-move-group-on-next-workspace)
1361         (generic-pager-move-group-on-previous-workspace): Prevent the copy
1362         of the same window in the same workspace.
1364         * bindings-pager.lisp (mouse-pager-copy-selected-window-release)
1365         (mouse-pager-copy-selected-group-release): Prevent the copy of the
1366         same window in the same workspace.
1368         * tools.lisp (setf/=): new macro to set a variable only when
1369         necessary.
1371         * clfswm-internal.lisp (adapt-window-to-group): use set/= to set
1372         x, y... only when necessary.
1374 2007-12-28  Philippe Brochard  <pbrochard@common-lisp.net>
1376         * clfswm.lisp (handle-configure-notify, *configure-notify-hook*):
1377         new function and hook: force windows to stay in its group (solve a
1378         bug with the Gimp).
1380 2007-12-25  Philippe Brochard  <pbrochard@common-lisp.net>
1382         * bindings-second-mode.lisp (mouse-motion): use hide-group to have
1383         less flickering when moving/resizing groups.
1385         * clfswm-internal.lisp (hide-group): new function.
1386         (show-all-group): clear-all: new parameter.
1388 2007-12-22  Philippe Brochard  <pbrochard@common-lisp.net>
1390         * clfswm-keys.lisp (define-define-key): undefine-*-multi-name: new
1391         macro.
1392         * clfswm*: Color change for the pager. Typo or better description
1393         in bindings definitions. Define bindings for a qwerty keyboard by
1394         default. dot-clfswmrc show examples to switch to an azerty
1395         keyboard.
1396         License change to GPL v3.
1397         * config.lisp: new file - group all globals variables in this
1398         file.
1400 2007-08-26  Philippe Brochard  <pbrochard@common-lisp.net>
1402         * xlib-util.lisp (hide-window): Remove structure-notivy events
1403         when hidding a window.
1405 2007-05-16  Philippe Brochard  <pbrochard@common-lisp.net>
1407         * package.lisp (*sm-property-notify-hook*): Readded
1408         property-notify-hook in second mode.
1410 2007-05-15  Philippe Brochard  <pbrochard@common-lisp.net>
1412         * clfswm-keys.lisp (produce-doc-html): Better clean up for strings.
1414 2007-05-13  Philippe Brochard  <pbrochard@common-lisp.net>
1416         * clfswm-pack.lisp (tile-current-workspace-to/right/left/top/bottom):
1417         Tile the current workspace with the current window on one side and
1418         others on the other (this emulate the larswm, dwm, wmii way). See
1419         the default configuration file to enable this mode by default.
1421         * clfswm-pager.lisp (pager-tile-current-workspace-to): idem for
1422         the pager.
1424 2007-05-12  Philippe Brochard  <pbrochard@common-lisp.net>
1426         * clfswm-pager.lisp (pager-draw-window-in-group): Add
1427         ensure-printable to print windows name even with non-ascii
1428         characters.
1430 2007-05-11  Philippe Brochard  <pbrochard@common-lisp.net>
1432         * clfswm-pager.lisp (pager-explode-current-group): Create a new
1433         group for each window in group.
1434         (pager-implode-current-group): Move all windows in workspace to
1435         one group and remove other groups.
1437         * clfswm-pack.lisp (explode-group): Create a new group for each
1438         window in group.
1439         (implode-group): Move all windows in workspace to one group and
1440         remove other groups.
1442         * clfswm-util.lisp (identify-key): Remove local configuration
1443         variables and made them available for configuration from
1444         package.lisp.
1445         (query-string): idem.
1447 2007-04-29  Philippe Brochard  <pbrochard@common-lisp.net>
1449         * netwm-util.lisp: Start of NetWM compliance.
1450         Add a Netwm client list gestion.
1452 2007-04-28  Philippe Brochard  <pbrochard@common-lisp.net>
1454         * clfswm-internal.lisp (create-group-on-request): open a new group
1455         only when the current group is not empty.
1457         * bindings-second-mode.lisp (define-second-key-#\o-control): Fix a
1458         bug with null workspace.
1460         * clfswm-pager.lisp (pager-handle-event): Add a hook
1461         system. This hooks can be changed in the user configuration file.
1463         * package.lisp: All colors and font variables are set in
1464         package.lisp and can be configured in the user configuration
1465         file.
1466         Note: If you have configured some less ugly colors (esp. for the
1467         pager) don't hesitate to let me know :)
1469         * clfswm-second-mode.lisp (sm-handle-event): Add a hook
1470         system. This hooks can be changed in the user configuration file.
1472         * clfswm.lisp (handle-event): Add a hook system. This hooks can be
1473         changed in the user configuration file (~/.clfswmrc)
1475 2007-04-25  Philippe Brochard  <pbrochard@common-lisp.net>
1477         * clfswm-util.lisp (stop-all-pending-actions): new function: reset
1478         arrow action, open next window in new workspace/group.
1480         * bindings.lisp (stop-all-pending-actions): new binding.
1481         (open-next-window-in-new-group-once): Open the next windows in a
1482         new group (only once) or open all new windows in a new group (like
1483         others windows managers).
1485 2007-04-22  Philippe Brochard  <pbrochard@common-lisp.net>
1487         * clfswm.lisp (read-conf-file): New function to read a lisp
1488         configuration file at startup.
1489         (focus-group-under-mouse): Check if group isn't the current group
1490         ( prevent a bug with unclutter ).
1492 2007-03-02  Philippe Brochard  <pbrochard@common-lisp.net>
1494         * bindings.lisp (run-program-from-query-string): A program can be
1495         launch from a input query window.
1497 2007-03-01  Philippe Brochard  <pbrochard@common-lisp.net>
1499         * clfswm-info.lisp: Fix a bug with banish pointer in info mode.
1501 2007-02-28  Philippe Brochard  <pbrochard@common-lisp.net>
1503         * clfswm.lisp (process-new-window): One can now open the next
1504         window in a workspace called by its number.
1506         * clfswm-util.lisp (query-font-string): Minimal editing
1507         capabilities.
1508         (eval-from-string): And an REPL in the window manager... :)
1510 2007-02-26  Philippe Brochard  <pbrochard@common-lisp.net>
1512         * clfswm.lisp (process-new-window): One can now open the next
1513         window in a new workspace or a new group.
1515         * clfswm-pager.lisp (pager-mode): Display the next arrow action
1516         with the hidden windows.
1518         * clfswm.lisp (second-key-mode): Display the current workspace
1519         number and the next arrow action in the state window.
1521         * clfswm-pager.lisp (pager-mode): Hide all windows before leaving
1522         the pager mode and then redisplay only the current workspace.
1524 2007-02-25  Philippe Brochard  <pbrochard@common-lisp.net>
1526         * clfswm.lisp (add-workspace): Workspaces are now numbered. So
1527         they can be focused with a keypress, sorted or renumbered.
1529 2007-02-24  Philippe Brochard  <pbrochard@common-lisp.net>
1531         * clfswm-pager.lisp (pager-mode): Remove multiple silly
1532         pager-draw-display. This prevent a lot of flickering in the
1533         pager.
1535         * clfswm.lisp: Remove all display-force-output and replace them
1536         with only one display-finish-output in the event loop.
1538 2006-11-06  Philippe Brochard  <pbrochard@common-lisp.net>
1540         * clfswm-pager.lisp (pager-center-group): New function - center a
1541         group at the middle of the screen.
1543         * clfswm-pack.lisp (center-group): New function - center a group
1544         at the middle of the screen.
1546         * clfswm.lisp (show-group): Add a cross line under the group.
1547         (show-group): Group are showned even if fullscreened.
1548         (init-display): Add an exposure event on the root window.
1550 2006-11-05  Philippe Brochard  <pbrochard@common-lisp.net>
1552         * package.lisp (*default-group*): Default group is the same size
1553         of a fullscreened group.
1555         * bindings*: Use shift to move, control+shift to copy.
1557         * *.lisp: Add comments for configuration or alternatives. So grep
1558         for CONFIG to see where you can configure clfswm. And grep for
1559         Alternative to use some commented code.
1561         * clfswm.lisp (second-key-mode): Use a single window to show the
1562         second mode. See for alternatives at the end of this file.
1564 2006-11-03  Philippe Brochard  <pbrochard@common-lisp.net>
1566         * clfswm-keys.lisp (define-define-key/mouse): Factorisation in a
1567         macro of key and mouse definitions.
1568         (define-define-key/mouse): Use state instead of modifiers list
1569         this fix a bug when the modifiers list is not in the rigth order.
1571         * clfswm.lisp (second-key-mode): Add a colored border in second mode.
1573 2006-11-02  Philippe Brochard  <pbrochard@common-lisp.net>
1575         * clfswm-info.lisp (info-mode): Add an info mode.
1577 2006-11-01  Philippe Brochard  <pbrochard@common-lisp.net>
1579         * clfswm.lisp (process-new-window): Change border size for
1580         transient windows.
1581         (show-all-windows-in-workspace): Unhide all windows even when the
1582         current group is in fullscreen mode.
1584 2006-10-26  Philippe Brochard  <pbrochard@common-lisp.net>
1586         * clfswm-util.lisp (identify-key): Add an exposure handle-event to
1587         redisplay the identify window after a terminal switch.
1589         * clfswm-pager.lisp (pager-mode): Add an exposure handle-event to
1590         redisplay the pager after a terminal switch.
1592 2006-10-24  Philippe Brochard  <pbrochard@common-lisp.net>
1594         * clfswm-util.lisp (identify-key): Add a window to display
1595         the keys to identify on screen.
1597         * bindings.lisp, bindings-pager.lisp: Define same keys to
1598         move/copy groups/windows in second mode and in pager.
1600         * clfswm.lisp (handle-event*): Same version in all clfswm (fix some
1601         drawing lags).
1602         (show-all-windows-in-workspace): unhide window before adapting it
1603         to group.
1605 2006-10-23  Philippe Brochard  <pbrochard@common-lisp.net>
1607         * clfswm.lisp (handle-event): Revert to an older version.
1609 2006-10-18  Philippe Brochard  <pbrochard@common-lisp.net>
1611         * clfswm-util.lisp (force-window-in-group)
1612         (force-window-center-in-group): New functions for transient windows.
1614         * clfswm-pager.lisp (pager-remove-current-workspace/group):
1615         bugfix: hide all windows before removing group or workspace.
1617 2006-10-17  Philippe Brochard  <pbrochard@common-lisp.net>
1619         * bindings-pager.lisp (mouse-pager-move-selected-group)
1620         (mouse-pager-copy-selected-group)
1621         (mouse-pager-move-selected-window)
1622         (mouse-pager-copy-selected-window, mouse-pager-rotate-window-up)
1623         (mouse-pager-rotate-window-down): New functions to have mouse in
1624         pager mode.
1626         * clfswm-pager.lisp (pager-swap-window)
1627         (pager-copy-group-on-next/previous-workspace)
1628         (pager-copy-window-on-next/previous-line): New functions
1630 2006-10-15  Philippe Brochard  <pbrochard@common-lisp.net>
1632         * clfswm-pager.lisp (pager-move-window-on-next/previous-line,
1633         (pager-move-group-on-next/previous-workspace): new functions.
1635         * clfswm-pack.lisp (resize-half-x-x-current-group): resize group
1636         to its half size (new functions).
1638 2006-10-11  Philippe Brochard  <pbrochard@common-lisp.net>
1640         * clfswm-pager.lisp: workspaces, groups and windows can now be
1641         selectionned with the keyboard or the mouse.
1643 2006-10-09  Philippe Brochard  <pbrochard@common-lisp.net>
1645         * clfswm-pager.lisp (pager-select-workspace-right/left):
1646         workspaces can now be selectionned with the keyboard.
1648 2006-10-08  Philippe Brochard  <pbrochard@common-lisp.net>
1650         * clfswm-keys.lisp (undefine-main-key, undefine-second-key, undefine-mouse-action):
1651         new function to remove a previous defined key or mouse combination.
1653 2006-10-07  Philippe Brochard  <pbrochard@common-lisp.net>
1655         * clfswm.lisp (main): Check for access error in init-display.
1657         * clfswm-keys.lisp (define-ungrab/grab): check for keysym and
1658         keycode before grabbing.
1660         * bindings.lisp: Remove nlambda and use defun to keep the function
1661         documentation with clisp.
1662         (define-shell): new macro to define shell command for the second
1663         mode.
1665 2006-10-06  Philippe Brochard  <pbrochard@common-lisp.net>
1667         * clfswm-keys.lisp (define-ungrab/grab): use a cond instead of a
1668         boggus typecase.
1670 2006-10-05  Philippe Brochard  <pbrochard@common-lisp.net>
1672         * bindings.lisp (accept-motion): Move group bugfix in upper mouse
1673         workspace circulation.
1675         * clfswm-util.lisp (absorb-orphan-window): new function.
1677         * clfswm-keys.lisp: Keysyms support.
1679 2006-10-02  Philippe Brochard  <pbrochard@common-lisp.net>
1681         * clfswm.lisp (show-group): Use one gc for all groups and not one
1682         per group.
1684 2006-10-01  Philippe Brochard  <pbrochard@common-lisp.net>
1686         * bindings.lisp (define-second-key (#\l :mod-1)): fix a typo.
1688         * clfswm.lisp (adapt-window-to-group): Adapt only windows with
1689         width and height outside group.
1691 2006-09-28  Philippe Brochard  <pbrochard@common-lisp.net>
1693         * clfswm.lisp: First public release.