How to Export and Import VirtualBox Virtual Machines

Exporting and Importing feature is available in all the virtualization software you use. This feature will be very useful when you want to copy and launch a configured VM from one machine to another machine.

This feature is very useful for me, as I have a lot of virtual machines running on VirtualBox for testing and writing articles, and for VM level protection I can take snapshots and protect my VM.

But if my Host machine crashes then I have to configure all the VM from scratch. It is a tedious task for me. So once I fully configure any VM I export it and save a copy in my external disk so when I lose the image I can import the image into VirtualBox.

Exporting and Importing Virtual Machines in Virtualbox

Virtualbox uses OVA file format which includes Descriptor file (OVF), Manifest File (MF), and other related files. This is a standard format used in many popular virtualization software too like Vmware. Exporting and Importing VM images can be done in few clicks.

Exporting Virtual Machines in Virtualbox

Go to File → Export Appliance or press “CTRL+E”.

Export Virtual Appliance
Export Virtual Appliance

You will get the list of Virtual Machines that can be exported. Press Expert Mode and configure all the options in a single window. You have to choose the virtualization format version, where your exported .ova file is going to be saved in the local file system.

VirtualBox Virtual Machines
VirtualBox Virtual Machines
Export Virtual Machines
Export Virtual Machines

Once you press Export, exporting process will be started.

Exporting Virtual Machine
Exporting Virtual Machine

You will see .ova file is created as a part of the export process.

$ ls -l *.ova

-rw------- 1 linuxshelltips linuxshelltips 988830720 May  5 08:57 Fedora_34.ova

Importing Virtual Machines in Virtualbox

Now you can reprovision the image by importing the VM. Go to File → Import Appliance or press CTRL + I.

Import Virtual Appliance
Import Virtual Appliance

You have to choose the exported image and press Import.

Import Virtual Machine
Import Virtual Machine
Import Virtual Machine Settings
Import Virtual Machine Settings

You will see the disk image getting imported. It will take some time and that depends on your disk image size.

Importing Virtual Machine
Importing Virtual Machine

Now I have successfully imported the image and can now start running the VM straight away without any changes.

Imported Virtual Machine
Imported Virtual Machine

In the next article, we will see how to install PHP Virtualbox and manage Virtual Machines in PHP VirtualBox – a web-based user interface.


Ultimate guide to backup Ubuntu systems using Timeshift

In this tutorial, we will learn how to perform Ubuntu backups using Timeshift. Timeshift is a fabulous tool that is used for the backup & restoration of the Linux operating system, it takes incremental backup after the first initial complete backup. TImeshit creates filesystem snapshots using Rsync or BTRFS. It has a nice GUI as well as support for CLI.

Timeshifts also have support for scheduled snapshots, multiple backup levels & also exclude filters. Snapshots can be easily restored even if the system is running from a Live CD or USB.

So let’s now start with the installation of Timeshift.

Install Timeshift in Ubuntu 20.04 or up

If you are running Ubuntu 20.04 or up, then you just need to run a single command to install Timeshift on Ubuntu as the timeshift packages are available in default repositories,

$ sudo apt install timeshift

Install Timeshift in Ubuntu 19.10 or older

If you are running Ubuntu 19.10 or older versions (which you should not be using), then you are required to add the repository for timeshift first & then install timeshift. Use the following commands to perform the actions,

$ sudo add-apt-repository -y ppa:teejee2008/ppa

$ sudo apt update

$ sudo apt install timeshift

Performing Ubuntu Backup using Timeshift

Now that we have the timeshift installed on our Ubuntu systems, we can start creating the snapshots for our Ubuntu installation. Browse or search the menu for timeshift & open it.

Once timeshift is opened, you will be asked to select the preferred snapshot type. You will have the options for selecting,

1- RSYNC – Rsync takes backup with the rsync command and also used hard links. Rsync backups are browsable using file managers.

2- BTRFS – with this mode, timeshift uses in-built features of BTRFS & then to restore snapshots, BTRFS should be supported with the Ubuntu-type subvolume layout.

You can select either but we will be using rsync,

Once on the next screen, you are required to select the destination drive to save your snapshots. Select a suitable drive (which is not the source drive) & press ‘Next’. On the next screen, you will be asked to select screenshot level. It can be either ‘Monthly’, ‘Weekly’, ‘Daily’, ‘Hourly’ or on ‘Boot’,

ubuntu backup

Now click on ‘Finish’ to complete the setup. Now your initial setup is complete & you can start creating your backup snapshots. To create the backup, click on ‘Create’ on the main menu,

The backup process will now start and once it’s complete, click on ‘Finish’.

Restore the backup

Similar to how we created the backup, restoration is also pretty simple. From the main menu, click on the option ‘Restore’, & then select the snapshot from the list. Next, you need to provide the destination to where this snapshot needs to be restored.

Before clicking on restore, you can also perform ‘Dry Run’ to verify all files and folders. Once you are ok, you can click next & the restoration process will start. It will take some time to complete.

