Compare commits

...

6 commits

4 changed files with 72 additions and 59 deletions

View file

@ -62,12 +62,12 @@ sudo mkdir -p /var/log/wallman
sudo chmod 733 /var/log/wallman
mkdir -p ~/.config/wallman
cp sample_config.toml ~/.config/wallman/wallman.toml
doas mkdir -p /etc/wallman/
sudo mkdir -p /etc/wallman/
cp -R icons/ /etc/wallman/
doas cp src/wallman.py /usr/bin/wallman
doas cp src/wallman_lib.py /usr/bin/wallman_lib.py
doas cp src/wallman_systray.py /usr/bin/wallman_systray.py
doas chmod +x /usr/bin/wallman
sudo cp src/wallman.py /usr/bin/wallman
sudo cp src/wallman_lib.py /usr/bin/wallman_lib.py
sudo cp src/wallman_systray.py /usr/bin/wallman_systray.py
sudo chmod +x /usr/bin/wallman
#+END_SRC
+ Edit the sample config
+ Profit
@ -114,7 +114,6 @@ The keys in the dictionary once again do not matter, the names of the keys in ea
** Structuring
+ Write unittests
+ Add documentation for developers
+ Add more type annotations!
** Technical Details
+ Improve Modularity (Partially done)

View file

@ -1,38 +1,38 @@
# Table of Contents
1. [Overwiev](#orga779aae)
1. [What is this?](#orgf7b412d)
2. [What can it do?](#org935ec0e)
2. [Installation](#org022a1fd)
1. [Depedencies](#org90be55c)
1. [Always Required](#orgadb7aa8)
2. [Optional](#org407e4c9)
3. [Build dependencies](#orgab711aa)
2. [Installing with package Manager](#org2a19ad0)
1. [Gentoo](#org6686b86)
2. [Arch Linux](#org4eb492d)
3. [Others](#orga6b4e6a)
3. [Installing with pip](#org1b5b1b3)
4. [Installing manually](#org050e242)
3. [Configuration](#orgf368a5c)
1. [TOML Dictionaries](#org05ab08e)
1. [general](#orgfa7800e)
2. [changing<sub>times</sub>](#org2778aa9)
3. [The other dictionaries](#orgf21f2d8)
4. [TODOs](#org8cbebae)
1. [Structuring](#orgb43553d)
2. [Technical Details](#org0a633fb)
3. [Features](#org1c5725d)
1. [Overwiev](#org9a6a285)
1. [What is this?](#org2d5f356)
2. [What can it do?](#orgb70c4cb)
2. [Installation](#orgf40b088)
1. [Depedencies](#org15f070c)
1. [Always Required](#orgaf3ff8f)
2. [Optional](#org75334d3)
3. [Build dependencies](#orgd672ae9)
2. [Installing with package Manager](#org8a0b4a3)
1. [Gentoo](#org9d7b6d8)
2. [Arch Linux](#org163e289)
3. [Others](#org55b6af1)
3. [Installing with pip](#orgf03499b)
4. [Installing manually](#org30efba7)
3. [Configuration](#org4b0f0e2)
1. [TOML Dictionaries](#org65c6a95)
1. [general](#org4953aab)
2. [changing<sub>times</sub>](#orgdfbb763)
3. [The other dictionaries](#org02d385c)
4. [TODOs](#orgeeeaf4f)
1. [Structuring](#org49bff54)
2. [Technical Details](#org751838a)
3. [Features](#org3ebdb2a)
<a id="orga779aae"></a>
<a id="org9a6a285"></a>
# Overwiev
<a id="orgf7b412d"></a>
<a id="org2d5f356"></a>
## What is this?
@ -41,7 +41,7 @@ This version is an early Alpha. As of now, it supports the most important featur
As such, please make absolutely sure you follow the instructions on how to write the config file very closely. I will implement better config handling with more meaningful error output in the future. For now, follow everything really closely and read the logs if needed. If you do that, it *should* work.
<a id="org935ec0e"></a>
<a id="orgb70c4cb"></a>
## What can it do?
@ -53,17 +53,17 @@ Wallman currently has three main features:
- Be controlled via a systray
<a id="org022a1fd"></a>
<a id="orgf40b088"></a>
# Installation
<a id="org90be55c"></a>
<a id="org15f070c"></a>
## Depedencies
<a id="orgadb7aa8"></a>
<a id="orgaf3ff8f"></a>
### Always Required
@ -72,7 +72,7 @@ Wallman currently has three main features:
- feh (Used for setting the wallpapers, hard dependency)
<a id="org407e4c9"></a>
<a id="org75334d3"></a>
### Optional
@ -81,7 +81,7 @@ Wallman currently has three main features:
- pystray (For systray support)
<a id="orgab711aa"></a>
<a id="orgd672ae9"></a>
### Build dependencies
@ -89,12 +89,12 @@ Wallman currently has three main features:
- build
<a id="org2a19ad0"></a>
<a id="org8a0b4a3"></a>
## Installing with package Manager
<a id="org6686b86"></a>
<a id="org9d7b6d8"></a>
### Gentoo
@ -108,21 +108,21 @@ This program, as of now, can be installed very easily on gentoo. Just follow the
A proper portage overlay will be created soon, so that updates can be handled automatically.
<a id="org4eb492d"></a>
<a id="org163e289"></a>
### Arch Linux
Support for Arch Linux will be added soon.
<a id="orga6b4e6a"></a>
<a id="org55b6af1"></a>
### Others
I will potentially write a version for nixpkgs and will also bundle wallman as a flatpak.
<a id="org1b5b1b3"></a>
<a id="orgf03499b"></a>
## Installing with pip
@ -131,7 +131,7 @@ Wallman is available on PyPI. Simply run:
pip install wallman
<a id="org050e242"></a>
<a id="org30efba7"></a>
## Installing manually
@ -144,32 +144,32 @@ Wallman is available on PyPI. Simply run:
sudo chmod 733 /var/log/wallman
mkdir -p ~/.config/wallman
cp sample_config.toml ~/.config/wallman/wallman.toml
doas mkdir -p /etc/wallman/
sudo mkdir -p /etc/wallman/
cp -R icons/ /etc/wallman/
doas cp src/wallman.py /usr/bin/wallman
doas cp src/wallman_lib.py /usr/bin/wallman_lib.py
doas cp src/wallman_systray.py /usr/bin/wallman_systray.py
doas chmod +x /usr/bin/wallman
sudo cp src/wallman.py /usr/bin/wallman
sudo cp src/wallman_lib.py /usr/bin/wallman_lib.py
sudo cp src/wallman_systray.py /usr/bin/wallman_systray.py
sudo chmod +x /usr/bin/wallman
- Edit the sample config
- Profit
<a id="orgf368a5c"></a>
<a id="org4b0f0e2"></a>
# Configuration
This is a short guide on how to correctly configure wallman. Look in the sample config for additional context.
<a id="org05ab08e"></a>
<a id="org65c6a95"></a>
## TOML Dictionaries
First of all, the config file is structured via different TOML dictionaries. There are two TOML dictionaries: general and changing<sub>times</sub> that must be present in every config. Aside from that, further dictionaries are needed depending on how wallman is configured. You need to create a dictionary with the name of each wallpaper set defined in the used<sub>sets</sub> list (more on that later). You should probably just configure wallman by editing the sample config as it is by far the easiest way to do it.
<a id="orgfa7800e"></a>
<a id="org4953aab"></a>
### general
@ -189,16 +189,24 @@ In general, you need to always define 3 variables and you can optionally add thr
Loglevel to be used by wallman. Defaults to INFO. Choices MUST be DEBUG, INFO, WARNING, ERROR or CRITICAL. Using any capitalization is valid, all caps is reccomended. Wallman will crash if a value is specified that is not one of the specified ones.
- Optional: systray: bool
This defaults to &ldquo;true&rdquo;. This enables support for a systray that has the features to re-set your wallpaper (Mostly useful if feh shits itself or if you want to set the correct wallpaper for a specific time of day after your device was suspended) without rerolling the wallpaper set used, a button to reroll and then re-set the wallpaper, as well as a Quit button. Disable this to save a very tiny amount of memory.
- Optional: behavior: string
This defaults to `--bg-fill`. This is also the value that will be used when an invalid configuration option has been set. This supports 6 different modes, each mode has 2 possible keywords, resulting in 12 total valid keywords.
`--bg`, `pure`. What happens when feh is used with the `--bg` flag. Sets a wallpaper without any scaling.
`--bg-tile`, `tile`. Sets the wallpaper only on one monitor, the other ones get filled with black or white. Mostly useful for Xinerama setups with overlapping monitors. Equivalent to `--bg-tile` in feh.
`--bg-center`, `center`. Sets a wallpaper with the center of the wallpaper centered on the middle of the screen. Crops edges. Equivalent to `--bg-center` in feh.
`--bg-fill`, `fill` (Default). Fills the whole screen with the wallpaper and zooms to preserve the original aspect ratio. Equivalent to `--bg-fill` in feh.
`--bg-max`, `max`. Scales the image to the maximum possible size. Equivalent to `--bg-max` in feh.
`--bg-scale`, `scale`. Scales the wallpaper to fill the screen, but does not preserve the original aspect ratio. Leads to squishing if aspect ratio of screen and wallpaper don&rsquo;t match. Equivalent to `--bg-scale` in feh.
<a id="org2778aa9"></a>
<a id="orgdfbb763"></a>
### changing<sub>times</sub>
The changing<sub>times</sub> dictionary is used to specify the times of the day when your wallpaper is switched. The names of the keys do not matter here, the values must always be strings in the &ldquo;XX:YY:ZZ&rdquo; 24 hour time system. use 00:00:00 for midnight. Note that XX should be in the range of 00-23 and YY and ZZ should be in the range of 00-59.
<a id="orgf21f2d8"></a>
<a id="org02d385c"></a>
### The other dictionaries
@ -206,12 +214,12 @@ The other dictionaries must always have the names of the wallpaper sets from use
The keys in the dictionary once again do not matter, the names of the keys in each dictionary must be strings and be absolute paths. They should not include spaces unless prefaced by a backslash.
<a id="org8cbebae"></a>
<a id="orgeeeaf4f"></a>
# TODOs
<a id="orgb43553d"></a>
<a id="org49bff54"></a>
## Structuring
@ -219,7 +227,7 @@ The keys in the dictionary once again do not matter, the names of the keys in ea
- Add documentation for developers
<a id="org0a633fb"></a>
<a id="org751838a"></a>
## Technical Details
@ -228,7 +236,7 @@ The keys in the dictionary once again do not matter, the names of the keys in ea
- Drop the feh dependecy and set wallpapers using pywlroots or python-xlib
<a id="org1c5725d"></a>
<a id="org3ebdb2a"></a>
## Features

View file

@ -4,12 +4,12 @@ build-backend = "setuptools.build_meta"
[project]
name = "wallman"
version = "1.4.3.4"
version = "1.4.4.3"
authors = [
{name = "Emma Nora Theuer", email = "wallman@entheuer.de"},
]
description = "A simple program to set dynamic wallpapers on standalone X11 Windows Managers and Wayland compositors"
readme = "README.md"
readme = "pypireadme.md"
requires-python = ">=3.11"
keywords = ["Desktop", "Wallpapers"]
license = {text = "MIT"}

6
requirements.txt Normal file
View file

@ -0,0 +1,6 @@
APScheduler==3.11.0
pillow==11.0.0
pystray==0.19.5
setuptools==75.6.0
build==1.2.2.post1
twine==6.0.1