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
 
(194 intermediate revisions by 42 users not shown)
Line 5: Line 5:
 
|release dates =
 
|release dates =
 
{{Infobox game/row/date|Linux|September 17, 1991}}
 
{{Infobox game/row/date|Linux|September 17, 1991}}
|winehq      =  
+
|winehq      =
 
|wikipedia    = Linux
 
|wikipedia    = Linux
 
}}
 
}}
 +
{{Tocbox}}
 +
 +
'''''{{W|Linux}}''''' is the open-source Unix-like operating system based around the kernel of the same name created by Linus Torvalds and released on September 17, 1991. As the kernel itself lacks many user-level tools, it is often paired with {{W|Free and open-source software|free and open-source software}} (FOSS) provided by the ''{{W|GNU Project}}'' as well as other popular user-level applications, and packaged as a "distribution" ("distro" for short). As a result of its reliance on tools provided by the ''GNU Project'', the operating system consisting of the kernel and bundled user-level tools is sometimes {{W|GNU/Linux naming controversy|controversially}} referred to as '''GNU/Linux''' as well. The operating system sees ongoing development and due to its free and open-source nature is often used as the base on which other services or platforms are built on, such as [[Stadia]] and [[Steam Deck]].
 +
 +
Users wanting to find a distribution of Linux usually end up following a few general guidelines:
 +
* The strength and weakness of Linux is its freedom of user choice.
 +
* There are no best distros; it all depends on the user's need. Users commonly switch between distros ("distro hopping") until settling on one.
 +
* Always refer to the documentation of the chosen distro in case there is a problem. It's advisable to check the [https://wiki.archlinux.org/ ArchWiki] regardless of the distro as it is broadly and succinctly written. In addition, reaching out to the distro's community for support is always an option.
 +
