diff --git a/README.md b/README.md
index 134e3e3..2bdad25 100644
--- a/README.md
+++ b/README.md
@@ -1,3 +1,12 @@
# overlay
-Funtoo and Gentoo overlay repository
\ No newline at end of file
+## Funtoo and Gentoo overlay repository
+
+### Contents
+* Fresh ebuilds waiting for addition to the official portage tree.
+* Packages that don't fit to the official portage tree.
+
+### Manual installation:
+ git clone https://code.gnuardo.com/gerardo/overlay gnuardo
+ echo 'PORTDIR_OVERLAY="$PWD/gnuardo"' >> /etc/portage/make.conf
+
diff --git a/metadata/layout.conf b/metadata/layout.conf
new file mode 100644
index 0000000..d2f85b3
--- /dev/null
+++ b/metadata/layout.conf
@@ -0,0 +1,6 @@
+masters = gentoo
+thin-manifests = true
+sign-manifests = false
+profile-formats = portage-2
+cache-formats = md5-dict
+
diff --git a/profiles/repo_name b/profiles/repo_name
new file mode 100644
index 0000000..410f21a
--- /dev/null
+++ b/profiles/repo_name
@@ -0,0 +1 @@
+gnuardo
diff --git a/x11-misc/lightdm-webkit-greeter/Manifest b/x11-misc/lightdm-webkit-greeter/Manifest
new file mode 100644
index 0000000..c5f937f
--- /dev/null
+++ b/x11-misc/lightdm-webkit-greeter/Manifest
@@ -0,0 +1,12 @@
+AUX gentoo/gentoologo.png 7190 SHA256 3cf26c8d3369918661280ff21048e476140c9434ada61f6c892d28288badfe22 SHA512 661b3695f95e2779ec6bc29a3e0ced4b03775d3a0544041b1d3ad47661cd9e36355da7391b6008cc40f0b41d19f24bc6d30efc6c38519a23c5a52d5519e34fe2 WHIRLPOOL 77db0449b40dff41f1023cdea758f9483df7465455f6862463d322bd63219f29d78a710c7d7e519572ce879b9e1f24ad66be3db124da14b9c7ba5dfb6c11ed07
+AUX gentoo/img/restart.svg 4986 SHA256 27b429b25ddd4bd60f3ca1cd83ad9f534365895cb3e569bcd315bbad6fd9c32a SHA512 71849f37f1f7286a176a15c4ec4b1ad75246db9cd1b408b3c9cdb60e307459bacb138dbae06063af3d870d8f5483899f5ac5b148b9a54fb08e709a7d1ef05618 WHIRLPOOL 5ec2bff5d99a7311fa8b801a7af350ba218b67ead7e5e1a056446eef051ab099871db7f4f41082788ccf682e4273b9182a05dd8875ab39b756926b8bfa015506
+AUX gentoo/img/shutdown.svg 6405 SHA256 b194d1f8e825efd2336db799fcb8157625cf74ce1667863de63fe62ccdd2a49e SHA512 8cdf0f46a94831cf6d8ac1a80aca7dd705d7023398571ea32e490e3bc1c8311a23d858f8311b427c71d8a49ce3524b0b1397e0cb187ff68507741bdfecaf5237 WHIRLPOOL 7e1c5697071503d21befd39f58845eb9e5301794ff05f49994d359cb0c98728c6c6845a13ae2223b50a8f81f4b4778c3e51321e0eb1d2bfc0fbaaa4a79e80be2
+AUX gentoo/img/sleep.svg 4737 SHA256 a09f138fff63357dbcfe1a8252414759e0b5ca2d5d34762d0b69c8154e2d4952 SHA512 71eea502f2b93257b96eac5ea97f5ed2c6159527ae40652cf395465750f3418b782660346080a94fc78bd95a12d474445a6546001aea760f8f648e5ec22feab1 WHIRLPOOL c209d66d845c7e3383bd3dbc072ed57131de6797c3a67e7a0e1eef45fccd3191e5799185a7b269d9bf96df40aae1acba73c585b53bb41d9da9cf613eedf6520b
+AUX gentoo/index.html 2251 SHA256 4633cca1665a6180d3e78ab896a18284c45300b1280b5ad3e35c6984edb1b05f SHA512 5d03fca84c9ceaaf12e2b976e18de5d35fcbc426d20f4100105923769035e588c04904e2f010f9dca2b854d0150d45ea65d2ccbbea047b589956172eb5405629 WHIRLPOOL 3104284d5234a6d58fec8c8dab2893ba784d177ec85aab2398c6bbf1f20995aeab21c29fc980e113f83b28c5d1b2a3e7251f260af42403b5b7ee662c64940f27
+AUX gentoo/low_contrast_linen.png 22749 SHA256 4acf439c9ae114b6707b0b59036ced496e25670143d6c774bc7315dcff1a8c4e SHA512 aea519bbada8a8a05e3027632df259f1513817d684b8ef8df0f9f80ffa6abb1e15e5c86bda4d1f396f553d9b77e4b014a91b91761cfa1a2767e79ed821c71ba7 WHIRLPOOL 49ee655da8a032c65e82aa3fa43fe1558b09f7ed8f5048ef432a60d22557f50f6e721c0ba9a2f5195043789ad41dc3dffbcba8a8796f8d171c92a6e7d6c29495
+AUX gentoo/mock.js 4467 SHA256 417f2c236012badde24f5029d7af1cb71ea2b883562dbe1ba1bf2be871209853 SHA512 989aaf994df1f41b453b8efa3d910e0e19939571cb6f809e9b6eb3cf890a09ae22594c5b6feea503289f82b285cb4efbf5b805d663e7218c1a70ce8d765479a2 WHIRLPOOL 6aaddf8b3b99bf8c2bd391b64936ee5bd2ea9e53f34d28b00e6aa9e402af0c927ecc7b1493fb73471274df188920f9e8dae3048de02f91936a6afb81484fa7d2
+AUX gentoo/script.js 6464 SHA256 b855fc4b6c0a896949151aed557d1e143c612a80754b02d848373b584567bb38 SHA512 9e2c1f217e897ecf7a52ae68a5c5d37fb81e982bce6b2a442d18c4419d4b738f5c4ed40183cf5f741a2bfc82378637b5f9c135326d532ce12cd9a51ceef7151f WHIRLPOOL bdc0335f786a1a25f99b58fcb26502ea42ecbc5cc3f00be898b9d15eef57be68b674bcc39a5a4182dcca5c0a408ef2a479e446d54e936eded5ec383fa2147bc8
+AUX gentoo/style.css 2538 SHA256 0bb639fd9c5934f54e9ae26d754e51524957eaffd0ebe799fe5d27b80641ced8 SHA512 eb264ca8c988e1a511bfa28564eb4537df66c9aa28f62e16a52bafce288c8df54851f325ebdf72bc628ad3d94dc5808b72465a2f5a5f44cb73dfd3b758088944 WHIRLPOOL 18eec5603845271007afa9367acf3e8ce714fafd07ec072b9c05a52a31c97873efa80b382571dcbe1d0e5c6902778b53d08d1e4c652dea864f390467d0326897
+AUX lightdm-webkit-greeter-2.0.0_api_add_error.patch 2913 SHA256 8a2f816d4f29d9d20edea5f9336b58cfccc74b727700557b5511bf6926efe99b SHA512 aad79e6fe079f5e42358c22979d2a7fbf8e315caa7eee5fe1d3c7da3b1146974fcdff4312ebeb477339bfce58ba2fa975b06a70c424d9b656d99296332236d57 WHIRLPOOL 93bc28837a2fcff07cfe2b3ed8f973b94dc6bcbff36c62cd35e65dff0e7ad0d6398908f1424c45254496708d3e06ecf00c641cf74afba0883e5d4848d0c6323e
+DIST lightdm-webkit-greeter-2.0.0.tar.gz 343433 SHA256 985068d2c95556c99c744a0e8a770f123034fe4b23e8469c1a153a1f6e687eab SHA512 a4c1479dd23d94111e2e1ca63275b21439da32722260ea46ea691e2f46b60a8dc40326e87faa649a489cd3b1546b5305ee9873559a93964b353cfab636015978 WHIRLPOOL ca75511bd4bb0cf1ff7938b413933c39fbab4f2cbb40aed7945eb0d72bab9d4aefc08aba8b7d8a4385d8ced65e1d3f16d05731d294a3a1c24496748f267095e9
+EBUILD lightdm-webkit-greeter-2.0.0.ebuild 1580 SHA256 c0dc29189b4389e07f91927035ab42446464a4a11cf5c58f5ecc57432d373ef9 SHA512 8d0b412051b1b3e2fd6ddaba19f1e2aeed49b00db0a471852564d57487580f761225fab666fef13b10a01f3da75693e8e6d3e6be8ebadd91874560488e6c9af5 WHIRLPOOL 7fac6f2d99bab07b320cafe9b471a4a57b8bec88b717e6e617d78cfa882aed15ccdaeadbcfb82c4407b3e3b37084059d43b734cd209c2dd3e723c63e80ebb19f
diff --git a/x11-misc/lightdm-webkit-greeter/files/gentoo/gentoologo.png b/x11-misc/lightdm-webkit-greeter/files/gentoo/gentoologo.png
new file mode 100644
index 0000000..8f9c76d
Binary files /dev/null and b/x11-misc/lightdm-webkit-greeter/files/gentoo/gentoologo.png differ
diff --git a/x11-misc/lightdm-webkit-greeter/files/gentoo/img/restart.svg b/x11-misc/lightdm-webkit-greeter/files/gentoo/img/restart.svg
new file mode 100644
index 0000000..f580c18
--- /dev/null
+++ b/x11-misc/lightdm-webkit-greeter/files/gentoo/img/restart.svg
@@ -0,0 +1,142 @@
+
+
+
+
diff --git a/x11-misc/lightdm-webkit-greeter/files/gentoo/img/shutdown.svg b/x11-misc/lightdm-webkit-greeter/files/gentoo/img/shutdown.svg
new file mode 100644
index 0000000..e768c52
--- /dev/null
+++ b/x11-misc/lightdm-webkit-greeter/files/gentoo/img/shutdown.svg
@@ -0,0 +1,198 @@
+
+
+
+
diff --git a/x11-misc/lightdm-webkit-greeter/files/gentoo/img/sleep.svg b/x11-misc/lightdm-webkit-greeter/files/gentoo/img/sleep.svg
new file mode 100644
index 0000000..4e5ca87
--- /dev/null
+++ b/x11-misc/lightdm-webkit-greeter/files/gentoo/img/sleep.svg
@@ -0,0 +1,134 @@
+
+
+
+
diff --git a/x11-misc/lightdm-webkit-greeter/files/gentoo/index.html b/x11-misc/lightdm-webkit-greeter/files/gentoo/index.html
new file mode 100644
index 0000000..8b66fca
--- /dev/null
+++ b/x11-misc/lightdm-webkit-greeter/files/gentoo/index.html
@@ -0,0 +1,55 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/x11-misc/lightdm-webkit-greeter/files/gentoo/low_contrast_linen.png b/x11-misc/lightdm-webkit-greeter/files/gentoo/low_contrast_linen.png
new file mode 100644
index 0000000..17b491e
Binary files /dev/null and b/x11-misc/lightdm-webkit-greeter/files/gentoo/low_contrast_linen.png differ
diff --git a/x11-misc/lightdm-webkit-greeter/files/gentoo/mock.js b/x11-misc/lightdm-webkit-greeter/files/gentoo/mock.js
new file mode 100644
index 0000000..e6de687
--- /dev/null
+++ b/x11-misc/lightdm-webkit-greeter/files/gentoo/mock.js
@@ -0,0 +1,134 @@
+// mock lighdm for testing
+if (typeof lightdm == 'undefined') {
+ lightdm= {};
+ lightdm.hostname="test-host";
+ lightdm.languages= [{code: "en_US", name: "English(US)", territory: "USA"}, {code: "en_UK", name: "English(UK)", territory: "UK"}];
+ lightdm.default_language= lightdm.languages[0];
+ lightdm.layouts= [{name: "test", short_description: "test description", short_description:"really long epic description"}];
+ lightdm.default_layout= lightdm.layouts[0];
+ lightdm.layout= lightdm.layouts[0];
+ lightdm.sessions=[{key: "key1", name: "session 1", comment: "no comment"}, {key: "key2", name: "session 2", comment: "no comment"}];
+
+ lightdm.default_session=lightdm.sessions[0];
+ lightdm.authentication_user= null;
+ lightdm.is_authenticated= false;
+ lightdm.can_suspend= true;
+ lightdm.can_hibernate= true;
+ lightdm.can_restart= true;
+ lightdm.can_shutdown= true;
+
+ lightdm.users= [
+ { name: "clarkk", real_name:"Superman", display_name: "Clark Kent", image :"", language: "en_US", layout: null, session: null, logged_in: false },
+ { name: "brucew", real_name:"Batman", display_name: "Bruce Wayne", image :"/home/brokenImage.gif", language: "en_US", layout: null, session: null, logged_in: false},
+ { name: "peterp", real_name:"Spiderman", display_name: "Peter Parker", image :"", language: "en_US", layout: null, session: null, logged_in: true},
+ ]
+
+ lightdm.sessions= [
+ { name: "LXQt Desktop", key: "lxqt" },
+ { name: "KDE Plasma Desktop", key: "kdeplasma" },
+ ]
+ lightdm.default_session=lightdm.sessions[0];
+ lightdm.num_users= lightdm.users.length;
+ lightdm.timed_login_delay= 0; //set to a number higher than 0 for timed login simulation
+ lightdm.timed_login_user= lightdm.timed_login_delay > 0 ? lightdm.users[0] : null;
+
+ lightdm.get_string_property= function() {};
+ lightdm.get_integer_property= function() {};
+ lightdm.get_boolean_property= function() {};
+ lightdm.cancel_timed_login= function() {
+ _lightdm_mock_check_argument_length(arguments, 0);
+ lightdm._timed_login_cancelled= true;
+ };
+
+ lightdm.provide_secret= function(secret) {
+ if (typeof lightdm._username == 'undefined' || !lightdm._username) {
+ throw "must call start_authentication first"
+ }
+ _lightdm_mock_check_argument_length(arguments, 1);
+ var user= _lightdm_mock_get_user(lightdm.username);
+
+ if (!user && secret == lightdm._username) {
+ lightdm.is_authenticated= true;
+ lightdm.authentication_user= user;
+ } else {
+ lightdm.is_authenticated= false;
+ lightdm.authentication_user= null;
+ lightdm._username= null;
+ }
+ authentication_complete();
+ };
+
+ lightdm.start_authentication= function(username) {
+ _lightdm_mock_check_argument_length(arguments, 1);
+ if (lightdm._username) {
+ throw "Already authenticating!";
+ }
+ var user= _lightdm_mock_get_user(username);
+ if (!user) {
+ show_error(username + " is an invalid user");
+ }
+ show_prompt("Password: ");
+ lightdm._username= username;
+ };
+
+ lightdm.cancel_authentication= function() {
+ _lightdm_mock_check_argument_length(arguments, 0);
+ if (!lightdm._username) {
+ throw "we are not authenticating";
+ }
+ lightdm._username= null;
+ };
+
+ lightdm.suspend= function() {
+ alert("System Suspended. Bye Bye");
+ document.location.reload(true);
+ };
+
+ lightdm.hibernate= function() {
+ alert("System Hibernated. Bye Bye");
+ document.location.reload(true);
+ };
+
+ lightdm.restart= function() {
+ alert("System restart. Bye Bye");
+ document.location.reload(true);
+ };
+
+ lightdm.shutdown= function() {
+ alert("System Shutdown. Bye Bye");
+ document.location.reload(true);
+ };
+
+ lightdm.login= function(user, session) {
+ _lightdm_mock_check_argument_length(arguments, 2);
+ if (!lightdm.is_authenticated) {
+ throw "The system is not authenticated";
+ }
+ if (user !== lightdm.authentication_user) {
+ throw "this user is not authenticated";
+ }
+ alert("logged in successfully!!");
+ document.location.reload(true);
+ };
+
+ if (lightdm.timed_login_delay > 0) {
+ setTimeout(function() { if (!lightdm._timed_login_cancelled()) timed_login();}, lightdm.timed_login_delay);
+ }
+}
+
+function _lightdm_mock_check_argument_length(args, length) {
+ if (args.length != length) {
+ throw "incorrect number of arguments in function call";
+ }
+}
+
+function _lightdm_mock_get_user(username) {
+ var user= null;
+ for (var i= 0; i < lightdm.users.length; ++i) {
+ if (lightdm.users[i].name == username) {
+ user= lightdm.users[i];
+ break;
+ }
+ }
+ return user;
+}
diff --git a/x11-misc/lightdm-webkit-greeter/files/gentoo/script.js b/x11-misc/lightdm-webkit-greeter/files/gentoo/script.js
new file mode 100644
index 0000000..da101a5
--- /dev/null
+++ b/x11-misc/lightdm-webkit-greeter/files/gentoo/script.js
@@ -0,0 +1,241 @@
+var time_remaining = 0;
+var selected_user = null;
+var valid_image = /.*\.(png|svg|jpg|jpeg|bmp)$/i;
+
+///////////////////////////////////////////////
+// CALLBACK API. Called by the webkit greeeter
+///////////////////////////////////////////////
+
+// called when the greeter asks to show a login prompt for a user
+function show_prompt(text) {
+ var password_container = document.querySelector("#password_container");
+ var password_entry = document.querySelector("#password_entry");
+
+ if (!isVisible(password_container)) {
+ var users = document.querySelectorAll(".user");
+ var user_node = document.querySelector("#"+selected_user);
+ var rect = user_node.getClientRects()[0];
+ var parentRect = user_node.parentElement.getClientRects()[0];
+ var center = parentRect.width/2;
+ var left = center - rect.width/2 - rect.left;
+ var i = 0;
+ if (left < 5 && left > -5) {
+ left = 0;
+ }
+ for (i = 0; i < users.length; i++) {
+ var node = users[i];
+ setVisible(node, node.id === selected_user);
+ node.style.left= left;
+ }
+
+ setVisible(password_container, true);
+ password_entry.placeholder= text.replace(":", "");
+ }
+ password_entry.value= "";
+ password_entry.focus();
+}
+
+// called when the greeter asks to show a message
+function show_message(text) {
+ var message = document.querySelector("#message_content");
+ message.innerHTML= text;
+ if (text) {
+ document.querySelector("#message").classList.remove("hidden");
+ } else {
+ document.querySelector("#message").classList.add("hidden");
+ }
+ message.classList.remove("error");
+}
+
+// called when the greeter asks to show an error
+function show_error(text) {
+ show_message(text);
+ var message = document.querySelector("#message_content");
+ message.classList.add("error");
+}
+
+// called when the greeter is finished the authentication request
+function authentication_complete() {
+ var container = document.querySelector("#session_container");
+ var children = container.querySelectorAll("input");
+ var i = 0;
+ var key = "";
+ for (i = 0; i < children.length; i++) {
+ var child = children[i];
+ if (child.checked) {
+ key = child.value;
+ break;
+ }
+ }
+
+ if (lightdm.is_authenticated) {
+ if (key === "") {
+ lightdm.login(lightdm.authentication_user, lightdm.default_session);
+ } else {
+ lightdm.login(lightdm.authentication_user, key);
+ }
+ } else {
+ show_error("Authentication Failed");
+ start_authentication(selected_user);
+ }
+}
+
+// called when the greeter wants us to perform a timed login
+function timed_login(user) {
+ lightdm.login (lightdm.timed_login_user);
+ //setTimeout('throbber()', 1000);
+}
+
+//////////////////////////////
+// Implementation
+//////////////////////////////
+function start_authentication(username) {
+ lightdm.cancel_timed_login();
+ selected_user = username;
+ lightdm.start_authentication(username);
+}
+
+function provide_secret() {
+ show_message("Logging in...");
+ entry = document.querySelector('#password_entry');
+ lightdm.provide_secret(entry.value);
+}
+
+function initialize_sessions() {
+ var template = document.querySelector("#session_template");
+ var container = session_template.parentElement;
+ var i = 0;
+ container.removeChild(template);
+
+ for (i = 0; i < lightdm.sessions.length; i = i + 1) {
+ var session = lightdm.sessions[i];
+ var s = template.cloneNode(true);
+ s.id = "session_" + session.key;
+
+ var label = s.querySelector(".session_label");
+ var radio = s.querySelector("input");
+
+ console.log(s, session);
+ label.innerHTML = session.name;
+ radio.value = session.key;
+
+ if (session.key === lightdm.default_session) {
+ radio.checked = true;
+ }
+
+ container.appendChild(s);
+ }
+}
+
+function show_users() {
+ var users = document.querySelectorAll(".user");
+ var i = 0;
+ for (i= 0; i < users.length; i++) {
+ setVisible(users[i], true);
+ users[i].style.left = 0;
+ }
+ setVisible(document.querySelector("#password_container"), false);
+ selected_user = null;
+}
+
+function user_clicked(event) {
+ if (selected_user !== null) {
+ selected_user = null;
+ lightdm.cancel_authentication();
+ show_users();
+ } else {
+ selected_user = event.currentTarget.id;
+ start_authentication(event.currentTarget.id);
+ }
+ show_message("");
+ event.stopPropagation();
+ return false;
+}
+
+function setVisible(element, visible) {
+ if (visible) {
+ element.classList.remove("hidden");
+ } else {
+ element.classList.add("hidden");
+ }
+}
+
+function isVisible(element) {
+ return !element.classList.contains("hidden");
+}
+
+function update_time() {
+ var time = document.querySelector("#current_time");
+ var date = new Date();
+
+ var hh = date.getHours();
+ var mm = date.getMinutes();
+ var ss = date.getSeconds();
+ var suffix= "AM";
+ if (hh > 12) {
+ hh = hh - 12;
+ suffix = "PM";
+ }
+ if (hh < 10) { hh = "0"+hh; }
+ if (mm < 10) { mm = "0"+mm; }
+ if (ss < 10) { ss = "0"+ss; }
+ time.innerHTML = hh+":"+mm + " " + suffix;
+}
+
+//////////////////////////////////
+// Initialization
+//////////////////////////////////
+
+function initialize() {
+ show_message("");
+ initialize_users();
+ initialize_timer();
+ initialize_sessions();
+}
+
+function on_image_error(e) {
+ e.currentTarget.src = "img/avatar.svg";
+}
+
+function initialize_users() {
+ var template = document.querySelector("#user_template");
+ var parent = template.parentElement;
+ parent.removeChild(template);
+
+ for (i = 0; i < lightdm.users.length; i += 1) {
+ user = lightdm.users[i];
+ userNode = template.cloneNode(true);
+
+ var image = userNode.querySelectorAll(".user_image")[0];
+ var name = userNode.querySelectorAll(".user_name")[0];
+ name.innerHTML = user.display_name;
+
+ if (user.image) {
+ image.src = user.image;
+ image.onerror = on_image_error;
+ } else {
+ image.src = "img/avatar.svg";
+ }
+
+ userNode.id = user.name;
+ userNode.onclick = user_clicked;
+ parent.appendChild(userNode);
+ }
+ setTimeout(show_users, 400);
+}
+
+function initialize_timer() {
+ update_time();
+ setInterval(update_time, 1000);
+}
+
+function add_action(id, name, image, clickhandler, template, parent) {
+ action_node = template.cloneNode(true);
+ action_node.id = "action_" + id;
+ img_node = action_node.querySelectorAll(".action_image")[0];
+ label_node = action_node.querySelectorAll(".action_label")[0];
+ label_node.innerHTML = name;
+ img_node.src = image;
+ action_node.onclick = clickhandler;
+ parent.appendChild(action_node);
+}
diff --git a/x11-misc/lightdm-webkit-greeter/files/gentoo/style.css b/x11-misc/lightdm-webkit-greeter/files/gentoo/style.css
new file mode 100644
index 0000000..2893777
--- /dev/null
+++ b/x11-misc/lightdm-webkit-greeter/files/gentoo/style.css
@@ -0,0 +1,176 @@
+* {
+ font: normal 100% Cantarell;
+}
+
+body {
+ background: url('low_contrast_linen.png');
+ display: table;
+ height: 100%;
+ width: 100%;
+ margin: 0;
+ color: #EFEFEF;
+
+ font-size: 10pt;
+ text-shadow: 1px 1px 3px black;
+}
+
+body, span, div, img {
+ -webkit-user-select: none;
+}
+
+input {
+ border: 1px solid white;
+ border-radius: 4px;
+ padding: 4px;
+ box-shadow: 0 0 1px 1px #222;
+
+ -webkit-transition: box-shadow 0.3s ease-in-out;
+}
+
+input:focus {
+ outline: none;
+ box-shadow: 0 0 1px 1px #222;
+ -webkit-transition: box-shadow 0.3s ease-in-out;
+}
+
+a {
+ text-decoration: none;
+}
+
+.smooth {
+ -webkit-transition: visibility 0s, opacity 0.3s, left 0.4s;
+}
+
+.hidden {
+ opacity: 0;
+ visibility: hidden;
+ -webkit-transition-delay: 0.3s, 0s, 0s;
+}
+
+.center {
+ text-align: center;
+}
+
+.button {
+ cursor: pointer;
+}
+
+.header {
+ background-color: #333;
+ height: 55px;
+ border-bottom: 5px solid #A0A0F0;
+ box-shadow: 0 0 1px 1px #222;
+}
+
+.gentoologo {
+ float: left !important;
+ margin: 10px !important;
+ padding: 0 !important;
+ height: 40px !important;
+ width: 190px !important;
+ background: url('gentoologo.png') no-repeat;
+}
+
+.footer {
+ position: fixed;
+ bottom: 0;
+ width: 100%;
+ height: 100px;
+ text-align: center;
+}
+
+.footer, .header {
+ width: 100%;
+}
+
+.time {
+ float: right;
+ line-height: 25px;
+ font-size: 11pt;
+ margin-right: 10px;
+ margin-top: 5px;
+}
+
+.login_content {
+ display: table-row;
+}
+
+.login_container {
+ display: table-cell;
+ vertical-align: middle;
+}
+
+#message {
+ display: table-row;
+ height: 80px;
+ -webkit-transition: visibility 0s, opacity 0.3s, height 0.3s;
+}
+
+#message.hidden {
+ height: 0px;
+}
+
+#message_content {
+ display: table-cell;
+ vertical-align: top;
+ text-align: center;
+}
+
+#message_content.error {
+ color: #F55;
+}
+
+.user {
+ display: inline-block;
+ margin-left: 20px;
+ margin-right: 20px;
+ margin-bottom: 20px;
+ position: relative;
+}
+
+.user:active {
+ opacity: 0.5;
+}
+
+.user_image_wrapper {
+ width: 80px;
+ height: 80px;
+
+ border-radius: 80px;
+ border: 5px solid #A0A0F0;
+ -webkit-transition: all 0.3s ease-in-out;
+}
+
+.user_image_wrapper:hover {
+ box-shadow: 0 0 5px 5px #A0A0F0;
+ -webkit-transition: all 0.2s ease-in-out;
+}
+
+.user_image {
+ width: 80px;
+ height: 80px;
+ border-radius: 60px;
+}
+
+.user_name {
+ display: block;
+ margin-top: 15px;
+}
+
+.action {
+ display: inline-block;
+ width: 80px;
+ margin-left: 40px;
+ margin-right: 40px;
+}
+
+.action_image {
+ height: 50px;
+ width: 50px;
+
+ margin-bottom: 5px;
+}
+
+.action_label {
+ color: #B2B2B2;
+}
diff --git a/x11-misc/lightdm-webkit-greeter/files/lightdm-webkit-greeter-2.0.0_api_add_error.patch b/x11-misc/lightdm-webkit-greeter/files/lightdm-webkit-greeter-2.0.0_api_add_error.patch
new file mode 100644
index 0000000..3359137
--- /dev/null
+++ b/x11-misc/lightdm-webkit-greeter/files/lightdm-webkit-greeter-2.0.0_api_add_error.patch
@@ -0,0 +1,74 @@
+diff -Naurp lightdm-webkit-greeter-2.0.0.orig/src/lightdm-webkit-greeter.c lightdm-webkit-greeter-2.0.0/src/lightdm-webkit-greeter.c
+--- lightdm-webkit-greeter-2.0.0.orig/src/lightdm-webkit-greeter.c 2016-01-10 20:42:31.000000000 +0100
++++ lightdm-webkit-greeter-2.0.0/src/lightdm-webkit-greeter.c 2017-01-29 11:04:52.468821070 +0100
+@@ -532,13 +532,14 @@ authenticate_cb (JSContextRef context,
+ JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef * exception)
+ {
+ gchar *name = NULL;
++ GError *error = NULL;
+
+ if (argumentCount > 0)
+ name = arg_to_string (context, arguments[0], exception);
+ else
+ name = NULL;
+
+- lightdm_greeter_authenticate (GREETER, name);
++ lightdm_greeter_authenticate (GREETER, name, error);
+
+ g_free (name);
+ return JSValueMakeNull (context);
+@@ -549,7 +550,8 @@ authenticate_as_guest_cb (JSContextRef c
+ JSObjectRef function,
+ JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef * exception)
+ {
+- lightdm_greeter_authenticate_as_guest (GREETER);
++ GError *error = NULL;
++ lightdm_greeter_authenticate_as_guest (GREETER, error);
+ return JSValueMakeNull (context);
+ }
+
+@@ -580,6 +582,7 @@ respond_cb (JSContextRef context,
+ JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef * exception)
+ {
+ gchar *response;
++ GError *error = NULL;
+
+ if (argumentCount != 1)
+ return mkexception (context, exception, "Response not supplied");
+@@ -588,7 +591,7 @@ respond_cb (JSContextRef context,
+ if (!response)
+ return JSValueMakeNull (context);
+
+- lightdm_greeter_respond (GREETER, response);
++ lightdm_greeter_respond (GREETER, response, error);
+
+ g_free (response);
+ return JSValueMakeNull (context);
+@@ -599,7 +602,8 @@ cancel_authentication_cb (JSContextRef c
+ JSObjectRef function,
+ JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef * exception)
+ {
+- lightdm_greeter_cancel_authentication (GREETER);
++ GError *error = NULL;
++ lightdm_greeter_cancel_authentication (GREETER, error);
+ return JSValueMakeNull (context);
+ }
+
+@@ -723,15 +727,14 @@ set_language_cb (JSContextRef context,
+ JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef * exception)
+ {
+ gchar *language;
+-
++ GError **error = NULL;
+ if (argumentCount != 1)
+ return mkexception (context, exception, "Language not supplied");
+
+ language = arg_to_string (context, arguments[0], exception);
+ if (!language)
+ return JSValueMakeNull (context);
+-
+- lightdm_greeter_set_language (GREETER, language);
++ lightdm_greeter_set_language (GREETER, language, error);
+
+ g_free (language);
+ return JSValueMakeNull (context);
diff --git a/x11-misc/lightdm-webkit-greeter/lightdm-webkit-greeter-2.0.0.ebuild b/x11-misc/lightdm-webkit-greeter/lightdm-webkit-greeter-2.0.0.ebuild
new file mode 100644
index 0000000..b031924
--- /dev/null
+++ b/x11-misc/lightdm-webkit-greeter/lightdm-webkit-greeter-2.0.0.ebuild
@@ -0,0 +1,58 @@
+# Copyright 1999-2015 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: $
+
+EAPI=5
+
+inherit eutils
+
+DESCRIPTION="Webkit-based greeter for LightDM"
+HOMEPAGE="https://launchpad.net/${PN}"
+SRC_URI="${HOMEPAGE}/trunk/${PV}/+download/${P}.tar.gz"
+
+LICENSE="LGPL-3"
+SLOT="0"
+KEYWORDS="~amd64 ~x86"
+IUSE="branding"
+
+DEPEND=">=net-libs/webkit-gtk-2.4.11
+ x11-misc/lightdm
+ dev-libs/gobject-introspection
+ app-text/gnome-doc-utils
+ dev-util/intltool
+ "
+RDEPEND="${DEPEND}"
+
+src_prepare(){
+ # What is Ambiance? This should be a GTK+ 2.x theme, so we use Clearlooks here.
+ sed -i '/^theme-name=/s/Ambiance/Clearlooks/' data/lightdm-webkit-greeter.conf
+
+ # Theme 'default' does not exist...
+ sed -i '/^webkit-theme=/s/default/webkit/' data/lightdm-webkit-greeter.conf
+
+ # this is Ubuntu branding... Replace it with something useful. ;)
+ sed -i '/^background=/s|/usr/share/backgrounds/warty-final-ubuntu.png||' data/lightdm-webkit-greeter.conf
+ # Replace Ubuntu font with Dejavusans
+ sed -i '/^font-name=/s|Ubuntu 11|DejaVuSans 11|' data/lightdm-webkit-greeter.conf
+
+ epatch "${FILESDIR}/${P}_api_add_error.patch"
+}
+
+src_compile(){
+ econf || die "econf failed"
+ emake DESTDIR="${D}" || die "emake failed"
+}
+
+src_install(){
+ emake DESTDIR="${D}" install
+ if use branding; then
+ insinto /usr/share/lightdm-webkit/themes
+ doins -r "${FILESDIR}/gentoo"
+ fi
+}
+
+pkg_postinst(){
+ elog "Hi! Thanks for using the Webkit greeter for LightDM."
+ elog "If you want to add your own themes, place them in:"
+ elog "/usr/share/lightdm-webkit/themes/"
+}