অপরিশোধিত, ন্যূনতম, কমান্ড-লাইন উপায়:
sleep 1500; gnome-screensaver-command -l; sleep 300; killall gnome-screensaver
এটি একটি ডেস্কটপ শর্টকাটে বা ফাংশন এ রূপান্তরিত হতে পারে .bashrc
1500 এবং 300 কেন? কারণ সে সেকেন্ড, প্রতি মিনিটে 1500 সেকেন্ড / 60 সেকেন্ড = 25 মিনিট।
নীচে একটি টাইমারের জন্য একটি স্ক্রিপ্ট যা ভেরিয়েবল সেশন এবং ব্রেক সময় নির্ধারণ করতে পারবেন, পাশাপাশি বিরতিতে সংকেত দেওয়ার পদ্ধতিগুলি।
মনে রাখবেন যে লিনাক্সের যে কোনও স্ক্রিপ্ট অবশ্যই ফাইল হিসাবে সংরক্ষণ করতে হবে এবং এর সাথে এক্সিকিউটেবল অনুমতি থাকতে হবে 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 ###########