Я хотел бы смочь не дать спать компьютеру во время определенных операций и более длинных выполняющихся задач, таких как загрузка больших файлов и просмотр полноэкранных роликов.
Мне нравится использовать Кофеин, чтобы помешать компьютеру спать, препятствуя тому, чтобы дисплей спал. Это работало хорошо на меня на моем Mac, но это не работает в Ubuntu.
Как я могу сделать это?
Я не уверен, почему кофеин не заставляет ваш компьютер спать. Я подозреваю, что это связано с тем, что время простоя в 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)
Важно, чтобы вы сохранили оба сценария в в той же папке!
Теперь добавьте сочетание клавиш для включения и выключения замены кофеина: «Системные настройки»> «Клавиатура»> «Горячие клавиши»> «Пользовательские сочетания клавиш»
Добавьте команду:
/ путь /to/insomnia.py
На комбинацию клавиш по вашему выбору
Вот и все.
Вы также можете использовать здесь пару сценариев, которые, на мой взгляд, более разумны, поскольку определяют активность на основе сетевой активности или изменения размера папки.
Например, если вы хотите оставить компьютер просыпайтесь, пока работает резервный или торрент-клиент, используйте второе решение в ссылке от dhiya. Он будет проверять сетевой трафик и держать его в активном состоянии, пока он не остановится. Просто не забудьте изменить 'wlan0' на 'eth0' в коде, если вы используете Ethernet, а не беспроводную сеть.
ОБНОВЛЕНИЕ 17/09/2015: Я изменил код dhiya по ссылке ниже, чтобы система не спала. на основе сетевого трафика или активности пользователя, а также для принудительной приостановки, если сеанс рабочего стола заканчивается на экране блокировки / входа без сетевого трафика. Программа записывает все в файл журнала. Конфигурация также была предоставлена для управления файлом журнала. Я назвал программу «Keep Awake».
ССЫЛКА : Есть ли способ заставить Ubuntu не зависать во время загрузки?
Используя действительно полезный сценарий Джейкоба Влайма в качестве отправной точки, я превратил его в полноценное приложение с параметрами конфигурации, контролем заряда батареи и т. Д.
Вы можете взять его на GitHub . Установка не требуется. Просто:
.tar.gz
и извлеките файлы (или клонируйте основную ветку, если вы являетесь пользователем git) туда, где вы хотите, чтобы приложение размещалось. Наличие его на вашем $ PATH
не требуется . Установите зависимости:
sudo apt install xdotool xprintidle
Если вы используете ноутбук, вам также понадобится acpi
.
sleep_inhibit
. cleanup.py
, обязательно ответить утвердительно на все вопросы. Затем удалите каталог, и все следы исчезнут.