Now that we have discussed how to perform Ubuntu backup using the GUI, we will take a look at CLI commands as well.

Create Ubuntu backup using CLI

Timeshift also supports the command line to create and restore the backup. to create a backup, simply run the following command,

$ sudo timeshift –create –comments “Backup with CLI” –tags D

In tags, you can any of the following options,

–tags D stands for Daily Backup

–tags W stands for Weekly Backup

–tags M stands for Monthly Backup

–tags O stands for On-demand Backup

Restore a backup using  CLI

To restore a backup using the timeshift in CLI, use the following command,

$ sudo timeshift –restore

You will then be asked to select a snapshot from the list by pressing the number for that snapshot. Then press enter key to continue.

For the next step, it will ask to Re-install the GRUB2 bootloader, press ‘Y’, and then again press ‘Y’ & enter to start the restoration process.

With this, we end our tutorial on how to backup Ubuntu using Timeshift. If you have any questions or queries, please do send them in using the comment box below.


Linux File System Types Explained, Which One Should You Use

Linux supports a variety of file systems such as ext4, ZFS, XFS, Btrfs, Reiser4, and so on. Different types of file systems solve different kinds of problems and their usage is application specific.

Choosing Linux file system that is appropriate for your application is an important decision. This tutorial describes some of the major Linux file systems and provides recommendations on the right file system to suit your application.

Table of contents

What is Linux file system

Almost every bit of data and programming that is needed to boot a Linux system and keep it working is saved in the file system. For example, the operating system itself, compilers, application programs, shared libraries, configuration files, log files, media mount points, and so on.

File systems operate in the background. Like the rest of an operating system’s kernel, they’re largely invisible in everyday use.

Linux file system is generally a built-in layer of a Linux operating system used to handle the data management of the storage. It controls how data is stored and retrieved. It manages the file name, file size, creation date, and much more information about a file.

ext4 file system

In 1992 the Extended File System or ext was launched specifically for the Linux operating system. It has its roots in the Minix Operating system. In 1993 an update called Extended File System 2 or ext2 was then released and was for many years the default file system in many Linux distros. By 2001 ext2 was upgraded to ext3 which introduced journaling to protect against corruption in the event of crashes or power failures.

Ext4 (Fourth Extended Filesystem) was introduced in 2008 and it is the default Linux filesystem since 2010. It was designed as a progressive revision of the ext3 file system and overcomes a number of limitations in ext3. It has significant advantages over its predecessor such as improved design, better performance, reliability, and new features.

Nowadays ext4 is the default file system on most Linux distributions. It can support files and file systems of up to 16 terabytes in size. It also supports an unlimited number of sub-directories (the ext3 file system only supports up to 32,000). Further, ext4 is backward compatible with ext3 and ext2, allowing these older versions to be mounted with the ext4 driver.

There is a reason ext4 is the default choice for most Linux distributions. It’s tried, tested, stable, performs great, and is widely supported. If you are looking for stability, ext4 is the best Linux filesystem for you.

Despite all of its features, ext4 does not support transparent compression, transparent encryption, or data deduplication.

XFS file system

XFS is a highly scalable file system that was developed by Silicon Graphics and first deployed in the Unix-based IRIX operating system in 1994. It is a journaling file system and, as such, keeps track of changes in a log before committing the changes to the main file system. The advantage is guaranteed consistency of the file system and expedited recovery in the event of power failures or system crashes.

Originally XFS was created to support extremely large filesystems with sizes of up to 16 exabytes and file sizes of up to 8 exabytes. It has a long history of running on large servers and storage arrays.

One notable feature of XFS is Guaranteed Rate IO. This allows applications to reserve bandwidth. The file system calculates the available performance and adjusts its operation according to the existing reservations.

XFS has a reputation of operating in environments that require high performance and scalability and hence is routinely measured as one of the highest performing file systems on large systems with enterprise workloads.

Today XFS is supported by most Linux distributions and has now become the default filesystem on Red Hat Enterprise Linux, Oracle Linux, CentOS and many other distributions.

Best use cases for XFS file system

So, do you have a large server? Do you have large storage requirements or have a local, slow SATA drive?

If both your server and your storage device are large, and there is no need to reduce the filesystem size, XFS is likely to be the best choice. XFS is a great filesystem, that scales well for large servers. But even with smaller storage arrays, XFS performs very well when the average file sizes are large, for example, hundreds of megabytes in size.

Btrfs file system

Btrfs is the next generation general purpose Linux file system that offers unique features like advanced integrated device management, scalability and reliability. It is licensed under the GPL and open for contribution from anyone. Different names are used for the file system, including “Butter FS”, “B-tree FS”, and “Better FS”.

Btrfs development began at Oracle in 2007. It was merged into the mainline Linux kernel in the beginning of 2009 and debuted in the Linux 2.6.29 release.

Btrfs is not a successor to the default ext4 file system used in most Linux distributions, but it offer better scalability and reliability. Btrfs is a copy-on-write (CoW) file system intended to address various weaknesses in current Linux file systems. It primary focusing on fault tolerance, self-healing properties, and easy administration.

Btrfs can support up to a 16 exbibyte partition and a file of the same size. If you are confused by the numbers, all you need to know is that Btrfs can support up to sixteen times of the data of Ext4.

How does Copy-on-Write work and why would you want it

On a traditional file system, modifying a file would read the data, change it and then write it back to the same place. In a copy on write file system, it reads the data, changes it and writes it to a new location. This prevents the loss of data during the read-modify-write transaction because the data is always on disk.

Since you don’t “repoint” until the new block is completely written out, if you lose power or crash in the middle of a write, you end up with either the old block or the new block, but not a half-written corrupted block. So you don’t need to fsck filesystems on startup and you lower your risk of data corruption.

You can snapshot the filesystem at any point, creating a snapshot entry in the metadata with the current set of pointers. This protects old blocks from being garbage collected later on and allows the filesystem to present a volume as it was during the snapshot. In other words, you have instant rollback capabilities. You can even clone that volume to make it a writable volume based on the snapshot.

Your other choice is ZFS on Linux, which may be more stable, but requires a few more steps to install on typical Linux distributions.

Btrfs features

  • Copy on Write (CoW) and snapshotting – Make incremental backups painless even from a “hot” filesystem or virtual machine (VM).
  • File level checksums – Metadata for each file includes a checksum that is used to detect and repair errors.
  • Compression – Files may be compressed and decompressed on the fly, which speeds up read performance.
  • Auto defragmentation – The filesystems are tuned by a background thread while they are in use.
  • Subvolumes – Filesystems can share a single pool of space instead of being put into their own partitions.
  • RAID – Btrfs does its own RAID implementations so LVM or mdadm are not required in to have RAID. Currently RAID 0, 1 and 10 are supported. RAID 5 and 6 are considered unstable.
  • Partitions are optional – While Btrfs can work with partitions, it has the potential to use raw devices (/dev/<device>) directly.
  • Data deduplication – There is limited data deduplication support; however, deduplication will eventually become a standard feature in Btrfs. This enables Btrfs to save space by comparing files via binary diffs.

Btrfs is a filesystem that does not need administration once it has been implemented, that is, you should never have to run an fsck on it. Whenever any errors or inconsistencies arise, it should just handle them on its own and be on its way.

While it is true that Btrfs is still considered experimental and it is currently under active development, the time when Btrfs will become the default filesystem for Linux systems is getting closer. Some Linux distributions have already begun to switch to it with their current releases.

If you aren’t afraid of having to deal with a somewhat less mature ecosystem, though, Btrfs may be the better option for you.

ZFS file system

ZFS (Zettabyte File System) remains one of the most technically advanced and feature-complete filesystems since it appeared in October 2005. It is a local filesystem (i.e.: ext4) and logical volume manager (i.e.: LVM) created by Sun Microsystems. ZFS was published under an open source license until Oracle bought Sun Microsystems and closed source the license.

You can think of ZFS as volume manager and a RAID array in one, which allows extra disks to be added to your ZFS volume which allows extra space to be added to your file system all at once. In addition to, ZFS comes with some other features that traditional RAID doesn’t have.

ZFS depends heavily on memory, so you need at least 8GB to start. In practice, use as much you can get for your hardware/budget.

ZFS is commonly used by data hoarders, NAS users, and other geeks who prefer to put their trust in a redundant storage system of their own rather than the cloud. It’s a great file system to use for managing multiple disks of data and rivals some of the greatest RAID setups.

ZFS is similar to other storage management approaches, but in some ways, it’s radically different. ZFS does not normally use the Linux Logical Volume Manager (LVM) or disk partitions, and it’s usually convenient to delete partitions and LVM structures prior to preparing media for a zpool.

The zpool is the analog of the LVM. A zpool spans one or more storage devices, and members of a zpool may be of several various types. The basic storage elements are single devices, mirrors and raidz. All of these storage elements are called vdevs.

ZFS is able to enforce storage integrity far better than any RAID controller, as it has intimate knowledge of the structure of the filesystem. Data safety is an important design feature of ZFS. All blocks written in a zpool are aggressively checksummed to ensure the data’s consistency and correctness.

For server use where you want to eliminate almost entirely any possibility of data loss and stability is the name of the game, you may want to look into ZFS.

ZFS features

Endless scalability. Well, it’s not technically endless, but it’s a 128-bit file system that’s capable of managing zettabytes (one billion terabytes) of data. Therefore, no matter how much hard drive space you have, ZFS will be suitable for managing it.

Maximum integrity. Everything you do inside of ZFS uses a checksum to ensure file integrity.  You can rest assured that your files and their redundant copies will not encounter silent data corruption.  Also, while ZFS is busy quietly checking your data for integrity, it will do automatic repairs anytime it can.

Drive pooling. The creators of ZFS want you to think of it as being similar to the way your computer uses RAM. When you need more memory in your computer, you put in another stick and you’re done. Similarly with ZFS, when you need more hard drive space, you put in another hard drive and you’re done. No need to spend time partitioning, formatting, initializing, or doing anything else to your disks. When you need a bigger storage “pool”, just add disks.

