https://wiki.archlinux.org/api.php?action=feedcontributions&user=Dbbolton&feedformat=atomArchWiki - User contributions [en]2024-03-29T13:00:40ZUser contributionsMediaWiki 1.41.0https://wiki.archlinux.org/index.php?title=Broadcom_wireless&diff=310341Broadcom wireless2014-04-13T18:42:42Z<p>Dbbolton: /* b43/b43legacy - add LP-PHY notes */</p>
<hr />
<div>[[zh-CN:Broadcom wireless]]<br />
[[Category:Wireless Networking]]<br />
== Introduction ==<br />
<br />
Broadcom has been notorious in its support for its Wi-Fi cards on GNU/Linux. Until recently, most Broadcom chips were either entirely unsupported or required the user to tinker with firmware. A limited set of wireless chips were supported by various reverse-engineered drivers ({{ic|brcm4xxx}}, {{ic|b43}}, etc.). The reverse-engineered [http://wireless.kernel.org/en/users/Drivers/b43 {{ic|b43}}] drivers have been in the kernel since 2.6.24.<br />
<br />
In August 2008, Broadcom released the [http://www.broadcom.com/support/802.11/linux_sta.php 802.11 Linux STA driver] officially supporting Broadcom wireless hardware on GNU/Linux. These are restrictively licensed drivers, but Broadcom promised to work towards a more open approach in the future. Further, they do not work with hidden ESSIDs.<br />
<br />
In September 2010, Broadcom [http://thread.gmane.org/gmane.linux.kernel.wireless.general/55418 finally released] fully open source drivers for its hardware. This driver, [http://wireless.kernel.org/en/users/Drivers/brcm80211 {{ic|brcm80211}}], has been included into the kernel since 2.6.37. With the release of 2.6.39, these drivers have been renamed to {{ic|brcmsmac}} and {{ic|brcmfmac}}.<br />
<br />
At the time of writing, there are three choices for users with Broadcom Wi-Fi chipsets:<br />
<br />
{| class="wikitable"<br />
! Driver !! Description<br />
|-<br />
|brcmsmac/brcmfmac || Open-source kernel driver<br />
|-<br />
|b43 || Reverse-engineered kernel driver<br />
|-<br />
|broadcom-wl || Proprietary Broadcom STA driver<br />
|}<br />
<br />
== Determine which driver you need/can use ==<br />
<br />
First, determine your card's [[Wikipedia:PCI_configuration_space|PCI-ID]]. Type the following (case-sensitive) command into a console:<br />
$ lspci -vnn | grep 14e4:<br />
<br />
Then check your card against this [http://linuxwireless.org/en/users/Drivers/b43#Supported_devices list of supported b43 devices] and this [http://linuxwireless.org/en/users/Drivers/brcm80211#Supported_Chips list of supported brcm80211 devices].<br />
<br />
== Getting the driver ==<br />
<br />
=== brcmsmac/brcmfmac ===<br />
The {{ic|brcm80211}} drivers are included in the kernel. They are named {{ic|brcmsmac}} for PCI cards and {{ic|brcmfmac}} for SDIO devices.<br />
<br />
These drivers should be automatically loaded during start-up and no further action should be required of the user. If the driver does not load automatically, simply [[Kernel modules#Loading|load]] it manually.<br />
<br />
{{Note|1=Since {{pkg|linux}}>=3.3.1, the {{ic|brcmsmac}} driver depends on the {{ic|bcma}} module; therefore, make sure the {{ic|bcma}} module is not [[Kernel_modules#Blacklisting|blacklisted]].}}<br />
<br />
{{Note|[http://wireless.kernel.org/en/users/Drivers/brcm80211 wireless.kernel.org] states that brcm80211 does not support older PCI/PCI-E chips with SSB backplane.}}<br />
<br />
=== b43/b43legacy ===<br />
The drivers are included in the kernel since 2.6.24.<br />
<br />
==== Loading the b43/b43legacy kernel module ====<br />
Verify which module you need by looking up your device [http://wireless.kernel.org/en/users/Drivers/b43#Known_PCI_devices here]. You can also check by computer model [http://linuxwireless.org/en/users/Drivers/b43/devices here]. Blacklist the other module (either {{ic|b43}} or {{ic|b43legacy}}) to prevent possible problems/confusion. For instructions, see [[Kernel_modules#Blacklisting]].<br />
<br />
Install the appropriate {{AUR|b43-firmware}} or {{AUR|b43-firmware-legacy}} package from the [[AUR]].<br />
<br />
If you have a low-power version of a b43-supported device, you will need to install special firmware. A quick way to check whether you have a low-power chip is by running {{ic|<nowiki>lspci | grep Broadcom | grep LP-PHY</nowiki>}}. You can install it by downloading [http://downloads.openwrt.org/sources/broadcom-wl-4.178.10.4.tar.bz2 the appropriate package] and using {{ic|b43-fwcutter}} as outlined below, or by using [https://github.com/dbb/scripts/blob/master/b43-lp-installer this installation script].<br />
<br />
To install the LP-PHY firmware, perform the following:<br />
{{bc|<nowiki>curl -LO http://downloads.openwrt.org/sources/broadcom-wl-4.178.10.4.tar.bz2<br />
tar xjf broadcom-wl-4.178.10.4.tar.bz2<br />
cd broadcom-wl-4.178.10.4/linux<br />
b43-fwcutter -w /lib/firmware wl_apsta.o</nowiki>}}<br />
<br />
After installing the firwmare, you can now configure your device.<br />
<br />
{{Note|1=If the b43 module appears to be loaded and functional but the device is inaccessible, you may need to [[Kernel_modules#Blacklisting|blacklist]] the {{ic|bcma}} module. See [[Broadcom_wireless#Wi-Fi_card_does_not_work_or_show_up_after_kernel_upgrade_.28brcmsmac.29|Section 4.1]]. If that does not help, you might have to recompile the kernel with the {{ic|CONFIG_B43_BCMA_EXTRA}} option set to use b43. This option was introduced to avoid race conditions between the modules and is at least needed for cards with the BCM4322, BCM43224 and BCM43225 chipsets.}}<br />
<br />
=== broadcom-wl ===<br />
{{Warning|Even though this driver has matured a lot throughout the years and works quite well now, its usage is recommended only when neither of the two open-source drivers support your device. Please refer to project [http://linuxwireless.org/en/users/Drivers/b43/#Supported_devices b43's] page for list of supported devices.}}<br />
For users of the {{ic|broadcom-wl}} driver, there is a PKGBUILD available in the [[Arch User Repository|AUR]] named {{AUR|broadcom-wl}}. There is also a newer version available (supporting more recent cards), see {{AUR|broadcom-wl-dkms}}.<br />
<br />
==== Loading the wl kernel module ====<br />
The {{ic|wl}} module may need to be manually loaded if there are other usable modules present. Before loading the {{ic|wl}} module, remove the {{ic|b43}} or other module that may have been automatically loaded instead:<br />
# rmmod b43<br />
<br />
Also unload {{ic|ssb}}, if loaded:<br />
# rmmod ssb<br />
<br />
{{Note|Failure to unload {{ic|ssb}} may result in the wireless interface not being created.}}<br />
<br />
Load the {{ic|wl}} module<br />
# modprobe wl<br />
<br />
The {{ic|wl}} module should automatically load {{ic|lib80211}} or {{ic|lib80211_crypt_tkip}}. Check with {{ic|lsmod}} to see if this is the case. If not, you may need to add one of those two modules as well.<br />
# modprobe lib80211<br />
<br />
or<br />
# modprobe lib80211_crypt_tkip<br />
<br />
If you installed the driver directly from Broadcom, you may also need to update the dependencies:<br />
# depmod -a<br />
<br />
To make the module load at boot, refer to [[Kernel modules]].<br />
<br />
You can also blacklist other modules (to prevent them from interfering) in {{ic|/etc/modprobe.d/modprobe.conf}}. To blacklist a module, refer to [[Kernel modules#Blacklisting]].<br />
<br />
{{Note|Broadcom Corporation BCM4311 802.11b/g WLAN [14e4:4311] does not work with blacklisting {{ic|b43}} and {{ic|ssb}}.}}<br />
<br />
== Troubleshooting ==<br />
=== Wi-Fi card does not seem to even exist ===<br />
<br />
{{Expansion|no solution provided}}<br />
<br />
Some users with newer cards like the Broadcom BCM43241 will experience an issue where lspci or lsusb will not show any trace of the card. A solution to this will be posted when found.<br />
<br />
=== Wi-Fi card does not work or show up after kernel upgrade (brcmsmac) ===<br />
<br />
This is caused by the kernel using the {{ic|bcma}} module instead of the {{ic|brcmsmac}} module. The solution is to blacklist the {{ic|bcma}} module. For instructions, see [[Kernel_modules#Blacklisting]].<br />
{{Note|This affects only Linux kernels 3.0, 3.1, and 3.2. Since kernel 3.3, the {{ic|brcmsmac}} module actually uses {{ic|bcma}}, so {{ic|bcma}} needs to be unblacklisted or the Wi-Fi interface will not appear.}}<br />
<br />
=== Wi-Fi card does not work/show up (broadcom-wl) ===<br />
Check if you are loading the correct modules. You may need to blacklist the {{ic|brcm80211}}, {{ic|b43}}, and {{ic|ssb}} kernel modules to prevent them from loading automatically. For instructions, see [[Kernel_modules#Blacklisting]].<br />
<br />
{{Note|You may not have to blacklist the {{ic|brcm80211}} driver; although as of 2011-06-20, it will still default to loading the {{ic|brcm80211}} module before the {{ic|wl}} driver, which prevents {{ic|wl}} from being used.}}<br />
<br />
Check if you updated your module dependencies:<br />
# depmod -a<br />
<br />
* Verify that your wireless interface(s) appear using {{ic|ip addr}}.<br />
* You may need to restart your machine to see the device appear in {{ic|iwconfig}} or {{ic|ip addr}}.<br />
* If you have recently upgraded your kernel, you need to rebuild the {{ic|broadcom-wl}} package with the new kernel installed to update the module.<br />
<br />
=== Interfaces swapped (broadcom-wl) ===<br />
Users of the {{ic|broadcom-wl}} driver may find their Ethernet and Wi-Fi interfaces have been swapped. See [[Network configuration#Device_names]] for solution.<br />
<br />
=== The b43 driver and Linux 3.8+ ===<br />
The b43 driver has some major issues starting with the release of Linux 3.8+, namely that you are unable to see / connect to some access points.<br />
<br />
Solution: Try the latest broadcom-wl driver (version 6+), see above.<br />
<br />
=== Suppressing console messages ===<br />
<br />
You may continuously get some verbose and annoying messages during the boot, similar to<br />
<br />
phy0: brcms_ops_bss_info_changed: arp filtering: enabled true, count 0 (implement)<br />
phy0: brcms_ops_bss_info_changed: qos enabled: false (implement)<br />
phy0: brcms_ops_bss_info_changed: arp filtering: enabled true, count 1 (implement)<br />
enabled, active<br />
<br />
These do not seem to be suppressible via normal means, such as setting {{ic|MaxLevelConsole}} in {{ic|/etc/systemd/journald.conf}}. To hide them, you must lower the level at which {{ic|dmesg}} messages are printed to the console. This can be done on start-up by creating a simple [[systemd]] service.<br />
<br />
Create a file in {{ic|/etc/systemd/system/}} called {{ic|brcms_suppression.service}} or something similar:<br />
{{hc|brcms_suppression.service|<br />
<nowiki><br />
[Unit]<br />
Description=Broadcom console message suppression script<br />
<br />
[Service]<br />
Type=oneshot<br />
RemainAfterExit=yes<br />
ExecStart=/bin/sh -c 'dmesg -n 3'<br />
<br />
[Install]<br />
WantedBy=multi-user.target<br />
</nowiki><br />
}}<br />
<br />
Like all other systemd services, you can then enable it with<br />
# systemctl enable brcms_suppression<br />
<br />
=== Miscellaneous user notes ===<br />
{{Poor writing|This section must be rewritten impersonally, very likely as a FAQ or Troubleshooting section (also remove or update out-of-date information). See also [[Help:Style]].|section=Allowing user signatures on main article pages in limited situations?}}<br />
<br />
* In my Dell Inspiron Laptop, I have a Broadcom BCM4401 Ethernet card and a Broadcom BCM4328 wireless card. If I just remove {{ic|b43}}, I can load the {{ic|wl}} driver, but no wireless card shows up. However, if I first remove the {{ic|b44}} (and {{ic|ssb}}) driver for my Ethernet card, and ''then'' load the {{ic|wl}} driver, I get a wireless device using the name ''eth0''. Afterwards, I can load {{ic|b44}} again, to have an Ethernet ''eth1'' device.<br />
<br />
* I could not get the BCM4313 chip on a Lenovo B560 to work before following these steps:<br />
*# "Load defaults" in the BIOS. After that, the wireless was working under MS Windows. There are not many options in there, so I do not know what the reset may have changed, but it did the trick.<br />
*# Blacklist the {{ic|acer_wmi}} module. For testing, you can add the following to the kernel line in GRUB: {{ic|1=acer_wmi.disable=1}}<br />
<br />
* I have found that to get the {{ic|wl}} drivers working for the Broadcom 4313 chip, you need to blacklist {{ic|brcm80211}} along with {{ic|b43}} and {{ic|ssb}}.<br />
:--[[User:Admiralspark|Admiralspark]], 20 June 2011<br />
<br />
* If you notice slow wireless speeds when your laptop/netbook is not connected to AC power, you may need to disable Wi-Fi power management by adding the following line (assuming ''wlan0'' is your wireless device) {{ic|iwconfig wlan0 power off}} to {{ic|/etc/rc.local}} and create an empty file {{ic|/etc/pm/power.d/wireless}}. In case you also experience interface swapping (discussed above), you might want to add another line for the second interface name as well. The command will have no effect on the wired interface.<br />
:--[[User:Tom.yan|Tom.yan]], 16 August 2011<br />
<br />
* In my case on a HP pavilion netbook DM1 with a BCM4313 chip, with the original kernel brcmsmac driver, the LED didn't work, the power was awful, and it kept loosing the signal all the time, unless very close to the Wi-Fi hotspot. The last Broadcom driver {{ic|wl}} solved everything. So in some cases, it's actually better than the kernel driver. However, I had to install it in the [[Mkinitcpio|initramfs image]], along with lib80211 and lib80211_crypt_tkip to avoid a recurring kernel panic. <br />
:--[[User:Ivanoff|Ivanoff]], 18 March 2012 *Edit* It's all solved with the latest kernel versions. --[[User:Ivanoff|Ivanoff]] ([[User talk:Ivanoff|talk]]) 14:19, 14 December 2013 (UTC)<br />
<br />
* On a similar HP DM1 netbook I found the brcmsmac driver did not work either. The kernel panic can also be solved by blacklisting the brcmsmac, b43 and wl drivers. In rc.local you can {{ic|modprobe wl}} without problems. On a sidenote: I get hard lockups, without any way to debug because there is nothing in kernel.log. Not sure if related to the wl driver though.<br />
:--[[User:Wilco|Wilco]], 5 May 2012<br />
<br />
* Likewise, my HP Pavilion g7-1374ca also had problems with stock kernel drivers. I downloaded Broadcom tarball, but it wouldn't compile in 3.4.3. I removed the #include <asm/system.h> line and commented out a line referencing .ndo_set_multicast_list (there's only one). Then I was able to compile and load the module for a 100% strength signal, no lockups so far.<br />
<br />
* On a Dell Inspiron N5110 with BCM4313, when the wireless was hardware-off, the system would always hang at boot with the kernel {{ic|brcmsmac}} driver. Using the {{ic|broadcom-wl}} driver the problem was solved.<br />
:--[[User:Nplatis|Nplatis]], 14 October 2012<br />
<br />
* On a Dell M4700 with BCM4313 got hideously slow "performance" with default driver -- switched to broadcom-wl and got near advertised link rate speed (65 to 72 Mb/sec)...until restarting, then was not able to associate with wireless access point. The solution was to [[Kernel modules#Blacklisting|blacklist]] the kernel modules {{ic|dell_wmi}} and {{ic|cfg80211}}.<br />
:--[[User:virtualeyes|virtualeyes]], 23 February 2013<br />
<br />
* On a Lenovo G580 mounting a BCM4313 the proprietary driver module kept crashing because some dependencies were unsatisfied (the same problem found by [[User:Ivanoff|Ivanoff]]). What worked for me was to put a file in /etc/modprobe.d/ with the following content:<br />
{{hc|/etc/modprobe.d/10_wl.conf|<br />
blacklist brcmsmac<br />
blacklist bcma<br />
softdep wl pre: lib80211_crypt_tkip lib80211_crypt_ccmp lib80211_crypt_wep<br />
}}<br />
:--[[User:zarel|zarel]], 21 June 2013</div>Dbboltonhttps://wiki.archlinux.org/index.php?title=Wmii&diff=310254Wmii2014-04-13T04:30:40Z<p>Dbbolton: Add source links and note about status</p>
<hr />
<div>{{DISPLAYTITLE:wmii}}<br />
[[Category:Dynamic WMs]]<br />
{{Related articles start}}<br />
{{Related|i3}}<br />
{{Related articles end}}<br />
[http://wmii.suckless.org/ wmii] (window manager improved 2) is a dynamic window manager for X11. It supports classic and dynamic window management with extended keyboard, mouse, and filesystem based remote control. It replaces the workspace paradigm with a new tagging approach. <br />
<br />
The following tips are intended to help the user get started with wmii. While wmii can be configured in almost any language, this article will focus on using the '''wmiirc''' configuration file, which is simply a shell script. Please see the [[ruby-wmii]] article to see how to configure wmii in ruby.<br />
<br />
Please note that wmii does not appear to be in active development, so any bugs encountered are likely to stay.<br />
<br />
==Installation==<br />
<br />
Install the package {{Pkg|wmii}} from the [[official repositories]] or alternatively install {{AUR|wmii-hg}} from the [[AUR]] for the latest development version.<br />
<br />
The source can be found on [https://code.google.com/p/wmii/ the project's Google Code page] and is also [https://github.com/sunaku/wmii mirrored on GitHub].<br />
<br />
Next you will need to edit your {{ic|~/.xinitrc}} to enable you to start wmii with {{ic|startx}}:<br />
<br />
{{hc|~/.xinitrc|<br />
exec wmii<br />
}}<br />
<br />
To allow for starting wmii without logging off or killing the X session, add the following in the {{ic|~/.xinitrc}}<br />
<br />
{{hc|~/.xinitrc|<br />
until wmii; do<br />
true<br />
done<br />
}}<br />
<br />
Upon your first login, you will be greeted with the wmii welcome message, which also includes a short tutorial on wmii. Completing this tutorial will give you a good idea on how wmii works.<br />
<br />
{{Note | If the welcome message does not show up, make sure you have {{ic|xmessage}} installed from {{Pkg|xorg-xmessage}} in the [[official repositories]]. Then you can read the welcome by pressing {{ic|$MODKEY-a}} and selecting 'welcome'.}}<br />
<br />
==Configuration==<br />
The easiest way to start configuring wmii, is to copy the default wmiirc file to your home directory and changing it to your needs. For version 3.9,<br />
mkdir ~/.wmii<br />
cp /etc/wmii/wmiirc ~/.wmii/<br />
<br />
Or just create ~/.wmii/wmiirc_local if you want only basic customization such as fonts, colors etc.<br />
<br />
For earlier versions,<br />
mkdir ~/.wmii/wmii-$VERSION<br />
cp /etc/wmii/wmiirc ~/.wmii/wmii-$VERSION/<br />
<br />
By editing this file, you can change things such as color, background, modkey, etc. Keep in mind that wmiirc uses tabbed indentation in case your editor of choice is configured to only produce spaces. Mixing the two indenting styles may cause unexpected behavior.<br />
===Configuration Variables===<br />
# Configuration Variables<br />
MODKEY=Mod1<br />
UP=k<br />
DOWN=j<br />
LEFT=h<br />
RIGHT=l<br />
Change Mod1 to Mod4 if you want to use Windows key instead of Alt. You can also change h, j, k, l, if you like.<br />
<br />
===Window Colors===<br />
# Colors tuples: "<text> <background> <border>"<br />
WMII_NORMCOLORS='#ffffff #000000 #ffffff'<br />
WMII_FOCUSCOLORS='#ffffff #5c0000 #ffffff'<br />
<br />
WMII_BACKGROUND='#333333'<br />
WMII_FONT='fixed'<br />
Colors of unselected window are in NORMCOLORS variable. Colors of selected window are in FOCUSCOLOR variable. You can change the background color (if you use transparent terminal) with the WMII_BACKGROUND variable.<br />
<br />
==Usage==<br />
<br />
If you are not familiar with tiling WMs, it's not really easy to begin with it. You must learn a few basic hotkeys to launch programs and place or resize windows. It is a good idea to write the basic hotkeys on paper and stick these on your monitor until you memorize them. By default, the "Mod" key is Alt. Some default hotkeys are :<br />
* Mod+Enter -> Terminal<br />
* Mod+p -> wimenu : a menu appears, just type the beginning of the name of the application <br />
to open it.<br />
* Mod+d -> default layout : windows are divided on screen<br />
* Mod+s -> stacked layout : the selected window take all the screen, we just see the title <br />
bar of the others.<br />
* Mod+j -> select the window below<br />
* Mod+k -> select the window above<br />
* Shift+Mod+j -> move the window down<br />
* Shift+Mod+k -> move the window up<br />
* Mod+a -> Actions menu : choose "quit" to quit<br />
<br />
N.B. For commonly used programs you can make use of ''history.progs'', Mod+p and up/down arrow keys to select previous entries.<br />
<br />
<br />
By default, only one column is used by the desktop (i.e. the entire screen). It's possible to use several columns with h and l :<br />
<br />
* Mod+Shift+h : move the selected window left<br />
* Mod+Shift+l : move the selected window right<br />
* Mod+h : select the column on the left<br />
* Mod+l : select the column on the right <br />
<br />
Columns are created automatically, with your placements of the windows. You can make them bigger or smaller, clicking beetween two columns.<br />
<br />
===Layouts===<br />
<br />
You begin in "default" layout : all windows take the same space. You can make them bigger or smaller by clicking in the little square in the title bar of a window.<br />
<br />
* "stacked" layout (Mod+s) : the selected window takes the entire column, but you can see <br />
the title bar of other windows.<br />
* "maximum" layout (Mod+m) : the selected window takes the entire column, you do not see <br />
other windows.<br />
* "fullscreen" layout (Mod+f) : the selected window takes runs in full screen.<br />
<br />
If you tend to use multiple clients in stacked view then binding the following allows you to remove all the title bars apart from the one you are viewing, regaining screen estate.<br />
Each client will be numbered in the top right with 1/3, 2/3 etc. <br />
Mod + s or Mod + d will return the view to standard layouts.<br />
* fn Key-$MODKEY-x {wmiir xwrite /tag/sel/ctl colmode sel +max} # rc.wmii.local version<br />
* Key $MODKEY-x<br />
wmiir xwrite /tag/sel/ctl colmode sel +max # wmiirc version<br />
<br />
====Floating layout====<br />
<br />
You can place your windows like a classic window manager. It's called floating layout. It's useful for some applications, like the Gimp, mplayer, vlc etc.<br />
<br />
* Mod+Shift+Space : Move selected window in floating layout.<br />
* Mod+Space : switch between floating layout and normal layout. <br />
<br />
In the floating layout, we can select a window with Mod+j and Mod+k. We can change dimensions of the window, by dragging, like in any other window manager. But we can use hotkeys for that as well :<br />
<br />
* Mod+Left click : move window<br />
* Mod+Right click : change dimensions of the window (you can use it in other layouts too)<br />
<br />
===Views and Tagging===<br />
Tagging in wmii is very similar to the concept of virtual desktops in other window managers. However, tagging is slightly more powerful because it makes it very easy to group windows in multiple ways concurrently. This is made possible by the fact that WMII easily allows each window to have multiple tags. This allows you to group applications for specific use cases and easily switch between them without having to tear down your previous environment by sending applications to another "Desktop".<br />
<br />
By default, when you first start up wmii you will see the word 'nil' in the lower left corner. You are at the 'nil' view. The first application you start (such as a terminal: Mod+Enter) will automatically be tagged with a "1" and you will be automatically switched to view "1". Views can be navigated or changed with built in keybindings:<br />
<br />
* Mod+Shift+2 : tag selected window to view "2"<br />
* Mod+2 : this switches you to view "2" where you can see all windows tagged with "2"<br />
<br />
It's the same thing for all numbers, from 0 to 9. But you can also use names :<br />
<br />
* Mod+t : views menu : you can select a tag with right and left keys, or type the name <br />
of the tag (or just a part of the name, if it was created).<br />
<br />
* Mod+Shift+t : this retags the currently selected window with whatever you type into <br />
the menu.<br />
<br />
* N.B If using plan9port a ''history.tags'' file is generated in .wmii-*/. You can use <br />
up/down arrow keys to recall previous entries for simple re-tagging/window viewing.<br />
<br />
You can tag windows with multiple views by using a '+' between the tag names :<br />
<br />
* Mod+Shift+t foo+bar+2 : this tags the currently selected window to the views "foo",<br />
"bar" and "2".<br />
You can remove a single tag from multi-tagged windows by selecting the one you wish to remove<br />
and using Mod+Shift+t, -tag ''name/number'' ie<br />
Urxvt is multi-tagged on views 1 2 3 and 4, if you jumped to 3 and typed exit, all instances of<br />
urxvt will be terminated, using Mod+Shift+t, -3 will only remove that single view.<br />
<br />
Tags can be set for specific applications in the wmiirc configuration file.<br />
<br />
# Tagging Rules<br />
wmiir write /tagrules <<!<br />
/Firefox.*/ -> ~+2<br />
/Gimp.*/ -> ~+3<br />
/.*/ -> sel<br />
/.*/ -> 1<br />
!<br />
<br />
With the above tag rules, firefox starts in floating mode (~) on view "2". Gimp starts in floating mode on view "3".<br />
<br />
{{Note | Applications need to spawn an X-window in order to be automatically assigned tags. Therefore, in order to launch your terminal based programs you will need to prepend something like ''urxvt -e <program>'' if want to make use of this feature.}}<br />
<br />
==WMII filesystem==<br />
<br />
WMII's filesystem is based on the [http://9p.cat-v.org 9P protocol]. Every element (windows, statusbar, ...) is represented as a file. This makes several cool things possible. For example you can display the song you're currently listening to in the statusbar (for example with MPD and MPC).<br />
<br />
{{Note|This filesystem is not permanent and you have to set up everything again after reboot. To make your changes "permanent" simply write the right commands into your wmiirc.}}<br />
<br />
You can access the filesystem with the ''wmiir'' command. For instance, you can list the root directory with ''wmiir ls /''<br />
<br />
client/<br />
colrules<br />
ctl<br />
event<br />
keys<br />
lbar/<br />
rbar/<br />
tag/<br />
tagrules<br />
<br />
You can use ''wmiir read'' to look into files: ''wmiir read /tag/sel/index''<br />
<br />
# ~ 1280 785<br />
~ 0x160000d 731 394 486 332 xterm:XTerm:~<br />
# 1 0 1280<br />
1 0x800003 0 785 opera:Opera:Editing Wmii - Preview - ArchWiki - Opera<br />
<br />
So this is the info for the '''sel'''ected (current) tag. As you can see, I've got one floating xterm and Opera running on this tag. The first number in this output indicates the column of the window. ~ is the floating column and 1 ist (obviously) the first column. The second column is the XServer-ID for the client. The next columns are the coordinates and the size of the window. The last column ist the titlebar of the window.<br />
<br />
You can create new files with ''wmiir create'':<br />
<br />
echo Arch is best | wmiir create /rbar/arch<br />
<br />
Now you should see "Arch is best" in your statusbar<br />
<br />
"wmiir create" reads from STDIN. So you can pipe any information you like into your statusbar. "wmiir write" works in a similar fashion but doesn't create new files.<br />
<br />
{{Note|Note for /rbar and /lbar:The elements in those status bars are in alphabetical order.}}<br />
<br />
You can remove files with rm or remove<br />
<br />
If you like to have a program on several tags you can use:<br />
echo "3+5+8" | wmiir write /client/0x800003/tags<br />
<br />
Now my Opera window appears on Tags 3,5 and 8.<br />
<br />
But there are easier ways to accomplish this ;)<br />
Just type MOD+shift+t and enter "3+5+8" and you get the same result for the currently selected client.<br />
<br />
{{Note| There's also the possibility to mount WMII's filesystem. Have a look at the [http://wmii.suckless.org/9p official documentation]. }}<br />
<br />
==Other nice stuff==<br />
<br />
=== Laptop Status Bar===<br />
<br />
If you are using wmii on a laptop, it may be convenient to display items such as wireless quality, remaining battery time, and load averages in the status bar; the script below requires you to install acpi and gawk:<br />
pacman -S acpi gawk''<br />
{{bc|<nowiki><br />
# Status Bar Info<br />
status() {<br />
echo -n ' Wlan0:' $(iwconfig wlan0 | awk '/Quality/{print $2}' | sed 's/.*=//' | awk -F"/" '{printf("%.0f%%", $1/$2*100)}') '| Bat:' $(acpi -b | sed -n 's/.*\([0-9][0-9]:[0-9][0-9]\):[0-9][0-9].*/\1/p') '|' $(uptime | sed 's/.*: //; s/,//g') '|' $(date '+%c')<br />
}<br />
</nowiki>}}<br />
By default the status bar only shows date and an uptime pager (displays system load average for the last 1, 5, 15 minutes).<br />
<br />
=== Conky Replacement Status Bar===<br />
<br />
Similar to the above status() function any user can essentially replace the functions of the conky system monitor by using the wmii status bar. Below is an example of such to show CPU and GPU temperatures, CPU speeds, /home and / partition sizes, RAM used, system load averages and date/time:<br />
{{bc|<nowiki><br />
# Status Bar Info<br />
status() {<br />
echo -n 'CPUTemp:' `expr $(sensors | grep temp1 | awk '{print $2}' | cut -c2-3) + 15` '|' 'GPUTemp:' $(nvidia-settings -q=GPUCoreTemp | grep eagle | awk '{print $4}' | cut -c1-2 ) '|' 'CPUMHz:' $(cat /proc/cpuinfo | grep MHz | awk '{printf "%.0f\n", $4}') '|' '/home:' $(df -h | grep sda5 | awk '{print $3}') '|' '/:' $(df -h | grep sda1 | awk '{print $3}') '|' 'RAM:' $(free -m | grep -i /cache | awk '{print $3}') 'MB |' $(uptime | sed 's/.*://; s/,//g') '|' $(date +"%a %b %d %H:%M")<br />
}<br />
</nowiki>}}<br />
By judicious use of the info available from common Linux system commands, the /proc filesystem and GNU tools such as grep, awk, sed and cut you can create a highly informational wmii status bar. Note that the above is specific to the author's computer and will have to be edited to suit.<br />
<br />
===Terminal Title===<br />
If you would like to display the current directory in your terminal emulator's titlebar, add this to your .bashrc<br />
WMII_IS_RUNNING=`ps a | grep wmii | awk '/[^"grep"] wmii$/'`<br />
if [ -n "$WMII_IS_RUNNING" ]; then<br />
PROMPT_COMMAND='dirs | wmiir write /client/sel/label'<br />
fi<br />
With this you can shorten you shell prompt and have more horizontal space to type. This test prevents you from getting a "WMII_ADRESS not set" error when you spawn a console.<br />
<br />
===Weechat Highlight Notification===<br />
If you use weechat and want to know when you have been messaged without always having to look at the weechat window, you can use the ''launcher.pl'' script to send a notice to the bar. To get this working, you will need to create a script that sends your desired notice. Here is very simple example:<br />
<br />
#!/bin/bash<br />
echo :: NEW MESSAGE :: | wmiir create /lbar/alert<br />
sleep 8<br />
wmiir remove /lbar/alert<br />
<br />
Then start weechat and load the script.<br />
<br />
/perl load launcher.pl<br />
<br />
Then type the following command into weechat:<br />
<br />
/set plugins.var.perl.launcher.signal.weechat_pv = "/path/to/yourscript"<br />
<br />
If you are experiencing the "/rbar/alert File not Found" error inside the weechat buffer and its messing up your layout you can try the following fix:<br />
<br />
/set plugins.var.perl.launcher.signal.weechat_pv = "/path/to/yourscript >/dev/null 2>&"<br />
<br />
Now, :: NEW MESSAGE :: will appear in the left corner of your bar whenever you have a message highlight. Make sure to place ''launcher.pl'' the perl/autoload directory so that it starts when weechat starts.<br />
<br />
===Mod4 on an old Thinkpad===<br />
<br />
Although Wmii defaults to Mod1, using Mod4 reduces conflicts in keybindings with many terminal applications. There is a snag for old Thinkpad users, however. They do not have a Mod4 key. To get one, another key has to be assigned to it using xmodmap. To do it, make an ''.Xmodmap'' file in your home directory and add this to it:<br />
keycode 64 = Super_L<br />
add Mod4 = Super_L<br />
remove Mod1 = Super_L<br />
<br />
You will need to replace 64 with whatever ''xev'' tells you is the keycode of the key you want to replace. In the above example, I replace left Alt (and use right alt for applications).<br />
<br />
===Nice fonts===<br />
Wmii now supports Xft, just prefix font name with 'xft'. For instance:<br />
export WMII_FONT='xft:Sans-9'<br />
<br />
===Keyboard layouts===<br />
You'd probably like to have its own keyboard layout for each window. However, most of such applications requires system tray while witray is only available in the [https://aur.archlinux.org/packages.php?ID=3497 development version of wmii]. [https://www.archlinux.org/packages/?q=xxkb xxkb] package helps to solve the problem. It has no UI by default. You only need to configure layouts in xorg.conf. Create /etc/X11/xorg.conf.d/20-keyboard.conf and put something like this into it:<br />
Section "InputClass"<br />
Identifier "Keyboard Defaults"<br />
MatchIsKeyboard "yes"<br />
Option "XkbModel" "pc101"<br />
Option "XkbLayout" "us,ru"<br />
Option "XkbOptions" "grp:ctrl_shift_toggle,compose:prsc"<br />
EndSection<br />
Replace layout, options and model to fit your needs. Add<br />
xxkb &<br />
into your wmiirc and it just works.<br />
[https://aur.archlinux.org/packages.php?ID=33298 xkblayout-state] can be used to put layout indicator into the status line:<br />
status() {<br />
echo -n label $(xkblayout-state print "%s") '|' $(date +"%a %b %d %H:%M")<br />
}<br />
<br />
===Note: Version 3.9.2-1===<br />
<br />
If you upgrade from wmii v3.6-4 to v3.9.2-1 you will have to insert any changes you made to your old ~/.wmii-3.5/wmiirc configuration file into the newer config file located at ~/.wmii/wmiirc_local. Note also that there are some slight format and variable name changes between the newer and older versions of /etc/wmii/wmiirc.<br />
<br />
This latest version has some significant enhancements such as easier window dimension changes with the mouse and better handling of small floating windows launched from tiled applications (especially LibreOffice).<br />
<br />
==See also==<br />
* [https://code.google.com/p/wmii/ wmii Website] -- the official website of wmii<br />
* [[dmenu]] -- a simple application launcher which binds well with dwm and wmii<br />
* [http://wmii.googlecode.com/hg/doc/wmii.pdf user guide] -- latest wmii guide (pdf)<br />
*[https://bbs.archlinux.org/viewtopic.php?id=22592 The wmii thread]<br />
* [https://sites.google.com/site/blijvend/home-1/notes/wmiicolor wmii colour themes]<br />
* [http://eigenclass.org/hiki.rb?wmii+ruby ruby-wmii] -- Ruby configuration and scripting for wmii 3.1<br />
* [https://github.com/sunaku/wmiirc sunaku's wmiirc] -- Ruby configuration and scripting for wmii 3.9+ and wmii-hg<br />
* [http://pastebin.com/Xyn0mEjr Ben's wmiirc] -- Simple wmiirc with extra widgets (vol, mpd, mail, clock) and other modifications<br />
* mailing list is dev@suckless.org, see official website<br />
* IRC channel is #wmii on the OFTC IRC network</div>Dbboltonhttps://wiki.archlinux.org/index.php?title=Talk:Kernel/Arch_build_system&diff=309429Talk:Kernel/Arch build system2014-04-09T06:59:24Z<p>Dbbolton: </p>
<hr />
<div>==Dependencies==<br />
*I am doing this now and 2 dependencies have shown up that are not documented, bc and xmlto. Or maybe these used to be installed with base-devel but no longer are.<br />
[[User:SanjeevKSharma|SanjeevKSharma]] ([[User talk:SanjeevKSharma|talk]]) 15:31, 27 October 2013 (UTC) <br />
<br />
==Provides==<br />
* If somebody want to keep stock kernel beside custom one, shouldn't be the "provides" array uncommented, and changed to<br />
<nowiki>provides=('kernel26' 'linux')</nowiki><br />
?<br />
--[[User:4javier|4javier]] 05:27, 10 January 2012 (EST)<br />
: should I also uncomment these parts in package_linux-headers() and not only in package_linux()? --[[User:Onny|Onny]] 11:08, 8 March 2012 (EST)<br />
* this page does not mention that every changed .config-file has a new md5sum which should be added into the PKGBUILD --[[User:Onny|Onny]] 11:24, 8 March 2012 (EST)<br />
<br />
==Directories==<br />
<br />
What directory are these commands supposed to be run from? [[User:Dbbolton|Dbbolton]] ([[User talk:Dbbolton|talk]]) 06:59, 9 April 2014 (UTC)</div>Dbboltonhttps://wiki.archlinux.org/index.php?title=Beginners%27_guide&diff=309198Beginners' guide2014-04-07T23:39:15Z<p>Dbbolton: /* Syslinux */</p>
<hr />
<div><noinclude><br />
[[Category:Getting and installing Arch]]<br />
[[ar:Beginners' Guide/Installation]]<br />
[[da:Beginners' Guide/Installation]]<br />
[[el:Beginners' Guide/Installation]]<br />
[[es:Beginners' Guide/Installation]]<br />
[[hr:Beginners' Guide/Installation]]<br />
[[hu:Beginners' Guide/Installation]]<br />
[[it:Beginners' Guide/Installation]]<br />
[[ja:Beginners' Guide/Installation]]<br />
[[ko:Beginners' Guide/Installation]]<br />
[[nl:Beginners' Guide/Installatie]]<br />
[[pl:Beginners' Guide/Installation]]<br />
[[pt:Beginners' Guide/Installation]]<br />
[[ro:Ghidul începătorilor/Instalare]]<br />
[[ru:Beginners' Guide/Installation]]<br />
[[sr:Beginners' Guide/Installation]]<br />
[[zh-CN:Beginners' Guide/Installation]]<br />
[[zh-TW:Beginners' Guide/Installation]]<br />
{{Tip|This is part of a multi-page article for The Beginners' Guide. '''[[Beginners' guide|Click here]]''' if you would rather read the guide in its entirety.}}<br />
</noinclude><br />
== Installation ==<br />
<br />
You are now presented with a shell prompt, automatically logged in as root.<br />
For editing text files, the console editor nano is suggested. If you are not familiar with it, see [[nano#nano usage]].<br />
If you have (or plan on having) a dual boot setup with Windows, see [[Windows and Arch Dual Boot]].<br />
<br />
=== Change the language ===<br />
<br />
{{Tip|These are optional for the majority of users. Useful only if you plan on writing in your own language in any of the configuration files, if you use diacritical marks in the Wi-Fi password, or if you would like to receive system messages (e.g. possible errors) in your own language.<br />
Changes here ''only'' affect the installation process.}}<br />
<br />
By default, the keyboard layout is set to {{ic|us}}. If you have a non-[[Wikipedia:File:KB United States-NoAltGr.svg|US]] keyboard layout, run:<br />
<br />
# loadkeys ''layout''<br />
<br />
...where ''layout'' can be {{ic|fr}}, {{ic|uk}}, {{ic|dvorak}}, {{ic|be-latin1}}, etc. See [[Wikipedia:ISO 3166-1 alpha-2#Officially assigned code elements|here]] for 2-letter country code list. Use the command {{ic|localectl list-keymaps}} to list all available keymaps.<br />
<br />
The font should also be changed, because most languages use more glyphs than the 26 letter [[Wikipedia:English alphabet|English alphabet]]. Otherwise some foreign characters may show up as white squares or as other symbols. Note that the name is case-sensitive, so please type it ''exactly'' as you see it:<br />
<br />
# setfont Lat2-Terminus16<br />
<br />
By default, the language is set to English (US). If you would like to change the language for the install process ''(German, in this example)'', remove the {{ic|#}} in front of the [[locale]] you want from {{ic|/etc/locale.gen}}, along with English (US). Please choose the {{ic|UTF-8}} entry.<br />
<br />
{{hc|# nano /etc/locale.gen|<br />
en_US.UTF-8 UTF-8<br />
de_DE.UTF-8 UTF-8}}<br />
<br />
# locale-gen<br />
# export LANG=de_DE.UTF-8<br />
<br />
=== Establish an internet connection ===<br />
<br />
{{Warning|As of v197, udev no longer assigns network interface names according to the wlanX and ethX naming scheme. If you are coming from a different distribution or are reinstalling Arch and not aware of the new interface naming style, please do not assume that your wireless interface is named wlan0, or that your wired interface is named eth0. You can use the command {{ic|ip link}} to discover the names of your interfaces.}}<br />
<br />
The {{ic|dhcpcd}} network daemon starts automatically during boot and it will attempt to start a wired connection. Try to ping a server to see if a connection was established. For example, Google's webservers:<br />
<br />
{{hc|# ping -c 3 www.google.com|2=<br />
PING www.l.google.com (74.125.132.105) 56(84) bytes of data.<br />
64 bytes from wb-in-f105.1e100.net (74.125.132.105): icmp_req=1 ttl=50 time=17.0 ms<br />
64 bytes from wb-in-f105.1e100.net (74.125.132.105): icmp_req=2 ttl=50 time=18.2 ms<br />
64 bytes from wb-in-f105.1e100.net (74.125.132.105): icmp_req=3 ttl=50 time=16.6 ms<br />
<br />
--- www.l.google.com ping statistics ---<br />
3 packets transmitted, 3 received, 0% packet loss, time 2003ms<br />
rtt min/avg/max/mdev = 16.660/17.320/18.254/0.678 ms}}<br />
<br />
If you get a {{ic|ping: unknown host}} error, first check if there is an issue with your cable or wireless signal strength. If not, you will need to set up the network manually, as explained below. Once a connection is established move on to [[#Prepare the storage drive|Prepare the storage drive]].<br />
<br />
==== Wired ====<br />
<br />
Follow this procedure if you need to set up a wired connection via a static IP address.<br />
<br />
First, disable the dhcpcd service which was started automatically at boot:<br />
<br />
# systemctl stop dhcpcd.service<br />
<br />
Identify the name of your Ethernet interface.<br />
<br />
{{hc|# ip link|<br />
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT<br />
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00<br />
2: enp2s0f0: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN mode DEFAULT qlen 1000<br />
link/ether 00:11:25:31:69:20 brd ff:ff:ff:ff:ff:ff<br />
3: wlp3s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP mode DORMANT qlen 1000<br />
link/ether 01:02:03:04:05:06 brd ff:ff:ff:ff:ff:ff}}<br />
<br />
In this example, the Ethernet interface is {{ic|enp2s0f0}}. If you are unsure, your Ethernet interface is likely to start with the letter "e", and unlikely to be "lo" or start with the letter "w".<br />
<br />
You also need to know these settings:<br />
<br />
* Static IP address.<br />
* Subnet mask.<br />
* Gateway's IP address.<br />
* Name servers' (DNS) IP addresses.<br />
* Domain name (unless you are on a local LAN, in which case you can make it up).<br />
<br />
Activate the connected Ethernet interface (e.g. {{ic|enp2s0f0}}):<br />
<br />
# ip link set enp2s0f0 up<br />
<br />
Add the address:<br />
<br />
# ip addr add ''ip_address''/''mask_bits'' dev ''interface_name''<br />
<br />
For example:<br />
<br />
# ip addr add 192.168.1.2/24 dev enp2s0f0<br />
<br />
For more options, run {{ic|man ip}}.<br />
<br />
Add your gateway like this, substituting your own gateway's IP address:<br />
<br />
# ip route add default via ''ip_address''<br />
<br />
For example:<br />
<br />
# ip route add default via 192.168.1.1<br />
<br />
Edit {{ic|resolv.conf}}, substituting your name servers' IP addresses and your local domain name:<br />
<br />
{{hc|# nano /etc/resolv.conf|<br />
nameserver 61.23.173.5<br />
nameserver 61.95.849.8<br />
search example.com}}<br />
<br />
{{Note|Currently, you may include a maximum of three {{ic|nameserver}} lines. In order to overcome this limitation, you can use a locally caching nameserver like [[Dnsmasq]]. }}<br />
<br />
You should now have a working network connection. If you do not, check the detailed [[Network configuration]] page.<br />
<br />
==== Wireless ====<br />
<br />
Follow this procedure if you need wireless connectivity (Wi-Fi) during the installation process.<br />
<br />
First, identify the name of your wireless interface.<br />
<br />
{{hc|# iw dev|2=<br />
phy#0<br />
Interface wlp3s0<br />
ifindex 3<br />
wdev 0x1<br />
addr 00:11:22:33:44:55<br />
type managed<br />
}}<br />
<br />
In this example, {{ic|wlp3s0}} is the available wireless interface. If you are unsure, your wireless interface is likely to start with the letter "w", and unlikely to be "lo" or start with the letter "e". <br />
<br />
{{Note|If you do not see output similar to this, then your wireless driver has not been loaded. If this is the case, you must load the driver yourself. Please see [[Wireless network configuration]] for more detailed information.}}<br />
<br />
Bring the interface up with:<br />
<br />
# ip link set wlp3s0 up<br />
<br />
To verify that the interface is up, inspect the output of the following command:<br />
<br />
{{hc|# ip link show wlp3s0|<br />
3: wlp3s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state DOWN mode DORMANT group default qlen 1000<br />
link/ether 00:11:22:33:44:55 brd ff:ff:ff:ff:ff:ff<br />
}}<br />
<br />
The {{ic|UP}} in {{ic|<BROADCAST,MULTICAST,UP,LOWER_UP>}} is what indicates the interface is up, not the later {{ic|state DOWN}}.<br />
<br />
Most wireless chipsets require firmware in addition to a corresponding driver. The kernel tries to identify and load both automatically. If you get output like {{ic|SIOCSIFFLAGS: No such file or directory}}, this means you will need to manually load the firmware. If unsure, invoke {{ic|dmesg}} to query the kernel log for a firmware request from the wireless chipset. For example, if you have an Intel chipset which requires and has requested firmware from the kernel at boot:<br />
<br />
{{hc|# dmesg <nowiki>|</nowiki> grep firmware|<br />
firmware: requesting iwlwifi-5000-1.ucode}}<br />
<br />
If there is no output, it may be concluded that the system's wireless chipset does not require firmware.<br />
<br />
{{Warning|Wireless chipset firmware packages (for cards which require them) are pre-installed under {{ic|/usr/lib/firmware}} in the live environment (on CD/USB stick) '''but must be explicitly installed to your actual system to provide wireless functionality after you reboot into it!''' Package installation is covered later in this guide. Ensure installation of both your wireless module and firmware before rebooting! See [[Wireless network configuration]] if you are unsure about the requirement of corresponding firmware installation for your particular chipset.}}<br />
<br />
Next, use [[netctl]]'s {{ic|wifi-menu}} to connect to a network:<br />
<br />
# wifi-menu wlp3s0<br />
<br />
You should now have a working network connection. If you do not, check the detailed [[Wireless network configuration]] page.<br />
<br />
===== Without wifi-menu =====<br />
<br />
Alternatively, use {{ic|iw dev wlp3s0 scan <nowiki>|</nowiki> grep SSID}} to scan for available networks, then connect to a network with:<br />
<br />
# wpa_supplicant -B -i wlp3s0 -c <(wpa_passphrase "''ssid''" "''psk''")<br />
<br />
You need to replace ''ssid'' with the name of your network (e.g. "Linksys etc...") and ''psk'' with your wireless password, '''leaving the quotes around the network name and password.'''<br />
<br />
Finally, you have to give your interface an IP address. This can be set manually or using the dhcp:<br />
<br />
# dhcpcd wlp3s0<br />
<br />
If that does not work, issue the following commands:<br />
<br />
# echo 'ctrl_interface=DIR=/run/wpa_supplicant' > /etc/wpa_supplicant.conf<br />
# wpa_passphrase <ssid> <passphrase> >> /etc/wpa_supplicant.conf<br />
# ip link set <interface> up # May not be needed, but does no harm in any case<br />
# wpa_supplicant -B -D nl80211 -c /etc/wpa_supplicant.conf -i <interface name><br />
# dhcpcd -A <interface name><br />
<br />
If wpa_supplicant complains about an unsupported driver, just leave out the "-D nl80211" parameter:<br />
<br />
# wpa_supplicant -B -c /etc/wpa_supplicant.conf -i <interface name><br />
<br />
==== Analog modem, ISDN, or PPPoE DSL ====<br />
<br />
For xDSL, dial-up, and ISDN connections, see [[Direct Modem Connection]].<br />
<br />
==== Behind a proxy server ====<br />
<br />
If you are behind a proxy server, you will need to export the {{ic|http_proxy}} and {{ic|ftp_proxy}} environment variables. See [[Proxy settings]] for more information.<br />
<br />
=== Prepare the storage drive ===<br />
<br />
{{Warning|Partitioning can destroy data. You are '''strongly''' cautioned and advised to backup any critical data before proceeding.}}<br />
{{Note|If you are installing to a USB flash key, see [[Installing Arch Linux on a USB key]].}}<br />
{{Tip|If you want to create any stacked block devices for [[LVM]], [[disk encryption]] or [[RAID]], do it now.}}<br />
<br />
==== Choose a partition table type ====<br />
<br />
You have to choose between [[GUID Partition Table]] (GPT) and [[Master Boot Record]] (MBR), see also [[Partitioning#Choosing between GPT and MBR]].<br />
<br />
* It is recommended to always use GPT for UEFI boot, as some UEFI firmwares do not allow UEFI-MBR boot.<br />
* Some BIOS systems may have issues with GPT. See http://mjg59.dreamwidth.org/8035.html and http://rodsbooks.com/gdisk/bios.html for more info and possible workarounds.<br />
<br />
==== Partitioning tool ====<br />
<br />
Absolute beginners are encouraged to use a graphical partitioning tool. [[GParted]] is a good example, and is [http://gparted.sourceforge.net/livecd.php provided as a live CD]. A drive should first be [[partitioning|partitioned]] and afterwards the partitions should be formatted with a [[File Systems|file system]].<br />
<br />
While gparted may be easier to use, if you just want to create a few partitions on a new disk you can get the job done quickly by just using one of the [[Partitioning#Partitioning tools|fdisk variants]] which are included on the install medium. In the next section short usage instructions for both [[Partitioning#Gdisk usage summary|gdisk]] and [[Partitioning#Fdisk usage summary|fdisk]] follow.<br />
<br />
==== Partition scheme ====<br />
<br />
You can decide into how many partitions the disk should be split, and for which directory each partition should be used in the system. The mapping from partitions to directories (frequently called 'mount points') is the [[Partitioning#Partition scheme|Partition scheme]]. The simplest, and not a bad choice, is to make just one huge {{ic|/}} partition. Another popular choice is to have a {{ic|/}} and a {{ic|/home}} partition.<br />
<br />
'''Additional required partitions:'''<br />
* If you have a [[UEFI]] motherboard, you will need to create an extra [[Unified Extensible Firmware Interface#EFI System Partition|EFI System Partition]].<br />
* If you have a BIOS motherboard (or plan on booting in BIOS compatibility mode) and you want to setup GRUB on a GPT-partitioned drive, you will need to create an extra [[GRUB#GUID Partition Table (GPT) specific instructions|BIOS Boot Partition]] of size 1 or 2 MiB and {{ic|EF02}} type code. Syslinux does not need one.<br />
* If you have a requirement for a [[Disk encryption]] of the system itself, this must be reflected in your partition scheme. It is unproblematic to add encrypted folders, containers or home directories after the system is installed.<br />
<br />
See [[Swap]] for details if you wish to set up a swap partition or swap file. A swap file is easier to resize than a partition and can be created at any point after installation, but cannot be used with a Btrfs filesystem.<br />
<br />
If you have already created your partitions, proceed to [[#Create filesystems]].<br />
<br />
Otherwise, see the following example.<br />
<br />
==== Example ====<br />
<br />
The Arch Linux install media includes the following partitioning tools: {{ic|fdisk}}, {{ic|gdisk}}, {{ic|cfdisk}}, {{ic|cgdisk}} and {{ic|parted}}.<br />
<br />
{{Tip|Use the {{ic|lsblk -f}} or {{ic|lsblk -o NAME,FSTYPE,SIZE,LABEL}} command to list the hard disks attached to your system, along with the sizes of their existing partitions. This will help you to be confident you are partitioning the right disk.}}<br />
<br />
The example system will contain a 15 GB root partition, and a [[Partitioning#/home|home]] partition for the remaining space. Choose either MBR or GPT, as described above. Do not choose both!<br />
<br />
It should be emphasized that partitioning is a personal choice and that this example is only for illustrative purposes. See [[Partitioning]].<br />
<br />
===== Using cgdisk to create GPT partitions =====<br />
<br />
Launch ''cgdisk'' with:<br />
<br />
# cgdisk /dev/sda<br />
<br />
;Root:<br />
* Choose ''New'' (or press {{ic|N}}) – {{ic|Enter}} for the first sector (2048) – type in {{ic|15G}} – {{ic|Enter}} for the default hex code (8300) – {{ic|Enter}} for a blank partition name.<br />
<br />
;Home:<br />
* Press the down arrow a couple of times to move to the larger free space area.<br />
* Choose ''New'' (or press {{ic|N}}) – {{ic|Enter}} for the first sector – {{ic|Enter}} to use the rest of the drive (or you could type in the desired size; for example {{ic|30G}}) – {{ic|Enter}} for the default hex code (8300) – {{ic|Enter}} for a blank partition name.<br />
<br />
Here is what it should look like:<br />
<br />
Part. # Size Partition Type Partition Name<br />
----------------------------------------------------------------<br />
1007.0 KiB free space<br />
1 15.0 GiB Linux filesystem<br />
2 123.45 GiB Linux filesystem<br />
<br />
Double check and make sure that you are happy with the partition sizes as well as the partition table layout before continuing.<br />
<br />
If you would like to start over, you can simply select ''Quit'' (or press {{ic|Q}}) to exit without saving changes and then restart ''cgdisk''.<br />
<br />
If you are satisfied, choose ''Write'' (or press {{ic|Shift+W}}) to finalize and to write the partition table to the drive. Type {{ic|yes}} and choose ''Quit'' (or press {{ic|Q}}) to exit without making any more changes.<br />
<br />
===== Using fdisk to create MBR partitions =====<br />
{{Note|There is also ''cfdisk'', which is similar in UI to ''cgdisk'', but it currently does not automatically align the first partition properly. That is why the classic ''fdisk'' tool is used here.}}<br />
<br />
Launch ''fdisk'' with:<br />
<br />
# fdisk /dev/sda<br />
<br />
Create the partition table:<br />
<br />
* {{ic|Command (m for help):}} type {{ic|o}} and press {{ic|Enter}}<br />
<br />
Then create the first partition:<br />
<br />
# {{ic|Command (m for help):}} type {{ic|n}} and press {{ic|Enter}}<br />
# Partition type: {{ic|Select (default p):}} press {{ic|Enter}}<br />
# {{ic|Partition number (1-4, default 1):}} press {{ic|Enter}}<br />
# {{ic|First sector (2048-209715199, default 2048):}} press {{ic|Enter}}<br />
# {{ic|Last sector, +sectors or +size{K,M,G} (2048-209715199....., default 209715199):}} type {{ic|+15G}} and press {{ic|Enter}}<br />
<br />
Then create a second partition:<br />
<br />
# {{ic|Command (m for help):}} type {{ic|n}} and press {{ic|Enter}}<br />
# Partition type: {{ic|Select (default p):}} press {{ic|Enter}}<br />
# {{ic|Partition number (1-4, default 2):}} press {{ic|Enter}}<br />
# {{ic|First sector (31459328-209715199, default 31459328):}} press {{ic|Enter}}<br />
# {{ic|Last sector, +sectors or +size{K,M,G} (31459328-209715199....., default 209715199):}} press {{ic|Enter}}<br />
<br />
Now preview the new partition table:<br />
<br />
* {{ic|Command (m for help):}} type {{ic|p}} and press {{ic|Enter}}<br />
<br />
{{bc|<br />
Disk /dev/sda: 107.4 GB, 107374182400 bytes, 209715200 sectors<br />
Units &#61; sectors of 1 * 512 &#61; 512 bytes<br />
Sector size (logical/physical): 512 bytes / 512 bytes<br />
I/O size (minimum/optimal): 512 bytes / 512 bytes<br />
Disk identifier: 0x5698d902<br />
<br />
Device Boot Start End Blocks Id System<br />
/dev/sda1 2048 31459327 15728640 83 Linux<br />
/dev/sda2 31459328 209715199 89127936 83 Linux<br />
}}<br />
<br />
Then write the changes to disk:<br />
<br />
* {{ic|Command (m for help):}} type {{ic|w}} and press {{ic|Enter}}<br />
<br />
If everything went well fdisk will now quit with the following message:<br />
{{bc|<br />
The partition table has been altered!<br />
<br />
Calling ioctl() to re-read partition table.<br />
Syncing disks. <br />
}}<br />
<br />
In case this does not work because ''fdisk'' encountered an error, you can use the {{ic|q}} command to exit.<br />
<br />
==== Create filesystems ====<br />
<br />
Simply partitioning is not enough; the partitions also need a [[File Systems|filesystem]]. To format the partitions with an ext4 filesystem:<br />
<br />
{{Warning|Double check and triple check that it is actually {{ic|/dev/sda1}} and {{ic|/dev/sda2}} that you want to format. You can use {{ic|lsblk}} to help with this.}}<br />
<br />
# mkfs.ext4 /dev/sda1<br />
# mkfs.ext4 /dev/sda2<br />
<br />
If you have made a partition dedicated to swap (code 82), do not forget to format and activate it with:<br />
<br />
# mkswap /dev/sda''X''<br />
# swapon /dev/sda''X''<br />
<br />
For UEFI, you should format the EFI System Partition (for example /dev/sd''XY'') with:<br />
<br />
# mkfs.fat -F32 /dev/sd''XY''<br />
<br />
=== Mount the partitions ===<br />
<br />
Each partition is identified with a number suffix. For example, {{ic|sda1}} specifies the first partition of the first drive, while {{ic|sda}} designates the entire drive.<br />
<br />
To display the current partition layout:<br />
<br />
# lsblk -f<br />
<br />
{{Note|Do not mount more than one partition to the same directory. And pay attention, because the mounting order is important.}}<br />
<br />
First, mount the root partition on {{ic|/mnt}}. Following the example above (yours may be different), it would be:<br />
<br />
# mount /dev/sda1 /mnt<br />
<br />
Then mount the home partition and any other separate partition ({{ic|/boot}}, {{ic|/var}}, etc), if you have any:<br />
<br />
# mkdir /mnt/home<br />
# mount /dev/sda2 /mnt/home<br />
<br />
In case you have a UEFI motherboard, mount the EFI System Partition at your preferred mountpoint ({{ic|/boot}} used for example):<br />
<br />
# mkdir /mnt/boot<br />
# mount /dev/sd''XY'' /mnt/boot<br />
<br />
=== Select a mirror ===<br />
<br />
Before installing, you may want to edit the {{ic|mirrorlist}} file and place your preferred mirror first. A copy of this file will be installed on your new system by {{ic|pacstrap}} as well, so it is worth getting it right.<br />
<br />
{{hc|# nano /etc/pacman.d/mirrorlist|<br />
##<br />
## Arch Linux repository mirrorlist<br />
## Sorted by mirror score from mirror status page<br />
## Generated on 2012-MM-DD<br />
##<br />
<br />
<nowiki>Server = http://mirror.example.xyz/archlinux/$repo/os/$arch</nowiki><br />
...}}<br />
<br />
If you want, you can make it the ''only'' mirror available by deleting all other lines, but it is usually a good idea to have a few more, in case the first one goes offline.<br />
<br />
{{Tip|<br />
* Use the [https://www.archlinux.org/mirrorlist/ Mirrorlist Generator] to get an updated list for your country. HTTP mirrors are faster than FTP, because of something called [[Wikipedia:Keepalive|keepalive]]. With FTP, pacman has to send out a signal each time it downloads a package, resulting in a brief pause. For other ways to generate a mirror list, see [[Mirrors#Sorting mirrors|Sorting mirrors]] and [[Reflector]].<br />
* [https://archlinux.org/mirrors/status/ Arch Linux MirrorStatus] reports various aspects about the mirrors such as network problems with mirrors, data collection problems, the last time mirrors have been synced, etc.}}<br />
<br />
{{Note|<br />
* Whenever in the future you change your mirrorlist, refresh all package lists with {{ic|pacman -Syy}}, to ensure that the package lists are updated consistently. See [[Mirrors]] for more information.<br />
* If you are using an older installation medium, your mirrorlist might be outdated, which might lead to problems when updating Arch Linux (see {{Bug|22510}}). Therefore it is advised to obtain the latest mirror information as described above.<br />
* Some issues have been reported in the [https://bbs.archlinux.org/ Arch Linux forums] regarding network problems that prevent pacman from updating/synchronizing repositories (see [https://bbs.archlinux.org/viewtopic.php?id&#61;68944] and [https://bbs.archlinux.org/viewtopic.php?id&#61;65728]). When installing Arch Linux natively, these issues have been resolved by replacing the default pacman file downloader with an alternative (see [[Improve pacman performance]] for more details). When installing Arch Linux as a guest OS in [[VirtualBox]], this issue has also been addressed by using "Host interface" instead of "NAT" in the machine properties.}}<br />
<br />
=== Install the base system ===<br />
<br />
The base system is installed using the ''pacstrap'' script. The {{ic|-i}} switch can be omitted if you wish to install every package from the {{Grp|base}} group without prompting. You may also want to include {{Grp|base-devel}}, as you will need these packages should you want to build from the AUR.<br />
<br />
# pacstrap -i /mnt base<br />
<br />
{{Note|<br />
* If in the middle of the installation of base packages you get a request to import a PGP key, agree to download the key to proceed. This is likely to happen if the Arch ISO you are using is out of date.<br />
* If pacman fails to verify your packages, stop the process with {{ic|Ctrl+C}} and check the system time with {{ic|cal}}. If the system date is invalid (e.g. it shows the year 2010), signing keys will be considered expired (or invalid), signature checks on packages will fail and installation will be interrupted. Make sure to correct the system time, using the command {{ic|ntpd -qg}}, and retry running the pacstrap command. Refer to [[Time]] page for more information on correcting system time.<br />
* If pacman complains that {{ic|error: failed to commit transaction (invalid or corrupted package)}}, run the following command:<br />
# pacman-key --init && pacman-key --populate archlinux<br />
}}<br />
<br />
This will give you a basic Arch system. Other packages can be installed later using [[pacman]].<br />
<br />
=== Generate an fstab ===<br />
<br />
Generate an [[fstab]] file with the following command. UUIDs will be used because they have certain advantages (see [[fstab#Identifying filesystems]]). If you would prefer to use labels instead, replace the {{ic|-U}} option with {{ic|-L}}.<br />
<br />
# genfstab -U -p /mnt >> /mnt/etc/fstab<br />
# nano /mnt/etc/fstab<br />
<br />
{{Warning|The fstab file should always be checked after generating it. If you encounter errors running genfstab or later in the install process, do '''not''' run genfstab again; just edit the fstab file.}}<br />
<br />
A few considerations:<br />
<br />
* The last field determines the order in which partitions are checked at start up: use {{ic|1}} for the (non-{{ic|btrfs}}) root partition, which should be checked first; {{ic|2}} for all other partitions you want checked at start up; and {{ic|0}} means 'do not check' (see [[fstab#Field definitions]]).<br />
* All [[btrfs]] partitions should have {{ic|0}} for this field. Normally, you will also want your ''swap'' partition to have {{ic|0}}.<br />
<br />
=== Chroot and configure the base system ===<br />
<br />
Next, [[chroot]] into your newly installed system:<br />
<br />
# arch-chroot /mnt /bin/bash<br />
<br />
{{Note|Leave out {{ic|/bin/bash}} to chroot into the sh shell.}}<br />
At this stage of the installation, you will configure the primary configuration files of your Arch Linux base system. These can either be created if they do not exist, or edited if you wish to change the defaults.<br />
<br />
Closely following and understanding these steps is of key importance to ensure a properly configured system.<br />
<br />
==== Locale ====<br />
<br />
Locales are used by '''glibc''' and other locale-aware programs or libraries for rendering text, correctly displaying regional monetary values, time and date formats, alphabetic idiosyncrasies, and other locale-specific standards.<br />
<br />
There are two files that need editing: {{ic|locale.gen}} and {{ic|locale.conf}}.<br />
<br />
Uncomment as many lines as needed. Remove the {{ic|#}} in front of the line(s) you want to use. Using {{ic|UTF-8}} is highly recommended over {{ic|ISO-8859}}:<br />
{{hc|# nano /etc/locale.gen|<br />
#en_PH.UTF-8 UTF-8<br />
#en_PH ISO-8859-1<br />
#en_SG.UTF-8 UTF-8<br />
#en_SG ISO-8859-1<br />
en_US.UTF-8 UTF-8<br />
#en_US ISO-8859-1<br />
#en_ZA.UTF-8 UTF-8<br />
#en_ZA ISO-8859-1<br />
}}<br />
<br />
{{Note|The {{ic|locale.gen}} file has everything commented out by default.}}<br />
<br />
Generate the locale(s) specified in {{ic|/etc/locale.gen}}:<br />
# locale-gen<br />
<br />
{{Note|This will also run with every update of '''glibc'''.}}<br />
<br />
Create the {{ic|/etc/locale.conf}} file substituting your chosen locale:<br />
<br />
# echo LANG=en_US.UTF-8 > /etc/locale.conf<br />
<br />
{{Note|<br />
* The locale specified in the {{ic|LANG}} variable must be uncommented in {{ic|/etc/locale.gen}}.<br />
* The {{ic|locale.conf}} file does not exist by default. Setting only {{ic|LANG}} should be enough as it will act as the default value for all other variables.<br />
}}<br />
<br />
Export substituting your chosen locale:<br />
<br />
# export LANG=en_US.UTF-8<br />
<br />
{{Tip|To use other locales for other {{ic|LC_*}} variables, run {{ic|locale}} to see the available options and add them to {{ic|locale.conf}}. It is not recommended to set the {{ic|LC_ALL}} variable. See [[Locale#Setting the locale system-wide]] for details.}}<br />
<br />
==== Console font and keymap ====<br />
<br />
If you set a keymap at [[#Change the language|the beginning]] of the install process, load it now, as well, because the environment has changed. For example:<br />
<br />
# loadkeys ''de-latin1''<br />
# setfont Lat2-Terminus16<br />
<br />
To make them available after reboot, edit {{ic|vconsole.conf}} (create it if it does not exist):<br />
<br />
{{hc|# nano /etc/vconsole.conf|2=<br />
KEYMAP=de-latin1<br />
FONT=Lat2-Terminus16<br />
}}<br />
<br />
* {{ic|KEYMAP}} – Please note that this setting is only valid for your TTYs, not any graphical window managers or Xorg.<br />
<br />
* {{ic|FONT}} – Available alternate console fonts reside in {{ic|/usr/share/kbd/consolefonts/}}. The default (blank) is safe, but some foreign characters may show up as white squares or as other symbols. It is recommended that you change it to {{ic|Lat2-Terminus16}}, because according to {{ic|/usr/share/kbd/consolefonts/README.Lat2-Terminus16}}, it claims to support "about 110 language sets".<br />
<br />
* Possible option {{ic|FONT_MAP}} – Defines the console map to load at boot. Read {{ic|man setfont}}. Removing it or leaving it blank is safe.<br />
<br />
See [[Fonts#Console fonts]] and {{ic|man vconsole.conf}} for more information.<br />
<br />
==== Time zone ====<br />
<br />
Available time zones and subzones can be found in the {{ic|/usr/share/zoneinfo/<Zone>/<SubZone>}} directories.<br />
<br />
To view the available <Zone>, check the directory {{ic|/usr/share/zoneinfo/}}:<br />
<br />
# ls /usr/share/zoneinfo/<br />
<br />
Similarly, you can check the contents of directories belonging to a <SubZone>:<br />
<br />
# ls /usr/share/zoneinfo/Europe<br />
<br />
Create a symbolic link {{ic|/etc/localtime}} to your zone file {{ic|/usr/share/zoneinfo/<Zone>/<SubZone>}} using this command:<br />
<br />
# ln -s /usr/share/zoneinfo/<Zone>/<SubZone> /etc/localtime<br />
<br />
'''Example:'''<br />
<br />
# ln -s /usr/share/zoneinfo/Europe/Minsk /etc/localtime<br />
<br />
==== Hardware clock ====<br />
<br />
Set the hardware clock mode uniformly between your operating systems. Otherwise, they may overwrite the hardware clock and cause time shifts.<br />
<br />
You can generate {{ic|/etc/adjtime}} automatically by using one of the following commands:<br />
<br />
* '''UTC''' (recommended)<br />
<br />
: {{Note|Using [[Wikipedia:Coordinated Universal Time|UTC]] for the hardware clock does not mean that software will display time in UTC.}}<br />
<br />
: {{bc|# hwclock --systohc --utc}}<br />
<br />
* '''localtime''' (discouraged; used by default in Windows)<br />
<br />
: {{Warning|Using ''localtime'' may lead to several known and unfixable bugs. However, there are no plans to drop support for ''localtime''.}}<br />
<br />
: {{bc|# hwclock --systohc --localtime}}<br />
<br />
==== Kernel modules ====<br />
<br />
{{Tip|This is just an example, you do not need to set it. All needed modules are automatically loaded by udev, so you will rarely need to add something here. Only add modules that you know are missing.}}<br />
<br />
For kernel modules to load during boot, place a {{ic|*.conf}} file in {{ic|/etc/modules-load.d/}}, with a name based on the program that uses them.<br />
<br />
{{hc|# nano /etc/modules-load.d/virtio-net.conf|<br />
# Load 'virtio-net.ko' at boot.<br />
<br />
virtio-net}}<br />
<br />
If there are more modules to load per {{ic|*.conf}}, the module names can be separated by newlines. A good example are the [[VirtualBox#Installation steps for Arch Linux guests|VirtualBox Guest Additions]].<br />
<br />
Empty lines and lines starting with {{ic|#}} or {{ic|;}} are ignored.<br />
<br />
==== Hostname ====<br />
<br />
Set the [[Wikipedia:hostname|hostname]] to your liking (e.g. ''arch''):<br />
<br />
# echo ''myhostname'' > /etc/hostname<br />
<br />
Add the same hostname to {{ic|/etc/hosts}}:<br />
<br />
{{hc|# nano /etc/hosts|<br />
#<br />
# /etc/hosts: static lookup table for host names<br />
#<br />
<br />
#<ip-address> <hostname.domain.org> <hostname><br />
127.0.0.1 localhost.localdomain localhost ''myhostname''<br />
::1 localhost.localdomain localhost<br />
<br />
# End of file}}<br />
<br />
=== Configure the network ===<br />
<br />
You need to configure the network again, but this time for your newly installed environment. The procedure and prerequisites are very similar to the one described [[#Establish an internet connection|above]], except we are going to make it persistent and automatically run at boot.<br />
<br />
{{Note|<br />
* For more in-depth information on network configration, visit [[Network configuration]] and [[Wireless network configuration]].<br />
* If you would like to use the old interface naming scheme (ie. eth* and wlan*) you can accomplish this by creating an empty file at {{ic|/etc/udev/rules.d/80-net-setup-link.rules}} which will mask the file of the same name located under {{ic|/usr/lib/udev/rules.d}}.<br />
}}<br />
<br />
==== Wired ====<br />
<br />
===== Dynamic IP =====<br />
<br />
; Using dhcpcd<br />
<br />
If you only use a single fixed wired network connection, you do not need a network management service and can simply enable the {{ic|dhcpcd}} service:<br />
<br />
# systemctl enable dhcpcd.service<br />
<br />
{{Note|If it does not work, use: {{ic|# systemctl enable dhcpcd@''interface_name''.service}} }}<br />
<br />
; Using netctl<br />
<br />
Copy a sample profile from {{ic|/etc/netctl/examples}} to {{ic|/etc/netctl}}:<br />
<br />
# cd /etc/netctl<br />
# cp examples/ethernet-dhcp my_network<br />
<br />
Edit the profile as needed (update {{ic|Interface}} from {{ic|eth0}} to match network adapter ID as shown by running {{ic|ip link}}):<br />
<br />
# nano my_network<br />
<br />
Enable the {{ic|my_network}} profile:<br />
<br />
# netctl enable my_network<br />
<br />
{{Note|You will get the message "Running in chroot, ignoring request.". This can be ignored for now.}}<br />
<br />
; Using netctl-ifplugd<br />
<br />
{{Warning|You cannot use this method in conjunction with explicitly enabling profiles, such as {{ic|netctl enable <profile>}}.}}<br />
<br />
Alternatively, you can use {{ic|netctl-ifplugd}}, which gracefully handles dynamic connections to new networks:<br />
<br />
Install {{Pkg|ifplugd}}, which is required for {{ic|netctl-ifplugd}}:<br />
<br />
# pacman -S ifplugd<br />
<br />
Then enable for interface that you want:<br />
<br />
# systemctl enable netctl-ifplugd@<interface>.service<br />
<br />
{{Tip|[[Netctl]] also provides {{ic|netctl-auto}}, which can be used to handle wired profiles in conjunction with {{ic|netctl-ifplugd}}.}}<br />
<br />
===== Static IP =====<br />
<br />
; Using netctl<br />
<br />
Copy a sample profile from {{ic|/etc/netctl/examples}} to {{ic|/etc/netctl}}:<br />
<br />
# cd /etc/netctl<br />
# cp examples/ethernet-static my_network<br />
<br />
Edit the profile as needed (modify {{ic|Interface}}, {{ic|Address}}, {{ic|Gateway}} and {{ic|DNS}}):<br />
<br />
# nano my_network<br />
<br />
* Notice the {{ic|/24}} in {{ic|Address}} which is the [[wikipedia:Classless Inter-Domain Routing#CIDR notation|CIDR notation]] of a {{ic|255.255.255.0}} netmask<br />
<br />
Enable above created profile to start it at every boot:<br />
<br />
# netctl enable my_network<br />
<br />
; Using systemd-networkd<br />
<br />
See [[systemd-networkd]].<br />
<br />
==== Wireless ====<br />
<br />
{{Note|If your wireless adapter requires a firmware (as described in the above [[#Wireless|Establish an internet connection]] section and also [[Wireless network configuration#Device driver|here]]), install the package containing your firmware. Most of the time, the {{Pkg|linux-firmware}} package will contain the needed firmware. Though for some devices, the required firmware might be in its own package. For example:<br />
{{bc|# pacman -S zd1211-firmware}}<br />
See [[Wireless network configuration#Installing driver/firmware]] for more info.}}<br />
<br />
Install {{Pkg|iw}} and {{Pkg|wpa_supplicant}} which you will need to connect to a network:<br />
<br />
# pacman -S iw wpa_supplicant<br />
<br />
===== Adding wireless networks =====<br />
<br />
; Using wifi-menu<br />
<br />
Install {{Pkg|dialog}}, which is required for {{ic|wifi-menu}}:<br />
<br />
# pacman -S dialog<br />
<br />
After finishing the rest of this installation and rebooting, you can connect to the network with {{ic|wifi-menu ''interface_name''}} (where {{ic|''interface_name''}} is the interface of your wireless chipset).<br />
<br />
# wifi-menu ''interface_name''<br />
<br />
{{Warning|This must be done *after* your reboot when you are no longer chrooted. The process spawned by this command will conflict with the one you have running outside of the chroot. Alternatively, you could just configure a network profile manually using the following templates so that you do not have to worry about using {{ic|wifi-menu}} at all.}}<br />
<br />
; Using manual netctl profiles<br />
<br />
Copy a network profile from {{ic|/etc/netctl/examples}} to {{ic|/etc/netctl}}:<br />
<br />
# cd /etc/netctl<br />
# cp examples/wireless-wpa my-network<br />
<br />
Edit the profile as needed (modify {{ic|Interface}}, {{ic|ESSID}} and {{ic|Key}}):<br />
<br />
# nano my-network<br />
<br />
Enable above created profile to start it at every boot:<br />
<br />
# netctl enable my-network<br />
<br />
===== Connect automatically to known networks =====<br />
<br />
{{Warning|You cannot use this method in conjunction with explicitly enabling profiles, such as {{ic|netctl enable <profile>}}.}}<br />
<br />
Install {{Pkg|wpa_actiond}}, which is required for {{ic|netctl-auto}}:<br />
<br />
# pacman -S wpa_actiond<br />
<br />
Enable the {{ic|netctl-auto}} service, which will connect to known networks and gracefully handle roaming and disconnects:<br />
<br />
# systemctl enable netctl-auto@''interface_name''.service<br />
<br />
{{Tip|[[Netctl]] also provides {{ic|netctl-ifplugd}}, which can be used to handle wired profiles in conjunction with {{ic|netctl-auto}}.}}<br />
<br />
==== Analog modem, ISDN or PPPoE DSL ====<br />
<br />
For xDSL, dial-up and ISDN connections, see [[Direct Modem Connection]].<br />
<br />
=== Create an initial ramdisk environment ===<br />
<br />
{{Tip|Most users can skip this step and use the defaults provided in {{ic|mkinitcpio.conf}}. The initramfs image (from the {{ic|/boot}} folder) has already been generated based on this file when the {{Pkg|linux}} package (the Linux kernel) was installed earlier with {{ic|pacstrap}}.}}<br />
<br />
Here you need to set the right [[Mkinitcpio#HOOKS|hooks]] if the root is on a USB drive, if you use RAID, LVM, or if {{ic|/usr}} is on a separate partition.<br />
<br />
Edit {{ic|/etc/mkinitcpio.conf}} as needed and re-generate the initramfs image with:<br />
<br />
# mkinitcpio -p linux<br />
<br />
{{Note|Arch VPS installations on QEMU (e.g. when using {{ic|virt-manager}}) may need {{ic|virtio}} modules in {{ic|mkinitcpio.conf}} to be able to boot.<br />
<br />
{{hc|# nano /etc/mkinitcpio.conf|2=<br />
MODULES="virtio virtio_blk virtio_pci virtio_net"<br />
}}<br />
}}<br />
<br />
=== Set the root password ===<br />
<br />
Set the root password with:<br />
<br />
# passwd<br />
<br />
=== Install and configure a bootloader ===<br />
<br />
==== For BIOS motherboards ====<br />
<br />
For BIOS systems, several boot loaders are available, see [[Boot Loaders]] for a complete list. Choose one as per your convenience. Here, two of the possibilities are given as examples:<br />
<br />
* Syslinux is (currently) limited to loading only files from the partition where it was installed. Its configuration file is considered to be easier to understand. An example configuration can be found [https://bbs.archlinux.org/viewtopic.php?pid=1109328#p1109328 here].<br />
<br />
* GRUB is more feature-rich and supports more complex scenarios. Its configuration file(s) is more similar to 'sh' scripting language, which may be difficult for beginners to manually write. It is recommended that they automatically generate one.<br />
<br />
===== Syslinux =====<br />
<br />
If you opted for a GUID partition table (GPT) for your hard drive earlier, you need to install the {{Pkg|gptfdisk}} package now for the installation of syslinux to work.<br />
<br />
# pacman -S gptfdisk<br />
<br />
Install the {{Pkg|syslinux}} package and then use the {{ic|syslinux-install_update}} script to automatically ''install'' the bootloader ({{ic|-i}}), mark the partition ''active'' by setting the boot flag ({{ic|-a}}), and install the ''MBR'' boot code ({{ic|-m}}):<br />
<br />
# pacman -S syslinux<br />
# syslinux-install_update -i -a -m<br />
<br />
Configure {{ic|syslinux.cfg}} to point to the right root partition. This step is vital. If it points to the wrong partition, Arch Linux will not boot. Change {{ic|/dev/sda3}} to reflect your root partition ''(if you partitioned your drive as in [[#Prepare the storage drive|the example]], your root partition is {{ic|/dev/sda1}})''. Do the same for the fallback entry.<br />
<br />
{{hc|# nano /boot/syslinux/syslinux.cfg|2=<br />
...<br />
LABEL arch<br />
...<br />
APPEND root='''/dev/sda3''' rw<br />
...}}<br />
<br />
For more information on configuring and using Syslinux, see [[Syslinux]].<br />
<br />
{{Note| If you get an error message that says init doesn't exist after booting into your new system, add the line {{ic|<nowiki>init=/lib/systemd/systemd</nowiki>}} to your kernel's boot options in the {{ic|syslinux.cfg}} file.}}<br />
<br />
===== GRUB =====<br />
<br />
Install the {{Pkg|grub}} package and then run {{ic|grub-install}} to install the bootloader:<br />
<br />
# pacman -S grub<br />
# grub-install --target=i386-pc --recheck '''/dev/sda'''<br />
<br />
{{Note|<br />
* Change {{ic|/dev/sda}} to reflect the drive you installed Arch on. Do not append a partition number (do not use {{ic|sda''X''}}).<br />
* For GPT-partitioned drives on BIOS motherboards, you also need a "BIOS Boot Partition". See [[GRUB#GUID Partition Table (GPT) specific instructions|GPT-specific instructions]] in the GRUB page.<br />
* A sample {{ic|/boot/grub/grub.cfg }} gets installed as part of the grub package, and subsequent {{ic|grub-*}} commands may not over-write it. Ensure that your intended changes are in {{ic|grub.cfg}}, rather than in {{ic|grub.cfg.new}} or some such file.<br />
}}<br />
<br />
While using a manually created {{ic|grub.cfg}} is absolutely fine, it is recommended that beginners automatically generate one:<br />
<br />
{{Tip|To automatically search for other operating systems on your computer, install {{Pkg|os-prober}} ({{ic|pacman -S os-prober}}) before running the next command.}}<br />
<br />
# grub-mkconfig -o /boot/grub/grub.cfg<br />
<br />
{{Note|It is possible that multiple redundant menu entries will be generated. See [[GRUB#Redundant_menu_entries]].}}<br />
<br />
For more information on configuring and using GRUB, see [[GRUB]].<br />
<br />
==== For UEFI motherboards ====<br />
<br />
For UEFI systems, several boot loaders are available, see [[Boot Loaders]] for a complete list. Choose one as per your convenience. Here, two of the possibilities are given as examples:<br />
<br />
* [[gummiboot]] is a minimal UEFI Boot Manager which basically provides a menu for [[EFISTUB]] kernels and other UEFI applications. This is recommended UEFI boot method. <br />
* GRUB is a more complete bootloader, useful if you run into problems with Gummiboot.<br />
<br />
{{Note|For UEFI boot, the drive needs to be GPT-partitioned and an [[Unified Extensible Firmware Interface#EFI System Partition|EFI System Partition]] (512 MiB or larger, gdisk type {{ic|EF00}}, formatted with FAT32) must be present. In the following examples, this partition is assumed to be mounted at {{ic|/boot}}. If you have followed this guide from the beginning, you have already done all of these.}}<br />
<br />
===== Gummiboot =====<br />
<br />
First install the {{Pkg|gummiboot}} package and then run {{ic|gummiboot install}} to install the bootloader to the EFI System Partition:<br />
<br />
# mount -t efivarfs efivarfs /sys/firmware/efi/efivars # ignore if already mounted<br />
# pacman -S gummiboot<br />
# gummiboot install<br />
<br />
You will need to manually create a configuration file to add an entry for Arch Linux to the gummiboot manager. Create {{ic|/boot/loader/entries/arch.conf}} and add the following contents, replacing {{ic|/dev/sdaX}} with your '''root''' partition, usually {{ic|/dev/sda2}}:<br />
<br />
{{hc|# nano /boot/loader/entries/arch.conf|2=<br />
title Arch Linux<br />
linux /vmlinuz-linux<br />
initrd /initramfs-linux.img<br />
options root='''/dev/sdaX''' rw<br />
}}<br />
<br />
For more information on configuring and using gummiboot, see [[gummiboot]].<br />
<br />
===== GRUB =====<br />
<br />
Install the {{Pkg|grub}} and {{Pkg|efibootmgr}} packages and then run {{ic|grub-install}} to install the bootloader:<br />
<br />
# mount -t efivarfs efivarfs /sys/firmware/efi/efivars # ignore if already mounted<br />
# pacman -S grub efibootmgr<br />
# grub-install --target=x86_64-efi --efi-directory=/boot --bootloader-id=arch_grub --recheck<br />
<br />
Next, while using a manually created {{ic|grub.cfg}} is absolutely fine, it is recommended that beginners automatically generate one:<br />
<br />
{{Tip|To automatically search for other operating systems on your computer, install {{Pkg|os-prober}} before running the next command. However os-prober is not known to properly detect UEFI OSes.}}<br />
<br />
# grub-mkconfig -o /boot/grub/grub.cfg<br />
<br />
For more information on configuring and using GRUB, see [[GRUB]].<br />
<br />
=== Unmount the partitions and reboot ===<br />
<br />
Exit from the chroot environment:<br />
<br />
# exit<br />
<br />
Since the partitions are mounted under {{ic|/mnt}}, use the following command to unmount them:<br />
<br />
# umount -R /mnt<br />
<br />
Reboot the computer:<br />
<br />
# reboot<br />
<br />
{{Tip|Be sure to remove the installation media, otherwise you will boot back into it.}}<br />
<noinclude>{{Beginners' Guide navigation}}</noinclude></div>Dbboltonhttps://wiki.archlinux.org/index.php?title=Arch_compared_to_other_distributions&diff=308283Arch compared to other distributions2014-04-05T00:46:51Z<p>Dbbolton: /* Debian GNU/Linux */</p>
<hr />
<div>[[Category:About Arch]]<br />
[[cs:Arch Compared to Other Distributions]]<br />
[[da:Arch Compared to Other Distributions]]<br />
[[de:Arch vs. Distribution X]]<br />
[[el:Arch Compared to Other Distributions]]<br />
[[es:Arch Compared to Other Distributions]]<br />
[[fa:آرچ در مقایسه با سایر توزیعها]]<br />
[[fr:Arch vs autres distributions]]<br />
[[hu:Arch Compared to Other Distributions]]<br />
[[id:Arch Compared to Other Distributions]]<br />
[[it:Arch Compared to Other Distributions]]<br />
[[ja:Arch Compared to Other Distributions]]<br />
[[ko:Arch Compared to Other Distributions]]<br />
[[lt:Arch Compared to Other Distributions]]<br />
[[nl:Arch Compared to Other Distributions]]<br />
[[pl:Arch Compared to Other Distributions]]<br />
[[pt:Arch Compared to Other Distributions]]<br />
[[ro:Arch în comparație cu alte distribuții]]<br />
[[ru:Arch Compared to Other Distributions]]<br />
[[sk:Arch Compared to Other Distributions]]<br />
[[th:Arch Compared to Other Distributions]]<br />
[[tr:Arch_ile_diğer_dağıtımların_karşılaştırması]]<br />
[[uk:Arch Compared to Other Distributions]]<br />
[[zh-CN:Arch Compared to Other Distributions]]<br />
[[zh-TW:Arch Compared to Other Distributions]]<br />
{{Related articles start}}<br />
{{Related|Arch Linux}}<br />
{{Related|The Arch Way}}<br />
{{Related articles end}}<br />
This page attempts to draw a comparison between Arch Linux and other popular GNU/Linux distributions and UNIX-like operating systems. The summaries that follow are brief descriptions that may help a person decide if Arch Linux will suit their needs. Although reviews and descriptions can be useful, first-hand experience is invariably the best way to compare distributions.<br />
<br />
== Source-based ==<br />
<br />
Source-based distributions are highly portable, giving the advantage of controlling and compiling the entire OS and applications for a particular machine architecture and usage scheme, with the disadvantage of the time-consuming nature of source compilation. The Arch base and all packages are compiled for i686 and x86_64 architectures, offering a potential performance boost over i486/i586 binary distributions, with the added advantage of expedient installation.<br />
<br />
=== Gentoo Linux ===<br />
<br />
* Both Arch Linux and Gentoo Linux are rolling release systems, making packages available to the distribution a short time after they are released upstream. <br />
* The Gentoo packages and base system are built directly from source code according to user-specified ''USE flags''. Arch provides a ports-like system for building packages from source, though the Arch base system is designed to be installed as pre-built i686/x86_64 binary. This generally makes Arch quicker to build and update, and allows Gentoo to be more systemically customizable.<br />
* Arch supports i686 and x86_64 while Gentoo officially supports x86, x86_64, PPC, SPARC, Alpha, ARM, MIPS, HP/PA, S/390, sh, and Itanium architectures.<br />
* Gentoo's official package/system management tools tend to be rather more complex and "powerful" than those provided by Arch, and certain features which are at the very heart of Gentoo ''([http://www.gentoo.org/doc/en/handbook/handbook-x86.xml?part=2&chap=2 USE flags], [http://www.gentoo.org/doc/en/handbook/handbook-x86.xml?part=2&chap=1#doc_chap5 SLOTs], etc.)'' don't have any direct Arch Linux equivalent. Some of that is due to the fact that Arch is primarily a binary distro, but differences in [[The_Arch_Way|design philosophy]] also play a big role, with Arch taking a more principled stance in favor of architectural simplicity and avoiding "over-engineering".<br />
* Because both the Gentoo and Arch installations only include a base system, both are considered to be highly customizable. Gentoo users will generally feel quite comfortable with most aspects of Arch.<br />
<br />
=== Sorcerer/Lunar-Linux/Source Mage ===<br />
<br />
* Sorcerer/Lunar-Linux/Source Mage (SLS) are all source-based distributions originally related to one another. <br />
* SLS distributions use a rather simple set of script files to create package descriptions, and use a global configuration file to configure the compilation process, much like the [[Arch Build System]]. The SLS tools do full dependency checking, including handling optional features, package tracking, removal and upgrading. There are no binary packages for any of the SLS family, although they all provide the ability to roll back to earlier installed packages easily.<br />
* The installation process involves configuring a simple base system from the shell and ncurses menus, then optionally recompiling the base system afterward. <br />
* Like Arch, there is no default WM/DE/DM, and Xorg is not included in the base installation. Several X server alternatives are available (X.Org 6.8 or 7, XFree86).<br />
<br />
== Minimalist ==<br />
<br />
The minimalist distributions are quite comparable to Arch, sharing several similarities. All are considered "simple" from a technical standpoint.<br />
<br />
=== LFS ===<br />
<br />
* LFS, (or Linux From Scratch) exists simply as documentation. The book instructs the user on obtaining the source code for a minimal base package set for a functional GNU/Linux system, and how to manually compile, patch and configure it from scratch. LFS is as minimal as it gets, and offers an excellent and educational process of building and customizing a base system.<br />
* LFS provides no online repositories; sources are manually obtained, compiled and installed with ''make''. (Several manual methods of package management exist, and are mentioned in LFS Hints). <br />
* Arch provides these very same packages, plus [[systemd]], a few extra tools and the powerful [[pacman]] package manager as its base system, already compiled for i686/x86_64. Along with the minimal Arch base system, the Arch community and developers provide and maintain many thousands of binary packages installable via pacman as well as [[PKGBUILD]] build scripts for use with the [[Arch Build System]]. Arch also includes the [[makepkg]] tool for expediently building or customizing ''.pkg.tar.xz'' packages, readily installable by pacman. <br />
* Judd Vinet built Arch from scratch, and then wrote pacman in C. Historically, Arch was sometimes humorously described simply as "Linux, with a nice package manager."<br />
<br />
=== CRUX ===<br />
* Before creating Arch, Judd Vinet admired and used CRUX; a minimalist distribution created by Per Lidén.Originally inspired by ideas in common with CRUX and BSD, Arch was built from scratch, and [[pacman]] was then coded in C. <br />
* Arch and CRUX share some guiding principles: for instance, both are architecture-optimized, minimalist and K.I.S.S.-oriented. <br />
* Both ship with ports-like systems, and, like *BSD, both provide a minimal base environment to build upon. <br />
* Arch features pacman, which handles binary system package management and works seamlessly with the [[Arch Build System]]. CRUX uses a community contributed system called prt-get, which, in combination with its own ports system, handles dependency resolution, but builds all packages from source (though the CRUX base installation is binary). <br />
* Arch officially supports x86_64 and i686 only, whereas CRUX officially offers only x86_64.<br />
*Arch uses a rolling-release system and features a large array of binary package repositories as well as the [[Arch User Repository]]. CRUX provides a more slimmed-down officially supported ports system in addition to a comparatively modest community repository.<br />
<br />
=== Slackware ===<br />
<br />
* Slackware and Arch are quite similar in that both are simple distributions focused on elegance and minimalism. <br />
<br />
* Slackware is famous for its lack of branding and completely vanilla packages, from the kernel up. Arch typically applies patching only to avoid severe breakage or to ensure packages will compile cleanly. <br />
<br />
* Slackware uses BSD-style init scripts, Arch uses [[systemd]]. <br />
<br />
* Arch supplies a package management system in [[pacman]] which, unlike Slackware's standard tools, offers automatic dependency resolution and allows for more automated system upgrades. Slackware users typically prefer their method of manual dependency resolution, citing the level of system control it grants them, as well as Slackware's excellent supply of pre-installed libraries and dependencies. <br />
<br />
* Arch is a rolling-release system. Slackware is seen as more conservative in its release cycle, preferring proven stable packages. Arch is more ''bleeding-edge'' in this respect. <br />
<br />
* Arch Linux provides many thousands of binary packages within its official repositories whereas Slackware official repositories are more modest. <br />
<br />
* Arch offers the [[Arch Build System]], an actual ports-like system and also the [[AUR]], a very large collection of PKGBUILDs contributed by users. Slackware offers a similar, though slimmer system at [http://www.slackbuilds.org slackbuilds.org] which is a semi-official repository of Slackbuilds, which are analogous to Arch PKGBUILDs. Slackware users will generally be quite comfortable with most aspects of Arch.<br />
<br />
== General ==<br />
<br />
These distributions offer a broad range of advantages and strengths, and can be made to serve most operating system uses.<br />
<br />
=== Debian GNU/Linux ===<br />
<br />
* Debian is the largest upstream Linux distribution with a bigger community and features stable, testing, and unstable branches, offering over 30,000 high quality binary packages. The available number of Arch binary packages is more modest. However, when including the AUR, the quantities are very comparable. <br />
<br />
* Debian has a more vehement stance on free software but still includes non-free software in its non-free repos. Arch is more lenient, and therefore inclusive, concerning ''non-free packages'' as defined by GNU, thereby leaving the choice to the users.<br />
<br />
* Debian's design approach focuses more on stability and stringent testing and focus based mostly on its famous "Debian social contract". Arch is focused more on the philosophy of simplicity, minimalism, and offering bleeding edge software. Arch packages are more current than Debian Stable and Testing, being more comparable to the Debian Unstable branch. <br />
<br />
* Both Debian and Arch offer well-regarded package management systems. <br />
<br />
* Arch is a rolling release, whereas Debian Stable is released with "frozen" packages. Debian unstable is rolling.<br />
<br />
* Debian is available for many architectures, including alpha, arm, hppa, i386, x86_64, ia64, m68k, mips, mipsel, powerpc, s390, and sparc, whereas Arch is officially i686 and x86_64, with community ports for arm (for Raspberry Pi for example) only. <br />
<br />
* Arch provides more expedient support for building custom, installable packages from outside sources, with a ports-like package build system. Debian does not offer a ports system, relying instead on its huge binary repositories.<br />
<br />
* The Arch installation system only offers a minimal base, transparently exposed during system configuration, whereas Debian's methods, such as the use of apt ''tasks'' to install pre-selected groups of packages, offer a more automatically configured approach as well as several alternative methods of installation. <br />
<br />
* Debian utilizes the ''SysVinit'' by default even though systemd and upstart are available for users to configure, whereas Arch uses [[systemd]] by default for overall better performance. <br />
<br />
* Arch keeps patching to a minimum, thus avoiding problems that upstream are unable to review, whereas Debian patches its packages more liberally for a wider audience.<br />
<br />
* [https://bbs.archlinux.org/viewtopic.php?id=179481 Some differences between packaging in Arch and Debian.]<br />
<br />
=== Fedora ===<br />
<br />
* Fedora is community developed, yet corporately backed by Red Hat; it is often presented as a bleeding edge testbed release system; Fedora packages and projects migrate to RHEL and some eventually become adopted by other distributions. Arch too is generally considered bleeding edge, although it is a rolling-release and does not serve as a testing branch for another distribution.<br />
<br />
* Fedora packages are RPM format, using the YUM package manager, and official graphical package tools are also available. Arch uses [[pacman]] to manage tar.xz packages and does not officially support a graphical frontend.<br />
<br />
* Fedora refuses to include MP3 media support and other non-free software in official repositories due to its dedication to free software, though third-party repositories are available for such packages. Arch is more lenient in its disposition toward MP3 and non-free software, leaving the discernment to the user.<br />
<br />
* Fedora offers many installation options including a graphical installer as well as a minimal option. Fedora "spins" also provide alternative assortments of desktop environments to choose from, each with a modest assortment of default packages. Arch, on the other hand, only provides a few scripts meant to ease the process of a minimal base system install.<br />
<br />
* Fedora has a scheduled release cycle, but officially supports discrete version upgrades with the FedUp tool. Arch is a rolling-release system.<br />
<br />
* '''The Arch Way''' focuses on simplicity, lightweight elegance and empowering the user, whereas '''Fedora Core Values''' focus on free software, community development and bleeding edge systemic innovation.<br />
<br />
* Arch features a ports system, whereas Fedora does not.<br />
<br />
* '''Both Arch and Fedora are targeted at experienced users and developers.''' Both strongly encourage their users to contribute to project development.<br />
<br />
* Fedora has earned much community recognition for integration of SELinux, GCJ compiled packages (to remove the need for Oracle's JRE), and prolific upstream contribution; Red Hat and thus, Fedora developers by extension, contribute the highest percentage of Linux kernel code as compared to any other project.<br />
<br />
* Arch Linux provides what is widely regarded as the most thorough and comprehensive distribution wiki. The Fedora wiki is used in the original sense of the word "wiki", or a way to exchange information between developers, testers and users rapidly. It is not meant to be an end-user knowledge base like Arch's. Fedora's wiki resembles an issue tracker or a corporate wiki.<br />
<br />
=== Frugalware ===<br />
<br />
* Arch is command-line oriented. <br />
<br />
* Frugalware does not support the JFS filesystem by default. <br />
<br />
* Both Arch and Frugalware are promoted as i686 optimized. <br />
<br />
* Both Arch and Frugalware could be installed as a minimal environment first and later expanded with pacman according to the user's choices and needs. <br />
<br />
* Frugalware also could be installed from a DVD, with default software choices and desktop environment chosen for the user already.<br />
<br />
* Frugalware has a scheduled release cycle. Again, Arch is more focused on simplicity, minimalism, code-correctness and bleeding edge packages within a rolling-release model.<br />
<br />
== Beginner-friendly ==<br />
<br />
Sometimes called "newbie distros", the beginner-friendly distributions share a lot of similarities, though Arch is quite different from them. Arch may be a better choice if you want to learn about GNU/Linux by building up from a very minimal base, as an installation of Arch installs very few packages in comparison. Specific differences between distributions are described below.<br />
<br />
=== Ubuntu ===<br />
<br />
* Ubuntu is an immensely popular Debian-based distribution commercially sponsored by Canonical Ltd., while Arch is an independently developed system built from scratch.<br />
<br />
* Both projects have very different goals and are targeted at a different user base. Arch is designed for users who desire a do-it-yourself approach, whereas Ubuntu provides an autoconfigured system which is meant to be more user-friendly. Arch is presented as a much more minimalist design from the base installation onward, relying heavily on the user to customize it to their own specific needs. In general, developers and tinkerers will probably like Arch better than Ubuntu, though many Arch users have started on Ubuntu and eventually migrated to Arch.<br />
<br />
* Current Ubuntu development and promotion seem to be heavily embracing the touch screen device market, whereas Arch development is more generally focused on a user-centric model which empowers its community to create customized solutions to be developed collaboratively.<br />
<br />
* Ubuntu moves between discrete releases every 6 months, whereas Arch is a rolling-release system with a new snapshot issued every month.<br />
<br />
* Arch offers a ports-like package build system, while Ubuntu does not.<br />
<br />
* The two communities differ in some ways as well. The Arch community is much smaller and is strongly encouraged to contribute to the distribution. In contrast, the Ubuntu community is relatively large and can therefore tolerate a much larger percentage of users who do not actively contribute to development, packaging, or repository maintenance.<br />
<br />
=== Mandriva ===<br />
<br />
Mandriva Linux (formerly Mandrake Linux) was created in 1998 with the goal of making GNU/Linux easy to use for everyone. It is RPM-based and uses the urpmi package manager. Again, Arch takes a simpler approach, being text-based and relying on more manual configuration and is aimed at intermediate to advanced users.<br />
<br />
=== openSUSE ===<br />
<br />
openSUSE is centered around the RPM package format and its well-regarded YaST2 GUI-driven configuration tool, which is a one-stop shop for most users' system configuration needs, including package management. Arch does not offer such a facility as it goes against [[The Arch Way]]. openSUSE, therefore, is widely regarded as more appropriate for less-experienced users, or those who want a more GUI-driven environment, auto-configuration and expected functionality out of the box.<br />
<br />
=== PCLinuxOS ===<br />
<br />
* PCLinuxOS is a popular Mandriva-based distribution providing a complete DE, designed for user-friendliness and is described as "simple", though its definition of simple is quite different than the Arch definition. Arch is designed as a simple base system to be customized from the ground up and is aimed more toward advanced users.<br />
<br />
* PCLOS uses the apt package manager as a wrapper for RPM packages. Arch uses its own independently-developed [[pacman]] package manager with ''.pkg.tar.xz'' packages. <br />
<br />
* PCLOS is very GUI-driven, provides GUI hardware configuration tools and the Synaptic package management front-end, and claims to have little or no reliance on the shell. Arch is command-line oriented and designed for more simple approaches to system configuration, management and maintenance.<br />
<br />
* PCLOS recommends 256&nbsp;MB RAM as part of its minimum system requirements. Being more lightweight, Arch can run on systems with much less system memory, requiring only 64&nbsp;MB of RAM for a base i686 install, and will run flawlessly on more modern systems.<br />
<br />
== The *BSDs ==<br />
<br />
<nowiki>*</nowiki>BSDs share a common origin and descend directly from the work done at UC Berkeley to produce a freely redistributable, free of cost, UNIX system. They are not GNU/Linux distributions, but rather, UNIX-like operating systems. Therefore, although Arch and the *BSDs share the concept of a tightly-integrated base and ports system, they are absolutely not related from a code standpoint, except for perhaps ''vi'', as Arch's ''vi'' is the original BSD ''vi'' (most *BSDs do not use the original BSD ''vi'' anymore). *BSDs were derived from the original AT&T UNIX code and have a true UNIX heritage. To learn more about the *BSD variants, visit the vendor's site.<br />
<br />
=== FreeBSD ===<br />
<br />
* Both Arch and [http://www.freebsd.org/about.html FreeBSD] offer software which can be obtained using binaries or compiled using ''ports'' systems. <br />
<br />
* Like other *BSDs, the FreeBSD base is developed fundamentally as a system designed as a whole, with each application ''ported'' over to FreeBSD and made sure to work in the process. In contrast, GNU/Linux distributions such as Arch exist as amalgams combined from many separate sources. <br />
<br />
* The FreeBSD license is generally more protective of the ''coder'', in contrast to the GPL, which favors protection of the ''code'' itself. Arch is released under the GPL. <br />
<br />
* In FreeBSD, like Arch, decisions are delegated to you, the power user. This may be the most interesting comparison to Arch since it goes head-to-head in package modernity and has a somewhat sizable, smart, active, no-nonsense community. <br />
<br />
* Both systems share many similarities and FreeBSD users will generally feel quite comfortable with most aspects of Arch.<br />
<br />
=== NetBSD ===<br />
<br />
* NetBSD is a free, secure, and highly portable UNIX-like open-source operating system available for over 50 platforms, from 64-bit Opteron machines and desktop systems to hand-held and embedded devices. Its clean design and advanced features make it excellent in both production and research environments, and it is user-supported with complete source. Many applications are easily available through pkgsrc, the NetBSD Packages Collection. <br />
<br />
* Arch may not operate on the vast number of devices NetBSD operates on, but for an i686 system it may offer more applications. <br />
<br />
* NetBSD's pkgsrc provides a source based method of installation similar to Arch's ABS; however binary packages are also available using ''pkg_tools''. <br />
<br />
* Arch does share similarities with NetBSD: both require manual configuration, they are minimalist and lightweight, both offer ports systems as well as binaries and both have active, no-nonsense developers and communities.<br />
<br />
=== OpenBSD ===<br />
<br />
The OpenBSD project produces a free, multi-platform 4.4BSD-based UNIX-like operating system.<br />
<br />
* OpenBSD focuses on portability, standardization, code correctness, proactive security, and integrated cryptography. In contrast, Arch focuses more on simplicity, elegance, minimalism and bleeding edge software. OpenBSD is self-described as "perhaps the #1 security OS".<br />
<br />
* Both Arch and OpenBSD offer a small, elegant, base install.<br />
<br />
* Both offer a ports and packaging system to allow for easy installation and management of programs which are not part of the base operating system.<br />
<br />
* In contrast to a GNU/Linux system like Arch, but in common with most other BSD-based operating systems, the OpenBSD kernel and userland programs, such as the shell and common tools (like ''ls'', ''cp'', ''cat'' and ''ps''), are developed together in a single source repository.<br />
<br />
== See also ==<br />
* [http://distrowatch.com/ DistroWatch.com]</div>Dbboltonhttps://wiki.archlinux.org/index.php?title=Frequently_asked_questions&diff=308269Frequently asked questions2014-04-05T00:25:19Z<p>Dbbolton: /* Q) Arch needs a stable package branch - archserver.org throws as 403 error */</p>
<hr />
<div>[[Category:About Arch]]<br />
[[ar:FAQ]]<br />
[[bg:FAQ]]<br />
[[cs:FAQ]]<br />
[[da:FAQ]]<br />
[[de:FAQ]]<br />
[[es:FAQ]]<br />
[[fa:پرسش و پاسخ]]<br />
[[fr:FAQ]]<br />
[[hr:FAQ]]<br />
[[id:FAQ]]<br />
[[it:FAQ]]<br />
[[ja:FAQ]]<br />
[[ko:FAQ]]<br />
[[lt:FAQ]]<br />
[[nl:FAQ]]<br />
[[pt:FAQ]]<br />
[[ro:Întrebări frecvente]]<br />
[[ru:FAQ]]<br />
[[sk:FAQ]]<br />
[[sv:FAQ]]<br />
[[th:FAQ]]<br />
[[tr:Sss]]<br />
[[zh-CN:FAQ]]<br />
[[zh-TW:FAQ]]<br />
Besides the questions covered below, you may find [[The Arch Way]] and [[Arch Linux]] helpful. Both articles contain a good deal of information about Arch Linux.<br />
<br />
== General ==<br />
<br />
===Q) What is Arch Linux?===<br />
'''A)''' See the article entitled [[Arch Linux]].<br />
<br />
===Q) Why would I want to use Arch?===<br />
'''A)''' If, after reading about the [[The Arch Way]] philosophy, you wish to embrace the 'do-it-yourself' approach and require or desire a simple, elegant, highly customizable, bleeding edge, general purpose GNU/Linux distribution, you may like Arch.<br />
<br />
===Q) Why would I not want to use Arch?===<br />
'''A)''' You may '''not''' want to use Arch, if:<br />
<br />
* after reading [[The Arch Way]], you disagree with the philosophy.<br />
* you do not have the ability/time/desire for a 'do-it-yourself' GNU/Linux distribution.<br />
* you require support for an architecture other than x86_64 or i686.<br />
* you take a strong stand on using a distribution which only provides free software as defined by GNU.<br />
* you believe an operating system should configure itself, run out of the box, and include a complete default set of software and desktop environment on the installation media.<br />
* you do not want a bleeding edge, rolling release GNU/Linux distribution.<br />
* you are happy with your current OS.<br />
* you want an OS that targets a different userbase.<br />
* you are not insane enough to run an OS developed by Allan<br />
<br />
===Q) What distribution is Arch based on?===<br />
'''A)''' Arch is independently developed, was built from scratch and is not based on any other GNU/Linux distribution. Before creating Arch, Judd Vinet admired and used CRUX, a great, minimalist distribution created by Per Lidén. Originally inspired by ideas in common with CRUX, Arch was built from scratch, and pacman was then coded in C.<br />
<br />
===Q) I am a complete GNU/Linux beginner. Should I use Arch?===<br />
'''A)''' This question has had much debate. Arch is targeted more towards advanced GNU/Linux users, but some people feel that Arch is a good place to start for the motivated novice. If you are a beginner and want to use Arch, just be warned that you must be willing to invest significant time into learning a new system, as well as accept the fact that Arch is fundamentally designed as a DIY (Do-It-Yourself) distribution. It is the user who assembles the system and controls what it will become. Before asking for help, do your own independent research by Googling, searching the forum (and reading the rest of these FAQs) and searching the superb documentation provided by the Arch Wiki. ''There is a reason these resources were made available to you in the first place.'' Many thousands of ''volunteered'' hours have been spent compiling this excellent information.<br />
<br />
Recommended reading: The Arch Linux [[Beginners' guide]].<br />
<br />
===Q) Arch requires too much time and effort to install and use. Also, the community keeps telling me to RTFM in so many words===<br />
'''A)''' Arch is designed for and used by a specifically targeted user base. Perhaps it is not right for you. See [[#Q)_I_am_a_complete_GNU/Linux_beginner._Should_I_use_Arch?|above]].<br />
<br />
===Q) Is Arch designed to be used as a server? A desktop? A workstation?===<br />
'''A)''' Arch is not designed for any particular type of use. Rather, it is designed for a particular type of ''user''. Arch targets competent users who enjoy its do-it-yourself nature, and who further exploit it to shape the system to fit their unique needs. Therefore, in the hands of its target user base, Arch can be used for virtually any purpose. Many use Arch on both their desktops and workstations. And of course, archlinux.org runs on Arch.<br />
<br />
===Q) I really like Arch, except the development team needs to implement ''"feature X"''===<br />
'''A)''' Before going further, did you read [[The Arch Way]]? Have you provided the feature/solution? Does it conform to the Arch philosophy of ''minimalism'' and ''code-correctness over convenience''? Get involved, contribute your code/solution to the community. If it is well regarded by the community and development team, perhaps it will be merged. The Arch community thrives on contribution and sharing of code and tools.<br />
<br />
===Q) When will the new release be made available?===<br />
'''A)''' Arch Linux releases are simply a snapshot of the [core] repository, and are issued usually in the first half of every month.<br />
<br />
The rolling release model keeps every Arch Linux system current and on the bleeding edge by issuing one command. For this reason, releases are not terribly important in Arch, because they become out of date as soon as a package has been updated. If you are looking to obtain the latest Arch Linux release, you do not need to reinstall. You simply run the {{ic|pacman -Syu}} command, and your system will be identical to what you would get with a brand-new install. For this same reason, new Arch Linux releases are not typically full of new and exciting features. New and exciting features are released as needed with the packages that are updated, and can be obtained immediately via {{ic|pacman -Syu}}.<br />
<br />
===Q) Is Arch Linux a stable distribution? Will I get frequent breakage?===<br />
'''A)''' The short answer is: It is largely as stable as ''you'' make it.<br />
<br />
''You'' assemble your own Arch system, atop the simple base environment, and ''you'' control system upgrades. Obviously, a larger, more complicated system incorporating multitudes of customized packages, and a plethora of toolkits and desktop environments would be more likely to experience configuration problems due to upstream changes than a slimmer, more simple system would. Arch is targeted at capable, proactive users. General UNIX competence and good system maintenance and upgrade practices also play a large role in system stability. Also recall that Arch packages are predominantly unpatched, so most application problems are inherently upstream.<br />
<br />
Therefore, it is ''the user'' who is ultimately responsible for the stability of his own rolling release system. The user decides when to upgrade, and merges necessary changes when required. If the user reaches out to the community for help, it is often provided in a timely manner. The difference between Arch and other distributions in this regard is that Arch is truly a 'do-it-yourself' distribution; complaints of breakage are misguided and unproductive, since upstream changes are not the responsibility of Arch devs.<br />
<br />
===Q) Arch needs more press (i.e. advertisement)===<br />
'''A)''' Arch gets plenty of press as it is. The goal of Arch Linux is not to be large, but rather, to provide an elegant, minimalist and bleeding edge distribution focused on simplicity and code-correctness. Organic, sustainable growth occurs naturally amongst the target user base.<br />
<br />
===Q) Arch needs more developers===<br />
'''A)''' Possibly so. Feel free to volunteer your time! Visit the [https://bbs.archlinux.org forums], [[IRC_Channel|IRC channels]], and [https://mailman.archlinux.org/mailman/listinfo/ mailing lists], and see what needs to be done. Getting involved in the Community Contributions subforum is a good way to start.<br />
<br />
===Q) Why is my internet so slow compared to other operating systems?===<br />
'''A)''' Is your network configured correctly? Have a look at [[Beginners' guide#Hostname|Hostname]] and [[Beginners' guide#Configure the network|Configure the network]] from the Beginners' Guide.<br />
<br />
Also note that Arch Linux does not come with [[Wikipedia:Traffic_shaping|traffic shaping]] enabled. Thus, it is possible that if a program on it somehow utilizes your internet connection to the full – regardless if it's over P2P or classic client-server connections – other local ones will find it clogged, resulting in severe lags and timeouts. Relief can be provided by [[firewalls]] such as Shorewall or Vuurmuur; there are also static scripts for {{Pkg|iproute2}} (such as [http://serendipity.ruwenzori.net/index.php/2008/06/01/modified-wondershaper-for-better-voip-qos this derivative] of Wondershaper), which allow shaping on the network layer.<br />
<br />
===Q) Why is Arch using all my RAM?===<br />
'''A)''' Essentially, unused RAM is wasted RAM.<br />
<br />
Many new users notice how the Linux kernel handles memory differently than they are used to. Since accessing data from RAM is much faster than from a storage drive, the kernel caches recently accessed data in memory. The cached data is only cleared when the system begins to run out of available memory and new data needs to be loaded.<br />
<br />
Perhaps the most common culprit of this confusion is the {{ic|free}} command:<br />
<br />
{{hc|$ free -m|<br />
total used free shared buffers cached<br />
Mem: 1009 741 267 0 104 359<br />
-/+ buffers/cache: 278 731<br />
Swap: 1537 0 1537}}<br />
<br />
It is important to note the {{ic|-/+ buffers/cache:}} line -- a representation of the amount of memory that is actually in "active use" and the amount of "available" memory, rather than "unused".<br />
<br />
In the above example, a laptop with 1G of total RAM appears to be using 741M of it, with naught but a few idling terminals and a web browser open! However, upon examining the emphasized line, see that only 278M of it is in "active use", and in fact 731M is "available" for new data. Apparently, 104M of that "used" memory contains buffered data and 359M contains cached data, both of which can be cleared away if needed. Only 267M of the total is truly "free" of the burden of data storage.<br />
<br />
The result of all this? Performance!<br />
<br />
See [http://www.linuxjournal.com/article/2770 this wonderful article] if your curiosity has been piqued! There's also a website dedicated to clearing this confusion: http://www.linuxatemyram.com/<br />
<br />
===Q) Where did all my free space go?===<br />
'''A)''' The answer to this question depends on your system. There are some [[Common Applications#Disk usage display programs|fine utilities]] that may help you find the answer.<br />
<br />
== Package Management ==<br />
<br />
===Q) In which package is X?===<br />
'''A)''' You can find out with [[pkgfile]].<br />
<br />
For example:<br />
<br />
$ pkgfile ''file_name''<br />
<br />
===Q) I've found an error with Package X. What should I do?===<br />
'''A)''' First, you need to figure out if this error is something the Arch team can fix. Sometimes it's not (e.g. Firefox crashes may be the fault of the Mozilla team); this is called an ''upstream error''. If it is an Arch problem, there is a series of steps you can take:<br />
<br />
# Search the forums for information. See if anyone else has noticed it.<br />
# Post a [[Reporting Bug Guidelines|bug report]] with detailed information at https://bugs.archlinux.org.<br />
# If you'd like, write a forum post detailing the problem and the fact that you have reported it already. This will help prevent a lot of people from reporting the same error.<br />
<br />
===Q) Arch packages need to use a unique naming convention. ".pkg.tar.gz" and ".pkg.tar.xz" are too long and/or confusing===<br />
'''A)''' This has been discussed on the Arch mailing list. Some proposed a {{ic|.pac}} file extension. As far as is currently known, there is no plan to change the package extension. As Tobias Kieslich, one of the Arch devs, put it, "''A package '''is''' a gzipped'' [xz] ''tarball! And it can be opened, investigated and manipulated by any tar-capable application. Moreover, the mime-type is automatically detected correctly by most applications.''"<br />
<br />
===Q) Pacman needs a library so other applications can easily access package information===<br />
'''A)''' Since version 3.0.0, pacman has been the front-end to libalpm, the "Arch Linux Package Management" library. This library allows alternative front-ends to be written (for instance, a GUI front-end).<br />
<br />
===Q) Why doesn't pacman have an official GUI front-end?===<br />
'''A)''' Please read [[The Arch Way]] and [[Arch Linux]]. Basically, the answer is that the Arch dev team will not be providing one. Feel free to use one developed by other users. A selective list can be found in [[Pacman GUI Frontends]].<br />
<br />
===Q) Pacman needs ''"feature X"!''===<br />
'''A)''' Please read [[The Arch Way]] and [[Arch Linux]]. The Arch philosophy is "Keep It Simple". If you think the idea has merit, and does not violate this simple litany, then you may choose to discuss it on the forum [https://bbs.archlinux.org/ here]. You might also like to check [https://bugs.archlinux.org here]; it is a place for feature requests if you find it is important.<br />
<br />
However, the best way to get a feature added to pacman or Arch Linux is to implement it yourself. The patch or code may or may not be officially accepted, but perhaps others will appreciate, test and contribute to your effort.<br />
<br />
===Q) Arch needs a stable package branch===<br />
'''A)''' Check out [http://www.archserver.org/ ArchServer]{{dead link|2014|04|04}}.<br />
<br />
===Q) What is the difference between all these repositories?===<br />
'''A)''' See [[Official repositories]].<br />
<br />
===Q) I just installed Package X. How do I start it?===<br />
'''A)''' If you're using a desktop environment like [[KDE]] or [[GNOME]], the program should automatically show up in your menu. If you're trying to run the program from a terminal and do not know the binary name, use:<br />
<br />
$ pacman -Qlq ''package_name'' | grep /usr/bin/<br />
<br />
===Q) Why is there only a single version of each shared library in the official repositories?===<br />
'''A)''' Several distributions, such as Debian, have different versions of shared libraries packaged as different packages: {{ic|libfoo1}}, {{ic|libfoo2}}, {{ic|libfoo3}} and so on. In this way it is possible to have apps compiled against different versions of {{ic|libfoo}} installed on the same system.<br />
<br />
Unlike Debian, Arch is a rolling-release cutting-edge distribution. The most visible trait of a cutting-edge distribution is availability of the latest versions of software in the repositories; in case of a distribution like Arch, it also means that only the latest versions of all packages are officially supported. By dropping support for outdated software, package maintainers are able to spend more time ensuring that the newest versions work as expected. As soon as a new version of a shared library becomes available from upstream, it is added to the repositories and affected packages are rebuilt to utilize the new version.<br />
<br />
===Q) What if I run "pacman -Syu" and there will be an update for a shared library, but not for the apps that depend on it?===<br />
'''A)''' This scenario should not happen at all. Assuming an application called {{ic|foobaz}} is in one of the official repositories and builds successfully against a new version of a shared library called {{ic|libbaz}}, it will be updated along with {{ic|libbaz}}. If, however, it doesn't build successfully, {{ic|foobaz}} package will have a versioned dependency (e.g. ''libbaz 1.5''), and will be removed by pacman during {{ic|libbaz}} upgrade, due to a conflict.<br />
<br />
If {{ic|foobaz}} is a package that you built yourself and installed from AUR, you should try rebuilding {{ic|foobaz}} against the new version of {{ic|libbaz}}. If the build fails, report the bug to the {{ic|foobaz}} developers.<br />
<br />
===Q) Is it possible that there's a major kernel update in the repository, and that some of the driver packages haven't been updated?===<br />
'''A)''' No, it is not possible. Major kernel updates (e.g. ''linux 3.5.0-1'' to ''linux 3.6.0-1'') are always accompanied by rebuilds of all supported kernel driver packages. On the other hand, if you have an unsupported driver package installed on your system, such as {{AUR|catalyst}}, then a kernel update might break things for you if you do not rebuild it for the new kernel. Users are responsible for updating any unsupported driver packages that they have installed.<br />
<br />
===Q) Does Arch use package signing?===<br />
'''A)''' Yes. Package signing in [[pacman]] has been implemented since version 4. See [[package signing]] for more information.<br />
<br />
===Q) What to do before upgrading?===<br />
'''A)''' It is important in Arch Linux, before upgrading to "Check the front page [https://www.archlinux.org/ Arch news], [https://mailman.archlinux.org/mailman/listinfo/arch-announce/ Announcement lists], and optionally the [https://bbs.archlinux.org/ forum] and [https://mailman.archlinux.org/mailman/listinfo/ Mailing Lists], before hitting enter." Any special instructions will be posted there.<br />
<br />
== Installation ==<br />
<br />
===Q) Arch needs an installer. Maybe a GUI installer?===<br />
'''A)''' Since installation doesn't occur often (read the rest of this article to know more about what ''rolling release'' means), it is not a high priority for developers or users. The [[Installation guide]] and [[Beginners' guide]] have been fully updated to use the command-line method. If you're still interested in using an installer, consider using [[Archboot]].<br />
<br />
===Q) I installed Arch, and now I am at a shell! What now?===<br />
'''A)''' Have a look at the Arch Linux [[Beginners' guide#Post-installation]].<br />
<br />
===Q) Which desktop environment or window manager should I use?===<br />
'''A)''' Since many are available to you, use the one you like the most to fit your needs. Have a look at the [[Desktop environment]] and [[Window manager]] articles.<br />
<br />
===Q) What makes Arch unique amongst other "minimal" distributions?===<br />
'''A)''' Some distributions may provide minimal installation methods, sharing some similarities to the Arch installation process. However, a few points must be noted:<br />
<br />
# Arch has been ''fundamentally designed'' as a lightweight, minimal base environment upon which to build.<br />
# The ''only'' way to install Arch is by building up from this minimal base.<br />
# The base system and the entire distribution are inherently a K.I.S.S. design approach, which makes it uniquely suitable for its target base of users.<br />
# Installing services and packages requires manual, interactive user configuration. Unlike other distributions which automatically configure services and startup behavior, the Arch philosophy puts emphasis on the power user's competence and prerogative to handle such responsibilities.<br />
# Arch packaging is designed to be minimal, and ''optional'' package dependencies are never automatically installed. Rather, the user is simply notified of their existence during package installation, resulting in a slimmer system.<br />
# Arch provides excellent, thorough documentation, aiding in the process of system assembly.<br />
<br />
== Other ==<br />
<br />
===Q) What is this AUR thing I keep hearing about?===<br />
'''A)''' See [[Arch User Repository#FAQ]].<br />
<br />
===Q) Why do I get a green screen whenever I try to watch a video?===<br />
'''A)''' Your color depth is set wrong. It may need to be 24 instead of 16, for example.<br />
<br />
===Q) Spellcheck is marking all of my text as incorrect!===<br />
'''A)''' Have you installed an {{Pkg|aspell}} dictionary? Use {{ic|pacman -Ss aspell}} to see available dictionaries for downloading.<br />
<br />
If installing the dictionary files did not resolve the problem, it is most likely a problem with {{ic|enchant}}. Check for known dictionary files:<br />
<br />
{{hc|$ aspell dicts|<br />
en<br />
en_GB<br />
...etc}}<br />
<br />
If your respective language dictionary is listed, add it to {{ic|/usr/share/enchant/enchant.ordering}}. From the above example, it would be:<br />
<br />
en_GB:aspell</div>Dbboltonhttps://wiki.archlinux.org/index.php?title=E4rat&diff=308062E4rat2014-04-03T07:42:18Z<p>Dbbolton: /* Installation */</p>
<hr />
<div>[[Category:Boot process]]<br />
[[es:E4rat]]<br />
[[ru:E4rat]]<br />
[[zh-CN:E4rat]]<br />
{{Related articles start}}<br />
{{Related|Improve boot performance}}<br />
{{Related|Preload}}<br />
{{Related|Ureadahead}}<br />
{{Related|Ext4}}<br />
{{Related articles end}}<br />
<br />
[http://e4rat.sourceforge.net/ e4rat] stands for e4 'reduced access time' (ext4 file system only) and is a project by Andreas Rid and Gundolf Kiefer. The [http://e4rat.sourceforge.net/ e4rat range of tools] are comprised of e4rat-collect, e4rat-realloc and e4rat-preload.<br />
<br />
Current version is 0.2.3<br />
<br />
== Process ==<br />
<br />
If you look at a classical [[bootchart]] you will notice that neither disk nor CPU are utilized fully during the boot process. e4rat changes this to make full use of both disk and CPU during boot process and thus reduce boot time drastically. It consists of three stages:<br />
* '''e4rat-collect''' - collect files for a specified time (default 120 seconds but this can be adjusted)<br />
* '''e4rat-realloc''' - reallocate files<br />
* '''e4rat-preload''' - preload them<br />
<br />
=== Who benefits, who does not ===<br />
<br />
e4rat has proven to be extremely effective for typical single user set-ups which boot straight into X, perhaps even with a number of programs open. If you have a server set-up and boot only into the CLI your boot time decrease may not be as drastic. Users of SSD drives do not benefit because there are no moving parts and thus (almost) no disk latency - [[Ureadahead]] might be worth looking at.<br />
<br />
{{Note|'''(to ureadahead users)''' The [http://e4rat.sourceforge.net/wiki/index.php/Main_Page#Ubuntu_and_ureadahead official e4rat manual] states that ureadahead conflicts with e4rat. This may be true for Ubuntu but using e4rat in conjunction with ureadahead does work on Arch Linux, although it does not speed up the boot process any further.}}<br />
<br />
It is always better to be safe than sorry. Just make backup if you cannot afford to lose data on your partition.<br />
<br />
== Installation ==<br />
<br />
Install {{AUR|e4rat}} from the [[AUR]].<br />
<br />
Note that in order to build it, you must first enable the {{ic|staticlibs}} option in {{ic|/etc/makepkg.conf}}, then build and install {{ic|audit}} from the [[ABS]]. Simply installing the default {{ic|audit}} package will result in a build error.<br />
<br />
== Getting it to work ==<br />
<br />
Now for the nitty-gritty:<br />
<br />
=== e4rat-collect ===<br />
<br />
To have e4rat collect a list of files you will need to append {{ic|1=init=/sbin/e4rat-collect}} to your [[kernel parameters]]. For example:<br />
<br />
kernel /vmlinuz-linux root=/dev/disk/by-label/ARCH init=/sbin/e4rat-collect ro 5<br />
<br />
This will only have to be done once so you may prefer to append this command on the grub command line itself.<br />
<br />
Upon booting e4rat-collect will watch your system for a default of 120 seconds. So if you boot, log into X, open your favourite browser and email client all within 2 minutes, every one of those activities is logged. To change the default of 120 seconds edit {{ic|/etc/e4rat.conf}}. To manually stop e4rat-collect type:<br />
<br />
e4rat-collect -k<br />
or<br />
pkill e4rat-collect<br />
<br />
Upon successful boot and after having waited the allotted time you should see the file {{ic|/var/lib/e4rat/startup.log}}.<br />
<br />
Do not forget to remove the e4rat-collect command from your [[Boot Loader#Configuration files|boot loader configuration file]] (not necessary if you inserted it on the grub command line).<br />
<br />
=== e4rat-realloc ===<br />
<br />
For the reallocation process change to init 1<br />
sudo init 1<br />
{{Note|Users who have switched to a pure [[systemd]] setup do not have to change [[runlevels]]. Simply login as root once ''e4rat-collect'' has finished to run the {{ic|e4rat-realloc}} utility however, switching to rescue mode in systemd with {{ic|systemctl rescue}} may allow for more inodes/blocks to be reallocated as some may not be free while in multiuser.target}} <br />
Log in as root and run:<br />
e4rat-realloc /var/lib/e4rat/startup.log<br />
This can take a while depending on how many files you have in your startup.log file.<br />
{{Note|It may be worthwhile to repeat the reallocation step multiple times before exiting or rebooting in order to further reduce the fragmentation count. Simply re-run the command a few times to see if this is possible on the your setup. If so you'll see the count number reduced after a few runs. This is perfectly safe and shouldn't cause any issues with booting.}}<br />
<br />
=== e4rat-preload ===<br />
<br />
Append {{ic|1=init=/sbin/e4rat-preload}} permanently to your [[kernel parameters]].<br />
<br />
=== Alternative: e4rat-preload-lite ===<br />
<br />
An alternative preload binary has been developed by [https://bbs.archlinux.org/viewtopic.php?id=117776&p=1 jlindgren], it saves a few extra seconds from your boot time.<br />
<br />
The savings come from<br />
* using pure C with no external library dependencies, which drops the number of linked .so files from 22 to 3<br />
{{Note|Current [0.2.3] version of e4rat-preload is linked against 5 .so libraries, including libc, libm, libpthread ! So there is not much of a difference here.}}<br />
* preloading only the first 100 files (both inodes and file contents) before starting /sbin/init, then continuing to load the remaining files in parallel with the normal boot sequence.<br />
<br />
You can install {{AUR|e4rat-preload-lite}} from the [[AUR]].<br />
<br />
Append (or replace) {{ic|1=init=/usr/sbin/e4rat-preload-lite}} permanently to your [[kernel parameters]]. Reboot and enjoy.<br />
<br />
== e4rat and init systems ==<br />
<br />
e4rat-collect defaults to replacing itself with {{ic|/sbin/init}} upon completion. If you need to specify another process with PID 1, such as '''/usr/lib/systemd/systemd''', you can change this in {{ic|/etc/e4rat.conf}} by setting the ''init'' parameter:<br />
init /usr/lib/systemd/systemd <br />
<br />
This allows to launch both e4rat-preload and bootchart in the same boot sequence.<br />
<br />
== Bootchart ==<br />
<br />
{{Warning|This has not worked for and is still in development - any suggestions welcome}}<br />
<br />
You will see a noticeable improvement but nothing can beat a nice [[Bootchart]]. Have it run before and after e4rat installation and gawk at the difference.<br />
<br />
=== bootchart 0.9-9 ===<br />
<br />
This version of [[bootchart]] automatically stops logging as soon as a [[display manager]] comes up. Supposedly the following overrides that and continues logging but it does not work for me:<br />
<br />
To continue logging adjust your {{ic|/etc/bootchartd.conf}} as follows:<br />
<br />
AUTO_STOP_LOGGER="no"<br />
<br />
To stop it manually type:<br />
<br />
# bootchartd stop<br />
<br />
To run both e4rat-preload and bootchart append the following to your grub kernel line:<br />
<br />
init=/sbin/bootchartd bootchart_init=/sbin/e4rat-preload<br />
<br />
=== bootchart2 ===<br />
<br />
To get [[bootchart]]2 working together with e4rat edit {{ic|/sbin/bootchartd}} and replace the line where it says <br />
init="/sbin/init"<br />
with<br />
init="/sbin/e4rat-preload"<br />
This will allow you to measure your boot time with the fine informations that Bootchart2 provides.<br />
<br />
It's easy to set up when to stop bootchart2 (on opposite to bootchat) by editing its configuration file {{ic|/etc/bootchartd.conf}}. Simply adjust the line<br />
<br />
EXIT_PROC="kdm_greet xterm konsole gnome-terminal metacity mutter compiz ldm icewm-session enlightenment"<br />
<br />
with any program you want Bootchart2 stop logging when it launches, or rather left it empty for logging to be stopped manually.<br />
<br />
== Troubleshooting ==<br />
<br />
If things do not work you may want to try the following.<br />
<br />
=== startup.log is not created ===<br />
<br />
* Disable auditd service<br />
* Check the following for any hints<br />
dmesg | grep e4rat<br />
* Try to increase verbosity and loglevel to 31 in your {{ic|e4rat.conf}}<br />
<br />
===e4rat erroneously reports an ext2 files system===<br />
<br />
Add {{ic|1=rootfstype=ext4}} to [[kernel parameters]] from your bootloader.<br />
<br />
=== /var/lib/e4rat/startup.log is not accessible ===<br />
<br />
This suggests that you have {{ic|/var}} on a separate partition which is not yet mounted during boot. You need move your {{ic|startup.log}} to an accessible partition ({{ic|/etc/e4rat/}} is just fine) and adjust your {{ic|/etc/e4rat.conf}} to reflect this change:<br />
startup_log_file /etc/e4rat/startup.log<br />
<br />
=== Remove annoying message that mess up boot message ===<br />
If you are annoyed by the e4rat-preload message during boot, decrease verbose to 1 in {{ic|/etc/e4rat.conf}}<br />
<br />
== See also ==<br />
<br />
* [https://bbs.archlinux.org/viewtopic.php?id=115976 Main discussion on the forum]<br />
* [https://bbs.archlinux.org/viewtopic.php?id=117776 Improved e4rat-preload - forum thread]</div>Dbboltonhttps://wiki.archlinux.org/index.php?title=Openbox&diff=308044Openbox2014-04-02T22:43:31Z<p>Dbbolton: /* GTK+ 2 */</p>
<hr />
<div>[[Category:Stacking WMs]]<br />
[[cs:Openbox]]<br />
[[de:Openbox]]<br />
[[es:Openbox]]<br />
[[fr:Openbox]]<br />
[[it:Openbox]]<br />
[[ja:Openbox]]<br />
[[ko:Openbox]]<br />
[[lt:Openbox]]<br />
[[nl:Openbox]]<br />
[[pl:Openbox]]<br />
[[ru:Openbox]]<br />
[[sk:Openbox]]<br />
[[sr:Openbox]]<br />
[[tr:Openbox]]<br />
[[zh-CN:Openbox]]<br />
[[zh-TW:Openbox]]<br />
{{Related articles start}}<br />
{{Related|Desktop environment}}<br />
{{Related|Display manager}}<br />
{{Related|File manager functionality}}<br />
{{Related|Window manager}}<br />
{{Related|Oblogout}}<br />
{{Related articles end}}<br />
<br />
Openbox is a lightweight, powerful, and highly configurable ''stacking'' [[Window manager|window manager]] with extensive standards support. It may be built upon and run independently as the basis of a unique [[desktop environment]], or within other integrated desktop environments such as [[KDE]] and [[Xfce]], as an alternative to the window managers they provide. The [[LXDE]] desktop environment is itself built around Openbox.<br />
<br />
A comprehensive list of features are documented at the [http://openbox.org/ official Openbox website]. This article pertains to specifically installing Openbox under Arch Linux.<br />
<br />
== Installation ==<br />
<br />
Install {{Pkg|openbox}}, available in the [[official repositories]].<br />
<br />
== Openbox Sessions ==<br />
<br />
Again, Openbox may be run independently as a standalone window manager, or within other integrated desktop environments such as [[KDE]] and [[XFCE]] as an alternative to the window managers they provide.<br />
<br />
=== Standalone ===<br />
<br />
Many popular [[Display manager|display managers]] such as [[LXDM]], [[SLiM]], and [[LightDM]] will automatically detect Openbox, allowing for it to be run as a standalone session.<br />
<br />
However, it may be necessary to manually specify the command to start an openbox session where intending to set it as a default session for [[SLiM]], or where not using a display manager at all (e.g. logging in at the command line, followed by the command {{ic|startx}}). In either instance, it will be necessary to modify the [[Xinitrc]] file in order to add the following command:<br />
<br />
exec openbox-session<br />
<br />
=== Within other desktop environments ===<br />
<br />
When replacing the native window manager of a desktop environment with Openbox, any desktop compositing effects - such a transparency - provided by that native window manager will be lost. This is because Openbox itself does not provide any compositing functionality. However, it is easily possible to use a separate compositing program to [[Openbox#Compositing effects|re-enable compositing]]. <br />
<br />
==== GNOME ====<br />
<br />
Openbox does not seem to work with [[GNOME|GNOME 3]]. The {{ic|Gnome-Shell}} touch-style interface requires both its native window manager and its native gtk-window-decorator packages to function. Furthermore, attempting to run Openbox within the {{ic|Classic-Gnome-Shell}} interface results in the loss of the {{ic|gnome-panel}}. Ceasing Openbox and attempting to restore the native window manager will result in crashing the desktop. Gnome 3 is tightly integrated, and is therefore deliberately designed not to be modular in nature (i.e. allowing components to be changed).<br />
<br />
==== KDE ====<br />
See the [[KDE#Using Openbox in KDE|using Openbox in KDE]] section of the main [[KDE]] article.<br />
<br />
==== Xfce ====<br />
<br />
See the [[Xfce#Replacing_the_native_window_manager|replacing the native window manager]] section of the main [[Xfce]] article.<br />
<br />
== System configuration==<br />
<br />
Those installing Openbox - particularly as a stand-alone Window Manager - will have noticed that several elements may fail to work properly, or even work at all. Examples of the common problems encountered are:<br />
<br />
* '''File Managers''': Other partitions are not displayed or accessible. The trash function - where provided - does not work <br />
* '''Authentication''': Passwords are not stored / remembered during sessions<br />
* '''Secure Shell (SSH)''': SSH agent will not start<br />
* '''Wireless Connection''': Instant failure when attempting to connect to wifi (related to authentication) <br />
* '''Themes''': Application windows are mismatched or haphazard-looking<br />
* '''Folders''': Expected folders such as {{ic|Documents}}, {{ic|Downloads}} and so forth are missing from the {{ic|Home}} folder<br />
* '''System Tray''': Installed packages fail to autostart or can be seen running twice<br />
<br />
Most of these problems are actually the result of [[Dbus]] and [[GTK]] issues, both of which can be fixed simultaneously by editing the [[xprofile|~/.xprofile]] file - or if using [[SLiM]] as a [[display manager]] instead - by editing the [[xinitrc|~/.xinitrc]] file. It will also be necessary to install some key packages to ensure full functionality.<br />
<br />
=== D-Bus ===<br />
<br />
File manager, authentication, SSH agent, and WiFi-connection problems will likely be due to that [[D-Bus]] is not functioning correctly. Most [[display manager]]s such as [[GDM]], [[KDM]], [[LightDM]] and [[LXDM]] will handle this for you.<br />
<br />
When using [[xinit]] or certain other DMs (such as [[XDM]] and [[SLiM]]), make sure {{ic|~/.xinitrc}} is based on {{ic|/etc/skel/.xinitrc}} (so that it sources {{ic|/etc/X11/xinit/xinitrc.d/}}, see [[xinitrc]] for more information).<br />
<br />
=== GTK+ 2 ===<br />
<br />
Problems with the theme and look will likely be due to the absence of the appropriate command to ensure that a uniform look must be applied to applications that use GTK 2. Again, edit {{ic|~/.xinitrc}} and/or {{ic|~/.xprofile}} with the following command:<br />
<br />
export GTK2_RC_FILES="$HOME/.gtkrc-2.0" <br />
<br />
The {{ic|~/.gtkrc-2.0}} file will be automatically generated where using [[LXDE|lxappearance]] to set themes.<br />
<br />
It will also be necessary to install {{Pkg|libgnomeui}} to ensure that [[Qt]] is also able to find GTK themes.<br />
<br />
====Manual configuration====<br />
<br />
First, set your {{ic|~/.gtkrc-2.0}} to include {{ic|~/.gtkrc.mine}} and edit the latter to your liking:<br />
<br />
echo 'include "'"$HOME"'/.gtkrc.mine"' > ~/.gtkrc-2.0<br />
<br />
The following is a basic example of what to put in the {{ic|~/.gtkrc.mine}} file:<br />
<br />
{{bc|<nowiki><br />
# GTK theme<br />
include "/usr/share/themes/Clearlooks/gtk-2.0/gtkrc"<br />
<br />
# Font<br />
style "myfont" {<br />
font_name = "DejaVu Sans 8"<br />
}<br />
widget_class "*" style "myfont"<br />
gtk-font-name = "DejaVu Sans 8"<br />
<br />
# Icon theme<br />
gtk-icon-theme-name = "Tango"<br />
<br />
# Toolbar style<br />
gtk-toolbar-style = GTK_TOOLBAR_ICONS</nowiki>}}<br />
<br />
Note:<br />
* The icon theme name is the name defined in the theme's index file, ''not'' the name of its directory.<br />
* Valid toolbar styles are {{ic|GTK_TOOLBAR_ICONS}}, {{ic|GTK_TOOLBAR_TEXT}}, {{ic|GTK_TOOLBAR_BOTH}}, and {{ic|GTK_TOOLBAR_BOTH_HORIZ}}.<br />
* If you edit your {{ic|.gtkrc.mine}} file, only newly started applications will display the changes.<br />
<br />
=== XDG ===<br />
<br />
In addition to sourcing the '''local''' {{ic|~/.config/openbox/autostart}} file to autostart applications, Openbox will also source {{ic|.desktop}} files automatically installed by some packages in the '''global''' {{ic|/etc/xdg/autostart}} directory. The package responsible for allowing Openbox to additionally source the {{ic|/etc/xdg/autostart}} directory is {{Pkg|python2-xdg}}. <br />
<br />
For example, where initially autostarting a package such as the [[NetworkManager|Network Manager]] applet ('''nm-applet''') locally, should {{Pkg|python2-xdg}} be installed at a later time - either explicitly or as a dependency for another package - its global XDG {{ic|.desktop}} file will then also be sourced as a consequence, resulting in seeing two icons running in the system tray. It is therefore recommended to install {{Pkg|python2-xdg}} explicitly, as this will ensure that applications that should automatically autostart when installed will do so.<br />
<br />
=== Home folders ===<br />
<br />
{{Tip|This fix will be especially helpful for those who wish to use a file manager to manage their desktop, as it will automatically create a special {{ic|~/Desktop}} directory, which will house all files and application shortcuts stored on the desktop itself.}}<br />
<br />
Where expected {{ic|Home}} folders such as {{ic|Downloads}}, {{ic|Documents}}, etc., are not present, then please review the [[Xdg user directories]] article.<br />
<br />
=== Authentication and passwords ===<br />
<br />
For authentication (e.g. WiFi passwords, etc.), it will be necessary to install the appropriate packages. They are:<br />
<br />
* {{Pkg|polkit}}: Application development toolkit for controlling system-wide privileges; see [[polkit]]<br />
* {{Pkg|lxpolkit}}: Simple policykit authentication agent for LXDE ({{Pkg|polkit-gnome}} currently does not work properly)<br />
* {{Pkg|gnome-keyring}}: store / remember passwords; see [[GNOME Keyring]]<br />
<br />
== Configuration ==<br />
<br />
{{Warning|Edit these files as the user you will be using Openbox with. Not as root!}}<br />
{{Tip|Local configuration files will always override global equivalents. These files may also be manually edited by any appropriate text editor, such as Leafpad or Geany; there is no need to use [[sudo]] or '''gksu''' commands to edit them.}}<br />
<br />
Four key files form the basis of the openbox configuration, each serving a unique role. They are: {{ic|rc.xml}}, {{ic|menu.xml}}, {{ic|autostart}}, and {{ic|environment}}. Although these files are discussed in more detail below, to start configuring Openbox, it will first be necessary to create a '''local''' Openbox profile (i.e for your specific user account) based on them. This can be done by copying them from the '''global''' {{ic|/etc/xdg/openbox}} profile (applicable to any and all users) as a template:<br />
<br />
$ mkdir -p ~/.config/openbox<br />
$ cp -R /etc/xdg/openbox/* ~/.config/openbox<br />
<br />
=== rc.xml ===<br />
<br />
{{Tip|Custom keyboard shortcuts (keybindings) must be added to the {{ic|<keyboard>}} section of this file, and underneath the {{ic|<nowiki><!-- Keybindings for running aplications --></nowiki>}} heading.}}<br />
<br />
{{ic|~/.config/openbox/rc.xml}} is the main configuration file, responsible for determining the behaviour and settings of the overall session, including:<br />
<br />
* Keyboard shortcuts (e.g. starting applications; controlling the volume)<br />
* Theming<br />
* Desktop and Virtual desktop settings, and<br />
* Application Window settings<br />
<br />
This file is also pre-configured, meaning that it will only be necessary to amend existing content in order to customise behaviour to suit personal preference.<br />
<br />
=== menu.xml ===<br />
<br />
{{ic|~/.config/openbox/menu.xml}} defines the type and behaviour of the desktop menu, accessable by right-clicking the background. Although the default provided is a '''static menu''' (meaning that it will not automatically update when new applications are installed), it is possible to employ the use of '''dynamic menus''' that will automatically update as well. <br />
<br />
The available options are discussed extensively below in the [[Openbox#Menus|Menus]] section.<br />
<br />
=== autostart ===<br />
<br />
{{Tip|Be aware that some applications will automatically start via {{ic|.desktop}} files installed in the {{ic|/etc/xdg/autostart/}} or {{ic|~/.config/autostart/}} directories.}}<br />
<br />
{{ic|~/.config/openbox/autostart}} determines which applications are to be launched upon beginning the Openbox session. These may include:<br />
<br />
* Panels and/or docks<br />
* Compositors<br />
* Background providers<br />
* Screensavers<br />
* Applications to autoload or autostart (e.g. [[Conky]])<br />
* [[Daemon]] processes (e.g. File Managers for automounting and other functions)<br />
* Other appropriate commands (e.g. disable [[DPMS]])<br />
<br />
==== Listing commands ====<br />
<br />
There are two very important points to note when adding commands to the {{ic|~/.config/openbox/autostart}} file:<br />
<br />
* Each and every command '''must''' be terminated with an ampersand ({{ic|&}}). Where a command does not end with an ampersand, then no further commands listed below it will be executed.<br />
* It is strongly recommended to add delays to the execution of some or all commands in the autostart file, even if only by a single second. The consequence of not doing so is that all commands will be executed simultaneously, potentially resulting in the mis- or non-starting of items. The syntax of the command to delay the execution of commands (in seconds) is:<br />
<br />
(sleep <number of seconds>s && <command>) &<br />
<br />
For example, to delay the execution of [[Conky]] by 3 seconds, the command would be (and note the termination of it with an ampersand):<br />
<br />
(sleep 3s && conky) &<br />
<br />
Here is a more complete example of a possible {{ic|~/.config/openbox/autostart}} file:<br />
<br />
## Autostart File ##<br />
<br />
##Disable DPMS<br />
xset -dpms; xset s off &<br />
<br />
##Compositor<br />
compton -CGb &<br />
<br />
##Background<br />
(sleep 1s && nitrogen --restore) &<br />
<br />
##tint2 panel<br />
(sleep 1s && tint2) &<br />
<br />
##Sound Icon<br />
(sleep 1s && volumeicon) &<br />
<br />
##Screensaver<br />
(sleep 1s && xscreensaver -no-splash) &<br />
<br />
##Conky<br />
(sleep 3s && conky) &<br />
<br />
##Disable touchpad<br />
/user/bin/synclient TouchpadOff=1 &<br />
<br />
=== environment ===<br />
<br />
{{Note|This is the least important file, and many users may not need to edit it at all.}}<br />
<br />
{{ic|~/.config/openbox/environment}} can be used to export and set relevant environmental variables such as to:<br />
<br />
* Define new pathways (e.g. execute commands that would otherwise require the entire pathway to be listed with them)<br />
* Change language settings, and<br />
* Define other variables to be used (e.g. the fix for GTK theming could be listed here)<br />
<br />
=== Optional GUI configuration packages ===<br />
<br />
Several GUIs are available to quickly and easily configure your Openbox desktop. From the official repositories these include:<br />
<br />
* {{Pkg|obconf}}: Basic Openbox configuration manager<br />
* {{Pkg|lxappearance-obconf}}: LXDE configuration manager (provides additional options)<br />
* {{Pkg|lxinput}}: LXDE keyboard and mouse configuration<br />
* {{Pkg|lxrandr}}: LXDE monitor configuration<br />
<br />
Others, such as {{AUR|obkey}} (configure keyboard shortcuts via the {{ic|rc.xml}} file) and {{AUR|ob-autostart}} (configure the Openbox {{ic|autostart}} file) are available from the [[AUR]]. Programs and applications relating to the configuration of Openbox's desktop menu are discussed in the [[Openbox#Menus|Menus]] section.<br />
<br />
== Openbox reconfiguration ==<br />
<br />
{{Tip|where not already present, it would be worthwhile adding this command to a menu and/or as a keybind for convenience.}}<br />
<br />
Openbox will not always automatically reflect any changes made to its configuration files within a session. As a consequence, it will be necessary to manually reload those files after they have been edited. To do so, enter the following command:<br />
<br />
$ openbox --reconfigure<br />
<br />
Where intending to add this command as a keybinnd to {{ic|~/.config/openbox/rc.xml}}, it will only be necessary to list the command as {{ic|reconfigure}}. An example has been provided below, using the {{ic|Super}}+{{ic|F11}} keybind:<br />
<br />
<keybind key="W-F11"><br />
<action name="Reconfigure"/><br />
</keybind><br />
<br />
== Keybinds ==<br />
<br />
All keybinds must be added to the {{ic|~/.config/openbox/rc.xml}} file, and below the {{ic|<nowiki><!-- Keybindings for running aplications --></nowiki>}} heading. Although a brief overview has been provided here, a more in-depth explanation of keybindings can be found at [http://openbox.org/wiki/Help:Bindings openbox.org]. There is a utility 'obkey' in AUR for adjust key-binding. Before use obkey, you should use obconf to create {{ic|~/.config/openbox/rc.xml}}.<br />
<br />
=== Special keys ===<br />
<br />
While the use of standard alpha-numeric keys for keybindings is self-explanatory, special names are assigned to other types of keys, such as {{ic|modifers}}, {{ic|multimedia}} keys and {{ic|navigation}} keys.<br />
<br />
==== Modifiers ====<br />
<br />
{{ic|Modifer}} keys play an important role in keybindings (e.g. holding down the {{ic|shift}} or {{ic|CTRL / control}} key in combination with another key to undertake an action). Using modifers helps to prevent conflicting keybinds, whereby two or more actions are linked to the same key or combination of keys. The syntax to use a modifer with another key is:<br />
<br />
"<modifier>-<key>"<br />
<br />
The modifer codes are as follows:<br />
<br />
* {{ic|S}}: Shift<br />
* {{ic|C}}: Control / CTRL<br />
* {{ic|A}}: Alt<br />
* {{ic|W}}: Super / Windows<br />
* {{ic|M}}: Meta<br />
* {{ic|H}}: Hyper (If it is bound to something) <br />
<br />
For example, the code below would use {{ic|super}} and {{ic|t}} to launch {{Pkg|lxterminal}}<br />
<br />
<keybind key="W-t"><br />
<action name="Execute"><br />
<command>lxterminal</command><br />
</action><br />
</keybind><br />
<br />
==== Multimedia keys ====<br />
<br />
Where available, it is possible to set the appropriate {{ic|multimedia}} keys to perform their intended functions, such as to control the volume and/or the screen brightness. These will usually be integrated into the {{ic|function}} keys, and are identified by their appropriate symbols. See the [[Multimedia Keys]] article for further information.<br />
<br />
The volume and brightness multimedia codes are as follows (note that commands will still have to be assigned to them to actually function):<br />
<br />
* {{ic|XF86AudioRaiseVolume}}: Increase volume<br />
* {{ic|XF86AudioLowerVolume}}: Decrease volume<br />
* {{ic|XF86AudioMute}}: Mute / unmute volume<br />
* {{ic|XF86MonBrightnessUp}}: Increase screen brightess<br />
* {{ic|XF86MonBrightnessDown}}: Decrease screen brightness<br />
<br />
Examples of how these may be used in {{ic|~/.config/openbox/rc.xml}} have been provided below.<br />
<br />
==== Navigation keys ====<br />
<br />
These are the directional / arrow keys, usually used to move the cursor up, down, left, or right. The (self-explanatory) navigation codes are as follows:<br />
<br />
* {{ic|Up}}: Up<br />
* {{ic|Down}}: Down<br />
* {{ic|Left}}: Left<br />
* {{ic|Right}}: Right<br />
<br />
=== Volume Control ===<br />
<br />
What commands should be used for controlling the volume will depend on whether [[ALSA]], [[PulseAudio]], or [[OSS]] is used for sound.<br />
<br />
==== ALSA ====<br />
<br />
If [[ALSA]] is used for sound, the {{ic|amixer}} program can be used to adjust the volume, which is part of the {{Pkg|alsa-utils}} package. The following example - using the {{ic|multimedia}} keys intended to control the volume - will adjust the volume by +/- 5% (which may be changed, as desired):<br />
<br />
<keybind key="XF86AudioRaiseVolume"><br />
<action name="Execute"><br />
<command>amixer set Master 5%+ unmute</command><br />
</action><br />
</keybind><br />
<keybind key="XF86AudioLowerVolume"><br />
<action name="Execute"><br />
<command>amixer set Master 5%- unmute</command><br />
</action><br />
</keybind><br />
<keybind key="XF86AudioMute"><br />
<action name="Execute"><br />
<command>amixer set Master toggle</command><br />
</action><br />
</keybind><br />
<br />
==== Pulseaudio ====<br />
<br />
Where using [[PulseAudio]] with [[ALSA]] as a backend, the {{ic|amixer}} program commands will have to be modifed, as illustrated below in comparison to the ALSA example:<br />
<br />
<keybind key="XF86AudioRaiseVolume"><br />
<action name="Execute"><br />
<command>amixer -D pulse set Master 5%+ unmute</command><br />
</action><br />
</keybind><br />
<keybind key="XF86AudioLowerVolume"><br />
<action name="Execute"><br />
<command>amixer -D pulse set Master 5%- unmute</command><br />
</action><br />
</keybind><br />
<keybind key="XF86AudioMute"><br />
<action name="Execute"><br />
<command>amixer set Master toggle</command><br />
</action><br />
</keybind><br />
<br />
==== OSS ====<br />
<br />
{{Note|This option may be suitable for more experienced users.}}<br />
<br />
Where using [[OSS]], it is possible to create keybindings to raise or lower specific mixers. This allows, for example, the volume of a specific application (such as an audio player) to be changed without changing the overall system volume settings in turn. In this instance, the application must first have been [[OSS#Configuring_Applications_for_OSS|configured]] to use its own mixer. <br />
<br />
In the following example, [[MPD]] has been configured to use its own mixer - also named {{ic|mpd}} - to increase and decrease the volume by a single decibel at a time. The {{ic|--}} that appears after the {{ic|ossmix}} command has been added to prevent a negative value from being treated as an argument: <br />
<br />
<keybind key="[chosen keybind]"><br />
<action name="Execute"><br />
<command>ossmix -- mpd +1</command><br />
</action><br />
</keybind><br />
<keybind key="[chosen keybind]"><br />
<action name="Execute"><br />
<command>ossmix -- mpd -1</command><br />
</action><br />
</keybind><br />
<br />
=== Brightness control ===<br />
<br />
The {{ic|xbacklight}} program is used to control screen brightness, which is part of the [[Xorg]] X-Window system. In the example below, the {{ic|multimedia}} keys intended to control the screen brightness will adjust the settings by +/- 10%:<br />
<br />
<keybind key="XF86MonBrightnessUp"><br />
<action name="Execute"><br />
<command>xbacklight +10</command><br />
</action><br />
</keybind><br />
<keybind key="XF86MonBrightnessDown"><br />
<action name="Execute"><br />
<command>xbacklight -10</command><br />
</action><br />
</keybind><br />
<br />
=== Window snapping ===<br />
<br />
Many desktop environments and window managers support ''window snapping'' (e.g. Windows 7 Aero snap), whereby they will automatically snap into place when moved to the edge of the screen. This effect can also be simulated in Openbox through the use of keybinds on focused windows. <br />
<br />
As illustrated in the example below, percentages must be used to determine window sizes (see [http://openbox.org/wiki/Help:Actions openbox.org] for further information). In this instance, The {{ic|super}} key is used in conjunction with the {{ic|navigation}} keys:<br />
<br />
<keybind key="W-Left"><br />
<action name="UnmaximizeFull"/><br />
<action name="MaximizeVert"/><br />
<action name="MoveResizeTo"><br />
<width>50%</width><br />
</action><br />
<action name="MoveToEdge"><direction>west</direction></action><br />
</keybind><br />
<keybind key="W-Right"><br />
<action name="UnmaximizeFull"/><br />
<action name="MaximizeVert"/><br />
<action name="MoveResizeTo"><br />
<width>50%</width><br />
</action><br />
<action name="MoveToEdge"><direction>east</direction></action><br />
</keybind><br />
<br />
However, it should be noted that once a window has been 'snapped' to an edge, it will remain vertically maximised unless subsequently maximised and then restored. The solution is to implement additional keybinds - in this instance using the {{ic|down}} and {{ic|up}} keys - to do so. This will also make pulling 'snapped' windows from screen edges faster as well:<br />
<br />
<keybind key="W-Down"><br />
<action name="Unmaximize"/><br />
</keybind><br />
<keybind key="W-Up"><br />
<action name="Maximize"/><br />
</keybind><br />
<br />
This [http://ubuntuforums.org/showthread.php?t=1796793 Ubuntu forum thread] provides more information. Applications such as {{AUR|opensnap-git}} are also available from the AUR to automatically simulate window snapping behaviour without the use of keybinds.<br />
<br />
=== Desktop menu ===<br />
<br />
It is also possible to create a keybind to access the desktop menu. For example, the following code will bring up the menu by pressing {{ic|CTRL}} + {{ic|m}}:<br />
<br />
<keybind key="C-m"><br />
<action name="ShowMenu"><br />
<menu>root-menu</menu><br />
</action><br />
</keybind><br />
<br />
== Menus ==<br />
<br />
It is possible to employ three types of menu in Openbox: {{ic|static}}, {{ic|pipes}} (dynamic), and {{ic|generators}} (static or dynamic). They may also be used alone or in any combination.<br />
<br />
=== Static ===<br />
<br />
As the name would suggest, this default type of menu does not change in any way, and may be manually edited and/or (re)generated automatically through the use on an appropriate software package.<br />
<br />
Fast and efficient, while this type of menu can be used to select applications, it can also be useful to access specific functions and/or perform specific tasks (e.g. desktop configuration), leaving the access of applications to another process (e.g. the {{Pkg|synapse}} or {{Pkg|xfce4-appfinder}} applications).<br />
<br />
The {{ic|~/.config/openbox/menu.xml}} file will be the sole source of static desktop menu content.<br />
<br />
==== menumaker ====<br />
<br />
{{Warning|A root terminal '''must''' be installed in order to use MenuMaker, even though a standard user terminal may be used to run it. {{Pkg|xterm}} is a good choice.}}<br />
<br />
{{Pkg|menumaker}} automatically generates {{ic|xml}} menus for several window managers, including Openbox, [[Fluxbox]], [[IceWM]] and [[XFCE]]. It will search for all installed executable programs and consequently create a menu file for them. It is also possible to configure MenuMaker to exclude certain application types (e.g. relating to [[Gnome]] or [[KDE]]), if desired.<br />
<br />
Once installed and executed, it will automatically generate a new {{ic|~/.config/openbox/menu.xml}} file. To avoid overwriting an existing file, enter:<br />
<br />
$ mmaker -v OpenBox3<br />
<br />
Otherwise, to overwrite an existing file, add the {{ic|force}} argument ({{ic|f}}):<br />
<br />
$ mmaker -vf OpenBox3<br />
<br />
Once a new {{ic|~/.config/openbox/menu.xml}} file has been generated it may then be manually edited, or configured using a GUI menu editor, such as {{Pkg|obmenu}}.<br />
<br />
==== obmenu ====<br />
<br />
{{Warning|{{ic|obm-xdg}} - a pipe menu to generate a list of [[GTK+]] and [[Gnome]] applications - is also provided with obmenu. However, it has long-running bugs whereby it may produce an invalid output, or even not function at all. Consequently it has been omitted from discussion.}}<br />
<br />
{{Pkg|obmenu}} is a "user-friendly" GUI application to edit {{ic|~/.config/openbox/menu.xml}}, without the need to code in {{ic|xml}}.<br />
<br />
==== xdg-menu ====<br />
<br />
{{Pkg|archlinux-xdg-menu}} will automatically generate a menu based on {{ic|xdg}} files contained within the {{ic|/etc/xdg/}} directory for numerous Window Managers, including Openbox. Review the [[Xdg-menu#OpenBox]] article for further information.<br />
<br />
==== logout menu options ====<br />
<br />
{{Tip|The commands provided can also be attached to [[Openbox#Keybinds|keybinds]].}}<br />
<br />
The {{ic|~/.config/openbox/menu.xml}} file can be edited in order to provide a sub-menu with the same options as provided by [[Openbox#oblogout|oblogout]]. The sample script below will provide all of these options, with the exception of the ability to lock the screen:<br />
<br />
<menu id="exit-menu" label="Exit"><br />
<item label="Log Out"><br />
<action name="Execute"><br />
<command>openbox --exit</command><br />
</action><br />
</item><br />
<item label="Shutdown"><br />
<action name="Execute"><br />
<command>systemctl poweroff</command><br />
</action><br />
</item><br />
<item label="Restart"><br />
<action name="Execute"><br />
<command>systemctl reboot</command><br />
</action><br />
</item><br />
<item label="Suspend"><br />
<action name="Execute"><br />
<command>systemctl suspend</command><br />
</action><br />
</item><br />
<item label="Hibernate"><br />
<action name="Execute"><br />
<command>systemctl hibernate</command><br />
</action><br />
</item><br />
</menu><br />
<br />
Once the entries have been composed, add the following line to present the sub-menu where desired within the main desktop menu (usually as the last entry):<br />
<br />
<menu id="exit-menu"/><br />
<br />
=== Pipes ===<br />
<br />
{{Tip|It is entirely feasible for a static menu to contain one or more pipe sub-menus. The functionality of some pipe menus may also rely on the installation of relevant software packages.}}<br />
<br />
This type of menu is in essence a script that provides dynamic, refreshed lists on-the-fly as and when run. These lists may be used for multiple purposes, including to list applications, to provide information, and to provide control functions. Pre-configured pipe menus can be installed, although not from the [[official repositories]]. More experienced users can also modify and/or create their own custom scripts. Again, {{ic|~/.config/openbox/menu.xml}} may and commonly will contain several pipe menus.<br />
<br />
==== Examples ====<br />
<br />
* {{AUR|openbox-xdgmenu}}: fast xdg-menu converter to xml-pipe-menu<br />
* {{AUR|obfilebrowser}}: Application and file browser<br />
* {{AUR|obdevicemenu}}: Management of removable media with [[Udisks#Udisks|Udisks]]<br />
* [https://bbs.archlinux.org/viewtopic.php?pid=1345031 wifi pipe menu]: Wireless networking using [[Netctl]]<br />
<br />
[http://openbox.org/download-pipemenus.php Openbox.org] also provides a further list of pipe menus.<br />
<br />
=== Generators ===<br />
<br />
This type of menu is akin to those provided by the taskbars of desktop environments such as [[XFCE]] or [[LXDE]]. Automatically updating on-the-fly, this type of menu can be powerful and very convenient. It may also be possible to add custom categories and menu entries; read the documentation for your intended dynamic menu to determine if and how this can be done.<br />
<br />
A menu generator will have to be executed from the {{ic|~/.config/openbox/menu.xml}} file.<br />
<br />
==== obmenu-generator ====<br />
<br />
{{Tip|icons can still be disabled in {{AUR|obmenu-generator}}, even where enabled in {{ic|~/.config/openbox/rc.xml}}.}}<br />
<br />
{{AUR|obmenu-generator}} is currently only available from the [[AUR]], although it is still highly recommended. With the ability to be used as a static or dynamic menu, it is highly configurable, powerful, and versatile. Menu categories and individual entries may also be easily hidden, customised, and/or added with ease. The [http://trizenx.blogspot.co.uk/2012/02/obmenu-generator.html official homepage] provides further information and screenshots.<br />
<br />
Below is an example of how obmenu-generator would be dynamically executed without icons in {{ic|~/.config/openbox/menu.xml}}:<br />
<br />
<?xml version="1.0" encoding="utf-8"?><br />
<openbox_menu><br />
<menu id="root-menu" label="OpenBox 3" execute="/usr/bin/obmenu-generator"><br />
</menu><br />
</openbox_menu><br />
<br />
To automatically iconify entries, the {{ic|-i}} option would be added:<br />
<br />
<menu id="root-menu" label="OpenBox 3" execute="/usr/bin/obmenu-generator -i"><br />
<br />
==== openbox-menu ====<br />
<br />
{{Tip|If this menu produces an error, it may be solved by enabling icons in {{ic|~/.config/openbox/rc.xml}}.}}<br />
<br />
{{Pkg|openbox-menu}} uses the [[LXDE]] [http://sourceforge.net/projects/lxde/files/menu-cache/ menu-cache] to create dynamic menus. The [http://mimasgpc.free.fr/openbox-menu_en.html official homepage] provides further information and screenshots.<br />
<br />
==== obmenugen ==== <br />
<br />
{{AUR|Obmenugen}} is currently only available from the [[AUR]], and can be used to a generate static or dynamic application menu based on {{ic|.desktop}} files. The [http://obmenugen.sourceforge.net/ official homepage] provides further information.<br />
<br />
=== Menu icons ===<br />
<br />
To show icons next to menu entries, it will be necessary to ensure they are enabled in the {{ic|<menu>}} section of the {{ic|~/.config/openbox/rc.xml}} file:<br />
<br />
<applicationIcons>yes</applicationIcons><br />
<br />
Where using a static menu, it will then be necessary to edit the {{ic|~/.config/openbox/menu.xml}} file to provide both the {{ic|icon <nowiki>=</nowiki>}} command, along with the full path and icon name for each entry. An example of the syntax used to provide an icon for a category is:<br />
<br />
<menu id="apps-menu" label="[label name]" icon="[pathway to icon]/[icon name]"><br />
<br />
=== Desktop menu as a panel menu ===<br />
<br />
{{Tip|XDoTool can simulate any keybind for any action, and as such, it may therefore be used for many other purposes...}}<br />
<br />
{{Pkg|xdotool}} is a package that can issue commands to simulate key presses / keybinds, meaning that it is possible to use it to invoke keybind-related actions without having to actually press their assigned keys. As this includes the ability to invoke an assigned keybind for the Openbox desktop menu, it is therefore possible to use XDoTool to turn the Openbox desktop menu into a panel menu. Especially where the desktop menu is heavily customised and feature-rich, this may prove very useful to:<br />
<br />
* Replace an existing panel menu<br />
* Implement a panel menu where otherwise not provided or possible (e.g. for {{AUR|tint2-svn}})<br />
* Compensate where losing access to the desktop menu due to the use of an application like [[Openbox#xfdesktop|xfdesktop]] to [[Openbox#Desktop_Icons_and_Wallpapers|manage the desktop]].<br />
<br />
Once XDoTool has been installed - if not already present - it will be necessary to create a keybind to access the root menu in {{ic|~/.config/openbox/rc.xml}}, and again below the {{ic|<nowiki><</nowiki>!-- Keybindings for running aplications --<nowiki>></nowiki>}} heading. For example, the following code will bring up the menu by pressing {{ic|CTRL}} + {{ic|m}}:<br />
<br />
<keybind key="C-m"><br />
<action name="ShowMenu"><br />
<menu>root-menu</menu><br />
</action><br />
</keybind><br />
<br />
Openbox must then be [[Openbox#Openbox_Reconfiguration|re-configured]]. In this instance, XDoTool will be used to simulate the {{ic|CTRL}} + {{ic|m}} keypress to access the desktop menu with the following command (note the use of {{ic|+}} in place of {{ic|-}}):<br />
<br />
xdotool key control+m<br />
<br />
How this command may be used as a panel launcher / icon is largely dependent on the features of panel used. While some panels will allow the above command to be executed directly in the process of creating a new launcher, others may require the use of an executable script. As an example, a custom executable script called {{ic|obpanelmenu.sh}} will be created in the {{ic|~/.config}} folder:<br />
<br />
$ ''text editor'' ~/.config/obpanelmenu.sh<br />
<br />
Once the empty file has been opened, the appropriate XDoTool command must be added to the empty file (i.e. to simulate the {{ic|CTRL}} + {{ic|m}} keypress for this example):<br />
<br />
xdotool key control+m<br />
<br />
After the file has been saved and closed, it may then be made into an executable script with the following command:<br />
<br />
$ chmod +x ~/.config/obpanelmenu.sh<br />
<br />
Executing it will bring up the Openbox desktop menu. Consequently, where using a panel that supports drag-and-drop functionality to add new launchers, simply drag the executable script onto it before changing the icon to suit personal taste. For instructions on how to use this executable script with {{AUR|tint2-svn}} - a derivative of the popular {{Pkg|tint2}} panel that allows launchers to be added - see [[Tint2#Application_Launchers_in_tint2-svn_.28AUR.29|Tint2-Svn launchers]].<br />
<br />
== GTK+ desktop theming ==<br />
<br />
{{Tip|It is '''strongly advised''' to install the {{Pkg|obconf}} and {{Pkg|lxappearance-obconf}} GUI applications to configure visual settings and theming. The latter is particularly important as it is responsible for generating the {{ic|~/.gtkrc-2.0}} file (see the [[Openbox#GTK+ 2|GTK fix]] section).}}<br />
<br />
It is important to note that a substantial range of both '''Openbox-specific''' and generalised, '''Openbox-compatible''' [[GTK]] themes are available to change the look of window decorations and the desktop menu. ''Generalised'' themes are designed to be simultaneously compatible with a range of popular desktop environments and/or window managers, commonly including Openbox. For example, {{AUR|gtk-theme-numix-blue}} supports both Openbox and [[XFCE]].<br />
<br />
=== Configuration ===<br />
<br />
{{Pkg|obconf}} and/or {{Pkg|lxappearance-obconf}} should be used to select and configure available GTK themes. See [[Uniform Look for Qt and GTK Applications]] for information about theming Qt based applications like [[Virtualbox]] or [[Skype]].<br />
<br />
=== Installation: official and AUR ===<br />
<br />
A good selection of {{Pkg|openbox-themes}} are available from the official repositories.<br />
<br />
Both Openbox-specific and Openbox-compatible themes installed from the [[Official_repositories|official repositories]] and/or the [[AUR]] will be automatically installed to the {{ic|/usr/share/themes}} directory. Both will also be immediately available for selection.<br />
<br />
=== Installation: other sources ===<br />
<br />
[http://www.box-look.org/index.php?xcontentmode=7402 box-look.org] is an excellent and well-established source of themes. [http://www.deviantart.com/ deviantART.com] is another excellent resource. Many more can be found through the utilisation of a search engine.<br />
<br />
==== Zip and tar files ====<br />
<br />
Themes downloaded from other sources such as [http://box-look.org/ box-look.org] will usually be compressed in a {{ic|.tar.gz}} or {{ic|.zip}} format. Although [[tar]] will have been installed as part of the base arch installation to extract {{ic|.tar.gz}} files, it will be necessary to install a program such as {{Pkg|unzip}} to extract {{ic|.zip}} files in the terminal. user-friendly GUI archivers are also available; see [[List_of_Applications#Compression_tools]] for further information.<br />
<br />
Extracted theme files should also be placed in the {{ic|/usr/share/themes}} directory. For example, assuming downloaded content is automatically stored in the {{ic|~/Downloads}} folder, to simultaneously extract and move a {{ic|.tar.gz}} theme file, the syntax of the command would be:<br />
<br />
# tar xvf ~/Downloads/<theme file name>.tar.gz -C /usr/share/themes/<br />
<br />
To use {{Pkg|unzip}} in the same scenario for a {{ic|.zip}} theme file, the syntax of the command would be:<br />
<br />
# unzip ~/Downloads/<theme file name>.zip -d /usr/share/themes/<br />
<br />
Alternatively, it is also possible to simply move / copy and paste the extracted files to the {{ic|/usr/share/themes}} directory using an installed file manager as '''root'''.<br />
<br />
=== Troubleshooting ===<br />
<br />
There are two particular problems that may be encountered on rare occasions, especially where downloading themes from unsupported websites. These have been addressed below.<br />
<br />
==== Theme cannot be used ====<br />
<br />
If for any reason the newly extracted theme cannot be selected, open the theme directory to first ensure that it is indeed compatible with Openbox by determining that an {{ic|openbox-3}} directory is present, and that within this directory a {{ic|themerc}} file is also present. An {{ic|.obt}} ('''O'''pen'''B'''ox '''T'''heme) file may also be present in some instances, which can then be manually loaded in {{Pkg|obconf}}.<br />
<br />
Where expected files and directories are present and correct, then on occasion it is possible that the theme author has not correctly set permission to access the file (e.g. permission may still be for the account of the author, rather than for '''root'''). To eliminate this possibility, ensure the folder and file permissions are for '''root''':<br />
<br />
# chown -R root /user/share/themes<br />
<br />
==== Theme looks broken ====<br />
<br />
Of course, the first line of enquiry would be to check that it is not just a badly made, broken theme! Otherwise, ensure that the [[Openbox#GTK+ 2|Openbox GTK fix]] has been implemented, and then re-start the session. Unfortunately some older themes can simply break if not maintained sufficiently to keep pace with the changes incurred by [[GTK]] updates. To avoid such occurrences, it is best to check that desired themes have recently been created or at least updated / patched.<br />
<br />
=== Edit or create new themes ===<br />
<br />
{{Tip|Where deciding to modify an existing theme (e.g. the colour scheme), it would be best to work on a copy of it, rather than the original. This will retain the original should anything go wrong, and ensure that your changes are not over-written through an update.}}<br />
<br />
The process of creating new or modifying existing themes is covered extensively at the official [http://openbox.org/wiki/Help:Themes openbox.org] website. A user-friendly GUI to do so - {{AUR|obtheme}} - is also available from the [[AUR]].<br />
<br />
== Compositing effects ==<br />
<br />
Openbox does not natively provide support for compositing, and it will therefore be necessary to install a compositor for this purpose. The use of compositing enables various desktop visual effects, including transparency, fading, and shadows. Although compositing is not a necessary component, it can help to provide a more pleasant-looking environment, and avoid common issues such as screen distortion when [[Openbox#Oblogout|oblogout]] is used, and visual glitches when terminal window transparency has been enabled. Three of the most common choices are:<br />
<br />
* [[Compton]]: Powerful and reliable, with extensive options<br />
* [[Xcompmgr]]: Older and simpler version of compton<br />
* [[Cairo Compmgr]]: Advanced compositing effects, plugin support, and a user-friendly GUI. Also more buggy and far heavier use of system resources.<br />
<br />
== Mouse cursor and application icon themes ==<br />
<br />
Any mouse cursor and/or application icon theme may be used with Openbox. Numerous themes are available from both the [[official repositories]] and the [[AUR]].<br />
<br />
=== xcursor themes (mouse) === <br />
<br />
{{Tip|Review the [[Xcursor]] article for an in-depth explanation.}}<br />
<br />
Standard xcursor theme packages available from the official repositories include {{Pkg|xcursor-themes}}, {{Pkg|xcursor-bluecurve}}, {{Pkg|xcursor-vanilla-dmz}}, and {{Pkg|xcursor-pinux}}. To search the official repositories for all available xcursor themes, enter the following command:<br />
<br />
$ pacman -Ss xcursor<br />
<br />
Installed x-cursor themes may then be set though using the {{Pkg|obconf}} and {{Pkg|lxappearance-obconf}} GUI applications. It may then be necessary to either log out and back in again to implement the change, or to [[Openbox#Openbox_Reconfiguration|reconfigure Openbox]].<br />
<br />
=== Application icon themes ===<br />
<br />
Standard xcursor theme packages available from the official repositories include the {{Pkg|gnome-icon-theme}} and {{Pkg|lxde-icon-theme}}. A nice icon theme currently available from the AUR is {{AUR|numix-icon-theme-git}}. To search the official repositories for all available icon themes, enter the following command:<br />
<br />
$ pacman -Ss icon-theme<br />
<br />
Again, installed icon themes may then be set though using the {{Pkg|obconf}} and {{Pkg|lxappearance-obconf}} GUI applications. It may then be necessary to either log out and back in again to implement the change, or to [[Openbox#Openbox_Reconfiguration|reconfigure Openbox]].<br />
<br />
== Desktop icons and wallpapers ==<br />
<br />
Openbox does not natively support the use of desktop icons or wallpapers. As a consequence, it will be necessary to install additional applications for this purpose, where desired.<br />
<br />
=== Desktop management using file managers ===<br />
<br />
Some file managers have the capacity to fully '''manage the desktop''', meaning that they may be used to provide wallpapers and enable the use if icons on the desktop. The [[LXDE]] desktop environment itself uses PCManFM for this purpose.<br />
<br />
* [[PCManFM]]: See the [[PCManFM#Desktop_management|PCManFM desktop management]] article.<br />
* [[SpaceFM]]: See the [[SpaceFM#Desktop_management|SpaceFM desktop management]] article.<br />
<br />
=== Wallpaper / background programs ===<br />
<br />
{{Tip|The wallpaper programs listed here will have many more options than shown in this brief overview, including the ability to use solid colours for backgrounds. Review their documentation and man pages for more information.}}<br />
<br />
There are numerous packages available to set desktop backgrounds in Openbox, each of which will need to be autostarted in the {{ic|~/.config/openbox/autostart}} file. A few of the most well known have been listed.<br />
<br />
==== nitrogen ====<br />
<br />
{{Tip|If nitrogen does not show in the desktop menu, then it can be manually added.}}<br />
<br />
[[nitrogen]] is a user-friendly choice, as it also provides a GUI window to browse and set installed images. To access the GUI, enter the following command in a terminal:<br />
<br />
$ nitrogen<br />
<br />
To use nitrogen as the background provider, add the following command to the {{ic|~/.config/openbox/autostart}} file so that it will restore the last set wallpaper:<br />
<br />
nitrogen --restore &<br />
<br />
==== feh ====<br />
<br />
[[Feh]] is a popular image viewer that may also be used to set wallpapers. In this instance, it will be necessary to add the full directory path and name of the image to be used as the wallpaper. To use Feh as the background provider, add the following command to the {{ic|~/.config/openbox/autostart}} file:<br />
<br />
feh --bg-scale ''/path/to/image.file'' &<br />
<br />
==== hestroot ====<br />
<br />
{{Pkg|hsetroot}} is a command-line tool specifically designed to set wallpapers. As with Feh, it will be necessary to add the full directory path and name of the image to be used as the wallpaper. To use HSetRoot as the background provider, add the following command to the {{ic|~/.config/openbox/autostart}} file:<br />
<br />
hsertroot -fill ''/path/to/image.file'' &<br />
<br />
==== xsetroot ====<br />
<br />
{{ic|xsetroot}} is installed as part of the [[Xorg]] X-Windows system, and may be used to set simple background colours. For example, to use XSetRoot to set a black background, the following would be added to the {{ic|~/.config/openbox/autostart}} file:<br />
<br />
xsetroot -solid "#000000" &<br />
<br />
=== Icon programs ===<br />
<br />
While there are programs dedicated to enabling desktop icons alone, it would seem that they have greater drawbacks than the utilisation of file managers for the task. These programs are discussed briefly, below.<br />
<br />
==== idesk ====<br />
<br />
[[idesk]] is a simple program that can enable icons in addition to managing wallpaper. It will be necessary to create an {{ic|~/.idesktop}} directory, and desktop icons must also be manually created. To use idesk to provide icons, add the following command to the {{ic|~/.config/openbox/autostart}} file:<br />
<br />
idesk &<br />
<br />
==== xfdesktop ====<br />
<br />
{{Pkg|xfdesktop}} is the desktop manager for [[XFCE]]. The [[Thunar]] file manager will also be downloaded as a dependency. Where this is used, the Openbox desktop menu will no longer be accessible by right-clicking the background. <br />
<br />
As such, it will consequently be necessary to access it by other means, such as by [[Openbox#Desktop_Menu|creating a keybind]], and/or by - where permitted - re-configuring an installed panel to use the [[Openbox#Desktop_menu_as_a_panel_menu|desktop menu as a panel menu]]. To use xfdesktop to provide icons, add the following command to the {{ic|~/.config/openbox/autostart}} file:<br />
<br />
xfdesktop &<br />
<br />
=== conky reconfiguration ===<br />
<br />
Particularly where using a file manager to manage the desktop, it will be necessary to edit {{ic|~/.conkyrc}} to change the {{ic|own_window_type}} command in order for [[conky]] to continue to be displayed (where used). The revised command that should be used is:<br />
<br />
own_window_type normal<br />
<br />
== File managers ==<br />
<br />
Multiple [[List of Applications#File managers|file managers]] may be used with Openbox, including [[PCManFM]], [[SpaceFM]], [[Thunar]], {{Pkg|xfe}}, and {{Pkg|qtfm}}. Thunar is the native file manager for [[Xfce]], and if installing be aware that some Xfce-related dependencies will also be installed, including {{Pkg|exo}} (set default applications) and '''xfce4-about''' (provide information about the Xfce deskop environment). The menu entries for these may consequently have to be hidden.<br />
<br />
A file manager alone will not provide the same features and functionality as provided by default in full desktop environments like [[Xfce]] and [[KDE]]. For example, it may not be initially possible to view or access other partitions or access removable media. See [[File manager functionality]] for further information.<br />
<br />
== oblogout ==<br />
<br />
See the [[Oblogout]] article for an overview on how to use this useful, graphical logout script.<br />
<br />
== Openbox for multihead users ==<br />
<br />
While Openbox provides better than average multihead support on its own, the {{AUR|openbox-multihead-git}} package from the [[AUR]] provides a development branch called '''Openbox Multihead''' that gives multihead users per-monitor desktops. This model is not commonly found in floating window managers, but exists mainly in tiling window managers. It is explained well on the [http://xmonad.org/tour.html#workspace Xmonad web site]. Also, please see [https://github.com/BurntSushi/openbox-multihead/blob/multihead/README.MULTIHEAD README.MULTIHEAD] for a more comprehensive description of the new features and configuration options found in Openbox Multihead.<br />
<br />
Openbox Multihead will function like normal Openbox when only a single head is available.<br />
<br />
A downside to using Openbox Multihead is that it breaks the EWMH assumption that one and only one desktop is visible at any time. Thus, existing pagers will not work well with it. To remedy this, {{AUR|pager-multihead-git}} can be found in the [[AUR]] and is compatible with Openbox Multihead. [http://imgur.com/a/cnZeq#y04nk Screenshots].<br />
<br />
Finally, a new version of [[PyTyle]] that will work with Openbox Multihead can also be found in the [[AUR]]: {{AUR|pytyle3-git}}.<br />
<br />
Both ''pytyle3'' and ''pager-multihead-git'' will work without Openbox Multihead if only one monitor is active.<br />
<br />
== Tips and tricks ==<br />
<br />
=== Packages for beginners ===<br />
<br />
{{Tip|See the [[List of Applications]] article for many more possibilities.}}<br />
<br />
The packages listed below have been listed to aid newer users:<br />
<br />
* Display Manager: [[LXDM]] or [[LightDM]]<br />
* Audio: [[ALSA]]<br />
* Volume: {{Pkg|volumeicon}} or {{AUR|pnmixer}} with {{Pkg|gnome-alsamixer}}<br />
* Network: [[Network manager]] with {{Pkg|network-manager-applet}}<br />
* Panel: [[Tint2]] or [[Tint2#Application_Launchers_in_tint2-svn_.28AUR.29|Tint2-svn]]<br />
* Background: [[Nitrogen]] or [[Feh]]<br />
* Menu: [[Openbox#obmenu-generator|OBMenu-Generator]]<br />
* Compositor: [[Compton]]<br />
* Desktp Notifications: {{Pkg|xfce4-notifyd}}<br />
* Logout script: [[Oblogout]]<br />
* File Manager: [[PCManFM]], [[SpaceFM]], or [[Thunar]]<br />
* Clipboard Manager: {{Pkg|parcellite}}<br />
* Configuration GUIs: {{Pkg|obconf}}, {{Pkg|lxappearance-obconf}}, {{Pkg|lxrandr}}, {{Pkg|lxinput}}, {{AUR|tintwizard}} or {{AUR|tintwizard-svn}}<br />
<br />
=== Set default applications / file associations ===<br />
<br />
See the [[Default applications]] article.<br />
<br />
=== Terminal content copy and paste ===<br />
<br />
Within a terminal, either:<br />
<br />
* {{ic|Ctrl+Ins}} will copy and {{ic|Shift+Ins}} will paste. <br />
* {{ic|Ctrl+Shift+c}} will copy and '''mouse middle-click''' will paste.<br />
<br />
=== Ad-hoc window transparency ===<br />
<br />
{{Warning|This may not work where other actions are defined within the action group.}}<br />
The program {{Pkg|transset-df}} is available in the official repositories, and can enable window transparency on-the-fly.<br />
<br />
For example, using the following code in the {{ic|<mouse>}} section of the {{ic|~/.config/openbox/rc.xml}} file will enable control of application window transparency by hovering the mouse-pointer over the title bar and scrolling with the middle button:<br />
<br />
<context name="Titlebar"><br />
...<br />
<mousebind button="Up" action="Click"><br />
<action name= "Execute" ><br />
<execute>transset-df -p .2 --inc </execute><br />
</action><br />
</mousebind><br />
<mousebind button="Down" action="Click"><br />
<action name= "Execute" ><br />
<execute>transset-df -p .2 --dec </execute><br />
</action><br />
</mousebind><br />
...<br />
</context><br />
<br />
=== Using obxprop for faster configuration ===<br />
<br />
{{Pkg|openbox}} package provides a {{ic|obxprop}} binary that can parse relevant values for applications settings in {{ic|rc.xml}}. Officially {{ic|<nowiki>obxprop | grep "^_OB_APP"</nowiki>}} is recommended for this task. Doing so for multiple applications and its windows can be very inefficient however. The following script {{ic|obxprop2obrc}} makes it much easier to configure even a large number of applications.<br />
<br />
{{bc|<nowiki><br />
#!/bin/bash<br />
##Script: obxprop-to-openbox-rc.sh<br />
##Recommended executable name: obxprop2obrc<br />
<br />
while [ $# -ne 0 ]; do<br />
case $1 in<br />
-f*)<br />
shift;<br />
FILE="$1";<br />
shift;<br />
;;<br />
-t*)<br />
shift;<br />
TIME="$1";<br />
shift;<br />
;;<br />
*)<br />
echo Usage: $0 [-f FILE_TEMPLATE] [-t WAIT_TO_KILL_TIME] <br />
exit 1;<br />
;;<br />
esac<br />
done<br />
<br />
if [ $TIME ]; then<br />
OBXPROPS=( $(obxprop | cat & (sleep $TIME && pkill -13 cat) | awk -F \" '/_OB_APP/{ print "\x22"$2"\x22" }' ) );<br />
else<br />
OBXPROPS=( $(obxprop | awk -F \" '/_OB_APP/{ print "\x22"$2"\x22" }' ) );<br />
fi<br />
OBPROPS=(TYPE TITLE GROUP_CLASS GROUP_NAME CLASS NAME ROLE);<br />
j=0;<br />
for i in $( seq 2 2 14 ); do<br />
OBPROP="$( echo ${OBXPROPS[@]} | awk -F \" '{ print $'$i'}' )";<br />
if [[ -z $OBPROP ]]; then <br />
declare ${OBPROPS[$j]}='"*"';<br />
else <br />
declare ${OBPROPS[$j]}="\"$OBPROP\"";<br />
fi<br />
j=$(($j+1));<br />
done;<br />
<br />
echo " <application type="$TYPE" title="$TITLE" class="$CLASS" name="$NAME" role="$ROLE">"<br />
if [ -f "$FILE" ]; then cat "$FILE" && exit; fi<br />
cat << EOF<br />
<desktop>1</desktop><br />
<desktop>all</desktop><br />
<decor>yes</decor><br />
<decor>no</decor><br />
<focus>yes</focus><br />
<focus>no</focus><br />
<fullscreen>yes</fullscreen><br />
<fullscreen>no</fullscreen><br />
<iconic>yes</iconic><br />
<iconic>no</iconic><br />
<maximized>yes</maximized><br />
<maximized>no</maximized><br />
<maximized>both</maximized><br />
<maximized>horizontal</maximized><br />
<maximized>vertical</maximized><br />
<monitor>0</monitor><br />
<monitor>1</monitor><br />
<position force="no"><br />
<position force="yes"><br />
<width>40%</width><br />
<height>30%</height><br />
<x>-1</x><br />
<y>-1</y><br />
<x>center</x><br />
<y>center</y><br />
</position><br />
<layer>above</layer><br />
<layer>normal</layer><br />
<layer>below</layer><br />
<shade>yes</shade><br />
<shade>no</shade><br />
<skip_pager>yes</skip_pager><br />
<skip_pager>no</skip_pager><br />
<skip_taskbar>yes</skip_taskbar><br />
<skip_taskbar>no</skip_taskbar><br />
</application><br />
EOF<br />
</nowiki>}}<br />
<br />
If no further options are used default configuration, that can be edited by deleting unnecessary lines, is printed out. This script can use templates with default values when using {{ic|-f}} switch:<br />
{{hc|<br />
$ obxprop2obrc -f templates-rc-inkscape-dialogs.sc > part-rc-applications-inkscape.xml<br />
$ cat part-rc-applications-inkscape.xml|<nowiki><br />
<application type="normal" title="Align and Distribute (Shift+Ctrl+A)" class="Inkscape" name="inkscape" role="*"><br />
<desktop>3</desktop><br />
<decor>yes</decor><br />
<maximized>no</maximized><br />
<position force="yes"><br />
<width>20%</width><br />
<height>30%</height><br />
<x>-1</x><br />
<y>-1</y><br />
</position><br />
<layer>normal</layer><br />
<shade>yes</shade><br />
</application><br />
</nowiki>}}<br />
<br />
It also has a time switch {{ic|-t}} which kills obxprop and thus can reduce time significantly in certain situations, although it may not work perfectly.<br />
<br />
=== Xprop values for applications ===<br />
<br />
{{Pkg|xorg-xprop}} is available in the official repositories, and can be used to relay property values for selected applications. Where frequently using per-application settings, the following [[Bash#Aliases|Bash Alias]] may be useful:<br />
dy:<br />
<br />
alias xp='xprop | grep "WM_WINDOW_ROLE\|WM_CLASS" && echo "WM_CLASS(STRING) = \"NAME\", \"CLASS\""'<br />
<br />
To use Xorg-XProp, run using the alias given {{ic|xp}}, and click on the active program desired to define with per-application settins. The results displayed will only be the information that Openbox itself requires, namely the {{ic|WM_WINDOW_ROLE}} and {{ic|WM_CLASS}} (name and class) values:<br />
<br />
WM_WINDOW_ROLE(STRING) = "roster"<br />
WM_CLASS(STRING) = "gajim.py", "Gajim.py"<br />
WM_CLASS(STRING) = "NAME", "CLASS"<br />
<br />
==== Firefox ====<br />
<br />
For whatever reason, Firefox and like-minded equivalents ignore application rules (e.g. ''<desktop>'') unless {{ic|class&#61;"Firefox*"}} is used. This applies irrespective of whatever values '''xprop''' may report for the program's {{ic|WM_CLASS}}.<br />
<br />
=== Switching between keyboard layouts ===<br />
<br />
See the article section [[Keyboard configuration in Xorg#Switching between keyboard layouts|switching between keyboard layouts]] for instructions.<br />
<br />
== Troubleshooting ==<br />
<br />
=== Windows load behind the active window ===<br />
<br />
Some application windows (such as Firefox windows) may load behind the currently active window, causing you to need to switch to the window you just created to focus it. To fix this behavior add this to your {{ic|~/.config/openbox/rc.xml}} file, inbetween the {{ic|1=<openbox_config>}} and {{ic|1=</openbox_config>}} tags:<br />
<br />
{{bc|1=<br />
<applications><br />
<application class="*"><br />
<focus>yes</focus><br />
</application><br />
</applications><br />
}}<br />
<br />
== See also ==<br />
<br />
* [http://openbox.org/ Openbox Website] - Official website<br />
* [http://planetob.openmonkey.com/ Planet Openbox] - Openbox news portal<br />
* [http://www.box-look.org/ Box-Look.org] - A good resource for themes and related artwork<br />
* [https://bbs.archlinux.org/viewtopic.php?id=93126 Openbox Hacks and Configs Thread] @ Arch Linux Forums<br />
* [https://bbs.archlinux.org/viewtopic.php?id=45692 Openbox Screenshots Thread] @ Arch Linux Forums<br />
* [http://urukrama.wordpress.com/openbox-guide/ An Openbox guide]</div>Dbboltonhttps://wiki.archlinux.org/index.php?title=User_talk:Dbbolton&diff=308042User talk:Dbbolton2014-04-02T21:54:40Z<p>Dbbolton: create</p>
<hr />
<div>==Comments==<br />
<br />
==Complaints==</div>Dbboltonhttps://wiki.archlinux.org/index.php?title=User:Dbbolton&diff=308041User:Dbbolton2014-04-02T21:54:08Z<p>Dbbolton: create</p>
<hr />
<div>[https://github.com/dbb Fork me on GitHub!]</div>Dbboltonhttps://wiki.archlinux.org/index.php?title=Xorg&diff=50813Xorg2008-10-07T23:18:26Z<p>Dbbolton: /* Installing Xorg */</p>
<hr />
<div>[[Category:X Server (English)]]<br />
[[Category:HOWTOs (English)]]<br />
<br />
{{i18n_links_start}}<br />
{{i18n_entry|Dansk|Xorg (Dansk)}}<br />
{{i18n_entry|English|Xorg}}<br />
{{i18n_entry|Ελληνικά|Xorg (Ελληνικά)}}<br />
{{i18n_entry|Español|Configurando Xorg (Español)}}<br />
{{i18n_entry|Polski|Xorg_(Polski)}}<br />
{{i18n_entry|Русский|Xorg (Русский)}}<br />
{{i18n_entry|Česky|Xorg (Česky)}}<br />
{{i18n_entry|Italiano|Xorg (Italiano)}}<br />
{{i18n_entry|简体中文|Xorg (简体中文)}}<br />
{{i18n_entry|Türkçe|Xorg (Türkçe)}}<br />
{{i18n_links_end}}<br />
<br />
== Introduction ==<br />
<br />
'''Xorg''' is the public, open-source implementation of the X11 X Window System. (See the [http://en.wikipedia.org/wiki/X.Org_Server X.org Wikipedia Article] or [http://wiki.x.org/wiki/ X.org] for details.) Basically, if you want a GUI atop Arch, you will want xorg.<br />
<br />
==Installing Xorg==<br />
<br />
Before beginning, make sure you do the following:<br />
#Make sure that [[pacman]] is configured and refreshed.<br />
#If you are running another X server you can close it now. <code>ctrl+alt+backspace</code><br />
#Make a note about third-party drivers (e.g., nVidia or ATI drivers). <br />
<br />
First let us install the complete 'xorg' group:<br />
<br />
# pacman -S xorg<br />
<br />
The default 'vesa' driver is merely a fallback (not accelerated and doesn't support many resolutions), so you will need a proper video driver too. You can type this command to list all the video drivers available:<br />
<br />
# pacman -Ss xf86-video<br />
<br />
(However, if you have a nvidia card, install the package "nvidia" instead.)<br />
<br />
Look for the appropriate driver for your card and install it with pacman -S. To check your card, if hwd is installed, run:<br />
hwd -s<br />
or run :<br />
lspci | grep "VGA"<br />
<br />
If Xorg installed OK, it's time to make <code>xorg.conf</code><br />
<br />
==Configuring xorg==<br />
<br />
Before you can run xorg, you need to configure it so that it knows about your graphics card, monitor, mouse and keyboard. There are several methods of automating the process:<br />
<br />
===hwd===<br />
<br />
Perhaps the easiest way of getting Xorg up and running quickly is to use <tt>hwd</tt>, a tool written by users in the Arch Linux community. It's basically a hardware-detection tool that has multiple uses, one of which is setting up an X server. Fortunately, hwd is much more streamlined than <code>xorgconf</code> and doesn't require any input at all.<br />
<br />
First, install the <tt>hwd</tt> package:<br />
# pacman -S hwd<br />
<br />
Now simply run the following command as root to generate a default <code>xorg.conf</code> file:<br />
# hwd -xa<br />
<br />
This will overwrite any existing /etc/X11/xorg.conf file with a practical set of defaults, based on what <tt>hwd</tt> detected for your hardware.<br />
<br />
Alternatively, you can generate a sample Xorg config (/etc/X11/xorg.conf.hwd) without overwriting your existing settings. To do so, run <tt>hwd</tt> with the '''-x''' flag instead:<br />
# hwd -x<br />
<br />
Sample result:<br />
/etc/X11/xorg.conf.ati<br />
/etc/X11/xorg.conf.vesa<br />
<br />
Your sample file(s) ready, rename 'xorg.conf'.<br />
If unsure first try 'vesa' (default).<br />
<br />
To use the sample config(s), you must manually rename it. Sample:<br />
# mv /etc/X11/xorg.conf.vesa /etc/X11/xorg.conf<br />
<br />
AD: In my experience hwd creates XF86Config-4 file and if there is not xorg.conf present Xorg uses it automatically.<br />
<br />
===xorgconfig===<br />
<br />
To start up <tt>xorgconfig</tt>:<br />
<br />
# xorgconfig<br />
<br />
or<br />
<br />
# xorgcfg -textmode<br />
<br />
These will generate a new <tt>xorg.conf</tt>.<br />
<br />
Answer the questions, and the program will make the file for you.<br />
This program is not really good but it's a start, and you can fill in special stuff manually afterwards.<br />
<br />
===Xorg -configure===<br />
You can also use<br />
# Xorg -configure<br />
or<br />
# X -configure<br />
<br />
===nvidia-xconfig===<br />
nVidia users can also use<br />
# nvidia-xconfig<br />
when they have official nvidia drivers [[NVIDIA|installed]].<br />
<br />
Comment the line<br />
<br />
Load "type1"<br />
<br />
in the Module section since recent versions of xorg-server do not include the type1 font module (completely replaced by freetype).<br />
<br />
==Editing xorg.conf==<br />
<br />
You may wish to edit the config after it's been generated. To open in your favourite text-editor, such as Vim (you need root privileges):<br />
<br />
# vim /etc/X11/xorg.conf<br />
<br />
or use Xorg Configuration toolkit:<br />
<br />
# xorgcfg -textmode<br />
<br />
If you want to set up mouse wheel support, see [[Get All Mouse Buttons Working]].<br />
<br />
===Monitor Settings===<br />
<br />
Depending on your hardware, Xorg may fail to detect your monitor capabilities correctly, or you may simply wish to use a lower resolution than your monitor is capable of. You might want to look up the following values in your monitor's manual before setting them.<br />
The following settings are specified in the Monitor section:<br />
<br />
====Horizontal Sync====<br />
<br />
HorizSync 28-64<br />
<br />
====Refresh Rate====<br />
<br />
VertRefresh 60<br />
<br />
The following are specified in the Screen section:<br />
<br />
====Colour Depth====<br />
<br />
Depth 24<br />
<br />
====Resolution====<br />
<br />
Modes "1280x1024" "1024x768" "800x600"<br />
<br />
====Multi-monitor setups====<br />
<br />
The easiest way to achieve a working multi-monitor setup is using xrandr after X starts. First, run (from any account):<br />
<br />
xrandr -q<br />
<br />
This will list all your available video outputs, with some information about them. Assume your output names are VGA-0, DVI-0 and S-video. Then, to merge screens connected to DVI-0 and VGA-0 outputs, you just need to run:<br />
<br />
xrandr --output DVI-0 --right-of VGA-0<br />
<br />
If this command works for you, just add it to your [[.xinitrc]] file.<br />
<br />
=== Keyboard Settings ===<br />
<br />
Xorg may fail to detect your keyboard correctly. This might give problems with your keyboard layout or keyboard model not being set correctly.<br />
<br />
To see a full list of keyboard models, layouts, variants and options, open:<br />
<br />
/usr/share/X11/xkb/rules/xorg.lst<br />
<br />
==== Keyboard Layout ====<br />
<br />
To change the keyboard layout, use the XkbLayout option in the keyboard InputDevice section. For example, if you have a keyboard with English layout:<br />
<br />
Option "XkbLayout" "gb"<br />
<br />
To be able to easily switch keyboard layouts, for example between a US and a Swedish layout use this instead:<br />
<br />
Option "XkbLayout" "us, se"<br />
Option "XkbOptions" "grp:caps_toggle"<br />
<br />
This makes your Caps Lock key switch between the different layouts. This is mainly useful if you run don't run a Desktop Environment which takes care of keyboard layouts for you.<br />
<br />
==== Keyboard Model ====<br />
<br />
To change the keyboard model, use the XkbModel option in the keyboard <br />
InputDevice section. For example, if you have a Microsoft Wireless Multimedia Keyboard:<br />
<br />
Option "XkbModel" "microsoftmult"<br />
<br />
==== Problem with your Apple Keyboard? ====<br />
More information can be found [[Apple Keyboard|here]].<br />
<br />
===Display Size/DPI===<br />
<br />
In order to get correct sizing for fonts, the display size must be set for your desired DPI.<br />
<br />
<br />
One way to set it up is to pass an argument directly to the X (Xorg) binary.<br><br />
In <code>/etc/X11/xinit/xserverrc</code> add the "-dpi 96" part as follows:<br />
exec /usr/bin/X -nolisten tcp '''-dpi 96'''<br />
<br />
<br />
Alternatively, going back to the <code>/etc/X11/xorg.conf</code> file, in the section <code>"Monitor"</code> put in your display size in mm:<br />
<br />
Section "Monitor"<br />
...<br />
DisplaySize 336 252 # 96 DPI @ 1280x960<br />
...<br />
EndSection<br />
<br />
<br />
The formula for calculating the DisplaySize values is Width x 25.4 / DPI and Height x 25.4 / DPI. If you're running Xorg with a resolution of 1024x768 and want a DPI of 96, use 1024 x 25.4 / 96 and 768 x 25.4 / 96. Round numbers down.<br />
<br />
# calc: (x|y)pixels * 25.4 / dpi<br />
# DisplaySize 168 126 # 96 DPI @ 640x480<br />
# DisplaySize 210 157 # 96 DPI @ 800x600<br />
# DisplaySize 269 201 # 96 DPI @ 1024x768<br />
# DisplaySize 302 227 # 96 DPI @ 1152x864<br />
# DisplaySize 336 252 # 96 DPI @ 1280x960<br />
# DisplaySize 336 210 # 96 DPI @ 1280x800 (non 4:3 aspect)<br />
# DisplaySize 339 271 # 96 DPI @ 1280x1024 (non 4:3 aspect)<br />
# DisplaySize 370 277 # 96 DPI @ 1400x1050<br />
# DisplaySize 380 238 # 96 DPI @ 1440x900<br />
# DisplaySize 420 315 # 96 DPI @ 1600x1200<br />
# DisplaySize 444 277 # 96 DPI @ 1680x1050<br />
# DisplaySize 506 315 # 96 DPI @ 1920x1200 (non 4:3 aspect)<br />
<br />
<br />
In case X ignores your DisplaySize setting ([https://bugs.freedesktop.org/show_bug.cgi?id=9758 known bug]) add the following line in the Device section.<br />
Option "NoDDC" "true"<br />
<br />
For nVidia drivers you may have to disable automatic detection of DPI to set it manually. There is also an easier way to set DPI on these cards. Either or both of the following lines can be set in the device section for your nVidia card.<br />
<br />
Option "UseEdidDpi" "false"<br />
Option "DPI" "96 x 96"<br />
<br />
<br />
Results can be checked by issuing the following command, which should return 96x96 dots per inch if you set DPI @ 96.<br />
<br />
$ xdpyinfo | grep -B1 dot<br />
<br />
===Proprietary Drivers===<br />
<br />
If you wish to use third-party graphics drivers, do check that the X server runs OK first. Xorg should run smoothly without official drivers, which are typically needed only for advanced features such as 3D-accelerated rendering for games, dual-screen setups, and TV-out. Refer to the [[NVIDIA]] and [[ATI]] wikis for help with driver installation.<br />
<br />
===Fonts===<br />
<br />
There some tips for setting up fonts in [[Xorg Font Configuration]].<br />
<br />
=== Sample Xorg.conf Files ===<br />
Anyone who has an Xorg.conf file written up that works, go ahead and post a link to it here for others to look at! Please don't inline the entire conf file; upload it somewhere else and link. Thanks!<br />
* Shadowhand (nv and nvidia drivers): http://people.os-zen.net/shadowhand/configs/xorg.conf <small>*dead link*</small><br />
* Cerebral (fglrx and radeon drivers): http://www.student.cs.uwaterloo.ca/~tjwillar/configs/xorg.conf <small>*dead link*</small><br />
* raskolnikov (via unichrome and synaptics drivers): http://athanatos.free.fr/Arch/xorg.conf<br />
* Leigh (Three independent screens - Three nvidia cards): http://files.myopera.com/allisonleigh/linuxbackup/xorg.conf<br />
* Mr.Elendig (nvidia with composite and "stuff") http://arch.har-ikkje.net/configs/etc/X11/xorg.conf<br />
<br />
==Running Xorg==<br />
<br />
This is done simply by typing:<br />
<br />
$ startx<br />
<br />
The default X environment is rather bare, and you will typically seek to install window managers or desktop environments to supplement X. <br />
<br />
To test the config file you have created:<br />
<br />
$ X -config ''<your config file>''<br />
<br />
If a problem occurs, then view the log at <tt>/var/log/Xorg.0.log</tt>. Be on the lookout for any lines beginning with ''(EE)'' which represent errors, and also ''(WW)'' which are warnings that could indicate other issues.<br />
<br />
'''*Please Note*'''<br />
Using startx requires a ''[[.xinitrc | ~/.xinitrc ]]'' file, so that X knows what to run when it starts. Your best option is to copy ''/etc/skel/.xinitrc'' to your home directory and edit it. Comment out the 'exec' lines you don't want, and add or uncomment one for the WM you want to use. If you are using GNOME it is best to start GNOME through gdm to avoid HAL permission problems.<br />
<br />
In addition, you can also install twm and xterm (via pacman), which will be used as a fallback if ~/.xinitrc does not exist (as stated in /etc/X11/xinit/xinitrc).<br />
<br />
==X startup (/usr/bin/startx) tweaking==<br />
For X's option reference see<br />
<br />
$ man Xserver<br />
<br />
The following options have to be appended to the variable "defaultserverargs" in the /usr/bin/startx file:<br />
<br />
<br />
* prevent X from listening on tcp:<br />
-nolisten tcp<br />
'''Note:''' this seems to be the default option now in <code>/etc/X11/xinit/xserverrc</code><br />
<br />
<br />
* getting rid of the gray weave pattern while X is starting and let X set a black root window:<br><br />
-br<br />
'''Note:''' there seems to be no need for that in recent releases of Xorg.<br />
<br />
<br />
* enable deferred glyph loading for 16 bit fonts:<br />
-deferglyphs 16<br />
<br />
<br />
Note: If you start X with kdm, the startx script does not seem to be executed. X options must be appended to the variable "ServerCmd" in the /opt/kde/share/config/kdm/kdmrc file. By default kdm options are<br />
<br />
ServerCmd=/usr/bin/X -br -nolisten tcp<br />
<br />
== Changes with modular Xorg ==<br />
<br />
=== Most Common Packages ===<br />
<br />
Make sure you install drivers for mouse, keyboard and videocard. For mouse and keyboard, '''xf86-input-keyboard''' and '''xf86-input-mouse''' should get installed. Other '''xf86-input-*''' packages are available for different input devices.<br />
<br />
For the videocard, find out which driver is required and install the right '''xf86-video-*''' package. ATI and Nvidia users may wish to install the non-free drivers for their hardware instead ([[NVIDIA]], [[ATI]]).<br />
<br />
To install all drivers in one run, the '''xorg-input-drivers''' and '''xorg-video-drivers''' are available.<br />
<br />
=== OpenGL 3D Acceleration ===<br />
<br />
X.Org 7.0 on Arch Linux uses a modular design for mesa, the OpenGL rendering system. Several implementations are available:<br />
* libgl-dri: Open-source DRI OpenGL implementation. Falls back to software rendering when no DRI driver is installed<br />
* some other driver providing libGL (ati, nvidia)<br />
<br />
When pacman installs an application that needs mesa, it will install one of these packages. To be sure about the right library for your setup, install the library you want prior to installing Xorg. Installing the right package afterwards is also possible, though this gives some dependency errors sometimes, which can be ignored with the -d switch.<br />
<br />
=== Glxgears and Glxinfo ===<br />
<br />
These apps are included in the mesa package.<br />
<br />
=== Changed paths (and configuration) ===<br />
<br />
'''See this entry for additional upgrade info:''' http://www.archlinux.org/blog/2006/01/02/how-to-upgrade-xorg/<br />
<br />
Modular X.Org 7 installs everything in <code>/usr</code>, where the older versions installed in <code>/usr/X11R6</code>. Several configuration files need updates:<br />
* ''/etc/X11/xorg.conf''<br />
** Fontpaths live in /usr/share/fonts now<br />
** RGB database is in /usr/share/X11/rgb<br />
** module path is /usr/lib/xorg/modules<br />
<br />
Also note that some X configuration tools might stop working. The easiest way to configure X.org is by installing the correct driver packages and running ''Xorg -configure'', which results in a <code>/root/xorg.conf.new</code> which only needs modification in the resolutions, mouse configuration and keyboard layouts.<br />
<br />
Some packages have hard-coded references to <code>/usr/X11R6</code>. These packages need fixing. In the meantime, look what packages install files in <code>/usr/X11R6</code>, uninstall those, make a symlink from <code>/usr</code> to <code>/usr/X11R6</code> and reinstall the affected packages. Another option is to move the contents of <code>/usr/X11R6</code> to <code>/usr</code> and make the symlink.<br />
<br />
Or you can just add a second module path via <code/>ModulePath "/usr/X11R6/lib/modules"</code> <br />
This works e.g. for Nvidia 76.76<br />
<br />
== Desktop Effects ==<br />
To set up and enable fancy desktop effects, see the [[Compiz Fusion]] article.<br />
<br />
== Troubleshooting ==<br />
<br />
=== Xorg "can't see" the resolutions your monitor supports ===<br />
I found myself in a situation where if I used one of my monitors (a gnr ts902), Xorg would only present me with the options 640x480 and 320x480 which of course was less than I desired. After a lot of research I found through read-edid (in [[AUR]]) that part of my EDID was corrupt and so I could only read my HorizSync with read-edid. This fortunately was enough and after adding the right HorizSync line to the xorg.conf's Monitor section (I didn't have to add VertRefresh) I restarted X to see the right resolution :)<br />
<br />
note: I'm not sure if<br />
<br />
Option "ModeValidation" "NoEdidModes"<br />
Option "UseEdid" "false"<br />
<br />
in Device section of xorg.conf are needed as well; too lazy now to test without them :)<br />
<br />
=== Keyboard Problems ===<br />
<br />
Auto-generated xorg.conf files may cause you problems. If you cannot get to tty1 by holding CTRL-ALT and pressing F1 or cannot get the £ sign for gb people, check to see if the following entries are in your /etc/X11/xorg.conf:<br />
<br />
Option "XkbLayout" "uk" #"uk" is not a real layout, look in /usr/share/X11/xkb/symbols/ for a list of real ones.<br />
Option "XkbRules" "xfree86" #this should be "xorg"<br />
Option "XkbVariant" "nodeadkeys" #This line is also known to cause the problems described, try commenting it out.<br />
<br />
To switch between layouts with Alt+Shift:<br />
Option "XkbOptions" "grp:alt_shift_toggle,grp_led:scroll"<br />
<br />
===A Quick Fix for the Bitstream-Vera Conflict===<br />
If you see a message that ttf-bitstream-vera conflicts with xorg:<br />
#Exit the pacman session by answering no.<br />
#Run <code>pacman -Rd xorg</code><br />
#Run <code>pacman -Syu</code><br />
#Run <code>pacman -S xorg</code><br />
#Update your paths in /etc/X11/xorg.conf<br />
<br />
===A Quick Fix for file conflicts in /usr/include===<br />
If you see messages about file conflicts in /usr/include/X11 and /usr/include/GL:<br />
#Run <code>rm /usr/include/{GL,X11}</code><br />
#Run <code>pacman -Su</code><br />
The symlinked directories removed by this operation are replaced by real directories in the new xorg package, causing these file conflicts to appear.<br />
<br />
=== libgl-dri conflicts ===<br />
<br />
(Note below, that nvidia-legacy has been replaced by nvidia-71xx or nvidia-96xx. See [[NVIDIA | here]] for further details of which driver to use.)<br />
<br />
If you get a message similar to:<br />
:: libgl-dri conflicts with nvidia-legacy. Remove nvidia-legacy? [Y/n]<br />
this is due to the multiple OpenGL implementations explained in the OpenGL section above - pacman is attempting to install libgl-dri to satisfy this dependency, but also trying to upgrade your existing video driver, and they conflict. To solve, try:<br />
<br />
* Updating your video driver before a full system update: <br />
# pacman -S nvidia-legacy<br />
# pacman -Syu<br />
<br />
Or, if that doesn't work,<br />
* Remove your existing video driver, do the update, then reinstall your driver:<br />
# pacman -Rd nvidia-legacy<br />
# pacman -Syu<br />
# pacman -S nvidia-legacy<br />
:: nvidia-legacy conflicts with libgl-dri. Remove libgl-dri? [Y/n] '''Y'''<br />
<br />
=== Mouse wheel not working ===<br />
The "Auto" protocol doesn't seem to work properly in Xorg 7 any more. In the InputDevice section for your mouse, change:<br />
Option "Protocol" "auto"<br />
to<br />
Option "Protocol" "IMPS/2"<br />
or<br />
Option "Protocol" "ExplorerPS/2"<br />
<br />
=== Extra mouse buttons not working ===<br />
USB Mice users should read [[Get_All_Mouse_Buttons_Working]].<br />
<br />
Intellimouse (ExplorerPS/2) users might find their scroll and side buttons aren't behaving as they used to. Previously xorg.conf needed:<br />
Option "Buttons" "7"<br />
Option "ZAxisMapping" "6 7"<br />
and users also had to run xmodmap to get the side buttons working with a command like:<br />
xmodmap -e "pointer = 1 2 3 6 7 4 5"<br />
Now xmodmap is no longer required. Instead, make xorg.conf look like this:<br />
Option "Buttons" "5"<br />
Option "ZAxisMapping" "4 5"<br />
Option "ButtonMapping" "1 2 3 6 7"<br />
and the side buttons on a 7-button Intellimouse will work like they used to, without needing to run xmodmap.<br />
<br />
===Keyboard problems===<br />
Some keyboard layouts have changed. I wondered why:<br />
* I wasn't able to Ctrl+Alt+Fx to switch to console<br />
* I wasn't able to use layouts<br />
The problem was that the ''sk_qwerty'' layout doesn't exist anymore. I had to replace<br />
Option "XkbLayout" "us,sk_qwerty"<br />
with<br />
Option "XkbLayout" "us,sk"<br />
Option "XkbVariant" ",qwerty"<br />
<br />
Another thing to look for if your keyboard isn't properly functioning is the XkbRules option:<br><br />
You'll need to change<br />
Option "XkbRules" "xfree86"<br />
to<br />
Option "XkbRules" "xorg"<br />
<br />
==== AltGR (Compose Key) not working properly ====<br />
<br />
If, after the update, you can't use the AltGr key as expected any more, try adding this to your keyboard section:<br />
Option "XkbOptions" "compose:ralt"<br />
<br />
This is not the correct way to activate the AltGr Key on a German keyboard (for example, to use the '|' and '@' keys on German keyboards).<br />
Just choose a valid keyboard variant for it to work again, for example (the example is for a German keyboard):<br />
Option "XkbLayout" "de"<br />
Option "XkbVariant" "nodeadkeys"<br />
<br />
The solutions above don't work on an Italian keyboard. To activate the AltGr key on an Italian keyboard make sure you have the following lines set up properly:<br />
Driver "kbd"<br />
Option "XkbRules" "xorg"<br />
Option "XkbVariant" ""<br />
<br />
This might still not be enough for a swedish keyboard. Try the above, but with lv3 instead of compose. (Thank you wyvern!)<br />
That is:<br />
Option "XkbLayout" "se"<br />
Option "XkbVariant" "nodeadkeys"<br />
Option "XkbOptions" "lv3:ralt_switch"<br />
<br />
==== Can't set qwerty layouts using the setxkbmap command ====<br />
<br />
After the update, there aren't qwerty layouts as for example sk_qwerty. If you want to switch your present keyboard layout to any qwerty keyboard layout use this command:<br />
$ setxkbmap NAME_OF_THE_LAYOUT qwerty<br />
e.g.: for sk_qwerty use:<br />
$ setxkbmap sk qwerty<br />
<br />
After the update, trying the above command I had this message "Error loading new keyboard description".<br />
I find out that the xserver doesn't have the rights to write, execute, read in the directory /var/tmp<br />
So give the permissions to that directory. Restart the xserver and you will have your deadkeys back!<br />
Don't believe? Try out the code e.g.: it layout<br />
$ setxkbmap -layout it<br />
<br />
==== Setup French Canadian (old ca_enhanced) layout ====<br />
<br />
With Xorg7, "ca_enhanced" is no more. You have to do a little trick to get the same layout that you are used to:<br />
Switch the old:<br />
Option "XkbLayout" "ca_enhanced"<br />
To:<br />
Option "XkbLayout" "ca"<br />
Option "XkbVariant" "fr"<br />
<br />
It will be similar with other layout, I presume. You can refer to Gentoo HowTo there: http://www.gentoo.org/proj/en/desktop/x/x11/modular-x-howto.xml<br />
<br />
<br />
<br />
=== Missing libraries ===<br />
* '''Help! I get an error message running my favourite app saying "libXsomething" doesn't exist!'''<br><br />
In most cases, all you need to do is take the name of the library (eg libXau.so.1), convert it all to lowercase, remove the extension, and pacman for it:<br />
# pacman -S libxau<br />
<br />
This will install the library you're missing, and all will be well again!<br />
<br />
=== Some packages fail to build and complain about missing X11 includes ===<br />
<br />
Just reinstall the packages xproto and libx11, even if they are already installed.<br />
<br />
=== Unable to load font '(null)' ===<br />
* '''Some programs don't work and say unable to load font `(null)'.'''<br><br />
These packages would like some extra fonts. Some programs only work with bitmap fonts.<br />
Two major packages with bitmap fonts are available, xorg-fonts-75dpi and xorg-fonts-100dpi. You don't need both; one should be enough. To find out which one would be better in your case, try this:<br />
<br />
$ xdpyinfo | grep resolution<br />
<br />
and grab what is closer to you (75 or 100 instead of XX)<br />
<br />
# pacman -S xorg-fonts-XXdpi<br />
<br />
=== KDE Taskbar/Desktop Icons Broken ===<br />
* '''KDE taskbar doesn't work and the desktop icons disappear'''<br><br />
Install the packages libxcomposite and libxss. It will be fine.<br />
<br />
# pacman -S libxcomposite libxss<br />
<br />
=== Updating from testing version to extra (missing files) ===<br />
<br />
If you've updated from Xorg 7 in testing to Xorg 7 in extra and are finding that many files seem to be missing (including startx, /usr/share/X11/rgb.txt, and others), you may have lost many files due to the xorg-clients package splitting from a single package into many smaller sub packages. <br><br />
<br />
You need to reinstall all the packages that are dependencies of xorg-clients:<br />
# pacman -S xorg-apps xorg-font-utils xorg-res-utils xorg-server-utils \<br />
xorg-twm xorg-utils xorg-xauth xorg-xdm xorg-xfs xorg-xfwp \<br />
xorg-xinit xorg-xkb-utils xorg-xsm<br />
<br />
This should fix the problem.<br />
<br />
=== Problem with MIME types in various desktop environments ===<br />
<br />
If you noticed icons missing and can't click-open files in desktop environments, add the following lines to /etc/profile or your preferred init script and reboot.<br />
XDG_DATA_DIRS=$XDG_DATA_DIRS:/usr/share<br />
export XDG_DATA_DIRS<br />
<br />
=== DRI stops working with Matrox cards ===<br />
<br />
If you use a Matrox card and DRI stops working after upgrading to xorg7, try adding the line<br />
Option "OldDmaInit" "On"<br />
to the Device section that references the video card in xorg.conf.<br />
<br />
=== Cannot start any clients under Xephyr ===<br />
<br />
The client connections are rejected by the X server's security mechanism, you can find a complete explanation and solution in [http://wiki.debian.org/XStrikeForce/FAQ#howtoxnest].<br />
<br />
=== Cannot start X clients as root using "su" ===<br />
<br />
If you're getting "Client is not authorized to connect to server", try adding the line <br />
<br />
session optional pam_xauth.so<br />
<br />
to the file /etc/pam.d/su. <br />
pam_xauth will properly set environment variables and handle xauth keys.<br />
<br />
== Links ==<br />
See also:<br />
<br />
* [[Enabling a DM]]<br />
* [[Start X at boot]]<br />
* [[Xorg Font Configuration]]<br />
* Proprietary Video Drivers<br />
** [[ATI]]<br />
** [[NVIDIA]]<br />
* [[Desktop Environment]]<br />
** [[KDE]]<br />
** [[GNOME]]<br />
** [[Xfce]]<br />
** [[Enlightenment]]<br />
** [[Fluxbox]]<br />
** [[Openbox]]<br />
== External Links ==<br />
<br />
* [http://en.wikipedia.org/wiki/X.Org_Server X.org Wikipedia Article]<br />
* [http://wiki.x.org/wiki/ X.org]<br />
* [http://archux.com/page/installing-and-setting-xorg Installing and setting up Xorg]</div>Dbbolton