1 2010-09-05 Philippe Brochard <pbrochard@common-lisp.net>
3 * src/xlib-util.lisp (with-xlib-protect): Add a
4 with-simple-restart on top of body execution.
6 2010-09-04 Philippe Brochard <pbrochard@common-lisp.net>
8 * src/clfswm.lisp (main-loop): Protect all xlib functions with an
11 * src/xlib-util.lisp (handle-event): use with-xlib-protect only in
12 handle-event. Add a with-simple-restart to prevent a
13 clisp/new-lisp infinite loop.
15 2010-08-30 Philippe Brochard <pbrochard@common-lisp.net>
17 * src/clfswm-corner.lisp (present-clfswm-terminal): Make the
18 clfswm terminal working even on xterm title changes.
20 2010-08-29 Philippe Brochard <pbrochard@common-lisp.net>
22 * src/clfswm-util.lisp (run-other-window-manager): Update for
25 * src/tools.lisp (do-execute): New parameter io to change the
28 * src/clfswm-util.lisp (hide-current-child): Prevent from removing
31 * src/clfswm-internal.lisp (child-member): New predicate.
32 (child-remove): New function.
34 * src/*.lisp: Use child-member and child-remove everywhere it's
37 2010-08-28 Philippe Brochard <pbrochard@common-lisp.net>
39 * src/clfswm.lisp (main-loop): Ensure that all events have been
40 processed after a process-event.
42 * src/clfswm-internal.lisp (is-in-current-child-p): New function.
44 2010-08-27 Philippe Brochard <pbrochard@common-lisp.net>
46 * src/clfswm.lisp (main-mode:configure-request): Raise the window
47 only when present on the current child and focus it accordingly.
49 2010-08-26 Philippe Brochard <pbrochard@common-lisp.net>
51 * src/clfswm-circulate-mode.lisp (circulate-loop-function):
52 Use is-a-key-pressed-p.
54 * src/xlib-util.lisp (is-a-key-pressed-p): New predicate.
56 * src/clfswm-keys.lisp (define-ungrab/grab): Use all values
57 returned by xlib:keysym->keycodes.
59 * src/*.lisp: Use the new child-equal-p to compare children. This
60 prevent a bug with sbcl/cmucl when the standard equal function
61 does not work with xlib:window.
63 * src/clfswm-internal.lisp (child-equal-p): New predicate.
65 2010-08-25 Philippe Brochard <pbrochard@common-lisp.net>
67 * src/clfswm-generic-mode.lisp (generic-mode): Use an
68 xlib:event-listen before processing event with
69 xlib:process-event. This prevent a bug with CLX threaded
70 implementation like sbcl.
72 * src/clfswm.lisp (main-loop): Use an xlib:event-listen before
73 processing event with xlib:process-event. This prevent a bug with
74 CLX threaded implementation like sbcl.
76 2010-08-17 Philippe Brochard <pbrochard@common-lisp.net>
78 * contrib/server/key.lisp (ushell-sh): Add ccl and ecl support.
80 * src/xlib-util.lisp (compress-motion-notify): Use a loop instead
83 * src/clfswm-internal.lisp (with-find-in-all-frames): New macro.
84 (find-parent-frame, find-frame-window, find-frame-by-name)
85 (find-frame-by-number): Use with-find-in-all-frames to search in
86 frames in the right order.
88 * src/clfswm-util.lisp (mouse-click-to-focus-generic): Fix an
89 unwanted flickering with unmanaged windows.
91 2010-08-16 Philippe Brochard <pbrochard@common-lisp.net>
93 * src/package.lisp: Remove event handler hooks as they're not
94 needed anymore (To replace them: use closure and define-handler).
96 * src/xlib-util.lisp (move-window, resize-window)
97 (wait-mouse-button-release): Use a generic mode.
99 * src/*.lisp: Replace the case to handle event with a more (tricky)
100 lispy method which bind a function to each keywords associated
103 2010-07-23 Philippe Brochard <pbrochard@common-lisp.net>
105 * src/clfswm-util.lisp (delete-current-child): Invert bindings and
106 menu entry between delete-current-child and remove-current-child.
107 ie: Delete a child and its children in all frames by default.
109 2010-07-21 Philippe Brochard <pbrochard@common-lisp.net>
111 * src/package.lisp: Add a placement configuration group.
113 * src/binding*.lisp: Bind control+g to escape the current action
116 * src/clfswm-internal.lisp
117 (delete-child-and-children-in-all-frames): New function and
118 binding: Second mode - Control+Delete delete the current child and
119 its children in all frames (ie: close the current child and its
122 2010-07-20 Philippe Brochard <pbrochard@common-lisp.net>
124 * src/clfswm-internal.lisp (remove-child-in-frame): Do not destroy
125 the frame window and the frame gc. Close a very annoying bug when
126 cuting/pasting a frame or moving a child over frames with the
129 * src/clfswm-util.lisp (mouse-click-to-focus-generic): Redisplay
130 all children in *current-root* after moving/resizing a frame.
132 2010-07-18 Philippe Brochard <pbrochard@common-lisp.net>
134 * src/clfswm-util.lisp (delete-focus-window)
135 (destroy-focus-window): Remove child in parent frame before
138 2010-07-16 Philippe Brochard <pbrochard@common-lisp.net>
140 * src/clfswm-util.lisp (identify-key): Add a timeout in
142 (mouse-click-to-focus-generic): Use find-child-under-mouse instead
143 of the window passed by xlib:process-event.
145 * src/xlib-util.lisp (move-window, resize-window)
146 (wait-mouse-button-release): Add a timeout in xlib:process-event.
148 2010-04-11 Philippe Brochard <pbrochard@common-lisp.net>
150 * src/clfswm-util.lisp (run-other-window-manager): Add the ability
151 to launch an other window manager and to return to clfswm.
153 2010-03-18 Philippe Brochard <pbrochard@common-lisp.net>
155 * src/clfswm-layout.lisp (set-tile-space-layout): Set default
158 2009-12-15 Philippe Brochard <pbrochard@common-lisp.net>
160 * src/clfswm.lisp (main-loop): Add a *loop-hook* parameter and a
163 * src/clfswm-generic-mode.lisp (generic-mode): Add a loop-hook
164 parameter and a loop timeout.
166 2009-12-05 Philippe Brochard <pbrochard@common-lisp.net>
168 * src/clfswm.lisp (main): Add an alternate configuration filename
171 * load.lisp: Add a debuging code example.
173 2009-11-14 Philippe Brochard <pbrochard@common-lisp.net>
175 * src/clfswm-configuration.lisp (create-configuration-menu): New
176 menu to configure all clfswm variables while clfswm is running.
178 2009-11-12 Philippe Brochard <pbrochard@common-lisp.net>
180 * src/clfswm-util.lisp (save-configuration-variables): New
181 function to save all configuration variables in clfswmrc.
183 2009-11-11 Philippe Brochard <pbrochard@common-lisp.net>
185 * src/clfswm-info.lisp (info-mode): Begining of mouse support in
187 (set-default-info-keys): Add cursor key support in info mode.
189 2009-11-08 Philippe Brochard <pbrochard@common-lisp.net>
191 * contrib/reboot-halt.lisp: Add a Suspend/Reboot/Halt menu in
194 * src/clfswm.lisp (main): Add a read-conf-file-p parameter to
195 prevent reading the configuration file (this may be useful to
196 produce the original documentation without user modifications
197 with the rc configuration file).
199 2009-11-07 Philippe Brochard <pbrochard@common-lisp.net>
201 * src/bindings-second-mode.lisp (set-default-second-keys):
202 Simplification of Escape key to close/kill/remove the focus window
203 and unhide all windows.
205 * src/bindings.lisp (set-default-main-keys): Simplification of
206 Escape key to close/kill/remove the focus window and unhide all
209 * src/clfswm-util.lisp (ask-close/kill-current-window): Add remove
210 focus and unhide all windows capabilities.
212 2009-10-10 Philippe Brochard <pbrochard@common-lisp.net>
214 * contrib/mpd.lisp (start-gmpc): Add gmpc in the mpd menu.
216 2009-07-29 Philippe Brochard <pbrochard@common-lisp.net>
218 * src/clfswm-layout.lisp (tile-layout, tile-horizontal-layout):
219 Keep child order and don't make unnecessary child movement.
220 (one-column-layout, one-line-layout): New layouts.
222 2009-06-29 Philippe Brochard <pbrochard@common-lisp.net>
224 * contrib/cd-player.lisp: New file to handle the CD player.
226 * contrib/xmms.lisp: New file to handle the xmms player.
228 2009-06-28 Philippe Brochard <pbrochard@common-lisp.net>
230 * src/clfswm-layout.lisp (set-no-layout-remember-size): New layout:
231 Maximize windows in there frame - Leave frames to there actual
234 * src/bindings-second-mode.lisp (set-default-second-keys): Bind
235 "o" on set-open-in-new-frame-in-parent-frame-nw-hook.
237 2009-06-27 Philippe Brochard <pbrochard@common-lisp.net>
239 * contrib/keyb_fr.lisp: New file to handle an azerty keyboard.
241 2009-06-24 Philippe Brochard <pbrochard@common-lisp.net>
243 * contrib/mpd.lisp: Use a standard menu.
245 * src/clfswm-info.lisp: Use a standard menu for the help-menu.
247 2009-06-22 Philippe Brochard <pbrochard@common-lisp.net>
249 * contrib/mpd.lisp: New file to handle the Music Player Daemon (MPD)
251 2009-06-19 Philippe Brochard <pbrochard@common-lisp.net>
253 * src/clfswm-autodoc.lisp (produce-doc, produce-doc-html): Minor
256 2009-06-18 Philippe Brochard <pbrochard@common-lisp.net>
258 * src/config.lisp (get-fullscreen-size): One pixel adjustment
261 * src/clfswm-placement.lisp (*-child-placement): One pixel
264 2009-06-16 Philippe Brochard <pbrochard@common-lisp.net>
266 * src/clfswm-circulate-mode.lisp (draw-circulate-mode-window):
267 Ensure that all characters are printable.
269 * src/config.lisp (get-fullscreen-size): Adjust default fullscreen
272 * src/clfswm-placement.lisp (*-child-placement): Adjust
273 coordinates to one pixel in the current child.
275 2009-06-04 Philippe Brochard <pbrochard@common-lisp.net>
277 * src/clfswm-query.lisp (query-enter-function): Assign font before
278 width and height calculation.
280 2009-06-03 Philippe Brochard <pbrochard@common-lisp.net>
282 * src/xlib-util.lisp (banish-pointer): Use with-placement macro to
283 bannish the pointer in an arbitrary place.
285 * src/clfswm-info.lisp (info-mode): Use with-placement macro to
286 place the info window in an arbitrary place.
288 * src/clfswm-query.lisp (query-enter-function): Use with-placement
289 macro to place the query window in an arbitrary place.
291 * src/clfswm-placement.lisp: New file. Allow to place info windows
292 or query windows on an arbitrary place. Allow to bannish the
293 pointer on an arbitrary place.
295 2009-05-16 Philippe Brochard <pbrochard@common-lisp.net>
297 * src/clfswm-circulate-mode.lisp (reorder-child)
298 (reorder-brother): Unfocus windows before reordering children or
301 2009-05-13 Philippe Brochard <pbrochard@common-lisp.net>
303 * src/clfswm-circulate-mode.lisp (reorder-brother): Ensure that
304 the parent is a frame.
306 * src/clfswm-second-mode.lisp (sm-handle-motion-notify): Handle
307 motion with a default modifier.
309 * src/clfswm.lisp (handle-motion-notify): Handle motion with a
312 * src/clfswm-info.lisp (info-mode): Handle motion with a default
314 (info-mode): Optimization in loop function.
316 2009-05-10 Philippe Brochard <pbrochard@common-lisp.net>
318 * src/clfswm-circulate-mode.lisp (reorder-brother): Handle
319 root-frame correctly.
321 * clfswm.asd: Dependency fix for clfswm-generic-mode.
323 * src/clfswm-circulate-mode.lisp (reorder-child)
324 (reorder-brother): Handle empty frames.
325 (reorder-brother): Redisplay only the parent frame of the current
328 * src/clfswm-util.lisp (frame-toggle-maximize): Redisplay only the
329 parent frame of the current frame.
331 2009-05-09 Philippe Brochard <pbrochard@common-lisp.net>
333 * src/clfswm-util.lisp (frame-toggle-maximize): New function:
334 Maximize/Unmaximize the current frame in its parent frame.
336 * src/clfswm-layout.lisp (maximize-layout): New layout: Maximize
337 windows and frames in there parent frame.
339 2009-05-05 Philippe Brochard <pbrochard@common-lisp.net>
341 * src/*.lisp: Add support for Clozure Common Lisp (CCL).
343 * src/clfswm-circulate-mode.lisp (reorder-child)
344 (reorder-brother): Reinitialise on circulate type change
345 child to brother or brother to child.
347 * src/*.lisp (*): Use map-window instead of xlib:map-window. So
348 calls xlib:display-finish-output on each map-request. So speed up
351 * src/xlib-util.lisp (map-window): New function. Call
352 xlib:display-finish-output on each map request.
354 2009-04-28 Philippe Brochard <pbrochard@common-lisp.net>
356 * src/clfswm-second-mode.lisp (sm-handle-motion-notify):
357 Optimisation when drawing second mode window.
359 2009-04-27 Philippe Brochard <pbrochard@common-lisp.net>
361 * src/clfswm-circulate-mode.lisp (circulate-mode): Optimisation in
364 2009-04-22 Philippe Brochard <pbrochard@common-lisp.net>
366 * src/clfswm-util.lisp (run-program-from-query-string): Launch
367 command only with a return validation.
369 2009-04-22 Xavier Maillard <xma@gnu.org>
371 * src/clfswm-query.lisp (query-string): Use a generic mode.
373 2009-04-19 Xavier Maillard <xma@gnu.org>
375 * src/clfswm-info.lisp (info-mode): Use generic-mode for info-mode.
377 2009-04-18 Xavier Maillard <xma@gnu.org>
379 * src/clfswm-generic-mode.lisp (generic-mode): Add a generic mode
380 to define all other modes.
382 2009-04-05 Philippe Brochard <pbrochard@common-lisp.net>
384 * src/package.lisp (): Use *default-font-string* for all
387 * src/clfswm-info.lisp (info-mode): Ensure integer windows size.
389 2009-02-17 Philippe Brochard <pbrochard@common-lisp.net>
391 * src/xlib-util.lisp (null-size-window-p): Better check of null
394 2009-02-14 Philippe Brochard <pbrochard@common-lisp.net>
396 * src/clfswm.lisp (handle-map-request): Add a fix to manage
397 correctly fullscreen windows (SDL particularly).
399 2008-12-20 Philippe Brochard <pbrochard@common-lisp.net>
401 * src/xlib-util.lisp (get-color): Allocate colors only once -> fix
402 a segfault with clisp/new-clx.
404 * src/clfswm.lisp (handle-motion-notify): Add a needed window
407 * src/clfswm-second-mode.lisp (sm-handle-motion-notify): Add a
408 needed window argument.
410 2008-10-30 Philippe Brochard <pbrochard@common-lisp.net>
412 * src/xlib-util.lisp (wait-no-key-or-button-press)
413 (wait-a-key-or-button-press): Check buttons press/release correctly"
415 2008-10-28 Philippe Brochard <pbrochard@common-lisp.net>
417 * src/menu-def.lisp: Add children navigation menu in the movement
418 menu (select next/previous child/brother/level).
420 2008-10-26 Philippe Brochard <pbrochard@common-lisp.net>
422 * *: Rename 'sister' frame to 'brother' frame.
424 * src/clfswm-keys.lisp (unalias-modifiers): Convert a modifier
425 alias in a real modifier.
427 * src/package.lisp (*modifier-alias*): New list of modifier alias
428 For example: :alt is :mod-1, :numlock is :mod-2...
430 * src/tools.lisp (remove-hook): New function.
432 * src/clfswm-keys.lisp (with-capslock, without-capslock)
433 (with-numlock, without-cnumlock): New functions.
435 2008-10-25 Philippe Brochard <pbrochard@common-lisp.net>
437 * src/clfswm-info.lisp: Use the *binding-hook* to create info
438 keys and mouse bindings.
440 * src/bindings-second-mode.lisp: Use the *binding-hook* to create
441 second keys and mouse bindings.
443 * src/bindings.lisp: Use the *binding-hook* to create main keys
446 2008-10-10 Philippe Brochard <pbrochard@common-lisp.net>
448 * src/clfswm-menu.lisp (open-menu): Remember parent menu to undo
451 2008-10-09 Philippe Brochard <pbrochard@common-lisp.net>
453 * src/menu-def.lisp: Use a menu instead of a function for the
456 2008-10-08 Philippe Brochard <pbrochard@common-lisp.net>
458 * src/clfswm-util.lisp (show-standard-menu): Display the standard
459 menu from the 'update-menus' command.
461 2008-10-07 Philippe Brochard <pbrochard@common-lisp.net>
463 * src/clfswm-query.lisp (query-string): Do not ungrab keyboard if
464 it's already grabbed.
466 * src/clfswm-internal.lisp (display-frame-info): Use configurable
467 colors and fix a bug with background.
468 (display-frame-info): Set window background when displaying info.
470 2008-10-06 Philippe Brochard <pbrochard@common-lisp.net>
472 * src/xlib-util.lisp (my-character->keysyms): Use a macro to avoid
473 warning with clisp/new-clx.
475 2008-10-04 Philippe Brochard <pbrochard@common-lisp.net>
477 * src/clfswm-util.lisp (jump-to-slot): Prevent to jump on a
480 2008-09-23 Philippe Brochard <pbrochard@common-lisp.net>
481 * *: **** Release 0809 ****
483 2008-09-23 Philippe Brochard <pbrochard@common-lisp.net>
485 * src/clfswm-util.lisp (ensure-unique-name): New function and menu
487 (ensure-unique-number): New function and menu entry.
489 2008-09-22 Philippe Brochard <pbrochard@common-lisp.net>
491 * src/clfswm-nw-hooks.lisp (named-frame-nw-hook): New new window
492 hook: open the next window in a named frame.
493 (numbered-frame-nw-hook): New new window hook: open the next
494 window in a numbered frame.
496 * src/clfswm-query.lisp (query-string): Grab the keyboard in all
497 cases. So query-string can be called even in the main mode.
499 * src/clfswm-internal.lisp (show-all-children): Do not raise a
500 child by default => far less flickering.
502 2008-09-19 Philippe Brochard <pbrochard@common-lisp.net>
504 * src/bindings-second-mode.lisp: Bind "t" to tile-current-frame.
506 * src/menu-def.lisp: Change key binding for the CLFSWM menu
509 * src/xlib-util.lisp (xgrab-pointer): Handle the case where cursor
510 is nil. (workaround on some CLX implementation).
512 2008-09-12 Philippe Brochard <pbrochard@common-lisp.net>
514 * src/menu-def.lisp: Add a menu to set a focus policy for all
517 * src/clfswm-util.lisp (set-focus-policy-generic-for-all)
518 (all-frames-set-*-focus-policy): Set a focus policy for all
521 * src/clfswm.lisp (handle-enter-notify): sloppy-select
522 mode. Select a child and its parents on mouse over.
524 2008-09-03 Philippe Brochard <pbrochard@common-lisp.net>
526 * src/clfswm.lisp (handle-enter-notify): Add a sloppy strict focus
527 policy -> Sloppy focus only for windows in the current frame.
528 (main-unprotected): Exit clfswm on init error (ie: when another
529 window manager is running).
531 * src/clfswm-util.lisp (reset-clfswm): New function.
533 2008-09-02 Philippe Brochard <pbrochard@common-lisp.net>
535 * src/clfswm-menu.lisp (init-menu): New function.
537 * src/clfswm-util.lisp (reload-clfswm): New function to reload
539 (exit-clfswm): Rename quit-clfswm to exit-clfswm.
541 * src/clfswm.lisp (main, main-unprotected): Handle error in a
542 superior main function. Now CLFSWM can't break the X session. It
543 just reinitialize the display and run a new main loop.
545 * src/clfswm-corner.lisp: Make *clfswm-terminal* and
546 *vt-keyboard-on* global to avoid warnings when loading clfswm.
548 * src/clfswm-layout.lisp: Add a specific GIMP layout menu.
549 (help-on-gimp-layout): Describe how to use the GIMP layout.
551 2008-09-01 Philippe Brochard <pbrochard@common-lisp.net>
553 * src/clfswm-layout.lisp (set-gimp-layout): Change the layout to
554 main-window-right-layout. Change the keybinding for (shift)alt+tab
555 to not select windows in the main window lisst.
556 Bind F8 to add a window in the main window list.
557 Bind F9 to remove a window in the main window list.
558 Change the focus policy to :sloppy.
559 (set-previous-layout): Restore the previous layout, keybinding and
562 2008-08-31 Philippe Brochard <pbrochard@common-lisp.net>
564 * src/clfswm-menu.lisp (add-menu-comment): Add comments in menu.
566 * src/clfswm-layout.lisp (main-window-left-layout)
567 (main-window-bottom-layout, main-window-top-layout): New
569 Factorize layouts in menu.
571 2008-08-30 Philippe Brochard <pbrochard@common-lisp.net>
573 * src/clfswm-layout.lisp (main-window-right-layout): A possible
574 GIMP layout: one or more main windows on one side of the
575 frame. Others on the other size.
577 * src/clfswm-util.lisp
578 (current-frame-set-click/sloppy-focus-policy): Each frame can have
579 a different focus policy (one of :click or :sloppy).
580 The default focus policy is set with *default-focus-policy*.
582 2008-08-23 Philippe Brochard <pbrochard@common-lisp.net>
584 * src/clfswm-info.lisp (show-config-variable): New function.
586 2008-08-19 Philippe Brochard <pbrochard@common-lisp.net>
588 * src/clfswm-layout.lisp (tile-horizontal-layout): New layout.
590 * src/clfswm-info.lisp: Colored help for key binding and corners
593 2008-08-18 Philippe Brochard <pbrochard@common-lisp.net>
595 * src/clfswm-util.lisp (delete-focus-window)
596 (destroy-focus-window): Remove chid only in
597 handle-unmap/destroy-notify. Focus *current-root* only when
598 closing/killing the current child.
600 * src/clfswm-autodoc.lisp (produce-corner-*-doc): New autodoc
601 functions or corners.
603 2008-08-17 Philippe Brochard <pbrochard@common-lisp.net>
605 * src/clfswm-corner.lisp (present-clfswm-terminal): New corner
606 action: Hide/Unhide a terminal on mouse corner action. (By default
607 right mouse button on the top left corner).
609 * src/config.lisp (*never-managed-window-list*): New config
612 * src/clfswm-internal.lisp (never-managed-window-p): New function:
613 Handle never managed window in a more simple way.
615 * src/clfswm-corner.lisp: New file and new and more simple method
616 to define corners actions.
618 2008-08-15 Philippe Brochard <pbrochard@common-lisp.net>
620 * src/clfswm-info.lisp (info-mode): Info line can now be colored.
622 * src/clfswm-layout.lisp (fast-layout-switch)
623 (define-fast-layout-switch): New functions: Switch between two
626 * src/clfswm-second-mode.lisp (leave-second-mode): Takes care if
627 really in the second mode. So leave-second-mode can be used even
630 * src/clfswm-util.lisp (switch-to-last-child): New function:
631 Store the current child and switch to the previous one.
633 2008-07-16 Philippe Brochard <pbrochard@common-lisp.net>
635 * src/clfswm-util.lisp (display-current-window-info): Display the
637 (have-to-present-virtual-keyboard): Add a virtual keyboard corner
638 (top right by default). By default 'xvkbd' is used.
640 2008-06-28 Philippe Brochard <pbrochard@common-lisp.net>
642 * src/xlib-util.lisp (move-window, resize-window): Compress motion
645 * src/clfswm.lisp (handle-motion-notify): Compress motion events.
647 * src/clfswm-second-mode.lisp (sm-handle-motion-notify): Compress
650 * src/clfswm-info.lisp (info-mode): Compress motion events.
652 2008-06-21 Philippe Brochard <pbrochard@common-lisp.net>
654 * src/clfswm-internal.lisp (show-all-children): Compute geometry
655 and selection first and then show only necessary children.
656 (show-child): remove unneeded display-p parameter.
658 * src/config.lisp (get-fullscreen-size): Place the frame border
659 outside the screen (this prevent the loose of 2 pixels per
662 2008-06-12 Philippe Brochard <pbrochard@common-lisp.net>
664 * src/clfswm-internal.lisp (focus-child): Algorithm change to
665 raise only the selected child.
667 2008-06-08 Philippe Brochard <pbrochard@common-lisp.net>
669 * src/clfswm-internal.lisp (raise-p-list, show-all-children):
670 Raise only viewable children.
672 2008-06-06 Philippe Brochard <pbrochard@common-lisp.net>
674 * src/clfswm-internal.lisp (show-all-children): Always raise all
675 displayed children. Remove all references to raise-p.
677 2008-06-04 Philippe Brochard <pbrochard@common-lisp.net>
679 * src/menu-def.lisp (child-menu): New menu entry on raise/lower
682 * src/bindings-second-mode.lisp ("Page_Down", "Page_Up"): New
683 second mode binding on raise/lower child in its frame.
685 * src/clfswm-nw-hooks.lisp (leave-focus-frame-nw-hook): Adapt
686 behaviour to the new raise/lower property.
687 Call clear-nw-hook before the rest of the hook.
689 * src/bindings.lisp (mouse-click-to-focus-and-move-window)
690 (mouse-click-to-focus-and-resize-window): Stop button event. This
691 prevent a keyboard/pointer freeze.
693 2008-06-03 Philippe Brochard <pbrochard@common-lisp.net>
695 * src/clfswm-internal.lisp (frame-lower-child)
696 (frame-raise-child): New functions to raise/lower a child in its
699 * src/clfswm-util.lisp (have-to-present-windows)
700 (have-to-present-all-windows): New functions to have an MaxOS
701 expose like on mouse click in screen corner.
703 * src/clfswm-info.lisp ("Page_Down", "Page_Up"): Add boundaries.
705 2008-05-30 Philippe Brochard <pbrochard@common-lisp.net>
707 * src/clfswm-util.lisp (unhide-a-child-from-all-frames): Unhide a
708 child from a choice in all frames with hidden children.
710 * src/clfswm-info.lisp (info-mode-menu): Handle separators.
712 2008-05-28 Philippe Brochard <pbrochard@common-lisp.net>
714 * src/clfswm-util.lisp (hide-current-child, unhide-a-child)
715 (unhide-all-children): New functions.
717 * src/clfswm-info.lisp (info-mode-menu): Handle symbols and
720 * src/clfswm-util.lisp (hide/show-frame-window): new function and
723 2008-05-23 Philippe Brochard <pbrochard@common-lisp.net>
725 * src/clfswm-util.lisp (rename-current-child): Do not display the
726 frame info for a window.
728 2008-05-20 Philippe Brochard <pbrochard@common-lisp.net>
730 * src/clfswm-internal.lisp (remove-child-in-frame): Destroy the
731 frame window for the removed child and its children.
733 2008-05-18 Philippe Brochard <pbrochard@common-lisp.net>
735 * src/clfswm-autodoc.lisp (produce-*-doc-*): Add a note to use the
738 2008-05-17 Philippe Brochard <pbrochard@common-lisp.net>
740 * src/clfswm-nw-hooks.lisp (default-frame-nw-hook): Do not handle
741 the ROX pinboard (ie: leave it lowered in the root window as
744 * src/clfswm-layout.lisp (tile-left-space-layout): New layout.
745 (tile-left-layout, tile-right-layout, tile-top-layout)
746 (tile-bottom-layout): Use all the frame space when there is only
749 * src/clfswm-internal.lisp (place-window-from-hints): Center
750 unmanaged windows in the root screen.
752 * src/clfswm-nw-hooks.lisp (clear-nw-hook, clear-all-nw-hooks):
755 2008-05-15 Philippe Brochard <pbrochard@common-lisp.net>
757 * src/clfswm-util.lisp (current-frame-manage-window-type): Fix a
758 typo in managed types.
760 * src/clfswm-internal.lisp (show-child): Always display frame info
761 even if the frame is hidden.
763 * src/xlib-util.lisp (resize-window): Use a better algorithme to
766 2008-05-13 Philippe Brochard <pbrochard@common-lisp.net>
768 * src/clfswm-util.lisp (with-movement): Display frame info for all
769 frames in current root.
771 2008-05-12 Philippe Brochard <pbrochard@common-lisp.net>
773 * src/*.lisp: Rename 'brother' frames to 'sister' frames.
775 * src/bindings-second-mode.lisp (define-second-key #\a): New
776 binding on 'add-default-frame'.
778 * src/clfswm-autodoc.lisp (produce-*-doc-*-in-file): Show a
779 message to follow the autodocumentation process.
781 2008-05-10 Philippe Brochard <pbrochard@common-lisp.net>
783 * src/clfswm-util.lisp (bind-or-jump): Bind "Tab", "Return" and
784 "Space" to jump to a child. "B" to bind a slot on the current
787 * src/bindings-second-mode.lisp: Use "Tab" instead of
790 2008-05-07 Philippe Brochard <pbrochard@common-lisp.net>
792 * src/clfswm-util.lisp (find-child-under-mouse): Take care of
793 unmanaged (hidden) windows.
795 * src/clfswm-internal.lisp (place-window-from-hints): Give a
796 minimal size for windows.
797 (with-all-windows-frames-and-parent): New function.
799 * src/config.lisp (*default-window-width/height*): New parameters.
801 * src/clfswm-internal.lisp (place-window-from-hints): Center
802 windows in the screen instead of in there frame.
804 * src/bindings-second-mode.lisp (tile-space-current-frame): New
807 * src/clfswm-layout.lisp (register-layout): Intern the once name
808 in the right package.
810 2008-05-05 Philippe Brochard <pbrochard@common-lisp.net>
812 * doc/dot-clfswmrc: Update to follow the new clfswm way.
814 2008-05-03 Philippe Brochard <pbrochard@common-lisp.net>
816 * src/clfswm-internal.lisp (set-current-child)
817 (adapt-child-to-parent, show-child, hide-child): Handle the case
818 where child is not a frame or a window.
820 * src/clfswm-util.lisp
821 (mouse-click-to-focus-generic,mouse-focus-move/resize-generic):
822 Check if child is a frame.
824 * src/clfswm-internal.lisp (managed-window-p): Handle the case
826 (place-frame): Check if frame and parent are frames.
828 * src/clfswm-info.lisp (info-mode): display all frame info before
831 * src/clfswm-second-mode.lisp (second-key-mode): display all frame
834 * src/clfswm-internal.lisp (display-all-frame-info): New function.
836 2008-05-02 Philippe Brochard <pbrochard@common-lisp.net>
838 * src/tools.lisp (getenv): Implemented for ECL.
839 (urun-prog): Implemented for ECL.
841 * src/clfswm-util.lisp (identify-key): Use a double buffer to
844 * src/clfswm-query.lisp (query-string): Use a double buffer to
847 * src/clfswm-info.lisp (draw-info-window): Use a double buffer to
850 * src/xlib-util.lisp (clear-pixmap-buffer, copy-pixmap-buffer):
853 2008-05-01 Philippe Brochard <pbrochard@common-lisp.net>
855 * src/clfswm-info.lisp (info-mode): Add boundaries in the info mode window.
857 * src/menu-def.lisp: New file: move all menu definition in
860 * src/clfswm-layout.lisp (register-layout): Use a function instead
863 2008-04-30 Philippe Brochard <pbrochard@common-lisp.net>
865 * src/clfswm-autodoc.lisp (produce-menu-doc,
866 (produce-menu-doc-html): New functions.
867 (produce-doc-*): Moved to clfswm-autodoc.lisp.
869 * src/clfswm-util.lisp (paste-selection-no-clear): Prevent to
870 paste a child on one of its own children. (this prevent a
872 (move-child-to): Rename move/copy-current-child-by to
874 (mouse-move-window-over-frame): New function to move the window
875 under the mouse cursor to another frame.
877 * src/clfswm-internal.lisp (find-child-in-parent): New function.
879 2008-04-29 Philippe Brochard <pbrochard@common-lisp.net>
881 * src/clfswm-internal.lisp (show-all-children): Display unmanaged
882 windows only when its window parent is the current child.
884 2008-04-28 Philippe Brochard <pbrochard@common-lisp.net>
886 * src/clfswm-util.lisp (manage-current-window)
887 (unmanage-current-window): New functions: Allow to force to manage
888 or unmanage a window by its parent frame.
890 * src/bindings-second-mode.lisp (#\o): binded to
891 set-open-in-new-frame-in-parent-frame-nw-hook and
892 (#\o :control) to set-open-in-new-frame-in-root-frame-nw-hook
894 * src/clfswm-util.lisp (with-current-window): New macro.
896 * src/xlib-util.lisp (move-window, resize-window): Remove uneeded
897 exposure and enter-window handle event.
899 * src/clfswm-util.lisp (move-frame, resize-frame): Show all
900 children for the current child after the move/resize.
902 2008-04-27 Philippe Brochard <pbrochard@common-lisp.net>
904 * src/xlib-util.lisp (resize-window): Take care of window size
907 * src/clfswm-util.lisp (mouse-focus-move/resize-generic): Allow to
908 move/resize unmanaged windows.
910 * src/xlib-util.lisp (move-window, resize-window): New functions.
912 2008-04-25 Philippe Brochard <pbrochard@common-lisp.net>
914 * src/clfswm-util.lisp (current-frame-manage-window-type): Let the
915 user choose what window type the current frame must handle.
916 (display-current-window-info): New function.
917 (current-frame-manage-all-window-type)
918 (current-frame-manage-only-normal-window-type)
919 (current-frame-manage-no-window-type): New functions.
921 * src/clfswm-internal.lisp (managed-window-p): New function.
923 * src/package.lisp (frame): Managed type: new frame
924 parameter. This allow to choose what window type a frame must
927 * src/*.lisp: Rename all 'father' occurrences to 'parent'.
929 * src/clfswm-nw-hooks.lisp
930 (open-in-new-frame-in-parent-frame-nw-hook): New new window hook.
932 * src/clfswm-util.lisp (adapt-current-frame-to-window-hints): New
935 * src/tools.lisp (ensure-printable): Return always a string even
938 2008-04-24 Philippe Brochard <pbrochard@common-lisp.net>
940 * src/config.lisp (*default-nw-hook*): New variable to change the
941 default new window hook.
943 2008-04-22 Philippe Brochard <pbrochard@common-lisp.net>
945 * clfswm.asd (clfswm): Add a dependency from
946 clfswm-second-mode.lisp to clfswm.lisp.
948 * src/clfswm-util.lisp (identify-key): Show the documentation for
949 the function bound on a key.
950 (with-movement): Move with-movement,
951 current-frame-fill/pack/resize-* from bindings-second-mode.lisp
954 * src/clfswm-menu.lisp: New menu system that let user change keys
955 or functions associated to keys.
957 2008-04-18 Philippe Brochard <pbrochard@common-lisp.net>
959 * src/clfswm-internal.lisp (show-all-children): Display-child is
960 the first child by default. Solve a bug with father-p.
962 2008-04-17 Philippe Brochard <pbrochard@common-lisp.net>
964 * src/clfswm-internal.lisp (add-frame): Add frame return the
966 (show-all-children): Move the size computation outside the
969 * src/bindings-second-mode.lisp (with-movement): Redisplay only
972 * src/clfswm-util.lisp (mouse-click-to-focus-generic): Redisplay
973 only the current child.
975 * src/clfswm-internal.lisp (show-all-children): New display-child
976 parameter to display only the desired child and its children.
977 (select-next/previous-child): Only display the current child.
979 2008-04-14 Philippe Brochard <pbrochard@common-lisp.net>
981 * src/clfswm.lisp (init-display): Move the default frame creation
982 on the default init hook.
984 * src/clfswm-keys.lisp (define-ungrab/grab): Handle all keysyms in
985 the main mode (for example: "1" on an azerty keyboard).
987 2008-04-13 Philippe Brochard <pbrochard@common-lisp.net>
989 * src/clfswm-keys.lisp (find-key-from-code): Better handle of
990 keysyms. Revert to old grabbing method for the main mode.
992 2008-04-12 Philippe Brochard <pbrochard@common-lisp.net>
994 * src/clfswm.lisp (init-display): Add key handling on no focus
995 window and on frame windows.
997 2008-04-11 Philippe Brochard <pbrochard@common-lisp.net>
999 * src/clfswm.lisp (main): Keyboard handle strategie change: Grab
1000 all keys by default and replay just what is needed. No change for
1003 * src/clfswm-keys.lisp: remove grab/ungrab main keys.
1004 (find-key-from-code): Test for shift and not shift presence.
1006 2008-04-09 Philippe Brochard <pbrochard@common-lisp.net>
1008 * src/clfswm-internal.lisp (switch-to-root-frame): show later -
1009 new key parameter to have less flickering.
1011 2008-04-07 Philippe Brochard <pbrochard@common-lisp.net>
1013 * src/bindings-second-mode.lisp (frame-layout-once-menu): Set the
1014 layout only one time and revert to no-layout to freely handle
1017 * src/clfswm-nw-hooks.lisp
1018 (open-in-new-frame-in-root-frame-nw-hook): Tile layout with spaces
1019 with new created window.
1021 * src/clfswm-layout.lisp (register-layout): Now register
1022 automatically a once layout to set the layout only one time and
1023 revert to no-layout to freely handle frames.
1025 2008-04-05 Philippe Brochard <pbrochard@common-lisp.net>
1027 * src/clfswm-nw-hooks.lisp (leave-focus-frame-nw-hook): New
1028 nw-hook: Open the next window in the current frame and leave the
1029 focus to the current child.
1031 2008-04-04 Philippe Brochard <pbrochard@common-lisp.net>
1033 * src/bindings-second-mode.lisp: Add keys definitions to
1034 bind-or-jump in the second mode.
1036 * src/clfswm-util.lisp (bind-or-jump): remove the auto-defining
1037 macro for bind-or-jump-(1|2|3...).
1039 * src/clfswm-keys.lisp (define-define-key/mouse): Allow additional
1040 arguments to function. This allow to do things like:
1041 (define-main-key (key) 'my-function 10 20 'foo) -> 10 20 and 'foo
1042 are passed to my-function on key press.
1044 2008-04-03 Philippe Brochard <pbrochard@common-lisp.net>
1046 * src/clfswm-util.lisp (bind-or-jump): New (great) function.
1048 2008-04-02 Philippe Brochard <pbrochard@common-lisp.net>
1050 * src/clfswm-internal.lisp (child-fullname): New function
1052 * src/clfswm-info.lisp (info-mode-menu): Add an explicit optional
1053 docstring in info-mode-menu. An item can be
1054 '((key function) (key function)) or with docstring
1055 '((key function "documentation 1") (key function "bla bla") (key function))
1057 * src/tools.lisp (ensure-n-elems): New function.
1059 * src/bindings-second-mode.lisp: Bind Alt+mouse-1/3 to move or
1060 resize a frame or the window's father.
1062 * src/clfswm.lisp (init-display): Remove tile-space-layout by
1063 default on the root frame.
1065 * src/clfswm-util.lisp (move/resize-frame): Add standard event
1066 hooks handlers (map-request, configure-notify...)
1068 * src/clfswm-internal.lisp (adapt-child-to-father): Limit minimal
1071 2008-04-01 Philippe Brochard <pbrochard@common-lisp.net>
1073 * src/bindings.lisp: Bind Alt+mouse-1/3 to move or resize a frame
1074 or the window's father.
1076 * src/clfswm-util.lisp (mouse-click-to-focus-generic): Stop button
1077 event only if there is a geometry change.
1078 (mouse-focus-move/resize-generic): Generic function to move or
1079 resize a frame or a window father frame.
1081 2008-04-01 Philippe Brochard <pbrochard@common-lisp.net>
1083 * src/clfswm-internal.lisp (show-all-children): Return t if there
1084 is a geometry change.
1086 2008-03-30 Philippe Brochard <pbrochard@common-lisp.net>
1088 * src/bindings.lisp (Up/Down): Swap select previous/next level.
1090 * src/bindings-second-mode.lisp (Up/Down): Swap select previous/next level.
1092 * src/clfswm.lisp (init-display): Create a default frame in the root frame.
1094 * src/clfswm-internal.lisp (place-frame): Place frame from real (pixel) coordinates.
1095 (with-all-*): Reverse the child list to manage the first child last (like in
1098 * src/config.lisp (*create-frame-on-root*): New variable: Create a new frame on the
1099 root window only if true.
1101 * src/clfswm-util.lisp (mouse-click-to-focus-generic): Create a new frame on the
1102 root window only if *create-frame-on-root* is true.
1104 * src/bindings-second-mode.lisp (sm-mouse-click-to-focus-generic): Create a new frame
1107 2008-03-29 Philippe Brochard <pbrochard@common-lisp.net>
1109 * src/bindings-second-mode.lisp (sm-mouse-click-to-focus-generic): Focus, move and resize
1110 the current child (even if it's a window).
1112 2008-03-28 Philippe Brochard <pbrochard@common-lisp.net>
1114 * src/clfswm-util.lisp (mouse-click-to-focus-and-move)
1115 (mouse-click-to-focus-and-resize): New functions.
1117 * src/clfswm-internal.lisp (*-fl->px): Convert float coordinates to pixel.
1118 (*-px->fl): Convert pixel coordinates to float.
1120 * src/tools.lisp (call-hook): Move call-hook to tools.lisp.
1122 2008-03-27 Philippe Brochard <pbrochard@common-lisp.net>
1124 * src/clfswm-layout.lisp (no-layout): Use :first-only to raise only the
1127 * src/clfswm-internal.lisp (hide-all): Split hide-all-children in hide-all
1128 and hide-all-children.
1129 (raise-if-needed): New function.
1130 (show-child): Use a first-p parameter to raise windows only when they are
1133 2008-03-26 Philippe Brochard <pbrochard@common-lisp.net>
1135 * src/clfswm-internal.lisp (select-next/previous-level): Don't use show-all-children
1138 2008-03-25 Philippe Brochard <pbrochard@common-lisp.net>
1140 * src/clfswm-info.lisp (keys-from-list): new function.
1142 * src/*: rename 'childs' in 'children'.
1144 * src/*: rename 'group' in 'frame'.
1146 2008-03-22 Philippe Brochard <pbrochard@common-lisp.net>
1148 * src/clfswm-pack.lisp (explode-group/explode-current-group): new functions.
1150 2008-03-21 Philippe Brochard <pbrochard@common-lisp.net>
1152 * src/clfswm-pack.lisp: Pack, Fill, Resize functions.
1154 2008-03-16 Philippe Brochard <pbrochard@common-lisp.net>
1156 * src/clfswm-nw-hooks.lisp: Register system for new window hooks.
1157 Bind control+o to open the next window in a new group in the root group
1158 (as open in next window in a new workspace in 0801 version).
1160 2008-03-15 Philippe Brochard <pbrochard@common-lisp.net>
1162 * src/clfswm-util.lisp (show/hide-all-groups-info/key): Show/hide all groups info
1165 2008-03-14 Philippe Brochard <pbrochard@common-lisp.net>
1167 * bindings-second-mode.lisp ("ISO_Left_Tab"): Use ISO_Left_Tab
1168 instead of Tab for select-previous-child.
1170 2008-03-13 Philippe Brochard <pbrochard@common-lisp.net>
1172 * clfswm-util.lisp (force-window-in-group/force-window-center-in-group):
1175 2008-03-11 Philippe Brochard <pbrochard@common-lisp.net>
1177 * clfswm-util.lisp (identify-key): Display the documentation
1178 associated to keys when identifying a key.
1180 2008-03-10 Xavier Maillard <xma@gnu.org>
1182 * contrib/clfswm: Complete rewrite of the script. Detect error and
1183 act accordingly. Add command line arguments to configure the
1184 script execution. User can now choose different common lisp
1185 implementation (clisp and sbcl only), choose where to store the
1186 dumped image, where to find clfswm source.
1188 2008-03-09 Philippe Brochard <pbrochard@common-lisp.net>
1190 * clfswm-internal.lisp (process-new-window): Beginning of new
1191 window hook: each group have a hook to tell what he wants to do
1192 with the new created window.
1194 2008-03-08 Xavier Maillard <xma@gnu.org>
1196 * contrib/clfswm: New script. Dump a CLISP image of CLFSWM then
1197 call the resulting executable.
1199 * clfswm.lisp (read-conf-file): Check for the user config file in
1200 XDG_CONFIG_HOME *first*. Freedesktop.org standards should be
1201 prefered whenever possible.
1203 2008-02-27 Philippe Brochard <pbrochard@common-lisp.net>
1205 * clfswm-layout.lisp (*-layout): Add an optional raise-p
1206 parameter in each layout.
1208 2008-02-26 Philippe Brochard <pbrochard@common-lisp.net>
1210 * clfswm-util.lisp (copy/cut-current-child): Does not affect the
1212 (copy/move-current-child-by-name/number): new functions
1213 (focus-group-by-name/number): new functions
1214 (delete-group-by-name/number): new functions
1216 2008-02-24 Philippe Brochard <pbrochard@common-lisp.net>
1218 * ************************************************************ *
1219 *: Major update - No more reference to workspaces. The main *
1220 structure is a tree of groups or application windows. *
1221 * ************************************************************ *
1223 2008-02-07 Philippe Brochard <pbrochard@common-lisp.net>
1225 * clfswm.lisp (read-conf-file): Read configuration in
1226 $HOME/.clfswmrc or in /etc/clfswmrc or in
1227 $XDG_CONFIG_HOME/clfswm/clfswmrc.
1228 (xdg-config-home): Return the content of $XDG-CONFIG-HOME (default
1231 2008-01-18 Philippe Brochard <pbrochard@common-lisp.net>
1233 * clfswm-internal.lisp (show-all-group): Use *root* and *root-gc*
1236 2008-01-03 Philippe Brochard <pbrochard@common-lisp.net>
1238 * clfswm-internal.lisp (find-window-group): New function.
1240 * clfswm*: Change to make clfswm run with clisp/new-clx.
1242 2008-01-01 Philippe Brochard <pbrochard@common-lisp.net>
1244 * clfswm-util.lisp (query-show-paren): Add show parent matching in
1246 (query-string): Bind control+k to delete end of line.
1248 * clfswm-second-mode.lisp (draw-second-mode-window): Display
1249 the action on mouse motion in second mode.
1251 * clfswm.lisp (handle-exposure): Redisplay groups on exposure
1252 event but do not clear the root window.
1253 (handle-configure-request): Adjust unmanaged window from there
1256 * clfswm-internal.lisp (process-new-window): Adjust new window
1257 with the specified hints (max/min/base width/height).
1259 2007-12-31 Philippe Brochard <pbrochard@common-lisp.net>
1261 * clfswm.lisp (handle-configure-request): Send an Configuration
1262 Notify event. This solve a bug with xterm and rxvt who takes some
1263 times to be mapped. Now there is no delay.
1265 * bindings-second-mode.lisp (define-shell): Run programs after
1266 living the second mode.
1268 2007-12-30 Philippe Brochard <pbrochard@common-lisp.net>
1270 * clfswm-internal.lisp (process-new-window): Do not crop transient
1271 window to group size.
1272 (adapt-window-to-group): Do not crop transient window to group
1275 * clfswm.lisp (handle-configure-request): Adapt just the window to
1276 its group and don't take care of the configure request. Remove the
1277 bug with the Gimp outside the group and speed up the window
1279 (handle-exposure): Remove show-all-group on exposure event
1282 2007-12-29 Philippe Brochard <pbrochard@common-lisp.net>
1284 * clfswm-util.lisp (circulate-group-up-copy-window)
1285 (circulate-group-down-copy-window)
1286 (circulate-workspace-up-copy-group)
1287 (circulate-workspace-down-copy-group): Prevent the copy of the
1288 same window in the same workspace.
1290 * bindings-second-mode.lisp (release-copy-selected-window)
1291 (release-copy-selected-group): Prevent the copy of the same window
1292 in the same workspace.
1294 * clfswm-pager.lisp (generic-pager-move-window-on-previous-line)
1295 (generic-pager-move-window-on-next-line): Remove the copy
1297 (generic-pager-move-group-on-next-workspace)
1298 (generic-pager-move-group-on-previous-workspace): Prevent the copy
1299 of the same window in the same workspace.
1301 * bindings-pager.lisp (mouse-pager-copy-selected-window-release)
1302 (mouse-pager-copy-selected-group-release): Prevent the copy of the
1303 same window in the same workspace.
1305 * tools.lisp (setf/=): new macro to set a variable only when
1308 * clfswm-internal.lisp (adapt-window-to-group): use set/= to set
1309 x, y... only when necessary.
1311 2007-12-28 Philippe Brochard <pbrochard@common-lisp.net>
1313 * clfswm.lisp (handle-configure-notify, *configure-notify-hook*):
1314 new function and hook: force windows to stay in its group (solve a
1317 2007-12-25 Philippe Brochard <pbrochard@common-lisp.net>
1319 * bindings-second-mode.lisp (mouse-motion): use hide-group to have
1320 less flickering when moving/resizing groups.
1322 * clfswm-internal.lisp (hide-group): new function.
1323 (show-all-group): clear-all: new parameter.
1325 2007-12-22 Philippe Brochard <pbrochard@common-lisp.net>
1327 * clfswm-keys.lisp (define-define-key): undefine-*-multi-name: new
1329 * clfswm*: Color change for the pager. Typo or better description
1330 in bindings definitions. Define bindings for a qwerty keyboard by
1331 default. dot-clfswmrc show examples to switch to an azerty
1333 License change to GPL v3.
1334 * config.lisp: new file - group all globals variables in this
1337 2007-08-26 Philippe Brochard <pbrochard@common-lisp.net>
1339 * xlib-util.lisp (hide-window): Remove structure-notivy events
1340 when hidding a window.
1342 2007-05-16 Philippe Brochard <pbrochard@common-lisp.net>
1344 * package.lisp (*sm-property-notify-hook*): Readded
1345 property-notify-hook in second mode.
1347 2007-05-15 Philippe Brochard <pbrochard@common-lisp.net>
1349 * clfswm-keys.lisp (produce-doc-html): Better clean up for strings.
1351 2007-05-13 Philippe Brochard <pbrochard@common-lisp.net>
1353 * clfswm-pack.lisp (tile-current-workspace-to/right/left/top/bottom):
1354 Tile the current workspace with the current window on one side and
1355 others on the other (this emulate the larswm, dwm, wmii way). See
1356 the default configuration file to enable this mode by default.
1358 * clfswm-pager.lisp (pager-tile-current-workspace-to): idem for
1361 2007-05-12 Philippe Brochard <pbrochard@common-lisp.net>
1363 * clfswm-pager.lisp (pager-draw-window-in-group): Add
1364 ensure-printable to print windows name even with non-ascii
1367 2007-05-11 Philippe Brochard <pbrochard@common-lisp.net>
1369 * clfswm-pager.lisp (pager-explode-current-group): Create a new
1370 group for each window in group.
1371 (pager-implode-current-group): Move all windows in workspace to
1372 one group and remove other groups.
1374 * clfswm-pack.lisp (explode-group): Create a new group for each
1376 (implode-group): Move all windows in workspace to one group and
1377 remove other groups.
1379 * clfswm-util.lisp (identify-key): Remove local configuration
1380 variables and made them available for configuration from
1382 (query-string): idem.
1384 2007-04-29 Philippe Brochard <pbrochard@common-lisp.net>
1386 * netwm-util.lisp: Start of NetWM compliance.
1387 Add a Netwm client list gestion.
1389 2007-04-28 Philippe Brochard <pbrochard@common-lisp.net>
1391 * clfswm-internal.lisp (create-group-on-request): open a new group
1392 only when the current group is not empty.
1394 * bindings-second-mode.lisp (define-second-key-#\o-control): Fix a
1395 bug with null workspace.
1397 * clfswm-pager.lisp (pager-handle-event): Add a hook
1398 system. This hooks can be changed in the user configuration file.
1400 * package.lisp: All colors and font variables are set in
1401 package.lisp and can be configured in the user configuration
1403 Note: If you have configured some less ugly colors (esp. for the
1404 pager) don't hesitate to let me know :)
1406 * clfswm-second-mode.lisp (sm-handle-event): Add a hook
1407 system. This hooks can be changed in the user configuration file.
1409 * clfswm.lisp (handle-event): Add a hook system. This hooks can be
1410 changed in the user configuration file (~/.clfswmrc)
1412 2007-04-25 Philippe Brochard <pbrochard@common-lisp.net>
1414 * clfswm-util.lisp (stop-all-pending-actions): new function: reset
1415 arrow action, open next window in new workspace/group.
1417 * bindings.lisp (stop-all-pending-actions): new binding.
1418 (open-next-window-in-new-group-once): Open the next windows in a
1419 new group (only once) or open all new windows in a new group (like
1420 others windows managers).
1422 2007-04-22 Philippe Brochard <pbrochard@common-lisp.net>
1424 * clfswm.lisp (read-conf-file): New function to read a lisp
1425 configuration file at startup.
1426 (focus-group-under-mouse): Check if group isn't the current group
1427 ( prevent a bug with unclutter ).
1429 2007-03-02 Philippe Brochard <pbrochard@common-lisp.net>
1431 * bindings.lisp (run-program-from-query-string): A program can be
1432 launch from a input query window.
1434 2007-03-01 Philippe Brochard <pbrochard@common-lisp.net>
1436 * clfswm-info.lisp: Fix a bug with banish pointer in info mode.
1438 2007-02-28 Philippe Brochard <pbrochard@common-lisp.net>
1440 * clfswm.lisp (process-new-window): One can now open the next
1441 window in a workspace called by its number.
1443 * clfswm-util.lisp (query-font-string): Minimal editing
1445 (eval-from-string): And an REPL in the window manager... :)
1447 2007-02-26 Philippe Brochard <pbrochard@common-lisp.net>
1449 * clfswm.lisp (process-new-window): One can now open the next
1450 window in a new workspace or a new group.
1452 * clfswm-pager.lisp (pager-mode): Display the next arrow action
1453 with the hidden windows.
1455 * clfswm.lisp (second-key-mode): Display the current workspace
1456 number and the next arrow action in the state window.
1458 * clfswm-pager.lisp (pager-mode): Hide all windows before leaving
1459 the pager mode and then redisplay only the current workspace.
1461 2007-02-25 Philippe Brochard <pbrochard@common-lisp.net>
1463 * clfswm.lisp (add-workspace): Workspaces are now numbered. So
1464 they can be focused with a keypress, sorted or renumbered.
1466 2007-02-24 Philippe Brochard <pbrochard@common-lisp.net>
1468 * clfswm-pager.lisp (pager-mode): Remove multiple silly
1469 pager-draw-display. This prevent a lot of flickering in the
1472 * clfswm.lisp: Remove all display-force-output and replace them
1473 with only one display-finish-output in the event loop.
1475 2006-11-06 Philippe Brochard <pbrochard@common-lisp.net>
1477 * clfswm-pager.lisp (pager-center-group): New function - center a
1478 group at the middle of the screen.
1480 * clfswm-pack.lisp (center-group): New function - center a group
1481 at the middle of the screen.
1483 * clfswm.lisp (show-group): Add a cross line under the group.
1484 (show-group): Group are showned even if fullscreened.
1485 (init-display): Add an exposure event on the root window.
1487 2006-11-05 Philippe Brochard <pbrochard@common-lisp.net>
1489 * package.lisp (*default-group*): Default group is the same size
1490 of a fullscreened group.
1492 * bindings*: Use shift to move, control+shift to copy.
1494 * *.lisp: Add comments for configuration or alternatives. So grep
1495 for CONFIG to see where you can configure clfswm. And grep for
1496 Alternative to use some commented code.
1498 * clfswm.lisp (second-key-mode): Use a single window to show the
1499 second mode. See for alternatives at the end of this file.
1501 2006-11-03 Philippe Brochard <pbrochard@common-lisp.net>
1503 * clfswm-keys.lisp (define-define-key/mouse): Factorisation in a
1504 macro of key and mouse definitions.
1505 (define-define-key/mouse): Use state instead of modifiers list
1506 this fix a bug when the modifiers list is not in the rigth order.
1508 * clfswm.lisp (second-key-mode): Add a colored border in second mode.
1510 2006-11-02 Philippe Brochard <pbrochard@common-lisp.net>
1512 * clfswm-info.lisp (info-mode): Add an info mode.
1514 2006-11-01 Philippe Brochard <pbrochard@common-lisp.net>
1516 * clfswm.lisp (process-new-window): Change border size for
1518 (show-all-windows-in-workspace): Unhide all windows even when the
1519 current group is in fullscreen mode.
1521 2006-10-26 Philippe Brochard <pbrochard@common-lisp.net>
1523 * clfswm-util.lisp (identify-key): Add an exposure handle-event to
1524 redisplay the identify window after a terminal switch.
1526 * clfswm-pager.lisp (pager-mode): Add an exposure handle-event to
1527 redisplay the pager after a terminal switch.
1529 2006-10-24 Philippe Brochard <pbrochard@common-lisp.net>
1531 * clfswm-util.lisp (identify-key): Add a window to display
1532 the keys to identify on screen.
1534 * bindings.lisp, bindings-pager.lisp: Define same keys to
1535 move/copy groups/windows in second mode and in pager.
1537 * clfswm.lisp (handle-event*): Same version in all clfswm (fix some
1539 (show-all-windows-in-workspace): unhide window before adapting it
1542 2006-10-23 Philippe Brochard <pbrochard@common-lisp.net>
1544 * clfswm.lisp (handle-event): Revert to an older version.
1546 2006-10-18 Philippe Brochard <pbrochard@common-lisp.net>
1548 * clfswm-util.lisp (force-window-in-group)
1549 (force-window-center-in-group): New functions for transient windows.
1551 * clfswm-pager.lisp (pager-remove-current-workspace/group):
1552 bugfix: hide all windows before removing group or workspace.
1554 2006-10-17 Philippe Brochard <pbrochard@common-lisp.net>
1556 * bindings-pager.lisp (mouse-pager-move-selected-group)
1557 (mouse-pager-copy-selected-group)
1558 (mouse-pager-move-selected-window)
1559 (mouse-pager-copy-selected-window, mouse-pager-rotate-window-up)
1560 (mouse-pager-rotate-window-down): New functions to have mouse in
1563 * clfswm-pager.lisp (pager-swap-window)
1564 (pager-copy-group-on-next/previous-workspace)
1565 (pager-copy-window-on-next/previous-line): New functions
1567 2006-10-15 Philippe Brochard <pbrochard@common-lisp.net>
1569 * clfswm-pager.lisp (pager-move-window-on-next/previous-line,
1570 (pager-move-group-on-next/previous-workspace): new functions.
1572 * clfswm-pack.lisp (resize-half-x-x-current-group): resize group
1573 to its half size (new functions).
1575 2006-10-11 Philippe Brochard <pbrochard@common-lisp.net>
1577 * clfswm-pager.lisp: workspaces, groups and windows can now be
1578 selectionned with the keyboard or the mouse.
1580 2006-10-09 Philippe Brochard <pbrochard@common-lisp.net>
1582 * clfswm-pager.lisp (pager-select-workspace-right/left):
1583 workspaces can now be selectionned with the keyboard.
1585 2006-10-08 Philippe Brochard <pbrochard@common-lisp.net>
1587 * clfswm-keys.lisp (undefine-main-key, undefine-second-key, undefine-mouse-action):
1588 new function to remove a previous defined key or mouse combination.
1590 2006-10-07 Philippe Brochard <pbrochard@common-lisp.net>
1592 * clfswm.lisp (main): Check for access error in init-display.
1594 * clfswm-keys.lisp (define-ungrab/grab): check for keysym and
1595 keycode before grabbing.
1597 * bindings.lisp: Remove nlambda and use defun to keep the function
1598 documentation with clisp.
1599 (define-shell): new macro to define shell command for the second
1602 2006-10-06 Philippe Brochard <pbrochard@common-lisp.net>
1604 * clfswm-keys.lisp (define-ungrab/grab): use a cond instead of a
1607 2006-10-05 Philippe Brochard <pbrochard@common-lisp.net>
1609 * bindings.lisp (accept-motion): Move group bugfix in upper mouse
1610 workspace circulation.
1612 * clfswm-util.lisp (absorb-orphan-window): new function.
1614 * clfswm-keys.lisp: Keysyms support.
1616 2006-10-02 Philippe Brochard <pbrochard@common-lisp.net>
1618 * clfswm.lisp (show-group): Use one gc for all groups and not one
1621 2006-10-01 Philippe Brochard <pbrochard@common-lisp.net>
1623 * bindings.lisp (define-second-key (#\l :mod-1)): fix a typo.
1625 * clfswm.lisp (adapt-window-to-group): Adapt only windows with
1626 width and height outside group.
1628 2006-09-28 Philippe Brochard <pbrochard@common-lisp.net>
1630 * clfswm.lisp: First public release.