[xdg-draft] JobViewServer

Rafael Fernández López ereslibre at kde.org
Wed Feb 20 17:17:35 GMT 2008

Hi all,

Kevin and me have been working on a specification for freedesktop of the 
JobViewServer (known on KDE as kuiserver).

There are two main parts on the communication: jobs themselves, what can be 
considered the clients, and the server.

The server should be a DBUS autostart service, so when a job asks for this 
service and no server is running, automatically one of the available services 
is started.

> JobView < (org.kde.JobView) - (org.freedesktop.JobView)

- void terminate(string errorMessage)
The job has finished (correctly or aborted). errorMessage will be a null 
string if the job did finish correctly, and will contain the string reason of 
why the job did finish unexpectedly if the job did not finish correctly.

- void setSuspended(bool suspended)
The job has been suspended or resumed. This method will only be called if the 
job had those capabilities (@see requestView() on the JobViewServer). 
suspended parameter will determine if the job is suspended or resumed, 
depending on its value, true or false, respectively.

- void setTotalAmount(uint64 amount, string unit)
Informs about the total amount of work the job has to do. unit for instance 
could be "Mb" when downloading a file, "Contacts" when importing contacts on 
a instant messaging app. amount is the number of total elements to process. 
unit parameter should not contain whitespaces at the beginning or at the end.

- void setProcessedAmount(uint64 amount, string unit)
Sets the amount of already processed elements. Parameters have the same effect 
as on the previous call.

- void setPercent(uint32 percent)
Sets the percent finished of the job until now.

- void setSpeed(uint64 bytesPerSecond)
If applicable, sets the current speed of the job in bytes per second. Useful 
when the job is talking about I/O operations.

- void setInfoMessage(string message)
Tells an informative message of what the job is working on. Useful values 
could be for instance "Copying", "Moving", "Importing Contacts", "Burning ISO 

- bool setDescriptionField(uint32 number, string name, string value)
Sets extra information about the job. number parameter sets the ID for the 
description field. name specifies what is the description field name, and 
value which value it has. If the description field has been correctly saved, 
then true is returned, false otherwise. Depending on the implementation, it 
can force number be as much 2, for instance, but we encourage to freely let 
the interface user set the number he/she wants. The name and value strings 
can be changed by a later call to setDescriptionField with the same number 
parameter. For instance you could do:

setDescriptionField(1, "Contact", "John Whatever");
setDescriptionField(1, "Contact", "Alice Whatever");

If you want to remove a description field, you only will need to set name and 
value to null strings, and the server should remove the information.

- void suspendRequested() [signal]
This signal is called when a suspend event is requested by the Server. The job 
needs to be connected to this signal if it wants to react to this event. Note 
that the job needs the capabilities to be suspended/resumed (@see 
requestView() on the JobViewServer).

- void resumeRequested() [signal]
Same as the previous signal, but with a resume event. Note that the job needs 
the capabilities to be suspended/resumed (@see requestView() on the 

- void cancelRequested() [signal]
This signal will only be emitted if the job has been manually cancelled. Note 
that the job needs the capabilities to be cancelled (@see requestView() on 
the JobViewServer).

> JobViewServer < (org.kde.JobViewServer) - (org.freedesktop.JobViewServer)

- objectPath requestView(string appName, string appIconName, uint32 
The job requests to be shown with appName, for instance "Kopete", appIconName, 
for example "kopete" and with certain capabilities. This last parameter 
supports bit operations. Meaning:

0x0001 => user should be able to cancel the job
0x0002 => user should be able to suspend/resume the job

The return value is an object path that determines the interaction with the 
job itself until it finishes its execution.

Before presenting this document to xdg, we need to have an implementation, and 
that is what I'm going to do with kuiserver from now. I'm going to adapt it 
to this specification, and after having it, we will present this xml 
interface to the freedesktop community.

Before getting hands to work, I'd love to know if you have comments on the 
interface, or if you think something could be improved before working on the 
code itself.

Bye and thanks,
Rafael Fernández López

GPG Fingerprint: B9F4 4730 43F8 FFDD CC5E BA8E 724E 406E 3F01 D070
-------------- next part --------------
A non-text attachment was scrubbed...
Name: org.kde.JobViewServer.xml
Type: text/xml
Size: 696 bytes
Desc: not available
URL: <http://mail.kde.org/pipermail/kde-core-devel/attachments/20080220/92ff4e47/attachment.xml>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: org.kde.JobView.xml
Type: text/xml
Size: 1912 bytes
Desc: not available
URL: <http://mail.kde.org/pipermail/kde-core-devel/attachments/20080220/92ff4e47/attachment-0001.xml>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 189 bytes
Desc: This is a digitally signed message part.
URL: <http://mail.kde.org/pipermail/kde-core-devel/attachments/20080220/92ff4e47/attachment.sig>

More information about the kde-core-devel mailing list