Advertisement
victorbrca

kde_lockscreen.sh

May 23rd, 2018
7
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Bash 2.27 KB | None | 0 0
  1. #!/bin/bash
  2.  
  3. ################################################################################
  4. ################################################################################
  5. # Name:        kde_lockscreen.sh
  6. # Usage:      
  7. # Description:
  8. # Created:     2018-05-11
  9. # Copyright 2014, Victor Mendonca - http://victormendonca.com
  10. #                                 - https://github.com/victorbrca
  11. # License: Released under the terms of the GNU GPL license v3
  12. ################################################################################
  13. ################################################################################
  14.  
  15.  
  16. #-------------------------------------------------------------------------------
  17. # Sets variables
  18. #-------------------------------------------------------------------------------
  19.  
  20. log="/home/victor/bin/var/log/kde_lockscreen_${HOSTNAME}.log"
  21.  
  22.  
  23. #-------------------------------------------------------------------------------
  24. # Functions
  25. #-------------------------------------------------------------------------------
  26.  
  27. _logMe () {
  28.   echo -e "$(date)\t-\t${1}" >> "$log"
  29. }
  30.  
  31. _getMonitorStatus () {
  32.   monitor_status=$(xset -q | grep Monitor | awk '{print $NF}')
  33.   if [[ ! "$monitor_status" ]] ; then
  34.     _logMe "Could not set status"
  35.     sleep 10
  36.   fi
  37. }
  38.  
  39. _lockScreen () {
  40.   qdbus org.freedesktop.ScreenSaver /ScreenSaver Lock
  41. }
  42.  
  43. _getLockScreenStatus () {
  44.   # true - active
  45.   # false - disactive
  46.   screensaver_status=$(qdbus org.freedesktop.ScreenSaver /ScreenSaver GetActive)
  47. }
  48.  
  49. _main () {
  50.   # set -x
  51.   while true ; do
  52.     _getMonitorStatus
  53.     case "$monitor_status" in
  54.       Off|Standby|Suspend)
  55.         _getLockScreenStatus
  56.         if [[ "$screensaver_status" == true ]] ; then
  57.           sleep 10
  58.           continue
  59.         fi
  60.         cnt=0
  61.         while (( $cnt < 120 )) ; do
  62.           _getMonitorStatus
  63.           if [[ "$monitor_status" == "On" ]] ; then
  64.             continue 2
  65.           fi
  66.           let cnt+=1
  67.           sleep 1
  68.         done
  69.  
  70.         _lockScreen
  71.         echo "locked"
  72.         ;;
  73.     esac
  74.  
  75.     sleep 5
  76.   done
  77. }
  78.  
  79. #-------------------------------------------------------------------------------
  80. # Starts script
  81. #-------------------------------------------------------------------------------
  82.  
  83. _main
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement