当前位置:  技术问答>linux和unix

请问Xlib、窗口管理器、curses之间的联系?

    来源: 互联网  发布时间:2016-04-02

    本文导语:  花了好多时间,搞清了X11,Xfree86/Xorg,X服务器/客户端/协议,桌面管理器,桌面环境之间的关系,不过仍然还有一些不明白,请人指点。 貌似GTK+,Qt等图形库在X Window架构上都是基于Xlib的,实现了封装,GTK+还是封...

花了好多时间,搞清了X11,Xfree86/Xorg,X服务器/客户端/协议,桌面管理器,桌面环境之间的关系,不过仍然还有一些不明白,请人指点。

貌似GTK+,Qt等图形库在X Window架构上都是基于Xlib的,实现了封装,GTK+还是封装了GDK,而GDK最终还是要封装Xlib的函数才能和X服务器通讯。请问窗口管理器是用什么写的,直接用Xlib,还是用Gtk+一类的图形库呢。我们如果在linux上写图形界面的程序,一般来说应该也是基于窗口管理器的吧。那个基于控制台的Curses图形库又是基于什么的呢。

好多程序像vim,emacs等都有字符版和图形版的,这些程序的GUI框架都是用什么图形库写的,相对于文本字符版的是不是要作很大的修改。

|

1.emacs直接用调用xlib,连菜单和子窗口都是用原始方法“画”出来的,不经过gtk这样的库。

2.据我所知xlib只是xserver与xclient之间通信协议的封装。

3.也就是说emacs独立于窗口管理器,与gtk更是无关

4.gnome当前的默认窗口管理器为sawfish,用lisp语言实时控制,类似于emacs

(还有我的愚见是:eamcs和sawfish在软件实现的层次上是等同的)


As mentioned above, GNOME has to be run alongside a traditional window manager. This is typically Sawfish, which is in fact shipped with GNOME. Any window manager can be used, but if that window manager is not GNOME-aware, you will lose some functionality. ----http://xwinman.org/

由此可知gnome的窗口管理器是Sawfish,其他的窗口管理器还有很多...

Sawfish is an extensible window manager using an Emacs Lisp-like scripting language. All window decorations are configurable and all user-interface policy is controlled through the Lisp language. But Sawfish also comes with a GUI configurator which allows basic customization (including switching themes) without having to know any Lisp.

Sawfish设计上专注于窗口管理功能,不提供类似其他管理器的很多模块化功能,但是运行效率高( Official Sawfish site:sawfish.wikia.com)

X 协议是X Server和X Client之间沟通的语言,Xlib库封装了可完成这种通信功能的API,可以使用这些API开发X Client程序。(出处不祥)

|
http://en.wikipedia.org/wiki/X_Window_System_protocols_and_architecture

Xlib is an X Window System protocol client library in the C programming language. It contains functions for interacting with an X server. These functions allow programmers to write programs without knowing the details of the protocol. Few applications use Xlib directly; rather, they employ other libraries that use Xlib functions to provide widget toolkits:
Xlib and other libraries using itIntrinsics (Xt) 
Athena widget set (Xaw) 
Motif 
GTK+ 
Qt(X11)

Window manager
Main article: X window manager
A window manager is a program that controls the general appearance of windows and other graphical elements of the graphical user interface. Differences in the look of X Window System in different installations are mainly due to the use of different window managers or different configurations of the window manager.

The window manager takes care of deciding the position of windows, placing the decorative border around them, handling icons, handling mouse clicks outside windows (on the “background”), handling certain keystrokes (for example, iconifying a window when ALT-F4 is pressed), etc.


From the point of view of the X server, the window manager is not different from the other clients. The initial position and the decorative borders around windows are handled by the window manager using the following requests:

an application can request the server not to satisfy requests of mapping (showing) subwindows of a given window, and to be sent an event instead; 
an application can request changing the parent of a window. 


|
GTK+是用c写的。要是写c程序可以用。可以做窗口之类的。

|
等待牛人来答.

    
 
 

您可能感兴趣的文章:

  • 请问jsp和serlet之间怎么通讯,jsp和jsp之间呢?
  • 正想学linux 请问red hat版本之间的问题
  • 请问怎样在两个Frame之间通信
  • beyond_xiruo(希偌):请问我要删除某个DIV,那在<%.....%>之间的代码该怎么写???多谢!
  • 请问各位大虾,怎么实现三层页面之间的参数传递?
  • 请问<%@include file="abc.jsp"%>与<jsp:include page="abc.jsp"/>之间的差别
  • 请问如何在两个web服务器之间实现通信?
  • 请问怎么在windows和solaris之间互连和互传文件 谢谢!!
  • 请问如何判断字符串中的字符在a~z之间
  • 两台不同城市的服务器之间要进行数据传输,请问具体的该怎么实现(红帽子)
  • 请问:make, makefile, configure,分别是什么啊,它们之间有什么关系啊
  • 请问gcc和g++之间有什么区别?
  • 我机器上安装了linux和win2000两个系统,请问如何在两个系统之间切换。
  • 急急!请问linux7.x与windows me之间怎么进行通信?????
  • 请问unix与window之间能否实现socket通信或者有什么方式可以通信?
  • Solaris菜鸟!!!请问Solaris SPARC和Solaris x86这两个版本之间有什么具体的差异吗?
  • 请问如何实现两个窗口之间的通信?
  • 请问JDK,JSDK,JSWDK等之间的联系和区别?(菜鸟提问)
  • 请问如何在linux的text模式和X window模式之间可以互相切换?
  • 请问linux下使用sed如何删除和修改匹配行之间的内容
  • 请问COM技术和WEB技术有什么区别和联系?在线等
  • 请问FILE结构体和文件描述符有什么联系?谢谢
  • 请问这儿有没有搞嵌入式Linux开发的呢?有的联系一下好吗?
  • 请问这些东西的联系和区别是什么?
  • 在学习前,先请问一下,UNIX和LIUNX有什么联系,有什么不同?
  • 请问下,jboss+Tomcat 与SUN的j2sdkee,有什么区别或联系么?安装其中一个就成为J2EE的Server了么??
  • 请问,$JAVA_HOME/jre/ext 和 CLASSPATH 的区别和联系?
  • 请问class,abstract class,interface的区别和联系.
  • 请问高手:EJB中的远程接口、本地接口、HOME接口的联系与区别是什么?应用时应注意哪些问题?
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 请问:我知道路由器的telnet密码,但忘记了enable 密码,请问如何是好?
  • 请问那里有SYBASE的jbdb 2.0下载;jspsmartupload可以直接将文件上传到数据库,请问如何使用
  • 请问最新的reahat9.0是基于什么核心的?2.4?2.6?请问那里能下载?
  • 请问:请问哪里有关于linux基本操作命令讲解的资料下载,最好是幻灯片格式的.
  • 请问,我试图用#admintool&图形工具命令来安装sun workshop5.0,为什么进入的却是用户管理界面?请问具体该如何在solaris下安装应用软件
  • 请问在Redhat 9里,我从登录就是图形介面,请问如何在图形介面内进入命令行方式呢,谢谢
  • 请问玩过SOLARIS的高手门,在不正常关机后,就不能启动到windows公用桌面了,只能在命令提示模式下了,请问怎么解决这个问题啊?急~!~!
  • 请问:我在redhat下装了bochs-2.2.1-1.rpm,.装了后,想设置一下,但找不到bochsrc.fda.bxrc,请问这个文件在哪个曰录下啊。
  • 请问:在配置Qt时,很多文档都说在.profile,.login里加东西,但是我好像没有发现有这两个文件上,请问这些文件在哪个目录下啊
  • 请问:在GCC里的C程序里的变量的声明是不是只能在前面,而且相同类型的变量的声明只能放在一起?如果不是,请问怎么样可以解决这个问题.
  • 请问各位大虾,小弟今天开始学jsp了,这学期我们有java课,所以已经下载了jdk(好象是1.2),请问我的98环境怎么配置jsp环境呀?我的jdk可以运行.java程序,别的我就不知道了....谢谢!
  • 主机是WIN2000,我用的是LUNIX,请问是否可以共享上网? 如果可以请问如何设置? 500分答谢,龟儿食言!
  • 请问linux下GUI开发的问题!
  • 请问出现fstab文件丢失该怎么修复呀?
  • 请问这个方法如何调用?
  • 请问一个奇怪的问题!
  • 请问在网页中打开的新窗口,如何让其居中。
  • 请问我该学什么了
  • 请问安装zhcon,cxterm问题
  • 非常急! 请问daemontools 在red hat 9下的安装问题? 在线等待


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3