Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Mac Mountain Lion send notification from CLI app

How can I send a notification to the notification center from a command line app? My attemps so far compile and run, but don't succeed in notifying me.

Example

#import <Cocoa/Cocoa.h>

int main(int argc, const char * argv[]) {
    NSLog(@"Running notifications");

    NSUserNotification *note = [[NSUserNotification alloc] init];
    [note setTitle:@"Test"];
    [note setInformativeText:@"Woot"];

    NSUserNotificationCenter *center = [NSUserNotificationCenter defaultUserNotificationCenter];
    [center scheduleNotification: note];

    return 0;
}

I then compile like:

clang -framework cocoa /tmp/Notes.m

and I get

 2012-07-29 16:08:35.642 a.out[2430:707] Running notifications

as output, but no notification :(

Is codesigning a factor in this?

like image 492
wmarbut Avatar asked Jul 29 '12 20:07

wmarbut


1 Answers

I found that NSUserNotificationCenter works when [[NSBundle mainBundle] bundleIdentifier] returns the proper identifier. So, I wrote some swizzling code that you can find at https://github.com/norio-nomura/usernotification

It can send an NSUserNotification without an Application Bundle.

like image 200
norio_nomura Avatar answered Sep 19 '22 22:09

norio_nomura