Desktop application for Windows/macOS users to rotate through custom, preset, and searched-for collections of backgrounds with scheduling and additional settings

Overview

Background Revolution (In Development, Alpha Release)

What?

This will be an application for users to customize their windows backgrounds by uploading their custom collections, choosing from our preset ones, or even by searching on the spot by keyword. Then, the user can modify which ones are currently in their "rotation" so that it will automatically be changed for them by a set interval of their choosing.

How?

Either download the executable/zip file from one of our releases or run the most recent code from your own machine like so:

  • Make sure you have Python 3.8+ installed and added to PATH
  • Clone the repo on a computer running either Windows 10 or MacOS
  • Open your terminal in the directory that the repo is in
  • Install the required Python modules by running the requirements.txt file as such: pip install -r requirements.txt (doing this in a virtual environment is recommended), bare in mind that some modules aren't supposed to be installed on your machine (due to OS differences) so let the errors be
  • Run the file using python main.py or another method of your choosing

Why?

This is meant as a personal open-source project that won't ever be commercialized. Despite there already being an application very similar to ours, Wallpaper Engine on Steam, ours will bring a unique scheduling method, search by way of web scraping a Google Images API rather than community posts, and our collections system is different. We're not even looking at that application for any sort of inspiration, seeing as we had the idea before realizing its existence.

Comments
  • Steps for Development

    Steps for Development

    Part 1:

    • [x] Have a button on GUI to open file explorer and select an image for the background.
    • [x] try to open image, return an error message if unsupported file type inside image box. (not needed since configured file types already)
    • [x] Display image on GUI to review the image and submit.
    • [x] Change the user's background to the selected image upon hitting the submit button.
    • [ ] Could add options like this for how the image appears (fill = default, could also add resizing with whitespace on sides, could recommend tile for smaller images which would lose out on quality upon resizing to fill screen) image

    Part 2:

    • [ ] Uploading a custom collection of backgrounds, being able to upload multiple at a time
    • [ ] Being able to configure which images are in a current rotation and the period for which it is present in the cycle.
    • [ ] Schedule pictures for the next x amount of time to rotate through, until let's say 9 months is done with 36 cars images, 1 for every week.
    • [ ] Get time from user's computer or have a server running, probably the latter.
    • [ ] maybe get time from reputable online clock, then have it be checked on computer startup.

    Part 3:

    • [ ] Webscrape images for custom searches by users themselves through google images (google images API).
    • [ ] Can also choose custom collections or some preset options (that we've picked).
    • [ ] Can choose which preset collections of ours to show by putting them in a checkbox grid type thing.
    enhancement 
    opened by Daggerpov 3
  • Bump pillow from 8.3.1 to 8.3.2

    Bump pillow from 8.3.1 to 8.3.2

    Bumps pillow from 8.3.1 to 8.3.2.

    Release notes

    Sourced from pillow's releases.

    8.3.2

    https://pillow.readthedocs.io/en/stable/releasenotes/8.3.2.html

    Security

    • CVE-2021-23437 Raise ValueError if color specifier is too long [hugovk, radarhere]

    • Fix 6-byte OOB read in FliDecode [wiredfool]

    Python 3.10 wheels

    • Add support for Python 3.10 #5569, #5570 [hugovk, radarhere]

    Fixed regressions

    • Ensure TIFF RowsPerStrip is multiple of 8 for JPEG compression #5588 [kmilos, radarhere]

    • Updates for ImagePalette channel order #5599 [radarhere]

    • Hide FriBiDi shim symbols to avoid conflict with real FriBiDi library #5651 [nulano]

    Changelog

    Sourced from pillow's changelog.

    8.3.2 (2021-09-02)

    • CVE-2021-23437 Raise ValueError if color specifier is too long [hugovk, radarhere]

    • Fix 6-byte OOB read in FliDecode [wiredfool]

    • Add support for Python 3.10 #5569, #5570 [hugovk, radarhere]

    • Ensure TIFF RowsPerStrip is multiple of 8 for JPEG compression #5588 [kmilos, radarhere]

    • Updates for ImagePalette channel order #5599 [radarhere]

    • Hide FriBiDi shim symbols to avoid conflict with real FriBiDi library #5651 [nulano]

    Commits
    • 8013f13 8.3.2 version bump
    • 23c7ca8 Update CHANGES.rst
    • 8450366 Update release notes
    • a0afe89 Update test case
    • 9e08eb8 Raise ValueError if color specifier is too long
    • bd5cf7d FLI tests for Oss-fuzz crash.
    • 94a0cf1 Fix 6-byte OOB read in FliDecode
    • cece64f Add 8.3.2 (2021-09-02) [CI skip]
    • e422386 Add release notes for Pillow 8.3.2
    • 08dcbb8 Pillow 8.3.2 supports Python 3.10 [ci skip]
    • Additional commits viewable in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language

    You can disable automated security fix PRs for this repo from the Security Alerts page.

    dependencies 
    opened by dependabot[bot] 1
  • Upgrade CodeSee workflow to version 2

    Upgrade CodeSee workflow to version 2

    CodeSee is a code visibility platform.

    This change updates the CodeSee workflow file to the latest version for security, maintenance, and support improvements (see changelog below).

    That workflow file:

    • runs CodeSee's code analysis on every PR push and merge
    • uploads that analysis to CodeSee.
    • It does not transmit your code.

    The code analysis is used to generate maps and insights about this codebase.

    CodeSee workflow changelog:

    • Improved security: Updates permission to be read-only.
    • Improved future maintenance: Replaces the body of the workflow with a single github action: codesee-action. This makes it significantly easier for CodeSee to introduce future improvements and fixes without requiring another PR like this.
    • Improved Python support: The action now properly supports Python 3.11, and will continue to support new Python versions as they are released.
    opened by codesee-maps[bot] 1
  • Elements of Screens

    Elements of Screens

    General:

    • [x] figuring out how to save settings and don't show again on the main screen to a file or something to store locally for users
    • [ ] adjusting size of application rather than user's screen size as an option, but keep user full screen as default
    • [x] fix dual monitor slight overlap

    Main:

    • [x] if clause for don't show again, moving to browse preset and upload custom to fill horizontally || adding explanation and shortening upload custom and browse preset
    • [x] adding search magnifying button and placeholder text for filling in the search
    • [ ] enabling Ctrl/Cmd+Backspace to delete word in Search PlaceholderEntry

    Settings:

    • [x] theme selection
    • [ ] choosing collections directory rather than next to the program
    • [ ] the info with repo link
    • [ ] putting authors
    • [ ] adding license
    • [ ] suggest to authors placeholder text to scroll as you type

    Custom:

    • [x] return to main menu button
    • [x] adding trashcan for deleting uploads from the grid
    • [x] adding save to button
    • [x] toggle select all button
    • [x] dynamic grid for image uploads
    • [x] extending grid fully horizontally
    • [x] fit buttons in action_frame
    • [x] add whitespace between the 3 buttons in between the top two and on top of the bottom one
    • [x] fit images to their grid spot
    • [ ] pop up an alert with don't show again setting (similar to one in the main menu) explaining how to select multiple images (with control/cmd + click)
    • [ ] help button for how to select multiple images from the grid, (ctrl+click on first, then ctrl+click on last and highlights everything in between or maybe just right click highlight like usual)
    • [ ] check for duplicate files with pop up asking if a user is okay with a file already being in the grid

    Save To Screen:

    • [ ] make scroll bar proportional to how many collections there are to save to
    • [ ] make scrolling possible with mouse scroll wheel

    Preset:

    • [x] return to main menu
    • [ ] title for preset collections
    • [ ] name | date added (oldest/newest) | popularity (drop-down)
    • [ ] copy to button
    • [ ] preview button leading to preview screen
    • [ ] preset listings
    • [ ] scroll on right side (works with scroll wheel or mouse hold)

    Preview Screen for Preset:

    • [ ] title with preset collection name filled in
    • [ ] copy to (same as in preset)
    • [ ] back to browse presets
    • [ ] display image with next/prev buttons on either side
    • [ ] display index as caption

    Search:

    • [x] return to main menu button
    • [ ] show search results from main menu placeholder entry

    Manage:

    • [x] return to main menu button
    • [ ] should be about the same as what comes from the save to button in the custom/preset collection pages, just without something to save. this should be made first then custom/preset save to pages will be easy since we'll just have to add the feature of saving the selected images to a certain collection

    Schedule:

    • [ ] placeholder for time (in the drawing)
    enhancement 
    opened by Daggerpov 0
  • Random Ideas

    Random Ideas

    • database for storing preset collections then importing them upon app launch rather than having to re-hardcode those collections
      • could just supply the collection images, name
      • maybe we could make an online form to fill out, then be approved to add preset collections and credit the author
    question 
    opened by Daggerpov 1
  • Fixes

    Fixes

    • [x] Resize Preview of the image to fit into the lower_frame with its original aspect ratio, this means possibly having whitespace(blank, or in our case the green background) to fill the edges so that the image doesn't get stretched or compressed. https://stackoverflow.com/questions/4066202/resizing-pictures-in-pil-in-tkinter/32803004
    • [x] Add text in the lower_frame for before the image preview shows up saying "This is where your image preview will be" or something to indicate what that space is for (I can do this)
    • [x] When an image is edited, the background doesn't change even though the preview of a said image has been. (Mac)
    • [ ] Need to modularize the code out of just one .py file
    • [x] fix multiple image uploads in custom screen
    bug enhancement 
    opened by Daggerpov 0
Releases(v1.0.0-alpha)
Owner
Daniel Agapov
🎓 LDHSS Class of '22 | LDH Code Club Leader | @ldhssrobotics Member | 📚 Prospective Computer Science Student
Daniel Agapov
GUI app to read settings and stats from Cloudflare WARP CLI for Linux, and change some settings

warp-cli-gui GUI app to read settings and stats from Cloudflare WARP CLI for Linux, and change some settings. Description Python program that will int

Danie 6 Nov 1, 2022
Make nixos usable for non-technical users through a settings / package management GUI.

Nix-Gui Make nixos usable for non-technical users through a settings / package management GUI. Motives The declarative nature of ni

null 547 Dec 31, 2022
Open source UI framework written in Python, running on Windows, Linux, macOS, Android and iOS

Kivy Innovative user interfaces made easy. Kivy is an open source, cross-platform Python framework for the development of applications that make use o

Kivy 15.4k Jan 7, 2023
Delphi's FireMonkey framework as a Python module for Windows, MacOS, Linux, and Android GUI development.

DelphiFMX4Python Delphi's FireMonkey framework as a Python module for Windows, MacOS, Linux, and Android GUI development. About: The delphifmx library

Embarcadero Technologies 191 Jan 9, 2023
A cute running cat animation on your Windows/macOS taskbar.

RunCat by PySide6 A cute running cat animation on your Windows/macOS taskbar. Tags PyQt PySide RunCat Demo You only have to run the RunCat.exe. Run pi

見える 10 Sep 19, 2022
Create custom desktop notificatons using python

Create custom desktop notificatons using python In this video i am going to use a module called plyer

Niranjan 2 Dec 15, 2021
A desktop application developed in Python with PyQt5 to predict demand and help monitor and schedule brewing processes for Barnaby's Brewhouse.

brewhouse-management A desktop application developed in Python with PyQt5 to predict demand and help monitor and schedule brewing processes for Barnab

Isaac Cheng 2 Jul 9, 2022
MATE Layouts is a small panel layout switching application for the MATE Desktop.

a small panel layout switching application for the MATE Desktop

Wilbur Wetterquarz 6 Oct 14, 2022
A desktop application for JupyterLab, based on Electron.

A desktop application for JupyterLab, based on Electron.

JupyterLab 2.1k Jan 2, 2023
A simple desktop news application written using python created using PyQt5

News-Application---Python This is a news application created using PyQt5. News is fetched through API from newsapi.org. Available top headlines from c

Sritiman Adak 1 Nov 14, 2021
Transparent & click through tkinter window. WINDOWS ONLY

REQUIREMENTS: WINDOWS ONLY pip install pywin32 NOTES: Will not work on top of a fullscreen application, if you are using this to draw on top of a gam

francis 2 Nov 4, 2022
A simple fusee-launcher frontend for macOS

A simple fusee-launcher frontend for macOS (Universal). Supports macOS >= 10.9. It has libusb statically linked, so you don't need to install anything

rob 25 Dec 19, 2022
Windows & Linux GUI application to use a Satodime (satodime.io)

Satodime-Tool Licence: LGPL v3 Author: Toporin Language: Python (>= 3.6) Homepage: https://github.com/Toporin/Satodime-Tool Introduction What is Satod

null 4 Dec 16, 2022
Write desktop and web apps in pure Python

Flexx Want to stay up-to-date about (changes to) Flexx? Subscribe to the NEWS issue. Introduction Flexx is a pure Python toolkit for creating graphica

flexxui 3.1k Dec 29, 2022
Write desktop and web apps in pure Python

Flexx Want to stay up-to-date about (changes to) Flexx? Subscribe to the NEWS issue. Introduction Flexx is a pure Python toolkit for creating graphica

flexxui 3.1k Jan 8, 2023
Make desktop applications using HTML and CSS with python

Neutron Make desktop applications using HTML and CSS with python What is Neutron Neutron will allow developers to design modern applications in python

Ian Baldelli 284 Dec 29, 2022
A library for building modern declarative desktop applications in WX.

re-wx is a library for building modern declarative desktop applications. It's built as a management layer on top of WXPython, which means you get all the goodness of a mature, native, cross-platform UI kit, wrapped up in a modern, React inspired API.

Chris 115 Dec 24, 2022
Learn to build a Python Desktop GUI app using pywebview, Python, JavaScript, HTML, & CSS.

Python Desktop App Learn how to make a desktop GUI application using Python, JavaScript, HTML, & CSS all thanks to pywebview. pywebview is essentially

Coding For Entrepreneurs 55 Jan 5, 2023