<br><font size=3>Thank you all for your answers.</font>
<p><font size=3>What i am actually facing is a problem with a sugarizing.
I need to run the script, copy-to-Journal.py from a C program.</font>
<p><font size=3>1 - With &quot;exec dbus-launch CActivity $args&quot; in
the sugarActivity file, i can run multiple instances but i cant run the
script. It crashes throwing a python error. In olpc wiki says that the
scripts only works running with olpc user. I dont know if the dbus-launch
changes something in the way the scripts are called.</font>
<br>
<br><font size=2 face="Courier New">Error: org.freedesktop.DBus.Python.AttributeError:
Traceback (most recent call last):</font>
<br><font size=2 face="Courier New">&nbsp; File &quot;/usr/lib/python2.5/site-packages/dbus/service.py&quot;,
line 692, in _message_cb</font>
<br><font size=2 face="Courier New">&nbsp; &nbsp; retval = candidate_method(self,
*args, **keywords)</font>
<br><font size=2 face="Courier New">&nbsp; File &quot;/usr/lib/python2.5/site-packages/olpc/datastore/datastore.py&quot;,
line 215, in create</font>
<br><font size=2 face="Courier New">&nbsp; &nbsp; mp.create_async(props,
filelike, can_move=transfer_ownership,</font>
<br><font size=2 face="Courier New">AttributeError: 'NoneType' object has
no attribute 'create_async'</font>
<p><font size=3>2 - But changing it to &quot;exec CActivity $args&quot;
the scripts run perfect, but the second instance of the activity throws
an &quot;error when trying to load or save configuration... &quot;<br>
</font><font size=2 face="Courier New"> &nbsp; </font><font size=3>Configuration
server couldn't be contacted: D-BUS error: Method &quot;LookupExtended&quot;
<br>
 &nbsp; &nbsp; &nbsp; &nbsp;with signature &quot;ssb&quot; on interface
&quot;org.gnome.GConf.Database&quot; doesn't exist </font>
<p><font size=3>***********<br>
SugarActivity file: sugarPlanilla<br>
***********<br>
</font><font size=2 face="Courier New">#!/bin/sh</font>
<br><font size=2 face="Courier New">args=&quot;&quot;</font>
<br><font size=2 face="Courier New">while [ -n &quot;$2&quot; ] ; do</font>
<br><font size=2 face="Courier New">&nbsp; &nbsp; &nbsp;case &quot;$1&quot;
in</font>
<br><font size=2 face="Courier New">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;-b
| --bundle-id) &nbsp; &nbsp; export SUGAR_BUNDLE_ID=&quot;$2&quot; ;;</font>
<br><font size=2 face="Courier New">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;-a
| --activity-id) &nbsp; export SUGAR_ACTIVITY_ID=&quot;$2&quot; ;;</font>
<br><font size=2 face="Courier New">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;-o
| --object-id) &nbsp; &nbsp; export SUGAR_OBJECT_ID=&quot;$2&quot; ; echo
&quot;o $2&quot;; args=&quot;$args -o $2&quot; ;;</font>
<br><font size=2 face="Courier New">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;-u
| --uri) &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; export SUGAR_URI=&quot;$2&quot;
;;</font>
<br><font size=2 face="Courier New">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;*)
echo unknown argument $1 $2 ;;</font>
<br><font size=2 face="Courier New">&nbsp; &nbsp; &nbsp;esac</font>
<br><font size=2 face="Courier New">&nbsp; &nbsp; &nbsp;shift;shift</font>
<br><font size=2 face="Courier New">done</font>
<br><font size=2 face="Courier New">echo $args</font>
<br><font size=2 face="Courier New">export LD_PRELOAD=&quot;$SUGAR_BUNDLE_PATH/lib/libsugarize.so&quot;</font>
<br><font size=2 face="Courier New">export NET_WM_NAME=&quot;Planilla&quot;</font>
<br><font size=2 face="Courier New"><b>exec gnumeric $args</b></font>
<br>
<br><font size=3>and the Activity.info runs the sugarActivity file.</font>
<br><font size=2 face="Courier New">exec = sugarPlanilla</font>
<p><font size=3>Thanks,<br>
Pablo Posada<br>
____________________________________________ </font>
<p>
<table width=100%>
<tr valign=top>
<td width=23% rowspan=5 bgcolor=#e1e1e1>
<div align=center>
<br><font size=1><b>Bert Freudenberg &lt;bert@freudenbergs.de&gt;</b></font><font size=3>
</font>
<p><font size=1>12/10/2008 11:17 AM CET</font></div>
<td width=10% bgcolor=#e1e1e1>
<div align=right>
<br><font size=1>To</font><font size=3> &nbsp;</font></div>
<td width=66% bgcolor=#e1e1e1><font size=1><br>
david@lang.hm</font>
<tr valign=top>
<td bgcolor=#e1e1e1>
<div align=right>
<br><font size=1>cc</font><font size=3> &nbsp;</font></div>
<td bgcolor=#e1e1e1><font size=1><br>
Pablo Posada &lt;pablo.posada@tcs.com&gt;, OLPC Development &lt;devel@lists.laptop.org&gt;,
Sugar Devel &lt;sugar-devel@lists.sugarlabs.org&gt;</font>
<tr valign=top>
<td bgcolor=#e1e1e1>
<div align=right>
<br><font size=1>bcc</font><font size=3> &nbsp;</font></div>
<td bgcolor=#e1e1e1>
<tr valign=top>
<td bgcolor=#e1e1e1>
<div align=right>
<br><font size=1>Subject</font><font size=3> &nbsp;</font></div>
<td bgcolor=#e1e1e1><font size=1><br>
Re: [Sugar-devel] One instance activity</font>
<tr valign=top>
<td bgcolor=#e1e1e1>
<td bgcolor=#e1e1e1></table>
<br>
<br><tt><font size=3><br>
On 10.12.2008, at 11:56, david@lang.hm wrote:</font></tt><font size=3><br>
</font><tt><font size=3><br>
&gt; On Wed, 10 Dec 2008, Bert Freudenberg wrote:<br>
&gt;<br>
&gt;&gt; On 10.12.2008, at 03:57, david@lang.hm wrote:<br>
&gt;&gt;<br>
&gt;&gt;&gt; On Tue, 9 Dec 2008, Bert Freudenberg wrote:<br>
&gt;&gt;&gt;&gt; On 09.12.2008, at 18:55, Eben Eliason wrote:<br>
&gt;&gt;&gt;&gt;&gt; Are you sure? &nbsp;Browse makes use of shared code,
but still<br>
&gt;&gt;&gt;&gt;&gt; presents the<br>
&gt;&gt;&gt;&gt;&gt; user with the appearance of multiple instances.<br>
&gt;&gt;&gt;&gt; Right.<br>
&gt;&gt;&gt;&gt; The way to do it would be to create a unique D-Bus service
in your<br>
&gt;&gt;&gt;&gt; activity. When the second instance tries to create that
service it<br>
&gt;&gt;&gt;&gt; will notice that it already exists. It could then notify
its first<br>
&gt;&gt;&gt;&gt; instance via said D-Bus service.<br>
&gt;&gt;&gt; you don't need to use D-Bus for this, it can be done by X
without<br>
&gt;&gt;&gt; any other communication channels.<br>
&gt;&gt;&gt; I don't know the details for how to do this, but I've seen
mozilla/<br>
&gt;&gt;&gt; firefox do this for a few years. to see this start firefox
on one<br>
&gt;&gt;&gt; machine, connect to another machine and point the display
back to<br>
&gt;&gt;&gt; the first one. then try and start firefox on that second machine.<br>
&gt;&gt;&gt; the end result will be a new window opening up, but running
on the<br>
&gt;&gt;&gt; first machine (if you have trouble seeing the difference,
make the<br>
&gt;&gt;&gt; two machines have different bookmarks, or give one network
access<br>
&gt;&gt;&gt; that the other doesn't have)<br>
&gt;&gt;&gt; please don't develop new mechanisms to do things that already
exist.<br>
&gt;&gt;<br>
&gt;&gt;<br>
&gt;&gt; It's not a new mechanism. The usage of a named D-Bus service to<br>
&gt;&gt; ensure unique program instances is documented and not my invention<br>
&gt;&gt; (though I cannot remember where I saw it first).<br>
&gt;&gt;<br>
&gt;&gt; I should have written &quot;One way to do this would be ...&quot;,
I give you<br>
&gt;&gt; that.<br>
&gt;&gt;<br>
&gt;&gt; But you cannot know which way would be preferable for a given<br>
&gt;&gt; activity. And since it is private to the activity and does not<br>
&gt;&gt; affect other activities, no harm is done either way.<br>
&gt;&gt;<br>
&gt;&gt; E.g., twiddling X properties is hard in various high-level<br>
&gt;&gt; languages, in particular when using higher-level UI toolkits.
Sugar<br>
&gt;&gt; currently requires two custom X properties and this is causing<br>
&gt;&gt; activity authors considerable pain. Even Sugar itself had to resort<br>
&gt;&gt; to C code, adding a custom native library to manipulate these<br>
&gt;&gt; properties, it was not easy in pure Python. This is in stark<br>
&gt;&gt; contrast to the nicely general and easy-to-use Python D-Bus<br>
&gt;&gt; bindings, which are similarly available in other high-level<br>
&gt;&gt; languages.<br>
&gt;&gt;<br>
&gt;&gt; So please consider that not all people like having to go down
into<br>
&gt;&gt; the machine room to make new plumbing with a C compiler. Having<br>
&gt;&gt; done too much of that myself I can relate to them.<br>
&gt;<br>
&gt; my initial reaction to this is that this sounds like a gap in the<br>
&gt; python libraries that would be very useful to fill. getting someone<br>
&gt; to write a python library to better access the X properties would<br>
&gt; help many areas.<br>
&gt;<br>
&gt; any idea why nobody has written one yet? Python is much better than<br>
&gt; many languages at letting you write a library in C and then use it<br>
&gt; cleanly, so if doing this in python is as hard as you are<br>
&gt; indicating, why hasn't it been addressed?</font></tt><font size=3><br>
<br>
</font><tt><font size=3><br>
I don't know. And this is diverging from the subject at hand.</font></tt><font size=3><br>
</font><tt><font size=3><br>
Even if it was simple to set and read an X property then implementing<br>
single-instance apps via X properties still would be considerable more<br>
complex than using D-Bus. You would have to learn a whole lot about<br>
how X works first, and then design that mechanism on top of it. Having<br>
done a fair bit of X programming myself (the Squeak VM talks to Xlib<br>
directly, no toolkit) I would not exactly rate this as trivial. X can<br>
be abused to do IPC, sure, but it still is abuse. D-Bus is made to do<br>
that.</font></tt><font size=3><br>
</font><tt><font size=3><br>
- Bert -</font></tt><font size=3><br>
<br>
</font><font size=1 color=white><br>
ForwardSourceID:NT00005F1E </font><pre>=====-----=====-----=====
Notice: The information contained in this e-mail
message and/or attachments to it may contain 
confidential or privileged information. If you are 
not the intended recipient, any dissemination, use, 
review, distribution, printing or copying of the 
information contained in this e-mail message 
and/or attachments to it are strictly prohibited. If 
you have received this communication in error, 
please notify us by reply e-mail or telephone and 
immediately and permanently delete the message 
and any attachments. Thank you


</pre>