The forum

PlayOnLinux Interface for XBMC/Kodi

Author Replies
amherrmann Monday 23 February 2015 at 14:16
amherrmannAnonymous

Hi,

currently I do some experiments embedding emulators, such as psx into my livingroom entertainment pc. Would be great do use PlayOnlinux in a TV-Interface like XBMC/Kodi

Has anyone considered to start into a project like this.

IMHO generelly this should be possible, at least basically. But of course this would be some extra efford to create a downloadmanager and make the installscripts work in this environment.

I just took a little view on the pol code. As far as I see install-scripts will be managed by wrapper.py so there should be a chance to keep the installscripts-code untouched but working in another view?

Please share your thoughts with me about the issue creating alternative TV-UI for POL :-)

Best wishes



Comparing proprietary software and open-source software means comparing marketing and evolution. Which one is lasting?
Ronin DUSETTE Monday 23 February 2015 at 18:07
Ronin DUSETTE
Admin

I am just curious as to why, though. I think it would further-complicate an already complicated concept (Wine/POL), but if you want to code it up, more power to ya. :)


Please:
Post debug logs & full computer specs in first post
No private messages for general help, use the forums
Read the wiki, Report broken scripts
amherrmann Tuesday 24 February 2015 at 14:20
amherrmannAnonymous

Hi Ronin,

well the why question is due I would like to see playonlinux working on a TV form factor, just like Steams big picture mode is an alternative interface to desktop.

And of course this would make things more complicated, but it depends on how visuals are indipendent from core functionality, e g. is it possible to process install scripts in a differend GUI?

I think most of the things, except the user-build scripts can be managed outside from std. POL interface. In my wineport-project I managed to make usage of playonlinux without the need of starting the POL application itself.

But this was quite easy due I could use POL funcitonality by playonlinux-bash which enables me to use the Scripting capabilities of POL.

So this could be the hardest part. I will need to understand how these bash functions are parsed within the wxWindow-Interfaces.

Generally I think it would not make sense to build an alternative GUI inside the existing code. This would surely mess things up.

My thought is more to adapt POL-functionality inside another UI, in this case a Kodi Plugin.

Any tips are welcome. Especially I would be interested in how POL-Scripts are parsed and make them display in wxWidgets. Just the general Idea and/or code linking would be very helpful to understand the underlying principle.

Best wishes,

Edited by amherrmann


Comparing proprietary software and open-source software means comparing marketing and evolution. Which one is lasting?
Ronin DUSETTE Tuesday 24 February 2015 at 16:42
Ronin DUSETTE
Admin

I would start studying the pol source code.


Please:
Post debug logs & full computer specs in first post
No private messages for general help, use the forums
Read the wiki, Report broken scripts
petch Tuesday 24 February 2015 at 20:27
petch
Developer

Hi,

My understanding of how it works:

PlayOnLinux statements are Bash shell functions, and the ones that need to interact with the GUI part (take the ones from lib/setupwindow.lib for instance) contain a call to the ncs function, example:

POL_SimpleMessage ()
{
    # Shows a text box
    # Usage: POL_SetupWindow_textbox [message] [title] [default value]
    # Result is sent in $APP_ANSWER variable

    echo "$POL_COOKIE   SimpleMessage   $(POL_Untab "$1")" | ncs "$POL_HOST" "$POL_PORT"
}

which is defined near the top of this same file as

ncs()
{
    # Silent netcat
    ncns "$@" > /dev/null 2> /dev/null
}
ncns()
{
    
    if [ "$POL_OS" = "Mac" -o "$(POL_Config_Read FORCE_LEGACY_NETCAT)" = "TRUE" ]; then
        nc "$@"
    else
        nc -q -1 "$@" 2> /dev/null || nc "$@"
        # Differents possibilities
    fi
}

To keep it short, they have at their core a call to the nc command (aka netcat), to send some line of data over a TCP socket to a server in the GUI

To see this other side, we have to head to python/gui_server.py, at gui_server.initServer() for the creation of the server socket (and the creation of $POL_COOKIE value that will be used to authorize connections), gui_server.run() for the main loop, gui_server;handler()/gui_server.interact()/MainWindow.SetupWindowTimer_SendToGui() for delivery to MainWindow.SetupWindowTimer_action variable

Then MainWindow.SetupWindowAction(), periodically called by a timer, polls this variable and calls gui_server.readAction() when it contains something.

This is where the received command is finally parsed and dispatched to server objects as method calls.

amherrmann Tuesday 24 February 2015 at 22:38
amherrmannAnonymous

Hi petch,

thousand thanks for giving me this clear introduction. This was exactly what I needed for studying the code: A startpoint and a general idea of how things work together.

Great to hear, that the core and the UI is working in a client server manner, so it really should be possible to create a UI-Server which will work on another PORT or so.

By creating a script like playonlinux-bash which sources a different POL_PORT it should be possible to display the data in another UI.

Thanks again this was really valuable for me :-)


Comparing proprietary software and open-source software means comparing marketing and evolution. Which one is lasting?
Quentin PÂRIS Thursday 26 February 2015 at 14:49
Quentin PÂRIS
Admin

Just to add a small thing:

I'm trying to create a new interface for POL for the next versions. The idea is to make POL's code, including this protocol more standard. I want to create a Rest/JSON server/client system instead of raw sockets.

https://github.com/qparis/phoenicis.

A lot of things need to be implemented though.

Edited by Tinou