Chromoting, also known as
Chrome Remote Desktop,
allows one to remotely control a distant machine, all from within the Chromium
browser. Its source code is located in the remoting/
folder in the Chromium
codebase. For the sake of brevity, we'll assume that you already have a
pre-built copy of Chromium (or Chrome) installed on your development computer.
[TOC]
Before you can compile the code, you must obtain an API key to allow it to access the federated Chrome Remote Desktop API.
- Join the chromium-dev list, which can be found at https://groups.google.com/a/chromium.org/forum/#!forum/chromium-dev. (This step is required in order to gain access to the Chromoting API.)
- Visit the Google APIs console at https://code.google.com/apis/console.
- Use the
API Project
dropdown to create a new project with a name of your choice. - Click on
APIs & Auth > APIs
. - Search for
Chrome Remote Desktop API
. - Click on the
Chrome Remote Desktop API
search result. - Click on
Enable API
. - Click on
APIs & Auth > Credentials
. - Click on
Add Credentials
. - Choose
OAuth 2.0 client ID
. - Choose
Chrome App
. - Under application id, enter
ljacajndfccfgnfohlgkdphmbnpkjflk
.
- Use the
If you've already checked out a copy of the browser's codebase, you can skip
this section, although you'll still need to run gclient runhooks
to ensure you
build using the API keys you just generated.
- Install the build dependencies.
- Install the depot_tools utilities, a process that is documented at https://dev.chromium.org/developers/how-tos/install-depot-tools.
- Download the Chromium source code by running:
$ fetch chromium --nosvn=True
If you want to remote into a (Debian-based) GNU/Linux host, follow these steps to compile and install the host service on that system. As of the time of writing, you must compile from source because no official binary package is being distributed.
-
Start in the
src/
directory that contains your checkout of the Chromium code. -
Build the Chromoting host binaries:
$ autoninja -C out/Release remoting_me2me_host remoting_start_host \ remoting_native_messaging_host remoting_native_messaging_manifests
(
autoninja
is a wrapper that automatically provides optimal values for the arguments passed toninja
.) -
When the build finishes, move into the installer directory:
$ cd remoting/host/installer/
-
Generate a DEB package for your system's package manager:
$ linux/build-deb.sh
-
Install the package on your system:
$ sudo dpkg -i *.deb
-
The next time you use the Chromoting extension from your browser, it should detect the presence of the host service and offer you the option to
Enable remote connections
.- If the Web app doesn't properly detect the host process, you may need to
create a symlink to help the plugin find the native messaging host:
$ sudo ln -s /etc/opt/chrome /etc/chromium
- If the Web app doesn't properly detect the host process, you may need to
create a symlink to help the plugin find the native messaging host:
(NB: If you compile the host service from source and expect to configure it using the browser extension, you must also compile the latter from source. Otherwise, the package signing keys will not match and the Web app's OAuth2 token will not be valid within the host process.)
The Web app is the Chromoting system's main user interface, and allows you to connect to existing hosts as well as set up the host process on the machine you're currently sitting at. Once built, it must be installed into your browser as an extension.
-
Start in the
src/
directory that contains your checkout of the Chromium code. -
Build the browser extension (Be sure to replace the substitutions denoted by angled braces.):
$ GOOGLE_CLIENT_ID_REMOTING_IDENTITY_API=<client id> \ autoninja -C out/Release remoting_webapp
-
Install the extension into your Chromium (or Chrome) browser:
- Visit the settings page [chrome://extensions].
- If it is unchecked, tick the
Developer mode
box. - Click
Load unpacked extension...
, then navigate toout/Release/remoting/remoting.webapp.v2/
within your code checkout. - Confirm the installation, open a new tab, and click the new app's Chromoting icon.
- Complete the account authorization step, signing into your Google account if you weren't already.
If you want to use your Android device to connect to your Chromoting hosts, follow these steps to install the client app on it. Note that this is in the very early stages of development. At the time of writing, you must compile from source because no official version is being distributed.
- Follow all the instructions under the
Getting the code
andInstall prerequisites
sections of: https://www.chromium.org/developers/how-tos/android-build-instructions - Move into the
src/
directory that contains your checkout of the Chromium code. - Build the Android app:
$ autoninja -C out/Release remoting_apk
- Connect your device and set up USB debugging:
- Plug your device in via USB.
- Open the Settings app and look for the
Developer options
choice.- If there is no such entry, open
About phone
, tapBuild number
7 times, and look again.
- If there is no such entry, open
- Under
Developer options
, toggle the main switch toON
and enableUSB debugging
.
- On your machine and still in the
src/
directory, run:$ build/android/adb_install_apk.py --apk=out/Release/apks/Chromoting.apk
- If your Android device prompts you to accept the host's key, do so.
- The app should now be listed as Chromoting in your app drawer.
See the [chromoting_android_hacking.md] guide for instructions on viewing the Android app's log and attaching a debugger.