Un programa X usa dos variables de ambiente para conectarse a la
pantalla: DISPLAY, para saber que pantalla usar y XAUTHORITY para
saber de donde tomar los datos de autenticaciòn que la pantalla le va
a pedir. Cuando haces 'su - ' el proceso nuevo arranca con el ambiente
vacio, asì que no puede conectar a la pantalla.
Hay varias soluciones:
1) Exportale ambas variables:
su - env DISPLAY=$DISPLAY XAUTHORITY=$XAUTHORITY tu_comando
2) Exportale nomás DISPLAY, después de deshabilitar el control de
acceso:
xhost +localhost
su - env DISPLAY=$DISPLAY tu_comando
Esta no es muy recomendable, por que entonces cualquier usuario de
la máquina podrá conectar a tu pantalla y, por ejemplo, poner un
keyloger.
3) No uses su, usa sudo.