Shell blocking UI - Raspberry Pi

I am trying to launch chromium via a Shell command.

/usr/bin/chromium-browser

When I run the command the app UI becomes unresponsive. I have tried putting the shell command in a thread and it still blocks the UI when chromium is launched.

If I kill the chromium instance the UI becomes responsive again.

Maybe try the following command with a MessageBox to show the possible error. Could you post what is shown in the MessageBox?

//Use Raspberry Pi Shell to start the browser
Var s as Shell
s = New Shell
//Start chromium browser
s.Execute("/usr/bin/chromium-browser")
MessageBox "[" + s.Result + "] " + s.ExitCode.ToString

Make sure your Shell’s Mode is Asynchronous.

1 Like
Failed to parse extension manifest.
[7517:7517:0325/221320.660389:ERROR:gpu_init.cc(523)] Passthrough is not supported, GL is egl, ANGLE is

When I set the mode to Asynchronous The Chromium window opens behind the MessageBox. When I close the MessageBox the Chromium window closes.

If there is no MessageBox I never see the Chromium window.

That’s probably because your shell is falling out of scope and being destructed. When you use an Asynchronous shell, Execute returns immediately and the command continues to run alongside your Xojo code.

I think we need more context here. What are you trying to accomplish?

I am trying to launch a web page in a browser window. I’d do it with a DesktopHTMLViewer but the performance/frame rate is bad.

Can you explain more about it falling out of scope?

Can I keep it in scope?

This is the behavior I would like to see. I want the Chromium window to keep running.

The interesting thing is if I already have a chromium window running then run the shell from Xojo, the new window/location replaces the existing one and the app does not hang. In this situation running the command does not produce an error.

Shells and the items they run are child processes of your Xojo application, as they complete or your application is quit they are shut down. If you simply want to open a file in Chromium use the “Launch” or “Open” method of the folder item class. That will open the item independently of your application.

FolderItem.Open
FolderItem.Launch

This sounds like you’re looking for System.GoToURL

1 Like

The UI still locks up when using System.GoToURL.
Even if I put it in a Thread the UI locks up when Chromium is launched via the App.
If I close the Chromium window the App starts working again.

If there is a Chromium window already open, the app does not lock up. Chromium loads the URL into the existing window.

I ended up solving this by creating a system service to start Chromium