Using GI isn't going to work outside of a launched greeter. i don't believe the communication between the daemon and greeter can happen without the daemon setting things up. So that might be a red herring.
And for where it gets set:
lightdm.c: config_set_string() lightdm.c: seat_set_property () seat.c: display_set_user_session () display.c: greeter_set_hint ()
Using GI isn't going to work outside of a launched greeter. i don't believe the communication between the daemon and greeter can happen without the daemon setting things up. So that might be a red herring.
And for where it gets set:
lightdm.c: config_set_string() set_user_ session ()
lightdm.c: seat_set_property ()
seat.c: display_
display.c: greeter_set_hint ()