Dotfiles
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

#!/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))