Commit graph

121 commits

Author SHA1 Message Date
Penelope Gwen
9c0295023a debian packaging info 2025-08-18 13:24:05 -07:00
Penelope Gwen
442f2410c3 implement specifying wallpaper by workspace number 2025-08-18 13:05:11 -07:00
Gergő Sályi
a41da912d7 Update PKGBUILD to 0.2.2 release 2025-06-15 21:29:23 +02:00
Gergő Sályi
29fc5861f0 Prepare release 0.2.2 2025-06-15 21:24:56 +02:00
Gergő Sályi
bffb18ea66 Fix Wayland protocol error invalid stride on wl_shm with bgr888 format
Align wl_shm buffer stride to both 4 and 3, so to 12, fixes:
https://github.com/gergo-salyi/multibg-wayland/issues/17
2025-06-15 21:16:14 +02:00
Gergő Sályi
a7f456863c Fix nightly rustc warnings mismatched_lifetime_syntaxes 2025-06-15 21:12:32 +02:00
Gergő Sályi
505e279ce1 Update dependencies
This notably updates the zune-jpeg dependency
fixing a minor discoloration issue on decoded JPEG images
2025-06-15 21:08:23 +02:00
Gergő Sályi
2f80face3f Update PKGBUILD to 0.2.1 release 2025-06-01 14:01:59 +02:00
Gergő Sályi
e9dd80288f Update PKGBUILD templating script 2025-06-01 14:01:04 +02:00
Gergő Sályi
3f2a052b34 Prepare release 0.2.1, update dependencies 2025-06-01 13:55:28 +02:00
Gergő Sályi
8601e38e32 Correct PKGBUILD by adding conflicts and provides multibg-sway 2025-06-01 13:48:16 +02:00
Gergő Sályi
9005a99289 Fix niri compatibility, add versioned niri-ipc dependencies
Using multiple niri-ipc versions need an ugly workaround
where we vendor and re-publish old versions to crates.io
See deps/README.md

Fixes issue:
https://github.com/gergo-salyi/multibg-wayland/issues/16
2025-06-01 13:39:50 +02:00
Gergő Sályi
620219e18e Set some rust and clippy lints in Cargo.toml 2025-05-31 09:55:15 +02:00
Gergő Sályi
227cbcb73e Update PKGBUILD 2025-04-26 17:43:20 +02:00
Gergő Sályi
552c0ae7e1 Rename project to multibg-wayland, update documentation 2025-04-26 17:07:40 +02:00
Gergő Sályi
1544cc8f99 Fix minimum supported Rust version 2025-04-26 13:28:27 +02:00
Gergő Sályi
ea1a9411bb Simplify struct State, access connection ref through callback args 2025-04-26 12:56:54 +02:00
Gergő Sályi
17ce422c7e Redraw wallpaper on scale factor change 2025-04-25 20:09:37 +02:00
Gergő Sályi
ab03760bfe Disable tracking of wl_buffer release events 2025-04-25 20:03:27 +02:00
Gergő Sályi
377e742ce0 Improve background layer destructor and decrease log level of its events 2025-04-25 18:53:29 +02:00
Gergő Sályi
bf8b8df4e1 Prepare next version
Update dependencies
Increase minimum supported Rust version to 1.82
Add script to check on msrv including aarch64 and FreeBSD targets
Fix incompatibilities with Rust 1.82, aarch64 and FreeBSD
2025-04-25 15:15:55 +02:00
Gergő Sályi
947e0ad057 Update PKGBUILD template with PKGBUILD changes, add shellcheck comment 2025-04-25 14:26:42 +02:00
Gergő Sályi
bf166cf4a1 Add some debug environment variables for testing 2025-04-25 14:17:42 +02:00
Gergő Sályi
d953a123fe Move struct declaration to the top, remove unnecessary visibilities 2025-04-25 14:07:01 +02:00
Gergő Sályi
3a90b4b9e8 Fix regressed wl_shm format choosing, delay it until formats are available 2025-04-24 15:15:58 +02:00
Gergő Sályi
6eec049e48 Flush Wayland events before having to send too many file descriptors at once
Works around a bug in the wayland-backend dependency failing to limit
the number of file descriptors sent in one message to MAX_FDS_OUT = 28
2025-04-24 14:50:24 +02:00
Gergő Sályi
cd22b9bebe Fix the way Wayland reads handle the WouldBlock error 2025-04-23 22:19:12 +02:00
Gergő Sályi
34af123af8 Check Vulkan limits for linear images, fix a mistake already in the check 2025-04-23 18:40:31 +02:00
Gergő Sályi
fbb2e4382e Fix recommended RUST_LOG level for debugging 2025-04-23 18:08:57 +02:00
Gergő Sályi
193d46f959 Name spawned threads 2025-04-23 15:47:16 +02:00
Gergő Sályi
decaa33752 Format code 2025-04-23 15:21:51 +02:00
Gergő Sályi
7be93dacac Clarify licensing information, note GPL dependencies and built objects 2025-04-22 14:55:28 +02:00
Gergő Sályi
5fd6cbe114 Add implementation to upload and serve wallpapers from GPU memory using Vulkan
Add handling for the Linux DMA-BUF Wayland protocol
Refactor Wayland code for image loading and image equivalence
Add Vulkan code using the ash crate dependency targeting Vulkan 1.1
For image DMA-BUF exporting use EXT_image_drm_format_modifier if available,
fall back to linear images otherwise
Add --gpu command line option
Add Vulkan packages as optional dependencies to Arch Linux PKGBUILD
2025-04-21 17:46:48 +02:00
Gergő Sályi
3ded435028 Share identical wallpaper images across workspaces and outputs if possible
Load and keep around wallpaper images as a reference counted object
usable by multiple outputs and workspaces to reduce memory use

