In DSH agent development, dynamic desktop wallpaper switching is a common requirement. Manually selecting and downloading wallpapers from the Wallpaper Engine Workshop is inefficient, and the network environment in China imposes many restrictions on accessing Steam. This plugin aims to solve these issues by integrating Steam Web API and steamcmd into DSH to enable automated wallpaper management.

Plugin Introduction

dsh-we-wallpaper-sync is an online utility plugin maintained by tiger0012 (MIT License). It is a reusable skill whose main function is to batch browse, search, and download Wallpaper Engine (Steam app 431960) Workshop wallpapers, and then connect the downloaded files to the DSH Skin Center so they can be used as an agent GUI background.

Core Features

  1. Search and Preview
    The plugin supports searching or browsing the Workshop via a Steam Web API Key. Users can filter by subscription count, trending status, recently published items, or keywords. The plugin fetches the title, subscription count, and preview image of each item, and generates a grid list for user selection.

  2. Batch Download
    It uses steamcmd with Docker to perform batch downloads. This approach does not require installing the Steam client or relying on system-level 32-bit libraries; it runs directly in a container environment.

  3. Network Workaround
    For the network environment in China, the plugin supports using proxy settings to bypass Steam HTTP blocks and resolve cross-region login interception. This requires the egress IP to match the account’s usual location and configuring an appropriate proxy policy.

  4. Storage and Integration
    After downloading, wallpapers are stored in the ~/Steam/steamapps directory. Users need to configure skin-wallpaper.weLibraryDirs in ~/.dsh/settings.yaml. Once the Wallpaper Engine bridge (WE bridge) in the DSH Skin Center scans the workshop/content/431960 folder under that directory, it can be applied as a GUI background.

How to Use

After installing the plugin, invoke the skill dsh-we-wallpaper-sync in DSH and follow the steps. You can also read the SKILL.md file inside the plugin package to view the specific commands.

Notes

The plugin runs with the permissions of the current DSH process. Before installation, review the source code and license. The following are key points to note during use:

  • Do Not Hard-Code Credentials: The skill uses <username>/<KEY>/<password> as placeholders; do not hard-code Steam API keys or passwords in configuration.
  • Network and Proxy: Steam’s HTTP domains are blocked in China, but steamcmd uses the Steam CM network (not HTTP), so direct connections often work. However, Steam compares the login IP with the account’s usual location; a mismatch can block login. Use a proxy whose egress IP matches the account’s location, and configure SocksProxy in steam.cfg.
  • Container Path: The steamcmd directory inside the container is /root/.local/share/Steam/steamcmd. Do not mount an empty directory over it (this can cause steamcmd.sh not found); use +force_install_dir to specify the storage path.
  • Third-Party Sites: It is not recommended to rely on third-party download sites (such as steamworkshopdownloader.io), because their backends often return 500 errors.
  • Scan Path: The WE bridge scan path in the Skin Center is <library root>/steamapps/workshop/content/431960.

Summary

This plugin provides DSH developers with a standardized entry point for managing Wallpaper Engine resources, eliminating cumbersome manual operations and network proxy configuration. The related directory and source code are listed below: