Connect to the realize
signal of the Vte.Terminal
as only then the Pango.FontDescription()
is created, then get_font()
on the terminal and set_size()
on the Pango.FontDescription()
returned by that:
#!/usr/bin/env python3
import os
from gi.repository import GLib
from gi.repository import Pango
from gi.repository import Gdk
from gi.repository import Gtk
from gi.repository import Vte
class MainWindow(Gtk.Window):
def __init__(self):
Gtk.Window.__init__(self, title="shells")
self.resize(1000, 1000)
table = Gtk.Table(2, 2, True)
self.add(table)
palette = [Gdk.color_parse('red')] * 16
terminal1 = Vte.Terminal()
terminal1.connect('realize', self.on_realize_terminal)
terminal2 = Vte.Terminal()
terminal2.connect('realize', self.on_realize_terminal)
terminal3 = Vte.Terminal()
terminal3.connect('realize', self.on_realize_terminal)
terminal4 = Vte.Terminal()
terminal4.connect('realize', self.on_realize_terminal)
scrolledwindow1 = Gtk.ScrolledWindow()
scrolledwindow1.add(terminal1)
scrolledwindow2 = Gtk.ScrolledWindow()
scrolledwindow2.add(terminal2)
scrolledwindow3 = Gtk.ScrolledWindow()
scrolledwindow3.add(terminal3)
scrolledwindow4 = Gtk.ScrolledWindow()
scrolledwindow4.add(terminal4)
terminal1.fork_command_full(Vte.PtyFlags.DEFAULT, os.environ['HOME'], ["/bin/sh"],
[], GLib.SpawnFlags.DO_NOT_REAP_CHILD, None, None)
terminal2.fork_command_full(Vte.PtyFlags.DEFAULT, os.environ['HOME'], ["/bin/sh"],
[], GLib.SpawnFlags.DO_NOT_REAP_CHILD, None, None)
terminal3.fork_command_full(Vte.PtyFlags.DEFAULT, os.environ['HOME'], ["/bin/sh"],
[], GLib.SpawnFlags.DO_NOT_REAP_CHILD, None, None)
terminal4.fork_command_full(Vte.PtyFlags.DEFAULT, os.environ['HOME'], ["/bin/sh"],
[], GLib.SpawnFlags.DO_NOT_REAP_CHILD, None, None)
terminal1.set_colors(Gdk.color_parse('red'), Gdk.color_parse('black'), palette)
terminal2.set_colors(Gdk.color_parse('green'), Gdk.color_parse('black'), palette)
terminal3.set_colors(Gdk.color_parse('yellow'), Gdk.color_parse('black'), palette)
terminal4.set_colors(Gdk.color_parse('blue'), Gdk.color_parse('black'), palette)
table.attach(scrolledwindow1, 0, 1, 0, 1)
table.attach(scrolledwindow2, 1, 2, 0, 1)
table.attach(scrolledwindow3, 0, 1, 1, 2)
table.attach(scrolledwindow4, 1, 2, 1, 2)
def on_realize_terminal(self, terminal):
font = terminal.get_font()
font.set_size(16 * Pango.SCALE)
if __name__ == '__main__':
win = MainWindow()
win.connect("delete-event", Gtk.main_quit)
win.show_all()
Gtk.main()