move lxsession screensaver checking to last, some systems still have the folder but don't use it

This commit is contained in:
Sam Detweiler 2019-12-24 06:55:12 -06:00
parent 5176b06b59
commit edd5e2f5bc
2 changed files with 210 additions and 109 deletions

View File

@ -3,8 +3,8 @@
# that it can detect if you have Node installed, run a binary script # that it can detect if you have Node installed, run a binary script
# and then download and run MagicMirror2. # and then download and run MagicMirror2.
if [ $USER == 'root' ]; then if [ $USER == 'root' ]; then
echo Please logon as a user to execute the MagicMirror installation, not root echo Please logon as a user to execute the MagicMirror installation, not root
exit 1 exit 1
fi fi
@ -19,7 +19,7 @@ echo '$$ | \_/ $$ |\$$$$$$$ |\$$$$$$$ |$$ |\$$$$$$$\ $$ | \_/ $$ |$$ |$$ |
echo '\__| \__| \_______| \____$$ |\__| \_______|\__| \__|\__|\__| \__| \______/ \__| \________|' echo '\__| \__| \_______| \____$$ |\__| \_______|\__| \__|\__|\__| \__| \______/ \__| \________|'
echo ' $$\ $$ |' echo ' $$\ $$ |'
echo ' \$$$$$$ |' echo ' \$$$$$$ |'
echo ' \______/' echo ' \______/'
echo -e "\e[0m" echo -e "\e[0m"
doInstall=1 doInstall=1
@ -38,7 +38,7 @@ trim() {
# remove leading whitespace characters # remove leading whitespace characters
var="${var#"${var%%[![:space:]]*}"}" var="${var#"${var%%[![:space:]]*}"}"
# remove trailing whitespace characters # remove trailing whitespace characters
var="${var%"${var##*[![:space:]]}"}" var="${var%"${var##*[![:space:]]}"}"
echo -n "$var" echo -n "$var"
} }
@ -58,27 +58,27 @@ logdir=$(dirname $($cmd -f "$0"))
# if the script was execute from the web # if the script was execute from the web
if [[ $logdir != *"MagicMirror/installers"* ]]; then if [[ $logdir != *"MagicMirror/installers"* ]]; then
# use the MagicMirror/installers folder, if setup # use the MagicMirror/installers folder, if setup
if [ -d MagicMirror ]; then if [ -d MagicMirror ]; then
cd ~/MagicMirror/installers >/dev/null cd ~/MagicMirror/installers >/dev/null
logdir=$(pwd) logdir=$(pwd)
cd - >/dev/null cd - >/dev/null
else else
# use the users home folder if initial install # use the users home folder if initial install
logdir=$HOME logdir=$HOME
fi fi
fi fi
logfile=$logdir/install.log logfile=$logdir/install.log
echo install log being saved to $logfile echo install log being saved to $logfile
# Determine which Pi is running. # Determine which Pi is running.
date +"install starting - %a %b %e %H:%M:%S %Z %Y" >>$logfile date +"install starting - %a %b %e %H:%M:%S %Z %Y" >>$logfile
ARM=$(uname -m) ARM=$(uname -m)
echo installing on $ARM processor system >>$logfile echo installing on $ARM processor system >>$logfile
echo the os is $(lsb_release -a 2>/dev/null) >> $logfile echo the os is $(lsb_release -a 2>/dev/null) >> $logfile
# Check the Raspberry Pi version. # Check the Raspberry Pi version.
if [ "$ARM" != "armv7l" ]; then if [ "$ARM" != "armv7l" ]; then
read -p "this appears not to be a Raspberry Pi 2 or 3, do you want to continue installation (y/N)?" choice read -p "this appears not to be a Raspberry Pi 2 or 3, do you want to continue installation (y/N)?" choice
if [[ $choice =~ ^[Nn]$ ]]; then if [[ $choice =~ ^[Nn]$ ]]; then
echo user stopped install on $ARM hardware >>$logfile echo user stopped install on $ARM hardware >>$logfile
echo -e "\e[91mSorry, your Raspberry Pi is not supported." echo -e "\e[91mSorry, your Raspberry Pi is not supported."
echo -e "\e[91mPlease run MagicMirror on a Raspberry Pi 2 or 3." echo -e "\e[91mPlease run MagicMirror on a Raspberry Pi 2 or 3."
@ -90,7 +90,7 @@ if [ "$ARM" != "armv7l" ]; then
# force_arch=-'--arch=armv7l' # force_arch=-'--arch=armv7l'
# fi # fi
fi fi
# Define helper methods. # Define helper methods.
function command_exists () { type "$1" &> /dev/null ;} function command_exists () { type "$1" &> /dev/null ;}
function verlte() { [ "$1" = "`echo -e "$1\n$2" | sort -V | head -n1`" ];} function verlte() { [ "$1" = "`echo -e "$1\n$2" | sort -V | head -n1`" ];}
@ -103,29 +103,29 @@ if [ $mac != 'Darwin' ]; then
update=$(sudo apt-get update 2>&1) update=$(sudo apt-get update 2>&1)
echo $update >> $logfile echo $update >> $logfile
update_rc=$? update_rc=$?
if [ $update_rc -ne 0 ]; then if [ $update_rc -ne 0 ]; then
echo -e "\e[91mUpdate failed, retrying installation ...\e[90m" | tee -a $logfile echo -e "\e[91mUpdate failed, retrying installation ...\e[90m" | tee -a $logfile
if [ $(echo $update | grep "apt-secure" | wc -l) -eq 1 ]; then if [ $(echo $update | grep "apt-secure" | wc -l) -eq 1 ]; then
update=$(sudo apt-get update --allow-releaseinfo-change 2>&1) update=$(sudo apt-get update --allow-releaseinfo-change 2>&1)
update_rc=$? update_rc=$?
echo $update >> $logfile echo $update >> $logfile
if [ $update_rc -ne 0 ]; then if [ $update_rc -ne 0 ]; then
echo "second apt-get update failed" $update | tee -a $logfile echo "second apt-get update failed" $update | tee -a $logfile
exit 1 exit 1
else else
echo "second apt-get update completed ok" >> $logfile echo "second apt-get update completed ok" >> $logfile
upgrade=$true upgrade=$true
fi fi
fi fi
else else
echo "apt-get update completed ok" >> $logfile echo "apt-get update completed ok" >> $logfile
upgrade=$true upgrade=$true
fi fi
if [ $upgrade -eq $true ]; then if [ $upgrade -eq $true ]; then
upgrade_result=$(sudo apt-get upgrade 2>&1) upgrade_result=$(sudo apt-get upgrade 2>&1)
upgrade_rc=$? upgrade_rc=$?
echo apt upgrade result ="rc=$upgrade_rc $upgrade_result" >> $logfile echo apt upgrade result ="rc=$upgrade_rc $upgrade_result" >> $logfile
fi fi
# Installing helper tools # Installing helper tools
echo -e "\e[96mInstalling helper tools ...\e[90m" | tee -a $logfile echo -e "\e[96mInstalling helper tools ...\e[90m" | tee -a $logfile
@ -167,7 +167,7 @@ else
fi fi
# Install or upgrade node if necessary. # Install or upgrade node if necessary.
if $NODE_INSTALL; then if $NODE_INSTALL; then
echo -e "\e[96mInstalling Node.js ...\e[90m" | tee -a $logfile echo -e "\e[96mInstalling Node.js ...\e[90m" | tee -a $logfile
# Fetch the latest version of Node.js from the selected branch # Fetch the latest version of Node.js from the selected branch
@ -175,8 +175,8 @@ if $NODE_INSTALL; then
# Only tested (stable) versions are recommended as newer versions could break MagicMirror. # Only tested (stable) versions are recommended as newer versions could break MagicMirror.
if [ $mac == 'Darwin' ]; then if [ $mac == 'Darwin' ]; then
brew install node brew install node
else else
NODE_STABLE_BRANCH="10.x" NODE_STABLE_BRANCH="10.x"
# sudo apt-get install --only-upgrade libstdc++6 # sudo apt-get install --only-upgrade libstdc++6
node_info=$(curl -sL https://deb.nodesource.com/setup_$NODE_STABLE_BRANCH | sudo -E bash - ) node_info=$(curl -sL https://deb.nodesource.com/setup_$NODE_STABLE_BRANCH | sudo -E bash - )
echo Node release info = $node_info >> $logfile echo Node release info = $node_info >> $logfile
@ -196,17 +196,17 @@ if $NODE_INSTALL; then
echo using release tar file = node_release-$node_ver.tar.gz >> $logfile echo using release tar file = node_release-$node_ver.tar.gz >> $logfile
sudo tar --strip-components 1 -xzf $HOME/node_release-$node_ver.tar.gz sudo tar --strip-components 1 -xzf $HOME/node_release-$node_ver.tar.gz
cd - >/dev/null cd - >/dev/null
rm ./node_release-$node_ver.tar.gz rm ./node_release-$node_ver.tar.gz
fi fi
# get the new node version number # get the new node version number
new_ver=$(node -v 2>&1) new_ver=$(node -v 2>&1)
# if there is a failure to get it due to a missing library # if there is a failure to get it due to a missing library
if [ $(echo $new_ver | grep "not found" | wc -l) -ne 0 ]; then if [ $(echo $new_ver | grep "not found" | wc -l) -ne 0 ]; then
# #
sudo apt-get install -y --only-upgrade libstdc++6 >> $logfile sudo apt-get install -y --only-upgrade libstdc++6 >> $logfile
fi fi
echo node version is $(node -v 2>&1 >>$logfile) echo node version is $(node -v 2>&1 >>$logfile)
fi fi
echo -e "\e[92mNode.js installation Done! version=$(node -v)\e[0m" | tee -a $logfile echo -e "\e[92mNode.js installation Done! version=$(node -v)\e[0m" | tee -a $logfile
fi fi
# Check if we need to install or upgrade npm. # Check if we need to install or upgrade npm.
@ -240,20 +240,20 @@ fi
# Install or upgrade node if necessary. # Install or upgrade node if necessary.
if $NPM_INSTALL; then if $NPM_INSTALL; then
echo -e "\e[96mInstalling npm ...\e[90m" | tee -a $logfile echo -e "\e[96mInstalling npm ...\e[90m" | tee -a $logfile
# Fetch the latest version of npm from the selected branch # Fetch the latest version of npm from the selected branch
# The NODE_STABLE_BRANCH variable will need to be manually adjusted when a new branch is released. (e.g. 7.x) # The NODE_STABLE_BRANCH variable will need to be manually adjusted when a new branch is released. (e.g. 7.x)
# Only tested (stable) versions are recommended as newer versions could break MagicMirror. # Only tested (stable) versions are recommended as newer versions could break MagicMirror.
#NODE_STABLE_BRANCH="9.x" #NODE_STABLE_BRANCH="9.x"
#curl -sL https://deb.nodesource.com/setup_$NODE_STABLE_BRANCH | sudo -E bash - #curl -sL https://deb.nodesource.com/setup_$NODE_STABLE_BRANCH | sudo -E bash -
# #
# if this is a mac, npm was installed with node # if this is a mac, npm was installed with node
if [ $mac != 'Darwin' ]; then if [ $mac != 'Darwin' ]; then
sudo apt-get install -y npm >>$logfile sudo apt-get install -y npm >>$logfile
fi fi
# update to the latest. # update to the latest.
echo upgrading npm to latest >> $logfile echo upgrading npm to latest >> $logfile
sudo npm i -g npm >>$logfile sudo npm i -g npm >>$logfile
@ -262,7 +262,7 @@ fi
# Install MagicMirror # Install MagicMirror
cd ~ cd ~
if [ $doInstall == 1 ]; then if [ $doInstall == 1 ]; then
if [ -d "$HOME/MagicMirror" ] ; then if [ -d "$HOME/MagicMirror" ] ; then
echo -e "\e[93mIt seems like MagicMirror is already installed." | tee -a $logfile echo -e "\e[93mIt seems like MagicMirror is already installed." | tee -a $logfile
echo -e "To prevent overwriting, the installer will be aborted." | tee -a $logfile echo -e "To prevent overwriting, the installer will be aborted." | tee -a $logfile
@ -274,9 +274,9 @@ if [ $doInstall == 1 ]; then
fi fi
echo -e "\e[96mCloning MagicMirror ...\e[90m" | tee -a $logfile echo -e "\e[96mCloning MagicMirror ...\e[90m" | tee -a $logfile
if git clone --depth=1 https://github.com/MichMich/MagicMirror.git; then if git clone --depth=1 https://github.com/MichMich/MagicMirror.git; then
echo -e "\e[92mCloning MagicMirror Done!\e[0m" | tee -a $logfile echo -e "\e[92mCloning MagicMirror Done!\e[0m" | tee -a $logfile
else else
echo -e "\e[91mUnable to clone MagicMirror." | tee -a $logfile echo -e "\e[91mUnable to clone MagicMirror." | tee -a $logfile
exit; exit;
fi fi
@ -288,7 +288,7 @@ if [ $doInstall == 1 ]; then
git checkout develop > /dev/null 2>&1 git checkout develop > /dev/null 2>&1
fi fi
echo -e "\e[96mInstalling dependencies ...\e[90m" | tee -a $logfile echo -e "\e[96mInstalling dependencies ...\e[90m" | tee -a $logfile
if npm install $force_arch; then if npm install $force_arch; then
echo -e "\e[92mDependencies installation Done!\e[0m" | tee -a $logfile echo -e "\e[92mDependencies installation Done!\e[0m" | tee -a $logfile
else else
echo -e "\e[91mUnable to install dependencies!" | tee -a $logfile echo -e "\e[91mUnable to install dependencies!" | tee -a $logfile
@ -311,8 +311,8 @@ if command_exists plymouth; then
fi fi
if sudo cp ~/MagicMirror/splashscreen/splash.png $THEME_DIR/MagicMirror/splash.png && sudo cp ~/MagicMirror/splashscreen/MagicMirror.plymouth $THEME_DIR/MagicMirror/MagicMirror.plymouth && sudo cp ~/MagicMirror/splashscreen/MagicMirror.script $THEME_DIR/MagicMirror/MagicMirror.script; then if sudo cp ~/MagicMirror/splashscreen/splash.png $THEME_DIR/MagicMirror/splash.png && sudo cp ~/MagicMirror/splashscreen/MagicMirror.plymouth $THEME_DIR/MagicMirror/MagicMirror.plymouth && sudo cp ~/MagicMirror/splashscreen/MagicMirror.script $THEME_DIR/MagicMirror/MagicMirror.script; then
echo echo
if [ "$(which plymouth-set-default-theme)." != "." ]; then if [ "$(which plymouth-set-default-theme)." != "." ]; then
if sudo plymouth-set-default-theme -R MagicMirror; then if sudo plymouth-set-default-theme -R MagicMirror; then
echo -e "\e[92mSplashscreen: Changed theme to MagicMirror successfully.\e[0m" | tee -a $logfile echo -e "\e[92mSplashscreen: Changed theme to MagicMirror successfully.\e[0m" | tee -a $logfile
else else
@ -334,16 +334,16 @@ read -p "Do you want use pm2 for auto starting of your MagicMirror (y/N)?" choic
if [[ $choice =~ ^[Yy]$ ]]; then if [[ $choice =~ ^[Yy]$ ]]; then
echo install and setup pm2 | tee -a $logfile echo install and setup pm2 | tee -a $logfile
# assume pm2 will be found on the path # assume pm2 will be found on the path
pm2cmd=pm2 pm2cmd=pm2
# check to see if already installed # check to see if already installed
pm2_installed=$(which $pm2cmd) pm2_installed=$(which $pm2cmd)
up="" up=""
if [ $mac == 'Darwin' ]; then if [ $mac == 'Darwin' ]; then
up="--unsafe-perm" up="--unsafe-perm"
launchctl=launchctl launchctl=launchctl
launchctl_path=$(which $launchctl) launchctl_path=$(which $launchctl)
`export PATH=$PATH:${launchctl_path%/$launchctl}` `export PATH=$PATH:${launchctl_path%/$launchctl}`
fi fi
# check to see if already installed # check to see if already installed
pm2_installed=$(which $pm2cmd) pm2_installed=$(which $pm2cmd)
if [ "$pm2_installed." != "." ]; then if [ "$pm2_installed." != "." ]; then
@ -356,68 +356,68 @@ if [[ $choice =~ ^[Yy]$ ]]; then
# force reinstall # force reinstall
pm2_installed= pm2_installed=
fi fi
fi fi
# if not installed # if not installed
if [ "$pm2_installed." == "." ]; then if [ "$pm2_installed." == "." ]; then
# install it. # install it.
echo pm2 not installed, installing >>$logfile echo pm2 not installed, installing >>$logfile
result=$(sudo npm install $up -g pm2 2>&1) result=$(sudo npm install $up -g pm2 2>&1)
echo pm2 install result $result >>$logfile echo pm2 install result $result >>$logfile
# if this is a mac # if this is a mac
if [ $mac == 'Darwin' ]; then if [ $mac == 'Darwin' ]; then
echo this is a mac, fixup for path >>$logfile echo this is a mac, fixup for path >>$logfile
# get the location of pm2 install # get the location of pm2 install
# parse the npm install output to get the command # parse the npm install output to get the command
pm2cmd=`echo $result | awk -F - '{print $1}' | tr -d '[:space:]'` pm2cmd=`echo $result | awk -F - '{print $1}' | tr -d '[:space:]'`
c='/pm2' c='/pm2'
# get the path only # get the path only
echo ${pm2cmd%$c} >installers/pm2path echo ${pm2cmd%$c} >installers/pm2path
fi fi
fi fi
echo get the pm2 platform specific startup command >>$logfile echo get the pm2 platform specific startup command >>$logfile
# get the platform specific pm2 startup command # get the platform specific pm2 startup command
v=$($pm2cmd startup | tail -n 1) v=$($pm2cmd startup | tail -n 1)
if [ $mac != 'Darwin' ]; then if [ $mac != 'Darwin' ]; then
# check to see if we can get the OS package name (Ubuntu) # check to see if we can get the OS package name (Ubuntu)
if [ $(which lsb_release| wc -l) >0 ]; then if [ $(which lsb_release| wc -l) >0 ]; then
# fix command # fix command
# if ubuntu 18.04, pm2 startup gets something wrong # if ubuntu 18.04, pm2 startup gets something wrong
if [ $(lsb_release -r | grep -m1 18.04 | wc -l) > 0 ]; then if [ $(lsb_release -r | grep -m1 18.04 | wc -l) > 0 ]; then
v=$(echo $v | sed 's/\/bin/\/bin:\/bin/') v=$(echo $v | sed 's/\/bin/\/bin:\/bin/')
fi fi
fi fi
fi fi
echo startup command = $v >>$logfile echo startup command = $v >>$logfile
# execute the command returned # execute the command returned
$v 2>&1 >>$logfile $v 2>&1 >>$logfile
echo pm2 startup command done >>$logfile echo pm2 startup command done >>$logfile
# is this is mac # is this is mac
# need to fix pm2 startup, only on catalina # need to fix pm2 startup, only on catalina
if [ $mac == 'Darwin' ];then if [ $mac == 'Darwin' ];then
if [ $(sw_vers -productVersion | head -c 6) == '10.15.' ]; then if [ $(sw_vers -productVersion | head -c 6) == '10.15.' ]; then
# only do if the faulty tag is present (pm2 may fix this, before the script is fixed) # only do if the faulty tag is present (pm2 may fix this, before the script is fixed)
if [ $(grep -m 1 UserName /Users/$USER/Library/LaunchAgents/pm2.$USER.plist | wc -l) -eq 1 ]; then if [ $(grep -m 1 UserName /Users/$USER/Library/LaunchAgents/pm2.$USER.plist | wc -l) -eq 1 ]; then
# copy the pm2 startup file config # copy the pm2 startup file config
cp /Users/$USER/Library/LaunchAgents/pm2.$USER.plist . cp /Users/$USER/Library/LaunchAgents/pm2.$USER.plist .
# edit out the UserName key/value strings # edit out the UserName key/value strings
sed -e '/UserName/{N;d;}' pm2.$USER.plist > pm2.$USER.plist.new sed -e '/UserName/{N;d;}' pm2.$USER.plist > pm2.$USER.plist.new
# copy the file back # copy the file back
sudo cp pm2.$USER.plist.new /Users/$USER/Library/LaunchAgents/pm2.$USER.plist sudo cp pm2.$USER.plist.new /Users/$USER/Library/LaunchAgents/pm2.$USER.plist
fi fi
fi fi
fi fi
# if the user is no pi, we have to fixup the pm2 json file # if the user is no pi, we have to fixup the pm2 json file
echo configure the pm2 config file for MagicMirror >>$logfile echo configure the pm2 config file for MagicMirror >>$logfile
if [ "$USER" != "pi" ]; then if [ "$USER" != "pi" ]; then
echo the user is not pi >>$logfile echo the user is not pi >>$logfile
# go to the installers folder` # go to the installers folder`
cd installers cd installers
# edit the startup script for the right user # edit the startup script for the right user
echo change mm.sh >>$logfile echo change mm.sh >>$logfile
if [ ! -e mm_temp.sh ]; then if [ ! -e mm_temp.sh ]; then
echo save copy of mm.sh >> $logfile echo save copy of mm.sh >> $logfile
cp mm.sh mm_temp.sh cp mm.sh mm_temp.sh
fi fi
if [ $(grep pi mm_temp.sh | wc -l) -gt 0 ]; then if [ $(grep pi mm_temp.sh | wc -l) -gt 0 ]; then
echo change hard coded pi username >> $logfile echo change hard coded pi username >> $logfile
sed 's/pi/'$USER'/g' mm_temp.sh >mm.sh sed 's/pi/'$USER'/g' mm_temp.sh >mm.sh
@ -425,14 +425,14 @@ if [[ $choice =~ ^[Yy]$ ]]; then
echo change relative home path to hard coded path >> $logfile echo change relative home path to hard coded path >> $logfile
hf=$(echo $HOME |sed 's/\//\\\//g') hf=$(echo $HOME |sed 's/\//\\\//g')
sed 's/\~/'$hf'/g' mm_temp.sh >mm.sh sed 's/\~/'$hf'/g' mm_temp.sh >mm.sh
fi fi
# edit the pms config file for the right user # edit the pms config file for the right user
echo change $PM2_FILE >>$logfile echo change $PM2_FILE >>$logfile
sed 's/pi/'$USER'/g' $PM2_FILE > pm2_MagicMirror_new.json sed 's/pi/'$USER'/g' $PM2_FILE > pm2_MagicMirror_new.json
# make sure to use the updated file # make sure to use the updated file
PM2_FILE=pm2_MagicMirror_new.json PM2_FILE=pm2_MagicMirror_new.json
# if this is a mac # if this is a mac
if [ $mac == 'Darwin' ]; then if [ $mac == 'Darwin' ]; then
# copy the path file to the system paths list # copy the path file to the system paths list
sudo cp ./pm2path /etc/paths.d sudo cp ./pm2path /etc/paths.d
# change the name of the home path for mac # change the name of the home path for mac
@ -446,7 +446,7 @@ if [[ $choice =~ ^[Yy]$ ]]; then
fi fi
echo start MagicMirror via pm2 now >>$logfile echo start MagicMirror via pm2 now >>$logfile
# tell pm2 to start the app defined in the config file # tell pm2 to start the app defined in the config file
$pm2cmd start $HOME/MagicMirror/installers/$PM2_FILE $pm2cmd start $HOME/MagicMirror/installers/$PM2_FILE
# tell pm2 to save that configuration, for start at boot # tell pm2 to save that configuration, for start at boot
echo save MagicMirror pm2 config now >>$logfile echo save MagicMirror pm2 config now >>$logfile
$pm2cmd save $pm2cmd save
@ -457,104 +457,104 @@ choice=n
read -p "Do you want to disable the screen saver? (y/N)?" choice read -p "Do you want to disable the screen saver? (y/N)?" choice
if [[ $choice =~ ^[Yy]$ ]]; then if [[ $choice =~ ^[Yy]$ ]]; then
# if this is a mac # if this is a mac
if [ $mac == 'Darwin' ]; then if [ $mac == 'Darwin' ]; then
# get the current setting # get the current setting
setting=$(defaults -currentHost read com.apple.screensaver idleTime) setting=$(defaults -currentHost read com.apple.screensaver idleTime)
# if its on # if its on
if [ $setting != 0 ] ; then if [ $setting != 0 ] ; then
# turn it off # turn it off
echo disable screensaver via mac profile >> $logfile echo disable screensaver via mac profile >> $logfile
defaults -currentHost write com.apple.screensaver idleTime 0 defaults -currentHost write com.apple.screensaver idleTime 0
else else
echo mac profile screen saver already disabled >> $logfile echo mac profile screen saver already disabled >> $logfile
fi fi
else else
# find out if some screen saver running # find out if some screen saver running
# get just the running processes and args # get just the running processes and args
# just want the program name (1st token) # just want the program name (1st token)
# find the 1st with 'saver' in it (should only be one) # find the 1st with 'saver' in it (should only be one)
# parse with path char, get the last field ( the actual pgm name) # parse with path char, get the last field ( the actual pgm name)
screen_saver_running=$(ps -A -o args | awk '{print $1}' | grep -m1 [s]aver | awk -F\/ '{print $NF}'); screen_saver_running=$(ps -A -o args | awk '{print $1}' | grep -m1 [s]aver | awk -F\/ '{print $NF}');
# if we found something # if we found something
if [ "$screen_saver_running." != "." ]; then if [ "$screen_saver_running." != "." ]; then
# some screensaver running # some screensaver running
case "$screen_saver_running" in case "$screen_saver_running" in
mate-screensaver) echo 'mate screen saver' >>$logfile mate-screensaver) echo 'mate screen saver' >>$logfile
#killall mate-screensaver >/dev/null 2>&1 #killall mate-screensaver >/dev/null 2>&1
#$ms -d >/dev/null 2>&1 #$ms -d >/dev/null 2>&1
gsettings set org.mate.screensaver lock-enabled false 2>/dev/null gsettings set org.mate.screensaver lock-enabled false 2>/dev/null
gsettings set org.mate.screensaver idle-activation-enabled false 2>/dev/null gsettings set org.mate.screensaver idle-activation-enabled false 2>/dev/null
gsettings set org.mate.screensaver lock_delay 0 2>/dev/null gsettings set org.mate.screensaver lock_delay 0 2>/dev/null
echo " $screen_saver_running disabled" >> $logfile echo " $screen_saver_running disabled" >> $logfile
DISPLAY=:0 mate-screensaver >/dev/null 2>&1 & DISPLAY=:0 mate-screensaver >/dev/null 2>&1 &
;; ;;
gnome-screensaver) echo 'gnome screen saver' >>$logfile gnome-screensaver) echo 'gnome screen saver' >>$logfile
gnome_screensaver-command -d >/dev/null 2>&1 gnome_screensaver-command -d >/dev/null 2>&1
echo " $screen_saver_running disabled" >> $logfile echo " $screen_saver_running disabled" >> $logfile
;; ;;
xscreensaver) echo 'xscreensaver running' | tee -a $logfile xscreensaver) echo 'xscreensaver running' | tee -a $logfile
if [ $(grep -m1 'mode:' ~/.xscreensaver | awk '{print $2}') != 'off' ]; then if [ $(grep -m1 'mode:' ~/.xscreensaver | awk '{print $2}') != 'off' ]; then
sed -i 's/$xsetting/mode: off/' ~/.xscreensaver sed -i 's/$xsetting/mode: off/' ~/.xscreensaver
echo " xscreensaver set to off" >> $logfile echo " xscreensaver set to off" >> $logfile
else else
echo " xscreensaver already disabled" >> $logfile echo " xscreensaver already disabled" >> $logfile
fi fi
;; ;;
gsd-screensaver | gsd-screensaver-proxy) gsd-screensaver | gsd-screensaver-proxy)
setting=$(gsettings get org.gnome.desktop.screensaver lock-enabled) setting=$(gsettings get org.gnome.desktop.screensaver lock-enabled)
setting1=$(gsettings get org.gnome.desktop.session idle-delay) setting1=$(gsettings get org.gnome.desktop.session idle-delay)
if [ "$setting $setting1" != 'false uint32 0' ]; then if [ "$setting $setting1" != 'false uint32 0' ]; then
echo disable screensaver via gsettings was $setting and $setting1>> $logfile echo disable screensaver via gsettings was $setting and $setting1>> $logfile
gsettings set org.gnome.desktop.screensaver lock-enabled false gsettings set org.gnome.desktop.screensaver lock-enabled false
gsettings set org.gnome.desktop.screensaver idle-activation-enabled false gsettings set org.gnome.desktop.screensaver idle-activation-enabled false
gsettings set org.gnome.desktop.session idle-delay 0 gsettings set org.gnome.desktop.session idle-delay 0
else else
echo gsettings screen saver already disabled >> $logfile echo gsettings screen saver already disabled >> $logfile
fi fi
;; ;;
*) echo "some other screensaver $screen_saver_running" found | tee -a $logfile *) echo "some other screensaver $screen_saver_running" found | tee -a $logfile
echo "please configure it manually" | tee -a $logfile echo "please configure it manually" | tee -a $logfile
;; ;;
esac esac
elif [ -e "/etc/lightdm/lightdm.conf" ]; then
# if screen saver NOT already disabled?
if [ $(grep 'xserver-command=X -s 0 -dpms' /etc/lightdm/lightdm.conf | wc -l) == 0 ]; then
echo install screensaver via lightdm.conf >> $logfile
sudo sed -i '/^\[Seat:\*\]/a xserver-command=X -s 0 -dpms' /etc/lightdm/lightdm.conf
else
echo screensaver via lightdm already disabled >> $logfile
fi
elif [ $(which gsettings | wc -l) == 1 ]; then
setting=$(gsettings get org.gnome.desktop.screensaver lock-enabled)
setting1=$(gsettings get org.gnome.desktop.session idle-delay)
if [ "$setting $setting1" != 'false uint32 0' ]; then
echo disable screensaver via gsettings was $setting and $setting1>> $logfile
gsettings set org.gnome.desktop.screensaver lock-enabled false
gsettings set org.gnome.desktop.screensaver idle-activation-enabled false
gsettings set org.gnome.desktop.session idle-delay 0
else
echo gsettings screen saver already disabled >> $logfile
fi
elif [ -d "/etc/xdg/lxsession" ]; then elif [ -d "/etc/xdg/lxsession" ]; then
currently_set=$(grep -m1 '\-dpms' /etc/xdg/lxsession/LXDE-pi/autostart) currently_set=$(grep -m1 '\-dpms' /etc/xdg/lxsession/LXDE-pi/autostart)
if [ "$currently_set." == "." ]; then if [ "$currently_set." == "." ]; then
echo disable screensaver via lxsession >> $logfile echo disable screensaver via lxsession >> $logfile
# turn it off for the future # turn it off for the future
sudo su -c "echo -e '@xset s noblank\n@xset s off\n@xset -dpms' >> /etc/xdg/lxsession/LXDE-pi/autostart" sudo su -c "echo -e '@xset s noblank\n@xset s off\n@xset -dpms' >> /etc/xdg/lxsession/LXDE-pi/autostart"
# turn it off now # turn it off now
export DISPLAY=:0; xset s noblank;xset s off;xset -dpms export DISPLAY=:0; xset s noblank;xset s off;xset -dpms
else else
echo lxsession screen saver already disabled >> $logfile echo lxsession screen saver already disabled >> $logfile
fi
elif [ $(which gsettings | wc -l) == 1 ]; then
setting=$(gsettings get org.gnome.desktop.screensaver lock-enabled)
setting1=$(gsettings get org.gnome.desktop.session idle-delay)
if [ "$setting $setting1" != 'false uint32 0' ]; then
echo disable screensaver via gsettings was $setting and $setting1>> $logfile
gsettings set org.gnome.desktop.screensaver lock-enabled false
gsettings set org.gnome.desktop.screensaver idle-activation-enabled false
gsettings set org.gnome.desktop.session idle-delay 0
else
echo gsettings screen saver already disabled >> $logfile
fi fi
elif [ -e "/etc/lightdm/lightdm.conf" ]; then
# if screen saver NOT already disabled?
if [ $(grep 'xserver-command=X -s 0 -dpms' /etc/lightdm/lightdm.conf | wc -l) == 0 ]; then
echo install screensaver via lightdm.conf >> $logfile
sudo sed -i '/^\[Seat:\*\]/a xserver-command=X -s 0 -dpms' /etc/lightdm/lightdm.conf
else
echo screensaver via lightdm already disabled >> $logfile
fi
else else
echo " " echo " "
echo -e "unable to disable screen saver, /etc/xdg/lxsession does not exist" | tee -a $logfile echo -e "unable to disable screen saver, /etc/xdg/lxsession does not exist" | tee -a $logfile
fi fi
fi fi
fi fi
echo " " echo " "
if [ $pm2setup -eq $true ]; then if [ $pm2setup -eq $true ]; then
rmessage="pm2 start MagicMirror" rmessage="pm2 start MagicMirror"

