有时可能需要用户只能访问某个应用程序。出于安全原因或为了更好地访问给定应用程序,运行桌面环境可能是不受欢迎的。
在这些情况下,可能需要用登录后立即运行的应用程序替换桌面。
其他用户应该可以正常访问他们的桌面。
答案1
用应用程序替换桌面
定义用户定义会话
首先,我们必须定义一个用户定义会话,用于处理不应加载任何桌面的特殊情况。我们将通过在 /usr/share/xsessions/ 中创建一个 custom.desktop 文件来定义此会话,其内容类似于以下内容:
[Desktop Entry]
Name=Custom
Comment=Custom Session to run ~./.xsession
Exec=/home/<username>/.xsession
X-Ubuntu-Gettext-Domain=<gnome-session-3.0>
这将告诉 GDM 运行.xsession
位于用户主目录中的脚本<username>
。
X-Ubuntu-Gettext-Domain
如果我们稍后加载 Unity/GNOME 桌面(gdm
在 10.04 中替换),则需要可选的正确语言翻译。
编写脚本开始
这个脚本 ~/.xsession 看起来很简单:
#! /bin/bash
xterm
logout
登录时加载自定义会话
如果我们现在定义在给定用户登录 gdm 屏幕时加载我们的会话“自定义”,则只会启动 X-Terminal,退出时我们将返回 gdm。下次我们以用户身份登录时,此设置将被记住为默认值。
运行需要 Windows 管理的应用程序
当然,我们还不能运行需要窗口管理器的应用程序,例如 GNOME。为此,请用以下脚本替换 .xsession 脚本:
#! /bin/bash
gnome-wm &
firefox
logout
我们可以看到 GNOME 窗口管理器现已加载,但尚无桌面元素。这样便可启动应用程序(例如此处的 Firefox)。
但要小心你的行为:如果我们将应用程序最小化到不存在的托盘,我们最终将看到一个漂亮的壁纸。因此,logout
在脚本末尾包含应用程序终止后注销会话非常重要。实际上没有其他程序可以为您执行此操作,除非您将一个程序添加到脚本中。您故意用 Firefox 替换了您的桌面(一个坏主意)。
当然,我们也可以从脚本中启动gnome-desktop
或gnome-session
(分别选项),但这是我们默认已经做的事情。