Como adicionar um botão de tipo de sessão ao tema lightdm-webkit-greeter?

1

Estou experimentando o greeter do webkit para lightdm. Ubuntu 13.10 64 bits. Eu quero aprender a criar meus próprios temas. Percebi que o tema padrão não mostra um botão de seleção de idioma ou um botão de seleção de tipo de sessão. Com o unity-greeter posso escolher iniciar o Unity ou o Gnome 3. Recentemente comecei a preferir o Gnome 3, o que significa que o greiner do webkit está inutilizável para mim agora, pois sou forçado a começar com o Unity quando quero o Gnome 3.

É possível adicionar um botão de tipo de sessão a um tema do webkit-greeter? Como? Preciso editar os arquivos de tema padrão para mostrar o botão?

    
por Hatoru Hansou 02.02.2014 / 05:19

1 resposta

1

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);
}
    
por Jason Conti 02.02.2014 / 06:53