ion-20061020, okay sturm@ jasper@

This commit is contained in:
pedro 2006-10-20 17:36:12 +00:00
parent 2ad21c1700
commit 06aa0cfd2e
10 changed files with 27 additions and 497 deletions

View File

@ -1,10 +1,10 @@
# $OpenBSD: Makefile,v 1.40 2006/09/25 02:41:44 pedro Exp $
# $OpenBSD: Makefile,v 1.41 2006/10/20 17:36:12 pedro Exp $
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/
@ -26,7 +26,4 @@ USE_GMAKE= Yes
USE_X11= Yes
NO_REGRESS= Yes
post-install:
$(INSTALL_DATA) ${FILESDIR}/*.lua ${PREFIX}/share/examples/ion3
.include <bsd.port.mk>

View File

@ -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

View File

@ -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 <Matthieu.Moy@imag.fr> 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

View File

@ -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 <Matthieu.Moy@imag.fr>, 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()"),
})

View File

@ -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)

View File

@ -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
$OpenBSD: patch-etc_cfg_ioncore_lua,v 1.4 2006/10/20 17:36:13 pedro Exp $
--- 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 @@ $OpenBSD: patch-etc_cfg_ioncore_lua,v 1.3 2006/07/30 18:45:21 pedro Exp $
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 @@ $OpenBSD: patch-etc_cfg_ioncore_lua,v 1.3 2006/07/30 18:45:21 pedro Exp $
+ 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 @@ $OpenBSD: patch-etc_cfg_ioncore_lua,v 1.3 2006/07/30 18:45:21 pedro Exp $
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 @@ $OpenBSD: patch-etc_cfg_ioncore_lua,v 1.3 2006/07/30 18:45:21 pedro Exp $
- 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
+

View File

@ -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>

View File

@ -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

View File

@ -1,12 +1,10 @@
@comment $OpenBSD: PFRAG.shared,v 1.2 2005/04/23 16:22:26 pedro Exp $
@comment $OpenBSD: PFRAG.shared,v 1.3 2006/10/20 17:36:13 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

View File

@ -1,4 +1,4 @@
@comment $OpenBSD: PLIST,v 1.17 2006/07/30 04:30:55 pedro Exp $
@comment $OpenBSD: PLIST,v 1.18 2006/10/20 17:36:13 pedro Exp $
%%SHARED%%
bin/ion3
bin/pwm3
@ -18,16 +18,14 @@ lib/ion3/lc/ioncore_misc.lc
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/README
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_ios.lua
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