Add files
This commit is contained in:
parent
6bbedececb
commit
6db6561bd6
4 changed files with 107 additions and 2 deletions
41
README.md
41
README.md
|
@ -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
51
change-wallpaper.py
Executable 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
9
change-wallpaper.service
Normal 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
8
change-wallpaper.timer
Normal file
|
@ -0,0 +1,8 @@
|
||||||
|
[Unit]
|
||||||
|
Description=Change wallpaper every 15 minutes
|
||||||
|
|
||||||
|
[Timer]
|
||||||
|
OnCalendar=*:0/15
|
||||||
|
|
||||||
|
[Install]
|
||||||
|
WantedBy=default.target
|
Loading…
Add table
Reference in a new issue