更多奇技淫巧欢迎订阅博客: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 都不需要!

点击

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

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

  1. jtessboxeditorfx 界面显示不出来_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. linux远程图形操作系统,二、Linux操作系统之操作篇-Xmanager 远程访问Linux图形化界面...

    2.Linux操作系统之操作篇-Xmanager 远程访问Linux图形化界面 红帽配置Xmanager 远程访问Linux: 1. 修改gdm配置文件,修改内容为粗体部分. /etc/gdm/cus ...

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

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

  5. Linux图形化界面如何全屏

    将鼠标定位到Linux图形化界面中,点击快捷键:Ctrl+Alt+Enter,退出全屏也是该快捷键,如果全屏效果依然不符合你的要求,你可以选择图形界面上方的系统>首选项>显示中来设置分辨率 ...

  6. 使用Putty+Xming登录Linux图形化界面

    有些Linux程序需要依赖图形界面才能启动,例如Kettle的配置页面.之前都是使用VNC,通过在服务器和客户端分别安装VNCServer和VNCViewer来完成.今天介绍另外一种方式,在客户端利用 ...

  7. linux图形化卡在开机界面,linux怎么在开机时进入图形界面

    编辑/etc/inittab文件# inittab is only used by upstart for the default runlevel. # # ADDING OTHER CONFIGU ...

  8. 图形界面不卡的linux,图形化界面linux(linaro)的安装小结

    描述 本文是在Xilinx官方给出的Zedboard上的Demo(linaro)基础上,并结合笔者的亲自实践,作出的一点小小的总结,希望能给"linux小白们"提供一些参考. 首先 ...

  9. linux英伟达显卡内核不匹配,解决ubuntu16.04循环登录问题,原因为linux图形化界面和英伟达显卡不兼容...

    主要步骤为关闭xserver-卸载原有驱动-新装驱动-开启xserver 前提条件,ubuntu系统是开启的,能够通过22端口ssh连接. 1.关闭xserver sudo /etc/init.d/l ...

最新文章

  1. android4.3.0 camera,4.3、高通camera驱动简析
  2. 四则运算个人项目反思总结
  3. 微软是如何使用 C# 重写 C# 编译器并将其开源的
  4. React中自定义方法
  5. mac osx 10.10 pip 安装问题
  6. 61二叉搜索树的第k个结点
  7. 在esx server VI里导入其它虚拟机
  8. Linux文件系统ext3与ext4主要区别
  9. c# 一种缓存模板
  10. php http/1.1 403 forbidden in,http常用方法有哪些
  11. Android通过包名启动应用程序
  12. selenium下载文件
  13. 题目96:把一张一元的钞票换成一分、两分、和五分的硬币,每种硬币至少一枚。问有哪几种换法?
  14. cf1668E. Half Queen Cover 思维
  15. python句柄无效_使用pyinstaller打包,subprocess报“句柄无效”错误的解决方法
  16. Leetcode_603. 连续空余座位
  17. 【Windows 7错误报告弹出提示窗口怎么取消】
  18. Codeforces Round #550 (Div. 3)C. Two Shuffled Sequences
  19. 大数据平台数据处理之Lambda架构和Kappa架构
  20. Canvas学习:绘制箭头

热门文章

  1. 【渝粤题库】国家开放大学2021春2402外国文学题目
  2. matlab 性能分析方法,DPCM,PSK系统的MATLAB实现及性能分析
  3. python string 方法,python字符串的方法与操作大全
  4. cstring越界_CString和char*的转换
  5. 第二章导数与微分思维导图_线性代数第二章 矩阵 思维导图
  6. linux中kafka主题修改分区,kafka_2.11-2.0.0的部署与配置修改
  7. 模板 字段_劲爆新功能:轻流文字识别(OCR)功能支持自定义识别模板啦
  8. Bitmap Font生成
  9. 将字符串中的指定字符全局替换
  10. ionic2 安装与cordova打包