All Projects → mvz → Gir_ffi

mvz / Gir_ffi

Licence: lgpl-2.1
Auto-generate bindings for GObject based libraries at run time using FFI

Programming Languages

ruby
36898 projects - #4 most used programming language

Projects that are alternatives of or similar to Gir ffi

Persian Calendar For Gnome Shell
An extension for Gnome-Shell to show Persian date/calendar
Stars: ✭ 261 (+93.33%)
Mutual labels:  hacktoberfest, gnome
La Capitaine Icon Theme
La Capitaine is an icon pack designed to integrate with most desktop environments. The set of icons takes inspiration from the latest iterations of macOS and Google's Material Design.
Stars: ✭ 1,858 (+1276.3%)
Mutual labels:  hacktoberfest, gnome
Liferea
Liferea (Linux Feed Reader), a news reader for GTK/GNOME
Stars: ✭ 612 (+353.33%)
Mutual labels:  hacktoberfest, gnome
Switcher
Gnome Shell extension to switch windows quickly by typing
Stars: ✭ 239 (+77.04%)
Mutual labels:  hacktoberfest, gnome
Material Shell
A modern desktop interface for Linux. Improve your user experience and get rid of the anarchy of traditional desktop workflows. Designed to simplify navigation and reduce the need to manipulate windows in order to improve productivity. It's meant to be 100% predictable and bring the benefits of tools coveted by professionals to everyone.
Stars: ✭ 6,189 (+4484.44%)
Mutual labels:  hacktoberfest, gnome
Studio
An authoring platform to build Web Augmented Reality experiences, without coding knowledge
Stars: ✭ 135 (+0%)
Mutual labels:  hacktoberfest
Ice
Comprehensive RPC framework with support for C++, C#, Java, JavaScript, Python and more.
Stars: ✭ 1,772 (+1212.59%)
Mutual labels:  hacktoberfest
Nl.fokkezb.infinitescroll
Alloy widget for infinitive scrolling TableViews and ListViews
Stars: ✭ 134 (-0.74%)
Mutual labels:  hacktoberfest
Restful
Unlocking the potential of the WP REST API at the command line
Stars: ✭ 134 (-0.74%)
Mutual labels:  hacktoberfest
Slackbotapi
node.js Slack RTM API module
Stars: ✭ 135 (+0%)
Mutual labels:  hacktoberfest
Nim
Nim is a statically typed compiled systems programming language. It combines successful concepts from mature languages like Python, Ada and Modula. Its design focuses on efficiency, expressiveness, and elegance (in that order of priority).
Stars: ✭ 12,270 (+8988.89%)
Mutual labels:  hacktoberfest
Wiredtiger
WiredTiger's source tree
Stars: ✭ 1,812 (+1242.22%)
Mutual labels:  hacktoberfest
Azure Az 900 Study Guide
Study Guide for the Microsoft Azure Fundamentals Exam
Stars: ✭ 134 (-0.74%)
Mutual labels:  hacktoberfest
Saleor
A modular, high performance, headless e-commerce platform built with Python, GraphQL, Django, and React.
Stars: ✭ 14,720 (+10803.7%)
Mutual labels:  hacktoberfest
Stegbrute
Fast Steganography bruteforce tool written in Rust useful for CTF's
Stars: ✭ 134 (-0.74%)
Mutual labels:  hacktoberfest
Network
An ansible role to configure networking
Stars: ✭ 134 (-0.74%)
Mutual labels:  hacktoberfest
Instructor Training
Instructor Training
Stars: ✭ 134 (-0.74%)
Mutual labels:  hacktoberfest
Rathena
rAthena is an open-source cross-platform MMORPG server.
Stars: ✭ 1,793 (+1228.15%)
Mutual labels:  hacktoberfest
Responsively App
A modified web browser that helps in responsive web development. A web developer's must have dev-tool.
Stars: ✭ 14,425 (+10585.19%)
Mutual labels:  hacktoberfest
Whatsapp Bulk Sender
Send bulk messages right from your WhatsApp Android Client or WhatsApp Web
Stars: ✭ 135 (+0%)
Mutual labels:  hacktoberfest

GirFFI

by Matijs van Zuijlen

Description

Ruby bindings for GNOME using the GObject Introspection Repository.

Status

Gem Version Depfu Build Status Code Climate Documentation 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 require gir_ffi-gtk2 or gir_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.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].