@@ -177,3 +177,142 @@ set_led_netdev() {
177177 echo " 1" > " $node /rx"
178178 done
179179}
180+
181+ set_getty_autologin () {
182+ local user=" $1 " switch=" $2 " service=" $3 "
183+ local config_dir=" /etc/systemd/system/$service .d"
184+
185+ if [[ " $switch " == " ON" ]]; then
186+ mkdir -p " $config_dir "
187+ local cmd
188+ if grep -q " serial" <<< " $service" ; then
189+ cmd=" -/sbin/agetty -o '-p -f -- \\\\ u' --autologin $user --noclear --keep-baud 1500000,115200,57600,38400,9600 %I \$ TERM"
190+ else
191+ cmd=" -/sbin/agetty -o '-p -f -- \\\\ u' --autologin $user --noclear %I \$ TERM"
192+ fi
193+ cat << EOF | tee "$config_dir /50-rsetup-autologin.conf" >/dev/null
194+ # Auto generated by rsetup
195+ # DO NOT MODIFY!
196+ [Service]
197+ ExecStart=
198+ ExecStart=$cmd
199+ EOF
200+ else
201+ rm -f " $config_dir /50-rsetup-autologin.conf"
202+ fi
203+
204+ systemctl daemon-reload
205+ }
206+
207+ set_sddm_autologin () {
208+ local user=" $1 " switch=" $2 "
209+ local config_dir=" /etc/sddm.conf.d"
210+
211+ if [[ " $switch " == " ON" ]]; then
212+ mkdir -p " $config_dir "
213+ cat << EOF | tee "$config_dir /50-rsetup-autologin.conf" >/dev/null
214+ # Auto generated by rsetup
215+ # DO NOT MODIFY!
216+ [Autologin]
217+ User=$user
218+ Session=plasma
219+ EOF
220+ else
221+ rm -f " $config_dir /50-rsetup-autologin.conf"
222+ fi
223+ }
224+
225+ set_gdm_autologin () {
226+ local user=" $1 " switch=" $2 "
227+ local config_dir=" /etc/gdm3/"
228+
229+ if [[ " $switch " == " ON" ]]; then
230+ mkdir -p " $config_dir "
231+ sed -i ' /^# Rsetup/,/# Rsetup$/d' $config_dir /daemon.conf
232+ cat << EOF | tee -a $config_dir /daemon.conf >/dev/null
233+ # Rsetup
234+ # Auto generated by rsetup
235+ # DO NOT MODIFY!
236+ [daemon]
237+ AutomaticLogin=$user
238+ AutomaticLoginEnable=true
239+ # Rsetup
240+ EOF
241+ else
242+ sed -i ' /^# Rsetup/,/# Rsetup$/d' $config_dir /daemon.conf
243+ fi
244+ }
245+
246+ set_lightdm_autologin () {
247+ local user=" $1 " switch=" $2 "
248+ local config_dir=" /etc/lightdm/lightdm.conf.d/"
249+
250+ if [[ " $switch " == " ON" ]]; then
251+ mkdir -p " $config_dir "
252+ cat << EOF | tee -a $config_dir /50-rsetup-autologin.conf >/dev/null
253+ # Auto generated by rsetup
254+ # DO NOT MODIFY!
255+ [Seat:*]
256+ autologin-user=$user
257+ autologin-user-timeout=0
258+ EOF
259+ else
260+ rm -f " $config_dir /50-rsetup-autologin.conf"
261+ fi
262+ }
263+
264+ get_autologin_status () {
265+ local service=" $1 "
266+
267+ case " $service " in
268+ * getty@* .service)
269+ if grep -q -e " --autologin" <( grep -v ' ^#' " /etc/systemd/system/$service .d/50-rsetup-autologin.conf" )
270+ then
271+ echo " ON"
272+ else
273+ echo " OFF"
274+ fi
275+ ;;
276+ sddm.service)
277+ if grep -q -e " [Autologin]" -e " User=" -e " Session=plasma" <( grep -v ' ^#' " /etc/sddm.conf.d/50-rsetup-autologin.conf" )
278+ then
279+ echo " ON"
280+ else
281+ echo " OFF"
282+ fi
283+ ;;
284+ gdm.service)
285+ if grep -q -e " AutomaticLogin=" -e " AutomaticLoginEnable=true" <( grep -v ' ^#' " /etc/gdm3/daemon.conf" )
286+ then
287+ echo " ON"
288+ else
289+ echo " OFF"
290+ fi
291+ ;;
292+ lightdm.service)
293+ if grep -q -e " [Seat:*]" -e " autologin-user=" -e " autologin-user-timeout=0" <( grep -v ' ^#' " /etc/lightdm/lightdm.conf.d/50-rsetup-autologin.conf" )
294+ then
295+ echo " ON"
296+ else
297+ echo " OFF"
298+ fi
299+ ;;
300+ esac
301+ }
302+
303+ set_autologin_status () {
304+ local user=" $1 " service=" $2 " switch=" $3 "
305+
306+ case " $service " in
307+ * getty@* .service)
308+ set_getty_autologin " $user " " $switch " " $service "
309+ ;;
310+ sddm.service|gdm.service|lightdm.service)
311+ " set_${service/ .service} _autologin" " $user " " $switch "
312+ ;;
313+ * )
314+ echo " Invalid options: $service " >&2
315+ return 1
316+ ;;
317+ esac
318+ }
0 commit comments