Skip to content

Instantly share code, notes, and snippets.

@newhouseb
Last active September 19, 2019 05:05
Show Gist options
  • Save newhouseb/9f85c753906389a0f7851337e595ef37 to your computer and use it in GitHub Desktop.
Save newhouseb/9f85c753906389a0f7851337e595ef37 to your computer and use it in GitHub Desktop.
Running Chrome[OS] without X11 on Desktop Linux

Set your build args to the following

use_ozone=true
ozone_platform_gbm=true
target_os="chromeos" # Ideally we wouldn't need this, but I think it compiles in a whole bunch of random things that otherwise are included that we need (like the compositor)

On machines with intel graphics cards, add:

use_intel_minigbm=true

On AMD machines, you probably want: use_amdgpu_minigbm, although I haven't test this.

On Nvidia-only machines, you're more or less fucked because Nvidia refuses to support GBM. If you have a consumer Intel card, you likely have and integrated Intel GPU you can use.

Other nice things for reasonable build times:

use_jumbo_build=true
enable_nacl=false
is_debug=false

Add the following to .gclient in your chrome checkout

target_os = ['chromeos']

(note, you'll need to run gclient sync and maybe futz around with some java SDKs)

Next, compile things and use the following command to run them:

sudo \ # We need sudo because chromium on ChromeOS expects to be able to read a bunch of /dev/input events
  EGL_PLATFORM=surfaceless \ # Tells chromium to not try to use GLX or anything else to get an EGL surface
  [your chrome binary] \
  --ozone-platform=gbm \ # Use GBM to display graphics (versus says X11 or Wayland)
  --no-sandbox \ # If we run as root, sandboxing doesn't work
  --force-system-compositor-mode # This is needed to chrome actually takes over the display (with KMS) and shows something

Other handy things you can add:

--kiosk # Kills all the chromium UI
--app="http://bennewhouse.com" # Loads the given app
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment