If you are using Linux Mint 18.1 on a computer with Nvidia GPU (particularly laptop with Intel+Nvidia discrete GPU combo) and update your system regularly you may sometimes end up with broken desktop - "Cinnamon has crashed and you are in fallback mode" or something similar is usually displayed.
This happens (as I have noticed after some time) after installing kernel update whenever you use proprietary drivers that are too old for that kernel hence cause problems.
Often you will be able to just use Nvidia GPU or just integrated Intel GPU without having your desktop crash (you will notice it by changing GPU in Nvidia X Server and logging-out then in again).
There are few solutions to this problem the first one being the most obvious - reverting to previous kernel (through "Synaptics Package Manager" on Ubuntu and Mint).
This is not true solution to problem though and can cause problems if for example you already installed updates or software that requires the latest kernel.
There are few tips however that can help you resolve this issue and possibly avoid it in future altogether.
1. Add Nvidia Xenial PPA (Personal Package Archive) to your system
The first thing you might want to do is to is add Nvidia PPA (Short and well written guide here) by invoking:
"sudo add-apt-repository ppa:graphics-drivers/ppa"
or if you do not like to visit terminal too much you can just open your "Software Manager" (on Mint you can find it under "Administration" or by invoking "mintinstall") then click "Edit" > "Software Sources" > "Personal Package Archives" > "Add new PPA" then entering the PPA adress which is: "ppa:graphics-drivers/ppa". After adding the PPA it is recommended that you invoke:
"sudo apt-get update"
this will update your system but not install latest Nvidia driver.
2. Choose and install/activate appropriate driver
Now that you have Nvidia drivers PPA in your system you should be able to search through them by invoking:
"apt search nvidia"
You will see long list of names of various versions of the drivers for Nvidia GPU - you can use these names to install them (like you usually would by invoking "apt-get install x") where "x" is name of the driver.
This is not very convenient though so a much better alternative is using the "Additional Drivers" program.
When it comes to Ubuntu it should be displayed as a tab in your "Software Manager".
On Mint it should be under "Administration", alternatively (on Mint) you can invoke "mintdrivers" to start it.
Note: Additional Drivers program was present in Linux Mint 17.3 but I found it missing in Linux Mint 18.1 and had to install it manually.
If you cannot find yours, you can simply go to your "Software Manager" just like you did in first step and search for "mintdrivers" then install.
Alternatively you can invoke:
"sudo apt-get install mintdrivers"
After "Additional Drivers" opens you will notice radio buttons with various driver versions.
You should choose the latest version (usually highest number), hit "Apply", let the drivers install and then restart your computer.
If you just installed new Kernel which caused desktop to crash and there was new one or several new drivers available then your problems should be now fixed.
Note: The Nvidia drivers PPA is maintained by dedicated team but it is possible for them to fall behind the newest Kernel update.
So you can receive update notification about latest kernel even though new driver for it has not yet been released in the PPA. In such case installing new kernel will break your desktop and make you wait until PPA is updated.
To avoid this, simply avoid updating kernel right away (remember this is not Windows, nobody is forcing you to install updates!) and first check whether newer Nvidia Driver is available and if it is, then most likely it will work on new kernel.
It is also good thing to check newest driver number on the Nvidia's website (as these are always the latest) and compare to the latest one available to you - if they are the same then you are guaranteed that driver will work on newest kernel.
Some screenshots:

Tested on Linux Mint 18.1 and Linux Mint 17.3 but should also work on Ubuntu.
All credit goes to author (Dudko) of this guide which you may follow instead of this post if you want, since it is much shorther than this one and worked for me on Linux Mint 18.1.
If you like to develop on Linux, particularly on Linux Mint then you might stumble across a problem when using JDK based applications such as JetBrains InteliJ or Android Studio which require JDK in the system. You might get error about HOME variable not being set-up or something similar. Below guide is slightly more detailed version of the above one with few tips.
In order to install Oracle JDK, first you have to uninstall it's open source counterpart openJDK (well not necesarilly since you may have several JDK versions in your system which is exact purpose of alternatives but since it does not make much sense to have both and for cleaniness and purpose of this tutorial I recommend uninstalling).
To do so first make sure you have all the latest updates by invoking standard:
"sudo apt-get update".
Then invoke: "sudo apt-get uninstall openjdk*" - the asterisk at the end includes all packages that start with openJDK prefix which means you do not have to know the exact version/exact name of the openJDK you currently have.
Then download appropriate JDK from Oracle's official website and unpack it somewhere - make sure to shorten the name of the folder slightly so that you do not have to type the whole awkward path later (e.g. from "jdk1.7.0_25/" to "jdk170").
Now you have a choice where to store the JDK, it can be anywhere but I recommend the same place as the guide, optional software folder in root which is "/opt/java".
Since moving files or folders to that directory requires root access, we can make it easier on ourselves and start file manager (if you are on Linux Mint then it will be Nemo) in privileged mode.
To do so either open Nemo, right click and choose "Open in terminal" or simply invoke "sudo nemo" (if you are using some other file manager like Nautilus on Ubuntu then it will be "sudo nautilus").
This will grant the file manager write privilege for root files and folders so now you can simply drag and drop the unpacked JDK folder from e.g. "home/Downloads" to "/opt/" or you can create folder called "java" like you you usually do and drop it there.
Now that you have done this, you have to actually tell the system where to look for the JDK.
But first you should check whether openJDK or any other JDK was properly removed from your system, to do so invoke:
"update-alternatives --display java" - this will display current location of any of the JRE or JDK that is in use on your system.
If you properly uninstalled the openJDK and any other JRE/JDK then it should display that there is no alternatives.
Note: since JRE (Java Run Time Environment) is subset of JDK (Java Development Kit) you only need JDK to both run Java apps (like you do with JRE) and develop them (for which JDK is needed).
Next to tell your system where JDK is invoke:
'sudo update-alternatives --install "/usr/bin/java" "java" "path_to_jdk_folder/bin/java" 1' - this installs/registers the link to JDK with highest priority in "usr/bin/java" folder in which programs look for JDK (as you may have several java versions with different priorities all pointing to "/usr/bin/java").
Note: you do not need the quotes around the path if the path does not contain spaces.
Finally to set this version of JDK as system default invoke:
'sudo update-alternatives --set java "path_to_jdk_folder/bin/java" '
To test if everything worked fine invoke:
"java -version" - this should display the version you just installed.
Tested on Linux Mint 18.1 but it should also work fine on Ubuntu.
As already mentioned the "/opt/java/" folder could be anything else.
One other suitable location I recommend is "/etc/alternatives" however that folder is usually much more "polluted" by other software making it difficult to navigate.