How To Setup A Workstation Computer With Ubuntu 16.04 Desktop Step by Step

How To Setup A Workstation Computer With Ubuntu 16.04 Desktop Step by Step
Contents hide

After four years with Arch Linux in my workstation computer, I switched back to Ubuntu desktop (for one more time).

Arch Linux is an amazing rock solid Linux distribution and it offers the best documentation by far. However, I moved to Ubuntu 16.04 LTS (Long Term Support) mainly for these reasons:

  1. I want to spend less time to manage my workstation computer (updates are “pain” in Arch, but very easy in Debian/Ubuntu).
  2. I have transferred ALL MY DATA to cloud during last 12 months (basically in Google Drive). I am working many hours with Android in mobile devices, so my desktop workstation can have a more simple setup.
  3. I have transferred ALL MY SERVER APPLICATIONS (apache, php, mysql, postgres) to a Debian VPS, so my desktop workstation can have a more simple setup.

Here is my workstation computer hardware configuration:

Ubuntu desktop seems to be much more mature and stable in version 16.04 (latest LTS version). The final result is a Free and Open Source workstation environment, which can meet the requirements of the vast majority of users.

Software installation in Ubuntu can be performed using command line

sudo apt-get install package_name

or using graphic utilities (“Synaptic” or “Software center”). See details in this post. In this tutorial I use the first method.

My goal is to create a Simple And Functional Linux Desktop.

REMARKS

  1. you will not find information on setup server applications like apache, php, mysql etc in this article. If you are interested on this software, please see this post.
  2. in this article I also describe the software I use for software development. If you are not interested on this kind of software, please skip relevant sections.

Basic setup

Ubuntu desktop setup is a simple graphical procedure. Download Ubuntu desktop here. Insert the CD (or the USB) and follow the instructions. Setup will only ask for your name and password and disk partitioning. Everything else is a graphical “wizard”.

Main system user

Username and password you provide during default setup will be used to create the main user of your system. This user will be automatically added to sudoers group (users with “administration privileges”).

By default, the root account password is locked in Ubuntu. So, to execute admin tasks you have to use sudo. For example:

sudo apt-get install package_name

Disk Partitions

You may let Ubuntu to decide for your disk(s) partitioning or to define it manually, as in my case.

I use ext4 file system for system and data partitions.

My computer has one SSD disk 240 GB, so I used the following structure.

The first partition I defined is the /boot partition (mount point /boot) and the second is the root partition (mount point /). It is strongly recommended to define a swap partition. As a rule of thumb set the double size of your computer RAM. It is recommended (but not required) to have a separate boot partition.

These three partitions are dedicated to Operating System files. So, I have defined one more partition, just to write data. This is the data partition (mount point /data). The obvious advantage of having a data partition is you can format the system partitions and install a new Operating System without affecting your data.

After completing the Basic setup

When setup finishes, you have a working system, covering all of your basic needs.

The default graphical enviroment of Ubuntu is called Unity. It looks like Gnome, but created by Canonical (the company behind Ubuntu) specifically for Ubuntu. You can also install other desktop environments (eg KDE or XFCE etc). DO NOT DO IT! (imho). If you want another environment, install a different Ubuntu flavor (there are many), eg Kubuntu, Xubuntu etc. Do not make major changes in Ubuntu, if you want a stable and easily upgradeable desktop environment (imho always).

You will not find a START MENU in Ubuntu Unity, as in many other graphical environments (Linux or Microsoft Windows).

Some applications shortcuts are already in the Unity Launcher (the button bar in the left of the desktop).

You can launch any application using Ubuntu Unity Dash (see image). Open Dash (click the top button of the Launcher or press SUPER key) and type some letters of the name of the application. For example, to open a terminal:

You can move application shortcuts from the Dash to Launcher (drag and drop). You can “Unlock” an application from the Launcher using “Right Click → Unlock from Launcher”.

The HUD or Heads Up Display is a search-based alternative to traditional menus. To open the HUD tap ALT. With HUD you can directly select a menu option of the running application without navigating to menu hierarchy, something like a “Command Palette”.

Press and Hold the “SUPER” key to display Useful keyboard shortcuts.

Example:

  • SUPER → to open the Dash
  • CTRL+ALT+T → to open the Terminal

Many applications are preinstalled in Ubuntu. Some of them are:

You can find documentation at help.ubuntu.com. And of course, always remember, Google is your “friend”.

Next steps

Next steps include:

  1. Update System
  2. Tweak SSD drive
  3. Tweak Command Line Environment
  4. Install more Command Line applications
  5. Programming Languages
  6. Tweak Desktop Graphical Environment
  7. Install more Graphical applications
  8. Install Web Development software
  9. Setup peripherals
  10. Cloud integration
  11. Recovery mode
  12. Backup your workstation

Update System

The first thing you have to do after Basic setup is to update your system.

Using the Dash launch “Software updater” (recommended)

or open a terminal and type

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

Tweak SSD drive

Ubuntu 16.04 seems to be ready for SSD drives. There are some steps you should take to extend the life of your SSD drive. The keypoint is to reduce write actions. Read this post for details.

Tweak Command Line Environment

This section is optional.

Base system includes a lot of command line tools (GNU or other). To run these programs, first launch a Terminal. The most important command line tools are:

  • Text editors: nano (which I use in this tutorial) and the famous vi editor
  • The Debian package manager apt
  • cp (copy), mv (move – rename), rm (delete) files
  • ls list files
  • Archiving utility tar
  • Compression utility gzip
  • Remote operations utilities (OpenSSH project) like ssh, scp, and sftp.
  • Download utility wget
  • File search utility locate

Set default text editor

nano in my case:

sudo update-alternatives --config editor

result:

There are 5 choices for the alternative editor (providing /usr/bin/editor).

  Selection    Path                Priority   Status
------------------------------------------------------------
  0            /usr/bin/vim.gnome   60        auto mode
  1            /bin/ed             -100       manual mode
* 2            /bin/nano            40        manual mode
  3            /usr/bin/mcedit      25        manual mode
  4            /usr/bin/vim.gnome   60        manual mode
  5            /usr/bin/vim.tiny    10        manual mode

Press <enter> to keep the current choice[*], or type selection number:

Customize nano editor

With your favorite text editor (nano in my case), edit the configuration file:

sudo nano /etc/nanorc

Show line numbers

Find #set constantshow and uncomment this line

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

Set tab size

...
set tabsize 4
...

Use SSH key authentication

To connect to a remote computer using SSH, you have to give a command like:

ssh RemoteHost -l username

Then you will be prompted for the password. If you do not want to type the password each time you want to connect, you may use “SSH key authentication”, which is more secure method.

Create your keys:

ssh-keygen -t rsa -b 4096 -C "youremail"

(Remember to use a strong passphrase)

Then copy your public key to RemoteServer

ssh-copy-id -i ~/.ssh/id_rsa.pub RemoteServer

Since then, every time you connect using ssh, you will not be asked for a password. The first time (only) you will be asked for the passphrase.

SSH autocompletion

SSH autocompletion is very useful but Ubuntu sets by default HashKnownHosts yes in /etc/ssh/ssh_config. Set to HashKnownHosts no

Install more Command Line applications

This section is optional.

Ntp (Network Time Protocol)

Installing ntp your computer clock can be synchronized with time servers. On Ubuntu, this is done by synchronizing with ntpdate tool.

So, there is no need to install ntp on Ubuntu. However, if you want to install it:

sudo apt-get install ntp

Midnight Commander (mc)

Midnight Commander is a powerful file manager (local, remote and cloud files). Probably the most popular command line file manager in Linux world.

sudo apt-get install mc

htop

htop is an interactive process viewer for Unix.

sudo apt-get install htop

iftop

You can use iftop to display bandwidth usage on an interface.

sudo apt-get install iftop

Openssh-server

If you want to be connected with your workstation from command line using ssh (e.g. from another computer in your LAN), install:

sudo apt-get install openssh-server

Examples

Secure Connect to your computer remotely:

ssh xxx.xxx.x.x -l username (xxx.xxx.x.x is the IP address)

Secure Copy a file remotely:

scp username@xxx.xxx.x.x:/path/to/remote /path/to/local

Harden SSH

Edit SSH configuration:

sudo nano /etc/ssh/sshd_config

Make the following changes:

...
PermitRootLogin no
...
X11Forwarding no
...
AllowUsers yourusername ...
...

Restart SSH

sudo systemctl restart ssh.service

Samba server and client

If you want to be connected with your workstation either from command line or your File Manager (e.g. from another computer in your LAN, Linux, Windows or Mac), install Samba.

Read details in this post: How To Setup Samba on Ubuntu Workstation

p7zip

p7zip is a port of 7z for POSIX systems like Unix (Linux, Solaris etc).

7z is an Excellent archiving software offering High compression ratio and Strong AES-256 encryption.