101
installers/screensaveroff.sh Executable file
View File

@ -0,0 +1,101 @@
#/bin/bash
logfile=~/screensaver.log
mac=$(uname -s)
if [ $mac == 'Darwin' ]; then
setting=$(defaults -currentHost read com.apple.screensaver idleTime)
if [ $setting != 0 ] ; then
echo disable screensaver via mac profile >> $logfile
defaults -currentHost write com.apple.screensaver idleTime 0
else
echo mac profile screen saver already disabled >> $logfile
fi
else
# find out if some screen saver running
# get just the running processes and args
# just want the program name
# find the 1st with 'saver' in it (should only be one)
# if the process name is a path, parse it and get the last field ( the actual pgm name)
screen_saver_running=$(ps -A -o args | awk '{print $1}' | grep -m1 [s]aver | awk -F\/ '{print $NF}');
# if we found something
if [ "$screen_saver_running." != "." ]; then
# some screensaver running
case "$screen_saver_running" in
mate-screensaver) echo 'mate screen saver' >>$logfile
#killall mate-screensaver >/dev/null 2>&1
#ms=$(which mate-screensaver-command)
#$ms -d >/dev/null 2>&1
gsettings set org.mate.screensaver lock-enabled false 2>/dev/null
gsettings set org.mate.screensaver idle-activation-enabled false 2>/dev/null
gsettings set org.mate.screensaver lock_delay 0 2>/dev/null
echo " $screen_saver_running disabled" >> $logfile
DISPLAY=:0 mate-screensaver >/dev/null 2>&1 &
;;
gnome-screensaver) echo 'gnome screen saver' >>$logfile
gnome_screensaver-command -d >/dev/null 2>&1
echo " $screen_saver_running disabled" >> $logfile
;;
xscreensaver) echo 'xscreensaver running' | tee -a $logfile
if [ $(grep -m1 'mode:' ~/.xscreensaver | awk '{print $2}') != 'off' ]; then
sed -i 's/$xsetting/mode: off/' ~/.xscreensaver
echo " xscreensaver set to off" >> $logfile
else
echo " xscreensaver already disabled" >> $logfile
fi
;;
gsd-screensaver | gsd-screensaver-proxy)
setting=$(gsettings get org.gnome.desktop.screensaver lock-enabled)
setting1=$(gsettings get org.gnome.desktop.session idle-delay)
if [ "$setting $setting1" != 'false uint32 0' ]; then
echo disable screensaver via gsettings was $setting and $setting1>> $logfile
gsettings set org.gnome.desktop.screensaver lock-enabled false
gsettings set org.gnome.desktop.screensaver idle-activation-enabled false
gsettings set org.gnome.desktop.session idle-delay 0
else
echo gsettings screen saver already disabled >> $logfile
fi
;;
*) echo "some other screensaver $screen_saver_running" found | tee -a $logfile
echo "please configure it manually" | tee -a $logfile
;;
esac
elif [ -e "/etc/lightdm/lightdm.conf" ]; then
# if screen saver NOT already disabled?
if [ $(grep 'xserver-command=X -s 0 -dpms' /etc/lightdm/lightdm.conf | wc -l) == 0 ]; then
echo install screensaver via lightdm.conf >> $logfile
sudo sed -i '/^\[Seat:\*\]/a xserver-command=X -s 0 -dpms' /etc/lightdm/lightdm.conf
#sudo cp _myconf /etc/lightdm/lightdm.conf
#rm _myconf >/dev/null
else
echo screensaver via lightdm already disabled >> $logfile
fi
elif [ $(which gsettings | wc -l) == 1 ]; then
setting=$(gsettings get org.gnome.desktop.screensaver lock-enabled)
setting1=$(gsettings get org.gnome.desktop.session idle-delay)
if [ "$setting $setting1" != 'false uint32 0' ]; then
echo disable screensaver via gsettings was $setting and $setting1>> $logfile
gsettings set org.gnome.desktop.screensaver lock-enabled false
gsettings set org.gnome.desktop.screensaver idle-activation-enabled false
gsettings set org.gnome.desktop.session idle-delay 0
else
echo gsettings screen saver already disabled >> $logfile
fi
elif [ -d "/etc/xdg/lxsession" ]; then
currently_set=$(grep -m1 '\-dpms' /etc/xdg/lxsession/LXDE-pi/autostart)
if [ "$currently_set." == "." ]; then
echo disable screensaver via lxsession >> $logfile
# turn it off for the future
sudo su -c "echo -e '@xset s noblank\n@xset s off\n@xset -dpms' >> /etc/xdg/lxsession/LXDE-pi/autostart"
# turn it off now
export DISPLAY=:0; xset s noblank;xset s off;xset -dpms
else
echo lxsession screen saver already disabled >> $logfile
fi
else
echo " "
echo -e "unable to disable screen saver, /etc/xdg/lxsession does not exist" | tee >>$logfile
fi
fi