🎉 ScreenPlay V0.12 released! Steam Workshop And Community Page Overhaul, Instant Wallpaper Replacement & Profile Savings!

Published on Sep 04, 2020 by Elias Steurer | Kelteseth


ScreenPlay is an Open-Source Live Wallpaper and Widgets app for Windows & macOS (and soon Linux) written in modern C++/Qt/QML and is in active development since early 2017 on Gitlab.

You can download ScreenPlay via Steam for free!

Major Changes And Features

🎉 Steam workshop overhaul: Search, Sorting, better Upload and many fixes!

🎉 Community page revamp! Now contains: Wiki, Fourm, Issues, Release Notes and Contributing guide!

🎉 Instant Wallpaper replacement

🎉 Profile savings. ScreenPlay now saves all settings like volume, custom properties and Widgets position!


🎉 Quick deletion of local content (Not possible for workshop content for now)



  • e1b40a7 More settings save reworking

  • 0d7cb55 Move more functions into dedicated ScreenPlayWallpaper class

  • 3c1f5f7 Replace setContextProperty that will be removed in Qt6 with qmlRegisterSingletonInstance

  • 5f0d81d Change sidebar monitor selection to no longer clipAdd flickable when the selection area is bigger than the sidebar

  • cb6b438 Change sdkconnector to use GlobalVariables::getAvailableTypes

  • 5fb1ea3 Change installed content type from string to enumWe now use the InstalledType enum in QML for differentiating between wallpaper types

  • b13d643 Change cmake to compile into a separate bin folder for easier deployment

  • c289a3e Change monitor preview size when only a single monitor is in use

  • f7a7844 Change compilation mode to c++ 20Fix qml compilation in release mode

  • a83d1fc Change wallpaper selection to always select the first monitor

  • 0b84c37 Change SaveNotification base item to custom implemetation

  • c4423a1 Refactor saving/loading of profilesWe now partially support saving and loading custom properties.

    • This is accomplished via a flat ProjectSettingsListModel that is only used for the properties. We still display the DefaultVideoControls.qml if the content is a video. For this I added the m_installedType to the MonitorListModel.
  • 49b75a4 Move SDKConnectors SDKConnection class into seperate fileThe next will be to merge SDKConnector into the ScreenPlayManager.

    • We now have the first version of bi directional messages. This is for updating values like saving the current Widget position. We also save a SDKConnection shared reference inside our ScreenPlayWallpaper or ScreenPlayWidget instance. So we now have all logic in these classes.
  • 14991cb Change Resources into two seperate qrc files

    • Also we now use qmlRegisterUncreatableMetaObject with a namespace for every enum to “emulate” enum classes in QML
  • b81c513 Revert setWallpaperValue from QVaraint to QStringThis caused some floating convertion error. Because they get send as a string in the end anyways we just can use string here.

  • b08c124 Change check if steam version from qml to cpp We now have a steamVersion property to set if we can load the steam plugin. Because of this we no longer need the WorkshopLoader and WorkshopAvailableTest being triggered when hovering over sidebar elements


  • 7015267 Lil language update, also lil update for me - MagVI has become Overseen :p


  • 9e95b40 Refactor install list QML & C++ Move right click popup out of every ScreenPlayItem. This results now in a huge performance improvement
  • fa6b734 Fix set wallpaper volume, position and playback speed
  • 1fe1fb2 Fix replacing wallpaper from different types
  • d7411d1 Fix artifact path to contain only bin
  • edee509 Fix aQt paths
  • 0b31d2b Fix windows c++20 compiler error by updating Qt to 5.14.2
  • 13b7bd8 Fix build info compile definition
  • d930f0d Fix ffmpeg color dark styling issues
  • a37fab0 Fix #99
  • 4f8a4a2 Fix issue #100 by replaceing custom popup with Qt Controls popup
  • 0b2a66f Fix NaN value when starting wallpaper other than video
  • 8bed32a Fix workshop type not set resulting in not showing anything
  • 12ab2a2 Fix SDK to properly export header files
  • 88fb8d8 Fix spelling
  • dd9cf8c Fix copying of korean font
  • db637a4 Fix cmake resources variables
  • cffeec4 Fix sidebar FillMode
  • f63284e Fixed to fast reloading if folder content has changed
  • 6d4afb5 Fix window flash on startup
  • 7b4a5cb Fix btn being click able if it is a widget
  • 9110725 Fix german translation
  • c77bdcc Fix ffmpeg dark theme colors
  • f98e87d Fix dark theme colors for video wizardAdd some mkv/webm checks because we do not support them yet
  • b1362ca Fix close icon color to use Material.iconColor
  • 6466906 Fix spelling thanks to Neiffer
  • 2e670ed Fix colors
  • 0d1e210 Fix CommunityNavItem clickFix Nav shadow
  • 95c1170 Fix dark and light background colors
  • f17b26f Fix codoc combobox width and text
  • 59a0204 Fix include
  • b05ad7f Fix DefaultVideoControls initial value from ScreenPlayWallpaper
  • 5d8f7c4 Fix crash when requesting none existing profileAdd SaveNotification to indicate that the profile has been saved.


  • 045cefa Add deletion of content if it is not a steam itemDeleting a steam subscription folder would be pointless because Steam would just download it again. For now this works only with none steam items, based if their have a steamID in their project.json
  • 3ac4b5b Add CI status
  • 281c3cf Add missing fadeIn when using QML/HTML Wallpaper
  • 7df52a1 Add Wallpaper and Widgets settings background
  • 7c0b574 Add basic saving and loading of Widgets
  • 19636ed Add error message
  • 1ee39de Add Collaboration Guidelines
  • 73730ea Add replace wallpaper that reuses the existing ScreenPlayWallpaper process
  • 4f2854b Add search type enumChange FillMode namespace
  • a72c7ed Add qt quick compiler and fix windows cmd opening in release
  • e0e3786 Add cmake automatic translation generation
  • db0a775 Add hover stealing to SidebarThis is to fix the hover event of installed content
  • c32ea21 Add html files to qrcApparently this works now with newer Qt versions…
  • 3399520 Add workshop as QPlugin
  • 5fcc4be Add hover open in browserAdd disabled steam
  • 35e7761 Add ping alive to check if widget or wallpaper is still running
  • 0ca674a Add another check if main application is still runningThe timeout of pipes is quite high so we need to ping them regularly
  • 41a4b3d Add missing rc from last commit
  • a5b84b2 Add windows app icon


  • b91b5ae Remove nlohmann include
  • 3574d21 Remove more nlohmann_json
  • 49747b5 Remove no longer used nlohman-json
  • 6913934 Remove disabled threejs button
  • c76bebb Remove install step
  • 2b1ba81 Remove WallpaperType and WidgetType to merge into InstalledTypeThis is needed because we have one type enum inside the projectfile struct.
  • cfc89e6 Remove old Workshoploader
  • 8838f4f Remove copying of html fileIt is now in the qrc
  • f93c6a1 Remove webm for now because import support is missing
  • 76083ba Remove unnecessary states
  • 81a6231 Remove stomtReplacing it with website, forum, bugtracker etc


  • eeec1b6 Update qdocs config to 5.15.1
  • 9852b09 Update ffmpeg to 4.3.1

Update to Qt 5.15.1

  • Wallpaper are now using the newer Chromium 80

ScreenPlay Is Open Source Software

Everyone can contribute with code, design, documentation or translation. If you have questions about contributing do not hesitate to ask in the Forum or Discord. Here are some ways you can contribute: