1 2012-08-25 Philippe Brochard <pbrochard@common-lisp.net>
3 * contrib/volume-mode.lisp: Add mouse buttons actions in volume
4 mode. Add a volume button toolbar module.
6 2012-08-24 Philippe Brochard <pbrochard@common-lisp.net>
8 * contrib/mpd.lisp: New toolbar modules (available only if
9 toolbar.lisp is loaded).
10 Add a small parameter for toolbar modules useful with vertical
13 2012-08-21 Philippe Brochard <pbrochard@common-lisp.net>
15 * contrib/reboot-halt.lisp: Add configuration command for system
18 * contrib/toolbar.lisp (toggle-toolbar-hide-state): New function.
20 2012-08-20 Philippe Brochard <pbrochard@common-lisp.net>
22 * src/clfswm-internal.lisp (add-in-never-managed-window-list): New
25 2012-08-20 Philipp Kroos <philipp.kroos@t-online.de>
27 * src/clfswm-placement.lisp (here-placement): Evaluates to current
30 2012-08-20 Philipp Kroos <philipp.kroos@t-online.de>
32 * contrib/toolbar.lisp: Add an expose-mode-button-module.
34 2012-08-19 Philippe Brochard <pbrochard@common-lisp.net>
36 * contrib/toolbar.lisp (remove-toolbar): New function.
38 2012-08-18 Philippe Brochard <pbrochard@common-lisp.net>
40 * contrib/toolbar.lisp: Add configurable colors in toolbar
43 2012-08-16 Philippe Brochard <pbrochard@common-lisp.net>
45 * src/tools.lisp: Factorize system usage information collection.
46 (start-system-poll): Use a lock file instead of a local variable.
48 * contrib/toolbar.lisp: Add memory, cpu and battery usage module
49 with a poll methode. More responsive but up to date every 10s by
52 2012-08-15 Philippe Brochard <pbrochard@common-lisp.net>
54 * contrib/toolbar.lisp: Add a clickable label module for toolbar.
55 Add a clickable entry to open the CLFSWM main menu.
56 Add memory, cpu and battery usage module.
58 * src/clfswm-menu.lisp (open-menu): Prevent to reopen an opened
59 menu. Fixe a but with negative selected-item.
61 2012-08-14 Philippe Brochard <pbrochard@common-lisp.net>
63 * src/clfswm-util.lisp (eval-from-query-string): Show a notify
64 window when updating symobls list for REPL completion.
65 (show-current-root): New function and configuration menu to
66 display a message on the current root.
68 * contrib/toolbar.lisp: Add arguments in toolbar modules.
70 * src/xlib-util.lisp (event-hook-name): Intern hook name symbol
73 2012-08-13 Philippe Brochard <pbrochard@common-lisp.net>
75 * contrib/toolbar.lisp (toolbar-module-text): Print a formatted
76 text at module position centered in toolbar.
78 * src/xlib-util.lisp (optimize-event-hook): Remove unused event
81 2012-08-12 Philippe Brochard <pbrochard@common-lisp.net>
83 * contrib/toolbar.lisp: End of toolbar framework.
84 (list-toolbar-modules): Add a list toolbar modules function.
86 2012-08-03 Philippe Brochard <pbrochard@common-lisp.net>
88 * src/clfswm-internal.lisp (show-child): Show unmanaged windows
89 on (maybe) current child in all roots.
91 * src/clfswm-util.lisp (find-child-under-mouse-in-child-tree):
92 Handle children from all roots instead of from *root-frame*.
94 2012-07-23 Philippe Brochard <pbrochard@common-lisp.net>
96 * src/clfswm-expose-mode.lisp: New expose mode based on standard
99 2012-06-27 Philippe Brochard <pbrochard@common-lisp.net>
101 * src/clfswm-util.lisp (eval-from-query-string): Add completion
102 for eval for query string.
104 2012-06-26 Philippe Brochard <pbrochard@common-lisp.net>
106 * src/clfswm-query.lisp: Add completion for shell commands.
108 2012-06-18 Philippe Brochard <pbrochard@common-lisp.net>
110 * src/clfswm-placement.lisp: Each child can have its own border
111 size. New binding to change the child border size on the fly.
113 2012-06-08 Philippe Brochard <pbrochard@common-lisp.net>
115 * src/tools.lisp (process-timers): Call get-internal-real-time
116 only once for all times.
118 2012-06-07 Philippe Brochard <pbrochard@common-lisp.net>
120 * contrib/toolbar.lisp (define-toolbar-hooks): Add auto-hide
122 (define-toolbar-hooks): Add auto-hide toolbar (show/hide on mouse
125 2012-06-06 Philippe Brochard <pbrochard@common-lisp.net>
127 * src/xlib-util.lisp (handle-event): Add an additional hook event
128 system to handle events in contrib code.
130 2012-06-03 Philippe Brochard <pbrochard@common-lisp.net>
132 * src/clfswm-placement.lisp: Add an optional border size in all
135 2012-05-30 Philippe Brochard <pbrochard@common-lisp.net>
137 * contrib/toolbar.lisp (clock): Add a clock module.
139 2012-05-28 Philippe Brochard <pbrochard@common-lisp.net>
141 * contrib/toolbar.lisp: begining of toolbar support.
143 2012-05-24 Philippe Brochard <pbrochard@common-lisp.net>
145 * src/clfswm-internal.lisp (rotate-root-geometry): Do not use
146 rotatef but a simpler algorithm.
148 2012-05-19 Philippe Brochard <pbrochard@common-lisp.net>
150 * src/clfswm-placement.lisp: Adjust width and height in child and
151 root placement to prevent too big child size.
153 2012-05-18 Philippe Brochard <pbrochard@common-lisp.net>
155 * src/clfswm-placement.lisp: New root placement possibility.
157 * src/clfswm-util.lisp (change-current-root-geometry): New
160 2012-05-17 Philippe Brochard <pbrochard@common-lisp.net>
162 * src/clfswm-util.lisp (exchange-root-geometry-with-mouse): New
165 2012-05-16 Philippe Brochard <pbrochard@common-lisp.net>
167 * src/menu-def.lisp: New root menu.
169 2012-05-15 Philippe Brochard <pbrochard@common-lisp.net>
171 * src/clfswm-circulate-mode.lisp (rotate-root-geometry-next)
172 (rotate-root-geometry-previous): New second mode binding to change
175 2012-05-13 Philippe Brochard <pbrochard@common-lisp.net>
177 * src/clfswm-internal.lisp: Remove the *current-child* variable
178 and use a setfable function (current-child) instead.
179 (current-child-setter): Store root current child before apllying
180 current child change.
182 2012-05-09 Philippe Brochard <pbrochard@common-lisp.net>
184 * src/clfswm-internal.lisp: Use xdpyinfo/xinerama informations
185 instead of xrandr informations.
187 2012-05-06 Philippe Brochard <pbrochard@common-lisp.net>
189 * src/clfswm-internal.lisp : Use only one list for root
191 (*root*): Root management API simplification.
193 2012-04-30 Philippe Brochard <pbrochard@common-lisp.net>
195 * src/clfswm-internal.lisp: Big change to replace *current-root*
196 variable to support multiple root.
198 2012-04-18 Philippe Brochard <pbrochard@common-lisp.net>
200 * src/tools.lisp (add-new-hook, add-hook): New macro. Do not
201 duplicate hooks by default. Use add-new-hook if you want to
204 2012-04-16 Philippe Brochard <pbrochard@common-lisp.net>
206 * src/clfswm-corner.lisp (wait-window-in-query-tree): Add a limit
207 of try to wait the command window.
209 2012-02-25 Philippe Brochard <pbrochard@common-lisp.net>
211 * src/clfswm-util.lisp (place-frames-from-xrandr)
212 (swap-frame-geometry, rotate-frame-geometry): New helper functions
213 for multiple physical screen.
214 (jump-to-slot, add-frame-in-parent-frame): Change *current-root*
217 2012-01-18 Philippe Brochard <pbrochard@common-lisp.net>
219 * src/*.lisp: Use create-symbol and create-symbol-in-package
220 instead of the shorter symb. (Thanks Aad Versteden).
222 * src/bindings-second-mode.lisp (set-default-second-keys): New
223 key binding to set window and frame transparency.
225 * src/bindings.lisp (set-default-main-mouse): New mouse binding to
226 set window and frame transparency.
228 * src/clfswm-keys.lisp (define-keys): New macro to ease multiple
229 keys definitions. (Thanks Valentin Plechinger for the request).
231 * src/*.lisp: Add full transparency support with xcompmgr.
233 2012-01-14 Philippe Brochard <pbrochard@common-lisp.net>
235 * src/*.lisp: Add transparency support.
237 2012-01-09 Ales Guzik <ales.guzik@gmail.com>
239 * src/clfswm-layout.lisp (tile-layout-mix): New layout to
240 automatically choose between vertival and horizontal tile layout.
241 (tile-space-layout): Fix to have space between screen border and
242 frame the same as between frames.
244 2012-01-04 Philippe Brochard <pbrochard@common-lisp.net>
246 * load.lisp: Support clisp 2.49+ module system to load CLX.
248 2012-01-04 Ales Guzik <ales.guzik@gmail.com>
250 * src/clfswm-layout.lisp (update-layout-managed-children-keep-position):
251 Fix an inattention error.
253 2012-01-04 Philippe Brochard <pbrochard@common-lisp.net>
255 * src/xlib-util.lisp (with-xlib-protect): Protect from
256 xlib:lookup-error. This prevent an error in clisp/new-clx when
257 sometimes an xlib:colormap is expected instead of an xlib:window.
259 2012-01-03 Philippe Brochard <pbrochard@common-lisp.net>
261 * src/xlib-util.lisp (handle-event): Fix a clisp/new-clx error
262 when sometimes window slot of event-slots is a pixmap instead of a
265 2011-12-26 Philippe Brochard <pbrochard@common-lisp.net>
267 * src/clfswm-query.lisp: Fill the history list with a non-nil
270 2011-12-25 Philippe Brochard <pbrochard@common-lisp.net>
272 * src/package.lisp (make-x-drawable): Drawable wrapper to prevent
273 type error in some CLX versions.
274 Replace xlib:drawable-* functions with x-drawable-* equivalents
276 2011-12-14 Philippe Brochard <pbrochard@common-lisp.net>
278 * src/clfswm-util.lisp (um-create-xdg-section-list): Add at least
279 the 'Utility menu entry.
281 * src/config.lisp (*xdg-section-list*): moved to config.lisp.
283 * src/clfswm-util.lisp (update-menus): Set a default value for
284 searching .desktop files when XDG_DATA_DIRS is not set.
286 2011-10-15 Philippe Brochard <pbrochard@common-lisp.net>
288 * src/clfswm-internal.lisp (place-window-from-hints): Use
289 with-placement macro to place unmanaged windows in an arbitrary
292 2011-06-16 Philippe Brochard <pbrochard@common-lisp.net>
294 * src/clfswm-internal.lisp (clean-windows-in-all-frames): Prevent
295 current root and current child being equal to child.
297 2011-06-13 Philippe Brochard <pbrochard@common-lisp.net>
299 * src/keysyms.lisp: Repeat Page_Down/Up keysym definitions at the
300 end of the file to change keysyms priority.
302 2011-06-13 Sylvain HENRY <hsyl20@gmail.com>
304 * *.*: Minor spelling fix.
306 2011-06-12 Philippe Brochard <pbrochard@common-lisp.net>
308 * src/clfswm.lisp (:unmap-notify, :destroy-notify): Show all
309 children just after the xlib tree cleanup -> reduce the
310 flickering when a window is deleted or destroyed.
312 * src/clfswm-internal.lisp (process-existing-windows): Do not
313 process the notify window.
315 2011-06-08 Philippe Brochard <pbrochard@common-lisp.net>
317 * *: **** Release 1106 ****
319 2011-06-08 Philippe Brochard <pbrochard@common-lisp.net>
321 * src/clfswm-internal.lisp (clean-windows-in-all-frames): New
322 function to prevent xlib error when a window is deleted.
324 2011-06-08 Philippe Brochard <pbrochard@common-lisp.net>
326 * src/clfswm-internal.lisp
327 (delete-child-and-children-in-all-frames): Delete or destroy
328 children before displaying all children.
330 2011-06-05 Philippe Brochard <pbrochard@common-lisp.net>
332 * src/clfswm-util.lisp (add-frame-in-parent-frame): New function
335 2011-06-04 Philippe Brochard <pbrochard@common-lisp.net>
337 * src/clfswm.lisp (main-unprotected): Destroy all frames windows
338 before closing the display (not really needed).
340 2011-06-02 Philippe Brochard <pbrochard@common-lisp.net>
342 * src/clfswm-layout.lisp (inc-tile-layout-size)
343 (dec-tile-layout-size, inc-slow-tile-layout-size)
344 (dec-slow-tile-layout-size): New functions and bindings.
346 2011-06-01 Philippe Brochard <pbrochard@common-lisp.net>
348 * src/clfswm-expose-mode.lisp (define-expose-letter-keys): Add
349 0..1 and A..Z keys to select a child in exposé mode.
351 * src/clfswm-internal.lisp (display-frame-info): Remove hidden
352 infos in frames windows.
354 * src/clfswm-util.lisp (ask-close/kill-current-window): Menu
357 2011-05-30 Philippe Brochard <pbrochard@common-lisp.net>
359 * src/clfswm-internal.lisp (get-parent-layout): Minor fullscreen
362 2011-05-29 Philippe Brochard <pbrochard@common-lisp.net>
364 * src/clfswm-internal.lisp
365 (delete-child-and-children-in-all-frames): Show all children
366 before deleting/destroying a windows, so prevent a flickering.
367 (get-parent-layout): Return the fullscreen size when the current
370 2011-05-28 Philippe Brochard <pbrochard@common-lisp.net>
372 * src/clfswm-internal.lisp (get-parent-layout): Handle correctly
375 * src/clfswm-util.lisp (delete-focus-window-generic): Do not hide
376 child before removing, so prevent a flickering.
378 * src/clfswm-internal.lisp (show-all-children): Rectangular
379 optimization to display only needed children.
380 (show-all-children): Remove flickering on
381 select-next/previous-brother.
383 2011-05-17 Philippe Brochard <pbrochard@common-lisp.net>
385 * src/clfswm-util.lisp (copy-focus-window, cut-focus-window): New
386 functions and ask-close/kill-current-window menu and bindings
389 2011-05-16 Philippe Brochard <pbrochard@common-lisp.net>
391 * src/clfswm-util.lisp (ask-close/kill-current-window): Add an
392 *ask-close/kill-placement* placement window variable.
394 2011-05-09 Philippe Brochard <pbrochard@common-lisp.net>
396 * contrib/osd.lisp (funcall-button-from-code): Display osd
397 documention for buttons and fix some redefining warnings.
399 2011-05-07 Philippe Brochard <pbrochard@common-lisp.net>
401 * src/clfswm-nw-hooks.lisp (make-permanent-nw-hook-frame): New
402 function. Prevent to add or delete a new window hook for this
405 * src/clfswm-layout.lisp (update-layout-managed-children-position):
408 2011-05-06 Philippe Brochard <pbrochard@common-lisp.net>
410 * src/bindings-second-mode.lisp (set-default-second-keys):
411 select-brother-spatial-move-* binding update.
413 * src/clfswm-layout.lisp (tile-left|right|top|bottom-layout): Ask
414 to keep children positions or not.
416 * src/clfswm-internal.lisp (fixe-real-size): Takes care of border
419 * src/clfswm-layout.lisp (update-layout-managed-children): Fix a
420 bug by using the parent frame instead of the current child.
422 * src/clfswm-circulate-mode.lisp
423 (select-brother-generic-spatial-move+right/left/up/down): New
424 function to select a brother from another in a spatial move.
426 2011-04-19 Philippe Brochard <pbrochard@common-lisp.net>
428 * src/clfswm-pack.lisp (move-frame-constrained)
429 (resize-frame-constrained): Use pixels instead of floating
432 2011-04-18 Philippe Brochard <pbrochard@common-lisp.net>
434 * src/clfswm-pack.lisp (resize-frame-constrained): Takes care of
436 (implode-frame, implode-current-frame): New functions. Absorb all
437 frames subchildren in frame. Explode frame opposite.
439 2011-04-17 Philippe Brochard <pbrochard@common-lisp.net>
441 * src/clfswm-pack.lisp (move-frame-constrained)
442 (resize-frame-constrained): New function. Move and resize frame
443 with the mouse constrained by other frame brothers.
445 2011-04-14 Philippe Brochard <pbrochard@common-lisp.net>
447 * src/clfswm-util.lisp (with-movement-select-next-brother)
448 (with-movement-select-previous-brother)
449 (with-movement-select-next-child): Use a simple method (do not
450 enter in the circulate mode) to allow to circulate in all children
453 * src/clfswm-menu.lisp (open-menu): Save info hash table keys
454 instead of deleting newly created keys.
456 2011-03-21 Philippe Brochard <pbrochard@common-lisp.net>
458 * src/clfswm-internal.lisp (x-px->fl, y-px->fl): Takes care of
461 2011-03-20 Philippe Brochard <pbrochard@common-lisp.net>
463 * src/clfswm-info.lisp (show-config-variable): call
464 produce-conf-var-doc.
466 2011-03-18 Philippe Brochard <pbrochard@common-lisp.net>
468 * src/clfswm-autodoc.lisp (produce-conf-var-doc-html): Produce a
469 documentation for all configurable variables in CLFSWM -
472 * src/clfswm-internal.lisp (leave-frame): Hide all children except
475 2011-03-16 Philippe Brochard <pbrochard@common-lisp.net>
477 * src/clfswm-autodoc.lisp (produce-all-docs): Produce a
478 documentation for all configurable variables in CLFSWM.
480 * src/clfswm-layout.lisp (set-gimp-layout): Display a notify
481 window with the help on the GIMP layout.
483 2011-03-12 Philippe Brochard <pbrochard@common-lisp.net>
485 * src/menu-def.lisp: Menu update to prevent cursor keys clash.
487 * clfswm.asd: Change compilation order to prevent undefined
490 * src/clfswm-internal.lisp (show-child(frame)): Handle properly
491 the show-root-frame-p parameter.
493 2011-03-11 Philippe Brochard <pbrochard@common-lisp.net>
495 * src/clfswm-util.lisp (move-frame, resize-frame): Do not move or
496 resize a frame when it's the current root.
498 2011-03-10 Philippe Brochard <pbrochard@common-lisp.net>
500 * src/clfswm-internal.lisp (show-all-children): Handle properly
501 duplicated child in multipe frames.
503 2011-03-09 Philippe Brochard <pbrochard@common-lisp.net>
505 * contrib/volume-mode.lisp (set-default-volume-keys): Add more
506 keybindings (up/down, right/left) to raise/lower the volume.
508 * src/clfswm-layout.lisp: Add a variable border size for frames
511 2011-03-08 Philippe Brochard <pbrochard@common-lisp.net>
513 * src/clfswm-util.lisp (cut-current-child, remove-current-child)
514 (delete-current-child): Hide the current child before doing the
517 * src/clfswm-internal.lisp (show-all-children): Hide windows not
518 in the current root before displaying those in current root.
519 Remove all hide-all unnecessary calls.
521 * src/clfswm-configuration.lisp (save-variables-in-conf-file):
522 Save only variables with a different value than their original
525 2011-03-07 Philippe Brochard <pbrochard@common-lisp.net>
527 * src/clfswm-info.lisp (show-config-variable): Use the new
530 * src/clfswm-autodoc.lisp (produce-configuration-variables): Use
531 the new defconfig method.
533 * src/clfswm-configuration.lisp (create-configuration-menu):
534 Change the config system with a more lispy one and a less string
535 based one: (defconfig name value group doc).
538 2011-03-06 Philippe Brochard <pbrochard@common-lisp.net>
540 * src/clfswm-internal.lisp (show-all-children): Simplify the
542 (show-child): Display an unmanaged window whe it's the current
544 (show-all-children): add the ability to display all child from
545 *root-frame* and hide all those who are not in *current-root*.
546 -> remove hide-all-children when needed.
548 * src/xlib-util.lisp (move-window,resize-window): Add a
549 *color-move-window* border when moving or resizing a window.
551 2011-03-04 Philippe Brochard <pbrochard@common-lisp.net>
553 * src/clfswm-internal.lisp (show-all-children): Perform only one
554 recusion on the clfswm tree: calculate geometry and place child in
557 2011-03-03 Philippe Brochard <pbrochard@common-lisp.net>
559 * src/clfswm-internal.lisp (show-all-children): Rethink of display
560 child order to prevent very annoying flickering.
562 2011-02-27 Philippe Brochard <pbrochard@common-lisp.net>
564 * src/clfswm-util.lisp (query-yes-or-no): New function.
566 * src/clfswm-configuration.lisp (reset-all-config-variables): New
567 function and menu entry.
568 (query-conf-value): Add the ability to leave the field blank to
569 reset the variable to its default value.
571 2011-02-26 Philippe Brochard <pbrochard@common-lisp.net>
573 * src/clfswm-configuration.lisp
574 (add-all-configuration-default-value): Add a default value to
575 configurable variables.
577 2011-02-23 Philippe Brochard <pbrochard@common-lisp.net>
579 * src/clfswm.lisp (main-unprotected): Create the configuration
580 menu only once at startup.
582 2011-02-22 Desmond O. Chang <dochang@gmail.com>
584 * contrib/amixer.lisp: Add a volume mode inspired by the emms
585 volume package. Alsa mixer interface.
587 * contrib/volume-mode.lisp: Add a volume mode inspired by the emms
590 2011-02-22 Desmond O. Chang <dochang@gmail.com>
592 * src/clfswm.lisp (main): Use ASDF:SYSTEM-SOURCE-DIRECTORY instead
593 of *LOAD-TRUENAME*. *LOAD-TRUENAME* is only bound during a call to
594 LOAD. If one eval CLFSWM:MAIN in repl, BASE-DIR will be an empty
595 string. Use ASDF:SYSTEM-SOURCE-DIRECTORY to fix it.
597 2011-02-16 Philippe Brochard <pbrochard@common-lisp.net>
599 * src/clfswm.lisp (main-unprotected): Add a close hook. And close
600 the notify window, the virtual keyboard and the clfswm terminal by
603 2011-02-15 Philippe Brochard <pbrochard@common-lisp.net>
605 * src/clfswm.lisp (main-unprotected): Destroy the notify window
606 before closing the display. This fix a bug when resetting/reloading
609 2011-02-12 Philippe Brochard <pbrochard@common-lisp.net>
611 * src/xlib-util.lisp (equal-wm-class-fun, equal-wm-name-fun)
612 (raise-window-fun, raise-and-focus-window-fun): New functions.
614 * src/config.lisp (*clfswm-terminal-cmd*): Switch from xterm to
616 (*never-managed-window-list*): Structure change to be more
617 flexible. Let the choice to focus, raise and do nothing on never
620 2011-02-09 Philippe Brochard <pbrochard@common-lisp.net>
622 * src/clfswm-util.lisp (mouse-focus-move/resize-generic): Take
623 care of never managed windows to move or resize them if the raise
626 * src/clfswm-internal.lisp (in-frame, in-window, in-child): New
629 2011-02-08 Philippe Brochard <pbrochard@common-lisp.net>
631 * src/clfswm.lisp (main-mode): Raise or not unmanaged windows
632 following request in *never-managed-window-list*.
634 2011-02-05 Philippe Brochard <pbrochard@common-lisp.net>
636 * *: **** Release 1102 ****
638 2011-02-05 Desmond O. Chang <dochang@gmail.com>
640 * src/keysyms.lisp: Add extended keysyms from stumpwm.
642 2011-02-01 Desmond O. Chang <dochang@gmail.com>
644 * src/clfswm-util.lisp (run-or-raise): New function (thanks to
647 * src/clfswm-internal.lisp (with-all-*): add a nil block.
649 2011-01-28 Desmond O. Chang <dochang@gmail.com>
651 * src/clfswm-util.lisp (xdg-config-home): XDG_CONFIG_HOME should
652 be $HOME/.config by default.
654 2010-12-29 Philippe Brochard <pbrochard@common-lisp.net>
656 * contrib/osd.lisp (display-doc): Add another method where a
657 CLFSWM native window is used to display the key documentation.
659 2010-12-27 Philippe Brochard <pbrochard@common-lisp.net>
661 * src/xlib-util.lisp (with-xlib-protect): Force to revert to the
664 2010-12-25 Philippe Brochard <pbrochard@common-lisp.net>
666 * src/clfswm-second-mode.lisp (second-key-mode): Call the second
667 mode leave function only when the generic mode was ended.
669 2010-12-08 Philippe Brochard <pbrochard@common-lisp.net>
671 * src/clfswm-second-mode.lisp (sm-leave-function): Do not use
672 *second-mode-program* anymore.
674 2010-12-07 Philippe Brochard <pbrochard@common-lisp.net>
676 * src/clfswm-second-mode.lisp (*second-mode-leave-function*): New
677 variable bound to a function executed (when not null) on second
680 2010-11-14 Philippe Brochard <pbrochard@common-lisp.net>
682 * src/clfswm-util.lisp (find-child-under-mouse): Do not find
685 2010-11-13 Philippe Brochard <pbrochard@common-lisp.net>
687 * src/clfswm-expose-mode.lisp (expose-mode-display-accel-windows):
688 Do not display the accel window for unmanaged windows.
690 2010-11-11 Philippe Brochard <pbrochard@common-lisp.net>
692 * src/clfswm-internal.lisp (set-current-root): Handle
693 window-parent in set-current-root.
695 * src/clfswm-util.lisp (mouse-click-to-focus-generic): Do not
696 focus the parent child when the current root is a window.
698 2010-11-09 Philippe Brochard <pbrochard@common-lisp.net>
700 * src/clfswm-expose-mode.lisp (expose-windows-current-child-mode):
701 New function an bindings.
703 * src/clfswm-layout.lisp (tile-layout, set-tile-layout): Fill
706 2010-11-07 Philippe Brochard <pbrochard@common-lisp.net>
708 * src/clfswm-layout.lisp (tile-layout-ask-keep-position): New
709 function to let the user choose to keep child position with
712 * src/clfswm-internal.lisp (remove-frame-data-slot): New
715 2010-11-05 Philippe Brochard <pbrochard@common-lisp.net>
717 * src/clfswm-internal.lisp (frame-select-next-child)
718 (frame-select-previous-child): New functions and bindings. Select
719 the next/previous child in the current frame.
721 2010-10-31 Philippe Brochard <pbrochard@common-lisp.net>
723 * src/clfswm-query.lisp (query-mode-complet): New function: Handle
724 completion in query-mode.
726 2010-10-30 Philippe Brochard <pbrochard@common-lisp.net>
728 * src/clfswm-query.lisp (query-print-string): Handle long lines
731 2010-10-27 Philippe Brochard <pbrochard@common-lisp.net>
733 * src/clfswm-expose-mode.lisp (expose-create-window): Ensure that
734 all characters are printable.
736 2010-10-25 Philippe Brochard <pbrochard@common-lisp.net>
738 * contrib/server/server.lisp: Load clfswm client code in the main
739 program and let the user start it with a --client command line
742 * src/package.lisp (*main-entrance-hook*): New hook executed after
743 loading configuration file and before opening the display.
745 2010-10-23 Philippe Brochard <pbrochard@common-lisp.net>
747 * src/xlib-util.lisp: Remove unnecessary xlib:display-finish-output.
749 * src/clfswm-internal.lisp (show-child): Show window only if not
752 * src/clfswm-keys.lisp (binding-substitute-modifier): Utility to
753 change modifiers after binding definition.
755 2010-10-21 Philippe Brochard <pbrochard@common-lisp.net>
757 * contrib/osd.lisp: New file: OSD (On Screen Display) for
760 * src/clfswm-menu.lisp (open-menu): Modularise function.
762 2010-10-13 Philippe Brochard <pbrochard@common-lisp.net>
764 * src/clfswm-info.lisp (show-first-aid-kit): Display the essential
765 key binding in main and second mode.
767 2010-10-10 Philippe Brochard <pbrochard@common-lisp.net>
769 * src/clfswm-util.lisp (open-notify-window): Convert hello-window
770 functions to a more generic Notify-window system.
772 * src/tools.lisp (add-timer): Add an id to identify the timer.
774 2010-10-09 Philippe Brochard <pbrochard@common-lisp.net>
776 * src/tools.lisp (erase-timer): New function.
778 * src/clfswm-util.lisp (display-hello-window): Add a timer to hide
779 the hello window. Add Configuration variables.
781 2010-10-08 Philippe Brochard <pbrochard@common-lisp.net>
783 * src/clfswm-util.lisp (): Add an Hello window at startup.
785 * src/tools.lisp (process-timers): Add a timer system.
787 2010-10-07 Philippe Brochard <pbrochard@common-lisp.net>
789 * src/clfswm-query.lisp (add-in-query-string): Handle correctly
792 2010-10-06 Philippe Brochard <pbrochard@common-lisp.net>
794 * src/clfswm-query.lisp (query-print-string): Change cursor color
795 and show parenthesis matching with colors (on match and on
798 2010-10-05 Philippe Brochard <pbrochard@common-lisp.net>
800 * src/clfswm-internal.lisp (show-all-children): Do not raise a
801 child when its parent is hidden.
803 2010-10-02 Philippe Brochard <pbrochard@common-lisp.net>
805 * src/clfswm-circulate-mode.lisp (select-next-subchild): Add the
806 possibility to circulate over subchild of the current child.
808 * src/clfswm-expose-mode.lisp (expose-all-windows-mode)
809 (expose-windows-generic): Add an escape-body function to return to
810 the original state on escape key.
812 * src/clfswm-util.lisp (bind-on-slot): Add an optional parameter
813 to bind the current child from the configuration file.
815 2010-10-01 Philippe Brochard <pbrochard@common-lisp.net>
817 * src/clfswm-nw-hooks.lisp (absorb-window-nw-hook): Absorb new
818 window hook: the frame absorb all new windows that match
819 nw-absorb-test frame data slot.
821 2010-09-30 Philippe Brochard <pbrochard@common-lisp.net>
823 * src/clfswm-expose-mode.lisp (expose-create-window): Show window
824 title in accel window.
826 2010-09-29 Philippe Brochard <pbrochard@common-lisp.net>
828 * configure: Use the Xavier Maillard clfswm script in contrib to
829 build an executable in the standard way.
831 2010-09-26 Philippe Brochard <pbrochard@common-lisp.net>
833 * src/clfswm-expose-mode.lisp (expose-mode-display-accel-windows):
834 New functions. Add a window on each child in the expose mode to
837 * src/clfswm-internal.lisp (child-x, child-y, child-width)
838 (child-height): New methods to get real child coordinates.
840 2010-09-25 Philippe Brochard <pbrochard@common-lisp.net>
842 * src/clfswm-layout.lisp (*-layout): Use child-position.
844 * src/clfswm-internal.lisp (child-position): New function.
846 * src/clfswm-expose-mode.lisp (expose-windows-mode)
847 (expose-all-windows-mode): Use a generic mode.
849 * src/xlib-util.lisp (with-handle-event-symbol): Use a filled list
850 with handle-event-fun symbols instead of inspecting clfswm
851 internals symbols on each mode change.
853 * src/clfswm-expose-mode.lisp: Move and rename present*-windows in
854 a separate clfswm-expose-mode.lisp file.
856 * src/clfswm-util.lisp (speed-mouse-right, speed-mouse-down): Use
857 screen size instead of hardcoded test coordinates.
859 2010-09-24 Philippe Brochard <pbrochard@common-lisp.net>
861 * src/clfswm-util.lisp (speed-mouse-reset, speed-mouse-left)
862 (speed-mouse-right, speed-mouse-up, speed-mouse-down)
863 (speed-mouse-undo, speed-mouse-first-history): New functions to
864 quickly move the mouse. Implemented for the second mode.
866 2010-09-16 Philippe Brochard <pbrochard@common-lisp.net>
868 * contrib/clfswm: Move clfswm sources to $tmp_dir if there is no
869 write permission on $clfswm_asd_path. So anybody can start clfswm
870 even if there is no write permission on the source directory.
872 2010-09-12 Philippe Brochard <pbrochard@common-lisp.net>
874 * contrib/clfswm: Add support to cmucl, ccl and ecl.
876 2010-09-11 Philippe Brochard <pbrochard@common-lisp.net>
878 * src/clfswm-util.lisp (set-hide-unmanaged-window)
879 (set-show-unmanaged-window, set-default-hide-unmanaged-window):
880 New functions and menu entry.
881 (set-globally-hide-unmanaged-window)
882 (set-globally-show-unmanaged-window): New functions and menu
885 * src/clfswm-internal.lisp (hide-unmanager-window-p): New
887 (show-child): Add a data slot on frame to hide or not unmanaged
890 * src/clfswm-corner.lisp (present-clfswm-terminal)
891 (present-virtual-keyboard): Use a function (generic-present-body)
892 instead of a macro (generate-present-body).
894 * src/clfswm-util.lisp (update-menus): List all directories and
895 subdirectories in $XDG_DATA_DIRS/applications.
897 2010-09-10 Philippe Brochard <pbrochard@common-lisp.net>
899 * src/clfswm-corner.lisp (generate-present-body): New macro.
900 (present-clfswm-terminal, present-virtual-keyboard): Use
901 generate-present-body.
903 2010-09-09 Philippe Brochard <pbrochard@common-lisp.net>
905 * src/clfswm-util.lisp (update-menus): Follow XDG specifications
906 instead of the non-portable Debian update-menu.
908 2010-09-07 Philippe Brochard <pbrochard@common-lisp.net>
910 * src/clfswm.lisp (error-handler): New function do handle
911 asynchronous errors and ignore them.
912 (open-display): Install the new error-handler on display.
914 2010-09-05 Philippe Brochard <pbrochard@common-lisp.net>
916 * src/xlib-util.lisp (with-xlib-protect): Add a
917 with-simple-restart on top of body execution.
919 2010-09-04 Philippe Brochard <pbrochard@common-lisp.net>
921 * src/clfswm.lisp (main-loop): Protect all xlib functions with an
924 * src/xlib-util.lisp (handle-event): use with-xlib-protect only in
925 handle-event. Add a with-simple-restart to prevent a
926 clisp/new-lisp infinite loop.
928 2010-08-30 Philippe Brochard <pbrochard@common-lisp.net>
930 * src/clfswm-corner.lisp (present-clfswm-terminal): Make the
931 clfswm terminal working even on xterm title changes.
933 2010-08-29 Philippe Brochard <pbrochard@common-lisp.net>
935 * src/clfswm-util.lisp (run-other-window-manager): Update for
938 * src/tools.lisp (do-execute): New parameter io to change the
941 * src/clfswm-util.lisp (hide-current-child): Prevent from removing
944 * src/clfswm-internal.lisp (child-member): New predicate.
945 (child-remove): New function.
947 * src/*.lisp: Use child-member and child-remove everywhere it's
950 2010-08-28 Philippe Brochard <pbrochard@common-lisp.net>
952 * src/clfswm.lisp (main-loop): Ensure that all events have been
953 processed after a process-event.
955 * src/clfswm-internal.lisp (is-in-current-child-p): New function.
957 2010-08-27 Philippe Brochard <pbrochard@common-lisp.net>
959 * src/clfswm.lisp (main-mode:configure-request): Raise the window
960 only when present on the current child and focus it accordingly.
962 2010-08-26 Philippe Brochard <pbrochard@common-lisp.net>
964 * src/clfswm-circulate-mode.lisp (circulate-loop-function):
965 Use is-a-key-pressed-p.
967 * src/xlib-util.lisp (is-a-key-pressed-p): New predicate.
969 * src/clfswm-keys.lisp (define-ungrab/grab): Use all values
970 returned by xlib:keysym->keycodes.
972 * src/*.lisp: Use the new child-equal-p to compare children. This
973 prevent a bug with sbcl/cmucl when the standard equal function
974 does not work with xlib:window.
976 * src/clfswm-internal.lisp (child-equal-p): New predicate.
978 2010-08-25 Philippe Brochard <pbrochard@common-lisp.net>
980 * src/clfswm-generic-mode.lisp (generic-mode): Use an
981 xlib:event-listen before processing event with
982 xlib:process-event. This prevent a bug with CLX threaded
983 implementation like sbcl.
985 * src/clfswm.lisp (main-loop): Use an xlib:event-listen before
986 processing event with xlib:process-event. This prevent a bug with
987 CLX threaded implementation like sbcl.
989 2010-08-17 Philippe Brochard <pbrochard@common-lisp.net>
991 * contrib/server/key.lisp (ushell-sh): Add ccl and ecl support.
993 * src/xlib-util.lisp (compress-motion-notify): Use a loop instead
996 * src/clfswm-internal.lisp (with-find-in-all-frames): New macro.
997 (find-parent-frame, find-frame-window, find-frame-by-name)
998 (find-frame-by-number): Use with-find-in-all-frames to search in
999 frames in the right order.
1001 * src/clfswm-util.lisp (mouse-click-to-focus-generic): Fix an
1002 unwanted flickering with unmanaged windows.
1004 2010-08-16 Philippe Brochard <pbrochard@common-lisp.net>
1006 * src/package.lisp: Remove event handler hooks as they're not
1007 needed anymore (To replace them: use closure and define-handler).
1009 * src/xlib-util.lisp (move-window, resize-window)
1010 (wait-mouse-button-release): Use a generic mode.
1012 * src/*.lisp: Replace the case to handle event with a more (tricky)
1013 lispy method which bind a function to each keywords associated
1016 2010-07-23 Philippe Brochard <pbrochard@common-lisp.net>
1018 * src/clfswm-util.lisp (delete-current-child): Invert bindings and
1019 menu entry between delete-current-child and remove-current-child.
1020 ie: Delete a child and its children in all frames by default.
1022 2010-07-21 Philippe Brochard <pbrochard@common-lisp.net>
1024 * src/package.lisp: Add a placement configuration group.
1026 * src/binding*.lisp: Bind control+g to escape the current action
1029 * src/clfswm-internal.lisp
1030 (delete-child-and-children-in-all-frames): New function and
1031 binding: Second mode - Control+Delete delete the current child and
1032 its children in all frames (ie: close the current child and its
1035 2010-07-20 Philippe Brochard <pbrochard@common-lisp.net>
1037 * src/clfswm-internal.lisp (remove-child-in-frame): Do not destroy
1038 the frame window and the frame gc. Close a very annoying bug when
1039 cuting/pasting a frame or moving a child over frames with the
1042 * src/clfswm-util.lisp (mouse-click-to-focus-generic): Redisplay
1043 all children in *current-root* after moving/resizing a frame.
1045 2010-07-18 Philippe Brochard <pbrochard@common-lisp.net>
1047 * src/clfswm-util.lisp (delete-focus-window)
1048 (destroy-focus-window): Remove child in parent frame before
1051 2010-07-16 Philippe Brochard <pbrochard@common-lisp.net>
1053 * src/clfswm-util.lisp (identify-key): Add a timeout in
1055 (mouse-click-to-focus-generic): Use find-child-under-mouse instead
1056 of the window passed by xlib:process-event.
1058 * src/xlib-util.lisp (move-window, resize-window)
1059 (wait-mouse-button-release): Add a timeout in xlib:process-event.
1061 2010-04-11 Philippe Brochard <pbrochard@common-lisp.net>
1063 * src/clfswm-util.lisp (run-other-window-manager): Add the ability
1064 to launch an other window manager and to return to clfswm.
1066 2010-03-18 Philippe Brochard <pbrochard@common-lisp.net>
1068 * src/clfswm-layout.lisp (set-tile-space-layout): Set default
1071 2009-12-15 Philippe Brochard <pbrochard@common-lisp.net>
1073 * src/clfswm.lisp (main-loop): Add a *loop-hook* parameter and a
1076 * src/clfswm-generic-mode.lisp (generic-mode): Add a loop-hook
1077 parameter and a loop timeout.
1079 2009-12-05 Philippe Brochard <pbrochard@common-lisp.net>
1081 * src/clfswm.lisp (main): Add an alternate configuration filename
1084 * load.lisp: Add a debuging code example.
1086 2009-11-14 Philippe Brochard <pbrochard@common-lisp.net>
1088 * src/clfswm-configuration.lisp (create-configuration-menu): New
1089 menu to configure all clfswm variables while clfswm is running.
1091 2009-11-12 Philippe Brochard <pbrochard@common-lisp.net>
1093 * src/clfswm-util.lisp (save-configuration-variables): New
1094 function to save all configuration variables in clfswmrc.
1096 2009-11-11 Philippe Brochard <pbrochard@common-lisp.net>
1098 * src/clfswm-info.lisp (info-mode): Begining of mouse support in
1100 (set-default-info-keys): Add cursor key support in info mode.
1102 2009-11-08 Philippe Brochard <pbrochard@common-lisp.net>
1104 * contrib/reboot-halt.lisp: Add a Suspend/Reboot/Halt menu in
1107 * src/clfswm.lisp (main): Add a read-conf-file-p parameter to
1108 prevent reading the configuration file (this may be useful to
1109 produce the original documentation without user modifications
1110 with the rc configuration file).
1112 2009-11-07 Philippe Brochard <pbrochard@common-lisp.net>
1114 * src/bindings-second-mode.lisp (set-default-second-keys):
1115 Simplification of Escape key to close/kill/remove the focus window
1116 and unhide all windows.
1118 * src/bindings.lisp (set-default-main-keys): Simplification of
1119 Escape key to close/kill/remove the focus window and unhide all
1122 * src/clfswm-util.lisp (ask-close/kill-current-window): Add remove
1123 focus and unhide all windows capabilities.
1125 2009-10-10 Philippe Brochard <pbrochard@common-lisp.net>
1127 * contrib/mpd.lisp (start-gmpc): Add gmpc in the mpd menu.
1129 2009-07-29 Philippe Brochard <pbrochard@common-lisp.net>
1131 * src/clfswm-layout.lisp (tile-layout, tile-horizontal-layout):
1132 Keep child order and don't make unnecessary child movement.
1133 (one-column-layout, one-line-layout): New layouts.
1135 2009-06-29 Philippe Brochard <pbrochard@common-lisp.net>
1137 * *: **** Release 0906 ****
1139 * contrib/cd-player.lisp: New file to handle the CD player.
1141 * contrib/xmms.lisp: New file to handle the xmms player.
1143 2009-06-28 Philippe Brochard <pbrochard@common-lisp.net>
1145 * src/clfswm-layout.lisp (set-no-layout-remember-size): New layout:
1146 Maximize windows in their frame - Leave frames to their actual
1149 * src/bindings-second-mode.lisp (set-default-second-keys): Bind
1150 "o" on set-open-in-new-frame-in-parent-frame-nw-hook.
1152 2009-06-27 Philippe Brochard <pbrochard@common-lisp.net>
1154 * contrib/keyb_fr.lisp: New file to handle an azerty keyboard.
1156 2009-06-24 Philippe Brochard <pbrochard@common-lisp.net>
1158 * contrib/mpd.lisp: Use a standard menu.
1160 * src/clfswm-info.lisp: Use a standard menu for the help-menu.
1162 2009-06-22 Philippe Brochard <pbrochard@common-lisp.net>
1164 * contrib/mpd.lisp: New file to handle the Music Player Daemon (MPD)
1166 2009-06-19 Philippe Brochard <pbrochard@common-lisp.net>
1168 * src/clfswm-autodoc.lisp (produce-doc, produce-doc-html): Minor
1171 2009-06-18 Philippe Brochard <pbrochard@common-lisp.net>
1173 * src/config.lisp (get-fullscreen-size): One pixel adjustment
1176 * src/clfswm-placement.lisp (*-child-placement): One pixel
1179 2009-06-16 Philippe Brochard <pbrochard@common-lisp.net>
1181 * src/clfswm-circulate-mode.lisp (draw-circulate-mode-window):
1182 Ensure that all characters are printable.
1184 * src/config.lisp (get-fullscreen-size): Adjust default fullscreen
1187 * src/clfswm-placement.lisp (*-child-placement): Adjust
1188 coordinates to one pixel in the current child.
1190 2009-06-04 Philippe Brochard <pbrochard@common-lisp.net>
1192 * src/clfswm-query.lisp (query-enter-function): Assign font before
1193 width and height calculation.
1195 2009-06-03 Philippe Brochard <pbrochard@common-lisp.net>
1197 * src/xlib-util.lisp (banish-pointer): Use with-placement macro to
1198 bannish the pointer in an arbitrary place.
1200 * src/clfswm-info.lisp (info-mode): Use with-placement macro to
1201 place the info window in an arbitrary place.
1203 * src/clfswm-query.lisp (query-enter-function): Use with-placement
1204 macro to place the query window in an arbitrary place.
1206 * src/clfswm-placement.lisp: New file. Allow to place info windows
1207 or query windows on an arbitrary place. Allow to bannish the
1208 pointer on an arbitrary place.
1210 2009-05-16 Philippe Brochard <pbrochard@common-lisp.net>
1212 * src/clfswm-circulate-mode.lisp (reorder-child)
1213 (reorder-brother): Unfocus windows before reordering children or
1216 2009-05-13 Philippe Brochard <pbrochard@common-lisp.net>
1218 * src/clfswm-circulate-mode.lisp (reorder-brother): Ensure that
1219 the parent is a frame.
1221 * src/clfswm-second-mode.lisp (sm-handle-motion-notify): Handle
1222 motion with a default modifier.
1224 * src/clfswm.lisp (handle-motion-notify): Handle motion with a
1227 * src/clfswm-info.lisp (info-mode): Handle motion with a default
1229 (info-mode): Optimization in loop function.
1231 2009-05-10 Philippe Brochard <pbrochard@common-lisp.net>
1233 * src/clfswm-circulate-mode.lisp (reorder-brother): Handle
1234 root-frame correctly.
1236 * clfswm.asd: Dependency fix for clfswm-generic-mode.
1238 * src/clfswm-circulate-mode.lisp (reorder-child)
1239 (reorder-brother): Handle empty frames.
1240 (reorder-brother): Redisplay only the parent frame of the current
1243 * src/clfswm-util.lisp (frame-toggle-maximize): Redisplay only the
1244 parent frame of the current frame.
1246 2009-05-09 Philippe Brochard <pbrochard@common-lisp.net>
1248 * src/clfswm-util.lisp (frame-toggle-maximize): New function:
1249 Maximize/Unmaximize the current frame in its parent frame.
1251 * src/clfswm-layout.lisp (maximize-layout): New layout: Maximize
1252 windows and frames in their parent frame.
1254 2009-05-05 Philippe Brochard <pbrochard@common-lisp.net>
1256 * src/*.lisp: Add support for Clozure Common Lisp (CCL).
1258 * src/clfswm-circulate-mode.lisp (reorder-child)
1259 (reorder-brother): Reinitialise on circulate type change
1260 child to brother or brother to child.
1262 * src/*.lisp (*): Use map-window instead of xlib:map-window. So
1263 calls xlib:display-finish-output on each map-request. So speed up
1266 * src/xlib-util.lisp (map-window): New function. Call
1267 xlib:display-finish-output on each map request.
1269 2009-04-28 Philippe Brochard <pbrochard@common-lisp.net>
1271 * src/clfswm-second-mode.lisp (sm-handle-motion-notify):
1272 Optimisation when drawing second mode window.
1274 2009-04-27 Philippe Brochard <pbrochard@common-lisp.net>
1276 * src/clfswm-circulate-mode.lisp (circulate-mode): Optimisation in
1279 2009-04-22 Philippe Brochard <pbrochard@common-lisp.net>
1281 * src/clfswm-util.lisp (run-program-from-query-string): Launch
1282 command only with a return validation.
1284 2009-04-22 Xavier Maillard <xma@gnu.org>
1286 * src/clfswm-query.lisp (query-string): Use a generic mode.
1288 2009-04-19 Xavier Maillard <xma@gnu.org>
1290 * src/clfswm-info.lisp (info-mode): Use generic-mode for info-mode.
1292 2009-04-18 Xavier Maillard <xma@gnu.org>
1294 * src/clfswm-generic-mode.lisp (generic-mode): Add a generic mode
1295 to define all other modes.
1297 2009-04-05 Philippe Brochard <pbrochard@common-lisp.net>
1299 * src/package.lisp (): Use *default-font-string* for all
1302 * src/clfswm-info.lisp (info-mode): Ensure integer windows size.
1304 2009-02-17 Philippe Brochard <pbrochard@common-lisp.net>
1306 * src/xlib-util.lisp (null-size-window-p): Better check of null
1309 2009-02-14 Philippe Brochard <pbrochard@common-lisp.net>
1311 * src/clfswm.lisp (handle-map-request): Add a fix to manage
1312 correctly fullscreen windows (SDL particularly).
1314 2008-12-20 Philippe Brochard <pbrochard@common-lisp.net>
1316 * src/xlib-util.lisp (get-color): Allocate colors only once -> fix
1317 a segfault with clisp/new-clx.
1319 * src/clfswm.lisp (handle-motion-notify): Add a needed window
1322 * src/clfswm-second-mode.lisp (sm-handle-motion-notify): Add a
1323 needed window argument.
1325 2008-10-30 Philippe Brochard <pbrochard@common-lisp.net>
1327 * src/xlib-util.lisp (wait-no-key-or-button-press)
1328 (wait-a-key-or-button-press): Check buttons press/release correctly"
1330 2008-10-28 Philippe Brochard <pbrochard@common-lisp.net>
1332 * src/menu-def.lisp: Add children navigation menu in the movement
1333 menu (select next/previous child/brother/level).
1335 2008-10-26 Philippe Brochard <pbrochard@common-lisp.net>
1337 * *: Rename 'sister' frame to 'brother' frame.
1339 * src/clfswm-keys.lisp (unalias-modifiers): Convert a modifier
1340 alias in a real modifier.
1342 * src/package.lisp (*modifier-alias*): New list of modifier alias
1343 For example: :alt is :mod-1, :numlock is :mod-2...
1345 * src/tools.lisp (remove-hook): New function.
1347 * src/clfswm-keys.lisp (with-capslock, without-capslock)
1348 (with-numlock, without-cnumlock): New functions.
1350 2008-10-25 Philippe Brochard <pbrochard@common-lisp.net>
1352 * src/clfswm-info.lisp: Use the *binding-hook* to create info
1353 keys and mouse bindings.
1355 * src/bindings-second-mode.lisp: Use the *binding-hook* to create
1356 second keys and mouse bindings.
1358 * src/bindings.lisp: Use the *binding-hook* to create main keys
1361 2008-10-10 Philippe Brochard <pbrochard@common-lisp.net>
1363 * src/clfswm-menu.lisp (open-menu): Remember parent menu to undo
1366 2008-10-09 Philippe Brochard <pbrochard@common-lisp.net>
1368 * src/menu-def.lisp: Use a menu instead of a function for the
1371 2008-10-08 Philippe Brochard <pbrochard@common-lisp.net>
1373 * src/clfswm-util.lisp (show-standard-menu): Display the standard
1374 menu from the 'update-menus' command.
1376 2008-10-07 Philippe Brochard <pbrochard@common-lisp.net>
1378 * src/clfswm-query.lisp (query-string): Do not ungrab keyboard if
1379 it's already grabbed.
1381 * src/clfswm-internal.lisp (display-frame-info): Use configurable
1382 colors and fix a bug with background.
1383 (display-frame-info): Set window background when displaying info.
1385 2008-10-06 Philippe Brochard <pbrochard@common-lisp.net>
1387 * src/xlib-util.lisp (my-character->keysyms): Use a macro to avoid
1388 warning with clisp/new-clx.
1390 2008-10-04 Philippe Brochard <pbrochard@common-lisp.net>
1392 * src/clfswm-util.lisp (jump-to-slot): Prevent to jump on a
1395 2008-09-23 Philippe Brochard <pbrochard@common-lisp.net>
1397 * *: **** Release 0809 ****
1399 2008-09-23 Philippe Brochard <pbrochard@common-lisp.net>
1401 * src/clfswm-util.lisp (ensure-unique-name): New function and menu
1403 (ensure-unique-number): New function and menu entry.
1405 2008-09-22 Philippe Brochard <pbrochard@common-lisp.net>
1407 * src/clfswm-nw-hooks.lisp (named-frame-nw-hook): New new window
1408 hook: open the next window in a named frame.
1409 (numbered-frame-nw-hook): New new window hook: open the next
1410 window in a numbered frame.
1412 * src/clfswm-query.lisp (query-string): Grab the keyboard in all
1413 cases. So query-string can be called even in the main mode.
1415 * src/clfswm-internal.lisp (show-all-children): Do not raise a
1416 child by default => far less flickering.
1418 2008-09-19 Philippe Brochard <pbrochard@common-lisp.net>
1420 * src/bindings-second-mode.lisp: Bind "t" to tile-current-frame.
1422 * src/menu-def.lisp: Change key binding for the CLFSWM menu
1425 * src/xlib-util.lisp (xgrab-pointer): Handle the case where cursor
1426 is nil. (workaround on some CLX implementation).
1428 2008-09-12 Philippe Brochard <pbrochard@common-lisp.net>
1430 * src/menu-def.lisp: Add a menu to set a focus policy for all
1433 * src/clfswm-util.lisp (set-focus-policy-generic-for-all)
1434 (all-frames-set-*-focus-policy): Set a focus policy for all
1437 * src/clfswm.lisp (handle-enter-notify): sloppy-select
1438 mode. Select a child and its parents on mouse over.
1440 2008-09-03 Philippe Brochard <pbrochard@common-lisp.net>
1442 * src/clfswm.lisp (handle-enter-notify): Add a sloppy strict focus
1443 policy -> Sloppy focus only for windows in the current frame.
1444 (main-unprotected): Exit clfswm on init error (ie: when another
1445 window manager is running).
1447 * src/clfswm-util.lisp (reset-clfswm): New function.
1449 2008-09-02 Philippe Brochard <pbrochard@common-lisp.net>
1451 * src/clfswm-menu.lisp (init-menu): New function.
1453 * src/clfswm-util.lisp (reload-clfswm): New function to reload
1455 (exit-clfswm): Rename quit-clfswm to exit-clfswm.
1457 * src/clfswm.lisp (main, main-unprotected): Handle error in a
1458 superior main function. Now CLFSWM can't break the X session. It
1459 just reinitialize the display and run a new main loop.
1461 * src/clfswm-corner.lisp: Make *clfswm-terminal* and
1462 *vt-keyboard-on* global to avoid warnings when loading clfswm.
1464 * src/clfswm-layout.lisp: Add a specific GIMP layout menu.
1465 (help-on-gimp-layout): Describe how to use the GIMP layout.
1467 2008-09-01 Philippe Brochard <pbrochard@common-lisp.net>
1469 * src/clfswm-layout.lisp (set-gimp-layout): Change the layout to
1470 main-window-right-layout. Change the keybinding for (shift)alt+tab
1471 to not select windows in the main window lisst.
1472 Bind F8 to add a window in the main window list.
1473 Bind F9 to remove a window in the main window list.
1474 Change the focus policy to :sloppy.
1475 (set-previous-layout): Restore the previous layout, keybinding and
1478 2008-08-31 Philippe Brochard <pbrochard@common-lisp.net>
1480 * src/clfswm-menu.lisp (add-menu-comment): Add comments in menu.
1482 * src/clfswm-layout.lisp (main-window-left-layout)
1483 (main-window-bottom-layout, main-window-top-layout): New
1485 Factorize layouts in menu.
1487 2008-08-30 Philippe Brochard <pbrochard@common-lisp.net>
1489 * src/clfswm-layout.lisp (main-window-right-layout): A possible
1490 GIMP layout: one or more main windows on one side of the
1491 frame. Others on the other size.
1493 * src/clfswm-util.lisp
1494 (current-frame-set-click/sloppy-focus-policy): Each frame can have
1495 a different focus policy (one of :click or :sloppy).
1496 The default focus policy is set with *default-focus-policy*.
1498 2008-08-23 Philippe Brochard <pbrochard@common-lisp.net>
1500 * src/clfswm-info.lisp (show-config-variable): New function.
1502 2008-08-19 Philippe Brochard <pbrochard@common-lisp.net>
1504 * src/clfswm-layout.lisp (tile-horizontal-layout): New layout.
1506 * src/clfswm-info.lisp: Colored help for key binding and corners
1509 2008-08-18 Philippe Brochard <pbrochard@common-lisp.net>
1511 * src/clfswm-util.lisp (delete-focus-window)
1512 (destroy-focus-window): Remove chid only in
1513 handle-unmap/destroy-notify. Focus *current-root* only when
1514 closing/killing the current child.
1516 * src/clfswm-autodoc.lisp (produce-corner-*-doc): New autodoc
1517 functions or corners.
1519 2008-08-17 Philippe Brochard <pbrochard@common-lisp.net>
1521 * src/clfswm-corner.lisp (present-clfswm-terminal): New corner
1522 action: Hide/Unhide a terminal on mouse corner action. (By default
1523 right mouse button on the top left corner).
1525 * src/config.lisp (*never-managed-window-list*): New config
1528 * src/clfswm-internal.lisp (never-managed-window-p): New function:
1529 Handle never managed window in a more simple way.
1531 * src/clfswm-corner.lisp: New file and new and more simple method
1532 to define corners actions.
1534 2008-08-15 Philippe Brochard <pbrochard@common-lisp.net>
1536 * src/clfswm-info.lisp (info-mode): Info line can now be colored.
1538 * src/clfswm-layout.lisp (fast-layout-switch)
1539 (define-fast-layout-switch): New functions: Switch between two
1542 * src/clfswm-second-mode.lisp (leave-second-mode): Takes care if
1543 really in the second mode. So leave-second-mode can be used even
1546 * src/clfswm-util.lisp (switch-to-last-child): New function:
1547 Store the current child and switch to the previous one.
1549 2008-07-16 Philippe Brochard <pbrochard@common-lisp.net>
1551 * src/clfswm-util.lisp (display-current-window-info): Display the
1553 (have-to-present-virtual-keyboard): Add a virtual keyboard corner
1554 (top right by default). By default 'xvkbd' is used.
1556 2008-06-28 Philippe Brochard <pbrochard@common-lisp.net>
1558 * src/xlib-util.lisp (move-window, resize-window): Compress motion
1561 * src/clfswm.lisp (handle-motion-notify): Compress motion events.
1563 * src/clfswm-second-mode.lisp (sm-handle-motion-notify): Compress
1566 * src/clfswm-info.lisp (info-mode): Compress motion events.
1568 2008-06-21 Philippe Brochard <pbrochard@common-lisp.net>
1570 * src/clfswm-internal.lisp (show-all-children): Compute geometry
1571 and selection first and then show only necessary children.
1572 (show-child): remove unneeded display-p parameter.
1574 * src/config.lisp (get-fullscreen-size): Place the frame border
1575 outside the screen (this prevent the loose of 2 pixels per
1578 2008-06-12 Philippe Brochard <pbrochard@common-lisp.net>
1580 * src/clfswm-internal.lisp (focus-child): Algorithm change to
1581 raise only the selected child.
1583 2008-06-08 Philippe Brochard <pbrochard@common-lisp.net>
1585 * src/clfswm-internal.lisp (raise-p-list, show-all-children):
1586 Raise only viewable children.
1588 2008-06-06 Philippe Brochard <pbrochard@common-lisp.net>
1590 * src/clfswm-internal.lisp (show-all-children): Always raise all
1591 displayed children. Remove all references to raise-p.
1593 2008-06-04 Philippe Brochard <pbrochard@common-lisp.net>
1595 * src/menu-def.lisp (child-menu): New menu entry on raise/lower
1598 * src/bindings-second-mode.lisp ("Page_Down", "Page_Up"): New
1599 second mode binding on raise/lower child in its frame.
1601 * src/clfswm-nw-hooks.lisp (leave-focus-frame-nw-hook): Adapt
1602 behaviour to the new raise/lower property.
1603 Call clear-nw-hook before the rest of the hook.
1605 * src/bindings.lisp (mouse-click-to-focus-and-move-window)
1606 (mouse-click-to-focus-and-resize-window): Stop button event. This
1607 prevent a keyboard/pointer freeze.
1609 2008-06-03 Philippe Brochard <pbrochard@common-lisp.net>
1611 * src/clfswm-internal.lisp (frame-lower-child)
1612 (frame-raise-child): New functions to raise/lower a child in its
1615 * src/clfswm-util.lisp (have-to-present-windows)
1616 (have-to-present-all-windows): New functions to have an MaxOS
1617 expose like on mouse click in screen corner.
1619 * src/clfswm-info.lisp ("Page_Down", "Page_Up"): Add boundaries.
1621 2008-05-30 Philippe Brochard <pbrochard@common-lisp.net>
1623 * src/clfswm-util.lisp (unhide-a-child-from-all-frames): Unhide a
1624 child from a choice in all frames with hidden children.
1626 * src/clfswm-info.lisp (info-mode-menu): Handle separators.
1628 2008-05-28 Philippe Brochard <pbrochard@common-lisp.net>
1630 * src/clfswm-util.lisp (hide-current-child, unhide-a-child)
1631 (unhide-all-children): New functions.
1633 * src/clfswm-info.lisp (info-mode-menu): Handle symbols and
1636 * src/clfswm-util.lisp (hide/show-frame-window): new function and
1639 2008-05-23 Philippe Brochard <pbrochard@common-lisp.net>
1641 * src/clfswm-util.lisp (rename-current-child): Do not display the
1642 frame info for a window.
1644 2008-05-20 Philippe Brochard <pbrochard@common-lisp.net>
1646 * src/clfswm-internal.lisp (remove-child-in-frame): Destroy the
1647 frame window for the removed child and its children.
1649 2008-05-18 Philippe Brochard <pbrochard@common-lisp.net>
1651 * src/clfswm-autodoc.lisp (produce-*-doc-*): Add a note to use the
1654 2008-05-17 Philippe Brochard <pbrochard@common-lisp.net>
1656 * src/clfswm-nw-hooks.lisp (default-frame-nw-hook): Do not handle
1657 the ROX pinboard (ie: leave it lowered in the root window as
1660 * src/clfswm-layout.lisp (tile-left-space-layout): New layout.
1661 (tile-left-layout, tile-right-layout, tile-top-layout)
1662 (tile-bottom-layout): Use all the frame space when there is only
1665 * src/clfswm-internal.lisp (place-window-from-hints): Center
1666 unmanaged windows in the root screen.
1668 * src/clfswm-nw-hooks.lisp (clear-nw-hook, clear-all-nw-hooks):
1671 2008-05-15 Philippe Brochard <pbrochard@common-lisp.net>
1673 * src/clfswm-util.lisp (current-frame-manage-window-type): Fix a
1674 typo in managed types.
1676 * src/clfswm-internal.lisp (show-child): Always display frame info
1677 even if the frame is hidden.
1679 * src/xlib-util.lisp (resize-window): Use a better algorithme to
1682 2008-05-13 Philippe Brochard <pbrochard@common-lisp.net>
1684 * src/clfswm-util.lisp (with-movement): Display frame info for all
1685 frames in current root.
1687 2008-05-12 Philippe Brochard <pbrochard@common-lisp.net>
1689 * src/*.lisp: Rename 'brother' frames to 'sister' frames.
1691 * src/bindings-second-mode.lisp (define-second-key #\a): New
1692 binding on 'add-default-frame'.
1694 * src/clfswm-autodoc.lisp (produce-*-doc-*-in-file): Show a
1695 message to follow the autodocumentation process.
1697 2008-05-10 Philippe Brochard <pbrochard@common-lisp.net>
1699 * src/clfswm-util.lisp (bind-or-jump): Bind "Tab", "Return" and
1700 "Space" to jump to a child. "B" to bind a slot on the current
1703 * src/bindings-second-mode.lisp: Use "Tab" instead of
1706 2008-05-07 Philippe Brochard <pbrochard@common-lisp.net>
1708 * src/clfswm-util.lisp (find-child-under-mouse): Take care of
1709 unmanaged (hidden) windows.
1711 * src/clfswm-internal.lisp (place-window-from-hints): Give a
1712 minimal size for windows.
1713 (with-all-windows-frames-and-parent): New function.
1715 * src/config.lisp (*default-window-width/height*): New parameters.
1717 * src/clfswm-internal.lisp (place-window-from-hints): Center
1718 windows in the screen instead of in their frame.
1720 * src/bindings-second-mode.lisp (tile-space-current-frame): New
1723 * src/clfswm-layout.lisp (register-layout): Intern the once name
1724 in the right package.
1726 2008-05-05 Philippe Brochard <pbrochard@common-lisp.net>
1728 * doc/dot-clfswmrc: Update to follow the new clfswm way.
1730 2008-05-03 Philippe Brochard <pbrochard@common-lisp.net>
1732 * src/clfswm-internal.lisp (set-current-child)
1733 (adapt-child-to-parent, show-child, hide-child): Handle the case
1734 where child is not a frame or a window.
1736 * src/clfswm-util.lisp
1737 (mouse-click-to-focus-generic,mouse-focus-move/resize-generic):
1738 Check if child is a frame.
1740 * src/clfswm-internal.lisp (managed-window-p): Handle the case
1741 where frame is null.
1742 (place-frame): Check if frame and parent are frames.
1744 * src/clfswm-info.lisp (info-mode): display all frame info before
1747 * src/clfswm-second-mode.lisp (second-key-mode): display all frame
1748 info before leaving.
1750 * src/clfswm-internal.lisp (display-all-frame-info): New function.
1752 2008-05-02 Philippe Brochard <pbrochard@common-lisp.net>
1754 * src/tools.lisp (getenv): Implemented for ECL.
1755 (urun-prog): Implemented for ECL.
1757 * src/clfswm-util.lisp (identify-key): Use a double buffer to
1760 * src/clfswm-query.lisp (query-string): Use a double buffer to
1763 * src/clfswm-info.lisp (draw-info-window): Use a double buffer to
1766 * src/xlib-util.lisp (clear-pixmap-buffer, copy-pixmap-buffer):
1769 2008-05-01 Philippe Brochard <pbrochard@common-lisp.net>
1771 * src/clfswm-info.lisp (info-mode): Add boundaries in the info mode window.
1773 * src/menu-def.lisp: New file: move all menu definition in
1776 * src/clfswm-layout.lisp (register-layout): Use a function instead
1779 2008-04-30 Philippe Brochard <pbrochard@common-lisp.net>
1781 * src/clfswm-autodoc.lisp (produce-menu-doc,
1782 (produce-menu-doc-html): New functions.
1783 (produce-doc-*): Moved to clfswm-autodoc.lisp.
1785 * src/clfswm-util.lisp (paste-selection-no-clear): Prevent to
1786 paste a child on one of its own children. (this prevent a
1788 (move-child-to): Rename move/copy-current-child-by to
1790 (mouse-move-window-over-frame): New function to move the window
1791 under the mouse cursor to another frame.
1793 * src/clfswm-internal.lisp (find-child-in-parent): New function.
1795 2008-04-29 Philippe Brochard <pbrochard@common-lisp.net>
1797 * src/clfswm-internal.lisp (show-all-children): Display unmanaged
1798 windows only when its window parent is the current child.
1800 2008-04-28 Philippe Brochard <pbrochard@common-lisp.net>
1802 * src/clfswm-util.lisp (manage-current-window)
1803 (unmanage-current-window): New functions: Allow to force to manage
1804 or unmanage a window by its parent frame.
1806 * src/bindings-second-mode.lisp (#\o): binded to
1807 set-open-in-new-frame-in-parent-frame-nw-hook and
1808 (#\o :control) to set-open-in-new-frame-in-root-frame-nw-hook
1810 * src/clfswm-util.lisp (with-current-window): New macro.
1812 * src/xlib-util.lisp (move-window, resize-window): Remove uneeded
1813 exposure and enter-window handle event.
1815 * src/clfswm-util.lisp (move-frame, resize-frame): Show all
1816 children for the current child after the move/resize.
1818 2008-04-27 Philippe Brochard <pbrochard@common-lisp.net>
1820 * src/xlib-util.lisp (resize-window): Take care of window size
1823 * src/clfswm-util.lisp (mouse-focus-move/resize-generic): Allow to
1824 move/resize unmanaged windows.
1826 * src/xlib-util.lisp (move-window, resize-window): New functions.
1828 2008-04-25 Philippe Brochard <pbrochard@common-lisp.net>
1830 * src/clfswm-util.lisp (current-frame-manage-window-type): Let the
1831 user choose what window type the current frame must handle.
1832 (display-current-window-info): New function.
1833 (current-frame-manage-all-window-type)
1834 (current-frame-manage-only-normal-window-type)
1835 (current-frame-manage-no-window-type): New functions.
1837 * src/clfswm-internal.lisp (managed-window-p): New function.
1839 * src/package.lisp (frame): Managed type: new frame
1840 parameter. This allow to choose what window type a frame must
1843 * src/*.lisp: Rename all 'father' occurrences to 'parent'.
1845 * src/clfswm-nw-hooks.lisp
1846 (open-in-new-frame-in-parent-frame-nw-hook): New new window hook.
1848 * src/clfswm-util.lisp (adapt-current-frame-to-window-hints): New
1851 * src/tools.lisp (ensure-printable): Return always a string even
1854 2008-04-24 Philippe Brochard <pbrochard@common-lisp.net>
1856 * src/config.lisp (*default-nw-hook*): New variable to change the
1857 default new window hook.
1859 2008-04-22 Philippe Brochard <pbrochard@common-lisp.net>
1861 * clfswm.asd (clfswm): Add a dependency from
1862 clfswm-second-mode.lisp to clfswm.lisp.
1864 * src/clfswm-util.lisp (identify-key): Show the documentation for
1865 the function bound on a key.
1866 (with-movement): Move with-movement,
1867 current-frame-fill/pack/resize-* from bindings-second-mode.lisp
1868 to clfswm-util.lisp.
1870 * src/clfswm-menu.lisp: New menu system that let user change keys
1871 or functions associated to keys.
1873 2008-04-18 Philippe Brochard <pbrochard@common-lisp.net>
1875 * src/clfswm-internal.lisp (show-all-children): Display-child is
1876 the first child by default. Solve a bug with father-p.
1878 2008-04-17 Philippe Brochard <pbrochard@common-lisp.net>
1880 * src/clfswm-internal.lisp (add-frame): Add frame return the
1882 (show-all-children): Move the size computation outside the
1885 * src/bindings-second-mode.lisp (with-movement): Redisplay only
1888 * src/clfswm-util.lisp (mouse-click-to-focus-generic): Redisplay
1889 only the current child.
1891 * src/clfswm-internal.lisp (show-all-children): New display-child
1892 parameter to display only the desired child and its children.
1893 (select-next/previous-child): Only display the current child.
1895 2008-04-14 Philippe Brochard <pbrochard@common-lisp.net>
1897 * src/clfswm.lisp (init-display): Move the default frame creation
1898 on the default init hook.
1900 * src/clfswm-keys.lisp (define-ungrab/grab): Handle all keysyms in
1901 the main mode (for example: "1" on an azerty keyboard).
1903 2008-04-13 Philippe Brochard <pbrochard@common-lisp.net>
1905 * src/clfswm-keys.lisp (find-key-from-code): Better handle of
1906 keysyms. Revert to old grabbing method for the main mode.
1908 2008-04-12 Philippe Brochard <pbrochard@common-lisp.net>
1910 * src/clfswm.lisp (init-display): Add key handling on no focus
1911 window and on frame windows.
1913 2008-04-11 Philippe Brochard <pbrochard@common-lisp.net>
1915 * src/clfswm.lisp (main): Keyboard handle strategie change: Grab
1916 all keys by default and replay just what is needed. No change for
1919 * src/clfswm-keys.lisp: remove grab/ungrab main keys.
1920 (find-key-from-code): Test for shift and not shift presence.
1922 2008-04-09 Philippe Brochard <pbrochard@common-lisp.net>
1924 * src/clfswm-internal.lisp (switch-to-root-frame): show later -
1925 new key parameter to have less flickering.
1927 2008-04-07 Philippe Brochard <pbrochard@common-lisp.net>
1929 * src/bindings-second-mode.lisp (frame-layout-once-menu): Set the
1930 layout only one time and revert to no-layout to freely handle
1933 * src/clfswm-nw-hooks.lisp
1934 (open-in-new-frame-in-root-frame-nw-hook): Tile layout with spaces
1935 with new created window.
1937 * src/clfswm-layout.lisp (register-layout): Now register
1938 automatically a once layout to set the layout only one time and
1939 revert to no-layout to freely handle frames.
1941 2008-04-05 Philippe Brochard <pbrochard@common-lisp.net>
1943 * src/clfswm-nw-hooks.lisp (leave-focus-frame-nw-hook): New
1944 nw-hook: Open the next window in the current frame and leave the
1945 focus to the current child.
1947 2008-04-04 Philippe Brochard <pbrochard@common-lisp.net>
1949 * src/bindings-second-mode.lisp: Add keys definitions to
1950 bind-or-jump in the second mode.
1952 * src/clfswm-util.lisp (bind-or-jump): remove the auto-defining
1953 macro for bind-or-jump-(1|2|3...).
1955 * src/clfswm-keys.lisp (define-define-key/mouse): Allow additional
1956 arguments to function. This allow to do things like:
1957 (define-main-key (key) 'my-function 10 20 'foo) -> 10 20 and 'foo
1958 are passed to my-function on key press.
1960 2008-04-03 Philippe Brochard <pbrochard@common-lisp.net>
1962 * src/clfswm-util.lisp (bind-or-jump): New (great) function.
1964 2008-04-02 Philippe Brochard <pbrochard@common-lisp.net>
1966 * src/clfswm-internal.lisp (child-fullname): New function
1968 * src/clfswm-info.lisp (info-mode-menu): Add an explicit optional
1969 docstring in info-mode-menu. An item can be
1970 '((key function) (key function)) or with docstring
1971 '((key function "documentation 1") (key function "bla bla") (key function))
1973 * src/tools.lisp (ensure-n-elems): New function.
1975 * src/bindings-second-mode.lisp: Bind Alt+mouse-1/3 to move or
1976 resize a frame or the window's father.
1978 * src/clfswm.lisp (init-display): Remove tile-space-layout by
1979 default on the root frame.
1981 * src/clfswm-util.lisp (move/resize-frame): Add standard event
1982 hooks handlers (map-request, configure-notify...)
1984 * src/clfswm-internal.lisp (adapt-child-to-father): Limit minimal
1987 2008-04-01 Philippe Brochard <pbrochard@common-lisp.net>
1989 * src/bindings.lisp: Bind Alt+mouse-1/3 to move or resize a frame
1990 or the window's father.
1992 * src/clfswm-util.lisp (mouse-click-to-focus-generic): Stop button
1993 event only if there is a geometry change.
1994 (mouse-focus-move/resize-generic): Generic function to move or
1995 resize a frame or a window father frame.
1997 2008-04-01 Philippe Brochard <pbrochard@common-lisp.net>
1999 * src/clfswm-internal.lisp (show-all-children): Return t if there
2000 is a geometry change.
2002 2008-03-30 Philippe Brochard <pbrochard@common-lisp.net>
2004 * src/bindings.lisp (Up/Down): Swap select previous/next level.
2006 * src/bindings-second-mode.lisp (Up/Down): Swap select previous/next level.
2008 * src/clfswm.lisp (init-display): Create a default frame in the root frame.
2010 * src/clfswm-internal.lisp (place-frame): Place frame from real (pixel) coordinates.
2011 (with-all-*): Reverse the child list to manage the first child last (like in
2014 * src/config.lisp (*create-frame-on-root*): New variable: Create a new frame on the
2015 root window only if true.
2017 * src/clfswm-util.lisp (mouse-click-to-focus-generic): Create a new frame on the
2018 root window only if *create-frame-on-root* is true.
2020 * src/bindings-second-mode.lisp (sm-mouse-click-to-focus-generic): Create a new frame
2023 2008-03-29 Philippe Brochard <pbrochard@common-lisp.net>
2025 * src/bindings-second-mode.lisp (sm-mouse-click-to-focus-generic): Focus, move and resize
2026 the current child (even if it's a window).
2028 2008-03-28 Philippe Brochard <pbrochard@common-lisp.net>
2030 * src/clfswm-util.lisp (mouse-click-to-focus-and-move)
2031 (mouse-click-to-focus-and-resize): New functions.
2033 * src/clfswm-internal.lisp (*-fl->px): Convert float coordinates to pixel.
2034 (*-px->fl): Convert pixel coordinates to float.
2036 * src/tools.lisp (call-hook): Move call-hook to tools.lisp.
2038 2008-03-27 Philippe Brochard <pbrochard@common-lisp.net>
2040 * src/clfswm-layout.lisp (no-layout): Use :first-only to raise only the
2043 * src/clfswm-internal.lisp (hide-all): Split hide-all-children in hide-all
2044 and hide-all-children.
2045 (raise-if-needed): New function.
2046 (show-child): Use a first-p parameter to raise windows only when they are
2049 2008-03-26 Philippe Brochard <pbrochard@common-lisp.net>
2051 * src/clfswm-internal.lisp (select-next/previous-level): Don't use show-all-children
2054 2008-03-25 Philippe Brochard <pbrochard@common-lisp.net>
2056 * src/clfswm-info.lisp (keys-from-list): new function.
2058 * src/*: rename 'childs' in 'children'.
2060 * src/*: rename 'group' in 'frame'.
2062 2008-03-22 Philippe Brochard <pbrochard@common-lisp.net>
2064 * src/clfswm-pack.lisp (explode-group/explode-current-group): new functions.
2066 2008-03-21 Philippe Brochard <pbrochard@common-lisp.net>
2068 * src/clfswm-pack.lisp: Pack, Fill, Resize functions.
2070 2008-03-16 Philippe Brochard <pbrochard@common-lisp.net>
2072 * src/clfswm-nw-hooks.lisp: Register system for new window hooks.
2073 Bind control+o to open the next window in a new group in the root group
2074 (as open in next window in a new workspace in 0801 version).
2076 2008-03-15 Philippe Brochard <pbrochard@common-lisp.net>
2078 * src/clfswm-util.lisp (show/hide-all-groups-info/key): Show/hide all groups info
2081 2008-03-14 Philippe Brochard <pbrochard@common-lisp.net>
2083 * bindings-second-mode.lisp ("ISO_Left_Tab"): Use ISO_Left_Tab
2084 instead of Tab for select-previous-child.
2086 2008-03-13 Philippe Brochard <pbrochard@common-lisp.net>
2088 * clfswm-util.lisp (force-window-in-group/force-window-center-in-group):
2091 2008-03-11 Philippe Brochard <pbrochard@common-lisp.net>
2093 * clfswm-util.lisp (identify-key): Display the documentation
2094 associated to keys when identifying a key.
2096 2008-03-10 Xavier Maillard <xma@gnu.org>
2098 * contrib/clfswm: Complete rewrite of the script. Detect error and
2099 act accordingly. Add command line arguments to configure the
2100 script execution. User can now choose different common lisp
2101 implementation (clisp and sbcl only), choose where to store the
2102 dumped image, where to find clfswm source.
2104 2008-03-09 Philippe Brochard <pbrochard@common-lisp.net>
2106 * clfswm-internal.lisp (process-new-window): Beginning of new
2107 window hook: each group have a hook to tell what he wants to do
2108 with the new created window.
2110 2008-03-08 Xavier Maillard <xma@gnu.org>
2112 * contrib/clfswm: New script. Dump a CLISP image of CLFSWM then
2113 call the resulting executable.
2115 * clfswm.lisp (read-conf-file): Check for the user config file in
2116 XDG_CONFIG_HOME *first*. Freedesktop.org standards should be
2117 prefered whenever possible.
2119 2008-02-27 Philippe Brochard <pbrochard@common-lisp.net>
2121 * clfswm-layout.lisp (*-layout): Add an optional raise-p
2122 parameter in each layout.
2124 2008-02-26 Philippe Brochard <pbrochard@common-lisp.net>
2126 * clfswm-util.lisp (copy/cut-current-child): Does not affect the
2128 (copy/move-current-child-by-name/number): new functions
2129 (focus-group-by-name/number): new functions
2130 (delete-group-by-name/number): new functions
2132 2008-02-24 Philippe Brochard <pbrochard@common-lisp.net>
2134 * ************************************************************ *
2135 *: Major update - No more reference to workspaces. The main *
2136 structure is a tree of groups or application windows. *
2137 * ************************************************************ *
2139 2008-02-07 Philippe Brochard <pbrochard@common-lisp.net>
2141 * clfswm.lisp (read-conf-file): Read configuration in
2142 $HOME/.clfswmrc or in /etc/clfswmrc or in
2143 $XDG_CONFIG_HOME/clfswm/clfswmrc.
2144 (xdg-config-home): Return the content of $XDG-CONFIG-HOME (default
2147 2008-01-18 Philippe Brochard <pbrochard@common-lisp.net>
2149 * clfswm-internal.lisp (show-all-group): Use *root* and *root-gc*
2152 2008-01-03 Philippe Brochard <pbrochard@common-lisp.net>
2154 * clfswm-internal.lisp (find-window-group): New function.
2156 * clfswm*: Change to make clfswm run with clisp/new-clx.
2158 2008-01-01 Philippe Brochard <pbrochard@common-lisp.net>
2160 * clfswm-util.lisp (query-show-paren): Add show parent matching in
2162 (query-string): Bind control+k to delete end of line.
2164 * clfswm-second-mode.lisp (draw-second-mode-window): Display
2165 the action on mouse motion in second mode.
2167 * clfswm.lisp (handle-exposure): Redisplay groups on exposure
2168 event but do not clear the root window.
2169 (handle-configure-request): Adjust unmanaged window from their
2172 * clfswm-internal.lisp (process-new-window): Adjust new window
2173 with the specified hints (max/min/base width/height).
2175 2007-12-31 Philippe Brochard <pbrochard@common-lisp.net>
2177 * clfswm.lisp (handle-configure-request): Send an Configuration
2178 Notify event. This solve a bug with xterm and rxvt who takes some
2179 times to be mapped. Now there is no delay.
2181 * bindings-second-mode.lisp (define-shell): Run programs after
2182 living the second mode.
2184 2007-12-30 Philippe Brochard <pbrochard@common-lisp.net>
2186 * clfswm-internal.lisp (process-new-window): Do not crop transient
2187 window to group size.
2188 (adapt-window-to-group): Do not crop transient window to group
2191 * clfswm.lisp (handle-configure-request): Adapt just the window to
2192 its group and don't take care of the configure request. Remove the
2193 bug with the Gimp outside the group and speed up the window
2195 (handle-exposure): Remove show-all-group on exposure event
2198 2007-12-29 Philippe Brochard <pbrochard@common-lisp.net>
2200 * clfswm-util.lisp (circulate-group-up-copy-window)
2201 (circulate-group-down-copy-window)
2202 (circulate-workspace-up-copy-group)
2203 (circulate-workspace-down-copy-group): Prevent the copy of the
2204 same window in the same workspace.
2206 * bindings-second-mode.lisp (release-copy-selected-window)
2207 (release-copy-selected-group): Prevent the copy of the same window
2208 in the same workspace.
2210 * clfswm-pager.lisp (generic-pager-move-window-on-previous-line)
2211 (generic-pager-move-window-on-next-line): Remove the copy
2213 (generic-pager-move-group-on-next-workspace)
2214 (generic-pager-move-group-on-previous-workspace): Prevent the copy
2215 of the same window in the same workspace.
2217 * bindings-pager.lisp (mouse-pager-copy-selected-window-release)
2218 (mouse-pager-copy-selected-group-release): Prevent the copy of the
2219 same window in the same workspace.
2221 * tools.lisp (setf/=): new macro to set a variable only when
2224 * clfswm-internal.lisp (adapt-window-to-group): use set/= to set
2225 x, y... only when necessary.
2227 2007-12-28 Philippe Brochard <pbrochard@common-lisp.net>
2229 * clfswm.lisp (handle-configure-notify, *configure-notify-hook*):
2230 new function and hook: force windows to stay in its group (solve a
2233 2007-12-25 Philippe Brochard <pbrochard@common-lisp.net>
2235 * bindings-second-mode.lisp (mouse-motion): use hide-group to have
2236 less flickering when moving/resizing groups.
2238 * clfswm-internal.lisp (hide-group): new function.
2239 (show-all-group): clear-all: new parameter.
2241 2007-12-22 Philippe Brochard <pbrochard@common-lisp.net>
2243 * clfswm-keys.lisp (define-define-key): undefine-*-multi-name: new
2245 * clfswm*: Color change for the pager. Typo or better description
2246 in bindings definitions. Define bindings for a qwerty keyboard by
2247 default. dot-clfswmrc show examples to switch to an azerty
2249 License change to GPL v3.
2250 * config.lisp: new file - group all globals variables in this
2253 2007-08-26 Philippe Brochard <pbrochard@common-lisp.net>
2255 * xlib-util.lisp (hide-window): Remove structure-notivy events
2256 when hidding a window.
2258 2007-05-16 Philippe Brochard <pbrochard@common-lisp.net>
2260 * package.lisp (*sm-property-notify-hook*): Readded
2261 property-notify-hook in second mode.
2263 2007-05-15 Philippe Brochard <pbrochard@common-lisp.net>
2265 * clfswm-keys.lisp (produce-doc-html): Better clean up for strings.
2267 2007-05-13 Philippe Brochard <pbrochard@common-lisp.net>
2269 * clfswm-pack.lisp (tile-current-workspace-to/right/left/top/bottom):
2270 Tile the current workspace with the current window on one side and
2271 others on the other (this emulate the larswm, dwm, wmii way). See
2272 the default configuration file to enable this mode by default.
2274 * clfswm-pager.lisp (pager-tile-current-workspace-to): idem for
2277 2007-05-12 Philippe Brochard <pbrochard@common-lisp.net>
2279 * clfswm-pager.lisp (pager-draw-window-in-group): Add
2280 ensure-printable to print windows name even with non-ascii
2283 2007-05-11 Philippe Brochard <pbrochard@common-lisp.net>
2285 * clfswm-pager.lisp (pager-explode-current-group): Create a new
2286 group for each window in group.
2287 (pager-implode-current-group): Move all windows in workspace to
2288 one group and remove other groups.
2290 * clfswm-pack.lisp (explode-group): Create a new group for each
2292 (implode-group): Move all windows in workspace to one group and
2293 remove other groups.
2295 * clfswm-util.lisp (identify-key): Remove local configuration
2296 variables and made them available for configuration from
2298 (query-string): idem.
2300 2007-04-29 Philippe Brochard <pbrochard@common-lisp.net>
2302 * netwm-util.lisp: Start of NetWM compliance.
2303 Add a Netwm client list gestion.
2305 2007-04-28 Philippe Brochard <pbrochard@common-lisp.net>
2307 * clfswm-internal.lisp (create-group-on-request): open a new group
2308 only when the current group is not empty.
2310 * bindings-second-mode.lisp (define-second-key-#\o-control): Fix a
2311 bug with null workspace.
2313 * clfswm-pager.lisp (pager-handle-event): Add a hook
2314 system. This hooks can be changed in the user configuration file.
2316 * package.lisp: All colors and font variables are set in
2317 package.lisp and can be configured in the user configuration
2319 Note: If you have configured some less ugly colors (esp. for the
2320 pager) don't hesitate to let me know :)
2322 * clfswm-second-mode.lisp (sm-handle-event): Add a hook
2323 system. This hooks can be changed in the user configuration file.
2325 * clfswm.lisp (handle-event): Add a hook system. This hooks can be
2326 changed in the user configuration file (~/.clfswmrc)
2328 2007-04-25 Philippe Brochard <pbrochard@common-lisp.net>
2330 * clfswm-util.lisp (stop-all-pending-actions): new function: reset
2331 arrow action, open next window in new workspace/group.
2333 * bindings.lisp (stop-all-pending-actions): new binding.
2334 (open-next-window-in-new-group-once): Open the next windows in a
2335 new group (only once) or open all new windows in a new group (like
2336 others windows managers).
2338 2007-04-22 Philippe Brochard <pbrochard@common-lisp.net>
2340 * clfswm.lisp (read-conf-file): New function to read a lisp
2341 configuration file at startup.
2342 (focus-group-under-mouse): Check if group isn't the current group
2343 ( prevent a bug with unclutter ).
2345 2007-03-02 Philippe Brochard <pbrochard@common-lisp.net>
2347 * bindings.lisp (run-program-from-query-string): A program can be
2348 launch from a input query window.
2350 2007-03-01 Philippe Brochard <pbrochard@common-lisp.net>
2352 * clfswm-info.lisp: Fix a bug with banish pointer in info mode.
2354 2007-02-28 Philippe Brochard <pbrochard@common-lisp.net>
2356 * clfswm.lisp (process-new-window): One can now open the next
2357 window in a workspace called by its number.
2359 * clfswm-util.lisp (query-font-string): Minimal editing
2361 (eval-from-string): And an REPL in the window manager... :)
2363 2007-02-26 Philippe Brochard <pbrochard@common-lisp.net>
2365 * clfswm.lisp (process-new-window): One can now open the next
2366 window in a new workspace or a new group.
2368 * clfswm-pager.lisp (pager-mode): Display the next arrow action
2369 with the hidden windows.
2371 * clfswm.lisp (second-key-mode): Display the current workspace
2372 number and the next arrow action in the state window.
2374 * clfswm-pager.lisp (pager-mode): Hide all windows before leaving
2375 the pager mode and then redisplay only the current workspace.
2377 2007-02-25 Philippe Brochard <pbrochard@common-lisp.net>
2379 * clfswm.lisp (add-workspace): Workspaces are now numbered. So
2380 they can be focused with a keypress, sorted or renumbered.
2382 2007-02-24 Philippe Brochard <pbrochard@common-lisp.net>
2384 * clfswm-pager.lisp (pager-mode): Remove multiple silly
2385 pager-draw-display. This prevent a lot of flickering in the
2388 * clfswm.lisp: Remove all display-force-output and replace them
2389 with only one display-finish-output in the event loop.
2391 2006-11-06 Philippe Brochard <pbrochard@common-lisp.net>
2393 * clfswm-pager.lisp (pager-center-group): New function - center a
2394 group at the middle of the screen.
2396 * clfswm-pack.lisp (center-group): New function - center a group
2397 at the middle of the screen.
2399 * clfswm.lisp (show-group): Add a cross line under the group.
2400 (show-group): Group are showned even if fullscreened.
2401 (init-display): Add an exposure event on the root window.
2403 2006-11-05 Philippe Brochard <pbrochard@common-lisp.net>
2405 * package.lisp (*default-group*): Default group is the same size
2406 of a fullscreened group.
2408 * bindings*: Use shift to move, control+shift to copy.
2410 * *.lisp: Add comments for configuration or alternatives. So grep
2411 for CONFIG to see where you can configure clfswm. And grep for
2412 Alternative to use some commented code.
2414 * clfswm.lisp (second-key-mode): Use a single window to show the
2415 second mode. See for alternatives at the end of this file.
2417 2006-11-03 Philippe Brochard <pbrochard@common-lisp.net>
2419 * clfswm-keys.lisp (define-define-key/mouse): Factorisation in a
2420 macro of key and mouse definitions.
2421 (define-define-key/mouse): Use state instead of modifiers list
2422 this fix a bug when the modifiers list is not in the rigth order.
2424 * clfswm.lisp (second-key-mode): Add a colored border in second mode.
2426 2006-11-02 Philippe Brochard <pbrochard@common-lisp.net>
2428 * clfswm-info.lisp (info-mode): Add an info mode.
2430 2006-11-01 Philippe Brochard <pbrochard@common-lisp.net>
2432 * clfswm.lisp (process-new-window): Change border size for
2434 (show-all-windows-in-workspace): Unhide all windows even when the
2435 current group is in fullscreen mode.
2437 2006-10-26 Philippe Brochard <pbrochard@common-lisp.net>
2439 * clfswm-util.lisp (identify-key): Add an exposure handle-event to
2440 redisplay the identify window after a terminal switch.
2442 * clfswm-pager.lisp (pager-mode): Add an exposure handle-event to
2443 redisplay the pager after a terminal switch.
2445 2006-10-24 Philippe Brochard <pbrochard@common-lisp.net>
2447 * clfswm-util.lisp (identify-key): Add a window to display
2448 the keys to identify on screen.
2450 * bindings.lisp, bindings-pager.lisp: Define same keys to
2451 move/copy groups/windows in second mode and in pager.
2453 * clfswm.lisp (handle-event*): Same version in all clfswm (fix some
2455 (show-all-windows-in-workspace): unhide window before adapting it
2458 2006-10-23 Philippe Brochard <pbrochard@common-lisp.net>
2460 * clfswm.lisp (handle-event): Revert to an older version.
2462 2006-10-18 Philippe Brochard <pbrochard@common-lisp.net>
2464 * clfswm-util.lisp (force-window-in-group)
2465 (force-window-center-in-group): New functions for transient windows.
2467 * clfswm-pager.lisp (pager-remove-current-workspace/group):
2468 bugfix: hide all windows before removing group or workspace.
2470 2006-10-17 Philippe Brochard <pbrochard@common-lisp.net>
2472 * bindings-pager.lisp (mouse-pager-move-selected-group)
2473 (mouse-pager-copy-selected-group)
2474 (mouse-pager-move-selected-window)
2475 (mouse-pager-copy-selected-window, mouse-pager-rotate-window-up)
2476 (mouse-pager-rotate-window-down): New functions to have mouse in
2479 * clfswm-pager.lisp (pager-swap-window)
2480 (pager-copy-group-on-next/previous-workspace)
2481 (pager-copy-window-on-next/previous-line): New functions
2483 2006-10-15 Philippe Brochard <pbrochard@common-lisp.net>
2485 * clfswm-pager.lisp (pager-move-window-on-next/previous-line,
2486 (pager-move-group-on-next/previous-workspace): new functions.
2488 * clfswm-pack.lisp (resize-half-x-x-current-group): resize group
2489 to its half size (new functions).
2491 2006-10-11 Philippe Brochard <pbrochard@common-lisp.net>
2493 * clfswm-pager.lisp: workspaces, groups and windows can now be
2494 selectionned with the keyboard or the mouse.
2496 2006-10-09 Philippe Brochard <pbrochard@common-lisp.net>
2498 * clfswm-pager.lisp (pager-select-workspace-right/left):
2499 workspaces can now be selectionned with the keyboard.
2501 2006-10-08 Philippe Brochard <pbrochard@common-lisp.net>
2503 * clfswm-keys.lisp (undefine-main-key, undefine-second-key, undefine-mouse-action):
2504 new function to remove a previous defined key or mouse combination.
2506 2006-10-07 Philippe Brochard <pbrochard@common-lisp.net>
2508 * clfswm.lisp (main): Check for access error in init-display.
2510 * clfswm-keys.lisp (define-ungrab/grab): check for keysym and
2511 keycode before grabbing.
2513 * bindings.lisp: Remove nlambda and use defun to keep the function
2514 documentation with clisp.
2515 (define-shell): new macro to define shell command for the second
2518 2006-10-06 Philippe Brochard <pbrochard@common-lisp.net>
2520 * clfswm-keys.lisp (define-ungrab/grab): use a cond instead of a
2523 2006-10-05 Philippe Brochard <pbrochard@common-lisp.net>
2525 * bindings.lisp (accept-motion): Move group bugfix in upper mouse
2526 workspace circulation.
2528 * clfswm-util.lisp (absorb-orphan-window): new function.
2530 * clfswm-keys.lisp: Keysyms support.
2532 2006-10-02 Philippe Brochard <pbrochard@common-lisp.net>
2534 * clfswm.lisp (show-group): Use one gc for all groups and not one
2537 2006-10-01 Philippe Brochard <pbrochard@common-lisp.net>
2539 * bindings.lisp (define-second-key (#\l :mod-1)): fix a typo.
2541 * clfswm.lisp (adapt-window-to-group): Adapt only windows with
2542 width and height outside group.
2544 2006-09-28 Philippe Brochard <pbrochard@common-lisp.net>
2546 * clfswm.lisp: First public release.