字体名称和字体加载(FONT NAMES AND FONT LOADING)
可以使用Font和IconFont Style,Font MenuSytle和DefaultFont命令来指定窗口标题(window title)、图标标题(icon title)、菜单(menu)和geometry窗口(geometry window)使用的字体。同样,所有使用文本的模块都有指定字体的配置命令。所有这些styles和commands使用字体名作为参数。这个部分解释了什么是字体名以及fvwm加载哪些字体。
首先,你可以使用所谓的常用字体名称(usual font name),例如:
-adobe-courier-bold-r-normal--10-100-75-75-m-60-ISO8859-1
-adobe-courier-bold-r-normal--10-*
-*-fixed-medium-o-normal--14-*-ISO8859-15
就是说,你能够使用一个X Logical Font Description(缩写为XLFD)。第一个匹配这个描述(description)的字体将被加载和使用。这依赖于你的字体路径和locale,匹配loclae字符集(charset)的字体优先级要更高。例如:
-adobe-courier-bold-r-normal--10-*
如果locale字符集为ISO8859-1,fvwm会加载下面的字体:
-adobe-courier-bold-r-normal--10-*-ISO8859-1
locale字符集为ISO8859-15时,会加载:
-adobe-courier-bold-r-normal--10-*-ISO8859-15
字体名可以作为扩展的XLFD给出,XLFD字体名称列表使用逗号隔开,例如:
-adobe-courier-bold-r-normal--14-*,-*-courier-medium-r-normal--14-*
fvwm会尝试去匹配每个字体名,直到发现匹配locale字符集的字体,如果匹配不成功,则将不考虑字符集的约束去尝试每个字体名。
关于XLFD更多的细节可以参看X手册,X Logical Font Description Conventions文档、XLoadFont以及XcreateFontSet的手册。有一些有用的工具:xlsfonts,fontsel,xfd和xset。
如果支持xft,你可以指定带有true type(或Type1)字体前缀“xft:”的Xft字体名,例如:
"xft:Luxi Mono"
"xft:Luxi Mono:Medium:Roman:size=14:encoding=iso8859-1"
匹配上述名称的第一个字体被加载。这依赖于Xft1的XftConfit配置文件和Xft2的/etc/fonts/fonts.conf文件。可以参考Xft手册页和fontconfig手册页。“xft:”后面紧跟的是family字段,在上面的第二个例子中,Luxi Mono是Family(其它的XFree TTF families:"Luxi Serif", "Luxi Sans"),Medium是权重(Weight)(其它的weight可以是:Light,DemiBold,Bold,Black)。
为了决定哪个Xft字体被真正的加载,你可以在fvwm启动前设置环境变量XFT_DEBUG=1,并观察错误日志。你也可以使用fc-list命令列出可用的Xft2字体。不管如何,Xft支持只是实验性的。显示的质量依赖于XFree和freetype的版本以及你的显卡。
你可以在Xft字体后面添加XLFD字体,比如:
xft:Verdana:pixelsize=14;-adobe-courier-bold-r-normal--14-*
如果Xft字体加载不成功,或者fvwm不支持Xft,fvwm将加载字体"-adobe-courier-bold-r-normal--14-*"。这使得fvwm配置文件可移植。
字体和字符串编码(FONT AND STRING ENCODING)
字体阴影效果(FONT SHADOW EFFECTS)
字体可以有3D效果。在字体名称的开始添加:
Shadow=size [offset] [directions]:
size表示阴影像素的数目,offset是阴影偏移字母边缘的像素数目,默认offset为0。directions表示阴影偏离字母的方向。directions是用空格隔开的方向列表。
N, North, Top, t, Up, u, -
E, East, Right, r, Right, r, ]
S, South, Bottom, b, Down, d, _
W, West, Left, l, Left, l, [
NE, NorthEast, TopRight, tr, UpRight, ur, ^
SE, SouthEast, BottomRight, br, DownRight, dr, >
SW, SouthWest, BottomLeft, bl, DownLeft, dl, v
NW, NorthWest, TopLeft, tl, UpLeft, ul, <
C, Center, Centre, .
阴影将在指定的方向显示。All相当于所有方向。默认的方向是BottomRight。使用Center方向时,阴影将环绕整个字符串。
阴影效果仅仅和 colorset 一起工作时有效。阴影的颜色使用Colorset命令的fgsh选项来定义。参考COLORSETS部分。
BI-DIRECTIONAL TEXT
快捷键(KEYBOARD SHORTCUTS)
几乎所有的窗口管理器操作都能使用键盘来完成,因此不使用鼠标完全是有可能的。除了沿虚拟桌面滚动需要绑定Scroll命令到适当的按键外,Popup,Move,Resize和其它任何命令能和任何按键绑定。一旦一个命令已经开始,可以使用up,down,left,right箭头移动光标,按下return键终止。按下shift键使光标以更大的步骤(larger step)移动,按下ctrl键使光标以更小的步骤(smaller step)移动。标准emacs和vi光标移动控制(n,p,f,b和j,k,h,l)能够取代箭头键。
会话管理(SESSION MANAGEMENT)
Fvwm依照X 会话管理协议(X Session Managerment Protocol)支持会话管理(session management)。它保存和恢复window position, size, stacking order, desk, stickiness, shadiness, maximizedness, iconifiedness for all windows。此外,还将保存一些全局声明。
Fvwm不保存有关styles, decors, functions or menus的信息。如果你在会话期间对改变了它们(例如,使用Style命令或使用各种模块),在重启会话后,这些改变将不再有效。你可以通过将改变添加到配置文件里来避免。
注意当使用多屏显示的时候可能会有下面的异常:第一次启动fvwm时,fvwm通过在每个屏幕上fork自己的一个copy来管理所有的屏幕,每个copy知道它的parent,发送Quit指令到fvwm的任何一个实例可以杀死master并进而杀死fvwm的所有copy,当你保存和重启这个会话的时候,会话管理器在每个屏幕上产生(bring up)fvwm的一个copy,但这时,它们是作为单一的实例存在并仅仅管理一个屏幕,因而Quit仅仅杀死命令被发送的那个copy。这可能不是一个严重的问题,因为你应该总是通过会话管理器来退出一个会话。必要的话,
Exec exec killall fvwm
将杀死fvwm的所有copy。
布尔参数(BOOLEAN ARGUMENTS)
很多命令使用一个或多个布尔参数。输入“yes”,“on”,“true”,“t”和“y”相当于true,同时“no”,“off”,“false”,“f”和“n”相当于false。一些命令可以使用“toggle”参数, “toggle”为触发状态时表示这个特点被禁止。
条件命令和返回代码(CONDITIONAL COMMANDS AND RETURN CODES)
参考CONDITIONAL COMMANDS部分。