Как добавить кнопку типа сеанса в тему lightdm-webkit-greeter?

Я экспериментирую с создателем webkit для lightdm. Ubuntu 13.10 64 бит. Я хочу научиться создавать свои собственные темы. Я заметил, что в теме по умолчанию нет кнопки выбора языка или кнопки выбора типа сеанса. С помощью устройства приветствия единства я могу выбрать запуск Unity или Gnome 3. Недавно я стал отдавать предпочтение Gnome 3, это означает, что создатель веб-набора для меня сейчас непригоден, так как я вынужден начать с Unity, когда хочу Gnome 3.

Можно ли добавить кнопку типа сеанса в тему webkit-greeter? Как? Нужно ли редактировать файлы темы по умолчанию, чтобы показать кнопку?

1
задан 2 February 2014 в 08:19

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);
}
0
ответ дан 2 February 2014 в 08:19

Другие вопросы по тегам:

Похожие вопросы: