]> git.decadent.org.uk Git - ion3.git/blob - RELNOTES
Merged all changes to use x-terminal-emulator into 206_use-xterm.diff.
[ion3.git] / RELNOTES
1
2 ion-3rc-20070720
3 ----------------
4
5 This fourth "rc" release fixes some minor bugs and omissions in
6 the previous release.
7
8
9 ion-3rc-20070708
10 ----------------
11
12 This third "rc" release again simply fixes some minor problems in 
13 the previous release.
14
15
16 ion-3rc-20070608
17 ----------------
18
19 This is the second "rc" release, and contains primarily bug fixes
20 and other minor improvements.
21
22
23 ion-3rc-20070506
24 ----------------
25
26 This is the first "rc" or "(stable) release candidate" release of 
27 Ion3. This means that there will not be any further major changes 
28 to it. Bugs will be fixed, and as an exception to the general 
29 feature freeze, some hooks may still be added, if deemed useful.
30 Translations may also be included. After no new bugs (that can not
31 be deemed features) have been found in this or following "rc" 
32 releases, the stable Ion3 will be released.
33
34 Most of the changes in this release to the previous one already
35 are bug fixes, in addition to some general clean-up. Other notable
36 changes are:
37
38   * Winprop matching improvements: it is possible to match against
39     `is_dockapp` and `is_transient` (booleans), and there's a hack
40     to support `class` and `instance` for dockapps too.
41
42   * The default configuration puts dockapps in the statusbar's
43     tray area.
44
45   * The autoconf kludge has been removed, as I will have nothing
46     to do with it, and nobody else seems to support or maintain 
47     it either.
48
49   * Tab numbers are displayed when releasing modifiers in the
50     `Mod1+K` submap.
51
52 Distributors should pay heed to the name policy notice in the
53 LICENSE file.
54
55
56 ion-3ds-20070318
57 ----------------
58
59 This may be the last "ds" release if Ion3; if all goes well, the next
60 release is likely to be an "rc". Some minor improvements will still 
61 be done, and minor requests may be accepted, so be quick.
62
63 The most notable changes in this release from the previous one are:
64
65   * Transients and queries in too small frames are "unsqueezed" out
66     of them, unless disabled with `ioncore.set{ unsqueeze = false }`.
67
68   * Some changes in default `cfg_ion.lua`: instead of loading 
69     various other files, just `cfg_default.lua` is loaded instead.
70
71   * `mod_tiling.untile` (available in the context menu) may be used 
72     to decompose tilings into floating frames. (This is the approximate
73     opposite of `mod_tiling.mkbottom` and the "new tiling" context menu 
74     entry.)
75
76   * Improved context menus.
77
78   * Slightly improved defaults style, using the drawing engine's
79     added possibility of partial borders.
80
81   * Various fixes and other improvements, in particular in relation
82     to focus code.
83
84
85 ion-3ds-20070203
86 ----------------
87
88   * There's been changes in padding/spacing usage in styles. Frames
89     now surround stuff inside borders not with `spacing` pixels, but
90     with `padding_pixels`. Spacing is only used to space things within
91     the borders (all the tabs and the client window from each other).
92     Consequently, custom styles may need to be updated to reflect this,
93     by increasing the padding, possibly also altering/removing colour 
94     (to set it to background colour). 
95
96   * The use of drawing engine attributes has also changed, and strict
97     ordering of them in the styles is no longer necessary. Additionally,
98     much more attributes are supported, including the name of every
99     statusbar meter.
100
101   * Xinerama support is gone. In addition to being problematic as such,
102     it had bit-rotted, and I will not waste time fixing it.
103
104   * `ioncore.set` no longer supports the `default_ws_params` parameter
105     for configuring the default layout. It is replaced by
106     `ioncore.deflayout("default", { ... })`, which allows configuring
107     other layouts as well, known by `mod_query.query_workspace` (F9).
108     Some default layouts are configured in `cfg_layout.lua`.
109
110   * It is now possible to automatically create new workspaces for
111     windows with the `new_group` winprop.
112
113
114 ion-3ds-20061223
115 ----------------
116
117 There's nothing major in this release, primarily just some minor fixes 
118 and tuning to the previous release, that it was time to release.
119
120
121 ion-3ds-20061029
122 ----------------
123
124 Mostly this release still fixes issues in the big 3ds-20061015 release,
125 but in addition there are some improvements in the query department:
126
127  * Query activation key now cycles completions (So e.g. the
128    in the context menu activated with META+M, this same key
129    can be used to cycle through the alternatives.) This does
130    not work for queries activated by submap bindings.
131
132  * Likewise, it is no longer necessary to specify the key to
133    use for cycling for `mod_menu.grabmenu`.
134
135  * Control+R can now be used for history completion in queries.
136    (Currently matching is done for full string up to 'point', but 
137    this may be changed to substring match.)
138
139  * Note that the parametrisation of WEdln.complete has changed,
140    and the second cycle parameter must be 'next' now instead of
141    `true`.
142
143
144 ion-3ds-20061020
145 ----------------
146
147 Fixes some (expected, but minor) issues in the previous release.
148
149
150 ion-3ds-20061015
151 ----------------
152
153  * WIonWS and WFloatWS and the corresponding modules are gone, and
154    your custom configuration files will be broken with regard to these.
155    However, a partial backwards compatibility hack exists for layout 
156    savefiles.
157
158    The F9 and META-F9 bindings now by default create workspaces with
159    a tiled layout of two frames. To create an "empty" workspace,
160    corresponding to the old WFloatWS, use the context menu (META-M)
161    and choose "new-empty-workspace". It is also possible to change 
162    the default layout.
163
164  * Note that if you restart from an old version to this new version of Ion,
165    transients will stop working as expected for already existing windows.
166    They will work for newly-created windows, however.
167
168  * There are a few new sets of binding (including one for `WClientWin`!),
169    and some old bindings may not work exactly as expected anymore. In
170    particular, those for switching to full-screen mode. 
171
172    **It is probably best to start from scratch with your custom 
173      bindings.**
174
175  * `WFrame.set_tabbar` is gone. If you absolutely want to get rid off 
176    the tabs, you must change the frame's "mode" with `WFrame.set_mode`. 
177    The mode "tiled-alt" has been intended for this, and the corresponding
178    "framed-tiled-alt" style defaults to `bar = "none"`.
179
180  * The rather popular `detach.lua` script from the scripts repository
181    is obsoleted now, as Ion includes detach functionality in itself.
182    To detach a window, use META-K D in the default bindings. To tile
183    an existing frame from a workspace that doesn't have a tiling yet,
184    use META-K B.
185    
186
187 ion-3ds-20060519
188 ----------------
189
190 Some notable changes in this release include
191
192  * Lua 5.1 is now required.
193
194  * Framed transients on by default now. New binding contexts
195    "WFrame.toplevel" and "WMPlex.toplevel" were added to allow
196    for separate sets of bindings for nested transient frames and
197    top-level frames. Some of the bindings in the default binding
198    maps that are likely to be unwanted on transient frames were
199    moved to these contexts. Old custom bindings will continue to 
200    work unless they modify the defaults by unbinding some of the
201    moved bindings.
202
203  * Pressing Mod1+K K in the default bindings now switches to any
204    region with the "activity" flag set (indicated by the a box
205    at a corner of the screen), if there's one, before cycling to 
206    previously active region. The same effect can be achieved in
207    your custom bindings with
208
209         ioncore.activity_goto() or ioncore.goto_previous()
210
211
212 ion-3ds-20050607
213 ----------------
214
215 This release mostly features minor bugfixes and other improvements. The most
216 visible non-bugfix changes are:
217
218  * Faster "fontset" filling kludge: only `-misc-fixed-*` fonts are tried. Ion
219    should now load faster in UTF-8 environments, and usually with no less
220    fonts in the fontset than before. (UTF-8 string drawing still does not
221    fully utilise these fonts under XFree86, but it does under XOrg.)
222
223  * Experimental auto-show-completions support, which is also on by default
224    now. In this mode the Tab key can be used to cycle forward through the
225    completions, and Shift+Tab backwards. Modify the settings seen in the 
226    new `mod_query.lua` to get normal Tab-completion, or change the completion
227    delay.
228
229  * The release scripts do not run automatically autoconf anymore so maybe
230    a few more people would look into the README first.
231
232
233 ion-3ds-20050322
234 ----------------
235
236 The most visible changes in this release are:
237
238  * Mod1+space now toggles the scratchpad by default and Mod1+D the dock.
239
240  * The `ion-(ssh|man|view|edit)` wrapper scripts were removed and instead
241    the programs used can be configured in Ion's configuration files.
242
243  * `ioncore.exec(_on)` also support the `:cmd` notation for "run cmd in 
244    xterm" familiar from the run query. The `::cmd` notation can be used 
245    to ask for enter to be pressed even when the program quit succesfully.
246
247  * Those with custom configuration files should note that many exported toggle
248    functions were changed and renamed, and now accept a string parameter
249    incidating whether to toggle, set or unset the property.
250   
251     - `WClientwin.set_fullsreen` (replaces `WClientWin.toggle_fullscreen`)
252     - `WRegion.set_tagged` (replaces `WRegion.tag/untag/toggle_tag`)
253     - `WFrame.set_tabbar` (replaces `WFrame.toggle_tabbar`)
254     - `WFrame.set_shaded` (replaces `WFrame.toggle_shade`)
255     - `WFloatFrame.set_sticky` (replaces `WFloatFrame.toggle_sticky`)
256     - `WMPlex.l2_set_hidden` (replaces `WMPlex.l2_hide/show`)
257     - `mod_sp.set_shown(_on)` (replaces `mod_sp.toggle(_on)`)
258     - `mod_dock.set_floating_shown_on` (replaces `mod_dock.toggle_floating_on`)
259     - `WRegion.set_activity` (replaces `WRegion.clear_activity` and 
260       `WRegion.notify_activity`)
261       
262    For example, `WRegion.set_tagged(_, 'toggle')` should be used in place of
263    `WRegion.toggle_tagged(_)` now.
264
265 Obviously there are some other changes and fixes too. See the changelog
266 for details as usual.
267
268
269 ion-3ds-20050304
270 ----------------
271
272 This is mostly a bug fix release, but also features improved
273 `mod_query.query_exec` (F3 key) completion support. Script writers should be
274 aware that As a side effect of one of these bug fixes, many hooks are now 
275 called in "protected mode" and can not call any functions that modify the 
276 internal state of Ion, except ioncore.defer.
277
278
279 ion-3ds-20050227
280 ----------------
281
282 The most important changes in this release are:
283
284  * So-called "placeholders". With the help of these the positions of
285    full-screen windows are remembered in their original frames, and don't
286    just get inserted after currently active window when returning from 
287    full-screen mode. Under a session manager placeholders are also used
288    to remember the original order of windows.
289
290  * Improved `mod_statusbar` and `ion-statusd` communication, and colouring
291    of important/critical meters.
292
293  * A number of small fixes.
294
295
296 ion-3ds-20041104
297 ----------------
298
299 This monthly snapshot adds a few new and improved features.
300
301  * 'Grabbed menus' that have a single cycling key and activate selected
302    entry when all modifiers have been released. See
303
304    <http://iki.fi/tuomov/repos/ion-scripts-3/scripts/wcirculate.lua>
305    
306    for an application.
307
308  * Potentially blocking status meters are now in a separate ion-statusd
309    program. Please write your additional status meters that do not monitor
310    the state of Ion itself for ion-statusd (and contribute them in the
311    Ion3 scripts repository at <http://iki.fi/tuomov/repos/ion-scripts-3/>).
312    For help on writing such status meters, see e.g. source for
313    `statusd_load` in `ext_statusbar/ion-statusd`.
314
315  * Floating splits are now supported on plain tiled workspaces as well as
316    on pane workspaces. To create such a split, use the workspace context
317    menu (Mod1+M by default) or write your own bindings.
318
319  * Line editor now supports history search; Control+Up/Down only scrolls
320    through history entries with matching initial part.
321
322  * Arbitrary winprop matching criteria is supported. Lua scripts have
323    access to X properties.
324  
325 Of course there are some other minor fixes and improvements as well.
326
327
328 ion-3ds-20040906
329 ----------------
330
331 This release finally includes a usable (yet still incomplete) version
332 of the `mod_panews` workspace module (that has also bored the name 'autows'
333 and 'rubberws' previously). The final outcome is not exactly what I
334 initially planned, as those plans turned out not to be that workable.
335 Instead, what `mod_panews` does is add to the basic tiled ionws approach
336 overlappable splits and automatically filled panes that are initially
337 empty. Each window is classified and assigned to the pane matching that
338 classification. (The default classifications are T(erminal), V(iewer)
339 and M(iscellaneous).)
340
341 For a better feel for it, try it out yourself and please give feedback.
342 The overlapping panes may be a bit confusing (this is one place where
343 true translucency might actually be useful and not just eyecandy) at
344 first, but you'll get used to them if you use the feature, and e.g.
345 the Gimp works quite splendidly with the toolboxes in the 'M' pane and
346 image windows in the 'V' pane --  although the simple initial size-based
347 classification heuristics don't always get it right and overriding
348 winprops (setting: `panews_classification`) should eventually added. 
349
350 In addition to the new module, this release adds support for translations
351 of program messages and the manual page, regardless of whether such is
352 of any use in a program like Ion or not. (Currently Finnish and Czech
353 translations are available.) Of course there are some bug fixes and
354 other minor additions as well, and the `./configure` script is also back,
355 the abandonment of libtool being final now. 
356
357
358 ion-3ds-20040730
359 ----------------
360
361 The first thing you'll notice when you start up this release of Ion is
362 that isn't reading your old configuration that. The next thing you 
363 should notice is a neat layout-adapting statusbar at the bottom of the
364 screen. That's right, Ion now includes an `ext_statusbar` Lua script that
365 is enabled by default and displays date/time/load/mail count in a
366 configurable format.
367
368 So why is it not reading your configuration and save files? Firstly,
369 all of the `.lua` files were renamed to be indicative of their purpose.
370 Secondly, there have been so many changes that your old files would be
371 incompatible anyway.
372
373 The `.lua` files are now named as follows:
374
375     cfg_*.lua    Configuration file that the user may wish to edit
376     look_*.lua   Drawing engine style file
377     saved_*.lua  Save file
378     mod_*.lua    Module stub loader
379     ext_*.lua    A bigger Lua extension without a C counterpart
380                  so that it is not a module
381                  
382 The configuration file for `mod_foobar` or `ext_foobar`, if it has one, is,
383 of course, `cfg_foobar.lua`. In the topic of file names, also note that 
384 the default installation paths and binary names have changed to include
385 the component '3' to reflect the situation with many binary packages
386 of Ion.
387
388 You perhaps noticed above that modules have stub loaders now, so the 
389 user has no need to use the `ioncore.load_module` routine. All extensions
390 and additional configuration files can now be loaded  with 'dopath'
391 (used to be 'include'). Also, the `menulib`, `querylib`, and `ioncorelib`
392 Lua libraries are gone and instead their contents can be found in the same 
393 `mod_whatever` namespace with the corresponding module (the "stub" loader
394 for these modules is a bit more than just a stub...). Some may also
395 want to know that for `mod_*` and `ext_*` only the compiled .lc files are
396 now installed, and not the source `.lua` files, thus removing redundant
397 files and making the installation slightly smaller.
398
399 There are few other changes to the contents of the configuration files
400 as well, so you're probably best off simply rewriting your modified
401 configuration files based on the new defaults. There quite likely won't
402 be any more _big_ changes to the configuration files before the release
403 of final Ion3, wherever that will be. (Most likely we won't see 3rc:s
404 yet this year.) However, some functions and variables are still likely
405 to be renamed or changed.
406
407 In addition to being renamed, the layout savefile of this Ion release
408 is incompatible with older releases. This is due to the changes made
409 to the `WIonWS` (and `WAutoWS`) split tree code to make it more modularly
410 extensible with the new kinds of nodes that `WAutoWS` requires.
411
412 The `mod_autows` module has infact been through many changes since the 
413 last release, and I think I have the final form of it finally figured
414 out. However, it is still far from finished and unlikely to be ready 
415 for use yet.
416
417
418 ion-3ds-20040703
419 ----------------
420
421 The major new features of this snapshot release are:
422
423  * `WMPlex` support for a sticky status display area to which `WIonWS`s
424    adjust properly. Modified to the dock module to support this method. 
425    See the new `dock.lua` to set up the dock in the new embedded or old 
426    floating manner (the API for the latter has also changed).
427  * Primitive session management support.
428
429 There are also some bug fixes and many minor improvements; see the ChangeLog
430 for details. Work on `mod_autows` has also started, but it isn't ready for 
431 use yet.
432  
433
434 ### Note on ./configure:
435
436 ./configure does not exist for the moment as the source autoconf script
437 is not up-to-date. Ion no longer uses libtool/libltdl due to problems
438 with inter-module dependencies, and I have not asked Tom Payne to fix
439 the script yet, as this change may not be final (although that is most
440 likely the case; those without Linux-compatible libdl and a flexible
441 binary format such as ELF will just have to link statically against the
442 modules).
443
444
445 ### Notes on session management:
446
447 Ion loads `mod_sm` automatically when the SESSION_MANAGER environment 
448 variable that should be set by the session manager is set, so there's 
449 no need load it in `ion.lua`. 
450
451 When session management is in use, all entries in the 'Session' menu
452 (previously 'Exit' menu) actually invoke the session manager to do the
453 task. 'Save' asks the SM save the whole session and 'Exit' (ioncore.shutdown)
454 asks it to shut down the session instead of just causing the WM to quite.
455 To do the latter, use ioncore.resign.
456
457 Unfortunately, all session managers I have tried (from Debian/unstable), 
458 are broken/incomplete in one way or another:
459
460
461 xsm: doesn't support any requests from applications. This makes Ion's
462 session menu complete unfunctional. The only way to restart/exit/save
463 state is through xsm's window.
464
465
466 gnome-session: This seems the most complete of the all the session managers
467 and works fine until it is requested to shut down the session, when it dumps
468 core and session state is lost if was not explicitly saved previously.
469
470 A `~/.gnome2/session` file to use with Ion follows:
471
472     [Default]
473     num_clients=2
474     0,id=default0
475     0,Priority=0
476     0,RestartCommand=gnome-smproxy --sm-client-id default0
477     1,id=default1
478     1,Priority=10
479     1,RestartCommand=/usr/local/ion-3/bin/ion -smclientid default1
480
481
482 ksmserver: Only supports a global shutdown request, so that Ion can not be
483 restarted or session state saved in the middle of a session.
484
485
486 ion-3ds-20040316
487 ----------------
488
489 This is the first development snapshot release of what is to be Ion3. 
490 The most visible changes to Ion2 so far are:
491
492   * Default installation directory is `/usr/local/ion-3` while user
493     configuration files go in `~/.ion3`
494
495   * The `mod_sp` module was added. It creates an extra toggleable 
496     "scratchpad" frame on each screen. Toggle is for now bound by default 
497     to Mod1+section, which should be very conveniently located on most 
498     Nordic keyboards (left of "1"), but you may have to change it. The 
499     scratchpad should be nice for xconsole or similar monitors, xmessage 
500     and other popups and just as temporary holding space for windows.
501
502   * All modules except the drawing engine are now called `mod_something`.
503
504   * Man-page complection supports a cache of known man-pages for faster
505     completion. See the README for instructions on setting up a cronjob
506     or manually generating the index if you want to use the feature.
507     Also `query_man_path` is no longer used. Instead we try the 
508     `ION_MC_MANPATH` and `MANPATH` environment variables and the 
509     'manpath' program.
510
511   * Exported functions are now separated into tables (namespaces)
512     instead of cluttering the globals table. Some frequently used
513     configuration functions are imported into the globals table, though.
514     Some functions have also been removed or renamed for simpler and
515     more consistent function set.
516
517   * New binding configuration mechanism. Dozens of `*_bindings` functions
518     were replaced with a single `[ioncorelib.]defbindings` function that
519     accepts a context parameter. Callbacks are specified as strings
520     (although passing functions still works) to make it easier for
521     external configuration programs to understand the configuration 
522     files and perhaps remove some confusion among users who do not
523     care to read a tiny bit of Lua documentation and understand the
524     concept of anonymous functions.
525
526   * It is now also possible to retrieve a list of bindings with
527     `ioncorelib.getbindings`, for example, for self-documentation.
528
529   * Single move/resize mode bindings instead of separate for both
530     ionframe and floatframe.
531
532 There are also quite a few internal changes; see the ChangeLog for
533 details. No documentation tarball is available at the moment as the
534 documentation is out-of-date except for the function reference. If 
535 you need the reference, just checkout the documentation from the 
536 Subversion repository with
537
538     svn co http://tao.uab.es/ion/svn/ion-doc/trunk ion-doc-3ds
539
540 and build the documentation.
541
542
543 ion-2rc-20040114
544 ----------------
545
546 This release is finally what can be called "Ion 2 release candidate #1". 
547 No more new features will be added to "Ion 2" after this release, and the
548 configuration interface has already been frozen for a while. I will wait a
549 couple of weeks for bug reports, and if nothing serious is found, the new
550 stable Ion should finally be released then.
551
552 The most notable changes since the previous release are:
553
554   * The dock module is included
555   * An optional autoconf script was added
556   * A few minor bugs were fixed
557   * Some incomplete features were polished, especially focus control on
558     floatws, and:
559   * Changes in X keyboard map are supported now (so e.g. switching to 
560     dvorak after Ion has started should update the bindings to match the
561     locations of symbols in the dvorak layout).
562
563
564 About the version numbering scheme:
565
566 Due to a demand of a version numbering scheme more indicative of the status
567 of the project, I was thinking of various different new version numbering 
568 schemes for this release: ion-2rc1 (then 2r1, 3d1, etc.), ion-2-20040114-rc1, 
569 ion-2.20040114rc1, ion-20040114-2rc1, etc.). It would've been nice if 
570 simple  lexicographical sorting could be used to order the packages, but 
571 in the end I decided to stick with a scheme that is consistent with the
572 'ion-devel' package names:
573
574     project-branch_and_status-release_date
575
576 Therefore this release is 'ion-2rc-20040114', and the "stable" one will be
577 'ion-2-20040???'.
578
579
580 ion-devel-20031211
581 ------------------
582
583 This is a big clean-up release. The most noticeable changes are that 
584 '-devel' has been removed from path names, user configuration files go
585 in `~/.ion2/` and the main configuration file is 'ion.lua'. (The other 
586 `ioncore-*.lua` files have also been renamed.) There have been no notable
587 changes in the configuration files themselves, so your old files will 
588 work if you move them to the correct directory and rename the changed
589 files. (`mv ~/.ion-devel ~/.ion2; cd ~/.ion2; mv ioncore.lua ion.lua;`
590 etc.)
591
592 This release also finally contains a working PWM binary. (The ioncore+
593 scripts scheme was replaced with separate binaries statically linked
594 to ioncore.a.) Floating workspaces now support edge snapping and 
595 sticky windows, but some PWM features are probably still missing.
596
597 Some bugs were also fixed and users are now force-fed the manual page 
598 the first time Ion is started. Transients can be toggled between
599 top/bottom of the main window with Mod1+K T. The SSH query uses
600 `~/.ssh/known_hosts` for completion instead of a manually defined list.
601
602 There may be a few additions (e.g. the dock) and bug fixes, of course,
603 before the stable release, but this release should pretty much be what
604 the new "stable" Ion should look like. Please upgrade to it to help
605 weed out the bugs. Note that you need to upgrade Lua to the 5.0.1 
606 pre-release.
607
608
609 ion-devel-20031119
610 ------------------
611
612
613 It's finally time for a new release on Ion's development branch. Most
614 likely this will also be the last "big" release before finally, after
615 almost two years, releasing a new "stable" version of Ion. A few bug 
616 fix and code clean-up releases should appear in between, though.
617
618 The most important additions, changes and non-changes in this release
619 are:
620
621   * Menu module
622   * A little less broken extended character set and string encoding 
623     support
624   * Extended WM hints fullscreen request support
625   * Hopefully a little clarified configuration file layout
626   * Quite a few fixes
627   * And most important of all:
628
629 >    Configuration files written for the previous release should
630 >    still work this time!
631
632 (However, Ion will complain of old drawing engine styles.)
633
634 The menu module provides both drop-down menus (in the stock configuration
635 pressing Button3 on a tab should show a context menu) and query-like 
636 "in-mplex" menus (F12: main menu at screen level; Mod1+M: the same context 
637 menu as above at frame level).
638
639 What was done enhance support for strings (mostly window titles) in 
640 languages that need more than 8-bit character sets is:
641
642   * Remove UTF8 restriction and support almost arbitrary multibyte 
643     encodings instead. (Statefull encodings will not work and combining 
644     characters can cause clutter. Both are a sign of bad encoding, IMHO.)
645
646   * The XCreateFontSet routine that is used to load fonts in the kind
647     of structure the X utf8 and multibyte routines want apparently wants
648     to be able to load glyphs for all character sets specified in the 
649     locale and therefore often fails if only single font is specified. 
650     Therefore a kludge was added that tries loading more fonts while 
651     keeping the fonts' size the same. (The ",*" kludge could load huge
652     fonts). Unfortunately this has a noticeable effect in startup time :(.
653
654   * There is no longer a system.mk option to enable utf8 (now multibyte)
655     support, but must still specifically be enabled with the -i18n
656     command line switch, mostly thanks to troublesome utf-8 locales.
657
658 Because Xlib's UTF-8 string drawing code is broken and very unlikely to 
659 be fixed, decent text output in an UTF-8 locale is still unlikely and 
660 dependent on the fonts loaded in the system. The Xmb routines that are now
661 used always use an iso10646-1 font even if other fonts are loaded and the 
662 unicode font does not contain a particular glyph to be drawn. The use of 
663 the Xutf8 routines  in an utf8 locale can be enabled with the
664 `CF_DE_USE_XUTF8` compile-time  option. The advantage of this is that 
665 these routines seem to choose the font to draw particular character in 
666 most cases more sanely. The downside is that there are other more serious
667 problems with unknown characters.
668
669 All in all, even if I'd like to support a universal move to UTF-8, thanks 
670 to Xlib brokenness I can't really recommend using UTF-8 locales with Ion 
671 and the default drawing engine if there's a decent alternative encoding.
672 Most if not all other stateless encodings shouldn't have the problems 
673 UTF-8 has. An alternative drawing engine that didn't use the Xlib i18n
674 string drawing routines might solve the troubles with utf-8 support.
675
676 One more note:
677
678 If you have saved a custom system.mk, you'll need to set LUAC
679 point to the Lua compiler there as some of the share/ files
680 are compiled now.
681
682
683 ion-devel-20030810
684 ------------------
685
686 It's been a while since the previous release as I wanted to freeze the
687 Lua configuration/scripting interface for this release and therefore 
688 finish work on a few things. Well, on my part the interface is frozen,
689 but I will still accept constructive complaints for a short time and
690 after that the implemented parts of the scripting interface will be 
691 frozen. But in all likelihood, if no one has anything else to say, but
692 "it's ok", "it sucks", the interface will no longer change, only possibly
693 grow.
694
695 What's new for this release then?
696
697   * Drawing engine module support.
698   * OO-style exported functions. The old `class_fn` functions are now
699     `WClass.fn` (an ugly wrapper is provided in `compat.lua`).
700   * No more screen-specific configuration or savefiles.
701   * Session name (can be specified on command line) instead of display
702     name based savefiles. Also affects query history and not just workspace
703     saves.
704   * Bug fixes, most small and one bigger (almost complete rewrite of 
705     the split resizing algorithm).
706   * Some documentation improvements.
707
708 Converting configuration files.
709
710 Old `.lua` colour schemes and workspace save files can be automatically
711 converted to a format suitable to be loaded by this latest release.
712 Other files will have to be ported manually. To convert colour schemes,
713 use the script `utils/lookconv.lua`. The usage is
714
715     lookconv.lua look-old.lua > look-new.lua
716
717 To convert workspaces savefiles, use the script `utils/saveconv.sh`. 
718 The usage is
719
720     saveconf.sh ~/.ion-devel/saves/workspaces-DISPLAY.*.lua \
721         > ~/.ion-devel/SESSIONNAME/workspaces.lua
722
723 `DISPLAY` here is the actual display part of `$DISPLAY`, probably just `:0`.
724 '*' stands for all screens (if you have only one screen you could do with
725 perhaps just `workspaces-:0.0.lua`). SESSIONNAME is the name of the session
726 where you want to use the converted savefiles. Default session name for
727 `DISPLAY` is `default-session-DISPLAY` with the colon in `DISPLAY` converted
728 to a dash. For most people this is `default-session--0`. In the simplest
729 case the whole command line is therefore
730
731     saveconv.sh ~/.ion-devel/saves/workspaces-:0.0.lua \
732         > ~/.ion-devel/default-session--0/workspaces.lua
733
734 The scripts may or may not work and are only provided as a potential
735 convenience that will not be maintained and will be removed eventually.
736
737
738 ion-devel-20030623
739 ------------------
740
741 Quite a few bug fixes and one most likely unnoticeable improvement:
742
743 2003-06-23:
744
745   * Fixed pointer warping on screen change.
746   * A bug in grab handler calling code could crash Ion when leaving
747     keyboard resize mode manually.
748   * Resize display was showing incorrect values for keyboard resize.
749
750 2003-06-21:
751
752   * Client window last height request bookkeeping code had been lost
753     when configure request policy was changed. This caused transient
754     sizes to be calculated incorrectly.
755   * Return from full screen mode to floatws had been broken.
756   * As the number of dynamic functions has been getting bigger, the
757     functions are now sorted on first use and then binary-searched
758     instead of naive linear searching.
759   * Screen lookup had been broken for windows that are not properly
760     on any screen.
761
762
763 ion-devel-20030620
764 ------------------
765
766 Just some bug fixes and minor behavioural changes and improvements in
767 this release:
768
769
770 ion-devel-20030617
771 ------------------
772
773 This release fixes some small problems with the previous release and
774 adds a workaround kludge for the XFree86 textprop bug (it's been fixed
775 but no release with the fix is available) that could cause Opera to 
776 crash Ion when UTF8 support was enabled. I also added the winprop
777 needed for galeon's find dialog to default `kludges.lua` and there's
778 some extra documentation and defaults for some systems in system.mk.
779
780
781 ion-devel-20030614
782 ------------------
783
784 Most changes in this release centre around making Ion more tolerant
785 to broken configuration files; for details see the ChangeLog. There
786 are also changes in binding configuration as I already mentioned in
787 an earlier poting. Namely `common-frame-bindings.lua` is gone and the
788 bindings previously set there (into variables that the `*ws.lua`
789 files later referenced) were moved to `ioncore-bindings.lua` and are
790 set using the new functions `mplex_bindings` and `genframe_bindings`
791 are were  added. Old modified configuration files should still work,
792 however, but if you use `make_active_leaf_fn`, you will need to 
793 include `compat.lua` as the `global_bindings` that used this were
794 replaced by bindings in `mplex_bindings` and the function
795 `make_current_clientwin_fn`.
796
797 There are also some (minor) bug fixes and a few other improvements 
798 worth a mention. In particular all regions are now given names of 
799 the form  `WFoobar<n>` by default and `DEFAULT_MOD.."F9"` was bound to 
800 create a new workspace without asking for a name. This binding and 
801 `QueryLib.query_workspace` use the workspace type defined in the 
802 variable `default_ws_type` instead of being hardcoded to `WIonWS`.
803
804 All objects passed to Lua now have a unique userdata (a `WWatch` 
805 cached in a weak table) so they can be used e.g. as indices to tables. 
806
807
808 ion-devel-20030606
809 ------------------
810
811 This release unifies some parts of `WScreen` and `WGenFrame`, which makes
812 screen-level queries possible. (Later the queries for small frames might
813 be changed to be shown at screen level.) The statusbar restriction from
814 ion-devel-20030531 was also removed by this some change and a few
815 non-fatal bugs have been fixed.
816
817
818 ion-devel-20030601
819 ------------------
820
821 A bug was discovered:
822
823 2003-06-01:
824
825   * An off-by-one error in `extl_l1_finalize` caused references to some
826     Lua tables (including large completions) never to be released.
827
828 It could be that this bug was causing some other errors in Lua as well.
829 Sometimes QueryLib bindings failed because some function generators
830 returned nil although they shouldn't. Adding dummy lines (!) in those
831 functions fixed the problem and for some reason this patch also seemed
832 to remove those problems.
833
834
835 One more note: as `ioncorelib.lua` and `querylib.lua` are now installed
836 in `$SHAREDIR`, you must remove the old files in `$ETCDIR` if installing
837 over a previous release or else there will be errors. You should also
838 not use any possible old copies you have in `~/.ion-devel/`. (One of the
839 reasons for moving these to `$SHAREDIR` is to stop users from making
840 copies of them as they are not configuration files.)
841
842
843 ion-devel-20030531
844 ------------------
845
846 As the subject line says, Ion-devel-20030531 was just released. The short
847 list of changes is:
848
849  * The license was changed from the Clarified Artistic License to the
850    GNU Library/Lesser General Public License (LGPL).
851  * Screen, viewport and root window renames and other changes (see below).
852  * Some installation directory changes; the ion-* helper programs are now
853    installed either in `$SHAREDIR` or `$EXTRABINDIR` and QueryLib searches 
854    for them on the script path (`~/.ion-devel/`, `$ETCDIR`, `$SHAREDIR`, 
855    `$EXTRABINDIR`) instead of assuming them being on `$PATH`.
856  * Client windows are now in a separate namespace.
857  * Resize/maximize/shade changes: Shading should work on `WIonFrame`s too
858    and shade mode is automatic when the client area gets too small when
859    resizing. Maximize toggle restores frame to previous size if shaded
860    instead of maximizing. The move/resize mode bindings were changed again
861    to be more consistent and predictable: Left/Right/Up/Down and F/B/P/N
862    grow the frame in the specific direction, Shift+keys shrink and in
863    case of floating frames, `DEFAULT_MOD+keys` move
864  * Returning from full screen mode should work on `WFloatWS`s too.
865  * Lots of minor fixes, export additions and clean-up.
866
867 As usual, see the (long!) list of new ChangeLog entries at the end of
868 this message for details.
869
870
871 I've finally personally switched from the old "stable" 20020207 to using
872 the latest development release at home too and I must say that it is
873 finally starting to look good. There are still things to be written, but
874 unless you need "proven" stability, I see no reason to sticking to that
875 old release anymore. Unless, of course, if you find a problem that I have
876 not encountered or simply have no need for the new features and don't want
877 to port your configuration files.
878
879
880 On screens, viewports, root windows and problems with the new
881 implementation
882
883 The objects previously called "screens" are now called "root windows"
884 and what were called "viewports" are called "screens" to better reflect
885 what the user sees. (When Xinerama is not used there's no difference
886 between a root window and a screen, but when Xinerama is used a root
887 window may be split over multiple screens.)
888
889 This release also creates so-called virtual root windows for each
890 Xinerama screen when there are more than one. This is to better separate
891 the windows on different screens and thus emulate normal multihead, the
892 main difference being that windows can be moved between screens.
893 Especially the virtual roots are there to keep the windows that are on
894 a floatws on the right screen.
895
896 Virtual root windows will, however, break a few apps:
897
898  * Mozilla -remote won't work because of its crappy method for looking
899    up existing windows that can't handle multiple levels of WM windows.
900    Nested workspaces have the same problem. There is, however, a simple
901    solution to this problem: gnome-moz-remote. It seems to use a saner
902    method for looking up an existing Gecko browser and also works with
903    at least Phoenix/MozillaFirebird and Galeon.
904
905 These two are problems only if you use floatws:s (other problems with
906 which virtual root windows are intended to solve):
907
908  * The background-setting apps I am aware of will require a following
909    'xrefresh' for the changes to be updated to the (transparent) virtual
910    roots. Background setting apps that support the `_NET_VIRTUAL_ROOTS`
911    property (which, I think, was meant for root window-sized WS 
912    backgrounds) could be used to set a separate background for each
913    Xinerama screen, though. I am not aware of any such app.
914  * Some apps' resize and move features will behave erratically on those
915    Xinerama screens not at (0, 0) on the root window. This is again
916    because the apps are assuming there's at most one WM window between
917    them and the root and are requesting windows' positions incorrectly.
918    The ICCCM is quite vague on this and I think _all_ apps that I have
919    tried are doing it wrong but the way e.g. XMMS does it certainly is
920    not an interpretation of the ICCCM. The apps that now behave correctly
921    request position for the outermost WM window. Nested workspaces have
922    the same problem.
923
924 There is one more temporary problem:
925
926  * Status bar modules (and the dock module's statusbar mode) will be
927    *temporarily* broken when virtual roots are _not_ used. This will be
928    fixed later when parts of screen and frame code are unified (it should
929    then be possible to run Ion without any workspace modules and have
930    queries attached to screens). In the meanwhile, if you don't care about
931    the above-mentioned problems and want a statusbar (which probably needs
932    to be ported to this release), you can defined `CF_ALWAYS_VIRTUAL_ROOT`
933    when compiling Ion.
934
935
936 ion-devel-20030510
937 ------------------
938
939 There are quite a few small fixes and minor enhancements invisible to
940 the user in this release. The splitting functions were renamed to be
941 more consistent and there are a couple of enhancements in the Lua code
942 query that should make it much more usable. First, tab-completion can
943 now descend into tables and complete subexpressions. Secondly, the local
944 variable `_` in addition to 'arg[1]' is set to point to the the frame in
945 which the query is executing. 
946
947 I have also written some new documentation that is now available from
948 the Ion web page.
949
950
951 ion-devel-20030506
952 ------------------
953
954 The most notable change in this release is that the `target_id` system
955 was removed and instead client window status is also saved over
956 restarts in the saves/workspaces-* files. (It shouldn't be too hard
957 to hook a session management module over this.) Thanks to this
958 modification, floatframes can also save their status now. Note
959 that if you restart from older version of Ion to this one, client
960 window layout will be messed up.
961
962 There are also a few bug fixes and code to save and load line editor
963 history was added.
964
965
966 ion-devel-20030503
967 ------------------
968
969 There are lots of minor improvements in this release, see the
970 new ChangeLog entries for details.
971
972
973 ion-devel-20030427
974 ------------------
975
976 Some minor feature enhancements and a few fixes in this new release:
977
978 The file system scanning completions are now put in the background
979 by receiving the data from external programs through pipes and select()
980 for data in the main event loop. This way long taking completions don't
981 block Ion from processing other events and NFS problems shouldn't hang
982 it.
983
984 Basic window stacking management support code was added. Transients
985 on floatws:s should now be stacked above their parents. If you don't
986 want to change your modified binding configurations at this point and
987 need the functions `floatframe_raise/lower`, include `compat.lua`.
988
989
990 ion-devel-20030412
991 ------------------
992
993 This release again fixes some minor problems and enhances a few
994 features. Most of the enhancements are related to UTF8 support and
995 the floatws module. If UTF8 support is enabled, Ion now tries to
996 load the "fixed" font at startup after setting up locales. If locales
997 aren't properly set up, this probably fails and Ion will reset locale
998 back to "POSIX" as this might make fonts loadable although support for
999 non-ASCII characters will be crippled. It might now be safe for
1000 package maintainers to enable UTF8 support by default
1001
1002 As apps seem to have switched to using `_NET_WM_NAME` for UTF8 titles
1003 and filling `WM_NAME` with crap, this property is also preferred over
1004 `WM_NAME` if set. Support for some other "extended" WM hints might be
1005 added in the future but I have no intentions of moking Ion NetWM-
1006 compliant. I might have thought of attempting to do so a few years
1007 ago when I last read the specification but it seems that since then
1008 they've filled it with lots of pointless bloat that may even be in
1009 opposition to Ion's goals. Take multi-parent transients, for example. 
1010
1011 Full error log is also displayed with xmessage on startup whether
1012 it is possible to continue or not.
1013
1014
1015 ion-devel-20030410
1016 ------------------
1017
1018 There was a bug in QueryLib written yesterday, therefore this release.
1019
1020
1021 ion-devel-20030409
1022 ------------------
1023
1024 I started converting the query code to Lua and discovered some rather
1025 silly bugs in the Lua interface so here's a new release with the new
1026 and improved query code included. The names of queries have changed
1027 (they're all in the table QueryLib defined in `querylib.lua` -- only
1028 `query_query` and a few temporary handlers are implemented in query.so)
1029 so your modified configuration files will be broken again :(.
1030
1031
1032 ion-devel-20030408
1033 ------------------
1034
1035 Be prepared to completely rewrite your configuration files once
1036 again: a new version of Ion-devel has been released that uses Lua
1037 <http://www.lua.org/> for all configuration. Version 5.0 of the
1038 language/library is required. Although scripting possibilities
1039 are now much better than before, there is one rather big drawback:
1040 Lua is not nearly as error-tolerant as Ion's old configuration
1041 parser so a syntax error in a file will cause the file not to be
1042 executed and may even cause Ion not to be able to start. More
1043 comments and documentation on scripting will follow at a later time.
1044
1045 Libtool and libltdl are also now used to implement module support.
1046 Hopefully this will make compiling Ion easier on a wider range of
1047 platforms. (On the other hand, this could also induce new problems.)
1048
1049 Finally, the preferred linking address for Ion's home page is now
1050 <http://www.iki.fi/tuomov/ion/>. The pages are still located at the
1051 old address, but this redirected address should be more permanent.
1052
1053
1054 ion-devel-20030327
1055 ------------------
1056
1057 Just some minor fixes, binary rename and better embedded workspace
1058 support in this release. I'm still contemplating whether to convert
1059 Ion to C++ and haven't written many things that I intended to as
1060 that decision will affect how those are implemented.
1061
1062 To create an embedded workspaces in a frame, at the moment you have
1063 to modify the appropriate workspace save file (when Ion is not running!)
1064 by  adding lines such as
1065
1066     region "WFloatWS", "testiupotus" {
1067     }
1068
1069 inside the frame definition after the other options (flags, `target_id`;
1070 those options will be ignored if after any region definitions).
1071
1072 One more thing to note: debugging infos are no longer automatically
1073 stripped from the ioncore binary or modules by 'make install' so that
1074 I don't have to explain how to get proper backtraces every time a bug
1075 is found. If you you are confident that you can send me proper backtraces
1076 when you find a bug (or maybe can fix it yourself), you can make the
1077 binary and the modules a _lot_ smaller by running 'strip' on them.
1078
1079
1080 ion-devel-20030311
1081 ------------------
1082
1083 The list of new ChangeLog entries is long this time, but I'm finally
1084 starting to get to what I started working on almost two years ago. Yes,
1085 there is *experimental* support for PWM-like "floating frame" workspaces.
1086 A lot of the functionality is still missing -- no need to complain of
1087 such at the time -- but the floatws.so module and basic functionality
1088 is there. Most notably perhaps a menu module is not yet implemented.
1089 (Porting the PWM menu code should a nice little task for whomever
1090 interested... *wink*.) To create some PWM workspaces, load the floatws.so
1091 module (should be loaded by default) and in `query_workspace` (F9)
1092 prefix workspace name with 'WFloatWS:' (or load the module before
1093 ionws.so). 
1094
1095 This release is also finally fully modularised: In addition to the
1096 ion core binary that can not function alone, there are the modules
1097 ionws.so, floatws.so and query.so. It is also possible statically
1098 compile the modules in the core binary if the system doesn't support
1099 libdl.
1100
1101 There's also *experimental* UTF8 support that must be specifically
1102 enabled from system.mk. You must have XFree86 (4.x?) and C99 wide
1103 char support available (either libc directly or maybe libutf8+libiconv).
1104 Thanks to bugs (?) in some of the XFree86 Xutf8 functions, your locales
1105 must be properly set up or else X will stop drawing strings at non-ascii
1106 characters instead of ignoring them. See my earlier rants on the mailing
1107 list for reasons on not using the more standard Xmb functions.
1108 To actually see any special characters, you must load the necessary fonts
1109 by specifying a comma-separated list of fonts to the font and `tab_font`
1110 draw.conf options. Multiple font loading does not work when Xft support
1111 is enabled at the time being.
1112
1113 There has been a lot of changes in the config files, again, and I can
1114 promise there's still more to come. See the ChangeLog for details.
1115 If you want to use your old workspaces configurations, move them to
1116 `~/.ion-devel/saves` and replace the strings "WFrame" and "WWorkspace"
1117 with "WIonFrame" and "WIonWS", respectively.
1118
1119
1120 ion-devel-20030225
1121 ------------------
1122
1123 I've made the bugfix release as promised. Get it from the usual place.
1124
1125
1126 ion-devel-20030223
1127 ------------------
1128
1129 There's a new major development release available from Ion web page.
1130 Not many changes are visible to the end user, though, but a lot was
1131 rewritten to be more flexible and simpler; see the ChangeLog for a
1132 full account. The older development release is also still available
1133 because this release can not be considered as stable after major
1134 changes to the code. The most visible changes are
1135
1136   * Changes in binding configuration
1137   * A (mostly) working full screen mode toggle (see below)
1138   * The ability to switch workspaces while dragging tabs (experimental)
1139   * The ability to re-read draw.conf without restarting Ion
1140   * Some bug fixes.
1141
1142
1143 Some notes on full screen mode toggle:
1144
1145  * Ion doesn't detect programs trying to leave full screen mode--it
1146    should be possible to devise some method using window properties,
1147    however.
1148  * At least Opera unmaps the window also before changing the size to
1149    enter full screen mode, so Ion doesn't remember the last frame.
1150  * Mozilla sometimes has trouble entering full screen mode but when it
1151    succeeds, Ion remembers the last frame. However, if
1152    `clientwin_toggle_fullscreen` is used to leave the full screen mode
1153    started from Mozilla, Mozilla doesn't know that the mode has been
1154    left.
1155
1156 Clearly there should be some method of communication between Ion and the
1157 programs for full screen toggles to fully work. At the moment I suggest
1158 using `clientwin_toggle_fullscreen` instead of the programs' native toggles
1159 unless the program has some special full screen mode and you really want
1160 it.