登录 用户中心() [退出] 后台管理 注册
   
您的位置: 首页 >> SoftHub关联区 >> 主题: [linux]xwinodw 概念与 Xming 加 Putty 在windows下访问linux的界面     [回主站]     [分站链接]
[linux]xwinodw 概念与 Xming 加 Putty 在windows下访问linux的界面
clq
浏览(309) - 2020-10-20 18:58:45 发表 编辑

关键字:

[2020-10-20 19:02:56 最后更新]
[linux]xwinodw 概念与 Xming 加 Putty 在windows下访问linux的界面

Xming 我早就用过了,出来的效果确实比较神奇。不过再神奇也不能和 windows 原生的界面相比。不过这个概念确实值得好好学习一下。

----------------------------------------------------------------
https://www.cnblogs.com/itech/archive/2010/02/23/1672137.html
https://www.cnblogs.com/lpfuture/p/6018363.html
https://blog.csdn.net/lendq/article/details/78555257

clq  2020-10-20 18:59:07 发表 编辑


Windows下运行XServer


一 XServer和XClient

X windows,笼统的称为X,是一种位图显示的视窗系统,是建立图形用户界面的标准工具包和协议。X 是协议,不是具体的应用程序。X 为GUI环境提供了基本的框架:在屏幕上绘图、移动视窗以及与鼠标键盘的互动。
现在多用x11版本,X11R6全称为X protocol version 11 release 6。X11使用户可以运行基于X11的应用程序。
X是通过server/client架构来实现工作的。
Xserver:server为图行程序提供显示服务,并接受用户界面输入,把输入事件交给图行程序(可以是windows manager)处理,并能创建、映射、删除视窗以及在视窗中写和绘图。
Xclient:client是一个运行在连接X服务器上的应用程序。它可以发送请求给server,并从server处接受事件。

Windows manager,窗口管理器是一个特殊的图形应用程序,它对其他图行程序运行的窗口进行管理,为窗口提供装饰(标题栏、边框等)、对窗口操作提供支持(改变大小、移动、重叠)。许多窗口管理器还提供了虚拟桌面、鼠标手势等功能。Xserver一般只允许一个窗口管理器运行。如果没有窗口管理器,图行程序也可以运行的,但只有最新运行的程序在最上端,并且全屏显示,无法窗口切换。

桌面环境(desktop),这是一个容易和窗口管理器混淆的概念。桌面环境一般自带一个窗口管理器,并提供更多的实用程序。如方便管理的控制中心、文件管理等。

X display manager(XDM、gdm、wdm),Display manager对多个Xserver进行管理(本地的或远程的)。Linux 机器如果以级别5启动,进入的用户登陆界面就是display manager,用户输入用户名和密码,display manager就会启动本地的Xserver,初始化一个x会话,一般还通过xsession启动本地的窗口管理器和桌面环境。如果在配置文件里设置xdmcp=true,display manager还可以通过xdmcp协议管理远程的Xserver。当在windows机器上使用Xmanager登陆linux/unix机器时,其实是用xdmcp协议登录的,用户同样输入用户名/密码登陆,xdm启动一个x会话,不过这次的Xserver是在远程的机器上。



二 windows上运行远程linux服务器上的图形界面程序

如果需要运行远程linux服务器上的图形界面程序,光用ssh登录是运行不了的。因为没有图形界面的支持。linux的图形界面程序是典型的C/S结构,需要一个X server和X client(通常是程序本身)才能正常运行、正常显示结果。如果本地的操作系统也是linux,且有图形界面,就表示本地已经运行了X server,则远程的图形界面X client会连接到本地的X server,即可运行;如果本地的操作系统是windows,则需另外运行一个X server程序,然后远程的linux图形X client会连接本地的xserver。



三 Cygwin

cygwin提供window上linux环境的模拟,主页 http://www.cygwin.com/,安装时选择xserver相关组件。

步骤:
1) startXwin.sh & (启动server)

2) ssh –X –l username IP (连接到Linux)

