For all those little papers scattered across your desk
I stand for the Constitution, for due process, and for community that takes care of each other.
This information is collected from my and other Racketeers dive into the documentation in one attempt to form a cohesive picture in response to the question “How do I use custom icons with GUI executables?”
The extremely short version: changing the icon is something that happens at the
point where you build an executable, not when running inside racket
, DrRacket,
etc. You control this by setting up your project as a package with an
info.rkt
. See Controlling raco
setup
.
Those docs will give you info for the gracket-launcher-libraries
and
gracket-launcher-names
directives, which in turn lead you to the
racket-launcher-names
directive. That directive explains that it makes use of
make-racket-launcher
under the hood, and you must infer that the gracket-*
directives must then use make-gracket-launcher
.
The docs for make-gracket-launcher
indicate that
build-aux-from-file
is used to find auxiliary filenames for related assets,
and if you click through to the docs for build-aux-from-file
it
confirms that icons are included in those related assets. Ultimately what we
figured out was that info.rkt
needs to include something like
(define gracket-launcher-names '("My App Name.app"))
(define gracket-launcher-libraries '("app.rkt"))
…where app.rkt
is the file with a main
submodule that starts the app’s GUI.
And an app.icns
file in the same folder as app.rkt
is used for the program’s
icon (png for linux).
When you do raco setup mypackagename
it creates the executable with that icon.
Some of this is independently covered by docs for raco exe
, which
supports --ico
(Windows), --icns
(macOS), and ++aux
for general icons and
auxiliary files (which point you toward yet more docs about what you can give to
++aux
).