Se você olhar para lightdm-webkit-greeter.c
no código-fonte, existem todos os tipos de valores interessantes que podemos obter do webkit. Para um método rápido e sujo para adicionar uma lista suspensa de seleção de sessão ao tema padrão, fiz o seguinte (isso poderia definitivamente ser expandido e melhorado):
No padrão index.html
, logo acima da linha que grava a lista de usuários no saudador:
document.write('<table id="user_table" style="margin: auto;">');
Adicionei um código para escrever o seletor de sessão:
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>');
Os atributos value
não são realmente necessários neste código, eu os usaria para selecionar a sessão, mas decidi usar o índice. A outra mudança é para a função authentication_complete()
. No código padrão, temos:
if (lightdm.is_authenticated)
lightdm.login (lightdm.authentication_user, lightdm.default_session);
Por isso, sempre usa a chave default_session
. Em vez disso, queremos usar a sessão selecionada para que possamos fazer algo como:
if (lightdm.is_authenticated)
{
session_list = document.getElementById('session_list');
session = lightdm.sessions[session_list.selectedIndex];
lightdm.login (lightdm.authentication_user, session.key);
}