D-BUS usage in EDE ================== Introduction ------------ This document describes link:http://freedesktop.org/wiki/Software/dbus/[D-BUS] usage in EDE applications. It is not meant to describe D-BUS protocol nor how to use it via libdbus nor edelib, but to document and explain what programs listen or what data are send via D-BUS protocol. Naming convention ----------------- EDE uses 'org.equinoxproject' as main namespace for interfaces and object paths, e.g. ----------------------------------------------------------- org.equinoxproject.Desktop # ede-desktop interface /org/equinoxproject/Desktop # ede-desktop object path ----------------------------------------------------------- Rest of the name will be application name with method or signal name. If application name is not suitable or could not be represented as D-BUS name (or could be ambiguous), it can be replaced with applications functionality ('org.equinoxproject.Desktop' sounds much better than 'org.equinoxproject.Ede_Desktop'). Sample: ----------------------------------------------------------- org.equinoxproject.Desktop.FooMethod # FooMethod belongs to ede-desktop ----------------------------------------------------------- Interfaces ---------- org.equinoxproject.Desktop ~~~~~~~~~~~~~~~~~~~~~~~~~~~ Used by ede-desktop and access object is '/org/eqiunoxproject/Desktop'. Provided signals are: DesktopChanged(int32 n, string name) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [grid="all"] `---------`---------`---------------- Name Type Description ------------------------------------- n int32 Desktop number name string Desktop name ------------------------------------- Notify when desktop view was changed. ''''' org.equinoxproject.Emountd ~~~~~~~~~~~~~~~~~~~~~~~~~~ Used by emountd and access object is '/org/equinoxproject/Emountd'. Provided signals are: Mounted(struct device_info) ^^^^^^^^^^^^^^^^^^^^^^^^^^^ 'device_info' contains the following fields: [grid="all"] `---------------`---------`----------------------------------- Name Type Description -------------------------------------------------------------- id uint32 Device ID for easier tracking label string Device label (can be empty) mount_point string Device mount point device_file string Device file drive_type int32 Drive type (see <>) cdrom_type int32 CDROM type, valid only if 'drive_type == DRIVE_TYPE_CDROM' (see <>) read_only bool Is device mounted read-only -------------------------------------------------------------- Notify when storage device was mounted. Unmounted(int32 udi) ^^^^^^^^^^^^^^^^^^^^^ [grid="all"] `---------`---------`---------------- Name Type Description ------------------------------------- id int32 Device ID for easier tracking ------------------------------------- Notify when storage device was unmounted. AudioCDAdded(struct audio_device_info) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 'audio_device_info' contains the following fields: [grid="all"] `---------------`---------`----------------------------------- Name Type Description -------------------------------------------------------------- id uint32 Device ID for easier tracking label string Device label (can be empty) device_file string Device file -------------------------------------------------------------- Notify when Audio CD was added. AudioCDRemoved(int32 udi) ^^^^^^^^^^^^^^^^^^^^^^^^^ [grid="all"] `---------`---------`---------------- Name Type Description ------------------------------------- id int32 Device ID for easier tracking ------------------------------------- Notify when Audio CD was removed. Device enumerations directly maps to HAL ones and those values are send in 'drive_type' and 'cdrom_type' (device_info struct). [[X1]] *Drive types:* ------------------------------------------------------------- DRIVE_TYPE_REMOVABLE_DISK = 0x00 DRIVE_TYPE_DISK = 0x01 DRIVE_TYPE_CDROM = 0x02 DRIVE_TYPE_FLOPPY = 0x03 DRIVE_TYPE_TAPE = 0x04 DRIVE_TYPE_COMPACT_FLASH = 0x05 DRIVE_TYPE_MEMORY_STICK = 0x06 DRIVE_TYPE_SMART_MEDIA = 0x07 DRIVE_TYPE_SD_MMC = 0x08 DRIVE_TYPE_CAMERA = 0x09 DRIVE_TYPE_PORTABLE_AUDIO_PLAYER = 0x0a DRIVE_TYPE_ZIP = 0x0b DRIVE_TYPE_JAZ = 0x0c DRIVE_TYPE_FLASHKEY = 0x0d DRIVE_TYPE_MO = 0x0e ------------------------------------------------------------- [[X2]] *Volume disc types:* ------------------------------------------------------------- VOLUME_DISC_TYPE_CDROM = 0x00 VOLUME_DISC_TYPE_CDR = 0x01 VOLUME_DISC_TYPE_CDRW = 0x02 VOLUME_DISC_TYPE_DVDROM = 0x03 VOLUME_DISC_TYPE_DVDRAM = 0x04 VOLUME_DISC_TYPE_DVDR = 0x05 VOLUME_DISC_TYPE_DVDRW = 0x06 VOLUME_DISC_TYPE_DVDPLUSR = 0x07 VOLUME_DISC_TYPE_DVDPLUSRW = 0x08 VOLUME_DISC_TYPE_DVDPLUSR_DL = 0x09 VOLUME_DISC_TYPE_BDROM = 0x0a VOLUME_DISC_TYPE_BDR = 0x0b VOLUME_DISC_TYPE_BDRE = 0x0c VOLUME_DISC_TYPE_HDDVDROM = 0x0d VOLUME_DISC_TYPE_HDDVDR = 0x0e VOLUME_DISC_TYPE_HDDVDRW = 0x0f VOLUME_DISC_TYPE_MO = 0x10 ------------------------------------------------------------- org.equinoxproject.Shutdown ~~~~~~~~~~~~~~~~~~~~~~~~~~~ A general signal emitted when EDE is starting to shut down. Shutdown() ^^^^^^^^^^ The only member of 'org.equinoxproject.Shutdown' signal. org.equinoxproject.Xsettings ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ This service path exposes XSETTINGS registry. Object path for access service methods is '/org/equinoxproject/Xsettings' and interface is 'org.equinoxproject.Xsettings'. GetAll() ^^^^^^^^ Returns array of all known keys hold by XSETTINGS manager. Each array item is string type. GetType(string key) ^^^^^^^^^^^^^^^^^^^ Returns type of the given key. As XSETTINGS knows only three types (int, string and color), returned value will be string holding type name. [grid="all"] `---------`---------`---------------- Name Type Description ------------------------------------- key string Key name ------------------------------------- GetValue(string key) ^^^^^^^^^^^^^^^^^^^^ Returns value given key holds. Value can be int32, string or array, depending whay type key is. Array will be returned when key holds color type and array will represent RGBA, where each element holds int32 type. [grid="all"] `---------`---------`---------------- Name Type Description ------------------------------------- key string Key name ------------------------------------- Remove(string key) ^^^^^^^^^^^^^^^^^^ Removes given key from XSETTINGS registry. If key wasn't found, the function will do nothing. [grid="all"] `---------`---------`---------------- Name Type Description ------------------------------------- key string Key name ------------------------------------- Flush() ^^^^^^^ Force XSETTINGS manager to store data on disk. This is usually done by manager when exits. Set(string key, type value) ^^^^^^^^^^^^^^^^^^^^^^^^^^^ Set key to given value. Here, value can be int32, string or array (4 int32 elements, representing RGBA) and set value will automatically set key value type. Returns true if done successfully or false if not. [grid="all"] `---------`------------------------------`--------------------- Name Type Description --------------------------------------------------------------- key string Key name value int32, string or int32 array Value key will hold ---------------------------------------------------------------