Hi When system admin su to root and launch X 11 utilities (for exemple system-config-printer) or java application (for exemple OpenOffice ./setup) they get something like that :
# xterm xterm Xt error: Can't open display: %s xterm: DISPLAY is not set or less friendly # system-config-printer /usr/lib/python2.6/vendor-packages/gtk-2.0/gtk/__init__.py:57: GtkWarning: could not open display warnings.warn(str(e), _gtk.Warning) /usr/lib/system-config-printer/system-config-printer.py:100: GtkWarning: file gdkcursor-x11.c: line 262: assertion `GDK_IS_DISPLAY (display)' failed busy_cursor = gtk.gdk.Cursor(gtk.gdk.WATCH) Traceback (most recent call last): File "/usr/lib/system-config-printer/system-config-printer.py", line 100, in busy_cursor = gtk.gdk.Cursor(gtk.gdk.WATCH) RuntimeError: could not create GdkCursor object One way to export DISPLAY to root (or others users) is to declare the following function inside the user .profile unset su function su { if (( $# > 2 )) || [[ -z $DISPLAY ]] then print "Running /usr/bin/su" /usr/bin/su $@ else print "Running su exporting DISPLAY to root" XDISPLAY="$(uname -n)/unix:${DISPLAY#*:}" /usr/bin/su - ${2-root} -c "DISPLAY=${DISPLAY} ${SHELL} -c \ \"(/usr/bin/xauth -f $XAUTHORITY nextract - ${XDISPLAY} | \ /usr/bin/xauth nmerge - ; ${SHELL})\"" fi } The problem with this method is that you have to add theses line for every host (this method is not portable and a bit different with Solaris 10 and works only with bash and ksh). So improvement to put a code doing the job inside su.c (with or without an -X option) makes Openindiana more friendly for system admin. _______________________________________________ OpenIndiana-discuss mailing list OpenIndiana-discuss@openindiana.org http://openindiana.org/mailman/listinfo/openindiana-discuss