Version
Date | Version | Changed | Notes |
12 Jan 2021 | 1.0.0 | First Post | |
15 Jan 2021 | 1.1.0 | Added a Link to Syncthing post | |
As someone who has been using Chromebooks well before the Android Apps and Linux shell were a thing. I can say that they have come a long way since those early days.
One thing I've learned over all this time is to change my workflow away from Windows/Mac Apps and embrace the Web..
This post is about some things I've found to improve the experience of the OS even further.
There are dragons on some of these suggestions and I will state if you change these settings and have problems, you'll probably need to powerwash your Chromebook.
Disclaimer

There are spelling mistakes, the language is basic, the grammar is probably all over the place. I write these articles for myself, and share them because others may want to read. I'm not a copy editor, and if you'd like to help.
Running ChromeOS not on Chromebooks
It may be that you'd like to try chromeOs but don't want to spend mony on a new device. I've written some previous articles on installing ChromeOS on old PC or Mac Hardware you may be interested in


There is a lot here to go over
Note:
These instructions are written for ChromeOS version 87 in Jan 2021
The Linux Shell
Enable the Shell
As a Linux user I love that ChromeOS has a Linux Shell available, this is different to Crosh which is the ChromeOS Command Line. The Linux shell is a container (like Docker, but not) which keeps it seperate from the core OS.
The Shell the OS provides is based on Debian, and it is posible to spin your own container (Read How). Personally I'm find with Debian.

To install the Linux
- Open Settings
- Scroll down to Linux (Beta) or search in settings for Linux
- Click on Linux(Beta) — Turn On
- You'll be asked about the size of the Linux Container, the default is 5Gb however if you'll be using this a lot and you have the space i'd go to about 50Gb minimum.
- Wait for installation of the Linux
- A New icon is place in your apps

7. Click the Terminal icon
8. You are in your Linux console
Install some apps
Once open the Linux container is a stock Debian install and as such you can use apt to install software. As an example some of the core apps I install are
apt -y install apt-file bc bash-completion cron gnupg2 jq whois zip tree tmux file autossh dnsutils netcat build-essential wget curl git-all gdebi-core
Using apt, dpkg or gdebi it is also perfectly OK to download deb files and install them. The two Linux apps I tend to install in my container are the Only Office Desktop Editor

and Microsoft VSCode

Something you'll notice however is when you download the files from the internet they are downloaded into the ChromeOS Downloads folder and there is no Downloads folder in the container.
When you open the Files App you should see both the Downloads folder AND a Linux Files Folder

Copy the deb files (or other files you want to access from the Linux container) into Linux Files.
Running the "ls" command in the container and you will see the files
Note:
When you install applications they will appear as icons in the Linux Apps folder on the ChromeOS desktop

Share Folders
Using the Linux Files folder isn't the only method for getting access to your files from the Linux Container.
Open Settings -> Linux Beta
Open Manage Shared Files

This will show the folders shared with the Linux container and how to share a folder.

Once you've shared the folders they are accessible in the Linux container under the folder /mnt/chromeos

Note:
The folder share is read write so it is possible to create files in the container, save them under /mnt/chromeos/MyFiles/Downloads and see it in the ChromeOS Files app.
Other Linux Settings

There are several other immediatly handy options within this settings window
Backup and Restore

This function as the name suggests will provide a manual method for backing up your Linux Container.
I've tested this backing up a 5Gb Container and removing it, recreate a 50Gb container and restoring the backup and it worked perfectly.
TIP!
Save your backup to your Documents - Local folder. These backups will automatically sync up to your Google Drive account
Disk Size

If you created the suggested 5Gb container and find more space is needed Click on Change next to Disk size

Select the new size you'd like to expand to and click Resize.
Thoughts
These are the basics of manageing the Linux Container, its one of the most handy features added to ChromeOS and really helps if you've come froma Linux background

