There are two types of release models which distros are using, both have their pros and cons.
The Linux community has created multiple variations of the desktop environment for you to choose from as by default the system uses the text mode by default, with their own basic software for common use such as file explorer, notepad, virtual terminal etc. along with their own purpose and features.
One of the most oldest (and 2nd) desktop environments which to this day is constantly updated. The 3rd generation of GNOME has a much more tablet-like appearance compared to previous ones with a very large set of softwares combined with community-made ones as well as extensions, thankfully the GNOME Classic is included for those who do not like it's theme and it's compositor integrates really well with NVIDIA graphics card, which does not cause any tearing at all. However, it's very limited in customization, forcing you to install GNOME Tweak to change things such as the color theme, icons etc.
For Wayland use, GNOME supports both GBM and EGLStreams APIs which makes it the only DE to support Wayland for every graphics cards that support it.
The very 1st desktop environemnt which to this day is still being updated and maintained. Compared to GNOME, it uses less memory while having many of it's features and software included which makes it very attractive to Windows/Mac users while being very customizeable and packed full of options for you to set up and a dedicated option to disable composition when running a software in full screen, providing a better performance in games. The main drawback however is that it's window manager/compositor KWin does not tolerate well against NVIDIA's proprietary driver, requiring you to set both the desktop and the driver to work properly.
Created by a original Solus developer and currently maintained by Solus Team. It currently serves as an alternative for GNOME 3 with a much more desktop-like interface and bear some similarities to Windows 10.
Created by Linux Mint Team, Cinnamon brings back the GNOME 2 appearance with a modern twist, while using some of the features present in GNOME 3, including it's compositor's integration with NVIDIA GPU. Allows you to run in Hardware (Default) and Software mode (No Composition).
Starting off as a clone of a Unix-like desktop environment named CDE, it became it's own DE with a much more Windows XP-like appearance and with it's light use of memory is well suited for low end hardware or even for Windows veterans.
MATE was born as a spiritual successor to GNOME 2 after a controversial change in GNOME 3. The DE is well suited for common Windows users while providing it's own features such as audio preview by a mouse hover.
Starting off as LXDE and later one in combination with Razor-Qt it became LXQt. The most lightweight desktop environment ever created, despite it's limited features and customization along with the lack of compositor it is perfectly suited for the lowest end hardware.
There are two main releases of the official Linux kernel:
Both releases offer the same security updates.
While both stable and LTS Linux kernel releases can be used for gaming, there are also community-made ones which add features and improvements, thus may improve your gaming experience even further.
The most notable releases:
It is very important to install the microcode for your CPU as the manufacturer provides security and stability updates.
Most distributions use either package manager or some kind of firmware/drivers manager to update your microcode.
Here is a following table describing the drivers and informations which Linux supports for each GPU brand.
1 - GCN 1 and 2 architecture support in AMDGPU is experimental.
2 - The proprietary one started to support Wayland since 364.12 version, however it uses the EGLStreams API.
3 - Do not use it on Intel HD 4000 series and newer GPU.
AMD/ATI GPU must use the open source driver as they provide the best performance than the proprietary ones, while NVIDIA users should stick to the proprietary ones. However there are some things to remember:
Ubuntu/Linux Mint/Zorin OS/Pop! OS/Linux Lite/KDE Neon
Use sudo add-apt-repository <PPA repository> to add one. Make sure to run sudo apt update in order to update the repository list after adding one.
sudo add-apt-repository <PPA repository>
sudo apt update
As of 10 August 2017, OpenSUSE Tumbleweed has an official NVIDIA RPM , you can manually add the repository with this command
zypper ar https://download.nvidia.com/opensuse/tumbleweed nvidia-tumbleweed
zypper inr (For installing)
If your graphics card supports Vulkan API, you need to install additional driver package in order to enable the support, with the exception of Nvidia ones as they are already included and then install the Vulkan ICD Loader to let your GPU to use it on an application which supports it. These drivers are:
Depending on the distro you may have to install Mesa Vulkan Driver. As for the NVIDIA's proprietary drivers, you also need to install the Vulkan package or in case of other linux distributions (such as Antergos) it's already included with the main driver.
In case of laptops which contains NVIDIA Optimus support it is recommended to have PRIME enabled, which can be done by installing additional package, follow the distro’s documentation to learn which one. The alternative to it can be NVIDIA XRun package and Bumblebee's optirun/primusrun (Not recommended as it is no longer in development), but then the manual intervention is required (With the exception of the former). The linked guide will explain in detail the differences between them, as well as how to use them.
AMD users have a much easier time with that feature as it only requires running the game with the DRI_PRIME=1 command.
Xorg/X11 is the 1st display server released in 1986 which became a standard of creating Graphical user interface (GUI) for Linux. It received a major change during the popularity of Linux in 2000s. Despite the long support and being commonly used it has major issues which are still present today such as focus stealing, client and server separation which may lead to delays depending on the application it was made, tearing issues or even security ones which other user may capture key inputs from the keyboard. Depending on the desktop environment it also has accessibility issue for disabled users. Despite the release of its successor, Wayland, it is still maintained by Xorg Foundation and Free-Desktop.org.
Wayland is a successor to the Xorg/X11 server which allows to simplify the whole graphics stack without creating a Client while using a 3rd party compositor. It is only available for GPUs which have a Kernel Mode Setting support. Intel, ATI and AMDGPU, Nouveau have KMS enabled automatically by default albeit late, however when it comes to NVIDIA you must enable it manually.
The main benefit of the Wayland is a much faster response to programs compared to Xorg/X11 due to the simple communication between APIs. Keep in mind that you may need to add a command to inform you are running in that session to avoid using XWayland, which may affect the performance even if it has a support implemented. Such as games based on SDL2 like Team Fortress 2.
Bear in mind that if you want to use XWayland on NVIDIA GPU then you may be out of luck as the NVIDIA themselves stated that they have no plans for supporting XWayland, which pretty much forces you to use Xorg/X11 as a default GUI manager. 
Here are the following GUI libraries with Wayland support:
Audio is mostly handled by ALSA, with or without PulseAudio. You may set up to use ALSA only, however it is mostly recommended to use with the latter, as it acts as a main central configuration point for audio itself and some games are set to use PA by default. When using a sound card you must install ALSA Firmware package from your repository, while in case of using Bluetooth headphones in PulseAudio, install it's PulseAudio Bluetooth library.
When it comes to API in Linux games, there are multiple of em such as OpenAL (Otherwise known as OpenAL Soft), SDL_mixer, SteamAudio, FMOD and more. But the most popular ones are the first two APIs.
You may also encounter the OSS, also known as Open Sound System, released in 1995, it was used as a default sound manager which was added into the kernel, until it was replaced by ALSA in 2.5 version release of Linux kernel. Linux games released till 2001 were using it to play any sound. Even to this day, the OSS is still being updated but it is not much used anymore. If you ever encounter a software where it supports only this audio interface and complaing about the lack of /dev/dsp, you have to either install the OSS itself and set the audio up (the hard way) or rely on emulation. In general, installing the OSSP package and enabling/starting it's daemon process (osspd) is enough to do it as it supports both PulseAudio and ALSA, but it is not updated frequently.
Another way is to use the OSS emulator for the specific audio interface:
Do not run aoss if you are using PulseAudio, all you will get is a static noise mixed with the white ones at high volume!
In case of MIDI, installing Timidity is required along with either soundfonts or FreePats package. Depending on the distro, it will either set it up automatically or require manual intervention. Keep in mind that if you are using PulseAudio, all the sounds, beside the MIDI music, will be muted unless you include the -iA -Os argument for the timidity command as either an autostart or as a user-made service.
You can also use Fluidsynth, however bear in mind that it uses more CPU and needs to be set up to work alongside with PulseAudio, but compared to Timidity, it is more up to date.
The keyboard and mouse are supported on the go, however if using XOrg you must have it's input-libinput (input-evdev being the alternative) package installed as well in order to work, however by default it will support only 3 buttons for the mouse, in order to use all of them, you have to configure it manually. When using a laptop you may also need to install XOrg's Synaptic package to have access to all features of your touchpad, against the touchscreen it will either work out of the box (besides some calibration) or being very tedious, especially when it is not supported by Linux kernel.
Wayland users only requires the libinput package itself, which also supports XOrg.
If using a mouse dedicated for gaming, there is a universal configurator called Piper. Due to the fact that the software is still new, there is a limited support for some mouse devices, it does support some of the Logitech mouses. However, there are some other ones made specifically for a product from one company:
All the controllers such as DualShock 4,DirectInput gamepads and XInput ones (Such as Xbox 360) are supported, however in case of issues regarding XInput ones, you may wish to install xboxdrv. For calibration purpose, you can install the graphical interface of JSTest package to do it.
The most interesting thing is the Steam Controller, as despite requiring Steam to make it work, it’s entirely possible to use it outside of it with the use of third-party scripts which lets you emulate it as an actual gamepad or a mouse. Even so, far to use it on Wine, if it’s set properly.
It is possible to use SDL2's binary for testing the Joystick or Gamepad to set up a non-supported controller to work with SDL2 applications .
If dealing with a game that has a very limited or no controller support at all, the AntiMicro has you covered. It allows you to bind keyboard and mouse inputs into the controller, however it works only in Xorg environment. Fedora has the stable build already available in their repository, Debian users should use the LibreGeek's repository, especially Ubuntu or Ubuntu-based distributions which can be added with this PPA. Otherwise, you need to compile the program on your own, which luckily includes the instructions and a list of dependencies required for compiling.
It is entirely possible to benchmark native Linux games in this system by using the Phoronix Test Suite. While it is not in GUI form, it's actually very easy to use. You will need to download any game you wish to benchmark through this program and later on run it. The biggest advantage is that once it's completed, it will save the information as a webpage which the program automatically generates, creating a separate result is not required, as the program can also include it to the existing ones, making a comparison between the hardware you have used or settings much easier.
If decided to benchmark on your own, whenether the game has a built-in benchmark or not, using Gallium HUD is recommended. Due to the option of displaying the FPS, CPU or even the GPU load graph while running the software and can be customized to your need and it is available when the MESA package (version 13 or newer) has been installed. This option is only available for AMD, Intel HD and Nouveau.
Another much simpler and available for every kind of GPU is the glxosd which requires installing the package with the same name and just like Gallium HUD, you need to type glxosd before launching a game. The settings can be changed in the glxosd_config.lua file located in /etc/glxosd/. It is recommended to change the refresh rate of displaying the information as by default it will show the current info after 3 seconds (In config file it's 3000).
Steam users can use Valve's voglpref which only works for Steam. It will display both informations in the Terminal and at the custom website which can be accessed privately, from there you perform any task you want, although you need to know the SteamID of the game you wish to benchmark.
Since Linux 3.9 and recent QEmu version, it is possible to passthrough a graphics card, motherboard or even other hardwares into the virtual machine. The main advantage of it is having a native GPU working on Windows 7/8/10 in virtual machine such as the KVM or QEmu (VirtualBox does not support it!), which allows you to play Windows games on it without even using the dual-boot or relying on Wine to do so! However, there are some disadvantages:
The following links and the subreddit can be used to learn about the process. Keep in mind that it is not possible to perform a PCI Passthrough from Windows. This can be done only in Linux itself!
WINE (Wine Is Not an Emulator) is a compatibility layer which allows you to run Windows programs in Unix/Linux environment, it’s main advantage is a wide support of Windows versions ranging from 3.11 to Windows 10 and supports both 32-bit and 64-bit versions of their systems (32 bit only if you have a 32 bit version of Wine). Besides that some games may even work better than on native Windows such as games which use OpenGL or Vulkan rendering. However a manual intervention may be required if there are issues and checking the WineHQ’s App Database to see if it’s compatible and how to make it work. There are multiple versions of this program each with their own differences:
So far only AMD and NVIDIA graphics cards which rely on open source drivers have a support for Gallium 3D Nine which greatly benefits the compatibility and performance with DirectX 9-based games.
If WINE itself is hard to use there are also front-ends which may improve your experience with it:
The Unix Shell "bash" and Terminal are available on most Linux-distributions by default is a very useful tool for doing system tasks. If you use Linux as your main operating system, it may be unnecessary to use, but it is recommended to learn some of the important commands and terminal hotkeys to make your job easier such as creating a script binary to perform simple tasks or even create aliases to turn complicated commands into a much simple version. Each desktop environment includes their own terminal and can be changed anytime you want, especially the third-party ones such as Terminator,XTerm/UXTerm or Tilix.
All user-made settings are always saved in .bashrc file in your Home directory.
The LinuxCommand.org site is the best place to learn the basic and commonly used commands and it is recommended to learn the commands related to file manipulation, text editing, finding specific words and hardware-related stuff.
Partitioning your disk storage for using Linux is the most commonly controversial topic as most users have their own partition set for some folders or just use the whole Root folder, the storage device is commonly labeled as /dev/sd*# where * represents the letter from a to z, while the # is represents the partition of it. The biggest talk when it comes to making a partition is the Swap disk which have their preferred disk size changed. The swap disk is mainly used when you do not have enough RAM to store and have to rely on the HDD/SDD itself which is slower in terms of speed compared to RAM, but can get the job done. The most common partition for using the Swap disk for normal use goes like this
When it comes to partitioning your folders. You have to keep in mind the maximum size of it and plan your use of it. Most suggested one on the main root folder (/) is 15GB-20GB while the rest of it goes on to /home (Mind the RAM to know if you need to make Swap disk or not). The main advantage of it is that you won't lose any files stored in your Home directory when the system breaks.
You can also make a separate /boot partition as well, but when it comes to the size bear in mind how many kernels you are going to install and use. UEFI users must create a /boot partition with EFI System Partition while marking it as a Bootable disk, keep in mind that you can't use more than 2TB on it otherwise, there may be some issues. If dual-booting with Windows, don't reformat the existing one as Windows stores the .EFI file there, instead just mount it and use the existing one instead. The installers for most distros have an option to automatically set the disk for you if you wish and in some cases dependin on your choice, install the distro while keeping Windows intact.
There is a lot of the file system/partition types used in Linux for managing your files, but the most common one and used by default in many Linux distros is Ext4 introduced in 2008 as it includes new features which reduces the file fragmentation, improves flash memory life through delayed allocation, allowing larger volumes/files and mounting Ext2 or Ext3 disks as Ext4. There are other file systems which can be used with their own strengths and weaknesses.
Here are the following examples of how the partitioning looks like:
Single 250 GB HDD /dev/sda on a 4 GB of RAM BIOS system
128 SSD /dev/sda and 500 GB HDD /dev/sdb on a 8 GB of RAM UEFI system
It all depends on how much space and which available storage device you want to use on folders and which disk format you want to use. Bear in mind that the order of the partition affects the performance for the disk. So having the /boot folder as a 1st partition will more likely let you boot faster than putting it last.
Note: If you decide to dual boot with Windows 8 or higher and using UEFI. You are not required to make an EFI partition since it already exists! Some Linux distributions such as Linux Mint offers you an option to install the system alongside with Windows, in some other distros such as ArchLinux, you need to mount the disk, install the bootloader and save the entry to the FStab. This guide will explain in further detail about dual booting with Windows.
sudo rm -Rf /
Disable Nvidia Logo when running X server
Add Option "NoLogo" "true" under the NVidia Corporation VendorName in it's Xorg configuration file. Example:
Option "NoLogo" "true"
Identifier "Nvidia Card"
VendorName "NVIDIA Corporation"
Option "NoLogo" "true"
Disable Mouse Acceleration in XOrg
Create a config file in /etc/X11/xorg.conf.d/ as any number-custom name.conf (for example 50-mouse-acceleration.conf, keep in mind that it does not accept spaces in names) as super user/root and add the following script:
Identifier "My Mouse"
Option "AccelProfile" "flat"
Then restart the system or Xorg (In most distros it's Ctrl+Alt+Backspace ←)
Improve Shutdown Time In Systemd
In some desktop environments such as LXQt, the system shutdown or restart process may take longer due to Systemd having the time to stop the session set to 1 minute 30 seconds by default.
sudo systemctl daemon-reload
Install watchdog package and enable/run the watchdog service.
Resolution Scaling with XRandr
It is entirely possible to scale the resolution through multiplications (--scale) or by resolution (--scale-from) with xrandr command. Provided that you input the monitor name and your current resolution, which can be learned by using xrandr -q command (It will also list available resolutions).
Here are some examples:
xrandr --output VGA1 --mode 1024x768 --scale 0.5x0.5
xrandr --output VGA3 --mode 1920x1080 --scale-from 1440x900
As Ubuntu/Debian 64 bit distros have 32 bit libraries disabled by default, this can cause compatibility issues with the software (Especially with upgrading Wine). To enable it you must use these following commands:
sudo dpkg --add-architecture i386
sudo apt update
As GOG, Steam and other stores mostly support Ubuntu due to it's popularity in both making another distribution (Such as Linux Mint) or wide use, there can be a limited support for the other distros such as ArchLinux, Fedora etc. Mostly in terms of requiring dependencies to run the game or a software.
The ldd command can be used to check which dependency does it require and if they are in your system.
ldd <binary file>
After running the command, it'll list all the *.so files the software uses, if there is a "Not found" somewhere, this is the moment to learn which package does it contain the file.
The missing dependency checkup can be even easier with the inclusion of the grep command.
ldd <binary_file> | grep "Not found"
This will only look for the lines related to "Not found" only, if nothing shows up then you have everything you need.
Open makepkg.conf as root and under MAKEFLAGS add -j#. Where # is the sum of (number of CPU cores you wish to use) + 1 (so if you wish to use 4 cores, ya need to put -j5 for example)
1. Create an empty text file and open it with any text editor.
2. Add this following script:
Replace /path/to/library with one of these paths:
3. Once done, save it and make it executable using either chmod command or via Properties with your file manager.
dkms install nvidia/<version> --all
mount /dev/sd<disk and partition
chroot <root partition>
xrandr --output <name> --primary
Open the Terminal and type as root gpasswd -a <username> audio, if that did not work then:
gpasswd -a <username> audio
Type in terminal this command to stop and then start PulseAudio at the same time:
pulseaudio -k && pulseaudio --start
NVIDIA users can fix the screen tearing by enabling Force Composition Pipeline in NVIDIA Settings, if it persists, enable Force Full Composition (Keep in mind that it reduces the performance in games even more).
AMD and Intel HD users do not have to do anything as DRI3 handles the refresh rate by default without compromising the performance, provided the compositor contains the Present extension.
If it persists, chances are you may be required to install and use a 3rd party compositor such as Compiz, Compton etc.