hashcat Forum

Full Version: understanding the "export DISPLAY=:0" command
You're currently viewing a stripped down version of our content. View the full version with proper formatting.
Often in case there are multiple graphics cards in the system and only one of the cards is detected, executing the "export DISPLAY=:0" command helps. In case of bash, export is the shell built-in which exports the variable DISPLAY:

root@debian64:~# echo $DISPLAY

As I understand, DISPLAY variable is used by X. However, what does this :0 mean? I mean how does this change the behavior of the X server?
The DISPLAY variable is not used by X itself; it is used by X11 applications. It tells X11 applications which screen they should run on. The format of the DISPLAY variable is hostname:display. For local displays, the hostname is often omitted.

The reason this variable is needed is because you can have multiple X servers running locally, or you may wish to use a remote display. So if the DISPLAY variable is not set, your X11 apps have no idea where you want them to run.

If you look at the arguments X is currently running with, you will see which display it is running on. The X server is almost always running on display :0

root@ike:~# sed 's/\x00/\ /g' /proc/$(pidof X)/cmdline
/usr/bin/X :0 -auth /var/run/lightdm/root/:0 -nolisten tcp vt7 -novtswitch -background none

If you have another X server running, like with vncserver or something, then you will see one X server on :0, another on :1, etc.

Hope that helps.
Further, within a display, the ".X" suffix will specify a specific screen/device.

So, DISPLAY=:0 usually means "The GPUs in the system."

DISPLAY=:0.0 means "The first configured screen/GPU" - I think it's actually screen, but with one screen configured per card, it's the same.

DISPLAY=:0.1 means "The second configured screen/GPU."

That can be used to address specific cards.

However, none of it *should* be relevant to compute. It's because AMD hacked up a truly odd way to address their cards.