Technology moves fast! ⚡ Don't get left behind.🚶 Subscribe to our mailing list to keep up with latest and greatest in open source projects! 🏆


Subscribe to our mailing list

ozone-wayland

Wayland implementation for Chromium Ozone classes

Subscribe to updates I use ozone-wayland


Statistics on ozone-wayland

Number of watchers on Github 159
Number of open issues 44
Average time to close an issue 21 days
Main language C++
Average time to merge a PR 3 days
Open pull requests 5+
Closed pull requests 31+
Last commit over 2 years ago
Repo Created almost 6 years ago
Repo Last Updated over 1 year ago
Size 2.29 MB
Organization / Authorintel
Latest Release45.0.2454.37
Contributors20
Page Updated
Do you use ozone-wayland? Leave a review!
View open issues (44)
View ozone-wayland activity
View on github
Fresh, new opensource launches 🚀🚀🚀
Trendy new open source projects in your inbox! View examples

Subscribe to our mailing list

Evaluating ozone-wayland for your project? Score Explanation
Commits Score (?)
Issues & PR Score (?)

Introduction

Ozone-Wayland is the implementation of Chromium's Ozone for supporting Wayland graphics system. Different projects based on Chromium/Blink like the Chrome Browser, Chrome OS, Crosswalk, among others can be enabled now using Wayland.

Alt text

Contents

Design

Ozone-Wayland architecture can be found here.

Howto

We use Ubuntu 14.04 LTS (Trusty Tahr), 32/64-bit but a kernel from Raring though. One can install it pretty easily just sudo apt-get install linux-generic-lts-raring. This version is needed for using Mesa master 9.3.0-devel, a requirement for Weston. Besides, make sure you have at least 25 GB of disk space to store all the sources and a few targets to be compiled (with debugging symbols).

Firstly you'd need to set up the Wayland libraries (version >= 1.4.0), and the Weston reference compositor that you will be running Chromium onto. The information on Wayland's web page should be enough for doing so:

http://wayland.freedesktop.org/building.html

Please note that at the moment support for Wayland's XDG Shell protocol only works with the 1.6 series.

Make sure everything is alright now, setting up the environment variable $XDG_RUNTIME_DIR and playing a bit with the Wayland clients, connecting them on Weston.

Then you'd need some distribution tools and development packages :

  $ sudo apt-get install gperf libnss3-dev libpulse-dev libdbus-1-dev libexif-dev libpci-dev libpango1.0-dev libelf-dev libcap-dev libasound2-dev libssl-dev libcups2-dev libgconf2-dev libgnome-keyring-dev

If you are running a 64-bit Ubuntu distribution, you'd additionally need :

  $ sudo apt-get install ia32-libs

Then on Chromium's side, we need to setup Chromium's tree together with the Ozone-Wayland implementation. For that you need to use gclient to clone Ozone-Wayland; but first you need to download depot_tools and configure it. Say your Chromium top-level will be in ~git/chromium, you will need:

  $ mkdir -p ~git/chromium
  $ cd ~git/chromium
  $ git clone https://chromium.googlesource.com/chromium/tools/depot_tools.git
  $ export PATH=`pwd`/depot_tools:"$PATH"

We support HWA Video Decoding using Libva and VAAPI. To enable the support one needs to build and install these packages. Note: This is still work in progress. You can skip these dependencies if you dont need this support.

One needs to set the installation prefix $WLD(Below) to be same as the one used for setting up Wayland environment.

  $ git clone git://anongit.freedesktop.org/libva
  $ cd libva/
  $ git checkout libva-1.5.0
  $ ./autogen.sh --prefix=$WLD
  $ make -j4 && make install
  $ git clone git://anongit.freedesktop.org/vaapi/intel-driver
  $ cd intel-driver/
  $ git checkout 1.5.0
  $ ./autogen.sh --prefix=$WLD
  $ make -j4 && make install

now we can clone Ozone-Wayland and fetch all the dependencies of it, including Chromium itself:

  $ gclient config ssh://git@github.com/01org/ozone-wayland.git --name=src/ozone --deps-file ".DEPS.git"
  $ gclient sync 
  $ export GYP_DEFINES='clang=0 use_sysroot=0 component=static_library linux_use_bundled_gold=0 use_ozone=1 ozone_auto_platforms=1 ozone_platform_wayland=1 use_xkbcommon=1' 

If you want to enable HWA Video Decoding, you need to have the following GYP_DEFINES:

   $ export GYP_DEFINES='clang=0 use_sysroot=0 component=static_library linux_use_bundled_gold=0 use_ozone=1 ozone_auto_platforms=1 ozone_platform_wayland=1 use_xkbcommon=1 proprietary_codecs=1 ffmpeg_branding=Chrome'

It may take a considerable time for downloading the trees. If everything went fine, now we're able to build.

For now, also apply some patches:

  ./src/ozone/patches/patch-chromium.sh

TIP: to speed up debug builds you can disable Blink debugging symbols by setting remove_webcore_debug_symbols=1 in GYP_DEFINES.

Note that in Chromium, gyp uses pkg-config for checking where are Wayland libraries on the system, so double check that you are not mixing some that was already there with latest that you just got and compiled from git.

TIP: if you followed Wayland's web page instructions, then you probably want to set the PKG_CONFIG_PATH variable as $HOME/install and add it in your .bashrc to be as default.

Now we can conclude compiling a few targets like Content Shell (content_shell) or the Chromium browser:

  $ cd src/
  $ ./build/gyp_chromium
  $ ninja -C out/Debug -j16 chrome

(if you get any build errors, please execute git log and verify that the first commit line matches the chromium_rev one found in src/ozone/.DEPS.git. If it doesn't, run git checkout $ID, apply the patches and compile again)

That's all. At this point you should be able to connect Chromium on Weston using:

  $ ~/git/weston/src/weston &
  $ ./out/Debug/chrome --no-sandbox --ignore-gpu-blacklist

Sandboxing

If you want to enable Sandboxing provided by Chromium, please follow the instructions from here: https://code.google.com/p/chromium/wiki/LinuxSUIDSandbox

Working with Ozone-Wayland Release branch:

Instructions can be found here: https://github.com/01org/ozone-wayland/wiki/Releasing#wiki-releasebranch

Gardening

We pin chromium to a particular revision in order to keep upstream changes from breaking our build. Updating that revision to a newer one and fixing any resulting breakage is called gardening. To sync a different version of chromium, update chromium_rev in .DEPS.git to a newer revision then run the gclient sync again. Fix any build errors, and commit both changes.

Contributing

Instructions can be found here: https://github.com/otcshare/ozone-wayland/wiki

License

Ozone-Wayland's code uses the BSD license (check the LICENSE file in the project).

Tips

Build Wayland & Weston

If you want to build and run ozone-wayland, you should install wayland and weston first. Here is the instruction using jhbuild.

Install jhbuild

Please refer to this instruction: https://developer.gnome.org/jhbuild/stable/getting-started.html.en

Install dependent packages using apt-get

$ cd ~/chromium/src
$ ozone/tools/jhbuild/install-dependencies

Build and install Wayland & Weston

$ cd ozone/tools/jhbuild
$ jhbuild -f wayland.jhbuildrc

Run Weston

$ jhbuild -f wayland.jhbuildrc shell
$ cd ~/chromium/src
$ out/wayland/root/bin/weston --fullscreen

Run ozone-wayland in Weston

Open a weston terminal

$ out/Release/chrome --no-sandbox
ozone-wayland open issues Ask a question     (View All Issues)
  • almost 3 years Multiple definition link error
  • about 3 years Support for nomultilib distros
  • about 3 years Upstream ozone-wayland to Chromium
  • about 3 years Chromium window cannot be moved in weston
  • over 3 years Unfinished code in DesktopDragDropClientWayland::OnDragDrop
  • over 3 years Chromium webpage displayed on wayland surface for a moment and crashes
  • over 3 years Chromium with ozone-wayland crashes on startup
  • over 3 years Add webOS support
  • over 3 years Cannot run chromium!
  • over 3 years gclient runhooks Error
  • over 3 years Building Chromium packages
  • over 3 years App menu in wrong posistion when browser is full screen
  • over 3 years Cannot aply patches
  • over 3 years Linking problems against wayland and cairo
  • almost 4 years Remove packaging/rpm
  • almost 4 years Add gtk3 support
  • almost 4 years Backspace removes two characters
  • almost 4 years "hamburger" second-level popups make the cursor vanish?
  • almost 4 years Cursor images are offset
  • about 4 years Selecting text by clicking and dragging does not work
  • about 4 years Support multiple seats
  • about 4 years wayland-ozone/aura the other way round possible?
  • over 4 years [Tizen] Allow to unminimize window using Restore
  • over 4 years Touch input doesn't work in the main window.
  • almost 5 years Implement HIDE/SHOW states
  • almost 5 years Cleanup code under Media\
  • almost 5 years provide permanent fix for invisible windows
  • almost 5 years Add UI for FilePicker.
  • almost 5 years The render process uses more than 40% of CPU power when running CSS 3D transforms with animations on Tizen IVI
  • over 5 years Input: implement dragging widgets with the titlebar
ozone-wayland open pull requests (View All Pulls)
  • Add wayland, wayland-protocol dependency on mesa module
  • Jhbuild
  • TIZEN: Use xdg_surface_needs_attention() to restore minimized window
  • Add some documentation for drag and drop
  • Rebase m53
ozone-wayland list of languages used
ozone-wayland latest release notes
45.0.2454.37 Milestone-Trask

Release based on Chromium M45

40.0.2214.8 Milestone ThanksGiving.

Release Date: 15 November 2014.

Based on Chromium- Version: 40.0.2214.8. Channel: Dev. Branch: 2214. Revision: 5548873941a163dc058d9bd58fea2b90b9d162e3.

New Features enabled in this release: Support for Sandboxing.

Fixed Issues: Full list can be found here: https://github.com/01org/ozone-wayland/issues?q=milestone%3AThanksGiving+is%3Aclosed

Known Issues: 1) Missing Drag and Drop support.

The release has been tested on Ubuntu 12.04, x86-64 against the following dependencies: 1) Wayland and Weston. Version: 1.5.90 Wayland Revision:b24fa4c8216e3f0f7b644c7b8c6949925f19ada9 Weston Revision:850a514137c13771cb26841d596a2b282898dcf1 2) Mesa. Version: 10.3.0-devel Revision:a1853eaea7fa5caf59b52567cc49f964ce5293ec 3) DRM. Revision:d9ce09de12131fa8c5ff2d7c2dbd6b61d8a5fd14 4) GLProto. Revision:8e3db42d67a0035bb16d16da28bd5eea7a269178 5) libunwind. Revision:4791a76d26ffb65d56aa16f6b760aa1ee7abdc14 6) libxkbcommon. Revision:76016d5121daff3391c76313a8c609a985c1eb03 7) Cairo. Revision:932548ef25864958ef966ffe83e7c945c3ff3cd4 8) Pixman. Revision:6d2cf40166d81bfc63108504c8022dc4fec37ff5

39.0.2171.10 Milestone-Autumn

Milestone Autumn. Release Date: 5 October 2014.

Based on Chromium- Version: 39.0.2171.10. Channel: Beta. Branch: 2171. Revision: 1d3292c55cd3ff43a186d43e6febc626de859467.

Fixed Issues: Full list can be found here: https://github.com/01org/ozone-wayland/issues?q=milestone%3AAutumn+is%3Aclosed

Known Issues: 1) Missing Drag and Drop support.

The release has been tested on Ubuntu 12.04, x86-64 against the following dependencies: 1) Wayland and Weston. Version: 1.5.90 Wayland Revision:b24fa4c8216e3f0f7b644c7b8c6949925f19ada9 Weston Revision:850a514137c13771cb26841d596a2b282898dcf1 2) Mesa. Version: 10.3.0-devel Revision:a1853eaea7fa5caf59b52567cc49f964ce5293ec 3) DRM. Revision:d9ce09de12131fa8c5ff2d7c2dbd6b61d8a5fd14 4) GLProto. Revision:8e3db42d67a0035bb16d16da28bd5eea7a269178 5) libunwind. Revision:4791a76d26ffb65d56aa16f6b760aa1ee7abdc14 6) libxkbcommon. Revision:76016d5121daff3391c76313a8c609a985c1eb03 7) Cairo. Revision:932548ef25864958ef966ffe83e7c945c3ff3cd4 8) Pixman. Revision:6d2cf40166d81bfc63108504c8022dc4fec37ff5

Other projects in C++