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