I am trying to run the following example code using my NetBeans IDE:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <dbus/dbus.h>
int main() {
DBusConnection *connection = NULL;
DBusError error;
char buffer[1024];
dbus_error_init(&error);
connection = dbus_bus_get(DBUS_BUS_SESSION, &error);
if (dbus_error_is_set(&error)) {
fprintf(stderr, "%s", error.message);
abort();
}
puts("This is my unique name");
puts(dbus_bus_get_unique_name(connection));
fgets(buffer, sizeof(buffer), stdin);
return 0;
}
From an excellent tutorial: DBUS TUTORIAL USING THE LOW-LEVEL API
I have my headless Pi setup for SSH and have installed all the necessary libraries for dbus development.
however, when running the program in netbeans i receive the following error
Unable to autolaunch a dbus-daemon without a $DISPLAY for X11
/usr/bin/dbus-launch terminated abnormally with the following error: Autolaunch error: X11 initialization failed.
note that i have X11 forwarding enabled in my remote host properties on Netbeans
I can see that, if I SSH into the Pi myself and echo $DISPLAY this returns nothing, empty.
So far, i have tried:
in /etc/ssh/sshd_config
X11Forwarding yes
X11DisplayOffset 10
X11UseLocalhost no
AllowTcpForwarding yes
did not work.
tried setting a run environment variable to
DISPLAY export DISPLAY=$HOSTNAME:0.0
0x212d0 "org.freedesktop.DBus.Error.Spawn.ExecFailed"
0x21fe8 "/usr/bin/dbus-launch terminated abnormally with the following error: Autolaunch error: X11 initialization failed.\\n"
didn’t work.
tried
In /etc/ssh/ssh_config
ForwardX11 yes
did not work.
Is it a case of getting my Pi setup for X11 or configuring my netbeans environment to run the program with certain parameters?
Thank you in advance for any advice.
update 30 aug 2017:
I did a fresh install of debian and followed Gilles' answer:
https://unix.stackexchange.com/questions/12755/how-to-forward-x-over-ssh-to-run-graphics-applications-remotely ...
I can confirm:
in /etc/ssh/sshd_config
X11Forwarding yes
X11DisplayOffset 10
...
xauth is installed on the remote Pi.
I have installed XQuartz on my client mac. Upon ssh -X pi@IPaddress, xquartz opens and if i echo $DISPLAY
on the remote Pi i get localhost:12.0
... the number changes with each terminal.
Currently, if have incorrectly set the project environment in netbeans with:
DISPLAY=localhost:11.0 (this is wrong because the number changes with each ssh connection to the remote Pi).
So when i try to run the program, NetBeans will hang and i cant debug either.
My question at this stage is, how do i set the DISPLAY Environment correctly for NetBeans so that each time it makes an SSH connection to the remote Pi and requests X11 forwarding, it will have the correct $DISPLAY?