![如何向 lightdm-webkit-greeter 主题添加会话类型按钮?](https://linux22.com/image/1082012/%E5%A6%82%E4%BD%95%E5%90%91%20lightdm-webkit-greeter%20%E4%B8%BB%E9%A2%98%E6%B7%BB%E5%8A%A0%E4%BC%9A%E8%AF%9D%E7%B1%BB%E5%9E%8B%E6%8C%89%E9%92%AE%EF%BC%9F.png)
我正在尝试使用 lightdm 的 webkit 问候程序。Ubuntu 13.10 64 位。我想学习创建自己的主题。我注意到默认主题不显示语言选择按钮或会话类型选择按钮。使用 unity-greeter,我可以选择启动 Unity 或 Gnome 3。最近我开始更喜欢 Gnome 3,这意味着 webkit 问候程序现在对我来说不可用,因为当我想要 Gnome 3 时,我被迫从 Unity 开始。
是否可以将会话类型按钮添加到 webkit-greeter 主题?如何操作?我必须编辑默认主题文件才能显示该按钮吗?
答案1
如果你查看lightdm-webkit-greeter.c
源代码,你会发现我们可以从 webkit 中获取各种有趣的值。为了快速而简单地将会话选择下拉菜单添加到默认主题,我做了以下操作(这肯定可以扩展和改进):
在默认情况下index.html
,在将用户列表写入欢迎程序的行上方:
document.write('<table id="user_table" style="margin: auto;">');
我添加了一些代码来写出会话选择器:
document.write('<select id="session_list">');
for (i in lightdm.sessions)
{
session = lightdm.sessions[i];
if (session.key == lightdm.default_session)
document.write('<option selected="selected" value="' + session.key + '">' + session.name + '</option>');
else
document.write('<option value="' + session.key + '">' + session.name + '</option>');
}
document.write('</select>');
此代码中的属性value
并非真正必要,我原本打算使用它们来选择会话,但决定改用索引。另一个更改是函数authentication_complete()
。在默认代码中,我们有:
if (lightdm.is_authenticated)
lightdm.login (lightdm.authentication_user, lightdm.default_session);
因此它始终使用default_session
密钥。我们想使用选定的会话,因此我们可以执行以下操作:
if (lightdm.is_authenticated)
{
session_list = document.getElementById('session_list');
session = lightdm.sessions[session_list.selectedIndex];
lightdm.login (lightdm.authentication_user, session.key);
}