Я экспериментирую с создателем webkit для lightdm. Ubuntu 13.10 64 бит. Я хочу научиться создавать свои собственные темы. Я заметил, что в теме по умолчанию нет кнопки выбора языка или кнопки выбора типа сеанса. С помощью устройства приветствия единства я могу выбрать запуск Unity или Gnome 3. Недавно я стал отдавать предпочтение Gnome 3, это означает, что создатель веб-набора для меня сейчас непригоден, так как я вынужден начать с Unity, когда хочу Gnome 3.
Можно ли добавить кнопку типа сеанса в тему webkit-greeter? Как? Нужно ли редактировать файлы темы по умолчанию, чтобы показать кнопку?
Если вы посмотрите на 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);
}