Sử dụng caffein để ngăn chặn ngủ trên nắp pin


41

caffeinateTiện ích gốc không hoạt động để ngăn macbook của tôi ngủ khi tôi đóng màn hình. Thay vào đó, hệ thống ngủ và nhiều dịch vụ mạng khác nhau (VPN, màn hình, cuộc gọi VOIP, ứng dụng khách nhắn tin, chuyển tập tin) không thành công trong khi tôi đi bộ từ bàn đến cuộc họp của mình trong <5 phút.

Đi bộ xung quanh với nắp máy tính xách tay mở một nửa khiến cho việc mang theo cà phê của tôi trở nên khó khăn và không rõ ràng.

caffeinateTiện ích gốc được thiết kế để xử lý việc này như một sự thay thế thân thiện với người dùng pmset, nhưng dường như được thiết kế để không hoạt động khi ngắt kết nối với nguồn AC.

Tài liệu qua man caffeinate

-s Tạo một xác nhận để ngăn hệ thống ngủ. Khẳng định này chỉ hợp lệ khi hệ thống đang chạy bằng nguồn AC .

Tìm kiếm một sự thay thế bản địa cho InsomniaX hoặc nos ngủ .

Một tính năng hết thời gian là rất cần thiết để tôi tránh vô tình nhét macbook undead của mình vào túi, dẫn đến một mớ hỗn độn nóng. ( caffeinate -t, chỉ định giá trị thời gian chờ tính bằng giây)


Tôi sợ rằng không có sự thay thế tự nhiên , vì MacBook được cho là đi ngủ khi bạn đóng nó. : - /
Asmus

2
Đi bộ xung quanh với MacBook chính xác là lý do tại sao tôi cũng muốn có một giải pháp để ngăn chặn giấc ngủ khi đóng nắp.
theonlygusti

Bạn đã thử tùy chọn -t, như thế caffeinate -t 3600nào? Theo kinh nghiệm của tôi, nó hoạt động ngay cả khi macbook chạy bằng pin.
Qiang Xu

Cảm ơn đề xuất, đã không làm việc trên những nỗ lực ban đầu. Tui bỏ lỡ điều gì vậy? Đã kiểm tra 1) caffeinate -t 36002) Đóng máy tính xách tay 3) Đợi 5s 4) Mở máy tính xách tay để tìm màn hình đăng nhập và dịch vụ mạng bị ngắt kết nối.
ở đây

@ ở đây tôi đã không cố gắng để đóng nắp, mặc dù. Tôi chỉ chạy lệnh với -ttùy chọn khi macbook của tôi hết pin và nó không đi ngủ. Tôi chưa thử đóng nắp, nhưng có vẻ như macbook sẽ bị buộc phải ngủ ngay khi bạn đóng nắp. Xin lỗi vì sự hiểu nhầm của tôi. Tôi đã nghĩ rằng bạn đang tìm kiếm một cách để làm cho nó hoạt động khi nó chỉ chạy bằng pin, mà không đóng nắp.
Qiang Xu

Câu trả lời:


37

Nó không lý tưởng, nhưng đây là một giải pháp. Để ngăn máy tính xách tay ngủ khi đóng nắp và bạn đang chạy bằng pin, hãy chạy các lệnh sau:

sudo pmset -b sleep 0; sudo pmset -b disablesleep 1

Để bật lại máy tính xách tay ngủ khi đóng nắp và bạn đang chạy bằng pin, hãy chạy các lệnh sau:

sudo pmset -b sleep 5; sudo pmset -b disablesleep 0

"5" trong bộ lệnh thứ hai biểu thị số phút trước khi ngủ khi sử dụng pin; điều chỉnh như mong muốn cho máy tính xách tay của bạn.

Điều này hơi nguy hiểm, vì nếu bạn quên bật lại cài đặt của mình, máy tính xách tay sẽ không bao giờ ngủ khi hết pin. Vì điều này, tôi đã viết một tập lệnh shell để tự động kích hoạt lại các cài đặt:

#!/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

Kịch bản shell sẽ vô hiệu hóa chế độ ngủ cho đến khi bạn nhấn Enterphím, tại thời điểm đó, nó sẽ kích hoạt lại cài đặt ngủ (thay vào đó, bạn có thể nhấn Ctrl- Cvà đạt được điều tương tự). Nó cũng sẽ đặt thời gian chờ (mặc định là 300 giây / 5 phút) sau đó cài đặt chế độ ngủ sẽ tự động được bật lại và máy tính xách tay sẽ buộc phải đi ngủ. Mặc dù điều này sẽ là một nỗi đau nếu bạn đang sử dụng máy tính xách tay của bạn trong một cuộc họp, nó sẽ là cứu cánh nếu bạn quên và đặt máy tính xách tay của bạn trong túi của bạn để về nhà.

