見出し画像

蓋を閉じてもノートPCを動かし続けたい(Ubuntu22.04)

ノートパソコンの性能が上がってきたので、職場でも自宅でもノートパソコンをメインPCに使ってます。
しかし、ディスプレイは大きい方がいいので外部ディスプレイを繋ぎます。
その時、蓋の開閉と連動したサスペンド機能が働くと困るので、無効にする方法を紹介します。
ロボットの背中にノートPCを積むときにも大事ですよね。


蓋を閉じてもスリープにしない

/etc/systemd/logind.conf を編集する方法

ノートPCの蓋を閉じた時の動作はsystemd-logind.serviceで設定します。
/etc/systemd/logind.conf を編集します。

$ sudo vi /etc/systemd/logind.conf
[Login]
#NAutoVTs=6
#ReserveVT=6
#KillUserProcesses=no
#KillOnlyUsers=
#KillExcludeUsers=root
#InhibitDelayMaxSec=5
#UserStopDelaySec=10
#HandlePowerKey=poweroff
#HandleSuspendKey=suspend
#HandleHibernateKey=hibernate
#HandleLidSwitch=suspend
#HandleLidSwitchExternalPower=suspend
#HandleLidSwitchDocked=ignore
#HandleRebootKey=reboot

HandleLidSwitch=ignore にすることで、蓋を閉じてもそのまま動作します。
保存して、下記のコマンドでサービスを再起動します。

systemctl restart systemd-logind.service

/etc/systemd/logind.conf を修正してもダメだった場合

ごく稀に/etc/systemd/logind.conf を修正しても蓋を閉めるとスリープしてしまう場合があります。
その時はGUIで操作するGNOME Tweaksで設定してください。

genome-tweaksがインストールされていない場合、下記のコマンドでインストールしてください。

sudo apt install gnome-tweaks

画面左下の「アプリケーションを表示する」からユーティリティからTweaksをクリックします。

「ラップトップの蓋を閉じるとサスペンドする」を無効にします。

放置してもスリープにしない

キーボードやマウスが一定時間操作されなかった場合、省電力のためノートPCがサスペンドされてしまいます。

/usr/share/gdm/dconf/90-debian-settingsを編集することでサスペンドを回避します。

sudo vi /usr/share/gdm/dconf/90-debian-settings

ファイル内に以下の設定を追記します。

[org / gnome / settings-daemon / plugins / power]
sleep-inactive-ac-timeout = 0
sleep-inactive-battery-timeout = 0

ファイルを保存すれば設定は完了です。

画面ロックしない

一定時間ユーザーによる操作がない時に、自動的に画面をロックしパスワードで保護したり、画面がブランク状態になったりします。
以下の手順で解除します。

「設定」の「プライバシー」の「画面」で画面がロックしないようにします。

バッテリーの残量をモニターする

クラムシェルモードにしてリモート接続で運用するとバッテーリーの残量が心配です。 バッテリーの充電状況や劣化の具合は upowerコマンドで確認できます。

電源デバイスの確認

$ upower -e
/org/freedesktop/UPower/devices/line_power_AC
/org/freedesktop/UPower/devices/battery_BAT0
/org/freedesktop/UPower/devices/line_power_ucsi_source_psy_USBC000o001
/org/freedesktop/UPower/devices/line_power_ucsi_source_psy_USBC000o002
/org/freedesktop/UPower/devices/DisplayDevice

指定した電源デバイスの状態表示

$ upower -i /org/freedesktop/UPower/devices/battery_BAT0
  native-path:          BAT0
  vendor:               SMP
  model:                01YU911
  serial:               1549
  power supply:         yes
  updated:              20230521090632秒 (85 seconds ago)
  has history:          yes
  has statistics:       yes
  battery
    present:             yes
    rechargeable:        yes
    state:               fully-charged
    warning-level:       none
    energy:              70.07 Wh
    energy-empty:        0 Wh
    energy-full:         70.07 Wh
    energy-full-design:  80.4 Wh
    energy-rate:         0 W
    voltage:             16.928 V
    percentage:          100%
    capacity:            87.1517%
    technology:          lithium-polymer
    icon-name:          'battery-full-charged-symbolic'

バッテリーの残量を求める

$ upower -i /org/freedesktop/UPower/devices/battery_BAT0 | grep -e "percentage" -e "time to empty"
   percentage:          100%
$ upower -i /org/freedesktop/UPower/devices/battery_BAT0 | grep -e "percentage" |awk '{print $2}'
100%

リモートマシンのバッテリーの残量を求める

rsh を使って、他のマシンのバッテリーの残量を求めます。

$ rsh hsrb.local upower -i /org/freedesktop/UPower/devices/battery_BAT0 | grep -e "percentage" |awk '{print $2}'
100%

パスワードなしでrshを実行する方法は各自で調べてください。

sshpassを使ってリモートアクセスする

sshpassのインストール

sudo apt-get install sshpass

コマンドラインから使う

ssh で接続する

sshpass -p パスワード ssh ユーザID@マシン名 

rsh でコマンドを実行する

sshpass -p パスワード rsh ユーザID@マシン名  コマンド

Pythonプログラムで使う

#!/usr/bin/env python3
# -*- coding: utf-8 -*-
import os
import subprocess

res = subprocess.run(
    "sshpass -p パスワード rsh ユーザ名@マシン名 upower -i /org/freedesktop/UPower/devices/battery_BAT0 | grep -e percentage |awk '{print $2}'",
    capture_output=True,
    text=True,
    shell=True
)

if res.returncode==0: # リターンコード
    print(res.stdout) # 標準出力に結果が入る

いいなと思ったら応援しよう!