Paepoi

Paepoi » PyGObject Tips » Vte(PyGObject) Tips

Vte(PyGObject) Tips

# 最終更新日 2026.01.03

Vte とは
Geany の内臓端末エミュレーター等にも使われているアレです。
gnome-terminal そのものが Widget として使えるレベルの Widget です。

ドキュメント
公式 wiki があるけどリンク切ればかり。
Apps/Terminal/VTE - GNOME Wiki!

見つけるのが大変だったけどドキュメントはある。
Vte – 3.91

PyGObject の場合。
Vte 3.91 (0.80.1) - Vte 3.91

gir が Vte-3.91 で Version 0.78.2 で Vte.Terminal は GTK4 Widger です。
ワケガワカラナイ、けど Linux はそんなもんだと思いましょう。

サンプルコード
#!/usr/bin/env python3
 
import sys, gi
gi.require_version('Gtk', '4.0')
gi.require_version('Vte', '3.91')
from gi.repository import Gtk, Vte, GLib

class Win(Gtk.ApplicationWindow):
    '''
        Vte Sample
    '''
    def __init__(self, a):
        Gtk.ApplicationWindow.__init__(self, application=a, title='GTK4 の端末')
        # Create a virtual terminal 
        terminal = Vte.Terminal()
        # Exit of Ctrl+D
        terminal.connect('child-exited', self.on_terminal_child_exited)
        # async
        terminal.spawn_async(
            pty_flags=Vte.PtyFlags.DEFAULT,
            working_directory=GLib.get_home_dir(),
            argv=['/bin/sh'],
            spawn_flags=GLib.SpawnFlags.DEFAULT,
            timeout= -1)
        self.set_child(terminal)

    def on_terminal_child_exited(self, vteterminal, status):
        self.close()

app = Gtk.Application()
app.connect('activate', lambda a: Win(a).present())
app.run(sys.argv)

Vte.Terminal.spawn_async
spawn_async の引数は沢山ありますが上記以外は None でいいのでこのように。
起動後に /etc/bashrc をドットコマンドで読み込めば見慣れた色になるはずです。



動かせば解るけどマジで普通の端末のように使えます。
このサンプルは Ctrl+D で gnome-terminal 同様に終了するようにしています。
興味がある人はドキュメントを見て色々と弄くってみてください。
Copyright(C) sasakima-nao All rights reserved 2002 --- 2026.