sudo apt-get install p7zip-full p7zip-rar

Find more information and examples at this post: Easily Compress and/or Encrypt Files in Linux Using 7z (p7zip) Archiver

unrar

This is an utility to extract rar files

sudo apt-get install unrar

wipe

Wipe is useful to secure delete files.

sudo apt-get install wipe

For integration (will add an option to right-click menu) with Nautilus file manager (recommended):

sudo apt-get install nautilus-wipe

Programming Languages

This section is optional.

After Basic Ubuntu setup, the following programming languages are installed:

Install Java (Oracle JDK 8)

To install Java, see this post: How To Setup Java on Ubuntu 16.04.

Tweak Desktop Graphical Environment

Ubuntu settings are available from Top Right menu:

There are a lot of settings you can modify to tweak your system:

Additional tools

The following graphical tools are available to tweak Desktop environment

  1. dconf Editor (low-level configuration system)

    sudo apt-get install dconf-tools
    
  2. Unity tweak tool (settings manager for the Unity desktop)

    sudo apt-get install unity-tweak-tool
    
  3. Compiz config settings manager (settings manager for Compiz OpenGL compositing window manager)

    sudo apt-get install compizconfig-settings-manager
    

System Updates Settings

Select “Software & Updates” from “System Settings” and go to tab “Updates”

The default setting is “Automatic Download and Install Updates”. Set package updates to “Notify”:

NVIDIA Drivers

Select “Software & Updates” from “System Settings” and go to tab “Additional Drivers”

Change nouveau to NVIDIA:

Mouse Sensitivity

After installation of Ubuntu Desktop 16.04, mouse is very sensitive (practically unusable) in most systems with wireless mouse. To fix this issue, read this post: Fix Mouse Sensitivity in Ubuntu 16.04

Appearance

Select “Appearance” from “System Settings” and go to first tab “Look”

first tab (“Look”)

Here you can select Wallpaper and Theme.

second tab (“Behavior”)

My prererences are

  • Show menus for a window → in the window’s title bar
  • Enable workpsaces

Language support

Select “Language support” from “System Settings”. Your system will be checked automatically. You will get the message “Some translations or writing aids available for your chosen languages are not installed yet. Do you want to install them now?”

Select “Install”, so missing packages will be installed. In my case:

hyphen-en-gb
libreoffice-l10n-en-za
libreoffice-l10n-el
thunderbird-locale-el
language-pack-el
language-pack-gnome-el
hunspell-en-za
libreoffice-help-en-gb
hunspell-el
firefox-locale-el
libreoffice-help-el
fonts-mgopen
mythes-en-au
hunspell-en-gb
thunderbird-locale-en-gb
hunspell-en-au
hyphen-el
libreoffice-l10n-en-gb
hunspell-en-ca

Text Entry

Select “Text Entry” from “System Settings”.

I modified the shortcut for changing keyboard layout (change language) to ALT+SHIFT instead of (the default) SUPER+SPACE

Default applications

Select “Details” from “System Settings”. Then, define your Default applications.

System Load Indicator (indicator-multiload)

System Load Indicator provides real time information for System Load and Performance of your computer. To install it:

sudo apt-get install indicator-multiload

Launch this indicator from the Dash after installation. indicator-multiload will appear in the top bar. Select “Preferences” from the Right-click menu to customize it:

Tweak Nautilus File Manager (Files)

Define Views

Nautilus menu → Edit → Preferences → Views (1st tab)

Define visible columns

Nautilus menu → Edit → Preferences → List Columns (4th tab)

Always use location entry

You can access location entry in Nautilus using CTRL+L. To make it permanent, use dconf Editor:

Org → gnome → nautilus → preferences → always-use-location-entry

remove unwanted default bookmarks in Nautilus

Edit the following files:

nano ~/.config/user-dirs.dirs

and

sudo nano /etc/xdg/user-dirs.defaults

Logout – login to enable the changes you made.

Tweak Gedit (text Editor)

You may add advanced features to Gedit text editor by installing gedit-plugins package. Here is a list of bundled plugins and those shipped with gedit-plugins. I enabled Draw Spaces plugin.

sudo apt-get install gedit-plugins

Microsoft fonts

To install Microsoft fonts, use:

sudo apt-get install ttf-mscorefonts-installer

Tweak Firefox

Firefox is preinstalled in Ubuntu. See this post for detsils: How To Setup And Configure Mozilla Firefox on Ubuntu 16.04.

Tweak Libreoffice

Adding Spell-check for your language is simple.

Select “Language support” from “System Settings”. Ubuntu will check automatically for your language dictionaries and will set them up.

Networking

After default setup you will find Gnome Network Manager in the top bar. Ethernet Network (wired connections) and Wireless Networks (Wi-Fi) are all available there.

Assign static IP address

After default setup your computer will obtain a “fake” IP address automatically, using DHCP. If you want to assign a static IP address:

Top bar → NetworkManager → Edit connections

Then

Ethernet → Wired connection 1 → Edit → IPv4 settings

and press Save

Enable the changes you made

Top bar → NetworkManager → Ethernet Network → Disconnect

Then connect again

Top bar → NetworkManager → Ethernet Network → Wired connection 1

Check the changes you made

Top bar → NetworkManager → Connection Information

or using command line:

ifconfig

Desktop magnification

Desktop magnification is an accessibility feature. It is also very important, when you create screencast videos. Launch CompizConfig settings manager and Tick the box on

Accesibility → Enhanced Zoom Desktop

Click on Enhanced Zoom Desktop and define Zoom in and Zoom out keys (eg CTRL+F7 and CTRL+F6)

Install more Graphical applications

It is recommended to install software from Repositories, in order to keep your system secure and updated. In some cases this is not possible (some Java applications or software with custom installers). In this case, you have to take care for updates and newer versions of these applications.

Below I mention the software installed in this tutorial without using official or other Ubuntu repositories: Oracle Java, PhpStorm, yed, AEScrypt, Peazip, TeamViewer.

All software is Open Source, except Google Chrome, Dropbox, PhpStorm, Teamviewer. Moreover Dropbox, PhpStorm and Teamviewer are commercial software (Dropbox offers a free plan).

KeePassX

KeePassX password manager is the first application I open after my Linux workstation bootup and the last I close before shutdown. It is strongly recommended to install and use a password manager. Read this post: Manage Your Passwords With KeePass in Linux And Android.

Dropbox

I use Dropbox to synchronize KeePass database in all my devices (computer, laptop, phone, tablet).

sudo apt-get install nautilus-dropbox

Synaptic

Synaptic is a GUI to manage software packages (add – remove software)

sudo apt-get install synaptic

Google Chrome

Read this post: How To Setup And Configure Google Chrome on Ubuntu 16.04.

uget

uGet is an Open Source Download Manager

sudo apt-get install uget

To add support for BitTorrents, install aria2 plugin:

sudo apt-get install aria2

then enable plugin from uGet Settings. Just click Ok in this dialog:

From Settings, set bandwidth limit:

so, the result will be:

Ubuntu default setup contains Transmission BitTorrent client.

Filezilla

Filezilla is a great FTP client

sudo apt-get install filezilla

Leafpad

Leafpad is a simple text editor (like Notepad in Microsoft Windows)

sudo apt-get install leafpad

Byobu

byobu is a handy terminal multiplexer. Among others, it is very useful when you want to leave a process running after closing your terminal (you cannot do this with the “common” Terminal).

sudo apt-get install byobu

However, there is another reason to install byobu. purge-old-kernels is a simple bash script, which uses apt remove --purge command to remove old kernels. It will be available in your system after installing package byobu. For more details, read this post: How to Remove Old Kernels in Debian and Ubuntu.

Terminator

Terminator is a useful tool for arranging terminals.

sudo apt-get install terminator

Gksu

gksu is a library and application used to ask the user for passwords to run programs as root or other user. ATTENTION: use it with caution!

sudo apt-get install gksu

Protect Your Eyes with Redshift

Redshift adjusts the color temperature of your screen according to your surroundings. This may help your eyes hurt less if you are working in front of the screen at night.

sudo apt-get install redshift redshift-gtk

Gimp

Gimp is an advanced image and photo editor. It is the Open Source alternative of Abode PhotoShop.

sudo apt-get install gimp

Single-Window Mode

To change the default multi-window mode, use:

Menu → Windows → Single-Window Mode

Gimp plugins

Gimp Plugin Registry is a set of Gimp plugins. This will add FX-Foundry menu and Save for Web option in File menu:

sudo apt-get install gimp-plugin-registry

Shutter

Shutter is an advanced screenshot tool.

sudo apt-get install shutter

To capture full webpage screenshots:

sudo apt-get install gnome-web-photo

yEd

yEd is a powerful Java application to generate high-quality diagrams.

Download the installer from https://www.yworks.com/downloads#yEd.

Install extra media codecs

