PS4 News on Facebook! PS4 News on Twitter! PS4 News on YouTube! PS4 News RSS Feed!

Home PS4 News - Latest PlayStation 4 and PS3 News

November 26, 2013 // 10:19 pm - Following up on the previous update, today PlayStation 3 developer facanferff has made available a Quickstart to PS3 Plugin Development in Showtime with details below.

To quote: Since a long time ago, some users have requested me to write a tutorial so they could create their own Showtime plugins. This is an initial attempt to it, I hope you like. If I make some mistake, I'm sorry, I'm not a teacher.


Before we get our hands dirty, it’s important to explain some little things that might help you later in making your own plugins. Plugins for Showtime (also known as Apps) are exclusively written, at the moment, in Javascript. To bring plugins to life, Showtime uses a Javascript engine called Spidermonkey (as of now, Showtime uses Spidermonkey 1.8.0-rc1). To learn more about this engine, you may go to

If you ever did web development, you may wonder if the Javascript API that work in normal web browser might work here, well, the answer is no. Due to this, you will not find things like DOM or AJAX in your toolbox, but you may and should use the basic Javascript.

In this quickstart, I will assume the reader has good understanding of Javascript. If you don’t know it, you may check the several resources available online/offline. From these, I recommend check this:

The Showtime plugins’ job is to respond to browse and search requests and populate the internal data model with the actual information to be shown to the user via Showtime’s user interface(s).

Since there are different types of plugins, I will focus in this tutorial in only a type, plugins that browse content in the web and show it to user (e.g. Youtube plugin).

Structure of a plugin

Every plugin lives in a directory of their own. From the several files this directory may have, you need to have at least one file in the root of the plugin, plugin.json, which contains information about the plugin and the author. You may use sub-directories and custom names for other files in order to organize it better.


