Skip to content

Releases: LGFae/swww

v0.9.5

02 May 23:56
3ee69e3
Compare
Choose a tag to compare

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

Internal improvements

  • specialized transition for --transition-type none (previously it was an alias
    to simple 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

17 Apr 00:05
4bcb979
Compare
Choose a tag to compare

Fractional Scaling is finally implemented! Woooo!!

That also fixes a nasty problem some people were having with fractionally scaled outputs.

Apologies for spamming small releases like these in short order. Hopefully this will be the last one for a while.

v0.9.3

14 Apr 15:43
132bde3
Compare
Choose a tag to compare

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

13 Apr 01:04
aef2876
Compare
Choose a tag to compare

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 of rkyv for serialization
    • using rustix instead of nix for unix stuff
    • The Big One: we've eliminated our dependency on smithay-client-toolkit, now make calls directly to wayland-client. This gives us more control over our code for the price of a little extra verbosity.

v0.9.1

23 Mar 00:54
ad22bbf
Compare
Choose a tag to compare

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

23 Mar 00:29
f2ea5a7
Compare
Choose a tag to compare

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.8.2

15 Jan 12:51
Compare
Choose a tag to compare

ATTENTION PACKAGE MAINTAINERS

I've changed my git username from Horus645 to LGFae. This means you will have to update the remote url to https://github.com/LGFae/swww. Anyone who also has direct links to the old address should update them. The old links should still work for some time.

I've done this because mostly to make it more professional looking. I've considered using two github accounts instead, but that would involve setting up multiple ssh keys on my machine and included other complications. I deeply apologize for the inconvenience.

Changes:

  • update MSRV in README.md, by @micielski
  • implemented a --no-cache flag for swww init
  • fixes to the build script, by @m4rch3n1ng
  • client waits for daemon to be ready on swww init
  • more accurate image fit implementation
  • added MSRV to Cargo.toml, by @Akida31
  • fix some documentation typos and inacuracies
  • fix timings for transition frames
  • fix capacity of Vec in image_pad function, by @MichaelOultram
  • implement animated WebP Support, by @MichaelOultram
  • some other memory optimizations, by @MichaelOultram
  • implement clear-cache command
  • we also automatically clear the cache from old swww versions now!

Also, we have udpdated all crates versions so that they all match. This should help some package maintainers that were having difficulty setting swww up for e.g. Debian, I believe.

v0.8.1

12 Jul 21:09
b7cde38
Compare
Choose a tag to compare

Pretty a much a near-exclusive bug fix release:

  • Fixed swww clear causing the daemon to exit
  • The cache is once again being correctly loaded during swww init
  • Fixed glitches happening to animated gifs (frames were being loaded in the wrong order)
  • Fixed swww-daemon sometimes not drawing to the whole screen (forgot to set the exclusive zone to -1)
  • Fixed an issue where the daemon would hang if multiple images were sent in quick succession

Additions:

  • --transition-type none, which is an alias to --trasition-type simple --transition-step 255

I'd like to thank everyone who took the time to use v0.8.0 (that was just out yesterday!) and submitted bug reports and the like! v0.8.0 was a huge rewrite, so this is somewhat expected, and I tried to fix everything asap.

I apologize for any inconveniences that might have caused.

v0.8.0

11 Jul 18:57
11129a3
Compare
Choose a tag to compare

0.8.0

BREAKING CHANGE: CACHE HAS CHANGED:

I have changed the way we are caching the images / animations. I would recommend users delete the previous cache directory once they install this new version:

rm -r $XDG_CACHE_HOME/swww # OR
rm -r $HOME/.cache/swww

BREAKING CHANGE: NUKED --sync flag:

We now sync everything automatically, every time. So we've eliminated that flag.

Update to sctk 0.17:

Updating to sctk 0.17 unlocked many, many improvements:

  • We managed to ditch an extra clone when calculating the transitions
  • We now draw the images directly into the wayland buffer, instead of having to send an intermediary buffer through a channel.
  • Because of the above, we can now send from the client a bgr image, instead of a bgra one. This lets us seriailize and write roughly 3/4 of what we were doing previously.

Moving from serde to rkyv:

We have changed our serialization strategy from serde to rkyv. This lead to even further memory usage reductions, since rkyv does not use an intermidate buffer to deserialize its structures.

Aditions:

We have reworked the way we do synchronization between monitors. It should sync all monitors animations automatically.

  • New transition, fade, that is essentially simple with beziers (@flick0)
  • invert_y flag (@flick0)
  • New option to resize to fit, padding only what was left (@SignalWalker)
  • @RiedleroD fixed a type :)

Summary:

With all of the changes above, I've managed to reduce memory consumption almost by a factor of 3. The price to pay was a full rewrite of the wayland implementation part of the daemon, a partial rewrite of the way we do ipc, and all the code adaptions necessary to make all that work.

Unfortunately, because I had to rewrite so much stuff, it is possible that old bugs will resurface. I've tried my best to test and validate it with every thing that blew up in the past, but it is probably inevitable that some stuff slipped by. Apologies in advance, and keep this in mind when upgrading.

v0.7.3

19 Apr 20:04
Compare
Choose a tag to compare

Fixes:

  • Missing / when using $HOME/.cache/swww, by @max-ishere
  • --transition-step with simple has saner defaults
  • correctly splitting outputs argument with ',', by @potatoattack

Improvements:

  • we only send the image after we've finished processing the whole animation.
    This diminishes the weird lag that can sometimes happen when sending a large
    gif.
  • sending a status update to systemd when daemon has been initialized, by @B3NJ4M1N

Internals:

  • we have benchmarks for our compression functions! This will be useful later once I start poking things to see if I can make them more efficient.

Unfortunately, there are a few bugs people have reported that I still haven't been able to fix. Sorry about that.

In any case, the immediate plan for the future is actually to update sctk to version 0.17.0. I am actually studying the possibility of using sctk with wgpu, since that should bring many improvements (most noticeably, we would be able to store an rgb vector, instead of rgba, so we could potentially cut memory usage by 3/4. In theory, of course, I still have to actually measure it to see if there's any difference. It will probably still take a while).