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
Aplicação GUI feita em Python para estudos de cadastro (forms).

Cadastro de DEVs GUI 💻 A ideia original veio do repositório do https://github.com/PedroTomazeti nomeado 'Projetos-Independentes-HTML-CSS' Nele há um

Yago Goltara 3 Aug 15, 2021
Python Web Version 3.0 Using PyQty module

Python-Web-Version-3.0 Python Web Version 3.0 Using PyQty module you have to install pyinstaller module then install PyQt5 module and install PyQtwebE

JehanKandy 9 Jul 13, 2022
This is the new and improved Plex Automatic Pre-roll script with a GUI

Plex-Automatic-Pre-roll-GUI This is the new and improved Plex Automatic Pre-roll script with a GUI! It should be stable but if you find a bug please l

164 Nov 04, 2022
Use CSS styling in Tkinter apps

cssTk To-Do Support Upto CSS 4.15 Set Up Docs Features * Corner Radius Gradient BG Blur Animations Usage Scenarios Allows easy import of GTK 3 and GTK

RUG 5 Oct 18, 2022
GUI based app made in python using tkinter

Virtual Keyboard A GUI application made in python using tkinter This is my first ever proper GUI based application project after learning tkinter rece

AbhineetK 10 Dec 10, 2022
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
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
A small GUI random roll call program made by Python.

A small GUI random roll call program made by Python.

Yuchen Ren 0 Feb 21, 2022
A Virtual Desktop Assistant Written in Python

DesktopAssitant A Virtual Desktop Assistant Written in Python. It's generally a basic virtual assistant The basic purpose of this is to make work easi

Technerd Brainiac 597 Dec 31, 2022
A Virtual Desktop Assistant Written in Python

DesktopAssitant A Virtual Desktop Assistant Written in Python. It's generally a basic virtual assistant The basic purpose of this is to make work easi

Technerd brainiac 609 Jan 07, 2023
Advanced GUI Discord Account Nuker that is easy to use, with many features.

AccountNukeV3 Showcase Youtube: Features: Remove all friends Block all friends Leave all servers Mass create servers Close all dms Mass dm Fuck Settin

Lodi#0001 24 May 22, 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

547 Dec 31, 2022
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
Cross-platform BrowserViews for the desktop.

Webview We use wxPython Phoenix to provide webviews. It's cross platform between Windows and macOS primarily, Linux versions require extra setup. Appl

1 Feb 12, 2022
Textual is a TUI (Text User Interface) framework for Python inspired by modern web development.

Textual is a TUI (Text User Interface) framework for Python inspired by modern web development.

Will McGugan 17.1k Jan 08, 2023
Tukaan is the new framework that aims to replace Tkinter

Tukaan is the new, pythonic and colorful (like a keel-billed toucan) framework that aims to replace Tkinter. It has everything (on my computer, not at GitHub) that you need to develop cross-platform

Tukaan 101 Jan 08, 2023
The Python-Weather-App is a service that provides weather data

The Python-Weather-App is a service that provides weather data, including current weather data to the developers of web services and mobile applications.

Sayed Tabish 1 Dec 13, 2021
guietta - a tool for making simple Python GUIs

guietta - a tool for making simple Python GUIs

Alfio Puglisi 1.9k Jan 08, 2023
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
LittlePythonGUIGuide - This is a short GUI Guide with python

This is a short GUI Guide with python, learning how to use the simple and easy moduel built into python, named tkinter.

1cy50ng3b0b 1 Nov 21, 2021