SAFE_LOADTK(n)

okay so bestie, welcome to Safe Tk(n) from Tk Built-In Commands β€” aka the safe::loadTk page. It’s giving safe-interpreter realness, and we’re gonna get through it with every detail intact πŸ’…βœ¨

πŸ’– NAME πŸ’–

safe::loadTk β€” load Tk into a safe interpreter. That’s the name, that’s the vibe, periodt πŸ‘‘

✨ SYNOPSIS ✨

safe::loadTk child ?-use windowId? ?-display displayName?

The ?…? bits are literally optional, iykyk πŸŽ€

πŸŽ€ DESCRIPTION πŸŽ€

Safe Tk is based on Safe Tcl, which provides a mechanism that allows restricted and mediated access to auto-loading and packages for safe interpreters. Safe Tk adds the ability to configure the interpreter for safe Tk operations and load Tk into safe interpreters.

The safe::loadTk command initializes the required data structures in the named safe interpreter and then loads Tk into it. The interpreter must have been created with safe::interpCreate or have been initialized with safe::interpInit. The command returns the name of the safe interpreter. Slay, it hands you the name back 🫢

If -use is specified, the window identified by the specified system dependent identifier windowId is used to contain the β€œ.” window of the safe interpreter; it can be any valid id, eventually referencing a window belonging to another application. As a convenience, if the window you plan to use is a Tk Window of the application you can use the window name (e.g., β€œ.x.y”) instead of its window Id (e.g., from winfo id .x.y). Very β€œsame window, different font,” no cap πŸ¦‹

When -use is not specified, a new toplevel window is created for the β€œ.” window of the safe interpreter. On X11 if you want the embedded window to use another display than the default one, specify it with -display. See the SECURITY ISSUES section below for implementation details πŸ‘€

πŸ›‘οΈ SECURITY ISSUES πŸ›‘οΈ

Please read the safe manual page for Tcl to learn about the basic security considerations for Safe Tcl. This is not a drill, bestie β€” go read the lore πŸ“–

safe::loadTk adds the value of tk_library taken from the parent interpreter to the virtual access path of the safe interpreter so that auto-loading will work in the safe interpreter.

Tk initialization is now safe with respect to not trusting the child’s state for startup. safe::loadTk registers the child’s name so when the Tk initialization (Tk_SafeInit) is called and in turn calls the parent’s safe::InitTk it will return the desired argv equivalent (-use windowId, correct -display, etc.).

When -use is not used, the new toplevel created is specially decorated so the user is always aware that the user interface presented comes from a potentially unsafe code and can easily delete the corresponding interpreter. Cute safety label, honestly πŸŽ€

On X11, conflicting -use and -display are likely to generate a fatal X error.

bestie, that X11 conflict is a real β€œfatal X error” situation β€” do not play with it πŸ’€

πŸ‘€ SEE ALSO πŸ‘€

πŸ”‘ KEYWORDS πŸ”‘

  • alias
  • auto-loading
  • auto_mkindex
  • load
  • parent interpreter
  • safe interpreter
  • child interpreter
  • source

footer check, bestie: this page is Tk 8.0 / Safe Tk(n) β€” and that’s the whole cute sign-off, periodt πŸ’–πŸ«Ά

πŸ“¦ where this page comes from