Doing some funky stuff with the Linux container
Note:
I will refer to the Linux container as the Linux shell, in the context of this blog its the same thing.
Access the Container from ChromeOS
You may install a service like SSH, a webserver or docker for testing within the Linux shell its not immediatly obsvious how you could access the service from outside the shell from the Chromebook
This should help
From the Linux shell
ip a
will show
4: eth0@if5: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000link/ether nn:nn:nn:nn:nn:nn brd ff:ff:ff:ff:ff:ff link-netnsid 0inet 100.115.92.204/28 brd 100.115.92.207 scope global eth0valid_lft forever preferred_lft forever
The IP address of the container will not usually be the same as the IP of the network you're connected to in this example its
100.115.92.204
Opening
http://100.115.92.204
Using theChromeOS browser would access a webserver installed within the linux shell for example
Its possible that if you kill your container and rebuild it, the IP will change, in these cases DNS would be the preferred connectivity option.
The core DNS nsma for the shell is penguin (as you'll see the default prompt display)
Within the Crostini shell
ping penguin
Will ping localhost 127.0.0.1
ping penguin.lxd
Will ping the hostname address (in this case 100.115.92.204) however this DNS address doesn't seem to work outside the Linux Shell
From the Chrome browser opening
penguin.linux.test
will open 100.115.92.204
Docker
It is possible to run Docker within the Linux Shell
sudo apt install docker
Within the Linux Shell however it wont work.. in oder to get docker isntalled it needs to be installed from the Docker repos
Note: a reader on Reddit informed me that the defaul "docker" package in Debian isn't infact Docker for containers and thats why it doesn't work.
Setup the repository
If you would like to learn more, you can visit the Get Docker Engine - Community for Debian site. A summary of the needed steps is listed below.
Update the apt
package index:
sudo apt-get update
Install packages to allow apt to use a repository over HTTPS:
sudo apt-get install \
apt-transport-https \
ca-certificates \
curl \
gnupg2 \
software-properties-common
Add Docker’s official GPG key:
curl -fsSL https://download.docker.com/linux/debian/gpg | sudo apt-key add -
Verify that you now have the key with the fingerprint 9DC8 5822 9FC7 DD38 854A E2D8 8D81 803C 0EBF CD88
, by searching for the last eight characters of the print.
sudo apt-key fingerprint 0EBFCD88
Use the following command to set up a stable repository.
sudo add-apt-repository \
"deb [arch=amd64] https://download.docker.com/linux/debian \
$(lsb_release -cs) \
stable"
Install Docker Engine - Community
Note: This procedure works for Debian on x86_64 / amd64.
In your case, you can verify what Linux (Beta) flavor is running on your Chromebook by typing as follows:
cat /etc/issue
In my case, the output shows Debian GNU/Linux 9 \n \l
.
Update the apt package index.
sudo apt-get update
Install the latest version of Docker Engine - Community
and containerd
.
sudo apt-get install docker-ce docker-ce-cli containerd.io
Install Portainer on Docker

Portainer is a good web interface for Docker
docker volume create portainer_data
docker run -d -p 9000:9000 -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data portainer/portainer
Open Portainer at
https://penguin.linux.test:9000
Change the Container to Ubuntu
Debian may not be the distro of choice for you, and you may be feeling a bit brave and are looking to swap the container to Run another distro.
This is possible, and its fiddly but not too difficult. There are some good instructions here on how to do this.

Warning
At present the only support container type is Debian, you may be doing a lot of googling if you run into issues having changed the Linux container type. It won't invalidate any warrenty its just not supported.

The Chrome Browser
WebApp as Window
Within Chrome most of the apps you'll visit will be in your web browser however there are however a couple of ways to have ChromeOS to display webpages as Windows so they look more like native apps.
This is especially handy if you're using multiple screens and want to multitask using alt + Tab
Option 1: PWA
Progressive Web Apps (PWA) are everything needed to run the website, usually offline as well wrapped up in a single App. You can read more about what is PWA is here.

While in the most case its Google apps which are PWA capable like Duo, Meet and Photos other sites like Twitter or Microsoft's Outlook website are also able to install as PWA's
The website needs PWA capability wrapped round it and as suhc now every app is PWA ready
For a list of PWA supported sites head over to

To make use of PWA Functionality if we take Google Photos as an example something you'd usually open using https://photos.google.com
Once the site is loaded open the Menu and click on Install Google Photos

This will Prompt you to install the App
Note: I'm not sure if its a change in Chrome 87, however sometimes you can install a PWA of the site if you see the circle with the + in it in the URL bar.

Once installed Google Photos will be installed as a self serving WebApp, with an Icon on the desktop and clicking on links will open in the app not the Web browser.

The App itself is in a Window without Tabs and works just as you'd expect the site to work as it if was on the wbpage.
Option 2: Create Shortcut
As stated above not all web pages are currently PWA's, however it is possible to turn any webpage into something that looks like a PWA even if it doesn't behave as one.
Again Click on the Chrome menu however this time head to More Tools -> Create Shortcut

A prompt will Appear prompting for the name of the Shortcut.
The Trick here is to click on Open as window

This will then like a PWA present the website as an App in windowed mode however it is just a shortcut to the webpage so won't work offline and will need access to the webpage to work.

Note:
I found it handy to turn apps like Teams, Rocket Chat, bundled Notes all great examples of Webapps which don't yet offer PWA's into Shortcuts and it helps me when working on Dual screens and it takes up less realestate when maximised.
Chrome Actions
Introduced in ChromeOS M87 Chrome actions are an interesting addition to add to the list of "Things chrome can do"
The Idea is there are a list of short phrases, supplied by Google which if are typed into the Chrome Omnibar will run an action
- Clear Browsing Data - type ‘delete history’, ‘clear cache ‘ or ‘wipe cookies’
- Manage Payment Methods - type ‘edit credit card’ or ‘update card info’
- Open Incognito Window - type ‘launch incognito mode‘ or ‘incognito’
- Manage Passwords - type ‘edit passwords’ or ‘update credentials’
- Update Chrome - type ‘update browser’ or ‘update google chrome’
- Translate Page - type ‘ translate this’ or ‘ translate this page’
As an example if I type in "update browser" into the search bar (omnibar)

I see an Update Chrome button appear in the search results
Clicking on this will take me straight to the relevent page to check for updates

Considering at the moment some of the options are hidden quite deep in menus this is an interesting method of creating shortcuts to certain tasks. It reads as though this is an inhouse Google thing right now however if it seems like its working its possible it could branch out to third parties.
Chrome Flags

I cannot state that in this flags section, it is perfectly possible to make your Chrome totally unusable. Please be aware that I take no responsability if you bork out your system here.
Chrome Flags are experimental features that aren't yet part of the browser by default, but can be enabled with a couple of clicks. They're simple to use and can transform the way you browse the web. To access the Flags menu, type chrome://flags into the address bar and hit Enter.

The world of Chrome flags opens up to you and the ability to check out some experimental features of Chrome
Some examples of some useful flags I have used
Improve Video performance
- chrome://flags/#force-preferred-interval-for-video
Sluggish video calling performance? Previously, the display compositor would be updating more frequently than the video stream. This Chrome flag resolves the composition rate to adjust based on the video’s actual framerate. Enable it to improve WebRTC performance while saving battery.
Media Caching
- chrome://flags/#turn-off-streaming-media-caching
Previously, media content was cached to disk during acquisition and playback. Keeping the disk active during this process increases power consumption and can prevent certain lower-power modes from being engaged in the operating system. Enable this Chrome flag to prevent caching certain media content to disk to improve battery life.
Sleeping Tabs
- chrome://flags/#tab-groups-collapse-freezing
Running into performance hitches when you have several Chrome tabs opened in tab groups? Enable this Chrome flag to optimize Chrome's performance by sleeping the tabs inside a tab group after collapsing it.
Faster Download Speeds
Parallel Downloading has been in the Chrome Flags repository for a very long time. It seems Google is not working on this feature to make it part of the stable channel. Nevertheless, this flag accelerates download speed by breaking the files into smaller chunks, similar to how IDM and other download managers work. So search for “parallel downloading” and enable the flag.

Enable Smooth Scrolling
As the name suggests, this Chrome flag helps improve the scrolling experience on your mobile and desktop. It reduces the janks and jitters that you may witness while scrolling and it works with Windows, Linux, and Chrome OS as well. You can enable #smooth-scrolling from the Chrome Flags page.

Use the Webapp not the Android App.
This is just a snippet of advice, its all to easy to default to the Android Apps if they are installable on your Chromebook. Where possible i'd strongly suggest using the WebApp rather than the Android App.
This saves battery, cpu cycles and is generally quicker. Unfortunatly the Android app eco system isn't grear on "Tablet" scaling for many apps.
Thoughts
ChromeOS has a lot of under the hood changes and improvements which exist and if you're willing to give them a try the flags options have some great content.

Further Under the Hood
Change your DNS
This is one for the self hosting and people who have a more advanced home network. Or for people who might want to use a different public DNS like Cloudflares 1.1.1.1 on the Chromebook.
By default ChromeOS will use 8.8.8.8 and 8.8.4.4 as its default DNS server. if you'd like to change this per wifi network its a bit buried however simple to do
Open Settings and click on the active Wifi Network

On the next screen select the Active Wifi network again

Scroll down and open Network

Under Name Servers you can choose to
1) Use the name server DHCP provides
2) Use google 8.8.8.8 and 8.8.4.4
3) Provide your own DNS Server
Option 3 can be either an internal DNS (Which i've done for reasons) or it can be an internet connectable DNS server like 1.1.1.1 or 1.0.0.1 for Cloudflare.
CROSH Commands

As well as the Linux shell covered earlier in this post, every Chromebook has includes a shell environment known as Chrome Shell, or “crosh” for short. Crosh includes several terminal commands that you can use on all Chromebooks, even if you don’t have developer mode or Linux shell enabled.
To open the Crosh, press Ctrl+Alt+T anywhere in Chrome OS. The Crosh shell opens in a new browser tab.
From the Crosh prompt, you can run the help
command to view a list of basic commands or run the help_advanced
command for a list of “more advanced commands, mainly used for debugging.”
Some interesting commands include
SSH
The ssh command is more advanced than you might expect. In addition to simply connecting to an SSH server, you can also use SSH tunneling to create a local proxy that allows you to tunnel your Chrome OS network activity over your SSH connection. You can also add private keys that you might need to connect to SSH servers.
ssh_forget_host
The ssh_forget_host
command displays a list of known hosts you’ve connected to with the SSH
command, and allows you to “forget” a host. The next time you connect to the host, you’ll be asked to verify its key fingerprint again.
Other common Linux commands
For those who come from a linux background there are some other common commands chich can be run within Crosh
top
ping
tracepath
An interesting command is one if you're running something like cloudready or brunch and your trackpads not quite right.
tpcontrol

The tpcontrol
command lets you fine-tune your device’s touchpad. Some of these options are available in Chrome OS’ settings window, but you can tweak many properties that aren’t available from the graphical interface.
xset m
The xset m
command lets you tweak your mouse acceleration rate. Chrome OS only has options for controlling the mouse’s speed in its graphical interface, so you must do any fine-tuning of the acceleration rate using Crosh. This is particularly useful if you’re using an external mouse that doesn’t work well with the default rate. The acceleration rate is configured in the same way you’d use the xset m
command to configure acceleration rates on a standard Linux system.
xset r

The xset r
command lets you tweak the autorepeat behavior that occurs when you hold a key down on your keyboard. You can configure the delay between when you first press the button and when autorepeat starts, and also configure how many repeats occur per second. You can also disable autorepeat completely for every key on the keyboard or just disable autorepeat for specific keys.
CROSH in Developer Mode
Chrome OS Developer mode is a special mode built into All Chromebooks which allowing users and developers to access the code behind the Chrome Operating System and load their own builds of ChromeOS. This mode also allows you to install dual-boot or another Linux system like Ubuntu that runs parallelly with Chrome OS.
In developer mode with CROSH, you also have the following commands available to you:
- shell: Opens a full bash shell where you can run other Linux commands, including ones that can launch standard Linux desktop environments after you install them.
- systrace: Start system tracing, allowing you to capture logs for debugging purposes.
- packet_capture: Start capturing and logging packets.
Further Reading



Remote Access to other PC's

While I use ChromeOS as a daily driver I also have Windows and Apple machines which I could connect to, there are plenty of services for accessing remote computers. as it happens if you're investing into the ChromeOS eco system Google has a very handy Remote Desktop solution
https://remotedesktop.google.com/access/
Set up remote access to your computer
You can set up remote access to your Mac, Windows, or Linux computer.
- On your computer, open Chrome.
- In the address bar, enter
remotedesktop.google.com/access
. - Under “Set up Remote Access,” click Download
- Follow the onscreen directions to download and install Chrome Remote Desktop.
You may have to enter your computer password to give Chrome Remote Desktop access. You may also be prompted to change security settings in Preferences.
This will provide you remote access to your Windows Linux or Mac desktops from a ChromeOS device.
How do I provide remote access to a ChromeOS device?

Because of the ChromeOS security model, there isn't an agent to provide remote access in the same way as your Chromebook,, you can however share your ChromeOS desktop using
You can give others remote access to your computer. They’ll have full access to your apps, files, emails, documents and history.
- On your computer, open Chrome.
- In the address bar at the top, enter
remotedesktop.google.com/support
, and press Enter. - Under “Get Support, “ click Download
- Follow the onscreen directions to download and install Chrome Remote Desktop.
- Under “Get Support,” select Generate Code.
- Copy the code and send to the person you want to have access to your computer.
- When that person enters your access code on the site, you will see a dialog with their e-mail address. Select Share to allow them full access to your computer.
- To end a sharing session, click Stop Sharing.
The access code will only work one time. If you are sharing your computer, you will be asked to confirm that you want to continue to share your computer every 30 minutes.
Using syncthing to Backup ChromeOS
Using ChromeOS in 90% of cases the backup to Google Drive will be mor ethan enough, there are however situations where you have multiple Google accounts or a Google Workspace account. with ChromeOS87 this is a problem if you want to sync files with the second account.
This post is one method of doing just this.

Final Thoughts

From its humble beginning of an OS based around a browser ChromeOS has grown to supply many additioanl features which has made it a well formed OS. The hardware has also grown from bargin basement #250 devices to flagship level hardware.
With all of the updates changes and enhancements its true that ChromeOS has become a bit of a behometh to navigate. Hopefully Google will spend some time simplifying the interface and levels of interface needed to get access to the things you need.
As someone who has been using ChromeOS using Brunch on a Dell XPS 13 i can attest with a little imagination its possible to function outside the word of Microsoft, Apple or Adobe.
References