RAID. ZFS is capable of many different RAID levels, all while delivering performance that’s comparable to that of hardware RAID controllers. This allows you to save money, make setup easier, and have access to superior RAID levels that ZFS has improved upon.

Reiser4 file system

ReiserFS is a general-purpose, journaled computer file system initially designed and implemented by a team at Namesys led by Hans Reiser. Introduced in version 2.4.1 of the Linux kernel, it was the first journaling file system to be included in the standard kernel.

With the exception of security updates and critical bug fixes, Namesys has ceased development on ReiserFS. Reiser4 is the successor filesystem for ReiserFS. It has added encryption, improved performance, and much more.

Reiser4 requires a patched kernel. It is still not included in the official Linux kernel, but patches for Linux-5.x is already available. The reasons Reiser4 is not in the Linux kernel today can be summarized as claims that further testing are required.

Reiser4 provides the most efficient disk space usage among all file systems in all scenarios and workloads. ReiserFS offers advantages over other file systems, especially when it comes to handling a large number of small files. It supports journaling for fast recovery in case of problems. The file system structure is based on trees. In addition, Reiser4 consumes a little more CPU than other filesystems.

Reiser4 has a unique ability to optimize disk space occupied by small files (less than one block). They are stored entirely in their inode, without allocation of blocks in the data area.

As well as implementing the traditional Linux filesystem functions, reiser4 provides users with a number of additional features: transparent compression and encryption of files, full data journaling, as well as almost unlimited (with the help of plug-in architecture) extensibility.

However, there is currently no support for direct IO (work has begun on implementation), quotas, and POSIX ACL.


Choosing the file system that satisfies your specific application needs requires consultation and research of various parameters. This article outlines the benefits of ext4, ZFS, XFS, Btrfs, and Reiser4 file system options and to assist you make the decision regarding the right file system for your application environments. Thank you for spending your time here.


Top Things To Do After Installing Ubuntu 20.04 Focal Fossa To Make The Most Of It

Top things to do after installing Ubuntu 20.04

Ubuntu 20.04 LTS (Focal Fossa) has been released, so I’ve prepared a list of top things to do after installing it.

Whether you’re new to Ubuntu or a long-time user, use this list of top things to do after installing the latest Ubuntu 20.04 LTS, to help you get most things set up so you can enjoy your new Ubuntu 20.04 LTS desktop, and customize it to accommodate your needs.

I obviously don’t know what each user does after a fresh Ubuntu installation, so this list contains the things I do that I think would benefit others. Use the tweaks that you find useful for your use case.

Enhance your GNOME desktop in Ubuntu 20.04 Focal Fossa

1. GNOME Tweaks

GNOME Tweaks

GNOME Tweaks is a must-have for any GNOME Shell user. I gives access to extra settings like changing the GTK, icon and Shell theme, enable or disable GNOME Shell extensions, change the fonts, disable mouse acceleration (set it to Flat in Tweaks), disable touchpad while typing, add startup applications, tweak the top bar, window titlebars, windows and workspaces.

Install Tweaks by clicking on this button or using the command below it:

sudo apt install gnome-tweaks

To change the GNOME Shell theme you’ll need to install the User themes extension. This is available in the gnome-shell-extensions package, which includes the default GNOME Shell extensions, and you can install it by clicking this button or using the command below it:

sudo apt install gnome-shell-extensions

After installing it, restart Gnome Shell (in the default X11 session, restart GNOME Shell by pressing Alt + F2, typing r and pressing the Enter key; in case you’ve switched to Wayland you’ll need to logout and relogin), and enable the User themes extension using the Gnome Tweaks application.

I know a lot of users would like to use a dark GNOME Shell theme, even when using the default (mixed) Yaru theme. So in case you’re one of them, now you can change the GNOME Shell theme to Yaru Dark by opening the Tweaks application (if it remained running after enabling the User themes extension, close and reopen Tweaks), clicking on Appearance in the left-hand sidebar, and changing the Shell theme from Default to Yaru-dark.

2. Customize Ubuntu Dock

Ubuntu 20.04 Dock settings

The dock shown on the left-hand side of the desktop by default, used to display running applications and pin applications icons, can be configured from Settings -> Appearance. From there you can choose to set it to autohide, change its icon size, and its position on the screen (left, right or bottom).

There are a lot more customization options for Ubuntu Dock available via Dconf Editor, which you can install by clicking on this button or using the command below it:

sudo apt install dconf-editor
Ubuntu 20.04 dconf editor dock settings

With Dconf Editor, go to org -> gnome -> shell -> extensions -> dash-to-dock, and you’ll be able to enable minimize on click for the dock icons (set click-action to minimize), change its background opacity, set the hide delay, change the intellihide mode from the default “all windows” to focused windows or maximized windows only, change the running indicator (dot) style and color, hide mounted volumes (like USB drives) from the dock, show a trash can on the dock, and more.

