This repository contains notes about Linux setup on Chrome OS. These are written for setting up environment for developing bible apps.
We also wrote some note about WSL2 setup on Windows: https://github.com/eliranwong/wsl2
Notes in this repository are tested with the following device and os versions:
Device 1: Google Pixelbook Go
Chrome OS Version: 107.0.5304.110 (Official Build) (64-bit)
Device 2: Apple mac mini (2012)
Chrome OS Flex Version: 108.0.5359.111 (Official Build) (64-bit)
Linux version:
cat /etc/os-release
PRETTY_NAME="Debian GNU/Linux 11 (bullseye)"
NAME="Debian GNU/Linux"
VERSION_ID="11"
VERSION="11 (bullseye)"
VERSION_CODENAME=bullseye
ID=debian
HOME_URL="https://www.debian.org/"
SUPPORT_URL="https://www.debian.org/support"
BUG_REPORT_URL="https://bugs.debian.org/"
CPU:
dpkg --print-architecture
amd64
Cog is a nice extension to view system information:
Press "ctrl + alt + t" key combination to open a crosh session and run:
free -ht
Can use "swap" command to allocate the size of virtual memory instead of the default one, but it is unnecessary in common cases.
To change virtual memory, e.g.:
swap enable 2048
To change to factory default:
(If the size is omitted, the factory default is chosen)
swap enable
Remarks: Restart device for change in virtual memory to take effect.
Make sure you have the latest version of Chrome OS first, because "sudo apt update" does not work in some old Chrome OS versions.
-
Open Settings > About Chrome OS > Check for updates
-
Restart after updates if any
-
Open Settings > Linux > Turn On
-
To check the Linux's version installed, open terminal and type:
cat /etc/os-release
If the version is not 10 (buster) or above, you'll need to run the update script:
sudo bash /opt/google/cros-containers/bin/upgrade_container
- To update packages, run on terminal app:
sudo apt update && sudo apt dist-upgrade
-
To enable ADB debugging: Settings > Linux > Develop Android apps > Enable ADB debugging
-
To use microphone with Linux app: Settings > Linux > Allow Linux to access your microphone. [Remarks: Microphone setting here cannot be changed if Linux container is running. Make sure to shut down Linux container first before changing this option.]
Reference: https://support.google.com/chromebook/answer/9145439?hl=en-GB
- Right-click "Terminal" app icon on the "shelf".
- Shut down Linux
- Start the "Terminal" app again
Settings > Linux > Disk size > Change
To check disk storage, run:
df -h
To access chrome os files from Linux side.
e.g. Open "Files" app, right-click "Downloads" and select "Share with Linux"
apt:
https://github.com/eliranwong/ChromeOSLinux/blob/main/package_mx/apt.md
dpkg:
https://github.com/eliranwong/ChromeOSLinux/blob/main/package_mx/dpkg.md
flatpak [avoid flatpak if possible if you want your downloaded apps to work with fcitx]:
https://github.com/eliranwong/ChromeOSLinux/blob/main/package_mx/flatpak.md
synaptic:
https://github.com/eliranwong/ChromeOSLinux/blob/main/package_mx/synaptic.md
To install some basic command line tools and libraries, run:
sudo apt -y install software-properties-common dirmngr apt-transport-https lsb-release ca-certificates apt-utils build-essential cmake tree wget curl git zip unzip xz-utils nano micro w3m lynx lib32stdc++6 sqlite3 libsqlite3-dev libasound2 libnss3 libncurses5 libncurses5-dev libgl1-mesa-dev mesa-utils libglu1-mesa lsb-release binutils ffmpeg gawk opencc plocate gnome-keyring libssl-dev libffi-dev libstdc++5 libpci3 libpci-dev python3 python3-setuptools python3-pip python3-dev python3-venv zlib1g-dev libgdbm-dev libnss3-dev libreadline-dev libbz2-dev gcc xorg-dev exo-utils dex xdg-utils libavcodec-extra libportaudio2 moreutils llvm libncursesw5-dev tk-dev liblzma-dev python3-openssl libxml2-dev libxmlsec1-dev libfuse2 protobuf-compiler
Note on wayland: https://github.com/eliranwong/ChromeOSLinux/blob/main/display/wayland.md
e.g. Chinese pinyin
https://github.com/eliranwong/ChromeOSLinux/blob/main/input_method/fcitx.md
To install additional fonts, e.g. ubuntu fonts:
- Download the latest version of Ubuntu Fonts from http://font.ubuntu.com/ or run:
wget https://assets.ubuntu.com/v1/0cef8205-ubuntu-font-family-0.83.zip
- Unzip font package:
unzip 0cef8205-ubuntu-font-family-0.83.zip
- Create user fonts directory:
mkdir -p ~/.fonts
- Copy ubuntu fonts to user fonts directory:
cp -r ubuntu-font-family-0.83/ ~/.fonts
- Build fonts information cache files:
fc-cache -f -v
Remarks: font directory lists are placed in /etc/fonts/fonts.conf
sudo apt install -y font-viewer font-manager-common
For example:
- download Hebrew fonts from https://www.1001fonts.com/hebrew-fonts.html
- unzip the downloaded zip files
- double click a font file in pcmanfm to launch '/usr/libexec/font-manager/font-viewer'
- press 'install font'
nano
sudo apt install nano -y
Move down a page: "ctrl + v"
Move up a page: "ctrl + y"
Quick jump to the end of the file: "alt + \"
Quick jump to the end of the file: "alt + /"
The built-in "Terminal" app that comes with Chrome OS is generally nice. However, it is not good for typing non-English characters, like Chinese. Chinese characters are misplaced as one type. We want a terminal app that:
- supports copy & paste operations
- supports unicode
- works with fcitx
- allow customisation
We tested different terminal app on Chrome OS. The best options we found are 'konsole' and 'rxvt-unicode'.
To install 'konsole', run:
sudo apt install -y konsole breeze-icon-theme
To copy, press 'ctrl+shift+c'
To paste, press 'ctrl+shift+v'
To run 'konsole' as login shell by default:
Settings > Configure Konsole > Profiles > Profile 1 (Default) > Edit > General > Command > /bin/bash -l
To change 'konsole' font, e.g. to Noto Sans Mono:
Settings > Configure Konsole > Profiles > Profile 1 (Default) > Edit > Appearance > Font > Noto Sans Mono
To support fcitx when konsole is launched via desktop file:
sudo nano /usr/share/applications/org.kde.konsole.desktop
Change from:
Exec=konsole
to:
Exec=env QT_IM_MODULE=fcitx5 /usr/bin/konsole
For 'rxvt-unicode', read:
https://github.com/eliranwong/ChromeOSLinux/blob/main/terminal/rxvt-unicode.md
Remarks: Gnome-terminal is a popular choice, however, it does not fully work with fcitx on chrome os.
Microsoft Edge
Microsoft Edge work with Chrome OS built-in input methods, without the need of fcitx:
Microsoft Edge can be downloaded at (select the .deb package):
https://www.microsoft.com/en-gb/edge/download
Browsers that work with fcitx
Two examples: Firefox and Chrome. Both of these browsers work with fcitx on Chrome OS Linux.
Firefox
There are several ways to install firefox. Firefox website suggests Chrome OS users to use flatpak to install firefox. However, the firefox installed through flatpak does not work with input method fcitx.
To work with fcitx, install firefox via either of the following methods:
esr version:
sudo apt install -y firefox-esr
To launch the installed esr version:
firefox-esr
full version:
Download firefox package (*.tar.bz2) at:
https://www.mozilla.org/firefox/linux/?utm_medium=referral&utm_source=support.mozilla.org
Run in terminal:
sudo apt install -y libstdc++5 libdbus-glib*
cd ~
tar xjf firefox-*.tar.bz2
rm firefox-*.tar.bz2
To launch the installed firefox:
~/firefox/firefox
Set a shortcut:
echo "alias firefox=$HOME/firefox/firefox" >> ~/.bashrc
Chrome
To download, install and set up:
sudo wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb
sudo dpkg -i google-chrome-stable_current_amd64.deb
sudo apt install --fix-broken -y
sudo dpkg -i google-chrome-stable_current_amd64.deb
To run:
google-chrome
To tweak (enter in url):
chrome://flags
chrome://components
Tor Browser
echo "deb http://ftp.debian.org/debian buster-backports main contrib" | sudo tee /etc/apt/sources.list.d/backports.list
sudo apt update
sudo apt install torbrowser-launcher -t buster-backports -y
torbrowser-launcher
We prefer 'pcmanfm'
To install, run:
sudo apt install -y pcmanfm pcmanfm-qt pcmanfm-qt-l10n libfm-qt-dev libfm-qt8
To run:
pcmanfm
or
pcmanfm-qt
To integrate terminal 'konsole' with 'pcmanfm':
- Install 'konsole' by running 'sudo apt install konsole'
- Go to Edit > Preferences > Advanced > Terminal emulator
- Change from 'x-terminal-emulator %s' to '/usr/bin/konsole %s' or 'env QT_IM_MODULE=fcitx5 /usr/bin/konsole %s' to use fcitx5 on konsole windows, opened via 'pcmanfm'
To integrate archiver manager 'file-roller' with 'pcmanfm':
- Install 'file-roller' by running 'sudo apt install file-roller'
- Go to Edit > Preferences > Advanced > Archiver integration
- Select file-roller
Remarks: use 'pcmanfm' instead of 'pcmanfm-qt' on wayland, as Wayland does not support QWindow::requestActivate().
We also tested several other file managers on Chome OS:
- nautilus does not fully work with fcitx. If you want to install nautilus anyway, run:
sudo apt install -y nautilus nautilus-admin nautilus-extension-gnome-terminal nautilus-image-converter nautilus-font-manager
- thunar and nemo does not work with clipboard
sudo apt install gthumb -y
gthumb
Chrome OS "Files" app can only read Linux home folder, but not other directories.
It is better to use 'pcmanfm' to access all Linux files as well as all chrome os + Android files.
-
Launch Chrome OS "Files" app
-
Right-click "My Files" > Share folder with Linux > OK
-
Launch Linux "pcmanfm" or "pcmanfm-qt", go to /mnt/chromeos/, right-click "MyFiles" to add a bookmark, so that "My Files" appears on pcmanfm side bar.
-
To add an alias for use with commands:
echo "alias myfiles='cd /mnt/chromeos/MyFiles'" >> ~/.bashrc
By default, chrome OS "Files" app shows only 4 Android folders Documents, Movies, Music, Pictures. To access the rest of the folders:
-
Launch Chrome OS "Files" app
-
Click the three-vertical-dot button, located at the righter upper corner.
-
Select "Show all Play folders"
-
Right-click Folder(s) under "Play Files" > Share folder with Linux > OK
Access USB content at:
To share USB content with Linux:
- Launch Chrome OS 'Files' app
- Right-click USB device, appeared on side panel
- Select 'Share with Linux'
To access via Linus, run on Linux terminal:
cd /mnt/chromeos/removable
We prefer WPS office. It has better compatability with Microsoft documents than libreoffice. You may read our notes about wps at:
https://github.com/eliranwong/ChromeOSLinux/blob/main/office/wps.md
Reader:
sudo flatpak install --from https://flathub.org/repo/appstream/com.github.babluboy.bookworm.flatpakref
echo "alias bookworm='flatpak run com.github.babluboy.bookworm &>/dev/null & disown'" >> ~/.bashrc
Editor:
sudo apt install sigil
echo "alias sigil='env QT_QPA_PLATFORM=xcb sigil'" >> ~/.bashrc
Update to the latest Chrome OS to get audio support for Linux apps.
Test: run a espeak command:
sudo apt install espeak -y
espeak "testing audio"
[To install additional data for espeak: https://github.com/eliranwong/ChromeOSLinux/blob/main/multimedia/espeak.md]
Remarks: Audio is not supported in some old versions of Chrome OS.
sudo apt install vlc -y
https://github.com/eliranwong/ChromeOSLinux/blob/main/multimedia/yt-dlp.md
https://github.com/eliranwong/ChromeOSLinux/blob/main/multimedia/kdenlive.md
sudo apt install audacity
Enable to use microphone for recording:
- Shutdown Linux container first [right-click Terminal app icon on the shelf & select "Shut down Linux (Beta)"]
- Enable to use microphone with Linux app: Settings > Linux > Allow Linux to access your microphone.
- Launch Terminal app and audacity
audacity
- Select "default: Mic:0" on microphone option
If you find the installed audacity too small on screen, you may want to scale it up.
echo 'alias audacity="sommelier -X --scale=0.5 --dpi=120 audacity"' >> ~/.bashrc
Edit the desktop shortcut file:
sudo nano /usr/share/applications/audacity.desktop
Change from:
Exec=audacity %F
to:
Exec=sommelier -X --scale=0.5 --dpi=120 audacity
Read more at: https://www.reddit.com/r/Crostini/wiki/howto/adjust-display-scaling#wiki_adjusting_display_scaling_per_application
go
https://github.com/eliranwong/ChromeOSLinux/blob/main/development/go.md
Android Studio + Flutter + Dart + connecting flutter to chromebook
We found the following way is the easiest one to setup Android Studio together with flutter and dart. Overall, it is easier to first install Android Studio then flutter and dart.
https://github.com/eliranwong/ChromeOSLinux/blob/main/development/AndroidStudioFlutter.md
VS Code:
https://github.com/eliranwong/wsl2/blob/master/programming/vs_code.md
python3:
sudo apt install build-essential python3 python-setuptools python3-pip python3-dev python3-venv libssl-dev libffi-dev -y
pyenv:
sudo apt update; sudo apt install build-essential libssl-dev zlib1g-dev libbz2-dev libreadline-dev libsqlite3-dev curl libncursesw5-dev xz-utils tk-dev libxml2-dev libxmlsec1-dev libffi-dev liblzma-dev
curl https://pyenv.run | bash
git clone https://github.com/pyenv/pyenv-virtualenv.git $(pyenv root)/plugins/pyenv-virtualenv
micro .bashrc
copy the following lines at the end of the file:
# pyenv
# Load pyenv automatically by appending
# the following to
# ~/.bash_profile if it exists, otherwise ~/.profile (for login shells)
# and ~/.bashrc (for interactive shells) :
export PYENV_ROOT="$HOME/.pyenv"
[[ -d $PYENV_ROOT/bin ]] && export PATH="$PYENV_ROOT/bin:$PATH"
eval "$(pyenv init -)"
# Restart your shell for the changes to take effect.
# Load pyenv-virtualenv automatically by adding
# the following to ~/.bashrc:
eval "$(pyenv virtualenv-init -)"
# shims path
export PATH="$PYENV_ROOT/shims:$PATH"
Press "ctrl+s" & "ctrl+q" to save and close the file
More about pyenv at: https://github.com/pyenv/pyenv/wiki
More about pyenv-virtualenv at: https://github.com/pyenv/pyenv-virtualenv
More about pyenv plugins at: https://github.com/pyenv/pyenv/wiki/Plugins
nvm & node
https://github.com/eliranwong/ChromeOSLinux/blob/main/development/nvm_node.md
git
https://github.com/eliranwong/wsl2/blob/master/programming/git.md
Qt
https://github.com/eliranwong/ChromeOSLinux/blob/main/development/qt.md
sqlitebrowser
sudo apt install sqlitebrowser
Download the .deb package of Microsoft Teams at: https://aka.ms/get-teams-linux
dpkg -i [package-name]
wget -O- https://updates.signal.org/desktop/apt/keys.asc | sudo apt-key add -
echo "deb [arch=amd64] https://updates.signal.org/desktop/apt xenial main" | sudo tee -a /etc/apt/sources.list.d/signal-xenial.list
sudo apt update && sudo apt install signal-desktop
Unique Bible App Desktop
https://github.com/eliranwong/ChromeOSLinux/blob/main/bible/UniqueBibleApp.md
Unique Bible App Hybrid
https://github.com/eliranwong/UniqueBibleAppHybrid
Edit file ~/.bashrc
nano ~/.bashrc
At the end of the file, add, for examples:
alias update='sudo apt update && sudo apt dist-upgrade && updatedb && youtube-dl -U'
alias uba='/home/eliranwong/UniqueBible/uba.py'
alias audacity='sommelier -X --scale=0.5 --dpi=120 audacity &>/dev/null & disown'
alias chrome='google-chrome-stable &>/dev/null & disown'
alias firefox='/home/eliranwong/.Applications/firefox/firefox &>/dev/null & disown'
alias studio='urxvt -e /opt/android-studio/bin/studio.sh &>/dev/null & disown'
alias bookworm='flatpak run com.github.babluboy.bookworm &>/dev/null & disown'
alias pyside2examples='source ~/UniqueBible/venv/bin/activate && cd ~/UniqueBible/venv/lib/python3.7/site-packages/PySide2/examples'
alias myfiles='cd /mnt/chromeos/MyFiles'
alias playfiles='cd /mnt/chromeos/PlayFiles'
https://github.com/eliranwong/ChromeOSLinux/blob/main/cli/common.md
https://github.com/luong-komorebi/Awesome-Linux-Software
ls ~/.config
Manually edit '/usr/share/applications/mimeapps.list' or '.config/mimeapps.list'
[Default Applications]
inode/directory=pcmanfm-qt.desktop
application/pdf=wps-office-pdf.desktop
Alternatively, use xdg-mime command, e.g.:
xdg-mime default pcmanfm-qt.desktop inode/directory
xdg-mime default wps-office-pdf.desktop application/pdf
cat .config/mimeapps.list
ls /usr/share/applications
Desktop shortcuts created by Chrome are stored at
ls ~/.local/share/applications
/etc/apt/sources.list.d
https://dvillalobos.github.io/2020/How-to-install-and-run-Docker-on-a-Chromebook/
https://tech.davidfield.co.uk/webtops-linux-desktop-in-a-web-browser/
To install Arch Linux webtop, where "/home/<user>/development/webtops/arch-xfce" specifies the local path to store webtop user home directory [change it according to your own needs]:
sudo docker run -d --name=webtop --security-opt seccomp=unconfined -e PUID=1000 -e PGID=1000 -e TZ=Europe/London -e SUBFOLDER=/ -e KEYBOARD=en-gb-qwerty -p 3000:3000 -v /home/<user>/development/webtops/arch-xfce:/config -v /var/run/docker.sock:/var/run/docker.sock --shm-size="1gb" --restart unless-stopped lscr.io/linuxserver/webtop:arch-xfce
To run webtop:
To setup firefox addon "video-downloadhelper" on Arch Linux webtop:
Note: Addon "video-downloadhelper" and its companion app are tested on Alpine, Ubuntu, Fedora and Arch webtop images. They work properly only on Arch without installing extra components.
-
Install addon at: https://addons.mozilla.org/en-GB/firefox/addon/video-downloadhelper/
-
"Install Companion App" is prompted, the first time when a video, e.g. a vimeo video, is downloaded. Select "Linux - 64 bits - targz other linux distributions"
-
To install the companion app, open webtop terminal (not chromeOS Linux terminal) at download folder and run:
cd ~/Downloads
tar xf net.downloadhelper.coapp-1.6.3-1_amd64.tar.gz -C ~
~/net.downloadhelper.coapp-1.6.3/bin/net.downloadhelper.coapp-linux-64 install --user
sudo /etc/init.d/networking restart
https://github.com/eliranwong/ChromeOSLinux/blob/main/development/ubuntu.md