Difference between revisions of "Luna Next"

From WebOS-Ports
Jump to navigation Jump to search
m (→‎Components: Correct a link)
 
(26 intermediate revisions by 5 users not shown)
Line 1: Line 1:
 
= Overview =
 
= Overview =
  
FIXME
+
In short Luna Next is a approach to recreate the webOS user interface based on future ready technologies like [http://qt-project.org/wiki/Qt_5.0 Qt5] and [http://wayland.freedesktop.org/ Wayland]. The Luna UI as part of the Open webOS project caused us a lot of problems in porting it to other devices without a lot of rework so we decided to recreate the UI completely. Recreation doesn't mean we're dropping all the code. We will reuse code as wherever possible to reduce the amount of work.
  
= Required Features =
+
Luna Next will allow you to write the entire user interface in [https://en.wikipedia.org/wiki/QML QML]. We're implementing a reusable core with a shell on top of it. The shell itself will be replacable so the community has a very easy way to adjust the UI to their needs based on a stable core. However the card UI is going to be implemented as the default shell and will be installed in all offical supported webOS ports distributions. If things don't suit the default shell implementation a new shell can be easily created and distributed through preware by the community.
 +
 
 +
We're doing the work in a agile mine and have a board at https://trello.com/board/luna-next/51d856a66054b8c353008a10#
 +
 
 +
If you want to help us with the vision please [[Communications|contact]] us!
 +
 
 +
= Development =
 +
 
 +
* [[Luna_Next_Remote_WebApplication_Debugging|Remote debugging of web applications]]
 +
 
 +
= Features =
 +
 
 +
Required:
  
 
* card-style window management
 
* card-style window management
Line 10: Line 22:
 
* system menu
 
* system menu
 
* launcher bar
 
* launcher bar
 +
* (new) device menu
 +
{|
 +
|[[File:NewDeviceMenu-preview1.png|100px|thumb|none|New Device Menu Screenshot 1]]||[[File:NewDeviceMenu-preview2.png|100px|thumb|none|New Device Menu Screenshot 2]]||[[File:NewDeviceMenu-preview3.png|100px|thumb|none|New Device Menu Screenshot 3]]||[[File:NewDeviceMenu-preview4.png|100px|thumb|none|New Device Menu Screenshot 4]]||[[File:NewDeviceMenu-preview5.png|100px|thumb|none|New Device Menu Screenshot 5]]
 +
|}
  
= Optional Features =
+
Optional:
  
 
* card stacking
 
* card stacking
 +
{|
 +
|[[File:cardstack.jpg|100px|thumb|none|Card Stacking]]
 +
|}
 +
 +
* (stacked/multi-layer) wave launcher [http://www.youtube.com/watch?v=dcyJLaK4YBI video]
 +
{|
 +
|[[File:wave-launcher-layered.JPG|100px|thumb|none|Stacked Wave Launcher]]||[[File:multi-layer-wave-launcher.png|100px|thumb|none|Multi Layer Wave Launcher]]
 +
|}
 +
* WidgetDeck
 +
{|
 +
|[[File:widgetdeck.jpg|100px|thumb|none|Widget Deck]]
 +
|}
 +
* Minimize
 +
{|
 +
|[[File:minimize.jpg|100px|thumb|none|Minimize]]
 +
|}
 +
* Side-by-side card view [http://cdn1.sbnation.com/imported_assets/903885/PreSpecs_medium.jpg Side-by-side card view sample]
 +
 +
= Components =
 +
 +
The following components are part of the Luna Next stack:
 +
 +
* https://github.com/webOS-ports/luna-next
 +
* https://github.com/webOS-ports/luna-next-cardshell
 +
** The implementation of the card based UI
 +
* https://github.com/webOS-ports/luna-webappmanager
 +
* https://github.com/webOS-ports/luna-sysmgr-common
 +
** based on https://github.com/openwebos/luna-sysmgr-common but ported to qt5 and extended with more things from luna-sysmgr
 +
* https://github.com/webOS-ports/luna-sysmgr
 +
** Stripped down version of the original luna-sysmgr which doesn't contain any UI elements and ported to qt5
 +
 +
= Supported web API's =
 +
 +
Overal application framework is cordova (https://cordova.apache.org/).
 +
 +
== webOS specific ==
 +
 +
* Luna Service 2 API
 +
 +
* PalmSystem DOM node
 +
** properties:
 +
*** launchParams (string)
 +
*** locale (string)
 +
*** localeRegion (string)
 +
*** timeFormat (string)
 +
*** timeZone (string)
 +
*** identifier (string)
 +
*** version (string)
 +
** methods:
 +
*** paste()
 +
*** copiedToClipboard()
 +
*** pastedFromClipboard()
 +
*** shutdown()
 +
*** activate()
 +
*** deactivate()
 +
*** stagePreparing()
 +
*** stageReady()
 +
*** show()
 +
*** hide()
 +
*** keyboardShow()
 +
*** keyboardHide()
 +
 +
* db8
 +
** http://www.openwebosproject.org/docs/developer_reference/data_types/db8/
 +
* Connection Manager
 +
** http://www.openwebosproject.org/docs/developer_reference/service_apis/connection_manager
 +
* System Properties
 +
** http://www.openwebosproject.org/docs/developer_reference/service_apis/system_properties
 +
* System Services
 +
** http://www.openwebosproject.org/docs/developer_reference/service_apis/system_services
 +
* Activity Manager
 +
** http://www.openwebosproject.org/docs/developer_reference/service_apis/activity_manager
 +
 +
== Standard web API's ==
 +
 +
* Fullscreen (webkit)
 +
** https://dvcs.w3.org/hg/fullscreen/raw-file/tip/Overview.html
 +
** https://developer.mozilla.org/en-US/docs/Web/Guide/DOM/Using_full_screen_mode
 +
* Gelocation (webkit)
 +
** http://www.w3.org/TR/geolocation-API/
 +
* Video (webkit / html5)
 +
** http://www.w3.org/TR/html5/embedded-content-0.html#video
 +
* Audio (webkit / html5)
 +
** http://www.w3.org/TR/html5/embedded-content-0.html#audio
 +
* WebSockets (webkit / html5)
 +
** http://dev.w3.org/html5/websockets/
 +
* Offline Applications (webkit / html5)
 +
** http://www.w3.org/TR/html5/browsers.html#offline
 +
* File API (webkit / html5)
 +
** http://dev.w3.org/2006/webapi/FileAPI/#filereader-interface
 +
* IndexedDB (webkit???)
 +
** http://www.w3.org/TR/IndexedDB/
 +
* Web Notifications (webkit)
 +
** http://www.w3.org/TR/notifications/
 +
 +
= Development on a desktop machine =
 +
== Requirements ==
 +
A standard Qt 5.1 SDK installation is sufficient, as long as QtCreator and the QML toolchain are present.
 +
 +
== Working with the QML description of Luna Next card UI ==
 +
First, get a copy of the luna-next-cardshell repository:
 +
git clone https://github.com/webOS-ports/luna-next-cardshell
 +
 +
Then, simply open the qmlproject file in the qml subdirectory. You should be able to run the QML description of luna-next out of the box.
 +
 +
== Expect results ==
 +
The QML description of luna-next does '''not''' include the C++ module which lets it communicate with other components of WebOS. Do not expect any realistic result for the answers provided by the "LunaNext" QML module, as this desktop environment actually uses a fake stub LunaNext module for testing purposes.

Latest revision as of 00:18, 11 November 2015

Overview

In short Luna Next is a approach to recreate the webOS user interface based on future ready technologies like Qt5 and Wayland. The Luna UI as part of the Open webOS project caused us a lot of problems in porting it to other devices without a lot of rework so we decided to recreate the UI completely. Recreation doesn't mean we're dropping all the code. We will reuse code as wherever possible to reduce the amount of work.

Luna Next will allow you to write the entire user interface in QML. We're implementing a reusable core with a shell on top of it. The shell itself will be replacable so the community has a very easy way to adjust the UI to their needs based on a stable core. However the card UI is going to be implemented as the default shell and will be installed in all offical supported webOS ports distributions. If things don't suit the default shell implementation a new shell can be easily created and distributed through preware by the community.

We're doing the work in a agile mine and have a board at https://trello.com/board/luna-next/51d856a66054b8c353008a10#

If you want to help us with the vision please contact us!

Development

Features

Required:

  • card-style window management
  • notifications
  • gesture area
  • system menu
  • launcher bar
  • (new) device menu
New Device Menu Screenshot 1
New Device Menu Screenshot 2
New Device Menu Screenshot 3
New Device Menu Screenshot 4
New Device Menu Screenshot 5

Optional:

  • card stacking
Card Stacking
  • (stacked/multi-layer) wave launcher video
Stacked Wave Launcher
Multi Layer Wave Launcher
  • WidgetDeck
Widget Deck
  • Minimize
Minimize

Components

The following components are part of the Luna Next stack:

Supported web API's

Overal application framework is cordova (https://cordova.apache.org/).

webOS specific

  • Luna Service 2 API
  • PalmSystem DOM node
    • properties:
      • launchParams (string)
      • locale (string)
      • localeRegion (string)
      • timeFormat (string)
      • timeZone (string)
      • identifier (string)
      • version (string)
    • methods:
      • paste()
      • copiedToClipboard()
      • pastedFromClipboard()
      • shutdown()
      • activate()
      • deactivate()
      • stagePreparing()
      • stageReady()
      • show()
      • hide()
      • keyboardShow()
      • keyboardHide()

Standard web API's

Development on a desktop machine

Requirements

A standard Qt 5.1 SDK installation is sufficient, as long as QtCreator and the QML toolchain are present.

Working with the QML description of Luna Next card UI

First, get a copy of the luna-next-cardshell repository: git clone https://github.com/webOS-ports/luna-next-cardshell

Then, simply open the qmlproject file in the qml subdirectory. You should be able to run the QML description of luna-next out of the box.

Expect results

The QML description of luna-next does not include the C++ module which lets it communicate with other components of WebOS. Do not expect any realistic result for the answers provided by the "LunaNext" QML module, as this desktop environment actually uses a fake stub LunaNext module for testing purposes.