AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / unix / 问题 / 684955
Accepted
Klaus
Klaus
Asked: 2022-01-05 02:56:27 +0800 CST2022-01-05 02:56:27 +0800 CST 2022-01-05 02:56:27 +0800 CST

X11 转发适用于某些 progs,其他 progs 忽略 $DISPLAY?

  • 772

我有 2 台 linux 机器正在运行。如果我从一个连接到另一个

ssh -X 192.168.1.6

我能够启动xterm,或者firefox窗口在我正在使用的机器上按预期显示。

但是如果我启动gnome-terminalor meld,这些程序的窗口就会显示在远程机器上。

似乎没有一般的身份验证问题,因为我没有收到错误消息。我已经找到了那个线程:如何在我的无头服务器上远程启动 gnome-terminal?(无法通过 X11 转发启动)

并从那里脚本:

#! /bin/bash
ID=foo.bar$RANDOM
GDK_BACKEND=x11 /usr/libexec/gnome-terminal-server --app-id "$ID" &
sleep .4        # yuck
gnome-terminal --app-id "$ID"
wait

为gnome-terminal. 但对于meld是没有选择--app-id 的。

我有办法让窗口显示在正确的机器上吗?

顺便说一句:两台机器上的 linux 版本都是 5.15.12-200.fc35.x86_64 fedora

如何在没有任何额外脚本和环境黑客的情况下使其工作:

只需在任何地方禁用 Wayland!在您选择要登录的用户后, fedora gdm 登录屏幕会在登录屏幕上提供一个几乎隐藏的菜单。有一个小齿轮,在当前的 gnome 版本中它在右侧,并且选择“gnome under X11”以摆脱 Wayland 问题。在这也触摸屏工作之后,字体渲染得到了很大改进,鼠标指针校准工作完美。他们都没有与 Wayland 合作……仅作为旁注!注意:您必须在主机和远程端随时随地禁用 Wayland!

ssh x11
  • 1 1 个回答
  • 360 Views

1 个回答

  • Voted
  1. Best Answer
    telcoM
    2022-01-05T04:11:27+08:002022-01-05T04:11:27+08:00

    据我了解,指示程序使用 X11 转发的重要部分是GDK_BACKEND=x11变量。没有它,GNOME 应用程序将默认使用 Wayland 窗口系统,这将导致窗口显示在远程机器上。

    --app-id只是停止gnome-terminal尝试连接到任何其他现有实例,这些实例gnome-terminal-server可能在远程主机上的同一用户帐户上运行(与该主机上的本地会话相关联),或者可能由会话按需启动D-Bus,不知道使用 X11 转发的要求。相反,gnome-terminal只会与gnome-terminal-server被告知使用 X11 转发和GDK_BACKEND=x11环境变量的特定实例对话。

    gnome-terminal只需要这个--app-id东西,因为gnome-terminal它并不是真正的终端应用程序:它只是一个小型客户端应用程序,它调用 D-Bus 来gnome-terminal-server创建实际的终端窗口。这是一种gnome-terminal无法分辨的解决方法gnome-terminal-server:“嘿,在创建这个新的终端窗口时,使用 X11 后端,$DISPLAY而$XAUTHORITY不是你可能已经拥有的任何默认显示安排。”

    如果我的理论是正确的,那么你应该可以从meld一个简单的开始:

    GDK_BACKEND=x11 meld
    

    如果这可行,那么您可以创建一个简单的包装脚本,如下所示:

    #!/bin/sh
    if [ "$SSH_CONNECTION" != "" ] && [ "$DISPLAY" != "" ]; then
        GDK_BACKEND=x11 /usr/bin/meld "$@"
    else
        exec /usr/bin/meld "$@"
    fi
    

    假设 realmeld位于/usr/bin/meld,您可以命名此脚本meld并将其放置$PATH在 /usr/bin 之前的某个目录中,然后meld无论您是在本地运行还是通过 SSH X11 转发运行,都将始终做正确的事情。

    或者,您甚至可以在远程机器上添加一个简单的测试来为所有程序设置一个简单的测试,~/.bash_profile只要您的会话与具有 X11 转发的 SSH 连接相关联:~/.profileGDK_BACKEND=x11

    if [ "$SSH_CONNECTION" != "" ] && [ "$DISPLAY" != "" ]; then
        export GDK_BACKEND=x11
    fi
    
    • 2

相关问题

  • 为什么 ssh 实用程序被视为 pty?

  • Auto-SSH 手动工作,但不在后台工作

  • 远程运行 X 应用程序,在远程主机上运行 GUI [关闭]

  • rsync 端口 22 和 873 使用

  • SCP突然中止:管道损坏,消息验证码不正确

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    模块 i915 可能缺少固件 /lib/firmware/i915/*

    • 3 个回答
  • Marko Smith

    无法获取 jessie backports 存储库

    • 4 个回答
  • Marko Smith

    如何将 GPG 私钥和公钥导出到文件

    • 4 个回答
  • Marko Smith

    我们如何运行存储在变量中的命令?

    • 5 个回答
  • Marko Smith

    如何配置 systemd-resolved 和 systemd-networkd 以使用本地 DNS 服务器来解析本地域和远程 DNS 服务器来解析远程域?

    • 3 个回答
  • Marko Smith

    dist-upgrade 后 Kali Linux 中的 apt-get update 错误 [重复]

    • 2 个回答
  • Marko Smith

    如何从 systemctl 服务日志中查看最新的 x 行

    • 5 个回答
  • Marko Smith

    Nano - 跳转到文件末尾

    • 8 个回答
  • Marko Smith

    grub 错误:你需要先加载内核

    • 4 个回答
  • Marko Smith

    如何下载软件包而不是使用 apt-get 命令安装它?

    • 7 个回答
  • Martin Hope
    user12345 无法获取 jessie backports 存储库 2019-03-27 04:39:28 +0800 CST
  • Martin Hope
    Carl 为什么大多数 systemd 示例都包含 WantedBy=multi-user.target? 2019-03-15 11:49:25 +0800 CST
  • Martin Hope
    rocky 如何将 GPG 私钥和公钥导出到文件 2018-11-16 05:36:15 +0800 CST
  • Martin Hope
    Evan Carroll systemctl 状态显示:“状态:降级” 2018-06-03 18:48:17 +0800 CST
  • Martin Hope
    Tim 我们如何运行存储在变量中的命令? 2018-05-21 04:46:29 +0800 CST
  • Martin Hope
    Ankur S 为什么 /dev/null 是一个文件?为什么它的功能不作为一个简单的程序来实现? 2018-04-17 07:28:04 +0800 CST
  • Martin Hope
    user3191334 如何从 systemctl 服务日志中查看最新的 x 行 2018-02-07 00:14:16 +0800 CST
  • Martin Hope
    Marko Pacak Nano - 跳转到文件末尾 2018-02-01 01:53:03 +0800 CST
  • Martin Hope
    Kidburla 为什么真假这么大? 2018-01-26 12:14:47 +0800 CST
  • Martin Hope
    Christos Baziotis 在一个巨大的(70GB)、一行、文本文件中替换字符串 2017-12-30 06:58:33 +0800 CST

热门标签

linux bash debian shell-script text-processing ubuntu centos shell awk ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve