Initial import

This commit is contained in:
2026-08-28 23:39:13 +02:00
parent 2349541c27
commit b8a522c1de
9 changed files with 859 additions and 1 deletions
+45 -1
View File
@@ -1,3 +1,47 @@
# racket-tray
A tray icon for racket.
A small system tray API for Racket.
Version 0.1 implements Windows directly through the Win32 API. It uses the
native `HWND` of an existing Racket `frame%`/`dialog%`, `Shell_NotifyIconW`, and
`SetWindowSubclass`. No additional native DLL is required.
```racket
#lang racket/gui
(require racket-tray)
(define frame
(new frame%
[label "Tray example"]
[width 400]
[height 250]))
(define tray
(mk-tray frame
"example.png"
(λ ()
(send frame show #t))))
(tray-set-menu!
tray
(list
(list "Open"
(λ () (send frame show #t)))
'separator
(list "Exit"
(λ ()
(tray-close tray)
(send frame show #f)))))
(send frame show #t)
```
`mk-tray` and `tray-set-icon!` accept both Windows `.ico` files and `.png`
files. PNG transparency is preserved when the image is converted to the native
Windows tray icon.
`tray-set-menu!` also accepts a `popup-menu%` object directly, or `#f` to
remove the context menu.
At the moment non-Windows platforms report that the operation is unsupported.