.. include:: icons.rst .. title:: Overview .. toctree:: :hidden: :titlesonly: :maxdepth: 1 getting_started changelog bugs_repo guide/index devguide/index packagingguide maintguide further contact .. image:: images/pygobject.svg :align: center :width: 400px :height: 98px | .. include:: ../README.rst :start-after: | :end-before: ---- If you want to write a Python application for `GNOME `__ or a Python GUI application using GTK, then PyGObject is the way to go. To get started, check out the "`GNOME Developer Documentation `__". For more information on specific libraries, check out the "`Python GI API Reference `__". .. code:: python import sys import gi gi.require_version("Gtk", "4.0") from gi.repository import GLib, Gtk class MyApplication(Gtk.Application): def __init__(self): super().__init__(application_id="com.example.MyGtkApplication") GLib.set_application_name("My Gtk Application") def do_activate(self): window = Gtk.ApplicationWindow(application=self, title="Hello World") window.present() app = MyApplication() exit_status = app.run(sys.argv) sys.exit(exit_status) How does it work? ----------------- .. figure:: images/overview.svg :width: 600px :height: 222px :align: center :class: only-light .. figure:: images/overview-dark.svg :width: 600px :height: 222px :align: center :class: only-dark PyGObject uses `GLib `__, `GObject `__, `GIRepository `__, `libffi `__ and other libraries to access the C library (libgtk-4.so) in combination with the additional metadata from the accompanying typelib file (Gtk-4.0.typelib) and dynamically provides a Python interface based on that information. Who Is Using PyGObject? ----------------------- * `Anaconda `__ - an installation program used by Fedora, RHEL and others * `Apostrophe `__ - a Markdown editor * `Blanket `__ - listen to different sounds * `BleachBit `__ - delete unnecessary files from the system * `Bottles `__ - run Windows software on Linux * `Cambalache `__ - a user interface maker for GTK * `D-Feet `__ - an easy to use D-Bus debugger * `Deluge `__ - a BitTorrent client * `Dialect `__ - a translation app * `Drawing `__ - a drawing application * `Feeds `__ - an RSS/Atom feed reader * `Gajim `__ - a fully-featured XMPP client * `Gameeky `__ - a learning tool for making games and learning experiences * `Gaphor `__ - a simple modeling tool * `Getting Things GNOME! `__ - a personal task organizer * `Girens `__ - a Plex client for playing movies, TV shows and music from your Plex library * `GNOME Music `__ - a music player for GNOME * `GNOME Tweaks `__ - a tool to customize advanced GNOME options * `Gramps `__ - a genealogy program * `Komikku `__ - a manga reader * `Lollypop `__ - a modern music player * `Lutris `__ - a video game manager * `Meld `__ - a visual diff and merge tool * `Metadata Cleaner `__ - an application to view and clean metadata in files * `MyPaint `__ - a nimble, distraction-free, and easy tool for digital painters * `Nicotine+ `__ - a graphical client for the Soulseek peer-to-peer network * `Orca `__ - a flexible and extensible screen reader * `Paperwork `__ - a personal document manager * `Pithos `__ - a Pandora Radio client * `Pitivi `__ - a free and open source video editor * `Plots `__ - a graph plotting app * `Quod Libet `__ - a music library manager / player * `Secrets `__ - a password manager * `Setzer `__ - a LaTeX editor * `Terminator `__ - The Robot Future of Terminals * `Wike `__ - a Wikipedia reader The following applications or libraries use PyGObject for optional features, such as plugins or as optional backends: * `beets `__ - a music library manager and MusicBrainz tagger * `gedit `_- a GNOME text editor * `matplotlib `__ - a python 2D plotting library * `Totem `__ - a video player for GNOME