How To Setup The Perfect Linux Workstation With Xubuntu 20.04 LTS Focal Fossa

It’s very easy today to build a complete Linux workstation using the distribution you like best. It seems that the first place is occupied by Ubuntu or derivatives with a percentage of over 30%.

Both the operating system and most applications are free. The most important: such a system is extremely stable, constantly updated, and does not have the known problems with viruses that other operating systems face. However, the market share is 2% with a slight upward trend.

I have been using Linux workstation for over 10 years, Archlinux, and (X)ubuntu. In recent years I prefer Xubuntu because it is simple, elegant and lightweight. Every installation is increasingly easy, complete, stable, and fast. It is a great pleasure to use it.

I am trying to keep my system stable and clean. Only the necessary packages are installed. When it is possible, I use:

  • portable versions (portable VScode is a great example)
  • appimages (see Summary)
  • containerization (offered by docker)

I use apt-get in most install or update commands. Probably apt is more convenient for the user. There are some differences but not so significant.

The whole system is updated using apt package manager. There are some exceptions, mentioned in the Summary.

I use free and open-source software to build my workstation. The only exceptions are:

  • Google Chrome (free but not open-source)
  • Microsoft Edge for Linux (free but not open-source)
  • Dropbox (free Linux client but not open-source)
  • Sublime Text (not free and not open-source)
  • DbSolo (not free and not open-source). DbSolo, it is the only app I know to easily compare and synchronize database schema and this is the reason I use it.
  • jDiskReport (free but not open-source)
  • HDsentinel (free but not open-source)

Linux workstation – Hardware

Here is the hardware configuration of my workstation computer:

  • LG W2453SQ 24 LCD Monitor (1920 x 1080)
  • UPS APC Back UPS BR1500GI RS 1500VA (LI)

Partitions

Disk partitions

Linux Workstation With Xubuntu 20.04
Linux Workstation – sda
Linux Workstation With Xubuntu 20.04
Linux Workstation – sdb

Basic OS Setup

Download Xubuntu 20.04 LTS ISO from the official website.

Setup using CD or USB device.

System update

Software updater will notify you that software updates are available. Proceed with update.

TO do it manually

sudo apt-get update && sudo apt-get -V upgrade

Mount data drives

Xubuntu is installed in sda1 and sda2. Thers is one more partition in first disk (sda3). This must be mounted. The same for the second disk (sdb).

As root get the partitions UUIDs using

blkid

Then update properly /etc/fstab and reboot.

First Priority Settings

I did these changes with first priority:

Keyboard layouts

Settings ➙ Keyboard ➙ Layout

Xubuntu 20.04 keyboard layouts
Keyboard layouts

Window manager

Settings ➙ Window Manager ➙ Style

Change Greybird to Default (or any other you prefer).  Very important to easily access window corners with mouse.

Xubuntu 20.04 Window manager
Window manager

Mouse speed

Settings ➙ Mouse and Touchpad ➙ Devices

Set pointer speed from 5.0 to 1.0

Xubuntu 20.04 Mouse speed
Mouse speed

Nvidia drivers

Xubuntu installs the proprietary Nvidia driver during basic setup. Nothing to do!

Xubuntu 20.04 Additional Drivers Nvidia
Nvidia Drivers

If this does not happen, do it by yourself:

Settings ➙ Additional Drivers

Assign Static IP

Settings ➙ Advanced Network Configuration ➙ Wired connection 1 ➙ IPv4 Settings

Consider using Google Public DNS

8.8.8.8, 8.8.4.4

Test the result from the command line:

ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: enp4s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether 50:e5:49:52:12:f1 brd ff:ff:ff:ff:ff:ff
    inet 192.168.1.2/24 brd 192.168.1.255 scope global dynamic noprefixroute enp4s0
       valid_lft 81762sec preferred_lft 81762sec
    inet6 fe80::5627:9ce5:a8cb:8601/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever

Software Updates Settings

Disable automatic updates:

Settings ➙ Software & Updates ➙ Updates

Color bash prompt

nano ~/.bashrc

Uncomment #force_color_prompt=yes

For root user

nano /root/.bashrc

Uncomment #force_color_prompt=yes and additionally

   #PS1='${debian_chroot:+($debian_chroot)}[33[01;32m]u@h[33[00m]:[33[01;34m]w[33[00m]$ '
    PS1='${debian_chroot:+($debian_chroot)}[33[01;31m]u@h[33[00m]:[33[01;34m]w[33[00m]$ '

Configure nano

sudo nano /etc/nanorc

apply the changes

...
set constantshow
## (The old form, 'const', is deprecated.)
...
set tabsize 4
...

Sudo Without Password

Not recommended for non experienced users.

sudo visudo

add the following (using tab after username)

pontikis    ALL=(ALL) NOPASSWD: ALL

Fundamental Apps

KeePassXC

sudo apt-get install keepassxc

Google Chrome

  • Navigate with Firefox to Chrome website and click Download Chrome
  • Then select “Open with Software Install”
  • Enable Sync (bookmarks, extensions and apps)
  • Exclude passwords from save/sync
  • If your language is not English, add it to languages (Greek in my case).
  • Set download folder.
  • Ensure “Clear cookies and site data when you quit Chrome” (Settings ➙ Privacy and Policy ➙ Cookies and site data) or chrome://settings/cookies
  • Manage profiles

See also this topic.

Firefox

Firefox is preinstalled in Xubuntu.

  • Enable Sync (extensions will be also synced)
  • Set download folder
  • Ensure “Delete cookies and site data when Firefox is closed”
  • Ensure “Clear history when Firefox closes”

See also this topic.

Microsoft Edge for Linux

Go to https://www.microsoftedgeinsider.com and download the .deb file. Then

sudo dpkg -i microsoft-edge-dev_88.0.685.3-1_amd64.deb

You will get updates automatically, as the above procedure created the repository file /etc/apt/sources.list.d/microsoft-edge-dev.list with contents

### THIS FILE IS AUTOMATICALLY CONFIGURED ###
# You may comment out this entry, but any other modifications may be lost.
deb [arch=amd64] http://packages.microsoft.com/repos/edge/ stable main

Also read https://blogs.windows.com/msedgedev/2020/10/20/microsoft-edge-dev-linux/

Dropbox

  • Download .deb from official web site https://www.dropbox.com/install-linux
  • Open with Software Install (or use dpkg -i)
  • Follow the wizard (the real driver will be downloaded)
  • You have to login to Dropbox account
  • Manage preferences (Selective sync & Dropbox Folder)

CLI Apps

SSH

OpenSSH server

sudo apt-get install openssh-server

Harden OpenSSH server

sudo nano /etc/ssh/sshd_config
PermitRootLogin no
...
X11Forwarding no
...
AllowUsers yourusername ...

Restart SSH

sudo systemctl restart ssh.service

SSH autocompletion

sudo nano /etc/ssh/ssh_config
...
HashKnownHosts no
...

SSH key authentication

Use saved keys.

Copy id_rsa and id_rsa.pub to ~/.ssh

Change permissions

chmod 600 ~/.ssh/id_rsa
chmod 644 ~/.ssh/id_rsa.pub

Otherwise create RSA key with strong passphrase

ssh-keygen -t rsa -b 4096 -C "you@example.com"
ssh-copy-id -i ~/.ssh/id_rsa.pub RemoteServer

Configure SSH connections

nano ~/.ssh/config

Example

Host server1.com
  Port 5001
  User username

Host server2.com.com
  Port 5000
  ForwardAgent yes
  User username

Host server3.com
  Port 22
  ForwardAgent yes
  User username

p7zip

sudo apt-get install p7zip-full p7zip-rar

unrar

sudo apt-get install unrar

wipe

