在远程X显示器上打开一个窗口(为什么“无法打开显示器”)?

贾斯汀·水芹

曾几何时,

DISPLAY=:0.0 totem /path/to/movie.avi

从笔记本电脑ssh进入我的桌面后,图腾会movie.avi在我的桌面上播放

现在,它给出了错误:

No protocol specified
Cannot open display:

当两台计算机都稳定下来时,我重新安装了Debian squeeze,我想我打破了配置。

我已经用谷歌搜索了,无法终生弄清楚我应该做的事情。

(VLC有一个可以使用的HTTP接口,但它不如ssh方便。)

当我尝试从cron作业运行此问题时,也会出现相同的问题。

吉勒斯“别再邪恶了”

(适应于Linux:通过ssh + screen启动会话时,wmctrl无法打开显示

显示和权限

X程序需要两条信息才能连接到X显示器。

  • 它需要的显示,这是典型的地址:0,当你在本地已经登录或:10:11等等。当你在远程登录(但数量会随着许多X连接是如何积极改变)。显示器的地址通常在DISPLAY环境变量中指示

  • 它需要显示密码。X显示密码称为魔术cookie不可直接指定魔术Cookie:魔术Cookie始终存储在X授权文件中,该文件是“显示:42具有cookie 123456形式的记录的集合X授权文件通常在XAUTHORITY环境变量中指示如果$XAUTHORITY未设置,则程序使用~/.Xauthority

您正在尝试对桌面上显示的窗口执行操作。如果您是唯一使用台式机的人,则显示名称很可能是:0查找X授权文件的位置更加困难,因为在Debian squeeze或Ubuntu 10.04下设置的gdm,它位于具有随机生成名称的文件中。(您之前没有问题,因为早期版本的gdm使用了默认设置,即存储在中的cookie ~/.Xauthority。)

获取变量的值

以下是获取DISPLAYand值的几种方法XAUTHORITY

  • 您可以从桌面系统地启动屏幕会话,也许可以在登录脚本中自动启动(从~/.profile;但仅在以X:登录时测试:如果ifDISPLAY设置为开头的值:(应该涵盖所有可能的情况)遇到))。~/.profile

    case $DISPLAY in
      :*) screen -S local -d -m;;
    esac
    

    然后,在ssh会话中:

    screen -d -r local
    
  • 你也可以保存的值DISPLAY,并XAUTHORITY在文件中调出值。~/.profile

    case $DISPLAY in
      :*) export | grep -E '(^| )(DISPLAY|XAUTHORITY)=' >~/.local-display-setup.sh;;
    esac
    

    在ssh会话中:

    . ~/.local-display-setup.sh
    screen
    
  • 您可以检测正在运行的进程的值,DISPLAY也可以XAUTHORITY从正在运行的进程中检测值这很难自动化。您必须找出与要处理的显示器相连的进程的PID,然后从/proc/$pid/environeval export $(</proc/$pid/environ tr \\0 \\n | grep -E '^(DISPLAY|XAUTHORITY)=')¹)获取环境变量

复制cookie

另一种方法(遵循Arrowmaster的建议)是不尝试$XAUTHORITY在ssh会话中获取的值,而是使X会话将其cookie复制到中~/.Xauthority由于每次登录时都会生成Cookie,因此,如果将过时的值保留在中,这不是问题~/.Xauthority

如果可以通过NFS或其他允许远程管理员查看其内容的网络文件系统访问主目录,则可能存在安全问题。他们仍然需要以某种方式连接到您的计算机,除非您启用了X TCP连接(默认情况下,Debian将其关闭)。因此,对于大多数人来说,这要么不适用(无NFS),要么不成问题(无X TCP连接)。

要在登录桌面X会话时复制cookie,请在~/.xprofile~/.profile(或登录时读取的其他脚本)中添加以下行

case $DISPLAY:$XAUTHORITY in
  :*:?*)
    # DISPLAY is set and points to a local display, and XAUTHORITY is
    # set, so merge the contents of `$XAUTHORITY` into ~/.Xauthority.
    XAUTHORITY=~/.Xauthority xauth merge "$XAUTHORITY";;
esac

¹原则上,它缺少正确的引号,但在此特定情况下$DISPLAY$XAUTHORITY将不包含任何shell元字符。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在Windows 10中打开的同一(扩展)显示器上生成新窗口?

来自分类Dev

双显示器Unity启动器在错误的显示器上打开

来自分类Dev

Chrome窗口的颜色取决于打开的显示器

来自分类Dev

Unity上的双显示器,一个在另一个之上-如何将窗口从顶部显示器拖到下部显示器(跨中央面板)?

来自分类Dev

显示器无法通过计算机打开

来自分类Dev

在其他显示器上打开Google Chrome

来自分类Dev

使Chrome在第二台显示器上打开?

来自分类Dev

电脑打开但显示器无信号

来自分类Dev

在远程机器上打开一个窗口

来自分类Dev

启用DPMS后,为什么显示器保持打开状态?

来自分类Dev

在备用X11显示器上打开弹出菜单时gtk3崩溃

来自分类Dev

Fedora双显示器-每个显示器一个工作区

来自分类Dev

远程桌面用户远程访问计算机时,显示器打开

来自分类Dev

无法在li上运行显示器

来自分类Dev

显示器打开时不显示任何内容

来自分类Dev

多台显示器一个屏幕尺寸很小

来自分类Dev

双显示器设置,为什么NVidia 346崩溃并且只能检测到一个大屏幕?

来自分类Dev

使用AutoHotkey命令关闭显示器后,显示器会打开

来自分类Dev

如何在第二个监视器/显示器上打开Tkinter GUI?(视窗)

来自分类Dev

是否可以选择一个程序实例应在哪个X显示器上运行?

来自分类Dev

如何在外部显示器断开连接-重新连接周期内保持打开的窗口?

来自分类Dev

一个用户帐户中的“无法连接到显示器”

来自分类Dev

在多台显示器上运行一个屏幕保护程序

来自分类Dev

是否真的存在一个屏幕上的Windows桌面和Andoid电话显示器?

来自分类Dev

在多台显示器上运行一个屏幕保护程序

来自分类Dev

在两台显示器上编辑一个PowerPoint演示文稿

来自分类Dev

显示器无法关闭

来自分类Dev

显示器无法唤醒

来自分类Dev

当我只有一个显示器时,Ubuntu可检测到2个显示器

Related 相关文章

  1. 1

    如何在Windows 10中打开的同一(扩展)显示器上生成新窗口?

  2. 2

    双显示器Unity启动器在错误的显示器上打开

  3. 3

    Chrome窗口的颜色取决于打开的显示器

  4. 4

    Unity上的双显示器,一个在另一个之上-如何将窗口从顶部显示器拖到下部显示器(跨中央面板)?

  5. 5

    显示器无法通过计算机打开

  6. 6

    在其他显示器上打开Google Chrome

  7. 7

    使Chrome在第二台显示器上打开?

  8. 8

    电脑打开但显示器无信号

  9. 9

    在远程机器上打开一个窗口

  10. 10

    启用DPMS后,为什么显示器保持打开状态?

  11. 11

    在备用X11显示器上打开弹出菜单时gtk3崩溃

  12. 12

    Fedora双显示器-每个显示器一个工作区

  13. 13

    远程桌面用户远程访问计算机时,显示器打开

  14. 14

    无法在li上运行显示器

  15. 15

    显示器打开时不显示任何内容

  16. 16

    多台显示器一个屏幕尺寸很小

  17. 17

    双显示器设置,为什么NVidia 346崩溃并且只能检测到一个大屏幕?

  18. 18

    使用AutoHotkey命令关闭显示器后,显示器会打开

  19. 19

    如何在第二个监视器/显示器上打开Tkinter GUI?(视窗)

  20. 20

    是否可以选择一个程序实例应在哪个X显示器上运行?

  21. 21

    如何在外部显示器断开连接-重新连接周期内保持打开的窗口?

  22. 22

    一个用户帐户中的“无法连接到显示器”

  23. 23

    在多台显示器上运行一个屏幕保护程序

  24. 24

    是否真的存在一个屏幕上的Windows桌面和Andoid电话显示器?

  25. 25

    在多台显示器上运行一个屏幕保护程序

  26. 26

    在两台显示器上编辑一个PowerPoint演示文稿

  27. 27

    显示器无法关闭

  28. 28

    显示器无法唤醒

  29. 29

    当我只有一个显示器时,Ubuntu可检测到2个显示器

热门标签

归档