If you want to replace Ubuntu Dock with something else, like Plank, see here a list of ways of getting rid of Ubuntu Dock.

3. Spice up your Ubuntu 20.04 desktop with some GNOME Shell extensions

GNOME Shell ca be extended with the help of extensions. There are thousands of extensions available to install, and you can find them on

To be able to install GNOME Shell extensions through the GNOME Shell Extensions website, you’ll need to install a package from the repositories – install it by clicking this button or using the command below it:

sudo apt install chrome-gnome-shell

Next you’ll need to install a web browser extension: for Firefox or Google Chrome / Chromium.

Now to install a GNOME Shell extension, go to in the web browser where you’ve installed the extension mentioned above, search for the extension you want to install, and on its page click the OFF toggle in the page upper right-hand side corner to turn it ON. A popup will ask you if you wish to install the extension – click Install and the extension will be installed on your system.

You can update installed extensions, remove or disable extensions, and access their settings by visiting You may also enable / disable extensions and access their settings by using the Tweaks application.

4. Automatically change the Shell / GTK theme to dark variant when GNOME Night Light is on

GNOME Shell Nigh Light change theme

The GNOME Night Light feature is used to make your display switch to a warmer color in the evening, helping you sleep better and prevent eye strain.

This feature can be enabled from Settings -> Display -> Night Light. From there you can choose to have it run automatically based on sunset / sunrise times or enable it on a manual schedule, and you can also control the color temperature.

If you’d like to extend the Night Light functionality to automatically switch to the dark variant of the GTK and GNOME Shell theme when Night Light kicks in, there are a couple of small GNOME Shell extensions that do just that. When Night Light is turned off, either by you or the schedule you set in Settings, the theme is switched back to the regular GTK / Shell theme variant.

To have this feature, after you enable installing themes from as explained in step 3 above, install the following 2 GNOME Shell extensions (Night Theme Switcher is for changing your GTK theme when Night Light is on, and Night Shell Switcher is for changing your GNOME Shell theme based on the Night Light schedule):

All you need is these two extensions installed, and have GNOME Night Light enabled, and the theme will be switched automatically based on the Night Light schedule.

In case you want to use a different GTK3 theme for some applications (like have Night Light change the GTK3 theme to dark, but force a few application to use light themes), see this article.

5. Android users: Integrate your phone with the Ubuntu 20.04 GNOME Shell desktop using GSConnect


In case you use Android, you can integrate your phone with your Ubuntu (GNOME) desktop by using GSConnect.

GSConnect is a complete implementation of KDE Connect especially for GNOME Shell. You can get notifications from your Android phone on your desktop (and vice versa), reply to messages received on Android from your desktop, easily share files, and remote control some aspects of your desktop from your Android phone.

You’ll also need to install KDE Connect on your Android phone, either from Google Play or F-Droid.

As a side note, I linked to the GSConnect GNOME Shell Extensions website so you install the extension from there, and not the Ubuntu repositories. That’s because while GSConnect can be found in the Ubuntu 20.04 repositories, it’s an ancient version.

6. Quick application launcher with extra features

While the GNOME Shell built-in application launcher is fast in Ubuntu 20.04 LTS, I personally still prefer to use a quick launcher. Not only because it’s fast, but because it can do a lot of things thanks to plugins.

There are quite a few quick launchers available for Ubuntu, but in this article I’ll only list one, which I find to cover most needs.

Ulauncher quick application launcher

Ulauncher is a Python 3 / GTK+ 3 application launcher that features fuzzy search, custom color themes, filesystem integration (so you can browse files on your system using it), and support for plugins.

There are over 70 extensions available for Ulauncher, for various purposes like search and start VirtualBox machine, translate with Google Translate, convert between various measuring units, integration for clipboard managers like GPaste or CopyQ, it integrates with password managers such as pass or Bitwarden, kill processes, search and insert Emoji, and much more.

Once it’s installed and running, activate Ulauncher using Ctrl + Space by default, then you can start typing what you’re looking for.

You’ll need to install the Ulauncher extensions separately, by visiting its extensions website and then pasting the extension URL in the Ulauncher preferences (after clicking Add extension).

7. Fix Qt5 applications style under GNOME Shell on Ubuntu 20.04

Qt5 applications look out of place (ugly – there, I’ve said it) on Ubuntu 20.04, not respecting the GTK+ theme.

There is a way to get them to look as close as possible to the default Ubuntu 20.04 Yaru theme though. No, not by using the old export QT_QPA_PLATFORMTHEME=gtk2 tweak, that causes Qt5 applications to start very slowly on a fresh Ubuntu installation, starting with Ubuntu 19.10 (it still happens on Ubuntu 20.04), but by using Kvantum.

Kvantum is an SVG-based theme engine for Qt. We can use it on GNOME to style Qt5 applications to look more native, thanks to the Kvantum built-in theme KvYaru, which looks very similar to the default Ubuntu 20.04 theme Yaru.

This only works with native applications (DEB / built from source); snap and flatpak applications will continue to look the same as before.

