Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2918358
  • 博文数量: 471
  • 博客积分: 10012
  • 博客等级: 上将
  • 技术积分: 5255
  • 用 户 组: 普通用户
  • 注册时间: 2006-04-10 23:58
文章分类

全部博文(471)

文章存档

2011年(3)

2010年(61)

2009年(52)

2008年(212)

2007年(69)

2006年(74)

我的朋友

分类: LINUX

2008-04-17 13:39:39

Fvwm中文手册-FVWM(一)

Fvwm

名称(NAME):

Fvwm -X11虚拟窗口管理器(F? Virtual Window Manager for X11

概要(SYNOPSIS):

fvwm [-c config-command] [-d displayname] [-f config-file] [-r] [-s [screen_num]] [-V] [-C visual-class | -I visual-id] [-l colors [-L] [-A] [-S] [-P]] [-D] [-h] [-i client-id] [-F state-file] [--debug-stack-ring] [-blackout]

描述(DESCRIPTION):

FvwmX11的窗口管理器它致力于最小的内存消耗并提供窗口边框的3D效果和虚拟桌面。

Fvwm提供一个大的虚拟桌面virtual desktop和能被独立或一起使用的多个独立桌面multiple disjoint desktops。虚拟桌面让你的显示屏幕看起来好像非常大,多个独立桌面让你好像有多个屏幕同时在工作,但它们之间互相独立。

Fvwm提供键盘加速(keyboard accelerators),使你仅使用键盘便可完成多数窗口管理器功能,包括移动和缩放窗口,菜单操作和快捷键。

在配置命令(configuration commands)和动作命令(action commands)之间,大多数窗口管理器都有区分,配置命令典型地实现字体、颜色、菜单内容、按键和鼠标的功能绑定等设置,而动作命令主要完成窗口提升(raise)和降低(lower)等功能。Fvwm没有区分这两者的差别,它允许在任何时候改变任何事情。

在Fvwm和其它窗口管理器之间显著的不同还有SloppyFocusNeverFocus焦点策略的引入。焦点策略可以为不同组的窗口分别指定。使用SloppyFocus时,窗口当鼠标指针移进它们时获得焦点,并保留焦点直到它被其它窗口获得。这样,当鼠标指针移进根窗口(root window)时原来拥有焦点的窗口不会丢失焦点。NeverFocus可以使窗口从不获得焦点(例如xclock, oclock, xbiff, xeyes, tuxeyes),比如,如果SloppyFocus类型的终端窗口拥有焦点,当鼠标指针移动进一个NeverFocus窗口时,它的焦点不会被剥夺。

选项(OPTIONS):

下面是能够被fvwm识别的命令行选项:

-i | --clientid

    id  当fvwm被一个会话管理器(session manager)启动时,id选项被使用,用户不应该使用它。

-c | --cmd

    config-command  使fvwm采用config-command取代Read config作为它的初始化指令。

-d | --display

    displayname  操纵名称为displayname的显示器(display),而不是环境变量$DISPLAY所表示的。

-D | --debug

    使X会话(X transactions)运行在同步模式,这将显著的降低效率,但是确保了fvwm的内部错误能够被纠正。这也使fvwm能够输出运行时的调试信息。

-f config-file

    指定fvwm的配置文件,取代~/.fvwm/config作为初始化配置文件。这相当于-c 'Read config-file'。

-h | --help

    显示fvwm的用法帮助。

-r | --replace

    尝试接管正在运行的另外一个窗口管理器,这要求那个窗口管理器必须ICCCM 2.0兼容,否则它将不起作用。

-F | --restore

    state-file  当fvwm被一个会话管理器启动时使用这个选项。用户不应该使用它。

-s | --single-screen

    screen_num】 多屏显示时,使fvwm仅仅运行在 $DISPLAY 指定的显示器上或者使用-d选项所指定的显示器上。正常情况下,多屏显示时,fvwm尝试在所有显示器上启动。

-V | --version

    在stderr上显示fvwm的版本号。也会显示一些有关readline、rplay、stroke、xpm、png、gnome hints、EWMH hints、session management,bidirectional text等支持信息。

-I | --visualid

    id  使fvwm使用id作为窗口边框和菜单的虚拟id(visual id)。id可以使用十进制或十六进制。参看xdpyinfo的手册页。

-l | --color-limit

    limit  这个选项仅当屏幕显示为256色或更少并且带有动态视觉效果时才有用。

-L | --strict-color-limit

    如果屏幕显示为256色或更少并且带有动态视觉效果时,使fvwm使用它自己的调色板。

-P | --visual-palette

-A | --allocate-palette

-S | --static-palette

-blackout

    这个选项仅为向后兼容而提供。

--debug-stack-ring

    这个选项仅被开发者使用。

窗口剖析ANATOMY OF A WINDOW):

Fvwm 为多数窗口加上修饰边框。边框(border)包括每一边的栏(bar)和每个角落的L形(L-shaped)部分,还有显示窗口名称的标题栏(title-bar),另外,还有多达10个标题栏按钮(title-bar buttons)。顶部、四周和底部的bar被称作side-bars,角落部分被称作frame。

默认的,在frame或side-bars拖拉鼠标左键将进行窗口缩放。拖拉鼠标右键将进行移动操作。在border上单击会执行raise/lower操作。

标题栏按钮的作用完全由用户自定义。非常流行的配置是左边的一个按钮用来弹出窗口操作菜单,右边的两个按钮用来图示化(iconify)和最大化(maximize)窗口。另外一个比较流行的配置是在右边增加一个关闭按钮。使用的标题栏按钮的数目依赖于有没有鼠标动作(mouse action)和它绑定。参看下面的Mouse指令部分。

虚拟桌面(THE VIRTUAL DESKTOP):

Fvwm提供多个虚拟桌面供用户使用。显示屏幕(screen)只是一个桌面(desktop)的视口,即可见部分,桌面可能比显示屏幕更大。可以有几个不同的桌面供访问。因为每个桌面可能比物理显示屏幕大的多,将它们划分成mxn页有利于查看。

虚拟桌面的大小可以在任何时候通过 DeskTopSize 命令改变。所有的虚拟桌面必须有同样的大小。桌面的总数可以不必指定,但它有40亿的上限。所有的窗口都能够在 FvwmPager(桌面的微型视图)里面观察到。pager模块只是一个辅助工具,对于窗口管理器来说并不是必须的。窗口也可以依照它们的位置在一个称作 FvwmWinList 的窗口列表里列出。

Fvwm以层(layer)的方式将窗口叠放在桌面上,位于更低层的窗口从不和位于更高层的窗口相混淆。窗口位于的层可以使用 Layer 指令改变。层的概念是fvwm旧版本里 StaysOnTop 标记的扩展。StaysOnTop和StaysPut两个style选项现在通过把窗口放在合适的层里来实现,同时增加了之前所没有的StaysOnBottom 选项。

Sticky 窗口总是在屏幕上显示,好像粘在上面一样。这对于显示像clocks和xbiffs那样的应用非常方便,运行类似的应用时它将总是显示在屏幕上。如果需要图标也可以设置成stick。

窗口的几何位置(geometry)是相对于当前视口(viewport)来说的,即:

    xterm -geometry +0+0

表示在显示屏幕的左上角创建一个窗口。相对于虚拟桌面来指定窗口的几何位置是允许的,不过它可能会超出显示屏幕。例如:如果物理屏幕尺寸为1000x1000,虚拟桌面大小为3x3,当前视口是在桌面的左上角,调用:

    xterm -geometry +1000+1000

将会在恰好超出屏幕的右下角的地方放置窗口。将鼠标移动到屏幕右下角,并等候它滚动到下一视图时,将看到这个窗口。下面的指令

    xterm -geometry -5-5

在距显示屏幕右下角5个像素的位置放置窗口。并不是所有的窗口都支持这样设置,你可能会发现一些不符合自己预想的情况。

有几种方法可以将窗口放在当前桌面或当前页之外的地方。上面提到的几何位置方法(指定比屏幕物理尺寸更大的x、y坐标)受到是相对于当前视口进行位置解析的限制,可能不会达到预想的效果,除非你总是从同一页调用应用程序。

把窗口放在不同页的更好的方法是,在你的配置文件里使用StartsOnPage StartsOnScreen style标记。这样的话,放置的效果是比较理想的,并不依赖于你在虚拟桌面上的当前位置。

一些能够解析标准X命令行参数和X资源的应用,比如xterm和xfongsel,允许用户在命令行指定开始桌面和页:

    xterm -xrm "*Desk:1"

将在桌面1启动xterm;

    xterm -xrm "*Page:3 2 1"

将在桌面3的(2,1)页启动xterm。并不是所有的应用都能够使用这样的选项,但是你能够通过在.Xdefaults文件里添加下面的语句达到同样的效果:

    XTerm*Desk: 1

    XTerm*Page: 3 2 1

多屏显示USE ON MULTI-SCREEN DISPLAYS):

如果没有指定-s命令行参数fvwm自动在每个显示器上启动。每个启动的fvwm都被独立对待。在每个显示器上重启fvwm将互不影响。指令

    EdgeScroll 0 0

在多屏显示时被强烈推荐。你可能需要在每个显示器上分别退出,才能完全的退出X会话。不要把它和Xinerama支持相混淆。

