1# ChromeVox on Desktop Linux
2
3## Starting ChromeVox
4
5On Chrome OS, you can enable spoken feedback (ChromeVox) by pressing Ctrl+Alt+Z.
6
7If you have a Chromebook, this gives you speech support built-in. If you're
8building Chrome from source and running it on desktop Linux, speech and braille
9won't be included by default. Here's how to enable it.
10
11## Compiling the Chrome OS version of Chrome
12
13First follow the public instructions for
14[Chrome checkout and build](https://www.chromium.org/developers/how-tos/get-the-code).
15
16Edit `.gclient` (in `chromium/`) and at the bottom add:
17
18```
19target_os = ["chromeos"]
20```
21
22Run `gclient sync` to update your checkout.
23
24Then create a GN configuration with "chromeos" as the target OS, for example:
25
26```
27gn args out/cros
28```
29
30...in editor, add this line:
31
32```
33target_os = "chromeos"
34is_component_build = true
35is_debug = false
36```
37
38Note: Only ```target_os = "chromeos"``` is required, the others are recommended
39for a good experience but you can configure Chrome however you like otherwise.
40Note that Native Client is required, so do not put `enable_nacl = false` in
41your file anywhere!
42
43Now build Chrome as usual, e.g.:
44
45```
46autoninja -C out/cros chrome
47```
48
49And run it as usual to see a mostly-complete Chrome OS desktop inside
50of a window:
51
52```
53out/cros/chrome
54```
55
56By default you'll be logged in as the default user. If you want to
57simulate the login manager too, run it like this:
58
59```
60out/cros/chrome --login-manager
61```
62
63You can run any of the above under it’s own X session (avoiding any window
64manager key combo conflicts) by doing something like
65
66```
67startx out/cros/chrome
68```
69
70NOTE: if you decide to run Chrome OS under linux within a window manager, you
71are subject to its keybindings which will most certainly conflict with
72ChromeVox. The Search key (which gets mapped from LWIN/key code 91), usually
73gets assigned to numerous shortcut combinations. You can manually disable all
74such combinations, or run under X as described above.
75
76## Speech
77
78If you want speech, you just need to copy the speech synthesis data files to
79/usr/share like it would be on a Chrome OS device:
80
81```
82gsutil ls gs://chromeos-localmirror/distfiles/espeak*
83```
84
85Pick the latest version and
86
87```
88gsutil cp gs://chromeos-localmirror/distfiles/espeak-ng-20180801.tar.gz /usr/share/chromeos-assets/speech_synthesis/espeak-ng/
89tar xvf /usr/share/chromeos-assets/speech_synthesis/espeak-ng/espeak-ng-20180801.tar.gz
90rm /usr/share/chromeos-assets/speech_synthesis/espeak-ng/espeak-ng-20180801.tar.gz
91```
92
93**Be sure to check permissions of /usr/share/chromeos-assets, some users report
94they need to chmod or chown too, it really depends on your system.**
95
96**Note that the default Google tts engine is now only available on an actual
97Chrome OS device. **
98
99After you do that, just run "chrome" as above (e.g. out/cros/chrome) and press
100Ctrl+Alt+Z, and you should hear it speak! If not, check the logs.
101
102## Braille
103
104ChromeVox uses extension APIs to deliver braille to Brltty through libbrlapi
105and uses Liblouis to perform translation and backtranslation.
106
107Once built, Chrome and ChromeVox will use your machine’s running Brltty
108daemon to display braille if ChromeVox is running. Simply ensure you have a
109display connected before running Chrome and that Brltty is running.
110
111Note you may need to customize brltty.conf (typically found in /etc).
112In particular, the api-parameters Auth param may exclude the current user.
113You can turn this off by doing:
114api-parameters Auth=none
115
116Testing against the latest releases of Brltty (e.g. 5.4 at time of writing) is
117encouraged.
118
119For more general information, see [ChromeVox](chromevox.md)
120
121# Using ChromeVox
122
123ChromeVox keyboard shortcuts use Search. On Linux that's usually your Windows
124key. If some shortcuts don't work, you may need to remove Gnome keyboard
125shortcut bindings, or use "startx", as suggested above, or remap it.
126
127* Search+Space: Click
128* Search+Left/Right: navigate linearly
129* Search+Period: Open ChromeVox menus
130* Search+H: jump to next heading on page
131