I'm trying to get a custom script to run, it does a basic job of switching randomly my wallpapers depending on the time of day from two folders, one folder has "day" wallpapers and the other has "night" wallpapers. The script is an executable already and it does work when I type the command directly into the terminal like this:
$ /path/to/my/scripts/twofoldersolution.py
So, I made a cron-job to invoke it every 5 mins (on my user crontab, not with sudo, it didn't work that way either), like this:
*/5 * * * * /path/to/my/scripts/twofoldersolution.py
Up until now, as far as I can tell, it should be working, and the logs reflect this with the following:
Aug 30 12:20:01 WarMachine CRON[2877]: (fawtytwo) CMD (/path/to/my/scripts/twofoldersolution.py)
Aug 30 12:25:01 WarMachine CRON[2937]: (fawtytwo) CMD (/path/to/my/scripts/twofoldersolution.py)
Aug 30 12:30:01 WarMachine CRON[3004]: (fawtytwo) CMD (/path/to/my/scripts/twofoldersolution.py)
My wallpaper should have changed 3 times already, but it stays the same, but I can still change it manually on the terminal.
Just to be on the safe side, here's my background changing script, it's a tiny bit hacky, but it works fine both on the terminal and running it with the IDE:
#!/usr/bin/env python3
import subprocess
import os
import sys
import time
from os import listdir
from random import choice
global path
path = {
"day": "/path/to/my/Wallpapers/Day",
"night": "/path/to/my/Wallpapers/Night"
}
def setwall(wall):
#set the wallpaper
command ="gsettings set org.gnome.desktop.background picture-uri "+\
"'" + wall + "'"
subprocess.Popen(["/bin/bash", "-c", command])
def convert_tosecs(t):
# convert time of the day (hrs/mins) to seconds
t = [int(n) for n in t.split(":")]
return (3600*t[0])+(60*t[1])
def timeofday():
#tells you if it's day or night
t = convert_tosecs(time.strftime("%H:%M"))
if t > 21600 and t < 75600: #6:00 - 21:00
return ("day")
else:
return ("night")
def newwall():
#chooses a new wallpaper depending on time of day
wallpath = path[timeofday()]
wallset = listdir(wallpath)
return (wallpath + "/" + choice(wallset))
if __name__ == "__main__":
wallpaper = newwall()
setwall(wallpaper)
Any ideas on what might be wrong?