如何让二级用户homebridge通过wlr-randr控制显示器开关?
解决二级用户运行wlr-randr/xrandr时的显示连接问题
这是环境变量缺失+会话权限未授权导致的问题,并非单纯文件权限问题,以下是几种实用解决方法:
方法1:手动传递Wayland会话环境变量(针对wlr-randr)
- 先在主用户
pi的终端里获取当前会话的关键变量:# 查看主用户的UID(通常为1000) id pi # 查看Wayland会话核心变量 echo $XDG_RUNTIME_DIR echo $WAYLAND_DISPLAY - 切换到
homebridge用户执行命令时,带上这些变量:
注意把sudo -u homebridge XDG_RUNTIME_DIR=/run/user/1000 WAYLAND_DISPLAY=wayland-0 wlr-randr --output HDMI-A-1 --on1000替换成你实际查到的主用户UID,wayland-0替换成查到的WAYLAND_DISPLAY值。
方法2:授权X11会话权限(针对xrandr)
如果使用xrandr,需要给homebridge用户授权X11会话访问权限:
- 在主用户终端执行,把X授权信息同步给homebridge:
xauth extract - $DISPLAY | sudo -u homebridge xauth merge - - 以homebridge用户执行xrandr时指定DISPLAY变量:
sudo -u homebridge DISPLAY=:0 xrandr --output HDMI-A-1 --auto
方法3:直接以主用户身份执行(最适合自动化脚本)
如果只是需要自动化控制显示器,最简单的方式是让homebridge用户无需密码以pi身份执行wlr-randr/xrandr:
- 编辑sudoers文件(必须用
visudo避免语法错误):sudo visudo - 在文件末尾添加一行:
homebridge ALL=(pi) NOPASSWD: /usr/bin/wlr-randr, /usr/bin/xrandr - 之后
homebridge用户可以直接执行:
这种方式完全避开环境变量问题,适合写入自动化脚本。sudo -u pi wlr-randr --output HDMI-A-1 --off
方法4:补充硬件访问权限
如果上述方法仍报错,可能是homebridge用户没有访问显示硬件的权限,将用户加入video组:
sudo usermod -aG video homebridge
执行后重新登录homebridge用户生效。
内容的提问来源于stack exchange,提问作者Th3o4oR
相关产品推荐
相关产品推荐

