Skip to content
🎨 作者:mikigo 📔 阅读量:

Wayland下sniff命令报错~/.Xauthorty文件不存在

根据 Xlib.xauth 源代码里面这里:

python
class Xauthority:
    def __init__(self, filename = None):
        if filename is None:
            filename = os.environ.get('XAUTHORITY')

        if filename is None:
            try:
                filename = os.path.join(os.environ['HOME'], '.Xauthority')
            except KeyError:
                raise error.XauthError(
                    '$HOME not set, cannot find ~/.Xauthority')

        try:
            raw = open(filename, 'rb').read()
        except OSError as err:
            raise error.XauthError('~/.Xauthority: %s' % err)

        self.entries = []

是因为读文件 filename 的时候报错,filename 要么从环境变量 XAUTHORITY 里面拿,要么就赋值 ~/.Xauthority,而咱们系统中 ~/.Xauthority 文件是存在的,那么肯定就是环境变量里面 XAUTHORITY 的值有问题; 查看一下:

环境变量里面有 XAUTHORITY,但是值为空;

所以这就是问题,filename 拿到一个空串,open 读肯定会报 OSError

解决方法,在 sniff 的代码里面把 XAUTHORITY=~/.Xauthority 这个环境变量加上理论上就行了;

import os
os.environ["XAUTHORITY"] = "$HOME/.Xauthority"

再执行 sniff 就不会报错啦;