GirFFI
¶ ↑
by Matijs van Zuijlen
Description¶ ↑
Ruby bindings for GNOME using the GObject
Introspection Repository.
Status¶ ↑
Features¶ ↑
-
Create bindings to any GObject-based library.
-
Bindings are generated at runtime.
-
Provides overridden bindings for selected methods.
-
Install
gir_ffi-gtk
and requiregir_ffi-gtk2
orgir_ffi-gtk3
to load overrides for Gtk2 or Gtk3.
Usage¶ ↑
require 'gir_ffi' # Set up the namespace you wish to use GirFFI.setup :Gio # Create an object inet_address = Gio::InetAddress.new_from_string "127.0.0.1" # Call some methods on the object inet_address.is_loopback # => true inet_address.is_multicast # => false # Call a function in the namespace Gio.dbus_is_name "foo" # => false
See the documentation for more usage information.
Examples¶ ↑
Have a look in the examples/
directory for some simple examples. More examples can be found in gir_ffi-gtk
and gir_ffi-gst
.
Install¶ ↑
gem install gir_ffi
Requirements¶ ↑
GirFFI
is supported on CRuby 2.4, 2.5 and 2.6, and JRuby 9.2.
You will also need gobject-introspection installed with some introspection data.
Depending on the GIR data, GirFFI
needs the actual libraries to be available under the name ending in plain .so
. If GirFFI
complains that it cannot find the library, try installing development packages for those libraries.
GirFFI
should work with gobject-introspection 1.46.0 and up.
On Debian and Ubuntu, installing libgirepository1.0-1
and gir1.2-glib-2.0
should be enough to use GirFFI
in your application.
To run the tests, you should additionally install libgirepository1.0-dev
, gobject-introspection
, gir1.2-gtop-2.0
, gir1.2-gtk-3.0
, gir1.2-gtksource-3.0
, gir1.2-pango-1.0
, gir1.2-secret-1
and gir1.2-gstreamer-1.0
. This should be enough to get rake test
working.
GirFFI
has not been tested on Mac OS X or Microsoft Windows. YMMV. Pull requests to support these platforms are welcome.
Overrides¶ ↑
Sometimes, the GIR data is incorrect, or not detailed enough, and a reasonable binding cannot be created automatically. For these cases, overrides can be defined. The following gems with overrides already exist:
-
gir_ffi-gtk
: overrides for Gtk+ 2 and 3. -
gir_ffi-gnome_keyring
: overrides for GnomeKeyring -
gir_ffi-cairo
: overrides for Cairo -
gir_ffi-pango
: overrides for Pango -
gir_ffi-tracker
: overrides for Tracker -
gir_ffi-gst
: overrides for GStreamer
Hacking and contributing¶ ↑
Please feel free to file bugs or send pull requests!
If you just want to help out but don't know where to start, have a look at TODO.md, and check the notes in the code (e.g., using dnote
).
If you want to send pull requests or patches, try to follow the instructions below. If you get stuck, please make a pull request anyway and I'll try to help out.
-
Make sure
rake test
runs without reporting any failures. -
Add tests for your feature. Otherwise, I can't see if it works or if I break it later.
-
Make sure latest master merges cleanly with your branch. Things might have moved around since you forked.
-
Try not to include changes that are irrelevant to your feature in the same commit.
Contributors¶ ↑
The following people have contributed to GirFFI
over the years:
-
John Cupitt
-
Marius Hanne
-
Antonio Terceiro
-
Matijs van Zuijlen
License¶ ↑
Copyright © 2009–2019 Matijs van Zuijlen
GirFFI
is free software, distributed under the terms of the GNU Lesser General Public License, version 2.1 or later. See the file COPYING.LIB for more information.