+menu_entry_new_full(label, action, OB_MENU_ENTRY_RENDER_TYPE_NONE, NULL)
+
+#define menu_entry_new_separator(label) \
+menu_entry_new_full(label, NULL, OB_MENU_ENTRY_RENDER_TYPE_SEPARATOR, NULL)
+
+#define menu_entry_new_submenu(label, submenu) \
+menu_entry_new_full(label, NULL, OB_MENU_ENTRY_RENDER_TYPE_SUBMENU, submenu)
+
+#define menu_entry_new_boolean(label, action) \
+menu_entry_new_full(label, action, OB_MENU_ENTRY_RENDER_TYPE_BOOLEAN, NULL)
+
+void menu_entry_free(ObMenuEntry *entry);
+
+void menu_entry_set_submenu(ObMenuEntry *entry, ObMenu *submenu);
+
+void menu_add_entry(ObMenu *menu, ObMenuEntry *entry);
+
+ObMenuEntry *menu_find_entry(ObMenu *menu, Window win);
+ObMenuEntry *menu_find_entry_by_submenu(ObMenu *menu, ObMenu *submenu);
+ObMenuEntry *menu_find_entry_by_pos(ObMenu *menu, int x, int y);
+
+void menu_entry_render(ObMenuEntry *self);