Pop!_OS is a Ubuntu-based distribution produced by System76. It has received good press and is, at the time of writing, ranked in fifth place in the linux distribution popularity rankings over at https://distrowatch.com/.
Certainly, Ubuntu with extra polish sounds like a strong proposition. Can Pop!_OS breath new life into a slightly tired MacBook Pro manufactured in the heady days of early 2015—a whole 7 years ago? Let’s find out …
Installation
- I went with the latest long-term support version at the time of writing, Pop!_OS 20.04 LTS
- In Ubuntu-land using the long-term support version means more time between operating system installs, however it seems that for Pop!_OS it actually makes no difference, with the LTS releases being supported for the same length of time as any other
- The install was quick; I told it to take over the whole drive; which timezone and language etc, username and pass for the first user, select a keyboard layout, all that standard stuff. Fast and trouble-free
Usability: initial finesse
A few things that required a some small tweaks out of the box:
- Auto screen brightness does not work that well so I turned that off in Settings→Display
- The touchpad sensitivity, also in settings
- Not sure about Bluetooth so I turned that off … I am happy to use wires
- It was not obvious how to right-click: it turns out that a click with two fingers on the touch pad will do it
- Out of the box the command/⌘ key to the left of space bar on the Mac keyboard seems to show all windows and provide an application picker and search functionality, which is quite handy
Usability: essential tweaks
There are only two bits of utter madness and these are thankfully very easy to sort out:
- The windows have a close button but no minimise or maximise buttons by default. This is apparently a GNOME decision which can be sorted with
gsettings set org.gnome.desktop.wm.preferences button-layout ":minimize,maximize,close"
(reference: https://github.com/pop-os/pop/issues/64#issuecomment-801094753) - The default terminal program has a blinking cursor which then stops blinking after a time. Personally this was not to my taste, so I turned it off with with
gsettings set org.gnome.Terminal.Legacy.Profile:/org/gnome/terminal/legacy/profiles:/:$(gsettings get org.gnome.Terminal.ProfilesList default|tr -d \')/ cursor-blink-mode off
Initial setup
- Set hostname with
hostnamectl set-hostname obiwan
where the latter is the hostname of choice - No need to install redshift or similar to add red to the display as this is a built-in option in the display settings
- pop! shop (a front-end to apt) can be used to easily install e.g.
- Spotify
- PulseEffects (to allow you to have an EQ)
- Old-school apt e.g.
sudo apt install neovim tmux zsh
for- Neovim
- tmux
- zsh
- Going to the website and following the instructions for linux/ubuntu/debian works well for
- 1password (https://1password.com/downloads/linux/)
- Dropbox
- Brave
- miniconda
wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh
- There now seems to be a command to stop conda activating the base environement automatically which is quite nice:
conda config --set auto_activate_base false
- I quite like to remove anything that seems glaringly unnecessary
- I don’t want all of libreoffice so as root I just ran
apt remove --purge libreoffice*
- Removing anything not needed means that
apt update
andapt upgrade
take less time
- I don’t want all of libreoffice so as root I just ran
- Get nfs mounts working
sudo apt install nfs-common
sudo mkdir /mnt/mount-name
sudo mount server-name:/mount-name /mnt/mount-name
Further setup: sorting the shell with zsh+prezto
- Install zsh with
apt
- Check
/usr/bin/zsh
in/etc/shells
- Change default shell to zsh with
chsh -s /usr/bin/zsh
- prezto is a super simple install following the steps at: https://github.com/sorin-ionescu/prezto
Further setup: Gatsby
The node
available via apt
is too old so a more recent version is required.
curl -fsSL https://deb.nodesource.com/setup_17.x | sudo -E bash -
sudo apt-get install -y nodejs
npm install
then worked for me as I already have apackages.json
in the repo that holds my gatsby files- If using node v17 need to tweak the packages.json file per https://stackoverflow.com/a/69665354 and/or
export NODE_OPTIONS=--openssl-legacy-provider
- Can then
npx gatsby develop
as normal
Gremlins
I had no idea what this meant but it looked like it needed sorting out:
Err:9 http://repository.spotify.com stable InRelease
The following signatures couldn't be verified because the public key is not available: NO_PUBKEY 5E3C45D7B312C643
Reading package lists... Done
W: GPG error: http://repository.spotify.com stable InRelease: The following signatures couldn't be verified because the public key is not available: NO_PUBKEY 5E3C45D7B312C643
E: The repository 'http://repository.spotify.com stable InRelease' is not signed.
N: Updating from such a repository can't be done securely, and is therefore disabled by default.
N: See apt-secure(8) manpage for repository creation and user configuration details.
Thanks to https://chrisjean.com/fix-apt-get-update-the-following-signatures-couldnt-be-verified-because-the-public-key-is-not-available/ for an explainer and solution though …
It can be fixed with a quick
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 5E3C45D7B312C643
Polishing: gnome-tweaks and kinto.sh
Further customisation can be undertaken with gnome-tweaks which can be installed with sudo apt install gnome-tweaks
, which is then run as tweaks
.
I changed the following:
- General -> Animations: Off
- Keyboard & Mouse -> Mouse -> Acceleration profile: Adaptive
The final change I wanted was for e.g. ⌘-c, ⌘-v to work across the browser, terminal, etc, which was achieved with kinto.sh.
Bonuses
- Quite a lot just works
- The wifi, changing screen brightness, headphone volume, etc. just works and with sensible little screen overlays to show you what is going on, like MacOS
- It’s fast
- The Intel Core i5 with two cores at 2.7 GHz—which feels semi-vintage in the age of the new M1 Apple silicon—feels snappy again and
free -h
tells me I am using only 3GB of the available 8GB of RAM, and a quickdf -h
tells me that 15 Gb is being used by the installed software, which is not too bad for a modern system
- The Intel Core i5 with two cores at 2.7 GHz—which feels semi-vintage in the age of the new M1 Apple silicon—feels snappy again and
- Proper EQ
- The PulseEffects EQ plug-in is aggressive i.e. it has no problem at all clipping the output signal and it will not stop you doing so. Spotify seems to output high by default so to add any kind of headroom you need to reduce the input and output levels. The ‘gstreamer_more_bass’ preset is pretty much what I was looking for and works well. Combined PulseAudio and PulseEffects do use about 25% CPU which seems acceptable
- Tiling windows
- Tiling windows can be toggled on and off which is a significant productivity enhancement as you don’t then have to try to line up two windows side by side when you want to use both of them
- Very sensible automounting behaviour
- Stick a usb stick in
- Gnome disks (
disks
) tells you the device, the partition scheme, the filesystem, and where it is mounted … - … mounting defaults to
/media/$USER/$VOLUME_NAME
which is very sensible
- External display works well over HDMI
- It looks quick nice I think …
Addendum, August 2022
I enjoyed my adventures with Pop!_OS enough to install it on another machine, this time using the latest release at that time, Pop!_OS 22.04 LTS
I found out a few extra things:
- For the ‘Happy Hacker Keyboard Pro’, a standard US layout is the one to go for
Alacritty
is the terminal to use: it can use the GPU and does not have a blinking cursor by defaultsudo apt install -y ubuntu-restricted-extras
will install certain software which cannot be auto-installed (per https://support.system76.com/articles/codecs/)- To install the Python
scipy
package with eitherpip
orpoetry
you will need tosudo apt-get install libblas-dev liblapack-dev gfortran
Addendum, June 2023
To get coloured words at boot rather than a somewhat dull grey splash screen at boot:
sudo kernelstub --delete-options "quiet systemd.show_status=false splash"
sudo kernelstub --add-options "systemd.show_status=true"
Reference: https://saputra.org/threads/disable-boot-splash-screen-on-pop-_os-20-04-desktop-linux.197/