flow graphs for Gtk+ 3
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
grindhold 79a663e4f0 gtkflow: adding title without child now possible 4 months ago
data build: exterminate autotools 5 years ago
debian packaging: added old packaging scripts 11 months ago
examples gtkflow: adding title without child now possible 4 months ago
libgflow merge gflowpatterns into gflow 9 months ago
libgtkflow gtkflow: adding title without child now possible 4 months ago
screenshots readme: updated new connections screenshot 7 months ago
test merge gflowpatterns into gflow 9 months ago
.gitignore gitignore: ignore c files by default 2 years ago
.gitlab-ci.yml gitlab-ci: cd 5 years ago
LICENSE added license file 7 years ago
README.md readme: remove 3 oldest screenshots 7 months ago
meson.build merge gflowpatterns into gflow 9 months ago
meson_options.txt build: added valadocs to meson files 🔥 5 years ago



Here you see libgtkflow, a universal library for drawing flow graphs with Gtk+ 3.

Flow graphs are a possibility to let your user model flows of data from, through and into several stations.

Whenever you have to let your users model a process or have to display the topology of a process to your users, flow graphs are the way to go.



GtkFlow has been optimized to provide much nicer visual cues on the direction of connections


Sinks and Sources may now appear on the same line


We now have Sinks that can receive data from multiple sources!


A more recent screenshot showing off libgtkflow with Gtk > 3.20. It looks a bit clearer.


This is libgtkflow running inside firefox via broadway ↑


GtkFlow runs unter that strange M$-operating-system, too ↑


I love Flowgraphs in other programs and i want to have them in my favourite UI-toolkit Gtk. I ran into some programs which implemented similar functionality but they all didn't feel or even look very Gtk-like/GNOMEy.

Possible Usages



  • Video Compositing (maybe PiTiVi)

  • Visualizing dependencies of objects (e.g. debian packages in apt)

  • … and whatever you can think up.


Core features are implemented and work quite well. API undergoes additions from time to time. The project is not at 1.0 yet as such, API can break but we don't expect fundamental breaking changes to core features anytime soon. If we introduce additional features, we try to offer them as additional API methods rather than changing existing ones.


Make sure you get the following Dependencies:

  • libgtk-3-dev
  • gobject-introspection (libgirepository1.0-dev)
  • meson
  • vala
  • (valadoc)

Then do the following:

$ git clone https://github.com/grindhold/libgtkflow
$ cd libgtkflow
$ mkdir build
$ cd build
$ meson ..
$ ninja
# sudo ninja install

A user of the library (thx @gavr) reported:

"I have no idea why, but on OpenSUSE Tumbleweed pkgbuild will only be able to find gtkFlow if you build it like that:"

meson _build --buildtype=release --prefix=/usr


libgtkflow supports GObject-Introspection which means you can consume it in various popular languages including but not limited to: Python, Perl, Lua, JS, PHP. I compiled some examples on how to program against the library in Python in the examples-folder.

Feel free to add examples for your favorite language.

Note: If you installed the library in /usr/local, you have to export the following environment variables for the examples to work:

export LD_LIBRARY_PATH=/usr/local/lib/x86_64-linux-gnu
export GI_TYPELIB_PATH=/usr/local/lib/x86_64-linux-gnu/girepository-1.0/

Please be aware that on other architectures than amd64 you will have to change the multiarch string x86_64-linux-gnu to something else that makes sense on your machine.