1 2010-10-01 Philippe Brochard <pbrochard@common-lisp.net>
3 * src/clfswm-nw-hooks.lisp (absorb-window-nw-hook): Absorb new
4 window hook: the frame absorb all new windows that match
5 nw-absorb-test frame data slot.
7 2010-09-30 Philippe Brochard <pbrochard@common-lisp.net>
9 * src/clfswm-expose-mode.lisp (expose-create-window): Show window
10 title in accel window.
12 2010-09-29 Philippe Brochard <pbrochard@common-lisp.net>
14 * configure: Use the Xavier Maillard clfswm script in contrib to
15 build an executable in the standard way.
17 2010-09-26 Philippe Brochard <pbrochard@common-lisp.net>
19 * src/clfswm-expose-mode.lisp (expose-mode-display-accel-windows):
20 New functions. Add a window on each child in the expose mode to
23 * src/clfswm-internal.lisp (child-x, child-y, child-width)
24 (child-height): New methods to get real child coordinates.
26 2010-09-25 Philippe Brochard <pbrochard@common-lisp.net>
28 * src/clfswm-layout.lisp (*-layout): Use child-position.
30 * src/clfswm-internal.lisp (child-position): New function.
32 * src/clfswm-expose-mode.lisp (expose-windows-mode)
33 (expose-all-windows-mode): Use a generic mode.
35 * src/xlib-util.lisp (with-handle-event-symbol): Use a filled list
36 with handle-event-fun symbols instead of inspecting clfswm
37 internals symbols on each mode change.
39 * src/clfswm-expose-mode.lisp: Move and rename present*-windows in
40 a separate clfswm-expose-mode.lisp file.
42 * src/clfswm-util.lisp (speed-mouse-right, speed-mouse-down): Use
43 screen size instead of hardcoded test coordinates.
45 2010-09-24 Philippe Brochard <pbrochard@common-lisp.net>
47 * src/clfswm-util.lisp (speed-mouse-reset, speed-mouse-left)
48 (speed-mouse-right, speed-mouse-up, speed-mouse-down)
49 (speed-mouse-undo, speed-mouse-first-history): New functions to
50 quickly move the mouse. Implemented for the second mode.
52 2010-09-16 Philippe Brochard <pbrochard@common-lisp.net>
54 * contrib/clfswm: Move clfswm sources to $tmp_dir if there is no
55 write permission on $clfswm_asd_path. So anybody can start clfswm
56 even if there is no write permission on the source directory.
58 2010-09-12 Philippe Brochard <pbrochard@common-lisp.net>
60 * contrib/clfswm: Add support to cmucl, ccl and ecl.
62 2010-09-11 Philippe Brochard <pbrochard@common-lisp.net>
64 * src/clfswm-util.lisp (set-hide-unmanaged-window)
65 (set-show-unmanaged-window, set-default-hide-unmanaged-window):
66 New functions and menu entry.
67 (set-globally-hide-unmanaged-window)
68 (set-globally-show-unmanaged-window): New functions and menu
71 * src/clfswm-internal.lisp (hide-unmanager-window-p): New
73 (show-child): Add a data slot on frame to hide or not unmanaged
76 * src/clfswm-corner.lisp (present-clfswm-terminal)
77 (present-virtual-keyboard): Use a function (generic-present-body)
78 instead of a macro (generate-present-body).
80 * src/clfswm-util.lisp (update-menus): List all directories and
81 subdirectories in $XDG_DATA_DIRS/applications.
83 2010-09-10 Philippe Brochard <pbrochard@common-lisp.net>
85 * src/clfswm-corner.lisp (generate-present-body): New macro.
86 (present-clfswm-terminal, present-virtual-keyboard): Use
87 generate-present-body.
89 2010-09-09 Philippe Brochard <pbrochard@common-lisp.net>
91 * src/clfswm-util.lisp (update-menus): Follow XDG specifications
92 instead of the non-portable Debian update-menu.
94 2010-09-07 Philippe Brochard <pbrochard@common-lisp.net>
96 * src/clfswm.lisp (error-handler): New function do handle
97 asynchronous errors and ignore them.
98 (open-display): Install the new error-handler on display.
100 2010-09-05 Philippe Brochard <pbrochard@common-lisp.net>
102 * src/xlib-util.lisp (with-xlib-protect): Add a
103 with-simple-restart on top of body execution.
105 2010-09-04 Philippe Brochard <pbrochard@common-lisp.net>
107 * src/clfswm.lisp (main-loop): Protect all xlib functions with an
110 * src/xlib-util.lisp (handle-event): use with-xlib-protect only in
111 handle-event. Add a with-simple-restart to prevent a
112 clisp/new-lisp infinite loop.
114 2010-08-30 Philippe Brochard <pbrochard@common-lisp.net>
116 * src/clfswm-corner.lisp (present-clfswm-terminal): Make the
117 clfswm terminal working even on xterm title changes.
119 2010-08-29 Philippe Brochard <pbrochard@common-lisp.net>
121 * src/clfswm-util.lisp (run-other-window-manager): Update for
124 * src/tools.lisp (do-execute): New parameter io to change the
127 * src/clfswm-util.lisp (hide-current-child): Prevent from removing
130 * src/clfswm-internal.lisp (child-member): New predicate.
131 (child-remove): New function.
133 * src/*.lisp: Use child-member and child-remove everywhere it's
136 2010-08-28 Philippe Brochard <pbrochard@common-lisp.net>
138 * src/clfswm.lisp (main-loop): Ensure that all events have been
139 processed after a process-event.
141 * src/clfswm-internal.lisp (is-in-current-child-p): New function.
143 2010-08-27 Philippe Brochard <pbrochard@common-lisp.net>
145 * src/clfswm.lisp (main-mode:configure-request): Raise the window
146 only when present on the current child and focus it accordingly.
148 2010-08-26 Philippe Brochard <pbrochard@common-lisp.net>
150 * src/clfswm-circulate-mode.lisp (circulate-loop-function):
151 Use is-a-key-pressed-p.
153 * src/xlib-util.lisp (is-a-key-pressed-p): New predicate.
155 * src/clfswm-keys.lisp (define-ungrab/grab): Use all values
156 returned by xlib:keysym->keycodes.
158 * src/*.lisp: Use the new child-equal-p to compare children. This
159 prevent a bug with sbcl/cmucl when the standard equal function
160 does not work with xlib:window.
162 * src/clfswm-internal.lisp (child-equal-p): New predicate.
164 2010-08-25 Philippe Brochard <pbrochard@common-lisp.net>
166 * src/clfswm-generic-mode.lisp (generic-mode): Use an
167 xlib:event-listen before processing event with
168 xlib:process-event. This prevent a bug with CLX threaded
169 implementation like sbcl.
171 * src/clfswm.lisp (main-loop): Use an xlib:event-listen before
172 processing event with xlib:process-event. This prevent a bug with
173 CLX threaded implementation like sbcl.
175 2010-08-17 Philippe Brochard <pbrochard@common-lisp.net>
177 * contrib/server/key.lisp (ushell-sh): Add ccl and ecl support.
179 * src/xlib-util.lisp (compress-motion-notify): Use a loop instead
182 * src/clfswm-internal.lisp (with-find-in-all-frames): New macro.
183 (find-parent-frame, find-frame-window, find-frame-by-name)
184 (find-frame-by-number): Use with-find-in-all-frames to search in
185 frames in the right order.
187 * src/clfswm-util.lisp (mouse-click-to-focus-generic): Fix an
188 unwanted flickering with unmanaged windows.
190 2010-08-16 Philippe Brochard <pbrochard@common-lisp.net>
192 * src/package.lisp: Remove event handler hooks as they're not
193 needed anymore (To replace them: use closure and define-handler).
195 * src/xlib-util.lisp (move-window, resize-window)
196 (wait-mouse-button-release): Use a generic mode.
198 * src/*.lisp: Replace the case to handle event with a more (tricky)
199 lispy method which bind a function to each keywords associated
202 2010-07-23 Philippe Brochard <pbrochard@common-lisp.net>
204 * src/clfswm-util.lisp (delete-current-child): Invert bindings and
205 menu entry between delete-current-child and remove-current-child.
206 ie: Delete a child and its children in all frames by default.
208 2010-07-21 Philippe Brochard <pbrochard@common-lisp.net>
210 * src/package.lisp: Add a placement configuration group.
212 * src/binding*.lisp: Bind control+g to escape the current action
215 * src/clfswm-internal.lisp
216 (delete-child-and-children-in-all-frames): New function and
217 binding: Second mode - Control+Delete delete the current child and
218 its children in all frames (ie: close the current child and its
221 2010-07-20 Philippe Brochard <pbrochard@common-lisp.net>
223 * src/clfswm-internal.lisp (remove-child-in-frame): Do not destroy
224 the frame window and the frame gc. Close a very annoying bug when
225 cuting/pasting a frame or moving a child over frames with the
228 * src/clfswm-util.lisp (mouse-click-to-focus-generic): Redisplay
229 all children in *current-root* after moving/resizing a frame.
231 2010-07-18 Philippe Brochard <pbrochard@common-lisp.net>
233 * src/clfswm-util.lisp (delete-focus-window)
234 (destroy-focus-window): Remove child in parent frame before
237 2010-07-16 Philippe Brochard <pbrochard@common-lisp.net>
239 * src/clfswm-util.lisp (identify-key): Add a timeout in
241 (mouse-click-to-focus-generic): Use find-child-under-mouse instead
242 of the window passed by xlib:process-event.
244 * src/xlib-util.lisp (move-window, resize-window)
245 (wait-mouse-button-release): Add a timeout in xlib:process-event.
247 2010-04-11 Philippe Brochard <pbrochard@common-lisp.net>
249 * src/clfswm-util.lisp (run-other-window-manager): Add the ability
250 to launch an other window manager and to return to clfswm.
252 2010-03-18 Philippe Brochard <pbrochard@common-lisp.net>
254 * src/clfswm-layout.lisp (set-tile-space-layout): Set default
257 2009-12-15 Philippe Brochard <pbrochard@common-lisp.net>
259 * src/clfswm.lisp (main-loop): Add a *loop-hook* parameter and a
262 * src/clfswm-generic-mode.lisp (generic-mode): Add a loop-hook
263 parameter and a loop timeout.
265 2009-12-05 Philippe Brochard <pbrochard@common-lisp.net>
267 * src/clfswm.lisp (main): Add an alternate configuration filename
270 * load.lisp: Add a debuging code example.
272 2009-11-14 Philippe Brochard <pbrochard@common-lisp.net>
274 * src/clfswm-configuration.lisp (create-configuration-menu): New
275 menu to configure all clfswm variables while clfswm is running.
277 2009-11-12 Philippe Brochard <pbrochard@common-lisp.net>
279 * src/clfswm-util.lisp (save-configuration-variables): New
280 function to save all configuration variables in clfswmrc.
282 2009-11-11 Philippe Brochard <pbrochard@common-lisp.net>
284 * src/clfswm-info.lisp (info-mode): Begining of mouse support in
286 (set-default-info-keys): Add cursor key support in info mode.
288 2009-11-08 Philippe Brochard <pbrochard@common-lisp.net>
290 * contrib/reboot-halt.lisp: Add a Suspend/Reboot/Halt menu in
293 * src/clfswm.lisp (main): Add a read-conf-file-p parameter to
294 prevent reading the configuration file (this may be useful to
295 produce the original documentation without user modifications
296 with the rc configuration file).
298 2009-11-07 Philippe Brochard <pbrochard@common-lisp.net>
300 * src/bindings-second-mode.lisp (set-default-second-keys):
301 Simplification of Escape key to close/kill/remove the focus window
302 and unhide all windows.
304 * src/bindings.lisp (set-default-main-keys): Simplification of
305 Escape key to close/kill/remove the focus window and unhide all
308 * src/clfswm-util.lisp (ask-close/kill-current-window): Add remove
309 focus and unhide all windows capabilities.
311 2009-10-10 Philippe Brochard <pbrochard@common-lisp.net>
313 * contrib/mpd.lisp (start-gmpc): Add gmpc in the mpd menu.
315 2009-07-29 Philippe Brochard <pbrochard@common-lisp.net>
317 * src/clfswm-layout.lisp (tile-layout, tile-horizontal-layout):
318 Keep child order and don't make unnecessary child movement.
319 (one-column-layout, one-line-layout): New layouts.
321 2009-06-29 Philippe Brochard <pbrochard@common-lisp.net>
323 * contrib/cd-player.lisp: New file to handle the CD player.
325 * contrib/xmms.lisp: New file to handle the xmms player.
327 2009-06-28 Philippe Brochard <pbrochard@common-lisp.net>
329 * src/clfswm-layout.lisp (set-no-layout-remember-size): New layout:
330 Maximize windows in there frame - Leave frames to there actual
333 * src/bindings-second-mode.lisp (set-default-second-keys): Bind
334 "o" on set-open-in-new-frame-in-parent-frame-nw-hook.
336 2009-06-27 Philippe Brochard <pbrochard@common-lisp.net>
338 * contrib/keyb_fr.lisp: New file to handle an azerty keyboard.
340 2009-06-24 Philippe Brochard <pbrochard@common-lisp.net>
342 * contrib/mpd.lisp: Use a standard menu.
344 * src/clfswm-info.lisp: Use a standard menu for the help-menu.
346 2009-06-22 Philippe Brochard <pbrochard@common-lisp.net>
348 * contrib/mpd.lisp: New file to handle the Music Player Daemon (MPD)
350 2009-06-19 Philippe Brochard <pbrochard@common-lisp.net>
352 * src/clfswm-autodoc.lisp (produce-doc, produce-doc-html): Minor
355 2009-06-18 Philippe Brochard <pbrochard@common-lisp.net>
357 * src/config.lisp (get-fullscreen-size): One pixel adjustment
360 * src/clfswm-placement.lisp (*-child-placement): One pixel
363 2009-06-16 Philippe Brochard <pbrochard@common-lisp.net>
365 * src/clfswm-circulate-mode.lisp (draw-circulate-mode-window):
366 Ensure that all characters are printable.
368 * src/config.lisp (get-fullscreen-size): Adjust default fullscreen
371 * src/clfswm-placement.lisp (*-child-placement): Adjust
372 coordinates to one pixel in the current child.
374 2009-06-04 Philippe Brochard <pbrochard@common-lisp.net>
376 * src/clfswm-query.lisp (query-enter-function): Assign font before
377 width and height calculation.
379 2009-06-03 Philippe Brochard <pbrochard@common-lisp.net>
381 * src/xlib-util.lisp (banish-pointer): Use with-placement macro to
382 bannish the pointer in an arbitrary place.
384 * src/clfswm-info.lisp (info-mode): Use with-placement macro to
385 place the info window in an arbitrary place.
387 * src/clfswm-query.lisp (query-enter-function): Use with-placement
388 macro to place the query window in an arbitrary place.
390 * src/clfswm-placement.lisp: New file. Allow to place info windows
391 or query windows on an arbitrary place. Allow to bannish the
392 pointer on an arbitrary place.
394 2009-05-16 Philippe Brochard <pbrochard@common-lisp.net>
396 * src/clfswm-circulate-mode.lisp (reorder-child)
397 (reorder-brother): Unfocus windows before reordering children or
400 2009-05-13 Philippe Brochard <pbrochard@common-lisp.net>
402 * src/clfswm-circulate-mode.lisp (reorder-brother): Ensure that
403 the parent is a frame.
405 * src/clfswm-second-mode.lisp (sm-handle-motion-notify): Handle
406 motion with a default modifier.
408 * src/clfswm.lisp (handle-motion-notify): Handle motion with a
411 * src/clfswm-info.lisp (info-mode): Handle motion with a default
413 (info-mode): Optimization in loop function.
415 2009-05-10 Philippe Brochard <pbrochard@common-lisp.net>
417 * src/clfswm-circulate-mode.lisp (reorder-brother): Handle
418 root-frame correctly.
420 * clfswm.asd: Dependency fix for clfswm-generic-mode.
422 * src/clfswm-circulate-mode.lisp (reorder-child)
423 (reorder-brother): Handle empty frames.
424 (reorder-brother): Redisplay only the parent frame of the current
427 * src/clfswm-util.lisp (frame-toggle-maximize): Redisplay only the
428 parent frame of the current frame.
430 2009-05-09 Philippe Brochard <pbrochard@common-lisp.net>
432 * src/clfswm-util.lisp (frame-toggle-maximize): New function:
433 Maximize/Unmaximize the current frame in its parent frame.
435 * src/clfswm-layout.lisp (maximize-layout): New layout: Maximize
436 windows and frames in there parent frame.
438 2009-05-05 Philippe Brochard <pbrochard@common-lisp.net>
440 * src/*.lisp: Add support for Clozure Common Lisp (CCL).
442 * src/clfswm-circulate-mode.lisp (reorder-child)
443 (reorder-brother): Reinitialise on circulate type change
444 child to brother or brother to child.
446 * src/*.lisp (*): Use map-window instead of xlib:map-window. So
447 calls xlib:display-finish-output on each map-request. So speed up
450 * src/xlib-util.lisp (map-window): New function. Call
451 xlib:display-finish-output on each map request.
453 2009-04-28 Philippe Brochard <pbrochard@common-lisp.net>
455 * src/clfswm-second-mode.lisp (sm-handle-motion-notify):
456 Optimisation when drawing second mode window.
458 2009-04-27 Philippe Brochard <pbrochard@common-lisp.net>
460 * src/clfswm-circulate-mode.lisp (circulate-mode): Optimisation in
463 2009-04-22 Philippe Brochard <pbrochard@common-lisp.net>
465 * src/clfswm-util.lisp (run-program-from-query-string): Launch
466 command only with a return validation.
468 2009-04-22 Xavier Maillard <xma@gnu.org>
470 * src/clfswm-query.lisp (query-string): Use a generic mode.
472 2009-04-19 Xavier Maillard <xma@gnu.org>
474 * src/clfswm-info.lisp (info-mode): Use generic-mode for info-mode.
476 2009-04-18 Xavier Maillard <xma@gnu.org>
478 * src/clfswm-generic-mode.lisp (generic-mode): Add a generic mode
479 to define all other modes.
481 2009-04-05 Philippe Brochard <pbrochard@common-lisp.net>
483 * src/package.lisp (): Use *default-font-string* for all
486 * src/clfswm-info.lisp (info-mode): Ensure integer windows size.
488 2009-02-17 Philippe Brochard <pbrochard@common-lisp.net>
490 * src/xlib-util.lisp (null-size-window-p): Better check of null
493 2009-02-14 Philippe Brochard <pbrochard@common-lisp.net>
495 * src/clfswm.lisp (handle-map-request): Add a fix to manage
496 correctly fullscreen windows (SDL particularly).
498 2008-12-20 Philippe Brochard <pbrochard@common-lisp.net>
500 * src/xlib-util.lisp (get-color): Allocate colors only once -> fix
501 a segfault with clisp/new-clx.
503 * src/clfswm.lisp (handle-motion-notify): Add a needed window
506 * src/clfswm-second-mode.lisp (sm-handle-motion-notify): Add a
507 needed window argument.
509 2008-10-30 Philippe Brochard <pbrochard@common-lisp.net>
511 * src/xlib-util.lisp (wait-no-key-or-button-press)
512 (wait-a-key-or-button-press): Check buttons press/release correctly"
514 2008-10-28 Philippe Brochard <pbrochard@common-lisp.net>
516 * src/menu-def.lisp: Add children navigation menu in the movement
517 menu (select next/previous child/brother/level).
519 2008-10-26 Philippe Brochard <pbrochard@common-lisp.net>
521 * *: Rename 'sister' frame to 'brother' frame.
523 * src/clfswm-keys.lisp (unalias-modifiers): Convert a modifier
524 alias in a real modifier.
526 * src/package.lisp (*modifier-alias*): New list of modifier alias
527 For example: :alt is :mod-1, :numlock is :mod-2...
529 * src/tools.lisp (remove-hook): New function.
531 * src/clfswm-keys.lisp (with-capslock, without-capslock)
532 (with-numlock, without-cnumlock): New functions.
534 2008-10-25 Philippe Brochard <pbrochard@common-lisp.net>
536 * src/clfswm-info.lisp: Use the *binding-hook* to create info
537 keys and mouse bindings.
539 * src/bindings-second-mode.lisp: Use the *binding-hook* to create
540 second keys and mouse bindings.
542 * src/bindings.lisp: Use the *binding-hook* to create main keys
545 2008-10-10 Philippe Brochard <pbrochard@common-lisp.net>
547 * src/clfswm-menu.lisp (open-menu): Remember parent menu to undo
550 2008-10-09 Philippe Brochard <pbrochard@common-lisp.net>
552 * src/menu-def.lisp: Use a menu instead of a function for the
555 2008-10-08 Philippe Brochard <pbrochard@common-lisp.net>
557 * src/clfswm-util.lisp (show-standard-menu): Display the standard
558 menu from the 'update-menus' command.
560 2008-10-07 Philippe Brochard <pbrochard@common-lisp.net>
562 * src/clfswm-query.lisp (query-string): Do not ungrab keyboard if
563 it's already grabbed.
565 * src/clfswm-internal.lisp (display-frame-info): Use configurable
566 colors and fix a bug with background.
567 (display-frame-info): Set window background when displaying info.
569 2008-10-06 Philippe Brochard <pbrochard@common-lisp.net>
571 * src/xlib-util.lisp (my-character->keysyms): Use a macro to avoid
572 warning with clisp/new-clx.
574 2008-10-04 Philippe Brochard <pbrochard@common-lisp.net>
576 * src/clfswm-util.lisp (jump-to-slot): Prevent to jump on a
579 2008-09-23 Philippe Brochard <pbrochard@common-lisp.net>
580 * *: **** Release 0809 ****
582 2008-09-23 Philippe Brochard <pbrochard@common-lisp.net>
584 * src/clfswm-util.lisp (ensure-unique-name): New function and menu
586 (ensure-unique-number): New function and menu entry.
588 2008-09-22 Philippe Brochard <pbrochard@common-lisp.net>
590 * src/clfswm-nw-hooks.lisp (named-frame-nw-hook): New new window
591 hook: open the next window in a named frame.
592 (numbered-frame-nw-hook): New new window hook: open the next
593 window in a numbered frame.
595 * src/clfswm-query.lisp (query-string): Grab the keyboard in all
596 cases. So query-string can be called even in the main mode.
598 * src/clfswm-internal.lisp (show-all-children): Do not raise a
599 child by default => far less flickering.
601 2008-09-19 Philippe Brochard <pbrochard@common-lisp.net>
603 * src/bindings-second-mode.lisp: Bind "t" to tile-current-frame.
605 * src/menu-def.lisp: Change key binding for the CLFSWM menu
608 * src/xlib-util.lisp (xgrab-pointer): Handle the case where cursor
609 is nil. (workaround on some CLX implementation).
611 2008-09-12 Philippe Brochard <pbrochard@common-lisp.net>
613 * src/menu-def.lisp: Add a menu to set a focus policy for all
616 * src/clfswm-util.lisp (set-focus-policy-generic-for-all)
617 (all-frames-set-*-focus-policy): Set a focus policy for all
620 * src/clfswm.lisp (handle-enter-notify): sloppy-select
621 mode. Select a child and its parents on mouse over.
623 2008-09-03 Philippe Brochard <pbrochard@common-lisp.net>
625 * src/clfswm.lisp (handle-enter-notify): Add a sloppy strict focus
626 policy -> Sloppy focus only for windows in the current frame.
627 (main-unprotected): Exit clfswm on init error (ie: when another
628 window manager is running).
630 * src/clfswm-util.lisp (reset-clfswm): New function.
632 2008-09-02 Philippe Brochard <pbrochard@common-lisp.net>
634 * src/clfswm-menu.lisp (init-menu): New function.
636 * src/clfswm-util.lisp (reload-clfswm): New function to reload
638 (exit-clfswm): Rename quit-clfswm to exit-clfswm.
640 * src/clfswm.lisp (main, main-unprotected): Handle error in a
641 superior main function. Now CLFSWM can't break the X session. It
642 just reinitialize the display and run a new main loop.
644 * src/clfswm-corner.lisp: Make *clfswm-terminal* and
645 *vt-keyboard-on* global to avoid warnings when loading clfswm.
647 * src/clfswm-layout.lisp: Add a specific GIMP layout menu.
648 (help-on-gimp-layout): Describe how to use the GIMP layout.
650 2008-09-01 Philippe Brochard <pbrochard@common-lisp.net>
652 * src/clfswm-layout.lisp (set-gimp-layout): Change the layout to
653 main-window-right-layout. Change the keybinding for (shift)alt+tab
654 to not select windows in the main window lisst.
655 Bind F8 to add a window in the main window list.
656 Bind F9 to remove a window in the main window list.
657 Change the focus policy to :sloppy.
658 (set-previous-layout): Restore the previous layout, keybinding and
661 2008-08-31 Philippe Brochard <pbrochard@common-lisp.net>
663 * src/clfswm-menu.lisp (add-menu-comment): Add comments in menu.
665 * src/clfswm-layout.lisp (main-window-left-layout)
666 (main-window-bottom-layout, main-window-top-layout): New
668 Factorize layouts in menu.
670 2008-08-30 Philippe Brochard <pbrochard@common-lisp.net>
672 * src/clfswm-layout.lisp (main-window-right-layout): A possible
673 GIMP layout: one or more main windows on one side of the
674 frame. Others on the other size.
676 * src/clfswm-util.lisp
677 (current-frame-set-click/sloppy-focus-policy): Each frame can have
678 a different focus policy (one of :click or :sloppy).
679 The default focus policy is set with *default-focus-policy*.
681 2008-08-23 Philippe Brochard <pbrochard@common-lisp.net>
683 * src/clfswm-info.lisp (show-config-variable): New function.
685 2008-08-19 Philippe Brochard <pbrochard@common-lisp.net>
687 * src/clfswm-layout.lisp (tile-horizontal-layout): New layout.
689 * src/clfswm-info.lisp: Colored help for key binding and corners
692 2008-08-18 Philippe Brochard <pbrochard@common-lisp.net>
694 * src/clfswm-util.lisp (delete-focus-window)
695 (destroy-focus-window): Remove chid only in
696 handle-unmap/destroy-notify. Focus *current-root* only when
697 closing/killing the current child.
699 * src/clfswm-autodoc.lisp (produce-corner-*-doc): New autodoc
700 functions or corners.
702 2008-08-17 Philippe Brochard <pbrochard@common-lisp.net>
704 * src/clfswm-corner.lisp (present-clfswm-terminal): New corner
705 action: Hide/Unhide a terminal on mouse corner action. (By default
706 right mouse button on the top left corner).
708 * src/config.lisp (*never-managed-window-list*): New config
711 * src/clfswm-internal.lisp (never-managed-window-p): New function:
712 Handle never managed window in a more simple way.
714 * src/clfswm-corner.lisp: New file and new and more simple method
715 to define corners actions.
717 2008-08-15 Philippe Brochard <pbrochard@common-lisp.net>
719 * src/clfswm-info.lisp (info-mode): Info line can now be colored.
721 * src/clfswm-layout.lisp (fast-layout-switch)
722 (define-fast-layout-switch): New functions: Switch between two
725 * src/clfswm-second-mode.lisp (leave-second-mode): Takes care if
726 really in the second mode. So leave-second-mode can be used even
729 * src/clfswm-util.lisp (switch-to-last-child): New function:
730 Store the current child and switch to the previous one.
732 2008-07-16 Philippe Brochard <pbrochard@common-lisp.net>
734 * src/clfswm-util.lisp (display-current-window-info): Display the
736 (have-to-present-virtual-keyboard): Add a virtual keyboard corner
737 (top right by default). By default 'xvkbd' is used.
739 2008-06-28 Philippe Brochard <pbrochard@common-lisp.net>
741 * src/xlib-util.lisp (move-window, resize-window): Compress motion
744 * src/clfswm.lisp (handle-motion-notify): Compress motion events.
746 * src/clfswm-second-mode.lisp (sm-handle-motion-notify): Compress
749 * src/clfswm-info.lisp (info-mode): Compress motion events.
751 2008-06-21 Philippe Brochard <pbrochard@common-lisp.net>
753 * src/clfswm-internal.lisp (show-all-children): Compute geometry
754 and selection first and then show only necessary children.
755 (show-child): remove unneeded display-p parameter.
757 * src/config.lisp (get-fullscreen-size): Place the frame border
758 outside the screen (this prevent the loose of 2 pixels per
761 2008-06-12 Philippe Brochard <pbrochard@common-lisp.net>
763 * src/clfswm-internal.lisp (focus-child): Algorithm change to
764 raise only the selected child.
766 2008-06-08 Philippe Brochard <pbrochard@common-lisp.net>
768 * src/clfswm-internal.lisp (raise-p-list, show-all-children):
769 Raise only viewable children.
771 2008-06-06 Philippe Brochard <pbrochard@common-lisp.net>
773 * src/clfswm-internal.lisp (show-all-children): Always raise all
774 displayed children. Remove all references to raise-p.
776 2008-06-04 Philippe Brochard <pbrochard@common-lisp.net>
778 * src/menu-def.lisp (child-menu): New menu entry on raise/lower
781 * src/bindings-second-mode.lisp ("Page_Down", "Page_Up"): New
782 second mode binding on raise/lower child in its frame.
784 * src/clfswm-nw-hooks.lisp (leave-focus-frame-nw-hook): Adapt
785 behaviour to the new raise/lower property.
786 Call clear-nw-hook before the rest of the hook.
788 * src/bindings.lisp (mouse-click-to-focus-and-move-window)
789 (mouse-click-to-focus-and-resize-window): Stop button event. This
790 prevent a keyboard/pointer freeze.
792 2008-06-03 Philippe Brochard <pbrochard@common-lisp.net>
794 * src/clfswm-internal.lisp (frame-lower-child)
795 (frame-raise-child): New functions to raise/lower a child in its
798 * src/clfswm-util.lisp (have-to-present-windows)
799 (have-to-present-all-windows): New functions to have an MaxOS
800 expose like on mouse click in screen corner.
802 * src/clfswm-info.lisp ("Page_Down", "Page_Up"): Add boundaries.
804 2008-05-30 Philippe Brochard <pbrochard@common-lisp.net>
806 * src/clfswm-util.lisp (unhide-a-child-from-all-frames): Unhide a
807 child from a choice in all frames with hidden children.
809 * src/clfswm-info.lisp (info-mode-menu): Handle separators.
811 2008-05-28 Philippe Brochard <pbrochard@common-lisp.net>
813 * src/clfswm-util.lisp (hide-current-child, unhide-a-child)
814 (unhide-all-children): New functions.
816 * src/clfswm-info.lisp (info-mode-menu): Handle symbols and
819 * src/clfswm-util.lisp (hide/show-frame-window): new function and
822 2008-05-23 Philippe Brochard <pbrochard@common-lisp.net>
824 * src/clfswm-util.lisp (rename-current-child): Do not display the
825 frame info for a window.
827 2008-05-20 Philippe Brochard <pbrochard@common-lisp.net>
829 * src/clfswm-internal.lisp (remove-child-in-frame): Destroy the
830 frame window for the removed child and its children.
832 2008-05-18 Philippe Brochard <pbrochard@common-lisp.net>
834 * src/clfswm-autodoc.lisp (produce-*-doc-*): Add a note to use the
837 2008-05-17 Philippe Brochard <pbrochard@common-lisp.net>
839 * src/clfswm-nw-hooks.lisp (default-frame-nw-hook): Do not handle
840 the ROX pinboard (ie: leave it lowered in the root window as
843 * src/clfswm-layout.lisp (tile-left-space-layout): New layout.
844 (tile-left-layout, tile-right-layout, tile-top-layout)
845 (tile-bottom-layout): Use all the frame space when there is only
848 * src/clfswm-internal.lisp (place-window-from-hints): Center
849 unmanaged windows in the root screen.
851 * src/clfswm-nw-hooks.lisp (clear-nw-hook, clear-all-nw-hooks):
854 2008-05-15 Philippe Brochard <pbrochard@common-lisp.net>
856 * src/clfswm-util.lisp (current-frame-manage-window-type): Fix a
857 typo in managed types.
859 * src/clfswm-internal.lisp (show-child): Always display frame info
860 even if the frame is hidden.
862 * src/xlib-util.lisp (resize-window): Use a better algorithme to
865 2008-05-13 Philippe Brochard <pbrochard@common-lisp.net>
867 * src/clfswm-util.lisp (with-movement): Display frame info for all
868 frames in current root.
870 2008-05-12 Philippe Brochard <pbrochard@common-lisp.net>
872 * src/*.lisp: Rename 'brother' frames to 'sister' frames.
874 * src/bindings-second-mode.lisp (define-second-key #\a): New
875 binding on 'add-default-frame'.
877 * src/clfswm-autodoc.lisp (produce-*-doc-*-in-file): Show a
878 message to follow the autodocumentation process.
880 2008-05-10 Philippe Brochard <pbrochard@common-lisp.net>
882 * src/clfswm-util.lisp (bind-or-jump): Bind "Tab", "Return" and
883 "Space" to jump to a child. "B" to bind a slot on the current
886 * src/bindings-second-mode.lisp: Use "Tab" instead of
889 2008-05-07 Philippe Brochard <pbrochard@common-lisp.net>
891 * src/clfswm-util.lisp (find-child-under-mouse): Take care of
892 unmanaged (hidden) windows.
894 * src/clfswm-internal.lisp (place-window-from-hints): Give a
895 minimal size for windows.
896 (with-all-windows-frames-and-parent): New function.
898 * src/config.lisp (*default-window-width/height*): New parameters.
900 * src/clfswm-internal.lisp (place-window-from-hints): Center
901 windows in the screen instead of in there frame.
903 * src/bindings-second-mode.lisp (tile-space-current-frame): New
906 * src/clfswm-layout.lisp (register-layout): Intern the once name
907 in the right package.
909 2008-05-05 Philippe Brochard <pbrochard@common-lisp.net>
911 * doc/dot-clfswmrc: Update to follow the new clfswm way.
913 2008-05-03 Philippe Brochard <pbrochard@common-lisp.net>
915 * src/clfswm-internal.lisp (set-current-child)
916 (adapt-child-to-parent, show-child, hide-child): Handle the case
917 where child is not a frame or a window.
919 * src/clfswm-util.lisp
920 (mouse-click-to-focus-generic,mouse-focus-move/resize-generic):
921 Check if child is a frame.
923 * src/clfswm-internal.lisp (managed-window-p): Handle the case
925 (place-frame): Check if frame and parent are frames.
927 * src/clfswm-info.lisp (info-mode): display all frame info before
930 * src/clfswm-second-mode.lisp (second-key-mode): display all frame
933 * src/clfswm-internal.lisp (display-all-frame-info): New function.
935 2008-05-02 Philippe Brochard <pbrochard@common-lisp.net>
937 * src/tools.lisp (getenv): Implemented for ECL.
938 (urun-prog): Implemented for ECL.
940 * src/clfswm-util.lisp (identify-key): Use a double buffer to
943 * src/clfswm-query.lisp (query-string): Use a double buffer to
946 * src/clfswm-info.lisp (draw-info-window): Use a double buffer to
949 * src/xlib-util.lisp (clear-pixmap-buffer, copy-pixmap-buffer):
952 2008-05-01 Philippe Brochard <pbrochard@common-lisp.net>
954 * src/clfswm-info.lisp (info-mode): Add boundaries in the info mode window.
956 * src/menu-def.lisp: New file: move all menu definition in
959 * src/clfswm-layout.lisp (register-layout): Use a function instead
962 2008-04-30 Philippe Brochard <pbrochard@common-lisp.net>
964 * src/clfswm-autodoc.lisp (produce-menu-doc,
965 (produce-menu-doc-html): New functions.
966 (produce-doc-*): Moved to clfswm-autodoc.lisp.
968 * src/clfswm-util.lisp (paste-selection-no-clear): Prevent to
969 paste a child on one of its own children. (this prevent a
971 (move-child-to): Rename move/copy-current-child-by to
973 (mouse-move-window-over-frame): New function to move the window
974 under the mouse cursor to another frame.
976 * src/clfswm-internal.lisp (find-child-in-parent): New function.
978 2008-04-29 Philippe Brochard <pbrochard@common-lisp.net>
980 * src/clfswm-internal.lisp (show-all-children): Display unmanaged
981 windows only when its window parent is the current child.
983 2008-04-28 Philippe Brochard <pbrochard@common-lisp.net>
985 * src/clfswm-util.lisp (manage-current-window)
986 (unmanage-current-window): New functions: Allow to force to manage
987 or unmanage a window by its parent frame.
989 * src/bindings-second-mode.lisp (#\o): binded to
990 set-open-in-new-frame-in-parent-frame-nw-hook and
991 (#\o :control) to set-open-in-new-frame-in-root-frame-nw-hook
993 * src/clfswm-util.lisp (with-current-window): New macro.
995 * src/xlib-util.lisp (move-window, resize-window): Remove uneeded
996 exposure and enter-window handle event.
998 * src/clfswm-util.lisp (move-frame, resize-frame): Show all
999 children for the current child after the move/resize.
1001 2008-04-27 Philippe Brochard <pbrochard@common-lisp.net>
1003 * src/xlib-util.lisp (resize-window): Take care of window size
1006 * src/clfswm-util.lisp (mouse-focus-move/resize-generic): Allow to
1007 move/resize unmanaged windows.
1009 * src/xlib-util.lisp (move-window, resize-window): New functions.
1011 2008-04-25 Philippe Brochard <pbrochard@common-lisp.net>
1013 * src/clfswm-util.lisp (current-frame-manage-window-type): Let the
1014 user choose what window type the current frame must handle.
1015 (display-current-window-info): New function.
1016 (current-frame-manage-all-window-type)
1017 (current-frame-manage-only-normal-window-type)
1018 (current-frame-manage-no-window-type): New functions.
1020 * src/clfswm-internal.lisp (managed-window-p): New function.
1022 * src/package.lisp (frame): Managed type: new frame
1023 parameter. This allow to choose what window type a frame must
1026 * src/*.lisp: Rename all 'father' occurrences to 'parent'.
1028 * src/clfswm-nw-hooks.lisp
1029 (open-in-new-frame-in-parent-frame-nw-hook): New new window hook.
1031 * src/clfswm-util.lisp (adapt-current-frame-to-window-hints): New
1034 * src/tools.lisp (ensure-printable): Return always a string even
1037 2008-04-24 Philippe Brochard <pbrochard@common-lisp.net>
1039 * src/config.lisp (*default-nw-hook*): New variable to change the
1040 default new window hook.
1042 2008-04-22 Philippe Brochard <pbrochard@common-lisp.net>
1044 * clfswm.asd (clfswm): Add a dependency from
1045 clfswm-second-mode.lisp to clfswm.lisp.
1047 * src/clfswm-util.lisp (identify-key): Show the documentation for
1048 the function bound on a key.
1049 (with-movement): Move with-movement,
1050 current-frame-fill/pack/resize-* from bindings-second-mode.lisp
1051 to clfswm-util.lisp.
1053 * src/clfswm-menu.lisp: New menu system that let user change keys
1054 or functions associated to keys.
1056 2008-04-18 Philippe Brochard <pbrochard@common-lisp.net>
1058 * src/clfswm-internal.lisp (show-all-children): Display-child is
1059 the first child by default. Solve a bug with father-p.
1061 2008-04-17 Philippe Brochard <pbrochard@common-lisp.net>
1063 * src/clfswm-internal.lisp (add-frame): Add frame return the
1065 (show-all-children): Move the size computation outside the
1068 * src/bindings-second-mode.lisp (with-movement): Redisplay only
1071 * src/clfswm-util.lisp (mouse-click-to-focus-generic): Redisplay
1072 only the current child.
1074 * src/clfswm-internal.lisp (show-all-children): New display-child
1075 parameter to display only the desired child and its children.
1076 (select-next/previous-child): Only display the current child.
1078 2008-04-14 Philippe Brochard <pbrochard@common-lisp.net>
1080 * src/clfswm.lisp (init-display): Move the default frame creation
1081 on the default init hook.
1083 * src/clfswm-keys.lisp (define-ungrab/grab): Handle all keysyms in
1084 the main mode (for example: "1" on an azerty keyboard).
1086 2008-04-13 Philippe Brochard <pbrochard@common-lisp.net>
1088 * src/clfswm-keys.lisp (find-key-from-code): Better handle of
1089 keysyms. Revert to old grabbing method for the main mode.
1091 2008-04-12 Philippe Brochard <pbrochard@common-lisp.net>
1093 * src/clfswm.lisp (init-display): Add key handling on no focus
1094 window and on frame windows.
1096 2008-04-11 Philippe Brochard <pbrochard@common-lisp.net>
1098 * src/clfswm.lisp (main): Keyboard handle strategie change: Grab
1099 all keys by default and replay just what is needed. No change for
1102 * src/clfswm-keys.lisp: remove grab/ungrab main keys.
1103 (find-key-from-code): Test for shift and not shift presence.
1105 2008-04-09 Philippe Brochard <pbrochard@common-lisp.net>
1107 * src/clfswm-internal.lisp (switch-to-root-frame): show later -
1108 new key parameter to have less flickering.
1110 2008-04-07 Philippe Brochard <pbrochard@common-lisp.net>
1112 * src/bindings-second-mode.lisp (frame-layout-once-menu): Set the
1113 layout only one time and revert to no-layout to freely handle
1116 * src/clfswm-nw-hooks.lisp
1117 (open-in-new-frame-in-root-frame-nw-hook): Tile layout with spaces
1118 with new created window.
1120 * src/clfswm-layout.lisp (register-layout): Now register
1121 automatically a once layout to set the layout only one time and
1122 revert to no-layout to freely handle frames.
1124 2008-04-05 Philippe Brochard <pbrochard@common-lisp.net>
1126 * src/clfswm-nw-hooks.lisp (leave-focus-frame-nw-hook): New
1127 nw-hook: Open the next window in the current frame and leave the
1128 focus to the current child.
1130 2008-04-04 Philippe Brochard <pbrochard@common-lisp.net>
1132 * src/bindings-second-mode.lisp: Add keys definitions to
1133 bind-or-jump in the second mode.
1135 * src/clfswm-util.lisp (bind-or-jump): remove the auto-defining
1136 macro for bind-or-jump-(1|2|3...).
1138 * src/clfswm-keys.lisp (define-define-key/mouse): Allow additional
1139 arguments to function. This allow to do things like:
1140 (define-main-key (key) 'my-function 10 20 'foo) -> 10 20 and 'foo
1141 are passed to my-function on key press.
1143 2008-04-03 Philippe Brochard <pbrochard@common-lisp.net>
1145 * src/clfswm-util.lisp (bind-or-jump): New (great) function.
1147 2008-04-02 Philippe Brochard <pbrochard@common-lisp.net>
1149 * src/clfswm-internal.lisp (child-fullname): New function
1151 * src/clfswm-info.lisp (info-mode-menu): Add an explicit optional
1152 docstring in info-mode-menu. An item can be
1153 '((key function) (key function)) or with docstring
1154 '((key function "documentation 1") (key function "bla bla") (key function))
1156 * src/tools.lisp (ensure-n-elems): New function.
1158 * src/bindings-second-mode.lisp: Bind Alt+mouse-1/3 to move or
1159 resize a frame or the window's father.
1161 * src/clfswm.lisp (init-display): Remove tile-space-layout by
1162 default on the root frame.
1164 * src/clfswm-util.lisp (move/resize-frame): Add standard event
1165 hooks handlers (map-request, configure-notify...)
1167 * src/clfswm-internal.lisp (adapt-child-to-father): Limit minimal
1170 2008-04-01 Philippe Brochard <pbrochard@common-lisp.net>
1172 * src/bindings.lisp: Bind Alt+mouse-1/3 to move or resize a frame
1173 or the window's father.
1175 * src/clfswm-util.lisp (mouse-click-to-focus-generic): Stop button
1176 event only if there is a geometry change.
1177 (mouse-focus-move/resize-generic): Generic function to move or
1178 resize a frame or a window father frame.
1180 2008-04-01 Philippe Brochard <pbrochard@common-lisp.net>
1182 * src/clfswm-internal.lisp (show-all-children): Return t if there
1183 is a geometry change.
1185 2008-03-30 Philippe Brochard <pbrochard@common-lisp.net>
1187 * src/bindings.lisp (Up/Down): Swap select previous/next level.
1189 * src/bindings-second-mode.lisp (Up/Down): Swap select previous/next level.
1191 * src/clfswm.lisp (init-display): Create a default frame in the root frame.
1193 * src/clfswm-internal.lisp (place-frame): Place frame from real (pixel) coordinates.
1194 (with-all-*): Reverse the child list to manage the first child last (like in
1197 * src/config.lisp (*create-frame-on-root*): New variable: Create a new frame on the
1198 root window only if true.
1200 * src/clfswm-util.lisp (mouse-click-to-focus-generic): Create a new frame on the
1201 root window only if *create-frame-on-root* is true.
1203 * src/bindings-second-mode.lisp (sm-mouse-click-to-focus-generic): Create a new frame
1206 2008-03-29 Philippe Brochard <pbrochard@common-lisp.net>
1208 * src/bindings-second-mode.lisp (sm-mouse-click-to-focus-generic): Focus, move and resize
1209 the current child (even if it's a window).
1211 2008-03-28 Philippe Brochard <pbrochard@common-lisp.net>
1213 * src/clfswm-util.lisp (mouse-click-to-focus-and-move)
1214 (mouse-click-to-focus-and-resize): New functions.
1216 * src/clfswm-internal.lisp (*-fl->px): Convert float coordinates to pixel.
1217 (*-px->fl): Convert pixel coordinates to float.
1219 * src/tools.lisp (call-hook): Move call-hook to tools.lisp.
1221 2008-03-27 Philippe Brochard <pbrochard@common-lisp.net>
1223 * src/clfswm-layout.lisp (no-layout): Use :first-only to raise only the
1226 * src/clfswm-internal.lisp (hide-all): Split hide-all-children in hide-all
1227 and hide-all-children.
1228 (raise-if-needed): New function.
1229 (show-child): Use a first-p parameter to raise windows only when they are
1232 2008-03-26 Philippe Brochard <pbrochard@common-lisp.net>
1234 * src/clfswm-internal.lisp (select-next/previous-level): Don't use show-all-children
1237 2008-03-25 Philippe Brochard <pbrochard@common-lisp.net>
1239 * src/clfswm-info.lisp (keys-from-list): new function.
1241 * src/*: rename 'childs' in 'children'.
1243 * src/*: rename 'group' in 'frame'.
1245 2008-03-22 Philippe Brochard <pbrochard@common-lisp.net>
1247 * src/clfswm-pack.lisp (explode-group/explode-current-group): new functions.
1249 2008-03-21 Philippe Brochard <pbrochard@common-lisp.net>
1251 * src/clfswm-pack.lisp: Pack, Fill, Resize functions.
1253 2008-03-16 Philippe Brochard <pbrochard@common-lisp.net>
1255 * src/clfswm-nw-hooks.lisp: Register system for new window hooks.
1256 Bind control+o to open the next window in a new group in the root group
1257 (as open in next window in a new workspace in 0801 version).
1259 2008-03-15 Philippe Brochard <pbrochard@common-lisp.net>
1261 * src/clfswm-util.lisp (show/hide-all-groups-info/key): Show/hide all groups info
1264 2008-03-14 Philippe Brochard <pbrochard@common-lisp.net>
1266 * bindings-second-mode.lisp ("ISO_Left_Tab"): Use ISO_Left_Tab
1267 instead of Tab for select-previous-child.
1269 2008-03-13 Philippe Brochard <pbrochard@common-lisp.net>
1271 * clfswm-util.lisp (force-window-in-group/force-window-center-in-group):
1274 2008-03-11 Philippe Brochard <pbrochard@common-lisp.net>
1276 * clfswm-util.lisp (identify-key): Display the documentation
1277 associated to keys when identifying a key.
1279 2008-03-10 Xavier Maillard <xma@gnu.org>
1281 * contrib/clfswm: Complete rewrite of the script. Detect error and
1282 act accordingly. Add command line arguments to configure the
1283 script execution. User can now choose different common lisp
1284 implementation (clisp and sbcl only), choose where to store the
1285 dumped image, where to find clfswm source.
1287 2008-03-09 Philippe Brochard <pbrochard@common-lisp.net>
1289 * clfswm-internal.lisp (process-new-window): Beginning of new
1290 window hook: each group have a hook to tell what he wants to do
1291 with the new created window.
1293 2008-03-08 Xavier Maillard <xma@gnu.org>
1295 * contrib/clfswm: New script. Dump a CLISP image of CLFSWM then
1296 call the resulting executable.
1298 * clfswm.lisp (read-conf-file): Check for the user config file in
1299 XDG_CONFIG_HOME *first*. Freedesktop.org standards should be
1300 prefered whenever possible.
1302 2008-02-27 Philippe Brochard <pbrochard@common-lisp.net>
1304 * clfswm-layout.lisp (*-layout): Add an optional raise-p
1305 parameter in each layout.
1307 2008-02-26 Philippe Brochard <pbrochard@common-lisp.net>
1309 * clfswm-util.lisp (copy/cut-current-child): Does not affect the
1311 (copy/move-current-child-by-name/number): new functions
1312 (focus-group-by-name/number): new functions
1313 (delete-group-by-name/number): new functions
1315 2008-02-24 Philippe Brochard <pbrochard@common-lisp.net>
1317 * ************************************************************ *
1318 *: Major update - No more reference to workspaces. The main *
1319 structure is a tree of groups or application windows. *
1320 * ************************************************************ *
1322 2008-02-07 Philippe Brochard <pbrochard@common-lisp.net>
1324 * clfswm.lisp (read-conf-file): Read configuration in
1325 $HOME/.clfswmrc or in /etc/clfswmrc or in
1326 $XDG_CONFIG_HOME/clfswm/clfswmrc.
1327 (xdg-config-home): Return the content of $XDG-CONFIG-HOME (default
1330 2008-01-18 Philippe Brochard <pbrochard@common-lisp.net>
1332 * clfswm-internal.lisp (show-all-group): Use *root* and *root-gc*
1335 2008-01-03 Philippe Brochard <pbrochard@common-lisp.net>
1337 * clfswm-internal.lisp (find-window-group): New function.
1339 * clfswm*: Change to make clfswm run with clisp/new-clx.
1341 2008-01-01 Philippe Brochard <pbrochard@common-lisp.net>
1343 * clfswm-util.lisp (query-show-paren): Add show parent matching in
1345 (query-string): Bind control+k to delete end of line.
1347 * clfswm-second-mode.lisp (draw-second-mode-window): Display
1348 the action on mouse motion in second mode.
1350 * clfswm.lisp (handle-exposure): Redisplay groups on exposure
1351 event but do not clear the root window.
1352 (handle-configure-request): Adjust unmanaged window from there
1355 * clfswm-internal.lisp (process-new-window): Adjust new window
1356 with the specified hints (max/min/base width/height).
1358 2007-12-31 Philippe Brochard <pbrochard@common-lisp.net>
1360 * clfswm.lisp (handle-configure-request): Send an Configuration
1361 Notify event. This solve a bug with xterm and rxvt who takes some
1362 times to be mapped. Now there is no delay.
1364 * bindings-second-mode.lisp (define-shell): Run programs after
1365 living the second mode.
1367 2007-12-30 Philippe Brochard <pbrochard@common-lisp.net>
1369 * clfswm-internal.lisp (process-new-window): Do not crop transient
1370 window to group size.
1371 (adapt-window-to-group): Do not crop transient window to group
1374 * clfswm.lisp (handle-configure-request): Adapt just the window to
1375 its group and don't take care of the configure request. Remove the
1376 bug with the Gimp outside the group and speed up the window
1378 (handle-exposure): Remove show-all-group on exposure event
1381 2007-12-29 Philippe Brochard <pbrochard@common-lisp.net>
1383 * clfswm-util.lisp (circulate-group-up-copy-window)
1384 (circulate-group-down-copy-window)
1385 (circulate-workspace-up-copy-group)
1386 (circulate-workspace-down-copy-group): Prevent the copy of the
1387 same window in the same workspace.
1389 * bindings-second-mode.lisp (release-copy-selected-window)
1390 (release-copy-selected-group): Prevent the copy of the same window
1391 in the same workspace.
1393 * clfswm-pager.lisp (generic-pager-move-window-on-previous-line)
1394 (generic-pager-move-window-on-next-line): Remove the copy
1396 (generic-pager-move-group-on-next-workspace)
1397 (generic-pager-move-group-on-previous-workspace): Prevent the copy
1398 of the same window in the same workspace.
1400 * bindings-pager.lisp (mouse-pager-copy-selected-window-release)
1401 (mouse-pager-copy-selected-group-release): Prevent the copy of the
1402 same window in the same workspace.
1404 * tools.lisp (setf/=): new macro to set a variable only when
1407 * clfswm-internal.lisp (adapt-window-to-group): use set/= to set
1408 x, y... only when necessary.
1410 2007-12-28 Philippe Brochard <pbrochard@common-lisp.net>
1412 * clfswm.lisp (handle-configure-notify, *configure-notify-hook*):
1413 new function and hook: force windows to stay in its group (solve a
1416 2007-12-25 Philippe Brochard <pbrochard@common-lisp.net>
1418 * bindings-second-mode.lisp (mouse-motion): use hide-group to have
1419 less flickering when moving/resizing groups.
1421 * clfswm-internal.lisp (hide-group): new function.
1422 (show-all-group): clear-all: new parameter.
1424 2007-12-22 Philippe Brochard <pbrochard@common-lisp.net>
1426 * clfswm-keys.lisp (define-define-key): undefine-*-multi-name: new
1428 * clfswm*: Color change for the pager. Typo or better description
1429 in bindings definitions. Define bindings for a qwerty keyboard by
1430 default. dot-clfswmrc show examples to switch to an azerty
1432 License change to GPL v3.
1433 * config.lisp: new file - group all globals variables in this
1436 2007-08-26 Philippe Brochard <pbrochard@common-lisp.net>
1438 * xlib-util.lisp (hide-window): Remove structure-notivy events
1439 when hidding a window.
1441 2007-05-16 Philippe Brochard <pbrochard@common-lisp.net>
1443 * package.lisp (*sm-property-notify-hook*): Readded
1444 property-notify-hook in second mode.
1446 2007-05-15 Philippe Brochard <pbrochard@common-lisp.net>
1448 * clfswm-keys.lisp (produce-doc-html): Better clean up for strings.
1450 2007-05-13 Philippe Brochard <pbrochard@common-lisp.net>
1452 * clfswm-pack.lisp (tile-current-workspace-to/right/left/top/bottom):
1453 Tile the current workspace with the current window on one side and
1454 others on the other (this emulate the larswm, dwm, wmii way). See
1455 the default configuration file to enable this mode by default.
1457 * clfswm-pager.lisp (pager-tile-current-workspace-to): idem for
1460 2007-05-12 Philippe Brochard <pbrochard@common-lisp.net>
1462 * clfswm-pager.lisp (pager-draw-window-in-group): Add
1463 ensure-printable to print windows name even with non-ascii
1466 2007-05-11 Philippe Brochard <pbrochard@common-lisp.net>
1468 * clfswm-pager.lisp (pager-explode-current-group): Create a new
1469 group for each window in group.
1470 (pager-implode-current-group): Move all windows in workspace to
1471 one group and remove other groups.
1473 * clfswm-pack.lisp (explode-group): Create a new group for each
1475 (implode-group): Move all windows in workspace to one group and
1476 remove other groups.
1478 * clfswm-util.lisp (identify-key): Remove local configuration
1479 variables and made them available for configuration from
1481 (query-string): idem.
1483 2007-04-29 Philippe Brochard <pbrochard@common-lisp.net>
1485 * netwm-util.lisp: Start of NetWM compliance.
1486 Add a Netwm client list gestion.
1488 2007-04-28 Philippe Brochard <pbrochard@common-lisp.net>
1490 * clfswm-internal.lisp (create-group-on-request): open a new group
1491 only when the current group is not empty.
1493 * bindings-second-mode.lisp (define-second-key-#\o-control): Fix a
1494 bug with null workspace.
1496 * clfswm-pager.lisp (pager-handle-event): Add a hook
1497 system. This hooks can be changed in the user configuration file.
1499 * package.lisp: All colors and font variables are set in
1500 package.lisp and can be configured in the user configuration
1502 Note: If you have configured some less ugly colors (esp. for the
1503 pager) don't hesitate to let me know :)
1505 * clfswm-second-mode.lisp (sm-handle-event): Add a hook
1506 system. This hooks can be changed in the user configuration file.
1508 * clfswm.lisp (handle-event): Add a hook system. This hooks can be
1509 changed in the user configuration file (~/.clfswmrc)
1511 2007-04-25 Philippe Brochard <pbrochard@common-lisp.net>
1513 * clfswm-util.lisp (stop-all-pending-actions): new function: reset
1514 arrow action, open next window in new workspace/group.
1516 * bindings.lisp (stop-all-pending-actions): new binding.
1517 (open-next-window-in-new-group-once): Open the next windows in a
1518 new group (only once) or open all new windows in a new group (like
1519 others windows managers).
1521 2007-04-22 Philippe Brochard <pbrochard@common-lisp.net>
1523 * clfswm.lisp (read-conf-file): New function to read a lisp
1524 configuration file at startup.
1525 (focus-group-under-mouse): Check if group isn't the current group
1526 ( prevent a bug with unclutter ).
1528 2007-03-02 Philippe Brochard <pbrochard@common-lisp.net>
1530 * bindings.lisp (run-program-from-query-string): A program can be
1531 launch from a input query window.
1533 2007-03-01 Philippe Brochard <pbrochard@common-lisp.net>
1535 * clfswm-info.lisp: Fix a bug with banish pointer in info mode.
1537 2007-02-28 Philippe Brochard <pbrochard@common-lisp.net>
1539 * clfswm.lisp (process-new-window): One can now open the next
1540 window in a workspace called by its number.
1542 * clfswm-util.lisp (query-font-string): Minimal editing
1544 (eval-from-string): And an REPL in the window manager... :)
1546 2007-02-26 Philippe Brochard <pbrochard@common-lisp.net>
1548 * clfswm.lisp (process-new-window): One can now open the next
1549 window in a new workspace or a new group.
1551 * clfswm-pager.lisp (pager-mode): Display the next arrow action
1552 with the hidden windows.
1554 * clfswm.lisp (second-key-mode): Display the current workspace
1555 number and the next arrow action in the state window.
1557 * clfswm-pager.lisp (pager-mode): Hide all windows before leaving
1558 the pager mode and then redisplay only the current workspace.
1560 2007-02-25 Philippe Brochard <pbrochard@common-lisp.net>
1562 * clfswm.lisp (add-workspace): Workspaces are now numbered. So
1563 they can be focused with a keypress, sorted or renumbered.
1565 2007-02-24 Philippe Brochard <pbrochard@common-lisp.net>
1567 * clfswm-pager.lisp (pager-mode): Remove multiple silly
1568 pager-draw-display. This prevent a lot of flickering in the
1571 * clfswm.lisp: Remove all display-force-output and replace them
1572 with only one display-finish-output in the event loop.
1574 2006-11-06 Philippe Brochard <pbrochard@common-lisp.net>
1576 * clfswm-pager.lisp (pager-center-group): New function - center a
1577 group at the middle of the screen.
1579 * clfswm-pack.lisp (center-group): New function - center a group
1580 at the middle of the screen.
1582 * clfswm.lisp (show-group): Add a cross line under the group.
1583 (show-group): Group are showned even if fullscreened.
1584 (init-display): Add an exposure event on the root window.
1586 2006-11-05 Philippe Brochard <pbrochard@common-lisp.net>
1588 * package.lisp (*default-group*): Default group is the same size
1589 of a fullscreened group.
1591 * bindings*: Use shift to move, control+shift to copy.
1593 * *.lisp: Add comments for configuration or alternatives. So grep
1594 for CONFIG to see where you can configure clfswm. And grep for
1595 Alternative to use some commented code.
1597 * clfswm.lisp (second-key-mode): Use a single window to show the
1598 second mode. See for alternatives at the end of this file.
1600 2006-11-03 Philippe Brochard <pbrochard@common-lisp.net>
1602 * clfswm-keys.lisp (define-define-key/mouse): Factorisation in a
1603 macro of key and mouse definitions.
1604 (define-define-key/mouse): Use state instead of modifiers list
1605 this fix a bug when the modifiers list is not in the rigth order.
1607 * clfswm.lisp (second-key-mode): Add a colored border in second mode.
1609 2006-11-02 Philippe Brochard <pbrochard@common-lisp.net>
1611 * clfswm-info.lisp (info-mode): Add an info mode.
1613 2006-11-01 Philippe Brochard <pbrochard@common-lisp.net>
1615 * clfswm.lisp (process-new-window): Change border size for
1617 (show-all-windows-in-workspace): Unhide all windows even when the
1618 current group is in fullscreen mode.
1620 2006-10-26 Philippe Brochard <pbrochard@common-lisp.net>
1622 * clfswm-util.lisp (identify-key): Add an exposure handle-event to
1623 redisplay the identify window after a terminal switch.
1625 * clfswm-pager.lisp (pager-mode): Add an exposure handle-event to
1626 redisplay the pager after a terminal switch.
1628 2006-10-24 Philippe Brochard <pbrochard@common-lisp.net>
1630 * clfswm-util.lisp (identify-key): Add a window to display
1631 the keys to identify on screen.
1633 * bindings.lisp, bindings-pager.lisp: Define same keys to
1634 move/copy groups/windows in second mode and in pager.
1636 * clfswm.lisp (handle-event*): Same version in all clfswm (fix some
1638 (show-all-windows-in-workspace): unhide window before adapting it
1641 2006-10-23 Philippe Brochard <pbrochard@common-lisp.net>
1643 * clfswm.lisp (handle-event): Revert to an older version.
1645 2006-10-18 Philippe Brochard <pbrochard@common-lisp.net>
1647 * clfswm-util.lisp (force-window-in-group)
1648 (force-window-center-in-group): New functions for transient windows.
1650 * clfswm-pager.lisp (pager-remove-current-workspace/group):
1651 bugfix: hide all windows before removing group or workspace.
1653 2006-10-17 Philippe Brochard <pbrochard@common-lisp.net>
1655 * bindings-pager.lisp (mouse-pager-move-selected-group)
1656 (mouse-pager-copy-selected-group)
1657 (mouse-pager-move-selected-window)
1658 (mouse-pager-copy-selected-window, mouse-pager-rotate-window-up)
1659 (mouse-pager-rotate-window-down): New functions to have mouse in
1662 * clfswm-pager.lisp (pager-swap-window)
1663 (pager-copy-group-on-next/previous-workspace)
1664 (pager-copy-window-on-next/previous-line): New functions
1666 2006-10-15 Philippe Brochard <pbrochard@common-lisp.net>
1668 * clfswm-pager.lisp (pager-move-window-on-next/previous-line,
1669 (pager-move-group-on-next/previous-workspace): new functions.
1671 * clfswm-pack.lisp (resize-half-x-x-current-group): resize group
1672 to its half size (new functions).
1674 2006-10-11 Philippe Brochard <pbrochard@common-lisp.net>
1676 * clfswm-pager.lisp: workspaces, groups and windows can now be
1677 selectionned with the keyboard or the mouse.
1679 2006-10-09 Philippe Brochard <pbrochard@common-lisp.net>
1681 * clfswm-pager.lisp (pager-select-workspace-right/left):
1682 workspaces can now be selectionned with the keyboard.
1684 2006-10-08 Philippe Brochard <pbrochard@common-lisp.net>
1686 * clfswm-keys.lisp (undefine-main-key, undefine-second-key, undefine-mouse-action):
1687 new function to remove a previous defined key or mouse combination.
1689 2006-10-07 Philippe Brochard <pbrochard@common-lisp.net>
1691 * clfswm.lisp (main): Check for access error in init-display.
1693 * clfswm-keys.lisp (define-ungrab/grab): check for keysym and
1694 keycode before grabbing.
1696 * bindings.lisp: Remove nlambda and use defun to keep the function
1697 documentation with clisp.
1698 (define-shell): new macro to define shell command for the second
1701 2006-10-06 Philippe Brochard <pbrochard@common-lisp.net>
1703 * clfswm-keys.lisp (define-ungrab/grab): use a cond instead of a
1706 2006-10-05 Philippe Brochard <pbrochard@common-lisp.net>
1708 * bindings.lisp (accept-motion): Move group bugfix in upper mouse
1709 workspace circulation.
1711 * clfswm-util.lisp (absorb-orphan-window): new function.
1713 * clfswm-keys.lisp: Keysyms support.
1715 2006-10-02 Philippe Brochard <pbrochard@common-lisp.net>
1717 * clfswm.lisp (show-group): Use one gc for all groups and not one
1720 2006-10-01 Philippe Brochard <pbrochard@common-lisp.net>
1722 * bindings.lisp (define-second-key (#\l :mod-1)): fix a typo.
1724 * clfswm.lisp (adapt-window-to-group): Adapt only windows with
1725 width and height outside group.
1727 2006-09-28 Philippe Brochard <pbrochard@common-lisp.net>
1729 * clfswm.lisp: First public release.