3) gedit& (打开linux上的gedit在本地windows)

四 xwinlogon (没有试成功)

基于cygwin的,下载:http://sourceforge.net/projects/xwinlogon/files/。


五 Xming + Putty (超级牛逼的在windows下访问linux的界面)(强烈推荐)

下载:http://sourceforge.net/projects/xming/files/

安装后xming server自动运行,如果没有运行,请通过桌面快捷菜单启动,或用命令"C:\Program Files (x86)\Xming\Xming.exe" :0 -clipboard -multiwindow 来启动。

下载putty.exe然后直接运行,然后在PuTTY的配置中,把Connection》SSH》X11中的Enable X11 fowarding勾选上。

连接你的linux机器,然后运行启动gnome-terminal 和gedit,当然你可以运行任何的UI应用程序。






六 其他的

商业的x window server

http://www.labf.com/winaxe/

http://www.starnet.com/products/xwin32/

http://www.microimages.com/mix/



免费的x window server

http://www.mochasoft.dk/freeware/x11.htm



参考
使用cygwin X server实现Linux远程桌面 (for windows) :http://easwy.com/blog/archives/linux-remote-desktop-via-cygwin-x-server/

参考 xming+putty: http://www.cnblogs.com/zzub/archive/2011/04/08/2009854.html#2065566

完!



作者:iTech
微信公众号: cicdops
出处:http://itech.cnblogs.com/
github:https://github.com/cicdops/cicdops

分类: Linux, BuildTools
好文要顶 关注我 收藏该文
iTech
关注 - 35
粉丝 - 1135
+加关注
0
0
« 上一篇: Linux中autoconf和automake生成makefile脚本
» 下一篇: perl正则表达式[转]
posted @ 2010-02-23 18:38 iTech 阅读(13832) 评论(1) 编辑 收藏

评论列表
回复 引用
#1楼 [楼主] 2015-05-18 13:14 iTech
然后运行gvim,发现linux下的gvim显示在你的windows桌面上了。

如果出现:
Xlib: connection to "10.160.13.229:0.0" refused by server Xlib: No protocol specified

在右下角点击Xming server的view log,发现有如下消息

AUDIT: ... Xming: client 4 rejected from IP 10.160.23.18

这个10.160.23.18正是linux server的地址

解决办法:
右键桌面上的Xming图标,修改Xming的命令,取消权限控制,使用-ac选项:

C:\Program Files\XMing\Xming.exe :0 -clipboard -multiwindow -ac

然后启动Xming,发现可以在windows下显示linux的图形界面了。。

clq  2020-10-20 19:01:50 发表 编辑

https://www.cnblogs.com/lpfuture/p/6018363.html

----------------------------------------------------------------
理解xwindows

大名鼎鼎的 X Window 大家肯定不陌生。都知道它是 Unix/Linux 下面的窗口系统,也都知道它基于 Server/Clinet 架构。在网上随便搜一搜,也可以找到不少 X Window 的介绍。有不少文章为了给用户留一个直观的印象,往往先让系统进入纯文本界面,然后使用 startx 来启动图形界面,或者直接使用 X 来启动 X Server,再然后运行一个 xterm 来做示范。我觉得以上这些文章对 X Window 的理解有限,不够深入,而且也不够新。所以,我这里写一篇《X Window 的奥秘》,以最新的 Ubuntu-14.04 Desktop 为例,展示如何学习 X Window。
了解自己机器上的 X Window

  X Window 其实是一种规范,它有很多不同的实现,在 Linux 系统下最流行的是实现 Xorg 和 XFree86,微软 Windows 系统下也有 X Window 的实现,苹果的Mac 也是 X Window 的一种。要了解自己机器上运行的 X Window 究竟是哪一个,可以使用查看进程的ps命令,如下图:

  从上图可以看出,Ubuntu 14.04 使用的 X Window 是 Xorg。如果使用 ps -ef 命令,还可以看到 Xorg 运行时的命令行参数。

  想了解 X Window,下面这些文档需要看一遍先:

  下面来说一下也许是众所周知的基础知识:X Window 是一个分层的架构,它分为 Serve 和 Client。X Server 负责图形界面的显示,(也负责用户的输入),而Client 程序需要连接到 X Server,然后请求 X Server 绘制图形界面,同时从 X Server 接受用户的输入。在桌面系统上,X Server 和 Client 程序往往安装在同一台机器上,日常使用基本感觉不到它是分层的。但是很显然,X Server 和 Client 也可以分别运行在不同的机器上,在一台机器上运行程序,而在另外一台机器上显示图形界面。

  X Window 中的 Server 和 Client 的概念和我们平时接触到的“Server/Client”概念刚好相反。很多熟悉 Internet 原理的人,第一次接触 X Window 的这两个概念都会搞错。比如,我在一台本地机器上运行 Ubuntu 14.04 桌面版,而在另外一台远程机器上运行 CentOS 5.10(纯字符界面),当我用 ssh 从 Ubuntu 连接到 CentOS 的时候,Ubuntu 是 Client,而 CentOS 是 Server。在 X Window 中,Server 偏偏是我面前的这台 Ubuntu,X Server 运行在 Ubuntu 上。我可以在 CentOS 中运行 GVim,但是窗口显示在 Ubuntu 中,这时,GVim 是一个 Client 程序,它在远程机器上运行,而它的窗口显示在本地。
理解 display 和虚拟控制台

  前面提到网上很多介绍 X Window 的文章都是先让系统进入字符界面,然后手动启动一个 X Server。其实这完全没有必要,因为在同一台机器上完全可以运行多个 X Server,只需要让每个 X Server 的 display 不同即可。那么 display 究竟是什么?

  在 X Window 中,可以通过 hostname:display_number.screen_number 来指定一个屏幕。可以这样理解:一台计算机可以有多个 display,一个 display 可以有多个屏幕。所以,display 相当于是计算机配备的一套输入输出设备,一般情况下,一台电脑只配一套键盘鼠标和一个显示器,特殊情况下,可以配多个显示器。

  现在问题出来了,我的电脑只有一套键盘鼠标和一个显示器,也就是只有一个 display,那又怎么能运行多个 X Server 呢?那是因为在 Linux 中,还有虚拟控制台这样的高级特性。只需要同时按下 Ctrl+Alt+F1、Ctrl+Alt+F2、...、Ctrl+Alt+F7,就可以在不同的虚拟控制台中进行切换。在 Ubuntu 14.04 中,虚拟控制台 1 到 6 运行的getty,也就是字符界面,虚拟控制台 7 运行的是 Xorg。(Fedora 中不一样,虚拟控制台 1 运行的是图形界面,其它的是字符界面。)

  我们可以直接运行 X Server 程序来启动 X Server。/usr/bin/X 和 Xorg 都是 X Server 程序。其实 /usr/bin/X 是 Xorg 的符号链接,用哪一个都是一样的。

  启动 X Server 的时候可以指定 display 参数,因为可以省略掉 hostname 和 screen_number,所以可以用 :0,:1 这样的格式来指定 display。在我的机器上,本来就有一个 X Server 在运行,display :0 已经被占用了,所以我使用 sudo X :1 -retro 来在 display :1 上再运行一个 X Server,如下图:

  其中的 -retro 参数是为了让 X Server 的背景显示为斜纹,否则背景为纯黑色,那就看不出来是否启动了 X Server。启动 X Server 后的效果如下图:

  按 Ctrl+Alt+F7 回到 display :0,再用 ps 命令看一下,会发现系统中有两个 Xorg 在运行,一个运行在虚拟控制台 7,一个运行在虚拟控制台 8。如下图:



  在新启动的 X Server 中运行一个 GVim 看看效果。运行 GVim 时,使用 -display :1 参数指定窗口显示在新启动的 X Server 上,使用 -geometry 参数指定窗口的大小和位置。然后按 Ctrl+Alt+F8 切换虚拟控制台,看效果。命令见上图,程序运行效果见下图:


