JREAM

Customize Ubuntu 20 LTS Desktop

There are many flavors of Linux that do great and look great. My personal preference has been to stick with Ubuntu and the Gnome desktop. What confused me in the beginning is that you can have Ubuntu with a different "desktop". When you think of Apple OSX or Windows they all look the same, this isn't the case with Linux!

Table of Contents

Customize with Gnome Tweak Tool

First thing you'll want is the gnome tweak tool. This allows you to add Gnome Extensions that can do anything with your desktop. Let's install the tweak tool and the Chrome Gnome Shell.

sudo apt install -y gnome-tweak-tool chrome-gnome-shell

Make sure to grab this Chrome extension: Chrome Gnome Shell so we can add extensions right from chrome.

Great Extensions

Dash To Panel is my all time favorite extension. It allows you to customize your top bar (or any bar) nearly any way you like.

If you aren't a fan of the Dash to Panel the other popular extension is Dash to Dock which is more similar to the default Ubuntu Sidebar but a lot better.

Screenshot Tool puts an icon in your task tray by the clock and you can easily capture the screen, window or area with two clicks.

User Themes is another awesome extension that allows you to change the look and feel of your desktop. You can head over to GnomeLook.org and find Gnome Shell Themes, Icon Sets, Cursors, Docks and a whole lot more.

Tweak Tool, Icon Packs and Themes

A few example themes and Shell Themes, Icon Packs and Themes are below.

Where to Put Theme Fles

There are two places you can place your theme files. The first is your local user area so it will only be accessible to you. Or you can put it in the global user shared folder.

For you only, or your username place it everything in your $HOME/.icons. You likely cannot see a dotfile file or folder by default so you can either load Nautilus (File Explorer) and click the three-dot menu to Show Hidden Files. You can press CTRL+L in Nautlus and type ~/.icons to navigate to it. Or you can simple use the terminal and navigate to cd ~/.icons.

mkdir ~/.icons
cd ~/.icons/
# Unzip/Untar your downloads here

For any user on your machine place it in the common area of /usr/share/icons. Each Icon, Cursor or Theme has it's own folder. They also have an index.theme file within them.

tar -zxvf your-theme-download.tar.gz
sudo mv your-theme-folder /usr/share/icons/

If you go further on reading and use a PPA rather than a manual install below, you'll notice that /usr/share/icons had installed those repositories to this path.

In Tweak UI, to get to it press Super/WinKey and search for Tweak. From there go to the Appearance Tab. This is where you'll set your Cursor, Icons, and Shell theme if you like. It's also where you can adjust your Gnome Extensions.

Gnome Tweak Tool

These PPA installations will appear in your Tweak menu automatically. You may to to reload it if you have it open when you install something new.

Paper

Paper may be the oldest in the collection but it's still beautiful and still used my many. This, like the next three use a PPA to install them as they are updated more frequently.

sudo add-apt-repository -u ppa:snwh/ppa
sudo apt install paper-icon-theme -y
Paper Icons

Numix

Numix seems like it has been the most popular for a long time. It also include Shell Themes and a large variety of icon styles.

sudo add-apt-repository ppa:numix/ppa
sudo apt install numix-*
Numix

Papirus

Papirus is a long time favorite by many with a massive collection of icons.

sudo add-apt-repository ppa:papirus/papirus
sudo apt-get install papirus-icon-theme -y
Papirus

You can do hunting for your style on your own so that's enough of that let's move on.

Terminal

In my opinion Gnome Terminator is the best terminal. It does everything I've every needed and it's far better than the default Ubuntu terminal.

If you want to set this as your default Terminal, run this command and select your favorite. You can always install different terminals also.

sudo update-alternatives --config x-terminal-emulator

Other swear by Oh My ZSH which is a decked out terminal with a ton of addons. You just have to be careful not to go crazy or you'll notice a very laggy terminal.

SSH Management

If you are unaware of SSH you can skip this part. SSH Keys are used for server authentication among other things. At some point you will want one or many. It's very important to keep your secret key private. You'll see more under "Creating an SSH Key".

SSH Key Location and Permissions

Quick SSH Permission Cheat Sheet

