SystemTray/README.md

67 lines
2.5 KiB
Markdown
Raw Normal View History

2014-11-03 02:10:18 +01:00
SystemTray
==========
2014-11-04 12:32:04 +01:00
Cross-platform **SystemTray** and **AppIndicator** support for java applications.
2014-11-03 02:10:18 +01:00
2014-11-03 02:18:28 +01:00
This libraries only purpose is to show *reasonably* decent system-tray icons and app-indicators with a simple popup-menu.
2014-11-03 02:10:18 +01:00
2014-11-04 12:32:04 +01:00
There are a number of problems on Linux with the Swing (and SWT) system-tray icons, namely that:
1. Swing system-tray icons on linux **do not** support transparent backgrounds (they have a white background)
2. Swing/SWT **do not** support app-indicators, which are necessary on more recent versions of linux
3. Swing popup menus look like crap
- swing-based system-tray uses a JMenuPopup, which looks nicer than the java 'regular' one.
- app-indicators use native popups (a system limitation).
2014-11-04 12:32:04 +01:00
2014-11-03 02:10:18 +01:00
2014-11-04 12:32:04 +01:00
This is for cross-platform use, specifically - linux 32/64, mac 32/64, and windows 32/64. Java 6+
2014-11-03 02:10:18 +01:00
```
To customize the delay (for hiding the popup) when the cursor is "moused out" of the
popup menu, change the value of 'SystemTrayMenuPopup.hidePopupDelay'
Not all system tray icons are the same size (default is 22px), so to properly scale the icon
to fit, change the value of 'SystemTray.TRAY_SIZE'
You might want to specify the root location of the icons used (to make it easier when
specifying icons), change the value of 'SystemTray.ICON_PATH'
2015-01-31 01:52:27 +01:00
A *simple* example is as follows:
2015-06-28 01:57:53 +02:00
// if using provided JNA jars. Not necessary if
//using JNA from https://github.com/twall/jna
System.load("Path to OS specific JNA jar");
2015-01-31 01:52:27 +01:00
this.systemTray = SystemTray.create("Dorkbox");
this.systemTray.createTray("grey_icon.png");
this.systemTray.setStatus("Not Running", "grey_icon.png");
this.systemTray.addMenuEntry("Quit", new SystemTrayMenuAction() {
@Override
public void onClick(SystemTray systemTray) {
systemTray.removeTray();
// exit or something.
}
});
```
2014-11-03 02:10:18 +01:00
```
2014-11-04 12:33:14 +01:00
Note: This library does NOT use SWT for system-tray support, only for the purpose
2015-02-25 12:37:35 +01:00
of lessening the jar dependencies. Changing it to be SWT-based is not
2014-11-04 12:33:14 +01:00
difficult, just remember that SWT on linux *already* starts up the GTK main
2014-11-04 12:01:37 +01:00
event loop.
2014-11-03 02:10:18 +01:00
```
```
Note: If you use the attached JNA libraries, you **MUST** load the respective
native libraries yourself, especially with JNA (as the loading logic has
been removed from the jar)
```
```
Note: This project was heavily influence by the excellent Lantern project,
*Many* thanks to them for figuring out AppIndicators via JNA.
https://github.com/getlantern/lantern
```
2014-11-04 12:32:04 +01:00