sudo apt-get install wipe

curl

sudo apt-get install curl

htop

sudo apt-get install htop

Basic Apps

Redshift

Protect your eyes! Redshift adjusts the color temperature of your screen according to your surroundings.

sudo apt-get install redshift redshift-gtk

Ksnip

Ksnip is a Qt-based cross-platform screenshot tool that provides many annotation features.

Xubuntu has its own Screenshot tool. It is simple to use. It also has useful keyboard shortcuts: press the PrintScreen to capture the whole screen or ALT + PrintScreen to capture the active window.

In recent years I have been using Shutter. Amazing tool, but it seems that the development is not active. I use Ksnip as a replacement for Shutter.

Download Official Appimage from here.

GIMP

GIMP is preinstalled in Xubuntu 20.04

Install “Save for web” plugin and other plugins and filters:

sudo apt-get install gimp-plugin-registry

guvcview

guvcview is a tool to capture video from the web camera

sudo apt-get install guvcview

SearchMonkey

SearchMonkey is a powerful desktop search app for Windows, Linux and Mac

sudo apt-get install searchmonkey

Tweak XFCE desktop

Thunar

  • Menu View ➙ View as Detailed list
  • Menu View ➙ Configure columns (add Owner Group Permissions)
  • Menu View ➙ Show hidden files
  • Menu Edit➙ Preferences ➙ Behaviour Check “Show action to permanently delete files and folders “
  • Add bookmarks (Places) with drag and drop

Thunar (as root)

Use Menu Editor to create launcher for command  pkexec thunar

It will work since there is the appropriate policy file in Xubuntu /usr/share/polkit-1/actions/org.xfce.thunar.policy

Desktop icons

To hide unwanted icons, right-click on Desktop ➙ Desktop settings ➙ Icons

Xfce panel

Right click to Xfce Panel and choose Panel ➙ Panel preferences

  • Increase “Row size” to 32 pixels

Right click to Xfce Panel and choose Panel ➙ Add new items

  • System Load Monitor
  • Show desktop
  • Keyboard layouts

Set Xfce Panel Window Buttons Sorting order (allow drag and drop)

Right-click to Xfce Panel and choose

Panel ➙ Panel preferences ➙ Items ➙ Window buttons

Then click the edit button (gear) and change “Sorting order”.

Configure Terminal

Menu ➙ Edit ➙ Preferences ➙ Appearance

increase font size to 10

Menu ➙ Edit ➙ Preferences ➙ Colors

uncheck Text selection color

Configure Mousepad

Power management

Default settings are adequate.

Tweak Libreoffice

Adding Spell-check for your language is simple.

Select Settings ➙ Language Support.

Xubuntu will check automatically for your language dictionaries and will set them up.

User details and photo

Click the user photo in Main menu (Whisker Menu) and change the user details.

Art & Media Apps

VLC

VLC media player

Unofficial appimage.

Handbrake

Handbrake is a video converting tool.

Unofficial appimage.

kazam

kazam is a screen-casting tool

sudo apt-get install kazam

Peek

Peek is an animated GIF recorder

Official appimage is not working in (X)Ubuntu 20.04. You may try

Gpick

Gpick is an advanced color picker

sudo apt-get install gpick

Inkscape

Inkscape is an open-source cross-platform vector graphics editor

Official appimage.

kdenlive

kdenlive is an open-source cross-platform video editor

Official appimage.

Calibre

Calibre is an open-source cross-platform e-book manager

Unofficial appimage.

Musescore

Musescore is an open-source cross-platform music notation editor and player

Official appimage.

TuxGuitar

TuxGuitar is an open-source cross-platform tablature editor and player

It is a Java app, so JRE is required to run it.

Download here, unpack where you want then add a launcher with the command: /path/to/tuxguitar.sh

SysAdmin Apps

BalenaEtcher

BalenaEtcher is a open-source cross-platform tool to flash OS images to SD cards & USB drives.

Official appimage.

gparted

GParted is a free partition editor.

sudo apt-get install gparted

Gnome Log File Viewer

System Log Viewer is a graphical user interface to view and monitor system log files.

sudo apt-get install gnome-system-log

Hardinfo

Hardinfo is a System profiler and benchmark tool

sudo apt-get install hardinfo

GSmartControl

GSmartControl – Hard disk drive and SSD health inspection tool

sudo apt-get install gsmartcontrol

Double Commander

Double Commander is a great cross-platform and open-source file manager with two panels, similar to the famous Total Commander.

sudo apt-get install doublecmd-gtk

Double Commander (as Root)

Simply add a menu launcher with command pkexec doublecmd

It will work, as the relevant policy exists:

/usr/share/polkit-1/actions/org.doublecmd.root.policy

Unison

Unison is a cross-platform file-synchronization tool.

I use it for synchronization tasks between my workstation and remote servers over SSH.

sudo apt-get install unison unison-all unison-all-gtk

There is a bug when Unison syncs with previous versions described here, as well as a workaround.

FreeFileSync

FreeFileSync is an open-source, cross-platform folder comparison, synchronization, and backup software.

I use it for daily local backup tasks on my workstation (backup to external USB disk etc).

Download and unzip (no setup required).

FreeFileSync (as Root)

Simply add a menu launcher with command pkexec /path/to/FreeFileSync

Additionally:

sudo nano /usr/share/polkit-1/actions/FreeFileSync.root.policy

Add the following:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE policyconfig PUBLIC
  "-//freedesktop//DTD PolicyKit Policy Configuration 1.0//EN"
  "http://www.freedesktop.org/standards/PolicyKit/1/policyconfig.dtd">
<policyconfig>
  <action id="com.ubuntu.pkexec.FreeFileSync">
    <message>Authentication is required to run FreeFileSync as root</message>
    <defaults>
      <allow_any>auth_admin</allow_any>
      <allow_inactive>auth_admin</allow_inactive>
      <allow_active>auth_admin</allow_active>
    </defaults>
    <annotate key="org.freedesktop.policykit.exec.path">/data/apps/FreeFileSync/FreeFileSync</annotate>
    <annotate key="org.freedesktop.policykit.exec.allow_gui">true</annotate>
  </action>
</policyconfig>

jDiskReport

jDiskReport is a disk usage analyzer (java app)

Download stable version from here.

Create a menu launcher with command:

java -jar /path/to/jdiskreport.jar

nmap

nmap is a network scanning tool

sudo apt-get install nmap

lsyncd

See details in this post.

GAlternatives

Graphical setup tool for Alternatives Configuration

sudo apt-get install galternatives

psensor

psensor provides graphical hardware temperature monitor for Linux.

sudo apt-get install psensor

HDsentinel

Download Linux version here.

Development Apps

Programming languages

Bash, Perl and Python are preinstalled. Java is not.

pontikis@athena:~$ bash --version
GNU bash, version 5.0.17(1)-release (x86_64-pc-linux-gnu)
Copyright (C) 2019 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>

This is free software; you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
pontikis@athena:~$ perl --version

This is perl 5, version 30, subversion 0 (v5.30.0) built for x86_64-linux-gnu-thread-multi
(with 46 registered patches, see perl -V for more detail)

Copyright 1987-2019, Larry Wall

Perl may be copied only under the terms of either the Artistic License or the
GNU General Public License, which may be found in the Perl 5 source kit.

Complete documentation for Perl, including FAQ lists, should be found on
this system using "man perl" or "perldoc perl".  If you have access to the
Internet, point your browser at http://www.perl.org/, the Perl Home Page.

pontikis@athena:~$ python2 -V
Python 2.7.18rc1
pontikis@athena:~$ python3 -V
Python 3.8.2
pontikis@athena:~$ java -version

Command 'java' not found, but can be installed with:

sudo apt install openjdk-11-jre-headless  # version 11.0.8+10-0ubuntu1~20.04, or
sudo apt install default-jre              # version 2:1.11-72
sudo apt install openjdk-13-jre-headless  # version 13.0.3+3-1ubuntu2
sudo apt install openjdk-14-jre-headless  # version 14.0.1+7-1ubuntu1
sudo apt install openjdk-8-jre-headless   # version 8u265-b01-0ubuntu2~20.04

Install Java runtime environment (JRE)

sudo apt-get install default-jre

So, now:

pontikis@athena:~$ java -version
openjdk version "11.0.8" 2020-07-14
OpenJDK Runtime Environment (build 11.0.8+10-post-Ubuntu-0ubuntu120.04)
OpenJDK 64-Bit Server VM (build 11.0.8+10-post-Ubuntu-0ubuntu120.04, mixed mode, sharing)

To use a manually downloaded JRE (for example /data/apps/jre1.8.0_261)

sudo update-alternatives --install /usr/bin/java java /data/apps/jre1.8.0_261/bin/java 100

Then use update-alternatives (or the graphical tool GAlternatives) to switch between available options

sudo update-alternatives --config java
There are 2 choices for the alternative java (providing /usr/bin/java).

  Selection    Path                                         Priority   Status
------------------------------------------------------------
* 0            /usr/lib/jvm/java-11-openjdk-amd64/bin/java   1111      auto mode
  1            /data/apps/jre1.8.0_261/bin/java              100       manual mode
  2            /usr/lib/jvm/java-11-openjdk-amd64/bin/java   1111      manual mode

Tilix

Tilix is an advanced GTK3 tiling terminal emulator. See this video.

sudo apt-get install tilix

If you get a warning when Tilix is starting, fix it here.

If you want to start a certain layout, change Whisker menu launcher to 

tilix --session=/path/to/layout.json

git

sudo apt-get install git
git config --global user.name 'Christos Pontikis'
git config --global user.email pontikis@gmail.com
git config --global core.editor "nano"
git config --global core.autocrlf input

Meld

Meld is a visual diff and merge tool

sudo apt-get install meld

git tools

Git cola is an integrated git GUI:

  • excellent commit interface (including revert, diff and merge)
  • log viewer (DAG) / file browser
  • actions: clone, push, pull, tag, stash

It uses external tools for

  • visual diff and merge (Meldxxdiff or any other)
  • history (gitk)
  • blame (git gui)

Git cola offers to more tools

  • View ➙ DAG (directed acyclic graph) for git log
  • View ➙ File Browser to get the versions on any file (using gitk)

For this purpose, Giggle is more convenient:

Giggle is a graphical frontend for the git content tracker (think of gitk on GTK+).

Use Giggle to:

  • view the full git log (and changes per each commit) (HISTORY mode)
  • get the versions on any file (BROWSE mode)

Finally, VSCode has excellent git integration. However, git cola is more advanced (in commit and more).

See also

sudo apt-get install git-gui gitk

Giggle

sudo apt-get install giggle

Git Cola

sudo apt-get install git-cola

Preferences ➙ All repositories

  • set Tab width to 4

Preferences ➙ Settings

  • set “Editor” to “code”
  • set “Merge tool” to “meld”
  • set “Recent repository count” to 20

gettext

gettext is an internationalization and localization (i18n and l10n) system

sudo apt-get install gettext

Apache

Apache web server

Apache and PHP are not needed in the Workstation environment. The only reason I set them up is to run locally my Dokuwiki, Adminer, and Composer.

sudo apt-get install apache2
a2enmod rewrite
a2enmod ssl

php 7.4

PHP

sudo apt-get install php
The following additional packages will be installed:
  libapache2-mod-php7.4 php-common php7.4 php7.4-cli php7.4-common php7.4-json php7.4-opcache php7.4-readline

Add PHP modules