This is how VLC and Qbittorrent, two Qt5 applications, look by default on Ubuntu 20.04:

Qt5 applications ugly on ubuntu 20.04

This is how they look after using Kvantum with the KvYaru theme:

Qt5 applications Kvantum kvyaru Ubuntu 20.04

Install the Kvantum Qt5 style and the Kvantum themes packages by clicking this button or using the command below it:

sudo apt install qt5-style-kvantum qt5-style-kvantum-themes

Next, open the ~/.profile file with Gedit:

gedit ~/.profile

At the bottom of this file, add a new line with:

export QT_STYLE_OVERRIDE=kvantum

Save the file, and open Kvantum from the applications menu. Click on Change/Delete Theme, and choose KvYaru as the theme to use for Qt5 applications:

Kvantum kvYaru style for Qt5 applications

Now you need to logout and relogin. Open some Qt5 application and it should… no longer be ugly.

You may also like: How To Add A Show Desktop Icon To Ubuntu Dock / Dash To Dock

Enable flatpak and add the Flathub repository

Flatpak is a tool for building and distributing desktop applications on Linux in a sandbox environment (isolated from the rest of the system). Flatpak packages are built to be distribution and desktop agnostic, and come with all the dependencies needed, which makes them larger than native packages (but after installing a runtime – which provides the basic dependencies used by some applications -, the size decreases considerably), but this also means it can run on systems where the application dependencies are not available.

Flathub is the official Flatpak repository, containing hundreds of applications that are updated constantly.

For Ubuntu 20.04, Canonical has made it harder to use Flatpak packages in favor of Snap, by installing the Snap Store by default instead of the standard GNOME Software application (Snap Store is a fork of GNOME Software, but which doesn’t support Flatpak). Inspite of this, it’s still possible to install Flatpak applications on Ubuntu 20.04, and update them using GNOME Software.

GNOME Software flatpak flathub Ubuntu 20.04

To install Flatpak and the GNOME Software Flatpak plugin (this will also install GNOME Software, and thanks to this plugin you’ll be able to update Flatpak applications using GNOME Software), use this button or the command below it:

sudo apt install flatpak gnome-software-plugin-flatpak

Then add the Flathub repository:

flatpak remote-add --if-not-exists flathub

A system restart is required for Flatpak to function properly.

After this you’ll be able to use “Software” (in the applications menu you’ll see the preinstalled “Ubuntu Software” which is the Snap Store, and “Software”, which is the GNOME Software application) to search, install and update Flatpak applications.

It’s worth noting that using “Software” (not “Ubuntu Software”), you can also install native (DEB) packages, as well as Snap packages, and not just Flatpak applications. Also, when searching for a package, you’ll usually find the Flatpak at the bottom of the list.

Gaming (Steam, Lutris and GameMode)

For gaming, most users will probably want to install Steam and Lutris.

Steam can be installed from the Ubuntu 20.04 repositories, by clicking this button or the command below it:

sudo apt install steam-installer

Lutris is an open source gaming platform that can be used to play Steam, GOG,, Origin, Uplay games, and more. It makes it easy to add Wine versions, enable DXVK and more, to be able to play Microsoft Windows games on Linux.

Lutris Ubuntu 20.04

Lutris is not in the Ubuntu repositories but you can install it from its official PPA:

sudo add-apt-repository ppa:lutris-team/lutris

sudo apt install lutris

Lutris also has some requirements:

  • If you have Nvidia graphics, you’ll need to install the proprietatry drivers using the Additional Drivers tool that can be found in the Ubuntu applications menu
  • To use DXVK, you’ll need to install the Vulkan libraries:
    • for AMD graphics:
sudo apt install mesa-vulkan-drivers mesa-vulkan-drivers:i386
  • for Nvidia graphics:
sudo apt install libvulkan1 libvulkan1:i386

Installing Lutris will also install Wine (stable, from the Ubuntu repositories), so we’ve got that covered in one go. The Wine repositories, that you can use to install Wine Staging or Development builds, has not yet been updated to support Ubuntu 20.04 at the time I’m writing this article.

If you need a guide on using Lutris, check out this article.

In Ubuntu 20.04, Feral Interactive’s GameMode is installed by default. This is a daemon / library for Linux that allows games to request a set of optimizations to be temporarily applied to the host operating system and / or a game process.

It optimizes the CPU governor, I/O priority, process niceness, kernel scheduler, inhibits the screensaver, changes the GPU performance mode, and more.

Using GameMode with Lutris doesn’t require any configuration on your part. Lutris enables GameMode for all games by default, as long as GameMode is available on the system.

With Steam, you’ll need to edit the game(s) launch options to use:

gamemoderun %command%

Other tweaks

1. Install extra codecs, support for archive formats, etc.

Install extra codecs, Java (OpenJRE 11), Microsoft Web fonts, support for extra archive formats (rar, 7zip), enable playing encrypted DVDs, etc., by clicking this button or the command below it:

sudo apt install openjdk-11-jre unrar rar p7zip-full ubuntu-restricted-extras libdvd-pkg

