Just a small finger exercise …
from sys import exit, stderr from signal import SIGINT, signal import gi gi.require_version('Gtk', '3.0') from gi.repository import Gtk # noqa def term_signal_handler(sig, frame): print(f'WARNING: Exiting due to signal {sig}', file=stderr) exit(0) class GUI: def __init__(self): self.window = Gtk.Window() self.window.connect('destroy', Gtk.main_quit) self.textview = Gtk.TextView() self.textview.connect("drag-data-received", self.on_drag) self.window.add(self.textview) self.window.show_all() self.buffer = self.textview.get_buffer() def on_drag( self, widget, drag_context, x, y, data, info, time ): text = data.get_text() print("DEBUG: text = %s" % text) self.buffer.set_text("") def main(): GUI() Gtk.main() if __name__ == "__main__": signal(SIGINT, term_signal_handler) exit(main())