远程连接 X Server

  如果能让远程机器上的 GVim 也把窗口显示在本地机器的屏幕上,那就比较过瘾了。所以,使用 ssh 连接到 CentOS-5.10,然后使用 gvim -display ubuntu-14:1 命令,希望将 GVim 显示到 Ubuntu 的 display :1 上。由于是远程连接,所以 hostname 不能省略,需写成 ubuntu-14:1,也可以使用 IP 地址,写成 192.168.1.103:1。如下图:

  很可惜,连接失败。

  失败的原因是远程访问 X Server 需要安全认证。这个可以理解,就像登陆邮箱需要输入用户名和密码一样,如果 X Server 不要认证就可以随便连接的话,那岂不是桌面上垃圾窗口满天飞?安全认证的方式有很多种,具体请参考 man Xsecurity。安全认证可以使用 xhost 和 xauth 这两个程序来进行,具体使用方法参考它们的文档。

  先用 xhost 来授权,这个比较简单。为了运行 xhost,需要在 X Server 上有一个终端,所以运行一个 xterm,如下图:

  在 xterm 中输入 sodu xhost +192.168.1.109,这样,CentOS-5.10 中运行的 GUI 程序都可以连接到这个新开启的 X Server 了。如下图:

  在 CentOS-5.10 中运行 GVim,如下图:

  窗口显示在 Ubuntu 中,如下图:

  新启动的 X Server 界面比较丑陋,我们还是想让远程机器上的 GUI 程序直接显示在 Ubuntu 的桌面环境中。所以,指定 display 为 :0,如下图:

  结果很不幸,无法打开 display。连接不上,为什么呢?是安全认证的问题吗?不是,是 lightdm 的问题,请继续往下看。
理解 lightdm 和 X Window 桌面环境的启动过程

  X Server 的启动方式有两种,一种是通过显示管理器启动,另一种是手动启动。在前面的例子中,我通过直接运行 /usr/bin/X :1 来启动了一个 X Server。直接启动 X Server 的方法还有运行 startx 或者 xinit。手动启动 X Server 的缺点就是启动的 X Server 不好看。而显示管理器启动的不仅有 X Server,还有一大堆的 Client 程序,构成了一个完整的桌面环境,界面当然就漂亮多了。

  显示管理器(Display Manager)是什么呢?前面我讲到 display 就是一个电脑配备的一套键盘鼠标和显示器,那么显示管理器就是这一套设备的管理器了。显示管理器可以直接管理这些设备,所以它可以控制 X Server 的运行,由它来启动 X Server 那是再合适不过了。系统启动过程是这样的:内核加载-->init程序运行-->显示管理器运行--> X Server 运行-->显示管理器连接到 X Server,显示登录界面-->用户登录后,登录界面关闭,加载桌面环境。从上面的流程可以看出,显示管理器是 X Server 的父进程,它负责启动 X Server,当 X Server 启动后,它又变成了 X Server 的一个 Client 程序,连接到 X Server 显示欢迎界面和登录界面,最后,显示管理器又是所有桌面环境的父进程,它负责启动桌面环境需要的其它 Client 程序。

  在 Ubuntu 14.04 中,使用 lightdm 取代了传统的 xdm、gdm 等显示管理器。简单来说,就是由 lightdm 负责启动 X Server 和其它的 X 程序。不知道为什么,lightdm 在启动 X Server 的时候,给 X Server 加上了 -nolisten tcp 参数,所以远程计算机就没有办法连接到 Ubuntu 的桌面了。(从第 1 张图片可以看到该参数。)

  下一步的目标就是更改 lightdm 的配置,去掉这个 -nolisten tcp 参数。不过要达成这个目标还真是艰难啊,我的系统挂掉然后重装就是在这里折腾出来的。在这里我要狠狠滴吐槽一下 freedesktop.org,在 X Window 所用的软件中,freedesktop.org 贡献很大,比如 lightdm、xft、fontconfig、freetype 都是这个组织贡献的,可是,你就不能把文档写详细点吗?不仅是 lightdm 的文档不行,xft、freetype 的文档也都不行。

  lightdm 的 man page 非常简略,使用 sudo dpkg -L lightdm 也找不出该软件包中有价值的东西。没办法,另辟蹊径吧。在使用 sudo dpkg -L lightdm 查看该软件包的文件时,发现它的 log 文件放在 /var/log/lightdm 文件夹下,过去看看:

  终于,从 log 文件中看到了 lightdm 启动的全过程。首先,看到它从哪几个目录加载配置文件,接着,看到它启动 X Server。从下图光标所在的行可以看到 X Server 启动的所有参数,包括 -nolisten tcp 选项。

  继续看 log 文件,下面光标所在的行显示 lightdm 怎么启动 gnome-session:

  同时,我发现 /etc/lightdm/ 目录下没有 lightdm.conf 文件,而 /usr/share/doc/lightdm/ 目录下有一个 lightdm.conf.gz 文件,把该文件当文档看了一下,发现里面果然就是 lightdm 的配置的解释。赶快将该文件复制到 /etc/lightdm/ 目录下并解压,如下图:

  然后用 Vim 编辑 /etc/lightdm/lightdm.conf 文件,将 xserver-allow-tcp=false 一行前面的注释去掉,并且改为 xserver-allow-tcp=true。如下图:

  最后,重启系统。再用 ps 查看进程,发现 -nolisten tcp 选项已经没有了。
搞定 xauth

  搞定了 -nolisten tcp 之后,要想从远程计算接连接到 Ubuntu 桌面,还是需要安全认证。在前面的例子中,我使用了 xhost。xhost 是最简单的认证方式。在这里我要试一下别的认证方式,比如 MIT-MAGIC-COOKIE-1。如上图,先使用 xauth list 命令查看一下当前的授权记录,发现只有一条,而且 display 是 ubuntu-14/unix:0,很显然,这是一个本地授权,所以需要使用 xauth add 命令添加一个使用 ip 地址的授权,后面的 key 照抄就行了。最后,使用 xauth extract 和 xauth merge 配合管道和 ssh 将该授权记录合并到 CentOS-5.10 中。

  在 CentOS-5.10 中启动 GVim,指定 display 为 192.168.1.103:0,GVim 窗口就出现在了 Ubuntu中。如下图:
X Server 的配置

  可以使用不同的方法对 X Server 进行配置,前面的例子是直接指定命令行参数。除了指定命令行参数,还可以使用环境变量和配置文件。X Server 的配置文件为一般是 /etc/X11/xorg.conf 或 /etc/X11/xorg.conf.d/ 目录下的 .conf 文件,当然,配置文件也可以放在其它的目录中,具体信息,请参看 man xorg.conf。

  如果没有配置文件,X Server 将在启动的时候自动检测硬件,然后生成一个内置的配置。Ubuntu 系统就没有配置文件。不过没关系,如果需要使用配置文件的时候,可以通过 X Server 的 -configure 参数生成一个配置文件,里面包含当前自动检测出的配置。如果需要任何个性化的配置,对该文件进行修改即可。
现有的图形界面中可以运行嵌套的 X Server

  我们上面运行的 X Server 都是直接占用了计算机的整个显示器和键盘鼠标,事实上,在现有的图形界面中,还可以以窗口模式运行另外一个 X Server,称为 nested X Server。最常用的 nested X Server 是 Xephyr,在 Ubuntu 中可以通过如下命令安装它:

sudo aptitude install xserver-xephyr

  Xephyr 的使用非常简单,可以通过 man Xephyr 命令查看它的使用手册。如果输入 Xephyr :1 命令,就可以在现有图形界面中打开一个窗口模式的 X Server,如下图:

  以后再启动 GUI 程序,就可以通过程序的 -display 选项让程序运行在这个嵌套的 X Server 中,如下图:

  怎么样,是不是很好玩呢?除了好玩,还很有用,比如调试窗口管理器啊、连接远程桌面啊什么的都用得着。当然,我这里只是简单展示一下原来 X Window 还可以这么玩。
