screen/graphics issue when running from terminal --- do not use root, but normal user

Asked by Laimis

So firstly, I have sikuli.skl or sikuli.sikuli files. There is a simple click on terminal. There are no issues to 'run' these scripts using graphical interface - /Applications/SikuliX. I can see mouse movement and click.

My OS: Yosemite 10.10.5
SikuliX: SikuliX 1.1.0

Two version of java tested:

mac:~ root# /usr/bin/java -version
java version "1.6.0_65"
Java(TM) SE Runtime Environment (build 1.6.0_65-b14-466.1-11M4716)
Java HotSpot(TM) 64-Bit Server VM (build 20.65-b04-466.1, mixed mode)
mac:~ root#

mac:Sikulix root# ./runsikulix -r /Users/apple/Downloads/sikuli.skl
running SikuliX: ./SikuliX.app/Contents/Java/sikulix.jar -r /Users/apple/Downloads/sikuli.skl
[error] Location: outside any screen (0, 1440) - subsequent actions might not work as expected
[error] Location: outside any screen (0, 1440) - subsequent actions might not work as expected
[error] script [ /private/var/folders/zz/zyxvpxvq6csfxvn_n0000000000000/T/Sikulix_1531865805/sikuli.sikuli ] stopped with error in line 1
[error] FindFailed ( can not find 1447888085660.png in R[0,0 2560x1440]@S(0) )
mac:Sikulix root#

I did - rm /usr/bin/java; ln -s ....java1.8..... /usr/bin/java
mac:~ root# java -version
java version "1.8.0_66"
Java(TM) SE Runtime Environment (build 1.8.0_66-b17)
Java HotSpot(TM) 64-Bit Server VM (build 25.66-b17, mixed mode)

mac:Sikulix root# ./runsikulix -r /Users/apple/Downloads/sikuli.skl
running SikuliX: /Applications/SikuliX.app/Contents/Java/sikulix.jar -r /Users/apple/Downloads/sikuli.skl
Exception in thread "main" java.awt.HeadlessException
 at java.awt.GraphicsEnvironment.checkHeadless(GraphicsEnvironment.java:204)
 at java.awt.Window.<init>(Window.java:536)
 at java.awt.Frame.<init>(Frame.java:420)
 at javax.swing.JFrame.<init>(JFrame.java:233)
 at org.sikuli.ide.SikuliIDE.<init>(SikuliIDE.java:153)
 at org.sikuli.ide.SikuliIDE.getInstance(SikuliIDE.java:158)
 at org.sikuli.ide.SikuliIDE.run(SikuliIDE.java:179)
 at org.sikuli.ide.Sikulix.main(Sikulix.java:21)
mac:Sikulix root#

For some reason I get screen or graphics environment errors. Any ideas how to test it better? Or maybe you can see the issue now?

Question information

Language:
English Edit question
Status:
Solved
For:
SikuliX Edit question
Assignee:
No assignee Edit question
Solved by:
Laimis
Solved:
Last query:
Last reply:
Revision history for this message
RaiMan (raimund-hocke) said :
#1

The recommended way, to switch between different installed Java versions on OS X when running in a Terminal session still is to use the command /usr/libexec/java_home

- list all installed Javas
/usr/libexec/java_home -V

- switch to a specific java version (Java 7 in this case)
export JAVA_HOME=`/usr/libexec/java_home -v 1.7`

-- your problem
use this on command line to get a more specific startup debug

./runsikulix -d 3 -c -r /Users/apple/Downloads/sikuli.skl

Revision history for this message
Laimis (laimiseffectrix) said :
#2

Hi RaiMan,

Appreciate your help. I have some ideas with Sikuli and I plan to use your application on my Mac OS and VM's later.

I hope there is the way to prepare Sikuli for scheduled jobs from command line.

mac:Sikulix root# export JAVA_HOME=`/usr/libexec/java_home -v 1.7`
mac:Sikulix root#
mac:Sikulix root#
mac:Sikulix root#
mac:Sikulix root#
mac:Sikulix root#
mac:Sikulix root# /usr/libexec/java_home -v 1.7
/Library/Java/JavaVirtualMachines/jdk1.7.0_80.jdk/Contents/Home

mac:Sikulix root# cat ../sikuli.sikuli/sikuli.py
click("1447895220871.png")

