web-dev-qa-db-ja.com

セッションタイプボタンをlightdm-webkit-greeterテーマに追加する方法

Lightdmのwebkit greeterを実験しています。 Ubuntu 13.10 64ビット。自分のテーマの作り方を学びたい。デフォルトのテーマに言語選択ボタンまたはセッションタイプ選択ボタンが表示されないことに気付きました。 Unityグリーターを使用して、UnityまたはGnome 3のどちらを開始するかを選択できます。最近、Gnome 3を選択するようになりました。つまり、Gnome 3が必要なときにUnityで開始することを強いられているため、Webkitグリーターは現在使用できません。

セッションタイプボタンをwebkit-greeterテーマに追加することはできますか?どうやって?ボタンを表示するには、デフォルトのテーマファイルを編集する必要がありますか?

1
Hatoru Hansou

ソースコードの_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属性は実際には必要ありません。これらを使用してセッションを選択しましたが、代わりにインデックスを使用することにしました。もう1つの変更は、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);
}
_
1
Jason Conti