Skip to content

Commit 352cd0d

Browse files
committed
feat: cli: add some autologin functions
1 parent d8e7c15 commit 352cd0d

1 file changed

Lines changed: 139 additions & 0 deletions

File tree

src/usr/lib/rsetup/cli/system.sh

Lines changed: 139 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)