This extension is written for revision 2 of the LV2 specification and is NOT completely compatible with revisions 3 and later. An UI written to this extension specification will ONLY work if it is installed to the same bundle as the plugin it is controlling.

A new UI extension, similar to this one but modified to be compatible with LV2r3, will be published at some point in the future and a link to it will be added to this page.

This extension adds a way to write custom UIs for plugins. Each UI will consist of a shared object file containing the implementation and some data in the plugin's RDF files, much like the plugins themselves. The details are in this header file.

Additional extensions

The UI extension itself is just a generic framework for UIs - each UI needs to have a RDF type (specified by an URI) that defines how the host should handle it. Also, UIs, just like plugins, allow for required or optional Features to be listed in their RDF data that a host may choose to implement or not implement. Some Features are listed in the header linked above, but anyone can specify their own. Below are some additional extensions that are not officially part of the UI extension itself but may be useful to implement on top of it.

UI types


specifies an UI type where the LV2_Widget type is a pointer to a Gtk+ 2.0 compatible GtkWidget, and the host guarantees that the Gtk+ library has been initialised and the Glib main loop is running before an UI of this type is instantiated.



specifies a Feature that adds functions to the UI and host that allow the UI to list any available presets that the host has for the plugin. Details are in this header file. Note that this extension does not say anything at all about how the host stores the presets or what the presets do, just how the host and UI can talk about them. This may be useful e.g. for a synth plugin UI that is running in a "stand alone" host that only displays a single window containing nothing but the UI widget - the UI can then present the available presets in a list box and let the user choose among them.


specifies a Feature that defines how to send buffers of events between the GUI and the plugin (via the host). This is a Transfer Mechanism Feature (see lv2_ui.h). The rules are as follows: