我正在尝试使用 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);
}