Releases: LGFae/swww
v0.10.3
v0.10.2
0.10.2
Another small update with very important bug fixes.
Fixes
- We prioritize fractional-scale events over preferred-buffer-scale ones. This should fix many of our long-standing issues with fractional scaling. Thanks a lot to @AryanRarestand who hard-coded a solution that led me to find the problem.
- do not accept
wl_output
modes that not current, as they are considered deprecated by the protocol. - No longer spaming standard output with warnings that we are ignoring
preferred-buffer-transform
events.
v0.10.1
0.10.1
A small update with important bug fixes.
Fixes
- Make
swww
work on systems wherec_long
is is not mapped toi64
, by @triallax - Fix fractional scaling, by @cyuria
- @nullcubee and @iynaix helped me understand and fix the nix build (thanks, guys)
Improvements
- using
tiny-bench
instead ofcriterion
reduces our dependencies indebug
builds
v0.10.0
0.10.0
Okay, this one's a doozy.
Breaking
To build swww
, you now need to make sure the wayland protocol .xml
files can be found on your system through pkg-config
. I couldn't get that to work in CI for nix-os, which is why build.nix
has been deleted.
swww init
, previously deprecated, has been properly deleted now. The correct way of initializing the daemon is calling swww-daemon
directly.
Other than these, everything should be working the same as before.
Additions
- new
--layer
option forswww-daemon
- new
--resize stretch
option, by @rexept - cache now stores the image filter, by @kerty0
- we can now read images from stanard input, by @iynaix
- new
swww_randomize_multi.sh
example script, by @cplir-c
Fixes
Note: because there were many changes between the previous version and this
one, some of these things may resurface as problems. Unfortunately, many of
these issues I either cannot reproduce in my system, or the whole application
has changed so much that testing them in isolation would be challenging.
- fixed output transforms
- animation timings could be slightly off
- examples scripts are more POSIX-friendly, by @fawn
- fixed memory leak and halted animation when connecting/disconnecting
monitor, by @kerty0 - some stuff wasn't working when files were behind symlinks, fixed by @mendess
- fixed connecting to Wayland via WAYLAND_SOCKET, by @mstoeckl
Improvements
- reimplemented the communication from the client and the daemon from scratch,
allowing for much more efficient data transfer - the above was then made type-safe by @rkuklik
- using a custom log implementation that looks much nicer
- rewrote the transitions code to be more SIMD friendly -- will improve
animation stuttering in some systems. Furthermore, and more importantly,
the animations are now fast enough that we no longer needrayon
as a
dependency. - more generaly, we have completed nuked the multi-threaded code.
swww-daemon
now only spawns a single thread, letting us get rid of every
Arc
wrapper, and other annoying, fragile, synchronization code. - we are using
rustix
instead of thestd
as much as possible, for lower
syscall overhead - remove dependency on
spin-sleep
flake-lock
by @JohnRTitorwaybackend
based implementation -- this is much more lightweight than
wayland-rs
, and lets us make the daemon very resource efficient.- can now use hexcodes instead of image path, which we detect automatically,
by @flick0
Other contributions
- fixes to some internal documentation by @JaKooLit, @Axlefublr, @filip-rs,
@rexept, @Not-Glunk - @rkuklik did a big refactor on the project's overall organization
- BREAKING CHANGE: dropped the
init
subcommand for the client, by
@WhyNotHugo
Note there have also been other contributions that were rendered obsolete in the
meantime, since so much has changed from the last released version (in fact, the
last release was roughly a whole year ago!). The daemon codebase itself has gone
through 3 very large refactors, and now I am finally mostly satisfied with how
it looks. Unfortunately, this does mean some things will inevitably break. I
apologize in advance for any inconveniences.
On the other hand, I believe the rewrite has fixed some old-standing bugs we
have. Though those will have to be tested again on systems that can actually
reproduce them reliably.
I also apologize if I forgot to mention anything/anyone in the above summary. If
I missed your contribution, please feel free to open a PR adding it.
v0.9.5
This is mostly just fixes and small improvements.
Fixes
- fixed wallpaper never setting
configured
to 'true' - fixed fractional scaling rounding incorrectly
- fixed scaling for vertical monitors (thanks, @AhJi26)
- fixed the annoying black screen on login issue (finally)
Additions
- add --no-cache option to
swww-daemon
, by @lucasreis1
Internal improvements
- specialized transition for
--transition-type none
(previously it was an alias
tosimple
with special values) - remove an extra call to
thread::sleep
when loading the cache - no longer using an
event_fd
to wake up the main thread
v0.9.4
v0.9.3
Quick release to fix a scaling error that might affect a lot of people.
Fixes
- fix wrong scale calculation
Internal Improvements
- deleted leftover
/proc
traversal code in the client - no longer setting nonblocking mode for daemon socket, since we are already polling it
- better IPC structs between client and daemon
EDIT:
REGRESSIONS
Note this release has a regression where fractional scaling does not work properly: #279. I am working on implementing the fractional scaling protocol to fix it.
v0.9.2
Fixes
- fix stack overflow on some systems, by @iynaix
- make sure we start the daemon even when the socket file already exists
- fix build in 32bit x86, by @Calandracas606
- fix image resize when image is larger than monitor
- fix transitions performance that had regressed from versions 0.8.*
- added SIGHUP to the list of signals we catch to exit properly
- allow
swww
to run on a nested wayland environment, by @Fuyukai.
Improvements
- we no longer traverse
/proc
to detect whether the daemon is running, we just try pinging it instead, by @Fuyukai - many internal refactors:
- client now sends images in the format requested by the daemon (previously we were transforming the images in the daemon itself)
- simplified the daemon's transitions
- using
bitcode
instead ofrkyv
for serialization - using
rustix
instead ofnix
for unix stuff - The Big One: we've eliminated our dependency on
smithay-client-toolkit
, now make calls directly towayland-client
. This gives us more control over our code for the price of a little extra verbosity.
v0.9.1
My bad everyone, 0.9.0
wasn't loading the cache, so I am publishing this quick fix.
I am copying over v0.9.0
release notes since they are important:
v0.9.0
BREAKING CHANGES
MSRV is now 1.74.0.
Deprecated
swww init
is now considered deprecated. Use swww-daemon
instead. To run it in the background, simply do swww-daemon &
.
Fixes
- fix the
let_underscore_lock
error. Note that all 0.8.* will probably no longer build with newer Rust versions due to that error. By @akida32 - fixed webp and gifs that are only a static image
- fixed busy waiting for WlBuffers to be released. This was a big one, and it involved rewriting a ton of stuff. We've implemented our own memory pool and are using frame callbacks to know when to draw now. A big thanks to @YaLTeR and @jeLee6gi for their patience and help with debugging and testing this thing.
- properly removing all cache contents on
clean-cache
- always center images that are larger than the monitor
- animations no longer overlap when sending two animated images in succession
- fix randomize script trying to use directories as images. Fix was suggested by @MRSS02
- waiting for child swww process when loading the cache, preventing zombie processes
- waiting for daemon initialization before certain requests. By @musjj
Improvements
- New, better compression function implementations. We are now using some SIMD code to accelerate the frame compression functions, leading to some nice speedups in some cases. Thanks to @Akida31 for their help in verying my unsafe code.
- We are using 3 channel color formats for some nice perf and memory improvements. Unfortunately, it seems to not work for some people on some notebooks (see Known Issues).
- Implemented a way to force the use of a specific wayland_shm format, as a workaround for Known Issues. Also went ahead and implemented some cli options for the daemon.
- Support for animated pngs
- Support for animations when piping images from standard input
- Fps is now a
u16
, so we can support newest monitors framerates - Created a
restore
command to manually restore the cache. By @musjj - GitHub actions! Big thanks to @MichaelOultram!
Known Issues
Some people are having some problems with the 3 channel color formats (see issue #233). Currently, initializing the daemon with swww-daemon --format xrgb
is a workaround to that.
v0.9.0
BREAKING CHANGES
MSRV is now 1.74.0.
Deprecated
swww init
is now considered deprecated. Use swww-daemon
instead. To run it in the background, simply do swww-daemon &
.
Fixes
- fix the
let_underscore_lock
error. Note that all 0.8.* will probably no longer build with newer Rust versions due to that error. By @akida32 - fixed webp and gifs that are only a static image
- fixed busy waiting for WlBuffers to be released. This was a big one, and it involved rewriting a ton of stuff. We've implemented our own memory pool and are using frame callbacks to know when to draw now. A big thanks to @YaLTeR and @jeLee6gi for their patience and help with debugging and testing this thing.
- properly removing all cache contents on
clean-cache
- always center images that are larger than the monitor
- animations no longer overlap when sending two animated images in succession
- fix randomize script trying to use directories as images. Fix was suggested by @MRSS02
- waiting for child swww process when loading the cache, preventing zombie processes
- waiting for daemon initialization before certain requests. By @musjj
Improvements
- New, better compression function implementations. We are now using some SIMD code to accelerate the frame compression functions, leading to some nice speedups in some cases. Thanks to @Akida31 for their help in verying my unsafe code.
- We are using 3 channel color formats for some nice perf and memory improvements. Unfortunately, it seems to not work for some people on some notebooks (see Known Issues).
- Implemented a way to force the use of a specific wayland_shm format, as a workaround for Known Issues. Also went ahead and implemented some cli options for the daemon.
- Support for animated pngs
- Support for animations when piping images from standard input
- Fps is now a
u16
, so we can support newest monitors framerates - Created a
restore
command to manually restore the cache. By @musjj - GitHub actions! Big thanks to @MichaelOultram!
Known Issues
Some people are having some problems with the 3 channel color formats (see issue #233). Currently, initializing the daemon with swww-daemon --format xrgb
is a workaround to that.