有没有一种干净的方法可以从 unity-greeter 屏幕隐藏会话选择器“选择桌面环境”小部件,或者强制特定用户使用特定桌面环境(即使安装了其他桌面环境)?我正在 Ubuntu 16.04 上构建一个信息亭,需要阻止信息亭用户访问除自动启动特定应用程序的精简版 Openbox 环境之外的任何东西。另一方面,我需要管理员用户对标准 Ubuntu Unity 环境具有完全访问权限。
我所见过的唯一选项是对 *.desktop 会话文件进行黑客编辑,将 Exec 和 TryExec 选项指向外部脚本,该脚本检查用户以谁的身份登录,并为用户执行特定的桌面会话,无论他们在 unity-greeter 屏幕上选择哪一个。
我有点惊讶这不是一个易于配置的选项。
更新:
我从源代码构建了一个自定义版本的 unity-greeter。注释掉这两行(见下面的 diff 输出)会导致徽章消失。这不是理想的解决方案,因为这会禁用所有用户的会话选择器,但由于此功能在安装后实际上不是必需的,所以我可以接受(特别是因为我没有“vala”的功能)。理想的解决方案是使用“隐藏会话”等效功能复制“隐藏用户”功能,但经过几个小时的尝试以天真的方式实现这一点,我发现这超出了我的编码能力。
849c849
< /* e.show_options.connect (prompt_box_show_options_cb); */
---
> e.show_options.connect (prompt_box_show_options_cb);
934c934
< /* if (!should_show_session_badge ()) */
---
> if (!should_show_session_badge ())
由于此功能被禁用,我需要编辑需要完整桌面会话 /var/lib/AccountServices/users/username 的用户帐户的 AccountServices 文件,并将“XSession”设置为“ubuntu”。