GLib based library to communicate with homeservers
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.

2.0 KiB

Matrix Client SDK for GLib

This is a client-server SDK for GLib >= 2.40. It contains both raw API calls and a signal based asynchronous client. The API and ABI are both very volatile as of now; don’t rely on any specific feature until the API is frozen.

The main interfaces are MatrixAPI and MatrixClient. MatrixHTTPAPI and MatrixHTTPClient implement these interfaces, respectively and can communicate with an HTTP based homeserver. If a new protocol becomes supported oficially, a new API and Client class will be added.


The SDK provides two layers of interaction. The low-level layer (MatrixAPI implementations like MatrixHTTPAPI) just wraps the raw API calls. The high-level layer (MatrixClient implementations like MatrixHTTPClient) is a GMainLoop based asynchronous object that emits GObject signals and uses the low-level layer to provide an object model to perform actions on.


For a working example, see test-client.c.

// Create a client object
MatrixClient *client = MATRIX_CLIENT(matrix_http_client_new("http://localhost:8008"));

// Set tokens for the session. Alternatively you may want to login with matrix_api_login() or matrix_client_login_with_password()
matrix_api_set_token(MATRIX_API(client), "your_access_token");

// Connect a callback that gets called when a event arrives
matrix_client_connect_event(client, MATRIX_EVENT_TYPE_ROOM_MESSAGE, message_callback, NULL);

// Enter polling mode. This continuously calls the /sync API

// Now enter a main loop with g_main_loop_run() so polling for events can actually begin


For a full blown example, see test-api-client.c.


See the file for details.

Code of Conduct

See the file for details.


Should you need any help, join us in Matrix at