I set them up as phpstan to perform its analysis needs PHP reflection to know functions and classes in PHP modules. Otherwise, you get errors.

sudo apt-get install php-curl php-xml php-zip php-gd php-intl php-mysql php-pgsql php-sqlite3 php-mbstring php-memcached php-gmp php-bcmath php-imagick 

Regarding php-gettext: There is no current release of this source package in The Focal Fossa.

Adminer

Adminer – Database management tool in a single PHP file

cd /var/www/html
sudo mkdir adminer
cd adminer
sudo wget https://www.adminer.org/latest-en.php
sudo mv latest-en.php index.php

Access Adminer with http://localhost/adminer

DBeaver

DBeaver (community edition) is a universal database tool (java app)

With DBeaver you can easily connect and manage almost any database on Linux (even old MS Access Databases!). You can also import CSV files.

DBeaver also creates useful ER Diagrams.

Setup instructions

sudo add-apt-repository ppa:serge-rider/dbeaver-ce
sudo apt-get update
sudo apt-get install dbeaver-ce

DbSolo

DbSolo is a universal database tool (java app)

Download and setup.

See also Problems installing DbSolo5 with latest JAVA in Linux – Workaround.

Composer

Composer is a an open-source, cross-platform Dependency Manager for PHP

Setup instructions here.

As root

cd /tmp
php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
php -r "if (hash_file('SHA384', 'composer-setup.php') === 'put Installer Checksum (SHA-384) here') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;"
php composer-setup.php --install-dir=/usr/local/bin --filename=composer
php -r "unlink('composer-setup.php');"

Find Installer Checksum (SHA-384) here.

test it:

pontikis@athena:~$ which composer
/usr/local/bin/composer
pontikis@athena:~$ composer --version
Composer version 2.0.9 2021-01-27 16:09:27

nodejs/npm

nodejs is an open-source, cross-platform JavaScript runtime environment

Setup instructions here.

curl -sL https://deb.nodesource.com/setup_lts.x | sudo -E bash -
sudo apt-get install -y nodejs

test it:

pontikis@athena:~$ node -v
v14.15.4
pontikis@athena:~$ npm -v
6.14.10

VScode

Visual Studio Code (aka VScode) is a lightweight but powerful cross-platform code editor.

It is my favorite IDE.

I use the portable version.

After download:

sudo ln -s /data/apps/VSCode/code /usr/local/sbin/code 

test it:

pontikis@athena:~$ which code
/usr/local/sbin/code

How to update

You will get a notification when new version is available.

  • Download and unpack new version.
  • Move old_version/data and old_version/tmp to new version.
  • Remove old version.

Prerequisites for Front end VScode plugins

sudo npm install -g eslint

Prerequisites for PHP VScode plugins

composer global require friendsofphp/php-cs-fixer
composer global require phpmd/phpmd

Sublime Text

Sublime Text is an excellent code editor, probably the fastest one.

Installation instructions

wget -qO - https://download.sublimetext.com/sublimehq-pub.gpg | sudo apt-key add -
sudo apt-get install apt-transport-https
echo "deb https://download.sublimetext.com/ apt/stable/" | sudo tee /etc/apt/sources.list.d/sublime-text.list
sudo apt-get update
sudo apt-get install sublime-text

Install Package Controlinstructions

Sync your installed packages across different machines – instructions

vim/gvim

Vim is the famous Linux/Unix text editor.

sudo apt-get install vim vim-gtk

glogg

glogg is a multi-platform log explorer

sudo apt-get install glogg

glogg (as Root)

To run as root create launcher pkexec glogg and the appropriate policy

sudo nano /usr/share/polkit-1/actions/glogg.root.policy

Add the following:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE policyconfig PUBLIC
  "-//freedesktop//DTD PolicyKit Policy Configuration 1.0//EN"
  "http://www.freedesktop.org/standards/PolicyKit/1/policyconfig.dtd">
