Loading .shell/bin/wallpaper +19 −2 Original line number Diff line number Diff line Loading @@ -44,11 +44,28 @@ else exit 2 fi if has file; then check() { case `file --brief --mime-type "$1"` in image/*) return 0 ;; *) return 1 ;; esac; } else check() { case "$1" in *.png|*.jpg|*.jpeg|*.tiff|*.bmp) return 0 ;; *) return 1 ;; esac; } fi min_delay=$((MIN_DELAY_MINS * 60)) max_delay=$((MAX_DELAY_MINS * 60)) dif_delay=$((max_delay - min_delay)) trap '[ -z "${PID:-}" ] || kill -HUP $PID' HUP while true; do "$@" "`list|choose`" sleep `seq $min_delay $max_delay | choose` FILE="`list|choose`" check "$FILE" || continue "$@" "$FILE" sleep `seq $min_delay $max_delay | choose` & PID=$! wait $PID || [ ${CODE:=$?} -eq 129 ] || exit $CODE unset PID CODE done .shell/bin/wallpaper.py +29 −5 Original line number Diff line number Diff line Loading @@ -7,6 +7,7 @@ import os import sys import time import random import signal import subprocess from os import path Loading @@ -17,19 +18,42 @@ IMAGES_DIRECTORY = path.expanduser( os.environ.get('IMAGES_DIRECTORY', '~/.backgrounds')) class InterruptSignal(KeyboardInterrupt): """Raised from a signal handler to interrupt a system call""" def __init__(self, signum): KeyboardInterrupt.__init__(self, signum) self.signum = signum @classmethod def sighandler(cls, signum, _): raise cls(signum) def all_files(): for dirpath, _, filenames in os.walk(IMAGES_DIRECTORY): for filename in filenames: yield path.join(dirpath, filename) try: signal.signal(signal.SIGHUP, InterruptSignal.sighandler) except ValueError: # Running on Windows? Looks like it. raise OSError("This OS is not supported") if len(sys.argv) > 0: cmd = sys.argv[1:] + [None] else: cmd = ['feh', '--no-fehbg', '--no-xinerama', '--bg-fill', None] while 1: try: files = list(all_files()) if files: cmd[-1] = random.choice(files) subprocess.call(cmd) time.sleep(random.randint(MIN_DELAY_SECS, MAX_DELAY_SECS)) sleep_time = random.randint(MIN_DELAY_SECS, MAX_DELAY_SECS) time.sleep(sleep_time) except InterruptSignal: pass Loading
.shell/bin/wallpaper +19 −2 Original line number Diff line number Diff line Loading @@ -44,11 +44,28 @@ else exit 2 fi if has file; then check() { case `file --brief --mime-type "$1"` in image/*) return 0 ;; *) return 1 ;; esac; } else check() { case "$1" in *.png|*.jpg|*.jpeg|*.tiff|*.bmp) return 0 ;; *) return 1 ;; esac; } fi min_delay=$((MIN_DELAY_MINS * 60)) max_delay=$((MAX_DELAY_MINS * 60)) dif_delay=$((max_delay - min_delay)) trap '[ -z "${PID:-}" ] || kill -HUP $PID' HUP while true; do "$@" "`list|choose`" sleep `seq $min_delay $max_delay | choose` FILE="`list|choose`" check "$FILE" || continue "$@" "$FILE" sleep `seq $min_delay $max_delay | choose` & PID=$! wait $PID || [ ${CODE:=$?} -eq 129 ] || exit $CODE unset PID CODE done
.shell/bin/wallpaper.py +29 −5 Original line number Diff line number Diff line Loading @@ -7,6 +7,7 @@ import os import sys import time import random import signal import subprocess from os import path Loading @@ -17,19 +18,42 @@ IMAGES_DIRECTORY = path.expanduser( os.environ.get('IMAGES_DIRECTORY', '~/.backgrounds')) class InterruptSignal(KeyboardInterrupt): """Raised from a signal handler to interrupt a system call""" def __init__(self, signum): KeyboardInterrupt.__init__(self, signum) self.signum = signum @classmethod def sighandler(cls, signum, _): raise cls(signum) def all_files(): for dirpath, _, filenames in os.walk(IMAGES_DIRECTORY): for filename in filenames: yield path.join(dirpath, filename) try: signal.signal(signal.SIGHUP, InterruptSignal.sighandler) except ValueError: # Running on Windows? Looks like it. raise OSError("This OS is not supported") if len(sys.argv) > 0: cmd = sys.argv[1:] + [None] else: cmd = ['feh', '--no-fehbg', '--no-xinerama', '--bg-fill', None] while 1: try: files = list(all_files()) if files: cmd[-1] = random.choice(files) subprocess.call(cmd) time.sleep(random.randint(MIN_DELAY_SECS, MAX_DELAY_SECS)) sleep_time = random.randint(MIN_DELAY_SECS, MAX_DELAY_SECS) time.sleep(sleep_time) except InterruptSignal: pass