Java libgrowl Revisit
This time I am going to write my own Java program with libgrowl GrowConnect class, just take it as an exercise.
First you need to get a copy of the libgrowl or you can compile on your own. There are at least 2 sources for the program:
classic https://github.com/feilimb/libgrowl
maven https://github.com/sbower/libgrowl
Write a GrowlNotify program to accept message, tittle, host, application name, notification name as parameters. Minimal to provide message as parameters, others are optional.
eg. $ GrowlNotify 'Hello, world.'
First you need to get a copy of the libgrowl or you can compile on your own. There are at least 2 sources for the program:
classic https://github.com/feilimb/libgrowl
maven https://github.com/sbower/libgrowl
Write a GrowlNotify program to accept message, tittle, host, application name, notification name as parameters. Minimal to provide message as parameters, others are optional.
eg. $ GrowlNotify 'Hello, world.'
import net.sf.libgrowl.GrowlConnector; import net.sf.libgrowl.Application; import net.sf.libgrowl.Notification; import net.sf.libgrowl.NotificationType; class GrowlNotify { public static void main(String[] args) { if (args.length<1) { System.out.println("Usage: TestGrowlNotify <message> [<title> <host> <application> <notification>]"); System.out.println("eg. TestGrowlNotify 'Hello, world.'"); System.exit(0); } int counter= 0; int i; String message="", title="", host= "localhost", appName="libgrowl", notificationName="libgrowl"; GrowlConnector growl; Application application; Notification notification; NotificationType notificationType; NotificationType[] notificationTypes; for (i=0; i<args.length; i++) { switch(counter++) { case 0: message= args[0]; break; case 1: title= args[1]; break; case 2: host= args[2]; break; case 3: appName= args[3]; break; case 4: notificationName= args[4]; break; default: break; } } application = new Application(appName); notificationType = new NotificationType(notificationName); notificationTypes = new NotificationType[] { notificationType }; growl= new GrowlConnector(host); growl.register(application, notificationTypes); notification = new Notification(application, notificationType, title, message); growl.notify(notification); } }
$ java -cp libgrowl.jar GrowlNotify.java
⇒ GrowlNotify.class
$ java -cp libgrowl.jar GrowlNotify 'Hello, world.'
If Growl software is installed and running, it shows "Hello, world.".
Maven
I am using maven 3.6. Add dependency in pom.xml file:
<dependencies>
...
<dependency>
<groupId>net.sf</groupId>
<artifactId>libgrowl</artifactId>
<version>0.5</version>
</dependency>
<dependencies>
Copy libgrowl.jar to ~/.m2/repository/net/sf/libgrowl/0.5/.
$ cp libgrowl.jar ~/.m2/repository/net/sf/libgrowl/0.5/.
$ mvn compile
$ mvn exec:java -Dexec.mainClass="com.example.GrowlNotify" -Dexec.args="'Hello, world.'"