diff -ru --unidirectional-new-file -x '*.bak' -x m4 -x 'Makefile.in*' -x Makefile -x configure -x ltmain.sh -x aclocal.m4 -x autom4te.cache -x 'config.*' -x '*~' -x gtk-doc.make a/autogen.sh b/autogen.sh
--- a/autogen.sh	1970-01-01 01:00:00.000000000 +0100
+++ b/autogen.sh	2012-01-12 15:38:16.000000000 +0100
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -e
+. gnome-autogen.sh
+exit 0
diff -ru --unidirectional-new-file -x '*.bak' -x m4 -x 'Makefile.in*' -x Makefile -x configure -x ltmain.sh -x aclocal.m4 -x autom4te.cache -x 'config.*' -x '*~' -x gtk-doc.make a/configure.in b/configure.in
--- a/configure.in	2011-12-25 03:58:21.000000000 +0100
+++ b/configure.in	2012-01-16 09:17:25.000000000 +0100
@@ -121,6 +121,16 @@
 	gconf-2.0 >= $GCONF_REQUIRED
 ])
 
+dnl --------------------------------------------------------------------------
+dnl Check to see if GDK uses the quartz backend and if we can use 
+dnl MacOSX integration
+_gdk_tgt=`$PKG_CONFIG --variable=target gdk-2.0`
+AM_CONDITIONAL([GDK_TARGET_QUARTZ], [test x$_gdk_tgt = xquartz])
+if test "x$_gdk_tgt" = xquartz; then 
+   PKG_CHECK_MODULES(GTK_MAC, gtk-mac-integration)
+   AC_SUBST(GTK_MAC_LIBS)
+   AC_SUBST(GTK_MAC_CFLAGS)
+fi
 AC_DEFINE(WITH_GNOME, 1, [Define to 1 to indicate presence of GNOME libraries])
 
 AC_SUBST(PLANNER_CFLAGS)
Only in a/data: planner.desktop.in
Only in a/libplanner: mrp-marshal.c
Only in a/libplanner: mrp-marshal.h
Only in a: libplanner-1.pc
diff -ru --unidirectional-new-file -x '*.bak' -x m4 -x 'Makefile.in*' -x Makefile -x configure -x ltmain.sh -x aclocal.m4 -x autom4te.cache -x 'config.*' -x '*~' -x gtk-doc.make a/src/Makefile.am b/src/Makefile.am
--- a/src/Makefile.am	2011-12-22 23:53:44.000000000 +0100
+++ b/src/Makefile.am	2012-01-16 09:07:43.000000000 +0100
@@ -8,7 +8,8 @@
 	-DPREFIX=\""$(prefix)"\"				\
 	-DSYSCONFDIR=\""$(sysconfdir)"\"			\
 	-DLIBDIR=\""$(libdir)"\"				\
-	-DDATADIR=\""$(datadir)"\"
+	-DDATADIR=\""$(datadir)"\"				\
+	$(GTK_MAC_CFLAGS)
 
 if HAVE_PYTHON_PLUGIN
 INCLUDES += $(PYTHON_INCLUDES)
@@ -21,7 +22,8 @@
 planner_LDADD = \
 	libplannerapp.la \
 	$(top_builddir)/libplanner/libplanner-1.la \
-	$(PLANNER_LIBS)
+	$(PLANNER_LIBS) \
+	$(GTK_MAC_LIBS)
 
 
 # Create a convenience library to link our tests against