XINERAMA支持(XINERAMA SUPPORT

Fvwm支持Xinerama扩展,类似于多屏显示但允许在屏幕之间移动窗口。如果fvwm编译时添加了Xinerama支持,则在通过Xinerama方式支持和使用多屏显示的X server上运行时,Xinerama将被使用。没有使用这个选项时,整个桌面被当作一个大的屏幕。EdgeResistance  命令明确的指定了,在两个Xinerama屏幕之间移动窗口通过屏幕边界时的阻力值explicit resistance value。Xinerama支持可以在配置文件里使用Xinerama命令打开和关闭。很多模块和命令能够很好的与Xinerama一起工作。

在支持X格式geometry的地方,fvwm的Xinerama扩展允许通过扩展geometry来指定一个屏幕。为了这个目的,需要在geometry的末尾添加‘@’,并于‘@’之后紧跟一个屏幕号(screen number)或一个字母。字母为‘g’时表示全局屏幕(由所有Xinerama屏幕组成的矩形),字母‘p’表示第一个屏幕,字母‘c’表示当前屏幕(鼠标指针当前所在的那个屏幕)。如果X server不支持Xinerama或者仅有一个屏幕被使用,这个字母(screen bit)将被忽略。

    Style * IconBox 64x300-0-0@p

能够配置Xinerama支持使用一个primary屏幕。Fvwm能够在这个屏幕上放置新的窗口和图标。primary屏幕认为屏幕0,但可以使用XineramaPrimaryScreen命令改变。

初始化(INITIALIZATION)

初始化期间,fvwm需要搜索配置文件,文件的格式下面将描述。fvwm首先使用下面的命令搜索配置文件:

    Read config

它将在$FVWM_USERDIR $FVWM_DATADIR目录下面搜索config文件,如果搜索失败,则将继续搜索更多的文件。下面是初始化时默认的查找路径,只有第一个发现的文件被使用:

         $HOME/.fvwm/config

         /usr/local/share/fvwm/config

 

         $HOME/.fvwm/.fvwm2rc

         $HOME/.fvwm2rc

         /usr/local/share/fvwm/.fvwm2rc

         /usr/local/share/fvwm/system.fvwm2rc

         /etc/system.fvwm2rc

注意,并不确保后面的五个以后仍然支持。

如果没有查找到配置文件,则在根窗口使用鼠标左键,Help或按键F1就会调出创建配置文件的菜单和表格。

fvwm设置了两个环境变量,$DISPLAY描述fvwm正在运行的显示器,可以是unix:0.0 :0.0,当通过ssh传递到其它机子的时候工作很不稳定。$HOSTDISPLAY设置为显示器的网络描述(network-ready description),它总是使用TCP/IP传输协议(即使在本地),因此本地连接时使用$DISPLAY速度将更快。

如果你希望启动一些应用或模块,可以添加下面的命令

    Exec app

    Module FvwmXxx

到你的配置文件里。但并不推荐这样做,注意仅仅当你知道你将做什么的时候这样做。在全部配置被读取之后启动应用或模块通常是比较危险的,因为它包含了风格(style)或模块配置,这些配置能够影响窗口的外观和功能。

在fvwm启动的时候启动应用或模块的标准方式是在初始化函数里添加它们(StartFunction InitFunction)。这样它们将仅在fvwm完全读取并执行配置文件之后被启动。

Fvwm针对初始化有三个专门的函数:StartFunction 在fvwm启动和重启时执行;InitFunctionRestartFunction分别于fvwm初始化期间和重启期间在StartFunction之后执行。可以在配置文件里使用AddToFunc 命令定义这三个函数,以便启动模块、xterms或者你希望被fvwm启动的什么。

Fvwm也有一个专门的退出函数:ExitFunction,它在退出的时候执行,可以使用它明确的杀死模块和应用。

如果fvwm在一个会话管理器上运行,函数SessionInitFunction SessionRestartFunction 取代InitFunctionRestartFunction函数被执行。这使用户的配置文件不管在不在会话管理器上运行都会很好的工作。一般来说,不要在“Session*”函数里启动xterms或其它的应用。同样,SessionExitFunction取代ExitFunction被执行。

         DestroyFunc StartFunction

         AddToFunc StartFunction

         + I Module FvwmPager * *

         + I Module FvwmButtons

 

         DestroyFunc InitFunction

         AddToFunc InitFunction

         + I Module FvwmBanner

         + I Module FvwmTaskBar

         + I xsetroot -solid cyan

         + I Exec xterm

        + I Exec netscape

 

         DestroyFunc RestartFunction

         AddToFunc RestartFunction

          + I Module FvwmTaskBar

 

         DestroyFunc SessionInitFunction

         AddToFunc SessionInitFunction

          + I Module FvwmBanner

 

         DestroyFunc SessionRestartFunction

         AddToFunc SessionRestartFunction

          + I Nop

你并不需要定义所有这些函数。注意所有这些函数可以使用StartFunction ExitFunction仿效例如

         DestroyFunc StartFunction

         AddToFunc StartFunction

          + I Test (Init) Module FvwmBanner

          + I Module FvwmPager * *

          + I Test (Restart) Beep

 

         DestroyFunc ExitFunction

         AddToFunc ExitFunction

          + I Test (Quit) Echo Bye-bye

          + I KillModule MyBuggyModule

          + I Test (ToRestart) Beep

阅读(3338) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~