Summary
I have a spare iMac 2012 and it has been working with Debian in external SDD because the internal hard drive stopped working with recent MacOS.
The iMac acts as server and it is facing to the bathroom. Now, when I am in the bathroom, I cannot check the time unless I bring a mobile device.
So I decided to make the server show the time with some nice things when I am in the bathroom. And to make the project bit challenging, I also decied to turn on the monitor only if I went to the bathroom so that it is usually turned off.
This could be done in a different way as you make the server autologin at first, but I just decided to do in this way for now.
Notice
Since this is for Linux environment, you would need to spend your own time to investigate to make the follwoings work for your situation, but it would work regadless if you can apply the steps fundamentally.
Steps
Install Programs
mkdir -p /usr/local/src/3ximus/aerial-sddm-theme
cd /usr/local/src/3ximus/aerial-sddm-theme
git clone https://github.com/3ximus/aerial-sddm-theme.git .
cd /usr/share/sddm/themes
ln -s /usr/local/src/3ximus/aerial-sddm-theme
aptitude install motion unclutter-xfixes
Open the setting
Login Screen (SDDM)
in KDE PlasmaSelect
Aerial HD Video
Amend Files
/etc/motion/motion.conf
==========
# I guess I did not have to do this, but just in case
target_dir /dev/null
movie_output off
webcontrol_port 0
webcontrol_localhost on
# Reduce CPU Usage
width 640
height 480
#
# Turn on monitor when someone passed by
#
# Execute your own script so that you do not need
# to restart SDDM during the investigation in case
# you need to do that for your environment:
#
# - This way avoids you to have to "service sddm restart"
# and then wait until your monitor gets turned off
#
# - The last "logger" sends the output from
# "poke-monitor" to "/var/log/messages"
# so that you can debug easier
#
on_motion_detected '/usr/local/bin/poke-monitor 2>&1 | logger'
/usr/share/sddm/scripts/Xsetup
========
# Hide mouse cursor
/usr/bin/unclutter -idle 1 -root &
# Remove lock file if exists
# Refer the comment for "/usr/local/bin/poke-monitor"
# for more details
lockfile=/var/lock/poke-monitor
if [ -f "$lockfile" ];
then
rm -f $lockfile
fi
# Kill the script in case it is running/waiting
killall poke-monitor
# Disable systemd service for motion if running
# (It does not work otherwise)
isMotionServiceRunning=$(systemctl status motion.service | egrep "Active.+running")
if [ -n "$isMotionServiceRunning" ];
then
systemctl stop motion.service
systemctl disable motion.service
fi
# Run motion
/usr/bin/motion &
/usr/local/bin/poke-monitor
========
#!/bin/bash
# You may need to amend this file to suit to your environment
# For example, I use KDE Plasma and how this script checks
# if GUI is used, relies on that situation
# This event occurs a lot so it tries to avoid processing
# while it is processing by using the lock file
lockfile=/var/lock/poke-monitor
if [ -f "$lockfile" ];
then
exit
fi
finish () {
sleep 60
rm -f $lockfile
}
touch $lockfile
sync; sync
# Not to process if someone is using GUI
loggedin=`w | egrep "tty.+startplasma"`
if [ -n "$loggedin" ];
then
echo "GUI is used"
finish
exit
fi
echo "Turning on monitor"
# This shows the screen having some output from kernel
# kill -TERM `pidof sddm` &> /dev/null
xset dpms force off
sleep 1
xset dpms force on
# Avoid processing within the next short period of time
# because the monitor would be still turned on
finish
Optional - Increase the font size of clock etc
cd /usr/local/src/3ximus/aerial-sddm-theme
git checkout -b custom
cp /usr/lib/x86_64-linux-gnu/qt5/qml/SddmComponents/Clock.qml components/CustomClock.qml
#
# Muck around these files
#
# - /usr/local/src/3ximus/aerial-sddm-theme/theme.conf
#
# - /usr/local/src/3ximus/aerial-sddm-theme/components/CustomClock.qml
#
# - /usr/local/src/3ximus/aerial-sddm-theme/Main.qml
Things I did not have to apply
During the investigation I found these things.
Leaving the notes in case I need to refer for something else to do.
Allow the user motion
to restart SDDM
/etc/sudoers.d/sddm-sudoers
==========
Cmnd_Alias RESTARTSERVER_SDDM = /usr/bin/systemctl restart sddm.service
motion ALL=(ALL) NOPASSWD: RESTARTSERVER_SDDM
Defaults!RESTARTSERVER_SDDM !requiretty
Make Motion to restart SDDM in Daemon Mode
/etc/default/motion
==========
start_motion_daemon=yes
/etc/motion/motion.conf
==========
daemon on
on_motion_detected 'sudo systemctl restart sddm.service'
References
-
/usr/lib/x86_64-linux-gnu/qt5/qml/SddmComponents/Clock.qml
- Can be somewhere else if your environment is not Debian based.
KDE Plasma + SDDM gets black screen with cursor after waking up from sleep
Top comments (0)