Я хочу, чтобы мой ноутбук просыпался утром из приостановленного режима и предупреждал меня, чтобы я проснулся, используя мой mp3-файл. Как мне это сделать?
Я попробовал apmsleep, но он не работает, потому что на моем ПК нет функции «приостановить работу в ОЗУ» в BIOS. Что я могу сделать? Спасибо!
Я испытал затруднения при запущении скрипта Python Jacob, таким образом, я переписал его в ударе. Просто загрузите его, сделайте его исполняемым файлом и отредактируйте переменные соответственно.
Несколько вещей: время аварийного сигнала установлено через date -d
. Некоторые примеры от man date
:
После просыпаются, я использую vlc -L
играть некоторую музыку в цикле. Если Ваш путь будет папкой, то он попытается играть файлы в нем. Это - то, что я делаю.
Если вы можете подключить ноутбук к Интернету с помощью кабеля, вы можете попробовать использовать другой компьютер или смартфон, чтобы отправить ему «волшебный пакет» и разбудить его.
Ищите «разбудить по локальной сети» (WOL).
1. Базовая функция будильника
Войдя в режим ожидания
для этого решения, вам необходимо войти в режим ожидания, выполнив приведенный ниже сценарий. Он переводит компьютер в режим ожидания и будит вас в (по часам) время, указанное вами (в скрипте). играет твою песню.
Конечно, вы можете просто запустить сценарий вручную, чтобы использовать его, но удобнее сделать его доступным с помощью комбинации клавиш, установленной в Системные настройки> Клавиатура> Ярлыки> Пользовательские сочетания клавиш
.
Настройка
Вставьте приведенный ниже сценарий в пустой файл, установите время пробуждения (часы) (1-24 часа, 1-60 минут), укажите путь к вашей песне для пробуждения и сохраните ее. как wakeup.py
.
#! / Usr / bin / env python3
import datetime
import subprocess
######### ###################################
# установить время пробуждения и местоположение mp3:
час = 7
минут = 15
command = "hythmbox /path/to/wakeupsong.mp3"
######### ###################################
currtime = str (datetime.datetime.now (). time ()). split (":") [: 2]
minutes_set = час * 60 + минут
minutes_curr = int (currtime [0] ) * 60 + int (currtime [1])
if minutes_curr
сделать скрипт исполняемым
Установить комбинацию клавиш для запуска скрипта; откройте Системные настройки> Клавиатура> Ярлыки> Пользовательские сочетания клавиш
, добавьте команду
sudo /path/to/wakeup.py (sudo = при условии, что вы выполните следующий шаг ниже)
и выберите комбинацию клавиш
Для сценария требуются права администратора. Чтобы запустить его без ввода пароля, откройте файл sudoers:
sudo visudo
добавьте строку в самый конец файла:
{{1 }} [your_username] ALL = NOPASSWD: [/path/to/wakeup.py ]
Обратите внимание на то, что файл sudoers является важным файлом; ошибки в файле могут привести к серьезным проблемам , поэтому будьте осторожны!
Примечание.
gksu
: sudo apt-get install gksu
.В этом случае команда для запуска
скрипта - gksu /path/to/wakeup.py
, и вам будет предлагаться
ваш пароль каждый раз при его запуске. . Теперь вы можете войти в режим ожидания с помощью комбинации клавиш, и вас разбудит песня для пробуждения.
2. Расширенная версия , включая функцию остановки при (любом)нажатие клавиши или мыши
Различия между этой версией и «базовой» в том, что в этой версии будильник останавливается, когда обнаруживается любое нажатие клавиши или движение мыши (это удобнее, чем останавливать Rhythmbox на компьютере) когда вы только что проснулись), и что будильник автоматически выключается через определенный период времени.
Настройка почти такая же, как и в базовой версии, но необходимо установить xprintidle
для обнаружения событий нажатия клавиш или движения мыши:
sudo apt-get install xprintidle
Сценарий:
#!/usr/bin/env python3
import subprocess
import time
import datetime
from threading import Thread
#-------------------------- edit settings below -------------------------------
max_wakeupduration = 1 # max time the song will play (minutes)
wakeup_hour = 7 # wake up hour (0-24)
wakeup_minute = 15 # wake up minute
wakeup_song = "/path/to/song.mp3" # path to wake up song
#------------------------------------------------------------------------------
def stop_wakeup():
time1 = int(time.time()); time2 = time1
last_idle = 0
playtime = max_wakeupduration*60
while time2 - time1 < playtime:
get_idle = subprocess.Popen(["xprintidle"], stdout=subprocess.PIPE)
curr_idle = int(get_idle.communicate()[0].decode("utf-8"))
if curr_idle < last_idle:
break
else:
last_idle = curr_idle
time.sleep(1)
time2 = int(time.time())
subprocess.Popen(["pkill", "rhythmbox"])
def calculate_time():
currtime = str(datetime.datetime.now().time()).split(":")[:2]
minutes_set = wakeup_hour*60 + wakeup_minute
minutes_curr = int(currtime[0])*60 + int(currtime[1])
if minutes_curr < minutes_set:
minutes_togo = minutes_set - minutes_curr
else:
minutes_togo = minutes_set + 1440-minutes_curr
return minutes_togo*60
def go_asleep():
sleeptime = calculate_time()
run = "rtcwake -m disk -s "+str(sleeptime)+" && "+"sleep 20"
subprocess.call(['/bin/bash', '-c', run])
combined_actions()
def play_song():
command = "rhythmbox "+wakeup_song
subprocess.Popen(['/bin/bash', '-c', command])
def combined_actions():
Thread(target = play_song).start()
Thread(target = stop_wakeup).start()
go_asleep()
Пояснение
rtcwake
Оба сценария написаны вокруг команды rtcwake
, как описано здесь . Команду можно использовать для перевода компьютера в режим ожидания и пробуждения через определенное время (и, при необходимости, для запуска команды после пробуждения). Параметр -m disk
используется, поскольку OP упомянул, что его компьютер не поддерживает функцию «приостановить работу в ОЗУ» в BIOS. См. Также man rtcwake
.
Функция остановки
Функция остановки работает как функция, которая измеряет время простоя каждую секунду во время воспроизведения песни и запоминает время последнего простоя. ЕСЛИ последнее время простоя превышает текущее, это означает, что произошло нажатие клавиши или событие мыши, и Rhythmbox отключен.