#!/bin/sh # Largely adapted from xdm's init script: # Copyright 1998-2002, 2004, 2005 Branden Robinson . # Copyright 2006 Eugene Konev # # This is free software; you may redistribute it and/or modify # it under the terms of the GNU General Public License as # published by the Free Software Foundation; either version 2, # or (at your option) any later version. # # This is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License with # the Debian operating system, in /usr/share/common-licenses/GPL; if # not, write to the Free Software Foundation, Inc., 51 Franklin Street, # Fifth Floor, Boston, MA 02110-1301, USA. ### BEGIN INIT INFO # Provides: lightdm # Required-Start: $local_fs $remote_fs dbus # Required-Stop: $local_fs $remote_fs dbus # Should-Start: $named # Should-Stop: $named # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 # Short-Description: Start lightdm ### END INIT INFO set -e global HEED_DEFAULT_DISPLAY_MANAGER := '' # To start lightdm even if it is not the default display manager, change # HEED_DEFAULT_DISPLAY_MANAGER to "false." # Also overridable from command line like: # HEED_DEFAULT_DISPLAY_MANAGER=false /etc/init.d/lightdm start test -z $HEED_DEFAULT_DISPLAY_MANAGER && global HEED_DEFAULT_DISPLAY_MANAGER := 'true' global DEFAULT_DISPLAY_MANAGER_FILE := '/etc/X11/default-display-manager' global PATH := '/bin:/usr/bin:/sbin:/usr/sbin' global DAEMON := '/usr/sbin/lightdm' global PIDFILE := '/var/run/lightdm.pid' if test -r /etc/default/locale { source /etc/default/locale export LANG LANGUAGE } test -x $DAEMON || exit 0 source /lib/lsb/init-functions global SSD_START_ARGS := ""--pidfile $PIDFILE --name $[basename $DAEMON] --startas $DAEMON -- -d"" global SSD_STOP_ARGS := ""--pidfile $PIDFILE --name $[basename $DAEMON] --retry TERM/5/TERM/5"" matchstr $1 { start { if test $HEED_DEFAULT_DISPLAY_MANAGER = "true" && test -e $DEFAULT_DISPLAY_MANAGER_FILE && test $[cat $DEFAULT_DISPLAY_MANAGER_FILE] != "/usr/bin/lightdm" -a $[cat $DEFAULT_DISPLAY_MANAGER_FILE] != "/usr/sbin/lightdm" { echo "Not starting X display manager (lightdm); it is not the default" \ "display manager." } else { log_daemon_msg "Starting X display manager" "lightdm" start-stop-daemon --start --quiet $SSD_START_ARGS \ || log_progress_msg "already running" log_end_msg 0 } } restart { test -f $PIDFILE && /etc/init.d/lightdm stop test -f $PIDFILE && exit 1 /etc/init.d/lightdm start } stop { log_daemon_msg "Stopping X display manager" "lightdm" if ! test -f $PIDFILE { log_progress_msg "not running ($PIDFILE not found)" } else { start-stop-daemon --stop --quiet $SSD_STOP_ARGS global SSD_RES := $Status if test $SSD_RES -eq 1 { log_progress_msg "not running" } if test $SSD_RES -eq 2 { log_progress_msg "not responding to TERM signals" } else { if test -f $PIDFILE { log_progress_msg "(removing stale $PIDFILE)" rm $PIDFILE } } } log_end_msg 0 } force-reload { /etc/init.d/lightdm restart } * { echo "Usage: /etc/init.d/lightdm {start|stop|restart|force-reload}" exit 1 } } exit 0 (CommandList children: [ (C {(set)} {(-e)}) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:HEED_DEFAULT_DISPLAY_MANAGER) op: Equal rhs: {(SQ )} spids: [95] ) ] spids: [95] ) (AndOr children: [ (C {(Lit_Other "[")} {(-z)} {(DQ ($ VSub_Name "$HEED_DEFAULT_DISPLAY_MANAGER"))} {(Lit_Other "]")} ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:HEED_DEFAULT_DISPLAY_MANAGER) op: Equal rhs: {(true)} spids: [121] ) ] spids: [121] ) ] op_id: Op_DAmp ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:DEFAULT_DISPLAY_MANAGER_FILE) op: Equal rhs: {(/etc/X11/default-display-manager)} spids: [125] ) ] spids: [125] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:PATH) op: Equal rhs: {(/bin) (Lit_Other ":") (/usr/bin) (Lit_Other ":") (/sbin) (Lit_Other ":") (/usr/sbin)} spids: [129] ) ] spids: [129] ) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:DAEMON) op:Equal rhs:{(/usr/sbin/lightdm)} spids:[138])] spids: [138] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:PIDFILE) op: Equal rhs: {(/var/run/lightdm.pid)} spids: [141] ) ] spids: [141] ) (If arms: [ (if_arm cond: [ (Sentence child: (C {(Lit_Other "[")} {(-r)} {(/etc/default/locale)} {(Lit_Other "]")}) terminator: ) ] action: [(C {(.)} {(/etc/default/locale)}) (C {(export)} {(LANG)} {(LANGUAGE)})] spids: [-1 156] ) ] spids: [-1 170] ) (AndOr children: [(C {(test)} {(-x)} {($ VSub_Name "$DAEMON")}) (C {(exit)} {(0)})] op_id: Op_DPipe ) (C {(.)} {(/lib/lsb/init-functions)}) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:SSD_START_ARGS) op: Equal rhs: { (DQ ("--pidfile ") ($ VSub_Name "$PIDFILE") (" --name ") (CommandSubPart command_list: (CommandList children:[(C {(basename)} {($ VSub_Name "$DAEMON")})]) left_token: spids: [196 200] ) (" --startas ") ($ VSub_Name "$DAEMON") (" -- -d") ) } spids: [191] ) ] spids: [191] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:SSD_STOP_ARGS) op: Equal rhs: { (DQ ("--pidfile ") ($ VSub_Name "$PIDFILE") (" --name ") (CommandSubPart command_list: (CommandList children:[(C {(basename)} {($ VSub_Name "$DAEMON")})]) left_token: spids: [211 215] ) (" --retry TERM/5/TERM/5") ) } spids: [206] ) ] spids: [206] ) (Case to_match: {(DQ ($ VSub_Number "$1"))} arms: [ (case_arm pat_list: [{(start)}] action: [ (If arms: [ (if_arm cond: [ (Sentence child: (AndOr children: [ (C {(Lit_Other "[")} {(DQ ($ VSub_Name "$HEED_DEFAULT_DISPLAY_MANAGER"))} {(Lit_Other "=")} {(DQ (true))} {(Lit_Other "]")} ) (AndOr children: [ (C {(Lit_Other "[")} {(-e)} {($ VSub_Name "$DEFAULT_DISPLAY_MANAGER_FILE")} {(Lit_Other "]")} ) (C {(Lit_Other "[")} { (DQ (CommandSubPart command_list: (CommandList children: [ (C {(cat)} {($ VSub_Name "$DEFAULT_DISPLAY_MANAGER_FILE")} ) ] ) left_token: spids: [266 270] ) ) } {(KW_Bang "!") (Lit_Other "=")} {(DQ (/usr/bin/lightdm))} {(-a)} { (DQ (CommandSubPart command_list: (CommandList children: [ (C {(cat)} {($ VSub_Name "$DEFAULT_DISPLAY_MANAGER_FILE")} ) ] ) left_token: spids: [283 287] ) ) } {(KW_Bang "!") (Lit_Other "=")} {(DQ (/usr/sbin/lightdm))} {(Lit_Other "]")} ) ] op_id: Op_DAmp ) ] op_id: Op_DAmp ) terminator: ) ] action: [ (C {(echo)} {(DQ ("Not starting X display manager (lightdm); it is not the default"))} {(DQ ("display manager."))} ) ] spids: [-1 300] ) ] else_action: [ (C {(log_daemon_msg)} {(DQ ("Starting X display manager"))} {(DQ (lightdm))}) (AndOr children: [ (C {(start-stop-daemon)} {(--start)} {(--quiet)} {($ VSub_Name "$SSD_START_ARGS")}) (C {(log_progress_msg)} {(DQ ("already running"))}) ] op_id: Op_DPipe ) (C {(log_end_msg)} {(0)}) ] spids: [316 354] ) ] spids: [229 230 357 -1] ) (case_arm pat_list: [{(restart)}] action: [ (AndOr children: [ (C {(Lit_Other "[")} {(-f)} {($ VSub_Name "$PIDFILE")} {(Lit_Other "]")}) (C {(/etc/init.d/lightdm)} {(stop)}) ] op_id: Op_DAmp ) (AndOr children: [ (C {(Lit_Other "[")} {(-f)} {($ VSub_Name "$PIDFILE")} {(Lit_Other "]")}) (C {(exit)} {(1)}) ] op_id: Op_DAmp ) (C {(/etc/init.d/lightdm)} {(start)}) ] spids: [361 362 400 -1] ) (case_arm pat_list: [{(stop)}] action: [ (C {(log_daemon_msg)} {(DQ ("Stopping X display manager"))} {(DQ (lightdm))}) (If arms: [ (if_arm cond: [ (Sentence child: (Pipeline children: [ (C {(Lit_Other "[")} {(-f)} {($ VSub_Name "$PIDFILE")} {(Lit_Other "]")}) ] negated: True ) terminator: ) ] action: [ (C {(log_progress_msg)} {(DQ ("not running (") ($ VSub_Name "$PIDFILE") (" not found)"))} ) ] spids: [-1 432] ) ] else_action: [ (C {(start-stop-daemon)} {(--stop)} {(--quiet)} {($ VSub_Name "$SSD_STOP_ARGS")}) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:SSD_RES) op: Equal rhs: {($ VSub_QMark "$?")} spids: [456] ) ] spids: [456] ) (If arms: [ (if_arm cond: [ (Sentence child: (C {(Lit_Other "[")} {($ VSub_Name "$SSD_RES")} {(-eq)} {(1)} {(Lit_Other "]")} ) terminator: ) ] action: [(C {(log_progress_msg)} {(DQ ("not running"))})] spids: [-1 473] ) ] spids: [-1 483] ) (If arms: [ (if_arm cond: [ (Sentence child: (C {(Lit_Other "[")} {($ VSub_Name "$SSD_RES")} {(-eq)} {(2)} {(Lit_Other "]")} ) terminator: ) ] action: [(C {(log_progress_msg)} {(DQ ("not responding to TERM signals"))})] spids: [-1 499] ) ] else_action: [ (If arms: [ (if_arm cond: [ (Sentence child: (C {(Lit_Other "[")} {(-f)} {($ VSub_Name "$PIDFILE")} {(Lit_Other "]")}) terminator: ) ] action: [ (C {(log_progress_msg)} {(DQ ("(removing stale ") ($ VSub_Name "$PIDFILE") (")"))} ) (C {(rm)} {($ VSub_Name "$PIDFILE")}) ] spids: [-1 523] ) ] spids: [-1 540] ) ] spids: [509 543] ) ] spids: [444 546] ) (C {(log_end_msg)} {(0)}) ] spids: [404 405 554 -1] ) (case_arm pat_list: [{(force-reload)}] action: [(C {(/etc/init.d/lightdm)} {(restart)})] spids: [557 558 566 -1] ) (case_arm pat_list: [{(Lit_Other "*")}] action: [ (C {(echo)} {(DQ ("Usage: /etc/init.d/lightdm {start|stop|restart|force-reload}"))}) (C {(exit)} {(1)}) ] spids: [570 571 586 -1] ) ] spids: [220 226 588] ) (C {(exit)} {(0)}) ] )