diff -ru --unidirectional-new-file -x '*.bak' -x m4 -x 'Makefile.in*' -x Makefile -x configure -x ltmain.sh -x aclocal.m4 -x autom4te.cache -x 'config.*' -x '*~' -x gtk-doc.make a/src/planner-gantt-view.c b/src/planner-gantt-view.c
--- a/src/planner-gantt-view.c	2011-09-29 16:15:45.000000000 +0200
+++ b/src/planner-gantt-view.c	2012-01-16 09:07:43.000000000 +0100
@@ -136,19 +136,19 @@
 
 static const GtkActionEntry entries[] = {
 	{ "InsertTask",      "planner-stock-insert-task",    N_("_Insert Task"),
-	  "<control>i",        N_("Insert a new task"),
+	  PLANNER_MODIFIER_KEY "i",        N_("Insert a new task"),
 	  G_CALLBACK (gantt_view_insert_task_cb) },
 	{ "InsertTasks",     "planner-stock-insert-task",    N_("In_sert Tasks..."),
 	  NULL,                NULL,
 	  G_CALLBACK (gantt_view_insert_tasks_cb) },
 	{ "RemoveTask",      "planner-stock-remove-task",    N_("_Remove Task"),
-	  "<control>d",        N_("Remove the selected tasks"),
+	  PLANNER_MODIFIER_KEY "d",        N_("Remove the selected tasks"),
 	  G_CALLBACK (gantt_view_remove_task_cb) },
 	{ "EditTask",        NULL,                           N_("_Edit Task Properties..."),
-	  "<shift><control>e", NULL,
+	  "<shift>" PLANNER_MODIFIER_KEY "e", NULL,
 	  G_CALLBACK (gantt_view_edit_task_cb) },
 	{ "SelectAll",       NULL,                           N_("Select _All"),
-	  "<control>a",        N_("Select all tasks"),
+	  PLANNER_MODIFIER_KEY "a",        N_("Select all tasks"),
 	  G_CALLBACK (gantt_view_select_all_cb) },
 	{ "UnlinkTask",      "planner-stock-unlink-task",    N_("_Unlink Task"),
 	  NULL,                N_("Unlink the selected tasks"),
@@ -157,10 +157,10 @@
 	  NULL,                N_("Link the selected tasks"),
 	  G_CALLBACK (gantt_view_link_tasks_cb) },
 	{ "IndentTask",      "planner-stock-indent-task",    N_("I_ndent Task"),
-	  "<shift><control>i", N_("Indent the selected tasks"),
+	  "<shift>" PLANNER_MODIFIER_KEY "i", N_("Indent the selected tasks"),
 	  G_CALLBACK (gantt_view_indent_task_cb) },
 	{ "UnindentTask",    "planner-stock-unindent-task",  N_("Unin_dent Task"),
-	  "<shift><control>u", N_("Unindent the selected tasks"),
+	  "<shift>" PLANNER_MODIFIER_KEY "u", N_("Unindent the selected tasks"),
 	  G_CALLBACK (gantt_view_unindent_task_cb) },
 	{ "MoveTaskUp",      "planner-stock-move-task-up",   N_("Move Task _Up"),
 	  NULL,                N_("Move the selected tasks upwards"),
@@ -175,10 +175,10 @@
 	  NULL,                N_("Zoom to fit the entire project"),
 	  G_CALLBACK (gantt_view_zoom_to_fit_cb) },
 	{ "ZoomIn",          GTK_STOCK_ZOOM_IN,              N_("_Zoom In"),
-	  "<control>plus",     N_("Zoom in"),
+	  PLANNER_MODIFIER_KEY "plus",     N_("Zoom in"),
 	  G_CALLBACK (gantt_view_zoom_in_cb) },
 	{ "ZoomOut",         GTK_STOCK_ZOOM_OUT,             N_("Zoom _Out"),
-	  "<control>minus",    N_("Zoom out"),
+	  PLANNER_MODIFIER_KEY "minus",    N_("Zoom out"),
 	  G_CALLBACK (gantt_view_zoom_out_cb) },
 	{ "EditColumns",     NULL,                           N_("Edit _Visible Columns"),
 	  NULL,                N_("Edit visible columns"),
diff -ru --unidirectional-new-file -x '*.bak' -x m4 -x 'Makefile.in*' -x Makefile -x configure -x ltmain.sh -x aclocal.m4 -x autom4te.cache -x 'config.*' -x '*~' -x gtk-doc.make a/src/planner-main.c b/src/planner-main.c
--- a/src/planner-main.c	2011-10-14 17:38:41.000000000 +0200
+++ b/src/planner-main.c	2012-01-16 09:21:28.000000000 +0100
@@ -70,6 +70,11 @@
 		return 1;
 	}
 
+#ifdef MAC_INTEGRATION
+	/* Initialize GtkOSXApplication */
+	GtkOSXApplication *osxApp =g_object_new(GTK_TYPE_OSX_APPLICATION, NULL);
+#endif
+
 	filename = mrp_paths_get_image_dir ("gnome-planner.png");
 	gtk_window_set_default_icon_from_file (filename, NULL);
 	g_free (filename);
@@ -91,6 +96,10 @@
 		g_warning(_("Invalid geometry string \"%s\"\n"), geometry);
 
 	gtk_widget_show_all (main_window);
+#ifdef MAC_INTEGRATION
+	/* Move menus around and connect NSApplicationBlockTermination signal */
+	planner_window_osx_integrate (PLANNER_WINDOW(main_window));
+#endif
 
 	if (argc > 1) {
 		i = 1;
@@ -125,6 +134,12 @@
 		}
 	}
 
+#ifdef MAC_INTEGRATION
+	g_signal_connect(osxApp, "NSApplicationOpenFile",
+			 G_CALLBACK (planner_window_osx_open), main_window);
+	gtk_osxapplication_ready(osxApp);
+#endif
+
         gtk_main ();
 
 	g_object_unref (application);
Only in a/src: planner-marshal.c
Only in a/src: planner-marshal.h
diff -ru --unidirectional-new-file -x '*.bak' -x m4 -x 'Makefile.in*' -x Makefile -x configure -x ltmain.sh -x aclocal.m4 -x autom4te.cache -x 'config.*' -x '*~' -x gtk-doc.make a/src/planner-resource-view.c b/src/planner-resource-view.c
--- a/src/planner-resource-view.c	2011-12-25 03:54:01.000000000 +0100
+++ b/src/planner-resource-view.c	2012-01-16 09:07:44.000000000 +0100
@@ -231,22 +231,22 @@
 
 static const GtkActionEntry entries[] = {
 	{ "InsertResource",   "planner-stock-insert-resource", N_("_Insert Resource"),
-	  "<Control>i",        N_("Insert a new resource"),
+	  PLANNER_MODIFIER_KEY "i",        N_("Insert a new resource"),
 	  G_CALLBACK (resource_view_insert_resource_cb) },
 	{ "InsertResources",  "planner-stock-insert-resource", N_("In_sert Resources..."),
 	  NULL,                NULL,
 	  G_CALLBACK (resource_view_insert_resources_cb) },
 	{ "RemoveResource",   "planner-stock-remove-resource", N_("_Remove Resource"),
-	  "<Control>d",        N_("Remove the selected resource"),
+	  PLANNER_MODIFIER_KEY "d",        N_("Remove the selected resource"),
 	  G_CALLBACK (resource_view_remove_resource_cb) },
 	{ "EditResource",     GTK_STOCK_PROPERTIES,            N_("_Edit Resource Properties..."),
-	  "<Shift><Control>e", NULL,
+	  "<Shift>" PLANNER_MODIFIER_KEY "e", NULL,
 	  G_CALLBACK (resource_view_edit_resource_cb) },
 	{ "EditGroups",       "planner-stock-edit-groups",     N_("Edit _Groups"),
 	  NULL,                N_("Edit resource groups"),
 	  G_CALLBACK (resource_view_edit_groups_cb) },
 	{ "SelectAll",        NULL,                            N_("Select _All"),
-	  "<Control>a",        N_("Select all tasks"),
+	  PLANNER_MODIFIER_KEY "a",        N_("Select all tasks"),
 	  G_CALLBACK (resource_view_select_all_cb) },
 	{ "EditCustomProps",  GTK_STOCK_PROPERTIES,            N_("Edit _Custom Properties..."),
 	  NULL,                NULL,
diff -ru --unidirectional-new-file -x '*.bak' -x m4 -x 'Makefile.in*' -x Makefile -x configure -x ltmain.sh -x aclocal.m4 -x autom4te.cache -x 'config.*' -x '*~' -x gtk-doc.make a/src/planner-task-view.c b/src/planner-task-view.c
--- a/src/planner-task-view.c	2011-09-29 16:15:45.000000000 +0200
+++ b/src/planner-task-view.c	2012-01-16 09:07:44.000000000 +0100
@@ -117,19 +117,19 @@
 
 static const GtkActionEntry entries[] = {
 	{ "InsertTask",      "planner-stock-insert-task",      N_("_Insert Task"),
-	  "<Control>i",        N_("Insert a new task"),
+	  PLANNER_MODIFIER_KEY "i",        N_("Insert a new task"),
           G_CALLBACK (task_view_insert_task_cb) },
 	{ "InsertTasks",     "planner-stock-insert-task",      N_("In_sert Tasks..."),
 	  NULL,                NULL,
 	  G_CALLBACK (task_view_insert_tasks_cb) },
 	{ "RemoveTask",      "planner-stock-remove-task",      N_("_Remove Task"),
-	  "<Control>d",        N_("Remove the selected tasks"),
+	  PLANNER_MODIFIER_KEY "d",        N_("Remove the selected tasks"),
 	  G_CALLBACK (task_view_remove_task_cb) },
 	{ "EditTask",        NULL,                             N_("_Edit Task"),
-	  "<Shift><Control>e", NULL,
+	  "<Shift>" PLANNER_MODIFIER_KEY "e", NULL,
 	  G_CALLBACK (task_view_edit_task_cb) },
 	{ "SelectAll",       NULL,                             N_("Select _All"),
-	  "<Control>a",        N_("Select all tasks"),
+	  PLANNER_MODIFIER_KEY "a",        N_("Select all tasks"),
 	  G_CALLBACK (task_view_select_all_cb) },
 	{ "UnlinkTask",      "planner-stock-unlink-task",      N_("_Unlink Task"),
 	  NULL,                N_("Unlink the selected tasks"),
@@ -138,10 +138,10 @@
 	  NULL,                N_("Link the selected tasks"),
 	  G_CALLBACK (task_view_link_tasks_cb) },
 	{ "IndentTask",      "planner-stock-indent-task",      N_("I_ndent Task"),
-	  "<Shift><Control>i", N_("Indent the selected tasks"),
+	  "<Shift>" PLANNER_MODIFIER_KEY "i", N_("Indent the selected tasks"),
 	  G_CALLBACK (task_view_indent_task_cb) },
 	{ "UnindentTask",    "planner-stock-unindent-task",    N_("Unin_dent Task"),
-	  "<Shift><Control>u", N_("Unindent the selected tasks"),
+	  "<Shift>" PLANNER_MODIFIER_KEY "u", N_("Unindent the selected tasks"),
 	  G_CALLBACK (task_view_unindent_task_cb) },
 	{ "MoveTaskUp",      "planner-stock-move-task-up",     N_("Move Task _Up"),
 	  NULL,                N_("Move the selected tasks upwards"),
diff -ru --unidirectional-new-file -x '*.bak' -x m4 -x 'Makefile.in*' -x Makefile -x configure -x ltmain.sh -x aclocal.m4 -x autom4te.cache -x 'config.*' -x '*~' -x gtk-doc.make a/src/planner-window.c b/src/planner-window.c
--- a/src/planner-window.c	2011-12-23 00:48:31.000000000 +0100
+++ b/src/planner-window.c	2012-01-16 09:22:36.000000000 +0100
@@ -195,6 +195,10 @@
 static void handle_links (GtkAboutDialog *about G_GNUC_UNUSED,
 			  const gchar *link,
 			  gpointer data);
+#ifdef MAC_INTEGRATION
+/* Call for each window when quitting on Mac OS X (Quartz) */
+static gboolean window_osx_quit (GtkWidget* sender, gpointer data);
+#endif
 
 #define CONF_WINDOW_DIR       "/ui"
 #define CONF_WINDOW_MAXIMIZED "/ui/main_window_maximized"
@@ -221,11 +225,11 @@
 	  NULL
 	},
 	{ "FileNew",
-	  GTK_STOCK_NEW,           N_("_New Project"),             "<Control>n",        N_("Create a new project"),
+	  GTK_STOCK_NEW,           N_("_New Project"),             PLANNER_MODIFIER_KEY "n",        N_("Create a new project"),
 	  G_CALLBACK (window_new_cb)
 	},
 	{ "FileOpen",
-	  GTK_STOCK_OPEN,          N_("_Open..."),                 "F3",                N_("Open a project"),
+	  GTK_STOCK_OPEN,          N_("_Open..."),                 PLANNER_OPEN_KEY,                N_("Open a project"),
 	  G_CALLBACK (window_open_cb) },
 	{ "FileOpenRecent",
 	  NULL,                    N_("Open _Recent"),             NULL,                NULL,
@@ -235,38 +239,38 @@
 	  NULL },
 
 	{ "FileSave",
-	  GTK_STOCK_SAVE,          N_("_Save"),                    "<Control>s",        N_("Save the current project"),
+	  GTK_STOCK_SAVE,          N_("_Save"),                    PLANNER_MODIFIER_KEY "s",        N_("Save the current project"),
 	  G_CALLBACK (window_save_cb) },
 	{ "Export",
 	  NULL,                    N_("_Export"),                  NULL,                NULL,
 	  NULL },
 	{ "FileSaveAs",
-	  GTK_STOCK_SAVE_AS,       N_("Save _As..."),              "<Shift><Control>s", N_("Save the current project with a different name"),
+	  GTK_STOCK_SAVE_AS,       N_("Save _As..."),              "<Shift>" PLANNER_MODIFIER_KEY "s", N_("Save the current project with a different name"),
 	  G_CALLBACK (window_save_as_cb) },
 	{ "FilePageSetup",
 	  NULL,                    N_("Page Set_up..."),           NULL,                N_("Setup the page settings for your current printer"),
 	  G_CALLBACK (window_page_setup_cb) },
 	{ "FilePrint",
-	  GTK_STOCK_PRINT,         N_("_Print..."),                "<Control>p",        N_("Print the current project"),
+	  GTK_STOCK_PRINT,         N_("_Print..."),                PLANNER_MODIFIER_KEY "p",        N_("Print the current project"),
 	  G_CALLBACK (window_print_cb) },
 	{ "FilePrintPreview",
-	  GTK_STOCK_PRINT_PREVIEW, N_("Print Pre_view"),           "<Shift><Control>p", N_("Print preview of the current project"),
+	  GTK_STOCK_PRINT_PREVIEW, N_("Print Pre_view"),           "<Shift>" PLANNER_MODIFIER_KEY "p", N_("Print preview of the current project"),
 	  G_CALLBACK (window_print_cb) },
 	{ "FileClose",
-	  GTK_STOCK_CLOSE,         N_("_Close"),                   "<Control>w",        N_("Close the current file"),
+	  GTK_STOCK_CLOSE,         N_("_Close"),                   PLANNER_MODIFIER_KEY "w",        N_("Close the current file"),
 	  G_CALLBACK (window_close_cb) },
 	{ "FileExit",
-	  GTK_STOCK_QUIT,          N_("_Quit"),                    "<Control>q",        N_("Exit the program"),
+	  GTK_STOCK_QUIT,          N_("_Quit"),                    PLANNER_MODIFIER_KEY "q",        N_("Exit the program"),
 	  G_CALLBACK (window_exit_cb) },
 
 	{ "Edit",
 	  NULL,                    N_("_Edit"),                    NULL,                NULL,
 	  NULL },
 	{ "EditUndo",
-	  GTK_STOCK_UNDO,          N_("_Undo"),                    "<Control>z",        N_("Undo the last action"),
+	  GTK_STOCK_UNDO,          N_("_Undo"),                    PLANNER_MODIFIER_KEY "z",        N_("Undo the last action"),
 	  G_CALLBACK (window_undo_cb) },
 	{ "EditRedo",
-	  GTK_STOCK_REDO,          N_("_Redo"),                    "<Control>r",        N_("Redo the undone action"),
+	  GTK_STOCK_REDO,          N_("_Redo"),                    PLANNER_MODIFIER_KEY "r",        N_("Redo the undone action"),
 	  G_CALLBACK (window_redo_cb) },
 
 	{ "View",
@@ -301,7 +305,7 @@
 	  NULL,                    N_("_Help"),                    NULL,                NULL,
 	  NULL },
 	{ "HelpHelp",
-	  GTK_STOCK_HELP,          N_("_User Guide"),              "F1",                N_("Show the Planner User Guide"),
+	  GTK_STOCK_HELP,          N_("_User Guide"),              PLANNER_HELP_KEY,    N_("Show the Planner User Guide"),
 	  G_CALLBACK (window_help_cb) },
 	{ "HelpAbout",
 	  GTK_STOCK_ABOUT,         N_("_About"),                   NULL,                N_("About this application"),
@@ -835,6 +839,11 @@
 
 	new_window = planner_application_new_window (priv->application);
 	gtk_widget_show_all (new_window);
+
+#ifdef MAC_INTEGRATION
+	/* Move menus around and connect NSApplicationBlockTermination signal */
+	planner_window_osx_integrate (PLANNER_WINDOW(new_window));
+#endif
 }
 
 static gchar *
@@ -1745,6 +1754,12 @@
 		if (planner_window_open (PLANNER_WINDOW (new_window), filename, internal)) {
 			g_free (filename);
 			gtk_widget_show_all (new_window);
+#ifdef MAC_INTEGRATION
+                    	/* Move menus around and connect
+			   NSApplicationBlockTermination signal */
+			planner_window_osx_integrate
+				(PLANNER_WINDOW(new_window));
+#endif
 			return TRUE;
 		} else {
 			g_free (filename);
@@ -2128,3 +2143,79 @@
 				  G_CALLBACK (window_menu_item_deselect_cb), window);
 	}
 }
+
+#ifdef MAC_INTEGRATION
+void
+planner_window_osx_integrate (PlannerWindow      *window)
+{
+	/* Move menus around and connect NSApplicationBlockTermination signal */
+	GtkOSXApplication *osxApp =
+		g_object_new(GTK_TYPE_OSX_APPLICATION, NULL);
+	PlannerWindowPriv *priv = window->priv;
+	GtkWidget
+		*menubar = gtk_ui_manager_get_widget(priv->ui_manager,
+						     "/MenuBar"),
+		*quit    = gtk_ui_manager_get_widget(priv->ui_manager,
+						     "/MenuBar/File/FileExit"),
+		*about   = gtk_ui_manager_get_widget(priv->ui_manager,
+						     "/MenuBar/Help/HelpAbout");
+
+	gtk_osxapplication_set_menu_bar(osxApp, GTK_MENU_SHELL(menubar));
+	gtk_widget_hide (menubar);
+	gtk_widget_hide (quit);
+	gtk_osxapplication_insert_app_menu_item  (osxApp, about, 0);
+	gtk_ui_manager_ensure_update (priv->ui_manager);
+
+	g_signal_connect(osxApp, "NSApplicationBlockTermination",
+			 G_CALLBACK (window_osx_quit) , window);
+}
+
+static gboolean
+window_osx_quit (GtkWidget* sender, gpointer data)
+{
+	PlannerWindow     *window = data;
+	PlannerWindowPriv *priv;
+        gboolean           close = TRUE;
+
+	g_return_if_fail (PLANNER_IS_WINDOW (window));
+
+	priv = window->priv;
+
+	if (mrp_project_needs_saving (priv->project)) {
+		close = window_confirm_exit_run (window);
+	}
+
+        if (close) {
+		window_save_state (window);
+
+                g_signal_emit (window, signals[CLOSED], 0, NULL);
+
+                gtk_widget_destroy (GTK_WIDGET (window));
+
+		return FALSE;
+        }
+	
+	// QUIT CANCELED
+	return TRUE;
+}
+
+gboolean
+planner_window_osx_open (GtkOSXApplication *app,
+		       gchar             *path,
+		       gpointer           user_data)
+{
+	/* Open file when asked by Mac OS (NSApplicationOpenFile signal) */
+	gboolean retval=FALSE;
+	gchar *file_uri;
+
+	file_uri = g_filename_to_uri (path, NULL, NULL);
+	printf("%s\n", file_uri);
+	retval = planner_window_open_in_existing_or_new
+		(PLANNER_WINDOW(user_data), file_uri, 0);
+
+	g_free (file_uri);
+
+	return retval;
+}
+	
+#endif /* MAC_INTEGRATION */
diff -ru --unidirectional-new-file -x '*.bak' -x m4 -x 'Makefile.in*' -x Makefile -x configure -x ltmain.sh -x aclocal.m4 -x autom4te.cache -x 'config.*' -x '*~' -x gtk-doc.make a/src/planner-window.h b/src/planner-window.h
--- a/src/planner-window.h	2011-09-29 16:15:45.000000000 +0200
+++ b/src/planner-window.h	2012-01-16 09:12:30.000000000 +0100
@@ -69,4 +69,20 @@
 void                planner_window_set_status              (PlannerWindow      *window,
 							    const gchar        *message);
 
+#ifdef MAC_INTEGRATION
+
+#include <gtkosxapplication.h>
+void                planner_window_osx_integrate           (PlannerWindow      *window);
+gboolean            planner_window_osx_open                (GtkOSXApplication  *app,
+							    gchar              *path,
+							    gpointer            user_data);
+#define PLANNER_MODIFIER_KEY "<Meta>"
+#define PLANNER_OPEN_KEY     PLANNER_MODIFIER_KEY "o"
+#define PLANNER_HELP_KEY     PLANNER_MODIFIER_KEY "question"
+#else
+#define PLANNER_MODIFIER_KEY "<Control>"
+#define PLANNER_OPEN_KEY     "F3"
+#define PLANNER_HELP_KEY     "F1"
+#endif /* MAC_INTEGRATION */
+
 #endif /* __PLANNER_WINDOW_H__ */
