As the subject line says, Ion-devel-20030531 was just released. The short
list of changes is:
* The license was changed from the Clarified Artistic License to the
GNU Library/Lesser General Public License (LGPL).
* Screen, viewport and root window renames and other changes (see below).
* Some installation directory changes; the ion-* helper programs are now
installed either in $SHAREDIR or $EXTRABINDIR and QueryLib searches for
them on the script path (~/.ion-devel/, $ETCDIR, $SHAREDIR, $EXTRABINDIR)
instead of assuming them being on $PATH.
* Client windows are now in a separate namespace.
* Resize/maximize/shade changes: Shading should work on WIonFrames too
and shade mode is automatic when the client area gets too small when
resizing. Maximize toggle restores frame to previous size if shaded
instead of maximizing. The move/resize mode bindings were changed again
to be more consistent and predictable: Left/Right/Up/Down and F/B/P/N
grow the frame in the specific direction, Shift+keys shrink and in
case of floating frames, DEFAULT_MOD+keys move
* Returning from full screen mode should work on WFloatWS:s too.
* Lots of minor fixes, export additions and clean-up.
As usual, see the (long!) list of new ChangeLog entries at the end of
this message for details.
I've finally personally switched from the old "stable" 20020207 to using
the latest development release at home too and I must say that it is
finally starting to look good. There are still things to be written, but
unless you need "proven" stability, I see no reason to sticking to that
old release anymore. Unless, of course, if you find a problem that I have
not encountered or simply have no need for the new features and don't want
to port your configuration files.
On screens, viewports, root windows and problems with the new
implementation
The objects previously called "screens" are now called "root windows"
and what were called "viewports" are called "screens" to better reflect
what the user sees. (When Xinerama is not used there's no difference
between a root window and a screen, but when Xinerama is used a root
window may be split over multiple screens.)
This release also creates so-called virtual root windows for each
Xinerama screen when there are more than one. This is to better separate
the windows on different screens and thus emulate normal multihead, the
main difference being that windows can be moved between screens.
Especially the virtual roots are there to keep the windows that are on
a floatws on the right screen.
Virtual root windows will, however, break a few apps:
* Mozilla -remote won't work because of its crappy method for looking
up existing windows that can't handle multiple levels of WM windows.
Nested workspaces have the same problem. There is, however, a simple
solution to this problem: gnome-moz-remote. It seems to use a saner
method for looking up an existing Gecko browser and also works with
at least Phoenix/MozillaFirebird and Galeon.
These two are problems only if you use floatws:s (other problems with
which virtual root windows are intended to solve):
* The background-setting apps I am aware of will require a following
'xrefresh' for the changes to be updated to the (transparent) virtual
roots. Background setting apps that support the _NET_VIRTUAL_ROOTS
property (which, I think, was meant for root window-sized WS
backgrounds) could be used to set a separate background for each
Xinerama screen, though. I am not aware of any such app.
* Some apps' resize and move features will behave erratically on those
Xinerama screens not at (0, 0) on the root window. This is again
because the apps are assuming there's at most one WM window between
them and the root and are requesting windows' positions incorrectly.
The ICCCM is quite vague on this and I think _all_ apps that I have
tried are doing it wrong but the way e.g. XMMS does it certainly is
not an interpretation of the ICCCM. The apps that now behave correctly
request position for the outermost WM window. Nested workspaces have
the same problem.
There is one more temporary problem:
* Status bar modules (and the dock module's statusbar mode) will be
*temporarily* broken when virtual roots are _not_ used. This will be
fixed later when parts of screen and frame code are unified (it should
then be possible to run Ion without any workspace modules and have
queries attached to screens). In the meanwhile, if you don't care about
the above-mentioned problems and want a statusbar (which probably needs
to be ported to this release), you can defined CF_ALWAYS_VIRTUAL_ROOT
when compiling Ion.
New ChangeLog entries:
2003-05-31:
* More changes in move/resize mode bindings to be more consistent
and predictable: Left/Right/Up/Down and F/B/P/N grow the frame in
the specific direction, Shift+keys shrink and in case of floating
frames, DEFAULT_MOD+keys move.
* The functions *frame_do_resize were changed to receive four
parameters, one for each border/direction.
* Manual page updated.
* License changed: LGPL.
2003-05-30:
* The *DIR settings in system.mk are now more detailed.
* Changes in installation directories: The ion-* shell scripts are
installed in $SHAREDIR and are ioncorelib.lua, querylib.lua and
compat.lua. 'ion-completefile' is installed in $EXTRABINDIR
(=$MODULEDIR) being a binary.
* QueryLib functions search the script directories (~/.ion-devel/,
$ETCDIR, $SHAREDIR, $EXTRABINDIR; in that order) for the ion-*
helper programs instead of assuming them being on $PATH.
2003-05-29:
* All object destroys should now be handled safely.
2003-05-28:
* Examples of query_man_path and query_ssh_hosts were added to the
default ioncore.lua main configuration file.
2003-05-27:
* New name allocation code: client windows are now in a separate
namespace from other objects and "short names" without appended
instance number are gone.
* WClientWins now save the last height request of transients (and
other managed objects) so a decent size should always be restored
when the window is in a big enough frame.
2003-05-26:
* Some client window resize/move request handling changes.
2003-05-25:
* QueryLib should now remember last directory for file view and
edit queries.
* Added the boolean 'fullscreen' winprop.
2003-05-23:
* Grab handling code simplified.
* Xinerama screens now always have a virtual root window for better
separation.
2003-05-21:
* The exported function specification generation script was
extended with EXTL_EXPORT_AS(...).
* The exports region_set_w/h were replaced with
region_request_geom.
2003-05-20:
* The exports generation script was ignoring constness of string
and could therefore cause Ion to crash or corrupt strings.
* Simpler implementation of 'goto_previous' using watches.
* Better (?) frame shading and maximizing code that should also
eventually work on tiled workspaces (only partially implemented;
better region_request_geom neeeded).
2003-05-19:
* The functions lookup/complete_region now expect a string class
parameter (or null for "WRegion") and the functions
complete/lookup_workspace/clientwin were moved to ioncorelib.lua
as they are not needed on the C side.
* Kludges and bloat to a proper (but not necessarily correct) X
server time in WM_TAKE_FOCUS messages to get around problems with
some programs.
* Some more mouse resize tuning.
2003-05-18:
* Fix around problems with macros with some (possibly broken?)
versions of gcc.
* Some more focusing policy changes/fixes.
2003-05-17:
* Fixed FloatWS initial focus.
* Default configuration uses XOR-rubberband move/resize (instead of
opaque) to be nicer on slower systems.
* Changes in object and function names to be closer to what users
see and think: what previously were screens (WScreen) are now
called root windows (WRootWin) and viewport (WViewport) have
become screens (WScreen). These changes are so big that no
wrappers were added to compat.lua.
* Some old root window (old screen) functions were removed.
* Bindings in global_bindings should get a WScreen (old WViewport)
as an argument instead of WRootWin.
2003-05-16:
* Enchancements in client window "rescueing" and some unifications
with return from full screen mode.
* Added the extl_globals function for accessing globals.
2003-05-14:
* Mouse resize changed to only resize along one coordinate axis
when the window is grabbed far enough from borders.
* 'ionws_do_clientwin' now calls the Lua function
'ionws_placement_method' with parameters (ws, cwin,
pos_given_by_user) to determine in which frame to place a window.
This can be used to e.g. experiment with placement heuristics.
* Return from full screen mode should work with floatws:s now.
* Changes in how parameters are passed to Lua code loaded as string
or from a file.
* Client window management setup code simplified by attaching
transients the their transient_for by default and having
floatws:s override this behaviour by hooking to
add_clientwin_alt.
* Fixed a problem with bsearch() and Solaris.
2003-05-13:
* Vertical keyboard resize binding swapped.
* Keyboard resize should not "cumulate" size increments that do not
affect the frame size.
* Transient resizing when the managing WClientWin was resized had
been broken at some point.
* The new Lua calling code allowed removing dependency on C99
va_copy a little more easily than the old so Ion no longer
depends on it and should be easier to compile on older systems
(apparently including gcc 2.9x.x).
* There was a problem getting return values from Lua functions.
* The 'include' function didn't handle absolute paths.
2003-05-12:
* Added new exports to get information on splits on WIonWs:s. This
should help writing alternative navigation functions.
* The exports region_get_(x|y|w|h) were replaced with region_geom.
* Region name instances are saved in the workspace savefiles.
(However, client windows do not use the saved title because it
may have changed so client windows' instance numbers may change
over restarts.)
* Fixed a minor resize glitch.
2003-05-11:
* Added checks in region_add_managed to prevent from attachinging
parent's or manager's to their (grand)children or managed
regions.
2003-05-10:
* 'ionws_load' no longer requires 'split_tree' to be specified so
that new workspaces can be created with region_manage_new without
specifying the contents.
--
Tuomo