Грубый, минималистский, способ командной строки:
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 к комбинации клавиш? или создать ярлык на рабочем столе, как показано на рисунке Как я могу создать пусковые установки на моем рабочем столе?
Когда вы запускаете скрипт, вы должны увидеть следующее меню:
Как сделать привязать файлы .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 ###########
Вероятно, это не тот ответ, который вы искали:
К сожалению, сочетание Unity и wmctrl имеет несколько особенностей, из которых описывается поведение.
0x03400005 0 0 24 65 1111 janw_VirtualBox unity-launcher
на выходе wmctrl -lG вы можете видеть, что Launcher находится в x=0, y=24, а размер пусковой установки - 65 x 1111. (1111 - высота вашего экрана за вычетом высоты вашей панели) Строго говоря, команда размещения активного окна в верхнем левом углу должна быть:
wmctrl -r :ACTIVE: -e 0,65,24,1500,550
, а не:
wmctrl -r :ACTIVE: -e 0,0,0,1500,550
Однако это не решит проблему, это просто ошибка. Там еще будет описанная вами манга. То же самое произойдет и при использовании xdotool (не установлен по умолчанию):
xdotool windowmove "$(xdotool getactivewindow)" 65 24
или
xdotool windowmove "$(xdotool getactivewindow)" 0 0
Глядя на 1792x1111 в WA: 65,24 1792x1111, вы можете видеть, что у вас есть разрешение монитора 1857 (65 + 1792) x 1135 (1111 + 24) , Вероятно, не тот ответ, который вы искали: , он точно соответствует значениям в DG: 1857x1135, так как у вас есть только один просмотр (рабочее пространство): DG обозначает общий размер вашего рабочего стола (все вики).
Оба wmctrl и xdotool работают нормально, если вы установили окно total . Эффект, который вы описываете, не произойдет. Однако перемещение или изменение размеров окон оставляют несколько пикселей как с панели запуска, так и с панели, как описано в этом ответе .: «Окно, которое нужно переместить / изменить, должно быть как минимум несколько пикселей из «Unity launcher» и «top panel».
Помимо того, что вы описали, еще одна проблема, с которой вы столкнетесь, если вы начнете играть с wmctrl и Unity, это Перемещение [ ! d25], как описано в , этот ответ. .
Вероятно, это не тот ответ, который вы искали:
К сожалению, сочетание Unity и wmctrl имеет несколько особенностей, из которых описывается поведение.
0x03400005 0 0 24 65 1111 janw_VirtualBox unity-launcher
на выходе wmctrl -lG вы можете видеть, что Launcher находится в x=0, y=24, а размер пусковой установки - 65 x 1111. (1111 - высота вашего экрана за вычетом высоты вашей панели) Строго говоря, команда размещения активного окна в верхнем левом углу должна быть:
wmctrl -r :ACTIVE: -e 0,65,24,1500,550
, а не:
wmctrl -r :ACTIVE: -e 0,0,0,1500,550
Однако это не решит проблему, это просто ошибка. Там еще будет описанная вами манга. То же самое произойдет и при использовании xdotool (не установлен по умолчанию):
xdotool windowmove "$(xdotool getactivewindow)" 65 24
или
xdotool windowmove "$(xdotool getactivewindow)" 0 0
Глядя на 1792x1111 в WA: 65,24 1792x1111, вы можете видеть, что у вас есть разрешение монитора 1857 (65 + 1792) x 1135 (1111 + 24) , Вероятно, не тот ответ, который вы искали: , он точно соответствует значениям в DG: 1857x1135, так как у вас есть только один просмотр (рабочее пространство): DG обозначает общий размер вашего рабочего стола (все вики).
Оба wmctrl и xdotool работают нормально, если вы установили окно total . Эффект, который вы описываете, не произойдет. Однако перемещение или изменение размеров окон оставляют несколько пикселей как с панели запуска, так и с панели, как описано в этом ответе .: «Окно, которое нужно переместить / изменить, должно быть как минимум несколько пикселей из «Unity launcher» и «top panel».
Помимо того, что вы описали, еще одна проблема, с которой вы столкнетесь, если вы начнете играть с wmctrl и Unity, это Перемещение [ ! d25], как описано в , этот ответ. .