When doing this from a terminal, when asked to accept the Microsoft Web fonts license press TAB to select Yes, then press Enter.

To enable encrypted DVD playback, you’ll also need to run this command:

sudo dpkg-reconfigure libdvd-pkg

And choose Yes when asked if the package should download, build, and install libdvdcss2.

2. Enable backups

Deja Dup backup

Ubuntu comes with Deja Dup (called Backups in the applications menu) for creating and restoring backups. But it doesn’t create backups until you enable it.

You can store backups to a local folder, network location, or in your Google Drive. To enable backup saving to Google Drive you’ll need to enter your Google username and password in Online Accounts (you’ll find it in Settings), then choose Google Drive as the storage location in the Backups app.

In case Deja Dup backup tool doesn’t suit your needs, you can install and setup BorgBackup, a command line deduplicating and compressing backup program that’s feature-packed. Install it using the button below or the command that follows:

sudo apt install borgbackup

If you want to use a GUI for BorgBackup, I recommend you check out Vorta.

You also have the option of installing TimeShift, a popular backup (which is shipped by default with Linux Mint) and system restore utility which takes snapshots of the system at regular intervals. These snapshots can be restored at a later date to undo system changes. The snapshots are incremental, and can be created using rsync or BTRFS snapshots using BTRFS tools (only for BTRFS filesystems).

Install TimeShift using this button or the command below it:

sudo apt install timeshift

3. Laptop users: Extend your laptop’s battery life with TLP (and an optional GUI for TLP)

TLP is an advanced power management tool for Linux. The command line tool comes with a default configuration optimized for battery saving, so it’s very easy to use – just install TLP and you can forget about it.

TLP is highly customizable though, so in case you want to change some of its settings you can do that too (this is done by editing the TLP configuration file).

TLP auto-detects if your laptop runs on battery or AC and applies settings (changes the CPU frequency scaling and governor, sets the WiFi power saving mode, enables or disables integrated radio devices, sets the disk APM and disk spin down timeout, etc.) that optimize the laptop for performance (when on AC) or battery saving (when on battery).

Install TLP using this button or the command below it:

sudo apt install tlp tlp-rdw

For ThinkPads you’ll also need to install a couple of extra packages, which once again can be installed by clicking this button or the command that follows it:

sudo apt install tp-smapi-dkms acpi-call-dkms

TLP starts automatically on boot. To avoid a system reboot you can start it right after installing it using:

sudo tlp start

There’s also a GUI for TLP that you can use to configure it, called TLPUI. You can download the TLPUI DEB package from the Linux Uprising Apps PPA:

4. Disable unattended upgrades

Unattended upgrades Ubuntu 20.04

The unattended-upgrades package is installed by default on Ubuntu 20.04. When enabled, unattended-upgrades automatically installs the latest security (and other) updates.

While it’s a nice feature to have, some users might not like this Microsoft Windows-like behavior of installing updates with no input from the user. Especially when you want to shutdown or reboot your system while in a hurry and you can’t, because there’s an upgrade in progress. And if you force shutdown / reboot your system while you may break your system, or at least get the infamous “E: Could not get lock /var/lib/dpkg/lock” or “E: dpkg was interrupted” errors.

To avoid all of this, you can disable unattended-upgrades so your system doesn’t automatically install updates.

It’s worth noting that it’s better to disable unattended upgrades instead of removing the package, because the package might be pulled as a dependency and be installed again later on.

To disable unattended-upgrades run:

sudo dpkg-reconfigure unattended-upgrades

When asked if Ubuntu should Automatically download and install stable updates, press TAB to choose No, then press Enter, and you’re done.

5. Bash history: show a timestamp (date / time) when each command was executed

bash history

Bash keeps a history of the commands you type, which can be accessed by typing history in a terminal. By default, you’ll notice there’s no timestamp for the commands you’ve previously ran, and I find having a timestamp very useful in some occasions, like to remember which commands you ran in a specific time-frame, to undo various operations, and so on.

If you want to enable timestamps for your Bash history, open ~/.bashrc with Gedit:

gedit ~/.bashrc

And at the bottom of the file add (yes, there’s a space after %T and before the closing quotes):


Then save the file, and source ~/.bashrc using:

source ~/.bashrc

Bash will now keep a timestamp of each command you run from this point going forward. Previously ran commands will have the timestamp of the time when you enabled this (so all previously run commands will have an identical timestamp).

To try it, run a few commands, then run history in a terminal.

To customize the timestamp format, see this article from LinuxUprising.

6. Spice up your Bash prompt with Starship

Starship bash zsh fish prompt

Starship is a minimal, very fast (written in Rust) shell prompt for Bash, Fish and Zsh (but here I’ll assume you’re using the Ubuntu 20.04 default, which is Bash) that shows extra information only when it’s needed. Check out its homepage to see it in action.

Also see my previous article: Starship Is A Minimal And Fast Shell Prompt Written In Rust.

