parent
15f81774c2
commit
7a51e7b931
@ -1,63 +0,0 @@
|
||||
---
|
||||
title: "Orca, Emacspeak and Chromium Accessibility on A Raspberry Pi Running Manjaro ARM"
|
||||
keywords: "orca linux raspberry-pi rpi raspberry pi screen reader screen-reader 64 bit 64-bit 64bit aarch64 emacs emacspeak manjaro manjaro-arm manjaro-aarch64"
|
||||
layout: post
|
||||
draft: true
|
||||
---
|
||||
|
||||
I wanted to get a gift for my blind friend who has been interested in learning Linux for a while now.
|
||||
Just when I was about to start looking for a gift I decided to take a look at [Brian Lunduke's newest video](https://lbry.tv/@Lunduke:e/raspberry-pi-400-looks-rad:c) featuring the [Raspberry Pi 400](https://www.raspberrypi.org/products/raspberry-pi-400/?resellerType=home).
|
||||
The Raspberry Pi 400 has come full circle in terms of computing.
|
||||
It is a keyboard. All the computing is done from within the keyboard.
|
||||
Much like the Comodore64, this computer comes without a screen but is still technically fully functional without one.
|
||||
I had my 'Aha!' moment and decided that could be a very cool gift.
|
||||
|
||||
## Distribution
|
||||
|
||||
I wanted to choose something which will age well, and run the latest and greatest.
|
||||
Some Raspberry Pi Orca installation guides [like this one](https://techesoterica.com/getting-the-orca-screen-reader-working-on-a-raspberry-pi-4-with-raspbian-buster-and-the-mate-desktop/),
|
||||
have actually asked the user to _compile from source_ to get the latest Orca version due to how out-of-date Debian's package repositories are.
|
||||
A distribution which has none of these fusses was top priority,
|
||||
especially because Orca receives a lot of updates and it would make sense to not lag behind for the most critical piece of software.
|
||||
|
||||
I decided to go with [Manjaro ARM Xfce](https://manjaro.org/download/#raspberry-pi-4-xfce):
|
||||
|
||||
* Xfce is lightweight (especially good for a VI user who will be using the screen reader).
|
||||
* Runs the 64-bit kernel instead of Raspberry Pi OS's 32-bit kernel.
|
||||
* Is based on Arch Linux, so receives very frequent package updates.
|
||||
* Has the AUR ([with some effort](#aur), as we'll see).
|
||||
|
||||
The only downside of Manjaro ARM, and likewise other Aarch64 architecture kernels is that it did not have HEVC nor H264 hardware decoding available.
|
||||
Apparently this is getting mainlined in Linux kernel 5.10, but I still don't quite understand how it works as using 5.10-rc4 did not activate it.
|
||||
I suppose time will tell by end of year how this will be implemented.
|
||||
|
||||
## Orca
|
||||
|
||||
The minimum requirement for a visually impaired desktop Linux user is a screen reader.
|
||||
The most used screen reader for Linux is Orca, headed by the [GNOME Project](https://wiki.gnome.org/Projects/Orca).
|
||||
This is relatively easy to install with standard `pacman` commands.
|
||||
|
||||
<pre class="terminal">
|
||||
# pacman -S orca
|
||||
</pre>
|
||||
|
||||
If logged in via SSH, you can start Orca with the `orca` command. This will start reading the screen to you so you can do the next parts.
|
||||
|
||||
To activate Orca on login and on LightDM activation, add it to the LightDM GTK+ Greeter Settings application on the Misc. menu.
|
||||
This will start it when the LightDM login system starts.
|
||||
|
||||
LightDM's Orca will not help us once we are logged in however.
|
||||
To activate Orca on login, open the Session And Startup application, and add Orca to the "startup" list of apps.
|
||||
|
||||
### TODO: add commands
|
||||
|
||||
And now Orca will be activated on boot and login.
|
||||
|
||||
## AUR
|
||||
|
||||
To get the AUR working, we need to install the `pacaur` helper.
|
||||
This merited its own article, so check that out here:
|
||||
|
||||
[How to Install Pacaur on Manjaro ARM](/2020/12/01/pacaur-rpi.html)
|
||||
|
||||
##
|
@ -0,0 +1,148 @@
|
||||
---
|
||||
title: "Orca, Emacspeak and Chromium Accessibility on A Raspberry Pi Running Manjaro ARM"
|
||||
keywords: "orca linux raspberry-pi rpi raspberry pi screen reader screen-reader 64 bit 64-bit 64bit aarch64 emacs emacspeak manjaro manjaro-arm manjaro-aarch64"
|
||||
layout: post
|
||||
draft: true
|
||||
---
|
||||
|
||||
I wanted to get a gift for my blind friend who has been interested in learning Linux for a while now.
|
||||
Just when I was about to start looking for something I decided to take a look at [Brian Lunduke's newest video](https://lbry.tv/@Lunduke:e/raspberry-pi-400-looks-rad:c) featuring the [Raspberry Pi 400](https://www.raspberrypi.org/products/raspberry-pi-400/?resellerType=home).
|
||||
The Raspberry Pi 400 has come full circle in terms of computing.
|
||||
It is a keyboard. All the computing is done from within the keyboard.
|
||||
Much like the Comodore64, this computer comes without a screen but is still technically fully functional without one.
|
||||
I had my 'Aha!' moment, and decided that the Raspberry Pi 400 would be a very cool present.
|
||||
|
||||
## No Headphone Jack
|
||||
|
||||
My first problem was that the Raspberry Pi 400 does not come with a headphone jack,
|
||||
even though every other Raspberry Pi A/B/B+ board with the exception of the compute modules and Zero series have included one.
|
||||
That said, the Raspberry Pi audio jacks are also known to crackle and pop due to either bad drivers or cheap manufacturing.
|
||||
|
||||
To compensate, I got an external USB audio card.
|
||||
I ended up going with the [DuKabel USB to 3.5mm Jack Adapter (Amazon)](https://www.amazon.ca/DuKabel-ProSeries-Mic-Supported-Headphone-External/dp/B07RS11M1T/).
|
||||
|
||||
There are cheaper options for sure, but when I was looking around Raspberry Pi forums and Amazon reviews, this specific model seemed to come out on top in terms of performance.
|
||||
It costed me around 40 Canadian dollars.
|
||||
I figure this isn't too bad considering my friend doesn't need a screen, haha!
|
||||
|
||||
## Distribution
|
||||
|
||||
I wanted to choose something which will age well, and run the latest and greatest.
|
||||
For visually impaired users, the most important piece of software is the screen reader. If the screen reader doesn't work, the rest of the work is toast!
|
||||
Some Raspberry Pi Orca installation guides [like this one](https://techesoterica.com/getting-the-orca-screen-reader-working-on-a-raspberry-pi-4-with-raspbian-buster-and-the-mate-desktop/),
|
||||
have actually asked the user to _compile Orca from source_ to get the latest version due to how out-of-date Debian's package repositories are.
|
||||
A distribution which has none of these fusses was top priority,
|
||||
especially because Orca receives frequent updates.
|
||||
|
||||
I decided to go with [Manjaro ARM Xfce](https://manjaro.org/download/#raspberry-pi-4-xfce):
|
||||
|
||||
* Xfce is lightweight.
|
||||
* Runs a 64-bit kernel.
|
||||
* Is based on Arch Linux, so receives very frequent package updates.
|
||||
* Has the AUR ([with some effort](#aur), as we'll see).
|
||||
|
||||
The only downside of Manjaro ARM, and likewise other Aarch64 (ARM 64-bit) architecture kernels is that it did not have HEVC nor H264 hardware decoding available.
|
||||
Apparently, support for the Raspberry Pi's VC4 graphics is getting mainlined [in Linux kernel 5.10](https://www.debugpoint.com/2020/12/linux-kernel-5-10-features/).
|
||||
Unfortunately, running the release candidate (RC) kernel did not make the Raspberry Pi 400 use hardware decoding.
|
||||
Perhaps other applications like `ffmpeg` and Chromium need to add support as well before this works.
|
||||
|
||||
## Orca
|
||||
|
||||
As stated before, minimum requirement for a visually impaired desktop Linux user is a screen reader.
|
||||
The most used screen reader for Linux is Orca, headed by the [GNOME Project](https://wiki.gnome.org/Projects/Orca).
|
||||
This is relatively easy to install with a standard `pacman` command.
|
||||
|
||||
<pre class="terminal">
|
||||
# pacman -S orca
|
||||
</pre>
|
||||
|
||||
If logged in via SSH, you can start Orca with the `orca` command. This will start reading the screen to you so you can do the next parts.
|
||||
|
||||
To activate Orca on login with LightDM, enable it in the 'LightDM GTK+ Greeter Settings' application. The 'Misc.' tab will have a drop-down for asking which screen reader you want to use.
|
||||
This will start Orca when the LightDM login system starts.
|
||||
|
||||
LightDM's Orca will not help us once we are logged in however.
|
||||
To activate Orca on login, open the 'Session And Startup application' program, then add Orca to the "startup" list of apps.
|
||||
|
||||
And now Orca will be activated on boot and login.
|
||||
|
||||
## AUR
|
||||
|
||||
The AUR, or the Arch User Repository has community maintained and distributed packages.
|
||||
Basically, you download a file which will tell your computer how to download, build and install a package for you.
|
||||
|
||||
To get the AUR working in a more automatic way, we need to install the `pacaur` helper.
|
||||
This merited its own article, so check that out here:
|
||||
[How to Install Pacaur on Manjaro ARM](/2020/12/01/pacaur-rpi.html)
|
||||
|
||||
The TL;DR is that we need to open the `/etc/makepkg.conf` file and replace any mention of `-march=armv8-a` with `-march=armv8-a+crypto`.
|
||||
|
||||
This can be done as a oneliner, thanks to the `sed` command.
|
||||
|
||||
<pre class="terminal">
|
||||
# sed -i 's/-march=armv8-a/-march=armv8-a+crypto/' /etc/makepkg.conf
|
||||
</pre>
|
||||
|
||||
## Emacspeak
|
||||
|
||||
[Emacs](https://www.gnu.org/software/emacs/) is a scriptable document editor run by the [GNU Project](https://gnu.org/).
|
||||
Infamous for its high learning curve though it may be,
|
||||
there is a very extensive speech extension for it called [Emacspeak](http://emacspeak.sourceforge.net/).
|
||||
Emacspeak is built entirely by [T. V. Ramen](https://tvraman.github.io/vita/resume.html) and has been freely available since its inception in 1999.
|
||||
Due to its age (and thus maturity), Emacspeak is an important tool in any "eyes-free" software developer toolkit.
|
||||
|
||||
Lucky for me, Emacspeak appears to not only to be available in the AUR,
|
||||
but also compilable with the Aarch64 architecture---the architecture of the Raspberry Pi 400.
|
||||
So this is as easy to install as:
|
||||
|
||||
<pre class="terminal">
|
||||
$ pacaur -S emacspeak
|
||||
</pre>
|
||||
|
||||
## Web Browsers
|
||||
|
||||
I'll cover a couple web browsers here based on how they worked.
|
||||
|
||||
### Firefox
|
||||
|
||||
Firefox will run in accessibility mode with [caret browsing](https://en.wikipedia.org/wiki/Caret_navigation) enabled automatically when it detects Orca is running.
|
||||
This makes Firefox _by far_ the best browser for the job.
|
||||
|
||||
### Chromium
|
||||
|
||||
Chromium... Ugh. So it works, sort of.
|
||||
You need to enable two special flags, and add an environment variable.
|
||||
|
||||
To do this, I suggest editing the main profile in `/etc/profile`.
|
||||
Add the following line to the end of that file:
|
||||
|
||||
<pre class="file">
|
||||
export ENABLE_ACCESSIBILITY=1
|
||||
</pre>
|
||||
|
||||
Next, add two flags to the `$HOME/.config/chromium-flags.conf` file.
|
||||
|
||||
<pre class="file">
|
||||
--force-renderer-accessibility
|
||||
--enable-caret-browsing
|
||||
</pre>
|
||||
|
||||
You will need to relog to set the ENABLE_ACCESSIBILITY environment variable. Now Chromium should work with Orca.
|
||||
|
||||
### Badwolf
|
||||
|
||||
The [Badwolf browser](https://www.mankier.com/1/badwolf)
|
||||
is based on the WebkitGTK engine, as opposed to Firefox's Gecko and Google's Blink engines.
|
||||
It _almost_ works out of the box. It is really fast compared to the other two,
|
||||
but it lacks some features like announcing a page is done loading and it doesn't appear to support caret browsing,
|
||||
which will cause some other problems.
|
||||
Interesting though for such a young browser to have a minimal level of accessibility so early!
|
||||
|
||||
I would be interested where this goes in the future.
|
||||
|
||||
## Conclusion
|
||||
|
||||
It took a bit of messing around to get this working, but I'm glad I did!
|
||||
Now I can nerd out with another Linux friend and given how well they seem to find problems with accessibility, hopefully a few upstream patches can be made.
|
||||
|
||||
Happy hacking, for everyone!
|
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@ -1 +1 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?> <urlset xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.sitemaps.org/schemas/sitemap/0.9 http://www.sitemaps.org/schemas/sitemap/0.9/sitemap.xsd" xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"> <url> <loc>/2020/01/22/padding-and-margin.html</loc> <lastmod>2020-01-22T00:00:00-07:00</lastmod> </url> <url> <loc>/2020/01/26/rsa1.html</loc> <lastmod>2020-01-26T00:00:00-07:00</lastmod> </url> <url> <loc>/2020/02/19/rsa2.html</loc> <lastmod>2020-02-19T00:00:00-07:00</lastmod> </url> <url> <loc>/2020/04/02/rsa3.html</loc> <lastmod>2020-04-02T00:00:00-06:00</lastmod> </url> <url> <loc>/2020/04/06/rsa4.html</loc> <lastmod>2020-04-06T00:00:00-06:00</lastmod> </url> <url> <loc>/2020/04/12/nas1.html</loc> <lastmod>2020-04-12T00:00:00-06:00</lastmod> </url> <url> <loc>/2020/04/21/rfi.html</loc> <lastmod>2020-04-21T00:00:00-06:00</lastmod> </url> <url> <loc>/2020/04/25/xss.html</loc> <lastmod>2020-04-25T00:00:00-06:00</lastmod> </url> <url> <loc>/2020/05/01/nginx-socket-io-projects.html</loc> <lastmod>2020-05-01T00:00:00-06:00</lastmod> </url> <url> <loc>/2020/05/19/clue-announcement.html</loc> <lastmod>2020-05-19T00:00:00-06:00</lastmod> </url> <url> <loc>/2020/06/04/site-update.html</loc> <lastmod>2020-06-04T00:00:00-06:00</lastmod> </url> <url> <loc>/2020/06/25/tmux-minecraft.html</loc> <lastmod>2020-06-25T00:00:00-06:00</lastmod> </url> <url> <loc>/2020/07/12/independence.html</loc> <lastmod>2020-07-12T00:00:00-06:00</lastmod> </url> <url> <loc>/2020/07/19/multicraft-php-gentoo.html</loc> <lastmod>2020-07-19T00:00:00-06:00</lastmod> </url> <url> <loc>/2020/07/30/canadian-parliament.html</loc> <lastmod>2020-07-30T00:00:00-06:00</lastmod> </url> <url> <loc>/2020/08/15/openbsd1.html</loc> <lastmod>2020-08-15T00:00:00-06:00</lastmod> </url> <url> <loc>/2020/08/18/django-deployment.html</loc> <lastmod>2020-08-18T00:00:00-06:00</lastmod> </url> <url> <loc>/2020/09/09/lamegames.html</loc> <lastmod>2020-09-09T00:00:00-06:00</lastmod> </url> <url> <loc>/2020/09/12/minesweeper.html</loc> <lastmod>2020-09-12T00:00:00-06:00</lastmod> </url> <url> <loc>/2020/10/26/curiosity.html</loc> <lastmod>2020-10-26T00:00:00-06:00</lastmod> </url> <url> <loc>/2020/11/15/nas2.html</loc> <lastmod>2020-11-15T00:00:00-07:00</lastmod> </url> <url> <loc>/2020/12/01/pacaur-rpi.html</loc> <lastmod>2020-12-01T00:00:00-07:00</lastmod> </url> <url> <loc>/2020-04-27-quiz-your-friends-xss.html</loc> </url> <url> <loc>/2020-12-02-orca-raspberry-pi-aarch64.html</loc> </url> <url> <loc>/blog/</loc> </url> <url> <loc>/tests/live-label/</loc> </url> <url> <loc>/tests/chess/</loc> </url> <url> <loc>/</loc> </url> <url> <loc>/tutoring/</loc> </url> <url> <loc>/cover-letters/bloombase/</loc> </url> <url> <loc>/resume/</loc> </url> <url> <loc>/links/</loc> </url> <url> <loc>/cover-letter-vcc/</loc> </url> <url> <loc>/contact/</loc> </url> <url> <loc>/about/</loc> </url> <url> <loc>/scholarships/2020/cnib/</loc> </url> <url> <loc>/test.html</loc> </url> <url> <loc>/test2.html</loc> </url> </urlset>
|
||||
<?xml version="1.0" encoding="UTF-8"?> <urlset xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.sitemaps.org/schemas/sitemap/0.9 http://www.sitemaps.org/schemas/sitemap/0.9/sitemap.xsd" xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"> <url> <loc>/2020/01/22/padding-and-margin.html</loc> <lastmod>2020-01-22T00:00:00-07:00</lastmod> </url> <url> <loc>/2020/01/26/rsa1.html</loc> <lastmod>2020-01-26T00:00:00-07:00</lastmod> </url> <url> <loc>/2020/02/19/rsa2.html</loc> <lastmod>2020-02-19T00:00:00-07:00</lastmod> </url> <url> <loc>/2020/04/02/rsa3.html</loc> <lastmod>2020-04-02T00:00:00-06:00</lastmod> </url> <url> <loc>/2020/04/06/rsa4.html</loc> <lastmod>2020-04-06T00:00:00-06:00</lastmod> </url> <url> <loc>/2020/04/12/nas1.html</loc> <lastmod>2020-04-12T00:00:00-06:00</lastmod> </url> <url> <loc>/2020/04/21/rfi.html</loc> <lastmod>2020-04-21T00:00:00-06:00</lastmod> </url> <url> <loc>/2020/04/25/xss.html</loc> <lastmod>2020-04-25T00:00:00-06:00</lastmod> </url> <url> <loc>/2020/05/01/nginx-socket-io-projects.html</loc> <lastmod>2020-05-01T00:00:00-06:00</lastmod> </url> <url> <loc>/2020/05/19/clue-announcement.html</loc> <lastmod>2020-05-19T00:00:00-06:00</lastmod> </url> <url> <loc>/2020/06/04/site-update.html</loc> <lastmod>2020-06-04T00:00:00-06:00</lastmod> </url> <url> <loc>/2020/06/25/tmux-minecraft.html</loc> <lastmod>2020-06-25T00:00:00-06:00</lastmod> </url> <url> <loc>/2020/07/12/independence.html</loc> <lastmod>2020-07-12T00:00:00-06:00</lastmod> </url> <url> <loc>/2020/07/19/multicraft-php-gentoo.html</loc> <lastmod>2020-07-19T00:00:00-06:00</lastmod> </url> <url> <loc>/2020/07/30/canadian-parliament.html</loc> <lastmod>2020-07-30T00:00:00-06:00</lastmod> </url> <url> <loc>/2020/08/15/openbsd1.html</loc> <lastmod>2020-08-15T00:00:00-06:00</lastmod> </url> <url> <loc>/2020/08/18/django-deployment.html</loc> <lastmod>2020-08-18T00:00:00-06:00</lastmod> </url> <url> <loc>/2020/09/09/lamegames.html</loc> <lastmod>2020-09-09T00:00:00-06:00</lastmod> </url> <url> <loc>/2020/09/12/minesweeper.html</loc> <lastmod>2020-09-12T00:00:00-06:00</lastmod> </url> <url> <loc>/2020/10/26/curiosity.html</loc> <lastmod>2020-10-26T00:00:00-06:00</lastmod> </url> <url> <loc>/2020/11/15/nas2.html</loc> <lastmod>2020-11-15T00:00:00-07:00</lastmod> </url> <url> <loc>/2020/12/01/pacaur-rpi.html</loc> <lastmod>2020-12-01T00:00:00-07:00</lastmod> </url> <url> <loc>/2020/12/14/orca-raspberry-pi-manjaro.html</loc> <lastmod>2020-12-14T00:00:00-07:00</lastmod> </url> <url> <loc>/2020-04-27-quiz-your-friends-xss.html</loc> </url> <url> <loc>/blog/</loc> </url> <url> <loc>/tests/live-label/</loc> </url> <url> <loc>/tests/chess/</loc> </url> <url> <loc>/</loc> </url> <url> <loc>/tutoring/</loc> </url> <url> <loc>/cover-letters/bloombase/</loc> </url> <url> <loc>/resume/</loc> </url> <url> <loc>/links/</loc> </url> <url> <loc>/cover-letter-vcc/</loc> </url> <url> <loc>/contact/</loc> </url> <url> <loc>/about/</loc> </url> <url> <loc>/scholarships/2020/cnib/</loc> </url> <url> <loc>/test.html</loc> </url> <url> <loc>/test2.html</loc> </url> </urlset>
|
Loading…
Reference in new issue