下一页 上一页 目录

3. 构建Kiosk环境

3.1 FVWM2

FVWM2 (FVWM,版本 2 -- www.fvwm.org) 是一款灵活、可靠且轻量级的 X Window 窗口管理器,它为创建 kiosk 环境提供了出色的可配置性。对于 kiosk 用途,您必须更改其一些默认设置。您需要修改 system.fvwm2rc 文件以移除诸如虚拟桌面、标题栏、退出控件等,从而留下一个相对简约的 FVWM 环境。由于 kiosk 是一个独立单元,因此修改系统范围的设置不会造成问题。

您还可以利用 FVWM 的可设置对象属性来使用 X Window 位图(xpm 文件)来遮盖 Netscape Navigator 中您不希望用户访问的部分。

您需要修改的 FVWM2 文件是 /etc/X11/fvwm2/system.fvwm2rc。(如果您使用的发行版与 Red Hat 不同,则此文件可能位于其他位置。)您可能需要在该文件中查找以下列出的部分。

/etc/X11/fvwm2/system.fvwm2rc

/etc/X11/fvwm2/system.fvwm2rc 中更改

DeskTopSize 2X2

DeskTopSize 1X1

这会消除虚拟桌面。

接下来,在 Default Styles 部分,更改

Style "*"           BorderWidth 7, HandleWidth 7

Style "*"           BorderWidth 0, HandleWidth 0, notitle, nohandles

这将禁用大多数正常的窗口控制。

将以下两行添加到 Default Styles 部分

Style "xdaliclock"  StaysOnTop
Style "sxpm"        StaysOnTop 

当您完成时,文件的 Default Styles 部分应如下所示

# default Styles:
#Style "*"           BorderWidth 7, HandleWidth 7
Style "*"           BorderWidth 0, HandleWidth 0, notitle, nohandles
Style "*"           Icon unknown1.xpm, Color lightgrey/dimgrey
Style "*"           MWMFunctions, MWMDecor, HintOverride
Style "*"           DecorateTransient, NoPPosition
Style "*"           IconBox 0 -10 -280 -1
Style "*"           FocusFollowsMouse
Style "*"           RandomPlacement, SmartPlacement
Style "xdaliclock"  StaysOnTop
Style "sxpm"        StaysOnTop

您可以使用 xdaliclock 和 sxpm 程序来覆盖 Netscape Navigator 的部分区域。“StaysOnTop”属性是关键要素。

接下来,找到以下四行并将其注释掉,如下所示

#AddToFunc InitFunction         "I" Module FvwmButtons
#+                      "I" exec xsetroot -mod 2 2 -fg \#554055 -bg \#705070

#AddToFunc RestartFunction "I" Module FvwmButtons
#+                      "I" exec xsetroot -mod 2 2 -fg \#554055 -bg \#705070

注释掉这些行将消除 FVWM2 中友好的任务启动器,这没关系,因为您追求的是尽可能简单的环境。

3.2 Netscape Navigator

与 Netscape Communicator 相比,Netscape Navigator 是设置 kiosk 的更好选择。由于更简单,因此需要隐藏的对象更少。

在 Microsoft Windows 下,Netscape Navigator 具有 kiosk 模式,该模式消除了 Navigator 的大部分控件,但在撰写本文时,Unix 版本的 Navigator 没有内置的 kiosk 模式。

但是,Unix 版本可以使用 -geometry 参数调用,该参数允许我们始终以全屏启动 Netscape。这构成了我们基于 Netscape 的 kiosk 策略的一部分。

您需要确定我们的 kiosk 屏幕分辨率。使用 19 或 20 英寸的显示器,我们发现 640x480 太大,1024x768 太小,而 800x600 对于公共观看来说刚刚好(您可能会有不同的决定)。一旦您确定了分辨率,就可以开始调整 Navigator 了。在本 HOWTO 的其余部分,我们假设分辨率为 800x600。如果您选择不同的分辨率,则需要进行相应的调整。

注意: Navigator 将在启动时由 root 用户调用,因此请在 /root/.netscape 目录下的 root 帐户下进行所有 Netscape 调整。

启动 Netscape 并单击 编辑,首选项 对话框。在 外观 下,选中“仅显示文本工具栏”。在 外观,字体 下,将等宽字体和变宽字体都调整为至少 14pt,否则屏幕显示对于舒适阅读来说太小。

