Linux Wayland 显示器多用户

4

我使用了sway合成器。

当我在控制台中更改用户时,无法显示wayland图形界面(它可以与X应用程序一起工作)。

$ su - otherUser
$ ./myApplicationWayland
error: XDG_RUNTIME_DIR not set in the environment

我设定了它:(从其他用户那里获取)

$ export XDG_RUNTIME_DIR=/run/user/1000
$ export WAYLAND_DISPLAY=wayland-0
$ ./myApplicationWayland
Assert ... It cannot create the "display"

在主用户中:
$ ls -l /run/user/1000
total 0
srw-rw-rw- 1 edupin edupin   0 Jan 23 08:14 bus
drwx------ 2 edupin edupin  60 Jan 26 13:25 dconf
dr-x------ 2 edupin edupin   0 Jan 23 08:15 gvfs
drwx------ 2 edupin edupin  80 Jan 26 14:31 pulse
srwxr-xr-x 1 edupin edupin   0 Jan 23 08:14 sway-ipc.1000.645.sock
drwxr-xr-x 3 edupin edupin 100 Jan 23 08:14 systemd
srwxr-xr-x 1 edupin edupin   0 Jan 23 08:14 wayland-0
-rw-r----- 1 edupin edupin   0 Jan 23 08:14 wayland-0.lock

我会:

chmod -R g+rwx /run/user/1000

当我调用以下代码时,wayland连接失败:
wl_display_connect(nullptr);

谢谢你

1个回答

4
这只是一个权限问题。路径/run/user/XXX不可访问,其他用户因此无法访问和获取“其他”权限的wayland socket事件。
解决方法(不好但快速)(将XXX替换为用户ID):
在运行sway的用户上:
chmod -R 777 /run/user/XXXX

关于第二个用户:

export XDG_RUNTIME_DIR=/run/user/XXXX

另一种方法(更好,但仍不太理想)

将所有用户设置为“users”组

在提供wayland合成器的用户中编辑“.bashrc”:

# specify a path to create the wayland IO and force it to be readable for each user in group "users"
export XDG_RUNTIME_DIR=/tmp/wayland
export WAYLAND_DISPLAY=wayland-0
# create default directory
mkdir -p $XDG_RUNTIME_DIR
chgrp users $XDG_RUNTIME_DIR
chmod g+rwx $XDG_RUNTIME_DIR
# at the first run of the terminal ==> the other user have acces on it (many time use terminal to change user)
chgrp users $XDG_RUNTIME_DIR/$WAYLAND_DISPLAY
chmod g+rwx $XDG_RUNTIME_DIR/$WAYLAND_DISPLAY

在所有其他用户编辑".bashrc":

export XDG_RUNTIME_DIR=/tmp/wayland
export WAYLAND_DISPLAY=wayland-0

如果您希望所有应用程序默认以wayland后端启动:
# force all generic backend to use wayland backend
export GDK_BACKEND=wayland
export QT_QPA_PLATFORM=wayland-egl
export CLUTTER_BACKEND=wayland
export SDL_VIDEODRIVER=wayland
export EWOL_BACKEND=wayland

嗨,我在跟进过程中遇到了一些困难。有几个地方我不太明白,你说的“拥有影响力的用户”是指什么?是指当前登录的用户账户吗?另外,请将XXX替换为用户ID。那个用户是谁? - thebunnyrules
XXX代表用户ID,第一个创建的是1000(取决于安装)。要获取您的用户ID,只需在控制台上输入“id”即可。在这两种情况下,XXX都是相同的,这是运行wayland服务的用户ID。 - Heero Yui

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接