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
1 | 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:
1 | ip a |
1 2 3 4 5 6 7 8 9 10 11 12 | 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
1 | nano ~/.bashrc |
Uncomment #force_color_prompt=yes
For root user
1 | nano /root/ .bashrc |
Uncomment #force_color_prompt=yes
and additionally
1 2 | #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
1 | sudo nano /etc/nanorc |
apply the changes
1 2 3 4 5 6 | ... set constantshow ## (The old form, 'const', is deprecated.) ... set tabsize 4 ... |
Sudo Without Password
Not recommended for non experienced users.
1 | sudo visudo |
add the following (using tab after username)
1 | pontikis ALL=(ALL) NOPASSWD: ALL |
Fundamental Apps
KeePassXC
1 | 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
1 | 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
1 2 3 | ### 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
1 | sudo apt-get install openssh-server |
Harden OpenSSH server
1 | sudo nano /etc/ssh/sshd_config |
1 2 3 4 5 | PermitRootLogin no ... X11Forwarding no ... AllowUsers yourusername ... |
Restart SSH
1 | sudo systemctl restart ssh .service |
SSH autocompletion
1 | sudo nano /etc/ssh/ssh_config |
1 2 3 | ... HashKnownHosts no ... |
SSH key authentication
Use saved keys.
Copy id_rsa
and id_rsa.pub
to ~/.ssh
Change permissions
1 2 | chmod 600 ~/. ssh /id_rsa chmod 644 ~/. ssh /id_rsa .pub |
Otherwise create RSA key with strong passphrase
1 | ssh -keygen -t rsa -b 4096 -C "you@example.com" |
1 | ssh -copy- id -i ~/. ssh /id_rsa .pub RemoteServer |
Configure SSH connections
1 | nano ~/. ssh /config |
Example
1 2 3 4 5 6 7 8 9 10 11 12 13 | 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
1 | sudo apt-get install p7zip-full p7zip-rar |
unrar
1 | sudo apt-get install unrar |
wipe
1 | sudo apt-get install wipe |
curl
1 | sudo apt-get install curl |
htop
1 | sudo apt-get install htop |
Basic Apps
Redshift
Protect your eyes! Redshift adjusts the color temperature of your screen according to your surroundings.
1 | 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:
1 | sudo apt-get install gimp-plugin-registry |
guvcview
guvcview is a tool to capture video from the web camera
1 | sudo apt-get install guvcview |
SearchMonkey
SearchMonkey is a powerful desktop search app for Windows, Linux and Mac
1 | 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
1 | 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
1 | 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.
1 | sudo apt-get install gparted |
Gnome Log File Viewer
System Log Viewer is a graphical user interface to view and monitor system log files.
1 | sudo apt-get install gnome-system-log |
Hardinfo
Hardinfo is a System profiler and benchmark tool
1 | sudo apt-get install hardinfo |
GSmartControl
GSmartControl – Hard disk drive and SSD health inspection tool
1 | 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.
1 | 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.
1 | 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:
1 | sudo nano /usr/share/polkit-1/actions/FreeFileSync .root.policy |
Add the following:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | <?xml version= "1.0" encoding= "UTF-8" ?> <!DOCTYPE policyconfig PUBLIC "-//freedesktop//DTD PolicyKit Policy Configuration 1.0//EN" <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
1 | sudo apt-get install nmap |
lsyncd
See details in this post.
GAlternatives
Graphical setup tool for Alternatives Configuration
1 | sudo apt-get install galternatives |
psensor
psensor provides graphical hardware temperature monitor for Linux.
1 | sudo apt-get install psensor |
HDsentinel
Download Linux version here.
Development Apps
Programming languages
Bash, Perl and Python are preinstalled. Java is not.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 | 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)
1 | sudo apt-get install default-jre |
So, now:
1 2 3 4 | 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
)
1 | 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
1 | sudo update-alternatives --config java |
1 2 3 4 5 6 7 | 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.
1 | 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
1 | sudo apt-get install git |
1 2 3 4 | 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
1 | 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
1 | sudo apt-get install git-gui gitk |
Giggle
1 | sudo apt-get install giggle |
Git Cola
1 | 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
1 | 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.
1 | sudo apt-get install apache2 |
1 2 | a2enmod rewrite a2enmod ssl |
php 7.4
1 | sudo apt-get install php |
1 2 | 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.
1 | 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
1 2 3 4 5 | 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.
1 2 3 | 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
1 2 3 4 5 | 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:
1 2 3 4 | 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.
1 2 | curl -sL https: //deb .nodesource.com /setup_lts .x | sudo -E bash - sudo apt-get install -y nodejs |
test it:
1 2 3 4 | 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:
1 | sudo ln -s /data/apps/VSCode/code /usr/local/sbin/code |
test it:
1 2 | 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
1 | sudo npm install -g eslint |
Prerequisites for PHP VScode plugins
1 2 | 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.
1 2 3 4 5 | 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.
1 | sudo apt-get install vim vim-gtk |
glogg
glogg is a multi-platform log explorer
1 | sudo apt-get install glogg |
glogg (as Root)
To run as root create launcher pkexec glogg
and the appropriate policy
1 | sudo nano /usr/share/polkit-1/actions/glogg .root.policy |
Add the following:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | <? xml version = "1.0" encoding = "UTF-8" ?> <! DOCTYPE policyconfig PUBLIC "-//freedesktop//DTD PolicyKit Policy Configuration 1.0//EN" < 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.
1 | 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
1 | 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.
1 | 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
1 | 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:
1 | sudo nano /etc/apt/sources .list.d /virtualbox .list |
add the following line
1 | deb [arch=amd64] https: //download .virtualbox.org /virtualbox/debian focal contrib |
Then import the Oracle key
1 | wget -q https: //www .virtualbox.org /download/oracle_vbox_2016 .asc -O- | sudo apt-key add - |
Then, install the current version
1 2 | sudo apt-get update sudo apt-get install virtualbox-6.1 |
Add yourself to vboxusers
group
1 | 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
1 | sudo nano /etc/default/grub |
make the following changes
1 2 3 | GRUB_TIMEOUT_STYLE= "menu" GRUB_TIMEOUT=10 GRUB_CMDLINE_LINUX_DEFAULT= "" |
update Grub
1 | 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.