我正在寻找一个能够提供以下工作流程的图形或命令行程序:
- 开始 25 分钟的课程
- 25 分钟后屏幕自动锁定 5 分钟(或者只是变黑?)
- 现在我得到了休息,因为除了看着黑屏或锁定的屏幕外,我无法在电脑前做任何事情:)
- 5分钟后,屏幕自动返回,我可以继续工作
是否有一个程序可以实现这一功能?
答案1
休息一下
TakeaBreak 现已上线发射台
sudo add-apt-repository ppa:vlijm/takeabreak
sudo apt-get update
sudo apt-get install takeabreak
最近(也)推动了 18.04 / 18.10 / 19.04
免责声明:我是作者
欢迎随时提交错误报告等等。这里或评论这里。感谢 orschiro 提出的好问题,以及 Rinzwind 的鼓励!
剩余休息秒数(使用倒计时选项)
设置
编辑
Ubuntu Budgie 的集成和现代化版本现已推出:
该小程序很可能会在 Ubuntu Budgie 19.04 中默认可用,但现在可以实现这里作为一个实验。
答案2
您可能还想考虑工作狂我发现它易于使用且高度可定制。它还提供了有关您如何使用计算机以及休息次数的一些非常好的统计数据。最后,我相信它还可以在多台计算机之间进行同步,这很有用,例如,如果您同时在笔记本电脑和学校计算机上工作。
编辑:它还有许多其他我没有提到的功能,比如建议你在屏幕被遮住时做一些练习。而且它只能考虑你使用电脑的时间,所以当你从厕所回来时它不会提醒你休息 :)
编辑2:
请务必查看“阅读”模式!
以上特征如果您没有做太多事情(没有鼠标、没有键盘事件),则仅计算您积极使用计算机的时间可能会被视为错误,因为它只会在您累计使用 1 小时(或您设置的时间)时提示您休息。在这些情况下,启用“阅读”模式将使其在准确的时间提示,无论使用情况如何。
答案3
粗鲁、简约的命令行方式:
sleep 1500; gnome-screensaver-command -l; sleep 300; killall gnome-screensaver
这也可以变成桌面快捷方式或变成功能.bashrc
为什么是 1500 和 300?因为那是秒,1500 秒/每分钟 60 秒 = 25 分钟。
下面是一个计时器脚本,允许设置可变的会话和休息时间,以及发出休息信号的方法。
请记住,Linux 上的任何脚本都必须保存为文件,并使用 设置可执行权限chmod +x /path/to/script.sh
。完成后,您可以将脚本绑定到快捷方式,如如何将 .sh 文件绑定到键盘组合?或者创建桌面快捷方式,如下图所示如何在桌面上创建启动器?
启动脚本时你应该会看到如下菜单:
#!/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 ###########