更多奇技淫巧欢迎订阅博客:https://fuckcloudnative.io

前言

在 Windows 中相信大家已经很熟悉使用 Xmanager(Xshell), MobaXterm, SecureCRT 通过 X11 实现 Linux 图形化界面显示,我的需求是在 macOS 下使用 iTerm2 作为 Terminal 实现 X11 图形化界面显示,网上大部分教程只提到安装 Xquartz 但并没有结合实际问题给出完整的解决步骤,我把实践过程做了详细的记录方便大家按照最简单的步骤实现 Linux 图形化显示效果。

1. X11 介绍

有些 Linux 服务器出于性能和效率的考虑,通常都是没有安装图形化界面的,那么图形化程序在服务器上压根儿就跑不起来,或者无法直接显示出来,这就很尴尬了!那么如何解决这个问题呢?可以基于 X11 Forwarding 技术 + MobaXterm/Xshell/SecureCRT/XQuartz 等第三方工具,就可以轻松搞定,是不是很简单?

X 协议


Linux 本身是没有图形化界面的,所谓的图形化界面系统只不过中 Linux 下的应用程序。这一点和 Windows 不一样。Windows 从 Windows 95 开始,图形界面就直接在系统内核中实现了,是操作系统不可或缺的一部分。Linux 的图形化界面,底层都是基于 X 协议。

X 协议由 X server 和 X client 组成:

  • X server 管理主机上与显示相关的硬件设置(如显卡、硬盘、鼠标等),它负责屏幕画面的绘制与显示,以及将输入设置(如键盘、鼠标)的动作告知 X client。
  • X client (即 X 应用程序) 则主要负责事件的处理(即程序的逻辑)。

举个例子,如果用户点击了鼠标左键,因为鼠标归 X server 管理,于是 X server 就捕捉到了鼠标点击这个动作,然后它将这个动作告诉 X client,因为 X client 负责程序逻辑,于是 X client 就根据程序预先设定的逻辑(例如画一个圆),告诉 X server 说:“请在鼠标点击的位置,画一个圆”。最后,X server 就响应 X client 的请求,在鼠标点击的位置,绘制并显示出一个圆。

X11 Forwarding


这么绕,有啥意义呢?当然有!

许多时候 X server 和 X client 在同一台主机上,这看起来没什么。但是, X server 和 X client 完全可以运行在不同的机器上,只要彼此通过 X 协议通信即可。于是,我们就可以做一些 “神奇” 的事情,比如像本文开头谈到的,在本地显示 (X server),运行在服务器上的 GUI 程序 (X client)。这样的操作可以通过 SSH X11 Forwarding (转发) 来实现。

X11 中的 X 指的就是 X 协议,11 指的是采用 X 协议的第 11 个版本。

2. macOS 实现 X11 图形化界面显示

# macOS 安装 xquartzbrew cask install xquartz

# 启动 xquartz,实测 `Allow connections from clients` 选项非必须条件Run Applications > Utilities > XQuartz.app

# 设置 DISPLAY 环境变量export DISPLAY=:0

# 没有使用 xquartz 中 terminal 的话不会自动设置 DISPLAY 环境变量,可能会出现以下错误[root@VM-2-11-centos ~]# firefoxFailed to open connection to "session" message bus: Unable to autolaunch a dbus-daemon without a $DISPLAY for X11Running without a11y support!Error: no DISPLAY environment variable specified

# ssh 添加 - Y flag 登录远程主机ssh -Y user@host

# 登录成功后可能出现以下错误,安装 xauth 即可解决ssh -Y root@192.168.117.148X11 forwarding request failed on channel 0

# 远程主机安装 xauth,以 centos 为例,使用 xclock 可以测试图形化效果yum install -y xauth xclockxclock

# 如果需要浏览器支持安装 firefox 或者 chrome 即可yum install firefoxfirefox

yum install https://dl.google.com/linux/direct/google-chrome-stable_current_x86_64.rpm/usr/bin/google-chrome-stable %U --no-sandbox


3. FAQ

  1. Why do I need to install Xquartz?

    From https://stackoverflow.com/a/50182736/6769366

    XQuartz is standard. It used to come bundled with the OS, but Apple removed it back around Mavericks.

  2. Why do I have to add environment DISPLAY?

    Please see https://askubuntu.com/a/432257/745885[1]

  3. Why do I have to use -Y instead of -X?

    I got the following error when trying to run a python script which draws some curves using matplotlib:

X Error of failed request:  BadAccess (attempt to access private resource denied)Major opcode of failed request:  18 (X_ChangeProperty)Serial number of failed request:  12Current serial number in output stream:  15

This problem is sovled when using -Y instead of -X. Haven’t got enough time to find exact explanation, just post a link for those who are curious:

Can’t run “ssh -X” on MacOS Sierra[2]

  1. How to fix X11 forwarding request failed on channel 0?

    Install X authority file utility

$ sudo yum install xauth

参考资料

[1]

https://askubuntu.com/a/432257/745885: https://askubuntu.com/a/432257/745885

[2]

Can’t run “ssh -X” on MacOS Sierra: https://stackoverflow.com/q/39622173/6769366

原文链接:https://wsgzao.github.io/post/x11/

你可能还喜欢

点击下方图片即可阅读

在 k8s 中使用 Kubevirt 运行管理 Windows 10 操作系统

云原生是一种信仰 ?

码关注公众号

后台回复◉k8s◉获取史上最方便快捷的 Kubernetes 高可用部署工具,只需一条命令,连 ssh 都不需要!

点击

❤️给个「在看」,是对我最大的支持❤️

jtessboxeditorfx 界面显示不出来_macOS 使用 XQuartz 支持 X11 实现 Linux 图形化界面显示...相关推荐

  1. xclock 不出来界面_macOS 使用 XQuartz 支持 X11 实现 Linux 图形化界面显示

    更多奇技淫巧欢迎订阅博客:https://fuckcloudnative.io 前言 在 Windows 中相信大家已经很熟悉使用 Xmanager(Xshell), MobaXterm, Secur ...

  2. macOS 使用 XQuartz 支持 X11 实现 Linux 图形化界面显示

    更多奇技淫巧欢迎订阅博客:https://fuckcloudnative.io 前言 在 Windows 中相信大家已经很熟悉使用 Xmanager(Xshell), MobaXterm, Secur ...

  3. 麦昆mciro:bit开发板机器人小车——支持makecode图形化编程,支持基于Mind+的图形化编程及python编程

    麦昆4.0中文版 随着时代发展的趋势,以及各个政策的出台,市场上的机器人兴趣班.编程兴趣班越来越火爆,编程课也慢慢走进了学校的课堂.但是作为工薪阶层的普通家庭来说连续数年的学习一定有很大的经济压力.所 ...

  4. 巧用 XQuartz 实现在 macOS 下显示 Linux X11 图形化程序

    公众号关注 「奇妙的 Linux 世界」 设为「星标」,每天带你玩转 Linux ! 在 Windows 中相信大家已经很熟悉使用 Xmanager(Xshell), MobaXterm, Secur ...

  5. 免费的XShell替代品,同时支持Windows,macOS,Linux!又来一款国产良心工具....

    来源:toutiao.com/i6694563184428188171 引言 FinalShell是一款免费的国产的集SSH工具.服务器管理.远程桌面加速的良心软件,同时支持Windows,macOS ...

  6. windows兼容Linux php,支持windows与linux的php计划任务的实现方法

    本文实例讲述了支持windows与linux的php计划任务的实现方法.包括了在winows下利用winodows计划任务来操作,还有在linux中利用linux的方法来实现.分享给大家供大家参考.具 ...

  7. windows命令行下访问linux,Windows支持直接访问Linux子系统文件:你的下一台Linux何必是Linux...

    原标题:Windows支持直接访问Linux子系统文件:你的下一台Linux何必是Linux 晓查 发自 凹非寺 量子位 报道 | 公众号 QbitAI 微软,致力于做最好的Linux发行版. 今天, ...

  8. 性能提升19倍,DGL重大更新支持亿级规模图神经网络训练

    https://www.toutiao.com/a6690329469023945220/ 本文重点介绍了 DGL v0.3的重要特性之一 - 消息融合. 我们在去年12月发布了Deep Graph ...

  9. m3u8转mp4缓存合并工厂_多线程m3u8下载工具,支持windowsamp;amp;linux;两个羊毛线报...

    m3u8下载工具还是挺多的,很多也是基于ffmpeg,这个也是. 这个命令行下载工具,支持windows和linux 64位系统. 支持多线程,支持设置header[一些m3u8链接可能需要设置hea ...

最新文章

  1. 遇见BUG(5)如何找到VHDL的包呢?
  2. 修改input的text 通过jquery的html获取值 未变化
  3. Apache Spark学习:利用Scala语言开发Spark应用程序
  4. Jquery中实现表单提交到SSM后台前进行post请求实现数据的校验
  5. 《白鹿原》金句摘抄(八)
  6. SQL Server 审计功能-记录所有的操作记录
  7. Flutter进阶—读取与写入文件
  8. .NetCore 下开发独立的(RPL)含有界面的组件包 (一)准备工作
  9. 中小企业什么OA办公系统适用呢?
  10. 【数据库原理及应用教程】【数据库系统的体系结构】【1.4-1.6】
  11. Lora如何组网?有哪些简单的Lora组网协议?
  12. 傅里叶变换与拉普拉斯变换
  13. plt文件怎么转化为txt文件
  14. 计算机专业学生如何规划好大学四年的学习
  15. matlab算kdj指标,通达信带注释的KDJ指标公式
  16. 【转】完美:photoshop cs6 破解版下载[序列号+破解补丁+破解教程+官方原版]
  17. 杀毒软件已经进入空前弱智与混沌状态
  18. 打印机如何打印白色_打印机可以打印白色吗?
  19. 企查猫app数据解密
  20. 山东大学青岛校区,拟筹建工业互联网国家重点实验室!

热门文章

  1. Hello,My first blog!
  2. php不用于输出的函数,PHP常用函数和常见疑难问题解答
  3. Maven项目整合提示:Maven Missing artifact xxx:jar 错误解决方案
  4. linux输入ls后不显示_零基础学习之Linux基础命令小结
  5. linux db2 归档,DB2的归档模式设置方法
  6. tomcat不能解析php,tomcat不支持php怎么办
  7. Nvidia CUDA初级教程2 并行程序设计概述
  8. 对某公司一次弱口令到存储型xss挖掘
  9. keyloadtool_phoenix 利用CsvBulkLoadTool 批量带入数据并自动创建索引
  10. 多学一招总没错吧?MP通用枚举轻松实现存储显示相分离