FilePermissionCommand
~/.ssh700chmod 700 ~/.ssh
~/.ssh/keyname_rsa600chmod 600 ~/.ssh/keyname_rsa
~/.ssh/keyname_rsa.pub644chmod 644 ~/.ssh/*.pub
~/.ssh/authorized_keys644chmod 644 ~/.ssh/authorized_keys

Note: An Environment variable appears as $NAME, there are many pre-defined ones in Linux to save you from having to know an absolute value. echo $HOME would provide you the current users home directory. echo $USER is another one that's very common.

Tip: You can also reference the current users home folder with ~/.ssh rather than $HOME if you like.

Permissions: SSH Folder

Create a folder in your Home Directory called .ssh. Your SSH key files are stored here.

mkdir $HOME/.ssh && cd $HOME/.ssh && chmod 700 $HOME/.ssh
chmod -R 700 $HOME/.ssh

Permissions: Authorized_Keys

Authorized Keys are usually on a server which allow you to SSH into, they contain your .pub key. Let's ensure we create a file if one does not exist. You can run this one-liner in the terminal.

[ ! -f $HOME/.ssh/authorized_keys ] && (touch $HOME/.ssh/authorized_keys && chmod 644 $HOME/.ssh/authorized_keys)

Create: SSH Key

Your SSH key works as follows:

  • Never share your private key, this has no extension.
  • Use your public key for any services you please, this has a .pub extension.

Recommended: Create this within your ~/.ssh/ folder.

# Change your_keyname to something like john_rsa
ssh-keygen -t rsa -b 4096 -f your_keyname_rsa

You do not have to suffix '_rsa' to your key, I do it to remember the encryption type. You can provide a password when prompted every time you use the key to add another layer or security or just leave empty to not require one.

Permissions: SSH Keys

Let's apply permissions of the private to to all things, and just adjust the public keys to the other in two commands.

chmod -R 600 $HOME/.ssh/
chmod -R 644 $HOME/.ssh/*.pub

Add: SSH Key to SSH-Agent

You SSH Key will not always be added to the SSH-Agent. You may need to add your private key to the agent. To do this simply run:

# This is pointing to your private key
ssh-add $HOME/.ssh/your_key_rsa

If you get an error, here are two resolutions:

  1. Ensure your permissions are correct (See above)
  2. Re-instantiate the agent with eval $(ssh-agent), you should see something like Agent pid 1234.

Extreme Mouse/Touchpad/Keyboard Tweaking

You would use xinput to adjust any setting available to these hardware devices. Here's my output after running xinput --list.

⎡ Virtual core pointer                    	id=2	[master pointer  (3)]
⎜   ↳ Virtual core XTEST pointer              	id=4	[slave  pointer  (2)]
⎜   ↳ Raydium Corporation Raydium Touch System	id=9	[slave  pointer  (2)]
⎜   ↳ Logitech M325                           	id=10	[slave  pointer  (2)]
⎜   ↳ Logitech MX Master                      	id=11	[slave  pointer  (2)]
⎜   ↳ Elan Touchpad                           	id=13	[slave  pointer  (2)]
⎜   ↳ Elan TrackPoint                         	id=14	[slave  pointer  (2)]
⎣ Virtual core keyboard                   	id=3	[master keyboard (2)]
    ↳ Virtual core XTEST keyboard             	id=5	[slave  keyboard (3)]
    ↳ Power Button                            	id=6	[slave  keyboard (3)]
    ↳ Video Bus                               	id=7	[slave  keyboard (3)]
    ↳ Sleep Button                            	id=8	[slave  keyboard (3)]
    ↳ Integrated Camera: Integrated C         	id=12	[slave  keyboard (3)]
    ↳ AT Translated Set 2 keyboard            	id=15	[slave  keyboard (3)]
    ↳ ThinkPad Extra Buttons                  	id=16	[slave  keyboard (3)]
    ↳ Logitech MX Master                      	id=17	[slave  keyboard (3)]

In order to see all the properties I can select by name or by ID. It's obviously easier to select my ID and much shorter. xinput --list-props 13 for my touchpad.

xinput --list-props 13
Device 'Elan Touchpad':
  # ... Shortened for brevity
	Synaptics Middle Button Timeout (353):	0
	Synaptics Two-Finger Pressure (354):	282
	Synaptics Two-Finger Width (355):	7
	Synaptics Scrolling Distance (356):	71, 71
	Synaptics Edge Scrolling (357):	0, 0, 0
	Synaptics Two-Finger Scrolling (358):	1, 1
	Synaptics Move Speed (359):	1.000000, 1.750000, 0.055741, 0.000000

You can set your property by using the ID (or string) fro the device and the property name, it might look something like this:

xinput --set-prop 13 "Synaptics Palm Detection" 1

Disable Touchpad When Typing

If you use a ThinkPad on Ubuntu after a while this might annoy you. To fix this I disable the touchpad for about 1 second when typing.

  • Important: in Tweak Tools > Keyboard and Mouse, make sure to disable the setting "Disable while Typing" it's no good.
  • Temporarily stop the the syndaemon process sudo killall syndaemon
  • Start syndaemon with the settings you prefer, also try syndaemon --help
  • You can try a setting, see if you like it, if not kill the service and start it again with different settings: syndaemon -i 1 -d -K, the 1 is for seconds.
    • In my Startup Applications I added an entry with syndaemon -i 1 -d -K as the command so it's always enabled.

Hardware Commands & Tools

Run these in your terminal.

CommandDescription
dfDisk Freespace
fdiskView/Modify HDD Info (Advanced)
freeView free Memory
hwinfo(Must Install) General HW Info
lsblkList Block Devices (Partitions, Storage Devices)
lscpuCPU Info
lshwList Hardware
lspciList PCI
lssci(Must Install) List SCSI (HDD/DVD)
lsusbList USB
mountView/Modify mounted filesystems

Remove Unwanted PPA Packages

Too many Source Lists can slow your system upgrades, you should clean out things you never use once and a while. This is when you run apt-get update. To see all your repositories:

ls /etc/apt/sources.list.d/

And to remove, you simply do a rm

sudo rm /etc/apt/sources.list.d/package_i_dont_want.list
sudo apt-get update

I hope some of these posts are helpful, enjoy Linux!