CDE桌面环境中自动启动应用程序图形界面

彭胡媚
2023-12-01
Solaris可以图形用户界面和命令行两种方式来操作,一些熟悉Window桌面环境或者对Unix系统不熟悉的用户更倾向于使用X Windows系统。其中最常用的是Common Desktop Environment(通用桌面环境,简称CDE)和基于GNOMEJava Desktop System(简称JDS)。

有些客户的应用程序需要在桌面系统启动后直接显示自己的图形界面,不显示操作系统默认显示在桌面环境中的图标,启动栏,比如ATM机,写字楼中的多媒体显示屏等。 如何实现这一目的呢?以下是一个简单的例子,在Solaris10(32)操作系统中完成这样几个简单的功能:


  • 重起后直接以root身份进入CDE桌面环境,不需要通过Login画面输入用户名,密码。

  • 隐藏CDE Front Panel(前面板)

  • 点击鼠标右键后不显示WorkSpaceMenu(工作区菜单)

  • 不显示CDE启动后默认显示的help窗口、文件管理器窗口

  • 自动启动用户的应用程序图形画面


一个标准的CDE配置文件存放在/usr/dt/config这个目录,用户的CDE配置文件放置在$HOME/.dt路径下。桌面环境启动时先查找用户目录下的配置文件,然后在/etc下查找,最后查找/usr/dt路径,因此我们可以将/usr/dt路径拷贝至/etc目录下进行修改,不影响系统配置文件内容。如果仅希望配置单个用户的桌面,可以修改该用户$HOME路径下相应文件。


涉及文件目录和功能

  • /etc/dt/config 系统配置文件

    • /etc/dt/config/$LANG/Xsession 用户Session的系统缺省应用程序集

    • /etc/dt/config/$LANG/sys.dtwmrc Dtwm的补充配置文件,可以指定不同类型窗口菜单

  • /etc/dt/app-defaults 应用程序资源

    • /etc/dt/app-defaults/$LANG/Dtwm dtwm的资源配置文件


下面是每一步的具体操作:


Step1:用root身份直接登陆,启动Xwindows


  1. 禁止桌面系统自动启动

/usr/dt/bin/dtconfig -d

  1. 禁止console的登陆服务

svcadm disable svc:/system/console-login:default

  1. 创建启动脚本,完成登陆和桌面系统启动的功能。如S99autologin

touch /etc/rc2.d/S99autologin

# vi /etc/rc2.d/S99autologin

文件内容:

#!/usr/bin/bash

su - root -c "PATH=/usr/openwin/bin:$PATH;export PATH;xinit /usr/dt/bin/Xsession -- /usr/X11/bin/Xorg"


  1. 改变文件属性,与其他脚本属性相同。

chmod 744 S99autologin

注意:测试环境的Xindows 系统为Xorg


Step2:不显示Front Panel


  1. 手动创建/etc下的配置文件路径,备份/usr/dt下文件

#mkdir -p /etc/dt/app-defaults/$LANG

#cp /usr/dt/app-defaults/$LANG/Dtwm /etc/dt/app-defaults/$LANG/Dtwm

  1. 修改Dtwm,FrontPanel属性改为False

......

!Dtwm*useFrontPanel: True

Dtwm*useFrontPanel: False

......


Step3:点击鼠标右键不显示工作区菜单


  1. 手动创建/etc下的配置文件路径,备份/usr/dt下文件

mkdir -p /etc/dt/config/$LANG

cp /usr/dt/config/$LANG/sys.dtwmrc to /etc/dt/config/$LANG/

  1. 编辑sys.dtwmrc,注释掉root f.menu DtRootMenu所在的一行

#vi /etc/dt/config/$LANG/

......

# root f.menu DtRootMenu

......


Step4:取消初始会话中应用程序的启动,保证桌面上不显示其他的应用程序图形界面


  1. 手动创建/etc下的配置文件路径,备份/usr/dt下文件

cp /usr/dt/config/$LANG/sys.session /etc/dt/config/$LANGsys.session

  1. 将所有条目用“#”注释掉

  2. 加入自己的应用程序启动命令


Step5:Reboot


这只是一个例子,使用了root权限的自动登陆,实际应用中需要保证系统安全,可以使用Solaris10上提供的RBAC(Role-Based-Access-Control)功能限制root权限,或实现用户的自动登陆过程。


参考命令

dtsession(1),

dtstyle(1),

X(1),

xrdb(1).dtconfig1M

dtwm(1)

rbac(5)

svcs(1)

svcadm(1M)

附:

问:如果是在solaris8的环境下,Step1里面的“禁止console的登陆服务#svcadm disable svc:/system/console-login:default”应该改成什么样子呢?Step1里面还有什么需要修改的吗?

答:1)备份/etc/inittab
2)编辑,注释掉一行:
co:234:respawn:/usr/lib/saf/ttymon -g -h -p "`uname -n` console login: "
-T sun -d /dev/console -l console -m ldterm,ttcompat

其他步骤你可以尝试,请注意以下问题:
1. Solaris8 Sparc下只有Xsun,请去掉
"-- /usr/X11/bin/Xorg"。
2. Solaris8 X86 环境没有测试过。

 类似资料: