Noctalia derives its color scheme from whatever image is set as the wallpaper. A live Wallpaper Engine scene is not an image the shell can read, so the palette stayed pinned to whatever wallpaper came before. Applying a wallpaper now also hands Noctalia a still of it -- the Workshop preview, or a decoded frame for video wallpapers when ffmpeg is present -- so the configured generator, scheme, mode and templates all run exactly as they do for an ordinary wallpaper. The previous wallpaper is saved per output and restored on stop. Toggle: sync_colors. Add multi-select with timed cycling. Selected wallpapers carry a badge showing their place in the rotation, and play in selection order or shuffled; random plays a full pass before reshuffling so nothing repeats back to back. Selection, interval and order are per output. Add per-wallpaper settings behind a gear on each tile: the linux-wallpaperengine switches (scaling, clamp, layer, FPS, volume, mute, particles, mouse, parallax, fullscreen pause), plus the wallpaper's own properties parsed from project.json and rendered by declared type, honoring each property's visibility condition. Move process ownership, the palette sync and the cycle timer into the service. The panel is now pure UI talking over noctalia.state, so a cycle keeps running while the panel is closed and one owner holds the pid files. Fix three process-handling bugs along the way: - The running-process check anchored on "^linux-wallpaperengine", but packagers ship a wrapper that execs ./linux-wallpaperengine from its own directory, so no process ever matched and every apply leaked another GPU client onto the same output. - Current builds ignore both SIGTERM and SIGINT, so the kill never landed either. Stopping now escalates to SIGKILL after a grace period. - The reload sweep used pkill -f, which matches the shell running the command itself and killed it part way through, leaving orphans. Cache a static still per wallpaper for the grid. Workshop previews are frequently animated GIFs, and the grid decoded and animated all of them continuously for as long as the panel was open. plugin_api moves 3 -> 9: tile and control callbacks are Luau closures rather than named globals, which the host resolves from API 9 onwards. This is what the plugin already required; the manifest understated it.
70 lines
3.0 KiB
JSON
70 lines
3.0 KiB
JSON
{
|
|
"panel": {
|
|
"apply": "Applying {name}",
|
|
"apply_options": "Apply",
|
|
"back": "Back to wallpapers",
|
|
"clear": "Clear",
|
|
"clear_overrides": "Also clear per-wallpaper overrides for the settings changed here",
|
|
"configure": "Configure this wallpaper",
|
|
"cycle_needs_selection": "Select at least one wallpaper before starting a cycle",
|
|
"cycle_running": "Cycling {count} wallpapers every {minutes} min",
|
|
"cycle_start": "Start cycle",
|
|
"cycle_started": "Cycling {count} wallpapers every {minutes} min",
|
|
"cycle_stop": "Stop cycle",
|
|
"defaults": "Global defaults",
|
|
"defaults_tooltip": "Settings applied to every wallpaper",
|
|
"engine": {
|
|
"clamp": "Clamp mode",
|
|
"disable_mouse": "Disable mouse interaction",
|
|
"disable_parallax": "Disable parallax",
|
|
"disable_particles": "Disable particles",
|
|
"fps": "FPS limit",
|
|
"fullscreen_pause_only_active": "Pause only for the active fullscreen window",
|
|
"inherit": "Use global default",
|
|
"layer": "Wayland layer",
|
|
"no_audio_processing": "Disable audio processing",
|
|
"no_fullscreen_pause": "Keep playing when an app is fullscreen",
|
|
"noautomute": "Disable automute",
|
|
"scaling": "Scaling mode",
|
|
"silent": "Mute this wallpaper",
|
|
"unset": "Engine default",
|
|
"volume": "Volume"
|
|
},
|
|
"every": "Every",
|
|
"list_failed": "Could not list Wallpaper Engine wallpapers",
|
|
"minutes": "min",
|
|
"missing_project_json": "No project.json for {name}",
|
|
"no_properties": "This wallpaper exposes no configurable properties",
|
|
"no_wallpapers": "No Wallpaper Engine wallpapers found",
|
|
"order_random": "Random",
|
|
"order_sequential": "In order",
|
|
"playback": "Playback",
|
|
"properties": "Wallpaper properties",
|
|
"reset": "Reset to defaults",
|
|
"select_multiple": "Select multiple",
|
|
"select_multiple_tooltip": "Pick several wallpapers and cycle through them on a timer",
|
|
"selected_count": "{count} selected",
|
|
"stop": "Stop",
|
|
"stop_tooltip": "Stop the wallpaper on this output and restore the previous Noctalia wallpaper",
|
|
"title": "W Engine",
|
|
"unlabeled": "Show {count} options the author left unnamed"
|
|
},
|
|
"plugin_description": "A widget for Wallpaper Engine. Set wallpaper from Wallpaper Engine with simple click.",
|
|
"plugin_name": "W Engine",
|
|
"settings": {
|
|
"grid_columns": {
|
|
"description": "How many wallpapers to show per row in the panel. The panel itself is a fixed size, so fewer columns means larger previews.",
|
|
"label": "Wallpapers per row"
|
|
},
|
|
"sync_colors": {
|
|
"description": "Generate the Noctalia palette from the wallpaper being applied, the same way an ordinary wallpaper does. Uses the Workshop preview, or a decoded frame for video wallpapers when ffmpeg is installed.",
|
|
"label": "Sync shell colors with the wallpaper"
|
|
}
|
|
},
|
|
"widget": {
|
|
"cycling": "W Engine — cycling wallpapers",
|
|
"idle": "W Engine",
|
|
"playing": "W Engine — wallpaper running"
|
|
}
|
|
}
|