Skip to content

Commit

Permalink
GIF Shuffle (Change) added
Browse files Browse the repository at this point in the history
  • Loading branch information
pranjal-joshi committed Aug 20, 2021
1 parent e73f9df commit f4096ea
Show file tree
Hide file tree
Showing 2 changed files with 28 additions and 11 deletions.
26 changes: 18 additions & 8 deletions GifSaver.py
Original file line number Diff line number Diff line change
Expand Up @@ -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'
Expand All @@ -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 + "/*")
Expand All @@ -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()
13 changes: 10 additions & 3 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,26 +8,33 @@ 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
-f FOLDER, --folder FOLDER
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
Expand Down

0 comments on commit f4096ea

Please sign in to comment.