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:
- Motherboard GIGABYTE Z68AP-D3, socket 1155, DDR3
- CPU Intel I7 INTEL CPU Core i7-2700K, BX80623I72700K
- RAM (16 GB) KINGSTON KHX1600C9AD3B1/4G, HyperX Blu DDR3, 1600MHz x 4
- Display adapter NVIDIA GeForce GT 710
- SSD INTEL 540S SERIES SSDSC2KW240H6X1 240GB 2.5” SATA3 TLC SINGLE PACK (S.M.A.R.T. enabled)
- HDD WD Caviar Blue WD5000AAKX SATA3 3.5” 6GB/SΕC 500GB 7200 16MB x 1 (02/10/2011 S.M.A.R.T. enabled)
- RAID controller M-Cab Sata3 + Pata Raid Card
- HDD WD Caviar GREEN POWER WD20EARX SATA3 3.5” 2TB 64MB x 2 (09/10/2011 S.M.A.R.T. enabled)
- EXTERNAL USB DISK WESTERN DIGITAL WDBU6Y0020BBK ELEMENTS PORTABLE 2TB USB3.0 BLACK
- LG W2453SQ 24 LCD Monitor (1920 x 1080)
- UPS APC Back UPS BR1500GI RS 1500VA (LI)
Partitions
Disk partitions
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
Window manager
Settings ➙ Window Manager ➙ Style
Change Greybird to Default (or any other you prefer). Very important to easily access window corners with mouse.
Mouse speed
Settings ➙ Mouse and Touchpad ➙ Devices
Set pointer speed from 5.0 to 1.0
Nvidia drivers
Xubuntu installs the proprietary Nvidia driver during basic setup. Nothing to do!
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)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ '
PS1='${debian_chroot:+($debian_chroot)}\[\033[01;31m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[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
- use the PPA repository OR
- the online service Animated GIF editor and GIF maker to create gif from mp4
Gpick
Gpick is an advanced color picker
sudo apt-get install gpick
Inkscape
Inkscape is an open-source cross-platform vector graphics editor
kdenlive
kdenlive is an open-source cross-platform video editor
Calibre
Calibre is an open-source cross-platform e-book manager
Musescore
Musescore is an open-source cross-platform music notation editor and player
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.
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
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 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
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.
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.
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 Control – instructions
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:
- portainer – see also installation instructions
- pgAdmin4
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:
- Debian 10 Buster from OSboxes
- Microsoft free Windows 10 virtual machines. These virtual machines expire after 90 days.
- Web Security Dojo
- Kali Linux
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:
- your distribution Live CD
- SystemRescueCd
- CloneZilla Live or Rescuezilla
With SystemRescueCd you can perform almost any administration task in case of emergency. For example:
- Repair damaged Grub
- create and manage partitions using Gparted
- copy files, check disk for bad sectors, try to repair damaged disk and
- many others
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.
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
KeePassXC | Password manager | |
Google Chrome | Default web browser – Bookmarks | |
Microsoft Edge for Linux | ||
Dropbox | Sync files across devices |
Chrome extensions
Window Resizer | Resizes the browser window to emulate various screen resolutions | |
Grammarly | Spelling and Grammar | |
WhatFont | Identifies fonts on web pages | |
Chrome Logger | For 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
BalenaEtcher | Official |
Ksnip | Official |
VLC | Unofficial |
HandBrake | Unofficial |
Inkscape | Official |
Kdenlive | Official |
Musescore | Official |
Calibre | Unofficial |
LT Browser | Official |
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.
Issues
- Keyboard shortcut to switch keyboard layouts (usually ALT+SHIFT) does not work sometimes. In most cases the command
sudo dpkg-reconfigure keyboard-configuration
solves the problem. - Unison – Synchronization with earlier Ubuntu versions or a recent Debian version fails
- php-gettext There is no current release of this source package in The Focal Fossa.
- GNOME SSH Tunnel Manager is not available in 20.04 repositories – PPA is available
- xxdiff package is not available
- peek appimage not working (
/tmp/.mount_peek-1RGYDao/usr/lib/peek/peek-run: symbol lookup error: /lib/x86_64-linux-gnu/libpango-1.0.so.0: undefined symbol: hb_buffer_set_invisible_glyph
) - DB Browser for SQLite appimage not working (
qt.network.ssl: QSslSocket: cannot resolve CRYPTO_num_locks
) - zenmap (nmap gui) is not available (more info here)
Featured Videos
Entrepreneur | Full-stack developer | Founder of MediSign Ltd. I have over 15 years of professional experience designing and developing web applications. I am also very experienced in managing (web) projects.