2019 থেকে আপডেট হওয়া পোস্ট - আইমসাম
আইশোম একটি বাশ স্ক্রিপ্ট যা একটি ডিমন হিসাবে চলমান এবং বেশিরভাগ সময় 24/7 ঘুমিয়ে থাকে। এটি স্বয়ংক্রিয়ভাবে স্ক্রিনের উজ্জ্বলতা (এবং বিকল্পভাবে গামাও) অ্যাডজাস্ট করে আপনার ল্যাপটপ প্রদর্শনের জন্য হার্ডওয়্যার ইন্টারফেসের মাধ্যমে এবং এক্স্রেডারের সফ্টওয়্যার নিয়ন্ত্রণ ব্যবহার করে আরও দুটি মনিটর পর্যন্ত।
সূর্যোদয়ের সময় (সময়টি স্বয়ংক্রিয়ভাবে ইন্টারনেট থেকে প্রতিদিন পাওয়া যায়), আপনার পর্দার উজ্জ্বলতা (এবং বিকল্পভাবে গামাও) ধীরে ধীরে সামঞ্জস্য করা হয়। ধীরে ধীরে সামঞ্জস্যতা আপনার দ্বারা সংজ্ঞায়িত করা হয় তবে, 120 মিনিট আমার পক্ষে কাজ করে। সামঞ্জস্যগুলি অলক্ষিত করে রাখার জন্য সামঞ্জস্যগুলির মধ্যে একটি ঘুমের ব্যবধান সেট করে। 15 এবং 60 সেকেন্ডের মধ্যে যে কোনও জায়গায় সম্ভবত সেরা এবং ডিফল্ট 60।
আইসোম ডেমন সূর্যাস্তের রূপান্তর শুরু হওয়া অবধি অনেক ঘন্টা ঘুমায়। বিপরীতে সূর্যোদয়ের উত্তরণে, সূর্যাস্তের ক্রমশ ক্রমান্বয়ে স্ক্রিনের উজ্জ্বলতা হ্রাস পায় (এবং optionচ্ছিকভাবে গামাও) সুতরাং এটি অদৃশ্য। সূর্যাস্তের 90 মিনিটের আগে প্রস্তাব দেওয়া হলেও আপনি যে কোনও সময় নির্ধারণ করতে পারবেন।
সূর্যাস্তের পরিবর্তনের সময় গামা বাড়ানোর সংজ্ঞা দেওয়া যেতে পারে। উদাহরণস্বরূপ চোখের স্ট্রেন হ্রাস করার জন্য রেড গামাটি দিনের বেলা 1.0 এবং রাতে 1.2 হিসাবে সংজ্ঞায়িত করা যেতে পারে। পরিবর্তে নীল গামাটি দিনের সময় 1.0 এবং রাতের বেলা .8 হিসাবে সংজ্ঞায়িত করা যেতে পারে তাই এটি পরিবর্তে হ্রাস পাবে।
সংস্থানগুলি হ্রাস করতে, দৃষ্টিনন্দন সূর্যাস্ত এবং সূর্যোদয় স্থানান্তরের মধ্যে পুরো সময়টাই ঘুমায়। স্থগিত বা হট প্লাগিং বহিরাগত মনিটর থেকে পুনরায় শুরু করার সময় এক সময় ব্যতিক্রম রয়েছে। এটি আপনি কোথায় থাকেন এবং বছরের মরসুমের উপর নির্ভর করে তবে, গড় ঘুম 12 ঘন্টা হবে।
আপনি গিথুব থেকে আইসোম ডাউনলোড করতে পারেন
আসল পোস্ট 2017 থেকে
ভূমিকা
এটি অতিরিক্ত প্রোগ্রাম ইনস্টল করার প্রয়োজন ছাড়াই একটি বাশ সমাধান। প্রতিদিন স্বয়ংক্রিয়ভাবে সূর্যোদয় এবং সূর্যাস্তের সময় পাওয়ার জন্য এটি ইন্টারনেট সংযোগের প্রয়োজন (যদি আপনি এটি পড়তে থাকেন তবে)। এটি একটি ব্যবহারকারী-বান্ধব কনফিগারেশন স্ক্রিন সরবরাহ করে। এটি স্বয়ংক্রিয়ভাবে দিয়ে শুরু হয় cron
এবং কোনও ব্যবহারকারীর ইন্টারঅ্যাকশন প্রয়োজন।
এই উত্তরটি একাধিক অংশে বিভক্ত
- প্রতিদিন সূর্যোদয় এবং সূর্যাস্তের সময়গুলি স্বয়ংক্রিয়ভাবে পান
cron
- উজ্জ্বলতা সেটিংস এবং রূপান্তর সময় কনফিগার করুন
- দিনের সময় ভিত্তিতে উজ্জ্বলতা সামঞ্জস্য করতে প্রধান স্ক্রিপ্ট
- প্রতিটি বুট দিয়ে স্বয়ংক্রিয়ভাবে প্রদর্শন-অটো-উজ্জ্বলতা শুরু করুন
cron
- তাত্ক্ষণিক / স্বচ্ছ উজ্জ্বলতা সমন্বয় স্থগিত করা থেকে পুনরায় শুরু হচ্ছে
- সারসংক্ষেপ
ক্রোন সহ প্রতিটি দিন স্বয়ংক্রিয়ভাবে সূর্যোদয় এবং সূর্যাস্তের সময় পান
আপনার অবস্থানের জন্য সূর্যোদয় এবং সূর্যাস্তের সময়গুলি জানাতে অনেকগুলি ওয়েবসাইট রয়েছে। এই স্ক্রিপ্টটি ব্যবহার করে ( https://www.timeanddate.com/ ) যা দীর্ঘদিন ধরে একটি সুপরিচিত সাইট।
সুডো শক্তিগুলি ফাইল সম্পাদনা করে এটি আটকে দিন /usr/local/bin/sun-hours
:
#!/bin/bash
# Called daily from /etc/cron.daily/sun-hours
while true; do
### "-q"= quiet, "-O-" pipe output
echo $(wget -q -O- https://www.timeanddate.com/sun/canada/edmonton | grep -oE 'Sunrise Today.{35}' | awk -F\> '{print $3}' | tr --delete "<") > /tmp/sunrise
echo $(wget -q -O- https://www.timeanddate.com/sun/canada/edmonton | grep -oE 'Sunset Today.{35}' | awk -F\> '{print $3}' | tr --delete "<") > /tmp/sunset
## If network is down files will have one byte size
size1=$(wc -c < /tmp/sunrise)
size2=$(wc -c < /tmp/sunset)
if [ $size1 -gt 1 ] && [ $size2 -gt 1 ] ; then
cp /tmp/sunrise /usr/local/bin/sunrise
cp /tmp/sunset /usr/local/bin/sunset
chmod 666 /usr/local/bin/sunrise
chmod 666 /usr/local/bin/sunset
rm /tmp/sunrise
rm /tmp/sunset
exit 0
else
logger "/etc/cron.daily/sun-hours: Network is down. Waiting 5 minutes to try again."
sleep 300
fi
done
স্ক্রিপ্টটি সংরক্ষণের আগে /canada/edmonton
আপনার নিজের দেশ এবং শহরের সাথে দুটি ঘটনাকে প্রতিস্থাপন করুন । www.timeanddate.com
সঠিক নাম বা নম্বর পেতে সাইটে যান। উদাহরণস্বরূপ, "প্যারিস, মার্কিন যুক্তরাষ্ট্র" এর কয়েক ডজন নাম রয়েছে যাতে এগুলিতে /worldclock/@5205082
"প্যারিস, পিএ ইউএসএ" এর মতো একটি সংখ্যা থাকবে ।
প্রতিদিন সূর্য-ঘন্টা স্ক্রিপ্ট চালানোর জন্য ক্রোন ব্যবহার করুন
সুডো শক্তিগুলি ফাইল সম্পাদনা করে এটি আটকে দিন /etc/cron.daily/sun-hours
:
#!/bin/sh
#
# Each day /etc/cron.daily/sun-hours will get sunrise and sunset times.
sleep 60 # give time for network to come up.
/usr/local/bin/sun-hours
উভয় ফাইলকে নির্বাহযোগ্য হিসাবে চিহ্নিত করুন sudo chmod a+x ___/sun-hours
যেখানে প্রতিটি ফাইলের জন্য "___" ডিরেক্টরি রয়েছে is
প্রতিদিন সূর্যোদয় / সূর্যাস্তের সময় পরিবর্তনগুলি নিরীক্ষণ করতে কঙ্কি ব্যবহার করুন
আপনার সিস্টেমটি পর্যবেক্ষণের জন্য কঙ্কি একটি জনপ্রিয় সরঞ্জাম। এটির জন্য সূর্যোদয়, সূর্যাস্ত এবং উজ্জ্বলতা সেটিং প্রদর্শন করার জন্য আদেশগুলি এখানে:
${color orange}${voffset 2}${hr 1}
${color}${goto 5}Day: ${color green}${execpi 300 cat /usr/local/bin/sunrise} ${color}Night: ${color green}${execpi 300 cat /usr/local/bin/sunset} ${color}Level: ${color green}${execpi 10 cat cat /sys/class/backlight/intel_backlight/brightness}
${color orange}${voffset 2}${hr 1}
এটি দেখতে এটির মতো:
দ্রষ্টব্য: এই কঙ্কি কোডটি intel_backlight
আপনাকে নীচের বিভাগগুলিতে বর্ণিত আপনার ডিসপ্লে অ্যাডাপ্টারের উপর নির্ভর করে পরিবর্তন করতে হবে যা ব্যবহার করে।
উজ্জ্বলতা সেটিংস এবং রূপান্তর সময় কনফিগার করুন
আপনি চাইছেন না যে আপনার প্রদর্শনটি সূর্যোদয়ের উপরে পুরো উজ্জ্বলতায় এবং সূর্যাস্তের পুরো অন্ধকারে পরিবর্তিত হোক। একটি রূপান্তর সময় প্রয়োজন। সম্পূর্ণ উজ্জ্বলতা এবং পূর্ণ ম্লান্ধের জন্য ভেরিয়েবলগুলি রেকর্ড করতে অতিরিক্ত একটি কনফিগারেশন ফাইলের প্রয়োজন। এটি কনফিগারেশন স্ক্রিন:
স্ক্রিনটি স্ট্যান্ডার্ড জেনটি কমান্ড ব্যবহার করে তৈরি করা হয়েছে এবং যেমন বিদ্যমান মানগুলি "(মান)" ট্যাগ সহ লেবেলে প্রদর্শিত হয় এবং প্রয়োজনে নতুন মানগুলিতে আপনি কী। অন্যথায় বিদ্যমান মানগুলি যখন নতুন মান ফাঁকা থাকে তখন তা রাখা হয়।
intel_backlight
আলাদা হলে আপনার ডিসপ্লে ড্রাইভারের সাথে প্রতিস্থাপন করুন । খুঁজে বের করতে আপনার নাম ব্যবহার: ls /sys/class/backlight/*/brightness
।
Sudo শক্তি ব্যবহার করে এই কোডটিতে ফাইল তৈরি /usr/local/bin/auto-brightness-config
এবং পেস্ট করুন:
#!/bin/bash
# Read hidden configuration file with entries separated by " " into array
IFS=' ' read -ra CfgArr < /usr/local/bin/.auto-brightness-config
# Zenity form with current values in entry label
# because initializing multiple entry data fields not supported
output=$(zenity --forms --title="Display Auto Brightness Configuration" \
--text="Enter new settings or leave entries blank to keep (existing) settings" \
--add-entry="/sys/class/backlight/??????/brightness driver : (${CfgArr[0]})" \
--add-entry="Day time maximum display brightness : (${CfgArr[1]})" \
--add-entry="Transition minutes after sunrise to maximum : (${CfgArr[2]})" \
--add-entry="Night time minimum display brightness : (${CfgArr[3]})" \
--add-entry="Transition minutes before sunset to minimum : (${CfgArr[4]})")
IFS='|' read -a ZenArr <<<$output # Split zenity entries separated by "|" into array elements
# Update non-blank zenity array entries into configuration array
for i in ${!ZenArr[@]}; do
if [[ ${ZenArr[i]} != "" ]]; then CfgArr[i]=${ZenArr[i]} ; fi
done
# write hidden configuration file using array (fields automatically separated by " ")
echo "${CfgArr[@]}" > /usr/local/bin/.auto-brightness-config
ব্যবহার করে ফাইলটিকে এক্সিকিউটেবল হিসাবে চিহ্নিত করুন:
chmod a+x /usr/local/bin/auto-brightness-config
মূল প্রোগ্রাম display-auto-brightness
Sudo শক্তি ব্যবহার করে এই কোডটিতে ফাইল তৈরি /usr/local/bin/display-auto-brightness
এবং পেস্ট করুন:
#!/bin/bash
# NAME: display-auto-brightness
# PATH: /usr/local/bin
# DESC: Set display brightness based on min/max values, sun rise/set time
# and transition minutes.
# CALL: Called from cron on system startup with @reboot option.
# DATE: Feb 17, 2017. Modified: Dec 2, 2017.
# NOTE: Only sleep for 1 minute to make display brightness changes gradual.
# Configuration file can change any time so variables reread when waking.
# The file is maintained by /usr/local/bin/auto-brightness-config script.
# Sunrise and sunset time obtained from www.dateandtime.com using
# /usr/local/bin/sun-hours script. The script is called from cron using
# /etc/cron.daily/cron-daily-sun-hours. Variables stored in am/pm format
# in /usr/local/bin/sunrise and /usr/local/bin/sunset.
# When suspending at 6 am it might be dark with setting at 300. When
# resuming at 4:30pm it might be full sun and setting needs to be 2000.
# It will take between 1 and 59 seconds to adjust screen brightness with
# sudden jump in brightness. To correct this create kill sleep command
# during suspend with /lib/systemd/system-sleep/display-auto-brightness
# script.
# TODO: Add support for external monitors connected via HDMI / DisplayPort.
# xrandr --output HDMI-0 --brightness .799
# xrandr --output DP-1-1 --brightness 1.15
if [[ $(id -u) != 0 ]]; then # root powers needed to call this script
echo display-auto-brightness must be called with sudo powers
exit 1
fi
# global variable
LastSetting=""
function set-and-sleep {
if [[ "$1" != "$LastSetting" ]]; then
sudo sh -c "echo $1 | sudo tee $backlight"
echo "$1" > "/tmp/display-current-brightness"
LastSetting="$1"
fi
sleep 60
}
re='^[0-9]+$' # regex for valid numbers
function calc-level-and-sleep {
# Parms $1 = number of minutes for total transition
# $2 = number of seconds into transition
secTotal=$(( $1 * 60 )) # Convert total transition minutes to seconds
Adjust=$( bc <<< "scale=6; $transition_spread * ( $2 / $secTotal )" )
Adjust=$( echo $Adjust | cut -f1 -d"." ) # Truncate number to integer
if ! [[ $Adjust =~ $re ]] ; then
Adjust=0 # When we get to last minute $Adjust can be non-numeric
fi
calc_bright=$(( $min_bright + $Adjust ))
set-and-sleep "$calc_bright"
}
while true ; do
# Although variables change once a day it could be weeks between reboots.
sunrise=$(cat /usr/local/bin/sunrise)
sunset=$(cat /usr/local/bin/sunset)
# Read hidden configuration file with entries separated by " " into array
IFS=' ' read -ra CfgArr < /usr/local/bin/.auto-brightness-config
backlight="/sys/class/backlight/${CfgArr[0]}/brightness"
max_bright="${CfgArr[1]}"
after_sunrise="${CfgArr[2]}"
min_bright="${CfgArr[3]}"
before_sunset="${CfgArr[4]}"
# Current seconds
secNow=$(date +"%s")
secSunrise=$(date --date="$sunrise today" +%s)
secSunset=$(date --date="$sunset today" +%s)
# Is it night time?
if [ "$secNow" -gt "$secSunset" ] || [ "$secNow" -lt "$secSunrise" ]; then
# MINIMUN: after sunset or before sunrise nightime setting
set-and-sleep "$min_bright"
continue
fi
# We're somewhere between sunrise and sunset
secMaxCutoff=$(( $secSunrise + ( $after_sunrise * 60 ) ))
secMinStart=$(( $secSunset - ( $before_sunset * 60 ) ))
# Is it full bright day time?
if [ "$secNow" -gt "$secMaxCutoff" ] && [ "$secNow" -lt "$secMinStart" ]; then
# MAXIMUN: after sunrise transition AND before nightime transition
set-and-sleep "$max_bright"
continue
fi
# Daytime - nightime = transition brightness levels
transition_spread=$(( $max_bright - $min_bright ))
# Are we between sunrise and full brightness?
if [ "$secNow" -gt "$secSunrise" ] && [ "$secNow" -lt "$secMaxCutoff" ]; then
# Current time - Sunrise = progress through transition
secPast=$(( $secNow - $secSunrise ))
calc-level-and-sleep $after_sunrise $secPast
continue
fi
# Are we between beginning to dim and sunset (full dim)?
if [ "$secNow" -gt "$secMinStart" ] && [ "$secNow" -lt "$secSunset" ]; then
# Sunset - Current time = progress through transition
secBefore=$(( $secSunset - $secNow ))
calc-level-and-sleep $before_sunset $secBefore
continue
fi
# At this stage brightness was set with manual override outside this program
# or exactly at a testpoint, then it will change next minute so no big deal.
sleep 60 # reset brightness once / minute.
done # End of forever loop
ব্যবহার করে ফাইলটিকে এক্সিকিউটেবল হিসাবে চিহ্নিত করুন:
chmod a+x /usr/local/bin/display-auto-brightness
দ্রষ্টব্য: 26 ডিসেম্বর 2017 অসফলভাবে সংশোধিত ত্রুটি সংশোধন করতে যেখানে প্রোগ্রামটি থামবে যখন শেষ উজ্জ্বলতার স্তর সর্বনিম্ন বা সর্বাধিক উজ্জ্বলতার সমান এবং বর্তমান মিনিটের সামঞ্জস্য মানের ফাঁকা (শূন্য) হবে। সাফল্যের সাথে 2 শে ডিসেম্বর, 2017 ঠিক করা হয়েছে তবে 17 ফেব্রুয়ারী, 2018 পর্যন্ত প্রকাশিত হয়নি O উফ!
প্রতিটি বুট দিয়ে স্বয়ংক্রিয়ভাবে প্রদর্শন-অটো-উজ্জ্বলতা শুরু করুন cron
প্রতিটি বুটে মূল অ্যাপ্লিকেশন শুরু করতে ক্রোন ব্যবহার করা হয়। /etc/cron.d/display-auto-brightness
সুডো শক্তি দিয়ে ফাইলটি তৈরি করুন এবং এতে অনুলিপি করুন:
SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
@reboot root /usr/local/bin/display-auto-brightness
তাত্ক্ষণিক উজ্জ্বলতা সাময়িকরণ স্থগিত করা থেকে পুনরায় শুরু হচ্ছে
আপনি যখন আপনার কম্পিউটারটি সূর্য ওঠার আগে এবং আপনার স্থাপনা 300 এ পৌঁছানোর আগে সকাল 6 টায় স্থগিত করতে পারেন the সূর্য উজ্জ্বল হওয়ার সময় আপনি যখন সন্ধ্যা 4 টায় আবার শুরু করতে পারেন এবং অস্তমিতকরণটি 2000 হওয়া উচিত তবে আপনার জন্য 1 থেকে 59 সেকেন্ড অপেক্ষা display-auto-brightness
করতে হবে প্রদর্শনটি পুনরায় সেট করুন। প্রদর্শনটি পুনরায় সেট করার পরে পরিবর্তনটি নাটকীয়। এটি সমাধান করার জন্য একটি systemd
স্ক্রিপ্ট দরকার। সমন্বিত ফাইলটি তৈরি করুন /lib/systemd/system-sleep/display-auto-brightness
:
#!/bin/sh
# NAME: display-auto-brightness
# PATH: /lib/systemd/system-sleep/
# DESC: Restart display brightness when resuming from suspend
# CALL: Automatically called when system goes to sleep and wakes up
# DATE: August 2017. Modified: June 10, 2018.
# NOTE: Gives instant display brightness adjustment instead of waiting 1 to 59 seconds.
logger -t "logger -t "test" "\$0=$0, \$1=$1, \$2=$2" test" "\$0=$0, \$1=$1, \$2=$2"
case $1/$2 in
pre/*)
echo "/lib/systemd/system-sleep/display-auto-brightness: Going to $2..."
;;
post/*)
# March 28, 2018 On AW17R3 this script runs too fast
sleep 2
echo "/lib/systemd/system-sleep/display-auto-brightness: Resuming from $2..."
# Find running tree processes containing "display-auto" AND "sleep"
ProgramTree=$(pstree -g -p | grep display-auto | grep sleep)
# echo's below will print in /var/log/syslog. Comment out with # to suppress
echo "pstree -g -p | grep display-auto | grep sleep"
echo "============================================="
echo "$ProgramTree"
# extract sleep program ID within `pstree`. eg we would want "16621" below:
# |-cron(1198,1198)---cron(1257,1198)---sh(1308,1308)---display-auto-br(1321,1308)---sleep(16621,1308)
pID=$(echo "$ProgramTree" | cut -f 6 -d '(' )
pID=$(echo "$pID" | cut -f1 -d",")
kill $pID # kill sleep command forcing screen brightness to adjust immediately
rm /tmp/display-current-brightness
echo "display-auto-brightness: sleep pID: '$pID' has been killed."
;;
esac
ব্যবহার করে ফাইলটিকে এক্সিকিউটেবল হিসাবে চিহ্নিত করুন:
chmod a+x /lib/systemd/system-sleep/display-auto-brightness
সারসংক্ষেপ
বর্তমান উজ্জ্বলতার স্তরের প্রদর্শন সিস্ট্র্রে
পূর্বে উপস্থাপিত কঙ্কির উদাহরণ ছাড়াও সূচক-সিসমনিটর আপনি ব্যাশের মাধ্যমে সিস্ট্রিতে বর্তমান উজ্জ্বলতা প্রদর্শন করতে পারেন:
এই সিস্ট্রিতে উদাহরণস্বরূপ উজ্জ্বলতা সেট করা হয় 418
এবং এটি সূর্যাস্তের প্রায় 20 মিনিটের আগে। সূর্যাস্তের সময় মান 250 হবে এবং দিনের সময় পুরো উজ্জ্বলতা 1200 হবে this
সিষ্ট্রে সূচকটি এই কোডটি ব্যবহার করে সেটআপ করছে:
#!/bin/bash
if [ -f ~/.lock-screen-timer-remaining ]; then
text-spinner
Spinner=$(cat ~/.last-text-spinner) # read last text spinner used
Minutes=$(cat ~/.lock-screen-timer-remaining)
systray=" $Spinner Lock screen in: $Minutes"
else
systray=" Lock screen: OFF"
fi
if [ -f /tmp/display-current-brightness ]; then
Brightness=$(cat /tmp/display-current-brightness)
systray="$systray Brightness: $Brightness"
else
systray="$systray Brightness: OFF"
fi
echo "$systray" # sysmon-indidicator will put echo string into systray for us.
exit 0
এই প্রশ্নোত্তর ( অ্যাপ্লিকেশন সূচক হিসাবে সিস্ট্রেমে BASH প্রদর্শন করতে পারে? ) কীভাবে সূচক-সিজনমিটার সেটআপ করবেন তা বর্ণনা করে।
ভবিষ্যতের বর্ধন
- গিথুবের এই উত্তরের জন্য বাশ স্ক্রিপ্টগুলি স্থানান্তরিত হচ্ছে
- ব্যবহার করে বাহ্যিক মনিটরের জন্য সমর্থন যোগ করা
xrandr
- আরও লাল / কম নীল ব্যবহার করে সমর্থন যুক্ত করা হচ্ছে
xrandr