Độc giả sắc sảo sẽ lưu ý rằng các lệnh này yêu cầu sudo; thật đáng buồn, đó là điều không thể tránh khỏi AFAIK. Những gì tôi đã làm trên hệ thống của mình là làm cho nó để tôi không phải nhập mật khẩu để chạy pmsetbằng root. Để làm điều đó, chỉnh sửa sudoerstệp ( sudo visudo) và thêm dòng này:

joe ALL=(ALL) NOPASSWD: /usr/bin/pmset

thay thế "joe" bằng tên người dùng của bạn. Bạn có thể có thể đạt được kết quả tương tự (nghĩa là chạy tập lệnh mà không cần phải nhập mật khẩu của mình) bằng cách chạy tập lệnh shell SETUID, nhưng tôi không thích làm điều đó; mở ra một lệnh này thông qua sudoers có vẻ ít rủi ro hơn đối với tôi.

Để chạy tập lệnh, dán nó vào một thư mục trên của bạn PATHvà gọi nó như sau:

noz [<timeout in seconds>]

Khi bạn đến nơi bạn sẽ đến, chỉ cần nhấn Enterhoặc Ctrl- Cvà bạn tốt để đi. Và nếu bạn quên nó, nó sẽ tự động thiết lập lại và ngủ.

Có lẽ có một cách để đạt được tất cả những điều này thông qua AppleScript, để sau đó bạn có thể gán cho nó một phím nóng và những gì không; Tôi sẽ thử nếu tôi cảm thấy mệt mỏi khi chạy nó từ dòng lệnh.


6
Mát mẻ! Cảm ơn rất nhiều! Gợi ý / đơn giản hóa: Tôi không nghĩ bạn cần thay đổi sleepcài đặt. Chỉ cần bật disablesleepvà tắt. pmset -a disablesleep 1pmset -a disablesleep 0làm việc tốt cho tôi. MacBook của tôi không ngủ được khi tôi đóng nắp. Tất cả các cài đặt khác vẫn giữ nguyên.
jcsahnwaldt

Người dùng Github iccir đã tạo ra một ứng dụng miễn phí có tên Fermata sử dụng thủ thuật này dưới mui xe và kết thúc nó một cách độc đáo với biểu tượng thanh thực đơn và đồng hồ bấm giờ, v.v. Tôi vừa thử nó trên Mojave (10.14.2) và nó hoạt động rất tốt với tôi. github.com/iccir/Fermata
Alex Ryan

5

Người dùng Github iccir đã tạo ra một ứng dụng menubar miễn phí nhỏ rất tiện dụng có tên là Fermata, thực hiện chính xác những gì bạn muốn: giữ cho MacBook luôn tỉnh táo với nắp đóng và cho phép bạn đặt thời gian chờ.

Tôi mới thử nó trên Mojave (10.14.2) và nó hoạt động rất tốt với tôi. https://github.com/iccir/Fermata


5

Không có cách bản địa để làm điều đó. Đây là những gì tôi nhận được sau một số tìm kiếm và thử nghiệm:

nhập mô tả hình ảnh ở đây

Chú thích:

  • Phần mở rộng kernel của Nos ngủ không được tải trên High Sierra
  • SPI riêng KHÔNG được Apple hỗ trợ sau High Sierra. Fermata chuyển sang pmsetphương thức sau phiên bản 1.1
  • Bạn có thể cần phải tắt Gatekeeper để cho phép Mất ngủ hoạt động như mong đợi.
  • Các ứng dụng khác tôi đã thử không hoạt động với nắp đóng

1

Bạn đã thử ứng dụng này ? Tôi thấy nó rất hữu ích cho chính xác những gì bạn đang theo đuổi.

Tôi khá chắc chắn rằng nó có một tính năng hết thời gian mà bạn đã đặt trong cài đặt của ứng dụng.


6
Cảm ơn @ mitchell-d. Câu hỏi đặc biệt yêu cầu một giải pháp tự nhiên, chẳng hạn như caffein. Có những ứng dụng khác được đề xuất trong is-there-any-way-to-set-a-macbook-pro-to-not-ngủ-when-you-close-the-nắp Tuy nhiên, tôi đã thử ứng dụng caffeine mà bạn khuyên dùng. không ngăn macbook của tôi ngủ khi tôi đóng nắp.
ở đây
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.