0

Currently I'm starting a java application with

bash -c java -jar app.jar -config config.json

The app opens a window, displaying some output and closes. The output is also available on stdout, so I don't need (want) the GUI to display.

How can I prevent bash to forward the X output?

Follow up:

I'm running this in a go application, so based on el.pescado's answer, I have implemented this as:

func runcmd(cmd string, workdir string) ([]byte, error) {
  ex := exec.Command("bash", "-c", cmd)
  ex.Env = []string{"DISPLAY= "}
  ex.Dir = workdir
  return ex.Output()
}
G-M
  • 296
  • 1
  • 6
  • 15

1 Answers1

2

You have several options:

  1. First, you should check if that application can run without GUI (often called "headless" mode)
  2. You can unset DISPLAY variable, so that your app won't find your X11 server - but keep in mind that application might not work without X server

eg.

DISPLAY= bash -c java -jar app.jar -config config.json # note space after '='
# or
env -u DISPLAY bash -c java -jar app.jar -config config.json
  1. You could use in-memory virtual X server such as xfvb and point your application to display its windows there.

eg.

Xvfb :1 -screen 0 1600x1200x32
DISPLAY=:1 bash -c java -jar app.jar -config config.json