简述
FVWM95 的全名是 F? Virtual Window Manager,是专门为 X11 所设计,外形和用法都类
似 Windows 95 的一个 window manager。□作者的说法,那个 F 所代表的意思是什麽,
他自己也忘记了。而 FVWM95 是由 FVWM 所衍生出来的,FVWM 又是从 twm 衍生出来的。
fvwm95 提供了 Virtual Desktop 和 Virtual screen,因此如果你的记忆体够大的话,
要多大的桌面就有多大的桌面,同时它也和95一样,可以经由 keyboard 来控制 window,
包括window的移动和基本操作等等,keyboard都以可胜任。它同时也提供了
Configuration command 和 build-in command,方便我们随时作更动。另一个特性是它
的 focus 方式,它提供了 Sloppy-focus 和 per-window focus 的功能。
Sloppy-focus 是 focus-follows-mouse,当mouse由 window 移到 root window 时,
focus 并不会移动,直到 mouse 移到其它 window。
版权
fvwm95 既是 fvwm 所衍生的,当然就□袭了 fvwm 的版权.
fvwm 是由 Evan and Sutherland Computer Corporation 於1988年所取得版权。
而在1989年由麻省理工学院取得版权。在1993年和1994年由Robert Nation取得版权。
Fvwm95的window
Fvwm 的 window 就像95一样,提供了 3D-look 的外观,window 大小的调整可
经由将 mouse 移到 window 的角落,此时会出现一个小L的 mouse cursor,利用它来
控制 window 的大小。当将 mouse 移至 title bar 时,按下 mouse 左键便可以移动
此 window,按下中键可以显示出 window 的控制视窗(包含window的移动,放大、缩小、
关闭、删除等等),当然,当你将 mouse 移到 titile bar 的左方的小图示,并按下
mouse 任一键也会显示出 window operation 的视窗。
Title-bar 里最多可以 10 个 button。而这些 button 都可以经由 user 自
行定义,default 值是在左方的小图示。其功能如上述.
Virtual Desktop
FVWM95 提供了多重虚拟桌面给 user 使用。这个 virtual desktop 可以比真
实的萤幕还大。同时也可以利用 DeskTopSize 的内部指令来控制。当然每个Desktop的
大小必须要一致。所有在 desktop 内的 window 都可经由 pager(一个小形□ widnow
desktop)看到。Pager 是一个程式模组。之所以会做成 module 是因为它并不是 window
使用的必要程式。所有开启的 window 也可利用 FvwmWinList 模组来显示在一个 popup
menu中。
Sticky 是指将某个 window 锁定在 desktop 的某个位置,这种功能通常用在
将某种程式 window 锁住,如可以将 clock 锁在某地。当然它也适用在 ICON 上。
Window 的 geometry 是指相对於目前的 viewport。例如:
xterm -grometry +0+0
就会将 xterm 开在 screen 可见的部分的最左上角的位置。当然我们也可以利
用它来设定 widnow 的位置,但这个位置是对整个 Virtual desktop 而言,而非对单独
的 desktop 而言。
或者我们也可以使用下列的方式:
xterm -geometry -5-5
便可使 xterm 的右下角离 window 的右下角5个 pixel。但并非所有的应用程式
都支援这个负数的指定方式。
初使化(INITIALIZATION)
在作初始化的时候FVWM95会先找设定档 (configuration file) 来作一些设定。
首先 fvwm95 会在使用者的目录中找一个叫做 .fvwm2rc95 的档案。如果在使用者的目录
中找不到这个档案,它就会找 /usr/lib/X11/fvwm/.fvwm2rc95,如果再找不到,那
fvwm95就无法执行了。
fvwm95 会设定两个可以让子视窗继□的环境变数。一个是$DISPLAY,用来描述
那个 display 要使用 fvwm95,它可以是 unix:0.0 或 :0.0。但是它在透过 rsh 传递
时并不能做得很好。所以有另一个 $HOSTDISPLAY 也可以使用,它是透过 TCP/IP 的方式
(即使是在local)。fvwm95 可以利用两种 Function 来作初始化的工作:InitFunction
和 RestartFunction,很明显的,一个是经由刚开始进入 X 时作设定,一个是经由
restart来作设定。这些都可以经由rc档中的 AddToFunc 功能来作个性化(customized)
来起动 modules、xterm 或其它你想要经由 fvwm95 来起动的程式。
图示(icons)
基本的 FVWM95 设定是使用黑白的位元图示,就好像 twm 一样。但如果 XPM 有
内建的话,你就可以使用类似 ctwm,MS-windows,machitash 之类的图示了,如果
SHAPE 和 XPM 的选项都有选择的话,那就会有彩色且有形状的图示出来。
模组(modules)
模组是一种类似分别执行的 process 分离程式(seperate program),但是却把
执行指令传给 fvwm95 去执行。使用者可以自行撰写 module 而不会影响整个 fvwm95。
模组必须包含在 fvwm95 内,这样才能在 fvwm95 和 module 之间建立两个管线
(pipe)互相连系。在 X 的执行阶段,Module 可以经由内建的指令来将 module 包含进来
。Module 可以一直存在 X 中执行,也可以执行一段工作,然後离开。如果 module 正在
执行时,X 被要求离开,那麽 fvwm95 会先关掉与 module 间的 pipe,而後再等待
module 的离开回应。若 fvwm95 等了30秒还没收到回应,那它就会自动结束。可以同步
执行的 module 的数目是受限於作业系统的可同时开档数。通常在 60-256 之间。
M4 preprocessing 和 cpp preprocessing
fvwm95 提供了 M4 和 C 的preprocess。你可以使用 M4 或 C 来对你的
.fvwm2rc95 作前置处理。
自动上升(auto-raise)
当 mouse 移到 window 时,window 可以自动上升或经数个亳秒後再上升。这
是 FvwmAuto 这个 module 所提供的功能。
设定参数
Fvwm95也提供了执行参数, 但在此不予介绍.
设定档
设定档是用来设定 mouse、按键、颜色、虚拟萤幕大小,和其它相关事项。初始
的设定档是 .fvwm2rc95。是利用内建的 READ 命令来读取。
若某行的开头是#的话,那麽那一行是没有作用的。若开头是*,那麽这一行是表
示用来包含 module 的设定命令。Fvmw95 使得设定命令(configuration commands)和内
建命令(built-in commnads)没有差别,所以刚才所提到的内建命令可以直接加在任一行
上,让 fvwm95 去执行它。或者是加在 menu 上或者是加在某个 mouse buttom 或
keyboard key 上,让使用者在有需要时才呼叫出来。
我们附了一个.fvwm2rc95在後面,并加以说明。请参照附一。
#
# .fvwm2rc95 example configuration file for fvwm95-2.0.41
# .fvwm2rc95 的设定档□例, 适用於fvwm95-2.0.41版
#========================================================================#
#
# Fonts - one for window titles, another for icons, and another for the menus
# 字形 --- 一个用来设定视窗标题, 第二个给图示说明, 第三个给menu用.
WindowFont -adobe-times-bold-i-*-*-14-*-*-*-*-*-*-*
IconFont fixed
MenuFont -adobe-helvetica-medium-r-*-*-*-140-*-*-*-*-*-*
#
# Set the default window colors. The syntax is:
# DefaultColors winforecolor winbackcolor titleforecolor titlebackcolor
# where:
# winbackcolor is the background (border) color of all windows,
# including the menu windows
# winforecolor is used for the menu text
# titlebackcolor is the background color used for title bars of
# non selected windows
# titleforecolor is the color of the title text of non selected windows
#
# 设定内定的视窗频色. 语法如下:
# DefaultColors 视窗前景颜色 视窗背景颜色 视窗标题前景颜色 视窗标题背景颜色
# 视窗前景颜色 : 给menu的文字用的颜色
# 视窗背景颜色 : 给所有视窗用的背景(边界)颜色, 包括menu视窗
# 视窗标题前景颜色 : 非使用中的视窗标题文字颜色
# 视窗标题背景颜色 : 非使用中的视窗标题背景颜色
#
DefaultColors Black #c0c0c0 #c0c0c0 grey51
#
# Text and background color for the title bar of the active (selected) window
# 使用中的视窗之文字和背景颜色
#
HilightColors yellow #101080
#
# Text and background color for the title bar of sticky windows
# 定位视窗之文字和背景颜色
#
StickyColors blue #60c080
# You can also use the Style command to set the colors of individual
# title bars of some non-selected windows
# 你也可以使用 Style 命令来设定其它非使用中视窗的标题颜色
#
#Style "*" ForeColor #c0c0c0
#Style "*" BackColor grey51
#========================================================================#
#
# Set up the major operating modes
# 设定主要的操作模式
#
Style "*" MouseFocus
#Style "*" SloppyFocus
#Style "*" ClickToFocus
# Comment the above and uncomment one of the following if you prefer
# focus follow mouse.
# 将上述之一解除标示以选择如何选择视窗
# Style "*" MouseFocus : 当mouse移到视窗时即可使用该视窗
# Style "*" SloppyFocus : 当mouse移到视窗, mmmm...看不出和MouseFocus有何不同?
# Style "*" ClickToFocus : 当mouse移到视窗, 且在标题列按一下mouse左键,即可使用该视窗
# If we use the FvwmTaskBar we don't need the icons :-)
# Style "..." Icon are also commented below.
# 如果我们使用FvwmTaskBar, 那我们就不必用 icon了, 不是吗? Ya......
# 至於其它有关Style指令的说明, 请参考man fvwm95-2
# 其格式为 :
# Style "视窗名称" 功能 ------ 其视窗名称可使用万用字元
Style "*" NoIcon
Style "*" MWMFunctions
Style "*" HintOverride
Style "*" MWMDecor
Style "*" DecorateTransient
OpaqueMoveSize 100
# 视窗移动时视窗显示之百分比, 其百分比是移动视窗与整个视窗的比例
# 0 :只显示边界 ---- 100: 完全显示
EdgeScroll 100 100
# 虚拟桌面之卷动方式, 当mouse 游标移到桌面之某百分比时, 桌面便会跳到其它桌面
# EdgeScroll 水平比例 垂直比例
EdgeResistance 10000 0
# 虚拟桌面卷动之困难度与视窗移动之困难度
# 第一个数字是当mouse移到边界多少毫秒之後便移到下个虚拟桌面
# 第二个数字则表示视窗移动多少个pixel之後才会移到下个视窗
#
# RandomPlacement prevents user interaction while placing windows:
# RandomPlacement 可以让使用者在开新视窗时, 新视窗可随机选择位置出现
# SmartPlacement 则可以使新视窗在不占其它视窗的位置的地方出现
Style "*" RandomPlacement
Style "*" SmartPlacement
#
# NoPPosition instructs fvwm to ignore the PPosition field in window
# geometry hints. Emacs annoyingly sets PPosition to (0,0)!
# mmmm.....好像不是很重要.... 我找不到比较重要的说明.... ^{^
Style "*" NoPPosition
#========================================================================#
#
# Set the desk top size in units of physical screen size
# 设定虚拟桌面对於真实桌面的大小
# DeskTopSize 水平x垂直
DeskTopSize 3x2
#========================================================================#
#
# Module path and paths to the icons
# 模组的路径, 图示的路径
ModulePath /usr/X11R6/lib/X11/fvwm95-2/
PixmapPath /usr/include/X11/pixmaps/:/usr/lib/X11/mini-icons/
IconPath /usr/include/X11/bitmaps/:/usr/lib/TheNextLevel/pixmaps/
#========================================================================#
# Set the decoration styles and window options
# If compatible styles are set for a single window in multiple Style
# commands, then the styles are ORed together. If conflicting styles
# are set, the last one specified is used.
# 设定视窗选项和美化功能, 如果对於单一视窗有相容的格式的设定, 那麽格式就会以混合的方式显现, 若有相冲突的格式设定, 那就会以最後设定的为准.
# These commands should command before any menus or functions are defined,
# and before the internal pager is started.
# 这些设定必须在menu或function被定义以前设好, 而且也要在内部的pager开始以前设好
#
# Default border and handle widths
# 内定的边界大小
Style "*" BorderWidth 4, HandleWidth 4
Style "Fvwm*" NoTitle, Sticky, WindowListSkip
Style "Fvwm Pager" StaysOnTop, NoHandles
Style "FvwmBanner" StaysOnTop
Style "FvwmButtons" NoTitle, NoHandles, Sticky, WindowListSkip,BorderWidth 3
Style "*lock" NoTitle, NoHandles, Sticky, WindowListSkip
Style "xbiff" NoTitle, Sticky, WindowListSkip
#
# Some mini-icons for the title bar
# 设定一些在标题列左方的小图示
Style "*" TitleIcon mini-x2.xpm
Style "*xterm*" TitleIcon mini-term.xpm
Style "rxvt" TitleIcon mini-term.xpm
Style "xcalc" TitleIcon mini-calc.xpm
Style "xsession" TitleIcon mini-bx2.xpm
Style "xv" TitleIcon mini-xv.xpm
Style "Netscape" TitleIcon mini-nscape.xpm
Style "xmag" TitleIcon mini-zoom.xpm
Style "textedit" TitleIcon mini-edit.xpm
Style "tkps" TitleIcon mini-run.xpm
Style "Ghostview" TitleIcon mini-gv.xpm
Style "Xcolorsel" TitleIcon mini-colors.xpm
Style "IDL*" TitleIcon mini-zoom.xpm
Style "xeyes" TitleIcon mini-eyes.xpm
Style "*fm*" TitleIcon mini-filemgr.xpm
# xman resource names
# xman 用的小图示
Style "topBox" TitleIcon mini-book1.xpm
Style "help" TitleIcon mini-book2.xpm
Style "manualBrowser" TitleIcon mini-book2.xpm
# xpaint resource names
# xpaint 用的小图示
Style "xpaint" TitleIcon mini-paint.xpm
Style "