You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
66 lines
1.7 KiB
66 lines
1.7 KiB
#!/usr/bin/env python3 |
|
# Sleep Timer for Audio Books, inspired by some of the nice Android audiobook players |
|
# (c) 2015 by Taeyeon Mori |
|
|
|
|
|
from PyQt5 import QtCore, QtGui, QtWidgets, QtMultimedia |
|
|
|
import sys |
|
import subprocess |
|
|
|
|
|
cmd = ["playerctl", "pause"] |
|
beep = "/usr/share/sounds/freedesktop/stereo/bell.oga" |
|
|
|
|
|
def run_task(): |
|
print("Rnunning ", cmd) |
|
subprocess.Popen(cmd) |
|
|
|
|
|
|
|
def main(app): |
|
icon = QtGui.QIcon.fromTheme("caffeine", QtGui.QIcon.fromTheme("kalarm")) |
|
tray = QtWidgets.QSystemTrayIcon(icon) |
|
|
|
def wakeup(): |
|
print("Checking Human") |
|
dialog = QtWidgets.QMessageBox(QtWidgets.QMessageBox.NoIcon, "Wake up", "Click OK or press return to reset timer") |
|
dialog.addButton(QtWidgets.QMessageBox.Ok) |
|
dialog.addButton(QtWidgets.QMessageBox.Close) |
|
timeout = QtCore.QTimer() |
|
timeout.setInterval(60000) |
|
timeout.setSingleShot(True) |
|
timeout.timeout.connect(dialog.reject) |
|
|
|
QtMultimedia.QSound.play(beep) |
|
|
|
timeout.start() |
|
if dialog.exec() != QtWidgets.QMessageBox.Ok: |
|
timeout.stop() |
|
run_task() |
|
app.quit() |
|
else: |
|
timer.start() |
|
|
|
timer = QtCore.QTimer() |
|
timer.setInterval(600000) |
|
timer.setSingleShot(True) |
|
timer.timeout.connect(wakeup) |
|
|
|
menu = QtWidgets.QMenu() |
|
areset = menu.addAction("Reset") |
|
areset.triggered.connect(lambda x: (timer.stop(), timer.start())) |
|
aquit = menu.addAction("Quit") |
|
aquit.triggered.connect(app.quit) |
|
tray.setContextMenu(menu) |
|
|
|
tray.show() |
|
timer.start() |
|
return app.exec() |
|
|
|
|
|
if __name__ == "__main__": |
|
app = QtWidgets.QApplication(sys.argv) |
|
sys.exit(main(app)) |
|
|
|
|