Vte PTY

Vte PTY — Functions for starting a new process on a new pseudo-terminal and for manipulating pseudo-terminals

Synopsis

enum                VtePtyFlags;
enum                VtePtyError;
                    VtePty;
VtePty *            vte_pty_new                         (VtePtyFlags flags,
                                                         GError **error);
VtePty *            vte_pty_new_foreign                 (int fd,
                                                         GError **error);
void                vte_pty_close                       (VtePty *pty);
void                vte_pty_child_setup                 (VtePty *pty);
int                 vte_pty_get_fd                      (VtePty *pty);
gboolean            vte_pty_set_size                    (VtePty *pty,
                                                         int rows,
                                                         int columns,
                                                         GError **error);
gboolean            vte_pty_get_size                    (VtePty *pty,
                                                         int *rows,
                                                         int *columns,
                                                         GError **error);
void                vte_pty_set_term                    (VtePty *pty,
                                                         const char *emulation);
gboolean            vte_pty_set_utf8                    (VtePty *pty,
                                                         gboolean utf8,
                                                         GError **error);

Object Hierarchy

  GObject
   +----VtePty

Implemented Interfaces

VtePty implements GInitable.

Properties

  "fd"                       gint                  : Read / Write / Construct Only
  "flags"                    VtePtyFlags           : Read / Write / Construct Only
  "term"                     gchar*                : Read / Write

Description

The terminal widget uses these functions to start commands with new controlling pseudo-terminals and to resize pseudo-terminals.

Details

enum VtePtyFlags

typedef enum {
  VTE_PTY_NO_LASTLOG  = 1 << 0,
  VTE_PTY_NO_UTMP     = 1 << 1,
  VTE_PTY_NO_WTMP     = 1 << 2,
  VTE_PTY_NO_HELPER   = 1 << 3,
  VTE_PTY_NO_FALLBACK = 1 << 4,
  VTE_PTY_DEFAULT     = 0
} VtePtyFlags;

VTE_PTY_NO_LASTLOG

don't record the session in lastlog

VTE_PTY_NO_UTMP

don't record the session in utmp

VTE_PTY_NO_WTMP

don't record the session in wtmp

VTE_PTY_NO_HELPER

don't use the GNOME PTY helper to allocate the PTY

VTE_PTY_NO_FALLBACK

when allocating the PTY with the PTY helper fails, don't fall back to try using PTY98

VTE_PTY_DEFAULT

the default flags

Since 0.26


enum VtePtyError

typedef enum {
  VTE_PTY_ERROR_PTY_HELPER_FAILED = 0,
  VTE_PTY_ERROR_PTY98_FAILED
} VtePtyError;

VTE_PTY_ERROR_PTY_HELPER_FAILED

failure when using the GNOME PTY helper to allocate the PTY

VTE_PTY_ERROR_PTY98_FAILED

failure when using PTY98 to allocate the PTY

Since 0.26


VtePty

typedef struct _VtePty VtePty;

Since 0.26


vte_pty_new ()

VtePty *            vte_pty_new                         (VtePtyFlags flags,
                                                         GError **error);

Allocates a new pseudo-terminal.

You can later use fork() or the g_spawn_async() familty of functions to start a process on the PTY.

If using fork(), you MUST call vte_pty_child_setup() in the child.

If using g_spawn_async() and friends, you MUST either use vte_pty_child_setup() directly as the child setup function, or call vte_pty_child_setup() from your own child setup function supplied.

Also, you MUST pass the G_SPAWN_DO_NOT_REAP_CHILD flag.

When using the GNOME PTY Helper, unless some of the VTE_PTY_NO_LASTLOG, VTE_PTY_NO_UTMP or VTE_PTY_NO_WTMP flags are passed in flags, the session is logged in the corresponding lastlog, utmp or wtmp system files.

When passing VTE_PTY_NO_HELPER in flags, the GNOME PTY Helper bypassed entirely.

When passing VTE_PTY_NO_FALLBACK in flags, and opening a PTY using the PTY helper fails, there will be no fallback to allocate a PTY using Unix98 PTY functions.

flags :

flags from VtePtyFlags

error :

return location for a GError, or NULL. [allow-none]

Returns :

a new VtePty, or NULL on error with error filled in. [transfer full]

Since 0.26


vte_pty_new_foreign ()

VtePty *            vte_pty_new_foreign                 (int fd,
                                                         GError **error);

Creates a new VtePty for the PTY master fd.

No entry will be made in the lastlog, utmp or wtmp system files.

Note that the newly created VtePty will take ownership of fd and close it on finalize.

fd :

a file descriptor to the PTY. [transfer full]

error :

return location for a GError, or NULL. [allow-none]

Returns :

a new VtePty for fd, or NULL on error with error filled in. [transfer full]

Since 0.26


vte_pty_close ()

void                vte_pty_close                       (VtePty *pty);

Cleans up the PTY, specifically any logging performed for the session. The file descriptor to the PTY master remains open.

pty :

a VtePty

Since 0.26


vte_pty_child_setup ()

void                vte_pty_child_setup                 (VtePty *pty);

FIXMEchpe

pty :

a VtePty

Since 0.26


vte_pty_get_fd ()

int                 vte_pty_get_fd                      (VtePty *pty);

pty :

a VtePty

Returns :

the file descriptor of the PTY master in pty. The file descriptor belongs to pty and must not be closed. [transfer none]

vte_pty_set_size ()

gboolean            vte_pty_set_size                    (VtePty *pty,
                                                         int rows,
                                                         int columns,
                                                         GError **error);

Attempts to resize the pseudo terminal's window size. If successful, the OS kernel will send SIGWINCH to the child process group.

If setting the window size failed, error will be set to a GIOError.

pty :

a VtePty

rows :

the desired number of rows

columns :

the desired number of columns

error :

(allow-none); return location to store a GError, or NULL

Returns :

TRUE on success, FALSE on failure with error filled in

Since 0.26


vte_pty_get_size ()

gboolean            vte_pty_get_size                    (VtePty *pty,
                                                         int *rows,
                                                         int *columns,
                                                         GError **error);

Reads the pseudo terminal's window size.

If getting the window size failed, error will be set to a GIOError.

pty :

a VtePty

rows :

a location to store the number of rows, or NULL. [out][allow-none]

columns :

a location to store the number of columns, or NULL. [out][allow-none]

error :

return location to store a GError, or NULL

Returns :

TRUE on success, FALSE on failure with error filled in

Since 0.26


vte_pty_set_term ()

void                vte_pty_set_term                    (VtePty *pty,
                                                         const char *emulation);

Sets what value of the TERM environment variable to set just after forking.

pty :

a VtePty

emulation :

the name of a terminal description, or NULL. [allow-none]

Since 0.26


vte_pty_set_utf8 ()

gboolean            vte_pty_set_utf8                    (VtePty *pty,
                                                         gboolean utf8,
                                                         GError **error);

Tells the kernel whether the terminal is UTF-8 or not, in case it can make use of the info. Linux 2.6.5 or so defines IUTF8 to make the line discipline do multibyte backspace correctly.

pty :

a VtePty

utf8 :

whether or not the pty is in UTF-8 mode

error :

return location to store a GError, or NULL. [allow-none]

Returns :

TRUE on success, FALSE on failure with error filled in

Since 0.26

Property Details

The "fd" property

  "fd"                       gint                  : Read / Write / Construct Only

The file descriptor of the PTY master.

Allowed values: >= -1

Default value: -1

Since 0.26


The "flags" property

  "flags"                    VtePtyFlags           : Read / Write / Construct Only

Controls how the session is recorded in lastlog, utmp, and wtmp, and whether to use the GNOME PTY helper.

Since 0.26


The "term" property

  "term"                     gchar*                : Read / Write

The value to set for the TERM environment variable just after forking.

Default value: "xterm"

Since 0.26