diff --git a/GifSaver.py b/GifSaver.py index b00ccc7..5723ca6 100755 --- a/GifSaver.py +++ b/GifSaver.py @@ -8,7 +8,8 @@ import signal import argparse as ap from time import sleep -#from daemonize import Daemonize + +# Pyinstaller Build Command = pyinstaller --onefile GifSaver.py # Constants pidPath = '/tmp/GifSaver.pid' @@ -21,12 +22,14 @@ def getArgs(args=None): parser = ap.ArgumentParser() parser.add_argument('-f', '--folder', help='Path to GIF Folder', required=True) parser.add_argument('-t', '--timeout', help='Idle Timeout to Start Screensaver', default=60, type=int) + parser.add_argument('-c', '--change', help='Change Image/GIF after seconds (0 = shuffle disable)', default=60, type=int) res = parser.parse_args() if DEBUG: print('Arguments:') print(f'Folder = {res.folder}') print(f'Timeout = {res.timeout}') - return (res.folder, res.timeout) + print(f'Change = {res.change}') + return (res.folder, res.timeout, res.change) def getFiles(path): filelist = glob.glob(path + "/*") @@ -44,24 +47,31 @@ def killDaemon(x, *args): # Screensaver Method def screensaverService(): - folder, timeout = getArgs(sys.argv[1:]) + folder, timeout, change = getArgs(sys.argv[1:]) filenames = getFiles(folder) eogPid = None + changetime = 0 signal.signal(signal.SIGTERM, killDaemon) while True: idletime = int(os.popen("xprintidle").read())/1000; if DEBUG: print(f'IdleTime = {idletime}') - if idletime > timeout and eogPid is None: - fn = filenames[random.randrange(len(filenames))] - eogPid = sp.Popen(['eog','-f',fn]) + if idletime > timeout: + if eogPid is None: + fn = filenames[random.randrange(len(filenames))] + eogPid = sp.Popen(['eog','-f',fn]) + if change != 0: + changetime += 1 + if change == changetime: + changetime = 0 + fn = filenames[random.randrange(len(filenames))] + sp.Popen(['eog','-f','-w',fn]) if idletime < timeout and eogPid is not None: eogPid.terminate() eogPid = None + changetime = 0 sleep(1) if __name__ == "__main__": - #daemon = Daemonize(app='GifSaver', pid=pidPath, action=screensaverService) - #daemon.start() screensaverService() diff --git a/README.md b/README.md index aac7329..2053876 100644 --- a/README.md +++ b/README.md @@ -8,11 +8,15 @@ Only an Ubuntu user knows the true pain of not able set a Live Screensaver. So t ## How to Use it? +Firstly, Install the dependency by executing following command: + +`sudo apt-get install xprintidle` + You can either run GifSaver with Python or use a pre-compiled binary! The script takes 2 inputs from the user as follow: ``` -usage: GifSaver.bin or GifSaver.py [-h] -f FOLDER [-t TIMEOUT] +usage: GifSaver.py or GifSaver.bin [-h] -f FOLDER [-t TIMEOUT] [-c CHANGE] optional arguments: -h, --help show this help message and exit @@ -20,14 +24,17 @@ optional arguments: Path to GIF Folder -t TIMEOUT, --timeout TIMEOUT Idle Timeout to Start Screensaver + -c CHANGE, --change CHANGE + Change Image/GIF after seconds (0 = shuffle disable) + ``` For example ``` -python3 path/to/GifSaver.py -f path/to/folder/where/GIFs/are/stored -t 120 +python3 path/to/GifSaver.py -f path/to/folder/where/GIFs/are/stored -t 120 -c 60 or -./path/to/GifSaver.bin -f path/to/folder/where/GIFs/are/stored -t 60 +./path/to/GifSaver.bin -f path/to/folder/where/GIFs/are/stored -t 60 -c 300 ``` ## Adding to Start-up