Xwindow读书笔记3
时间:2005-12-10 来源:rickyweiwei
视窗管理器 Window manager
系统最基本的部份-- 也就是server,它只提供最基本的视窗功能,如建立视窗、在视窗中写入文字或画图形、控制键盘和滑鼠的输入和去掉视窗等,Server它不提供使用者介面,它只提供建立介面的基本结构。
使用者介面分为两个部份 -- 管理介面和应用介面。管理介面由视窗管理器控制,提供管理 "案头" 的功能,例如建立应用视窗,在萤幕上移动它们,重定大小等等。
# X :0
#twm -display :0 &
一些常见的WM
TWM 最早的WM,一切WM的原型 xorg-x11-twm-6.8.1-23.EL.i386.rpm http://xwinman.org/
FVWM (一个可扩展,完全自定义的WM) Freedom http://www.fvwm.org 立体窗口 需设好$LCTYP 与$LANG
KWin KDE的WM http://www.usermode.org/docs/kwintheme.html
englightenment, sawmill, iceWM ,metacity GNOME常用的WM http://www.icewm.org/
Sawfish 类似与FVWM,但可以用LISP语言编程控制
视窗管理器只决定管理介面,另一半的使用者介面为应用介面 -- 如何和应用程式交谈和利用滑鼠或键盘控制它们。下面以xterm为例详述。
xterm 是终端机模拟器 - 它是一个可以使X应用程式视窗看起来像普通终端机一样的程式, 而无需知道有关视窗系统的功能。xterm 模拟一个 "哑终端机 (dumb terminal)", 但它也提供许多一般终端机没有的功能 :
. 设定终端机模式与特性的突现式 (pop-up) 选单
. 可以上下移动萤幕影像的卷动棒 (scrollbar) - 当文字列因萤幕卷动而消失时, 可以将它拉回.
. 模拟 Tektronix 4014 终端机.
. 可选择性地记录萤幕列到一个使用记录档 (log file).
. "剪"(cut)"贴"(paste)文字区块.
. 可选择文字颜色, 视窗背景等...
. 可选择 VT100 与 Tek 视窗字型.
. 可设定( 程式化(programmable))键盘.
使用X的网路设备
指定一个远方终端机 -- -display 选项
几乎所有的X程式都接受以一个命令列的选项来指定使用哪一个显示器 (换个说法,连接到哪一个X server ),这个选项的格式为: -display displayname
你会告诉程式它的输出是哪一个显示器 (网路上任何你可以选择的显示器)。显示器名称需要包含三个元素,hostname,display number和screen number ,我们将详细解释并举例说明。
Hostname 是在网路上与显示器直接连接的机器名称,hostname也决定了应用程式和server是如何连接的。简单地说:
假使Server在你自己本地的机器上执行,你有两种选择:
1. 省略掉hostname,系统会选择最有效率的方式和server交谈。
2. 定hostname为"unix",系统将用Unix domain sockets 作通信。("Unixdomain" 意指socket用传统Unix档案名称 (例如/dev/urgent)来命名. ) 在命名之後需加一个冒号(:), 即使你省略hostname,你仍需要加冒号。
假使Server在远方的机器上执行,你一样有两种选择,依你网路上用的通信系统而定:
1. TCP/IP :大多数的Unix系统使用此种通信方式, 简单的方法是用在你区域网路上已知的normal name (例如"venus" 或"saturn ")。你也可以用 full Internet name (例如"expo.lcs.mit.edu"或它的 Internet address "129.89.12.73")。在 name 後,需要加一个冒号。 (hostnameOR 全限定域名(fully qualified domain name (FQDN) OR IP )
2. DECnet :用你连接到的机器上的DECnet nodename,在hostname加两个冒号(::).
display number 显示器是一组监视器,萤幕,连接一个键盘和滑鼠的逻辑萤幕的组合。换句话说,即是使用者工作的地方,在一个给定的CPU 上,显示器从 0开始编号,display number即是指哪个编号的显示器被使用,即使display number为 0, 也不可省略。 ??
screen number 对於连接到显示器上数个萤幕也被从 0开始编号,screen number 为你使用萤幕的编号,和display number以一个句点 (.)隔开,screen number 为 0 时可省略,若省略时,其前面的句点一并省略。
即:hostname:display number [.screen number]
EXAMPLE:
以下为一些显示器格式的□例:
. 假设为本地的机器,预设萤幕为 0,以下二者均可:
unix:0
:0
. 假设你指定你自己的机器 (通常是venus),但你需要检验TCP/IP网路的操作和明显地指定萤幕:
venus:0.0
. TCP/IP网路上,远方的机器名为pluto ,仅有一个显示器,指定screen number为 0:
pluto:0.1
. DECnet网路上,display number为 1,预设screen number 为 0:
vomvx2::1
如果在你的作业系统上,并未支持远方机器的操作,你可以藉著连接到saturn的终端机输入下面的命令: saturn% xterm -display venus:0.0
如 但由於你的作业系统事实上支援远方机器的功能,所以你毋需离开你的器便可完成上述的指定,命令如下: venus% rsh saturn xterm -display venus:0.0
注:命令可能因saturn不被允许存取venus 的显示器而失败,欲克服此种状况,输入命令:venus% xhost +
注:你可能需要非同步地执行rsh ,在命令列之後加 &,以背景工作方式执行, 但可能因为等待永远不会有的输入,shell 和rsh 间的交谈导致 rsh "block",为了克服此种情况,需修正命令为:venus% rsh saturn xterm -display venus:0.0 < /dev/null & 远方的机器 (这个例子是saturn) 并不需要有X server 在执行,甚至不需要有位元映像显示器,唯一的需求是能执行应用程式和支援网路通讯。
warning : Can't open display 可能的原因是不被允许或目标计算机上并没有Xserver在执行
设定预设显示器
如果你不明确地指定显示器名称,程式会以Unix环境变数DISPLAY 来决定使用哪一个显示器,在启动xterm 时,系统会设定这个变数的内容,所以大部
份情况下,你什麽都不必担心。
如果你remote-login其它的机器,在其间你执行X的应用程式,并希望回到你自己的机器上显示,那你必需明确地设定DISPLAY 变数,类似下面:
venus% rlogin saturn
Last login: Mon Nov 28 20:01:02 on console
... (在远方机器上的login banner)
saturn% (远方机器上的shell 提示)
saturn% setenv DISPLAY venus:0.0
saturn% xcalc &
换句话说,如果不设定DISPLAY 变数,则在saturn上执行的每一个X程式都必须包含 -display venus:0.0 选项。
控制存取你的显示器 -- xhost
我们前面提到过有时你无法连接到特定的显示器,通常的原因是你没有被许可,所以X否认你的存取。
X用很简单的结构控制存取:你指定一份可以存取你的显示器的主机(host)名单,在这些主机上执行的应用程式均可存取你的显示器,其它不在名单上的主机则不被允许。你可以用xhost 程式来控制存取:
允许一或多个机器存取: xhost + host1 [+host2...]
去掉允许一或多个机器存取: xhost - host1 [-host2...]
所有的机器均被允许存取: xhost + 换言之,所有的存取控制均被解除。
恢复存取控制:(通常因为曾经下了xhost + 的命令) xhost - 再度取得对存取的控制,只有先前明确地被允许的机器可供存取。
注意:存取控制应用於所有的处理 (process),而不只是针对其他使用者 所启动的处理,所以如果你透过远方的机器执行应用程式,而将显 示内容传回自己的机器,则你必需被授与存取权,否则会连接失败。
一个类比或数位时钟 - xclock -digital, 告诉 xclock 使用一个 24 小时的数字型
一个桌上型计算器 - xcalc
显示机器的负载平均 - xload
邮件通知程式 - xbiff rsh mars xbiff -file /var/spool/mail/smith -display venus:0 &
一些包含在 core 版本内的公用程式, 它们的主要功能和视窗
系统并无密切关系, 但使用它们却可提供一个相当不错的使用者介面 :
. Xedit - 一个以视窗为基础的 (window-based) 一般目的文字编辑器.
. Xman - 一个指南页 (manpage) 或系统文件的浏览工具.
. Xmh - 一个 mh 邮件处理程式的视窗前端 (front-end) .
找出通过随机迷宫的路径 - maze
担任指标的大眼睛 - xeyes
智慧盘游戏 - puzzle
列印一个大X语标 - xlogo
跳动的多面体 - ico
动态几何图样 - muncher 与 plaid
paint : 简单的绘图程式. (像一个画图程式, 但你可以对区域涂上纹理或颜色, 不只是线.)
xcolors : 一个可展示你的系统上所有颜色名称的好程式.
xfish : 设定鱼在你的整个背景视窗内游动. 有趣的部分是你可以用滑鼠
射击它们.
qix : 一个 qix 射击游戏的程式.
xmille : 和你玩一个 Mille Bournes 的牌戏.
xsol : 和你玩一个单人玩的牌戏.
xtrek : 一个令人著迷的太空游戏.
列出你的Xserver的特徵 -- xdpyinfo xdpyinfo 列出有关你的Xserver和server所控制萤幕之各种项目的资讯
获取有关视窗的资讯
有三个程式可以提供目前在你显示器上视窗的资讯。它们是从不同的角度看系统:
1. 列印视窗的阶层 -- xlswins
2. 对单一视窗详细的资讯 -- xwininfo
3. 列出视窗的性质 -- xprop
观察X的事件 -- xev