2# -*- Mode: sh; indent-tabs-mode: nil; tab-width: 4 -*-
4# Copyright (C) 2011,2013 Canonical Ltd
5# Author: Michael Terry <michael.terry@canonical.com>
7# This program is free software: you can redistribute it and/or modify it under
8# the terms of the GNU General Public License as published by the Free Software
9# Foundation, version 3 of the License.
11# See http://www.gnu.org/copyleft/gpl.html the full text of the license.
13# This wrapper merely ensures that init and friends live only as long as this
14# script does. Otherwise, it's very easy for some processes to not notice that
15# the session died. We could try to do this in-process, but we want to do this
16# cleanup even if the greeter aborts.
23 # Kill upstart and indicators
24 if [ -n "$INIT_PID" ]; then
27 if [ -n "$DBUS_PID" ]; then
30 if [ -n "$CMD_PID" ]; then
39 gdbus call --session --dest org.freedesktop.DBus --object-path /org/freedesktop/DBus --method org.freedesktop.DBus.UpdateActivationEnvironment "{'$1': '$2'}"
40 if [ -n "$INIT_PID" ]; then
41 initctl set-env --global "$1=$2"
45# Start dbus if it hasn't already been started for us (such as on the Desktop
46# images by dbus-launch). We don't want to use dbus-launch ourselves because
47# we don't want dbus-x11 on the Touch images.
48if [ -z "$DBUS_SESSION_BUS_ADDRESS" ]; then
49 export DBUS_SESSION_BUS_ADDRESS=unix:abstract=$(mktemp -u /tmp/dbus-XXXXXXXXXX)
50 DBUS_PID=$(dbus-daemon --fork --session --print-pid --address="$DBUS_SESSION_BUS_ADDRESS")
53SUB_SOCKET=$XDG_RUNTIME_DIR/mir_socket
54rm -f $SUB_SOCKET # clear socket in case we were hard shut down
56# If touch session script (which sets up grid units and mir variables) is available, use it
58if [ -x /usr/bin/ubuntu-touch-session ]; then
59 TOUCH_WRAPPER=/usr/bin/ubuntu-touch-session
62# Pretend that we're in an ubuntu-touch session, so that indicator-network
64export DESKTOP_SESSION=ubuntu-touch
66# We disable ofono using pulse. It causes problems with racing with the user's
67# pulse. We need to come up with a better long-term fix for this, because we
68# eventually need the greeter to play ringtones for users that aren't logged in.
69set_greeter_var PA_DISABLED 1
71# Normal unity8 sessions are entirely driven by Upstart. But greeters
72# are special. They need access to the file descriptors that lightdm
73# creates for them and don't want to start all the services that a normal
74# session would. So it's inconvenient to live within an upstart session.
75# But... we still want to use Upstart for some services. So launch here.
76USC_SOCKET=$MIR_SOCKET MIR_SOCKET=$SUB_SOCKET $TOUCH_WRAPPER /sbin/init --user --no-startup-event &
78while [ ! -e "$XDG_RUNTIME_DIR/upstart/sessions/$INIT_PID.session" ]; do sleep 0.1; done
79export UPSTART_SESSION=$(/sbin/initctl list-sessions | grep "^$INIT_PID " | cut -d' ' -f2)
81# Start any pre-greeter tasks if needed (like wizard)
82/sbin/initctl emit unity8-greeter-starting
84# Define language here for phone if available. When phone user switches their
85# language, they expect that to affect the greeter too. But the user doesn't
86# have permission to switch system language, only their own. So we notice if
87# the phablet user exists and use their language if so. TODO: talk to design
88# about whether we should switch language on fly as users are selected (this
89# is very hard to do technically).
91# Do this after unity8-greeter-starting, in case a customization upstart job
93if [ "$(id -u phablet 2>/dev/null)" = "32011" ]; then
94 USER_LANG=$(gdbus call --system --dest org.freedesktop.Accounts --object-path /org/freedesktop/Accounts/User32011 --method org.freedesktop.DBus.Properties.Get org.freedesktop.Accounts.User Language | cut -d\' -f2)
95 if [ -n "$USER_LANG" ]; then
96 set_greeter_var LANGUAGE "$USER_LANG"
98 USER_LOCALE=$(gdbus call --system --dest org.freedesktop.Accounts --object-path /org/freedesktop/Accounts/User32011 --method org.freedesktop.DBus.Properties.Get org.freedesktop.Accounts.User FormatsLocale | cut -d\' -f2)
99 if [ -n "$USER_LOCALE" ]; then
100 set_greeter_var LANG "$USER_LOCALE"
101 set_greeter_var LC_ALL "$USER_LOCALE"
105# And finally actually start the greeter
106exec env MIR_SERVER_FILE=$SUB_SOCKET $TOUCH_WRAPPER $@ &
keysesc to close
- j k
- move down, up
- enter
- open
- esc
- back, or up a level
- 1 2 3 4
- readme, files, commits, refs
- /
- filter
- y
- copy the clone command
- c
- compare the chosen commit with another (or shift-click both)
- ?
- show or hide this list