mvz / Gir_ffi
Programming Languages
Labels
Projects that are alternatives of or similar to Gir ffi
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.5, 2.6, 2.7 and 3.0, 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 libgirepository-1.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
, libcairo2-dev
, gir1.2-gtop-2.0
, gir1.2-gtk-3.0
,
gir1.2-pango-1.0
, gir1.2-gtksource-3.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
Contributing
Please see CONTRIBUTING.md for contribution guidelines.
Contributors
The following people have contributed to GirFFI over the years:
- John Cupitt
- Marius Hanne
- Antonio Terceiro
- Matijs van Zuijlen
License
Copyright © 2009–2020 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.