Tk\_Init(3) Tk Library Procedures Tk\_Init(3)

```

```

# [NAME](#NAME)

Tk\_Init, Tk\_SafeInit - add Tk to an interpreter and make a new Tk application.

# [SYNOPSIS](#SYNOPSIS)

```
#include <tk.h>

int
Tk_Init(interp)

int
Tk_SafeInit(interp)
```

# [ARGUMENTS](#ARGUMENTS)

Tcl\_Interp *\*interp* (in)

Interpreter in which to load Tk. Tk should not already be loaded in this interpreter.

```
    
```

# [DESCRIPTION](#DESCRIPTION)

**Tk\_Init** is the package initialization procedure for Tk. It is normally invoked by the **Tcl\_AppInit** procedure for an application or by the **load** command. **Tk\_Init** adds all of Tk's commands to *interp* and creates a new Tk application, including its main window. If the initialization is successful **Tk\_Init** returns **TCL\_OK**; if there is an error it returns **TCL\_ERROR**. **Tk\_Init** also leaves a result or error message in interpreter *interp*'s result.

If there is a variable **argv** in *interp*, **Tk\_Init** treats the contents of this variable as a list of options for the new Tk application. The options may have any of the forms documented for the **wish** application (in fact, **wish** uses Tk\_Init to process its command-line arguments).

**Tk\_SafeInit** is identical to **Tk\_Init** except that it removes all Tk commands that are considered unsafe. Those commands and the reasons for their exclusion are:

[**bell**](#bell)

Continuous ringing of the bell is a nuisance.

[**clipboard**](#clipboard)

A malicious script could replace the contents of the clipboard with the string “**rm -r \***” and lead to surprises when the contents of the clipboard are pasted.

[**grab**](#grab)

Grab can be used to block the user from using any other applications.

[**menu**](#menu)

Menus can be used to cover the entire screen and to steal input from the user.

[**selection**](#selection)

See clipboard.

[**send**](#send)

Send can be used to cause unsafe interpreters to execute commands.

[**tk**](#tk)

The tk command recreates the send command, which is unsafe.

[**tkwait**](#tkwait)

Tkwait can block the containing process forever

[**toplevel**](#toplevel)

Toplevels can be used to cover the entire screen and to steal input from the user.

[**wm**](#wm)

If toplevels are ever allowed, wm can be used to remove decorations, move windows around, etc.

# [KEYWORDS](#KEYWORDS)

safe, application, initialization, load, main window

8.0 Tk

---

Document: Tk_Init(3) from tk 9.1.0-r0 (Chainguard OS)
Source: https://downloads.sourceforge.net/sourceforge/tcl/tk9.1.0-src.tar.gz
