FreeBSD-11, Mate, Terminal, Gvim
Polytropon
freebsd at edvax.de
Tue Jul 25 19:54:17 UTC 2017
On Tue, 25 Jul 2017 19:45:18 +0000, Manish Jain wrote:
>
>
> On 07/26/17 00:36, Polytropon wrote:
> > On Tue, 25 Jul 2017 10:39:29 -0400, James B. Byrne via freebsd-questions wrote:
> >> When setting up new hosts I usually open an especially coloured
> >> terminal instance and use 'su -l' to become root. I also typically
> >> edit using gvim. However, this combination does not work for me on
> >> FreeBSD with Mate as it did for me under CentOD-6 and Gnome2. When
> >> inside a terminal window as root instead of opening an Xwindow editor
> >> when running gvim I get a 'E233: cannot open display' error.
> >
> > This is to be expected.
> >
> > With "su -l", a full login is simulated, so all environmental
> > variables will be reset - but $DISPLAY is needed for X. There
> > are basically two solutions:
> >
> > 1. Set $DISPLAY accordingly, for example to :0.0. Refer to the
> > documentation of your shell on how to do it, for example in
> > C shell "setenv DISPLAY :0.0", in sh/bash "export DISPLAY=:0.0".
> >
> > 2. Use "su -m" instead, which will preserve the environment of
> > your user, and $DISPLAY will be kept set.
> >
> > See "man su" for details.
>
> Hi Poly,
>
> I found this relevant too. Under Linux. it appears that root is somehow
> able to connect to the X server of the current user. But under FreeBSD,
> this does not work and occasionally I need to run X applications as root.
>
> Your steps should in theory work. But apparently, they don't on my box.
>
> export DISPLAY=:0.0
> su -m my_normal_user_name -c gvim
>
> I get :
>
> No protocol specified
> E233: cannot open display
> Press ENTER or type command to continue
Use "su -m" from your user's account, not from the root account.
This should work - you can test if $DISPLAY is still set.
Example:
% su -l
Password:
# echo $DISPLAY
DISPLAY: Undefined variable.
# xlogo
Error: Can't open display:
# exit
% su -m
Password:
# echo $DISPLAY
:0.0
# xlogo
(X logo is being shown)
^C
# exit
% _
This is C shell "decoration": % for user, # for root. :-)
> Actually, xhost itself is unable to access the display :
>
> /root <<: xhost +local:
> No protocol specified
> xhost: unable to open display ":0.0"
That is correct. Like "su -m", "xhost" is to be executed from
the (non-root) user that controls the display. But when you're
using the "su -m" approach, it usually isn't even needed.
--
Polytropon
Magdeburg, Germany
Happy FreeBSD user since 4.0
Andra moi ennepe, Mousa, ...
More information about the freebsd-questions
mailing list