Category: Ubuntu 21.04

Ubuntu 21.04: Programming Apps

I got really behind proof-reading and finalizing these notes. So, I’m publishing them after I already installed the next version. Better late than never, right?


I use Virtualbox to run Windows and some development virtual machines.

sudo apt install virtualbox

Then, I went to File > Host Network Manager and clicked the “Create” button because some of my machines rely on vboxnet0.


sudo apt install \
        vim \
        vim-gtk3 \
        git-cola \
mkdir ~/.vimtmp
  • Vim (gtk version is for the Gvim – Gui): The improved Vi editor. It’s handy to be used to the key combinations for when I get to work on servers at work.
  • Git-Cola: is a Gui for Git, and it will also install Git as a dependency
  • Meld: a text compare tool

To setup Git, I ran the following commands:

git config --global "my name"
git config --global

Visual Studio

I’ve been using Visual Studio for my Angular Development. I could use it for Flutter development, but I prefer Android Studio for that. I just downloaded the deb package from the website.

sudo apt install  ~/Downloads/code_1.58.2-1626302803_amd64.deb

I have a few extensions that I have been installing. They are quick to install using Ctrl+P and then these commands:

  • ext install johnpapa.angular-essentials
  • ext install
  • ext install raagh.angular-karma-test-explorer
  • ext install hbenl.vscode-jasmine-test-adapter
  • ext install dart-code.flutter

Node JS

I use Node JS here and there for different projects. Here’s what I did to install it…

sudo apt install nodejs 
sudo apt install npm 
sudo npm install npm@latest -g
sudo npm install -g gulp 
sudo npm install -g grunt 
sudo npm link @angular/cli


I’m finding that I enjoy Flutter most these days. I referred to the instructions as I installed.

I used the snap method to install it:

sudo snap install flutter --classic

First things first, I had to run flutter doctor. That downloads the biggest part of flutter.

flutter doctor

I installed the “additional Linux requirements”:

sudo apt-get install clang cmake ninja-build pkg-config libgtk-3-dev

I downloaded Android Studio from the website. I just installed it by extracting it into the bin directory:

mkdir ~/bin/studio
tar -xzvf ~/Downloads/android-studio-ide-202.7486908-linux.tar.gz -C ~/bin/studio

Once extracted, I used the menu editor (MenuLibre) to create a launcher:

  • command: ~/bin/studio/android-studio/bin/
  • icon: ~/bin/studio/android-studio/bin/studio.svg

To allow the programs to run on the Linux desktop, I ran this command:

flutter config --enable-linux-desktop


I use MySQL and PHP on the backend of several projects. To make it easy to develop with those, I installed both this way:

sudo apt install mariadb-server-10.5 \
                  php7.4-fpm \
                  php-mysql \

Note: By doing php7.4-fpm instead of just php7.4, it avoids installing the whole Apache web server.

Rather than restoring the database from my old computer, I’ll just do a refresh from my production server. I did have to prep the database:

sudo mysql
create database matthew;
CREATE USER 'newuser'@'localhost' IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON * . * TO 'newuser'@'localhost';
Dell XPS 15

Ubuntu 21.04: Essentials

I’m a little late to the party here. I’ve been fighting with this install for 6 months! It got to the point that my laptop wouldn’t suspend and would crash when I would reboot. The next version of Ubuntu was released before I could get this proof read and published!

Restoring Files

