https://wiki.archlinux.org/api.php?action=feedcontributions&user=Zekesonxx&feedformat=atomArchWiki - User contributions [en]2024-03-29T13:12:56ZUser contributionsMediaWiki 1.41.0https://wiki.archlinux.org/index.php?title=HDR_monitor_support&diff=793056HDR monitor support2023-11-22T22:29:22Z<p>Zekesonxx: link better HDR game list page</p>
<hr />
<div>[[Category:Gaming]]<br />
[[Category:Graphics]]<br />
[[Category:Graphical user interfaces]]<br />
[[ja:HDR ビデオの再生]]<br />
{{Related articles start}}<br />
{{Related|Steam}}<br />
{{Related|Gaming}}<br />
{{Related|Gamescope}}<br />
{{Related articles end}}<br />
<br />
This page will serve as a guide to the current state of HDR monitor support on Linux. To better understand the challenges involved you can watch the video in [https://www.phoronix.com/news/AMD-2022-Linux-HDR-Display-Hard this article].<br />
<br />
== HDR video support ==<br />
<br />
HDR support on Linux is not implemented yet in the display servers, though it is being worked on:<br />
<br />
* [[X.org]] (and Xorg clients): no support for passing HDR metadata to the display, see https://gitlab.freedesktop.org/xorg/xserver/-/issues/1037#note_521100<br />
* [[Wayland]] (and Wayland clients): no support for passing HDR metadata to the display, see https://gitlab.freedesktop.org/wayland/weston/-/issues/467 and https://gitlab.freedesktop.org/wayland/wayland-protocols/-/merge_requests/14<br />
* [[Wikipedia:Direct Rendering Manager|DRM]] clients can directly pass HDR metadata, but this is not available from regular userspace clients, only specialized software can use it: https://gitlab.freedesktop.org/mesa/drm/-/blob/main/include/drm/drm_mode.h#L809<br />
* [[COSMIC]] will include support for HDR.<br />
<br />
== HDR gaming support ==<br />
<br />
=== Requirements ===<br />
# Use an HDR capable display<br />
# Use an AMD GPU. HDR is currently only supported on [[AMDGPU]].<br />
# Use [[DXVK]] version 2.1 or later<br />
# Use [https://github.com/HansKristian-Work/vkd3d-proton/releases VKD3D-Proton] version 2.8 or later<br />
# Use either Proton 8.0, Experimental, or Proton GE version 44 and higher. All come packaged with sufficient DXVK and VKD3D versions.<br />
# Use a linux kernel with [https://gitlab.freedesktop.org/JoshuaAshton/linux-hdr/-/tree/josh-hdr-colorimetry/ Josh Ashton Kernel Patches]<br />
#* {{aur|linux-fsync-nobara-bin}}<br />
#* {{Pkg|linux-zen}} * Unconfirmed<br />
#* compile a kernel yourself [[Kernel/Traditional compilation]]<br />
# [[Steam]]<br />
# [https://www.pcgamingwiki.com/wiki/List_of_games_that_support_high_dynamic_range_display_(HDR) A game that supports HDR]<br />
<br />
=== Gamescope Session Configuration ===<br />
<br />
Since currently neither Wayland nor X11 offer an API that fully supports HDR, your games also will not be able to display correct HDR content on them. Valve's Steam compositor [[gamescope]] does offer experimental HDR support. Following these steps will allow you to try out Valve's Steam client running through the HDR capable gamescope.<br />
<br />
# Install {{Pkg|gamescope}}<br />
# Install {{aur|gamescope-session-steam-git}} <br />
# You may create the optional config file {{ic|~/.config/environment.d/gamescope-session.conf}} with the below content<br />
# Update the resolution values to the correct ones. You can list your displays by running {{ic|xrandr --query}}<br />
#* You may need to set the Display connector if it doesn't pick the right one by default.<br />
<br />
if [ "$XDG_SESSION_DESKTOP" = "gamescope" ] ; then<br />
SCREEN_WIDTH=1920<br />
SCREEN_HEIGHT=1080<br />
CONNECTOR=*,eDP-1<br />
<br />
CLIENTCMD="steam -gamepadui -steamos3 -steampal -steamdeck -pipewire-dmabuf"<br />
GAMESCOPECMD="/usr/bin/gamescope --hdr-enabled --hdr-itm-enable \<br />
--hide-cursor-delay 3000 --fade-out-duration 200 --xwayland-count 2 \<br />
-W $SCREEN_WIDTH -H $SCREEN_HEIGHT -O $CONNECTOR"<br />
fi<br />
<br />
<br />
=== Start gamescope-session === <br />
You can now start {{ic|gamescope}} from your login manager or a terminal.<br />
<br />
==== Via a login manager ====<br />
Log out and select the {{ic|Steam Big Picture}} in your login manager and log in.<br />
<br />
==== From the command line ====<br />
# Go to a new tty by pressing {{ic|Ctrl+Alt+F2}}<br />
# Log in and run {{ic|gamescope-session-plus steam}} to start the [https://github.com/ChimeraOS/gamescope-session standalone steam session] in HDR. <br />
#* If networking does not work you can fix it by installing and enabling [[NetworkManager]].<br />
<br />
=== Configure Steam ===<br />
# In the general settings, under Display, you should now see HDR settings. Enable HDR and Experimental HDR Support.<br />
# Select an HDR compatible game and click on the cog next to it<br />
# Set Compatibility to Force Proton 8.0 or Proton Experimental<br />
# Set Game Resolution to match your monitor otherwise it will launch at Steam Deck native resolution<br />
# Click Play to start the game. Check the in-game settings to see if the HDR setting is available and enable it<br />
# To switch back to your normal session, select Power and Switch to desktop mode from the Steam menu<br />
<br />
=== References ===<br />
* https://github.com/ChimeraOS/gamescope-session/tree/main<br />
* https://www.reddit.com/r/linux_gaming/comments/10m2gyx/guide_alpha_test_hdr_on_linux/</div>Zekesonxxhttps://wiki.archlinux.org/index.php?title=Chromium/Tips_and_tricks&diff=588546Chromium/Tips and tricks2019-11-10T21:13:43Z<p>Zekesonxx: /* Dark mode */ fix template rendering</p>
<hr />
<div>[[Category:Web browser]]<br />
[[Category:Google]]<br />
[[ja:Chromium 設定]]<br />
[[zh-hans:Chromium/Tips and tricks]]<br />
{{Merge|Chromium#Tips and tricks|The main page is short enough to contain everything in one place.}}<br />
<br />
The following tips and tricks should work for both Chromium and Chrome unless explicitly stated.<br />
<br />
== Browsing experience ==<br />
=== chrome:// URLs ===<br />
A number of tweaks can be accessed via Chrome URLs. See '''chrome://chrome-urls''' for a complete list.<br />
<br />
* '''chrome://flags''' - access experimental features such as WebGL and rendering webpages with GPU, etc.<br />
* '''chrome://extensions''' - view, enable and disable the currently used Chromium extensions.<br />
* '''chrome://gpu''' - status of different GPU options.<br />
* '''chrome://sandbox''' - indicate sandbox status.<br />
* '''chrome://version''' - display version and switches used to invoke the active {{ic|/usr/bin/chromium}}.<br />
<br />
An automatically updated, complete listing of Chromium switches (command line parameters) is available [http://peter.sh/experiments/chromium-command-line-switches/ here].<br />
<br />
=== Chromium task manager ===<br />
Shift+ESC can be used to bring up the browser task manager wherein memory, CPU, and network usage can be viewed.<br />
<br />
=== Chromium overrides/overwrites Preferences file ===<br />
<br />
If you enabled syncing with a Google Account, then Chromium will override any direct edits to the Preferences file found under {{ic|~/.config/chromium/Default/Preferences}}. To work around this, start Chromium with the {{ic|--disable-sync-preferences}} switch:<br />
$ chromium --disable-sync-preferences<br />
<br />
If Chromium is started in the background when you login in to your desktop environment, make sure the command your desktop environment uses is:<br />
$ chromium --disable-sync-preferences --no-startup-window<br />
<br />
=== Search engines ===<br />
Make sites like [https://wiki.archlinux.org wiki.archlinux.org] and [https://en.wikipedia.org wikipedia.org] easily searchable by first executing a search on those pages, then going to ''Settings > Search'' and click the ''Manage search engines..'' button. From there, "Edit" the Wikipedia entry and change its keyword to '''w''' (or some other shortcut you prefer). Now searching Wikipedia for "Arch Linux" from the address bar is done simply by entering "'''w arch linux'''".<br />
<br />
{{Note| Google search is used automatically when typing something into the URL bar. A hard-coded keyword trigger is also available using the '''?''' prefix.}}<br />
<br />
=== Tmpfs ===<br />
==== Cache in tmpfs ====<br />
{{Note|Chromium stores its cache separate from its browser profile directory.}}<br />
<br />
To limit Chromium from writing its cache to a physical disk, one can define an alternative location via the {{ic|1=--disk-cache-dir=/foo/bar}} flag:<br />
$ chromium --disk-cache-dir=/tmp/cache<br />
<br />
Cache should be considered temporary and will '''not''' be saved after a reboot or hard lock. Alternatively, use:<br />
<br />
{{hc|/etc/fstab|2=<br />
tmpfs /home/''username''/.cache tmpfs noatime,nodev,nosuid,size=400M 0 0<br />
}}<br />
<br />
==== Profile in tmpfs ====<br />
Relocate the browser profile to a [[Wikipedia:Tmpfs|tmpfs]] filesystem, including {{ic|/tmp}}, or {{ic|/dev/shm}} for improvements in application response as the entire profile is now stored in RAM.<br />
<br />
Use an active profile management script for maximal reliability and ease of use.<br />
<br />
{{AUR|profile-sync-daemon}} is such a script and is directly available from the [[AUR]]. It symlinks and syncs the browser profile directories to RAM. Refer to the [[Profile-sync-daemon]] wiki article for additional information on it.<br />
<br />
===Launch a new browser instance===<br />
When you launch the browser, it first checks if another instance using the same data directory is already running. If there is one, the new window is associated with the old instance. If you want to launch an independent instance of the browser, you must specify separate directory using the {{ic|--user-data-dir}} parameter:<br />
<br />
$ chromium --user-data-dir=''/path/to/some/directory''<br />
<br />
{{Note|The default location of the user data is {{ic|~/.config/chromium/}}.}}<br />
<br />
===Directly open *.torrent files and magnet links with a torrent client===<br />
<br />
By default, Chromium downloads {{ic|*.torrent}} files directly and you need to click the notification from the bottom-left corner of the screen in order for the file to be opened with your default torrent client. This can be avoided with the following method:<br />
<br />
* Download a {{ic|*.torrent}} file.<br />
* Right-click the notification displayed at the bottom-left corner of the screen.<br />
* Check the "''Always Open Files of This Type''" checkbox.<br />
<br />
See [[xdg-open]] to change the default assocation.<br />
<br />
=== Touch Scrolling on touchscreen devices ===<br />
You may need to specify which touch device to use. Find your touchscreen device with {{ic| xinput list}} then launch Chromium with the {{ic|1=--touch-devices='''x'''}} parameter, where "'''x'''" is the id of your device. {{Note|If the device is designated as a slave pointer, using this may not work, use the master pointer's ID instead.}}<br />
<br />
=== Reduce memory usage ===<br />
<br />
By default, Chromium uses a separate OS process for each ''instance'' of a visited web site. [https://www.chromium.org/developers/design-documents/process-models#Supported_Models] However, you can specify command-line switches when starting Chromium to modify this behaviour.<br />
<br />
For example, to share one process for all instances of a website:<br />
<br />
$ chromium --process-per-site<br />
<br />
To use a single process model:<br />
<br />
$ chromium --single-process<br />
<br />
{{Warning|The single-process model is discouraged because it is unsafe and may contain bugs not present in other models.[https://www.chromium.org/developers/design-documents/process-models#TOC-Single-process]}}<br />
<br />
In addition, you can suspend or store inactive Tabs with extensions such as [https://chrome.google.com/webstore/detail/tab-suspender/fiabciakcmgepblmdkmemdbbkilneeeh?hl=en Tab Suspender], [https://github.com/deanoemcke/thegreatsuspender/ The Great Suspender(GPLv2)] and [https://chrome.google.com/webstore/detail/onetab/chphlpgkkbolifaimnlloiipkdnihall?hl=en OneTab].<br />
<br />
=== User Agent===<br />
<br />
The User Agent can be arbitrarily modified at the start of Chromium's base instance via its {{Ic|<nowiki>--user-agent="[string]"</nowiki>}} parameter.<br />
<br />
=== DOM Distiller ===<br />
Chromium has a similar reader mode to Firefox. In this case it's called DOM Distiller, which is an [https://github.com/chromium/dom-distiller open source project].<br />
All you need to do is run Chromium with the {{Ic|--enable-dom-distiller}} flag to unlock the "Distill page" menu option or you can even make it [[#Making flags persistent|persistent]].<br />
Not only does DOM Distiller provide a better reading experience by distilling the content of the page, it also simplifies pages for print. Even though the latter checkbox option has been removed from the print dialog, you can still print the distilled page, which basically has the same effect.<br />
<br />
Running the upper flag, you will find a new "Distill Page" menu item.<br />
<br />
You can reach the internal debug page by visiting {{Ic|chrome://dom-distiller}}<br />
<br />
=== Forcing specific GPU ===<br />
<br />
In multi-GPU systems, Chromium automatically detects which GPU should be used for rendering (discrete or integrated). This works 99% of the time, except when it doesn't - if a unavailable GPU is picked (for example, discrete graphics on VFIO GPU passthrough-enabled systems), {{ic|chrome://gpu}} will complain about not being able to initialize the GPU process. On the same page below '''Driver Information''' there'll be multiple GPUs shown (GPU0, GPU1, ...). There's no way to switch between them in a user-friendly way, but you can read the device/vendor IDs present there and configure Chromium to use a specific GPU with flags:<br />
<br />
$ chromium --gpu-testing-vendor-id=0x8086 --gpu-testing-device-id=0x1912<br />
<br />
...where {{ic|0x8086}} and {{ic|0x1912}} is replaced by the IDs of the GPU you want to use (as shown on the {{ic|chrome://gpu}} page).<br />
<br />
=== Import bookmarks from Firefox ===<br />
<br />
To ease the transition, you can import bookmarks from [[Firefox]] into Chromium.<br />
<br />
Navigate Chromium to {{ic|chrome://settings/importData}}<br />
<br />
If Firefox is already installed on your computer, you can directly import bookmarks as well as many other things from Firefox.<br />
<br />
Make sure '''Mozilla Firefox''' is selected. Optionally, you can uncheck some unwanted items here. Click the '''Import''' and then '''Done'''. You're done with it.<br />
<br />
{{note|If you haven't created any bookmarks in Chromium yet, the bookmarks will show up in your bookmarks bar. If you already have bookmarks, the bookmarks will be in a new folder labeled "Imported From Firefox"}}<br />
<br />
If you import bookmarks from another PC, you have to export bookmarks from Firefox first.<br />
<br />
{{ic|''Ctrl + Shift + O > Import and Backup > Export Bookmarks To HTML}} in Firefox''<br />
<br />
The procedure is pretty much the same. You need to go to {{ic|chrome://settings/importData}}. However, this time, in the '''From''' drop-down menu, select '''Bookmarks HTML File''' and click the '''Choose File''' button and upload the desired bookmark file.<br />
<br />
=== Enabling native notifications ===<br />
<br />
Go to {{ic|chrome://flags#enable-native-notifications}} and select ''Enabled''.<br />
<br />
=== U2F authentication ===<br />
In order for the U2F functionality to work with Chromium you need to install the {{Pkg|libu2f-host}} library.<br />
This provides the [https://github.com/Yubico/libu2f-host/blob/master/70-u2f.rules udev rules] required to enable access to the U2F key as a user.<br />
U2F keys are by default only accessible by root, and without these rules Chromium will give an error.<br />
<br />
=== Dark mode ===<br />
To enable the dark theme, normally used for incognito mode, [[append]] the following flag to [[#Making flags persistent|persistent configuration]]:<br />
<br />
{{hc|1=~/.config/chromium-flags.conf|2=<br />
--force-dark-mode<br />
--enable-features=WebUIDarkMode<br />
}}<br />
<br />
== Profile maintenance ==<br />
Chromium uses [[SQLite]] databases to manage history and the like. Sqlite databases become fragmented over time and empty spaces appear all around. But, since there are no managing processes checking and optimizing the database, these factors eventually result in a performance hit. A good way to improve startup and some other bookmarks- and history-related tasks is to defragment and trim unused space from these databases.<br />
<br />
{{AUR|profile-cleaner}} and {{AUR|browser-vacuum}} in the [[AUR]] do just this.<br />
<br />
== Security ==<br />
=== WebRTC ===<br />
WebRTC is a communication protocol that relies on JavaScript that can leak one's actual IP address and hardware hash from behind a VPN. While some software may prevent the leaking scripts from running, it's probably a good idea to block this protocol directly as well, just to be safe. As of October 2016, there is no way to disable WebRTC on Chromium on desktop, there are extensions available to disable local IP address leak, one is this [https://chrome.google.com/webstore/detail/webrtc-network-limiter/npeicpdbkakmehahjeeohfdhnlpdklia extension].<br />
<br />
One can test WebRTC via [https://www.privacytools.io/webrtc.html this page].<br />
<br />
{{Warning|Even though IP leak can be prevented, Chromium still sends your unique hash, and there is no way to prevent this. Read more on https://www.browserleaks.com/webrtc#webrtc-disable }}<br />
<br />
=== SSL certificates ===<br />
Chromium does not have an SSL certificate manager. It relies on the NSS Shared DB {{ic|~/.pki.nssdb}}. In order to add SSL certificates to the database, users will have to use the shell. <br />
<br />
==== Adding CAcert certificates for self-signed certificates ====<br />
Grab the CAcerts and create an {{ic|nssdb}}, if one does not already exist. To do this, first install the {{Pkg|nss}} package, then complete these steps:<br />
<br />
$ mkdir -p $HOME/.pki/nssdb<br />
$ cd $HOME/.pki/nssdb<br />
$ certutil -N -d sql:.<br />
<br />
$ curl -k -o "cacert-root.crt" "http://www.cacert.org/certs/root.crt"<br />
$ curl -k -o "cacert-class3.crt" "http://www.cacert.org/certs/class3.crt"<br />
$ certutil -d sql:$HOME/.pki/nssdb -A -t TC -n "CAcert.org" -i cacert-root.crt <br />
$ certutil -d sql:$HOME/.pki/nssdb -A -t TC -n "CAcert.org Class 3" -i cacert-class3.crt<br />
<br />
{{Note|Users will need to create a password for the database, if it does not exist.}}<br />
<br />
Now users may manually import a self-signed certificate.<br />
<br />
==== Example 1: Using a shell script to isolate the certificate from TomatoUSB ====<br />
Below is a simple script that will extract and add a certificate to the user's {{ic|nssdb}}:<br />
<br />
#!/bin/sh<br />
#<br />
# usage: import-cert.sh remote.host.name [port]<br />
#<br />
REMHOST=$1<br />
REMPORT=${2:-443}<br />
exec 6>&1<br />
exec > $REMHOST<br />
echo | openssl s_client -connect ${REMHOST}:${REMPORT} 2>&1 |sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p'<br />
certutil -d sql:$HOME/.pki/nssdb -A -t "P,," -n "$REMHOST" -i $REMHOST <br />
exec 1>&6 6>&-<br />
<br />
Syntax is advertised in the commented lines.<br />
<br />
References:<br />
*http://blog.avirtualhome.com/adding-ssl-certificates-to-google-chrome-linux-ubuntu<br />
*https://chromium.googlesource.com/chromium/src/+/master/docs/linux_cert_management.md<br />
<br />
==== Example 2: Using Firefox to isolate the certificate from TomatoUSB ====<br />
The {{Pkg|firefox}} browser can be used to save the certificate to a file for manual import into the database.<br />
<br />
Using firefox:<br />
#Browse to the target URL.<br />
#Upon seeing the "This Connection is Untrusted" warning screen, click: ''I understand the Risks > Add Exception...''<br />
#Click: ''View > Details > Export'' and save the certificate to a temporary location ({{ic|/tmp/easy.pem}} in this example).<br />
<br />
Now import the certificate for use in Chromium:<br />
$ certutil -d sql:$HOME/.pki/nssdb -A -t TC -n "easy" -i /tmp/easy.pem<br />
<br />
{{Note|Adjust the name to match that of the certificate. In the example above, "easy" is the name of the certificate.}}<br />
<br />
Reference:<br />
*http://sahissam.blogspot.com/2012/06/new-ssl-certificates-for-tomatousb-and.html<br />
<br />
=== Canvas Fingerprinting ===<br />
Canvas fingerprinting is a technique that allows websites to identify users by detecting differences when rendering to an HTML5 canvas. This information can be made inaccessible by using the {{ic|--disable-reading-from-canvas}} flag.<br />
<br />
To confirm this is working run [https://panopticlick.eff.org this test] and make sure "hash of canvas fingerprint" is reported as undetermined in the full results.<br />
<br />
{{Note|Some extensions require reading from canvas and may be broken by setting {{ic|--disable-reading-from-canvas}}.}}<br />
<br />
=== Privacy extensions ===<br />
<br />
See [[Browser extensions#Privacy]].<br />
<br />
{{Tip|Installing too many extensions might take up much space in the toolbar. Those extensions which you wouldn't interact with anyway (e.g. [https://chrome.google.com/webstore/detail/gcbommkclmclpchllfjekcdonpmejbdp HTTPS Everywhere]) can be hidden by right-clicking on the extension and choosing ''Hide in Chromium menu''.}}<br />
<br />
=== Do Not Track ===<br />
<br />
To enable [[wikipedia:Do Not Track|Do Not Track]], visit {{ic|chrome://settings}}, scroll down to ''Advanced'' and under ''Privacy and security'', check ''Send a "Do Not Track" request with your browsing traffic''.<br />
<br />
=== Force a password store ===<br />
<br />
Chromium uses a password store to store your passwords and the ''Chromium Safe Storage'' key, which is used to encrypt cookie values. [https://codereview.chromium.org/24734007]<br />
<br />
By default Chromium auto-detects which password store to use, which can lead to you apparently losing your passwords and cookies when switching to another desktop environment or window manager.<br />
<br />
You can force Chromium to use a specific password store by launching it with the {{ic|--password-store}} flag with one of following the values [https://chromium.googlesource.com/chromium/src/+/master/docs/linux_password_storage.md]:<br />
<br />
* {{ic|gnome}}, uses [[Gnome Keyring]]<br />
* {{ic|kwallet5}}, uses [[KDE Wallet]]<br />
* {{ic|basic}}, saves the passwords and the cookies' encryption key as plain text in the file {{ic|Login Data}}<br />
* {{ic|detect}}, the default auto-detect behavior<br />
<br />
For example, to force Chromium to use Gnome Keyring in another desktop or WM use {{ic|1=--password-store=gnome}}, see [[#Making flags persistent]] for making it permanent.<br />
<br />
When using a password store of another desktop environment you probably also want to unlock it automatically see:<br />
[[GNOME/Keyring#Using the keyring outside GNOME]] and [[KDE Wallet#Unlock KDE Wallet automatically on login]].<br />
<br />
== Making flags persistent ==<br />
<br />
{{Move|Chromium#Configuration|More appropriate place.}}<br />
<br />
{{Note|The {{ic|chromium-flags.conf}} file and the accompanying custom launcher script are specific to the Arch Linux {{Pkg|chromium}} package. For {{AUR|google-chrome}}, use {{ic|chrome-flags.conf}} instead.}}<br />
<br />
You can put your flags in a {{ic|chromium-flags.conf}} file under {{ic|$HOME/.config/}} (or under {{ic|$XDG_CONFIG_HOME}} if you have configured that environment variable).<br />
<br />
No special syntax is used; flags are defined as if they were written in a terminal.<br />
<br />
* The arguments are split on whitespace and shell quoting rules apply, but no further parsing is performed.<br />
* In case of improper quoting anywhere in the file, a fatal error is raised.<br />
* Flags can be placed in separate lines for readability, but this is not required.<br />
* Lines starting with a hash symbol (#) are skipped.<br />
<br />
Below is an example {{ic|chromium-flags.conf}} file that defines the flags {{ic|--start-maximized --incognito}}:<br />
<br />
{{hc|~/.config/chromium-flags.conf|<br />
# This line will be ignored.<br />
--start-maximized<br />
--incognito<br />
}}<br />
<br />
== See also ==<br />
<br />
* [[Profile-sync-daemon]] - Systemd service that saves Chromium profile in tmpfs and syncs to disk<br />
* [[Tmpfs]] - Tmpfs Filesystem in {{ic|/etc/fstab}}<br />
* [https://www.kernel.org/doc/Documentation/filesystems/tmpfs.txt Official tmpfs kernel Documentation]</div>Zekesonxxhttps://wiki.archlinux.org/index.php?title=Install_Arch_Linux_on_ZFS&diff=576034Install Arch Linux on ZFS2019-06-20T04:38:32Z<p>Zekesonxx: /* Install and configure Arch Linux */ Add note about the initramfs including the zpool.cache file</p>
<hr />
<div>[[Category:Installation process]]<br />
[[ja:ZFS に Arch Linux をインストール]]<br />
{{Related articles start}}<br />
{{Related|ZFS}}<br />
{{Related|Experimenting with ZFS}}<br />
{{Related articles end}}<br />
This article details the steps required to install Arch Linux onto a ZFS root filesystem.<br />
<br />
== Installation ==<br />
<br />
See [[ZFS#Installation]] for installing the ZFS packages. If installing Arch Linux onto ZFS from the archiso, it would be easier to use the [[Unofficial user repositories#archzfs|archzfs]] repository.<br />
<br />
There is also a interactive installer, [https://github.com/danboid/ALEZ ALEZ], which provides an easy way to get a ZFS system up and running if you do not require much customization.<br />
<br />
=== Embedding archzfs into archiso ===<br />
<br />
See [[ZFS#Embed_the_archzfs_packages_into_an_archiso|ZFS]] article.<br />
<br />
== Partition the destination drive ==<br />
<br />
Review [[Partitioning]] for information on determining the partition table type to use for ZFS. ZFS supports GPT and MBR partition tables.<br />
<br />
ZFS manages its own partitions, so only a basic partition table scheme is required. The partition that will contain the ZFS filesystem should be of the type {{ic|bf00}}, or "Solaris Root".<br />
<br />
Drives larger than 2TB require a GPT partition table. GRUB on BIOS/GPT configurations require a small (1~2MiB) BIOS boot partition to embed its image of boot code.<br />
<br />
Depending upon your machine's firmware or your choice of boot mode, booting may or may not require an EFI partition. On a BIOS machine (or a UEFI machine booting in legacy mode) EFI partition is not required. Consult [[Arch boot process#Boot loader]] for more information.<br />
<br />
=== Partition scheme ===<br />
<br />
Here is an example of a basic partition scheme that could be employed for your ZFS root install on a BIOS/MBR installation using GRUB:<br />
<br />
{{bc|<nowiki><br />
Part Size Type<br />
---- ---- -------------------------<br />
1 XXXG Solaris Root (bf00)</nowiki><br />
}}<br />
<br />
Using GRUB on a BIOS (or UEFI machine in legacy boot mode) machine but using a GPT partition table:<br />
<br />
{{bc|<nowiki><br />
Part Size Type<br />
---- ---- -------------------------<br />
1 2M BIOS boot partition (ef02)<br />
2 XXXG Solaris Root (bf00)</nowiki><br />
}}<br />
<br />
Another example, this time using a UEFI-specific bootloader (such as [[rEFInd]]) and GPT:<br />
<br />
{{bc|<nowiki><br />
Part Size Type<br />
---- ---- -------------------------<br />
1 100M EFI boot partition (ef00)<br />
2 XXXG Solaris Root (bf00)</nowiki><br />
}}<br />
<br />
ZFS does not support swap files. If you require a swap partition, see [[ZFS#Swap volume]] for creating a swap ZVOL.<br />
<br />
{{Tip|Bootloaders with support for ZFS are described in [[#Install and configure the bootloader]].}}<br />
{{Warning|Several GRUB bugs ([https://savannah.gnu.org/bugs/?42861 bug #42861], [https://github.com/zfsonlinux/grub/issues/5 zfsonlinux/grub/issues/5]) complicate installing it on ZFS partitions, see [[#Install and configure the bootloader]] for a workaround}}<br />
<br />
=== Example parted commands ===<br />
Here are some example commands to partition a drive for the second scenario above ie using BIOS/legacy boot mode with a GPT partition table and a (slighty more than) 1MB BIOS boot partition for GRUB:<br />
<br />
# parted /dev/sdx<br />
(parted)mklabel gpt<br />
(parted)mkpart non-fs 0% 2<br />
(parted)mkpart primary 2 100%<br />
(parted)set 1 bios_grub on<br />
(parted)set 2 boot on<br />
(parted)quit<br />
<br />
You can achieve the above in a single command like so:<br />
<br />
parted --script /dev/sdx mklabel gpt mkpart non-fs 0% 2 mkpart primary 2 100% set 1 bios_grub on set 2 boot on<br />
<br />
If you are creating an EFI partition then that should have the boot flag set instead of the root partition.<br />
<br />
== Format the destination disk ==<br />
<br />
If you have opted for a boot partition as well as any other non-ZFS system partitions then format them. Do not do anything to the Solaris partition nor to the BIOS boot partition. ZFS will manage the first, and your bootloader the second.<br />
<br />
== Setup the ZFS filesystem ==<br />
<br />
First, make sure the ZFS modules are loaded,<br />
<br />
# modprobe zfs<br />
<br />
=== Create the root zpool ===<br />
<br />
# zpool create -f zroot /dev/disk/by-id/''id-to-partition-partx''<br />
<br />
{{Warning|<br />
* Always use id names when working with ZFS, otherwise import errors will occur.<br />
* The zpool command will normally activate all features. See [[ZFS#GRUB-compatible pool creation]] when using [[GRUB]].}}<br />
<br />
=== Create your datasets ===<br />
<br />
Instead of using conventional disk partitions, ZFS has the concept of datasets to manage your storage. Unlike disk partitions, datasets have no fixed size and allow for different attributes, such as compression, to be applied per dataset. Normal ZFS datasets are mounted automatically by ZFS whilst legacy datasets are required to be mounted using fstab or with the traditional mount command.<br />
<br />
One of the most useful features of ZFS is boot environments. Boot environments allow you to create a bootable snapshot of your system that you can revert to at any time instantly by simply rebooting and booting from that boot environment. This can make doing system updates much safer and is also incredibly useful for developing and testing software. In order to be able to use a boot environment manager such as [https://github.com/b333z/beadm beadm], or {{AUR|zedenv}} to manage boot environments, your datasets must be configured properly. Key to this are that you split your data directories (such as {{ic|/home}}) into datasets that are distinct from your system datasets and that you do not place data in the root of the pool as this cannot be moved afterwards. <br />
<br />
You should always create a dataset for at least your root filesystem and in nearly all cases you will also want {{ic|/home}} to be in a separate dataset. You may decide you want your logs to persist over boot environments. If you are a running any software that stores data outside of {{ic|/home}} (such as is the case for database servers) you should structure your datasets so that the data directories of the software you want to run are separated out from the root dataset.<br />
<br />
With these example commands, we will create a basic boot environment compatible configuration comprising of just root and {{ic|/home}} datasets with lz4 compression to save space and improve IO performance:<br />
<br />
# zfs create -o mountpoint=none zroot/data<br />
# zfs create -o mountpoint=none zroot/ROOT<br />
# zfs create -o compression=lz4 -o mountpoint=/ zroot/ROOT/default<br />
# zfs create -o compression=lz4 -o mountpoint=/home zroot/data/home<br />
<br />
{{Note|You will need to enable ACL support on the pool that will house {{ic|/var/log/journal}}, i.e. {{ic|1=zfs set acltype=posixacl ...}}. See [[Systemd#systemd-tmpfiles-setup.service fails to start at boot]] for more information.}}<br />
<br />
=== Configure the root filesystem ===<br />
<br />
If you have just created your zpool, it will be mounted in a dir at the root of your tree named after the pool (ie /zroot). If the following set commands fail, you may need to unmount any ZFS filesystems first:<br />
<br />
# zfs unmount -a<br />
<br />
Now set the mount points of the datasets:<br />
<br />
# zfs set mountpoint=/ zroot/ROOT/default<br />
# zfs set mountpoint=legacy zroot/data/home<br />
<br />
{{Note|{{ic|/etc/fstab}} mounts occur before zfs mounts, so don't use zfs mountpoints on directories with subfolders configured to be mounted by {{ic|/etc/fstab}}.}}<br />
<br />
and put them in {{ic|/etc/fstab}}<br />
{{hc|/etc/fstab|<br />
# <file system> <dir> <type> <options> <dump> <pass><br />
zroot/ROOT/default / zfs defaults,noatime 0 0<br />
zroot/data/home /home zfs defaults,noatime 0 0}}<br />
<br />
All legacy datasets must be listed in {{ic|/etc/fstab}} or they will not be mounted at boot.<br />
<br />
Set the bootfs property on the descendant root filesystem so the boot loader knows where to find the operating system.<br />
<br />
# zpool set bootfs=zroot/ROOT/default zroot<br />
<br />
Export the pool,<br />
<br />
# zpool export zroot<br />
<br />
{{Warning|Do not skip this, otherwise you will be required to use {{ic|-f}} when importing your pools. This unloads the imported pool.}}<br />
{{Note|This might fail if you added a swap partition. You need to turn it off with the ''swapoff'' command.}}<br />
<br />
Finally, re-import the pool,<br />
<br />
# zpool import -d /dev/disk/by-id -R /mnt zroot<br />
<br />
{{Note|{{ic|-d}} is not the actual device id, but the {{ic|/dev/by-id}} directory containing the symbolic links.<br />
If this command fails and you are asked to import your pool via its numeric ID, run {{ic|zpool import}} to <br />
find out the ID of your pool then use a command such as:<br />
{{ic|zpool import 9876543212345678910 -R /mnt zroot}}<br />
}}<br />
<br />
If there is an error in this step, you can export the pool to redo the command. The ZFS filesystem is now ready to use.<br />
<br />
Be sure to bring the {{ic|zpool.cache}} file into your new system. This is required later for the ZFS daemon to start.<br />
<br />
# cp /etc/zfs/zpool.cache /mnt/etc/zfs/zpool.cache<br />
<br />
if you do not have {{ic|/etc/zfs/zpool.cache}}, create it:<br />
<br />
# zpool set cachefile=/etc/zfs/zpool.cache zroot<br />
<br />
== Install and configure Arch Linux ==<br />
<br />
Follow the following steps using the [[Installation guide]]. It will be noted where special consideration must be taken for ZFSonLinux.<br />
<br />
* First mount any legacy or non-ZFS boot or system partitions using the mount command.<br />
<br />
* Install the base system.<br />
<br />
* The procedure described in [[Installation guide#Fstab]] is usually overkill for ZFS. ZFS usually auto mounts its own partitions, so we do not need ZFS partitions in {{ic|fstab}} file, unless the user made legacy datasets of system directories. To generate the {{ic|fstab}} for filesystems, use:<br />
<br />
# genfstab -U -p /mnt >> /mnt/etc/fstab<br />
<br />
* Edit the {{ic|/etc/fstab}}:<br />
<br />
{{Note|<br />
* If you chose to create legacy datasets for system directories, keep them in this {{ic|fstab}}!<br />
* Comment out all non-legacy datasets apart from the root dataset, the swap file and the boot/EFI partition. It is a convention to replace the swap's uuid with {{ic|/dev/zvol/zroot/swap}}.<br />
}}<br />
<br />
* You need to add the [[Unofficial_user_repositories#archzfs|Arch ZFS]] repository to {{ic|/etc/pacman.conf}}, sign its key and [[install]] '''zfs-linux''' (or '''zfs-linux-lts''' if you are running the LTS kernel) within the arch-chroot before you can update the ramdisk with ZFS support.<br />
<br />
* When creating the initial ramdisk, first edit {{ic|/etc/mkinitcpio.conf}} and add {{ic|zfs}} before filesystems. Also, move {{ic|keyboard}} hook before {{ic|zfs}} so you can type in console if something goes wrong. You may also remove fsck (if you are not using Ext3 or Ext4). Your {{ic|HOOKS}} line should look something like this:<br />
HOOKS="base udev autodetect modconf block keyboard zfs filesystems"<br />
<br />
When using systemd in the initrd, you need to install {{AUR|mkinitcpio-sd-zfs}} and add the {{ic|sd-zfs}} hook after the {{ic|systemd}} hook instead of the {{ic|zfs}} hook. Keep in mind that this hook uses different kernel parameters than the default {{ic|zfs}} hook, more information can be found at the [https://github.com/dasJ/sd-zfs project page].<br />
<br />
{{Note|<br />
* If you are using a separate dataset for {{ic|/usr}} and have followed the instructions below, you must make sure you have the {{ic|usr}} hook enabled after {{ic|zfs}}, or your system will not boot.<br />
* When you generate the initramfs, the {{ic|zpool.cache}} is copied into the initrd. If you didn't generate it before, or needed to regenerate it, remember to regenerate the initramfs again.<br />
}}<br />
<br />
* [[Regenerate the initramfs]].<br />
<br />
== Install and configure the bootloader ==<br />
<br />
=== Using GRUB with BIOS and EFI motherboards ===<br />
<br />
Install GRUB onto your disk as instructed here: [[GRUB#BIOS systems]] or [[GRUB#UEFI systems]]. The GRUB [https://www.gnu.org/software/grub/manual/grub.html#Configuration manual] provides detailed information on manually configuring the software which you can supplement with [[GRUB]] and [[GRUB/Tips and tricks]].<br />
<br />
==== error: failed to get canonical path of ====<br />
<br />
{{ic|grub-mkconfig}} fails to properly generate entries for systems hosted on ZFS.<br />
<br />
# grub-mkconfig -o /boot/grub/grub.cfg<br />
/usr/bin/grub-probe: error: failed to get canonical path of `/dev/bus-Your_Disk_ID-part#'<br />
<br />
grub-install: error: failed to get canonical path of `/dev/bus-Your_Disk_ID-part#'<br />
<br />
To work around this you must set this environment variable: {{ic|1=ZPOOL_VDEV_NAME_PATH=1}}. For example:<br />
<br />
# ZPOOL_VDEV_NAME_PATH=1 grub-mkconfig -o /boot/grub/grub.cfg<br />
<br />
<br />
==== Booting your kernel and initrd from ZFS ====<br />
<br />
You may skip this section if you have your kernel and initrd on a separate {{ic|/boot}} partition using something like ext4 or vfat.<br />
<br />
Otherwise grub needs to load your kernel and initrd are from a ZFS dataset the kernel and initrd paths have to be in the following format:<br />
<br />
/dataset/@/actual/path <br />
<br />
Example with Arch installed on the root dataset:<br />
<br />
{{hc|/boot/grub/grub.cfg|<nowiki><br />
set timeout=5<br />
set default=0<br />
<br />
menuentry "Arch Linux" {<br />
search -u UUID<br />
linux /@/boot/vmlinuz-linux zfs=zroot rw<br />
initrd /@/boot/initramfs-linux.img<br />
}<br />
</nowiki>}}<br />
<br />
Example with Arch installed on a nested dataset:<br />
<br />
{{hc|/boot/grub/grub.cfg|<nowiki><br />
set timeout=5<br />
set default=0<br />
<br />
menuentry "Arch Linux" {<br />
search -u UUID<br />
linux /ROOT/default/@/boot/vmlinuz-linux zfs=zroot/ROOT/default rw <br />
initrd /ROOT/default/@/boot/initramfs-linux.img<br />
}<br />
</nowiki>}}<br />
<br />
Example with a separate non-ZFS /boot partition and Arch installed on a nested dataset: <br />
<br />
{{hc|/boot/grub/grub.cfg|<nowiki><br />
set timeout=5<br />
set default=0<br />
<br />
menuentry "Arch Linux" {<br />
search -u UUID<br />
linux /vmlinuz-linux zfs=zroot/ROOT/default rw<br />
initrd /initramfs-linux.img<br />
}<br />
</nowiki>}}<br />
<br />
=== Using rEFInd with UEFI motherboards ===<br />
<br />
Use {{ic|EFISTUB}} and {{ic|rEFInd}} for the UEFI boot loader. The kernel parameters in {{ic|refind_linux.conf}} for ZFS should include {{ic|1=zfs=bootfs}} or {{ic|1=zfs=zroot}} so the system can boot from ZFS. The {{ic|root}} and {{ic|rootfstype}} parameters are not needed.<br />
<br />
== Unmount and restart ==<br />
<br />
We are almost done!<br />
# exit<br />
# umount /mnt/boot (if you have a legacy boot partition)<br />
# zfs umount -a<br />
# zpool export zroot<br />
Now reboot.<br />
<br />
{{Warning|If you do not properly export the zpool, the pool will refuse to import in the ramdisk environment and you will be stuck at the busybox terminal.}}<br />
<br />
== After the first boot ==<br />
<br />
If everything went fine up to this point, your system will boot. Once.<br />
For your system to be able to reboot without issues, you need to enable the {{ic|zfs.target}} to auto mount the pools and set the hostid.<br />
<br />
For each pool you want automatically mounted execute:<br />
# zpool set cachefile=/etc/zfs/zpool.cache <pool><br />
Enable the target with [[systemd]]:<br />
# systemctl enable zfs.target<br />
<br />
{{Note|Beginning with ZOL version 0.6.5.8 the ZFS service unit files have been changed so that you need to explicitly enable any ZFS services you want to run.<br />
<br />
See [https://github.com/archzfs/archzfs/issues/72 https://github.com/archzfs/archzfs/issues/72] for more information.<br />
<br />
}}<br />
<br />
In order to mount zfs pools automatically on boot you need to enable the following services and targets:<br />
<br />
# systemctl enable zfs-import-cache<br />
# systemctl enable zfs-mount<br />
# systemctl enable zfs-import.target<br />
<br />
When running ZFS on root, the machine's hostid will not be available at the time of mounting the root filesystem. There are two solutions to this. You can either place your spl hostid in the [[kernel parameters]] in your boot loader. For example, adding {{ic|<nowiki>spl.spl_hostid=0x00bab10c</nowiki>}}, to get your number use the {{ic|hostid}} command.<br />
<br />
The other, and suggested, solution is to make sure that there is a hostid in {{ic|/etc/hostid}}, and then regenerate the initramfs image which will copy the hostid into the initramfs image. To write the hostid file safely you need to use the {{ic|zgenhostid}} command.<br />
<br />
To use the libc-generated hostid (recommended):<br />
# zgenhostid $(hostid)<br />
To use a custom hostid (must be hexadecimal and 8 characters long):<br />
# zgenhostid deadbeef<br />
To let the tool generate a hostid:<br />
# zgenhostid<br />
<br />
Don't forget to regenerate your image using [[mkinitcpio]]. Your system should work and reboot properly now.<br />
<br />
On some machines the export of the pool on shutdown sometimes fails. If your pool is only used from ''exactly one'' machine (no danger of accidently simultaneously importing it on two different machines), it is safe to add<br />
zfs_force=1<br />
to your kernel options, which forces the import of the pool.<br />
<br />
== Native encryption ==<br />
To use native ZFS encryption, you will need a recent enough zfs package like {{AUR|zfs-linux-git}} 0.7.0.r26 or newer, or {{AUR|zfs-linux}} 0.8.0 or newer, and embed it into the archiso.<br />
Then just follow the normal procedure shown before with the exception that you add the following parameters when creating the dataset:<br />
# zfs create -o encryption=on -o keyformat=passphrase -o mountpoint=none zroot/ROOT<br />
# zfs create -o encryption=on -o keyformat=passphrase -o mountpoint=none zroot/data<br />
If you want a single passphrase for both your root and home partition, encrypt only one dataset instead:<br />
# zfs create -o encryption=on -o keyformat=passphrase -o mountpoint=none zroot/encr<br />
# zfs create -o mountpoint=none zroot/encr/ROOT<br />
# zfs create -o mountpoint=none zroot/encr/data<br />
<br />
When importing the pool use {{ic|-l}}, to decrypt all datasets<br />
# zpool import -d /dev/disk/by-id -R /mnt -l zroot<br />
<br />
On reboot, you will be asked for your passphrase.<br />
<br />
== See also ==<br />
<br />
* [https://github.com/dajhorn/pkg-zfs/wiki/HOWTO-install-Ubuntu-to-a-Native-ZFS-Root-Filesystem HOWTO install Ubuntu to a Native ZFS Root]<br />
* [http://lildude.co.uk/zfs-cheatsheet ZFS cheatsheet]<br />
* [http://www.funtoo.org/wiki/ZFS_Install_Guide Funtoo ZFS install guide]</div>Zekesonxxhttps://wiki.archlinux.org/index.php?title=User:Zekesonxx&diff=477231User:Zekesonxx2017-05-15T06:54:39Z<p>Zekesonxx: I got a new laptop \o/</p>
<hr />
<div>I program things and sometimes contribute things.<br />
<br />
https://github.com/zekesonxx<br />
<br />
Zeke's Law of AUR Packages: Given a long enough period of time, every Arch installation will eventually install {{pkg|gcc-fortran}}.<br />
<br />
=== Computer Specs ===<br />
Desktop: i5-2320, 16GB RAM, GTX 970, running <del>Windows 7 Home Premium 64-bit with dwm.exe</del> Arch Linux with xfce4.<br />
<br />
Old Laptop: Dell Inspiron M5030, running Arch 64-bit with xfce4, off a <del>16GB flash drive</del> <del>80GB 5400RPM hard drive!</del> 64GB ADATA SSD! Whoo!.<br />
<br />
New Laptop: Dell XPS 13 9350, non-touch 1080p screen, i7-6600U, 8GB RAM, 256GB NVMe SSD, Intel wireless card. Still using Arch with xfce4.<br />
<br />
=== PGP ===<br />
<br />
{{bc|<nowiki>-----BEGIN PGP SIGNED MESSAGE-----<br />
Hash: SHA512<br />
<br />
I hearby verify that I am user Zekesonxx on the Arch Linux Wiki, as of 2015-09-17.<br />
<br />
User page: https://wiki.archlinux.org/index.php/User:Zekesonxx<br />
-----BEGIN PGP SIGNATURE-----<br />
Version: GnuPG v2<br />
<br />
iQEcBAEBCgAGBQJV+2YNAAoJEIzSZXCb/eAOnxYH/2Jd35L92d1NPMssOJNNp5Af<br />
2FL4aiLAqmOR0xXwMBjn1yPQfbVY50Z+mJWrdnPiQyKDkQQ7httdKx2PqGFxWh0y<br />
1VWODlyEoWwq3yMTmSZOrDU3MUZ6K24Rp8XClqEI0y1cyodHxtnunRXjkd8u+yuY<br />
8TMZFE+pYaW8zTLWP+zqhfnbAdrQjHJMVaRn+wJKSwsFYPZP9BaQVK71An10t66e<br />
BENWYkHnfUdACy6lhb+WYr5uytlfGyvdKXY+ty/axXpUjQIMFY7U3GAdsJVEQwLh<br />
Og39UNhsaLOTMhoD8A7UDx6EvjsEVn5Qz9alpG1ZLlnK/WxgoFwgX0nN/C491qY=<br />
=9YEs<br />
-----END PGP SIGNATURE-----<br />
</nowiki>}}<br />
<br />
Personal: [https://pgp.mit.edu/pks/lookup?op=vindex&fingerprint=on&search=0x79B1898A53A871BF4D202E778CD265709BFDE00E 79B1 898A 53A8 71BF 4D20 2E77 8CD2 6570 9BFD E00E] ([https://keybase.io/zekesonxx keybase.io])<br/><br />
Package: [https://pgp.mit.edu/pks/lookup?op=vindex&fingerprint=on&search=0xC1AE1A2666B42BFD91AB26819C7F3483D6B6F0E0 C1AE 1A26 66B4 2BFD 91AB 2681 9C7F 3483 D6B6 F0E0]<br />
<br />
The signature above is meant as a replacement for using a [[Wikipedia:Wikipedia:Wikipedia Signpost/2007-05-14/Committed identity|committed identity hash]], as well as proof that I am who I say I am.</div>Zekesonxxhttps://wiki.archlinux.org/index.php?title=Blu-ray&diff=465878Blu-ray2017-01-19T22:16:06Z<p>Zekesonxx: /* BD+ support */ add note about bd+ fuzzing tables</p>
<hr />
<div>[[Category:Multimedia]]<br />
[[Category:Optical]]<br />
[[ja:Blu-ray]]<br />
{{Related articles start}}<br />
{{Related|Optical disc drive}}<br />
{{Related articles end}}<br />
This article is designed to help Linux users to play the Blu-ray discs they have legally purchased on their computers. Since no official Blu-ray player software is available on their system, Linux users have to use open-source libraries capable of handling the DRM schemes that protect these disc contents. This is legal in most countries where interoperability allows this.<br />
<br />
== How it works ==<br />
<br />
=== Blu-ray DRM ===<br />
<br />
Contrary to the DVD CSS, which was definitely compromised once the unique encryption key had been discovered, Blu-ray uses stronger DRM mechanisms, which makes it a lot more difficult to manage. Firstly, the AACS standard uses a lot more complicated cryptographic process to protect the disc content, but also allows the industry to revoke compromised keys and distribute new keys through new discs. Secondly, Blu-ray may also use another layer of protection: BD+. Although most of commercial discs use AACS, a few of them additionally use BD+. In 2007, the AACS system was compromised and decryption keys were published on the Internet. Many decryption programs were made available, but the interest to Linux users was the capability of playing their discs - legally purchased - on their computers. Although the industry was able to revoke the first leaked decryption keys, new keys are regularly published in a cat and mouse play.<br />
<br />
==== AACS ====<br />
<br />
The AACS specification and decryption process are publicly available at [http://www.aacsla.com/specifications/]. Many articles and research papers describe it in detail at [http://forum.doom9.org/showthread.php?t=122363], [http://cacr.uwaterloo.ca/~dstinson/papers/AACS-journal.pdf] or [http://www.iis.sinica.edu.tw/papers/lcs/5007-F.pdf].<br />
<br />
{{pkg|libaacs}} is a research project from the VideoLAN developer team to implement the Advanced Access Content System specification, and distributed as an open-source library [http://www.videolan.org/developers/libaacs.html]. This project does not offer any key or certificate that could be used to decode encrypted copyrighted material. However, combined with a key database file, it is possible to use it to play Blu-ray discs that use the AACS standard. This file is called {{ic|KEYDB.cfg}} and is accessed by libaacs in {{ic|~/.config/aacs}}. The format of this file is available at [http://git.videolan.org/?p=libaacs.git;a=blob_plain;f=KEYDB.cfg;hb=HEAD].<br />
<br />
===== AACS decryption process =====<br />
<br />
The AACS decryption process for a protected disc by a licensed player goes through four stages:<br />
<br />
# The software/embedded player's Device Keys, together with the disc's Media Key Block (MKB) data are used to retrieve a "Processing Key", and with that (plus another datum from the MKB) to compute the Media Key.<br />
# That Media Key, together with the disc's Volume ID (VID) obtained by the player presenting a valid Host Certificate to the drive is used to compute the Volume Unique Key (VUK).<br />
# This VUK is used to unscramble the disc's scrambled Title Keys.<br />
# Finally those Title Keys unscramble the disc's protected media content.<br />
<br />
Note that it is the disc that contains the MKB. MKBs have been renewed since the first commercial Blu-ray release in 2006. The latest MKB is version 64, but many MKB actually share the same key. The software player provides the Host key and certificate, whereas the drive contains a list of the Host key/certificates that have been revoked. Host key/certification revocation occurs when a newer disc (containing a higher MKB than the previous played disc) is decrypted, or played, or attempted to decrypt or play (the mere insertion of a disc does not update the drive). When this happens, the drive forever loses its capability to use older Host key/certificates.<br />
<br />
Using {{Pkg|libaacs}}, the decryption process can skip some of these stages to reach the last step, which allows the media player to play the disc. This is either by providing in the {{ic|KEYDB.cfg}} file either (or both):<br />
<br />
* a valid (corresponding to the MKB version of the disc) Processing key and a valid (i.e. non revoked by the drive) Host key/certificate<br />
* a valid VUK for the specific disc.<br />
<br />
If libaacs finds a valid processing key for the disc MKB version as well as a valid Host key and certificates, it can start the decryption process from step 2. However, the Host key/certificates are regularly revoked through the propagation of new Blu-ray discs. Once revoked, a drive is not able to read both new and older discs. This is usually irreversible and can only be fixed by providing a more recent Host key/certificate (for Windows users, this corresponds to updating their software player). The advantage of this method is that until the Host key/certificate is revoked, and as long as the disc uses an MKB version for which the Processing key is known, libaacs is able to compute the VUK of any disc. As of today, the Processing keys for MKB version up to 61 have been computed and made available on the Internet. Thus, this method is slightly outdated.<br />
<br />
Thankfully, in case no valid Processing key is available and/or the Host certificate has been revoked, libaacs has an alternative way to decrypt a disc: by providing a valid VUK in the {{ic|KEYDB.cfg}} file. This allows libaacs to skip directly to step 3. Contrary to the Processing keys, VUKs are disc specific. Therefore this is less efficient as the user will have to get the VUK from a third party. But the great advantage is that VUKs cannot be revoked. Note that if libaacs is able to perform step 2 (with a valid Host key/certificate), then it stores the VUK calculated in step 3 in {{ic|~/.cache/aacs/vuk}}. At subsequent viewings of the same disc, libaacs can reuse the stored VUK. Thus it may be a good idea to backup these VUKs, or even better, to upload them to [http://www.labdv.com/aacs/].<br />
<br />
There have been several efforts to compile VUKs from various sources. Early attempts include forum threads, such as available at [http://forum.doom9.org/attachment.php?attachmentid=11170&d=1276615904] or [http://forum.doom9.org/showthread.php?p=1525922#post1525922]. Recently, a centralised VUK database has been made available at [http://www.labdv.com/aacs/], with nearly 20,000 published VUKs. This is the most comprehensive source of public VUKs available.<br />
<br />
==== BD+ ====<br />
<br />
BD+ is an additional but optional component of the Blu-ray DRM. In December 2013, VideoLAN released the long awaited {{AUR|libbdplus}} which provides experimental support for BD+ decryption. The library does not provide keys or certificates required for BD+ decryption, you need to retrieve and install them separately, as explained at [http://www.labdv.com/aacs/] and [http://www.labdv.com/aacs/advanced-users.php].<br />
<br />
{{Note|The download provided by LabDV is a ''.tar.bz2'' archive, but is named {{ic|bdplus-vm0.bz2}}. You want to put a folder named {{ic|vm0}} in {{ic|~/.config/bdplus}}, '''not''' a file named {{ic|bdplus-vm0}}. You may have to rename the file to end with ''.tar.bz2'' if you are using a GUI archiving tool.}}<br />
<br />
== Playback ==<br />
<br />
=== Preparation ===<br />
<br />
# [[Install]] {{pkg|libbluray}} and {{pkg|libaacs}} from the [[official repositories]].<br />
# Download the [http://www.labdv.com/aacs/KEYDB.cfg{{ic|KEYDB.cfg}}] file from [http://www.labdv.com/aacs/] and copy it in the directory {{ic|~/.config/aacs}}. This file contains PK, HC and VUK data required for attempting the decryption process described below for nearly 20,000 discs.<br />
# If necessary (''i.e.'' if volumes are not mounted automatically on your system), mount the disc to a directory, ''e.g.'': {{bc|# mount /dev/sr0 /media/blurays}}<br />
<br />
=== Decryption process ===<br />
<br />
Launch a Blu-ray software player, such as VLC, and try to play the disc (on VLC, select Media -> Open Disc, then in the Disc tab, chose Blu-ray. Be sure "No disc Menus" is checked.). The software player will then apply the decryption process described below:<br />
<br />
# The user starts playing a Blu-ray with a video player having libbluray and libaacs support.<br />
# If the BR disc is not scrambled with AACS, go to 4.1.<br />
# If the BR disc is scrambled with AACS, libaacs will:<br />
## Check if a valid VUK for the disc is already available in {{ic|~/.cache/aacs/vuk/}}. If yes, go to step 4.1, if not continue to next step.<br />
## Read {{ic|~/.config/aacs/KEYDB.cfg}}:<br />
### If a valid VUK is available, go to 4.1, if not continue to next step.<br />
### If a valid PK (''i.e.'' corresponding to the disc MKB version) and a valid (non-revoked by drive) Host key/certificate is available, libaacs will attempt to compute the VUK. The VUK is then stored in {{ic|~/.cache/aacs/vuk}} for future use. Go to step 4.1. If no valid PK/HKC are available, go to step 4.2.<br />
# Result<br />
## The software player is able to play the disc content.<br />
## The software player fails to read the disc content.<br />
<br />
==== Decrypting using VUK (step 3.1 or 3.2.1) ====<br />
<br />
Using the VUK specific to your disc will always work, and cannot be revoked by the industry, as it is the most downstream decryption key for a Blu-ray disc. However, there is one unique VUK per disc, corresponding to one VID, making this method rely on VUK lists or databases. The VUK will be known if either of these are true:<br />
* decrypting using PK and Host K/C described below has worked once, and the generated VUK for your disc has been stored in {{ic|~/.cache/aacs/vuk}}, or<br />
* the valid VUK for your disc has been obtained from a third party (''i.e.'' is available in {{ic|KEYDB.cfg}}). This allows you to read a disc, even if the PK and host key/certificate have been revoked for your disc MKB version.<br />
If none of these are true, then the software player will attempt decrypting the disc using the second method.<br />
<br />
==== Decrypting using PK and Host K/C (step 3.2.2) ====<br />
<br />
The advantage of this method is that - when it works - it can decrypt any disc (up to a certain MBK version) and compute the VUK required to play it. Once the VUK is known, it is then stored for future usage.<br />
<br />
{{Note|As of December 2016, latest commercial Blu-ray discs come with MKB v64. Since no PK beyond MKB v61 has been made publicly available, this decryption method may be obsolete for most recent discs. It is presented for information purpose, but has little chance to be used with recent discs until newer PKs are made available. Therefore, decrypting using VUK lists is now privileged, since it is irrevocable by the movie industry. However, this implies Linux users rely on discovery by third parties since there is no more any open source tool on Linux that can generate VUKs for discs with MKB v62 and above.}}<br />
<br />
This method uses the Processing keys and a Host key/certificate present at the beginning of the {{ic|KEYDB.cfg}} file. Currently, they will work for a disc up to MKB v61 but have been revoked in MKB v62 and above discs) in {{ic|~/.config/aacs/}}. Further, this method will only work if your drive has not revoked the host key/certificate that is in this {{ic|KEYDB.cfg}} file (''i.e.'' if you have not tried to play a disc with MKB v30 and above).<br />
<br />
If this method is successful, after you play the disc, libaacs will store the VUK in {{ic|~/.cache/aacs/vuk}}. The filename is the disc ID and its content is the VUK itself. VLC will reuse this VUK even if it does not find a valid {{ic|KEYDB.cfg}} file, so it could be a good idea to backup this directory for the future.<br />
<br />
==== BD+ support ====<br />
<br />
These pages [http://www.labdv.com/aacs/] and [http://www.labdv.com/aacs/advanced-users.php] provide you with further instructions on how to play Blu-ray discs encrypted with BD+. {{AUR|libbdplus}} provides experimental support for BD+ decryption, but if this fails, users will have to use commercial solutions, such as {{AUR|makemkv}} or [[#See also|DVDFab]] (under Wine).<br />
<br />
BD+ mainly works by adding errors to the video stream, not enough to make it unwatchable but enough to make it unpleasant to watch due to near constant artifacting. These are fixed in official players by using "fixup tables", which are downloaded from the internet and provide a mapping to convert the broken video stream into the correct video stream.<br />
libbdplus stopped working a long time ago, and for right now there's no open source method of playing discs with BD+ protection.<br />
<br />
=== Media players ===<br />
<br />
These are media players capable of using libbluray and libaacs to play AACS-scrambled Blu-ray discs.<br />
<br />
==== mplayer ====<br />
<br />
To play Blu-ray discs in mplayer the basic playback command is:<br />
<br />
$ mplayer br:///</bluray/mount/dir><br />
<br />
or:<br />
<br />
$ mplayer br://<title number> -bluray-device </bluray/mount/dir><br />
<br />
===== Stuttering video =====<br />
<br />
It is likely that you will need to enable hardware acceleration and multi core CPU support for the Blu-ray to play smoothly.<br />
<br />
For nvidia cards, enable hardware acceleration by installing libvdpau and using the option '-vo vdpau' with mplayer. e.g:<br />
<br />
$ mplayer -vo vdpau br:///</bluray/mount/dir><br />
<br />
For multi core CPU support use the options '-lavdopts threads=N', where 'N' is the number of cores, e.g:<br />
<br />
$ mplayer -lavdopts threads=2 br:///</bluray/mount/dir><br />
<br />
=====Incorrect audio language=====<br />
<br />
You can scroll through the playback languages using the '#' key.<br />
<br />
===== Out-of-sync audio =====<br />
<br />
From your first mplayer output, you must find the codec used for the Blu-ray. It will be at the end of the line "Selected video codec".<br />
<br />
For H.264 discs use the option '-vc ffh264vdpau'. e.g:<br />
<br />
$ mplayer -vc ffh264vdpau br:///</bluray/mount/dir><br />
<br />
For VC-1 discs use '-vc ffvc1vdpau'. e.g:<br />
<br />
$ mplayer -vc ffvc1vdpau br:///</bluray/mount/dir><br />
<br />
For MPEG discs use '-vc ffmpeg12vdpau'. e.g:<br />
<br />
$ mplayer -vc ffmpeg12vdpau br:///</bluray/mount/dir><br />
<br />
==== VLC ====<br />
<br />
Since version 2.0.0, vlc has had experimental Blu-ray playback support. Blu-ray menus can be used if you install {{AUR|libbluray-git}} instead of {{pkg|libbluray}}. <br />
<br />
Start playback with:<br />
<br />
$ vlc bluray://</bluray/mount/dir><br />
<br />
==== xine ====<br />
<br />
Start playback with:<br />
<br />
$ xine bluray://</bluray/mount/dir><br />
<br />
===Troubleshooting===<br />
<br />
====Absent {{ic|KEYDB.cfg}} file====<br />
<br />
If a valid VUK is found in {{ic|~/.cache/aacs/vuk}}, then libaacs does not need to use {{ic|KEYDB.cfg}} to decrypt the content. However, a {{ic|KEYDB.cfg}} file in {{ic|~/.config/aacs/}} is still required (even if that file is empty).<br />
<br />
====Revoked Host key/certificate====<br />
<br />
Unfortunately, what may happen when trying to play a newer Blu-ray disc is the revocation of host key/certificates (which are keys of licensed software players) by your drive. When this happens, {{AUR|aacskeys}} will return this message:<br />
<br />
The given Host Certficate / Private Key has been revoked by your drive.<br />
<br />
This is part of the AACS protection scheme: editors are able to revoke old software player host keys that have leaked on the Internet and distribute the lists on newer commercial disc releases. This is irreversible and does cannot be fixed even after reflashing the drive. The only two ways to correct this would be:<br />
<br />
* to update the host key/certificate part in {{ic|KEYDB.cfg}} to ones that have not been revoked (yet)<br />
* to add in {{ic|KEYDB.cfg}} the VUK of each specific disc instead, [[#Decrypting_using_VUK_.28step_3.1_or_3.2.1.29|as explained above]]. VUKs cannot be revoked by the industry.<br />
<br />
When a disc (using mplayer or vlc) is succesfully decrypted, libaacs will store the VUK in {{ic|~/.cache/aacs/vuk}}. If the host key/certificate in {{ic|KEYDB.cfg}} is subsequently revoked, VLC will still be able to use the stored VUK, so it could be a good idea to backup the {{ic|~/.cache/aacs}} directory for the future.<br />
<br />
==== Using aacskeys ====<br />
<br />
Install {{AUR|aacskeys}}. You need to run {{AUR|aacskeys}} from a directory that contains valid host key/certificate and processing keys:<br />
{{bc|cd /usr/share/aacskeys}} and run: {{bc|aacskeys </bluray/mount/dir>}} eg: {{bc|cd /usr/share/aacskeys && aacskeys /media/blurays}}<br />
<br />
If you wish, you may add the Blu-ray to the key database: edit {{ic|~/.config/aacs/KEYDB.cfg}} and add the information output by aacskeys using this syntax:<br />
{{bc|<nowiki>0x<unit key file hash> = Film Title | V | 0x<volume unique key></nowiki>}}<br />
<br />
===== If aacskeys is not able to generate the key =====<br />
<br />
Try to generate the VolumeID with [http://forum.doom9.org/showthread.php?p=993782 DumpVID] using wine. The VolumeID can now be used to generate the Blu-ray VUK with aacskeys with the VolumeID option<br />
{{bc|Usage: aacskeys [options] <mountpath> [volume id / binding nonce]}}<br />
<br />
== See also ==<br />
<br />
For DVD, the {{Pkg|libdvdcss}} package supplies the needed decryption libs. Below are some options for Blu-ray/HD-DVD decryption. Users can employ to backup a commercial Blu-ray movie under Fair Use guidelines:<br />
<br />
*{{AUR|aacskeys}} - Opensource<br />
*{{AUR|dumphd}}{{Broken package link|{{aur-mirror|dumphd}}}} - Opensource<br />
*{{AUR|makemkv}} - Closed source/limited free beta<br />
<br />
*[http://www.slysoft.com/en/anydvdhd.html anydvdhd] - Commercial software requiring users to run it on an Microsoft OS in a VM.<br />
*[https://appdb.winehq.org/objectManager.php?sClass=application&iId=2377 DVDFab HD Decrypter] - Commercial software for Windows, but works fine using [[Wine]].</div>Zekesonxxhttps://wiki.archlinux.org/index.php?title=Blu-ray&diff=465875Blu-ray2017-01-19T22:03:39Z<p>Zekesonxx: /* BD+ */ Add the note that Lesebas was trying to add but didn't do very well at.</p>
<hr />
<div>[[Category:Multimedia]]<br />
[[Category:Optical]]<br />
[[ja:Blu-ray]]<br />
{{Related articles start}}<br />
{{Related|Optical disc drive}}<br />
{{Related articles end}}<br />
This article is designed to help Linux users to play the Blu-ray discs they have legally purchased on their computers. Since no official Blu-ray player software is available on their system, Linux users have to use open-source libraries capable of handling the DRM schemes that protect these disc contents. This is legal in most countries where interoperability allows this.<br />
<br />
== How it works ==<br />
<br />
=== Blu-ray DRM ===<br />
<br />
Contrary to the DVD CSS, which was definitely compromised once the unique encryption key had been discovered, Blu-ray uses stronger DRM mechanisms, which makes it a lot more difficult to manage. Firstly, the AACS standard uses a lot more complicated cryptographic process to protect the disc content, but also allows the industry to revoke compromised keys and distribute new keys through new discs. Secondly, Blu-ray may also use another layer of protection: BD+. Although most of commercial discs use AACS, a few of them additionally use BD+. In 2007, the AACS system was compromised and decryption keys were published on the Internet. Many decryption programs were made available, but the interest to Linux users was the capability of playing their discs - legally purchased - on their computers. Although the industry was able to revoke the first leaked decryption keys, new keys are regularly published in a cat and mouse play.<br />
<br />
==== AACS ====<br />
<br />
The AACS specification and decryption process are publicly available at [http://www.aacsla.com/specifications/]. Many articles and research papers describe it in detail at [http://forum.doom9.org/showthread.php?t=122363], [http://cacr.uwaterloo.ca/~dstinson/papers/AACS-journal.pdf] or [http://www.iis.sinica.edu.tw/papers/lcs/5007-F.pdf].<br />
<br />
{{pkg|libaacs}} is a research project from the VideoLAN developer team to implement the Advanced Access Content System specification, and distributed as an open-source library [http://www.videolan.org/developers/libaacs.html]. This project does not offer any key or certificate that could be used to decode encrypted copyrighted material. However, combined with a key database file, it is possible to use it to play Blu-ray discs that use the AACS standard. This file is called {{ic|KEYDB.cfg}} and is accessed by libaacs in {{ic|~/.config/aacs}}. The format of this file is available at [http://git.videolan.org/?p=libaacs.git;a=blob_plain;f=KEYDB.cfg;hb=HEAD].<br />
<br />
===== AACS decryption process =====<br />
<br />
The AACS decryption process for a protected disc by a licensed player goes through four stages:<br />
<br />
# The software/embedded player's Device Keys, together with the disc's Media Key Block (MKB) data are used to retrieve a "Processing Key", and with that (plus another datum from the MKB) to compute the Media Key.<br />
# That Media Key, together with the disc's Volume ID (VID) obtained by the player presenting a valid Host Certificate to the drive is used to compute the Volume Unique Key (VUK).<br />
# This VUK is used to unscramble the disc's scrambled Title Keys.<br />
# Finally those Title Keys unscramble the disc's protected media content.<br />
<br />
Note that it is the disc that contains the MKB. MKBs have been renewed since the first commercial Blu-ray release in 2006. The latest MKB is version 64, but many MKB actually share the same key. The software player provides the Host key and certificate, whereas the drive contains a list of the Host key/certificates that have been revoked. Host key/certification revocation occurs when a newer disc (containing a higher MKB than the previous played disc) is decrypted, or played, or attempted to decrypt or play (the mere insertion of a disc does not update the drive). When this happens, the drive forever loses its capability to use older Host key/certificates.<br />
<br />
Using {{Pkg|libaacs}}, the decryption process can skip some of these stages to reach the last step, which allows the media player to play the disc. This is either by providing in the {{ic|KEYDB.cfg}} file either (or both):<br />
<br />
* a valid (corresponding to the MKB version of the disc) Processing key and a valid (i.e. non revoked by the drive) Host key/certificate<br />
* a valid VUK for the specific disc.<br />
<br />
If libaacs finds a valid processing key for the disc MKB version as well as a valid Host key and certificates, it can start the decryption process from step 2. However, the Host key/certificates are regularly revoked through the propagation of new Blu-ray discs. Once revoked, a drive is not able to read both new and older discs. This is usually irreversible and can only be fixed by providing a more recent Host key/certificate (for Windows users, this corresponds to updating their software player). The advantage of this method is that until the Host key/certificate is revoked, and as long as the disc uses an MKB version for which the Processing key is known, libaacs is able to compute the VUK of any disc. As of today, the Processing keys for MKB version up to 61 have been computed and made available on the Internet. Thus, this method is slightly outdated.<br />
<br />
Thankfully, in case no valid Processing key is available and/or the Host certificate has been revoked, libaacs has an alternative way to decrypt a disc: by providing a valid VUK in the {{ic|KEYDB.cfg}} file. This allows libaacs to skip directly to step 3. Contrary to the Processing keys, VUKs are disc specific. Therefore this is less efficient as the user will have to get the VUK from a third party. But the great advantage is that VUKs cannot be revoked. Note that if libaacs is able to perform step 2 (with a valid Host key/certificate), then it stores the VUK calculated in step 3 in {{ic|~/.cache/aacs/vuk}}. At subsequent viewings of the same disc, libaacs can reuse the stored VUK. Thus it may be a good idea to backup these VUKs, or even better, to upload them to [http://www.labdv.com/aacs/].<br />
<br />
There have been several efforts to compile VUKs from various sources. Early attempts include forum threads, such as available at [http://forum.doom9.org/attachment.php?attachmentid=11170&d=1276615904] or [http://forum.doom9.org/showthread.php?p=1525922#post1525922]. Recently, a centralised VUK database has been made available at [http://www.labdv.com/aacs/], with nearly 20,000 published VUKs. This is the most comprehensive source of public VUKs available.<br />
<br />
==== BD+ ====<br />
<br />
BD+ is an additional but optional component of the Blu-ray DRM. In December 2013, VideoLAN released the long awaited {{AUR|libbdplus}} which provides experimental support for BD+ decryption. The library does not provide keys or certificates required for BD+ decryption, you need to retrieve and install them separately, as explained at [http://www.labdv.com/aacs/] and [http://www.labdv.com/aacs/advanced-users.php].<br />
<br />
{{Note|The download provided by LabDV is a {{ic|.tar.bz2}} archive, but is named {{ic|bdplus-vm0.bz2}}. You want to put a folder named {{ic|vm0}} in {{ic|~/.config/bdplus}}, '''not''' a file named {{ic|bdplus-vm0}}. You may have to rename the file to end with {{ic|.tar.bz2}} if you are using a GUI archiving tool.}}<br />
<br />
== Playback ==<br />
<br />
=== Preparation ===<br />
<br />
# [[Install]] {{pkg|libbluray}} and {{pkg|libaacs}} from the [[official repositories]].<br />
# Download the [http://www.labdv.com/aacs/KEYDB.cfg{{ic|KEYDB.cfg}}] file from [http://www.labdv.com/aacs/] and copy it in the directory {{ic|~/.config/aacs}}. This file contains PK, HC and VUK data required for attempting the decryption process described below for nearly 20,000 discs.<br />
# If necessary (''i.e.'' if volumes are not mounted automatically on your system), mount the disc to a directory, ''e.g.'': {{bc|# mount /dev/sr0 /media/blurays}}<br />
<br />
=== Decryption process ===<br />
<br />
Launch a Blu-ray software player, such as VLC, and try to play the disc (on VLC, select Media -> Open Disc, then in the Disc tab, chose Blu-ray. Be sure "No disc Menus" is checked.). The software player will then apply the decryption process described below:<br />
<br />
# The user starts playing a Blu-ray with a video player having libbluray and libaacs support.<br />
# If the BR disc is not scrambled with AACS, go to 4.1.<br />
# If the BR disc is scrambled with AACS, libaacs will:<br />
## Check if a valid VUK for the disc is already available in {{ic|~/.cache/aacs/vuk/}}. If yes, go to step 4.1, if not continue to next step.<br />
## Read {{ic|~/.config/aacs/KEYDB.cfg}}:<br />
### If a valid VUK is available, go to 4.1, if not continue to next step.<br />
### If a valid PK (''i.e.'' corresponding to the disc MKB version) and a valid (non-revoked by drive) Host key/certificate is available, libaacs will attempt to compute the VUK. The VUK is then stored in {{ic|~/.cache/aacs/vuk}} for future use. Go to step 4.1. If no valid PK/HKC are available, go to step 4.2.<br />
# Result<br />
## The software player is able to play the disc content.<br />
## The software player fails to read the disc content.<br />
<br />
==== Decrypting using VUK (step 3.1 or 3.2.1) ====<br />
<br />
Using the VUK specific to your disc will always work, and cannot be revoked by the industry, as it is the most downstream decryption key for a Blu-ray disc. However, there is one unique VUK per disc, corresponding to one VID, making this method rely on VUK lists or databases. The VUK will be known if either of these are true:<br />
* decrypting using PK and Host K/C described below has worked once, and the generated VUK for your disc has been stored in {{ic|~/.cache/aacs/vuk}}, or<br />
* the valid VUK for your disc has been obtained from a third party (''i.e.'' is available in {{ic|KEYDB.cfg}}). This allows you to read a disc, even if the PK and host key/certificate have been revoked for your disc MKB version.<br />
If none of these are true, then the software player will attempt decrypting the disc using the second method.<br />
<br />
==== Decrypting using PK and Host K/C (step 3.2.2) ====<br />
<br />
The advantage of this method is that - when it works - it can decrypt any disc (up to a certain MBK version) and compute the VUK required to play it. Once the VUK is known, it is then stored for future usage.<br />
<br />
{{Note|As of December 2016, latest commercial Blu-ray discs come with MKB v64. Since no PK beyond MKB v61 has been made publicly available, this decryption method may be obsolete for most recent discs. It is presented for information purpose, but has little chance to be used with recent discs until newer PKs are made available. Therefore, decrypting using VUK lists is now privileged, since it is irrevocable by the movie industry. However, this implies Linux users rely on discovery by third parties since there is no more any open source tool on Linux that can generate VUKs for discs with MKB v62 and above.}}<br />
<br />
This method uses the Processing keys and a Host key/certificate present at the beginning of the {{ic|KEYDB.cfg}} file. Currently, they will work for a disc up to MKB v61 but have been revoked in MKB v62 and above discs) in {{ic|~/.config/aacs/}}. Further, this method will only work if your drive has not revoked the host key/certificate that is in this {{ic|KEYDB.cfg}} file (''i.e.'' if you have not tried to play a disc with MKB v30 and above).<br />
<br />
If this method is successful, after you play the disc, libaacs will store the VUK in {{ic|~/.cache/aacs/vuk}}. The filename is the disc ID and its content is the VUK itself. VLC will reuse this VUK even if it does not find a valid {{ic|KEYDB.cfg}} file, so it could be a good idea to backup this directory for the future.<br />
<br />
==== BD+ support ====<br />
<br />
These pages [http://www.labdv.com/aacs/] and [http://www.labdv.com/aacs/advanced-users.php] provide you with further instructions on how to play Blu-ray discs encrypted with BD+. {{AUR|libbdplus}} provides experimental support for BD+ decryption, but if this fails, users will have to use commercial solutions, such as {{AUR|makemkv}} or [[#See also|DVDFab]] (under Wine).<br />
<br />
=== Media players ===<br />
<br />
These are media players capable of using libbluray and libaacs to play AACS-scrambled Blu-ray discs.<br />
<br />
==== mplayer ====<br />
<br />
To play Blu-ray discs in mplayer the basic playback command is:<br />
<br />
$ mplayer br:///</bluray/mount/dir><br />
<br />
or:<br />
<br />
$ mplayer br://<title number> -bluray-device </bluray/mount/dir><br />
<br />
===== Stuttering video =====<br />
<br />
It is likely that you will need to enable hardware acceleration and multi core CPU support for the Blu-ray to play smoothly.<br />
<br />
For nvidia cards, enable hardware acceleration by installing libvdpau and using the option '-vo vdpau' with mplayer. e.g:<br />
<br />
$ mplayer -vo vdpau br:///</bluray/mount/dir><br />
<br />
For multi core CPU support use the options '-lavdopts threads=N', where 'N' is the number of cores, e.g:<br />
<br />
$ mplayer -lavdopts threads=2 br:///</bluray/mount/dir><br />
<br />
=====Incorrect audio language=====<br />
<br />
You can scroll through the playback languages using the '#' key.<br />
<br />
===== Out-of-sync audio =====<br />
<br />
From your first mplayer output, you must find the codec used for the Blu-ray. It will be at the end of the line "Selected video codec".<br />
<br />
For H.264 discs use the option '-vc ffh264vdpau'. e.g:<br />
<br />
$ mplayer -vc ffh264vdpau br:///</bluray/mount/dir><br />
<br />
For VC-1 discs use '-vc ffvc1vdpau'. e.g:<br />
<br />
$ mplayer -vc ffvc1vdpau br:///</bluray/mount/dir><br />
<br />
For MPEG discs use '-vc ffmpeg12vdpau'. e.g:<br />
<br />
$ mplayer -vc ffmpeg12vdpau br:///</bluray/mount/dir><br />
<br />
==== VLC ====<br />
<br />
Since version 2.0.0, vlc has had experimental Blu-ray playback support. Blu-ray menus can be used if you install {{AUR|libbluray-git}} instead of {{pkg|libbluray}}. <br />
<br />
Start playback with:<br />
<br />
$ vlc bluray://</bluray/mount/dir><br />
<br />
==== xine ====<br />
<br />
Start playback with:<br />
<br />
$ xine bluray://</bluray/mount/dir><br />
<br />
===Troubleshooting===<br />
<br />
====Absent {{ic|KEYDB.cfg}} file====<br />
<br />
If a valid VUK is found in {{ic|~/.cache/aacs/vuk}}, then libaacs does not need to use {{ic|KEYDB.cfg}} to decrypt the content. However, a {{ic|KEYDB.cfg}} file in {{ic|~/.config/aacs/}} is still required (even if that file is empty).<br />
<br />
====Revoked Host key/certificate====<br />
<br />
Unfortunately, what may happen when trying to play a newer Blu-ray disc is the revocation of host key/certificates (which are keys of licensed software players) by your drive. When this happens, {{AUR|aacskeys}} will return this message:<br />
<br />
The given Host Certficate / Private Key has been revoked by your drive.<br />
<br />
This is part of the AACS protection scheme: editors are able to revoke old software player host keys that have leaked on the Internet and distribute the lists on newer commercial disc releases. This is irreversible and does cannot be fixed even after reflashing the drive. The only two ways to correct this would be:<br />
<br />
* to update the host key/certificate part in {{ic|KEYDB.cfg}} to ones that have not been revoked (yet)<br />
* to add in {{ic|KEYDB.cfg}} the VUK of each specific disc instead, [[#Decrypting_using_VUK_.28step_3.1_or_3.2.1.29|as explained above]]. VUKs cannot be revoked by the industry.<br />
<br />
When a disc (using mplayer or vlc) is succesfully decrypted, libaacs will store the VUK in {{ic|~/.cache/aacs/vuk}}. If the host key/certificate in {{ic|KEYDB.cfg}} is subsequently revoked, VLC will still be able to use the stored VUK, so it could be a good idea to backup the {{ic|~/.cache/aacs}} directory for the future.<br />
<br />
==== Using aacskeys ====<br />
<br />
Install {{AUR|aacskeys}}. You need to run {{AUR|aacskeys}} from a directory that contains valid host key/certificate and processing keys:<br />
{{bc|cd /usr/share/aacskeys}} and run: {{bc|aacskeys </bluray/mount/dir>}} eg: {{bc|cd /usr/share/aacskeys && aacskeys /media/blurays}}<br />
<br />
If you wish, you may add the Blu-ray to the key database: edit {{ic|~/.config/aacs/KEYDB.cfg}} and add the information output by aacskeys using this syntax:<br />
{{bc|<nowiki>0x<unit key file hash> = Film Title | V | 0x<volume unique key></nowiki>}}<br />
<br />
===== If aacskeys is not able to generate the key =====<br />
<br />
Try to generate the VolumeID with [http://forum.doom9.org/showthread.php?p=993782 DumpVID] using wine. The VolumeID can now be used to generate the Blu-ray VUK with aacskeys with the VolumeID option<br />
{{bc|Usage: aacskeys [options] <mountpath> [volume id / binding nonce]}}<br />
<br />
== See also ==<br />
<br />
For DVD, the {{Pkg|libdvdcss}} package supplies the needed decryption libs. Below are some options for Blu-ray/HD-DVD decryption. Users can employ to backup a commercial Blu-ray movie under Fair Use guidelines:<br />
<br />
*{{AUR|aacskeys}} - Opensource<br />
*{{AUR|dumphd}}{{Broken package link|{{aur-mirror|dumphd}}}} - Opensource<br />
*{{AUR|makemkv}} - Closed source/limited free beta<br />
<br />
*[http://www.slysoft.com/en/anydvdhd.html anydvdhd] - Commercial software requiring users to run it on an Microsoft OS in a VM.<br />
*[https://appdb.winehq.org/objectManager.php?sClass=application&iId=2377 DVDFab HD Decrypter] - Commercial software for Windows, but works fine using [[Wine]].</div>Zekesonxxhttps://wiki.archlinux.org/index.php?title=Blu-ray&diff=461943Blu-ray2017-01-08T05:04:37Z<p>Zekesonxx: /* BD+ */ add note about labdv.com being incompetent at file naming.</p>
<hr />
<div>[[Category:Multimedia]]<br />
[[Category:Optical]]<br />
[[ja:Blu-ray]]<br />
{{Related articles start}}<br />
{{Related|Optical disc drive}}<br />
{{Related articles end}}<br />
This article is designed to help Linux users to play the Blu-ray discs they have legally purchased on their computers. Since no official Blu-ray player software is available on their system, Linux users have to use open-source libraries capable of handling the DRM schemes that protect these disc contents. This is legal in most countries where interoperability allows this.<br />
<br />
== How it works ==<br />
<br />
=== Blu-ray DRM ===<br />
<br />
Contrary to the DVD CSS, which was definitely compromised once the unique encryption key had been discovered, Blu-ray uses stronger DRM mechanisms, which makes it a lot more difficult to manage. Firstly, the AACS standard uses a lot more complicated cryptographic process to protect the disc content, but also allows the industry to revoke compromised keys and distribute new keys through new discs. Secondly, Blu-ray may also use another layer of protection: BD+. Although most of commercial discs use AACS, a few of them additionally use BD+. In 2007, the AACS system was compromised and decryption keys were published on the Internet. Many decryption programs were made available, but the interest to Linux users was the capability of playing their discs - legally purchased - on their computers. Although the industry was able to revoke the first leaked decryption keys, new keys are regularly published in a cat and mouse play.<br />
<br />
==== AACS ====<br />
<br />
The AACS specification and decryption process are publicly available at [http://www.aacsla.com/specifications/]. Many articles and research papers describe it in detail at [http://forum.doom9.org/showthread.php?t=122363], [http://cacr.uwaterloo.ca/~dstinson/papers/AACS-journal.pdf] or [http://www.iis.sinica.edu.tw/papers/lcs/5007-F.pdf].<br />
<br />
{{pkg|libaacs}} is a research project from the VideoLAN developer team to implement the Advanced Access Content System specification, and distributed as an open-source library [http://www.videolan.org/developers/libaacs.html]. This project does not offer any key or certificate that could be used to decode encrypted copyrighted material. However, combined with a key database file, it is possible to use it to play Blu-ray discs that use the AACS standard. This file is called {{ic|KEYDB.cfg}} and is accessed by libaacs in {{ic|~/.config/aacs}}. The format of this file is available at [http://git.videolan.org/?p=libaacs.git;a=blob_plain;f=KEYDB.cfg;hb=HEAD].<br />
<br />
===== AACS decryption process =====<br />
<br />
The AACS decryption process for a protected disc by a licensed player goes through four stages:<br />
<br />
# The software/embedded player's Device Keys, together with the disc's Media Key Block (MKB) data are used to retrieve a "Processing Key", and with that (plus another datum from the MKB) to compute the Media Key.<br />
# That Media Key, together with the disc's Volume ID (VID) obtained by the player presenting a valid Host Certificate to the drive is used to compute the Volume Unique Key (VUK).<br />
# This VUK is used to unscramble the disc's scrambled Title Keys.<br />
# Finally those Title Keys unscramble the disc's protected media content.<br />
<br />
Note that it is the disc that contains the MKB. MKBs have been renewed since the first commercial Blu-ray release in 2006. The latest MKB is version 64, but many MKB actually share the same key. The software player provides the Host key and certificate, whereas the drive contains a list of the Host key/certificates that have been revoked. Host key/certification revocation occurs when a newer disc (containing a higher MKB than the previous played disc) is decrypted, or played, or attempted to decrypt or play (the mere insertion of a disc does not update the drive). When this happens, the drive forever loses its capability to use older Host key/certificates.<br />
<br />
Using {{Pkg|libaacs}}, the decryption process can skip some of these stages to reach the last step, which allows the media player to play the disc. This is either by providing in the {{ic|KEYDB.cfg}} file either (or both):<br />
<br />
* a valid (corresponding to the MKB version of the disc) Processing key and a valid (i.e. non revoked by the drive) Host key/certificate<br />
* a valid VUK for the specific disc.<br />
<br />
If libaacs finds a valid processing key for the disc MKB version as well as a valid Host key and certificates, it can start the decryption process from step 2. However, the Host key/certificates are regularly revoked through the propagation of new Blu-ray discs. Once revoked, a drive is not able to read both new and older discs. This is usually irreversible and can only be fixed by providing a more recent Host key/certificate (for Windows users, this corresponds to updating their software player). The advantage of this method is that until the Host key/certificate is revoked, and as long as the disc uses an MKB version for which the Processing key is known, libaacs is able to compute the VUK of any disc. As of today, the Processing keys for MKB version up to 61 have been computed and made available on the Internet. Thus, this method is slightly outdated.<br />
<br />
Thankfully, in case no valid Processing key is available and/or the Host certificate has been revoked, libaacs has an alternative way to decrypt a disc: by providing a valid VUK in the {{ic|KEYDB.cfg}} file. This allows libaacs to skip directly to step 3. Contrary to the Processing keys, VUKs are disc specific. Therefore this is less efficient as the user will have to get the VUK from a third party. But the great advantage is that VUKs cannot be revoked. Note that if libaacs is able to perform step 2 (with a valid Host key/certificate), then it stores the VUK calculated in step 3 in {{ic|~/.cache/aacs/vuk}}. At subsequent viewings of the same disc, libaacs can reuse the stored VUK. Thus it may be a good idea to backup these VUKs, or even better, to upload them to [http://www.labdv.com/aacs/].<br />
<br />
There have been several efforts to compile VUKs from various sources. Early attempts include forum threads, such as available at [http://forum.doom9.org/attachment.php?attachmentid=11170&d=1276615904] or [http://forum.doom9.org/showthread.php?p=1525922#post1525922]. Recently, a centralised VUK database has been made available at [http://www.labdv.com/aacs/], with nearly 20,000 published VUKs. This is the most comprehensive source of public VUKs available.<br />
<br />
==== BD+ ====<br />
<br />
BD+ is an additional but optional component of the Blu-ray DRM. In December 2013, VideoLAN released the long awaited {{AUR|libbdplus}} which provides experimental support for BD+ decryption. The library does not provide keys or certificates required for BD+ decryption, you need to retrieve and install them separately, as explained at [http://www.labdv.com/aacs/] and [http://www.labdv.com/aacs/advanced-users.php].<br />
<br />
{{Note|The download provided by LabDV is a {{ic|.tar.bz2}} archive, but is named {{ic|bdplus-vm0.bz2}}. You want to put a folder named {{ic|vm0}} in {{ic|~/.config/bdplus}}, '''not''' a file named {{ic|bdplus-vm0}}.}}<br />
<br />
== Playback ==<br />
<br />
=== Preparation ===<br />
<br />
# [[Install]] {{pkg|libbluray}} and {{pkg|libaacs}} from the [[official repositories]].<br />
# Download the [http://www.labdv.com/aacs/KEYDB.cfg{{ic|KEYDB.cfg}}] file from [http://www.labdv.com/aacs/] and copy it in the directory {{ic|~/.config/aacs}}. This file contains PK, HC and VUK data required for attempting the decryption process described below for nearly 20,000 discs.<br />
# If necessary (''i.e.'' if volumes are not mounted automatically on your system), mount the disc to a directory, ''e.g.'': {{bc|# mount /dev/sr0 /media/blurays}}<br />
<br />
=== Decryption process ===<br />
<br />
Launch a Blu-ray software player, such as VLC, and try to play the disc (on VLC, select Media -> Open Disc, then in the Disc tab, chose Blu-ray. Be sure "No disc Menus" is checked.). The software player will then apply the decryption process described below:<br />
<br />
# The user starts playing a Blu-ray with a video player having libbluray and libaacs support.<br />
# If the BR disc is not scrambled with AACS, go to 4.1.<br />
# If the BR disc is scrambled with AACS, libaacs will:<br />
## Check if a valid VUK for the disc is already available in {{ic|~/.cache/aacs/vuk/}}. If yes, go to step 4.1, if not continue to next step.<br />
## Read {{ic|~/.config/aacs/KEYDB.cfg}}:<br />
### If a valid VUK is available, go to 4.1, if not continue to next step.<br />
### If a valid PK (''i.e.'' corresponding to the disc MKB version) and a valid (non-revoked by drive) Host key/certificate is available, libaacs will attempt to compute the VUK. The VUK is then stored in {{ic|~/.cache/aacs/vuk}} for future use. Go to step 4.1. If no valid PK/HKC are available, go to step 4.2.<br />
# Result<br />
## The software player is able to play the disc content.<br />
## The software player fails to read the disc content.<br />
<br />
==== Decrypting using VUK (step 3.1 or 3.2.1) ====<br />
<br />
Using the VUK specific to your disc will always work, and cannot be revoked by the industry, as it is the most downstream decryption key for a Blu-ray disc. However, there is one unique VUK per disc, corresponding to one VID, making this method rely on VUK lists or databases. The VUK will be known if either of these are true:<br />
* decrypting using PK and Host K/C described below has worked once, and the generated VUK for your disc has been stored in {{ic|~/.cache/aacs/vuk}}, or<br />
* the valid VUK for your disc has been obtained from a third party (''i.e.'' is available in {{ic|KEYDB.cfg}}). This allows you to read a disc, even if the PK and host key/certificate have been revoked for your disc MKB version.<br />
If none of these are true, then the software player will attempt decrypting the disc using the second method.<br />
<br />
==== Decrypting using PK and Host K/C (step 3.2.2) ====<br />
<br />
The advantage of this method is that - when it works - it can decrypt any disc (up to a certain MBK version) and compute the VUK required to play it. Once the VUK is known, it is then stored for future usage.<br />
<br />
{{Note|As of December 2016, latest commercial Blu-ray discs come with MKB v64. Since no PK beyond MKB v61 has been made publicly available, this decryption method may be obsolete for most recent discs. It is presented for information purpose, but has little chance to be used with recent discs until newer PKs are made available. Therefore, decrypting using VUK lists is now privileged, since it is irrevocable by the movie industry. However, this implies Linux users rely on discovery by third parties since there is no more any open source tool on Linux that can generate VUKs for discs with MKB v62 and above.}}<br />
<br />
This method uses the Processing keys and a Host key/certificate present at the beginning of the {{ic|KEYDB.cfg}} file. Currently, they will work for a disc up to MKB v61 but have been revoked in MKB v62 and above discs) in {{ic|~/.config/aacs/}}. Further, this method will only work if your drive has not revoked the host key/certificate that is in this {{ic|KEYDB.cfg}} file (''i.e.'' if you have not tried to play a disc with MKB v30 and above).<br />
<br />
If this method is successful, after you play the disc, libaacs will store the VUK in {{ic|~/.cache/aacs/vuk}}. The filename is the disc ID and its content is the VUK itself. VLC will reuse this VUK even if it does not find a valid {{ic|KEYDB.cfg}} file, so it could be a good idea to backup this directory for the future.<br />
<br />
==== BD+ support ====<br />
<br />
These pages [http://www.labdv.com/aacs/] and [http://www.labdv.com/aacs/advanced-users.php] provide you with further instructions on how to play Blu-ray discs encrypted with BD+. {{AUR|libbdplus}} provides experimental support for BD+ decryption, but if this fails, users will have to use commercial solutions, such as {{AUR|makemkv}} or [[#See also|DVDFab]] (under Wine).<br />
<br />
=== Media players ===<br />
<br />
These are media players capable of using libbluray and libaacs to play AACS-scrambled Blu-ray discs.<br />
<br />
==== mplayer ====<br />
<br />
To play Blu-ray discs in mplayer the basic playback command is:<br />
<br />
$ mplayer br:///</bluray/mount/dir><br />
<br />
or:<br />
<br />
$ mplayer br://<title number> -bluray-device </bluray/mount/dir><br />
<br />
===== Stuttering video =====<br />
<br />
It is likely that you will need to enable hardware acceleration and multi core CPU support for the Blu-ray to play smoothly.<br />
<br />
For nvidia cards, enable hardware acceleration by installing libvdpau and using the option '-vo vdpau' with mplayer. e.g:<br />
<br />
$ mplayer -vo vdpau br:///</bluray/mount/dir><br />
<br />
For multi core CPU support use the options '-lavdopts threads=N', where 'N' is the number of cores, e.g:<br />
<br />
$ mplayer -lavdopts threads=2 br:///</bluray/mount/dir><br />
<br />
=====Incorrect audio language=====<br />
<br />
You can scroll through the playback languages using the '#' key.<br />
<br />
===== Out-of-sync audio =====<br />
<br />
From your first mplayer output, you must find the codec used for the Blu-ray. It will be at the end of the line "Selected video codec".<br />
<br />
For H.264 discs use the option '-vc ffh264vdpau'. e.g:<br />
<br />
$ mplayer -vc ffh264vdpau br:///</bluray/mount/dir><br />
<br />
For VC-1 discs use '-vc ffvc1vdpau'. e.g:<br />
<br />
$ mplayer -vc ffvc1vdpau br:///</bluray/mount/dir><br />
<br />
For MPEG discs use '-vc ffmpeg12vdpau'. e.g:<br />
<br />
$ mplayer -vc ffmpeg12vdpau br:///</bluray/mount/dir><br />
<br />
==== VLC ====<br />
<br />
Since version 2.0.0, vlc has had experimental Blu-ray playback support. Blu-ray menus can be used if you install {{AUR|libbluray-git}} instead of {{pkg|libbluray}}. <br />
<br />
Start playback with:<br />
<br />
$ vlc bluray://</bluray/mount/dir><br />
<br />
==== xine ====<br />
<br />
Start playback with:<br />
<br />
$ xine bluray://</bluray/mount/dir><br />
<br />
===Troubleshooting===<br />
<br />
====Absent {{ic|KEYDB.cfg}} file====<br />
<br />
If a valid VUK is found in {{ic|~/.cache/aacs/vuk}}, then libaacs does not need to use {{ic|KEYDB.cfg}} to decrypt the content. However, a {{ic|KEYDB.cfg}} file in {{ic|~/.config/aacs/}} is still required (even if that file is empty).<br />
<br />
====Revoked Host key/certificate====<br />
<br />
Unfortunately, what may happen when trying to play a newer Blu-ray disc is the revocation of host key/certificates (which are keys of licensed software players) by your drive. When this happens, {{AUR|aacskeys}} will return this message:<br />
<br />
The given Host Certficate / Private Key has been revoked by your drive.<br />
<br />
This is part of the AACS protection scheme: editors are able to revoke old software player host keys that have leaked on the Internet and distribute the lists on newer commercial disc releases. This is irreversible and does cannot be fixed even after reflashing the drive. The only two ways to correct this would be:<br />
<br />
* to update the host key/certificate part in {{ic|KEYDB.cfg}} to ones that have not been revoked (yet)<br />
* to add in {{ic|KEYDB.cfg}} the VUK of each specific disc instead, [[#Decrypting_using_VUK_.28step_3.1_or_3.2.1.29|as explained above]]. VUKs cannot be revoked by the industry.<br />
<br />
When a disc (using mplayer or vlc) is succesfully decrypted, libaacs will store the VUK in {{ic|~/.cache/aacs/vuk}}. If the host key/certificate in {{ic|KEYDB.cfg}} is subsequently revoked, VLC will still be able to use the stored VUK, so it could be a good idea to backup the {{ic|~/.cache/aacs}} directory for the future.<br />
<br />
==== Using aacskeys ====<br />
<br />
Install {{AUR|aacskeys}}. You need to run {{AUR|aacskeys}} from a directory that contains valid host key/certificate and processing keys:<br />
{{bc|cd /usr/share/aacskeys}} and run: {{bc|aacskeys </bluray/mount/dir>}} eg: {{bc|cd /usr/share/aacskeys && aacskeys /media/blurays}}<br />
<br />
If you wish, you may add the Blu-ray to the key database: edit {{ic|~/.config/aacs/KEYDB.cfg}} and add the information output by aacskeys using this syntax:<br />
{{bc|<nowiki>0x<unit key file hash> = Film Title | V | 0x<volume unique key></nowiki>}}<br />
<br />
===== If aacskeys is not able to generate the key =====<br />
<br />
Try to generate the VolumeID with [http://forum.doom9.org/showthread.php?p=993782 DumpVID] using wine. The VolumeID can now be used to generate the Blu-ray VUK with aacskeys with the VolumeID option<br />
{{bc|Usage: aacskeys [options] <mountpath> [volume id / binding nonce]}}<br />
<br />
== See also ==<br />
<br />
For DVD, the {{Pkg|libdvdcss}} package supplies the needed decryption libs. Below are some options for Blu-ray/HD-DVD decryption. Users can employ to backup a commercial Blu-ray movie under Fair Use guidelines:<br />
<br />
*{{AUR|aacskeys}} - Opensource<br />
*{{AUR|dumphd}}{{Broken package link|{{aur-mirror|dumphd}}}} - Opensource<br />
*{{AUR|makemkv}} - Closed source/limited free beta<br />
<br />
*[http://www.slysoft.com/en/anydvdhd.html anydvdhd] - Commercial software requiring users to run it on an Microsoft OS in a VM.<br />
*[https://appdb.winehq.org/objectManager.php?sClass=application&iId=2377 DVDFab HD Decrypter] - Commercial software for Windows, but works fine using [[Wine]].</div>Zekesonxxhttps://wiki.archlinux.org/index.php?title=User:Zekesonxx&diff=461118User:Zekesonxx2017-01-02T09:47:18Z<p>Zekesonxx: /* Computer Specs */ the ssd is so fast it almost compensates for the sadness of my life</p>
<hr />
<div>I program things and sometimes contribute things.<br />
<br />
https://github.com/zekesonxx<br />
<br />
Zeke's Law of AUR Packages: Given a long enough period of time, every Arch installation will eventually install {{pkg|gcc-fortran}}.<br />
<br />
=== Computer Specs ===<br />
Desktop: i5-2320, 16GB RAM, GTX 970, running <del>Windows 7 Home Premium 64-bit with dwm.exe</del> Arch Linux with xfce4.<br />
<br />
Laptop: Dell Inspiron M5030, running Arch 64-bit with xfce4, off a <del>16GB flash drive</del> <del>80GB 5400RPM hard drive!</del> 64GB ADATA SSD! Whoo!.<br />
<br />
=== PGP ===<br />
<br />
{{bc|<nowiki>-----BEGIN PGP SIGNED MESSAGE-----<br />
Hash: SHA512<br />
<br />
I hearby verify that I am user Zekesonxx on the Arch Linux Wiki, as of 2015-09-17.<br />
<br />
User page: https://wiki.archlinux.org/index.php/User:Zekesonxx<br />
-----BEGIN PGP SIGNATURE-----<br />
Version: GnuPG v2<br />
<br />
iQEcBAEBCgAGBQJV+2YNAAoJEIzSZXCb/eAOnxYH/2Jd35L92d1NPMssOJNNp5Af<br />
2FL4aiLAqmOR0xXwMBjn1yPQfbVY50Z+mJWrdnPiQyKDkQQ7httdKx2PqGFxWh0y<br />
1VWODlyEoWwq3yMTmSZOrDU3MUZ6K24Rp8XClqEI0y1cyodHxtnunRXjkd8u+yuY<br />
8TMZFE+pYaW8zTLWP+zqhfnbAdrQjHJMVaRn+wJKSwsFYPZP9BaQVK71An10t66e<br />
BENWYkHnfUdACy6lhb+WYr5uytlfGyvdKXY+ty/axXpUjQIMFY7U3GAdsJVEQwLh<br />
Og39UNhsaLOTMhoD8A7UDx6EvjsEVn5Qz9alpG1ZLlnK/WxgoFwgX0nN/C491qY=<br />
=9YEs<br />
-----END PGP SIGNATURE-----<br />
</nowiki>}}<br />
<br />
Personal: [https://pgp.mit.edu/pks/lookup?op=vindex&fingerprint=on&search=0x79B1898A53A871BF4D202E778CD265709BFDE00E 79B1 898A 53A8 71BF 4D20 2E77 8CD2 6570 9BFD E00E] ([https://keybase.io/zekesonxx keybase.io])<br/><br />
Package: [https://pgp.mit.edu/pks/lookup?op=vindex&fingerprint=on&search=0xC1AE1A2666B42BFD91AB26819C7F3483D6B6F0E0 C1AE 1A26 66B4 2BFD 91AB 2681 9C7F 3483 D6B6 F0E0]<br />
<br />
The signature above is meant as a replacement for using a [[Wikipedia:Wikipedia:Wikipedia Signpost/2007-05-14/Committed identity|committed identity hash]], as well as proof that I am who I say I am.</div>Zekesonxxhttps://wiki.archlinux.org/index.php?title=Mumble&diff=449282Mumble2016-09-04T01:47:05Z<p>Zekesonxx: /* Installation */ add link to lib32-libmumble aur package</p>
<hr />
<div>[[Category:Telephony and voice]]<br />
From [[Wikipedia:Mumble (software)|Wikipedia, the free encyclopedia]]:<br />
<br />
:''Mumble is a voice over IP (VoIP) application primarily designed for use by gamers, similar to programs such as TeamSpeak and Ventrilo.''<br />
<br />
This page goes over installation and configuration of both the client portion of the software (Mumble) and the server portion (Murmur).<br />
<br />
== Client ==<br />
<br />
=== Installation ===<br />
[[Install]] the {{pkg|mumble}} package (or {{AUR|mumble-git}} for the development version).<br />
<br />
For [[JACK]] support, install the {{AUR|mumble-jack}} package (or {{AUR|mumble-jack-git}} for the development version).<br />
<br />
If you're on a x86_64 system and would like to use the Mumble overlay with 32-bit games, you'll need to install {{AUR|lib32-libmumble}}.<br />
<br />
=== Configuration ===<br />
When you first launch the client, a configuration wizard will take you through the setup process.<br />
Settings can be changed later through the menu.<br />
<br />
For a discussion of advanced settings, see the<br />
[http://mumble.sourceforge.net/ official documentation].<br />
The<br />
[http://mumble.sourceforge.net/Mumbleguide Mumbleguide]<br />
is a good starting point.<br />
<br />
== Server ==<br />
The Mumble project maintains a good guide for setting up the server here:<br />
[http://mumble.sourceforge.net/Murmurguide Murmurguide].<br />
What follows is a quick-and-dirty, abridged version of that guide.<br />
<br />
=== Installation ===<br />
[[Install]] the {{pkg|murmur}} package.<br />
<br />
For ICE support, install the {{AUR|murmur-ice}} package.<br />
<br />
The postinstall script will tell you to reload dbus and set the supervisor password.<br />
The default configuration does not use dbus, so you can ignore that if you want.<br />
Setting the supervisor password is recommended, however.<br />
<br />
=== Configuration ===<br />
<br />
==== Network ====<br />
If you use a [[firewall]], you will need to open TCP and UDP ports 64738.<br />
Depending on your network, you may also need to set a static IP, port forwarding, etc.<br />
<br />
==== Config File ====<br />
The default Murmur config file is at {{ic|/etc/murmur.ini}} and is heavily commented.<br />
Reading through all the comments is highly recommended.<br />
<br />
==== Startup ====<br />
[[Enable]] and then [[start]] {{ic|murmur.service}}. If all went smoothly, you should have a functioning Murmur server.<br />
<br />
==== SSL/TLS ====<br />
<br />
Obtain either a self-signed certificate as described in [[OpenSSL]], or a publicly trusted one with [[Let's Encrypt]].<br />
<br />
Edit {{ic|murmur.ini}} and tell it where your key and cert is:<br />
<br />
{{hc|/etc/murmur.ini|2=<br />
sslKey=/var/lib/murmur/ssl/voip.example.com.key<br />
sslCert=/var/lib/murmur/ssl/voip.example.com.crt<br />
}}</div>Zekesonxxhttps://wiki.archlinux.org/index.php?title=KeyPass&diff=435011KeyPass2016-05-14T19:46:52Z<p>Zekesonxx: it's easy to think that it's keypass instead of keepass if you've never used it before</p>
<hr />
<div>#REDIRECT [[KeePass]]</div>Zekesonxxhttps://wiki.archlinux.org/index.php?title=Steam/Game-specific_troubleshooting&diff=433088Steam/Game-specific troubleshooting2016-04-28T21:15:17Z<p>Zekesonxx: Add note about Tomb Raider demanding the Steam runtime</p>
<hr />
<div>[[Category:Gaming]]<br />
[[ja:Steam/ゲーム別のトラブルシューティング]]<br />
{{Poor writing|Lots of content duplication, highly dubious "solutions"}}<br />
See [[Steam]] for the main article, and [[Steam/Troubleshooting]] for generic troubleshooting.<br />
<br />
{{Note|[[Steam]] installs library dependencies of a game to a library directory, but some are missing at the moment. Report bugs involving missing libraries on Valve's bug tracker on their [https://github.com/ValveSoftware/steam-for-linux GitHub page] before adding workarounds here, and then provide a link to the bug so it can be removed as the problems are fixed.}}<br />
{{Tip|If a game fails to start, a possible reason is that it is missing required libraries. You can find out what libraries it requests by running {{ic|ldd ''game_executable''}}. {{ic|''game_executable''}} is likely located somewhere in {{ic|~/.steam/root/SteamApps/common/}}. Please note that most of these "missing" libraries are actually already included with Steam, and do not need to be installed globally.}}<br />
<br />
==Air Brawl==<br />
===Dependencies===<br />
* {{pkg|gnu-free-fonts}}<br />
<br />
===Menus are missing text/blacked out===<br />
Air Brawl seems to require some fonts that are missing, installing the package {{pkg|gnu-free-fonts}} may fix it.<br />
<br />
==Amnesia: The Dark Descent==<br />
===Dependencies===<br />
* {{AUR|lib32-freealut}}<br />
* {{pkg|lib32-glu}}<br />
* {{pkg|lib32-libxmu}}<br />
* {{pkg|lib32-sdl_ttf}}<br />
<br />
==And Yet It Moves==<br />
===Dependencies===<br />
* {{Pkg|lib32-libtheora}}<br />
* {{AUR|lib32-libjpeg6}}{{Broken package link|{{aur-mirror|lib32-libjpeg6}}}}<br />
* {{AUR|lib32-libtiff4}}<br />
* {{AUR|lib32-libpng12}}<br />
<br />
===Compatibility===<br />
Game refuses to launch and one of the following messages can be observed on console<br />
readlink: extra operand ‘Yet’<br />
Try 'readlink --help' for more information.<br />
OR<br />
This script must be run as a user with write priviledges to game directory<br />
To fix this, use:<br />
{{hc|~/.steam/root/SteamApps/common/And Yet It Moves/AndYetItMovesSteam.sh|<nowiki><br />
#ayim_dir="$(dirname "$(readlink -f ${BASH_SOURCE[0]})")"<br />
ayim_dir="$(dirname "$(readlink -f "${BASH_SOURCE[0]}")")"<br />
</nowiki>}}<br />
<br />
==Anodyne==<br />
===Dependencies===<br />
* {{AUR|adobe-air-sdk}}<br />
* {{pkg|xterm}} (probably not actually required)<br />
<br />
===Compatibility===<br />
Follow the same steps as [[#Defender.27s_Quest:_Valley_of_the_Forgotten|Defender's Quest]]<br />
<br />
==Aquaria==<br />
<br />
=== Mouse pointer gets stuck in one direction ===<br />
If the mouse pointer gets stuck in any one direction, the game becomes unplayable. You may try:<br />
{{hc|~/.local/share/Steam/SteamApps/common/Aquaria/usersettings.xml|<nowiki><br />
#<JoystickEnabled on=”1″ /><br />
<JoystickEnabled on=”0″ /></nowiki>}}<br />
<br />
If that does not fix the issue, unplug any joystick or joystick adapter devices you may have plugged in.<br />
<br />
==Audiosurf 2==<br />
===Dependencies===<br />
* {{pkg|pulseaudio-alsa}}<br />
<br />
==Binding of Isaac: Rebirth==<br />
===Troubleshooting===<br />
====No sound====<br />
Right click on {{ic|Binding of Isaac: Rebirth}} on your game list, click on {{ic|Properties}}, click on {{ic|SET LAUNCH OPTIONS}}, then add this: <br />
LD_LIBRARY_PATH="/usr/lib:$LD_LIBRARY_PATH" %command%<br />
<br />
In the game, go to the options and set all audio to the proper volume.<br />
<br />
==Borderlands 2==<br />
<br />
===Syncing save games===<br />
<br />
Steam Cloud syncing does not (intentionally) work between platforms. With that said gave save files can be manually moved between systems. Save locations can be found here: http://pcgamingwiki.com/wiki/Borderlands_2#Game_data. Once backed up to a FAT32 or other cross-compatible file-system thumbdrive (or the cloud), move the saved files to your GNU/Linux system, locate your saved file location, and move into the 17-digit long numeric file name. If previous saves on your GNU/Linux system can be deleted you can do so now. The key fix that I found was a need to change the ownership, group, and permissions. I used {{ic|chown steam:steam *}} and then {{ic|chmod 0660 *}} to get my moved saved files to work.<br />
<br />
===Using Ctrl Key===<br />
Borderlands 2 does not allow the Ctrl key to be used by default. The game seems to be accessing keycodes and not keysyms, therefore xmodmap has no affect. A workaround is using ''setkeycodes'' to map the Ctrl-scancode to some other key, as described in [[Map scancodes to keycodes#Using setkeycodes]]. I use {{ic|setkeycodes 0x1d 56}} (as root) to map Ctrl to Alt before starting the game and {{ic|setkeycodes 0x1d 29}} to restore the default.<br />
<br />
===Logging into SHiFT===<br />
The Linux version of Borderlands 2 expects to be run on Ubuntu, as that is the "officially" supported distro for Steam. As a result of this, when attempting to log in to SHiFT, it will fail, claiming the server is not available. Using strace, it can be seen that it fails to connect to the server because it cannot load SSL certificates from /usr/lib/ssl, which is the Ubuntu filesystem spec. Arch uses /etc/ssl. This can be fixed by symlinking /etc/ssl to /usr/lib/ssl, like so: <br />
# ln -s /etc/ssl /usr/lib/ssl<br />
<br />
To avoid symlinking an alternative to the above is to add the following to the launch options in Steam:<br />
SSL_CERT_DIR="/etc/ssl/certs" %command%<br />
<br />
Using one method or the other you will now be able to log into SHiFT to redeem SHiFT codes.<br />
<br />
==Borderlands the Pre-Sequel==<br />
Borderlands the Pre-Sequel (and maybe Borderlands 2) might not be able to connect to the Gearbox SHIFT-service, this is related to a wrong path to the available SSL certificates. This can be solved by creating a symbolic link from {{ic|/etc/ssl}} to {{ic|/usr/lib/ssl}}. See [http://steamcommunity.com/app/49520/discussions/0/616189742722687689/#c616189742811551908 this comment on the steam discussion forum].<br />
<br />
As an alternative the following can be added to the launch options in Steam:<br />
SSL_CERT_DIR="/etc/ssl/certs" %command%<br />
<br />
==Cities in Motion 2==<br />
<br />
=== Dialog boxes fail to display properly ===<br />
<br />
You will not be able to read or see anything, and you will have this in your logs:<br />
Fontconfig error: "/etc/fonts/conf.d/10-scale-bitmap-fonts.conf", line 69: non-double matrix element<br />
Fontconfig error: "/etc/fonts/conf.d/10-scale-bitmap-fonts.conf", line 69: wrong number of matrix elements<br />
<br />
Workaround for the bug {{Bug|35039}} is available [http://bpaste.net/show/167019/ here] (replace {{ic|/etc/fonts/conf.d/10-scale-bitmap-fonts.conf}}).<br />
<br />
==Cities Skylines==<br />
<br />
===Textures not rendering properly===<br />
<br />
In Steam client set launch properties for game:<br />
<br />
UNITY_DISABLE_GRAPHICS_DRIVER_WORKAROUNDS=yes %command%<br />
<br />
== Civilization V==<br />
<br />
=== Stuttering sound with PulseAudio ===<br />
<br />
See [[PulseAudio/Troubleshooting#Laggy sound]].<br />
<br />
== Counter-Strike: Global Offensive (CS:GO) ==<br />
<br />
=== Game runs on the wrong screen ===<br />
<br />
[https://github.com/ValveSoftware/Counter-Strike-Global-Offensive/issues/60 GitHub Counter-Strike: Global Offensive issue #60]<br />
<br />
If it happens, you can fix it by going into fullscreen windowed or windowed mode and then dragging the game onto the correct monitor. After you go back in fullscreen, the game should be on the correct monitor.<br />
<br />
=== Cannot reach bottom of the screen on menues ===<br />
[https://github.com/ValveSoftware/Counter-Strike-Global-Offensive/issues/594 GitHub Counter-Strike: Global Offensive issue #594]<br />
<br />
If you have a secondary monitor you might have a part of your lower screen you cannot reach on menues.<br />
If on Gnome you can try to open the overview (Super key) and drag the game to the other monitor and back.<br />
<br />
If you are not on Gnome or dragging the window back and forth did not work you can try to install and run this command, where X and Y is the offset of the window and H and W is the size.<br />
wmctrl -r "Counter-Strike: Global Offensive - OpenGL" -e 0,X,Y,H,W<br />
<br />
'''Example''': SecondaryMonitor: on the left 2560x1600, GamingMonitor: on the right 2560x1440).<br />
wmctrl -r "Counter-Strike: Global Offensive - OpenGL" -e 0,2560,0,1600,1200<br />
Here X and Y is 0,2560 to move the window to the monitor on the right and H and W 1600,1200 is set to match the ingame resolution.<br />
<br />
=== Audio is not synced ===<br />
<br />
[https://github.com/ValveSoftware/Counter-Strike-Global-Offensive/issues/45 GitHub Counter-Strike: Global Offensive issue #45]<br />
<br />
See [[PulseAudio/Troubleshooting#Laggy sound]] for a possible solution.<br />
<br />
=== Unable to aim when in game ===<br />
<br />
Unable to aim when in game. However, the mouse cursor does works in GUI such as main menu, game menu, etc.<br />
Add this line to your {{ic|.bash_profile}} and relogin:<br />
<br />
export SDL_VIDEO_X11_DGAMOUSE=0<br />
<br />
See also [https://bbs.archlinux.org/viewtopic.php?id=184905].<br />
<br />
=== Mouse Deadzone ===<br />
Small mouse movements (less than under 5 pixels per second) does not register on X or an OpenGL games. <br />
<br />
Solution[https://bbs.archlinux.org/viewtopic.php?pid=1519944#p1519944]:<br />
<br />
sudo pacman -R x86-input-libinput libinput<br />
<br />
=== Low Performance on AMD card using Catalyst proprietary driver ( <= 15.7 ) ===<br />
Solution[http://www.phoronix.com/scan.php?page=article&item=amd-csgo-workaround&num=1]:<br />
<br />
cd ~/.steam/steam/steamapps/common/Counter-Strike\ Global\ Offensive<br />
mv csgo_linux hl2_linux<br />
<br />
Now edit csgo.sh<br />
<br />
nano csgo.sh<br />
<br />
and change<br />
<br />
GAMEEXE=csgo_linux<br />
<br />
to <br />
<br />
GAMEEXE=hl2_linux<br />
<br />
=== Brightness slider not working ===<br />
<br />
First, find out your current display output name (connected one):<br />
<br />
xrandr | grep -v disconnected | grep connected<br />
<br />
In my case, it's<br />
<br />
'''DFP9''' connected<br />
<br />
Edit csgo.sh<br />
<br />
nano ~/.steam/steam/steamapps/common/Counter-Strike\ Global\ Offensive/csgo.sh<br />
<br />
and add the following lines (change the OUTPUT_NAME to one you found with xrandr)<br />
<br />
'''# gamma correction'''<br />
'''xrandr --output <OUTPUT_NAME> --gamma 1.6:1.6:1.6 # play with values if required'''<br />
STATUS=42<br />
while [ $STATUS -eq 42 ]; do<br />
...<br />
done<br />
'''# restore gamma'''<br />
'''xrandr --output <OUTPUT_NAME> --gamma 1:1:1'''<br />
exit $STATUS<br />
<br />
==Crusader Kings II==<br />
Game is installed into {{ic|$HOME/Steam/SteamApps/common/Crusader Kings II}}.<br />
Game can be started directly, without need of running Steam on background, using command {{ic|$HOME/Steam/SteamApps/common/Crusader Kings II/ck2}}.<br />
<br />
Saves are stored in {{ic|$HOME/Documents/Paradox Interactive/Crusader Kings II/save games/}}.<br />
In the newest version (2.03), save-game files seem to be stored to {{ic|$HOME/.paradoxinteractive/Crusader Kings II/}}. If your documents folder is empty, try looking there.<br />
<br />
===Troubleshooting===<br />
====No audio====<br />
The default audio driver used by Crusader Kings 2 is for [[PulseAudio]], so an override is necessary:<br />
<br />
{{hc|~/.pam_environment|2=SDL_AUDIODRIVER=alsa}}<br />
====Odd Sized Starting Window====<br />
Enable full screen mode as the default. In {{ic|~/.paradoxinteractive/Crusader Kings II/settings.txt}} change fullscreen=no to fullscreen=yes.<br />
<br />
==Defender's Quest: Valley of the Forgotten==<br />
===Dependencies===<br />
* {{AUR|adobe-air-sdk}}<br />
* {{pkg|xterm}}<br />
* {{pkg|lib32-libcanberra}}<br />
<br />
===Troubleshooting===<br />
====Game does not start====<br />
* Package {{AUR|adobe-air-sdk}} installs Adobe Air not in the place where the game expects it to be, fix this by creating a symlink (requires root permissions):<br />
{{bc|$ ln -s /opt/adobe-air-sdk/runtimes/air/linux/Adobe\ AIR /opt/Adobe\ AIR}}<br />
<br />
* Adobe AIR will want to check whether the EULA was accepted and fail in doing so. To fix it, issue the following commands (from under your user, not under root):<br />
{{bc|$ mkdir -p ~/.appdata/Adobe/AIR<br />
$ echo 2 > ~/.appdata/Adobe/AIR/eulaAccepted}}<br />
{{Note|By issuing these commands you're accepting Adobe Air's EULA.}}<br />
<br />
== Divinity: Original Sin Enhanced Edition ==<br />
<br />
=== Game doesn't start when using Bumblebee optirun or primusrun ===<br />
<br />
Edit {{ic|<path to library>/SteamApps/common/Divinity Original Sin Enhanced Edition/runner.sh}} to have it use primusrun:<br />
LD_LIBRARY_PATH="." primusrun ./EoCApp<br />
<br />
==Don't Starve==<br />
===Dependencies (x86_64)===<br />
* {{pkg|lib32-flashplugin}}<br />
* {{pkg|lib32-alsa-plugins}} (Looks like it fixes sound in some cases. See [https://github.com/ValveSoftware/steam-for-linux/issues/2968 this github issue] for details)<br />
* {{AUR|lib32-libcurl-compat}} (Requires further commands after installation as described [http://steamcommunity.com/app/219740/discussions/2/620700960796078576/#c611704730329482542 here])<br />
<br />
===Troubleshooting===<br />
====No sound====<br />
Right click on Don't Starve on your game list, click on Properties, click on SET LAUNCH OPTIONS, then add this: <br />
LD_LIBRARY_PATH="/usr/lib:$LD_LIBRARY_PATH" %command%<br />
<br />
On the game, go to the option and set all audio to the proper volume.<br />
<br />
==Dota 2==<br />
===Dependencies (x86_64)===<br />
* {{pkg|lib32-openal}}<br />
* {{pkg|lib32-libpulse}} (if you use PulseAudio)<br />
* {{pkg|lib32-fontconfig}}<br />
<br />
===Dependencies (Dota 2 reborn)===<br />
* {{AUR|libudev0}} or {{AUR|libudev.so.0}}<br />
<br />
===Troubleshooting===<br />
====In-game font is unreadable====<br />
Start Steam (or Dota 2) with the environment variable:<br />
MESA_GL_VERSION_OVERRIDE=2.1<br />
<br />
====Everything seems OK but the game doesn't start====<br />
If you run the game from the terminal and, although no error is shown, try '''disabling''': ''Steam > Settings > In-Game > Enable Steam Community In-Game''.<br />
Apparently the game [[#The Book of Unwritten Tales|The Book of Unwritten Tales]] has the same problem. It also describes a workaround that is untested in Dota 2.<br />
<br />
====Game runs on the wrong screen====<br />
:[https://github.com/ValveSoftware/Dota-2/issues/11 GitHub Dota 2 issue #11]<br />
<br />
==== Game does not start with libxcb-dri3 error message ====<br />
After a recent Mesa update, Dota 2 stopped working. The error message is:<br />
SDL_GL_LoadLibrary(NULL) failed: Failed loading libGL.so.1: /usr/lib32/libxcb-dri3.so.0: undefined symbol: xcb_send_fd<br />
Simply remove the bundled libxcb to force Steam to use the system-wide version. Restart Steam to apply.<br />
$ find ~/.local/share/Steam -name 'libxcb*' -type f | grep -v installed | xargs rm<br />
:[https://github.com/ValveSoftware/steam-for-linux/issues/3204 GitHub Steam issue #3204]<br />
<br />
==== Steam overlay ====<br />
Steam distributes a copy of libxcb which is incompatible with the latest xorg libxcb. If you're having issues with steam overlay and on recent xorg try removing the bundled lib.<br />
mv ~/.local/share/Steam/ubuntu12_32/steam-runtime/i386/usr/lib/i386-linux-gnu/libxcb.so.1 /tmp/libxcb.so.1.bak<br />
See more information here:<br />
:[https://github.com/ValveSoftware/steam-for-linux/issues/3199]<br />
:[https://github.com/ValveSoftware/steam-for-linux/issues/3093]<br />
<br />
====Chinese Tips and player's name display problem====<br />
The Chinese characters in the Tips and player's name display block character.<br />
<br />
The problem caused by some fonts package. It is known that the 'ttf-dejave', 'ttf-liberation' and 'ttf-ms-fonts' will cause the prolem, and the 'wqy-*', 'ttf-ubuntu-font-family', 'ttf-arphic-uming', 'ttf-linux-libertine' are safe. The other fonts family are not checked.<br />
:[https://github.com/ValveSoftware/Dota-2/issues/1688 GitHub Steam issue #1688]<br />
<br />
====Chinese input method problem====<br />
Dota2 is not compatible with CJK IME(Input Method Editor/Enhancer), such as Ibus and Fcitx.<br />
Chinese characters can't be typed in Dota2.[https://github.com/ValveSoftware/Dota-2/issues/493 GitHub Steam issue 493]<br />
<br />
The possible solution<br />
<br />
Compile the `libSDL` with fcitx or ibus support, then replace `Game Folder/dota 2 beta/bin/libSDL2-2.0.so.0` with your version.<br />
:[http://forum.ubuntu.org.cn/viewtopic.php?f=34&t=460195 LibSDL+Ibus]<br />
:[http://forum.ubuntu.org.cn/viewtopic.php?f=34&t=466879&sid=1664abac47d8f639ed9b7f3abf94c675 LibSDL+Fcitx]<br />
:[https://github.com/timxx/SDL-fcitx LibSDL+Fcitx Source]<br />
:[https://github.com/ValveSoftware/Dota-2/issues/1650 The solutions issues]<br />
<br />
==Dwarfs F2P==<br />
===Dependencies===<br />
* {{AUR|lib32-libgdiplus}}{{Broken package link|{{aur-mirror|lib32-libgdiplus}}}}<br />
<br />
===Troubleshooting===<br />
====Game does not start====<br />
There was a bug that stopped Steam from fetching all the needed files. It should be resolved, if you still bump into this problem, try verifying integrity of game cache from game properties, local files tab.<br />
<br />
If the game still crashes at startup, edit {{ic|~/.local/share/Steam/SteamApps/common/Dwarfs - F2P/Run.sh}} and change<br />
export LD_LIBRARY_PATH=.:${LD_LIBRARY_PATH}<br />
to<br />
export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:.<br />
{{Note|This file may be overwritten by updates or by verifying integrity of game cache. You may need to modify it again.}}<br />
<br />
If these do not help, you may have outdated libraries in the game installation folder that are crashing the game on startup. Try moving/removing the following files out of {{ic|~/.local/share/Steam/SteamApps/common/Dwarfs - F2P/}} to fix it:<br />
<br />
libX11.so.6, libsteam.so libtier0_s.so, libvstdlib_s.so, steamclient.so<br />
<br />
====Game crashes====<br />
In some cases, the game crashes about 2 minutes before the end of every arcade. This bug has been reported, but there's no known solution to it.<br />
<br />
==Dynamite Jack==<br />
===Dependencies===<br />
* {{pkg|lib32-sdl}}<br />
<br />
===Troubleshooting===<br />
====Sound Issues====<br />
When running on 64-bit Arch Linux, there may be "pops and hisses" when running Dynamite Jack. This could be caused by not having {{ic|1=STEAM_RUNTIME=0}} set. (However, even with {{ic|1=STEAM_RUNTIME=0}} set, the game may still sometimes start with this issue. Exiting and restarting the game seems to make the problem go away.)<br />
<br />
====Game does not start====<br />
If running steam with the {{ic|1=STEAM_RUNTIME=0}}, Dynamite Jack may have a problem starting. Check the steam error messages for this message:<br />
/home/<USER>/.local/share/Steam/SteamApps/common/Dynamite Jack/bin/main: error while loading shared libraries: libSDL-1.2.so.0: cannot open shared object file: No such file or directory<br />
Install {{pkg|lib32-sdl}} from [[multilib]] and Dynamite Jack should start up.<br />
<br />
==Football Manager 2014==<br />
This game will not run when installed on an XFS or reiserfs filesystem. Workaround is to install on an ext4 filesystem.<br />
<br />
==FORCED==<br />
This game has 32-bit and 64-bit binaries. For unknown reason, steam will launch the 32-bit binary even on 64-bit Arch Linux.<br />
When manually launching the 64-bit binary, the game starts, but cannot connect to Steam account, so you cannot play.<br />
So install 32-bits dependencies, and launch the game from Steam.<br />
<br />
===Dependencies===<br />
* {{pkg|lib32-alsa-plugins}}<br />
* {{pkg|lib32-glu}}<br />
<br />
==FTL: Faster than Light==<br />
===Dependencies===<br />
Libraries are downloaded and and placed in the game's data directory for both architectures. As long as you run FTL by the launcher script (or via the shortcut in Steam) you should not need to download any further libraries.<br />
<br />
===Compatibility===<br />
After installation, FTL may fail to run due to a 'Text file busy' error (characterised in Steam by your portrait border going green then blue again). The easiest way to mend this is to just reboot your system. Upon logging back in FTL should run.<br />
<br />
The Steam overlay in FTL does not function as it is not a 3D accelerated game. Because of this the desktop notifications will be visible. If playing in fullscreen, therefore, these notifications in some systems may steal focus and revert you back to windowed mode with no way of going back to fullscreen without relaunching. The binaries for FTL on Steam have no DRM and it is possible to run the game ''without'' Steam running, so in some cases that may be optimum - just ensure that you launch FTL via the launcher script in {{ic|~/.steam/root/SteamApps/common/FTL Faster than Light/data/}} rather than the FTL binary in the $arch directory.<br />
<br />
===Problems with open-source video driver===<br />
FTL may fail to run if you are using an opensource driver for your video card. There are two solutions: install a proprietary video driver or delete (rename if you are unsure) the library "libstdc++.so.6" inside {{ic|~/.steam/root/SteamApps/common/FTL\ Faster\ Than\ Light/data/amd64/lib}}. This is if you are using a 64bit system. In case you are using a 32bit system you have to remove (rename) the same library located into {{ic|~/.steam/root/SteamApps/common/FTL\ Faster\ Than\ Light/data/x86/lib}}.<br />
<br />
==Game Dev Tycoon==<br />
===Troubleshooting===<br />
====Game does not start====<br />
Error about missing libudev.so.0 might appear, solution:<br />
# ln -s /lib/libudev.so /lib/libudev.so.0<br />
<br />
==Garry's Mod==<br />
===Troubleshooting===<br />
====Game does not start====<br />
Error about missing client.so might appear, solution:<br />
cd SteamLibrary/SteamApps/common/GarrysMod/bin/<br />
ln -s libawesomium-1-7.so.0 libawesomium-1-7.so.2<br />
ln -s ../garrysmod/bin/client.so ./<br />
====Opening some menus causes the game to crash====<br />
Most menus work fine, but ones with checkboxes (LAN multiplayer, mounted games list) do not work at all. This is a bug in the menu code.<br />
<br />
If you prefer the default menu style and do not mind a hacky solution: [https://github.com/Facepunch/garrysmod-issues/issues/86#issuecomment-30935491 Simon311] has written code with instructions to fix it.<br />
<br />
If you do not care for the default menu style and want a more stable but feature-incomplete solution, Facepunch developer [https://github.com/robotboy655/gmod-lua-menu robotboy655] has written a new menu.<br />
<br />
===Game crashes after attempting to join server===<br />
While in the process of joining a server, downloading resources, etc, the game seems to hang and after a while, perhaps during the "sending client info" portion the game crashes, usually without any error messages. Error does not give much information, however, the process for Garry's mod is killed.<br />
<br />
This issue arises more often when joining servers with many addons like DarkRP servers specifically.<br />
<br />
The Problem seems to correlate with a weak GPU and the game is timing out from the server, so if the GPU is the problem, lowering the graphics settings to minimum fixes the problem until you can upgrade ;).<br />
<br />
==Hack 'n' Slash==<br />
===Troubleshooting===<br />
====The game starts but craches when loading a new or saved game====<br />
This seems to be the same issue as with Hammerwatch.<br />
Right click on Hack 'n' Slash on your game list, click on Properties, click on SET LAUNCH OPTIONS, then add this: <br />
LD_LIBRARY_PATH="/usr/lib:$LD_LIBRARY_PATH" %command%<br />
<br />
==Hacker Evolution [Untold, Duality]==<br />
===Dependencies===<br />
* {{AUR|lib32-sdl2_mixer}}<br />
<br />
==Half-Life 2 & episodes==<br />
===Cyrillic fonts problem===<br />
This problem can be solved by deleting "Helvetica" font.<br />
<br />
==Hammerwatch==<br />
===Troubleshooting===<br />
====The game not starting from Steam GUI====<br />
Right click on Hammerwatch on your game list, click on Properties, click on SET LAUNCH OPTIONS, then add this: <br />
LD_LIBRARY_PATH="/usr/lib:$LD_LIBRARY_PATH" %command%<br />
====No sound====<br />
Hammerwatch opens with a popup: "Sound Error" -- "Could not initialize OpenAL, no sounds will be played. Try updating your OpenAL drivers."<br />
<br />
OpenAL, which Hammerwatch uses, defaults to PulseAudio. To change that, add the following line to {{ic|/etc/openal/alsoft.conf}}:<br />
<br />
drivers=alsa,pulse<br />
<br />
This way, Hammerwatch will use ALSA. This solution was found [https://stackoverflow.com/questions/9547396/what-does-al-lib-pulseaudio-c612-context-did-not-connect-access-denied-me here].<br />
<br />
==Harvest: Massive Encounter==<br />
===Dependencies===<br />
* {{pkg|lib32-gtk2}}<br />
* {{pkg|lib32-libvorbis}}<br />
* {{pkg|lib32-openal}}<br />
* {{Pkg|lib32-nvidia-cg-toolkit}}<br />
* {{AUR|lib32-libjpeg6}}{{Broken package link|{{aur-mirror|lib32-libjpeg6}}}}<br />
* {{AUR|lib32-sfml}}<br />
<br />
===Compatibility===<br />
Game refuses to launch and throws you to library installer loop. Just edit {{ic| ~/.steam/root/SteamApps/common/Harvest Massive Encounter/run_harvest}} and remove everything but<br />
#!/bin/bash<br />
exec ./Harvest<br />
<br />
==Hatoful Boyfriend==<br />
===Japanese text invisible===<br />
Install {{pkg|wqy-microhei}} and {{pkg|wqy-microhei-lite}}.<br />
<br />
==The inner world==<br />
===Bringing up the inventory or main menu===<br />
Hold the <tab> key.<br />
<br />
===Dependencies===<br />
<br />
====Sound support====<br />
Install {{AUR|java-commons-codec}} from the [[AUR]] to get sound support.<br />
<br />
====Cutscenes====<br />
The game has cutscenes. It starts directly with a cutscene before you start the actual game in the backyard. To see these cutscenes you need to use Oracle's Java instead of the openjdk.<br />
<br />
Install {{AUR|jre}} from the [[AUR]] and run<br />
<br />
archlinux-java set java-8-jre/jre<br />
<br />
as root. Furthermore you need the package ffmpeg-compat. Currently this package is in the community repository.<br />
<br />
There seem to be problems with Steam Overlay. Try to run the game directly with ~/Steam/SteamApps/common/TheInnerWorld/TIW_start.sh<br />
<br />
<br />
Note that cutscenes open in a new window. So pay attention to that and switch to the new window to enjoy the movies.<br />
<br />
<br />
See the [http://steamcommunity.com/app/251430/discussions/0/611701360817206606/#c611701360827509770 Steam Forums] for details.<br />
<br />
==Interloper==<br />
===Dependencies===<br />
* {{pkg|alsa-lib}}<br />
<br />
===Game does not launch===<br />
Game can sometimes segfault due to an incompatibility with the Steam Runtime's libasound.so.2. Delete the bad library:<br />
<br />
rm ~/.local/share/Steam/ubuntu12_32/steam-runtime/amd64/usr/lib/x86_64-linux-gnu/libasound.so.2<br />
<br />
==Invisible Apartment==<br />
===Dependencies===<br />
* {{pkg|qt5-multimedia}}<br />
<br />
===Game does not run===<br />
Game does not run if you try to launch it via Steam, but you can run it directly if you run the following in terminal<br />
/home/<username>/.steam/steam/SteamApps/common/Invisible\ Apartment/ia1<br />
where for <username> you put your Linux username.<br />
<br />
==Joe Danger 2: The Movie==<br />
===Dependencies===<br />
* {{pkg|lib32-libpulse}}<br />
* {{pkg|lib32-alsa-plugins}}<br />
<br />
===Compatibility===<br />
Game only worked after obtaining from the [https://www.humblebundle.com/ Humble Bundle] directly and {{pkg|lib32-libpulse}} was installed.<br />
<br />
==[[Kerbal Space Program]]==<br />
===Troubleshooting===<br />
=== Game never progresses past initial loading ===<br />
To fix this, set:<br />
LC_ALL=C<br />
<br />
=== No text display ===<br />
The game requires Arial and Arial Black fonts, provided by the {{AUR|ttf-ms-fonts}} package.<br />
<br />
Another alternative is to try to install the {{Pkg|ttf-freefont}} package. This worked using KSP 0.90.0 on x86_64 Arch Linux.<br />
<br />
=== Graphics flickering when using primusrun ===<br />
Run with PRIMUS_SYNC=2 (but you will get reduced frame rate this way)<br />
<br />
=== Game crashes when accessing settings or saves on 64 bit systems on Steam ===<br />
In the properties for Kerbal Space program, set a launch option of:<br />
LC_ALL=C %command%_64<br />
<br />
=== Locale settings ===<br />
See https://bugs.kerbalspaceprogram.com/issues/504 if you have troubles with building Ships.<br />
<br />
=== No audio on 64-bit systems ===<br />
<br />
Run the 64-bit executable.<br />
<br />
Steam launches the KSP.x86 executable vs. the KSP.x86_64 executable. <br />
Navigate to:<br />
/home/$USER/.local/share/Steam/SteamApps/common/Kerbal\ Space\ Program/ <br />
Launch with:<br />
./KSP.x86_64<br />
<br />
Or you can simply right click on "Kerbal Space Program" in your game list, click ''Properties'', click ''SET LAUNCH OPTIONS'', then add this: <br />
LD_LIBRARY_PATH="/usr/lib:$LD_LIBRARY_PATH" LC_ALL=C %command%_64<br />
<br />
=== Black ingame textures ===<br />
<br />
Disable "Edge Highlighting (PPFX)" in graphics settings ingame.<br />
<br />
=== See also ===<br />
* [[Kerbal Space Program]]<br />
* http://forum.kerbalspaceprogram.com/showthread.php/24529-The-Linux-compatibility-thread!<br />
<br />
==Killing Floor==<br />
===Troubleshooting===<br />
====Screen resolution====<br />
Killing Floor runs pretty much from scratch, although you might have to change in-game resolution screen as the default one is '''800x600''' and a '''4:3''' screen format.<br />
If you try to modify screen resolution in-game, it might crash your desktop enviroment.<br />
To fix this, please set the desired resolution screen size by modifing your {{ic|~/.killingfloor/System/KillingFloor.ini}} with your prefered editor.<br />
{{hc|~/.killingfloor/System/KillingFloor.ini|<nowiki><br />
...<br />
<br />
[WinDrv.WindowsClient]<br />
WindowedViewportX=????<br />
WindowedViewportY=????<br />
FullscreenViewportX=????<br />
FullscreenViewportY=????<br />
MenuViewportX=???<br />
MenuViewportY=???<br />
<br />
...<br />
<br />
[SDLDrv.SDLClient]<br />
WindowedViewportX=????<br />
WindowedViewportY=????<br />
FullscreenViewportX=????<br />
FullscreenViewportY=????<br />
MenuViewportX=????<br />
MenuViewportY=????<br />
<br />
...<br />
</nowiki>}}<br />
{{Note|Replace all the {{ic|????}} with the corresponding numbers according the desired resolution. If you have an 1366x768 screen and want to use it at it's fullest, change all the Viewport fields to something like {{ic|ViewportX&#61;1366}} and {{ic|ViewportY&#61;768}} in the corresponding areas.}}<br />
{{Note| The dots in the middle indicate that there are more fields in that .ini file. But for screen resolution troubleshooting, you do not need to modify anything else.}}<br />
<br />
Save the file and restart the game, it should work now.<br />
<br />
====Windowed mode====<br />
Uncheck fullscreen in the options menu, and use {{ic|Ctrl+g}} to stop mouse capturing (that was non-obvious to discover..). This way you can easily minimize it and do other other things..and let your WM handle things.<br />
<br />
====Stuttering Sound====<br />
KillingFloor comes with its own libopenal.so (called openal.so). To use system lib instead install {{pkg|openal}} or {{pkg|lib32-openal }} (if using 64bit system).<br />
Then go to {{ic|$HOME/Steam/SteamApps/common/KillingFloor/System}}. and rename openal.so to openal.so.bak<br />
Then create symlink to /usr/lib32/libopenal.so.1 or /usr/lib/libopenal.so.1 called openal.so<br />
<br />
==Lethal League==<br />
===Dependencies===<br />
* {{AUR|lib32-glew1.10}}<br />
<br />
==Metro: Last Light==<br />
This game is not allowing to change its resolution on a multimonitor setup on GNOME with Catalyst drivers. <br />
===Attempted fixes===<br />
Various changes to the games config file was tried without success.<br />
{{ic|wmctrl}} was not able to force the games resolution.<br />
<br />
===Hacky solution===<br />
Disabled the side monitors.<br />
<br />
===Possible solutions===<br />
Jason over at [http://unencumberedbyfacts.com/2013/11/20/multiple-monitor-gaming-on-linux/ unencumbered by fact] is using Nvidia drivers on his multimonitor setup. However he notes he is using a single display server setup. This is being explored.<br />
<br />
==Mark of the Ninja==<br />
===Troubleshooting===<br />
====Bad sound====<br />
Right click on {{ic|Mark of the Ninja}} on your game list, click on {{ic|Properties}}, click on {{ic|SET LAUNCH OPTIONS}}, then add this: <br />
LD_LIBRARY_PATH="/usr/lib:$LD_LIBRARY_PATH" %command%<br />
<br />
==Middle-earth: Shadow of Mordor==<br />
===Floating heads===<br />
Right click on {{ic|Middle-earth: Shadow of Mordor}} on your game list, click on {{ic|Properties}}, click on {{ic|SET LAUNCH OPTIONS}}, then add this: <br />
__GL_ShaderPortabilityWarnings=0 %command%<br />
<br />
==Multiwinia==<br />
===Dependencies===<br />
* {{pkg|lib32-openal}}<br />
===Crash on startup===<br />
<br />
If Multiwinia crashes on startup on X64 systems, force launching the 32-bit executable by replacing {{ic|~/.local/share/Steam/steamapps/common/Multiwinia/run_steam.sh}} with the following script:<br />
<br />
{{bc|#!/bin/sh<br />
./multiwinia.bin.x86 <br />
}} <br />
<br />
See [https://steamcommunity.com/app/1530/discussions/0/864969481950542663/#c558746995160431396].<br />
<br />
<br />
<br />
==Natural Selection 2==<br />
Game mostly works out of the box.<br />
===No Sound===<br />
If there is no sound in-game. Try installing {{pkg|lib32-sdl}}, {{Pkg|lib32-sdl2}}, and {{pkg|lib32-alsa-plugins}}<br />
<br />
If this fails, try setting the game's launch options in Steam to:<br />
LD_LIBRARY_PATH="/usr/lib32:$LD_LIBRARY_PATH" %command%<br />
<br />
==Penumbra: Overture==<br />
===Dependencies===<br />
(Taken from {{AUR|penumbra-collection}}{{Broken package link|{{aur-mirror|penumbra-collection}}}} and {{AUR|penumbra-overture-ep1-demo}}{{Broken package link|{{aur-mirror|penumbra-overture-ep1-demo}}}})<br />
* {{pkg|lib32-glu}}<br />
* {{pkg|lib32-libxft}}<br />
* {{pkg|lib32-libvorbis}}<br />
* {{pkg|lib32-openal}}<br />
* {{pkg|lib32-sdl_ttf}}<br />
* {{pkg|lib32-sdl_image}}<br />
<br />
===Troubleshooting===<br />
====Windowed mode====<br />
There is no in-game option to change to the windowed mode, you will have to edit {{ic|~/.frictionalgames/Penumbra/Overture/settings.cfg}} to activate it.<br />
Find {{ic|FullScreen&#61;"true"}} and change it to {{ic|FullScreen&#61;"false"}}, after this the game should start in windowed mode.<br />
<br />
==Portal 2==<br />
===Troubleshooting===<br />
====Game does not start====<br />
Several OpenGL-related errors (such as {{ic|PROBLEM: You appear to have OpenGL 1.4.0, but we need at least 2.0.0!}} or {{ic|libGL error: driver pointer missing}}) are caused by Portal&nbsp;2 bundling an old libstdc++ file. This error is especially common with open source Radeon drivers ({{ic|radeonsi}}).<br />
<br />
<br />
To remedy this, make Portal&nbsp;2 use the system-wide file by setting the launch options to {{ic|1=LD_PRELOAD='/usr/$LIB/libstdc++.so.6' %command%}}.<br />
<br />
More details and background info available [https://wirejungle.wordpress.com/2015/01/09/how-to-fix-broken-steam-linux-client-with-radeon-graphics-driver-workaround/ here.]<br />
<br />
==Prison Architect==<br />
===Troubleshooting===<br />
====ALSA error when using PulseAudio====<br />
The error:<br />
{{ic|ALSA lib pcm_dmix.c:1018:(snd_pcm_dmix_open) unable to open slave}}<br />
was resolved by installing:<br />
* {{pkg|pulseaudio-alsa}} <br />
* {{pkg|lib32-alsa-plugins}}<br />
* {{pkg|lib32-libpulse}}<br />
per [[PulseAudio#ALSA]]<br />
<br />
==Project Zomboid==<br />
===Dependencies===<br />
* {{pkg|jre7-openjdk}}<br />
===No sound===<br />
Right click on {{ic|Project Zomboid}} on your game list, click on {{ic|Properties}}, click on {{ic|SET LAUNCH OPTIONS}}, then add this: <br />
LD_LIBRARY_PATH="/usr/lib:$LD_LIBRARY_PATH" %command%<br />
<br />
In the game, go to the options and set all audio to the proper volume.<br />
<br />
==Redshirt==<br />
===Dependencies (x86_64)===<br />
* {{pkg|lib32-libpulse}} (if you use PulseAudio)<br />
<br />
==Revenge of the Titans==<br />
===Dependencies===<br />
* {{pkg|libxtst}} and {{pkg|lib32-libxtst}}<br />
<br />
==Rock Boshers DX: Directors Cut==<br />
===Dependencies===<br />
* {{Pkg|lib32-libcaca}}<br />
<br />
==Serious Sam 3: BFE==<br />
===Dependencies===<br />
* {{pkg|lib32-alsa-plugins}}<br />
<br />
===Troubleshooting===<br />
====No audio====<br />
Try running:<br />
# mkdir -p /usr/lib/i386-linux-gnu/alsa-lib/<br />
# ln -s /usr/lib32/alsa-lib/libasound_module_pcm_pulse.so /usr/lib/i386-linux-gnu/alsa-lib/<br />
<br />
If that does not work, try tweaking {{ic|~/.alsoftrc}} as proposed by the [http://steamcommunity.com/app/221410/discussions/3/846940248238406974/ Steam community] (Serious Sam 3: BFE uses OpenAL to output sound). If you are not using Pulse Audio, you may want to write the following configuration:<br />
<br />
{{hc|~/.alsoftrc|<nowiki><br />
[general]<br />
drivers = alsa<br />
[alsa]<br />
device = default<br />
capture = default<br />
mmap = true<br />
</nowiki>}}<br />
<br />
==Sir, you are being hunted==<br />
===Dependencies===<br />
* {{pkg|lib32-alsa-plugins}}<br />
<br />
==Spacechem==<br />
===Dependencies===<br />
* {{pkg|lib32-sqlite}}<br />
* {{pkg|lib32-sdl_image}}<br />
* {{AUR|lib32-sdl_mixer}}<br />
<br />
===Troubleshooting===<br />
====Game crash====<br />
The shipped x86 version of Spacechem does not work on x64 with the game's own libSDL* files, and crashes with some strange output.<br />
<br />
To solve this just remove or move the three files {{ic|libSDL-1.2.so.0}}, {{ic|libSDL_image-1.2.so.0}}, {{ic|libSDL_mixer-1.2.so.0}} from {{ic|~/.steam/root/SteamApps/common/SpaceChem}}<br />
<br />
==Space Pirates and Zombies==<br />
===Dependencies===<br />
* {{pkg|lib32-alsa-plugins}}<br />
* {{pkg|lib32-openal}}<br />
<br />
===Troubleshooting===<br />
====No audio====<br />
Try running:<br />
# mkdir -p /usr/lib/i386-linux-gnu/alsa-lib/<br />
# ln -s /usr/lib32/alsa-lib/libasound_module_pcm_pulse.so /usr/lib/i386-linux-gnu/alsa-lib/<br />
<br />
If that does not work, try tweaking {{ic|~/.alsoftrc}} as proposed by the Steam community (Serious Sam 3: BFE uses OpenAL to output sound). If you are not using Pulse Audio, you may want to write the following configuration:<br />
{{hc|~/.alsoftrc|<nowiki><br />
[general]<br />
drivers = alsa<br />
[alsa]<br />
device = default<br />
capture = default<br />
mmap = true<br />
</nowiki>}}<br />
<br />
==Splice==<br />
Splice comes with both x86 and x64 binaries. Steam does not have to be running to launch this game.<br />
===Dependencies===<br />
* {{pkg|glu}}<br />
<br />
==Steel Storm: Burning Retribution==<br />
===Troubleshooting===<br />
====Start with black screen====<br />
The game tries to launch in 1024x768 resolution with fullscreen mode by default. It is impossible on some devices.<br />
(for example laptop Samsung Series9 with intel hd4000 video).<br />
<br />
You can launch the game in windowed mode. To do this open game Properties in Steam, in General tab select "Set launch options..." and type "-window".<br />
<br />
Now you can change the resolution in game.<br />
<br />
====No English fonts====<br />
If you use Intel video card, just disable S3TC in DriConf.<br />
<br />
==Stephen's Sausage Roll==<br />
===Troubleshooting===<br />
====No sound====<br />
If {{pkg|libpulse}} is installed, Unity may try to use that library for sound and fail.<br />
To test if this is the problem, try removing {{pkg|libpulse}} or renaming the package files that are named {{ic|libpulse-simple*}}. To see which {{pkg|libpulse}} files are relevant, run:<br />
<br />
{{hc|$ pacman -Ql libpulse <nowiki>|</nowiki> awk '{print $2}' <nowiki>|</nowiki> grep /usr/lib/libpulse-simple|<br />
/usr/lib/libpulse-simple.so<br />
/usr/lib/libpulse-simple.so.0<br />
/usr/lib/libpulse-simple.so.0.1.0}}<br />
<br />
If renaming any of those files works for you, you can proceed with the following instructions (don't forget to revert any renaming you just did!). Browse to the game's directory:<br />
<br />
$ cd "$HOME/.local/share/Steam/steamapps/common/Stephen's Sausage Roll"<br />
<br />
And create a sub-directory that we can use to hold 0-byte look-alike library files:<br />
<br />
$ mkdir noload/<br />
<br />
Use {{ic|touch}} to create 0-byte versions of the above files that we want the dynamic linker to skip, e.g.:<br />
<br />
$ touch noload/{libpulse-simple.so,libpulse-simple.so.0,libpulse-simple.so.0.1.0}<br />
<br />
{{Note|I only had to create a 0-byte {{ic|libpulse-simple.so.0}} file for the following trick to work.}}<br />
<br />
After you have created these 0-byte files, you can now attempt to run the game binary directly, telling the dynamic linker to use our 0-byte files:<br />
<br />
$ LD_LIBRARY_PATH="noload/:$LD_LIBRARY_PATH" ./Sausage.x86_64<br />
<br />
Hopefully you now have sound!<br />
<br />
If everything works up to this point, you can amend the launch options in Steam to be:<br />
<br />
LD_LIBRARY_PATH="noload/:$LD_LIBRARY_PATH" %command%<br />
<br />
Again, this should work because Steam checks for a {{ic|noload/}} directory relative to the game's directory. The dynamic linker should respect the {{ic|$LD_LIBRARY_PATH}} variable and fail to load the necessary {{pkg|libpulse}} files. The game should then fallback to plain ALSA.<br />
<br />
==Strike Suite Zero==<br />
===Dependencies===<br />
* {{pkg|lib32-alsa-plugins}}<br />
<br />
==Superbrothers: Sword & Sworcery EP==<br />
===Dependencies===<br />
* {{pkg|lib32-glu}}<br />
* {{pkg|lib32-alsa-plugins}}<br />
* {{pkg|lib32-libpulse}} (if you use PulseAudio)<br />
<br />
==Team Fortress 2 ==<br />
===Dependencies===<br />
* {{AUR|lib32-libpng12}}<br />
<br />
===Making HRTF work===<br />
Assuming HRTF has been set up properly in the operating system, hrtf won't be enabled unless you disable the original processing. To do so, use<br />
dsp_slow_cpu 1<br />
For best results, also change the following:<br />
snd_spatialize_roundrobin 1<br />
dsp_enhance_stereo 0<br />
snd_pitchquality 1<br />
<br />
===Troubleshooting===<br />
====Loading screen freeze====<br />
If you are a non-english (speaking) user, you have to enable "en_US.UTF-8" in the locale.gen! Generate a new locale after that.<br />
<br />
====No audio====<br />
It happens if there is no PulseAudio in your system.<br />
If you want to use [[ALSA]], you need to launch Steam or the game directly with {{ic|1=SDL_AUDIODRIVER=alsa}} <br />
(From [http://steamcommunity.com/app/221410/discussions/0/882966056462819091/#c882966056470753683 SteamCommunity]).<br />
<br />
If it still does not work, you may also need to set the environment variable AUDIODEV. For instance {{ic|1=AUDIODEV=Live}}. Use {{ic|aplay -l}} to list the available sound cards.<br />
<br />
====Slow loading textures====<br />
If you are using Chris' FPS Configs or any other FPS config, you may have set {{ic|mat_picmip}} to {{ic|2}}. This spawns multiple threads for texture loading, which may cause more jittering and lag on Linux, especially on alternative kernels. Try setting it to {{ic|-1}}, the default.<br />
<br />
<br />
==== NVIDIA drivers ====<br />
<br />
{{Deletion|Whenever {{pkg|nvidia}} 361.42-1 is released from ''testing'', this section will become obsolete and can be removed.}}<br />
<br />
{{Note|This is fixed in {{pkg|nvidia}} 361.42-1}}<br />
<br />
Some modern [[NVIDIA]] drivers do not seem to go well with Team Fortress 2. If you have some startup error complaining that a GL function is not available, you can fix this by putting your driver in compatibility mode. To do this, you need to change the launch options to:<br />
__GLVND_DISALLOW_PATCHING=1 %command%<br />
<br />
==Terraria==<br />
See the KNOWN ISSUES & WORKAROUNDS section of the [http://forums.terraria.org/index.php?threads/terraria-1-3-0-8-can-mac-linux-come-out-play.30287/ release announcement].<br />
<br />
==The Book of Unwritten Tales==<br />
If the game does not start, uncheck: ''Properties > Enable Steam Community In-Game''.<br />
<br />
The game may segfault upon clicking the Setting menu and possibly during or before gameplay. This is a known problem and you will unfortunately have to wait for a fix from the developer. A workaround (taken from the [http://steamcommunity.com/app/221410/discussions/3/846939071081758230/#p2 Steam forums]) is to replace the game's RenderSystem_GL.so with one from Debian's repositories. To do that download this [https://launchpad.net/ubuntu/+archive/primary/+files/libogre-1.7.4_1.7.4-3_i386.deb deb file], extract it (with {{ic|{{AUR|dpkg}} -x libogre-*.deb outdir}}) and replace {{ic|~/.local/share/Steam/SteamApps/common/The Book of Unwritten Tales/lib/32/RenderSystem_GL.so}} with the one that comes with the {{ic|.deb}} package.<br />
<br />
===Dependencies===<br />
* {{AUR|lib32-libxaw}}<br />
* {{AUR|lib32-jasper}}{{Broken package link|{{aur-mirror|lib32-jasper}}}}<br />
<br />
==The Book of Unwritten Tales: The Critter Chronicles==<br />
Because it's based on the same engine, the things that apply to ''The Book of Unwritten Tales'' also apply for this game.<br />
<br />
To prevent the game from crashing at the very end when the credits are shown, change the size of the credits image as described here: http://steamcommunity.com/app/221830/discussions/0/828925849276110960/#c810921273836530791<br />
<br />
==The Clockwork Man==<br />
===Dependencies===<br />
* {{pkg|lib32-libidn}}<br />
<br />
==The Polynomial==<br />
===Dependencies===<br />
* {{AUR|ilmbase102-libs}}{{Broken package link|{{aur-mirror|ilmbase102-libs}}}}<br />
* {{AUR|openexr170-libs}}{{Broken package link|{{aur-mirror|openexr170-libs}}}}<br />
[https://github.com/ValveSoftware/steam-for-linux/issues/2721 Steam for Linux issue #2721]<br />
<br />
===Troubleshooting===<br />
====Segfaults during program start on 64-bit systems====<br />
The game segfaults during program start because of the {{ic|LD_LIBRARY_PATH}} setting in the launcher script. Edit {{ic|~/.local/share/Steam/SteamApps/common/ThePolynomial/Polynomial64}}, and comment out the {{ic|LD_LIBRARY_PATH}} variable. Make sure to put the {{ic|./bin/Polynomial64 "$@"}} command on a new line.<br />
<br />
==This War of Mine==<br />
===Troubleshooting===<br />
====Game doesn't load====<br />
This happens because of a incompatibility of the newer version of {{ic|lib32-glibc}}. To Fix the problem you need to download the version 2.20-6 of the lib, you can download it [http://ftp.nara.wide.ad.jp/pub/Linux/archlinux/multilib-testing/os/x86_64/lib32-glibc-2.20-6-x86_64.pkg.tar.xz here], then extract the: <br />
libc.so.6<br />
libc-2.20.so<br />
libpthread.so.0<br />
libpthread-2.20.so<br />
libresolv-2.20.so<br />
libresolv.so.2 <br />
librt.so.1<br />
librt-2.20.so<br />
located in the archive and put on the main game folder: {{ic|~/.local/share/Steam/steamapps/common/This War of Mine/}}<br />
<br />
==Tomb Raider==<br />
===Troubleshooting===<br />
====Game immediately closes when running with steam-native====<br />
Tomb Raider has a very heavy amount of dependency on the Steam runtime, the easiest solution is to just run it using the runtime.<br />
You can do so by setting the following as the launch option:<br />
{{bc|/home/[your username]/.local/share/Steam/ubuntu12_32/steam-runtime/run.sh %command%}}<br />
<br />
==Towns / Towns Demo==<br />
===Crash on launch===<br />
Ensure you have [[Java]] installed.<br />
<br />
==Transistor==<br />
===Crash on launch / FMOD binding crash / Audio issues===<br />
Try running steam with following command <br />
LD_PRELOAD='/usr/lib/libstdc++.so.6:/usr/lib/libgcc_s.so.1:/usr/lib/libxcb.so.1:/usr/lib/libasound.so.2' steam<br />
<br />
Alternatively, right click on Transistor, go to Properties => Set Launch Options... and enter<br />
LD_PRELOAD='/usr/lib/libstdc++.so.6:/usr/lib/libgcc_s.so.1:/usr/lib/libxcb.so.1:/usr/lib/libasound.so.2' %command%<br />
<br />
This will force Steam to do the fix whenever Transistor is started, but allows Steam to be launched normally.<br />
<br />
Otherwise, run the game via shell and set up proper audio device for FMOD, as discussed there [https://steamcommunity.com/app/237930/discussions/2/620695877176333955/].<br />
<br />
Also, check out this thread [https://steamcommunity.com/app/237930/discussions/2/492378265893557247/]<br />
<br />
==Trine 2==<br />
===Dependencies===<br />
* {{pkg|lib32-glu}}<br />
* {{pkg|lib32-libxxf86vm}}<br />
* {{pkg|lib32-openal}}<br />
* {{pkg|xorg-xwininfo}}<br />
<br />
===Troubleshooting===<br />
* If colors are wrong with FOSS drivers (r600g at least), try to run the game in windowed mode, rendering will be corrected. ([https://bugs.freedesktop.org/show_bug.cgi?id=60553 bugreport])<br />
* If sound plays choppy, try:<br />
{{hc|/etc/openal/alsoft.conf|<nowiki><br />
drivers=pulse,alsa<br />
frequency=48000<br />
</nowiki>}}<br />
<br />
* If the game resolution is wrong when using a dual monitor setup and you can't see the whole window edit {{ic|~/.frozenbyte/Trine2/options.txt}} and change the options {{ic|ForceFullscreenWidth}} and {{ic|ForceFullscreenHeight}} to the resolution of your monitor on which you want to play the game.<br />
<br />
==Unity3D==<br />
<br />
Games based on the Unity3D engine, like ''War For The Overworld'' or ''Pixel Piracy'' may need the package {{pkg|lsb-release}} to understand that they run on Linux and work properly.<br />
<br />
===Locale Settings===<br />
<br />
Games made in C# often have a problem with some locales (e.g. Russian, German) because developers don't specify locale-agnostic number formatting. This can result in some game screens loading only partially, problems with online features or other bugs.<br />
<br />
To work around this, set the game's launch options to <code>LC_ALL=C %command%</code><br />
<br />
Some of the affected games: ''FORCED'', ''Gone Home'', ''Ichi'', ''Nimble Quest'', ''Syder Arcade''.<br />
<br />
===Unity 5 sound problems===<br />
<br />
The sound system in Unity 5 changed and to be able to play games created with it you must most likely install and run [[PulseAudio]].<br />
Another solution is to disable the Steam runtime: in the launch options for the game, write this: LD_LIBRARY_PATH="" %command%<br />
<br />
==Unity of Command==<br />
===Dependencies===<br />
* {{pkg|lib32-pango}}<br />
* {{pkg|lib32-alsa-plugins}}<br />
<br />
===Troubleshooting===<br />
* If squares are shown instead of text, try removing {{ic|$HOME/Steam/SteamApps/common/Unity of Command/bin/libpangoft2-1.0.so.0}}.<br />
<br />
====No audio====<br />
If you get this error:<br />
ALSA lib dlmisc.c:254:(snd1_dlobj_cache_get) Cannot open shared library /usr/lib/i386-linux-gnu/alsa-lib/libasound_module_pcm_pulse.so<br />
<br />
Try running:<br />
# mkdir -p /usr/lib/i386-linux-gnu/alsa-lib/<br />
# ln -s /usr/lib32/alsa-lib/libasound_module_pcm_pulse.so /usr/lib/i386-linux-gnu/alsa-lib/<br />
<br />
==Unrest==<br />
===Dependencies===<br />
* {{pkg|fluidsynth}}<br />
<br />
== War Thunder ==<br />
<br />
=== Troubleshooting ===<br />
<br />
If having a green or blank screen at game start, set the {{ic|1=MESA_GL_VERSION_OVERRIDE=4.1COMPAT}} [[environment variable]]. [https://forum.warthunder.com/index.php?/topic/267809-linux-potential-workaround-for-mesa-drivers-black-screen/] [http://forum.warthunder.com/index.php?search_term=0030709&app=core&module=search&do=search&fromMainBar=1&search_app=forums%3Aforum%3A920&sort_field=&sort_order=&search_in=posts]<br />
<br />
== Witcher 2: Assassin of Kings ==<br />
<br />
=== Dependencies ===<br />
<br />
* {{Pkg|lib32-freetype2}}<br />
* {{AUR|lib32-libcurl-compat}}<br />
* {{Pkg|lib32-gnutls}}<br />
<br />
* {{Pkg|lib32-sdl2}}<br />
* {{AUR|lib32-sdl2_image}}<br />
* {{AUR|lib32-libcurl-gnutls}}<br />
<br />
=== Troubleshooting ===<br />
<br />
If the game does not run, enable error messages:<br />
<br />
cd "${HOME}/.local/share/Steam/SteamApps/common/the witcher 2"<br />
LIBGL_DEBUG=verbose ./witcher2<br />
<br />
==Wizardry 6: Bane of the Cosmic Forge==<br />
===Dependencies===<br />
* {{pkg|dosbox}}<br />
<br />
To fix the crash at start, edit {{ic|~/.local/share/Steam/SteamApps/common/Wizardry6/dosbox_linux/launch_wizardry6.sh}} and change<br />
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:./libs<br />
exec ./dosbox -conf dosbox_wiz6.conf -conf dosbox_wiz6_launch_linux.conf -noconsole "$@"<br />
to<br />
#export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:./libs<br />
exec dosbox -conf dosbox_wiz6.conf -conf dosbox_wiz6_launch_linux.conf -noconsole "$@"<br />
<br />
==World of Goo==<br />
===Changing resolution===<br />
* To change the game resolution edit the section "Graphics display" in the configuration file {{ic|$HOME/Steam/SteamApps/common/World of Goo/properties/config.txt}}. For example, see below:<br />
<!-- Graphics display --><br />
<param name="screen_width" value="1680" /><br />
<param name="screen_height" value="1050" /><br />
<param name="color_depth" value="0" /><br />
<param name="fullscreen" value="true" /><br />
<param name="ui_inset" value="10" /><br />
<br />
==Worms Reloaded==<br />
===Dependencies===<br />
* {{pkg|lib32-alsa-plugins}}<br />
<br />
==XCOM==<br />
===Dependencies===<br />
* {{pkg|sdl2_image}}<br />
<br />
===Hangs on startup===<br />
Steam ships its own versions of some libraries, and they sometimes are too old to work with archlinux system libraries.<br />
Removing the library supplied by Steam means Steam has to use the newer arch-specific version. [https://bbs.archlinux.org/viewtopic.php?pid=1428375#p1428375].<br />
<br />
{{bc|rm ~.local/share/Steam/ubuntu12_32/steam-runtime/amd64/lib/x86_64-linux-gnu/libgcc_s.so.1<br />
rm ~/.local/share/Steam/ubuntu12_32/steam-runtime/amd64/usr/lib/x86_64-linux-gnu/libstdc++.so.6}}<br />
<br />
If you are running a hybrid graphic system, try<br />
<br />
__GL_THREADED_OPTIMIZATIONS=0 primusrun %command%<br />
<br />
===Graphical glitches on Intel HD===<br />
XCOM may not recognize sdl2 shared libraries shipped with Steam runtime.<br />
Check if binary finds all required files and install missing packages if necessary ({{Pkg|sdl2}} and {{Pkg|sdl2_image}}).<br />
<br />
{{bc|ldd ~/.local/share/Steam/steamapps/common/XCom-Enemy-Unknown/binaries/linux/game.x86_64 | grep "not found"}}<br />
<br />
==Saints Row IV==<br />
<br />
===Game fails to launch after update to new Nvidia drivers===<br />
Set the launch options for Saints Row IV to:<br />
{{bc|1=LD_PRELOAD=$LD_PRELOAD:/usr/lib32/libGLX_nvidia.so %command%}}</div>Zekesonxxhttps://wiki.archlinux.org/index.php?title=Touchpad_Synaptics&diff=432864Touchpad Synaptics2016-04-26T06:33:49Z<p>Zekesonxx: /* Software toggle */ Add support for slightly differently named devices, like my "AlpsPS/2 ALPS GlidePoint" (which is, in fact, a touchpad)</p>
<hr />
<div>[[Category:Input devices]]<br />
[[de:Synaptics Touchpad Treiber]]<br />
[[es:Touchpad Synaptics]]<br />
[[fr:Touchpad Synaptics]]<br />
[[it:Touchpad Synaptics]]<br />
[[ja:Touchpad Synaptics]]<br />
[[ru:Touchpad Synaptics]]<br />
[[zh-CN:Touchpad Synaptics]]<br />
{{Related articles start}}<br />
{{Related|Xorg}}<br />
{{Related articles end}}<br />
This article details the installation and configuration process of the '''''Synaptics input driver''''' for Synaptics (and ALPS) touchpads found on most notebooks.<br />
<br />
== Installation ==<br />
<br />
The Synaptics driver can be [[installed]] with the package {{Pkg|xf86-input-synaptics}}.<br />
<br />
{{Tip|An alternative touchpad driver is [[libinput]]. It implements a different approach to recognize and process multitouch features.}}<br />
<br />
== Configuration ==<br />
<br />
The primary method of configuration for the touchpad is through an [[Xorg]] server configuration file. After installation of {{ic|xf86-input-synaptics}}, a default configuration file is located at {{ic|/usr/share/X11/xorg.conf.d/50-synaptics.conf}}. Users can copy this file to {{ic|/etc/X11/xorg.conf.d/}} and edit it to configure the various driver options available. Refer to the {{ic|synaptics(4)}} manual page for a complete list of available options. Machine-specific options can be discovered using [[#Synclient|synclient]].<br />
<br />
=== Frequently used options ===<br />
<br />
The following lists options that many users may wish to configure. This example configuration file enables vertical, horizontal and circular scrolling as well as touchpad tap to click:<br />
<br />
{{hc|/etc/X11/xorg.conf.d/50-synaptics.conf|<nowiki><br />
Section "InputClass"<br />
Identifier "touchpad"<br />
Driver "synaptics"<br />
MatchIsTouchpad "on"<br />
Option "TapButton1" "1"<br />
Option "TapButton2" "2"<br />
Option "TapButton3" "3"<br />
Option "VertEdgeScroll" "on"<br />
Option "VertTwoFingerScroll" "on"<br />
Option "HorizEdgeScroll" "on"<br />
Option "HorizTwoFingerScroll" "on"<br />
Option "CircularScrolling" "on"<br />
Option "CircScrollTrigger" "2"<br />
Option "EmulateTwoFingerMinZ" "40"<br />
Option "EmulateTwoFingerMinW" "8"<br />
Option "CoastingSpeed" "0"<br />
Option "FingerLow" "30"<br />
Option "FingerHigh" "50"<br />
Option "MaxTapTime" "125"<br />
...<br />
EndSection<br />
</nowiki>}}<br />
<br />
; '''TapButton1''': (integer) configures which mouse-button is reported on a non-corner, one finger tap.<br />
; '''TapButton2''': (integer) configures which mouse-button is reported on a non-corner, two finger tap<br />
; '''TapButton3''': (integer) configures which mouse-button is reported on a non-corner, three finger tap<br />
; '''RBCornerButton''': (integer) configures which mouse-button is reported on a right bottom corner, one finger tap (use {{ic|Option "RBCornerButton" "3"}} to achieve Ubuntu style tap behaviour for right mouse button in lower right corner)<br />
; '''RTCornerButton''': (integer) as above, but for top right corner, one finger tap.<br />
; '''VertEdgeScroll''': (boolean) enables vertical scrolling while dragging across the right edge of the touch pad.<br />
; '''HorizEdgeScroll''': (boolean) enables horizontal scrolling while dragging across the bottom edge of the touch pad.<br />
; '''VertTwoFingerScroll''': (boolean) enables vertical scrolling using two fingers.<br />
; '''HorizTwoFingerScroll''': (boolean) enables horizontal scrolling using two fingers.<br />
; '''EmulateTwoFingerMinZ/W''': (integer) play with this value to set the precision of two finger scroll.<br />
; '''FingerLow''': (integer) when finger pressure drops below this value, the driver counts it as a release.<br />
; '''FingerHigh''': (integer) when finger pressure goes above this value, the driver counts it as a touch.<br />
; '''MaxTapTime''': Determines how "crisp" a tap must be to be considered a real tap. Decrease the value to require a more crisp tap. Properly adjusting this parameter can reduce false positives when the hands hover over or lightly touch the pad.<br />
; '''VertScrollDelta''' and '''HorizScrollDelta''': (integer) configures the speed of scrolling, it is a bit counter-intuitive because higher values produce greater precision and thus slower scrolling. Negative values cause natural scrolling like in OS X.<br />
<br />
{{Note|<br />
* If you find that your hand frequently brushes your touchpad, causing the TapButton2 option to be triggered (which will more than likely paste from your clipboard), and you do not mind losing two-finger-tap functionality, set {{ic|TapButton2}} to 0.<br />
* Recent versions include a "Coasting" feature, enabled by default, which may have the undesired effect of continuing almost any scrolling until the next tap or click, even if you are no longer touching the touchpad. This means that to scroll just a bit, you need to scroll (by using the edge, or a multitouch option) and then almost immediately tap the touchpad, otherwise scrolling will continue forever. If wish to avoid this, set {{ic|CoastingSpeed}} to 0.<br />
* If your touchpad is too sensitive, use higher values for {{ic|FingerLow}} and {{ic|FingerHigh}} and vice versa. Remember that {{ic|FingerLow}} should be smaller than {{ic|FingerHigh}}<br />
}}<br />
<br />
=== Configuration on the fly ===<br />
<br />
Next to the traditional method of configuration, the Synaptics driver also supports on the fly configuration. This means that users can set certain options through a software application, these options are applied immediately without needing a restart of Xorg. This is useful to test configuration options before you include them in the configuration file.<br />
<br />
{{Warning|On-the-fly configuration is non-permanent and will not remain active through a reboot, suspend/resume, or restart of Xorg. This should only be used to test, fine-tune or script configuration features.}}<br />
<br />
==== Console tools ====<br />
<br />
* {{App|[[#Synclient|Synclient]] (Recommended)|command line utility to configure and query Synaptics driver settings on a live system, the tool is developed by the synaptics driver maintainers and is provided with the synaptics driver|http://xorg.freedesktop.org/|{{Pkg|xf86-input-synaptics}}}}<br />
* {{App|[[#Using xinput to determine touchpad capabilities|xinput]]|small general-purpose CLI tool to configure devices|http://xorg.freedesktop.org/|{{Pkg|xorg-xinput}}}}<br />
<br />
==== Graphical tools ====<br />
<br />
* {{App|GPointing Device Settings|provides graphical on the fly configuration for several pointing devices connected to the system, including your synaptics touch pad. This application replaces GSynaptics as the preferred tool for graphical touchpad configuration through the synaptics driver|https://wiki.gnome.org/Attic/GPointingDeviceSettings|{{Pkg|gpointing-device-settings}}}}<br />
* {{App|kcm-touchpad|A new touchpad configuration tool for [[KDE]], provides a module under input devices in system settings. Released in February 2014, works under KDE SC 4.12+. It is to be considered a replacement for {{AUR|synaptiks}}{{Broken package link|{{aur-mirror|synaptiks}}}} and {{AUR|kcm_touchpad}}{{Broken package link|{{aur-mirror|kcm_touchpad}}}}.|https://projects.kde.org/projects/kde/workspace/kcm-touchpad/repository|{{Pkg|kcm-touchpad}}{{Broken package link|{{aur-mirror|kcm-touchpad}}}}}}<br />
<br />
=== Xfce4/Cinnamon ===<br />
<br />
To change these settings in ''XFCE 4''':<br />
# Open ''System Settings''.<br />
# Click ''Mouse and Touchpad''.<br />
# Change the settings on the ''Touchpad'' tab.<br />
<br />
To change these settings in '''Cinnamon''':<br />
# Open ''Cinnamon System Settings''.<br />
# Click ''Mouse and Touchpad''.<br />
# Change the settings on the ''Touchpad'' tab.<br />
<br />
=== MATE ===<br />
<br />
It is possible configure the way MATE handles the touchpad:<br />
<br />
# Run {{ic|dconf-editor}}<br />
# Edit the keys in the {{ic|org.mate.peripherals-touchpad}} folder.<br />
<br />
To prevent Mate settings daemon from overriding existing settings, do as follows:<br />
# Run {{ic|dconf-editor}}<br />
# Edit {{ic|org.mate.SettingsDaemon.plugins.mouse}}<br />
# Uncheck the '''active''' setting.<br />
<br />
== Advanced configuration ==<br />
<br />
=== Using xinput to determine touchpad capabilities ===<br />
<br />
Depending on your model, synaptic touchpads may have or lack capabilities. We can determine which capabilities your hardware supports by using {{ic|xinput}}.<br />
* left, middle and right hardware buttons<br />
* two finger detection<br />
* three finger detection<br />
* configurable resolution<br />
<br />
First, find the name of your touchpad:<br />
<br />
$ xinput -list<br />
<br />
You can now use {{ic|xinput}} to find your touchpad's capabilities:<br />
<br />
$ xinput list-props "SynPS/2 Synaptics TouchPad" | grep Capabilities<br />
<br />
Synaptics Capabilities (309): 1, 0, 1, 0, 0, 1, 1<br />
<br />
From left to right, this shows:<br />
* (1) device has a physical left button<br />
* (0) device does not have a physical middle button<br />
* (1) device has a physical right button<br />
* (0) device does not support two-finger detection<br />
* (0) device does not support three-finger detection<br />
* (1) device can configure vertical resolution<br />
* (1) device can configure horizontal resolution<br />
<br />
Use {{ic|xinput list-props "SynPS/2 Synaptics TouchPad"}} to list all device properties.<br />
<br />
=== Synclient ===<br />
<br />
Synclient can configure every option available to the user as documented in {{ic|$ man synaptics}}. A full list of the current user settings can be brought up:<br />
<br />
$ synclient -l<br />
<br />
Every listed configuration option can be controlled through synclient, for example:<br />
<br />
* Enable palm detection: {{ic|1=$ synclient PalmDetect=1}} <br />
* Configure button events (right button event for two finger tap here): {{ic|1=$ synclient TapButton2=3}} <br />
* Disable the touchpad: {{ic|1=$ synclient TouchpadOff=1}} <br />
<br />
After you have successfully tried and tested your options through synclient, you can make these changes permanent by adding them to {{ic|/etc/X11/xorg.conf.d/50-synaptics.conf}}.<br />
<br />
=== evtest ===<br />
<br />
The tool {{Pkg|evtest}} can display pressure and placement on the touchpad in real-time, allowing further refinement of the default Synaptics settings. The evtest monitoring can be started with:<br />
<br />
$ evtest /dev/input/event''X''<br />
<br />
''X'' denotes the touchpad's ID. It can be found by looking at the output of {{ic|cat /proc/bus/input/devices}}.<br />
<br />
evtest needs exclusive access to the device which means it cannot be run together with an X server instance. You can either kill the X server or run evtest from a different virtual terminal (e.g., by pressing {{ic|Ctrl+Alt+2}}).<br />
<br />
=== xev ===<br />
<br />
The tool {{Pkg|xorg-xev}} can display taps, clicks, pressure, placement and other measured parameters in real-time, allowing still further refinement of the default Synaptics settings. xev can be run in X and needs no specifics. using the "-event" parameter, it is possible to restrict the types of events that are reported.<br />
<br />
=== Circular Scrolling ===<br />
<br />
Circular scrolling is a feature that Synaptics offers which closely resembles the behaviour of iPods. Instead of (or additional to) scrolling horizontally or vertically, you can scroll circularly. Some users find this faster and more precise.<br />
To enable circular scrolling, add the following options to the touchpad device section of {{ic|/etc/X11/xorg.conf.d/50-synaptics.conf}}:<br />
{{hc|/etc/X11/xorg.conf.d/50-synaptics.conf|<nowiki><br />
Section "InputClass"<br />
...<br />
Option "CircularScrolling" "on"<br />
Option "CircScrollTrigger" "0"<br />
...<br />
EndSection<br />
</nowiki>}}<br />
<br />
The option '''CircScrollTrigger''' may be one of the following values, determining which edge circular scrolling should start:<br />
<br />
0 All Edges<br />
1 Top Edge<br />
2 Top Right Corner<br />
3 Right Edge<br />
4 Bottom Right Corner<br />
5 Bottom Edge<br />
6 Bottom Left Corner<br />
7 Left Edge<br />
8 Top Left Corner<br />
<br />
Specifying something different from zero may be useful if you want to use circular scrolling in conjunction with horizontal and/or vertical scrolling. If you do so, the type of scrolling is determined by the edge you start from.<br />
<br />
To scroll fast, draw small circles in the center of your touchpad. To scroll slowly and more precise, draw large circles.<br />
<br />
=== Natural scrolling ===<br />
<br />
It is possible to enable natural scrolling through synaptics. Simply use negative values for {{ic|VertScrollDelta}} and {{ic|HorizScrollDelta}} like so:<br />
<br />
{{hc|/etc/X11/xorg.conf.d/50-synaptics.conf|<nowiki><br />
Section "InputClass"<br />
...<br />
Option "VertScrollDelta" "-111"<br />
Option "HorizScrollDelta" "-111"<br />
...<br />
EndSection<br />
</nowiki>}}<br />
<br />
=== Software toggle ===<br />
<br />
You might want to turn the touchpad on and off with a simple button click or shortcut. This can be done by binding the following ''xinput''-based script to a keyboard event as explained in [[Extra keyboard keys in Xorg]]:<br />
<br />
{{hc|/usr/local/bin/touchpad_toggle.sh|2=<nowiki><br />
#!/bin/bash<br />
<br />
declare -i ID<br />
ID=`xinput list | grep -Eio '(touchpad|glidepoint)\s*id\=[0-9]{1,2}' | grep -Eo '[0-9]{1,2}'`<br />
declare -i STATE<br />
STATE=`xinput list-props $ID|grep 'Device Enabled'|awk '{print $4}'`<br />
if [ $STATE -eq 1 ]<br />
then<br />
xinput disable $ID<br />
# echo "Touchpad disabled."<br />
# notify-send 'Touchpad' 'Disabled' -i /usr/share/icons/Adwaita/48x48/devices/input-touchpad.png<br />
else<br />
xinput enable $ID<br />
# echo "Touchpad enabled."<br />
# notify-send 'Touchpad' 'Enabled' -i /usr/share/icons/Adwaita/48x48/devices/input-touchpad.png<br />
fi<br />
</nowiki>}}<br />
<br />
{{Tip|When using external monitors with [[bumblebee]], the touchpad can be configured on the second X server by prepending {{ic|1=DISPLAY=:8}} to the command.}} <br />
<br />
Alternatively, {{ic|synclient}} can be used to toggle the touchpad. However, it can only turn off touch events but not physical clickpad button usage:<br />
<br />
{{hc|/usr/local/bin/touchpad.sh|<nowiki><br />
#!/bin/bash<br />
<br />
synclient TouchpadOff=$(synclient -l | grep -c 'TouchpadOff.*=.*0')<br />
</nowiki>}}<br />
<br />
=== Disable trackpad while typing ===<br />
<br />
==== Using the driver's automatic palm detection ====<br />
<br />
First of all you should test if it works properly for your trackpad and if the settings are accurate. Enable palm detection with<br />
<br />
$ synclient PalmDetect=1<br />
<br />
Then test the typing. You can tweak the detection by setting the minimum width for the touch to be considered a palm, for example<br />
<br />
$ synclient PalmMinWidth=8<br />
<br />
And you can tweak the minimum pressure required for the touch to be considered a palm, for example<br />
<br />
$ synclient PalmMinZ=100<br />
<br />
{{Tip|To help find the best values for palm detection, you can use {{pkg|evtest}} to see the width and Z values reported during touchpad use.}}<br />
<br />
Once you have found the correct settings, you can add them to your [[#Configuration|config file]]:<br />
<br />
{{bc|<nowiki><br />
Option "PalmDetect" "1"<br />
Option "PalmMinWidth" "8"<br />
Option "PalmMinZ" "100"<br />
</nowiki>}}<br />
<br />
{{Warning|1=For some touchpads, an [https://bugzilla.kernel.org/show_bug.cgi?id=77161 issue] with the kernel can cause the palm width to always be reported as 0. This breaks palm detection in a majority of cases. Pending an actual fix, you can [https://gist.github.com/silverhammermba/a231c8156ecaa63c86f1 patch] the synaptics package to use only Z for palm detection.}}<br />
<br />
{{Tip|If you experience problems with consistent palm detection for your hardware, an alternative to try is [[libinput]].}}<br />
<br />
==== Using syndaemon ====<br />
<br />
{{ic|syndaemon}} monitors keyboard activity and disables the touchpad while typing. It has several options to control when the disabling occurs. View them with<br />
<br />
$ syndaemon -h<br />
<br />
For example, to disable tapping and scrolling for 2 seconds after each keypress (ignoring modifier keys like Ctrl), use<br />
<br />
$ syndaemon -i 2 -t -k <br />
<br />
Once you have determined the options you like, you should use your login manager or [[xinitrc]] to have it run automatically when X starts. The {{ic|-d}} option will make it start in the background as a daemon.<br />
<br />
=== Disable touchpad on mouse detection ===<br />
<br />
With the assistance of [[udev]], it is possible to automatically disable the touchpad if an external mouse has been plugged in. To achieve this, use one of the following rules.<br />
<br />
==== Basic desktop ====<br />
<br />
This is a basic rule generally for non-"desktop environment" sessions:<br />
<br />
{{hc|/etc/udev/rules.d/01-touchpad.rules|2=<br />
SUBSYSTEM=="input", KERNEL=="mouse[0-9]*", ACTION=="add", ENV{DISPLAY}=":0", ENV{XAUTHORITY}="/home/''username''/.Xauthority", RUN+="/usr/bin/synclient TouchpadOff=1"<br />
SUBSYSTEM=="input", KERNEL=="mouse[0-9]*", ACTION=="remove", ENV{DISPLAY}=":0", ENV{XAUTHORITY}="/home/''username''/.Xauthority", RUN+="/usr/bin/synclient TouchpadOff=0"<br />
}}<br />
<br />
==== GDM ====<br />
<br />
{{Accuracy|saying that GDM ''usually'' does something does not make sense}}<br />
<br />
GDM usually stores the Xauthority files in {{ic|/var/run/gdm}} in a randomly-named directory. You should find your actual path to the Xauthority file which can be done using {{ic|ps ax}}. For some reason multiple authority files may appear for a user, so a rule like will be necessary:<br />
<br />
{{hc|/etc/udev/rules.d/01-touchpad.rules|2=<br />
SUBSYSTEM=="input", KERNEL=="mouse[0-9]", ACTION=="add", PROGRAM="/usr/bin/find /var/run/gdm -name ''username'' -print0 -quit", ENV{DISPLAY}=":0", ENV{XAUTHORITY}="$result/database", RUN+="/usr/bin/synclient TouchpadOff=1"<br />
SUBSYSTEM=="input", KERNEL=="mouse[0-9]", ACTION=="remove", PROGRAM="/usr/bin/find /var/run/gdm -name ''username'' -print0 -quit", ENV{DISPLAY}=":0", ENV{XAUTHORITY}="$result/database", RUN+="/usr/bin/synclient TouchpadOff=0"<br />
}}<br />
<br />
Furthermore, you should validate that your udev script is running properly! You can check for the conditions using {{ic| udevadm monitor -p}} which must be run as root.<br />
<br />
===== With syndeamon running =====<br />
<br />
{{ic|syndaemon}} whether started by the [[#Using syndaemon|user]] or the desktop environment can conflict with synclient and will need to be disabled. A rule like this will be needed:<br />
<br />
{{hc|/etc/udev/rules.d/01-touchpad.rules|2=<br />
SUBSYSTEM=="input", KERNEL=="mouse[0-9]", ACTION=="add", PROGRAM="/usr/bin/find /var/run/gdm -name ''username'' -print -quit", ENV{DISPLAY}=":0", ENV{XAUTHORITY}="$result/database", RUN+="/bin/sh -c '/usr/bin/synclient TouchpadOff=1 ; sleep 1; /bin/killall syndaemon; '"<br />
}}<br />
<br />
===== touchpad-state =====<br />
<br />
An AUR package {{aur|touchpad-state-git}} has been created around the udev rules above. It includes a udev rule and script:<br />
<br />
touchpad-state [--off] [--on]<br />
<br />
==== KDE ====<br />
<br />
If using KDE, the package {{pkg|kcm-touchpad}}{{Broken package link|{{aur-mirror|kcm-touchpad}}}} can be set to disable the touchpad on mouse detection.<br />
<br />
If using Plasma, the package {{Pkg|kcm-touchpad-frameworks}}{{Broken package link|replaced by {{Pkg|plasma-desktop}}}} can be used to manage the touchpad.<br />
<br />
==== System with multiple X sessions ====<br />
<br />
{{Accuracy|Hard-coded {{ic|DISPLAY}} variable does not work with multiple X sessions.}} <br />
<br />
For an environment where multiple users are present, a slightly different approach is needed to detect the current users X environment. This script will help achieving this:<br />
<br />
{{hc|/usr/bin/mouse-pnp-event-handler.sh|<nowiki><br />
#!/bin/sh<br />
## $1 = "add" / "remove"<br />
## $2 = %k from udev <br />
<br />
## Set TRACKPAD_NAME according to your configuration. <br />
## Check your trackpad name with: <br />
## find /sys/class/input/ -name mouse* -exec udevadm info -a {} \; | grep 'ATTRS{name}'<br />
TRACKPAD_NAME="SynPS/2 Synaptics TouchPad"<br />
<br />
USERLIST=$(w -h | cut -d' ' -f1 | sort | uniq)<br />
MOUSELIST=$(find /sys/class/input/ -name mouse*)<br />
<br />
for CUR_USER in ${USERLIST}; do<br />
CUR_USER_XAUTH="$(sudo -Hiu ${CUR_USER} env | grep -e "^HOME=" | cut -d'=' -f2)/.Xauthority"<br />
<br />
<br />
## Can't find a way to get another users DISPLAY variable from an isolated root environment. Have to set it manually.<br />
#CUR_USER_DISPL="$(sudo -Hiu ${CUR_USER} env | grep -e "^DISPLAY=" | cut -d'=' -f2)"<br />
CUR_USER_DISPL=":0"<br />
<br />
export XAUTHORITY="${CUR_USER_XAUTH}"<br />
export DISPLAY="${CUR_USER_DISPL}"<br />
<br />
if [ -f "${CUR_USER_XAUTH}" ]; then<br />
case "$1" in<br />
"add")<br />
/usr/bin/synclient TouchpadOff=1<br />
/usr/bin/logger "USB mouse plugged. Disabling touchpad for $CUR_USER. ($XAUTHORITY - $DISPLAY)"<br />
;;<br />
"remove")<br />
## Only execute synclient if there are no external USB mice connected to the system.<br />
EXT_MOUSE_FOUND="0"<br />
for CUR_MOUSE in ${MOUSELIST}; do<br />
if [ "$(cat ${CUR_MOUSE}/device/name)" != "${TRACKPAD_NAME}" ]; then<br />
EXT_MOUSE_FOUND="1"<br />
fi<br />
done<br />
if [ "${EXT_MOUSE_FOUND}" == "0" ]; then<br />
/usr/bin/synclient TouchpadOff=0<br />
/usr/bin/logger "No additional external mice found. Enabling touchpad for $CUR_USER."<br />
else<br />
logger "Additional external mice found. Won't enable touchpad yet for $CUR_USER."<br />
fi<br />
;;<br />
esac<br />
fi<br />
done<br />
</nowiki>}}<br />
<br />
Update the {{ic|TRACKPAD_NAME}} variable for your system configuration.<br />
Run {{ic|<nowiki>find /sys/class/input/ -name mouse* -exec udevadm info -a {} \; | grep 'ATTRS{name}'</nowiki>}} to get a list of useful mice-names. Choose the one for your trackpad.<br />
<br />
Then have udev run this script when USB mices are plugged in or out, with these udev rules:<br />
<br />
{{hc|/etc/udev/rules.d/01-touchpad.rules|2=<br />
SUBSYSTEM=="input", KERNEL=="mouse[0-9]*", ACTION=="add", RUN+="/usr/bin/mouse-pnp-event-handler.sh add %k"<br />
SUBSYSTEM=="input", KERNEL=="mouse[0-9]*", ACTION=="remove", RUN+="/usr/bin/mouse-pnp-event-handler.sh remove %k"<br />
}}<br />
<br />
=== Buttonless touchpads (aka ClickPads) ===<br />
<br />
Ever more laptops have a special kind of touchpad which has a single mouse button as part of the tracking plate, instead of external buttons. For example, the 2015 Dell XPS 13, HP series 4500 ProBooks, ThinkPad X220 and X1 ThinkPad series have this kind of a touchpad. By default, the whole button area is detected as a left button, so right and middle-click functions and click + drag will not work. It is possible to define two and three finger clicks as right and middle button clicks, and/or to define parts of the click pad surface as right and middle buttons. Note that although the driver registers multiple touches, it does not track individual fingers (as of version 1.7.1) which results in confusing behavior when using physical buttons of a clickpad for drag-and-drop and other gestures: you have to click with two or three fingers but then only move one of them while holding the button down with another. You can look into the {{AUR|xf86-input-mtrack}} driver for better multitouch support.<br />
<br />
Some desktop environments (KDE and GNOME at least) define sane and useful default configurations for clickpads, providing a right button at the bottom right of the pad, recognising two and three-finger clicks anywhere on the pad as right and middle clicks, and providing configuration options to define two and three-finger taps as right and middle clicks. If your desktop does not do this, or if you want more control, you can modify the touchpad section in {{ic|/etc/X11/xorg.conf.d/50-synaptics.conf}} (or better, of your custom synaptics configuration file prefixed with a higher number). For example:<br />
<br />
{{hc|/etc/X11/xorg.conf.d/50-synaptics.conf|<nowiki><br />
Section "InputClass"<br />
Identifier "touchpad"<br />
Driver "synaptics"<br />
MatchIsTouchpad "on"<br />
# Enable clickpad/multitouch support<br />
Option "ClickPad" "true"<br />
# Middle-button emulation is not supported<br />
Option "EmulateMidButtonTime" "0"<br />
# Define right soft button at the bottom<br />
Option "SoftButtonAreas" "50% 0 82% 0 0 0 0 0"<br />
EndSection<br />
</nowiki>}}<br />
<br />
The format for the SoftButtonAreas option is (from {{ic|man 4 synaptics}}):<br />
{{bc|RightButtonAreaLeft RightButtonAreaRight RightButtonAreaTop RightButtonAreaBottom MiddleButtonAreaLeft MiddleButtonAreaRight MiddleButtonAreaTop MiddleButtonAreaBottom}}<br />
<br />
The above "SoftButtonAreas" option is commonly found in documentation or synaptics packages, and it defines the right half of the bottom 18% of the touchpad as a right button. There is '''no middle button''' defined. If you want to define a middle button remember one key piece of information from the manual; '''edge set to 0 extends to infinity in that direction.'''<br />
<br />
In the following example the right button will occupy the rightmost 40% of the button area and the middle button 20% of it in the center. The leftmost 40% remains as a left button (as does the rest of the clickpad):<br />
<br />
...<br />
Option "SoftButtonAreas" "60% 0 82% 0 40% 59% 82% 0"<br />
...<br />
<br />
You can use {{ic|<nowiki>synclient</nowiki>}} to check the soft button areas: <br />
<br />
{{hc|<nowiki>$ synclient -l | grep -i ButtonArea</nowiki>|<nowiki><br />
RightButtonAreaLeft = 3914<br />
RightButtonAreaRight = 0<br />
RightButtonAreaTop = 3918<br />
RightButtonAreaBottom = 0<br />
MiddleButtonAreaLeft = 3100<br />
MiddleButtonAreaRight = 3873<br />
MiddleButtonAreaTop = 3918<br />
MiddleButtonAreaBottom = 0<br />
</nowiki>}}<br />
<br />
If your buttons are not working, soft button areas are not changing, ensure you do not have a synaptics configuration file distributed by a package which is overriding your custom settings (ie. some AUR packages distribute configurations prefixed with very high numbers).<br />
<br />
These settings cannot be modified on the fly with {{ic|<nowiki>synclient</nowiki>}}, however, {{ic|<nowiki>xinput</nowiki>}} works:<br />
<br />
xinput set-prop "SynPS/2 Synaptics TouchPad" "Synaptics Soft Button Areas" 4000 0 4063 0 3000 4000 4063 0<br />
<br />
You cannot use percentages with this command, so look at {{ic|/var/log/Xorg.0.log}} to figure out the touchpad x and y-axis ranges.<br />
<br />
==== Bottom edge correction ====<br />
<br />
In some cases, for example Toshiba Satellite P50, everything work out of the box except often your click are seen as mouse movement and the cursor will jump away just before registering the click.<br />
This can be easily solved running<br />
<br />
$ synclient -l | grep BottomEdge<br />
<br />
take the BottomEdge value and subtract a the wanted height of your button, then temporary apply with<br />
<br />
$ synclient AreaBottomEdge=4000<br />
<br />
when a good value has been found make it a fixed correction with<br />
<br />
{{hc|/etc/X11/xorg.conf.d/50-synaptics.conf|<nowiki><br />
...<br />
Option "AreaBottomEdge" "4000"<br />
...<br />
</nowiki>}}<br />
<br />
{{Note|The area will not act as touchpad if the touch '''begins''' in that area, but it can still be used if the touch has originated outside.}}<br />
<br />
== Troubleshooting ==<br />
<br />
=== Touchpad does not work after resuming from hibernate/suspend ===<br />
Occasionally touchpads will fail to work when the computer resumes from sleep or hibernation. This can often be corrected without rebooting by<br />
* Switching to a console and back again,<br />
* entering sleep mode again, and resuming again, or<br />
* locating the correct kernel module, then removing it and inserting it again. <br />
{{Note|You can use Ctrl-Alt-F1 through F8 to switch to a console without using the mouse.}}<br />
modprobe -r psmouse #psmouse happens to be the kernel module for my touchpad (Alps DualPoint)<br />
modprobe psmouse<br />
Now switch back to the tty that X is running on. If you chose the right module, your touchpad should be working again.<br />
<br />
=== xorg.conf.d/50-synaptics.conf does not seem to apply under GNOME and MATE ===<br />
<br />
[[GNOME]] and [[MATE]], by default, will overwrite various options for your touch-pad. This includes configurable features for which there is no graphical configuration within GNOME's system control panel. This may cause it to appear that {{ic|/etc/X11/xorg.conf.d/50-synaptics.conf}} is not applied. Please refer to the GNOME section in this article to prevent this behavior.<br />
<br />
* [[#GNOME/Xfce4/Cinnamon]]<br />
<br />
=== The touchpad is not working, Xorg.0.log shows "Query no Synaptics: 6003C8" ===<br />
<br />
Due to the way synaptics is currently set-up, 2 instances of the synaptics module are loaded. We can recognize this situation by opening the xorg log file ({{ic|/var/log/Xorg.0.log}}) and noticing this:<br />
<br />
{{hc|/var/log/Xorg.0.log|<nowiki><br />
[ 9304.803] (**) SynPS/2 Synaptics TouchPad: Applying InputClass "evdev touchpad catchall"<br />
[ 9304.803] (**) SynPS/2 Synaptics TouchPad: Applying InputClass "touchpad catchall"<br />
</nowiki>}}<br />
<br />
Notice how 2 differently named instances of the module are being loaded. In some cases, this causes the touchpad to become nonfunctional.<br />
<br />
We can prevent this double loading by adding {{ic|MatchDevicePath "/dev/input/event*"}} to our {{ic|/etc/X11/xorg.conf.d/50-synaptics.conf}} file:<br />
<br />
{{hc|/etc/X11/xorg.conf.d/50-synaptics.conf|<nowiki><br />
Section "InputClass"<br />
Identifier "touchpad catchall"<br />
Driver "synaptics"<br />
MatchIsTouchpad "on"<br />
MatchDevicePath "/dev/input/event*"<br />
Option "TapButton1" "1"<br />
Option "TapButton2" "2"<br />
Option "TapButton3" "3"<br />
EndSection <br />
</nowiki>}}<br />
<br />
Restart X and check xorg logs again, the error should be gone and the touchpad should be functional.<br />
<br />
related bugreport: {{Bug|20830}}<br />
<br />
related forum topics:<br />
* https://bbs.archlinux.org/viewtopic.php?id=104769<br />
* https://bbs.archlinux.org/viewtopic.php?pid=825690<br />
<br />
=== Touchpad detected as "PS/2 Generic Mouse" or "Logitech PS/2 mouse" ===<br />
<br />
This can be caused by a number of issues;<br />
<br />
==== Elantech touchpads ====<br />
This can happen with some laptops with an Elantech touchpad, for example the ASUS x53s. In this situation you need {{AUR|psmouse-alps-driver}}{{Broken package link|{{aur-mirror|psmouse-alps-driver}}}} package from [[AUR]].<br />
<br />
==== Laptops with touchscreen & touchpad ====<br />
There also seems to be a problem with laptops which have both a touchscreen & a touchpad, such as the Dell XPS 12 or Dell XPS 13. To fix this, you can [[blacklisting|blacklist]] the {{ic|i2c_hid}} driver, this does have the side-effect of disabling the touchscreen though.<br />
<br />
This [http://www.spinics.net/lists/linux-input/msg27768.html seems to be a known problem]. Also see [https://bbs.archlinux.org/viewtopic.php?pid=1419078 this thread].<br />
<br />
Post kernel 3.15, having the module blacklisted may cause touchpad to stop working completely. Removing the blacklist should allow this to start working with limited functionality, see {{Bug|40921}}.<br />
<br />
=== Non-functional Synaptics special abilities (multi-tap, scrolling, etc.) ===<br />
<br />
In some cases Synaptics touchpads only work partially. Features like two-finger scrolling or two-finger middle-click do not work even if properly enabled. This is probably related to the [[#The touchpad is not working, Xorg.0.log shows "Query no Synaptics: 6003C8"|The touchpad is not working]] problem mentioned above. Fix is the same, prevent double module loading.<br />
<br />
If preventing the module from loading twice does not solve your issue, try commenting out the toggle "MatchIsTouchpad" (which is now included by default in the synaptics config).<br />
<br />
If clicking with either 2 or 3 fingers is interpreted as a right-click, so you cannot get a middle click either way regardless of configuration, this bug is probably the culprit: https://bugs.freedesktop.org/show_bug.cgi?id=55365<br />
<br />
=== Cursor jump ===<br />
<br />
Some users have their cursor inexplicably ''jump'' around the screen. There currently no patch for this, but the developers are aware of the problem and are working on it.<br />
<br />
Another posibility is that you are experiencing ''IRQ losses'' related to the i8042 controller (this device handles the keyboard and the touchpad of many laptops), so you have two posibilities here:<br />
<br />
1. rmmod && insmod the psmouse module.<br />
2. append i8042.nomux=1 to your [[kernel parameters]] and reboot your machine.<br />
<br />
=== Touchpad device is not located at {{ic|/dev/input/*}} ===<br />
<br />
If that is the case, you can use this command to display information about your input devices:<br />
<br />
$ cat /proc/bus/input/devices<br />
<br />
Search for an input device which has the name "SynPS/2 Synaptics TouchPad". The "Handlers" section of the output specifies what device you need to specify.<br />
<br />
'''Example output:'''<br />
<br />
{{hc|$ cat /proc/bus/input/devices|<nowiki><br />
I: Bus=0011 Vendor=0002 Product=0007 Version=0000<br />
N: Name="SynPS/2 Synaptics TouchPad"<br />
P: Phys=isa0060/serio4/input0<br />
S: Sysfs=/class/input/input1<br />
H: Handlers=mouse0 event1<br />
B: EV=b<br />
B: KEY=6420 0 7000f 0<br />
</nowiki>}}<br />
<br />
In this case, the {{ic|Handlers}} are {{ic|mouse0}} and {{ic|event1}}, so {{ic|/dev/input/mouse0}} would be used.<br />
<br />
{{Expansion|TODO: explain how to apply this in {{ic|/etc/X11/xorg.conf.d/50-synaptics.conf}}}}<br />
<br />
=== Firefox and special touchpad events ===<br />
<br />
You can enable/disable some special events that Firefox handles upon tapping or scrolling certain parts of your touchpad by editing the settings of those actions.<br />
Type '''about:config''' in your Firefox address bar.<br />
To alter options, double-click on the line in question.<br />
<br />
==== Firefox 17.0 and later ====<br />
<br />
Horizontal scrolling will now by default scroll through pages and not through your history. To reenable Mac-style forward/backward with two-finger swiping, edit:<br />
<br />
mousewheel.default.action.override_x = 2<br />
<br />
You may encounter accidental forwards/backwards while scrolling vertically. To change Firefox's sensitivity to horizontal swipes, edit:<br />
<br />
mousewheel.default.delta_multiplier_x<br />
<br />
The optimum value will depend on your touchpad and how you use it, try starting with {{ic|10}}. A negative value will reverse the swipe directions.<br />
<br />
=== Opera: horizontal scrolling issues ===<br />
<br />
Same as above.<br />
To fix it, go to ''Tools > Preferences > Advanced > Shortcuts''. Select "Opera Standard" mouse setup and click "Edit". In "Application" section:<br />
{{Accuracy|Description here is not so clear and i don't use Opera,Please make it clear :)}}<br />
* assign key "Button 6" to command "Scroll left"<br />
* assign key "Button 7" to command "Scroll right"<br />
<br />
=== Scrolling and multiple actions with Synaptics on LG laptops ===<br />
<br />
These problems seem to be occurring on several models of LG laptops.<br />
Symptoms include: when pressing Mouse Button 1, Synaptics interprets it as ScrollUP and a regular button 1 click; same goes for button 2.<br />
<br />
The scrolling issue can be resolved by entering in {{ic|xorg.conf}}:<br />
<br />
{{hc|/etc/X11/xorg.conf.d/xorg.conf|Option "UpDownScrolling" "0"}}<br />
<br />
{{Note|This will make Synaptics interpret one button push as three. There is a patch written by Oskar Sandberg[http://www.math.chalmers.se/~ossa/linux/lg_tx_express.html] that removes these clicks.}}<br />
<br />
Apparently, when trying to compile this against the latest version of Synaptics it fails. The solution to this is using the GIT repository for Synaptics[http://web.telia.com/~u89404340/touchpad/synaptics/.git].<br />
<br />
There is also a package build file in the AUR to automate this: {{AUR|xf86-input-synaptics-lg}}{{Broken package link|{{aur-mirror|xf86-input-synaptics-lg}}}}.<br />
<br />
To build the package after downloading the tarball and unpacking it, execute:<br />
<br />
$ cd synaptics-git<br />
$ makepkg<br />
<br />
=== Other external mouse issues ===<br />
<br />
First, make sure your section describing the external mouse contains this line (or that the line looks like this):<br />
<br />
{{hc|/etc/X11/xorg.conf.d/xorg.conf|Option "Device" "/dev/input/mice"}}<br />
<br />
If the "Device" line is different, change it to the above and try to restart X. If this does not solve your problem, make your '''touchpad''' is the CorePointer in the "Server Layout" section:<br />
<br />
{{hc|/etc/X11/xorg.conf.d/xorg.conf|InputDevice "Touchpad" "CorePointer"}}<br />
<br />
and make your external device "SendCoreEvents":<br />
<br />
{{hc|/etc/X11/xorg.conf.d/xorg.conf|InputDevice "USB Mouse" "SendCoreEvents"}}<br />
<br />
finally add this to your external device's section:<br />
<br />
{{hc|/etc/X11/xorg.conf.d/xorg.conf|Option "SendCoreEvents" "true"}}<br />
<br />
If all of the above does not work for you, please check relevant bug trackers for possible bugs, or go through the forums to see if anyone has found a better solution.<br />
<br />
=== Touchpad synchronization issues ===<br />
<br />
{{Out of date|section=Outdated "Touchpad synchronization issues" section}}<br />
<br />
Sometimes the cursor may freeze for several seconds or start acting on its own for no apparent reason. This behavior is accompanied by records in {{ic|/var/log/messages.log}}<br />
<br />
{{hc|/var/log/messages.log|psmouse.c: TouchPad at isa0060/serio1/input0 lost synchronization, throwing 3 bytes away}}<br />
<br />
This problem has no general solution, but there are several possible workarounds.<br />
* If you use CPU frequency scaling, avoid using the "ondemand" governor and use the "performance" governor when possible, as the touchpad may lose sync when the CPU frequency changes.<br />
* Avoid using an ACPI battery monitor.<br />
* Attempt to load psmouse with "proto=imps" option. To do that, add this line to your {{ic|/etc/modprobe.d/modprobe.conf}}:<br />
<br />
{{hc|/etc/modprobe.d/modprobe.conf|2=options psmouse proto=imps}}<br />
<br />
* Try another desktop environment. Some users report that this problem only occurs when using XFCE or GNOME, for whatever reason<br />
<br />
===Xorg.log.0 shows SynPS/2 Synaptics touchpad can not grab event device, errno=16 ===<br />
<br />
If you are using Xorg 7.4, you may get a warning like this from {{ic|/var/log/Xorg.0.log}}, thais is because the driver will grab the event device for exclusive use when using the Linux 2.6 event protocol. When it fails, X will return this error message.<br />
<br />
Grabbing the event device means that no other user space or kernel space program sees the touchpad events. This is desirable if the X config file includes {{ic|/dev/input/mice}} as an input device, but is undesirable if you want to monitor the device from user space.<br />
<br />
If you want to control it, add or modify the "GrabEventDevice" option in you touchpad section in {{ic|/etc/X11/xorg.conf.d/50-synaptics.conf}}:<br />
<br />
{{hc|/etc/X11/xorg.conf.d/50-synaptics.conf|2=<br />
...<br />
Option "GrabEventDevice" "''boolean''"<br />
...<br />
}}<br />
<br />
This will come into effect when X is restarted, though you can also change it by using synclient. When changing this parameter with the synclient program, the change will not take effect until the Synaptics driver is disabled and re-enabled. This can be achieved by switching to a text console and then switching back to X.<br />
<br />
=== Synaptics loses multitouch detection after rebooting from Windows ===<br />
<br />
Many drivers include a firmware that is loaded into flash memory when the computer boots. This firmware is not necessarily cleared upon shutdown, and is not always compatible with Linux drivers. The only way to clear the flash memory is to shutdown completely rather than using reboot. It is generally considered best practice to never use reboot when switching between operating systems.<br />
<br />
=== Touchpad not recognized after shutdown from Arch ===<br />
Certain touchpads (elantech in particular) will fail to be recognized as a device of any sort after a standard shutdown from Arch linux. There are multiple possible solutions to this problem:<br />
* Boot into a Windows partition/install disk and shutdown from there.<br />
* Wait approximately 1 minute before turning on the computer after shutdown.<br />
* As discussed in https://bugzilla.kernel.org/show_bug.cgi?id=81331#c186 a patch has been merged into the stable kernel that provides a fix for Elantech touchpads. Gigabyte P34, P35v2 and X3 models are supported by default, for others (especially rebranded Gigabyte laptops, like XMG's) {{ic|1=i8042.kbdreset=1}} can be set as kernel parameter.<br />
<br />
=== Trackpoint and Clickpad ===<br />
Newer Thinkpads do not have physical buttons for their Trackpoint anymore and instead use the upper area of the Clickpad for buttons (Left, Middle, Right). <br />
Apart from the ergonomic viewpoint this works quite well with current Xorg. Unfortunately mouse wheel emulation using the middle button is not supported yet. Install {{AUR|xf86-input-evdev-trackpoint}} from the AUR for a patched and properly configured version if you intend to use the Trackpoint.<br />
<br />
=== ASUS Touchpads only recognised as PS/2 FocalTech emulated mouse ===<br />
<br />
# Install the linux header for your kernel<br />
# Install the focaltech-dkms from https://github.com/hanipouspilot/focaltech-dkms<br />
# Restart your computer<br />
# Edit your settings in the "Mouse and Trackpad" settings.<br />
<br />
=== Trouble with touchpad settings under GNOME ===<br />
<br />
Synaptics is no longer supported under GNOME. Migrate to [[libinput]]. See [https://bugzilla.gnome.org/show_bug.cgi?id=764257#c12 this bug report].<br />
<br />
== See also ==<br />
<br />
* [http://cgit.freedesktop.org/xorg/driver/xf86-input-synaptics/ Synaptics touchpad driver]<br />
* [http://www.x.org/archive/X11R7.5/doc/man/man4/synaptics.4.html Synaptics manual on x.org ]</div>Zekesonxxhttps://wiki.archlinux.org/index.php?title=User:Zekesonxx&diff=420382User:Zekesonxx2016-02-13T06:37:34Z<p>Zekesonxx: no ur a towel</p>
<hr />
<div>I program things and sometimes contribute things.<br />
<br />
https://github.com/zekesonxx<br />
<br />
Zeke's Law of AUR Packages: Given a long enough period of time, every Arch installation will eventually install {{pkg|gcc-fortran}}.<br />
<br />
=== Computer Specs ===<br />
Desktop: i5-2320, 8GB RAM, GTX 970, running <del>Windows 7 Home Premium 64-bit with dwm.exe</del> Arch Linux with xfce4.<br />
<br />
Laptop: Dell Inspiron M5030, running Arch 64-bit with xfce4, off a <del>16GB flash drive</del> 80GB 5400RPM hard drive! Whoo!.<br />
<br />
=== PGP ===<br />
<br />
{{bc|<nowiki>-----BEGIN PGP SIGNED MESSAGE-----<br />
Hash: SHA512<br />
<br />
I hearby verify that I am user Zekesonxx on the Arch Linux Wiki, as of 2015-09-17.<br />
<br />
User page: https://wiki.archlinux.org/index.php/User:Zekesonxx<br />
-----BEGIN PGP SIGNATURE-----<br />
Version: GnuPG v2<br />
<br />
iQEcBAEBCgAGBQJV+2YNAAoJEIzSZXCb/eAOnxYH/2Jd35L92d1NPMssOJNNp5Af<br />
2FL4aiLAqmOR0xXwMBjn1yPQfbVY50Z+mJWrdnPiQyKDkQQ7httdKx2PqGFxWh0y<br />
1VWODlyEoWwq3yMTmSZOrDU3MUZ6K24Rp8XClqEI0y1cyodHxtnunRXjkd8u+yuY<br />
8TMZFE+pYaW8zTLWP+zqhfnbAdrQjHJMVaRn+wJKSwsFYPZP9BaQVK71An10t66e<br />
BENWYkHnfUdACy6lhb+WYr5uytlfGyvdKXY+ty/axXpUjQIMFY7U3GAdsJVEQwLh<br />
Og39UNhsaLOTMhoD8A7UDx6EvjsEVn5Qz9alpG1ZLlnK/WxgoFwgX0nN/C491qY=<br />
=9YEs<br />
-----END PGP SIGNATURE-----<br />
</nowiki>}}<br />
<br />
Personal: [https://pgp.mit.edu/pks/lookup?op=vindex&fingerprint=on&search=0x79B1898A53A871BF4D202E778CD265709BFDE00E 79B1 898A 53A8 71BF 4D20 2E77 8CD2 6570 9BFD E00E] ([https://keybase.io/zekesonxx keybase.io])<br/><br />
Package: [https://pgp.mit.edu/pks/lookup?op=vindex&fingerprint=on&search=0xC1AE1A2666B42BFD91AB26819C7F3483D6B6F0E0 C1AE 1A26 66B4 2BFD 91AB 2681 9C7F 3483 D6B6 F0E0]<br />
<br />
The signature above is meant as a replacement for using a [[Wikipedia:Wikipedia:Wikipedia Signpost/2007-05-14/Committed identity|committed identity hash]], as well as proof that I am who I say I am.</div>Zekesonxxhttps://wiki.archlinux.org/index.php?title=Core_utilities&diff=418230Core utilities2016-01-30T06:49:30Z<p>Zekesonxx: /* Basic commands */ Add a ss example using -l</p>
<hr />
<div>[[Category:System administration]]<br />
[[Category:Command shells]]<br />
[[es:Core utilities]]<br />
[[it:Core utilities]]<br />
[[ja:Core Utilities]]<br />
[[ko:Core utilities]]<br />
[[ru:Core utilities]]<br />
[[zh-cn:Core utilities]]<br />
[[zh-tw:Core utilities]]<br />
{{Related articles start}}<br />
{{Related|Bash}}<br />
{{Related|Zsh}}<br />
{{Related|General recommendations}}<br />
{{Related|GNU Project}}<br />
{{Related|sudo}}<br />
{{Related|cron}}<br />
{{Related|man page}}<br />
{{Related|Securely wipe disk#shred}}<br />
{{Related|File permissions and attributes}}<br />
{{Related articles end}}<br />
<br />
This article deals with so-called ''core'' utilities on a GNU/Linux system, such as ''less'', ''ls'', and ''grep''. The scope of this article includes, but is not limited to, those utilities included with the GNU {{Pkg|coreutils}} package. What follows are various tips and tricks and other helpful information related to these utilities.<br />
<br />
== Basic commands ==<br />
<br />
The following table lists basic shell commands every Linux user should be familiar with. Commands in '''bold''' are part of the shell, others are separate programs called from the shell. See the below sections and ''Related articles'' for details.<br />
<br />
{| class="wikitable"<br />
! Command<br />
! Description<br />
! Example<br />
|-<br />
| man<br />
| Show manual page for a command<br />
| man ed<br />
|-<br />
| '''cd'''<br />
| Change directory<br />
| cd /etc/pacman.d<br />
|-<br />
| mkdir<br />
| Create a directory<br />
| mkdir ~/newfolder<br />
|-<br />
| rmdir<br />
| Remove empty directory<br />
| rmdir ~/emptyfolder<br />
|-<br />
| rm<br />
| Remove a file<br />
| rm ~/file.txt<br />
|-<br />
| rm -r<br />
| Remove directory and contents<br />
| rm -r ~/.cache<br />
|-<br />
| ls<br />
| List files<br />
| ls *.mkv<br />
|-<br />
| ls -a<br />
| List hidden files<br />
| ls -a /home/archie<br />
|-<br />
| ls -al<br />
| List hidden files and file properties<br />
|<br />
|-<br />
| mv<br />
| Move a file<br />
| mv ~/compressed.zip ~/archive/compressed2.zip<br />
|-<br />
| cp<br />
| Copy a file<br />
| cp ~/.bashrc ~/.bashrc.bak<br />
|-<br />
| chmod +x<br />
| Make a file executable<br />
| chmod +x ~/.local/bin/myscript.sh<br />
|-<br />
| cat<br />
| Show file contents<br />
| cat /etc/hostname<br />
|-<br />
| strings<br />
| Show printable characters in binary files<br />
| strings /usr/bin/free<br />
|-<br />
| find<br />
| Search for a file<br />
| find ~ -name myfile<br />
|-<br />
| mount<br />
| Mount a partition<br />
| mount /dev/sdc1 /media/usb<br />
|-<br />
| df -h<br />
| Show remaining space on all partitions<br />
|<br />
|-<br />
| ps -A<br />
| Show all running processes<br />
|<br />
|-<br />
| killall<br />
| Kill all running instances of a process<br />
|<br />
|-<br />
| ss -at<br />
| Display a list of open TCP sockets<br />
|<br />
|-<br />
| ss -atl<br />
| Display a list of listening TCP sockets<br />
|<br />
|}<br />
<br />
== cat ==<br />
<br />
[[Wikipedia:cat_(Unix)|cat]] (''catenate'') is a standard Unix utility that concatenates and lists files.<br />
<br />
* Because ''cat'' is not a built-in shell, on many occasions you may find it more convenient to use a [[Wikipedia:Redirection (computing)|redirection]], for example in scripts, or if you care a lot about performance. In fact {{ic|< ''file''}} does the same as {{ic|cat ''file''}}.<br />
<br />
* ''cat'' is able to work with multiple lines, although this is sometimes regarded as bad practice:<br />
<br />
{{bc|<br />
$ cat << EOF >> ''path/file''<br />
''first line''<br />
...<br />
''last line''<br />
EOF<br />
}}<br />
: A better alternative is the ''echo'' command:<br />
{{bc|<br />
$ echo "\<br />
''first line''<br />
...<br />
''last line''" \<br />
>> ''path/file''<br />
}}<br />
<br />
* If you need to list file lines in reverse order, there is a utility called [[Wikipedia:tac (Unix)|tac]] (''cat'' reversed).<br />
<br />
== dd ==<br />
<br />
[[Wikipedia:dd (Unix)|dd]] is a command on Unix and Unix-like operating systems whose primary purpose is to convert and copy a file.<br />
<br />
By default, ''dd'' outputs nothing until the task has finished. To monitor the progress of the operation, add the {{ic|1=status=progress}} option to the command. See the [http://www.gnu.org/software/coreutils/manual/html_node/dd-invocation.html#dd-invocation manual] for more information.<br />
<br />
{{Note|''cp'' does the same as ''dd'' without any operands but is not designed for more versatile disk wiping procedures.}}<br />
<br />
=== dd spin-offs ===<br />
<br />
{{Move|Disk cloning|See [[Talk:Disk_cloning#ddrescue]].}}<br />
<br />
Other ''dd''-like programs feature periodical status output, e.g. a simple progress bar.<br />
<br />
; dcfldd : {{Pkg|dcfldd}} is an enhanced version of dd with features useful for forensics and security. It accepts most of dd's parameters and includes status output. The last stable version of dcfldd was released on December 19, 2006.<sup>[http://dcfldd.sourceforge.net/]</sup><br />
<br />
; ddrescue : GNU {{Pkg|ddrescue}} is a data recovery tool. It is capable of ignoring read errors, which is a useless feature for disk wiping in almost any case. See the [http://www.gnu.org/software/ddrescue/manual/ddrescue_manual.html official manual] for details.<br />
<br />
== grep ==<br />
<br />
[[Wikipedia:grep|grep]] (from [[Wikipedia:ed|ed]]'s ''g/re/p'', ''global/regular expression/print'') is a command line text search utility originally written for Unix. The ''grep'' command searches files or standard input globally for lines matching a given regular expression, and prints them to the program's standard output.<br />
<br />
* Remember that ''grep'' handles files, so a construct like {{ic|cat ''file'' <nowiki>|</nowiki> grep ''pattern''}} is replaceable with {{ic|grep ''pattern'' ''file''}}<br />
<br />
* ''grep'' alternatives optimized for VCS source code do exist, such as {{Pkg|the_silver_searcher}} and {{Pkg|ack}}.<br />
<br />
=== Colored output ===<br />
<br />
{{ic|grep}}'s color output can be helpful for learning [[Wikipedia:regexp|regexp]] and additional {{ic|grep}} functionality.<br />
<br />
To enable ''grep'' coloring write the following entry to the shell configuration file (e.g. if using [[Bash]]):<br />
<br />
{{hc|~/.bashrc|2=alias grep='grep --color=auto'}}<br />
<br />
To include file line numbers in the output, add the option {{ic|-n}} to the line.<br />
<br />
The environment variable {{ic|GREP_COLOR}} can be used to define the default highlight color (the default is red). To change the color find the [http://www.tldp.org/HOWTO/Bash-Prompt-HOWTO/x329.html ANSI escape sequence] for the color liked and add it:<br />
<br />
export GREP_COLOR="1;32"<br />
<br />
{{ic|GREP_COLORS}} may be used to define specific searches.<br />
<br />
=== Standard error ===<br />
<br />
Some commands send their output to standard error, and grep has no apparent effect. In this case, redirect standard error next to standard out:<br />
<br />
$ ''command'' 2>&1 | grep ''args''<br />
<br />
or Bash 4 shorthand:<br />
<br />
$ ''command'' |& grep ''args''<br />
<br />
See also [http://www.tldp.org/LDP/abs/html/io-redirection.html I/O Redirection].<br />
<br />
== find ==<br />
<br />
''find'' is part of the {{Pkg|findutils}} package, which belongs to the {{Grp|base}} package group. <br />
<br />
One would probably expect a ''find'' command to take as argument a file name and search the filesystem for files matching that name. For a program that does exactly that see [[#locate]] below. <br />
<br />
Instead, find takes a set of directories and matches each file under them against a set of expressions. This design allows for some very powerful "one-liners" that would not be possible using the "intuitive" design described above. See [http://mywiki.wooledge.org/UsingFind UsingFind] for usage details.<br />
<br />
== locate ==<br />
<br />
{{ic|locate}} is a common Unix tool for quickly finding files by name. It offers speed improvements over the [http://en.wikipedia.org/wiki/Find find] tool by searching a pre-constructed database file, rather than the filesystem directly. The downside of this approach is that changes made since the construction of the database file cannot be detected by {{ic|locate}}. This problem is minimised by regular, typically scheduled use of the {{ic|updatedb}} command, which (as the name suggests) updates the database.<br />
<br />
{{Note|Although in other distros {{ic|locate}} and {{ic|updatedb}} are in the {{Pkg|findutils}} package, they are no longer present in Arch's package. To use it, install the {{Pkg|mlocate}} package. mlocate is a newer implementation of the tool, but is used in exactly the same way.}}<br />
<br />
Before {{ic|locate}} can be used, the database will need to be created. To do this, simply run {{ic|updatedb}} as root.<br />
<br />
See also [http://jvns.ca/blog/2015/03/05/how-the-locate-command-works-and-lets-rewrite-it-in-one-minute/ How locate works and rewrite it in one minute]<br />
<br />
=== Keeping the database up-to-date ===<br />
<br />
When {{ic|mlocate}} is installed, a script is automatically scheduled to run daily via {{ic|systemd}}, to update the database. You can also manually run {{ic|updatedb}} as root at any time. <br />
<br />
To save time, the {{ic|updatedb}} can be (and by default is) configured to ignore certain filesystems and paths by editing {{ic|/etc/updatedb.conf}}. {{ic|man updatedb.conf}} will tell you about the semantics of this file. It is worth noting that among the paths ignored in the default configuration (i.e. those in the "PRUNEPATHS" string) are {{ic|/media}} and {{ic|/mnt}}, so {{ic|locate}} may not discover files on external devices.<br />
<br />
== iconv ==<br />
<br />
{{ic|iconv}} converts the encoding of characters from one codeset to another.<br />
<br />
The following command will convert the file {{ic|foo}} from ISO-8859-15 to UTF-8 saving it to {{ic|foo.utf}}:<br />
<br />
$ iconv -f ISO-8859-15 -t UTF-8 foo >foo.utf<br />
<br />
See {{ic|man iconv}} for more details.<br />
<br />
=== Convert a file in place ===<br />
{{Tip|You can use {{pkg|recode}} instead of iconv if you do not want to touch the mtime.}}<br />
Unlike [[#sed|sed]], ''iconv'' does not provide an option to convert a file in place. However, {{ic|sponge}} can be used to handle it, it comes with {{pkg|moreutils}}.<br />
<br />
$ iconv -f WINDOWS-1251 -t UTF-8 foobar.txt | sponge foobar.txt<br />
<br />
See {{ic|man sponge}} for details.<br />
<br />
== ip ==<br />
<br />
[[Wikipedia:Iproute2|ip]] allows you to show information about network devices, IP addresses, routing tables, and other objects in the Linux [[Wikipedia:Internet Protocol|IP]] software stack. By appending various commands, you can also manipulate or configure most of these objects.<br />
<br />
{{Note|The ''ip'' utility is provided by the {{Pkg|iproute2}} package, which is included in the {{Grp|base}} group.}}<br />
<br />
{| class="wikitable"<br />
! Object !! Purpose !! Manual Page Name<br />
|-<br />
| ip addr || protocol address management || ip-address <br />
|-<br />
| ip addrlabel || protocol address label management || ip-addrlabel<br />
|-<br />
| ip l2tp || tunnel Ethernet over IP (L2TPv3) || ip-l2tp <br />
|-<br />
| ip link || network device configuration || ip-link <br />
|-<br />
| ip maddr || multicast addresses management || ip-maddress<br />
|-<br />
| ip monitor || watch for netlink messages || ip-monitor<br />
|-<br />
| ip mroute || multicast routing cache management || ip-mroute<br />
|-<br />
| ip mrule || rule in multicast routing policy db ||<br />
|-<br />
| ip neigh || neighbour/ARP tables management || ip-neighbour<br />
|-<br />
| ip netns || process network namespace management || ip-netns<br />
|-<br />
| ip ntable || neighbour table configuration || ip-ntable<br />
|-<br />
| ip route || routing table management || ip-route<br />
|-<br />
| ip rule || routing policy database management || ip-rule<br />
|-<br />
| ip tcp_metrics || management for TCP Metrics || ip-tcp_metrics<br />
|-<br />
| ip tunnel || tunnel configuration || ip-tunnel<br />
|-<br />
| ip tuntap || manage TUN/TAP devices ||<br />
|-<br />
| ip xfrm || manage IPsec policies || ip-xfrm<br />
|}<br />
<br />
The {{ic|help}} command is available for all objects. For example, typing {{ic|ip addr help}} will show you the command syntax available for the address object. For advanced usage see the [http://www.policyrouting.org/iproute2.doc.html iproute2 documentation].<br />
<br />
The [[Network configuration]] article shows how the ''ip'' command is used in practice for various common tasks.<br />
<br />
{{Note|You might be familiar with the [[Wikipedia:ifconfig|ifconfig]] command, which was used in older versions of Linux for interface configuration. It is now deprecated in Arch Linux; you should use ''ip'' instead. }}<br />
<br />
== less ==<br />
<br />
{{Style|less is a complex beast, and this section should explain some of the basic less commands - not go on a bunch of tangents like colored output}}<br />
<br />
[[Wikipedia:less (Unix)|less]] is a terminal pager program used to view the contents of a text file one screen at a time. Whilst similar to other pagers such as [[Wikipedia:more (command)|more]] and [[Wikipedia:pg (Unix)|pg]], ''less'' offers a more advanced interface and complete [http://www.greenwoodsoftware.com/less/faq.html feature-set].<br />
<br />
See [[List of applications#Terminal pagers]] for alternatives.<br />
<br />
=== Colored output through environment variables ===<br />
<br />
Add the following lines to your shell configuration file:<br />
<br />
{{hc|~/.bashrc|2=<br />
export LESS=-R<br />
export LESS_TERMCAP_mb=$'\E[1;31m'<br />
export LESS_TERMCAP_md=$'\E[1;36m'<br />
export LESS_TERMCAP_me=$'\E[0m'<br />
export LESS_TERMCAP_se=$'\E[0m'<br />
export LESS_TERMCAP_so=$'\E[01;44;33m'<br />
export LESS_TERMCAP_ue=$'\E[0m'<br />
export LESS_TERMCAP_us=$'\E[1;32m'<br />
}}<br />
<br />
Change the values ([[Wikipedia:ANSI escape code#Colors|ANSI escape code]]) as you like.<br />
<br />
{{note|The {{ic|LESS_TERMCAL_''xx''}} variables is currently undocumented in less(1), for a detailed explanation on these sequences, see this [http://unix.stackexchange.com/questions/108699/documentation-on-less-termcap-variables/108840#108840 anwser].}}<br />
<br />
=== Colored output through wrappers ===<br />
<br />
You can enable code syntax coloring in ''less''. First, [[install]] {{Pkg|source-highlight}}, then add these lines to your shell configuration file:<br />
{{hc|~/.bashrc|<nowiki><br />
export LESSOPEN="| /usr/bin/source-highlight-esc.sh %s"<br />
export LESS='-R '<br />
</nowiki>}}<br />
<br />
Frequent users of the command line interface might want to install {{Pkg|lesspipe}}.<br />
<br />
Users may now list the compressed files inside of an archive using their pager:<br />
<br />
{{hc|$ less ''compressed_file''.tar.gz|2=<br />
==> use tar_file:contained_file to view a file in the archive<br />
-rw------- ''username''/''group'' 695 2008-01-04 19:24 ''compressed_file''/''content1''<br />
-rw------- ''username''/''group'' 43 2007-11-07 11:17 ''compressed_file''/''content2''<br />
''compressed_file''.tar.gz (END)<br />
}}<br />
<br />
''lesspipe'' also grants ''less'' the ability of interfacing with files other than archives, serving as an alternative for the specific command associated for that file-type (such as viewing HTML via {{Pkg|python-html2text}}).<br />
<br />
Re-login after installing ''lesspipe'' in order to activate it, or source {{ic|/etc/profile.d/lesspipe.sh}}.<br />
<br />
=== Vim as alternative pager ===<br />
<br />
[[Vim]] (''visual editor improved'') has a script to view the content of text files, compressed files, binaries, directories. Add the following line to your shell configuration file to use it as a pager:<br />
{{hc|~/.bashrc|2=alias less='/usr/share/vim/vim74/macros/less.sh'}}<br />
<br />
There is also an alternative to ''less.sh'' macro, which may work as the {{ic|PAGER}} environment variable. Install {{Pkg|vimpager}} and add the following to your shell configuration file:<br />
{{hc|~/.bashrc|2=<br />
export PAGER='vimpager'<br />
alias less=$PAGER<br />
}}<br />
<br />
Now programs that use the {{ic|PAGER}} environment variable, like [[git]], will use ''vim'' as pager.<br />
<br />
=== Colored output when reading from stdin ===<br />
<br />
{{Note|It is recommended to add [[#Colored output through environment variables]] to your {{ic|~/.bashrc}} or {{ic|~/.zshrc}}, as the below is based on {{ic|1=export LESS=R}}}}<br />
<br />
When you run a command and pipe its [[Wikipedia:Standard output|standard output]] (''stdout'') to ''less'' for a paged view (e.g. {{ic|<nowiki>pacman -Qe | less</nowiki>}}), you may find that the output is no longer colored. This is usually because the program tries to detect if its ''stdout'' is an interactive terminal, in which case it prints colored text, and otherwise prints uncolored text. This is good behaviour when you want to redirect ''stdout'' to a file, e.g. {{ic|<nowiki>pacman -Qe > pkglst-backup.txt</nowiki>}}, but less suited when you want to view output in {{ic|less}}.<br />
<br />
Some programs provide an option to disable the interactive tty detection:<br />
<br />
# dmesg --color=always | less<br />
<br />
In case that the program does not provide any similar option, it is possible to trick the program into thinking its ''stdout'' is an interactive terminal with the following utilities:<br />
<br />
* {{App|stdoutisatty|A small program which catches the {{ic|isatty}} function call.|https://github.com/lilydjwg/stdoutisatty.|{{AUR|stdoutisatty-git}}}}<br />
:Example: {{ic|stdoutisatty ''program'' <nowiki>| less</nowiki>}}<br />
* {{App|unbuffer|A tclsh script comes with expect, it invokes desired program within a pty.|http://expect.sourceforge.net/example/unbuffer.man.html|{{Pkg|expect}}}}<br />
:Example: {{ic|unbuffer ''program'' <nowiki>| less</nowiki>}}<br />
<br />
Alternatively, using [http://zsh.sourceforge.net/Doc/Release/Zsh-Modules.html#The-zsh_002fzpty-Module zpty] module from [[zsh]]: [http://lilydjwg.is-programmer.com/2011/6/29/using-zpty-module-of-zsh.27677.html]<br />
<br />
{{hc|~/.zshrc|<br />
<nowiki>zmodload zsh/zpty<br />
<br />
pty() {<br />
zpty pty-${UID} ${1+$@}<br />
if [[ ! -t 1 ]];then<br />
setopt local_traps<br />
trap '' INT<br />
fi<br />
zpty -r pty-${UID}<br />
zpty -d pty-${UID}<br />
}<br />
<br />
ptyless() {<br />
pty $@ | less<br />
}</nowiki>}}<br />
<br />
Usage:<br />
<br />
$ ptyless ''program''<br />
<br />
To pipe it to other pager (less in this example):<br />
<br />
$ pty ''program'' | less<br />
<br />
== ls ==<br />
<br />
[[Wikipedia:ls|ls]] (''list'') is a command to list files in Unix and Unix-like operating systems.<br />
<br />
* ''ls'' can list [[File permissions and attributes#Viewing_permissions|file permissions]].<br />
<br />
* Colored output can be enabled with a simple alias. File {{ic|~/.bashrc}} should already have the following entry copied from {{ic|/etc/skel/.bashrc}}:<br />
: {{ic|1=alias ls='ls --color=auto'}}<br />
The next step will further enhance the colored ''ls'' output; for example, broken (orphan) symlinks will start showing in a red hue. Add the following to your shell configuration file:<br />
: {{ic|eval $(dircolors -b)}}<br />
<br />
== mkdir ==<br />
<br />
[[Wikipedia:mkdir|mkdir]] (''make directory'') is a command to create directories.<br />
* To create a directory and its whole hierarchy, the {{ic|-p}} switch is used, otherwise an error is printed. As users are supposed to know what they want, {{ic|-p}} switch may be used as a default:<br />
: {{bc|1=alias mkdir='mkdir -p -v'}}<br />
: The {{ic|-v}} switch make it verbose.<br />
<br />
* Changing mode of a just created directory using ''chmod'' is not necessary as the {{ic|-m}} option lets you define the access permissions.<br />
<br />
{{Tip|If you just want a temporary directory, a better alternative may be [[Wikipedia:Temporary file|mktemp]] (''make temporary''): {{ic|mktemp -p}}.}}<br />
<br />
== mv ==<br />
<br />
[[Wikipedia:mv|mv]] (''move'') is a command to move and rename files and directories.<br />
* It can be very dangerous so it is prudent to limit its scope:<br />
: {{bc|1=alias mv=' timeout 8 mv -iv'}}<br />
: This alias suspends ''mv'' after eight seconds, asks confirmation to delete three or more files, lists the operations in progress and does not store itself in the shell history file if the shell is configured to ignore space starting commands.<br />
<br />
== od ==<br />
<br />
The [[Wikipedia:od (Unix)|od]] (''o''ctal ''d''ump) command is useful for visualizing data that is not in a human-readable format, like the executable code of a program, or the contents of an unformatted device. See the [http://www.gnu.org/software/coreutils/manual/html_node/od-invocation.html#od-invocation manual] for more information.<br />
<br />
== pv ==<br />
<br />
You can use {{Pkg|pv}} (''pipe viewer'') to monitor the progress of data through a pipeline, for example:<br />
<br />
# dd if=''/source/filestream'' | pv -''monitor_options'' -s ''size_of_file'' | dd of=''/destination/filestream''<br />
<br />
In most cases {{ic|pv}} functions as a drop-in replacement for {{ic|cat}}, however there are undocumented differences. For example, under both Zsh and Bash, the following command hangs forever:<br />
<br />
# cat <(pv /usr/share/dict/words)<br />
<br />
Use of ''strace'' shows that {{ic|pv}} is stopped with {{ic|SIGTTOU}}.<br />
<br />
== rm ==<br />
<br />
[[Wikipedia:rm_(Unix)|rm]] (''remove'') is a command to delete files and directories.<br />
<br />
* It can be very dangerous, so it is prudent to limit its scope:<br />
: {{bc|1=alias rm=' timeout 3 rm -Iv --one-file-system'}}<br />
: This alias suspends ''rm'' after three seconds, asks confirmation to delete three or more files, lists the operations in progress, does not involve more than one file systems and does not store itself in the shell history file if the shell is configured to ignore space starting commands. Substitute {{ic|-I}} with {{ic|-i}} if you prefer to confirm even for one file.<br />
: Zsh users may want to put {{ic|noglob}} before {{ic|timeout}} to avoid implicit expansions.<br />
<br />
* To remove directories known to be empty, use ''rmdir'' as it fails in case of files inside the target.<br />
<br />
== sed ==<br />
<br />
[[Wikipedia:sed|sed]] (''stream editor'') is a Unix utility that parses and transforms text.<br />
<br />
Here is a handy [http://sed.sourceforge.net/sed1line.txt list] of ''sed'' one-liners examples.<br />
<br />
{{Tip|More powerful alternatives are [[Wikipedia:AWK|AWK]] and even [[Wikipedia:Perl|Perl]] language.}}<br />
<br />
== seq ==<br />
<br />
'''seq''' (''sequence'') is a utility for generating a sequence of numbers. Shell built-in alternatives are available, so it is good practice to use them as explained on [[Wikipedia:Seq (Unix)|Wikipedia]].<br />
<br />
== which ==<br />
<br />
The [[wikipedia:Which_(Unix)|which]] command is useful to determine the path to an executable, for example:<br />
<br />
# journalctl $(which sshd)<br />
<br />
== See also ==<br />
<br />
* [http://www.reddit.com/r/commandline/comments/19garq/a_sampling_of_coreutils_120/ A sampling of coreutils] [http://www.reddit.com/r/commandline/comments/19ge6v/a_sampling_of_coreutils_2040/ , part 2] [http://www.reddit.com/r/commandline/comments/19j1w3/a_sampling_of_coreutils_4060/ , part 3] - Overview of commands in coreutils<br />
* [http://www.gnu.org/software/coreutils/manual/coreutils.html GNU Coreutils Manpage]<br />
* [http://www.linuxquestions.org/questions/linux-newbie-8/learn-the-dd-command-362506/ Learn the DD command]</div>Zekesonxxhttps://wiki.archlinux.org/index.php?title=Core_utilities&diff=418229Core utilities2016-01-30T06:48:41Z<p>Zekesonxx: /* Basic commands */ avi is shit</p>
<hr />
<div>[[Category:System administration]]<br />
[[Category:Command shells]]<br />
[[es:Core utilities]]<br />
[[it:Core utilities]]<br />
[[ja:Core Utilities]]<br />
[[ko:Core utilities]]<br />
[[ru:Core utilities]]<br />
[[zh-cn:Core utilities]]<br />
[[zh-tw:Core utilities]]<br />
{{Related articles start}}<br />
{{Related|Bash}}<br />
{{Related|Zsh}}<br />
{{Related|General recommendations}}<br />
{{Related|GNU Project}}<br />
{{Related|sudo}}<br />
{{Related|cron}}<br />
{{Related|man page}}<br />
{{Related|Securely wipe disk#shred}}<br />
{{Related|File permissions and attributes}}<br />
{{Related articles end}}<br />
<br />
This article deals with so-called ''core'' utilities on a GNU/Linux system, such as ''less'', ''ls'', and ''grep''. The scope of this article includes, but is not limited to, those utilities included with the GNU {{Pkg|coreutils}} package. What follows are various tips and tricks and other helpful information related to these utilities.<br />
<br />
== Basic commands ==<br />
<br />
The following table lists basic shell commands every Linux user should be familiar with. Commands in '''bold''' are part of the shell, others are separate programs called from the shell. See the below sections and ''Related articles'' for details.<br />
<br />
{| class="wikitable"<br />
! Command<br />
! Description<br />
! Example<br />
|-<br />
| man<br />
| Show manual page for a command<br />
| man ed<br />
|-<br />
| '''cd'''<br />
| Change directory<br />
| cd /etc/pacman.d<br />
|-<br />
| mkdir<br />
| Create a directory<br />
| mkdir ~/newfolder<br />
|-<br />
| rmdir<br />
| Remove empty directory<br />
| rmdir ~/emptyfolder<br />
|-<br />
| rm<br />
| Remove a file<br />
| rm ~/file.txt<br />
|-<br />
| rm -r<br />
| Remove directory and contents<br />
| rm -r ~/.cache<br />
|-<br />
| ls<br />
| List files<br />
| ls *.mkv<br />
|-<br />
| ls -a<br />
| List hidden files<br />
| ls -a /home/archie<br />
|-<br />
| ls -al<br />
| List hidden files and file properties<br />
|<br />
|-<br />
| mv<br />
| Move a file<br />
| mv ~/compressed.zip ~/archive/compressed2.zip<br />
|-<br />
| cp<br />
| Copy a file<br />
| cp ~/.bashrc ~/.bashrc.bak<br />
|-<br />
| chmod +x<br />
| Make a file executable<br />
| chmod +x ~/.local/bin/myscript.sh<br />
|-<br />
| cat<br />
| Show file contents<br />
| cat /etc/hostname<br />
|-<br />
| strings<br />
| Show printable characters in binary files<br />
| strings /usr/bin/free<br />
|-<br />
| find<br />
| Search for a file<br />
| find ~ -name myfile<br />
|-<br />
| mount<br />
| Mount a partition<br />
| mount /dev/sdc1 /media/usb<br />
|-<br />
| df -h<br />
| Show remaining space on all partitions<br />
|<br />
|-<br />
| ps -A<br />
| Show all running processes<br />
|<br />
|-<br />
| killall<br />
| Kill all running instances of a process<br />
|<br />
|-<br />
| ss -at<br />
| Display a list of open TCP sockets<br />
|<br />
|}<br />
<br />
== cat ==<br />
<br />
[[Wikipedia:cat_(Unix)|cat]] (''catenate'') is a standard Unix utility that concatenates and lists files.<br />
<br />
* Because ''cat'' is not a built-in shell, on many occasions you may find it more convenient to use a [[Wikipedia:Redirection (computing)|redirection]], for example in scripts, or if you care a lot about performance. In fact {{ic|< ''file''}} does the same as {{ic|cat ''file''}}.<br />
<br />
* ''cat'' is able to work with multiple lines, although this is sometimes regarded as bad practice:<br />
<br />
{{bc|<br />
$ cat << EOF >> ''path/file''<br />
''first line''<br />
...<br />
''last line''<br />
EOF<br />
}}<br />
: A better alternative is the ''echo'' command:<br />
{{bc|<br />
$ echo "\<br />
''first line''<br />
...<br />
''last line''" \<br />
>> ''path/file''<br />
}}<br />
<br />
* If you need to list file lines in reverse order, there is a utility called [[Wikipedia:tac (Unix)|tac]] (''cat'' reversed).<br />
<br />
== dd ==<br />
<br />
[[Wikipedia:dd (Unix)|dd]] is a command on Unix and Unix-like operating systems whose primary purpose is to convert and copy a file.<br />
<br />
By default, ''dd'' outputs nothing until the task has finished. To monitor the progress of the operation, add the {{ic|1=status=progress}} option to the command. See the [http://www.gnu.org/software/coreutils/manual/html_node/dd-invocation.html#dd-invocation manual] for more information.<br />
<br />
{{Note|''cp'' does the same as ''dd'' without any operands but is not designed for more versatile disk wiping procedures.}}<br />
<br />
=== dd spin-offs ===<br />
<br />
{{Move|Disk cloning|See [[Talk:Disk_cloning#ddrescue]].}}<br />
<br />
Other ''dd''-like programs feature periodical status output, e.g. a simple progress bar.<br />
<br />
; dcfldd : {{Pkg|dcfldd}} is an enhanced version of dd with features useful for forensics and security. It accepts most of dd's parameters and includes status output. The last stable version of dcfldd was released on December 19, 2006.<sup>[http://dcfldd.sourceforge.net/]</sup><br />
<br />
; ddrescue : GNU {{Pkg|ddrescue}} is a data recovery tool. It is capable of ignoring read errors, which is a useless feature for disk wiping in almost any case. See the [http://www.gnu.org/software/ddrescue/manual/ddrescue_manual.html official manual] for details.<br />
<br />
== grep ==<br />
<br />
[[Wikipedia:grep|grep]] (from [[Wikipedia:ed|ed]]'s ''g/re/p'', ''global/regular expression/print'') is a command line text search utility originally written for Unix. The ''grep'' command searches files or standard input globally for lines matching a given regular expression, and prints them to the program's standard output.<br />
<br />
* Remember that ''grep'' handles files, so a construct like {{ic|cat ''file'' <nowiki>|</nowiki> grep ''pattern''}} is replaceable with {{ic|grep ''pattern'' ''file''}}<br />
<br />
* ''grep'' alternatives optimized for VCS source code do exist, such as {{Pkg|the_silver_searcher}} and {{Pkg|ack}}.<br />
<br />
=== Colored output ===<br />
<br />
{{ic|grep}}'s color output can be helpful for learning [[Wikipedia:regexp|regexp]] and additional {{ic|grep}} functionality.<br />
<br />
To enable ''grep'' coloring write the following entry to the shell configuration file (e.g. if using [[Bash]]):<br />
<br />
{{hc|~/.bashrc|2=alias grep='grep --color=auto'}}<br />
<br />
To include file line numbers in the output, add the option {{ic|-n}} to the line.<br />
<br />
The environment variable {{ic|GREP_COLOR}} can be used to define the default highlight color (the default is red). To change the color find the [http://www.tldp.org/HOWTO/Bash-Prompt-HOWTO/x329.html ANSI escape sequence] for the color liked and add it:<br />
<br />
export GREP_COLOR="1;32"<br />
<br />
{{ic|GREP_COLORS}} may be used to define specific searches.<br />
<br />
=== Standard error ===<br />
<br />
Some commands send their output to standard error, and grep has no apparent effect. In this case, redirect standard error next to standard out:<br />
<br />
$ ''command'' 2>&1 | grep ''args''<br />
<br />
or Bash 4 shorthand:<br />
<br />
$ ''command'' |& grep ''args''<br />
<br />
See also [http://www.tldp.org/LDP/abs/html/io-redirection.html I/O Redirection].<br />
<br />
== find ==<br />
<br />
''find'' is part of the {{Pkg|findutils}} package, which belongs to the {{Grp|base}} package group. <br />
<br />
One would probably expect a ''find'' command to take as argument a file name and search the filesystem for files matching that name. For a program that does exactly that see [[#locate]] below. <br />
<br />
Instead, find takes a set of directories and matches each file under them against a set of expressions. This design allows for some very powerful "one-liners" that would not be possible using the "intuitive" design described above. See [http://mywiki.wooledge.org/UsingFind UsingFind] for usage details.<br />
<br />
== locate ==<br />
<br />
{{ic|locate}} is a common Unix tool for quickly finding files by name. It offers speed improvements over the [http://en.wikipedia.org/wiki/Find find] tool by searching a pre-constructed database file, rather than the filesystem directly. The downside of this approach is that changes made since the construction of the database file cannot be detected by {{ic|locate}}. This problem is minimised by regular, typically scheduled use of the {{ic|updatedb}} command, which (as the name suggests) updates the database.<br />
<br />
{{Note|Although in other distros {{ic|locate}} and {{ic|updatedb}} are in the {{Pkg|findutils}} package, they are no longer present in Arch's package. To use it, install the {{Pkg|mlocate}} package. mlocate is a newer implementation of the tool, but is used in exactly the same way.}}<br />
<br />
Before {{ic|locate}} can be used, the database will need to be created. To do this, simply run {{ic|updatedb}} as root.<br />
<br />
See also [http://jvns.ca/blog/2015/03/05/how-the-locate-command-works-and-lets-rewrite-it-in-one-minute/ How locate works and rewrite it in one minute]<br />
<br />
=== Keeping the database up-to-date ===<br />
<br />
When {{ic|mlocate}} is installed, a script is automatically scheduled to run daily via {{ic|systemd}}, to update the database. You can also manually run {{ic|updatedb}} as root at any time. <br />
<br />
To save time, the {{ic|updatedb}} can be (and by default is) configured to ignore certain filesystems and paths by editing {{ic|/etc/updatedb.conf}}. {{ic|man updatedb.conf}} will tell you about the semantics of this file. It is worth noting that among the paths ignored in the default configuration (i.e. those in the "PRUNEPATHS" string) are {{ic|/media}} and {{ic|/mnt}}, so {{ic|locate}} may not discover files on external devices.<br />
<br />
== iconv ==<br />
<br />
{{ic|iconv}} converts the encoding of characters from one codeset to another.<br />
<br />
The following command will convert the file {{ic|foo}} from ISO-8859-15 to UTF-8 saving it to {{ic|foo.utf}}:<br />
<br />
$ iconv -f ISO-8859-15 -t UTF-8 foo >foo.utf<br />
<br />
See {{ic|man iconv}} for more details.<br />
<br />
=== Convert a file in place ===<br />
{{Tip|You can use {{pkg|recode}} instead of iconv if you do not want to touch the mtime.}}<br />
Unlike [[#sed|sed]], ''iconv'' does not provide an option to convert a file in place. However, {{ic|sponge}} can be used to handle it, it comes with {{pkg|moreutils}}.<br />
<br />
$ iconv -f WINDOWS-1251 -t UTF-8 foobar.txt | sponge foobar.txt<br />
<br />
See {{ic|man sponge}} for details.<br />
<br />
== ip ==<br />
<br />
[[Wikipedia:Iproute2|ip]] allows you to show information about network devices, IP addresses, routing tables, and other objects in the Linux [[Wikipedia:Internet Protocol|IP]] software stack. By appending various commands, you can also manipulate or configure most of these objects.<br />
<br />
{{Note|The ''ip'' utility is provided by the {{Pkg|iproute2}} package, which is included in the {{Grp|base}} group.}}<br />
<br />
{| class="wikitable"<br />
! Object !! Purpose !! Manual Page Name<br />
|-<br />
| ip addr || protocol address management || ip-address <br />
|-<br />
| ip addrlabel || protocol address label management || ip-addrlabel<br />
|-<br />
| ip l2tp || tunnel Ethernet over IP (L2TPv3) || ip-l2tp <br />
|-<br />
| ip link || network device configuration || ip-link <br />
|-<br />
| ip maddr || multicast addresses management || ip-maddress<br />
|-<br />
| ip monitor || watch for netlink messages || ip-monitor<br />
|-<br />
| ip mroute || multicast routing cache management || ip-mroute<br />
|-<br />
| ip mrule || rule in multicast routing policy db ||<br />
|-<br />
| ip neigh || neighbour/ARP tables management || ip-neighbour<br />
|-<br />
| ip netns || process network namespace management || ip-netns<br />
|-<br />
| ip ntable || neighbour table configuration || ip-ntable<br />
|-<br />
| ip route || routing table management || ip-route<br />
|-<br />
| ip rule || routing policy database management || ip-rule<br />
|-<br />
| ip tcp_metrics || management for TCP Metrics || ip-tcp_metrics<br />
|-<br />
| ip tunnel || tunnel configuration || ip-tunnel<br />
|-<br />
| ip tuntap || manage TUN/TAP devices ||<br />
|-<br />
| ip xfrm || manage IPsec policies || ip-xfrm<br />
|}<br />
<br />
The {{ic|help}} command is available for all objects. For example, typing {{ic|ip addr help}} will show you the command syntax available for the address object. For advanced usage see the [http://www.policyrouting.org/iproute2.doc.html iproute2 documentation].<br />
<br />
The [[Network configuration]] article shows how the ''ip'' command is used in practice for various common tasks.<br />
<br />
{{Note|You might be familiar with the [[Wikipedia:ifconfig|ifconfig]] command, which was used in older versions of Linux for interface configuration. It is now deprecated in Arch Linux; you should use ''ip'' instead. }}<br />
<br />
== less ==<br />
<br />
{{Style|less is a complex beast, and this section should explain some of the basic less commands - not go on a bunch of tangents like colored output}}<br />
<br />
[[Wikipedia:less (Unix)|less]] is a terminal pager program used to view the contents of a text file one screen at a time. Whilst similar to other pagers such as [[Wikipedia:more (command)|more]] and [[Wikipedia:pg (Unix)|pg]], ''less'' offers a more advanced interface and complete [http://www.greenwoodsoftware.com/less/faq.html feature-set].<br />
<br />
See [[List of applications#Terminal pagers]] for alternatives.<br />
<br />
=== Colored output through environment variables ===<br />
<br />
Add the following lines to your shell configuration file:<br />
<br />
{{hc|~/.bashrc|2=<br />
export LESS=-R<br />
export LESS_TERMCAP_mb=$'\E[1;31m'<br />
export LESS_TERMCAP_md=$'\E[1;36m'<br />
export LESS_TERMCAP_me=$'\E[0m'<br />
export LESS_TERMCAP_se=$'\E[0m'<br />
export LESS_TERMCAP_so=$'\E[01;44;33m'<br />
export LESS_TERMCAP_ue=$'\E[0m'<br />
export LESS_TERMCAP_us=$'\E[1;32m'<br />
}}<br />
<br />
Change the values ([[Wikipedia:ANSI escape code#Colors|ANSI escape code]]) as you like.<br />
<br />
{{note|The {{ic|LESS_TERMCAL_''xx''}} variables is currently undocumented in less(1), for a detailed explanation on these sequences, see this [http://unix.stackexchange.com/questions/108699/documentation-on-less-termcap-variables/108840#108840 anwser].}}<br />
<br />
=== Colored output through wrappers ===<br />
<br />
You can enable code syntax coloring in ''less''. First, [[install]] {{Pkg|source-highlight}}, then add these lines to your shell configuration file:<br />
{{hc|~/.bashrc|<nowiki><br />
export LESSOPEN="| /usr/bin/source-highlight-esc.sh %s"<br />
export LESS='-R '<br />
</nowiki>}}<br />
<br />
Frequent users of the command line interface might want to install {{Pkg|lesspipe}}.<br />
<br />
Users may now list the compressed files inside of an archive using their pager:<br />
<br />
{{hc|$ less ''compressed_file''.tar.gz|2=<br />
==> use tar_file:contained_file to view a file in the archive<br />
-rw------- ''username''/''group'' 695 2008-01-04 19:24 ''compressed_file''/''content1''<br />
-rw------- ''username''/''group'' 43 2007-11-07 11:17 ''compressed_file''/''content2''<br />
''compressed_file''.tar.gz (END)<br />
}}<br />
<br />
''lesspipe'' also grants ''less'' the ability of interfacing with files other than archives, serving as an alternative for the specific command associated for that file-type (such as viewing HTML via {{Pkg|python-html2text}}).<br />
<br />
Re-login after installing ''lesspipe'' in order to activate it, or source {{ic|/etc/profile.d/lesspipe.sh}}.<br />
<br />
=== Vim as alternative pager ===<br />
<br />
[[Vim]] (''visual editor improved'') has a script to view the content of text files, compressed files, binaries, directories. Add the following line to your shell configuration file to use it as a pager:<br />
{{hc|~/.bashrc|2=alias less='/usr/share/vim/vim74/macros/less.sh'}}<br />
<br />
There is also an alternative to ''less.sh'' macro, which may work as the {{ic|PAGER}} environment variable. Install {{Pkg|vimpager}} and add the following to your shell configuration file:<br />
{{hc|~/.bashrc|2=<br />
export PAGER='vimpager'<br />
alias less=$PAGER<br />
}}<br />
<br />
Now programs that use the {{ic|PAGER}} environment variable, like [[git]], will use ''vim'' as pager.<br />
<br />
=== Colored output when reading from stdin ===<br />
<br />
{{Note|It is recommended to add [[#Colored output through environment variables]] to your {{ic|~/.bashrc}} or {{ic|~/.zshrc}}, as the below is based on {{ic|1=export LESS=R}}}}<br />
<br />
When you run a command and pipe its [[Wikipedia:Standard output|standard output]] (''stdout'') to ''less'' for a paged view (e.g. {{ic|<nowiki>pacman -Qe | less</nowiki>}}), you may find that the output is no longer colored. This is usually because the program tries to detect if its ''stdout'' is an interactive terminal, in which case it prints colored text, and otherwise prints uncolored text. This is good behaviour when you want to redirect ''stdout'' to a file, e.g. {{ic|<nowiki>pacman -Qe > pkglst-backup.txt</nowiki>}}, but less suited when you want to view output in {{ic|less}}.<br />
<br />
Some programs provide an option to disable the interactive tty detection:<br />
<br />
# dmesg --color=always | less<br />
<br />
In case that the program does not provide any similar option, it is possible to trick the program into thinking its ''stdout'' is an interactive terminal with the following utilities:<br />
<br />
* {{App|stdoutisatty|A small program which catches the {{ic|isatty}} function call.|https://github.com/lilydjwg/stdoutisatty.|{{AUR|stdoutisatty-git}}}}<br />
:Example: {{ic|stdoutisatty ''program'' <nowiki>| less</nowiki>}}<br />
* {{App|unbuffer|A tclsh script comes with expect, it invokes desired program within a pty.|http://expect.sourceforge.net/example/unbuffer.man.html|{{Pkg|expect}}}}<br />
:Example: {{ic|unbuffer ''program'' <nowiki>| less</nowiki>}}<br />
<br />
Alternatively, using [http://zsh.sourceforge.net/Doc/Release/Zsh-Modules.html#The-zsh_002fzpty-Module zpty] module from [[zsh]]: [http://lilydjwg.is-programmer.com/2011/6/29/using-zpty-module-of-zsh.27677.html]<br />
<br />
{{hc|~/.zshrc|<br />
<nowiki>zmodload zsh/zpty<br />
<br />
pty() {<br />
zpty pty-${UID} ${1+$@}<br />
if [[ ! -t 1 ]];then<br />
setopt local_traps<br />
trap '' INT<br />
fi<br />
zpty -r pty-${UID}<br />
zpty -d pty-${UID}<br />
}<br />
<br />
ptyless() {<br />
pty $@ | less<br />
}</nowiki>}}<br />
<br />
Usage:<br />
<br />
$ ptyless ''program''<br />
<br />
To pipe it to other pager (less in this example):<br />
<br />
$ pty ''program'' | less<br />
<br />
== ls ==<br />
<br />
[[Wikipedia:ls|ls]] (''list'') is a command to list files in Unix and Unix-like operating systems.<br />
<br />
* ''ls'' can list [[File permissions and attributes#Viewing_permissions|file permissions]].<br />
<br />
* Colored output can be enabled with a simple alias. File {{ic|~/.bashrc}} should already have the following entry copied from {{ic|/etc/skel/.bashrc}}:<br />
: {{ic|1=alias ls='ls --color=auto'}}<br />
The next step will further enhance the colored ''ls'' output; for example, broken (orphan) symlinks will start showing in a red hue. Add the following to your shell configuration file:<br />
: {{ic|eval $(dircolors -b)}}<br />
<br />
== mkdir ==<br />
<br />
[[Wikipedia:mkdir|mkdir]] (''make directory'') is a command to create directories.<br />
* To create a directory and its whole hierarchy, the {{ic|-p}} switch is used, otherwise an error is printed. As users are supposed to know what they want, {{ic|-p}} switch may be used as a default:<br />
: {{bc|1=alias mkdir='mkdir -p -v'}}<br />
: The {{ic|-v}} switch make it verbose.<br />
<br />
* Changing mode of a just created directory using ''chmod'' is not necessary as the {{ic|-m}} option lets you define the access permissions.<br />
<br />
{{Tip|If you just want a temporary directory, a better alternative may be [[Wikipedia:Temporary file|mktemp]] (''make temporary''): {{ic|mktemp -p}}.}}<br />
<br />
== mv ==<br />
<br />
[[Wikipedia:mv|mv]] (''move'') is a command to move and rename files and directories.<br />
* It can be very dangerous so it is prudent to limit its scope:<br />
: {{bc|1=alias mv=' timeout 8 mv -iv'}}<br />
: This alias suspends ''mv'' after eight seconds, asks confirmation to delete three or more files, lists the operations in progress and does not store itself in the shell history file if the shell is configured to ignore space starting commands.<br />
<br />
== od ==<br />
<br />
The [[Wikipedia:od (Unix)|od]] (''o''ctal ''d''ump) command is useful for visualizing data that is not in a human-readable format, like the executable code of a program, or the contents of an unformatted device. See the [http://www.gnu.org/software/coreutils/manual/html_node/od-invocation.html#od-invocation manual] for more information.<br />
<br />
== pv ==<br />
<br />
You can use {{Pkg|pv}} (''pipe viewer'') to monitor the progress of data through a pipeline, for example:<br />
<br />
# dd if=''/source/filestream'' | pv -''monitor_options'' -s ''size_of_file'' | dd of=''/destination/filestream''<br />
<br />
In most cases {{ic|pv}} functions as a drop-in replacement for {{ic|cat}}, however there are undocumented differences. For example, under both Zsh and Bash, the following command hangs forever:<br />
<br />
# cat <(pv /usr/share/dict/words)<br />
<br />
Use of ''strace'' shows that {{ic|pv}} is stopped with {{ic|SIGTTOU}}.<br />
<br />
== rm ==<br />
<br />
[[Wikipedia:rm_(Unix)|rm]] (''remove'') is a command to delete files and directories.<br />
<br />
* It can be very dangerous, so it is prudent to limit its scope:<br />
: {{bc|1=alias rm=' timeout 3 rm -Iv --one-file-system'}}<br />
: This alias suspends ''rm'' after three seconds, asks confirmation to delete three or more files, lists the operations in progress, does not involve more than one file systems and does not store itself in the shell history file if the shell is configured to ignore space starting commands. Substitute {{ic|-I}} with {{ic|-i}} if you prefer to confirm even for one file.<br />
: Zsh users may want to put {{ic|noglob}} before {{ic|timeout}} to avoid implicit expansions.<br />
<br />
* To remove directories known to be empty, use ''rmdir'' as it fails in case of files inside the target.<br />
<br />
== sed ==<br />
<br />
[[Wikipedia:sed|sed]] (''stream editor'') is a Unix utility that parses and transforms text.<br />
<br />
Here is a handy [http://sed.sourceforge.net/sed1line.txt list] of ''sed'' one-liners examples.<br />
<br />
{{Tip|More powerful alternatives are [[Wikipedia:AWK|AWK]] and even [[Wikipedia:Perl|Perl]] language.}}<br />
<br />
== seq ==<br />
<br />
'''seq''' (''sequence'') is a utility for generating a sequence of numbers. Shell built-in alternatives are available, so it is good practice to use them as explained on [[Wikipedia:Seq (Unix)|Wikipedia]].<br />
<br />
== which ==<br />
<br />
The [[wikipedia:Which_(Unix)|which]] command is useful to determine the path to an executable, for example:<br />
<br />
# journalctl $(which sshd)<br />
<br />
== See also ==<br />
<br />
* [http://www.reddit.com/r/commandline/comments/19garq/a_sampling_of_coreutils_120/ A sampling of coreutils] [http://www.reddit.com/r/commandline/comments/19ge6v/a_sampling_of_coreutils_2040/ , part 2] [http://www.reddit.com/r/commandline/comments/19j1w3/a_sampling_of_coreutils_4060/ , part 3] - Overview of commands in coreutils<br />
* [http://www.gnu.org/software/coreutils/manual/coreutils.html GNU Coreutils Manpage]<br />
* [http://www.linuxquestions.org/questions/linux-newbie-8/learn-the-dd-command-362506/ Learn the DD command]</div>Zekesonxxhttps://wiki.archlinux.org/index.php?title=User:Zekesonxx&diff=416063User:Zekesonxx2016-01-18T14:24:33Z<p>Zekesonxx: caaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaats</p>
<hr />
<div>I program things and sometimes contribute things.<br />
<br />
https://github.com/zekesonxx<br />
<br />
Zeke's Law of AUR Packages: Given a long enough period of time, every Arch installation will eventually install {{pkg|gcc-fortran}}.<br />
<br />
=== Computer Specs ===<br />
Desktop: i5-2320, 8GB RAM, GTX 970, running Windows 7 Home Premium 64-bit with dwm.exe.<br />
<br />
Laptop: Dell Inspiron M5030, running Arch 64-bit with xfce4, off a <del>16GB flash drive</del> 80GB 5400RPM hard drive! Whoo!.<br />
<br />
=== PGP ===<br />
<br />
{{bc|<nowiki>-----BEGIN PGP SIGNED MESSAGE-----<br />
Hash: SHA512<br />
<br />
I hearby verify that I am user Zekesonxx on the Arch Linux Wiki, as of 2015-09-17.<br />
<br />
User page: https://wiki.archlinux.org/index.php/User:Zekesonxx<br />
-----BEGIN PGP SIGNATURE-----<br />
Version: GnuPG v2<br />
<br />
iQEcBAEBCgAGBQJV+2YNAAoJEIzSZXCb/eAOnxYH/2Jd35L92d1NPMssOJNNp5Af<br />
2FL4aiLAqmOR0xXwMBjn1yPQfbVY50Z+mJWrdnPiQyKDkQQ7httdKx2PqGFxWh0y<br />
1VWODlyEoWwq3yMTmSZOrDU3MUZ6K24Rp8XClqEI0y1cyodHxtnunRXjkd8u+yuY<br />
8TMZFE+pYaW8zTLWP+zqhfnbAdrQjHJMVaRn+wJKSwsFYPZP9BaQVK71An10t66e<br />
BENWYkHnfUdACy6lhb+WYr5uytlfGyvdKXY+ty/axXpUjQIMFY7U3GAdsJVEQwLh<br />
Og39UNhsaLOTMhoD8A7UDx6EvjsEVn5Qz9alpG1ZLlnK/WxgoFwgX0nN/C491qY=<br />
=9YEs<br />
-----END PGP SIGNATURE-----<br />
</nowiki>}}<br />
<br />
Personal: [https://pgp.mit.edu/pks/lookup?op=vindex&fingerprint=on&search=0x79B1898A53A871BF4D202E778CD265709BFDE00E 79B1 898A 53A8 71BF 4D20 2E77 8CD2 6570 9BFD E00E] ([https://keybase.io/zekesonxx keybase.io])<br/><br />
Package: [https://pgp.mit.edu/pks/lookup?op=vindex&fingerprint=on&search=0xC1AE1A2666B42BFD91AB26819C7F3483D6B6F0E0 C1AE 1A26 66B4 2BFD 91AB 2681 9C7F 3483 D6B6 F0E0]<br />
<br />
The signature above is meant as a replacement for using a [[Wikipedia:Wikipedia:Wikipedia Signpost/2007-05-14/Committed identity|committed identity hash]], as well as proof that I am who I say I am.</div>Zekesonxxhttps://wiki.archlinux.org/index.php?title=Steam/Game-specific_troubleshooting&diff=414361Steam/Game-specific troubleshooting2016-01-04T05:14:14Z<p>Zekesonxx: /* Defender's Quest: Valley of the Forgotten */ accepetededered</p>
<hr />
<div>[[Category:Gaming]]<br />
[[ja:Steam/ゲーム別のトラブルシューティング]]<br />
{{Poor writing|Lots of content duplication, highly dubious "solutions"}}<br />
{{Note|[[Steam]] installs library dependencies of a game to a library directory, but some are missing at the moment. Report bugs involving missing libraries on Valve's bug tracker on their [https://github.com/ValveSoftware/steam-for-linux GitHub page] before adding workarounds here, and then provide a link to the bug so it can be removed as the problems are fixed.}}<br />
{{Tip|If a game fails to start, a possible reason is that it is missing required libraries. You can find out what libraries it requests by running {{ic|ldd ''game_executable''}}. {{ic|''game_executable''}} is likely located somewhere in {{ic|~/.steam/root/SteamApps/common/}}. Please note that most of these "missing" libraries are actually already included with Steam, and do not need to be installed globally.}}<br />
<br />
==Air Brawl==<br />
===Dependencies===<br />
* {{pkg|gnu-free-fonts}}<br />
<br />
===Menus are missing text/blacked out===<br />
Air Brawl seems to require some fonts that are missing, installing the package {{pkg|gnu-free-fonts}} may fix it.<br />
<br />
==Amnesia: The Dark Descent==<br />
===Dependencies===<br />
* {{AUR|lib32-freealut}}<br />
* {{pkg|lib32-glu}}<br />
* {{pkg|lib32-libxmu}}<br />
* {{pkg|lib32-sdl_ttf}}<br />
<br />
==And Yet It Moves==<br />
===Dependencies===<br />
* {{AUR|lib32-libtheora}}<br />
* {{AUR|lib32-libjpeg6}}{{Broken package link|{{aur-mirror|lib32-libjpeg6}}}}<br />
* {{AUR|lib32-libtiff4}}<br />
* {{AUR|lib32-libpng12}}<br />
<br />
===Compatibility===<br />
Game refuses to launch and one of the following messages can be observed on console<br />
readlink: extra operand ‘Yet’<br />
Try 'readlink --help' for more information.<br />
OR<br />
This script must be run as a user with write priviledges to game directory<br />
To fix this, use:<br />
{{hc|~/.steam/root/SteamApps/common/And Yet It Moves/AndYetItMovesSteam.sh|<nowiki><br />
#ayim_dir="$(dirname "$(readlink -f ${BASH_SOURCE[0]})")"<br />
ayim_dir="$(dirname "$(readlink -f "${BASH_SOURCE[0]}")")"<br />
</nowiki>}}<br />
<br />
==Anodyne==<br />
===Dependencies===<br />
* {{AUR|adobe-air-sdk}}<br />
* {{pkg|xterm}} (probably not actually required)<br />
<br />
===Compatibility===<br />
Follow the same steps as [[#Defender.27s_Quest:_Valley_of_the_Forgotten|Defender's Quest]]<br />
<br />
==Aquaria==<br />
<br />
=== Mouse pointer gets stuck in one direction ===<br />
If the mouse pointer gets stuck in any one direction, the game becomes unplayable. You may try:<br />
{{hc|~/.local/share/Steam/SteamApps/common/Aquaria/usersettings.xml|<nowiki><br />
#<JoystickEnabled on=”1″ /><br />
<JoystickEnabled on=”0″ /></nowiki>}}<br />
<br />
If that does not fix the issue, unplug any joystick or joystick adapter devices you may have plugged in.<br />
<br />
==Binding of Isaac: Rebirth==<br />
===Troubleshooting===<br />
====No sound====<br />
Right click on {{ic|Binding of Isaac: Rebirth}} on your game list, click on {{ic|Properties}}, click on {{ic|SET LAUNCH OPTIONS}}, then add this: <br />
LD_LIBRARY_PATH="/usr/lib:$LD_LIBRARY_PATH" %command%<br />
<br />
In the game, go to the options and set all audio to the proper volume.<br />
<br />
==Borderlands 2==<br />
<br />
===Syncing save games===<br />
<br />
Steam Cloud syncing does not (intentionally) work between platforms. With that said gave save files can be manually moved between systems. Save locations can be found here: http://pcgamingwiki.com/wiki/Borderlands_2#Game_data. Once backed up to a FAT32 or other cross-compatible file-system thumbdrive (or the cloud), move the saved files to your GNU/Linux system, locate your saved file location, and move into the 17-digit long numeric file name. If previous saves on your GNU/Linux system can be deleted you can do so now. The key fix that I found was a need to change the ownership, group, and permissions. I used {{ic|chown steam:steam *}} and then {{ic|chmod 0660 *}} to get my moved saved files to work.<br />
<br />
===Using Ctrl Key===<br />
Borderlands 2 does not allow the Ctrl key to be used by default. The game seems to be accessing keycodes and not keysyms, therefore xmodmap has no affect. A workaround is using ''setkeycodes'' to map the Ctrl-scancode to some other key, as described in [[Map scancodes to keycodes#Using setkeycodes]]. I use {{ic|setkeycodes 0x1d 56}} (as root) to map Ctrl to Alt before starting the game and {{ic|setkeycodes 0x1d 29}} to restore the default.<br />
<br />
===Logging into SHiFT===<br />
The Linux version of Borderlands 2 expects to be run on Ubuntu, as that is the "officially" supported distro for Steam. As a result of this, when attempting to log in to SHiFT, it will fail, claiming the server is not available. Using strace, it can be seen that it fails to connect to the server because it cannot load SSL certificates from /usr/lib/ssl, which is the Ubuntu filesystem spec. Arch uses /etc/ssl. This can be fixed by symlinking /etc/ssl to /usr/lib/ssl, like so: <br />
# ln -s /etc/ssl /usr/lib/ssl<br />
You will now be able to log into SHiFT to redeem SHiFT codes.<br />
<br />
==Borderlands the Pre-Sequel==<br />
Borderlands the Pre-Sequle (and maybe Borderlands 2) might not be able to connect to the Gearbox SHIFT-service, this is related to a wrong path to the available SSL certificates. This can be solved by creating a symbolic link from {{ic|/etc/ssl}} to {{ic|/usr/lib/ssl}}. See [http://steamcommunity.com/app/49520/discussions/0/616189742722687689/#c616189742811551908 this comment on the steam dissuscion forum].<br />
<br />
==Cities in Motion 2==<br />
<br />
=== Dialog boxes fail to display properly ===<br />
<br />
You will not be able to read or see anything, and you will have this in your logs:<br />
Fontconfig error: "/etc/fonts/conf.d/10-scale-bitmap-fonts.conf", line 69: non-double matrix element<br />
Fontconfig error: "/etc/fonts/conf.d/10-scale-bitmap-fonts.conf", line 69: wrong number of matrix elements<br />
<br />
Workaround for the bug {{Bug|35039}} is available [http://bpaste.net/show/167019/ here] (replace {{ic|/etc/fonts/conf.d/10-scale-bitmap-fonts.conf}}).<br />
<br />
==Cities Skylines==<br />
<br />
===Textures not rendering properly===<br />
<br />
In Steam client set launch properties for game:<br />
<br />
UNITY_DISABLE_GRAPHICS_DRIVER_WORKAROUNDS=yes %command%<br />
<br />
== Civilization V==<br />
<br />
=== Stuttering sound with PulseAudio ===<br />
<br />
See [[PulseAudio/Troubleshooting#Laggy sound]].<br />
<br />
== Counter-Strike: Global Offensive (CS:GO) ==<br />
<br />
=== Game runs on the wrong screen ===<br />
<br />
[https://github.com/ValveSoftware/Counter-Strike-Global-Offensive/issues/60 GitHub Counter-Strike: Global Offensive issue #60]<br />
<br />
If it happens, you can fix it by going into fullscreen windowed or windowed mode and then dragging the game onto the correct monitor. After you go back in fullscreen, the game should be on the correct monitor.<br />
<br />
=== Audio is not synced ===<br />
<br />
[https://github.com/ValveSoftware/Counter-Strike-Global-Offensive/issues/45 GitHub Counter-Strike: Global Offensive issue #45]<br />
<br />
See [[PulseAudio/Troubleshooting#Laggy sound]] for a possible solution.<br />
<br />
=== Unable to aim when in game ===<br />
<br />
Unable to aim when in game. However, the mouse cursor does works in GUI such as main menu, game menu, etc.<br />
Add this line to your {{ic|.bash_profile}} and relogin:<br />
<br />
export SDL_VIDEO_X11_DGAMOUSE=0<br />
<br />
See also [https://bbs.archlinux.org/viewtopic.php?id=184905].<br />
<br />
=== Mouse Deadzone ===<br />
Small mouse movements (less than under 5 pixels per second) does not register on X or an OpenGL games. <br />
<br />
Solution[https://bbs.archlinux.org/viewtopic.php?pid=1519944#p1519944]:<br />
<br />
sudo pacman -R x86-input-libinput libinput<br />
<br />
=== Low Performance on AMD card using Catalyst proprietary driver ( <= 15.7 ) ===<br />
Solution[http://www.phoronix.com/scan.php?page=article&item=amd-csgo-workaround&num=1]:<br />
<br />
cd ~/.steam/steam/steamapps/common/Counter-Strike\ Global\ Offensive<br />
mv csgo_linux hl2_linux<br />
<br />
Now edit csgo.sh<br />
<br />
nano csgo.sh<br />
<br />
and change<br />
<br />
GAMEEXE=csgo_linux<br />
<br />
to <br />
<br />
GAMEEXE=hl2_linux<br />
<br />
=== Brightness slider not working ===<br />
<br />
First, find out your current display output name (connected one):<br />
<br />
xrandr | grep -v disconnected | grep connected<br />
<br />
In my case, it's<br />
<br />
'''DFP9''' connected<br />
<br />
Edit csgo.sh<br />
<br />
nano ~/.steam/steam/steamapps/common/Counter-Strike\ Global\ Offensive/csgo.sh<br />
<br />
and add the following lines (change the OUTPUT_NAME to one you found with xrandr)<br />
<br />
'''# gamma correction'''<br />
'''xrandr --output <OUTPUT_NAME> --gamma 1.6:1.6:1.6 # play with values if required'''<br />
STATUS=42<br />
while [ $STATUS -eq 42 ]; do<br />
...<br />
done<br />
'''# restore gamma'''<br />
'''xrandr --output <OUTPUT_NAME> --gamma 1:1:1'''<br />
exit $STATUS<br />
<br />
==Crusader Kings II==<br />
Game is installed into {{ic|$HOME/Steam/SteamApps/common/Crusader Kings II}}.<br />
Game can be started directly, without need of running Steam on background, using command {{ic|$HOME/Steam/SteamApps/common/Crusader Kings II/ck2}}.<br />
<br />
Saves are stored in {{ic|$HOME/Documents/Paradox Interactive/Crusader Kings II/save games/}}.<br />
In the newest version (2.03), save-game files seem to be stored to {{ic|$HOME/.paradoxinteractive/Crusader Kings II/}}. If your documents folder is empty, try looking there.<br />
<br />
===Troubleshooting===<br />
====No audio====<br />
The default audio driver used by Crusader Kings 2 is for [[PulseAudio]], so an override is necessary:<br />
<br />
{{hc|~/.pam_environment|2=SDL_AUDIODRIVER=alsa}}<br />
====Odd Sized Starting Window====<br />
Enable full screen mode as the default. In {{ic|~/.paradoxinteractive/Crusader Kings II/settings.txt}} change fullscreen=no to fullscreen=yes.<br />
<br />
==Defender's Quest: Valley of the Forgotten==<br />
===Dependencies===<br />
* {{AUR|adobe-air-sdk}}<br />
* {{pkg|xterm}}<br />
* {{pkg|lib32-libcanberra}}<br />
<br />
===Troubleshooting===<br />
====Game does not start====<br />
* Package {{AUR|adobe-air-sdk}} installs Adobe Air not in the place where the game expects it to be, fix this by creating a symlink (requires root permissions):<br />
{{bc|$ ln -s /opt/adobe-air-sdk/runtimes/air/linux/Adobe\ AIR /opt/Adobe\ AIR}}<br />
<br />
* Adobe AIR will want to check whether the EULA was accepted and fail in doing so. To fix it, issue the following commands (from under your user, not under root):<br />
{{bc|$ mkdir -p ~/.appdata/Adobe/AIR<br />
$ echo 2 > ~/.appdata/Adobe/AIR/eulaAccepted}}<br />
{{Note|By issuing these commands you're accepting Adobe Air's EULA.}}<br />
<br />
==Don't Starve==<br />
===Dependencies (x86_64)===<br />
* {{pkg|lib32-flashplugin}}<br />
* {{pkg|lib32-alsa-plugins}} (Looks like it fixes sound in some cases. See [https://github.com/ValveSoftware/steam-for-linux/issues/2968 this github issue] for details)<br />
* {{AUR|lib32-libcurl-compat}} (Requires further commands after installation as described [http://steamcommunity.com/app/219740/discussions/2/620700960796078576/#c611704730329482542 here])<br />
<br />
===Troubleshooting===<br />
====No sound====<br />
Right click on Don't Starve on your game list, click on Properties, click on SET LAUNCH OPTIONS, then add this: <br />
LD_LIBRARY_PATH="/usr/lib:$LD_LIBRARY_PATH" %command%<br />
<br />
On the game, go to the option and set all audio to the proper volume.<br />
<br />
==Dota 2==<br />
===Dependencies (x86_64)===<br />
* {{pkg|lib32-openal}}<br />
* {{pkg|lib32-libpulse}} (if you use PulseAudio)<br />
* {{pkg|lib32-fontconfig}}<br />
<br />
===Dependencies (Dota 2 reborn)===<br />
* {{AUR|libudev0}} or {{AUR|libudev.so.0}}<br />
<br />
===Troubleshooting===<br />
====In-game font is unreadable====<br />
Start Steam (or Dota 2) with the environment variable:<br />
MESA_GL_VERSION_OVERRIDE=2.1<br />
<br />
====Everything seems OK but the game doesn't start====<br />
If you run the game from the terminal and, although no error is shown, try '''disabling''': ''Steam > Settings > In-Game > Enable Steam Community In-Game''.<br />
Apparently the game [[#The Book of Unwritten Tales|The Book of Unwritten Tales]] has the same problem. It also describes a workaround that is untested in Dota 2.<br />
<br />
====Game runs on the wrong screen====<br />
:[https://github.com/ValveSoftware/Dota-2/issues/11 GitHub Dota 2 issue #11]<br />
<br />
==== Game does not start with libxcb-dri3 error message ====<br />
After a recent Mesa update, Dota 2 stopped working. The error message is:<br />
SDL_GL_LoadLibrary(NULL) failed: Failed loading libGL.so.1: /usr/lib32/libxcb-dri3.so.0: undefined symbol: xcb_send_fd<br />
Simply remove the bundled libxcb to force Steam to use the system-wide version. Restart Steam to apply.<br />
$ find ~/.local/share/Steam -name 'libxcb*' -type f | grep -v installed | xargs rm<br />
:[https://github.com/ValveSoftware/steam-for-linux/issues/3204 GitHub Steam issue #3204]<br />
<br />
==== Steam overlay ====<br />
Steam distributes a copy of libxcb which is incompatible with the latest xorg libxcb. If you're having issues with steam overlay and on recent xorg try removing the bundled lib.<br />
mv ~/.local/share/Steam/ubuntu12_32/steam-runtime/i386/usr/lib/i386-linux-gnu/libxcb.so.1 /tmp/libxcb.so.1.bak<br />
See more information here:<br />
:[https://github.com/ValveSoftware/steam-for-linux/issues/3199]<br />
:[https://github.com/ValveSoftware/steam-for-linux/issues/3093]<br />
<br />
====Chinese Tips and player's name display problem====<br />
The Chinese characters in the Tips and player's name display block character.<br />
<br />
The problem caused by some fonts package. It is known that the 'ttf-dejave', 'ttf-liberation' and 'ttf-ms-fonts' will cause the prolem, and the 'wqy-*', 'ttf-ubuntu-font-family', 'ttf-arphic-uming', 'ttf-linux-libertine' are safe. The other fonts family are not checked.<br />
:[https://github.com/ValveSoftware/Dota-2/issues/1688 GitHub Steam issue #1688]<br />
<br />
====Chinese input method problem====<br />
Dota2 is not compatible with CJK IME(Input Method Editor/Enhancer), such as Ibus and Fcitx.<br />
Chinese characters can't be typed in Dota2.[https://github.com/ValveSoftware/Dota-2/issues/493 GitHub Steam issue 493]<br />
<br />
The possible solution<br />
<br />
Compile the `libSDL` with fcitx or ibus support, then replace `Game Folder/dota 2 beta/bin/libSDL2-2.0.so.0` with your version.<br />
:[http://forum.ubuntu.org.cn/viewtopic.php?f=34&t=460195 LibSDL+Ibus]<br />
:[http://forum.ubuntu.org.cn/viewtopic.php?f=34&t=466879&sid=1664abac47d8f639ed9b7f3abf94c675 LibSDL+Fcitx]<br />
:[https://github.com/timxx/SDL-fcitx LibSDL+Fcitx Source]<br />
:[https://github.com/ValveSoftware/Dota-2/issues/1650 The solutions issues]<br />
<br />
==Dwarfs F2P==<br />
===Dependencies===<br />
* {{AUR|lib32-libgdiplus}}{{Broken package link|{{aur-mirror|lib32-libgdiplus}}}}<br />
<br />
===Troubleshooting===<br />
====Game does not start====<br />
There was a bug that stopped Steam from fetching all the needed files. It should be resolved, if you still bump into this problem, try verifying integrity of game cache from game properties, local files tab.<br />
<br />
If the game still crashes at startup, edit {{ic|~/.local/share/Steam/SteamApps/common/Dwarfs - F2P/Run.sh}} and change<br />
export LD_LIBRARY_PATH=.:${LD_LIBRARY_PATH}<br />
to<br />
export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:.<br />
{{Note|This file may be overwritten by updates or by verifying integrity of game cache. You may need to modify it again.}}<br />
<br />
If these do not help, you may have outdated libraries in the game installation folder that are crashing the game on startup. Try moving/removing the following files out of {{ic|~/.local/share/Steam/SteamApps/common/Dwarfs - F2P/}} to fix it:<br />
<br />
libX11.so.6, libsteam.so libtier0_s.so, libvstdlib_s.so, steamclient.so<br />
<br />
====Game crashes====<br />
In some cases, the game crashes about 2 minutes before the end of every arcade. This bug has been reported, but there's no known solution to it.<br />
<br />
==Dynamite Jack==<br />
===Dependencies===<br />
* {{pkg|lib32-sdl}}<br />
<br />
===Troubleshooting===<br />
====Sound Issues====<br />
When running on 64-bit Arch Linux, there may be "pops and hisses" when running Dynamite Jack. This could be caused by not having {{ic|1=STEAM_RUNTIME=0}} set. (However, even with {{ic|1=STEAM_RUNTIME=0}} set, the game may still sometimes start with this issue. Exiting and restarting the game seems to make the problem go away.)<br />
<br />
====Game does not start====<br />
If running steam with the {{ic|1=STEAM_RUNTIME=0}}, Dynamite Jack may have a problem starting. Check the steam error messages for this message:<br />
/home/<USER>/.local/share/Steam/SteamApps/common/Dynamite Jack/bin/main: error while loading shared libraries: libSDL-1.2.so.0: cannot open shared object file: No such file or directory<br />
Install {{pkg|lib32-sdl}} from [[multilib]] and Dynamite Jack should start up.<br />
<br />
==Football Manager 2014==<br />
This game will not run when installed on an XFS or reiserfs filesystem. Workaround is to install on an ext4 filesystem.<br />
<br />
==FORCED==<br />
This game has 32-bit and 64-bit binaries. For unknown reason, steam will launch the 32-bit binary even on 64-bit Arch Linux.<br />
When manually launching the 64-bit binary, the game starts, but cannot connect to Steam account, so you cannot play.<br />
So install 32-bits dependencies, and launch the game from Steam.<br />
<br />
===Dependencies===<br />
* {{pkg|lib32-alsa-plugins}}<br />
* {{pkg|lib32-glu}}<br />
<br />
==FTL: Faster than Light==<br />
===Dependencies===<br />
Libraries are downloaded and and placed in the game's data directory for both architectures. As long as you run FTL by the launcher script (or via the shortcut in Steam) you should not need to download any further libraries.<br />
<br />
===Compatibility===<br />
After installation, FTL may fail to run due to a 'Text file busy' error (characterised in Steam by your portrait border going green then blue again). The easiest way to mend this is to just reboot your system. Upon logging back in FTL should run.<br />
<br />
The Steam overlay in FTL does not function as it is not a 3D accelerated game. Because of this the desktop notifications will be visible. If playing in fullscreen, therefore, these notifications in some systems may steal focus and revert you back to windowed mode with no way of going back to fullscreen without relaunching. The binaries for FTL on Steam have no DRM and it is possible to run the game ''without'' Steam running, so in some cases that may be optimum - just ensure that you launch FTL via the launcher script in {{ic|~/.steam/root/SteamApps/common/FTL Faster than Light/data/}} rather than the FTL binary in the $arch directory.<br />
<br />
===Problems with open-source video driver===<br />
FTL may fail to run if you are using an opensource driver for your video card. There are two solutions: install a proprietary video driver or delete (rename if you are unsure) the library "libstdc++.so.6" inside {{ic|~/.steam/root/SteamApps/common/FTL\ Faster\ Than\ Light/data/amd64/lib}}. This is if you are using a 64bit system. In case you are using a 32bit system you have to remove (rename) the same library located into {{ic|~/.steam/root/SteamApps/common/FTL\ Faster\ Than\ Light/data/x86/lib}}.<br />
<br />
==Game Dev Tycoon==<br />
===Troubleshooting===<br />
====Game does not start====<br />
Error about missing libudev.so.0 might appear, solution:<br />
# ln -s /lib/libudev.so /lib/libudev.so.0<br />
<br />
==Garry's Mod==<br />
===Troubleshooting===<br />
====Game does not start====<br />
Error about missing client.so might appear, solution:<br />
cd SteamLibrary/SteamApps/common/GarrysMod/bin/<br />
ln -s libawesomium-1-7.so.0 libawesomium-1-7.so.2<br />
ln -s ../garrysmod/bin/client.so ./<br />
====Opening some menus causes the game to crash====<br />
Most menus work fine, but ones with checkboxes (LAN multiplayer, mounted games list) do not work at all. This is a bug in the menu code.<br />
<br />
If you prefer the default menu style and do not mind a hacky solution: [https://github.com/Facepunch/garrysmod-issues/issues/86#issuecomment-30935491 Simon311] has written code with instructions to fix it.<br />
<br />
If you do not care for the default menu style and want a more stable but feature-incomplete solution, Facepunch developer [https://github.com/robotboy655/gmod-lua-menu robotboy655] has written a new menu.<br />
<br />
===Game crashes after attempting to join server===<br />
While in the process of joining a server, downloading resources, etc, the game seems to hang and after a while, perhaps during the "sending client info" portion the game crashes, usually without any error messages. Error does not give much information, however, the process for Garry's mod is killed.<br />
<br />
This issue arises more often when joining servers with many addons like DarkRP servers specifically.<br />
<br />
The Problem seems to correlate with a weak GPU and the game is timing out from the server, so if the GPU is the problem, lowering the graphics settings to minimum fixes the problem until you can upgrade ;).<br />
<br />
==Hacker Evolution [Untold, Duality]==<br />
===Dependencies===<br />
* {{AUR|lib32-sdl2_mixer}}<br />
<br />
==Half-Life 2 & episodes==<br />
===Cyrillic fonts problem===<br />
This problem can be solved by deleting "Helvetica" font.<br />
<br />
==Hammerwatch==<br />
===Troubleshooting===<br />
====The game not starting from Steam GUI====<br />
Right click on Hammerwatch on your game list, click on Properties, click on SET LAUNCH OPTIONS, then add this: <br />
LD_LIBRARY_PATH="/usr/lib:$LD_LIBRARY_PATH" %command%<br />
====No sound====<br />
Hammerwatch opens with a popup: "Sound Error" -- "Could not initialize OpenAL, no sounds will be played. Try updating your OpenAL drivers."<br />
<br />
OpenAL, which Hammerwatch uses, defaults to PulseAudio. To change that, add the following line to {{ic|/etc/openal/alsoft.conf}}:<br />
<br />
drivers=alsa,pulse<br />
<br />
This way, Hammerwatch will use ALSA. This solution was found [https://stackoverflow.com/questions/9547396/what-does-al-lib-pulseaudio-c612-context-did-not-connect-access-denied-me here].<br />
<br />
==Harvest: Massive Encounter==<br />
===Dependencies===<br />
* {{pkg|lib32-gtk2}}<br />
* {{pkg|lib32-libvorbis}}<br />
* {{pkg|lib32-openal}}<br />
* {{Pkg|lib32-nvidia-cg-toolkit}}<br />
* {{AUR|lib32-libjpeg6}}{{Broken package link|{{aur-mirror|lib32-libjpeg6}}}}<br />
* {{AUR|lib32-sfml}}<br />
<br />
===Compatibility===<br />
Game refuses to launch and throws you to library installer loop. Just edit {{ic| ~/.steam/root/SteamApps/common/Harvest Massive Encounter/run_harvest}} and remove everything but<br />
#!/bin/bash<br />
exec ./Harvest<br />
<br />
==Hatoful Boyfriend==<br />
===Japanese text invisible===<br />
Install {{pkg|wqy-microhei}} and {{pkg|wqy-microhei-lite}}.<br />
<br />
==The inner world==<br />
===Bringing up the inventory or main menu===<br />
Hold the <tab> key.<br />
<br />
===Dependencies===<br />
<br />
====Sound support====<br />
Install [https://aur.archlinux.org/packages/java-commons-codec java-commons-codec] from the [[AUR]] to get sound support.<br />
<br />
====Cutscenes====<br />
The game has cutscenes. It starts directly with a cutscene before you start the actual game in the backyard. To see these cutscenes you need to use Oracle's Java instead of the openjdk.<br />
<br />
Install [https://aur.archlinux.org/packages/jre/ jre] from the [[AUR]] and run<br />
<br />
archlinux-java set java-8-jre/jre<br />
<br />
as root. Furthermore you need the package ffmpeg-compat. Currently this package is in the community repository.<br />
<br />
There seem to be problems with Steam Overlay. Try to run the game directly with ~/Steam/SteamApps/common/TheInnerWorld/TIW_start.sh<br />
<br />
<br />
Note that cutscenes open in a new window. So pay attention to that and switch to the new window to enjoy the movies.<br />
<br />
<br />
See the [http://steamcommunity.com/app/251430/discussions/0/611701360817206606/#c611701360827509770 Steam Forums] for details.<br />
<br />
==Invisible Apartment==<br />
===Dependencies===<br />
* {{pkg|qt5-multimedia}}<br />
<br />
===Game does not run===<br />
Game does not run if you try to launch it via Steam, but you can run it directly if you run the following in terminal<br />
/home/<username>/.steam/steam/SteamApps/common/Invisible\ Apartment/ia1<br />
where for <username> you put your Linux username.<br />
<br />
==Joe Danger 2: The Movie==<br />
===Dependencies===<br />
* {{pkg|lib32-libpulse}}<br />
* {{pkg|lib32-alsa-plugins}}<br />
<br />
===Compatibility===<br />
Game only worked after obtaining from the [https://www.humblebundle.com/ Humble Bundle] directly and {{pkg|lib32-libpulse}} was installed.<br />
<br />
==[[Kerbal Space Program]]==<br />
===Troubleshooting===<br />
=== Game never progresses past initial loading ===<br />
To fix this, set:<br />
LC_ALL=C<br />
<br />
=== No text display ===<br />
The game requires Arial and Arial Black fonts, provided by the {{AUR|ttf-ms-fonts}} package.<br />
<br />
Another alternative is to try to install the {{Pkg|ttf-freefont}} package. This worked using KSP 0.90.0 on x86_64 Arch Linux.<br />
<br />
=== Graphics flickering when using primusrun ===<br />
Run with PRIMUS_SYNC=2 (but you will get reduced frame rate this way)<br />
<br />
=== Game crashes when accessing settings or saves on 64 bit systems on Steam ===<br />
In the properties for Kerbal Space program, set a launch option of:<br />
LC_ALL=C %command%_64<br />
<br />
=== Locale settings ===<br />
See https://bugs.kerbalspaceprogram.com/issues/504 if you have troubles with building Ships.<br />
<br />
=== No audio on 64-bit systems ===<br />
<br />
Run the 64-bit executable.<br />
<br />
Steam launches the KSP.x86 executable vs. the KSP.x86_64 executable. <br />
Navigate to:<br />
/home/$USER/.local/share/Steam/SteamApps/common/Kerbal\ Space\ Program/ <br />
Launch with:<br />
./KSP.x86_64<br />
<br />
Or you can simply right click on "Kerbal Space Program" in your game list, click ''Properties'', click ''SET LAUNCH OPTIONS'', then add this: <br />
LD_LIBRARY_PATH="/usr/lib:$LD_LIBRARY_PATH" LC_ALL=C %command%_64<br />
<br />
=== Black ingame textures ===<br />
<br />
Disable "Edge Highlighting (PPFX)" in graphics settings ingame.<br />
<br />
=== See also ===<br />
* [[Kerbal Space Program]]<br />
* http://forum.kerbalspaceprogram.com/showthread.php/24529-The-Linux-compatibility-thread!<br />
<br />
==Killing Floor==<br />
===Troubleshooting===<br />
====Screen resolution====<br />
Killing Floor runs pretty much from scratch, although you might have to change in-game resolution screen as the default one is '''800x600''' and a '''4:3''' screen format.<br />
If you try to modify screen resolution in-game, it might crash your desktop enviroment.<br />
To fix this, please set the desired resolution screen size by modifing your {{ic|~/.killingfloor/System/KillingFloor.ini}} with your prefered editor.<br />
{{hc|~/.killingfloor/System/KillingFloor.ini|<nowiki><br />
...<br />
<br />
[WinDrv.WindowsClient]<br />
WindowedViewportX=????<br />
WindowedViewportY=????<br />
FullscreenViewportX=????<br />
FullscreenViewportY=????<br />
MenuViewportX=???<br />
MenuViewportY=???<br />
<br />
...<br />
<br />
[SDLDrv.SDLClient]<br />
WindowedViewportX=????<br />
WindowedViewportY=????<br />
FullscreenViewportX=????<br />
FullscreenViewportY=????<br />
MenuViewportX=????<br />
MenuViewportY=????<br />
<br />
...<br />
</nowiki>}}<br />
{{Note|Replace all the {{ic|????}} with the corresponding numbers according the desired resolution. If you have an 1366x768 screen and want to use it at it's fullest, change all the Viewport fields to something like {{ic|ViewportX&#61;1366}} and {{ic|ViewportY&#61;768}} in the corresponding areas.}}<br />
{{Note| The dots in the middle indicate that there are more fields in that .ini file. But for screen resolution troubleshooting, you do not need to modify anything else.}}<br />
<br />
Save the file and restart the game, it should work now.<br />
<br />
====Windowed mode====<br />
Uncheck fullscreen in the options menu, and use {{ic|Ctrl+g}} to stop mouse capturing (that was non-obvious to discover..). This way you can easily minimize it and do other other things..and let your WM handle things.<br />
<br />
====Stuttering Sound====<br />
KillingFloor comes with its own libopenal.so (called openal.so). To use system lib instead install {{pkg|openal}} or {{pkg|lib32-openal }} (if using 64bit system).<br />
Then go to {{ic|$HOME/Steam/SteamApps/common/KillingFloor/System}}. and rename openal.so to openal.so.bak<br />
Then create symlink to /usr/lib32/libopenal.so.1 or /usr/lib/libopenal.so.1 called openal.so<br />
<br />
==Lethal League==<br />
===Dependencies===<br />
* {{AUR|lib32-glew1.10}}<br />
<br />
==Metro: Last Light==<br />
This game is not allowing to change its resolution on a multimonitor setup on GNOME with Catalyst drivers. <br />
===Attempted fixes===<br />
Various changes to the games config file was tried without success.<br />
{{ic|wmctrl}} was not able to force the games resolution.<br />
<br />
===Hacky solution===<br />
Disabled the side monitors.<br />
<br />
===Possible solutions===<br />
Jason over at [http://unencumberedbyfacts.com/2013/11/20/multiple-monitor-gaming-on-linux/ unencumbered by fact] is using Nvidia drivers on his multimonitor setup. However he notes he is using a single display server setup. This is being explored.<br />
<br />
==Mark of the Ninja==<br />
===Troubleshooting===<br />
====Bad sound====<br />
Right click on {{ic|Mark of the Ninja}} on your game list, click on {{ic|Properties}}, click on {{ic|SET LAUNCH OPTIONS}}, then add this: <br />
LD_LIBRARY_PATH="/usr/lib:$LD_LIBRARY_PATH" %command%<br />
<br />
==Multiwinia==<br />
===Dependencies===<br />
* {{pkg|lib32-openal}}<br />
<br />
==Natural Selection 2==<br />
Game mostly works out of the box.<br />
===No Sound===<br />
If there is no sound in-game. Try installing {{pkg|lib32-sdl}}, {{AUR|lib32-sdl2}}, and {{pkg|lib32-alsa-plugins}}<br />
<br />
If this fails, try setting the game's launch options in Steam to:<br />
LD_LIBRARY_PATH="/usr/lib32:$LD_LIBRARY_PATH" %command%<br />
<br />
==Penumbra: Overture==<br />
===Dependencies===<br />
(Taken from {{AUR|penumbra-collection}}{{Broken package link|{{aur-mirror|penumbra-collection}}}} and {{AUR|penumbra-overture-ep1-demo}}{{Broken package link|{{aur-mirror|penumbra-overture-ep1-demo}}}})<br />
* {{pkg|lib32-glu}}<br />
* {{pkg|lib32-libxft}}<br />
* {{pkg|lib32-libvorbis}}<br />
* {{pkg|lib32-openal}}<br />
* {{pkg|lib32-sdl_ttf}}<br />
* {{pkg|lib32-sdl_image}}<br />
<br />
===Troubleshooting===<br />
====Windowed mode====<br />
There is no in-game option to change to the windowed mode, you will have to edit {{ic|~/.frictionalgames/Penumbra/Overture/settings.cfg}} to activate it.<br />
Find {{ic|FullScreen&#61;"true"}} and change it to {{ic|FullScreen&#61;"false"}}, after this the game should start in windowed mode.<br />
<br />
==Portal 2==<br />
===Troubleshooting===<br />
====Game does not start====<br />
Several OpenGL-related errors (such as {{ic|PROBLEM: You appear to have OpenGL 1.4.0, but we need at least 2.0.0!}} or {{ic|libGL error: driver pointer missing}}) are caused by Portal&nbsp;2 bundling an old libstdc++ file. This error is especially common with open source Radeon drivers ({{ic|radeonsi}}).<br />
<br />
<br />
To remedy this, make Portal&nbsp;2 use the system-wide file by setting the launch options to {{ic|1=LD_PRELOAD='/usr/$LIB/libstdc++.so.6' %command%}}.<br />
<br />
More details and background info available [https://wirejungle.wordpress.com/2015/01/09/how-to-fix-broken-steam-linux-client-with-radeon-graphics-driver-workaround/ here.]<br />
<br />
==Prison Architect==<br />
===Troubleshooting===<br />
====ALSA error when using PulseAudio====<br />
The error:<br />
{{ic|ALSA lib pcm_dmix.c:1018:(snd_pcm_dmix_open) unable to open slave}}<br />
was resolved by installing:<br />
* {{pkg|pulseaudio-alsa}} <br />
* {{pkg|lib32-alsa-plugins}}<br />
* {{pkg|lib32-libpulse}}<br />
per [[PulseAudio#ALSA]]<br />
<br />
==Project Zomboid==<br />
===Dependencies===<br />
* {{pkg|jre7-openjdk}}<br />
<br />
==Redshirt==<br />
===Dependencies (x86_64)===<br />
* {{pkg|lib32-libpulse}} (if you use PulseAudio)<br />
<br />
==Revenge of the Titans==<br />
===Dependencies===<br />
* {{pkg|libxtst}} and {{pkg|lib32-libxtst}}<br />
<br />
==Rock Boshers DX: Directors Cut==<br />
===Dependencies===<br />
* {{AUR|lib32-libcaca}}<br />
<br />
==Serious Sam 3: BFE==<br />
===Dependencies===<br />
* {{pkg|lib32-alsa-plugins}}<br />
<br />
===Troubleshooting===<br />
====No audio====<br />
Try running:<br />
# mkdir -p /usr/lib/i386-linux-gnu/alsa-lib/<br />
# ln -s /usr/lib32/alsa-lib/libasound_module_pcm_pulse.so /usr/lib/i386-linux-gnu/alsa-lib/<br />
<br />
If that does not work, try tweaking {{ic|~/.alsoftrc}} as proposed by the [http://steamcommunity.com/app/221410/discussions/3/846940248238406974/ Steam community] (Serious Sam 3: BFE uses OpenAL to output sound). If you are not using Pulse Audio, you may want to write the following configuration:<br />
<br />
{{hc|~/.alsoftrc|<nowiki><br />
[general]<br />
drivers = alsa<br />
[alsa]<br />
device = default<br />
capture = default<br />
mmap = true<br />
</nowiki>}}<br />
<br />
==Sir, you are being hunted==<br />
===Dependencies===<br />
* {{pkg|lib32-alsa-plugins}}<br />
<br />
==Spacechem==<br />
===Dependencies===<br />
* {{pkg|lib32-sqlite}}<br />
* {{pkg|lib32-sdl_image}}<br />
* {{AUR|lib32-sdl_mixer}}<br />
<br />
===Troubleshooting===<br />
====Game crash====<br />
The shipped x86 version of Spacechem does not work on x64 with the game's own libSDL* files, and crashes with some strange output.<br />
<br />
To solve this just remove or move the three files {{ic|libSDL-1.2.so.0}}, {{ic|libSDL_image-1.2.so.0}}, {{ic|libSDL_mixer-1.2.so.0}} from {{ic|~/.steam/root/SteamApps/common/SpaceChem}}<br />
<br />
==Space Pirates and Zombies==<br />
===Dependencies===<br />
* {{pkg|lib32-alsa-plugins}}<br />
* {{pkg|lib32-openal}}<br />
<br />
===Troubleshooting===<br />
====No audio====<br />
Try running:<br />
# mkdir -p /usr/lib/i386-linux-gnu/alsa-lib/<br />
# ln -s /usr/lib32/alsa-lib/libasound_module_pcm_pulse.so /usr/lib/i386-linux-gnu/alsa-lib/<br />
<br />
If that does not work, try tweaking {{ic|~/.alsoftrc}} as proposed by the Steam community (Serious Sam 3: BFE uses OpenAL to output sound). If you are not using Pulse Audio, you may want to write the following configuration:<br />
{{hc|~/.alsoftrc|<nowiki><br />
[general]<br />
drivers = alsa<br />
[alsa]<br />
device = default<br />
capture = default<br />
mmap = true<br />
</nowiki>}}<br />
<br />
==Splice==<br />
Splice comes with both x86 and x64 binaries. Steam does not have to be running to launch this game.<br />
===Dependencies===<br />
* {{pkg|glu}}<br />
<br />
==Steel Storm: Burning Retribution==<br />
===Troubleshooting===<br />
====Start with black screen====<br />
The game tries to launch in 1024x768 resolution with fullscreen mode by default. It is impossible on some devices.<br />
(for example laptop Samsung Series9 with intel hd4000 video).<br />
<br />
You can launch the game in windowed mode. To do this open game Properties in Steam, in General tab select "Set launch options..." and type "-window".<br />
<br />
Now you can change the resolution in game.<br />
<br />
====No English fonts====<br />
If you use Intel video card, just disable S3TC in DriConf.<br />
<br />
==Strike Suite Zero==<br />
===Dependencies===<br />
* {{pkg|lib32-alsa-plugins}}<br />
<br />
==Superbrothers: Sword & Sworcery EP==<br />
===Dependencies===<br />
* {{pkg|lib32-glu}}<br />
* {{pkg|lib32-alsa-plugins}}<br />
* {{pkg|lib32-libpulse}} (if you use PulseAudio)<br />
<br />
==Team Fortress 2 ==<br />
===Dependencies===<br />
* {{AUR|lib32-libpng12}}<br />
<br />
===Making HRTF work===<br />
Assuming HRTF has been set up properly in the operating system, hrtf won't be enabled unless you disable the original processing. To do so, use<br />
dsp_slow_cpu 1<br />
For best results, also change the following:<br />
snd_spatialize_roundrobin 1<br />
dsp_enhance_stereo 0<br />
snd_pitchquality 1<br />
<br />
===Troubleshooting===<br />
====Loading screen freeze====<br />
If you are a non-english (speaking) user, you have to enable "en_US.UTF-8" in the locale.gen! Generate a new locale after that.<br />
<br />
====No audio====<br />
It happens if there is no PulseAudio in your system.<br />
If you want to use [[ALSA]], you need to launch Steam or the game directly with {{ic|1=SDL_AUDIODRIVER=alsa}} <br />
(From [http://steamcommunity.com/app/221410/discussions/0/882966056462819091/#c882966056470753683 SteamCommunity]).<br />
<br />
If it still does not work, you may also need to set the environment variable AUDIODEV. For instance {{ic|1=AUDIODEV=Live}}. Use {{ic|aplay -l}} to list the available sound cards.<br />
<br />
====Slow loading textures====<br />
If you are using Chris' FPS Configs or any other FPS config, you may have set {{ic|mat_picmip}} to {{ic|2}}. This spawns multiple threads for texture loading, which may cause more jittering and lag on Linux, especially on alternative kernels. Try setting it to {{ic|-1}}, the default.<br />
<br />
==Terraria==<br />
===Troubleshooting===<br />
====Failed to start game (missing executable)====<br />
This is not specific to arch, but remember to opt in for mac-and-linux-open-beta. After downloading the update, the error would be fixed.<br />
==The Book of Unwritten Tales==<br />
If the game does not start, uncheck: ''Properties > Enable Steam Community In-Game''.<br />
<br />
The game may segfault upon clicking the Setting menu and possibly during or before gameplay. This is a known problem and you will unfortunately have to wait for a fix from the developer. A workaround (taken from the [http://steamcommunity.com/app/221410/discussions/3/846939071081758230/#p2 Steam forums]) is to replace the game's RenderSystem_GL.so with one from Debian's repositories. To do that download this [https://launchpad.net/ubuntu/+archive/primary/+files/libogre-1.7.4_1.7.4-3_i386.deb deb file], extract it (with {{ic|{{AUR|dpkg}} -x libogre-*.deb outdir}}) and replace {{ic|~/.local/share/Steam/SteamApps/common/The Book of Unwritten Tales/lib/32/RenderSystem_GL.so}} with the one that comes with the {{ic|.deb}} package.<br />
<br />
===Dependencies===<br />
* {{AUR|lib32-libxaw}}<br />
* {{AUR|lib32-jasper}}{{Broken package link|{{aur-mirror|lib32-jasper}}}}<br />
<br />
==The Book of Unwritten Tales: The Critter Chronicles==<br />
Because it's based on the same engine, the things that apply to ''The Book of Unwritten Tales'' also apply for this game.<br />
<br />
To prevent the game from crashing at the very end when the credits are shown, change the size of the credits image as described here: http://steamcommunity.com/app/221830/discussions/0/828925849276110960/#c810921273836530791<br />
<br />
==The Clockwork Man==<br />
===Dependencies===<br />
* {{pkg|lib32-libidn}}<br />
<br />
==The Polynomial==<br />
===Dependencies===<br />
* {{AUR|ilmbase102-libs}}{{Broken package link|{{aur-mirror|ilmbase102-libs}}}}<br />
* {{AUR|openexr170-libs}}{{Broken package link|{{aur-mirror|openexr170-libs}}}}<br />
[https://github.com/ValveSoftware/steam-for-linux/issues/2721 Steam for Linux issue #2721]<br />
<br />
===Troubleshooting===<br />
====Segfaults during program start on 64-bit systems====<br />
The game segfaults during program start because of the {{ic|LD_LIBRARY_PATH}} setting in the launcher script. Edit {{ic|~/.local/share/Steam/SteamApps/common/ThePolynomial/Polynomial64}}, and comment out the {{ic|LD_LIBRARY_PATH}} variable. Make sure to put the {{ic|./bin/Polynomial64 "$@"}} command on a new line.<br />
<br />
==This War of Mine==<br />
===Troubleshooting===<br />
====Game doesn't load====<br />
This happens because of a incompatibility of the newer version of {{ic|lib32-glibc}}. To Fix the problem you need to download the version 2.20-6 of the lib, you can download it [http://ftp.nara.wide.ad.jp/pub/Linux/archlinux/multilib-testing/os/x86_64/lib32-glibc-2.20-6-x86_64.pkg.tar.xz here], then extract the: <br />
libc.so.6<br />
libc-2.20.so<br />
libpthread.so.0<br />
libpthread-2.20.so<br />
libresolv-2.20.so<br />
libresolv.so.2 <br />
librt.so.1<br />
librt-2.20.so<br />
located in the archive and put on the main game folder: {{ic|~/.local/share/Steam/steamapps/common/This War of Mine/}}<br />
<br />
==Towns / Towns Demo==<br />
===Crash on launch===<br />
Ensure you have [[Java]] installed.<br />
<br />
==Transistor==<br />
===Crash on launch / FMOD binding crash / Audio issues===<br />
Try running steam with following command <br />
LD_PRELOAD='/usr/lib/libstdc++.so.6:/usr/lib/libgcc_s.so.1:/usr/lib/libxcb.so.1:/usr/lib/libasound.so.2' steam<br />
<br />
Otherwise, run the game via shell and set up proper audio device for FMOD, as discussed there [https://steamcommunity.com/app/237930/discussions/2/620695877176333955/].<br />
<br />
Also, check out this thread [https://steamcommunity.com/app/237930/discussions/2/492378265893557247/]<br />
<br />
==Trine 2==<br />
===Dependencies===<br />
* {{pkg|lib32-glu}}<br />
* {{pkg|lib32-libxxf86vm}}<br />
* {{pkg|lib32-openal}}<br />
* {{pkg|xorg-xwininfo}}<br />
<br />
===Troubleshooting===<br />
* If colors are wrong with FOSS drivers (r600g at least), try to run the game in windowed mode, rendering will be corrected. ([https://bugs.freedesktop.org/show_bug.cgi?id=60553 bugreport])<br />
* If sound plays choppy, try:<br />
{{hc|/etc/openal/alsoft.conf|<nowiki><br />
drivers=pulse,alsa<br />
frequency=48000<br />
</nowiki>}}<br />
<br />
* If the game resolution is wrong when using a dual monitor setup and you can't see the whole window edit {{ic|~/.frozenbyte/Trine2/options.txt}} and change the options {{ic|ForceFullscreenWidth}} and {{ic|ForceFullscreenHeight}} to the resolution of your monitor on which you want to play the game.<br />
<br />
==Unity3D==<br />
<br />
Games based on the Unity3D engine, like ''War For The Overworld'' or ''Pixel Piracy'' may need the package {{pkg|lsb-release}} to understand that they run on Linux and work properly.<br />
<br />
===Locale Settings===<br />
<br />
Games made in C# often have a problem with some locales (e.g. Russian, German) because developers don't specify locale-agnostic number formatting. This can result in some game screens loading only partially, problems with online features or other bugs.<br />
<br />
To work around this, set the game's launch options to <code>LC_ALL=C %command%</code><br />
<br />
Some of the affected games: ''FORCED'', ''Gone Home'', ''Ichi'', ''Nimble Quest'', ''Syder Arcade''.<br />
<br />
===Unity 5 and PulseAudio===<br />
<br />
The sound system in Unity 5 changed and to be able to play games created with it you must most likely install and run [[PulseAudio]].<br />
<br />
==Unity of Command==<br />
===Dependencies===<br />
* {{pkg|lib32-pango}}<br />
* {{pkg|lib32-alsa-plugins}}<br />
<br />
===Troubleshooting===<br />
* If squares are shown instead of text, try removing {{ic|$HOME/Steam/SteamApps/common/Unity of Command/bin/libpangoft2-1.0.so.0}}.<br />
<br />
====No audio====<br />
If you get this error:<br />
ALSA lib dlmisc.c:254:(snd1_dlobj_cache_get) Cannot open shared library /usr/lib/i386-linux-gnu/alsa-lib/libasound_module_pcm_pulse.so<br />
<br />
Try running:<br />
# mkdir -p /usr/lib/i386-linux-gnu/alsa-lib/<br />
# ln -s /usr/lib32/alsa-lib/libasound_module_pcm_pulse.so /usr/lib/i386-linux-gnu/alsa-lib/<br />
<br />
==Unrest==<br />
===Dependencies===<br />
* {{pkg|fluidsynth}}<br />
<br />
== War Thunder ==<br />
<br />
=== Troubleshooting ===<br />
<br />
If having a green or blank screen at game start, set the {{ic|1=MESA_GL_VERSION_OVERRIDE=4.1COMPAT}} [[environment variable]]. [https://forum.warthunder.com/index.php?/topic/267809-linux-potential-workaround-for-mesa-drivers-black-screen/] [http://forum.warthunder.com/index.php?search_term=0030709&app=core&module=search&do=search&fromMainBar=1&search_app=forums%3Aforum%3A920&sort_field=&sort_order=&search_in=posts]<br />
<br />
== Witcher 2: Assassin of Kings ==<br />
<br />
=== Dependencies ===<br />
<br />
* {{Pkg|lib32-freetype2}}<br />
* {{AUR|lib32-libcurl-compat}}<br />
* {{Pkg|lib32-gnutls}}<br />
<br />
* {{AUR|lib32-sdl2}}<br />
* {{AUR|lib32-sdl2_image}}<br />
* {{AUR|lib32-libcurl-gnutls}}<br />
<br />
=== Troubleshooting ===<br />
<br />
If the game does not run, enable error messages:<br />
<br />
cd "${HOME}/.local/share/Steam/SteamApps/common/the witcher 2"<br />
LIBGL_DEBUG=verbose ./witcher2<br />
<br />
==Wizardry 6: Bane of the Cosmic Forge==<br />
===Dependencies===<br />
* {{pkg|dosbox}}<br />
<br />
To fix the crash at start, edit {{ic|~/.local/share/Steam/SteamApps/common/Wizardry6/dosbox_linux/launch_wizardry6.sh}} and change<br />
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:./libs<br />
exec ./dosbox -conf dosbox_wiz6.conf -conf dosbox_wiz6_launch_linux.conf -noconsole "$@"<br />
to<br />
#export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:./libs<br />
exec dosbox -conf dosbox_wiz6.conf -conf dosbox_wiz6_launch_linux.conf -noconsole "$@"<br />
<br />
==World of Goo==<br />
===Changing resolution===<br />
* To change the game resolution edit the section "Graphics display" in the configuration file {{ic|$HOME/Steam/SteamApps/common/World of Goo/properties/config.txt}}. For example, see below:<br />
<!-- Graphics display --><br />
<param name="screen_width" value="1680" /><br />
<param name="screen_height" value="1050" /><br />
<param name="color_depth" value="0" /><br />
<param name="fullscreen" value="true" /><br />
<param name="ui_inset" value="10" /><br />
<br />
==Worms Reloaded==<br />
===Dependencies===<br />
* {{pkg|lib32-alsa-plugins}}<br />
<br />
==XCOM==<br />
===Dependencies===<br />
* {{pkg|sdl2_image}}<br />
<br />
===Hangs on startup===<br />
Steam ships its own versions of some libraries, and they sometimes are too old to work with archlinux system libraries.<br />
Removing the library supplied by Steam means Steam has to use the newer arch-specific version. [https://bbs.archlinux.org/viewtopic.php?pid=1428375#p1428375].<br />
<br />
{{bc|rm ~.local/share/Steam/ubuntu12_32/steam-runtime/amd64/lib/x86_64-linux-gnu/libgcc_s.so.1<br />
rm ~/.local/share/Steam/ubuntu12_32/steam-runtime/amd64/usr/lib/x86_64-linux-gnu/libstdc++.so.6}}<br />
<br />
===Graphical glitches on Intel HD===<br />
XCOM may not recognize sdl2 shared libraries shipped with Steam runtime.<br />
Check if binary finds all required files and install missing packages if necessary ([https://www.archlinux.org/packages/extra/i686/sdl2/ sdl2] and [https://www.archlinux.org/packages/extra/x86_64/sdl2_image/ sdl2_image]).<br />
<br />
{{bc|ldd ~/.local/share/Steam/steamapps/common/XCom-Enemy-Unknown/binaries/linux/game.x86_64 | grep "not found"}}</div>Zekesonxxhttps://wiki.archlinux.org/index.php?title=Steam/Game-specific_troubleshooting&diff=413961Steam/Game-specific troubleshooting2015-12-31T16:27:16Z<p>Zekesonxx: /* XCOM */</p>
<hr />
<div>[[Category:Gaming]]<br />
[[ja:Steam/ゲーム別のトラブルシューティング]]<br />
{{Poor writing|Lots of content duplication, highly dubious "solutions"}}<br />
{{Note|[[Steam]] installs library dependencies of a game to a library directory, but some are missing at the moment. Report bugs involving missing libraries on Valve's bug tracker on their [https://github.com/ValveSoftware/steam-for-linux GitHub page] before adding workarounds here, and then provide a link to the bug so it can be removed as the problems are fixed.}}<br />
{{Tip|If a game fails to start, a possible reason is that it is missing required libraries. You can find out what libraries it requests by running {{ic|ldd ''game_executable''}}. {{ic|''game_executable''}} is likely located somewhere in {{ic|~/.steam/root/SteamApps/common/}}. Please note that most of these "missing" libraries are actually already included with Steam, and do not need to be installed globally.}}<br />
<br />
==Air Brawl==<br />
===Dependencies===<br />
* {{pkg|gnu-free-fonts}}<br />
<br />
===Menus are missing text/blacked out===<br />
Air Brawl seems to require some fonts that are missing, installing the package {{pkg|gnu-free-fonts}} may fix it.<br />
<br />
==Amnesia: The Dark Descent==<br />
===Dependencies===<br />
* {{AUR|lib32-freealut}}<br />
* {{pkg|lib32-glu}}<br />
* {{pkg|lib32-libxmu}}<br />
* {{pkg|lib32-sdl_ttf}}<br />
<br />
==And Yet It Moves==<br />
===Dependencies===<br />
* {{AUR|lib32-libtheora}}<br />
* {{AUR|lib32-libjpeg6}}{{Broken package link|{{aur-mirror|lib32-libjpeg6}}}}<br />
* {{AUR|lib32-libtiff4}}<br />
* {{AUR|lib32-libpng12}}<br />
<br />
===Compatibility===<br />
Game refuses to launch and one of the following messages can be observed on console<br />
readlink: extra operand ‘Yet’<br />
Try 'readlink --help' for more information.<br />
OR<br />
This script must be run as a user with write priviledges to game directory<br />
To fix this, use:<br />
{{hc|~/.steam/root/SteamApps/common/And Yet It Moves/AndYetItMovesSteam.sh|<nowiki><br />
#ayim_dir="$(dirname "$(readlink -f ${BASH_SOURCE[0]})")"<br />
ayim_dir="$(dirname "$(readlink -f "${BASH_SOURCE[0]}")")"<br />
</nowiki>}}<br />
<br />
==Anodyne==<br />
===Dependencies===<br />
* {{AUR|adobe-air-sdk}}<br />
* {{pkg|xterm}} (probably not actually required)<br />
<br />
===Compatibility===<br />
Follow the same steps as [[#Defender.27s_Quest:_Valley_of_the_Forgotten|Defender's Quest]]<br />
<br />
==Aquaria==<br />
<br />
=== Mouse pointer gets stuck in one direction ===<br />
If the mouse pointer gets stuck in any one direction, the game becomes unplayable. You may try:<br />
{{hc|~/.local/share/Steam/SteamApps/common/Aquaria/usersettings.xml|<nowiki><br />
#<JoystickEnabled on=”1″ /><br />
<JoystickEnabled on=”0″ /></nowiki>}}<br />
<br />
If that does not fix the issue, unplug any joystick or joystick adapter devices you may have plugged in.<br />
<br />
==Binding of Isaac: Rebirth==<br />
===Troubleshooting===<br />
====No sound====<br />
Right click on {{ic|Binding of Isaac: Rebirth}} on your game list, click on {{ic|Properties}}, click on {{ic|SET LAUNCH OPTIONS}}, then add this: <br />
LD_LIBRARY_PATH="/usr/lib:$LD_LIBRARY_PATH" %command%<br />
<br />
In the game, go to the options and set all audio to the proper volume.<br />
<br />
==Borderlands 2==<br />
<br />
===Syncing save games===<br />
<br />
Steam Cloud syncing does not (intentionally) work between platforms. With that said gave save files can be manually moved between systems. Save locations can be found here: http://pcgamingwiki.com/wiki/Borderlands_2#Game_data. Once backed up to a FAT32 or other cross-compatible file-system thumbdrive (or the cloud), move the saved files to your GNU/Linux system, locate your saved file location, and move into the 17-digit long numeric file name. If previous saves on your GNU/Linux system can be deleted you can do so now. The key fix that I found was a need to change the ownership, group, and permissions. I used {{ic|chown steam:steam *}} and then {{ic|chmod 0660 *}} to get my moved saved files to work.<br />
<br />
===Using Ctrl Key===<br />
Borderlands 2 does not allow the Ctrl key to be used by default. The game seems to be accessing keycodes and not keysyms, therefore xmodmap has no affect. A workaround is using ''setkeycodes'' to map the Ctrl-scancode to some other key, as described in [[Map scancodes to keycodes#Using setkeycodes]]. I use {{ic|setkeycodes 0x1d 56}} (as root) to map Ctrl to Alt before starting the game and {{ic|setkeycodes 0x1d 29}} to restore the default.<br />
<br />
===Logging into SHiFT===<br />
The Linux version of Borderlands 2 expects to be run on Ubuntu, as that is the "officially" supported distro for Steam. As a result of this, when attempting to log in to SHiFT, it will fail, claiming the server is not available. Using strace, it can be seen that it fails to connect to the server because it cannot load SSL certificates from /usr/lib/ssl, which is the Ubuntu filesystem spec. Arch uses /etc/ssl. This can be fixed by symlinking /etc/ssl to /usr/lib/ssl, like so: <br />
# ln -s /etc/ssl /usr/lib/ssl<br />
You will now be able to log into SHiFT to redeem SHiFT codes.<br />
<br />
==Borderlands the Pre-Sequel==<br />
Borderlands the Pre-Sequle (and maybe Borderlands 2) might not be able to connect to the Gearbox SHIFT-service, this is related to a wrong path to the available SSL certificates. This can be solved by creating a symbolic link from {{ic|/etc/ssl}} to {{ic|/usr/lib/ssl}}. See [http://steamcommunity.com/app/49520/discussions/0/616189742722687689/#c616189742811551908 this comment on the steam dissuscion forum].<br />
<br />
==Cities in Motion 2==<br />
<br />
=== Dialog boxes fail to display properly ===<br />
<br />
You will not be able to read or see anything, and you will have this in your logs:<br />
Fontconfig error: "/etc/fonts/conf.d/10-scale-bitmap-fonts.conf", line 69: non-double matrix element<br />
Fontconfig error: "/etc/fonts/conf.d/10-scale-bitmap-fonts.conf", line 69: wrong number of matrix elements<br />
<br />
Workaround for the bug {{Bug|35039}} is available [http://bpaste.net/show/167019/ here] (replace {{ic|/etc/fonts/conf.d/10-scale-bitmap-fonts.conf}}).<br />
<br />
==Cities Skylines==<br />
<br />
===Textures not rendering properly===<br />
<br />
In Steam client set launch properties for game:<br />
<br />
UNITY_DISABLE_GRAPHICS_DRIVER_WORKAROUNDS=yes %command%<br />
<br />
== Civilization V==<br />
<br />
=== Stuttering sound with PulseAudio ===<br />
<br />
See [[PulseAudio/Troubleshooting#Laggy sound]].<br />
<br />
== Counter-Strike: Global Offensive (CS:GO) ==<br />
<br />
=== Game runs on the wrong screen ===<br />
<br />
[https://github.com/ValveSoftware/Counter-Strike-Global-Offensive/issues/60 GitHub Counter-Strike: Global Offensive issue #60]<br />
<br />
If it happens, you can fix it by going into fullscreen windowed or windowed mode and then dragging the game onto the correct monitor. After you go back in fullscreen, the game should be on the correct monitor.<br />
<br />
=== Audio is not synced ===<br />
<br />
[https://github.com/ValveSoftware/Counter-Strike-Global-Offensive/issues/45 GitHub Counter-Strike: Global Offensive issue #45]<br />
<br />
See [[PulseAudio/Troubleshooting#Laggy sound]] for a possible solution.<br />
<br />
=== Unable to aim when in game ===<br />
<br />
Unable to aim when in game. However, the mouse cursor does works in GUI such as main menu, game menu, etc.<br />
Add this line to your {{ic|.bash_profile}} and relogin:<br />
<br />
export SDL_VIDEO_X11_DGAMOUSE=0<br />
<br />
See also [https://bbs.archlinux.org/viewtopic.php?id=184905].<br />
<br />
=== Mouse Deadzone ===<br />
Small mouse movements (less than under 5 pixels per second) does not register on X or an OpenGL games. <br />
<br />
Solution[https://bbs.archlinux.org/viewtopic.php?pid=1519944#p1519944]:<br />
<br />
sudo pacman -R x86-input-libinput libinput<br />
<br />
=== Low Performance on AMD card using Catalyst proprietary driver ( <= 15.7 ) ===<br />
Solution[http://www.phoronix.com/scan.php?page=article&item=amd-csgo-workaround&num=1]:<br />
<br />
cd ~/.steam/steam/steamapps/common/Counter-Strike\ Global\ Offensive<br />
mv csgo_linux hl2_linux<br />
<br />
Now edit csgo.sh<br />
<br />
nano csgo.sh<br />
<br />
and change<br />
<br />
GAMEEXE=csgo_linux<br />
<br />
to <br />
<br />
GAMEEXE=hl2_linux<br />
<br />
=== Brightness slider not working ===<br />
<br />
First, find out your current display output name (connected one):<br />
<br />
xrandr | grep -v disconnected | grep connected<br />
<br />
In my case, it's<br />
<br />
'''DFP9''' connected<br />
<br />
Edit csgo.sh<br />
<br />
nano ~/.steam/steam/steamapps/common/Counter-Strike\ Global\ Offensive/csgo.sh<br />
<br />
and add the following lines (change the OUTPUT_NAME to one you found with xrandr)<br />
<br />
'''# gamma correction'''<br />
'''xrandr --output <OUTPUT_NAME> --gamma 1.6:1.6:1.6 # play with values if required'''<br />
STATUS=42<br />
while [ $STATUS -eq 42 ]; do<br />
...<br />
done<br />
'''# restore gamma'''<br />
'''xrandr --output <OUTPUT_NAME> --gamma 1:1:1'''<br />
exit $STATUS<br />
<br />
==Crusader Kings II==<br />
Game is installed into {{ic|$HOME/Steam/SteamApps/common/Crusader Kings II}}.<br />
Game can be started directly, without need of running Steam on background, using command {{ic|$HOME/Steam/SteamApps/common/Crusader Kings II/ck2}}.<br />
<br />
Saves are stored in {{ic|$HOME/Documents/Paradox Interactive/Crusader Kings II/save games/}}.<br />
In the newest version (2.03), save-game files seem to be stored to {{ic|$HOME/.paradoxinteractive/Crusader Kings II/}}. If your documents folder is empty, try looking there.<br />
<br />
===Troubleshooting===<br />
====No audio====<br />
The default audio driver used by Crusader Kings 2 is for [[PulseAudio]], so an override is necessary:<br />
<br />
{{hc|~/.pam_environment|2=SDL_AUDIODRIVER=alsa}}<br />
====Odd Sized Starting Window====<br />
Enable full screen mode as the default. In {{ic|~/.paradoxinteractive/Crusader Kings II/settings.txt}} change fullscreen=no to fullscreen=yes.<br />
<br />
==Defender's Quest: Valley of the Forgotten==<br />
===Dependencies===<br />
* {{AUR|adobe-air-sdk}}<br />
* {{pkg|xterm}}<br />
* {{pkg|lib32-libcanberra}}<br />
<br />
===Troubleshooting===<br />
====Game does not start====<br />
* Package {{AUR|adobe-air-sdk}} installs Adobe Air not in the place where the game expects it to be, fix this by creating a symlink (requires root permissions):<br />
{{bc|$ ln -s /opt/adobe-air-sdk/runtimes/air/linux/Adobe\ AIR /opt/Adobe\ AIR}}<br />
<br />
* Adobe AIR will want to check whether the EULA was accepeted and fail in doing so. To fix it, issue the following commands (from under your user, not under root):<br />
{{bc|$ mkdir -p ~/.appdata/Adobe/AIR<br />
$ echo 2 > ~/.appdata/Adobe/AIR/eulaAccepted}}<br />
{{Note|By issuing these commands you're accepting Adobe Air's EULA.}}<br />
<br />
==Don't Starve==<br />
===Dependencies (x86_64)===<br />
* {{pkg|lib32-flashplugin}}<br />
* {{pkg|lib32-alsa-plugins}} (Looks like it fixes sound in some cases. See [https://github.com/ValveSoftware/steam-for-linux/issues/2968 this github issue] for details)<br />
* {{AUR|lib32-libcurl-compat}} (Requires further commands after installation as described [http://steamcommunity.com/app/219740/discussions/2/620700960796078576/#c611704730329482542 here])<br />
<br />
===Troubleshooting===<br />
====No sound====<br />
Right click on Don't Starve on your game list, click on Properties, click on SET LAUNCH OPTIONS, then add this: <br />
LD_LIBRARY_PATH="/usr/lib:$LD_LIBRARY_PATH" %command%<br />
<br />
On the game, go to the option and set all audio to the proper volume.<br />
<br />
==Dota 2==<br />
===Dependencies (x86_64)===<br />
* {{pkg|lib32-openal}}<br />
* {{pkg|lib32-libpulse}} (if you use PulseAudio)<br />
* {{pkg|lib32-fontconfig}}<br />
<br />
===Dependencies (Dota 2 reborn)===<br />
* {{AUR|libudev0}} or {{AUR|libudev.so.0}}<br />
<br />
===Troubleshooting===<br />
====In-game font is unreadable====<br />
Start Steam (or Dota 2) with the environment variable:<br />
MESA_GL_VERSION_OVERRIDE=2.1<br />
<br />
====Everything seems OK but the game doesn't start====<br />
If you run the game from the terminal and, although no error is shown, try '''disabling''': ''Steam > Settings > In-Game > Enable Steam Community In-Game''.<br />
Apparently the game [[#The Book of Unwritten Tales|The Book of Unwritten Tales]] has the same problem. It also describes a workaround that is untested in Dota 2.<br />
<br />
====Game runs on the wrong screen====<br />
:[https://github.com/ValveSoftware/Dota-2/issues/11 GitHub Dota 2 issue #11]<br />
<br />
==== Game does not start with libxcb-dri3 error message ====<br />
After a recent Mesa update, Dota 2 stopped working. The error message is:<br />
SDL_GL_LoadLibrary(NULL) failed: Failed loading libGL.so.1: /usr/lib32/libxcb-dri3.so.0: undefined symbol: xcb_send_fd<br />
Simply remove the bundled libxcb to force Steam to use the system-wide version. Restart Steam to apply.<br />
$ find ~/.local/share/Steam -name 'libxcb*' -type f | grep -v installed | xargs rm<br />
:[https://github.com/ValveSoftware/steam-for-linux/issues/3204 GitHub Steam issue #3204]<br />
<br />
==== Steam overlay ====<br />
Steam distributes a copy of libxcb which is incompatible with the latest xorg libxcb. If you're having issues with steam overlay and on recent xorg try removing the bundled lib.<br />
mv ~/.local/share/Steam/ubuntu12_32/steam-runtime/i386/usr/lib/i386-linux-gnu/libxcb.so.1 /tmp/libxcb.so.1.bak<br />
See more information here:<br />
:[https://github.com/ValveSoftware/steam-for-linux/issues/3199]<br />
:[https://github.com/ValveSoftware/steam-for-linux/issues/3093]<br />
<br />
====Chinese Tips and player's name display problem====<br />
The Chinese characters in the Tips and player's name display block character.<br />
<br />
The problem caused by some fonts package. It is known that the 'ttf-dejave', 'ttf-liberation' and 'ttf-ms-fonts' will cause the prolem, and the 'wqy-*', 'ttf-ubuntu-font-family', 'ttf-arphic-uming', 'ttf-linux-libertine' are safe. The other fonts family are not checked.<br />
:[https://github.com/ValveSoftware/Dota-2/issues/1688 GitHub Steam issue #1688]<br />
<br />
====Chinese input method problem====<br />
Dota2 is not compatible with CJK IME(Input Method Editor/Enhancer), such as Ibus and Fcitx.<br />
Chinese characters can't be typed in Dota2.[https://github.com/ValveSoftware/Dota-2/issues/493 GitHub Steam issue 493]<br />
<br />
The possible solution<br />
<br />
Compile the `libSDL` with fcitx or ibus support, then replace `Game Folder/dota 2 beta/bin/libSDL2-2.0.so.0` with your version.<br />
:[http://forum.ubuntu.org.cn/viewtopic.php?f=34&t=460195 LibSDL+Ibus]<br />
:[http://forum.ubuntu.org.cn/viewtopic.php?f=34&t=466879&sid=1664abac47d8f639ed9b7f3abf94c675 LibSDL+Fcitx]<br />
:[https://github.com/timxx/SDL-fcitx LibSDL+Fcitx Source]<br />
:[https://github.com/ValveSoftware/Dota-2/issues/1650 The solutions issues]<br />
<br />
==Dwarfs F2P==<br />
===Dependencies===<br />
* {{AUR|lib32-libgdiplus}}{{Broken package link|{{aur-mirror|lib32-libgdiplus}}}}<br />
<br />
===Troubleshooting===<br />
====Game does not start====<br />
There was a bug that stopped Steam from fetching all the needed files. It should be resolved, if you still bump into this problem, try verifying integrity of game cache from game properties, local files tab.<br />
<br />
If the game still crashes at startup, edit {{ic|~/.local/share/Steam/SteamApps/common/Dwarfs - F2P/Run.sh}} and change<br />
export LD_LIBRARY_PATH=.:${LD_LIBRARY_PATH}<br />
to<br />
export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:.<br />
{{Note|This file may be overwritten by updates or by verifying integrity of game cache. You may need to modify it again.}}<br />
<br />
If these do not help, you may have outdated libraries in the game installation folder that are crashing the game on startup. Try moving/removing the following files out of {{ic|~/.local/share/Steam/SteamApps/common/Dwarfs - F2P/}} to fix it:<br />
<br />
libX11.so.6, libsteam.so libtier0_s.so, libvstdlib_s.so, steamclient.so<br />
<br />
====Game crashes====<br />
In some cases, the game crashes about 2 minutes before the end of every arcade. This bug has been reported, but there's no known solution to it.<br />
<br />
==Dynamite Jack==<br />
===Dependencies===<br />
* {{pkg|lib32-sdl}}<br />
<br />
===Troubleshooting===<br />
====Sound Issues====<br />
When running on 64-bit Arch Linux, there may be "pops and hisses" when running Dynamite Jack. This could be caused by not having {{ic|1=STEAM_RUNTIME=0}} set. (However, even with {{ic|1=STEAM_RUNTIME=0}} set, the game may still sometimes start with this issue. Exiting and restarting the game seems to make the problem go away.)<br />
<br />
====Game does not start====<br />
If running steam with the {{ic|1=STEAM_RUNTIME=0}}, Dynamite Jack may have a problem starting. Check the steam error messages for this message:<br />
/home/<USER>/.local/share/Steam/SteamApps/common/Dynamite Jack/bin/main: error while loading shared libraries: libSDL-1.2.so.0: cannot open shared object file: No such file or directory<br />
Install {{pkg|lib32-sdl}} from [[multilib]] and Dynamite Jack should start up.<br />
<br />
==Football Manager 2014==<br />
This game will not run when installed on an XFS or reiserfs filesystem. Workaround is to install on an ext4 filesystem.<br />
<br />
==FORCED==<br />
This game has 32-bit and 64-bit binaries. For unknown reason, steam will launch the 32-bit binary even on 64-bit Arch Linux.<br />
When manually launching the 64-bit binary, the game starts, but cannot connect to Steam account, so you cannot play.<br />
So install 32-bits dependencies, and launch the game from Steam.<br />
<br />
===Dependencies===<br />
* {{pkg|lib32-alsa-plugins}}<br />
* {{pkg|lib32-glu}}<br />
<br />
==FTL: Faster than Light==<br />
===Dependencies===<br />
Libraries are downloaded and and placed in the game's data directory for both architectures. As long as you run FTL by the launcher script (or via the shortcut in Steam) you should not need to download any further libraries.<br />
<br />
===Compatibility===<br />
After installation, FTL may fail to run due to a 'Text file busy' error (characterised in Steam by your portrait border going green then blue again). The easiest way to mend this is to just reboot your system. Upon logging back in FTL should run.<br />
<br />
The Steam overlay in FTL does not function as it is not a 3D accelerated game. Because of this the desktop notifications will be visible. If playing in fullscreen, therefore, these notifications in some systems may steal focus and revert you back to windowed mode with no way of going back to fullscreen without relaunching. The binaries for FTL on Steam have no DRM and it is possible to run the game ''without'' Steam running, so in some cases that may be optimum - just ensure that you launch FTL via the launcher script in {{ic|~/.steam/root/SteamApps/common/FTL Faster than Light/data/}} rather than the FTL binary in the $arch directory.<br />
<br />
===Problems with open-source video driver===<br />
FTL may fail to run if you are using an opensource driver for your video card. There are two solutions: install a proprietary video driver or delete (rename if you are unsure) the library "libstdc++.so.6" inside {{ic|~/.steam/root/SteamApps/common/FTL\ Faster\ Than\ Light/data/amd64/lib}}. This is if you are using a 64bit system. In case you are using a 32bit system you have to remove (rename) the same library located into {{ic|~/.steam/root/SteamApps/common/FTL\ Faster\ Than\ Light/data/x86/lib}}.<br />
<br />
==Game Dev Tycoon==<br />
===Troubleshooting===<br />
====Game does not start====<br />
Error about missing libudev.so.0 might appear, solution:<br />
# ln -s /lib/libudev.so /lib/libudev.so.0<br />
<br />
==Garry's Mod==<br />
===Troubleshooting===<br />
====Game does not start====<br />
Error about missing client.so might appear, solution:<br />
cd SteamLibrary/SteamApps/common/GarrysMod/bin/<br />
ln -s libawesomium-1-7.so.0 libawesomium-1-7.so.2<br />
ln -s ../garrysmod/bin/client.so ./<br />
====Opening some menus causes the game to crash====<br />
Most menus work fine, but ones with checkboxes (LAN multiplayer, mounted games list) do not work at all. This is a bug in the menu code.<br />
<br />
If you prefer the default menu style and do not mind a hacky solution: [https://github.com/Facepunch/garrysmod-issues/issues/86#issuecomment-30935491 Simon311] has written code with instructions to fix it.<br />
<br />
If you do not care for the default menu style and want a more stable but feature-incomplete solution, Facepunch developer [https://github.com/robotboy655/gmod-lua-menu robotboy655] has written a new menu.<br />
<br />
===Game crashes after attempting to join server===<br />
While in the process of joining a server, downloading resources, etc, the game seems to hang and after a while, perhaps during the "sending client info" portion the game crashes, usually without any error messages. Error does not give much information, however, the process for Garry's mod is killed.<br />
<br />
This issue arises more often when joining servers with many addons like DarkRP servers specifically.<br />
<br />
The Problem seems to correlate with a weak GPU and the game is timing out from the server, so if the GPU is the problem, lowering the graphics settings to minimum fixes the problem until you can upgrade ;).<br />
<br />
==Hacker Evolution [Untold, Duality]==<br />
===Dependencies===<br />
* {{AUR|lib32-sdl2_mixer}}<br />
<br />
==Half-Life 2 & episodes==<br />
===Cyrillic fonts problem===<br />
This problem can be solved by deleting "Helvetica" font.<br />
<br />
==Hammerwatch==<br />
===Troubleshooting===<br />
====The game not starting from Steam GUI====<br />
Right click on Hammerwatch on your game list, click on Properties, click on SET LAUNCH OPTIONS, then add this: <br />
LD_LIBRARY_PATH="/usr/lib:$LD_LIBRARY_PATH" %command%<br />
====No sound====<br />
Hammerwatch opens with a popup: "Sound Error" -- "Could not initialize OpenAL, no sounds will be played. Try updating your OpenAL drivers."<br />
<br />
OpenAL, which Hammerwatch uses, defaults to PulseAudio. To change that, add the following line to {{ic|/etc/openal/alsoft.conf}}:<br />
<br />
drivers=alsa,pulse<br />
<br />
This way, Hammerwatch will use ALSA. This solution was found [https://stackoverflow.com/questions/9547396/what-does-al-lib-pulseaudio-c612-context-did-not-connect-access-denied-me here].<br />
<br />
==Harvest: Massive Encounter==<br />
===Dependencies===<br />
* {{pkg|lib32-gtk2}}<br />
* {{pkg|lib32-libvorbis}}<br />
* {{pkg|lib32-openal}}<br />
* {{Pkg|lib32-nvidia-cg-toolkit}}<br />
* {{AUR|lib32-libjpeg6}}{{Broken package link|{{aur-mirror|lib32-libjpeg6}}}}<br />
* {{AUR|lib32-sfml}}<br />
<br />
===Compatibility===<br />
Game refuses to launch and throws you to library installer loop. Just edit {{ic| ~/.steam/root/SteamApps/common/Harvest Massive Encounter/run_harvest}} and remove everything but<br />
#!/bin/bash<br />
exec ./Harvest<br />
<br />
==Hatoful Boyfriend==<br />
===Japanese text invisible===<br />
Install {{pkg|wqy-microhei}} and {{pkg|wqy-microhei-lite}}.<br />
<br />
==The inner world==<br />
===Bringing up the inventory or main menu===<br />
Hold the <tab> key.<br />
<br />
===Dependencies===<br />
<br />
====Sound support====<br />
Install [https://aur.archlinux.org/packages/java-commons-codec java-commons-codec] from the [[AUR]] to get sound support.<br />
<br />
====Cutscenes====<br />
The game has cutscenes. It starts directly with a cutscene before you start the actual game in the backyard. To see these cutscenes you need to use Oracle's Java instead of the openjdk.<br />
<br />
Install [https://aur.archlinux.org/packages/jre/ jre] from the [[AUR]] and run<br />
<br />
archlinux-java set java-8-jre/jre<br />
<br />
as root. Furthermore you need the package ffmpeg-compat. Currently this package is in the community repository.<br />
<br />
There seem to be problems with Steam Overlay. Try to run the game directly with ~/Steam/SteamApps/common/TheInnerWorld/TIW_start.sh<br />
<br />
<br />
Note that cutscenes open in a new window. So pay attention to that and switch to the new window to enjoy the movies.<br />
<br />
<br />
See the [http://steamcommunity.com/app/251430/discussions/0/611701360817206606/#c611701360827509770 Steam Forums] for details.<br />
<br />
==Invisible Apartment==<br />
===Dependencies===<br />
* {{pkg|qt5-multimedia}}<br />
<br />
===Game does not run===<br />
Game does not run if you try to launch it via Steam, but you can run it directly if you run the following in terminal<br />
/home/<username>/.steam/steam/SteamApps/common/Invisible\ Apartment/ia1<br />
where for <username> you put your Linux username.<br />
<br />
==Joe Danger 2: The Movie==<br />
===Dependencies===<br />
* {{pkg|lib32-libpulse}}<br />
* {{pkg|lib32-alsa-plugins}}<br />
<br />
===Compatibility===<br />
Game only worked after obtaining from the [https://www.humblebundle.com/ Humble Bundle] directly and {{pkg|lib32-libpulse}} was installed.<br />
<br />
==[[Kerbal Space Program]]==<br />
===Troubleshooting===<br />
=== Game never progresses past initial loading ===<br />
To fix this, set:<br />
LC_ALL=C<br />
<br />
=== No text display ===<br />
The game requires Arial and Arial Black fonts, provided by the {{AUR|ttf-ms-fonts}} package.<br />
<br />
Another alternative is to try to install the {{Pkg|ttf-freefont}} package. This worked using KSP 0.90.0 on x86_64 Arch Linux.<br />
<br />
=== Graphics flickering when using primusrun ===<br />
Run with PRIMUS_SYNC=2 (but you will get reduced frame rate this way)<br />
<br />
=== Game crashes when accessing settings or saves on 64 bit systems on Steam ===<br />
In the properties for Kerbal Space program, set a launch option of:<br />
LC_ALL=C %command%_64<br />
<br />
=== Locale settings ===<br />
See https://bugs.kerbalspaceprogram.com/issues/504 if you have troubles with building Ships.<br />
<br />
=== No audio on 64-bit systems ===<br />
<br />
Run the 64-bit executable.<br />
<br />
Steam launches the KSP.x86 executable vs. the KSP.x86_64 executable. <br />
Navigate to:<br />
/home/$USER/.local/share/Steam/SteamApps/common/Kerbal\ Space\ Program/ <br />
Launch with:<br />
./KSP.x86_64<br />
<br />
Or you can simply right click on "Kerbal Space Program" in your game list, click ''Properties'', click ''SET LAUNCH OPTIONS'', then add this: <br />
LD_LIBRARY_PATH="/usr/lib:$LD_LIBRARY_PATH" LC_ALL=C %command%_64<br />
<br />
=== Black ingame textures ===<br />
<br />
Disable "Edge Highlighting (PPFX)" in graphics settings ingame.<br />
<br />
=== See also ===<br />
* [[Kerbal Space Program]]<br />
* http://forum.kerbalspaceprogram.com/showthread.php/24529-The-Linux-compatibility-thread!<br />
<br />
==Killing Floor==<br />
===Troubleshooting===<br />
====Screen resolution====<br />
Killing Floor runs pretty much from scratch, although you might have to change in-game resolution screen as the default one is '''800x600''' and a '''4:3''' screen format.<br />
If you try to modify screen resolution in-game, it might crash your desktop enviroment.<br />
To fix this, please set the desired resolution screen size by modifing your {{ic|~/.killingfloor/System/KillingFloor.ini}} with your prefered editor.<br />
{{hc|~/.killingfloor/System/KillingFloor.ini|<nowiki><br />
...<br />
<br />
[WinDrv.WindowsClient]<br />
WindowedViewportX=????<br />
WindowedViewportY=????<br />
FullscreenViewportX=????<br />
FullscreenViewportY=????<br />
MenuViewportX=???<br />
MenuViewportY=???<br />
<br />
...<br />
<br />
[SDLDrv.SDLClient]<br />
WindowedViewportX=????<br />
WindowedViewportY=????<br />
FullscreenViewportX=????<br />
FullscreenViewportY=????<br />
MenuViewportX=????<br />
MenuViewportY=????<br />
<br />
...<br />
</nowiki>}}<br />
{{Note|Replace all the {{ic|????}} with the corresponding numbers according the desired resolution. If you have an 1366x768 screen and want to use it at it's fullest, change all the Viewport fields to something like {{ic|ViewportX&#61;1366}} and {{ic|ViewportY&#61;768}} in the corresponding areas.}}<br />
{{Note| The dots in the middle indicate that there are more fields in that .ini file. But for screen resolution troubleshooting, you do not need to modify anything else.}}<br />
<br />
Save the file and restart the game, it should work now.<br />
<br />
====Windowed mode====<br />
Uncheck fullscreen in the options menu, and use {{ic|Ctrl+g}} to stop mouse capturing (that was non-obvious to discover..). This way you can easily minimize it and do other other things..and let your WM handle things.<br />
<br />
====Stuttering Sound====<br />
KillingFloor comes with its own libopenal.so (called openal.so). To use system lib instead install {{pkg|openal}} or {{pkg|lib32-openal }} (if using 64bit system).<br />
Then go to {{ic|$HOME/Steam/SteamApps/common/KillingFloor/System}}. and rename openal.so to openal.so.bak<br />
Then create symlink to /usr/lib32/libopenal.so.1 or /usr/lib/libopenal.so.1 called openal.so<br />
<br />
==Lethal League==<br />
===Dependencies===<br />
* {{AUR|lib32-glew1.10}}<br />
<br />
==Metro: Last Light==<br />
This game is not allowing to change its resolution on a multimonitor setup on GNOME with Catalyst drivers. <br />
===Attempted fixes===<br />
Various changes to the games config file was tried without success.<br />
{{ic|wmctrl}} was not able to force the games resolution.<br />
<br />
===Hacky solution===<br />
Disabled the side monitors.<br />
<br />
===Possible solutions===<br />
Jason over at [http://unencumberedbyfacts.com/2013/11/20/multiple-monitor-gaming-on-linux/ unencumbered by fact] is using Nvidia drivers on his multimonitor setup. However he notes he is using a single display server setup. This is being explored.<br />
<br />
==Mark of the Ninja==<br />
===Troubleshooting===<br />
====Bad sound====<br />
Right click on {{ic|Mark of the Ninja}} on your game list, click on {{ic|Properties}}, click on {{ic|SET LAUNCH OPTIONS}}, then add this: <br />
LD_LIBRARY_PATH="/usr/lib:$LD_LIBRARY_PATH" %command%<br />
<br />
==Multiwinia==<br />
===Dependencies===<br />
* {{pkg|lib32-openal}}<br />
<br />
==Natural Selection 2==<br />
Game mostly works out of the box.<br />
===No Sound===<br />
If there is no sound in-game. Try installing {{pkg|lib32-sdl}}, {{AUR|lib32-sdl2}}, and {{pkg|lib32-alsa-plugins}}<br />
<br />
If this fails, try setting the game's launch options in Steam to:<br />
LD_LIBRARY_PATH="/usr/lib32:$LD_LIBRARY_PATH" %command%<br />
<br />
==Penumbra: Overture==<br />
===Dependencies===<br />
(Taken from {{AUR|penumbra-collection}}{{Broken package link|{{aur-mirror|penumbra-collection}}}} and {{AUR|penumbra-overture-ep1-demo}}{{Broken package link|{{aur-mirror|penumbra-overture-ep1-demo}}}})<br />
* {{pkg|lib32-glu}}<br />
* {{pkg|lib32-libxft}}<br />
* {{pkg|lib32-libvorbis}}<br />
* {{pkg|lib32-openal}}<br />
* {{pkg|lib32-sdl_ttf}}<br />
* {{pkg|lib32-sdl_image}}<br />
<br />
===Troubleshooting===<br />
====Windowed mode====<br />
There is no in-game option to change to the windowed mode, you will have to edit {{ic|~/.frictionalgames/Penumbra/Overture/settings.cfg}} to activate it.<br />
Find {{ic|FullScreen&#61;"true"}} and change it to {{ic|FullScreen&#61;"false"}}, after this the game should start in windowed mode.<br />
<br />
==Portal 2==<br />
===Troubleshooting===<br />
====Game does not start====<br />
Several OpenGL-related errors (such as {{ic|PROBLEM: You appear to have OpenGL 1.4.0, but we need at least 2.0.0!}} or {{ic|libGL error: driver pointer missing}}) are caused by Portal&nbsp;2 bundling an old libstdc++ file. This error is especially common with open source Radeon drivers ({{ic|radeonsi}}).<br />
<br />
<br />
To remedy this, make Portal&nbsp;2 use the system-wide file by setting the launch options to {{ic|1=LD_PRELOAD='/usr/$LIB/libstdc++.so.6' %command%}}.<br />
<br />
More details and background info available [https://wirejungle.wordpress.com/2015/01/09/how-to-fix-broken-steam-linux-client-with-radeon-graphics-driver-workaround/ here.]<br />
<br />
==Prison Architect==<br />
===Troubleshooting===<br />
====ALSA error when using PulseAudio====<br />
The error:<br />
{{ic|ALSA lib pcm_dmix.c:1018:(snd_pcm_dmix_open) unable to open slave}}<br />
was resolved by installing:<br />
* {{pkg|pulseaudio-alsa}} <br />
* {{pkg|lib32-alsa-plugins}}<br />
* {{pkg|lib32-libpulse}}<br />
per [[PulseAudio#ALSA]]<br />
<br />
==Project Zomboid==<br />
===Dependencies===<br />
* {{pkg|jre7-openjdk}}<br />
<br />
==Redshirt==<br />
===Dependencies (x86_64)===<br />
* {{pkg|lib32-libpulse}} (if you use PulseAudio)<br />
<br />
==Revenge of the Titans==<br />
===Dependencies===<br />
* {{pkg|libxtst}} and {{pkg|lib32-libxtst}}<br />
<br />
==Rock Boshers DX: Directors Cut==<br />
===Dependencies===<br />
* {{AUR|lib32-libcaca}}<br />
<br />
==Serious Sam 3: BFE==<br />
===Dependencies===<br />
* {{pkg|lib32-alsa-plugins}}<br />
<br />
===Troubleshooting===<br />
====No audio====<br />
Try running:<br />
# mkdir -p /usr/lib/i386-linux-gnu/alsa-lib/<br />
# ln -s /usr/lib32/alsa-lib/libasound_module_pcm_pulse.so /usr/lib/i386-linux-gnu/alsa-lib/<br />
<br />
If that does not work, try tweaking {{ic|~/.alsoftrc}} as proposed by the [http://steamcommunity.com/app/221410/discussions/3/846940248238406974/ Steam community] (Serious Sam 3: BFE uses OpenAL to output sound). If you are not using Pulse Audio, you may want to write the following configuration:<br />
<br />
{{hc|~/.alsoftrc|<nowiki><br />
[general]<br />
drivers = alsa<br />
[alsa]<br />
device = default<br />
capture = default<br />
mmap = true<br />
</nowiki>}}<br />
<br />
==Sir, you are being hunted==<br />
===Dependencies===<br />
* {{pkg|lib32-alsa-plugins}}<br />
<br />
==Spacechem==<br />
===Dependencies===<br />
* {{pkg|lib32-sqlite}}<br />
* {{pkg|lib32-sdl_image}}<br />
* {{AUR|lib32-sdl_mixer}}<br />
<br />
===Troubleshooting===<br />
====Game crash====<br />
The shipped x86 version of Spacechem does not work on x64 with the game's own libSDL* files, and crashes with some strange output.<br />
<br />
To solve this just remove or move the three files {{ic|libSDL-1.2.so.0}}, {{ic|libSDL_image-1.2.so.0}}, {{ic|libSDL_mixer-1.2.so.0}} from {{ic|~/.steam/root/SteamApps/common/SpaceChem}}<br />
<br />
==Space Pirates and Zombies==<br />
===Dependencies===<br />
* {{pkg|lib32-alsa-plugins}}<br />
* {{pkg|lib32-openal}}<br />
<br />
===Troubleshooting===<br />
====No audio====<br />
Try running:<br />
# mkdir -p /usr/lib/i386-linux-gnu/alsa-lib/<br />
# ln -s /usr/lib32/alsa-lib/libasound_module_pcm_pulse.so /usr/lib/i386-linux-gnu/alsa-lib/<br />
<br />
If that does not work, try tweaking {{ic|~/.alsoftrc}} as proposed by the Steam community (Serious Sam 3: BFE uses OpenAL to output sound). If you are not using Pulse Audio, you may want to write the following configuration:<br />
{{hc|~/.alsoftrc|<nowiki><br />
[general]<br />
drivers = alsa<br />
[alsa]<br />
device = default<br />
capture = default<br />
mmap = true<br />
</nowiki>}}<br />
<br />
==Splice==<br />
Splice comes with both x86 and x64 binaries. Steam does not have to be running to launch this game.<br />
===Dependencies===<br />
* {{pkg|glu}}<br />
<br />
==Steel Storm: Burning Retribution==<br />
===Troubleshooting===<br />
====Start with black screen====<br />
The game tries to launch in 1024x768 resolution with fullscreen mode by default. It is impossible on some devices.<br />
(for example laptop Samsung Series9 with intel hd4000 video).<br />
<br />
You can launch the game in windowed mode. To do this open game Properties in Steam, in General tab select "Set launch options..." and type "-window".<br />
<br />
Now you can change the resolution in game.<br />
<br />
====No English fonts====<br />
If you use Intel video card, just disable S3TC in DriConf.<br />
<br />
==Strike Suite Zero==<br />
===Dependencies===<br />
* {{pkg|lib32-alsa-plugins}}<br />
<br />
==Superbrothers: Sword & Sworcery EP==<br />
===Dependencies===<br />
* {{pkg|lib32-glu}}<br />
* {{pkg|lib32-alsa-plugins}}<br />
* {{pkg|lib32-libpulse}} (if you use PulseAudio)<br />
<br />
==Team Fortress 2 ==<br />
===Dependencies===<br />
* {{AUR|lib32-libpng12}}<br />
<br />
===Making HRTF work===<br />
Assuming HRTF has been set up properly in the operating system, hrtf won't be enabled unless you disable the original processing. To do so, use<br />
dsp_slow_cpu 1<br />
For best results, also change the following:<br />
snd_spatialize_roundrobin 1<br />
dsp_enhance_stereo 0<br />
snd_pitchquality 1<br />
<br />
===Troubleshooting===<br />
====Loading screen freeze====<br />
If you are a non-english (speaking) user, you have to enable "en_US.UTF-8" in the locale.gen! Generate a new locale after that.<br />
<br />
====No audio====<br />
It happens if there is no PulseAudio in your system.<br />
If you want to use [[ALSA]], you need to launch Steam or the game directly with {{ic|1=SDL_AUDIODRIVER=alsa}} <br />
(From [http://steamcommunity.com/app/221410/discussions/0/882966056462819091/#c882966056470753683 SteamCommunity]).<br />
<br />
If it still does not work, you may also need to set the environment variable AUDIODEV. For instance {{ic|1=AUDIODEV=Live}}. Use {{ic|aplay -l}} to list the available sound cards.<br />
<br />
====Slow loading textures====<br />
If you are using Chris' FPS Configs or any other FPS config, you may have set {{ic|mat_picmip}} to {{ic|2}}. This spawns multiple threads for texture loading, which may cause more jittering and lag on Linux, especially on alternative kernels. Try setting it to {{ic|-1}}, the default.<br />
<br />
==Terraria==<br />
===Troubleshooting===<br />
====Failed to start game (missing executable)====<br />
This is not specific to arch, but remember to opt in for mac-and-linux-open-beta. After downloading the update, the error would be fixed.<br />
==The Book of Unwritten Tales==<br />
If the game does not start, uncheck: ''Properties > Enable Steam Community In-Game''.<br />
<br />
The game may segfault upon clicking the Setting menu and possibly during or before gameplay. This is a known problem and you will unfortunately have to wait for a fix from the developer. A workaround (taken from the [http://steamcommunity.com/app/221410/discussions/3/846939071081758230/#p2 Steam forums]) is to replace the game's RenderSystem_GL.so with one from Debian's repositories. To do that download this [https://launchpad.net/ubuntu/+archive/primary/+files/libogre-1.7.4_1.7.4-3_i386.deb deb file], extract it (with {{ic|{{AUR|dpkg}} -x libogre-*.deb outdir}}) and replace {{ic|~/.local/share/Steam/SteamApps/common/The Book of Unwritten Tales/lib/32/RenderSystem_GL.so}} with the one that comes with the {{ic|.deb}} package.<br />
<br />
===Dependencies===<br />
* {{AUR|lib32-libxaw}}<br />
* {{AUR|lib32-jasper}}{{Broken package link|{{aur-mirror|lib32-jasper}}}}<br />
<br />
==The Book of Unwritten Tales: The Critter Chronicles==<br />
Because it's based on the same engine, the things that apply to ''The Book of Unwritten Tales'' also apply for this game.<br />
<br />
To prevent the game from crashing at the very end when the credits are shown, change the size of the credits image as described here: http://steamcommunity.com/app/221830/discussions/0/828925849276110960/#c810921273836530791<br />
<br />
==The Clockwork Man==<br />
===Dependencies===<br />
* {{pkg|lib32-libidn}}<br />
<br />
==The Polynomial==<br />
===Dependencies===<br />
* {{AUR|ilmbase102-libs}}{{Broken package link|{{aur-mirror|ilmbase102-libs}}}}<br />
* {{AUR|openexr170-libs}}{{Broken package link|{{aur-mirror|openexr170-libs}}}}<br />
[https://github.com/ValveSoftware/steam-for-linux/issues/2721 Steam for Linux issue #2721]<br />
<br />
===Troubleshooting===<br />
====Segfaults during program start on 64-bit systems====<br />
The game segfaults during program start because of the {{ic|LD_LIBRARY_PATH}} setting in the launcher script. Edit {{ic|~/.local/share/Steam/SteamApps/common/ThePolynomial/Polynomial64}}, and comment out the {{ic|LD_LIBRARY_PATH}} variable. Make sure to put the {{ic|./bin/Polynomial64 "$@"}} command on a new line.<br />
<br />
==This War of Mine==<br />
===Troubleshooting===<br />
====Game doesn't load====<br />
This happens because of a incompatibility of the newer version of {{ic|lib32-glibc}}. To Fix the problem you need to download the version 2.20-6 of the lib, you can download it [http://ftp.nara.wide.ad.jp/pub/Linux/archlinux/multilib-testing/os/x86_64/lib32-glibc-2.20-6-x86_64.pkg.tar.xz here], then extract the: <br />
libc.so.6<br />
libc-2.20.so<br />
libpthread.so.0<br />
libpthread-2.20.so<br />
libresolv-2.20.so<br />
libresolv.so.2 <br />
librt.so.1<br />
librt-2.20.so<br />
located in the archive and put on the main game folder: {{ic|~/.local/share/Steam/steamapps/common/This War of Mine/}}<br />
<br />
==Towns / Towns Demo==<br />
===Crash on launch===<br />
Ensure you have [[Java]] installed.<br />
<br />
==Transistor==<br />
===Crash on launch / FMOD binding crash / Audio issues===<br />
Try running steam with following command <br />
LD_PRELOAD='/usr/lib/libstdc++.so.6:/usr/lib/libgcc_s.so.1:/usr/lib/libxcb.so.1:/usr/lib/libasound.so.2' steam<br />
<br />
Otherwise, run the game via shell and set up proper audio device for FMOD, as discussed there [https://steamcommunity.com/app/237930/discussions/2/620695877176333955/].<br />
<br />
Also, check out this thread [https://steamcommunity.com/app/237930/discussions/2/492378265893557247/]<br />
<br />
==Trine 2==<br />
===Dependencies===<br />
* {{pkg|lib32-glu}}<br />
* {{pkg|lib32-libxxf86vm}}<br />
* {{pkg|lib32-openal}}<br />
* {{pkg|xorg-xwininfo}}<br />
<br />
===Troubleshooting===<br />
* If colors are wrong with FOSS drivers (r600g at least), try to run the game in windowed mode, rendering will be corrected. ([https://bugs.freedesktop.org/show_bug.cgi?id=60553 bugreport])<br />
* If sound plays choppy, try:<br />
{{hc|/etc/openal/alsoft.conf|<nowiki><br />
drivers=pulse,alsa<br />
frequency=48000<br />
</nowiki>}}<br />
<br />
* If the game resolution is wrong when using a dual monitor setup and you can't see the whole window edit {{ic|~/.frozenbyte/Trine2/options.txt}} and change the options {{ic|ForceFullscreenWidth}} and {{ic|ForceFullscreenHeight}} to the resolution of your monitor on which you want to play the game.<br />
<br />
==Unity3D==<br />
<br />
Games based on the Unity3D engine, like ''War For The Overworld'' or ''Pixel Piracy'' may need the package {{pkg|lsb-release}} to understand that they run on Linux and work properly.<br />
<br />
===Locale Settings===<br />
<br />
Games made in C# often have a problem with some locales (e.g. Russian, German) because developers don't specify locale-agnostic number formatting. This can result in some game screens loading only partially, problems with online features or other bugs.<br />
<br />
To work around this, set the game's launch options to <code>LC_ALL=C %command%</code><br />
<br />
Some of the affected games: ''FORCED'', ''Gone Home'', ''Ichi'', ''Nimble Quest'', ''Syder Arcade''.<br />
<br />
===Unity 5 and PulseAudio===<br />
<br />
The sound system in Unity 5 changed and to be able to play games created with it you must most likely install and run [[PulseAudio]].<br />
<br />
==Unity of Command==<br />
===Dependencies===<br />
* {{pkg|lib32-pango}}<br />
* {{pkg|lib32-alsa-plugins}}<br />
<br />
===Troubleshooting===<br />
* If squares are shown instead of text, try removing {{ic|$HOME/Steam/SteamApps/common/Unity of Command/bin/libpangoft2-1.0.so.0}}.<br />
<br />
====No audio====<br />
If you get this error:<br />
ALSA lib dlmisc.c:254:(snd1_dlobj_cache_get) Cannot open shared library /usr/lib/i386-linux-gnu/alsa-lib/libasound_module_pcm_pulse.so<br />
<br />
Try running:<br />
# mkdir -p /usr/lib/i386-linux-gnu/alsa-lib/<br />
# ln -s /usr/lib32/alsa-lib/libasound_module_pcm_pulse.so /usr/lib/i386-linux-gnu/alsa-lib/<br />
<br />
==Unrest==<br />
===Dependencies===<br />
* {{pkg|fluidsynth}}<br />
<br />
== War Thunder ==<br />
<br />
=== Troubleshooting ===<br />
<br />
If having a green or blank screen at game start, set the {{ic|1=MESA_GL_VERSION_OVERRIDE=4.1COMPAT}} [[environment variable]]. [https://forum.warthunder.com/index.php?/topic/267809-linux-potential-workaround-for-mesa-drivers-black-screen/] [http://forum.warthunder.com/index.php?search_term=0030709&app=core&module=search&do=search&fromMainBar=1&search_app=forums%3Aforum%3A920&sort_field=&sort_order=&search_in=posts]<br />
<br />
== Witcher 2: Assassin of Kings ==<br />
<br />
=== Dependencies ===<br />
<br />
* {{Pkg|lib32-freetype2}}<br />
* {{AUR|lib32-libcurl-compat}}<br />
* {{Pkg|lib32-gnutls}}<br />
<br />
* {{AUR|lib32-sdl2}}<br />
* {{AUR|lib32-sdl2_image}}<br />
* {{AUR|lib32-libcurl-gnutls}}<br />
<br />
=== Troubleshooting ===<br />
<br />
If the game does not run, enable error messages:<br />
<br />
cd "${HOME}/.local/share/Steam/SteamApps/common/the witcher 2"<br />
LIBGL_DEBUG=verbose ./witcher2<br />
<br />
==Wizardry 6: Bane of the Cosmic Forge==<br />
===Dependencies===<br />
* {{pkg|dosbox}}<br />
<br />
To fix the crash at start, edit {{ic|~/.local/share/Steam/SteamApps/common/Wizardry6/dosbox_linux/launch_wizardry6.sh}} and change<br />
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:./libs<br />
exec ./dosbox -conf dosbox_wiz6.conf -conf dosbox_wiz6_launch_linux.conf -noconsole "$@"<br />
to<br />
#export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:./libs<br />
exec dosbox -conf dosbox_wiz6.conf -conf dosbox_wiz6_launch_linux.conf -noconsole "$@"<br />
<br />
==World of Goo==<br />
===Changing resolution===<br />
* To change the game resolution edit the section "Graphics display" in the configuration file {{ic|$HOME/Steam/SteamApps/common/World of Goo/properties/config.txt}}. For example, see below:<br />
<!-- Graphics display --><br />
<param name="screen_width" value="1680" /><br />
<param name="screen_height" value="1050" /><br />
<param name="color_depth" value="0" /><br />
<param name="fullscreen" value="true" /><br />
<param name="ui_inset" value="10" /><br />
<br />
==Worms Reloaded==<br />
===Dependencies===<br />
* {{pkg|lib32-alsa-plugins}}<br />
<br />
==XCOM==<br />
===Dependencies===<br />
* {{pkg|sdl2_image}}<br />
<br />
===Hangs on startup===<br />
Steam ships its own versions of some libraries, and they sometimes are too old to work with archlinux system libraries.<br />
Removing the library supplied by Steam means Steam has to use the newer arch-specific version. [https://bbs.archlinux.org/viewtopic.php?pid=1428375#p1428375].<br />
<br />
{{bc|rm ~.local/share/Steam/ubuntu12_32/steam-runtime/amd64/lib/x86_64-linux-gnu/libgcc_s.so.1<br />
rm ~/.local/share/Steam/ubuntu12_32/steam-runtime/amd64/usr/lib/x86_64-linux-gnu/libstdc++.so.6}}<br />
<br />
===Graphical glitches on Intel HD===<br />
XCOM may not recognize sdl2 shared libraries shipped with Steam runtime.<br />
Check if binary finds all required files and install missing packages if necessary ([https://www.archlinux.org/packages/extra/i686/sdl2/ sdl2] and [https://www.archlinux.org/packages/extra/x86_64/sdl2_image/ sdl2_image]).<br />
<br />
{{bc|ldd ~/.local/share/Steam/steamapps/common/XCom-Enemy-Unknown/binaries/linux/game.x86_64 | grep "not found"}}</div>Zekesonxxhttps://wiki.archlinux.org/index.php?title=Dwarf_Fortress&diff=412782Dwarf Fortress2015-12-19T14:31:36Z<p>Zekesonxx: /* StoneSense */ Fix absolutely awful wording</p>
<hr />
<div>[[Category:Gaming]]<br />
[http://www.bay12games.com/dwarves/ Dwarf Fortress] is a single-player fantasy game. You can control a dwarven outpost or an adventurer in a randomly generated, persistent world. It is renowned for its highly customizable, complex indepth gameplay.<br />
<br />
The game is played with keyboard only, though there exist [http://dwarffortresswiki.org/index.php/DF2014:Utilities#DFHack mods] which enable mouse support via plugins. Without any graphic mods ([http://dwarffortresswiki.org/index.php/DF2014:Tilesets]) the game is displayed in a terminal-like window with ASCII characters ([http://www.bay12games.com/dwarves/screens.html screenshots]).<br />
==Installation==<br />
[[Install]] package {{Pkg|dwarffortress}} from the [[official repositories]].<br />
<br />
Alternatively there are some [[AUR]] packages coming with bitmap tilesets:<br />
*{{AUR|dwarffortress-ironhand}}{{Broken package link|{{aur-mirror|dwarffortress-ironhand}}}}<br />
*{{AUR|dwarffortress-mayday}}{{Broken package link|{{aur-mirror|dwarffortress-mayday}}}}<br />
*{{AUR|dwarffortress-myne}}{{Broken package link|{{aur-mirror|dwarffortress-myne}}}}<br />
*{{AUR|dwarffortress-obsidian}}<br />
*{{AUR|dwarffortress-phoebus}}{{Broken package link|{{aur-mirror|dwarffortress-phoebus}}}}<br />
*{{AUR|dwarffortress-spacefox}}<br />
<br />
{{Note|Enabling [[multilib]] repositories on x86_64 systems is required due to 32bit dependencies.}}<br />
<br />
You will need to be in the games group to run Dwarf Fortress. If you are not in the games group, add yourself, then log out and back in again:<br />
<br />
# gpasswd -a USERNAME games<br />
<br />
== Troubleshooting ==<br />
<br />
If you get an error stating 'The file "index" must be in the "data" folder' then you may find a solution [http://robertqualls.com/2013/06/24/getting-dwarf-fortress-to-work-on-linux.html here].<br />
<br />
== Tools ==<br />
=== Dwarf Therapist ===<br />
<br />
[http://dwarffortresswiki.org/index.php/DF2014:Utilities#Dwarf_Therapist Dwarf Therapist] ({{AUR|dwarftherapist-git}} in [[AUR]]) is an almost essential mod to tune dwarvish behaviour (makes life a lot easier). For it to work on current kernels you will need to disable a kernel security feature, since dwarf therapist directly accesses and modifies the memory of a running dwarf fortress instance. This setting is called <code>kernel.yama.ptrace_scope</code> and defaults to <code>1</code>. You need to set it to <code>0</code> for dwarf therapist to work:<br />
<br />
# sysctl -w kernel.yama.ptrace_scope=0<br />
<br />
and then <br />
<br />
# sysctl -w kernel.yama.ptrace_scope=1<br />
<br />
when you're done playing and have closed dwarf fortress and dwarf therapist.<br />
<br />
For more information see [[sysctl]].<br />
{{Warning|You '''should not''' set this to <code>0</code> in <code>/etc/sysctl.d/</code> by default since it is an '''important security feature in the kernel'''! It is best to set it manually whenever you play dwarf fortress and reset it back to <code>1</code> when you are done playing.}}<br />
<br />
<br />
Alternatively, you can just give that permission to dwarftherapist:<br />
<br />
# setcap cap_sys_ptrace=eip /usr/bin/dwarftherapist<br />
<br />
=== SoundSense ===<br />
[http://dwarffortresswiki.org/index.php/DF2014:Utilities#SoundSense SoundSense] ({{AUR|soundsense}} in [[AUR]]) adds various sound effects and music via analysing the gamelog.txt.<br />
<br />
=== quickfort ===<br />
Quickfort is a utility for Dwarf Fortress that helps you build fortresses from "blueprint" .CSV, .XLS, and .XLSX files.<br />
*{{AUR|quickfort}}{{Broken package link|{{aur-mirror|quickfort}}}}<br />
*{{AUR|quickfort-git}}<br />
<br />
=== StoneSense ===<br />
StoneSense is an isometric world visualizer for Dwarf Fortress, and can be installed with the {{AUR|dfhack}} [[AUR]] package.<br />
<br />
If you choose to install StoneSense manually instead of using the AUR package, you'll need the following dependencies:<br />
* {{AUR|lib32-libjpeg6-turbo}}<br />
* {{AUR|lib32-libpng12}}<br />
* {{AUR|lib-32-allegro}}{{Broken package link|package not found}}</div>Zekesonxxhttps://wiki.archlinux.org/index.php?title=User:Zekesonxx&diff=400390User:Zekesonxx2015-09-18T01:22:16Z<p>Zekesonxx: https://youtu.be/IzwcPNoEX4s?t=5m8s</p>
<hr />
<div>I program things and sometimes contribute things.<br />
<br />
https://github.com/zekesonxx<br />
<br />
=== Computer Specs ===<br />
Desktop: i5-2320, 8GB RAM, GTX 970, running Windows 7 Home Premium 64-bit with dwm.exe.<br />
<br />
Laptop: Dell Inspiron M5030, running Arch 64-bit with xfce4, off a <del>16GB flash drive</del> 80GB 5400RPM hard drive! Whoo!.<br />
<br />
=== PGP ===<br />
<br />
{{bc|<nowiki>-----BEGIN PGP SIGNED MESSAGE-----<br />
Hash: SHA512<br />
<br />
I hearby verify that I am user Zekesonxx on the Arch Linux Wiki, as of 2015-09-17.<br />
<br />
User page: https://wiki.archlinux.org/index.php/User:Zekesonxx<br />
-----BEGIN PGP SIGNATURE-----<br />
Version: GnuPG v2<br />
<br />
iQEcBAEBCgAGBQJV+2YNAAoJEIzSZXCb/eAOnxYH/2Jd35L92d1NPMssOJNNp5Af<br />
2FL4aiLAqmOR0xXwMBjn1yPQfbVY50Z+mJWrdnPiQyKDkQQ7httdKx2PqGFxWh0y<br />
1VWODlyEoWwq3yMTmSZOrDU3MUZ6K24Rp8XClqEI0y1cyodHxtnunRXjkd8u+yuY<br />
8TMZFE+pYaW8zTLWP+zqhfnbAdrQjHJMVaRn+wJKSwsFYPZP9BaQVK71An10t66e<br />
BENWYkHnfUdACy6lhb+WYr5uytlfGyvdKXY+ty/axXpUjQIMFY7U3GAdsJVEQwLh<br />
Og39UNhsaLOTMhoD8A7UDx6EvjsEVn5Qz9alpG1ZLlnK/WxgoFwgX0nN/C491qY=<br />
=9YEs<br />
-----END PGP SIGNATURE-----<br />
</nowiki>}}<br />
<br />
Personal: [https://pgp.mit.edu/pks/lookup?op=vindex&fingerprint=on&search=0x79B1898A53A871BF4D202E778CD265709BFDE00E 79B1 898A 53A8 71BF 4D20 2E77 8CD2 6570 9BFD E00E] ([https://keybase.io/zekesonxx keybase.io])<br/><br />
Package: [https://pgp.mit.edu/pks/lookup?op=vindex&fingerprint=on&search=0xC1AE1A2666B42BFD91AB26819C7F3483D6B6F0E0 C1AE 1A26 66B4 2BFD 91AB 2681 9C7F 3483 D6B6 F0E0]<br />
<br />
The signature above is meant as a replacement for using a [[Wikipedia:Wikipedia:Wikipedia Signpost/2007-05-14/Committed identity|committed identity hash]], as well as proof that I am who I say I am.</div>Zekesonxxhttps://wiki.archlinux.org/index.php?title=OpenVPN&diff=400018OpenVPN2015-09-15T22:34:16Z<p>Zekesonxx: /* Connect to a VPN provided by a third party */ Fix awful writing of the note.</p>
<hr />
<div>[[Category:Virtual Private Network]]<br />
[[de:OpenVPN]]<br />
[[ru:OpenVPN]]<br />
[[zh-CN:OpenVPN]]<br />
{{Related articles start}}<br />
{{Related|OpenVPN in Linux containers}}<br />
{{Related articles end}}<br />
<br />
This article describes a basic installation and configuration of [http://openvpn.net OpenVPN], suitable for private and small business use. For more detailed information, please see the [https://community.openvpn.net/openvpn/wiki/Openvpn23ManPage OpenVPN 2.3 man page] and the [http://openvpn.net/index.php/open-source/documentation OpenVPN documentation]. OpenVPN is a robust and highly flexible [[Wikipedia:VPN|VPN]] daemon. It supports [[Wikipedia:SSL/TLS|SSL/TLS]] security, [[Wikipedia:Bridging_(networking)|Ethernet bridging]], [[Wikipedia:Transmission_Control_Protocol|TCP]] or [[Wikipedia:User_Datagram_Protocol|UDP]] [[Wikipedia:Tunneling_protocol|tunnel transport]] through [[Wikipedia:Proxy_server|proxies]] or [[Wikipedia:Network address translation|NAT]]. Additionally it has support for dynamic IP addresses and [[Wikipedia:Dynamic_Host_Configuration_Protocol|DHCP]], scalability to hundreds or thousands of users, and portability to most major OS platforms.<br />
<br />
OpenVPN is tightly bound to the [http://www.openssl.org OpenSSL] library, and derives much of its crypto capabilities from it. It supports conventional encryption using a [[Wikipedia:Pre-shared_key|pre-shared secret key]] (Static Key mode) or [[Wikipedia:Public_key|public key security]] ([[Wikipedia:SSL/TLS|SSL/TLS]] mode) using client & server certificates. Additionally it supports unencrypted TCP/UDP tunnels.<br />
<br />
OpenVPN is designed to work with the [[Wikipedia:TUN/TAP|TUN/TAP]] virtual networking interface that exists on most platforms. Overall, it aims to offer many of the key features of [[Wikipedia:Ipsec|IPSec]] but with a relatively lightweight footprint. OpenVPN was written by James Yonan and is published under the [[Wikipedia:GNU General Public License|GNU General Public License (GPL)]].<br />
<br />
== Install OpenVPN ==<br />
<br />
[[Install]] the {{Pkg|openvpn}} package.<br />
<br />
{{Note|The software contained in this package supports both server and client mode, so install it on all machines that need to create VPN connections.}}<br />
<br />
== Kernel configuration ==<br />
<br />
OpenVPN requires TUN/TAP support, which is already configured in the default kernel. If you build your own kernel, make sure to enable the {{ic|tun}} module as below: <br />
<br />
{{hc|Kernel config file|<br />
Device Drivers<br />
--> Network device support<br />
[M] Universal TUN/TAP device driver support}}<br />
<br />
Read [[Kernel modules]] for more information.<br />
<br />
== Connect to a VPN provided by a third party ==<br />
<br />
To connect to a VPN service provided by a third party, most of the following can most likely be ignored, especially regarding server setup. Most likely you will want to begin with [[#The client configuration file]] and skip ahead to [[#Starting OpenVPN]] after that. Use the certificates and instructions given by your provider, for instance see: [[Airvpn]].<br />
<br />
{{Note|Most free VPN providers will (often only) offer [[PPTP server| PPTP]], which is drastically easier to setup and configure, but is [http://poptop.sourceforge.net/dox/protocol-security.phtml not secure].}}<br />
<br />
== Create a Public Key Infrastructure (PKI) from scratch ==<br />
<br />
If you are setting up OpenVPN from scratch, you will need to create a [[Wikipedia:Public key infrastructure|Public Key Infrastructure (PKI)]].<br />
<br />
Create the needed certificates and keys by following: [[Create a Public Key Infrastructure Using the easy-rsa Scripts]].<br />
<br />
The final step of the key creation process is to copy the files needed to the correct machines through a secure channel.<br />
<br />
{{Note|The rest of this article assumes that the keys and certificates are placed in {{ic|/etc/openvpn}}.}}<br />
<br />
The public ca.crt certificate is needed on all servers and clients. The private ca.key key is secret and only needed on the key generating machine.<br />
<br />
A server needs server.crt, dh2048.pem (public), server.key, and ta.key (private).<br />
<br />
A client needs client.crt (public), client.key, and ta.key (private).<br />
<br />
== A basic L3 IP routing configuration ==<br />
<br />
{{Note|Unless otherwise explicitly stated, the rest of this article assumes this basic configuration.}}<br />
<br />
OpenVPN is an extremely versatile piece of software and many configurations are possible, in fact machines can be both "servers" and "clients", blurring the distinction between server and client.<br />
<br />
What really distinguishes a server from a client (apart from the type of certificate used) is the configuration file itself. The OpenVPN daemon start-up script reads all the .conf configuration files it finds in {{ic|/etc/openvpn}} on start-up and acts accordingly. If it finds more than one configuration file, it will start one OpenVPN process per configuration file.<br />
<br />
This article explains how to set up a server named elmer and a client that connects to it named bugs. More servers and clients can easily be added by creating more key/certificate pairs and adding more server and client configuration files.<br />
<br />
The OpenVPN package comes with a collection of example configuration files for different purposes. The sample server and client configuration files make an ideal starting point for a basic OpenVPN setup with the following features:<br />
<br />
* Uses [[Wikipedia:Public key infrastructure|Public Key Infrastructure (PKI)]] for authentication.<br />
* Creates a VPN using a virtual TUN network interface (OSI L3 IP routing).<br />
* Listens for client connections on UDP port 1194 (OpenVPN's [[Wikipedia:Port_number|official IANA port number]]).<br />
* Distributes virtual addresses to connecting clients from the 10.8.0.0/24 subnet.<br />
<br />
For more advanced configurations, please see the official [http://openvpn.net/index.php/manuals/427-openvpn-22.html OpenVPN 2.2 man page] and the [http://openvpn.net/index.php/open-source/documentation OpenVPN documentation].<br />
<br />
=== The server configuration file ===<br />
<br />
Copy the example server configuration file to {{ic|/etc/openvpn/server.conf}}:<br />
<br />
# cp /usr/share/openvpn/examples/server.conf /etc/openvpn/server.conf<br />
<br />
Edit the following:<br />
<br />
* The {{ic|ca}}, {{ic|cert}}, {{ic|key}}, and {{ic|dh}} parameters to reflect the path and names of the keys and certificates. Specifying the paths will allow you to run the OpenVPN executable from any directory for testing purposes.<br />
* Enable the SSL/TLS HMAC handshake protection. '''Note the use of the parameter 0 for a server'''.<br />
* It is recommended to run OpenVPN with reduced privileges once it has initialized. Do this by uncommenting the {{ic|user}} and {{ic|group}} directives.<br />
<br />
{{hc|/etc/openvpn/server.conf|<br />
ca /etc/openvpn/ca.crt<br />
cert /etc/openvpn/elmer.crt<br />
key /etc/openvpn/elmer.key<br />
<br />
dh /etc/openvpn/dh2048.pem<br />
.<br />
.<br />
tls-auth /etc/openvpn/ta.key '''0'''<br />
.<br />
.<br />
user nobody<br />
group nobody<br />
}}<br />
<br />
{{Note|Note that if the server is behind a firewall or a NAT translating router, you will have to forward the OpenVPN UDP port (1194) to the server.}}<br />
<br />
=== The client configuration file ===<br />
<br />
Copy the example client configuration file to {{ic|/etc/openvpn/client.conf}}:<br />
<br />
# cp /usr/share/openvpn/examples/client.conf /etc/openvpn/client.conf<br />
<br />
Edit the following:<br />
<br />
* The {{ic|remote}} directive to reflect either the server's [[Wikipedia:Fully qualified domain name|Fully Qualified Domain Name]], hostname (as known to the client), or its IP address.<br />
* Uncomment the {{ic|user}} and {{ic|group}} directives to drop privileges.<br />
* The {{ic|ca}}, {{ic|cert}}, and {{ic|key}} parameters to reflect the path and names of the keys and certificates.<br />
* Enable the SSL/TLS HMAC handshake protection. '''Note the use of the parameter 1 for a client'''.<br />
<br />
{{hc|/etc/openvpn/client.conf|<br />
remote elmer.acmecorp.org 1194<br />
.<br />
.<br />
user nobody<br />
group nobody<br />
ca /etc/openvpn/ca.crt<br />
cert /etc/openvpn/bugs.crt<br />
key /etc/openvpn/bugs.key<br />
.<br />
.<br />
tls-auth /etc/openvpn/ta.key '''1'''<br />
}}<br />
<br />
==== Drop root privileges after connecting ====<br />
<br />
Using the options {{ic|user nobody}} and {{ic|group nobody}} in the configuration file makes ''openvpn'' drop its privileges after establishing the connection. The downside is that upon VPN disconnect the daemon is unable to delete its set network routes again. If one wants to limit transmitting traffic without the VPN connection, this may be advantageous. However, it requires manual action to delete the routes and will, hence, often be undesired. For this case the [https://openvpn.net/index.php/open-source/documentation/howto.html#security OpenVPN howto] explains how to create an unprivileged user mode and wrapper script to have the routes restored automatically. <br />
<br />
Further, it is possible to let OpenVPN start as a non-privileged user in the first place, without ever running as root, see [https://community.openvpn.net/openvpn/wiki/UnprivilegedUser this OpenVPN wiki page].<br />
<br />
=== Testing the OpenVPN configuration ===<br />
<br />
Run {{ic|# openvpn /etc/openvpn/server.conf}} on the server, and {{ic|# openvpn /etc/openvpn/client.conf}} on the client. You should see something similar to this:<br />
<br />
{{hc|# openvpn /etc/openvpn/server.conf|2=<br />
Wed Dec 28 14:41:26 2011 OpenVPN 2.2.1 x86_64-unknown-linux-gnu [SSL] [LZO2] [EPOLL] [eurephia] built on Aug 13 2011<br />
Wed Dec 28 14:41:26 2011 NOTE: OpenVPN 2.1 requires '--script-security 2' or higher to call user-defined scripts or executables<br />
Wed Dec 28 14:41:26 2011 Diffie-Hellman initialized with 2048 bit key<br />
.<br />
.<br />
Wed Dec 28 14:41:54 2011 bugs/95.126.136.73:48904 MULTI: primary virtual IP for bugs/95.126.136.73:48904: 10.8.0.6<br />
Wed Dec 28 14:41:57 2011 bugs/95.126.136.73:48904 PUSH: Received control message: 'PUSH_REQUEST'<br />
Wed Dec 28 14:41:57 2011 bugs/95.126.136.73:48904 SENT CONTROL [bugs]: 'PUSH_REPLY,route 10.8.0.1,topology net30,ping 10,ping-restart 120,ifconfig 10.8.0.6 10.8.0.5' (status=1)<br />
}}<br />
<br />
{{hc|# openvpn /etc/openvpn/client.conf|2=<br />
Wed Dec 28 14:41:50 2011 OpenVPN 2.2.1 i686-pc-linux-gnu [SSL] [LZO2] [EPOLL] [eurephia] built on Aug 13 2011<br />
Wed Dec 28 14:41:50 2011 NOTE: OpenVPN 2.1 requires '--script-security 2' or higher to call user-defined scripts or executables<br />
Wed Dec 28 14:41:50 2011 LZO compression initialized<br />
.<br />
.<br />
Wed Dec 28 14:41:57 2011 GID set to nobody<br />
Wed Dec 28 14:41:57 2011 UID set to nobody<br />
Wed Dec 28 14:41:57 2011 Initialization Sequence Completed<br />
}}<br />
<br />
On the server, find the IP address assigned to the tunX device:<br />
<br />
{{hc|# ip addr show|2=<br />
.<br />
.<br />
40: tun0: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UNKNOWN qlen 100<br />
link/none<br />
inet 10.8.0.1 peer 10.8.0.2/32 scope global tun0<br />
}}<br />
<br />
Here we see that the server end of the tunnel has been given the IP address 10.8.0.1.<br />
<br />
Do the same on the client:<br />
<br />
{{hc|# ip addr show|2=<br />
.<br />
.<br />
37: tun0: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UNKNOWN qlen 100<br />
link/none<br />
inet 10.8.0.6 peer 10.8.0.5/32 scope global tun0<br />
}}<br />
<br />
And the client side has been given the IP address 10.8.0.6.<br />
<br />
Now try pinging the interfaces.<br />
<br />
On the server:<br />
<br />
{{hc|# ping -c3 10.8.0.6|2=<br />
PING 10.8.0.6 (10.8.0.6) 56(84) bytes of data.<br />
64 bytes from 10.8.0.6: icmp_req=1 ttl=64 time=238 ms<br />
64 bytes from 10.8.0.6: icmp_req=2 ttl=64 time=237 ms<br />
64 bytes from 10.8.0.6: icmp_req=3 ttl=64 time=205 ms<br />
<br />
--- 10.8.0.6 ping statistics ---<br />
3 packets transmitted, 3 received, 0% packet loss, time 2002ms<br />
rtt min/avg/max/mdev = 205.862/227.266/238.788/15.160 ms<br />
}}<br />
<br />
On the client:<br />
<br />
{{hc|# ping -c3 10.8.0.1|2=<br />
PING 10.8.0.1 (10.8.0.1) 56(84) bytes of data.<br />
64 bytes from 10.8.0.1: icmp_req=1 ttl=64 time=158 ms<br />
64 bytes from 10.8.0.1: icmp_req=2 ttl=64 time=158 ms<br />
64 bytes from 10.8.0.1: icmp_req=3 ttl=64 time=157 ms<br />
<br />
--- 10.8.0.1 ping statistics ---<br />
3 packets transmitted, 3 received, 0% packet loss, time 2001ms<br />
rtt min/avg/max/mdev = 157.426/158.278/158.940/0.711 ms<br />
}}<br />
<br />
You now have a working OpenVPN installation, and your client (bugs) will be able to use services on the server (elmer), and vice versa.<br />
<br />
{{Note|If using a firewall, make sure that IP packets on the TUN device are not blocked.}}<br />
<br />
=== Configure the MTU with Fragment and MSS ===<br />
<br />
{{Note|If you do not configure MTU, then you will notice that small packets like ping and DNS will work, however web browsing will not work.}}<br />
<br />
Now it is time to configure the maximum segment size (MSS). In order to do this we need to discover what is the smallest MTU along the path between the client and server. In order to do this you can ping the server and disable fragmentation. Then specify the max packet size.<br />
<br />
{{hc|# ping -c5 -M do -s 1500 elmer.acmecorp.org|2=<br />
PING elmer.acmecorp.org (99.88.77.66) 1500(1528) bytes of data.<br />
From 1.2.3.4 (99.88.77.66) icmp_seq=1 Frag needed and DF set (mtu = 576)<br />
From 1.2.3.4 (99.88.77.66) icmp_seq=1 Frag needed and DF set (mtu = 576)<br />
From 1.2.3.4 (99.88.77.66) icmp_seq=1 Frag needed and DF set (mtu = 576)<br />
From 1.2.3.4 (99.88.77.66) icmp_seq=1 Frag needed and DF set (mtu = 576)<br />
From 1.2.3.4 (99.88.77.66) icmp_seq=1 Frag needed and DF set (mtu = 576)<br />
<br />
--- core.myrelay.net ping statistics ---<br />
0 packets transmitted, 0 received, +5 errors<br />
}}<br />
<br />
We received an ICMP message telling us the MTU is 576 bytes. The means we need to fragment the UDP packets smaller then 576 bytes to allow for some UDP overhead.<br />
<br />
{{hc|# ping -c5 -M do -s 548 elmer.acmecorp.org|2=<br />
PING elmer.acmecorp.org (99.88.77.66) 548(576) bytes of data.<br />
556 bytes from 99.88.77.66: icmp_seq=1 ttl=48 time=206 ms<br />
556 bytes from 99.88.77.66: icmp_seq=2 ttl=48 time=224 ms<br />
556 bytes from 99.88.77.66: icmp_seq=3 ttl=48 time=206 ms<br />
556 bytes from 99.88.77.66: icmp_seq=4 ttl=48 time=207 ms<br />
556 bytes from 99.88.77.66: icmp_seq=5 ttl=48 time=208 ms<br />
<br />
--- myrelay.net ping statistics ---<br />
5 packets transmitted, 5 received, 0% packet loss, time 4001ms<br />
rtt min/avg/max/mdev = 206.027/210.603/224.158/6.832 ms<br />
}}<br />
<br />
After some trial and error..., we discover that we need to fragment packets on 548 bytes. In order to do this we specify this fragment size in the configuration and instruct OpenVPN to fix the Maximum Segment Size (MSS).<br />
<br />
{{hc|/etc/openvpn/client.conf|<br />
remote elmer.acmecorp.org 1194<br />
.<br />
.<br />
fragment 548<br />
mssfix 548<br />
.<br />
.<br />
user nobody<br />
group nobody<br />
.<br />
.<br />
ca /etc/openvpn/ca.crt<br />
cert /etc/openvpn/bugs.crt<br />
key /etc/openvpn/bugs.key<br />
.<br />
.<br />
tls-auth /etc/openvpn/ta.key '''1'''<br />
}}<br />
<br />
We also need to tell the server about the fragmentation. Note that "mssfix" is NOT needed in the server configuration.<br />
<br />
{{hc|/etc/openvpn/server.conf|<br />
ca /etc/openvpn/ca.crt<br />
cert /etc/openvpn/elmer.crt<br />
key /etc/openvpn/elmer.key<br />
<br />
dh /etc/openvpn/dh2048.pem<br />
.<br />
.<br />
tls-auth /etc/openvpn/ta.key '''0'''<br />
.<br />
.<br />
user nobody<br />
group nobody<br />
.<br />
.<br />
fragment 548<br />
}}<br />
<br />
{{Note|The following will add about 3 minutes to OpenVPN start time. It is advisable to configure the fragment size unless your client is a laptop that will be connecting over many different networks and the bottle neck is on the client side.}}<br />
<br />
You can also allow OpenVPN to do this for you by having OpenVPN do the ping testing every time the client connects to the VPN. Be patient, since your client may not inform you about the test being run and the connection may appear as nonfunctional until finished.<br />
{{hc|/etc/openvpn/client.conf|<br />
remote elmer.acmecorp.org 1194<br />
.<br />
.<br />
mtu-test<br />
.<br />
.<br />
user nobody<br />
group nobody<br />
.<br />
.<br />
ca /etc/openvpn/ca.crt<br />
cert /etc/openvpn/bugs.crt<br />
key /etc/openvpn/bugs.key<br />
.<br />
.<br />
tls-auth /etc/openvpn/ta.key '''1'''<br />
}}<br />
<br />
=== IPv6 ===<br />
In order to connect to a server which is only available with IPv6 (for example with DS Lite), you have to change <br />
<br />
{{hc|/etc/openvpn/server.conf and /etc/openvpn/client.conf|<br />
proto udp<br />
}}<br />
<br />
to<br />
<br />
{{hc|/etc/openvpn/server.conf and /etc/openvpn/client.conf|<br />
proto udp6<br />
}}<br />
<br />
in both server.conf and client.conf (See [https://community.openvpn.net/openvpn/wiki/IPv6 OpenVPN Wiki])<br />
<br />
== Starting OpenVPN ==<br />
<br />
=== Manual startup ===<br />
<br />
To troubleshoot a VPN connection, start the client's daemon manually with {{ic|openvpn /etc/openvpn/client.conf}} as root. The server can be started the same way using its own configuration file (e.g., {{ic|openvpn /etc/openvpn/server.conf}}).<br />
<br />
=== systemd service configuration ===<br />
<br />
To start OpenVPN automatically at system boot, either for a client or for a server, [[enable]] {{ic|openvpn@''<configuration>''.service}} on the applicable machine.<br />
<br />
For example, if the client configuration file is {{ic|/etc/openvpn/client.conf}}, the service name is {{ic|openvpn@client.service}}. Or, if the server configuration file is {{ic|/etc/openvpn/server.conf}}, the service name is {{ic|openvpn@server.service}}.<br />
<br />
=== Letting NetworkManager start a connection ===<br />
<br />
On a client you might not always need to run a VPN tunnel and/or only want to establish it for a specific NetworkManager connection. This can be done by adding a script to {{ic|/etc/NetworkManager/dispatcher.d/}}. In the following example "Provider" is the name of the NetworkManager connection:<br />
<br />
{{hc|/etc/NetworkManager/dispatcher.d/10-openvpn|2=<br />
#!/bin/bash<br />
<br />
case "$2" in<br />
up)<br />
if [ "$CONNECTION_ID" == "Provider" ]; then<br />
systemctl start openvpn@client<br />
fi<br />
;;<br />
down)<br />
systemctl stop openvpn@client<br />
;;<br />
esac}}<br />
<br />
See [[NetworkManager#Network services with NetworkManager dispatcher]] for more details.<br />
<br />
=== Gnome configuration ===<br />
<br />
If you would like to connect a client to an OpenVPN server through Gnome's built-in network configuration do the following. First, install {{ic|networkmanager-openvpn}}. Then go to the Settings menu and choose Network. Click the plus sign to add a new connection and choose VPN. From there you can choose OpenVPN and manually enter the settings, or you can choose to import [[#The client configuration file]] if you have already created one. If you followed the instructions in this article then it will be located at {{ic|/etc/openvpn/client.conf}}. To connect to the VPN simply turn the connection on.<br />
<br />
== Routing all client traffic through the server ==<br />
<br />
{{Note|There are potential pitfalls when routing all traffic through a VPN server. Refer to [http://openvpn.net/index.php/open-source/documentation/howto.html#redirect the OpenVPN documenation on this topic] for more information.}}<br />
<br />
By default only traffic directly to and from an OpenVPN server passes through the VPN. To have all traffic, including web traffic, pass through the VPN do the following. First add the following to your server's configuration file (i.e., {{ic|/etc/openvpn/server.conf}}) [http://openvpn.net/index.php/open-source/documentation/howto.html#redirect]:<br />
<br />
push "redirect-gateway def1"<br />
push "dhcp-option DNS 10.8.0.1"<br />
<br />
Change "10.8.0.1" to your preferred DNS IP address.<br />
<br />
If you have problems with non responsive DNS after connecting to server, install [[BIND]] as simple DNS forwarder and push the IP address of the OpenVPN server as DNS to clients. <br />
<br />
Now you need to [[Internet_sharing#Enable_packet_forwarding|enable packet forwarding]] on the server.<br />
<br />
In addition to above, your server's firewall will need to be set up to allow VPN traffic through it, which is described below for both [[ufw]] and [[iptables]].<br />
<br />
=== Firewall configuration ===<br />
<br />
==== ufw ====<br />
<br />
In order to configure your ufw settings for VPN traffic first add the following to {{ic|/etc/default/ufw}}:<br />
<br />
{{hc|/etc/default/ufw|2=<br />
DEFAULT_FORWARD_POLICY="ACCEPT"<br />
}}<br />
<br />
Now change {{ic|/etc/ufw/before.rules}}, and add the following code after the header and before the "*filter" line. Do not forget to change the IP/subnet mask to match the one in {{ic|/etc/openvpn/server.conf}}.<br />
<br />
{{hc|/etc/ufw/before.rules|2=<br />
# NAT (Network Address Translation) table rules<br />
*nat<br />
:POSTROUTING ACCEPT [0:0]<br />
<br />
# Allow traffic from clients to enp1s0<br />
-A POSTROUTING -s 10.8.0.0/24 -o enp1s0 -j MASQUERADE<br />
<br />
# do not delete the "COMMIT" line or the NAT table rules above will not be processed<br />
COMMIT<br />
}}<br />
<br />
Lastly, open OpenVPN port 1194:<br />
<br />
ufw allow 1194<br />
<br />
==== iptables ====<br />
<br />
In order to allow VPN traffic through your iptables firewall of your server, first create an iptables rule for NAT forwarding [http://openvpn.net/index.php/open-source/documentation/howto.html#redirect] on the server:<br />
<br />
iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE<br />
<br />
If you have difficulty pinging the server through the VPN, you may need to add explicit rules to open up TUN/TAP interfaces to all traffic. If that is the case, do the following [https://community.openvpn.net/openvpn/wiki/255-qconnection-initiated-with-xxxxq-but-i-cannot-ping-the-server-through-the-vpn]:<br />
<br />
{{Warning|There are security implications for the following rules if you do not trust all clients which connect to the server. Refer to the [https://community.openvpn.net/openvpn/wiki/255-qconnection-initiated-with-xxxxq-but-i-cannot-ping-the-server-through-the-vpn OpenVPN documentation on this topic] for more details.}}<br />
<br />
# Allow TUN interface connections to OpenVPN server<br />
iptables -A INPUT -i tun+ -j ACCEPT<br />
# Allow TUN interface connections to be forwarded through other interfaces<br />
iptables -A FORWARD -i tun+ -j ACCEPT<br />
# Allow TAP interface connections to OpenVPN server<br />
iptables -A INPUT -i tap+ -j ACCEPT<br />
# Allow TAP interface connections to be forwarded through other interfaces<br />
iptables -A FORWARD -i tap+ -j ACCEPT<br />
<br />
Additionally edit {{ic|/etc/conf.d/iptables}} and change IPTABLES_FORWARD=1. <br />
<br />
When you are satisfied make the changes permanent in the [[iptables#Configuration file]].<br />
<br />
== L3 IPv4 routing==<br />
<br />
This section describes how to connect client/server LANs to each other using L3 IPv4 routing.<br />
<br />
=== Prerequisites for routing a LAN ===<br />
<br />
For a host to be able to forward IPv4 packets between the LAN and VPN, it must be able to forward the packets between its NIC and its tun/tap device. See [[Internet sharing#Enable packet forwarding]] for configuration details.<br />
<br />
==== Routing tables ====<br />
<br />
{{Accuracy|Investigate if a routing protocol like RIP, QUAGGA, BIRD, etc can be used}}<br />
<br />
By default, all IP packets on a LAN addressed to a different subnet get sent to the default gateway. If the LAN/VPN gateway is also the default gateway, there is no problem and the packets get properly forwarded. If not, the gateway has no way of knowing where to send the packets. There are a couple of solutions to this problem.<br />
<br />
* Add a static route to the default gateway routing the VPN subnet to the LAN/VPN gateway's IP address.<br />
* Add a static route on each host on the LAN that needs to send IP packets back to the VPN.<br />
* Use [[iptables]]' NAT feature on the LAN/VPN gateway to masquerade the incoming VPN IP packets.<br />
<br />
=== Connect the server LAN to a client ===<br />
<br />
The server is on a LAN using the 10.66.0.0/24 subnet. To inform the client about the available subnet, add a push directive to the server configuration file:{{hc|/etc/openvpn/server.conf|push "route 10.66.0.0 255.255.255.0"}}<br />
<br />
{{Note|To route more LANs from the server to the client, add more push directives to the server configuration file, but keep in mind that the server side LANs will need to know how to route to the client.<br />
}}<br />
<br />
=== Connect the client LAN to a server ===<br />
<br />
Prerequisites:<br />
<br />
* Any subnets used on the client side, must be unique and not in use on the server or by any other client. In this example we will use 192.168.4.0/24 for the clients LAN.<br />
* Each client's certificate has a unique Common Name, in this case bugs.<br />
* The server may not use the duplicate-cn directive in its config file.<br />
<br />
Create a client configuration directory on the server. It will be searched for a file named the same as the client's common name, and the directives will be applied to the client when it connects.<br />
<br />
# mkdir -p /etc/openvpn/ccd<br />
<br />
Create a file in the client configuration directory called bugs, containing the {{ic|iroute 192.168.4.0 255.255.255.0}} directive. It tells the server what subnet should be routed to the client:<br />
<br />
{{hc|/etc/openvpn/ccd/bugs|iroute 192.168.4.0 255.255.255.0}}<br />
<br />
Add the client-config-dir and the {{ic|route 192.168.4.0 255.255.255.0}} directive to the server configuration file. It tells the server what subnet should be routed from the tun device to the server LAN:<br />
<br />
{{hc|/etc/openvpn/server.conf|<br />
client-config-dir ccd<br />
route 192.168.4.0 255.255.255.0<br />
}}<br />
<br />
{{Note|To route more LANs from the client to the server, add more iroute and route directives to the appropriate configuration files, but keep in mind that the client side LANs will need to know how to route to the server.<br />
}}<br />
<br />
=== Connect both the client and server LANs ===<br />
<br />
Combine the two previous sections:<br />
<br />
{{hc|/etc/openvpn/server.conf|<br />
push "route 10.66.0.0 255.255.255.0"<br />
.<br />
.<br />
client-config-dir ccd<br />
route 192.168.4.0 255.255.255.0<br />
}}<br />
<br />
{{hc|/etc/openvpn/ccd/bugs|iroute 192.168.4.0 255.255.255.0}}<br />
<br />
{{Note|Remember to make sure that all the LANs or the needed hosts can route to all the destinations.}}<br />
<br />
=== Connect clients and client LANs ===<br />
<br />
By default clients will not see each other. To allow IP packets to flow between clients and/or client LANs, add a client-to-client directive to the server configuration file: {{hc|/etc/openvpn/server.conf|client-to-client}}<br />
<br />
In order for another client or client LAN to see a specific client LAN, you will need to add a push directive for each client subnet to the server configuration file (this will make the server announce the available subnet(s) to other clients):<br />
<br />
{{hc|/etc/openvpn/server.conf|<br />
client-to-client<br />
push "route 192.168.4.0 255.255.255.0"<br />
push "route 192.168.5.0 255.255.255.0"<br />
.<br />
.<br />
}}<br />
<br />
{{Note|As always, make sure that the routing is properly configured.}}<br />
<br />
== DNS ==<br />
<br />
The DNS servers used by the system are defined in {{ic|/etc/resolv.conf}}. Traditionally, this file is the responsibility of whichever program deals with connecting the system to the network (e.g. Wicd, NetworkManager, etc...) However, OpenVPN will need to modify this file if you want to be able to resolve names on the remote side. To achieve this in a sensible way, install {{pkg|openresolv}}, which makes it possible for more than one program to modify {{ic|resolv.conf}} without stepping on each-other's toes.<br />
<br />
Before continuing, test openresolv by restarting your network connection and ensuring that {{ic|resolv.conf}} states that it was generated by ''resolvconf'', and that your DNS resolution still works as before. You should not need to configure openresolv; it should be automatically detected and used by your network system.<br />
<br />
For Linux, OpenVPN can send DNS host information, but expects an external process to act on it. This can be done with a [https://github.com/masterkorp/openvpn-update-resolv-conf openvpn-update-resolv-conf] script, which can be saved for example at {{ic|/etc/openvpn/update-resolv-conf}} and make it executable with [[chmod]]. There is also an AUR package: {{AUR|openvpn-update-resolv-conf}} which will take care of the script installation for you.<br />
<br />
Once the script is installed add lines like the following into your OpenVPN client configuration file:<br />
<br />
script-security 2<br />
up /etc/openvpn/update-resolv-conf<br />
down /etc/openvpn/update-resolv-conf<br />
<br />
Now, when your launch your OpenVPN connection, you should find that your resolv.conf file is updated accordingly, and also returns to normal when your close the connection.<br />
<br />
{{Accuracy|The above does not work on shutdown when following [[Drop root privileges after connecting]].|Talk:OpenVPN#Dropping root privileges: sub-section in DNS is out-of-sync}}<br />
<br />
== L2 Ethernet bridging ==<br />
<br />
{{Expansion|Please add a well thought out section on L2 bridging.}}<br />
<br />
For now see: [[OpenVPN Bridge]]<br />
<br />
== Troubleshooting ==<br />
<br />
=== Resolve issues ===<br />
<br />
If you are having resolve issues when starting your profile:<br />
{{hc|# journalctl _SYSTEMD_UNIT&#61;openvpn@''profile''.service|<br />
RESOLVE: Cannot resolve host address: example.com: Name or service not known<br />
}}<br />
<br />
{{Accuracy|1=Ordering "After=network.target" does not work universally. See [http://www.freedesktop.org/wiki/Software/systemd/NetworkTarget/ network.target]. Further, not the original unit in {{ic|/usr/lib}} should be modified but a copy, cross-referencing [[Systemd#Editing provided unit files]].}}<br />
Then, '''only if your network setup can be started before OpenVPN''', you should force OpenVPN to wait for the network by adding {{ic|1=Requires=network.target}} and {{ic|1=After=network.target}} to the OpenVPN systemd service file:<br />
{{hc|/usr/lib/systemd/system/openvpn@.service|<nowiki><br />
[Unit]<br />
Description=OpenVPN connection to %i<br />
Requires=network.target<br />
After=network.target<br />
...</nowiki><br />
}}<br />
Do not forget to run {{ic|systemctl daemon-reload}} and [[restart]] {{ic|openvpn@''profile''.service}}.<br />
<br />
=== Client daemon not restarting after suspend ===<br />
<br />
If you put your client system to sleep, and on resume openvpn does not restart, resulting in broken connectivity, create the following file:<br />
<br />
{{hc|/usr/lib/systemd/system-sleep/vpn.sh|2=<br />
#!/bin/sh<br />
if [ "$1" == "pre" ]<br />
then<br />
killall openvpn<br />
fi<br />
}}<br />
<br />
Make it executable {{ic|chmod a+x /usr/lib/systemd/system-sleep/vpn.sh}}<br />
<br />
{{hc|/etc/systemd/system/openvpn@.service.d/restart.conf|2=<br />
[Service]<br />
Restart=always<br />
}}<br />
<br />
=== Connection drops out after some time of inactivity ===<br />
<br />
If the VPN-Connection drops some seconds after it stopped transmitting data and, even though it states it is connected, no data can be transmitted through the tunnel, try adding a {{ic|keepalive}}directive to the server's configuration:<br />
<br />
{{hc|/etc/openvpn/server.conf|<br />
.<br />
.<br />
keepalive 10 120<br />
.<br />
.<br />
}}<br />
<br />
In this case the server will send ping-like messages to all of its clients every {{ic|10}} seconds, thus keeping the tunnel up.<br />
If the server does not receive a response within {{ic|120}} seconds from a specific client, it will assume this client is down.<br />
<br />
A small ping-interval can increase the stability of the tunnel, but will also cause slightly higher traffic. Depending on your connection, also try lower intervals than 10 seconds.<br />
<br />
== See Also ==<br />
* [https://openvpn.net/index.php/open-source.html OpenVPN Official Site]<br />
* [[Airvpn]]</div>Zekesonxxhttps://wiki.archlinux.org/index.php?title=Tor&diff=400017Tor2015-09-15T22:06:02Z<p>Zekesonxx: /* Installation */ Fix absolutely awfully worded error message.</p>
<hr />
<div>[[Category:Internet applications]]<br />
[[Category:Proxy servers]]<br />
[[es:Tor]]<br />
[[fr:Tor]]<br />
[[ja:Tor]]<br />
[[ru:Tor]]<br />
[[zh-CN:Tor]]<br />
{{Related articles start}}<br />
{{Related|GNUnet}}<br />
{{Related|I2P}}<br />
{{Related|Freenet}}<br />
{{Related articles end}}<br />
[https://www.torproject.org Tor] is an open source implementation of 2nd generation [[Wikipedia:Onion routing|onion routing]] that provides free access to an anonymous proxy network. Its primary goal is to enable [[Wikipedia:Internet anonymity|online anonymity]] by protecting against [[Wikipedia:Traffic analysis|traffic analysis]] attacks.<br />
<br />
== Introduction ==<br />
<br />
Users of the Tor network run an onion proxy on their machine. This software connects out to Tor, periodically negotiating a virtual circuit through the Tor network. Tor employs cryptography in a layered manner (hence the 'onion' analogy), ensuring perfect forward secrecy between routers. At the same time, the onion proxy software presents a SOCKS interface to its clients. SOCKS-aware applications may be pointed at Tor, which then multiplexes the traffic through a Tor virtual circuit.<br />
<br />
{{Warning|Tor by itself is ''not'' all you need to maintain your anonymity. There are several major pitfalls to watch out for (see: [https://www.torproject.org/download/download.html#warning Want Tor to really work?]).}}<br />
<br />
Through this process the onion proxy manages networking traffic for end-user anonymity. It keeps a user anonymous by encrypting traffic, sending it through other nodes of the Tor network, and decrypting it at the last node to receive your traffic before forwarding it to the server you specified. One trade off that has to be made for the anonymity Tor provides is that it can be considerably slower than a regular direct connection, due to the large amount of traffic re-routing. Additionally, although Tor provides protection against traffic analysis it cannot prevent traffic confirmation at the boundaries of the Tor network (i.e. the traffic entering and exiting the network).<br />
<br />
See [[Wikipedia:Tor (anonymity network)]] for more information.<br />
<br />
== Installation ==<br />
<br />
[[pacman|Install]] {{Pkg|tor}}, available in the [[official repositories]].<br />
<br />
The {{Pkg|arm}} (Anonymizing Relay Monitor) package provides a terminal status monitor for bandwidth usage, connection details and more.<br />
<br />
Additionally, there is a [[Qt]] frontend for Tor in package {{AUR|vidalia}}. In addition to controlling the Tor process, Vidalia allows you to view and configure the status of Tor, monitor bandwidth usage, and view, filter, and search log messages.<br />
<br />
{{Warning|As there is no active maintainer for Vidalia, along with a large number of longstanding bugs, [https://www.whonix.org/wiki/Tor_Controller#Vidalia_recommended_against it is recommended not to] use ''vidalia''.}}<br />
<br />
== Configuration ==<br />
<br />
By default Tor reads configurations from the file {{ic|/etc/tor/torrc}}. The configuration options are explained in {{ic|man tor}} and the [https://torproject.org/docs/tor-manual.html.en Tor website]. The default configuration should work fine for most Tor users.<br />
<br />
There are potential conflicts between configurations in {{ic|torrc}} and those in {{ic|tor.service}}.<br />
* In {{ic|torrc}}, {{ic|RunAsDaemon}} should, as by default, be set to {{ic|0}}, since {{ic|Type<nowiki>=</nowiki>simple}} is set in the {{ic|[Service]}} section in {{ic|tor.service}}.<br />
* In {{ic|torrc}}, {{ic|User}} should not be set unless {{ic|User<nowiki>=</nowiki>}} is set to {{ic|root}} in the {{ic|[Service]}} section in {{ic|tor.service}}.<br />
<br />
=== Relay Configuration ===<br />
<br />
The maximum file descriptor number that can be opened by Tor can be set with {{ic|LimitNOFILE}} in {{ic|tor.service}}. Fast relays may want to increase this value.<br />
<br />
If your computer is not running a webserver, and you have not set {{ic|AccountingMax}}, consider changing your {{ic|ORPort}} to {{ic|443}} and/or your {{ic|DirPort}} to {{ic|80}}. Many Tor users are stuck behind firewalls that only let them browse the web, and this change will let them reach your Tor relay. If you are already using ports 80 and 443, other useful ports are 22, 110, and 143.[https://www.torproject.org/docs/tor-relay-debian]<br />
But since these are privileged ports, to do so Tor must be run as root, by setting {{ic|User<nowiki>=</nowiki>root}} in {{ic|tor.service}} and {{ic|User tor}} in {{ic|torrc}}.<br />
<br />
You may wish to review [https://blog.torproject.org/blog/lifecycle-of-a-new-relay Lifecycle of a New Relay] Tor documentation.<br />
<br />
== Running Tor in a Chroot ==<br />
<br />
{{Warning| Connecting with telnet to the local ControlPort seems to be broken while running Tor in a chroot}}<br />
<br />
For security purposes, it may be desirable to run Tor in a [[chroot]]. The following script will create an appropriate chroot in /opt/torchroot:<br />
<br />
{{hc|~/torchroot-setup.sh|2=<nowiki><br />
#!/bin/bash<br />
export TORCHROOT=/opt/torchroot<br />
<br />
mkdir -p $TORCHROOT<br />
mkdir -p $TORCHROOT/etc/tor<br />
mkdir -p $TORCHROOT/dev<br />
mkdir -p $TORCHROOT/usr/bin<br />
mkdir -p $TORCHROOT/usr/lib<br />
mkdir -p $TORCHROOT/usr/share/tor<br />
mkdir -p $TORCHROOT/var/lib<br />
<br />
ln -s /usr/lib $TORCHROOT/lib<br />
cp /etc/hosts $TORCHROOT/etc/<br />
cp /etc/host.conf $TORCHROOT/etc/<br />
cp /etc/localtime $TORCHROOT/etc/<br />
cp /etc/nsswitch.conf $TORCHROOT/etc/<br />
cp /etc/resolv.conf $TORCHROOT/etc/<br />
cp /etc/tor/torrc $TORCHROOT/etc/tor/<br />
<br />
cp /usr/bin/tor $TORCHROOT/usr/bin/<br />
cp /usr/share/tor/geoip* $TORCHROOT/usr/share/tor/<br />
cp /lib/libnss* /lib/libnsl* /lib/ld-linux-*.so* /lib/libresolv* /lib/libgcc_s.so* $TORCHROOT/usr/lib/<br />
cp $(ldd /usr/bin/tor | awk '{print $3}'|grep --color=never "^/") $TORCHROOT/usr/lib/<br />
cp -r /var/lib/tor $TORCHROOT/var/lib/<br />
chown -R tor:tor $TORCHROOT/var/lib/tor<br />
<br />
sh -c "grep --color=never ^tor /etc/passwd > $TORCHROOT/etc/passwd"<br />
sh -c "grep --color=never ^tor /etc/group > $TORCHROOT/etc/group"<br />
<br />
mknod -m 644 $TORCHROOT/dev/random c 1 8<br />
mknod -m 644 $TORCHROOT/dev/urandom c 1 9<br />
mknod -m 666 $TORCHROOT/dev/null c 1 3<br />
<br />
if [[ "$(uname -m)" == "x86_64" ]]; then<br />
cp /usr/lib/ld-linux-x86-64.so* $TORCHROOT/usr/lib/.<br />
ln -sr /usr/lib64 $TORCHROOT/lib64<br />
ln -s $TORCHROOT/usr/lib ${TORCHROOT}/usr/lib64<br />
fi<br />
<br />
</nowiki>}}<br />
<br />
After running the script as root, Tor can be launched in the [[chroot]] with the command:<br />
<br />
# chroot --userspec=tor:tor /opt/torchroot /usr/bin/tor<br />
<br />
or if you use systemd overload the service:<br />
<br />
{{hc|/etc/systemd/system/tor.service.d/chroot.conf|2=<nowiki><br />
[Service]<br />
User=root<br />
ExecStart=<br />
ExecStart=/usr/bin/sh -c "chroot --userspec=tor:tor /opt/torchroot /usr/bin/tor -f /etc/tor/torrc"<br />
KillSignal=SIGINT<br />
</nowiki>}}<br />
<br />
== Running Tor in a systemd-nspawn container with a virtual network interface ==<br />
In this example we will create a [[systemd-nspawn]] container named {{ic|tor-exit}} with a virtual macvlan network interface.<br />
<br />
See [[Systemd-nspawn]] and [[systemd-networkd]] for full documentation.<br />
<br />
=== Host installation and configuration ===<br />
<br />
In this example the container will reside in {{ic|/srv/container}}:<br />
# mkdir /srv/container/tor-exit<br />
<br />
[[Install]] the {{Pkg|arch-install-scripts}}.<br />
<br />
Install {{Grp|base}}, {{Pkg|tor}} and {{Pkg|arm}} and deselect {{Pkg|linux}} as per [[Systemd-nspawn#Installation with pacstrap]]:<br />
# pacstrap -i -c -d /srv/container/tor-exit base tor arm<br />
<br />
Create directory if it does not exist:<br />
# mkdir /var/lib/container<br />
<br />
Symlink to register the container on the host, as per [[Systemd-nspawn#Boot your container at your machine startup]]:<br />
# ln -s /srv/container/tor-exit /var/lib/container/tor-exit<br />
<br />
==== Virtual network interface ====<br />
<br />
Create a Dropin directory for the container service:<br />
# mkdir /etc/systemd/system/systemd-nspawn@tor-exit.service.d<br />
<br />
{{hc|/etc/systemd/system/systemd-nspawn@tor-exit.service.d/tor-exit.conf|<nowiki><br />
[Service]<br />
ExecStart=<br />
ExecStart=/usr/bin/systemd-nspawn --quiet --keep-unit --boot --link-journal=guest --network-macvlan=$INTERFACE --private-network --directory=/var/lib/container/%i<br />
LimitNOFILE=32768<br />
</nowiki>}}<br />
<br />
{{ic|<nowiki>--network-macvlan=$INTERFACE --private-network</nowiki>}} automagically creates a macvlan named {{ic|mv-$INTERFACE}} inside the container, which is not visible from the host. {{ic|--private-network}} is implied by {{ic|<nowiki>--network-macvlan=</nowiki>}} according to {{ic|man systemd-nspawn}}. <br />
<br />
{{ic|<nowiki>LimitNOFILE=32768</nowiki>}} per [[#Raise maximum number of open file descriptors]].<br />
<br />
Setup [[systemd-networkd]] according to your network in {{ic|/srv/container/tor-exit/etc/systemd/network/mv-$INTERFACE.network}}.<br />
<br />
==== Start and enable systemd-nspawn ====<br />
<br />
[[Start]] and enable {{ic|systemd-nspawn@tor-exit.service}}.<br />
<br />
=== Container configuration ===<br />
{{ic|# machinectl login tor-exit}} login to the container, see [[Systemd-nspawn#machinectl command]].<br />
<br />
{{ic|# mv /srv/container/tor-exit/etc/securetty /srv/container/tor-exit/etc/securetty.bak}} if you get the error described in [[Systemd-nspawn#Troubleshooting]].<br />
<br />
==== Start and enable systemd-networkd ====<br />
<br />
[[Start]] and enable {{ic|systemd-networkd.service}}. {{ic|networkctl}} displays if {{ic|systemd-networkd}} is correctly configured.<br />
<br />
=== Configure Tor ===<br />
See [[#Running a Tor server]].<br />
{{Tip|It is easier to edit files in the container from the host with your normal editor.}}<br />
<br />
== Usage ==<br />
<br />
Start/enable {{ic|tor.service}} [[systemd#Using units|using systemd]]. Alternatively, launch it from {{ic|vidalia}}, or with {{ic|sudo -u tor /usr/bin/tor}}.<br />
<br />
To use a program over tor, configure it to use 127.0.0.1 or localhost as a SOCKS5 proxy, with port 9050 (plain tor with standard settings) or port 9051 (configuration with '''vidalia''', standard settings).<br />
To check if Tor is functioning properly visit the [https://check.torproject.org/ Tor], [http://serifos.eecs.harvard.edu/cgi-bin/ipaddr.pl?tor=1 Harvard] or [https://torcheck.xenobite.eu/ Xenobite.eu] websites.<br />
<br />
== Web browsing ==<br />
<br />
The Tor Project currently only supports web browsing with tor through the [https://aur.archlinux.org/packages/?K=tor-browser- Tor Browser Bundle], which can be downloaded from the AUR. It is built with a patched version of the Firefox extended support releases. Tor can also be used with regular [[Firefox]], [[Chromium]] and other browsers, but this is [https://www.torproject.org/docs/faq.html.en#TBBOtherBrowser not recommended] by the Tor Project.<br />
<br />
{{Tip|For makepkg to verify the signature on the AUR source tarball download for TBB, [https://www.torproject.org/docs/signing-keys.html.en signing keys from the Tor Project] (currently 2E1AC68ED40814E0) must be downloaded from the keyservers and added to the user gpg keyring with:<br />
$ gpg --keyserver hkp://pool.sks-keyservers.net --recv-keys 2E1AC68ED40814E0<br />
}}<br />
<br />
=== Firefox ===<br />
<br />
In ''Preferences > Advanced > Network tab > Settings'' manually set Firefox to use the SOCKS proxy {{ic|localhost}} with port {{ic|9050}}. Then you must type {{ic|about:config}} into the address bar and ''void your warranty''. Change {{ic|network.proxy.socks_remote_dns}} to {{ic|true}} and restart the browser. This channels all DNS requests through TOR's socks proxy.<br />
<br />
=== Chromium ===<br />
<br />
You can simply run:<br />
<br />
$ chromium --proxy-server="socks://localhost:9050"<br />
<br />
Just as with Firefox, you can setup a fast switch for example through [https://chrome.google.com/webstore/detail/dpplabbmogkhghncfbfdeeokoefdjegm Proxy SwitchySharp].<br />
<br />
Once installed enter in its configuration page. Under the tab ''Proxy Profiles'' add a new profile ''Tor'', if ticked untick the option ''Use the same proxy server for all protocols'', then add ''localhost'' as SOCKS Host, ''9050'' to the respective port and select ''SOCKS v5''.<br />
<br />
Optionally you can enable the quick switch under the ''General'' tab to be able to switch beetween normal navigation and Tor network just by left-clicking on the Proxy SwitchySharp's icon.<br />
<br />
=== Luakit ===<br />
<br />
{{warning|It will not be hard for an observer to identify you by the rare user-agent string, and there may be further issues with Flash, JavaScript or similar.}}<br />
<br />
You can simply run:<br />
<br />
$ torify luakit<br />
<br />
== HTTP proxy ==<br />
<br />
Tor can be used with an HTTP proxy like [[Polipo]] or [[Privoxy]], however the Tor dev team recommends using the SOCKS5 library since browsers directly support it.<br />
<br />
=== Firefox ===<br />
<br />
The [https://addons.mozilla.org/en-us/firefox/addon/foxyproxy-standard/ FoxyProxy] add-on allows you to specify multiple proxies for different URLs or for all your browsing. After restarting Firefox manually set Firefox to port {{ic|8118}} on {{ic|localhost}}, which is where [[Polipo]] or [[Privoxy]] are running. These settings can be access under ''Add > Standard proxy type''. Select a proxy label (e.g Tor) and enter the port and host into the ''HTTP Proxy'' and ''SSL Proxy'' fields. To check if Tor is functioning properly visit the [https://check.torproject.org/ Tor Check] website and toggle Tor.<br />
<br />
=== Polipo ===<br />
<br />
The Tor Project has created a custom [https://gitweb.torproject.org/torbrowser.git/blob_plain/1ffcd9dafb9dd76c3a29dd686e05a71a95599fb5:/build-scripts/config/polipo.conf Polipo configuration file] to prevent potential problems with Polipo as well to provide better anonymity.<br />
<br />
Keep in mind that Polipo is not required if you can use a SOCKS 5 proxy, which Tor starts automatically on port 9050. If you want to use [[Chromium]] with Tor, you do not need the Polipo package (see: [[#Chromium]]).<br />
<br />
=== Privoxy ===<br />
<br />
You can also use this setup in other applications like messaging (e.g. Jabber, IRC). Applications that support HTTP proxies you can connect to Privoxy (i.e. {{ic|127.0.0.1:8118}}). To use SOCKS proxy directly, you can point your application at Tor (i.e. {{ic|127.0.0.1:9050}}). A problem with this method though is that applications doing DNS resolves by themselves may leak information. Consider using Socks4A (e.g. with Privoxy) instead.<br />
<br />
== Instant messaging ==<br />
<br />
In order to use an IM client with tor, we do not need an http proxy like [[polipo]]/[[privoxy]]. We will be using tor's daemon directly which listens to port 9050 by default.<br />
<br />
=== Pidgin ===<br />
<br />
You can set up Pidgin to use Tor globally, or per account. To use Tor globally, go to Tools -> Preferences -> Proxy. To use Tor for specific accounts, go to ''Accounts > Manage Accounts'', select the desired account, click Modify, then go to the Proxy tab. The proxy settings are as follows:<br />
<br />
Proxy type SOCKS5<br />
Host 127.0.0.1<br />
Port 9150<br />
<br />
Note that [https://trac.torproject.org/projects/tor/ticket/8135 some time in 2013] the Port has changed from 9050 to 9150 if you use the Tor Browser Bundle. Try the other value if you receive a "Connection refused" message.<br />
<br />
== Irssi ==<br />
<br />
{{Out of date|{{ic|cap_sasl.pl}} is broken with ''perl'' 5.20; SSL does also not work with {{ic|torsocks}}}}<br />
<br />
Freenode recommends connecting to {{ic|.onion}} directly. It also requires charybdis and ircd-seven's SASL mechanism for identifying to nickserv during connection; see [[Irssi#Authenticating with SASL]]. Start irssi:<br />
<br />
$ torsocks irssi<br />
<br />
Set your identification to nickserv, which will be read when connecting. Supported mechanisms are ECDSA-NIST256P-CHALLENGE (see [https://github.com/atheme/ecdsatool/blob/master/cap_sasl.pl ecdsatool]) and PLAIN. DH-BLOWFISH is [https://freenode.net/sasl/sasl-irssi.shtml no longer supported].<br />
<br />
/sasl set ''network'' ''username'' ''password'' ''mechanism''<br />
<br />
Disable CTCP and DCC and set a different hostname to prevent information disclosure: [https://encrypteverything.ca/IRC_Anonymity_Guide]<br />
<br />
/ignore * CTCPS<br />
/ignore * DCC<br />
/set hostname ''fake_host''<br />
<br />
Connect to Freenode:<br />
<br />
/connect -network ''network'' frxleqtzgvwkv7oz.onion<br />
<br />
For more information check [http://freenode.net/irc_servers.shtml#tor Accessing freenode Via Tor], [http://freenode.net/sasl/README.txt SASL README] or [https://trac.torproject.org/projects/tor/wiki/doc/TorifyHOWTO/IrcSilc IRC/SILC Wiki article].<br />
<br />
== Pacman ==<br />
<br />
Pacman download operations (repository DBs, packages, and public keys) can be done using the Tor network. Though relatively extreme, this measure is useful to prevent an adversary (most likely at one's LAN or the mirror) from knowing a subset of the packages you have installed, at the cost of longer latency, lower throughput, possible suspicion, and possible failure (if Tor is being filtered via the current connection).<br />
<br />
{{Warning|It would be arguably simpler for an adversary, specifically one who desires to indiscriminately disseminate malware, to perform his/her activity by deploying malicious Tor exit node(s). Always use signed packages and verify new public keys by out-of-band means.}}<br />
<br />
{{hc|/etc/pacman.conf|<br />
...<br />
<nowiki>XferCommand = /usr/bin/curl --socks5-hostname localhost:9050 -C - -f %u > %o</nowiki><br />
...}}<br />
<br />
== Running a Tor server ==<br />
<br />
The Tor network is reliant on people contributing bandwidth. There are several ways to contribute to the network.<br />
<br />
=== Running a Tor bridge ===<br />
<br />
A Tor bridge is a Tor relay that is not listed in the public Tor directory, thus making it possible for people to connect to the Tor network when governments or ISPs block all public Tor relays.<br />
<br />
==== Configuration ====<br />
<br />
According to https://www.torproject.org/docs/bridges , make your torrc be just these four lines:<br />
<br />
SocksPort 0<br />
ORPort 443<br />
BridgeRelay 1<br />
Exitpolicy reject *:*<br />
<br />
==== Troubleshooting ====<br />
<br />
If you get "Could not bind to 0.0.0.0:443: Permission denied" errors on startup, you will need to pick a higher ORPort (e.g. 8080), or perhaps [http://www.portforward.com/ forward the port] in your router.<br />
<br />
=== Running a Tor relay ===<br />
<br />
This means that your machine will act as an entry node or forwarding relay (depending on the relay's online time) and - opposing to the bridge relay - it will be listed in the public Tor directory. Your IP address will be publicly visible in the Tor directory but the relay will only forward to other relays or Tor exit nodes, not directly to the internet.<br />
<br />
==== Configuration ====<br />
<br />
You should at least share 20KiB/s:<br />
<br />
Nickname ''tornickname''<br />
ORPort 9001 # This TCP-Port has to be opened/forwarded in your Firewall<br />
BandwidthRate 20 KB # Throttle traffic to 20KB/s<br />
BandwidthBurst 50 KB # But allow bursts up to 50KB/s<br />
<br />
Disallow exits from your relay:<br />
<br />
ExitPolicy reject *:*<br />
<br />
=== Running a Tor exit node ===<br />
<br />
Any requests from a Tor user to the regular internet obviously need to exit the network somewhere, and exit nodes provide this vital service. To the accessed host, the request will appear as having originated from your machine. This means that running an exit node is generally considered more legally onerous than running other forms of Tor relays. Before becoming an exit relay, you may want to read [https://blog.torproject.org/running-exit-node Tips for Running an Exit Node With Minimal Harrasment].<br />
<br />
==== Configuration ====<br />
<br />
Using the torrc, you can configure which services you wish to allow through your exit node.<br />
Allow all traffic:<br />
<br />
ExitPolicy accept *:*<br />
<br />
Allow only irc ports 6660-6667 to exit from node:<br />
<br />
ExitPolicy accept *:6660-6667,reject *:* # Allow irc ports but no more<br />
<br />
By default, Tor will block certain ports. You can use the torrc to overide this.<br />
<br />
ExitPolicy accept *:119 # Accept nntp as well as default exit policy<br />
<br />
==== +100Mbps Exit Relay configuration example ====<br />
<br />
If you run a fast exit relay (+100Mbps) with {{ic|ORPort 443}} and {{ic|DirPort 80}} (as recommended in [http://www.torproject.org/docs/tor-relay-debian.html.en#after Configuring a Tor relay on Debian/Ubuntu]) the following configuration changes might serve as inspiration to setup Tor alongside [[iptables]] firewall, [[Haveged]] to increase system entropy and [[pdnsd]] as DNS cache. It is important to ''first'' read [http://www.torproject.org/docs/tor-relay-debian.html.en#after Configuring a Tor relay on Debian/Ubuntu]. <br />
<br />
{{Note|See [[#Running Tor in a systemd-nspawn container with a virtual network interface]] for instructions to install Tor in a {{ic|systemd-nspawn}} container. [[Haveged]] should be installed on the container host.}}<br />
<br />
===== Tor =====<br />
====== Raise maximum number of open file descriptors ======<br />
To handle more than 8192 connections {{ic|LimitNOFILE}} can be raised to 32768 as per [https://www.torproject.org/docs/faq.html.en#PackagedTor Tor FAQ].<br />
<br />
{{hc|/etc/systemd/system/tor.service.d/increase-file-limits.conf|<nowiki><br />
[Service]<br />
LimitNOFILE=32768<br />
</nowiki>}}<br />
<br />
To succesfully raise {{ic|nofile}} limit, you may also have to append the following:<br />
<br />
{{hc|/etc/security/limits.conf|<nowiki><br />
...<br />
tor soft nofile 32768<br />
tor hard nofile 32768<br />
@tor soft nofile 32768<br />
@tor hard nofile 32768<br />
</nowiki>}}<br />
<br />
Check if the {{ic|nofile}} (filedescriptor) limit is succesfully raised with {{ic|# sudo -u tor 'ulimit -Hn'}} or {{ic|# sudo -u tor bash}} and {{ic|# ulimit -Hn}}.<br />
<br />
====== Start tor.service as root to bind Tor to privileged ports ======<br />
To bind Tor to privileged ports the service must be started as root. Please specify {{ic|User tor}} option in {{ic|/etc/tor/torrc}}.<br />
<br />
{{hc|/etc/systemd/system/tor.service.d/start-as-root.conf|<nowiki><br />
[Service]<br />
User=root<br />
</nowiki>}}<br />
<br />
====== Tor configuration ======<br />
To listen on Port 80 and 443 the service need to be started as {{ic|root}} as described in [[#Start tor.service as root to bind Tor to privileged ports]].<br />
Use the {{ic|User tor}} option in {{ic|/etc/tor/torrc}} to properly reduce Tor’s privileges.<br />
<br />
{{hc|/etc/tor/torrc|<nowiki><br />
SocksPort 0 ## Pure relay configuration without local socks proxy<br />
<br />
Log notice stdout ## Default Tor behavior<br />
<br />
ControlPort 9051 ## For arm connection<br />
CookieAuthentication 1 ## For arm connection<br />
<br />
ORPort 443 ## Service must be started as root<br />
<br />
Address $IP ## IP or FQDN<br />
Nickname $NICKNAME ## Nickname displayed in </nowiki>[https://onionoo.torproject.org/ Onionoo]<nowiki><br />
<br />
RelayBandwidthRate 500 Mbits ## bytes|KBytes|MBytes|GBytes|KBits|MBits|GBits<br />
RelayBandwidthBurst 1000 MBits ## bytes|KBytes|MBytes|GBytes|KBits|MBits|GBits<br />
<br />
ContactInfo $E-MAIL - $BTC-ADDRESS ## See </nowiki>[https://oniontip.com/ OnionTip]<nowiki><br />
<br />
DirPort 80 ## Service must be started as root<br />
DirPortFrontPage /etc/tor/tor-exit-notice.html ## Original: </nowiki>[https://gitweb.torproject.org/tor.git/plain/contrib/operator-tools/tor-exit-notice.html https://gitweb.torproject.org/tor.git/plain/contrib/operator-tools/tor-exit-notice.html]<nowiki><br />
<br />
MyFamily $($KEYID),$($KEYID)... ## Remember $ in front of keyid(s) ;)<br />
<br />
ExitPolicy reject XXX.XXX.XXX.XXX/XX:* ## Block domain of public IP in addition to std. exit policy<br />
<br />
User tor ## Return to tor user after service started as root to listen on privileged ports<br />
<br />
DisableDebuggerAttachment 0 ## For arm connection<br />
<br />
### Performance related options ###<br />
AvoidDiskWrites 1 ## Reduce wear on SSD<br />
DisableAllSwap 1 ## Service must be started as root<br />
HardwareAccel 1 ## Look for OpenSSL hardware cryptographic support<br />
NumCPUs 2 ## Only start two threads<br />
</nowiki>}}<br />
<br />
This configuration is based on the [https://www.torproject.org/docs/tor-manual.html.en Tor Manual]. <br />
<br />
Tor opens a socks proxy on port 9050 by default -- even if you do not configure one. Set {{ic|SocksPort 0}} if you plan to run Tor only as a relay, and not make any local application connections yourself.<br />
<br />
{{ic|Log notice stdout}} changes logging to stdout, which is also the Tor default.<br />
{{ic|ControlPort 9051}}, {{ic|CookieAuthentication 1}} and {{ic|DisableDebuggerAttachment 0}} enables {{Pkg|arm}} to connect to Tor and display connections.<br />
<br />
{{ic|ORPort 443}} and {{ic|DirPort 80}} lets Tor listen on port 443 and 80 and {{ic|DirPortFrontPage}} displays the [https://gitweb.torproject.org/tor.git/plain/contrib/operator-tools/tor-exit-notice.html tor-exit-notice.html] on port 80.<br />
<br />
{{ic|ExitPolicy reject XXX.XXX.XXX.XXX/XX:*}} should reflect your public IP and netmask, which can be obtained with the command {{ic|# ip addr}}, so exit connections cannot connect to the host or neighboring machines public IP and circumvent firewalls.<br />
<br />
{{ic|AvoidDiskWrites 1}} reduces disk writes and wear on SSD.<br />
{{ic|DisableAllSwap 1}} "will attempt to lock all current and future memory pages, so that memory cannot be paged out". <br />
<br />
If {{ic|<nowiki># cat /proc/cpuinfo | grep aes</nowiki>}} returns that your CPU supports AES instructions and {{ic|<nowiki># lsmod | grep aes</nowiki>}} returns that the module is loaded, you can specify {{ic|HardwareAccel 1}} which tries "to use built-in (static) crypto hardware acceleration when available", see [http://www.torservers.net/wiki/setup/server#aes-ni_crypto_acceleration http://www.torservers.net/wiki/setup/server#aes-ni_crypto_acceleration].<br />
<br />
{{ic|ORPort 443}}, {{ic|DirPort 80}} and {{ic|DisableAllSwap 1}} require that you start the Tor service as {{ic|root}} as described in [[#Start tor.service as root to bind Tor to privileged ports]].<br />
Use the {{ic|User tor}} option to properly reduce Tor’s privileges.<br />
<br />
===== arm =====<br />
If {{ic|ControlPort 9051}} and {{ic|CookieAuthentication 1}} is specified in {{ic|/etc/tor/torrc}}, {{Pkg|arm}} can be started with {{ic|sudo -u tor arm}}.<br />
If you want to watch Tor connections in {{Pkg|arm}} {{ic|DisableDebuggerAttachment 0}} must also be specified.<br />
<br />
===== iptables =====<br />
Setup and learn to use [[iptables]]. Instead of being a [[Simple stateful firewall]] where connection tracking would have to track thousands of connections on a tor exit relay this firewall configuration is stateless.<br />
<br />
{{hc|/etc/iptables/iptables.rules|<nowiki><br />
*raw<br />
-A PREROUTING -j NOTRACK<br />
-A OUTPUT -j NOTRACK<br />
COMMIT<br />
<br />
*filter<br />
:INPUT DROP [0:0]<br />
:FORWARD DROP [0:0]<br />
:OUTPUT ACCEPT [0:0]<br />
-A INPUT -p tcp ! --syn -j ACCEPT<br />
-A INPUT -p udp -j ACCEPT<br />
-A INPUT -p icmp -j ACCEPT<br />
-A INPUT -p tcp --dport 443 -j ACCEPT<br />
-A INPUT -p tcp --dport 80 -j ACCEPT<br />
-A INPUT -i lo -j ACCEPT<br />
COMMIT<br />
</nowiki>}}<br />
<br />
{{ic|-A PREROUTING -j NOTRACK}} and {{ic|-A OUTPUT -j NOTRACK}} disables connection tracking in the {{ic|raw}} table.<br />
<br />
{{ic|:INPUT DROP [0:0]}} is the default {{ic|INPUT}} target and drops input traffic we do not specifically {{ic|ACCEPT}}.<br />
<br />
{{ic|:FORWARD DROP [0:0]}} is the default {{ic|FORWARD}} target and only relevant if the host is a normal router, not when the host is an onion router.<br />
<br />
{{ic|:OUTPUT ACCEPT [0:0]}} is the default {{ic|OUTPUT}} target and allows all outgoing connections.<br />
<br />
{{ic|-A INPUT -p tcp ! --syn -j ACCEPT}} allow already established incoming TCP connections per the rules below and TCP connections established from the exit node.<br />
<br />
{{ic|-A INPUT -p udp -j ACCEPT}} allow all incoming UDP connections because we do not use connection tracking.<br />
<br />
{{ic|-A INPUT -p icmp -j ACCEPT}} allow [https://en.wikipedia.org/wiki/Internet_Control_Message_Protocol ICMP].<br />
<br />
{{ic|-A INPUT -p tcp --dport 443 -j ACCEPT}} allow incoming connections to the {{ic|ORPort}}.<br />
<br />
{{ic|-A INPUT -p tcp --dport 80 -j ACCEPT}} allow incoming connections to the {{ic|DirPort}}.<br />
<br />
{{ic|-A INPUT -i lo -j ACCEPT}} allows all connections on the loopback interface.<br />
<br />
===== Haveged =====<br />
See [[Haveged]] to decide if your system generates enough entropy to handle a lot of OpenSSL connections, see [http://www.issihosts.com/haveged/ haveged - A simple entropy daemon] and [http://www.digitalocean.com/community/tutorials/how-to-setup-additional-entropy-for-cloud-servers-using-haveged how-to-setup-additional-entropy-for-cloud-servers-using-haveged] for documentation.<br />
<br />
===== pdnsd =====<br />
<br />
{{Warning|This configuration assumes your network DNS resolver is trusted (uncensored).}}<br />
<br />
You can use [[pdnsd]] to cache DNS queries locally, so the exit relay can resolve DNS faster and the exit relay does not forward all DNS queries to an external DNS recursor.<br />
<br />
{{hc|/etc/pdnsd.conf|<nowiki><br />
...<br />
perm_cache=102400 ## (Default value)*100 = 1MB * 100 = 100MB<br />
...<br />
server {<br />
label= "resolvconf";<br />
file = "/etc/pdnsd-resolv.conf"; ## Preferably do not use /etc/resolv.conf<br />
timeout=4; ## Server timeout, this may be much shorter than the global timeout option.<br />
uptest=query; ## Test availability using empty DNS queries. <br />
query_test_name="."; ## To be used if remote servers ignore empty queries.<br />
interval=10m; ## Test every 10 minutes.<br />
purge_cache=off; ## Ignore TTL.<br />
edns_query=yes; ## Use EDNS for outgoing queries to allow UDP messages larger than 512 bytes. May cause trouble with some legacy systems.<br />
preset=off; ## Assume server is down before uptest.<br />
}<br />
...<br />
</nowiki>}}<br />
<br />
This configuration stub shows how to cache queries to your normal DNS recursor locally and increase pdnsd cache size to 100MB.<br />
<br />
====== Uncensored DNS ======<br />
<br />
If your local DNS recursor is in some way censored or interferes with DNS queries, see [[Resolv.conf#Alternative DNS servers]] for alternatives and add them in a seperate server-section in {{ic|/etc/pdnsd.conf}} as per [[Pdnsd#DNS servers]].<br />
<br />
== TorDNS ==<br />
<br />
The Tor 0.2.x series provides a built-in DNS forwarder. To enable it add the following lines to the Tor configuration file and restart the daemon:<br />
<br />
{{hc|/etc/tor/torrc|<br />
DNSPort 9053<br />
AutomapHostsOnResolve 1<br />
AutomapHostsSuffixes .exit,.onion<br />
}}<br />
<br />
This will allow Tor to accept DNS requests (listening on port 9053 in this example) like a regular DNS server, and resolve the domain via the Tor network. A downside is that it is only able to resolve DNS queries for A-records; MX and NS queries are never answered. For more information see this [https://techstdout.boum.org/TorDns/ Debian-based introduction].<br />
<br />
DNS queries can also be performed through a command line interface by using {{Ic|<nowiki>tor-resolve</nowiki>}}. For example:<br />
<br />
{{bc|<br />
$ tor-resolve archlinux.org<br />
66.211.214.131<br />
}}<br />
<br />
=== Using TorDNS for all DNS queries ===<br />
<br />
It is possible to configure your system, if so desired, to use TorDNS for ''all'' queries your system makes, regardless of whether or not you eventually use Tor to connect to your final destination. To do this, configure your system to use 127.0.0.1 as its DNS server and edit the 'DNSPort' line in {{ic|/etc/tor/torrc}} to show:<br />
<br />
DNSPort 53<br />
<br />
Alternatively, you can use a local caching DNS server, such as [[dnsmasq]] or [[pdnsd]], which will also compensate for TorDNS being a little slower than traditional DNS servers. The following instructions will show how to set up ''dnsmasq'' for this purpose.<br />
<br />
Change the tor setting to listen for the DNS request in port 9053 and install {{Pkg|dnsmasq}}.<br />
<br />
Modify its configuration file so that it contains:<br />
<br />
{{hc|/etc/dnsmasq.conf|<br />
no-resolv<br />
server&#61;127.0.0.1#9053<br />
listen-address&#61;127.0.0.1<br />
}}<br />
<br />
These configurations set dnsmasq to listen only for requests from the local computer, and to use TorDNS at its sole upstream provider. It is now neccessary to edit {{ic|/etc/resolv.conf}} so that your system will query only the dnsmasq server.<br />
<br />
{{hc|/etc/resolv.conf|<br />
nameserver 127.0.0.1<br />
}}<br />
<br />
Start the '''dnsmasq''' daemon.<br />
<br />
Finally if you use ''dhcpd'' you would need to change its settings to that it does not alter the resolv configuration file. Just add this line in the configuration file:<br />
<br />
{{hc|/etc/dhcpcd.conf|<br />
nohook resolv.conf<br />
}}<br />
<br />
If you already have an ''nohook'' line, just add '''resolv.conf''' separated with a comma.<br />
<br />
== Torify ==<br />
<br />
'''torify''' will allow you use an application via the Tor network without the need to make configuration changes to the application involved. From the man page:<br />
<br />
''torify is a simple wrapper that attempts to find the best underlying Tor wrapper available on a system. It calls torsocks with a tor specific configuration file.''<br />
<br />
Usage example:<br />
<br />
$ torify elinks checkip.dyndns.org<br />
<nowiki>$ torify wget -qO- https://check.torproject.org/ | grep -i congratulations</nowiki><br />
<br />
Torify ''will not'', however, perform DNS lookups through the Tor network. A workaround is to use it in conjunction with {{ic|<nowiki>tor-resolve</nowiki>}} (described above). In this case, the procedure for the first of the above examples would look like this:<br />
<br />
{{hc|$ tor-resolve checkip.dyndns.org|<br />
208.78.69.70<br />
}}<br />
<br />
$ torify elinks 208.78.69.70<br />
<br />
== Transparent Torification ==<br />
<br />
In some cases it is more secure and often easier to transparently torify an entire system instead of configuring individual applications to use Tor's socks port, not to mention preventing DNS leaks. Transparent torification can be done with [[iptables]] in such a way that all outbound packets are redirected through Tor's ''TransPort'', except the Tor traffic itself. Once in place, applications do not need to be configured to use Tor, though Tor's ''SocksPort'' will still work. This also works for DNS via Tor's ''DNSPort'', but realize that Tor only supports TCP, thus UDP packets other than DNS cannot be sent through Tor and therefore must be blocked entirely to prevent leaks. Using iptables to transparently torify a system affords comparatively strong leak protection, but it is not a substitute for virtualized torification applications such as Whonix, or TorVM [https://www.whonix.org/wiki/Comparison_with_Others]. Transparent torification also will not protect against fingerprinting attacks on its own, so it is recommended to use it in conjunction with the Tor Browser (search the AUR for the version you want: https://aur.archlinux.org/packages/?K=tor-browser) or to use an amnesic solution like [http://tails.boum.org/ Tails] instead. Applications can still learn your computer's hostname, MAC address, serial number, timezone, etc. and those with root privileges can disable the firewall entirely. In other words, transparent torification with iptables protects against accidental connections and DNS leaks by misconfigured software, it is not sufficient to protect against malware or software with serious security vulnerabilities.<br />
<br />
To enable transparent torification, use the following file for {{ic|iptables-restore}} and {{ic|ip6tables-restore}} (internally used by [[systemd]]'s {{ic|iptables.service}} and {{ic|ip6tables.service}}).<br />
<br />
{{Note|<br />
This file uses the nat table to force outgoing connections through the TransPort or DNSPort, and blocks anything it cannot torrify.<br />
<br />
* Now using {{ic|--ipv6}} and {{ic|--ipv4}} for protocol specific changes. {{ic|iptables-restore}} and {{ic|ip6tables-restore}} can now use the same file.<br />
* Where --ipv6 or --ipv4 is explicitly defined, {{ic|ip*tables-restore}} will ignore the rule if it is not for the correct protocol.<br />
* {{ic|ip6tables}} does not support {{ic|--reject-with}}. Make sure your torrc contains the following lines:<br />
<br />
SocksPort 9050<br />
DNSPort 5353<br />
TransPort 9040<br />
<br />
See {{ic|man iptables}}.<br />
}}<br />
<br />
{{hc|/etc/iptables/iptables.rules|<br />
<br />
*nat<br />
:PREROUTING ACCEPT [6:2126]<br />
:INPUT ACCEPT [0:0]<br />
:OUTPUT ACCEPT [17:6239]<br />
:POSTROUTING ACCEPT [6:408]<br />
<br />
-A PREROUTING ! -i lo -p udp -m udp --dport 53 -j REDIRECT --to-ports 5353<br />
-A PREROUTING ! -i lo -p tcp -m tcp --tcp-flags FIN,SYN,RST,ACK SYN -j REDIRECT --to-ports 9040<br />
-A OUTPUT -o lo -j RETURN<br />
--ipv4 -A OUTPUT -d 192.168.0.0/16 -j RETURN<br />
-A OUTPUT -m owner --uid-owner "tor" -j RETURN<br />
-A OUTPUT -p udp -m udp --dport 53 -j REDIRECT --to-ports 5353<br />
-A OUTPUT -p tcp -m tcp --tcp-flags FIN,SYN,RST,ACK SYN -j REDIRECT --to-ports 9040<br />
COMMIT<br />
<br />
*filter<br />
:INPUT DROP [0:0]<br />
:FORWARD DROP [0:0]<br />
:OUTPUT DROP [0:0]<br />
<br />
-A INPUT -i lo -j ACCEPT<br />
-A INPUT -p icmp -j ACCEPT<br />
-A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT<br />
--ipv4 -A INPUT -p tcp -j REJECT --reject-with tcp-reset<br />
--ipv4 -A INPUT -p udp -j REJECT --reject-with icmp-port-unreachable<br />
--ipv4 -A INPUT -j REJECT --reject-with icmp-proto-unreachable<br />
--ipv6 -A INPUT -j REJECT<br />
--ipv4 -A OUTPUT -d 127.0.0.0/8 -j ACCEPT<br />
--ipv4 -A OUTPUT -d 192.168.0.0/16 -j ACCEPT<br />
--ipv6 -A OUTPUT -d ::1/8 -j ACCEPT<br />
-A OUTPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT<br />
-A OUTPUT -m owner --uid-owner "tor" -j ACCEPT<br />
--ipv4 -A OUTPUT -j REJECT --reject-with icmp-port-unreachable<br />
--ipv6 -A OUTPUT -j REJECT<br />
COMMIT<br />
}}<br />
<br />
This file also works for ip6tables-restore, so you may symlink it:<br />
<br />
ln -s /etc/iptables/iptables.rules /etc/iptables/ip6tables.rules<br />
<br />
Then make sure Tor is running, and start iptables and ip6tables:<br />
<br />
systemctl {enable,start} tor iptables ip6tables<br />
<br />
You may want to add {{ic|1=Requires=iptables.service}} and {{ic|1=Requires=ip6tables.service}} to whatever systemd unit logs your user in (most likely a [[display manager]]), to prevent any user processes from being started before the firewall up. See [[systemd]].<br />
<br />
== Troubleshooting ==<br />
<br />
=== Problem with user value ===<br />
<br />
If the '''tor''' daemon failed to start, then run the following command as root (or use sudo)<br />
<br />
# tor<br />
<br />
If you get the following error<br />
<br />
May 23 00:27:24.624 [warn] Error setting groups to gid 43: "Operation not permitted".<br />
May 23 00:27:24.624 [warn] If you set the "User" option, you must start Tor as root.<br />
May 23 00:27:24.624 [warn] Failed to parse/validate config: Problem with User value. See logs for details.<br />
May 23 00:27:24.624 [err] Reading config failed--see warnings above.<br />
<br />
Then it means that the problem is with the User value, which likely means that one or more files or directories in your {{ic|/var/lib/tor}} directory is not owned by tor. This can be determined by using the following find command:<br />
<br />
find /var/lib/tor/ ! -user tor<br />
<br />
Any files or directories listed in the output from this command needs to have its ownership changed. This can be done individually for each file like so:<br />
<br />
chown tor:tor /var/lib/tor/filename<br />
<br />
Or to change everything listed by the above find example, modify the command to this:<br />
<br />
find /var/lib/tor/ ! -user tor -exec chown tor:tor {} \;<br />
<br />
Tor should now start up correctly.<br />
<br />
Still if you cannot start the tor service, run the service using root (this will switch back to the tor user). To do this, change the user name in the {{ic|/etc/tor/torrc}} file:<br />
<br />
User tor<br />
<br />
Now modify the systemd's tor service file {{ic|/usr/lib/systemd/system/tor.service}} as follows<br />
<br />
[Service]<br />
User=root<br />
Group=root<br />
Type=simple<br />
<br />
The process will be run as tor user. For this purpose change user and group ID to tor and also make it writable:<br />
<br />
# chown -R tor:tor /var/lib/tor/<br />
# chmod -R 755 /var/lib/tor<br />
<br />
Now save changes and run the daemon:<br />
<br />
# systemctl --system daemon-reload<br />
# systemctl start tor.service<br />
<br />
== See also ==<br />
<br />
* [https://www.torproject.org/docs/tor-doc-unix.html.en Running the Tor client on Linux/BSD/Unix]<br />
* [https://trac.torproject.org/projects/tor/wiki#Unixish Unix-based Tor Articles]<br />
* [https://trac.torproject.org/projects/tor/wiki/doc/SupportPrograms Software commonly integrated with Tor]<br />
* [https://www.torproject.org/docs/tor-hidden-service.html.en How to set up a Tor ''Hidden Service'']<br />
* [https://trac.torproject.org/projects/tor/wiki/doc/PluggableTransports List of tor pluggable transports for obfuscating tor's traffic]</div>Zekesonxxhttps://wiki.archlinux.org/index.php?title=Amateur_radio&diff=399952Amateur radio2015-09-15T11:37:37Z<p>Zekesonxx: /* WSPR */ fixed a typo'd wikipedia link</p>
<hr />
<div>[[Category:Telephony and voice]]<br />
[[ja:アマチュア無線]]<br />
{{Related articles start}}<br />
{{Related|GNU Radio}}<br />
{{Related|RTL-SDR}}<br />
{{Related articles end}}<br />
<br />
Amateur radio enthusiasts (sometimes called ham radio operators or "hams") have been at the forefront of experimentation and development since the earliest days of radio. A wide variety of communication modes are used on a vast range of frequencies that span the electromagnetic spectrum. <br />
This page lists software related to amateur radio that can be found in the [[AUR]]. Some of it is stand-alone while the various digital communication applications require interfacing to radio hardware and possibly the computer soundcard. Interface hardware can be purchased from vendors or home-built. <br />
<br />
{{Warning|International treaties require that users of amateur radio frequencies have a government-issued license. This only affects you if you have a transmitter and an antenna, receiving amateur radio or just downloading amateur radio software isn't illegal.}}<br />
<br />
== General information ==<br />
Many of the following programs will need to access a serial port to key the transmitter (eg. /dev/ttyS0). This requires that the user belong to the uucp group. To add the user to the uucp group issue the following command as root:<br />
<br />
# gpasswd -a ''username'' uucp<br />
<br />
then logoff and logon.<br />
<br />
== Software list ==<br />
* {{App|Hamlib|provides an interface between hardware and radio control programs. It is a software layer to facilitate the control of radios and other hardware (eg. for logging, digital modes) and is not a stand-alone application.<br />
|http://sourceforge.net/apps/mediawiki/hamlib/|{{AUR|hamlib}}}}<br />
<br />
* {{App|Soundmodem|was written by Tom Sailer (HB9JNX/AE4WA) to allow a standard PC soundcard to act as a packet radio modem for use with the various AX.25 communication modes. The data rate can be as high as 9600 baud depending on the hardware and application. Soundmodem can be used as a KISS modem on the serial port or as an AX.25 network device. To use soundmodem as an MKISS network device, the kernel must be re-built with MKISS modules. More information is in the [http://www.xastir.org/wiki/index.php/HowTo:SoundModem Xastir wiki]<br />
:Run soundmodem as root:<br />
:{{bc|# soundmodem}}<br />
:If you have configured soundmodem as a KISS modem, you will need to change permissions to make it user-readable:<br />
:{{bc|# chmod 666 /dev/soundmodem0}}<br />
|http://www.baycom.org/~tom/ham/soundmodem/|{{AUR|soundmodem}}}}<br />
<br />
* {{App|Grig|simple control program based on Hamlib|http://groundstation.sourceforge.net/grig/|{{AUR|grig}}}}<br />
* {{App|gMFSK|is a user interface that supports a multitude of digital modes. It uses hamlib and xlog for logging|http://gmfsk.connect.fi|{{AUR|gmfsk}}}}<br />
* {{App|lysdr|highly customizable radio interface|https://github.com/gordonjcp/lysdr|{{AUR|lysdr-git}}{{Broken package link|{{aur-mirror|lysdr-git}}}}}}<br />
* {{App|linrad|Software defined radio by SM5BSZ|http://www.sm5bsz.com/linuxdsp/linrad.htm|{{AUR|linrad}}}} <br />
* {{App|quisk|Software defined radio by N2ADR|http://james.ahlstrom.name/quisk/|{{AUR|quisk}}}}<br />
* {{App|[[owx]]|command-line utility for programming Wouxun radios|http://owx.chmurka.net|{{AUR|owx}}}}<br />
* {{App|twcw|extension for cwirc|http://wa0eir.home.mchsi.com/twcw.html|{{AUR?|twcw}}}}<br />
* {{App|fldigi|popular GUI developed by W1HKJ for a variety of digital communication modes|http://w1hkj.com/Fldigi.html|{{AUR|fldigi}}}}<br />
* {{App|libfap|APRS packet parser|http://pakettiradio.net/libfap/|{{AUR|libfap}}{{Broken package link|{{aur-mirror|libfap}}}}}}<br />
* {{App|aprx|lightweight APRS digipeater and i-Gate interface|http://wiki.ham.fi/Aprx.en|{{AUR|aprx-svn}}}}<br />
* {{App|xdx|network client|http://www.qsl.net/pg4i/linux/xdx.html|{{AUR|xdx}}}}<br />
* {{AUR|d-rats}}{{Broken package link|{{aur-mirror|d-rats}}}} &ndash; D-STAR communication tool<br />
* {{AUR|qsstv}} &ndash; Slow-scan television<br />
* {{AUR|linpsk}} &ndash; PSK31<br />
* {{AUR|psk31lx}}{{Broken package link|{{aur-mirror|psk31lx}}}} &ndash; PSK31 using Pulseaudio<br />
* {{AUR|twpsk}}{{Broken package link|{{aur-mirror|twpsk}}}} &ndash; Soundcard based program for PSK31<br />
* {{AUR|xpsk31}} &ndash; PSK31 using a GUI rendered by GTK+<br />
<br />
=== AX.25 ===<br />
{{App|[[Wikipedia:AX.25|AX.25]]|data link layer protocol that is used extensively in packet radio networks. It supports connected operation (eg. keyboard-to-keyboard contacts, access to local bulletin board systems, and DX clusters) as well as connectionless operation (eg. [[Wikipedia:APRS|APRS]]). The Linux kernel includes native support for AX.25 networking. Please refer to this [http://tldp.org/HOWTO/AX25-HOWTO/ guide] for more information. The following software is available in the AUR:<br />
* {{AUR|ax25-apps}}<br />
* {{AUR|ax25-tools}}<br />
* {{AUR|libax25}}<br />
* {{AUR|node}}<br />
|http://www.ax25.net/|present in stock kernel}}<br />
<br />
=== WSJT ===<br />
{{App|[[Wikipedia:WSJT_(Amateur_radio_software)|WSJT]] (Weak Signal Communication by K1JT)|offers offers a rich variety of features, including specific digital protocols optimized for meteor scatter, ionospheric scatter, and EME (moonbounce) at VHF/UHF, as well as HF skywave propagation. WSJT was developed by Nobel Prize winning physicist Joe Taylor, who has the amateur radio callsign K1JT. The program can decode fraction-of-a-second signals reflected from ionized meteor trails and steady signals 10 dB below the audible threshold.<br><br />
WSJT is in ongoing, active development by a team of programmers led by K1JT. WSJT (and the related program WSPR) has the option of being configured with <br />
{{bc|$ ./configure --enable-g95}}<br />
or <br />
{{bc|$ ./configure --enable-gfortran}}<br />
If you build with one and experience problems, edit PKGBUILD to try the other.<br><br />
WSJT requires access to the serial port; see the note in the Interfacing section above about the uucp group.<br />
|http://www.physics.princeton.edu/pulsar/K1JT/|{{AUR|wsjt-svn}}}}<br />
<br />
=== WSPR ===<br />
{{App|[[Wikipedia:WSPR (amateur_radio_software)|WSPR]] (Weak Signal Propagation Reporter, pronounced whisper)|enables the probing of propagation paths on the amateur radio bands using low power transmissions. It was introduced in 2008 by K1JT following the success and widespread adoption of WSJT by the amateur radio community. Stations with Internet access can automatically upload their reception reports to a central database called [http://wsprnet.org/drupal/ WSPRnet], which includes a [http://wsprnet.org/drupal/wsprnet/map mapping facility]<br />
|http://physics.princeton.edu/pulsar/K1JT/wspr.html|{{AUR|wspr-svn}}}}<br />
<br />
=== Xastir ===<br />
{{App|Xastir|stands for X Amateur Station and Information Reporting. It works with [[Wikipedia:APRS|APRS]], an amateur radio-based system for real time tactical digital communications. Xastir is an open-source program that provides full-featured, client-side access to APRS. It is currently in a state of active development.<br>Xastir is highly flexible and there are a wide variety of ways it can be configured. For example, it can be evaluated without radio hardware if an Internet connection is available. The wiki at xastir.org is very thorough and gives excellent information on its range of capabilities and setup.<br>An optional speech feature can be enabled with the {{pkg|festival}} package; you will also need a speaker package such as festival-en or festival-english. If you want this option, festival must be installed on your system before building xastir. Launch festival before the xastir program is started for speech to function properly:<br />
{{bc|$ festival --server}}<br />
or you can write a simple script to automate the sequential starting process. There may be problems if other programs such as a media player are accessing sound simultaneously.<br>The PKGBUILD automatically downloads an 850 kB bundle of .wav files and places them here: {{Ic|/usr/share/xastir/sounds/}}.<br>These are audio alarm recordings of a North American English speaker that do not require the presence of festival to render. The audio play command `play' in the configure menu may not work; try `aplay' instead.<br />
|http://www.xastir.org|{{AUR|xastir}}}}<br />
<br />
=== Analysis tools ===<br />
* {{AUR|fl_moxgen}}{{Broken package link|{{aur-mirror|fl_moxgen}}}} &ndash; Moxon antenna designer<br />
* {{AUR|geoid}}{{Broken package link|{{aur-mirror|geoid}}}} &ndash; Geodetic calculator<br />
* {{AUR|gpredict}} &ndash; Real-time satellite tracking and orbit prediction application<br />
* {{AUR|hamsolar}} &ndash; Small desktop display of the current solar indices<br />
* {{AUR|splat}} &ndash; rf signal propagation, loss, and terrain analysis<br />
* {{AUR|sunclock}} &ndash; Useful for predicting grayline propagation paths<br />
* {{AUR|xnec2c}} &ndash; Electromagnetic antenna modeler<br />
<br />
=== Logging ===<br />
* {{AUR|cqrlog}} &ndash; a popular Linux logging program<br />
* {{AUR|fdlog}} &ndash; a Field Day Logger with networked nodes<br />
* {{AUR|klog}} &ndash; a Ham radio logging program for Linux / KDE.<br />
* {{AUR|qle}} &ndash; QSO Logger and log Editor for amateur radio operators written in Perl<br />
* {{AUR|tlf}} &ndash; a console mode networked logging and contest program<br />
* {{AUR|trustedqsl}} &ndash; QSL application for ARRL's Logbook of the World<br />
* {{AUR|tucnak2}}{{Broken package link|{{aur-mirror|tucnak2}}}} &ndash; a multiplatform VHF/HF contest logbook<br />
* {{AUR|xlog}} &ndash; a logging program for amateur radio operators.<br />
* {{AUR|yfklog}} &ndash; a general purpose ham radio logbook for *nix operating systems.<br />
* {{AUR|yfktest}} &ndash; a logbook program for ham radio contests.<br />
<br />
=== Tools ===<br />
* {{AUR|callsign}}{{Broken package link|{{aur-mirror|callsign}}}} &ndash; a small program for finding information about a ham radio based on his callsign<br />
* {{AUR|cty}} &ndash; package contains databases of entities (countries), prefixes and callsigns that are used by amateur radio logging software.<br />
* {{AUR|dxcc}} &ndash; a small program for determining ARRL DXCC entity of a ham radio callsign<br />
* {{AUR|nato}}{{Broken package link|{{aur-mirror|nato}}}} &ndash; Python script to convert string into NATO alphabet representation<br />
* {{AUR|tqsllib}}{{Broken package link|{{aur-mirror|tqsllib}}}} &ndash; Trusted QSL library (supports ARRL Logbook of the World)<br />
<br />
=== Morse code training ===<br />
* {{AUR|aldo}}<br />
* {{AUR|cutecw}}<br />
* {{AUR|ebook2cw}}{{Broken package link|{{aur-mirror|ebook2cw}}}}<br />
* {{AUR|gtkmmorse}}<br />
* {{AUR|kochmorse}}<br />
* {{AUR|qrq}}<br />
* {{AUR|unixcw}}<br />
<br />
=== Other ===<br />
* {{AUR|cwirc}} &ndash; Send and receive Morse code messages via IRC</div>Zekesonxxhttps://wiki.archlinux.org/index.php?title=Pacman/Tips_and_tricks&diff=398142Pacman/Tips and tricks2015-09-03T20:02:49Z<p>Zekesonxx: /* Maintenance */ add script for finding list of installed packages by repo</p>
<hr />
<div>{{Lowercase title}}<br />
[[Category:Package management]]<br />
[[es:Pacman tips]]<br />
[[fr:Astuces Pacman]]<br />
[[it:Pacman tips]]<br />
[[ja:Pacman ヒント]]<br />
[[ru:Pacman tips]]<br />
[[tr:Pacman ipuçları]]<br />
[[zh-cn:Pacman tips]]<br />
{{Related articles start}}<br />
{{Related|pacman}}<br />
{{Related|Improve pacman performance}}<br />
{{Related|Mirrors}}<br />
{{Related|Creating packages}}<br />
{{Related articles end}}<br />
This is a collection of common tips for new [[pacman]] users.<br />
<br />
== Cosmetic and convenience ==<br />
<br />
=== Color output ===<br />
<br />
Pacman has a color option. Uncomment the "Color" line in {{ic|/etc/pacman.conf}}.<br />
<br />
=== Shortcuts ===<br />
<br />
The following instructions allow users to run some of the more common pacman commands without the need to type them fully via a script alias.<br />
<br />
==== Configure the shell ====<br />
<br />
Add the following examples to your [[shell]] configuration script (they work at least in [[Bash]] and [[Zsh]]), then [[source]] it.<br />
<br />
{{bc|<nowiki><br />
# Pacman alias examples<br />
alias pacupg="sudo pacman -Syu" # Synchronize with repositories and then upgrade packages that are out of date on the local system.<br />
alias pacdl="pacman -Sw" # Download specified package(s) as .tar.xz ball<br />
alias pacin="sudo pacman -S" # Install specific package(s) from the repositories<br />
alias pacins="sudo pacman -U" # Install specific package not from the repositories but from a file <br />
alias pacre="sudo pacman -R" # Remove the specified package(s), retaining its configuration(s) and required dependencies<br />
alias pacrem="sudo pacman -Rns" # Remove the specified package(s), its configuration(s) and unneeded dependencies<br />
alias pacrep="pacman -Si" # Display information about a given package in the repositories<br />
alias pacreps="pacman -Ss" # Search for package(s) in the repositories<br />
alias pacloc="pacman -Qi" # Display information about a given package in the local database<br />
alias paclocs="pacman -Qs" # Search for package(s) in the local database<br />
alias paclo="pacman -Qdt" # List all packages which are orphaned<br />
alias pacc="sudo pacman -Scc" # Clean cache - delete all the package files in the cache<br />
alias paclf="pacman -Ql" # List all files installed by a given package<br />
alias pacown="pacman -Qo" # Show package(s) owning the specified file(s)<br />
alias pacexpl="pacman -D --asexp" # Mark one or more installed packages as explicitly installed <br />
alias pacimpl="pacman -D --asdep" # Mark one or more installed packages as non explicitly installed<br />
<br />
# Additional pacman alias examples<br />
alias pacupd="sudo pacman -Sy && sudo abs" # Update and refresh the local package and ABS databases against repositories<br />
alias pacinsd="sudo pacman -S --asdeps" # Install given package(s) as dependencies<br />
alias pacmir="sudo pacman -Syy" # Force refresh of all package lists after updating /etc/pacman.d/mirrorlist<br />
</nowiki>}}<br />
<br />
The following commands could be useful, but also dangerous. Please, know perfectly what are you doing when you use them:<br />
<br />
{{bc|<nowiki><br />
# dealing with the following message from pacman:<br />
# <br />
# error: couldnt lock database: file exists<br />
# if you are sure a package manager is not already running, you can remove /var/lib/pacman/db.lck<br />
<br />
alias pacunlock="sudo rm /var/lib/pacman/db.lck" # Delete the lock file /var/lib/pacman/db.lck<br />
alias paclock="sudo touch /var/lib/pacman/db.lck" # Create the lock file /var/lib/pacman/db.lck<br />
</nowiki>}}<br />
<br />
==== Usage ====<br />
<br />
Perform the respective commands by simply typing the alias name. For example, to synchronize with repositories and then upgrade packages that are out of date on the local system:<br />
$ pacupg<br />
Install packages from repositories:<br />
$ pacin <package1> <package2> <package3><br />
Install a custom built package:<br />
$ pacins /path/to/<package><br />
Completely remove a locally installed package:<br />
$ pacrem <package><br />
Search for available packages in the repositories:<br />
$ pacreps <keywords><br />
Display information about a package (e.g. size, dependencies) in the repositories:<br />
$ pacrep <keywords><br />
<br />
==== Notes ====<br />
<br />
The aliases used above are merely examples. By following the syntax samples above, rename the aliases as convenient. For example:<br />
<br />
alias pacrem='sudo pacman -Rns'<br />
alias pacout='sudo pacman -Rns'<br />
<br />
In the case above, the commands {{ic|pacrem}} and {{ic|pacout}} both call your shell to execute the same command.<br />
<br />
=== Operations and Bash syntax ===<br />
<br />
In addition to pacman's standard set of features, there are ways to extend its usability through rudimentary [[Bash]] commands/syntax.<br />
<br />
* To install a number of packages sharing similar patterns in their names -- not the entire group nor all matching packages; eg. {{Grp|kde}}:<br />
<br />
# pacman -S kde-{applets,theme,tools}<br />
<br />
* Of course, that is not limited and can be expanded to however many levels needed:<br />
<br />
# pacman -S kde-{ui-{kde,kdemod},kdeartwork}<br />
<br />
* Sometimes, {{Ic|-s}}'s builtin ERE can cause a lot of unwanted results, so it has to be limited to match the package name only; not the description nor any other field:<br />
<br />
# pacman -Ss '^vim-'<br />
<br />
* pacman has the {{ic|-q}} operand to hide the version column, so it is possible to query and reinstall packages with "compiz" as part of their name:<br />
<br />
# pacman -S $(pacman -Qq | grep compiz)<br />
<br />
* Or install all packages available in a repository (kde-unstable for example):<br />
<br />
# pacman -S $(pacman -Slq kde-unstable)<br />
<br />
== Maintenance ==<br />
<br />
House keeping, in the interest of keeping a clean system and following [[The Arch Way]].<br />
<br />
See also [[System maintenance]].<br />
<br />
=== Listing latest installed packages ===<br />
<br />
Install {{Pkg|expac}} and run {{ic|<nowiki>expac --timefmt='%Y-%m-%d %T' '%l\t%n' | sort | tail -20</nowiki>}} or {{ic|<nowiki>expac --timefmt=%s '%l\t%n' | sort -n | tail -20</nowiki>}}<br />
<br />
=== Listing installed packages with size ===<br />
<br />
You may want to get the list of installed packages sorted by size, which may be useful when freeing space on your hard drive.<br />
<br />
* Install {{Pkg|expac}} and run {{ic| <nowiki>expac -s "%-30n %m" | sort -hk 2 | awk '{printf "%s %.0f MiB\n", $1, $2/1024/1024}' | column -t<br />
</nowiki>}}<br />
* Invoke pacgraph with the -c option to produce a list of all installed packages with their respective sizes on the system. {{Pkg|pacgraph}} is available from [community].<br />
* List explicitly installed packages not in base or base-devel with size and description: {{ic|<nowiki>expac -HM "%011m\t%-20n\t%10d" $( comm -23 <(pacman -Qqen|sort) <(pacman -Qqg base base-devel|sort) ) | sort -n</nowiki>}}<br />
<br />
=== Listing installed packages from a specific repo ===<br />
<br />
You might like to find a list of all the packages you've installed, which is especially useful when using a [[Unofficial user repositories | unofficial repo]].<br />
<br />
$ pacman -Sl <repo> | grep '\[installed'<br />
<br />
=== Listing files owned by a package with size ===<br />
<br />
This one might come in handy if you have found that a specific package uses a huge amount of space and you want to find out which files make up the most of that.<br />
<br />
$ pacman -Qlq ''package'' | grep -v '/$' | xargs du -h | sort -h<br />
<br />
=== Listing installed packages with version ===<br />
<br />
You may want to get the list of installed packages with their version, which is useful when reporting bugs or discussing installed packages.<br />
<br />
* List all explicitly installed packages: {{ic| pacman -Qe }}.<br />
* List all foreign packages (typically manually downloaded and installed): {{ic| pacman -Qm }}.<br />
* List all native packages (installed from the sync database(s)): {{ic| pacman -Qn }}.<br />
* List packages by regex: {{ic| <nowiki>pacman -Qs <regex> | awk 'BEGIN { RS="\n" ; FS="/" } { print $2 }' | awk '{ if(NF > 0) print $1, $2 }'</nowiki>}}<br />
* Install {{Pkg|expac}} and run {{ic| expac -s "%-30n %v"}}<br />
<br />
=== List available updates ===<br />
<br />
Pacman comes with a script, {{ic|checkupdates}}, which does not require root permissions.<br />
<br />
=== Identify files not owned by any package ===<br />
<br />
Periodic checks for files outside of pacman database are recommended. These files are often some 3rd party applications installed using the usual procedure (e.g. {{ic|./configure && make && make install}}). Search the file-system for these files (or symlinks) using this simple script:<br />
<br />
{{hc|pacman-disowned|<nowiki><br />
#!/bin/sh<br />
<br />
tmp=${TMPDIR-/tmp}/pacman-disowned-$UID-$$<br />
db=$tmp/db<br />
fs=$tmp/fs<br />
<br />
mkdir "$tmp"<br />
trap 'rm -rf "$tmp"' EXIT<br />
<br />
pacman -Qlq | sort -u > "$db"<br />
<br />
find /etc /opt /usr ! -name lost+found \( -type d -printf '%p/\n' -o -print \) | sort > "$fs"<br />
<br />
comm -23 "$fs" "$db"<br />
</nowiki>}}<br />
<br />
To generate the list:<br />
<br />
$ pacman-disowned > non-db.txt<br />
<br />
Note that one should '''not''' delete all files listed in {{ic|non-db.txt}} without confirming each entry. There could be various configuration files, logs, etc., so use this list responsibly and only proceed after extensively searching for cross-references using {{Ic|grep}}.<br />
<br />
Here are some one-liner scripts that will be helpful.<br />
<br />
Show dirs that do not belong to any package:<br />
<br />
alias pacman-disowned-dirs="comm -23 <(sudo find / \( -path '/dev' -o -path '/sys' -o -path '/run' -o -path '/tmp' -o -path '/mnt' -o -path '/srv' -o -path '/proc' -o -path '/boot' -o -path '/home' -o -path '/root' -o -path '/media' -o -path '/var/lib/pacman' -o -path '/var/cache/pacman' \) -prune -o -type d -print | sed 's/\([^/]\)$/\1\//' | sort -u) <(pacman -Qlq | sort -u)"<br />
<br />
Show files that do not belong to any package:<br />
<br />
alias pacman-disowned-files="comm -23 <(sudo find / \( -path '/dev' -o -path '/sys' -o -path '/run' -o -path '/tmp' -o -path '/mnt' -o -path '/srv' -o -path '/proc' -o -path '/boot' -o -path '/home' -o -path '/root' -o -path '/media' -o -path '/var/lib/pacman' -o -path '/var/cache/pacman' \) -prune -o -type f -print | sort -u) <(pacman -Qlq | sort -u)"<br />
<br />
The script in the {{AUR|lostfiles}} package also excludes common user-created configuration files and directories created by software at runtime.<br />
<br />
=== Removing orphaned packages ===<br />
<br />
For ''recursively'' removing orphans and their configuration files:<br />
<br />
# pacman -Rns $(pacman -Qtdq)<br />
<br />
If no orphans were found, pacman errors with {{ic|error: no targets specified}}. This is expected as no arguments were passed to {{ic|pacman -Rns}}.<br />
<br />
The following '''function''' is easily inserted into {{ic|~/.bashrc}} and removes orphans, if found:<br />
<br />
{{hc|~/.bashrc|<nowiki><br />
orphans() {<br />
if [[ ! -n $(pacman -Qdt) ]]; then<br />
echo "No orphans to remove."<br />
else<br />
sudo pacman -Rns $(pacman -Qdtq)<br />
fi<br />
}<br />
</nowiki>}}<br />
<br />
{{Note|Since pacman version 4.2.0 only true orphans are listed. To make pacman also list packages which are only optionally required by another package, pass the {{ic|-t}}/{{ic|--unrequired}} flag twice:<br />
$ pacman -Qdttq<br />
Use this carefully, as it is not taken into account whether the package is an optional dependency and therefore bears the risk to remove packages which actually are not real orphans.}}<br />
<br />
=== Removing unused packages ===<br />
<br />
Because a lighter system is easier to maintain, occasionally looking through explicitly installed packages and ''manually'' selecting unused packages to be removed can be helpful.<br />
<br />
To list explicitly installed packages available in the official repositories:<br />
<br />
$ pacman -Qen<br />
<br />
To list explicitly installed packages not available in official repositories:<br />
<br />
$ pacman -Qem<br />
<br />
=== Removing everything but base group ===<br />
<br />
If it is ever necessary to remove all packages except the base group, try this one liner:<br />
<br />
# pacman -R $(comm -23 <(pacman -Qq|sort) <((for i in $(pacman -Qqg base); do pactree -ul $i; done)|sort -u|cut -d ' ' -f 1))<br />
<br />
The one-liner was originally devised in [https://bbs.archlinux.org/viewtopic.php?id=130176 this discussion], and later improved in this article.<br />
<br />
Notes:<br />
<br />
# {{ic|comm}} requires sorted input otherwise you get e.g. {{ic|comm: file 1 is not in sorted order}}.<br />
# {{ic|pactree}} prints the package name followed by what it provides. For example:<br />
<br />
{{hc|$ pactree -lu logrotate|<br />
logrotate<br />
popt<br />
glibc<br />
linux-api-headers<br />
tzdata<br />
dcron cron<br />
bash<br />
readline<br />
ncurses<br />
gzip}}<br />
<br />
The {{ic|dcron cron}} line seems to cause problems, that is why {{ic|cut -d ' ' -f 1}} is needed - to keep just the package name.<br />
<br />
=== Listing official installed packages only ===<br />
<br />
$ pacman -Qqn<br />
<br />
This list packages that are found in the sync database(s). If the user has unofficial repositories configured, it will list packages from such repositories too.<br />
<br />
=== Getting the dependencies list of several packages ===<br />
<br />
Dependencies are alphabetically sorted and doubles are removed.<br />
Note that you can use {{ic|pacman -Qi}} to improve response time a little. But<br />
you will not be able to query as many packages. Unfound packages are simply skipped<br />
(hence the {{ic|2>/dev/null}}).<br />
You can get dependencies of AUR packages as well if you use {{ic|yaourt -Si}},<br />
but it will slow down the queries.<br />
<br />
$ pacman -Si $@ 2>/dev/null | awk -F ": " -v filter="^Depends" \ '$0 ~ filter {gsub(/[>=<][^ ]*/,"",$2) ; gsub(/ +/,"\n",$2) ; print $2}' | sort -u<br />
<br />
Alternatively, you can use {{ic|expac}}: {{ic|expac -l '\n' %E -S $@ &#124; sort -u}}.<br />
<br />
=== Getting the size of several packages ===<br />
<br />
You can use (and tweak) this little shell function:<br />
<br />
{{hc|~/.bashrc|<nowiki><br />
pacman-size()<br />
{<br />
CMD="pacman -Si"<br />
SEP=": "<br />
TOTAL_SIZE=0<br />
<br />
RESULT=$(eval "${CMD} $@ 2>/dev/null" | awk -F "$SEP" -v filter="Size" -v pkg="^Name" \<br />
'$0 ~ pkg {pkgname=$2} $0 ~ filter {gsub(/\..*/,"") ; printf("%6s KiB %s\n", $2, pkgname)}' | sort -u -k3)<br />
<br />
echo "$RESULT"<br />
<br />
## Print total size.<br />
echo "$RESULT" | awk '{TOTAL=$1+TOTAL} END {printf("Total : %d KiB\n",TOTAL)}'<br />
}</nowiki>}}<br />
<br />
As told for the dependencies list, you can use {{ic|pacman -Qi}} instead, but<br />
not [[yaourt]] since AUR's PKGBUILD do not have size information.<br />
<br />
A nice one-liner:<br />
<br />
$ pacman -Si "$@" 2>/dev/null | awk -F ": " -v filter="Size" -v pkg="Name" '$0 ~ pkg {pkgname=$2} $0 ~ filter {gsub(/\..*/,"") ; printf("%6s KiB %s\n", $2, pkgname)}' | sort -u -k3 | tee >(awk '{TOTAL=$1+TOTAL} END {printf("Total : %d KiB\n",TOTAL)}')<br />
<br />
You should replace "$@" with packages, or put this line in a shell function.<br />
<br />
=== Listing changed configuration files ===<br />
If you want to backup your system configuration files you could copy all files in {{ic|/etc/}}, but usually you are only interested in the files that you have changed. In this case you want to list those changed configuration files, we can do this with the following command:<br />
# pacman -Qii | awk '/^MODIFIED/ {print $2}'<br />
The following script does the same. You need to run it as root or with sudo.<br />
{{hc|changed-files.sh|<nowiki><br />
#!/bin/bash<br />
for package in /var/lib/pacman/local/*; do<br />
sed '/^%BACKUP%$/,/^%/!d' $package/files | tail -n+2 | grep -v '^$' | while read file hash; do<br />
[ "$(md5sum /$file | (read hash file; echo $hash))" != "$hash" ] && echo $(basename $package) /$file<br />
done<br />
done<br />
</nowiki>}}<br />
<br />
{{Tip|See [[#Listing all changed files from packages]] to list all changed files pacman knows, not only configuration files.}}<br />
<br />
=== Listing all packages that nothing else depends on ===<br />
If you want to generate a list of all installed packages that nothing else depends on, you can use the following script. This is very helpful if you are trying to free hard drive space and have installed a lot of packages that you may not remember. You can browse through the output to find packages which you no longer need.<br />
<br />
{{Note|This script will show all packages that nothing else depends on, including those explicitly installed. To get a list of packages installed as dependencies but no longer required by any installed package, see [[#Removing orphaned packages]].}} <br />
<br />
{{hc|clean|<nowiki><br />
#!/bin/bash<br />
<br />
# This script is designed to help you clean your computer from unneeded<br />
# packages. The script will find all packages that no other installed package<br />
# depends on. It will output this list of packages excluding any you have<br />
# placed in the ignore list. You may browse through the script's output and<br />
# remove any packages you do not need.<br />
<br />
# Enter groups and packages here which you know you wish to keep. They will<br />
# not be included in the list of unrequired packages later.<br />
ignoregrp="base base-devel"<br />
ignorepkg=""<br />
<br />
comm -23 <(pacman -Qqt | sort) <(echo $ignorepkg | tr ' ' '\n' | cat <(pacman -Sqg $ignoregrp) - | sort -u)<br />
</nowiki>}}<br />
<br />
For list with descriptions for packages:<br />
<br />
{{bc|<nowiki><br />
expac -HM "%-20n\t%10d" $( comm -23 <(pacman -Qqt|sort) <(pacman -Qqg base base-devel|sort) )<br />
</nowiki>}}<br />
<br />
=== Backing up Local database with systemd ===<br />
<br />
[[systemd]] can take snapshots of the pacman local database, each time it is modified.<br />
<br />
{{Tip|For a more configurable version, use: {{AUR|pakbak-git}}}}<br />
<br />
Use the following scripts, changing the value of {{ic|$pakbak}} for the backup location accordingly. The {{ic|pakbak.service}} can also automaticall be [[enable]]d on boot:<br />
<br />
{{hc|/usr/lib/systemd/scripts/pakbak_script|2=<br />
#!/bin/bash<br />
<br />
declare -r pakbak=''"/pakbak.tar.xz"''; ## set backup location<br />
tar -cJf "$pakbak" "/var/lib/pacman/local"; ## compress & store pacman local database in $pakbak<br />
}}<br />
<br />
{{hc|/usr/lib/systemd/system/pakbak.service|2=<br />
[Unit]<br />
Description=Back up pacman database<br />
<br />
[Service]<br />
Type=oneshot<br />
ExecStart=/bin/bash /usr/lib/systemd/scripts/pakbak_script<br />
RemainAfterExit=no<br />
}}<br />
<br />
{{hc|/usr/lib/systemd/system/pakbak.path|2=<br />
[Unit]<br />
Description=Back up pacman database<br />
<br />
[Path]<br />
PathChanged=/var/lib/pacman/local<br />
Unit=pakbak.service<br />
<br />
[Install]<br />
WantedBy=multi-user.target<br />
}}<br />
<br />
== Installation and recovery ==<br />
<br />
''Alternative ways of getting and restoring packages.''<br />
<br />
=== Installing packages from a CD/DVD or USB stick ===<br />
<br />
To download packages, or groups of packages:<br />
<br />
# cd ~/Packages<br />
# pacman -Syw base base-devel grub-bios xorg gimp --cachedir .<br />
# repo-add ./custom.db.tar.gz ./*<br />
<br />
Then you can burn the "Packages" folder to a CD/DVD or transfer it to a USB stick, external HDD, etc.<br />
<br />
To install:<br />
<br />
'''1.''' Mount the media:<br />
<br />
# mkdir /mnt/repo<br />
# mount /dev/sr0 /mnt/repo #For a CD/DVD.<br />
# mount /dev/sdxY /mnt/repo #For a USB stick.<br />
<br />
'''2.''' Edit {{ic|pacman.conf}} and add this repository ''before'' the other ones (e.g. extra, core, etc.). This is important. Do not just uncomment the one on the bottom. This way it ensures that the files from the CD/DVD/USB take precedence over those in the standard repositories:<br />
<br />
{{hc|/etc/pacman.conf|2=<br />
[custom]<br />
SigLevel = PackageRequired<br />
Server = file:///mnt/repo/Packages}}<br />
<br />
'''3.''' Finally, synchronize the pacman database to be able to use the new repository:<br />
<br />
# pacman -Sy<br />
<br />
=== Custom local repository ===<br />
<br />
Use the ''repo-add'' script included with Pacman to generate a database for a personal repository. Use {{ic|repo-add --help}} for more details on its usage. Simply store all of the built packages to be included in the repository in one directory, and execute the following command (where ''repo'' is the name of the custom repository):<br />
<br />
$ repo-add /path/to/repo.db.tar.gz /path/to/*.pkg.tar.xz<br />
<br />
{{Note|A package database is a tar file, optionally compressed. Valid extensions are “.db” or “.files” followed by an archive extension of “.tar”, “.tar.gz”, “.tar.bz2”, “.tar.xz”, or “.tar.Z”. The file does not need to exist, but all parent directories must exist.<br />
Furthermore when using {{ic|repo-add}} keep in mind that the database and the packages do not need to be in the same directory. But when using pacman with that database, they should be together.}}<br />
<br />
To add a new package to the database, or to replace the old version of an existing package in the database, run:<br />
<br />
$ repo-add /path/to/repo.db.tar.gz /path/to/packagetoadd-1.0-1-i686.pkg.tar.xz<br />
<br />
''repo-remove'' is used in the exact same manner as ''repo-add'', except that the packages listed on the command line are removed from the repository database.<br />
<br />
Once the local repository database has been created, add the repository to {{ic|pacman.conf}} for each system that is to use the repository. An example of a custom repository is in {{ic|pacman.conf}}. The repository's name is the database filename with the file extension omitted. In the case of the example above the repository's name would simply be ''repo''. Reference the repository's location using a {{ic|file://}} url, or via FTP using ftp://localhost/path/to/directory.<br />
<br />
If willing, add the custom repository to the [[Unofficial user repositories|list of unofficial user repositories]], so that the community can benefit from it.<br />
<br />
=== Network shared pacman cache ===<br />
<br />
==== Read-only cache ====<br />
<br />
If you are looking for a quick and dirty solution, you can simply run a standalone webserver which other computers can use as a first mirror: {{ic|darkhttpd /var/cache/pacman/pkg}}. Just add this server at the top of your mirror list. Be aware that you might get a lot of 404 errors, due to cache misses, depending on what you do, but pacman will try the next (real) mirrors when that happens.<br />
<br />
==== Read-write cache ====<br />
<br />
{{Tip|See [[pacserve]] for an alternative (and probably simpler) solution than what follows.}}<br />
<br />
In order to share packages between multiple computers, simply share {{ic|/var/cache/pacman/}} using any network-based mount protocol. This section shows how to use shfs or sshfs to share a package cache plus the related library-directories between multiple computers on the same local network. Keep in mind that a network shared cache can be slow depending on the file-system choice, among other factors.<br />
<br />
First, install any network-supporting filesystem; for example [[sshfs]], [[shfs]], ftpfs, [[smbfs]] or [[nfs]].<br />
<br />
{{Tip|To use sshfs or shfs, consider reading [[Using SSH Keys]].}}<br />
<br />
Then, to share the actual packages, mount {{ic|/var/cache/pacman/pkg}} from the server to {{ic|/var/cache/pacman/pkg}} on every client machine.<br />
<br />
==== Synchronize pacman package cache using BitTorrent Sync ====<br />
<br />
[[BitTorrent Sync]] is a new way of synchronizing folder via network (it works in LAN and over the internet). It is peer-to-peer so you do not need to set up a server: follow the link for more information.<br />
How to share a pacman cache using BitTorrent Sync:<br />
* First install the {{AUR|btsync}} package from the AUR on the machines you want to sync<br />
* Follow the installation instructions of the AUR package or on the [[BitTorrent Sync]] wiki page <br />
** set up BitTorrent Sync to work for the root account. This process requires read/write to the pacman package cache. <br />
** make sure to set a good password on btsync's web UI <br />
** start the systemd daemon for btsync.<br />
** in the btsync Web GUI add a new synchronized folder on the first machine and generate a new Secret. Point the folder to {{ic|/var/cache/pacman/pkg}}<br />
** Add the folder on all the other machines using the same Secret to share the cached packages between all systems. Or, to set the first system as a master and the others as slaves, use the Read Only Secret. Be sure to point it to {{ic|/var/cache/pacman/pkg}}<br />
<br />
Now the machines should connect and start synchronizing their cache. Pacman works as expected even during synchronization. The process of syncing is entirely automatic.<br />
<br />
==== Preventing unwanted cache purges ====<br />
<br />
By default, {{Ic|pacman -Sc}} removes package tarballs from the cache that correspond to packages that are not installed on the machine the command was issued on. Because pacman cannot predict what packages are installed on all machines that share the cache, it will end up deleting files that should not be.<br />
<br />
To clean up the cache so that only ''outdated'' tarballs are deleted, add this entry in the {{ic|[options]}} section of {{ic|/etc/pacman.conf}}:<br />
<br />
CleanMethod = KeepCurrent<br />
<br />
=== Recreate a package from the file system ===<br />
<br />
To recreate a package from the file system, use ''bacman'' (included with pacman). Files from the system are taken as they are, hence any modifications will be present in the assembled package. Distributing the recreated package is therefore discouraged; see [[ABS]] and [[Arch Rollback Machine]] for alternatives.<br />
<br />
{{Tip|''bacman'' honours the {{ic|PACKAGER}}, {{ic|PKGDEST}} and {{ic|PKGEXT}} options from {{ic|makepkg.conf}}. Custom options for the compression tools can be configured by exporting the relevant environment variable, for example {{ic|1=XZ_OPT="-T 0"}} will enable parallel compression for ''xz''.}}<br />
<br />
An alternative tool would be {{AUR|fakepkg}}. It supports parallelization through {{Pkg|parallel}} and can handle multiple input packages in one command, which ''bacman'' both does not support.<br />
<br />
=== Backing up and retrieving a list of installed packages ===<br />
<br />
{{Tip|1=You may want to use {{AUR|pacbackup}} or [https://bbs.archlinux.org/viewtopic.php?id=200067 bacpac] to automatise the below tasks.}}<br />
<br />
It is good practice to keep periodic backups of all pacman-installed packages. In the event of a system crash which is unrecoverable by other means, pacman can then easily reinstall the very same packages onto a new installation.<br />
<br />
* First, backup the current list of non-local packages: {{ic|$ pacman -Qqen > pkglist.txt}}<br />
<br />
* Store the {{ic|pkglist.txt}} on a USB key or other convenient medium or gist.github.com or Evernote, Dropbox, etc.<br />
<br />
* Copy the {{ic|pkglist.txt}} file to the new installation, and navigate to the directory containing it.<br />
<br />
* Issue the following command to install from the backup list: {{ic|# pacman -S $(< pkglist.txt)}}<br />
<br />
In the case you have a list which was not generated like mentioned above, there may be foreign packages in it (i.e. packages not belonging to any repos you have configured, or packages from the AUR).<br />
<br />
In such a case, you may still want to install all available packages from that list:<br />
<br />
# pacman -S --needed $(comm -12 <(pacman -Slq|sort) <(sort badpkdlist) )<br />
<br />
Explanation:<br />
<br />
* {{ic|pacman -Slq}} lists all available softwares, but the list is sorted by repository first, hence the {{ic|sort}} command.<br />
* Sorted files are required in order to make the {{ic|comm}} command work.<br />
* The {{ic|-12}} parameter display lines common to both entries.<br />
* The {{ic|--needed}} switch is used to skip already installed packages.<br />
<br />
You may also try to install all unavailable packages (those not in the repos) from the AUR using [[yaourt]] (not recommended unless you know exactly what you are doing):<br />
<br />
$ yaourt -S --needed $(comm -13 <(pacman -Slq|sort) <(sort badpkdlist) )<br />
<br />
Finally, you may want to remove all the packages on your system that are not mentioned in the list.<br />
<br />
{{Warning|Use this command wisely, and always check the result prompted by pacman.}}<br />
<br />
# pacman -Rsu $(comm -23 <(pacman -Qq|sort) <(sort pkglist))<br />
<br />
=== List installed packages that are not in a specified group or repository ===<br />
<br />
The following command will list any installed packages that are not in either {{Grp|base}} or {{Grp|base-devel}}, and as such were likely installed manually by the user:<br />
<br />
$ comm -23 <(pacman -Qeq | sort) <(pacman -Qgq base base-devel | sort)<br />
<br />
List all installed packages that are not in specified repository ({{ic|''repo_name''}} in example):<br />
<br />
$ comm -23 <(pacman -Qtq | sort) <(pacman -Slq ''repo_name'' | sort)<br />
<br />
List all installed packages that are in the {{ic|''repo_name''}} repository:<br />
<br />
$ comm -12 <(pacman -Qtq | sort) <(pacman -Slq ''repo_name'' | sort)<br />
<br />
=== Listing all changed files from packages ===<br />
If you are suspecting file corruption (e.g. by software / hardware failure), but don't know for sure whether / which files really got corrupted, you might want to compare with the hash sums in the packages. This can be done with the following script.<br />
<br />
The script depends on the accuracy of pacman's database in {{ic|/var/lib/pacman/local/}} and the used programs such as ''bash'', ''grep'' and so on. For recovery of the database see [[#Restore pacman's local database]]. The {{ic|mtree}} files can also be [[#Viewing a single file inside a .pkg file|extracted as {{ic|.MTREE}} from the respective package files]].<br />
<br />
{{Note|<br />
* This should '''not''' be used as is when suspecting malicious changes! In this case security precautions such as using a live medium and an independent source for the hash sums are advised.<br />
* This could take a long time, depending on the hardware and installed packages.<br />
}}<br />
<br />
{{bc|<nowiki><br />
#!/bin/bash -e<br />
<br />
# Select the hash algorithm. Currently available (see mtree files and mtree(5)):<br />
# md5, sha256<br />
algo="md5"<br />
<br />
for package in /var/lib/pacman/local/*; do<br />
[ "$package" = "/var/lib/pacman/local/ALPM_DB_VERSION" ] && continue<br />
<br />
# get files and hash sums<br />
zgrep " ${algo}digest=" "$package/mtree" | grep -Ev '^\./\.[A-Z]+' | \<br />
sed 's/^\([^ ]*\).*'"${algo}"'digest=\([a-f0-9]*\).*/\1 \2/' | \<br />
while read -r file hash<br />
do<br />
# expand "\nnn" (in mtree) / "\0nnn" (for echo) escapes of ASCII<br />
# characters (octal representation)<br />
for ascii in $(grep -Eo '\\[0-9]{1,3}' <<< "$file"); do<br />
file="$(sed "s/\\$ascii/$(echo -e "\0${ascii:1}")/" <<< "$file")"<br />
done<br />
<br />
# check file hash<br />
if [ "$("${algo}sum" /"$file" | awk '{ print $1; }')" != "$hash" ]; then<br />
echo "$(basename "$package")" /"$file"<br />
fi<br />
done<br />
done<br />
</nowiki>}}<br />
<br />
=== Reinstalling all packages ===<br />
To reinstall all native packages, use:<br />
<br />
# pacman -Qenq | pacman -S -<br />
<br />
Foreign (AUR) packages must be reinstalled separately; you can list them with {{ic|pacman -Qemq}}.<br />
<br />
Pacman preserves the installation reason by default.<br />
<br />
=== Restore pacman's local database ===<br />
<br />
Signs that pacman needs a local database restoration:<br />
<br />
* {{ic|pacman -Q}} gives absolutely no output, and {{Ic|pacman -Syu}} erroneously reports that the system is up to date.<br />
* When trying to install a package using {{ic|pacman -S package}}, and it outputs a list of already satisfied dependencies.<br />
* When {{ic|testdb}} (part of {{Pkg|pacman}}) reports database inconsistency.<br />
<br />
Most likely, pacman's database of installed software, {{ic|/var/lib/pacman/local}}, has been corrupted or deleted. While this is a serious problem, it can be restored by following the instructions below.<br />
<br />
Firstly, make sure pacman's log file is present:<br />
<br />
$ ls /var/log/pacman.log<br />
<br />
If it does not exist, it is ''not'' possible to continue with this method. You may be able to use [https://bbs.archlinux.org/viewtopic.php?pid=670876 Xyne's package detection script] to recreate the database. If not, then the likely solution is to re-install the entire system.<br />
<br />
==== Log filter script ====<br />
{{hc|pacrecover|<nowiki><br />
#!/bin/bash -e<br />
<br />
. /etc/makepkg.conf<br />
<br />
PKGCACHE=$((grep -m 1 '^CacheDir' /etc/pacman.conf || echo 'CacheDir = /var/cache/pacman/pkg') | sed 's/CacheDir = //')<br />
<br />
pkgdirs=("$@" "$PKGDEST" "$PKGCACHE")<br />
<br />
while read -r -a parampart; do<br />
pkgname="${parampart[0]}-${parampart[1]}-*.pkg.tar.xz"<br />
for pkgdir in ${pkgdirs[@]}; do<br />
pkgpath="$pkgdir"/$pkgname<br />
[ -f $pkgpath ] && { echo $pkgpath; break; };<br />
done || echo ${parampart[0]} 1>&2<br />
done<br />
</nowiki>}}<br />
<br />
Make the script executable:<br />
<br />
$ chmod +x pacrecover<br />
<br />
==== Generating the package recovery list ====<br />
<br />
{{Warning|If for some reason your [[pacman]] cache or [[makepkg]] package destination contain packages for other architectures, remove them before continuation.}}<br />
<br />
Run the script (optionally passing additional directories with packages as parameters):<br />
<br />
$ paclog-pkglist /var/log/pacman.log | ./pacrecover >files.list 2>pkglist.orig<br />
<br />
This way two files will be created: {{Ic|files.list}} with package files, still present on machine and {{Ic|pkglist.orig}}, packages from which should be downloaded. Later operation may result in mismatch between files of older versions of package, still present on machine, and files, found in new version. Such mismatches will have to be fixed manually.<br />
<br />
Here is a way to automatically restrict second list to packages available in a repository:<br />
<br />
$ { cat pkglist.orig; pacman -Slq; } | sort | uniq -d > pkglist<br />
<br />
Check if some important ''base'' package are missing, and add them to the list:<br />
<br />
$ comm -23 <(pacman -Sgq base) pkglist.orig >> pkglist<br />
<br />
Proceed once the contents of both lists are satisfactory, since they will be used to restore pacman's installed package database; {{ic|/var/lib/pacman/local/}}.<br />
<br />
==== Performing the recovery ====<br />
<br />
Define bash alias for recovery purposes:<br />
<br />
# recovery-pacman() {<br />
pacman "$@" \<br />
--log /dev/null \<br />
--noscriptlet \<br />
--dbonly \<br />
--force \<br />
--nodeps \<br />
--needed \<br />
#<br />
}<br />
<br />
{{ic|--log /dev/null}} allows to avoid needless pollution of pacman log, {{Ic|--needed}} will save some time by skipping packages, already present in database, {{Ic|--nodeps}} will allow installation of cached packages, even if packages being installed depend on newer versions. Rest of options will allow '''pacman''' to operate without reading/writing filesystem.<br />
<br />
Populate the sync database:<br />
<br />
# pacman -Sy<br />
<br />
Start database generation by installing locally available package files from {{ic|files.list}}:<br />
<br />
# recovery-pacman -U $(< files.list)<br />
<br />
Install the rest from {{ic|pkglist}}:<br />
<br />
# recovery-pacman -S $(< pkglist)<br />
<br />
Update the local database so that packages that are not required by any other package are marked as explicitly installed and the other as dependences. You will need be extra careful in the future when removing packages, but with the original database lost is the best we can do.<br />
<br />
# pacman -D --asdeps $(pacman -Qq)<br />
# pacman -D --asexplicit $(pacman -Qtq)<br />
<br />
Optionally check all installed packages for corruption:<br />
<br />
# pacman -Qk<br />
<br />
Optionally [[#Identify files not owned by any package]].<br />
<br />
Update all packages:<br />
<br />
# pacman -Su<br />
<br />
=== Recovering a USB key from existing install ===<br />
<br />
If you have Arch installed on a USB key and manage to mess it up (e.g. removing it while it is still being written to), then it is possible to re-install all the packages and hopefully get it back up and working again (assuming USB key is mounted in /newarch)<br />
<br />
# pacman -S $(pacman -Qq --dbpath /newarch/var/lib/pacman) --root /newarch --dbpath /newarch/var/lib/pacman<br />
<br />
=== Extracting contents of a .pkg file ===<br />
<br />
The {{ic|.pkg}} files ending in {{ic|.xz}} are simply tar'ed archives that can be decompressed with:<br />
<br />
$ tar xvf package.tar.xz<br />
<br />
If you want to extract a couple of files out of a {{ic|.pkg}} file, this would be a way to do it.<br />
<br />
=== Viewing a single file inside a .pkg file ===<br />
<br />
For example, if you want to see the contents of {{ic|/etc/systemd/logind.conf}} supplied within the {{Pkg|systemd}} package:<br />
<br />
$ tar -xOf /var/cache/pacman/pkg/systemd-204-3-x86_64.pkg.tar.xz etc/systemd/logind.conf<br />
<br />
Or you can use {{pkg|vim}}, then browse the archive:<br />
<br />
$ vim /var/cache/pacman/pkg/systemd-204-3-x86_64.pkg.tar.xz<br />
<br />
=== Find applications that use libraries from older packages ===<br />
<br />
Even if you installed a package the existing long-running programs (like daemons and servers) still keep using code from old package libraries. And it is a bad idea to let these programs running if the old library contains a security bug.<br />
<br />
Here is a way how to find all the programs that use old packages code:<br />
<br />
# lsof +c 0 | grep -w DEL | awk '1 { print $1 ": " $NF }' | sort -u<br />
It will print running program name and old library that was removed or replaced with newer content.</div>Zekesonxxhttps://wiki.archlinux.org/index.php?title=Steam&diff=397166Steam2015-09-02T04:09:24Z<p>Zekesonxx: /* Launching games with custom commands, such as Bumblebee/Primus */ Add mention of command "nullification"</p>
<hr />
<div>[[Category:Gaming]]<br />
[[ja:Steam]]<br />
[[ru:Steam]]<br />
[[zh-CN:Steam]]<br />
{{Related articles start}}<br />
{{Related|Steam/Wine}}<br />
{{Related|Steam/Game-specific troubleshooting}}<br />
{{Related articles end}}<br />
From [[Wikipedia:Steam (software)|Wikipedia]]:<br />
: ''Steam is a digital distribution, digital rights management, multiplayer and communications platform developed by Valve Corporation. It is used to distribute games and related media online, from small independent developers to larger software houses.''<br />
<br />
[http://store.steampowered.com/about/ Steam] is best known as the platform needed to play Source Engine games (e.g. Half-Life 2, Counter-Strike). Today it offers many games from many other developers.<br />
<br />
== Installation ==<br />
<br />
{{Note|<br />
* Arch Linux is '''not''' [https://support.steampowered.com/kb_article.php?ref&#61;1504-QHXN-8366 officially supported].<br />
* Because the Steam client is a 32-bit application, you will need to enable the [[multilib]] repository if you have a 64-bit system. It may also make sense to install {{Grp|multilib-devel}} to provide some important multilib libraries.<br />
}}<br />
<br />
To install Steam, [[install]] the {{Pkg|steam}} package. If you have a 64-bit system, enable the [[multilib]] repository first.<br />
<br />
Steam is not supported on this distribution. As such some fixes are needed on the users part to get things functioning properly:<br />
<br />
*Steam makes heavy usage of the Arial font. A decent Arial font to use is {{Pkg|ttf-liberation}} or [[#Text is corrupt or missing|the fonts provided by Steam]]. Asian languages require {{Pkg|wqy-zenhei}} to display properly.<br />
<br />
*'''If you have a 64-bit system, you will need to install [[Xorg#Driver installation|the 32-bit version of your graphics driver]] (the package in the ''Multilib Package'' column) to run 32-bit games'''.<br />
<br />
*If you have a 64-bit system, you will need to install {{pkg|lib32-alsa-plugins}} to enable sound in 32-bit games.<br />
<br />
*Several games have dependencies which may be missing from your system. If a game fails to launch (often without error messages) then make sure all of the libraries listed in [[Steam/Game-specific troubleshooting]] are installed.<br />
<br />
== Starting Steam ==<br />
<br />
=== Big Picture Mode (with a Display Manager) ===<br />
<br />
To start Steam in Big Picture Mode from a Display Manager (such as LightDM), create a {{ic|/usr/share/xsessions/steam-big-picture.desktop}} file with the following content:<br />
<br />
{{hc|/usr/share/xsessions/steam-big-picture.desktop|<nowiki><br />
[Desktop Entry]<br />
Name=Steam Big Picture Mode<br />
Comment=Start Steam in Big Picture Mode<br />
Exec='/usr/bin/steam -bigpicture'<br />
TryExec='/usr/bin/steam -bigpicture'<br />
Icon=<br />
Type=Application</nowiki>}}<br />
<br />
Alternatively, under Steam > Settings > Interface, check 'Start Steam in Big Picture Mode' and start Steam normally. This can behave slightly better with certain window managers than the command line option.<br />
<br />
=== Silent Mode ===<br />
<br />
If your steam main window is showing at startup, you can add the {{ic|-silent}} parameter to your startup command to hide the window:<br />
/usr/bin/steam -silent %U<br />
<br />
alternatively, you can edit the following desktop file, and manually add the parameter:<br />
<br />
{{hc|~/.config/autostart/steam.desktop|<nowiki><br />
[Desktop Entry]<br />
Name=Steam<br />
Comment=Application for managing and playing games on Steam<br />
Exec=/usr/bin/steam -silent %U<br />
Icon=steam<br />
Terminal=false<br />
Type=Application<br />
Categories=Network;FileTransfer;Game;<br />
MimeType=x-scheme-handler/steam;<br />
Actions=Store;Community;Library;Servers;Screenshots;News;Settings;BigPicture;Friends;<br />
...</nowiki>}}<br />
<br />
== Troubleshooting ==<br />
<br />
{{Note|In addition to being documented here, any bug/fix/error should be, if not already, reported on Valve's bug tracker on their [https://github.com/ValveSoftware/steam-for-linux GitHub page].}}<br />
<br />
=== Steam runtime issues ===<br />
<br />
[https://github.com/ValveSoftware/steam-runtime/issues/13 Upstream GitHub issue tracker]<br />
<br />
Steam ships with its own versions of some libraries (the "Steam Runtime") in an attempt to emulate the Ubuntu 12.04 environment in later versions of Ubuntu.<br />
<br />
However, some core libraries included in the Steam Runtime will often conflict with the newer versions of other libraries included in Arch Linux (such as drivers, and specifically the open-source [[ATI]] driver).<br />
<br />
You can work around this by deleting the Steam Runtime versions of these libraries, forcing Steam to fall back to the up-to-date system versions (the ones installed by [[pacman]]).<br />
<br />
Note that Steam will frequently re-install these runtime libraries when Steam is updated, so until [https://github.com/ValveSoftware/steam-runtime/issues/13 ValveSoftware/steam-runtime#13] is resolved, whenever Steam updates, you should exit, remove the libraries, and restart it again.<br />
<br />
Run this command to remove the runtime libraries known to cause issues on Arch Linux:<br />
<br />
{{bc|<br />
find ~/.steam/root/ \( -name "libgcc_s.so*" -o -name "libstdc++.so*" -o -name "libxcb.so*" \) -print -delete<br />
}}<br />
<br />
If the above command does not work, run the above command again, then run this command. <br />
{{bc|<br />
find ~/.local/share/Steam/ \( -name "libgcc_s.so*" -o -name "libstdc++.so*" -o -name "libxcb.so*" \) -print -delete<br />
}}<br />
<br />
Alternatively you can run steam overriding those libraries.<br />
{{bc|<br />
LD_PRELOAD&#61;'/usr/$LIB/libstdc++.so.6 /usr/$LIB/libgcc_s.so.1 /usr/$LIB/libxcb.so.1' steam<br />
}}<br />
<br />
Examples of issues / error messages known to occur if these libraries are present:<br />
<br />
* {{ic|Failed to load libGL: undefined symbol: xcb_send_fd}}<br />
* {{ic|ERROR: ld.so: object '~/.local/share/Steam/ubuntu12_32/gameoverlayrenderer.so' from LD_PRELOAD cannot be preloaded (wrong ELF class: ELFCLASS32): ignored.}}<br />
* Problems with 64-bit games like XCOM<br />
* "OpenGL GLX context is not using direct rendering, which may cause performance problems." [[#OpenGL not using direct rendering / Steam crashes Xorg|(see below)]]<br />
* "Could not find required OpenGL entry point 'glGetError'! Either your video card is unsupported or your OpenGL driver needs to be updated."<br />
* The Steam client itself crashing<br />
<br />
Forum threads:<br />
<br />
* https://bbs.archlinux.org/viewtopic.php?id=181171<br />
* https://bbs.archlinux.org/viewtopic.php?id=183141<br />
<br />
See also [[#Using native runtime]] below.<br />
<br />
=== The close button only minimizes the window ===<br />
<br />
: Valve GitHub [https://github.com/ValveSoftware/steam-for-linux/issues/1025 issue 1025]<br />
<br />
To close the Steam window (and remove it from the taskbar) when you press '''x''', but keep Steam running in the tray, export the environment variable {{ic|1=STEAM_FRAME_FORCE_CLOSE=1}}. See [[Environment variables#Graphical applications]].<br />
<br />
=== Audio not working ===<br />
<br />
If you do not have audio in the videos which play within the Steam client, it is possible that the ALSA libs packaged with Steam are not working.<br />
<br />
If launching Steam from a terminal and attempting to playback a video within the steam client results in an error similar to the following:<br />
<br />
ALSA lib pcm_dmix.c:1018:(snd_pcm_dmix_open) unable to open slave<br />
<br />
There is a workaround which involves renaming or deleting some Steam Runtime folders and library files. The bugs have already been reported here: [https://github.com/ValveSoftware/steam-for-linux/issues/3376 #3376] and [https://github.com/ValveSoftware/steam-for-linux/issues/3504 #3504]<br />
<br />
The solution is to rename or delete the {{ic|alsa-lib}} folder and the {{ic|libasound.so.*}} files. They can be found within {{bc|~/.steam/steam/ubuntu12_32/steam-runtime/i386/usr/lib/i386-linux-gnu/}}<br />
<br />
=== Text is corrupt or missing ===<br />
<br />
The Steam Support [https://support.steampowered.com/kb_article.php?ref=1974-YFKL-4947 instructions] for Windows seem to work on Linux also.<br />
<br />
You can install them via the {{AUR|steam-fonts}} package, or manually by downloading and [[fonts#Manual installation|installing]] [https://support.steampowered.com/downloads/1974-YFKL-4947/SteamFonts.zip SteamFonts.zip].<br />
<br />
{{Note|When steam cannot find the Arial fonts, font-config likes to fall back onto the Helveticia bitmap font. Steam does not render this and possibly other bitmap fonts correctly, so either removing problem fonts or [[Font configuration#Disable bitmap fonts|disabling bitmap fonts]] will most likely fix the issue without installing the Arial or ArialBold fonts.<br />
<br />
The font being used in place of Arial can be found with the command {{bc|$ fc-match -v Arial}}}}<br />
<br />
=== SetLocale('en_US.UTF-8') fails at game startup ===<br />
<br />
Uncomment {{ic|en_US.UTF-8 UTF-8}} in {{ic|/etc/locale.gen}} and then run {{ic|locale-gen}} as root.<br />
<br />
=== The game crashes immediately after start ===<br />
<br />
If your game crashes immediately, try disabling: ''"Enable the Steam Overlay while in-game"'' in game ''Properties''.<br />
<br />
=== OpenGL not using direct rendering / Steam crashes Xorg ===<br />
<br />
Sometimes presented with the error message "OpenGL GLX context is not using direct rendering, which may cause performance problems." [https://support.steampowered.com/kb_article.php?ref=9938-EYZB-7457]<br />
<br />
If you still encounter this problem after addressing [[#Steam runtime issues]], you have probably not installed your 32-bit graphics driver correctly. See [[Xorg#Driver installation]] for which packages to install.<br />
<br />
You can check/test if it is installed correctly by installing {{Pkg|lib32-mesa-demos}} and running the following command:<br />
<br />
$ glxinfo32 | grep OpenGL.<br />
<br />
=== No audio in certain games ===<br />
<br />
If there is no audio in certain games, and the suggestions provided in [[Steam/Game-specific troubleshooting]] do not fix the problem, [[#Using native runtime]] may provide a successful workaround. (See the note about "Steam Runtime issues" at the top of this section.)<br />
<br />
=== You are missing the following 32-bit libraries, and Steam may not run: libGL.so.1 ===<br />
<br />
You may encounter this error when you launch Steam at first time. Make sure you have installed the {{ic|lib32}} version of all your video drivers as described in [[#Installation]]<br />
<br />
In some cases, if you get this error after reinstalling your Nvidia proprietary drivers, or switching from a version to another, [[reinstall]] {{Pkg|lib32-nvidia-utils}} and {{Pkg|lib32-nvidia-libgl}}.<br />
<br />
=== Games do not launch on older intel hardware ===<br />
<br />
On older Intel hardware, if the game immediately crashes when run, it may be because your hardware does not directly support the latest OpenGL. It appears as a gameoverlayrenderer.so error in /tmp/dumps/mobile_stdout.txt, but looking in /tmp/gameoverlayrenderer.log it shows a GLXBadFBConfig error. <br />
<br />
This can be fixed, however, by forcing the game to use a later version of OpenGL than it wants. Right click on the game, select Properties. Then, click "Set Launch Options" in the "General" tab and paste the following:<br />
<br />
MESA_GL_VERSION_OVERRIDE=3.1 MESA_GLSL_VERSION_OVERRIDE=140 %command%<br />
<br />
=== Steam enables unwanted network interfaces ===<br />
<br />
{{Note|This fix is no longer necessary, as Valve addressed this issue in the [http://store.steampowered.com/news/16382/ update of 9th April 2015].}}<br />
<br />
If you are running Network Manager, starting up Steam can cause it to turn on disabled network interfaces. To get around this you can add a network config rule to polkit to deny the Steam application from being able to access Network Manager. To do this, simply create the following file:<br />
<br />
{{hc|/etc/polkit-1/rules.d/99-networkmanager-steam.rules|<nowiki><br />
polkit.addRule(function(action, subject) {<br />
if (action.id.indexOf("org.freedesktop.NetworkManager.") == 0) {<br />
var filepath = polkit.spawn(["cat", "/proc/"+subject.pid+"/cmdline"]);<br />
<br />
if(polkit.spawn(["basename", filepath]) == "steam\n") {<br />
return polkit.Result.NO;<br />
}<br />
}<br />
});</nowiki>}}<br />
<br />
=== Unable to add library folder because of missing execute permissions ===<br />
<br />
If you add another steam library folder on another drive, you might receive the error message ''"New Steam library folder must be on a filesystem mounted with execute permissions"''.<br />
<br />
Make you sure you are mounting the filesystem with the correct flags in your {{ic|/etc/fstab}}, usually by adding {{ic|exec}} to the list of mount parameter. The parameter must occur after any {{ic|user}} or {{ic|users}} parameter since these can imply {{ic|noexec}}.<br />
<br />
This error might also occur if you are readding a library folder and Steam is unable to find a contained {{ic|steamapps}} folder. Previous versions used {{ic|SteamApps}} instead, so ensure the name is fully lowercase.<br />
<br />
== Launching games with custom commands, such as Bumblebee/Primus ==<br />
<br />
Steam has fortunately added support for launching games using your own custom command. To do so, navigate to the Library page, right click on the selected game, click Properties, and Set Launch Options. Steam replaces the tag {{ic|%command%}} with the command it actually wishes to run. For example, to launch Team Fortress 2 with primusrun and at resolution 1920x1080, you would enter:<br />
<br />
primusrun %command% -w 1920 -h 1080<br />
<br />
On some systems optirun gives better performances than primusrun, however some games may crash shortly after the launch. This may be fixed preloading the correct version of libGL. Use:<br />
<br />
locate libGL<br />
<br />
to find out the available implementations. For a 64 bits game you may want to preload the nvidia 64 bits libGL, then use the launch command:<br />
<br />
LD_PRELOAD=/usr/lib/nvidia/libGL.so optirun %command%<br />
<br />
If you are running the [[Linux-ck]] kernel, you may have some success in reducing overall latencies and improving performance by launching the game in SCHED_ISO (low latency, avoid choking CPU) via {{Pkg|schedtool}}<br />
<br />
# schedtool -I -e %command% ''other arguments''<br />
<br />
Also keep in mind that Steam [http://i.imgur.com/oJcLDBi.png doesn't really care] what you want it to run. By setting {{ic|%command%}} to an environment variable, you can have Steam run whatever you would like. For example, the Launch Option used in the image above:<br />
<br />
IGNORE_ME=%command% glxgears<br />
<br />
== Killing standalone compositors when launching games ==<br />
<br />
Further to this, utilising the {{ic|%command%}} switch, you can kill standalone compositors (such as Xcompmgr or [[Compton]]) - which can cause lag and tearing in some games on some systems - and relaunch them after the game ends by adding the following to your game's launch options.<br />
<br />
killall compton && %command%; nohup compton &<br />
<br />
Replace {{ic|compton}} in the above command with whatever your compositor is. You can also add -options to {{ic|%command%}} or {{ic|compton}}, of course.<br />
<br />
Steam will latch on to any processes launched after {{ic|%command%}} and your Steam status will show as in game. So in this example, we run the compositor through {{ic|nohup}} so it is not attached to Steam (it will keep running if you close Steam) and follow it with an ampersand so that the line of commands ends, clearing your Steam status.<br />
<br />
== Using native runtime ==<br />
<br />
Steam, by default, ships with a copy of every library it uses, packaged within itself, so that games can launch without issue. This can be a resource hog, and the slightly out-of-date libraries they package may be missing important features (Notably, the OpenAL version they ship lacks [[Gaming#Binaural_Audio_with_OpenAL|HRTF]] and surround71 support). To use your own system libraries, you can run Steam with:<br />
<br />
$ STEAM_RUNTIME=0 steam<br />
<br />
However, if you are missing any libraries Steam makes use of, this will fail to launch properly. An easy way to find the missing libraries is to run the following commands:<br />
<br />
$ cd ~/.local/share/Steam/ubuntu12_32<br />
$ LD_LIBRARY_PATH=".:${LD_LIBRARY_PATH}" ldd $(file *|sed '/ELF/!d;s/:.*//g')|grep 'not found'|sort|uniq<br />
<br />
{{Note|The libraries will have to be 32-bit, which means you may have to download some from the AUR if on x86_64, such as NetworkManager.}}<br />
<br />
Once you have done this, run steam again with {{ic|1=STEAM_RUNTIME=0 steam}} and verify it is not loading anything outside of the handful of steam support libraries:<br />
<br />
$ < /proc/$(pidof steam)/maps|sed '/\.local/!d;s/.* //g'|sort|uniq<br />
<br />
'''Convenience repository'''<br />
<br />
The unofficial [[Unofficial_user_repositories#alucryd-multilib|alucryd-multilib]] repository contains all libraries needed to run native steam on x86_64. Please note that, for some reason, steam does not pick up sdl2 or libav* even if you have them installed. It will still use the ones it ships with.<br />
<br />
All you need to install is the meta-package {{ic|steam-libs}}, it will pull all the libs for you. Please report if there is any missing library, the maintainer already had some lib32 packages installed so a library may have been overlooked.<br />
<br />
== Skins for Steam ==<br />
<br />
{{Note|Using skins that are not up-to-date with the version of the Steam client may cause visual errors.}}<br />
<br />
The Steam interface can be fully customized by copying its various interface files in its skins directory and modifying them.<br />
<br />
An extensive list of skins can be found on [http://forums.steampowered.com/forums/showthread.php?t=1161035 Steam's forums].<br />
<br />
=== Steam skin manager ===<br />
<br />
The process of applying a skin to Steam can be greatly simplified by installing the {{AUR|steam-skin-manager}}{{Broken package link|{{aur-mirror|steam-skin-manager}}}} package. The package also comes with a hacked version of the Steam launcher which allows the window manager to draw its borders on the Steam window.<br />
<br />
As a result, skins for Steam will come in two flavors, one with and one without window buttons. The skin manager will prompt you whether you use the hacked version or not, and will automatically apply the theme corresponding to your GTK+ theme if it is found. You can of course still apply another skin if you want.<br />
<br />
The package ships with two themes for the default Ubuntu themes, Ambiance and Radiance.<br />
<br />
== Changing the Steam friends notification placement ==<br />
<br />
{{Note|A handful of games do not support this, for example this can not work with XCOM: Enemy Unknown.}}<br />
<br />
=== Use a skin ===<br />
<br />
You can create a skin that does nothing but change the notification corner. First you need to create the directories:<br />
<br />
$ mkdir -p $HOME/Top-Right/resource<br />
$ cp -R $HOME/.steam/steam/resource/styles $HOME/Top-Right/resource/<br />
$ mv $HOME/Top-Right $HOME/.local/share/Steam/skins/<br />
$ cd .local/share/Steam/skins/<br />
$ cp -R Top-Right Top-Left && cp -R Top-Right Bottom-Right<br />
<br />
Then modify the correct files. {{ic|Top-Right/resource/styles/gameoverlay.style}} will change the corner for the in-game overlay whereas {{ic|steam.style}} will change it for your desktop.<br />
<br />
Now find the entry: {{ic|Notifications.PanelPosition}} in whichever file you opened and change it to the appropriate value, for example for Top-Right:<br />
<br />
Notifications.PanelPosition "TopRight"<br />
<br />
This line will look the same in both files. Repeat the process for all the 3 variants ({{ic|Top-Right}}, {{ic|Top-Left}} and {{ic|Bottom-Left}}) and adjust the corners for the desktop and in-game overlay to your satisfaction for each skin, then save the files.<br />
<br />
To finish you will have to select the skin in Steam: ''Settings > Interface'' and ''<default skin>'' in the drop-down menu.<br />
<br />
You can use these files across distributions and even between Windows and Linux (OS X has its own entry for the desktop notification placement)<br />
<br />
=== On The fly patch ===<br />
<br />
This method is more compatible with future updates of Steams since the files in the skins above are updated as part of steam and as such if the original files change, the skin will not follow the graphics update to steam and will have to be re-created every time something like that happens. Doing things this way will also give you the ability to use per-game notification locations as you can run a patch changing the location of the notifications by specifying it in the launch options for games.<br />
<br />
Steam updates the files we need to edit everytime it updates (which is everytime it is launched) so the most effective way to do this is patching the file after Steam has already been launched.<br />
<br />
First you will need a patch:<br />
<br />
{{hc|$HOME/.steam/topright.patch|<nowiki><br />
--- A/steam/resource/styles/gameoverlay.styles 2013-06-14 23:49:36.000000000 +0000<br />
+++ B/steam/resource/styles/gameoverlay.styles 2014-07-08 23:13:15.255806000 +0000<br />
@@ -7,7 +7,7 @@<br />
mostly_black "0 0 0 240"<br />
semi_black "0 0 0 128"<br />
semi_gray "32 32 32 220"<br />
- Notifications.PanelPosition "BottomRight"<br />
+ Notifications.PanelPosition "TopRight"<br />
}<br />
<br />
styles<br />
<br />
</nowiki>}}<br />
<br />
{{Note|The patch file should have all above lines, including the newline at the end.}}<br />
<br />
You can edit the entry and change it between "BottomRight"(default), "TopRight" "TopLeft" and "BottomLeft": the following will assume you used "TopRight" as in the original file.<br />
<br />
Next create an alias in {{ic|$HOME/.bashrc}}:<br />
<br />
alias steam_topright='pushd $HOME/.steam/ && patch -p1 -f -r - --no-backup-if-mismatch < topright.patch && popd'<br />
<br />
Log out and back in to refresh the aliases. Launch Steam and wait for it to fully load, then run the alias <br />
<br />
$ steam_topright<br />
<br />
And most games you launch after this will have their notification in the upper right corner.<br />
<br />
You can also duplicate the patch and make more aliases for the other corners if you do not want all games to use the same corner so you can switch back.<br />
<br />
To automate the process you will need a script file as steam launch options cannot read your aliases. The location and name of the file could for example be '''$HOME/.scripts/steam_topright.sh''', and assuming that is the path you used, it needs to be executable:<br />
<br />
$ chmod +755 $HOME/.scripts/steam_topright.sh<br />
<br />
The contents of the file should be the following:<br />
<br />
#!/bin/sh<br />
pushd $HOME/.steam/ && patch -p1 -f -r - --no-backup-if-mismatch < topright.patch && popd<br />
<br />
And the launch options should be something like the following.<br />
<br />
$HOME/.scripts/steam_topright.sh && %command%<br />
<br />
There is another file in the same folder as '''gameoverlay.style''' folder called '''steam.style''' which has an entry with the exact same function as the file we patched and will change the notification corner for the desktop only (not in-game), but for editing this file to actually work it has to be set before steam is launched and the folder set to read-only so steam cannot re-write the file. Therefore the only two ways to modify that file is to make the directory read only so steam cannot change it when it is launched (can break updates) or making a skin like in method 1.<br />
<br />
== See also ==<br />
<br />
* https://wiki.gentoo.org/wiki/Steam</div>Zekesonxxhttps://wiki.archlinux.org/index.php?title=Talk:Epsxe_playstation_emulator&diff=394350Talk:Epsxe playstation emulator2015-08-28T19:58:51Z<p>Zekesonxx: Zekesonxx moved page Talk:Epsxe playstation emulator to Talk:EPSXe playstation emulator: Proper capitalization</p>
<hr />
<div>#REDIRECT [[Talk:EPSXe playstation emulator]]</div>Zekesonxxhttps://wiki.archlinux.org/index.php?title=Talk:EPSXe&diff=394349Talk:EPSXe2015-08-28T19:58:51Z<p>Zekesonxx: Zekesonxx moved page Talk:Epsxe playstation emulator to Talk:EPSXe playstation emulator: Proper capitalization</p>
<hr />
<div>actually it works for me, and i just copy paste the instructions</div>Zekesonxxhttps://wiki.archlinux.org/index.php?title=Epsxe_playstation_emulator&diff=394348Epsxe playstation emulator2015-08-28T19:58:51Z<p>Zekesonxx: Zekesonxx moved page Epsxe playstation emulator to EPSXe playstation emulator: Proper capitalization</p>
<hr />
<div>#REDIRECT [[EPSXe playstation emulator]]</div>Zekesonxxhttps://wiki.archlinux.org/index.php?title=EPSXe&diff=394347EPSXe2015-08-28T19:58:51Z<p>Zekesonxx: Zekesonxx moved page Epsxe playstation emulator to EPSXe playstation emulator: Proper capitalization</p>
<hr />
<div>[[Category:Gaming]]<br />
[[Category:Emulators]]<br />
ePSXe (enhanced PSX emulator) is a PlayStation emulator for x86-based PC hardware with Microsoft Windows or Linux, as well as devices running Android. It was written by three authors, using the aliases ''Calb'', ''_Demo_'' and ''Galtor''. ePSXe is closed source with the exception of the application programming interface (API) for its plug-ins.<br />
<br />
== Installation ==<br />
<br />
{{Warning|The installation and use of this emulator requires a Sony PlayStation BIOS file. You may not use such a file to play games in a PSX emulator if you do not own a Sony PlayStation, Sony PSOne or Sony PlayStation 2 console. Owning the BIOS image without owning the actual console is a violation of copyright law. You have been warned.}}<br />
<br />
Install {{AUR|epsxe}} from [[AUR]], along with any [https://aur.archlinux.org/packages.php?K=epsxe-plugin plugins]. Also, you should have a legally obtained BIOS file handy.<br />
<br />
Add yourself to the {{ic|games}} group:<br />
# usermod -G games -a USERNAME<br />
<br />
If the group does not exist, create it first:<br />
# groupadd games<br />
<br />
Run epsxe from the menu shortcut or by typing 'epsxe' into a terminal.<br />
<br />
== Configuration ==<br />
<br />
Configure video and sound by going to ''Config > Video'' and ''Config > Sound'' respectively, and configuring the plugins you want. Verify that they are working by clicking the Test buttons in each of the windows.<br />
<br />
The CD-ROM path should be set by default. You can check it by going to ''Config > Cdrom''.<br />
<br />
Set up the controls for player one by going to ''Config > Game Pad > Port 1 > Pad 1''.<br />
<br />
== Playing ==<br />
<br />
Run a game from your CD-ROM by clicking ''File > Run CDROM''.<br />
<br />
Load up a game from an ISO by clicking ''File > Run ISO''.<br />
<br />
You can manipulate game states by going to ''Run > Save State (F1)'' and ''Run > Load State (F3)'', or using the hotkeys F1 and F3.<br />
<br />
== Troubleshooting ==<br />
<br />
=== xgl2 plugin does not work ===<br />
<br />
You will have to install nvidia-utils, if running from a 32-bit chroot.<br />
<br />
=== Sound device not found ===<br />
<br />
If the sound plugin does not work and you are using alsa, run:<br />
# modprobe snd-pcm-oss<br />
<br />
== See also ==<br />
<br />
* ePSXe - http://www.epsxe.com/<br />
* Pete's PSX plugins - http://www.pbernert.com/index.htm</div>Zekesonxxhttps://wiki.archlinux.org/index.php?title=Laptop/Dell&diff=391297Laptop/Dell2015-08-16T05:01:36Z<p>Zekesonxx: Added Dell Inspiron M5030</p>
<hr />
<div>[[Category:Dell]]<br />
{{Laptops navigation}}<br />
<br />
== Model List ==<br />
<br />
{{HCL/Laptops table header}}<br />
| e1405 || Any || 3D with {{Pkg|xf86-video-intel}} 2.0, native resolution with {{Pkg|xorg-server}} 1.3 (1440x900) || Intel HD Audio with [[ALSA]] || Yes || Yes, ipw3945 || Yes || Suspend-to-RAM is shaky; hibernate is flawless || Untested || SD card reader works out-of-the-box || Everything else works without a hitch<br />
|-<br />
| E6420 || 2011.08.19 || Intel HD3000 {{Pkg|xf86-video-intel}} || Intel HD Audio with ALSA || Yes, e1000e || Yes, bcma-pci-bridge || Untested || Suspend-to-RAM good, hibernate not working || No modem || SD card reader works out-of-the-box, smart card reader works with ccid, opensc, pcsc-tools. Touchpad (alps a10) pointer aspens by default, install {{AUR|psmouse-elantech}} from the [[AUR]] to fix it ({{AUR|psmouse-alps}} does not work anymore) || Ethernet was not working in fresh installation, had to clone repositories to HDD and update<br />
|-<br />
| E6530 || 2014.10.01 || NVIDIA NVS5200 3D works flawlessly with either {{Pkg|nvidia}} or {{Pkg|xf86-video-nouveau}} (1600x900). || Intel HD Audio with ALSA || Yes || Intel Centrino A-N (with iwlwifi) || Flawless. File transfer and Audio streaming works || Suspend-to-RAM perfect. Hibernate perfect. Disk spindown perfect. || Untested || SD card reader, ALPS touchpad with gestures, and Webcam work flawlessly. Integrated and external microphone ports work flawlessly. Backlit keyboard, monitor backlight, audio up/down/mute controls all work flawlessly. || HDMI video works but must disable Optimus in bios. HDMI audio out works. If Optimus enabled, Intel HD4000 will be used and optirun works. Prevents use of HDMI (VGA only) but otherwise works.<br />
|-<br />
| d420 || Duke || {{Pkg|xf86-video-intel}}, native resolution with {{Pkg|xorg-server}} 1.2 (1280x800) || Intel HD Audio with ALSA || Yes (with tg3) || Yes (with ipw3945) || N/A || || Untested || Have not tested SD card reader || External D-Bay DVD/CD-RW works, docking station mostly works (can un-dock, but locks up on re-docking)<br />
|-<br />
| d620 || Duke || 3D with NVIDIA, native resolution with {{Pkg|xorg-server}} 1.2 (1440x900)<br> 3D with Intel 945GM, native resolution 1440x900 || Intel HD Audio with ALSA || Yes || Yes, bcm4311 PCI-E with bcm43xx. Yes for some models with iwl3945. || N/A || Suspend-to-RAM perfect, hibernate works fine. || Untested || not tested smart card reader || Everything else works without a hitch<br />
|-<br />
| d820 || Duke || 3D with NVIDIA drivers || Intel HD Audio with ALSA || Yes || Yes, IPW3945 || Yes || Suspending with [[KDE]] works || Untested || Everything works, even fingerprint reader with ''bioapi'' and ''pam_bioapi'' || Everything else works without a hitch<br />
|-<br />
| Inspiron 1420 || 2012.09 || 3D with {{Pkg|xf86-video-nouveau}} || Intel HD Audio with ALSA || Yes || Yes, {{AUR|broadcom-wl}} needed from the AUR || Untested || Untested || Untested || Untested || Everything that I have tested works great without any problems<br />
|-<br />
| Inspiron 1501 || Duke || 3D with proprietary ATI fglrx || Intel HD audio with ALSA || Yes || Yes, BCM4311 PCI-E with bcm43xx || N/A || Untested || Untested || Smart card reader works out-of-the-box || Everything else works without a hitch<br />
|-<br />
| XPS M1210 || Duke || 3D with NVIDIA open source drivers || SigmaTel audio with ALSA || ''b44'' module, out-of-the-box || IPW 3945, command-line {{Pkg|wireless_tools}} || Untested || Untested || Untested || rico card reader worked out-of-the-box, hot keys using keytouch, web cam works but is unstable. In [[MPlayer]], use {{ic|1=driver=v4l2:device=/dev/video0}} || Everything else works without a hitch<br />
|-<br />
| XPS L322 || 2013_03 || Intel HD 4000, with {{Pkg|xf86-video-intel}} || Intel HD Audio with ALSA || No Ethernet port || Yes || Untested || Yes || No modem || No SD card slot || ALPS Touchpad recognized only as PS/2 mouse, two-finger scroll, finger tap-to-click, etc... does not work. Some new mouse drivers suggest a fix but have not worked.<br />
|-<br />
| Inspiron 1520 || Core Dump || 3D with NVIDIA || SigmaTel audio with ALSA || ''b44'' module, out of the box || ''b43'', need firmware || Yes || Both hibernate and suspend-to-RAM and works with [[pm-utils]] || Untested || Hot keys work out-of-the-box || Everything else works without a hitch<br />
|-<br />
| [[Dell Inspiron 1525|Inspiron 1525]] || Arch Linux 2008.06 - "Overlord" FTP Install || 3D with {{Pkg|xf86-video-intel}} 2.4.3, native resolution with {{Pkg|xorg-server}} 1.5.3 (1280x800) || Intel HD Audio (SigmaTel STAC9228 codec) with ALSA || Marvell Yukon Gb Ethernet: Yes (''sky2'' module) || PRO/Wireless 3945ABG with ''iwlwifi-3945-ucode'' 15.28.2.8 || Untested (does not have) || Untested || Untested || SD card reader works out-of-the-box || {{ic|Fn+Up/Down}} (LCD brightness control) works independently of the OS. Everything else work out-of-the-box.<br />
|- <br />
| Inspiron 1525 || Core Dump (2008.03 ISO) || 3D with {{Pkg|xf86-video-intel}} 2.2, native resolution with {{Pkg|xorg-server}} 1.4 (1280x800)|| Intel HD Audio (SigmaTel STAC9228 codec) with ALSA || Marvell Yukon Gb Ethernet: Yes (''sky2'' module) || Broadcom BCM4310: Yes, [[ndiswrapper]] ([[AUR]] {{AUR|broadcom-wl}} works, but must blacklist {{ic|ssb}} module) || Untested (does not have) || Untested || Untested || SD card reader (Ricoh) works out-of-the-box || {{ic|Fn+Up/Down}} (LCD brightness control) works independently of the OS; media keys configured with KeyTouch. DVD-RW drive and everything else work out-of-the-box.<br />
|- <br />
| [[Dell Inspiron 1564|Inspiron 1564]] || Core Dump || 3D with either [[Catalyst]] or [[ATI|xf86-video-ati]]; both work flawlessly. || Intel HD Audio with ALSA || Realtek RTL8101E Ethernet Controller || Intel WiFi Link 5100 with ''iwlagn'' driver || Untested || Both suspend and hibernate work flawlessly with [[pm-utils]] || Untested || Realtek card reader works out-of-the-box. LCD brightness works out-of-the-box; volume keys need configuring through key bindings. || Overall, this laptop is Linux friendly.<br />
|- <br />
| Inspiron 1764 || 2011.08.19 || 3D with {{Pkg|xf86-video-intel}} || Works well with ALSA || Realtek RTL8101E 10/100 Ethernet Controller || [[Broadcom wireless|Broadcom BCM43224]] 802.11a/b/g/n works well with [[Broadcom_wireless#brcmsmac.2Fbrcmfmac|brcmsmac]] || Untested || Untested || Does not have a modem || SD card reader and LCD brightness {{ic|Fn}} keys work out-of-the-box || Fan control/monitoring is completely broken with {{AUR|i8kutils}}<br />
|-<br />
| Inspiron 1300 || Don't Panic (Core Dump version) || 3D with {{Pkg|xf86-video-intel}} || Intel || ''b44'' module works out-of-the-box || BCM4318-based card, works with [[ndiswrapper]] || N/A || Untested || Untested || -- || Everything works out-of-the-box except wireless and sometimes screen resolution<br />
|- <br />
| Inspiron Duo 1090 (hybrid touchscreen netbook/tablet) || 2014.10.01 || Intel Atom Integrated VGA graphics controller. Software 3D, works out-of-the-box (1366x768). || Intel HD Audio with ALSA || No. || Yes, Qualcomm Atheros (ath9k) || Untested || Suspend-to-RAM works flawlessly. Hibernate untested. || No. || eGalax touchscreen and Synaptics touchpad work flawlessly. All function keys (Power manager, Wifi on/off, touchpad on/off, brightness and audio up/down work flawlessly. Webcam and integrated microphone work. || Audio out works, no standard audio-in or video out ports. USB audio-in and USB video-out untested. <br />
|-<br />
| [[Dell XPS M1330]] || Don't Panic (2007.08-2) || For dedicated graphics (NVIDIA 8400m) works with NVIDIA package || Works with Intel HD Audio and ALSA, but need to configure microphone || Yes || Works with iwl4965 || Can set Bluetooth but have not tested with any devices || Suspend works fine with [[pm-utils]] (''acpi_cpufreq'' problem: [https://bbs.archlinux.org/viewtopic.php?id=44500 see forums]) || Untested || 2.0 MP web cam works with ''uvcvideo'', media keys work with keytouch or esekeyd, IR remote works, SD card works || Everything basically worked out-of-the-box except the microphone<br />
|- <br />
| Dell Latitude D830 || Don't Panic (2007.08-2) || NVIDIA Quadro NVS 140M with proprietary NVIDIA drivers || ALSA with the {{ic|snd_hda_intel}} module || Yes, with {{ic|tg3}} module || Yes, with {{ic|iwl3965}} module || Yes || Yes, with [[pm-utils]] || Untested || ||<br />
|- <br />
| Dell Studio XPS M1640 || (2009.08) || ATI HD4670 Mobile works with {{Pkg|xf86-video-ati}} (see the forums for 3D support); Catalyst drivers untested || Works with Intel HD Audio and ALSA. || Yes || Works with iwlagn || Bluetooth works || Works but when using {{Pkg|xf86-video-ati}}, there is video corruption upon boot || N/A || Web cam works, media keys work with the {{ic|dell_laptop}} kernel module, IR works, card reader works || Everything basically worked out-of-the-box<br />
|-<br />
| Studio 1749 || 2013.01.04 || Radeon HD 5650M, {{ic|xf86-video-ati}} is almost flawless (just slower 3D), {{ic|catalyst}} is faster but has various issues. || HDA Intel MID, works with ALSA after adding {{ic|1=options snd-hda-intel index=0 model=dell-m6-dmic}} to {{ic|/etc/modprobe.d/alsa-base.conf}}. HDMI audio has some issues. || Yes || BCM43224, brcmsmac and {{AUR|broadcom-wl}} both work || N/A || Suspend works; hibernate untested. || N/A || SD card reader works, media keys work, web cam, and microphone both work. || Flawless except for poor 3D performance and battery life.<br />
|-<br />
| Precision M4800 || 2014.04.01 || System not usable if booted without kernel parameter {{ic|nomodeset}}. Nvidia Quadro K2100M works with {{Pkg|nvidia}}, but [[Nouveau]] does not work because it requires KMS. || Untested || Yes || Yes || Untested || Untested || No modem || N/A || {{ic|nomodeset}} is ''required'' to boot to a usable system, both with the Arch installation media and post-installation.<br />
|-<br />
| Inspiron 15 7000 Series (model 7537) || 2014.10.01 || Intel® HD Graphics 4400 || Untested || Yes RJ45 Ethernet || Came with Intel® 7260BGN + BT4.0 but never tested it. I switched the card to an Intel® 7260AG + BT4.0 Dual Band (IEEE 802.11AC) Works perfectly with iwlwifi driver || Yes, check wifi section for details. || Suspend-to-RAM perfect. Hibernate perfect. Disk spindown untested. || No modem || HDMI is currently untested. The touchpad needs a lot of modifying to scroll properly. || All of the hardware works flawlessly. Volume up / down button needs some modifying to work all other buttons work with drivers that come with the kernel. <br />
|-<br />
| Inspiron 15 7000 Series (model 7548) || 2015.05 || AMD Radeon® R7 M270 || Untested || N/A || Yes, works out of the box || Yes, works out of the box || Suspend-to-RAM perfect. Hibernate untested. Disk spindown untested. || No modem || HDMI is currently untested. The touchpad (clickpad) needs some tweaking to work properly. || Webcam works, SD card reader untested<br />
|-<br />
| Inspiron M5030 || Any || [[ATI]] works fine, [[catalyst]] untested || Yes, works out of the box || Yes || Yes, works out of the box || N/A || Untested || N/A || Everything works alright, and out of the box. || {{AUR|i8kutils}} required for fan control<br />
|}</div>Zekesonxxhttps://wiki.archlinux.org/index.php?title=User:Zekesonxx&diff=389706User:Zekesonxx2015-08-02T22:54:01Z<p>Zekesonxx: Why is the objective of golf to play the least amount of golf?</p>
<hr />
<div>I program things and sometimes contribute things.<br />
<br />
https://github.com/zekesonxx<br />
<br />
=== Computer Specs ===<br />
Desktop: i5-2320, 8GB RAM, GTX 970, running Windows 7 Home Premium 64-bit with dwm.exe.<br />
<br />
Laptop: Dell Inspiron M5030, running Arch 64-bit with xfce4, off a <del>16GB flash drive</del> 80GB 5400RPM hard drive! Whoo!.<br />
<br />
=== PGP Public Key ===<br />
See also: https://keybase.io/zekesonxx<br />
<br />
{{bc|<nowiki>-----BEGIN PGP PUBLIC KEY BLOCK-----<br />
Version: GnuPG v2<br />
<br />
mQENBFVG3q8BCACfVeKQGdGEVcywRrzSAFnmkwkwba30lAttnu4OHo76xbdR5g0G<br />
ztEeUrhcKBY6MYkzSkf74eY3Mez2XAK2RhCm4FgmEEtD/x4pRScryaFQqQqV5Mo4<br />
1V07+lmtJpfvivEFNGluZ5uTnSmk59bRPUXMSnqFjDuj9obFw4dukhmSRk6RPtic<br />
xcD1wndn+OfBYaHyll8zwAr8CSnIka52hCjp727TSUPKC08+qaI/wJJyRCUhtVxN<br />
7fNhZDyeDKX49+1wi8crz6bmDqi+gVzSE0SBgsQTCUpekU4x+AHl+gppppeESCra<br />
jA1J/QB2IMsXjMG3FPe8yA8H0Zez9o3M8xLXABEBAAG0K1pla2UgU29ueHggKHpl<br />
a2Vzb254eCkgPHpla2VAemVrZXNvbnh4LmNvbT6JATcEEwEKACEFAlVG3q8CGwMF<br />
CwkIBwMFFQoJCAsFFgIDAQACHgECF4AACgkQjNJlcJv94A5pXAf+PHqNnSzIdI3S<br />
Ox1T8s+x5kXrzkTvPjTNHTzPBFNxuXEd9C1JvYStCVLnXxyDZN1Jr1o+vjGl2FgL<br />
iddbBBMoZS0spF3q5E95w1kZnJ++hfaoVqnjZ7Hl/BRjc2WsgJA8yC51qsHe0Rk1<br />
UuiF4L/a8vVMuTqZhSb0/DLQEjyoAeK1GyJyTSKOWRTIP0sC7jiGUHylTqvVljKB<br />
/6AcHY1GOf2ECE71TREZnto2Q3SyB/9oim1jaB8128ZVk55SZL+ROi7lw9OHCIEj<br />
H8yLSBZ6bxLOYVPfUpGBOm2QYLmWaQI7eZYxRHEzu5jS5ciF6DQQl5Pxfg+h+rWO<br />
BfQeUEJsHIkCHAQQAQIABgUCVUgG1gAKCRARkYe3WlQrbAIjD/9gzJIJCJjB4QCp<br />
FoFUh9+3lD6Jvo5EG85TzbP97yMRaySS47PY2nMr/nXr3HJFHAK8VCWJdebZSDcB<br />
Fmk0dHHyJbeXLDXafI7cqYiI8OYZ5aHBVZ2bwsBpu2JKqCiuQMoXVthtTrYNq6Yo<br />
pt3UUmN4scmwY7sRZrw6hXBeduqAOG/ghs4aenDbD0rjQjnt4P+YFPk8k5Mle6i7<br />
xlftgPNEQXDSd5EQhN/dzKdPMLZcBuPh6JmQqDK0HJah7hweFLuNlcqF19Ug54ex<br />
aV9/9fOqv69RY146kpkNEuSWkOadmuHGUzQoCqZ2WcEe7c0orIfHMP7XwgcwKgx3<br />
z1jS4G/NMcxAMRR56zbtCBh4KCQtL+mIXmAyOgsK6JIXzDauXOVHn6KOor6tXAi5<br />
eO8n18q3s23fsLipGGrhGW7gs/j3vHC8784KXxn86IZTtecu+i1L+7ldM8+nfn88<br />
v94oLpfxjBmtZa1KdEd8Z/mhA6oNS15J5BLRxjDRAvAs74fs7GmUnTnSabEy1iZV<br />
VL2aL4ztgjZnR/IQP5637tuGGsgsiEZB/WGfEDFBNSbPXYWW3EgV2GP8ijxx6HWy<br />
JPfdGeDi5t56LGBGPDMAZQq4inOcWdkSrIICMHsulv0N6suMo4y1vnl4Vz3sZdsD<br />
uLovNlCWiPb76Ub8xlkZT7NKDJY7kbkBDQRVRt6vAQgAm52ktX/kWJKfaEJ5/TBy<br />
bGCTBaGrSrJUUts7LDvi8KKzd0AMjdoKwOvzYz6uUbfJP2MZWDgVMrOXaorsJQdE<br />
DGmHz8EPhXm7UOXM2qHI4927j8ExB4IHcFzW+LEwG9/Pl8O574Z/CNWjva2Y51FX<br />
7VI1KY/rxdPFg/3QZF554iq2YTdsCHlBWQNOL9skHHAxbs7qhyxZ35pq8LXO2TjN<br />
fPdZjWjMAFgwybcgTcyCKuA4vCJDjidz4BPJN7oKR2x9MPPDUTxeiO+MFe5+f8jg<br />
8VsPHak2RZO4/39HJ2UO2T+MOQw3ppaEoqx3lrmdkcY2h623JzBr0Mq4IubCShDw<br />
JQARAQABiQEfBBgBCgAJBQJVRt6vAhsMAAoJEIzSZXCb/eAObVkH/jfTOsLVeOFx<br />
QmT6kNOcxQ5Pl2acjUeIQfkrAuRUSO5+va0VE1bjVVpbCdgLNGEm7tedtrb3kgYy<br />
5RlDXE0ry08HD1y+IoFx4KJKEuacGocpXqr9O9AnyrAnuaP1HNAK4eGipUnJaFjL<br />
uFCA2E3ad74RBnZnTsbsmXmFIF6V5IZYWlKfKKn3+xtS24gK1YXQJZldK/7JUq7f<br />
IaoEB4TQsxVG62Ngktz452cekmidsKHibPBhbSCVpg6MGmVvkecD5D/Dwh4NLkA+<br />
1Bh4jnLUYGfnFpSU4hctIVzapvD8ys5zh6pVudVySE7dxAvE2U8R1rIigJoZUo4J<br />
dWgv/1++7DI=<br />
=Oi+R<br />
-----END PGP PUBLIC KEY BLOCK-----</nowiki>}}</div>Zekesonxxhttps://wiki.archlinux.org/index.php?title=Mirrors&diff=379426Mirrors2015-06-19T04:14:19Z<p>Zekesonxx: /* TOR Network */ "Tor" is not uppercase, and it should have a small blurb explaining it.</p>
<hr />
<div>[[Category:About Arch]]<br />
[[Category:Package management]]<br />
[[ar:Mirrors]]<br />
[[es:Mirrors]]<br />
[[fr:Miroirs]]<br />
[[it:Mirrors]]<br />
[[ja:ミラー]]<br />
[[ru:Mirrors]]<br />
[[zh-CN:Mirrors]]<br />
{{Related articles start}}<br />
{{Related|Mirroring}}<br />
{{Related|pacman}}<br />
{{Related|reflector}}<br />
{{Related articles end}}<br />
<br />
This page is a guide to selecting and configuring your mirrors, and a listing of current available mirrors.<br />
<br />
== Enabling a specific mirror ==<br />
<br />
To enable mirrors, edit {{ic|/etc/pacman.d/mirrorlist}} and locate your geographic region. Uncomment mirrors you would like to use.<br />
<br />
Example:<br />
<br />
# Any<br />
# Server = <nowiki>ftp://mirrors.kernel.org/archlinux/$repo/os/$arch</nowiki><br />
'''Server = <nowiki>http://mirrors.kernel.org/archlinux/$repo/os/$arch</nowiki>'''<br />
<br />
See [[#Mirror status]] and [[#List by speed]] for tools that help choosing mirrors.<br />
<br />
{{Tip|<br />
* Uncomment 5 favorite mirrors and place them at the top of the mirrorlist file. That way it's easy to find them and move them around if the first mirror on the list has problems. It also makes merging mirrorlist updates easier.<br />
* HTTP mirrors are faster than FTP, because of something called [[Wikipedia:HTTP persistent connection|persistent HTTP connection]]: with FTP, ''pacman'' has to establish a new connection to server each time it requests to download next package, resulting in a brief pause.}}<br />
<br />
It is also possible to specify mirrors in {{ic|/etc/pacman.conf}}. For the ''[core]'' repository, the default setup is:<br />
[core]<br />
Include = /etc/pacman.d/mirrorlist<br />
<br />
To use the ''HostEurope'' mirror as a default mirror, add it before the {{ic|Include}} line:<br />
[core]<br />
'''Server = <nowiki>ftp://ftp.hosteurope.de/mirror/ftp.archlinux.org/core/os/$arch</nowiki>'''<br />
Include = /etc/pacman.d/mirrorlist<br />
<br />
pacman will now try to connect to this mirror first. Proceed to do the same for ''[testing]'', ''[extra]'', and ''[community]'', if applicable.<br />
<br />
{{Note|If mirrors have been stated directly in {{ic|pacman.conf}}, remember to use the same mirror for all repositories. Otherwise packages that are incompatible to each other may be installed, like linux from ''[core]'' and an older kernel module from ''[extra]''.}}<br />
<br />
=== Force pacman to refresh the package lists ===<br />
<br />
After creating/editing {{ic|/etc/pacman.d/mirrorlist}}, (manually or by using {{ic|rankmirrors}}) issue the following command:<br />
# pacman -Syyu<br />
<br />
{{Tip|Passing two {{ic|--refresh}} or {{ic|-y}} flags forces pacman to refresh all package lists even if they are considered to be up to date. Issuing {{ic|pacman -Syyu}} ''whenever changing to a new mirror'' is good practice and will avoid possible issues.}}<br />
<br />
== Mirror status ==<br />
<br />
Check the status of the Arch mirrors and how updated they are by visiting https://www.archlinux.org/mirrors/status/.<br />
<br />
You can generate an up to date mirrorlist [https://www.archlinux.org/mirrorlist/ here], automate the process with a [[#Script to download from Mirrorlist Generator|script]], or install [[Reflector]], a utility that generates a mirrorlist using Mirrorcheck's list; you can also manually check how up-to-date a mirror is by:<br />
#picking a server and browsing to "extra/os/";<br />
#accessing https://www.archlinux.org/ in another browser tab or window; and<br />
#comparing the last-modified date of the {{ic|i686}} directory on the mirror to the ''[extra]'' date on the homepage, in the ''Package Repositories'' box to the right.<br />
<br />
== Sorting mirrors ==<br />
<br />
When downloading packages pacman uses the mirrors in the order they are in {{ic|/etc/pacman.d/mirrorlist}}. If not using {{Pkg|reflector}}, which has the ability to sort mirrors by both how updated they are and their speed, follow this demonstration of manual mirror sorting.<br />
<br />
{{Note|This does not apply to [[Improve pacman performance#Using_powerpill-light|powerpill-light]], which connects to many servers simultaneously to increase the overall download speed. The speed of individual connections becomes less relevant, and powerpill-light can be configured to require minimum speeds per connection.}}<br />
<br />
=== List by speed ===<br />
<br />
Take full advantage of using the fastest local mirror, which can be determined via the included Bash script, {{ic|/usr/bin/rankmirrors}}.<br />
<br />
Back up the existing {{ic|/etc/pacman.d/mirrorlist}}:<br />
<br />
# cp /etc/pacman.d/mirrorlist /etc/pacman.d/mirrorlist.backup<br />
<br />
Edit {{ic|/etc/pacman.d/mirrorlist.backup}} and uncomment mirrors for testing with {{ic|rankmirrors}}.<br />
<br />
Optionally run the following {{ic|sed}} line to uncomment every mirror:<br />
<br />
# sed -i 's/^#Server/Server/' /etc/pacman.d/mirrorlist.backup<br />
<br />
Finally, rank the mirrors. Operand {{ic|-n 6}} means only output the 6 fastest mirrors:<br />
<br />
# rankmirrors -n 6 /etc/pacman.d/mirrorlist.backup > /etc/pacman.d/mirrorlist<br />
<br />
Run {{ic|rankmirrors -h}} for a list of all the available options.<br />
<br />
===Combined listing by speed and status===<br />
It is not a good idea to just use the fastest mirrors, since the fastest mirrors might be out of date. The preferred way would be to use [[#List by speed]], then sorting those 6 fastest mirrors by their [[#Mirror status]].<br />
<br />
Simply visit either one or both [[#Mirror status]] links and sort them by the ones that are more up to date. Move the more up to date mirrors to the top of {{ic|/etc/pacman.d/mirrorlist}} and if the mirrors are way out of date simply do not use those; repeat the process leaving out the outdated mirrors. So this ends up with a total of 6 mirrors that are sorted by speed and status, leaving out outdated mirrors.<br />
<br />
When having mirror issues the above should be repeated. Or repeat once in a while even if not having mirror problems, to keep {{ic|/etc/pacman.d/mirrorlist}} up to date.<br />
<br />
=== Script to download from Mirrorlist Generator ===<br />
<br />
The [https://www.archlinux.org/mirrorlist/ Pacman Mirrorlist Generator] ranks mirrors based on geography, availability, and tiering. A script is available that can backup the previous mirrorlist then install a Mirrorlist Generator version. To install it use the AUR package {{AUR|armrr-git}} or download it with {{ic|curl -O https://raw.githubusercontent.com/Gen2ly/armrr/master/armrr}}. Run {{ic|armrr [*country code]}} or just {{ic|armrr}} for a country code prompt. Type {{ic|armrr -h,--help}} for more details.<br />
<br />
=== Using Reflector ===<br />
<br />
Alternatively, you can use [[Reflector]] to automatically retrieve the latest mirrorlist from the [https://www.archlinux.org/mirrors/status/ MirrorStatus] page, filter the most up-to-date mirrors, sort them by speed and overwrite the file {{ic|/etc/pacman.d/mirrorlist}}.<br />
<br />
=== Choosing a local mirror ===<br />
<br />
The simple way is to edit the mirrorlist file by placing a local mirror at the top of the list. pacman will then use this mirror for preference.<br />
<br />
Alternatively {{ic|/etc/pacman.conf}} can be edited by placing a local mirror before the line sourcing the mirrorlist file, i.e. where it says "add your preferred servers here". It is safer if you use the same server for each repository.<br />
<br />
=== List mirrors only for a specific country ===<br />
<br />
Can be useful to automate update of the mirror list only for a specific countries instead of making a speed test each time. Assumed that {{ic|mirrorlist.pacnew}} exist, the file creates after installation of the {{Pkg|pacman-mirrorlist}} update.<br />
<br />
{{bc|<nowiki>Cnt="China";<br />
awk -v GG=$Cnt '{if(match($0,GG) != "0")AA="1";if(AA == "1"){if( length($2) != "0" )print substr($0,2) ;else AA="0"} }' \<br />
/etc/pacman.d/mirrorlist.pacnew</nowiki>}}<br />
<br />
== Official mirrors ==<br />
<br />
The official Arch Linux mirror list is available from the {{pkg|pacman-mirrorlist}} package. To get an even more up-to-date list of mirrors, use the [https://www.archlinux.org/mirrorlist/ Pacman Mirror List Generator] page on the main site.<br />
<br />
In the unlikely scenario that you are without any configured mirrors and {{ic|pacman-mirrorlist}} is not installed, run the following command:<br />
# wget -O /etc/pacman.d/mirrorlist <nowiki>https://www.archlinux.org/mirrorlist/all/</nowiki><br />
<br />
Be sure to uncomment a preferred mirror as described above, then:<br />
# pacman -Syyu pacman-mirrorlist<br />
<br />
If you want your mirror to be added to the official list, file a feature request. In the meantime, add it to the [[#Unofficial mirrors]] list at the end of this page.<br />
<br />
If you get an error stating that the {{ic|$arch}} variable is used but not defined, add the following to your {{ic|/etc/pacman.conf}}:<br />
Architecture = x86_64<br />
<br />
{{Note|You can also use the values {{ic|auto}} and {{ic|i686}} for the {{ic|Architecture}} variable.}}<br />
<br />
=== IPv6-ready mirrors ===<br />
<br />
The [https://www.archlinux.org/mirrorlist/?country=all&protocol=http&ip_version=6 pacman mirror list generator] can also be used to find a list of current IPv6 mirrors.<br />
<br />
== Unofficial mirrors ==<br />
<br />
These mirrors are ''not'' listed in {{ic|/etc/pacman.d/mirrorlist}}.<br />
<br />
=== Global ===<br />
<br />
* http://sourceforge.net/projects/archlinux/files/ - ''ISO files only; Does not have any releases since 2006. Use it only if for getting older ISOs.''<br />
<br />
=== Tor Network ===<br />
These run as Tor hidden services and require a [[Tor]] client as well as a properly setup pacman to use.<br />
<br />
*http://cz2jqg7pj2hqanw7.onion/archlinux<br />
*ftp://mirror:mirror@cz2jqg7pj2hqanw7.onion/archlinux<br />
*http://rstpevyo7zx47bld.onion/archlinux<br />
<br />
=== Austria ===<br />
<br />
*http://gd.tuwien.ac.at/opsys/linux/archlinux/ - ''Vienna University of Technology''<br />
*ftp://gd.tuwien.ac.at/opsys/linux/archlinux/<br />
<br />
=== Belarus ===<br />
<br />
*http://ftp.byfly.by/pub/archlinux/<br />
*ftp://ftp.byfly.by/pub/archlinux/<br />
<br />
=== Bulgaria ===<br />
<br />
*http://mirror.telepoint.bg/archlinux/<br />
*ftp://mirror.telepoint.bg/archlinux/<br />
<br />
=== China ===<br />
<br />
'''Telecom'''<br />
*http://mirror.bit.edu.cn/archlinux/ - ''Beijing Institute of Technology''<br />
*ftp://mirror.bjtu.edu.cn/archlinux/<br />
*rsync://mirror.bjtu.edu.cn/archlinux/<br />
*http://mirrors.aliyun.com/archlinux/ - ''Alibaba''<br />
<br />
'''Unicom'''<br />
*http://mirrors.sohu.com/archlinux/<br />
*http://mirrors.yun-idc.com/archlinux/<br />
<br />
'''Cernet'''<br />
*http://ftp.sjtu.edu.cn/archlinux/ - ''Shanghai Jiaotong University''<br />
*http://mirrors.4.tuna.tsinghua.edu.cn/archlinux/ ''(ipv4 only)''<br />
*http://mirrors.6.tuna.tsinghua.edu.cn/archlinux/ ''(ipv6 only)''<br />
*http://mirror.lzu.edu.cn/archlinux/ - ''Lanzhou University''<br />
<br />
=== France ===<br />
<br />
*http://delta.archlinux.fr/ - ''With Delta package support. Needs xdelta3 package from extra to run.''<br />
*http://mirror.soa1.org/archlinux<br />
*ftp://mirror:mirror@mirror.soa1.org/archlinux<br />
<br />
=== Germany ===<br />
<br />
*http://ftp.uni-erlangen.de/mirrors/archlinux/<br />
*ftp://ftp.uni-erlangen.de/mirrors/archlinux/<br />
*http://ftp.u-tx.net/archlinux/<br />
*ftp://ftp.u-tx.net/archlinux/<br />
*http://mirror.michael-eckert.net/archlinux/<br />
*http://linux.rz.rub.de/archlinux/<br />
*http://mirror.k42.ch/archlinux/<br />
<br />
=== Hong Kong ===<br />
<br />
*http://hk.mirrors.linaxe.net/archlinux/<br />
<br />
=== India ===<br />
<br />
*http://ftp.iitm.ac.in/archlinux/<br />
*ftp://ftp.iitm.ac.in/archlinux/<br />
<br />
=== Indonesia ===<br />
<br />
*http://mirror.kavalinux.com/archlinux/ - ''only from Indonesia''<br />
*http://kambing.ui.ac.id/archlinux/<br />
*http://repo.ukdw.ac.id/archlinux/<br />
<br />
=== Iran ===<br />
<br />
*http://mirror.yazd.ac.ir/arch/<br />
<br />
=== Italy ===<br />
<br />
*http://mi.mirror.garr.it/mirrors/archlinux/<br />
<br />
=== Japan ===<br />
<br />
*http://ftp.nara.wide.ad.jp/pub/Linux/archlinux/ - ''NAra Institute of Science and Technology''<br />
*http://ftp.kddilabs.jp/Linux/packages/archlinux/<br />
*http://srv2.ftp.ne.jp/Linux/packages/archlinux/<br />
<br />
=== Kazakhstan ===<br />
<br />
*http://archlinux.kz/<br />
*http://mirror.neolabs.kz/archlinux/<br />
*http://mirror-kt.neolabs.kz/archlinux/<br />
<br />
=== Malaysia ===<br />
<br />
*http://mirror.oscc.org.my/archlinux/<br />
*http://mirrors.inetutils.net/archlinux/ - ''ISO and Core''<br />
<br />
=== New Zealand ===<br />
<br />
*http://mirror.ihug.co.nz/archlinux/<br />
*http://mirror.ece.auckland.ac.nz/archlinux/ ''NZ only''<br />
<br />
=== Poland ===<br />
<br />
*ftp://ftp.icm.edu.pl/pub/Linux/dist/archlinux/ - ICM UW<br />
*http://ftp.icm.edu.pl/pub/Linux/dist/archlinux/ - ICM UW<br />
*rsync://ftp.icm.edu.pl/pub/Linux/dist/archlinux/ - ICM UW<br />
<br />
=== Russia ===<br />
<br />
*http://hatred.homelinux.net/archlinux/ - ''Vladivostok, without iso, with <sub>[http://hatred.homelinux.net/wiki/proekty:3spy:start 3SPY]</sub> project repos and [http://hatred.homelinux.net/archlinux/mingw32/os/i686 '''mingw32'''] repo''<br />
*http://mirrors.krasinfo.ru/archlinux/ - ''Krasnoyarsk, Classica-Service Ltd''<br />
*http://mirror.yandex.ru/archlinux/ - ''Moscow, [http://www.yandex.ru/ Yandex] LLC''<br />
<br />
=== Singapore ===<br />
<br />
*http://mirror.nus.edu.sg/archlinux/<br />
<br />
=== South Africa ===<br />
<br />
*http://ftp.leg.uct.ac.za/pub/linux/arch/ - ''University of Cape Town''<br />
*ftp://ftp.leg.uct.ac.za/pub/linux/arch/<br />
*http://mirror.ufs.ac.za/archlinux/ - ''University of the Free State''<br />
*ftp://mirror.ufs.ac.za/os/linux/distros/archlinux/<br />
*http://ftp.wa.co.za/pub/archlinux/ - ''Web Africa Networks''<br />
*ftp://ftp.wa.co.za/pub/archlinux/<br />
*http://archlinux.mirror.ac.za - ''TENET - Tertiary Education and Research Network of South Africa''<br />
*ftp://archlinux.mirror.ac.za<br />
<br />
=== South Korea ===<br />
<br />
*http://mirror.star4u.org/archlinux/<br />
*http://ftp2.lecl.net/pub/archlinux<br />
<br />
=== United States ===<br />
<br />
* http://archlinux.linuxfreedom.com - ''Contains numerous ISO images but does not contain the ISO dated 2011.08.19''<br />
* http://mirror.clarkson.edu/archlinux/<br />
* http://mirror.pointysoftware.net/archlinux/<br />
* http://il.mirrors.linaxe.net/archlinux/ - ''Server location - Chicago, IL''<br />
<br />
=== Viet Nam ===<br />
<br />
'''FPT TELECOM'''<br />
*http://mirror-fpt-telecom.fpt.net/archlinux/<br />
<br />
== See also ==<br />
<br />
* [http://wiki.gotux.net/code/bash/mirup MirUp] &ndash; pacman mirrorlist downloader/checker {{Dead link|2015|04|02}}</div>Zekesonxxhttps://wiki.archlinux.org/index.php?title=User:Zekesonxx&diff=378432User:Zekesonxx2015-06-14T01:19:48Z<p>Zekesonxx: me</p>
<hr />
<div>I program things and sometimes contribute things.<br />
<br />
https://github.com/zekesonxx<br />
<br />
=== Computer Specs ===<br />
Desktop: i5-2320, 8GB RAM, GTX 970, running Windows 7 Home Premium 64-bit with dwm.exe.<br />
<br />
Laptop: Dell Inspiron M5030, running Arch 64-bit with xfce4, off a 16GB flash drive.<br />
<br />
=== PGP Public Key ===<br />
See also: https://keybase.io/zekesonxx<br />
<br />
{{bc|<nowiki>-----BEGIN PGP PUBLIC KEY BLOCK-----<br />
Version: GnuPG v2<br />
<br />
mQENBFVG3q8BCACfVeKQGdGEVcywRrzSAFnmkwkwba30lAttnu4OHo76xbdR5g0G<br />
ztEeUrhcKBY6MYkzSkf74eY3Mez2XAK2RhCm4FgmEEtD/x4pRScryaFQqQqV5Mo4<br />
1V07+lmtJpfvivEFNGluZ5uTnSmk59bRPUXMSnqFjDuj9obFw4dukhmSRk6RPtic<br />
xcD1wndn+OfBYaHyll8zwAr8CSnIka52hCjp727TSUPKC08+qaI/wJJyRCUhtVxN<br />
7fNhZDyeDKX49+1wi8crz6bmDqi+gVzSE0SBgsQTCUpekU4x+AHl+gppppeESCra<br />
jA1J/QB2IMsXjMG3FPe8yA8H0Zez9o3M8xLXABEBAAG0K1pla2UgU29ueHggKHpl<br />
a2Vzb254eCkgPHpla2VAemVrZXNvbnh4LmNvbT6JATcEEwEKACEFAlVG3q8CGwMF<br />
CwkIBwMFFQoJCAsFFgIDAQACHgECF4AACgkQjNJlcJv94A5pXAf+PHqNnSzIdI3S<br />
Ox1T8s+x5kXrzkTvPjTNHTzPBFNxuXEd9C1JvYStCVLnXxyDZN1Jr1o+vjGl2FgL<br />
iddbBBMoZS0spF3q5E95w1kZnJ++hfaoVqnjZ7Hl/BRjc2WsgJA8yC51qsHe0Rk1<br />
UuiF4L/a8vVMuTqZhSb0/DLQEjyoAeK1GyJyTSKOWRTIP0sC7jiGUHylTqvVljKB<br />
/6AcHY1GOf2ECE71TREZnto2Q3SyB/9oim1jaB8128ZVk55SZL+ROi7lw9OHCIEj<br />
H8yLSBZ6bxLOYVPfUpGBOm2QYLmWaQI7eZYxRHEzu5jS5ciF6DQQl5Pxfg+h+rWO<br />
BfQeUEJsHIkCHAQQAQIABgUCVUgG1gAKCRARkYe3WlQrbAIjD/9gzJIJCJjB4QCp<br />
FoFUh9+3lD6Jvo5EG85TzbP97yMRaySS47PY2nMr/nXr3HJFHAK8VCWJdebZSDcB<br />
Fmk0dHHyJbeXLDXafI7cqYiI8OYZ5aHBVZ2bwsBpu2JKqCiuQMoXVthtTrYNq6Yo<br />
pt3UUmN4scmwY7sRZrw6hXBeduqAOG/ghs4aenDbD0rjQjnt4P+YFPk8k5Mle6i7<br />
xlftgPNEQXDSd5EQhN/dzKdPMLZcBuPh6JmQqDK0HJah7hweFLuNlcqF19Ug54ex<br />
aV9/9fOqv69RY146kpkNEuSWkOadmuHGUzQoCqZ2WcEe7c0orIfHMP7XwgcwKgx3<br />
z1jS4G/NMcxAMRR56zbtCBh4KCQtL+mIXmAyOgsK6JIXzDauXOVHn6KOor6tXAi5<br />
eO8n18q3s23fsLipGGrhGW7gs/j3vHC8784KXxn86IZTtecu+i1L+7ldM8+nfn88<br />
v94oLpfxjBmtZa1KdEd8Z/mhA6oNS15J5BLRxjDRAvAs74fs7GmUnTnSabEy1iZV<br />
VL2aL4ztgjZnR/IQP5637tuGGsgsiEZB/WGfEDFBNSbPXYWW3EgV2GP8ijxx6HWy<br />
JPfdGeDi5t56LGBGPDMAZQq4inOcWdkSrIICMHsulv0N6suMo4y1vnl4Vz3sZdsD<br />
uLovNlCWiPb76Ub8xlkZT7NKDJY7kbkBDQRVRt6vAQgAm52ktX/kWJKfaEJ5/TBy<br />
bGCTBaGrSrJUUts7LDvi8KKzd0AMjdoKwOvzYz6uUbfJP2MZWDgVMrOXaorsJQdE<br />
DGmHz8EPhXm7UOXM2qHI4927j8ExB4IHcFzW+LEwG9/Pl8O574Z/CNWjva2Y51FX<br />
7VI1KY/rxdPFg/3QZF554iq2YTdsCHlBWQNOL9skHHAxbs7qhyxZ35pq8LXO2TjN<br />
fPdZjWjMAFgwybcgTcyCKuA4vCJDjidz4BPJN7oKR2x9MPPDUTxeiO+MFe5+f8jg<br />
8VsPHak2RZO4/39HJ2UO2T+MOQw3ppaEoqx3lrmdkcY2h623JzBr0Mq4IubCShDw<br />
JQARAQABiQEfBBgBCgAJBQJVRt6vAhsMAAoJEIzSZXCb/eAObVkH/jfTOsLVeOFx<br />
QmT6kNOcxQ5Pl2acjUeIQfkrAuRUSO5+va0VE1bjVVpbCdgLNGEm7tedtrb3kgYy<br />
5RlDXE0ry08HD1y+IoFx4KJKEuacGocpXqr9O9AnyrAnuaP1HNAK4eGipUnJaFjL<br />
uFCA2E3ad74RBnZnTsbsmXmFIF6V5IZYWlKfKKn3+xtS24gK1YXQJZldK/7JUq7f<br />
IaoEB4TQsxVG62Ngktz452cekmidsKHibPBhbSCVpg6MGmVvkecD5D/Dwh4NLkA+<br />
1Bh4jnLUYGfnFpSU4hctIVzapvD8ys5zh6pVudVySE7dxAvE2U8R1rIigJoZUo4J<br />
dWgv/1++7DI=<br />
=Oi+R<br />
-----END PGP PUBLIC KEY BLOCK-----</nowiki>}}</div>Zekesonxxhttps://wiki.archlinux.org/index.php?title=Touchpad_Synaptics&diff=378430Touchpad Synaptics2015-06-14T01:09:20Z<p>Zekesonxx: /* Software toggle */ Add the case insensitive to grep so that it will match devices like mine, which is capitialized as "AlpsPS/2 ALPS DualPoint TouchPad"</p>
<hr />
<div>[[Category:Input devices]]<br />
[[de:Synaptics Touchpad Treiber]]<br />
[[es:Touchpad Synaptics]]<br />
[[fr:Touchpad Synaptics]]<br />
[[it:Touchpad Synaptics]]<br />
[[ja:Touchpad Synaptics]]<br />
[[ru:Touchpad Synaptics]]<br />
[[zh-CN:Touchpad Synaptics]]<br />
{{Related articles start}}<br />
{{Related|Xorg}}<br />
{{Related articles end}}<br />
This article details the installation and configuration process of the '''''Synaptics input driver''''' for Synaptics (and ALPS) touchpads found on most notebooks.<br />
<br />
== Installation ==<br />
<br />
The Synaptics driver can be [[pacman|installed]] with the package {{Pkg|xf86-input-synaptics}}, available in the [[official repositories]].<br />
<br />
== Configuration ==<br />
<br />
The primary method of configuration for the touchpad is through an [[Xorg]] server configuration file. After installation of {{ic|xf86-input-synaptics}}, a default configuration file is located at {{ic|/usr/share/X11/xorg.conf.d/50-synaptics.conf}}. Users can copy this file to {{ic|/etc/X11/xorg.conf.d/}} and edit it to configure the various driver options available. For a complete list of all available options, users should refer to the synaptics(4) manual page.<br />
<br />
=== Frequently used options ===<br />
<br />
The following lists options that many users may wish to configure. This example configuration file enables vertical, horizontal and circular scrolling:<br />
<br />
{{hc|/etc/X11/xorg.conf.d/50-synaptics.conf|<nowiki><br />
Section "InputClass"<br />
Identifier "touchpad"<br />
Driver "synaptics"<br />
MatchIsTouchpad "on"<br />
Option "TapButton1" "1"<br />
Option "TapButton2" "2"<br />
Option "TapButton3" "3"<br />
Option "VertEdgeScroll" "on"<br />
Option "VertTwoFingerScroll" "on"<br />
Option "HorizEdgeScroll" "on"<br />
Option "HorizTwoFingerScroll" "on"<br />
Option "CircularScrolling" "on"<br />
Option "CircScrollTrigger" "2"<br />
Option "EmulateTwoFingerMinZ" "40"<br />
Option "EmulateTwoFingerMinW" "8"<br />
Option "CoastingSpeed" "0"<br />
Option "FingerLow" "35"<br />
Option "FingerHigh" "40"<br />
...<br />
EndSection<br />
</nowiki>}}<br />
<br />
; '''TapButton1''': (integer) configures which mouse-button is reported on a non-corner, one finger tap.<br />
; '''TapButton2''': (integer) configures which mouse-button is reported on a non-corner, two finger tap<br />
; '''TapButton3''': (integer) configures which mouse-button is reported on a non-corner, three finger tap<br />
; '''RBCornerButton''': (integer) configures which mouse-button is reported on a right bottom corner, one finger tap (use {{ic|Option "RBCornerButton" "3"}} to achieve Ubuntu style tap behaviour for right mouse button in lower right corner)<br />
; '''RTCornerButton''': (integer) as above, but for top right corner, one finger tap.<br />
; '''VertEdgeScroll''': (boolean) enables vertical scrolling while dragging across the right edge of the touch pad.<br />
; '''HorizEdgeScroll''': (boolean) enables horizontal scrolling while dragging across the bottom edge of the touch pad.<br />
; '''VertTwoFingerScroll''': (boolean) enables vertical scrolling using two fingers.<br />
; '''HorizTwoFingerScroll''': (boolean) enables horizontal scrolling using two fingers.<br />
; '''EmulateTwoFingerMinZ/W''': (integer) play with this value to set the precision of two finger scroll.<br />
; '''FingerLow''': (integer) when finger pressure drops below this value, the driver counts it as a release.<br />
; '''FingerHigh''': (integer) when finger pressure goes above this value, the driver counts it as a touch.<br />
<br />
As usual settings will vary between machines. It is recommended that you discover your own options using [[#Synclient|synclient]].<br />
<br />
{{Note|<br />
* If you find that your hand frequently brushes your touchpad, causing the TapButton2 option to be triggered (which will more than likely paste from your clipboard), and you do not mind losing two-finger-tap functionality, set {{ic|TapButton2}} to 0.<br />
* Recent versions include a "Coasting" feature, enabled by default, which may have the undesired effect of continuing almost any scrolling until the next tap or click, even if you are no longer touching the touchpad. This means that to scroll just a bit, you need to scroll (by using the edge, or a multitouch option) and then almost immediately tap the touchpad, otherwise scrolling will continue forever. If wish to avoid this, set {{ic|CoastingSpeed}} to 0.<br />
* If your touchpad is too sensitive, use higher values for {{ic|FingerLow}} and {{ic|FingerHigh}} and vice versa. Remember that {{ic|FingerLow}} should be smaller than {{ic|FingerHigh}}<br />
}}<br />
<br />
=== Other options ===<br />
<br />
; '''VertScrollDelta''' and '''HorizScrollDelta''': (integer) configures the speed of scrolling, it is a bit counter-intuitive because higher values produce greater precision and thus slower scrolling. Negative values cause natural scrolling like in OS X.<br />
<br />
=== GNOME/Cinnamon ===<br />
<br />
Users of [[GNOME]] may have to edit its configuration as well, because in default it is set to disable tapping to click, horizontal scrolling and not to allow touchpad disabling while typing.<br />
<br />
To change these settings in '''Gnome 2''':<br />
# Run {{ic|gconf-editor}}<br />
# Edit the keys in the {{ic|/desktop/gnome/peripherals/touchpad/}} folder.<br />
<br />
To change these settings in '''Gnome 3''':<br />
# Open ''System Settings''.<br />
# Click ''Mouse and Touchpad''.<br />
# Change the settings on the ''Touchpad'' tab.<br />
<br />
To change these settings in '''Cinnamon''':<br />
# Open ''Cinnamon System Settings''.<br />
# Click ''Mouse and Touchpad''.<br />
# Change the settings on the ''Touchpad'' tab.<br />
<br />
Gnome settings daemon may override existing settings (for example ones set in {{ic|xorg.conf.d}}) for which there is no equivalent in any of the graphical configuration utilities. It is possible to stop gnome from touching mouse settings at all:<br />
# Run {{ic|dconf-editor}}<br />
# Edit {{ic|/org/gnome/settings-daemon/plugins/mouse/}} (or {{ic|/org/cinnamon/settings-daemon/plugins/mouse/}} for cinnamon)<br />
# Uncheck the '''active''' setting<br />
It will now respect your system's existing synaptics configuration.<br />
<br />
'''Remember''': Since Gnome works on a user by user basis, when you run dconf-editor or gconf-editor, this should be done in your current user session. Repeat this procedure for each and every user you have for this computer.<br />
<br />
=== MATE ===<br />
<br />
As with [[GNOME]], it is possible configure the way MATE handles the touchpad:<br />
<br />
# Run {{ic|dconf-editor}}<br />
# Edit the keys in the {{ic|org.mate.peripherals-touchpad}} folder.<br />
<br />
To prevent Mate settings daemon from overriding existing settings, do as follows:<br />
# Run {{ic|dconf-editor}}<br />
# Edit {{ic|org.mate.SettingsDaemon.plugins.mouse}}<br />
# Uncheck the '''active''' setting.<br />
<br />
=== Configuration on the fly ===<br />
<br />
Next to the traditional method of configuration, the Synaptics driver also supports on the fly configuration. This means that users can set certain options through a software application, these options are applied immediately without needing a restart of Xorg. This is useful to test configuration options before you include them in the configuration file.<br />
<br />
{{Warning|On-the-fly configuration is non-permanent and will not remain active through a reboot, suspend/resume, or restart of Xorg. This should only be used to test, fine-tune or script configuration features.}}<br />
<br />
==== Console tools ====<br />
<br />
* {{App|[[#Synclient|Synclient]] (Recommended)|command line utility to configure and query Synaptics driver settings on a live system, the tool is developed by the synaptics driver maintainers and is provided with the synaptics driver|http://xorg.freedesktop.org/|{{Pkg|xf86-input-synaptics}}}}<br />
* {{App|[[#Using xinput to determine touchpad capabilities|xinput]]|small general-purpose CLI tool to configure devices|http://xorg.freedesktop.org/|{{Pkg|xorg-xinput}}}}<br />
<br />
==== Graphical tools ====<br />
<br />
* {{App|GPointing Device Settings|provides graphical on the fly configuration for several pointing devices connected to the system, including your synaptics touch pad. This application replaces GSynaptics as the preferred tool for graphical touchpad configuration through the synaptics driver|http://live.gnome.org/GPointingDeviceSettings|{{Pkg|gpointing-device-settings}}}}<br />
* {{App|kcm-touchpad|A new touchpad configuration tool for [[KDE]], provides a module under input devices in system settings. Released in February 2014, works under KDE SC 4.12+. It is to be considered a replacement for {{AUR|synaptiks}}{{Broken package link|package not found}} and {{AUR|kcm_touchpad}}.|https://projects.kde.org/projects/kde/workspace/kcm-touchpad/repository|{{Pkg|kcm-touchpad}}}}<br />
<br />
== Advanced configuration ==<br />
<br />
=== Using xinput to determine touchpad capabilities ===<br />
<br />
Depending on your model, synaptic touchpads may have or lack capabilities. We can determine which capabilities your hardware supports by using {{ic|xinput}}.<br />
* left, middle and right hardware buttons<br />
* two finger detection<br />
* three finger detection<br />
* configurable resolution<br />
<br />
First, find the name of your touchpad:<br />
<br />
$ xinput -list<br />
<br />
You can now use {{ic|xinput}} to find your touchpad's capabilities:<br />
<br />
$ xinput list-props "SynPS/2 Synaptics TouchPad" | grep Capabilities<br />
<br />
Synaptics Capabilities (309): 1, 0, 1, 0, 0, 1, 1<br />
<br />
From left to right, this shows:<br />
* (1) device has a physical left button<br />
* (0) device does not have a physical middle button<br />
* (1) device has a physical right button<br />
* (0) device does not support two-finger detection<br />
* (0) device does not support three-finger detection<br />
* (1) device can configure vertical resolution<br />
* (1) device can configure horizontal resolution<br />
<br />
Use {{ic|xinput list-props "SynPS/2 Synaptics TouchPad"}} to list all device properties.<br />
<br />
=== Synclient ===<br />
<br />
Synclient can configure every option available to the user as documented in {{ic|$ man synaptics}}. A full list of the current user settings can be brought up:<br />
<br />
$ synclient -l<br />
<br />
Every listed configuration option can be controlled through synclient, for example:<br />
<br />
* Enable palm detection: {{ic|1=$ synclient PalmDetect=1}} <br />
* Configure button events (right button event for two finger tap here): {{ic|1=$ synclient TapButton2=3}} <br />
* Disable the touchpad: {{ic|1=$ synclient TouchpadOff=1}} <br />
<br />
After you have successfully tried and tested your options through synclient, you can make these changes permanent by adding them to {{ic|/etc/X11/xorg.conf.d/50-synaptics.conf}}.<br />
<br />
=== evtest ===<br />
<br />
The tool {{Pkg|evtest}} can display pressure and placement on the touchpad in real-time, allowing further refinement of the default Synaptics settings. The evtest monitoring can be started with:<br />
<br />
$ evtest /dev/input/event''X''<br />
<br />
''X'' denotes the touchpad's ID. It can be found by looking at the output of {{ic|cat /proc/bus/input/devices}}.<br />
<br />
evtest needs exclusive access to the device which means it cannot be run together with an X server instance. You can either kill the X server or run evtest from a different virtual terminal (e.g., by pressing {{ic|Ctrl+Alt+2}}).<br />
<br />
=== xev ===<br />
<br />
The tool {{Pkg|xorg-xev}} can display taps, clicks, pressure, placement and other measured parameters in real-time, allowing still further refinement of the default Synaptics settings. xev can be run in X and needs no specifics. using the "-event" parameter, it is possible to restrict the types of events that are reported.<br />
<br />
=== Circular Scrolling ===<br />
<br />
Circular scrolling is a feature that Synaptics offers which closely resembles the behaviour of iPods. Instead of (or additional to) scrolling horizontally or vertically, you can scroll circularly. Some users find this faster and more precise.<br />
To enable circular scrolling, add the following options to the touchpad device section of {{ic|/etc/X11/xorg.conf.d/50-synaptics.conf}}:<br />
{{hc|/etc/X11/xorg.conf.d/50-synaptics.conf|<nowiki><br />
Section "InputClass"<br />
...<br />
Option "CircularScrolling" "on"<br />
Option "CircScrollTrigger" "0"<br />
...<br />
EndSection<br />
</nowiki>}}<br />
<br />
The option '''CircScrollTrigger''' may be one of the following values, determining which edge circular scrolling should start:<br />
<br />
0 All Edges<br />
1 Top Edge<br />
2 Top Right Corner<br />
3 Right Edge<br />
4 Bottom Right Corner<br />
5 Bottom Edge<br />
6 Bottom Left Corner<br />
7 Left Edge<br />
8 Top Left Corner<br />
<br />
Specifying something different from zero may be useful if you want to use circular scrolling in conjunction with horizontal and/or vertical scrolling. If you do so, the type of scrolling is determined by the edge you start from.<br />
<br />
To scroll fast, draw small circles in the center of your touchpad. To scroll slowly and more precise, draw large circles.<br />
<br />
=== Natural scrolling ===<br />
<br />
It is possible to enable natural scrolling through synaptics. Simply use negative values for {{ic|VertScrollDelta}} and {{ic|HorizScrollDelta}} like so:<br />
<br />
{{hc|/etc/X11/xorg.conf.d/50-synaptics.conf|<nowiki><br />
Section "InputClass"<br />
...<br />
Option "VertScrollDelta" "-111"<br />
Option "HorizScrollDelta" "-111"<br />
...<br />
EndSection<br />
</nowiki>}}<br />
<br />
=== Software toggle ===<br />
<br />
You might want to turn the touchpad on and off with a simple button click or shortcut. This can be done by binding the following ''xinput''-based script to a keyboard event as explained in [[Extra keyboard keys in Xorg]]:<br />
<br />
{{hc|/usr/local/bin/touchpad_toggle.sh|2=<nowiki><br />
#!/bin/bash<br />
<br />
declare -i ID<br />
ID=`xinput list | grep -Eio 'ouchpad\s*id\=[0-9]{1,2}' | grep -Eo '[0-9]{1,2}'`<br />
declare -i STATE<br />
STATE=`xinput list-props $ID|grep 'Device Enabled'|awk '{print $4}'`<br />
if [ $STATE -eq 1 ]<br />
then<br />
xinput disable $ID<br />
# echo "Touchpad disabled."<br />
# notify-send 'Touchpad' 'Disabled' -i /usr/share/icons/Adwaita/48x48/devices/input-touchpad.png<br />
else<br />
xinput enable $ID<br />
# echo "Touchpad enabled."<br />
# notify-send 'Touchpad' 'Enabled' -i /usr/share/icons/Adwaita/48x48/devices/input-touchpad.png<br />
fi<br />
</nowiki>}}<br />
<br />
Alternatively, {{ic|synclient}} can be used to toggle the touchpad. However, it can only turn off touch events but not physical clickpad button usage:<br />
<br />
{{hc|/usr/local/bin/touchpad.sh|<nowiki><br />
#!/bin/bash<br />
<br />
synclient TouchpadOff=$(synclient -l | grep -c 'TouchpadOff.*=.*0')<br />
</nowiki>}}<br />
<br />
=== Disable trackpad while typing ===<br />
<br />
==== Using the driver's automatic palm detection ====<br />
<br />
First of all you should test if it works properly for your trackpad and if the settings are accurate. Enable palm detection with<br />
<br />
$ synclient PalmDetect=1<br />
<br />
Then test the typing. You can tweak the detection by setting the minimum width for the touch to be considered a palm, for example<br />
<br />
$ synclient PalmMinWidth=8<br />
<br />
And you can tweak the minimum pressure required for the touch to be considered a palm, for example<br />
<br />
$ synclient PalmMinZ=100<br />
<br />
{{Tip|To help find the best values for palm detection, you can use {{pkg|evtest}} to see the width and Z values reported during touchpad use.}}<br />
<br />
Once you have found the correct settings, you can add them to your [[#Configuration|config file]]:<br />
<br />
{{bc|<nowiki><br />
Option "PalmDetect" "1"<br />
Option "PalmMinWidth" "8"<br />
Option "PalmMinZ" "100"<br />
</nowiki>}}<br />
<br />
{{Warning|1=For some touchpads, an [https://bugzilla.kernel.org/show_bug.cgi?id=77161 issue] with the kernel can cause the palm width to always be reported as 0. This breaks palm detection in a majority of cases. Pending an actual fix, you can [https://gist.github.com/silverhammermba/a231c8156ecaa63c86f1 patch] the synaptics package to use only Z for palm detection.}}<br />
<br />
==== Using syndaemon ====<br />
<br />
{{ic|syndaemon}} monitors keyboard activity and disables the touchpad while typing. It has several options to control when the disabling occurs. View them with<br />
<br />
$ syndaemon -h<br />
<br />
For example, to disable tapping and scrolling for 2 seconds after each keypress (ignoring modifier keys like Ctrl), use<br />
<br />
$ syndaemon -t -k -i 2<br />
<br />
Once you have determined the options you like, you should use your login manager or [[xinitrc]] to have it run automatically when X starts. The {{ic|-d}} option will make it start in the background as a daemon.<br />
<br />
=== Disable touchpad on mouse detection ===<br />
<br />
With the assistance of [[udev]], it is possible to automatically disable the touchpad if an external mouse has been plugged in. To achieve this, use one of the following rules.<br />
<br />
==== Basic desktop ====<br />
<br />
This is a basic rule generally for non-"desktop environment" sessions:<br />
<br />
{{hc|/etc/udev/rules.d/01-touchpad.rules|2=<br />
SUBSYSTEM=="input", KERNEL=="mouse[0-9]*", ACTION=="add", ENV{DISPLAY}=":0", ENV{XAUTHORITY}="/home/''username''/.Xauthority", RUN+="/usr/bin/synclient TouchpadOff=1"<br />
SUBSYSTEM=="input", KERNEL=="mouse[0-9]*", ACTION=="remove", ENV{DISPLAY}=":0", ENV{XAUTHORITY}="/home/''username''/.Xauthority", RUN+="/usr/bin/synclient TouchpadOff=0"<br />
}}<br />
<br />
==== GDM ====<br />
<br />
GDM stores Xauthority files in {{ic|/var/run/gdm}} in a randomly-named directory. For some reason multiple authority files may appear for a user, so a rule like will be necessary:<br />
<br />
{{hc|/etc/udev/rules.d/01-touchpad.rules|2=<br />
SUBSYSTEM=="input", KERNEL=="mouse[0-9]", ACTION=="add", PROGRAM="/usr/bin/find /var/run/gdm -name ''username'' -print -quit", ENV{DISPLAY}=":0", ENV{XAUTHORITY}="$result/database", RUN+="/usr/bin/synclient TouchpadOff=1"<br />
SUBSYSTEM=="input", KERNEL=="mouse[0-9]", ACTION=="remove", PROGRAM="/usr/bin/find /var/run/gdm -name ''username'' -print -quit", ENV{DISPLAY}=":0", ENV{XAUTHORITY}="$result/database", RUN+="/usr/bin/synclient TouchpadOff=0"<br />
}}<br />
<br />
===== With syndeamon running =====<br />
<br />
{{ic|syndaemon}} whether started by the [[#Using syndaemon|user]] or the desktop environment can conflict with synclient and will need to be disabled. A rule like this will be needed:<br />
<br />
{{hc|/etc/udev/rules.d/01-touchpad.rules|2=<br />
SUBSYSTEM=="input", KERNEL=="mouse[0-9]", ACTION=="add", PROGRAM="/usr/bin/find /var/run/gdm -name ''username'' -print -quit", ENV{DISPLAY}=":0", ENV{XAUTHORITY}="$result/database", RUN+="/bin/sh -c '/usr/bin/synclient TouchpadOff=1 ; sleep 1; /bin/killall syndaemon; '"<br />
}}<br />
<br />
===== touchpad-state =====<br />
<br />
An AUR package {{aur|touchpad-state-git}} has been created around the udev rules above. It includes a udev rule and script:<br />
<br />
touchpad-state [--off] [--on]<br />
<br />
==== KDE ====<br />
<br />
If using KDE, the package {{pkg|kcm-touchpad}} can be set to disable the touchpad on mouse detection.<br />
<br />
If using Plasma, the package {{Pkg|kcm-touchpad-frameworks}}{{Broken package link|replaced by {{Pkg|plasma-desktop}}}} can be used to manage the touchpad.<br />
<br />
==== System with multiple X sessions ====<br />
<br />
{{Accuracy|Hard-coded {{ic|DISPLAY}} variable does not work with multiple X sessions.}} <br />
<br />
For an environment where multiple users are present, a slightly different approach is needed to detect the current users X environment. This script will help achieving this:<br />
<br />
{{hc|/usr/bin/mouse-pnp-event-handler.sh|<nowiki><br />
#!/bin/sh<br />
## $1 = "add" / "remove"<br />
## $2 = %k from udev <br />
<br />
## Set TRACKPAD_NAME according to your configuration. <br />
## Check your trackpad name with: <br />
## find /sys/class/input/ -name mouse* -exec udevadm info -a {} \; | grep 'ATTRS{name}'<br />
TRACKPAD_NAME="SynPS/2 Synaptics TouchPad"<br />
<br />
USERLIST=$(w -h | cut -d' ' -f1 | sort | uniq)<br />
MOUSELIST=$(find /sys/class/input/ -name mouse*)<br />
<br />
for CUR_USER in ${USERLIST}; do<br />
CUR_USER_XAUTH="$(sudo -Hiu ${CUR_USER} env | grep -e "^HOME=" | cut -d'=' -f2)/.Xauthority"<br />
<br />
<br />
## Can't find a way to get another users DISPLAY variable from an isolated root environment. Have to set it manually.<br />
#CUR_USER_DISPL="$(sudo -Hiu ${CUR_USER} env | grep -e "^DISPLAY=" | cut -d'=' -f2)"<br />
CUR_USER_DISPL=":0"<br />
<br />
export XAUTHORITY="${CUR_USER_XAUTH}"<br />
export DISPLAY="${CUR_USER_DISPL}"<br />
<br />
if [ -f "${CUR_USER_XAUTH}" ]; then<br />
case "$1" in<br />
"add")<br />
/usr/bin/synclient TouchpadOff=1<br />
/usr/bin/logger "USB mouse plugged. Disabling touchpad for $CUR_USER. ($XAUTHORITY - $DISPLAY)"<br />
;;<br />
"remove")<br />
## Only execute synclient if there are no external USB mice connected to the system.<br />
EXT_MOUSE_FOUND="0"<br />
for CUR_MOUSE in ${MOUSELIST}; do<br />
if [ "$(cat ${CUR_MOUSE}/device/name)" != "${TRACKPAD_NAME}" ]; then<br />
EXT_MOUSE_FOUND="1"<br />
fi<br />
done<br />
if [ "${EXT_MOUSE_FOUND}" == "0" ]; then<br />
/usr/bin/synclient TouchpadOff=0<br />
/usr/bin/logger "No additional external mice found. Enabling touchpad for $CUR_USER."<br />
else<br />
logger "Additional external mice found. Won't enable touchpad yet for $CUR_USER."<br />
fi<br />
;;<br />
esac<br />
fi<br />
done<br />
</nowiki>}}<br />
<br />
Update the {{ic|TRACKPAD_NAME}} variable for your system configuration.<br />
Run {{ic|<nowiki>find /sys/class/input/ -name mouse* -exec udevadm info -a {} \; | grep 'ATTRS{name}'</nowiki>}} to get a list of useful mice-names. Choose the one for your trackpad.<br />
<br />
Then have udev run this script when USB mices are plugged in or out, with these udev rules:<br />
<br />
{{hc|/etc/udev/rules.d/01-touchpad.rules|2=<br />
SUBSYSTEM=="input", KERNEL=="mouse[0-9]*", ACTION=="add", RUN+="/usr/bin/mouse-pnp-event-handler.sh add %k"<br />
SUBSYSTEM=="input", KERNEL=="mouse[0-9]*", ACTION=="remove", RUN+="/usr/bin/mouse-pnp-event-handler.sh remove %k"<br />
}}<br />
<br />
=== Buttonless touchpads (aka ClickPads) ===<br />
<br />
Some laptops have a special kind of touchpad which has the mouse buttons as part of the tracking plate, instead of being external buttons. For example HP series 4500 ProBooks, ThinkPad X220 and X1 ThinkPad series have this kind of a touchpad. By default whole button area is detected as a left button resulting in the second mouse button being unusable and click + drag will not work. Previously support for such devices was achieved by using third party patches, but from version 1.6.0 the synaptics driver has native multitouch support (using the ''mtdev'' library). Note that although the driver registers multiple touches, it does not track individual fingers (as of version 1.7.1) which results in confusing behavior when using physical buttons of a clickpad for drag-and-drop and other gestures. You can look into the {{AUR|xf86-input-mtrack}} driver for better multitouch support.<br />
<br />
In some cases, for example Toshiba Satellite P50, everything work out of the box except often your click are seen as mouse movement and the cursor will jump away just before registering the click.<br />
This can be easily solved running<br />
...<br />
synclient -l | grep BottomEdge<br />
...<br />
<br />
take the BottomEdge value and subtract a the wanted height of your button, then temporary apply with<br />
...<br />
synclient AreaBottomEdge=4000<br />
...<br />
when a good value has been found make it a fixed correction with<br />
{{hc|/etc/X11/xorg.conf.d/50-synaptics.conf|<nowiki><br />
...<br />
Option "AreaBottomEdge" "4000"<br />
...<br />
</nowiki>}}<br />
please not the area will notact as touchpad if the touch BEGIN in that area, but it can still be used if the touche has originated outside.<br />
<br />
To enable other buttons modify the touchpad section in {{ic|/etc/X11/xorg.conf.d/50-synaptics.conf}} (or better, of your custom synaptics configuration file prefixed with a higher number):<br />
<br />
{{hc|/etc/X11/xorg.conf.d/50-synaptics.conf|<nowiki><br />
...<br />
Option "ClickPad" "true"<br />
Option "EmulateMidButtonTime" "0"<br />
Option "SoftButtonAreas" "50% 0 82% 0 0 0 0 0"<br />
...<br />
</nowiki>}}<br />
<br />
These three options are the key, first one will enable multitouch support, second will disable middle button emulation (not supported for ClickPads), and third will define the button areas. <br />
<br />
Format for the SoftButtonAreas option is (from {{ic|man 4 synaptics}}):<br />
{{bc|RightButtonAreaLeft RightButtonAreaRight RightButtonAreaTop RightButtonAreaBottom MiddleButtonAreaLeft MiddleButtonAreaRight MiddleButtonAreaTop MiddleButtonAreaBottom}}<br />
<br />
The above example is commonly found in documentation or synaptics packages, and it translates to right half of the bottom 18% of the touchpad to be a right button. There is '''no middle button''' defined. If you want to define a middle button remember one key piece of information from the manual; '''edge set to 0 extends to infinity in that direction.'''<br />
<br />
In the following example right button will occupy 40% of the rightmost part of the button area. We then proceed to setup the middle button to occupy 20% of the touchpad in a small area in the center.<br />
<br />
...<br />
Option "SoftButtonAreas" "60% 0 82% 0 40% 59% 82% 0"<br />
...<br />
<br />
You can use {{ic|<nowiki>synclient</nowiki>}} to check the new soft button areas: <br />
<br />
{{hc|<nowiki>$ synclient -l | grep -i ButtonArea</nowiki>|<nowiki><br />
RightButtonAreaLeft = 3914<br />
RightButtonAreaRight = 0<br />
RightButtonAreaTop = 3918<br />
RightButtonAreaBottom = 0<br />
MiddleButtonAreaLeft = 3100<br />
MiddleButtonAreaRight = 3873<br />
MiddleButtonAreaTop = 3918<br />
MiddleButtonAreaBottom = 0<br />
</nowiki>}}<br />
<br />
If your buttons are not working, soft button areas are not changing, ensure you do not have a synaptics configuration file distributed by a package which is overriding your custom settings (ie. some AUR packages distribute configurations prefixed with very high numbers).<br />
<br />
These settings cannot be modified on the fly with {{ic|<nowiki>synclient</nowiki>}}, however, {{ic|<nowiki>xinput</nowiki>}} works:<br />
<br />
xinput set-prop "SynPS/2 Synaptics TouchPad" "Synaptics Soft Button Areas" 4000 0 4063 0 3000 4000 4063 0<br />
<br />
You cannot use percentages with this command, so look at {{ic|/var/log/Xorg.0.log}} to figure out the touchpad x and y-axis ranges.<br />
<br />
== Troubleshooting ==<br />
<br />
=== Touchpad does not work after resuming from hibernate/suspend ===<br />
Occasionally touchpads will fail to work when the computer resumes from sleep or hibernation. This can often be corrected without rebooting by<br />
* Switching to a console and back again,<br />
* entering sleep mode again, and resuming again, or<br />
* locating the correct kernel module, then removing it and inserting it again. <br />
{{Note|You can use Ctrl-Alt-F1 through F8 to switch to a console without using the mouse.}}<br />
modprobe -r psmouse #psmouse happens to be the kernel module for my touchpad (Alps DualPoint)<br />
modprobe psmouse<br />
Now switch back to the tty that X is running on. If you chose the right module, your touchpad should be working again.<br />
<br />
=== Emulate middle (3rd) mouse button ===<br />
Add this:<br />
<br />
{{hc|/etc/X11/xorg.conf.d/10-evdev.conf|<nowiki><br />
Section "InputClass"<br />
Identifier "Emulate Middle Butten"<br />
MatchIsPointer "on"<br />
Option "Emulate3Buttons" "on"<br />
EndSection<br />
</nowiki>}}<br />
<br />
to your /etc/X11/xorg.conf.d/10-evdev.conf (or any Xorg conf you want) and you will have middle click emulation.<br />
<br />
[https://bbs.archlinux.org/viewtopic.php?pid=847309#p847309 Thx to augegr]<br />
=== xorg.conf.d/50-synaptics.conf does not seem to apply under GNOME and MATE ===<br />
<br />
[[GNOME]] and [[MATE]], by default, will overwrite various options for your touch-pad. This includes configurable features for which there is no graphical configuration within GNOME's system control panel. This may cause it to appear that {{ic|/etc/X11/xorg.conf.d/50-synaptics.conf}} is not applied. Please refer to the GNOME section in this article to prevent this behavior.<br />
<br />
* [[#GNOME.2FCinnamon]]<br />
<br />
=== ALPS Touchpads ===<br />
<br />
{{Expansion}}<br />
{{Out of date|needs to be rewritten for udev}}<br />
<br />
For ALPS Touchpads, if the above configuration does not provide the desired results, try the following configuration instead:<br />
<br />
{{hc|/etc/X11/xorg.conf.d/50-synaptics.conf|<br />
Section "ServerLayout"<br />
...<br />
InputDevice "USB Mouse" "CorePointer"<br />
InputDevice "Touchpad" "SendCoreEvents"<br />
EndSection<br />
<br />
Section "InputDevice"<br />
Identifier "Touchpad"<br />
Driver "synaptics"<br />
Option "Device" "/dev/input/mouse0"<br />
Option "Protocol" "auto-dev"<br />
Option "LeftEdge" "130"<br />
Option "RightEdge" "840"<br />
Option "TopEdge" "130"<br />
Option "BottomEdge" "640"<br />
Option "FingerLow" "7"<br />
Option "FingerHigh" "8"<br />
Option "MaxTapTime" "180"<br />
Option "MaxTapMove" "110"<br />
Option "EmulateMidButtonTime" "75"<br />
Option "VertScrollDelta" "20"<br />
Option "HorizScrollDelta" "20"<br />
Option "MinSpeed" "0.25"<br />
Option "MaxSpeed" "0.50"<br />
Option "AccelFactor" "0.010"<br />
Option "EdgeMotionMinSpeed" "200"<br />
Option "EdgeMotionMaxSpeed" "200"<br />
Option "UpDownScrolling" "1"<br />
Option "CircularScrolling" "1"<br />
Option "CircScrollDelta" "0.1"<br />
Option "CircScrollTrigger" "2"<br />
Option "Emulate3Buttons" "on"<br />
EndSection<br />
}}<br />
<br />
=== The touchpad is not working, Xorg.0.log shows "Query no Synaptics: 6003C8" ===<br />
<br />
Due to the way synaptics is currently set-up, 2 instances of the synaptics module are loaded. We can recognize this situation by opening the xorg log file ({{ic|/var/log/Xorg.0.log}}) and noticing this:<br />
<br />
{{hc|/var/log/Xorg.0.log|<nowiki><br />
[ 9304.803] (**) SynPS/2 Synaptics TouchPad: Applying InputClass "evdev touchpad catchall"<br />
[ 9304.803] (**) SynPS/2 Synaptics TouchPad: Applying InputClass "touchpad catchall"<br />
</nowiki>}}<br />
<br />
Notice how 2 differently named instances of the module are being loaded. In some cases, this causes the touchpad to become nonfunctional.<br />
<br />
We can prevent this double loading by adding {{ic|MatchDevicePath "/dev/input/event*"}} to our {{ic|/etc/X11/xorg.conf.d/50-synaptics.conf}} file:<br />
<br />
{{hc|/etc/X11/xorg.conf.d/50-synaptics.conf|<nowiki><br />
Section "InputClass"<br />
Identifier "touchpad catchall"<br />
Driver "synaptics"<br />
MatchIsTouchpad "on"<br />
MatchDevicePath "/dev/input/event*"<br />
Option "TapButton1" "1"<br />
Option "TapButton2" "2"<br />
Option "TapButton3" "3"<br />
EndSection <br />
</nowiki>}}<br />
<br />
Restart X and check xorg logs again, the error should be gone and the touchpad should be functional.<br />
<br />
related bugreport: {{Bug|20830}}<br />
<br />
related forum topics:<br />
* https://bbs.archlinux.org/viewtopic.php?id=104769<br />
* https://bbs.archlinux.org/viewtopic.php?pid=825690<br />
<br />
=== Touchpad detected as "PS/2 Generic Mouse" or "Logitech PS/2 mouse" ===<br />
<br />
This can be caused by a number of issues;<br />
<br />
==== Elantech touchpads ====<br />
This can happen with some laptops with an Elantech touchpad, for example the ASUS x53s. In this situation you need {{AUR|psmouse-alps-driver}} package from [[AUR]].<br />
<br />
==== Laptops with touchscreen & touchpad ====<br />
There also seems to be a problem with laptops which have both a touchscreen & a touchpad, such as the Dell XPS 12 or Dell XPS 13. To fix this, you can [[blacklisting|blacklist]] the {{ic|i2c_hid}} driver, this does have the side-effect of disabeling the touchscreen though.<br />
<br />
This [http://www.spinics.net/lists/linux-input/msg27768.html seems to be a known problem]. Also see [https://bbs.archlinux.org/viewtopic.php?pid=1419078 this thread].<br />
<br />
Post kernel 3.15, having the module blacklisted may cause touchpad to stop working completely. Removing the blacklist should allow this to start working with limited functionality, see {{Bug|40921}}.<br />
<br />
=== Non-functional Synaptics special abilities (multi-tap, scrolling, etc.) ===<br />
<br />
In some cases Synaptics touchpads only work partially. Features like two-finger scrolling or two-finger middle-click do not work even if properly enabled. This is probably related to the [[#The touchpad is not working, Xorg.0.log shows "Query no Synaptics: 6003C8"|The touchpad is not working]] problem mentioned above. Fix is the same, prevent double module loading.<br />
<br />
If preventing the module from loading twice does not solve your issue, try commenting out the toggle "MatchIsTouchpad" (which is now included by default in the synaptics config).<br />
<br />
If clicking with either 2 or 3 fingers is interpreted as a right-click, so you cannot get a middle click either way regardless of configuration, this bug is probably the culprit: https://bugs.freedesktop.org/show_bug.cgi?id=55365<br />
<br />
=== Cursor jump ===<br />
<br />
Some users have their cursor inexplicably ''jump'' around the screen. There currently no patch for this, but the developers are aware of the problem and are working on it.<br />
<br />
Another posibility is that you are experiencing ''IRQ losses'' related to the i8042 controller (this device handles the keyboard and the touchpad of many laptops), so you have two posibilities here:<br />
<br />
1. rmmod && insmod the psmouse module.<br />
2. append i8042.nomux=1 to the boot line and reboot your machine.<br />
<br />
=== Touchpad device is not located at {{ic|/dev/input/*}} ===<br />
<br />
If that is the case, you can use this command to display information about your input devices:<br />
<br />
$ cat /proc/bus/input/devices<br />
<br />
Search for an input device which has the name "SynPS/2 Synaptics TouchPad". The "Handlers" section of the output specifies what device you need to specify.<br />
<br />
'''Example output:'''<br />
<br />
{{hc|$ cat /proc/bus/input/devices|<nowiki><br />
I: Bus=0011 Vendor=0002 Product=0007 Version=0000<br />
N: Name="SynPS/2 Synaptics TouchPad"<br />
P: Phys=isa0060/serio4/input0<br />
S: Sysfs=/class/input/input1<br />
H: Handlers=mouse0 event1<br />
B: EV=b<br />
B: KEY=6420 0 7000f 0<br />
</nowiki>}}<br />
<br />
In this case, the {{ic|Handlers}} are {{ic|mouse0}} and {{ic|event1}}, so {{ic|/dev/input/mouse0}} would be used.<br />
<br />
{{Expansion|TODO: explain how to apply this in {{ic|/etc/X11/xorg.conf.d/50-synaptics.conf}}}}<br />
<br />
=== Firefox and special touchpad events ===<br />
<br />
You can enable/disable some special events that Firefox handles upon tapping or scrolling certain parts of your touchpad by editing the settings of those actions.<br />
Type '''about:config''' in your Firefox address bar.<br />
To alter options, double-click on the line in question.<br />
<br />
==== Firefox 17.0 and later ====<br />
<br />
Horizontal scrolling will now by default scroll through pages and not through your history. To reenable Mac-style forward/backward with two-finger swiping, edit:<br />
<br />
mousewheel.default.action.override_x = 2<br />
<br />
You may encounter accidental forwards/backwards while scrolling vertically. To change Firefox's sensitivity to horizontal swipes, edit:<br />
<br />
mousewheel.default.delta_multiplier_x<br />
<br />
The optimum value will depend on your touchpad and how you use it, try starting with {{ic|10}}. A negative value will reverse the swipe directions.<br />
<br />
=== Opera: horizontal scrolling issues ===<br />
<br />
Same as above.<br />
To fix it, go to ''Tools > Preferences > Advanced > Shortcuts''. Select "Opera Standard" mouse setup and click "Edit". In "Application" section:<br />
{{Accuracy|Description here is not so clear and i don't use Opera,Please make it clear :)}}<br />
* assign key "Button 6" to command "Scroll left"<br />
* assign key "Button 7" to command "Scroll right"<br />
<br />
=== Scrolling and multiple actions with Synaptics on LG laptops ===<br />
<br />
These problems seem to be occurring on several models of LG laptops.<br />
Symptoms include: when pressing Mouse Button 1, Synaptics interprets it as ScrollUP and a regular button 1 click; same goes for button 2.<br />
<br />
The scrolling issue can be resolved by entering in {{ic|xorg.conf}}:<br />
<br />
{{hc|/etc/X11/xorg.conf.d/xorg.conf|Option "UpDownScrolling" "0"}}<br />
<br />
{{Note|This will make Synaptics interpret one button push as three. There is a patch written by Oskar Sandberg[http://www.math.chalmers.se/~ossa/linux/lg_tx_express.html] that removes these clicks.}}<br />
<br />
Apparently, when trying to compile this against the latest version of Synaptics it fails. The solution to this is using the GIT repository for Synaptics[http://web.telia.com/~u89404340/touchpad/synaptics/.git].<br />
<br />
There is also a package build file in the AUR to automate this: {{AUR|xf86-input-synaptics-lg}}.<br />
<br />
To build the package after downloading the tarball and unpacking it, execute:<br />
<br />
$ cd synaptics-git<br />
$ makepkg<br />
<br />
=== Other external mouse issues ===<br />
<br />
First, make sure your section describing the external mouse contains this line (or that the line looks like this):<br />
<br />
{{hc|/etc/X11/xorg.conf.d/xorg.conf|Option "Device" "/dev/input/mice"}}<br />
<br />
If the "Device" line is different, change it to the above and try to restart X. If this does not solve your problem, make your '''touchpad''' is the CorePointer in the "Server Layout" section:<br />
<br />
{{hc|/etc/X11/xorg.conf.d/xorg.conf|InputDevice "Touchpad" "CorePointer"}}<br />
<br />
and make your external device "SendCoreEvents":<br />
<br />
{{hc|/etc/X11/xorg.conf.d/xorg.conf|InputDevice "USB Mouse" "SendCoreEvents"}}<br />
<br />
finally add this to your external device's section:<br />
<br />
{{hc|/etc/X11/xorg.conf.d/xorg.conf|Option "SendCoreEvents" "true"}}<br />
<br />
If all of the above does not work for you, please check relevant bug trackers for possible bugs, or go through the forums to see if anyone has found a better solution.<br />
<br />
=== Touchpad synchronization issues ===<br />
<br />
Sometimes the cursor may freeze for several seconds or start acting on its own for no apparent reason. This behavior is accompanied by records in {{ic|/var/log/messages.log}}<br />
<br />
{{hc|/var/log/messages.log|psmouse.c: TouchPad at isa0060/serio1/input0 lost synchronization, throwing 3 bytes away}}<br />
<br />
This problem has no general solution, but there are several possible workarounds.<br />
* If you use CPU frequency scaling, avoid using the "ondemand" governor and use the "performance" governor when possible, as the touchpad may lose sync when the CPU frequency changes.<br />
* Avoid using an ACPI battery monitor.<br />
* Attempt to load psmouse with "proto=imps" option. To do that, add this line to your {{ic|/etc/modprobe.d/modprobe.conf}}:<br />
<br />
{{hc|/etc/modprobe.d/modprobe.conf|2=options psmouse proto=imps}}<br />
<br />
* Try another desktop environment. Some users report that this problem only occurs when using XFCE or GNOME, for whatever reason<br />
<br />
===Xorg.log.0 shows SynPS/2 Synaptics touchpad can not grab event device, errno=16 ===<br />
<br />
If you are using Xorg 7.4, you may get a warning like this from {{ic|/var/log/Xorg.0.log}}, thais is because the driver will grab the event device for exclusive use when using the Linux 2.6 event protocol. When it fails, X will return this error message.<br />
<br />
Grabbing the event device means that no other user space or kernel space program sees the touchpad events. This is desirable if the X config file includes {{ic|/dev/input/mice}} as an input device, but is undesirable if you want to monitor the device from user space.<br />
<br />
If you want to control it, add or modify the "GrabEventDevice" option in you touchpad section in {{ic|/etc/X11/xorg.conf.d/50-synaptics.conf}}:<br />
<br />
{{hc|/etc/X11/xorg.conf.d/50-synaptics.conf|2=<br />
...<br />
Option "GrabEventDevice" "''boolean''"<br />
...<br />
}}<br />
<br />
This will come into effect when X is restarted, though you can also change it by using synclient. When changing this parameter with the synclient program, the change will not take effect until the Synaptics driver is disabled and re-enabled. This can be achieved by switching to a text console and then switching back to X.<br />
<br />
=== Synaptics loses multitouch detection after rebooting from Windows ===<br />
<br />
Many drivers include a firmware that is loaded into flash memory when the computer boots. This firmware is not necessarily cleared upon shutdown, and is not always compatible with Linux drivers. The only way to clear the flash memory is to shutdown completely rather than using reboot. It is generally considered best practice to never use reboot when switching between operating systems.<br />
<br />
=== Touchpad not recognized after shutdown from Arch ===<br />
Certain touchpads (elantech in particular) will fail to be recognized as a device of any sort after a standard shutdown from Arch linux. There are multiple possible solutions to this problem:<br />
* Boot into a Windows partition/install disk and shutdown from there.<br />
* Wait approximately 1 minute before turning on the computer after shutdown.<br />
* Apply the kernel patch listed in this thread (comment 135) and rebuild your kernel: https://bugzilla.kernel.org/show_bug.cgi?id=81331#c135<br />
** This patch is unlikely to make it upstream, as it is a somewhat 'hacky' solution to this problem. <br />
<br />
=== Trackpoint and Clickpad ===<br />
Newer Thinkpads do not have physical buttons for their Trackpoint anymore and instead use the upper area of the Clickpad for buttons (Left, Middle, Right). <br />
Apart from the ergonomic viewpoint this works quite well with current Xorg. Unfortunately mouse wheel emulation using the middle button is not supported yet. Install {{AUR|xf86-input-evdev-trackpoint}} from the AUR for a patched and properly configured version if you intend to use the Trackpoint.<br />
<br />
=== Clickpad/Forcepad: double-click, click-and-drag ===<br />
<br />
On newer laptops such as the HP Envy 15 x360 a {{ic|ButtonRelease}} event is not sent when releasing the physical button, but only when moving all fingers off the Clickpad. [http://permalink.gmane.org/gmane.linux.kernel.input/38497] This is due to a kernel bug in {{ic|drivers/media/input/synaptics.c}} [https://lkml.org/lkml/2014/9/30/719]; see [http://www.linuxquestions.org/questions/showthread.php?p=5276920&posted=1#post5276920] for a temporary workaround.<br />
<br />
== See also ==<br />
<br />
* [http://cgit.freedesktop.org/xorg/driver/xf86-input-synaptics/ Synaptics touchpad driver]<br />
* [http://www.x.org/archive/X11R7.5/doc/man/man4/synaptics.4.html Synaptics manual on x.org ]</div>Zekesonxxhttps://wiki.archlinux.org/index.php?title=Logitech_G13&diff=373692Logitech G132015-05-14T16:18:49Z<p>Zekesonxx: Add related articles</p>
<hr />
<div>[[Category:Keyboards]]<br />
{{Related articles start}}<br />
{{Related|Logitech Gaming Keyboards}}<br />
{{Related articles end}}<br />
The Logitech G13 is a 25-key "advanced gameboard" from Logitech's Gaming series, with the intention of replacing the left half of your keyboard whilst gaming. It uses rubber dome keyswitches for the main 22-keys, mouse-like buttons for the two buttons around the joystick, a joystick (which can be pressed in), four Mode buttons, four option buttons, a menu button, and a backlight toggle. ([http://gaming.logitech.com/en-us/product/g13-advanced-gameboard Official Site])<br />
<br />
There are a couple options for drivers, but only one that appears to work well today:<br />
<br />
* Running the official [http://support.logitech.com/software/gaming-software Logitech Gaming Software] under [[Wine]]. Despite working fine, the software [https://appdb.winehq.org/objectManager.php?sClass=application&iId=14748 has a Garbage rating] on WineHQ, as it can't actually communicate with USB devices. (However, the reports available are quite old, and you may have better luck)<br />
* {{Pkg|g15daemon}}, despite it's backend (libg15) claiming to support the G13, does not actually support the G13.<br />
* [https://code.google.com/p/linux-g13-driver/ linux-g13-driver], which can compile if you edit the Makefile (see [https://code.google.com/p/linux-g13-driver/issues/detail?id=16 issue #16]), and may work for you.<br />
* [https://github.com/ecraven/g13 g13] {{AUR|g13-git}} is a user-space driver, which seems to work the best out of these.<br />
<br />
== g13 ==<br />
<br />
=== Installation ===<br />
Install {{AUR|g13-git}} from the [[Arch User Repository]].<br />
<br />
In order to run g13d as your user instead of root, download [https://github.com/ecraven/g13/blob/master/91-g13.rules 91-g13.rules], and put it in {{ic|/etc/udev/rules.d/}}.<br />
<br />
=== Running ===<br />
{{Note|The binary is named g13d, the binary g13 is from {{Pkg|gnupg}}.}}<br />
After following the steps above, when you reboot and launch g13, you should receive an image with a "linux inside" logo, "G13", and the GNU logo.<br />
<br />
If you receive the error {{ic|/dev/uinput doesn't grant write permissions}}, running the command below should fix it, but only until you reboot.<br />
{{bc|# chmod a+rw /dev/uinput}}<br />
<br />
=== Configuring ===<br />
g13 is configured via writing to /tmp/g13-0.<br />
<br />
Ex, to set the display a purple colour:<br />
{{bc|$ echo "rgb 177 13 201" > /tmp/g13-0}}<br />
g13 can also handle multiple commands at once:<br />
{{bc|$ echo -e "rgb 177 13 201\nbind G4 KEY_W" > /tmp/g13-0}}<br />
<br />
{{Tip|g13 can handle multiple commands at once, and will ignore lines starting with {{ic|#}}. You can use this to make files full of commands and run {{ic|cat file > /tmp/g13-0}} when you're ready to play.}}<br />
<br />
=== Commands ===<br />
* {{ic|rgb <rrr> <ggg> <bbb>}}, Set the backlight to an rgb colour, values are expressed in decimal from 0 to 255.<br />
For example, to set the display green:<br />
{{bc|rgb 0 255 0}}<br />
* {{ic|bind <g13key> <actualkey>}}, Binds a G13 key. All keys are bound to {{ic|a}} by default.<br />
For example, to setup WASD movement:<br />
{{bc|bind G4 KEY_W<br />
bind G10 KEY_A<br />
bind G11 KEY_S<br />
bind G12 KEY_D}}<br />
See below for how to configure this.<br />
* {{ic|mod <n>}}, Sets the backlight status of M1, M2, M3, and MR.<br />
<n> is a bitmask. To find the desired state compute the sum of 1 (M1), 2 (M2), 4 (M3) and 8 (MR).<br />
For example, to set M1, M3, and MR on, and turn M2 off (1+4+8=13):<br />
{{bc|mod 13}}<br />
<br />
=== Keys ===<br />
<br />
{{hc|Keys to map to (should be self explanatory)|KEY_0 KEY_1 KEY_2 KEY_3 KEY_4 KEY_5 KEY_6 KEY_7 KEY_8 KEY_9 KEY_A KEY_APOSTROPHE KEY_B KEY_BACKSLASH KEY_BACKSPACE KEY_C KEY_CAPSLOCK KEY_COMMA KEY_D KEY_DOT KEY_DOWN KEY_E KEY_ENTER KEY_EQUAL KEY_ESC KEY_F KEY_F1 KEY_F10 KEY_F2 KEY_F3 KEY_F4 KEY_F5 KEY_F6 KEY_F7 KEY_F8 KEY_F9 KEY_G KEY_GRAVE KEY_H KEY_I KEY_J KEY_K KEY_KP0 KEY_KP1 KEY_KP2 KEY_KP3 KEY_KP4 KEY_KP5 KEY_KP6 KEY_KP7 KEY_KP8 KEY_KP9 KEY_KPASTERISK KEY_KPDOT KEY_KPMINUS KEY_KPPLUS KEY_L KEY_LEFT KEY_LEFTALT KEY_LEFTBRACE KEY_LEFTCTRL KEY_LEFTSHIFT KEY_M KEY_MINUS KEY_N KEY_NUMLOCK KEY_O KEY_P KEY_Q KEY_R KEY_RIGHT KEY_RIGHTBRACE KEY_RIGHTSHIFT KEY_S KEY_SCROLLLOCK KEY_SEMICOLON KEY_SLASH KEY_SPACE KEY_T KEY_TAB KEY_U KEY_UP KEY_V KEY_W KEY_X KEY_Y KEY_Z}}<br />
<br />
{{hc|Keys to map|BD DOWN G1 G10 G11 G12 G13 G14 G15 G16 G17 G18 G19 G2 G20 G21 G22 G3 G4 G5 G6 G7 G8 G9 L1 L2 L3 L4 LEFT LIGHT LIGHT_STATE M1 M2 M3 MR TOP STICK_LEFT STICK_RIGHT STICK_UP STICK_DOWN}}<br />
<br />
Since that can be less than explanatory, here's a diagram showing where the keys physically are on the device:<br />
<br />
Keypad:<br />
______________<br />
| 160x43 LCD |<br />
| |<br />
‾‾‾‾‾‾‾‾‾‾‾‾‾‾<br />
BD L1 L2 L3 L4 LIGHT_STATE<br />
M1 M2 M3 MR<br />
G1 G2 G3 G4 G5 G6 G7 <br />
G8 G9 G10 G11 G12 G13 G14<br />
G15 G16 G17 G18 G19<br />
G10 G21 G22<br />
<br />
Joystick:<br />
L STICK_UP<br />
E STICK_LEFT TOP STICK_RIGHT<br />
F STICK_DOWN<br />
T<br />
DOWN<br />
<br />
{{Tip|As a jumping off point, you can use [https://github.com/zekesonxx/g13-profiles/blob/master/default.bind default.bind], which has the same bindings as the default profile when using the official software, along with a purple backlight.}}</div>Zekesonxxhttps://wiki.archlinux.org/index.php?title=Gogs&diff=368891Gogs2015-04-07T13:52:30Z<p>Zekesonxx: Fix incorrect formatting for a indefinite link</p>
<hr />
<div>[[Category:Version Control System]]<br />
{{Stub|Work in progress}}<br />
<br />
[http://gogs.io/ Gogs] (Go Git Service) is a Self Hosted Git service, which was written in the [[Go]] programming language.<br />
<br />
== Packages ==<br />
<br />
* {{AUR|gogs}} - Release package<br />
* {{AUR|gogs-git}} - Git <code>master</code> branch package [https://github.com/gogits/gogs GitHub master branch]<br />
* {{AUR|gogs-git-dev}} - Git <code>dev</code> branch package [https://github.com/gogits/gogs/tree/dev GitHub dev branch]<br />
<br />
In all three package is sqlite, redis and memcache activate for compile. To use it, you need to edit the configuration file <code>app.ini</code> (see [[#Configuration]]).<br />
<br />
== Installation ==<br />
<br />
Installing Gogs from the [[AUR]] instead of manually has the added benefit that lots of steps have been taken care of for you (e.g. permissions and ownership for files, etc).<br />
<br />
Make sure you perform a system upgrade ({{ic|pacman -Syu}}) before installing Gogs from AUR and that you have installed the {{ic|base-devel}} group, or you may face problems installing Gogs because [https://wiki.archlinux.org/index.php/Makepkg#Usage base-devel packages are not required to be listed as dependencies in PKGBUILD files].<br />
<br />
Also before installing the Gogs package from the [[AUR]], you need to choose a database backend if you're planning to host GitLab it on the same machine as the database:<br />
<br />
* SQLite: {{Pkg|sqlite}} - For configuration of Gogs with SQLite see [[#SQLite]].<br />
* PostgreSQL: {{Pkg|postgresql}} - Read [[PostgreSQL#Installing_PostgreSQL]] to set it up and start the [[daemon]] and for configuration of Gogs with PostgreSQL see [[#PostgreSQL]].<br />
* MariaDB: {{Pkg|mariadb}} - Read [[MariaDB#Installation]] to set it up and start the [[daemon]] and for configuration of Gogs with MariaDB see [[#MariaDB]].<br />
<br />
== First start ==<br />
<br />
After starting of the Gogs service (<code>systemctl start gogs.service</code>), you can access the running service over the url {{ic|http://[server]:3000}}. At the first execute, you will redirect to the installation page. Here you can configure some minor configuration options. In the configuration file <code>/srv/gogs/conf/app.ini</code>, you can change more values (for example the port number).<br />
<br />
== Configuration ==<br />
<br />
After the first start, Gogs created a own configuration file in the directory <code>/srv/gogs/config</code>. When you want to edit a configuration option, you need to edit this file.<br />
<br />
=== .gitignore and license files ===<br />
<br />
Add the files into the directory <code>/srv/gogs/conf/gitignore</code> or <code>/srv/gogs/conf/license</code>. When the directory not exist, you need to created it in the first step.<br />
<br />
You can get or create own .gitignore files on this [http://www.gitignore.io/ page].<br />
<br />
=== Database ===<br />
<br />
==== SQLite ====<br />
<br />
==== PostgreSQL ====<br />
<br />
==== MariaDB ====<br />
<br />
=== SMTP ===<br />
<br />
=== oAuth ===<br />
<br />
=== Logging ===<br />
<br />
=== Caching ===<br />
<br />
== Theme ==<br />
<br />
The current package (gogs-git* and gogs>=0.4.2) support custom themes. The location for Gogs themes is <code>/usr/share/themes/goges/</code>. Gogs comes with one default theme, but you can easily create a own theme. Just copy the default <code>theme</code> directory and change what every you want. In the <code>public</code> directory is every javascript, stylesheet and font file and in the <code>template</code> directory are the HTML templates. The current selected theme can be changed over the <code>app.ini</code> configuration parameter <code>STATIC_ROOT_PATH</code>. Changed it with the absolute path to the new theme.<br />
<br />
== See also ==<br />
*[http://gogs.io/docs/intro/ Official Documentation]</div>Zekesonxxhttps://wiki.archlinux.org/index.php?title=User:Zekesonxx&diff=362769User:Zekesonxx2015-02-26T18:51:54Z<p>Zekesonxx: me is me</p>
<hr />
<div>I program things and sometimes contribute things.<br />
<br />
https://github.com/zekesonxx</div>Zekesonxxhttps://wiki.archlinux.org/index.php?title=Logitech_G13&diff=362766Logitech G132015-02-26T18:23:09Z<p>Zekesonxx: Create page Logitech G13</p>
<hr />
<div>[[Category:Keyboards]]<br />
The Logitech G13 is a 25-key "advanced gameboard" from Logitech's Gaming series, with the intention of replacing the left half of your keyboard whilst gaming. It uses rubber dome keyswitches for the main 22-keys, mouse-like buttons for the two buttons around the joystick, a joystick (which can be pressed in), four Mode buttons, four option buttons, a menu button, and a backlight toggle. ([http://gaming.logitech.com/en-us/product/g13-advanced-gameboard Official Site])<br />
<br />
There are a couple options for drivers, but only one that appears to work well today:<br />
<br />
* Running the official [http://support.logitech.com/software/gaming-software Logitech Gaming Software] under [[Wine]]. Despite working fine, the software [https://appdb.winehq.org/objectManager.php?sClass=application&iId=14748 has a Garbage rating] on WineHQ, as it can't actually communicate with USB devices. (However, the reports available are quite old, and you may have better luck)<br />
* {{Pkg|g15daemon}}, despite it's backend (libg15) claiming to support the G13, does not actually support the G13.<br />
* [https://code.google.com/p/linux-g13-driver/ linux-g13-driver], which can compile if you edit the Makefile (see [https://code.google.com/p/linux-g13-driver/issues/detail?id=16 issue #16]), and may work for you.<br />
* [https://github.com/ecraven/g13 g13] {{AUR|g13-git}} is a user-space driver, which seems to work the best out of these.<br />
<br />
== g13 ==<br />
<br />
=== Installation ===<br />
Install {{AUR|g13-git}} from the [[Arch User Repository]].<br />
<br />
In order to run g13d as your user instead of root, download [https://github.com/ecraven/g13/blob/master/91-g13.rules 91-g13.rules], and put it in {{ic|/etc/udev/rules.d/}}.<br />
<br />
=== Running ===<br />
{{Note|The binary is named g13d, the binary g13 is from {{Pkg|gnupg}}.}}<br />
After following the steps above, when you reboot and launch g13, you should receive an image with a "linux inside" logo, "G13", and the GNU logo.<br />
<br />
If you receive the error {{ic|/dev/uinput doesn't grant write permissions}}, running the command below should fix it, but only until you reboot.<br />
{{bc|# chmod a+rw /dev/uinput}}<br />
<br />
=== Configuring ===<br />
g13 is configured via writing to /tmp/g13-0.<br />
<br />
Ex, to set the display a purple colour:<br />
{{bc|$ echo "rgb 177 13 201" > /tmp/g13-0}}<br />
g13 can also handle multiple commands at once:<br />
{{bc|$ echo -e "rgb 177 13 201\nbind G4 KEY_W" > /tmp/g13-0}}<br />
<br />
{{Tip|g13 can handle multiple commands at once, and will ignore lines starting with {{ic|#}}. You can use this to make files full of commands and run {{ic|cat file > /tmp/g13-0}} when you're ready to play.}}<br />
<br />
=== Commands ===<br />
* {{ic|rgb <rrr> <ggg> <bbb>}}, Set the backlight to an rgb colour, values are expressed in decimal from 0 to 255.<br />
For example, to set the display green:<br />
{{bc|rgb 0 255 0}}<br />
* {{ic|bind <g13key> <actualkey>}}, Binds a G13 key. All keys are bound to {{ic|a}} by default.<br />
For example, to setup WASD movement:<br />
{{bc|bind G4 KEY_W<br />
bind G10 KEY_A<br />
bind G11 KEY_S<br />
bind G12 KEY_D}}<br />
See below for how to configure this.<br />
* {{ic|mod <n>}}, Sets the backlight status of M1, M2, M3, and MR.<br />
<n> is a bitmask. To find the desired state compute the sum of 1 (M1), 2 (M2), 4 (M3) and 8 (MR).<br />
For example, to set M1, M3, and MR on, and turn M2 off (1+4+8=13):<br />
{{bc|mod 13}}<br />
<br />
=== Keys ===<br />
<br />
{{hc|Keys to map to (should be self explanatory)|KEY_0 KEY_1 KEY_2 KEY_3 KEY_4 KEY_5 KEY_6 KEY_7 KEY_8 KEY_9 KEY_A KEY_APOSTROPHE KEY_B KEY_BACKSLASH KEY_BACKSPACE KEY_C KEY_CAPSLOCK KEY_COMMA KEY_D KEY_DOT KEY_DOWN KEY_E KEY_ENTER KEY_EQUAL KEY_ESC KEY_F KEY_F1 KEY_F10 KEY_F2 KEY_F3 KEY_F4 KEY_F5 KEY_F6 KEY_F7 KEY_F8 KEY_F9 KEY_G KEY_GRAVE KEY_H KEY_I KEY_J KEY_K KEY_KP0 KEY_KP1 KEY_KP2 KEY_KP3 KEY_KP4 KEY_KP5 KEY_KP6 KEY_KP7 KEY_KP8 KEY_KP9 KEY_KPASTERISK KEY_KPDOT KEY_KPMINUS KEY_KPPLUS KEY_L KEY_LEFT KEY_LEFTALT KEY_LEFTBRACE KEY_LEFTCTRL KEY_LEFTSHIFT KEY_M KEY_MINUS KEY_N KEY_NUMLOCK KEY_O KEY_P KEY_Q KEY_R KEY_RIGHT KEY_RIGHTBRACE KEY_RIGHTSHIFT KEY_S KEY_SCROLLLOCK KEY_SEMICOLON KEY_SLASH KEY_SPACE KEY_T KEY_TAB KEY_U KEY_UP KEY_V KEY_W KEY_X KEY_Y KEY_Z}}<br />
<br />
{{hc|Keys to map|BD DOWN G1 G10 G11 G12 G13 G14 G15 G16 G17 G18 G19 G2 G20 G21 G22 G3 G4 G5 G6 G7 G8 G9 L1 L2 L3 L4 LEFT LIGHT LIGHT_STATE M1 M2 M3 MR TOP STICK_LEFT STICK_RIGHT STICK_UP STICK_DOWN}}<br />
<br />
Since that can be less than explanatory, here's a diagram showing where the keys physically are on the device:<br />
<br />
Keypad:<br />
______________<br />
| 160x43 LCD |<br />
| |<br />
‾‾‾‾‾‾‾‾‾‾‾‾‾‾<br />
BD L1 L2 L3 L4 LIGHT_STATE<br />
M1 M2 M3 MR<br />
G1 G2 G3 G4 G5 G6 G7 <br />
G8 G9 G10 G11 G12 G13 G14<br />
G15 G16 G17 G18 G19<br />
G10 G21 G22<br />
<br />
Joystick:<br />
L STICK_UP<br />
E STICK_LEFT TOP STICK_RIGHT<br />
F STICK_DOWN<br />
T<br />
DOWN<br />
<br />
{{Tip|As a jumping off point, you can use [https://github.com/zekesonxx/g13-profiles/blob/master/default.bind default.bind], which has the same bindings as the default profile when using the official software, along with a purple backlight.}}</div>Zekesonxx