Как я могу держать компьютер без сна, в зависимости от активности?

Мне бы хотелось, чтобы компьютер не спал во время определенных действий и более длительных задач, таких как загрузка больших файлов и просмотр полноэкранных видео.

Мне нравится использовать кофеин, чтобы компьютер не спал, не позволяя дисплею спать. Это хорошо работает на моем Mac, но это не работает в Ubuntu.

Как я могу это сделать?

4 ответа

Решение

Я не уверен, почему кофеин не держит ваш компьютер без сна. Я подозреваю, что это связано с тем, что время простоя в Ubuntu эквивалентно времени, когда пользовательская активность не обнаруживается с помощью клавиатуры или мыши.

Как предотвратить засыпание компьютера

Если вы ищете решение для того, чтобы ваш компьютер не спал, как это делает (должен делать) кофеин, то приведенное ниже решение должно работать; Я проверял это на 14.04. Он состоит из двух небольших скриптов, которые вы должны хранить вместе в одной и той же папке. Вы можете включить или включить (переключить) с помощью комбинации клавиш. Как только вы нажмете на него, в сообщении будет показано текущее состояние:

введите описание здесь или же: введите описание здесь

В основном это небольшой фоновый скрипт, который имитирует незначительное действие пользователя (нажатие клавиши Ctrl), если время простоя превышает определенный промежуток времени, что не позволяет компьютеру заснуть или очистить экран. Само нажатие клавиши не имеет смысла и не влияет на воспроизведение видео в полноэкранном режиме.

Как пользоваться

  • Вам нужно будет иметь xprintidle а также xdotool установлены:

    sudo apt-get install xprintidle xdotool
    

    (inotify-tools должен быть установлен по умолчанию в Ubuntu, может быть не так в Xu- или Lubuntu)

  • Сценарий ниже включает / выключает, копирует его в пустой файл и сохраняет как insomnia.py (оставьте имя как есть!) и сделайте его исполняемым (!)

#!/usr/bin/env python3
import os
import subprocess

script_dir = os.path.dirname(os.path.abspath(__file__))
try:
    pid = subprocess.check_output(["pgrep", "-f", "caf.py"]).decode("utf-8").strip()
    subprocess.Popen(["kill", pid])
    subprocess.Popen(["notify-send", "Computer doesn't stay awake..."])
except:
    subprocess.Popen(["/bin/bash", "-c", script_dir+"/"+"caf.py"])
    subprocess.Popen(["notify-send", "Computer stays awake..."])
  • (Основной) сценарий, приведенный ниже, должен держать компьютер в активном состоянии, скопировать сценарий в пустой файл и сохранить его как caf.py (оставьте имя как есть!) и сделайте его исполняемым (!)
#!/usr/bin/env python3

import subprocess
import time

seconds = 120 # number of seconds to start preventing blank screen / suspend

while True:
    curr_idle = subprocess.check_output(["xprintidle"]).decode("utf-8").strip()
    if int(curr_idle) > seconds*1000:
        subprocess.call(["xdotool", "key", "Control_L"])
    time.sleep(10)

Важно, чтобы вы держали оба скрипта в одной папке!

  • Теперь добавьте сочетание клавиш для включения и выключения замены кофеина: "Системные настройки" > "Клавиатура" > "Ярлыки" > "Пользовательские ярлыки"

    Добавьте команду:

    /path/to/insomnia.py
    

    Для комбинации клавиш на ваш выбор

Вот и все.

xprintidle здесь не работает на Wayland, а xdotool можно заменить на ydotool на Wayland.

Есть еще истории с org.gnome.ScreenSaver.SimulateUserActivity и gnome-session-inhibit , но я с ними не разобрался.

Если сценарий установит значение обратно, решение может быть следующим:

      gsettings set org.gnome.desktop.session idle-delay 3600

Число представляет секунды. Используйте 0 для Никогда .

Используя действительно полезный сценарий Якоба Влиджма в качестве отправной точки, я превратил его в полноценное приложение с параметрами конфигурации, информацией об уровне заряда батареи и т. Д.

Вы можете получить его на GitHub. Установка не требуется. Просто:

  1. Скачать .tar.gz и извлеките файлы (или клонируйте основную ветку, если вы пользователь git) в любое место, где вы хотите, чтобы приложение работало. Имея это на вашем $PATH не обязательно
  2. Установите зависимости:

    sudo apt install xdotool xprintidle
    

    Если вы используете ноутбук, вы также захотите acpi,

  3. Из каталога, который вы установили, запустите sleep_inhibit,
  4. Если вы хотите, чтобы приложение автоматически запускалось при каждом входе в систему, откройте меню значка, выберите "Настройки" и включите его в окне настроек.
  5. Если вы решите удалить его, выйдите из режима Sleep Inhibit и запустите cleanup.py, обязательно ответив да на все вопросы. Затем удалите каталог, и все следы исчезнут.

Вы также можете воспользоваться парой скриптовых решений, которые, на мой взгляд, более интеллектуальны, так как они определяют активность на основе сетевой активности или изменения размера папки.

Например, если вы хотите, чтобы компьютер бодрствовал во время работы резервного или торрент-клиента, воспользуйтесь вторым решением по ссылке от dhiya. Он будет проверять сетевой трафик и держать его в активном состоянии, пока трафик не остановится. Просто помните, чтобы изменить "wlan0" на "eth0" в коде, если вы используете Ethernet, а не беспроводной локальной сети.

ОБНОВЛЕНИЕ 17/09/2015: я изменил код dhiya по ссылке внизу, чтобы система не спала в зависимости от сетевого трафика или активности пользователя, а также для принудительного приостановления, если сеанс рабочего стола заканчивается на экране блокировки / входа в систему без сетевого трафика. Программа записывает все в файл журнала. Config также был предоставлен для управления лог-файлом. Я назвал программу "Keep Awake".

ССЫЛКА: Есть ли способ заставить Ubuntu не приостанавливать процесс загрузки?

Другие вопросы по тегам