1 2012-06-27 Philippe Brochard <pbrochard@common-lisp.net>
3 * src/clfswm-util.lisp (eval-from-query-string): Add completion
4 for eval for query string.
6 2012-06-26 Philippe Brochard <pbrochard@common-lisp.net>
8 * src/clfswm-query.lisp: Add completion for shell commands.
10 2012-06-18 Philippe Brochard <pbrochard@common-lisp.net>
12 * src/clfswm-placement.lisp: Each child can have its own border
13 size. New binding to change the child border size on the fly.
15 2012-06-08 Philippe Brochard <pbrochard@common-lisp.net>
17 * src/tools.lisp (process-timers): Call get-internal-real-time
18 only once for all times.
20 2012-06-07 Philippe Brochard <pbrochard@common-lisp.net>
22 * contrib/toolbar.lisp (define-toolbar-hooks): Add auto-hide
24 (define-toolbar-hooks): Add auto-hide toolbar (show/hide on mouse
27 2012-06-06 Philippe Brochard <pbrochard@common-lisp.net>
29 * src/xlib-util.lisp (handle-event): Add an additional hook event
30 system to handle events in contrib code.
32 2012-06-03 Philippe Brochard <pbrochard@common-lisp.net>
34 * src/clfswm-placement.lisp: Add an optional border size in all
37 2012-05-30 Philippe Brochard <pbrochard@common-lisp.net>
39 * contrib/toolbar.lisp (clock): Add a clock module.
41 2012-05-28 Philippe Brochard <pbrochard@common-lisp.net>
43 * contrib/toolbar.lisp: begining of toolbar support.
45 2012-05-24 Philippe Brochard <pbrochard@common-lisp.net>
47 * src/clfswm-internal.lisp (rotate-root-geometry): Do not use
48 rotatef but a simpler algorithm.
50 2012-05-19 Philippe Brochard <pbrochard@common-lisp.net>
52 * src/clfswm-placement.lisp: Adjust width and height in child and
53 root placement to prevent too big child size.
55 2012-05-18 Philippe Brochard <pbrochard@common-lisp.net>
57 * src/clfswm-placement.lisp: New root placement possibility.
59 * src/clfswm-util.lisp (change-current-root-geometry): New
62 2012-05-17 Philippe Brochard <pbrochard@common-lisp.net>
64 * src/clfswm-util.lisp (exchange-root-geometry-with-mouse): New
67 2012-05-16 Philippe Brochard <pbrochard@common-lisp.net>
69 * src/menu-def.lisp: New root menu.
71 2012-05-15 Philippe Brochard <pbrochard@common-lisp.net>
73 * src/clfswm-circulate-mode.lisp (rotate-root-geometry-next)
74 (rotate-root-geometry-previous): New second mode binding to change
77 2012-05-13 Philippe Brochard <pbrochard@common-lisp.net>
79 * src/clfswm-internal.lisp: Remove the *current-child* variable
80 and use a setfable function (current-child) instead.
81 (current-child-setter): Store root current child before apllying
84 2012-05-09 Philippe Brochard <pbrochard@common-lisp.net>
86 * src/clfswm-internal.lisp: Use xdpyinfo/xinerama informations
87 instead of xrandr informations.
89 2012-05-06 Philippe Brochard <pbrochard@common-lisp.net>
91 * src/clfswm-internal.lisp : Use only one list for root
93 (*root*): Root management API simplification.
95 2012-04-30 Philippe Brochard <pbrochard@common-lisp.net>
97 * src/clfswm-internal.lisp: Big change to replace *current-root*
98 variable to support multiple root.
100 2012-04-18 Philippe Brochard <pbrochard@common-lisp.net>
102 * src/tools.lisp (add-new-hook, add-hook): New macro. Do not
103 duplicate hooks by default. Use add-new-hook if you want to
106 2012-04-16 Philippe Brochard <pbrochard@common-lisp.net>
108 * src/clfswm-corner.lisp (wait-window-in-query-tree): Add a limit
109 of try to wait the command window.
111 2012-02-25 Philippe Brochard <pbrochard@common-lisp.net>
113 * src/clfswm-util.lisp (place-frames-from-xrandr)
114 (swap-frame-geometry, rotate-frame-geometry): New helper functions
115 for multiple physical screen.
116 (jump-to-slot, add-frame-in-parent-frame): Change *current-root*
119 2012-01-18 Philippe Brochard <pbrochard@common-lisp.net>
121 * src/*.lisp: Use create-symbol and create-symbol-in-package
122 instead of the shorter symb. (Thanks Aad Versteden).
124 * src/bindings-second-mode.lisp (set-default-second-keys): New
125 key binding to set window and frame transparency.
127 * src/bindings.lisp (set-default-main-mouse): New mouse binding to
128 set window and frame transparency.
130 * src/clfswm-keys.lisp (define-keys): New macro to ease multiple
131 keys definitions. (Thanks Valentin Plechinger for the request).
133 * src/*.lisp: Add full transparency support with xcompmgr.
135 2012-01-14 Philippe Brochard <pbrochard@common-lisp.net>
137 * src/*.lisp: Add transparency support.
139 2012-01-09 Ales Guzik <ales.guzik@gmail.com>
141 * src/clfswm-layout.lisp (tile-layout-mix): New layout to
142 automatically choose between vertival and horizontal tile layout.
143 (tile-space-layout): Fix to have space between screen border and
144 frame the same as between frames.
146 2012-01-04 Philippe Brochard <pbrochard@common-lisp.net>
148 * load.lisp: Support clisp 2.49+ module system to load CLX.
150 2012-01-04 Ales Guzik <ales.guzik@gmail.com>
152 * src/clfswm-layout.lisp (update-layout-managed-children-keep-position):
153 Fix an inattention error.
155 2012-01-04 Philippe Brochard <pbrochard@common-lisp.net>
157 * src/xlib-util.lisp (with-xlib-protect): Protect from
158 xlib:lookup-error. This prevent an error in clisp/new-clx when
159 sometimes an xlib:colormap is expected instead of an xlib:window.
161 2012-01-03 Philippe Brochard <pbrochard@common-lisp.net>
163 * src/xlib-util.lisp (handle-event): Fix a clisp/new-clx error
164 when sometimes window slot of event-slots is a pixmap instead of a
167 2011-12-26 Philippe Brochard <pbrochard@common-lisp.net>
169 * src/clfswm-query.lisp: Fill the history list with a non-nil
172 2011-12-25 Philippe Brochard <pbrochard@common-lisp.net>
174 * src/package.lisp (make-x-drawable): Drawable wrapper to prevent
175 type error in some CLX versions.
176 Replace xlib:drawable-* functions with x-drawable-* equivalents
178 2011-12-14 Philippe Brochard <pbrochard@common-lisp.net>
180 * src/clfswm-util.lisp (um-create-xdg-section-list): Add at least
181 the 'Utility menu entry.
183 * src/config.lisp (*xdg-section-list*): moved to config.lisp.
185 * src/clfswm-util.lisp (update-menus): Set a default value for
186 searching .desktop files when XDG_DATA_DIRS is not set.
188 2011-10-15 Philippe Brochard <pbrochard@common-lisp.net>
190 * src/clfswm-internal.lisp (place-window-from-hints): Use
191 with-placement macro to place unmanaged windows in an arbitrary
194 2011-06-16 Philippe Brochard <pbrochard@common-lisp.net>
196 * src/clfswm-internal.lisp (clean-windows-in-all-frames): Prevent
197 current root and current child being equal to child.
199 2011-06-13 Philippe Brochard <pbrochard@common-lisp.net>
201 * src/keysyms.lisp: Repeat Page_Down/Up keysym definitions at the
202 end of the file to change keysyms priority.
204 2011-06-13 Sylvain HENRY <hsyl20@gmail.com>
206 * *.*: Minor spelling fix.
208 2011-06-12 Philippe Brochard <pbrochard@common-lisp.net>
210 * src/clfswm.lisp (:unmap-notify, :destroy-notify): Show all
211 children just after the xlib tree cleanup -> reduce the
212 flickering when a window is deleted or destroyed.
214 * src/clfswm-internal.lisp (process-existing-windows): Do not
215 process the notify window.
217 2011-06-08 Philippe Brochard <pbrochard@common-lisp.net>
219 * *: **** Release 1106 ****
221 2011-06-08 Philippe Brochard <pbrochard@common-lisp.net>
223 * src/clfswm-internal.lisp (clean-windows-in-all-frames): New
224 function to prevent xlib error when a window is deleted.
226 2011-06-08 Philippe Brochard <pbrochard@common-lisp.net>
228 * src/clfswm-internal.lisp
229 (delete-child-and-children-in-all-frames): Delete or destroy
230 children before displaying all children.
232 2011-06-05 Philippe Brochard <pbrochard@common-lisp.net>
234 * src/clfswm-util.lisp (add-frame-in-parent-frame): New function
237 2011-06-04 Philippe Brochard <pbrochard@common-lisp.net>
239 * src/clfswm.lisp (main-unprotected): Destroy all frames windows
240 before closing the display (not really needed).
242 2011-06-02 Philippe Brochard <pbrochard@common-lisp.net>
244 * src/clfswm-layout.lisp (inc-tile-layout-size)
245 (dec-tile-layout-size, inc-slow-tile-layout-size)
246 (dec-slow-tile-layout-size): New functions and bindings.
248 2011-06-01 Philippe Brochard <pbrochard@common-lisp.net>
250 * src/clfswm-expose-mode.lisp (define-expose-letter-keys): Add
251 0..1 and A..Z keys to select a child in exposé mode.
253 * src/clfswm-internal.lisp (display-frame-info): Remove hidden
254 infos in frames windows.
256 * src/clfswm-util.lisp (ask-close/kill-current-window): Menu
259 2011-05-30 Philippe Brochard <pbrochard@common-lisp.net>
261 * src/clfswm-internal.lisp (get-parent-layout): Minor fullscreen
264 2011-05-29 Philippe Brochard <pbrochard@common-lisp.net>
266 * src/clfswm-internal.lisp
267 (delete-child-and-children-in-all-frames): Show all children
268 before deleting/destroying a windows, so prevent a flickering.
269 (get-parent-layout): Return the fullscreen size when the current
272 2011-05-28 Philippe Brochard <pbrochard@common-lisp.net>
274 * src/clfswm-internal.lisp (get-parent-layout): Handle correctly
277 * src/clfswm-util.lisp (delete-focus-window-generic): Do not hide
278 child before removing, so prevent a flickering.
280 * src/clfswm-internal.lisp (show-all-children): Rectangular
281 optimization to display only needed children.
282 (show-all-children): Remove flickering on
283 select-next/previous-brother.
285 2011-05-17 Philippe Brochard <pbrochard@common-lisp.net>
287 * src/clfswm-util.lisp (copy-focus-window, cut-focus-window): New
288 functions and ask-close/kill-current-window menu and bindings
291 2011-05-16 Philippe Brochard <pbrochard@common-lisp.net>
293 * src/clfswm-util.lisp (ask-close/kill-current-window): Add an
294 *ask-close/kill-placement* placement window variable.
296 2011-05-09 Philippe Brochard <pbrochard@common-lisp.net>
298 * contrib/osd.lisp (funcall-button-from-code): Display osd
299 documention for buttons and fix some redefining warnings.
301 2011-05-07 Philippe Brochard <pbrochard@common-lisp.net>
303 * src/clfswm-nw-hooks.lisp (make-permanent-nw-hook-frame): New
304 function. Prevent to add or delete a new window hook for this
307 * src/clfswm-layout.lisp (update-layout-managed-children-position):
310 2011-05-06 Philippe Brochard <pbrochard@common-lisp.net>
312 * src/bindings-second-mode.lisp (set-default-second-keys):
313 select-brother-spatial-move-* binding update.
315 * src/clfswm-layout.lisp (tile-left|right|top|bottom-layout): Ask
316 to keep children positions or not.
318 * src/clfswm-internal.lisp (fixe-real-size): Takes care of border
321 * src/clfswm-layout.lisp (update-layout-managed-children): Fix a
322 bug by using the parent frame instead of the current child.
324 * src/clfswm-circulate-mode.lisp
325 (select-brother-generic-spatial-move+right/left/up/down): New
326 function to select a brother from another in a spatial move.
328 2011-04-19 Philippe Brochard <pbrochard@common-lisp.net>
330 * src/clfswm-pack.lisp (move-frame-constrained)
331 (resize-frame-constrained): Use pixels instead of floating
334 2011-04-18 Philippe Brochard <pbrochard@common-lisp.net>
336 * src/clfswm-pack.lisp (resize-frame-constrained): Takes care of
338 (implode-frame, implode-current-frame): New functions. Absorb all
339 frames subchildren in frame. Explode frame opposite.
341 2011-04-17 Philippe Brochard <pbrochard@common-lisp.net>
343 * src/clfswm-pack.lisp (move-frame-constrained)
344 (resize-frame-constrained): New function. Move and resize frame
345 with the mouse constrained by other frame brothers.
347 2011-04-14 Philippe Brochard <pbrochard@common-lisp.net>
349 * src/clfswm-util.lisp (with-movement-select-next-brother)
350 (with-movement-select-previous-brother)
351 (with-movement-select-next-child): Use a simple method (do not
352 enter in the circulate mode) to allow to circulate in all children
355 * src/clfswm-menu.lisp (open-menu): Save info hash table keys
356 instead of deleting newly created keys.
358 2011-03-21 Philippe Brochard <pbrochard@common-lisp.net>
360 * src/clfswm-internal.lisp (x-px->fl, y-px->fl): Takes care of
363 2011-03-20 Philippe Brochard <pbrochard@common-lisp.net>
365 * src/clfswm-info.lisp (show-config-variable): call
366 produce-conf-var-doc.
368 2011-03-18 Philippe Brochard <pbrochard@common-lisp.net>
370 * src/clfswm-autodoc.lisp (produce-conf-var-doc-html): Produce a
371 documentation for all configurable variables in CLFSWM -
374 * src/clfswm-internal.lisp (leave-frame): Hide all children except
377 2011-03-16 Philippe Brochard <pbrochard@common-lisp.net>
379 * src/clfswm-autodoc.lisp (produce-all-docs): Produce a
380 documentation for all configurable variables in CLFSWM.
382 * src/clfswm-layout.lisp (set-gimp-layout): Display a notify
383 window with the help on the GIMP layout.
385 2011-03-12 Philippe Brochard <pbrochard@common-lisp.net>
387 * src/menu-def.lisp: Menu update to prevent cursor keys clash.
389 * clfswm.asd: Change compilation order to prevent undefined
392 * src/clfswm-internal.lisp (show-child(frame)): Handle properly
393 the show-root-frame-p parameter.
395 2011-03-11 Philippe Brochard <pbrochard@common-lisp.net>
397 * src/clfswm-util.lisp (move-frame, resize-frame): Do not move or
398 resize a frame when it's the current root.
400 2011-03-10 Philippe Brochard <pbrochard@common-lisp.net>
402 * src/clfswm-internal.lisp (show-all-children): Handle properly
403 duplicated child in multipe frames.
405 2011-03-09 Philippe Brochard <pbrochard@common-lisp.net>
407 * contrib/volume-mode.lisp (set-default-volume-keys): Add more
408 keybindings (up/down, right/left) to raise/lower the volume.
410 * src/clfswm-layout.lisp: Add a variable border size for frames
413 2011-03-08 Philippe Brochard <pbrochard@common-lisp.net>
415 * src/clfswm-util.lisp (cut-current-child, remove-current-child)
416 (delete-current-child): Hide the current child before doing the
419 * src/clfswm-internal.lisp (show-all-children): Hide windows not
420 in the current root before displaying those in current root.
421 Remove all hide-all unnecessary calls.
423 * src/clfswm-configuration.lisp (save-variables-in-conf-file):
424 Save only variables with a different value than their original
427 2011-03-07 Philippe Brochard <pbrochard@common-lisp.net>
429 * src/clfswm-info.lisp (show-config-variable): Use the new
432 * src/clfswm-autodoc.lisp (produce-configuration-variables): Use
433 the new defconfig method.
435 * src/clfswm-configuration.lisp (create-configuration-menu):
436 Change the config system with a more lispy one and a less string
437 based one: (defconfig name value group doc).
440 2011-03-06 Philippe Brochard <pbrochard@common-lisp.net>
442 * src/clfswm-internal.lisp (show-all-children): Simplify the
444 (show-child): Display an unmanaged window whe it's the current
446 (show-all-children): add the ability to display all child from
447 *root-frame* and hide all those who are not in *current-root*.
448 -> remove hide-all-children when needed.
450 * src/xlib-util.lisp (move-window,resize-window): Add a
451 *color-move-window* border when moving or resizing a window.
453 2011-03-04 Philippe Brochard <pbrochard@common-lisp.net>
455 * src/clfswm-internal.lisp (show-all-children): Perform only one
456 recusion on the clfswm tree: calculate geometry and place child in
459 2011-03-03 Philippe Brochard <pbrochard@common-lisp.net>
461 * src/clfswm-internal.lisp (show-all-children): Rethink of display
462 child order to prevent very annoying flickering.
464 2011-02-27 Philippe Brochard <pbrochard@common-lisp.net>
466 * src/clfswm-util.lisp (query-yes-or-no): New function.
468 * src/clfswm-configuration.lisp (reset-all-config-variables): New
469 function and menu entry.
470 (query-conf-value): Add the ability to leave the field blank to
471 reset the variable to its default value.
473 2011-02-26 Philippe Brochard <pbrochard@common-lisp.net>
475 * src/clfswm-configuration.lisp
476 (add-all-configuration-default-value): Add a default value to
477 configurable variables.
479 2011-02-23 Philippe Brochard <pbrochard@common-lisp.net>
481 * src/clfswm.lisp (main-unprotected): Create the configuration
482 menu only once at startup.
484 2011-02-22 Desmond O. Chang <dochang@gmail.com>
486 * contrib/amixer.lisp: Add a volume mode inspired by the emms
487 volume package. Alsa mixer interface.
489 * contrib/volume-mode.lisp: Add a volume mode inspired by the emms
492 2011-02-22 Desmond O. Chang <dochang@gmail.com>
494 * src/clfswm.lisp (main): Use ASDF:SYSTEM-SOURCE-DIRECTORY instead
495 of *LOAD-TRUENAME*. *LOAD-TRUENAME* is only bound during a call to
496 LOAD. If one eval CLFSWM:MAIN in repl, BASE-DIR will be an empty
497 string. Use ASDF:SYSTEM-SOURCE-DIRECTORY to fix it.
499 2011-02-16 Philippe Brochard <pbrochard@common-lisp.net>
501 * src/clfswm.lisp (main-unprotected): Add a close hook. And close
502 the notify window, the virtual keyboard and the clfswm terminal by
505 2011-02-15 Philippe Brochard <pbrochard@common-lisp.net>
507 * src/clfswm.lisp (main-unprotected): Destroy the notify window
508 before closing the display. This fix a bug when resetting/reloading
511 2011-02-12 Philippe Brochard <pbrochard@common-lisp.net>
513 * src/xlib-util.lisp (equal-wm-class-fun, equal-wm-name-fun)
514 (raise-window-fun, raise-and-focus-window-fun): New functions.
516 * src/config.lisp (*clfswm-terminal-cmd*): Switch from xterm to
518 (*never-managed-window-list*): Structure change to be more
519 flexible. Let the choice to focus, raise and do nothing on never
522 2011-02-09 Philippe Brochard <pbrochard@common-lisp.net>
524 * src/clfswm-util.lisp (mouse-focus-move/resize-generic): Take
525 care of never managed windows to move or resize them if the raise
528 * src/clfswm-internal.lisp (in-frame, in-window, in-child): New
531 2011-02-08 Philippe Brochard <pbrochard@common-lisp.net>
533 * src/clfswm.lisp (main-mode): Raise or not unmanaged windows
534 following request in *never-managed-window-list*.
536 2011-02-05 Philippe Brochard <pbrochard@common-lisp.net>
538 * *: **** Release 1102 ****
540 2011-02-05 Desmond O. Chang <dochang@gmail.com>
542 * src/keysyms.lisp: Add extended keysyms from stumpwm.
544 2011-02-01 Desmond O. Chang <dochang@gmail.com>
546 * src/clfswm-util.lisp (run-or-raise): New function (thanks to
549 * src/clfswm-internal.lisp (with-all-*): add a nil block.
551 2011-01-28 Desmond O. Chang <dochang@gmail.com>
553 * src/clfswm-util.lisp (xdg-config-home): XDG_CONFIG_HOME should
554 be $HOME/.config by default.
556 2010-12-29 Philippe Brochard <pbrochard@common-lisp.net>
558 * contrib/osd.lisp (display-doc): Add another method where a
559 CLFSWM native window is used to display the key documentation.
561 2010-12-27 Philippe Brochard <pbrochard@common-lisp.net>
563 * src/xlib-util.lisp (with-xlib-protect): Force to revert to the
566 2010-12-25 Philippe Brochard <pbrochard@common-lisp.net>
568 * src/clfswm-second-mode.lisp (second-key-mode): Call the second
569 mode leave function only when the generic mode was ended.
571 2010-12-08 Philippe Brochard <pbrochard@common-lisp.net>
573 * src/clfswm-second-mode.lisp (sm-leave-function): Do not use
574 *second-mode-program* anymore.
576 2010-12-07 Philippe Brochard <pbrochard@common-lisp.net>
578 * src/clfswm-second-mode.lisp (*second-mode-leave-function*): New
579 variable bound to a function executed (when not null) on second
582 2010-11-14 Philippe Brochard <pbrochard@common-lisp.net>
584 * src/clfswm-util.lisp (find-child-under-mouse): Do not find
587 2010-11-13 Philippe Brochard <pbrochard@common-lisp.net>
589 * src/clfswm-expose-mode.lisp (expose-mode-display-accel-windows):
590 Do not display the accel window for unmanaged windows.
592 2010-11-11 Philippe Brochard <pbrochard@common-lisp.net>
594 * src/clfswm-internal.lisp (set-current-root): Handle
595 window-parent in set-current-root.
597 * src/clfswm-util.lisp (mouse-click-to-focus-generic): Do not
598 focus the parent child when the current root is a window.
600 2010-11-09 Philippe Brochard <pbrochard@common-lisp.net>
602 * src/clfswm-expose-mode.lisp (expose-windows-current-child-mode):
603 New function an bindings.
605 * src/clfswm-layout.lisp (tile-layout, set-tile-layout): Fill
608 2010-11-07 Philippe Brochard <pbrochard@common-lisp.net>
610 * src/clfswm-layout.lisp (tile-layout-ask-keep-position): New
611 function to let the user choose to keep child position with
614 * src/clfswm-internal.lisp (remove-frame-data-slot): New
617 2010-11-05 Philippe Brochard <pbrochard@common-lisp.net>
619 * src/clfswm-internal.lisp (frame-select-next-child)
620 (frame-select-previous-child): New functions and bindings. Select
621 the next/previous child in the current frame.
623 2010-10-31 Philippe Brochard <pbrochard@common-lisp.net>
625 * src/clfswm-query.lisp (query-mode-complet): New function: Handle
626 completion in query-mode.
628 2010-10-30 Philippe Brochard <pbrochard@common-lisp.net>
630 * src/clfswm-query.lisp (query-print-string): Handle long lines
633 2010-10-27 Philippe Brochard <pbrochard@common-lisp.net>
635 * src/clfswm-expose-mode.lisp (expose-create-window): Ensure that
636 all characters are printable.
638 2010-10-25 Philippe Brochard <pbrochard@common-lisp.net>
640 * contrib/server/server.lisp: Load clfswm client code in the main
641 program and let the user start it with a --client command line
644 * src/package.lisp (*main-entrance-hook*): New hook executed after
645 loading configuration file and before opening the display.
647 2010-10-23 Philippe Brochard <pbrochard@common-lisp.net>
649 * src/xlib-util.lisp: Remove unnecessary xlib:display-finish-output.
651 * src/clfswm-internal.lisp (show-child): Show window only if not
654 * src/clfswm-keys.lisp (binding-substitute-modifier): Utility to
655 change modifiers after binding definition.
657 2010-10-21 Philippe Brochard <pbrochard@common-lisp.net>
659 * contrib/osd.lisp: New file: OSD (On Screen Display) for
662 * src/clfswm-menu.lisp (open-menu): Modularise function.
664 2010-10-13 Philippe Brochard <pbrochard@common-lisp.net>
666 * src/clfswm-info.lisp (show-first-aid-kit): Display the essential
667 key binding in main and second mode.
669 2010-10-10 Philippe Brochard <pbrochard@common-lisp.net>
671 * src/clfswm-util.lisp (open-notify-window): Convert hello-window
672 functions to a more generic Notify-window system.
674 * src/tools.lisp (add-timer): Add an id to identify the timer.
676 2010-10-09 Philippe Brochard <pbrochard@common-lisp.net>
678 * src/tools.lisp (erase-timer): New function.
680 * src/clfswm-util.lisp (display-hello-window): Add a timer to hide
681 the hello window. Add Configuration variables.
683 2010-10-08 Philippe Brochard <pbrochard@common-lisp.net>
685 * src/clfswm-util.lisp (): Add an Hello window at startup.
687 * src/tools.lisp (process-timers): Add a timer system.
689 2010-10-07 Philippe Brochard <pbrochard@common-lisp.net>
691 * src/clfswm-query.lisp (add-in-query-string): Handle correctly
694 2010-10-06 Philippe Brochard <pbrochard@common-lisp.net>
696 * src/clfswm-query.lisp (query-print-string): Change cursor color
697 and show parenthesis matching with colors (on match and on
700 2010-10-05 Philippe Brochard <pbrochard@common-lisp.net>
702 * src/clfswm-internal.lisp (show-all-children): Do not raise a
703 child when its parent is hidden.
705 2010-10-02 Philippe Brochard <pbrochard@common-lisp.net>
707 * src/clfswm-circulate-mode.lisp (select-next-subchild): Add the
708 possibility to circulate over subchild of the current child.
710 * src/clfswm-expose-mode.lisp (expose-all-windows-mode)
711 (expose-windows-generic): Add an escape-body function to return to
712 the original state on escape key.
714 * src/clfswm-util.lisp (bind-on-slot): Add an optional parameter
715 to bind the current child from the configuration file.
717 2010-10-01 Philippe Brochard <pbrochard@common-lisp.net>
719 * src/clfswm-nw-hooks.lisp (absorb-window-nw-hook): Absorb new
720 window hook: the frame absorb all new windows that match
721 nw-absorb-test frame data slot.
723 2010-09-30 Philippe Brochard <pbrochard@common-lisp.net>
725 * src/clfswm-expose-mode.lisp (expose-create-window): Show window
726 title in accel window.
728 2010-09-29 Philippe Brochard <pbrochard@common-lisp.net>
730 * configure: Use the Xavier Maillard clfswm script in contrib to
731 build an executable in the standard way.
733 2010-09-26 Philippe Brochard <pbrochard@common-lisp.net>
735 * src/clfswm-expose-mode.lisp (expose-mode-display-accel-windows):
736 New functions. Add a window on each child in the expose mode to
739 * src/clfswm-internal.lisp (child-x, child-y, child-width)
740 (child-height): New methods to get real child coordinates.
742 2010-09-25 Philippe Brochard <pbrochard@common-lisp.net>
744 * src/clfswm-layout.lisp (*-layout): Use child-position.
746 * src/clfswm-internal.lisp (child-position): New function.
748 * src/clfswm-expose-mode.lisp (expose-windows-mode)
749 (expose-all-windows-mode): Use a generic mode.
751 * src/xlib-util.lisp (with-handle-event-symbol): Use a filled list
752 with handle-event-fun symbols instead of inspecting clfswm
753 internals symbols on each mode change.
755 * src/clfswm-expose-mode.lisp: Move and rename present*-windows in
756 a separate clfswm-expose-mode.lisp file.
758 * src/clfswm-util.lisp (speed-mouse-right, speed-mouse-down): Use
759 screen size instead of hardcoded test coordinates.
761 2010-09-24 Philippe Brochard <pbrochard@common-lisp.net>
763 * src/clfswm-util.lisp (speed-mouse-reset, speed-mouse-left)
764 (speed-mouse-right, speed-mouse-up, speed-mouse-down)
765 (speed-mouse-undo, speed-mouse-first-history): New functions to
766 quickly move the mouse. Implemented for the second mode.
768 2010-09-16 Philippe Brochard <pbrochard@common-lisp.net>
770 * contrib/clfswm: Move clfswm sources to $tmp_dir if there is no
771 write permission on $clfswm_asd_path. So anybody can start clfswm
772 even if there is no write permission on the source directory.
774 2010-09-12 Philippe Brochard <pbrochard@common-lisp.net>
776 * contrib/clfswm: Add support to cmucl, ccl and ecl.
778 2010-09-11 Philippe Brochard <pbrochard@common-lisp.net>
780 * src/clfswm-util.lisp (set-hide-unmanaged-window)
781 (set-show-unmanaged-window, set-default-hide-unmanaged-window):
782 New functions and menu entry.
783 (set-globally-hide-unmanaged-window)
784 (set-globally-show-unmanaged-window): New functions and menu
787 * src/clfswm-internal.lisp (hide-unmanager-window-p): New
789 (show-child): Add a data slot on frame to hide or not unmanaged
792 * src/clfswm-corner.lisp (present-clfswm-terminal)
793 (present-virtual-keyboard): Use a function (generic-present-body)
794 instead of a macro (generate-present-body).
796 * src/clfswm-util.lisp (update-menus): List all directories and
797 subdirectories in $XDG_DATA_DIRS/applications.
799 2010-09-10 Philippe Brochard <pbrochard@common-lisp.net>
801 * src/clfswm-corner.lisp (generate-present-body): New macro.
802 (present-clfswm-terminal, present-virtual-keyboard): Use
803 generate-present-body.
805 2010-09-09 Philippe Brochard <pbrochard@common-lisp.net>
807 * src/clfswm-util.lisp (update-menus): Follow XDG specifications
808 instead of the non-portable Debian update-menu.
810 2010-09-07 Philippe Brochard <pbrochard@common-lisp.net>
812 * src/clfswm.lisp (error-handler): New function do handle
813 asynchronous errors and ignore them.
814 (open-display): Install the new error-handler on display.
816 2010-09-05 Philippe Brochard <pbrochard@common-lisp.net>
818 * src/xlib-util.lisp (with-xlib-protect): Add a
819 with-simple-restart on top of body execution.
821 2010-09-04 Philippe Brochard <pbrochard@common-lisp.net>
823 * src/clfswm.lisp (main-loop): Protect all xlib functions with an
826 * src/xlib-util.lisp (handle-event): use with-xlib-protect only in
827 handle-event. Add a with-simple-restart to prevent a
828 clisp/new-lisp infinite loop.
830 2010-08-30 Philippe Brochard <pbrochard@common-lisp.net>
832 * src/clfswm-corner.lisp (present-clfswm-terminal): Make the
833 clfswm terminal working even on xterm title changes.
835 2010-08-29 Philippe Brochard <pbrochard@common-lisp.net>
837 * src/clfswm-util.lisp (run-other-window-manager): Update for
840 * src/tools.lisp (do-execute): New parameter io to change the
843 * src/clfswm-util.lisp (hide-current-child): Prevent from removing
846 * src/clfswm-internal.lisp (child-member): New predicate.
847 (child-remove): New function.
849 * src/*.lisp: Use child-member and child-remove everywhere it's
852 2010-08-28 Philippe Brochard <pbrochard@common-lisp.net>
854 * src/clfswm.lisp (main-loop): Ensure that all events have been
855 processed after a process-event.
857 * src/clfswm-internal.lisp (is-in-current-child-p): New function.
859 2010-08-27 Philippe Brochard <pbrochard@common-lisp.net>
861 * src/clfswm.lisp (main-mode:configure-request): Raise the window
862 only when present on the current child and focus it accordingly.
864 2010-08-26 Philippe Brochard <pbrochard@common-lisp.net>
866 * src/clfswm-circulate-mode.lisp (circulate-loop-function):
867 Use is-a-key-pressed-p.
869 * src/xlib-util.lisp (is-a-key-pressed-p): New predicate.
871 * src/clfswm-keys.lisp (define-ungrab/grab): Use all values
872 returned by xlib:keysym->keycodes.
874 * src/*.lisp: Use the new child-equal-p to compare children. This
875 prevent a bug with sbcl/cmucl when the standard equal function
876 does not work with xlib:window.
878 * src/clfswm-internal.lisp (child-equal-p): New predicate.
880 2010-08-25 Philippe Brochard <pbrochard@common-lisp.net>
882 * src/clfswm-generic-mode.lisp (generic-mode): Use an
883 xlib:event-listen before processing event with
884 xlib:process-event. This prevent a bug with CLX threaded
885 implementation like sbcl.
887 * src/clfswm.lisp (main-loop): Use an xlib:event-listen before
888 processing event with xlib:process-event. This prevent a bug with
889 CLX threaded implementation like sbcl.
891 2010-08-17 Philippe Brochard <pbrochard@common-lisp.net>
893 * contrib/server/key.lisp (ushell-sh): Add ccl and ecl support.
895 * src/xlib-util.lisp (compress-motion-notify): Use a loop instead
898 * src/clfswm-internal.lisp (with-find-in-all-frames): New macro.
899 (find-parent-frame, find-frame-window, find-frame-by-name)
900 (find-frame-by-number): Use with-find-in-all-frames to search in
901 frames in the right order.
903 * src/clfswm-util.lisp (mouse-click-to-focus-generic): Fix an
904 unwanted flickering with unmanaged windows.
906 2010-08-16 Philippe Brochard <pbrochard@common-lisp.net>
908 * src/package.lisp: Remove event handler hooks as they're not
909 needed anymore (To replace them: use closure and define-handler).
911 * src/xlib-util.lisp (move-window, resize-window)
912 (wait-mouse-button-release): Use a generic mode.
914 * src/*.lisp: Replace the case to handle event with a more (tricky)
915 lispy method which bind a function to each keywords associated
918 2010-07-23 Philippe Brochard <pbrochard@common-lisp.net>
920 * src/clfswm-util.lisp (delete-current-child): Invert bindings and
921 menu entry between delete-current-child and remove-current-child.
922 ie: Delete a child and its children in all frames by default.
924 2010-07-21 Philippe Brochard <pbrochard@common-lisp.net>
926 * src/package.lisp: Add a placement configuration group.
928 * src/binding*.lisp: Bind control+g to escape the current action
931 * src/clfswm-internal.lisp
932 (delete-child-and-children-in-all-frames): New function and
933 binding: Second mode - Control+Delete delete the current child and
934 its children in all frames (ie: close the current child and its
937 2010-07-20 Philippe Brochard <pbrochard@common-lisp.net>
939 * src/clfswm-internal.lisp (remove-child-in-frame): Do not destroy
940 the frame window and the frame gc. Close a very annoying bug when
941 cuting/pasting a frame or moving a child over frames with the
944 * src/clfswm-util.lisp (mouse-click-to-focus-generic): Redisplay
945 all children in *current-root* after moving/resizing a frame.
947 2010-07-18 Philippe Brochard <pbrochard@common-lisp.net>
949 * src/clfswm-util.lisp (delete-focus-window)
950 (destroy-focus-window): Remove child in parent frame before
953 2010-07-16 Philippe Brochard <pbrochard@common-lisp.net>
955 * src/clfswm-util.lisp (identify-key): Add a timeout in
957 (mouse-click-to-focus-generic): Use find-child-under-mouse instead
958 of the window passed by xlib:process-event.
960 * src/xlib-util.lisp (move-window, resize-window)
961 (wait-mouse-button-release): Add a timeout in xlib:process-event.
963 2010-04-11 Philippe Brochard <pbrochard@common-lisp.net>
965 * src/clfswm-util.lisp (run-other-window-manager): Add the ability
966 to launch an other window manager and to return to clfswm.
968 2010-03-18 Philippe Brochard <pbrochard@common-lisp.net>
970 * src/clfswm-layout.lisp (set-tile-space-layout): Set default
973 2009-12-15 Philippe Brochard <pbrochard@common-lisp.net>
975 * src/clfswm.lisp (main-loop): Add a *loop-hook* parameter and a
978 * src/clfswm-generic-mode.lisp (generic-mode): Add a loop-hook
979 parameter and a loop timeout.
981 2009-12-05 Philippe Brochard <pbrochard@common-lisp.net>
983 * src/clfswm.lisp (main): Add an alternate configuration filename
986 * load.lisp: Add a debuging code example.
988 2009-11-14 Philippe Brochard <pbrochard@common-lisp.net>
990 * src/clfswm-configuration.lisp (create-configuration-menu): New
991 menu to configure all clfswm variables while clfswm is running.
993 2009-11-12 Philippe Brochard <pbrochard@common-lisp.net>
995 * src/clfswm-util.lisp (save-configuration-variables): New
996 function to save all configuration variables in clfswmrc.
998 2009-11-11 Philippe Brochard <pbrochard@common-lisp.net>
1000 * src/clfswm-info.lisp (info-mode): Begining of mouse support in
1002 (set-default-info-keys): Add cursor key support in info mode.
1004 2009-11-08 Philippe Brochard <pbrochard@common-lisp.net>
1006 * contrib/reboot-halt.lisp: Add a Suspend/Reboot/Halt menu in
1009 * src/clfswm.lisp (main): Add a read-conf-file-p parameter to
1010 prevent reading the configuration file (this may be useful to
1011 produce the original documentation without user modifications
1012 with the rc configuration file).
1014 2009-11-07 Philippe Brochard <pbrochard@common-lisp.net>
1016 * src/bindings-second-mode.lisp (set-default-second-keys):
1017 Simplification of Escape key to close/kill/remove the focus window
1018 and unhide all windows.
1020 * src/bindings.lisp (set-default-main-keys): Simplification of
1021 Escape key to close/kill/remove the focus window and unhide all
1024 * src/clfswm-util.lisp (ask-close/kill-current-window): Add remove
1025 focus and unhide all windows capabilities.
1027 2009-10-10 Philippe Brochard <pbrochard@common-lisp.net>
1029 * contrib/mpd.lisp (start-gmpc): Add gmpc in the mpd menu.
1031 2009-07-29 Philippe Brochard <pbrochard@common-lisp.net>
1033 * src/clfswm-layout.lisp (tile-layout, tile-horizontal-layout):
1034 Keep child order and don't make unnecessary child movement.
1035 (one-column-layout, one-line-layout): New layouts.
1037 2009-06-29 Philippe Brochard <pbrochard@common-lisp.net>
1039 * *: **** Release 0906 ****
1041 * contrib/cd-player.lisp: New file to handle the CD player.
1043 * contrib/xmms.lisp: New file to handle the xmms player.
1045 2009-06-28 Philippe Brochard <pbrochard@common-lisp.net>
1047 * src/clfswm-layout.lisp (set-no-layout-remember-size): New layout:
1048 Maximize windows in their frame - Leave frames to their actual
1051 * src/bindings-second-mode.lisp (set-default-second-keys): Bind
1052 "o" on set-open-in-new-frame-in-parent-frame-nw-hook.
1054 2009-06-27 Philippe Brochard <pbrochard@common-lisp.net>
1056 * contrib/keyb_fr.lisp: New file to handle an azerty keyboard.
1058 2009-06-24 Philippe Brochard <pbrochard@common-lisp.net>
1060 * contrib/mpd.lisp: Use a standard menu.
1062 * src/clfswm-info.lisp: Use a standard menu for the help-menu.
1064 2009-06-22 Philippe Brochard <pbrochard@common-lisp.net>
1066 * contrib/mpd.lisp: New file to handle the Music Player Daemon (MPD)
1068 2009-06-19 Philippe Brochard <pbrochard@common-lisp.net>
1070 * src/clfswm-autodoc.lisp (produce-doc, produce-doc-html): Minor
1073 2009-06-18 Philippe Brochard <pbrochard@common-lisp.net>
1075 * src/config.lisp (get-fullscreen-size): One pixel adjustment
1078 * src/clfswm-placement.lisp (*-child-placement): One pixel
1081 2009-06-16 Philippe Brochard <pbrochard@common-lisp.net>
1083 * src/clfswm-circulate-mode.lisp (draw-circulate-mode-window):
1084 Ensure that all characters are printable.
1086 * src/config.lisp (get-fullscreen-size): Adjust default fullscreen
1089 * src/clfswm-placement.lisp (*-child-placement): Adjust
1090 coordinates to one pixel in the current child.
1092 2009-06-04 Philippe Brochard <pbrochard@common-lisp.net>
1094 * src/clfswm-query.lisp (query-enter-function): Assign font before
1095 width and height calculation.
1097 2009-06-03 Philippe Brochard <pbrochard@common-lisp.net>
1099 * src/xlib-util.lisp (banish-pointer): Use with-placement macro to
1100 bannish the pointer in an arbitrary place.
1102 * src/clfswm-info.lisp (info-mode): Use with-placement macro to
1103 place the info window in an arbitrary place.
1105 * src/clfswm-query.lisp (query-enter-function): Use with-placement
1106 macro to place the query window in an arbitrary place.
1108 * src/clfswm-placement.lisp: New file. Allow to place info windows
1109 or query windows on an arbitrary place. Allow to bannish the
1110 pointer on an arbitrary place.
1112 2009-05-16 Philippe Brochard <pbrochard@common-lisp.net>
1114 * src/clfswm-circulate-mode.lisp (reorder-child)
1115 (reorder-brother): Unfocus windows before reordering children or
1118 2009-05-13 Philippe Brochard <pbrochard@common-lisp.net>
1120 * src/clfswm-circulate-mode.lisp (reorder-brother): Ensure that
1121 the parent is a frame.
1123 * src/clfswm-second-mode.lisp (sm-handle-motion-notify): Handle
1124 motion with a default modifier.
1126 * src/clfswm.lisp (handle-motion-notify): Handle motion with a
1129 * src/clfswm-info.lisp (info-mode): Handle motion with a default
1131 (info-mode): Optimization in loop function.
1133 2009-05-10 Philippe Brochard <pbrochard@common-lisp.net>
1135 * src/clfswm-circulate-mode.lisp (reorder-brother): Handle
1136 root-frame correctly.
1138 * clfswm.asd: Dependency fix for clfswm-generic-mode.
1140 * src/clfswm-circulate-mode.lisp (reorder-child)
1141 (reorder-brother): Handle empty frames.
1142 (reorder-brother): Redisplay only the parent frame of the current
1145 * src/clfswm-util.lisp (frame-toggle-maximize): Redisplay only the
1146 parent frame of the current frame.
1148 2009-05-09 Philippe Brochard <pbrochard@common-lisp.net>
1150 * src/clfswm-util.lisp (frame-toggle-maximize): New function:
1151 Maximize/Unmaximize the current frame in its parent frame.
1153 * src/clfswm-layout.lisp (maximize-layout): New layout: Maximize
1154 windows and frames in their parent frame.
1156 2009-05-05 Philippe Brochard <pbrochard@common-lisp.net>
1158 * src/*.lisp: Add support for Clozure Common Lisp (CCL).
1160 * src/clfswm-circulate-mode.lisp (reorder-child)
1161 (reorder-brother): Reinitialise on circulate type change
1162 child to brother or brother to child.
1164 * src/*.lisp (*): Use map-window instead of xlib:map-window. So
1165 calls xlib:display-finish-output on each map-request. So speed up
1168 * src/xlib-util.lisp (map-window): New function. Call
1169 xlib:display-finish-output on each map request.
1171 2009-04-28 Philippe Brochard <pbrochard@common-lisp.net>
1173 * src/clfswm-second-mode.lisp (sm-handle-motion-notify):
1174 Optimisation when drawing second mode window.
1176 2009-04-27 Philippe Brochard <pbrochard@common-lisp.net>
1178 * src/clfswm-circulate-mode.lisp (circulate-mode): Optimisation in
1181 2009-04-22 Philippe Brochard <pbrochard@common-lisp.net>
1183 * src/clfswm-util.lisp (run-program-from-query-string): Launch
1184 command only with a return validation.
1186 2009-04-22 Xavier Maillard <xma@gnu.org>
1188 * src/clfswm-query.lisp (query-string): Use a generic mode.
1190 2009-04-19 Xavier Maillard <xma@gnu.org>
1192 * src/clfswm-info.lisp (info-mode): Use generic-mode for info-mode.
1194 2009-04-18 Xavier Maillard <xma@gnu.org>
1196 * src/clfswm-generic-mode.lisp (generic-mode): Add a generic mode
1197 to define all other modes.
1199 2009-04-05 Philippe Brochard <pbrochard@common-lisp.net>
1201 * src/package.lisp (): Use *default-font-string* for all
1204 * src/clfswm-info.lisp (info-mode): Ensure integer windows size.
1206 2009-02-17 Philippe Brochard <pbrochard@common-lisp.net>
1208 * src/xlib-util.lisp (null-size-window-p): Better check of null
1211 2009-02-14 Philippe Brochard <pbrochard@common-lisp.net>
1213 * src/clfswm.lisp (handle-map-request): Add a fix to manage
1214 correctly fullscreen windows (SDL particularly).
1216 2008-12-20 Philippe Brochard <pbrochard@common-lisp.net>
1218 * src/xlib-util.lisp (get-color): Allocate colors only once -> fix
1219 a segfault with clisp/new-clx.
1221 * src/clfswm.lisp (handle-motion-notify): Add a needed window
1224 * src/clfswm-second-mode.lisp (sm-handle-motion-notify): Add a
1225 needed window argument.
1227 2008-10-30 Philippe Brochard <pbrochard@common-lisp.net>
1229 * src/xlib-util.lisp (wait-no-key-or-button-press)
1230 (wait-a-key-or-button-press): Check buttons press/release correctly"
1232 2008-10-28 Philippe Brochard <pbrochard@common-lisp.net>
1234 * src/menu-def.lisp: Add children navigation menu in the movement
1235 menu (select next/previous child/brother/level).
1237 2008-10-26 Philippe Brochard <pbrochard@common-lisp.net>
1239 * *: Rename 'sister' frame to 'brother' frame.
1241 * src/clfswm-keys.lisp (unalias-modifiers): Convert a modifier
1242 alias in a real modifier.
1244 * src/package.lisp (*modifier-alias*): New list of modifier alias
1245 For example: :alt is :mod-1, :numlock is :mod-2...
1247 * src/tools.lisp (remove-hook): New function.
1249 * src/clfswm-keys.lisp (with-capslock, without-capslock)
1250 (with-numlock, without-cnumlock): New functions.
1252 2008-10-25 Philippe Brochard <pbrochard@common-lisp.net>
1254 * src/clfswm-info.lisp: Use the *binding-hook* to create info
1255 keys and mouse bindings.
1257 * src/bindings-second-mode.lisp: Use the *binding-hook* to create
1258 second keys and mouse bindings.
1260 * src/bindings.lisp: Use the *binding-hook* to create main keys
1263 2008-10-10 Philippe Brochard <pbrochard@common-lisp.net>
1265 * src/clfswm-menu.lisp (open-menu): Remember parent menu to undo
1268 2008-10-09 Philippe Brochard <pbrochard@common-lisp.net>
1270 * src/menu-def.lisp: Use a menu instead of a function for the
1273 2008-10-08 Philippe Brochard <pbrochard@common-lisp.net>
1275 * src/clfswm-util.lisp (show-standard-menu): Display the standard
1276 menu from the 'update-menus' command.
1278 2008-10-07 Philippe Brochard <pbrochard@common-lisp.net>
1280 * src/clfswm-query.lisp (query-string): Do not ungrab keyboard if
1281 it's already grabbed.
1283 * src/clfswm-internal.lisp (display-frame-info): Use configurable
1284 colors and fix a bug with background.
1285 (display-frame-info): Set window background when displaying info.
1287 2008-10-06 Philippe Brochard <pbrochard@common-lisp.net>
1289 * src/xlib-util.lisp (my-character->keysyms): Use a macro to avoid
1290 warning with clisp/new-clx.
1292 2008-10-04 Philippe Brochard <pbrochard@common-lisp.net>
1294 * src/clfswm-util.lisp (jump-to-slot): Prevent to jump on a
1297 2008-09-23 Philippe Brochard <pbrochard@common-lisp.net>
1299 * *: **** Release 0809 ****
1301 2008-09-23 Philippe Brochard <pbrochard@common-lisp.net>
1303 * src/clfswm-util.lisp (ensure-unique-name): New function and menu
1305 (ensure-unique-number): New function and menu entry.
1307 2008-09-22 Philippe Brochard <pbrochard@common-lisp.net>
1309 * src/clfswm-nw-hooks.lisp (named-frame-nw-hook): New new window
1310 hook: open the next window in a named frame.
1311 (numbered-frame-nw-hook): New new window hook: open the next
1312 window in a numbered frame.
1314 * src/clfswm-query.lisp (query-string): Grab the keyboard in all
1315 cases. So query-string can be called even in the main mode.
1317 * src/clfswm-internal.lisp (show-all-children): Do not raise a
1318 child by default => far less flickering.
1320 2008-09-19 Philippe Brochard <pbrochard@common-lisp.net>
1322 * src/bindings-second-mode.lisp: Bind "t" to tile-current-frame.
1324 * src/menu-def.lisp: Change key binding for the CLFSWM menu
1327 * src/xlib-util.lisp (xgrab-pointer): Handle the case where cursor
1328 is nil. (workaround on some CLX implementation).
1330 2008-09-12 Philippe Brochard <pbrochard@common-lisp.net>
1332 * src/menu-def.lisp: Add a menu to set a focus policy for all
1335 * src/clfswm-util.lisp (set-focus-policy-generic-for-all)
1336 (all-frames-set-*-focus-policy): Set a focus policy for all
1339 * src/clfswm.lisp (handle-enter-notify): sloppy-select
1340 mode. Select a child and its parents on mouse over.
1342 2008-09-03 Philippe Brochard <pbrochard@common-lisp.net>
1344 * src/clfswm.lisp (handle-enter-notify): Add a sloppy strict focus
1345 policy -> Sloppy focus only for windows in the current frame.
1346 (main-unprotected): Exit clfswm on init error (ie: when another
1347 window manager is running).
1349 * src/clfswm-util.lisp (reset-clfswm): New function.
1351 2008-09-02 Philippe Brochard <pbrochard@common-lisp.net>
1353 * src/clfswm-menu.lisp (init-menu): New function.
1355 * src/clfswm-util.lisp (reload-clfswm): New function to reload
1357 (exit-clfswm): Rename quit-clfswm to exit-clfswm.
1359 * src/clfswm.lisp (main, main-unprotected): Handle error in a
1360 superior main function. Now CLFSWM can't break the X session. It
1361 just reinitialize the display and run a new main loop.
1363 * src/clfswm-corner.lisp: Make *clfswm-terminal* and
1364 *vt-keyboard-on* global to avoid warnings when loading clfswm.
1366 * src/clfswm-layout.lisp: Add a specific GIMP layout menu.
1367 (help-on-gimp-layout): Describe how to use the GIMP layout.
1369 2008-09-01 Philippe Brochard <pbrochard@common-lisp.net>
1371 * src/clfswm-layout.lisp (set-gimp-layout): Change the layout to
1372 main-window-right-layout. Change the keybinding for (shift)alt+tab
1373 to not select windows in the main window lisst.
1374 Bind F8 to add a window in the main window list.
1375 Bind F9 to remove a window in the main window list.
1376 Change the focus policy to :sloppy.
1377 (set-previous-layout): Restore the previous layout, keybinding and
1380 2008-08-31 Philippe Brochard <pbrochard@common-lisp.net>
1382 * src/clfswm-menu.lisp (add-menu-comment): Add comments in menu.
1384 * src/clfswm-layout.lisp (main-window-left-layout)
1385 (main-window-bottom-layout, main-window-top-layout): New
1387 Factorize layouts in menu.
1389 2008-08-30 Philippe Brochard <pbrochard@common-lisp.net>
1391 * src/clfswm-layout.lisp (main-window-right-layout): A possible
1392 GIMP layout: one or more main windows on one side of the
1393 frame. Others on the other size.
1395 * src/clfswm-util.lisp
1396 (current-frame-set-click/sloppy-focus-policy): Each frame can have
1397 a different focus policy (one of :click or :sloppy).
1398 The default focus policy is set with *default-focus-policy*.
1400 2008-08-23 Philippe Brochard <pbrochard@common-lisp.net>
1402 * src/clfswm-info.lisp (show-config-variable): New function.
1404 2008-08-19 Philippe Brochard <pbrochard@common-lisp.net>
1406 * src/clfswm-layout.lisp (tile-horizontal-layout): New layout.
1408 * src/clfswm-info.lisp: Colored help for key binding and corners
1411 2008-08-18 Philippe Brochard <pbrochard@common-lisp.net>
1413 * src/clfswm-util.lisp (delete-focus-window)
1414 (destroy-focus-window): Remove chid only in
1415 handle-unmap/destroy-notify. Focus *current-root* only when
1416 closing/killing the current child.
1418 * src/clfswm-autodoc.lisp (produce-corner-*-doc): New autodoc
1419 functions or corners.
1421 2008-08-17 Philippe Brochard <pbrochard@common-lisp.net>
1423 * src/clfswm-corner.lisp (present-clfswm-terminal): New corner
1424 action: Hide/Unhide a terminal on mouse corner action. (By default
1425 right mouse button on the top left corner).
1427 * src/config.lisp (*never-managed-window-list*): New config
1430 * src/clfswm-internal.lisp (never-managed-window-p): New function:
1431 Handle never managed window in a more simple way.
1433 * src/clfswm-corner.lisp: New file and new and more simple method
1434 to define corners actions.
1436 2008-08-15 Philippe Brochard <pbrochard@common-lisp.net>
1438 * src/clfswm-info.lisp (info-mode): Info line can now be colored.
1440 * src/clfswm-layout.lisp (fast-layout-switch)
1441 (define-fast-layout-switch): New functions: Switch between two
1444 * src/clfswm-second-mode.lisp (leave-second-mode): Takes care if
1445 really in the second mode. So leave-second-mode can be used even
1448 * src/clfswm-util.lisp (switch-to-last-child): New function:
1449 Store the current child and switch to the previous one.
1451 2008-07-16 Philippe Brochard <pbrochard@common-lisp.net>
1453 * src/clfswm-util.lisp (display-current-window-info): Display the
1455 (have-to-present-virtual-keyboard): Add a virtual keyboard corner
1456 (top right by default). By default 'xvkbd' is used.
1458 2008-06-28 Philippe Brochard <pbrochard@common-lisp.net>
1460 * src/xlib-util.lisp (move-window, resize-window): Compress motion
1463 * src/clfswm.lisp (handle-motion-notify): Compress motion events.
1465 * src/clfswm-second-mode.lisp (sm-handle-motion-notify): Compress
1468 * src/clfswm-info.lisp (info-mode): Compress motion events.
1470 2008-06-21 Philippe Brochard <pbrochard@common-lisp.net>
1472 * src/clfswm-internal.lisp (show-all-children): Compute geometry
1473 and selection first and then show only necessary children.
1474 (show-child): remove unneeded display-p parameter.
1476 * src/config.lisp (get-fullscreen-size): Place the frame border
1477 outside the screen (this prevent the loose of 2 pixels per
1480 2008-06-12 Philippe Brochard <pbrochard@common-lisp.net>
1482 * src/clfswm-internal.lisp (focus-child): Algorithm change to
1483 raise only the selected child.
1485 2008-06-08 Philippe Brochard <pbrochard@common-lisp.net>
1487 * src/clfswm-internal.lisp (raise-p-list, show-all-children):
1488 Raise only viewable children.
1490 2008-06-06 Philippe Brochard <pbrochard@common-lisp.net>
1492 * src/clfswm-internal.lisp (show-all-children): Always raise all
1493 displayed children. Remove all references to raise-p.
1495 2008-06-04 Philippe Brochard <pbrochard@common-lisp.net>
1497 * src/menu-def.lisp (child-menu): New menu entry on raise/lower
1500 * src/bindings-second-mode.lisp ("Page_Down", "Page_Up"): New
1501 second mode binding on raise/lower child in its frame.
1503 * src/clfswm-nw-hooks.lisp (leave-focus-frame-nw-hook): Adapt
1504 behaviour to the new raise/lower property.
1505 Call clear-nw-hook before the rest of the hook.
1507 * src/bindings.lisp (mouse-click-to-focus-and-move-window)
1508 (mouse-click-to-focus-and-resize-window): Stop button event. This
1509 prevent a keyboard/pointer freeze.
1511 2008-06-03 Philippe Brochard <pbrochard@common-lisp.net>
1513 * src/clfswm-internal.lisp (frame-lower-child)
1514 (frame-raise-child): New functions to raise/lower a child in its
1517 * src/clfswm-util.lisp (have-to-present-windows)
1518 (have-to-present-all-windows): New functions to have an MaxOS
1519 expose like on mouse click in screen corner.
1521 * src/clfswm-info.lisp ("Page_Down", "Page_Up"): Add boundaries.
1523 2008-05-30 Philippe Brochard <pbrochard@common-lisp.net>
1525 * src/clfswm-util.lisp (unhide-a-child-from-all-frames): Unhide a
1526 child from a choice in all frames with hidden children.
1528 * src/clfswm-info.lisp (info-mode-menu): Handle separators.
1530 2008-05-28 Philippe Brochard <pbrochard@common-lisp.net>
1532 * src/clfswm-util.lisp (hide-current-child, unhide-a-child)
1533 (unhide-all-children): New functions.
1535 * src/clfswm-info.lisp (info-mode-menu): Handle symbols and
1538 * src/clfswm-util.lisp (hide/show-frame-window): new function and
1541 2008-05-23 Philippe Brochard <pbrochard@common-lisp.net>
1543 * src/clfswm-util.lisp (rename-current-child): Do not display the
1544 frame info for a window.
1546 2008-05-20 Philippe Brochard <pbrochard@common-lisp.net>
1548 * src/clfswm-internal.lisp (remove-child-in-frame): Destroy the
1549 frame window for the removed child and its children.
1551 2008-05-18 Philippe Brochard <pbrochard@common-lisp.net>
1553 * src/clfswm-autodoc.lisp (produce-*-doc-*): Add a note to use the
1556 2008-05-17 Philippe Brochard <pbrochard@common-lisp.net>
1558 * src/clfswm-nw-hooks.lisp (default-frame-nw-hook): Do not handle
1559 the ROX pinboard (ie: leave it lowered in the root window as
1562 * src/clfswm-layout.lisp (tile-left-space-layout): New layout.
1563 (tile-left-layout, tile-right-layout, tile-top-layout)
1564 (tile-bottom-layout): Use all the frame space when there is only
1567 * src/clfswm-internal.lisp (place-window-from-hints): Center
1568 unmanaged windows in the root screen.
1570 * src/clfswm-nw-hooks.lisp (clear-nw-hook, clear-all-nw-hooks):
1573 2008-05-15 Philippe Brochard <pbrochard@common-lisp.net>
1575 * src/clfswm-util.lisp (current-frame-manage-window-type): Fix a
1576 typo in managed types.
1578 * src/clfswm-internal.lisp (show-child): Always display frame info
1579 even if the frame is hidden.
1581 * src/xlib-util.lisp (resize-window): Use a better algorithme to
1584 2008-05-13 Philippe Brochard <pbrochard@common-lisp.net>
1586 * src/clfswm-util.lisp (with-movement): Display frame info for all
1587 frames in current root.
1589 2008-05-12 Philippe Brochard <pbrochard@common-lisp.net>
1591 * src/*.lisp: Rename 'brother' frames to 'sister' frames.
1593 * src/bindings-second-mode.lisp (define-second-key #\a): New
1594 binding on 'add-default-frame'.
1596 * src/clfswm-autodoc.lisp (produce-*-doc-*-in-file): Show a
1597 message to follow the autodocumentation process.
1599 2008-05-10 Philippe Brochard <pbrochard@common-lisp.net>
1601 * src/clfswm-util.lisp (bind-or-jump): Bind "Tab", "Return" and
1602 "Space" to jump to a child. "B" to bind a slot on the current
1605 * src/bindings-second-mode.lisp: Use "Tab" instead of
1608 2008-05-07 Philippe Brochard <pbrochard@common-lisp.net>
1610 * src/clfswm-util.lisp (find-child-under-mouse): Take care of
1611 unmanaged (hidden) windows.
1613 * src/clfswm-internal.lisp (place-window-from-hints): Give a
1614 minimal size for windows.
1615 (with-all-windows-frames-and-parent): New function.
1617 * src/config.lisp (*default-window-width/height*): New parameters.
1619 * src/clfswm-internal.lisp (place-window-from-hints): Center
1620 windows in the screen instead of in their frame.
1622 * src/bindings-second-mode.lisp (tile-space-current-frame): New
1625 * src/clfswm-layout.lisp (register-layout): Intern the once name
1626 in the right package.
1628 2008-05-05 Philippe Brochard <pbrochard@common-lisp.net>
1630 * doc/dot-clfswmrc: Update to follow the new clfswm way.
1632 2008-05-03 Philippe Brochard <pbrochard@common-lisp.net>
1634 * src/clfswm-internal.lisp (set-current-child)
1635 (adapt-child-to-parent, show-child, hide-child): Handle the case
1636 where child is not a frame or a window.
1638 * src/clfswm-util.lisp
1639 (mouse-click-to-focus-generic,mouse-focus-move/resize-generic):
1640 Check if child is a frame.
1642 * src/clfswm-internal.lisp (managed-window-p): Handle the case
1643 where frame is null.
1644 (place-frame): Check if frame and parent are frames.
1646 * src/clfswm-info.lisp (info-mode): display all frame info before
1649 * src/clfswm-second-mode.lisp (second-key-mode): display all frame
1650 info before leaving.
1652 * src/clfswm-internal.lisp (display-all-frame-info): New function.
1654 2008-05-02 Philippe Brochard <pbrochard@common-lisp.net>
1656 * src/tools.lisp (getenv): Implemented for ECL.
1657 (urun-prog): Implemented for ECL.
1659 * src/clfswm-util.lisp (identify-key): Use a double buffer to
1662 * src/clfswm-query.lisp (query-string): Use a double buffer to
1665 * src/clfswm-info.lisp (draw-info-window): Use a double buffer to
1668 * src/xlib-util.lisp (clear-pixmap-buffer, copy-pixmap-buffer):
1671 2008-05-01 Philippe Brochard <pbrochard@common-lisp.net>
1673 * src/clfswm-info.lisp (info-mode): Add boundaries in the info mode window.
1675 * src/menu-def.lisp: New file: move all menu definition in
1678 * src/clfswm-layout.lisp (register-layout): Use a function instead
1681 2008-04-30 Philippe Brochard <pbrochard@common-lisp.net>
1683 * src/clfswm-autodoc.lisp (produce-menu-doc,
1684 (produce-menu-doc-html): New functions.
1685 (produce-doc-*): Moved to clfswm-autodoc.lisp.
1687 * src/clfswm-util.lisp (paste-selection-no-clear): Prevent to
1688 paste a child on one of its own children. (this prevent a
1690 (move-child-to): Rename move/copy-current-child-by to
1692 (mouse-move-window-over-frame): New function to move the window
1693 under the mouse cursor to another frame.
1695 * src/clfswm-internal.lisp (find-child-in-parent): New function.
1697 2008-04-29 Philippe Brochard <pbrochard@common-lisp.net>
1699 * src/clfswm-internal.lisp (show-all-children): Display unmanaged
1700 windows only when its window parent is the current child.
1702 2008-04-28 Philippe Brochard <pbrochard@common-lisp.net>
1704 * src/clfswm-util.lisp (manage-current-window)
1705 (unmanage-current-window): New functions: Allow to force to manage
1706 or unmanage a window by its parent frame.
1708 * src/bindings-second-mode.lisp (#\o): binded to
1709 set-open-in-new-frame-in-parent-frame-nw-hook and
1710 (#\o :control) to set-open-in-new-frame-in-root-frame-nw-hook
1712 * src/clfswm-util.lisp (with-current-window): New macro.
1714 * src/xlib-util.lisp (move-window, resize-window): Remove uneeded
1715 exposure and enter-window handle event.
1717 * src/clfswm-util.lisp (move-frame, resize-frame): Show all
1718 children for the current child after the move/resize.
1720 2008-04-27 Philippe Brochard <pbrochard@common-lisp.net>
1722 * src/xlib-util.lisp (resize-window): Take care of window size
1725 * src/clfswm-util.lisp (mouse-focus-move/resize-generic): Allow to
1726 move/resize unmanaged windows.
1728 * src/xlib-util.lisp (move-window, resize-window): New functions.
1730 2008-04-25 Philippe Brochard <pbrochard@common-lisp.net>
1732 * src/clfswm-util.lisp (current-frame-manage-window-type): Let the
1733 user choose what window type the current frame must handle.
1734 (display-current-window-info): New function.
1735 (current-frame-manage-all-window-type)
1736 (current-frame-manage-only-normal-window-type)
1737 (current-frame-manage-no-window-type): New functions.
1739 * src/clfswm-internal.lisp (managed-window-p): New function.
1741 * src/package.lisp (frame): Managed type: new frame
1742 parameter. This allow to choose what window type a frame must
1745 * src/*.lisp: Rename all 'father' occurrences to 'parent'.
1747 * src/clfswm-nw-hooks.lisp
1748 (open-in-new-frame-in-parent-frame-nw-hook): New new window hook.
1750 * src/clfswm-util.lisp (adapt-current-frame-to-window-hints): New
1753 * src/tools.lisp (ensure-printable): Return always a string even
1756 2008-04-24 Philippe Brochard <pbrochard@common-lisp.net>
1758 * src/config.lisp (*default-nw-hook*): New variable to change the
1759 default new window hook.
1761 2008-04-22 Philippe Brochard <pbrochard@common-lisp.net>
1763 * clfswm.asd (clfswm): Add a dependency from
1764 clfswm-second-mode.lisp to clfswm.lisp.
1766 * src/clfswm-util.lisp (identify-key): Show the documentation for
1767 the function bound on a key.
1768 (with-movement): Move with-movement,
1769 current-frame-fill/pack/resize-* from bindings-second-mode.lisp
1770 to clfswm-util.lisp.
1772 * src/clfswm-menu.lisp: New menu system that let user change keys
1773 or functions associated to keys.
1775 2008-04-18 Philippe Brochard <pbrochard@common-lisp.net>
1777 * src/clfswm-internal.lisp (show-all-children): Display-child is
1778 the first child by default. Solve a bug with father-p.
1780 2008-04-17 Philippe Brochard <pbrochard@common-lisp.net>
1782 * src/clfswm-internal.lisp (add-frame): Add frame return the
1784 (show-all-children): Move the size computation outside the
1787 * src/bindings-second-mode.lisp (with-movement): Redisplay only
1790 * src/clfswm-util.lisp (mouse-click-to-focus-generic): Redisplay
1791 only the current child.
1793 * src/clfswm-internal.lisp (show-all-children): New display-child
1794 parameter to display only the desired child and its children.
1795 (select-next/previous-child): Only display the current child.
1797 2008-04-14 Philippe Brochard <pbrochard@common-lisp.net>
1799 * src/clfswm.lisp (init-display): Move the default frame creation
1800 on the default init hook.
1802 * src/clfswm-keys.lisp (define-ungrab/grab): Handle all keysyms in
1803 the main mode (for example: "1" on an azerty keyboard).
1805 2008-04-13 Philippe Brochard <pbrochard@common-lisp.net>
1807 * src/clfswm-keys.lisp (find-key-from-code): Better handle of
1808 keysyms. Revert to old grabbing method for the main mode.
1810 2008-04-12 Philippe Brochard <pbrochard@common-lisp.net>
1812 * src/clfswm.lisp (init-display): Add key handling on no focus
1813 window and on frame windows.
1815 2008-04-11 Philippe Brochard <pbrochard@common-lisp.net>
1817 * src/clfswm.lisp (main): Keyboard handle strategie change: Grab
1818 all keys by default and replay just what is needed. No change for
1821 * src/clfswm-keys.lisp: remove grab/ungrab main keys.
1822 (find-key-from-code): Test for shift and not shift presence.
1824 2008-04-09 Philippe Brochard <pbrochard@common-lisp.net>
1826 * src/clfswm-internal.lisp (switch-to-root-frame): show later -
1827 new key parameter to have less flickering.
1829 2008-04-07 Philippe Brochard <pbrochard@common-lisp.net>
1831 * src/bindings-second-mode.lisp (frame-layout-once-menu): Set the
1832 layout only one time and revert to no-layout to freely handle
1835 * src/clfswm-nw-hooks.lisp
1836 (open-in-new-frame-in-root-frame-nw-hook): Tile layout with spaces
1837 with new created window.
1839 * src/clfswm-layout.lisp (register-layout): Now register
1840 automatically a once layout to set the layout only one time and
1841 revert to no-layout to freely handle frames.
1843 2008-04-05 Philippe Brochard <pbrochard@common-lisp.net>
1845 * src/clfswm-nw-hooks.lisp (leave-focus-frame-nw-hook): New
1846 nw-hook: Open the next window in the current frame and leave the
1847 focus to the current child.
1849 2008-04-04 Philippe Brochard <pbrochard@common-lisp.net>
1851 * src/bindings-second-mode.lisp: Add keys definitions to
1852 bind-or-jump in the second mode.
1854 * src/clfswm-util.lisp (bind-or-jump): remove the auto-defining
1855 macro for bind-or-jump-(1|2|3...).
1857 * src/clfswm-keys.lisp (define-define-key/mouse): Allow additional
1858 arguments to function. This allow to do things like:
1859 (define-main-key (key) 'my-function 10 20 'foo) -> 10 20 and 'foo
1860 are passed to my-function on key press.
1862 2008-04-03 Philippe Brochard <pbrochard@common-lisp.net>
1864 * src/clfswm-util.lisp (bind-or-jump): New (great) function.
1866 2008-04-02 Philippe Brochard <pbrochard@common-lisp.net>
1868 * src/clfswm-internal.lisp (child-fullname): New function
1870 * src/clfswm-info.lisp (info-mode-menu): Add an explicit optional
1871 docstring in info-mode-menu. An item can be
1872 '((key function) (key function)) or with docstring
1873 '((key function "documentation 1") (key function "bla bla") (key function))
1875 * src/tools.lisp (ensure-n-elems): New function.
1877 * src/bindings-second-mode.lisp: Bind Alt+mouse-1/3 to move or
1878 resize a frame or the window's father.
1880 * src/clfswm.lisp (init-display): Remove tile-space-layout by
1881 default on the root frame.
1883 * src/clfswm-util.lisp (move/resize-frame): Add standard event
1884 hooks handlers (map-request, configure-notify...)
1886 * src/clfswm-internal.lisp (adapt-child-to-father): Limit minimal
1889 2008-04-01 Philippe Brochard <pbrochard@common-lisp.net>
1891 * src/bindings.lisp: Bind Alt+mouse-1/3 to move or resize a frame
1892 or the window's father.
1894 * src/clfswm-util.lisp (mouse-click-to-focus-generic): Stop button
1895 event only if there is a geometry change.
1896 (mouse-focus-move/resize-generic): Generic function to move or
1897 resize a frame or a window father frame.
1899 2008-04-01 Philippe Brochard <pbrochard@common-lisp.net>
1901 * src/clfswm-internal.lisp (show-all-children): Return t if there
1902 is a geometry change.
1904 2008-03-30 Philippe Brochard <pbrochard@common-lisp.net>
1906 * src/bindings.lisp (Up/Down): Swap select previous/next level.
1908 * src/bindings-second-mode.lisp (Up/Down): Swap select previous/next level.
1910 * src/clfswm.lisp (init-display): Create a default frame in the root frame.
1912 * src/clfswm-internal.lisp (place-frame): Place frame from real (pixel) coordinates.
1913 (with-all-*): Reverse the child list to manage the first child last (like in
1916 * src/config.lisp (*create-frame-on-root*): New variable: Create a new frame on the
1917 root window only if true.
1919 * src/clfswm-util.lisp (mouse-click-to-focus-generic): Create a new frame on the
1920 root window only if *create-frame-on-root* is true.
1922 * src/bindings-second-mode.lisp (sm-mouse-click-to-focus-generic): Create a new frame
1925 2008-03-29 Philippe Brochard <pbrochard@common-lisp.net>
1927 * src/bindings-second-mode.lisp (sm-mouse-click-to-focus-generic): Focus, move and resize
1928 the current child (even if it's a window).
1930 2008-03-28 Philippe Brochard <pbrochard@common-lisp.net>
1932 * src/clfswm-util.lisp (mouse-click-to-focus-and-move)
1933 (mouse-click-to-focus-and-resize): New functions.
1935 * src/clfswm-internal.lisp (*-fl->px): Convert float coordinates to pixel.
1936 (*-px->fl): Convert pixel coordinates to float.
1938 * src/tools.lisp (call-hook): Move call-hook to tools.lisp.
1940 2008-03-27 Philippe Brochard <pbrochard@common-lisp.net>
1942 * src/clfswm-layout.lisp (no-layout): Use :first-only to raise only the
1945 * src/clfswm-internal.lisp (hide-all): Split hide-all-children in hide-all
1946 and hide-all-children.
1947 (raise-if-needed): New function.
1948 (show-child): Use a first-p parameter to raise windows only when they are
1951 2008-03-26 Philippe Brochard <pbrochard@common-lisp.net>
1953 * src/clfswm-internal.lisp (select-next/previous-level): Don't use show-all-children
1956 2008-03-25 Philippe Brochard <pbrochard@common-lisp.net>
1958 * src/clfswm-info.lisp (keys-from-list): new function.
1960 * src/*: rename 'childs' in 'children'.
1962 * src/*: rename 'group' in 'frame'.
1964 2008-03-22 Philippe Brochard <pbrochard@common-lisp.net>
1966 * src/clfswm-pack.lisp (explode-group/explode-current-group): new functions.
1968 2008-03-21 Philippe Brochard <pbrochard@common-lisp.net>
1970 * src/clfswm-pack.lisp: Pack, Fill, Resize functions.
1972 2008-03-16 Philippe Brochard <pbrochard@common-lisp.net>
1974 * src/clfswm-nw-hooks.lisp: Register system for new window hooks.
1975 Bind control+o to open the next window in a new group in the root group
1976 (as open in next window in a new workspace in 0801 version).
1978 2008-03-15 Philippe Brochard <pbrochard@common-lisp.net>
1980 * src/clfswm-util.lisp (show/hide-all-groups-info/key): Show/hide all groups info
1983 2008-03-14 Philippe Brochard <pbrochard@common-lisp.net>
1985 * bindings-second-mode.lisp ("ISO_Left_Tab"): Use ISO_Left_Tab
1986 instead of Tab for select-previous-child.
1988 2008-03-13 Philippe Brochard <pbrochard@common-lisp.net>
1990 * clfswm-util.lisp (force-window-in-group/force-window-center-in-group):
1993 2008-03-11 Philippe Brochard <pbrochard@common-lisp.net>
1995 * clfswm-util.lisp (identify-key): Display the documentation
1996 associated to keys when identifying a key.
1998 2008-03-10 Xavier Maillard <xma@gnu.org>
2000 * contrib/clfswm: Complete rewrite of the script. Detect error and
2001 act accordingly. Add command line arguments to configure the
2002 script execution. User can now choose different common lisp
2003 implementation (clisp and sbcl only), choose where to store the
2004 dumped image, where to find clfswm source.
2006 2008-03-09 Philippe Brochard <pbrochard@common-lisp.net>
2008 * clfswm-internal.lisp (process-new-window): Beginning of new
2009 window hook: each group have a hook to tell what he wants to do
2010 with the new created window.
2012 2008-03-08 Xavier Maillard <xma@gnu.org>
2014 * contrib/clfswm: New script. Dump a CLISP image of CLFSWM then
2015 call the resulting executable.
2017 * clfswm.lisp (read-conf-file): Check for the user config file in
2018 XDG_CONFIG_HOME *first*. Freedesktop.org standards should be
2019 prefered whenever possible.
2021 2008-02-27 Philippe Brochard <pbrochard@common-lisp.net>
2023 * clfswm-layout.lisp (*-layout): Add an optional raise-p
2024 parameter in each layout.
2026 2008-02-26 Philippe Brochard <pbrochard@common-lisp.net>
2028 * clfswm-util.lisp (copy/cut-current-child): Does not affect the
2030 (copy/move-current-child-by-name/number): new functions
2031 (focus-group-by-name/number): new functions
2032 (delete-group-by-name/number): new functions
2034 2008-02-24 Philippe Brochard <pbrochard@common-lisp.net>
2036 * ************************************************************ *
2037 *: Major update - No more reference to workspaces. The main *
2038 structure is a tree of groups or application windows. *
2039 * ************************************************************ *
2041 2008-02-07 Philippe Brochard <pbrochard@common-lisp.net>
2043 * clfswm.lisp (read-conf-file): Read configuration in
2044 $HOME/.clfswmrc or in /etc/clfswmrc or in
2045 $XDG_CONFIG_HOME/clfswm/clfswmrc.
2046 (xdg-config-home): Return the content of $XDG-CONFIG-HOME (default
2049 2008-01-18 Philippe Brochard <pbrochard@common-lisp.net>
2051 * clfswm-internal.lisp (show-all-group): Use *root* and *root-gc*
2054 2008-01-03 Philippe Brochard <pbrochard@common-lisp.net>
2056 * clfswm-internal.lisp (find-window-group): New function.
2058 * clfswm*: Change to make clfswm run with clisp/new-clx.
2060 2008-01-01 Philippe Brochard <pbrochard@common-lisp.net>
2062 * clfswm-util.lisp (query-show-paren): Add show parent matching in
2064 (query-string): Bind control+k to delete end of line.
2066 * clfswm-second-mode.lisp (draw-second-mode-window): Display
2067 the action on mouse motion in second mode.
2069 * clfswm.lisp (handle-exposure): Redisplay groups on exposure
2070 event but do not clear the root window.
2071 (handle-configure-request): Adjust unmanaged window from their
2074 * clfswm-internal.lisp (process-new-window): Adjust new window
2075 with the specified hints (max/min/base width/height).
2077 2007-12-31 Philippe Brochard <pbrochard@common-lisp.net>
2079 * clfswm.lisp (handle-configure-request): Send an Configuration
2080 Notify event. This solve a bug with xterm and rxvt who takes some
2081 times to be mapped. Now there is no delay.
2083 * bindings-second-mode.lisp (define-shell): Run programs after
2084 living the second mode.
2086 2007-12-30 Philippe Brochard <pbrochard@common-lisp.net>
2088 * clfswm-internal.lisp (process-new-window): Do not crop transient
2089 window to group size.
2090 (adapt-window-to-group): Do not crop transient window to group
2093 * clfswm.lisp (handle-configure-request): Adapt just the window to
2094 its group and don't take care of the configure request. Remove the
2095 bug with the Gimp outside the group and speed up the window
2097 (handle-exposure): Remove show-all-group on exposure event
2100 2007-12-29 Philippe Brochard <pbrochard@common-lisp.net>
2102 * clfswm-util.lisp (circulate-group-up-copy-window)
2103 (circulate-group-down-copy-window)
2104 (circulate-workspace-up-copy-group)
2105 (circulate-workspace-down-copy-group): Prevent the copy of the
2106 same window in the same workspace.
2108 * bindings-second-mode.lisp (release-copy-selected-window)
2109 (release-copy-selected-group): Prevent the copy of the same window
2110 in the same workspace.
2112 * clfswm-pager.lisp (generic-pager-move-window-on-previous-line)
2113 (generic-pager-move-window-on-next-line): Remove the copy
2115 (generic-pager-move-group-on-next-workspace)
2116 (generic-pager-move-group-on-previous-workspace): Prevent the copy
2117 of the same window in the same workspace.
2119 * bindings-pager.lisp (mouse-pager-copy-selected-window-release)
2120 (mouse-pager-copy-selected-group-release): Prevent the copy of the
2121 same window in the same workspace.
2123 * tools.lisp (setf/=): new macro to set a variable only when
2126 * clfswm-internal.lisp (adapt-window-to-group): use set/= to set
2127 x, y... only when necessary.
2129 2007-12-28 Philippe Brochard <pbrochard@common-lisp.net>
2131 * clfswm.lisp (handle-configure-notify, *configure-notify-hook*):
2132 new function and hook: force windows to stay in its group (solve a
2135 2007-12-25 Philippe Brochard <pbrochard@common-lisp.net>
2137 * bindings-second-mode.lisp (mouse-motion): use hide-group to have
2138 less flickering when moving/resizing groups.
2140 * clfswm-internal.lisp (hide-group): new function.
2141 (show-all-group): clear-all: new parameter.
2143 2007-12-22 Philippe Brochard <pbrochard@common-lisp.net>
2145 * clfswm-keys.lisp (define-define-key): undefine-*-multi-name: new
2147 * clfswm*: Color change for the pager. Typo or better description
2148 in bindings definitions. Define bindings for a qwerty keyboard by
2149 default. dot-clfswmrc show examples to switch to an azerty
2151 License change to GPL v3.
2152 * config.lisp: new file - group all globals variables in this
2155 2007-08-26 Philippe Brochard <pbrochard@common-lisp.net>
2157 * xlib-util.lisp (hide-window): Remove structure-notivy events
2158 when hidding a window.
2160 2007-05-16 Philippe Brochard <pbrochard@common-lisp.net>
2162 * package.lisp (*sm-property-notify-hook*): Readded
2163 property-notify-hook in second mode.
2165 2007-05-15 Philippe Brochard <pbrochard@common-lisp.net>
2167 * clfswm-keys.lisp (produce-doc-html): Better clean up for strings.
2169 2007-05-13 Philippe Brochard <pbrochard@common-lisp.net>
2171 * clfswm-pack.lisp (tile-current-workspace-to/right/left/top/bottom):
2172 Tile the current workspace with the current window on one side and
2173 others on the other (this emulate the larswm, dwm, wmii way). See
2174 the default configuration file to enable this mode by default.
2176 * clfswm-pager.lisp (pager-tile-current-workspace-to): idem for
2179 2007-05-12 Philippe Brochard <pbrochard@common-lisp.net>
2181 * clfswm-pager.lisp (pager-draw-window-in-group): Add
2182 ensure-printable to print windows name even with non-ascii
2185 2007-05-11 Philippe Brochard <pbrochard@common-lisp.net>
2187 * clfswm-pager.lisp (pager-explode-current-group): Create a new
2188 group for each window in group.
2189 (pager-implode-current-group): Move all windows in workspace to
2190 one group and remove other groups.
2192 * clfswm-pack.lisp (explode-group): Create a new group for each
2194 (implode-group): Move all windows in workspace to one group and
2195 remove other groups.
2197 * clfswm-util.lisp (identify-key): Remove local configuration
2198 variables and made them available for configuration from
2200 (query-string): idem.
2202 2007-04-29 Philippe Brochard <pbrochard@common-lisp.net>
2204 * netwm-util.lisp: Start of NetWM compliance.
2205 Add a Netwm client list gestion.
2207 2007-04-28 Philippe Brochard <pbrochard@common-lisp.net>
2209 * clfswm-internal.lisp (create-group-on-request): open a new group
2210 only when the current group is not empty.
2212 * bindings-second-mode.lisp (define-second-key-#\o-control): Fix a
2213 bug with null workspace.
2215 * clfswm-pager.lisp (pager-handle-event): Add a hook
2216 system. This hooks can be changed in the user configuration file.
2218 * package.lisp: All colors and font variables are set in
2219 package.lisp and can be configured in the user configuration
2221 Note: If you have configured some less ugly colors (esp. for the
2222 pager) don't hesitate to let me know :)
2224 * clfswm-second-mode.lisp (sm-handle-event): Add a hook
2225 system. This hooks can be changed in the user configuration file.
2227 * clfswm.lisp (handle-event): Add a hook system. This hooks can be
2228 changed in the user configuration file (~/.clfswmrc)
2230 2007-04-25 Philippe Brochard <pbrochard@common-lisp.net>
2232 * clfswm-util.lisp (stop-all-pending-actions): new function: reset
2233 arrow action, open next window in new workspace/group.
2235 * bindings.lisp (stop-all-pending-actions): new binding.
2236 (open-next-window-in-new-group-once): Open the next windows in a
2237 new group (only once) or open all new windows in a new group (like
2238 others windows managers).
2240 2007-04-22 Philippe Brochard <pbrochard@common-lisp.net>
2242 * clfswm.lisp (read-conf-file): New function to read a lisp
2243 configuration file at startup.
2244 (focus-group-under-mouse): Check if group isn't the current group
2245 ( prevent a bug with unclutter ).
2247 2007-03-02 Philippe Brochard <pbrochard@common-lisp.net>
2249 * bindings.lisp (run-program-from-query-string): A program can be
2250 launch from a input query window.
2252 2007-03-01 Philippe Brochard <pbrochard@common-lisp.net>
2254 * clfswm-info.lisp: Fix a bug with banish pointer in info mode.
2256 2007-02-28 Philippe Brochard <pbrochard@common-lisp.net>
2258 * clfswm.lisp (process-new-window): One can now open the next
2259 window in a workspace called by its number.
2261 * clfswm-util.lisp (query-font-string): Minimal editing
2263 (eval-from-string): And an REPL in the window manager... :)
2265 2007-02-26 Philippe Brochard <pbrochard@common-lisp.net>
2267 * clfswm.lisp (process-new-window): One can now open the next
2268 window in a new workspace or a new group.
2270 * clfswm-pager.lisp (pager-mode): Display the next arrow action
2271 with the hidden windows.
2273 * clfswm.lisp (second-key-mode): Display the current workspace
2274 number and the next arrow action in the state window.
2276 * clfswm-pager.lisp (pager-mode): Hide all windows before leaving
2277 the pager mode and then redisplay only the current workspace.
2279 2007-02-25 Philippe Brochard <pbrochard@common-lisp.net>
2281 * clfswm.lisp (add-workspace): Workspaces are now numbered. So
2282 they can be focused with a keypress, sorted or renumbered.
2284 2007-02-24 Philippe Brochard <pbrochard@common-lisp.net>
2286 * clfswm-pager.lisp (pager-mode): Remove multiple silly
2287 pager-draw-display. This prevent a lot of flickering in the
2290 * clfswm.lisp: Remove all display-force-output and replace them
2291 with only one display-finish-output in the event loop.
2293 2006-11-06 Philippe Brochard <pbrochard@common-lisp.net>
2295 * clfswm-pager.lisp (pager-center-group): New function - center a
2296 group at the middle of the screen.
2298 * clfswm-pack.lisp (center-group): New function - center a group
2299 at the middle of the screen.
2301 * clfswm.lisp (show-group): Add a cross line under the group.
2302 (show-group): Group are showned even if fullscreened.
2303 (init-display): Add an exposure event on the root window.
2305 2006-11-05 Philippe Brochard <pbrochard@common-lisp.net>
2307 * package.lisp (*default-group*): Default group is the same size
2308 of a fullscreened group.
2310 * bindings*: Use shift to move, control+shift to copy.
2312 * *.lisp: Add comments for configuration or alternatives. So grep
2313 for CONFIG to see where you can configure clfswm. And grep for
2314 Alternative to use some commented code.
2316 * clfswm.lisp (second-key-mode): Use a single window to show the
2317 second mode. See for alternatives at the end of this file.
2319 2006-11-03 Philippe Brochard <pbrochard@common-lisp.net>
2321 * clfswm-keys.lisp (define-define-key/mouse): Factorisation in a
2322 macro of key and mouse definitions.
2323 (define-define-key/mouse): Use state instead of modifiers list
2324 this fix a bug when the modifiers list is not in the rigth order.
2326 * clfswm.lisp (second-key-mode): Add a colored border in second mode.
2328 2006-11-02 Philippe Brochard <pbrochard@common-lisp.net>
2330 * clfswm-info.lisp (info-mode): Add an info mode.
2332 2006-11-01 Philippe Brochard <pbrochard@common-lisp.net>
2334 * clfswm.lisp (process-new-window): Change border size for
2336 (show-all-windows-in-workspace): Unhide all windows even when the
2337 current group is in fullscreen mode.
2339 2006-10-26 Philippe Brochard <pbrochard@common-lisp.net>
2341 * clfswm-util.lisp (identify-key): Add an exposure handle-event to
2342 redisplay the identify window after a terminal switch.
2344 * clfswm-pager.lisp (pager-mode): Add an exposure handle-event to
2345 redisplay the pager after a terminal switch.
2347 2006-10-24 Philippe Brochard <pbrochard@common-lisp.net>
2349 * clfswm-util.lisp (identify-key): Add a window to display
2350 the keys to identify on screen.
2352 * bindings.lisp, bindings-pager.lisp: Define same keys to
2353 move/copy groups/windows in second mode and in pager.
2355 * clfswm.lisp (handle-event*): Same version in all clfswm (fix some
2357 (show-all-windows-in-workspace): unhide window before adapting it
2360 2006-10-23 Philippe Brochard <pbrochard@common-lisp.net>
2362 * clfswm.lisp (handle-event): Revert to an older version.
2364 2006-10-18 Philippe Brochard <pbrochard@common-lisp.net>
2366 * clfswm-util.lisp (force-window-in-group)
2367 (force-window-center-in-group): New functions for transient windows.
2369 * clfswm-pager.lisp (pager-remove-current-workspace/group):
2370 bugfix: hide all windows before removing group or workspace.
2372 2006-10-17 Philippe Brochard <pbrochard@common-lisp.net>
2374 * bindings-pager.lisp (mouse-pager-move-selected-group)
2375 (mouse-pager-copy-selected-group)
2376 (mouse-pager-move-selected-window)
2377 (mouse-pager-copy-selected-window, mouse-pager-rotate-window-up)
2378 (mouse-pager-rotate-window-down): New functions to have mouse in
2381 * clfswm-pager.lisp (pager-swap-window)
2382 (pager-copy-group-on-next/previous-workspace)
2383 (pager-copy-window-on-next/previous-line): New functions
2385 2006-10-15 Philippe Brochard <pbrochard@common-lisp.net>
2387 * clfswm-pager.lisp (pager-move-window-on-next/previous-line,
2388 (pager-move-group-on-next/previous-workspace): new functions.
2390 * clfswm-pack.lisp (resize-half-x-x-current-group): resize group
2391 to its half size (new functions).
2393 2006-10-11 Philippe Brochard <pbrochard@common-lisp.net>
2395 * clfswm-pager.lisp: workspaces, groups and windows can now be
2396 selectionned with the keyboard or the mouse.
2398 2006-10-09 Philippe Brochard <pbrochard@common-lisp.net>
2400 * clfswm-pager.lisp (pager-select-workspace-right/left):
2401 workspaces can now be selectionned with the keyboard.
2403 2006-10-08 Philippe Brochard <pbrochard@common-lisp.net>
2405 * clfswm-keys.lisp (undefine-main-key, undefine-second-key, undefine-mouse-action):
2406 new function to remove a previous defined key or mouse combination.
2408 2006-10-07 Philippe Brochard <pbrochard@common-lisp.net>
2410 * clfswm.lisp (main): Check for access error in init-display.
2412 * clfswm-keys.lisp (define-ungrab/grab): check for keysym and
2413 keycode before grabbing.
2415 * bindings.lisp: Remove nlambda and use defun to keep the function
2416 documentation with clisp.
2417 (define-shell): new macro to define shell command for the second
2420 2006-10-06 Philippe Brochard <pbrochard@common-lisp.net>
2422 * clfswm-keys.lisp (define-ungrab/grab): use a cond instead of a
2425 2006-10-05 Philippe Brochard <pbrochard@common-lisp.net>
2427 * bindings.lisp (accept-motion): Move group bugfix in upper mouse
2428 workspace circulation.
2430 * clfswm-util.lisp (absorb-orphan-window): new function.
2432 * clfswm-keys.lisp: Keysyms support.
2434 2006-10-02 Philippe Brochard <pbrochard@common-lisp.net>
2436 * clfswm.lisp (show-group): Use one gc for all groups and not one
2439 2006-10-01 Philippe Brochard <pbrochard@common-lisp.net>
2441 * bindings.lisp (define-second-key (#\l :mod-1)): fix a typo.
2443 * clfswm.lisp (adapt-window-to-group): Adapt only windows with
2444 width and height outside group.
2446 2006-09-28 Philippe Brochard <pbrochard@common-lisp.net>
2448 * clfswm.lisp: First public release.