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

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

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

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

6
задан 16 August 2015 в 02:13

3 ответа

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

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

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

enter image description here или: enter image description here

По сути, он представляет собой небольшой фоновый сценарий, который имитирует незначительное действие пользователя (нажатие клавиши 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)

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

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

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

     / путь  /to/insomnia.py
     

    На комбинацию клавиш по вашему выбору

Вот и все.

7
ответ дан 23 November 2019 в 09:24

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

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

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

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

0
ответ дан 23 November 2019 в 09:24

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

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

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

     sudo apt install xdotool xprintidle
     

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

  3. В установленном вами каталоге запустите sleep_inhibit .
  4. Если вы хотите, чтобы приложение работало автоматически запускаться каждый раз, когда вы входите в систему, открываете меню значка, выбираете «Настройки» и включаете его в окне настроек.
  5. Если вы решите удалить его, выйдите из режима блокировки сна, затем запустите cleanup.py , обязательно ответить утвердительно на все вопросы. Затем удалите каталог, и все следы исчезнут.
0
ответ дан 23 November 2019 в 09:24

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

Похожие вопросы: