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
Primeira interface (simples) desenvolvida em Python utilizando o PySimpleGUI

Interface-Python Sobre o projeto Primeira interface gráfica (simples) desenvolvida em Python utilizando o PySimpleGUI Interface Gráfica Tecnologias ut

Matheus Maia Alvarez 5 Apr 09, 2022
Use any of the 1k+ free FontAwesome icons in your tkinter application.

TkFontAwesome A library that enables you to use FontAwesome icons in your tkinter application. You may use any of the 1k+ free FontAwesome 5.0 icons.

Israel Dryer 33 Dec 20, 2022
Dear PyGui Extensions is a collection of useful tools, abstractions, and simplification layers built with/for Dear PyGui users.

Dear PyGui Extensions: A collection of useful tools, abstractions, and simplification layers built with/for Dear PyGui users.

Jonathan Hoffstadt 34 Jan 01, 2023
Mini is a web browser application based on the Python PyQt web engine, made in 290 lines of code.

Mini Mini is a web browser application based on the Python PyQt web engine, made in 290 lines of code. The code is written and published as is, so the

Dmitry Karpenko 6 Nov 07, 2022
A really minimalistic operating system made using python's GUI module Tkinter.

BoxOS V1.0.0 About A really minimalistic operating system made using python's GUI module Tkinter. What seperates it from the other operating systems m

Fahim 2 Dec 08, 2022
ZFS Administration GUI

ZYGGY ZFS Administration GUI Zyggy is a very simple GUI for basic ZFS administration. The system provides graphical access for most frequently used ZF

51 Dec 18, 2022
This is a GUI based text and image messenger. Other functionalities will be added soon.

Pigeon-Messenger (Requires Python and Kivy) Pigeon is a GUI based text and image messenger using Kivy and Python. Currently the layout is built. Funct

4 Jan 21, 2022
QGUI - 0.1MB超轻量Python GUI框架,用模板来快捷制作深度学习模型推理界面

QGUI - 0.1MB超轻量Python GUI框架,用模板来快捷制作深度学习模型推理界面

QPT Family 92 Nov 18, 2022
PyQt Custom Frameless Main Window (Enable to move and resize)

pyqt-custom-frameless-mainwindow PyQt Custom Frameless Main Window (Enable to move and resize) Requirements PyQt5 = 5.8 Setup pip3 install git+https:

Jung Gyu Yoon 1 Jan 13, 2022
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
Bill Cipher is a Python3 Tkinter Application that creates Python remote backdoors, while giving you the option to convert it to an exe.

Bill Cipher is a Python3 Tkinter Application that creates Python remote backdoors, while giving you the option to convert it to an exe. The program also configures a .py server file that works with t

Damian Mostert 2 Apr 12, 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
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
This repository contains some projects that I have done using Python + Tkinter.

This repository contains some projects that I have done using Python + Tkinter.

João Victor Vilela dos Santos 1 Nov 10, 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
A Python Tkinter based Inventory managment System

Inventory Management System Using Python Tkinter Introduction Inventory managemrnt system is an open source platform for manage business. It has a com

Amit Kumar Datta 2 Oct 14, 2021
NiceGUI is an easy to use, Python-based UI framework, which renderes to the web browser.

NiceGUI NiceGUI is an easy to use, Python-based UI framework, which renderes to the web browser. You can create buttons, dialogs, markdown, 3D scences

Zauberzeug GmbH 419 Jan 09, 2023
A simple assistance and with a very basic GUI

J.A.R.V.I.S This is a simple assistance and with a very basic GUI (Graphical User Interface) Download all the dependencies by running the below code p

Abir Pal 7 Oct 12, 2022
A calculator made using Python and Tkinter

Abacus Abacus is a calculator used to compute expressions with the operators of Addition, Subtraction, Multiplication and Division. It is named after

0 Jun 24, 2022
Projeto de mini-games de azar com interface gráfica utilizando Python e PySimpleGui.

Gambling Mini jogos de azar unidos em uma mesma interface gráfica, utilizando a linguagem de programação Python em conjunto com a biblioteca de interf

Clayton Garcia da Silva 3 Nov 19, 2021