+2008-02-05 17:40 UTC Tuomo Valkonen <tuomov@iki.fi>
+ tagged ion-3-20080207
+
+2008-02-04 22:51 UTC Tuomo Valkonen <tuomov@iki.fi>
+ * Release notes
+
+2008-02-04 22:50 UTC Tuomo Valkonen <tuomov@iki.fi>
+ * More cfg_ion.lua embedded documentation
+
+2008-02-03 08:34 UTC Tuomo Valkonen <tuomov@iki.fi>
+ * Added same rootwin check for 'target' winprop
+
+2008-02-03 08:34 UTC Tuomo Valkonen <tuomov@iki.fi>
+ * 'jumpto' wasn't working well with pointer_focus_hack
+
+2008-02-02 08:31 UTC Tuomo Valkonen <tuomov@iki.fi>
+ * README improvement
+
+2008-01-21 19:38 UTC Tuomo Valkonen <tuomov@iki.fi>
+ * Enabled default statusbar template in cfg_statusbar.lua
+ (Some seem to have trouble understanding commented-out settings.)
+
+2008-01-21 15:45 UTC Tuomo Valkonen <tuomov@iki.fi>
+ * ioncore.set{mousefocus='disabled'} setting support had been lost at
+ some point, and documentation was wrong too.
+
+2008-01-18 16:47 UTC Tuomo Valkonen <tuomov@iki.fi>
+ * Some cfg_ion.lua documentation
+
+2008-01-07 18:39 UTC Tuomo Valkonen <tuomov@iki.fi>
+ * Some build system improvements for nicer .exe handling
+
+2008-01-07 18:02 UTC Tuomo Valkonen <tuomov@iki.fi>
+ * Added CF_NO_GET_LOADAVG
+
+2008-01-06 20:41 UTC Tuomo Valkonen <tuomov@iki.fi>
+ * Dockapp WM_CLASS hack had been broken. Fixed.
+
+2008-01-04 15:25 UTC Tuomo Valkonen <tuomov@iki.fi>
+ * Removed defer-pending on destroy warning
+
+2008-01-03 21:38 UTC Tuomo Valkonen <tuomov@iki.fi>
+ * Some header comments weren't up-to-date
+
+2008-01-03 18:49 UTC Tuomo Valkonen <tuomov@iki.fi>
+ * Bah, statusd build was still broken
+
2008-01-03 18:23 UTC Tuomo Valkonen <tuomov@iki.fi>
tagged ion-3rc-20080103
* Lua 5.1 <http://www.lua.org/>
* gettext <http://www.gnu.org/software/gettext/>
-2. Edit `system.mk` to suit your system. Most GNU/Linux users should
- need very few changes.
+2. Edit `system.mk` to suit your system.
3. If you want to build some extra modules now or do not want to build
some of the standard modules, edit `modulelist.mk`.
+ion-3-20080207
+--------------
+
+.
+
+
ion-3rc-20080103
----------------
TARGETS := $(TARGETS) $(LUA_COMPILED)
endif
+ifdef EXTRA_EXECUTABLE
+EXECUTABLE := $(EXTRA_EXECUTABLE)
+BINDIR_ := $(EXTRABINDIR)
+endif
+
+ifdef EXECUTABLE
+BINDIR_ ?= $(BINDIR)
+EXECUTABLE_ := $(EXECUTABLE)$(BIN_SUFFIX)
+TARGETS := $(TARGETS) $(EXECUTABLE_)
+endif
+
# Main targets
######################################
OBJS=$(subst .c,.o,$(SOURCES) $(EXPORTS_C))
+
+ifdef EXECUTABLE
+
+ifdef MODULE_LIST
+ifdef MODULE_PATH
+ifeq ($(PRELOAD_MODULES),1)
+EXT_OBJS += $(foreach mod, $(MODULE_LIST), $(MODULE_PATH)/$(mod)/$(mod).a)
+DEPEND_DEPENDS += preload.c
+SOURCES += preload.c
+TO_CLEAN += preload.c
+else # !PRELOAD_MODULES
+LDFLAGS += $(EXPORT_DYNAMIC)
+WHOLEA = -Wl,-whole-archive
+NO_WHOLEA = -Wl,-no-whole-archive
+endif # !PRELOAD_MODULES
+
+preload.c:
+ $(LUA) $(TOPDIR)/build/mkpreload.lua $(MODULE_LIST) > preload.c
+
+endif # MODULE_PATH
+endif # MODULE_LIST
+
+ifeq ($(RELOCATABLE),1)
+DEFINES += -DCF_RELOCATABLE_BIN_LOCATION=\"$(BINDIR_)/$(EXECUTABLE)\"
+endif
+
+$(EXECUTABLE_): $(OBJS) $(EXT_OBJS)
+ $(CC) $(OBJS) $(WHOLEA) $(EXT_OBJS) $(NO_WHOLEA) $(LDFLAGS) -o $@
+
+executable_install:
+ $(INSTALLDIR) $(BINDIR_)
+ $(INSTALLBIN) $(EXECUTABLE_) $(BINDIR_)
+
+endif # EXECUTABLE
+
+
ifdef MODULE
ifneq ($(PRELOAD_MODULES),1)
--
-- This file only includes some settings that are rather frequently altered.
-- The rest of the settings are in cfg_ioncore.lua and individual modules'
--- configuration files (cfg_modulename.lua).
+-- configuration files (cfg_modulename.lua).
+--
+-- When any binding and other customisations that you want are minor, it is
+-- recommended that you include them in a copy of this file in ~/.ion3/.
+-- Simply create or copy the relevant settings at the end of this file (from
+-- the other files), recalling that a key can be unbound by passing 'nil'
+-- (without the quotes) as the callback. For more information, please see
+-- the Ion configuration manual available from the Ion Web page.
--
-- Set default modifiers. Alt should usually be mapped to Mod1 on
-- modules with 'mod' replaced by 'cfg'.
dopath("cfg_defaults")
--- Load configuration of the Ion 'core'
+-- Load configuration of the Ion 'core'. Most bindings are here.
--dopath("cfg_ioncore")
-- Load some kludges to make apps behave better.
-- Define some layouts.
--dopath("cfg_layouts")
--- Load some modules.
+-- Load some modules. Bindings and other configuration specific to modules
+-- are in the files cfg_modulename.lua.
--dopath("mod_query")
--dopath("mod_menu")
--dopath("mod_tiling")
-- right, respectively, and %systray is a placeholder for system tray
-- windows and icons.
--
+ template="[ %date || load: %load ] %filler%systray",
--template="[ %date || load:% %>load || mail:% %>mail_new/%>mail_total ] %filler%systray",
--template="[ %date || load: %05load_1min || mail: %02mail_new/%02mail_total ] %filler%systray",
}
Context:
-[TAG ion-3rc-20080103
-Tuomo Valkonen <tuomov@iki.fi>**20080103182346]
+[TAG ion-3-20080207
+Tuomo Valkonen <tuomov@iki.fi>**20080205174053]
######################################
-SOURCES=ion.c
+EXECUTABLE = ion3
-TARGETS=ion3
+SOURCES = ion.c
-INCLUDES += $(X11_INCLUDES)
+INCLUDES += $(X11_INCLUDES)
INCLUDES += $(LIBMAINLOOP_INCLUDES) $(LIBTU_INCLUDES) $(LIBEXTL_INCLUDES)
INCLUDES += -I..
-LIBS += $(X11_LIBS)
+LIBS += $(X11_LIBS) -lSM -lICE
LIBS += $(WHOLEA) $(LIBMAINLOOP_LIBS) $(LIBEXTL_LIBS) $(LIBTU_LIBS) $(NO_WHOLEA)
LIBS += $(LUA_LIBS) $(DL_LIBS)
LIBS += -lm
-ifeq ($(PRELOAD_MODULES),1)
-EXT_OBJS += $(foreach mod, $(MODULE_LIST), ../$(mod)/$(mod).a)
-DEPEND_DEPENDS += preload.c
-SOURCES += preload.c
-TO_CLEAN += preload.c
-LIBS += -lSM -lICE
-else
-LDFLAGS += $(EXPORT_DYNAMIC)
-WHOLEA = -Wl,-whole-archive
-NO_WHOLEA = -Wl,-no-whole-archive
-endif
-
-ifeq ($(RELOCATABLE),1)
-DEFINES += -DCF_RELOCATABLE_ION3_LOCATION=\"$(BINDIR)/ion3\"
-endif
+MODULE_PATH = $(TOPDIR)
EXT_OBJS += ../ioncore/ioncore.a
######################################
-ion3: $(OBJS) $(EXT_OBJS)
- $(CC) $(OBJS) $(WHOLEA) $(EXT_OBJS) $(NO_WHOLEA) $(LDFLAGS) -o $@
-preload.c:
- $(LUA) ../build/mkpreload.lua $(MODULE_LIST) > preload.c
+_install: executable_install
-_install:
- $(INSTALLDIR) $(BINDIR)
- $(INSTALLBIN) ion3 $(BINDIR)
libtu_init(argv[0]);
-#ifdef CF_RELOCATABLE_ION3_LOCATION
- prefix_set(argv[0], CF_RELOCATABLE_ION3_LOCATION);
+#ifdef CF_RELOCATABLE_BIN_LOCATION
+ prefix_set(argv[0], CF_RELOCATABLE_BIN_LOCATION);
#endif
localedir=prefix_add(LOCALEDIR);
xwindow_unmanaged_selectinput(win, 0);
xwindow_unmanaged_selectinput(icon_win, StructureNotifyMask);
-
- win=icon_win;
- attr=icon_attr;
-
+
/* Copy WM_CLASS as _ION_DOCKAPP_HACK */
p=xwindow_get_text_property(win, XA_WM_CLASS, &n);
xwindow_set_text_property(icon_win, ioncore_g.atom_dockapp_hack,
pdummy, 2);
}
+
+ win=icon_win;
+ attr=icon_attr;
}
}
param.geom=REGION_GEOM(cwin);
param.maprq=maprq;
- param.switchto=(init_state!=IconicState && clientwin_get_switchto(cwin));
param.jumpto=extl_table_is_bool_set(cwin->proptab, "jumpto");
+ param.switchto=(init_state!=IconicState &&
+ (param.jumpto || clientwin_get_switchto(cwin)));
param.gravity=(cwin->size_hints.flags&PWinGravity
? cwin->size_hints.win_gravity
: ForgetGravity);
}
if(postmanage_check(cwin, &attr)){
- if(param.jumpto && ioncore_g.focus_next==NULL)
+ /* Check for focus_next==NULL does not play nicely with
+ * pointer_focus_hack.
+ */
+ /*if(param.jumpto && ioncore_g.focus_next==NULL)*/
+ if(param.jumpto && !region_manager_is_focusnext((WRegion*)cwin))
region_goto((WRegion*)cwin);
hook_call_o(clientwin_mapped_hook, (Obj*)cwin);
return cwin;
* \codestr{lrud} (left-right, then up-down), or
* \codestr{random}. \\
* \var{mousefocus} & (string) Mouse focus mode:
- * \codestr{disable} or \codestr{sloppy}. \\
+ * \codestr{disabled} or \codestr{sloppy}. \\
* \var{unsqueeze} & (boolean) Auto-unsqueeze transients/menus/queries/etc. \\
* \var{autoraise} & (boolean) Autoraise regions in groups on goto. \\
* \end{tabularx}
XEnterWindowEvent *eev=&(ev->xcrossing);
WRegion *reg=NULL;
- if(ioncore_g.input_mode!=IONCORE_INPUTMODE_NORMAL)
+ if(ioncore_g.input_mode!=IONCORE_INPUTMODE_NORMAL ||
+ ioncore_g.no_mousefocus){
return;
+ }
if(eev->mode!=NotifyNormal && !ioncore_g.warp_enabled)
return;
}
-static bool region_manager_is_focusnext(WRegion *reg)
+bool region_manager_is_focusnext(WRegion *reg)
{
if(reg==NULL || ioncore_g.focus_next==NULL)
return FALSE;
/* May reg transfer focus to its children? */
extern bool region_may_control_focus(WRegion *reg);
+extern bool region_manager_is_focusnext(WRegion *reg);
/* Does reg have focus? */
extern bool region_is_active(WRegion *reg, bool pseudoact_ok);
if(r==NULL)
return NULL;
+ if(!region_same_rootwin(r, (WRegion*)cwin))
+ return NULL;
+
return region_prepare_manage(r, cwin, param, MANAGE_PRIORITY_NONE);
}
#include <libtu/dlist.h>
#include <libtu/output.h>
#include <libtu/locale.h>
+#include <libtu/debug.h>
#include "defer.h"
free_defer(d);
- warn(TR("Object destroyed while deferred actions are still pending."));
+ D(warn(TR("Object destroyed while deferred actions are still pending.")));
}
*
* Based on the code of the 'sm' module for Ion1 by an unknown contributor.
*
- * Ion is free software; you can redistribute it and/or modify it under
+ * This is free software; you can redistribute it and/or modify it under
* the terms of the GNU Lesser General Public License as published by
* the Free Software Foundation; either version 2.1 of the License, or
* (at your option) any later version.
*
* Based on the code of the 'sm' module for Ion1 by an unknown contributor.
*
- * Ion is free software; you can redistribute it and/or modify it under
+ * This is free software; you can redistribute it and/or modify it under
* the terms of the GNU Lesser General Public License as published by
* the Free Software Foundation; either version 2.1 of the License, or
* (at your option) any later version.
*
* Based on the code of the 'sm' module for Ion1 by an unknown contributor.
*
- * Ion is free software; you can redistribute it and/or modify it under
+ * This is free software; you can redistribute it and/or modify it under
* the terms of the GNU Lesser General Public License as published by
* the Free Software Foundation; either version 2.1 of the License, or
* (at your option) any later version.
*
* Based on the code of the 'sm' module for Ion1 by an unknown contributor.
*
- * Ion is free software; you can redistribute it and/or modify it under
+ * This is free software; you can redistribute it and/or modify it under
* the terms of the GNU Lesser General Public License as published by
* the Free Software Foundation; either version 2.1 of the License, or
* (at your option) any later version.
######################################
-SOURCES=pwm.c
+EXECUTABLE = pwm3
-ETC = cfg_pwm.lua
+SOURCES = pwm.c
-TARGETS = pwm3
+ETC = cfg_pwm.lua
INCLUDES += $(X11_INCLUDES)
INCLUDES += $(LIBMAINLOOP_INCLUDES) $(LIBTU_INCLUDES) $(LIBEXTL_INCLUDES)
INCLUDES += -I..
-LIBS += $(X11_LIBS)
+LIBS += $(X11_LIBS) -lSM -lICE
LIBS += $(WHOLEA) $(LIBMAINLOOP_LIBS) $(LIBEXTL_LIBS) $(LIBTU_LIBS) $(NO_WHOLEA)
LIBS += $(LUA_LIBS) $(DL_LIBS)
LIBS += -lm
-ifeq ($(PRELOAD_MODULES),1)
-EXT_OBJS += $(foreach mod, $(PWM_MODULE_LIST), ../$(mod)/$(mod).a)
-DEPEND_DEPENDS += preload.c
-SOURCES += preload.c
-TO_CLEAN += preload.c
-LIBS += -lSM -lICE
-else
-LDFLAGS += $(EXPORT_DYNAMIC)
-WHOLEA = -Wl,-whole-archive
-NO_WHOLEA = -Wl,-no-whole-archive
-endif
-
-ifeq ($(RELOCATABLE),1)
-DEFINES += -DCF_RELOCATABLE_PWM3_LOCATION=\"$(BINDIR)/pwm3\"
-endif
+MODULE_PATH = $(TOPDIR)
EXT_OBJS += ../ioncore/ioncore.a
######################################
-pwm3: $(OBJS) $(EXT_OBJS)
- $(CC) $(OBJS) $(WHOLEA) $(EXT_OBJS) $(NO_WHOLEA) $(LDFLAGS) -o $@
-
-preload.c:
- $(LUA) ../build/mkpreload.lua $(PWM_MODULE_LIST) > preload.c
-
-_install:
- $(INSTALLDIR) $(BINDIR)
- $(INSTALLBIN) pwm3 $(BINDIR)
+_install: executable_install
$(INSTALLDIR) $(PWM_ETCDIR)
for i in $(ETC); do \
$(INSTALL) -m $(DATA_MODE) $$i $(PWM_ETCDIR); \
libtu_init(argv[0]);
-#ifdef CF_RELOCATABLE_PWM3_LOCATION
- prefix_set(argv[0], CF_RELOCATABLE_PWM3_LOCATION);
+#ifdef CF_RELOCATABLE_BIN_LOCATION
+ prefix_set(argv[0], CF_RELOCATABLE_BIN_LOCATION);
#endif
localedir=prefix_add(LOCALEDIR);
# Message catalogs
LOCALEDIR=$(PREFIX)/share/locale
+# Executable suffix (for Cygwin).
+#BIN_SUFFIX = .exe
+
##
## Modules
# monotonic clock at all (which Ion can live with, and usually detect).
EXTRA_LIBS += -lrt
+# Cygwin needs this.
+#DEFINES += -DCF_NO_GETLOADAVG
+
#
# If you're using/have gcc, it is unlikely that you need to modify
######################################
-LIBS += $(LIBTU_LIBS)
-INCLUDES += $(LIBTU_INCLUDES)
-CFLAGS += $(XOPEN_SOURCE) $(C99_SOURCE)
+EXTRA_EXECUTABLE = ion-completefile
SOURCES=ion-completefile.c
-TARGETS=ion-completefile
+LIBS += $(LIBTU_LIBS)
+INCLUDES += $(LIBTU_INCLUDES)
+CFLAGS += $(XOPEN_SOURCE) $(C99_SOURCE)
######################################
######################################
-ion-completefile: $(SOURCES)
- $(CC) $< $(CFLAGS) $(LDFLAGS) -o $@
-
-_install:
- $(INSTALLDIR) $(EXTRABINDIR)
- $(INSTALLBIN) ion-completefile $(EXTRABINDIR)
+_install: executable_install
######################################
+EXTRA_EXECUTABLE = ion-statusd
+
+SOURCES = ion-statusd.c exec.c extlrx.c
+
INCLUDES += $(LIBMAINLOOP_INCLUDES) $(LIBEXTL_INCLUDES) $(LIBTU_INCLUDES)
LIBS += $(LIBMAINLOOP_LIBS) $(LIBEXTL_LIBS) $(LIBTU_LIBS) $(LUA_LIBS) $(DL_LIBS) -lm
CFLAGS += $(XOPEN_SOURCE) $(C99_SOURCE)
DEFINES += -DETCDIR=\"$(ETCDIR)\" -DSHAREDIR=\"$(SHAREDIR)\" \
-DEXTRABINDIR=\"$(EXTRABINDIR)\" -DMODULEDIR=\"$(MODULEDIR)\" \
- -DLCDIR=\"$(LCDIR)\" -DLOCALEDIR=\"$(LOCALEDIR)\" \
- -DSTATUSD_LOCATION=\"$(EXTRABINDIR)/ion-statusd\"
+ -DLCDIR=\"$(LCDIR)\" -DLOCALEDIR=\"$(LOCALEDIR)\"
-SOURCES = ion-statusd.c exec.c extlrx.c
-
-TARGETS = ion-statusd
-
LUA_SOURCES = statusd_date.lua statusd_mail.lua statusd_load.lua
MAKE_EXPORTS = statusd
######################################
-ion-statusd: $(OBJS) $(EXT_OBJS)
- $(CC) $(OBJS) $(EXT_OBJS) $(LDFLAGS) -o $@
-
-_install: lc_install
- $(INSTALLDIR) $(EXTRABINDIR)
- $(INSTALLBIN) ion-statusd $(EXTRABINDIR)
+_install: lc_install executable_install
*
* Copyright (c) Tuomo Valkonen 2005-2008.
*
- * Ion is free software; you can redistribute it and/or modify it under
- * the terms of the GNU Lesser General Public License as published by
- * the Free Software Foundation; either version 2.1 of the License, or
- * (at your option) any later version.
+ * See the included file LICENSE for details.
*/
*
* Copyright (c) Tuomo Valkonen 2004-2008.
*
- * Ion is free software; you can redistribute it and/or modify it under
- * the terms of the GNU Lesser General Public License as published by
- * the Free Software Foundation; either version 2.1 of the License, or
- * (at your option) any later version.
+ * See the included file LICENSE for details.
*/
#include <libextl/extl.h>
*
* Copyright (c) Tuomo Valkonen 2004-2008.
*
- * Ion is free software; you can redistribute it and/or modify it under
- * the terms of the GNU Lesser General Public License as published by
- * the Free Software Foundation; either version 2.1 of the License, or
- * (at your option) any later version.
+ * See the included file LICENSE for details.
*/
#include <string.h>
static const char statusd_license[]=DUMMY_TR(
- "This program is free software; you can redistribute it and/or\n"
- "modify it under the terms of the GNU Lesser General Public\n"
- "License as published by the Free Software Foundation; either\n"
- "version 2.1 of the License, or (at your option) any later version.\n"
+ "This software is licensed under the GNU Lesser General Public License\n"
+ "(LGPL), version 2.1, extended with terms applying to the use of the name\n"
+ "of the project, Ion(tm), unless otherwise indicated in components taken\n"
+ "from elsewhere. For details, see the file LICENSE that you should have\n"
+ "received with this software.\n"
"\n"
"This program is distributed in the hope that it will be useful,\n"
"but WITHOUT ANY WARRANTY; without even the implied warranty of\n"
- "MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU\n"
- "Lesser General Public License for more details.\n");
+ "MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n");
/* new_informs=TRUE because we should always print period when
libtu_init(argv[0]);
-#ifdef STATUSD_LOCATION
- prefix_set(argv[0], STATUSD_LOCATION);
+#ifdef CF_RELOCATABLE_BIN_LOCATION
+ prefix_set(argv[0], CF_RELOCATABLE_BIN_LOCATION);
#endif
extl_init();
ExtlTab statusd_getloadavg()
{
ExtlTab t=extl_create_table();
+#ifndef CF_NO_GETLOADAVG
double l[3];
int n;
extl_table_sets_d(t, "5min", l[1]);
if(n>=3)
extl_table_sets_d(t, "15min", l[2]);
-
+#endif
return t;
}
--
-- Copyright (c) Tuomo Valkonen 2004-2008.
--
--- Ion is free software; you can redistribute it and/or modify it under
--- the terms of the GNU Lesser General Public License as published by
--- the Free Software Foundation; either version 2.1 of the License, or
--- (at your option) any later version.
+-- See the included file LICENSE for details.
--
--
-- Copyright (c) Tuomo Valkonen 2004-2008.
--
--- Ion is free software; you can redistribute it and/or modify it under
--- the terms of the GNU Lesser General Public License as published by
--- the Free Software Foundation; either version 2.1 of the License, or
--- (at your option) any later version.
+-- See the included file LICENSE for details.
--
--
--
-- Copyright (c) Tuomo Valkonen 2004-2008.
--
--- Ion is free software; you can redistribute it and/or modify it under
--- the terms of the GNU Lesser General Public License as published by
--- the Free Software Foundation; either version 2.1 of the License, or
--- (at your option) any later version.
+-- See the included file LICENSE for details.
--
-- The keyword for this monitor
-#define ION_RELEASE "3rc-20080103"
+#define ION_RELEASE "3-20080207"
#define ION_VERSION ION_RELEASE
#define ION_API_VERSION "3"