Add files

This commit is contained in:
Late Night Defender 2025-02-04 01:51:58 +07:00
parent 6bbedececb
commit 6db6561bd6
4 changed files with 107 additions and 2 deletions

View file

@ -1,3 +1,40 @@
# random-wallpaper-gnome
# Random Wallpaper for GNOME
Randomly pick a wallpaper for your GNOME desktop, without any shell extensions.
A Python script to pick a random photo from the specified directory, set the wallpaper (for both light and dark) and the accent color.
## Why does this exist
We'd like to change our wallpaper every 15 minutes and automatically set a pre-defined accent color for each photo. There are many GNOME Shell extensions out there that can do something similar, but we simply want to achieve the same effect **without using any extensions**, especially when upgrading to a pre-release GNOME version that many extensions don't support yet.
So instead of a GNOME Shell extension, we created a Python script that does everything via `gsettings` and hook it up to a systemd timer instead.
## How to use
1. Create a directory with desired photos and note its full path
2. In that directory, rename your photos according to this table
*Suppose the filename is example.jpg*
|Accent Color |Suffix |Expected filename |
|--------------|-------|-------------------|
|Blue |blue |example-blue.jpg |
|Teal |teal |example-teal.jpg |
|Green |gree |example-gree.jpg |
|Yellow |yell |example-yell.jpg |
|Red |redd |example-redd.jpg |
|Pink |pink |example-pink.jpg |
|Purple |purp |example-purp.jpg |
|Slate |- |*any file without valid suffix above*|
*This means if there is no valid color suffix at the end of file name, we will set the accent color to Slate.*
3. In `change-wallpaper.py`, replace the `directory_path` with the path from step 1
4. Put `change-wallpaper.py` to `~/.local/bin` and make sure it is in your `$PATH`
5. In `change-wallpaper.service` replace `youruser` in `ExecStart` line with your actual username.
6. **Optionally**, modify `change-wallpaper.timer` as needed. The default is set to *every 15 minutes*.
7. Put `change-wallpaper.service` and `change-wallpaper.timer` in `~/.config/systemd/user/` and run these commands to get started
```
$ systemctl --user daemon-reload
$ systemctl --user enable --now change-wallpaper
```

51
change-wallpaper.py Executable file
View file

@ -0,0 +1,51 @@
#!/usr/bin/python
import os
import random
# Specify the directory
directory_path = '/path/to/your/wallpapers'
def pick_random_file(directory):
# List all files in the specified directory
files = [f for f in os.listdir(directory) if os.path.isfile(os.path.join(directory, f))]
# Check if the directory is empty
if not files:
return None
# Pick a random file from the list
random_file = random.choice(files)
# Return the full path of the randomly picked file
return os.path.join(directory, random_file)
# Pick a random file
random_file_path = pick_random_file(directory_path)
if random_file_path[-8:-4] == "blue":
accent_color = "blue"
elif random_file_path[-8:-4] == "teal":
accent_color = "teal"
elif random_file_path[-8:-4] == "gree":
accent_color = "green"
elif random_file_path[-8:-4] == "yell":
accent_color = "yellow"
elif random_file_path[-8:-4] == "oran":
accent_color = "orange"
elif random_file_path[-8:-4] == "redd":
accent_color = "red"
elif random_file_path[-8:-4] == "pink":
accent_color = "pink"
elif random_file_path[-8:-4] == "purp":
accent_color = "purple"
else:
accent_color = "slate"
# print(f'DEBUG: Using background picture {random_file_path}')
# print(f'DEBUG: Using accent color {accent_color}')
os.system(f'gsettings set org.gnome.desktop.background picture-uri "file://{random_file_path}"')
os.system(f'gsettings set org.gnome.desktop.background picture-uri-dark "file://{random_file_path}"')
os.system(f'gsettings set org.gnome.desktop.interface accent-color {accent_color}')

9
change-wallpaper.service Normal file
View file

@ -0,0 +1,9 @@
[Unit]
Description=Change wallpaper at specified interval
[Service]
Type=oneshot
ExecStart=/home/youruser/.local/bin/change-wallpaper.py
[Install]
WantedBy=default.target

8
change-wallpaper.timer Normal file
View file

@ -0,0 +1,8 @@
[Unit]
Description=Change wallpaper every 15 minutes
[Timer]
OnCalendar=*:0/15
[Install]
WantedBy=default.target