I actually don't have a visual on the GUI interface. The cytoscape is run within a Docker container, where we use Xvfb to provide X display service.
I try to mimic your workaround. I enter the container and run cytoscape.sh without "server" option, I got the message below. Now if I simply type shutdown or ctrl-d to quit. Then restart "cytoscape.sh server &", I will get the same problem. How do I mimic your workaround in the command line shell?
[cytoscape@649e94328404 cytoscape-unix-3.9.1]$ ./cytoscape.sh
karaf.base: /home/cytoscape/cytoscape-unix-3.9.1/framework
JAVA_HOME: /etc/alternatives/jre_11
_
___ _ _| |_ ___ ___ ___ __ _ _ __ ___
/ __| | | | __|/ _ \/ __|/ __|/ _` | '_ \ / _ \
| (__| |_| | |_| (_) \__ \ (__| (_| | |_) | __/
\___|\__, |\__|\___/|___/\___|\__,_| .__/ \___|
|___/ |_|
Cytoscape 3.9.1
Hit '<tab>' for a list of available commands
and '[cmd] --help' for help on a specific command.
Hit '<ctrl-d>' or 'osgi:shutdown' to shutdown Cytoscape.
karaf@Cytoscape 3.9.1()> java.lang.UnsatisfiedLinkError: /home/cytoscape/CytoscapeConfiguration/3/karaf_data/cache/bundle108/version0.0/bundle.jar-lib/0/native/linux/liblwjgl64.so
: libXcursor.so.1: cannot open shared object file: No such file or directory
at java.base/java.lang.ClassLoader$NativeLibrary.load0(Native Method)
at java.base/java.lang.ClassLoader$NativeLibrary.load(ClassLoader.java:2442)
at java.base/java.lang.ClassLoader$NativeLibrary.loadLibrary(ClassLoader.java:2498)
at java.base/java.lang.ClassLoader.loadLibrary0(ClassLoader.java:2694)
at java.base/java.lang.ClassLoader.loadLibrary(ClassLoader.java:2640)
at java.base/java.lang.Runtime.loadLibrary0(Runtime.java:830)
at java.base/java.lang.System.loadLibrary(System.java:1870)
at org.lwjgl.Sys$1.run(Sys.java:72)
at java.base/java.security.AccessController.doPrivileged(Native Method)
at org.lwjgl.Sys.doLoadLibrary(Sys.java:66)
at org.lwjgl.Sys.loadLibrary(Sys.java:87)
at org.lwjgl.Sys.<clinit>(Sys.java:117)
at
org.lwjgl.opencl.CL.<clinit>(CL.java:52)
at org.cytoscape.opencl.cycl.CyCL.initialize(CyCL.java:69)
at org.cytoscape.opencl.cycl.CyActivator.lambda$start$0(CyActivator.java:31)
at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515)
at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
at java.base/java.lang.Thread.run(Thread.java:834)
karaf@Cytoscape 3.9.1()>