feat: lightdm session startup and cleanup installer added
parent
e31ac0cce6
commit
38a7074f10
|
@ -0,0 +1,12 @@
|
||||||
|
#!/bin/bash
|
||||||
|
log=$HOME/.session/session.log
|
||||||
|
&>> $log
|
||||||
|
echo $USER $HOME
|
||||||
|
echo "lightdm login setup $(date)"
|
||||||
|
|
||||||
|
# example commands to run when logging in, here binding some other directories for the user
|
||||||
|
#echo "binding chromium browsers to .browsers"
|
||||||
|
#/usr/bin/bindfs --map=sysadmin/$USER:@users/@$USER /opt/chromium/default $HOME/.browsers/default
|
||||||
|
# bind alternate downloads directory
|
||||||
|
#/usr/bin/bindfs --map=sysadmin/$USER:@users/@$USER /data/downloads $HOME/Downloads
|
||||||
|
|
|
@ -0,0 +1,9 @@
|
||||||
|
#!/bin/bash
|
||||||
|
log=$HOME/.session/session.log
|
||||||
|
&>> $log
|
||||||
|
echo $USER $HOME
|
||||||
|
echo "lightdm logout cleanup $(date)"
|
||||||
|
# example complimentary cleanup here unmounting those mounted in session_login
|
||||||
|
#echo "un mounting chromium browsers from .browsers"
|
||||||
|
#/bin/fusermount -u $HOME/.browsers/default
|
||||||
|
#/bin/fusermount -u $HOME/Downloads
|
|
@ -0,0 +1,3 @@
|
||||||
|
#!/bin/bash
|
||||||
|
# run the session login script manually, used for debugging
|
||||||
|
sudo -E HOME=$HOME USER=$USER ./session_login
|
|
@ -0,0 +1,4 @@
|
||||||
|
#!/bin/bash
|
||||||
|
# run the session logout script manually, used for debugging
|
||||||
|
sudo -E HOME=$HOME USER=$USER /bin/bash session_logout
|
||||||
|
|
|
@ -0,0 +1,3 @@
|
||||||
|
[Seat:*]
|
||||||
|
session-cleanup-script=/opt/scripts/lightdm-cleanup.sh
|
||||||
|
session-setup-script=/opt/scripts/lightdm-setup.sh
|
|
@ -0,0 +1,28 @@
|
||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
function confirm()
|
||||||
|
{
|
||||||
|
echo -n "$@ "
|
||||||
|
read -e answer
|
||||||
|
for response in y Y yes YES Yes Sure sure SURE OK ok Ok
|
||||||
|
do
|
||||||
|
if [ "_$answer" == "_$response" ]
|
||||||
|
then
|
||||||
|
return 0
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
# Any answer other than the list above is considered a "no" answer
|
||||||
|
return 1
|
||||||
|
}
|
||||||
|
|
||||||
|
if [[ -d $HOME/.session ]]; then
|
||||||
|
echo $HOME/.session folder already exists
|
||||||
|
confirm "!overwrite??? (y/n)" || exit
|
||||||
|
/bin/cp -r -f $HOME/.session/ $HOME/.session-saved/
|
||||||
|
echo saved copy first to $HOME/.session-saved
|
||||||
|
fi
|
||||||
|
echo copying .session from $(pwd) to $HOME
|
||||||
|
/bin/cp -r -f .session/ $HOME
|
||||||
|
echo setting execute permissions
|
||||||
|
chmod +x $HOME/.session/*
|
|
@ -0,0 +1,4 @@
|
||||||
|
#!/bin/bash
|
||||||
|
echo "cleanup for ${USER}:${HOME} $(date)" >> /opt/scripts/lightdm.log
|
||||||
|
log=${HOME}/.session.log
|
||||||
|
if [[ -e $HOME/.session_logout ]]; then su -c "/bin/bash $HOME/.session_logout 1>>${log} 2>>${log} || true" $USER; fi
|
|
@ -0,0 +1,4 @@
|
||||||
|
#!/bin/bash
|
||||||
|
echo "setup for ${USER}:${HOME} $(date)" >> /opt/scripts/lightdm.log
|
||||||
|
log=${HOME}/.session.log
|
||||||
|
if [[ -e $HOME/.session_login ]]; then su -c "/bin/bash $HOME/.session_login 1>>${log} 2>>${log} || true" $USER; fi
|
|
@ -0,0 +1,67 @@
|
||||||
|
#!/bin/bash
|
||||||
|
loginout_install() {
|
||||||
|
module_load confirm
|
||||||
|
module_load helpers
|
||||||
|
|
||||||
|
[[ ! $(systemctl list-units | grep lightdm) ]] && echo lightdm not running on this machine, aborting && return
|
||||||
|
|
||||||
|
SDIR=$(adirname "$0")
|
||||||
|
|
||||||
|
pushd $SDIR &> /dev/null || exit
|
||||||
|
[[ ! -d /etc/lightdm/lightdm.conf.d ]] && mkdir -p /etc/lightdm/lightdm.conf.d
|
||||||
|
echo copying 50-setup-cleanup.conf to /etc/lightdm/lightdm.conf.d
|
||||||
|
sudo cp -f 50-setup-cleanup.conf /etc/lightdm/lightdm.conf.d
|
||||||
|
|
||||||
|
if [[ ! -d /opt/scripts ]]; then
|
||||||
|
if [[ ! $(mkdir -p /opt/scripts) ]]; then
|
||||||
|
_sudo="sudo"
|
||||||
|
[[ $($_sudo mkdir -p /opt/scripts) ]] && echo can not make /opt/scripts, aborting && return
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo copying lightdm-cleanup.sh and lightdm-setup.sh to /opt/scripts
|
||||||
|
$_sudo cp -f lightdm-*.sh /opt/scripts
|
||||||
|
|
||||||
|
|
||||||
|
popd >/dev/null
|
||||||
|
|
||||||
|
_user=${1:-${USER}}
|
||||||
|
confirm "add a user .session folder for $_user" && add_user_session $1
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
function add_user_session {
|
||||||
|
|
||||||
|
module_load confirm
|
||||||
|
module_load helpers
|
||||||
|
|
||||||
|
SDIR=$(adirname "$0")
|
||||||
|
# echo source directory: $SDIR
|
||||||
|
|
||||||
|
pushd $SDIR &> /dev/null || exit
|
||||||
|
|
||||||
|
_user=${1:-${USER}}
|
||||||
|
|
||||||
|
[[ ! $(user_exists $_user) ]] && echo user $_user does not exist, aborting && return
|
||||||
|
_home=$(bash -c "cd ~$(printf %q $_user) && pwd")
|
||||||
|
|
||||||
|
echo making $_home/.session folder for $_user
|
||||||
|
# mkdir $USER/.session
|
||||||
|
|
||||||
|
sudo -H -E -u "$_user" -s /bin/bash cpy.session.sh
|
||||||
|
|
||||||
|
popd >/dev/null
|
||||||
|
|
||||||
|
|
||||||
|
# confirm "do you want to install WidevineCDM for digital streaming rights?"
|
||||||
|
# if [ $? -eq 0 ]; then
|
||||||
|
# module_load widevine-install
|
||||||
|
# widevine_install
|
||||||
|
# fi
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
# if script was executed then call the function
|
||||||
|
(return 0 2>/dev/null) || loginout_install $@
|
|
@ -0,0 +1,51 @@
|
||||||
|
|
||||||
|
Lightdm (gdm) is the login manager for linux ubuntu and mint (by default)
|
||||||
|
|
||||||
|
If you need setup and cleanup that is ONLY done at lightdm login/logout then
|
||||||
|
one can run a script to setup and cleanup the session by
|
||||||
|
|
||||||
|
running the loginout-install script, requires sudo
|
||||||
|
|
||||||
|
`module_load loginout-install; loginout_install <user>` # default is current user
|
||||||
|
|
||||||
|
after loading common scripts this will ask if you want to add the .session folder for the user
|
||||||
|
|
||||||
|
or if you just need to add a user .session folder afterward
|
||||||
|
|
||||||
|
`module_load loginout-install; add_user_session <user>`
|
||||||
|
|
||||||
|
|
||||||
|
the script does this
|
||||||
|
|
||||||
|
in `/etc/lightdm/lightdm.conf.d` adds a file `50-setup-cleanup.conf`
|
||||||
|
|
||||||
|
```
|
||||||
|
[Seat:*]
|
||||||
|
session-cleanup-script=/opt/scripts/lightdm-cleanup.sh
|
||||||
|
session-setup-script=/opt/scripts/lightdm-setup.sh
|
||||||
|
```
|
||||||
|
|
||||||
|
in /opt/scripts put two files below and make sure they are +x executable
|
||||||
|
|
||||||
|
```
|
||||||
|
#!/bin/bash
|
||||||
|
#lightdm-setup.sh
|
||||||
|
echo "setup for ${USER}:${HOME} $(date)" >> /opt/scripts/lightdm.log
|
||||||
|
log=${HOME}/.session.log
|
||||||
|
if [[ -e $HOME/.session_login ]]; then su -c "/bin/bash $HOME/.session_login 1>>${log} 2>>${log} || true" $USER; fi
|
||||||
|
```
|
||||||
|
|
||||||
|
```
|
||||||
|
#!/bin/bash
|
||||||
|
#lightdm-cleanup.sh
|
||||||
|
echo "cleanup for ${USER}:${HOME} $(date)" >> /opt/scripts/lightdm.log
|
||||||
|
log=${HOME}/.session.log
|
||||||
|
if [[ -e $HOME/.session_logout ]]; then su -c "/bin/bash $HOME/.session_logout 1>>${log} 2>>${log} || true" $USER; fi
|
||||||
|
```
|
||||||
|
|
||||||
|
then in the user home puts
|
||||||
|
`.session_login` and `.session_logout` files both executable
|
||||||
|
in those you can do anything like bindfs and fusermount -u
|
||||||
|
|
||||||
|
make sure you restart lightdm or reboot
|
||||||
|
`sdr lightdm`
|
Reference in New Issue