A summary of changes for this version can be found at: http://lists.berlios.de/pipermail/ion-general/2006-October/001364.html
Please notice that it breaks compatibility with old configuration files. -p. Index: Makefile =================================================================== RCS file: /cvs/ports/x11/ion/Makefile,v retrieving revision 1.40 diff -u -r1.40 Makefile --- Makefile 25 Sep 2006 02:41:44 -0000 1.40 +++ Makefile 20 Oct 2006 16:51:00 -0000 @@ -2,9 +2,9 @@ COMMENT= "light, keyboard friendly window manager" -V= 20060524 +V= 20061020 DISTNAME= ion-3ds-${V} -PKGNAME= ion-${V}p1 +PKGNAME= ion-${V} CATEGORIES= x11 HOMEPAGE= http://modeemi.cs.tut.fi/~tuomov/ion/ @@ -25,8 +25,5 @@ USE_GMAKE= Yes USE_X11= Yes NO_REGRESS= Yes - -post-install: - $(INSTALL_DATA) ${FILESDIR}/*.lua ${PREFIX}/share/examples/ion3 .include <bsd.port.mk> Index: distinfo =================================================================== RCS file: /cvs/ports/x11/ion/distinfo,v retrieving revision 1.19 diff -u -r1.19 distinfo --- distinfo 30 Jul 2006 04:30:55 -0000 1.19 +++ distinfo 20 Oct 2006 16:51:00 -0000 @@ -1,4 +1,4 @@ -MD5 (ion-3ds-20060524.tar.gz) = f9dbab5a5150c9944d7c6ed9e24daef6 -RMD160 (ion-3ds-20060524.tar.gz) = 97a86785437fce3ba91e8edfbd412e199415f545 -SHA1 (ion-3ds-20060524.tar.gz) = 65b6bb55205e9c16f02438e3586876416222999e -SIZE (ion-3ds-20060524.tar.gz) = 620416 +MD5 (ion-3ds-20061020.tar.gz) = 42def41117a245d5442eafd468a9a8b4 +RMD160 (ion-3ds-20061020.tar.gz) = 43aa3b1ec59cf3a715599ae3e6b718e198f59517 +SHA1 (ion-3ds-20061020.tar.gz) = e88acfb6cad258804589154ea97690fcdad06c91 +SIZE (ion-3ds-20061020.tar.gz) = 643294 Index: files/detach.lua =================================================================== RCS file: files/detach.lua diff -N files/detach.lua --- files/detach.lua 30 Jul 2006 04:30:55 -0000 1.2 +++ /dev/null 1 Jan 1970 00:00:00 -0000 @@ -1,407 +0,0 @@ --- $OpenBSD: detach.lua,v 1.2 2006/07/30 04:30:55 pedro Exp $ --- Fancy management of transcient windows in ion. Mix WIonWS and --- WFloatWS on the same "workspace". - --- Written by Matthieu Moy <[EMAIL PROTECTED]> on February 17th 2005. --- Public domain. - -if not detach then - detach = { - -- default "passiveness" for the layer 2 floating workspace. - passive = true, - -- Whether transcient windows should automatically be made floating - manage_transcient_with_float = true, - } -end - --- Introduction: - --- This extension exploits some of ion3's new features: It is now --- possible to attach objects on a second layer on the screen, which --- allows you to have, for example, floating objects on top of a --- traditional WIonWS workspace. See --- http://www-verimag.imag.fr/~moy/ion/ion3/float-split.png if you --- prefer images to explanations :-) - --- A simple setup is to put the following in your cfg_user.lua: --- dopath("detach.lua") --- detach.setup_hooks() - --- The layer 2 objects can be either passive or non passive. A passive --- object will only take the focus when the mouse is over it, while a --- non passive object will allways have the focus when shown. (The --- scratchpad is an example of non passive object). - --- Layer 2 objects can be hidden. This way, a non passive object can --- let the focus to the layer 1. - --- This script attaches two WFloatWS on the layer 2. One is passive, --- the other not. The function detach.topmost_transient_to_float sends --- a window (or the topmost transcient if the window has transcient) --- to one of them (depending on the value of the 3rd parameter). - --- The function detach.toggle_floatws shows or hide the current layer --- 2 floating workspace. This is very usefull to get rid of the non --- passive WFloatWS, when it is active and you want to give the focus --- to a layer 1 object. - - --------------------- --- User functions -- --------------------- - - --- Call this function once and all transcient windows will be managed --- as floating frame in layer 2. Additionally, you may define the --- "float" winprop for other non transcient windows to manage as --- floating frames like this --- --- defwinprop { --- class = "Xawtv", --- float = true, --- } --- --- the winprop "float_passive", if specified, overrides the --- detach.passive setting. For example, --- --- defwinprop { --- class = "Gkrellm", --- float = true, --- float_passive = true --- } --- --- will make gkrellm start in a passive floating window. (this means --- the window will not accept focus) --- --- Note: Adding all the functions to hooks here may conflict with --- other functions you could have added to the same hook somewhere --- else. If you want to add your personal functions to --- clientwin_do_manage_alt, I suggest not adding detach.manager, but --- doing something like --- --- if detach.manager(cwin, table) then --- return true --- end --- --- at the beginning of function you'll use in clientwin_do_manage_alt. -function detach.setup_hooks () - ioncore.get_hook("clientwin_do_manage_alt"):add(detach.manager) - ioncore.get_hook("frame_managed_changed_hook"):add(detach.maybe_leave_layer2) - ioncore.get_hook("region_do_warp_alt"):add(detach.skip_l2_warp) -end - - --- Submenu to add to the WFrame menu: --- Add the line --- submenu("Attach", "menudetach"), --- to the definition defctxmenu("WFrame", { ... }) -defmenu("menudetach", { - menuentry("Topmost transient", - "detach.topmost_transient_to_reg(_sub)"), - menuentry("To scratchpad", - "detach.topmost_transient_to_sp(_sub)"), - menuentry("To passive float", - "detach.topmost_transient_to_float(_sub, nil, true)"), - menuentry("To non passive float", - "detach.topmost_transient_to_float(_sub, nil, false)"), - }) - - --- Can be called on any object defining screen_of(). shows or hide the --- floating workspace on layer 2 of this screen. This applies to the --- passive WFloatWS if the second argument is true, and to the non --- passive one if it is false. (detach.passive is used if the argument --- is nil) -function detach.toggle_floatws(obj, passive) - local screen = obj:screen_of() - local sp = detach.find_ws(screen, passive) - if sp then - screen:l2_set_hidden(sp, 'toggle') - end -end - --- close (and relocate managed of) all layer2 WFloatWS on all screens. --- You can call this function from you cfg_user.lua or equivalent to --- avoid having layer 2 workspaces at startup. -function detach.close_all_floatws() - local screen = ioncore.find_screen_id(0) - local cur = screen - repeat - detach.close_floatws(cur) - cur = ioncore.goto_next_screen() - until (cur == screen or cur == nil) -end - ---------------------------------------------------------- --- Normally, simple users shouldn't need to go further -- ---------------------------------------------------------- - - --- Put the function "detach.topmost_transient(_sub)" in e.g. --- defctxmenu("WFrame" {}) or ionframe_bindings to use this. -function detach.topmost_transient_to_reg(cwin) - local l=cwin:managed_list() - local trs=l[table.getn(l)] - if trs then - cwin:manager():attach(trs) - end -end - - --- send either the topmost transcient or the window itself if it has --- no transcient to the scratchpad -function detach.topmost_transient_to_sp(cwin) - local to_detach = cwin - local l=cwin:managed_list() - local trs=l[table.getn(l)] - if trs then - to_detach = trs - end - -- search for the scratchpad - local sp = nil - for _,r in pairs(cwin:screen_of():llist(2)) do - if (r:name() == "WScratchpad") then - sp = r - end - end - sp:attach(to_detach) - if not sp:is_active() then - mod_sp.toggle_on(cwin:screen_of()) - end -end - -function detach.ws_name(passive) - local passive_loc = detach.passive - if passive ~= nil then - passive_loc = passive - end - if passive_loc then - return "layer 2 float - passive" - else - return "layer 2 float - active" - end -end - -function detach.find_ws(screen, passive) - local name = detach.ws_name(passive) - local ws - for _,r in pairs(screen:llist(2)) do - if r:name() == name then - ws = r - end - end - return ws -end - -function startswith(s, target) - return string.sub(s, 0, string.len(target)) == target -end - -function is_l2floatws(ws) - return startswith(ws:name(), "layer 2 float - ") -end - --- send either the topmost transcient or the window itself if it has --- no transcient to a floating workspace, on the second layer of the --- screen. --- the parameter "passive" overrides detach.passive if specified. - --- If "restricted" is true, then, the function will use --- ioncore.defer(), and can be called in restricted mode. Otherwise, --- the action is immediate. -function detach.topmost_transient_to_float(cwin, screen, passive, geom, restricted) - local to_detach = cwin - local l=cwin:managed_list() - local trs=l[table.getn(l)] - if trs then - to_detach = trs - end - local scr = screen - if scr == nil then - scr = cwin:screen_of() - end - -- use a passive WFloatWS ? - local passive_loc = detach.passive - if passive ~= nil then - passive_loc = passive - end - -- Find it if it already exists ... - local name = detach.ws_name(passive_loc) - local fws = detach.find_ws(scr, passive_loc) - local geom_loc - local oldgeom = to_detach:geom() - if geom == nil then - -- debug.echo("geom==nil") - geom_loc = {x=20, y=20, h=oldgeom.h, w=oldgeom.w} - else - -- debug.echo("geom=={x="..geom.x..",y="..geom.y.."}") - geom_loc = {x=geom.x, y=geom.y, - h=oldgeom.h, w=oldgeom.w} - end - if not restricted then - -- ... if not, create it - if fws == nil then - fws = scr:attach_new{ - type = "WFloatWS", - name = name, - layer = 2, - passive = passive_loc, - switchto = false, - } - end - fws:attach(to_detach) - fws:screen_of():l2_set_hidden(fws, 'false') - to_detach:rqgeom(geom_loc) - ioncore.defer(function() - to_detach:goto() - end) - else - ioncore.defer(function() - -- ... if not, create it - if fws == nil then - fws = scr:attach_new{ - type = "WFloatWS", - name = name, - layer = 2, - passive = passive_loc, - switchto = false, - } - end - ioncore.defer(function() - fws:screen_of():l2_set_hidden(fws, 'false') - fws:attach(to_detach) - -- fws:goto() - to_detach:manager():goto() - to_detach:goto() - - to_detach:manager():rqgeom(geom_loc) - ioncore.defer(function () - to_detach:rqgeom({h=geom_loc.h}) - end) - end) - end) - end -end - --- close the floating workspaces on layer 2 and relocate the floating --- windows in the layer 1 workspace. --- Usefull to change the settings of the workspace (passive or --- not, ...) -function detach.close_floatws(region) - local screen - if region then - screen = region:screen_of() - end - if (screen == nil) then - screen = ioncore.find_screen_id(0) - end - for _,r in pairs(screen:llist(2)) do - if obj_is(r, "WFloatWS") then - local fws = r - -- relocate windows to layer 1 - local dest = screen:lcurrent(1):current() - for _,fframe in pairs(r:managed_list()) do - for _,cwin in pairs(fframe:llist(1)) do - dest:attach(cwin) - cwin:goto() - end - end - -- and close this workspace - ioncore.defer(function () fws:rqclose() end) - end - end -end - --- Brings a Frame back to the layer 1 -function detach.float_to_layer1 (cwin) - local screen = cwin:screen_of() - if screen == nil then - screen = ioncore.find_screen_id(0) - end - screen:lcurrent(1):current():attach(cwin) - ioncore.defer(function () cwin:goto() end) -end - --- detach.toggle_float (_sub) to call on a WFrame --- Takes a frame from a WIonWS to a WFloatWS in the second layer. -function detach.toggle_float (cwin) - if obj_is(cwin:manager(), "WFloatFrame") then - detach.float_to_layer1(cwin) - else - detach.topmost_transient_to_float(cwin) - end -end - --- candidate for clientwin_do_manage_alt to manage transient. See --- documentation for detach.manage_transcient_with_float for details. -function detach.manager(cwin, table) - local wp=ioncore.getwinprop(cwin) - if detach.manage_transcient_with_float - and table.tfor - and not obj_is(table.tfor:manager(), "WFloatWS") then - - local manager = table.tfor:manager() - detach.topmost_transient_to_float(cwin, - manager:screen_of(), - (wp and wp.float_passive), - table.geom) - table.tfor:goto() - return true - end - if (wp and wp.float) then - local screen = cwin:screen_of() - if screen == nil then - screen = ioncore.find_screen_id(0) - end - detach.topmost_transient_to_float(cwin, - screen, - (wp and wp.float_passive), - table.geom) - return true - end - return false -end - --- DEPRECATED. detach.manager() does all this now. --- candidate for ionws_placement_alt to manage windows with the --- "float" winprop. -function detach.ionws_manager(cwin, ws, table) - local wp=ioncore.getwinprop(cwin) - if wp.float then - detach.topmost_transient_to_float(cwin, - ws:screen_of(), - (wp and wp.float_passive), - table.geom, - true) - return true - end - return false -end - --- candidate for frame_managed_changed_hook. --- --- If the action is a "remove", and the layer 2 workspace is empty, hide it. --- This prevents an empty (and thus invisible) layer 2 floating workspace from --- having the focus after its last managed frame is closed, so that focus --- returns to layer 1. -function detach.maybe_leave_layer2(tbl) - if tbl.mode == "remove" then - local mgr = tbl.reg:manager() - if is_l2floatws(mgr) then - local l = mgr:managed_list() - -- The region will be empty if the only managed region is the one - -- currently being removed. - if table.getn(l) == 1 and l[1] == tbl.reg then - ioncore.defer(function () mgr:screen_of():l2_set_hidden(mgr, 'true') end) - end - end - end -end - -function detach.skip_l2_warp(reg) - n = reg:manager():manager():name() - if is_l2floatws(reg:manager():manager()) then - return true - end - return false -end Index: files/nest-ws.lua =================================================================== RCS file: files/nest-ws.lua diff -N files/nest-ws.lua --- files/nest-ws.lua 29 Sep 2005 22:19:39 -0000 1.1 +++ /dev/null 1 Jan 1970 00:00:00 -0000 @@ -1,15 +0,0 @@ --- $OpenBSD: nest-ws.lua,v 1.1 2005/09/29 22:19:39 pedro Exp $ --- Nest workspaces inside Frames. --- Matthieu Moy <[EMAIL PROTECTED]>, February 15th 2005. --- Public domain. - --- This defines a menu to be used as a submenu for WFrames. --- Add the line --- submenu("Attach", "menuattach"), --- to the definition defctxmenu("WFrame", { ... }) - -defmenu("menuattach", { - menuentry("WIonWS", "_:attach_new({type=\"WIonWS\" }):goto()"), - menuentry("WFloatWS", "_:attach_new({type=\"WFloatWS\"}):goto()"), - menuentry("WPaneWS", "_:attach_new({type=\"WPaneWS\" }):goto()"), - }) Index: patches/patch-etc_cfg_ion_lua =================================================================== RCS file: patches/patch-etc_cfg_ion_lua diff -N patches/patch-etc_cfg_ion_lua --- patches/patch-etc_cfg_ion_lua 19 Mar 2006 17:36:41 -0000 1.2 +++ /dev/null 1 Jan 1970 00:00:00 -0000 @@ -1,14 +0,0 @@ -$OpenBSD: patch-etc_cfg_ion_lua,v 1.2 2006/03/19 17:36:41 pedro Exp $ ---- etc/cfg_ion.lua.orig Fri Mar 17 16:43:04 2006 -+++ etc/cfg_ion.lua Sun Mar 19 11:14:54 2006 -@@ -54,5 +54,10 @@ dopath("cfg_modules") - --dopath("mod_dock") - --dopath("mod_sp") - -+-- Load workspace nesting stuff. -+dopath("detach") -+dopath("nest-ws") -+detach.setup_hooks() -+ - -- Deprecated. - dopath("cfg_user", true) Index: patches/patch-etc_cfg_ioncore_lua =================================================================== RCS file: /cvs/ports/x11/ion/patches/patch-etc_cfg_ioncore_lua,v retrieving revision 1.3 diff -u -r1.3 patch-etc_cfg_ioncore_lua --- patches/patch-etc_cfg_ioncore_lua 30 Jul 2006 18:45:21 -0000 1.3 +++ patches/patch-etc_cfg_ioncore_lua 20 Oct 2006 16:51:00 -0000 @@ -1,6 +1,6 @@ $OpenBSD: patch-etc_cfg_ioncore_lua,v 1.3 2006/07/30 18:45:21 pedro Exp $ ---- etc/cfg_ioncore.lua.orig Wed May 24 13:23:26 2006 -+++ etc/cfg_ioncore.lua Sun Jul 30 15:39:20 2006 +--- etc/cfg_ioncore.lua.orig Sun Oct 15 15:30:57 2006 ++++ etc/cfg_ioncore.lua Sun Oct 15 15:34:02 2006 @@ -63,8 +63,8 @@ defbindings("WScreen", { kpress(META.."F9", "ioncore.create_ws(_)"), @@ -12,9 +12,9 @@ mpress("Button3", "mod_menu.pmenu(_, _sub, 'mainmenu')"), bdoc("Display the window list menu."), -@@ -111,10 +111,10 @@ defbindings("WMPlex.toplevel", { - "_sub:WClientWin"), +@@ -136,10 +136,10 @@ defbindings("WMPlex", { + defbindings("WMPlex.toplevel", { bdoc("Query for manual page to be displayed."), - kpress(ALTMETA.."F1", "mod_query.query_man(_, ':man')"), + kpress(ALTMETA.."F1", "mod_query.query_man(_, '::man')"), @@ -24,8 +24,8 @@ + kpress(META.."F1", "ioncore.exec_on(_, '::man ion3')"), bdoc("Run a terminal emulator."), - kpress(ALTMETA.."F2", "ioncore.exec_on(_, 'xterm')"), -@@ -130,7 +130,7 @@ defbindings("WMPlex.toplevel", { + kpress(ALTMETA.."F2", "ioncore.exec_on(_, XTERM or 'xterm')"), +@@ -155,7 +155,7 @@ defbindings("WMPlex.toplevel", { bdoc("Query for file to edit."), kpress(ALTMETA.."F5", @@ -34,7 +34,7 @@ bdoc("Query for file to view."), kpress(ALTMETA.."F6", -@@ -286,12 +286,7 @@ defmenu("mainmenu", { +@@ -332,12 +332,7 @@ defmenu("mainmenu", { -- Application menu defmenu("appmenu", { menuentry("XTerm", "ioncore.exec_on(_, 'xterm')"), @@ -44,14 +44,14 @@ - menuentry("Links", "ioncore.exec_on(_, ':links')"), - menuentry("Konqueror", "ioncore.exec_on(_, 'konqueror')"), - menuentry("Dillo", "ioncore.exec_on(_, 'dillo')"), -+ menuentry("Firefox", "ioncore.exec_on(_, 'firefox')"), ++ menuentry("Firefox", "ioncore.exec_on(_, 'firefox')"), menuentry("Run...", "mod_query.query_exec(_)"), }) -@@ -316,4 +311,6 @@ defctxmenu("WFrame", "Frame", { - menuentry("Clear tags", "ioncore.clear_tags()"), - menuentry("Window info", "mod_query.show_clientwin(_, _sub)", - "_sub:WClientWin"), -+ submenu("Attach", "menuattach"), -+ submenu("Detach", "menudetach"), +@@ -372,4 +367,4 @@ defctxmenu("WScreen", "Screen", { + menuentry("Close workspace","WRegion.rqclose(_sub)"), }) + +- +\ No newline at end of file ++ Index: patches/patch-libmainloop_signal_h =================================================================== RCS file: patches/patch-libmainloop_signal_h diff -N patches/patch-libmainloop_signal_h --- patches/patch-libmainloop_signal_h 2 Jul 2005 15:55:59 -0000 1.1 +++ /dev/null 1 Jan 1970 00:00:00 -0000 @@ -1,11 +0,0 @@ -$OpenBSD: patch-libmainloop_signal_h,v 1.1 2005/07/02 15:55:59 pedro Exp $ ---- libmainloop/signal.h.orig Sat Jun 25 14:46:22 2005 -+++ libmainloop/signal.h Sat Jun 25 14:46:45 2005 -@@ -15,6 +15,7 @@ - #include <sys/time.h> - #include <sys/signal.h> - #include <time.h> -+#include <signal.h> - #include <unistd.h> - - #include <libtu/obj.h> Index: patches/patch-libtu_locale_h =================================================================== RCS file: patches/patch-libtu_locale_h diff -N patches/patch-libtu_locale_h --- patches/patch-libtu_locale_h 2 Jul 2005 15:55:59 -0000 1.1 +++ /dev/null 1 Jan 1970 00:00:00 -0000 @@ -1,12 +0,0 @@ -$OpenBSD: patch-libtu_locale_h,v 1.1 2005/07/02 15:55:59 pedro Exp $ ---- libtu/locale.h.orig Sat Jun 25 14:51:44 2005 -+++ libtu/locale.h Sat Jun 25 14:53:49 2005 -@@ -10,6 +10,8 @@ - #ifndef LIBTU_LOCALE_H - #define LIBTU_LOCALE_H - -+#include <locale.h> -+ - #ifdef CF_NO_LOCALE - - #define TR(X) X Index: pkg/PFRAG.shared =================================================================== RCS file: /cvs/ports/x11/ion/pkg/PFRAG.shared,v retrieving revision 1.2 diff -u -r1.2 PFRAG.shared --- pkg/PFRAG.shared 23 Apr 2005 16:22:26 -0000 1.2 +++ pkg/PFRAG.shared 20 Oct 2006 16:51:00 -0000 @@ -1,12 +1,10 @@ @comment $OpenBSD: PFRAG.shared,v 1.2 2005/04/23 16:22:26 pedro Exp $ lib/ion3/mod/de.so lib/ion3/mod/mod_dock.so -lib/ion3/mod/mod_floatws.so -lib/ion3/mod/mod_ionws.so lib/ion3/mod/mod_menu.so lib/ion3/mod/mod_mgmtmode.so -lib/ion3/mod/mod_panews.so lib/ion3/mod/mod_query.so lib/ion3/mod/mod_sm.so lib/ion3/mod/mod_sp.so lib/ion3/mod/mod_statusbar.so +lib/ion3/mod/mod_tiling.so Index: pkg/PLIST =================================================================== RCS file: /cvs/ports/x11/ion/pkg/PLIST,v retrieving revision 1.17 diff -u -r1.17 PLIST --- pkg/PLIST 30 Jul 2006 04:30:55 -0000 1.17 +++ pkg/PLIST 20 Oct 2006 16:51:00 -0000 @@ -18,16 +18,14 @@ lib/ion3/lc/ioncore_wd.lc lib/ion3/lc/ioncore_winprops.lc lib/ion3/lc/mod_dock.lc -lib/ion3/lc/mod_floatws.lc -lib/ion3/lc/mod_ionws.lc lib/ion3/lc/mod_menu.lc lib/ion3/lc/mod_mgmtmode.lc -lib/ion3/lc/mod_panews.lc lib/ion3/lc/mod_query.lc lib/ion3/lc/mod_query_chdir.lc lib/ion3/lc/mod_sm.lc lib/ion3/lc/mod_sp.lc lib/ion3/lc/mod_statusbar.lc +lib/ion3/lc/mod_tiling.lc lib/ion3/lc/statusd_date.lc lib/ion3/lc/statusd_load.lc lib/ion3/lc/statusd_mail.lc @@ -53,19 +51,16 @@ share/doc/ion3/RELNOTES share/examples/ion3/ share/examples/ion3/cfg_dock.lua -share/examples/ion3/cfg_floatws.lua share/examples/ion3/cfg_ion.lua share/examples/ion3/cfg_ioncore.lua -share/examples/ion3/cfg_ionws.lua share/examples/ion3/cfg_kludges.lua share/examples/ion3/cfg_menu.lua share/examples/ion3/cfg_modules.lua -share/examples/ion3/cfg_panews.lua share/examples/ion3/cfg_pwm.lua share/examples/ion3/cfg_query.lua share/examples/ion3/cfg_sp.lua share/examples/ion3/cfg_statusbar.lua -share/examples/ion3/detach.lua +share/examples/ion3/cfg_tiling.lua share/examples/ion3/look.lua share/examples/ion3/look_brownsteel.lua share/examples/ion3/look_clean.lua @@ -77,7 +72,6 @@ share/examples/ion3/look_simpleblue.lua share/examples/ion3/lookcommon_clean.lua share/examples/ion3/lookcommon_emboss.lua -share/examples/ion3/nest-ws.lua share/ion3/ share/ion3/ion-completeman share/ion3/ion-runinxterm