Skip to main content
Pre-release

This release is a pre-release and may not be stable for production use.

OVOS PHAL Plugin Wallpaper Manager

This PHAL plugin gives OpenVoiceOS a central interface for wallpaper management. It works with homescreens and other desktop environments. The interface lists the wallpapers available from each registered provider, and it sets a wallpaper from that list. A provider can be a local source that reads wallpapers from the file system, or a remote source that reads wallpapers from a URL.

Supported desktop environments

  • ovos-shell (via homescreen skill)
  • GNOME: gnome, unity, cinnamon
  • MATE: mate
  • XFCE: xfce4
  • KDE: kde
  • LXDE: lxde
  • Fluxbox: fluxbox
  • Openbox: openbox
  • IceWM: icewm
  • JWM: jwm
  • AfterStep: afterstep
  • Blackbox: blackbox
  • WindowMaker: windowmaker

Platform support comes from OpenVoiceOS/wallpaper_changer.

Install

pip install ovos-PHAL-plugin-wallpaper-manager

Event and API reference

Register and activate a wallpaper provider

A wallpaper provider must register with the central wallpaper management interface. To register, send this event:

    # ovos.wallpaper.manager.register.provider
    # type: Request
    # description: Register a wallpaper provider to the plugin
    # data required:
        # provider_name = typically the self.skill_id of the skill that provides the wallpaper provider
        # provider_display_name = A display name for the wallpaper provider, that will be displayed on the selection screens
        # (optional) provider_configurable = True if the wallpaper provider is configurable, False if not

When registration succeeds, the wallpaper management interface responds with this event:

    # ovos.phal.wallpaper.manager.provider.registered
    # type: Response
    # description: Registration successful

To activate a wallpaper provider, send this event:

    # ovos.wallpaper.manager.set.active.provider
    # type: Request
    # description: Activate a wallpaper provider
    # data required:
        # provider_name = typically the self.skill_id of the skill that is the wallpaper provider

Note: The Wallpapers Settings UI handles this event on "smartspeaker" and "mobile" GUI platforms. A skill or wallpaper provider must not send this event unless it needs to force an override of the current provider.

Wallpaper collection API

A wallpaper provider can send a collection of wallpapers to the wallpaper management interface. This step is optional. Some providers keep their own collection of wallpapers, and some depend on an online source instead.

After a wallpaper provider registers, the wallpaper management interface sends it an event to request a collection of wallpapers. A provider that wants to supply wallpapers listens for this signal:

    # {provider_name}.get.wallpaper.collection
    # type: Request
    # description: Request a collection of wallpapers from the wallpaper provider

The provider responds to that signal with this event:

    # ovos.wallpaper.manager.collect.collection.response
    # type: Response
    # description: Response to the wallpaper collection request
    # data required:
        # provider_name = typically the self.skill_id of the skill that provides the wallpaper provider
        # wallpaper_collection = a list of full wallpaper paths that are available from the wallpaper provider

A wallpaper provider can also ask the wallpaper management interface to update its wallpaper collection at any time, by sending this event:

    # ovos.wallpaper.manager.update.collection
    # type: Request
    # description: Request the wallpaper management interface to update its wallpaper collection
    # data required:
        # provider_name = typically the self.skill_id of the skill that provides the wallpaper provider

Wallpaper request for providers without a collection

If a wallpaper provider does not supply a collection of wallpapers, the wallpaper management interface always sends it an event to request a new wallpaper. The provider must listen for this signal:

    # {provider_name}.get.new.wallpaper
    # type: Request
    # description: Request a new wallpaper from the wallpaper provider

The provider must respond to that signal with this event:

    # ovos.wallpaper.manager.set.wallpaper
    # type: Response
    # description: Response to the wallpaper request to set new wallpaper
    # data required:
        # url = the full path of the wallpaper that is to be set

Get and set wallpaper API

To get the current wallpaper, the wallpaper management interface sends this event:

    # ovos.wallpaper.manager.get.wallpaper
    # type: Request
    # description: Request the wallpaper management interface to get the current wallpaper

The wallpaper management interface responds to that event with this event:

    # ovos.wallpaper.manager.get.wallpaper.response
    # type: Response
    # description: Response to the wallpaper request to get the current wallpaper
    # data sent:
        # url = the full path of the current wallpaper

To set a wallpaper, send this event to the wallpaper management interface:

    # ovos.wallpaper.manager.set.wallpaper
    # type: Request
    # description: Request the wallpaper management interface to set a new wallpaper
    # data required:
        # url = the full path of the wallpaper that is to be set

Note:

  • On platforms that support a homescreen, this event sets the homescreen wallpaper.
  • On platforms without a homescreen, such as a desktop, this event sets the desktop wallpaper.

Change wallpaper API

Any skill or event can ask the wallpaper management interface to change the wallpaper, by sending this event:

    # ovos.wallpaper.manager.change.wallpaper
    # type: Request
    # description: Request the wallpaper management interface to change the wallpaper

Note:

  • If the selected provider supplies a collection of wallpapers, the wallpaper management interface picks the next wallpaper from that collection and sets it.
  • If the selected provider does not supply a collection, the wallpaper management interface asks the provider for a new wallpaper.

Auto-rotate wallpapers API

To turn on automatic wallpaper rotation, send this event:

    # ovos.wallpaper.manager.enable.auto.rotation
    # type: Request
    # description: Request the wallpaper management interface to enable auto rotate and set an wallpaper rotation interval
    # data required:
        # rotation_time = the time in seconds at which the wallpapers should be rotated

To turn off automatic wallpaper rotation, send this event:

    # ovos.wallpaper.manager.disable.auto.rotation
    # type: Request
    # description: Request the wallpaper management interface to disable auto rotate

Example: wallpaper provider skill with a collection

def ExampleWallpaperProvider(OVOSSkill):
    def initialize(self):
        self.add_event("ovos.wallpaper.manager.loaded", self.register_with_wallpaper_provider)        
        self.add_event(f"{self.skill_id}.get.wallpaper.collection", self.supply_wallpaper_collection)

    def collect_wallpapers(self):
        wallpaper_folder = "/usr/share/wallpapers"
        return [f"{wallpaper_folder}/{f}" for f in os.listdir(wallpaper_folder)]
    
    def register_with_wallpaper_provider(self, message):
        self.bus.emit(Message("ovos.wallpaper.manager.register.provider",
                              data={"provider_name": self.skill_id,
                                    "provider_display_name": "Example Wallpaper Provider"}))
    
    def supply_wallpaper_collection(self, message):
        wp = self.collect_wallpapers()
        self.bus.emit(Message("ovos.wallpaper.manager.collect.collection.response",
                              data={"provider_name": self.skill_id,
                                    "wallpaper_collection": wp}))

Example: wallpaper provider skill without a collection

def ExampleWallpaperProvider(OVOSSkill):
    def initialize(self):
        self.add_event("ovos.wallpaper.manager.loaded", self.register_with_wallpaper_provider)
        self.add_event(f"{self.skill_id}.get.new.wallpaper", self.supply_new_wallpaper)
    
    def register_with_wallpaper_provider(self, message):
        self.bus.emit(Message("ovos.wallpaper.manager.register.provider",
                              data={"provider_name": self.skill_id,
                                    "provider_display_name": "Example Wallpaper Provider"}))
    
    def supply_new_wallpaper(self, message):
        # Get a new wallpaper from some online source
        # and set it as the wallpaper on every request for a new wallpaper
        url = "https://example.com/wallpaper.jpg"
        self.bus.emit(Message("ovos.wallpaper.manager.set.wallpaper",
                              data={"url": url}))

Related projects

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

ovos_phal_plugin_wallpaper_manager-0.2.8a2.tar.gz (9.3 MB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

File details

Details for the file ovos_phal_plugin_wallpaper_manager-0.2.8a2.tar.gz.

File metadata

File hashes

Hashes for ovos_phal_plugin_wallpaper_manager-0.2.8a2.tar.gz
Algorithm Hash digest
SHA256 657ce58ec53abd2876d45f38f572f486ec0cee23cfbb6faabcd08c9de4464d02
MD5 fa43adea28b5240f90c29ff8d229fbfc
BLAKE2b-256 80b6e22324e82ff48b2f9e5a26e40e24b2de5b89aebb83209ce20ee15bf0d285

See more details on using hashes here.

File details

Details for the file ovos_phal_plugin_wallpaper_manager-0.2.8a2-py3-none-any.whl.

File metadata

File hashes

Hashes for ovos_phal_plugin_wallpaper_manager-0.2.8a2-py3-none-any.whl
Algorithm Hash digest
SHA256 cbcebc76ca23ebf28631cce83348e14b510186dcd09d15c08948d5c3fe19957f
MD5 4e6410ec4d293a0eb0c85b76f44acefe
BLAKE2b-256 b24e0e889d883595683d84efeae68c92d327d60a1e93eff2b0aa457cd0e93e6e

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page