Compare commits
7 Commits
1
...
efd9e3de04
Author | SHA1 | Date | |
---|---|---|---|
efd9e3de04 | |||
358968327d | |||
b96074afe0 | |||
e2afd229a6 | |||
5b9a369114 | |||
43c0b96405 | |||
48ff1a671e |
2
Makefile
2
Makefile
@@ -4,7 +4,7 @@ DATADIR ?= $(PREFIX)/share
|
||||
CONFDIR = /etc
|
||||
|
||||
install:
|
||||
sed "s/%DATADIR%/\/usr\/share/" lightdm-mobile-greeter.py > lightdm-mobile-greeter
|
||||
sed "s#%DATADIR%#$(DATADIR)#" lightdm-mobile-greeter.py > lightdm-mobile-greeter
|
||||
install -Dm755 lightdm-mobile-greeter -t $(DESTDIR)$(BINDIR)
|
||||
install -Dm644 style.css interface.ui -t $(DESTDIR)$(DATADIR)/lightdm-mobile-greeter
|
||||
install -Dm644 lightdm-mobile-greeter.desktop -t $(DESTDIR)$(DATADIR)/xgreeters
|
@@ -7,10 +7,7 @@ A simple log in screen for use on touch screens, designed for use on postmarketO
|
||||
make install
|
||||
```
|
||||
## Configuring
|
||||
/etc/lightdm_mobile_greeter.json
|
||||
```json
|
||||
{"user":"<YOUR USERNAME HERE>"}
|
||||
```
|
||||
As of version 3 I will now try to guess the user.
|
||||
|
||||
lightdm.conf
|
||||
```
|
||||
|
42
interface.ui
42
interface.ui
@@ -17,13 +17,14 @@
|
||||
<property name="orientation">vertical</property>
|
||||
<property name="halign">center</property>
|
||||
<property name="valign">center</property>
|
||||
<property name="hexpand">True</property>
|
||||
<property name="vexpand">True</property>
|
||||
<property name="spacing">12</property>
|
||||
<child>
|
||||
<object class="GtkLabel" id="prompt_label">
|
||||
<property name="visible">True</property>
|
||||
<property name="label">prompt label</property>
|
||||
<style>
|
||||
<class name="prompt" />
|
||||
</style>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
@@ -40,6 +41,9 @@
|
||||
<property name="caps_lock_warning">False</property>
|
||||
<property name="hexpand">True</property>
|
||||
<property name="vexpand">True</property>
|
||||
<style>
|
||||
<class name="pin" />
|
||||
</style>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
@@ -53,33 +57,27 @@
|
||||
<property name="only_digits">True</property>
|
||||
<property name="show_symbols">False</property>
|
||||
<property name="right_action">delete_btn</property>
|
||||
<property name="left_action">settings_btn</property>
|
||||
<property name="entry">pin_entry</property>
|
||||
<style>
|
||||
<class name="keypad"/>
|
||||
</style>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkBox">
|
||||
<property name="visible">True</property>
|
||||
<child>
|
||||
<object class="GtkButton">
|
||||
<property name="visible">True</property>
|
||||
<property name="label">Login</property>
|
||||
<signal name="clicked" handler="login_cb"/>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="expand">False</property>
|
||||
<property name="fill">True</property>
|
||||
<property name="pack_type">end</property>
|
||||
</packing>
|
||||
</child>
|
||||
<style>
|
||||
<class name="login_btn"/>
|
||||
</style>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkLabel" id="message_label">
|
||||
<property name="visible">True</property>
|
||||
<property name="label">message label</property>
|
||||
<property name="label"></property>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
@@ -99,7 +97,25 @@
|
||||
<object class="GtkImage">
|
||||
<property name="visible">True</property>
|
||||
<property name="icon_name">edit-clear-symbolic</property>
|
||||
<property name="icon_size">6</property>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
<object class="GtkButton" id="settings_btn">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">True</property>
|
||||
<property name="focus-on-click">False</property>
|
||||
<signal name="clicked" handler="de_popover"/>
|
||||
<child>
|
||||
<object class="GtkImage">
|
||||
<property name="visible">True</property>
|
||||
<property name="icon_name">applications-system-symbolic</property>
|
||||
<property name="icon_size">6</property>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
<object class="GtkPopover" id="de_select">
|
||||
<property name="relative_to">settings_btn</property>
|
||||
<property name="position">GTK_POS_RIGHT</property>
|
||||
</object>
|
||||
</interface>
|
||||
|
@@ -1,14 +1,6 @@
|
||||
#!/usr/bin/python3
|
||||
import gi
|
||||
from gi.repository import Gtk, Gdk, Handy, LightDM
|
||||
import json
|
||||
|
||||
|
||||
class Config:
|
||||
def __init__(self):
|
||||
with open("/etc/lightdm_mobile_greeter.json") as f:
|
||||
j = json.load(f)
|
||||
self.user = j["user"]
|
||||
|
||||
|
||||
class Handler:
|
||||
@@ -20,9 +12,28 @@ class Handler:
|
||||
self.greeter.connect("show-prompt", self.show_prompt)
|
||||
self.pmpt_label = builder.get_object("prompt_label")
|
||||
self.msg_label = builder.get_object("message_label")
|
||||
self.de_select = builder.get_object("de_select")
|
||||
vbox = Gtk.Box(orientation=Gtk.Orientation.VERTICAL, visible=True)
|
||||
self.de_select.add(vbox)
|
||||
self.greeter.connect_sync()
|
||||
self.conf = Config()
|
||||
self.greeter.authenticate(self.conf.user)
|
||||
self.user = LightDM.UserList.get_instance().get_users()[0].get_name()
|
||||
self.greeter.authenticate(self.user)
|
||||
self.session = self.greeter.get_default_session_hint()
|
||||
sessions = iter([(s.get_name(), s.get_key()) for s in LightDM.get_sessions()])
|
||||
name, key = sessions.__next__()
|
||||
first = Gtk.RadioButton.new_with_label(None, name)
|
||||
first.connect("toggled", self.session_change, key)
|
||||
vbox.add(first)
|
||||
for name, key in sessions:
|
||||
rb = Gtk.RadioButton.new_with_label_from_widget(first, name)
|
||||
rb.connect("toggled", self.session_change, key)
|
||||
vbox.add(rb)
|
||||
if self.session == key:
|
||||
rb.set_active(True)
|
||||
vbox.show_all()
|
||||
|
||||
def session_change(self, rb, key):
|
||||
self.session = key
|
||||
|
||||
def on_destry(self, window):
|
||||
Gtk.main_quit()
|
||||
@@ -39,9 +50,9 @@ class Handler:
|
||||
|
||||
def auth_complete(self, greeter):
|
||||
if greeter.get_is_authenticated():
|
||||
greeter.start_session_sync(None)
|
||||
greeter.start_session_sync(self.session)
|
||||
else:
|
||||
greeter.authenticate(self.conf.user)
|
||||
greeter.authenticate(self.user)
|
||||
|
||||
def show_msg(self, greeter, text, type):
|
||||
self.msg_label.set_text(text)
|
||||
@@ -49,6 +60,9 @@ class Handler:
|
||||
def show_prompt(self, greeter, text, type):
|
||||
self.pmpt_label.set_text(text)
|
||||
|
||||
def de_popover(self, settings_btn):
|
||||
self.de_select.popup()
|
||||
|
||||
|
||||
Handy.Keypad()
|
||||
builder: Gtk.Builder = Gtk.Builder.new_from_file(
|
||||
|
41
style.css
41
style.css
@@ -5,21 +5,15 @@ window * {
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
button {
|
||||
border: none;
|
||||
border-radius: 20em;
|
||||
}
|
||||
|
||||
window {
|
||||
background-color: black;
|
||||
}
|
||||
|
||||
button {
|
||||
border: 0;
|
||||
background: none;
|
||||
outline-style: dashed;
|
||||
margin: 0;
|
||||
border-width: 2px;
|
||||
padding: 16px 36px;
|
||||
}
|
||||
.keypad button {
|
||||
padding: 16px 16px;
|
||||
}
|
||||
label {
|
||||
font-weight: bold;
|
||||
}
|
||||
@@ -32,3 +26,28 @@ button:active {
|
||||
button:active label {
|
||||
color: black;
|
||||
}
|
||||
|
||||
hdykeypad > button label{
|
||||
font-size: 5em;
|
||||
font-weight: bold;
|
||||
padding: 10px;
|
||||
}
|
||||
|
||||
.login_btn > label {
|
||||
font-size: 2em;
|
||||
background-clip: padding-box;
|
||||
padding: 0.5em;
|
||||
}
|
||||
|
||||
.pin, .prompt {
|
||||
font-size: 2em;
|
||||
}
|
||||
|
||||
popover {
|
||||
background-color: black;
|
||||
font-size: 2em;
|
||||
}
|
||||
|
||||
popover radiobutton {
|
||||
padding: 1em;
|
||||
}
|
||||
|
Reference in New Issue
Block a user