macOSの電源操作をpmsetで行う

macOSpmset というコマンドを提供している。このコマンドは macOS の電源管理を行う。僕はmacをクラムシェルモード1で使用する事がある。そういう時はコマンドの使い方をだいたい忘れているため、その都度 pmset のサブコマンドの意味を調べて実行していた。そのコマンドをまとめる。

MacBookを閉じてもスリープさせない

スリープさせないようにする(つまり閉じてもスリープしない)

sudo pmset -a disablesleep 1

スリープさせないようにしない(つまり閉じるとスリープする)

sudo pmset -a disablesleep 0

macOSを即座にスリープする

macOSを即座にスリープするには sleepnow を指定する。

pmset sleepnow

Emacsのコマンドを提供する

pmset の使い方を毎回調べるのは面倒なので、Emacs上から M-x で呼び出せるEmacsのコマンドを用意する事にした。

macos-pmset.el

;;; macos-pmset --- macOS Power Utility. -*- lexical-binding: t -*-

;; Copyright (C) 2024 TakesxiSximada

;; Author: TakesxiSximada <[email protected]>
;; Maintainer: TakesxiSximada <[email protected]>
;; Version: 3
;; Package-Version: 20240314.0000
;; Package-Requires: ((emacs "29.1"))
;; Date: 2024-03-14

;; This file is not part of GNU Emacs.

;;; License:

;; This program is free software: you can redistribute it and/or
;; modify it under the terms of the GNU Affero General Public License as
;; published by the Free Software Foundation, either version 3 of the
;; License, or (at your option) any later version.

;; This program is distributed in the hope that it will be useful,
;; but WITHOUT ANY WARRANTY; without even the implied warranty of
;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
;; Affero General Public License for more details.

;; You should have received a copy of the GNU Affero General Public
;; License along with this program.  If not, see
;; <https://www.gnu.org/licenses/>.

;;; Code:

(defvar macos-pmset-buffer-name "*macOS pmset*")

;;;###autoload
(defun macos-pmset-set-sleep (state)
  (interactive (list (intern (completing-read "Sleep: " '(enable disable)))))
  (let ((shell-command-buffer-name-async macos-pmset-buffer-name)
	(async-shell-command-buffer 'confirm-kill-process))
    (async-shell-command
     (format "sudo pmset -a disablesleep %s"
	     (cond ((equal state 'enable) 0)
		   ((equal state 'disable) 1)	  
		   (t (error "Bad parameter: %s" state)))))))

(defalias #'macos-pmset-disable-sleep (apply-partially #'macos-pmset-set-sleep 'disable))
(defalias #'macos-pmset-enable-sleep (apply-partially #'macos-pmset-set-sleep 'enable))

;;;###autoload
(defun macos-pmset-sleepnow ()
  (interactive)
  (let ((shell-command-buffer-name-async macos-pmset-buffer-name)
	(async-shell-command-buffer 'confirm-kill-process))
    (async-shell-command "pmset sleepnow")))

;;; macos-pmset.el ends here

1

ノートパソコンをを閉じた状態で使う事。