Let's say I have 2 user accounts user1
and user2
. When I login as user1
, and then switch to user2
using su
, I can execute command-line programs, but GUI programs fail.
Example:
user1@laptop:~$ su - user2
user2@laptop:~$ leafpad ~/somefile.txt
No protocol specified
leafpad: Cannot open display:
So how can I run a GUI application?
Best Answer
su vs. su -
When becoming another user you generally want to use
su - user2
. The dash will force user2's.bash_profile
to get sourced.xhost
Additionally you'll need to grant users access to your display. This is governed by X. You can use the command
xhost +
to allow other users permission to display GUI's to user1's desktop.NOTE: When running
xhost +
you'll want to run this while still in a shell that belongs to user1.$DISPLAY
When you become user2 you may need to set the environment variable
$DISPLAY
.