यह आदर्श नहीं है, लेकिन यहां एक समाधान है। लैपटॉप को ढक्कन बंद होने पर सोने से रोकने के लिए और आप बैटरी पर चल रहे हैं, निम्न कमांड चलाएँ:
sudo pmset -b sleep 0; sudo pmset -b disablesleep 1
ढक्कन बंद होने पर लैपटॉप को फिर से चालू करने के लिए और आप बैटरी पर चल रहे हैं, निम्न कमांड चलाएं:
sudo pmset -b sleep 5; sudo pmset -b disablesleep 0
"5" आदेश के दूसरे सेट में बैटरी पर सोने से पहले मिनट की संख्या का प्रतिनिधित्व करता है; अपने लैपटॉप के लिए वांछित के रूप में समायोजित करें।
यह थोड़ा खतरनाक है, क्योंकि यदि आप अपनी सेटिंग्स को फिर से सक्षम करना भूल जाते हैं, तो लैपटॉप कभी भी बैटरी पर नहीं सोएगा। इस वजह से, मैंने सेटिंग्स को फिर से सक्षम करने के लिए एक शेल स्क्रिप्ट लिखी है:
#!/bin/bash
#***************************************************************************
#*** noz - prevent laptop from sleeping when lid is closed
#***************************************************************************
#***** set some defaults *****
BATTERY_SLEEP=5 # in minutes
DEF_WAKE_LEN=300 # in seconds
#***** determine timeout value *****
timeout_len=${1:-$DEF_WAKE_LEN}
function prevent_sleep() {
echo
echo -n "Preventing sleep for $timeout_len seconds; press <enter> to continue..."
sudo pmset -b disablesleep 1
sudo pmset -b sleep 0
}
function enable_sleep() {
# $1: <enter> = 0, timeout = 1, Ctrl-C = undef
#----- insert a newline for timeout or Ctrl-C -----
if [[ ${1:-1} -eq 1 ]]; then echo; fi
echo "Restoring previous battery sleep setting: $BATTERY_SLEEP"
sudo pmset -b disablesleep 0
sudo pmset -b sleep $BATTERY_SLEEP
#----- sleep on timeout only -----
if [[ ${1:--1} -eq 1 ]]; then sudo pmset sleepnow; fi
exit
}
#***** prevent it from sleeping *****
prevent_sleep
#***** trap Ctrl-C *****
trap enable_sleep INT
#***** wait for an enter *****
read -t $timeout_len
rc=$?
#***** re-enable normal sleep *****
enable_sleep $rc
शेल स्क्रिप्ट तब तक नींद को अक्षम कर देगी जब तक आप Enterकुंजी को हिट नहीं करते हैं , जिस बिंदु पर यह नींद की सेटिंग्स को फिर से सक्षम करेगा (वैकल्पिक रूप से, आप हिट कर सकते हैं Ctrl- Cऔर उसी चीज को प्राप्त कर सकते हैं )। यह एक टाइमआउट (300 सेकंड / 5 मिनट के लिए डिफॉल्ट्स) भी सेट करेगा जिसके बाद नींद की सेटिंग्स स्वचालित रूप से फिर से सक्षम हो जाएंगी, और लैपटॉप सोने के लिए मजबूर हो जाएगा। जबकि यह एक दर्द होगा यदि आप एक बैठक में अपने लैपटॉप का उपयोग कर रहे हैं, तो यह एक लाइफसेवर होगा यदि आप भूल गए और अपने लैपटॉप को घर जाने के लिए अपने बैग में रख दिया।
सूक्ष्म पाठक ध्यान देंगे कि इन आदेशों की आवश्यकता है sudo
; दुख की बात है, यह अपरिहार्य AFAIK है। मैंने अपने सिस्टम पर जो कुछ भी किया है, उसे बनाना है ताकि pmset
रूट के रूप में चलाने के लिए मुझे अपना पासवर्ड दर्ज न करना पड़े । ऐसा करने के लिए, sudoers
फ़ाइल को संपादित करें ( sudo visudo
) और इस पंक्ति को जोड़ें:
joe ALL=(ALL) NOPASSWD: /usr/bin/pmset
अपने यूज़रनेम के साथ "जो" की जगह। आप शायद एक ही परिणाम प्राप्त कर सकते हैं (यानी अपने पासवर्ड दर्ज किए बिना स्क्रिप्ट चलाना), शेल स्क्रिप्ट SETUID चलाकर, लेकिन मुझे ऐसा करना पसंद नहीं है; सूडोर्स के माध्यम से इस एक कमांड को खोलना मुझे कम जोखिम भरा लगता है।
स्क्रिप्ट को चलाने के लिए, इसे अपनी निर्देशिका में PATH
चिपकाएँ और इसे इस तरह बनाएँ:
noz [<timeout in seconds>]
जब आप वहाँ जा रहे हैं, जहाँ आप जा रहे हैं, बस मारो Enterया Ctrl- Cऔर आप जाने के लिए अच्छे हैं। और अगर आप इसके बारे में भूल जाते हैं, तो यह स्वचालित रूप से रीसेट और सो जाएगा।
शायद AppleScript के माध्यम से यह सब हासिल करने का एक तरीका है, ताकि आप इसे एक गर्म कुंजी असाइन कर सकें और क्या नहीं; मैं कोशिश करूंगा कि अगर मैं कभी भी कमांड लाइन से इसे चलाने के लिए थक गया।