1
0

4 Commits

Author SHA1 Message Date
914e62493a seperated build and install steps in Makefile 2020-05-17 11:16:08 +12:00
c566c508ae now tested and working 2020-04-27 08:47:49 +00:00
b0db4805a8 possibly unnessessary borrow muts removed 2020-04-27 13:11:34 +12:00
e49db66883 remove optimisations 2020-04-27 11:59:17 +12:00
3 changed files with 30 additions and 20 deletions

View File

@@ -12,6 +12,4 @@ gtk = "0.8.1"
lightdm = { git = "https://raatty.club:3000/raatty/lightdm-rs.git"} lightdm = { git = "https://raatty.club:3000/raatty/lightdm-rs.git"}
[profile.release] [profile.release]
codegen-units = 1
panic = "abort" panic = "abort"
opt-level = "z"

View File

@@ -3,7 +3,9 @@ BINDIR ?= $(PREFIX)/bin
DATADIR ?= $(PREFIX)/share DATADIR ?= $(PREFIX)/share
CONFDIR = /etc CONFDIR = /etc
install: target/release/lightdm-mobile-greeter: src/main.rs
RUSTFLAGS="-C link-arg=-s" cargo build --release cargo build --release
build: target/release/lightdm-mobile-greeter
install: build
install -Dm755 target/release/lightdm-mobile-greeter -t $(DESTDIR)$(BINDIR) install -Dm755 target/release/lightdm-mobile-greeter -t $(DESTDIR)$(BINDIR)
install -Dm644 lightdm-mobile-greeter.desktop -t $(DESTDIR)$(DATADIR)/xgreeters install -Dm644 lightdm-mobile-greeter.desktop -t $(DESTDIR)$(DATADIR)/xgreeters

View File

@@ -22,6 +22,12 @@ fn main() {
handler_borrowed.setup_greeter(handler.clone()); handler_borrowed.setup_greeter(handler.clone());
handler_borrowed.setup_de_select(handler.clone()); handler_borrowed.setup_de_select(handler.clone());
} }
{
let handler_borrowed = handler.borrow();
let greeter = handler_borrowed.greeter.as_ref().expect("no greeter");
let user = handler_borrowed.user.as_ref().expect("no user");
greeter.authenticate(Some(&user)).ok();
}
let handler_builder_clone = handler.clone(); let handler_builder_clone = handler.clone();
builder.connect_signals(move |_, name| { builder.connect_signals(move |_, name| {
let h_login_cb_clone = handler_builder_clone.clone(); let h_login_cb_clone = handler_builder_clone.clone();
@@ -142,7 +148,7 @@ impl Handler {
let handler_msg_clone = handler.clone(); let handler_msg_clone = handler.clone();
greeter.connect_show_message(move |_, msg, _| { greeter.connect_show_message(move |_, msg, _| {
handler_msg_clone handler_msg_clone
.borrow_mut() .borrow()
.msg_label .msg_label
.as_ref() .as_ref()
.expect("no msg label") .expect("no msg label")
@@ -151,29 +157,26 @@ impl Handler {
let handler_prmpt_clone = handler.clone(); let handler_prmpt_clone = handler.clone();
greeter.connect_show_prompt(move |_, msg, _| { greeter.connect_show_prompt(move |_, msg, _| {
handler_prmpt_clone handler_prmpt_clone
.borrow_mut() .borrow()
.pmpt_label .pmpt_label
.as_ref() .as_ref()
.expect("no msg label") .expect("no msg label")
.set_text(msg); .set_text(msg);
}); });
greeter.connect_to_daemon_sync().ok(); greeter.connect_to_daemon_sync().ok();
greeter.authenticate(Some(&self.user.clone().unwrap())).ok();
self.greeter = Some(greeter); self.greeter = Some(greeter);
} }
fn setup_de_select(&self, handler: Rc<RefCell<Self>>) { fn setup_de_select(&mut self, handler: Rc<RefCell<Self>>) {
{ {
let mut handler_borrowed = handler.borrow_mut(); let session = self
let session = handler_borrowed
.greeter .greeter
.as_ref() .as_ref()
.expect("wheres the greeter at") .expect("wheres the greeter at")
.get_default_session_hint() .get_default_session_hint()
.expect("no default session"); .expect("no default session");
handler_borrowed.session = Some(String::from(session)); self.session = Some(String::from(session));
} }
let first_handler = handler.clone();
let vbox = gtk::BoxBuilder::new() let vbox = gtk::BoxBuilder::new()
.orientation(gtk::Orientation::Vertical) .orientation(gtk::Orientation::Vertical)
.visible(true) .visible(true)
@@ -187,22 +190,29 @@ impl Handler {
}); });
let (name, key) = sessions.next().expect("no session"); let (name, key) = sessions.next().expect("no session");
let first = gtk::RadioButtonBuilder::new().label(&name).build(); let first = gtk::RadioButtonBuilder::new().label(&name).build();
first.connect_toggled(move |_| { let mut keys = Vec::new();
first_handler.borrow_mut().session = Some(key.clone()); let mut rbs = Vec::new();
}); keys.push(key);
rbs.push(first.clone());
vbox.add(&first); vbox.add(&first);
for (name, key) in sessions { for (name, key) in sessions {
let handler_clone = handler.clone();
let key_clone = key.clone(); let key_clone = key.clone();
let rb = gtk::RadioButton::new_with_label_from_widget(&first, &name); let rb = gtk::RadioButton::new_with_label_from_widget(&first, &name);
rb.connect_toggled(move |_| { keys.push(key);
handler_clone.borrow_mut().session = Some(key.clone()); rbs.push(rb.clone());
});
vbox.add(&rb); vbox.add(&rb);
if self.session.clone().expect("session not found") == key_clone { if self.session.clone().expect("session not found") == key_clone {
rb.set_active(true); rb.set_active(true);
} }
} }
let keys_iter = keys.iter();
for (rb, key) in rbs.iter().zip(keys_iter) {
let handler_clone = handler.clone();
let key_clone = key.clone();
rb.connect_toggled(move |_| {
handler_clone.borrow_mut().session = Some(key_clone.clone());
});
};
self.de_select.as_ref().expect("no de select").add(&vbox); self.de_select.as_ref().expect("no de select").add(&vbox);
vbox.show_all() vbox.show_all()
} }