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

9cc38c10808588fe4dd62b77c8f2aafe.gif

更多奇技淫巧欢迎订阅博客: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 协议

686631402e803bfb80f805dc9acf75e9.png

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

aac5eecee642fb9b78dcd4430103f2e4.png

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

许多时候 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 安装 xquartz
brew 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 ~]# firefox
Failed to open connection to "session" message bus: Unable to autolaunch a dbus-daemon without a $DISPLAY for X11
Running without a11y support!
Error: no DISPLAY environment variable specified

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

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

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

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

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

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:  12
Current 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/

7d90f877c8c16036c70aa4d62f91153e.gif

6382535da206459625d784969d41e682.png

你可能还喜欢

点击下方图片即可阅读

4fe4ac298f6f42816d3dc88b4dd90112.png

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

31f6c60c80c8b104cfc5edc0cb6eac1f.gif

云原生是一种信仰 ?

07b985a6d552c90bcb0508d14090ad92.png

码关注公众号

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

3e6e18ec1519120fe5932549b3bdbc0f.gif

409175912b4828874f8de9fbfc3f7204.gif

点击

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/539213.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

EntityFramework Core 2.0 Explicitly Compiled Query(显式编译查询)

前言 EntityFramework Core 2.0引入了显式编译查询,在查询数据时预先编译好LINQ查询便于在请求数据时能够立即响应。显式编译查询提供了高可用场景,通过使用显式编译的查询可以提高查询性能。EF Core已经使用查询表达式的散列来表示自动编译和缓存查询&a…

Oracle Minus关键字 不包含 取差集

Oracle Minus关键字   SQL中的MINUS关键字   SQL中有一个MINUS关键字,它运用在两个SQL语句上,它先找出第一条SQL语句所产生的结果,然后看这些结果有没有在第二个SQL语句的结果 中。如果有的话,那这一笔记录就被去除&#xff0…

python扫描器甄别操作系统类型_20189317 《网络攻防技术》 第三周作业

一.教材内容总结1.网络踩点:web搜索与挖掘、DNS和IP查询、网络拓扑侦察(1)网络踩点目标确定(2)技术手段:web信息搜索与挖掘、DNS和IP查询、网络拓扑侦察(3)web信息搜索与挖掘:基本搜索与挖掘技巧、高级搜索与挖掘技巧、编程实现google搜索、元…

python 网页重定向_小试牛刀:python爬虫爬取springer开放电子书.

首先声明,本文旨在记录反思,并没有资源,代码也不具有借鉴意义(水平实在不行.某天,水群的时候发现群友发了一个文件,里面是疫情时期springer开放的免费电子书名单,同时还附有下载链接,总共有400多本,这要是一个一个下载不得累死个人,只下载自己感兴趣的书也是一个好主意,但是,我…

直面桌面云带来的现状优势

在桌面云解决方案里,首先,所有的数据以及运算都在服务器端进行,客户端只是显示其变化的影像而已,所以在不需要担心客户端来非法窃取资料,我们在电影里面看到的商业间谍拿着 U 盘疯狂的拷贝公司商业机密的情况再也不会出…

ORA-28001: the password has expired解决方法

Oracle提示错误消息ORA-28001: the password has expired,是由于Oracle11G的新特性所致, Oracle11G创建用户时缺省密码过期限制是180天(即6个月), 如果超过180天用户密码未做修改则该用户无法登录。 Oracle公司是为了数…

.net 导出excel_Qt编写的项目作品18-数据导出到Excel及Pdf和打印数据

一、功能特点原创导出数据机制,不依赖任何office组件或者操作系统等第三方库,尤其是支持嵌入式linux。10万行数据9个字段只需要2秒钟完成。只需要四个步骤即可开始急速导出大量数据到Excel。同时提供直接写入数据接口和多线程写入数据接口,不…

hive数据库定义

默认数据库"default" 可以显式切换数据库:hive> use 数据库名; 创建 hive>CREATE DATABASE [IF NOT EXISTS] mydb [LOCATION] /....... [COMMENT] ....; 实例 hive (default)> create database test_db comment test database; OK Ti…

图像增强_Keras 常用的图像增强方式

欢迎关注 “小白玩转Python”,发现更多 “有趣”在使用神经网络和深度学习模型时,需要进行数据准备。对于更复杂的物体识别任务,也越来越需要增加数据量。数据增加意味着增加数据量。换句话说,拥有更大的数据集意味着更健壮的模型…

Facebook产品经理的三年叙事与协作思考

产品经理和研发工程师的关系经常被大家调侃,可偏偏就有同时受到研发和设计都喜欢的“别人家的产品经理”,沟通协调、对接需求、项目把控面面俱到还有好人缘。有没有人天生就是产品经理?产品经理的工作就是写需求写需求和写需求么?…

sis新地址_坚若磐石不掉速,老平台升级新选择,入手昱联Asint 500G SSD

我是文章的原作者,文章首发于:什么值得买爱折腾的老狐狸​zhiyou.smzdm.com首发文章链接:坚若磐石不掉速,老平台升级新选择,入手昱联Asint 500G SSD _值客原创_什么值得买​post.smzdm.com虽然说,现在越来越…

hive表定义(3种方式)

创建表 方式一 建表语法 CREATE [EXTERNAL] TABLE [IF NOT EXISTS] table_name [(col_name data_type [COMMENT col_comment], ...)] [COMMENT table_comment] [PARTITIONED BY (col_name data_type [COMMENT col_comment], ...)] [CLUSTERED BY (col_name, col_name, ..…

进度条设置_为你的练习设置进度条

在我们的日常练习中,遇到最多的一个问题就是不知道自己练得怎么样了?还需不需要继续,或者调整练习方法。这种问题大多出现在自学吉他的学生当中,因为得不到老师的反馈,自己练得对不对,够不够,都…

Python之路(第二篇):Python基本数据类型字符串(一)

一、基础1、编码 UTF-8:中文占3个字节 GBK:中文占2个字节 Unicode、UTF-8、GBK三者关系 ascii码是只能表示英文字符,用8个字节表示英文,unicode是统一码,世界通用码,规定采用2个字节对世界各地不同文字进行编码&#x…

python ftp下载文件_文件上传下载Python

点击上方蓝字关注我!图片来源 pexels.com简单实现文件上传、下载1 Server端 # -*- coding: utf-8 -*-import jsonimport os__author__ sange# Time : 2020/8/17 下午5:26# Author : sange# File : tcpserver_socket.py# Software: PyCharmimport socketserv…

hive列定义

修改 列的名称、类型、位置、注释 hive>ALTER TABLE t3 CHANGE COLUMN old_name new_name String [COMMENT ...] [AFTER column2]; 实例 hive (zmgdb)> alter table t1 change column car sarly int after office; FAILED: Execution Error, return code 1 from org.a…

react json转换_Typescript + React 新手篇

极链科技前端工程师茅丹丹前言 TS是什么Type Type (标准JS)。TS的官方网站:Type is a typed superset of Java that compiles to plain Java。Type是一个编译到纯JS的有类型定义的JS超集。 TS优点 TS 最大的优势是它提供了强大的静态分析能力,结合 TSL…

android listview 滑动条显示_第七十六回:Android中UI控件之RecyclerView基础

各位看官们,大家好,上一回中咱们说的是Android中UI控件之ListView优化的例子,这一回咱们说的例子是UI控件之RecyclerView。闲话休提,言归正转。让我们一起Talk Android吧!看官们,我们在前面章回中介绍了Lis…

数据建模大数据就业挑战月薪30K

点击关注 异步图书,置顶公众号每天与你分享 IT好书 技术干货 职场知识本文大概 10624 字读完共需 30 分钟Tips 参与文末话题讨论,即有机会获得异步图书一本。数据建模是对现实世界各类数据进行抽象组织、界定数据库需管辖的范围、确定数据的组织形式等直…

Hive的数据模型-管理表

概述 管理表,也称作内部表,受控表。 所有的 Table 数据(不包括 External Table)都保存在warehouse这个目录中。 删除表时,元数据与数据都会被删除。 在加载数据的过程中,实际数据会被移动到数据仓库目录中&#xff1b…