Commonly used media codecs and fonts for Ubuntu. Note: use (*)ubuntu-restricted-extras for other flavors of Ubuntu (eg Xubuntu, Kubuntu etc).

sudo apt-get install ubuntu-restricted-extras

Install Winff

Winff is a Video converter (an FFmpeg GUI).

sudo apt-get install winff

OpenShot

Openshot is an advanced video editor.

sudo apt-get install openshot

Imagination

Imagination is an advanced slide show maker.

sudo apt-get install imagination

Kazam

Kazam is a powerful Screencaster

sudo apt-get install kazam

Audacity

Audacity is an advanced audio editor for multi-track recording and editing.

sudo apt-get install audacity

VLC

VLC is an advanced media player

sudo apt-get install vlc

gscan2pdf

gscan2pdf produces PDF from scanned documents. OCR (Optical Character Recognition) also supported.

sudo apt-get install gscan2pdf

Brasero disk burner

Brasero is a simple but powerful disk burner.

sudo apt-get install brasero

Peazip

PeaZip is an advanced archiver utility, based on Open Source technologies of 7-Zip, p7zip, FreeArc, PAQ, and PEA projects. Secure deleting files also supported.

Download (latest) portable Linux version here.

Create a shortcut to launch Peazip from Dash:

sudo nano /usr/share/applications/Peazip.desktop

add the following (replace /home/pontikis/Apps/peazip_portable-6.1.0.LINUX.x86_64.GTK2/ with your path)

[Desktop Entry]
Name=PeaZip
GenericName=Archiving Tool
Exec=/home/pontikis/Apps/peazip_portable-6.1.0.LINUX.x86_64.GTK2/peazip %F
Icon=/home/pontikis/Apps/peazip_portable-6.1.0.LINUX.x86_64.GTK2/FreeDesktop_integration/peazip.png
Terminal=false
Type=Application
Categories=GTK;KDE;Utility;System;Archiving;
Name[en_US]=Peazip

FreeFileSync

FreeFileSync is a free Open Source tool to synchronize files folders. Download it here and unpack it somewhere.

Create a shortcut to launch FreeFileSync from Dash:

sudo nano /usr/share/applications/FreeFileSync.desktop

add the following (replace /home/pontikis/Apps/FreeFileSync/ with your path)

[Desktop Entry]
Name=FreeFileSync
GenericName=Sync Tool
Exec=/home/pontikis/Apps/FreeFileSync/FreeFileSync
Icon=/home/pontikis/Apps/FreeFileSync/FreeFileSync.png
Terminal=false
Type=Application

gparted

GParted is an advanced disk partition editor.

sudo apt-get install gparted

REMARK: You will find Gnome disks in default Ubuntu setup, a tool similar with gparted.

In other Ubuntu flavors you can install Gnome disks, using:

sudo apt-get install gnome-disk-utility

hardinfo

hardinfo is a system profiler and benchmark tool for Linux systems.

sudo apt-get install hardinfo

GSmartControl

GSmartControl is a Hard disk drive and SSD health inspection tool. Actually, it is a graphical interface for smartctl, a command line tool to check (modern) Hard Disks and SSD which support SMART.

sudo apt-get install gsmartcontrol

psensor

psensor is a graphical hardware temperature monitoring application.

sudo apt-get install psensor

AEScrypt

AESCrypt is a Java application with which you can easily and securely encrypt files with Advanced Encryption Standard (AES), either from command line or using GUI.

Download Linux installer here.

Android app available here.

Virtualbox

Virtualbox is an advanced virtualization platform. Read this post: How To Setup Virtualbox on Ubuntu 16.04.

Teamviewer

Teamviewer is remote access and online meeting software (commercial software free for personal use).

Download .deb package here.

Install it (replace teamviewer_11.0.57095_i386.deb with the recent version you have downloaded):

sudo dpkg -i teamviewer_11.0.57095_i386.deb

You will get something like:

Selecting previously unselected package teamviewer:i386.
(Reading database ... 230757 files and directories currently installed.)
Preparing to unpack teamviewer_11.0.57095_i386.deb ...
Unpacking teamviewer:i386 (11.0.57095) ...
dpkg: dependency problems prevent configuration of teamviewer:i386:
 teamviewer:i386 depends on libc6 (>= 2.4).
 teamviewer:i386 depends on libgcc1.
 teamviewer:i386 depends on libasound2.
 teamviewer:i386 depends on libdbus-1-3.
 teamviewer:i386 depends on libexpat1.
 teamviewer:i386 depends on libfontconfig1.
 teamviewer:i386 depends on libfreetype6.
 teamviewer:i386 depends on libjpeg62.
 teamviewer:i386 depends on libpng12-0.
 teamviewer:i386 depends on libsm6.
 teamviewer:i386 depends on libxdamage1.
 teamviewer:i386 depends on libxext6.
 teamviewer:i386 depends on libxfixes3.
 teamviewer:i386 depends on libxinerama1.
 teamviewer:i386 depends on libxrandr2.
 teamviewer:i386 depends on libxrender1.
 teamviewer:i386 depends on libxtst6.
 teamviewer:i386 depends on zlib1g.

dpkg: error processing package teamviewer:i386 (--install):
 dependency problems - leaving unconfigured
Errors were encountered while processing:
 teamviewer:i386

To install missing dependencies

sudo apt-get install -f

You will get something like:

Reading package lists... Done
Building dependency tree
Reading state information... Done
Correcting dependencies... Done
The following additional packages will be installed:
  gcc-6-base:i386 libasound2:i386 libc6:i386 libdbus-1-3:i386 libexpat1:i386
  libfontconfig1:i386 libfreetype6:i386 libgcc1:i386 libgcrypt20:i386 libgpg-error0:i386
  libice6:i386 libjpeg62:i386 liblzma5:i386 libpcre3:i386 libpng12-0:i386 libselinux1:i386
  libsm6:i386 libsystemd0:i386 libuuid1:i386 libx11-6:i386 libxau6:i386 libxcb1:i386
  libxdamage1:i386 libxdmcp6:i386 libxext6:i386 libxfixes3:i386 libxinerama1:i386
  libxrandr2:i386 libxrender1:i386 libxtst6:i386 zlib1g:i386
Suggested packages:
  libasound2-plugins:i386 glibc-doc:i386 locales:i386 rng-tools:i386
The following NEW packages will be installed:
  gcc-6-base:i386 libasound2:i386 libc6:i386 libdbus-1-3:i386 libexpat1:i386
  libfontconfig1:i386 libfreetype6:i386 libgcc1:i386 libgcrypt20:i386 libgpg-error0:i386
  libice6:i386 libjpeg62:i386 liblzma5:i386 libpcre3:i386 libpng12-0:i386 libselinux1:i386
  libsm6:i386 libsystemd0:i386 libuuid1:i386 libx11-6:i386 libxau6:i386 libxcb1:i386
  libxdamage1:i386 libxdmcp6:i386 libxext6:i386 libxfixes3:i386 libxinerama1:i386
  libxrandr2:i386 libxrender1:i386 libxtst6:i386 zlib1g:i386
0 upgraded, 31 newly installed, 0 to remove and 0 not upgraded.
1 not fully installed or removed.
Need to get 5,461 kB of archives.
After this operation, 19.7 MB of additional disk space will be used.
Do you want to continue? [Y/n]

MuseScore

MuseScore is an advanced music composition and notation software.

sudo apt-get install musescore

Games

Solitaire, Mines, Sudoku, Mahjongg are preinstalled. I installed a simple Tetris:

sudo apt-get install quadrapassel

Install Web Development software

This section is optional.

git

Git is a Version Control System.

sudo apt-get install git

Display basic configuration

git config --list

Set basic settings

git config --global user.name 'Your Name'
git config --global user.email you@example.com
git config --global core.editor "nano"

Configure Git to properly handle line endings:

git config --global core.autocrlf input

PhpStorm

PhpStorm is my favorite PHP IDE. It is a commercial Java application by Jetbrains. For instructions read this post: How To Setup And Configure PhpStorm on Ubuntu.

GVim

GVim is Vim with a built-in GUI. I prefer thr Gnome version.

sudo apt-get install vim-gnome

You will get something like this:

Reading package lists... Done
Building dependency tree
Reading state information... Done
The following additional packages will be installed:
  fonts-lato javascript-common libbonobo2-0 libbonobo2-common libbonoboui2-0
  libbonoboui2-common libglade2-0 libgnome-2-0 libgnome2-0 libgnome2-bin
  libgnome2-common libgnomecanvas2-0 libgnomecanvas2-common libgnomeui-0
  libgnomeui-common libgnomevfs2-0 libgnomevfs2-common libjs-jquery
  liborbit-2-0 libruby2.3 rake ruby ruby-did-you-mean ruby-minitest
  ruby-net-telnet ruby-power-assert ruby-test-unit ruby2.3
  rubygems-integration vim-common vim-gui-common vim-runtime vim-tiny
