diff --git a/gtk2_ardour/main.cc b/gtk2_ardour/main.cc
index 7b5fce1..c7427ef 100644
--- a/gtk2_ardour/main.cc
+++ b/gtk2_ardour/main.cc
@@ -291,6 +291,27 @@ sigpipe_handler (int sig)
 	}
 }
 
+static bool ladish_L1_save_request = false;
+
+static gboolean
+maybe_ladish_L1_save (void* /* ignored */)
+{
+	if (ladish_L1_save_request) {
+		cout << "ladish L1 save request" << endl;
+		ladish_L1_save_request = false;
+		ARDOUR_UI::instance()->save_state("");
+	}
+
+	return true;
+}
+
+static void
+sigusr1_handler (int sig)
+{
+	//cout << "SIGUSR1 received!" << endl;
+	ladish_L1_save_request = true;
+}
+
 #ifdef HAVE_LV2
 void close_external_ui_windows();
 #endif
@@ -387,6 +408,12 @@ int main (int argc, char* argv[])
 		cerr << _("Cannot install SIGPIPE error handler") << endl;
 	}
 
+	g_timeout_add (300, maybe_ladish_L1_save, 0);
+
+	if (::signal (SIGUSR1, sigusr1_handler)) {
+		cerr << _("Cannot install SIGUSR1 error handler") << endl;
+	}
+
         try { 
 		ui = new ARDOUR_UI (&argc, &argv);
 	} catch (failed_constructor& err) {