plugin.json is a JSON ( encoded text file containing information about the plugin and its author. Example of a plugin.json file (from the Channel9 plugin):

[Register or Login to view code]

Now it’s time to learn more about each field and which ones are required for every plugin:

[Register or Login to view code]

Getting Started

To run a plugin in a development environment, you may call from a terminal:

[Register or Login to view code]

The flag –p means that you want to load a plugin in development environment.

If you ran this already, you might get the following error: This will output something like: plugins [ERROR]: Unable to load development plugin: testplugin Unable to load testplugin/plugin.json -- File not found. This means or we don’t have a testplugin directory or we don’t have a plugin.json inside it. To create the directory do:

[Register or Login to view code]

Now, to edit the plugin.json, open the file testplugin/plugin.json in any text editor that you like.
In there, let’s make our initial plugin.json:

[Register or Login to view code]

With this, we specified that the plugin testplugin uses Javascript engine, has an ID ‘testplugin’ and the script is ‘testplugin.js’.

Whenever you want to reload the plugin you can use Shift+F5 in Showtime. This is helpful when you make changes to a plugin already in development environment inside Showtime, without the need of restarting Showtime. Even if the plugin gave an error, you may use this to try to reload it. When you reload it, all hooks and resources associated to the plugin are removed. This phenomenon happens also when a user removes a plugin from Showtime.

In case you are already in a page that belongs to the plugin itself, Showtime will reload the plugin and reload the page itself.

Now open your testplugin/testplugin.js in a text editor. Since we want to have a plugin that lives forever (so it can be called anytime) we need to have a scope where all local variables will live and also need to remember ‘this’ which is, when the script is invoked, a plugin object created by Showtime itself (

So, let’s edit this file:

[Register or Login to view code]

Reload the plugin now with Shift+F5, if you look in the terminal windows from which you opened Showtime, you will find a line saying ‘Hello, Showtime XXX’ where XXX is your current Showtime version that was obtained via showtime.currentVersionString .

Routing an URI to the plugin

Since our plugin will respond to browse requests we need to have an URI associated to it. An URI is something like a URL you use to browse the Internet, but in this case it is used to browse in Showtime. Every plugin reservers URI space starting with the plugin’s ID specified in plugin.json. These URI routes registered by plugins have higher priority than URI routes that Showtime itself handles, so you can create an URI route like it is in a web browser (e.g.

With this new knowledge let’s make it in use (edit it to match this code):

[Register or Login to view code]

Now, reload the plugin and if you type “testplugin:hello” in the search input field on Showtime’s home page, you will notice Showtime will open a new page with only a loading symbol, but in the terminal it will show the message provided to showtime.print.

A look in a real plugin

For this tutorial, I decided to use a real plugin made by me, which is called Videocopilot. The plugin source is located at and its a plugin for Web site

I will not discuss the plugin.json of the plugin ( in this tutorial.
The lines of code or numbers of line are relative to version 0.9 (the most updated version at this moment).

Lets see then the plugin script (

To make Showtime provide a link in home page to the plugin’s start page we need to create a service:

[Register or Login to view code]

Lets check each argument given to plugin.createService:

  • 1st: “Video Copilot” is the display name of the service
  • 2nd: PREFIX (which is a global variable specified as “videocopilot” + “:start” is the initial route of the service (the URI where is located the home page of the plugin)
  • 3rd: “video” tells Showtime this plugin provides video resources
  • 4th: true means the service should be enabled immediately, making it visible to user and
  • 5th: plugin.path (gives you the full path to the plugin’s root directory) + “logo.png” is the path to an image that identifies the plugin.

Since we registered the home page’s URI route, we need to specify what does that URI route:

[Register or Login to view code]

Here, plugin.addURI registers a new URI route, in this case called “videocopilot:start” and startPage is the function to be called when this route is open by user request. The function provided to addURI should accept at least one argument, where the 1st one is a page object created by Showtime and used to manipulate the page.

function startPage:

[Register or Login to view code]

Here, page.appendItem will append a new item to the current page. Lets see the arguments:

  • 1st: PREFIX + ':browse:' + escape('') + ':undefined' , is the URI route that should be called when the user clicks this item
  • 2nd: type of item, from the several ones, the most used are: directory, used to specify this item will open a new page to browse contents; and video that specified this item will open a video resource
  • 3rd: metadata for the item, you may provide any information about this item as you want. The most used are: title, title of the item; icon, image to be shown associated to the item; description, a description of the item

[Register or Login to view code]

Means this page is a directory to browse content.

[Register or Login to view code]

Tells Showtime that the contents of this page are “items”, in most cases, you want to use this one, we will use it for this tutorial.

[Register or Login to view code]

Tells Showtime that we don’t want anymore the loading symbol to be shown to user.

Function getVideoList:

[Register or Login to view code]

Here, showtime.httpGet is a function you may call to do a GET request to a page (e.g. to obtains its source code) and .toString() is to convert its response to a Javascript String to manipulate.

plugin.addURI(PREFIX + ":video:simple: (.*)", function(page, link):

[Register or Login to view code]

This is a Javascript object where we specify only the title of a video (displayed in video playback) and sources is an array where each object contains at least the url (e.g. the video’s url).

[Register or Login to view code]

Here, page.source is the way to tell Showtime what we want to reproduce. Since we want to play a video we need to put always “videoparams:” before the parameters of video as specified before encoded in a JSON string.

[Register or Login to view code]

This finally tells Showtime we have a video, so Showtime can handle everything to prepare video playback.

[Register or Login to view code]

This function is used to add continuously items to a page. In the current version of the tutorial, I will not explain this, so whenever you want to show more items (e.g. of a second page) use page.appendItem and pass what you need.

[Register or Login to view code]

This function adds a searcher to Showtime that can be used when a user searches for something (not a URI route) in search input field in Showtime’s home page. This function accepts 3 arguments:

  • 1st: title of the searcher, shown to user when searching something
  • 2nd: image of the search, also shown to user
  • 3rd: function that receives a page and query arguments (page is the same as specified before in the tutorial and query is a string containing what to search). This function is runs always whenever a user searches for something.

Note: In the function passed to plugin.addSearcher you need to specify somewhere the number of found entries via page.entries, otherwise Showtime will not show your searcher to user for that query.

I recommend you study carefully the code at:

Publishing plugins

You may check for all details about it.

Bibliography (maintained by Andreas Oman (andoma), Fábio Ferreira (facanferff) and Leonid Protasov (lprot))


andoma: for creating Showtime

Final notes

I hope, you learned a little about plugin development in Showtime with this small tutorial. This tutorial is far away from being finished, I just wanted to give you an initial overview to the process of creating plugins for Showtime.

With a look in a real plugin, I believe you have now the fundamental tools to study better existing plugins and create new plugins. Whenever I can, I will try to update this tutorial to make it more complete and easier to understand.

For a reference of the functions Showtime provides I recommend you check

And to conclude I leave here a screenshot of plugin TMDb so you can see the potential you can get from a plugin (below).

I hope you liked, facanferff.

Quickstart to PS3 Plugin Development in Showtime by Facanferff

Quickstart to PS3 Plugin Development in Showtime by Facanferff

Follow us on Twitter, Facebook and drop by the PS3 Hacks and PS3 CFW forums for the latest PlayStation 3 scene and PS4 Hacks & JailBreak updates with PlayStation 4 homebrew PS4 Downloads.

#570 - bloodmoney - January 1, 2015 // 2:10 pm
bloodmoney's Avatar
Love it thank you

#569 - schrammbo93 - January 1, 2015 // 8:52 am
schrammbo93's Avatar
Thanks, it is an awesome piece of software

#568 - Aleksan - January 1, 2015 // 7:37 am
Aleksan's Avatar

#567 - free1981 - January 1, 2015 // 7:23 am
free1981's Avatar
Thanks a million for this great and useful software

#566 - wicko - January 1, 2015 // 6:12 am
wicko's Avatar

#565 - svoobey - January 1, 2015 // 5:16 am
svoobey's Avatar
for iso images will it work?

#564 - idizzle - December 31, 2014 // 11:05 pm
idizzle's Avatar
Excellent, nice releases

#563 - PS4 News - December 30, 2014 // 8:54 pm
PS4 News's Avatar
Following up on all their previous updates, today PlayStation 3 developer Andreas Oman released Showtime PS3 Media Center v4.8 Stable Build for PlayStation 3 with some updates followed by Showtime Remote from Claes Hallstrom with the changes outlined below.

Download: showtime-4.8.pkg / showtime-gh-4.8.pkg / showtime-4.8.self / showtime-4.8.iso / showtime-4.8.3.pkg / showtime-gh-4.8.3.pkg / showtime-4.8.3.self / Showtime 04.09.021 [CEX].pkg (7.50 MB) / showtime_remote_v0.0.5.apk / Showtime Remote / showtime_remote_v0.0.6.apk / Showtime Remote / GIT / Showtime for multiMAN v4.09.021 (Mirror) by deank

To quote: Showtime 4.8 released

Finally time for a new release just before 2014 ends. In total 183 issues have been filed and fixed (

Major changes

  • Add support for streaming directly from bittorrent peer-to-peer network.
  • Improved HLS streamer, in particular better support for live streams and quicker adaption between bitrates.
  • New javascript engine for plugins ( which is actively maintained and offers much better support than Spidermonkey. Spidermonkey is now deprecated and will be removed for 5.0 so plugin authors are urged to port their plugins.
  • Major rewrite of user interface rendering code. This is a preparation for Showtime 5.0 which will sport a new user interface.

Minor changes

  • It's now possible to turn off automatic browsing of archives (ZIP and RAR) as folders.
  • It's now possible to configure the amount of time Showtime skips when seeking backward and forwards. Settings available in settings -> video playback.
  • Since February 2014 (Showtime version 4.5.108), clearing metadata does not erase playcount, resume point, etc. Update the 'Clear metadata...' -warning text to reflect this.
  • Improve metadata lookup speed when using external sources such as, etc.
  • Add support for video panning during playback.

Improve User Interface when streaming from Tvheadend:

  • Added show description and name of next show to TV playdeck.
  • If a channel has an icon, display that instead of Display.png in list view.
  • Added tv show description to iteminfo view.
  • Sort channels based on channelNumber set in Tvheadend's user interface.

PS3 specific

  • Fix interlaced h264 playback
  • Display HDD utilization in sysinfo overlay

Raspberry Pi specific

  • Fix broken AV sync when streaming from Tvheadend

Showtime Remote: Showtime Remote (via

Use your Android phone as a remote for Showtime (


  • Use the integrated searchbar to search in Showtime
  • Toggle buttons for play/pause and mute button
  • Long press on button, long press Menu shows ItemMenu
  • Use profiles if you are running Showtime on multiple devices

Next version

  • No Home or About screen
  • Simply switch between profiles in Navigation or Media

A short summary of the features:

  • Searchbar in the topbar at the navigation page, uses the searchbar in Showtime.
  • All icons used for the buttons are now bigger. Maybe even bigger is needed for 7"+ screens??
  • Play/Pause button toggles icon on press (same goes for mute button).
  • Long click on Menu will show you the ItemMenu.
  • Press and hold navigation buttons (up, down, left, right) for faster navigation.
  • Setting: Profiles, add a new profile with your current network settings. Useful if you are running Showtime on more than one device.
  • Setting: Choose which page you want to show at startup, i.e. (Home, Navigation, Media, Settings or About).
  • Setting: Choose to get a notification when there is a new release/commit to GitHub.
  • Custom launcher icon!!!! Please tell me what you think, this is the first icon I have ever made. Used svg, really liked it since I don't know how to draw but I know math and xml The source code for the launcher is under icons at github.

So please try it out, tell me what you think and report any problems you may find
If you have any ideas for future features please let me know.

Update: From Claes Hallstrom: v0.0.6 out now

This release introduces a ViewPager to switch between Navigation and Media instead of the previous NavigationDrawer. This version should also work with Android 3.0 and up, previously it only worked on 4.1 and up.

  • Profiles bugfix and lower minSdkVersion

From aldostools: Showtime Remote webGUI 1.1

[Register or Login to view code]

Download: Source Code / Showtime_Remote_webGUI_1.1.apk

With *a lot* of improvements (more commands, more keyboard commands, GUI animation, button effects, better browser support, etc.)

I have been messing with an online tool to create apps for different platforms from a webpage and created this "native" app for Android.

Also Claes Hallstrom has released his Showtime Remote 1.0 for Android on Google Play store ( with Binaries and Source Code.

The PS3 Remote Controller theme has been updated with some graphical enhancements: tooltips for keyboard shortcuts, visual button feedback, less flicker, remapped some keys, webMAN GUI is shown in portrait mode (Android), ability to use virtual pad and view webMAN:

[Register or Login to view code]

The "PS3 Remote Controller" is an alternative theme of the PS3 webPAD / Movian Remote (formerly Showtime Remote webGUI) that now supports the remote control of the XMB, media players, homebrews (e.g. backup managers) and games via webMAN MOD 1.43.02 and above.

[Register or Login to view code]

Finally, from deank comes Showtime for multiMAN v4.09.021 with the following notes:

Save the downloaded file as: /dev_hdd0/game/BLES80608/USRDIR/SHOWTIME.SELF

  • Added: XMB videos and last folder visible in Showtime
  • Added: Return to multiMAN when using the EXIT icon in to top right corner of main Showtime Interface

Since version 02.05.00 of multiMAN you can update your SHOWTIME within multiMAN, by going to XMMB Video tab -> Press [TRIANGLE] while "Start Showtime" is selected -> Update.

You can also update your showtime.self by deleting it from multiMAN's USRDIR folder and play a video - you'll be prompted to download the updated version. Be advised that in multiMAN versions 04.00.00+ SHOWTIME.SELF is located under USRDIR/sys folder.


You have to install the official CEX/CFW standalone version of Showtime [DEX] BEFORE starting multiMAN DEX for the first time.

More PlayStation 3 News...

#562 - BOUNDINWOD - December 18, 2014 // 12:11 am
Excellent homebrew

#561 - justking1 - December 18, 2014 // 12:06 am
justking1's Avatar
nice releases thanks