--- /dev/null
+diff -Nru bluefish-0.11.orig/src/bluefish.c bluefish-0.11/src/bluefish.c
+--- bluefish-0.11.orig/src/bluefish.c 2003-07-27 17:26:58.000000000 +0200
++++ bluefish-0.11/src/bluefish.c 2003-11-19 12:48:08.000000000 +0100
+@@ -110,7 +110,8 @@
+ #ifndef NOSPLASH
+ GtkWidget *splash_window;
+ #endif /* #ifndef NOSPLASH */
+-
++ gchar *home_etc = getenv("HOME_ETC");
++
+ #ifdef ENABLE_NLS
+ setlocale(LC_ALL,"");
+ bindtextdomain(PACKAGE,LOCALEDIR);
+@@ -139,7 +140,7 @@
+ #endif /* #ifndef NOSPLASH */
+
+ {
+- gchar *filename = g_strconcat(g_get_home_dir(), "/.bluefish/dir_history", NULL);
++ gchar *filename = g_strconcat(home_etc ? home_etc : g_get_home_dir(), "/.bluefish/dir_history", NULL);
+ main_v->recent_directories = get_stringlist(filename, NULL);
+ g_free(filename);
+ }
+@@ -171,7 +172,7 @@
+ gchar *shortcutfilename;
+ GtkSettings* gtksettings = gtk_settings_get_default();
+ g_object_set(G_OBJECT(gtksettings), "gtk-can-change-accels", TRUE, NULL);
+- shortcutfilename = g_strconcat(g_get_home_dir(), "/.bluefish/menudump_2", NULL);
++ shortcutfilename = g_strconcat(home_etc ? home_etc : g_get_home_dir(), "/.bluefish/menudump_2", NULL);
+ gtk_accel_map_load(shortcutfilename);
+ g_free(shortcutfilename);
+ }
+@@ -218,7 +219,8 @@
+
+ rcfile_save_all();
+ {
+- gchar *filename = g_strconcat(g_get_home_dir(), "/.bluefish/dir_history", NULL);
++ gchar *home_etc = getenv("HOME_ETC");
++ gchar *filename = g_strconcat(home_etc ? home_etc : g_get_home_dir(), "/.bluefish/dir_history", NULL);
+ put_stringlist_limited(filename, main_v->recent_directories, main_v->props.max_dir_history);
+ g_free(filename);
+ }
+diff -Nru bluefish-0.11.orig/src/fref.c bluefish-0.11/src/fref.c
+--- bluefish-0.11.orig/src/fref.c 2003-07-27 17:26:58.000000000 +0200
++++ bluefish-0.11/src/fref.c 2003-11-19 12:45:04.000000000 +0100
+@@ -1456,7 +1456,8 @@
+
+
+ static void fref_popup_menu_rescan_lcb(GtkWidget *widget,gpointer user_data) {
+- gchar *userdir = g_strconcat(g_get_home_dir(), "/.bluefish/", NULL);
++ gchar *home_etc = getenv("HOME_ETC");
++ gchar *userdir = g_strconcat(home_etc ? home_etc : g_get_home_dir(), "/.bluefish/", NULL);
+ DEBUG_MSG("fref_popup_menu_rescan_lcb, started\n");
+ fref_rescan_dir(PKGDATADIR);
+ fref_rescan_dir(userdir);
+diff -Nru bluefish-0.11.orig/src/menu.c bluefish-0.11/src/menu.c
+--- bluefish-0.11.orig/src/menu.c 2003-07-27 17:26:58.000000000 +0200
++++ bluefish-0.11/src/menu.c 2003-11-19 12:49:55.000000000 +0100
+@@ -796,11 +796,12 @@
+
+ void recent_menu_init() {
+ gchar *recentfile;
++ gchar *home_etc = getenv("HOME_ETC");
+ GList *filenames=NULL, *tmp, *tmp2, *newlist=NULL;
+ gint recent_file_count=0;
+
+ DEBUG_MSG("open_recent_list, started\n");
+- recentfile = g_strconcat(g_get_home_dir(), "/.bluefish/recentlist", NULL);
++ recentfile = g_strconcat(home_etc ? home_etc : g_get_home_dir(), "/.bluefish/recentlist", NULL);
+ filenames = get_stringlist(recentfile, filenames);
+ if (!filenames) {
+ filenames = add_to_stringlist(menus.recent_files, _("(none)"));
+@@ -862,7 +863,8 @@
+
+ } else {
+ gchar *tmpfilename, *recentfile;
+- recentfile = g_strconcat(g_get_home_dir(), "/.bluefish/recentlist", NULL);
++ gchar *home_etc = getenv("HOME_ETC");
++ recentfile = g_strconcat(home_etc ? home_etc : g_get_home_dir(), "/.bluefish/recentlist", NULL);
+ /* save the new list */
+ tmpfilename = g_strconcat(filename, "\n", NULL);
+ DEBUG_MSG("add_to_recent_list, trying to append to %s\n", recentfile);
+diff -Nru bluefish-0.11.orig/src/rcfile.c bluefish-0.11/src/rcfile.c
+--- bluefish-0.11.orig/src/rcfile.c 2003-07-27 18:19:58.000000000 +0200
++++ bluefish-0.11/src/rcfile.c 2003-11-19 12:56:12.000000000 +0100
+@@ -469,6 +469,7 @@
+ void rcfile_parse_main(void)
+ {
+ gchar *filename;
++ gchar *home_etc = getenv("HOME_ETC");
+
+ DEBUG_MSG("rcfile_parse_main, started\n");
+
+@@ -478,7 +479,7 @@
+ /*Make the config_rc list ready for filling with data and set default values */
+ main_configlist = props_init_main(NULL);
+
+- filename = g_strconcat(g_get_home_dir(), "/.bluefish/rcfile_v2", NULL);
++ filename = g_strconcat(home_etc ? home_etc : g_get_home_dir(), "/.bluefish/rcfile_v2", NULL);
+ if (!parse_config_file(main_configlist, filename)) {
+ /* should we initialize some things ?? */
+ }
+@@ -567,7 +568,7 @@
+ main_v->props.filefilters = g_list_append(main_v->props.filefilters, arr);
+ }
+ if (main_v->props.reference_files == NULL) {
+- gchar *userdir = g_strconcat(g_get_home_dir(), "/.bluefish/", NULL);
++ gchar *userdir = g_strconcat(home_etc ? home_etc : g_get_home_dir(), "/.bluefish/", NULL);
+ /* if the user does not yet have any function reference files, set them to default values */
+ fref_rescan_dir(PKGDATADIR);
+ fref_rescan_dir(userdir);
+@@ -589,7 +590,8 @@
+ }
+
+ static gint rcfile_save_main(void) {
+- gchar *filename = g_strconcat(g_get_home_dir(), "/.bluefish/rcfile_v2", NULL);
++ gchar *home_etc = getenv("HOME_ETC");
++ gchar *filename = g_strconcat(home_etc ? home_etc : g_get_home_dir(), "/.bluefish/rcfile_v2", NULL);
+ return save_config_file(main_configlist, filename);
+ }
+ /*
+@@ -607,13 +609,14 @@
+ void rcfile_parse_highlighting(void) {
+ gchar *filename;
+ gchar *defaultfile;
++ gchar *home_etc = getenv("HOME_ETC");
+
+ DEBUG_MSG("rcfile_parse_highlighting, started\n");
+
+ highlighting_configlist = NULL;
+ init_prop_arraylist(&highlighting_configlist, &main_v->props.highlight_patterns, "patterns:", 0);
+
+- filename = g_strconcat(g_get_home_dir(), "/.bluefish/highlighting", NULL);
++ filename = g_strconcat(home_etc ? home_etc : g_get_home_dir(), "/.bluefish/highlighting", NULL);
+ defaultfile = return_first_existing_filename(PKGDATADIR"highlighting.default",
+ "data/highlighting.default",
+ "../data/highlighting.default",NULL);
+@@ -638,7 +641,8 @@
+
+ static gint rcfile_save_highlighting(void) {
+ gint retval;
+- gchar *filename = g_strconcat(g_get_home_dir(), "/.bluefish/highlighting", NULL);
++ gchar *home_etc = getenv("HOME_ETC");
++ gchar *filename = g_strconcat(home_etc ? home_etc : g_get_home_dir(), "/.bluefish/highlighting", NULL);
+ retval = save_config_file(highlighting_configlist, filename);
+ g_free(filename);
+ return retval;
+@@ -647,6 +651,7 @@
+ void rcfile_parse_custom_menu(void) {
+ gchar *filename;
+ gchar *defaultfile;
++ gchar *home_etc = getenv("HOME_ETC");
+ DEBUG_MSG("rcfile_parse_custom_menu, started\n");
+
+ custom_menu_configlist = NULL;
+@@ -654,7 +659,7 @@
+ init_prop_arraylist(&custom_menu_configlist, &main_v->props.cmenu_insert, "cmenu_insert:", 0);
+ init_prop_arraylist(&custom_menu_configlist, &main_v->props.cmenu_replace, "cmenu_replace:", 0);
+
+- filename = g_strconcat(g_get_home_dir(), "/.bluefish/custom_menu", NULL);
++ filename = g_strconcat(home_etc ? home_etc : g_get_home_dir(), "/.bluefish/custom_menu", NULL);
+ defaultfile = return_first_existing_filename(PKGDATADIR"custom_menu.default",
+ "data/custom_menu.default",
+ "../data/custom_menu.default",NULL);
+@@ -771,7 +776,8 @@
+ }
+ static gint rcfile_save_custom_menu(void) {
+ gint retval;
+- gchar *filename = g_strconcat(g_get_home_dir(), "/.bluefish/custom_menu", NULL);
++ gchar *home_etc = getenv("HOME_ETC");
++ gchar *filename = g_strconcat(home_etc ? home_etc : g_get_home_dir(), "/.bluefish/custom_menu", NULL);
+ retval = save_config_file(custom_menu_configlist, filename);
+ g_free(filename);
+ return retval;
+@@ -779,7 +785,8 @@
+
+ #define DIR_MODE (S_IRWXU | S_IRGRP | S_IXGRP | S_IROTH | S_IXOTH) /* same as 0755 */
+ void rcfile_check_directory(void) {
+- gchar *rcdir = g_strconcat(g_get_home_dir(), "/.bluefish", NULL);
++ gchar *home_etc = getenv("HOME_ETC");
++ gchar *rcdir = g_strconcat(home_etc ? home_etc : g_get_home_dir(), "/.bluefish", NULL);
+ if (!g_file_test(rcdir, G_FILE_TEST_IS_DIR)) {
+ mkdir(rcdir, DIR_MODE);
+ }
+@@ -799,7 +806,8 @@
+ break;
+ case 3:
+ {
+- gchar *shortcutfilename = g_strconcat(g_get_home_dir(), "/.bluefish/menudump_2", NULL);
++ gchar *home_etc = getenv("HOME_ETC");
++ gchar *shortcutfilename = g_strconcat(home_etc ? home_etc : g_get_home_dir(), "/.bluefish/menudump_2", NULL);
+ gtk_accel_map_save(shortcutfilename);
+ g_free(shortcutfilename);
+ }