每隔25分钟电脑lock 5分钟,适合长期在电脑前工作的人 on ubuntu


TakeaBreak

https://github.com/slgobinath/SafeEyes

Crude, minimalist, command-line way:

sleep 1500; gnome-screensaver-command -l; sleep 300; killall gnome-screensaver

That can also be turned into a desktop shortcut or turned into function in .bashrc

Why 1500 and 300? because that's seconds, 1500 seconds /60 seconds per minute = 25 minutes.

Below is a script for a timer that allows setting variable session and break time, as well as methods of signalling the break.

Remember that any script on linux must be saved as a file and have executable permissions set with chmod +x /path/to/script.sh. Once that is done, you can bind the script to a shortcut as show in How do I bind .sh files to keyboard combination? or create a desktop shortcut as shown in How can I create launchers on my desktop?

When you launch the script you should see a menu like this:

#!/bin/bash

# Author: Serg Kolo
# Date : Nov 17th, 2015
# Purpose: pomodoro timer script,
# with bunch of options
# Written for: https://askubuntu.com/q/696620/295286

#####################################################
# screenSaver function
# this one uses gnome-screensaver-command for locking
# and killall for unlocking the screen;
# $1 is provided from chooseBreakMethod function
#####################################################

function screenSaver
{
  gnome-screensaver-command -l; sleep $1 ; killall gnome-screensaver 
}


##############################################
# dialogBreak function
# this serves as "screensaver". The screen is never 
# actually locked but rather we open terminal window 
# with a simple command line dialog
# in full sccrean mode
# $1 provided in chooseBreakMethod function
##################################################
function dialogBreak
{
 gnome-terminal --full-screen  -e  "bash -c 'sleep $1 | dialog --progressbox \"TAKE A BREAK\" 100 100 ' "
}

#################################################################
# dimScreen function 
# dims the screen using xrandr; the --brightness 
# can be configured
# for full or partial dimming using decimal values
# from 1 to 0
# $1 is provided from chooseBreakMethod function
################################################################

function dimScreen
{
  xrandr  | awk '$2 == "connected" {print $1}' | xargs -I % xrandr --output % --brightness 0.5
  notify-send 'Take a Break'
  sleep $1
  xrandr  | awk '$2 == "connected" {print $1}' | xargs -I % xrandr --output % --brightness 1
}

##############################
# getSettings function
# This is where the user enters 
# the settings they want
# All the values must be integers
#############################
function getSettings
{
  FORM=$(zenity --forms \ --title="Sergiy's Tomato Script" --text="Choose this session options" \
   --add-entry="Number of Sessions (how many loops)" \
   --add-entry="Session time (minutes)" \
   --add-entry="Break time (minutes)" \
   --add-entry="Dim,dialog,or screensaver? (1,2,3)" \
   --separator=" " )  

  [ $? -eq 0 ] || exit 1

   echo $FORM
}

################################
# chooseBreakMethod function
# A helper function that calls appropriate
# break method, based on the value we got
# from getSettings function
# Because dialogBreak calls gnome-terminal
# this function exits, so it doesn't wait
# Therefore we need to add additional sleep
# command
###############################

function chooseBreakMethod
{

 # $1 is method passed from  ${SETS[3]}
 # $2 is break time passed from ${SETS[2]}
  case $1 in
    1) dimScreen $2 ;;
        2) dialogBreak $2 ; sleep $2 ;;
    3) screenSaver $2 ;;
  esac

}


function minutesToSeconds
{
  echo $(($1*60))
}

#################
# MAIN
#################

# get user settings and store them into array
# Item 0 : num sessions
# Item 1 : session duration
# Item 2 : break duration
# Item 3 : break method - lockscreen, dialog, or just
# turn off the screen 
# SETS == settings
SETS=( $(getSettings) )

COUNTER=${SETS[0]}

#######################################
# This is where most of the job is done
# we loop according to number of session
# specified in the  getSettings function
#########################################

notify-send 'Session started'
while [ $COUNTER -ne 0  ]; do

  sleep $( minutesToSeconds ${SETS[1]} ) # session timer
  chooseBreakMethod ${SETS[3]} $( minutesToSeconds ${SETS[2]} )
  COUNTER=$(($COUNTER-1))
done

notify-send "tomatoScript is done"
####### END OF SCRIT ###########






You may also want to consider Workrave. I found it easy to use and highly customizable. It also has some preatty nice stats about how you use the computer and how many breaks you take. Lastly, I believe it can also sync itself between many computers, which is useful if, for example, you work both on the laptop and on a school computer.



I have used xwrits for many years for this purpose.

sudo apt-get install xwrits

It defaults to a 5 minute break every 55 minutes, but according to the man page these times are customizable via the breaktime and typetime commandline options, respectively. You can also control whether it locks the screen using the +lock option. So to set it for a 5 minute break every 25 minutes locking you out, you should run it like this

xwrits typetime=25 breaktime=5 +lock &


阅读量: 4
发布于:
修改于: