Paepoi » PyGObject Tips » 仮想端末エミュレーター
仮想端末エミュレーター
# 最終更新日 2019.09.08
Gedit 標準プラグインの Python コンソールとは全然違う。
gnome-terminal そのものが Widget として使えるレベルの代物である。
ただし。。。。。
Gedit 標準プラグインの Python コンソールとは全然違う。
gnome-terminal そのものが Widget として使えるレベルの代物である。
ただし。。。。。
参照
GNOME wiki の VTE Terminal Widget Library ページ。
Apps/Terminal/VTE - GNOME Wiki!
バージョンがややこいけど 2.91 は Gir のバージョンのようだ。
GNOME 3.32 の Vte 自体のバージョンは 0.56 に上がっているんだが。
0.39 の時からバインドは変わっていないということなので新しい API が使えない。
VTE Reference Manual - GNOME 開発センター
ヘルプも 0.50 以降は存在しない、あぁ Linux だなぁとしか。
参考になりそうなところをいくつか。
c - gtk+ vte scrollback not working - Stack Overflow
python - How to add vte terminal widget in GTK3? - Ask Ubuntu
Apps/Terminal/VTE - GNOME Wiki!
バージョンがややこいけど 2.91 は Gir のバージョンのようだ。
GNOME 3.32 の Vte 自体のバージョンは 0.56 に上がっているんだが。
0.39 の時からバインドは変わっていないということなので新しい API が使えない。
VTE Reference Manual - GNOME 開発センター
ヘルプも 0.50 以降は存在しない、あぁ Linux だなぁとしか。
参考になりそうなところをいくつか。
c - gtk+ vte scrollback not working - Stack Overflow
python - How to add vte terminal widget in GTK3? - Ask Ubuntu
サンプルコード
#!/usr/bin/env python3 import sys, gi gi.require_version('Gtk', '3.0') gi.require_version('Vte', '2.91') from gi.repository import Gtk, Vte, GLib class Win(Gtk.ApplicationWindow): ''' Vte Sample (v2.91, v0.56) ''' def __init__(self, app): Gtk.ApplicationWindow.__init__(self, application=app, title='俺の端末') # Create a virtual terminal terminal = Vte.Terminal() d = dir(terminal) for s in d: if 'sync' in s: print(s) # 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'], #['/usr/bin/python3'], None, GLib.SpawnFlags.DO_NOT_REAP_CHILD) self.add(terminal) self.show_all() def on_terminal_child_exited(self, vteterminal, status): self.close() class App(Gtk.Application): def __init__(self): Gtk.Application.__init__(self) def do_startup(self): Gtk.Application.do_startup(self) Win(self) def do_activate(self): self.props.active_window.present() app = App() app.run(sys.argv)
動かせば解るけどマジで普通の端末、Ctrl+D で gnome-terminal 同様に終了する。
Python3 を起動し Ctrl+D でセッションの終了すると sh に戻る、マジで普通の端末。
ただ上記コードは下記「非推奨ですよ」という stderr を吐く。
Vte.Terminal.spawn_sync is deprecated
spawn_async が代替えなんだけどバインドされていないので使えない状態。
いやまあ Linux ですから。
Copyright(C) sasakima-nao All rights reserved 2002 --- 2024.