Files
racket-tray/README.md
T
2026-08-28 23:39:13 +02:00

1.1 KiB

racket-tray

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.

#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.