首选项,Navigator 下,插入您的 kiosk 主页的 URL。如果您正在运行本地版本的 Apache 或其他 Web 服务器,请将其设置为 http://localhost/ 以进行顶级访问,或者根据需要更深入到 html doctree 中。

保存这些选项,然后单击 Navigator 菜单栏上的 查看。取消选择 个人工具栏位置栏

注意到界面变得更加像 kiosk 了吗?当您退出 Navigator 时,这些设置将被保存。

3.3 Navigator 的覆盖蒙版

如果您仔细观察调整后的 Navigator 屏幕,您会看到四个需要覆盖和保护免受鼠标或轨迹球点击的区域

  1. 顶部的工具栏
  2. 导航工具栏左侧的扭曲器
  3. 导航栏的其余部分,在“主页”右侧
  4. Navigator 左下角的安全密钥。

这是您需要遮盖的区域的粗略示意图

+---------------------------------------+
|            # 1 Toolbar                |
+--+------------+-----------------------+
|#2|            |  #3 Navbar            |
+--+            +-----------------------+
|                                       |
|                                       |
|                                       |
|                                       |
|                                       |
|                                       |
|                                       |
|                                       |
|                                       |
|                                       |
+--------+                              |
|#4 Key  |                              |
+---------------------------------------+

为了遮盖顶部区域(#1-3),我们将需要三个图形图像。为了遮盖安全密钥(#4),我们将使用 xdaliclock。

创建图形蒙版

创建图形蒙版以覆盖区域 #1-3 的最简单方法是抓取全 800x600 模式下 Navigator 的屏幕截图,然后裁剪出对应于 #1-3 的区域。我使用了 GIMP 来完成此操作。

然后,您可以重新设计基本图形,根据需要更改颜色,或在上面放置您自己的徽标。将它们另存为

  1. topbar.xpm
  2. navleft.xpm
  3. navright.xpm

xpm 格式是原生的 X Window 位图格式。您将使用 X Window 程序 sxpm 将它们放置在屏幕上。

创建像素数量正确且在监视器上放置位置正确的蒙版需要一些实验。为了您的方便,我已将我们创建的 xpm 文件以及我们的配置文件放在以下网站:http://www.rom.on.ca/kiosk/HOWTO/。您可能会发现下载我们的蒙版并将其用作您自己图形的起点会更简单。

3.4 /root/kiosk.xinitrc

正如您通常会为个人使用创建 .xinitrc 文件一样,您必须为我们的 kiosk 应用程序创建一个 X Window 会话初始化文件。以下脚本实现了许多功能

这是运行 kiosk 的主文件。


#!/bin/sh
# kiosk.xinitrc -- Initialization script for kiosk X Window session
 
# Start screensaver
/usr/X11R6/bin/xscreensaver-command -exit
/usr/X11R6/bin/xscreensaver &
 
# Overlay over Navigator (mask #1)
sxpm /root/navtop.xpm &
 
# Overlay small graphic over Toolbar twister - left-hand side (mask #2)
sxpm -g +0+23 /root/navleft.xpm &
 
# Overlay larger graphic to cover everything to the right of
# Home on the Toolbar (mask #3)
sxpm -g +275+23 /root/navright.xpm &
 
# Place xdaliclock over top of Netscape security key, lower lhc (mask #4)
/usr/X11R6/bin/xdaliclock -g 38x20+0+578 -font fixed -noseconds \
-bg gray -fg black &
 
sleep 2

# Start fvwm2 window manager
fvwm2 &
 
# restart netscape if it ever exits
while true ; do
        if [ -f /.netscape/lock] ; then
                rm /.netscape/lock
        fi
        /usr/bin/netscape -geometry 800x600
done
 
# This should never be reached

3.5 /root/xkiosk

您现在可以开始测试您的 kiosk 设置了。由于您需要重复手动执行此操作,以及从初始化脚本执行此操作,因此请创建以下内容作为名为 /root/xkiosk 的 shell 脚本


/usr/X11R6/bin/xinit /root/kiosk.xinitrc -- /usr/X11R6/bin/X \
-xf86config /root/kiosk.XF86Config bc

因为您将经常进行测试,并在稍后自动化启动时重复使用它,所以请将此命令创建为名为 /root/xkiosk 的 shell 脚本。请务必 chmod ug+x 它。


下一页 上一页 目录