I’ve been keeping a list of the files that I restore so I don’t forget anything. I like formatting the drive and starting from scratch, but I have to be careful what I copy back, otherwise it defeats the purpose. Maybe this list will help you think through what you need to backup and restore on your system:

  • ~/.ssh: connection keys for SSH connections 
  • ~/app: (as in application development) this is where I keep my play space for programming projects
  • ~/Documents: where most of my regular files, like documents, of course
  • ~/DigitalEagleServices: work-related files
  • ~/Insync: OneDrive files (saves times resyncing from the Internet)
  • ~/.config/google-chrome: my Google Chrome browser profile, restores bookmarks, last used tabs, browser history, etc.
  • ~/.remmina: the configuration for Remmina, the remote desktop software 
  • ~/.sword: the data files for the sword project, which I use with Xiphos
  • ~/.vim: my custom configurations for the Vi editor
  • ~/.vimrc: the actual configuration file for the Vi editor
  • ~/.local/share/fonts: extra fonts that I have collected over the years
  • /etc/NetworkManager/system-connections: this saves all of my wireless connections and VPN connections (I’m not sure this worked this time)
  • .local/share/applications: I review this directory for shortcuts to apps that I use
  • ~/bin: certain programs and scripts that I installed manually
  • ~/Zotero: research data, depending on how you installed it may be in ~/snap/zotero-snap/common/Zotero
  • ~/.config/obs-studio: my setup (scenes, etc) for OBS Studio

Permissions are important for the SSH files. Here’s how I fixed them:

chmod 600 ~/.ssh/*
chmod 644 ~/.ssh/authorized_keys2
chmod 644 ~/.ssh/known_hosts
chmod 644 ~/.ssh/config
chmod 644 ~/.ssh/*.pub

The network manager connection files also have to have certain permissions. So, it is easier to restore them to my Downloads directory and then use these commands:

cd ~/Downloads/system-connections/
chmod 600 *
sudo chown root:root *
sudo cp * /etc/NetworkManager/system-connections/
sudo service NetworkManager restart


Flameshot is my current screenshot tool. I need it installed sooner than later to help document. First off, it’s easy to install with:

sudo apt install flameshot

To make it better, I like it mapped to the print screen button. That way I get the control of Flameshot for every screenshot. Here’s the commands I can run on the command-line to make that happen:

gsettings set screenshot '[]'
 gsettings set custom-keybindings "['/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom0/']"
 gsettings set name 'flameshot'
 gsettings set command '/usr/bin/flameshot gui'
 gsettings set binding 'Print'

Finally, I went to Configuration > General and checked “Launch at startup”.

Note: My old favorite was Shutter. I haven’t installed it and gone back to it yet.


My favorite browser so far has been Google Chrome. I could make arguments for other browsers, but Chrome has been my favorite for a while. I downloaded the browser package from Google’s Website and installed it by double clicking on it in the Downloads folder (opened in the Software Center).

Don’t forget, I also restored my profile in ~/.config/google-chrome to keep all of my bookmarks and such. After that, I just had to sign in to my Google account at the upper right corner of the browser because it said the sync was paused. I had to sign in to all of the websites because it lost the session, but that was no big deal. I was back in business where I left off.

I also went to System Settings > Default Applications and set the default for Web to Chrome.

Password Management

On past installations, I have used KeePass2. Since getting into Flutter, I found AuthPass, which is a KeePass implementation in Flutter. So, I’m jumping ship and going for it. Their blog post documents an Apt repo, but that didn’t work. Here’s what I tried:

sudo add-apt-repository
sudo apt-get install authpass

Here’s the error you get when you try to update:

E: The repository ' hirsute Release' does not have a Release file.
 N: Updating from such a repository can't be done securely, and is therefore disabled by default.

Instead, I found a snap that I could install:

sudo snap install authpass

Cloud Syncs

Dropbox is the easiest cloud to get working. I don’t use it as much, but it’s nice to have. I just downloaded it from the website. I installed it and the dependency with:

sudo apt install python3-gpg
sudo apt install ~/Downloads/dropbox_2020.03.04_amd64.deb

After installing, it popped open a prompt to start Dropbox. That places the indicator icon by the clock. It also downloaded the “proprietary” binary required to make it work. It also opened a browser window to do the log in. I had trouble making that work until I signed into the website first and then connected the desktop client.

OneDrive itself doesn’t have a sync client. So, I have been using InSync. I just downloaded that from their website. Then, I installed with:

sudo apt install ~/Downloads/insync_3.4.2.40983-focal_amd64.deb

Like Dropbox, a short while after installing, it prompts to start InSync:

It starts by asking which account type you want to sync. When I picked Microsoft OneDrive, it opened the browser to a sign in page.

After signing in, this window took me through a few steps. I accepted the defaults until I got to the folders to sync. Then, I picked my folder for KeePass and for Joplin.

Work Software

I use VMWare Horizon for connections. I downloaded it from the website and installed with these commands:

cd ~/Downloads/
sudo chmod +x VMware-Horizon-Client-2103-8.2.0-17742757.x64.bundle
sudo apt install python
sudo ./VMware-Horizon-Client-2103-8.2.0-17742757.x64.bundle

I accepted the default for all of the questions after accepting the agreements. I had no problems with the install.

Teams is another key software needed for work. It allows me to chat and screenshare with others. I downloaded the official client from the website. I downloaded the deb file for the desktop client.

sudo apt install ~/Downloads/teams_1.4.00.13653_amd64.deb


I have an Nvida card, so I wanted to install the driver. Last Ubuntu version automatically installed the drvier. This time, I had to do it myself. I opened the Additional Drivers app an selected the 465 driver:

After trying the 465 and 470 drivers for a while, I found it was locking up a lot. Chrome and Teams would crash everytime I would open the laptop lid up. I guess restoring after a suspend caused memory issues. Worse, it would lock up everytime I would disconnect from my D6000 dock. So, I tried the 450 driver I had on the previous version of Ubuntu.


I haven’t done some good testing to confirm, but I think Power Top has doubled my battery life. I installed with:

sudo apt-get install tlp powertop
sudo tlp start
sudo tlp-stat -s

Just because it’s fun to see as the years go by, here’s the stats:

--- TLP 1.3.1 --------------------------------------------
 +++ System Info
 System         = Dell Inc.  XPS 15 7590
 BIOS           = 1.10.0
 Release        = Ubuntu 21.04
 Kernel         = 5.11.0-22-generic #23-Ubuntu SMP Thu Jun 17 00:34:23 UTC 2021 x86_64
 /proc/cmdline  = BOOT_IMAGE=/vmlinuz-5.11.0-22-generic root=/dev/mapper/vgubuntu-root ro quiet splash vt.handoff=7
 Init system    = systemd v247 (247.3-3ubuntu3.1)
 Boot mode      = UEFI
 +++ TLP Status
 State          = enabled
 RDW state      = enabled
 Last run       = 11:30:47 PM,     10 sec(s) ago
 Mode           = AC
 Power source   = AC


To be prepared for any VPN requirement, I install all the VPNs:

sudo apt install vpnc \
    network-manager-vpnc \
    network-manager-openconnect \
    network-manager-openconnect-gnome \
    openconnect \
    network-manager-iodine \
    network-manager-openvpn \
    network-manager-strongswan \
    network-manager-openvpn-gnome  \
    network-manager-iodine-gnome \


LIbreOffice comes pre-installed. But, to keep it up to date, I added the official repository:

sudo add-apt-repository ppa:libreoffice/ppa

For Bible study software, I use Xiphos. Remember up in the backup section, I restored the .sword directory for the Bible text and commentaries.

sudo apt install xiphos

I’ve been using Zotero off and on for a while now. It’s hard to figure out the best way to install in a way that keeps it automatically updated. I finally found a place that claims to update the repository within 24 hours of updates. So, I’ll use that.

wget -qO- | sudo bash
sudo apt update
sudo apt install zotero

Restoring the data directory was a big challenging because I had use the snap before. I had to move the data from ~/snap/zotero-snap/common/Zotero to ~/Zotero

I’ve been using Joplin as my notes application. I installed it from the software center, but I noticed it was a snap app:

snap install joplin-desktop

After installing, I went to Tools > Options > Synchronization, and I changed the target to OneDrive. After that, I exited back out to the main app and clicked the Synchronize button. That took me through the login process.


The cups-browsed service is very annoying because it adds printers that don’t get removed. So, a laptop that travels around a bit just collects printers that never get removed.

sudo systemctl stop cups-browsed
sudo systemctl disable cups-browsed

To install my Dell E525W printer, I downloaded the driver from the Dell website. I unzipped and installed the deb package:

cd ~/Downloads/
sudo apt install ./dell-color-mfp-e525w_1.0-28_all.deb

I have found the settings app unreliable for working with printers. So, I used the cups web interface at http://localhost:631. I added an IPP printer with the URL ipp://DELLA40A1E/ipp/ and the PPD file located at: /usr/share/cups/model/Dell/Dell_Color_MFP_E525w.ppd.gz

Application Package Systems

Ubuntu comes with the ability to use DEB packages and snap packages. I used this to add AppImages:

cd ~/Downloads/
 wget ""
 chmod a+x appimaged-x86_64.AppImage
 ./appimaged-x86_64.AppImage --install

And, I added Flatpak:

sudo apt install flatpak

Misc Utilities

Here are just a few utilities that I install:

sudo apt install menulibre \
       p7zip-full p7zip-rar \
       synaptic \
  • Menu Libre is a menu editor that makes it easy to add .desktop files to the menu system
  • 7Zip is handy for compression, although I rarely use it
  • synaptic just makes it easier to see what is installed
  • gnome-tweak-tool has a few settings that lets you tweak your system

Balena Etcher is one more utility that is great for putting images onto USB drivers for installing. I downloaded the AppImage from their website.

To finished the tweaks, I opened the regular settings app and made these changes:

  • Changed the time display on the top bar to 12 hour display under Date & Time > Time Format
  • Added the percentage by the battery indicator under Power > Suspend & Power Button > Show Battery Percentage (at the bottom)
  • Added the an avatar picture for my login under Users > click on the picture

In the Tweaks app (Gnome Tweak Tool), I made the following setting changes:

  • Added the weekday to the date with Top Bar > Clock > Weekday
  • Changed the modal behavior by unchecking Windows > Attach Modal Dialogs


Before I can install any extensions, I had to install the chrome plugin:

sudo apt install chrome-gnome-shell

I also had to have this extension from the Chrome Store. Actually, I just restored my Chrome profile so the extension came with that.

So, then, these are the extensions that I like:

I retired these two extensions. I list them because maybe I’ll go back:

  • Caffeine: the tool I used to use stop the computer from going to sleep
  • Do Not Disturb Button: I used to use this for hiding notifications during meetings. It’s no longer maintained.

Media Apps

I’ve had issues with old versions of Gimp and collaborating with others . According to Gimp’s website, 2.10.24 is the latest version. Gimp came installed as a snap and it is actually the latest version. So, I left it alone.

sudo apt install inkscape \
  • Inkscape: My go to program for drawing (vector-based drawing)
  • Xournal: I use it for annotating PDFs

These are the programs I use with audio:

sudo apt install audacity \
           soundconverter \
           musescore3 \
  • Audacity: good for editing sound
  • soundconverter: good for changing sound formats
  • Musescore: good for working with sheet music
  • Easytag: good for changing the files’ meta-data


These are the basic programs I like:

sudo apt install mplayer \
       vlc \
  • mplayer: simple video player
  • vlc: good player that will play about anything
  • youtube-dl: makes it easy to download things from YouTube

For the codecs, I installed:

sudo apt install \
      libdvdnav4 \
      libdvd-pkg \
      gstreamer1.0-plugins-bad \
      gstreamer1.0-plugins-ugly \
sudo dpkg-reconfigure libdvd-pkg 

Note: If you forget that second (reconfigure) command, you’ll get errors like this every apt install:

libdvd-pkg: apt-get check failed, you may have broken packages. Aborting…
 N: Download is performed unsandboxed as root as file '/home/skp/Downloads/insync_3.4.2.40983-focal_amd64.deb' couldn't be accessed by user '_apt'. - pkgAcquire::Run (13: Permission denied)

For OBS, I repeated what I did on the last version of Ubuntu:

sudo apt install ffmpeg
sudo add-apt-repository ppa:obsproject/obs-studio
sudo apt install obs-studio

I found most of the plugins and such came over by restoring the config directory. One thing I did have to do was download the plugin from Dev47Apps and put it into ~/.config/obs-studio/plugins

Finally, I use Kdenlive for editing videos. I just downloaded the AppImage from their download page.