# Appmenu GLib translator
[![][img_crates]][crates] [![][img_doc]][doc]
Rust bindings for the appmenu-glib-translator library.
This library makes it possible to create GLib app menus for
StatusNotifierWatcher implementations.
## Usage
This example shows how this library makes it possible to create tray menus.
```rust
use appmenu_glib_translator::{Importer, prelude::ImporterExtManual};
pub struct TrayItem {
menu_path: String,
bus_name: String,
icon_name: String
}
fn append_tray_item(container: >k4::Box, item: TrayItem) {
let importer = Importer::builder()
.bus_name(item.bus_name.as_str())
.object_path(item.menu_path.as_str())
.build();
let button = gtk4::MenuButton::builder()
.icon_name(item.icon_name.as_str())
.build();
if let Some(ref menumodel) = importer.menu_model() {
button.set_menu_model(Some(menumodel));
}
if let Some(ref action_group) = importer.action_group() {
button.set_action_group(Some(action_group));
}
container.append(&button);
}
```
## Dependencies
- [glib](https://repology.org/project/glib/versions)
- [appmenu-glib-translator](https://repology.org/project/appmenu-glib-translator/versions)
or
[vala-appmenu-panel](https://repology.org/project/vala-panel-appmenu/versions)
## References
- [vala-panel-project repository](https://gitlab.com/vala-panel-project/vala-panel-appmenu/)
- [glib](https://docs.gtk.org/glib/)
[img_crates]: https://img.shields.io/crates/v/appmenu-glib-translator.svg
[img_doc]: https://img.shields.io/badge/rust-documentation-blue.svg
[crates]: https://crates.io/crates/appmenu-glib-translator
[doc]: https://docs.rs/appmenu-glib-translator/