बैटरी पर बंद ढक्कन पर नींद को रोकने के लिए कैफीनयुक्त का उपयोग करें


41

देशी caffeinateउपयोगिता सो जब मैं प्रदर्शन बंद से मेरे मैकबुक को रोकने के लिए काम नहीं कर रहा। इसके बजाय, सिस्टम सोता है और विभिन्न नेटवर्क सेवाओं (वीपीएन, स्क्रीनशेयर, वीओआइपी कॉल, मैसेजिंग क्लाइंट, फाइल ट्रांसफर) को विफल करने के लिए, जब मैं <5 मिनट में मेरी बैठक से मेरी बैठक तक चलता हूं

लैपटॉप के ढक्कन के साथ आधा खुला घूमना मेरे कॉफी के साथ सुरक्षित रूप से ले जाने के लिए मुश्किल बनाता है, और विशिष्ट रूप से अनकूल है।

देशी caffeinateउपयोगिता को उपयोगकर्ता के अनुकूल प्रतिस्थापन के रूप में संभालने के लिए डिज़ाइन किया गया है pmset, लेकिन ऐसा प्रतीत होता है कि एसी पावर से डिस्कनेक्ट होने पर काम नहीं करने के लिए डिज़ाइन किया गया है।

डॉक्स के माध्यम से man caffeinate

-s प्रणाली को सोने से रोकने के लिए एक अभिकथन बनाएँ। यह जोर तभी मान्य है जब सिस्टम एसी पावर पर चल रहा हो

InsomniaX या nosleep के लिए एक देशी विकल्प की तलाश में

एक समयबाह्य सुविधा आवश्यक है ताकि मैं गलती से अपनी पूर्ववत मैकबुक को एक बैग में भर दूं, जिससे गर्म गंदगी पैदा हो। ( caffeinate -t, सेकंड में टाइमआउट मान निर्दिष्ट करता है)


मुझे डर है कि कोई देशी विकल्प नहीं है , क्योंकि जब आप इसे बंद करते हैं तो मैकबुक सोने के लिए जाना चाहिए। : - /
असमस

2
मैकबुक के साथ घूमना वास्तव में यही है कि मैं ढक्कन बंद होने पर नींद को रोकने के लिए एक समाधान भी चाहता हूं।
Theonlygusti

क्या आपने विकल्प की कोशिश की -t, जैसे caffeinate -t 3600? मेरे अनुभव के अनुसार, यह तब भी काम करता है, जब मैकबुक बैटरी पर चल रहा हो।
कियान जू

सुझाव के लिए धन्यवाद, प्रारंभिक प्रयासों पर काम नहीं किया। क्या मैं कुछ भूल रहा हूँ? परीक्षण किया गया 1) caffeinate -t 36002) लैपटॉप बंद करें 3) प्रतीक्षा 5s 4) लॉगिन स्क्रीन और डिस्कनेक्ट की गई नेटवर्क सेवाओं को खोजने के लिए लैपटॉप खोलें।
यहां

@ कहीं मैंने ढक्कन को बंद करने की कोशिश नहीं की, हालाँकि। -tजब मेरी मैकबुक बैटरी पर होती है, तो मैं केवल विकल्प के साथ कमांड चलाता था और यह सोने के लिए नहीं जाती थी। मैंने ढक्कन को बंद करने की कोशिश नहीं की है, लेकिन ऐसा लगता है कि जैसे ही आप ढक्कन को बंद करेंगे मैकबुक सोने के लिए मजबूर हो जाएगा। मेरी गलतफहमी के लिए मुझे माफ़ करें। मैं सोच रहा था कि आप यह काम करने का एक तरीका ढूंढ रहे हैं जब यह केवल बैटरी पर चलता है, बिना ढक्कन बंद किए।
किआंग जू

जवाबों:


37

यह आदर्श नहीं है, लेकिन यहां एक समाधान है। लैपटॉप को ढक्कन बंद होने पर सोने से रोकने के लिए और आप बैटरी पर चल रहे हैं, निम्न कमांड चलाएँ:

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 के माध्यम से यह सब हासिल करने का एक तरीका है, ताकि आप इसे एक गर्म कुंजी असाइन कर सकें और क्या नहीं; मैं कोशिश करूंगा कि अगर मैं कभी भी कमांड लाइन से इसे चलाने के लिए थक गया।


6
ठंडा! आपका बहुत बहुत धन्यवाद! एक सुझाव / सरलीकरण: मुझे नहीं लगता कि आपको sleepसेटिंग बदलने की आवश्यकता है । बस चालू disablesleepऔर बंद। pmset -a disablesleep 1और pmset -a disablesleep 0मेरे लिए ठीक काम। जब मैं ढक्कन बंद करता हूं तो मेरा मैकबुक सोने को नहीं मिलता है। अन्य सभी सेटिंग्स समान हैं।
jcsahnwaldt

Github यूजर iccir ने Fermata नाम का एक फ्री ऐप बनाया है जो इस ट्रिक को हुड के नीचे इस्तेमाल करता है और इसे मेनूबार आइकन और टाइमर आदि के साथ अच्छी तरह से लपेटता है। मैंने इसे Mojave (10.14.2) पर आजमाया और यह मेरे लिए बहुत अच्छा रहा। github.com/iccir/Fermata
एलेक्स रयान

5

Github उपयोगकर्ता iccir ने Fermata नाम का एक बहुत ही आसान सा मुफ्त मेनूबार ऐप बनाया है जो वास्तव में आपको चाहिए: एक मैकबुक को बंद ढक्कन के साथ जागृत रखता है, और आपको एक टाइमआउट अवधि सेट करने की अनुमति देता है।

मैंने इसे Mojave (10.14.2) पर आज़माया और इसने मेरे लिए बहुत अच्छा काम किया। https://github.com/iccir/Fermata


5

इसका कोई मूल तरीका नहीं है। यहाँ कुछ खोज और परीक्षण के बाद मुझे क्या मिला है:

यहाँ छवि विवरण दर्ज करें

ध्यान दें:

  • नोसेलेप का कर्नेल एक्सटेंशन उच्च सिएरा पर लोड होने में विफल रहा
  • हाई सिएरा के बाद Apple द्वारा निजी SPI का समर्थन नहीं किया गया है। Fermatapmset 1.1 संस्करण के बाद विधि में बदल गया
  • आपको अनिद्रा को उम्मीद के मुताबिक काम करने के लिए गेटकीपर को निष्क्रिय करना पड़ सकता है।
  • मैंने जिन अन्य ऐप्स की कोशिश की, वे ढक्कन के साथ काम नहीं करते

1

क्या आपने इस ऐप को आज़माया है ? मुझे लगता है कि यह आपके लिए बहुत उपयोगी है।

मुझे पूरा यकीन है कि इसमें एक टाइमआउट फीचर है जो आपने ऐप की सेटिंग में सेट किया है।


6
धन्यवाद @ mitchell-d प्रश्न विशेष रूप से एक देशी समाधान के लिए पूछ रहा है, जैसे कैफीनट। इसमें सुझाए गए अन्य एप्लिकेशन हैं, जिसमें किसी भी तरह से एक-एक-एक-मैकबुक-प्रो-टू-द-न-स्लीप-जब-आप-पास-के-ढक्कन के बिना- फिर भी, फिर भी, मैंने कैफीन ऐप की कोशिश की जिसे आप इसे सुझाते हैं। जब मैं ढक्कन को बंद करता हूं तो मेरी मैकबुक को सोने से नहीं रोकता।
यहाँ
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.