diff --git a/no-xib.diff b/no-xib.diff
new file mode 100644
index 0000000000..2ed24e09bd
--- /dev/null
+++ b/no-xib.diff
@@ -0,0 +1,172 @@
+diff --git a/gfx/drivers_context/cocoa_gl_ctx.m b/gfx/drivers_context/cocoa_gl_ctx.m
+index e67725f..868d874 100644
+--- a/gfx/drivers_context/cocoa_gl_ctx.m
++++ b/gfx/drivers_context/cocoa_gl_ctx.m
+@@ -83,6 +83,7 @@ static NSOpenGLPixelFormat* g_format;
+
+ static unsigned g_minor = 0;
+ static unsigned g_major = 0;
++static bool g_is_inited = false;
+
+ /* forward declaration */
+ void *nsview_get_ptr(void);
+@@ -152,6 +153,9 @@ static bool cocoagl_gfx_ctx_init(void *data)
+ {
+ (void)data;
+
++ if (g_is_inited)
++ return true;
++
+ #if defined(HAVE_COCOA)
+ CocoaView *g_view = (CocoaView*)nsview_get_ptr();
+ #if MAC_OS_X_VERSION_10_7
+@@ -196,6 +200,11 @@ static bool cocoagl_gfx_ctx_init(void *data)
+ [g_context makeCurrentContext];
+ // Make sure the view was created
+ [CocoaView get];
++#if defined(HAVE_COCOA)
++ [NSApp setDelegate:g_view];
++#endif
++
++ g_is_inited = true;
+ return true;
+ }
+
+@@ -221,6 +230,8 @@ static void cocoagl_gfx_ctx_destroy(void *data)
+ #endif
+ [GLContextClass clearCurrentContext];
+ g_context = nil;
++
++ g_is_inited = false;
+ }
+
+ static bool cocoagl_gfx_ctx_bind_api(void *data, enum gfx_ctx_api api, unsigned major, unsigned minor)
+diff --git a/pkg/apple/OSX/Info.plist b/pkg/apple/OSX/Info.plist
+index 8d59658..af95482 100644
+--- a/pkg/apple/OSX/Info.plist
++++ b/pkg/apple/OSX/Info.plist
+@@ -41,8 +41,6 @@
+
+ NSHumanReadableCopyright
+ Copyright © 2015 RetroArch. All rights reserved.
+- NSMainNibFile
+- MainMenu
+ NSPrincipalClass
+ RApplication
+
+diff --git a/pkg/apple/RetroArch.xcodeproj/project.pbxproj b/pkg/apple/RetroArch.xcodeproj/project.pbxproj
+index a7c1b57..e48f0bf 100644
+--- a/pkg/apple/RetroArch.xcodeproj/project.pbxproj
++++ b/pkg/apple/RetroArch.xcodeproj/project.pbxproj
+@@ -7,9 +7,7 @@
+ objects = {
+
+ /* Begin PBXBuildFile section */
+- 1DDD58160DA1D0A300B32029 /* MainMenu.xib in Resources */ = {isa = PBXBuildFile; fileRef = 1DDD58140DA1D0A300B32029 /* MainMenu.xib */; };
+ 500845251B89300700CE6073 /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = 089C165CFE840E0CC02AAC07 /* InfoPlist.strings */; };
+- 500845261B89300700CE6073 /* MainMenu.xib in Resources */ = {isa = PBXBuildFile; fileRef = 1DDD58140DA1D0A300B32029 /* MainMenu.xib */; };
+ 500845271B89300700CE6073 /* retroarch.icns in Resources */ = {isa = PBXBuildFile; fileRef = 84DD5EB71A89F1C7007336C1 /* retroarch.icns */; };
+ 500845291B89300700CE6073 /* griffin_objc.m in Sources */ = {isa = PBXBuildFile; fileRef = 509F0C9C1AA23AFC00619ECC /* griffin_objc.m */; };
+ 5008452A1B89300700CE6073 /* griffin.c in Sources */ = {isa = PBXBuildFile; fileRef = 840222FB1A889EE2009AB261 /* griffin.c */; };
+@@ -75,7 +73,6 @@
+
+ /* Begin PBXFileReference section */
+ 089C165DFE840E0CC02AAC07 /* InfoPlist.strings */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.strings; name = InfoPlist.strings; path = OSX/en.lproj/InfoPlist.strings; sourceTree = ""; };
+- 1DDD58150DA1D0A300B32029 /* MainMenu.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = MainMenu.xib; path = OSX/en.lproj/MainMenu.xib; sourceTree = ""; };
+ 29B97324FDCFA39411CA2CEA /* AppKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AppKit.framework; path = /System/Library/Frameworks/AppKit.framework; sourceTree = ""; };
+ 5008453A1B89300700CE6073 /* RetroArch copy.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "RetroArch copy.app"; sourceTree = BUILT_PRODUCTS_DIR; };
+ 5008453B1B89300700CE6073 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; name = "Info.plist"; path = "/../../pkg/apple/OSX/Info.plist"; sourceTree = SOURCE_ROOT; };
+@@ -196,7 +193,6 @@
+ 84DD5EB71A89F1C7007336C1 /* retroarch.icns */,
+ 8D1107310486CEB800E47090 /* Info.plist */,
+ 089C165CFE840E0CC02AAC07 /* InfoPlist.strings */,
+- 1DDD58140DA1D0A300B32029 /* MainMenu.xib */,
+ );
+ name = Resources;
+ sourceTree = "";
+@@ -301,7 +297,6 @@
+ buildActionMask = 2147483647;
+ files = (
+ 500845251B89300700CE6073 /* InfoPlist.strings in Resources */,
+- 500845261B89300700CE6073 /* MainMenu.xib in Resources */,
+ 500845271B89300700CE6073 /* retroarch.icns in Resources */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+@@ -311,7 +306,6 @@
+ buildActionMask = 2147483647;
+ files = (
+ 8D11072B0486CEB800E47090 /* InfoPlist.strings in Resources */,
+- 1DDD58160DA1D0A300B32029 /* MainMenu.xib in Resources */,
+ 84DD5EB81A89F1C7007336C1 /* retroarch.icns in Resources */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+@@ -348,14 +342,6 @@
+ name = InfoPlist.strings;
+ sourceTree = "";
+ };
+- 1DDD58140DA1D0A300B32029 /* MainMenu.xib */ = {
+- isa = PBXVariantGroup;
+- children = (
+- 1DDD58150DA1D0A300B32029 /* MainMenu.xib */,
+- );
+- name = MainMenu.xib;
+- sourceTree = "";
+- };
+ /* End PBXVariantGroup section */
+
+ /* Begin XCBuildConfiguration section */
+diff --git a/ui/drivers/ui_cocoa.m b/ui/drivers/ui_cocoa.m
+index 5dde6f9..37cd066 100644
+--- a/ui/drivers/ui_cocoa.m
++++ b/ui/drivers/ui_cocoa.m
+@@ -421,10 +421,50 @@ extern void action_ok_push_quick_menu(void);
+
+ @end
+
++static void setup_appkit(void)
++{
++ [NSAutoreleasePool new];
++ [NSApplication sharedApplication];
++
++ /* Might be Snow Leopard (10.6) only and up */
++ [NSApp setActivationPolicy:NSApplicationActivationPolicyRegular];
++
++ id menubar = [[NSMenu new] autorelease];
++ id appMenuItem = [[NSMenuItem new] autorelease];
++
++ [menubar addItem:appMenuItem];
++ [NSApp setMainMenu:menubar];
++
++ /* Add 'Quit' to menu */
++ id appMenu = [[NSMenu new] autorelease];
++ id appName = [[NSProcessInfo processInfo] processName];
++ id quitTitle = BOXSTRING("Quit");
++ id quitMenuItem = [[[NSMenuItem alloc] initWithTitle:quitTitle
++ action:@selector(terminate:) keyEquivalent:BOXSTRING("q")] autorelease];
++ [appMenu addItem:quitMenuItem];
++ [appMenuItem setSubmenu:appMenu];
++
++ /* Create a window and activate the application */
++ id window = [[[NSWindow alloc] initWithContentRect:NSMakeRect(0, 0, 200, 200) styleMask:NSTitledWindowMask backing:NSBackingStoreBuffered defer:NO] autorelease];
++ [window cascadeTopLeftFromPoint:NSMakePoint(20,20)];
++ [window setTitle:appName];
++ [window makeKeyAndOrderFront:nil];
++
++ cocoagl_gfx_ctx_init(NULL);
++ [window setContentView:(CocoaView*)nsview_get_ptr()];
++
++ /* Start the application */
++ [NSApp activateIgnoringOtherApps:YES]; /* Brings application to front on startup */
++ [NSApp run];
++}
++
+ int main(int argc, char *argv[])
+ {
+ waiting_argc = argc;
+ waiting_argv = argv;
++
++ setup_appkit();
++
+ return NSApplicationMain(argc, (const char **) argv);
+ }
+