https://wiki.archlinux.org/api.php?action=feedcontributions&user=Dustball&feedformat=atomArchWiki - User contributions [en]2024-03-29T08:57:26ZUser contributionsMediaWiki 1.41.0https://wiki.archlinux.org/index.php?title=Desktop_environment&diff=493170Desktop environment2017-10-14T12:24:41Z<p>Dustball: /* Comparison of desktop environments */ liri: converted AUR? to AUR, as they are in the AUR.</p>
<hr />
<div>[[Category:Desktop environments]]<br />
[[es:Desktop environment]]<br />
[[fa:Desktop environment]]<br />
[[it:Desktop environment]]<br />
[[ja:デスクトップ環境]]<br />
[[ru:Desktop environment]]<br />
[[sv:Skrivbordsmiljö]]<br />
[[uk:Desktop environment]]<br />
[[zh-hans:Desktop environment]]<br />
{{Related articles start}}<br />
{{Related|Display manager}}<br />
{{Related|Window manager}}<br />
{{Related|Xorg}}<br />
{{Related|Wayland}}<br />
{{Related|Default applications}}<br />
{{Related articles end}}<br />
A [[Wikipedia:Desktop environment|desktop environment]] provides a ''complete'' graphical user interface (GUI) for a system by bundling together a variety of components written using a common widget toolkit and set of libraries.<br />
<br />
== Overview ==<br />
<br />
A desktop environment bundles together a variety of components to provide common graphical user interface elements such as icons, toolbars, wallpapers, and desktop widgets. Additionally, most desktop environments include a set of integrated applications and utilities. Most importantly, desktop environments provide their own [[window manager]], which can however usually be replaced with another compatible one.<br />
<br />
The user is free to configure their GUI environment in any number of ways. Desktop environments simply provide a complete and convenient means of accomplishing this task. Note that users are free to mix-and-match applications from multiple desktop environments. For example, a KDE user may install and run GNOME applications such as the Epiphany web browser, should he/she prefer it over KDE's Konqueror web browser. One drawback of this approach is that many applications provided by desktop environment projects rely heavily upon their DE's respective underlying libraries. As a result, installing applications from a range of desktop environments will require installation of a larger number of dependencies. Users seeking to conserve disk space often avoid such mixed environments, or chose alternatives which do depend on only few external libraries.<br />
<br />
Furthermore, DE-provided applications tend to integrate better with their native environments. Superficially, mixing environments with different widget toolkits will result in visual discrepancies (that is, interfaces will use different icons and widget styles). In terms of usability, mixed environments may not behave similarly (e.g. single-clicking versus double-clicking icons; drag-and-drop functionality) potentially causing confusion or unexpected behavior.<br />
<br />
Prior to installing a desktop environment, a functional X server installation is required. See [[Xorg]] for detailed information. Some desktop environments may also support [[Wayland]] as an alternative to X, but most of these are still experimental.<br />
<br />
== List of desktop environments ==<br />
<br />
=== Officially supported ===<br />
<br />
* {{App|[[Budgie Desktop|Budgie]]|Budgie is a desktop environment designed with the modern user in mind, it focuses on simplicity and elegance. |https://budgie-desktop.org/|{{Pkg|budgie-desktop}}}}<br />
<br />
* {{App|[[Cinnamon]]|Cinnamon strives to provide a traditional user experience. Cinnamon is a fork of GNOME 3.|http://cinnamon.linuxmint.com/|{{Pkg|cinnamon}}}}<br />
<br />
* {{App|[[Deepin]]|Deepin desktop interface and apps feature an intuitive and elegant design. Moving around, sharing and searching etc. has become simply a joyful experience. |https://www.deepin.org/|{{grp|deepin}}}}<br />
<br />
* {{App|[[Enlightenment]]|The Enlightenment desktop shell provides an efficient window manager based on the Enlightenment Foundation Libraries along with other essential desktop components like a file manager, desktop icons and widgets. It supports themes, while still being capable of performing on older hardware or embedded devices.|https://www.enlightenment.org/|{{Pkg|enlightenment}}}}<br />
<br />
* {{App|[[GNOME]]|The GNOME desktop environment is an attractive and intuitive desktop with both a modern (''GNOME'') and a classic (''GNOME Classic'') session.|https://www.gnome.org/gnome-3/|{{grp|gnome}}}}<br />
<br />
* {{App|[[GNOME Flashback]]| GNOME Flashback is a shell for GNOME 3 which was initially called GNOME fallback mode. The desktop layout and the underlying technology is similar to GNOME 2.|https://wiki.gnome.org/Projects/GnomeFlashback|{{Pkg|gnome-flashback}}}}<br />
<br />
* {{App|[[KDE Plasma]]|The KDE Plasma desktop environment is a familiar working environment. Plasma offers all the tools required for a modern desktop computing experience so you can be productive right from the start.|https://www.kde.org/plasma-desktop|{{grp|plasma}}}}<br />
<br />
* {{App|[[LXDE]]|The Lightweight X11 Desktop Environment is a fast and energy-saving desktop environment. It comes with a modern interface, multi-language support, standard keyboard short cuts and additional features like tabbed file browsing. Fundamentally designed to be lightweight, LXDE strives to be less CPU and RAM intensive than other environments.|http://lxde.org/|GTK+ 2: {{grp|lxde}}, GTK+ 3: {{grp|lxde-gtk3}}}}<br />
<br />
* {{App|[[LXQt]]|LXQt is the Qt port and the upcoming version of LXDE, the Lightweight Desktop Environment. It is the product of the merge between the LXDE-Qt and the Razor-qt projects: A lightweight, modular, blazing-fast and user-friendly desktop environment.|http://lxqt.org/|{{grp|lxqt}}}}<br />
<br />
* {{App|[[MATE]]|Mate provides an intuitive and attractive desktop to Linux users using traditional metaphors. MATE started as a fork of GNOME 2, but now uses GTK+ 3.|http://www.mate-desktop.org/|{{grp|mate}}}}<br />
<br />
* {{App|[[Sugar]]|The Sugar Learning Platform is a computer environment composed of Activities designed to help children from 5 to 12 years of age learn together through rich-media expression. Sugar is the core component of a worldwide effort to provide every child with the opportunity for a quality education — it is currently used by nearly one-million children worldwide speaking 25 languages in over 40 countries. Sugar provides the means to help people lead fulfilling lives through access to a quality education that is currently missed by so many.|https://sugarlabs.org/|{{Pkg|sugar}} + {{Grp|sugar-fructose}}}}<br />
<br />
* {{App|[[Xfce]]|Xfce embodies the traditional UNIX philosophy of modularity and re-usability. It consists of a number of components that provide the full functionality one can expect of a modern desktop environment, while remaining relatively light. They are packaged separately and you can pick among the available packages to create the optimal personal working environment.|http://www.xfce.org/|{{grp|xfce4}}}}<br />
<br />
=== Unofficially supported ===<br />
<br />
* {{App|[[CDE]]|The Common Desktop Environment (CDE) is a desktop environment for Unix and OpenVMS, based on the Motif widget toolkit. It was part of the UNIX98 Workstation Product Standard, and was long the "classic" Unix desktop associated with commercial Unix workstations. Highly experimental.|https://sourceforge.net/projects/cdesktopenv/|{{AUR|cdesktopenv}}}}<br />
<br />
* {{App|[[Equinox Desktop Environment|EDE]]|The "Equinox Desktop Environment" is a DE designed to be simple, extremely light-weight and fast.|http://equinox-project.org/|{{AUR|ede}}}}<br />
<br />
* {{App|[[Liri]]|Liri is a desktop environment with modern design and features. Liri is the merge between [http://hawaiios.org/ Hawaii], [http://papyros.io/ Papyros] and the [https://github.com/liri-project Liri Project]. Highly experimental.|https://liri.io/|{{AUR|liri-shell-git}}}}<br />
<br />
* {{App|[[Lumina]]|Lumina is a lightweight desktop environment written in Qt 5 for FreeBSD that uses Fluxbox for window management.|https://lumina-desktop.org/|{{AUR|lumina-desktop}}}}<br />
<br />
* {{App|[[Moksha]]|Fork of Enlightenment currently used as default desktop environment in Ubuntu-based Bodhi Linux.|http://www.bodhilinux.com/moksha-desktop/|{{AUR|moksha}}}}<br />
<br />
* {{App|[[Pantheon]]|Pantheon is the default desktop environment originally created for the elementary OS distribution. It is written from scratch using Vala and the GTK3 toolkit. With regards to usability and appearance, the desktop has some similarities with GNOME Shell and macOS.|https://elementary.io/|{{AUR|pantheon-session-bzr}}}}<br />
<br />
* {{App|theShell|theShell is a desktop environment that tries to be as transparent as possible. It uses Qt 5 as its widget toolkit and KWin as its window manager. It also incorporates a personal assistant.|https://vicr123.github.io/theshell|{{AUR|theshell}}}}<br />
<br />
* {{App|[[Trinity]]|The Trinity Desktop Environment (TDE) project is a computer desktop environment for Unix-like operating systems with a primary goal of retaining the overall KDE 3.5 computing style.|http://www.trinitydesktop.org/|See [[Trinity]]}}<br />
<br />
== Comparison of desktop environments ==<br />
<br />
''This section attempts to draw a comparison between popular desktop environments. Note that first-hand experience is the only effective way to truly evaluate whether a desktop environment best suits your needs.''<br />
<br />
See also [[Wikipedia:Comparison of X Window System desktop environments]].<br />
<br />
{| class="wikitable"<br />
|+ Overview of desktop environments <!-- PLEASE DO NOT OVER-CLUTTER THIS TABLE! --><br />
! Desktop environment !! Widget toolkit !! Window manager !! Taskbar !! Terminal emulator !! File manager !! Calculator !! Text editor !! Image viewer !! Media player !! Web browser !! Display manager<br />
|-<br />
| [[Budgie Desktop|Budgie]] || [[GTK+]] 3<br>{{pkg|gtk3}} || budgie-wm<br>{{Pkg|budgie-desktop}} || budgie-panel<br>{{Pkg|budgie-desktop}} || [[Wikipedia:GNOME Terminal|GNOME Terminal]]<br>{{pkg|gnome-terminal}} || [[GNOME Files]]<br>{{pkg|nautilus}} || [[Wikipedia:GNOME Calculator|GNOME Calculator]]<br>{{pkg|gnome-calculator}} || [[gedit]]<br>{{pkg|gedit}} || [[Wikipedia:Eye of GNOME|Eye of GNOME]]<br>{{pkg|eog}} || [[Wikipedia:GNOME Videos|GNOME Videos]]<br>{{pkg|totem}} || [[Epiphany]]<br>{{pkg|epiphany}} || [[GDM]]<br>{{pkg|gdm}}<br />
|-<br />
| [[Cinnamon]] || [[GTK+]] 3<br>{{pkg|gtk3}} || Muffin<br>{{pkg|muffin}} || Cinnamon<br>{{pkg|cinnamon}} || [[Wikipedia:GNOME Terminal|GNOME&nbsp;Terminal]]<br>{{pkg|gnome-terminal}} || [[Nemo]]<br>{{pkg|nemo}} || [[Wikipedia:GNOME Calculator|GNOME Calculator]]<br>{{pkg|gnome-calculator}} || [[gedit]]<br>{{pkg|gedit}} || [[Wikipedia:Eye of GNOME|Eye&nbsp;of&nbsp;GNOME]]<br>{{pkg|eog}} || [[Wikipedia:GNOME Videos|GNOME Videos]]<br>{{pkg|totem}} || [[Firefox]]<br>{{pkg|firefox}} || [[LightDM]] GTK+ Greeter<br>{{pkg|lightdm-gtk-greeter}}<br />
|-<br />
| [[Deepin]] || [[GTK+]] 2/3, [[Qt]]&nbsp;5<br>{{pkg|gtk2}} {{pkg|gtk3}} {{pkg|qt5-base}} || Deepin Window Manager<br>{{pkg|deepin-wm}} || Deepin Dock<br>{{pkg|deepin-dock}} || Deepin Terminal<br>{{pkg|deepin-terminal}} || Deepin File Manager<br>{{pkg|deepin-file-manager}} || [[Wikipedia:GNOME Calculator|GNOME Calculator]]<br>{{pkg|gnome-calculator}} || [[gedit]]<br>{{pkg|gedit}} || Deepin Image Viewer<br>{{pkg|deepin-image-viewer}} || Deepin Movie<br>{{pkg|deepin-movie}} || [[Chromium]]<br>{{pkg|chromium}} || [[LightDM]] Deepin Greeter<br>{{pkg|deepin-session-ui}}<br />
|-<br />
| [[Equinox Desktop Environment|EDE]] || [http://www.fltk.org/ FLTK]<br>{{pkg|fltk}} || [[PekWM]]<br>{{AUR|ede}} || EDE Panel<br>{{AUR|ede}} || [[Xterm|XTerm]]<br>{{Pkg|xterm}} || Fluff<br>{{AUR|fluff}} || Calculator<br>{{AUR|ede}} || Editor<br>{{AUR|fltk-editor}} || Image Viewer<br>{{AUR|ede}} || flmusic<br>{{AUR|flmusic}} || [[Dillo]]<br>{{Pkg|dillo}} || [[XDM]]<br>{{Pkg|xorg-xdm}}<br />
|-<br />
| [[Enlightenment]] || [https://www.enlightenment.org/about-efl EFL]<br>{{Pkg|efl}} || [https://www.enlightenment.org/about-enlightenment Enlightenment]<br>{{pkg|enlightenment}} || [https://www.enlightenment.org/about-enlightenment Enlightenment]<br>{{pkg|enlightenment}} || [https://www.enlightenment.org/about-terminology Terminology]<br>{{pkg|terminology}} || [https://www.enlightenment.org/about-enlightenment Enlightenment]<br>{{pkg|enlightenment}} || Equate<br>{{AUR|equate-git}} || Ecrire<br>{{AUR|ecrire-git}} || [https://www.enlightenment.org/about-ephoto Ephoto]<br>{{AUR|ephoto-git}} || [https://www.enlightenment.org/about-rage Rage]<br>{{AUR|rage}} || [[Wikipedia:Links (web browser)|Links]]<br>{{Pkg|links}} || [[XDM]]<br>{{Pkg|xorg-xdm}}<br />
|-<br />
| [[GNOME]] || [[GTK+]] 3<br>{{pkg|gtk3}} || [[Wikipedia:Mutter (window manager)|Mutter]]<br>{{pkg|mutter}} || [[Wikipedia:GNOME Shell|GNOME Shell]]<br>{{pkg|gnome-shell}} || [[Wikipedia:GNOME Terminal|GNOME Terminal]]<br>{{pkg|gnome-terminal}} || [[GNOME Files]]<br>{{pkg|nautilus}} || [[Wikipedia:GNOME Calculator|GNOME Calculator]]<br>{{pkg|gnome-calculator}} || [[gedit]]<br>{{pkg|gedit}} || [[Wikipedia:Eye of GNOME|Eye of GNOME]]<br>{{pkg|eog}} || [[Wikipedia:GNOME Videos|GNOME Videos]]<br>{{pkg|totem}} || [[Epiphany]]<br>{{pkg|epiphany}} || [[GDM]]<br>{{pkg|gdm}}<br />
|-<br />
| [[GNOME Flashback]] || [[GTK+]] 3<br>{{pkg|gtk3}} || [[Wikipedia:Metacity|Metacity]]<br>{{pkg|metacity}} || [[Wikipedia:GNOME Panel|GNOME Panel]]<br>{{pkg|gnome-panel}} || [[Wikipedia:GNOME Terminal|GNOME Terminal]]<br>{{pkg|gnome-terminal}} || [[GNOME Files]]<br>{{pkg|nautilus}} || [[Wikipedia:GNOME Calculator|GNOME Calculator]]<br>{{pkg|gnome-calculator}} || [[gedit]]<br>{{pkg|gedit}} || [[Wikipedia:Eye of GNOME|Eye of GNOME]]<br>{{pkg|eog}} || [[Wikipedia:GNOME Videos|GNOME Videos]]<br>{{pkg|totem}} || [[Epiphany]]<br>{{pkg|epiphany}} || [[GDM]]<br>{{pkg|gdm}}<br />
|-<br />
| [[KDE Plasma]] || [[Qt]] 5<br>{{pkg|qt5-base}} || [[Wikipedia:KWin|KWin]]<br>{{pkg|kwin}} || [[Wikipedia:KDE Plasma 5#Desktop|Plasma&nbsp;Desktop]]<br>{{pkg|plasma-desktop}} || [http://konsole.kde.org/ Konsole]<br>{{pkg|konsole}} || [http://dolphin.kde.org/ Dolphin]<br>{{pkg|dolphin}} || [http://www.kde.org/applications/utilities/kcalc/ KCalc]<br>{{pkg|kcalc}} || [http://kate-editor.org/ KWrite/Kate]<br>{{pkg|kwrite}} {{pkg|kate}} || [http://gwenview.sourceforge.net/ Gwenview]<br>{{pkg|gwenview}} || [http://www.kde.org/applications/multimedia/dragonplayer/ Dragon&nbsp;Player]<br>{{pkg|dragon}} || [http://www.konqueror.org/ Konqueror]<br>{{pkg|konqueror}} || [[SDDM]]<br>{{Pkg|sddm}}<br />
|-<br />
| [[Liri]] || [[Qt]] 5<br>{{Pkg|qt5-base}} || Green Island<br>{{AUR|greenisland}} || Liri Shell<br>{{AUR|liri-shell-git}} || Liri Terminal<br>{{AUR|liri-terminal-git}} || Liri Files<br>{{AUR|liri-files-git}} || Liri Calculator<br>{{AUR|liri-calculator-git}} || Liri Text<br>{{AUR|liri-text-git}} || EyeSight<br>{{AUR|eyesight}} || Liri Player<br>{{AUR|liri-player-git}} || Liri Browser<br>{{AUR|liri-browser-git}} || SDDM<br>{{Pkg|sddm}}<br />
|-<br />
| [[LXDE]] (GTK+ 2) || [[GTK+]] 2<br>{{pkg|gtk2}} || [[Openbox]]<br>{{pkg|openbox}} || [http://wiki.lxde.org/en/LXPanel LXPanel]<br>{{pkg|lxpanel}} || [http://wiki.lxde.org/en/LXTerminal LXTerminal]<br>{{pkg|lxterminal}} || [[PCManFM]]<br>{{pkg|pcmanfm}} || [http://galculator.sourceforge.net/ Galculator]<br>{{Pkg|galculator-gtk2}} || [http://tarot.freeshell.org/leafpad/ Leafpad]<br>{{pkg|leafpad}} || [http://wiki.lxde.org/en/GPicView GPicView]<br>{{pkg|gpicview}} || [http://wiki.lxde.org/en/LXMusic LXMusic]<br>{{pkg|lxmusic}} || [[Midori]]<br>{{pkg|midori}} || [[LXDM]]<br>{{pkg|lxdm}}<br />
|-<br />
| [[LXDE]] (GTK+ 3) || [[GTK+]] 3<br>{{Pkg|gtk3}} || [[Openbox]]<br>{{Pkg|openbox}} || [http://wiki.lxde.org/en/LXPanel LXPanel]<br>{{Pkg|lxpanel-gtk3}} || [http://wiki.lxde.org/en/LXTerminal LXTerminal]<br>{{Pkg|lxterminal-gtk3}} || [[PCManFM]]<br>{{Pkg|pcmanfm-gtk3}} || [http://galculator.sourceforge.net/ Galculator]<br>{{Pkg|galculator}} || L3afpad<br>{{Pkg|l3afpad}} || [http://wiki.lxde.org/en/GPicView GPicView]<br>{{Pkg|gpicview-gtk3}} || [http://wiki.lxde.org/en/LXMusic LXMusic]<br>{{Pkg|lxmusic-gtk3}} || [[Midori]]<br>{{pkg|midori}} || [[LXDM]]<br>{{Pkg|lxdm-gtk3}}<br />
|-<br />
| [[LXQt]] || [[Qt]] 5 <br>{{pkg|qt5-base}} || [[Openbox]]<br>{{pkg|openbox}} || LXQt Panel<br>{{pkg|lxqt-panel}} || QTerminal<br>{{Pkg|qterminal}} || PCManFM-Qt<br>{{pkg|pcmanfm-qt}} || [http://speedcrunch.org/ SpeedCrunch]<br>{{Pkg|speedcrunch}} || Notepadqq<br>{{Pkg|notepadqq}} || LxImage-Qt<br>{{Pkg|lximage-qt}} || SMPlayer<br>{{Pkg|smplayer}} || QupZilla<br>{{Pkg|qupzilla}} || SDDM<br>{{Pkg|sddm}}<br />
|-<br />
| [[MATE]] || [[GTK+]] 3<br>{{pkg|gtk3}} || Marco<br>{{pkg|marco}} || MATE Panel<br>{{pkg|mate-panel}} || MATE Terminal<br>{{pkg|mate-terminal}} || Caja<br>{{pkg|caja}} || MATE Calc<br>{{Pkg|mate-calc}} || pluma<br>{{pkg|pluma}} || Eye of MATE<br>{{pkg|eom}} || [http://docs.xfce.org/apps/parole/start Parole]<br>{{pkg|parole}} || [[Midori]]<br>{{pkg|midori}} || [[LightDM]] GTK+ Greeter<br>{{pkg|lightdm-gtk-greeter}}<br />
|-<br />
| [[Pantheon]] || [[GTK+]] 3<br>{{pkg|gtk3}} || [https://launchpad.net/gala Gala]<br>{{AUR|gala-git}} || [https://launchpad.net/plank Plank]/[https://launchpad.net/wingpanel Wingpanel]<br>{{Pkg|plank}} {{AUR|wingpanel}} || [https://launchpad.net/pantheon-terminal Pantheon&nbsp;Terminal]<br>{{Pkg|pantheon-terminal}} || [https://launchpad.net/pantheon-files Pantheon Files]<br>{{Pkg|pantheon-files}} || [https://launchpad.net/pantheon-calculator Pantheon Calculator]<br>{{AUR|pantheon-calculator}} || [https://launchpad.net/scratch Scratch]<br>{{Pkg|scratch-text-editor}} || [https://launchpad.net/pantheon-photos Pantheon Photos]<br>{{pkg|pantheon-photos}} || Pantheon Videos<br>{{Pkg|pantheon-videos}} || [[Epiphany]]<br>{{pkg|epiphany}} || [[LightDM]] Pantheon&nbsp;Greeter<br>{{AUR|lightdm-pantheon-greeter}}<br />
|-<br />
| [[Sugar]] || [[GTK+]] 3<br>{{pkg|gtk3}} || [[Wikipedia:Metacity|Metacity]]<br>{{pkg|metacity}} || Sugar<br>{{Pkg|sugar}} || Terminal<br>{{Pkg|sugar-activity-terminal}} || Sugar Journal<br>{{Pkg|sugar}} || Calculate<br>{{Pkg|sugar-activity-calculate}} || Write<br>{{Pkg|sugar-activity-write}} || ImageViewer<br>{{Pkg|sugar-activity-imageviewer}} || Jukebox<br>{{Pkg|sugar-activity-jukebox}} || Browse<br>{{Pkg|sugar-activity-browse}} || [[LightDM]] GTK+ Greeter<br>{{Pkg|lightdm-gtk-greeter}}<br />
|-<br />
| theShell || [[Qt]] 5<br>{{pkg|qt5-base}} || [[Wikipedia:KWin|KWin]]<br>{{pkg|kwin}} || theShell<br>{{AUR|theshell}} || theTerminal<br>{{AUR|theterminal}} || theFile<br>{{AUR|thefile}} || theCalculator<br>{{AUR|thecalculator}} || [http://kate-editor.org/ KWrite/Kate]<br>{{pkg|kwrite}} {{pkg|kate}} || [http://gwenview.sourceforge.net/ Gwenview]<br>{{pkg|gwenview}} || theMedia<br>{{AUR|themedia}} || theWeb<br>{{AUR|theweb}} || [[LightDM]] Contemporary Greeter<br>{{AUR|lightdm-webkit-theme-contemporary}}<br />
|-<br />
| [[Trinity]] || TQt || TWin || Kicker || Konsole || Konqueror || KCalc || Kwrite / Kate || Kuickshow || Kaffeine || Konqueror || TDM<br />
|-<br />
| [[Xfce]] || [[GTK+]] 2/3<br>{{pkg|gtk2}} {{pkg|gtk3}} || [http://docs.xfce.org/xfce/xfwm4/start Xfwm4]<br>{{pkg|xfwm4}} || [http://docs.xfce.org/xfce/xfce4-panel/start Xfce Panel]<br>{{pkg|xfce4-panel}} || [http://www.xfce.org/projects/terminal Terminal]<br>{{pkg|xfce4-terminal}} || [[Thunar]]<br>{{pkg|thunar}} || [http://galculator.sourceforge.net/ Galculator]<br>{{Pkg|galculator}} || Mousepad<br>{{pkg|mousepad}} || [http://goodies.xfce.org/projects/applications/ristretto Ristretto]<br>{{pkg|ristretto}} || [http://docs.xfce.org/apps/parole/start Parole]<br>{{pkg|parole}} || [[Midori]]<br>{{pkg|midori}} || [[LightDM]] GTK+ Greeter<br>{{pkg|lightdm-gtk-greeter}}<br />
|-<br />
|}<br />
<br />
=== Resource use ===<br />
<br />
In terms of system resources, GNOME and KDE are ''expensive'' desktop environments. Not only do complete installations consume more disk space than lightweight alternatives (LXDE, LXQt and Xfce) but also more CPU and memory resources while in use. This is because GNOME and KDE are relatively ''full-featured'': they provide the most complete and well-integrated environments.<br />
<br />
LXDE, LXQt and Xfce, on the other hand, are ''lightweight'' desktop environments. They are designed to work well on older or lower-power hardware and generally consume fewer system resources while in use. This is achieved by cutting back on ''extra'' features (which some would term ''bloat'').<br />
<br />
== Custom environments ==<br />
<br />
Desktop environments represent the simplest means of installing a ''complete'' graphical environment. However, users are free to build and customize their graphical environment in any number of ways if none of the popular desktop environments meet their requirements. Generally, building a custom environment involves selection of a suitable [[window manager]], a [[List of applications#Taskbars|taskbar]] and a number of applications (a minimalist selection usually includes a [[terminal emulator]], [[List of applications#File managers|file manager]], and [[text editor]]).<br />
<br />
Other applications that are usually provided by desktop environments are:<br />
<br />
* Application launcher: [[List of applications#Application launchers]]<br />
* Clipboard manager: [[Clipboard#List of clipboard managers]]<br />
* Desktop compositor: [[Xorg#Composite]]<br />
* Desktop wallpaper setter and desktop icon: [[List of applications#Wallpaper setters]] and [[Openbox#Icon programs]]<br />
* Display manager: [[Display manager#List of display managers]]<br />
* Display power saving settings: [[Display Power Management Signaling]]<br />
* Logout dialogue: [[Oblogout]]<br />
* Mount tool: [[List of applications#Mount tools]]<br />
* Notification daemon: [[Desktop notifications]]<br />
* Polkit authentication agent: [[Polkit#Authentication agents]]<br />
* Screen locker: [[List of applications#Screen lockers]]<br />
* Sound volume manager: [[List of applications#Volume managers]]<br />
<br />
=== Custom window manager ===<br />
<br />
In many desktop environments, it is possible to replace the supplied window manager. See below for instructions specific to your environment.<br />
<br />
;GNOME<br />
<br />
Alternative window managers cannot be used with GNOME Shell however [[GNOME Flashback]] provides sessions for Metacity and [[Compiz]]. Furthermore, it is possible to define your own [[GNOME/Tips and tricks#Custom GNOME sessions|custom GNOME sessions]] which use alternative components.<br />
<br />
;Cinnamon<br />
<br />
Alternative window managers cannot be used with [[Cinnamon]].<br />
<br />
;Other desktop environments<br />
<br />
* KDE - See [[KDE#Using an alternative window manager]].<br />
<br />
* MATE - See [[MATE#Use a different window manager with MATE]].<br />
<br />
* Xfce - See [[Xfce#Default window manager]].<br />
<br />
* LXDE - See [[LXDE#Replace Openbox]].<br />
<br />
* LXQt - See [[LXQt#Replace Openbox]].<br />
<br />
* Budgie - See [[Budgie Desktop#Replace Budgie WM]].<br />
<br />
* theShell - In theShell settings, under the "Danger" category, enter the command to start the window manager in "Window Manager Command"</div>Dustballhttps://wiki.archlinux.org/index.php?title=Steam/Game-specific_troubleshooting&diff=479492Steam/Game-specific troubleshooting2017-06-09T23:25:04Z<p>Dustball: /* Game crashes nearly instantly */ wiki doesn't like =</p>
<hr />
<div>[[Category:Gaming]]<br />
[[ja:Steam/ゲーム別のトラブルシューティング]]<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 />
<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 />
== Common steps ==<br />
<br />
=== Prepend /usr/lib to LD_LIBRARY_PATH ===<br />
<br />
Add {{ic|1=LD_LIBRARY_PATH="/usr/lib:$LD_LIBRARY_PATH"}} to your [[Steam#Launch options|launch options]].<br />
<br />
=== OpenSSL 1.0 setup ===<br />
<br />
Some Steam games are built against OpenSSL 1.0. [https://bugs.archlinux.org/task/53618]<br />
<br />
Install {{AUR|libopenssl-1.0-compat}} and add {{ic|1=LD_LIBRARY_PATH=/usr/lib/openssl-1.0-compat}} to your [[Steam#Launch options|launch options]].<br />
<br />
=== Adobe Air setup ===<br />
<br />
The package {{AUR|adobe-air-sdk}} installs Adobe Air not in the place where the game expects it to be, fix this by creating the following symlink:<br />
<br />
# ln -s "/opt/adobe-air-sdk/runtimes/air/linux/Adobe AIR" "/opt/Adobe AIR"<br />
<br />
Adobe AIR requires you to accept its EULA:<br />
<br />
$ mkdir -p ~/.appdata/Adobe/AIR<br />
$ echo 2 > ~/.appdata/Adobe/AIR/eulaAccepted<br />
<br />
== Alien Isolation ==<br />
<br />
Symlink {{ic|/usr/lib/libpcre.so}} to {{ic|''gamedir''/lib/x86_64/libpcre.so.3}}, otherwise the game will fail to start.<br />
<br />
== Amnesia: The Dark Descent ==<br />
<br />
Dependencies:<br />
<br />
* {{AUR|lib32-freealut}}<br />
* {{pkg|lib32-glu}}<br />
* {{pkg|lib32-libxmu}}<br />
* {{pkg|lib32-sdl_ttf}}<br />
<br />
== And Yet It Moves ==<br />
<br />
Dependencies:<br />
<br />
* {{Pkg|lib32-libjpeg6-turbo}}<br />
* {{Pkg|lib32-libpng12}}<br />
* {{Pkg|lib32-libtheora}}<br />
* {{Pkg|lib32-libtiff4}}<br />
<br />
=== Game does not start ===<br />
<br />
When the game refuses to launch and prints one of the following error messages:<br />
<br />
readlink: extra operand ‘Yet’<br />
Try 'readlink --help' for more information.<br />
<br />
or<br />
<br />
This script must be run as a user with write priviledges to game directory<br />
<br />
Open {{ic|''gamedir''/AndYetItMovesSteam.sh}} and replace the line:<br />
<br />
ayim_dir="$(dirname "$(readlink -f ${BASH_SOURCE[0]})")"<br />
<br />
with:<br />
<br />
ayim_dir="$(dirname "$(readlink -f "${BASH_SOURCE[0]}")")"<br />
<br />
== Anodyne ==<br />
<br />
Dependencies:<br />
<br />
* {{AUR|adobe-air-sdk}}, follow [[#Adobe Air setup]]<br />
* {{pkg|xterm}} (probably not required)<br />
<br />
===Play with a controller: joy2key configuration===<br />
<br />
Configuration example to play [http://www.anodynegame.com/ Anodyne] with an XBox 360 Wireless Controller<br />
<br />
COMMON<br />
-dev /dev/input/js0<br />
-X<br />
-thresh -18000 18000 -18000 18000 -18000 18000 -18000 18000 -18000 18000 -18000 18000 -18000 18000 -18000 18000<br />
-axis Left Right Up Down blank blank blank blank blank blank blank blank Left Right Up Down<br />
-buttons c x Return<br />
<br />
Save this to {{ic|~/.joy2keyrc}} and start joy2key after you start Anodyne<br />
<br />
joy2key -rcfile ~/.joy2keyrc<br />
<br />
== Aquaria ==<br />
<br />
=== Mouse pointer gets stuck in one direction ===<br />
<br />
If the mouse pointer gets stuck in one direction, make sure {{ic|''gamedir''/usersettings.xml}} contains {{ic|1=<JoystickEnabled on="0" />}}.<br />
<br />
If that does not fix the issue, try unplugging any joysticks or joystick adapter devices you have plugged in.<br />
<br />
== ARK: Survival Evolved ==<br />
<br />
=== Game does not start, displays text window with unreadable text ===<br />
<br />
Add {{ic|1=MESA_GL_VERSION_OVERRIDE=4.0 MESA_GLSL_VERSION_OVERRIDE=400}} to your [[Steam#Launch options|launch options]].<br />
<br />
== Audiosurf 2 ==<br />
<br />
Requires {{pkg|pulseaudio-alsa}}.<br />
<br />
== Binding of Isaac: Rebirth ==<br />
<br />
=== No sound ===<br />
<br />
{{Note|This also helps with Never Alone (Kisima Ingitchuna) and No Time to Explain.}}<br />
<br />
[[#Prepend /usr/lib to LD_LIBRARY_PATH]].<br />
<br />
Adjust the audio levels in the game options.<br />
<br />
== The Book of Unwritten Tales ==<br />
<br />
Dependencies:<br />
<br />
* {{AUR|lib32-jasper}}<br />
* {{AUR|lib32-libxaw}}<br />
<br />
If the game does not start, uncheck: ''Properties > Enable Steam Community In-Game''.<br />
<br />
The game is known to segfault when opening the settings and possibly during or before playing. A workaround from the [http://steamcommunity.com/app/221410/discussions/3/846939071081758230/#p2 Steam discussions] is to replace the game's {{ic|RenderSystem_GL.so}} with one from Debian's repositories. To do that download [https://launchpad.net/ubuntu/+archive/primary/+files/libogre-1.7.4_1.7.4-3_i386.deb this deb file], and extract it with {{AUR|dpkg}}:<br />
<br />
$ dpkg -x libogre-*.deb outdir<br />
<br />
Now replace {{ic|''gamedir''/lib/32/RenderSystem_GL.so}} with the one extracted from the {{ic|.deb}} package.<br />
<br />
== The Book of Unwritten Tales: The Critter Chronicles ==<br />
<br />
See [[#The Book of Unwritten Tales]].<br />
<br />
To prevent the game from crashing at the end credits, change the size of the credits image as described [http://steamcommunity.com/app/221830/discussions/0/828925849276110960/#c810921273836530791 here].<br />
<br />
== Borderlands 2 ==<br />
<br />
=== Migrating saves from other platforms ===<br />
<br />
Borderlands 2 does not support cross-platform Steam Cloud syncing,<br />
you have to manually copy the files between platforms.<br />
Save locations can be found [https://pcgamingwiki.com/wiki/Borderlands_2#Game_data here].<br />
Make sure your user can access the files.<br />
<br />
=== Using Ctrl Key ===<br />
<br />
Borderlands 2 does not allow the {{ic|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 />
<br />
Out of the box you will not be able to log into SHiFT since the game expects certificates to be in {{ic|/usr/lib/ssl}}, which is where Ubuntu stores them. Arch however uses {{ic|/etc/ssl}}.<br />
To resolve the problem, add {{ic|1=SSL_CERT_DIR=/etc/ssl/certs}} to your [[Steam#Launch options|launch options]].<br />
<br />
=== Game crashes nearly instantly ===<br />
<br />
As of lib32-openal version 1.18.0-1, the game crashes instantly. The possible solutions are to downgrade lib32-openal to 1.17.2-1, or to start the game with {{ic|LD_PRELOAD<nowiki>=</nowiki>'$HOME/.local/share/Steam/ubuntu12_32/steam-runtime/i386/usr/lib/i386-linux-gnu/libopenal.so.1'}}.<br />
<br />
== Borderlands: The Pre-Sequel ==<br />
<br />
See [[#Logging into SHiFT]].<br />
<br />
=== Keyboard not working ===<br />
<br />
Using [[dwm]], no keyboard input seems to register.<br />
<br />
=== Not starting via Steam ===<br />
<br />
If the game appears as ''Running'', then syncs and closes when you launch it from Steam, try creating a {{ic|steam_appid.txt}} in the game directory<br />
containing {{ic|261640}}. This should resolve the issue and let you start the game directly from the game directory. If that does not work, try using the {{Pkg|steam-native-runtime}}.<br />
<br />
=== Game crashes nearly instantly ===<br />
<br />
As of lib32-openal version 1.18.0-1, the game crashes instantly. The possible solutions are to downgrade lib32-openal to 1.17.2-1, or to start the game with {{ic|LD_PRELOAD<nowiki>=</nowiki>'$HOME/.local/share/Steam/ubuntu12_32/steam-runtime/i386/usr/lib/i386-linux-gnu/libopenal.so.1'}}.<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] {{Dead link|2017|05|25}} (replace {{ic|/etc/fonts/conf.d/10-scale-bitmap-fonts.conf}}).<br />
<br />
== Cities Skylines ==<br />
<br />
=== Textures not rendering properly ===<br />
<br />
Add {{ic|1=UNITY_DISABLE_GRAPHICS_DRIVER_WORKAROUNDS=yes}} to your [[Steam#Launch options|launch options]].<br />
<br />
== Civilization V ==<br />
<br />
You need to add {{ic|1=LD_PRELOAD='./libcxxrt.so:/usr/$LIB/libstdc++.so.6' %command%'}} to your [[Steam#Launch options|launch options]].<br />
<br />
[https://github.com/ValveSoftware/steam-for-linux/issues/4379 steam-for-linux issue #4379]<br />
<br />
=== Stuttering sound with PulseAudio ===<br />
<br />
See [[PulseAudio/Troubleshooting#Laggy sound]].<br />
<br />
== Civilization: Beyond earth ==<br />
If you are getting an instant crash/close upon launch, make sure you have the following 32-bit packages installed:<br />
<br />
* {{pkg|lib32-libcurl-compat}}<br />
* {{pkg|lib32-libcurl-gnutls}}<br />
* {{pkg|lib32-openal}}<br />
* {{aur|lib32-intel-tbb}}<br />
<br />
== Civilization VI ==<br />
<br />
As with Civ V, you need to add {{ic|1=LD_PRELOAD='./libcxxrt.so:/usr/$LIB/libstdc++.so.6' %command%'}} to your [[Steam#Launch options|launch options]].<br />
<br />
Follow [[#OpenSSL 1.0 setup]].<br />
<br />
== Deus Ex: Mankind divided ==<br />
<br />
Follow [[#OpenSSL 1.0 setup]].<br />
<br />
== The Clockwork Man ==<br />
<br />
Requires {{pkg|lib32-libidn}}.<br />
<br />
== Company of Heroes 2 ==<br />
<br />
Like with [[#Alien Isolation]] you need to symlink {{ic|/usr/lib/libpcre.so}} to {{ic|''gamedir''/lib/''arch''/libpcre.so.3}}, otherwise the game will fail to start.<br />
<br />
== Counter-Strike: Global Offensive (CS:GO) ==<br />
<br />
=== Game starts on the wrong screen ===<br />
<br />
[https://github.com/ValveSoftware/csgo-osx-linux/issues/60 csgo-osx-linux issue #60]<br />
<br />
If it happens, go into fullscreen windowed or windowed mode and drag the window to the correct monitor. Then go back into fullscreen, the game should now be on the correct monitor.<br />
<br />
=== Cannot reach bottom of the screen on menus ===<br />
<br />
[https://github.com/ValveSoftware/csgo-osx-linux/issues/594 csgo-osx-linux issue #594]<br />
<br />
If you have a secondary monitor you might have a part of your lower screen you cannot reach in menus.<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]] {{pkg|wmctrl}} 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 />
=== Sound is played slightly delayed ===<br />
<br />
[https://github.com/ValveSoftware/csgo-osx-linux/issues/45 csgo-osx-linux issue #45]<br />
<br />
See [[PulseAudio/Troubleshooting#Laggy sound]] for a possible solution.<br />
<br />
=== Mouse not working in-game ===<br />
<br />
If your mouse works in the main menu but not in-game, add<br />
{{ic|1=SDL_VIDEO_X11_DGAMOUSE=0}} to your [[Steam#Launch options|launch options]].<br />
[https://bbs.archlinux.org/viewtopic.php?id=184905]<br />
<br />
=== Brightness slider not working ===<br />
<br />
[[Install]] {{pkg|xorg-xrandr}} and run {{ic|xrandr}} to find out the name of your connected display output.<br />
<br />
Edit {{ic|''gamedir''/csgo.sh}} and add the following lines (adapt ''output_name''):<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 />
=== Microphone not working ===<br />
<br />
[https://github.com/ValveSoftware/csgo-osx-linux/issues/573#issuecomment-174016722 csgo-osx-linux issue #573]<br />
<br />
CS:GO uses the default PulseAudio sound device ignoring what is configured in Steam settings.<br />
<br />
First find out the source name of your microphone (it should start with {{ic|alsa_input.}}):<br />
$ pacmd list-sources<br />
<br />
Then set the default device (change the name accordingly):<br />
$ pacmd set-default-source ''device_name''<br />
<br />
Also lower the microphone level to 60% otherwise you will get some nasty background noise and you will be difficult to understand (change the name accordingly):<br />
$ pacmd set-source-volume ''device_name'' 0x6000<br />
<br />
== Crusader Kings II ==<br />
<br />
x86_64 dependencies:<br />
<br />
* {{pkg|lib32-openssl}}<br />
<br />
=== Locations ===<br />
<br />
The game can be started directly without running Steam by executing {{ic|./ck2}} in its directory.<br />
<br />
Save files are stored in {{ic|~/.paradoxinteractive/Crusader Kings II/}}. Before version 2.03 they were stored in {{ic|~/Documents/Paradox Interactive/Crusader Kings II/save games/}}.<br />
<br />
=== No audio ===<br />
<br />
SDL uses [[PulseAudio]] by default, so to use it with [[ALSA]] you need to set:<br />
<br />
{{hc|~/.pam_environment|2=SDL_AUDIODRIVER=alsa}}<br />
<br />
=== Oddly sized starting window ===<br />
<br />
You can make full screen mode the default by setting {{ic|1=fullscreen=yes}} in {{ic|~/.paradoxinteractive/Crusader Kings II/settings.txt}}.<br />
<br />
== Death Road To Canada ==<br />
<br />
=== No music ===<br />
<br />
[[#Prepend /usr/lib to LD_LIBRARY_PATH]].<br />
<br />
== Defender's Quest: Valley of the Forgotten ==<br />
<br />
Dependencies:<br />
<br />
* {{AUR|adobe-air-sdk}}, follow [[#Adobe Air setup]]<br />
* {{pkg|lib32-libcanberra}}<br />
* {{pkg|xterm}}<br />
<br />
== Dirt ==<br />
<br />
Follow [[#OpenSSL 1.0 setup]].<br />
<br />
== Divinity: Original Sin - Enhanced Edition ==<br />
<br />
=== Game doesn't start when using Bumblebee optirun or primusrun ===<br />
<br />
Edit {{ic|''gamedir''/runner.sh}} to use primusrun:<br />
LD_LIBRARY_PATH="." primusrun ./EoCApp<br />
<br />
== Don't Starve ==<br />
<br />
Dependencies:<br />
<br />
* {{pkg|lib32-flashplugin}}<br />
* {{pkg|lib32-libcurl-gnutls}}<br />
<br />
=== No sound ===<br />
<br />
[[#Prepend /usr/lib to LD_LIBRARY_PATH]].<br />
<br />
In the game, go to the options and adjust the audio levels.<br />
<br />
== Dota 2 ==<br />
<br />
Dependencies:<br />
<br />
* {{AUR|libudev0}}<br />
* {{pkg|libpng12}}<br />
* {{pkg|libtxc_dxtn}}<br />
<br />
=== In-game font is unreadable ===<br />
<br />
Add {{ic|1=MESA_GL_VERSION_OVERRIDE=2.1}} to your [[Steam#Launch options|launch options]].<br />
<br />
=== The game does not start ===<br />
<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 />
<br />
Apparently the game [[#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 />
<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 />
<br />
After a recent Mesa update, Dota 2 stopped working. The error message is:<br />
<br />
SDL_GL_LoadLibrary(NULL) failed: Failed loading libGL.so.1: /usr/lib32/libxcb-dri3.so.0: undefined symbol: xcb_send_fd<br />
<br />
See [[Steam/Troubleshooting#Steam runtime issues]].<br />
<br />
=== Steam overlay ===<br />
<br />
Steam distributes a copy of libxcb which is incompatible with the latest xorg libxcb. See [[Steam/Troubleshooting#Steam runtime issues]],<br />
[https://github.com/ValveSoftware/steam-for-linux/issues/3199], [https://github.com/ValveSoftware/steam-for-linux/issues/3093].<br />
<br />
=== Chinese tips and player names not shown ===<br />
<br />
The Chinese characters in tips and player names are displayed as block characters.<br />
<br />
The problem is caused by the font packages: {{pkg|ttf-dejavu}}, {{pkg|ttf-liberation}} and {{aur|ttf-ms-fonts}}.<br />
<br />
: [https://github.com/ValveSoftware/Dota-2/issues/1688 GitHub Steam issue #1688] {{Dead link|2017|05|25}}<br />
<br />
=== Chinese input method problem ===<br />
<br />
Dota2 is not compatible with CJK IME(Input Method Editor/Enhancer), such as [[Ibus]] and [[Fcitx]].<br />
Chinese characters cannot be typed in Dota2.<br />
<br />
A possible solution is to replace {{ic|''gamedir''/dota 2 beta/bin/libSDL2-2.0.so.0}} with a self-compiled ''libSDL'' that supports fcitx or ibus.<br />
<br />
: [https://forum.ubuntu.com.cn/viewtopic.php?f=34&t=460195 LibSDL+Ibus]<br />
: [https://forum.ubuntu.com.cn/viewtopic.php?f=34&t=466879 LibSDL+Fcitx]<br />
: [https://github.com/timxx/SDL-fcitx LibSDL+Fcitx source]<br />
: [https://github.com/ValveSoftware/Dota-2/issues/1650 The solutions issue] {{Dead link|2017|05|25}}<br />
<br />
== Dwarfs F2P ==<br />
<br />
Dependencies:<br />
<br />
* {{AUR|lib32-libgdiplus}}{{Broken package link|{{aur-mirror|lib32-libgdiplus}}}}<br />
<br />
=== Game does not start ===<br />
<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|''gamedir''/Run.sh}} and change<br />
<br />
export LD_LIBRARY_PATH=.:${LD_LIBRARY_PATH}<br />
<br />
to<br />
<br />
export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:.<br />
<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 removing the following files from the game directory:<br />
<br />
libX11.so.6 libsteam.so libtier0_s.so libvstdlib_s.so steamclient.so<br />
<br />
=== Game crashes ===<br />
<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 />
<br />
Requires {{pkg|lib32-sdl}}.<br />
<br />
=== Sound Issues ===<br />
<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 />
<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 />
<br />
/home/$USER/.steam/root/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 />
<br />
Install {{pkg|lib32-sdl}} from [[multilib]] and Dynamite Jack should start up.<br />
<br />
== Euro Truck Simulator 2 ==<br />
=== Shows only a black screen ===<br />
<br />
Select safe mode when the game starts up.<br />
<br />
== Football Manager 2014 ==<br />
<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 />
<br />
Requires {{pkg|lib32-glu}}.<br />
<br />
This game has 32-bit and 64-bit binaries. For some 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 />
== FTL: Faster than Light ==<br />
<br />
=== Compatibility ===<br />
<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 />
<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 />
<br />
=== Game does not start ===<br />
<br />
You might get an error about missing {{ic|libudev.so.0}}. See [[Steam/Troubleshooting#Steam runtime issues]].<br />
<br />
== Garry's Mod ==<br />
<br />
=== Game does not start ===<br />
<br />
When an error about a missing {{ic|client.so}} appears, try the following:<br />
<br />
$ cd ~/.steam/root/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 />
<br />
If the error mentions a missing library for {{ic|libgcrypt.so.11}}, install {{pkg|lib32-libgcrypt15}}.<br />
<br />
=== Opening some menus causes the game to crash ===<br />
<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 />
<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 the minimum should fix the problem.<br />
<br />
== Gods will be watching ==<br />
<br />
Install {{AUR|lib32-libopenssl-1.0-compat}} and add {{ic|1=LD_LIBRARY_PATH=/usr/lib32/openssl-1.0-compat}} to your [[Steam#Launch options|launch options]].<br />
<br />
== GRID Autosport ==<br />
<br />
Follow [[#OpenSSL 1.0 setup]].<br />
<br />
=== Black screen when trying to play ===<br />
<br />
Add {{ic|1=LC_ALL=C}} to your [[Steam#Launch options|launch options]].<br />
<br />
== Hack 'n' Slash ==<br />
<br />
=== Crashes when trying to load a game ===<br />
<br />
[[#Prepend /usr/lib to LD_LIBRARY_PATH]].<br />
<br />
== Hacker Evolution ==<br />
<br />
Requires {{Pkg|lib32-sdl2_mixer}}.<br />
<br />
== Half-Life 2 and episodes ==<br />
<br />
=== Cyrillic fonts problem ===<br />
<br />
This problem can be solved by deleting "Helvetica" font.<br />
<br />
== Hammerwatch ==<br />
<br />
=== The game does not start via Steam ===<br />
<br />
[[#Prepend /usr/lib to LD_LIBRARY_PATH]].<br />
<br />
=== No sound ===<br />
<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 />
== Halo: Custom Edition ==<br />
<br />
Although not a Steam game, Halo: Custom Edition running under [[Wine]] and/or PlayOnLinux has many audio problems. To mitigate this, install dsound via winetricks or PlayOnLinux. Then, set the in-game "Sound Quality" to medium. If you have installed the campaign extra, this also restores all video cut-scene audio.<br />
<br />
== Harvest: Massive Encounter ==<br />
<br />
Dependencies:<br />
<br />
* {{AUR|lib32-sfml}}<br />
* {{Pkg|lib32-libjpeg6-turbo}}<br />
* {{Pkg|lib32-nvidia-cg-toolkit}}<br />
* {{pkg|lib32-gtk2}}<br />
* {{pkg|lib32-libvorbis}}<br />
* {{pkg|lib32-openal}}<br />
<br />
=== Compatibility ===<br />
<br />
Game refuses to launch and throws you to library installer loop. Just edit {{ic|''gamedir''/run_harvest}} and remove everything but:<br />
<br />
#!/bin/bash<br />
exec ./Harvest<br />
<br />
== Hatoful Boyfriend ==<br />
<br />
=== Japanese text invisible ===<br />
<br />
Install {{pkg|wqy-microhei}} and {{pkg|wqy-microhei-lite}}.<br />
<br />
== Hyper Light Drifter ==<br />
<br />
=== The controller does not work ===<br />
<br />
[[Install]] {{pkg|lib32-sdl2}} and add {{ic|1=LD_PRELOAD=libSDL2.so}} to your [[Steam#Launch options|launch options]].<br />
<br />
See the following Steam Community discussions:<br />
<br />
* [https://steamcommunity.com/app/257850/discussions/1/365163686036494421 Controller Issues]<br />
* [https://steamcommunity.com/app/257850/discussions/1/365163686045397160/ Common Bugs + Known Issues]<br />
<br />
It is suggested to run the ''next_update'' branch to get new fixes,<br />
there however currently is a libcurl segfault keeping it from starting without special workarounds.<br />
<br />
=== Missing libcurl.so.4 or version CURL_OPENSSL_3 not found ===<br />
<br />
[[Install]] {{pkg|lib32-libcurl-compat}} and add {{ic|1=LD_PRELOAD=libcurl.so.3}} to your [[Steam#Launch options|launch options]].<br />
<br />
== The Impossible Game ==<br />
<br />
Dependencies:<br />
<br />
* {{pkg|lib32-sdl2}}<br />
* {{pkg|lib32-sdl2_image}}<br />
<br />
== The Inner World ==<br />
<br />
Requires {{AUR|java-commons-codec}} for sound support.<br />
<br />
=== Bringing up the inventory or main menu ===<br />
<br />
Hold the tab key.<br />
<br />
==== Cutscenes ====<br />
<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 />
Furthermore you need the package {{aur|ffmpeg-compat-55}}.<br />
<br />
There seem to be problems with the Steam overlay. Try to run the game directly with {{ic|''gamedir''/TIW_start.sh}}.<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 />
See the [http://steamcommunity.com/app/251430/discussions/0/611701360817206606/#c611701360827509770 Steam Forums] for details.<br />
<br />
== Interloper ==<br />
<br />
Requires {{pkg|alsa-lib}}.<br />
<br />
=== Game does not start ===<br />
<br />
The game can sometimes segfault due to an incompatibility with the Steam Runtime's {{ic|libasound.so.2}}. See [[Steam/Troubleshooting#Steam runtime issues]].<br />
<br />
== Invisible Apartment ==<br />
<br />
Requires {{pkg|qt5-multimedia}}.<br />
<br />
=== Game does not start ===<br />
<br />
If the game does not run when you launch it via Steam, try to directly run {{ic|./ia1}} in the game directory.<br />
<br />
== Joe Danger 2: The Movie ==<br />
<br />
Requires {{pkg|lib32-libpulse}}.<br />
<br />
=== Compatibility ===<br />
<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 />
<br />
See [[Kerbal Space Program]].<br />
<br />
== Killing Floor ==<br />
<br />
=== Cannot change screen resolution ===<br />
<br />
If trying to modify the resolution in-game crashes your desktop environment, edit {{ic|~/.killingfloor/System/KillingFloor.ini}}:<br />
<br />
[WinDrv.WindowsClient]<br />
WindowedViewportX=''width''<br />
WindowedViewportY=''height''<br />
FullscreenViewportX=''width''<br />
FullscreenViewportY=''height''<br />
MenuViewportX=''width''<br />
MenuViewportY=''height''<br />
<br />
[SDLDrv.SDLClient]<br />
WindowedViewportX=''width''<br />
WindowedViewportY=''height''<br />
FullscreenViewportX=''width''<br />
FullscreenViewportY=''height''<br />
MenuViewportX=''width''<br />
MenuViewportY=''height''<br />
<br />
=== Windowed mode ===<br />
<br />
Uncheck fullscreen in the options menu, and press {{ic|Ctrl+g}} to stop mouse capturing.<br />
<br />
=== Stuttering sound ===<br />
<br />
KillingFloor comes with its own OpenAL library {{ic|''gamedir''/System/openal.so}}.<br />
<br />
Back it up, [[install]] {{pkg|openal}} or {{pkg|lib32-openal}} (if using a 64bit system).<br />
<br />
Then symlink the installed system library ({{ic|/usr/lib32/libopenal.so.1}} or {{ic|/usr/lib/libopenal.so.1}}) to {{ic|openal.so}}.<br />
<br />
== Lethal League ==<br />
<br />
Requires {{Pkg|lib32-glew1.10}}.<br />
<br />
== Life is Strange ==<br />
<br />
Requires {{Pkg|lib32-librtmp0}}.<br />
<br />
== Mark of the Ninja ==<br />
<br />
=== Bad sound ===<br />
<br />
[[#Prepend /usr/lib to LD_LIBRARY_PATH]].<br />
<br />
== Metro: Last Light ==<br />
<br />
The game does not allow you to change its resolution on a multi-monitor setup on GNOME with the AMD Catalyst drivers. A temporary workaround is to disable the side monitors.<br />
Jason over at [http://unencumberedbyfacts.com/2013/11/20/multiple-monitor-gaming-on-linux/ unencumbered by facts] managed to get it working with his multi-monitor setup using a single display server, he however is using Nvidia.<br />
<br />
== Middle-earth: Shadow of Mordor ==<br />
<br />
=== Floating heads ===<br />
<br />
Add {{ic|1=__GL_ShaderPortabilityWarnings=0}} to your [[Steam#Launch options|launch options]].<br />
<br />
== Multiwinia ==<br />
<br />
Requires {{pkg|lib32-openal}}.<br />
<br />
=== Crash on startup ===<br />
<br />
If Multiwinia crashes on startup on X64 systems, force launching the 32-bit executable by replacing {{ic|''gamedir''/run_steam.sh}} with the following script:<br />
<br />
{{bc|<br />
#!/bin/sh<br />
./multiwinia.bin.x86<br />
}}<br />
<br />
See [https://steamcommunity.com/app/1530/discussions/0/864969481950542663/#c558746995160431396].<br />
<br />
== Natural Selection 2 ==<br />
Requires {{pkg|lib32-speex}}.<br />
=== No Sound ===<br />
<br />
If there is no sound in-game. Try installing {{pkg|lib32-sdl}} and {{Pkg|lib32-sdl2}}.<br />
<br />
If this fails, try setting the game's launch options in Steam to:<br />
<br />
LD_LIBRARY_PATH="/usr/lib32:$LD_LIBRARY_PATH" %command%<br />
<br />
== Nuclear Throne ==<br />
<br />
=== Missing libcurl.so.4 or version CURL_OPENSSL_3 not found ===<br />
<br />
[[Install]] {{pkg|lib32-libcurl-compat}} and add {{ic|1=LD_PRELOAD=libcurl.so.3}} to your [[Steam#Launch options|launch options]].<br />
<br />
== Penumbra: Overture ==<br />
<br />
Dependencies:<br />
<br />
* {{pkg|lib32-glu}}<br />
* {{pkg|lib32-libvorbis}}<br />
* {{pkg|lib32-libxft}}<br />
* {{pkg|lib32-openal}}<br />
* {{pkg|lib32-sdl_image}}<br />
* {{pkg|lib32-sdl_ttf}}<br />
<br />
=== Windowed mode ===<br />
<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 />
<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 />
== The Polynomial ==<br />
<br />
Dependencies:<br />
<br />
* {{AUR|ilmbase102-libs}}{{Broken package link|{{aur-mirror|ilmbase102-libs}}}}<br />
* {{AUR|openexr170-libs}}{{Broken package link|{{aur-mirror|openexr170-libs}}}}<br />
<br />
[https://github.com/ValveSoftware/steam-for-linux/issues/2721 Steam for Linux issue #2721]<br />
<br />
=== Segfaults during program start on 64-bit systems ===<br />
<br />
The game segfaults during program start because of the {{ic|LD_LIBRARY_PATH}} setting in the launcher script. Edit {{ic|''gamedir''/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 />
== Portal 2 ==<br />
<br />
=== Game does not start ===<br />
<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}}). See [[Steam/Troubleshooting#Steam runtime issues]].<br />
<br />
A problem with libstdc can be fixed with:<br />
LD_PRELOAD='/usr/$LIB/libstdc++.so.6' %command%<br />
<br />
=== Resolution too low ===<br />
<br />
When the game starts with a resolution so low that you cannot reach the game settings,<br />
start the game in windowed mode by setting the launch option {{ic|-windowed}}.<br />
<br />
== Prison Architect ==<br />
<br />
=== ALSA error when using PulseAudio ===<br />
<br />
The error:<br />
<br />
{{ic|ALSA lib pcm_dmix.c:1018:(snd_pcm_dmix_open) unable to open slave}}<br />
<br />
was resolved by installing:<br />
<br />
* {{pkg|pulseaudio-alsa}}<br />
* {{pkg|lib32-libpulse}}<br />
<br />
per [[PulseAudio#ALSA]].<br />
<br />
== Project Zomboid ==<br />
<br />
Requires {{pkg|jre7-openjdk}}.<br />
<br />
=== No sound ===<br />
<br />
[[#Prepend /usr/lib to LD_LIBRARY_PATH]].<br />
<br />
In the game, go to the options and set all audio to the proper volume.<br />
<br />
== Redshirt ==<br />
<br />
Requires {{pkg|lib32-libpulse}} if you use PulseAudio.<br />
<br />
== Revenge of the Titans ==<br />
<br />
Requires {{pkg|libxtst}} and {{pkg|lib32-libxtst}}.<br />
<br />
== Rock Boshers DX: Directors Cut ==<br />
<br />
Requires {{Pkg|lib32-libcaca}}.<br />
<br />
== Saints Row IV ==<br />
<br />
=== Game fails to launch after update to new Nvidia drivers ===<br />
<br />
Set the launch options for Saints Row IV to:<br />
<br />
{{bc|1=LD_PRELOAD=$LD_PRELOAD:/usr/lib32/libGLX_nvidia.so %command%}}<br />
<br />
=== Game causes GPU lockup with mesa drivers ===<br />
<br />
Saints Rows IV can cause a GPU lockup when trying to play on certain AMD hardware using open source drivers: [https://bugs.freedesktop.org/show_bug.cgi?id=93475 Bug 93475].<br />
<br />
A workaround is to set the launch options to:<br />
<br />
{{bc|1=R600_DEBUG=nosb %command%}}<br />
<br />
== Serious Sam 3: BFE ==<br />
<br />
=== No audio ===<br />
<br />
Try running:<br />
<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 />
== Space Pirates and Zombies ==<br />
<br />
Requires {{pkg|lib32-openal}}.<br />
<br />
=== No audio ===<br />
<br />
Try running:<br />
<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 />
<br />
{{hc|~/.alsoftrc|<nowiki><br />
[general]<br />
drivers = alsa<br />
[alsa]<br />
device = default<br />
capture = default<br />
mmap = true<br />
</nowiki>}}<br />
<br />
== Spacechem ==<br />
<br />
Dependencies:<br />
<br />
* {{Pkg|lib32-sdl_mixer}}<br />
* {{pkg|lib32-sdl_image}}<br />
* {{pkg|lib32-sqlite}}<br />
<br />
=== Game crash ===<br />
<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 the three files {{ic|libSDL-1.2.so.0}}, {{ic|libSDL_image-1.2.so.0}}, {{ic|libSDL_mixer-1.2.so.0}} from the game directory.<br />
<br />
== Splice ==<br />
<br />
Requires {{pkg|glu}}.<br />
<br />
Splice comes with both x86 and x64 binaries. Steam does not have to be running to launch this game.<br />
<br />
== Star Wars Battlefront II ==<br />
<br />
Star Wars Battlefront 2's Steam version running under [[Wine]] has a bug which causes it to take forever to load a game. The solution is to compile a custom Wine version with the patch from this [https://bugs.winehq.org/show_bug.cgi?id=29582#c31 WineHQ bug comment].<br />
<br />
In order to use the patched wine version with PlayOnLinux, copy the completely patched and compiled wine-1.7.55 folder to {{ic|~/.PlayOnLinux/wine/linux-x86/}}.<br />
<br />
== The Stanley Parable ==<br />
<br />
=== Game won't start ===<br />
<br />
As discussed in the Steam store page, remove {{ic|bin/libstdc++.so.6}} from the game folder.<br />
<br />
== Shadow Tactics: Blades of the Shogun ==<br />
<br />
Dependencies:<br />
<br />
* {{pkg|lib32-libstdc++5}}<br />
* {{pkg|lib32-libxcursor}}<br />
* {{pkg|lib32-libxrandr}}<br />
<br />
== Steel Storm: Burning Retribution ==<br />
<br />
=== Start with black screen ===<br />
<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 />
<br />
If you are using an Intel video card, disable S3TC in {{Pkg|driconf}}.<br />
<br />
== Stephen's Sausage Roll ==<br />
<br />
=== No sound ===<br />
<br />
If using [[Steam/Troubleshooting#Native runtime|native libraries]]{{Broken section link}} and {{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 -Qql libpulse <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 (revert any renaming you just did). Browse to the game's directory:<br />
<br />
$ cd "$HOME/.steam/root/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|Only a 0-byte {{ic|libpulse-simple.so.0}} file may be required.}}<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 />
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 />
== Superbrothers: Sword & Sworcery EP ==<br />
<br />
Dependencies:<br />
<br />
* {{pkg|lib32-glu}}<br />
* {{pkg|lib32-libpulse}} if you use PulseAudio<br />
<br />
The game bundles an outdated version of libstdc++ which prevents the game from starting. [http://steamcommunity.com/app/204060/discussions/0/364039785161291413] The following can be observed when you run Steam and S&S from the terminal:<br />
<br />
libGL error: unable to load driver: i965_dri.so<br />
libGL error: driver pointer missing<br />
libGL error: failed to load driver: i965<br />
libGL error: unable to load driver: i965_dri.so<br />
libGL error: driver pointer missing<br />
libGL error: failed to load driver: i965<br />
libGL error: unable to load driver: swrast_dri.so<br />
libGL error: failed to load driver: swrast<br />
<br />
To solve this problem remove {{ic|''gamedir''/lib/libstdc++.so.6*}}. After that the game will use the libstdc++ from Steam.<br />
<br />
== Tabletop Simulator ==<br />
<br />
=== CJK characters not showing in game ===<br />
<br />
Install {{pkg|wqy-microhei}} and {{pkg|wqy-microhei-lite}}.<br />
<br />
== Team Fortress 2 ==<br />
<br />
Requires {{Pkg|lib32-libpng12}}.<br />
<br />
=== HRTF setup ===<br />
<br />
Assuming HRTF (head-related transfer function) has been properly set up in the operating system, HRTF won't be enabled unless you disable the original processing. To do so, use<br />
<br />
dsp_slow_cpu 1<br />
<br />
For best results, also change the following:<br />
<br />
snd_spatialize_roundrobin 1<br />
dsp_enhance_stereo 0<br />
snd_pitchquality 1<br />
<br />
=== Loading screen freeze ===<br />
<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 />
<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 />
<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 />
<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 />
== This War of Mine ==<br />
<br />
=== Game does not start ===<br />
<br />
This happens because of an incompatibility with the newer version of {{ic|lib32-curl}}. To fix the problem you need to remove {{ic|libcurl.so.4}} from the game directory.<br />
<br />
=== Sound glitches with Steam native ===<br />
<br />
The bundled {{ic|libOpenAL}} might not work correctly, try symlinking {{ic|/usr/lib32/libopenal.so}} to {{ic|''gamedir''/libOpenAL.so}}.<br />
<br />
== Ticket to Ride ==<br />
<br />
Dependencies:<br />
<br />
* {{AUR|lib32-gstreamer0.10-base}}<br />
* {{AUR|lib32-pangox-compat}}<br />
<br />
As lib32-gstreamer0.10-base is quite hard to build you can use [[Unofficial_user_repositories#alucryd-multilib|alucryd-multilib]] repo for this package<br />
<br />
== Tomb Raider ==<br />
<br />
=== Game immediately closes when running with steam-native ===<br />
<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 />
<br />
{{bc|~/.steam/root/ubuntu12_32/steam-runtime/run.sh %command%}}<br />
<br />
=== Steam Controller not working in-game===<br />
<br />
If your Steam Controller is correctly recognized and paired but still not working in-game try the following:<br />
<br />
* In Steam, non Big Screen, go to Settings -> Account -> Beta participation -> Change... and in the dropdown select box select Steam Beta Update<br />
* Restart Steam<br />
* Go to Big Screen and start Tomb Raider<br />
<br />
Correctly recognized means you can control desktop mouse and Steam in Big Picture mode and the controller is shown in Big Picture settings<br />
<br />
== Towns / Towns Demo ==<br />
<br />
Requires [[Java]].<br />
<br />
== Transistor ==<br />
<br />
=== Crash on launch / FMOD binding crash / Audio issues ===<br />
<br />
Try running steam with following command<br />
<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 />
<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 in [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 />
== Transmissions: Element 120 ==<br />
<br />
Dependencies:<br />
<br />
* {{Pkg|lib32-libgcrypt15}}<br />
* {{pkg|lib32-libpng12}}<br />
<br />
=== Troubleshooting ===<br />
<br />
Make sure you have all libraries installed. Above the standard set required by Steam runtime, the game requires few additional ones. The typical error message that indicates that is<br />
<br />
AppFramework : Unable to load module vguimatsurface.so!<br />
<br />
To find missing dependencies go into the game directory and run:<br />
<br />
LD_LIBRARY_PATH=bin ldd bin/vguimatsurface.so<br />
<br />
Look for entries that say ''not found''.<br />
<br />
== Trine 2 ==<br />
<br />
Dependencies:<br />
<br />
* {{pkg|lib32-glu}}<br />
* {{pkg|lib32-libxxf86vm}}<br />
* {{pkg|lib32-openal}}<br />
* {{pkg|xorg-xwininfo}}<br />
* {{pkg|lib32-libdrm}}<br />
<br />
* {{pkg|lib32-libpng12}}<br />
* {{pkg|lib32-libwrap}}<br />
<br />
=== Colors ===<br />
<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 />
<br />
=== Sound ===<br />
<br />
{{Accuracy|General settings not specific to this game}}<br />
<br />
If sound plays choppy, try:<br />
<br />
{{hc|/etc/openal/alsoft.conf|<nowiki><br />
drivers=pulse,alsa<br />
frequency=48000<br />
</nowiki>}}<br />
<br />
=== Resolution ===<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 />
== Tropico 5 ==<br />
<br />
=== Blank screen with sound only on startup ===<br />
<br />
Add {{ic|1=MESA_GL_VERSION_OVERRIDE=4.0 MESA_GLSL_VERSION_OVERRIDE=400}} to your [[Steam#Launch options|launch options]].<br />
<br />
== Unity of Command ==<br />
<br />
Requires {{pkg|lib32-pango}}.<br />
<br />
=== Squares ===<br />
<br />
If squares are shown instead of text, try removing {{ic|''gamedir''/bin/libpangoft2-1.0.so.0}}.<br />
<br />
=== No audio ===<br />
<br />
If you get this error:<br />
<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 />
<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 />
== 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 {{ic|1=LC_ALL=C %command%}}<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 />
<br />
Another solution is to disable the Steam runtime: in the launch options for the game, write this: {{ic|1=LD_LIBRARY_PATH="" %command%}}<br />
<br />
Another solution is to prevent Unity from trying to use pulseaudio using {{AUR|pulsenomore}} package from the [[AUR]]. Once it is installed, use the following as launch options :{{ic|/usr/bin/pulsenomore %command%}}<br />
<br />
Some of the affected games: ''Kerbal Space Programm'', ''SUPERHOT'', ''ClusterTruck''<br />
<br />
=== Game launching on wrong monitor in fullscreen mode ===<br />
<br />
Unity games that do not support monitor selection will most likely launch the game on a wrong monitor.<br />
<br />
The problem is that Unity games write the default param {{ic|1=<pref name="UnitySelectMonitor" type="int">-1</pref>}} to the game config file.<br />
<br />
This will lead to the game launching on a non-primary monitor.<br />
<br />
When changing to value into {{ic|1=<pref name="UnitySelectMonitor" type="int">'''0'''</pref>}} for the according game, the game will start on the correct (primary) monitor.<br />
<br />
A Unity game config file usually resides in {{ic|~/.config/unity3d/''CompanyName''/''ProductName''/prefs}}.<br />
<br />
Some of the affected games: ''Cities: Skylines'', ''Tablestop Simulator'', ''Assault Android Cactus'', ''Wasteland 2'', ''Tyranny''.<br />
<br />
Be aware that some games do not support setting that parameter, it will simply be ignored. This is the case for ''Pillars of Eternity'', ''Kentucky Route Zero'', ''Sunless Sea''.<br />
<br />
== Unrest ==<br />
<br />
Requires {{pkg|fluidsynth}}.<br />
<br />
== War Thunder ==<br />
<br />
=== No audio ===<br />
<br />
If there is no audio after launching the game, install {{pkg|pulseaudio-alsa}}.<br />
<br />
=== Blank screen ===<br />
<br />
If having a green or blank screen on startup, add {{ic|1=MESA_GL_VERSION_OVERRIDE=4.1COMPAT}} to your [[Steam#Launch options|launch options]]. [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 />
== Warhammer 40,000: Dawn of War II ==<br />
<br />
Dependencies:<br />
<br />
* {{Pkg|alsa-lib}}<br />
* {{Pkg|librtmp0}}<br />
<br />
The start script does not point to the right direction of {{ic|libasound.so.2}}.<br />
<br />
To fix it open {{ic|''gamedir''/DawnOfWar2.sh}} and replace the following lines:<br />
<br />
{{bc|<nowiki>HAS_LSB_RELEASE=$(command -v lsb_release)<br />
if [ -n "${HAS_LSB_RELEASE}" ] && [ "$(lsb_release -c | cut -f2)" = "trusty" ]; then<br />
LD_PRELOAD_ADDITIONS="/usr/lib/x86_64-linux-gnu/libasound.so.2:${LD_PRELOAD_ADDITIONS}"<br />
fi </nowiki>}}<br />
<br />
with:<br />
<br />
{{bc|1=LD_PRELOAD_ADDITIONS="/usr/lib64/libasound.so.2:${LD_PRELOAD_ADDITIONS}"}}<br />
<br />
== Witcher 2: Assassin of Kings ==<br />
<br />
Dependencies:<br />
<br />
* {{Pkg|lib32-gnutls}}<br />
* {{Pkg|lib32-libcurl-compat}}<br />
* {{Pkg|lib32-libcurl-gnutls}}<br />
* {{Pkg|lib32-sdl2_image}}<br />
* {{Pkg|lib32-sdl2}}<br />
<br />
=== Game does not start ===<br />
<br />
If the game does not run, enable error messages:<br />
<br />
$ cd "$HOME/.steam/root/steamapps/common/the witcher 2"<br />
$ LIBGL_DEBUG=verbose ./witcher2<br />
<br />
== Wizardry 6: Bane of the Cosmic Forge ==<br />
<br />
Requires [[DOSBox]].<br />
<br />
To fix the crash at start, open {{ic|''gamedir''/dosbox_linux/launch_wizardry6.sh}} and:<br />
<br />
* comment the line {{ic|1=export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:./libs}}<br />
* change the beginning of the line starting with {{ic|exec ./dosbox}} to {{ic|exec dosbox}}<br />
<br />
== World of Goo ==<br />
<br />
=== Changing resolution ===<br />
To change the game resolution edit the ''Graphics display'' section in {{ic|''gamedir''/properties/config.txt}}. For example:<br />
<br />
<nowiki><!-- Graphics display --></nowiki><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 />
== XCOM ==<br />
<br />
Dependencies:<br />
<br />
* {{Pkg|librtmp0}}<br />
* {{Pkg|sdl2_image}} (required to enable keyboard functionality in-game)<br />
<br />
=== Hangs on startup ===<br />
<br />
See [[Steam/Troubleshooting#Steam runtime issues]].<br />
<br />
If you are running a [[hybrid graphics]] system, try:<br />
<br />
__GL_THREADED_OPTIMIZATIONS=0 primusrun %command%<br />
<br />
=== Graphical glitches on Intel HD ===<br />
<br />
XCOM may not recognize the SDL2 shared libraries shipped with the Steam runtime.<br />
Check if the binary finds all required files and install missing packages if necessary ({{Pkg|sdl2}} and {{Pkg|sdl2_image}}).<br />
<br />
{{bc|ldd ~/.steam/root/steamapps/common/XCom-Enemy-Unknown/binaries/linux/game.x86_64 | grep "not found"}}<br />
<br />
== Tower Unite ==<br />
<br />
=== Graphical Glitches ===<br />
<br />
This is a known issue, and it occurs because the shaders had not been ported to Linux yet by the developers. To minimize glitches and make the game playable use<br />
<br />
{{bc|-opengl4}}<br />
launch option, set Ocean Quality to "Potato" and Effects Quality to "Low" in game's settings.</div>Dustballhttps://wiki.archlinux.org/index.php?title=Steam/Game-specific_troubleshooting&diff=479491Steam/Game-specific troubleshooting2017-06-09T23:24:41Z<p>Dustball: /* Borderlands: The Pre-Sequel */ lib32-openal</p>
<hr />
<div>[[Category:Gaming]]<br />
[[ja:Steam/ゲーム別のトラブルシューティング]]<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 />
<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 />
== Common steps ==<br />
<br />
=== Prepend /usr/lib to LD_LIBRARY_PATH ===<br />
<br />
Add {{ic|1=LD_LIBRARY_PATH="/usr/lib:$LD_LIBRARY_PATH"}} to your [[Steam#Launch options|launch options]].<br />
<br />
=== OpenSSL 1.0 setup ===<br />
<br />
Some Steam games are built against OpenSSL 1.0. [https://bugs.archlinux.org/task/53618]<br />
<br />
Install {{AUR|libopenssl-1.0-compat}} and add {{ic|1=LD_LIBRARY_PATH=/usr/lib/openssl-1.0-compat}} to your [[Steam#Launch options|launch options]].<br />
<br />
=== Adobe Air setup ===<br />
<br />
The package {{AUR|adobe-air-sdk}} installs Adobe Air not in the place where the game expects it to be, fix this by creating the following symlink:<br />
<br />
# ln -s "/opt/adobe-air-sdk/runtimes/air/linux/Adobe AIR" "/opt/Adobe AIR"<br />
<br />
Adobe AIR requires you to accept its EULA:<br />
<br />
$ mkdir -p ~/.appdata/Adobe/AIR<br />
$ echo 2 > ~/.appdata/Adobe/AIR/eulaAccepted<br />
<br />
== Alien Isolation ==<br />
<br />
Symlink {{ic|/usr/lib/libpcre.so}} to {{ic|''gamedir''/lib/x86_64/libpcre.so.3}}, otherwise the game will fail to start.<br />
<br />
== Amnesia: The Dark Descent ==<br />
<br />
Dependencies:<br />
<br />
* {{AUR|lib32-freealut}}<br />
* {{pkg|lib32-glu}}<br />
* {{pkg|lib32-libxmu}}<br />
* {{pkg|lib32-sdl_ttf}}<br />
<br />
== And Yet It Moves ==<br />
<br />
Dependencies:<br />
<br />
* {{Pkg|lib32-libjpeg6-turbo}}<br />
* {{Pkg|lib32-libpng12}}<br />
* {{Pkg|lib32-libtheora}}<br />
* {{Pkg|lib32-libtiff4}}<br />
<br />
=== Game does not start ===<br />
<br />
When the game refuses to launch and prints one of the following error messages:<br />
<br />
readlink: extra operand ‘Yet’<br />
Try 'readlink --help' for more information.<br />
<br />
or<br />
<br />
This script must be run as a user with write priviledges to game directory<br />
<br />
Open {{ic|''gamedir''/AndYetItMovesSteam.sh}} and replace the line:<br />
<br />
ayim_dir="$(dirname "$(readlink -f ${BASH_SOURCE[0]})")"<br />
<br />
with:<br />
<br />
ayim_dir="$(dirname "$(readlink -f "${BASH_SOURCE[0]}")")"<br />
<br />
== Anodyne ==<br />
<br />
Dependencies:<br />
<br />
* {{AUR|adobe-air-sdk}}, follow [[#Adobe Air setup]]<br />
* {{pkg|xterm}} (probably not required)<br />
<br />
===Play with a controller: joy2key configuration===<br />
<br />
Configuration example to play [http://www.anodynegame.com/ Anodyne] with an XBox 360 Wireless Controller<br />
<br />
COMMON<br />
-dev /dev/input/js0<br />
-X<br />
-thresh -18000 18000 -18000 18000 -18000 18000 -18000 18000 -18000 18000 -18000 18000 -18000 18000 -18000 18000<br />
-axis Left Right Up Down blank blank blank blank blank blank blank blank Left Right Up Down<br />
-buttons c x Return<br />
<br />
Save this to {{ic|~/.joy2keyrc}} and start joy2key after you start Anodyne<br />
<br />
joy2key -rcfile ~/.joy2keyrc<br />
<br />
== Aquaria ==<br />
<br />
=== Mouse pointer gets stuck in one direction ===<br />
<br />
If the mouse pointer gets stuck in one direction, make sure {{ic|''gamedir''/usersettings.xml}} contains {{ic|1=<JoystickEnabled on="0" />}}.<br />
<br />
If that does not fix the issue, try unplugging any joysticks or joystick adapter devices you have plugged in.<br />
<br />
== ARK: Survival Evolved ==<br />
<br />
=== Game does not start, displays text window with unreadable text ===<br />
<br />
Add {{ic|1=MESA_GL_VERSION_OVERRIDE=4.0 MESA_GLSL_VERSION_OVERRIDE=400}} to your [[Steam#Launch options|launch options]].<br />
<br />
== Audiosurf 2 ==<br />
<br />
Requires {{pkg|pulseaudio-alsa}}.<br />
<br />
== Binding of Isaac: Rebirth ==<br />
<br />
=== No sound ===<br />
<br />
{{Note|This also helps with Never Alone (Kisima Ingitchuna) and No Time to Explain.}}<br />
<br />
[[#Prepend /usr/lib to LD_LIBRARY_PATH]].<br />
<br />
Adjust the audio levels in the game options.<br />
<br />
== The Book of Unwritten Tales ==<br />
<br />
Dependencies:<br />
<br />
* {{AUR|lib32-jasper}}<br />
* {{AUR|lib32-libxaw}}<br />
<br />
If the game does not start, uncheck: ''Properties > Enable Steam Community In-Game''.<br />
<br />
The game is known to segfault when opening the settings and possibly during or before playing. A workaround from the [http://steamcommunity.com/app/221410/discussions/3/846939071081758230/#p2 Steam discussions] is to replace the game's {{ic|RenderSystem_GL.so}} with one from Debian's repositories. To do that download [https://launchpad.net/ubuntu/+archive/primary/+files/libogre-1.7.4_1.7.4-3_i386.deb this deb file], and extract it with {{AUR|dpkg}}:<br />
<br />
$ dpkg -x libogre-*.deb outdir<br />
<br />
Now replace {{ic|''gamedir''/lib/32/RenderSystem_GL.so}} with the one extracted from the {{ic|.deb}} package.<br />
<br />
== The Book of Unwritten Tales: The Critter Chronicles ==<br />
<br />
See [[#The Book of Unwritten Tales]].<br />
<br />
To prevent the game from crashing at the end credits, change the size of the credits image as described [http://steamcommunity.com/app/221830/discussions/0/828925849276110960/#c810921273836530791 here].<br />
<br />
== Borderlands 2 ==<br />
<br />
=== Migrating saves from other platforms ===<br />
<br />
Borderlands 2 does not support cross-platform Steam Cloud syncing,<br />
you have to manually copy the files between platforms.<br />
Save locations can be found [https://pcgamingwiki.com/wiki/Borderlands_2#Game_data here].<br />
Make sure your user can access the files.<br />
<br />
=== Using Ctrl Key ===<br />
<br />
Borderlands 2 does not allow the {{ic|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 />
<br />
Out of the box you will not be able to log into SHiFT since the game expects certificates to be in {{ic|/usr/lib/ssl}}, which is where Ubuntu stores them. Arch however uses {{ic|/etc/ssl}}.<br />
To resolve the problem, add {{ic|1=SSL_CERT_DIR=/etc/ssl/certs}} to your [[Steam#Launch options|launch options]].<br />
<br />
=== Game crashes nearly instantly ===<br />
<br />
As of lib32-openal version 1.18.0-1, the game crashes instantly. The possible solutions are to downgrade lib32-openal to 1.17.2-1, or to start the game with {{ic|LD_PRELOAD='$HOME/.local/share/Steam/ubuntu12_32/steam-runtime/i386/usr/lib/i386-linux-gnu/libopenal.so.1'}}.<br />
<br />
== Borderlands: The Pre-Sequel ==<br />
<br />
See [[#Logging into SHiFT]].<br />
<br />
=== Keyboard not working ===<br />
<br />
Using [[dwm]], no keyboard input seems to register.<br />
<br />
=== Not starting via Steam ===<br />
<br />
If the game appears as ''Running'', then syncs and closes when you launch it from Steam, try creating a {{ic|steam_appid.txt}} in the game directory<br />
containing {{ic|261640}}. This should resolve the issue and let you start the game directly from the game directory. If that does not work, try using the {{Pkg|steam-native-runtime}}.<br />
<br />
=== Game crashes nearly instantly ===<br />
<br />
As of lib32-openal version 1.18.0-1, the game crashes instantly. The possible solutions are to downgrade lib32-openal to 1.17.2-1, or to start the game with {{ic|LD_PRELOAD<nowiki>=</nowiki>'$HOME/.local/share/Steam/ubuntu12_32/steam-runtime/i386/usr/lib/i386-linux-gnu/libopenal.so.1'}}.<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] {{Dead link|2017|05|25}} (replace {{ic|/etc/fonts/conf.d/10-scale-bitmap-fonts.conf}}).<br />
<br />
== Cities Skylines ==<br />
<br />
=== Textures not rendering properly ===<br />
<br />
Add {{ic|1=UNITY_DISABLE_GRAPHICS_DRIVER_WORKAROUNDS=yes}} to your [[Steam#Launch options|launch options]].<br />
<br />
== Civilization V ==<br />
<br />
You need to add {{ic|1=LD_PRELOAD='./libcxxrt.so:/usr/$LIB/libstdc++.so.6' %command%'}} to your [[Steam#Launch options|launch options]].<br />
<br />
[https://github.com/ValveSoftware/steam-for-linux/issues/4379 steam-for-linux issue #4379]<br />
<br />
=== Stuttering sound with PulseAudio ===<br />
<br />
See [[PulseAudio/Troubleshooting#Laggy sound]].<br />
<br />
== Civilization: Beyond earth ==<br />
If you are getting an instant crash/close upon launch, make sure you have the following 32-bit packages installed:<br />
<br />
* {{pkg|lib32-libcurl-compat}}<br />
* {{pkg|lib32-libcurl-gnutls}}<br />
* {{pkg|lib32-openal}}<br />
* {{aur|lib32-intel-tbb}}<br />
<br />
== Civilization VI ==<br />
<br />
As with Civ V, you need to add {{ic|1=LD_PRELOAD='./libcxxrt.so:/usr/$LIB/libstdc++.so.6' %command%'}} to your [[Steam#Launch options|launch options]].<br />
<br />
Follow [[#OpenSSL 1.0 setup]].<br />
<br />
== Deus Ex: Mankind divided ==<br />
<br />
Follow [[#OpenSSL 1.0 setup]].<br />
<br />
== The Clockwork Man ==<br />
<br />
Requires {{pkg|lib32-libidn}}.<br />
<br />
== Company of Heroes 2 ==<br />
<br />
Like with [[#Alien Isolation]] you need to symlink {{ic|/usr/lib/libpcre.so}} to {{ic|''gamedir''/lib/''arch''/libpcre.so.3}}, otherwise the game will fail to start.<br />
<br />
== Counter-Strike: Global Offensive (CS:GO) ==<br />
<br />
=== Game starts on the wrong screen ===<br />
<br />
[https://github.com/ValveSoftware/csgo-osx-linux/issues/60 csgo-osx-linux issue #60]<br />
<br />
If it happens, go into fullscreen windowed or windowed mode and drag the window to the correct monitor. Then go back into fullscreen, the game should now be on the correct monitor.<br />
<br />
=== Cannot reach bottom of the screen on menus ===<br />
<br />
[https://github.com/ValveSoftware/csgo-osx-linux/issues/594 csgo-osx-linux issue #594]<br />
<br />
If you have a secondary monitor you might have a part of your lower screen you cannot reach in menus.<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]] {{pkg|wmctrl}} 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 />
=== Sound is played slightly delayed ===<br />
<br />
[https://github.com/ValveSoftware/csgo-osx-linux/issues/45 csgo-osx-linux issue #45]<br />
<br />
See [[PulseAudio/Troubleshooting#Laggy sound]] for a possible solution.<br />
<br />
=== Mouse not working in-game ===<br />
<br />
If your mouse works in the main menu but not in-game, add<br />
{{ic|1=SDL_VIDEO_X11_DGAMOUSE=0}} to your [[Steam#Launch options|launch options]].<br />
[https://bbs.archlinux.org/viewtopic.php?id=184905]<br />
<br />
=== Brightness slider not working ===<br />
<br />
[[Install]] {{pkg|xorg-xrandr}} and run {{ic|xrandr}} to find out the name of your connected display output.<br />
<br />
Edit {{ic|''gamedir''/csgo.sh}} and add the following lines (adapt ''output_name''):<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 />
=== Microphone not working ===<br />
<br />
[https://github.com/ValveSoftware/csgo-osx-linux/issues/573#issuecomment-174016722 csgo-osx-linux issue #573]<br />
<br />
CS:GO uses the default PulseAudio sound device ignoring what is configured in Steam settings.<br />
<br />
First find out the source name of your microphone (it should start with {{ic|alsa_input.}}):<br />
$ pacmd list-sources<br />
<br />
Then set the default device (change the name accordingly):<br />
$ pacmd set-default-source ''device_name''<br />
<br />
Also lower the microphone level to 60% otherwise you will get some nasty background noise and you will be difficult to understand (change the name accordingly):<br />
$ pacmd set-source-volume ''device_name'' 0x6000<br />
<br />
== Crusader Kings II ==<br />
<br />
x86_64 dependencies:<br />
<br />
* {{pkg|lib32-openssl}}<br />
<br />
=== Locations ===<br />
<br />
The game can be started directly without running Steam by executing {{ic|./ck2}} in its directory.<br />
<br />
Save files are stored in {{ic|~/.paradoxinteractive/Crusader Kings II/}}. Before version 2.03 they were stored in {{ic|~/Documents/Paradox Interactive/Crusader Kings II/save games/}}.<br />
<br />
=== No audio ===<br />
<br />
SDL uses [[PulseAudio]] by default, so to use it with [[ALSA]] you need to set:<br />
<br />
{{hc|~/.pam_environment|2=SDL_AUDIODRIVER=alsa}}<br />
<br />
=== Oddly sized starting window ===<br />
<br />
You can make full screen mode the default by setting {{ic|1=fullscreen=yes}} in {{ic|~/.paradoxinteractive/Crusader Kings II/settings.txt}}.<br />
<br />
== Death Road To Canada ==<br />
<br />
=== No music ===<br />
<br />
[[#Prepend /usr/lib to LD_LIBRARY_PATH]].<br />
<br />
== Defender's Quest: Valley of the Forgotten ==<br />
<br />
Dependencies:<br />
<br />
* {{AUR|adobe-air-sdk}}, follow [[#Adobe Air setup]]<br />
* {{pkg|lib32-libcanberra}}<br />
* {{pkg|xterm}}<br />
<br />
== Dirt ==<br />
<br />
Follow [[#OpenSSL 1.0 setup]].<br />
<br />
== Divinity: Original Sin - Enhanced Edition ==<br />
<br />
=== Game doesn't start when using Bumblebee optirun or primusrun ===<br />
<br />
Edit {{ic|''gamedir''/runner.sh}} to use primusrun:<br />
LD_LIBRARY_PATH="." primusrun ./EoCApp<br />
<br />
== Don't Starve ==<br />
<br />
Dependencies:<br />
<br />
* {{pkg|lib32-flashplugin}}<br />
* {{pkg|lib32-libcurl-gnutls}}<br />
<br />
=== No sound ===<br />
<br />
[[#Prepend /usr/lib to LD_LIBRARY_PATH]].<br />
<br />
In the game, go to the options and adjust the audio levels.<br />
<br />
== Dota 2 ==<br />
<br />
Dependencies:<br />
<br />
* {{AUR|libudev0}}<br />
* {{pkg|libpng12}}<br />
* {{pkg|libtxc_dxtn}}<br />
<br />
=== In-game font is unreadable ===<br />
<br />
Add {{ic|1=MESA_GL_VERSION_OVERRIDE=2.1}} to your [[Steam#Launch options|launch options]].<br />
<br />
=== The game does not start ===<br />
<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 />
<br />
Apparently the game [[#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 />
<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 />
<br />
After a recent Mesa update, Dota 2 stopped working. The error message is:<br />
<br />
SDL_GL_LoadLibrary(NULL) failed: Failed loading libGL.so.1: /usr/lib32/libxcb-dri3.so.0: undefined symbol: xcb_send_fd<br />
<br />
See [[Steam/Troubleshooting#Steam runtime issues]].<br />
<br />
=== Steam overlay ===<br />
<br />
Steam distributes a copy of libxcb which is incompatible with the latest xorg libxcb. See [[Steam/Troubleshooting#Steam runtime issues]],<br />
[https://github.com/ValveSoftware/steam-for-linux/issues/3199], [https://github.com/ValveSoftware/steam-for-linux/issues/3093].<br />
<br />
=== Chinese tips and player names not shown ===<br />
<br />
The Chinese characters in tips and player names are displayed as block characters.<br />
<br />
The problem is caused by the font packages: {{pkg|ttf-dejavu}}, {{pkg|ttf-liberation}} and {{aur|ttf-ms-fonts}}.<br />
<br />
: [https://github.com/ValveSoftware/Dota-2/issues/1688 GitHub Steam issue #1688] {{Dead link|2017|05|25}}<br />
<br />
=== Chinese input method problem ===<br />
<br />
Dota2 is not compatible with CJK IME(Input Method Editor/Enhancer), such as [[Ibus]] and [[Fcitx]].<br />
Chinese characters cannot be typed in Dota2.<br />
<br />
A possible solution is to replace {{ic|''gamedir''/dota 2 beta/bin/libSDL2-2.0.so.0}} with a self-compiled ''libSDL'' that supports fcitx or ibus.<br />
<br />
: [https://forum.ubuntu.com.cn/viewtopic.php?f=34&t=460195 LibSDL+Ibus]<br />
: [https://forum.ubuntu.com.cn/viewtopic.php?f=34&t=466879 LibSDL+Fcitx]<br />
: [https://github.com/timxx/SDL-fcitx LibSDL+Fcitx source]<br />
: [https://github.com/ValveSoftware/Dota-2/issues/1650 The solutions issue] {{Dead link|2017|05|25}}<br />
<br />
== Dwarfs F2P ==<br />
<br />
Dependencies:<br />
<br />
* {{AUR|lib32-libgdiplus}}{{Broken package link|{{aur-mirror|lib32-libgdiplus}}}}<br />
<br />
=== Game does not start ===<br />
<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|''gamedir''/Run.sh}} and change<br />
<br />
export LD_LIBRARY_PATH=.:${LD_LIBRARY_PATH}<br />
<br />
to<br />
<br />
export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:.<br />
<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 removing the following files from the game directory:<br />
<br />
libX11.so.6 libsteam.so libtier0_s.so libvstdlib_s.so steamclient.so<br />
<br />
=== Game crashes ===<br />
<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 />
<br />
Requires {{pkg|lib32-sdl}}.<br />
<br />
=== Sound Issues ===<br />
<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 />
<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 />
<br />
/home/$USER/.steam/root/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 />
<br />
Install {{pkg|lib32-sdl}} from [[multilib]] and Dynamite Jack should start up.<br />
<br />
== Euro Truck Simulator 2 ==<br />
=== Shows only a black screen ===<br />
<br />
Select safe mode when the game starts up.<br />
<br />
== Football Manager 2014 ==<br />
<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 />
<br />
Requires {{pkg|lib32-glu}}.<br />
<br />
This game has 32-bit and 64-bit binaries. For some 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 />
== FTL: Faster than Light ==<br />
<br />
=== Compatibility ===<br />
<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 />
<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 />
<br />
=== Game does not start ===<br />
<br />
You might get an error about missing {{ic|libudev.so.0}}. See [[Steam/Troubleshooting#Steam runtime issues]].<br />
<br />
== Garry's Mod ==<br />
<br />
=== Game does not start ===<br />
<br />
When an error about a missing {{ic|client.so}} appears, try the following:<br />
<br />
$ cd ~/.steam/root/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 />
<br />
If the error mentions a missing library for {{ic|libgcrypt.so.11}}, install {{pkg|lib32-libgcrypt15}}.<br />
<br />
=== Opening some menus causes the game to crash ===<br />
<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 />
<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 the minimum should fix the problem.<br />
<br />
== Gods will be watching ==<br />
<br />
Install {{AUR|lib32-libopenssl-1.0-compat}} and add {{ic|1=LD_LIBRARY_PATH=/usr/lib32/openssl-1.0-compat}} to your [[Steam#Launch options|launch options]].<br />
<br />
== GRID Autosport ==<br />
<br />
Follow [[#OpenSSL 1.0 setup]].<br />
<br />
=== Black screen when trying to play ===<br />
<br />
Add {{ic|1=LC_ALL=C}} to your [[Steam#Launch options|launch options]].<br />
<br />
== Hack 'n' Slash ==<br />
<br />
=== Crashes when trying to load a game ===<br />
<br />
[[#Prepend /usr/lib to LD_LIBRARY_PATH]].<br />
<br />
== Hacker Evolution ==<br />
<br />
Requires {{Pkg|lib32-sdl2_mixer}}.<br />
<br />
== Half-Life 2 and episodes ==<br />
<br />
=== Cyrillic fonts problem ===<br />
<br />
This problem can be solved by deleting "Helvetica" font.<br />
<br />
== Hammerwatch ==<br />
<br />
=== The game does not start via Steam ===<br />
<br />
[[#Prepend /usr/lib to LD_LIBRARY_PATH]].<br />
<br />
=== No sound ===<br />
<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 />
== Halo: Custom Edition ==<br />
<br />
Although not a Steam game, Halo: Custom Edition running under [[Wine]] and/or PlayOnLinux has many audio problems. To mitigate this, install dsound via winetricks or PlayOnLinux. Then, set the in-game "Sound Quality" to medium. If you have installed the campaign extra, this also restores all video cut-scene audio.<br />
<br />
== Harvest: Massive Encounter ==<br />
<br />
Dependencies:<br />
<br />
* {{AUR|lib32-sfml}}<br />
* {{Pkg|lib32-libjpeg6-turbo}}<br />
* {{Pkg|lib32-nvidia-cg-toolkit}}<br />
* {{pkg|lib32-gtk2}}<br />
* {{pkg|lib32-libvorbis}}<br />
* {{pkg|lib32-openal}}<br />
<br />
=== Compatibility ===<br />
<br />
Game refuses to launch and throws you to library installer loop. Just edit {{ic|''gamedir''/run_harvest}} and remove everything but:<br />
<br />
#!/bin/bash<br />
exec ./Harvest<br />
<br />
== Hatoful Boyfriend ==<br />
<br />
=== Japanese text invisible ===<br />
<br />
Install {{pkg|wqy-microhei}} and {{pkg|wqy-microhei-lite}}.<br />
<br />
== Hyper Light Drifter ==<br />
<br />
=== The controller does not work ===<br />
<br />
[[Install]] {{pkg|lib32-sdl2}} and add {{ic|1=LD_PRELOAD=libSDL2.so}} to your [[Steam#Launch options|launch options]].<br />
<br />
See the following Steam Community discussions:<br />
<br />
* [https://steamcommunity.com/app/257850/discussions/1/365163686036494421 Controller Issues]<br />
* [https://steamcommunity.com/app/257850/discussions/1/365163686045397160/ Common Bugs + Known Issues]<br />
<br />
It is suggested to run the ''next_update'' branch to get new fixes,<br />
there however currently is a libcurl segfault keeping it from starting without special workarounds.<br />
<br />
=== Missing libcurl.so.4 or version CURL_OPENSSL_3 not found ===<br />
<br />
[[Install]] {{pkg|lib32-libcurl-compat}} and add {{ic|1=LD_PRELOAD=libcurl.so.3}} to your [[Steam#Launch options|launch options]].<br />
<br />
== The Impossible Game ==<br />
<br />
Dependencies:<br />
<br />
* {{pkg|lib32-sdl2}}<br />
* {{pkg|lib32-sdl2_image}}<br />
<br />
== The Inner World ==<br />
<br />
Requires {{AUR|java-commons-codec}} for sound support.<br />
<br />
=== Bringing up the inventory or main menu ===<br />
<br />
Hold the tab key.<br />
<br />
==== Cutscenes ====<br />
<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 />
Furthermore you need the package {{aur|ffmpeg-compat-55}}.<br />
<br />
There seem to be problems with the Steam overlay. Try to run the game directly with {{ic|''gamedir''/TIW_start.sh}}.<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 />
See the [http://steamcommunity.com/app/251430/discussions/0/611701360817206606/#c611701360827509770 Steam Forums] for details.<br />
<br />
== Interloper ==<br />
<br />
Requires {{pkg|alsa-lib}}.<br />
<br />
=== Game does not start ===<br />
<br />
The game can sometimes segfault due to an incompatibility with the Steam Runtime's {{ic|libasound.so.2}}. See [[Steam/Troubleshooting#Steam runtime issues]].<br />
<br />
== Invisible Apartment ==<br />
<br />
Requires {{pkg|qt5-multimedia}}.<br />
<br />
=== Game does not start ===<br />
<br />
If the game does not run when you launch it via Steam, try to directly run {{ic|./ia1}} in the game directory.<br />
<br />
== Joe Danger 2: The Movie ==<br />
<br />
Requires {{pkg|lib32-libpulse}}.<br />
<br />
=== Compatibility ===<br />
<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 />
<br />
See [[Kerbal Space Program]].<br />
<br />
== Killing Floor ==<br />
<br />
=== Cannot change screen resolution ===<br />
<br />
If trying to modify the resolution in-game crashes your desktop environment, edit {{ic|~/.killingfloor/System/KillingFloor.ini}}:<br />
<br />
[WinDrv.WindowsClient]<br />
WindowedViewportX=''width''<br />
WindowedViewportY=''height''<br />
FullscreenViewportX=''width''<br />
FullscreenViewportY=''height''<br />
MenuViewportX=''width''<br />
MenuViewportY=''height''<br />
<br />
[SDLDrv.SDLClient]<br />
WindowedViewportX=''width''<br />
WindowedViewportY=''height''<br />
FullscreenViewportX=''width''<br />
FullscreenViewportY=''height''<br />
MenuViewportX=''width''<br />
MenuViewportY=''height''<br />
<br />
=== Windowed mode ===<br />
<br />
Uncheck fullscreen in the options menu, and press {{ic|Ctrl+g}} to stop mouse capturing.<br />
<br />
=== Stuttering sound ===<br />
<br />
KillingFloor comes with its own OpenAL library {{ic|''gamedir''/System/openal.so}}.<br />
<br />
Back it up, [[install]] {{pkg|openal}} or {{pkg|lib32-openal}} (if using a 64bit system).<br />
<br />
Then symlink the installed system library ({{ic|/usr/lib32/libopenal.so.1}} or {{ic|/usr/lib/libopenal.so.1}}) to {{ic|openal.so}}.<br />
<br />
== Lethal League ==<br />
<br />
Requires {{Pkg|lib32-glew1.10}}.<br />
<br />
== Life is Strange ==<br />
<br />
Requires {{Pkg|lib32-librtmp0}}.<br />
<br />
== Mark of the Ninja ==<br />
<br />
=== Bad sound ===<br />
<br />
[[#Prepend /usr/lib to LD_LIBRARY_PATH]].<br />
<br />
== Metro: Last Light ==<br />
<br />
The game does not allow you to change its resolution on a multi-monitor setup on GNOME with the AMD Catalyst drivers. A temporary workaround is to disable the side monitors.<br />
Jason over at [http://unencumberedbyfacts.com/2013/11/20/multiple-monitor-gaming-on-linux/ unencumbered by facts] managed to get it working with his multi-monitor setup using a single display server, he however is using Nvidia.<br />
<br />
== Middle-earth: Shadow of Mordor ==<br />
<br />
=== Floating heads ===<br />
<br />
Add {{ic|1=__GL_ShaderPortabilityWarnings=0}} to your [[Steam#Launch options|launch options]].<br />
<br />
== Multiwinia ==<br />
<br />
Requires {{pkg|lib32-openal}}.<br />
<br />
=== Crash on startup ===<br />
<br />
If Multiwinia crashes on startup on X64 systems, force launching the 32-bit executable by replacing {{ic|''gamedir''/run_steam.sh}} with the following script:<br />
<br />
{{bc|<br />
#!/bin/sh<br />
./multiwinia.bin.x86<br />
}}<br />
<br />
See [https://steamcommunity.com/app/1530/discussions/0/864969481950542663/#c558746995160431396].<br />
<br />
== Natural Selection 2 ==<br />
Requires {{pkg|lib32-speex}}.<br />
=== No Sound ===<br />
<br />
If there is no sound in-game. Try installing {{pkg|lib32-sdl}} and {{Pkg|lib32-sdl2}}.<br />
<br />
If this fails, try setting the game's launch options in Steam to:<br />
<br />
LD_LIBRARY_PATH="/usr/lib32:$LD_LIBRARY_PATH" %command%<br />
<br />
== Nuclear Throne ==<br />
<br />
=== Missing libcurl.so.4 or version CURL_OPENSSL_3 not found ===<br />
<br />
[[Install]] {{pkg|lib32-libcurl-compat}} and add {{ic|1=LD_PRELOAD=libcurl.so.3}} to your [[Steam#Launch options|launch options]].<br />
<br />
== Penumbra: Overture ==<br />
<br />
Dependencies:<br />
<br />
* {{pkg|lib32-glu}}<br />
* {{pkg|lib32-libvorbis}}<br />
* {{pkg|lib32-libxft}}<br />
* {{pkg|lib32-openal}}<br />
* {{pkg|lib32-sdl_image}}<br />
* {{pkg|lib32-sdl_ttf}}<br />
<br />
=== Windowed mode ===<br />
<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 />
<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 />
== The Polynomial ==<br />
<br />
Dependencies:<br />
<br />
* {{AUR|ilmbase102-libs}}{{Broken package link|{{aur-mirror|ilmbase102-libs}}}}<br />
* {{AUR|openexr170-libs}}{{Broken package link|{{aur-mirror|openexr170-libs}}}}<br />
<br />
[https://github.com/ValveSoftware/steam-for-linux/issues/2721 Steam for Linux issue #2721]<br />
<br />
=== Segfaults during program start on 64-bit systems ===<br />
<br />
The game segfaults during program start because of the {{ic|LD_LIBRARY_PATH}} setting in the launcher script. Edit {{ic|''gamedir''/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 />
== Portal 2 ==<br />
<br />
=== Game does not start ===<br />
<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}}). See [[Steam/Troubleshooting#Steam runtime issues]].<br />
<br />
A problem with libstdc can be fixed with:<br />
LD_PRELOAD='/usr/$LIB/libstdc++.so.6' %command%<br />
<br />
=== Resolution too low ===<br />
<br />
When the game starts with a resolution so low that you cannot reach the game settings,<br />
start the game in windowed mode by setting the launch option {{ic|-windowed}}.<br />
<br />
== Prison Architect ==<br />
<br />
=== ALSA error when using PulseAudio ===<br />
<br />
The error:<br />
<br />
{{ic|ALSA lib pcm_dmix.c:1018:(snd_pcm_dmix_open) unable to open slave}}<br />
<br />
was resolved by installing:<br />
<br />
* {{pkg|pulseaudio-alsa}}<br />
* {{pkg|lib32-libpulse}}<br />
<br />
per [[PulseAudio#ALSA]].<br />
<br />
== Project Zomboid ==<br />
<br />
Requires {{pkg|jre7-openjdk}}.<br />
<br />
=== No sound ===<br />
<br />
[[#Prepend /usr/lib to LD_LIBRARY_PATH]].<br />
<br />
In the game, go to the options and set all audio to the proper volume.<br />
<br />
== Redshirt ==<br />
<br />
Requires {{pkg|lib32-libpulse}} if you use PulseAudio.<br />
<br />
== Revenge of the Titans ==<br />
<br />
Requires {{pkg|libxtst}} and {{pkg|lib32-libxtst}}.<br />
<br />
== Rock Boshers DX: Directors Cut ==<br />
<br />
Requires {{Pkg|lib32-libcaca}}.<br />
<br />
== Saints Row IV ==<br />
<br />
=== Game fails to launch after update to new Nvidia drivers ===<br />
<br />
Set the launch options for Saints Row IV to:<br />
<br />
{{bc|1=LD_PRELOAD=$LD_PRELOAD:/usr/lib32/libGLX_nvidia.so %command%}}<br />
<br />
=== Game causes GPU lockup with mesa drivers ===<br />
<br />
Saints Rows IV can cause a GPU lockup when trying to play on certain AMD hardware using open source drivers: [https://bugs.freedesktop.org/show_bug.cgi?id=93475 Bug 93475].<br />
<br />
A workaround is to set the launch options to:<br />
<br />
{{bc|1=R600_DEBUG=nosb %command%}}<br />
<br />
== Serious Sam 3: BFE ==<br />
<br />
=== No audio ===<br />
<br />
Try running:<br />
<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 />
== Space Pirates and Zombies ==<br />
<br />
Requires {{pkg|lib32-openal}}.<br />
<br />
=== No audio ===<br />
<br />
Try running:<br />
<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 />
<br />
{{hc|~/.alsoftrc|<nowiki><br />
[general]<br />
drivers = alsa<br />
[alsa]<br />
device = default<br />
capture = default<br />
mmap = true<br />
</nowiki>}}<br />
<br />
== Spacechem ==<br />
<br />
Dependencies:<br />
<br />
* {{Pkg|lib32-sdl_mixer}}<br />
* {{pkg|lib32-sdl_image}}<br />
* {{pkg|lib32-sqlite}}<br />
<br />
=== Game crash ===<br />
<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 the three files {{ic|libSDL-1.2.so.0}}, {{ic|libSDL_image-1.2.so.0}}, {{ic|libSDL_mixer-1.2.so.0}} from the game directory.<br />
<br />
== Splice ==<br />
<br />
Requires {{pkg|glu}}.<br />
<br />
Splice comes with both x86 and x64 binaries. Steam does not have to be running to launch this game.<br />
<br />
== Star Wars Battlefront II ==<br />
<br />
Star Wars Battlefront 2's Steam version running under [[Wine]] has a bug which causes it to take forever to load a game. The solution is to compile a custom Wine version with the patch from this [https://bugs.winehq.org/show_bug.cgi?id=29582#c31 WineHQ bug comment].<br />
<br />
In order to use the patched wine version with PlayOnLinux, copy the completely patched and compiled wine-1.7.55 folder to {{ic|~/.PlayOnLinux/wine/linux-x86/}}.<br />
<br />
== The Stanley Parable ==<br />
<br />
=== Game won't start ===<br />
<br />
As discussed in the Steam store page, remove {{ic|bin/libstdc++.so.6}} from the game folder.<br />
<br />
== Shadow Tactics: Blades of the Shogun ==<br />
<br />
Dependencies:<br />
<br />
* {{pkg|lib32-libstdc++5}}<br />
* {{pkg|lib32-libxcursor}}<br />
* {{pkg|lib32-libxrandr}}<br />
<br />
== Steel Storm: Burning Retribution ==<br />
<br />
=== Start with black screen ===<br />
<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 />
<br />
If you are using an Intel video card, disable S3TC in {{Pkg|driconf}}.<br />
<br />
== Stephen's Sausage Roll ==<br />
<br />
=== No sound ===<br />
<br />
If using [[Steam/Troubleshooting#Native runtime|native libraries]]{{Broken section link}} and {{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 -Qql libpulse <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 (revert any renaming you just did). Browse to the game's directory:<br />
<br />
$ cd "$HOME/.steam/root/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|Only a 0-byte {{ic|libpulse-simple.so.0}} file may be required.}}<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 />
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 />
== Superbrothers: Sword & Sworcery EP ==<br />
<br />
Dependencies:<br />
<br />
* {{pkg|lib32-glu}}<br />
* {{pkg|lib32-libpulse}} if you use PulseAudio<br />
<br />
The game bundles an outdated version of libstdc++ which prevents the game from starting. [http://steamcommunity.com/app/204060/discussions/0/364039785161291413] The following can be observed when you run Steam and S&S from the terminal:<br />
<br />
libGL error: unable to load driver: i965_dri.so<br />
libGL error: driver pointer missing<br />
libGL error: failed to load driver: i965<br />
libGL error: unable to load driver: i965_dri.so<br />
libGL error: driver pointer missing<br />
libGL error: failed to load driver: i965<br />
libGL error: unable to load driver: swrast_dri.so<br />
libGL error: failed to load driver: swrast<br />
<br />
To solve this problem remove {{ic|''gamedir''/lib/libstdc++.so.6*}}. After that the game will use the libstdc++ from Steam.<br />
<br />
== Tabletop Simulator ==<br />
<br />
=== CJK characters not showing in game ===<br />
<br />
Install {{pkg|wqy-microhei}} and {{pkg|wqy-microhei-lite}}.<br />
<br />
== Team Fortress 2 ==<br />
<br />
Requires {{Pkg|lib32-libpng12}}.<br />
<br />
=== HRTF setup ===<br />
<br />
Assuming HRTF (head-related transfer function) has been properly set up in the operating system, HRTF won't be enabled unless you disable the original processing. To do so, use<br />
<br />
dsp_slow_cpu 1<br />
<br />
For best results, also change the following:<br />
<br />
snd_spatialize_roundrobin 1<br />
dsp_enhance_stereo 0<br />
snd_pitchquality 1<br />
<br />
=== Loading screen freeze ===<br />
<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 />
<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 />
<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 />
<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 />
== This War of Mine ==<br />
<br />
=== Game does not start ===<br />
<br />
This happens because of an incompatibility with the newer version of {{ic|lib32-curl}}. To fix the problem you need to remove {{ic|libcurl.so.4}} from the game directory.<br />
<br />
=== Sound glitches with Steam native ===<br />
<br />
The bundled {{ic|libOpenAL}} might not work correctly, try symlinking {{ic|/usr/lib32/libopenal.so}} to {{ic|''gamedir''/libOpenAL.so}}.<br />
<br />
== Ticket to Ride ==<br />
<br />
Dependencies:<br />
<br />
* {{AUR|lib32-gstreamer0.10-base}}<br />
* {{AUR|lib32-pangox-compat}}<br />
<br />
As lib32-gstreamer0.10-base is quite hard to build you can use [[Unofficial_user_repositories#alucryd-multilib|alucryd-multilib]] repo for this package<br />
<br />
== Tomb Raider ==<br />
<br />
=== Game immediately closes when running with steam-native ===<br />
<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 />
<br />
{{bc|~/.steam/root/ubuntu12_32/steam-runtime/run.sh %command%}}<br />
<br />
=== Steam Controller not working in-game===<br />
<br />
If your Steam Controller is correctly recognized and paired but still not working in-game try the following:<br />
<br />
* In Steam, non Big Screen, go to Settings -> Account -> Beta participation -> Change... and in the dropdown select box select Steam Beta Update<br />
* Restart Steam<br />
* Go to Big Screen and start Tomb Raider<br />
<br />
Correctly recognized means you can control desktop mouse and Steam in Big Picture mode and the controller is shown in Big Picture settings<br />
<br />
== Towns / Towns Demo ==<br />
<br />
Requires [[Java]].<br />
<br />
== Transistor ==<br />
<br />
=== Crash on launch / FMOD binding crash / Audio issues ===<br />
<br />
Try running steam with following command<br />
<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 />
<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 in [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 />
== Transmissions: Element 120 ==<br />
<br />
Dependencies:<br />
<br />
* {{Pkg|lib32-libgcrypt15}}<br />
* {{pkg|lib32-libpng12}}<br />
<br />
=== Troubleshooting ===<br />
<br />
Make sure you have all libraries installed. Above the standard set required by Steam runtime, the game requires few additional ones. The typical error message that indicates that is<br />
<br />
AppFramework : Unable to load module vguimatsurface.so!<br />
<br />
To find missing dependencies go into the game directory and run:<br />
<br />
LD_LIBRARY_PATH=bin ldd bin/vguimatsurface.so<br />
<br />
Look for entries that say ''not found''.<br />
<br />
== Trine 2 ==<br />
<br />
Dependencies:<br />
<br />
* {{pkg|lib32-glu}}<br />
* {{pkg|lib32-libxxf86vm}}<br />
* {{pkg|lib32-openal}}<br />
* {{pkg|xorg-xwininfo}}<br />
* {{pkg|lib32-libdrm}}<br />
<br />
* {{pkg|lib32-libpng12}}<br />
* {{pkg|lib32-libwrap}}<br />
<br />
=== Colors ===<br />
<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 />
<br />
=== Sound ===<br />
<br />
{{Accuracy|General settings not specific to this game}}<br />
<br />
If sound plays choppy, try:<br />
<br />
{{hc|/etc/openal/alsoft.conf|<nowiki><br />
drivers=pulse,alsa<br />
frequency=48000<br />
</nowiki>}}<br />
<br />
=== Resolution ===<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 />
== Tropico 5 ==<br />
<br />
=== Blank screen with sound only on startup ===<br />
<br />
Add {{ic|1=MESA_GL_VERSION_OVERRIDE=4.0 MESA_GLSL_VERSION_OVERRIDE=400}} to your [[Steam#Launch options|launch options]].<br />
<br />
== Unity of Command ==<br />
<br />
Requires {{pkg|lib32-pango}}.<br />
<br />
=== Squares ===<br />
<br />
If squares are shown instead of text, try removing {{ic|''gamedir''/bin/libpangoft2-1.0.so.0}}.<br />
<br />
=== No audio ===<br />
<br />
If you get this error:<br />
<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 />
<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 />
== 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 {{ic|1=LC_ALL=C %command%}}<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 />
<br />
Another solution is to disable the Steam runtime: in the launch options for the game, write this: {{ic|1=LD_LIBRARY_PATH="" %command%}}<br />
<br />
Another solution is to prevent Unity from trying to use pulseaudio using {{AUR|pulsenomore}} package from the [[AUR]]. Once it is installed, use the following as launch options :{{ic|/usr/bin/pulsenomore %command%}}<br />
<br />
Some of the affected games: ''Kerbal Space Programm'', ''SUPERHOT'', ''ClusterTruck''<br />
<br />
=== Game launching on wrong monitor in fullscreen mode ===<br />
<br />
Unity games that do not support monitor selection will most likely launch the game on a wrong monitor.<br />
<br />
The problem is that Unity games write the default param {{ic|1=<pref name="UnitySelectMonitor" type="int">-1</pref>}} to the game config file.<br />
<br />
This will lead to the game launching on a non-primary monitor.<br />
<br />
When changing to value into {{ic|1=<pref name="UnitySelectMonitor" type="int">'''0'''</pref>}} for the according game, the game will start on the correct (primary) monitor.<br />
<br />
A Unity game config file usually resides in {{ic|~/.config/unity3d/''CompanyName''/''ProductName''/prefs}}.<br />
<br />
Some of the affected games: ''Cities: Skylines'', ''Tablestop Simulator'', ''Assault Android Cactus'', ''Wasteland 2'', ''Tyranny''.<br />
<br />
Be aware that some games do not support setting that parameter, it will simply be ignored. This is the case for ''Pillars of Eternity'', ''Kentucky Route Zero'', ''Sunless Sea''.<br />
<br />
== Unrest ==<br />
<br />
Requires {{pkg|fluidsynth}}.<br />
<br />
== War Thunder ==<br />
<br />
=== No audio ===<br />
<br />
If there is no audio after launching the game, install {{pkg|pulseaudio-alsa}}.<br />
<br />
=== Blank screen ===<br />
<br />
If having a green or blank screen on startup, add {{ic|1=MESA_GL_VERSION_OVERRIDE=4.1COMPAT}} to your [[Steam#Launch options|launch options]]. [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 />
== Warhammer 40,000: Dawn of War II ==<br />
<br />
Dependencies:<br />
<br />
* {{Pkg|alsa-lib}}<br />
* {{Pkg|librtmp0}}<br />
<br />
The start script does not point to the right direction of {{ic|libasound.so.2}}.<br />
<br />
To fix it open {{ic|''gamedir''/DawnOfWar2.sh}} and replace the following lines:<br />
<br />
{{bc|<nowiki>HAS_LSB_RELEASE=$(command -v lsb_release)<br />
if [ -n "${HAS_LSB_RELEASE}" ] && [ "$(lsb_release -c | cut -f2)" = "trusty" ]; then<br />
LD_PRELOAD_ADDITIONS="/usr/lib/x86_64-linux-gnu/libasound.so.2:${LD_PRELOAD_ADDITIONS}"<br />
fi </nowiki>}}<br />
<br />
with:<br />
<br />
{{bc|1=LD_PRELOAD_ADDITIONS="/usr/lib64/libasound.so.2:${LD_PRELOAD_ADDITIONS}"}}<br />
<br />
== Witcher 2: Assassin of Kings ==<br />
<br />
Dependencies:<br />
<br />
* {{Pkg|lib32-gnutls}}<br />
* {{Pkg|lib32-libcurl-compat}}<br />
* {{Pkg|lib32-libcurl-gnutls}}<br />
* {{Pkg|lib32-sdl2_image}}<br />
* {{Pkg|lib32-sdl2}}<br />
<br />
=== Game does not start ===<br />
<br />
If the game does not run, enable error messages:<br />
<br />
$ cd "$HOME/.steam/root/steamapps/common/the witcher 2"<br />
$ LIBGL_DEBUG=verbose ./witcher2<br />
<br />
== Wizardry 6: Bane of the Cosmic Forge ==<br />
<br />
Requires [[DOSBox]].<br />
<br />
To fix the crash at start, open {{ic|''gamedir''/dosbox_linux/launch_wizardry6.sh}} and:<br />
<br />
* comment the line {{ic|1=export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:./libs}}<br />
* change the beginning of the line starting with {{ic|exec ./dosbox}} to {{ic|exec dosbox}}<br />
<br />
== World of Goo ==<br />
<br />
=== Changing resolution ===<br />
To change the game resolution edit the ''Graphics display'' section in {{ic|''gamedir''/properties/config.txt}}. For example:<br />
<br />
<nowiki><!-- Graphics display --></nowiki><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 />
== XCOM ==<br />
<br />
Dependencies:<br />
<br />
* {{Pkg|librtmp0}}<br />
* {{Pkg|sdl2_image}} (required to enable keyboard functionality in-game)<br />
<br />
=== Hangs on startup ===<br />
<br />
See [[Steam/Troubleshooting#Steam runtime issues]].<br />
<br />
If you are running a [[hybrid graphics]] system, try:<br />
<br />
__GL_THREADED_OPTIMIZATIONS=0 primusrun %command%<br />
<br />
=== Graphical glitches on Intel HD ===<br />
<br />
XCOM may not recognize the SDL2 shared libraries shipped with the Steam runtime.<br />
Check if the binary finds all required files and install missing packages if necessary ({{Pkg|sdl2}} and {{Pkg|sdl2_image}}).<br />
<br />
{{bc|ldd ~/.steam/root/steamapps/common/XCom-Enemy-Unknown/binaries/linux/game.x86_64 | grep "not found"}}<br />
<br />
== Tower Unite ==<br />
<br />
=== Graphical Glitches ===<br />
<br />
This is a known issue, and it occurs because the shaders had not been ported to Linux yet by the developers. To minimize glitches and make the game playable use<br />
<br />
{{bc|-opengl4}}<br />
launch option, set Ocean Quality to "Potato" and Effects Quality to "Low" in game's settings.</div>Dustballhttps://wiki.archlinux.org/index.php?title=Steam/Game-specific_troubleshooting&diff=479490Steam/Game-specific troubleshooting2017-06-09T23:23:21Z<p>Dustball: /* Borderlands 2 */ lib32-openal</p>
<hr />
<div>[[Category:Gaming]]<br />
[[ja:Steam/ゲーム別のトラブルシューティング]]<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 />
<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 />
== Common steps ==<br />
<br />
=== Prepend /usr/lib to LD_LIBRARY_PATH ===<br />
<br />
Add {{ic|1=LD_LIBRARY_PATH="/usr/lib:$LD_LIBRARY_PATH"}} to your [[Steam#Launch options|launch options]].<br />
<br />
=== OpenSSL 1.0 setup ===<br />
<br />
Some Steam games are built against OpenSSL 1.0. [https://bugs.archlinux.org/task/53618]<br />
<br />
Install {{AUR|libopenssl-1.0-compat}} and add {{ic|1=LD_LIBRARY_PATH=/usr/lib/openssl-1.0-compat}} to your [[Steam#Launch options|launch options]].<br />
<br />
=== Adobe Air setup ===<br />
<br />
The package {{AUR|adobe-air-sdk}} installs Adobe Air not in the place where the game expects it to be, fix this by creating the following symlink:<br />
<br />
# ln -s "/opt/adobe-air-sdk/runtimes/air/linux/Adobe AIR" "/opt/Adobe AIR"<br />
<br />
Adobe AIR requires you to accept its EULA:<br />
<br />
$ mkdir -p ~/.appdata/Adobe/AIR<br />
$ echo 2 > ~/.appdata/Adobe/AIR/eulaAccepted<br />
<br />
== Alien Isolation ==<br />
<br />
Symlink {{ic|/usr/lib/libpcre.so}} to {{ic|''gamedir''/lib/x86_64/libpcre.so.3}}, otherwise the game will fail to start.<br />
<br />
== Amnesia: The Dark Descent ==<br />
<br />
Dependencies:<br />
<br />
* {{AUR|lib32-freealut}}<br />
* {{pkg|lib32-glu}}<br />
* {{pkg|lib32-libxmu}}<br />
* {{pkg|lib32-sdl_ttf}}<br />
<br />
== And Yet It Moves ==<br />
<br />
Dependencies:<br />
<br />
* {{Pkg|lib32-libjpeg6-turbo}}<br />
* {{Pkg|lib32-libpng12}}<br />
* {{Pkg|lib32-libtheora}}<br />
* {{Pkg|lib32-libtiff4}}<br />
<br />
=== Game does not start ===<br />
<br />
When the game refuses to launch and prints one of the following error messages:<br />
<br />
readlink: extra operand ‘Yet’<br />
Try 'readlink --help' for more information.<br />
<br />
or<br />
<br />
This script must be run as a user with write priviledges to game directory<br />
<br />
Open {{ic|''gamedir''/AndYetItMovesSteam.sh}} and replace the line:<br />
<br />
ayim_dir="$(dirname "$(readlink -f ${BASH_SOURCE[0]})")"<br />
<br />
with:<br />
<br />
ayim_dir="$(dirname "$(readlink -f "${BASH_SOURCE[0]}")")"<br />
<br />
== Anodyne ==<br />
<br />
Dependencies:<br />
<br />
* {{AUR|adobe-air-sdk}}, follow [[#Adobe Air setup]]<br />
* {{pkg|xterm}} (probably not required)<br />
<br />
===Play with a controller: joy2key configuration===<br />
<br />
Configuration example to play [http://www.anodynegame.com/ Anodyne] with an XBox 360 Wireless Controller<br />
<br />
COMMON<br />
-dev /dev/input/js0<br />
-X<br />
-thresh -18000 18000 -18000 18000 -18000 18000 -18000 18000 -18000 18000 -18000 18000 -18000 18000 -18000 18000<br />
-axis Left Right Up Down blank blank blank blank blank blank blank blank Left Right Up Down<br />
-buttons c x Return<br />
<br />
Save this to {{ic|~/.joy2keyrc}} and start joy2key after you start Anodyne<br />
<br />
joy2key -rcfile ~/.joy2keyrc<br />
<br />
== Aquaria ==<br />
<br />
=== Mouse pointer gets stuck in one direction ===<br />
<br />
If the mouse pointer gets stuck in one direction, make sure {{ic|''gamedir''/usersettings.xml}} contains {{ic|1=<JoystickEnabled on="0" />}}.<br />
<br />
If that does not fix the issue, try unplugging any joysticks or joystick adapter devices you have plugged in.<br />
<br />
== ARK: Survival Evolved ==<br />
<br />
=== Game does not start, displays text window with unreadable text ===<br />
<br />
Add {{ic|1=MESA_GL_VERSION_OVERRIDE=4.0 MESA_GLSL_VERSION_OVERRIDE=400}} to your [[Steam#Launch options|launch options]].<br />
<br />
== Audiosurf 2 ==<br />
<br />
Requires {{pkg|pulseaudio-alsa}}.<br />
<br />
== Binding of Isaac: Rebirth ==<br />
<br />
=== No sound ===<br />
<br />
{{Note|This also helps with Never Alone (Kisima Ingitchuna) and No Time to Explain.}}<br />
<br />
[[#Prepend /usr/lib to LD_LIBRARY_PATH]].<br />
<br />
Adjust the audio levels in the game options.<br />
<br />
== The Book of Unwritten Tales ==<br />
<br />
Dependencies:<br />
<br />
* {{AUR|lib32-jasper}}<br />
* {{AUR|lib32-libxaw}}<br />
<br />
If the game does not start, uncheck: ''Properties > Enable Steam Community In-Game''.<br />
<br />
The game is known to segfault when opening the settings and possibly during or before playing. A workaround from the [http://steamcommunity.com/app/221410/discussions/3/846939071081758230/#p2 Steam discussions] is to replace the game's {{ic|RenderSystem_GL.so}} with one from Debian's repositories. To do that download [https://launchpad.net/ubuntu/+archive/primary/+files/libogre-1.7.4_1.7.4-3_i386.deb this deb file], and extract it with {{AUR|dpkg}}:<br />
<br />
$ dpkg -x libogre-*.deb outdir<br />
<br />
Now replace {{ic|''gamedir''/lib/32/RenderSystem_GL.so}} with the one extracted from the {{ic|.deb}} package.<br />
<br />
== The Book of Unwritten Tales: The Critter Chronicles ==<br />
<br />
See [[#The Book of Unwritten Tales]].<br />
<br />
To prevent the game from crashing at the end credits, change the size of the credits image as described [http://steamcommunity.com/app/221830/discussions/0/828925849276110960/#c810921273836530791 here].<br />
<br />
== Borderlands 2 ==<br />
<br />
=== Migrating saves from other platforms ===<br />
<br />
Borderlands 2 does not support cross-platform Steam Cloud syncing,<br />
you have to manually copy the files between platforms.<br />
Save locations can be found [https://pcgamingwiki.com/wiki/Borderlands_2#Game_data here].<br />
Make sure your user can access the files.<br />
<br />
=== Using Ctrl Key ===<br />
<br />
Borderlands 2 does not allow the {{ic|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 />
<br />
Out of the box you will not be able to log into SHiFT since the game expects certificates to be in {{ic|/usr/lib/ssl}}, which is where Ubuntu stores them. Arch however uses {{ic|/etc/ssl}}.<br />
To resolve the problem, add {{ic|1=SSL_CERT_DIR=/etc/ssl/certs}} to your [[Steam#Launch options|launch options]].<br />
<br />
=== Game crashes nearly instantly ===<br />
<br />
As of lib32-openal version 1.18.0-1, the game crashes instantly. The possible solutions are to downgrade lib32-openal to 1.17.2-1, or to start the game with {{ic|LD_PRELOAD='$HOME/.local/share/Steam/ubuntu12_32/steam-runtime/i386/usr/lib/i386-linux-gnu/libopenal.so.1'}}.<br />
<br />
== Borderlands: The Pre-Sequel ==<br />
<br />
See [[#Logging into SHiFT]].<br />
<br />
=== Keyboard not working ===<br />
<br />
Using [[dwm]], no keyboard input seems to register.<br />
<br />
=== Not starting via Steam ===<br />
<br />
If the game appears as ''Running'', then syncs and closes when you launch it from Steam, try creating a {{ic|steam_appid.txt}} in the game directory<br />
containing {{ic|261640}}. This should resolve the issue and let you start the game directly from the game directory. If that does not work, try using the {{Pkg|steam-native-runtime}}.<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] {{Dead link|2017|05|25}} (replace {{ic|/etc/fonts/conf.d/10-scale-bitmap-fonts.conf}}).<br />
<br />
== Cities Skylines ==<br />
<br />
=== Textures not rendering properly ===<br />
<br />
Add {{ic|1=UNITY_DISABLE_GRAPHICS_DRIVER_WORKAROUNDS=yes}} to your [[Steam#Launch options|launch options]].<br />
<br />
== Civilization V ==<br />
<br />
You need to add {{ic|1=LD_PRELOAD='./libcxxrt.so:/usr/$LIB/libstdc++.so.6' %command%'}} to your [[Steam#Launch options|launch options]].<br />
<br />
[https://github.com/ValveSoftware/steam-for-linux/issues/4379 steam-for-linux issue #4379]<br />
<br />
=== Stuttering sound with PulseAudio ===<br />
<br />
See [[PulseAudio/Troubleshooting#Laggy sound]].<br />
<br />
== Civilization: Beyond earth ==<br />
If you are getting an instant crash/close upon launch, make sure you have the following 32-bit packages installed:<br />
<br />
* {{pkg|lib32-libcurl-compat}}<br />
* {{pkg|lib32-libcurl-gnutls}}<br />
* {{pkg|lib32-openal}}<br />
* {{aur|lib32-intel-tbb}}<br />
<br />
== Civilization VI ==<br />
<br />
As with Civ V, you need to add {{ic|1=LD_PRELOAD='./libcxxrt.so:/usr/$LIB/libstdc++.so.6' %command%'}} to your [[Steam#Launch options|launch options]].<br />
<br />
Follow [[#OpenSSL 1.0 setup]].<br />
<br />
== Deus Ex: Mankind divided ==<br />
<br />
Follow [[#OpenSSL 1.0 setup]].<br />
<br />
== The Clockwork Man ==<br />
<br />
Requires {{pkg|lib32-libidn}}.<br />
<br />
== Company of Heroes 2 ==<br />
<br />
Like with [[#Alien Isolation]] you need to symlink {{ic|/usr/lib/libpcre.so}} to {{ic|''gamedir''/lib/''arch''/libpcre.so.3}}, otherwise the game will fail to start.<br />
<br />
== Counter-Strike: Global Offensive (CS:GO) ==<br />
<br />
=== Game starts on the wrong screen ===<br />
<br />
[https://github.com/ValveSoftware/csgo-osx-linux/issues/60 csgo-osx-linux issue #60]<br />
<br />
If it happens, go into fullscreen windowed or windowed mode and drag the window to the correct monitor. Then go back into fullscreen, the game should now be on the correct monitor.<br />
<br />
=== Cannot reach bottom of the screen on menus ===<br />
<br />
[https://github.com/ValveSoftware/csgo-osx-linux/issues/594 csgo-osx-linux issue #594]<br />
<br />
If you have a secondary monitor you might have a part of your lower screen you cannot reach in menus.<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]] {{pkg|wmctrl}} 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 />
=== Sound is played slightly delayed ===<br />
<br />
[https://github.com/ValveSoftware/csgo-osx-linux/issues/45 csgo-osx-linux issue #45]<br />
<br />
See [[PulseAudio/Troubleshooting#Laggy sound]] for a possible solution.<br />
<br />
=== Mouse not working in-game ===<br />
<br />
If your mouse works in the main menu but not in-game, add<br />
{{ic|1=SDL_VIDEO_X11_DGAMOUSE=0}} to your [[Steam#Launch options|launch options]].<br />
[https://bbs.archlinux.org/viewtopic.php?id=184905]<br />
<br />
=== Brightness slider not working ===<br />
<br />
[[Install]] {{pkg|xorg-xrandr}} and run {{ic|xrandr}} to find out the name of your connected display output.<br />
<br />
Edit {{ic|''gamedir''/csgo.sh}} and add the following lines (adapt ''output_name''):<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 />
=== Microphone not working ===<br />
<br />
[https://github.com/ValveSoftware/csgo-osx-linux/issues/573#issuecomment-174016722 csgo-osx-linux issue #573]<br />
<br />
CS:GO uses the default PulseAudio sound device ignoring what is configured in Steam settings.<br />
<br />
First find out the source name of your microphone (it should start with {{ic|alsa_input.}}):<br />
$ pacmd list-sources<br />
<br />
Then set the default device (change the name accordingly):<br />
$ pacmd set-default-source ''device_name''<br />
<br />
Also lower the microphone level to 60% otherwise you will get some nasty background noise and you will be difficult to understand (change the name accordingly):<br />
$ pacmd set-source-volume ''device_name'' 0x6000<br />
<br />
== Crusader Kings II ==<br />
<br />
x86_64 dependencies:<br />
<br />
* {{pkg|lib32-openssl}}<br />
<br />
=== Locations ===<br />
<br />
The game can be started directly without running Steam by executing {{ic|./ck2}} in its directory.<br />
<br />
Save files are stored in {{ic|~/.paradoxinteractive/Crusader Kings II/}}. Before version 2.03 they were stored in {{ic|~/Documents/Paradox Interactive/Crusader Kings II/save games/}}.<br />
<br />
=== No audio ===<br />
<br />
SDL uses [[PulseAudio]] by default, so to use it with [[ALSA]] you need to set:<br />
<br />
{{hc|~/.pam_environment|2=SDL_AUDIODRIVER=alsa}}<br />
<br />
=== Oddly sized starting window ===<br />
<br />
You can make full screen mode the default by setting {{ic|1=fullscreen=yes}} in {{ic|~/.paradoxinteractive/Crusader Kings II/settings.txt}}.<br />
<br />
== Death Road To Canada ==<br />
<br />
=== No music ===<br />
<br />
[[#Prepend /usr/lib to LD_LIBRARY_PATH]].<br />
<br />
== Defender's Quest: Valley of the Forgotten ==<br />
<br />
Dependencies:<br />
<br />
* {{AUR|adobe-air-sdk}}, follow [[#Adobe Air setup]]<br />
* {{pkg|lib32-libcanberra}}<br />
* {{pkg|xterm}}<br />
<br />
== Dirt ==<br />
<br />
Follow [[#OpenSSL 1.0 setup]].<br />
<br />
== Divinity: Original Sin - Enhanced Edition ==<br />
<br />
=== Game doesn't start when using Bumblebee optirun or primusrun ===<br />
<br />
Edit {{ic|''gamedir''/runner.sh}} to use primusrun:<br />
LD_LIBRARY_PATH="." primusrun ./EoCApp<br />
<br />
== Don't Starve ==<br />
<br />
Dependencies:<br />
<br />
* {{pkg|lib32-flashplugin}}<br />
* {{pkg|lib32-libcurl-gnutls}}<br />
<br />
=== No sound ===<br />
<br />
[[#Prepend /usr/lib to LD_LIBRARY_PATH]].<br />
<br />
In the game, go to the options and adjust the audio levels.<br />
<br />
== Dota 2 ==<br />
<br />
Dependencies:<br />
<br />
* {{AUR|libudev0}}<br />
* {{pkg|libpng12}}<br />
* {{pkg|libtxc_dxtn}}<br />
<br />
=== In-game font is unreadable ===<br />
<br />
Add {{ic|1=MESA_GL_VERSION_OVERRIDE=2.1}} to your [[Steam#Launch options|launch options]].<br />
<br />
=== The game does not start ===<br />
<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 />
<br />
Apparently the game [[#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 />
<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 />
<br />
After a recent Mesa update, Dota 2 stopped working. The error message is:<br />
<br />
SDL_GL_LoadLibrary(NULL) failed: Failed loading libGL.so.1: /usr/lib32/libxcb-dri3.so.0: undefined symbol: xcb_send_fd<br />
<br />
See [[Steam/Troubleshooting#Steam runtime issues]].<br />
<br />
=== Steam overlay ===<br />
<br />
Steam distributes a copy of libxcb which is incompatible with the latest xorg libxcb. See [[Steam/Troubleshooting#Steam runtime issues]],<br />
[https://github.com/ValveSoftware/steam-for-linux/issues/3199], [https://github.com/ValveSoftware/steam-for-linux/issues/3093].<br />
<br />
=== Chinese tips and player names not shown ===<br />
<br />
The Chinese characters in tips and player names are displayed as block characters.<br />
<br />
The problem is caused by the font packages: {{pkg|ttf-dejavu}}, {{pkg|ttf-liberation}} and {{aur|ttf-ms-fonts}}.<br />
<br />
: [https://github.com/ValveSoftware/Dota-2/issues/1688 GitHub Steam issue #1688] {{Dead link|2017|05|25}}<br />
<br />
=== Chinese input method problem ===<br />
<br />
Dota2 is not compatible with CJK IME(Input Method Editor/Enhancer), such as [[Ibus]] and [[Fcitx]].<br />
Chinese characters cannot be typed in Dota2.<br />
<br />
A possible solution is to replace {{ic|''gamedir''/dota 2 beta/bin/libSDL2-2.0.so.0}} with a self-compiled ''libSDL'' that supports fcitx or ibus.<br />
<br />
: [https://forum.ubuntu.com.cn/viewtopic.php?f=34&t=460195 LibSDL+Ibus]<br />
: [https://forum.ubuntu.com.cn/viewtopic.php?f=34&t=466879 LibSDL+Fcitx]<br />
: [https://github.com/timxx/SDL-fcitx LibSDL+Fcitx source]<br />
: [https://github.com/ValveSoftware/Dota-2/issues/1650 The solutions issue] {{Dead link|2017|05|25}}<br />
<br />
== Dwarfs F2P ==<br />
<br />
Dependencies:<br />
<br />
* {{AUR|lib32-libgdiplus}}{{Broken package link|{{aur-mirror|lib32-libgdiplus}}}}<br />
<br />
=== Game does not start ===<br />
<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|''gamedir''/Run.sh}} and change<br />
<br />
export LD_LIBRARY_PATH=.:${LD_LIBRARY_PATH}<br />
<br />
to<br />
<br />
export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:.<br />
<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 removing the following files from the game directory:<br />
<br />
libX11.so.6 libsteam.so libtier0_s.so libvstdlib_s.so steamclient.so<br />
<br />
=== Game crashes ===<br />
<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 />
<br />
Requires {{pkg|lib32-sdl}}.<br />
<br />
=== Sound Issues ===<br />
<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 />
<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 />
<br />
/home/$USER/.steam/root/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 />
<br />
Install {{pkg|lib32-sdl}} from [[multilib]] and Dynamite Jack should start up.<br />
<br />
== Euro Truck Simulator 2 ==<br />
=== Shows only a black screen ===<br />
<br />
Select safe mode when the game starts up.<br />
<br />
== Football Manager 2014 ==<br />
<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 />
<br />
Requires {{pkg|lib32-glu}}.<br />
<br />
This game has 32-bit and 64-bit binaries. For some 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 />
== FTL: Faster than Light ==<br />
<br />
=== Compatibility ===<br />
<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 />
<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 />
<br />
=== Game does not start ===<br />
<br />
You might get an error about missing {{ic|libudev.so.0}}. See [[Steam/Troubleshooting#Steam runtime issues]].<br />
<br />
== Garry's Mod ==<br />
<br />
=== Game does not start ===<br />
<br />
When an error about a missing {{ic|client.so}} appears, try the following:<br />
<br />
$ cd ~/.steam/root/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 />
<br />
If the error mentions a missing library for {{ic|libgcrypt.so.11}}, install {{pkg|lib32-libgcrypt15}}.<br />
<br />
=== Opening some menus causes the game to crash ===<br />
<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 />
<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 the minimum should fix the problem.<br />
<br />
== Gods will be watching ==<br />
<br />
Install {{AUR|lib32-libopenssl-1.0-compat}} and add {{ic|1=LD_LIBRARY_PATH=/usr/lib32/openssl-1.0-compat}} to your [[Steam#Launch options|launch options]].<br />
<br />
== GRID Autosport ==<br />
<br />
Follow [[#OpenSSL 1.0 setup]].<br />
<br />
=== Black screen when trying to play ===<br />
<br />
Add {{ic|1=LC_ALL=C}} to your [[Steam#Launch options|launch options]].<br />
<br />
== Hack 'n' Slash ==<br />
<br />
=== Crashes when trying to load a game ===<br />
<br />
[[#Prepend /usr/lib to LD_LIBRARY_PATH]].<br />
<br />
== Hacker Evolution ==<br />
<br />
Requires {{Pkg|lib32-sdl2_mixer}}.<br />
<br />
== Half-Life 2 and episodes ==<br />
<br />
=== Cyrillic fonts problem ===<br />
<br />
This problem can be solved by deleting "Helvetica" font.<br />
<br />
== Hammerwatch ==<br />
<br />
=== The game does not start via Steam ===<br />
<br />
[[#Prepend /usr/lib to LD_LIBRARY_PATH]].<br />
<br />
=== No sound ===<br />
<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 />
== Halo: Custom Edition ==<br />
<br />
Although not a Steam game, Halo: Custom Edition running under [[Wine]] and/or PlayOnLinux has many audio problems. To mitigate this, install dsound via winetricks or PlayOnLinux. Then, set the in-game "Sound Quality" to medium. If you have installed the campaign extra, this also restores all video cut-scene audio.<br />
<br />
== Harvest: Massive Encounter ==<br />
<br />
Dependencies:<br />
<br />
* {{AUR|lib32-sfml}}<br />
* {{Pkg|lib32-libjpeg6-turbo}}<br />
* {{Pkg|lib32-nvidia-cg-toolkit}}<br />
* {{pkg|lib32-gtk2}}<br />
* {{pkg|lib32-libvorbis}}<br />
* {{pkg|lib32-openal}}<br />
<br />
=== Compatibility ===<br />
<br />
Game refuses to launch and throws you to library installer loop. Just edit {{ic|''gamedir''/run_harvest}} and remove everything but:<br />
<br />
#!/bin/bash<br />
exec ./Harvest<br />
<br />
== Hatoful Boyfriend ==<br />
<br />
=== Japanese text invisible ===<br />
<br />
Install {{pkg|wqy-microhei}} and {{pkg|wqy-microhei-lite}}.<br />
<br />
== Hyper Light Drifter ==<br />
<br />
=== The controller does not work ===<br />
<br />
[[Install]] {{pkg|lib32-sdl2}} and add {{ic|1=LD_PRELOAD=libSDL2.so}} to your [[Steam#Launch options|launch options]].<br />
<br />
See the following Steam Community discussions:<br />
<br />
* [https://steamcommunity.com/app/257850/discussions/1/365163686036494421 Controller Issues]<br />
* [https://steamcommunity.com/app/257850/discussions/1/365163686045397160/ Common Bugs + Known Issues]<br />
<br />
It is suggested to run the ''next_update'' branch to get new fixes,<br />
there however currently is a libcurl segfault keeping it from starting without special workarounds.<br />
<br />
=== Missing libcurl.so.4 or version CURL_OPENSSL_3 not found ===<br />
<br />
[[Install]] {{pkg|lib32-libcurl-compat}} and add {{ic|1=LD_PRELOAD=libcurl.so.3}} to your [[Steam#Launch options|launch options]].<br />
<br />
== The Impossible Game ==<br />
<br />
Dependencies:<br />
<br />
* {{pkg|lib32-sdl2}}<br />
* {{pkg|lib32-sdl2_image}}<br />
<br />
== The Inner World ==<br />
<br />
Requires {{AUR|java-commons-codec}} for sound support.<br />
<br />
=== Bringing up the inventory or main menu ===<br />
<br />
Hold the tab key.<br />
<br />
==== Cutscenes ====<br />
<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 />
Furthermore you need the package {{aur|ffmpeg-compat-55}}.<br />
<br />
There seem to be problems with the Steam overlay. Try to run the game directly with {{ic|''gamedir''/TIW_start.sh}}.<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 />
See the [http://steamcommunity.com/app/251430/discussions/0/611701360817206606/#c611701360827509770 Steam Forums] for details.<br />
<br />
== Interloper ==<br />
<br />
Requires {{pkg|alsa-lib}}.<br />
<br />
=== Game does not start ===<br />
<br />
The game can sometimes segfault due to an incompatibility with the Steam Runtime's {{ic|libasound.so.2}}. See [[Steam/Troubleshooting#Steam runtime issues]].<br />
<br />
== Invisible Apartment ==<br />
<br />
Requires {{pkg|qt5-multimedia}}.<br />
<br />
=== Game does not start ===<br />
<br />
If the game does not run when you launch it via Steam, try to directly run {{ic|./ia1}} in the game directory.<br />
<br />
== Joe Danger 2: The Movie ==<br />
<br />
Requires {{pkg|lib32-libpulse}}.<br />
<br />
=== Compatibility ===<br />
<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 />
<br />
See [[Kerbal Space Program]].<br />
<br />
== Killing Floor ==<br />
<br />
=== Cannot change screen resolution ===<br />
<br />
If trying to modify the resolution in-game crashes your desktop environment, edit {{ic|~/.killingfloor/System/KillingFloor.ini}}:<br />
<br />
[WinDrv.WindowsClient]<br />
WindowedViewportX=''width''<br />
WindowedViewportY=''height''<br />
FullscreenViewportX=''width''<br />
FullscreenViewportY=''height''<br />
MenuViewportX=''width''<br />
MenuViewportY=''height''<br />
<br />
[SDLDrv.SDLClient]<br />
WindowedViewportX=''width''<br />
WindowedViewportY=''height''<br />
FullscreenViewportX=''width''<br />
FullscreenViewportY=''height''<br />
MenuViewportX=''width''<br />
MenuViewportY=''height''<br />
<br />
=== Windowed mode ===<br />
<br />
Uncheck fullscreen in the options menu, and press {{ic|Ctrl+g}} to stop mouse capturing.<br />
<br />
=== Stuttering sound ===<br />
<br />
KillingFloor comes with its own OpenAL library {{ic|''gamedir''/System/openal.so}}.<br />
<br />
Back it up, [[install]] {{pkg|openal}} or {{pkg|lib32-openal}} (if using a 64bit system).<br />
<br />
Then symlink the installed system library ({{ic|/usr/lib32/libopenal.so.1}} or {{ic|/usr/lib/libopenal.so.1}}) to {{ic|openal.so}}.<br />
<br />
== Lethal League ==<br />
<br />
Requires {{Pkg|lib32-glew1.10}}.<br />
<br />
== Life is Strange ==<br />
<br />
Requires {{Pkg|lib32-librtmp0}}.<br />
<br />
== Mark of the Ninja ==<br />
<br />
=== Bad sound ===<br />
<br />
[[#Prepend /usr/lib to LD_LIBRARY_PATH]].<br />
<br />
== Metro: Last Light ==<br />
<br />
The game does not allow you to change its resolution on a multi-monitor setup on GNOME with the AMD Catalyst drivers. A temporary workaround is to disable the side monitors.<br />
Jason over at [http://unencumberedbyfacts.com/2013/11/20/multiple-monitor-gaming-on-linux/ unencumbered by facts] managed to get it working with his multi-monitor setup using a single display server, he however is using Nvidia.<br />
<br />
== Middle-earth: Shadow of Mordor ==<br />
<br />
=== Floating heads ===<br />
<br />
Add {{ic|1=__GL_ShaderPortabilityWarnings=0}} to your [[Steam#Launch options|launch options]].<br />
<br />
== Multiwinia ==<br />
<br />
Requires {{pkg|lib32-openal}}.<br />
<br />
=== Crash on startup ===<br />
<br />
If Multiwinia crashes on startup on X64 systems, force launching the 32-bit executable by replacing {{ic|''gamedir''/run_steam.sh}} with the following script:<br />
<br />
{{bc|<br />
#!/bin/sh<br />
./multiwinia.bin.x86<br />
}}<br />
<br />
See [https://steamcommunity.com/app/1530/discussions/0/864969481950542663/#c558746995160431396].<br />
<br />
== Natural Selection 2 ==<br />
Requires {{pkg|lib32-speex}}.<br />
=== No Sound ===<br />
<br />
If there is no sound in-game. Try installing {{pkg|lib32-sdl}} and {{Pkg|lib32-sdl2}}.<br />
<br />
If this fails, try setting the game's launch options in Steam to:<br />
<br />
LD_LIBRARY_PATH="/usr/lib32:$LD_LIBRARY_PATH" %command%<br />
<br />
== Nuclear Throne ==<br />
<br />
=== Missing libcurl.so.4 or version CURL_OPENSSL_3 not found ===<br />
<br />
[[Install]] {{pkg|lib32-libcurl-compat}} and add {{ic|1=LD_PRELOAD=libcurl.so.3}} to your [[Steam#Launch options|launch options]].<br />
<br />
== Penumbra: Overture ==<br />
<br />
Dependencies:<br />
<br />
* {{pkg|lib32-glu}}<br />
* {{pkg|lib32-libvorbis}}<br />
* {{pkg|lib32-libxft}}<br />
* {{pkg|lib32-openal}}<br />
* {{pkg|lib32-sdl_image}}<br />
* {{pkg|lib32-sdl_ttf}}<br />
<br />
=== Windowed mode ===<br />
<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 />
<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 />
== The Polynomial ==<br />
<br />
Dependencies:<br />
<br />
* {{AUR|ilmbase102-libs}}{{Broken package link|{{aur-mirror|ilmbase102-libs}}}}<br />
* {{AUR|openexr170-libs}}{{Broken package link|{{aur-mirror|openexr170-libs}}}}<br />
<br />
[https://github.com/ValveSoftware/steam-for-linux/issues/2721 Steam for Linux issue #2721]<br />
<br />
=== Segfaults during program start on 64-bit systems ===<br />
<br />
The game segfaults during program start because of the {{ic|LD_LIBRARY_PATH}} setting in the launcher script. Edit {{ic|''gamedir''/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 />
== Portal 2 ==<br />
<br />
=== Game does not start ===<br />
<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}}). See [[Steam/Troubleshooting#Steam runtime issues]].<br />
<br />
A problem with libstdc can be fixed with:<br />
LD_PRELOAD='/usr/$LIB/libstdc++.so.6' %command%<br />
<br />
=== Resolution too low ===<br />
<br />
When the game starts with a resolution so low that you cannot reach the game settings,<br />
start the game in windowed mode by setting the launch option {{ic|-windowed}}.<br />
<br />
== Prison Architect ==<br />
<br />
=== ALSA error when using PulseAudio ===<br />
<br />
The error:<br />
<br />
{{ic|ALSA lib pcm_dmix.c:1018:(snd_pcm_dmix_open) unable to open slave}}<br />
<br />
was resolved by installing:<br />
<br />
* {{pkg|pulseaudio-alsa}}<br />
* {{pkg|lib32-libpulse}}<br />
<br />
per [[PulseAudio#ALSA]].<br />
<br />
== Project Zomboid ==<br />
<br />
Requires {{pkg|jre7-openjdk}}.<br />
<br />
=== No sound ===<br />
<br />
[[#Prepend /usr/lib to LD_LIBRARY_PATH]].<br />
<br />
In the game, go to the options and set all audio to the proper volume.<br />
<br />
== Redshirt ==<br />
<br />
Requires {{pkg|lib32-libpulse}} if you use PulseAudio.<br />
<br />
== Revenge of the Titans ==<br />
<br />
Requires {{pkg|libxtst}} and {{pkg|lib32-libxtst}}.<br />
<br />
== Rock Boshers DX: Directors Cut ==<br />
<br />
Requires {{Pkg|lib32-libcaca}}.<br />
<br />
== Saints Row IV ==<br />
<br />
=== Game fails to launch after update to new Nvidia drivers ===<br />
<br />
Set the launch options for Saints Row IV to:<br />
<br />
{{bc|1=LD_PRELOAD=$LD_PRELOAD:/usr/lib32/libGLX_nvidia.so %command%}}<br />
<br />
=== Game causes GPU lockup with mesa drivers ===<br />
<br />
Saints Rows IV can cause a GPU lockup when trying to play on certain AMD hardware using open source drivers: [https://bugs.freedesktop.org/show_bug.cgi?id=93475 Bug 93475].<br />
<br />
A workaround is to set the launch options to:<br />
<br />
{{bc|1=R600_DEBUG=nosb %command%}}<br />
<br />
== Serious Sam 3: BFE ==<br />
<br />
=== No audio ===<br />
<br />
Try running:<br />
<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 />
== Space Pirates and Zombies ==<br />
<br />
Requires {{pkg|lib32-openal}}.<br />
<br />
=== No audio ===<br />
<br />
Try running:<br />
<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 />
<br />
{{hc|~/.alsoftrc|<nowiki><br />
[general]<br />
drivers = alsa<br />
[alsa]<br />
device = default<br />
capture = default<br />
mmap = true<br />
</nowiki>}}<br />
<br />
== Spacechem ==<br />
<br />
Dependencies:<br />
<br />
* {{Pkg|lib32-sdl_mixer}}<br />
* {{pkg|lib32-sdl_image}}<br />
* {{pkg|lib32-sqlite}}<br />
<br />
=== Game crash ===<br />
<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 the three files {{ic|libSDL-1.2.so.0}}, {{ic|libSDL_image-1.2.so.0}}, {{ic|libSDL_mixer-1.2.so.0}} from the game directory.<br />
<br />
== Splice ==<br />
<br />
Requires {{pkg|glu}}.<br />
<br />
Splice comes with both x86 and x64 binaries. Steam does not have to be running to launch this game.<br />
<br />
== Star Wars Battlefront II ==<br />
<br />
Star Wars Battlefront 2's Steam version running under [[Wine]] has a bug which causes it to take forever to load a game. The solution is to compile a custom Wine version with the patch from this [https://bugs.winehq.org/show_bug.cgi?id=29582#c31 WineHQ bug comment].<br />
<br />
In order to use the patched wine version with PlayOnLinux, copy the completely patched and compiled wine-1.7.55 folder to {{ic|~/.PlayOnLinux/wine/linux-x86/}}.<br />
<br />
== The Stanley Parable ==<br />
<br />
=== Game won't start ===<br />
<br />
As discussed in the Steam store page, remove {{ic|bin/libstdc++.so.6}} from the game folder.<br />
<br />
== Shadow Tactics: Blades of the Shogun ==<br />
<br />
Dependencies:<br />
<br />
* {{pkg|lib32-libstdc++5}}<br />
* {{pkg|lib32-libxcursor}}<br />
* {{pkg|lib32-libxrandr}}<br />
<br />
== Steel Storm: Burning Retribution ==<br />
<br />
=== Start with black screen ===<br />
<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 />
<br />
If you are using an Intel video card, disable S3TC in {{Pkg|driconf}}.<br />
<br />
== Stephen's Sausage Roll ==<br />
<br />
=== No sound ===<br />
<br />
If using [[Steam/Troubleshooting#Native runtime|native libraries]]{{Broken section link}} and {{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 -Qql libpulse <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 (revert any renaming you just did). Browse to the game's directory:<br />
<br />
$ cd "$HOME/.steam/root/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|Only a 0-byte {{ic|libpulse-simple.so.0}} file may be required.}}<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 />
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 />
== Superbrothers: Sword & Sworcery EP ==<br />
<br />
Dependencies:<br />
<br />
* {{pkg|lib32-glu}}<br />
* {{pkg|lib32-libpulse}} if you use PulseAudio<br />
<br />
The game bundles an outdated version of libstdc++ which prevents the game from starting. [http://steamcommunity.com/app/204060/discussions/0/364039785161291413] The following can be observed when you run Steam and S&S from the terminal:<br />
<br />
libGL error: unable to load driver: i965_dri.so<br />
libGL error: driver pointer missing<br />
libGL error: failed to load driver: i965<br />
libGL error: unable to load driver: i965_dri.so<br />
libGL error: driver pointer missing<br />
libGL error: failed to load driver: i965<br />
libGL error: unable to load driver: swrast_dri.so<br />
libGL error: failed to load driver: swrast<br />
<br />
To solve this problem remove {{ic|''gamedir''/lib/libstdc++.so.6*}}. After that the game will use the libstdc++ from Steam.<br />
<br />
== Tabletop Simulator ==<br />
<br />
=== CJK characters not showing in game ===<br />
<br />
Install {{pkg|wqy-microhei}} and {{pkg|wqy-microhei-lite}}.<br />
<br />
== Team Fortress 2 ==<br />
<br />
Requires {{Pkg|lib32-libpng12}}.<br />
<br />
=== HRTF setup ===<br />
<br />
Assuming HRTF (head-related transfer function) has been properly set up in the operating system, HRTF won't be enabled unless you disable the original processing. To do so, use<br />
<br />
dsp_slow_cpu 1<br />
<br />
For best results, also change the following:<br />
<br />
snd_spatialize_roundrobin 1<br />
dsp_enhance_stereo 0<br />
snd_pitchquality 1<br />
<br />
=== Loading screen freeze ===<br />
<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 />
<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 />
<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 />
<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 />
== This War of Mine ==<br />
<br />
=== Game does not start ===<br />
<br />
This happens because of an incompatibility with the newer version of {{ic|lib32-curl}}. To fix the problem you need to remove {{ic|libcurl.so.4}} from the game directory.<br />
<br />
=== Sound glitches with Steam native ===<br />
<br />
The bundled {{ic|libOpenAL}} might not work correctly, try symlinking {{ic|/usr/lib32/libopenal.so}} to {{ic|''gamedir''/libOpenAL.so}}.<br />
<br />
== Ticket to Ride ==<br />
<br />
Dependencies:<br />
<br />
* {{AUR|lib32-gstreamer0.10-base}}<br />
* {{AUR|lib32-pangox-compat}}<br />
<br />
As lib32-gstreamer0.10-base is quite hard to build you can use [[Unofficial_user_repositories#alucryd-multilib|alucryd-multilib]] repo for this package<br />
<br />
== Tomb Raider ==<br />
<br />
=== Game immediately closes when running with steam-native ===<br />
<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 />
<br />
{{bc|~/.steam/root/ubuntu12_32/steam-runtime/run.sh %command%}}<br />
<br />
=== Steam Controller not working in-game===<br />
<br />
If your Steam Controller is correctly recognized and paired but still not working in-game try the following:<br />
<br />
* In Steam, non Big Screen, go to Settings -> Account -> Beta participation -> Change... and in the dropdown select box select Steam Beta Update<br />
* Restart Steam<br />
* Go to Big Screen and start Tomb Raider<br />
<br />
Correctly recognized means you can control desktop mouse and Steam in Big Picture mode and the controller is shown in Big Picture settings<br />
<br />
== Towns / Towns Demo ==<br />
<br />
Requires [[Java]].<br />
<br />
== Transistor ==<br />
<br />
=== Crash on launch / FMOD binding crash / Audio issues ===<br />
<br />
Try running steam with following command<br />
<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 />
<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 in [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 />
== Transmissions: Element 120 ==<br />
<br />
Dependencies:<br />
<br />
* {{Pkg|lib32-libgcrypt15}}<br />
* {{pkg|lib32-libpng12}}<br />
<br />
=== Troubleshooting ===<br />
<br />
Make sure you have all libraries installed. Above the standard set required by Steam runtime, the game requires few additional ones. The typical error message that indicates that is<br />
<br />
AppFramework : Unable to load module vguimatsurface.so!<br />
<br />
To find missing dependencies go into the game directory and run:<br />
<br />
LD_LIBRARY_PATH=bin ldd bin/vguimatsurface.so<br />
<br />
Look for entries that say ''not found''.<br />
<br />
== Trine 2 ==<br />
<br />
Dependencies:<br />
<br />
* {{pkg|lib32-glu}}<br />
* {{pkg|lib32-libxxf86vm}}<br />
* {{pkg|lib32-openal}}<br />
* {{pkg|xorg-xwininfo}}<br />
* {{pkg|lib32-libdrm}}<br />
<br />
* {{pkg|lib32-libpng12}}<br />
* {{pkg|lib32-libwrap}}<br />
<br />
=== Colors ===<br />
<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 />
<br />
=== Sound ===<br />
<br />
{{Accuracy|General settings not specific to this game}}<br />
<br />
If sound plays choppy, try:<br />
<br />
{{hc|/etc/openal/alsoft.conf|<nowiki><br />
drivers=pulse,alsa<br />
frequency=48000<br />
</nowiki>}}<br />
<br />
=== Resolution ===<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 />
== Tropico 5 ==<br />
<br />
=== Blank screen with sound only on startup ===<br />
<br />
Add {{ic|1=MESA_GL_VERSION_OVERRIDE=4.0 MESA_GLSL_VERSION_OVERRIDE=400}} to your [[Steam#Launch options|launch options]].<br />
<br />
== Unity of Command ==<br />
<br />
Requires {{pkg|lib32-pango}}.<br />
<br />
=== Squares ===<br />
<br />
If squares are shown instead of text, try removing {{ic|''gamedir''/bin/libpangoft2-1.0.so.0}}.<br />
<br />
=== No audio ===<br />
<br />
If you get this error:<br />
<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 />
<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 />
== 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 {{ic|1=LC_ALL=C %command%}}<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 />
<br />
Another solution is to disable the Steam runtime: in the launch options for the game, write this: {{ic|1=LD_LIBRARY_PATH="" %command%}}<br />
<br />
Another solution is to prevent Unity from trying to use pulseaudio using {{AUR|pulsenomore}} package from the [[AUR]]. Once it is installed, use the following as launch options :{{ic|/usr/bin/pulsenomore %command%}}<br />
<br />
Some of the affected games: ''Kerbal Space Programm'', ''SUPERHOT'', ''ClusterTruck''<br />
<br />
=== Game launching on wrong monitor in fullscreen mode ===<br />
<br />
Unity games that do not support monitor selection will most likely launch the game on a wrong monitor.<br />
<br />
The problem is that Unity games write the default param {{ic|1=<pref name="UnitySelectMonitor" type="int">-1</pref>}} to the game config file.<br />
<br />
This will lead to the game launching on a non-primary monitor.<br />
<br />
When changing to value into {{ic|1=<pref name="UnitySelectMonitor" type="int">'''0'''</pref>}} for the according game, the game will start on the correct (primary) monitor.<br />
<br />
A Unity game config file usually resides in {{ic|~/.config/unity3d/''CompanyName''/''ProductName''/prefs}}.<br />
<br />
Some of the affected games: ''Cities: Skylines'', ''Tablestop Simulator'', ''Assault Android Cactus'', ''Wasteland 2'', ''Tyranny''.<br />
<br />
Be aware that some games do not support setting that parameter, it will simply be ignored. This is the case for ''Pillars of Eternity'', ''Kentucky Route Zero'', ''Sunless Sea''.<br />
<br />
== Unrest ==<br />
<br />
Requires {{pkg|fluidsynth}}.<br />
<br />
== War Thunder ==<br />
<br />
=== No audio ===<br />
<br />
If there is no audio after launching the game, install {{pkg|pulseaudio-alsa}}.<br />
<br />
=== Blank screen ===<br />
<br />
If having a green or blank screen on startup, add {{ic|1=MESA_GL_VERSION_OVERRIDE=4.1COMPAT}} to your [[Steam#Launch options|launch options]]. [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 />
== Warhammer 40,000: Dawn of War II ==<br />
<br />
Dependencies:<br />
<br />
* {{Pkg|alsa-lib}}<br />
* {{Pkg|librtmp0}}<br />
<br />
The start script does not point to the right direction of {{ic|libasound.so.2}}.<br />
<br />
To fix it open {{ic|''gamedir''/DawnOfWar2.sh}} and replace the following lines:<br />
<br />
{{bc|<nowiki>HAS_LSB_RELEASE=$(command -v lsb_release)<br />
if [ -n "${HAS_LSB_RELEASE}" ] && [ "$(lsb_release -c | cut -f2)" = "trusty" ]; then<br />
LD_PRELOAD_ADDITIONS="/usr/lib/x86_64-linux-gnu/libasound.so.2:${LD_PRELOAD_ADDITIONS}"<br />
fi </nowiki>}}<br />
<br />
with:<br />
<br />
{{bc|1=LD_PRELOAD_ADDITIONS="/usr/lib64/libasound.so.2:${LD_PRELOAD_ADDITIONS}"}}<br />
<br />
== Witcher 2: Assassin of Kings ==<br />
<br />
Dependencies:<br />
<br />
* {{Pkg|lib32-gnutls}}<br />
* {{Pkg|lib32-libcurl-compat}}<br />
* {{Pkg|lib32-libcurl-gnutls}}<br />
* {{Pkg|lib32-sdl2_image}}<br />
* {{Pkg|lib32-sdl2}}<br />
<br />
=== Game does not start ===<br />
<br />
If the game does not run, enable error messages:<br />
<br />
$ cd "$HOME/.steam/root/steamapps/common/the witcher 2"<br />
$ LIBGL_DEBUG=verbose ./witcher2<br />
<br />
== Wizardry 6: Bane of the Cosmic Forge ==<br />
<br />
Requires [[DOSBox]].<br />
<br />
To fix the crash at start, open {{ic|''gamedir''/dosbox_linux/launch_wizardry6.sh}} and:<br />
<br />
* comment the line {{ic|1=export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:./libs}}<br />
* change the beginning of the line starting with {{ic|exec ./dosbox}} to {{ic|exec dosbox}}<br />
<br />
== World of Goo ==<br />
<br />
=== Changing resolution ===<br />
To change the game resolution edit the ''Graphics display'' section in {{ic|''gamedir''/properties/config.txt}}. For example:<br />
<br />
<nowiki><!-- Graphics display --></nowiki><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 />
== XCOM ==<br />
<br />
Dependencies:<br />
<br />
* {{Pkg|librtmp0}}<br />
* {{Pkg|sdl2_image}} (required to enable keyboard functionality in-game)<br />
<br />
=== Hangs on startup ===<br />
<br />
See [[Steam/Troubleshooting#Steam runtime issues]].<br />
<br />
If you are running a [[hybrid graphics]] system, try:<br />
<br />
__GL_THREADED_OPTIMIZATIONS=0 primusrun %command%<br />
<br />
=== Graphical glitches on Intel HD ===<br />
<br />
XCOM may not recognize the SDL2 shared libraries shipped with the Steam runtime.<br />
Check if the binary finds all required files and install missing packages if necessary ({{Pkg|sdl2}} and {{Pkg|sdl2_image}}).<br />
<br />
{{bc|ldd ~/.steam/root/steamapps/common/XCom-Enemy-Unknown/binaries/linux/game.x86_64 | grep "not found"}}<br />
<br />
== Tower Unite ==<br />
<br />
=== Graphical Glitches ===<br />
<br />
This is a known issue, and it occurs because the shaders had not been ported to Linux yet by the developers. To minimize glitches and make the game playable use<br />
<br />
{{bc|-opengl4}}<br />
launch option, set Ocean Quality to "Potato" and Effects Quality to "Low" in game's settings.</div>Dustballhttps://wiki.archlinux.org/index.php?title=AUR_helpers&diff=468859AUR helpers2017-02-23T01:57:52Z<p>Dustball: /* Comparison table */</p>
<hr />
<div>[[Category:Arch User Repository]]<br />
[[de:AUR Hilfsprogramme]]<br />
[[fr:Assistants AUR]]<br />
[[ja:AUR ヘルパー]]<br />
[[ru:AUR helpers]]<br />
[[tr:AUR Yardımcı Uygulamaları]]<br />
[[zh-hans:AUR helpers]]<br />
{{Warning|None of these tools are [https://bbs.archlinux.org/viewtopic.php?pid&#61;828254#p828254 officially] supported by Arch Linux. It is recommended to become familiar with the [[Arch User Repository#Installing packages|manual build process]] in order to be prepared to troubleshoot problems on one's own.}}<br />
<br />
AUR helpers are written to automate certain tasks for the [[Arch User Repository]].<br />
<br />
== Uploading ==<br />
<br />
* [https://gist.github.com/bbidulock/82ab6f5347f021136054 bbidulock's script] — Migrate from a .backup directory with all packages.<br />
* [https://github.com/JonnyJD/PKGBUILDs/blob/master/_bin/aur4_import.sh aur4_import.sh] — Splits a package from a git repository with multiple packages, adding/updating {{ic|.SRCINFO}} for every commit.<br />
* [https://github.com/JonnyJD/PKGBUILDs/blob/master/_bin/aur4_make_submodule.sh aur4_make_submodule.sh] / [https://github.com/alexandre-mbm/arch-pkgs/blob/master/subaur4 subaur4] — Replaces a package in a bigger git repository with an AUR 4 submodule, including {{ic|.SRCINFO}}.<br />
* [https://github.com/ido/packages-archlinux/blob/master/bin/import-to-aur4.sh import-to-aur4] — Splits an existing git repository into multiple AUR 4 packages, all at once, including {{ic|.SRCINFO}} for every commit.<br />
* [https://github.com/Edenhofer/abs/blob/master/aurpublish aurpublish] — Manage AUR packages as [https://raw.githubusercontent.com/git/git/master/contrib/subtree/git-subtree.txt git subtrees]. The [https://github.com/Edenhofer/abs/blob/master/pre-commit.hook generation of {{ic|.SRCINFO}} files, {{ic|PKGBUILD}} checking] and the [https://github.com/Edenhofer/abs/blob/master/prepare-commit-msg.hook creation of a per package commit message template] is left to the git hooks in the same [https://github.com/Edenhofer/abs/blob/master/README.md repo].<br />
<br />
== Build and search ==<br />
<br />
This is a list of helper utilities that search, download and/or build packages.<br />
<br />
* {{App|apacman|A fork of packer.|https://github.com/oshazard/apacman|{{AUR|apacman}}}}<br />
<br />
* {{App|aura|A package manager for Arch Linux written in Haskell.|https://github.com/aurapm/aura|{{AUR|aura}} or {{AUR|aura-bin}} (binary)}}<br />
<br />
* {{App|aurel|2=Search, vote and download AUR packages from Emacs. ([https://bbs.archlinux.org/viewtopic.php?id=177142 Forum page])|3=https://github.com/alezost/aurel<br />
|4={{AUR|aurel-git}}}}<br />
<br />
* {{App|aurget|pacman-like interface to the AUR, without wrapping pacman commands.|https://github.com/pbrisbin/aurget/|{{AUR|aurget}}}}<br />
<br />
* {{App|aurquery|Caching wrapper around the AUR's RPC interface using the python3-aur library.|http://xyne.archlinux.ca/projects/python3-aur|{{AUR|python3-aur}}}}<br />
<br />
* {{App|aurutils|2=Helper tools for the AUR. ([https://bbs.archlinux.org/viewtopic.php?pid=1615428 Forum page])|3=https://github.com/AladW/aurutils|4={{AUR|aurutils}}}}<br />
<br />
* {{App|bauerbill|2=Powerpill/pacman extension with support for building packages from ABS and AUR. ([https://bbs.archlinux.org/viewtopic.php?id=205834 Forum page])|3=http://xyne.archlinux.ca/projects/bauerbill|4={{AUR|bauerbill}}}}<br />
<br />
* {{App|burgaur|A front-end for cower written in Python.|https://github.com/m45t3r/burgaur|{{AUR|burgaur}}}}<br />
<br />
* {{App|cower|2=AUR search and download agent written in C, which also checks for updates and package dependencies. ([https://bbs.archlinux.org/viewtopic.php?id=97137 Forum page])|3=https://github.com/falconindy/cower|4={{AUR|cower}}}}<br />
<br />
* {{App|owlman|2=pacman and cower wrapper ([https://bbs.archlinux.org/viewtopic.php?id=129609 Forum page])|3=https://github.com/baskerville/owlman|4={{AUR|owlman}}}}<br />
<br />
* {{App|pacaur|2=An AUR helper that minimizes user interaction. ([https://bbs.archlinux.org/viewtopic.php?pid=937423 Forum page])|3=https://github.com/rmarquis/pacaur|4={{AUR|pacaur}}}}<br />
<br />
* {{App|packer|2=Wrapper for pacman and the AUR. ([https://bbs.archlinux.org/viewtopic.php?id=88115 Forum page])|3=https://github.com/keenerd/packer|4={{AUR|packer}}}}<br />
<br />
* {{App|pbget|Retrieve source files from the Arch SVN and CVS web interface, the AUR, and the ABS rsync server.|http://xyne.archlinux.ca/projects/pbget|{{AUR|pbget}}}}<br />
<br />
* {{App|PKGBUILDer|An AUR helper with dependency support written in Python 3.|https://github.com/Kwpolska/pkgbuilder|{{AUR|pkgbuilder}}}}<br />
<br />
* {{App|prm|An AUR and ABS helper.|https://git.fleshless.org/prm/|[https://pkg.fleshless.org/prm/plain/PKGBUILD PKGBUILD]}}<br />
<br />
* {{App|repoctl|Tool to help manage local repositories (AUR support).|https://github.com/cassava/repoctl|{{AUR|repoctl}}}}<br />
<br />
* {{App|spinach|An AUR helper written in Bash|http://www.floft.net/code/spinach/|{{AUR|spinach}}}}<br />
<br />
* {{App|trizen|A wrapper for the AUR written in Perl.|https://github.com/trizen/trizen|{{AUR|trizen}}}}<br />
<br />
* {{App|wrapaur|A pacman and AUR wrapper written in bash.||{{AUR|wrapaur}}}}<br />
<br />
* {{App|yaah|Yet another AUR helper|https://bitbucket.org/the_metalgamer/yaah|{{AUR|yaah}}}}<br />
<br />
* {{App|yaourt|A wrapper for the AUR and regular packages.|https://archlinux.fr/yaourt-en|{{AUR|yaourt}}}}<br />
<br />
* {{App|yay|AUR helper written in Go.|https://github.com/Jguer/yay|{{AUR|yay}}}} or {{AUR|yay-bin}} (binary)<br />
<br />
== Maintenance ==<br />
<br />
* {{App|pkgbuild-watch|Looks for changes on the upstream web pages|http://kmkeen.com/pkgbuild-watch|{{AUR|pkgbuild-watch}}}}<br />
<br />
* {{App|pkgbuildup|Helps AUR package maintainers automatically update PKGBUILD files. Supports a template variable syntax.|https://github.com/fasheng/pkgbuildup|{{AUR|pkgbuildup-git}}}}<br />
<br />
* {{App|1=pkgcheck|2=Uses rules in PKGBUILDs to parse upstream version information or looks for changes by checksumming the web page|3=https://bbs.archlinux.org/viewtopic.php?id=162816|4=Repository: [https://github.com/onny/pkgcheck GitHub]}}<br />
<br />
* {{App|pkgoutofdate|Parses the source URL from PKGBUILDs and tries to find new versions of packages by incrementing the version number and sending requests to the web server|https://github.com/anatol/pkgoutofdate|{{AUR|pkgoutofdate-git}}}}<br />
<br />
* {{App|aur-check|Uses the AUR API to find newer versions of your foreign packages|https://gist.github.com/felipec/94752ddd08e1adfb80ac57947982443c}}<br />
<br />
* {{App|updpkgver|Detects upstream releases and updates the PKGBUILD automatically|https://github.com/renatosilva/pactoys/tree/master/source/updpkgver}}<br />
<br />
== Libraries ==<br />
<br />
* {{App|haskell-archlinux|Library to access the AUR and package metadata from the Haskell programming language|http://hackage.haskell.org/package/archlinux|{{AUR|haskell-archlinux}}}}<br />
<br />
* {{App|python3-aur|Python 3 modules for accessing AUR package information and automating AUR interactions.|http://xyne.archlinux.ca/projects/python3-aur|{{AUR|python3-aur}}}}<br />
<br />
== Graphical ==<br />
<br />
* {{App|1=Aarchup|2=Fork of archup. Has the same options as archup plus a few other features. For differences between both please check [https://bbs.archlinux.org/viewtopic.php?id=119129 changelog].|3=https://github.com/aericson/aarchup/|4={{AUR|aarchup}}}}<br />
* {{App|1=Argon|2=Graphical frontend to pacaur, featuring package installation, removal, and updating; and update notifications for both official repository and AUR packages.|3=https://github.com/14mRh4X0r/arch-argon|4={{AUR|argon}}}}<br />
* {{App|1=PkgBrowser|2=Application for searching and browsing Arch packages, showing details on selected packages.|3=https://bitbucket.org/kachelaqa/pkgbrowser/wiki/Home|4={{AUR|pkgbrowser}}}}<br />
<br />
== Comparison table ==<br />
<br />
The columns have the following meaning:<br />
<br />
* ''Secure'': does not [[source]], by default, the PKGBUILD at all, or, before doing so, reminds the user and offers him the opportunity to inspect it manually. Some helpers are known to source PKGBUILDs before the user can inspect them, '''allowing malicious code to be executed'''. ''Optional'' means that there is a command line flag or configuration option to prevent the automatic sourcing before viewing.<br />
* ''Clean build'': does not export new variables that can prevent a successful build process.<br />
* ''Reliable parser'': ability to handle complex packages by using the provided metadata (RPC/.SRCINFO) instead of PKGBUILD [[w:Parsing#Parser|parsing]], such as {{AUR|aws-cli-git}}.<br />
* ''Reliable solver'': ability to correctly solve and build complex dependency chains, such as {{AUR|plasma-git-meta}}.<br />
* ''Split packages'': ability to correctly build and install split packages independently, such as {{AUR|python-nikola}}.<br />
* ''Git clone'': uses git clones instead of downloading tarballs (deprecated since AUR 4).<br />
* ''Syntax'': P stands for [[Pacman]]-like, S for specific.<br />
<br />
{| class="wikitable sortable"<br />
! Name !! Written In !! Secure !! Clean build !! Reliable parser !! Reliable solver !! Split packages !! Git clone !! Shell completion !! Syntax !! Specificity<br />
|-<br />
! apacman<br />
| Bash || {{No}} [https://github.com/oshazard/apacman/issues/8] || {{No}} [https://github.com/oshazard/apacman/search?utf8=%E2%9C%93&q=export] || {{No}} || {{No}} || {{No}} || {{No}} || style="text-align:center;" | None || style="text-align:center;" |P || Fork of ''packer''<br />
|-<br />
! aura<br />
| Haskell || {{Yes}} || {{Yes}} || {{No}} [https://github.com/aurapm/aura/issues/14] || {{No}} || {{No}} [https://github.com/aurapm/aura/issues/353] || {{No}} || style="text-align:center;" | bash/zsh || style="text-align:center;" |P || Downgrade, [[ABS]], [[powerpill]] support, multilingual, requires [[ArchHaskell]]<br />
|-<br />
! aurel<br />
| Emacs Lisp || {{Yes}} || {{Grey|N/A}} || {{Yes}} || {{Grey|N/A}} || {{Grey|N/A}} || {{No}} || style="text-align:center;" | N/A || style="text-align:center;" | S || Emacs integration, no automatic builds<br />
|-<br />
! aurget<br />
| Bash || {{Y|Optional}} || {{Yes}} || {{No}} || {{No}} || {{No}} [https://github.com/pbrisbin/aurget/issues/40] || {{No}} || style="text-align:center;" | bash/zsh || style="text-align:center;" | P || sort by votes<br />
|-<br />
! aurutils<br />
| Bash/C || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}} || style="text-align:center;" | zsh || style="text-align:center;" | S || [[vifm]], [[w:PCRE|PCRE]], [[local repository]], [[package signing]], [[systemd-nspawn]] support<br />
|-<br />
! bauerbill<br />
| Python3 || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}} || style="text-align:center;" | bash/zsh || style="text-align:center;" | P/S || Trust management, ABS support, extends Powerpill<br />
|-<br />
! burgaur<br />
| Python3/C || {{Y|Optional}}, with [[mc]] || {{Yes}} || {{No}} || {{No}} || {{No}} || {{No}} || style="text-align:center;" | None || style="text-align:center;" | P || Wrapper for ''cower''<br />
|-<br />
! cower<br />
| C || {{Yes}} || {{Grey|N/A}} || {{Yes}} || {{Grey|N/A}} || {{Grey|N/A}} || {{No}} || style="text-align:center;" | bash/zsh || style="text-align:center;" | S || No automatic builds, regex support, sort by votes/popularity<br />
|-<br />
! owlman<br />
| Bash/C || {{Yes}} || {{Yes}} || {{Yes}} || {{No}} || {{Y|Partial}} || {{No}} || style="text-align:center;" | None || style="text-align:center;" | S || Wrapper for ''cower''<br />
|-<br />
! pacaur<br />
| Bash/C || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}} || style="text-align:center;" | bash/zsh || style="text-align:center;" | P/S || Minimizes user interaction, multilingual, sort by votes/popularity<br />
|-<br />
! packer<br />
| Bash || {{No}} || {{Yes}} || {{No}} || {{No}} || {{No}} || {{No}} || style="text-align:center;" | None || style="text-align:center;" | P || -<br />
|-<br />
! pbget<br />
| Python3 || {{Yes}} || {{Grey|N/A}} || {{Yes}} || {{Grey|N/A}} || {{Grey|N/A}} || {{Yes}} || style="text-align:center;" | None || style="text-align:center;" | S || No automatic builds<br />
|-<br />
! PKGBUILDer<br />
| Python3 || {{Y|Optional}} || {{Yes}} || {{Yes}} || {{Yes}} || {{Y|Partial}} [https://github.com/Kwpolska/pkgbuilder/issues/39] || {{Yes}} || style="text-align:center;" | None || style="text-align:center;" | P || Automatic builds by default, use {{ic|-F}} to disable; multilingual<br />
|-<br />
! prm<br />
| Bash || {{Yes}} [https://git.fleshless.org/prm/commit/?id=e7252333b07975ea40f526269ce995e375e627bf] || {{Grey|N/A}} || {{Yes}} || {{Grey|N/A}} || {{Grey|N/A}} || {{Yes}} || style="text-align:center;" | None || style="text-align:center;" | S || No automatic builds, ABS support<br />
|-<br />
! repoctl<br />
| Go || {{Yes}} || {{Grey|N/A}} || {{Yes}} [https://github.com/goulash/pacman/blob/master/aur/aur.go] || {{Grey|N/A}} || {{Grey|N/A}} || {{No}} || style="text-align:center;" | zsh || style="text-align:center;" | S || No automatic builds, local repository support<br />
|-<br />
! spinach<br />
| Bash || {{No}} [https://github.com/floft/spinach/blob/master/spinach#L287] || {{Yes}} || {{No}} || {{No}} || {{No}} || {{No}} || style="text-align:center;" | None || style="text-align:center;" | S || -<br />
|-<br />
! trizen<br />
| Perl || {{Yes}} || {{Yes}} || {{Yes}} [https://github.com/trizen/trizen/commit/7ab7ee5f9f1f5d971b731d092fc8e1dd963add4b] || {{No}} || {{Yes}} [https://github.com/trizen/trizen/commit/3c94434c66ede793758f2bf7de84d68e3174e2ac] || {{No}} || style="text-align:center;" | None || style="text-align:center;" | P || AUR comments<br />
|-<br />
! wrapaur<br />
| Bash || {{Yes}} || {{Yes}} || {{No}} || {{No}} || {{No}} || {{Yes}} || style="text-align:center;" | None || style="text-align:center;" | S || Mirror updates, print news and AUR comments<br />
|-<br />
! yaah<br />
| Bash || {{Yes}} || {{Grey|N/A}} || {{Yes}} || {{Grey|N/A}} || {{Grey|N/A}} || {{Y|Optional}} || style="text-align:center;" | bash || style="text-align:center;" | S || No automatic builds<br />
|-<br />
! yaourt<br />
| Bash/C || {{No}} (''yaourt -Si'') [https://github.com/archlinuxfr/yaourt/blob/master/src/lib/pkgbuild.sh.in#L416] || {{No}} [https://lists.archlinux.org/pipermail/aur-general/2015-August/031314.html] || {{No}} || {{No}} [https://github.com/archlinuxfr/yaourt/issues/186] || {{No}} [https://github.com/archlinuxfr/yaourt/issues/85] || {{Y|Optional}} || style="text-align:center;" | bash/zsh/fish || style="text-align:center;" | P || Backup, ABS support, AUR comments, multilingual<br />
|-<br />
! yay<br />
| Go || {{Yes}} || {{Yes}} || {{Yes}} || {{No}} || {{Y|Partial}} || {{No}} || style="text-align:center;" | bash/zsh/fish || style="text-align:center;" | P || sort by votes<br />
|-<br />
|}<br />
<br />
{{Note|1=[[Pacman]] 4.2. introduced architecture specific fields. [http://allanmcrae.com/2014/12/pacman-4-2-released/] However, as of 06 April 2016, [[AurJson]] combines all entries in a single field: {{Bug|48796}}. Helpers relying on the RPC may use the below workarounds to retrieve dependencies:<br />
* {{AUR|bauerbill}} [https://bbs.archlinux.org/viewtopic.php?pid=1617235#p1617235], {{AUR|pkgbuilder}} [https://github.com/Kwpolska/pkgbuilder/blob/65d9d74ef05f8996b81afb1cd005e3c337afa8b2/pkgbuilder/build.py#L198]: Retrieve specific fields from [[.SRCINFO]]<br />
* {{AUR|aurutils}} [https://github.com/AladW/aurutils/issues/80], {{AUR|pacaur}} [https://github.com/rmarquis/pacaur/issues/465], {{AUR|trizen}} [https://github.com/trizen/trizen/commit/6a8ff9dc8cc83af783b8475dfbe89988dbc8a553]: Strip the {{ic|lib32-}} prefix on {{ic|i686}} systems<br />
}}</div>Dustballhttps://wiki.archlinux.org/index.php?title=AUR_helpers&diff=468858AUR helpers2017-02-23T01:28:07Z<p>Dustball: Removed "why yaourt is bad" part</p>
<hr />
<div>[[Category:Arch User Repository]]<br />
[[de:AUR Hilfsprogramme]]<br />
[[fr:Assistants AUR]]<br />
[[ja:AUR ヘルパー]]<br />
[[ru:AUR helpers]]<br />
[[tr:AUR Yardımcı Uygulamaları]]<br />
[[zh-hans:AUR helpers]]<br />
{{Warning|None of these tools are [https://bbs.archlinux.org/viewtopic.php?pid&#61;828254#p828254 officially] supported by Arch Linux. It is recommended to become familiar with the [[Arch User Repository#Installing packages|manual build process]] in order to be prepared to troubleshoot problems on one's own.}}<br />
<br />
AUR helpers are written to automate certain tasks for the [[Arch User Repository]].<br />
<br />
== Uploading ==<br />
<br />
* [https://gist.github.com/bbidulock/82ab6f5347f021136054 bbidulock's script] — Migrate from a .backup directory with all packages.<br />
* [https://github.com/JonnyJD/PKGBUILDs/blob/master/_bin/aur4_import.sh aur4_import.sh] — Splits a package from a git repository with multiple packages, adding/updating {{ic|.SRCINFO}} for every commit.<br />
* [https://github.com/JonnyJD/PKGBUILDs/blob/master/_bin/aur4_make_submodule.sh aur4_make_submodule.sh] / [https://github.com/alexandre-mbm/arch-pkgs/blob/master/subaur4 subaur4] — Replaces a package in a bigger git repository with an AUR 4 submodule, including {{ic|.SRCINFO}}.<br />
* [https://github.com/ido/packages-archlinux/blob/master/bin/import-to-aur4.sh import-to-aur4] — Splits an existing git repository into multiple AUR 4 packages, all at once, including {{ic|.SRCINFO}} for every commit.<br />
* [https://github.com/Edenhofer/abs/blob/master/aurpublish aurpublish] — Manage AUR packages as [https://raw.githubusercontent.com/git/git/master/contrib/subtree/git-subtree.txt git subtrees]. The [https://github.com/Edenhofer/abs/blob/master/pre-commit.hook generation of {{ic|.SRCINFO}} files, {{ic|PKGBUILD}} checking] and the [https://github.com/Edenhofer/abs/blob/master/prepare-commit-msg.hook creation of a per package commit message template] is left to the git hooks in the same [https://github.com/Edenhofer/abs/blob/master/README.md repo].<br />
<br />
== Build and search ==<br />
<br />
This is a list of helper utilities that search, download and/or build packages.<br />
<br />
* {{App|apacman|A fork of packer.|https://github.com/oshazard/apacman|{{AUR|apacman}}}}<br />
<br />
* {{App|aura|A package manager for Arch Linux written in Haskell.|https://github.com/aurapm/aura|{{AUR|aura}} or {{AUR|aura-bin}} (binary)}}<br />
<br />
* {{App|aurel|2=Search, vote and download AUR packages from Emacs. ([https://bbs.archlinux.org/viewtopic.php?id=177142 Forum page])|3=https://github.com/alezost/aurel<br />
|4={{AUR|aurel-git}}}}<br />
<br />
* {{App|aurget|pacman-like interface to the AUR, without wrapping pacman commands.|https://github.com/pbrisbin/aurget/|{{AUR|aurget}}}}<br />
<br />
* {{App|aurquery|Caching wrapper around the AUR's RPC interface using the python3-aur library.|http://xyne.archlinux.ca/projects/python3-aur|{{AUR|python3-aur}}}}<br />
<br />
* {{App|aurutils|2=Helper tools for the AUR. ([https://bbs.archlinux.org/viewtopic.php?pid=1615428 Forum page])|3=https://github.com/AladW/aurutils|4={{AUR|aurutils}}}}<br />
<br />
* {{App|bauerbill|2=Powerpill/pacman extension with support for building packages from ABS and AUR. ([https://bbs.archlinux.org/viewtopic.php?id=205834 Forum page])|3=http://xyne.archlinux.ca/projects/bauerbill|4={{AUR|bauerbill}}}}<br />
<br />
* {{App|burgaur|A front-end for cower written in Python.|https://github.com/m45t3r/burgaur|{{AUR|burgaur}}}}<br />
<br />
* {{App|cower|2=AUR search and download agent written in C, which also checks for updates and package dependencies. ([https://bbs.archlinux.org/viewtopic.php?id=97137 Forum page])|3=https://github.com/falconindy/cower|4={{AUR|cower}}}}<br />
<br />
* {{App|owlman|2=pacman and cower wrapper ([https://bbs.archlinux.org/viewtopic.php?id=129609 Forum page])|3=https://github.com/baskerville/owlman|4={{AUR|owlman}}}}<br />
<br />
* {{App|pacaur|2=An AUR helper that minimizes user interaction. ([https://bbs.archlinux.org/viewtopic.php?pid=937423 Forum page])|3=https://github.com/rmarquis/pacaur|4={{AUR|pacaur}}}}<br />
<br />
* {{App|packer|2=Wrapper for pacman and the AUR. ([https://bbs.archlinux.org/viewtopic.php?id=88115 Forum page])|3=https://github.com/keenerd/packer|4={{AUR|packer}}}}<br />
<br />
* {{App|pbget|Retrieve source files from the Arch SVN and CVS web interface, the AUR, and the ABS rsync server.|http://xyne.archlinux.ca/projects/pbget|{{AUR|pbget}}}}<br />
<br />
* {{App|PKGBUILDer|An AUR helper with dependency support written in Python 3.|https://github.com/Kwpolska/pkgbuilder|{{AUR|pkgbuilder}}}}<br />
<br />
* {{App|prm|An AUR and ABS helper.|https://git.fleshless.org/prm/|[https://pkg.fleshless.org/prm/plain/PKGBUILD PKGBUILD]}}<br />
<br />
* {{App|repoctl|Tool to help manage local repositories (AUR support).|https://github.com/cassava/repoctl|{{AUR|repoctl}}}}<br />
<br />
* {{App|spinach|An AUR helper written in Bash|http://www.floft.net/code/spinach/|{{AUR|spinach}}}}<br />
<br />
* {{App|trizen|A wrapper for the AUR written in Perl.|https://github.com/trizen/trizen|{{AUR|trizen}}}}<br />
<br />
* {{App|wrapaur|A pacman and AUR wrapper written in bash.||{{AUR|wrapaur}}}}<br />
<br />
* {{App|yaah|Yet another AUR helper|https://bitbucket.org/the_metalgamer/yaah|{{AUR|yaah}}}}<br />
<br />
* {{App|yaourt|A wrapper for the AUR and regular packages.|https://archlinux.fr/yaourt-en|{{AUR|yaourt}}}}<br />
<br />
* {{App|yay|AUR helper written in Go.|https://github.com/Jguer/yay|{{AUR|yay}}}} or {{AUR|yay-bin}} (binary)<br />
<br />
== Maintenance ==<br />
<br />
* {{App|pkgbuild-watch|Looks for changes on the upstream web pages|http://kmkeen.com/pkgbuild-watch|{{AUR|pkgbuild-watch}}}}<br />
<br />
* {{App|pkgbuildup|Helps AUR package maintainers automatically update PKGBUILD files. Supports a template variable syntax.|https://github.com/fasheng/pkgbuildup|{{AUR|pkgbuildup-git}}}}<br />
<br />
* {{App|1=pkgcheck|2=Uses rules in PKGBUILDs to parse upstream version information or looks for changes by checksumming the web page|3=https://bbs.archlinux.org/viewtopic.php?id=162816|4=Repository: [https://github.com/onny/pkgcheck GitHub]}}<br />
<br />
* {{App|pkgoutofdate|Parses the source URL from PKGBUILDs and tries to find new versions of packages by incrementing the version number and sending requests to the web server|https://github.com/anatol/pkgoutofdate|{{AUR|pkgoutofdate-git}}}}<br />
<br />
* {{App|aur-check|Uses the AUR API to find newer versions of your foreign packages|https://gist.github.com/felipec/94752ddd08e1adfb80ac57947982443c}}<br />
<br />
* {{App|updpkgver|Detects upstream releases and updates the PKGBUILD automatically|https://github.com/renatosilva/pactoys/tree/master/source/updpkgver}}<br />
<br />
== Libraries ==<br />
<br />
* {{App|haskell-archlinux|Library to access the AUR and package metadata from the Haskell programming language|http://hackage.haskell.org/package/archlinux|{{AUR|haskell-archlinux}}}}<br />
<br />
* {{App|python3-aur|Python 3 modules for accessing AUR package information and automating AUR interactions.|http://xyne.archlinux.ca/projects/python3-aur|{{AUR|python3-aur}}}}<br />
<br />
== Graphical ==<br />
<br />
* {{App|1=Aarchup|2=Fork of archup. Has the same options as archup plus a few other features. For differences between both please check [https://bbs.archlinux.org/viewtopic.php?id=119129 changelog].|3=https://github.com/aericson/aarchup/|4={{AUR|aarchup}}}}<br />
* {{App|1=Argon|2=Graphical frontend to pacaur, featuring package installation, removal, and updating; and update notifications for both official repository and AUR packages.|3=https://github.com/14mRh4X0r/arch-argon|4={{AUR|argon}}}}<br />
* {{App|1=PkgBrowser|2=Application for searching and browsing Arch packages, showing details on selected packages.|3=https://bitbucket.org/kachelaqa/pkgbrowser/wiki/Home|4={{AUR|pkgbrowser}}}}<br />
<br />
== Comparison table ==<br />
<br />
The columns have the following meaning:<br />
<br />
* ''Secure'': does not [[source]], by default, the PKGBUILD at all, or, before doing so, reminds the user and offers him the opportunity to inspect it manually. Some helpers are known to source PKGBUILDs before the user can inspect them, '''allowing malicious code to be executed'''. ''Optional'' means that there is a command line flag or configuration option to prevent the automatic sourcing before viewing.<br />
* ''Clean build'': does not export new variables that can prevent a successful build process.<br />
* ''Reliable parser'': ability to handle complex packages by using the provided metadata (RPC/.SRCINFO) instead of PKGBUILD [[w:Parsing#Parser|parsing]], such as {{AUR|aws-cli-git}}.<br />
* ''Reliable solver'': ability to correctly solve and build complex dependency chains, such as {{AUR|plasma-git-meta}}.<br />
* ''Split packages'': ability to correctly build and install split packages independently, such as {{AUR|python-nikola}}.<br />
* ''Git clone'': uses git clones instead of downloading tarballs (deprecated since AUR 4).<br />
* ''Syntax'': P stands for [[Pacman]]-like, S for specific.<br />
<br />
{| class="wikitable sortable"<br />
! Name !! Written In !! Secure !! Clean build !! Reliable parser !! Reliable solver !! Split packages !! Git clone !! Shell completion !! Syntax !! Specificity<br />
|-<br />
! apacman<br />
| Bash || {{No}} [https://github.com/oshazard/apacman/issues/8] || {{No}} [https://github.com/oshazard/apacman/search?utf8=%E2%9C%93&q=export] || {{No}} || {{No}} || {{No}} || {{No}} || style="text-align:center;" | None || style="text-align:center;" |P || Fork of ''packer''<br />
|-<br />
! aura<br />
| Haskell || {{Yes}} || {{Yes}} || {{No}} [https://github.com/aurapm/aura/issues/14] || {{No}} || {{No}} [https://github.com/aurapm/aura/issues/353] || {{No}} || style="text-align:center;" | bash/zsh || style="text-align:center;" |P || Downgrade, [[ABS]], [[powerpill]] support, multilingual, requires [[ArchHaskell]]<br />
|-<br />
! aurel<br />
| Emacs Lisp || {{Yes}} || {{Grey|N/A}} || {{Yes}} || {{Grey|N/A}} || {{Grey|N/A}} || {{No}} || style="text-align:center;" | N/A || style="text-align:center;" | S || Emacs integration, no automatic builds<br />
|-<br />
! aurget<br />
| Bash || {{Y|Optional}} || {{Yes}} || {{No}} || {{No}} || {{No}} [https://github.com/pbrisbin/aurget/issues/40] || {{No}} || style="text-align:center;" | bash/zsh || style="text-align:center;" | P || sort by votes<br />
|-<br />
! aurutils<br />
| Bash/C || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}} || style="text-align:center;" | zsh || style="text-align:center;" | S || [[vifm]], [[w:PCRE|PCRE]], [[local repository]], [[package signing]], [[systemd-nspawn]] support<br />
|-<br />
! bauerbill<br />
| Python3 || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}} || style="text-align:center;" | bash/zsh || style="text-align:center;" | P/S || Trust management, ABS support, extends Powerpill<br />
|-<br />
! burgaur<br />
| Python3/C || {{Y|Optional}}, with [[mc]] || {{Yes}} || {{No}} || {{No}} || {{No}} || {{No}} || style="text-align:center;" | None || style="text-align:center;" | P || Wrapper for ''cower''<br />
|-<br />
! cower<br />
| C || {{Yes}} || {{Grey|N/A}} || {{Yes}} || {{Grey|N/A}} || {{Grey|N/A}} || {{No}} || style="text-align:center;" | bash/zsh || style="text-align:center;" | S || No automatic builds, regex support, sort by votes/popularity<br />
|-<br />
! owlman<br />
| Bash/C || {{Yes}} || {{Yes}} || {{Yes}} || {{No}} || {{Y|Partial}} || {{No}} || style="text-align:center;" | None || style="text-align:center;" | S || Wrapper for ''cower''<br />
|-<br />
! pacaur<br />
| Bash/C || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}} || style="text-align:center;" | bash/zsh || style="text-align:center;" | P/S || Minimizes user interaction, multilingual, sort by votes/popularity<br />
|-<br />
! packer<br />
| Bash || {{No}} || {{Yes}} || {{No}} || {{No}} || {{No}} || {{No}} || style="text-align:center;" | None || style="text-align:center;" | P || -<br />
|-<br />
! pbget<br />
| Python3 || {{Yes}} || {{Grey|N/A}} || {{Yes}} || {{Grey|N/A}} || {{Grey|N/A}} || {{Yes}} || style="text-align:center;" | None || style="text-align:center;" | S || No automatic builds<br />
|-<br />
! PKGBUILDer<br />
| Python3 || {{Y|Optional}} || {{Yes}} || {{Yes}} || {{Yes}} || {{Y|Partial}} [https://github.com/Kwpolska/pkgbuilder/issues/39] || {{Yes}} || style="text-align:center;" | None || style="text-align:center;" | P || Automatic builds by default, use {{ic|-F}} to disable; multilingual<br />
|-<br />
! prm<br />
| Bash || {{Yes}} [https://git.fleshless.org/prm/commit/?id=e7252333b07975ea40f526269ce995e375e627bf] || {{Grey|N/A}} || {{Yes}} || {{Grey|N/A}} || {{Grey|N/A}} || {{Yes}} || style="text-align:center;" | None || style="text-align:center;" | S || No automatic builds, ABS support<br />
|-<br />
! repoctl<br />
| Go || {{Yes}} || {{Grey|N/A}} || {{Yes}} [https://github.com/goulash/pacman/blob/master/aur/aur.go] || {{Grey|N/A}} || {{Grey|N/A}} || {{No}} || style="text-align:center;" | zsh || style="text-align:center;" | S || No automatic builds, local repository support<br />
|-<br />
! spinach<br />
| Bash || {{No}} [https://github.com/floft/spinach/blob/master/spinach#L287] || {{Yes}} || {{No}} || {{No}} || {{No}} || {{No}} || style="text-align:center;" | None || style="text-align:center;" | S || -<br />
|-<br />
! trizen<br />
| Perl || {{Yes}} || {{Yes}} || {{Yes}} [https://github.com/trizen/trizen/commit/7ab7ee5f9f1f5d971b731d092fc8e1dd963add4b] || {{No}} || {{Yes}} [https://github.com/trizen/trizen/commit/3c94434c66ede793758f2bf7de84d68e3174e2ac] || {{No}} || style="text-align:center;" | None || style="text-align:center;" | P || AUR comments<br />
|-<br />
! wrapaur<br />
| Bash || {{Yes}} || {{Yes}} || {{No}} || {{No}} || {{No}} || {{Yes}} || style="text-align:center;" | None || style="text-align:center;" | S || Mirror updates, print news and AUR comments<br />
|-<br />
! yaah<br />
| Bash || {{Yes}} || {{Grey|N/A}} || {{Yes}} || {{Grey|N/A}} || {{Grey|N/A}} || {{Y|Optional}} || style="text-align:center;" | bash || style="text-align:center;" | S || No automatic builds<br />
|-<br />
! yaourt<br />
| Bash/C || {{No}} (''yaourt -Si'') [https://github.com/archlinuxfr/yaourt/blob/f373121d23d87031a24135fee593115832d803ec/src/lib/aur.sh#L47] || {{No}} [https://lists.archlinux.org/pipermail/aur-general/2015-August/031314.html] || {{No}} || {{No}} [https://github.com/archlinuxfr/yaourt/issues/186] || {{No}} [https://github.com/archlinuxfr/yaourt/issues/85] || {{Y|Optional}} || style="text-align:center;" | bash/zsh/fish || style="text-align:center;" | P || Backup, ABS support, AUR comments, multilingual<br />
|-<br />
! yay<br />
| Go || {{Yes}} || {{Yes}} || {{Yes}} || {{No}} || {{Y|Partial}} || {{No}} || style="text-align:center;" | bash/zsh/fish || style="text-align:center;" | P || sort by votes<br />
|-<br />
|}<br />
<br />
{{Note|1=[[Pacman]] 4.2. introduced architecture specific fields. [http://allanmcrae.com/2014/12/pacman-4-2-released/] However, as of 06 April 2016, [[AurJson]] combines all entries in a single field: {{Bug|48796}}. Helpers relying on the RPC may use the below workarounds to retrieve dependencies:<br />
* {{AUR|bauerbill}} [https://bbs.archlinux.org/viewtopic.php?pid=1617235#p1617235], {{AUR|pkgbuilder}} [https://github.com/Kwpolska/pkgbuilder/blob/65d9d74ef05f8996b81afb1cd005e3c337afa8b2/pkgbuilder/build.py#L198]: Retrieve specific fields from [[.SRCINFO]]<br />
* {{AUR|aurutils}} [https://github.com/AladW/aurutils/issues/80], {{AUR|pacaur}} [https://github.com/rmarquis/pacaur/issues/465], {{AUR|trizen}} [https://github.com/trizen/trizen/commit/6a8ff9dc8cc83af783b8475dfbe89988dbc8a553]: Strip the {{ic|lib32-}} prefix on {{ic|i686}} systems<br />
}}</div>Dustballhttps://wiki.archlinux.org/index.php?title=AUR_helpers&diff=468855AUR helpers2017-02-23T01:06:20Z<p>Dustball: Explanation on why yaourt is bad</p>
<hr />
<div>[[Category:Arch User Repository]]<br />
[[de:AUR Hilfsprogramme]]<br />
[[fr:Assistants AUR]]<br />
[[ja:AUR ヘルパー]]<br />
[[ru:AUR helpers]]<br />
[[tr:AUR Yardımcı Uygulamaları]]<br />
[[zh-hans:AUR helpers]]<br />
{{Warning|None of these tools are [https://bbs.archlinux.org/viewtopic.php?pid&#61;828254#p828254 officially] supported by Arch Linux. It is recommended to become familiar with the [[Arch User Repository#Installing packages|manual build process]] in order to be prepared to troubleshoot problems on one's own.}}<br />
<br />
AUR helpers are written to automate certain tasks for the [[Arch User Repository]].<br />
<br />
== Uploading ==<br />
<br />
* [https://gist.github.com/bbidulock/82ab6f5347f021136054 bbidulock's script] — Migrate from a .backup directory with all packages.<br />
* [https://github.com/JonnyJD/PKGBUILDs/blob/master/_bin/aur4_import.sh aur4_import.sh] — Splits a package from a git repository with multiple packages, adding/updating {{ic|.SRCINFO}} for every commit.<br />
* [https://github.com/JonnyJD/PKGBUILDs/blob/master/_bin/aur4_make_submodule.sh aur4_make_submodule.sh] / [https://github.com/alexandre-mbm/arch-pkgs/blob/master/subaur4 subaur4] — Replaces a package in a bigger git repository with an AUR 4 submodule, including {{ic|.SRCINFO}}.<br />
* [https://github.com/ido/packages-archlinux/blob/master/bin/import-to-aur4.sh import-to-aur4] — Splits an existing git repository into multiple AUR 4 packages, all at once, including {{ic|.SRCINFO}} for every commit.<br />
* [https://github.com/Edenhofer/abs/blob/master/aurpublish aurpublish] — Manage AUR packages as [https://raw.githubusercontent.com/git/git/master/contrib/subtree/git-subtree.txt git subtrees]. The [https://github.com/Edenhofer/abs/blob/master/pre-commit.hook generation of {{ic|.SRCINFO}} files, {{ic|PKGBUILD}} checking] and the [https://github.com/Edenhofer/abs/blob/master/prepare-commit-msg.hook creation of a per package commit message template] is left to the git hooks in the same [https://github.com/Edenhofer/abs/blob/master/README.md repo].<br />
<br />
== Build and search ==<br />
<br />
This is a list of helper utilities that search, download and/or build packages.<br />
<br />
* {{App|apacman|A fork of packer.|https://github.com/oshazard/apacman|{{AUR|apacman}}}}<br />
<br />
* {{App|aura|A package manager for Arch Linux written in Haskell.|https://github.com/aurapm/aura|{{AUR|aura}} or {{AUR|aura-bin}} (binary)}}<br />
<br />
* {{App|aurel|2=Search, vote and download AUR packages from Emacs. ([https://bbs.archlinux.org/viewtopic.php?id=177142 Forum page])|3=https://github.com/alezost/aurel<br />
|4={{AUR|aurel-git}}}}<br />
<br />
* {{App|aurget|pacman-like interface to the AUR, without wrapping pacman commands.|https://github.com/pbrisbin/aurget/|{{AUR|aurget}}}}<br />
<br />
* {{App|aurquery|Caching wrapper around the AUR's RPC interface using the python3-aur library.|http://xyne.archlinux.ca/projects/python3-aur|{{AUR|python3-aur}}}}<br />
<br />
* {{App|aurutils|2=Helper tools for the AUR. ([https://bbs.archlinux.org/viewtopic.php?pid=1615428 Forum page])|3=https://github.com/AladW/aurutils|4={{AUR|aurutils}}}}<br />
<br />
* {{App|bauerbill|2=Powerpill/pacman extension with support for building packages from ABS and AUR. ([https://bbs.archlinux.org/viewtopic.php?id=205834 Forum page])|3=http://xyne.archlinux.ca/projects/bauerbill|4={{AUR|bauerbill}}}}<br />
<br />
* {{App|burgaur|A front-end for cower written in Python.|https://github.com/m45t3r/burgaur|{{AUR|burgaur}}}}<br />
<br />
* {{App|cower|2=AUR search and download agent written in C, which also checks for updates and package dependencies. ([https://bbs.archlinux.org/viewtopic.php?id=97137 Forum page])|3=https://github.com/falconindy/cower|4={{AUR|cower}}}}<br />
<br />
* {{App|owlman|2=pacman and cower wrapper ([https://bbs.archlinux.org/viewtopic.php?id=129609 Forum page])|3=https://github.com/baskerville/owlman|4={{AUR|owlman}}}}<br />
<br />
* {{App|pacaur|2=An AUR helper that minimizes user interaction. ([https://bbs.archlinux.org/viewtopic.php?pid=937423 Forum page])|3=https://github.com/rmarquis/pacaur|4={{AUR|pacaur}}}}<br />
<br />
* {{App|packer|2=Wrapper for pacman and the AUR. ([https://bbs.archlinux.org/viewtopic.php?id=88115 Forum page])|3=https://github.com/keenerd/packer|4={{AUR|packer}}}}<br />
<br />
* {{App|pbget|Retrieve source files from the Arch SVN and CVS web interface, the AUR, and the ABS rsync server.|http://xyne.archlinux.ca/projects/pbget|{{AUR|pbget}}}}<br />
<br />
* {{App|PKGBUILDer|An AUR helper with dependency support written in Python 3.|https://github.com/Kwpolska/pkgbuilder|{{AUR|pkgbuilder}}}}<br />
<br />
* {{App|prm|An AUR and ABS helper.|https://git.fleshless.org/prm/|[https://pkg.fleshless.org/prm/plain/PKGBUILD PKGBUILD]}}<br />
<br />
* {{App|repoctl|Tool to help manage local repositories (AUR support).|https://github.com/cassava/repoctl|{{AUR|repoctl}}}}<br />
<br />
* {{App|spinach|An AUR helper written in Bash|http://www.floft.net/code/spinach/|{{AUR|spinach}}}}<br />
<br />
* {{App|trizen|A wrapper for the AUR written in Perl.|https://github.com/trizen/trizen|{{AUR|trizen}}}}<br />
<br />
* {{App|wrapaur|A pacman and AUR wrapper written in bash.||{{AUR|wrapaur}}}}<br />
<br />
* {{App|yaah|Yet another AUR helper|https://bitbucket.org/the_metalgamer/yaah|{{AUR|yaah}}}}<br />
<br />
* {{App|yaourt|A wrapper for the AUR and regular packages.|https://archlinux.fr/yaourt-en|{{AUR|yaourt}}}}<br />
<br />
* {{App|yay|AUR helper written in Go.|https://github.com/Jguer/yay|{{AUR|yay}}}} or {{AUR|yay-bin}} (binary)<br />
<br />
== Maintenance ==<br />
<br />
* {{App|pkgbuild-watch|Looks for changes on the upstream web pages|http://kmkeen.com/pkgbuild-watch|{{AUR|pkgbuild-watch}}}}<br />
<br />
* {{App|pkgbuildup|Helps AUR package maintainers automatically update PKGBUILD files. Supports a template variable syntax.|https://github.com/fasheng/pkgbuildup|{{AUR|pkgbuildup-git}}}}<br />
<br />
* {{App|1=pkgcheck|2=Uses rules in PKGBUILDs to parse upstream version information or looks for changes by checksumming the web page|3=https://bbs.archlinux.org/viewtopic.php?id=162816|4=Repository: [https://github.com/onny/pkgcheck GitHub]}}<br />
<br />
* {{App|pkgoutofdate|Parses the source URL from PKGBUILDs and tries to find new versions of packages by incrementing the version number and sending requests to the web server|https://github.com/anatol/pkgoutofdate|{{AUR|pkgoutofdate-git}}}}<br />
<br />
* {{App|aur-check|Uses the AUR API to find newer versions of your foreign packages|https://gist.github.com/felipec/94752ddd08e1adfb80ac57947982443c}}<br />
<br />
* {{App|updpkgver|Detects upstream releases and updates the PKGBUILD automatically|https://github.com/renatosilva/pactoys/tree/master/source/updpkgver}}<br />
<br />
== Libraries ==<br />
<br />
* {{App|haskell-archlinux|Library to access the AUR and package metadata from the Haskell programming language|http://hackage.haskell.org/package/archlinux|{{AUR|haskell-archlinux}}}}<br />
<br />
* {{App|python3-aur|Python 3 modules for accessing AUR package information and automating AUR interactions.|http://xyne.archlinux.ca/projects/python3-aur|{{AUR|python3-aur}}}}<br />
<br />
== Graphical ==<br />
<br />
* {{App|1=Aarchup|2=Fork of archup. Has the same options as archup plus a few other features. For differences between both please check [https://bbs.archlinux.org/viewtopic.php?id=119129 changelog].|3=https://github.com/aericson/aarchup/|4={{AUR|aarchup}}}}<br />
* {{App|1=Argon|2=Graphical frontend to pacaur, featuring package installation, removal, and updating; and update notifications for both official repository and AUR packages.|3=https://github.com/14mRh4X0r/arch-argon|4={{AUR|argon}}}}<br />
* {{App|1=PkgBrowser|2=Application for searching and browsing Arch packages, showing details on selected packages.|3=https://bitbucket.org/kachelaqa/pkgbrowser/wiki/Home|4={{AUR|pkgbrowser}}}}<br />
<br />
== Comparison table ==<br />
<br />
The columns have the following meaning:<br />
<br />
* ''Secure'': does not [[source]], by default, the PKGBUILD at all, or, before doing so, reminds the user and offers him the opportunity to inspect it manually. Some helpers are known to source PKGBUILDs before the user can inspect them, '''allowing malicious code to be executed'''. ''Optional'' means that there is a command line flag or configuration option to prevent the automatic sourcing before viewing.<br />
* ''Clean build'': does not export new variables that can prevent a successful build process.<br />
* ''Reliable parser'': ability to handle complex packages by using the provided metadata (RPC/.SRCINFO) instead of PKGBUILD [[w:Parsing#Parser|parsing]], such as {{AUR|aws-cli-git}}.<br />
* ''Reliable solver'': ability to correctly solve and build complex dependency chains, such as {{AUR|plasma-git-meta}}.<br />
* ''Split packages'': ability to correctly build and install split packages independently, such as {{AUR|python-nikola}}.<br />
* ''Git clone'': uses git clones instead of downloading tarballs (deprecated since AUR 4).<br />
* ''Syntax'': P stands for [[Pacman]]-like, S for specific.<br />
<br />
{| class="wikitable sortable"<br />
! Name !! Written In !! Secure !! Clean build !! Reliable parser !! Reliable solver !! Split packages !! Git clone !! Shell completion !! Syntax !! Specificity<br />
|-<br />
! apacman<br />
| Bash || {{No}} [https://github.com/oshazard/apacman/issues/8] || {{No}} [https://github.com/oshazard/apacman/search?utf8=%E2%9C%93&q=export] || {{No}} || {{No}} || {{No}} || {{No}} || style="text-align:center;" | None || style="text-align:center;" |P || Fork of ''packer''<br />
|-<br />
! aura<br />
| Haskell || {{Yes}} || {{Yes}} || {{No}} [https://github.com/aurapm/aura/issues/14] || {{No}} || {{No}} [https://github.com/aurapm/aura/issues/353] || {{No}} || style="text-align:center;" | bash/zsh || style="text-align:center;" |P || Downgrade, [[ABS]], [[powerpill]] support, multilingual, requires [[ArchHaskell]]<br />
|-<br />
! aurel<br />
| Emacs Lisp || {{Yes}} || {{Grey|N/A}} || {{Yes}} || {{Grey|N/A}} || {{Grey|N/A}} || {{No}} || style="text-align:center;" | N/A || style="text-align:center;" | S || Emacs integration, no automatic builds<br />
|-<br />
! aurget<br />
| Bash || {{Y|Optional}} || {{Yes}} || {{No}} || {{No}} || {{No}} [https://github.com/pbrisbin/aurget/issues/40] || {{No}} || style="text-align:center;" | bash/zsh || style="text-align:center;" | P || sort by votes<br />
|-<br />
! aurutils<br />
| Bash/C || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}} || style="text-align:center;" | zsh || style="text-align:center;" | S || [[vifm]], [[w:PCRE|PCRE]], [[local repository]], [[package signing]], [[systemd-nspawn]] support<br />
|-<br />
! bauerbill<br />
| Python3 || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}} || style="text-align:center;" | bash/zsh || style="text-align:center;" | P/S || Trust management, ABS support, extends Powerpill<br />
|-<br />
! burgaur<br />
| Python3/C || {{Y|Optional}}, with [[mc]] || {{Yes}} || {{No}} || {{No}} || {{No}} || {{No}} || style="text-align:center;" | None || style="text-align:center;" | P || Wrapper for ''cower''<br />
|-<br />
! cower<br />
| C || {{Yes}} || {{Grey|N/A}} || {{Yes}} || {{Grey|N/A}} || {{Grey|N/A}} || {{No}} || style="text-align:center;" | bash/zsh || style="text-align:center;" | S || No automatic builds, regex support, sort by votes/popularity<br />
|-<br />
! owlman<br />
| Bash/C || {{Yes}} || {{Yes}} || {{Yes}} || {{No}} || {{Y|Partial}} || {{No}} || style="text-align:center;" | None || style="text-align:center;" | S || Wrapper for ''cower''<br />
|-<br />
! pacaur<br />
| Bash/C || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}} || style="text-align:center;" | bash/zsh || style="text-align:center;" | P/S || Minimizes user interaction, multilingual, sort by votes/popularity<br />
|-<br />
! packer<br />
| Bash || {{No}} || {{Yes}} || {{No}} || {{No}} || {{No}} || {{No}} || style="text-align:center;" | None || style="text-align:center;" | P || -<br />
|-<br />
! pbget<br />
| Python3 || {{Yes}} || {{Grey|N/A}} || {{Yes}} || {{Grey|N/A}} || {{Grey|N/A}} || {{Yes}} || style="text-align:center;" | None || style="text-align:center;" | S || No automatic builds<br />
|-<br />
! PKGBUILDer<br />
| Python3 || {{Y|Optional}} || {{Yes}} || {{Yes}} || {{Yes}} || {{Y|Partial}} [https://github.com/Kwpolska/pkgbuilder/issues/39] || {{Yes}} || style="text-align:center;" | None || style="text-align:center;" | P || Automatic builds by default, use {{ic|-F}} to disable; multilingual<br />
|-<br />
! prm<br />
| Bash || {{Yes}} [https://git.fleshless.org/prm/commit/?id=e7252333b07975ea40f526269ce995e375e627bf] || {{Grey|N/A}} || {{Yes}} || {{Grey|N/A}} || {{Grey|N/A}} || {{Yes}} || style="text-align:center;" | None || style="text-align:center;" | S || No automatic builds, ABS support<br />
|-<br />
! repoctl<br />
| Go || {{Yes}} || {{Grey|N/A}} || {{Yes}} [https://github.com/goulash/pacman/blob/master/aur/aur.go] || {{Grey|N/A}} || {{Grey|N/A}} || {{No}} || style="text-align:center;" | zsh || style="text-align:center;" | S || No automatic builds, local repository support<br />
|-<br />
! spinach<br />
| Bash || {{No}} [https://github.com/floft/spinach/blob/master/spinach#L287] || {{Yes}} || {{No}} || {{No}} || {{No}} || {{No}} || style="text-align:center;" | None || style="text-align:center;" | S || -<br />
|-<br />
! trizen<br />
| Perl || {{Yes}} || {{Yes}} || {{Yes}} [https://github.com/trizen/trizen/commit/7ab7ee5f9f1f5d971b731d092fc8e1dd963add4b] || {{No}} || {{Yes}} [https://github.com/trizen/trizen/commit/3c94434c66ede793758f2bf7de84d68e3174e2ac] || {{No}} || style="text-align:center;" | None || style="text-align:center;" | P || AUR comments<br />
|-<br />
! wrapaur<br />
| Bash || {{Yes}} || {{Yes}} || {{No}} || {{No}} || {{No}} || {{Yes}} || style="text-align:center;" | None || style="text-align:center;" | S || Mirror updates, print news and AUR comments<br />
|-<br />
! yaah<br />
| Bash || {{Yes}} || {{Grey|N/A}} || {{Yes}} || {{Grey|N/A}} || {{Grey|N/A}} || {{Y|Optional}} || style="text-align:center;" | bash || style="text-align:center;" | S || No automatic builds<br />
|-<br />
! yaourt<br />
| Bash/C || {{No}} (''yaourt -Si'') [https://github.com/archlinuxfr/yaourt/blob/f373121d23d87031a24135fee593115832d803ec/src/lib/aur.sh#L47] || {{No}} [https://lists.archlinux.org/pipermail/aur-general/2015-August/031314.html] || {{No}} || {{No}} [https://github.com/archlinuxfr/yaourt/issues/186] || {{No}} [https://github.com/archlinuxfr/yaourt/issues/85] || {{Y|Optional}} || style="text-align:center;" | bash/zsh/fish || style="text-align:center;" | P || Backup, ABS support, AUR comments, multilingual<br />
|-<br />
! yay<br />
| Go || {{Yes}} || {{Yes}} || {{Yes}} || {{No}} || {{Y|Partial}} || {{No}} || style="text-align:center;" | bash/zsh/fish || style="text-align:center;" | P || sort by votes<br />
|-<br />
|}<br />
<br />
{{Note|1=[[Pacman]] 4.2. introduced architecture specific fields. [http://allanmcrae.com/2014/12/pacman-4-2-released/] However, as of 06 April 2016, [[AurJson]] combines all entries in a single field: {{Bug|48796}}. Helpers relying on the RPC may use the below workarounds to retrieve dependencies:<br />
* {{AUR|bauerbill}} [https://bbs.archlinux.org/viewtopic.php?pid=1617235#p1617235], {{AUR|pkgbuilder}} [https://github.com/Kwpolska/pkgbuilder/blob/65d9d74ef05f8996b81afb1cd005e3c337afa8b2/pkgbuilder/build.py#L198]: Retrieve specific fields from [[.SRCINFO]]<br />
* {{AUR|aurutils}} [https://github.com/AladW/aurutils/issues/80], {{AUR|pacaur}} [https://github.com/rmarquis/pacaur/issues/465], {{AUR|trizen}} [https://github.com/trizen/trizen/commit/6a8ff9dc8cc83af783b8475dfbe89988dbc8a553]: Strip the {{ic|lib32-}} prefix on {{ic|i686}} systems<br />
}}<br />
<br />
=== Explanation on why yaourt is bad ===<br />
<br />
As this comes up again and again, here's the explanation: The technical reason for it is that the PKGBUILDs are perfectly valid bash. Yaourt is one of the few AUR helpers that is literally dumb enough to source the PKGBUILD before you can even read it (means if the file is malicious, yaourt offers you to read it after the code has been executed). Most other helpers use other means, for example pacaur uses the AUR RPC to get all it's info, downloads the stuff, offers you to read it and THEN sources the PKGBUILD. This is known for years and the yaourt devs have shown no intent of fixing it.</div>Dustballhttps://wiki.archlinux.org/index.php?title=Talk:OpenVPN&diff=454140Talk:OpenVPN2016-10-16T14:55:17Z<p>Dustball: /* Proposed restructuring */</p>
<hr />
<div>== Missing details ==<br />
<br />
There are some things that I think would have been extremely helpful to add in this article, primarily relating to iptables. For example, in Routing_the_LAN_of_a_client_to_the_server it might have been useful to say, "do something like iptables -t nat -A POSTROUTING -o eth1 -j SNAT --to 10.4.4.30" rather than "Use the iptables NAT feature to masquerade the IP packets."<br />
<br />
I think more handholding would help this article a lot--it certainly would have helped me figure this out much faster. If no one disagrees, I'd like to add several sections on appropriate iptables rules to add. [[User:Buhman|Buhman]] 17:11, 9 April 2012 (EDT)<br />
<br />
:No objections, all constructive contributions are welcome, just remember that an article shouldn't be just a list of instructions: "handholding" is fine as long as it also explains ''why'' something needs to be done, so in your example above the existent sentence should be kept and your iptables line should be presented just as an example. -- [[User:Kynikos|Kynikos]] 08:46, 10 April 2012 (EDT)<br />
<br />
:To be honest, I think this article, the way it is now, uses way too much handholding. (I liked it more the way it was [https://wiki.archlinux.org/index.php?title=OpenVPN&oldid=170796] ). It have things like: "Edit /root/easy-rsa/vars and at a minimum set the KEY_COUNTRY, KEY_PROVINCE, KEY_CITY, KEY_ORG, and KEY_EMAIL parameters (do not leave any of these parameters blank)", instead of just "Edit /root/easy-rsa/vars according to your preferences" <br />
:Maybe the solution could be the path [[Beginners' Guide]] and [[Installation Guide]] took; One, super handholding-type guide, and the other as a checklist-type guide... hmm, maybe I'll write such article [[User:Chrisl|Chrisl]] ([[User talk:Chrisl|talk]]) 18:48, 16 August 2012 (UTC)<br />
<br />
:I have some time to work on this again (vacation), hopefully I'll get at least some more stuff done. If someone wants to add iptables instructions please go ahead. There is some preliminary stuff that Kynikos uncovered :) Too much, too little handholding, it's hard too say, and it looks like opinions differ. Maybe let me be verbose and then try to tighten it up and remove unwanted verbosity? [[User:jhernberg|jhernberg]] 21:50, 16 August 2012 (UTC)<br />
<br />
In any case, the article still needs a lot more information about the various ways that openvpn can be configured, and any help would be very much appreciated...:) [[User:jhernberg|jhernberg]] 21:55, 16 August 2012 (UTC)<br />
<br />
:Well, I have created the checklist-type article, is here: [[OpenVPN Checklist Guide]] Right now, it has lots of things of the old openvpn article, but shorter. The idea is that it have links like "click here to see more details" pointing to the section of a full article explaining something, to avoid repetition. I must add that I think this way is more KISS. [[User:Chrisl|Chrisl]] ([[User talk:Chrisl|talk]]) 04:55, 17 August 2012 (UTC)<br />
<br />
Personally and at the moment I don't have much time nor interest in updating this article. But I also think it could really benefit from having sections written on IPv6, L2 bridging and possibly a related article describing how to use iptables and other firewall software with VPN. I really hope that someone can step up to the plate and write the missing sections and to correct whatever I got wrong! [[User:Jhernberg|Jhernberg]] ([[User talk:Jhernberg|talk]]) 14:33, 14 June 2014 (UTC)<br />
<br />
A piece of missing information that I consider particularly useful is the configuration of credentials for the user, so that he/she doesn't have to type them every time the VPN is started. I found out how to do that in [https://my.hostvpn.com/knowledgebase/22/Save-Password-in-OpenVPN-for-Automatic-Login.html an external site], but I'm wondering: is there is a reason that information is not in the guide, or can I just happily add it? --[[User:Bruno.unna|Bruno.unna]] ([[User talk:Bruno.unna|talk]]) 10:53, 26 August 2016 (UTC)<br />
<br />
:Yes, there is a reason: it's an optional feature. The diy server config example in this article does not use --auth-user-pass-verify scripts, so the client must not provide user/pass. Vpn providers like yours use auth directives as a resource efficient method to permit/deny access to their service. --[[User:Indigo|Indigo]] ([[User talk:Indigo|talk]]) 18:02, 26 August 2016 (UTC)<br />
<br />
::Plus, having a username/password when using the ovpn profiles seems superfluous... after all, we are already using strong keys. I don't see what benefit the username/password provides for security. If anything, it complicates the entire setup. Just my 2 cents [[User:Graysky|Graysky]] ([[User talk:Graysky|talk]]) 18:25, 26 August 2016 (UTC)<br />
<br />
== Link to upstream document instead of duplicating ==<br />
This page is already a little long. OpenVPN has lots of good document [http://openvpn.net/index.php/open-source/documentation.html here]. It is better give some entry point and link to the upstream document instead of duplicate info here. After all, it is Arch Wiki, not OpenVPN wiki. -- [[User:Fengchao|Fengchao]] ([[User talk:Fengchao|talk]]) 03:38, 17 August 2012 (UTC)<br />
<br />
==IPv6==<br />
If someone could add this section, it would be very much appreciated. [[User:Jhernberg|Jhernberg]] ([[User talk:Jhernberg|talk]]) 01:05, 28 June 2014 (UTC)<br />
<br />
== Connecting to vpn server from Android ==<br />
<br />
I recommend using OpenVPN for Android by Arne Schwabe which give allot of detail that can help troubleshooting.<br />
The ovpn file with embedded keys & certificates need to be used, See a proper example in the the link bellow.<br />
The reduced privileges won't work on android and also "key-direction 1" should be added.<br />
Server side configs are the same as in the wiki.<br />
http://dl.dropbox.com/u/6902100/archlinux/openvpn/client-empty.ovpn --[[User:Dhead|Dhead]] ([[User talk:Dhead|talk]]) 22:51, 5 March 2013 (UTC<br />
<br />
== IPv4 forwarding ==<br />
<br />
I'd like to suggest adding a section on IP packet forwarding info to this page. If you follow the instructions for setting up forwarding using iptables and ufw only, it still won't work without forwarding packets. <br />
<br />
Traditionally, this has been a simple process of:<br />
# sysctl net.ipv4.ip_forward=1<br />
<br />
(or editing {{ic|/etc/sysctl.d/30-ipforward.conf}} for a more permanent change) <br />
<br />
But there is a [https://bugs.freedesktop.org/show_bug.cgi?id&#61;89509 bug] right now where systemd-networkd overrides {{ic|net.ipv4.ip_forward}}. This might be good to point out for people trying to setup OpenVPN on Arch. <br />
<br />
As of now, someone setting up OpevVPN could only find this out from from a small link to [[Internet_sharing#Enable_packet_forwarding|enable packet forwarding]] and then catching the bug note on that page. Setting up OpenVPN was a frustrating experience since this was buried; I was stuck on this for several hours, and finally found the solution. <br />
<br />
Thought this might be helpful for others out there. Respectfully, [[User:Jr000|Jr000]] ([[User talk:Jr000|talk]]) 00:13, 29 May 2015 (UTC)<br />
<br />
:[[OpenVPN#Routing_all_client_traffic_through_the_server]] already says "Now you need to enable packet forwarding on the server.", with a link to [[Internet_sharing#Enable_packet_forwarding]] which contains the instructions and the note you mentioned. There is no point in duplicating the instructions, because sooner or later one version would inevitably become outdated/inaccurate. -- [[User:Lahwaacz|Lahwaacz]] ([[User talk:Lahwaacz|talk]]) 09:36, 29 May 2015 (UTC)<br />
<br />
== OpenVPN in a container ==<br />
<br />
This is a good solution instead of messing around with iptables: https://www.youtube.com/watch?v=7Obl8_dozh0&<br />
{{unsigned|03:39, 6 August 2015|Hendry}}<br />
<br />
== Nameserver Order ==<br />
In case VPN provided name servers are appended at the end of {{ic|/etc/resolv.conf}} while using {{pkg|networkmanager-openvpn}}, make sure you don't configure your primary network connection by {{pkg|systemd}} (using {{ic|dhcpcd.service}} for example). It is caused by {{pkg|openresolv}} configuration option {{ic|interface_order}} because one set of nameservers is provided by network interface (for example eth0) and second set of nameservers is provided by NetworkManager interface (yes, that is not a typo, all interfaces configured by NetworkManager are presented to openresolv as one "NetworkManager" interface). You can check which nameservers are provided to openresolv by running<br />
<br />
$ resolvconf -l<br />
<br />
To solve this issue, either disable systemd interface configuration ({{ic|systemctl disable dhcpcd}} for example) or change interface order in {{ic|/etc/resolvconf.conf}} ({{ic|1=interface_order="lo lo[0-9]* NetworkManager"}} for example). [[User:Kenny|Kenny]] ([[User talk:Kenny|talk]]) 15:06, 11 March 2016 (UTC)<br />
<br />
:Interesting point. Yet, it is always difficult to mix different network managers. For a mixed conf not to fail one should probably configure, eg NetworkManager and dhcpcd, to exclude the respective other interface first. Anyhow, as I understand your point, the same ordering issue could arise from any combination of network manager tools, and openvpn is just one application triggering openresolv where it may matter. What do you think about adding your input to [[Resolv.conf#Using_openresolv]] instead? It could then be crosslinked better (from [[OpenVPN#DNS]] and other articles where it may matter). --[[User:Indigo|Indigo]] ([[User talk:Indigo|talk]]) 19:21, 11 March 2016 (UTC)<br />
<br />
::If OpenVPN needs some special ordering of the name servers, isn't the script ({{AUR|openvpn-update-resolv-conf}}) to blame here? If {{Pkg|openresolv}} does not support ordering, the script should not use it in the first place... -- [[User:Lahwaacz|Lahwaacz]] ([[User talk:Lahwaacz|talk]]) 19:45, 11 March 2016 (UTC)<br />
<br />
:::Well, {{Pkg|openresolv}} supports different types of ordering (resolvconf.conf(5)), which is another reason the issue applies more to [[resolv.conf#Using_openresolv]] (ordering for the links). The typical approach for openvpn usually is that the server should (not all do, that would be an openvpn troubleshooting matter) push DNS with a low metric. The metric alone is enough to ensure they are ordered first. --[[User:Indigo|Indigo]] ([[User talk:Indigo|talk]]) 21:17, 11 March 2016 (UTC)<br />
<br />
== Proposed restructuring ==<br />
<br />
Currently, the article on OpenVPN and those surrounding it are a mess at best. There's [[OpenVPN]] itself, of which the first line says "This article describes a basic installation and configuration of OpenVPN, suitable for private and small business use.", yet it lists none of the basic configuration, but only far more extended stuff. To get it running in it's most basic state, you have to go to [[Easy-rsa]] and [[OpenVPN Checklist Guide]], and still haven't found anything useful in the main article. Besides that, there's [[OpenVPN in Linux containers]] and [[OpenVPN Bridge]].<br />
<br />
Thus I propose a rewrite of all of those: The OpenVPN article should contain the basic configuration to get a simple client-server-setup running, and an additional page called "OpenVPN/Tips and tricks", which contains the advanced configurations currently found in [[OpenVPN]], [[OpenVPN in Linux containers]] and [[OpenVPN Bridge]]. [[Easy-rsa]] and [[OpenVPN Checklist Guide]] could then be deleted, as they are merged into [[OpenVPN]].<br />
<br />
The version I propose to take the place of the current [[OpenVPN]] article is [[User:Dustball/OpenVPN]].<br />
<br />
[[User:Dustball|Dustball]] ([[User talk:Dustball|talk]]) 14:28, 16 October 2016 (UTC)<br />
<br />
: Gotta disagree with your assessment that the article is "a mass at best." It could be compartmentalized as you propose, but all key data are here and linked. As to your draft of a bare-bones article, I recommend simply linking the already streamlined [[easy-rsa]] article rather than duplicating any content. Have you drafted the other broken out pages you alluded to in your post as well? [[User:Graysky|Graysky]] ([[User talk:Graysky|talk]]) 14:52, 16 October 2016 (UTC)<br />
<br />
:: In an article stating it describes basic installation and configuration, those parts shouldn't be linked. The other part isn't written yet, I intend to do so tomorrow and link it here again. [[User:Dustball|Dustball]] ([[User talk:Dustball|talk]]) 14:54, 16 October 2016 (UTC)</div>Dustballhttps://wiki.archlinux.org/index.php?title=Talk:OpenVPN&diff=454131Talk:OpenVPN2016-10-16T14:28:11Z<p>Dustball: /* Proposed restructuring */ new section</p>
<hr />
<div>== Missing details ==<br />
<br />
There are some things that I think would have been extremely helpful to add in this article, primarily relating to iptables. For example, in Routing_the_LAN_of_a_client_to_the_server it might have been useful to say, "do something like iptables -t nat -A POSTROUTING -o eth1 -j SNAT --to 10.4.4.30" rather than "Use the iptables NAT feature to masquerade the IP packets."<br />
<br />
I think more handholding would help this article a lot--it certainly would have helped me figure this out much faster. If no one disagrees, I'd like to add several sections on appropriate iptables rules to add. [[User:Buhman|Buhman]] 17:11, 9 April 2012 (EDT)<br />
<br />
:No objections, all constructive contributions are welcome, just remember that an article shouldn't be just a list of instructions: "handholding" is fine as long as it also explains ''why'' something needs to be done, so in your example above the existent sentence should be kept and your iptables line should be presented just as an example. -- [[User:Kynikos|Kynikos]] 08:46, 10 April 2012 (EDT)<br />
<br />
:To be honest, I think this article, the way it is now, uses way too much handholding. (I liked it more the way it was [https://wiki.archlinux.org/index.php?title=OpenVPN&oldid=170796] ). It have things like: "Edit /root/easy-rsa/vars and at a minimum set the KEY_COUNTRY, KEY_PROVINCE, KEY_CITY, KEY_ORG, and KEY_EMAIL parameters (do not leave any of these parameters blank)", instead of just "Edit /root/easy-rsa/vars according to your preferences" <br />
:Maybe the solution could be the path [[Beginners' Guide]] and [[Installation Guide]] took; One, super handholding-type guide, and the other as a checklist-type guide... hmm, maybe I'll write such article [[User:Chrisl|Chrisl]] ([[User talk:Chrisl|talk]]) 18:48, 16 August 2012 (UTC)<br />
<br />
:I have some time to work on this again (vacation), hopefully I'll get at least some more stuff done. If someone wants to add iptables instructions please go ahead. There is some preliminary stuff that Kynikos uncovered :) Too much, too little handholding, it's hard too say, and it looks like opinions differ. Maybe let me be verbose and then try to tighten it up and remove unwanted verbosity? [[User:jhernberg|jhernberg]] 21:50, 16 August 2012 (UTC)<br />
<br />
In any case, the article still needs a lot more information about the various ways that openvpn can be configured, and any help would be very much appreciated...:) [[User:jhernberg|jhernberg]] 21:55, 16 August 2012 (UTC)<br />
<br />
:Well, I have created the checklist-type article, is here: [[OpenVPN Checklist Guide]] Right now, it has lots of things of the old openvpn article, but shorter. The idea is that it have links like "click here to see more details" pointing to the section of a full article explaining something, to avoid repetition. I must add that I think this way is more KISS. [[User:Chrisl|Chrisl]] ([[User talk:Chrisl|talk]]) 04:55, 17 August 2012 (UTC)<br />
<br />
Personally and at the moment I don't have much time nor interest in updating this article. But I also think it could really benefit from having sections written on IPv6, L2 bridging and possibly a related article describing how to use iptables and other firewall software with VPN. I really hope that someone can step up to the plate and write the missing sections and to correct whatever I got wrong! [[User:Jhernberg|Jhernberg]] ([[User talk:Jhernberg|talk]]) 14:33, 14 June 2014 (UTC)<br />
<br />
A piece of missing information that I consider particularly useful is the configuration of credentials for the user, so that he/she doesn't have to type them every time the VPN is started. I found out how to do that in [https://my.hostvpn.com/knowledgebase/22/Save-Password-in-OpenVPN-for-Automatic-Login.html an external site], but I'm wondering: is there is a reason that information is not in the guide, or can I just happily add it? --[[User:Bruno.unna|Bruno.unna]] ([[User talk:Bruno.unna|talk]]) 10:53, 26 August 2016 (UTC)<br />
<br />
:Yes, there is a reason: it's an optional feature. The diy server config example in this article does not use --auth-user-pass-verify scripts, so the client must not provide user/pass. Vpn providers like yours use auth directives as a resource efficient method to permit/deny access to their service. --[[User:Indigo|Indigo]] ([[User talk:Indigo|talk]]) 18:02, 26 August 2016 (UTC)<br />
<br />
::Plus, having a username/password when using the ovpn profiles seems superfluous... after all, we are already using strong keys. I don't see what benefit the username/password provides for security. If anything, it complicates the entire setup. Just my 2 cents [[User:Graysky|Graysky]] ([[User talk:Graysky|talk]]) 18:25, 26 August 2016 (UTC)<br />
<br />
== Link to upstream document instead of duplicating ==<br />
This page is already a little long. OpenVPN has lots of good document [http://openvpn.net/index.php/open-source/documentation.html here]. It is better give some entry point and link to the upstream document instead of duplicate info here. After all, it is Arch Wiki, not OpenVPN wiki. -- [[User:Fengchao|Fengchao]] ([[User talk:Fengchao|talk]]) 03:38, 17 August 2012 (UTC)<br />
<br />
==IPv6==<br />
If someone could add this section, it would be very much appreciated. [[User:Jhernberg|Jhernberg]] ([[User talk:Jhernberg|talk]]) 01:05, 28 June 2014 (UTC)<br />
<br />
== Connecting to vpn server from Android ==<br />
<br />
I recommend using OpenVPN for Android by Arne Schwabe which give allot of detail that can help troubleshooting.<br />
The ovpn file with embedded keys & certificates need to be used, See a proper example in the the link bellow.<br />
The reduced privileges won't work on android and also "key-direction 1" should be added.<br />
Server side configs are the same as in the wiki.<br />
http://dl.dropbox.com/u/6902100/archlinux/openvpn/client-empty.ovpn --[[User:Dhead|Dhead]] ([[User talk:Dhead|talk]]) 22:51, 5 March 2013 (UTC<br />
<br />
== IPv4 forwarding ==<br />
<br />
I'd like to suggest adding a section on IP packet forwarding info to this page. If you follow the instructions for setting up forwarding using iptables and ufw only, it still won't work without forwarding packets. <br />
<br />
Traditionally, this has been a simple process of:<br />
# sysctl net.ipv4.ip_forward=1<br />
<br />
(or editing {{ic|/etc/sysctl.d/30-ipforward.conf}} for a more permanent change) <br />
<br />
But there is a [https://bugs.freedesktop.org/show_bug.cgi?id&#61;89509 bug] right now where systemd-networkd overrides {{ic|net.ipv4.ip_forward}}. This might be good to point out for people trying to setup OpenVPN on Arch. <br />
<br />
As of now, someone setting up OpevVPN could only find this out from from a small link to [[Internet_sharing#Enable_packet_forwarding|enable packet forwarding]] and then catching the bug note on that page. Setting up OpenVPN was a frustrating experience since this was buried; I was stuck on this for several hours, and finally found the solution. <br />
<br />
Thought this might be helpful for others out there. Respectfully, [[User:Jr000|Jr000]] ([[User talk:Jr000|talk]]) 00:13, 29 May 2015 (UTC)<br />
<br />
:[[OpenVPN#Routing_all_client_traffic_through_the_server]] already says "Now you need to enable packet forwarding on the server.", with a link to [[Internet_sharing#Enable_packet_forwarding]] which contains the instructions and the note you mentioned. There is no point in duplicating the instructions, because sooner or later one version would inevitably become outdated/inaccurate. -- [[User:Lahwaacz|Lahwaacz]] ([[User talk:Lahwaacz|talk]]) 09:36, 29 May 2015 (UTC)<br />
<br />
== OpenVPN in a container ==<br />
<br />
This is a good solution instead of messing around with iptables: https://www.youtube.com/watch?v=7Obl8_dozh0&<br />
{{unsigned|03:39, 6 August 2015|Hendry}}<br />
<br />
== Nameserver Order ==<br />
In case VPN provided name servers are appended at the end of {{ic|/etc/resolv.conf}} while using {{pkg|networkmanager-openvpn}}, make sure you don't configure your primary network connection by {{pkg|systemd}} (using {{ic|dhcpcd.service}} for example). It is caused by {{pkg|openresolv}} configuration option {{ic|interface_order}} because one set of nameservers is provided by network interface (for example eth0) and second set of nameservers is provided by NetworkManager interface (yes, that is not a typo, all interfaces configured by NetworkManager are presented to openresolv as one "NetworkManager" interface). You can check which nameservers are provided to openresolv by running<br />
<br />
$ resolvconf -l<br />
<br />
To solve this issue, either disable systemd interface configuration ({{ic|systemctl disable dhcpcd}} for example) or change interface order in {{ic|/etc/resolvconf.conf}} ({{ic|1=interface_order="lo lo[0-9]* NetworkManager"}} for example). [[User:Kenny|Kenny]] ([[User talk:Kenny|talk]]) 15:06, 11 March 2016 (UTC)<br />
<br />
:Interesting point. Yet, it is always difficult to mix different network managers. For a mixed conf not to fail one should probably configure, eg NetworkManager and dhcpcd, to exclude the respective other interface first. Anyhow, as I understand your point, the same ordering issue could arise from any combination of network manager tools, and openvpn is just one application triggering openresolv where it may matter. What do you think about adding your input to [[Resolv.conf#Using_openresolv]] instead? It could then be crosslinked better (from [[OpenVPN#DNS]] and other articles where it may matter). --[[User:Indigo|Indigo]] ([[User talk:Indigo|talk]]) 19:21, 11 March 2016 (UTC)<br />
<br />
::If OpenVPN needs some special ordering of the name servers, isn't the script ({{AUR|openvpn-update-resolv-conf}}) to blame here? If {{Pkg|openresolv}} does not support ordering, the script should not use it in the first place... -- [[User:Lahwaacz|Lahwaacz]] ([[User talk:Lahwaacz|talk]]) 19:45, 11 March 2016 (UTC)<br />
<br />
:::Well, {{Pkg|openresolv}} supports different types of ordering (resolvconf.conf(5)), which is another reason the issue applies more to [[resolv.conf#Using_openresolv]] (ordering for the links). The typical approach for openvpn usually is that the server should (not all do, that would be an openvpn troubleshooting matter) push DNS with a low metric. The metric alone is enough to ensure they are ordered first. --[[User:Indigo|Indigo]] ([[User talk:Indigo|talk]]) 21:17, 11 March 2016 (UTC)<br />
<br />
== Proposed restructuring ==<br />
<br />
Currently, the article on OpenVPN and those surrounding it are a mess at best. There's [[OpenVPN]] itself, of which the first line says "This article describes a basic installation and configuration of OpenVPN, suitable for private and small business use.", yet it lists none of the basic configuration, but only far more extended stuff. To get it running in it's most basic state, you have to go to [[Easy-rsa]] and [[OpenVPN Checklist Guide]], and still haven't found anything useful in the main article. Besides that, there's [[OpenVPN in Linux containers]] and [[OpenVPN Bridge]].<br />
<br />
Thus I propose a rewrite of all of those: The OpenVPN article should contain the basic configuration to get a simple client-server-setup running, and an additional page called "OpenVPN/Tips and tricks", which contains the advanced configurations currently found in [[OpenVPN]], [[OpenVPN in Linux containers]] and [[OpenVPN Bridge]]. [[Easy-rsa]] and [[OpenVPN Checklist Guide]] could then be deleted, as they are merged into [[OpenVPN]].<br />
<br />
The version I propose to take the place of the current [[OpenVPN]] article is [[User:Dustball/OpenVPN]].<br />
<br />
[[User:Dustball|Dustball]] ([[User talk:Dustball|talk]]) 14:28, 16 October 2016 (UTC)</div>Dustballhttps://wiki.archlinux.org/index.php?title=User:Dustball/OpenVPN&diff=454121User:Dustball/OpenVPN2016-10-16T13:56:16Z<p>Dustball: /* Install OpenVPN */</p>
<hr />
<div>[[Category:Virtual Private Network]]<br />
[[de:OpenVPN]]<br />
[[ja:OpenVPN]]<br />
[[ru:OpenVPN]]<br />
[[zh-CN:OpenVPN]]<br />
{{Related articles start}}<br />
{{Related|OpenVPN in Linux containers}}<br />
{{Related|Easy-rsa}}<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 />
<br />
== Install OpenVPN ==<br />
<br />
[[Install]] the {{Pkg|openvpn}} package. Any computer that generates keys and certificates needs {{Pkg|easy-rsa}} as well.<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 />
<br />
=== Prepare the data ===<br />
<br />
* Copy {{ic|/etc/easy-rsa}} to {{ic|/etc/openvpn/easy-rsa}} and cd there.<br />
* Run {{bc|# easyrsa init-pki}}<br />
* If you want to edit variables like the key size, organizational fields, or expire time (among others), edit the {{ic|vars}} file.<br />
* Clean up any previous keys if you messed up: {{bc|# easyrsa clean-all}}<br />
The following steps all take place inside the copied {{ic|/etc/openvpn/easy-rsa}} directory. Replace "servername" and "clientname" accordingly.<br />
<br />
== Server side configuration ==<br />
<br />
=== Generating the certificates ===<br />
<br />
Initialize a new PKI and generate a CA keypair that will be used to sign certificates:<br />
{{bc|# easyrsa build-ca}}<br />
<br />
Generate the needed server-files:<br />
{{bc|# easyrsa gen-dh}}<br />
{{bc|# openvpn --genkey --secret /etc/openvpn/ta.key}}<br />
{{bc|# easyrsa build-server-full servername nopass}}<br />
<br />
Note the "nopass" option. This can be left out, but after starting the server you will need to enter the password by running {{ic|systemd-tty-ask-password-agent}} for the VPN to fully start. On the server side, this is usually less of an issue as it should rarely need to be rebooted.<br />
<br />
Copy the {{ic|/etc/openvpn/easy-rsa/pki/issued/servername.crt}}, {{ic|/etc/openvpn/easy-rsa/pki/private/servername.key}}, {{ic|/etc/openvpn/easy-rsa/pki/ca.crt}} and {{ic|/etc/openvpn/easy-rsa/pki/dh.pem}} files to {{ic|/etc/openvpn/}}.<br />
<br />
<br />
=== Edit the configuration file ===<br />
<br />
Copy {{ic|/usr/share/openvpn/examples/server.conf}} to {{ic|/etc/openvpn/}} and edit it. For a basic configuration, you will need to edit at least these four lines:<br />
<br />
ca ca.crt # This should be the default.<br />
cert servername.crt<br />
key servername.key<br />
dh dh.pem # The default reads "dh2048.pem"<br />
<br />
<br />
== Client side configuration ==<br />
<br />
This can be done on the server or the client. If the server is under your control, generating the keys on the server requires you to only move the files once.<br />
<br />
<br />
=== Generating client-keys on the server ===<br />
<br />
Cd into {{ic|/etc/openvpn/easy-rsa/}} and run {{ic|easyrsa build-client-full clientname nopass}}. The {{ic|nopass}}-option again allows the VPN to connect without asking for a password. Otherwise the password must be entered via {{ic|systemd-tty-ask-password-agent}} after the OpenVPN client starts. Transfer {{ic|/etc/openvpn/easy-rsa/pki/issued/clientname.crt}}, {{ic|/etc/openvpn/easy-rsa/pki/private/clientname.key}}, {{ic|/etc/openvpn/easy-rsa/pki/ca.crt}} and {{ic|/etc/openvpn/easy-rsa/pki/ta.key}} to {{ic|/etc/openvpn/}} on the client.<br />
<br />
<br />
=== Generating client-keys on the client ===<br />
<br />
Run {{ic|easyrsa gen-req clientname nopass}}. Send the newly generated {{ic|/etc/openvpn/easy-rsa/pki/reqs/clientname.req}} to the server and import and sign them with:<br />
{{bc|easyrsa import-req /path/to/clientname.req clientname}}<br />
{{bc|easyrsa sign-req client clientname}}<br />
<br />
Transfer {{ic|/etc/openvpn/easy-rsa/pki/issued/clientname.crt}}, {{ic|/etc/openvpn/easy-rsa/pki/private/clientname.key}}, {{ic|/etc/openvpn/easy-rsa/pki/ca.crt}} and {{ic|/etc/openvpn/easy-rsa/pki/ta.key}} from the server to {{ic|/etc/openvpn/}} on the client.<br />
<br />
<br />
=== Edit the configuration file ===<br />
<br />
Copy {{ic|/usr/share/openvpn/examples/server.conf}} to {{ic|/etc/openvpn/}} and edit it. For a basic configuration, you will need to edit at least these four lines:<br />
<br />
ca ca.crt # This should be the default.<br />
cert clientname.crt<br />
key clientname.key<br />
dh dh.pem # The default reads "dh2048.pem"</div>Dustballhttps://wiki.archlinux.org/index.php?title=User:Dustball/OpenVPN&diff=454116User:Dustball/OpenVPN2016-10-16T13:46:42Z<p>Dustball: Created page with "Category:Virtual Private Network de:OpenVPN ja:OpenVPN ru:OpenVPN zh-CN:OpenVPN {{Related articles start}} {{Related|OpenVPN in Linux containers}} {{Relate..."</p>
<hr />
<div>[[Category:Virtual Private Network]]<br />
[[de:OpenVPN]]<br />
[[ja:OpenVPN]]<br />
[[ru:OpenVPN]]<br />
[[zh-CN:OpenVPN]]<br />
{{Related articles start}}<br />
{{Related|OpenVPN in Linux containers}}<br />
{{Related|Easy-rsa}}<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 />
<br />
== Install OpenVPN ==<br />
<br />
[[Install]] the {{Pkg|openvpn}} package. On the server, {{Pkg|easy-rsa}} is needed as well.<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 />
<br />
=== Prepare the data ===<br />
<br />
* Copy {{ic|/etc/easy-rsa}} to {{ic|/etc/openvpn/easy-rsa}} and cd there.<br />
*Run {{bc|# easyrsa init-pki}}<br />
* Edit the {{ic|vars}} and {{ic|openssl-1.0.cnf}} files with the information you want.<br />
* Clean up any previous keys if you messed up: {{bc|# easyrsa clean-all}}<br />
The following steps all take place inside the copied {{ic|/etc/openvpn/easy-rsa}} directory. Replace "servername" and "clientname" accordingly.<br />
<br />
<br />
== Server side configuration ==<br />
<br />
=== Generating the certificates ===<br />
<br />
Initialize a new PKI and generate a CA keypair that will be used to sign certificates:<br />
{{bc|# easyrsa build-ca}}<br />
<br />
Generate the needed server-files:<br />
{{bc|# easyrsa gen-dh}}<br />
{{bc|# openvpn --genkey --secret /etc/openvpn/ta.key}}<br />
{{bc|# easyrsa build-server-full servername nopass}}<br />
<br />
Note the "nopass" option. This can be left out, but after starting the server you will need to enter the password by running {{ic|systemd-tty-ask-password-agent}} for the VPN to fully start. On the server side, this is usually less of an issue as it should rarely need to be rebooted.<br />
<br />
Copy the {{ic|/etc/openvpn/easy-rsa/pki/issued/servername.crt}}, {{ic|/etc/openvpn/easy-rsa/pki/private/servername.key}}, {{ic|/etc/openvpn/easy-rsa/pki/ca.crt}} and {{ic|/etc/openvpn/easy-rsa/pki/dh.pem}} files to {{ic|/etc/openvpn/}}.<br />
<br />
<br />
=== Edit the configuration file ===<br />
<br />
Copy {{ic|/usr/share/openvpn/examples/server.conf}} to {{ic|/etc/openvpn/}} and edit it. For a basic configuration, you will need to edit at least these four lines:<br />
<br />
ca ca.crt # This should be the default.<br />
cert servername.crt<br />
key servername.key<br />
dh dh.pem # The default reads "dh2048.pem"<br />
<br />
<br />
== Client side configuration ==<br />
<br />
This can be done on the server or the client. If the server is under your control, generating the keys on the server requires you to only move the files once.<br />
<br />
<br />
=== Generating client-keys on the server ===<br />
<br />
Cd into {{ic|/etc/openvpn/easy-rsa/}} and run {{ic|easyrsa build-client-full clientname nopass}}. The {{ic|nopass}}-option again allows the VPN to connect without asking for a password. Otherwise the password must be entered via {{ic|systemd-tty-ask-password-agent}} after the OpenVPN client starts. Transfer {{ic|/etc/openvpn/easy-rsa/pki/issued/clientname.crt}}, {{ic|/etc/openvpn/easy-rsa/pki/private/clientname.key}}, {{ic|/etc/openvpn/easy-rsa/pki/ca.crt}} and {{ic|/etc/openvpn/easy-rsa/pki/ta.key}} to {{ic|/etc/openvpn/}} on the client.<br />
<br />
<br />
=== Generating client-keys on the client ===<br />
<br />
Run {{ic|easyrsa gen-req clientname nopass}}. Send the newly generated {{ic|/etc/openvpn/easy-rsa/pki/reqs/clientname.req}} to the server and import and sign them with:<br />
{{bc|easyrsa import-req /path/to/clientname.req clientname}}<br />
{{bc|easyrsa sign-req client clientname}}<br />
<br />
Transfer {{ic|/etc/openvpn/easy-rsa/pki/issued/clientname.crt}}, {{ic|/etc/openvpn/easy-rsa/pki/private/clientname.key}}, {{ic|/etc/openvpn/easy-rsa/pki/ca.crt}} and {{ic|/etc/openvpn/easy-rsa/pki/ta.key}} from the server to {{ic|/etc/openvpn/}} on the client.<br />
<br />
<br />
=== Edit the configuration file ===<br />
<br />
Copy {{ic|/usr/share/openvpn/examples/server.conf}} to {{ic|/etc/openvpn/}} and edit it. For a basic configuration, you will need to edit at least these four lines:<br />
<br />
ca ca.crt # This should be the default.<br />
cert clientname.crt<br />
key clientname.key<br />
dh dh.pem # The default reads "dh2048.pem"</div>Dustballhttps://wiki.archlinux.org/index.php?title=OpenVPN/Checklist_guide&diff=454101OpenVPN/Checklist guide2016-10-16T10:54:43Z<p>Dustball: It's "easyrsa", not "easy-rsa".</p>
<hr />
<div>[[Category:Virtual Private Network]]<br />
This article summarizes the install process required for OpenVPN. See [[OpenVPN]] instead for a walkthrough.<br />
<br />
==Install==<br />
<br />
[[Install]] the packages {{Pkg|openvpn}} and {{Pkg|easy-rsa}} from the [[official repositories]].<br />
<br />
==Prepare data==<br />
<br />
* Copy {{ic|/etc/easy-rsa}} to {{ic|/etc/openvpn/easy-rsa}} and cd there<br />
* Edit the {{ic|vars}} file with the information you want. Read [[Create a Public Key Infrastructure Using the easy-rsa Scripts]] for details.<br />
* Clean up any previous keys:<br />
{{bc|# easyrsa clean-all}}<br />
<br />
==Generate the certificates==<br />
* Create the "certificate authority" key <br />
{{bc|# easyrsa build-ca}}<br />
* Create certificate and private key for the server<br />
{{bc|# easyrsa build-server-full ''<server-name>''}}<br />
* Create the Diffie-Hellman pem file for the server. Do not enter a challenge password or company name when you set these up.<br />
{{bc|# easyrsa gen-dh}}<br />
* Create a certificate for each client. <br />
{{bc|# easyrsa build-client-full ''<client-name>''}}<br />
All certificates are stored in {{ic|keys}} directory. If you mess up, you can start all over by doing a {{ic|easyrsa clean-all}}<br />
<br />
Copy to each client the {{ic|ca.crt}}, and their respective crt and key files.<br />
<br />
==Setting up the server==<br />
* Create {{ic|/etc/openvpn/myvpnserver.conf}} with a content like this:<br />
{{hc|/etc/openvpn/myvpnserver.conf|<br />
port ''<port>''<br />
proto tcp<br />
dev tun0<br />
<br />
ca /etc/openvpn/easy-rsa/keys/ca.crt<br />
cert /etc/openvpn/easy-rsa/keys/''<server-name>''.crt<br />
key /etc/openvpn/easy-rsa/keys/''<server-name>''.key<br />
dh /etc/openvpn/easy-rsa/keys/''<your pem file>''<br />
<br />
server ''<desired base ip>'' 255.255.255.0<br />
ifconfig-pool-persist ipp.txt<br />
keepalive 10 120<br />
comp-lzo<br />
user nobody<br />
group nobody<br />
persist-key<br />
persist-tun<br />
status /var/log/openvpn-status.log<br />
verb 3<br />
<br />
log-append /var/log/openvpn<br />
status /tmp/vpn.status 10<br />
}}<br />
* Start and, optionally, enable for autostart on boot, the daemon. (In this example, is {{ic|openvpn@myvpnserver.service}})<br />
<br />
Read [[Daemon]] for more information.<br />
<br />
==Setting up the clients==<br />
* Create a .conf file for each client like this:<br />
{{hc|a-client-conf-file.conf|<br />
client<br />
remote ''<server>'' ''<port>''<br />
dev tun0<br />
proto tcp<br />
resolv-retry infinite<br />
nobind<br />
persist-key<br />
persist-tun<br />
verb 2<br />
ca ca.crt<br />
cert ''<client crt file with full path>''<br />
key ''<client key file with full path>''<br />
comp-lzo<br />
}}<br />
* Start the connection with<br />
{{bc|# openvpn a-client-conf-file.conf &}}<br />
Optionally, enable for autostart on boot the daemon. (In this example, is {{ic|openvpn@a-client-conf-file.service}})<br />
<br />
Read [[Daemon]] for more information.</div>Dustballhttps://wiki.archlinux.org/index.php?title=OpenVPN/Checklist_guide&diff=454100OpenVPN/Checklist guide2016-10-16T10:52:30Z<p>Dustball: Fixed the commands, as they changed from small local scripts to the easyrsa binary.</p>
<hr />
<div>[[Category:Virtual Private Network]]<br />
This article summarizes the install process required for OpenVPN. See [[OpenVPN]] instead for a walkthrough.<br />
<br />
==Install==<br />
<br />
[[Install]] the packages {{Pkg|openvpn}} and {{Pkg|easy-rsa}} from the [[official repositories]].<br />
<br />
==Prepare data==<br />
<br />
* Copy {{ic|/etc/easy-rsa}} to {{ic|/etc/openvpn/easy-rsa}} and cd there<br />
* Edit the {{ic|vars}} file with the information you want. Read [[Create a Public Key Infrastructure Using the easy-rsa Scripts]] for details.<br />
* Clean up any previous keys:<br />
{{bc|# easyrsa clean-all}}<br />
<br />
==Generate the certificates==<br />
* Create the "certificate authority" key <br />
{{bc|# easyrsa build-ca}}<br />
* Create certificate and private key for the server<br />
{{bc|# easy-rsa build-server-full ''<server-name>''}}<br />
* Create the Diffie-Hellman pem file for the server. Do not enter a challenge password or company name when you set these up.<br />
{{bc|# easyrsa gen-dh}}<br />
* Create a certificate for each client. <br />
{{bc|# easyrsa build-client-full ''<client-name>''}}<br />
All certificates are stored in {{ic|keys}} directory. If you mess up, you can start all over by doing a {{ic|easyrsa clean-all}}<br />
<br />
Copy to each client the {{ic|ca.crt}}, and their respective crt and key files.<br />
<br />
==Setting up the server==<br />
* Create {{ic|/etc/openvpn/myvpnserver.conf}} with a content like this:<br />
{{hc|/etc/openvpn/myvpnserver.conf|<br />
port ''<port>''<br />
proto tcp<br />
dev tun0<br />
<br />
ca /etc/openvpn/easy-rsa/keys/ca.crt<br />
cert /etc/openvpn/easy-rsa/keys/''<server-name>''.crt<br />
key /etc/openvpn/easy-rsa/keys/''<server-name>''.key<br />
dh /etc/openvpn/easy-rsa/keys/''<your pem file>''<br />
<br />
server ''<desired base ip>'' 255.255.255.0<br />
ifconfig-pool-persist ipp.txt<br />
keepalive 10 120<br />
comp-lzo<br />
user nobody<br />
group nobody<br />
persist-key<br />
persist-tun<br />
status /var/log/openvpn-status.log<br />
verb 3<br />
<br />
log-append /var/log/openvpn<br />
status /tmp/vpn.status 10<br />
}}<br />
* Start and, optionally, enable for autostart on boot, the daemon. (In this example, is {{ic|openvpn@myvpnserver.service}})<br />
<br />
Read [[Daemon]] for more information.<br />
<br />
==Setting up the clients==<br />
* Create a .conf file for each client like this:<br />
{{hc|a-client-conf-file.conf|<br />
client<br />
remote ''<server>'' ''<port>''<br />
dev tun0<br />
proto tcp<br />
resolv-retry infinite<br />
nobind<br />
persist-key<br />
persist-tun<br />
verb 2<br />
ca ca.crt<br />
cert ''<client crt file with full path>''<br />
key ''<client key file with full path>''<br />
comp-lzo<br />
}}<br />
* Start the connection with<br />
{{bc|# openvpn a-client-conf-file.conf &}}<br />
Optionally, enable for autostart on boot the daemon. (In this example, is {{ic|openvpn@a-client-conf-file.service}})<br />
<br />
Read [[Daemon]] for more information.</div>Dustballhttps://wiki.archlinux.org/index.php?title=AUR_helpers&diff=449351AUR helpers2016-09-04T13:09:08Z<p>Dustball: Changed yaourt security to yes. See talk-page for reasons.</p>
<hr />
<div>[[Category:Arch User Repository]]<br />
[[fr:Assistants AUR]]<br />
[[ja:AUR ヘルパー]]<br />
[[ru:AUR helpers]]<br />
[[tr:AUR Yardımcı Uygulamaları]]<br />
[[zh-cn:AUR helpers]]<br />
{{Warning|None of these tools are [https://bbs.archlinux.org/viewtopic.php?pid&#61;828254#p828254 officially] supported by Arch Linux. It is recommended to become familiar with the [[Arch User Repository#Installing packages|manual build process]] in order to be prepared to troubleshoot problems on one's own.}}<br />
<br />
AUR helpers are written to automate certain tasks for the [[Arch User Repository]].<br />
<br />
== Uploading ==<br />
<br />
* [https://gist.github.com/bbidulock/82ab6f5347f021136054 bbidulock's script] — Migrate from a .backup directory with all packages.<br />
* [https://github.com/JonnyJD/PKGBUILDs/blob/master/_bin/aur4_import.sh aur4_import.sh] — Splits a package from a git repository with multiple packages, adding/updating {{ic|.SRCINFO}} for every commit.<br />
* [https://github.com/JonnyJD/PKGBUILDs/blob/master/_bin/aur4_make_submodule.sh aur4_make_submodule.sh] / [https://github.com/alexandre-mbm/arch-pkgs/blob/master/subaur4 subaur4] — Replaces a package in a bigger git repository with an AUR 4 submodule, including {{ic|.SRCINFO}}.<br />
* [https://github.com/ido/packages-archlinux/blob/master/bin/import-to-aur4.sh import-to-aur4] — Splits an existing git repository into multiple AUR 4 packages, all at once, including {{ic|.SRCINFO}} for every commit.<br />
* [https://github.com/Edenhofer/abs/blob/master/aurpublish aurpublish] — Manage AUR packages as [https://raw.githubusercontent.com/git/git/master/contrib/subtree/git-subtree.txt git subtrees]. The [https://github.com/Edenhofer/abs/blob/master/pre-commit.hook generation of {{ic|.SRCINFO}} files, {{ic|PKGBUILD}} checking] and the [https://github.com/Edenhofer/abs/blob/master/prepare-commit-msg.hook creation of a per package commit message template] is left to the git hooks in the same [https://github.com/Edenhofer/abs/blob/master/README.md repo].<br />
<br />
== Build and search ==<br />
<br />
This is a list of helper utilities that search, download and/or build packages.<br />
<br />
* {{App|apacman|A fork of packer.|https://github.com/oshazard/apacman|{{AUR|apacman}}}}<br />
<br />
* {{App|aura|A package manager for Arch Linux written in Haskell.|https://github.com/aurapm/aura|{{AUR|aura}} or {{AUR|aura-bin}} (binary)}}<br />
<br />
* {{App|aurel|2=Search, vote and download AUR packages from Emacs. ([https://bbs.archlinux.org/viewtopic.php?id=177142 Forum page])|3=https://github.com/alezost/aurel<br />
|4={{AUR|aurel}}{{Broken package link|{{aur-mirror|aurel}}}}}}<br />
<br />
* {{App|aurget|pacman-like interface to the AUR, without wrapping pacman commands.|https://github.com/pbrisbin/aurget/|{{AUR|aurget}}}}<br />
<br />
* {{App|aurquery|Caching wrapper around the AUR's RPC interface using the python3-aur library.|http://xyne.archlinux.ca/projects/python3-aur|{{AUR|python3-aur}}}}<br />
<br />
* {{App|aurutils|2=Helper tools for the AUR. ([https://bbs.archlinux.org/viewtopic.php?pid=1615428 Forum page])|3=https://github.com/AladW/aurutils|4={{AUR|aurutils}}}}<br />
<br />
* {{App|bauerbill|2=Powerpill/pacman extension with support for building packages from ABS and AUR. ([https://bbs.archlinux.org/viewtopic.php?id=205834 Forum page])|3=http://xyne.archlinux.ca/projects/bauerbill|4={{AUR|bauerbill}}}}<br />
<br />
* {{App|burgaur|A front-end for cower written in Python.|https://github.com/m45t3r/burgaur|{{AUR|burgaur}}}}<br />
<br />
* {{App|cower|2=AUR search and download agent written in C, which also checks for updates and package dependencies. ([https://bbs.archlinux.org/viewtopic.php?id=97137 Forum page])|3=https://github.com/falconindy/cower|4={{AUR|cower}}}}<br />
<br />
* {{App|pacaur|2=An AUR helper that minimizes user interaction. ([https://bbs.archlinux.org/viewtopic.php?pid=937423 Forum page])|3=https://github.com/rmarquis/pacaur|4={{AUR|pacaur}}}}<br />
<br />
* {{App|packer|2=Wrapper for pacman and the AUR. ([https://bbs.archlinux.org/viewtopic.php?id=88115 Forum page])|3=https://github.com/keenerd/packer|4={{AUR|packer}}}}<br />
<br />
* {{App|pbget|Retrieve source files from the Arch SVN and CVS web interface, the AUR, and the ABS rsync server.|http://xyne.archlinux.ca/projects/pbget|{{AUR|pbget}}}}<br />
<br />
* {{App|PKGBUILDer|An AUR helper with dependency support written in Python 3.|https://github.com/Kwpolska/pkgbuilder|{{AUR|pkgbuilder}}}}<br />
<br />
* {{App|prm|An AUR and ABS helper.|https://git.fleshless.org/prm/|[https://pkg.fleshless.org/prm/plain/PKGBUILD PKGBUILD]}}<br />
<br />
* {{App|repoctl|Tool to help manage local repositories (AUR support).|https://github.com/cassava/repoctl|{{AUR|repoctl}}}}<br />
<br />
* {{App|spinach|An AUR helper written in Bash|http://www.floft.net/code/spinach/|{{AUR|spinach}}}}<br />
<br />
* {{App|trizen|A wrapper for the AUR written in Perl.|https://github.com/trizen/trizen|{{AUR|trizen}}}}<br />
<br />
* {{App|wrapaur|A pacman and AUR wrapper written in bash.||{{AUR|wrapaur}}}}<br />
<br />
* {{App|yaah|Yet another AUR helper|https://bitbucket.org/the_metalgamer/yaah|{{AUR|yaah}}}}<br />
<br />
* {{App|yaourt|A wrapper for the AUR and regular packages.|https://archlinux.fr/yaourt-en|{{AUR|yaourt}}}}<br />
<br />
== Maintenance ==<br />
<br />
* {{App|pkgbuild-watch|Looks for changes on the upstream web pages|http://kmkeen.com/pkgbuild-watch|{{AUR|pkgbuild-watch}}}}<br />
<br />
* {{App|pkgbuildup|Helps AUR package maintainers automatically update PKGBUILD files. Supports a template variable syntax.|https://github.com/fasheng/pkgbuildup|{{AUR|pkgbuildup-git}}}}<br />
<br />
* {{App|1=pkgcheck|2=Uses rules in PKGBUILDs to parse upstream version information or looks for changes by checksumming the web page|3=https://bbs.archlinux.org/viewtopic.php?id=162816|4=Repository: [https://github.com/onny/pkgcheck GitHub]}}<br />
<br />
* {{App|pkgoutofdate|Parses the source URL from PKGBUILDs and tries to find new versions of packages by incrementing the version number and sending requests to the web server|https://github.com/anatol/pkgoutofdate|{{AUR|pkgoutofdate-git}}}}<br />
<br />
* {{App|aur-check|Uses the AUR API to find newer versions of your foreign packages|https://gist.github.com/felipec/94752ddd08e1adfb80ac57947982443c}}<br />
<br />
* {{App|updpkgver|Detects upstream releases and updates the PKGBUILD automatically|https://github.com/renatosilva/pactoys/tree/master/source/updpkgver}}<br />
<br />
== Libraries ==<br />
<br />
* {{App|haskell-archlinux|Library to access the AUR and package metadata from the Haskell programming language|http://hackage.haskell.org/package/archlinux|{{AUR|haskell-archlinux}}}}<br />
<br />
* {{App|python3-aur|Python 3 modules for accessing AUR package information and automating AUR interactions.|http://xyne.archlinux.ca/projects/python3-aur|{{AUR|python3-aur}}}}<br />
<br />
== Graphical ==<br />
<br />
* {{App|1=Aarchup|2=Fork of archup. Has the same options as archup plus a few other features. For differences between both please check [https://bbs.archlinux.org/viewtopic.php?id=119129 changelog].|3=https://github.com/aericson/aarchup/|4={{AUR|aarchup}}}}<br />
* {{App|1=Argon|2=Graphical frontend of pacaur, featuring package installation, removal, and updating; and update notifications for both official repository and AUR packages.|3=https://github.com/14mRh4X0r/arch-argon|4={{AUR|argon}}}}<br />
* {{App|1=PkgBrowser|2=Application for searching and browsing Arch packages, showing details on selected packages.|3=https://bitbucket.org/kachelaqa/pkgbrowser/wiki/Home|4={{AUR|pkgbrowser}}}}<br />
<br />
== Comparison table ==<br />
<br />
The columns have the following meaning:<br />
<br />
* ''Secure'': does not [[source]], by default, the PKGBUILD at all, or, before doing so, reminds the user and offers him the opportunity to inspect it manually. Some helpers are known to source PKGBUILDs before the user can inspect them, '''allowing malicious code to be executed'''. ''Optional'' means that there is a command line flag or configuration option to prevent the automatic sourcing before viewing.<br />
* ''Clean build'': does not export new variables that can prevent a successful build process.<br />
* ''Reliable parser'': ability to handle complex packages by using the provided metadata (RPC/.SRCINFO) instead of PKGBUILD [[w:Parsing#Parser|parsing]], such as {{AUR|aws-cli-git}}.<br />
* ''Reliable solver'': ability to correctly solve and build complex dependency chains, such as {{AUR|plasma-git-meta}}.<br />
* ''Split packages'': ability to correctly build and install split packages independently, such as {{AUR|python-nikola}}.<br />
* ''Git clone'': uses git clones instead of downloading tarballs (deprecated since AUR 4).<br />
* ''Syntax'': P stands for [[Pacman]]-like, S for specific.<br />
<br />
{| class="wikitable sortable"<br />
! Name !! Written In !! Secure !! Clean build !! Reliable parser !! Reliable solver !! Split packages !! Git clone !! Shell completion !! Syntax !! Specificity<br />
|-<br />
! apacman<br />
| Bash || {{No}} || {{Yes}} || {{No}} || {{No}} || {{No}} || {{No}} || style="text-align:center;" | None || style="text-align:center;" |P || Fork of ''packer''<br />
|-<br />
! aura<br />
| Haskell || {{Yes}} || {{Yes}} || {{No}} [https://github.com/aurapm/aura/issues/14] || {{No}} || {{No}} [https://github.com/aurapm/aura/issues/353] || {{No}} || style="text-align:center;" | bash/zsh || style="text-align:center;" |P || Backup, downgrade, [[ABS]] and [[powerpill]] support, multilingual<br />
|-<br />
! aurel<br />
| Emacs Lisp || {{Yes}} || {{Grey|N/A}} || {{Yes}} || {{Grey|N/A}} || {{Grey|N/A}} || {{No}} || style="text-align:center;" | N/A || style="text-align:center;" | S || Emacs integration, no automatic builds<br />
|-<br />
! aurget<br />
| Bash || {{Y|Optional}} || {{Yes}} || {{No}} || {{No}} || {{No}} [https://github.com/pbrisbin/aurget/issues/40] || {{No}} || style="text-align:center;" | bash/zsh || style="text-align:center;" | P || sort by votes<br />
|-<br />
! aurutils<br />
| Bash/C || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}} || style="text-align:center;" | zsh || style="text-align:center;" | S || [[w:Topological sorting|tsort]], [[w:PCRE|PCRE]], [[local repository]], [[package signing]], [[systemd-nspawn]] support<br />
|-<br />
! bauerbill<br />
| Python3 || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}} || style="text-align:center;" | bash/zsh || style="text-align:center;" | P/S || Trust management, ABS support, extends Powerpill<br />
|-<br />
! burgaur<br />
| Python3/C || {{Y|Optional}}, with [[mc]] || {{Yes}} || {{No}} || {{No}} || {{No}} || {{No}} || style="text-align:center;" | None || style="text-align:center;" | P || Wrapper for ''cower''<br />
|-<br />
! cower<br />
| C || {{Yes}} || {{Grey|N/A}} || {{Yes}} || {{Grey|N/A}} || {{Grey|N/A}} || {{No}} || style="text-align:center;" | bash/zsh || style="text-align:center;" | S || No automatic builds, regex support, sort by votes/popularity<br />
|-<br />
! pacaur<br />
| Bash/C || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}} || style="text-align:center;" | bash/zsh || style="text-align:center;" | P/S || Minimizes user interaction, multilingual, sort by votes/popularity<br />
|-<br />
! packer<br />
| Bash || {{No}} || {{Yes}} || {{No}} || {{No}} || {{No}} || {{No}} || style="text-align:center;" | None || style="text-align:center;" | P || -<br />
|-<br />
! pbget<br />
| Python3 || {{Yes}} || {{Grey|N/A}} || {{Yes}} || {{Grey|N/A}} || {{Grey|N/A}} || {{Yes}} || style="text-align:center;" | None || style="text-align:center;" | S || No automatic builds<br />
|-<br />
! PKGBUILDer<br />
| Python3 || {{Y|Optional}} || {{Yes}} || {{Yes}} || {{Yes}} || {{Y|Partial}} [https://github.com/Kwpolska/pkgbuilder/issues/39] || {{Yes}} || style="text-align:center;" | None || style="text-align:center;" | P || Automatic builds by default, use {{ic|-F}} to disable; multilingual<br />
|-<br />
! prm<br />
| Bash || {{Yes}} [https://git.fleshless.org/prm/commit/?id=e7252333b07975ea40f526269ce995e375e627bf] || {{Grey|N/A}} || {{Yes}} || {{Grey|N/A}} || {{Grey|N/A}} || {{Yes}} || style="text-align:center;" | None || style="text-align:center;" | S || No automatic builds, ABS support<br />
|-<br />
! repoctl<br />
| Go || {{Yes}} || {{Grey|N/A}} || {{Yes}} [https://github.com/goulash/pacman/blob/master/aur/aur.go] || {{Grey|N/A}} || {{Grey|N/A}} || {{No}} || style="text-align:center;" | zsh || style="text-align:center;" | S || No automatic builds, local repository support<br />
|-<br />
! spinach<br />
| Bash || {{No}} [https://github.com/floft/spinach/blob/master/spinach#L287] || {{Yes}} || {{No}} || {{No}} || {{No}} || {{No}} || style="text-align:center;" | None || style="text-align:center;" | S || -<br />
|-<br />
! trizen<br />
| Perl || {{Yes}} || {{Yes}} || {{Yes}} [https://github.com/trizen/trizen/commit/7ab7ee5f9f1f5d971b731d092fc8e1dd963add4b] || {{No}} || {{No}} || {{No}} || style="text-align:center;" | None || style="text-align:center;" | P || AUR comments<br />
|-<br />
! wrapaur<br />
| Bash || {{Yes}} || {{Yes}} || {{No}} || {{No}} || {{No}} || {{Yes}} || style="text-align:center;" | None || style="text-align:center;" | S || Mirror updates, print news and AUR comments<br />
|-<br />
! yaah<br />
| Bash || {{Yes}} || {{Grey|N/A}} || {{Yes}} || {{Grey|N/A}} || {{Grey|N/A}} || {{Y|Optional}} || style="text-align:center;" | bash || style="text-align:center;" | S || No automatic builds<br />
|-<br />
! yaourt<br />
| Bash/C || {{Yes}} || {{No}} [https://lists.archlinux.org/pipermail/aur-general/2015-August/031314.html] || {{No}} || {{No}} [https://github.com/archlinuxfr/yaourt/issues/186] || {{No}} [https://github.com/archlinuxfr/yaourt/issues/85] || {{Y|Optional}} || style="text-align:center;" | bash/zsh/fish || style="text-align:center;" | P || Backup, ABS support, AUR comments, multilingual<br />
|-<br />
|}<br />
<br />
{{Note|1=[[Pacman]] 4.2. introduced architecture specific fields. [http://allanmcrae.com/2014/12/pacman-4-2-released/] However, as of 06 April 2016, [[AurJson]] combines all entries in a single field: {{Bug|48796}}. Helpers relying on the RPC may use the below workarounds to retrieve dependencies:<br />
* {{AUR|bauerbill}} [https://bbs.archlinux.org/viewtopic.php?pid=1617235#p1617235], {{AUR|pkgbuilder}} [https://github.com/Kwpolska/pkgbuilder/blob/65d9d74ef05f8996b81afb1cd005e3c337afa8b2/pkgbuilder/build.py#L198]: Retrieve specific fields from [[.SRCINFO]]<br />
* {{AUR|aurutils}} [https://github.com/AladW/aurutils/issues/80], {{AUR|pacaur}} [https://github.com/rmarquis/pacaur/issues/465], {{AUR|trizen}} [https://github.com/trizen/trizen/commit/6a8ff9dc8cc83af783b8475dfbe89988dbc8a553]: Strip the {{ic|lib32-}} prefix on {{ic|i686}} systems<br />
}}</div>Dustballhttps://wiki.archlinux.org/index.php?title=Talk:AUR_helpers&diff=449350Talk:AUR helpers2016-09-04T13:07:44Z<p>Dustball: /* Yaourt seems to do safe stuff now */ new section</p>
<hr />
<div>{{Note|'''Moderation''' — If your AUR helper does [[partial upgrade]]s ''without explicit user intervention'' (i.e, specifying {{ic|-Sy}} on the command line), it has no place on this page or anywhere else on ArchWiki. No exceptions. -- [[User:Alad|Alad]] ([[User talk:Alad|talk]]) 09:37, 20 September 2015 (UTC)<br />
}}<br />
<br />
== Comparison table - build directory ==<br />
<br />
Considering /tmp is mounted as tmpfs on Arch, and the potential downsides from building in RAM (running out of space), I think a column with the default build location for various helpers would be helpful. <br />
<br />
The default values I've garnered so far, assuming TMPDIR is not set:<br />
<br />
* aurutils: $XDG_CACHE_HOME<br />
* pacaur: $XDG_CACHE_HOME (changed from /tmp, see [https://github.com/rmarquis/pacaur/commit/c5d750f75f040b21249fff100a2c8875348d03d1])<br />
* bauerbill: $PWD/build<br />
* pkgbuilder: $PWD, /tmp when specified with -S<br />
* packer: /tmp (TMPDIR)<br />
* yaourt: /tmp (yaourtrc)<br />
<br />
-- [[User:Alad|Alad]] ([[User talk:Alad|talk]]) 18:16, 1 April 2016 (UTC)<br />
<br />
: Yes, this could be useful. Although you'd want not to use color here, since users that know what they're doing would prefer to use /tmp (or setting up BUILDDIR to /tmp). --[[User:Spyhawk|Spyhawk]] ([[User talk:Spyhawk|talk]]) 11:15, 3 April 2016 (UTC)<br />
<br />
:: +1. see also [[#Multi-thread support]]. --[[User:Indigo|Indigo]] ([[User talk:Indigo|talk]]) 11:33, 3 April 2016 (UTC)<br />
::: Well, while it does have benefits for some users, it's still a bad default. As you say though, this is easy enough to change either way, unlike any of the behaviour described in the other columns.<br />
::: We could leave out the colors, but mention the drawbacks/benefits in the "meanings" paragraph. -- [[User:Alad|Alad]] ([[User talk:Alad|talk]]) 13:35, 4 April 2016 (UTC)<br />
<br />
:::: It is bad default because some users have no idea about what they are doing, but this is strictly related to user preferences. Adding the meaning instead of colors sounds like the perfect solution to me. --[[User:Spyhawk|Spyhawk]] ([[User talk:Spyhawk|talk]]) 14:35, 4 April 2016 (UTC).<br />
<br />
== Multi-thread support ==<br />
<br />
This also made me wonder if tools differentiate regarding multi-thread support (seems related, e.g. cower has a defaulted option for it). --[[User:Indigo|Indigo]] ([[User talk:Indigo|talk]]) 11:33, 3 April 2016 (UTC)<br />
<br />
: AFAIK, besides cower, packer [http://kmkeen.com/multithreaded-bash/] and bauerbill ({{ic|download.sh}} amongst others) have multiple threads. aurutils also uses aria2c for downloads, if that counts.<br />
: The benefits of multiple threads are however not always clear: <br />
:: * by my understanding, cower uses multiple threads, but with one query per package [https://github.com/falconindy/cower/blob/master/cower.c#L667] (compare against multiinfo).<br />
:: * More generally, tasks (like dependency solving) can be sped up by using different methods which need to be called less often<br />
:: * Building packages would almost always be done sequentially: dependencies have to be installed (resulting in pacman locks), and there's {{ic|-j}} in {{ic|makepkg.conf}} anyway.<br />
: Regardless, there are some large differences in AUR helper speed (with bauerbill being ahead of the rest). But I'm not sure how to quantify this in the table ... -- [[User:Alad|Alad]] ([[User talk:Alad|talk]]) 12:31, 3 April 2016 (UTC)<br />
<br />
:: Multi-thread support doesn't necessarily mean the helper is better. In cower case, multi-thread support was implemented before multiinfo was available in the RPC interface, and as of today using multiinfo is less complex and faster than using multiple info threads. Since it is difficult to implement multiinfo support without an important rewrite, cower multithreading is more a drawback than an advantage.<br />
:: As for speed, it's indeed very hard to quantify in a meaningful manner. For example, pacaur dependency solver is slower than bauerbill's solver, but on the other hand it is designed to compute more stuff than other helpers up front in order to avoid bothering the user once the install process is started. --[[User:Spyhawk|Spyhawk]] ([[User talk:Spyhawk|talk]]) 13:42, 3 April 2016 (UTC)<br />
<br />
::: Interesting. Actually, I did not want to induce a "speed" column, rather the opposite. As you both say, always very difficult to choose a fairly universal/comparable benchmark, so "speed" as such is better be left out of comparison (as a column). If one wants to mention it, it might be useful to have a general remark at the top of the table, or somewhere else in the article, quoting some of the influencing factors you name; perhaps linking to (re -j) [[Makepkg#MAKEFLAGS]] and (re Skyhawk's remark above) [[Makepkg#Improving compile times]]. --[[User:Indigo|Indigo]] ([[User talk:Indigo|talk]]) 14:01, 3 April 2016 (UTC)<br />
<br />
== Yaourt seems to do safe stuff now ==<br />
<br />
Can someone explain to me why yaourt is unsafe? Reading the offending lines, it sources ''something'', but I threw a PKGBUILD at it which executes subshells in the variables if let run, and nothing got executed before I gave explicit permissions. Even the mentioned -Si did not produce the expected result. I'm going to change this to safe for now until someone can produce a reliable test case which does execute something malicious. [[User:Dustball|Dustball]] ([[User talk:Dustball|talk]]) 13:07, 4 September 2016 (UTC)</div>Dustballhttps://wiki.archlinux.org/index.php?title=Nextcloud&diff=435785Nextcloud2016-05-20T13:03:06Z<p>Dustball: Removed the "php-7.0.6 doesn't work with owncloud-9.0.1-1" part, as it's obsolete. Owncloud is at 9.0.2 at the time of deletion.</p>
<hr />
<div>{{lowercase title}}<br />
[[Category:Web server]]<br />
[[fr:Owncloud]]<br />
[[ja:ownCloud]]<br />
{{Related articles start}}<br />
{{Related|LAMP}}<br />
{{Related|Nginx}}<br />
{{Related|OpenSSL}}<br />
{{Related|WebDAV}}<br />
{{Related articles end}}<br />
From [[Wikipedia:ownCloud|Wikipedia]]: "ownCloud is a software suite that provides a location-independent storage area for data (cloud storage)."<br />
The ownCloud installation and configuration mainly depends on what web server and database you decide to run. Currently the wiki discusses [[#Apache configuration|Apache configuration]] and [[#Nginx|Nginx configuration]].<br />
<br />
== Prerequisites ==<br />
<br />
''ownCloud'' needs a [[:Category:Web server|web server]], [[PHP]] and a [[:Category:Database_management_systems|database]]. For instance, a classic [[LAMP|LAMP stack]] should work fine and is the [https://doc.owncloud.org/server/8.2/admin_manual/installation/system_requirements.html#recommended-setup-for-running-owncloud recommended configuration].<br />
<br />
== Installation ==<br />
<br />
[[Install]] the {{Pkg|owncloud}} package.<br />
<br />
Uncomment the following [https://doc.owncloud.org/server/8.2/admin_manual/installation/source_installation.html#prerequisites required] extensions in {{ic|/etc/php/php.ini}}:<br />
gd.so<br />
iconv.so<br />
xmlrpc.so<br />
zip.so<br />
<br />
It is also [https://doc.owncloud.org/server/8.2/admin_manual/installation/source_installation.html#prerequisites recommended] to install {{Pkg|php-intl}}, {{Pkg|php-mcrypt}} and uncomment the following extensions:<br />
bz2.so<br />
curl.so<br />
intl.so<br />
mcrypt.so<br />
<br />
==== Database support ====<br />
<br />
Depending on which database backend you are going to use, uncomment the following extensions in {{ic|/etc/php/php.ini}}:<br />
* For [[MySQL]], uncomment {{ic|pdo_mysql.so}}.<br />
* For [[PostgreSQL]], uncomment {{ic|pdo_pgsql.so}} and {{ic|pgsql.so}}, and install {{Pkg|php-pgsql}}.<br />
* For [[SQLite]], uncomment {{ic|pdo_sqlite.so}} and {{ic|sqlite3.so}}, and install {{Pkg|php-sqlite}}.<br />
<br />
==== Caching ====<br />
<br />
For enhanced performance, it is recommended to implement PHP caching using APCu, as described in [[PHP#APCu]]. It is also beneficial to enable OPCache, as described in [[PHP#OPCache]].<br />
<br />
Then, after enabling APCu, add the following directive to {{ic|/etc/webapps/owncloud/config/config.php}}:<br />
'memcache.local' => '\OC\Memcache\APCu',<br />
<br />
{{Note|Make sure to add {{ic|1=apc.enable_cli=1}} under the {{ic|[apc]}} portion of your [[PHP#Configuration|PHP configuration]] and uncomment {{ic|1=extension=apcu.so}} in {{ic|/etc/php/conf.d/apcu.ini}}. As of 2015-07-12, [https://github.com/owncloud/core/issues/17329#issuecomment-119248944 several] [https://github.com/owncloud/documentation/issues/1233#issuecomment-120664134 things] won't work properly without it.}}<br />
<br />
See [https://doc.owncloud.org/server/8.1/admin_manual/configuration_server/config_sample_php_parameters.html#memory-caching-backend-configuration the official documentation].<br />
<br />
==== Exif support ====<br />
Additionally enable exif support by installing the {{Pkg|exiv2}} package and uncommenting the {{ic|exif.so}} extension in {{ic|php.ini}}.<br />
<br />
==== Setting strong permissions ====<br />
<br />
From the [https://doc.owncloud.org/server/8.2/admin_manual/installation/installation_wizard.html#setting-strong-directory-permissions official installation manual]:<br />
:''For hardened security we recommend setting the permissions on your ownCloud directories as strictly as possible, and for proper server operations. This should be done immediately after the initial installation and before running the setup. Your HTTP user must own the {{ic|config/}}, {{ic|data/}} and {{ic|apps/}} directories so that you can configure ownCloud, create, modify and delete your data files, and install apps via the ownCloud Web interface.''<br />
<br />
{{hc|oc-perms|2=<nowiki><br />
#!/bin/bash<br />
ocpath='/usr/share/webapps/owncloud'<br />
htuser='http'<br />
htgroup='http'<br />
rootuser='root'<br />
<br />
printf "Creating possible missing Directories\n"<br />
mkdir -p $ocpath/data<br />
mkdir -p $ocpath/assets<br />
<br />
printf "chmod Files and Directories\n"<br />
find ${ocpath}/ -type f -print0 | xargs -0 chmod 0640<br />
find ${ocpath}/ -type d -print0 | xargs -0 chmod 0750<br />
<br />
printf "chown Directories\n"<br />
chown -R ${rootuser}:${htgroup} ${ocpath}/<br />
chown -R ${htuser}:${htgroup} ${ocpath}/apps/<br />
chown -R ${htuser}:${htgroup} ${ocpath}/config/<br />
chown -R ${htuser}:${htgroup} ${ocpath}/data/<br />
chown -R ${htuser}:${htgroup} ${ocpath}/themes/<br />
chown -R ${htuser}:${htgroup} ${ocpath}/assets/<br />
<br />
chmod +x ${ocpath}/occ<br />
<br />
printf "chmod/chown .htaccess\n"<br />
if [ -f ${ocpath}/.htaccess ]<br />
then<br />
chmod 0644 ${ocpath}/.htaccess<br />
chown ${rootuser}:${htgroup} ${ocpath}/.htaccess<br />
fi<br />
if [ -f ${ocpath}/data/.htaccess ]<br />
then<br />
chmod 0644 ${ocpath}/data/.htaccess<br />
chown ${rootuser}:${htgroup} ${ocpath}/data/.htaccess<br />
fi<br />
</nowiki>}}<br />
<br />
If you have customized your ownCloud installation and your filepaths are different than the standard installation, then modify this script accordingly.<br />
<br />
=== An all-in-one alternative with Docker ===<br />
<br />
A quicker alternative to installing and configuring your own ''ownCloud'' is to use a 3rd party supported [[Docker]] image. You can find several images of fully working LAMP stack with pre-installed ''ownCloud'' in the [https://index.docker.io/search?q=ownCloud Docker repositories]. ''Docker'' containers are generally safer than a [[chroot]] environment and the overhead is very low; ''ownCloud'' in Docker works smoothly even on quite old machines. The whole setup including installing ''Docker'' and ''ownCloud'' image is considerably easier and quicker than a native installation but you must trust the 3rd party whom you've now given complete control to regarding the installation of your ownCloud instance.<br />
{{Note|Docker images are not officially supported by ownCloud.}}<br />
<br />
== Apache configuration ==<br />
{{Note|Make sure PHP is enabled, as described in [[Apache HTTP Server#PHP]].}}<br />
<br />
Copy the Apache configuration file to its configuration directory:<br />
# cp /etc/webapps/owncloud/apache.example.conf /etc/httpd/conf/extra/owncloud.conf<br />
<br />
And include it at the bottom of {{ic|/etc/httpd/conf/httpd.conf}}:<br />
Include conf/extra/owncloud.conf<br />
<br />
Now restart Apache ({{ic|httpd.service}}).<br />
<br />
Open http://localhost/owncloud in your browser. You should now be able to create a user account and follow the installation wizard.<br />
<br />
{{Note|Moving your data folder to another location might conflict with the open_basedir option set in the default apache configuration file.}}<br />
<br />
==== WebDAV ====<br />
ownCloud comes with its own [[WebDAV]] implementation enabled, which may conflict with the one shipped with Apache. If you have enabled WebDAV (not enabled by default with Apache), disable {{ic|mod_dav}} and {{ic|mod_dav_fs}} in {{ic|/etc/httpd/conf/httpd.conf}}. See https://forum.owncloud.org/viewtopic.php?f=17&t=7240 for details.<br />
<br />
==== Running ownCloud in a subdirectory ====<br />
<br />
By including the default {{ic|owncloud.conf}} in {{ic|httpd.conf}}, ownCloud will take control of port 80 and your localhost domain. <br />
<br />
If you would like to have ownCloud run in a subdirectory, then edit the {{ic|/etc/httpd/conf/extra/owncloud.conf}} you included and comment out the {{ic|<nowiki><VirtualHost *:80> ... </VirtualHost></nowiki>}} part of the include file.<br />
<br />
== Nginx ==<br />
<br />
=== php-fpm configuration ===<br />
<br />
''ownCloud'' official documentation uses {{Pkg|php-fpm}} for [[PHP]] and as such it is the best supported configuration. See [[Nginx#PHP implementation]] to set up ''php-fpm'' and [[Nginx#TLS/SSL]] to acquire and/or set up a TLS certificate.<br />
<br />
By default, the only things you need to change from the [https://doc.owncloud.org/server/9.0/admin_manual/installation/nginx_configuration.html recommended server configuration] for ownCloud to run on Arch Linux are the {{ic|server_name}}, {{ic|ssl_certificate}}, {{ic|ssl_certificate_key}}, {{ic|root}} and {{ic|fastcgi_pass}} directives:<br />
<br />
{{hc|/etc/nginx/nginx.conf|<nowiki><br />
server {<br />
listen 80;<br />
server_name cloud.example.com;<br />
# enforce https<br />
return 301 https://$server_name$request_uri;<br />
}<br />
<br />
server {<br />
listen 443 ssl;<br />
server_name cloud.example.com;<br />
<br />
ssl_certificate /path/to/domain-cert.crt;<br />
ssl_certificate_key /path/to/private-key.key;<br />
<br />
# Add headers to serve security related headers<br />
add_header Strict-Transport-Security "max-age=15768000; includeSubDomains; preload;";<br />
add_header X-Content-Type-Options nosniff;<br />
add_header X-Frame-Options "SAMEORIGIN";<br />
add_header X-XSS-Protection "1; mode=block";<br />
add_header X-Robots-Tag none;<br />
add_header X-Download-Options noopen;<br />
add_header X-Permitted-Cross-Domain-Policies none;<br />
<br />
# Path to the root of your installation<br />
root /usr/share/webapps/owncloud/;<br />
# set max upload size<br />
client_max_body_size 10G;<br />
fastcgi_buffers 64 4K;<br />
<br />
# Disable gzip to avoid the removal of the ETag header<br />
gzip off;<br />
<br />
# Uncomment if your server is build with the ngx_pagespeed module<br />
# This module is currently not supported.<br />
#pagespeed off;<br />
<br />
index index.php;<br />
error_page 403 /core/templates/403.php;<br />
error_page 404 /core/templates/404.php;<br />
<br />
rewrite ^/.well-known/carddav /remote.php/carddav/ permanent;<br />
rewrite ^/.well-known/caldav /remote.php/caldav/ permanent;<br />
<br />
# The following 2 rules are only needed for the user_webfinger app.<br />
# Uncomment it if you're planning to use this app.<br />
#rewrite ^/.well-known/host-meta /public.php?service=host-meta last;<br />
#rewrite ^/.well-known/host-meta.json /public.php?service=host-meta-json last;<br />
<br />
location = /robots.txt {<br />
allow all;<br />
log_not_found off;<br />
access_log off;<br />
}<br />
<br />
location ~ ^/(build|tests|config|lib|3rdparty|templates|data)/ {<br />
deny all;<br />
}<br />
<br />
location ~ ^/(?:\.|autotest|occ|issue|indie|db_|console) {<br />
deny all;<br />
}<br />
<br />
location / {<br />
rewrite ^/remote/(.*) /remote.php last;<br />
rewrite ^(/core/doc/[^\/]+/)$ $1/index.html;<br />
try_files $uri $uri/ =404;<br />
}<br />
<br />
location ~ \.php(?:$|/) {<br />
fastcgi_split_path_info ^(.+\.php)(/.+)$;<br />
include fastcgi_params;<br />
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;<br />
fastcgi_param PATH_INFO $fastcgi_path_info;<br />
fastcgi_param HTTPS on;<br />
fastcgi_param modHeadersAvailable true; #Avoid sending the security headers twice<br />
fastcgi_pass unix:/run/php-fpm/php-fpm.sock;<br />
fastcgi_intercept_errors on;<br />
}<br />
<br />
# Adding the cache control header for js and css files<br />
# Make sure it is BELOW the location ~ \.php(?:$|/) { block<br />
location ~* \.(?:css|js)$ {<br />
add_header Cache-Control "public, max-age=7200";<br />
# Add headers to serve security related headers<br />
add_header Strict-Transport-Security "max-age=15768000; includeSubDomains; preload;";<br />
add_header X-Content-Type-Options nosniff;<br />
add_header X-Frame-Options "SAMEORIGIN";<br />
add_header X-XSS-Protection "1; mode=block";<br />
add_header X-Robots-Tag none;<br />
add_header X-Download-Options noopen;<br />
add_header X-Permitted-Cross-Domain-Policies none;<br />
# Optional: Don't log access to assets<br />
access_log off;<br />
}<br />
<br />
# Optional: Don't log access to other assets<br />
location ~* \.(?:jpg|jpeg|gif|bmp|ico|png|swf)$ {<br />
access_log off;<br />
}<br />
}<br />
</nowiki>}}<br />
<br />
''php-fpm'' is already configured to run as the user {{ic|http}}, so assuming you are using the permissions described above it should function fine. It is not recommended to manually copy the {{ic|config.example.php}} in the ownCloud configuration, and instead let it be automatically generated on first run.<br />
<br />
{{Note|Automatic configuration relies on the {{ic|data/}} directory creation, as done in [[#Setting strong permissions]].}}<br />
<br />
=== uWSGI configuration ===<br />
<br />
You can run ''ownCloud'' in its own process and service by using the [[Uwsgi|uWSGI]] application server with {{pkg|uwsgi-plugin-php}}. This allows you to define a [[PHP#Configuration|PHP configuration]] only for this instance of PHP, without the need to edit the global {{ic|php.ini}} and thus keeping your web application configurations compartmentalized. ''uWSGI'' itself has a wealth of features to limit the resource use and to harden the security of the application, and by being a separate process it can run under its own user.<br />
<br />
==== Configuration ====<br />
<br />
The only part that differs from [[#php-fpm configuration]] is the {{ic|<nowiki>location ~ \.php(?:$|/) {}</nowiki>}} block:<br />
{{bc|<nowiki><br />
location ~ \.php(?:$|/) {<br />
include uwsgi_params;<br />
uwsgi_modifier1 14;<br />
# Avoid duplicate headers confusing OC checks<br />
uwsgi_hide_header X-Frame-Options;<br />
uwsgi_hide_header X-XSS-Protection;<br />
uwsgi_hide_header X-Content-Type-Options;<br />
uwsgi_hide_header X-Robots-Tag;<br />
uwsgi_pass unix:/run/uwsgi/owncloud.sock;<br />
}<br />
</nowiki>}}<br />
<br />
Then create a config file for ''uWSGI'':<br />
<br />
{{hc|/etc/uwsgi/owncloud.ini|<nowiki><br />
[uwsgi]<br />
; load the required plugins<br />
plugins = php<br />
; force the sapi name to 'apache', this will enable the opcode cache <br />
php-sapi-name = apache<br />
<br />
; set master process name and socket<br />
; '%n' refers to the name of this configuration file without extension<br />
procname-master = uwsgi %n<br />
master = true<br />
socket = /run/uwsgi/%n.sock<br />
<br />
; drop privileges<br />
uid = http<br />
gid = http<br />
umask = 027<br />
<br />
; run with at least 1 process but increase up to 4 when needed<br />
processes = 4<br />
cheaper = 1<br />
<br />
; reload whenever this config file changes<br />
; %p is the full path of the current config file<br />
touch-reload = %p<br />
<br />
; disable uWSGI request logging<br />
;disable-logging = true<br />
<br />
; enforce a DOCUMENT_ROOT<br />
php-docroot = /usr/share/webapps/%n<br />
; limit allowed extensions<br />
php-allowed-ext = .php<br />
; and search for index.php if required<br />
php-index = index.php<br />
<br />
; set php configuration for this instance of php, no need to edit global php.ini<br />
php-set = date.timezone=Etc/UTC<br />
;php-set = open_basedir=/tmp/:/usr/share/webapps/owncloud:/etc/webapps/owncloud:/dev/urandom<br />
php-set = expose_php=false<br />
; avoid security risk of leaving sessions in world-readable /tmp<br />
php-set = session.save_path=/usr/share/webapps/owncloud/data<br />
<br />
; port of php directives set upstream in /usr/share/webapps/owncloud/.user.ini for use with PHP-FPM<br />
php-set = upload_max_filesize=513M<br />
php-set = post_max_size=513M<br />
php-set = memory_limit=512M<br />
php-set = output_buffering=off<br />
<br />
; load all extensions only in this instance of php, no need to edit global php.ini<br />
;; required core modules<br />
php-set = extension=gd.so<br />
php-set = extension=iconv.so<br />
;php-set = extension=zip.so # enabled by default in global php.ini<br />
<br />
;; database connectors<br />
;; uncomment your selected driver<br />
;php-set = extension=pdo_sqlite.so<br />
;php-set = extension=pdo_mysql.so<br />
;php-set = extension=pdo_pgsql.so<br />
<br />
;; recommended extensions<br />
;php-set = extension=curl.so # enabled by default in global php.ini<br />
php-set = extension=bz2.so<br />
php-set = extension=intl.so<br />
php-set = extension=mcrypt.so<br />
<br />
;; required for specific apps<br />
;php-set = extension=ldap.so # for LDAP integration<br />
;php-set = extension=ftp.so # for FTP storage / external user authentication<br />
;php-set = extension=imap.so # for external user authentication, requires php-imap<br />
<br />
;; recommended for specific apps<br />
;php-set = extension=exif.so # for image rotation in pictures app, requires exiv2<br />
;php-set = extension=gmp.so # for SFTP storage<br />
<br />
;; for preview generation<br />
;; provided by packages in AUR<br />
; php-set = extension=imagick.so<br />
<br />
; opcache<br />
php-set = zend_extension=opcache.so<br />
<br />
; user cache<br />
; provided by php-acpu, to be enabled **either** here **or** in /etc/php/conf.d/apcu.ini<br />
php-set = extension=apcu.so<br />
; per https://github.com/krakjoe/apcu/blob/simplify/INSTALL<br />
php-set = apc.ttl=7200<br />
php-set = apc.enable_cli=1<br />
<br />
cron2 = minute=-15,unique=1 /usr/bin/php -f /usr/share/webapps/owncloud/cron.php 1>/dev/null<br />
</nowiki>}}<br />
<br />
{{Note|<br />
* Do not forget to set your timezone and uncomment the required database connector in the uWSGI config file<br />
* Starting with PHP 7, the [[PHP#Configuration|open_basedir]] directive is [https://www.archlinux.org/news/php-70-packages-released/ no longer set by default] to keep in line with upstream. A commented out version functional until at least OC 8.2 has been left in the config for users wishing to harden security. Be aware that it may [https://github.com/owncloud/core/search?q&#61;open_basedir&type&#61;Issues&utf8&#61;%E2%9C%93 occasionally break things].}}<br />
<br />
{{Warning|The way the [https://doc.owncloud.org/server/9.0/admin_manual/configuration_server/background_jobs_configuration.html ownCloud background job] is currently set up with [https://uwsgi-docs.readthedocs.org/en/latest/Cron.html uWSGI cron] will make use of the default global configuration from {{ic|/etc/php/php.ini}}. This means that none of the specific parameters defined (e.g. required modules) will be enabled, [https://github.com/owncloud/core/issues/12678#issuecomment-66114448 leading to various issues]. One solution is to copy {{ic|/etc/php/php.ini}} to e.g. {{ic|/etc/uwsgi/cron-php.ini}}, make the required modifications there (mirroring {{ic|/etc/uwsgi/owncloud.ini}} parameters) and referencing it in the cron directive by adding the {{ic|-c /etc/uwsgi/cron-php.ini}} option to ''php'' invocation.}}<br />
<br />
==== Activation ====<br />
<br />
[[Uwsgi|uWSGI]] provides a [[Systemd#Using_units|template unit]] that allows to start and enable application using their configuration file name as instance identifier. For example:<br />
# systemctl start uwsgi@owncloud.socket<br />
would start it on demand referencing the configuration file {{ic|/etc/uwsgi/owncloud.ini}}. <br />
<br />
To enable the uwsgi service by default at start-up, run:<br />
# systemctl enable uwsgi@owncloud.socket<br />
<br />
{{Note|Here we make use of [http://0pointer.de/blog/projects/socket-activation.html systemd socket activation] to prevent unnecessary resources consumption when no connections are made to the instance. If you'd rather have it constantly active, simply remove the {{ic|.socket}} part to start and enable the service instead.}}<br />
<br />
See also [[Uwsgi#Starting service]].<br />
<br />
== Synchronization ==<br />
<br />
=== Desktop ===<br />
<br />
The official client can be installed with the {{Pkg|owncloud-client}} package. Alternative versions are avaiable in the [[AUR]]: {{AUR|owncloud-client-beta}}{{Broken package link|{{aur-mirror|owncloud-client-beta}}}}, {{AUR|owncloud-client-git}} and {{AUR|owncloud-client-qt5}}{{Broken package link|{{aur-mirror|owncloud-client-qt5}}}}. Its use is described in [http://doc.owncloud.org/server/7.0/user_manual/files/sync.html this page] of the documentation.<br />
<br />
==== Calendar ====<br />
<br />
To access your ''ownCloud'' calendars using Mozilla [[Thunderbird]]'s [[Thunderbird#Lightning_-_Calendar|Lightning calendar]] you would use the following URL:<br />
<br />
<nowiki>https://ADDRESS/remote.php/caldav/calendars/USERNAME/CALENDARNAME</nowiki><br />
<br />
To access your ''ownCloud'' calendars using CalDAV-compatible programs like Kontact or [[Evolution]], you would use the following URL:<br />
<br />
<nowiki>https://ADDRESS/remote.php/caldav</nowiki><br />
<br />
For details see the [http://doc.owncloud.org/server/7.0/user_manual/pim/calendar.html#synchronizing-calendars-using-caldav official documentation].<br />
<br />
==== Contacts ====<br />
<br />
To sync contacts with [[Thunderbird]] you must install the [http://www.sogo.nu/downloads/frontends.html SOGo frontend], [[Thunderbird#Lightning_-_Calendar|Lightning extension]] and follow [http://doc.owncloud.org/server/7.0/user_manual/pim/sync_thunderbird.html those instructions] from the official doc.<br />
<br />
==== Mounting files with davfs2 ====<br />
<br />
If you want to mount your ownCloud permanently install {{Pkg|davfs2}} (as described in [[Davfs]]) first.<br />
<br />
Considering your ownCloud were at {{ic|https://own.example.com}}, your WebDAV URL would be {{ic|https://own.example.com/remote.php/webdav}} (as of ownCloud 6.0).<br />
<br />
To mount your ownCloud, use:<br />
<br />
# mount -t davfs https://own.example.com/remote.php/webdav /path/to/mount<br />
<br />
You can also create an entry for this in {{ic|/etc/fstab}}<br />
<br />
{{hc|/etc/fstab|<br />
https://own.example.com/remote.php/webdav /path/to/mount davfs rw,user,noauto 0 0<br />
}}<br />
<br />
{{Tip|In order to allow automount you can also store your username (and password if you like) in a file as described in [[Davfs#Mounting as regular user]].}}<br />
<br />
{{Note| If creating/copying files is not possible, while the same operations work on directories, see [[Davfs#Creating/copying files not possible]].}}<br />
<br />
=== Android ===<br />
<br />
There is an official Android app available for a [https://play.google.com/store/apps/details?id=at.bitfire.davdroid small donation on the Play Store] and for free [https://f-droid.org/app/at.bitfire.davdroid on F-Droid].<br />
<br />
To enable contacts and calendar sync:<br />
* if using Android 4+:<br />
*# download [https://davdroid.bitfire.at/] ([https://play.google.com/store/apps/details?id=at.bitfire.davdroid Play Store], [https://f-droid.org/app/at.bitfire.davdroid F-Droid])<br />
*# Enable mod_rewrite.so in httpd.conf<br />
*# create a new DAVdroid account in the ''Account'' settings, and specify your "short" server address and login/password couple, e.g. {{ic|<nowiki>https://cloud.example.com</nowiki>}} (there is no need for the {{ic|<nowiki>/remote.php/{carddav,webdav}</nowiki>}} part if you configured your web server with the proper redirections, as illustrated previously in the article; ''DAVdroid'' will find itself the right URLs)<br />
:For an older version of the app but with still useful info, see [http://www.slsmk.com/sync-android-contacts-calendar-and-files-to-owncloud/ this article].<br />
<br />
* if using an Android version below 4.0 and favouring Free/Libre software solutions, give a try to [https://f-droid.org/repository/browse/?fdfilter=caldav&fdid=com.morphoss.acal aCal] for calendar and contacts sync or CalDAV Sync Adapter ([https://f-droid.org/repository/browse/?fdfilter=caldav&fdid=org.gege.caldavsyncadapter F-Droid]) for just calendar sync; if you are willing to use non-libre software, then the [http://doc.owncloud.org/server/7.0/user_manual/pim/contacts.html#synchronizing-with-android recommended solution] is to use [http://dmfs.org/ CardDAV-Sync and CalDAV-Sync].<br />
<br />
== Important notes ==<br />
<br />
* When using a subdomain (like cloud.example.net), make sure it is covered by your certificate. Otherwise, connection via the ownCloud client or webdav might fail.<br />
<br />
* If you are planning on using ownCloud's [http://owncloud.org/sync-clients/ sync-clients], make sure to have [[ntpd]] installed and running on your ownCloud server, otherwise the sync-clients will fail.<br />
<br />
* Add some [[LAMP#SSL|SSL encryption]] to your connection!<br />
(If adding SSL encryption as above, be sure to edit /etc/httpd/conf/extra/httpd-ssl.conf and change DocumentRoot "/srv/http" to DocumentRoot "/usr/share/webapps/owncloud" )<br />
<br />
* More Apps for ownCloud can be found [http://apps.owncloud.com/ here]<br />
<br />
* To install an new application, download the zip from the apps store, extract it into /srv/http/owncloud/apps/.<br />
Afterwards restart httpd:<br />
<br />
# systemctl restart httpd<br />
<br />
log into your server go to the app sections you should see the new apps in there,<br />
<br />
* If you are protecting access to your ownCloud location with HTTP basic auth, the file "status.php" must be excluded from auth and be publicly accessible. [https://github.com/owncloud/mirall/issues/734]<br />
<br />
=== SABnzbd ===<br />
<br />
When using [[SABnzbd]], you might want to set<br />
folder_rename 0<br />
in your sabnzbd.ini file, because ownCloud will scan the files as soon as they get uploaded, preventing SABnzbd from removing UNPACKING prefixes etc.<br />
<br />
== Troubleshooting ==<br />
<br />
=== Self-signed certificate not accepted ===<br />
<br />
ownCloud uses [[Wikipedia:cURL]] and [[Wikipedia:SabreDAV]] to check if WebDAV is enabled. If you use SSL/TLS with a self-signed certificate, e.g. as shown in [[LAMP]], and access ownCloud's admin panel, you will see the following error message:<br />
<br />
Your web server is not yet properly setup to allow files synchronization because the WebDAV interface seems to be broken.<br />
<br />
Assuming that you followed the [[LAMP]] tutorial, execute the following steps:<br />
<br />
Create a local directory for non-distribution certificates and copy [[LAMP]]s certificate there. This will prevent {{ic|ca-certificates}}-updates from overwriting it.<br />
<br />
# cp /etc/httpd/conf/server.crt /usr/share/ca-certificates/''WWW.EXAMPLE.COM.crt''<br />
<br />
Add ''WWW.EXAMPLE.COM.crt'' to {{ic|/etc/ca-certificates.conf}}:<br />
<br />
''WWW.EXAMPLE.COM.crt''<br />
<br />
Now, regenerate your certificate store:<br />
<br />
# update-ca-certificates<br />
<br />
Restart the httpd service to activate your certificate.<br />
<br />
Should this not work, consider disabling {{ic|mod_curl}} in {{ic|/etc/php/php.ini}}.<br />
<br />
=== Self-signed certificate for Android devices ===<br />
<br />
Once you have followed the setup for SSL, as on [[LAMP#TLS.2FSSL|LAMP]] for example, early versions of DAVdroid will reject the connection because the certificate is not trusted. A certificate can be made as follows on your server:<br />
<br />
# openssl x509 -req -days 365 -in /etc/httpd/conf/server.csr -signkey /etc/httpd/conf/server.key -extfile android.txt -out CA.crt<br />
# openssl x509 -inform PEM -outform DER -in CA.crt -out CA.der.crt <br />
<br />
The file {{ic|android.txt}} should contain the following:<br />
<br />
basicConstraints=CA:true<br />
<br />
Then import {{ic|CA.der.crt}} to your Android device:<br />
<br />
Put the {{ic|CA.der.crt}} file onto the sdcard of your Android device (usually to the internal one, e.g. save from a mail attachment). It should be in the root directory. Go to ''Settings > Security > Credential storage'' and select ''Install from device storage''.<br />
The {{ic|.crt}} file will be detected and you will be prompted to enter a certificate name. After importing the certificate, you will find it in ''Settings > Security > Credential storage > Trusted credentials > User''.<br />
<br />
Thanks to: [http://www.leftbrainthings.com/2013/10/13/creating-and-importing-self-signed-certificate-to-android-device/]<br />
<br />
Another way is to import the certificate directly from your server via [https://play.google.com/store/apps/details?id=at.bitfire.cadroid CAdroid] and follow the instructions there.<br />
<br />
=== Cannot write into config directory! ===<br />
<br />
Check your httpd configuration file (like {{ic|owncloud.conf}}). Add your configuration directory ({{ic|/etc/webapps}} by default) to <br />
<br />
php_admin_value open_basedir "/srv/http/:/home/:/tmp/:/usr/share/pear/:/usr/share/webapps/:/path/to/dir/"<br />
<br />
Restart the httpd or php-fpm service to activate the change.<br />
<br />
=== Cannot create data directory (/path/to/dir) ===<br />
<br />
Check your httpd configuration file (like {{ic|owncloud.conf}}). Add your data directory to<br />
<br />
php_admin_value open_basedir "/srv/http/:/home/:/tmp/:/usr/share/pear/:/usr/share/webapps/:/path/to/dir/"<br />
<br />
Restart the httpd or php-fpm service to activate the change.<br />
<br />
=== CSync failed to find a specific file. ===<br />
<br />
This is most likely a certificate issue. Recreate it, and do not leave the common name empty or you will see the error again.<br />
<br />
# openssl req -new -x509 -nodes -newkey rsa:4096 -keyout server.key -out server.crt<br />
<br />
=== Seeing white page after login ===<br />
<br />
The cause is probably a new app that you installed. To fix that, you can use the occ command as described [https://doc.owncloud.org/server/8.2/admin_manual/configuration_server/occ_command.html here]. So with<br />
sudo -u http php /usr/share/webapps/owncloud/occ app:list<br />
you can list all apps (if you installed owncloud in the standard directory), and with <br />
sudo -u http php /usr/share/webapps/owncloud/occ app:disable <nameOfExtension><br />
you can disable the troubling app.<br />
<br />
Alternatively, you can either use [[phpMyAdmin]] to edit the {{ic|oc_appconfig}} table (if you got lucky and the table has an edit option), or do it by hand with mysql:<br />
<br />
mysql -u root -p owncloud<br />
MariaDB [owncloud]> '''delete from''' oc_appconfig '''where''' appid='<nameOfExtension>' '''and''' configkey='enabled' '''and''' configvalue='yes';<br />
MariaDB [owncloud]> '''insert into''' oc_appconfig (appid,configkey,configvalue) '''values''' ('<nameOfExtension>','enabled','no');<br />
<br />
This should delete the relevant configuration from the table and add it again.<br />
<br />
=== GUI sync client fails to connect ===<br />
<br />
If using HTTP basic authentication, make sure to exclude "status.php", which must be publicly accessible. [https://github.com/owncloud/mirall/issues/734]<br />
<br />
=== Some files upload, but give an error 'Integrity constraint violation...' ===<br />
<br />
You may see the following error in the ownCloud sync client:<br />
<br />
SQLSTATE[23000]: Integrity constraint violation: ... Duplicate entry '...' for key 'fs_storage_path_hash')...<br />
<br />
This is caused by an issue with the File Locking app, which is often not sufficient to keep conflicts from occurring on some webserver configurations. A more complete [https://doc.owncloud.org/server/8.1/admin_manual/configuration_files/files_locking_transactional.html Transactional File Locking] is available that rids these errors, but you must be using the Redis php-caching method. Install {{Pkg|redis}} and {{AUR|php-redis}}, comment out your current php-cache mechanism, and then in {{ic|/etc/php/conf.d/redis.ini}} uncomment {{ic|1=extension=redis.so}}. Then in {{ic|config.php}} make the following changes:<br />
<br />
'memcache.local' => '\OC\Memcache\Redis',<br />
'filelocking.enabled' => 'true',<br />
'memcache.locking' => '\OC\Memcache\Redis',<br />
'redis' => array(<br />
'host' => 'localhost',<br />
'port' => 6379,<br />
'timeout' => 0.0,<br />
),<br />
<br />
and start Redis:<br />
<br />
systemctl enable redis.service<br />
systemctl start redis.service<br />
<br />
Finally, disable the File Locking App, as the Transational File Locking will take care of it (and would conflict).<br />
<br />
If everything is working, you should see 'Transactional File Locking Enabled' under Server Status on the Admin page, and syncs should no longer cause issues.<br />
<br />
=== "Cannot write into apps directory" ===<br />
<br />
As mentioned in the [http://doc.owncloud.org/server/6.0/admin_manual/configuration/configuration_apps.html official admin manual], either you need an apps directory that is writable by the http user, or you need to set {{ic|appstoreenabled}} to {{ic|false}}. <br />
<br />
''Also'', not mentioned there, the directory needs to be in the {{ic|open_basedir}} line in {{ic|/etc/php/php.ini}}.<br />
<br />
{{Accuracy|Does not seem to work with 8.0.2}}<br />
<br />
One clean method is to have the package-installed directory at {{ic|/usr/share/webapps/owncloud/apps}} stay owned by root, and have the user-installed apps go into e.g. {{ic|/var/www/owncloud/apps}}, which is owned by http. Then you can set {{ic|appstoreenabled}} to {{ic|true}} and package upgrades of apps should work fine as well. Relevant lines from {{ic|/etc/webapps/owncloud/config/config.php}}:<br />
<br />
{{bc|<nowiki><br />
'apps_paths' => <br />
array (<br />
0 => <br />
array (<br />
'path' => '/usr/share/webapps/owncloud/apps',<br />
'url' => '/apps',<br />
'writable' => false,<br />
),<br />
1 => <br />
array (<br />
'path' => '/var/www/owncloud/apps',<br />
'url' => '/wapps',<br />
'writable' => true,<br />
),<br />
),<br />
</nowiki>}}<br />
<br />
Example {{ic|open_basedir}} line from {{ic|/etc/php/php.ini}} (you might have other directories in there as well):<br />
<br />
open_basedir = /srv/http/:/usr/share/webapps/:/var/www/owncloud/apps/<br />
<br />
Directory permissions:<br />
<br />
{{hc|$ ls -ld /usr/share/webapps/owncloud/apps /var/www/owncloud/apps/|<br />
<nowiki>drwxr-xr-x 26 root root 4096 des. 14 20:48 /usr/share/webapps/owncloud/apps<br />
drwxr-xr-x 2 http http 48 jan. 20 20:01 /var/www/owncloud/apps/</nowiki>}}<br />
<br />
=== Security warnings even though the recommended settings have been included in nginx.conf ===<br />
<br />
At the top of the admin page there might be a warning to set the {{ic|Strict-Transport-Security}}, {{ic|X-Content-Type-Options}}, {{ic|X-Frame-Options}}, {{ic|X-XSS-Protection}} and {{ic|X-Robots-Tag}} according to https://doc.owncloud.org/server/8.1/admin_manual/configuration_server/harden_server.html even though they are already set like that.<br />
<br />
A possible cause could be that because owncloud sets those settings, uwsgi passed them along and nginx added them again:<br />
{{hc|$ curl -I https://domain.tld|<br />
<nowiki>...<br />
X-XSS-Protection: 1; mode=block<br />
X-Content-Type-Options: nosniff<br />
X-Frame-Options: Sameorigin<br />
X-Robots-Tag: none<br />
Strict-Transport-Security: max-age=15768000; includeSubDomains; preload;<br />
X-Content-Type-Options: nosniff<br />
X-Frame-Options: SAMEORIGIN<br />
X-XSS-Protection: 1; mode=block<br />
X-Robots-Tag: none</nowiki>}}<br />
<br />
While the fast_cgi sample config has a parameter to avoid that ( {{ic|fastcgi_param modHeadersAvailable true; #Avoid sending the security headers twice}} ), when using uwsgi and nginx the following modification of the uwsgi part in nginx.conf could help:<br />
<br />
{{hc| /etc/nginx/nginx.conf|<br />
<nowiki>...<br />
# pass all .php or .php/path urls to uWSGI<br />
location ~ ^(.+\.php)(.*)$ {<br />
include uwsgi_params;<br />
uwsgi_modifier1 14;<br />
# hode following headers received from uwsgi, because otherwise we would send them twice since we already add them in nginx itself<br />
uwsgi_hide_header X-Frame-Options;<br />
uwsgi_hide_header X-XSS-Protection;<br />
uwsgi_hide_header X-Content-Type-Options;<br />
uwsgi_hide_header X-Robots-Tag;<br />
uwsgi_hide_header X-Frame-Options;<br />
#Uncomment line below if you get connection refused error. Remember to commet out line with "uwsgi_pass 127.0.0.1:3001;" below<br />
uwsgi_pass unix:/run/uwsgi/owncloud.sock;<br />
#uwsgi_pass 127.0.0.1:3001;<br />
}<br />
...</nowiki>}}<br />
<br />
=== Password not saved ===<br />
<br />
If the password are not saved and asked on every startup try to install {{Pkg|gnome-keyring}}, helped under xfce4.<br />
<br />
== Upload and Share from File Manager ==<br />
You can use the following script to quickly upload and share files to your ownCloud installation from Thunar (and possibly other filemanagers): https://github.com/schiesbn/shareLinkCreator<br />
You need to edit the file with the proper configuration settings.<br />
'''Note: password is stored as plain text.'''<br />
<br />
== See also ==<br />
* [http://owncloud.org/ ownCloud official website]<br />
* [http://doc.owncloud.org/server/8.2/admin_manual/ ownCloud 8.2 Admin Documentation]</div>Dustballhttps://wiki.archlinux.org/index.php?title=Redshift&diff=431026Redshift2016-04-12T21:10:50Z<p>Dustball: Added a 0 to fade_time, now it's actually a minute and not 6 seconds.</p>
<hr />
<div>[[Category:X server]]<br />
[[Category:Graphics]]<br />
[[Category:Eye candy]]<br />
[[ja:Redshift]]<br />
[[ru:Redshift]]<br />
From the [http://jonls.dk/redshift/ redshift project web page]:<br />
<br />
:Redshift adjusts the color temperature of your screen according to your surroundings. This may help your eyes hurt less if you are working in front of the screen at night. This program is inspired by [http://justgetflux.com f.lux]....<br />
<br />
The project is developed on [https://github.com/jonls/redshift GitHub].<br />
<br />
== Installation ==<br />
<br />
[[Install]] the {{Pkg|redshift}} package. Alternatively, install the {{AUR|redshift-minimal}} package, for a version with minimal dependencies.<br />
<br />
=== Desktop environments ===<br />
<br />
For desktop environments, the {{ic|redshift-gtk}} command is installed with the {{Pkg|redshift}} package. redshift-gtk provides a system tray icon for controlling redshift. redshift-gtk requires the {{Pkg|python-gobject}}, {{Pkg|python-xdg}}, and {{Pkg|librsvg}} packages. [[KDE]] users can use the {{AUR|kdeplasma-applets-redshift}}. {{Grp|plasma}} users can use the {{AUR|plasma5-applets-redshift-control-git}}.<br />
<br />
=== Autostart ===<br />
<br />
There are two ways to have redshift automatically started:<br />
<br />
* By launching redshift on a script under /etc/X11/xinit/xinitrc.d/<br />
* Using the provided systemd service unit files (see [[Systemd#Using units]], be careful, the service can only be started in user mode, see [[systemd/User#Basic setup]]). Two service files are provided, {{ic|/usr/lib/systemd/user/redshift.service}} and {{ic|/usr/lib/systemd/user/redshift-gtk.service}}: activate only one of them depending on whether or not you want the system tray icon. The {{ic|DISPLAY}} environment variable needs to be configured, see [[systemd/User#DISPLAY and XAUTHORITY]].<br />
* By right-clicking the system tray icon when redshift-gtk or plasma5-applets-redshift-control is already launched and selecting 'Autostart'.<br />
{{note|The redshift services files contains {{ic|Restart<nowiki>=</nowiki>always}} so the service will restart infinitely (see {{ic|man systemd.service}}) }}<br />
<br />
== Configuration ==<br />
<br />
Redshift will at least need your location to start, meaning the latitude and longitude of your location. Redshift employs several routines for obtaining your location. If none of them works (e.g. none of the used helper programs is installed), you need to enter your location manually: For most places/cities an easy way is to look up the wikipedia page of that place and get the location from there (search the page for "coordinates").<br />
<br />
=== Quick start ===<br />
<br />
To just get it up and running with a basic setup, issue:<br />
<br />
$ redshift -l LAT:LON<br />
<br />
where LAT is the latitude and LON is the longitude of your location.<br />
<br />
=== Automatic location based on GPS ===<br />
<br />
You can also use {{Pkg|gpsd}} to automatically determine your GPS location and use it as an input for Redshift. Create the following script and pass {{ic|$lat}} and {{ic|$lon}} to {{ic|redshift -l $lat;$lon}}:<br />
<br />
#!/bin/bash<br />
date<br />
#gpsdata=$( gpspipe -w -n 10 | grep -m 1 lon )<br />
gpsdata=$( gpspipe -w | grep -m 1 TPV )<br />
lat=$( echo "$gpsdata" | jsawk 'return this.lat' )<br />
lon=$( echo "$gpsdata" | jsawk 'return this.lon' )<br />
alt=$( echo "$gpsdata" | jsawk 'return this.alt' )<br />
dt=$( echo "$gpsdata" | jsawk 'return this.time' )<br />
echo "$dt"<br />
echo "You are here: $lat, $lon at $alt"<br />
<br />
For more information, see [https://bbs.archlinux.org/viewtopic.php?pid=1389735#p1389735 this] forums thread.<br />
<br />
=== Manual setup ===<br />
<br />
Redshift reads the configuration file {{ic|~/.config/redshift.conf}}, if it exists. However, Redshift does not create that configuration file, so you have to create it manually.<br />
Below is an example (copied from the [http://jonls.dk/redshift/ Redshift website]).<br />
<br />
{{note|There seems to be a bug in Redshift that causes the transition option in the configuration file to not work as described: Instead of handling the transition between day and night it '''only''' changes the transition between application start-up and shutdown (and delay the latter as a consequence). See the [[talk:redshift#Day and night transition|talk page]] and the [https://github.com/jonls/redshift/issues/270 issue on the Redshift project page] for more information.}}<br />
<br />
{{hc|~/.config/redshift.conf|2=<br />
; Global settings for redshift<br />
[redshift]<br />
; Set the day and night screen temperatures<br />
temp-day=5700<br />
temp-night=3500<br />
<br />
; Enable/Disable a smooth transition between day and night<br />
; 0 will cause a direct change from day to night screen temperature.<br />
; 1 will gradually increase or decrease the screen temperature.<br />
transition=1<br />
<br />
; Set the screen brightness. Default is 1.0.<br />
;brightness=0.9<br />
; It is also possible to use different settings for day and night<br />
; since version 1.8.<br />
;brightness-day=0.7<br />
;brightness-night=0.4<br />
; Set the screen gamma (for all colors, or each color channel<br />
; individually)<br />
gamma=0.8<br />
;gamma=0.8:0.7:0.8<br />
; This can also be set individually for day and night since<br />
; version 1.10.<br />
;gamma-day=0.8:0.7:0.8<br />
;gamma-night=0.6<br />
<br />
; Set the location-provider: 'geoclue2' or 'manual'<br />
; type 'redshift -l list' to see possible values.<br />
; The location provider settings are in a different section.<br />
location-provider=manual<br />
<br />
; Set the adjustment-method: 'randr', 'vidmode'<br />
; type 'redshift -m list' to see all possible values.<br />
; 'randr' is the preferred method, 'vidmode' is an older API.<br />
; but works in some cases when 'randr' does not.<br />
; The adjustment method settings are in a different section.<br />
adjustment-method=randr<br />
<br />
; Configuration of the location-provider:<br />
; type 'redshift -l PROVIDER:help' to see the settings.<br />
; ex: 'redshift -l manual:help'<br />
; Keep in mind that longitudes west of Greenwich (e.g. the Americas)<br />
; are negative numbers.<br />
[manual]<br />
lat=48.1<br />
lon=11.6<br />
<br />
; Configuration of the adjustment-method<br />
; type 'redshift -m METHOD:help' to see the settings.<br />
; ex: 'redshift -m randr:help'<br />
; In this example, randr is configured to adjust screen 1.<br />
; Note that the numbering starts from 0, so this is actually the<br />
; second screen. If this option is not specified, Redshift will try<br />
; to adjust _all_ screens.<br />
[randr]<br />
screen=1<br />
}}<br />
<br />
=== Use real screen brightness ===<br />
<br />
Redshift has a brightness adjustment setting, but it does not work the way most people might expect. In fact it is a fake brightness adjustment obtained by manipulating the gamma ramps, which means that it does not reduce the backlight of the screen. [http://jonls.dk/redshift/#known-bugs-and-limitations]<br />
<br />
Changing screen backlight is possible with redshift hooks and {{pkg|xorg-xrandr}}.<br />
You need to create a file in {{ic|~/.config/redshift/hooks}} and make it executable. You can use and edit this example. <br />
<br />
{{hc|<br />
~/.config/redshift/hooks/brightness.sh|output=#!/bin/sh<br />
<br />
# Set brightness via xbrightness when redshift status changes<br />
<br />
# Set brightness values for each status.<br />
# Range from 1 to 100 is valid<br />
brightness_day="100"<br />
brightness_transition="50"<br />
brightness_night="10"<br />
# Set fade time for changes to one minute<br />
fade_time=60000<br />
<br />
case $1 in<br />
period-changed)<br />
case $3 in<br />
night)<br />
xbacklight -set $brightness_night -time $fade_time<br />
;;<br />
transition)<br />
xbacklight -set $brightness_transition -time $fade_time<br />
;;<br />
day)<br />
xbacklight -set $brightness_day -time $fade_time<br />
;;<br />
esac<br />
;;<br />
esac<br />
}}<br />
<br />
== Troubleshooting ==<br />
<br />
=== Screen 1 could not be found ===<br />
<br />
Locate configuration-file "redshift.conf" in your distribution and change "screen 1" to "screen 0"<br />
<br />
=== redshift-gtk will not start ===<br />
<br />
<br />
<br />
redshift-gtk requires optional dependencies to work correctly. To verify any missing dependencies, run {{ic|redshift-gtk}} in the command line. Similar output to the following would be produced:<br />
<br />
Traceback (most recent call last):<br />
File "/usr/bin/redshift-gtk", line 26, in <module><br />
from redshift_gtk.statusicon import run<br />
File "/usr/lib/python3.4/site-packages/redshift_gtk/statusicon.py", line 31, in <module><br />
from gi.repository import Gtk, GLib<br />
ImportError: No module named 'gi.repository'<br />
<br />
If this is the case, installing {{Pkg|python-gobject}}, {{Pkg|python-xdg}}, and {{Pkg|librsvg}} packages solves this issue.<br />
<br />
=== Failed to run Redshift due to geoclue2 ===<br />
By default, the geoclue2 configuration files does not allow Redshift access.<br />
In order to allow access, add the following lines to {{ic|/etc/geoclue/geoclue.conf}}<br />
{{hc|/etc/geoclue/geoclue.conf|2=<br />
[redshift]<br />
allowed=true<br />
system=false<br />
users=<br />
}}<br />
<br />
If using Gnome, you can also toggle Location Services to "On" in "Settings -> Privacy"<br />
<br />
=== If you can't get redshift to autostart in i3 ===<br />
You can add 'exec --no-startup-id redshift-gtk to your i3 config<br />
<br />
== See also ==<br />
<br />
* [http://jonls.dk/redshift Redshift website]<br />
* [http://github.com/jonls/redshift Redshift on github]</div>Dustballhttps://wiki.archlinux.org/index.php?title=Taskd&diff=427269Taskd2016-03-23T05:59:20Z<p>Dustball: Formatting, added "Bad Key" section.</p>
<hr />
<div>[[Category:Networking]]<br />
[https://tasktools.org/projects/taskd.html taskd] is a lightweight, secure server providing multi-user, multi-client access to task data. This allows true syncing between desktop and mobile clients.<br />
<br />
== Server ==<br />
=== Installation ===<br />
taskd is available in the AUR as {{AUR|taskd}} and {{AUR|taskd-git}}.<br />
<br />
=== Setup ===<br />
Once taskd is installed, you need to set it up. The first step is to {{bc|export TASKDDATA<nowiki>=</nowiki>/var/lib/taskd }} (otherwise you need to append {{ic|--data /var/lib/taskd}} to every taskd command).<br />
<br />
Next, edit the {{ic|/usr/share/doc/taskd/pki/vars}} file. The {{ic|CN<nowiki>=</nowiki>}} line must either match the server's hostname or IP address, depending on how you connect. Once the file is edited to your heart's content, run {{ic|/usr/share/doc/taskd/pki/generate}}. This will create selfsigned certificates for your server. Copy all generated *.pem-files to {{ic|/var/lib/taskd}}. Note that at least the ca.cert.pem must remain in the pki folder for the user-certificate generation later on.<br />
<br />
Now you need to configure the taskd config. This can be done by either using {{ic|taskd config}} or editing {{ic|/var/lib/taskd/config}} directly.<br />
{{bc|taskd config --force client.cert $TASKDDATA/client.cert.pem<br />
taskd config --force client.key $TASKDDATA/client.key.pem<br />
taskd config --force server.cert $TASKDDATA/server.cert.pem<br />
taskd config --force server.key $TASKDDATA/server.key.pem<br />
taskd config --force server.crl $TASKDDATA/server.crl.pem<br />
taskd config --force ca.cert $TASKDDATA/ca.cert.pem}}<br />
<br />
Additionally you should change where taskd logs to, since the default is /tmp/log. This can be done by running<br />
{{bc|touch /var/log/taskd.log<br />
chmod taskd:taskd /var/log/taskd.log<br />
taskd config --force log /var/log/taskd.log}}<br />
<br />
The last step is to set taskd's server name, which must be the same as the one used in the certificates: {{ic|taskd config --force server servername:port}}. Note that taskd has no default port and it must be set manually.<br />
<br />
=== Adding a user in taskd ===<br />
taskd knows about groups and users, and each user must be in a group. The group- and usernames can be whatever you want.<br />
{{bc|taskd add org group<br />
taskd add user group username}}<br />
Note the key the last command returns, the user will need it to synchronize.<br />
<br />
Return to {{ic|/usr/share/doc/taskd/pki/}} and run {{bc|./generate.client username}} This will return username.cert.pem and username.key.pem. The username.key.pem, username.cert.pem and ca.cert.pem must be added to the user's {{ic|~/.task}} directory.<br />
<br />
== Client ==<br />
=== User configuration ===<br />
Once the *.pem files are added to {{ic|~/.task}}, they must be added to the task config, along with the servername and unique ID.<br />
<br />
{{bc|task config taskd.certificate ~/.task/username.cert.pem<br />
task config taskd.key ~/.task/username.key.pem<br />
task config taskd.ca ~/.task/ca.cert.pem<br />
task config taskd.server servername:port<br />
task config taskd.credentials group/username/key}}<br />
<br />
After you're done, check the config file. task likes to escape slashes.<br />
<br />
After running a {{ic|task sync init}}, the user is able to synchronize taskwarrior whereever pleased.<br />
<br />
=== Using the Android Taskwarrior app ===<br />
Before you even download the android app, you need to create a folder. On your external storage (or if you only have an internal one, then there) create the folder {{ic|Android/data/kvj.taskw/files/key}} where "key" is the same as the key given when creating the user in taskd. Then add the username.key.pem, username.cert.pem and ca.cert.pem files to that folder. Create a new file in that folder called {{ic|.taskrc.android}}. It should look like this:<br />
{{bc|taskd.server<nowiki>=</nowiki>servername:port<br />
taskd.credentials<nowiki>=</nowiki>group/username/key<br />
taskd.certificate<nowiki>=</nowiki>username.cert.pem<br />
taskd.key<nowiki>=</nowiki>username.key.pem<br />
taskd.ca<nowiki>=</nowiki>ca.cert.pem}}<br />
<br />
Now download the app and start it. When adding a profile, choose the datafolder you just created. Taskwarrior should now sync and work as expected.<br />
<br />
== Troubleshooting ==<br />
=== Unreachable Server ===<br />
Should the server be unreachable but running, it bound itself to an IPv6 address. You can force IPv4 by adding {{ic|family<nowiki>=</nowiki>IPv4}} to {{ic|/var/lib/taskd/config}}. Restart taskd afterwards.<br />
<br />
=== "Bad Key" ===<br />
If the server responds with a "Bad Key" error even though you just generated them, check the permissions of the created folders (everything in {{ic|/var/lib/taskd/}} and subfolders). taskd doesn't set it's own uid / gid, so those folders must be manually chowned to taskd.</div>Dustballhttps://wiki.archlinux.org/index.php?title=Taskd&diff=427222Taskd2016-03-22T19:53:14Z<p>Dustball: </p>
<hr />
<div>[[Category:Networking]]<br />
[https://tasktools.org/projects/taskd.html taskd] is a lightweight, secure server providing multi-user, multi-client access to task data. This allows true syncing between desktop and mobile clients.<br />
<br />
== Server ==<br />
=== Installation ===<br />
taskd is available in the AUR as {{AUR|taskd}} and {{AUR|taskd-git}}.<br />
<br />
=== Setup ===<br />
Once taskd is installed, you need to set it up. The first step is to {{bc|export TASKDDATA<nowiki>=</nowiki>/var/lib/taskd }} (otherwise you need to append {{ic|--data /var/lib/taskd}} to every taskd command).<br />
<br />
Next, edit the {{ic|/usr/share/doc/taskd/pki/vars}} file. The {{ic|CN<nowiki>=</nowiki>}} line must either match the server's hostname or IP address, depending on how you connect. Once the file is edited to your heart's content, run {{ic|/usr/share/doc/taskd/pki/generate}}. This will create selfsigned certificates for your server. Copy all generated *.pem-files to {{ic|/var/lib/taskd}}. Note that at least the ca.cert.pem must remain in the pki folder for the user-certificate generation later on.<br />
<br />
Now you need to configure the taskd config. This can be done by either using {{ic|taskd config}} or editing {{ic|/var/lib/taskd/config}} directly.<br />
{{bc|taskd config --force client.cert $TASKDDATA/client.cert.pem<br />
taskd config --force client.key $TASKDDATA/client.key.pem<br />
taskd config --force server.cert $TASKDDATA/server.cert.pem<br />
taskd config --force server.key $TASKDDATA/server.key.pem<br />
taskd config --force server.crl $TASKDDATA/server.crl.pem<br />
taskd config --force ca.cert $TASKDDATA/ca.cert.pem}}<br />
<br />
Additionally you should change where taskd logs to, since the default is /tmp/log. This can be done by running<br />
{{bc|touch /var/log/taskd.log<br />
chmod taskd:taskd /var/log/taskd.log<br />
taskd config --force log /var/log/taskd.log}}<br />
<br />
The last step is to set taskd's server name, which must be the same as the one used in the certificates: {{ic|taskd config --force server servername:port}}. Note that taskd has no default port and it must be set manually.<br />
<br />
=== Adding a user in taskd ===<br />
taskd knows about groups and users, and each user must be in a group. The group- and usernames can be whatever you want.<br />
{{bc|taskd add org group<br />
taskd add user group username}}<br />
Note the key the last command returns, the user will need it to synchronize.<br />
<br />
Return to {{ic|/usr/share/doc/taskd/pki/}} and run {{bc|./generate.client username}} This will return username.cert.pem and username.key.pem. The username.key.pem, username.cert.pem and ca.cert.pem must be added to the user's {{ic|~/.task}} directory.<br />
<br />
== Client ==<br />
=== User configuration ===<br />
Once the *.pem files are added to {{ic|~/.task}}, they must be added to the task config, along with the servername and unique ID.<br />
<br />
{{bc|task config taskd.certificate ~/.task/username.cert.pem<br />
task config taskd.key ~/.task/username.key.pem<br />
task config taskd.ca ~/.task/ca.cert.pem<br />
task config taskd.server servername:port<br />
task config taskd.credentials group/username/key}}<br />
<br />
After you're done, check the config file. task likes to escape slashes.<br />
<br />
After running a {{ic|task sync init}}, the user is able to synchronize taskwarrior whereever pleased.<br />
<br />
=== Using the Android Taskwarrior app ===<br />
Before you even download the android app, you need to create a folder. On your external storage (or if you only have an internal one, then there) create the folder {{ic|Android/data/kvj.taskw/files/key}} where "key" is the same as the key given when creating the user in taskd. Then add the username.key.pem, username.cert.pem and ca.cert.pem files to that folder. Create a new file in that folder called {{ic|.taskrc.android}}. It should look like this:<br />
{{bc|taskd.server<nowiki>=</nowiki>servername:port<br />
taskd.credentials<nowiki>=</nowiki>group/username/key<br />
taskd.certificate<nowiki>=</nowiki>username.cert.pem<br />
taskd.key<nowiki>=</nowiki>username.key.pem<br />
taskd.ca<nowiki>=</nowiki>ca.cert.pem}}<br />
<br />
Now download the app and start it. When adding a profile, choose the datafolder you just created. Taskwarrior should now sync and work as expected.<br />
<br />
== Troubleshooting ==<br />
Should the server be unreachable but running, it bound itself to an IPv6 address. You can force IPv4 by adding {{ic|family<nowiki>=</nowiki>IPv4}} to {{ic|/var/lib/taskd/config}}. Restart taskd afterwards.</div>Dustballhttps://wiki.archlinux.org/index.php?title=Taskd&diff=427221Taskd2016-03-22T19:52:45Z<p>Dustball: Differentiated Server from Clients</p>
<hr />
<div>[[Category:Networking]]<br />
[https://tasktools.org/projects/taskd.html taskd] is a lightweight, secure server providing multi-user, multi-client access to task data. This allows true syncing between desktop and mobile clients.<br />
<br />
== Server ==<br />
== =Installation ===<br />
taskd is available in the AUR as {{AUR|taskd}} and {{AUR|taskd-git}}.<br />
<br />
=== Setup ===<br />
Once taskd is installed, you need to set it up. The first step is to {{bc|export TASKDDATA<nowiki>=</nowiki>/var/lib/taskd }} (otherwise you need to append {{ic|--data /var/lib/taskd}} to every taskd command).<br />
<br />
Next, edit the {{ic|/usr/share/doc/taskd/pki/vars}} file. The {{ic|CN<nowiki>=</nowiki>}} line must either match the server's hostname or IP address, depending on how you connect. Once the file is edited to your heart's content, run {{ic|/usr/share/doc/taskd/pki/generate}}. This will create selfsigned certificates for your server. Copy all generated *.pem-files to {{ic|/var/lib/taskd}}. Note that at least the ca.cert.pem must remain in the pki folder for the user-certificate generation later on.<br />
<br />
Now you need to configure the taskd config. This can be done by either using {{ic|taskd config}} or editing {{ic|/var/lib/taskd/config}} directly.<br />
{{bc|taskd config --force client.cert $TASKDDATA/client.cert.pem<br />
taskd config --force client.key $TASKDDATA/client.key.pem<br />
taskd config --force server.cert $TASKDDATA/server.cert.pem<br />
taskd config --force server.key $TASKDDATA/server.key.pem<br />
taskd config --force server.crl $TASKDDATA/server.crl.pem<br />
taskd config --force ca.cert $TASKDDATA/ca.cert.pem}}<br />
<br />
Additionally you should change where taskd logs to, since the default is /tmp/log. This can be done by running<br />
{{bc|touch /var/log/taskd.log<br />
chmod taskd:taskd /var/log/taskd.log<br />
taskd config --force log /var/log/taskd.log}}<br />
<br />
The last step is to set taskd's server name, which must be the same as the one used in the certificates: {{ic|taskd config --force server servername:port}}. Note that taskd has no default port and it must be set manually.<br />
<br />
=== Adding a user in taskd ===<br />
taskd knows about groups and users, and each user must be in a group. The group- and usernames can be whatever you want.<br />
{{bc|taskd add org group<br />
taskd add user group username}}<br />
Note the key the last command returns, the user will need it to synchronize.<br />
<br />
Return to {{ic|/usr/share/doc/taskd/pki/}} and run {{bc|./generate.client username}} This will return username.cert.pem and username.key.pem. The username.key.pem, username.cert.pem and ca.cert.pem must be added to the user's {{ic|~/.task}} directory.<br />
<br />
== Client ==<br />
=== User configuration ===<br />
Once the *.pem files are added to {{ic|~/.task}}, they must be added to the task config, along with the servername and unique ID.<br />
<br />
{{bc|task config taskd.certificate ~/.task/username.cert.pem<br />
task config taskd.key ~/.task/username.key.pem<br />
task config taskd.ca ~/.task/ca.cert.pem<br />
task config taskd.server servername:port<br />
task config taskd.credentials group/username/key}}<br />
<br />
After you're done, check the config file. task likes to escape slashes.<br />
<br />
After running a {{ic|task sync init}}, the user is able to synchronize taskwarrior whereever pleased.<br />
<br />
=== Using the Android Taskwarrior app ===<br />
Before you even download the android app, you need to create a folder. On your external storage (or if you only have an internal one, then there) create the folder {{ic|Android/data/kvj.taskw/files/key}} where "key" is the same as the key given when creating the user in taskd. Then add the username.key.pem, username.cert.pem and ca.cert.pem files to that folder. Create a new file in that folder called {{ic|.taskrc.android}}. It should look like this:<br />
{{bc|taskd.server<nowiki>=</nowiki>servername:port<br />
taskd.credentials<nowiki>=</nowiki>group/username/key<br />
taskd.certificate<nowiki>=</nowiki>username.cert.pem<br />
taskd.key<nowiki>=</nowiki>username.key.pem<br />
taskd.ca<nowiki>=</nowiki>ca.cert.pem}}<br />
<br />
Now download the app and start it. When adding a profile, choose the datafolder you just created. Taskwarrior should now sync and work as expected.<br />
<br />
== Troubleshooting ==<br />
Should the server be unreachable but running, it bound itself to an IPv6 address. You can force IPv4 by adding {{ic|family<nowiki>=</nowiki>IPv4}} to {{ic|/var/lib/taskd/config}}. Restart taskd afterwards.</div>Dustballhttps://wiki.archlinux.org/index.php?title=Taskd&diff=427212Taskd2016-03-22T18:37:57Z<p>Dustball: "key.pem", not "cert.pem"</p>
<hr />
<div>[[Category:Networking]]<br />
[https://tasktools.org/projects/taskd.html taskd] is a lightweight, secure server providing multi-user, multi-client access to task data. This allows true syncing between desktop and mobile clients.<br />
<br />
== Installation ==<br />
taskd is available in the AUR as {{AUR|taskd}} and {{AUR|taskd-git}}.<br />
<br />
== Setup ==<br />
Once taskd is installed, you need to set it up. The first step is to {{bc|export TASKDDATA<nowiki>=</nowiki>/var/lib/taskd }} (otherwise you need to append {{ic|--data /var/lib/taskd}} to every taskd command).<br />
<br />
Next, edit the {{ic|/usr/share/doc/taskd/pki/vars}} file. The {{ic|CN<nowiki>=</nowiki>}} line must either match the server's hostname or IP address, depending on how you connect. Once the file is edited to your heart's content, run {{ic|/usr/share/doc/taskd/pki/generate}}. This will create selfsigned certificates for your server. Copy all generated *.pem-files to {{ic|/var/lib/taskd}}. Note that at least the ca.cert.pem must remain in the pki folder for the user-certificate generation later on.<br />
<br />
Now you need to configure the taskd config. This can be done by either using {{ic|taskd config}} or editing {{ic|/var/lib/taskd/config}} directly.<br />
{{bc|taskd config --force client.cert $TASKDDATA/client.cert.pem<br />
taskd config --force client.key $TASKDDATA/client.key.pem<br />
taskd config --force server.cert $TASKDDATA/server.cert.pem<br />
taskd config --force server.key $TASKDDATA/server.key.pem<br />
taskd config --force server.crl $TASKDDATA/server.crl.pem<br />
taskd config --force ca.cert $TASKDDATA/ca.cert.pem}}<br />
<br />
Additionally you should change where taskd logs to, since the default is /tmp/log. This can be done by running<br />
{{bc|touch /var/log/taskd.log<br />
chmod taskd:taskd /var/log/taskd.log<br />
taskd config --force log /var/log/taskd.log}}<br />
<br />
The last step is to set taskd's server name, which must be the same as the one used in the certificates: {{ic|taskd config --force server servername:port}}. Note that taskd has no default port and it must be set manually.<br />
<br />
== Adding a user in taskd ==<br />
taskd knows about groups and users, and each user must be in a group. The group- and usernames can be whatever you want.<br />
{{bc|taskd add org group<br />
taskd add user group username}}<br />
Note the key the last command returns, the user will need it to synchronize.<br />
<br />
Return to {{ic|/usr/share/doc/taskd/pki/}} and run {{bc|./generate.client username}} This will return username.cert.pem and username.key.pem. The username.key.pem, username.cert.pem and ca.cert.pem must be added to the user's {{ic|~/.task}} directory.<br />
<br />
== User configuration ==<br />
Once the *.pem files are added to {{ic|~/.task}}, they must be added to the task config, along with the servername and unique ID.<br />
<br />
{{bc|task config taskd.certificate ~/.task/username.cert.pem<br />
task config taskd.key ~/.task/username.key.pem<br />
task config taskd.ca ~/.task/ca.cert.pem<br />
task config taskd.server servername:port<br />
task config taskd.credentials group/username/key}}<br />
<br />
After you're done, check the config file. task likes to escape slashes.<br />
<br />
After running a {{ic|task sync init}}, the user is able to synchronize taskwarrior whereever pleased.<br />
<br />
== Using the Android Taskwarrior app ==<br />
Before you even download the android app, you need to create a folder. On your external storage (or if you only have an internal one, then there) create the folder {{ic|Android/data/kvj.taskw/files/key}} where "key" is the same as the key given when creating the user in taskd. Then add the username.key.pem, username.cert.pem and ca.cert.pem files to that folder. Create a new file in that folder called {{ic|.taskrc.android}}. It should look like this:<br />
{{bc|taskd.server<nowiki>=</nowiki>servername:port<br />
taskd.credentials<nowiki>=</nowiki>group/username/key<br />
taskd.certificate<nowiki>=</nowiki>username.cert.pem<br />
taskd.key<nowiki>=</nowiki>username.key.pem<br />
taskd.ca<nowiki>=</nowiki>ca.cert.pem}}<br />
<br />
Now download the app and start it. When adding a profile, choose the datafolder you just created. Taskwarrior should now sync and work as expected.<br />
<br />
== Troubleshooting ==<br />
Should the server be unreachable but running, it bound itself to an IPv6 address. You can force IPv4 by adding {{ic|family<nowiki>=</nowiki>IPv4}} to {{ic|/var/lib/taskd/config}}. Restart taskd afterwards.</div>Dustballhttps://wiki.archlinux.org/index.php?title=Taskd&diff=427076Taskd2016-03-22T11:19:27Z<p>Dustball: added networking category</p>
<hr />
<div>[[Category:Networking]]<br />
<br />
[https://tasktools.org/projects/taskd.html taskd] is a lightweight, secure server providing multi-user, multi-client access to task data. This allows true syncing between desktop and mobile clients.<br />
<br />
== Installation ==<br />
taskd is available in the AUR as {{AUR|taskd}} and {{AUR|taskd-git}}.<br />
<br />
== Setup ==<br />
Once taskd is installed, you need to set it up. The first step is to {{bc|export TASKDDATA<nowiki>=</nowiki>/var/lib/taskd }} (otherwise you need to append {{ic|--data /var/lib/taskd}} to every taskd command).<br />
<br />
Next, edit the {{ic|/usr/share/doc/taskd/pki/vars}} file. The {{ic|CN<nowiki>=</nowiki>}} line must either match the server's hostname or IP address, depending on how you connect. Once the file is edited to your heart's content, run {{ic|/usr/share/doc/taskd/pki/generate}}. This will create selfsigned certificates for your server. Copy all generated *.pem-files to {{ic|/var/lib/taskd}}. Note that at least the ca.cert.pem must remain in the pki folder for the user-certificate generation later on.<br />
<br />
Now you need to configure the taskd config. This can be done by either using {{ic|taskd config}} or editing {{ic|/var/lib/taskd/config}} directly.<br />
{{bc|taskd config --force client.cert $TASKDDATA/client.cert.pem<br />
taskd config --force client.key $TASKDDATA/client.key.pem<br />
taskd config --force server.cert $TASKDDATA/server.cert.pem<br />
taskd config --force server.key $TASKDDATA/server.key.pem<br />
taskd config --force server.crl $TASKDDATA/server.crl.pem<br />
taskd config --force ca.cert $TASKDDATA/ca.cert.pem}}<br />
<br />
Additionally you should change where taskd logs to, since the default is /tmp/log. This can be done by running<br />
{{bc|touch /var/log/taskd.log<br />
chmod taskd:taskd /var/log/taskd.log<br />
taskd config --force log /var/log/taskd.log}}<br />
<br />
The last step is to set taskd's server name, which must be the same as the one used in the certificates: {{ic|taskd config --force server servername:port}}. Note that taskd has no default port and it must be set manually.<br />
<br />
== Adding a user in taskd ==<br />
taskd knows about groups and users, and each user must be in a group. The group- and usernames can be whatever you want.<br />
{{bc|taskd add org group<br />
taskd add user group username}}<br />
Note the key the last command returns, the user will need it to synchronize.<br />
<br />
Return to {{ic|/usr/share/doc/taskd/pki/}} and run {{bc|./generate.client username}} This will return username.cert.pem and username.key.pem. The username.key.pem, username.cert.pem and ca.cert.pem must be added to the user's {{ic|~/.task}} directory.<br />
<br />
== User configuration ==<br />
Once the *.pem files are added to {{ic|~/.task}}, they must be added to the task config, along with the servername and unique ID.<br />
<br />
{{bc|task config taskd.certificate ~/.task/username.cert.pem<br />
task config taskd.key ~/.task/username.key.pem<br />
task config taskd.ca ~/.task/ca.cert.pem<br />
task config taskd.server servername:port<br />
task config taskd.credentials group/username/key}}<br />
<br />
After you're done, check the config file. task likes to escape slashes.<br />
<br />
After running a {{ic|task sync init}}, the user is able to synchronize taskwarrior whereever pleased.<br />
<br />
== Using the Android Taskwarrior app ==<br />
Before you even download the android app, you need to create a folder. On your external storage (or if you only have an internal one, then there) create the folder {{ic|Android/data/kvj.taskw/files/key}} where "key" is the same as the key given when creating the user in taskd. Then add the username.key.pem, username.cert.pem and ca.cert.pem files to that folder. Create a new file in that folder called {{ic|.taskrc.android}}. It should look like this:<br />
{{bc|taskd.server<nowiki>=</nowiki>servername:port<br />
taskd.credentials<nowiki>=</nowiki>group/username/key<br />
taskd.certificate<nowiki>=</nowiki>username.cert.pem<br />
taskd.key<nowiki>=</nowiki>username.cert.pem<br />
taskd.ca<nowiki>=</nowiki>ca.cert.pem}}<br />
<br />
Now download the app and start it. When adding a profile, choose the datafolder you just created. Taskwarrior should now sync and work as expected.<br />
<br />
== Troubleshooting ==<br />
Should the server be unreachable but running, it bound itself to an IPv6 address. You can force IPv4 by adding {{ic|family<nowiki>=</nowiki>IPv4}} to {{ic|/var/lib/taskd/config}}. Restart taskd afterwards.</div>Dustballhttps://wiki.archlinux.org/index.php?title=Taskd&diff=427075Taskd2016-03-22T11:09:07Z<p>Dustball: Added a guide for the android app.</p>
<hr />
<div>[https://tasktools.org/projects/taskd.html taskd] is a lightweight, secure server providing multi-user, multi-client access to task data. This allows true syncing between desktop and mobile clients.<br />
<br />
== Installation ==<br />
taskd is available in the AUR as {{AUR|taskd}} and {{AUR|taskd-git}}.<br />
<br />
== Setup ==<br />
Once taskd is installed, you need to set it up. The first step is to {{bc|export TASKDDATA<nowiki>=</nowiki>/var/lib/taskd }} (otherwise you need to append {{ic|--data /var/lib/taskd}} to every taskd command).<br />
<br />
Next, edit the {{ic|/usr/share/doc/taskd/pki/vars}} file. The {{ic|CN<nowiki>=</nowiki>}} line must either match the server's hostname or IP address, depending on how you connect. Once the file is edited to your heart's content, run {{ic|/usr/share/doc/taskd/pki/generate}}. This will create selfsigned certificates for your server. Copy all generated *.pem-files to {{ic|/var/lib/taskd}}. Note that at least the ca.cert.pem must remain in the pki folder for the user-certificate generation later on.<br />
<br />
Now you need to configure the taskd config. This can be done by either using {{ic|taskd config}} or editing {{ic|/var/lib/taskd/config}} directly.<br />
{{bc|taskd config --force client.cert $TASKDDATA/client.cert.pem<br />
taskd config --force client.key $TASKDDATA/client.key.pem<br />
taskd config --force server.cert $TASKDDATA/server.cert.pem<br />
taskd config --force server.key $TASKDDATA/server.key.pem<br />
taskd config --force server.crl $TASKDDATA/server.crl.pem<br />
taskd config --force ca.cert $TASKDDATA/ca.cert.pem}}<br />
<br />
Additionally you should change where taskd logs to, since the default is /tmp/log. This can be done by running<br />
{{bc|touch /var/log/taskd.log<br />
chmod taskd:taskd /var/log/taskd.log<br />
taskd config --force log /var/log/taskd.log}}<br />
<br />
The last step is to set taskd's server name, which must be the same as the one used in the certificates: {{ic|taskd config --force server servername:port}}. Note that taskd has no default port and it must be set manually.<br />
<br />
== Adding a user in taskd ==<br />
taskd knows about groups and users, and each user must be in a group. The group- and usernames can be whatever you want.<br />
{{bc|taskd add org group<br />
taskd add user group username}}<br />
Note the key the last command returns, the user will need it to synchronize.<br />
<br />
Return to {{ic|/usr/share/doc/taskd/pki/}} and run {{bc|./generate.client username}} This will return username.cert.pem and username.key.pem. The username.key.pem, username.cert.pem and ca.cert.pem must be added to the user's {{ic|~/.task}} directory.<br />
<br />
== User configuration ==<br />
Once the *.pem files are added to {{ic|~/.task}}, they must be added to the task config, along with the servername and unique ID.<br />
<br />
{{bc|task config taskd.certificate ~/.task/username.cert.pem<br />
task config taskd.key ~/.task/username.key.pem<br />
task config taskd.ca ~/.task/ca.cert.pem<br />
task config taskd.server servername:port<br />
task config taskd.credentials group/username/key}}<br />
<br />
After you're done, check the config file. task likes to escape slashes.<br />
<br />
After running a {{ic|task sync init}}, the user is able to synchronize taskwarrior whereever pleased.<br />
<br />
== Using the Android Taskwarrior app ==<br />
Before you even download the android app, you need to create a folder. On your external storage (or if you only have an internal one, then there) create the folder {{ic|Android/data/kvj.taskw/files/key}} where "key" is the same as the key given when creating the user in taskd. Then add the username.key.pem, username.cert.pem and ca.cert.pem files to that folder. Create a new file in that folder called {{ic|.taskrc.android}}. It should look like this:<br />
{{bc|taskd.server<nowiki>=</nowiki>servername:port<br />
taskd.credentials<nowiki>=</nowiki>group/username/key<br />
taskd.certificate<nowiki>=</nowiki>username.cert.pem<br />
taskd.key<nowiki>=</nowiki>username.cert.pem<br />
taskd.ca<nowiki>=</nowiki>ca.cert.pem}}<br />
<br />
Now download the app and start it. When adding a profile, choose the datafolder you just created. Taskwarrior should now sync and work as expected.<br />
<br />
== Troubleshooting ==<br />
Should the server be unreachable but running, it bound itself to an IPv6 address. You can force IPv4 by adding {{ic|family<nowiki>=</nowiki>IPv4}} to {{ic|/var/lib/taskd/config}}. Restart taskd afterwards.</div>Dustballhttps://wiki.archlinux.org/index.php?title=Dynamic_Kernel_Module_Support&diff=427073Dynamic Kernel Module Support2016-03-22T11:00:25Z<p>Dustball: /* Installation */ Added need for headers.</p>
<hr />
<div>[[Category:Kernel]]<br />
[[ja:Dynamic Kernel Module Support]]<br />
[[ru:Dynamic Kernel Module Support]]<br />
[[zh-cn:Dynamic Kernel Module Support]]<br />
From [[wikipedia:Dynamic_Kernel_Module_Support|Wikipedia]]:<br />
<br />
: '''Dynamic Kernel Module Support''' ('''DKMS''') is a program/framework that enables generating Linux kernel modules whose sources generally reside outside the kernel source tree. The concept is to have DKMS modules automatically rebuilt when a new kernel is installed.<br />
<br />
== Effects ==<br />
<br />
The ''positive effect'' of using DKMS is that modules are often able to be rebuilt when the kernel is upgrading. This means that a user does not have to wait for a company, project, or package maintainer to release a new version of the module.<br />
<br />
The ''negative effect'' of using DKMS is that DKMS breaks the Pacman database. The problem is that the resulting modules do not belong to the package anymore, so Pacman cannot track them. Theoretically though, support could be added through hooks (see: {{Bug|2985}}).<br />
<br />
== Installation ==<br />
<br />
[[Install]] the {{Pkg|dkms}} package and the headers for your kernel (for the standard kernel this would be {{Pkg|linux-headers}}).<br />
<br />
A good number of modules that lie outside the kernel source tree have a DKMS variant; a few are hosted in the [https://www.archlinux.org/packages/?&q=dkms official repositories], most are found in the [https://aur.archlinux.org/packages/?SeB=n&K=dkms AUR]. Listed below are a few of the software packages that have a DKMS variant with additional links to dedicated sections where available:<br />
<br />
* [[AMD Catalyst]]: {{AUR|catalyst-dkms}}{{Broken package link|{{aur-mirror|catalyst-dkms}}}}<br />
* [[NVIDIA]]:<br />
** {{Pkg|nvidia-dkms}}<br />
** {{Pkg|nvidia-304xx-dkms}}<br />
** {{AUR|nvidia-173xx-dkms}}<br />
** {{AUR|nvidia-96xx-dkms}}<br />
* [[VirtualBox]], section [[VirtualBox#Hosts running a custom kernel]]<br />
* [[VMware]], section [[VMware#Using DKMS to manage the modules]]<br />
<br />
== Upgrades ==<br />
<br />
Though modules are able to be rebuilt usually through a good number of kernel upgrades, at times the package will need to get upgraded. To deal with changes in the kernel, fix bugs, or add necessary features consider upgrading the DKMS package before rebooting.<br />
<br />
== Usage ==<br />
<br />
Usage for invoking DKMS manually.<br />
<br />
Tab-completion is available by doing:<br />
<br />
# source /usr/share/bash-completion/completions/dkms<br />
<br />
=== List modules ===<br />
<br />
To list the current status of modules, versions and kernels within the tree:<br />
<br />
$ dkms status<br />
<br />
=== Rebuild modules ===<br />
<br />
Rebuild all modules for the currently running kernel:<br />
<br />
# dkms autoinstall<br />
<br />
or for a specific kernel:<br />
<br />
# dkms autoinstall -k 3.16.4-1-ARCH<br />
<br />
To build a ''specific'' module for the currently running kernel:<br />
<br />
# dkms install -m nvidia -v 334.21<br />
<br />
or simply:<br />
<br />
# dkms install nvidia/334.21<br />
<br />
To build a module for ''all'' kernels:<br />
<br />
# dkms install nvidia/334.21 --all<br />
<br />
=== Remove modules ===<br />
<br />
To remove a module (old ones are not automatically removed):<br />
<br />
# dkms remove -m nvidia -v 331.49 --all<br />
<br />
or simply:<br />
<br />
# dkms remove nvidia/331.49 --all<br />
<br />
If the package {{Pkg|dkms}} is removed the information regarding previous module build files is lost. If this is the case, go through {{ic|/usr/lib/modules/KERNELVERSION-ARCH}} and delete or files and directories no longer in use.<br />
<br />
== DKMS package creation ==<br />
<br />
Here are some guidelines to follow when creating a DKMS package.<br />
<br />
=== Package name ===<br />
<br />
DKMS packages are named by appending "''-dkms''" to the original package name.<br />
<br />
The variable {{ic|$_pkgname}} is often used below {{ic|$pkgname}} to describe the package name minus the "''-dkms''" suffix (e.g. {{ic|<nowiki>_pkgname=${pkgname%-*}</nowiki>}}). This is useful to help keep similarities between the original package PKGBUILD and the DKMS variant.<br />
<br />
=== Dependencies ===<br />
<br />
Dependencies should be inherited from the original version with {{Pkg|dkms}} added and {{Pkg|linux-headers}} removed (as it is listed by the dkms pacakge as ''optional'').<br />
<br />
=== Build source location ===<br />
<br />
Build sources should go into (this is the default build directory for DKMS):<br />
<br />
/usr/src/''PACKAGE_NAME''-''PACKAGE_VERSION''<br />
<br />
In the package directory, a DKMS configuration tells DKMS how to build the module ({{ic|dkms.conf}}), including the variables {{ic|PACKAGE_NAME}} and {{ic|PACKAGE_VERSION}}.<br />
<br />
* {{ic|PACKAGE_NAME}} - the actual project name (usually {{ic|$_pkgname}} or {{ic|$_pkgbase}}). <br />
* {{ic|PACKAGE_VERSION}} - by convention this should also be the {{ic|$pkgver}}.<br />
<br />
=== Patching ===<br />
<br />
The sources can be patched either directly in the PKGBUILD or through {{ic|dkms.conf}}.<br />
<br />
=== Module loading automatically in .install ===<br />
<br />
Loading and unloading modules should be left to the user. Consider the possibility a module may crash when loaded.<br />
<br />
=== namcap output ===<br />
<br />
[[namcap]] (which attempts to check for common mistakes and non-standard decisions in a package) is good practice to use at least once on ''any'' package; however, it has not yet been updated for DKMS specific guidelines.<br />
<br />
For example, DKMS uses {{ic|/usr/src/}} by default, but Namcap believes this to be a non-standard directory, a little contrary to its [[Wikipedia:Filesystem Hierarchy Standard|reference]].<br />
<br />
=== Example ===<br />
<br />
Here is an example package that edits {{ic|dkms.conf}} according to the package name and version.<br />
<br />
==== PKGBUILD ====<br />
<br />
{{hc|PKGBUILD|2=<br />
# Maintainer: foo <foo(at)gmail(dot)com><br />
# Contributor: bar <bar(at)gmai(dot)com><br />
<br />
_pkgbase=amazing<br />
pkgname=amazing-dkms<br />
pkgver=1<br />
pkgrel=1<br />
pkgdesc="The Amazing kernel modules (DKMS)"<br />
arch=('i686' 'x86_64')<br />
url="https://www.amazing.com/"<br />
license=('GPL2')<br />
depends=('dkms')<br />
conflicts=("${_pkgbase}")<br />
install=${pkgname}.install<br />
source=("${url}/files/tarball.tar.gz"<br />
'dkms.conf'<br />
'linux-3.14.patch')<br />
md5sums=(''use <nowiki>'</nowiki>updpkgsums''')<br />
<br />
build() {<br />
cd ${_pkgbase}-${pkgver}<br />
<br />
# Patch<br />
patch -p1 -i "${srcdir}"/linux-3.14.patch<br />
<br />
# Build<br />
msg2 "Starting ./configure..."<br />
./configure<br />
<br />
msg2 "Starting make..."<br />
make<br />
}<br />
<br />
package() {<br />
# Install<br />
msg2 "Starting make install..."<br />
make DESTDIR="${pkgdir}" install<br />
<br />
# Copy dkms.conf<br />
install -Dm644 dkms.conf "${pkgdir}"/usr/src/${_pkgbase}-${pkgver}/dkms.conf<br />
<br />
# Set name and version<br />
sed -e "s/@_PKGBASE@/${_pkgbase}/" \<br />
-e "s/@PKGVER@/${pkgver}/" \<br />
-i "${pkgdir}"/usr/src/${_pkgbase}-${pkgver}/dkms.conf<br />
<br />
# Copy sources (including Makefile)<br />
cp -r ${_pkgbase}/* "${pkgdir}"/usr/src/${_pkgbase}-${pkgver}/<br />
}<br />
}}<br />
<br />
==== dkms.conf ====<br />
<br />
{{hc|dkms.conf|2=<br />
PACKAGE_NAME="@_PKGBASE@"<br />
PACKAGE_VERSION="@PKGVER@"<br />
MAKE[0]="make --uname_r=$kernelver"<br />
CLEAN="make clean"<br />
BUILT_MODULE_NAME[0]="@_PKGBASE@"<br />
DEST_MODULE_LOCATION[0]="/kernel/drivers/misc"<br />
AUTOINSTALL="yes"<br />
}}<br />
<br />
==== .install ====<br />
<br />
Instead of {{ic|depmod}} now {{ic|dkms install}} can be used (it depends on {{ic|dkms build}}, which depends on {{ic|dkms add}}):<br />
<br />
{{hc|amazing-dkms.install|<br />
# old version (without -$pkgrel): ${1%%-*}<br />
# new version (without -$pkgrel): ${2%%-*}<br />
<br />
post_install() {<br />
dkms install ''amazing''/${1%%-*}<br />
}<br />
<br />
pre_upgrade() {<br />
pre_remove ${2%%-*}<br />
}<br />
<br />
post_upgrade() {<br />
post_install ${1%%-*}<br />
}<br />
<br />
pre_remove() {<br />
dkms remove ''amazing''/${1%%-*} --all<br />
}<br />
}}<br />
<br />
{{Tip|To keep DKMS packages closer to their non-DKMS counterparts: avoid cluttering up package files with DKMS-specific stuff (e.g. version numbers that need updating).}}<br />
<br />
== See also ==<br />
<br />
* [http://www.linuxjournal.com/article/6896 Linux Journal: Exploring Dynamic Kernel Module Support]</div>Dustballhttps://wiki.archlinux.org/index.php?title=Taskd&diff=427065Taskd2016-03-22T09:44:43Z<p>Dustball: /* Setup */</p>
<hr />
<div>[https://tasktools.org/projects/taskd.html taskd] is a lightweight, secure server providing multi-user, multi-client access to task data. This allows true syncing between desktop and mobile clients.<br />
<br />
== Installation ==<br />
taskd is available in the AUR as {{AUR|taskd}} and {{AUR|taskd-git}}.<br />
<br />
== Setup ==<br />
Once taskd is installed, you need to set it up. The first step is to {{bc|export TASKDDATA<nowiki>=</nowiki>/var/lib/taskd }} (otherwise you need to append {{ic|--data /var/lib/taskd}} to every taskd command).<br />
<br />
Next, edit the {{ic|/usr/share/doc/taskd/pki/vars}} file. The {{ic|CN<nowiki>=</nowiki>}} line must either match the server's hostname or IP address, depending on how you connect. Once the file is edited to your heart's content, run {{ic|/usr/share/doc/taskd/pki/generate}}. This will create selfsigned certificates for your server. Copy all generated *.pem-files to {{ic|/var/lib/taskd}}. Note that at least the ca.cert.pem must remain in the pki folder for the user-certificate generation later on.<br />
<br />
Now you need to configure the taskd config. This can be done by either using {{ic|taskd config}} or editing {{ic|/var/lib/taskd/config}} directly.<br />
{{bc|taskd config --force client.cert $TASKDDATA/client.cert.pem<br />
taskd config --force client.key $TASKDDATA/client.key.pem<br />
taskd config --force server.cert $TASKDDATA/server.cert.pem<br />
taskd config --force server.key $TASKDDATA/server.key.pem<br />
taskd config --force server.crl $TASKDDATA/server.crl.pem<br />
taskd config --force ca.cert $TASKDDATA/ca.cert.pem}}<br />
<br />
Additionally you should change where taskd logs to, since the default is /tmp/log. This can be done by running<br />
{{bc|touch /var/log/taskd.log<br />
chmod taskd:taskd /var/log/taskd.log<br />
taskd config --force log /var/log/taskd.log}}<br />
<br />
The last step is to set taskd's server name, which must be the same as the one used in the certificates: {{ic|taskd config --force server servername:port}}. Note that taskd has no default port and it must be set manually.<br />
<br />
== Adding a user in taskd ==<br />
taskd knows about groups and users, and each user must be in a group. The group- and usernames can be whatever you want.<br />
{{bc|taskd add org group<br />
taskd add user group username}}<br />
Note the key the last command returns, the user will need it to synchronize.<br />
<br />
Return to {{ic|/usr/share/doc/taskd/pki/}} and run {{bc|./generate.client username}} This will return username.cert.pem and username.key.pem. The username.key.pem, username.cert.pem and ca.cert.pem must be added to the user's {{ic|~/.task}} directory.<br />
<br />
== User configuration ==<br />
Once the *.pem files are added to {{ic|~/.task}}, they must be added to the task config, along with the servername and unique ID.<br />
<br />
{{bc|task config taskd.certificate ~/.task/first_last.cert.pem<br />
task config taskd.key ~/.task/first_last.key.pem<br />
task config taskd.ca ~/.task/ca.cert.pem<br />
task config taskd.server servername:port<br />
task config taskd.credentials group/username/key}}<br />
<br />
After running a {{ic|task sync init}}, the user is able to synchronize taskwarrior whereever pleased.<br />
<br />
== Troubleshooting ==<br />
Should the server be unreachable but running, it bound itself to an IPv6 address. You can force IPv4 by adding {{ic|family<nowiki>=</nowiki>IPv4}} to {{ic|/var/lib/taskd/config}}. Restart taskd afterwards.</div>Dustballhttps://wiki.archlinux.org/index.php?title=Taskd&diff=427064Taskd2016-03-22T09:40:02Z<p>Dustball: Wording</p>
<hr />
<div>[https://tasktools.org/projects/taskd.html taskd] is a lightweight, secure server providing multi-user, multi-client access to task data. This allows true syncing between desktop and mobile clients.<br />
<br />
== Installation ==<br />
taskd is available in the AUR as {{AUR|taskd}} and {{AUR|taskd-git}}.<br />
<br />
== Setup ==<br />
Once taskd is installed, you need to set it up. The first step is to {{bc|export TASKDDATA<nowiki>=</nowiki>/var/lib/taskd }} (otherwise you need to append {{ic|--data /var/lib/taskd}} to every taskd command).<br />
<br />
Next, edit the {{ic|/usr/share/doc/taskd/pki/vars}} file. The {{ic|CN<nowiki>=</nowiki>}} line must either match the server's hostname or IP address, depending on how you connect. Once the file is edited to your heart's content, run {{ic|/usr/share/doc/taskd/pki/generate}}. This will create selfsigned certificates for your server. Copy all generated *.pem-files to {{ic|/var/lib/taskd}}. Note that at least the ca.cert.pem must remain in the pki folder for the user-certificate generation later on.<br />
<br />
Now you need to configure the taskd config. This can be done by either using {{ic|taskd config}} or editing {{ic|/var/lib/taskd/config}} directly.<br />
{{bc|taskd config --force client.cert $TASKDDATA/client.cert.pem<br />
taskd config --force client.key $TASKDDATA/client.key.pem<br />
taskd config --force server.cert $TASKDDATA/server.cert.pem<br />
taskd config --force server.key $TASKDDATA/server.key.pem<br />
taskd config --force server.crl $TASKDDATA/server.crl.pem<br />
taskd config --force ca.cert $TASKDDATA/ca.cert.pem}}<br />
<br />
Additionally you should change where taskd logs to, since the default is /tmp/log. This can be done by running<br />
{{bc|touch /var/log/taskd.log<br />
chmod taskd:taskd /var/log/taskd.log<br />
taskd config --force log $/var/log/taskd.log}}<br />
<br />
The last step is to set taskd's server name, which must be the same as the one used in the certificates: {{ic|taskd config --force server servername:port}}. Note that taskd has no default port and it must be set manually.<br />
<br />
== Adding a user in taskd ==<br />
taskd knows about groups and users, and each user must be in a group. The group- and usernames can be whatever you want.<br />
{{bc|taskd add org group<br />
taskd add user group username}}<br />
Note the key the last command returns, the user will need it to synchronize.<br />
<br />
Return to {{ic|/usr/share/doc/taskd/pki/}} and run {{bc|./generate.client username}} This will return username.cert.pem and username.key.pem. The username.key.pem, username.cert.pem and ca.cert.pem must be added to the user's {{ic|~/.task}} directory.<br />
<br />
== User configuration ==<br />
Once the *.pem files are added to {{ic|~/.task}}, they must be added to the task config, along with the servername and unique ID.<br />
<br />
{{bc|task config taskd.certificate ~/.task/first_last.cert.pem<br />
task config taskd.key ~/.task/first_last.key.pem<br />
task config taskd.ca ~/.task/ca.cert.pem<br />
task config taskd.server servername:port<br />
task config taskd.credentials group/username/key}}<br />
<br />
After running a {{ic|task sync init}}, the user is able to synchronize taskwarrior whereever pleased.<br />
<br />
== Troubleshooting ==<br />
Should the server be unreachable but running, it bound itself to an IPv6 address. You can force IPv4 by adding {{ic|family<nowiki>=</nowiki>IPv4}} to {{ic|/var/lib/taskd/config}}. Restart taskd afterwards.</div>Dustballhttps://wiki.archlinux.org/index.php?title=Taskd&diff=427063Taskd2016-03-22T09:38:13Z<p>Dustball: </p>
<hr />
<div>[https://tasktools.org/projects/taskd.html taskd] is a lightweight, secure server providing multi-user, multi-client access to task data. This allows true syncing between desktop and mobile clients.<br />
<br />
== Installation ==<br />
taskd is available in the AUR as {{AUR|taskd}} and {{AUR|taskd-git}}.<br />
<br />
== Setup ==<br />
Once taskd is installed, you need to set it up. The first step is to {{bc|export TASKDDATA<nowiki>=</nowiki>/var/lib/taskd }} (otherwise you need to append {{ic|--data /var/lib/taskd}} to every taskd command).<br />
<br />
Next, edit the {{ic|/usr/share/doc/taskd/pki/vars}} file. The {{ic|CN<nowiki>=</nowiki>}} line must either match the server's hostname or IP address, depending on how you connect. Once the file is edited to your heart's content, run {{ic|/usr/share/doc/taskd/pki/generate}}. This will create selfsigned certificates for your server. Copy all generated *.pem-files to {{ic|/var/lib/taskd}}. Note that at least the ca.cert.pem must remain in the pki folder for the user-certificate generation later on.<br />
<br />
Now you need to configure the taskd config. This can be done by either using {{ic|taskd config}} or editing {{ic|/var/lib/taskd/config}} directly.<br />
{{bc|taskd config --force client.cert $TASKDDATA/client.cert.pem<br />
taskd config --force client.key $TASKDDATA/client.key.pem<br />
taskd config --force server.cert $TASKDDATA/server.cert.pem<br />
taskd config --force server.key $TASKDDATA/server.key.pem<br />
taskd config --force server.crl $TASKDDATA/server.crl.pem<br />
taskd config --force ca.cert $TASKDDATA/ca.cert.pem}}<br />
<br />
Additionally you should change where taskd logs to, since the default is /tmp/log. This can be done by running<br />
{{bc|touch /var/log/taskd.log<br />
chmod taskd:taskd /var/log/taskd.log<br />
taskd config --force log $/var/log/taskd.log}}<br />
<br />
The last step is to set taskd's server name, which must be the same as the one used in the certificates: {{ic|taskd config --force server servername:port}}. Note that taskd has no default port and it must be set manually.<br />
<br />
== Adding a user in taskd ==<br />
taskd knows groups and users, each user must be in a group. The group- and usernames can be whatever you want.<br />
{{bc|taskd add org group<br />
taskd add user group username}}<br />
Note the key the last command returns, the user will need it to synchronize.<br />
<br />
Return to {{ic|/usr/share/doc/taskd/pki/}} and run {{bc|./generate.client username}} This will return username.cert.pem and username.key.pem. The username.key.pem, username.cert.pem and ca.cert.pem must be added to the user's {{ic|~/.task}} directory.<br />
<br />
== User configuration ==<br />
Once the *.pem files are added to {{ic|~/.task}}, they must be added to the task config, along with the servername and unique ID.<br />
<br />
{{bc|task config taskd.certificate ~/.task/first_last.cert.pem<br />
task config taskd.key ~/.task/first_last.key.pem<br />
task config taskd.ca ~/.task/ca.cert.pem<br />
task config taskd.server servername:port<br />
task config taskd.credentials group/username/key}}<br />
<br />
After running a {{ic|task sync init}}, the user is able to synchronize taskwarrior whereever pleased.<br />
<br />
== Troubleshooting ==<br />
Should the server be unreachable but running, it bound itself to an IPv6 address. You can force IPv4 by adding {{ic|family<nowiki>=</nowiki>IPv4}} to {{ic|/var/lib/taskd/config}}. Restart taskd afterwards.</div>Dustballhttps://wiki.archlinux.org/index.php?title=Taskd&diff=427061Taskd2016-03-22T09:31:57Z<p>Dustball: Created page with "taskd is a lightweight, secure server providing multi-user, multi-client access to task data. This allows true syncing between desktop and mobile clients. == Installation ==..."</p>
<hr />
<div>taskd is a lightweight, secure server providing multi-user, multi-client access to task data. This allows true syncing between desktop and mobile clients.<br />
<br />
== Installation ==<br />
taskd is available in the AUR as {{AUR|taskd}} and {{AUR|taskd-git}}.<br />
<br />
== Setup ==<br />
Once taskd is installed, you need to set it up. The first step is to {{bc|export TASKDDATA<nowiki>=</nowiki>/var/lib/taskd }} (otherwise you need to append {{ic|--data /var/lib/taskd}} to every taskd command).<br />
<br />
Next, edit the {{ic|/usr/share/doc/taskd/pki/vars}} file. The {{ic|CN<nowiki>=</nowiki>}} line must either match the server's hostname or IP address, depending on how you connect. Once the file is edited to your heart's content, run {{ic|/usr/share/doc/taskd/pki/generate}}. This will create selfsigned certificates for your server. Copy all generated *.pem-files to {{ic|/var/lib/taskd}}. Note that at least the ca.cert.pem must remain in the pki folder for the user-certificate generation later on.<br />
<br />
Now you need to configure the taskd config. This can be done by either using {{ic|taskd config}} or editing {{ic|/var/lib/taskd/config}} directly.<br />
{{bc|taskd config --force client.cert $TASKDDATA/client.cert.pem<br />
taskd config --force client.key $TASKDDATA/client.key.pem<br />
taskd config --force server.cert $TASKDDATA/server.cert.pem<br />
taskd config --force server.key $TASKDDATA/server.key.pem<br />
taskd config --force server.crl $TASKDDATA/server.crl.pem<br />
taskd config --force ca.cert $TASKDDATA/ca.cert.pem}}<br />
<br />
Additionally you should change where taskd logs to, since the default is /tmp/log. This can be done by running<br />
{{bc|touch /var/log/taskd.log<br />
chmod taskd:taskd /var/log/taskd.log<br />
taskd config --force log $/var/log/taskd.log}}<br />
<br />
The last step is to set taskd's server name, which must be the same as the one used in the certificates: {{ic|taskd config --force server servername:port}}. Note that taskd has no default port and it must be set manually.<br />
<br />
== Adding a user in taskd ==<br />
taskd knows groups and users, each user must be in a group. The group- and usernames can be whatever you want.<br />
{{bc|taskd add org group<br />
taskd add user group username}}<br />
Note the key the last command returns, the user will need it to synchronize.<br />
<br />
Return to {{ic|/usr/share/doc/taskd/pki/}} and run {{bc|./generate.client username}} This will return username.cert.pem and username.key.pem. The username.key.pem, username.cert.pem and ca.cert.pem must be added to the user's {{ic|~/.task}} directory.<br />
<br />
== User configuration ==<br />
Once the *.pem files are added to {{ic|~/.task}}, they must be added to the task config, along with the servername and unique ID.<br />
<br />
{{bc|task config taskd.certificate ~/.task/first_last.cert.pem<br />
task config taskd.key ~/.task/first_last.key.pem<br />
task config taskd.ca ~/.task/ca.cert.pem<br />
task config taskd.server servername:port<br />
task config taskd.credentials group/username/key}}<br />
<br />
After running a {{ic|task sync init}}, the user is able to synchronize taskwarrior whereever pleased.<br />
<br />
== Troubleshooting ==<br />
Should the server be unreachable but running, it bound itself to an IPv6 address. You can force IPv4 by adding {{ic|family<nowiki>=</nowiki>IPv4}} to {{ic|/var/lib/taskd/config}}. Restart taskd afterwards.</div>Dustballhttps://wiki.archlinux.org/index.php?title=Pacman/Tips_and_tricks&diff=426237Pacman/Tips and tricks2016-03-17T18:23:03Z<p>Dustball: "pacrecover" isn't in the repos and it's not mentioned where this comes from. Purged until someone can explain or it shows up in the repos.</p>
<hr />
<div>{{Lowercase title}}<br />
[[Category:Package management]]<br />
[[es:Pacman/Tips and tricks]]<br />
[[fr:Astuces Pacman]]<br />
[[it:Pacman/Tips and tricks]]<br />
[[ja:Pacman ヒント]]<br />
[[ru:Pacman/Tips and tricks]]<br />
[[tr:Pacman ipuçları]]<br />
[[zh-cn:Pacman/Tips and tricks]]<br />
{{Related articles start}}<br />
{{Related|pacman}}<br />
{{Related|Mirrors}}<br />
{{Related|Creating packages}}<br />
{{Related articles end}}<br />
See [[pacman]] for the main article.<br />
<br />
For general methods to improve the flexibility of the provided tips or pacman itself, see [[Core utilities]] and [[Bash]].<br />
<br />
== Cosmetic and convenience ==<br />
<br />
=== Operations and Bash syntax ===<br />
<br />
{{Merge|pacman#Installing specific packages|Although this is definitely a tip/trick, it fits to the main [[pacman]] page much better than here. It shows generic examples of how to do things, not specific commands needed to achieve something non-trivial/unrelated.}}<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|plasma}}:<br />
<br />
# pacman -S plasma-{desktop,mediacenter,nm}<br />
<br />
Of course, that is not limited and can be expanded to however many levels needed:<br />
<br />
# pacman -S plasma-{workspace{,-wallpapers},pa}<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 />
=== Graphical front-ends ===<br />
<br />
* {{App|Discover|A collection of package management tools for KDE, using PackageKit.|https://projects.kde.org/projects/kde/workspace/discover|{{Pkg|discover}}}}<br />
* {{App|GNOME packagekit|GTK based package management tool|http://www.freedesktop.org/software/PackageKit/|{{Pkg|gnome-packagekit}}}}<br />
* {{App|GNOME Software|Gnome Software App. (Curated selection for GNOME)|https://wiki.gnome.org/Apps/Software|{{pkg|gnome-software}}}}<br />
* {{App|pcurses|Package management in a curses frontend|https://github.com/schuay/pcurses|{{Pkg|pcurses}}}}<br />
* {{App|tkPacman|GUI front-end for pacman. Depends on Tcl/Tk and X11 but neither on GTK+, nor on QT. It only interacts with the package database via the CLI of 'pacman'. So, installing and removing packages with tkPacman or with pacman leads to exactly the same result.|http://sourceforge.net/projects/tkpacman|{{AUR|tkpacman}}}}<br />
<br />
=== Utilities ===<br />
<br />
* {{App|Lostfiles|Script for detecting orphaned files.|https://github.com/graysky2/lostfiles|{{AUR|lostfiles}}}}<br />
* {{App|[[Pacmatic]]|Pacman wrapper to check Arch News before upgrading, avoid partial upgrades, and warn about configuration file changes.|http://kmkeen.com/pacmatic|{{Pkg|pacmatic}}}}<br />
* {{App|[[pkgfile]]|Tool that finds what package owns a file.|http://github.com/falconindy/pkgfile|{{Pkg|pkgfile}}}}<br />
* {{App|[[pkgtools]]|Collection of scripts for Arch Linux packages.|https://github.com/Daenyth/pkgtools|{{AUR|pkgtools}}}}<br />
* {{App|srcpac|Simple tool that automates rebuilding packages from source.|https://projects.archlinux.org/srcpac.git|{{Pkg|srcpac}}}}<br />
* {{App|[[Snapper#snap-pac_pacman_hooks|snap-pac]]|Make pacman automatically use snapper to create pre/post snapshots like openSUSE's YaST.|https://github.com/wesbarnett/snap-pac|{{aur|snap-pac}}}}<br />
<br />
== Maintenance ==<br />
<br />
See also [[System maintenance]].<br />
<br />
=== Listing packages ===<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|pacman -Qs ''regex''}}.<br />
* List packages by regex with custom output format: {{ic|expac -s "%-30n %v" ''regex''}} (needs {{Pkg|expac}}).<br />
<br />
==== With size ====<br />
<br />
To get a 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 -H M '%m\t%n' | sort -h</nowiki>}}.<br />
* Run {{Pkg|pacgraph}} with the {{ic|-c}} option.<br />
* Run {{Aur|apacman}} with the {{ic|-L}} option.<br />
<br />
To list the download size of several packages (leave {{ic|''packages''}} blank to list all packages):<br />
<br />
$ expac -S -H M '%k\t%n' ''packages''<br />
<br />
To list explicitly installed packages not in {{Grp|base}} nor {{Grp|base-devel}} with size and description:<br />
<br />
$ expac -H M "%011m\t%-20n\t%10d" $( comm -23 <(pacman -Qqen|sort) <(pacman -Qqg base base-devel|sort) ) | sort -n<br />
<br />
==== 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 />
==== All packages that nothing else depends on ====<br />
<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 [[#Orphans]].}} <br />
<br />
{{bc|<nowiki><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 />
==== 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 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 />
=== Identify files not owned by any package ===<br />
<br />
If your system has stray files not owned by any package (a common case if you do not [[Enhance system stability#Use the package manager to install software|use the package manager to install software]]), you may want to find such files in order to clean them up. The general process for doing so is:<br />
<br />
# Create a sorted list of the files you want to check ownership of: {{bc|<nowiki>$ find /etc /opt /usr | sort > all_files.txt</nowiki>}}<br />
# Create a sorted list of the files tracked by pacman (and remove the trailing slashes from directories): {{bc|<nowiki>$ pacman -Qlq | sed 's|/$||' | sort > owned_files.txt</nowiki>}}<br />
# Find lines in the first list that are not in the second: {{bc|$ comm -23 all_files.txt owned_files.txt}}<br />
<br />
This process is tricky in practice because many important files are not part of any package (e.g. files generated at runtime, custom configs) and so will be included in the final output, making it difficult to pick out the files that can be safely deleted.<br />
<br />
The {{AUR|lostfiles}} script performs similar steps, but also includes an extensive blacklist to remove common false positives from the output.<br />
<br />
=== Removing unused packages ===<br />
<br />
==== Orphans ====<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 />
{{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 />
==== Explicitly installed ====<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 />
=== 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 />
<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 />
=== Listing changed backup files ===<br />
<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. Modified [[Pacnew_and_Pacsave_files#Package_backup_files|backup files]] can be viewed with the following command:<br />
<br />
# pacman -Qii | awk '/^MODIFIED/ {print $2}'<br />
<br />
Running this command with root permissions will ensure that files readable only by root (such as {{ic|/etc/sudoers}}) are included in the output.<br />
<br />
{{Tip|See [[#Listing all changed files from packages]] to list all changed files pacman knows, not only backup files.}}<br />
<br />
=== Back-up the pacman database ===<br />
<br />
The following command can be used to back up the local pacman database:<br />
<br />
$ tar -cjf pacman_database.tar.bz2 /var/lib/pacman/local<br />
<br />
Store the backup pacman database file on one or more offline media, such as a USB stick, external hard drive, or CD-R.<br />
<br />
The database can be restored by moving the {{ic|pacman_database.tar.bz2}} file into the {{ic|/}} directory and executing the following command:<br />
<br />
# tar -xjvf pacman_database.tar.bz2<br />
<br />
{{Note|If the pacman database files are corrupted, and there is no backup file available, there exists some hope of rebuilding the pacman database. Consult [[Pacman tips#Restore pacman's local database]].}}<br />
<br />
{{Tip|The {{AUR|pakbak-git}} package provides a script and a [[systemd]] service to automate the task. Configuration is possible in {{ic|/etc/pakbak.conf}}.}}<br />
<br />
=== Check changelogs easily ===<br />
<br />
When maintainers update packages, commits are often commented in a useful fashion. Users can quickly check these from the command line by installing {{AUR|paclog}}. This utility lists recent commit messages for packages from the official repositories or the AUR, by using {{ic|paclog package}}.<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 -Syu<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 />
If you happen to run several Arch boxes on your LAN, you can share packages so that you can greatly decrease your download times. Keep in mind you should not share between different architectures (i.e. i686 and x86_64) or you'll run into problems.<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 />
==== Dynamic reverse proxy cache using nginx ====<br />
<br />
[[nginx]] can be used to proxy requests to official upstream mirrors and cache the results to local disk. All subsequent requests for that file will be served directly from the local cache, minimizing the amount of internet traffic needed to update a large number of servers with minimal effort. <br />
<br />
{{Warning| This method has a limitation. You must use mirrors that use the same relative path to package files and you must configure your cache to use that same path. In this example, we are using mirrors that use the relative path {{ic|/archlinux/$repo/os/$arch}} and our cache's {{ic|Server}} setting in {{ic|mirrorlist}} is configured similarly.}}<br />
<br />
In this example, we will run the cache server on {{ic|<nowiki>http://cache.domain.local:8080/</nowiki>}} and storing the packages in {{ic|/srv/http/pacman-cache/}}. <br />
<br />
Create the directory for the cache and adjust the permissions so nginx can write files to it:<br />
<br />
# mkdir /srv/http/pacman-cache<br />
# chown http:http /srv/http/pacman-cache<br />
<br />
Next, configure nginx as our dynamic cache (read the comments for an explanation of the commands):<br />
<br />
{{hc|/etc/nginx/nginx.conf|<nowiki><br />
http<br />
{<br />
...<br />
<br />
# nginx may need to resolve domain names at run time<br />
resolver 8.8.8.8 8.8.4.4;<br />
<br />
# Pacman Cache<br />
server<br />
{<br />
listen 8080;<br />
server_name cache.domain.local;<br />
root /srv/http/pacman-cache;<br />
autoindex on;<br />
<br />
# Requests for package db and signature files should redirect upstream without caching<br />
location ~ \.(db|sig)$ {<br />
proxy_pass http://mirrors$request_uri;<br />
}<br />
<br />
# Requests for actual packages should be served directly from cache if available.<br />
# If not available, retrieve and save the package from an upstream mirror.<br />
location ~ \.tar\.xz$ {<br />
try_files $uri @pkg_mirror;<br />
}<br />
<br />
# Retrieve package from upstream mirrors and cache for future requests<br />
location @pkg_mirror {<br />
proxy_store on;<br />
proxy_redirect off;<br />
proxy_store_access user:rw group:rw all:r;<br />
proxy_next_upstream error timeout http_404;<br />
proxy_pass http://mirrors$request_uri;<br />
}<br />
}<br />
<br />
# Upstream Arch Linux Mirrors<br />
# - Configure as many backend mirrors as you want in the blocks below<br />
# - Servers are used in a round-robin fashion by nginx<br />
# - Add "backup" if you want to only use the mirror upon failure of the other mirrors<br />
# - Separate "server" configurations are required for each upstream mirror so we can set the "Host" header appropriately<br />
upstream mirrors {<br />
server localhost:8001;<br />
server localhost:8002 backup;<br />
server localhost:8003 backup;<br />
}<br />
<br />
# Arch Mirror 1 Proxy Configuration<br />
server<br />
{<br />
listen 8001;<br />
server_name localhost;<br />
<br />
location / {<br />
proxy_pass http://mirror.rit.edu$request_uri;<br />
proxy_set_header Host mirror.rit.edu;<br />
}<br />
}<br />
<br />
# Arch Mirror 2 Proxy Configuration<br />
server<br />
{<br />
listen 8002;<br />
server_name localhost;<br />
<br />
location / {<br />
proxy_pass http://mirrors.acm.wpi.edu$request_uri;<br />
proxy_set_header Host mirrors.acm.wpi.edu;<br />
}<br />
}<br />
<br />
# Arch Mirror 3 Proxy Configuration<br />
server<br />
{<br />
listen 8003;<br />
server_name localhost;<br />
<br />
location / {<br />
proxy_pass http://lug.mtu.edu$request_uri;<br />
proxy_set_header Host lug.mtu.edu;<br />
}<br />
}<br />
}<br />
</nowiki>}}<br />
<br />
Finally, update your other Arch Linux servers to use this new cache by adding the following line to the {{ic|mirrorlist}} file:<br />
<br />
{{hc|/etc/pacman.d/mirrorlist|<nowiki><br />
Server = http://cache.domain.local:8080/archlinux/$repo/os/$arch<br />
...<br />
</nowiki>}}<br />
<br />
{{Note| You will need to create a method to clear old packages, as this directory will continue to grow over time. {{ic|paccache}} (which is included with {{ic|pacman}}) can be used to automate this using retention criteria of your choosing. For example, {{ic|find /srv/http/pacman-cache/ -type d -exec paccache -v -r -k 2 -c {} \;}} will keep the last 2 versions of packages in your cache directory.}}<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 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 />
{{Expansion|Optional dependencies that are not required by any other package ({{ic|comm -13 <(pacman -Qdtq) <(pacman -Qdttq)}}) are ignored by this procedure.}}<br />
<br />
{{Tip|1=You may want to use {{AUR|plist-gist}} 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 />
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 />
=== 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 />
=== 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.<br />
<br />
== Performance ==<br />
<br />
=== Database access speeds ===<br />
<br />
Pacman stores all package information in a collection of small files, one for each package. Improving database access speeds reduces the time taken in database-related tasks, e.g. searching packages and resolving package dependencies. The safest and easiest method is to run as root:<br />
<br />
# pacman-optimize<br />
<br />
This will attempt to put all the small files together in one (physical) location on the hard disk so that the hard disk head does not have to move so much when accessing all the data. This method is safe, but is not foolproof: it depends on your filesystem, disk usage and empty space fragmentation. Another, more aggressive, option would be to first remove uninstalled packages from cache and to remove unused repositories before database optimization:<br />
<br />
# pacman -Sc && pacman-optimize<br />
<br />
=== Download speeds ===<br />
<br />
{{Note|If your download speeds have been reduced to a crawl, ensure you are using one of the many [[mirrors]] and not ftp.archlinux.org, which is [https://www.archlinux.org/news/302/ throttled since March 2007].}}<br />
<br />
When downloading packages pacman uses the mirrors in the order they are in {{ic|/etc/pacman.d/mirrorlist}}. The mirror which is at the top of the list by default however may not be the fastest for you. To select a faster mirror, see [[Mirrors]].<br />
<br />
Pacman's speed in downloading packages can also be improved by using a different application to download packages, instead of Pacman's built-in file downloader.<br />
<br />
In all cases, make sure you have the latest Pacman before doing any modifications.<br />
<br />
# pacman -Syu<br />
<br />
==== Powerpill ====<br />
<br />
Powerpill is a full wrapper for Pacman that uses parallel and segmented downloads to speed up the download process. Normally Pacman will download one package at a time, waiting for it to complete before beginning the next download. Powerpill takes a different approach: it tries to download as many packages as possible at once.<br />
<br />
The [[Powerpill|Powerpill wiki page]] provides basic configuration and usage examples along with package and upstream links.<br />
<br />
==== wget ====<br />
<br />
This is also very handy if you need more powerful proxy settings than pacman's built-in capabilities. <br />
<br />
To use {{ic|wget}}, first [[install]] the {{Pkg|wget}} package then modify {{ic|/etc/pacman.conf}} by uncommenting the following line in the {{ic|[options]}} section:<br />
<br />
XferCommand = /usr/bin/wget -c -q --show-progress --passive-ftp -O %o %u<br />
<br />
Instead of uncommenting the {{ic|wget}} parameters in {{ic|/etc/pacman.conf}}, you can also modify the {{ic|wget}} configuration file directly (the system-wide file is {{ic|/etc/wgetrc}}, per user files are {{ic|$HOME/.wgetrc}}.<br />
<br />
==== aria2 ====<br />
<br />
[[aria2]] is a lightweight download utility with support for resumable and segmented HTTP/HTTPS and FTP downloads. aria2 allows for multiple and simultaneous HTTP/HTTPS and FTP connections to an Arch mirror, which should result in an increase in download speeds for both file and package retrieval.<br />
<br />
{{Note|Using aria2c in Pacman's XferCommand will '''not''' result in parallel downloads of multiple packages. Pacman invokes the XferCommand with a single package at a time and waits for it to complete before invoking the next. To download multiple packages in parallel, see the [[#Using_Powerpill|powerpill]] section above.}}<br />
<br />
Install {{Pkg|aria2}}, then edit {{ic|/etc/pacman.conf}} by adding the following line to the {{ic|[options]}} section:<br />
<br />
XferCommand = /usr/bin/aria2c --allow-overwrite=true --continue=true --file-allocation=none --log-level=error --max-tries=2 --max-connection-per-server=2 --max-file-not-found=5 --min-split-size=5M --no-conf --remote-time=true --summary-interval=60 --timeout=5 --dir=/ --out %o %u<br />
<br />
{{Tip|1=[https://bbs.archlinux.org/viewtopic.php?pid=1491879#p1491879 This alternative configuration for using pacman with aria2] tries to simplify configuration and adds more configuration options.}}<br />
<br />
See [http://aria2.sourceforge.net/manual/en/html/aria2c.html#options OPTIONS] in {{ic|man aria2c}} for used aria2c options.<br />
<br />
{{ic|-d, --dir}}<br />
:The directory to store the downloaded file(s) as specified by [[pacman]].<br />
<br />
{{ic|-o, --out}}<br />
:The output file name(s) of the downloaded file(s). <br />
<br />
{{ic|%o}}<br />
:Variable which represents the local filename(s) as specified by pacman.<br />
<br />
{{ic|%u}}<br />
:Variable which represents the download URL as specified by pacman.<br />
<br />
==== Other applications ====<br />
<br />
There are other downloading applications that you can use with Pacman. Here they are, and their associated XferCommand settings:<br />
<br />
* {{ic|snarf}}: {{ic|1=XferCommand = /usr/bin/snarf -N %u}}<br />
* {{ic|lftp}}: {{ic|1=XferCommand = /usr/bin/lftp -c pget %u}}<br />
* {{ic|axel}}: {{ic|1=XferCommand = /usr/bin/axel -n 2 -v -a -o %o %u}}</div>Dustballhttps://wiki.archlinux.org/index.php?title=Talk:Pacman/Tips_and_tricks&diff=426235Talk:Pacman/Tips and tricks2016-03-17T18:21:46Z<p>Dustball: </p>
<hr />
<div>== pacman-optimize on SSD ==<br />
<br />
:''[Moved from [[Talk:Improve pacman performance]] -- [[User:Alad|Alad]] ([[User talk:Alad|talk]]) 05:05, 16 October 2015 (UTC)]''<br />
<br />
pacman-optimize only tries to reduce fragmentation of the files right? If that is the case perhaps we should include a note that this probably won't help much on an SSD. {{Unsigned|18:27, 29 March 2013|F4hy}}<br />
<br />
== pacman-optimize ==<br />
<br />
:''[Moved from [[Talk:Improve pacman performance]] -- [[User:Alad|Alad]] ([[User talk:Alad|talk]]) 05:05, 16 October 2015 (UTC)]''<br />
<br />
Looks like the [https://aur.archlinux.org/packages/systemd-timer-pacman-optimize-git/ systemd-timer-pacman-optimize-git] package is no longer maintained. [https://lists.archlinux.org/pipermail/pacman-dev/2014-August/019337.html]<br />
<br />
Should the wiki no longer recommend this package? -- I'm guessing it shouldn't.<br />
<br />
Also, is pacman-optimize less important than in the past? -- I am genuinely unsure about this.<br />
<br />
--[[User:Matthew02|Matthew02]] ([[User talk:Matthew02|talk]]) 05:40, 2 March 2015 (UTC)<br />
<br />
:The maintenance of {{AUR|systemd-timer-pacman-optimize-git}} has nothing to do with that of {{Pkg|pacman}} itself, it is packaged separately and even in the AUR. Anyway, I'd keep the section until ''pacman-optimize'' is removed from {{Pkg|pacman}}.<br />
:The reasons why it is not very important nowadays are improvements in pacman itself (mentioned in the ML post linked above), increased speeds of HDDs and the advent of SSDs.<br />
:-- [[User:Lahwaacz|Lahwaacz]] ([[User talk:Lahwaacz|talk]]) 22:18, 2 March 2015 (UTC)<br />
<br />
== Leading slash ==<br />
<br />
[[Pacman/Tips_and_tricks#aria2]] doesn't work without leading slash, i.e. {{ic|-d /}} turning file names to {{ic|//var/cache/...}}. The article mentions this, but it doesn't mention why. -- [[User:Alad|Alad]] ([[User talk:Alad|talk]]) 05:28, 16 October 2015 (UTC)<br />
<br />
:You would have to go [https://wiki.archlinux.org/index.php?title=Improve_pacman_performance&diff=32104&oldid=30674 way] [https://wiki.archlinux.org/index.php?title=Improve_pacman_performance&diff=next&oldid=115292 back] to track this. It seems to have worked without {{ic|-d /}} even in 2006: [https://wiki.archlinux.org/index.php?title=Faster_Pacman_Downloads&oldid=15627], [https://wiki.archlinux.org/index.php?title=Improve_pacman_performance&oldid=17759]. <s>I guess that simply nobody asked the right question...</s> -- [[User:Lahwaacz|Lahwaacz]] ([[User talk:Lahwaacz|talk]]) 12:30, 16 October 2015 (UTC)<br />
:Oops, it does ''not'' work without {{ic|-d /}}. Then the problem must be on aria's side, which expects a file name for the {{ic|-o}} option, which is then catenated with {{ic|-d}} into the full path. Assuming that {{ic|-d}} defaults to the cwd, {{ic|/var/cache/}} would appear twice in the result. -- [[User:Lahwaacz|Lahwaacz]] ([[User talk:Lahwaacz|talk]]) 12:43, 16 October 2015 (UTC)<br />
<br />
<br />
== Pacrecover ==<br />
<br />
[[pacman/Tips_and_tricks#Generating_the_package_recovery_list]] Where does that pacrecover even come from? It's not in the normal repos and I can't find it in the AUR. As the whole section depends on that script, I'll purge it for now until someone can explain where this comes from and that is in the wiki, or it's in the repos. [[User:Dustball|Dustball]] ([[User talk:Dustball|talk]]) 18:21, 17 March 2016 (UTC)</div>Dustballhttps://wiki.archlinux.org/index.php?title=Talk:Pacman/Tips_and_tricks&diff=426234Talk:Pacman/Tips and tricks2016-03-17T18:21:23Z<p>Dustball: </p>
<hr />
<div>== pacman-optimize on SSD ==<br />
<br />
:''[Moved from [[Talk:Improve pacman performance]] -- [[User:Alad|Alad]] ([[User talk:Alad|talk]]) 05:05, 16 October 2015 (UTC)]''<br />
<br />
pacman-optimize only tries to reduce fragmentation of the files right? If that is the case perhaps we should include a note that this probably won't help much on an SSD. {{Unsigned|18:27, 29 March 2013|F4hy}}<br />
<br />
== pacman-optimize ==<br />
<br />
:''[Moved from [[Talk:Improve pacman performance]] -- [[User:Alad|Alad]] ([[User talk:Alad|talk]]) 05:05, 16 October 2015 (UTC)]''<br />
<br />
Looks like the [https://aur.archlinux.org/packages/systemd-timer-pacman-optimize-git/ systemd-timer-pacman-optimize-git] package is no longer maintained. [https://lists.archlinux.org/pipermail/pacman-dev/2014-August/019337.html]<br />
<br />
Should the wiki no longer recommend this package? -- I'm guessing it shouldn't.<br />
<br />
Also, is pacman-optimize less important than in the past? -- I am genuinely unsure about this.<br />
<br />
--[[User:Matthew02|Matthew02]] ([[User talk:Matthew02|talk]]) 05:40, 2 March 2015 (UTC)<br />
<br />
:The maintenance of {{AUR|systemd-timer-pacman-optimize-git}} has nothing to do with that of {{Pkg|pacman}} itself, it is packaged separately and even in the AUR. Anyway, I'd keep the section until ''pacman-optimize'' is removed from {{Pkg|pacman}}.<br />
:The reasons why it is not very important nowadays are improvements in pacman itself (mentioned in the ML post linked above), increased speeds of HDDs and the advent of SSDs.<br />
:-- [[User:Lahwaacz|Lahwaacz]] ([[User talk:Lahwaacz|talk]]) 22:18, 2 March 2015 (UTC)<br />
<br />
== Leading slash ==<br />
<br />
[[Pacman/Tips_and_tricks#aria2]] doesn't work without leading slash, i.e. {{ic|-d /}} turning file names to {{ic|//var/cache/...}}. The article mentions this, but it doesn't mention why. -- [[User:Alad|Alad]] ([[User talk:Alad|talk]]) 05:28, 16 October 2015 (UTC)<br />
<br />
:You would have to go [https://wiki.archlinux.org/index.php?title=Improve_pacman_performance&diff=32104&oldid=30674 way] [https://wiki.archlinux.org/index.php?title=Improve_pacman_performance&diff=next&oldid=115292 back] to track this. It seems to have worked without {{ic|-d /}} even in 2006: [https://wiki.archlinux.org/index.php?title=Faster_Pacman_Downloads&oldid=15627], [https://wiki.archlinux.org/index.php?title=Improve_pacman_performance&oldid=17759]. <s>I guess that simply nobody asked the right question...</s> -- [[User:Lahwaacz|Lahwaacz]] ([[User talk:Lahwaacz|talk]]) 12:30, 16 October 2015 (UTC)<br />
:Oops, it does ''not'' work without {{ic|-d /}}. Then the problem must be on aria's side, which expects a file name for the {{ic|-o}} option, which is then catenated with {{ic|-d}} into the full path. Assuming that {{ic|-d}} defaults to the cwd, {{ic|/var/cache/}} would appear twice in the result. -- [[User:Lahwaacz|Lahwaacz]] ([[User talk:Lahwaacz|talk]]) 12:43, 16 October 2015 (UTC)<br />
<br />
<br />
== Pacrecover ==<br />
<br />
[[Tips_and_tricks#Generating_the_package_recovery_list]] Where does that pacrecover even come from? It's not in the normal repos and I can't find it in the AUR. As the whole section depends on that script, I'll purge it for now until someone can explain where this comes from and that is in the wiki, or it's in the repos. [[User:Dustball|Dustball]] ([[User talk:Dustball|talk]]) 18:21, 17 March 2016 (UTC)</div>Dustballhttps://wiki.archlinux.org/index.php?title=Talk:Darcs&diff=421343Talk:Darcs2016-02-19T12:02:30Z<p>Dustball: Created page with "This looks interesting. I'll try to use darcs over the coming week and create a writeup similar to the Git page. -- ~~~~"</p>
<hr />
<div>This looks interesting. I'll try to use darcs over the coming week and create a writeup similar to the [[Git]] page. -- [[User:Dustball|Dustball]] ([[User talk:Dustball|talk]]) 12:02, 19 February 2016 (UTC)</div>Dustballhttps://wiki.archlinux.org/index.php?title=Darcs&diff=421342Darcs2016-02-19T11:59:13Z<p>Dustball: /* Installation */</p>
<hr />
<div>[[Category:Version Control System]]<br />
{{stub}}<br />
[http://darcs.net/ Darcs] is a free and open source, cross-platform version control system, like git, mercurial or subversion but with a very different approach. Thanks to its focus on changes rather than snapshots, Darcs can offer a freer way of working, and a simpler user interface. <br />
<br />
== Installation ==<br />
[[Install]] the {{Pkg|darcs}} package.</div>Dustballhttps://wiki.archlinux.org/index.php?title=Bspwm&diff=407808Bspwm2015-10-31T15:57:34Z<p>Dustball: Added the create folder part. It's not created by default and some persons reported the rest doesn't work, but ignored the error on copy.</p>
<hr />
<div>{{Lowercase title}}<br />
[[Category:Tiling WMs]]<br />
{{Related articles start}}<br />
{{Related|bspwm/Example configurations}}<br />
{{Related articles end}}<br />
<br />
''bspwm'' is a tiling window manager that represents windows as the leaves of a full binary tree. It has support for [http://standards.freedesktop.org/wm-spec/wm-spec-1.3.html EWMH] and multiple monitors, and is configured and controlled through messages.<br />
<br />
== Installation ==<br />
<br />
[[Install]] {{Pkg|bspwm}} and {{Pkg|sxhkd}}, or the development versions: {{AUR|bspwm-git}} and {{AUR|sxhkd-git}}.<br />
Sxhkd is a simple X hotkey daemon used to communicate with bspwm through {{ic|bspc}} as well as launch your applications of choice.<br />
<br />
To start bspwm on login, add the following to {{ic|~/.xinitrc}} or {{ic|~/.xprofile}} (depending on how you launch X/your display manager):<br />
<br />
{{bc|<br />
sxhkd &<br />
exec bspwm<br />
}}<br />
<br />
== Configuration ==<br />
<br />
Example configuration is found at {{ic|/usr/share/doc/bspwm/examples/}} and on [https://github.com/baskerville/bspwm/blob/master/examples/ GitHub].<br />
<br />
'''Important:''' Make you sure environment variable $XDG_CONFIG_HOME is set or your bspwmrc will not be found. This can be done by adding XDG_CONFIG_HOME="$HOME/.config" and export XDG_CONFIG_HOME to your ~/.profile.<br />
<br />
Create {{ic|~/.config/bdpwm/}}. Then copy {{ic|/usr/share/doc/bspwm/examples/bspwmrc}} to {{ic|~/.config/bspwm/}} and {{ic|/usr/share/doc/bspwm/examples/sxhkdrc}} to {{ic|~/.config/sxhkd/}}. Make bspwmrc executable with {{ic|chmod +x ~/.config/bspwm/bspwmrc}}.<br />
<br />
These two files are where you will be setting wm settings and keybindings, respectively. See [[bspwm/Example configurations]] for annotated examples.<br />
<br />
Documentation for bspwm is found by running {{ic|man bspwm}}.<br />
<br />
There is also documentation for sxhkd found by running {{ic|man sxhkd}}.<br />
<br />
==== Note for multi-monitor setups ====<br />
<br />
The example bspwmrc configures ten desktops on one monitor like this:<br />
bspc monitor -d I II III IV V VI VII VIII IX X<br />
<br />
You will need to change this line and add one for each monitor, similar to this:<br />
bspc monitor DVI-I-1 -d I II III IV<br />
bspc monitor DVI-I-2 -d V VI VII<br />
bspc monitor DP-1 -d VIII IX X<br />
<br />
You can use `xrandr -q` or `bspc query -M` to find the monitor names.<br />
<br />
The total number of desktops were maintained at ten in the above example. This is so that each desktop can still be addressed with 'super + {1-9,0}' in the sxhkdrc.<br />
<br />
=== Rules ===<br />
<br />
There are two ways to set window rules (as of [https://github.com/baskerville/bspwm/commit/cd97a3290aa8d36346deb706fa307f5f8faa2f34 cd97a32]).<br />
<br />
The first is by using the built in rule command, as shown in the example bspwmrc:<br />
{{bc|<nowiki><br />
bspc rule -a Gimp desktop=^8 follow=on floating=on<br />
bspc rule -a Chromium desktop=^2<br />
bspc rule -a mplayer2 floating=on<br />
bspc rule -a Kupfer.py focus=on<br />
bspc rule -a Screenkey manage=off<br />
</nowiki>}}<br />
<br />
The second option is to use an external rule command. This is more complex, but can allow you to craft more complex window rules. See [https://github.com/baskerville/bspwm/tree/master/examples/external_rules these examples] for a sample rule command.<br />
<br />
If a particular window does not seem to be behaving according to your rules, check the class name of the program. This can be accomplished by running {{ ic | xprop <nowiki>|</nowiki> grep WM_CLASS}} to make sure you're using the proper string.<br />
<br />
=== Panels ===<br />
An example panel for [https://aur.archlinux.org/packages/bar-aint-recursive/ bar] is provided in the examples folder on the GitHub page. You might also get some insights from the [https://wiki.archlinux.org/index.php/Bar-aint-recursive Bar] wiki page. The panel will be executed by placing {{ic | panel &}} in your bspwmrc. Check the opt-depends in the bspwm package for dependencies that may be required.<br />
<br />
To display system information on your status bar you can use various system calls. This example will show you how to edit your {{ic | panel }} to get the volume status on your BAR:<br />
<br />
{{bc|<nowiki><br />
panel_volume()<br />
{<br />
volStatus=$(amixer get Master | tail -n 1 | cut -d '[' -f 4 | sed 's/].*//g')<br />
volLevel=$(amixer get Master | tail -n 1 | cut -d '[' -f 2 | sed 's/%.*//g')<br />
# is alsa muted or not muted?<br />
if [ "$volStatus" == "on" ]<br />
then<br />
echo "%{Fyellowgreen} $volLevel %{F-}"<br />
else<br />
# If it is muted, make the font red<br />
echo "%{Findianred} $volLevel %{F-}"<br />
fi<br />
}</nowiki>}}<br />
<br />
Next, we will have to make sure it is called and piped to {{ic | $PANEL_FIFO}}:<br />
<br />
{{bc|<nowiki><br />
while true; do<br />
echo "S" "$(panel_volume) $(panel_clock) > "$PANEL_FIFO"<br />
sleep 1s<br />
done &<br />
</nowiki>}}<br />
<br />
=== Scratchpad ===<br />
<br />
You can emulate a scratchpad (like i3's) by adding a shortcut for this command:<br />
<br />
{{bc|<nowiki><br />
xdotool search --onlyvisible --classname scratchpad windowunmap \<br />
|| xdotool search --classname scratchpad windowmap \<br />
|| st -c scratchpad -g 1000x400+460 &<br />
</nowiki>}}<br />
<br />
and adding this rule:<br />
<br />
{{bc|<nowiki><br />
bspc rule -a scratchpad --sticky=on --floating=on<br />
</nowiki>}}<br />
<br />
See also [https://bbs.archlinux.org/viewtopic.php?pid=1338582#p1338582] and [http://yuri-rage.github.io/geekery/2015/01/26/bleeding-edge-bspwm/].<br />
<br />
=== Different monitor conifgurations for different machines ===<br />
<br />
Since the {{ic|bspwmrc}} is a shell script, it allows you to do things like these:<br />
<br />
#! /bin/sh<br />
<nowiki><br />
if [[ $(hostname) == 'myhost' ]]; then<br />
bspc monitor eDP1 -d I II III IV V VI VII VIII IX X<br />
elif [[ $(hostname) == 'otherhost' ]]; then<br />
bspc monitor VGA-0 -d I II III IV V<br />
bspc monitor VGA-1 -d VI VII VIII IX X<br />
elif [[ $(hostname) == 'yetanotherhost' ]]; then<br />
bspc monitor DVI-I-3 -d VI VII VIII IX X<br />
bspc monitor DVI-I-2 -d I II III IV V<br />
fi<br />
</nowiki><br />
<br />
== Troubleshooting ==<br />
<br />
=== Help! I get a blank screen and my keybindings don't work! ===<br />
<br />
There are a few ways to debug this. First, a blank screen is good. That means bspwm is running.<br />
<br />
I would confirm that your xinitrc looks something like<br />
<br />
{{bc|<nowiki><br />
sxhkd &<br />
exec bspwm<br />
</nowiki>}}<br />
<br />
The ampersand is important. Next, try spawning a terminal in your xinitrc to see if its getting positioned properly. It should appear somewhat "centered" on the screen. To do this, use this .xinitrc:<br />
<br />
{{bc|<nowiki><br />
sxhkd &<br />
urxvt &<br />
exec bspwm<br />
</nowiki>}}<br />
<br />
If nothing shows up, that means you probably forgot to install urxvt. If it shows up but isn't centered or taking up most of your screen, that means BSPWM isn't getting started properly. Make sure that you've {{ic | chmod +x ~/.config/bspwm/bspwmrc }}.<br />
<br />
Next, type {{ic | pidof sxhkd}} in that terminal you spawned. It should return a number. If it doesn't, that means sxhd isn't running. Try to be explicit and run {{ ic | sxhkd -c ~/.config/sxhkd/sxhkdrc }}. You could also try changing the Super key to something like Alt in your sxhkdrc and see if that helps. Another common problem is copying the text from the example files instead of physically copying the file over. Copying / pasting code usually leads to indentation issues which sxhkd can be sensitive to.<br />
<br />
=== Window box larger than the actual application! ===<br />
<br />
This can happen if you are using GTK3 apps and usually for dialog windows. The fix is to create or add the below to a gtk3 theme file (~/.config/gtk-3.0/gtk.css). <br />
<br />
{{bc|<nowiki><br />
.window-frame, .window-frame:backdrop {<br />
box-shadow: 0 0 0 black;<br />
border-style: none;<br />
margin: 0;<br />
border-radius: 0;<br />
}<br />
<br />
.titlebar {<br />
border-radius: 0;<br />
}<br />
</nowiki>}}<br />
<br />
(source: [https://bbs.archlinux.org/viewtopic.php?pid=1404973#p1404973 Bspwm forum thread])<br />
<br />
=== Problems with Java applications === <br />
If you have problems, like Java application Windows not resizing, or menus immediately closing after you click, see [[Java#Applications not resizing with WM, menus immediately closing]].<br />
<br />
=== Problems with keybindings using fish ===<br />
If you use [[fish]], you will find that you are unable to switch desktops. This is because bspc's use of the ^ character is incompatible with fish. You can fix this by explicitly telling sxhkd to use bash to execute commands:<br />
$ set -U SXHKD_SHELL /usr/bin/bash<br />
<br />
Alternatively, the ^ character may be escaped with a backslash in your sxhkdrc file.<br />
<br />
== See also ==<br />
<br />
* Mailing List: bspwm ''at'' librelist.com.<br />
* {{ic|#bspwm}} - IRC channel at irc.freenode.net<br />
* https://bbs.archlinux.org/viewtopic.php?id=149444 - Arch BBS thread<br />
* https://github.com/baskerville/bspwm - GitHub project<br />
* https://github.com/windelicato/dotfiles/wiki/bspwm-for-dummies - earsplit's "bspwm for dummies"<br />
* https://github.com/smlb/dotfiles/wiki/Bspwm - smlb's wiki</div>Dustballhttps://wiki.archlinux.org/index.php?title=User:Haxit/Kiloseconds&diff=407394User:Haxit/Kiloseconds2015-10-29T17:32:48Z<p>Dustball: Added "2" in the shebang. It's python2 code after all.</p>
<hr />
<div>[[Category:Development]]<br />
The '''kiloseconds''' project is a very sophisticated and exquisite, ego-boosting and mind-blowing (albeit perhaps a bit over-engineered) project which aims to provide its audience with the time in kiloseconds, since we cannot live without it.<br />
<br />
Please help use out by adding programming languages to our github repo [http://github.com/bavardage/Kiloseconds/tree/master]<br />
<br />
== Awk ==<br />
#!/bin/awk -f<br />
BEGIN { printf("It is %s kiloseconds.\n",(strftime("%H")*3600+strftime("%M")*60+strftime("%S"))/1000); }<br />
<br />
== Bash ==<br />
==== Using seconds since 1970-01-01 00:00:00 UTC ====<br />
echo "It's $((($(date +%s) - $(date +%s -d $(date +%x)))/1000)) kiloseconds."<br />
<br />
==== Fixed invalid date bug of above ;) ====<br />
echo "It's $((($(date +%s) - $(date +%s -d $(LC_ALL="C" date +%x)))/1000)) kiloseconds."<br />
<br />
==== Another one, using sed ====<br />
# date is only invoked once. This variant also outputs the fractional part.<br />
eval $(echo $(($(date +"%-H*3600+%-M*60+%-S")))|sed "s/.*/echo It is \$((&\/1000)).\$((&%1000)) kiloseconds./")<br />
<br />
== Befunge-93 ==<br />
Befunge-93 has no way of getting the time by itself so it has to be supplied on stdin, eg $date +"%H %M %S" | befungeinterpreter ks.bf<br />
0" si tI">:#,_$&"d$"**&"<"*+&+:"d"52**/.0" tniop">:#,_$"d"52**%v<br />
ks.bf @$_ #!,#:<"kiloseconds."+550.<,"0"_v#`\+55:,"0"_v#`\"d":<<br />
Pipe date +"%H %M %S" to stdin. ^ < < .:tlvb<br />
== Brainf*** ==<br />
<br />
[ Usage: date +"%H%M%S"|somebfinterpreter ks.bf ]<br />
<br />
++++++++++><br />
>>++++[<++++++++<++++++++>>-]<br />
++[<+++++++>-]<br />
>+++++++++[<++++++++>-]<+<br />
>>>>>>>>>>>>++++++++++[<++++++++++>-] <br />
<[<<<<<<<<<<+>+>+>+>+>+>+>+>+>+>-]<br />
<<<<<<<<<<->>+>+++++>+++++++>++++++++<br />
>>>>>+++++++++++++[<<<<+>+>+>+>-]<<<<--->-->++>+++<br />
>,>,>,>,>,>,>>++++++[<++++++++>-]<[<<<<<<->->->->->->-]<br />
<[>+<-]<[>+<-]<[>>++++++<<-]<[>>++++++<<-]<br />
<[>>+++>++++++<<<-]<[>>+++>++++++<<<-]<br />
>>>>>[>>+>+<<<-]>>><br />
[-[-[-[-[-[-[-[-[-[-<----------<<<+>>>><br />
[-[-[-[-[-[-[-[-[-[-<----------<<<+>>>><br />
[-[-[-[-[-[-[-[-[-[-<----------<<<+>>>><br />
[-[-[-[-[-[-[-[-[-[-<----------<<<+>>>><br />
[-[-[-[-[-[-[-[-[-[-<----------<<<+>>>><br />
[-[-[-[-[-[-[-[-[-[-<----------<<<+>>>><br />
]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]<br />
]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]<br />
<[<<+>>-]<br />
<<<[>>>+>+<<<<-]>>>><br />
[-[-[-[-[-[-[-[-[-[-<----------<<<<+>>>>><br />
[-[-[-[-[-[-[-[-[-[-<----------<<<<+>>>>><br />
[-[-[-[-[-[-[-[-[-[-<----------<<<<+>>>>><br />
[-[-[-[-[-[-[-[-[-[-<----------<<<<+>>>>><br />
[-[-[-[-[-[-[-[-[-[-<----------<<<<+>>>>><br />
[-[-[-[-[-[-[-[-[-[-<----------<<<<+>>>>><br />
[-[-[-[-[-[-[-[-[-[-<----------<<<<+>>>>><br />
[-[-[-[-[-[-[-[-[-[-<----------<<<<+>>>>><br />
[-[-[-[-[-[-[-[-[-[-<----------<<<<+>>>>><br />
]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]<br />
]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]<br />
]]]]]]]]]]<br />
<[<<<+>>>-]<br />
<<<<[>>>>+>+<<<<<-]>>>>><br />
[-[-[-[-[-[-[-[-[-[-<----------<<<<<+>>>>>><br />
[-[-[-[-[-[-[-[-[-[-<----------<<<<<+>>>>>><br />
[-[-[-[-[-[-[-[-[-[-<----------<<<<<+>>>>>><br />
[-[-[-[-[-[-[-[-[-[-<----------<<<<<+>>>>>><br />
]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]<br />
<[<<<<+>>>>-]<br />
>++++++[<++++++++>-]<[<<<<<+>+>+>+>+>-]<br />
<<<<<<<<<<<<<<<<<<.>>>>>>>>>>.<<<<<<<<<<<<.>>>>>>.>>>>>.<<<<<<<<<<<.<br />
>>>>>>>>>>>>>>>.>.<<<<<<<<<<<<<<< . >>>>>>>>>>>>>>>>.>.>.<br />
<<<<<<<<<<<<<<<<<<<.>>>>>>>.<.>>.>>.>.<<<<<<.>>>>>.<.<<<<<.>>>>>>>.<br />
<<<<<<<<<<<<.<br />
<br />
== C ==<br />
#include <stdio.h><br />
#include <time.h><br />
<br />
int main(void)<br />
{<br />
struct tm *t;<br />
time_t now;<br />
float ks;<br />
time(&now);<br />
t=localtime(&now);<br />
ks=(t->tm_hour*3600 + t->tm_min*60 + t->tm_sec);<br />
printf("it is %.2f kiloseconds\n",ks/1000);<br />
return 0;<br />
}<br />
<br />
== C++ ==<br />
#include <iostream><br />
#include <ctime><br />
using namespace std;<br />
<br />
int main()<br />
{<br />
time_t now;<br />
time(&now);<br />
struct tm *t = localtime(&now);<br />
float ks = (t->tm_hour*3600 + t->tm_min*60 + t->tm_sec);<br />
cout << "it is " << ks/1000 << " kiloseconds" << endl;<br />
}<br />
<br />
== C# ==<br />
// mcs ks.cs && mono ks.exe<br />
using System;<br />
public class HelloWorld {<br />
static public void Main () {<br />
DateTime dt = DateTime.Now;<br />
Console.WriteLine ( Math.Round(<br />
(decimal)((dt.Hour * 3600 + dt.Minute * 60 + dt.Second)/1000.0),<br />
3).ToString());<br />
}<br />
}<br />
== Clojure ==<br />
(import '(java.util Calendar))<br />
<br />
(defn kiloseconds<br />
"Current time in kiloseconds."<br />
[]<br />
(let [calendar (Calendar/getInstance)<br />
hours (. calendar (get Calendar/HOUR_OF_DAY))<br />
minutes (. calendar (get Calendar/MINUTE))<br />
seconds (. calendar (get Calendar/SECOND))<br />
kiloseconds (/ (+ (* hours 3600) (* minutes 60) seconds) 1000)]<br />
(println (str "Kiloseconds: " (float kiloseconds)))))<br />
<br />
;; call it <br />
(kiloseconds)<br />
<br />
== Delphi ==<br />
program Kiloseconds;<br />
<br />
{$APPTYPE CONSOLE}<br />
<br />
uses<br />
SysUtils;<br />
<br />
var<br />
h,m,s,ms: word;<br />
begin<br />
DecodeTime(now, h, m, s, ms);<br />
Writeln('It is ' + FloatToStrF( (h*3600 + m*60 + s) / 1000, ffNumber, 7, 2) + ' kiloseconds.');<br />
end.<br />
<br />
== Eiffel ==<br />
class<br />
APPLICATION<br />
<br />
inherit<br />
ARGUMENTS<br />
<br />
create<br />
make<br />
<br />
feature {NONE} -- Initialization<br />
<br />
make<br />
-- Run application.<br />
local<br />
time: TIME<br />
kilo_seconds: INTEGER<br />
do<br />
create time.make_now<br />
kilo_seconds := ((time.hour * 3600 + time.minute * 60 + time.second) / 1000).floor<br />
io.put_integer (kilo_seconds)<br />
io.new_line<br />
end<br />
<br />
end<br />
<br />
==Emacs Lisp==<br />
(require 'cl)<br />
<br />
(defun ks-from-time (seconds minutes hours)<br />
(/ (+ seconds (* minutes 60) (* hours 3600))1000.0))<br />
<br />
(defun ks-time ()<br />
(interactive)<br />
(message "It's %.3f ks" (apply 'ks-from-time (subseq (decode-time) 0 3))))<br />
<br />
(defun erc-cmd-KS ()<br />
(erc-send-message<br />
(format "It's %.3f ks" (apply 'ks-from-time (subseq (decode-time) 0 3)))))<br />
== Erlang ==<br />
-module(kiloseconds).<br />
-export([kilotime/0]).<br />
kilotime() -><br />
{Hour,Minutes,Seconds} = erlang:time(),<br />
io:format("It is ~w kiloseconds ~n", [(Hour * 3600 + Minutes * 60 + Seconds)/1000]).<br />
<br />
== Factor ==<br />
<br />
USING: accessors calendar kernel math prettyprint ;<br />
IN: kiloseconds<br />
<br />
: kiloseconds ( -- n )<br />
now [ hour>> 3600 * ] [ minute>> 60 * ]<br />
[ second>> ] tri + + 1000 /i ;<br />
<br />
: main ( -- )<br />
kiloseconds . ;<br />
<br />
MAIN: main<br />
<br />
== Forth ==<br />
==== With floating point division ====<br />
Simple example using floating point to divide the total number of seconds with 1000:<br />
\ This runs at least in gforth<br />
\ $ gforth ks.fs<br />
<br />
: kiloseconds ( -- r ) time&date 2drop drop 60 * + 60 * + s>f 1e+3 f/ ;<br />
: printkstime ( -- ) ." It is " kiloseconds f. ." kiloseconds." cr ;<br />
<br />
printkstime<br />
bye<br />
<br />
==== With custom printing function ====<br />
Using ANS Forths 'pictured numeric output':<br />
#! /usr/bin/gforth<br />
: shift ( a b -- c ) 60 * + ; <br />
: seconds ( -- sec ) time&date 2drop drop shift shift ;<br />
: .ks ( sec -- ) s>d <# # # # '. hold #s #> type ;<br />
." it is " seconds .ks ." kiloseconds" cr bye <br />
<br />
== Fortran 90/95 ==<br />
To 17 decimal places:<br />
program kiloseconds<br />
real*8 ksec<br />
ksec = secnds(0.0) / 1000<br />
print 10, ksec<br />
10 format( 'It is ', F20.17, ' kiloseconds.' )<br />
end program<br />
<br />
== Go ==<br />
// 8g ks.go && 8l -o ks ks.8 && ./ks<br />
package main<br />
import fmt "fmt"<br />
import "time"<br />
func main(){<br />
d := time.LocalTime()<br />
d.Hour = 0; d.Minute = 0; d.Second = 0;<br />
fmt.Printf( "it is now %2.3f ks",<br />
float(time.LocalTime().Seconds()-d.Seconds())/1000)<br />
}<br />
<br />
== Haskell ==<br />
import Data.Time<br />
<br />
diffTimeToKiloSeconds diffTime = realToFrac diffTime / 1000<br />
secondsSinceMidnight = timeOfDayToTime . localTimeOfDay . zonedTimeToLocalTime<br />
kiloSecondsSinceMidnight = diffTimeToKiloSeconds . secondsSinceMidnight<br />
<br />
main = do localTime <- getZonedTime<br />
putStrLn $ "It's "<br />
++ show (kiloSecondsSinceMidnight localTime)<br />
++ " kiloseconds"<br />
<br />
A version with fixed-width decimal output:<br />
<br />
import Data.Time<br />
import Numeric<br />
<br />
diffTimeToKiloSeconds diffTime = realToFrac diffTime / 1000<br />
secondsSinceMidnight = timeOfDayToTime . localTimeOfDay . zonedTimeToLocalTime<br />
kiloSecondsSinceMidnight = diffTimeToKiloSeconds . secondsSinceMidnight<br />
<br />
main = do localTime <- getZonedTime<br />
putStrLn $ "It's "<br />
++ showFFloat (Just 2) (kiloSecondsSinceMidnight localTime) ""<br />
++ " kiloseconds"<br />
<br />
A version with fixed-width decimal output using printf:<br />
<br />
import Data.Time<br />
import Text.Printf<br />
<br />
secondsSinceMidnight :: ZonedTime -> Double<br />
secondsSinceMidnight = realToFrac . timeOfDayToTime . localTimeOfDay . zonedTimeToLocalTime<br />
<br />
main = do <br />
time <- getZonedTime <br />
printf "%.2f\n" (secondsSinceMidnight time / 1000)<br />
<br />
== IO ==<br />
<br />
Date midnight := method(self clone setHour(0) setMinute(0) setSecond(0))<br />
Date ks := method((self secondsSince(self midnight) / 1000) asString exSlice(0,6))<br />
writeln("it is ", Date now ks, " kiloseconds")<br />
<br />
== Java ==<br />
import java.util.GregorianCalendar;<br />
<br />
public class Kiloseconds {<br />
<br />
public static void main(String[] args) {<br />
<br />
GregorianCalendar calendar = new GregorianCalendar();<br />
float hours, minutes, seconds, kiloseconds;<br />
<br />
hours = calendar.get(GregorianCalendar.HOUR_OF_DAY);<br />
minutes = calendar.get(GregorianCalendar.MINUTE);<br />
seconds = calendar.get(GregorianCalendar.SECOND);<br />
kiloseconds = (hours*3600 + minutes*60 + seconds) / 1000;<br />
System.out.println(kiloseconds + "\n");<br />
<br />
}<br />
<br />
}<br />
<br />
== Javascript ==<br />
ourDate = new Date();<br />
metricTime = (ourDate.getHours() * 3600 + ourDate.getMinutes() * 60 + ourDate.getSeconds());<br />
document.write("It is: " + metricTime / 1000 + " kiloseconds.");<br />
<br />
== Lisp ==<br />
(multiple-value-bind (seconds minutes hours)<br />
(get-decoded-time)<br />
(print (/ (+ seconds<br />
(* minutes 60)<br />
(* hours 3600))<br />
1000.0)))<br />
<br />
== LOLCODE (LOLPython) ==<br />
[http://www.dalkescientific.com/writings/diary/archive/2007/06/01/lolpython.html LOLPython here]<br />
<br />
IN MAI time GIMME localtime LIKE NOW<br />
TODAYS CAN HAZ NOW THING<br />
<br />
KILOSECONDS CAN HAZ EASTERBUNNY<br />
PILE CAN HAZ CHEEZBURGER<br />
<br />
KILOSECONDS GETZ ANOTHR 3600 OF THOSE TODAYS OWN tm_hour<br />
KILOSECONDS GETZ ANOTHR 60 OF THOSE TODAYS OWN tm_min<br />
KILOSECONDS GETZ ANOTHR PILE OF THOSE TODAYS OWN tm_sec<br />
<br />
VISIBLE "OMG IT'S" AND KILOSECONDS SMASHES INTO 1000.0 AND "KILOSECONDS"<br />
<br />
== Lua ==<br />
==== Printing once ====<br />
This version displays the time once<br />
print("It is ", (os.date("%H")*3600 + os.date("%M")*60 + os.date("%S"))/1000, " kiloseconds")<br />
<br />
==== Continously looping ====<br />
Time is updated once per second<br />
while true do<br />
io.write("\rIt is ", (os.date("%H")*3600 + os.date("%M")*60 + os.date("%S"))/1000, " kiloseconds")<br />
io.stdout:flush()<br />
os.execute("sleep 0.7")<br />
end<br />
<br />
== Maple ==<br />
with(StringTools, FormatTime):<br />
t:= x->parse(FormatTime(x)): <br />
printf("It is %2.2f kiloseconds\n", (t(%H)*3600 + t(%M)*60 + t(%S))/1000); <br />
<br />
== Mathematica ==<br />
Drop[DateList[],3].{3600,60,1}/1000<br />
<br />
== MatLab ==<br />
==== Verbose code ====<br />
function ks = kiloseconds();<br />
% make a clock<br />
c = clock;<br />
% get hour<br />
hour = c(4);<br />
% get minutes <br />
min = c(5);<br />
% get seconds<br />
sec = c(6);<br />
ks = (hour*3600+min*60+sec)/1000;<br />
end<br />
<br />
==== Oneliner ====<br />
function s=ks(); c=clock; s=sum(c(4:6).*[60^2 60 1])/1000; end<br />
<br />
== Objective-C (Cocoa) ==<br />
NSDate *d = [NSDate date];<br />
NSDateComponents *dc = [[NSCalendar currentCalendar] components:NSHourCalendarUnit|NSMinuteCalendarUnit|NSSecondCalendarUnit fromDate:d];<br />
double ks = ([dc second] + [dc minute] * 60 + [dc hour] * 3600) / 1000.0;<br />
NSLog(@"%.3f", ks);<br />
<br />
== OCaml ==<br />
#!/usr/bin/ocaml unix.cma<br />
open Unix;;<br />
let t = localtime (time ()) in <br />
let ks = float_of_int (t.tm_sec + t.tm_min * 60 + t.tm_hour * 3600) /. 1000.0 in<br />
Printf.printf "%.3f" ks;;<br />
<br />
== Openoffice.org's BASIC ==<br />
function Kiloseconds()<br />
Time = Now()<br />
Kiloseconds = CStr((Hour(time)*3600 + Minute(time)*60 + Second(time))/1000) + " kiloseconds"<br />
end function<br />
<br />
== Perl ==<br />
#!/usr/bin/perl<br />
($s,$m,$h) = localtime();<br />
printf "Current time: %.3f kiloseconds.\n", ($h*3600+$m*60+$s)/1000;<br />
<br />
== PHP ==<br />
<?php<br />
list($sec, $min, $hour) = localtime(time(), false);<br />
echo "Time is ", ($hour * 3600 + $min * 60 + $sec) / 1000, " kiloseconds\n";<br />
<br />
== PLT Scheme == <br />
(let* ([date-struct (seconds->date (current-seconds))]<br />
[seconds (date-second date-struct)]<br />
[minutes (date-minute date-struct)]<br />
[hours (date-hour date-struct)])<br />
(display (/ (+ seconds<br />
(* minutes 60)<br />
(* hours 3600))<br />
1000.0)))<br />
<br />
== Powershell ==<br />
((Date).get_Hour()*3600 + (Date).get_Minute()*60 + (Date).get_Second())/1000<br />
<br />
== Prolog (SWI-Prolog) ==<br />
<pre><br />
#!/usr/bin/env swipl -g kiloseconds -s<br />
kiloseconds :- <br />
get_time(T), <br />
stamp_date_time(T,date(_,_,_,H,M,S,_,_,_),'local'), <br />
format('It is: ~f kiloseconds.~n',[(H*3600+M*60+S)/1000]).<br />
</pre><br />
<br />
== Python ==<br />
==== Small example ====<br />
import time<br />
tm = time.localtime()<br />
print (tm.tm_hour*3600+tm.tm_min*60+tm.tm_sec)/1000.0, "kiloseconds"<br />
<br />
==== Big example (with Ncurses) ====<br />
With fancy colours and everything<br />
./curses_clock.py -h for usage<br />
You have been warned<br />
<pre><br />
#!/usr/bin/env python2<br />
<br />
import curses<br />
import signal<br />
import traceback<br />
import time<br />
<br />
import getopt, sys<br />
<br />
DIGIT_WIDTH = 5<br />
DIGIT_HEIGHT = 5<br />
DIGIT_SPACING = 2<br />
<br />
'''<br />
_0_0_._0_0_0_<br />
'''<br />
<br />
width = 7*DIGIT_SPACING + 6*DIGIT_WIDTH <br />
height = 2*DIGIT_SPACING + DIGIT_HEIGHT<br />
<br />
<br />
# numbers, list of coords in (y,x)<br />
<br />
digits = [<br />
[<br />
"#####",<br />
"# #",<br />
"# #",<br />
"# #",<br />
"#####"<br />
],<br />
[<br />
" # ",<br />
" ## ",<br />
" # ",<br />
" # ",<br />
" ### ",<br />
],<br />
[<br />
"#####",<br />
" #",<br />
"#####",<br />
"# ",<br />
"#####",<br />
],<br />
[<br />
"#####",<br />
" #",<br />
" ####",<br />
" #",<br />
"#####",<br />
],<br />
[<br />
"# #",<br />
"# #",<br />
"#####",<br />
" #",<br />
" #",<br />
],<br />
[<br />
"#####",<br />
"# ",<br />
"#####",<br />
" #",<br />
"#####",<br />
],<br />
[<br />
"#####",<br />
"# ",<br />
"#####",<br />
"# #",<br />
"#####",<br />
],<br />
[<br />
"#####",<br />
" #",<br />
" #",<br />
" #",<br />
" #",<br />
],<br />
[<br />
"#####",<br />
"# #",<br />
"#####",<br />
"# #",<br />
"#####",<br />
],<br />
[<br />
"#####",<br />
"# #",<br />
"#####",<br />
" #",<br />
" #",<br />
],<br />
[<br />
"",<br />
"",<br />
"",<br />
"",<br />
" # ",<br />
],<br />
]<br />
<br />
def draw_digit(win, digit, y, x):<br />
sections = digits[digit]<br />
position = 0<br />
for section in sections:<br />
xpos = x<br />
for char in section:<br />
if char == ' ':<br />
win.addstr(position+y, xpos, ' ', curses.color_pair(0))<br />
else:<br />
win.addstr(position+y, xpos, ' ', curses.color_pair(1))<br />
xpos += 1<br />
position += 1<br />
<br />
def draw_time(win, digits):<br />
h,w = win.getmaxyx()<br />
x_pos = (w - width) / 2<br />
y_pos = (h - height) / 2<br />
x_pos += DIGIT_SPACING<br />
y_pos += 1<br />
digits.insert(2, 10) #add in the point<br />
for d in digits:<br />
draw_digit(win, d, y_pos, x_pos)<br />
x_pos += (DIGIT_SPACING + DIGIT_WIDTH)<br />
<br />
def tick(win):<br />
tm = time.localtime()<br />
t = ks = tm.tm_hour*3600 + tm.tm_min*60 + tm.tm_sec<br />
a = ks/10000; ks -= a*10000<br />
b = ks/1000; ks -= b*1000<br />
c = ks/100; ks -= c*100<br />
d = ks/10; ks -= d*10<br />
e = ks<br />
draw_time(win, [a,b,c,d,e])<br />
return t<br />
<br />
def draw_dots(win):<br />
h,w = win.getmaxyx()<br />
x_pos = (w - width) / 2<br />
y_pos = (h - height) / 2<br />
win.hline(y_pos,x_pos,curses.ACS_BULLET, width, curses.color_pair(2))<br />
win.hline(y_pos+DIGIT_HEIGHT+1,x_pos,curses.ACS_BULLET, width, curses.color_pair(2))<br />
win.vline(y_pos+1,x_pos,curses.ACS_BULLET, DIGIT_HEIGHT, curses.color_pair(2))<br />
win.vline(y_pos+1,x_pos+width-1,curses.ACS_BULLET, DIGIT_HEIGHT, curses.color_pair(2))<br />
<br />
<br />
def init_screen():<br />
screen = curses.initscr()<br />
curses.noecho()<br />
curses.cbreak()<br />
screen.clear()<br />
<br />
def main(screen, fg, bg):<br />
curses.curs_set(0) #hide cursor<br />
screen.nodelay(1) # do not wait for input<br />
<br />
curses.use_default_colors()<br />
<br />
curses.init_pair(1, fg, fg)<br />
curses.init_pair(2, fg, bg)<br />
<br />
screen.bkgd(' ', curses.color_pair(2))<br />
<br />
def screen_resize(*args):<br />
while 1:<br />
try: curses.endwin(); break<br />
except: time.sleep(1)<br />
screen.erase()<br />
draw_dots(screen)<br />
screen.refresh()<br />
<br />
signal.signal(signal.SIGWINCH, screen_resize)<br />
<br />
draw_dots(screen)<br />
<br />
<br />
t = None<br />
while True:<br />
newtime = tick(screen)<br />
if t != newtime:<br />
screen.refresh()<br />
t = newtime<br />
<br />
c = screen.getch()<br />
if c == ord('q'):<br />
break<br />
<br />
time.sleep(0.5)<br />
<br />
<br />
def usage():<br />
print '''curses_clock.py [OPTION]<br />
<br />
-h, --help displays this help<br />
-f, --fg=COLORCODE sets the foreground color to COLORCODE<br />
-b, --bg=COLORCODE sets the background color to COLORCODE<br />
<br />
<br />
Color codes available:<br />
default term fg/bg -1<br />
black 0<br />
red 1<br />
green 2<br />
yellow 3<br />
blue 4<br />
magenta 5<br />
cyan 6<br />
white 7<br />
'''<br />
<br />
<br />
<br />
if __name__ == '__main__':<br />
bg = 0<br />
fg = 7<br />
<br />
def do_color(arg):<br />
try:<br />
color = int(arg)<br />
except:<br />
color = -1<br />
if not -1 <= color <= 7:<br />
print "Color code not in correct range"<br />
usage()<br />
sys.exit(2)<br />
else:<br />
return color<br />
<br />
<br />
try:<br />
opts, args = getopt.getopt(sys.argv[1:], "hf:b:", ["help", "fg=", "bg="])<br />
except getopt.GetoptError:<br />
usage()<br />
sys.exit(2)<br />
<br />
for opt, arg in opts:<br />
if opt in ("-h", "--help"):<br />
usage()<br />
sys.exit()<br />
elif opt in ("-f", "--fg"):<br />
fg = do_color(arg)<br />
elif opt in ("-b", "--bg"):<br />
bg = do_color(arg)<br />
<br />
<br />
curses.wrapper(main, fg, bg)<br />
</pre><br />
<br />
== REBOL ==<br />
REBOL [ Title: "kiloseconds" File: %ks.r ]<br />
f: to integer! now/time<br />
print f / 1000<br />
<br />
== Ruby ==<br />
puts((Time.now.sec + Time.now.min*60 + Time.now.hour*3600) / 1000.0)<br />
<br />
== Scala ==<br />
Could be done shorter, but this demonstrates some nice Scala features.<br />
import java.util.Calendar<br />
<br />
object Kilosecond {<br />
private implicit def enrichCalendar(c: Calendar) = new CalendarWrapper(c)<br />
<br />
def main(args: Array[String]) = {<br />
val c = Calendar.getInstance<br />
<br />
println("Kiloseconds: " + c.kiloseconds)<br />
}<br />
<br />
private class CalendarWrapper(c: Calendar) {<br />
def kiloseconds = {<br />
val hours = c.get(Calendar.HOUR_OF_DAY)<br />
val minutes = c.get(Calendar.MINUTE)<br />
val seconds = c.get(Calendar.SECOND)<br />
<br />
(hours * 3600 + minutes * 60 + seconds) / 1000.0<br />
}<br />
}<br />
}<br />
<br />
== Sed ==<br />
=== Large ===<br />
run with sed -f ks.sed<br />
:ck;h<br />
s/^[0-2][0-9] [0-5][0-9] [0-5][0-9]$//;tok<br />
s/.*/Supply time on stdin in a format corresponding to what date "+%H %M %S" would output/<br />
b<br />
:ok;x<br />
:s; s/^\(.. ..\) \(..\)/\1 000\2/;tm<br />
:m; s/^.. .0/& 00000/;tm1<br />
s/^.. .1/& 00060/;tm1; s/^.. .2/& 00120/;tm1; s/^.. .3/& 00180/;tm1<br />
s/^.. .4/& 00240/;tm1; s/^.. .5/& 00300/;tm1; s/^.. .6/& 00360/;tm1<br />
s/^.. .7/& 00420/;tm1; s/^.. .8/& 00480/;tm1; s/^.. .9/& 00540/;tm1<br />
:m1;s/^.. 0./& 00000/;th0<br />
s/^.. 1./& 00600/;th0; s/^.. 2./& 01200/;th0; s/^.. 3./& 01800/;th0;<br />
s/^.. 4./& 02400/;th0; s/^.. 5./& 03000/;th0<br />
:h0;s/^.0 ../& 00000/;th1<br />
s/^.1 ../& 03600/;th1; s/^.2 ../& 07200/;th1; s/^.3 ../& 10800/;th1<br />
s/^.4 ../& 14400/;th1; s/^.5 ../& 18000/;th1; s/^.6 ../& 21600/;th1<br />
s/^.7 ../& 25200/;th1; s/^.8 ../& 28800/;th1; s/^.9 ../& 32400/;th1<br />
:h1;s/^0. ../00000/;tsp<br />
s/^1. ../36000/;tsp<br />
s/^2. ../72000/;tsp<br />
:sp;s/$/|/<br />
:d4;s/\<\(.\)\(....\>.*|.*\)/\2\1/;td4; s/$/ /<br />
:d3;s/\<\(.\)\(...\>.*|.*\)/\2\1/;td3; s/$/ /<br />
:d2;s/\<\(.\)\(..\>.*|.*\)/\2\1/;td2; s/$/ /<br />
:d1;s/\<\(.\)\(.\>.*|.*\)/\2\1/;td1; s/$/ /<br />
:d0;s/\<\(.\)\(\>.*|.*\)/\2\1/;td0; s/$/ /<br />
:c0;s/.*|//<br />
s/0//g<br />
s/1/o/g<br />
s/2/oo/g<br />
s/3/ooo/g<br />
s/4/oooo/g<br />
s/5/ooooo/g<br />
s/6/oooooo/g<br />
s/7/ooooooo/g<br />
s/8/oooooooo/g<br />
s/9/ooooooooo/g<br />
:+; s/\(.*\) oooooooooo\(.*\)/\1o \2/;t+<br />
:c1;s/ooooooooo /9/g<br />
s/oooooooo /8/g<br />
s/ooooooo /7/g<br />
s/oooooo /6/g<br />
s/ooooo /5/g<br />
s/oooo /4/g<br />
s/ooo /3/g<br />
s/oo /2/g<br />
s/o /1/g<br />
s/ /0/g<br />
:c2;s/\(..\)\(...\)/It is \1.\2 kiloseconds./<br />
:zp;s/0\(.\)\./\1./<br />
=== Smaller ===<br />
run with sed -f ks.sed<br />
:00;s/^[0-2][0-9] *[0-5][0-9] *[0-5][0-9]$/&/;t02<br />
:01;s/.*/Suggestion: date "+%H %M %S" | stdin./;q<br />
:02;s/ //g;x;s/^/5/;x;t03<br />
:03;s/^\(|*\)0/\1/;t08;s/^\(|*\)9/\1|||||||||/;t08;<br />
:04;s/^\(|*\)1/\1|/;t08;s/^\(|*\)8/\1||||||||/;t08;<br />
:05;s/^\(|*\)2/\1||/;t08;s/^\(|*\)7/\1|||||||/;t08;<br />
:06;s/^\(|*\)3/\1|||/;t08;s/^\(|*\)6/\1||||||/;t08;<br />
:07;s/^\(|*\)4/\1||||/;t08;s/^\(|*\)5/\1|||||/;t08;<br />
:08;x;s/0//;x;t0d;:tlvb<br />
:09;x;s/5/4/;s/3/2/;s/1/0/;x;t0b<br />
:0a;x;s/4/3/;s/2/1/;x;t0c<br />
:0b;s/|/||||||||||/g;t03;b03<br />
:0c;s/|/||||||/g;t03;b03<br />
:0d;s/|\{10\}/{/g;s/{$/{0/;<br />
:0e;s/{\{10\}/}/g;s/}\([|0]\)/}0\1/<br />
:0f;s/}\{10\}/(/g;s/(\([{0]\)/(0\1/<br />
:10;s/(\{10\}/)/g;s/)\([}0]\)/)0\1/<br />
:11;y/|{}()/{}()+/<br />
:12;s/+\{9\}/9/;s/+\{8\}/8/;s/+\{7\}/7/;s/+\{6\}/6/;<br />
:13;s/+\{5\}/5/;s/+\{4\}/4/;s/+\{3\}/3/;s/+\{2\}/2/;<br />
:14;s/+/1/;s/[|{}()]/&/;t11<br />
:15;s/^.\{0,3\}$/0&/;t15;<br />
:16;s/\(.*\)\(.\{3\}\)/It is \1.\2 kiloseconds./<br />
<br />
== Smalltalk ==<br />
'It is ', (Time now asSeconds/1000.000) printString, ' kiloseconds'<br />
<br />
== Standard ML ==<br />
open Date;<br />
let<br />
val t = fromTimeLocal (Time.now ())<br />
val ks = real (second t + minute t * 60 + hour t * 3600) / 1000.0<br />
in<br />
print (Real.fmt (StringCvt.FIX (SOME 3)) ks)<br />
end;<br />
<br />
== Supybot ==<br />
echo Today is [Math calc [echo ($YEAR * 365 + $MONTH * 12 + $DATE * 24) / 1000]] and the time is currently <br />
[Math calc [echo ($HOUR * 3600 + $MINUTE * 60 + $SECOND)/1000]] $TZ.<br />
<br />
== TCL ==<br />
puts "It's [expr [clock format [clock seconds] -format {(%k*3600+%M.0*60+%S.0)/1000}]] kiloseconds"<br />
<br />
== Weechat Plugin ==<br />
Requires weechat version 0.3.0+<br />
[http://weechat.flashtux.org/dev/scripts/kiloseconds.py kiloseconds.py]<br />
<br />
== IRSSI Plugin ==<br />
#!/usr/bin/perl<br />
<br />
use vars qw($VERSION %IRSSI);<br />
use Irssi;<br />
use strict;<br />
$VERSION = '0.10';<br />
%IRSSI = (<br />
authors => 'Ben Duffield',<br />
contact => 'jebavarde AT gmail DOT com',<br />
name => 'kiloseconds',<br />
description => 'Reports the time in kiloseconds',<br />
license => 'GPL',<br />
url => 'https://wiki.archlinux.org/index.php/Kiloseconds',<br />
changed => 'no idea',<br />
); <br />
<br />
<br />
sub cmd_kiloseconds {<br />
my ($data, $server, $witem) = @_;<br />
my $output;<br />
my $ks;<br />
my $s;<br />
my $m; <br />
my $h;<br />
<br />
($s,$m,$h) = localtime();<br />
$ks = ($h*3600+$m*60+$s)/1000; <br />
<br />
$output = sprintf("Current time: %.3f kiloseconds", $ks);<br />
<br />
<br />
if ($output) {<br />
if ($witem && ($witem->{type} eq "CHANNEL" || $witem->{type} eq "QUERY")) {<br />
$witem->command("MSG ".$witem->{name}." $output");<br />
}<br />
else {<br />
Irssi::print("This is not a channel/query window :b");<br />
}<br />
}<br />
}<br />
<br />
Irssi::command_bind('kiloseconds', 'cmd_kiloseconds');<br />
<br />
== Oracle SQL ==<br />
select ((to_char(sysdate,'HH')*60*60)+(to_char(sysdate,'MM')*60)+(to_char(sysdate,'SS')))/1000 <br />
as "Kiloseconds" from dual</div>Dustballhttps://wiki.archlinux.org/index.php?title=List_of_applications/Utilities&diff=400905List of applications/Utilities2015-09-20T11:53:51Z<p>Dustball: /* Graphical */ Removed p7zip from graphical. p7zip has no GUI anymore.</p>
<hr />
<div><noinclude><br />
[[Category:Applications]]<br />
[[es:List of applications/Utilities]]<br />
[[it:List of applications/Utilities]]<br />
[[ja:アプリケーション一覧/ユーティリティ]]<br />
[[ru:List of applications/Utilities]]<br />
[[zh-cn:List of applications/Utilities]]<br />
[[zh-tw:List of applications/Utilities]]<br />
{{List of applications navigation}}<br />
</noinclude><br />
<br />
== Utilities ==<br />
<br />
=== Partitioning tools ===<br />
<br />
See [[Partitioning#Partitioning tools]].<br />
<br />
=== Mount tools ===<br />
<br />
* {{App|9mount|Mount 9p filesystems.|http://sqweek.net/code/9mount/|{{AUR|9mount}}{{Broken package link|{{aur-mirror|9mount}}}}}}<br />
* {{App|cryptmount|Mount an encrypted file system as a regular user.|http://cryptmount.sourceforge.net/|{{AUR|cryptmount}}}}<br />
* {{App|ldm|A lightweight daemon that mounts drives automagically using ''udev''|https://github.com/LemonBoy/ldm|{{AUR|ldm}}}}<br />
* {{App|pmount|Mount ''source'' as a regular user to an automatically created destination {{ic|/media/''source_name''}}.|http://pmount.alioth.debian.org/|{{AUR|pmount}}}}<br />
* {{App|pmount-safe-removal|Mount removable devices as regular user with safe removal|http://mywaytoarch.tumblr.com/post/13111098534/pmount-safe-removal-of-usb-device|{{AUR|pmount-safe-removal}}}}<br />
* {{App|udevil|Mounts removable devices as a regular user, show device info, and monitor device changes. Only depends on ''udev'' and glib.|http://ignorantguru.github.io/udevil|{{Pkg|udevil}}}}<br />
* {{App|ws|Mount Windows network shares ([[Wikipedia:Server Message Block|CIFS]] and [[Wikipedia:Virtual file system|VFS]]).|http://winshares.sourceforge.net/|{{AUR|ws}}{{Broken package link|{{aur-mirror|ws}}}}}}<br />
<br />
==== Udisks ====<br />
<br />
* {{App|bashmount|A bash script to mount and manage removable media as a regular user with udisks.|https://github.com/jamielinux/bashmount|{{AUR|bashmount}}}}<br />
* {{App|udiskie|Automatic disk mounting service using ''udisks''|https://pypi.python.org/pypi/udiskie|{{Pkg|udiskie}}}}<br />
* {{App|udisks_functions|Bash functions and aliases for ''udisks2''|3=https://bbs.archlinux.org/viewtopic.php?id=109307|4={{AUR|udisks_functions}}{{Broken package link|{{aur-mirror|udisks_functions}}}}}}<br />
* {{App|udisksvm|GUI ''udisks'' wrapper for removable media|3=https://bbs.archlinux.org/viewtopic.php?id=112397|4={{AUR|udisksvm}}}}<br />
<br />
=== Basic shell commands ===<br />
<br />
* {{App|[[Core utilities]]|The basic file, shell and text manipulation utilities of the GNU operating system|http://www.gnu.org/software/coreutils|{{Pkg|coreutils}}}}<br />
<br />
=== Integrated development environments ===<br />
<br />
See also [[Wikipedia:Comparison of integrated development environments]].<br />
<br />
* {{App|[[Anjuta]]|Versatile IDE with project management, an application wizard, an interactive debugger, a source editor, version control support and many more tools.|http://www.anjuta.org/|{{Pkg|anjuta}}}}<br />
* {{App|[[Wikipedia:Aptana#Aptana_Studio|Aptana Studio]]|IDE based on Eclipse, but geared towards web development, with support for HTML, CSS, Javascript, Ruby on Rails, PHP, Adobe AIR and others.|http://www.aptana.org/|{{AUR|aptana-studio}}{{Broken package link|{{aur-mirror|aptana-studio}}}}}}<br />
* {{App|[[Wikipedia:Bluefish (text editor)|Bluefish]]|GTK+ editor/IDE with an MDI interface, syntax highlighting and support for Python plugins.|http://bluefish.openoffice.nl/|{{Pkg|bluefish}}}}<br />
* {{App|[[Wikipedia:BlueGriffon|BlueGriffon]]|A WYSIWYG content editor for the World Wide Web. Powered by Gecko, the rendering engine of [[Firefox]], it can edit Web pages in conformance to Web Standards. It runs on Mac OS X, Windows and Linux.|http://bluegriffon.org/|{{Pkg|bluegriffon}}}}<br />
* {{App|[[Wikipedia:Bluej|Bluej]]|Fully featured Java IDE used mainly for educational and beginner purposes.|http://bluej.org/|{{AUR|bluej}}}}<br />
* {{App|[[Wikipedia:Brackets_(text_editor)|Brackets]]|A free open-source editor written in HTML, CSS, and Javascript with a primary focus on Web Development. It was created by Adobe Systems, licensed under the MIT License, and is currently maintained on GitHub.|http://brackets.io/|{{AUR|brackets}}}}<br />
* {{App|[[Wikipedia:Code::Blocks|Code::Blocks]]|Open source and cross-platform C/C++ IDE.|http://www.codeblocks.org/|{{Pkg|codeblocks}}}}<br />
* {{App|[[Wikipedia:Cloud9 IDE|Cloud9]]|State-of-the-art IDE that runs in your browser and lives in the cloud, allowing you to run, debug and deploy applications from anywhere, anytime.|https://c9.io/|{{AUR|cloud9}}{{Broken package link|{{aur-mirror|cloud9}}}}}}<br />
* {{App|[[Eclipse]]|Open source community project, which aims to provide a universal development platform.|http://eclipse.org/|{{Pkg|eclipse-java}}, {{Pkg|eclipse-cpp}}, {{Pkg|eclipse-php}}}}<br />
* {{App|[[Wikipedia:Editra|Editra]]|Multi-platform text editor with an implementation that focuses on creating an easy to use interface and features that aid in code development.|http://www.editra.org|{{AUR|editra-svn}}}}<br />
* {{App|[[Wikipedia:Eric Python IDE|Eric]]|Full-featured Python 3.x and Ruby IDE in PyQt4.|http://eric-ide.python-projects.org/|{{Pkg|eric}} {{AUR|eric4}}}}<br />
* {{App|[[Gambas]]|Free development environment based on a Basic interpreter with object extensions.|http://gambas.sourceforge.net/en/main.html|{{Pkg|gambas3-ide}}}}<br />
* {{App|[[Wikipedia:Geany|Geany]]|Text editor using the GTK+ toolkit with basic features of an integrated development environment.|https://geany.org|{{Pkg|geany}}}}<br />
* {{App|IEP|Cross-platform Python IDE focused on interactivity and introspection, which makes it very suitable for scientific computing.|http://iep-project.org/|{{AUR|iep}}}}<br />
* {{App|[[Wikipedia:IntelliJ IDEA|IntelliJ IDEA]]|IDE for Java, Groovy and other programming languages with advanced refactoring features.|http://www.jetbrains.com/idea/|{{Pkg|intellij-idea-community-edition}}}}<br />
* {{App|[[Wikipedia:KDevelop|KDevelop]]|Feature-full, plugin extensible IDE for C/C++ and other programming languages.|http://kdevelop.org/|{{Pkg|kdevelop}}}}<br />
* {{App|[[Wikipedia:Komodo_Edit|Komodo Edit]]|A free, multi-language editor.|http://www.activestate.com/komodo-edit|{{AUR|komodo-edit}}}}<br />
* {{App|[[Wikipedia:Lazarus_(IDE)|Lazarus]]|Cross-platform IDE for Object Pascal.|http://lazarus.freepascal.org/|{{Pkg|lazarus}}}}<br />
* {{App|LiteIDE|A simple, open source, cross-platform Go IDE.|https://github.com/visualfc/liteide|{{Pkg|liteide}}}}<br />
* {{App|MonkeyStudio|Monkey Studio (MkS) is a cross platform IDE written in C++/Qt 4. Syntax highlighting for more than 22 programming languages.|http://monkeystudio.org/|{{AUR|monkeystudio}}{{Broken package link|{{aur-mirror|monkeystudio}}}}}}<br />
* {{App|[[Wikipedia:MonoDevelop|MonoDevelop]]|Cross-platform IDE targeted for the Mono and .NET frameworks.|http://monodevelop.com/|{{Pkg|monodevelop}}}}<br />
* {{App|MPLAB|IDE for Microchip PIC and dsPIC development|http://www.microchip.com/mplabx|{{AUR|microchip-mplabx-bin}}}}<br />
* {{App|[[Netbeans|NetBeans]]|Integrated development environment (IDE) for developing with Java, JavaScript, PHP, Python, Ruby, Groovy, C, C++, Scala, Clojure, and other languages.|http://netbeans.org/|{{Pkg|netbeans}}}}<br />
* {{App|[[Wikipedia:Ninja-IDE|Ninja-IDE]]| from the recursive acronym: "Ninja-IDE Is Not Just Another IDE", is a cross-platform integrated development environment (IDE); runs on Linux/X11, Mac OS X and Windows OSs. Used, for example, for Python development|http://ninja-ide.org/|{{Pkg|ninja-ide}}}}<br />
* {{App|[[Wikipedia:PhpStorm|Phpstorm]]|JetBrains PhpStorm is a commercial, cross-platform IDE for PHP built on JetBrains' IntelliJ IDEA platform, providing an editor for PHP, HTML and JavaScript with on-the-fly code analysis, error prevention and automated refactorings for PHP and JavaScript code.|https://www.jetbrains.com/phpstorm/|{{Aur|phpstorm}} {{Aur|phpstorm-eap}}}}<br />
* {{App|[[Wikipedia:PyCharm|PyCharm]]|IDE used for programming in Python with support for code analysis, debugging, unit testing, version control and web development with Django.|http://www.jetbrains.com/pycharm/|{{AUR|pycharm-community}}}}<br />
* {{App|[[Wikipedia:QDevelop|QDevelop]]|Free and cross-platform IDE for Qt.|http://biord-software.org/qdevelop/|{{AUR|qdevelop-svn}}{{Broken package link|{{aur-mirror|qdevelop-svn}}}}}}<br />
* {{App|[[Wikipedia:Qt Creator|Qt Creator]]|Lightweight, cross-platform C++ integrated development environment with a focus on Qt.|http://qt-project.org/downloads#qt-creator|{{Pkg|qtcreator}}}}<br />
* {{App|[[Wikipedia:Scratch|Scratch]]| A multimedia authoring tool for educational and entertainment purposes, such as creating interactive projects and simple sprite-based games. It is used primarly by unskilled users (such as children) as an entry to [[Wikipedia:Event-driven_programming|event-driven programming]]. ''Scratch'' is free software under GPL v2 and [http://wiki.scratch.mit.edu/wiki/Scratch_Source_Code_License Scratch Source Code License].|http://scratch.mit.edu|{{Pkg|scratch}}}}<br />
* {{App|Spyder|Scientific PYthon Development EnviRonment providing MATLAB-like features.|http://code.google.com/p/spyderlib/|{{Pkg|spyder}}}}<br />
<br />
=== Terminal emulators ===<br />
<br />
See also [[Wikipedia:List of terminal emulators]].<br />
<br />
Power users use terminal emulators quite often, so unsurprisingly lots of X11 terminal emulators exist. Most of them emulate Xterm that emulates VT102, which emulates typewriter, so you will have to read the [[Wikipedia:Terminal emulator|Wikipedia article]] and [https://google.com/search?q=linux+terminal+emulators other sources] to get a hold on these things.<br />
<br />
* {{App|[[Wikipedia:aterm|aterm]]|Xterm replacement with transparency support. It has been deprecated in favour of urxvt since 2008.|http://aterm.sourceforge.net/|{{AUR|aterm}}}}<br />
* {{App|Eterm|Terminal emulator intended as a replacement for xterm and designed for the [[Enlightenment]] desktop.|http://eterm.org|{{AUR|eterm}}}}<br />
* {{App|Final Term|A new breed of terminal emulator. Project is dead. |http://finalterm.org/|{{AUR|finalterm-git}}{{Broken package link|{{aur-mirror|finalterm-git}}}}}}<br />
* {{App|Gate One|Web-based terminal emulator and SSH client.|https://github.com/liftoff/GateOne|{{AUR|gateone-git}}}}<br />
* {{App|[[Wikipedia:Konsole|Konsole]]|Terminal emulator included in the [[KDE]] desktop.|http://kde.org/applications/system/konsole/|{{Pkg|konsole}}}}<br />
* {{App|mlterm|A multi-lingual terminal emulator supporting various character sets and encodings in the world.|http://sourceforge.net/projects/mlterm/|{{AUR|mlterm}}}}<br />
* {{App|[[Wikipedia:mrxvt|Mrxvt]]|Tabbed X terminal emulator based on rxvt.|http://materm.sourceforge.net/wiki/pmwiki.php|{{AUR|mrxvt}}{{Broken package link|{{aur-mirror|mrxvt}}}}}}<br />
* {{App|QTerminal|A lightweight Qt-based terminal emulator.|https://github.com/qterminal/qterminal|{{AUR|qterminal-git}}}}<br />
* {{App|[[Wikipedia:Rxvt|rxvt]]|Popular replacement for the xterm.|http://rxvt.sourceforge.net/|{{Pkg|rxvt}}}}<br />
* {{App|[[st]]|Simple terminal implementation for X.|http://st.suckless.org|{{AUR|st}}}}<br />
* {{App|Terminal|A terminal emulator, that supports multiple windows, scroll buffer and all the expected features. A part of GNUstep.|http://gap.nongnu.org/terminal/index.html|{{aur|gnustep-terminal}}{{Broken package link|{{aur-mirror|gnustep-terminal}}}}}}<br />
* {{App|[[terminator]]|Terminal emulator supporting multiple resizable terminal panels.|http://gnometerminator.blogspot.it/|{{Pkg|terminator}}}}<br />
* {{App|Terminology|Terminal emulator by the Enlightenment project team with innovative features: file thumbnails and media play like a media player.|http://enlightenment.org/p.php?p&#61;about/terminology|{{Pkg|terminology}}}}<br />
* {{App|[[Tilda]]|Terminal inspired by many classic terminals from first person shooter games such as Quake, Doom and Half-Life.|https://github.com/lanoxx/tilda/|{{Pkg|tilda}}}}<br />
* {{App|[[urxvt]]|Highly extendable (with Perl) unicode enabled rxvt-clone terminal emulator featuring tabbing, url launching, a Quake style drop-down mode and pseudo-transparency.|http://software.schmorp.de/pkg/rxvt-unicode|{{Pkg|rxvt-unicode}}}}<br />
* {{App|[[xterm]]|Simple terminal emulator for the X Window System. It provides DEC VT102 and Tektronix 4014 compatible terminals for programs that can't use the window system directly.|http://invisible-island.net/xterm/|{{Pkg|xterm}}}}<br />
* {{App|[[Wikipedia:Yakuake|Yakuake]]|Drop-down terminal (Quake style) emulator based on Konsole.|http://yakuake.kde.org/|{{Pkg|yakuake}}}}<br />
<br />
==== VTE-based ====<br />
<br />
[http://developer.gnome.org/vte/unstable/ VTE] (Virtual Terminal Emulator) is a widget developed during early GNOME days for use in the GNOME Terminal. It has since given birth to many terminals with similar capabilities.<br />
<br />
* {{App|evilvte|Very lightweight and highly customizable terminal emulator with support for tabs, auto-hiding and different encodings.|http://calno.com/evilvte/|{{AUR|evilvte}}}}<br />
* {{App|Germinal|Minimalist terminal emulator which provides a borderless maximized terminal, attached to a tmux session by default, hence providing tabs and panels.|http://www.imagination-land.org/tags/germinal.html|{{AUR|germinal}}}}<br />
* {{App|[[Wikipedia:GNOME Terminal|GNOME Terminal]]|A terminal emulator included in the [[GNOME]] desktop with support for Unicode and pseudo-transparency.|https://wiki.gnome.org/Apps/Terminal|{{Pkg|gnome-terminal}}}}<br />
* {{App|[[Guake]]|Drop-down terminal for the GNOME desktop.|http://guake-project.org/|{{Pkg|guake}}}}<br />
* {{App|Terra| is a GTK+3.0 based terminal emulator with useful user interface, it also supports multiple terminals with splitting screen horizontally or vertically -- (similar to guake).|https://github.com/ozcanesen/terra-terminal|{{AUR|terra}}{{Broken package link|{{aur-mirror|terra}}}}}}<br />
* {{App|[[LilyTerm]]|Very light and easy to use X Terminal Emulator|http://lilyterm.luna.com.tw/|{{Pkg|lilyterm}}}}<br />
* {{App|LXTerminal|Desktop independent terminal emulator for [[LXDE]].|http://wiki.lxde.org/en/LXTerminal|{{Pkg|lxterminal}}}}<br />
* {{App|MATE terminal|A fork of [[Wikipedia:GNOME terminal]] for the [[MATE]] desktop.|http://www.mate-desktop.org/|{{Pkg|mate-terminal}}}}<br />
* {{App|Pantheon Terminal|The Pantheon Terminal Emulator.|https://launchpad.net/pantheon-terminal|{{Pkg|pantheon-terminal}}}}<br />
* {{App|ROXTerm|Tabbed terminal emulator with a small footprint.|http://roxterm.sourceforge.net/|{{Pkg|roxterm}}}}<br />
* {{App|sakura|Terminal emulator based on GTK+ and VTE.|http://www.pleyades.net/david/projects/sakura|{{Pkg|sakura}}}}<br />
* {{App|Stjerm|GTK+-based drop-down terminal emulator that provides a minimalistic interface combined with a small file size, lightweight memory usage and easy integration with composite window managers such as Compiz.|https://code.google.com/p/stjerm-terminal-emulator/|{{AUR|stjerm-git}}{{Broken package link|{{aur-mirror|stjerm-git}}}}}}<br />
* {{App|[[Wikipedia:Terminal (Xfce)|Terminal]]|Terminal emulator included in the [[Xfce]] desktop with support for a colorized prompt and a tabbed interface.|http://docs.xfce.org/apps/terminal/start|{{Pkg|xfce4-terminal}}}}<br />
* {{App|Termit|Simple terminal emulator based on the vte library that includes tabs, bookmarks, and the ability to switch encodings.|https://wiki.github.com/nonstop/termit/|{{AUR|termit}}{{Broken package link|{{aur-mirror|termit}}}}}}<br />
* {{App|[[Termite]]|A keyboard-centric VTE-based terminal, aimed at use within a window manager with tiling and/or tabbing support.|https://github.com/thestinger/termite|{{Pkg|termite}}}}<br />
* {{App|tinyterm|Very lightweight terminal emulator based on VTE.|https://github.com/lahwaacz/tinyterm|{{AUR|tinyterm-git}}}}<br />
<br />
==== KMS-based ====<br />
<br />
The following terminal emulators are based on the [[kernel mode setting]] that could be invoked without X.<br />
* {{App|[[KMSCON]]|A KMS/DRM-based system console(getty) with an integrated terminal emulator for Linux operating systems.|https://github.com/dvdhrm/kmscon|{{Pkg|kmscon}}}}<br />
<br />
==== framebuffer-based ====<br />
<br />
In GNU/Linux world, the [[Wikipedia:Framebuffer|framebuffer]] could be refered to a virtual device in the Linux kernel ('''fbdev''') or the virtual framebuffer system for X ('''xvfb'''). This section mainly lists the terminal emulators that based on the in-kernel virtual device, i.e. '''fbdev'''.<br />
<br />
* {{App|[[fbterm]]|A fast framebuffer-based terminal emulator with many amazing features. Development stopped.|http://code.google.com/p/fbterm/|{{Pkg|fbterm}}}}<br />
* {{App|yaft|A simple terminal emulator for living without X, with UCS2 glyphs, wallpaper and 256color support.|https://github.com/uobikiemukot/yaft|{{aur|yaft}}}}<br />
<br />
=== Files ===<br />
<br />
==== File managers ====<br />
<br />
See also [[Wikipedia:Comparison of file managers]].<br />
<br />
===== Console =====<br />
<br />
* {{App|Clex|File manager with full-screen user interface|http://www.clex.sk/|{{Aur|clex}}}}<br />
* {{App|[[Wikipedia:Dired|Dired]]|Directory editor integrated with [[Emacs]].|http://www.gnu.org/software/emacs/manual/html_node/emacs/Dired.html|{{pkg|emacs}}}}<br />
* {{app|dired|Ancient DIRectory EDitor since 1980.|http://fossies.org/linux/misc/old/|{{aur|dired}}}}<br />
* {{App|[[Midnight Commander]]|Console-based, dual-paneled file manager.|http://www.midnight-commander.org|{{Pkg|mc}}}}<br />
* {{App|nffm|"Nothing Fancy File Manager", a mouseless ncurses file manager written in C.|https://github.com/mariostg/nffm|{{AUR|nffm-git}}}}<br />
* {{App|Pilot|File manager that comes with the [[Alpine]] email client.|http://re-alpine.sourceforge.net/|{{AUR|re-alpine}}{{Broken package link|{{aur-mirror|re-alpine}}}}}}<br />
* {{App|[[Ranger]]|Console-based file manager with vi bindings, customizability, and lots of features.|http://nongnu.org/ranger|{{Pkg|ranger}}}}<br />
* {{App|[[Vifm]]|Ncurses-based two-panel file manager with vi-like keybindings.|http://vifm.info|{{Pkg|vifm}}}}<br />
<br />
===== Graphical =====<br />
<br />
* {{App|Andromeda|Qt-based cross-platform file manager.|https://github.com/ABBAPOH/Andromeda/|{{AUR|andromeda}}{{Broken package link|{{aur-mirror|andromeda}}}} }}<br />
* {{App|Caja|The file manager for the MATE desktop.|https://github.com/mate-desktop/caja|{{Pkg|caja}}}}<br />
* {{App|Dino|Easy to use and powerful file manager built in Qt.|http://dfm.sourceforge.net/|{{AUR|dino-dfm}}{{Broken package link|{{aur-mirror|dino-dfm}}}}}}<br />
* {{App|[[Dolphin]]|File manager included in the KDE4 desktop.|http://dolphin.kde.org/|{{Pkg|kdebase-dolphin}}{{Broken package link|replaced by {{Pkg|dolphin}}}}}}<br />
* {{App|Double Commander|File manager with two panels side by side. It is inspired by Total Commander and features some new ideas.|http://doublecmd.sourceforge.net//|{{Pkg|doublecmd-gtk2}} {{Pkg|doublecmd-qt}}}}<br />
* {{App|[[Wikipedia:emelFM2|emelFM2]]|File manager that implements the popular two-panel design.|http://emelfm2.net/|{{Pkg|emelfm2}}}}<br />
* {{App|Gentoo|A lightweight file manager for GTK.|http://www.obsession.se/gentoo/|{{AUR|gentoo}}}}<br />
* {{App|[[Wikipedia:GNOME Commander|GNOME Commander]]|A dual-paned file manager for the GNOME Desktop.|http://gcmd.github.io/|{{Pkg|gnome-commander}}}}<br />
* {{App|[[GNOME Files]]|Extensible, heavyweight file manager used by default in GNOME with support for custom scripts.|https://wiki.gnome.org/Apps/Nautilus|{{Pkg|nautilus}}}}<br />
* {{App|[[Wikipedia:Konqueror|Konqueror]]|File manager and web browser for the KDE desktop.|http://www.konqueror.org/|{{Pkg|kdebase-konqueror}}}}<br />
* {{App|[[Wikipedia:Krusader|Krusader]]|Advanced twin panel (Midnight Commander style) file manager for the KDE desktop.|http://www.krusader.org/|{{Pkg|krusader}}}}<br />
* {{App|muCommander|A lightweight, cross-platform file manager with a dual-pane interface written in Java.|http://www.mucommander.com/|{{AUR|mucommander}}{{Broken package link|{{aur-mirror|mucommander}}}}}}<br />
* {{App|[[Nemo]]|Nemo is the file manager of the Cinnamon desktop. A good alternative to Nautilus.|http://cinnamon.linuxmint.com/|{{Pkg|nemo}}}}<br />
* {{App|[[Wikipedia:Fox_toolkit|PathFinder]]|File browser that comes with the FOX toolkit.|http://fox-toolkit.org/|{{Pkg|fox}}}}<br />
* {{App|[[PCManFM]]|Lightweight file manager which features tabbed and dual pane browsing; also it can optionally manage the desktop icons and background.|http://wiki.lxde.org/en/PCManFM|{{Pkg|pcmanfm}}}}<br />
* {{App|QtFileMan|File manager similar to PCManFM from LXDE.|http://gitorious.org/qtfileman|{{AUR|qtfileman-git}}{{Broken package link|{{aur-mirror|qtfileman-git}}}}}}<br />
* {{App|qtFM|Small, lightweight filemanager for Linux desktops based on pure Qt.|http://www.qtfm.org/|{{Pkg|qtfm}}}}<br />
* {{App|ROX|Small and fast file manager which can optionally manage the desktop background and panels.|http://rox.sourceforge.net|{{Pkg|rox}}}}<br />
* {{App|[[SpaceFM]]|GTK+ multi-panel tabbed file manager.|http://ignorantguru.github.com/spacefm/|{{Pkg|spacefm}}}}<br />
* {{App|Sunflower|Small and highly customizable twin-panel file manager for Linux with support for plugins.|http://sunflower-fm.org/|{{AUR|sunflower}}}}<br />
* {{App|[[Thunar]]|File manager that can be run as a daemon with excellent start up and directory load times.|http://docs.xfce.org/xfce/thunar/start|{{Pkg|thunar}}}}<br />
* {{App|Tux Commander|Windowed file manager with two panels side by side similar to popular Total Commander or Midnight Commander file managers.|http://tuxcmd.sourceforge.net/description.php|{{Pkg|tuxcmd}}}}<br />
* {{App|Worker|Fast, lightweight and feature-rich file manager for the X Window System.|http://www.boomerangsworld.de/worker/|{{AUR|worker}}}}<br />
* {{App|[[Wikipedia:Xfe|Xfe]]|Microsoft Explorer-like file manager for X (X File Explorer).|http://roland65.free.fr/xfe/|{{Pkg|xfe}}}}<br />
<br />
==== Desktop search engines ====<br />
<br />
See also [[Wikipedia:List of search engines#Desktop search engines]].<br />
<br />
* {{App|Baloo|KDE's file indexing and search solution|https://community.kde.org/Baloo|{{Pkg|baloo}}}}<br />
* {{App|Catfish|Versatile file searching tool|https://launchpad.net/catfish-search|{{Pkg|catfish}}}}<br />
* {{App|Docfetcher|A java open source desktop search application|http://docfetcher.sourceforge.net|{{AUR|docfetcher}}}}<br />
* {{App|Gnome Search Tool|Default Gnome utility to search for files|http://gnome.org|{{Pkg|gnome-search-tool}}}}<br />
* {{App|Gnome Search Tool No Nautilus|''gnome-search-tool'' to search for files without [[GNOME Files]] or ''gnome-desktop''||{{AUR|gnome-search-tool-no-nautilus}}}}<br />
* {{App|Pinot|Personal search and metasearch tool|http://code.google.com/p/pinot-search/|{{Pkg|pinot}}}}<br />
* {{App|Recoll|Full text search tool based on Xapian backend|http://www.lesbonscomptes.com/recoll/|{{Pkg|recoll}}}}<br />
* {{App|Searchmonkey|A powerful GUI search utility for matching regex patterns|http://searchmonkey.sourceforge.net/|{{AUR|searchmonkey}}}}<br />
* {{App|[[Wikipedia:Strigi|Strigi]]|Fast crawling desktop search engine with a Qt GUI.|http://strigi.sourceforge.net/|{{Pkg|strigi}}}}<br />
* {{App|[[Wikipedia:Tracker (search software)|Tracker]]|All-in-one indexer, search tool and metadata database.|https://wiki.gnome.org/Projects/Tracker|{{Pkg|tracker}}}}<br />
<br />
==== Archiving and compression tools ====<br />
<br />
See also [[Wikipedia:Comparison of file archivers]].<br />
<br />
===== Console =====<br />
<br />
* {{App|atool|Script for managing file archives of various types.|http://www.nongnu.org/atool/|{{Pkg|atool}}}}<br />
* {{App|arj|An archiver that formerly used on DOS/Windows in mid-1990s. This is an open source clone.|http://arj.sourceforge.net/|{{AUR|arj}}}}<br />
* {{App|[[Wikipedia:cpio|cpio]]|GNU tool supporting cpio and tar file archive formats.|http://www.gnu.org/software/cpio|{{Pkg|cpio}}}}<br />
* {{App|[[Wikipedia:Dar (disk archiver)|dar]]|An archiving and compression utility avoiding the drawbacks of tar|[http://dar.linux.free.fr/ DAR - Disk ARchive]|{{AUR|dar}}}}<br />
* {{App|lha|Archiver to create LH-7 format archives. 32-bit only (require multilib on x86_64).|http://www.infor.kanazawa-it.ac.jp/~ishii/lhaunix|{{aur|lha}}}}<br />
* {{App|lrzip|Multi-threaded compressor using the rzip/lzma, lzo, and zpaq algorithms.|http://lrzip.kolivas.org/|{{pkg|lrzip}}}}<br />
* {{App|lz4|A file compressor using lz4 - An extremely fast compression algorithm.|https://code.google.com/p/lz4/|{{pkg|lz4}}}}<br />
* {{App|lzop|Fast file compressor using lzo lib.|http://www.lzop.org/|{{pkg|lzop}}}}<br />
* {{App|[[p7zip]]|Port of 7-Zip for POSIX systems, including Linux. The commandline tool is called '''7z'''.|http://p7zip.sourceforge.net/|{{Pkg|p7zip}}}}<br />
* {{App|pixz|A multi-threaded and indexed compressor that avoiding the drawbacks of xz.|https://github.com/vasi/pixz|{{pkg|pixz}}}}<br />
* {{App|[[tar]]|GNU utility for manipulating the ubiquitous tar archives (tarballs).|http://www.gnu.org/software/tar|{{Pkg|tar}}}}<br />
* {{App|[[Wikipedia:ZPAQ|zpaq]]|A high compression ratio archiver written in C++. Powered by Context-Model, LZ77 and BWT algorithm.|http://mattmahoney.net/dc/zpaq.html|{{aur|zpaq}}}}<br />
* {{App|zopfli|High compress ratio file compressor from Google, using a deflate-compatible algorithm called zopfli.|https://code.google.com/p/zopfli|{{aur|zopfli-git}}}}<br />
* {{App|zoo|Rarely used archiver that was mostly used in VMS world before PKZIP became popular.|http://ftp.sunet.se/pub/usenet/ftp.uu.net/comp.sources.unix/volume11/zoo/|{{aur|zoo}}}}<br />
<br />
===== Graphical =====<br />
<br />
* {{App|[[Wikipedia:Ark (software)|Ark]]|Archiving tool included in the KDE desktop.|http://kde.org/applications/utilities/ark/|{{Pkg|kdeutils-ark}}{{Broken package link|replaced by {{Pkg|ark}}}}}}<br />
* {{App|Engrampa|Archive manager for [[MATE]]|https://github.com/mate-desktop/engrampa|{{Pkg|engrampa}}}}<br />
* {{App|[[Wikipedia:File Roller|File Roller]]|Archive manager included in the GNOME desktop.|http://fileroller.sourceforge.net/|{{Pkg|file-roller}}}}<br />
* {{App|FreeArc|General-purpose archiver written in haskell, comes with a GTK2 gui. Currently only available on 32-bit platform. (Requires multilib on x86_64)|http://encode.ru/threads/43-FreeArc/|{{aur|freearc}}{{Broken package link|{{aur-mirror|freearc}}}}}}<br />
* {{App|[[Wikipedia:PeaZip|PeaZip]]|Open source file and archive manager.|http://www.peazip.org/peazip-linux.html|{{AUR|peazip-gtk2}} {{AUR|peazip-qt}}}}<br />
* {{App|Squeeze|Featherweight front-end for commandline archiving tools.|http://squeeze.xfce.org/|{{AUR|squeeze-git}}}}<br />
* {{App|Xarchive|Generic GTK2 front-end that uses external wrappers around commandline archiving tools.|http://xarchive.sourceforge.net/|{{AUR|xarchive}}{{Broken package link|{{aur-mirror|xarchive}}}}}}<br />
* {{App|[[Wikipedia:Xarchiver|Xarchiver]]|Lightweight desktop independent archive manager built with GTK+.|http://xarchiver.sourceforge.net/|{{Pkg|xarchiver}}}}<br />
<br />
==== Comparison, diff, merge ====<br />
<br />
{{Merge|Pacnew and Pacsave files#Managing .pacnew files|There's only a list of tools, and it must be in [[List of applications]]}}<br />
<br />
See also [[Wikipedia:Comparison of file comparison tools]].<br />
<br />
* {{App|colordiff|A Perl script wrapper for 'diff' that produces the same output but with pretty 'syntax' highlighting.|http://www.colordiff.org/|{{Pkg|colordiff}}}}<br />
* {{App|Diffuse|Small and simple text merge tool written in Python.|http://diffuse.sourceforge.net/|{{Pkg|diffuse}}}}<br />
* {{App|KDiff3|File and directory diff and merge tool for the KDE desktop.|http://kdiff3.sourceforge.net/|{{Pkg|kdiff3}}}}<br />
* {{App|[[Wikipedia:Kompare|Kompare]]|GUI front-end program for viewing and merging differences between source files. It supports a variety of diff formats and provides many options to customize the information level displayed.|http://www.caffeinated.me.uk/kompare/|{{Pkg|kompare}}}}<br />
* {{App|[[Wikipedia:Meld (software)|Meld]]|Visual diff and merge tool that can compare files, directories, and version controlled projects.|http://meld.sourceforge.net|{{Pkg|meld}}}}<br />
* {{App|xxdiff|A graphical browser for file and directory differences.|http://furius.ca/xxdiff/|{{AUR|xxdiff}}}}<br />
<br />
[[Vim]] and [[Emacs]] provide merge functionality with [[Vim#Merging_files_.28vimdiff.29|vimdiff]] and {{ic|ediff}}.<br />
<br />
==== Batch renamers ====<br />
<br />
* {{App|[[Wikipedia:GPRename|GPRename]]|GTK+ batch renamer for files and directories.|http://gprename.sourceforge.net|{{Pkg|gprename}}}}<br />
* {{App|[[Wikipedia:KRename|KRename]]|Very powerful batch file renamer for the KDE desktop.|http://www.krename.net|{{Pkg|krename}}}}<br />
* {{App|metamorphose2|wxPython based batch renamer with support for regular expressions, renaming multimedia files according to their metadata, etc.|http://file-folder-ren.sourceforge.net|{{AUR|metamorphose2}}}}<br />
* {{App|pyRenamer|Application for the mass renaming of files.|http://www.infinicode.org/code/pyrenamer/|{{AUR|pyrenamer}}}}<br />
* {{App|rename.pl|Batch renamer based on perl regex.|http://search.cpan.org/~pederst/rename/bin/rename.PL|{{Pkg|perl-rename}}}}<br />
<br />
=== Disk cleaning ===<br />
<br />
* {{App|[[Wikipedia:BleachBit|BleachBit]]|It frees disk space and guards your privacy; frees cache, deletes cookies, clears Internet history, shreds temporary files, deletes logs, and discards junk you didn't know was there.|http://bleachbit.sourceforge.net/|{{Pkg|bleachbit}}}}<br />
* {{App|gconf-cleaner|cleans up the unknown/invalid gconf keys that still sitting down on your gconf database|https://code.google.com/p/gconf-cleaner/|{{AUR|gconf-cleaner}}{{Broken package link|{{aur-mirror|gconf-cleaner}}}}}}<br />
<br />
=== Disk usage display ===<br />
<br />
* {{App|[[Wikipedia:Disk Usage Analyzer|Disk Usage Analyzer]] (Baobab)|Disk usage analyzer for the [[GNOME]] desktop.|http://www.marzocca.net/linux/baobab|{{Pkg|baobab}} {{aur|baobab36}}{{Broken package link|{{aur-mirror|baobab36}}}}}}<br />
* {{App|[[Wikipedia:Filelight|Filelight]]|Disk usage analyzer that creates an interactive map of concentric, segmented rings that help visualise disk usage on your computer.|http://methylblue.com/filelight/|{{Pkg|filelight}}}}<br />
* {{App|GdMap|Disk usage analyzer that draws a map of rectangles sized according to file or dir sizes.|http://gdmap.sourceforge.net/|{{Pkg|gdmap}}}}<br />
* {{App|gt5|Diff-capable "du-browser".|http://gt5.sourceforge.net|{{AUR|gt5}}{{Broken package link|{{aur-mirror|gt5}}}}}}<br />
* {{App|ncdu|Simple ncurses disk usage analyzer.|http://dev.yorhel.nl/ncdu|{{Pkg|ncdu}}}}<br />
<br />
=== Clock synchronization ===<br />
<br />
* {{App|[[NTPd]]|Network Time Protocol reference implementation.|http://support.ntp.org/bin/view/Main/WebHome#The_NTP_Project|{{Pkg|ntp}}}}<br />
* {{App|[[Chrony]]|Lightweight NTP client and server.|http://chrony.tuxfamily.org/|{{Pkg|chrony}}}}<br />
* {{App|[[OpenNTPD]]|Free, easy to use implementation of the Network Time Protocol.|http://www.openntpd.org/|{{Pkg|openntpd}}}}<br />
<br />
=== System monitoring ===<br />
<br />
* {{App|adesklet SystemMonitor|Collection of modular stackable system monitors for [[Wikipedia:Adesklets|adesklets]].|http://adesklets.sourceforge.net/desklets.html|{{AUR|adesklet-systemmonitor}}{{Broken package link|{{aur-mirror|adesklet-systemmonitor}}}}}}<br />
* {{App|candybar|WebKit-based status line for tiling window managers.|https://github.com/Lokaltog/candybar|{{AUR|candybar-git}}{{Broken package link|{{aur-mirror|candybar-git}}}}}}<br />
* {{App|[[Conky]]|Lightweight, scriptable system monitor.|https://github.com/brndnmtthws/conky|{{Pkg|conky}}}}<br />
* {{App|Collectd|A simple, extensible system monitoring daemon based on [http://oss.oetiker.ch/rrdtool/ rrdtool]. It has a small footprint and can be set up either stand-alone or as a server/client application.|https://collectd.org/|{{Pkg|collectd}}}}<br />
* {{App|dstat|Versatile resource statistics tool.|http://dag.wieers.com/home-made/dstat/|{{Pkg|dstat}}}}<br />
* {{App|[[Wikipedia:GKrellM|GKrellM]]|Simple, flexible system monitor package for [[GTK+]] with many plug-ins.|http://members.dslextreme.com/users/billw/gkrellm/gkrellm.html|{{Pkg|gkrellm}}}}<br />
* {{App|gnome-system-monitor|A system monitor for [[GNOME]].|https://help.gnome.org/users/gnome-system-monitor/|{{Pkg|gnome-system-monitor}} {{aur|gnome-system-monitor-gtk2}}}}<br />
* {{App|[[Wikipedia:Htop|htop]]|Simple, ncurses interactive process viewer.|http://htop.sourceforge.net/|{{Pkg|htop}}}}<br />
* {{App|[[Wikipedia:KDE System Guard|KSysGuard]]|Also known as KSysguard, is the [[KDE]] task manager and performance monitor.|http://userbase.kde.org/KSysGuard|{{Pkg|ksysguard}} or as part of {{Pkg|kdebase-workspace}}}}<br />
* {{App|linux process explorer|Graphical process explorer for Linux.|http://sourceforge.net/projects/procexp/|{{AUR|procexp}}{{Broken package link|{{aur-mirror|procexp}}}}}}<br />
* {{App|LXTask|Lightweight task manager for [[LXDE]].|http://wiki.lxde.org/en/LXTask|{{Pkg|lxtask}}}}<br />
* {{app|mate-system-monitor|A GTK2 system monitor for [[MATE]].|https://github.com/mate-desktop/mate-system-monitor|{{pkg|mate-system-monitor}}}}<br />
* {{app|Task Manager|GTK2 process mangement application for [[Xfce]].|http://goodies.xfce.org/projects/applications/xfce4-taskmanager|{{pkg|xfce4-taskmanager}}}}<br />
* {{App|[[Paramano]]|A light battery monitor and a CPU frequency scaler. Forked from trayfreq|http://batchbin.ueuo.com/projects/trayfreq-archlinux/|{{AUR|paramano}}}}<br />
<br />
=== System information viewers ===<br />
<br />
==== Console ====<br />
<br />
* {{App|alsi|A system information tool for Arch Linux. It can be configured for every other system without even touching the source code of the script.|http://trizenx.blogspot.ro/2012/08/alsi.html|{{AUR|alsi}}}}<br />
* {{App|archey|Simple python script that displays the arch logo and some basic information. Depends on python3.|https://github.com/djmelik/archey|{{AUR|archey}}{{Broken package link|{{aur-mirror|archey}}}}}}<br />
* {{App|archey2|Simple python script that displays the arch logo and some basic information. Python 2.x version.|https://github.com/djmelik/archey|{{AUR|archey2}}}}<br />
* {{App|archey3-git|Python script to display system infomation alongside the Arch Linux logo.|http://www.generictestdomain.net/archey3/|{{AUR|archey3-git}}}}<br />
* {{App|dmidecode|It reports information about your system's hardware as described in your system BIOS according to the SMBIOS/DMI standard.|http://www.nongnu.org/dmidecode/|{{Pkg|dmidecode}}}}|<br />
* {{App|hwdetect|Simple script to list modules that are exported by /sys, a part of [[archboot]].|https://projects.archlinux.org/|{{pkg|hwdetect}}}}<br />
* {{App|hwinfo|Powerful hardware detection tool come from openSUSE.|https://github.com/openSUSE/hwinfo|{{pkg|hwinfo}}}}<br />
* {{App|inxi|A script to get system information.|https://code.google.com/p/inxi|{{pkg|inxi}}}}<br />
* {{App|screenfetch|Similar to archey but has an option to take a screenshot. Written in bash.|https://github.com/KittyKatt/screenFetch|{{Pkg|screenfetch}}}}<br />
<br />
==== Graphical ====<br />
<br />
* {{App|CPU-G|An application that shows useful information about your hardware, it looks like CPU-Z in Windows.|http://cpug.sourceforge.net/|{{AUR|cpu-g}}{{Broken package link|{{aur-mirror|cpu-g}}}}}}<br />
* {{App|hardinfo|A small application that displays information about your hardware and operating system, it looks like the Device Manager in Windows.|http://hardinfo.berlios.de/HomePage|{{Pkg|hardinfo}}}}<br />
* {{App|i-Nex|An application that gathers information for hardware components available on your system and displays it using an user interface similar to the popular Windows tool CPU-Z.|http://i-nex.linux.pl/|{{AUR|i-nex-git}}}}<br />
* {{App|lshw-gtk|A small tool to provide detailed information on the hardware configuration of the machine with CLI and GTK interfaces.|http://ezix.org/project/wiki/HardwareLiSter|{{AUR|lshw-gtk}}{{Broken package link|{{aur-mirror|lshw-gtk}}}}}}<br />
<br />
==== Others ====<br />
<br />
* {{App|tp-hdd-led|Monitor HDD use with the Think-Led|http://en.timherbst.de/tp-hdd-led/|{{AUR|tp-hdd-led}}{{Broken package link|{{aur-mirror|tp-hdd-led}}}}}}<br />
<br />
=== Keyboard layout switchers ===<br />
<br />
* {{App|fbxkb|A NETWM compliant keyboard indicator and switcher. It shows a flag of current keyboard in a systray area and allows you to switch to another one.|http://fbxkb.sourceforge.net/|{{AUR|fbxkb}}}}<br />
* {{App|xxkb|A lightweight keyboard layout indicator and switcher.|http://sourceforge.net/projects/xxkb/|{{Pkg|xxkb}}}}<br />
* {{App|qxkb|A keyboard switcher written in Qt.|http://code.google.com/p/qxkb/|{{AUR|qxkb}}{{Broken package link|{{aur-mirror|qxkb}}}}}}<br />
* {{App|[[Wikipedia:X Neural Switcher|X Neural Switcher]]|A text analyser, it detects the language of the input and corrects the keyboard layout if needed.|http://www.xneur.ru/|{{AUR|xneur}}, {{AUR|gxneur}} (GUI)}}<br />
<br />
=== Power management ===<br />
<br />
See [[Power saving#Packages]].<br />
<br />
=== Clipboard managers ===<br />
<br />
See: [[Clipboard#List of clipboard managers|List of clipboard managers]].<br />
<br />
=== Wallpaper setters ===<br />
* {{App|bgs|An extremely fast and small background setter for X based on imlib2.|http://github.com/Gottox/bgs/|{{AUR|bgs-git}}}}<br />
* {{App|esetroot|Eterm's root background setter, packaged separately|http://www.eterm.org/|{{AUR|esetroot}}}}<br />
* {{App|[[Feh]]|A lightweight and powerful image viewer that can also be used to manage the desktop wallpaper.|http://linuxbrit.co.uk/software/feh/|{{Pkg|feh}}}}<br />
* {{App|habak|A background changing app|http://fvwm-crystal.org/|{{Pkg|habak}}}}<br />
* {{App|hsetroot|A tool to create compose wallpapers.|https://packages.debian.org/sid/hsetroot|{{AUR|hsetroot}}}}<br />
* {{App|[[Nitrogen]]|A fast and lightweight desktop background browser and setter for X windows.|http://projects.l3ib.org/nitrogen/|{{Pkg|nitrogen}}}}<br />
* {{App|pybgsetter|Multi-backend (hsetroot, Esetroot, habak, feh) to set desktop wallpaper|<nowiki>http://bbs.archlinux.org/viewtopic.php?id=88997</nowiki>|{{AUR|pybgsetter}}}}<br />
* {{App|wallpaperd|A small application that takes care of setting the background image|https://projects.pekdon.net/projects/wallpaperd|{{AUR|wallpaperd}}}}<br />
* {{App|xli|An image display program for X|https://packages.debian.org/sid/xli|{{AUR|xli}}}}<br />
<br />
{{Tip|In order to avoid installing one more package, you may find convenient to use the {{ic|display}} utility from {{Pkg|imagemagick}} or {{ic|gm display}} from {{Pkg|graphicsmagick}}. E.g.: {{ic|display -backdrop -background '#3f3f3f' -flatten -window root ''image''}}.}}<br />
<br />
=== Package management ===<br />
<br />
See also: [[AUR helpers]] and [[Pacman GUI Frontends]].<br />
<br />
* {{App|Lostfiles|Script for detecting orphaned files.|https://github.com/graysky2/lostfiles|{{AUR|lostfiles}}}}<br />
* {{App|[[Pacmatic]]|Pacman wrapper to check Arch News before upgrading, avoid partial upgrades, and warn about configuration file changes.|http://kmkeen.com/pacmatic|{{Pkg|pacmatic}}}}<br />
* {{App|[[pkgfile]]|Tool that finds what package owns a file.|http://github.com/falconindy/pkgfile|{{Pkg|pkgfile}}}}<br />
* {{App|[[pkgtools]]|Collection of scripts for Arch Linux packages.|https://github.com/Daenyth/pkgtools|{{AUR|pkgtools}}}}<br />
* {{App|srcpac|Simple tool that automates rebuilding packages from source.|https://projects.archlinux.org/srcpac.git|{{Pkg|srcpac}}}}<br />
<br />
=== Input method editor ===<br />
<br />
{{Merge|Internationalization#Input_methods_in_Xorg|Then just link there.}}<br />
<br />
See also [[Wikipedia:Input method]].<br />
<br />
* {{App|[[Fcitx]]|Flexible Context-aware Input Tool with eXtension.|http://fcitx-im.org|{{Pkg|fcitx}}}}<br />
* {{App|Hime|A GTK2+/GTK3+ based universal input method platform.|http://hime-ime.github.io/|{{AUR|hime-git}}}}<br />
* {{App|[[IBus]]|Next Generation Input Bus for Linux.|http://ibus.googlecode.com|{{Pkg|ibus}}}}<br />
* {{App|[[Rime IME]]|Rime input method engine.|http://code.google.com/p/rimeime/|{{Pkg|ibus-rime}} or {{Pkg|fcitx-rime}}}}<br />
* {{App|[[UIM]]|Multilingual input method library.|http://code.google.com/p/uim/|{{Pkg|uim}}}}</div>Dustballhttps://wiki.archlinux.org/index.php?title=Talk:League_of_Legends&diff=329548Talk:League of Legends2014-08-09T15:13:31Z<p>Dustball: /* Wine-patch for PKGBUILD */ new section</p>
<hr />
<div>What is wrong with this article? --[[User:Rabcor|Rabcor]] ([[User talk:Rabcor|talk]]) 16:48, 27 July 2014 (UTC)<br />
<br />
:The main problem is that the article is not well organized. For example, with three troubleshooting sections it looks like you have multiple articles in one. This makes it harder to find potential solutions in the article. The actual section, [[League_of_Legends#Troubleshooting/Tips]] is not sorted and a simple bulleted list. Some sections are similarly spread out, e.g those in [[League_of_Legends#Wine_Method]].<br />
<br />
:This doesn't mean you should create several articles; for an example article that includes "methods", yet is still well organized, see [[OpenRC]]. -- [[User:Alad|Alad]] ([[User talk:Alad|talk]]) 17:10, 27 July 2014 (UTC)<br />
<br />
== Wine-patch for PKGBUILD ==<br />
<br />
http://sprunge.us/jGYc Not sure if this should get merged into the article, but this would be the patch for the current PKGBUILD to incorporate the mentioned wine-patch. -- [[User:Dustball|Dustball]] ([[User talk:Dustball|talk]]) 15:13, 9 August 2014 (UTC)</div>Dustballhttps://wiki.archlinux.org/index.php?title=Talk:RTorrent&diff=317614Talk:RTorrent2014-06-01T22:41:11Z<p>Dustball: /* rtorrent with dtach as service? */</p>
<hr />
<div>== network.http.ssl_verify_peer.set=0 ==<br />
It seems to me "set network.http.ssl_verify_peer.set=0 " would open the door for man-in-the-middle attacks[[User:Rwd|Rwd]].<br />
<br />
<br />
== rtorrent with dtach as service? ==<br />
There are 3 service files so far, with tmux and screen. But can it be done with dtach? /usr/bin/dtach -n /home/dustball/.dtach/rtorrent /usr/bin/rtorrent doesn't seem to cut it. [[User:Dustball|Dustball]]</div>Dustballhttps://wiki.archlinux.org/index.php?title=Talk:RTorrent&diff=317613Talk:RTorrent2014-06-01T22:39:51Z<p>Dustball: </p>
<hr />
<div>== network.http.ssl_verify_peer.set=0 ==<br />
It seems to me "set network.http.ssl_verify_peer.set=0 " would open the door for man-in-the-middle attacks[[User:Rwd|Rwd]].<br />
<br />
<br />
== rtorrent with dtach as service? ==<br />
There are 3 service files so far, with tmux and screen. But can it be done with dtach? [code]/usr/bin/dtach -n /home/dustball/.dtach/rtorrent /usr/bin/rtorrent > /tmp/dtach.log[/code] doesn't seem to cut it. [[User:Dustball|Dustball]]</div>Dustballhttps://wiki.archlinux.org/index.php?title=Desktop_environment&diff=315509Desktop environment2014-05-17T22:07:25Z<p>Dustball: </p>
<hr />
<div>[[Category:Desktop environments| ]]<br />
[[es:Desktop Environment]]<br />
[[it:Desktop Environment]]<br />
[[ja:Desktop Environment]]<br />
[[sv:Skrivbordsmiljö]]<br />
[[uk:Desktop Environment]]<br />
[[zh-CN:Desktop Environment]]<br />
{{Related articles start}}<br />
{{Related|Display manager}}<br />
{{Related|Window manager}}<br />
{{Related|Default applications}}<br />
{{Related articles end}}<br />
A [[Wikipedia:Desktop environment|desktop environment]] provides a ''complete'' graphical user interface (GUI) for a system by bundling together a variety of X clients written using a common widget toolkit and set of libraries. <br />
<br />
== X Window System == <!-- please keep this section synchronized with [[Window manager#X Window System]] --><br />
The [[Wikipedia:X Window System|X Window System]] provides the foundation for a graphical user interface. Prior to installing a desktop environment, a functional X server installation is required. See [[Xorg]] for detailed information.<br />
<br />
:''X provides the basic framework, or primitives, for building such GUI environments: drawing and moving windows on the screen and interacting with a mouse and keyboard. X does not mandate the user interface — individual client programs known as window managers handle this. As such, the visual styling of X-based environments varies greatly; different programs may present radically different interfaces. X is built as an additional (application) abstraction layer on top of the operating system kernel.''<br />
<br />
The user is free to configure their GUI environment in any number of ways. Desktop environments simply provide a complete and convenient means of accomplishing this task.<br />
<br />
== Desktop environments ==<br />
A desktop environment bundles together a variety of X clients to provide common graphical user interface elements such as icons, windows, toolbars, wallpapers, and desktop widgets. Additionally, most desktop environments include a set of integrated applications and utilities.<br />
<br />
Note that users are free to mix-and-match applications from multiple desktop environments. For example, a KDE user may install and run GNOME applications such as the Epiphany web browser, should he/she prefer it over KDE's Konqueror web browser. One drawback of this approach is that many applications provided by desktop environment projects rely heavily upon their DE's respective underlying libraries. As a result, installing applications from a range of desktop environments will require installation of a larger number of dependencies. Users seeking to conserve disk space and avoid [[Wikipedia:software bloat|software bloat]] often avoid such mixed environments, or look into lightweight alternatives.<br />
<br />
Furthermore, DE-provided applications tend to integrate better with their native environments. Superficially, mixing environments with different widget toolkits will result in visual discrepancies (that is, interfaces will use different icons and widget styles). In terms of user experience, mixed environments may not behave similarly (e.g. single-clicking versus double-clicking icons; drag-and-drop functionality) potentially causing confusion or unexpected behavior.<br />
<br />
=== List of desktop environments ===<br />
==== Officially supported ====<br />
* {{App|[[Cinnamon]]|Cinnamon is a fork of GNOME 3. Cinnamon strives to provide a traditional user experience, similar to GNOME 2.|http://cinnamon.linuxmint.com/|{{Pkg|cinnamon}}}}<br />
<br />
* {{App|[[Enlightenment]]|The Enlightenment desktop shell provides an efficient yet breathtaking window manager based on the Enlightenment Foundation Libraries along with other essential desktop components like a file manager, desktop icons and widgets. It boasts a unprecedented level of theme-ability while still being capable of performing on older hardware or embedded devices.|http://www.enlightenment.org/|{{Pkg|enlightenment}}}}<br />
<br />
* {{App|[[GNOME]]|The GNOME project provides two things: The GNOME desktop environment, an attractive and intuitive desktop for users, and the GNOME development platform, an extensive framework for building applications that integrate into the rest of the desktop. GNOME is free, usable, accessible, international, developer-friendly, organized, supported, and a community.|http://www.gnome.org/about/|{{grp|gnome}}}}<br />
<br />
* {{App|[[KDE]]|KDE software consists of a large number of individual applications and a desktop workspace as a shell to run these applications. You can run KDE applications just fine on any desktop environment as they are built to integrate well with your system's components. By also using the KDE workspace, you get even better integration of your applications with the working environment while lowering system resource demands.|http://www.kde.org/|{{grp|kdebase}}}}<br />
<br />
* {{App|[[LXDE]]|The "Lightweight X11 Desktop Environment" is a fast and energy-saving desktop environment. Maintained by an international community of developers, it comes with a beautiful interface, multi-language support, standard keyboard short cuts and additional features like tabbed file browsing. Fundamentally designed to be lightweight, LXDE uses less CPU and RAM than other environments. It is especially beneficial for cloud computers with low hardware specifications, such as netbooks, mobile devices (e.g. MIDs) or older computers.|http://lxde.org/|{{grp|lxde}}}}<br />
<br />
* {{App|[[MATE]]|MATE is a fork of GNOME 2. Mate provides an intuitive and attractive desktop to Linux users using traditional metaphors.|http://www.mate-desktop.org/|{{grp|mate}}}}<br />
<br />
* {{App|[[Xfce]]|Xfce embodies the traditional UNIX philosophy of modularity and re-usability. It consists of a number of components that provide the full functionality one can expect of a modern desktop environment, while remaining relatively light. They are packaged separately and you can pick among the available packages to create the optimal personal working environment.|http://www.xfce.org/|{{grp|xfce4}}}}<br />
<br />
==== Unofficially supported ====<br />
* {{App|Deepin|Deepin desktop interface and apps feature an intuitive and elegant design. Moving around, sharing and searching etc. has become simply a joyful experience. |http://www.linuxdeepin.com/|{{AUR|deepin-desktop-environment}}}} <br />
<br />
* {{App|[[Equinox Desktop Environment|EDE]]|The "Equinox Desktop Environment" is a DE designed to be simple, extremely light-weight and fast.|http://equinox-project.org/|{{AUR|ede}}}}<br />
<br />
* {{App|[[GNOME Flashback]]| GNOME Flashback is a shell for GNOME 3 which was initially called GNOME fallback mode. The desktop layout and the underlying technology is similar to GNOME 2.|https://wiki.gnome.org/GnomeFlashback|{{AUR|gnome-panel}}}}<br />
<br />
* {{App|GNUstep|GNUstep is a free, object-oriented, cross-platform development environment that strives for simplicity and elegance.|http://gnustep.org/|{{Pkg|windowmaker}} {{AUR|gworkspace}}}}<br />
<br />
* {{App|[[Hawaii]]|Hawaii is a lightweight, coherent and fast desktop environment that relies on Qt 5, QtQuick and Wayland and is designed to offer the best UX for the device where it is running.|http://www.maui-project.org/|{{AUR|hawaii-meta-git}}}}<br />
<br />
* {{App|[[LXQt]]|LXQt is the Qt port and the upcoming version of LXDE, the Lightweight Desktop Environment. It is the product of the merge between the LXDE-Qt and the Razor-qt projects: A lightweight, modular, blazing-fast and user-friendly desktop environment.|http://lxqt.org/|{{AUR|lxqt-desktop-git}}}}<br />
<br />
* {{App|[[Pantheon]]|Pantheon is the default desktop environment originally created for the elementary OS distribution. It is written from scratch using Vala and the GTK3 toolkit. With regards to usability and appearance, the desktop has some similarities with GNOME Shell and Mac OS X.|http://elementaryos.org/|{{AUR|pantheon-session-bzr}}}}<br />
<br />
* {{App|[[ROX]]|ROX is a fast, user friendly desktop which makes extensive use of drag-and-drop. The interface revolves around the file manager, following the traditional UNIX view that 'everything is a file' rather than trying to hide the filesystem beneath start menus, wizards, or druids. The aim is to make a system that is well designed and clearly presented. The ROX style favors using several small programs together instead of creating all-in-one mega-applications.|http://rox.sourceforge.net/desktop/|{{Pkg|rox}}}}<br />
<br />
* {{App|[[Sugar]]|The Sugar Learning Platform is a computer environment composed of Activities designed to help children from 5 to 12 years of age learn together through rich-media expression. Sugar is the core component of a worldwide effort to provide every child with the opportunity for a quality education — it is currently used by nearly one-million children worldwide speaking 25 languages in over 40 countries. Sugar provides the means to help people lead fulfilling lives through access to a quality education that is currently missed by so many.|http://wiki.sugarlabs.org/|{{AUR|sugar}}}}<br />
<br />
* {{App|[[Trinity]]|The Trinity Desktop Environment (TDE) project is a computer desktop environment for Unix-like operating systems with a primary goal of retaining the overall KDE 3.5 computing style.|http://www.trinitydesktop.org/|See [[Trinity]]}}<br />
<br />
* {{App|[[Unity]]|Unity is a shell for GNOME designed by Canonical for Ubuntu.|http://unity.ubuntu.com/|{{AUR|unity}}}}<br />
<br />
=== Comparison of desktop environments ===<br />
''This section attempts to draw a comparison between popular desktop environments. Note that first-hand experience is the only effective way to truly evaluate whether a desktop environment best suits your needs.''<br />
<br />
{{Wikipedia|Comparison of X Window System desktop environments}}<br />
<br />
{| class="wikitable"<br />
|+ Overview of desktop environments <!-- PLEASE DO NOT OVER-CLUTTER THIS TABLE! --><br />
! Desktop environment !! Widget toolkit !! Window manager !! Taskbar !! Terminal emulator !! File manager !! Calculator !! Text editor !! Image viewer !! Media player !! Web browser !! Display manager<br />
|-<br />
| [[Cinnamon]] || [[GTK+]] 3<br>{{pkg|gtk3}} || Muffin<br>{{pkg|muffin}} || Cinnamon<br>{{pkg|cinnamon}} || [[Wikipedia:GNOME Terminal|GNOME&nbsp;Terminal]]<br>{{pkg|gnome-terminal}} || [[Nemo]]<br>{{pkg|nemo}} || [[Wikipedia:GCalctool|Calculator]]<br>{{pkg|gnome-calculator}} || [[gedit]]<br>{{pkg|gedit}} || [[Wikipedia:Eye of GNOME|Eye&nbsp;of&nbsp;GNOME]]<br>{{pkg|eog}} || [[Wikipedia:Totem (software)|Totem]]<br>{{pkg|totem}} || [[Firefox]]<br>{{pkg|firefox}} || [[LightDM]] GTK+ Greeter<br>{{pkg|lightdm-gtk3-greeter}}<br />
|-<br />
| Deepin || [[GTK+]] 2/3<br>{{pkg|gtk2}} {{pkg|gtk3}} || [[Compiz]]<br>{{AUR|compiz-core-devel}} || Dock<br>{{AUR|deepin-desktop-environment}} || Deepin Terminal<br>{{AUR|deepin-terminal}} || [[Nautilus]]<br>{{pkg|nautilus}} || [[Wikipedia:GCalctool|Calculator]]<br>{{pkg|gnome-calculator}} || [[gedit]]<br>{{pkg|gedit}} || [[Wikipedia:Eye of GNOME|Eye of GNOME]]<br>{{pkg|eog}} || DPlayer<br>{{AUR|deepin-media-player}} || [[Firefox]]<br>{{pkg|firefox}} || [[LightDM]] Deepin Greeter<br>{{AUR|deepin-desktop-environment}}<br />
|-<br />
| [[Equinox Desktop Environment|EDE]] || [http://www.fltk.org/ FLTK]<br>{{pkg|fltk}} || [[PekWM]]<br>{{AUR|ede}} || EDE Panel<br>{{AUR|ede}} || [[Xterm|XTerm]]<br>{{Pkg|xterm}} || Fluff<br>{{AUR|fluff}} || Calculator<br>{{AUR|ede}} || Editor<br>{{AUR|fltk-editor}} || Image Viewer<br>{{AUR|ede}} || flmusic<br>{{AUR|flmusic}} || [[Dillo]]<br>{{Pkg|dillo}} || [[XDM]]<br>{{Pkg|xorg-xdm}}<br />
|-<br />
| [[Enlightenment]] || [https://phab.enlightenment.org/w/elementary/ Elementary]<br>{{pkg|elementary}} || Enlightenment<br>{{pkg|enlightenment}} || Enlightenment<br>{{pkg|enlightenment}} || [http://www.enlightenment.org/p.php?p=about/terminology Terminology]<br>{{pkg|terminology}} || [https://trac.enlightenment.org/e/wiki/EFM EFM]<br>{{pkg|enlightenment}} || Equate<br>{{AUR|equate-git}} || Ecrire<br>{{AUR|ecrire-git}} || [https://trac.enlightenment.org/e/wiki/Ephoto Ephoto]<br>{{AUR|ephoto-git}} || Rage<br>{{AUR|rage-git}} || [https://trac.enlightenment.org/e/wiki/Eve Eve]<br>{{AUR?|eve-git}} || [[XDM]]<br>{{Pkg|xorg-xdm}}<br />
|-<br />
| [[GNOME]] || [[GTK+]] 3<br>{{pkg|gtk3}} || [[Wikipedia:Mutter (window manager)|Mutter]]<br>{{pkg|mutter}} || [[Wikipedia:GNOME Shell|GNOME Shell]]<br>{{pkg|gnome-shell}} || [[Wikipedia:GNOME Terminal|GNOME Terminal]]<br>{{pkg|gnome-terminal}} || [[Nautilus]]<br>{{pkg|nautilus}} || [[Wikipedia:GCalctool|Calculator]]<br>{{pkg|gnome-calculator}} || [[gedit]]<br>{{pkg|gedit}} || [[Wikipedia:Eye of GNOME|Eye of GNOME]]<br>{{pkg|eog}} || [[Wikipedia:Totem (software)|Totem]]<br>{{pkg|totem}} || [[Epiphany]]<br>{{pkg|epiphany}} || [[GDM]]<br>{{pkg|gdm}}<br />
|-<br />
| [[GNOME Flashback]] || [[GTK+]] 2/3<br>{{pkg|gtk2}} {{pkg|gtk3}} || [[Wikipedia:Metacity|Metacity]]<br>{{pkg|metacity}} || [[Wikipedia:GNOME Panel|GNOME Panel]]<br>{{AUR|gnome-panel}} || [[Wikipedia:GNOME Terminal|GNOME Terminal]]<br>{{pkg|gnome-terminal}} || [[Nautilus]]<br>{{pkg|nautilus}} || [[Wikipedia:GCalctool|Calculator]]<br>{{pkg|gnome-calculator}} || [[gedit]]<br>{{pkg|gedit}} || [[Wikipedia:Eye of GNOME|Eye of GNOME]]<br>{{pkg|eog}} || [[Wikipedia:Totem (software)|Totem]]<br>{{pkg|totem}} || [[Epiphany]]<br>{{pkg|epiphany}} || [[GDM]]<br>{{pkg|gdm}}<br />
|-<br />
| GNUstep || [http://gnustep.org/ GNUstep]<br>{{Grp|gnustep-core}} || [[Window Maker]]<br>{{pkg|windowmaker}} || [[Window Maker]]<br>{{pkg|windowmaker}} || [http://gap.nongnu.org/terminal/index.html Terminal]<br>{{AUR|gnustep-terminal}} || [http://www.gnustep.org/experience/GWorkspace.html GWorkspace]<br>{{AUR|gworkspace}} || [http://www.gnustep.org/experience/examples.html Calculator]<br>{{AUR|gnustep-examples}} || [http://www.gnustep.org/experience/examples.html Ink]<br>{{AUR|gnustep-examples}} || [http://gap.nongnu.org/laternamagica/index.html LaternaMagica]<br>{{AUR|laternamagica}} || [http://gap.nongnu.org/cynthiune/index.html Cynthiune]<br>{{AUR|cynthiune}} || [http://wiki.gnustep.org/index.php/SimpleWebKit SWK Browser]<br>{{AUR|swkbrowser-svn}} || [[XDM]]<br>{{Pkg|xorg-xdm}}<br />
|-<br />
| [[Hawaii]] || [[Qt]] 5<br>{{Grp|qt5}} || Weston<br>{{pkg|weston}} || Hawaii Shell<br>{{AUR|hawaii-shell-git}} || Terminal<br>{{AUR|hawaii-terminal-git}} || Swordfish<br>{{AUR|swordfish-git}} || Calculator<br>{{AUR?|qt5-calculator}} || TEA<br>{{AUR?|tea-qt5}} || EyeSight<br>{{AUR|eyesight-git}} || Cinema<br>{{AUR?|cinema-git}} || QupZilla<br>{{Pkg|qupzilla}} || SDDM<br>{{AUR|sddm-qt5}}<br />
|-<br />
| [[KDE]] || [[Qt]] 4<br>{{pkg|qt4}} || [[Wikipedia:KWin|KWin]]<br>{{pkg|kdebase-workspace}} || [[Wikipedia:KDE Plasma Workspaces#Desktop|Plasma&nbsp;Desktop]]<br>{{pkg|kdebase-workspace}} || [http://konsole.kde.org/ Konsole]<br>{{pkg|kdebase-konsole}} || [http://dolphin.kde.org/ Dolphin]<br>{{pkg|kdebase-dolphin}} || [http://www.kde.org/applications/utilities/kcalc/ KCalc]<br>{{pkg|kdeutils-kcalc}} || [http://kate-editor.org/ KWrite/Kate]<br>{{pkg|kdebase-kwrite}} {{pkg|kdesdk-kate}} || [http://gwenview.sourceforge.net/ Gwenview]<br>{{pkg|kdegraphics-gwenview}} || [http://www.kde.org/applications/multimedia/dragonplayer/ Dragon&nbsp;Player]<br>{{pkg|kdemultimedia-dragonplayer}} || [http://www.konqueror.org/ Konqueror]<br>{{pkg|kdebase-konqueror}} || [[KDM]]<br>{{pkg|kdebase-workspace}}<br />
|-<br />
| [[LXDE]] || [[GTK+]] 2<br>{{pkg|gtk2}} || [[Openbox]]<br>{{pkg|openbox}} || [http://wiki.lxde.org/en/LXPanel LXPanel]<br>{{pkg|lxpanel}} || [http://wiki.lxde.org/en/LXTerminal LXTerminal]<br>{{pkg|lxterminal}} || [[PCManFM]]<br>{{pkg|pcmanfm}} || [http://galculator.sourceforge.net/ Galculator]<br>{{Pkg|galculator-gtk2}} || [http://tarot.freeshell.org/leafpad/ Leafpad]<br>{{pkg|leafpad}} || [http://wiki.lxde.org/en/GPicView GPicView]<br>{{pkg|gpicview}} || [http://wiki.lxde.org/en/LXMusic LXMusic]<br>{{pkg|lxmusic}} || [[Firefox]]<br>{{pkg|firefox}} || [[LXDM]]<br>{{pkg|lxdm}}<br />
|-<br />
| [[LXQt]] || [[Qt]] 4 <br>{{pkg|qt4}}|| [[Openbox]]<br>{{pkg|openbox}} || LXQt Panel<br>{{AUR|lxqt-panel-git}} || QTerminal<br>{{AUR|qterminal-git}} || PCManFM-Qt<br>{{AUR|pcmanfm-qt-git}} || [http://speedcrunch.org/ SpeedCrunch]<br>{{AUR|speedcrunch}} || JuffEd<br>{{AUR|juffed}} || LxImage-Qt<br>{{AUR|lximage-qt-git}} || Qmmp<br>{{Pkg|qmmp}} || QupZilla<br>{{Pkg|qupzilla-qt4}} || [[LightDM]]&nbsp;LXQt&nbsp;Greeter<br>{{AUR|lxqt-lightdm-greeter-git}}<br />
|-<br />
| [[MATE]] || [[GTK+]] 2<br>{{pkg|gtk2}} || Marco<br>{{pkg|marco}} || MATE Panel<br>{{pkg|mate-panel}} || MATE Terminal<br>{{pkg|mate-terminal}} || Caja<br>{{pkg|caja}} || [http://galculator.sourceforge.net/ Galculator]<br>{{Pkg|galculator-gtk2}} || pluma<br>{{pkg|pluma}} || Eye of MATE<br>{{pkg|eom}} || Whaaw!<br>{{pkg|whaawmp}} || [[Midori]]<br>{{pkg|midori}} || [[LightDM]] GTK+ Greeter<br>{{pkg|lightdm-gtk2-greeter}}<br />
|-<br />
| [[Pantheon]] || [[GTK+]] 3<br>{{pkg|gtk3}} || [https://launchpad.net/gala Gala]<br>{{AUR|gala-bzr}} || [https://launchpad.net/plank Plank]/[https://launchpad.net/wingpanel Wingpanel]<br>{{Pkg|plank}} {{AUR|wingpanel}} || [https://launchpad.net/pantheon-terminal Pantheon&nbsp;Terminal]<br>{{Pkg|pantheon-terminal}} || [https://launchpad.net/pantheon-files Pantheon Files]<br>{{AUR|pantheon-files}} || [[Wikipedia:GCalctool|Calculator]]<br>{{pkg|gnome-calculator}} || [https://launchpad.net/scratch Scratch]<br>{{AUR|scratch-text-editor}} || [[Wikipedia:Shotwell (software)|Shotwell]]<br>{{pkg|shotwell}} || [[Wikipedia:Totem (software)|Totem]]<br>{{pkg|totem}} || [[Midori]]<br>{{pkg|midori-gtk3}} || [[LightDM]] Pantheon&nbsp;Greeter<br>{{AUR|lightdm-pantheon-greeter}}<br />
|-<br />
| [[ROX]] || [[GTK+]] 2<br>{{pkg|gtk2}} || [http://rox.sourceforge.net/desktop/OroboROX.html OroboROX]<br>{{AUR|oroborox}} || [http://rox.sourceforge.net/desktop/ROX-Filer.html ROX-Filer]<br>{{pkg|rox}} || [http://roxterm.sourceforge.net/ ROXTerm]<br>{{AUR|roxterm-gtk2}} || [http://rox.sourceforge.net/desktop/ROX-Filer.html ROX-Filer]<br>{{pkg|rox}} || [http://galculator.sourceforge.net/ Galculator]<br>{{Pkg|galculator-gtk2}} || [http://rox.sourceforge.net/desktop/Edit.html Edit]<br>{{AUR|rox-edit}} || [http://rox.sourceforge.net/desktop/picky.html Picky]<br>{{AUR?|picky}} || [http://rox.sourceforge.net/desktop/Software/Audio_Video/MusicBox.html MusicBox]<br>{{AUR?|musicbox}} || [[Midori]]<br>{{pkg|midori}} || [[LightDM]] GTK+ Greeter<br>{{pkg|lightdm-gtk2-greeter}}<br />
|-<br />
| [[Sugar]] || [[GTK+]] 2/3<br>{{pkg|gtk2}} {{pkg|gtk3}} || [[Wikipedia:Metacity|Metacity]]<br>{{pkg|metacity}} || Sugar<br>{{AUR|sugar}} || Terminal<br>{{AUR|sugar-activity-terminal}} || Sugar Journal<br>{{AUR|sugar}} || Calculate<br>{{AUR|sugar-activity-calculate}} || Write<br>{{AUR|sugar-activity-write}} || ImageViewer<br>{{AUR|sugar-activity-imageviewer}} || Jukebox<br>{{AUR|sugar-activity-jukebox}} || Browse<br>{{AUR|sugar-activity-browse}} || [[LightDM]] GTK+ Greeter<br>{{pkg|lightdm-gtk3-greeter}}<br />
|-<br />
| [[Trinity]] || [[Qt]] 3 || TWin || Kicker || Konsole || Konqueror || KCalc || Kwrite / Kate || Kuickshow || Kaffeine || Konqueror || TDM<br />
|-<br />
| [[Unity]] || [[GTK+]] 2/3<br>{{pkg|gtk2}} {{pkg|gtk3}} || [[Compiz]]<br>{{AUR|compiz-ubuntu}} || Unity<br>{{AUR|unity}} || [[Wikipedia:GNOME Terminal|GNOME&nbsp;Terminal]]<br>{{pkg|gnome-terminal}} || [[Nautilus]]<br>{{AUR|nautilus-ubuntu}} || [[Wikipedia:GCalctool|Calculator]]<br>{{pkg|gnome-calculator}} || [[gedit]]<br>{{pkg|gedit}} || [[Wikipedia:Eye of GNOME|Eye&nbsp;of&nbsp;GNOME]]<br>{{pkg|eog}} || [[Wikipedia:Totem (software)|Totem]]<br>{{pkg|totem}} || [[Firefox]]<br>{{pkg|firefox}}|| [[LightDM]] Unity Greeter<br>{{AUR|lightdm-unity-greeter}}<br />
|-<br />
| [[Xfce]] || [[GTK+]] 2<br>{{pkg|gtk2}} || [http://docs.xfce.org/xfce/xfwm4/start Xfwm4]<br>{{pkg|xfwm4}} || [http://docs.xfce.org/xfce/xfce4-panel/start Xfce Panel]<br>{{pkg|xfce4-panel}} || [http://www.xfce.org/projects/terminal Terminal]<br>{{pkg|xfce4-terminal}} || [[Thunar]]<br>{{pkg|thunar}} || [http://galculator.sourceforge.net/ Galculator]<br>{{Pkg|galculator-gtk2}} || Mousepad<br>{{pkg|mousepad}} || [http://goodies.xfce.org/projects/applications/ristretto Ristretto]<br>{{pkg|ristretto}} || [http://goodies.xfce.org/projects/applications/parole Parole]<br>{{pkg|parole}} || [[Midori]]<br>{{pkg|midori}} || [[LightDM]] GTK+ Greeter<br>{{pkg|lightdm-gtk2-greeter}}<br />
|-<br />
|}<br />
<br />
==== Resource use ====<br />
In terms of system resources, GNOME and KDE are ''expensive'' desktop environments. Not only do complete installations consume more disk space than lightweight alternatives (Enlightenment, LXDE, LXQt and Xfce) but also more CPU and memory resources while in use. This is because GNOME and KDE are relatively ''full-featured'': they provide the most complete and well-integrated environments.<br />
<br />
Enlightenment, LXDE, LXQt and Xfce, on the other hand, are ''lightweight'' desktop environments. They are designed to work well on older or lower-power hardware and generally consume fewer system resources while in use. This is achieved by cutting back on ''extra'' features (which some would term ''bloat'').<br />
<br />
==== Environment familiarity ====<br />
Many users describe KDE as more ''Windows-like'' and GNOME as more ''Mac-like''. This is a very subjective comparison, since either desktop environment can be customized to emulate the Windows or Mac operating systems. See [http://www.psychocats.net/ubuntucat/is-kde-more-windows-like-than-gnome/ Is KDE 'more Windows-like' than GNOME?] and [http://www.jeffwu.net/?p=71 KDE vs GNOME] for more information. ([http://linux.oneandoneis2.org/LNW.htm Linux is Not Windows] is also an excellent resource.)<br />
<br />
== Custom environments ==<br />
Desktop environments represent the simplest means of installing a ''complete'' graphical environment. However, users are free to build and customize their graphical environment in any number of ways should none of the popular desktop environments meet their requirements. Generally, building a custom environment involves selection of a suitable [[window manager]], a [[List of applications#Taskbars / panels / docks|taskbar]] and a number of applications (a minimalist selection usually includes a [[List of applications#Terminal emulators|terminal emulator]], [[List of applications#File managers|file manager]], and [[List of applications#Text editors|text editor]]).<br />
<br />
Other applications that are usually provided by desktop environments are:<br />
<br />
* Application launcher: [[List of applications#Application launchers]]<br />
* Clipboard manager: [[Clipboard#List of clipboard managers]]<br />
* Desktop compositor: [[Xorg#Composite]]<br />
* Desktop wallpaper setter: [[List of applications#Wallpaper setters]]<br />
* Display manager: [[Display manager#List of display managers]]<br />
* Display power saving settings: [[Display Power Management Signaling]]<br />
* Logout dialogue: [[List of applications#Logout dialogue]]<br />
* Notification daemon: [[Desktop notifications]]<br />
* Polkit authentication agent: [[Polkit#Authentication agents]]<br />
* Screen locker: [[List of applications#Screen lockers]]<br />
* Volume notification daemon: [[List of applications#Volume notification]]</div>Dustball