总结:

  1.在一个 Linux 系统中存在多个虚拟控制台,所以可以启动多个 X Server;

  2.启动 X Server 的方式有两种,一种是使用 /usr/bin/X、startx、xinit 手动启动,一种是通过显示管理器启动;

  3.Ubuntu 使用的显示管理器是 lightdm,这是一个比较新的、轻量级的显示管理器,但是文档不够详细;

  4.远程计算机连接本地的 X Server,需要 X Server 开放 TCP 端口,还要搞定安全认证;

  5.X Server 的配置,可以通过命令行参数,可以通过环境变量,还可以通过配置文件;

  6.可以在现有的图形界面下以窗口模式运行嵌套的 X Server,常用的软件是 Xephyr;

clq  2020-10-20 19:02:56 发表 编辑

https://blog.csdn.net/lendq/article/details/78555257
----------------------------------------------------------------

X Windows的理解与使用
lendq 2017-11-16 20:44:40 5632 收藏 9
分类专栏: 日常学习 日常涨知识 文章标签: 操作系统 gnome
X Windows的理解

X window 是Unix/Linux系统上的图形用户界面 一个Linux的发行版,比如说Ubuntu,Centos都是Linux内核加上图形用户界面(比如GNome,KDE)再加一堆应用软件组成的。 所以说x window也是Linux上的一个应用软件,没有它,Linux也照样可以跑。

x window可以理解为操作系统的GUI程序,这个程序接管了键盘、鼠标、显示器、显卡。
你在屏幕上看到所有的窗口、图片、文字都是由它绘制的,鼠标键盘等事件也是由它处理和分发。
x window system

可以分为如下三部分

1. x client

2. x server

3. x protocol

x window是采用C/S结构设计的。
x server是服务器,处理x client发过来的请求,并将结果返回给clients,它们之间的数据交互格式是由x protocol规定。

x server管理了键盘、鼠标、显示器、触摸板、显卡等I/O设备,所有窗口、文件和图片都是由x server绘制的。   例:键入一个字母G,x server得到这个事件后,会将该事件转发给对应的程序(假使此时对应的应用程序就是某一个client),client接收到事件后,需要显示这个字母,然后就会发一个请求给x server,要求在xx,xx地方显示一个大小为xx颜色为xx,字体为xx的字母,x server收到请求后,就按照要求把字母c画出来了。

x window system 使用C/S结构设计的优点

资源统一管理,方便共享。由于x server接管了硬件,client不需要直接使用。x server方便获得输入事件,主动发给各个client。

远程显示。一般来说server和client是在同一台电脑上,但是也可以不在不同网络的不同电脑上。这样即使你远程登录,也可以在本机上显示远程端的程序。

采用C/S,clinet和server可以解耦。client可以采用任意语言开发,只要符合x protocol要求就可以了。

在X Windows基础上开发图形应用程序的时候,是不需要自己发请求给x server的

  看下图:

client请求过程


  xlib封装了交互内容的打包和解包等操作
  x toolkit实现很多常用的组件,比如说GTK+,QT就是很流行的x toolkit。
  所以平时开发应用的时候,只需要使用QT等就可以了,无需理会x server等存在。


总数:3 页次:1/1 首页 尾页  
总数:3 页次:1/1 首页 尾页  


所在合集/目录
linux学习 更多
xming 更多



发表评论:
文本/html模式切换 插入图片 文本/html模式切换


附件:



NEWBT官方QQ群1: 276678893
可求档连环画,漫画;询问文本处理大师等软件使用技巧;求档softhub软件下载及使用技巧.
但不可"开车",严禁国家敏感话题,不可求档涉及版权的文档软件.
验证问题说明申请入群原因即可.

Copyright © 2005-2020 clq, All Rights Reserved
版权所有
桂ICP备15002303号-1