[PluginName]Preferences.xib Either blank or with a 340x320 NSView [PluginName]Preferences.h @interface [PluginName]Preferences : NSViewController { } [PluginName].h #import "MPPluginInterface.h" @class [PluginName]Preferences; @interface [PluginName] : NSObject { [PluginName]Preferences *preferences; } @property (retain) [PluginName]Preferences *preferences; [PluginName].m #import "[PluginName].h" #import "[PluginName]Preferences.h" static NSBundle* pluginBundle = nil; @implementation [PluginName] @synthesize preferences; + (BOOL)initializeClass:(NSBundle*)theBundle { if (pluginBundle) { return NO; } pluginBundle = [theBundle retain]; return YES; } + (void)terminateClass { if (pluginBundle) { [pluginBundle release]; pluginBundle = nil; } } - (id)init{ self = [super init]; if(self != nil) { preferences = [[[PluginName]Preferences alloc] initWithNibName:@"[PluginName]Preferences" bundle:pluginBundle]; NSString *bundleId = [[NSBundle mainBundle] objectForInfoDictionaryKey:@"CFBundleIdentifier"]; if ([bundleId isEqualToString:@"com.apple.systempreferences"]) return self; //your initialization here } return self; }