mac:Sikulix root# ./runsikulix -d 3 -c -r /Users/apple/Downloads/sikuli.skl
running SikuliX: /Applications/SikuliX.app/Contents/Java/sikulix.jar -d 3 -c -r /Users/apple/Downloads/sikuli.skl
[debug] RunTimeINIT: loadOptions: check: /Users/apple/Downloads/Sikulix
[debug] RunTimeINIT: loadOptions: check: /var/root
[debug] RunTimeINIT: loadOptions: check: /var/root/Library/Application Support/Sikulix/SikulixStore
[debug] RunTimeINIT: global init: entering as: IDE
[debug] RunTimeINIT: running in headless environment
[debug] RunTimeINIT: runs as sikulix.jar in: /Applications/SikuliX.app/Contents/Java
[debug] RunTimeINIT: exists libs folder at: /var/root/Library/Application Support/Sikulix/SikulixLibs_201510051707
***** show environment for IDE (build 201510051707)
user.home: /var/root
user.dir (work dir): /Users/apple/Downloads/Sikulix
user.name: root
java.io.tmpdir: /var/folders/zz/zyxvpxvq6csfxvn_n0000000000000/T
running 64Bit on Mac OSX (10.10.5) as application .app
java 7-64 version 1.7.0_80-b15 vm 24.80-b11 class 51.0 arch x86_64
app data folder: /var/root/Library/Application Support/Sikulix
libs folder: /var/root/Library/Application Support/Sikulix/SikulixLibs_201510051707
executing jar: /Applications/SikuliX.app/Contents/Java/sikulix.jar
*** classpath dump sikulix
  0: /Applications/SikuliX.app/Contents/Java/sikulix.jar
*** classpath dump end
***** show environment end
[debug] RunTimeIDE: global init: leaving
[debug] RunTimeIDE: initIDEbefore: entering
[debug] RunTimeIDE: initIDEbefore: leaving
[debug] RunTimeIDE: initAPI: entering
[debug] RunTimeIDE: initAPI: leaving
Exception in thread "main" java.awt.HeadlessException:
No X11 DISPLAY variable was set, but this program performed an operation which requires it.
 at java.awt.GraphicsEnvironment.checkHeadless(GraphicsEnvironment.java:207)
 at java.awt.Window.<init>(Window.java:535)
 at java.awt.Frame.<init>(Frame.java:420)
 at javax.swing.JFrame.<init>(JFrame.java:224)
 at org.sikuli.ide.SikuliIDE.<init>(SikuliIDE.java:153)
 at org.sikuli.ide.SikuliIDE.getInstance(SikuliIDE.java:158)
 at org.sikuli.ide.SikuliIDE.run(SikuliIDE.java:179)
 at org.sikuli.ide.Sikulix.main(Sikulix.java:21)
[debug] RunTimeIDE: final cleanup
[debug] FileManager: deleteFileOrFolder:
/var/folders/zz/zyxvpxvq6csfxvn_n0000000000000/T/Sikulix_1188848451
mac:Sikulix root#
mac:Sikulix root# echo $DISPLAY

mac:Sikulix root#
mac:Sikulix root# id
uid=0(root) gid=0(wheel) groups=0(wheel),1(daemon),2(kmem),3(sys),4(tty),5(operator),8(procview),9(procmod),12(everyone),20(staff),29(certusers),61(localaccounts),80(admin),701(com.apple.sharepoint.group.1),33(_appstore),98(_lpadmin),100(_lpoperator),204(_developer),395(com.apple.access_ftp),398(com.apple.access_screensharing),399(com.apple.access_ssh),702(com.apple.sharepoint.group.2)
mac:Sikulix root#

I tried to change DISPLAY variable without any luck. JDK 1.6, 1.7 and 1.8 tested.

Revision history for this message
Laimis (laimiseffectrix) said :
#3

The root cause was the issue running the script from root user. You should do it from normal user. There is good output now and I can see mouse movement!

mac:Sikulix apple$ ./runsikulix -d 3 -c -r /Users/apple/Downloads/sikuli.skl
running SikuliX: /Applications/SikuliX.app/Contents/Java/sikulix.jar -d 3 -c -r /Users/apple/Downloads/sikuli.skl
[debug] RunTimeINIT: loadOptions: check: /Users/apple/Downloads/Sikulix
[debug] RunTimeINIT: loadOptions: check: /Users/apple
[debug] RunTimeINIT: loadOptions: check: /Users/apple/Library/Application Support/Sikulix/SikulixStore
[debug] RunTimeINIT: global init: entering as: IDE
[debug] RunTimeINIT: ScreenDevice 0 has (0,0) --- will be primary Screen(0)
[debug] RunTimeINIT: Monitor 0: (0, 0) 2560 x 1440
[debug] RunTimeINIT: runs as sikulix.jar in: /Applications/SikuliX.app/Contents/Java
[debug] RunTimeINIT: exists libs folder at: /Users/apple/Library/Application Support/Sikulix/SikulixLibs_201510051707
***** show environment for IDE (build 201510051707)
user.home: /Users/apple
user.dir (work dir): /Users/apple/Downloads/Sikulix
user.name: apple
java.io.tmpdir: /var/folders/62/1689dlxx4hg4qw8mrm4c7pph0000gp/T
running 64Bit on Mac OSX (10.10.5) as application .app
java 7-64 version 1.7.0_80-b15 vm 24.80-b11 class 51.0 arch x86_64
app data folder: /Users/apple/Library/Application Support/Sikulix
libs folder: /Users/apple/Library/Application Support/Sikulix/SikulixLibs_201510051707
executing jar: /Applications/SikuliX.app/Contents/Java/sikulix.jar
*** classpath dump sikulix
  0: /Applications/SikuliX.app/Contents/Java/sikulix.jar
*** classpath dump end
***** show environment end
[debug] RunTimeIDE: global init: leaving
[debug] RunTimeIDE: initIDEbefore: entering
[debug] RunTimeIDE: initIDEbefore: leaving
[debug] RunTimeIDE: initAPI: entering
[debug] RunTimeIDE: initAPI: leaving
[debug] init user preferences
[debug] IDE: running with Locale: en_US
[debug] IDE: initNativeSupport: starting
[debug] IDE: initNativeSupport: success
[debug] IDE: Switching to ScriptRunner with option -r, -t or -i
[debug] Runner: commandline: -d 3 -c -r /Users/apple/Downloads/sikuli.skl
[debug] --- Sikuli parameters ---
[debug] 1: -d
[debug] 2: 3
[debug] 3: -c
[debug] 4: -r
[debug] 5: /Users/apple/Downloads/sikuli.skl
[debug] ScriptingSupport: givenScriptName:
/Users/apple/Downloads/sikuli.skl
[debug] FileManager: createTempDir:
/var/folders/62/1689dlxx4hg4qw8mrm4c7pph0000gp/T/Sikulix_1259009325/sikuli.sikuli
[debug] FileManager: unzip: from: /Users/apple/Downloads/sikuli.skl
to: /var/folders/62/1689dlxx4hg4qw8mrm4c7pph0000gp/T/Sikulix_1259009325/sikuli.sikuli
[debug] FileManager: deleteFileOrFolder:
/private/var/folders/62/1689dlxx4hg4qw8mrm4c7pph0000gp/T/Sikulix_1259009325/sikuli.sikuli
[debug] ScriptingSupport: Trying to run script:
/private/var/folders/62/1689dlxx4hg4qw8mrm4c7pph0000gp/T/Sikulix_1259009325/sikuli.sikuli/sikuli.py
[debug] ScriptingSupport: initScriptingSupport: enter
[debug] JythonSupport: init: starting
[debug] JythonSupport: init: success
[debug] JythonSupport: ***** Jython sys.path
 0: /Applications/SikuliX.app/Contents/Java/Lib
 1: /Applications/SikuliX.app/Contents/Java/sikulix.jar/Lib
 2: __classpath__
 3: __pyclasspath__/
[debug] JythonSupport: ***** Jython sys.path end
[debug] Jython: sikuli: Sikuli: starting init
[debug] RunTimeIDE: loadLib: libVisionProxy.dylib
[debug] Mouse: init
[debug] KeyBoard: init
[debug] RunTimeIDE: loadLib: libMacUtil.dylib
[debug] Jython: requested to use as default region: R[0,0 2560x1440]@S(0)
[debug] Jython: sikuli: Sikuli: ending init
[debug] JythonScriptRunner: running Jython 2.5.4rc1
[debug] ScriptingSupport: initScriptingSupport: added: jython
[debug] ScriptingSupport: initScriptingSupport: exit with defaultrunner: jython (py)
[debug] ImagePath: new BundlePath:
/private/var/folders/62/1689dlxx4hg4qw8mrm4c7pph0000gp/T/Sikulix_1259009325/sikuli.sikuli/
[debug] Jython: requested to use as default region: R[0,0 2560x1440]@S(0)
[debug] JythonScriptRunner: runPython: running script:
/private/var/folders/62/1689dlxx4hg4qw8mrm4c7pph0000gp/T/Sikulix_1259009325/sikuli.sikuli
[debug] Region: find: waiting 3.0 secs for 1447895220871.png to appear in R[0,0 2560x1440]@S(0)
[debug] Image: loaded: 1447895220871.png (file:/private/var/folders/62/1689dlxx4hg4qw8mrm4c7pph0000gp/T/Sikulix_1259009325/sikuli.sikuli/1447895220871.png)
[debug] Image: cached: 1447895220871.png (3 KB) (# 1 KB 3 -- 0 % of 64 MB)
[debug] Region: find: 1447895220871.png has not appeared [838 msec]
[error] script [ /private/var/folders/62/1689dlxx4hg4qw8mrm4c7pph0000gp/T/Sikulix_1259009325/sikuli.sikuli ] stopped with error in line 1
[error] FindFailed ( can not find 1447895220871.png in R[0,0 2560x1440]@S(0) )
[debug] RunTimeIDE: final cleanup
[debug] FileManager: deleteFileOrFolder:
/var/folders/62/1689dlxx4hg4qw8mrm4c7pph0000gp/T/Sikulix_1259009325
mac:Sikulix apple$ ./runsikulix -d 3 -c -r /Users/apple/Downloads/sikuli
sikuli.sikuli/ sikuli.skl sikuli2.sikulisikuli2.py sikuli3.sikuli/ sikuli3.skl
sikuli.sikulisikuli.py sikuli2.sikuli/ sikuli2.skl sikuli3.sikulisikuli3.py
mac:Sikulix apple$ ./runsikulix -d 3 -c -r /Users/apple/Downloads/sikuli2.s
sikuli2.sikuli/ sikuli2.sikulisikuli2.py sikuli2.skl
mac:Sikulix apple$ ./runsikulix -d 3 -c -r /Users/apple/Downloads/sikuli2.skl
running SikuliX: /Applications/SikuliX.app/Contents/Java/sikulix.jar -d 3 -c -r /Users/apple/Downloads/sikuli2.skl
[debug] RunTimeINIT: loadOptions: check: /Users/apple/Downloads/Sikulix
[debug] RunTimeINIT: loadOptions: check: /Users/apple
[debug] RunTimeINIT: loadOptions: check: /Users/apple/Library/Application Support/Sikulix/SikulixStore
[debug] RunTimeINIT: global init: entering as: IDE
[debug] RunTimeINIT: ScreenDevice 0 has (0,0) --- will be primary Screen(0)
[debug] RunTimeINIT: Monitor 0: (0, 0) 2560 x 1440
[debug] RunTimeINIT: runs as sikulix.jar in: /Applications/SikuliX.app/Contents/Java
[debug] RunTimeINIT: exists libs folder at: /Users/apple/Library/Application Support/Sikulix/SikulixLibs_201510051707
***** show environment for IDE (build 201510051707)
user.home: /Users/apple
user.dir (work dir): /Users/apple/Downloads/Sikulix
user.name: apple
java.io.tmpdir: /var/folders/62/1689dlxx4hg4qw8mrm4c7pph0000gp/T
running 64Bit on Mac OSX (10.10.5) as application .app
java 7-64 version 1.7.0_80-b15 vm 24.80-b11 class 51.0 arch x86_64
app data folder: /Users/apple/Library/Application Support/Sikulix
libs folder: /Users/apple/Library/Application Support/Sikulix/SikulixLibs_201510051707
executing jar: /Applications/SikuliX.app/Contents/Java/sikulix.jar
*** classpath dump sikulix
  0: /Applications/SikuliX.app/Contents/Java/sikulix.jar
*** classpath dump end
***** show environment end
[debug] RunTimeIDE: global init: leaving
[debug] RunTimeIDE: initIDEbefore: entering
[debug] RunTimeIDE: initIDEbefore: leaving
[debug] RunTimeIDE: initAPI: entering
[debug] RunTimeIDE: initAPI: leaving
[debug] init user preferences
[debug] IDE: running with Locale: en_US
[debug] IDE: initNativeSupport: starting
[debug] IDE: initNativeSupport: success
[debug] IDE: Switching to ScriptRunner with option -r, -t or -i
[debug] Runner: commandline: -d 3 -c -r /Users/apple/Downloads/sikuli2.skl
[debug] --- Sikuli parameters ---
[debug] 1: -d
[debug] 2: 3
[debug] 3: -c
[debug] 4: -r
[debug] 5: /Users/apple/Downloads/sikuli2.skl
[debug] ScriptingSupport: givenScriptName:
/Users/apple/Downloads/sikuli2.skl
[debug] FileManager: createTempDir:
/var/folders/62/1689dlxx4hg4qw8mrm4c7pph0000gp/T/Sikulix_1296094259/sikuli2.sikuli
[debug] FileManager: unzip: from: /Users/apple/Downloads/sikuli2.skl
to: /var/folders/62/1689dlxx4hg4qw8mrm4c7pph0000gp/T/Sikulix_1296094259/sikuli2.sikuli
[debug] FileManager: deleteFileOrFolder:
/private/var/folders/62/1689dlxx4hg4qw8mrm4c7pph0000gp/T/Sikulix_1296094259/sikuli2.sikuli
[debug] ScriptingSupport: Trying to run script:
/private/var/folders/62/1689dlxx4hg4qw8mrm4c7pph0000gp/T/Sikulix_1296094259/sikuli2.sikuli/sikuli2.py
[debug] ScriptingSupport: initScriptingSupport: enter
[debug] JythonSupport: init: starting
[debug] JythonSupport: init: success
[debug] JythonSupport: ***** Jython sys.path
 0: /Applications/SikuliX.app/Contents/Java/Lib
 1: /Applications/SikuliX.app/Contents/Java/sikulix.jar/Lib
 2: __classpath__
 3: __pyclasspath__/
[debug] JythonSupport: ***** Jython sys.path end
[debug] Jython: sikuli: Sikuli: starting init
[debug] RunTimeIDE: loadLib: libVisionProxy.dylib
[debug] Mouse: init
[debug] KeyBoard: init
[debug] RunTimeIDE: loadLib: libMacUtil.dylib
[debug] Jython: requested to use as default region: R[0,0 2560x1440]@S(0)
[debug] Jython: sikuli: Sikuli: ending init
[debug] JythonScriptRunner: running Jython 2.5.4rc1
[debug] ScriptingSupport: initScriptingSupport: added: jython
[debug] ScriptingSupport: initScriptingSupport: exit with defaultrunner: jython (py)
[debug] ImagePath: new BundlePath:
/private/var/folders/62/1689dlxx4hg4qw8mrm4c7pph0000gp/T/Sikulix_1296094259/sikuli2.sikuli/
[debug] Jython: requested to use as default region: R[0,0 2560x1440]@S(0)
[debug] JythonScriptRunner: runPython: running script:
/private/var/folders/62/1689dlxx4hg4qw8mrm4c7pph0000gp/T/Sikulix_1296094259/sikuli2.sikuli
[error] Screen: invalid screen id 1 - using primary screen
[error] Screen: invalid screen id 1 - using primary screen
[debug] Region: hover: 1447896514668.png
[debug] Region: find: waiting 3.0 secs for 1447896514668.png to appear in R[0,0 2560x1440]@S(0)
[debug] Image: loaded: 1447896514668.png (file:/private/var/folders/62/1689dlxx4hg4qw8mrm4c7pph0000gp/T/Sikulix_1296094259/sikuli2.sikuli/1447896514668.png)
[debug] Image: cached: 1447896514668.png (0 KB) (# 1 KB 0 -- 0 % of 64 MB)
[debug] Region: find: 1447896514668.png has appeared
at M[775,24 34x9]@S(S(0)[0,0 2560x1440]) S:1.00 C:792,28 [889 msec]
[debug] RunTimeIDE: final cleanup
[debug] FileManager: deleteFileOrFolder:
/var/folders/62/1689dlxx4hg4qw8mrm4c7pph0000gp/T/Sikulix_1296094259
mac:Sikulix apple$

Revision history for this message
RaiMan (raimund-hocke) said :
#4

thanks for the confirmation and all the best.