You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何让二级用户homebridge通过wlr-randr控制显示器开关?

解决二级用户运行wlr-randr/xrandr时的显示连接问题

这是环境变量缺失+会话权限未授权导致的问题,并非单纯文件权限问题,以下是几种实用解决方法:

方法1:手动传递Wayland会话环境变量(针对wlr-randr)

  1. 先在主用户pi的终端里获取当前会话的关键变量:
    # 查看主用户的UID(通常为1000)
    id pi
    # 查看Wayland会话核心变量
    echo $XDG_RUNTIME_DIR
    echo $WAYLAND_DISPLAY
    
  2. 切换到homebridge用户执行命令时,带上这些变量:
    sudo -u homebridge XDG_RUNTIME_DIR=/run/user/1000 WAYLAND_DISPLAY=wayland-0 wlr-randr --output HDMI-A-1 --on
    
    注意把1000替换成你实际查到的主用户UID,wayland-0替换成查到的WAYLAND_DISPLAY值。

方法2:授权X11会话权限(针对xrandr)

如果使用xrandr,需要给homebridge用户授权X11会话访问权限:

  1. 在主用户终端执行,把X授权信息同步给homebridge:
    xauth extract - $DISPLAY | sudo -u homebridge xauth merge -
    
  2. 以homebridge用户执行xrandr时指定DISPLAY变量:
    sudo -u homebridge DISPLAY=:0 xrandr --output HDMI-A-1 --auto
    

方法3:直接以主用户身份执行(最适合自动化脚本)

如果只是需要自动化控制显示器,最简单的方式是让homebridge用户无需密码以pi身份执行wlr-randr/xrandr:

  1. 编辑sudoers文件(必须用visudo避免语法错误):
    sudo visudo
    
  2. 在文件末尾添加一行:
    homebridge ALL=(pi) NOPASSWD: /usr/bin/wlr-randr, /usr/bin/xrandr
    
  3. 之后homebridge用户可以直接执行:
    sudo -u pi wlr-randr --output HDMI-A-1 --off
    
    这种方式完全避开环境变量问题,适合写入自动化脚本。

方法4:补充硬件访问权限

如果上述方法仍报错,可能是homebridge用户没有访问显示硬件的权限,将用户加入video组:

sudo usermod -aG video homebridge

执行后重新登录homebridge用户生效。

内容的提问来源于stack exchange,提问作者Th3o4oR

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.02 00:38:22