L'Isola di Niente
L'Isola di Niente » PyGObject Tips » 仮想端末エミュレーター

仮想端末エミュレーター

Gedit 標準プラグインの Python コンソールとは全然違う。
gnome-terminal そのものが Widget として使えるレベルの代物である。

参照

GNOME wiki の VTE Terminal Widget Library ページ。
Apps/Terminal/VTE - GNOME Wiki!

バージョンがややこいけど 2.91=0.39 のようだ。
例によって GNOME プロジェクト作だから合わせたかったのかな。
2.91 は見当たらないので 0.39 のドキュメントを見ればいいだろう。
VTE Reference Manual: VTE Reference Manual

参考になりそうなところをいくつか。
c - gtk+ vte scrollback not working - Stack Overflow
python - How to add vte terminal widget in GTK3? - Ask Ubuntu

サンプルコード

#!/usr/bin/env python3

from gi.repository import Gtk, Vte, GLib

class VteWindow(Gtk.Window):
    """
        Vte Sample (v2.91)
    """
    def __init__(self):
        Gtk.Window.__init__(self)
        # Create a virtual terminal 
        terminal = Vte.Terminal.new()
        # Exit of Ctrl+D
        terminal.connect("child-exited", self.on_terminal_child_exited)
        # Sync
        terminal.spawn_sync(
                Vte.PtyFlags.DEFAULT,
                GLib.get_home_dir(),
                #["/bin/sh"], @ List of Execute Command
                ["/usr/bin/python3"],
                None,
                GLib.SpawnFlags.DO_NOT_REAP_CHILD,
                None,
                None,
                None)
        self.add(terminal)
        self.set_title("Virtual Terminal")
        self.connect("delete-event", Gtk.main_quit)
        self.show_all()

    def on_terminal_child_exited(self, vteterminal, status):
        Gtk.main_quit()

VteWindow()
Gtk.main()

/bin/sh で起動してソコから Python を始めるとかもできる。
Ctrl+D で Python を終了すると sh に戻る、マジで普通の端末。
自分好みに拡張したオリジナル端末を作るだけでも面白そう。
Copyright(C) sasakima-nao All rights reserved 2002 --- 2017.