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

Going all in with CloudReady ChromeOS Home Edition
CloudReady for Home: Free Download — Neverware<p>Neverware turns your computersinto Chromebooks</p>Neverware[https://www.neverware.com/freedownload#intro-text]What is it?Back in 2011 Google released a new take on the desktop operating system whichthrew away everything you knew from Windows of …
It’s time for Brunch
A few days ago I wrote a post about CloudReady an OS based on ChromiumOS whicheffectivly puts Googles ChromeOS (i know) onto any old Laptop or Machbook. Going all in with CloudReady ChromeOS Home EditionCloudReady for Home: FreeDownload — Neverware<p>Neverware turns your computersintoChromebook…

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

  1. Open Settings
  2. Scroll down to Linux (Beta) or search in settings for Linux
  3. Click on Linux(Beta) — Turn On
  4. 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.
  5. Wait for installation of the Linux
  6. 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

Free office suite for Windows, Linux, and Mac OS
Work offline on documents stored on your PC or Mac with ONLYOFFICE Desktop Editors

and Microsoft VSCode

Download Visual Studio Code - Mac, Linux, Windows
Visual Studio Code is free and available on your favorite platform - Linux, macOS, and Windows. Download Visual Studio Code to experience a redefined code editor, optimized for building and debugging modern web and cloud applications.

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.

How to Run Ubuntu Container in Chrome OS - Make Tech Easier
The default Linux distro used in Chrome OS Crostini is Debian. You are not stuck with it, though. Here’s how to change it to run Ubuntu instead.
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.

What are Progressive Web Apps?
An introduction to Progressive Web Apps (PWAs) and the three pillars that separate them from other web apps.

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

Appscope
Appscope is a directory of Progressive Web Apps, showcasing hundreds of excellent PWA examples.

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

There Be Dragons Here!!!
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.

smooth scrolling google chrome

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

10+ Commands Included In Chrome OS’s Hidden Crosh Shell
Google’s Chrome OS 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 enabled.
Turn on Developer Mode on ChromeBook
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…
27 Handy Chrome OS Commands To Run In Crosh | Beebom
Bought a new Chromebook and looking to explore it? Here is a list of 27 handy Chrome OS commands that you can run in the Crosh shell on your Chromebook.

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.

  1. On your computer, open Chrome.
  2. In the address bar, enter remotedesktop.google.com/access.
  3. Under “Set up Remote Access,” click Download
Download page
  1. 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.

  1. On your computer, open Chrome.
  2. In the address bar at the top, enter remotedesktop.google.com/support, and press Enter.
  3. Under “Get Support, “ click Download
Download page
  1. Follow the onscreen directions to download and install Chrome Remote Desktop.
  2. Under “Get Support,” select Generate Code.
  3. Copy the code and send to the person you want to have access to your computer.
  4. 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.
  5. 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.

Backing up ChromeOS using Syncthing and inSync
I’ve recently run into a scenario using ChromeOS which is kind of annoying,however i’ve found a workaround which works for me. This might help someoneelse. ScenarioI have a Google account which is linked directly to my Chromebook, this means ican in the Files app see my google Files and backu…

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

How to install and run Docker on a Chromebook
This time, I would like to share a small script that will allow you to turn on your Chromebook into a machine capable of running Docker containers.