Documentation
¶
Index ¶
- Constants
- func FindFocusHelper(candidates ...string) (string, error)
- func FocusActivationArguments(pid int, protocols ...string) string
- func IsUsableWindow(hwnd uintptr) bool
- func ParseFocusActivation(uri string) (pid int, hwnd uintptr, logPath string, err error)
- func PrepareFocusActivationVerbose(pid int, logPath string, helperCandidates ...string) (FocusActivation, FocusDiag, error)
- func Push(message string, opts ...NotificationOption) error
- func RegisterAppID(appID, displayName, iconPath string) error
- func RegisterFocusProtocol(helperPath string, protocols ...string) error
- func SelectHostWindow(chain []AncestorWindows) (hwnd uintptr, pid uint32, reason string)
- type Action
- type AncestorWindows
- type Audio
- type FocusActivation
- type FocusDiag
- type NotificationDuration
- type NotificationOption
- func WithActivationArguments(activationArguments string) NotificationOption
- func WithActivationType(activationType string) NotificationOption
- func WithAppID(appID string) NotificationOption
- func WithAudio(audio Audio) NotificationOption
- func WithAudioLoop(b bool) NotificationOption
- func WithDuration(nd NotificationDuration) NotificationOption
- func WithIcon(pathIcon string) NotificationOption
- func WithIconRaw(raw []byte) NotificationOption
- func WithLongDuration() NotificationOption
- func WithMessage(msg string) NotificationOption
- func WithProtocolAction(label string, arguments ...string) NotificationOption
- func WithShortDuration() NotificationOption
- func WithTitle(title string) NotificationOption
- type WindowInfo
Constants ¶
const (
// DefaultFocusProtocol is the protocol used by the bundled focus helper.
DefaultFocusProtocol = "anfocus"
)
Variables ¶
This section is empty.
Functions ¶
func FindFocusHelper ¶
FindFocusHelper locates the helper executable used for toast click-to-focus. Explicit candidates are checked first, followed by conventional helper names next to the current executable.
func FocusActivationArguments ¶
FocusActivationArguments formats the URI passed to WithActivationArguments.
func IsUsableWindow ¶ added in v0.4.0
IsUsableWindow 校验单个 HWND(供 helper 直连路径):存在 + 可见 + 无 owner + 有标题。
func ParseFocusActivation ¶ added in v0.4.0
ParseFocusActivation 解析 helper 收到的激活 URI。 未识别的 hwnd/base64 一律降级为零值/空串,绝不报错阻断聚焦。
func PrepareFocusActivationVerbose ¶ added in v0.4.0
func PrepareFocusActivationVerbose(pid int, logPath string, helperCandidates ...string) (FocusActivation, FocusDiag, error)
PrepareFocusActivationVerbose 找 helper、注册协议、解析宿主窗口,并返回完整诊断。 logPath 非空时嵌入激活 URI(helper 点击时据此写日志)。
func Push ¶
func Push(message string, opts ...NotificationOption) error
func RegisterAppID ¶ added in v0.4.0
RegisterAppID registers appID as a Windows AppUserModelID with a display name and an attribution icon, under HKCU\Software\Classes\AppUserModelId\<appID>. After registration, toasts shown via CreateToastNotifier(appID) display the name and icon in the notification's top (attribution) row. Idempotent.
func RegisterFocusProtocol ¶
RegisterFocusProtocol registers protocol as a user-local URL protocol that launches helperPath with the clicked toast URI.
func SelectHostWindow ¶ added in v0.4.0
func SelectHostWindow(chain []AncestorWindows) (hwnd uintptr, pid uint32, reason string)
SelectHostWindow 从祖先链中挑选宿主终端窗口。 P0 语义(行为保持):按 chain 顺序取第一个"可见 + 无 owner + 有标题"的窗口。 返回选中的 HWND(无则 0)、其所属 PID、以及人类可读的原因。
Types ¶
type Action ¶
Action defines an actionable button on a notification.
Only protocol-type action buttons are useful, as there's no way to receive feedback from the user's choice. Example:
Action{"protocol", "Open Maps", "bingmaps:?q=sushi"}
type AncestorWindows ¶ added in v0.4.0
type AncestorWindows struct {
PID uint32
PPID uint32
Exe string
Windows []WindowInfo
}
AncestorWindows 归组一个祖先进程及其拥有的顶层窗口。
func EnumerateAncestorWindows ¶ added in v0.4.0
func EnumerateAncestorWindows(start uint32) []AncestorWindows
EnumerateAncestorWindows 从 start 沿进程树向上,逐祖先归组其全部顶层窗口。
type Audio ¶
type Audio string
const ( Silent Audio = "silent" Default Audio = "ms-winsoundevent:Notification.Default" IM Audio = "ms-winsoundevent:Notification.IM" Mail Audio = "ms-winsoundevent:Notification.Mail" Reminder Audio = "ms-winsoundevent:Notification.Reminder" SMS Audio = "ms-winsoundevent:Notification.SMS" LoopingAlarm Audio = "ms-winsoundevent:Notification.Looping.Alarm" LoopingAlarm2 Audio = "ms-winsoundevent:Notification.Looping.Alarm2" LoopingAlarm3 Audio = "ms-winsoundevent:Notification.Looping.Alarm3" LoopingAlarm4 Audio = "ms-winsoundevent:Notification.Looping.Alarm4" LoopingAlarm5 Audio = "ms-winsoundevent:Notification.Looping.Alarm5" LoopingAlarm6 Audio = "ms-winsoundevent:Notification.Looping.Alarm6" LoopingAlarm7 Audio = "ms-winsoundevent:Notification.Looping.Alarm7" LoopingAlarm8 Audio = "ms-winsoundevent:Notification.Looping.Alarm8" LoopingAlarm9 Audio = "ms-winsoundevent:Notification.Looping.Alarm9" LoopingAlarm10 Audio = "ms-winsoundevent:Notification.Looping.Alarm10" LoopingCall Audio = "ms-winsoundevent:Notification.Looping.Call" LoopingCall2 Audio = "ms-winsoundevent:Notification.Looping.Call2" LoopingCall3 Audio = "ms-winsoundevent:Notification.Looping.Call3" LoopingCall4 Audio = "ms-winsoundevent:Notification.Looping.Call4" LoopingCall5 Audio = "ms-winsoundevent:Notification.Looping.Call5" LoopingCall6 Audio = "ms-winsoundevent:Notification.Looping.Call6" LoopingCall7 Audio = "ms-winsoundevent:Notification.Looping.Call7" LoopingCall8 Audio = "ms-winsoundevent:Notification.Looping.Call8" LoopingCall9 Audio = "ms-winsoundevent:Notification.Looping.Call9" LoopingCall10 Audio = "ms-winsoundevent:Notification.Looping.Call10" )
type FocusActivation ¶
FocusActivation describes the protocol activation data used to focus the source window when a Windows toast is clicked.
func FocusActivationForWindow ¶ added in v0.5.0
func FocusActivationForWindow(pid int, hwnd uintptr, logPath string, helperCandidates ...string) (FocusActivation, error)
FocusActivationForWindow 为一个「已知的」窗口句柄拼装协议激活数据,跳过 PrepareFocusActivation 的进程树窗口选择(EnumerateAncestorWindows + SelectHostWindow)。用于调用方在别处(如 SessionStart 时刻)已捕获到精确的宿主 窗口 HWND、只想让点击回到那扇窗的场景。仍会定位 helper 并注册协议。
hwnd 为 0 时返回 error(无句柄可用)。logPath 非空则嵌入激活 URI,helper 点击时 据此写诊断日志(与 PrepareFocusActivationVerbose 行为一致)。
func PrepareFocusActivation ¶
func PrepareFocusActivation(pid int, helperCandidates ...string) (FocusActivation, error)
PrepareFocusActivation 保留原签名,委托 Verbose(无 logPath、丢弃诊断)。
type FocusDiag ¶ added in v0.4.0
type FocusDiag struct {
StartPID uint32
Chain []AncestorWindows
SelectedHWND uintptr
SelectedPID uint32
Reason string
}
FocusDiag 记录一次 send(或 click 重走)的完整解析,用于可观测。
type NotificationDuration ¶
type NotificationDuration string
const ( Short NotificationDuration = "short" Long NotificationDuration = "long" )
type NotificationOption ¶
type NotificationOption func(*notification)
func WithActivationArguments ¶
func WithActivationArguments(activationArguments string) NotificationOption
WithActivationArguments
// The activation/action arguments (invoked when the user clicks the notification)
func WithActivationType ¶
func WithActivationType(activationType string) NotificationOption
WithActivationType
The type of notification level action (like Action)
func WithAppID ¶
func WithAppID(appID string) NotificationOption
WithAppID
The name of your app. This value shows up in Windows 10's Action Centre, so make it something readable for your users. It can contain spaces, however special characters (eg. é) are not supported.
func WithAudio ¶
func WithAudio(audio Audio) NotificationOption
WithAudio
The audio to play when displaying the notification
func WithAudioLoop ¶
func WithAudioLoop(b bool) NotificationOption
WithAudioLoop
Whether to loop the audio (default false)
func WithDuration ¶
func WithDuration(nd NotificationDuration) NotificationOption
WithDuration
How long the notification should show up for (short/long)
func WithIcon ¶
func WithIcon(pathIcon string) NotificationOption
WithIcon
An optional path to an image on the OS to display to the left of the title & message.
func WithIconRaw ¶
func WithIconRaw(raw []byte) NotificationOption
func WithLongDuration ¶
func WithLongDuration() NotificationOption
func WithMessage ¶
func WithMessage(msg string) NotificationOption
WithMessage
The single/multi line message to display for the notification.
func WithProtocolAction ¶
func WithProtocolAction(label string, arguments ...string) NotificationOption
WithProtocolAction
Defines an actionable button. See https://msdn.microsoft.com/en-us/windows/uwp/controls-and-patterns/tiles-and-notifications-adaptive-interactive-toasts for more info.
Only protocol type action buttons are actually useful, as there's no way of receiving feedback from the user's choice. Examples of protocol type action buttons include: "bingmaps:?q=sushi" to open up Windows 10's maps app with a pre-populated search field set to "sushi".
Action{"protocol", "Open Maps", "bingmaps:?q=sushi"}
func WithShortDuration ¶
func WithShortDuration() NotificationOption
func WithTitle ¶
func WithTitle(title string) NotificationOption
WithTitle
The main title/heading for the notification.
Source Files
¶
Directories
¶
| Path | Synopsis |
|---|---|
|
assets
|
|
|
_generate
command
Command generate renders the default "terminal" logo used as the Windows toast appLogoOverride image when a caller does not supply WithIcon.
|
Command generate renders the default "terminal" logo used as the Windows toast appLogoOverride image when a caller does not supply WithIcon. |
|
cmd
|
|
|
toast-focus
command
toast-focus sends a Windows toast notification whose click action focuses the terminal window that launched this process.
|
toast-focus sends a Windows toast notification whose click action focuses the terminal window that launched this process. |
|
toast-focus-helper
command
toast-focus-helper is launched by the anfocus: protocol.
|
toast-focus-helper is launched by the anfocus: protocol. |