Suggested packages:
  apache2 | lighttpd | httpd libbonobo2-bin desktop-base gnome-icon-theme
  libgnomevfs2-bin libgnomevfs2-extra gamin | fam gnome-mime-data ri ruby-dev
  bundler vim-gnome-py2 | vim-gtk-py2 | vim-gtk3-py2 | vim-athena-py2
  | vim-nox-py2 cscope vim-doc fonts-dejavu vim-gnome-py2 | vim-gtk-py2
  | vim-gtk3-py2 | vim-athena-py2 indent
The following NEW packages will be installed:
  fonts-lato javascript-common libbonobo2-0 libbonobo2-common libbonoboui2-0
  libbonoboui2-common libglade2-0 libgnome-2-0 libgnome2-0 libgnome2-bin
  libgnome2-common libgnomecanvas2-0 libgnomecanvas2-common libgnomeui-0
  libgnomeui-common libgnomevfs2-0 libgnomevfs2-common libjs-jquery
  liborbit-2-0 libruby2.3 rake ruby ruby-did-you-mean ruby-minitest
  ruby-net-telnet ruby-power-assert ruby-test-unit ruby2.3
  rubygems-integration vim-gnome vim-gui-common vim-runtime
The following packages will be upgraded:
  vim-common vim-tiny
2 upgraded, 32 newly installed, 0 to remove and 222 not upgraded.
Need to get 14,3 MB of archives.
After this operation, 66,1 MB of additional disk space will be used.
Do you want to continue? [Y/n]

Launch Gvim from Dash after logout – login:

Poedit

Poedit is an editor for translating software applications using gettext.

sudo apt-get install poedit

(this will also install gettext)

Diffuse

Diffuse is a visual diff and merge tool written in Python.

sudo apt-get install diffuse

Meld

Meld is a another visual diff and merge tool.

sudo apt-get install meld

PgAdmin3

pgAdmin is a feature rich administration tool for PostgreSQL.

sudo apt-get install pgadmin3

Doxygen

Doxygen is a feature rich documentation generator from source code.

sudo apt-get install doxygen-gui graphviz

(this will also install doxygen).

Doxygen GUI executable is doxywizard.

JsDoc Toolkit

JsDoc Toolkit is a Javascript documentation generator from source code.

sudo apt-get install jsdoc-toolkit

Setup peripherals

Printer – scanner

It’s quite easy to setup a printer (in my case HP OfficeJet 4500).

Select “Printers” from “System Settings” and click “Add”. Then use the wizard.

Web camera

It will be detected automatically during installation. You can try it using the also preinstalled application cheese.

UPS (Uninterruptible Power Supply)

Power Management module (“System Settings” → “Power”) on Ubuntu 16.04 is a flexible tool to manage your computer UPS. If you have a UPS dedicated to your workstation, Ubuntu “Power Management” is all you need. For more advanced configurations you need more specific software. In my case I use an APC UPS. Here are some scenarios to setup and monitor APC UPS:

Cloud integration

There are some solutions to enable (two-way) sync from your Linux desktop to many popular Cloud Storage Services . However, only Dropbox, SpiderOak and Tresorit provide Linux Desktop clients.

I use Google Drive as a cloud-based productivity suite. But I do not sync the files. All files are in the cloud. The main reason is that Google has not (yet) released a Drive Client for Linux. Another reason is I believe that keeping files in Cloud is more secure, than to sync them locally, as most Cloud Storage Services provide AES encryption for the files. The only file I have to my desktop workstation is the KeePassX passwords database. I sync this file with laptop and Android devices using Dropbox.

However, if you need a desktop client, here are some of them:

Recovery mode

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

Backup your workstation

Operating system Image backup

I create an image of Operating System partitions (/boot and /root in my case) using Clonezilla Live. I store image files in an external USB disk and additionally I upload them to a storage service. I prefer Amazon S3. So, in case of disk failure I can restore (again with Clonezilla) my workstation easily and quickly.

Data backup

