「FVWM的初始化」

在初始化过程中,首先fvwm会搜索配置文件,及其他的东西。Fvwm首先使用该命令搜索配置文件

Read config

这将在$FVWM_USERDIR和$FVWM_DATADIR变量指定的目录中查找文件配置,如“Read”中所述的。如果读取失败,FVWM将执行一些向后兼容性的操作来读取配置文件,以下是在默认安装中配置文件的查找顺序,但是仅使用第一个找到的文件:

$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

最后五个已经不再推荐使用了。

如果没有找到配置文件,则在根窗口上的鼠标左键、帮助、F1键会显示用于创建启动配置文件的菜单和表单。

Fvwm设置两个由其子代继承的环境变量:$DISPLAY,描述了运行fvwm的显示器。$DISPLAY可能是unix:0.0或者0.0,当通过ssh传递给另一台机器时,可能无法正常工作,所以$HOSTDISPLAY被设置为网络就绪的显示描述。 $HOSTDISPLAY总是使用TCP/IP传输协议(即使是本地连接),所以$DISPLAY应该用于本地连接,因为它使用更快的Unix域套接字。

如果你想用fvwm启动一些应用程序或模块,你可以简单的在配置文件中试用

Exec app

或者

Module FvwmXxx

,但是不推荐这么做,除非你知道这么做的含义。读完整个配置文件后,再启动应用程序或模块通常是很重要的,因为它包含可能影响窗口外观和功能的样式或模块配置。

在fvwm启动时,启动应用程序或模块的标准方法是将它们添加到初始化函数(通常为StartFunction或InitFunction),这样它们只有在fvwm完成读取、执行配置文件后才会启动。

Fvwm有三个特殊的初始化函数:

  • StartFunction,在启动和重新启动时执行;
  • InitFunctionRestartFunction,它们执行在StartFunction后面,分别在启动和从新启动时执行。

这些函数可以使用AddToFunc命令(稍后介绍)在用户的配置文件中进行自定义,以启动相应的模块、xterms、其他的希望由fvwm启动的任何内容。

Fvwm还有一个特殊的退出函数:ExitFunction,在退出之前退出或重启时执行。它可以用来明确杀死模块,或者执行其他操作。

如果fvwm在Session Manager下运行,则会执行函数SessionInitFunctionSessionRestartFunction,而不执行InitFunction和RestartFunction。这有助于定义一个良好的用户配置文件,来处理有没有Session Manager的情况,也可以用于决定在有无Session Manager的时候是否加载某些模块。通常在“Session*”函数中启动xterm或其他应用程序是一个坏主意。同样的,应该使用SessionExitFunction来代替ExitFunction。

DestroyFunc StartFunction

AddToFunc StartFunction

+ I Module FvwmPager * *

+ I Module FvwmButtons

DestroyFunc InitFunction

AddToFunc InitFunction

+ I Module FvwmBanner

+ I Module FvwmIconMan

+ I Exec xsetroot -solid cyan

+ I Exec xterm

+ I Exec netscape

DestroyFunc RestartFunction

AddToFunc RestartFunction

+ I Module FvwmIconMan

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