<policyconfig>
  <action id="com.ubuntu.pkexec.glogg">
    <message>Authentication is required to run glogg as root</message>
    <defaults>
      <allow_any>auth_admin</allow_any>
      <allow_inactive>auth_admin</allow_inactive>
      <allow_active>auth_admin</allow_active>
    </defaults>
    <annotate key="org.freedesktop.policykit.exec.path">/usr/bin/glogg</annotate>
    <annotate key="org.freedesktop.policykit.exec.allow_gui">true</annotate>
  </action>
</policyconfig>

mkcert

mkcert is a tool to create trusted development certificates

Installation instructions here.

Read this post for details.

Poedit

Poedit is a powerful and intuitive translation editor.

sudo apt-get install poedit

Read this post for more.

LT Browser

LT Browser by LambdaTest – Mobile View Debugging On 45+ Screen Sizes

Use official appimage.

docker

Docker is a tool to create and run applications using containers.

Detailed setup instructions here.

Add yourself to group docker

sudo usermod -aG docker yourusername

Unfortunately, you have to logoff and login again (some workarounds are available, but this the simplest way).

Additionally, install Docker Compose. Instructions here.

sudo curl -L "https://github.com/docker/compose/releases/download/1.26.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

To install a different version, substitute 1.26.2 with the version of Compose you want to use.

In addition to my own custom containers, I also use ready-made ones:

Doxygen

Doxygen is a documentation generator

sudo apt-get install doxygen-gui graphviz

Doxygen GUI executable is doxywizard (create relevant menu launcher)

Virtualbox

Virtualbox is a cross-platform open-source virtualization solution by Oracle.

It is available from both Oracle and Ubuntu repositories. Oracle repositories contain always the most recent version (at this time 6.1.12 r139181 (Qt5.12.8)). So, I prefer the Oracle solution:

sudo nano /etc/apt/sources.list.d/virtualbox.list

add the following line

deb [arch=amd64] https://download.virtualbox.org/virtualbox/debian focal contrib

Then import the Oracle key

wget -q https://www.virtualbox.org/download/oracle_vbox_2016.asc -O- | sudo apt-key add -

Then, install the current version

sudo apt-get update
sudo apt-get install virtualbox-6.1

Add yourself to vboxusers group

sudo usermod -aG vboxusers yourusername

Logout and login for this to take effect.

Finally, install Extension Pack:

  • get the most recent package from https://www.virtualbox.org/wiki/Downloads (it must be the same version with Virtualbox, at this time 6.1.12 r139181)
  • Open Virtualbox manager ➙ File ➙ Preferences ➙ Extension ➙ press Add button and install the file you have just downloaded

See also this topic.

Set Default Machine Folder from File ➙ Preferences ➙ General

Remember to update Virtualbox Guest Additions in all virtualboxes.

In addition to my own custom virtualboxes, I also use ready-made ones:

Recovery mode

Press and hold “SHIFT” key during boot. GRUB (boot loader) menu will display. Select “Advanced Ubuntu Options” to enter Recovery mode.

For advanced users, it is recommended to display Grub menu always. So you will have easy access to Recovery mode or memtest86+ in case your computer becomes unstable.

To do this change Grub configuration

sudo nano /etc/default/grub

make the following changes

GRUB_TIMEOUT_STYLE="menu"
GRUB_TIMEOUT=10
GRUB_CMDLINE_LINUX_DEFAULT=""

update Grub

sudo update-grub

and finally reboot your system.

Recovery media

It is recommended to keep recovery media (CD or USB). A multiboot USB is an excellent solution for this purpose. Read this post for details. Recommended recovery media are:

With SystemRescueCd you can perform almost any administration task in case of emergency. For example:

With CloneZilla you can create and restore partition images.

Rescuezilla is similar to Clonezilla, but much simpler. Clonezilla and Rescuezilla images are compatible. Additionally, Rescuezilla offers an Image Explorer with which you can easily mount the image. Image Explorer is slow with big images. A nice tip is to create Clonezilla images without compression. These images are mounted instantly with Rescuezilla Image Explorer. Rescuezilla is in active development.

