Anonymous edits have been disabled on the wiki. If you want to contribute please login or create an account.

Difference between revisions of "Linux"

From PCGamingWiki, the wiki about fixing PC games
(45 intermediate revisions by 26 users not shown)
Line 10: Line 10:
  
 
'''Key points'''
 
'''Key points'''
{{++}} Most Linux distributions are significantly lighter on resources than [[Windows]].
+
{{++}} Wide variety of distributions available, allowing unparalleled user choice and customizability across the board.
{{++}} Better network stacking allows for lower network latency.
+
{{ii}} The quality of native ports on Linux varies. Some games might perform worse when compared to other operating systems; other might perform better.
{{++}} Managing OS updates is much easier, won't cause downtimes, won't run updates without user explicit consent.
+
{{ii}} Many [[:Category:Windows|Windows]] games can be played by using either [https://steamcommunity.com/games/221410#announcements/detail/1696055855739350561 Steam Play] or [[#Wine|Wine]].
{{++}} Linux' default file system, EXT4 is superior to NTFS, giving shorter loading screens, faster database searches.
 
{{--}} Some Linux-native games have ports of really poor quality, this gets better with newer games.
 
{{--}} GPU drivers performance is inferior, performing about 5~20% worse than on Windows. This varies per game.
 
{{ii}} Many Windows-only Steam games can be run through [https://steamcommunity.com/games/221410#announcements/detail/1696055855739350561 Steam Play]. Other Windows-only games can be run using [[#Wine|Wine]], but depending on the game it may be significantly more challenging.
 
  
 
'''Resources'''
 
'''Resources'''
 
{{ii}} [https://www.protondb.com/ ProtonDB] - crowdsourced database of Proton (Steam Play) games performance
 
{{ii}} [https://www.protondb.com/ ProtonDB] - crowdsourced database of Proton (Steam Play) games performance
{{ii}} [https://www.phoronix.com/ Phoronix] - Website dedicated to hardware and benchmarking in Linux
+
{{ii}} [https://www.phoronix.com/ Phoronix] - website dedicated to hardware and benchmarking in Linux
 
{{ii}} [https://distrowatch.com/ DistroWatch] - page dedicated to Linux distributions
 
{{ii}} [https://distrowatch.com/ DistroWatch] - page dedicated to Linux distributions
 
{{ii}} [https://openbenchmarking.org/ OpenBenchmarking] - a list of user-made benchmarks in Linux
 
{{ii}} [https://openbenchmarking.org/ OpenBenchmarking] - a list of user-made benchmarks in Linux
{{ii}} [https://www.reddit.com/r/linuxhardware/ /r/linuxhardware] - Subreddit dedicated for Linux Hardware
+
{{ii}} [https://www.reddit.com/r/linuxhardware/ /r/linuxhardware] - subreddit dedicated to Linux hardware
{{ii}} [https://www.reddit.com/r/linuxquestions/ /r/linuxquestions] - Subreddit dedicated for Linux-related questions
+
{{ii}} [https://www.reddit.com/r/linuxquestions/ /r/linuxquestions] - subreddit dedicated to Linux-related questions
{{ii}} [https://linuxjourney.com/ Linux Journey] - A beginner friendly page about learning Linux in general
+
{{ii}} [https://linuxjourney.com/ Linux Journey] - a beginner-friendly page about learning Linux in general
 +
{{ii}} [https://wiki.archlinux.org/ ArchWiki] - wiki intended for Arch but is useful for other distros
 +
{{ii}} [[ARM]] - info on Linux ARM distros, devices, and software support
  
 
'''Communities'''
 
'''Communities'''
{{ii}} [http://gamingonlinux.com Gaming On Linux] - A large community dedicated for gaming on Linux
+
{{ii}} [https://gamingonlinux.com Gaming On Linux] - a large community dedicated for gaming on Linux
{{ii}} [https://www.reddit.com/r/linux_gaming/ /r/linux_gaming] - Linux Gaming Subreddit
+
{{ii}} [https://www.reddit.com/r/linux_gaming/ /r/linux_gaming] - Linux gaming subreddit
{{ii}} [https://www.reddit.com/r/linux4noobs/ /r/linux4noobs] - Subreddit dedicated for Linux newbies
+
{{ii}} [https://www.reddit.com/r/linux4noobs/ /r/linux4noobs] - subreddit dedicated for Linux newbies
{{ii}} [http://linuxgamecast.com/ Linux Game Cast] - pod/videocast
+
{{ii}} [https://linuxgamecast.com/ Linux Game Cast] - pod/videocast
 
{{ii}} [https://www.back2gaming.com/ Back2Gaming] - Gaming related news/guide page. More oriented into Linux
 
{{ii}} [https://www.back2gaming.com/ Back2Gaming] - Gaming related news/guide page. More oriented into Linux
  
Line 37: Line 35:
 
There are two types of release models which distros are using, both have their pros and cons.
 
There are two types of release models which distros are using, both have their pros and cons.
  
===Fixed Release===
+
===Fixed release===
 
{{++}}Offers stable packages
 
{{++}}Offers stable packages
 
{{++}}Most distros which use it are beginner friendly
 
{{++}}Most distros which use it are beginner friendly
 
{{++}}Very little maintenance
 
{{++}}Very little maintenance
 
{{--}}Package versions are usually tied to the distro version, so to get the recent packages, you need to update your OS
 
{{--}}Package versions are usually tied to the distro version, so to get the recent packages, you need to update your OS
{{--}}Stable packages don't contain the newest features. This is especially important in case of GPU drivers
+
{{--}}Stable packages don't contain the newest features. This is especially important in case of GPU drivers
 
{{--}}Manual intervention is required in order to add user-made repositories in some distros.
 
{{--}}Manual intervention is required in order to add user-made repositories in some distros.
 
{{ii}} Updating the distro to the next version doesn't require a fresh install and is easy to carry out but might take up to few hours (but usually below an hour)
 
{{ii}} Updating the distro to the next version doesn't require a fresh install and is easy to carry out but might take up to few hours (but usually below an hour)
 +
{{ii}} Many Debian-based distros offer [https://help.ubuntu.com/community/UbuntuBackports "backports"] and/or [https://wiki.debian.org/DebianTesting "testing"] modes that provide newer versions of some packages than what the stable version does.
  
 
{| class="wikitable sortable"
 
{| class="wikitable sortable"
 
|-
 
|-
! Distribution !! Based On !! Desktop(s) <ref group="fr note">Default options are marked in bold</ref> !! Release cycle !! Supported by<ref group="fr note">look at Official Support TODO: add it</ref> !! Description
+
! Distribution !! Based on !! Desktop(s) <ref group="fr note">Default options are marked in bold</ref> !! Release cycle !! Supported by<ref group="fr note">look at Official Support TODO: add it</ref> !! Description
 
|-
 
|-
||'''[https://www.ubuntu.com/download/desktop Ubuntu ]''' || Debian || GNOME || 6 months, 2 years for LTS || Steam, GoG, many commercial developers ||style="text-align: left;"| The most popular distribution. Ubuntu LTS (Long Term Support) is officially supported by Steam. If you don't know what to choose, pick this one. Ubuntu non-LTS is updated more often and contains newer packages and functions and is also a great option.
+
||'''[https://www.ubuntu.com/download/desktop Ubuntu ]''' || Debian || GNOME || 6 months, 2 years for LTS || Steam, GoG, many commercial developers ||style="text-align: left;"| The most popular distribution. Ubuntu LTS (Long Term Support) is officially supported by Steam. If you don't know what to choose, pick this one. Ubuntu non-LTS is updated more often and contains newer packages and functions and is also a great option. Note that as of 19.10, Canonical will include some of the 32 bit packages if needed.
 
|-
 
|-
|| '''[https://www.ubuntu.com/download/flavours Ubuntu flavours]''' || Ubuntu || Plasma, LXQt, Budgie, MATE, Xfce || 6 months || same as Ubuntu<ref name=support group="fr note">Support is not official, but the distros are so similar, that everything that works for Ubuntu will work here.</ref> || style="text-align: left;"| Flavours offer different Desktop Environments, but when it comes to compatibility, they are vitually the same as Ubuntu. Choose if you prefer distinct workflow or art style. Newcomerfs from Windows should definetly pick Ubuntu MATE or Xubuntu.
+
|| '''[https://www.ubuntu.com/download/flavours Ubuntu flavours]''' || Ubuntu || Plasma, LXQt, Budgie, MATE, Xfce || 6 months || same as Ubuntu<ref name=support group="fr note">Support is not official, but the distros are so similar, that everything that works for Ubuntu will work here.</ref> || style="text-align: left;"| Flavours offer different Desktop Environments, but when it comes to compatibility, they are virtually the same as Ubuntu. Choose if you prefer distinct workflow or art style. Newcomers from Windows should definitely pick Ubuntu MATE, Ubuntu Budgie, Xubuntu or Kubuntu.
 
|-
 
|-
||'''[https://linuxmint.com/ Linux Mint]''' || Debian, Ubuntu || '''Cinnamon''', MATE, XFCE || Up to 2 years || same as Ubuntu<ref name=support group="fr note" /> || style="text-align: left;"| The most popular beginner-friendly Linux distribution. LMDE 2 Edition is based on Debian. Be aware that the packages may be much older compared to Ubuntu LTS releases
+
|| '''[https://system76.com/pop Pop! OS]''' || Ubuntu || GNOME || 6 months || same as Ubuntu<ref name=support group="fr note">Support is not official, but the distros are so similar, that everything that works for Ubuntu will work here.</ref> || style="text-align: left;"| A Ubuntu based distro created and maintained by System76 which includes it's own repository. Unlike Ubuntu, it includes much more recent drivers for your graphics card and it's generally more recommended for beginners.
 
|-
 
|-
||'''[https://neon.kde.org KDE Neon]''' || Debian, Ubuntu || KDE Plasma || Up to a year || same as Ubuntu<ref name=support group="fr note" /> || style="text-align: left;"| A distro created by the KDE community, compared to the Kubuntu (A KDE flavoured Ubuntu) it provides the latest version of KDE Plasma, while at the same time being able to use packages from Ubuntu.
+
||'''[https://linuxmint.com/ Linux Mint]''' || Debian, Ubuntu || Cinnamon, MATE, XFCE || Up to 2 years || same as Ubuntu<ref name=support group="fr note" /> || style="text-align: left;"| The most popular beginner-friendly Linux distribution. LMDE 2 Edition is based on Debian. Be aware that the packages may be much older compared to Ubuntu LTS releases, but the main advantage is the built-in kernel upgrader.
 
|-
 
|-
||'''[https://store.steampowered.com/steamos/ SteamOS]''' || Debian (Stable) || GNOME || Varies || Steam || style="text-align: left;"| Linux distribution made by Valve Corporation specifically for Steam Machine or for gaming from couch. It currently provides the latest stable Linux kernel along with newer drivers for GPU. Offers an option to act as a desktop system, it may be behind in terms of packages.
+
||'''[https://neon.kde.org KDE Neon]''' || Debian, Ubuntu || KDE Plasma || Up to a year || same as Ubuntu<ref name=support group="fr note" /> || style="text-align: left;"| A distro created by the KDE community, compared to the Kubuntu (A KDE Plasma flavoured Ubuntu) it provides the latest version of KDE Plasma, while at the same time being able to use packages from Ubuntu.
 +
|-
 +
||'''[https://store.steampowered.com/steamos/ SteamOS]''' || Debian (Oldoldstable)<ref>{{Refurl|url=https://www.debian.org/releases/|title=Debian releases|date=2021-06-26}}</ref> || GNOME || Varies || Steam || style="text-align: left;"| Linux distribution made by Valve Corporation specifically for Steam Machine or for gaming from couch. It currently provides the latest stable Linux kernel along with newer drivers for GPU. Offers an option to act as a desktop system, it may be behind in terms of packages.<br>{{--}} As of June 2021, SteamOS is based on Debian Jessie, meaning that non-Steam packages have not been updated since 2016.
 
|}
 
|}
  
 
<references group="fr note" />
 
<references group="fr note" />
  
===Rolling Release===
+
===Rolling release===
{{++}}Provides the latest version of the package once it’s available
+
{{++}}Provides the latest version of the package once they're available
 
{{++}}No distro upgrade is required, as most distros have only one version.
 
{{++}}No distro upgrade is required, as most distros have only one version.
{{--}}An update for the package may cause stability issues, so it is recommended organize an update by yourself in case a revision gets a release, which fixes stability issues.
+
{{--}}An update for the package may cause stability issues, so it is recommended to organize an update by yourself in case a revision gets a release, which fixes stability issues.
 
{{--}}In some cases, manual intervention is required.
 
{{--}}In some cases, manual intervention is required.
{{--}}No rolling release ditribution has any official support from any store
+
{{--}}No currently listed rolling release distribution has any official support from any store, due to the distros' reliance on <code>.rpm</code> binaries instead of <code>.deb</code>
 
{{ii}}Some distros offer a semi-rolling release, meaning that the package will be tested before the release, it mostly takes less than a month, often a week depending on distro.
 
{{ii}}Some distros offer a semi-rolling release, meaning that the package will be tested before the release, it mostly takes less than a month, often a week depending on distro.
  
Line 75: Line 76:
 
! Distribution !! Based On !! Desktop(s)<ref group="rr note">Default options are marked in bold</ref> !! Description
 
! Distribution !! Based On !! Desktop(s)<ref group="rr note">Default options are marked in bold</ref> !! Description
 
|-
 
|-
||'''[https://manjaro.org/ Manjaro]''' || ArchLinux || '''Plasma''', '''XFCE'''<ref group="rr note">The community manages other versions with their own desktop environment</ref>  || style="text-align: left;"| Provides its own official repository has exclusive tools for installing various Linux kernels and managing your hardware drivers. The packages are semi-rolling meaning that it takes longer for the new version of the application to be released (Up to 2 weeks) until it's absolutely stable enough.
+
||'''[https://manjaro.org/ Manjaro]''' || Arch Linux || '''Plasma''', '''XFCE''', '''GNOME'''<ref group="rr note">The community manages other versions with their own desktop environment</ref>  || style="text-align: left;"| Provides its own official repository has exclusive tools for installing various Linux kernels and managing your hardware drivers. The packages are semi-rolling meaning that it takes longer for the new version of the application to be released (Up to 2 weeks) until it's absolutely stable enough.
 
|-
 
|-
||'''[https://www.antergos.com/ Antergos]''' || ArchLinux || GNOME, Cinnamon, MATE, KDE, OpenBox, XFCE, text mode || style="text-align: left;"| Compared to Manjaro, Antergos combines both its own repo along with official ArchLinux ones, useful for users who wish to get into ArchLinux without fiddling with commands for installation.
+
||'''[https://get.opensuse.org/tumbleweed/ openSUSE Tumbleweed]''' || Independent || '''Plasma''', '''GNOME''', '''XFCE''', LXDE, LXQt, Enlightenment, Cinnamon, MATE, Pantheon<ref group="rr note">Non-default are supported, but not fully tested</ref>|| style="text-align: left;"| Rolling version of openSUSE which uses automated testing to provide more stability than many other rolling releases.  When used with BTRFS on the root partition, snapshots are taken before and after updating, allowing easy restores if there is an update breakage.
 
|-
 
|-
||'''[https://solus-project.com/ Solus]''' || Independent || '''Budgie''', GNOME, MATE || style="text-align: left;"| Despite following the rolling release model it provides stable packages and features great hardware compatibility with any GPU. Includes a special tool called Linux Steam Integration (LSI) which allows you to easily customize Steam ranging from using the libraries from your system (Native mode) or force 32-bit mode. Only stable releases of library and software are added with a very few exceptions (Such as NVIDIA's Vulkan Beta Drivers)
+
||'''[https://getsol.us/ Solus]''' || Independent || '''Budgie''', GNOME, MATE || style="text-align: left;"| Despite following the rolling release model it provides stable packages and features great hardware compatibility with any GPU. Includes a special tool called Linux Steam Integration (LSI) which allows you to easily customize Steam ranging from using the libraries from your system (Native mode) or force 32-bit mode. Only stable releases of library and software are added with a very few exceptions (Such as Nvidia's Vulkan Beta Drivers)
 
|-
 
|-
||'''[https://www.opensuse.org OpenSUSE Tumbleweed]''' || Independent || KDE Plasma 5 || style="text-align: left;"| A separate rolling release version of OpenSUSE, which is more up to date and curated.
+
||'''[https://gamer-os.github.io/ GamerOS]''' || Arch Linux || Unknown || A third-party attempt at making a more up-to-date version of SteamOS.
 
|}
 
|}
 
<references group="rr note" />
 
<references group="rr note" />
  
==Desktop Environments==
+
==Desktop environments==
While Windows and Mac have only a single desktop environment which gets updated in each OS release, the Linux community has created multiple variations 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.
+
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.
 
   
 
   
 
{| class="wikitable sortable" style="nowrap;"
 
{| class="wikitable sortable" style="nowrap;"
Line 93: Line 94:
 
|-
 
|-
 
| [https://www.gnome.org/ GNOME] || 2 GB || Yes, limited || style="text-align: left;"|  
 
| [https://www.gnome.org/ GNOME] || 2 GB || Yes, limited || style="text-align: left;"|  
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. <br>
+
One of the oldest desktop environments which is still continuously updated. The 3rd generation of GNOME has a more tablet focused interface compared to GNOME 2 with a very large set of software combined with community-made ones as well as extensions, thankfully the GNOME Classic is included for those who do not like its theme and its 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.
 
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.
 
|-
 
|-
 
| [https://www.kde.org/plasma-desktop KDE Plasma] || 1 GB || Yes || style="text-align: left;"|  
 
| [https://www.kde.org/plasma-desktop KDE Plasma] || 1 GB || Yes || style="text-align: left;"|  
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.
+
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 its 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. Nvidia users with proprietary driver must use at least 5.12.9 LTS or 5.15.9 which stabilizes the desktop for that matter.
 
|-
 
|-
 
| [https://budgie-desktop.org/home/ Budgie] || 256 MB || Yes || style="text-align: left;"|  
 
| [https://budgie-desktop.org/home/ Budgie] || 256 MB || Yes || style="text-align: left;"|  
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. Later on it will no longer depend on GNOME 3 and instead, be reworked on Qt engine.
+
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.
 
|-
 
|-
 
| [http://developer.linuxmint.com/ Cinnamon] || 256 MB || Yes || style="text-align: left;"|  
 
| [http://developer.linuxmint.com/ Cinnamon] || 256 MB || Yes || style="text-align: left;"|  
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).
+
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 its compositor's integration with Nvidia GPU. Allows you to run in Hardware (Default) and Software mode (No Composition).
 
|-
 
|-
 
| [https://xfce.org/ XFCE] || 128 MB || Yes || style="text-align: left;"|  
 
| [https://xfce.org/ XFCE] || 128 MB || Yes || style="text-align: left;"|  
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.
+
Starting off as a clone of a Unix-like desktop environment named CDE, it became its own DE with a much more Windows XP-like appearance and with its light use of memory is well suited for low end hardware or even for Windows veterans.
 
|-
 
|-
 
| [https://mate-desktop.org MATE] || 128 MB || Yes || style="text-align: left;"|  
 
| [https://mate-desktop.org MATE] || 128 MB || Yes || style="text-align: left;"|  
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.
+
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 its own features such as audio preview by a mouse hover.
 
|-
 
|-
| [http://lxqt.org/ LXQT] || 64 MB || Yes, limited || style="text-align: left;"|  
+
| [https://lxqt-project.org/ LXQT] || 64 MB || Yes, limited || style="text-align: left;"|  
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.
+
Starting off as LXDE and later one in combination with Razor-Qt it became LXQt. The most lightweight desktop environment ever created, despite its limited features and customization along with the lack of compositor it is perfectly suited for the lowest end hardware.
 
|}
 
|}
  
Line 125: Line 126:
 
Both releases offer the same security updates.
 
Both releases offer the same security updates.
  
=== Kernel Replacement ===
+
===Kernel replacement===
  
 
{{ii}} '''This section is meant for advanced users, you can easily break your OS, if you don't know what you are doing!'''
 
{{ii}} '''This section is meant for advanced users, you can easily break your OS, if you don't know what you are doing!'''
  
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.
+
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. '''Be warned that you may have to install the DKMS version of the drivers along with the kernel headers to make your hardware useable with multiple kernels''', this is not required if the kernel already includes it.
  
 
The most notable releases:
 
The most notable releases:
 
 
* [http://www.users.on.net/~ckolivas/kernel/ Linux CK]
 
* [http://www.users.on.net/~ckolivas/kernel/ Linux CK]
 
* [https://github.com/zen-kernel/zen-kernel Linux Zen]
 
* [https://github.com/zen-kernel/zen-kernel Linux Zen]
Line 139: Line 139:
 
{{ii}} For help with installing different kernels on distro of your choice, you should go to kernel version official website or your distros forum and wiki.
 
{{ii}} For help with installing different kernels on distro of your choice, you should go to kernel version official website or your distros forum and wiki.
 
{{ii}} Be sure to keep the current kernel you have in case if things go wrong.
 
{{ii}} Be sure to keep the current kernel you have in case if things go wrong.
{{ii}} [http://www.teejeetech.in/p/ukuu-kernel-upgrade-utility.html UKUU] is an useful utility for swaping kernels, although newer versions have nonfree license.
+
{{ii}} [https://teejeetech.in/ukuu/ UKUU] is an useful utility for swaping kernels, although newer versions have nonfree license.
  
 
===Microcode===
 
===Microcode===
{{mm}}[https://wiki.archlinux.org/index.php/Microcode ArchLinux Wiki Article]
+
{{mm}}[https://wiki.archlinux.org/index.php/Microcode ArchWiki article]
 
It is very important to install the microcode for your CPU as the manufacturer provides security and stability updates.
 
It is very important to install the microcode for your CPU as the manufacturer provides security and stability updates.
  
Line 149: Line 149:
 
==Hardware==
 
==Hardware==
 
===Graphics===
 
===Graphics===
{{ii}} [https://wiki.archlinux.org/index.php/ATI ArchLinux Wiki's ATI] and [https://wiki.archlinux.org/index.php/AMD_Catalyst Catalyst] Article
+
{{ii}} [https://wiki.archlinux.org/index.php/ATI ArchWiki's ATI] and [https://wiki.archlinux.org/index.php/AMD_Catalyst Catalyst] Article
{{ii}} [https://wiki.archlinux.org/index.php/AMDGPU ArchLinux Wiki's AMDGPU/AMDGPU Pro Article]
+
{{ii}} [https://wiki.archlinux.org/index.php/AMDGPU ArchWiki's AMDGPU/AMDGPU Pro Article]
{{ii}} [https://wiki.archlinux.org/index.php/NVIDIA ArchLinux Wiki's NVIDIA] and [https://wiki.archlinux.org/index.php/Nouveau Nouveau] Article
+
{{ii}} [https://wiki.archlinux.org/index.php/NVIDIA ArchWiki's Nvidia] and [https://wiki.archlinux.org/index.php/Nouveau Nouveau] Article
{{ii}} [https://wiki.archlinux.org/index.php/Intel_graphics ArchLinux Wiki's Intel Graphics Article]
+
{{ii}} [https://wiki.archlinux.org/index.php/Intel_graphics ArchWiki's Intel Graphics Article]
  
Here is a following table describing the drivers and informations which Linux supports for each GPU brand.
+
Here is a following table describing the drivers and information which Linux supports for each GPU brand.
  
 
{| class="wikitable"
 
{| class="wikitable"
 
|-
 
|-
! Brand !! Driver Type !! Driver !! Library !! Supported GPU !! Wayland Support
+
! Brand !! Driver type !! Kernel driver !! Library !! Supported GPU !! Vulkan support
 
|-
 
|-
| style="background: red; color: white;" rowspan="4" | '''AMD/ATI''' ||rowspan="2" | Open Source || AMDGPU || rowspan="2"| MESA (GLX and DRI) || GCN 1 to GCN 4 and newer architecture<sup>1</sup> || rowspan="3" | Yes
+
| style="background: red; color: white;" rowspan="4" | '''AMD/ATI''' ||rowspan="2" | Open Source || Radeon || rowspan="2"| Mesa (GLX and DRI) || GCN 2 and older architecture || No
 
|-
 
|-
| ATI || GCN 2 and older architecture
+
|rowspan="2"| AMDGPU || GCN and newer architecture<sup>1</sup> || Yes (RadV, AMDVLK)
 
|-
 
|-
|rowspan="2"| Proprietary || AMDGPU || AMDGPU Pro || GCN 3 to newer architecture
+
|rowspan="2"| Proprietary || AMDGPU Pro || GCN and newer architecture || Yes
 
|-
 
|-
| Catalyst|| Catalyst GL Library || GCN 3 and older architecture || No
+
| Fglrx || Catalyst GL Library || GCN 3 and older architecture ||rowspan="2"| No
 
|-
 
|-
| style="background: #84DE02;" rowspan="7"| '''NVIDIA''' || Open Source || Xorg Nouveau || Mesa (GLX and DRI) || Any NVIDIA GPU ||  Yes
+
| style="background: #84DE02;" rowspan="7"| '''Nvidia''' || Open Source || Nouveau || Mesa (GLX and DRI) || Any Nvidia GPU
 
|-
 
|-
|rowspan="6"| Proprietary || Nvidia || NVIDIA GLX || From Kepler based GPUs to recent || rowspan="2"| Yes<sup>2</sup>
+
|rowspan="6"| Proprietary || Nvidia || Nvidia GLX || From Kepler based GPUs to recent || rowspan="2"| Yes
 
|-
 
|-
 
| Nvidia 390 || Nvidia 390 GLX || From Fermi based GPUs to recent
 
| Nvidia 390 || Nvidia 390 GLX || From Fermi based GPUs to recent
Line 178: Line 178:
 
| Nvidia 304 || Nvidia 304 GLX || From GeForce 6 series to Tesla based GPUs
 
| Nvidia 304 || Nvidia 304 GLX || From GeForce 6 series to Tesla based GPUs
 
|-
 
|-
| Nvidia 173 || Nvidia 173 GLX || GeForce 5 FX series (NV30 to NV360)
+
| Nvidia 173 || Nvidia 173 GLX || GeForce 5 FX series (NV30 to NV36)
 
|-
 
|-
 
| Nvidia 96 || Nvidia 96 GLX || From GeForce 2/3/4 MX/Ti
 
| Nvidia 96 || Nvidia 96 GLX || From GeForce 2/3/4 MX/Ti
 
|-
 
|-
| style="background: #21ABCD; color: white;" rowspan="2" | '''Intel''' ||rowspan="2" | Open Source || Xorg Intel<sup>3</sup> || rowspan="2"| Mesa (GLX and DRI) || rowspan="2" | Any Intel HD Graphics GPU || rowspan="2"| Yes
+
| style="background: #21ABCD; color: white;" rowspan="2" | '''Intel''' ||rowspan="2" | Open Source || Xorg Intel<sup>2</sup> || rowspan="2"| Mesa (GLX and DRI) || rowspan="2" | Any Intel HD Graphics GPU || rowspan="2"| Yes (ANV)
 
|-
 
|-
|Xorg Modesetting
+
|Xorg modesetting
 
|-
 
|-
 
|}
 
|}
 
<sup>1</sup> <small>- GCN 1 and 2 architecture support in AMDGPU is experimental.</small><br />
 
<sup>1</sup> <small>- GCN 1 and 2 architecture support in AMDGPU is experimental.</small><br />
  
<sup>2</sup> <small>- The proprietary one started to support Wayland since 364.12 version, however it uses the EGLStreams API.</small><br />
+
<sup>2</sup> <small>- Do not use it on Intel HD 4000 series and newer GPU.</small><br />
 
 
<sup>3</sup> <small>- Do not use it on Intel HD 4000 series and newer GPU.</small><br />
 
 
 
  
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:
+
AMD/ATI users should use the open source driver as they provide the best performance and support compared to the proprietary ones, while Nvidia users should stick to the proprietary ones. However there are some things to remember:
* '''Never install drivers from the respective GPU brand's website unless you are forced to!'''{{cn|date=Feb 2019|note=why not?}}. Installing them from the distro's repo is enough.
+
* '''Never install drivers from the respective GPU brand's website unless you are forced to''', since some installers would require you to install through text mode, like in case of Nvidia. AMD however have prepared packages that can be ran for distros they support. Otherwise rely on the graphical package manager installation, to ease it up.
* Both AMD and Intel GPUs have a support for GBM API when it comes to Wayland, NVIDIA uses only EGLStreams which limits your Wayland usage to GNOME desktop only (Nouveau being and exception as it uses GBM)
+
* If forced to use Catalyst, Nvidia 173 or Nvidia 96 drivers, you must downgrade Xorg to the version it got the last support.
* If forced to use Catalyst, Nvidia 173 or Nvidia 96 drivers, you must downgrade XOrg to the version it got the last support.
+
* Before using the open source driver '''you must install LLVM and Linux Firmware'''.
* Enable early KMS once you have installed the driver.
+
* As always when using a 64-bit system, install the 32-bit version of the drivers if possible.{{cn}}
* Currently the open source driver for AMDGPU don't have some of the features from AMDGPU Pro (Such as HDMI audio), however the upcoming 4.15 version of Linux kernel will include DC/DAL features present in the former driver. It will be enabled by default for Vega cards and newer. But for the older ones you need to add <code>amdgpu.dc=1</code> into the kernel parameter after the release.<ref>https://www.phoronix.com/scan.php?page=news_item&px=AMDGPU-DC-Cleaning-Pre-4.15></ref>
 
* Before using the open source driver '''you must install LLVM and Linux Firmware''' (In case of Nouveau, it's Firmware as well) '''before installing the driver itself!'''
 
* As always when using the 64 bit system, install the 32 bit version of the drivers if possible.
 
  
 
====List of 3rd-party repositories====
 
====List of 3rd-party repositories====
'''Ubuntu/Linux Mint/Zorin OS/Pop! OS/Linux Lite/KDE Neon'''<br />
+
'''Ubuntu/Linux Mint/Zorin OS/Pop! OS/Linux Lite/KDE Neon'''
  
 
Use <code>sudo add-apt-repository <PPA repository></code> to add one. Make sure to run <code>sudo apt update</code> in order to update the repository list after adding one.
 
Use <code>sudo add-apt-repository <PPA repository></code> to add one. Make sure to run <code>sudo apt update</code> in order to update the repository list after adding one.
Line 210: Line 204:
 
{{Standard table/row|ppa:paulo-miguel-dias/pkppa|[https://launchpad.net/~paulo-miguel-dias/+archive/ubuntu/pkppa/ Padoka Stable Mesa]. For AMD/Intel/Nouveau GPU drivers, also contains Wayland.}}
 
{{Standard table/row|ppa:paulo-miguel-dias/pkppa|[https://launchpad.net/~paulo-miguel-dias/+archive/ubuntu/pkppa/ Padoka Stable Mesa]. For AMD/Intel/Nouveau GPU drivers, also contains Wayland.}}
 
{{Standard table/row|ppa:paulo-miguel-dias/mesa|[https://launchpad.net/~paulo-miguel-dias/+archive/ubuntu/mesa Padoka Unstable Mesa]. Same as the previous, however it is the developer version. Mind the issues you may encounter. }}
 
{{Standard table/row|ppa:paulo-miguel-dias/mesa|[https://launchpad.net/~paulo-miguel-dias/+archive/ubuntu/mesa Padoka Unstable Mesa]. Same as the previous, however it is the developer version. Mind the issues you may encounter. }}
{{Standard table/row|ppa:graphics-drivers/ppa|[https://launchpad.net/~graphics-drivers/+archive/ubuntu/ppa "Graphics  Drivers" Teams' PPA]. Contains the recent proprietary NVIDIA drivers and the Vulkan drivers for that GPU. }}
+
{{Standard table/row|ppa:graphics-drivers/ppa|[https://launchpad.net/~graphics-drivers/+archive/ubuntu/ppa "Graphics  Drivers" Teams' PPA]. Contains the recent proprietary Nvidia drivers and the Vulkan drivers for that GPU. }}
 
{{Standard table/row|ppa:ubuntu-x-swat/updates|[https://launchpad.net/~ubuntu-x-swat/+archive/ubuntu/updates Ubuntu X Team's Stable Mesa]. For AMD/Intel/Nouveau GPU drivers, also contains Wayland.}}
 
{{Standard table/row|ppa:ubuntu-x-swat/updates|[https://launchpad.net/~ubuntu-x-swat/+archive/ubuntu/updates Ubuntu X Team's Stable Mesa]. For AMD/Intel/Nouveau GPU drivers, also contains Wayland.}}
 
}}
 
}}
  
'''OpenSUSE'''<br />
+
'''OpenSUSE'''
  
 
+
As of 10 August 2017, OpenSUSE Tumbleweed has an official Nvidia RPM [https://www.reddit.com/r/openSUSE/comments/6slnlv/tumbleweed_gets_an_official_rpm_from_nvidia/], you can manually add the repository with this command
As of 10 August 2017, OpenSUSE Tumbleweed has an official NVIDIA RPM [https://www.reddit.com/r/openSUSE/comments/6slnlv/tumbleweed_gets_an_official_rpm_from_nvidia/], you can manually add the repository with this command
 
 
<pre>
 
<pre>
 
zypper ar https://download.nvidia.com/opensuse/tumbleweed nvidia-tumbleweed
 
zypper ar https://download.nvidia.com/opensuse/tumbleweed nvidia-tumbleweed
Line 223: Line 216:
 
</pre>
 
</pre>
  
'''Fedora'''<br />
+
====Optimus support====
 
+
{{ii}} [https://www.reddit.com/r/linux_gaming/comments/6ftq10/the_ultimate_guide_to_setting_up_nvidia_optimus/ Nvidia Optimus linux guide]
Because Fedora doesn‘t ship any proprietary NVIDIA drivers, you have to use the ones provided be either RPM Fusion or Negativo17. For RPMFusion's use:
+
{{--}} To this day the Optimus support in Nvidia GPUs is still considered to be troublesome. It is recommended to use fixed release distributions for this case.
 
+
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.
<pre>sudo dnf install https://download1.rpmfusion.org/free/fedora/rpmfusion-free-release-$(rpm -E %fedora).noarch.rpm https://download1.rpmfusion.org/nonfree/fedora/rpmfusion-nonfree-release-$(rpm -E %fedora).noarch.rpm</pre>
 
 
 
For Negativo17's:
 
 
 
<pre>dnf config-manager --add-repo=https://negativo17.org/repos/fedora-nvidia.repo</pre>
 
 
 
====Vulkan support====
 
{{ii}} [https://wiki.archlinux.org/index.php/Vulkan ArchLinux's Wiki Vulkan Article]
 
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:
 
* Vulkan Intel for Intel HD GPUs
 
* Vulkan Radeon for Open source ATI driver
 
  
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 some distros such as ArchLinux, the proprietary driver package is all you need.
+
AMD users have a much easier time with that feature as it only requires running the game with the <code>DRI_PRIME=1</code> command.
 
 
====NVIDIA Optimus====
 
{{ii}} [https://www.reddit.com/r/linux_gaming/comments/6ftq10/the_ultimate_guide_to_setting_up_nvidia_optimus/ NVIDIA Optimus Linux Guide]
 
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.
 
 
 
====Xorg====
 
{{ii}} [https://www.x.org/wiki/ Main Page]
 
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====
 
{{ii}} [https://wayland.freedesktop.org/ Main Page]
 
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.<br />
 
 
 
 
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.<br />
 
 
 
 
 
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. [https://devtalk.nvidia.com/default/topic/925605/linux/nvidia-364-12-release-vulkan-glvnd-drm-kms-and-eglstreams/post/5188874/#5188874]<br />
 
 
 
 
 
Here are the following GUI libraries with Wayland support:
 
* GTK3 - Supported and enabled by default since 3.20, if not, use the <code>GDK_BACKEND=wayland</code> command at the beginning.
 
* Qt5 - Requires the Qt5 Wayland package. After that you can run the Qt 5 application with the <code>-platform wayland</code> command prompt.
 
* SDL2 - Added in 2.0.2 enabled by default since 2.0.4. If not, use <code>SDL_VIDEODRIVER=wayland</code> command before running the application.
 
* GLFW - Install the Wayland version package of GLFW instead of X11, support added in 3.2.
 
* EFL - Enabled by default.
 
* Clutter - Included with clutter package
 
* FreeGLUT - Has initial support.
 
  
 
===Audio===
 
===Audio===
{{ii}}[https://wiki.archlinux.org/index.php/Sound_system ArchLinux Wiki Page]
+
{{ii}}[https://wiki.archlinux.org/index.php/Sound_system ArchWiki page]
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.<br />
+
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 its 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.<br />
 
 
 
  
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 <code>/dev/dsp</code>, 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.<br />
+
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.
 
 
Another way is to use the OSS emulator for the specific audio interface:<br />
 
  
 +
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 <code>/dev/dsp</code>, 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 its 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:
 
* PulseAudio can use the <code>padsp</code> command which can be found with the PulseAudio utility package or in some distros, already included with the main software.
 
* PulseAudio can use the <code>padsp</code> command which can be found with the PulseAudio utility package or in some distros, already included with the main software.
 
* ALSA users should install the alsa-oss package and then use the <code>aoss</code>, if using a 64 bit system you need to use the <code>-32</code> argument if you run a 32-bit application.
 
* ALSA users should install the alsa-oss package and then use the <code>aoss</code>, if using a 64 bit system you need to use the <code>-32</code> argument if you run a 32-bit application.
<br />
 
 
'''Do not run <code>aoss</code> if you are using PulseAudio, all you will get is a static noise mixed with the white ones at high volume!'''<br />
 
  
 +
'''Do not run <code>aoss</code> 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.
 
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.
<br />
 
 
 
You can also use Fluidsynth, however bear in mind that it uses more CPU, doesn't work with PulseAudio but ALSA only and it requires a soundfont to play.
 
 
===Input Devices===
 
{{ii}}[https://wiki.archlinux.org/index.php/Libinput Libinput ArchLinux article]
 
{{ii}}[https://wiki.archlinux.org/index.php/Touchpad_Synaptics Touchpad ArchLinux Article]
 
{{ii}}[https://wiki.archlinux.org/index.php/Keyboard_configuration_in_Xorg Keyboard Configuration in Xorg ArchLinux article]
 
{{ii}}[https://wiki.archlinux.org/index.php/Touchscreen Touchscreen ArchLinux article]
 
  
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 [https://wiki.archlinux.org/index.php/Mouse_buttons 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.<br />
+
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.
  
 +
===Input devices===
 +
{{ii}}[https://wiki.archlinux.org/index.php/Libinput Libinput ArchWiki article]
 +
{{ii}}[https://wiki.archlinux.org/index.php/Touchpad_Synaptics Touchpad ArchWiki article]
 +
{{ii}}[https://wiki.archlinux.org/index.php/Keyboard_configuration_in_Xorg Keyboard Configuration in Xorg ArchWiki article]
 +
{{ii}}[https://wiki.archlinux.org/index.php/Touchscreen Touchscreen ArchWiki article]
  
Wayland users only requires the '''libinput''' package itself, which also supports XOrg.<br />
+
The keyboard and mouse are supported on the go, however if using XOrg you must have its 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 [https://wiki.archlinux.org/index.php/Mouse_buttons 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 [https://github.com/libratbag/piper/ 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:
 
If using a mouse dedicated for gaming, there is a universal configurator called [https://github.com/libratbag/piper/ 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:
Line 315: Line 259:
 
* [https://github.com/lah7/polychromatic Polychromatic] - Yet another configurator for Razer products
 
* [https://github.com/lah7/polychromatic Polychromatic] - Yet another configurator for Razer products
  
===Disk Partitioning===
+
===Controller support===
{{ii}}[https://wiki.archlinux.org/index.php/Partitioning ArchLinux Wiki Guide]
+
All the controllers such as [[Controller:DualShock 4|DualShock 4]], DirectInput gamepads and XInput ones (Such as [[Controller:Xbox_360_Controller|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.
{{ii}}[https://wiki.archlinux.org/index.php/File_systems Partition/File System Types]
+
 
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 <code>/dev/sd*#</code> 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
+
The most interesting thing is the [[Controller:Steam Controller|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.
{| class="wikitable"
+
 
|-
+
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 [http://boilingsteam.com/making-third-party-gamepads-work-with-steam-games].
! Amount of RAM !! Swap Disk Size
+
 
|-
+
If dealing with a game that has a very limited or no controller support at all, the [https://github.com/AntiMicroX/antimicroX AntiMicroX] 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 [http://packages.libregeek.org/ LibreGeek]'s repository, especially Ubuntu or Ubuntu-based distributions which can be added with [https://launchpad.net/%7Emdeguzis/+archive/ubuntu/libregeek 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.
| Less than 2 GB || 2x the amount of RAM
+
 
|-
+
==Other==
| 2 GB - 4 GB || The same amount of RAM or down to 0.5x.
+
===Disk partitioning===
|-
+
By default the most common format used in Linux is '''EXT4''' which manages the files much more efficiently than Windows' NTFS, even so far to decrease loading time in games at the cost of being case sensitive, where for example <code>File1</code> is treated differently than <code>file1</code>. While NTFS is supported, it is generally not recommended to use it for running installed games from it as it may cause compatibility issues depending on the software.
| Higher than 4 GB || 0.5 times of RAM or less.
+
 
|}
+
The most important aspect is the swap partition with its own disk format, they generally act as a RAM replacement, the absence of it will cause any software to shut down due to low memory and it's commonly used when putting the PC under Hibernation or Sleep mode. The size of the swap disk depends on how much RAM you have.
  
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 (<code>/</code>) is 15GB-20GB while the rest of it goes on to <code>/home</code> (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.  
+
If less than 8 GB of RAM, you must increase the swap disk.
 +
If more than 8 GB of RAM, decrease the swap disk size.
  
You can also make a separate <code>/boot</code> 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 <code>/boot</code> partition with '''[https://wiki.archlinux.org/index.php/EFI_System_Partition 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.<br />
+
It is generally recommended to partition your disk in this particular order:
 +
/ (Root)
 +
Home
 +
Swap disk
  
 +
The partition order also affects the performance of your HDD/SSD as the 1st partition has a higher priority than the other ones, you can create multiple partitions for each directory with a specific disk size to use or use the entire free space on Root and leave some for swap.
  
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.<br />
+
===Wayland or Xorg?===
 +
{{++}} Wayland is newer than Xorg and is considered to be technically superior.
 +
{{--}} Wayland is not supported by older proprietary games.
  
Here are the following examples of how the partitioning looks like:<br />
+
While hanging around the Linux community you have most likely heard about the Wayland, which is meant to replace the decades old XOrg display server raising the question if you should consider switching to it or stay.
  
 +
The main advantage of Wayland are:
 +
* Passive compositioning when fetching pixel data from the client, which removes any kind of latency.
 +
* Isolating I/O of every window and provide smaller access to root for running the code, improving the security.
 +
* Acts as both display server and as a compositor. Whereas XOrg only acts as a former but a 3rd party compositor is required.
 +
* Backwards compatibility with softwares that rely on XOrg through XWayland.
  
'''Single 250 GB HDD <code>/dev/sda</code> on a 4 GB of RAM BIOS system'''
+
This all however depends on the driver which your GPU uses as there are two buffer APIs which Wayland makes use of, as well as its implementation for the desktop environment.
 
{| class="wikitable"
 
{| class="wikitable"
 
|-
 
|-
! Partition !! Folder !! Disk Format !! Size !! Bootable
+
! GPU!! Driver !! Buffer API
 
|-
 
|-
| /dev/sda1 || / || Ext4 || 25 GB || Yes (GPT/MBR)
+
| AMD ||rowspan="3"| Open Source ||rowspan="3" | GBM
 
|-
 
|-
| /dev/sda2 || None || Swap || 2 GB || No
+
| Intel
 
|-
 
|-
| /dev/sda3 || /home || Ext4 || 223 GB || No
+
| rowspan="2"| Nvidia
|}
 
<br />
 
 
 
'''128 SSD <code>/dev/sda</code> and 500 GB HDD <code>/dev/sdb</code> on a 8 GB of RAM UEFI system'''
 
{| class="wikitable"
 
|-
 
! Partition !! Folder !! Disk Format !! Size !! Bootable
 
|-
 
| /dev/sda1 || /boot || Ext4 || 2 GB || Yes (EFI)
 
|-
 
| /dev/sda2 || / || BTRFS || 126 GB || No
 
 
|-
 
|-
| /dev/sdb1 || /home || Ext4 || 500 GB || No
+
| Proprietary (From 364.12+)|| EGLStreams
 
|}
 
|}
  
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.<br />
+
Both GNOME 3 and KDE Plasma supports Wayland for all APIs (With Plasma's case, EGLStreams support began with 5.16). Nvidia proprietary driver however are way behind in terms of supporting it as it lacks most of the key extensions such as Vulkan support under it along with low performance on XWayland, forcing you to use Xorg instead.
  
 +
AMD and Intel users however, contains all the required extensions for a full experience.
  
'''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. [https://wiki.archlinux.org/index.php/Dual_boot_with_Windows This guide] will explain in further detail about dual booting with Windows.
+
Certain APIs used for software would require a specific package or an environment variable to run in Wayland mode:
 
+
* GTK3 - Supported and enabled by default since 3.20, if not, use the <code>GDK_BACKEND=wayland</code> command at the beginning.
===Controller Support===
+
* Qt5 - Requires the Qt5 Wayland package. After that you can either set the environment variable <code>QT_QPA_PLATFORM=wayland</code> or run the Qt 5 application with the <code>-platform wayland</code> command-line argument.
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.<br />
+
* SDL2 - Added in 2.0.2 enabled by default since 2.0.4. If not, use <code>SDL_VIDEODRIVER=wayland</code> command before running the application. You can enforce newer SDL2 on games and use the command, although there may be a risk of graphical glitches to appear.
 +
* GLFW - Install the Wayland version package of GLFW instead of X11, support added in 3.2.
 +
* EFL - Enabled by default.
 +
* Clutter - Included with clutter package
 +
* FreeGLUT - Has initial support.
  
 +
'''Warning: these environment variables can break many commercial games!''' Wayland support is still relatively new, and proprietary Linux games often rely on older versions of libraries which do not have support for Wayland.
  
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.<br />
+
'''The best option is to use Wayland by default for your typical workflow, but force older games to run under X.org''':<ref name=waylandlibs>https://wiki.archlinux.org/index.php/Wayland#GUI_libraries</ref>
  
 +
* GTK3 - Set <code>GDK_BACKEND=x11</code>
 +
* Qt5 - Set <code>QT_QPA_PLATFORM=xcb</code>
 +
* SDL2 - Set <code>SDL_VIDEODRIVER=x11</code>
  
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 [http://boilingsteam.com/making-third-party-gamepads-work-with-steam-games].<br />
+
Alternatively, you may try to force the game to use system libraries as opposed to its own runtime (see [[Store:Steam#Use_Native_Steam_runtime_mode]])
 
 
If dealing with a game that has a very limited or no controller support at all, the [https://github.com/Ryochan7/antimicro 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 [http://packages.libregeek.org/ LibreGeek]'s repository, especially Ubuntu or Ubuntu-based distributions which can be added with [https://launchpad.net/%7Emdeguzis/+archive/ubuntu/libregeek 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.
 
  
 
===Benchmarking===
 
===Benchmarking===
{{ii}}[https://wiki.archlinux.org/index.php/Benchmarking ArchLinux Wiki Article]
+
{{ii}}[https://wiki.archlinux.org/index.php/Benchmarking ArchWiki article]
 
{{ii}}[https://manerosss.wordpress.com/2017/07/13/howto-gallium-hud/ Gallium HUD Guide]
 
{{ii}}[https://manerosss.wordpress.com/2017/07/13/howto-gallium-hud/ Gallium HUD Guide]
It is entirely possible to benchmark native Linux games in this system by using the [http://www.phoronix-test-suite.com 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.<br />
+
It is entirely possible to benchmark native Linux games in this system by using the [https://www.phoronix-test-suite.com 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, whether 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.
  
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.<br />
+
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 <code>glxosd</code> before launching a game. The settings can be changed in the ''glxosd_config.lua'' file located in <code>/etc/glxosd/</code>. 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 [https://github.com/ValveSoftware/voglperf voglpref] which only works for Steam. It will display both information 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.
  
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 <code>glxosd</code> before launching a game. The settings can be changed in the ''glxosd_config.lua'' file located in <code>/etc/glxosd/</code>. 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).<br />
+
===PCI passthrough===
 
+
{{ii}}[https://wiki.archlinux.org/index.php/PCI_passthrough_via_OVMF ArchWiki page]
 
 
Steam users can use Valve's [https://github.com/ValveSoftware/voglperf 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.
 
 
 
===PCI Passthrough===
 
{{ii}}[https://wiki.archlinux.org/index.php/PCI_passthrough_via_OVMF ArchLinux Wiki Page]
 
 
{{ii}}[https://www.reddit.com/r/VFIO/ /r/VFIO reddit page]
 
{{ii}}[https://www.reddit.com/r/VFIO/ /r/VFIO reddit page]
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:
+
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, 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:
  
 
* Your CPU must support hardware virtualization and IOMMU
 
* Your CPU must support hardware virtualization and IOMMU
 
* Your motherboard must also support IOMMU
 
* Your motherboard must also support IOMMU
 
* Your GPU must support UEFI
 
* Your GPU must support UEFI
* You need a 2nd hardware for PCI Passthrough
+
* You need a 2nd hardware for PCI passthrough
 
* It takes some time to set up and the whole process may be a little tough for beginners
 
* It takes some time to set up and the whole process may be a little tough for beginners
  
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!
+
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]]==
{{ii}}[https://www.winehq.org/ Main Page]
+
{{ii}}[https://www.winehq.org/ Main page]
 
{{ii}} [https://www.reddit.com/r/wine_gaming/ /r/wine_gaming]
 
{{ii}} [https://www.reddit.com/r/wine_gaming/ /r/wine_gaming]
 
{{mm}}[https://appdb.winehq.org/ Application Database]
 
{{mm}}[https://appdb.winehq.org/ Application Database]
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 7 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:
+
WINE (Wine Is Not an Emulator) is a compatibility layer which allows you to run Windows programs in Unix/Linux environment, its 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:
  
 
* Normal
 
* Normal
 
* Staging - Provides additional features such as CSMT which may or may not improve the performance of the game and contains community-made patches which improves the compatibility.
 
* Staging - Provides additional features such as CSMT which may or may not improve the performance of the game and contains community-made patches which improves the compatibility.
 
* Gallium Nine - Uses Gallium3D State Tracker, which dramatically improves the performance for games using DirectX 9, as it won’t translate Direct3D calls into OpenGL.
 
* Gallium Nine - Uses Gallium3D State Tracker, which dramatically improves the performance for games using DirectX 9, as it won’t translate Direct3D calls into OpenGL.
 +
* Proton - A fork of Wine created by Valve and CodeWeavers which includes special patches and additional addons such as DXVK, FAudio, ESync etc. mainly dedicated for gaming and is integrated with Steam, but it is possible to use without it.
 +
* [https://github.com/Tk-Glitch/PKGBUILDS/tree/master/wine-tkg-git tkg] - Considered to be a "Wine to rule them all!" it contains a large set of patches and features from other community project to provide the best performance and compatibility for games and can be easily customized to your preference, however it was mainly made for Arch Linux (and distros based on it), but it is possible to use it in other distributions. A Protonified version uses Proton as a base instead.
  
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.
+
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:
 
If WINE itself is hard to use there are also front-ends which may improve your experience with it:
Line 425: Line 376:
 
|-
 
|-
 
! Name !! Release !! Notes
 
! Name !! Release !! Notes
 +
|-
 +
| [https://lutris.net/ Lutris] || Free || style="text-align: left;"|
 +
{{++}} Can also act as a client for native games and emulators.
 +
{{++}} Provides community-maintained scripts for installing games on Wine or even Steam through Wine.
 +
{{++}} Can provide different Wine version for specific games.
 +
{{++}} Can install multiple editions of Wine, including the community ones.
 +
{{++}} Can directly use Proton.
 +
{{--}} May be a little hard to install the game on Wine by yourself
 
|-
 
|-
 
| [https://www.playonlinux.com PlayOnLinux] || Free || style="text-align: left;"|
 
| [https://www.playonlinux.com PlayOnLinux] || Free || style="text-align: left;"|
Line 444: Line 403:
 
{{--}} Manual compiling/installing other Wine versions is required for more than one.
 
{{--}} Manual compiling/installing other Wine versions is required for more than one.
 
|-
 
|-
| [https://lutris.net/ Lutris] || Free || style="text-align: left;"|
 
{{++}} Can also act as a client for native games and emulators.
 
{{++}} Provides community-maintained scripts for installing games on Wine or even Steam through Wine.
 
{{++}} Can provide different Wine version for specific games.
 
{{--}} May be a little hard to install the game on Wine by yourself
 
 
|}
 
|}
  
==Stores and Clients==
+
==Stores and clients==
 
   
 
   
 
{| class="wikitable"
 
{| class="wikitable"
Line 458: Line 412:
 
|-
 
|-
 
| [https://store.steampowered.com Steam] || Yes || Yes || style="text-align: left;"|  
 
| [https://store.steampowered.com Steam] || Yes || Yes || style="text-align: left;"|  
* By default, the client includes libraries from Ubuntu 12.04, also known as Runtime version.
+
* By default, the client includes libraries required for native games to run (Runtime mode), but it is possible to make the software use libraries from your system instead (Native mode)
 
+
* Includes Proton by default (may require manual installation from Tools tab) and any Windows game being ran on Proton counts as a Linux sale.
* It's possible to make the client use libraries from your system, known as Native mode.
 
 
|-
 
|-
 
| [https://www.humblebundle.com/ Humble Bundle] || No || Yes || style="text-align: left;"|
 
| [https://www.humblebundle.com/ Humble Bundle] || No || Yes || style="text-align: left;"|
 
* The store does not provide with information about required dependencies for the game.
 
* The store does not provide with information about required dependencies for the game.
 
|-
 
|-
| [https://www.gog.com GOG.com] || In Development || Yes || style="text-align: left;"|
+
| [https://www.gog.com GOG.com] || No || Yes || style="text-align: left;"|
 
* Game's store page shows required dependencies to run.
 
* Game's store page shows required dependencies to run.
 
* Uses MojoSetup as an installer.
 
* Uses MojoSetup as an installer.
Line 474: Line 427:
 
| [https://store.feralinteractive.com/ Feral Store] || No || Yes || style="text-align: left;"|  
 
| [https://store.feralinteractive.com/ Feral Store] || No || Yes || style="text-align: left;"|  
 
* Sells only Mac and Linux ports they have made.
 
* Sells only Mac and Linux ports they have made.
|}
 
 
==Other==
 
===The Bash Shell and Terminal===
 
The [[Wikipedia:Bash (Unix shell)|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 (Recommended).<br />
 
 
 
All user-made settings are always saved in .bashrc file in your Home directory.<br />
 
 
 
The [http://linuxcommand.org/ 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.
 
 
===Folder Structure Reference===
 
{{mm}} [https://www.tecmint.com/linux-directory-structure-and-important-files-paths-explained/ Detailed explanation]
 
<code>/</code> is called the Root folder - This is where all the folders and files are stored. You must not remove any content in it!''' Here are the contents of it.
 
{{Standard table|Folder|Description|content=
 
{{Standard table/row|/boot | Static files of the boot loader}}
 
{{Standard table/row|/home | User Home directories. The current Home directory user is simplified into <code>~/</code> instead of <code>/home/<username>/</code>.}}
 
{{Standard table/row|/lib | Essential shared libraries and kernel modules.}}
 
{{Standard table/row|/sbin | System Binaries/Executables}}
 
{{Standard table/row|/dev | Device Files}}
 
{{Standard table/row|/etc | System Configurations. Will check the Home directory 1st for user-made ones that are generally hidden, if not found, it will check this one instead.}}
 
{{Standard table/row|/media | Mount point for removable media such as CD/DVD, Pendrive etc.}}
 
{{Standard table/row|/bin | Essential user command binaries such as <code>cat</code>, <code>tar</code> etc.}}
 
{{Standard table/row|/mnt | Mount point for temporarily mounted filesystems.Mainly used for mounting the HDD/SDD in order to install the system or perform a maintenance from the LiveCD/LiveUSB.}}
 
{{Standard table/row|/opt| Addon application packages such as Java, OSS etc.}}
 
{{Standard table/row|/proc| Virtual file system for documenting kernel and process status as text files. Distros using SELinux for security use <code>/selinux</code>, which is similar to <code>/proc</code>}}
 
{{Standard table/row|/tmp| Temporary files. Has it's own space size set which can be changed.}}
 
{{Standard table/row|/var | Variable files such as log files, downloaded packages etc.}}
 
{{Standard table/row|/lost+found | Contains files that can be recovered which may be broken during the unexpected shutdown. Only appears when installing Linux.}}
 
{{Standard table/row|/root | Home directory for Root cannot be accessed by User or the Superuser (Sudo/Su).}}
 
{{Standard table/row|/srv | Data for services provided by this system}}
 
}}
 
There is also the <code>/usr</code> aka User folder, which stores files which were installed only by the user and has its own folder structure:
 
{{Standard table|Folder|Description|content=
 
{{Standard table/row|/bin | Applications installed}}
 
{{Standard table/row|/sbin | System Administrations}}
 
{{Standard table/row|/local | User compiled applications. Default installation path when compiling the program.}}
 
{{Standard table/row|/share | Folder for storing architecture-independent files such as graphics, themes etc.}}
 
{{Standard table/row|/lib | Library files installed by the user. Used for compiling.}}
 
{{Standard table/row|/include | .c files are stored that are included for compiling.}}
 
{{Standard table/row|/src | Folder for storing source codes. Mainly for Linux kernel.}}
 
}}
 
 
===Compiling from source code===
 
{{ii}} Every Ubuntu-based Linux distributions label libraries used for compiling a program with <code>-dev</code> at the end in their repositories. Some other distros already include them in one package along with the dependency.
 
The rule of thumb when compiling a program goes in 2 steps
 
<pre>
 
make
 
sudo make install
 
</pre>
 
This happens only when you are in a directory which contains the Makefile and it is done via Terminal when you have required libraries and GNU Compiler Collection (GCC) installed. The <code>make install</code> is varied, as by default the compiled program will move into <code>/usr/local/</code> directory, hence why the <code>sudo</code> command is present. It is possible to change the location where you want to install, but for this simple process you might as well move the compiled binary file which is often located at the same directory as Makefile, sometimes in case of ioquake3 source port it will create a separate folder. However, there are other source codes which were made to be compiled in different ways:<br />
 
 
 
'''Autogen/Automake and/or Configure'''<br />
 
 
 
If either Autogen.sh or Configure script file is present, you must run at least one of them. Autogen's job is to simplify the process of programs that contains large amount of repetitious text and upon running it will create the Configure script which it's job is to scan if you have required libraries, check what kind of system you are using and prepare the files for it while creating Makefile, using the <code>-h</code> or <code>-help</code> argument will reveal available options, most source codes have their own specific option which can be set. Using the <code>--prefix=<location></code> argument lets you change the directory where you want to install with <code>make install</code>. In this case it would go on like this:
 
<pre>
 
./autogen.sh
 
./configure
 
make
 
sudo make install
 
</pre>
 
If autogen.sh is not present, just follow the configuration procedure.<br />
 
 
 
'''CMake'''<br />
 
 
 
CMake is a cross compiling program which allows a much more simple configuration process and reading the compiling progress, while allowing to prepare the required scripts in a separate directory as long as you appoint where the CMakeList.txt is located. There are two commands for preparing and configuring files for compiling if CMake is used:
 
* <code>cmake <directory location of CMakeList.txt></code>
 
* <code>ccmake <directory location of CMakeList.txt></code>
 
 
The only difference is that the ccmake command uses the Text User Interface for easier configuration. The most common way of compiling in this compiler goes like this in a main folder of the source code:
 
<pre>
 
mkdir build
 
cd build
 
cmake ..
 
make
 
</pre>
 
Once the compiling process is done, it will be putted in a separate folder for easier navigation. You do not have to use the <code>make install</code> to install it to your <code>/usr/local</code> directory.<br />
 
 
 
'''QMake'''<br />
 
 
 
This happens only on applications which uses Qt as a main graphical interface, it only requires using <code>qmake</code> on the main folder to configure and check what Qt version you are using and later on set up the Makefile for compiling. After that you can just use <code>make</code> command to compile a program. So basically it goes like this:
 
<pre>
 
qmake
 
make
 
sudo make install # Optional
 
</pre>
 
 
'''List of other <code>make</code> options'''<br />
 
 
 
Here is a list of few other make commands:
 
{| class="wikitable"
 
 
|-
 
|-
! Command !! description
+
| [https://gamejolt.com/ Game Jolt] || Yes (Optional) || Unknown || style="text-align: left;"|
 
|-
 
|-
| <code>make install</code> || Move the compiled files into the directory specified in prefix
+
| [https://flathub.org/apps/category/Game Flathub] || No || No || style="text-align: left;"|
 +
* Offers open-source freeware games. Overlap with the distros' own package repositories is high.
 
|-
 
|-
| <code>make uninstall</code> || Remove the compiled files from the directory specified in prefix
+
| [https://snapcraft.io/search?category=games Snap Store] || No || No || style="text-align: left;"|
 +
* Offers a mix of open-source freeware games and preconfigured Wine games.
 +
* Offers some games for [[List_of_Linux_ARM_games|ARM]], [[List_of_Linux_PowerPC_games|PowerPC]] and <i>System z</i> distro installations.
 
|-
 
|-
| <code>make clean</code> || Remove the files that are normally created by building the program.
+
| [https://www.zoom-platform.com/search/any/any/any/any/any/linux/any/any ZOOM Platform] || No || Unknown ||
|-
+
* Very small game selection (10 games total) as of March 2021.
| <code>make distclean</code> || Remove both files created by building the program and from configure.
 
|-
 
| <code>make check</code> || Perform a compiling test
 
|-
 
| <code>make dist</code> || Create a distribution <code>.tar</code> file.
 
 
|}
 
|}
For more commands and detailed information, check out [https://www.gnu.org/prep/standards/html_node/Standard-Targets.html this page].<br />
 
 
 
'''Getting the source code'''
 
 
There are two types of source codes which you can get. The stable ones are generally packed in a <code>.tar.gz</code> archive file along with the software that is labeled stable as a separate download in case if your distro either does not support the package file or it is in distro's repository, but it is outdated and wish to upgrade.<br />
 
 
 
Then there is the developer ones which can be found in the main master git or SVN page. Those can be downloaded either through the web browser or through the Git/Subversion program. These programs are constantly updated and may be unstable. The best way is to use the Git/Subversion program for this situation as they contain commands which can update the scripts if any changes are made.<br />
 
 
 
The most popular places for downloading both stable and unstable source codes are generally GitHub and SourceForge. The former one will mostly show the '''master''' directory which is where the developer ones are shown with a separate download link while the stable one is downloadable through the release page, the SourceForge will always check what kind of Linux distro or the base of it you are using and link the download to the supported one, if not, it will link to the stable source code. The developer version is always stored in either SVN, CVS or Git page separately.<br />
 
 
 
Newcomers to the Linux should stick to the stable ones, if required, it is best to learn some options in using the <code>git</code> or <code>subversion</code> command when required. Other than that, if there are instructions how to compile and what dependencies are required, always stick to it.
 
  
 
===Notes===
 
===Notes===
 
* There are no best distros, it all depends on your need. You may be switching between it until you find a perfect one, commonly called “distro hopping”.
 
* There are no best distros, it all depends on your need. You may be switching between it until you find a perfect one, commonly called “distro hopping”.
* Always ask the forum or refer to the documentation of the distro in case you have a problem. ArchLinux one can be used regardless the distro you are using.
+
* Always ask the forum or refer to the documentation of the distro in case you have a problem. Arch Linux one can be used regardless the distro you are using.
* In some distros, such as ArchLinux, you may want to check the main page before updating, sometimes a manual intervention is required, but will always provide instructions what to do. Not required for fixed release type distros.
+
* In some distros, such as Arch Linux, you may want to check the main page before updating, sometimes a manual intervention is required, but will always provide instructions what to do. Not required for fixed release type distros.
 
* You don’t have to keep making an update if a new version is released in a rolling release distro, you can always do it later. It’s actually recommended to do it after some time to avoid any stability issue.
 
* You don’t have to keep making an update if a new version is released in a rolling release distro, you can always do it later. It’s actually recommended to do it after some time to avoid any stability issue.
 
* Always use virtual machines such as VirtualBox to learn about the distro you want to use. Some distros have a LiveCD or LiveUSB which allows you to check the distro out before installing or even use it for the maintenance. Make sure to install any utilities related to VirtualBox at the Linux distro you are emulating such as graphics drivers.
 
* Always use virtual machines such as VirtualBox to learn about the distro you want to use. Some distros have a LiveCD or LiveUSB which allows you to check the distro out before installing or even use it for the maintenance. Make sure to install any utilities related to VirtualBox at the Linux distro you are emulating such as graphics drivers.
* Some keys on your keyboard are labeled differently in Linux world. Meta4/Super key are actually Windows key, while "^X" in text mode is actually Ctrl+X.
+
* Some keys on your keyboard are labeled differently on Linux. Meta4/Super key is actually the Windows key, while "^X" in text mode is actually Ctrl+X.
* Almost all of the desktop environments have their own Terminal, you can install a 3rd party ones which generally are more feature rich.
+
* Almost all of the desktop environments have their own Terminal, you can install a 3rd-party one which generally are more feature rich.
 
* If you are confused with using the package manager in Terminal for each distro, [https://wiki.archlinux.org/index.php/Pacman/Rosetta this] page will help you.
 
* If you are confused with using the package manager in Terminal for each distro, [https://wiki.archlinux.org/index.php/Pacman/Rosetta this] page will help you.
 
* Having a second workstation is extremely useful in case if the game hangs out or freezes without any option to minimize it back to the desktop. Mostly happens to the Xorg/X11 server display.
 
* Having a second workstation is extremely useful in case if the game hangs out or freezes without any option to minimize it back to the desktop. Mostly happens to the Xorg/X11 server display.
 
* Files and folders can be hidden by adding "." at the beginning of the name.
 
* Files and folders can be hidden by adding "." at the beginning of the name.
* If using a 64-bit version of the distro. Always make sure to install the 32-bit package counterpart for the compatibility!
+
* If using a 64-bit version of the distro. Always make sure to install the 32-bit package counterpart for the compatibility!{{cn}}
 
* Configuration files for games and applications are stored in your Home directory which are mostly hidden. Either at the <code>~/.config</code>, <code>~/.local/share</code> or the <code>~/.<application/developer name></code> directory.
 
* Configuration files for games and applications are stored in your Home directory which are mostly hidden. Either at the <code>~/.config</code>, <code>~/.local/share</code> or the <code>~/.<application/developer name></code> directory.
* If someone tells you to use this command <code>sudo rm -Rf /</code>, don't do it unless you want to have a bad time.
+
* If someone tells you to use this command <code>sudo rm -Rf /</code>, don't do it unless you want to have a bad time, since it deletes your entire OS installation.
  
 
==Improvements==
 
==Improvements==
 
===Hardware===
 
===Hardware===
'''Enable Threading Optimizations'''
+
'''Disable mitigations for transient execution CPU vulnerabilities'''
{{++}} Improves the performance of the games when enabled, for some even dramatically.
+
{{--}} Be aware that disabling these will cause your PC to be susceptible to multiple vulnerabilities such as Spectre, Meltdown, Zombieland etc. Use it with discretion.  
{{Fixbox|description=NVIDIA Drivers|fix=
+
{{ii}} Outside of specific microbenchmarks, disabling the default mitigations should result into an average performance increase of 5-10%. The following parameter used in here is available only in 5.1.13 kernel or newer <small>(or backports to 3.16.68, 4.4.180, 4.9.176, 4.14.119 and 4.19.43)</small>, for others see [https://make-linux-fast-again.com/ this parameters string].  
# Add {{Code|1=__GL_THREADED_OPTIMIZATIONS=1}} before the command of the game. For example in [[Steam]], define the command launch paramteres as:
 
__GL_THREADED_OPTIMIZATIONS=1 %command%
 
 
 
'''Notes'''
 
*Not needed with nvidia driver 378 ¨Enabled OpenGL threaded optimizations by default in the driver. Refer to the "Threaded Optimizations" section in the "Specifying OpenGL Environment Variable Settings" chapter of the README for details. These optimizations will self-disable when they are degrading performance. As a result, performance should be unchanged for many applications, and increased for those that benefit from threaded optimizations and were not already forcing them enabled.¨
 
}}
 
  
{{Fixbox|description=Mesa Driver (AMD, Nouveau, Intel etc.)|fix=
+
{{Fixbox|description=Edit the GRUB settings|fix=
GPUs which use Mesa as a driver library have the OpenGL Multithreading disabled by default, using the <code>mesa_glthread=true</code> before the launch command in either Terminal or as a Launch Options can enable it for the specific game. On Steam use the <code>mesa_glthread=true %command%</code> in '''Set Launch Options...'''
+
Open up the <code>grub</code> file found in <code>/etc/default/</code> with a text editor as root and in <code>GRUB_CMDLINE_LINUX_DEFAULT=</code> add <code>mitigations=off</code> at the end.
  
'''Notes'''
+
Re-generate the grub.cfg using one of these commands as root:
{{ii}} The Mesa's developer version is frequently updated to automatically enable this feature on launch. Those who rely on stable release need to wait a little while for the main update.
 
}}
 
 
 
'''Disable Nvidia Logo when running X server'''
 
{{Fixbox|description=Edit the XOrg configuration file|fix=
 
Add <code>Option "NoLogo" "true"</code> under the NVidia Corporation '''VendorName''' in it's Xorg configuration file. Example:
 
 
<pre>
 
<pre>
Section "Device"
+
grub-mkconfig -o /boot/grub/grub.cfg
    Identifier "Nvidia Card"
 
    Driver "nvidia"
 
    VendorName "NVIDIA Corporation"
 
    Option "NoLogo" "true"
 
EndSection
 
</pre>
 
}}
 
 
 
'''Enable BFQ Scheduler'''
 
{{Fixbox|description=Create an udev rule|fix=
 
{{++}} Enabling BFQ scheduler provides better interactivity and throughput for your system.
 
'''Linux CK or Linux Zen version 4.11 and less'''
 
# Add <code>elevator=bfq</code> to the [https://wiki.archlinux.org/index.php/Kernel_parameters kernel parameter] of your bootloader.
 
# Reboot to the kernel which supports BFQ scheduling.
 
  
'''Any kernel based on official Linux 4.12 version or higher'''
+
update-grub    # Used by Ubuntu based distros, easy version of the 1st one.
{{ii}} As of 4.12 version of the official Linux kernel, the BFQ feature has been added, but it is not enabled by default.
 
# Go to <code>/etc/udev/rules.d/</code> and type in Terminal <code>sudo nano **-bfq</code>. Replace ** with any number.
 
# Type in this script and save the file:
 
<pre>
 
ACTION=="add|change", KERNEL=="sd[a-z]", ATTR{queue/scheduler}="bfq"
 
 
</pre>
 
</pre>
# Add <code>scsi_mod.use_blk_mq=y dm_mod.use_blk_mq=y</code> to the kernel parameter of your bootloader to enable Multi-Queue Block IO Queuing Mechanism.
 
# Reboot to the kernel which supports scheduling.
 
 
'''Notes'''
 
* Enabling Multi-Queue Block IO Queuing Mechanism without creating a udev rule for enabling BFQ will have a negative impact on your hard disk, solid state disk is not affected!
 
* Using the former method on the kernel based on 4.12 version of the main one will cause the system to get stuck at the bootup screen after choosing the kernel!
 
 
}}
 
}}
  
'''Disable Mouse Acceleration in XOrg'''
+
'''Disable mouse acceleration in Xorg'''
{{Fixbox|description=Create a new Xorg rule|ref=<ref>Reference</ref>|fix=
+
{{ii}} Some desktop environments offer an option to set up the mouse acceleration directly from the settings menu (Such as KDE Plasma, GNOME and later on MATE)
 +
{{Fixbox|description=Create a new Xorg rule|fix=
 
Create a config file in '''/etc/X11/xorg.conf.d/''' as '''<code>any number</code>-<code>custom name</code>.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:
 
Create a config file in '''/etc/X11/xorg.conf.d/''' as '''<code>any number</code>-<code>custom name</code>.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:
 
<pre>
 
<pre>
Line 684: Line 485:
 
EndSection
 
EndSection
 
</pre>
 
</pre>
Then restart the system or Xorg (In most distros it's {{key|Ctrl}}+{{key|Alt}}+{{key|Backspace ←}})
+
Then restart the system or Xorg (In most distros its {{key|Ctrl}}+{{key|Alt}}+{{key|Backspace ←}})
 
}}
 
}}
  
'''Improve Shutdown Time In Systemd'''
+
'''Improve shutdown time in systemd'''
 
{{Fixbox|description=Edit the system.conf|fix=
 
{{Fixbox|description=Edit the system.conf|fix=
 
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.
 
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.
Line 699: Line 500:
 
}}
 
}}
  
'''Resolution Scaling with XRandr'''<br />
+
'''Resolution scaling with xrandr'''
  
It is entirely possible to scale the resolution through multiplications (<code>--scale</code>) or by resolution (<code>--scale-from</code>) with <code>xrandr</code> command. Provided that you input the monitor name and your current resolution, which can be learned by using <code>xrandr -q</code> command (It will also list available resolutions).<br />
+
It is entirely possible to scale the resolution through multiplications (<code>--scale</code>) or by resolution (<code>--scale-from</code>) with <code>xrandr</code> command. Provided that you input the monitor name and your current resolution, which can be learned by using <code>xrandr -q</code> command (It will also list available resolutions).
  
 
Here are some examples:
 
Here are some examples:
Line 708: Line 509:
  
 
===Software===
 
===Software===
 +
'''Use Feral Game Mode to improve the performance'''
 +
{{ii}} Most distros includes the software in their repository, it is recommended to install both 64 and 32 bit versions to apply in every game, if not, the source code can be found in the [https://github.com/FeralInteractive/gamemode GitHub page].
 +
{{++}} Supports custom scripts
 +
{{++}} Developers can use it to implement in their games.
 +
Feral Game Mode is used by Feral Interactive to provide optimization in their games (From Rise Of The Tomb Raider) when being ran, it provides changes to these following processes:
 +
* CPU governor
 +
* Input/Output priority
 +
* Process niceness
 +
* Kernel scheduler
 +
* Screensaver inhibiting
 +
* GPU performance mode (Nvidia and AMD), GPU overclocking (Nvidia)
 +
 +
Once the package is installed, you can activate it when running other games with <code>gamemoderun *game executable/launcher*</code>, on Steam add <code>gamemoderun %command%</code> into Launch Options.
 +
 +
'''Enable 32 bit support for your distro'''
 +
{{Fixbox|description=Enable 32-bit library support in Ubuntu/Debian based distros||fix=
 +
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:
 +
<pre>
 +
sudo dpkg --add-architecture i386
 +
sudo apt update
 +
</pre>
 +
}}
 +
 +
'''List missing dependencies'''
 
{{Fixbox|description=List the missing dependencies|fix=
 
{{Fixbox|description=List the missing dependencies|fix=
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.
+
As GOG, Steam and other stores mostly support Ubuntu due to its 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 Arch Linux, Fedora, etc. Mostly in terms of requiring dependencies to run the game or a software.
  
 
The <code>ldd</code> command can be used to check which dependency does it require and if they are in your system.
 
The <code>ldd</code> command can be used to check which dependency does it require and if they are in your system.
Line 724: Line 549:
 
This will only look for the lines related to "Not found" only, if nothing shows up then you have everything you need.
 
This will only look for the lines related to "Not found" only, if nothing shows up then you have everything you need.
 
}}
 
}}
{{Fixbox|description=Enable 32-bit libraries in 64-bit system|fix=
+
{{Fixbox|description=Improve compiling speed in AUR (Manjaro, Antergos, Arch Linux)|fix=
Depending on distro you may have to enable the 32-bit libraries for compatibility's sake on a 64-bit system.
+
Open makepkg.conf as root and under '''MAKEFLAGS''' add <code>-j#</code>. Where <code>#</code> is the sum of (number of CPU cores you wish to use) + 1</code> (so if you wish to use 4 cores, ya need to put -j5 for example)
 
+
{{ii}}Keep in mind that some programs requires using one core for the stability sake.
Ubuntu/Debian or distributions based on them have to use the <code>sudo dpkg --add-architecture i386</code> command and then update the list with the <code>sudo apt update</code> command. 32 bit packages are labeled as either <code>i686</code> or <code>i386</code> at the end.
 
 
 
ArchLinux and distros based on it have to edit the '''pacman.conf''' file located in '''/etc''' folder and uncomment the '''[multilib]''' section along with the '''Include''' under it and run <code>sudo pacman -Sy</code> to refresh the repository list. 32 bit packages are labeled as <code>lib32</code> at the beginning.
 
 
 
Fedora, OpenSUSE, Solus already have it enabled. It requires the <code>.i686</code> or <code>.i386</code> at the end to install a 32-bit package for 1st two. Solus requires <code>-32bit</code> at the end.
 
}}
 
{{Fixbox|description=Optimize the program to your CPU when compiling|fix=
 
{{++}} Improves the performance of the program after it's compiled.
 
{{--}} May not work on other system but yours.
 
In Makefile remove any -march and -mtune arguments from the <code>CFLAGS</code> and <code>CXXFLAGS</code> and add <code>-march=native</code> at the beginning.
 
 
 
'''Notes'''
 
* On ArchLinux-based distro you can edit the <code>makepkg.conf</code> to use it by default when using AUR.
 
* The default option for <code>-march</code> is <code>generic</code>, in case if there are issues.
 
* Please refer to the [https://wiki.gentoo.org/wiki/GCC_optimization GCC Optimization Guide] and [https://wiki.gentoo.org/wiki/Safe_CFLAGS Safe CFLAGS] from the Gentoo Wiki
 
}}
 
 
 
{{Fixbox|description=Use more cores to improve compilation time|fix=
 
Add <code>-j#+1</code> after the <code>make</code> command. Where # is number of cores. So if you want to use 2 cores of your CPU, use <code>make -j3</code>, in case of 4 cores use<code>make -j5</code> etc.
 
 
 
'''Notes'''
 
* On ArchLinux-based distro you can edit the <code>MAKEFLAGS</code> from <code>makepkg.conf</code>. To apply it as default when using AUR.
 
* Keep in mind that some programs requires using one core for the stability sake. So if you are on ArchLinux and using AUR, don't be surprised it uses only 1 core.
 
* By default it uses one core when compiling.
 
}}
 
 
 
{{Fixbox|description=Running Games on a Separate x Server|fix=
 
Running games on a different X server from ones main desktop can dramatically improve performance and generally reduces the amount of problems within a game especially when using an advanced compositing window manager like Compiz. To launch a separate X server with a game create a new .sh file and paste in the following code:
 
<pre>#! /bin/bash
 
DISPLAY=:1.0
 
xinit $cd '/YOURGAMEPATH' $* -- :1
 
</pre>
 
Save and allow the file to be executable. Running this script in the terminal will make it much easier end the server when you are finished with it.
 
Alternatively you can set the path to a terminal emulator like Xterm <code>/usr/bin/uxterm</code> and launch the game from a terminal in the new server. You could even launch a file browser like nautilus <code>/usr/bin/nautilus</code>
 
Press {{key|Ctrl|Alt|F7}} to return to the main desktop and {{key|Ctrl|Alt|F8}} to go back to the newly created one.
 
 
}}
 
}}
  
 +
'''Create a script which the game uses libraries from your system instead'''
 
{{Fixbox|description=Make a native executable for your game|fix=
 
{{Fixbox|description=Make a native executable for your game|fix=
 
{{ii}} This method may improve the compatibility and sometimes even improve the performance of it on your Linux system. Can be useful in older Linux games that rely on older SDL interface such as [[Majesty]].
 
{{ii}} This method may improve the compatibility and sometimes even improve the performance of it on your Linux system. Can be useful in older Linux games that rely on older SDL interface such as [[Majesty]].
1. Create an empty text file and open it with any text editor.<br />
+
# Create an empty text file and open it with any text editor.
 
+
# Add this following script:
2. Add this following script:
 
 
<pre>
 
<pre>
 
#!/bin/sh
 
#!/bin/sh
 
LD_LIBRARY_PATH=/path/to/library /path/to/executable
 
LD_LIBRARY_PATH=/path/to/library /path/to/executable
 
</pre>
 
</pre>
Replace <code>/path/to/library</code> with one of these paths:
+
3. Replace <code>/path/to/library</code> with one of these paths:
 
* If the game is 64-bit <code>/usr/lib64</code>
 
* If the game is 64-bit <code>/usr/lib64</code>
 
* If the game is 32-bit and you are using a 64-bit system <code>/usr/lib32</code>
 
* If the game is 32-bit and you are using a 64-bit system <code>/usr/lib32</code>
 
* If the game is 32-bit <code>/usr/lib</code>
 
* If the game is 32-bit <code>/usr/lib</code>
3. Once done, save it and make it executable using either <code>chmod</code> command or via Properties with your file manager.
+
4. Once done, save it and make it executable using either <code>chmod</code> command or via Properties with your file manager.
<br />
 
  
 
'''Notes'''
 
'''Notes'''
* You are required to learn which library does the game uses and install them if not available. Each game has it's own library folder which you may learn about it.
+
* You are required to learn which library does the game uses and install them if not available. Each game has its own library folder which you may learn about it.
 
}}
 
}}
  
==Common Fixes==
+
==Common fixes==
 
===Hardware===
 
===Hardware===
{{Fixbox|description=The NVIDIA DKMS driver won't install after updating it|fix=
+
{{Fixbox|description=The Nvidia DKMS driver won't install after updating it|fix=
 
{{ii}} If none of them won't work, you may have to downgrade your kernel and wait for the update that fixes it. Provided that you or someone else reported this issue.
 
{{ii}} If none of them won't work, you may have to downgrade your kernel and wait for the update that fixes it. Provided that you or someone else reported this issue.
 
'''Text Mode'''
 
'''Text Mode'''
Line 795: Line 584:
 
'''LiveCD/LiveUSB'''
 
'''LiveCD/LiveUSB'''
 
# Boot to the LiveCD/LiveUSB
 
# Boot to the LiveCD/LiveUSB
# Mount your partition(s) using <code>mount /dev/sd<disk and partition</code> and Chroot it with <code>chroot <root partition></code> (In ArchLinux system it's <code>arch-chroot</code> instead).
+
# Mount your partition(s) using <code>mount /dev/sd<disk and partition</code> and Chroot it with <code>chroot <root partition></code> (In Arch Linux system it's <code>arch-chroot</code> instead).
 
# Type in <code>dkms install nvidia/<version> --all</code>. Once it's done without any errors, you can restart the system.
 
# Type in <code>dkms install nvidia/<version> --all</code>. Once it's done without any errors, you can restart the system.
 
}}
 
}}
Line 815: Line 604:
 
}}
 
}}
  
===Software===
+
{{Fixbox|description=Crackling sound/audio delay in PulseAudio||fix=
'''All Feral Interactive game ports do not launch'''<ref>{{Refurl|url=https://www.gamingonlinux.com/articles/a-bunch-of-feral-interactive-linux-ports-may-be-broken-on-arch-and-others-heres-a-possible-workaround.10324|title=A bunch of Feral Interactive Linux ports may be broken on Arch and others, here's a possible workaround - GamingOnLinux|date=2017-09-11}}</ref>
+
Type in terminal this command to stop and then start PulseAudio at the same time:
{{ii}} Sometimes caused by the compatibility issue with recent Glibc update. Use this fix until the revision which fixes this issue is available.
 
{{Fixbox|description=Set a library path|fix=
 
Add <code>LD_LIBRARY_PATH="/path/to/steam/games/steamapps/common/gamename/lib/x86_64/" %command%</code> in '''Set Launch Options...'''.
 
 
 
Replace <code>/path/to/steam/games/steamapps/common/gamename</code> with the path where you have installed the game.
 
}}
 
 
 
'''Screen Tearing'''<br />
 
 
 
'''General'''
 
{{Fixbox|description=Install a third party compositor|fix=
 
There are multiple compositors laying around the repository. The most well known ones are '''Compiz''', '''Compton''', '''XCompMgr''' and '''Cairo Compmgr'''.<br />
 
 
 
Compton, XCompMgr and Cairo Compmgr have the ability to co-operate with the window manager of the desktop environment and in some cases even show up as a new option for selecting a window manager. For example in MATE while using MATE Tweak it will show up as ''Marco (GPU Composition)''. Other than that you may have to manually start them up or just add an Autostart option for one of em.<br />
 
 
 
Compiz on the other hand replaces the window manager entirely by default, either with Metacity or Emerald (Recommended), there is an option to use other ones. The biggest advantage of it however is the fact that it has a wide range of customization options ranging from adding animations when minimizing/maximizing/moving windows to 3D window selection when switching between windows using the {{key|Alt}}+{{key|Tab}}. It is recommended to install Fusion Icon along with it.
 
}}
 
'''NVIDIA'''
 
{{Fixbox|description=Enable Force Full Composition Pipeline|fix=
 
Open up the NVIDIA Settings and in '''X Server Display Configuration''' press Advanced button and check in "Force Full Composition Pipeline" and accept the settings.<br />
 
 
 
To make it permament, press '''Save to X Configuration File''', save it anywhere and move it to '''/etc/X11/xorg.conf.d/''' while renaming it to '''20-nvidia.conf''' as root. This can be done with <code>sudo mv <current location of the X configuration file> /etc/X11/xorg.conf.d/20-nvidia.conf</code>.
 
 
 
If using KWin as a desktop composer, add <code>export KWIN_TRIPLE_BUFFER=1</code> in '''/etc/profile.d/kwin.sh''' and then enable Triple Buffering, make sure you are using OpenGL 2.0 or higher as a rendering backend.
 
 
 
{{ii}} You must enable '''Triple Buffering''' and '''Allow Indirect GLX Protocol''' should be disabled.
 
{{ii}} If using a multi-monitor setup, you must set it up for each monitor.
 
{{--}} Does not work on 340.xx and lower version of the driver.
 
}}
 
'''AMD/ATI/Intel'''<br />
 
 
 
Depending on the driver, it'll be set to prevent tearing by default, if not use these following options:
 
 
 
{{Fixbox|description=Enable TearFree (AMDGPU/AMDGPU Pro)|fix=
 
Add <code>Option "TearFree" "true"</code> to the Xorg setting file for AMD GPU under the <code>Driver</code> section. Located in '''/etc/X11/xorg.conf.d/''' folder, if not, create the text file and name it '''20-amdgpu.conf''' and then add:
 
 
<pre>
 
<pre>
Section "Device"
+
pulseaudio -k && pulseaudio --start
    Identifier "<Name of your AMD Graphics Card>"
 
    Driver "amdgpu"
 
    Option "TearFree" "true"
 
EndSection
 
 
</pre>
 
</pre>
 
+
{{ii}}You can bind this command as a keyboard command in your DE.
'''Note''': By default the '''TearFree''' is set to auto, which according to the [http://jlk.fjfi.cvut.cz/arch/manpages/man/amdgpu.4 manual] it is enabled for outputs with rotation or other RandR transforms, and for RandR 1.4 slave outputs, otherwise it is disabled.
 
 
}}
 
}}
  
{{Fixbox|description=Enable VBlank Mode (ATI/Intel)|fix=
+
===Software===
Edit the '''.drirc''' text file located in your Home directory and add <code><option name="vblank_mode" value="0" /></code> under the <code><application name="Default"></code>, if the file does not exist create one and paste this:
+
{{Fixbox|description=Screen tearing|fix=
<pre>
+
{{ii}} You may also use GNOME, Cinnamon and KDE Plasma which use their own compositor that directly communicates with the GPU without any performance loss from Nvidia side.
<driconf>
+
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).
    <device screen="0" driver="dri2">
 
        <application name="Default">
 
            <option name="vblank_mode" value="1" />
 
        </application>
 
    </device>
 
    <!-- Other devices ... -->
 
</driconf>
 
</pre>
 
 
 
If the tearing is still present after that, edit or create '''20-radeon.conf''' file in '''/etc/X11/xorg.conf.d/''' directory and enable '''EXAVSync''' and '''SwapBuffersWait'''. Example:
 
<pre>
 
Section "Device"
 
Identifier  "<Name of your ATI Radeon Graphics Card>"
 
Driver "radeon"
 
Option "EXAVSync" "on"
 
Option "SwapbuffersWait" "true"
 
EndSection
 
</pre>
 
 
 
Intel HD users may experience tearing in videos, to prevent it you have to enable '''TearFree''' option, edit or create '''20-intel.conf''' file in Xorg configuration directory and add:
 
<pre>
 
Section "Device"
 
  Identifier  "Intel Graphics"
 
  Driver      "intel"
 
  Option "AccelMethod" "sna"
 
  Option "TearFree" "true"
 
EndSection
 
</pre>
 
}}
 
 
 
{{Fixbox|description=Enable TearFree (Catalyst)|fix=
 
Type in Terminal <code>amdcccle</code> and go to '''Display Options''' → '''Tear Free'''<br />
 
  
OR<br />
+
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.
  
Type in Terminal <code>aticonfig --set-pcs-u32=DDX,EnableTearFreeDesktop,1</code>
+
If it persists, chances are you may be required to install and use a 3rd party compositor such as Compiz, Compton etc.
 
}}
 
}}
 
{{References}}
 
{{References}}

Revision as of 08:06, 3 August 2021

Linux
Linux cover
Developers
Linus Torvalds
Release dates
Linux September 17, 1991
Linux at Wikipedia

Key points

Wide variety of distributions available, allowing unparalleled user choice and customizability across the board.
The quality of native ports on Linux varies. Some games might perform worse when compared to other operating systems; other might perform better.
Many Windows games can be played by using either Steam Play or Wine.

Resources

ProtonDB - crowdsourced database of Proton (Steam Play) games performance
Phoronix - website dedicated to hardware and benchmarking in Linux
DistroWatch - page dedicated to Linux distributions
OpenBenchmarking - a list of user-made benchmarks in Linux
/r/linuxhardware - subreddit dedicated to Linux hardware
/r/linuxquestions - subreddit dedicated to Linux-related questions
Linux Journey - a beginner-friendly page about learning Linux in general
ArchWiki - wiki intended for Arch but is useful for other distros
ARM - info on Linux ARM distros, devices, and software support

Communities

Gaming On Linux - a large community dedicated for gaming on Linux
/r/linux_gaming - Linux gaming subreddit
/r/linux4noobs - subreddit dedicated for Linux newbies
Linux Game Cast - pod/videocast
Back2Gaming - Gaming related news/guide page. More oriented into Linux

Distributions

There are two types of release models which distros are using, both have their pros and cons.

Fixed release

Offers stable packages
Most distros which use it are beginner friendly
Very little maintenance
Package versions are usually tied to the distro version, so to get the recent packages, you need to update your OS
Stable packages don't contain the newest features. This is especially important in case of GPU drivers
Manual intervention is required in order to add user-made repositories in some distros.
Updating the distro to the next version doesn't require a fresh install and is easy to carry out but might take up to few hours (but usually below an hour)
Many Debian-based distros offer "backports" and/or "testing" modes that provide newer versions of some packages than what the stable version does.
Distribution Based on Desktop(s) [fr note 1] Release cycle Supported by[fr note 2] Description
Ubuntu Debian GNOME 6 months, 2 years for LTS Steam, GoG, many commercial developers The most popular distribution. Ubuntu LTS (Long Term Support) is officially supported by Steam. If you don't know what to choose, pick this one. Ubuntu non-LTS is updated more often and contains newer packages and functions and is also a great option. Note that as of 19.10, Canonical will include some of the 32 bit packages if needed.
Ubuntu flavours Ubuntu Plasma, LXQt, Budgie, MATE, Xfce 6 months same as Ubuntu[fr note 3] Flavours offer different Desktop Environments, but when it comes to compatibility, they are virtually the same as Ubuntu. Choose if you prefer distinct workflow or art style. Newcomers from Windows should definitely pick Ubuntu MATE, Ubuntu Budgie, Xubuntu or Kubuntu.
Pop! OS Ubuntu GNOME 6 months same as Ubuntu[fr note 3] A Ubuntu based distro created and maintained by System76 which includes it's own repository. Unlike Ubuntu, it includes much more recent drivers for your graphics card and it's generally more recommended for beginners.
Linux Mint Debian, Ubuntu Cinnamon, MATE, XFCE Up to 2 years same as Ubuntu[fr note 3] The most popular beginner-friendly Linux distribution. LMDE 2 Edition is based on Debian. Be aware that the packages may be much older compared to Ubuntu LTS releases, but the main advantage is the built-in kernel upgrader.
KDE Neon Debian, Ubuntu KDE Plasma Up to a year same as Ubuntu[fr note 3] A distro created by the KDE community, compared to the Kubuntu (A KDE Plasma flavoured Ubuntu) it provides the latest version of KDE Plasma, while at the same time being able to use packages from Ubuntu.
SteamOS Debian (Oldoldstable)[1] GNOME Varies Steam Linux distribution made by Valve Corporation specifically for Steam Machine or for gaming from couch. It currently provides the latest stable Linux kernel along with newer drivers for GPU. Offers an option to act as a desktop system, it may be behind in terms of packages.
As of June 2021, SteamOS is based on Debian Jessie, meaning that non-Steam packages have not been updated since 2016.
  1. Default options are marked in bold
  2. look at Official Support TODO: add it
  3. 3.0 3.1 3.2 3.3 Support is not official, but the distros are so similar, that everything that works for Ubuntu will work here.

Rolling release

Provides the latest version of the package once they're available
No distro upgrade is required, as most distros have only one version.
An update for the package may cause stability issues, so it is recommended to organize an update by yourself in case a revision gets a release, which fixes stability issues.
In some cases, manual intervention is required.
No currently listed rolling release distribution has any official support from any store, due to the distros' reliance on .rpm binaries instead of .deb
Some distros offer a semi-rolling release, meaning that the package will be tested before the release, it mostly takes less than a month, often a week depending on distro.
Distribution Based On Desktop(s)[rr note 1] Description
Manjaro Arch Linux Plasma, XFCE, GNOME[rr note 2] Provides its own official repository has exclusive tools for installing various Linux kernels and managing your hardware drivers. The packages are semi-rolling meaning that it takes longer for the new version of the application to be released (Up to 2 weeks) until it's absolutely stable enough.
openSUSE Tumbleweed Independent Plasma, GNOME, XFCE, LXDE, LXQt, Enlightenment, Cinnamon, MATE, Pantheon[rr note 3] Rolling version of openSUSE which uses automated testing to provide more stability than many other rolling releases. When used with BTRFS on the root partition, snapshots are taken before and after updating, allowing easy restores if there is an update breakage.
Solus Independent Budgie, GNOME, MATE Despite following the rolling release model it provides stable packages and features great hardware compatibility with any GPU. Includes a special tool called Linux Steam Integration (LSI) which allows you to easily customize Steam ranging from using the libraries from your system (Native mode) or force 32-bit mode. Only stable releases of library and software are added with a very few exceptions (Such as Nvidia's Vulkan Beta Drivers)
GamerOS Arch Linux Unknown A third-party attempt at making a more up-to-date version of SteamOS.
  1. Default options are marked in bold
  2. The community manages other versions with their own desktop environment
  3. Non-default are supported, but not fully tested

Desktop environments

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.

Name Min. RAM Customizable Description
GNOME 2 GB Yes, limited

One of the oldest desktop environments which is still continuously updated. The 3rd generation of GNOME has a more tablet focused interface compared to GNOME 2 with a very large set of software combined with community-made ones as well as extensions, thankfully the GNOME Classic is included for those who do not like its theme and its 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.

KDE Plasma 1 GB Yes

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 its 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. Nvidia users with proprietary driver must use at least 5.12.9 LTS or 5.15.9 which stabilizes the desktop for that matter.

Budgie 256 MB Yes

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.

Cinnamon 256 MB Yes

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 its compositor's integration with Nvidia GPU. Allows you to run in Hardware (Default) and Software mode (No Composition).

XFCE 128 MB Yes

Starting off as a clone of a Unix-like desktop environment named CDE, it became its own DE with a much more Windows XP-like appearance and with its light use of memory is well suited for low end hardware or even for Windows veterans.

MATE 128 MB Yes

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 its own features such as audio preview by a mouse hover.

LXQT 64 MB Yes, limited

Starting off as LXDE and later one in combination with Razor-Qt it became LXQt. The most lightweight desktop environment ever created, despite its limited features and customization along with the lack of compositor it is perfectly suited for the lowest end hardware.

Kernel

Wikipedia page
It is important to update your Linux kernel as new versions provide security updates, bugfixes, better performance and support for hardware. Your distributions repository contains the latest version for your OS.

There are two main releases of the official Linux kernel:

  • the Long Term Support (LTS) is slightly behind in terms of hardware support and features, but offers better stability and has longer support,
  • stable release (sometimes called the current release) offers the best hardware support and the newest features. It's the default choice for a gaming machine and should be avoided only if it causes some issues.

Both releases offer the same security updates.

Kernel replacement

This section is meant for advanced users, you can easily break your OS, if you don't know what you are doing!

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. Be warned that you may have to install the DKMS version of the drivers along with the kernel headers to make your hardware useable with multiple kernels, this is not required if the kernel already includes it.

The most notable releases:

For help with installing different kernels on distro of your choice, you should go to kernel version official website or your distros forum and wiki.
Be sure to keep the current kernel you have in case if things go wrong.
UKUU is an useful utility for swaping kernels, although newer versions have nonfree license.

Microcode

ArchWiki article

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.

Hardware

Graphics

ArchWiki's ATI and Catalyst Article
ArchWiki's AMDGPU/AMDGPU Pro Article
ArchWiki's Nvidia and Nouveau Article
ArchWiki's Intel Graphics Article

Here is a following table describing the drivers and information which Linux supports for each GPU brand.

Brand Driver type Kernel driver Library Supported GPU Vulkan support
AMD/ATI Open Source Radeon Mesa (GLX and DRI) GCN 2 and older architecture No
AMDGPU GCN and newer architecture1 Yes (RadV, AMDVLK)
Proprietary AMDGPU Pro GCN and newer architecture Yes
Fglrx Catalyst GL Library GCN 3 and older architecture No
Nvidia Open Source Nouveau Mesa (GLX and DRI) Any Nvidia GPU
Proprietary Nvidia Nvidia GLX From Kepler based GPUs to recent Yes
Nvidia 390 Nvidia 390 GLX From Fermi based GPUs to recent
Nvidia 340 Nvidia 340 GLX For Tesla based GPUs No
Nvidia 304 Nvidia 304 GLX From GeForce 6 series to Tesla based GPUs
Nvidia 173 Nvidia 173 GLX GeForce 5 FX series (NV30 to NV36)
Nvidia 96 Nvidia 96 GLX From GeForce 2/3/4 MX/Ti
Intel Open Source Xorg Intel2 Mesa (GLX and DRI) Any Intel HD Graphics GPU Yes (ANV)
Xorg modesetting

1 - GCN 1 and 2 architecture support in AMDGPU is experimental.

2 - Do not use it on Intel HD 4000 series and newer GPU.

AMD/ATI users should use the open source driver as they provide the best performance and support compared to the proprietary ones, while Nvidia users should stick to the proprietary ones. However there are some things to remember:

  • Never install drivers from the respective GPU brand's website unless you are forced to, since some installers would require you to install through text mode, like in case of Nvidia. AMD however have prepared packages that can be ran for distros they support. Otherwise rely on the graphical package manager installation, to ease it up.
  • If forced to use Catalyst, Nvidia 173 or Nvidia 96 drivers, you must downgrade Xorg to the version it got the last support.
  • Before using the open source driver you must install LLVM and Linux Firmware.
  • As always when using a 64-bit system, install the 32-bit version of the drivers if possible.[citation needed]

List of 3rd-party repositories

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.

Repository Description
ppa:paulo-miguel-dias/pkppa Padoka Stable Mesa. For AMD/Intel/Nouveau GPU drivers, also contains Wayland.
ppa:paulo-miguel-dias/mesa Padoka Unstable Mesa. Same as the previous, however it is the developer version. Mind the issues you may encounter.
ppa:graphics-drivers/ppa "Graphics Drivers" Teams' PPA. Contains the recent proprietary Nvidia drivers and the Vulkan drivers for that GPU.
ppa:ubuntu-x-swat/updates Ubuntu X Team's Stable Mesa. For AMD/Intel/Nouveau GPU drivers, also contains Wayland.

OpenSUSE

As of 10 August 2017, OpenSUSE Tumbleweed has an official Nvidia RPM [1], you can manually add the repository with this command

zypper ar https://download.nvidia.com/opensuse/tumbleweed nvidia-tumbleweed
zypper inr (For installing)

Optimus support

Nvidia Optimus linux guide
To this day the Optimus support in Nvidia GPUs is still considered to be troublesome. It is recommended to use fixed release distributions for this case.

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.

Audio

ArchWiki page

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 its 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 its 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:

  • PulseAudio can use the padsp command which can be found with the PulseAudio utility package or in some distros, already included with the main software.
  • ALSA users should install the alsa-oss package and then use the aoss, if using a 64 bit system you need to use the -32 argument if you run a 32-bit application.

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.

Input devices

Libinput ArchWiki article
Touchpad ArchWiki article
Keyboard Configuration in Xorg ArchWiki article
Touchscreen ArchWiki article

The keyboard and mouse are supported on the go, however if using XOrg you must have its 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:

Controller support

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 [2].

If dealing with a game that has a very limited or no controller support at all, the AntiMicroX 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.

Other

Disk partitioning

By default the most common format used in Linux is EXT4 which manages the files much more efficiently than Windows' NTFS, even so far to decrease loading time in games at the cost of being case sensitive, where for example File1 is treated differently than file1. While NTFS is supported, it is generally not recommended to use it for running installed games from it as it may cause compatibility issues depending on the software.

The most important aspect is the swap partition with its own disk format, they generally act as a RAM replacement, the absence of it will cause any software to shut down due to low memory and it's commonly used when putting the PC under Hibernation or Sleep mode. The size of the swap disk depends on how much RAM you have.

If less than 8 GB of RAM, you must increase the swap disk. If more than 8 GB of RAM, decrease the swap disk size.

It is generally recommended to partition your disk in this particular order: / (Root) Home Swap disk

The partition order also affects the performance of your HDD/SSD as the 1st partition has a higher priority than the other ones, you can create multiple partitions for each directory with a specific disk size to use or use the entire free space on Root and leave some for swap.

Wayland or Xorg?

Wayland is newer than Xorg and is considered to be technically superior.
Wayland is not supported by older proprietary games.

While hanging around the Linux community you have most likely heard about the Wayland, which is meant to replace the decades old XOrg display server raising the question if you should consider switching to it or stay.

The main advantage of Wayland are:

  • Passive compositioning when fetching pixel data from the client, which removes any kind of latency.
  • Isolating I/O of every window and provide smaller access to root for running the code, improving the security.
  • Acts as both display server and as a compositor. Whereas XOrg only acts as a former but a 3rd party compositor is required.
  • Backwards compatibility with softwares that rely on XOrg through XWayland.

This all however depends on the driver which your GPU uses as there are two buffer APIs which Wayland makes use of, as well as its implementation for the desktop environment.

GPU Driver Buffer API
AMD Open Source GBM
Intel
Nvidia
Proprietary (From 364.12+) EGLStreams

Both GNOME 3 and KDE Plasma supports Wayland for all APIs (With Plasma's case, EGLStreams support began with 5.16). Nvidia proprietary driver however are way behind in terms of supporting it as it lacks most of the key extensions such as Vulkan support under it along with low performance on XWayland, forcing you to use Xorg instead.

AMD and Intel users however, contains all the required extensions for a full experience.

Certain APIs used for software would require a specific package or an environment variable to run in Wayland mode:

  • GTK3 - Supported and enabled by default since 3.20, if not, use the GDK_BACKEND=wayland command at the beginning.
  • Qt5 - Requires the Qt5 Wayland package. After that you can either set the environment variable QT_QPA_PLATFORM=wayland or run the Qt 5 application with the -platform wayland command-line argument.
  • SDL2 - Added in 2.0.2 enabled by default since 2.0.4. If not, use SDL_VIDEODRIVER=wayland command before running the application. You can enforce newer SDL2 on games and use the command, although there may be a risk of graphical glitches to appear.
  • GLFW - Install the Wayland version package of GLFW instead of X11, support added in 3.2.
  • EFL - Enabled by default.
  • Clutter - Included with clutter package
  • FreeGLUT - Has initial support.

Warning: these environment variables can break many commercial games! Wayland support is still relatively new, and proprietary Linux games often rely on older versions of libraries which do not have support for Wayland.

The best option is to use Wayland by default for your typical workflow, but force older games to run under X.org:[2]

  • GTK3 - Set GDK_BACKEND=x11
  • Qt5 - Set QT_QPA_PLATFORM=xcb
  • SDL2 - Set SDL_VIDEODRIVER=x11

Alternatively, you may try to force the game to use system libraries as opposed to its own runtime (see Store:Steam#Use_Native_Steam_runtime_mode)

Benchmarking

ArchWiki article
Gallium HUD Guide

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, whether 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 information 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.

PCI passthrough

ArchWiki page
/r/VFIO reddit page

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, 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:

  • Your CPU must support hardware virtualization and IOMMU
  • Your motherboard must also support IOMMU
  • Your GPU must support UEFI
  • You need a 2nd hardware for PCI passthrough
  • It takes some time to set up and the whole process may be a little tough for beginners

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

Main page
/r/wine_gaming
Application Database

WINE (Wine Is Not an Emulator) is a compatibility layer which allows you to run Windows programs in Unix/Linux environment, its 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:

  • Normal
  • Staging - Provides additional features such as CSMT which may or may not improve the performance of the game and contains community-made patches which improves the compatibility.
  • Gallium Nine - Uses Gallium3D State Tracker, which dramatically improves the performance for games using DirectX 9, as it won’t translate Direct3D calls into OpenGL.
  • Proton - A fork of Wine created by Valve and CodeWeavers which includes special patches and additional addons such as DXVK, FAudio, ESync etc. mainly dedicated for gaming and is integrated with Steam, but it is possible to use without it.
  • tkg - Considered to be a "Wine to rule them all!" it contains a large set of patches and features from other community project to provide the best performance and compatibility for games and can be easily customized to your preference, however it was mainly made for Arch Linux (and distros based on it), but it is possible to use it in other distributions. A Protonified version uses Proton as a base instead.

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:

Name Release Notes
Lutris Free
Can also act as a client for native games and emulators.
Provides community-maintained scripts for installing games on Wine or even Steam through Wine.
Can provide different Wine version for specific games.
Can install multiple editions of Wine, including the community ones.
Can directly use Proton.
May be a little hard to install the game on Wine by yourself
PlayOnLinux Free
Beginner friendly
Includes precompiled scripts for automatic installation
Very slow development
The precompiled installation scripts are outdated, along with third-party libraries.
The precompiled scripts may even damage your system. It is recommended to use the option to install the software on your own.
Crossover Commercial
Superior in terms of compatibility than PlayOnLinux
Provides patches and improvements which are later on added to Wine Staging
Buying the product will also provide support for Wine development
Q4Wine Free
Moderately easy to use
Implemented Winetricks, providing latest version of third-party libraries (Manual update is required)
Implemented AppDB for checking the software compatibility on the go.
Manual compiling/installing other Wine versions is required for more than one.

Stores and clients

Name Client available Registers Linux sales? Notes
Steam Yes Yes
  • By default, the client includes libraries required for native games to run (Runtime mode), but it is possible to make the software use libraries from your system instead (Native mode)
  • Includes Proton by default (may require manual installation from Tools tab) and any Windows game being ran on Proton counts as a Linux sale.
Humble Bundle No Yes
  • The store does not provide with information about required dependencies for the game.
GOG.com No Yes
  • Game's store page shows required dependencies to run.
  • Uses MojoSetup as an installer.
  • Running the start.sh script may cause issues, run the binary executable if that happens instead.
Itch.io Yes (Optional) Yes None
Feral Store No Yes
  • Sells only Mac and Linux ports they have made.
Game Jolt Yes (Optional) Unknown
Flathub No No
  • Offers open-source freeware games. Overlap with the distros' own package repositories is high.
Snap Store No No
  • Offers a mix of open-source freeware games and preconfigured Wine games.
  • Offers some games for ARM, PowerPC and System z distro installations.
ZOOM Platform No Unknown
  • Very small game selection (10 games total) as of March 2021.

Notes

  • There are no best distros, it all depends on your need. You may be switching between it until you find a perfect one, commonly called “distro hopping”.
  • Always ask the forum or refer to the documentation of the distro in case you have a problem. Arch Linux one can be used regardless the distro you are using.
  • In some distros, such as Arch Linux, you may want to check the main page before updating, sometimes a manual intervention is required, but will always provide instructions what to do. Not required for fixed release type distros.
  • You don’t have to keep making an update if a new version is released in a rolling release distro, you can always do it later. It’s actually recommended to do it after some time to avoid any stability issue.
  • Always use virtual machines such as VirtualBox to learn about the distro you want to use. Some distros have a LiveCD or LiveUSB which allows you to check the distro out before installing or even use it for the maintenance. Make sure to install any utilities related to VirtualBox at the Linux distro you are emulating such as graphics drivers.
  • Some keys on your keyboard are labeled differently on Linux. Meta4/Super key is actually the Windows key, while "^X" in text mode is actually Ctrl+X.
  • Almost all of the desktop environments have their own Terminal, you can install a 3rd-party one which generally are more feature rich.
  • If you are confused with using the package manager in Terminal for each distro, this page will help you.
  • Having a second workstation is extremely useful in case if the game hangs out or freezes without any option to minimize it back to the desktop. Mostly happens to the Xorg/X11 server display.
  • Files and folders can be hidden by adding "." at the beginning of the name.
  • If using a 64-bit version of the distro. Always make sure to install the 32-bit package counterpart for the compatibility![citation needed]
  • Configuration files for games and applications are stored in your Home directory which are mostly hidden. Either at the ~/.config, ~/.local/share or the ~/.<application/developer name> directory.
  • If someone tells you to use this command sudo rm -Rf /, don't do it unless you want to have a bad time, since it deletes your entire OS installation.

Improvements

Hardware

Disable mitigations for transient execution CPU vulnerabilities

Be aware that disabling these will cause your PC to be susceptible to multiple vulnerabilities such as Spectre, Meltdown, Zombieland etc. Use it with discretion.
Outside of specific microbenchmarks, disabling the default mitigations should result into an average performance increase of 5-10%. The following parameter used in here is available only in 5.1.13 kernel or newer (or backports to 3.16.68, 4.4.180, 4.9.176, 4.14.119 and 4.19.43), for others see this parameters string.
Edit the GRUB settings

Open up the grub file found in /etc/default/ with a text editor as root and in GRUB_CMDLINE_LINUX_DEFAULT= add mitigations=off at the end.

Re-generate the grub.cfg using one of these commands as root:

grub-mkconfig -o /boot/grub/grub.cfg

update-grub     # Used by Ubuntu based distros, easy version of the 1st one.

Disable mouse acceleration in Xorg

Some desktop environments offer an option to set up the mouse acceleration directly from the settings menu (Such as KDE Plasma, GNOME and later on MATE)
Create a new Xorg rule

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:

Section "InputClass"
	Identifier "My Mouse"
	Driver "libinput"
	MatchIsPointer "yes"
	Option "AccelProfile" "flat"
EndSection

Then restart the system or Xorg (In most distros its Ctrl+Alt+Backspace ←)

Improve shutdown time in systemd

Edit the system.conf

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.

  1. Edit as a root the system.conf file located in /etc/systemd/
  2. Find DefaultTimeoutStartSec and DefaultTimeoutStopSec, uncomment them if necessary and set the time limit in seconds.
  3. Type sudo systemctl daemon-reload

OR

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 - this will downscale the resolution by 0.5 while using 1024x768 resolution in VGA1 monitor.
  • xrandr --output VGA3 --mode 1920x1080 --scale-from 1440x900 - This command will imitate the 1440x900 resolution under 1080p in your VGA3 monitor.

Software

Use Feral Game Mode to improve the performance

Most distros includes the software in their repository, it is recommended to install both 64 and 32 bit versions to apply in every game, if not, the source code can be found in the GitHub page.
Supports custom scripts
Developers can use it to implement in their games.

Feral Game Mode is used by Feral Interactive to provide optimization in their games (From Rise Of The Tomb Raider) when being ran, it provides changes to these following processes:

  • CPU governor
  • Input/Output priority
  • Process niceness
  • Kernel scheduler
  • Screensaver inhibiting
  • GPU performance mode (Nvidia and AMD), GPU overclocking (Nvidia)

Once the package is installed, you can activate it when running other games with gamemoderun *game executable/launcher*, on Steam add gamemoderun %command% into Launch Options.

Enable 32 bit support for your distro

Enable 32-bit library support in Ubuntu/Debian based distros

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

List missing dependencies

List the missing dependencies

As GOG, Steam and other stores mostly support Ubuntu due to its 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 Arch Linux, 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.

Improve compiling speed in AUR (Manjaro, Antergos, Arch Linux)

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)

Keep in mind that some programs requires using one core for the stability sake.

Create a script which the game uses libraries from your system instead

Make a native executable for your game
This method may improve the compatibility and sometimes even improve the performance of it on your Linux system. Can be useful in older Linux games that rely on older SDL interface such as Majesty.
  1. Create an empty text file and open it with any text editor.
  2. Add this following script:
#!/bin/sh
LD_LIBRARY_PATH=/path/to/library /path/to/executable

3. Replace /path/to/library with one of these paths:

  • If the game is 64-bit /usr/lib64
  • If the game is 32-bit and you are using a 64-bit system /usr/lib32
  • If the game is 32-bit /usr/lib

4. Once done, save it and make it executable using either chmod command or via Properties with your file manager.

Notes

  • You are required to learn which library does the game uses and install them if not available. Each game has its own library folder which you may learn about it.

Common fixes

Hardware

The Nvidia DKMS driver won't install after updating it
If none of them won't work, you may have to downgrade your kernel and wait for the update that fixes it. Provided that you or someone else reported this issue.

Text Mode

  1. Boot up to your kernel
  2. Enter the text mode by pressing Ctrl+Alt+F2-F10 and if necessary, stop the display manager.
  3. Type in as root, dkms install nvidia/<version> --all. If everything is done successfully type reboot.

LiveCD/LiveUSB

  1. Boot to the LiveCD/LiveUSB
  2. Mount your partition(s) using mount /dev/sd<disk and partition and Chroot it with chroot <root partition> (In Arch Linux system it's arch-chroot instead).
  3. Type in dkms install nvidia/<version> --all. Once it's done without any errors, you can restart the system.
Set up a primary monitor in multi-monitor setup[citation needed]
  1. Install xrandr using your linux distribution's package manager.
  2. Run xrandr from a terminal emulator and find the name of the monitor you want to set as the primary (i.e. "HDMI-0").
  3. Run xrandr --output <name> --primary.

Notes

To automate this when the system starts, prepend the command to your ~/.xinitrc-file, or your desktop environment's equivalent.
No sound[citation needed]

Open the Terminal and type as root gpasswd -a <username> audio, if that did not work then:

  1. Open the group file as root in a text editor located in /etc folder.
  2. Find the following line
    audio:x:29:pulse
  3. Add a comma and your username ex:
    audio:x:29:pulse,tux
Crackling sound/audio delay in PulseAudio

Type in terminal this command to stop and then start PulseAudio at the same time:

pulseaudio -k && pulseaudio --start
You can bind this command as a keyboard command in your DE.

Software

Screen tearing
You may also use GNOME, Cinnamon and KDE Plasma which use their own compositor that directly communicates with the GPU without any performance loss from Nvidia side.

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.

References