forked from overlordtm/trayhost
-
Notifications
You must be signed in to change notification settings - Fork 19
/
doc.go
74 lines (74 loc) · 2.46 KB
/
doc.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
// Package trayhost is a cross-platform Go library to place an icon
// in the host operating system's taskbar.
//
// Platform Support
//
// - macOS - Fully implemented and supported by @dmitshur.
//
// - Linux - Partially implemented, but unsupported (needs an owner/maintainer).
//
// - Windows - Partially implemented, but unsupported (needs an owner/maintainer).
//
// Notes
//
// On macOS, for Notification Center user notifications to work, your Go binary that
// uses trayhost must be a part of a standard macOS app bundle.
//
// Most other functionality of trayhost will be available if the binary is not a part
// of app bundle, but you will get a terminal pop up, and you will not be able to
// configure some aspects of the app.
//
// Here's a minimal layout of an app bundle:
//
// $ tree "Trayhost Example.app"
// Trayhost\ Example.app
// └── Contents
// ├── Info.plist
// ├── MacOS
// │ └── example
// └── Resources
// └── Icon.icns
//
// Here's a minimal Info.plist file as reference (only the entries that are needed,
// nothing extra):
//
// <?xml version="1.0" encoding="UTF-8"?>
// <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
// <plist version="1.0">
// <dict>
// <key>CFBundleExecutable</key>
// <string>example</string>
// <key>CFBundleIconFile</key>
// <string>Icon</string>
// <key>CFBundleIdentifier</key>
// <string>ExampleApp</string>
// <key>NSHighResolutionCapable</key>
// <true/>
// <key>LSUIElement</key>
// <string>1</string>
// </dict>
// </plist>
//
// - CFBundleIdentifier needs to be set to some value for Notification Center to work.
//
// - The binary must be inside Contents/MacOS directory for Notification Center to work.
//
// - NSHighResolutionCapable to enable Retina mode.
//
// - LSUIElement is needed to make the app not appear in Cmd+Tab list and the dock
// while still being able to show a tooltip in the menu bar.
//
// On macOS, when you run an app bundle, the working directory of the executed process
// is the root directory (/), not the app bundle's Contents/Resources directory.
// Change directory to Resources if you need to load resources from there.
//
// ep, err := os.Executable()
// if err != nil {
// log.Fatalln("os.Executable:", err)
// }
// err = os.Chdir(filepath.Join(filepath.Dir(ep), "..", "Resources"))
// if err != nil {
// log.Fatalln("os.Chdir:", err)
// }
//
package trayhost