Added emountd, a simple daemon that uses HAL to monitor when

devices get mounted or unmounted; reports will be send via dbus.

Updated docs for dbus usage.

Removed obsolete parts from jambuild.txt.

Small tunings in asciidoc's xhtml11.conf.

econtrol now can run program applets.
This commit is contained in:
Sanel Zukan
2008-08-05 14:26:38 +00:00
parent aebae643bd
commit 545bbbb330
10 changed files with 644 additions and 118 deletions

View File

@ -10,4 +10,5 @@
SubDir TOP docs ;
EdeManual index.txt introduction.txt jambuild.txt dbus-usage.txt ;
EdeManual index.txt introduction.txt jambuild.txt ;
EdeManualWithToc dbus-usage.txt ;

View File

@ -426,7 +426,7 @@ Version {revision}<br />
Last updated {localdate} {localtime}
</div>
<div id="footer-badges">
{edeversion}
{edeversion} manual
</div>
ifdef::badges[]
<div id="footer-badges">

View File

@ -1,6 +1,8 @@
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 either via libdbus nor edelib, but
to document and explain what programs listen or send data via D-BUS protocol.
@ -14,21 +16,141 @@ EDE uses 'org.equinoxproject' as main namespace for interfaces and object paths,
/org/equinoxproject/Eiconman # eiconman object path
-----------------------------------------------------------
Applications
------------
rest of the name will be application name and method or signal name, like:
eiconman
~~~~~~~~
-----------------------------------------------------------
org.equinoxproject.Eiconman.FooMethod # FooMethod belongs to eiconman
-----------------------------------------------------------
Signals
^^^^^^^
*org.equinoxproject.Eiconman.DesktopChanged*
Interfaces
----------
org.equinoxproject.Eiconman.DesktopChanged(int32 n, string name)
org.equinoxproject.Eiconman
~~~~~~~~~~~~~~~~~~~~~~~~~~~
Used by eiconman and access object is '/org/eqiunoxproject/Eiconman'. 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 <<X1, Drive types>>)
cdrom_type int32 CDROM type, valid only if 'drive_type == DRIVE_TYPE_CDROM' (see <<X2, Volume disc types>>)
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
-------------------------------------------------------------

View File

@ -24,8 +24,9 @@
*Programs*
- link:ecalc.html[Ecalc]
- link:evoke.html[Evoke]
- link:etip.html[Etip]
- link:evoke.html[Evoke]
- link:emountd.html[Emountd]
*Development*

View File