As I keep all my data in the cloud (mostly Google Drive and Amazon S3) I do not keep data in my workstation. As this practice is not the norm, here are some backup solutions for your data:

  • Deja-dup

    Simple and reliable front-end of Duplicity. You can create local, remote and cloud backups with Deja-dup. Deja-dup is preinstalled (default Ubuntu setup). However, to install it:

            sudo apt-get install deja-dup
            

    Running Deja-Dup for first time press “Install” in the Overview to install software for “Restore”.

    If you need Remote server support for Déjà Dup:

            sudo apt-get install deja-dup-backend-gvfs
            

    If you need Amazon S3 and Google Cloud Storage support for Déjà Dup:

            sudo apt-get install deja-dup-backend-s3
            

    If you need Rackspace Cloudfiles support for Déjà Dup:

            sudo apt-get install deja-dup-backend-cloudfiles
            

    Deja-Dup integrates better with Nautilus (Unity, Gnome) than Thunar in XFCE

    .
  • Rsnapshot

    Powerful Command line utility based on rsync. You can create local, remote but not cloud backups with rsnapshot. Find a custom solution in this post: How To Create Fast And Reliable Backup Using Rsnapshot.

Browser data backup

I use Google Chrome in all devices. I have more than one “profiles” in Desktop and Laptop, based on some Gmail account. So Chrome sync is enough for me.

Cloud Data backup

I download all my data from Google apps (Gmail, Google Drive, Youtube etc) once per week, manually, using Google Takeout.

NOTE: There is not yet Google Takeout API provided by Google. You can automate Google Apps backup using commercial services as Spinbackup, Spanning Backup etc.

I keep these files in a locale storage server (a simple computer running Ubuntu server edition). I upload these files in Amazon S3, using AES encryption provided by Amazon. For this purpose I use a custom shell script I have created.

Synopsis

Operating system

Base Linux Systemdefault setup

CLI software

File managerMidnight commander 
Process viewerhtop 
Bandwidth usage monitoriftop 
NetworkingOpenSSH 
 Samba 
File archiversp7zip 
 unrar 
Secure deletewipe 

Programming languages

GNU bash4.3.43default setup
Perl5.22.1default setup
Python2.7.11+default setup
JavaOracle JDK 8 

Desktop environment

Unitydefault setup

Apps

TerminalGnome Terminaldefault setup
 Byobu 
 Terminator 
Settings managerSystem Settingsdefault setup
 dconf Editor 
 Unity Tweak tool 
 Compiz config settings manager 
 NVIDIA X Server Settings 
Indicators appletsSystem Load Indicator 
File managerNautilusdefault setup
Password managerKeePaasX 
Cloud storage clientDropbox 
Package managerSynaptic 
Web browserFirefoxdefault setup
 Google Chrome 
Mail clientThunderbirddefault setup
Download manageruget 
BitTorrent clientuget with aria2 plugin 
BitTorrent clientTransmissiondefault setup
FTP clientFilezilla 
Text editorGeditdefault setup
 Leafpad 
Run as usergksu 
Screen tool for eyes protectionRedshift 
Office suiteLibreOfficedefault setup
PDF readerDocument Viewerdefault setup
Image/photo editorGimp 
Image viewerGnome Image viewerdefault setup
Photo ManagerShotwelldefault setup
Screenshot takeGnome Screenshotdefault setup
 Shutter 
Graph editoryEd 
Extra media codecsubuntu-restricted-extras 
Video converter (FFmpeg GUI)Winff 
Video editorOpenShot 
Slideshow editorImagination 
Screen RecorderKazam 
Web camCheesedefault setup
Audio editorAudacity 
Media playerRhythmboxdefault setup
 Totem movie playerdefault setup
 VLC 
ScanningSimple scandefault setup
 gscan2pdf 
CD burningBrasero 
File archiversGnome Archive Managerdefault setup
 Peazip 
Sync toolFreeFileSync 
System profilerhardinfo 
Disk partitioner, S.M.A.R.T. monitoring, benchmarking etcGnome disksdefault setup
Disk partitionergparted 
Disk health inspection toolGSmartControl 
Hardware temperature monitoring toolpsensor 
BackupDeja-dupdefault setup
EncryptionAEScrypt 
VirtualizationVirtualbox 
Remote accessDesktop Sharingdefault setup
 Teamviewer 
Music NotationMuseScore 
GamesSolitairedefault setup
 Minesdefault setup
 Sudokudefault setup
 Mahjonggdefault setup
 Quadrapassel 

Apps for Web Development

Version controlGit 
PHP IDEPhpStorm 
Code editorGvim 
Localization toolPoedit 
Diff/merge toolsDiffuse 
 Meld 
Database ManagerPgAdmin3 
Documentation generatorDoxygen 
Javascript Documentation generatorJsDoc Toolkit 

Screenshots Collection

View Screenshots Collection here.

Your comments are welcome!