feat: add whyoolw/dropwall — drag-and-drop wallpapers#6
Merged
Conversation
Contributor
|
The README lacks the required You can take a look at the other plugin for inspiration. |
ItsLemmy
marked this pull request as draft
July 16, 2026 11:52
wioletowa
marked this pull request as ready for review
July 16, 2026 15:09
Contributor
Author
|
updated! |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Plugin
whyoolw/dropwallplugin.toml)What it does
DropWall turns the bare Wayland desktop into an image drop target. Dropping a local JPG, PNG, WebP, BMP, or GIF applies it through
noctalia.setWallpaper(), with optional per-monitor targeting and an optional non-overwriting copy into Noctalia's wallpaper directory.The drop target is fully transparent at rest and shows a subtle dashed highlight during a drag. Monitor hotplug is handled by the GTK worker.
External dependencies
python3: runs the local supervisor and GTK worker with bytecode writes disabled.python-gobject: Python bindings for GTK/GDK.gtk3: drag-and-drop surface.gtk-layer-shell: one desktop-layer drop surface per output.Process and I/O disclosure:
noctalia.runStream()startsdropwall_supervisor.py; it owns onedropwall_helper.pychild and restarts that child after an unexpected exit.$XDG_RUNTIME_DIR/noctalia-dropwall.lockto prevent duplicate instances.dropwall_copy.pyprocess. The current theme-mode directory is resolved at drop time. A Linux pidfd ties the copier to the exact GTK worker that accepted the drop, so stopping or reloading the plugin aborts the copy and removes its temporary file. The copier writes a private temporary file, flushes/fsyncs it, and atomically hard-links the complete inode to a non-existing final name; existing files are never overwritten and collisions receive a numeric suffix. A failed copy falls back to the original file. Before copying, it deletes only owned.dropwall-copy-*.tmpfiles older than 24 hours that an unclean shutdown may have left in that directory.Testing
v5.0.0-beta2-39-g9261d918b5f43Checks performed:
Validated 16 plugin manifest(s).validate: pass.%, tabs, newlines, and Unicode; remote-host file URIs and NUL paths were rejected.Screenshots / Videos
The runtime surface is transparent except for its dashed drag-hover highlight. Store card generated at the required 960×540 size:
Checklist
idafter the/inplugin.tomlexactly.plugin.toml,README.md,thumbnail.webp, andtranslations/en.json.README.mdfollows the README template, documents every entry id and dependency, and includes exact panel IPC commands and launcher prefixes where applicable.thumbnail.webpwith the thumbnail generator.versionfollows semver and is bumped in this PR;plugin_apiis the oldest API level this plugin requires.catalog.toml; CI generates it.Code review attestation
Plugins run as trusted, unsandboxed Luau in the user's session. Confirm:
licensedeclared inplugin.toml.