IDE Communicator - getting started

With Xojo 2021r2.1 and MacOS Ventura 13.13 I’m unable to connect using the “IDE Communicator - Tester” example app.

There is no “XojoIDE” item in /private/tmp - maybe Ventura prevents 2021r2.1 from creating it?

In this old post IDE Communication Not Working - #12 by Will_Shank Will Shank describes using AppleScript to control Xojo, which I’d be fine with, but I don’t see a dictionary for Xojo in ScriptEditor, so it seems 2021r2.1 doesn’t support AppleScript?

The socket should be in

/tmp/XojoIDE

not

/private/tmp/XojoIDE

Yeah, he’s sending raw applescript events to the IDE and it’s really not set up to accept them in any meaningful way. I can tell you for a fact that the sanctioned IDE Communicator does, especially from macOS.

My understanding is that /tmp is a symlink to /private/tmp. Breakpointing the example program after FindPCpath returns shows that it’s /private/tmp/XojoIDE

image

When I use echo $TMPDIR in Terminal to get my temp folder’s path and paste that into the Finder’s Go To Folder dialog, it takes me to

image

For simplicity, just use /tmp/XojoIDE and it’ll just work. It’s not going to work with $TMPDIR

This is the FindPCPath function in the example project:

// Find a path for our temp file.
Dim parent As FolderItem

Try
  parent = Volume(0).Child("tmp")
Catch err As NilObjectException
  parent = Nil
End Try
...

Try
  Const ipcpath = "XojoIDE"
  Return parent.Child(ipcpath).ShellPath
Catch err As NilObjectException
  Return ""
End Try

The path returned by this function is /private/tmp/XojoIDE

If I use Go To Folder in the Finder and enter “/tmp” it shows this

and in that folder there is no “XojoIDE” item

Screenshot 2024-01-24 at 7.56.29 AM

So the question is, again, why is XojoIDE not there, and what can I do to make it be there.

Thanks!

Change that to

parent = New Folderitem("/tmp/XojoIDE", Folderitem.PathModes.Native)

Now it returns /private/var/tmp/XojoIDE, but there’s no XojoIDE item in /private/var/tmp/ either.

I am on 13.6.3. On my system with the following code:

Dim f As New FolderItem("/tmp/XojoIDE", FolderItem.PathModes.Native)

Dim s As String = f.NativePath

s = “/tmp/XojoIDE”

Something is very wrong on your system.

You do have a Xojo IDE running right?

Could be the Xojo version?

The Xojo IDE is ALWAYS running on my system :slight_smile:

I’ll fire up a newer version and see what I see with that.

It might be worth quitting and restarting it. The problem is that if you ever have two instances of the IDE running, whichever was first is the one that will own the IPC socket. If that one is quit, the second one does not spin up a new socket.

Now… you can get around this by specifying a different name using an environment variable before launching the IDE.

XOJO_IPCPATH=Xojo2023r2

If you’ll be running this without being around to click buttons, I also suggest setting:

XOJO_AUTOMATION=TRUE

That worked, thanks! :slight_smile:

1 Like