dbus_menu.go 16 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484
  1. // Code generated by dbus-codegen-go DO NOT EDIT.
  2. package menu
  3. import (
  4. "context"
  5. "errors"
  6. "fmt"
  7. "github.com/godbus/dbus/v5"
  8. "github.com/godbus/dbus/v5/introspect"
  9. )
  10. var (
  11. // Introspection for com.canonical.dbusmenu
  12. IntrospectDataDbusmenu = introspect.Interface{
  13. Name: "com.canonical.dbusmenu",
  14. Methods: []introspect.Method{{Name: "GetLayout", Args: []introspect.Arg{
  15. {Name: "parentId", Type: "i", Direction: "in"},
  16. {Name: "recursionDepth", Type: "i", Direction: "in"},
  17. {Name: "propertyNames", Type: "as", Direction: "in"},
  18. {Name: "revision", Type: "u", Direction: "out"},
  19. {Name: "layout", Type: "(ia{sv}av)", Direction: "out"},
  20. }},
  21. {Name: "GetGroupProperties", Args: []introspect.Arg{
  22. {Name: "ids", Type: "ai", Direction: "in"},
  23. {Name: "propertyNames", Type: "as", Direction: "in"},
  24. {Name: "properties", Type: "a(ia{sv})", Direction: "out"},
  25. }},
  26. {Name: "GetProperty", Args: []introspect.Arg{
  27. {Name: "id", Type: "i", Direction: "in"},
  28. {Name: "name", Type: "s", Direction: "in"},
  29. {Name: "value", Type: "v", Direction: "out"},
  30. }},
  31. {Name: "Event", Args: []introspect.Arg{
  32. {Name: "id", Type: "i", Direction: "in"},
  33. {Name: "eventId", Type: "s", Direction: "in"},
  34. {Name: "data", Type: "v", Direction: "in"},
  35. {Name: "timestamp", Type: "u", Direction: "in"},
  36. }},
  37. {Name: "EventGroup", Args: []introspect.Arg{
  38. {Name: "events", Type: "a(isvu)", Direction: "in"},
  39. {Name: "idErrors", Type: "ai", Direction: "out"},
  40. }},
  41. {Name: "AboutToShow", Args: []introspect.Arg{
  42. {Name: "id", Type: "i", Direction: "in"},
  43. {Name: "needUpdate", Type: "b", Direction: "out"},
  44. }},
  45. {Name: "AboutToShowGroup", Args: []introspect.Arg{
  46. {Name: "ids", Type: "ai", Direction: "in"},
  47. {Name: "updatesNeeded", Type: "ai", Direction: "out"},
  48. {Name: "idErrors", Type: "ai", Direction: "out"},
  49. }},
  50. },
  51. Signals: []introspect.Signal{{Name: "ItemsPropertiesUpdated", Args: []introspect.Arg{
  52. {Name: "updatedProps", Type: "a(ia{sv})", Direction: "out"},
  53. {Name: "removedProps", Type: "a(ias)", Direction: "out"},
  54. }},
  55. {Name: "LayoutUpdated", Args: []introspect.Arg{
  56. {Name: "revision", Type: "u", Direction: "out"},
  57. {Name: "parent", Type: "i", Direction: "out"},
  58. }},
  59. {Name: "ItemActivationRequested", Args: []introspect.Arg{
  60. {Name: "id", Type: "i", Direction: "out"},
  61. {Name: "timestamp", Type: "u", Direction: "out"},
  62. }},
  63. },
  64. Properties: []introspect.Property{{Name: "Version", Type: "u", Access: "read"},
  65. {Name: "TextDirection", Type: "s", Access: "read"},
  66. {Name: "Status", Type: "s", Access: "read"},
  67. {Name: "IconThemePath", Type: "as", Access: "read"},
  68. },
  69. Annotations: []introspect.Annotation{},
  70. }
  71. )
  72. // Signal is a common interface for all signals.
  73. type Signal interface {
  74. Name() string
  75. Interface() string
  76. Sender() string
  77. path() dbus.ObjectPath
  78. values() []interface{}
  79. }
  80. // Emit sends the given signal to the bus.
  81. func Emit(conn *dbus.Conn, s Signal) error {
  82. return conn.Emit(s.path(), s.Interface()+"."+s.Name(), s.values()...)
  83. }
  84. // ErrUnknownSignal is returned by LookupSignal when a signal cannot be resolved.
  85. var ErrUnknownSignal = errors.New("unknown signal")
  86. // LookupSignal converts the given raw D-Bus signal with variable body
  87. // into one with typed structured body or returns ErrUnknownSignal error.
  88. func LookupSignal(signal *dbus.Signal) (Signal, error) {
  89. switch signal.Name {
  90. case InterfaceDbusmenu + "." + "ItemsPropertiesUpdated":
  91. v0, ok := signal.Body[0].([]struct {
  92. V0 int32
  93. V1 map[string]dbus.Variant
  94. })
  95. if !ok {
  96. return nil, fmt.Errorf("prop .UpdatedProps is %T, not []struct {V0 int32;V1 map[string]dbus.Variant}", signal.Body[0])
  97. }
  98. v1, ok := signal.Body[1].([]struct {
  99. V0 int32
  100. V1 []string
  101. })
  102. if !ok {
  103. return nil, fmt.Errorf("prop .RemovedProps is %T, not []struct {V0 int32;V1 []string}", signal.Body[1])
  104. }
  105. return &Dbusmenu_ItemsPropertiesUpdatedSignal{
  106. sender: signal.Sender,
  107. Path: signal.Path,
  108. Body: &Dbusmenu_ItemsPropertiesUpdatedSignalBody{
  109. UpdatedProps: v0,
  110. RemovedProps: v1,
  111. },
  112. }, nil
  113. case InterfaceDbusmenu + "." + "LayoutUpdated":
  114. v0, ok := signal.Body[0].(uint32)
  115. if !ok {
  116. return nil, fmt.Errorf("prop .Revision is %T, not uint32", signal.Body[0])
  117. }
  118. v1, ok := signal.Body[1].(int32)
  119. if !ok {
  120. return nil, fmt.Errorf("prop .Parent is %T, not int32", signal.Body[1])
  121. }
  122. return &Dbusmenu_LayoutUpdatedSignal{
  123. sender: signal.Sender,
  124. Path: signal.Path,
  125. Body: &Dbusmenu_LayoutUpdatedSignalBody{
  126. Revision: v0,
  127. Parent: v1,
  128. },
  129. }, nil
  130. case InterfaceDbusmenu + "." + "ItemActivationRequested":
  131. v0, ok := signal.Body[0].(int32)
  132. if !ok {
  133. return nil, fmt.Errorf("prop .Id is %T, not int32", signal.Body[0])
  134. }
  135. v1, ok := signal.Body[1].(uint32)
  136. if !ok {
  137. return nil, fmt.Errorf("prop .Timestamp is %T, not uint32", signal.Body[1])
  138. }
  139. return &Dbusmenu_ItemActivationRequestedSignal{
  140. sender: signal.Sender,
  141. Path: signal.Path,
  142. Body: &Dbusmenu_ItemActivationRequestedSignalBody{
  143. Id: v0,
  144. Timestamp: v1,
  145. },
  146. }, nil
  147. default:
  148. return nil, ErrUnknownSignal
  149. }
  150. }
  151. // AddMatchSignal registers a match rule for the given signal,
  152. // opts are appended to the automatically generated signal's rules.
  153. func AddMatchSignal(conn *dbus.Conn, s Signal, opts ...dbus.MatchOption) error {
  154. return conn.AddMatchSignal(append([]dbus.MatchOption{
  155. dbus.WithMatchInterface(s.Interface()),
  156. dbus.WithMatchMember(s.Name()),
  157. }, opts...)...)
  158. }
  159. // RemoveMatchSignal unregisters the previously registered subscription.
  160. func RemoveMatchSignal(conn *dbus.Conn, s Signal, opts ...dbus.MatchOption) error {
  161. return conn.RemoveMatchSignal(append([]dbus.MatchOption{
  162. dbus.WithMatchInterface(s.Interface()),
  163. dbus.WithMatchMember(s.Name()),
  164. }, opts...)...)
  165. }
  166. // Interface name constants.
  167. const (
  168. InterfaceDbusmenu = "com.canonical.dbusmenu"
  169. )
  170. // Dbusmenuer is com.canonical.dbusmenu interface.
  171. type Dbusmenuer interface {
  172. // GetLayout is com.canonical.dbusmenu.GetLayout method.
  173. GetLayout(parentId int32, recursionDepth int32, propertyNames []string) (revision uint32, layout struct {
  174. V0 int32
  175. V1 map[string]dbus.Variant
  176. V2 []dbus.Variant
  177. }, err *dbus.Error)
  178. // GetGroupProperties is com.canonical.dbusmenu.GetGroupProperties method.
  179. GetGroupProperties(ids []int32, propertyNames []string) (properties []struct {
  180. V0 int32
  181. V1 map[string]dbus.Variant
  182. }, err *dbus.Error)
  183. // GetProperty is com.canonical.dbusmenu.GetProperty method.
  184. GetProperty(id int32, name string) (value dbus.Variant, err *dbus.Error)
  185. // Event is com.canonical.dbusmenu.Event method.
  186. Event(id int32, eventId string, data dbus.Variant, timestamp uint32) (err *dbus.Error)
  187. // EventGroup is com.canonical.dbusmenu.EventGroup method.
  188. EventGroup(events []struct {
  189. V0 int32
  190. V1 string
  191. V2 dbus.Variant
  192. V3 uint32
  193. }) (idErrors []int32, err *dbus.Error)
  194. // AboutToShow is com.canonical.dbusmenu.AboutToShow method.
  195. AboutToShow(id int32) (needUpdate bool, err *dbus.Error)
  196. // AboutToShowGroup is com.canonical.dbusmenu.AboutToShowGroup method.
  197. AboutToShowGroup(ids []int32) (updatesNeeded []int32, idErrors []int32, err *dbus.Error)
  198. }
  199. // ExportDbusmenu exports the given object that implements com.canonical.dbusmenu on the bus.
  200. func ExportDbusmenu(conn *dbus.Conn, path dbus.ObjectPath, v Dbusmenuer) error {
  201. return conn.ExportSubtreeMethodTable(map[string]interface{}{
  202. "GetLayout": v.GetLayout,
  203. "GetGroupProperties": v.GetGroupProperties,
  204. "GetProperty": v.GetProperty,
  205. "Event": v.Event,
  206. "EventGroup": v.EventGroup,
  207. "AboutToShow": v.AboutToShow,
  208. "AboutToShowGroup": v.AboutToShowGroup,
  209. }, path, InterfaceDbusmenu)
  210. }
  211. // UnexportDbusmenu unexports com.canonical.dbusmenu interface on the named path.
  212. func UnexportDbusmenu(conn *dbus.Conn, path dbus.ObjectPath) error {
  213. return conn.Export(nil, path, InterfaceDbusmenu)
  214. }
  215. // UnimplementedDbusmenu can be embedded to have forward compatible server implementations.
  216. type UnimplementedDbusmenu struct{}
  217. func (*UnimplementedDbusmenu) iface() string {
  218. return InterfaceDbusmenu
  219. }
  220. func (*UnimplementedDbusmenu) GetLayout(parentId int32, recursionDepth int32, propertyNames []string) (revision uint32, layout struct {
  221. V0 int32
  222. V1 map[string]dbus.Variant
  223. V2 []dbus.Variant
  224. }, err *dbus.Error) {
  225. err = &dbus.ErrMsgUnknownMethod
  226. return
  227. }
  228. func (*UnimplementedDbusmenu) GetGroupProperties(ids []int32, propertyNames []string) (properties []struct {
  229. V0 int32
  230. V1 map[string]dbus.Variant
  231. }, err *dbus.Error) {
  232. err = &dbus.ErrMsgUnknownMethod
  233. return
  234. }
  235. func (*UnimplementedDbusmenu) GetProperty(id int32, name string) (value dbus.Variant, err *dbus.Error) {
  236. err = &dbus.ErrMsgUnknownMethod
  237. return
  238. }
  239. func (*UnimplementedDbusmenu) Event(id int32, eventId string, data dbus.Variant, timestamp uint32) (err *dbus.Error) {
  240. err = &dbus.ErrMsgUnknownMethod
  241. return
  242. }
  243. func (*UnimplementedDbusmenu) EventGroup(events []struct {
  244. V0 int32
  245. V1 string
  246. V2 dbus.Variant
  247. V3 uint32
  248. }) (idErrors []int32, err *dbus.Error) {
  249. err = &dbus.ErrMsgUnknownMethod
  250. return
  251. }
  252. func (*UnimplementedDbusmenu) AboutToShow(id int32) (needUpdate bool, err *dbus.Error) {
  253. err = &dbus.ErrMsgUnknownMethod
  254. return
  255. }
  256. func (*UnimplementedDbusmenu) AboutToShowGroup(ids []int32) (updatesNeeded []int32, idErrors []int32, err *dbus.Error) {
  257. err = &dbus.ErrMsgUnknownMethod
  258. return
  259. }
  260. // NewDbusmenu creates and allocates com.canonical.dbusmenu.
  261. func NewDbusmenu(object dbus.BusObject) *Dbusmenu {
  262. return &Dbusmenu{object}
  263. }
  264. // Dbusmenu implements com.canonical.dbusmenu D-Bus interface.
  265. type Dbusmenu struct {
  266. object dbus.BusObject
  267. }
  268. // GetLayout calls com.canonical.dbusmenu.GetLayout method.
  269. func (o *Dbusmenu) GetLayout(ctx context.Context, parentId int32, recursionDepth int32, propertyNames []string) (revision uint32, layout struct {
  270. V0 int32
  271. V1 map[string]dbus.Variant
  272. V2 []dbus.Variant
  273. }, err error) {
  274. err = o.object.CallWithContext(ctx, InterfaceDbusmenu+".GetLayout", 0, parentId, recursionDepth, propertyNames).Store(&revision, &layout)
  275. return
  276. }
  277. // GetGroupProperties calls com.canonical.dbusmenu.GetGroupProperties method.
  278. func (o *Dbusmenu) GetGroupProperties(ctx context.Context, ids []int32, propertyNames []string) (properties []struct {
  279. V0 int32
  280. V1 map[string]dbus.Variant
  281. }, err error) {
  282. err = o.object.CallWithContext(ctx, InterfaceDbusmenu+".GetGroupProperties", 0, ids, propertyNames).Store(&properties)
  283. return
  284. }
  285. // GetProperty calls com.canonical.dbusmenu.GetProperty method.
  286. func (o *Dbusmenu) GetProperty(ctx context.Context, id int32, name string) (value dbus.Variant, err error) {
  287. err = o.object.CallWithContext(ctx, InterfaceDbusmenu+".GetProperty", 0, id, name).Store(&value)
  288. return
  289. }
  290. // Event calls com.canonical.dbusmenu.Event method.
  291. func (o *Dbusmenu) Event(ctx context.Context, id int32, eventId string, data dbus.Variant, timestamp uint32) (err error) {
  292. err = o.object.CallWithContext(ctx, InterfaceDbusmenu+".Event", 0, id, eventId, data, timestamp).Store()
  293. return
  294. }
  295. // EventGroup calls com.canonical.dbusmenu.EventGroup method.
  296. func (o *Dbusmenu) EventGroup(ctx context.Context, events []struct {
  297. V0 int32
  298. V1 string
  299. V2 dbus.Variant
  300. V3 uint32
  301. }) (idErrors []int32, err error) {
  302. err = o.object.CallWithContext(ctx, InterfaceDbusmenu+".EventGroup", 0, events).Store(&idErrors)
  303. return
  304. }
  305. // AboutToShow calls com.canonical.dbusmenu.AboutToShow method.
  306. func (o *Dbusmenu) AboutToShow(ctx context.Context, id int32) (needUpdate bool, err error) {
  307. err = o.object.CallWithContext(ctx, InterfaceDbusmenu+".AboutToShow", 0, id).Store(&needUpdate)
  308. return
  309. }
  310. // AboutToShowGroup calls com.canonical.dbusmenu.AboutToShowGroup method.
  311. func (o *Dbusmenu) AboutToShowGroup(ctx context.Context, ids []int32) (updatesNeeded []int32, idErrors []int32, err error) {
  312. err = o.object.CallWithContext(ctx, InterfaceDbusmenu+".AboutToShowGroup", 0, ids).Store(&updatesNeeded, &idErrors)
  313. return
  314. }
  315. // GetVersion gets com.canonical.dbusmenu.Version property.
  316. func (o *Dbusmenu) GetVersion(ctx context.Context) (version uint32, err error) {
  317. err = o.object.CallWithContext(ctx, "org.freedesktop.DBus.Properties.Get", 0, InterfaceDbusmenu, "Version").Store(&version)
  318. return
  319. }
  320. // GetTextDirection gets com.canonical.dbusmenu.TextDirection property.
  321. func (o *Dbusmenu) GetTextDirection(ctx context.Context) (textDirection string, err error) {
  322. err = o.object.CallWithContext(ctx, "org.freedesktop.DBus.Properties.Get", 0, InterfaceDbusmenu, "TextDirection").Store(&textDirection)
  323. return
  324. }
  325. // GetStatus gets com.canonical.dbusmenu.Status property.
  326. func (o *Dbusmenu) GetStatus(ctx context.Context) (status string, err error) {
  327. err = o.object.CallWithContext(ctx, "org.freedesktop.DBus.Properties.Get", 0, InterfaceDbusmenu, "Status").Store(&status)
  328. return
  329. }
  330. // GetIconThemePath gets com.canonical.dbusmenu.IconThemePath property.
  331. func (o *Dbusmenu) GetIconThemePath(ctx context.Context) (iconThemePath []string, err error) {
  332. err = o.object.CallWithContext(ctx, "org.freedesktop.DBus.Properties.Get", 0, InterfaceDbusmenu, "IconThemePath").Store(&iconThemePath)
  333. return
  334. }
  335. // Dbusmenu_ItemsPropertiesUpdatedSignal represents com.canonical.dbusmenu.ItemsPropertiesUpdated signal.
  336. type Dbusmenu_ItemsPropertiesUpdatedSignal struct {
  337. sender string
  338. Path dbus.ObjectPath
  339. Body *Dbusmenu_ItemsPropertiesUpdatedSignalBody
  340. }
  341. // Name returns the signal's name.
  342. func (s *Dbusmenu_ItemsPropertiesUpdatedSignal) Name() string {
  343. return "ItemsPropertiesUpdated"
  344. }
  345. // Interface returns the signal's interface.
  346. func (s *Dbusmenu_ItemsPropertiesUpdatedSignal) Interface() string {
  347. return InterfaceDbusmenu
  348. }
  349. // Sender returns the signal's sender unique name.
  350. func (s *Dbusmenu_ItemsPropertiesUpdatedSignal) Sender() string {
  351. return s.sender
  352. }
  353. func (s *Dbusmenu_ItemsPropertiesUpdatedSignal) path() dbus.ObjectPath {
  354. return s.Path
  355. }
  356. func (s *Dbusmenu_ItemsPropertiesUpdatedSignal) values() []interface{} {
  357. return []interface{}{s.Body.UpdatedProps, s.Body.RemovedProps}
  358. }
  359. // Dbusmenu_ItemsPropertiesUpdatedSignalBody is body container.
  360. type Dbusmenu_ItemsPropertiesUpdatedSignalBody struct {
  361. UpdatedProps []struct {
  362. V0 int32
  363. V1 map[string]dbus.Variant
  364. }
  365. RemovedProps []struct {
  366. V0 int32
  367. V1 []string
  368. }
  369. }
  370. // Dbusmenu_LayoutUpdatedSignal represents com.canonical.dbusmenu.LayoutUpdated signal.
  371. type Dbusmenu_LayoutUpdatedSignal struct {
  372. sender string
  373. Path dbus.ObjectPath
  374. Body *Dbusmenu_LayoutUpdatedSignalBody
  375. }
  376. // Name returns the signal's name.
  377. func (s *Dbusmenu_LayoutUpdatedSignal) Name() string {
  378. return "LayoutUpdated"
  379. }
  380. // Interface returns the signal's interface.
  381. func (s *Dbusmenu_LayoutUpdatedSignal) Interface() string {
  382. return InterfaceDbusmenu
  383. }
  384. // Sender returns the signal's sender unique name.
  385. func (s *Dbusmenu_LayoutUpdatedSignal) Sender() string {
  386. return s.sender
  387. }
  388. func (s *Dbusmenu_LayoutUpdatedSignal) path() dbus.ObjectPath {
  389. return s.Path
  390. }
  391. func (s *Dbusmenu_LayoutUpdatedSignal) values() []interface{} {
  392. return []interface{}{s.Body.Revision, s.Body.Parent}
  393. }
  394. // Dbusmenu_LayoutUpdatedSignalBody is body container.
  395. type Dbusmenu_LayoutUpdatedSignalBody struct {
  396. Revision uint32
  397. Parent int32
  398. }
  399. // Dbusmenu_ItemActivationRequestedSignal represents com.canonical.dbusmenu.ItemActivationRequested signal.
  400. type Dbusmenu_ItemActivationRequestedSignal struct {
  401. sender string
  402. Path dbus.ObjectPath
  403. Body *Dbusmenu_ItemActivationRequestedSignalBody
  404. }
  405. // Name returns the signal's name.
  406. func (s *Dbusmenu_ItemActivationRequestedSignal) Name() string {
  407. return "ItemActivationRequested"
  408. }
  409. // Interface returns the signal's interface.
  410. func (s *Dbusmenu_ItemActivationRequestedSignal) Interface() string {
  411. return InterfaceDbusmenu
  412. }
  413. // Sender returns the signal's sender unique name.
  414. func (s *Dbusmenu_ItemActivationRequestedSignal) Sender() string {
  415. return s.sender
  416. }
  417. func (s *Dbusmenu_ItemActivationRequestedSignal) path() dbus.ObjectPath {
  418. return s.Path
  419. }
  420. func (s *Dbusmenu_ItemActivationRequestedSignal) values() []interface{} {
  421. return []interface{}{s.Body.Id, s.Body.Timestamp}
  422. }
  423. // Dbusmenu_ItemActivationRequestedSignalBody is body container.
  424. type Dbusmenu_ItemActivationRequestedSignalBody struct {
  425. Id int32
  426. Timestamp uint32
  427. }