Commit graph

133 commits

Author SHA1 Message Date
Robin Lind
0ca403a91e
config/ui: add random-shuffle slideshow order (#352)
* feat: Add random-shuffle wallpaper order

Add a 'wallpaper#order' value, 'random-shuffle', that reshuffles when the
slideshow wraps so each cycle shows every image once in a new order.
2026-03-17 12:45:10 -04:00
Sami Ansari
51e497dc6d
config: add opt-in recursive wallpaper directory scan (#349) 2026-03-15 14:12:40 -05:00
Silas J. Matson
238abb5157
config: add ability to randomize sort order (#336)
* feat: Add ability to randomize sort order

Add a 'wallpaper#order' config option with 'random' option which allows
wallpaper directories to be shuffled randomly on hyprpaper launch.
'default' leaves existing behavior unchanged.

* only parse order on load, don't keep in SSetting struct
2026-03-02 12:41:57 +00:00
Vaxry
9df6ba9e9f
protocol/IPC: add a status object (#313) 2026-02-10 19:13:14 +00:00
ItsOhen
2ea222ee34
matcher: fix stale state id (#335) 2026-02-02 15:02:38 +00:00
ca754f6bfb
matcher: fix matching in getSetting
fixes #331
2026-01-29 15:50:23 +00:00
a69c8d7f19
wallpaperMatcher: fix empty desc 2026-01-29 11:15:13 +00:00
ItsOhen
eb71d0f822
wallpaperMatcher: fix desc typo and keep the state stable (#330)
Fixes the description matching, and keeps the state stable

---------

Co-authored-by: Vaxry <vaxry@vaxry.net>
2026-01-27 23:47:31 +00:00
2953d963be
config: bring back desc: for description matching
fixes #318
2026-01-08 22:16:54 +01:00
John Mylchreest
feafd06287
config: support * as wildcard monitor for default wallpapers (#315)
Add isWildcard() helper to treat both empty string and "*" as wildcards
when matching wallpaper settings to monitors.

This works around a limitation in hyprlang where listKeysForSpecialCategory()
skips entries with empty string keys (due to isStatic check in retrieveKeysForCat),
causing configs like:

    wallpaper {
        monitor =
        path = /path/to/image.png
    }

to be silently ignored. Users should now use "monitor = *" instead.
2026-01-07 16:18:40 +01:00
f7921cdf3a
core: add a version argument 2026-01-04 13:50:10 +01:00
John Mylchreest
1f8d1fc0ba
config: re-add source= include directive support (#303)
* feat(config): re-add source= include directive support

Re-implements the source= directive for including external config files,
which was originally added in PR #267 for v0.7.6 but lost during the
v0.8.0 hyprtoolkit rewrite.

Features:
- Include external config files using source=/path/to/file.conf
- Glob pattern support (e.g., source=~/.config/hypr/hyprpaper.d/*.conf)
- Tilde expansion for home directory paths
- Relative paths resolved relative to the current config file
- Proper error handling and logging for missing/invalid files

This restores parity with Hyprland's source= behavior, enabling modular
configuration management that was lost in the v0.8.0 transition.

Fixes: hyprwm/hyprpaper#302

* feat(config): add debug logging for source= directive

Adds LOG_DEBUG calls to help troubleshoot config include issues:
- Log when source= directive is encountered with resolved path
- Log number of files matched by glob patterns
- Log each file before parsing

* refactor(config): address PR review feedback & rebase against main

- Use Hyprutils::String::trim() instead of manual whitespace trimming
- Use Hyprutils::Utils::CScopeGuard for glob cleanup instead of manual
  globfree() calls
- Remove braces from short single-line if statements per style guide
- Remove duplicate absolutePath(), extend getPath() with optional
  basePath parameter instead

For source= directives, relative paths need to resolve relative to the
config file's directory, not CWD. So `source = ./themes/dark.conf` in
`~/.config/hypr/hyprpaper.conf` resolves to
`~/.config/hypr/themes/dark.conf`, not `$CWD/themes/dark.conf`.

* fix(config): address PR review feedback

- Use std::error_code for filesystem calls to avoid exceptions
- Move getCurrentConfigPath() body from header to cpp file
- Apply clang-format
2026-01-02 22:16:43 +01:00
9271162ef0
ui: drop toolkit's log level by default via a log conn 2026-01-02 18:25:33 +01:00
01e9c1f82b
config: refuse to start with a bad config 2026-01-02 18:21:20 +01:00
Yurii Bilous
e4413583bc
ui: add support for dynamic wallpapers (#294)
- 'path' can contain multiple images comma separated (including
  directories)
- 'timeout' is used to define how long the wallpaper should be shown
  in seconds.
  Default: 30s
2026-01-01 15:00:59 +01:00
b431a94cfb
config: fix default value for fit_mode to match wiki 2025-12-17 15:14:43 +02:00
07eb33e65d
ui: add namespace 2025-12-05 18:57:16 +00:00
Vaxry
1d8df14fce
core: migrate to hyprtoolkit (#288)
---------

Co-authored-by: Mihai Fufezan <mihai@fufexan.net>
2025-12-04 17:58:54 +00:00
Blake-sama
6502c87e9c
config: Added "source=" capability to Hyprpaper .conf file (#267) 2025-07-27 18:32:49 +02:00
Matt Vykol
81dc1fe4f0
config: Return empty string instead of throwing if unable to find default config (#253) 2025-06-10 08:19:18 +01:00
7e18ebc843 core: add mallopt to modify trim threshold 2025-02-09 17:40:50 +00:00
505e447b6c core: update for hw-s 0.4.4 2024-12-29 18:35:40 +01:00
caffeine
f15e678507
core: conform to output transforms (#224) 2024-12-19 20:58:28 +01:00
0e38c982d7 core: fixup execAndGet not running correctly 2024-12-15 21:58:26 +00:00
4d5b68b7ad core: avoid the use of pop_back on empty string
fixes #222
2024-12-15 21:58:11 +00:00
b17d32fdd2 logging: fix some missed logs 2024-12-15 21:55:41 +00:00
Vaxry
85e850bca3
Core: modernize internals (#219)
* flake.nix: use gcc14Stdenv, update

---------

Co-authored-by: Mihai Fufezan <mihai@fufexan.net>
2024-12-14 16:09:40 +01:00
Vaxry
b3ee62fe4a
Core: Move to hyprgraphics for image parsing (#216)
* move to hyprgraphics

* Nix: add hyprgraphics

---------

Co-authored-by: Mihai Fufezan <mihai@fufexan.net>
2024-11-28 15:56:01 +00:00
Adrià
0b5e350011
core: use C++ streams to load Jpeg and Webp (#214) 2024-11-22 13:18:04 +00:00
Adrià
dbea6cdf0c
core: Add support for JPEG-XL (#212) 2024-11-22 13:17:50 +00:00
gkdwoe
e6e5c471e2
core: add tile as an image mode (#207)
---------

Co-authored-by: gkdwoe <gkdwoe>
2024-10-25 12:29:16 +01:00
Yury Shvedov
e32a2c8d24
config: Fix desc: wallpaper priority (#189)
There was misbehaviour from config. Say, we have next config:
```
...

wallpaper = , /path/to/generic.jpg
wallpaper = DP-1, /path/to/port.jpg
wallpaper = desc:My Monitor, /path/to/desc.jpg

```

Here the `DP-1` and `desc:My Monitor` are different monitors.

_EXPECTED_: The `desc:My Monitor` renders `/path/to/desc.jpg` wallpaper
_ACTUAL_: The `desc:My Monitor` renders `/path/to/generic.jpg` wallpaper

Change-Id: I02c9495524bd620d5a58b9d934b07aded051f6c2
2024-08-12 18:31:02 +01:00
f1f7fc60f5 core: bind to wl_seat v7
ref #187
2024-07-23 00:08:55 +02:00
3cbc90bf94 core: migrate to hyprwayland-scanner
Additionally:
 - format
 - yeet clang-tidy
 - fixup clang-format
2024-07-17 16:25:07 +02:00
f3a6e51d92
Config: use hyprutils helper (#183)
* config: use hyprutils helper

CMake: add version, add hyprutils

* Nix: add hyprutils dep

flake.lock: update

* Nix: add hyprwayland-scanner dep
2024-07-17 16:21:50 +02:00
13fcdd79ef fractional: reload monitor on new fs scale notifs
fixes #181
2024-07-02 18:54:11 +02:00
Mykola Perehudov
f4abf5902f
config: produce error instead fs::exists exceptions (#177) 2024-06-09 09:50:27 +02:00
Barguzin
374d6e2a9d
core: Bitmap image support (#175)
* Add handler "reload" to do a change of wallpaper by one hyprctl execution

* fixed contain parameter handling in "handleReload"

* added bitmap (.bmp) image support

* refactored

* reserve -> resize
2024-06-07 17:19:58 +02:00
Barguzin
2c57525de8
internal: Add handler "reload" to do a change of wallpaper by one hyprctl exec (#173)
* Add handler "reload" to do a change of wallpaper by one hyprctl execution

* fixed contain parameter handling in "handleReload"
2024-05-25 19:40:11 +02:00
03cd362f49 ipc: use XDG_RUNTIME_DIR if available
fixes #169
2024-05-04 22:01:40 +01:00
Vaxry
d50f0eda6c
core: move socket to runtime dir (#167) 2024-04-28 22:25:36 +01:00
XiaowenHu
02ee7ff3bb
core: remove comma from monitor description (#163) 2024-04-12 12:01:36 +01:00
LOSEARDES77
437ac0530b
core: splash_color configuration option (#160) 2024-04-04 20:52:48 +01:00
09c4062659 config: add unload unused 2024-02-27 21:45:28 +00:00
79765e1bdf core: make unload all do what it says 2024-02-27 21:44:11 +00:00
Stephen Toth
dfd3d090dc
core: fix being able to assign a wallpaper to a nonexistent monitor (#141)
clarified README to specifics of the handleWallpaper function
2024-02-25 23:05:58 +00:00
897cf0ae26 config: add explicit ctors for config variables
fixes #139
2024-02-21 16:28:39 +00:00
Stephen Toth
1013a80608
ipc: Added listloaded and listactive requests (#132) 2024-02-05 01:07:31 +00:00
Stephen Toth
ce829bd51d
config: Disable splash message by default (#123)
* Change default value of splash to false

* put splash and ipc options into example config in README
2024-01-04 16:20:47 +01:00
c022069390 ipc: fix ipc with wildcards
fixes #122
2024-01-03 13:47:49 +01:00