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