Summary

My Whisker Menu

Whisker Menu is an alternate application launcher for Xfce.

To customize it Right click (on menu icon) ➙ Properties

To add/edit application launchers use Menulibre Menu Editor.

Linux Workstation With Xubuntu 20.04 - Whisker menu
Whisker menu

Preinstalled Desktop Apps

Xfce Terminal – see Xfce
Thunar File manager – see Xfce
Mousepad (Simple Text Editor) – see Xfce
Atril Document Viewer- see Mate Desktop
Ristretto Image Viewer – see Xfce
Parole Media Player – see Xfce
Engrampa Archive Manager – see Mate Desktop
Mate Calculator – see Mate Desktop
Fonts – Gnome Font Viewer
Menulibre Menu Editor
Mozilla Firefox
Mozilla Thunderbird
LibreOffice
Gimp
Xfburn CD/DVD burning – see Xfce
Screenshot – see Xfce

Fundamental Apps

KeePassXCPassword manager
Google ChromeDefault web browser – Bookmarks
Microsoft Edge for Linux
DropboxSync files across devices

Chrome extensions

Window ResizerResizes the browser window to emulate various screen resolutions
GrammarlySpelling and Grammar
WhatFontIdentifies fonts on web pages
Chrome LoggerFor server side logging and debugging in chrome console

CLI Apps

OpenSSH server
p7zip
unrar
wipe
curl
htop

Basic Apps

Redshift
Ksnip
guvcview
SearchMonkey

Art & Media Apps

VLC
Handbrake
kazam
Peek
Gpick
Inkscape
kdenlive
Calibre
Musescore
TuxGuitar

Sysadmin Apps

BalenaEtcher
gparted
Gnome Log File Viewer
Hardinfo
GSmartControl
Double Commander
Unison
FreeFileSync
jDiskReport
nmap
lsyncd
GAlternatives
psensor
HDsentinel

Development Apps

Java runtime environment (JRE)
Tilix
git
Meld
Giggle
Git Cola
gettext
Apache
php 7.4
Adminer
DBeaver
DbSolo
Composer
nodejs/npm
VScode
Sublime Text
vim/gvim
glogg
mkcert
poedit
LT Browser
docker
Doxygen
Virtualbox

Appimages

BalenaEtcherOfficial
KsnipOfficial
VLCUnofficial
HandBrakeUnofficial
InkscapeOfficial
KdenliveOfficial
MusescoreOfficial
CalibreUnofficial
LT BrowserOfficial

Appimage is also available for: KeePassXC

Apps not controlled by Software updater

The following software is installed without using apt package manager

VSCode (portable version – directly downloaded)
FreeFileSync (directly downloaded)
software based on appimages
JRE (directly downloaded)
dbsolo5 (Java app – install4j)
mkcert (directly downloaded)
Composer (directly downloaded)
software installed with composer as php-cs-fixer and phpmd
software installed with npm as eslint and csslink
docker compose (directly downloaded)
BalenaEtcher (Elencron app – directly downloaded)
jDiskReport (Java app – directly downloaded)
TuxGuitar (Java app – directly downloaded)

Web apps

Google: Gmail Calendar Keep Drive Docs Sheets Drawings Meet Youtube Translate
Github Bitbucket
Github Issues for Issue Tracking and Project Management
Dropbox
Dokuwiki for Technical Documentation
Adminer – Database management tool in a single PHP file
Portainer (using Docker container)
PgAdmin4 (using Docker container)
WordPress Grammarly BeFunky ezgif Optimizilla and various Dev tools
Lastpass
Social Media: Facebook Linkedin Instagram Twitter

Necessary Android apps

See also this topic.

Twilio Authy 2FA
Google Authenticator
Microsoft Authenticator

Issues

Featured Videos