* Use [[Virtualization#Hardware virtualization|virtual machines]] to test Linux distributions without replacing the existing operating system on the physical machine.
 +
** To test a distribution installed on a virtual machine on the physical machine itself without replacing the existing operating system or dual booting, a tool called [https://www.ventoy.net/ Ventoy] can be used to create a [https://www.ventoy.net/en/plugin_vtoyboot.html bootable vDisk] on a USB flash stick.
  
 
'''Key points'''
 
'''Key points'''
{{++}} Native Linux version of [[Steam]] has been released.
+
{{++}} Wide variety of distributions (distros) available, allowing unparalleled user choice and customizability.
{{++}} The number of natively supported Linux games has dramatically increased with the introduction of the [https://www.humblebundle.com Humble Bundle].
+
{{ii}} Some native Linux games may perform better or worse when compared to other operating systems.
{{ii}} Windows-only games can be run using [[#Wine|Wine]], but depending on the game it may be significantly more challenging than on [[Windows]].
+
{{ii}} Many [[:Category:Windows|Windows]] games can be played on Linux using [https://github.com/ValveSoftware/Proton Proton] or [[Wine]].
  
 
'''Resources'''
 
'''Resources'''
{{ii}} [https://www.phoronix.com/ Phoronix] - Website dedicated to hardware and benchmarking in Linux
+
{{ii}} [https://distrowatch.com/ DistroWatch] - a page dedicated to Linux distributions
{{ii}} [https://www.lgdb.org/ Linux game database] - resource of games and tools.
+
{{ii}} [https://linuxjourney.com/ Linux Journey] - a beginner-friendly page about learning Linux in general
{{ii}} [https://distrowatch.com/ DistroWatch] - page dedicated to Linux distributions
+
{{ii}} [https://www.protondb.com/ ProtonDB] - a crowdsourced database of Proton games compatibility
{{ii}} [https://openbenchmarking.org/ OpenBenchmarking] - a list of user-made benchmarks in Linux
+
{{ii}} [https://www.phoronix.com/ Phoronix] - a website dedicated to hardware and benchmarking in Linux
{{ii}} [https://www.reddit.com/r/linuxhardware/ /r/linuxhardware] - Subreddit dedicated for Linux Hardware
+
{{ii}} [https://openbenchmarking.org/ OpenBenchmarking] and [https://flightlessmango.com/ FlightlessMango] - lists of user-made benchmarks in Linux
{{ii}} [https://www.reddit.com/r/linuxquestions/ /r/linuxquestions] - Subreddit dedicated for Linux-related questions
+
{{ii}} [https://wiki.archlinux.org/ ArchWiki] and [https://wiki.gentoo.org/wiki/Main_Page Gentoo Wiki] - wikis intended for their respective distro but is useful for others as well
  
 
'''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 to 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}} [http://linuxgamecast.com/ Linux Game Cast] - pod/videocast.
 
  
==Release Models and their distributions==
+
==Distributions==
There are two types of release models which linux distros are using, each one of em have their advantages and disadvantages.
+
There are two types of release models for Linux distros.
  
===Fixed Release===
+
===Fixed release===
{{++}}Offers stable packages
+
{{++}}Offers stable packages.
{{++}}Most distros which use it are beginner friendly
+
{{++}}Most distros are beginner-friendly.
{{--}}Package versions are usually tied to the distro version, meaning that upgrading your system is a must if you want to get the recent versions which are considered stable
+
{{++}}Very little maintenance.
{{--}}The release of new version of the distro, depending on the developer, may take from 6 months up to 2 or more years
+
{{--}}Package versions are usually tied to the distro version, so the OS needs to be updated to get the latest packages.
{{--}}Manual intervention is required in order to add user-made repositories in some distros.
+
{{--}}Stable packages typically don't have the newest features. This is especially important in the case of [[Glossary:Graphics card|GPU]] drivers.<br> This issue is alleviated by the fact that the vast majority of user-facing applications are now available as a [[w:Flatpak|Flatpak]], [[w:Snap (software)|Snap]] or and [[w:AppImage|AppImage]] which allow you to run the latest version of the application regardless of what exact version of underlying OS you have.
{{ii}} Updating the distro to the next version doesn't require a fresh install, often it all takes a simple command to perform it.
+
{{--}}Manual intervention is required to add user-made repositories in some distros.
 +
{{ii}} Updating a distro to the latest version doesn't normally require a fresh install, but can take up to several hours.
 +
{{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 !! Package Manager !! Desktop(s)<sup>1</sup> !! Year(s) for the next version !! 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/ Ubuntu]''' and its [https://www.ubuntu.com/download/ubuntu-flavours flavours] || Debian || [[Wikipedia: APT_(Debian)|DEB (Apt)]] || Unity in case of flavours it varies || Every 6 months || style="text-align: left;"| The most well known and popular distribution created by Cannonical. It is supported by Steam and other stores. Starting from 17.10, it will use [[Linux#GNOME|GNOME]] desktop instead.
 
 
|-
 
|-
| '''[https://linuxmint.com/ Linux Mint]''' || Debian, Ubuntu || [[Wikipedia: APT_(Debian)|DEB (Apt)]] || MATE, XFCE, Cinnamon, KDE Plasma 5 || Up to 2 years || style="text-align: left;"| The most popular and most beginner friendly Linux distribution ever made. Due to the Ubuntu being used as a base, it is pretty much supported by most stores. LMDE 2 Edition is based on Debian itself rather than Ubuntu.
+
||'''[https://www.ubuntu.com/download/desktop Ubuntu] and [https://www.ubuntu.com/download/flavours Ubuntu flavours]''' || Debian || GNOME, KDE Plasma, LXQt, Budgie, MATE, Xfce, UKUI || 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. Ubuntu non-LTS is updated more often and contains newer packages and functionality. Ubuntu flavours offer different [[Linux#Desktop environments|desktop environments]] with the same compatibility as Ubuntu.
 
|-
 
|-
| '''[https://getfedora.org/ Fedora]''' || Independent || [[Wikipedia:DNF_(software)|RPM (Dnf)]] || '''GNOME''', KDE Plasma 5, LXDE/LXQt, MATE (With Compiz as composer), XFCE, Cinnamon, Soas || Every year || style="text-align: left;"| An independent distro created by the community  supported Fedora Project and owned by Red Hat. Compared to the likes of Debian and Ubuntu, it provides latest but stable packages. Despite not being supported by various stores, the forum is very friendly for beginners. To get Fedora in other desktop environments, please refer to [https://spins.fedoraproject.org/ this] link.
+
|| '''[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 similar enough that everything which works for Ubuntu will work in Pop!_OS.</ref> || style="text-align: left;"| An Ubuntu-based distro created and maintained by System76 which utilizes its own repository. Unlike Ubuntu, it includes much more recent drivers for graphics cards, the installer ships with Nvidia support, and it's generally more recommended for beginners.
 
|-
 
|-
| '''[https://www.debian.org/ Debian]''' || Independent || [[Wikipedia: APT_(Debian)|DEB (Apt)]] || Almost all of them besides Unity || 2+ years || style="text-align: left;"| A distribution with a very large database of packages. By default it uses the Stable version which offers applications and libraries that are of course very stable, but very outdated. Can be changed into Testing which offers somewhat latest but a little less stable packages or into Unstable, which allows you to use bleeding edge packages, however as the name suggests, it may be unstable. The distro also supports older architectures. '''Note:If you consider using Debian as your Linux gaming system, consider using the Testing or Unstable branch. The Stable one contains very outdated libraries and should be reserved for servers only. AMD users must use Unstable in order to use Mesa 17 or higher and recent stable kernel from 4.12 which both of em gave the GPU a dramatic performance boost compared to previous versions.'''
+
||'''[https://linuxmint.com/ Linux Mint]''' || Ubuntu LTS || 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. Packages may be much older compared to Ubuntu LTS releases. The main advantage of Linux Mint is the built-in kernel upgrader.
 
|-
 
|-
| '''[https://www.opensuse.org/ openSUSE]''' || Independent || [[Wikipedia:ZYpp|RPM (Zypper)]] || '''KDE Plasma 5''', GNOME, Cinnamon, LXDE, XFCE || Up to a year || style="text-align: left;"| Project created by the community and sponsored by SUSE Linux and other companies which promotes using Linux on almost anything. It provides exclusive tools which allows you to set up your Linux environment much easier (Yast), provide packages for other Linux distributions (OBS), automated testing for "any" operating system (OpenQA) and even create your own Linux image (Kiwi). It also provides the best installation setup ever made. Not supported by stores, but the community is willing to help any newcomers.
+
||'''[https://neon.kde.org KDE Neon]''' || Ubuntu LTS || '''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 Kubuntu (A KDE Plasma-flavoured Ubuntu), it provides the latest version of the KDE Plasma desktop environment, while simultaneously being able to use packages from Ubuntu LTS.
 
|-
 
|-
| '''[https://neon.kde.org KDE Neon]''' || Debian, Ubuntu || [[Wikipedia: APT_(Debian)|DEB (Apt)]] || KDE Plasma || Up to a year || 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://getfedora.org/ Fedora] and [https://spins.fedoraproject.org/ Fedora Spins]''' || Independent || GNOME, KDE Plasma, XFCE, MATE, Cinnamon, LXDE, LXQT, SUGAR ||6 months|||| style="text-align: left;"| Fedora is a very stable, independent distribution sponsored by Red Hat Enterprise. GNOME is its default desktop environment, but Fedora Spins offer many alternatives. It is as user-friendly as Ubuntu but tends to be more willing to move to new technologies. Spins offer different desktop environments, but when it comes to compatibility, they are the same as Fedora.
 
|-
 
|-
| '''[http://store.steampowered.com/steamos/ SteamOS]''' || Debian (Stable) || [[Wikipedia: APT_(Debian)|DEB (Apt)]] || GNOME || Varies || 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. Not recommended for the desktop use.
+
|| '''[https://get.opensuse.org/leap/ openSUSE Leap]''' || Independent || GNOME, KDE Plasma, XFCE || 1 year for each new release || || style="text-align: left;"| Leap uses source from SUSE Linux Enterprise (SLE), which gives it a great level of stability. openSUSE has YaST, which is a user-friendly GUI to install packages, manage the system, and install [[Nvidia]] proprietary drivers in a simple way.
 
|-
 
|-
| '''[https://zorinos.com ZorinOS]''' || Debian, Ubuntu || [[Wikipedia: APT_(Debian)|DEB (Apt)]] || GNOME, LXDE || Up to a year || style="text-align: left;"| An extremely beginner friendly distro for users who wish to use Linux system who are used too much to the Windows. It provides exclusive features which allows you to set up the appearance ranging to Windows XP, Windows 7 or the Default GNOME while providing it's own futuristic theme. As the system uses Ubuntu database and it's based on it, it is pretty much supported by digital stores such as Steam, GOG etc.
+
||'''[https://store.steampowered.com/steamos/ SteamOS]''' || Arch Linux(starting with version 3.0) Debian(old versions)<ref>{{Refurl|url=https://www.debian.org/releases/|title=Debian releases|date=2021-06-26}}</ref> || '''KDE Plasma''' || Varies || Steam || style="text-align: left;"| Linux distribution made by [[Company:Valve Corporation|Valve Corporation]] specifically for the Steam Machine or couch gaming. It currently provides the latest stable Linux kernel along with newer GPU drivers and an option to act as a desktop system. It may be behind in terms of package updates.<br>{{--}} As of June 2021, SteamOS is based on Debian Jessie, meaning that non-Steam packages have not been updated since 2016.
|-
 
| '''[https://www.linuxliteos.com Linux Lite]''' || Debian, Ubuntu || [[Wikipedia: APT_(Debian)|DEB (Apt)]] || XFCE || A year or more || style="text-align: left;"| A distro aimed for Windows users and low end PCs to assist users with everyday computing needs. It always uses XFCE as a default desktop environment.
 
 
|}
 
|}
<sup>1</sup> <small>- Bold ones are default</small>
 
  
===Rolling Release===
+
<references group="fr note" />
{{++}}Provides the latest version of the package once it’s available
+
 
{{++}}No distro upgrade is required, as most distros have only one version.
+
===Rolling release===
{{++}}Distros following the fixed release have an option to enable this type of release. Mostly under the name of Testing or Unstable
+
{{++}}Provides the latest version of packages as soon as they're released by the upstream developers.
{{--}}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.
+
{{++}}No distro upgrade procedure is required, as most distros have only one version.
{{--}}In some cases, manual intervention is required.
+
{{--}}A package update may cause stability issues, as extensive testing is usually limited.
{{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.
+
{{--}}No currently-listed rolling release distribution has official support from any digital distribution 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 packages will be tested before releases.
  
 
{| class="wikitable sortable"
 
{| class="wikitable sortable"
 
|-
 
|-
! Distribution !! Based On !! Package Manager !! Desktop(s)<sup>1</sup> !! Description
+
! Distribution !! Based On !! Desktop(s)<ref group="rr note">Default options are marked in bold</ref> !! Description
|-
 
| '''[http://www.archlinux.org/ ArchLinux]''' || Independent || [[Wikipedia:Arch_Linux#pacman|Pacman]], [[Wikipedia:Arch_Linux#Arch_User_Repository_.28AUR.29|AUR]] || '''Text Mode''', but later on you can install any desktop environment || style="text-align: left;"| Simple and very lightweight distro. The Pacman ('''Pac'''kage '''Man'''ager) is a powerful package manager which is much more simple to use thanks to the simplified command arguments which, while the AUR (Arch User Repository) allows the user to install community-made packages without requiring to manually add additional repositories. It's documentary wiki is extremely useful for getting around the system and explain how things work, it can be used as a base for other Linux distributions. Each package from the official repository are tested and released when it is considered stable.
 
|-
 
| '''[https://manjaro.org/ Manjaro]''' || ArchLinux || [[Wikipedia:Arch_Linux#pacman|Pacman]], [[Wikipedia:Arch_Linux#Arch_User_Repository_.28AUR.29|AUR]] || '''KDE Plasma 5''' and '''XFCE'''. The community manages other versions with their own desktop environment  || style="text-align: left;"| Also known as "Ubuntu for Arch", it provides it's own official repository compared to the distro it's been based on and 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 || [[Wikipedia:Arch_Linux#pacman|Pacman]], [[Wikipedia:Arch_Linux#Arch_User_Repository_.28AUR.29|AUR]] || You can choose GNOME, Cinnamon, MATE, KDE, OpenBox, XFCE or text mode || style="text-align: left;"| Formerly named CinnArch. Compared to Manjaro, Antergos combines both it's own repo along with official ArchLinux ones. Be aware that the setup installer is still in beta and may have some issues.
 
|-
 
| '''[https://solus-project.com/ Solus]''' || Independent || EOPKG || '''Budgie''', GNOME, MATE || style="text-align: left;"| Created and managed by one of the staff members from the Intel in 2016, despite following the rolling release model it provides stable packages and features great hardware compatibility with any GPU. Due to the fact it is a new distro, the number of packages that are available are somewhat small, but still growing.
 
 
|-
 
|-
| '''[https://www.opensuse.org OpenSUSE Tumbleweed]''' || Independent || [[Wikipedia:ZYpp|RPM (Zypper)]] || '''KDE Plasma 5''' || style="text-align: left;"| A separate rolling release version of OpenSUSE, despite having the same exclusive features, it provides packages that are bleeding edge, updated enough where the ArchLinux won't keep up with it.
+
||'''[https://archlinux.org/ Arch Linux]''' || Independent || GNOME, KDE Plasma, XFCE, MATE, Cinnamon, LXDE, LXQT, SUGAR, Deepin, Budgie, UKUI || style="text-align: left;"| Arch Linux is a distribution designed for advanced users looking to customize every aspect of their system, building from the ground up rather than the top down. There is a huge number of packages available through the [[w:Arch_Linux#Arch_User_Repository_.28AUR.29|AUR (Arch User Repository)]]. Arch Linux does not have a graphical installer and requires research on the user's part to properly install.<br>{{ii}}If you're new to Linux, '''Arch most definitely should not be your first choice'''.
 
|-
 
|-
| '''[https://www.gentoo.org/ Gentoo]''' || Independent || [[Wikipedia:Portage (software)|Portage]] || '''Text mode''', later on you can install any DE || style="text-align: left;"| A distro aimed only for experts. Unlike other Linux distros, Gentoo's Portage compiles the application from it's source code instead, which can offer the most bleeding edge version of the software, but very unstable. Distros based on it do exist and slightly lowers the difficulty in using it. It's wiki can be used to explain in a simple detail every compilation option you can use on other distributions.
+
||'''[https://manjaro.org/ Manjaro]''' || Arch Linux || GNOME, KDE Plasma, Xfce || style="text-align: left;"| Manjaro is based on Arch Linux and offers a user-friendly experience out of the box. By default, it comes with Nvidia's proprietary drivers, which makes it straightforward to install. It uses the Pamac app to install native, AUR, Flatpak, and Snap packages in a simple way.
 
|-
 
|-
| '''[http://www.pclinuxos.com/ PCLinuxOS]''' || Independent || [[Wikipedia:APT-RPM|RPM (APT)]] || KDE Plasma, MATE || style="text-align: left;"|PCLinuxOS is a semi-rolling release fork of [[Wikipedia:Mandriva Linux|Mandriva]] which provides an out-of-the-box support for many graphics and sound devices, along with other peripherals. It contains a special software dedicated to maintaining and configuring your system.
+
||'''[https://get.opensuse.org/tumbleweed/ openSUSE Tumbleweed]''' || Independent || GNOME, KDE Plasma, XFCE|| style="text-align: left;"| A rolling version of openSUSE which uses automated testing to provide more stability than many other rolling releases. When used with BTRFS on a root partition, snapshots are taken before and after updates, allowing easy restores if there is an update breakage.
 
|-
 
|-
| '''[https://www.deepin.org/en/ Deepin]''' || Debian (Unstable) || [[Wikipedia: APT_(Debian)|DEB (Apt)]] || Deepin || style="text-align: left;"| Based on Debian (Unstable), Deepin is a rolling release distro which formely was based on Ubuntu 15 which also uses it's own desktop environment with the same name.
+
||'''[https://getsol.us/ Solus]''' || Independent || Budgie, GNOME, MATE, KDE Plasma || style="text-align: left;"| Despite following the rolling release model, it provides stable packages and features great hardware compatibility with any GPU. It includes a special tool called Linux Steam Integration (LSI) which allows users to easily customize Steam, ranging from using the libraries from the system (native mode) or a forced 32-bit mode. Only stable releases of library and software are added, with very few exceptions—such as Nvidia's Vulkan beta drivers.
 
|}
 
|}
<sup>1</sup> <small>- Bold ones are default</small>
+
<references group="rr note" />
 
 
==Desktop Environments==
 
 
Each desktop environment you are using or installing have an impact on your user experience and the performance on games. It is often recommended to run the game in fullscreen so the desktop compositor won’t affect the game’s performance, some DE have an option which lets you disable it such as Cinnamon or KDE Plasma (Automatic). Otherwise, XFCE,LXQT/LXDE and OpenBox are recommended to gain as much performance as possible. Due to the low or even absence of desktop compositor use. As for managing your files, despite the fact that each desktop environment has their own file managers, it is possible to download the other one as a separate application (followed with required dependencies) and use it by default, same goes for text editors and terminals as well.<br />
 
  
 +
==Desktop environments==
 +
By default, Linux is a text/command-line-based operating system. However, the Linux community has created a variety of desktop environments to offer a user-friendly GUI experience. Most include their own basic software for common use cases, such as a file explorer or word processor.
  
The performance in the game depends not only on RAM, but also on Composer and the game itself as well. According to the [http://www.phoronix.com/scan.php?page=article&item=ubuntu-1704-desks&num=1 benchmark] generally KDE performs much better despite the RAM usage than XFCE4 which is supposedly lightweight, but there are games which the latter performs better. In general just aim at the desktop you are comfortable with while aiming at the performance as well. You can't aim for example at the i3 desktop as a beginner, despite the very low RAM usage you will have many issues with navigating it as it relies on the keyboard commands to move around more often while the mouse is your addon, which would leave you more confused. As noted in CS:GO benchmark, it looks like it has a very low FPS on GNOME and Budgie desktop, but as the author explained, it is a false alarm.<br />
+
As a rule of thumb, environments with heavy RAM use typically add another 500 MB to the operating system's RAM requirements (which usually range from 500 MB to 4 GB), compared to environments with light RAM use.
  
 
Here is a list of well known desktop environments with their default applications included, be aware that the RAM usage may vary depending on the content of the Linux distribution.
 
 
 
{| class="wikitable sortable" style="nowrap;"
 
{| class="wikitable sortable" style="nowrap;"
 
|-
 
|-
! Name !! Min. RAM !! Recomm. RAM !! Composer !! Customizeable !! File Manager !! GUI Text Editor !! Terminal !! Wayland support !! Notes
+
! Name !! RAM use !! Description
|-
 
| [https://www.gnome.org/ GNOME] || 512 MB || 1 GB || Yes (Mutter) || Yes, limited || Nautilus || GEdit || GNOME Terminal || Yes (GBM and EGLStreams) || style="text-align: left;"|
 
* Includes both Xorg, Wayland and GNOME Classic session
 
* Installing GNOME Tweak Tools is recommended to make any changes
 
|-
 
| [https://www.kde.org/plasma-desktop KDE Plasma] || 512 MB || 1 GB || Yes (KWin) || Yes || Dolphin or Konqueror || KWrite or Kate || Konsole || Yes (GBM) || style="text-align: left;"|
 
* Plasma Wayland is required to run in Wayland session
 
* Star Menu types can be changed in "Switch To..." menu ranging from classic Windows one, default and full screen.
 
* Since 5.10 version, the desktop icons are enabled by default.
 
* Konqueror functions as both file manager and a web browser.
 
|-
 
| [https://launchpad.net/unity/+download Unity (Official)] ([https://unity.ubports.com/ Community]) || 512 MB || 1 GB || Yes (Mutter) || Yes, limited || Nautilus || Any || GNOME Terminal || No || style="text-align: left;"|
 
* No longer officially supported, however the community is still maintaining it.
 
* Uses the modified GTK3 library made by Cannonical, creators of Ubuntu and Unity desktop
 
* Support for Wayland was planned, but later dropped in favour of Mir.
 
|-
 
| [https://budgie-desktop.org/home/ Budgie] || 256 MB || 512 MB || Yes (Mutter) || Yes || Nautilus || GEdit || GNOME Terminal || No || style="text-align: left;"|
 
* Depends on GNOME applications
 
* It will use Qt as a graphical interface upon releasing version 11
 
* GTK3 updates may break the desktop which currently depends on it.
 
 
|-
 
|-
| [http://developer.linuxmint.com/ Cinnamon] || 256 MB || 512 MB || Yes (Muffin) || Yes || Nemo || GEdit || GNOME Terminal || No, but there are plans for it || style="text-align: left;"|  
+
| [https://www.gnome.org/ GNOME] || Heavy || style="text-align: left;"|
* Provides both Hardware and Software mode sessions, the only difference is that the Software mode uses CPU for composing.
+
One of the oldest desktop environments that is still continuously updated. Offers the most radical departure from the traditional Windows-style paradigm of start-menu-and-a-taskbar.<br> It has historically been considered slow but has made huge strides in improving the fluidity and responsiveness in the last few years, particularly on gaming-grade machines. Offers a variety of customizations via GTK3/4 themes and Gnome Extensions.
 
|-
 
|-
| [https://wiki.gnome.org/Projects/GnomeFlashback GNOME Flashback] || 256 MB || 512 MB || Yes (Metacity) || Yes || Nautilus || GEdit || GNOME Terminal || No || style="text-align: left;"|  
+
| [https://www.kde.org/plasma-desktop KDE Plasma] || Heavy || style="text-align: left;"|
* A lighter version of GNOME desktop, based on the GNOME 2 layout in GTK3 engine
+
The first major comprehensive desktop environment released for Linux, which sees regular maintenance and feature updates. Out of the box, it offers a familiar Windows-like experience but also allows nearly limitless ability to customize the functionality and look and feel of the desktop.
* Contains no 3D acceleration and is less CPU intensive
 
 
|-
 
|-
| [https://www.deepin.org/en/dde/ Deepin] || 256 MB || 512 MB || Yes (Deepin WM) || Yes || Deepin File Manager || GEdit || Deepin Terminal || No || style="text-align: left;"|  
+
| [https://getsol.us/home/ Budgie] || Heavy || style="text-align: left;"|
* More simple and lightweight
+
Created by a Solus developer and currently maintained by Solus Team. It serves as an alternative to GNOME with a much more desktop-like interface, which bears similarities to modern Windows.
* Originally created for Linux Deepin
 
 
|-
 
|-
| [https://xfce.org/ XFCE] || 128 MB || 256 MB || Yes (XF4WM) || Yes || Thunar || Mousepad || XFCE Terminal || No || style="text-align: left;"|  
+
| [http://developer.linuxmint.com/ Cinnamon] || Heavy || style="text-align: left;"|
* Composer's VSync is broken.
+
Created by the Linux Mint Team, Cinnamon offers an experience that is very similar to Windows 7.
 
|-
 
|-
| [https://mate-desktop.org MATE] || 128 MB || 256 MB || Yes (Marco) || Yes || Caja || Pluma || MATE Terminal || No, but it is planned || style="text-align: left;"|  
+
| [https://xfce.org/ XFCE] || Light || style="text-align: left;"|
* MATE Tweak is recommended for further customization and changing the composer
+
Starting off as a clone of a Unix-like desktop environment called CDE, it became its own with a Windows XP-like appearance and light memory usage. XFCE is well-suited for low-end hardware and people who like to settle on one user experience and never change it (while still getting the security and maintenance updates).
* It's composer does not have a hardware VSync, unless you install Compton which allows you to use Marco (Compton GPU compositor) or Compiz to replace Marco composer entirely.
 
* Audio files can be previewed by hovering the mouse into one of them and wait a few seconds to play it in Caja.
 
* Due to the fact that MATE is still using GTK2, it will have a Wayland support once all the dependencies and the desktop itself switches into GTK3 [http://wiki.mate-desktop.org/wayland]
 
 
|-
 
|-
| [http://lxqt.org/ LXQT] and [http://lxde.org/ LXDE] || 64 MB || 128 MB || None, but can be added || Yes, limited || PCManFM (PCManFM-Qt for LXQt) || Any || QTerminal || No || style="text-align: left;"|  
+
| [https://mate-desktop.org MATE] || Light || style="text-align: left;"|
* There are no programs for editing the Start menu. Using the external tool is required such as [http://lxmed.sourceforge.net/ LXMED], [http://ftp.gnome.org/pub/GNOME/sources/alacarte/ Alacarte], [https://smdavis.us/projects/menulibre/ MenuLibre](Recommended) or using PCManFM itself (Version 1.20 or higher of the file manager is required). Otherwise, manually editing the *.desktop file is required.
+
MATE spawned as a spiritual successor to GNOME 2 after a controversial change in GNOME 3. It is recommended for Windows and Mac users while providing its own feature set such as mouse hover audio previewing.
* LXQt/LXDE uses OpenBox as a default Window Manager, however it can be replaced with a composer of your choice such as XFWM4, i3WM, Metacity etc. each one affects the performance of the game or your system, some even changes the window management, i3WM being the example of using the tilting-based windows with it and rely on hotkeys, but it is much more easier to do.
 
* LXAppearance is required to change the theme for GTK+ 2/3 programs, the software included by default for changing the theme affects Qt programs only.
 
 
|-
 
|-
| [http://openbox.org/wiki/Main_Page OpenBox] || 32 MB || 64 MB || No || Yes || Nemo, Thunar, PCManFM || Any || Any || No || style="text-align: left;"|  
+
| [https://www.lxde.org/ LXDE] || Light || style="text-align: left;"|
* Requires using multiple components and scripts to create your own desktop.
+
LXDE (Lightweight X11 Desktop Environment) is a lightweight and fast, feature-rich desktop environment. It is designed to be user-friendly and slim while keeping resource usage low. LXDE strives to be modular, so each component can be used independently with few dependencies.
* Can be used as a alternative window manager for GNOME, KDE and XFCE.
+
{{ii}} The Original team that created LXDE has largely moved on to LXQT due to controversial changes in the GTK framework, however, a community of loyal users and developers continues to use and maintain it.
 
|-
 
|-
| [https://i3wm.org/ i3] || 32 MB || 64 MB || Yes (i3WM) || Yes || Any || Any || Any || No (See Notes) || style="text-align: left;"|
+
| [https://lxqt-project.org/ LXQT] || Light || style="text-align: left;"|
* You can use [http://swaywm.org/ Sway] to run in Wayland mode, be aware that it does not have Xorg mode.
+
Despite its limited features (as it is essentially a rewrite of LXDE with a different UI framework) along with the lack of a compositor, it is perfectly suited for the lowest-end hardware.  
* Only for advanced users due to the reliance on the key combinations to control window size, moving around the workstations/virtual desktops performing most of the basic functions.
 
 
|}
 
|}
  
 
==Kernel==
 
==Kernel==
{{mm}} [https://www.kernel.org/ Main Linux Kernel page]
+
{{mm}} [https://en.wikipedia.org/wiki/Linux_kernel Wikipedia page]
It is important to update your Linux kernel if updates are available as they provide security updates, bugfixes, better support for computer hardware, new modules and better performance. There are two main versions of the official Linux kernel which they differ each other. The Long Term Support (LTS) kernel versions are slightly behind in terms of hardware support and features than it’s counterpart, but offers the same security updates while being more stable with longer kernel support than other, non-LTS kernels.
+
{{ii}} It is important to update the Linux kernel as new versions provide security updates, bug fixes, better performance, and support for hardware. A distro's repository contains all the supported versions for that distro.
 +
 
 +
There are two main releases of the official Linux kernel:
 +
* Long-Term Support (LTS) is slightly behind in terms of hardware support and features but offers better stability and longer support.
 +
* Stable release (sometimes called the current release) offers the best hardware support and the newest features. It should be the default choice for a gaming machine and be avoided only if it causes issues.
 +
 
 +
Despite these differences, both releases offer the same security updates.
  
Other users are free to edit the main kernel’s source code to add features, improvements, or security updates for different purposes. While both normal and LTS can be used for gaming, there are also community-made ones which may even improve it even further.
+
===Kernel replacement===
  
The most notable ones are (Bold ones are kernels which have additional options to enhance the performance):
+
{{ii}} '''This section is meant for advanced users, you can easily break your OS if you don't know what you are doing!'''
  
* '''[http://users.tpg.com.au/ckolivas/kernel/ Linux CK]'''
+
While both stable and LTS Linux kernel releases can be used for gaming, there are also community-made ones that add features and improvements. These kernels may or may not improve one's gaming experience, and may require DKMS (dynamic kernel module support) versions of drivers and headers to make hardware usable with multiple kernels.
* '''[https://github.com/zen-kernel/zen-kernel Linux Zen]'''
 
* '''[https://liquorix.net/ Liquorix]'''
 
  
'''Notes'''
+
The most notable releases:
* Some repos already provide a pre-compiled kernel
+
* [https://github.com/CK-LINUX/kernel Linux CK]
* Be sure to keep the current kernel you have in case if things go wrong.
+
* [https://github.com/zen-kernel/zen-kernel Linux Zen]
* It's possible to use the main kernel in Ubuntu-based distro, be aware that it '''does not contain any patches made by Ubuntu and they are not supported.''' They are used for testing purposes only, if you want to use it then consider using [http://www.teejeetech.in/p/ukuu-kernel-upgrade-utility.html UKUU] for easier installation.
+
* [https://liquorix.net/ Liquorix]
 +
 
 +
{{ii}} For help with installing different kernels on a distro, consult the kernel's official website or the distro's knowledge base.
 +
{{ii}} It is advised to keep the current official kernel in case of issues.
 +
{{ii}} [https://teejeetech.in/ukuu/ UKUU] is a useful utility for swapping kernels on Ubuntu (and Ubuntu derivatives).
  
 
===Microcode===
 
===Microcode===
{{ii}}[https://wiki.archlinux.org/index.php/Microcode ArchLinux Wiki Article]
+
{{mm}}[https://wiki.archlinux.org/index.php/Microcode ArchWiki article]
It is extremely important to install the microcode for your CPU! As the manufacturer provides security and stability updates for your processor which without it, you will expect a lot of issues using your system.
+
It is vital to install the microcode for the CPU as the manufacturer provides security and stability updates, although most often your distribution will push those updates directly to you. Most distributions use either a package manager or some kind of firmware/drivers manager to update the microcode.
 
 
AMD users only need to install the Linux Firmware package, however in case of Intel, you need the Intel Ucode package and then set up the bootloader to use it as a 1st thing to load. GRUB can automatically set it up if it’s used as your default bootloader by updating the configuration.
 
  
 
==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
+
{{++}} Generally speaking, if you use AMD graphics, you're likely to have a flawless experience as AMD makes open-source drivers available and Linux developers integrate them directly into the kernel.
{{ii}} [https://wiki.archlinux.org/index.php/AMDGPU ArchLinux Wiki's AMDGPU/AMDGPU Pro Article]
+
{{--}} Generally speaking, if you use Nvidia graphics, you're likely to have to make some independent efforts to either install or enable Nvidia drivers, as Nvidia does not offer any open-source drivers which makes the distribution maintainers hesitant when it comes to packaging or enabling Nvidia drivers by default.<br> Nvidia's drivers are also of worse quality than either AMD's own Linux drivers or Nvidia's Windows driver, with features that exist in the Windows drivers missing in the same card's Linux driver. This is entirely Nvidia's choice, and Linux developers and maintainers can do almost nothing to rectify the consequences of Nvidia's behavior.
{{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/Intel_graphics ArchLinux Wiki's Intel Graphics Article]
 
  
Here is a following table describing the drivers and informations which Linux supports for each GPU brand.
+
{{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 ArchWiki's AMDGPU/AMDGPU Pro 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 ArchWiki's Intel Graphics Article]
  
 
{| 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 || Radeon || rowspan="2"| Mesa (GLX and DRI) || GCN 2 and older architecture || No
 
|-
 
|-
| style="background: red; color: white;" rowspan="4" | '''AMD/ATI''' ||rowspan="2" | Open Source || AMDGPU || rowspan="2"| MESA || GCN 1 to GCN 4 and newer architecture<sup>1</sup> || rowspan="3" | Yes
+
|rowspan="2"| AMDGPU || GCN and newer architecture<sup>1</sup> || Yes (RadV, AMDVLK)
 
|-
 
|-
| ATI || GCN 2 and older architecture
+
|rowspan="2"| Proprietary || AMDGPU Pro || GCN and newer architecture || Yes
 
|-
 
|-
|rowspan="2"| Proprietary || AMDGPU || AMDGPU Pro || GCN 3 to newer architecture
+
| Fglrx || Catalyst GL Library || GCN 3 and older architecture || No
 
|-
 
|-
| Catalyst|| Catalyst GL Library || GCN 3 and older architecture || No
+
| style="background: #84DE02;" rowspan="7"| '''Nvidia''' || Open Source || Nouveau || Mesa (GLX and DRI) || Any Nvidia GPU || Yes (NVK for Kepler and up)
 
|-
 
|-
| style="background: #84DE02;" rowspan="6"| '''NVIDIA''' || Open Source || Xorg Nouveau || MESA || Any NVIDIA GPU || rowspan="2"| Yes<sup>2</sup>
+
|rowspan="6"| Proprietary || Nvidia || Nvidia GLX || From Kepler based GPUs to recent || Yes
 
|-
 
|-
|rowspan="5"| Proprietary || Nvidia || NVIDIA Utility || From GT/GTX 300 series to recent
+
| Nvidia 390 || Nvidia 390 GLX || From Fermi based GPUs to recent || rowspan="5"| No
 
|-
 
|-
| Nvidia 340 || Nvidia 340 Utility || From GeForce 8 series to GT/GTX 200 series ||rowspan="4"| No
+
| Nvidia 340 || Nvidia 340 GLX || For Tesla based GPUs
 
|-
 
|-
| Nvidia 304 || Nvidia 304 Utility || From GeForce 6 series to GT/GTX 200 series
+
| 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 || 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 for Gen9 and up, HASKV Gen7/Gen8)
 +
|-
 +
| Xorg modesetting
 +
|-
 +
| style="background: yellow;" rowspan="2" | '''VIA/S3''' || Open Source || OpenChrome || rowspan="2"| Mesa (GLX and DRI) || Unichrome series, Chrome9 2D only || No
 +
|-
 +
| Proprietary || VIA Unified GFX || Chrome9 || No
 
|-
 
|-
|Xorg Modesetting
+
| style="background: orange;" | '''3DFX''' || Open Source || tdfx || MesaGL || Voodoo3 and up, Voodoo 1 & 2 2D only || No
 
|-
 
|-
 +
| ARM || Open Source || Panfrost || Mesa (GLX and DRI) || Mali Midgard, Bifrost and Valhall || Yes (PanVK)
 +
|-
 +
| Qualcomm || Open Source || Freedreno || Mesa (GLX and DRI) || Adreno A2xx-A7xx || Yes (Turnip)
 +
|-
 +
| Broadcom || Open Source || V3D || Mesa (GLX and DRI) || VideoCore 5 on Raspberry Pi 4 || Yes
 +
|-
 +
| Imagination Technologies || Open Source || pvrsrvkm || Mesa (GLX and DRI) || PowerVR Rogue || Yes
 
|}
 
|}
 
<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 />
+
Generally, AMD/ATI users should use [[Mesa|the open source driver]] as it provides the best performance and support compared to the proprietary ones, while Nvidia users should stick to the proprietary ones. There are some things to remember:
 +
* '''Try not to install drivers from the GPU manufacturer's website unless forced to''', as distro maintainers package the driver to be offered from the package manager.
 +
* If forced to use Catalyst, Nvidia 173, or Nvidia 96 drivers, one must downgrade Xorg to the last supported version.
 +
* Before using the open-source driver '''one must install LLVM and Linux Firmware packages'''.
  
 +
====Installing drivers====
 +
'''Ubuntu (and Ubuntu-derived distros such as Mint, Pop!_OS, and Neon)'''
  
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 latter ones. Howerver there are some things to remember:
+
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.
* '''Never install drivers from the respective GPU brand's website unless you are forced to!'''. Installing them from the distro's repo is enough.
+
{{Standard table|Repository|Description|content=
* 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.
+
{{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.}}
* If forced to use Catalyst, Nvidia 173 or Nvidia 96 drivers, you must downgrade XOrg to the version it got the last support.
+
{{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. }}
* Enable early KMS once you have installed the driver.
+
{{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. }}
* As always when using the 64 bit system, install the 32 bit version of the drivers if possible.<br />
+
{{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.}}
 
+
}}
 
 
Ubuntu and Ubuntu-based system should consider using these PPAs for latest AMD, Intel and Nouveau drivers:<br />
 
 
 
'''[https://launchpad.net/~paulo-miguel-dias/+archive/ubuntu/pkppa/ Padoka Stable Mesa]'''
 
<pre>
 
sudo add-apt-repository ppa:paulo-miguel-dias/pkppa
 
sudo apt-get update
 
</pre>
 
'''[https://launchpad.net/~paulo-miguel-dias/+archive/ubuntu/mesa Padoka Unstable Mesa]''' (Also contains unstable version of Nouveau driver for NVIDIA GPU)
 
<pre>
 
sudo add-apt-repository ppa:paulo-miguel-dias/mesa
 
sudo apt-get update
 
</pre>
 
For proprietary NVIDIA drivers please use '''[https://launchpad.net/~graphics-drivers/+archive/ubuntu/ppa "Graphics  Drivers" Teams' PPA]'''
 
<pre>
 
sudo add-apt-repository ppa:graphics-drivers/ppa
 
sudo apt-get update
 
</pre><br />
 
  
As of 10th 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
+
'''Fedora'''
<pre>
 
zypper ar https://download.nvidia.com/opensuse/tumbleweed nvidia-tumbleweed
 
</pre>
 
  
and later on install it with <code>zypper inr</code>
+
To install Nvidia drivers on Fedora, it is usually sufficient to install the latest Nvidia drivers from the software center. Simply search for Nvidia and install the driver with the highest version number.
 
====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
 
  
====NVIDIA Optimus====
+
If you have a more complex setup, such as an Optimus laptop, or the above instructions do not work for you, you can also use '[https://github.com/t0xic0der/nvidia-auto-installer-for-fedora-linux NVIDIA Auto Installer for Fedora Linux]'. It is a set of scripts that can handle both normal installs and more advanced configurations.  
{{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====
+
To use it, execute the following in the terminal:
{{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 it's successor, Wayland, it is still maintained by Xorg Foundation and Free-Desktop.org.
 
  
====Wayland====
+
<code>
{{ii}} [https://wayland.freedesktop.org/ Main Page]
+
sudo dnf install dnf-plugins-core -y && sudo dnf copr enable t0xic0der/nvidia-auto-installer-for-fedora -y && sudo dnf install nvautoinstall -y
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 />
+
</code>
  
+
Once installed, type in <code>nvautoinstall</code> into your terminal. The program will show you the options you can use.  
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 />
+
The most basic installation is performed by issuing the following command:
  
 +
<code>sudo nvautoinstall rpmadd && sudo nvautoinstall drive</code>.
  
Here are the following GUI libraries with Wayland support:
+
To install support for Vulkan API (will be functional only if you have a Vulkan-capable GPU and driver), execute the following command <code>sudo dnf install vulkan-loader vulkan-loader.i686</code>
* 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===
+
{{Fixbox|fix=
{{ii}}[https://wiki.archlinux.org/index.php/Sound_system ArchLinux Wiki Page]
+
# Launch the terminal and update/reboot system: <code>sudo dnf update && reboot</code>
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.<br />
+
# Launch the terminal and add the official repos: <code>sudo dnf install fedora-workstation-repositories</code>
 +
# Enable the Nvidia driver repo: <code>sudo dnf config-manager --set-enabled rpmfusion-nonfree-nvidia-driver</code>
 +
# Reboot, then verify the addition of the repository using the following command: <code>sudo dnf repository-packages rpmfusion-nonfree-nvidia-driver info</code>
 +
# Open the software app, select Add-ons > Hardware Drivers > NVIDIA Linux Graphics Driver > Install
 +
}}
  
 +
If you used nvautoinstall above, you can also install Vulkan API via <code>sudo nvautoinstall vulkan</code>.
  
There are also other things to know, if your sound card has issues with playing the sound, make sure you have ALSA Firmware package installed, as for bluetooth headsets, check if PulseAudio Bluetooth package is installed and your output is set to A2D in the Sound settings.<br />
+
'''openSUSE'''
  
 +
[https://opensuse.github.io/openSUSE-docs-revamped-temp/install_proprietary/ Please refer to the openSUSE User Documentation Project for instructions.]
  
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 />
+
====Optimus support====
 +
{{ii}} [https://www.reddit.com/r/linux_gaming/comments/6ftq10/the_ultimate_guide_to_setting_up_nvidia_optimus/ Nvidia Optimus Linux guide]
 +
{{--}} Optimus support in Nvidia GPUs is still considered to be troublesome.
 +
In the case of laptops that have Nvidia Optimus support, it is recommended to have PRIME enabled, which can be done by installing an additional package. Follow the distro’s documentation to set this up.
  
 +
AMD users only require running the game with the <code>DRI_PRIME=1</code> command.
  
Another way is to use the OSS emulator for the specific audio interface:<br />
+
===Audio===
 +
{{ii}}[https://wiki.archlinux.org/index.php/Sound_system ArchWiki page]
  
 +
Linux has several sound systems available. The most common one is PulseAudio, but a new system called PipeWire is looking to supersede and consolidate all previous systems into one. For most games, PulseAudio will work.
  
* 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.
+
In the case of MIDI, installing the Timidity or Fluidsynth package is required along with either a SoundFont or the FreePats package. Depending on the distro, it will either be set up automatically or require manual intervention.
* 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 />
+
===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]
  
 +
Linux supports a vast array of input devices, including legacy hardware. Many programs exist for gaming peripherals in case further customization is needed.
  
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.
+
'''General'''
<br />
+
* [https://github.com/libratbag/piper/ Piper] - Configure gaming mice
  
 +
There are some other ones made for products from specific companies:
  
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.
+
'''Razer'''
 
+
* [https://openrazer.github.io/ OpenRazer] - Open-source driver for Razer peripherals
 
+
* [https://polychromatic.app/ Polychromatic] - Frontend for OpenRazer
===Input Devices===
+
* [https://github.com/z3ntu/RazerGenie RazerGenie] - Configurator for Razer mice, keyboards, headsets, and more
{{ii}}[https://wiki.archlinux.org/index.php/Libinput Libinput ArchLinux article]
+
* [https://github.com/GabMus/razerCommander RazerCommander] - Razer device manager
{{ii}}[https://wiki.archlinux.org/index.php/Touchpad_Synaptics Touchpad ArchLinux Article]
+
* [https://bues.ch/cms/hacking/razercfg RazerCFG] - A much more simplified configurator for Razer products
{{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 />
 
 
 
 
 
Wayland users only requires the '''libinput''' package itself, which also supports XOrg.<br />
 
 
 
 
 
If using a mouse dedicated for gaming, there is an 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:
 
  
* [https://github.com/z3ntu/RazerGenie RazerGenie] - Keyboard and Mouse setup for Razer products
+
'''Roccat'''
* [https://github.com/GabMus/razerCommander RazerCommander] - Ditto
 
* [https://bues.ch/cms/hacking/razercfg RazerCFG] - A much more simplified configurator for Razer products
 
 
* [https://sourceforge.net/projects/roccat/ Roccat Configurator] - An official configurator for Roccat products
 
* [https://sourceforge.net/projects/roccat/ Roccat Configurator] - An official configurator for Roccat products
* [https://github.com/lah7/polychromatic Polychromatic] - Yet another configurator for Razer products
 
 
===Disk Partitioning===
 
{{ii}}[https://wiki.archlinux.org/index.php/Partitioning ArchLinux Wiki Guide]
 
{{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 * repesents 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 preffered 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
 
{| class="wikitable"
 
|-
 
! Amount of RAM !! Swap Disk Size
 
|-
 
| Less than 2 GB || 2x the amount of RAM
 
|-
 
| 2 GB - 4 GB || The same amount of RAM or down to 0.5x.
 
|-
 
| Higher than 4 GB || 0.5 times of RAM or less.
 
|}
 
  
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.  
+
====Controller support====
 +
All DirectInput and XInput controllers are supported. In case of issues with XInput controllers, it is recommended to install [https://gitlab.com/xboxdrv/xboxdrv/ xboxdrv].
  
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 />
+
If dealing with a game that has very limited or no controller support at all, the [https://github.com/AntiMicroX/antimicroX AntiMicroX] program offers a solution. It allows the user to bind keyboard and mouse inputs to the controller. However, it currently only works with Xorg.
  
 +
Additionally, a user can use Steam Input in the Steam app to configure their controller.
  
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 />
+
==Other==
 
+
===Disk partitioning===
Here are the following examples of how the partitioning looks like:<br />
+
{{ii}} '''ext4''' is the default file system used by most Linux distributions.
 
+
{{mm}} While the file system used on Windows, NTFS, is supported, it is generally not recommended to use as it may cause compatibility issues.
 
 
'''Single 250 GB HDD <code>/dev/sda</code> on a 4 GB of RAM BIOS system'''
 
{| class="wikitable"
 
|-
 
! Partition !! Folder !! Disk Format !! Size !! Bootable
 
|-
 
| /dev/sda1 || / || Ext4 || 25 GB || Yes (GPT/MBR)
 
|-
 
| /dev/sda2 || None || Swap || 2 GB || No
 
|-
 
| /dev/sda3 || /home || Ext4 || 223 GB || No
 
|}
 
<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
 
|}
 
  
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 />
+
The most important aspect of disk partitioning is often the swap partition; it generally acts as RAM replacement. The absence of it will cause software to shut down due to low memory, and it is also used to offload memory from RAM when entering power-saving modes such as Hibernation or Sleep. The size of the swap disk depends on how much RAM is available in the computer; if less than 8 GB of RAM, increase the swap disk, or if more than 8 GB of RAM, decrease the swap disk.
  
 +
It is generally recommended to partition disks in this particular order:
  
'''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.
+
# / (Root)
 +
# Home
 +
# Swap disk
  
===Controller Support===
+
A user 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.
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 />
 
  
 +
===Display server===
 +
{{++}} Wayland is newer than Xorg and is considered to be technically superior.
 +
{{--}} Wayland is not supported by older proprietary games.
  
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 />
+
Linux utilizes a display server system in order to present a graphical environment with which the user can interface. The two prominent ones are [https://wiki.archlinux.org/title/Wayland Wayland] and [https://wiki.archlinux.org/title/Xorg Xorg].
  
 
+
While Wayland offers more a modern and secure backend, Xorg has legacy support and will generally be more compatible than Wayland. In addition, Wayland is still in active development and is missing features that would provide a gaming experience in parity with Xorg.
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 />
 
 
 
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]
 
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 />
 
 
 
 
 
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).<br />
 
  
 +
Benchmarking in Linux can be achieved with the [https://www.phoronix-test-suite.com Phoronix Test Suite]. It is easy to use despite not offering a user-friendly GUI. The biggest advantage is it saves the information as a webpage, making comparing tests much easier.
  
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.
+
Steam users can use Valve's [https://github.com/ValveSoftware/voglperf voglpref], which requires Steam.
  
===PCI Passthrough===
+
===PCI passthrough===
{{ii}}[https://wiki.archlinux.org/index.php/PCI_passthrough_via_OVMF ArchLinux Wiki Page]
+
{{ii}}[https://wiki.archlinux.org/index.php/PCI_passthrough_via_OVMF ArchWiki 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 versions, it is possible to passthrough a graphics card, motherboard, or even other hardware into a virtual machine. The main advantage of it is having a native GPU working on Windows in a virtual machine, which allows you to play Windows games on it while using Linux.
  
* Your CPU must support hardware virtualization and and IOMMU
+
There are some disadvantages:
* 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!
+
* A second GPU for PCI passthrough is required
 +
* GPU must support UEFI
 +
* CPU must support hardware virtualization and IOMMU
 +
* Motherboard must support IOMMU
 +
* It is not an easy process for beginners
  
==[[Wine]]==
+
==Stores and clients==
{{ii}}[https://www.winehq.org/ Main Page]
 
{{ii}} [https://www.reddit.com/r/wine_gaming/ /r/wine_gaming]
 
{{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:
 
 
 
* 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.
 
 
 
AMD and Intel GPU benefits a lot from Gallium Nine version, due to the fact that Gallium3D is a part of MESA, which both of these cards rely on. NVIDIA is not affected by this, as it uses it’s own driver for performing 3D acceleration in it’s own utility package, unless you are on nouveau.
 
 
If WINE itself is hard to use there are also front-ends which may improve your experience with it:
 
 
 
{| class="wikitable"
 
|-
 
! Name !! Release !! Notes
 
|-
 
| [https://www.playonlinux.com PlayOnLinux] || Free || style="text-align: left;"|
 
{{++}} Beginner friendly
 
{{++}} Includes precompiled scripts for automatic installation
 
{{--}} Very slow development
 
{{--}} The precompiled installation scripts are outdated, along with third-party libraries.
 
|-
 
| [https://www.codeweavers.com/products/crossover-linux Crossover] || Commercial || style="text-align: left;"|
 
{{++}} Superior in terms of compatibility than PlayOnLinux
 
{{++}} Provides patches and improvements which are later on added to Wine Staging
 
{{ii}} Buying the product will also provide support for Wine development
 
|-
 
| [http://q4wine.brezblock.org.ua/ Q4Wine] || Free || style="text-align: left;"|
 
{{++}} 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==
 
 
 
{| class="wikitable"
 
{| class="wikitable"
 
|-
 
|-
 
! Name !! Client available !! Registers Linux sales? !! Notes
 
! Name !! Client available !! Registers Linux sales? !! Notes
 
|-
 
|-
| [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 the Tools tab).
* 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 information about required dependencies for games.
 
|-
 
|-
| [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.
+
* The game's store page shows the required dependencies for games.
* Uses MojoSetup as a installer.
+
* Uses MojoSetup as an installer.
* Running the <code>start.sh</code> script may cause issues, run the binary executable if that happens instead.
+
* Running the <code>start.sh</code> script may cause issues. Run the binary executable directly to bypass issues.
 
|-
 
|-
 
| [https://itch.io/ Itch.io] || Yes (Optional) || Yes || None
 
| [https://itch.io/ Itch.io] || Yes (Optional) || Yes || None
 
|-
 
|-
| [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.
 
|-
 
|-
| [https://lutris.net/ Lutris] || Yes || No || style="text-align: left;"|
+
| [https://gamejolt.com/ Game Jolt] || Yes (Optional) || Unknown || style="text-align: left;"|
* It does not sell games, instead it provides scripts for running Windows games in Wine
 
* An open source client for managing your games in your system.
 
* Supports native ports, Steam, Wine and emulators.
 
* Can provide different Wine version for specific games. For example Wine-Overwatch for Overwatch.
 
|}
 
 
 
==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.
 
{| class="wikitable"
 
|-
 
|<code>/boot</code> || Static files of the boot loader
 
|-
 
|<code>/home</code> || User Home directories. The current Home directory user is simplified into <code>~/</code> instead of <code>/home/<username>/</code>.
 
|-
 
|<code>/lib</code> || Essential shared libraries and kernel modules.
 
|-
 
|<code>/sbin</code> || System Binaries/Executables
 
|-
 
|<code>/dev</code> || Device Files
 
|-
 
|<code>/etc</code> || 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.
 
|-
 
|<code>/media</code> || Mount point for removable media such as CD/DVD, Pendrive etc.
 
|-
 
|<code>/bin</code> || Essential user command binaries such as <code>cat</code>, <code>tar</code> etc.
 
|-
 
|<code>/mnt</code> || 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.
 
 
|-
 
|-
|<code>/opt</code> || Addon application packages such as Java, OSS etc.
+
| [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>/proc</code> || Virtual file system for documenting kernel and process status as text files.  
+
| [https://snapcraft.io/search?category=games Snap Store] || Yes (Optional) || No || style="text-align: left;"|
Distros using SELinux for security use <code>/selinux</code>, which is similar to <code>/proc</code>
+
* 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 ''System z'' distro installations.
 
|-
 
|-
|<code>/tmp</code> || Temporary files. Has it's own space size set which can be changed.
+
| [https://www.zoom-platform.com/search/any/any/any/any/any/linux/any/any ZOOM Platform] || No || Unknown ||
|-
+
* Very small game selection (50 Linux games total) as of November 2023.
|<code>/var</code> || Variable files such as log files, downloaded packages etc.
 
|-
 
|<code>/lost+found</code> || Contains files that can be recovered which may be broken during the unexpected shutdown.
 
Only appears when installing Linux.
 
|-
 
|<code>/root</code> || Home directory for Root cannot be accessed by User or the Superuser (Sudo/Su).
 
|-
 
|<code>/srv</code> || 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 it's own folder structure:
 
{| class="wikitable"
 
|-
 
|<code>/bin</code> || Applications installed
 
|-
 
|<code>/sbin</code> || System Administrations
 
|-
 
|<code>/local</code> || User compiled applications. Default installation path when compiling the program.
 
|-
 
|<code>/share</code> || Folder for storing architecture-independent files such as graphics, themes etc.
 
|-
 
|<code>/lib</code> || Library files installed by the user. Used for compiling.
 
|-
 
|<code>/include</code> || .c files are stored that are included for compiling.
 
|-
 
|<code>/src</code> || Folder for storing source codes. Mainly for Linux kernel.
 
 
|}
 
|}
  
===Compiling from source code===
+
==Improvements==
{{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.
+
===Hardware===
The general rule of thumb when compiling a program goes in 2 steps
+
'''Disable mitigations for transient execution CPU vulnerabilities'''
<pre>
+
{{--}} Be aware that disabling these will cause your PC to be susceptible to multiple vulnerabilities such as Spectre, Meltdown, ZombieLoad, etc. Use it with discretion.
make
+
{{ii}} Outside of specific microbenchmarks, disabling the default mitigations should result in an average performance increase of 5-10%. The following parameter used 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].
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 ammount 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:
+
{{Fixbox|description=Edit the GRUB settings|fix=
* <code>cmake <directory location of CMakeList.txt></code>
+
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.
* <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:
+
Re-generate the grub.cfg using one of these commands as root:
 
<pre>
 
<pre>
mkdir build
+
grub-mkconfig -o /boot/grub/grub.cfg
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 />
+
update-grub    # Used by Ubuntu-based distros, easy version of the 1st one.
 
 
 
 
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>
 
</pre>
 
'''List of other <code>make</code> options'''<br />
 
 
 
Here is a list of few other make commands:
 
{| class="wikitable"
 
|-
 
! Command !! description
 
|-
 
| <code>make install</code> || Move the compiled files into the directory specified in prefix
 
|-
 
| <code>make uninstall</code> || Remove the compiled files from the directory specified in prefix
 
|-
 
| <code>make clean</code> || Remove the files that are normally created by building the program.
 
|-
 
| <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===
 
* 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.
 
* 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.
 
* 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 in Linux world. Meta4/Super key are actually 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.
 
* 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.
 
* 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!
 
* 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.
 
 
==Improvements==
 
===Hardware===
 
'''Enable Threading Optimizations'''
 
{{++}} Improves the performance of the games when enabled, for some even dramatically.
 
{{Fixbox|1=
 
{{Fixbox/fix|NVIDIA Drivers}}
 
# 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|1=
+
'''Disable mouse acceleration in Xorg'''
{{Fixbox/fix|Mesa Driver (AMD, Nouveau, Intel etc.)}}
+
{{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)
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...'''
+
{{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 superuser/root and add the following script:
'''Notes'''
 
{{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|1=
 
{{Fixbox/fix|Edit the XOrg configuration file}}
 
Add <code>Option "NoLogo" "true"</code> under the NVidia Corporation '''VendorName''' in it's Xorg configuration file. Example:
 
 
<pre>
 
<pre>
Section "Device"
+
Section "InputClass"
    Identifier "Nvidia Card"
+
Identifier "My Mouse"
    Driver "nvidia"
+
Driver "libinput"
    VendorName "NVIDIA Corporation"
+
MatchIsPointer "yes"
    Option "NoLogo" "true"
+
Option "AccelProfile" "flat"
 
EndSection
 
EndSection
 
</pre>
 
</pre>
 +
Then restart the system or Xorg (In most distros it is {{key|Ctrl}}+{{key|Alt}}+{{key|Backspace ←}})
 
}}
 
}}
  
{{Fixbox|1=
+
'''Improve shutdown time in systemd'''
{{Fixbox/fix|Enable BFQ scheduler}}
+
{{Fixbox|description=Edit the system.conf|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'''
 
{{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>
 
# 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!
 
}}
 
 
 
'''Improve Shutdown Time In Systemd'''
 
{{Fixbox|1=
 
{{Fixbox/fix|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.
 
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.
 
# Edit as a root the system.conf file located in <code>/etc/systemd/</code>
 
# Edit as a root the system.conf file located in <code>/etc/systemd/</code>
Line 740: Line 427:
 
OR
 
OR
  
Install '''watchdog''' package and enable/run the watchdog service.
+
Install the '''watchdog''' package and enable/run the watchdog service.
 
}}
 
}}
  
'''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 752: Line 439:
  
 
===Software===
 
===Software===
{{Fixbox|1=
+
'''Use Feral Game Mode to improve the performance'''
{{Fixbox/fix|Optimize the program to your CPU when compiling}}
+
{{ii}} Most distros include 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].
{{++}} Improves the performance of the program after it's compiled.
+
{{++}} Supports custom scripts
{{--}} May not work on other system but yours.
+
{{++}} Developers can use it to implement in their games.
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.
+
Feral Game Mode is used by Feral Interactive to provide optimization in their games (since Rise Of The Tomb Raider) when being run, it provides changes to the following aspects:
 +
* 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 the following commands:
 +
<pre>
 +
sudo dpkg --add-architecture i386
 +
sudo apt update
 +
</pre>
 +
 
 +
{{ii}} In Debian unstable, one can optionally also add support for x32 with <code>sudo dpkg --add-architecture x32</code>, although [[List of Linux games for uncommon architectures|not all that many games support it]].
  
'''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|1=
+
'''List missing dependencies'''
{{Fixbox/fix|Use more cores to improve compilation time}}
+
{{Fixbox|description=List the missing dependencies|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.
+
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 limited support for the other distros such as Arch Linux, Fedora, etc. Mostly in terms of requiring dependencies to run the game or software.
  
'''Notes'''
+
The <code>ldd</code> command can be used to check which dependency it requires and if they are in your system.
* On ArchLinux-based distro you can edit the <code>MAKEFLAGS</code> from <code>makepkg.conf</code>. To apply it as default when using AUR.
+
<pre>
* 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.
+
ldd <binary file>
* By default it uses one core when compiling.
+
</pre>
}}
+
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 contains the file.
  
{{Fixbox|1=
+
The missing dependency checkup can be even easier with the inclusion of the <code>grep</code> command.
{{Fixbox/fix|Running Games on a Separate x Server}}
+
<pre>
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:
+
ldd <binary_file> | grep "Not found"
<pre>#! /bin/bash
 
DISPLAY=:1.0
 
xinit $cd '/YOURGAMEPATH' $* -- :1
 
 
</pre>
 
</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>
+
This will only look for the lines related to "Not found" - if nothing shows up then you have everything you need.
Press {{key|Ctrl|Alt|F7}} to return to the main desktop and {{key|Ctrl|Alt|F8}} to go back to the newly created one.
+
}}
 +
{{Fixbox|description=Improve compiling speed in AUR (Manjaro, EndeavourOS, Arch Linux)|fix=
 +
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, you need to put -j5 for example)
 +
{{ii}}Keep in mind that some programs require using one core for stability's sake.
 
}}
 
}}
  
{{Fixbox|1=
+
'''Create a script making the game use libraries from your system instead'''
{{Fixbox/fix|Make a native executable for your game}}
+
{{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 game's compatibility and sometimes even the performance on your Linux system. Can be useful in older Linux games that rely on older SDL interfaces 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 the 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 libraries the game uses and install them if needed. Each game has its own library folder which may help you learn this.
 
}}
 
}}
  
==Common Fixes==
+
==Common fixes==
'''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>
+
===Hardware===
{{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=The Nvidia DKMS driver won't install after updating it|fix=
{{Fixbox|1=
 
{{Fixbox/fix|Set a library path}}
 
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 in NVIDIA driver'''
 
{{Fixbox|1=
 
{{Fixbox/fix|Enable Force Full Composition Pipeline}}
 
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 <code>/etc/X11/xorg.conf.d/</code> while renaming it to <code>20-nvidia.conf</code>.
 
 
 
If using KWin as a desktop composer, add export <code>KWIN_TRIPLE_BUFFER=1</code> in <code>/etc/profile.d/kwin.sh</code> 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.
 
}}
 
{{Fixbox|1=
 
{{Fixbox/fix|XRandr|ref={{cn|date=February 2017}}}}
 
# Install <code>xrandr</code> using your linux distribution's package manager.
 
# Run <code>xrandr</code> from a terminal emulator and find the name of the monitor you want to set as the primary (i.e. "HDMI-0").
 
# Run <code>xrandr --output <name> --primary</code>.
 
 
 
'''Notes'''
 
{{++}} To automate this when the system starts, prepend the command to your <code>~/.xinitrc</code>-file, or your desktop environment's equivalent.
 
}}
 
 
 
{{Fixbox|1=
 
{{Fixbox/fix|The NVIDIA DKMS driver won't install after updating it}}
 
 
{{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 850: Line 517:
 
'''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.
 
}}
 
}}
  
{{Fixbox|1=
+
{{Fixbox|description=Set up a primary monitor in multi-monitor setup|ref={{cn|date=February 2017}}|fix=
{{Fixbox/fix|X server Permission error Debian/Ubuntu|ref={{cn|date=February 2017}}}}
+
# Install <code>xrandr</code> using your linux distribution's package manager.
# run <pre># dpkg-reconfigure x11-common</pre>
+
# Run <code>xrandr</code> from a terminal emulator and find the name of the monitor you want to set as the primary (i.e. "HDMI-0").
# Set: Move down and select "Anybody"
+
# Run <code>xrandr --output <name> --primary</code>.
 +
 
 +
'''Notes'''
 +
{{++}} To automate this when the system starts, prepend the command to your <code>~/.xinitrc</code>-file, or your desktop environment's equivalent.
 
}}
 
}}
{{Fixbox|1=
+
 
{{Fixbox/fix|X server Permission error Any|ref={{cn|date=February 2017}}}}
+
{{Fixbox|description=No sound|ref={{cn|date=February 2017}}|fix=
# open <pre>/etc/X11/Xwrapper.config</pre>
+
Open the Terminal and type as root <code>gpasswd -a <username> audio</code>, if that did not work then:
# Set <pre>allowed_users=root or console</pre> to  <pre>allowed_users=anybody</pre>
+
# Open the <code>group</code> file as root in a text editor located in '''/etc''' folder.
}}
 
{{Fixbox|1=
 
{{Fixbox/fix|No sound|ref={{cn|date=February 2017}}}}
 
# Open the following file as root in a text editor <pre>/etc/group</pre>
 
 
# Find the following line <pre>audio:x:29:pulse</pre>
 
# Find the following line <pre>audio:x:29:pulse</pre>
# Add a comma and your username ex: <pre>audio:x:29:pulse,linus</pre>
+
# Add a comma and your username ex: <pre>audio:x:29:pulse,tux</pre>
OR
 
# Open the Terminal and type as root <pre>gpasswd -a <username> audio</pre>
 
 
}}
 
}}
'''Fullscreen problems/cursor won't disappear'''
+
 
{{Fixbox|1=
+
{{Fixbox|description=Crackling sound/audio delay in PulseAudio||fix=
{{Fixbox/fix|Fullscreen problems/cursor won't disappear|ref={{cn|date=February 2017}}}}
+
Type in the terminal this command to stop and then start PulseAudio at the same time:
Running a very light window manager may fix some problems with fullscreen games not going fullscreen and will make the mouse courser hide when in front of a full screen window.
+
<pre>
Openbox is a very light manager that is available for many distributions.
+
pulseaudio -k && pulseaudio --start
#Install openbox "sudo apt-get install openbox" or the equivalent for your distribution
+
</pre>
# change  <pre>$cd '/YOURGAMEPATH'</pre>  to <pre>$cd 'openbox'</pre>
+
{{ii}}You can bind this command as a keyboard command in your DE.
 
}}
 
}}
  
 +
===Software===
 +
{{Fixbox|description=Screen tearing|fix=
 +
{{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 the 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}}
 
{{References}}
 +
<references />
  
 
[[Category:Guide]]
 
[[Category:Guide]]

Latest revision as of 17:34, 26 November 2023

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

Linux is the open-source Unix-like operating system based around the kernel of the same name created by Linus Torvalds and released on September 17, 1991. As the kernel itself lacks many user-level tools, it is often paired with free and open-source software (FOSS) provided by the GNU Project as well as other popular user-level applications, and packaged as a "distribution" ("distro" for short). As a result of its reliance on tools provided by the GNU Project, the operating system consisting of the kernel and bundled user-level tools is sometimes controversially referred to as GNU/Linux as well. The operating system sees ongoing development and due to its free and open-source nature is often used as the base on which other services or platforms are built on, such as Stadia and Steam Deck.

Users wanting to find a distribution of Linux usually end up following a few general guidelines:

  • The strength and weakness of Linux is its freedom of user choice.
  • There are no best distros; it all depends on the user's need. Users commonly switch between distros ("distro hopping") until settling on one.
  • Always refer to the documentation of the chosen distro in case there is a problem. It's advisable to check the ArchWiki regardless of the distro as it is broadly and succinctly written. In addition, reaching out to the distro's community for support is always an option.
  • Use virtual machines to test Linux distributions without replacing the existing operating system on the physical machine.
    • To test a distribution installed on a virtual machine on the physical machine itself without replacing the existing operating system or dual booting, a tool called Ventoy can be used to create a bootable vDisk on a USB flash stick.

Key points

Wide variety of distributions (distros) available, allowing unparalleled user choice and customizability.
Some native Linux games may perform better or worse when compared to other operating systems.
Many Windows games can be played on Linux using Proton or Wine.

Resources

DistroWatch - a page dedicated to Linux distributions
Linux Journey - a beginner-friendly page about learning Linux in general
ProtonDB - a crowdsourced database of Proton games compatibility
Phoronix - a website dedicated to hardware and benchmarking in Linux
OpenBenchmarking and FlightlessMango - lists of user-made benchmarks in Linux
ArchWiki and Gentoo Wiki - wikis intended for their respective distro but is useful for others as well

Communities

Gaming On Linux - a large community dedicated to gaming on Linux
/r/linux_gaming - Linux gaming subreddit

Distributions

There are two types of release models for Linux distros.

Fixed release

Offers stable packages.
Most distros are beginner-friendly.
Very little maintenance.
Package versions are usually tied to the distro version, so the OS needs to be updated to get the latest packages.
Stable packages typically don't have the newest features. This is especially important in the case of GPU drivers.
This issue is alleviated by the fact that the vast majority of user-facing applications are now available as a Flatpak, Snap or and AppImage which allow you to run the latest version of the application regardless of what exact version of underlying OS you have.
Manual intervention is required to add user-made repositories in some distros.
Updating a distro to the latest version doesn't normally require a fresh install, but can take up to several hours.
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 and Ubuntu flavours Debian GNOME, KDE Plasma, LXQt, Budgie, MATE, Xfce, UKUI 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. Ubuntu non-LTS is updated more often and contains newer packages and functionality. Ubuntu flavours offer different desktop environments with the same compatibility as Ubuntu.
Pop!_OS Ubuntu GNOME 6 months same as Ubuntu[fr note 3] An Ubuntu-based distro created and maintained by System76 which utilizes its own repository. Unlike Ubuntu, it includes much more recent drivers for graphics cards, the installer ships with Nvidia support, and it's generally more recommended for beginners.
Linux Mint Ubuntu LTS 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. Packages may be much older compared to Ubuntu LTS releases. The main advantage of Linux Mint is the built-in kernel upgrader.
KDE Neon Ubuntu LTS KDE Plasma Up to a year same as Ubuntu[fr note 3] A distro created by the KDE community. Compared to Kubuntu (A KDE Plasma-flavoured Ubuntu), it provides the latest version of the KDE Plasma desktop environment, while simultaneously being able to use packages from Ubuntu LTS.
Fedora and Fedora Spins Independent GNOME, KDE Plasma, XFCE, MATE, Cinnamon, LXDE, LXQT, SUGAR 6 months Fedora is a very stable, independent distribution sponsored by Red Hat Enterprise. GNOME is its default desktop environment, but Fedora Spins offer many alternatives. It is as user-friendly as Ubuntu but tends to be more willing to move to new technologies. Spins offer different desktop environments, but when it comes to compatibility, they are the same as Fedora.
openSUSE Leap Independent GNOME, KDE Plasma, XFCE 1 year for each new release Leap uses source from SUSE Linux Enterprise (SLE), which gives it a great level of stability. openSUSE has YaST, which is a user-friendly GUI to install packages, manage the system, and install Nvidia proprietary drivers in a simple way.
SteamOS Arch Linux(starting with version 3.0) Debian(old versions)[1] KDE Plasma Varies Steam Linux distribution made by Valve Corporation specifically for the Steam Machine or couch gaming. It currently provides the latest stable Linux kernel along with newer GPU drivers and an option to act as a desktop system. It may be behind in terms of package updates.
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 Support is not official, but the distros are similar enough that everything which works for Ubuntu will work in Pop!_OS.

Rolling release

Provides the latest version of packages as soon as they're released by the upstream developers.
No distro upgrade procedure is required, as most distros have only one version.
A package update may cause stability issues, as extensive testing is usually limited.
No currently-listed rolling release distribution has official support from any digital distribution store, due to the distros' reliance on .rpm binaries instead of .deb.
Some distros offer a semi-rolling release, meaning that packages will be tested before releases.
Distribution Based On Desktop(s)[rr note 1] Description
Arch Linux Independent GNOME, KDE Plasma, XFCE, MATE, Cinnamon, LXDE, LXQT, SUGAR, Deepin, Budgie, UKUI Arch Linux is a distribution designed for advanced users looking to customize every aspect of their system, building from the ground up rather than the top down. There is a huge number of packages available through the AUR (Arch User Repository). Arch Linux does not have a graphical installer and requires research on the user's part to properly install.
If you're new to Linux, Arch most definitely should not be your first choice.
Manjaro Arch Linux GNOME, KDE Plasma, Xfce Manjaro is based on Arch Linux and offers a user-friendly experience out of the box. By default, it comes with Nvidia's proprietary drivers, which makes it straightforward to install. It uses the Pamac app to install native, AUR, Flatpak, and Snap packages in a simple way.
openSUSE Tumbleweed Independent GNOME, KDE Plasma, XFCE A rolling version of openSUSE which uses automated testing to provide more stability than many other rolling releases. When used with BTRFS on a root partition, snapshots are taken before and after updates, allowing easy restores if there is an update breakage.
Solus Independent Budgie, GNOME, MATE, KDE Plasma Despite following the rolling release model, it provides stable packages and features great hardware compatibility with any GPU. It includes a special tool called Linux Steam Integration (LSI) which allows users to easily customize Steam, ranging from using the libraries from the system (native mode) or a forced 32-bit mode. Only stable releases of library and software are added, with very few exceptions—such as Nvidia's Vulkan beta drivers.
  1. Default options are marked in bold

Desktop environments

By default, Linux is a text/command-line-based operating system. However, the Linux community has created a variety of desktop environments to offer a user-friendly GUI experience. Most include their own basic software for common use cases, such as a file explorer or word processor.

As a rule of thumb, environments with heavy RAM use typically add another 500 MB to the operating system's RAM requirements (which usually range from 500 MB to 4 GB), compared to environments with light RAM use.

Name RAM use Description
GNOME Heavy

One of the oldest desktop environments that is still continuously updated. Offers the most radical departure from the traditional Windows-style paradigm of start-menu-and-a-taskbar.
It has historically been considered slow but has made huge strides in improving the fluidity and responsiveness in the last few years, particularly on gaming-grade machines. Offers a variety of customizations via GTK3/4 themes and Gnome Extensions.

KDE Plasma Heavy

The first major comprehensive desktop environment released for Linux, which sees regular maintenance and feature updates. Out of the box, it offers a familiar Windows-like experience but also allows nearly limitless ability to customize the functionality and look and feel of the desktop.

Budgie Heavy

Created by a Solus developer and currently maintained by Solus Team. It serves as an alternative to GNOME with a much more desktop-like interface, which bears similarities to modern Windows.

Cinnamon Heavy

Created by the Linux Mint Team, Cinnamon offers an experience that is very similar to Windows 7.

XFCE Light

Starting off as a clone of a Unix-like desktop environment called CDE, it became its own with a Windows XP-like appearance and light memory usage. XFCE is well-suited for low-end hardware and people who like to settle on one user experience and never change it (while still getting the security and maintenance updates).

MATE Light

MATE spawned as a spiritual successor to GNOME 2 after a controversial change in GNOME 3. It is recommended for Windows and Mac users while providing its own feature set such as mouse hover audio previewing.

LXDE Light

LXDE (Lightweight X11 Desktop Environment) is a lightweight and fast, feature-rich desktop environment. It is designed to be user-friendly and slim while keeping resource usage low. LXDE strives to be modular, so each component can be used independently with few dependencies.

The Original team that created LXDE has largely moved on to LXQT due to controversial changes in the GTK framework, however, a community of loyal users and developers continues to use and maintain it.
LXQT Light

Despite its limited features (as it is essentially a rewrite of LXDE with a different UI framework) along with the lack of a compositor, it is perfectly suited for the lowest-end hardware.

Kernel

Wikipedia page
It is important to update the Linux kernel as new versions provide security updates, bug fixes, better performance, and support for hardware. A distro's repository contains all the supported versions for that distro.

There are two main releases of the official Linux kernel:

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

Despite these differences, 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 that add features and improvements. These kernels may or may not improve one's gaming experience, and may require DKMS (dynamic kernel module support) versions of drivers and headers to make hardware usable with multiple kernels.

The most notable releases:

For help with installing different kernels on a distro, consult the kernel's official website or the distro's knowledge base.
It is advised to keep the current official kernel in case of issues.
UKUU is a useful utility for swapping kernels on Ubuntu (and Ubuntu derivatives).

Microcode

ArchWiki article

It is vital to install the microcode for the CPU as the manufacturer provides security and stability updates, although most often your distribution will push those updates directly to you. Most distributions use either a package manager or some kind of firmware/drivers manager to update the microcode.

Hardware

Graphics

Generally speaking, if you use AMD graphics, you're likely to have a flawless experience as AMD makes open-source drivers available and Linux developers integrate them directly into the kernel.
Generally speaking, if you use Nvidia graphics, you're likely to have to make some independent efforts to either install or enable Nvidia drivers, as Nvidia does not offer any open-source drivers which makes the distribution maintainers hesitant when it comes to packaging or enabling Nvidia drivers by default.
Nvidia's drivers are also of worse quality than either AMD's own Linux drivers or Nvidia's Windows driver, with features that exist in the Windows drivers missing in the same card's Linux driver. This is entirely Nvidia's choice, and Linux developers and maintainers can do almost nothing to rectify the consequences of Nvidia's behavior.
ArchWiki's ATI and Catalyst Article
ArchWiki's AMDGPU/AMDGPU Pro Article
ArchWiki's Nvidia and Nouveau Article
ArchWiki's Intel Graphics Article
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 Yes (NVK for Kepler and up)
Proprietary Nvidia Nvidia GLX From Kepler based GPUs to recent Yes
Nvidia 390 Nvidia 390 GLX From Fermi based GPUs to recent No
Nvidia 340 Nvidia 340 GLX For 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 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 for Gen9 and up, HASKV Gen7/Gen8)
Xorg modesetting
VIA/S3 Open Source OpenChrome Mesa (GLX and DRI) Unichrome series, Chrome9 2D only No
Proprietary VIA Unified GFX Chrome9 No
3DFX Open Source tdfx MesaGL Voodoo3 and up, Voodoo 1 & 2 2D only No
ARM Open Source Panfrost Mesa (GLX and DRI) Mali Midgard, Bifrost and Valhall Yes (PanVK)
Qualcomm Open Source Freedreno Mesa (GLX and DRI) Adreno A2xx-A7xx Yes (Turnip)
Broadcom Open Source V3D Mesa (GLX and DRI) VideoCore 5 on Raspberry Pi 4 Yes
Imagination Technologies Open Source pvrsrvkm Mesa (GLX and DRI) PowerVR Rogue Yes

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

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

Generally, AMD/ATI users should use the open source driver as it provides the best performance and support compared to the proprietary ones, while Nvidia users should stick to the proprietary ones. There are some things to remember:

  • Try not to install drivers from the GPU manufacturer's website unless forced to, as distro maintainers package the driver to be offered from the package manager.
  • If forced to use Catalyst, Nvidia 173, or Nvidia 96 drivers, one must downgrade Xorg to the last supported version.
  • Before using the open-source driver one must install LLVM and Linux Firmware packages.

Installing drivers

Ubuntu (and Ubuntu-derived distros such as Mint, Pop!_OS, and 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.

Fedora

To install Nvidia drivers on Fedora, it is usually sufficient to install the latest Nvidia drivers from the software center. Simply search for Nvidia and install the driver with the highest version number.

If you have a more complex setup, such as an Optimus laptop, or the above instructions do not work for you, you can also use 'NVIDIA Auto Installer for Fedora Linux'. It is a set of scripts that can handle both normal installs and more advanced configurations.

To use it, execute the following in the terminal:

sudo dnf install dnf-plugins-core -y && sudo dnf copr enable t0xic0der/nvidia-auto-installer-for-fedora -y && sudo dnf install nvautoinstall -y

Once installed, type in nvautoinstall into your terminal. The program will show you the options you can use.

The most basic installation is performed by issuing the following command:

sudo nvautoinstall rpmadd && sudo nvautoinstall drive.

To install support for Vulkan API (will be functional only if you have a Vulkan-capable GPU and driver), execute the following command sudo dnf install vulkan-loader vulkan-loader.i686

Instructions
  1. Launch the terminal and update/reboot system: sudo dnf update && reboot
  2. Launch the terminal and add the official repos: sudo dnf install fedora-workstation-repositories
  3. Enable the Nvidia driver repo: sudo dnf config-manager --set-enabled rpmfusion-nonfree-nvidia-driver
  4. Reboot, then verify the addition of the repository using the following command: sudo dnf repository-packages rpmfusion-nonfree-nvidia-driver info
  5. Open the software app, select Add-ons > Hardware Drivers > NVIDIA Linux Graphics Driver > Install

If you used nvautoinstall above, you can also install Vulkan API via sudo nvautoinstall vulkan.

openSUSE

Please refer to the openSUSE User Documentation Project for instructions.

Optimus support

Nvidia Optimus Linux guide
Optimus support in Nvidia GPUs is still considered to be troublesome.

In the case of laptops that have Nvidia Optimus support, it is recommended to have PRIME enabled, which can be done by installing an additional package. Follow the distro’s documentation to set this up.

AMD users only require running the game with the DRI_PRIME=1 command.

Audio

ArchWiki page

Linux has several sound systems available. The most common one is PulseAudio, but a new system called PipeWire is looking to supersede and consolidate all previous systems into one. For most games, PulseAudio will work.

In the case of MIDI, installing the Timidity or Fluidsynth package is required along with either a SoundFont or the FreePats package. Depending on the distro, it will either be set up automatically or require manual intervention.

Input devices

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

Linux supports a vast array of input devices, including legacy hardware. Many programs exist for gaming peripherals in case further customization is needed.

General

  • Piper - Configure gaming mice

There are some other ones made for products from specific companies:

Razer

Roccat

Controller support

All DirectInput and XInput controllers are supported. In case of issues with XInput controllers, it is recommended to install xboxdrv.

If dealing with a game that has very limited or no controller support at all, the AntiMicroX program offers a solution. It allows the user to bind keyboard and mouse inputs to the controller. However, it currently only works with Xorg.

Additionally, a user can use Steam Input in the Steam app to configure their controller.

Other

Disk partitioning

ext4 is the default file system used by most Linux distributions.
While the file system used on Windows, NTFS, is supported, it is generally not recommended to use as it may cause compatibility issues.

The most important aspect of disk partitioning is often the swap partition; it generally acts as RAM replacement. The absence of it will cause software to shut down due to low memory, and it is also used to offload memory from RAM when entering power-saving modes such as Hibernation or Sleep. The size of the swap disk depends on how much RAM is available in the computer; if less than 8 GB of RAM, increase the swap disk, or if more than 8 GB of RAM, decrease the swap disk.

It is generally recommended to partition disks in this particular order:

  1. / (Root)
  2. Home
  3. Swap disk

A user 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.

Display server

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

Linux utilizes a display server system in order to present a graphical environment with which the user can interface. The two prominent ones are Wayland and Xorg.

While Wayland offers more a modern and secure backend, Xorg has legacy support and will generally be more compatible than Wayland. In addition, Wayland is still in active development and is missing features that would provide a gaming experience in parity with Xorg.

Benchmarking

ArchWiki article

Benchmarking in Linux can be achieved with the Phoronix Test Suite. It is easy to use despite not offering a user-friendly GUI. The biggest advantage is it saves the information as a webpage, making comparing tests much easier.

Steam users can use Valve's voglpref, which requires Steam.

PCI passthrough

ArchWiki page
/r/VFIO Reddit page

Since Linux 3.9 and recent QEmu versions, it is possible to passthrough a graphics card, motherboard, or even other hardware into a virtual machine. The main advantage of it is having a native GPU working on Windows in a virtual machine, which allows you to play Windows games on it while using Linux.

There are some disadvantages:

  • A second GPU for PCI passthrough is required
  • GPU must support UEFI
  • CPU must support hardware virtualization and IOMMU
  • Motherboard must support IOMMU
  • It is not an easy process for beginners

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 the Tools tab).
Humble Bundle No Yes
  • The store does not provide information about required dependencies for games.
GOG.com No Yes
  • The game's store page shows the required dependencies for games.
  • Uses MojoSetup as an installer.
  • Running the start.sh script may cause issues. Run the binary executable directly to bypass issues.
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 Yes (Optional) 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 (50 Linux games total) as of November 2023.

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, ZombieLoad, etc. Use it with discretion.
Outside of specific microbenchmarks, disabling the default mitigations should result in an average performance increase of 5-10%. The following parameter used 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 superuser/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 it is 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 the 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 include 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 (since Rise Of The Tomb Raider) when being run, it provides changes to the following aspects:

  • 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 the following commands:

sudo dpkg --add-architecture i386
sudo apt update
In Debian unstable, one can optionally also add support for x32 with sudo dpkg --add-architecture x32, although not all that many games support it.

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 limited support for the other distros such as Arch Linux, Fedora, etc. Mostly in terms of requiring dependencies to run the game or software.

The ldd command can be used to check which dependency it requires 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 contains 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" - if nothing shows up then you have everything you need.

Improve compiling speed in AUR (Manjaro, EndeavourOS, 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, you need to put -j5 for example)

Keep in mind that some programs require using one core for stability's sake.

Create a script making the game use libraries from your system instead

Make a native executable for your game
This method may improve the game's compatibility and sometimes even the performance on your Linux system. Can be useful in older Linux games that rely on older SDL interfaces such as Majesty.
  1. Create an empty text file and open it with any text editor.
  2. Add the 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 libraries the game uses and install them if needed. Each game has its own library folder which may help you learn this.

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 the 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 the 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

  1. Debian releases - last accessed on 2021-06-26