---
name: "Tk_Init"
section: "3"
platform: "linux"
package: "tk"
version: "8.6.16-1"
release: "Arch Linux 2026-11-01"
platforms: ["linux", "macos"]
url: "https://new.carta.tech/Tk_Init"
---

# Tk\_Init(3)

add Tk to an interpreter and make a new Tk application.

```

```

## NAME

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

## SYNOPSIS

```
#include <tk.h>

int
Tk_Init(interp)

int
Tk_SafeInit(interp)
```

## ARGUMENTS

- Tcl\_Interp *\*interp* (in)

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

  ```

  ```

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

  Continuous ringing of the bell is a nuisance.

- **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 can be used to block the user from using any other applications.

- **menu**

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

- **selection**

  See clipboard.

- **send**

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

- **tk**

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

- **tkwait**

  Tkwait can block the containing process forever

- **toplevel**

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

- **wm**

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

## KEYWORDS

safe, application, initialization, load, main window