@ -11,7 +11,7 @@ Introduction
Why not make, you probably ask yourself, since the rest of the world
use it? Well, make is a nice tool for small projects, or relatively
large one with monolithic configuration file. This means, if you have
1000 files and you want to build them on the same way, make can be usefull
1000 files and you want to build them on the same way, make can be useful
(sorta of).
On other hand, if you want some of them to have specific requirements,
@ -27,22 +27,21 @@ libraries (today very often), that library 'will be tied to' that binary, even
if binary does not use any function from it. It is silly that ecalc requires,
for example, libogg for startup, even if it does not use any function from it!
In EDE 1.x we had pretty simple (and that is 'wohaaa' with arcane make syntax)
build system based on make (without automake stuff because is... ah, check comments
online about it :-P) that served us very well.
In EDE 1.x we had pretty simple build system based on make (without automake stuff
because is... ah, check comments online about it :-P) that served us very well.
But it had a lot of limitation. You couldn't, as sample, specify '-DSHAPE' flag
for a window manager without passing it to every program in the tree. The same
applies for linked libraries too.
Jam is designed for these cases, and when they occur, it is like homeland for him.
Jam is designed for these cases and when they occur, it is like homeland for him.
So, you want only 'foo.cpp' from 'baz' directory to get '-DXYZ' flag, no problem. Or you
want that every file in 'baz' directory (no matter is it binary or shared library)
be linked with 'libtaz'; no problem either.
So how it looks like
--------------------
Here are few samples with syntax explaination.
Here are few samples with syntax explanation.
Let say you have 'foo.cpp', a cool application and you want to create executable from
it. This is the way:
@ -100,97 +99,3 @@ must have space before ending ';' character, like:
Well, that is a jam syntax :-)
===================================
EDE build specific rules
------------------------
This is the main reason why you are reading this :-P. This is a list of rules
for easier building various pieces and short showcase how to use them.
Program rules
~~~~~~~~~~~~~
These rules are used to build binary file(s).
Program [target] : [sources] : [libraries] : [flags] ;
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Creates [target] binary from [sources]. If libraries are given (normal way of linking
like '-lfoo', they will be used. If [flags] are given, like '-DABC' they will be
passed to compiler. Like:
-------------------------
# Compile and link with fltk libraries
SOURCE = Main.cpp SciCalc.cpp ;
Program ecalc : $(SOURCE) : -L/usr/local/share -lfltk -lX11 -lm -lstdc++ ;
# Compile and link with fltk libraries; also pass -D_DEBUG
SOURCE = Main.cpp SciCalc.cpp ;
Program ecalc : $(SOURCE) : -L/usr/local/share -lfltk -lX11 -lm -lstdc++ : -D_DEBUG ;
-------------------------
EdeProgram [target] : [sources] : [optional-libraries] : [optional-flags] ;
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Create [target] and link it with edelib and fltk libraries. If [optional-libraries] and
[optional-flags] are given, they will be used. Like:
-------------------------
SOURCE = abc.cpp ;
EdeProgram abc : abc.cpp ;
-------------------------
EfltkProgram [target] : [sources] : [optional-libraries] : [optional-flags] ;
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
The same as EdeProgram, but will link with efltk libraries. This rule is used to compile
some programs from 1.x version, and will be removed when those programs are ported
to the edelib and fltk code.
FltkProgram [target] : [sources] : [optional-libraries] : [optional-flags] ;
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Create [target] linking it with fltk libraries only. Also will link with images libraries.
FltkProgramBare [target] : [sources] : [optional-libraries] : [optional-flags] ;
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Same as FltkProgram, but will *not* link with images libraries. Usefull for programs
which does not require images support.
Library rules
~~~~~~~~~~~~~
These rules are used to build either static or shared libraries.
StaticLibrary [library] : [sources] : [optional-flags] ;
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Creates static library from [sources] files. If [optional-flags] are given, they
will be passed to the compiler. Sample:
-------------------------
# Compile each file with -D_DEBUG flag and create
# mylib.a library
StaticLibrary mylib : file1.cpp file2.cpp file3.cpp : -D_DEBUG ;
-------------------------
SharedLibrary [library] : [sources] : [optional-linklibs] ;
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Creates a shared library from [sources] and link with [optional-linklibs]. Shared library
will, by default, have a '.so' extension, if extension in [library] was not given.
SharedLibraryVersioned [library] : [sources] : [optional-linklibs] : [optional-version] : [nolink] ;
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Creates a versioned shared library (like foo.so.1.2.0) and symbolic link (foo.so) to it.
If [optional-version] is given, it will be used to add version extension, if not,
this rule behaves the same as SharedLibrary (meaning symbolic link will *not* be created).
If option [nolink] was given, but [optional-version] does, symbolic link will not be created.
Here are few samples:
-------------------------
# Create foo.so.1.2.0 and symbolic link to it
SharedLibraryVersioned foo : file1.cpp file2.cpp : -L/some/path -lsomelib : 1.2.0 ;
# Create foo.so.1.2.0 without symbolic link
SharedLibraryVersioned foo : file1.cpp file2.cpp : -L/some/path -lsomelib : 1.2.0 : nolink ;
# Create foo.so.1.2.0 without linking with external libraries
SharedLibraryVersioned foo : file1.cpp file2.cpp : : 1.2.0 : nolink ;
-------------------------