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
System Tray Icon for PySimpleGUI (the tkinter version). Adds a system tray icon by using pystray and PIL

psgtray Add a System Tray Icon to your tkinter port of PySimpleGUI. Installation via pip Installation is via pip: python -m pip install psgtray or if

PySimpleGUI 38 Dec 30, 2022
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 09, 2023
Tkinker GUI for a college project.

GuiUtilities Pequeña suite de utileria con Tkinter enfocada en sistemas Linux. Lista de trabajo Crear archivo Copiar archivo a otro dir Editar con un

1hiking 2 Nov 25, 2021
UI for converting various point cloud file formats

Point cloud format converter This coverter based on open3d. If you're using old ROS1 i suggest to use conda python3 evn to install requirements. Todo

Haegu Lee 1 Oct 29, 2021
Neukivy is a collection of neumorphic widgets built with Kivy.

Neukivy is a collection of neumorphic widgets built with Kivy. The library is currently in its initial development so there isn't much yet. But hopefully it will grow into a library you can use to ea

Guhan Sensam 29 Dec 13, 2022
A small pomodoro GUI for Windows/Linux created in Python with PyQt5.

Pomodoro A small pomodoro GUI for Windows/Linux created with PyQt5. Features The "Timer" tab allows you to set your desired work and rest times aswell

Burak Martin 81 Dec 28, 2022
PyQT5 app for LOLBAS and GTFOBins

LOLBins PyQT app to list all Living Off The Land Binaries and Scripts for Windows from LOLBAS and Unix binaries that can be used to bypass local secur

Hamza Megahed 41 Dec 01, 2022
GUI Pancakeswap 2 and Uniswap 3 SNIPER BOT 🥇 🏆 🥇

GUI Pancakeswap V2 and Uniswap V3 trading client (and bot) MOST ADVANCE TRADING BOT SUPPORT WINDOWS LINUX MAC (BUY TOKEN ON LAUNCH)

HYDRA 16 Dec 21, 2021
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
Example GUI for Command line capable machine learning programs

Example GUI for Command line capable machine learning programs This is an example GUI made in PysimpleGUI and Tkinter, mainly for machine learning pro

Kim Yongwook 4 May 31, 2022
OpenPort scanner GUI tool (CNMAP)

CNMAP-GUI- OpenPort scanner GUI tool (CNMAP) as you know it is the advanced tool to find open port, firewalls and we also added here heartbleed scanni

9 Mar 05, 2022
⏲️ 📙 Animedoro Timer made using tkinter in python

Animedoro Timer ⏲️ 📙 version- 1️⃣ . 0️⃣ . 0️⃣ Hey ! did you ever feel bad for not concentarting enough? , it's not you're mistake, there is a flaw in

SasiVatsal 8 Oct 18, 2022
Easily display all of your creative avatars to keep them consistent across websites.

PyAvatar Easily display all of your creative avatars to keep them consistent across websites. Key Features • Download • How To Use • Support • Contrib

William 2 Oct 02, 2022
Awesome examples for my Sun Valley ttk theme!

Sun Valley ttk theme examples This is the examples repo for my stunning Sun Valley ttk theme! Be sure to start and atch this repo, because I will uplo

rdbende 117 Jan 03, 2023
PyQt QGraphicsView with selection box. User can move vertical border of the box horizontally.

pyqt-horizontal-selection-square-graphics-view PyQt QGraphicsView with selection box. User can move vertical border of the box horizontally. Requireme

Jung Gyu Yoon 3 Nov 07, 2022
These are some useful tkinter utilities that i like to personally use.

ntkutils nefs tkinter utilities These are some useful tkinter utilities that i like to personally use. I upload this here because someone might wants

nef 7 Dec 06, 2022
Input an antlr grammar and file for python to test it out

py-antlr-input Input an ANTLR grammar and test file for python to render a parser tree of the file. This program will make use of the grun command tha

Oscar Juárez 0 Aug 10, 2021
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
Tkinter-ATM - Python GUI case made with Tkinter

tkinter-ATM Python GUI case made with Tkinter The task of this case was to creat

2 Jan 13, 2022
Verify file hashes of downloaded files easily in a GUI

HASH-verify Verify file hashes of downloaded files easily in a GUI What it does... This gui based Python3 app calculates 3 types of file hashes and ca

Christian Richter-Pedersen 10 Dec 13, 2022