Equality of wallpapers are determined by
equal wallpaper image file and equal output width, height and transform

Equality of wallpaper image files are determined by
equal canonical path and equal modification time

Change wl_shm based wl_buffers to use per-wallpaper raw shm pools
instead of per-output slot pools of the smithay_client_toolkit dependency
This allows freeing memory when a reference counted wallpaper is destroyed
at the expense of having to keep open a file descriptor for every wallpaper

Tries to address the suggestions from issue:
https://github.com/gergo-salyi/multibg-sway/issues/13
2025-04-17 17:38:09 +02:00
Gergő Sályi
8b8d2cbaf7 Refactor the handling of image color transform parameters 2025-04-16 14:49:02 +02:00
Gergő Sályi
0972f05b6c Refactor image loading
Start separating image loading logic from wl_shm buffer handling
Add fast path decoding directly to wl_shm buffers if possible
Add auto-vectorized RGB to BGRA swizzling
2025-04-15 23:02:38 +02:00
Gergő Sályi
a2f9ad2b83 Change main event loop to use poll instead of the mio dependency 2025-04-13 22:42:49 +02:00
Gergő Sályi
b06204360d Refactor, move application state struct to main.rs 2025-04-13 14:11:09 +02:00
Gergő Sályi
a56c1a81c7 Fix AVIF image format support
Add AVIF feature and dav1d native dependency if enabled
Do not build AVIF encoder-only features in dependencies
2025-04-13 13:54:56 +02:00
Gergő Sályi
0e1f98f40b Add unix signal handling
Implement unix signal handling using a basic self pipe
Shutdown gracefully on termination signals TERM, INT or HUP
Reserve signals USR1 and USR2 for future use
2025-04-12 19:51:53 +02:00
Gergő Sályi
00546678ca Prepare better error handling, add anyhow dependency 2025-04-12 14:37:42 +02:00
Gergő Sályi
9e2bfaa14e Add support to the Hyprland Wayland compositor 2025-04-12 13:42:02 +02:00
Gergő Sályi
94fe622d44 Add logging for niri events 2025-04-10 13:46:14 +02:00
Gergő Sályi
bcb60ea839 Change niri event subscription loop to cache the state of current workspaces 2025-04-09 19:23:29 +02:00
Gergő Sályi
e64359806c For unnamed niri workspaces use their niri workspace idx as workspace name
This mirrors the behavior of sway as sway ipc sets the sway workspace number
as name for unnamed sway workspaces
2025-04-08 21:24:20 +02:00
Gergő Sályi
75492df065 Update dependencies 2025-04-08 19:37:47 +02:00
Gergő Sályi
120b45b972 Fix clippy warnings 2025-04-08 19:23:33 +02:00
Florian Finkernagel
dfa2580bdc refactor CompositorInterface.subscribe_event_loop to separate concerns 2025-04-08 19:23:33 +02:00
Florian Finkernagel
4b02797e16 Refactor CompositorInterface to expose fewer multibg implementation details 2025-04-08 19:23:33 +02:00
Gergő Sályi
1fdbd7ffb0 Add support to the niri Wayland compositor
Implement niri support
Try to autodetect running compositor based on environment variables
XDG_SESSION_DESKTOP, XDG_CURRENT_DESKTOP, SWAYSOCK, NIRI_SOCKET in this order
Add the --compositor command line option
Add niri as optional dependency to the Arch Linux PKGBUILD
Update README and --help to include niri support

Merges the changes from
https://github.com/gergo-salyi/multibg-sway/pull/12
Thanks to the co-author for the contribution

Co-authored-by: Florian Finkernagel <finkernagel@imt.uni-marburg.de>
2025-04-08 19:09:00 +02:00