[Sugar-devel] One instance activity

Bert Freudenberg bert at freudenbergs.de
Wed Dec 10 04:28:07 EST 2008


On 10.12.2008, at 03:57, david at lang.hm wrote:

> On Tue, 9 Dec 2008, Bert Freudenberg wrote:
>
>> On 09.12.2008, at 18:55, Eben Eliason wrote:
>>
>>> Are you sure?  Browse makes use of shared code, but still presents  
>>> the
>>> user with the appearance of multiple instances.
>>
>> Right.
>>
>> The way to do it would be to create a unique D-Bus service in your
>> activity. When the second instance tries to create that service it
>> will notice that it already exists. It could then notify its first
>> instance via said D-Bus service.
>
> you don't need to use D-Bus for this, it can be done by X without  
> any other communication channels.
>
> I don't know the details for how to do this, but I've seen mozilla/ 
> firefox do this for a few years. to see this start firefox on one  
> machine, connect to another machine and point the display back to  
> the first one. then try and start firefox on that second machine.  
> the end result will be a new window opening up, but running on the  
> first machine (if you have trouble seeing the difference, make the  
> two machines have different bookmarks, or give one network access  
> that the other doesn't have)
>
> please don't develop new mechanisms to do things that already exist.


It's not a new mechanism. The usage of a named D-Bus service to ensure  
unique program instances is documented and not my invention (though I  
cannot remember where I saw it first).

I should have written "One way to do this would be ...", I give you  
that.

But you cannot know which way would be preferable for a given  
activity. And since it is private to the activity and does not affect  
other activities, no harm is done either way.

E.g., twiddling X properties is hard in various high-level languages,  
in particular when using higher-level UI toolkits. Sugar currently  
requires two custom X properties and this is causing activity authors  
considerable pain. Even Sugar itself had to resort to C code, adding a  
custom native library to manipulate these properties, it was not easy  
in pure Python. This is in stark contrast to the nicely general and  
easy-to-use Python D-Bus bindings, which are similarly available in  
other high-level languages.

So please consider that not all people like having to go down into the  
machine room to make new plumbing with a C compiler. Having done too  
much of that myself I can relate to them.

- Bert -




More information about the Devel mailing list