我们如何使用 Wayland 通过命令行打开 Gtk 和其他 GUI 应用程序?
当我尝试打开基本的 PyGTK 脚本或 Gedit 时出现此错误:
chris@fluffie:~/workspace/wiki-web$ gedit
No protocol specified
Unable to init server: Could not connect: Connection refused
(gedit:13376): Gtk-WARNING **: cannot open display:
设置$DISPLAY
只会稍微改变错误。
大多数解决方案我发现这个问题围绕着尝试以 root 身份运行这些应用程序并希望您运行 xhost:
chris@fluffie:~/workspace/wiki-web$ xhost si:localuser:root
xhost: unable to open display ""
这似乎没有帮助(因为我认为它应该只改变权限?)
关于如何启动我的 python 脚本,有什么想法吗?
将我所做的更新添加到 .bashrc 的尾部:
# Make CapsLock behave like Ctrl
setxkbmap -option ctrl:nocaps
# make press-release CapsLock behave like Escape
xcape -e 'Control_L=Escape' -t 500
alias nose2="python3 /home/chris/.local/lib/python3.5/site-packages/nose2/__main__.py"
export PATH=$PATH:/home/chris/bin
export USER="chris"
#export DISPLAY=":0"
#export DEPTH="16"
#export GEOMETRY="1280x1024"
#export OPTIONS="-depth ${DEPTH} -geometry ${GEOMETRY} :${DISPLAY} -localhost"
export EDITOR="vim"
export SYSTEMD_EDITOR="/usr/bin/vim"
export TERM="tmux"
编辑:
看起来这是 tmux 的问题。如果在 tmux 之外,我可以通过终端打开 gedit 或我的小 python 脚本。所以我只需要弄清楚如何修复 tmux(或者为什么不能这样做)。
答案1
你说对了两次——这是一个 tmux 问题,大多数解决方案只是说以 root 身份运行,而这往往是错误的答案。
update-environment
Tmux 不会自动将所有内容导入其会话中。你可以在以下代码中指定要在会话中可用的特定变量~/.tmux.conf
:
set -g update-environment 'DISPLAY TERM XAUTHORITY WINDOWID'
对于与 SSH 相关的 xhost 问题,请包含SSH_ASKPASS SSH_AGENT_PID SSH_CONNECTION
在该列表中。