To install it, download the binary from GitHub (starship-x86_64-unknown-linux-gnu.tar.gz), extract the archive, then in the folder where you’ve extracted the starship binary run this command (to install it to /usr/local/bin):

sudo install starship /usr/local/bin

You’ll also need to install a powerline font, like Fira Code, which is available in the Ubuntu repositories and can be installed using:

sudo apt install fonts-firacode

Now enable Starship by opening your ~/.bashrc with Gedit:

gedit ~/.bashrc

And add the following line at the end of the file:

eval "$(starship init bash)"

And finally, source ~/.bashrc so the changes are applied to your current terminal:

source ~/.bashrc

If you want to configure Starship, see this page.

Extra applications

Ubuntu 20.04 apps

Ubuntu comes with preinstalled applications for basic things. You’ll find Firefox web browser, a text editor (Gedit), a music player (Rhythmbox), video player (Totem), and so on. But not everybody uses these, or not only these.

Below I’ll list some of the most popular applications, and links to install them from snap, flatpak and DEB packages (with the latter either available directly in the repositories or on the application’s website). It’s worth noting that for some applications, only the snap version is listed by Ubuntu Software, even when there are native packages (DEB) available in the repositories, e.g. that was the case with GIMP in my case.

Snap and flatpak packages are sandboxed, and offer more security, but they are also larger and may have some occasional glitches due to their sandboxed nature. Install the package that you prefer.

For snap (snap links) and DEB packages (apt links) that are already in the Ubuntu repositories, the links below should open Ubuntu Software app with the application you clicked on opened in it, ready to be installed. Click the install button from there to install it. Apt links may also open in a small dialog popup, depending on what you choose when you first opened such a link.

For Flatpak applications, the Flathub application page is opened. You need to enable flatpak and Flathub to be able to install such applications (see “Enable flatpak and add the Flathub repository” above for instructions).

1. Choose your web browser

Ubuntu 20.04 LTS (Focal Fossa) comes with Firefox web browser install by default, but many other web browsers are available for Linux. If you prefer a Chromium-based web browser, quite a few are available, including:

If you’d like to use Chromium Browser with hardware acceleration enabled (VAAPI), there’s a PPA you can use. As a bonus, the package is a native DEB, and not a snap (Ubuntu 20.04 has Chromium browser available as a snap package only, even when installed using apt).

2. Cloud Storage

Almost everybody uses some cloud storage service nowadays, and you’ll probably want to have your files available soon after installing Ubuntu 20.04 (Focal Fossa). Below you’ll find a one-click install button for cloud storage clients available in the Ubuntu repositories, like Dropbox or Nextcloud, options to download the clients for some services, and alternatives where’s there’s no official solution.

  • Google Drive:

Google doesn’t have an official client for Linux, but enabling access to your Google Drive files on GNOME is very easy. Open Settings, go to Online Accounts and add your Google account there. Once you do this, your Google Drive files will be available from the Files (Nautilus) application.

By adding your Google account to Online Accounts, there’s also the added bonus of having Google integrated with other GNOME applications, for example GNOME Calendar will be in sync with your Google Calendar, you can make backups to your Google Drive using Backups (Deja Dup), etc.

You can even use this in desktop environments other than GNOME, like Xfce or MATE desktops.

  • OneDrive:

There’s no official Microsoft OneDrive client for Linux, and adding your Microsoft account in Online Accounts doesn’t mount your OneDrive files on Ubuntu. There are some third-party solutions though, and the two below support both personal and Business / Office 365 accounts.

If you prefer having your Microsoft OneDrive mounted on Linux, you can make use of Rclone to mount it.

Mounting OneDrive on Linux means that you have instant access to your files, without having to download them until they are accessed or copied to the local disc. But that also means they are not available in case your Internet goes down. So if you prefer, you could use a fork of OneDrive Free Client, a command line tool that keeps your OneDrive files in sync with a folder on your Linux machine.

  • InSync:

This is a proprietary tool that’s not free to use, for managing both Google Drive and OneDrive. It comes with a GUI (and file manager integration), which both OneDrive and Google Drive are lacking on Linux, and has most features available in the official sync clients for these 2 services, and even more. Download InSync (DEB)

More (click the link installs the package from the Ubuntu repositories, minus Mega which needs to be downloaded separately):

3. Communication

Do you use Slack, Discord, Skype, Telegram, Teams or Pidgin? Click the links below to install / download them (you’ll find flatpak, snap, apt packages and official downloads, where available):

4. Video player:

5. Audio player:

6. Graphics editors:

7. Code editors:


Free DNS providers

Google Private and unfiltered. Most popular option.
CloudFlare Private and unfiltered. New player.
Quad9 Private and security aware. New player that blocks access to malicious domains.
OpenDNS Old player that blocks malicious domains and offers the option to block adult content.
Norton DNS Old player that blocks malicious domains and is integrated with their Antivirus.
CleanBrowsing Private and security aware. New player that blocks access to adult content.
Yandex DNS Old player that blocks malicious domains. Very popular in Russia.
Comodo DNS Old player that blocks malicious domains.