<div dir="ltr"><div dir="ltr"><div class="gmail_default" style="font-size:small"><br></div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Thu, 8 Jul 2021 at 15:59, Tobias Boege via User <<a href="mailto:user@lists.gambas-basic.org">user@lists.gambas-basic.org</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">On Thu, 08 Jul 2021, John Dovey wrote:<br>
> Just to throw a spammer in the works, what about those of us who run<br>
> everything throw X windows and don’t have a desktop at all?<br>
> <br>
<br>
D-Bus does not need a desktop either, it is a message passing mechanism.<br>
For example, systemd depends on D-Bus, so many systems without a desktop<br>
or even without a graphical display at all might already run D-Bus.<br>
<br>
If you don't want to rely on the presence of D-Bus, there is still the<br>
"pid file" technique (but you have to handle stale pid files). Or you<br>
could make your program set up a UNIX socket in a well-known location.<br>
Other instances of your program will try to connect to the socket and<br>
if they get a response, another instance is running. If not, they<br>
create that socket and answer on it to prove that they're running.<br>
<br>
Best,<br>
Tobias<br>
</blockquote><div><br></div><div style="font-size:small" class="gmail_default">i used shell and pgrep</div><div style="font-size:small" class="gmail_default">Dim sResult As String<br></div><div style="font-size:small" class="gmail_default">Shell "pgrep -f -d , " & Application.Name To sResult<br></div><div style="font-size:small" class="gmail_default"><br></div><div style="font-size:small" class="gmail_default">that returns a list of running application Id's matching the app separated by commas</div><div style="font-size:small" class="gmail_default"><br></div><div style="font-size:small" class="gmail_default">You can then...</div><div style="font-size:small" class="gmail_default">Dim sIDs As String[] = Split(sResult, ",")</div><div style="font-size:small" class="gmail_default"><br></div><div style="font-size:small" class="gmail_default">if sIDs.Count=1 (only one app loaded)</div><div style="font-size:small" class="gmail_default"><br></div><div style="font-size:small" class="gmail_default">If SIDs.Count>1 Then<br></div><div style="font-size:small" class="gmail_default">then the application chooses the lowest number PID and selects it as the master app.</div><div style="font-size:small" class="gmail_default">Dim iLowPID as Integer = Val(sIDs[0])</div><div style="font-size:small" class="gmail_default">For i As Integer = 1 To SIDs.Max</div><div style="font-size:small" class="gmail_default">  iLowPID = Min(iLowPID, Val(sIDs[i]))<br></div><div style="font-size:small" class="gmail_default">Next</div><div style="font-size:small" class="gmail_default"><br></div><div style="font-size:small" class="gmail_default">If iLowPID = Application.Id  (then this app is master)</div><div style="font-size:small" class="gmail_default"><br></div><div style="font-size:small" class="gmail_default">I've an example of doing this and using a pipe to send the master app the args on the gambas.one forum..</div><div style="font-size:small" class="gmail_default"><a href="https://forum.gambas.one/viewtopic.php?f=13&t=943">https://forum.gambas.one/viewtopic.php?f=13&t=943</a></div><div style="font-size:small" class="gmail_default"></div><div style="font-size:small" class="gmail_default"><br></div><div style="font-size:small" class="gmail_default">BruceS</div><div style="font-size:small" class="gmail_default"><br></div></div></div>