有时可能需要用户只能访问某个应用程序。出于安全原因或为了更好地访问给定应用程序,运行桌面环境可能是不需要的。
在这些情况下,可能需要用登录后立即运行的应用程序替换桌面。
其他用户应该可以正常访问他们的桌面。
Tak*_*kat 38
首先,我们必须定义一个用户定义的会话来处理不应加载任何桌面的特殊情况。我们将通过在 /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>
Run Code Online (Sandbox Code Playgroud)
这将告诉 GDM 运行.xsession位于用户 HOME 中的脚本<username>。
X-Ubuntu-Gettext-Domain如果我们稍后加载 Unity/GNOME 桌面(gdm在 10.04 中替换为),则需要Optional以进行正确的语言翻译。
这个脚本 ~/.xsession 看起来很简单:
#! /bin/bash
xterm
logout
Run Code Online (Sandbox Code Playgroud)
如果我们现在定义在给定用户在 gdm 屏幕上登录期间加载我们的会话“自定义”,则只会启动 X 终端,我们将在退出时返回 gdm。下次我们以用户身份登录时,此设置将被记住为默认值。
当然,我们还不能运行需要 Windows 管理器(如 GNOME)的应用程序。为此,请使用以下内容替换 .xsession 脚本:
#! /bin/bash
gnome-wm &
firefox
logout
Run Code Online (Sandbox Code Playgroud)
我们可以看到 GNOME 窗口管理器现在已加载,但不存在桌面元素。这使应用程序(例如此处的 firefox)能够启动。
但请注意你所做的:如果我们将应用程序最小化到不存在的托盘,我们最终会得到一张漂亮的墙纸。因此,logout在脚本末尾包含在应用程序终止后注销会话非常重要。在您向脚本中添加一个之前,确实没有其他程序可以为您执行此操作。你故意只用 Firefox 替换了你的桌面(一个坏主意)。
当然,我们也可以从脚本开始gnome-desktop或gnome-session(相应的选项),但这是我们默认情况下已经做的。