# How to add vte terminal widget in GTK3?

I'm trying to add vte widget in my application and the examples I've found use .fork_command() to execute a command in that widget. But according to

http://developer.gnome.org/vte/0.26/VteTerminal.html#vte-terminal-fork-command

it was deprecated and it's recommended to use fork_command_full(). Which needs eight mandatory arguments. Haven't they heard the "defaults" word? I've been able to construct lines that work somehow:

pty_flags = vte.PtyFlags(0)
terminal.fork_command_full(pty_flags, "/home/int", ("/bin/bash", ), "", 0, None, None)


Yes, I know about the enums, I just hope that I'm doing this completely wrong and there is a much easier way. Do you know any?

P.S. I'm using quickly with the default ubuntu-application template.

P.P.S. The import line is from gi.repository import Vte as vte

-
you have that long line a bunch of times or just once? –  hbdgaf Jun 25 '12 at 5:57
just once right now but I want to add them dynamically in the future. –  int_ua Jun 25 '12 at 11:51

Here a basic example:

#!/usr/bin/env python

from gi.repository import Gtk, Vte
from gi.repository import GLib
import os

terminal     = Vte.Terminal()
terminal.fork_command_full(
Vte.PtyFlags.DEFAULT,
os.environ['HOME'],
["/bin/sh"],
[],
GLib.SpawnFlags.DO_NOT_REAP_CHILD,
None,
None,
)

win = Gtk.Window()
win.connect('delete-event', Gtk.main_quit)
win.show_all()

Gtk.main()

-
Thanks :) waiting 11 hours till bounty can be awarded. –  int_ua Jun 25 '12 at 11:49
How can I catch/handle/recover from a user submitting 'exit' in the terminal? On exit would I need to spawn a new vte terminal? or perhaps just spawn a new shell inside the terminal? Additionally, can you link to documentation on how to manipulate the vte terminal, eg opening bash on click of a gtk button press? –  ThorSummoner Aug 7 '14 at 19:34

#!/usr/bin/env python

from gi.repository import Gtk, Vte
from gi.repository import GLib
import os

class MyTerm(Vte.Terminal):
def __init__(self, *args, **kwds):
super(MyTerm, self).__init__(*args, **kwds)
self.fork_command_full(
Vte.PtyFlags.DEFAULT,
os.environ['HOME'],
["/bin/sh"],
[],
GLib.SpawnFlags.DO_NOT_REAP_CHILD,
None,
None,
)

win = Gtk.Window()
win.connect('delete-event', Gtk.main_quit)
bigbox = Gtk.Box()

Thanks :) __init__(self, command) would be even nicer, I'll try this later. –  int_ua Jun 26 '12 at 12:40