https://wiki.archlinux.org/api.php?action=feedcontributions&user=Gladstone&feedformat=atomArchWiki - User contributions [en]2024-03-19T07:12:38ZUser contributionsMediaWiki 1.41.0https://wiki.archlinux.org/index.php?title=Digikam&diff=236951Digikam2012-11-27T02:00:47Z<p>Gladstone: Start Digikam page</p>
<hr />
<div>[[Category:Multimedia]]<br />
<br />
[[Wikipedia:Digikam|Digikam]] is a KDE-based image organizer with built-in editing features via a plugin architecture.<br />
<br />
== Installation ==<br />
Digikam can be [[Pacman|installed]] with the package {{Pkg|digikam}}, available in the [[official repositories]].<br />
<br />
Optionally, install {{Pkg|kdemultimedia-mplayerthumbs}} to generate thumbnails for video files.<br />
<br />
== Troubleshooting ==<br />
<br />
=== Video playback ===<br />
As a [[KDE#Phonon|Phonon backend]] will have been installed as a dependency of Digikam, multimedia codecs for the backend may be missing. If you are using the {{Pkg|phonon-gstreamer}} backend, try installing one or more of its plugins with {{ic|pacman -S gstreamer0.10-{good,bad,ugly,ffmpeg} }}.</div>Gladstonehttps://wiki.archlinux.org/index.php?title=GPhoto&diff=236949GPhoto2012-11-27T01:47:03Z<p>Gladstone: /* Frontend (external) Applications for GPhoto2 */</p>
<hr />
<div>[[Category:Imaging]] <br />
[[es:Digital Cameras]]<br />
[[it:Digital Cameras]]<br />
[[ru:Цифровые камеры]]<br />
{{Article summary start}}<br />
{{Article summary text|Infos on digital cameras support.}}<br />
{{Article summary end}}<br />
This article documents the configuration of {{ic|libgphoto2}} to access digital cameras. Some digital cameras will mount as normal [[USB Storage Devices]] and may not require the use of libgphoto2.<br />
<br />
{{Note|As of libgphoto2 version 2.14.13, users do not need to be part of the {{ic|camera}} group.}}<br />
<br />
==Libgphoto2==<br />
[http://www.gphoto.org/proj/libgphoto2/ Libgphoto2] is the core library designed to allow access to digital cameras by external (front end) programs, such as Digikam and gphoto2. The current 'officially' supported cameras are [http://www.gphoto.org/proj/libgphoto2/support.php here] (though more may work).<br />
<br />
===Installation and Configuration===<br />
Core library:<br />
# pacman -S libgphoto2<br />
<br />
(Optional) [http://en.wikipedia.org/wiki/GVFS gvfs] (for Nautilus integration):<br />
# pacman -S gvfs-gphoto2<br />
<br />
(Optional) Command line interface:<br />
# pacman -S gphoto2<br />
<br />
===Permission issues===<br />
<br />
Users with a local session have permissions granted for cameras using [[Wikipedia:Access control list|ACLs]]. See [[General Troubleshooting#Session permissions]] if it does not work.<br />
<br />
If you want these permissions to work for remote ([[SSH]]) sessions too, you can use the old 'camera' group, by adding the requisite users to the deprecated camera group and create a new udev rules file as follows:<br />
<br />
# /usr/lib/libgphoto2/print-camera-list udev-rules version 175 group camera > /etc/udev/rules.d/40-gphoto.rules<br />
<br />
These rules will use the group for newly added camera devices.<br />
<br />
If the camera is not present in any [[udev]] rule, can check vendor and product id and add it. To check it just run:<br />
# lsusb<br />
...<br />
Bus 001 Device 005: ID 04a9:318e Canon, Inc.<br />
...<br />
<br />
==GPhoto2 Usage==<br />
GPhoto2 is a command line client for libgphoto2. GPhoto2 allows access to the libgpohoto2 library from a terminal or from a script shell to perform any camera operation that can be done. This is the main user interface. <br />
<br />
GPhoto2 also provides convenient debugging features for camera driver developers.<br />
<br />
'''Quick Commands'''<br />
* {{ic|gphoto2 --list-ports}}<br />
* {{ic|gphoto2 --auto-detect}}<br />
* {{ic|gphoto2 --summary}}<br />
* {{ic|gphoto2 --list-files}}<br />
* {{ic|gphoto2 --get-all-files}}<br />
<br />
For advanced file manipulation, use<br />
* {{ic|gphoto2 --shell}}<br />
<br />
==Frontend (external) Applications for GPhoto2==<br />
*[http://www.gphoto.org/proj/gphotofs/ gphotofs] - allow using cameras with any tool able to read from a mounted filesystem.<br />
*[http://www.rawtherapee.com/ RawTherapee]<br />
*[http://darktable.org/ darktable]<br />
*[[Digikam]]<br />
*[http://f-spot.org/ F-Spot]<br />
*[http://live.gnome.org/gthumb Gthumb]<br />
*[http://www.gphoto.org/proj/gtkam/ GTKam]<br />
<br />
==Miscellaneous Troubleshooting==<br />
===Groups===<br />
Make sure that the user to which access should be granted is part of the [[Users and Groups#Groups|storage group]].<br />
<br />
==Wiki Articles Relating to Photo/Cameras==<br />
*[[Jalbum]] - Freeware for creating professional albums/galleries.<br />
*[[HCL/Digital Cameras]] - Partial list of supported cameras for gphoto2</div>Gladstonehttps://wiki.archlinux.org/index.php?title=OfflineIMAP&diff=200376OfflineIMAP2012-05-05T21:25:21Z<p>Gladstone: Undo revision 200338 by Gladstone (talk) -- This caused all folders to be disabled</p>
<hr />
<div>[[Category:Web Server]]<br />
<br />
[http://offlineimap.org/ OfflineIMAP] is an utility to sync mail from IMAP servers. It does not work with the POP3 protocol or mbox, and is usually paired with a MUA such as [[Mutt]].<br />
<br />
As of 06/26/2010, the original author of offlineimap [http://article.gmane.org/gmane.mail.imap.offlineimap.general/1759 ceased development]. A new maintainer has since [http://lists.alioth.debian.org/pipermail/offlineimap-project/2010-November/000286.html stepped forward] and as of 12/16/2010 developed seemed to be active.<br />
<br />
==Installing==<br />
Install the {{Pkg|offlineimap}} package with [[pacman]]:<br />
# pacman -S offlineimap<br />
<br />
==Configuring==<br />
Offlineimap is distributed with two default configuration files, which are both located in {{ic|/usr/share/offlineimap/}}. {{ic|offlineimap.conf}} contains every setting and is thorougly documented. Alternatively, {{ic|offlineimap.conf.minimal}} is is not commented and only contains a small number of settings (see: [[#Minimal|Minimal]]).<br />
<br />
Copy one of the default configuration files to {{ic|~/.offlineimaprc}}.<br />
<br />
{{note|Writing a comment after an option/value on the same line is invalid syntax, hence take care that comments are placed on their own separate line.}}<br />
<br />
===Minimal===<br />
The following file is a commented version of {{ic|offlineimap.conf.minimal}}.<br />
{{hc|~/.offlineimaprc|2=<br />
<nowiki><br />
[general]<br />
# This should contain a comma delimited list of all identifiers of the accounts<br />
# that are to be synced<br />
accounts = main<br />
# If there are two accounts; `main' and `alternative'...<br />
#accounts = main,alternative<br />
<br />
[Account main]<br />
# The identifier for the local repository; e.g., the maildir that offlineimap<br />
# will sync with an IMAP server<br />
localrepository = main-local<br />
# The identifier for the remote repository. This is the actual IMAP, which is<br />
# usually foreign to the system<br />
remoterepository = main-remote<br />
<br />
[Repository main-local]<br />
# Currently, offlineimap only supports maildir and IMAP for local repositories<br />
type = Maildir<br />
# Where should the mail be placed?<br />
localfolders = ~/Maildir<br />
<br />
[Repository main-remote]<br />
# Remote repos can be IMAP or Gmail, the latter being a preconfigured IMAP<br />
type = IMAP<br />
remotehost = host.domain.tld<br />
remoteuser = username<br />
</nowiki><br />
}}<br />
<br />
==Usage==<br />
Before running offlineimap, create any parent directories that were allocated to local repositories:<br />
$ mkdir ~/Maildir<br />
<br />
Now, run the program:<br />
$ offlineimap<br />
<br />
Mail accounts will now be synced. If anything goes wrong, take a closer look at the error messages. OfflineIMAP is usually very verbose about problems; partly because the developers didn't bother with taking away tracebacks from the final product.<br />
<br />
==Miscellaneous==<br />
''Various settings and improvements''<br />
<br />
===Running offlineimap in the background===<br />
Most other mail transfer agents assume that the user will be using the tool as a [[daemon]] by making the program sync periodically by default. In offlineimap, there are a few settings that control backgrounded tasks.<br />
<br />
Confusingly, they are spread thin all-over the configuration file:<br />
{{hc|~/.offlineimaprc|2=<br />
<nowiki><br />
# In the general section<br />
[general]<br />
# Controls how many accounts may be synced simultaneously<br />
maxsyncaccounts = 1<br />
<br />
# In the account identifier<br />
[Account main]<br />
# Minutes between syncs<br />
autorefresh = 5<br />
# Number of quick-syncs between autorefreshes. Quick-syncs do not update if the<br />
# only changes were to IMAP flags<br />
quick = 10<br />
<br />
# In the remote repository identifier<br />
[Repository main-remote]<br />
# Instead of closing the connection once a sync is complete, offlineimap will<br />
# send empty data to the server to hold the connection open. A value of 60<br />
# attempts to hold the connection for a minute between syncs (both quick and<br />
# autorefresh)<br />
keepalive = 60<br />
</nowiki><br />
}}<br />
<br />
====cron job====<br />
1. Configure background jobs as shown in [[#Running offlineimap in the background]].<br />
<br />
2. Use a log-friendly user interface:<br />
{{hc|~/.offlineimaprc|2=<br />
<nowiki><br />
[general]<br />
# This will suppress anything but errors<br />
ui = Noninteractive.Quiet<br />
</nowiki><br />
}}<br />
<br />
3. Write a wrapper script for [[daemon]]izing programs, or use the one shown below:<br />
{{hc|/usr/local/bin/start_daemon|2=<br />
<nowiki><br />
#!/bin/sh<br />
<br />
set -efu<br />
<br />
ionice_class=<br />
ionice_priority=<br />
nice=<br />
<br />
while getopts c:p:n: f; do<br />
case $f in<br />
c) ionice_class=$OPTARG;;<br />
p) ionice_priority=$OPTARG;;<br />
n) nice=$OPTARG;;<br />
*) exit 2;;<br />
esac<br />
done<br />
shift $((OPTIND - 1))<br />
<br />
cmd=$*<br />
io=<br />
<br />
if pgrep -u "$(id -u)" -xf -- "$cmd" >/dev/null 2>&1; then<br />
exit 0<br />
fi<br />
<br />
if type ionice >/dev/null 2>&1; then<br />
[ -n "$ionice_class" ] && { io=1; cmd="-c $ionice_class $cmd"; }<br />
[ -n "$ionice_priority" ] && { io=1; cmd="-n $ionice_priority $cmd"; }<br />
[ -n "$io" ] && cmd="ionice $cmd"<br />
fi<br />
<br />
if type nice >/dev/null 2>&1; then<br />
[ -n "$nice" ] && cmd="nice -n $nice $cmd"<br />
fi<br />
<br />
exec $cmd<br />
</nowiki><br />
}}<br />
<br />
4. Finally, add a crontab entry:<br />
$ crontab -e<br />
The line should specify the interpreter for correct {{Ic|pgrep -xf}} results:<br />
*/5 * * * * exec /usr/local/bin/start_daemon -n19 -c2 -p7 python2 /usr/bin/offlineimap <br />
<br />
If you are using offlineimap-git from AUR, you'll want to change python2 to python<br />
<br />
The wrapper script is needed because offlineimap has the tendency to sporadically crash, even more so when facing connection problems.<br />
<br />
===Automatic mutt mailbox generation===<br />
[[Mutt]] cannot be simply pointed to an IMAP or maildir directory and be expected to guess which subdirectories happen to be the mailboxes, yet offlineimap can generate a muttrc fragment containing the mailboxes that it syncs.<br />
{{hc|~/.offlineimaprc|2=<br />
<nowiki><br />
[mbnames]<br />
enabled = yes<br />
filename = ~/.mutt/mailboxes<br />
header = "mailboxes "<br />
peritem = "+%(accountname)s/%(foldername)s"<br />
sep = " "<br />
footer = "\n"<br />
</nowiki><br />
}}<br />
<br />
Then add {{Ic|source ~/.mutt/mailboxes}} to {{ic|~/.mutt/muttrc}}.<br />
<br />
===Gmail configuration===<br />
This remote repository is configured specifically for Gmail support, substituting folder names in uppercase for lowercase, among other small additions. Keep in mind that this configuration does not sync the ''All Mail'' folder, since it is usually unnecessary and skipping it prevents bandwidth costs:<br />
<br />
{{hc|~/.offlineimaprc|2=<br />
<nowiki><br />
[Repository gmail-remote]<br />
type = Gmail<br />
remoteuser = user@gmail.com<br />
remotepass = password<br />
nametrans = lambda foldername: re.sub ('^\[gmail\]', 'bak',<br />
re.sub ('sent_mail', 'sent',<br />
re.sub ('starred', 'flagged',<br />
re.sub (' ', '_', foldername.lower()))))<br />
folderfilter = lambda foldername: foldername not in '[Gmail]/All Mail'<br />
</nowiki><br />
}}<br />
<br />
Note: if you have Gmail set to another language, the folder names may appear translated too, e.g. "verzonden_berichten" instead of "sent_mail".<br />
<br />
Note: after version 6.3.5, offlineimap also creates remote folders to match your local ones. Thus you may need a nametrans rule for your local repository too that reverses the effects of this nametrans rule.<br />
<br />
===Not having to enter the password all the time===<br />
====.netrc====<br />
Add the following lines to your {ic|~/.netrc}:<br />
<br />
machine hostname.tld<br />
login [your username]<br />
password [your password]<br />
<br />
Don't forget to give the file appropriate rights like 600 or 700:<br />
chmod 600 ~/.netrc<br />
<br />
<br />
====Gnome Keyring====<br />
http://www.clasohm.com/blog/one-entry?entry_id=90957 gives an example of how to use gnome-keyring to store the password. <br />
<br />
====python-keyring====<br />
There's a general solution that should work for any keyring. Install [http://pypi.python.org/pypi/keyring python-keyring] from [[AUR]], then change your ~/.offlineimaprc to say something like:<br />
<br />
{{bc|1=<br />
[general]<br />
pythonfile = /home/user/offlineimap.py<br />
…<br />
[Repository RemoteEmail]<br />
remoteuser = username@host.net<br />
remotepasseval = keyring.get_password("offlineimap","username@host.net")<br />
…<br />
}}<br />
<br />
and somewhere in ~/offlineimap.py add {{ic|import keyring}}. Now all you have to do is set your password, like so:<br />
<br />
{{bc|$ python2 <br />
>>> import keyring<br />
>>> keyring.set_password("offlineimap","username@host.net", "MYPASSWORD")'}}<br />
<br />
and it'll grab the password from your (kwallet/gnome-) keyring instead of having to keep it in plaintext or enter it each time.<br />
<br />
===Kerberos authentication===<br />
Install python2-kerberos from [https://aur.archlinux.org/packages.php?ID=50639 AUR] and do not specify remotepass in your .offlineimaprc. <br />
OfflineImap figure out the reset all if have a valid Kerberos TGT. <br />
If you have 'maxconnections', it will fail for some connection. Comment 'maxconnections' out will solve this problem.<br />
<br />
==Troubleshooting==<br />
<br />
===Overriding UI and autorefresh settings===<br />
For the sake of troubleshooting, it is sometimes convenient to launch offlineimap with a more verbose UI, no background syncs and perhaps even a debug level:<br />
$ offlineimap [ -o ] [ -d <debug_type> ] [ -u <ui> ]<br />
;-o<br />
:Disable autorefresh, keepalive, etc.<br />
<br />
;-d <debug_type><br />
:Where ''<debug_type>'' is one of {{Ic|imap}}, {{Ic|maildir}} or {{Ic|thread}}. Debugging imap and maildir are, by far, the most useful.<br />
<br />
;-u <ui><br />
:Where ''<ui>'' is one of {{Ic|CURSES.BLINKENLIGHTS}}, {{Ic|TTY.TTYUI}}, {{Ic|NONINTERACTIVE.BASIC}}, {{Ic|NONINTERACTIVE.QUIET}} or {{Ic|MACHINE.MACHINEUI}}. TTY.TTYUI is sufficient for debugging purposes.<br />
<br />
{{Note|More recent versions use the following for <ui>: {{Ic|blinkenlights}}, {{Ic|ttyui}}, {{Ic|basic}}, {{Ic|quiet}} or {{Ic|machineui}}.}}<br />
<br />
===Curses interface (Curses.Blinkenlights) locks terminal===<br />
Because of a bug in Python's ncurses package (http://bugs.python.org/issue7567) the Curses interface of OfflineIMAP breaks the terminal on exit.<br />
While it appears to irreparably lock the terminal, in reality it only prevents commands from being displayed.<br />
The bug has been fixed in Python's SVN for all versions 2.6 up to 3.2 but the current package in the repositories (Python 2.6.5) is still buggy.<br />
<br />
In order to solve the issue:<br />
*either append {{Ic|reset}} to OfflineIMAP's launch command:<br />
$ offlineimap; reset<br />
*or change the {{Ic|ui}} field in {{ic|~/.offlineimaprc}} to select a fully functional one:<br />
ui = TTY.TTYUI<br />
*or as quick workaround you can just use the following command to skip the reset() function in Curses.py which causes the problem<br />
# sed -i '125i\ \ \ \ \ \ \ \ return' /usr/lib/python2.6/site-packages/offlineimap/ui/Curses.py<br />
<br />
===netrc authentication===<br />
There are some bugs in the current {{Pkg|offlineimap}} which makes it impossible to read the authentication data from {{ic|~/.netrc}} if there are multiple Accounts per remote machine. ( see [http://comments.gmane.org/gmane.mail.imap.offlineimap.general/3024 Mail Archive ] ) But they are fixed in the GIT package {{AUR|offlineimap-git}} (note that is AUR package is flagged as out of date; see the current GitHub external link below).<br />
Using the package you can collect all passwords in {{ic|~/.netrc}}. And do not forget to set it's access rights:<br />
chmod 600 ~/.netrc<br />
An example netrc file would be<br />
{{hc|~/.netrc|<br />
machine mail.myhost.de<br />
login mr_smith<br />
password secret<br />
}}<br />
<br />
===socket.ssl deprecation warnings===<br />
Depending on the currently installed python version, running offlineimap throws this warning:<br />
DeprecationWarning: socket.ssl() is deprecated. Use ssl.wrap_socket() instead.<br />
<br />
This can be particularly annoying when offlineimap's output is being logged or mailed through [[cron]].<br />
<br />
To fix the problem, apply this [http://github.com/jgoerzen/offlineimap/commit/a7810166335bb0e6f5c7dab26adf707c38adf6ff upstream] patch or install {{AUR|offlineimap-git}}:<br />
{{bc|<nowiki><br />
--- offlineimap/imaplibutil.py.orig 2009-08-12 01:24:23.000000000 -0430<br />
+++ offlineimap/imaplibutil.py 2010-06-07 11:17:37.849038683 -0430<br />
@@ -23,9 +23,11 @@<br />
# Import the symbols we need that aren't exported by default<br />
from imaplib import IMAP4_PORT, IMAP4_SSL_PORT, InternalDate, Mon2num<br />
<br />
-# ssl is new in python 2.6<br />
-if (sys.version_info[0] == 2 and sys.version_info[1] >= 6) or sys.version_info[0] >= 3:<br />
+try:<br />
import ssl<br />
+ ssl_wrap = ssl.wrap_socket<br />
+except ImportError:<br />
+ ssl_wrap = socket.ssl<br />
<br />
class IMAP4_Tunnel(IMAP4):<br />
"""IMAP4 client class over a tunnel<br />
@@ -169,7 +171,7 @@<br />
if last_error != 0:<br />
# FIXME<br />
raise socket.error(last_error)<br />
- self.sslobj = socket.ssl(self.sock, self.keyfile, self.certfile)<br />
+ self.sslobj = ssl_wrap(self.sock, self.keyfile, self.certfile)<br />
self.sslobj = sslwrapper(self.sslobj)<br />
<br />
mustquote = re.compile(r"[^\w!#$%&'+,.:;<=>?^`|~-]")<br />
</nowiki>}}<br />
<br />
The diff is relative to the root buildir and it can be applied by using [[ABS]].<br />
==External links==<br />
* [http://lists.alioth.debian.org/mailman/listinfo/offlineimap-project Official OfflineIMAP mailing list]<br />
* [http://roland.entierement.nu/blog/2010/09/08/gnus-dovecot-offlineimap-search-a-howto.html Gnus, Dovecot, OfflineIMAP, search: a HOWTO]<br />
** This setup worked for me, only difference being I had to add {{ic|1=mail_location = maildir:~/Maildir}} to {{ic|/etc/dovecot/dovecot.conf}}. Also, I used the [[OfflineIMAP#Gmail_configuration|Gmail configuration above]]. --[[User:Unhammer|Unhammer]] 09:24, 22 October 2010 (EDT)<br />
* [http://pbrisbin.com/posts/mutt_gmail_offlineimap/ Mutt + Gmail + Offlineimap]<br />
** An outline of brisbin's simple gmail/mutt setup using cron to keep offlineimap syncing.<br />
* [https://github.com/nicolas33/offlineimap Current OfflineIMAP maintainer's fork on GitHub]<br />
** Note that a strict build of this on current Arch will fail due to python references unless they are replaced with python2</div>Gladstonehttps://wiki.archlinux.org/index.php?title=OfflineIMAP&diff=200338OfflineIMAP2012-05-05T13:42:39Z<p>Gladstone: /* Gmail configuration */ -- add not on how to disable remote folder creation</p>
<hr />
<div>[[Category:Web Server]]<br />
<br />
[http://offlineimap.org/ OfflineIMAP] is an utility to sync mail from IMAP servers. It does not work with the POP3 protocol or mbox, and is usually paired with a MUA such as [[Mutt]].<br />
<br />
As of 06/26/2010, the original author of offlineimap [http://article.gmane.org/gmane.mail.imap.offlineimap.general/1759 ceased development]. A new maintainer has since [http://lists.alioth.debian.org/pipermail/offlineimap-project/2010-November/000286.html stepped forward] and as of 12/16/2010 developed seemed to be active.<br />
<br />
==Installing==<br />
Install the {{Pkg|offlineimap}} package with [[pacman]]:<br />
# pacman -S offlineimap<br />
<br />
==Configuring==<br />
Offlineimap is distributed with two default configuration files, which are both located in {{ic|/usr/share/offlineimap/}}. {{ic|offlineimap.conf}} contains every setting and is thorougly documented. Alternatively, {{ic|offlineimap.conf.minimal}} is is not commented and only contains a small number of settings (see: [[#Minimal|Minimal]]).<br />
<br />
Copy one of the default configuration files to {{ic|~/.offlineimaprc}}.<br />
<br />
{{note|Writing a comment after an option/value on the same line is invalid syntax, hence take care that comments are placed on their own separate line.}}<br />
<br />
===Minimal===<br />
The following file is a commented version of {{ic|offlineimap.conf.minimal}}.<br />
{{hc|~/.offlineimaprc|2=<br />
<nowiki><br />
[general]<br />
# This should contain a comma delimited list of all identifiers of the accounts<br />
# that are to be synced<br />
accounts = main<br />
# If there are two accounts; `main' and `alternative'...<br />
#accounts = main,alternative<br />
<br />
[Account main]<br />
# The identifier for the local repository; e.g., the maildir that offlineimap<br />
# will sync with an IMAP server<br />
localrepository = main-local<br />
# The identifier for the remote repository. This is the actual IMAP, which is<br />
# usually foreign to the system<br />
remoterepository = main-remote<br />
<br />
[Repository main-local]<br />
# Currently, offlineimap only supports maildir and IMAP for local repositories<br />
type = Maildir<br />
# Where should the mail be placed?<br />
localfolders = ~/Maildir<br />
<br />
[Repository main-remote]<br />
# Remote repos can be IMAP or Gmail, the latter being a preconfigured IMAP<br />
type = IMAP<br />
remotehost = host.domain.tld<br />
remoteuser = username<br />
</nowiki><br />
}}<br />
<br />
==Usage==<br />
Before running offlineimap, create any parent directories that were allocated to local repositories:<br />
$ mkdir ~/Maildir<br />
<br />
Now, run the program:<br />
$ offlineimap<br />
<br />
Mail accounts will now be synced. If anything goes wrong, take a closer look at the error messages. OfflineIMAP is usually very verbose about problems; partly because the developers didn't bother with taking away tracebacks from the final product.<br />
<br />
==Miscellaneous==<br />
''Various settings and improvements''<br />
<br />
===Running offlineimap in the background===<br />
Most other mail transfer agents assume that the user will be using the tool as a [[daemon]] by making the program sync periodically by default. In offlineimap, there are a few settings that control backgrounded tasks.<br />
<br />
Confusingly, they are spread thin all-over the configuration file:<br />
{{hc|~/.offlineimaprc|2=<br />
<nowiki><br />
# In the general section<br />
[general]<br />
# Controls how many accounts may be synced simultaneously<br />
maxsyncaccounts = 1<br />
<br />
# In the account identifier<br />
[Account main]<br />
# Minutes between syncs<br />
autorefresh = 5<br />
# Number of quick-syncs between autorefreshes. Quick-syncs do not update if the<br />
# only changes were to IMAP flags<br />
quick = 10<br />
<br />
# In the remote repository identifier<br />
[Repository main-remote]<br />
# Instead of closing the connection once a sync is complete, offlineimap will<br />
# send empty data to the server to hold the connection open. A value of 60<br />
# attempts to hold the connection for a minute between syncs (both quick and<br />
# autorefresh)<br />
keepalive = 60<br />
</nowiki><br />
}}<br />
<br />
====cron job====<br />
1. Configure background jobs as shown in [[#Running offlineimap in the background]].<br />
<br />
2. Use a log-friendly user interface:<br />
{{hc|~/.offlineimaprc|2=<br />
<nowiki><br />
[general]<br />
# This will suppress anything but errors<br />
ui = Noninteractive.Quiet<br />
</nowiki><br />
}}<br />
<br />
3. Write a wrapper script for [[daemon]]izing programs, or use the one shown below:<br />
{{hc|/usr/local/bin/start_daemon|2=<br />
<nowiki><br />
#!/bin/sh<br />
<br />
set -efu<br />
<br />
ionice_class=<br />
ionice_priority=<br />
nice=<br />
<br />
while getopts c:p:n: f; do<br />
case $f in<br />
c) ionice_class=$OPTARG;;<br />
p) ionice_priority=$OPTARG;;<br />
n) nice=$OPTARG;;<br />
*) exit 2;;<br />
esac<br />
done<br />
shift $((OPTIND - 1))<br />
<br />
cmd=$*<br />
io=<br />
<br />
if pgrep -u "$(id -u)" -xf -- "$cmd" >/dev/null 2>&1; then<br />
exit 0<br />
fi<br />
<br />
if type ionice >/dev/null 2>&1; then<br />
[ -n "$ionice_class" ] && { io=1; cmd="-c $ionice_class $cmd"; }<br />
[ -n "$ionice_priority" ] && { io=1; cmd="-n $ionice_priority $cmd"; }<br />
[ -n "$io" ] && cmd="ionice $cmd"<br />
fi<br />
<br />
if type nice >/dev/null 2>&1; then<br />
[ -n "$nice" ] && cmd="nice -n $nice $cmd"<br />
fi<br />
<br />
exec $cmd<br />
</nowiki><br />
}}<br />
<br />
4. Finally, add a crontab entry:<br />
$ crontab -e<br />
The line should specify the interpreter for correct {{Ic|pgrep -xf}} results:<br />
*/5 * * * * exec /usr/local/bin/start_daemon -n19 -c2 -p7 python2 /usr/bin/offlineimap <br />
<br />
If you are using offlineimap-git from AUR, you'll want to change python2 to python<br />
<br />
The wrapper script is needed because offlineimap has the tendency to sporadically crash, even more so when facing connection problems.<br />
<br />
===Automatic mutt mailbox generation===<br />
[[Mutt]] cannot be simply pointed to an IMAP or maildir directory and be expected to guess which subdirectories happen to be the mailboxes, yet offlineimap can generate a muttrc fragment containing the mailboxes that it syncs.<br />
{{hc|~/.offlineimaprc|2=<br />
<nowiki><br />
[mbnames]<br />
enabled = yes<br />
filename = ~/.mutt/mailboxes<br />
header = "mailboxes "<br />
peritem = "+%(accountname)s/%(foldername)s"<br />
sep = " "<br />
footer = "\n"<br />
</nowiki><br />
}}<br />
<br />
Then add {{Ic|source ~/.mutt/mailboxes}} to {{ic|~/.mutt/muttrc}}.<br />
<br />
===Gmail configuration===<br />
This remote repository is configured specifically for Gmail support, substituting folder names in uppercase for lowercase, among other small additions. Keep in mind that this configuration does not sync the ''All Mail'' folder, since it is usually unnecessary and skipping it prevents bandwidth costs:<br />
<br />
{{hc|~/.offlineimaprc|2=<br />
<nowiki><br />
[Repository gmail-remote]<br />
type = Gmail<br />
remoteuser = user@gmail.com<br />
remotepass = password<br />
nametrans = lambda foldername: re.sub ('^\[gmail\]', 'bak',<br />
re.sub ('sent_mail', 'sent',<br />
re.sub ('starred', 'flagged',<br />
re.sub (' ', '_', foldername.lower()))))<br />
folderfilter = lambda foldername: foldername not in '[Gmail]/All Mail'<br />
</nowiki><br />
}}<br />
<br />
Note: if you have Gmail set to another language, the folder names may appear translated too, e.g. "verzonden_berichten" instead of "sent_mail".<br />
<br />
Note: after version 6.3.5, offlineimap also creates remote folders to match your local ones. Thus you may need a nametrans rule for your local repository too that reverses the effects of this nametrans rule or [http://comments.gmane.org/gmane.mail.imap.offlineimap.general/5536 disable this feature entirely].<br />
<br />
===Not having to enter the password all the time===<br />
====.netrc====<br />
Add the following lines to your {ic|~/.netrc}:<br />
<br />
machine hostname.tld<br />
login [your username]<br />
password [your password]<br />
<br />
Don't forget to give the file appropriate rights like 600 or 700:<br />
chmod 600 ~/.netrc<br />
<br />
<br />
====Gnome Keyring====<br />
http://www.clasohm.com/blog/one-entry?entry_id=90957 gives an example of how to use gnome-keyring to store the password. <br />
<br />
====python-keyring====<br />
There's a general solution that should work for any keyring. Install [http://pypi.python.org/pypi/keyring python-keyring] from [[AUR]], then change your ~/.offlineimaprc to say something like:<br />
<br />
{{bc|1=<br />
[general]<br />
pythonfile = /home/user/offlineimap.py<br />
…<br />
[Repository RemoteEmail]<br />
remoteuser = username@host.net<br />
remotepasseval = keyring.get_password("offlineimap","username@host.net")<br />
…<br />
}}<br />
<br />
and somewhere in ~/offlineimap.py add {{ic|import keyring}}. Now all you have to do is set your password, like so:<br />
<br />
{{bc|$ python2 <br />
>>> import keyring<br />
>>> keyring.set_password("offlineimap","username@host.net", "MYPASSWORD")'}}<br />
<br />
and it'll grab the password from your (kwallet/gnome-) keyring instead of having to keep it in plaintext or enter it each time.<br />
<br />
===Kerberos authentication===<br />
Install python2-kerberos from [https://aur.archlinux.org/packages.php?ID=50639 AUR] and do not specify remotepass in your .offlineimaprc. <br />
OfflineImap figure out the reset all if have a valid Kerberos TGT. <br />
If you have 'maxconnections', it will fail for some connection. Comment 'maxconnections' out will solve this problem.<br />
<br />
==Troubleshooting==<br />
<br />
===Overriding UI and autorefresh settings===<br />
For the sake of troubleshooting, it is sometimes convenient to launch offlineimap with a more verbose UI, no background syncs and perhaps even a debug level:<br />
$ offlineimap [ -o ] [ -d <debug_type> ] [ -u <ui> ]<br />
;-o<br />
:Disable autorefresh, keepalive, etc.<br />
<br />
;-d <debug_type><br />
:Where ''<debug_type>'' is one of {{Ic|imap}}, {{Ic|maildir}} or {{Ic|thread}}. Debugging imap and maildir are, by far, the most useful.<br />
<br />
;-u <ui><br />
:Where ''<ui>'' is one of {{Ic|CURSES.BLINKENLIGHTS}}, {{Ic|TTY.TTYUI}}, {{Ic|NONINTERACTIVE.BASIC}}, {{Ic|NONINTERACTIVE.QUIET}} or {{Ic|MACHINE.MACHINEUI}}. TTY.TTYUI is sufficient for debugging purposes.<br />
<br />
{{Note|More recent versions use the following for <ui>: {{Ic|blinkenlights}}, {{Ic|ttyui}}, {{Ic|basic}}, {{Ic|quiet}} or {{Ic|machineui}}.}}<br />
<br />
===Curses interface (Curses.Blinkenlights) locks terminal===<br />
Because of a bug in Python's ncurses package (http://bugs.python.org/issue7567) the Curses interface of OfflineIMAP breaks the terminal on exit.<br />
While it appears to irreparably lock the terminal, in reality it only prevents commands from being displayed.<br />
The bug has been fixed in Python's SVN for all versions 2.6 up to 3.2 but the current package in the repositories (Python 2.6.5) is still buggy.<br />
<br />
In order to solve the issue:<br />
*either append {{Ic|reset}} to OfflineIMAP's launch command:<br />
$ offlineimap; reset<br />
*or change the {{Ic|ui}} field in {{ic|~/.offlineimaprc}} to select a fully functional one:<br />
ui = TTY.TTYUI<br />
*or as quick workaround you can just use the following command to skip the reset() function in Curses.py which causes the problem<br />
# sed -i '125i\ \ \ \ \ \ \ \ return' /usr/lib/python2.6/site-packages/offlineimap/ui/Curses.py<br />
<br />
===netrc authentication===<br />
There are some bugs in the current {{Pkg|offlineimap}} which makes it impossible to read the authentication data from {{ic|~/.netrc}} if there are multiple Accounts per remote machine. ( see [http://comments.gmane.org/gmane.mail.imap.offlineimap.general/3024 Mail Archive ] ) But they are fixed in the GIT package {{AUR|offlineimap-git}} (note that is AUR package is flagged as out of date; see the current GitHub external link below).<br />
Using the package you can collect all passwords in {{ic|~/.netrc}}. And do not forget to set it's access rights:<br />
chmod 600 ~/.netrc<br />
An example netrc file would be<br />
{{hc|~/.netrc|<br />
machine mail.myhost.de<br />
login mr_smith<br />
password secret<br />
}}<br />
<br />
===socket.ssl deprecation warnings===<br />
Depending on the currently installed python version, running offlineimap throws this warning:<br />
DeprecationWarning: socket.ssl() is deprecated. Use ssl.wrap_socket() instead.<br />
<br />
This can be particularly annoying when offlineimap's output is being logged or mailed through [[cron]].<br />
<br />
To fix the problem, apply this [http://github.com/jgoerzen/offlineimap/commit/a7810166335bb0e6f5c7dab26adf707c38adf6ff upstream] patch or install {{AUR|offlineimap-git}}:<br />
{{bc|<nowiki><br />
--- offlineimap/imaplibutil.py.orig 2009-08-12 01:24:23.000000000 -0430<br />
+++ offlineimap/imaplibutil.py 2010-06-07 11:17:37.849038683 -0430<br />
@@ -23,9 +23,11 @@<br />
# Import the symbols we need that aren't exported by default<br />
from imaplib import IMAP4_PORT, IMAP4_SSL_PORT, InternalDate, Mon2num<br />
<br />
-# ssl is new in python 2.6<br />
-if (sys.version_info[0] == 2 and sys.version_info[1] >= 6) or sys.version_info[0] >= 3:<br />
+try:<br />
import ssl<br />
+ ssl_wrap = ssl.wrap_socket<br />
+except ImportError:<br />
+ ssl_wrap = socket.ssl<br />
<br />
class IMAP4_Tunnel(IMAP4):<br />
"""IMAP4 client class over a tunnel<br />
@@ -169,7 +171,7 @@<br />
if last_error != 0:<br />
# FIXME<br />
raise socket.error(last_error)<br />
- self.sslobj = socket.ssl(self.sock, self.keyfile, self.certfile)<br />
+ self.sslobj = ssl_wrap(self.sock, self.keyfile, self.certfile)<br />
self.sslobj = sslwrapper(self.sslobj)<br />
<br />
mustquote = re.compile(r"[^\w!#$%&'+,.:;<=>?^`|~-]")<br />
</nowiki>}}<br />
<br />
The diff is relative to the root buildir and it can be applied by using [[ABS]].<br />
==External links==<br />
* [http://lists.alioth.debian.org/mailman/listinfo/offlineimap-project Official OfflineIMAP mailing list]<br />
* [http://roland.entierement.nu/blog/2010/09/08/gnus-dovecot-offlineimap-search-a-howto.html Gnus, Dovecot, OfflineIMAP, search: a HOWTO]<br />
** This setup worked for me, only difference being I had to add {{ic|1=mail_location = maildir:~/Maildir}} to {{ic|/etc/dovecot/dovecot.conf}}. Also, I used the [[OfflineIMAP#Gmail_configuration|Gmail configuration above]]. --[[User:Unhammer|Unhammer]] 09:24, 22 October 2010 (EDT)<br />
* [http://pbrisbin.com/posts/mutt_gmail_offlineimap/ Mutt + Gmail + Offlineimap]<br />
** An outline of brisbin's simple gmail/mutt setup using cron to keep offlineimap syncing.<br />
* [https://github.com/nicolas33/offlineimap Current OfflineIMAP maintainer's fork on GitHub]<br />
** Note that a strict build of this on current Arch will fail due to python references unless they are replaced with python2</div>Gladstonehttps://wiki.archlinux.org/index.php?title=ZNC&diff=164183ZNC2011-10-06T00:03:53Z<p>Gladstone: /* Init script */</p>
<hr />
<div>[[Category:Daemons and system services (English)]]<br />
[[Category:Internet Relay Chat (English)]]<br />
{{i18n|ZNC}}<br />
<br />
<br />
'''ZNC''' is an advanced IRC bouncer that is left connected so an IRC client can disconnect/reconnect without loosing the chat session.<br />
<br />
== Init script ==<br />
<br />
By default, ZNC does not include an daemon init script (like those usually found in {{Filename|/etc/rc.d/}}). It maybe preferable to run ZNC as a daemon:<br />
<br />
1. Install and create a config as normal:<br />
<br />
pacman -S znc<br />
znc --makeconf<br />
<br />
2. Move the generated config to a global directory:<br />
<br />
mkdir /etc/znc<br />
mv /home/$USER/.znc/* /etc/znc/<br />
rm -rf /home/$USER/.znc<br />
<br />
3. Create a new system user account<br />
<br />
useradd --system --no-create-home --user-group znc<br />
<br />
4. Apply the correct permissions to the configuration directory<br />
<br />
chown -R znc:znc /etc/znc<br />
<br />
5. Copy the prepared [https://gist.github.com/1266098 init script] to {{Filename|/etc/rc.d/znc}}<br />
<br />
cd /etc/rc.d<br />
wget https://raw.github.com/gist/1266098/b5530ead3f797ef344fb0e0cba16d270281d087b/znc<br />
<br />
6. Add znc to the [daemons] section in '''/etc/rc.conf'''.<br />
<br />
Start and stop the ZNC daemon as usual by running:<br />
rc.d {start|stop|restart} znc<br />
<br />
== External links ==<br />
<br />
* [http://wiki.znc.in/ZNC ZNC (website)]<br />
* [http://doomclaw.de/index.php/2009/08/18/run-znc-at-boot-with-an-init-script/ Init script guide]</div>Gladstonehttps://wiki.archlinux.org/index.php?title=ZNC&diff=164182ZNC2011-10-06T00:02:51Z<p>Gladstone: </p>
<hr />
<div>[[Category:Daemons and system services (English)]]<br />
[[Category:Internet Relay Chat (English)]]<br />
{{i18n|ZNC}}<br />
<br />
<br />
'''ZNC''' is an advanced IRC bouncer that is left connected so an IRC client can disconnect/reconnect without loosing the chat session.<br />
<br />
== Init script ==<br />
<br />
By default, ZNC does not include an daemon init script (like those usually found in {Filename:/etc/rc.d/}). It maybe preferable to run ZNC as a daemon:<br />
<br />
1. Install and create a config as normal:<br />
<br />
pacman -S znc<br />
znc --makeconf<br />
<br />
2. Move the generated config to a global directory:<br />
<br />
mkdir /etc/znc<br />
mv /home/$USER/.znc/* /etc/znc/<br />
rm -rf /home/$USER/.znc<br />
<br />
3. Create a new system user account<br />
<br />
useradd --system --no-create-home --user-group znc<br />
<br />
4. Apply the correct permissions to the configuration directory<br />
<br />
chown -R znc:znc /etc/znc<br />
<br />
5. Copy the prepared [https://gist.github.com/1266098 init script] to {Filename:/etc/rc.d/znc}<br />
<br />
cd /etc/rc.d<br />
wget https://raw.github.com/gist/1266098/b5530ead3f797ef344fb0e0cba16d270281d087b/znc<br />
<br />
6. Add znc to the [daemons] section in '''/etc/rc.conf'''.<br />
<br />
Start and stop the ZNC daemon as usual by running:<br />
rc.d {start|stop|restart} znc<br />
<br />
== External links ==<br />
<br />
* [http://wiki.znc.in/ZNC ZNC (website)]<br />
* [http://doomclaw.de/index.php/2009/08/18/run-znc-at-boot-with-an-init-script/ Init script guide]</div>Gladstonehttps://wiki.archlinux.org/index.php?title=ZNC&diff=164181ZNC2011-10-06T00:00:32Z<p>Gladstone: Create znc page, beginning with init script</p>
<hr />
<div>[[Category:Daemons and system services (English)]]<br />
[[Category:Internet Relay Chat (English)]]<br />
{{i18n|ZNC}}<br />
<br />
<br />
'''ZNC''' is an advanced IRC bouncer that is left connected so an IRC client can disconnect/reconnect without losing the chat session.<br />
<br />
== Init script ==<br />
<br />
By default, ZNC does not include an daemon init script (like those usually found in {Filename:/etc/rc.d/}). It maybe preferable to run ZNC as a daemon:<br />
<br />
1. Install and create a config as normal:<br />
<br />
pacman -S znc<br />
znc --makeconf<br />
<br />
2. Move the generated config to a global directory:<br />
<br />
mkdir /etc/znc<br />
mv /home/$USER/.znc/* /etc/znc/<br />
rm -rf /home/$USER/.znc<br />
<br />
3. Create a new system user account<br />
<br />
useradd --system --no-create-home --user-group znc<br />
<br />
4. Apply the correct permissions to the configuration directory<br />
<br />
chown -R znc:znc /etc/znc<br />
<br />
5. Copy the prepared [https://gist.github.com/1266098 init script] to {Filename:/etc/rc.d/znc}<br />
<br />
cd /etc/rc.d<br />
wget https://raw.github.com/gist/1266098/b5530ead3f797ef344fb0e0cba16d270281d087b/znc<br />
<br />
6. Add znc to the [daemons] section in '''/etc/rc.conf'''.<br />
<br />
Start and stop the ZNC daemon as usual by running:<br />
rc.d {start|stop|restart} znc<br />
<br />
== External links ==<br />
<br />
* [http://wiki.znc.in/ZNC ZNC (website)]<br />
* [http://doomclaw.de/index.php/2009/08/18/run-znc-at-boot-with-an-init-script/ Init script guide]</div>Gladstonehttps://wiki.archlinux.org/index.php?title=Talk:InspIRCd&diff=163995Talk:InspIRCd2011-10-04T21:21:50Z<p>Gladstone: /* Logging */</p>
<hr />
<div>== Logging ==<br />
<br />
The supplied rc.d script logs standard server messages to {{Filename|/var/log/inspircd/startup.log}}. Using the following is a un-recommended method of logging all user messages:<br />
<br />
<log method="file" type="USERINPUT USEROUTPUT" level="default" target="/var/log/inspircd/chat.log"><br />
<br />
In my experience however, this method '''did not work''' at all, instead requiring a [http://www.inspircd.org/forum/showthread.php?t=5592&page=3#21 third-party module];<br />
<br />
<log method="file" type="m_chatlog" level="default" target="/var/log/inspircd/chat.log"><br />
<br />
However, this caused duplicate logging between {{Filename|startup.log}} and {{Filename|chat.log}}, so I chose to disable the startup log by replacing line 15 in {{Filename|/etc/rc.d/inspircd}} with:<br />
<br />
su -s /bin/sh -c '/usr/sbin/inspircd --logfile /dev/null --config /etc/inspircd/inspircd.conf' 'inspircd' > /dev/null<br />
<br />
This was required because InspIRCd would '''not start''' if --logfile has not been set.</div>Gladstonehttps://wiki.archlinux.org/index.php?title=Talk:InspIRCd&diff=163994Talk:InspIRCd2011-10-04T21:21:25Z<p>Gladstone: Logging</p>
<hr />
<div>== Logging ==<br />
<br />
The supplied rc.d script logs standard server messages to {{Filename|/var/log/inspircd/startup.log}}. Using the following is a un-recommended method of logging all user messages:<br />
<br />
<log method="file" type="USERINPUT USEROUTPUT" level="default" target="/var/log/inspircd/chat.log"><br />
<br />
In my experience however, this method '''did not work''' at all, instead requiring a [http://www.inspircd.org/forum/showthread.php?t=5592&page=3#21 third-party module];<br />
<br />
<log method="file" type="m_chatlog" level="default" target="/var/log/inspircd/chat.log"><br />
<br />
However, this caused duplicate logging between {{Filename|startup.log}} and {{Filename|chat.log}}, so I chose to disable the startup log by replacing line 15 in {{Filename|/etc/rc.d/inspircd}} with:<br />
<br />
u -s /bin/sh -c '/usr/sbin/inspircd --logfile /dev/null --config /etc/inspircd/inspircd.conf' 'inspircd' > /dev/null<br />
<br />
This was required because InspIRCd would '''not start''' if --logfile has not been set.</div>Gladstonehttps://wiki.archlinux.org/index.php?title=InspIRCd&diff=163992InspIRCd2011-10-04T21:06:25Z<p>Gladstone: /* Loading modules */ -- Add section on building third party modules</p>
<hr />
<div>[[Category:Daemons and system services (English)]]<br />
[[Category:Internet Relay Chat (English)]]<br />
{{i18n|InspIRCd}}<br />
<br />
'''InspIRCd''' (Inspire IRC daemon) is a modular and lightweight IRC daemon written in C++. As it is one of the few IRCd projects written from scratch, it avoids a number of design flaws and speed issues that plague other more established IRCd projects with the same or less features, such as UnrealIRCd 3. It's the IRCd used by the [http://www.chatspike.net/ Chatspike IRC network].<br />
<br />
== Installing InspIRCd ==<br />
<br />
{{Note|Before you begin, check that you do not have any user or group named "inspired" as the package will create and run using this user privileges (for security reasons).}}<br />
<br />
Install [http://aur.archlinux.org/packages.php?ID=22429 inspircd] from the [[AUR]]. Alternatively if your architecture is x86_64 you can use the binary package available [https://s3.amazonaws.com/sector5d/inspircd-2.0.5-1-x86_64.pkg.tar.xz here]. This can be installed via the following:<br />
<br />
pacman -U https://s3.amazonaws.com/sector5d/inspircd-2.0.5-1-x86_64.pkg.tar.xz<br />
<br />
== Configuring (mandatory) ==<br />
<br />
This will depend a lot on your needs and system configuration so there's no default configuration. There is, however, an example (very well documented) configuration file located at {{Filename|/etc/inspircd/inspircd.conf.example}}. Read and edit this file carefully and when you're finished rename it to {{Filename|inspircd.conf}}.<br />
The {{Filename|inspircd.conf}}. file is formatted like an HTML document, which for most people is somewhat different to what they are used to. The format of an instruction within the configuration file looks like the following:<br />
<tagname variable="value"><br />
Note that are some {{Codeline|<nowiki><die value="anything here"></nowiki>}} lines in the example file to make sure you read the entire thing. You must remove these entries otherwise the server will not start.<br />
Further information is available at the [http://wiki.inspircd.org/Configuration InspIRCd configuration] wiki page.<br />
<br />
== Loading modules ==<br />
<br />
By default, InspIRCd loads no modules. As every feature outside of [http://tools.ietf.org/html/rfc1459 RFC 1459] is actually a module, by loading no modules your ircd really won't do anything impressive.<br />
You can load modules by adding for instance:<br />
<module name="m_silence.so"><br />
This will load the m_silence module (which provides the somewhat standard SILENCE list facility). You must restart the daemon for changes to take effect.<br />
A list of the available modules is available at the [http://wiki.inspircd.org/modules InspIRCd modules] wiki page.<br />
<br />
=== Third-party modules ===<br />
<br />
To install a third-party module, save the {{Filename|[module].cpp}} within {{Filename|[build-dir]/inspircd/src/inspircd/src/modules/}} and continue the build process. If you have already built and installed InspIRCd and have the source files intact, compile the module with {{Codeline|<nowiki>./configure -modupdate; make</nowiki>}} and copy to: {{Filename|/usr/lib/inspircd/modules/}}.<br />
<br />
== Starting/Stopping the daemon ==<br />
<br />
You can start and stop the InspIRCd daemon as usual by running:<br />
sudo /etc/rc.d/inspircd {start|stop|restart}<br />
The first start fails sometimes so try restarting until you get no errors. After this you shall have no further problems.<br />
The reason behind this is because of security reasons the daemon doesn't run as root as you normally would see, so the script must ensure that the user '''irc''' has permission to write/read the pid and log files.<br />
To start on boot just add (as always) [inspircd] to the [daemons] section in the '''/etc/rc.conf file'''.<br />
<br />
== External links ==<br />
<br />
* [http://www.inspircd.org Inspire IRCd (website)]<br />
* [http://wiki.inspircd.org/Main_Page Inspire IRCd (wiki)]<br />
* [irc://irc.inspircd.org/inspircd Inspire IRCd (irc channel)]</div>Gladstonehttps://wiki.archlinux.org/index.php?title=Udev&diff=160783Udev2011-09-20T12:00:12Z<p>Gladstone: /* Mount CDs */</p>
<hr />
<div>[[Category:Hardware detection and troubleshooting (English)]]<br />
[[Category:Auto-mounting (English)]]<br />
{{i18n|Udev}}<br />
{{Lowercase title}}<br />
<br />
'''udev''' replaces the functionality of both {{Codeline|hotplug}} and {{Codeline|hwdetect}}.<br />
<br />
''"udev is the device manager for the Linux kernel. Primarily, it manages device nodes in {{Filename|/dev}}. It is the successor of devfs and hotplug, which means that it handles the {{Filename|/dev}} directory and all user space actions when adding/removing devices, including firmware load."'' Source: [[Wikipedia:Udev]]<br />
<br />
udev loads kernel modules by utilizing coding parallelism to provide a potential performance advantage versus loading these modules serially. The modules are therefore loaded asynchronously. The inherent disadvantage of this method is that udev does not always load modules in the same order on each boot. If the machine has multiple block devices, this may manifest itself in the form of device nodes changing designations randomly. For example, if the machine has two hard drives, /dev/sda may randomly become /dev/sdb. See below for more info on this.<br />
<br />
==About udev rules==<br />
udev rules written by the administrator go in {{Filename|/etc/udev/rules.d/}}, their file name has to end with {{Filename|.rules}}. The udev rules shipped with various packages are found in {{Filename|/lib/udev/rules.d/}}. If there are two files by the same name under /lib and /etc, the ones in /etc take precedence.<br />
<br />
If you want to learn how to write udev rules see [http://www.reactivated.net/writing_udev_rules.html Writing udev rules].<br />
<br />
To get a list of all the attributes of a device you can use to write rules:<br />
# udevadm info -a -n [device name]<br />
<br />
Replace [device name] with the device present in the system, such as '/dev/sda' or '/dev/ttyUSB0'.<br />
<br />
Udev automatically detects changes to rule files, so changes take effect immediately without requiring udev to be restarted. However, the rules are not re-triggered automatically on already existing devices, so hotpluggable devices, such as USB devices, will probably have to be reconnected for the new rules to take effect.<br />
<br />
== Tips & Tricks ==<br />
=== UDisks ===<br />
Simply install UDisks:<br />
pacman -S udisks<br />
and all your media should be auto mounted in GNOME and KDE SC 4.6. There is no need for any additional rules this way.<br />
As an extra bonus you can remove HAL if you were only using that for auto mounting purposes.<br />
<br />
==== Automounting UDisks Wrappers ====<br />
A UDisks wrapper has the advantage of being very easy to install and needing no (or minimal) configuration. The wrapper will automatically mount things like CDs and flash drives.<br />
<br />
* [http://igurublog.wordpress.com/downloads/script-devmon/ devmon] - devmon ([http://aur.archlinux.org/packages.php?ID=45842 AUR]) is a configuration-less bash wrapper script for udisks which automounts optical discs and removable drives. It can also selectively autostart apps or execute commands after mounting, ignore specified devices and volume labels, and unmount removable drives. <br />
* [[udiskie]] - Written in Python. Allows auto mount and unmount by any user.<br />
* [http://aur.archlinux.org/packages.php?ID=38723 udisksevt] - Written in Haskell. Allows auto mount by any user. Designed to be integrated with [http://aur.archlinux.org/packages.php?ID=32005 traydevice].<br />
* The [http://aur.archlinux.org/packages.php?ID=46572 udisksvm bash script] uses udisks and [http://aur.archlinux.org/packages.php?ID=32005 Traydevice] to automount removable media and to control in GUI, with mouse clicks in systray, the un-mounting and re-mounting of disks or the ejection of optical disks.<br />
<br />
==== UDisks Shell Functions ====<br />
While UDisks includes a simple method of (un)mounting devices via command-line, it can be tiresome to type the commands out each time. These shell functions will generally shorten and ease command-line usage.<br />
<br />
* [https://bbs.archlinux.org/viewtopic.php?id=109307 udisks_functions] - Written for Bash.<br />
* [https://bbs.archlinux.org/viewtopic.php?id=117674 bashmount] - bashmount [http://aur.archlinux.org/packages.php?ID=48524 (AUR)] is a menu-driven bash script with a configuration file that makes it easy to configure and extend.<br />
<br />
=== Auto mounting USB devices ===<br />
{{Note|In the following rules the mount options are defined as {{Codeline|<nowiki>ENV{mount_options}="relatime"</nowiki>}}, see {{Codeline|man mount}} (and possibly {{Codeline|man ntfs-3g}}) for all available options and [[Maximizing Performance#Mount options]] for performance-related options.}}<br />
{{Note|The {{Codeline|users}} mount option will '''not''' allow users to unmount the filesystem.}}<br />
{{Tip|The {{Codeline|noexec}} mount option prevents execution of binaries on the mounted filesystem.}}<br />
<br />
==== Mount under {{Filename|/media}}; use partition label if present ====<br />
The following udev rule set automatically mounts devices/partitions that are represented by /dev/sd* (USB drives, external hard drives and sometimes SD cards). If a partition label is available, it mounts the device to /media/<label> and otherwise to /media/usbhd-sd* (ex: /media/usbhd-sdb1):<br />
{{File|name=/etc/udev/rules.d/11-media-by-label-auto-mount.rules|content=<nowiki><br />
KERNEL!="sd[a-z][0-9]", GOTO="media_by_label_auto_mount_end"<br />
<br />
# Import FS infos<br />
IMPORT{program}="/sbin/blkid -o udev -p %N"<br />
<br />
# Get a label if present, otherwise specify one<br />
ENV{ID_FS_LABEL}!="", ENV{dir_name}="%E{ID_FS_LABEL}"<br />
ENV{ID_FS_LABEL}=="", ENV{dir_name}="usbhd-%k"<br />
<br />
# Global mount options<br />
ACTION=="add", ENV{mount_options}="relatime"<br />
# Filesystem-specific mount options<br />
ACTION=="add", ENV{ID_FS_TYPE}=="vfat|ntfs", ENV{mount_options}="$env{mount_options},utf8,gid=100,umask=002"<br />
<br />
# Mount the device<br />
ACTION=="add", RUN+="/bin/mkdir -p /media/%E{dir_name}", RUN+="/bin/mount -o $env{mount_options} /dev/%k /media/%E{dir_name}"<br />
<br />
# Clean up after removal<br />
ACTION=="remove", ENV{dir_name}!="", RUN+="/bin/umount -l /media/%E{dir_name}", RUN+="/bin/rmdir /media/%E{dir_name}"<br />
<br />
# Exit<br />
LABEL="media_by_label_auto_mount_end"<br />
</nowiki>}}<br />
<br />
==== Mount under {{Filename|/media}}; use partition label if present; supports LUKS encryption ====<br />
Similar to the above rule set, but if the device is a LUKS-encrypted partition it will open an xterm window to ask for the passphrase (provided that xterm is installed). Also see [http://bbs.archlinux.org/viewtopic.php?pid=696239#p696239 this post] and the follow-ups.<br />
<br />
{{Note|You may need to modify the path to cryptsetup, depending on the version installed (e.g., < 1.1.1_rc2-1).}}<br />
<br />
{{File|name=/etc/udev/rules.d/11-media-by-label-auto-mount.rules|content=<nowiki><br />
KERNEL!="sd[a-z]*", GOTO="media_by_label_auto_mount_end"<br />
ACTION=="add", PROGRAM!="/sbin/blkid %N", GOTO="media_by_label_auto_mount_end"<br />
<br />
# Do not mount devices already mounted somewhere else to avoid entries for all your local partitions in /media<br />
ACTION=="add", PROGRAM=="/bin/grep -q ' /dev/%k ' /proc/self/mountinfo", GOTO="media_by_label_auto_mount_end"<br />
<br />
# Open LUKS partition if necessary<br />
PROGRAM=="/sbin/blkid -o value -s TYPE %N", RESULT=="crypto_LUKS", ENV{crypto}="mapper/", ENV{device}="/dev/mapper/%k"<br />
ENV{crypto}=="", ENV{device}="%N"<br />
ACTION=="add", ENV{crypto}!="", PROGRAM=="/usr/bin/xterm -display :0.0 -e 'echo Password for /dev/%k; /sbin/cryptsetup luksOpen %N %k'"<br />
ACTION=="add", ENV{crypto}!="", TEST!="/dev/mapper/%k", GOTO="media_by_label_auto_mount_end"<br />
<br />
# Global mount options<br />
ACTION=="add", ENV{mount_options}="noatime"<br />
# Filesystem-specific mount options<br />
ACTION=="add", PROGRAM=="/sbin/blkid -o value -s TYPE %E{device}", RESULT=="vfat|ntfs", ENV{mount_options}="%E{mount_options},utf8,gid=100,umask=002"<br />
<br />
# Get label if present, otherwise assign one<br />
PROGRAM=="/sbin/blkid -o value -s LABEL %E{device}", ENV{dir_name}="%c"<br />
# Use basename to correctly handle labels such as ../mnt/foo<br />
PROGRAM=="/usr/bin/basename '%E{dir_name}'", ENV{dir_name}="%c"<br />
ENV{dir_name}=="", ENV{dir_name}="usbhd-%k"<br />
<br />
# Mount the device<br />
ACTION=="add", ENV{dir_name}!="", RUN+="/bin/mkdir -p '/media/%E{dir_name}'", RUN+="/bin/mount -o %E{mount_options} /dev/%E{crypto}%k '/media/%E{dir_name}'"<br />
<br />
# Clean up after removal<br />
ACTION=="remove", ENV{dir_name}!="", RUN+="/bin/umount -l '/media/%E{dir_name}'"<br />
ACTION=="remove", ENV{crypto}!="", RUN+="/sbin/cryptsetup luksClose %k"<br />
ACTION=="remove", ENV{dir_name}!="", RUN+="/bin/rmdir '/media/%E{dir_name}'"<br />
<br />
# Exit<br />
LABEL="media_by_label_auto_mount_end"<br />
</nowiki>}}<br />
<br />
==== Mount under {{Filename|/media}}; use partition label if present; support user un-mounting ====<br />
This is a variation on the above rule set. It uses pmount (which will need to be installed) instead of mount, allowing a non-root user to unmount udev-mounted devices. The required username must be hard-coded in the RUN command, so this rule set may not be suitable for multi-user systems. LUKS support has also been removed from the example, but can be easily reinstated as above. You must edit the /bin/su invocation to run as the correct user for your system.<br />
{{File|name=/etc/udev/rules.d/11-media-by-label-with-pmount.rules|content=<nowiki><br />
KERNEL!="sd[a-z]*", GOTO="media_by_label_auto_mount_end"<br />
ACTION=="add", PROGRAM!="/sbin/blkid %N", GOTO="media_by_label_auto_mount_end"<br />
<br />
# Get label<br />
PROGRAM=="/sbin/blkid -o value -s LABEL %N", ENV{dir_name}="%c"<br />
# use basename to correctly handle labels such as ../mnt/foo<br />
PROGRAM=="/usr/bin/basename '%E{dir_name}'", ENV{dir_name}="%c"<br />
ENV{dir_name}=="", ENV{dir_name}="usbhd-%k"<br />
<br />
ACTION=="add", ENV{dir_name}!="", RUN+="/bin/su tomk -c '/usr/bin/pmount %N %E{dir_name}'"<br />
ACTION=="remove", ENV{dir_name}!="", RUN+="/bin/su tomk -c '/usr/bin/pumount /media/%E{dir_name}'"<br />
LABEL="media_by_label_auto_mount_end"<br />
</nowiki>}}<br />
<br />
==== Mount under {{Filename|/mnt}}; create symbolic link under {{Filename|/media}} ====<br />
The following rule set does not make use of partition labels; instead it mounts devices as usbhd-sdXY under the /mnt directory (ex: /mnt/usbhd-sdb1) and creates a symbolic link under /media.<br />
{{File|name=/etc/udev/rules.d/11-mnt-auto-mount.rules|content=<nowiki><br />
KERNEL!="sd[a-z][0-9]", GOTO="mnt_auto_mount_end"<br />
<br />
# Global mount options<br />
ACTION=="add", ENV{mount_options}="relatime"<br />
# Filesystem-specific mount options<br />
ACTION=="add", IMPORT{program}="/sbin/blkid -o udev -p %N"<br />
ACTION=="add", ENV{ID_FS_TYPE}=="vfat|ntfs", ENV{mount_options}="$env{mount_options},utf8,gid=100,umask=002"<br />
<br />
# Mount under /mnt and create the symbolic link in /media <br />
ACTION=="add", RUN+="/bin/mount -o $env{mount_options} /dev/%k /mnt/usbhd-%k", RUN+="/bin/ln -s /mnt/usbhd-%k /media/usbhd-%k"<br />
<br />
# Clean up after removal<br />
ACTION=="remove", RUN+="/bin/rm -f /media/usbhd-%k", RUN+="/bin/umount -l /mnt/usbhd-%k", RUN+="/bin/rmdir /mnt/usbhd-%k"<br />
<br />
# Exit<br />
LABEL="mnt_auto_mount_end"<br />
</nowiki>}}<br />
<br />
==== Mount under {{Filename|/media}} ''only'' if the partition has a label ====<br />
{{File|name=/etc/udev/rules.d/11-media-by-label-only-auto-mount.rules|content=<nowiki><br />
KERNEL!="sd[a-z][0-9]", GOTO="media_by_label_only_auto_mount_end"<br />
<br />
# Import FS infos<br />
IMPORT{program}="/sbin/blkid -o udev -p %N"<br />
ENV{ID_FS_LABEL}=="", GOTO="media_by_label_only_auto_mount_end"<br />
<br />
# Global mount options<br />
ACTION=="add", ENV{mount_options}="relatime"<br />
# Filesystem-specific mount options<br />
ACTION=="add", ENV{ID_FS_TYPE}=="vfat|ntfs", ENV{mount_options}="$env{mount_options},utf8,gid=100,umask=002"<br />
<br />
# Mount the device<br />
ACTION=="add", RUN+="/bin/mkdir -p /media/$env{ID_FS_LABEL}", RUN+="/bin/mount -o $env{mount_options} /dev/%k /media/$env{ID_FS_LABEL}"<br />
<br />
# Clean up after removal<br />
ACTION=="remove", ENV{ID_FS_LABEL}!="", RUN+="/bin/umount -l /media/$env{ID_FS_LABEL}", RUN+="/bin/rmdir /media/$env{ID_FS_LABEL}"<br />
<br />
# Exit<br />
LABEL="media_by_label_only_auto_mount_end"<br />
</nowiki>}}<br />
<br />
==== Mount under {{Filename|/media}}; use partition label if present; ntfs-3g ====<br />
Yet another example, this time making use of ntfs-3g read/write drivers for NTFS filesystems:<br />
<br />
{{File|name=/etc/udev/rules.d/10-my-media-automount.rules|content=<nowiki><br />
# vim:enc=utf-8:nu:ai:si:et:ts=4:sw=4:ft=udevrules:<br />
#<br />
# /etc/udev/rules.d/10-my-media-automount.rules<br />
<br />
# start at sdb to ignore the system hard drive<br />
KERNEL!="sd[b-z]*", GOTO="my_media_automount_end"<br />
ACTION=="add", PROGRAM!="/sbin/blkid %N", GOTO="my_media_automount_end"<br />
<br />
# import some useful filesystem info as variables<br />
IMPORT{program}="/sbin/blkid -o udev -p %N"<br />
<br />
# get the label if present, otherwise assign one based on device/partition<br />
ENV{ID_FS_LABEL}!="", ENV{dir_name}="%E{ID_FS_LABEL}"<br />
ENV{ID_FS_LABEL}=="", ENV{dir_name}="usbhd-%k"<br />
<br />
# create the dir in /media and symlink it to /mnt<br />
ACTION=="add", RUN+="/bin/mkdir -p '/media/%E{dir_name}'"<br />
<br />
# global mount options<br />
ACTION=="add", ENV{mount_options}="relatime"<br />
# filesystem-specific mount options (777/666 dir/file perms for ntfs/vfat) <br />
ACTION=="add", ENV{ID_FS_TYPE}=="vfat|ntfs", ENV{mount_options}="$env{mount_options},gid=100,dmask=000,fmask=111,utf8"<br />
<br />
# automount ntfs filesystems using ntfs-3g driver<br />
ACTION=="add", ENV{ID_FS_TYPE}=="ntfs", RUN+="/bin/mount -t ntfs-3g -o %E{mount_options} /dev/%k '/media/%E{dir_name}'"<br />
# automount all other filesystems<br />
ACTION=="add", ENV{ID_FS_TYPE}!="ntfs", RUN+="/bin/mount -t auto -o %E{mount_options} /dev/%k '/media/%E{dir_name}'"<br />
<br />
# clean up after device removal<br />
ACTION=="remove", ENV{dir_name}!="", RUN+="/bin/umount -l '/media/%E{dir_name}'", RUN+="/bin/rmdir '/media/%E{dir_name}'"<br />
<br />
# exit<br />
LABEL="my_media_automount_end"<br />
<br />
</nowiki>}}<br />
<br />
==== Mount SD cards ====<br />
The same rules as above can be used to auto-mount SD cards, you just need to replace {{Codeline|sd[a-z][0-9]}} by {{Codeline|mmcblk[0-9]p[0-9]}}:<br />
{{File|name=/etc/udev/rules.d/11-sd-cards-auto-mount.rules|content=<nowiki><br />
KERNEL!="mmcblk[0-9]p[0-9]", GOTO="sd_cards_auto_mount_end"<br />
<br />
# Global mount options<br />
ACTION=="add", ENV{mount_options}="relatime"<br />
# Filesystem specific options<br />
ACTION=="add", IMPORT{program}="/sbin/blkid -o udev -p %N"<br />
ACTION=="add", ENV{ID_FS_TYPE}=="vfat|ntfs", ENV{mount_options}="$env{mount_options},utf8,gid=100,umask=002"<br />
<br />
ACTION=="add", RUN+="/bin/mkdir -p /media/sd-%k", RUN+="/bin/ln -s /media/sd-%k /mnt/sd-%k", RUN+="/bin/mount -o $env{mount_options} /dev/%k /media/sd-%k"<br />
ACTION=="remove", RUN+="/bin/umount -l /media/sd-%k", RUN+="/bin/rmdir /media/sd-%k"<br />
LABEL="sd_cards_auto_mount_end"<br />
</nowiki>}}<br />
<br />
==== Mount CDs ====<br />
To auto mount a CD a simple [[#Automounting_UDisks_Wrappers|UDisks wrapper]] will get the job done properly.<br />
{{Note|Maybe this should be merged to the Udisks wrapper section.}}<br />
<br />
==== Accessing Firmware Programmers and USB Virtual Comm Devices ====<br />
The following ruleset will allow normal users (within the "users" group) the ability to access the [http://www.ladyada.net/make/usbtinyisp/ USBtinyISP] USB programmer for AVR microcontrollers and a generic (SiLabs [http://www.silabs.com/products/interface/usbtouart CP2102]) USB to UART adapter. Adjust the permissions accordingly. Verified as of 2010-02-11.<br />
<br />
{{File|name=/etc/udev/rules.d/50-embedded_devices.rules|content=<nowiki><br />
# USBtinyISP Programmer rules<br />
SUBSYSTEMS=="usb", ATTRS{idVendor}=="1781", ATTRS{idProduct}=="0c9f", GROUP="users", MODE="0666"<br />
SUBSYSTEMS=="usb", ATTRS{idVendor}=="16c0", ATTRS{idProduct}=="0479", GROUP="users", MODE="0666"<br />
# USBasp Programmer rules http://www.fischl.de/usbasp/<br />
SUBSYSTEMS=="usb", ATTRS{idVendor}=="16c0", ATTRS{idProduct}=="05dc", GROUP="users", MODE="0666"<br />
<br />
# Mdfly.com Generic (SiLabs CP2102) 3.3v/5v USB VComm adapter<br />
SUBSYSTEMS=="usb", ATTRS{idVendor}=="10c4", ATTRS{idProduct}=="ea60", GROUP="users", MODE="0666"<br />
</nowiki>}}<br />
<br />
=== Execute on USB Insert ===<br />
<br />
See [[Execute_on_usb_insert|execute on usb insert]] article or the [http://igurublog.wordpress.com/downloads/script-devmon/ devmon wrapper script].<br />
<br />
=== Mount internal drives as a normal user ===<br />
<br />
If you want to mount a internal drive on KDE or Gnome (maybe on other Desktop Environments too) as a normal user (without the need to type your superuser password) you just have to edit the {{Filename|/usr/share/polkit-1/actions/org.freedesktop.udisks.policy}} (remember to backup first) and change the line '''<allow_active>auth_admin_keep</allow_active>''' on '''<action id="org.freedesktop.udisks.filesystem-mount-system-internal">''' to '''<allow_active>yes</allow_active>'''.<br />
<br />
=== Mark internal SATA-Ports as eSATA-Ports ===<br />
<br />
If you connected a eSATA bay or an other eSATA adapter the system will still recognize this disk as an internal SATA drive. Gnome and KDE will ask you for your root password all the time. The following rule will mark the specified SATA-Port as an external eSATA-Port. With that, a normal Gnome user can connect their eSATA drives to that port like a USB drive, without any root password and so on.<br />
<br />
{{File|name=/etc/udev/rules.d/10-esata.rules|content=<nowiki><br />
DEVPATH=="/devices/pci0000:00/0000:00:1f.2/host4/*", ENV{UDISKS_SYSTEM_INTERNAL}="0"<br />
</nowiki>}}<br />
<br />
{{Note| The DEVPATH can be found after connection the eSata drive with the following command (replace sdb to your needs):<br />
<br />
# find /sys/devices/ -name sdb<br />
/sys/devices/pci0000:00/0000:00:1f.2/host4/target4:0:0/4:0:0:0/block/sdb<br />
<br />
}}<br />
<br />
==Troubleshooting==<br />
<br />
=== Blacklisting Modules ===<br />
In rare cases, udev can make mistakes and load the wrong modules. To prevent it from doing this, you can blacklist modules. Once blacklisted, udev will never load that module. See [[blacklisting]]. Not at boot-time ''or'' later on when a hotplug event is received (eg, you plug in your USB flash drive).<br />
<br />
=== udevd hangs at boot ===<br />
After migrating to LDAP or updating an LDAP-backed system udevd can hang at boot at the message "Starting UDev Daemon". This is usually caused by udevd trying to look up a name from LDAP but failing, because the network is not up yet. The solution is to ensure that all system group names are present locally.<br />
<br />
Extract the group names referenced in udev rules and the group names actually present on the system:<br />
<br />
# fgrep -r GROUP /etc/udev/rules.d/ /lib/udev/rules.d | perl -nle '/GROUP\s*=\s*"(.*?)"/ && print $1;' | sort | uniq > udev_groups<br />
# cut -f1 -d: /etc/gshadow /etc/group | sort | uniq > present_groups<br />
<br />
To see the differences, do a side-by-side diff:<br />
<br />
# diff -y present_groups udev_groups<br />
...<br />
network <<br />
nobody <<br />
ntp <<br />
optical optical<br />
power | pcscd<br />
rfkill <<br />
root root<br />
scanner scanner<br />
smmsp <<br />
storage storage<br />
...<br />
<br />
In this case, the pcscd group is for some reason not present in the system. Add the missing groups:<br />
<br />
# groupadd pcscd<br />
<br />
Also, make sure local resources are looked up before resorting to LDAP. {{Filename|/etc/nsswitch.conf}} should contain the line<br />
<br />
group: files ldap<br />
<br />
=== Known Problems with Hardware ===<br />
====BusLogic devices can be broken and will cause a freeze during startup====<br />
This is a kernel bug and no fix has been provided yet.<br />
====Some devices, that should be treated as removable, are not====<br />
Create a custom udev rule, setting UDISKS_SYSTEM_INTERNAL=0. For more details, see the manpage of udisks.<br />
<br />
=== Known Problems with Auto-Loading ===<br />
==== CPU frequency modules ====<br />
The current detection method for the various CPU frequency controllers is inadequate, so this has been omitted from the auto-loading process for the time being. To use [[CPU Frequency Scaling]], load the proper module explicitly in your {{Codeline|MODULES}} array in {{Filename|/etc/rc.conf}}. Further reading: [[rc.conf]].<br />
<br />
====Sound Problems or Some Modules Not Loaded Automatically====<br />
Some users have traced this problem to old entries in {{Filename|/etc/modprobe.d/sound.conf}}. Try cleaning that file out and trying again.<br />
{{Note|Since {{Codeline|udev>&#61;171}}, the OSS emulation modules ({{Codeline|snd_seq_oss, snd_pcm_oss, snd_mixer_oss}}) are not automatically loaded by default.}}<br />
<br />
==== Mixed Up Devices, Sound/Network Cards Changing Order Each Boot ====<br />
Because udev loads all modules asynchronously, they are initialized in a different order. This can result in devices randomly switching names. For example, with two network cards, you may notice a switching of designations between {{Codeline|eth0}} and {{Codeline|eth1}}.<br />
<br />
Arch Linux provides the advantage of specifying the module load order by listing the modules in the {{Codeline|MODULES}} array in {{Filename|[[rc.conf]]}}. Modules in this array are loaded before udev begins auto-loading, so you have full control over the load order.<br />
<br />
# Always load 8139too before e100<br />
MODULES=(8139too e100)<br />
<br />
Another method for network card ordering is to use the udev-sanctioned method of statically-naming each interface. Create the following file to bind the MAC address of each of your cards to a certain interface name:<br />
{{File|name=/etc/udev/rules.d/10-network.rules|content=<nowiki><br />
SUBSYSTEM=="net", ATTR{address}=="aa:bb:cc:dd:ee:ff", NAME="lan0"<br />
SUBSYSTEM=="net", ATTR{address}=="ff:ee:dd:cc:bb:aa", NAME="wlan0"<br />
</nowiki>}}<br />
<br />
A couple things to note:<br />
* To get the MAC address of each card, use this command: {{Codeline|<nowiki>udevadm info -a -p /sys/class/net/<yourdevice> | grep address | tr [A-Z] [a-z]</nowiki>}}<br />
* Make sure to use the lower-case hex values in your udev rules. It doesn't like upper-case.<br />
* Some people have problems naming their interfaces after the old style: eth0, eth1, etc. Try something like "lan" or "wlan" if you experience this problem.<br />
<br />
Don't forget to update your {{Filename|/etc/rc.conf}} and other configuration files using the old ethX notation!<br />
<br />
<br />
Other methods for setting network interface names are described in the [[Configuring Network#Interface names varying]] wiki entry.<br />
<br />
=== Known Problems for Custom Kernel Users ===<br />
==== Udev doesn't start at all ====<br />
Make sure you have a kernel version later than or equal to 2.6.32. Earlier kernels do not have the necessary uevent stuff that udev needs for auto-loading.<br />
<br />
=== IDE CD/DVD-drive support ===<br />
Starting with version 170, udev doesn't support CD-ROM/DVD-ROM drives, which are loaded as traditional IDE drives with the {{Codeline|ide_cd_mod}} module and show up as {{Filename|/dev/hd*}}. The drive remains usable for tools which access the hardware directly, like cdparanoia, but is invisible for higher userspace programs, like KDE.<br />
<br />
A cause for the loading of the ide_cd_mod module prior to others, like sr_mod, could be e.g. that you have for some reason the module piix loaded with your initramfs. In that case you can just replace it with ata_piix in your {{Filename|/etc/mkinitcpio.conf}}.<br />
<br />
==Other Resources==<br />
* [http://www.kernel.org/pub/linux/utils/kernel/hotplug/udev.html Udev Homepage]<br />
* [http://www.linux.com/news/hardware/peripherals/180950-udev An Introduction to Udev]<br />
* [http://vger.kernel.org/vger-lists.html#linux-hotplug Udev mailing list information]</div>Gladstonehttps://wiki.archlinux.org/index.php?title=LVM_on_software_RAID&diff=160708LVM on software RAID2011-09-19T16:53:19Z<p>Gladstone: /* Partition hard drives */ - fb00 -> fd00</p>
<hr />
<div>[[Category:Getting and installing Arch (English)]]<br />
[[Category:File systems (English)]]<br />
{{i18n|Software RAID and LVM}}<br />
<br />
{{Article summary start}}<br />
{{Article summary text|This article will provide an example of how to install and configure Arch Linux with a software RAID or Logical Volume Manager (LVM).}}<br />
{{Article summary heading|Required software}}<br />
{{Article summary link|Software|}}<br />
{{Article summary heading|Related}}<br />
{{Article summary wiki|RAID}}<br />
{{Article summary wiki|LVM}}<br />
{{Article summary wiki|Installing with Fake RAID}}<br />
{{Article summary wiki|Convert a single drive system to RAID}}<br />
{{Article summary end}}<br />
<br />
The combination of [[RAID]] and [[LVM]] provides numerous features with few caveats compared to just using RAID.<br />
<br />
== Introduction ==<br />
Although [[RAID]] and [[LVM]] may seem like analogous technologies they each present unique features. This article uses an example with three similar 1TB SATA hard drives. The article assumes that the drives are accessible as {{filename|/dev/sda}}, {{filename|/dev/sdb}}, and {{filename|/dev/sdc}}. If you are using IDE drives, for maximum performance make sure that each drive is a master on its own separate channel.<br />
<br />
{{tip|It is good practice to ensure that only the drives involved in the installation are attached while performing the installation.}}<br />
<br />
{| border="1" width="100%" style="text-align:center;"<br />
|width="150px" align="left" | '''LVM Logical Volumes'''<br />
|{{codeline|/}}<br />
|{{codeline|/var}}<br />
|{{codeline|/swap}}<br />
|{{codeline|/home}}<br />
|}<br />
{| border="1" width="100%" style="text-align:center;"<br />
|width="150px" align="left" | '''LVM Volume Groups'''<br />
|{{filename|/dev/VolGroupArray}}<br />
|}<br />
{| border="1" width="100%" style="text-align:center;"<br />
|width="150px" align="left" | '''RAID Arrays'''<br />
|{{filename|/dev/md0}}<br />
|{{filename|/dev/md1}}<br />
|}<br />
{| border="1" width="100%" style="text-align:center;"<br />
|width="150px" align="left" | '''Physical Partitions'''<br />
|{{filename|/dev/sda1}}<br />
|{{filename|/dev/sdb1}}<br />
|{{filename|/dev/sdc1}}<br />
|{{filename|/dev/sda2}}<br />
|{{filename|/dev/sdb2}}<br />
|{{filename|/dev/sdc2}}<br />
|}<br />
{| border="1" width="100%" style="text-align:center;"<br />
|width="150px" align="left" | '''Hard Drives'''<br />
|{{filename|/dev/sda}}<br />
|{{filename|/dev/sdb}}<br />
|{{filename|/dev/sdc}}<br />
|}<br />
<br />
=== Swap space ===<br />
{{note|If you want extra performance, just let the kernel use distinct swap partitions as it does striping by default.}}<br />
<br />
Many tutorials treat the swap space differently, either by creating a separate RAID1 array or a LVM logical volume. Creating the swap space on a separate array is not intended to provide additional redundancy, but instead, to prevent a corrupt swap space from rendering the system inoperable, which is more likely to happen when the swap space is located on the same partition as the root directory.<br />
<br />
=== MBR vs. GPT ===<br />
{{Wikipedia|GUID Partition Table}}<br />
The widespread [[Master Boot Record]] (MBR) partitioning scheme, dating from the early 1980s, imposed limitations which affected the use of modern hardware. [[GUID Partition Table]] (GPT) is a new standard for the layout of the partition table based on the [[Wikipedia:Unified Extensible Firmware Interface|UEFI]] specification derived from Intel. Although GPT provides a significant improvement over a MBR, it does require the additional step of creating an additional partition at the beginning of each disk for GRUB2 (see: [[GRUB2#GPT specific instructions|GPT specific instructions]]).<br />
<br />
=== Boot loader ===<br />
This tutorial will use [[Syslinux|SYSLINUX]] instead of [[GRUB2]]. GRUB2 when used in conjunction with [[GUID Partition Table|GPT]] requires an additional [[GRUB2#GPT specific instructions|BIOS Boot Partition]]. Additionally, the [[DeveloperWiki:2011.08.19|2011.08.19]] Arch Linux installer does not support GRUB2.<br />
<br />
GRUB2 support the current default style of metadata created by mdadm (i.e. 1.2) when combined with an initramfs, which has replaced in Arch Linux with [[mkinitcpio]]. SYSLINUX only supports version 1.0, and therefore requires the {{codeline|<nowiki>--metadata=1.0</nowiki>}} option.<br />
<br />
Some boot loaders (e.g. [[GRUB]], [[LILO]]) will not support any 1.x metadata versions, and instead require the older version, 0.90. If you would like to use one of those boot loaders make sure to add the option {{codeline|<nowiki>--metadata=0.90</nowiki>}} to the {{codeline|/boot}} array during [[#RAID installation|RAID installation]].<br />
<br />
== Installation ==<br />
Obtain the latest installation media and boot the Arch Linux installer as outlined in the [[Beginners' Guide#Preparation|Beginners' Guide]], or alternatively, in the [[Official Arch Linux Install Guide#Pre-Installation|Official Arch Linux Install Guide]]. Follow the directions outlined there until you have [[Beginners Guide#Configure Network (netinstall)|configured your network]].<br />
<br />
==== Load kernel modules ====<br />
Enter another TTY terminal by typing {{Keypress|Alt}}+{{Keypress|F2}}. Load the appropriate RAID (e.g. {{filename|raid0}}, {{filename|raid1}}, {{filename|raid5}}, {{filename|raid6}}, {{filename|raid10}}) and LVM (i.e. {{filename|dm-mod}}) modules. The following example makes use of RAID1 and RAID5.<br />
# modprobe raid1<br />
# modprobe raid5<br />
# modprobe dm-mod<br />
<br />
=== Prepare the hard drives ===<br />
{{note|If your hard drives are already prepared and all you want to do is activate RAID and LVM jump to [[Installing_with_Software_RAID_or_LVM#Activate_existing_RAID_devices_and_LVM_volumes|Activate existing RAID devices and LVM volumes]]. This can be achieved with alternative partitioning software (see: [http://yannickloth.be/blog/2010/08/01/installing-archlinux-with-software-raid1-encrypted-filesystem-and-lvm2/ Article]).}}<br />
<br />
Each hard drive will have a 100MB {{codeline|/boot}} partition, 2048MB {{codeline|/swap}} partition, and a {{codeline|/}} partition that takes up the remainder of the disk.<br />
<br />
The boot partition must be RAID1, because GRUB does not have RAID drivers. Any other level will prevent your system from booting. Additionally, if there is a problem with one boot partition, the boot loader can boot normally from the other two partitions in the {{codeline|/boot}} array. Finally, the partition you boot from must not be striped (i.e. RAID5, RAID0).<br />
<br />
==== Install gdisk ====<br />
Since most disk partitioning software does not support GPT (i.e. {{Package Official|fdisk}}, {{Package Official|sfdisk}}) you will need to install {{Package Official|gptfdisk}} to set the partition type of the boot loader partitions.<br />
<br />
Update the [[pacman]] database:<br />
$ pacman-db-upgrade<br />
<br />
Refresh the package list:<br />
$ pacman -Syy<br />
<br />
Install {{Package Official|gptfdisk}}:<br />
$ pacman -S gdisk<br />
<br />
==== Partition hard drives ====<br />
We will use <code>gdisk</code> to create three partitions on each of the three hard drives (i.e. {{filename|/dev/sda}}, {{filename|/dev/sdb}}, {{filename|/dev/sdc}}):<br />
<br />
Name Flags Part Type FS Type [Label] Size (MB)<br />
-------------------------------------------------------------------------------<br />
sda1 Boot Primary linux_raid_m 100.00 # /boot<br />
sda2 Primary linux_raid_m 2000.00 # /swap<br />
sda3 Primary linux_raid_m 97900.00 # /<br />
<br />
Open {{Codeline|gdisk}} with the first hard drive:<br />
$ gdisk /dev/sda<br />
<br />
and type the following commands at the prompt:<br />
# Add a new partition: {{Keypress|n}}<br />
# Select the default partition number: {{Keypress|Enter}}<br />
# Use the default for the first sector: {{Keypress|Enter}}<br />
# For {{filename|sda1}} and {{filename|sda2}} type the appropriate size in MB (i.e. {{codeline|+100MB}} and {{codeline|+2048M}}). For {{filename|sda3}} just hit {{Keypress|Enter}} to select the remainder of the disk.<br />
# Select {{codeline|Linux RAID}} as the partition type: {{Codeline|fd00}}<br />
# Write the table to disk and exit: {{Keypress|w}}<br />
<br />
Repeat this process for {{filename|/dev/sdb}} and {{filename|/dev/sdc}} or use the alternate {{Codeline|sgdisk}} method below. You may need to reboot to allow the kernel to recognize the new tables.<br />
<br />
{{note|Make sure to create the same exact partitions on each disk. If a group of partitions of different sizes are assembled to create a RAID partition, it will work, but ''the redundant partition will be in multiples of the size of the smallest partition'', leaving the unallocated space to waste.}}<br />
<br />
==== Clone partitions with sgdisk ====<br />
If you are using GPT, then you can use {{Codeline|sgdisk}} to clone the partition table from {{filename|/dev/sda}} to the other two hard drives:<br />
$ sgdisk --backup=table /dev/sda<br />
$ sgdisk --load-backup=table /dev/sdb<br />
$ sgdisk --load-backup=table /dev/sdc<br />
<br />
=== RAID installation ===<br />
After creating the physical partitions, you are ready to setup the {{codeline|/boot}}, {{codeline|/swap}}, and {{codeline|/}} arrays with {{Codeline|mdadm}}. It is an advanced tool for RAID management that will be used to create a {{filename|/etc/mdadm.conf}} within the installation environment.<br />
<br />
Create the {{Codeline|/}} array at {{filename|/dev/md0}}:<br />
# mdadm --create /dev/md0 --level=5 --raid-devices=3 /dev/sd[abc]3<br />
<br />
Create the {{Codeline|/boot}} array at {{filename|/dev/md1}}:<br />
# mdadm --create /dev/md1 --level=1 --raid-devices=3 /dev/sd[abc]2<br />
<br />
{{note|If you plan on installing a boot loader that does not support the 1.x version of RAID metadata make sure to add the {{codeline|<nowiki>--metadata=0.90</nowiki>}} option to the following command.}}<br />
<br />
Create the {{Codeline|/boot}} array at {{filename|/dev/md2}}:<br />
# mdadm --create /dev/md2 --level=1 --raid-devices=3 --metadata=1.0 /dev/sd[abc]1<br />
<br />
==== Synchronization ====<br />
{{tip|If you want to avoid the initial resync with new hard drives add the {{codeline|--assume-clean}} flag.}}<br />
<br />
After you create a RAID volume, it will synchronize the contents of the physical partitions within the array. You can monitor the progress by refreshing the output of {{filename|/proc/mdstat}} ten times per second with:<br />
# watch -n .1 cat /proc/mdstat<br />
<br />
{{tip|Follow the synchronization in another TTY terminal by typing {{Keypress|ALT}} + {{Keypress|F3}} and then execute the above command.}}<br />
<br />
Further information about the arrays is accessible with:<br />
# mdadm --misc --detail /dev/md[012] | less<br />
Once synchronization is complete the {{codeline|State}} line should read {{codeline|clean}}. Each device in the table at the bottom of the output should read {{codeline|spare}} or {{codeline|active sync}} in the {{codeline|State}} column. {{codeline|active sync}} means each device is actively in the array.<br />
<br />
{{note|Since the RAID synchronization is transparent to the file-system you can proceed with the installation and reboot your computer when necessary.}}<br />
<br />
=== LVM installation ===<br />
This section will convert the two RAIDs into physical volumes (PVs). Then combine those PVs into a volume group (VG). The VG will then be divided into logical volumes (LVs) that will act like physical partitions (e.g. {{codeline|/}}, {{codeline|/var}}, {{codeline|/home}}). If you did not understand that make sure you read the [[LVM#Introduction|LVM Introduction]] section.<br />
<br />
==== Create physical volumes ====<br />
Make the RAIDs accessible to LVM by converting them into physical volumes (PVs):<br />
# pvcreate /dev/md0<br />
<br />
{{note|This might fail if you are creating PVs on an existing Volume Group. If so you might want to add {{codeline|-ff}} option.}}<br />
<br />
Confirm that LVM has added the PVs with: <br />
# pvdisplay<br />
<br />
==== Create the volume group ====<br />
Next step is to create a volume group (VG) on the PVs.<br />
<br />
Create a volume group (VG) with the first PV:<br />
# vgcreate VolGroupArray /dev/md0<br />
<br />
Confirm that LVM has added the VG with: <br />
# vgdisplay<br />
<br />
==== Create logical volumes ====<br />
Now we need to create logical volumes (LVs) on the VG, much like we would normally [[Beginners Guide#Prepare Hard Drive|prepare a hard drive]]. In this example we will create separate {{codeline|/}}, {{codeline|/var}}, {{codeline|/swap}}, {{codeline|/home}} LVs. The LVs will be accessible as {{filename|/dev/mapper/VolGroupArray-<lvname>}} or {{filename|/dev/VolGroupArray/<lvname>}}.<br />
<br />
Create a {{codeline|/}} LV:<br />
# lvcreate -L 20G VolGroupArray -n lvroot<br />
<br />
Create a {{codeline|/var}} LV:<br />
# lvcreate -L 15G VolGroupArray -n lvvar<br />
<br />
{{note|If you would like to add the swap space to the LVM create a {{codeline|/swap}} LV with the {{codeline|-C y}} option, which creates a contiguous partition, so that your swap space does not get partitioned over one or more disks nor over non-contiguous physical extents:<br />
# lvcreate -C y -L 2G VolGroupArray -n lvswap<br />
}}<br />
<br />
Create a {{codeline|/home}} LV that takes up the remainder of space in the VG:<br />
# lvcreate -l +100%FREE VolGroupArray -n lvhome<br />
<br />
Confirm that LVM has created the LVs with:<br />
# lvdisplay<br />
<br />
{{tip|You can start out with relatively small logical volumes and expand them later if needed. For simplicity, leave some free space in the volume group so there is room for expansion.}}<br />
<br />
=== Update RAID configuration ===<br />
Since the installer builds the initrd using {{filename|/etc/mdadm.conf}} in the target system, you should update that file with your RAID configuration. The original file can simply be deleted because it contains comments on how to fill it correctly, and that is something mdadm can do automatically for you. So let us delete the original and have mdadm create you a new one with the current setup:<br />
# mdadm --examine --scan > /mnt/etc/mdadm.conf<br />
<br />
=== Prepare hard drive ===<br />
Follow the directions outlined the [[Beginners' Guide#Installation|Installation]] section until you reach the ''Prepare Hard Drive'' section. Skip the first two steps and navigate to the ''Manually Configure block devices, filesystems and mountpoints'' page. Remember to only configure the PVs (e.g. {{filename|/dev/mapper/VolGroupArray-lvhome}}) and '''not''' the actual disks (e.g. {{filename|/dev/sda1}}).<br />
<br />
=== Configure system ===<br />
{{warning|Follow the steps in the [[Lvm#Important|LVM Important]] section before proceeding with the installation.}}<br />
<br />
==== /etc/mkinitcpio.conf ====<br />
[[mkinitcpio]] can use a hook to assemble the arrays on boot. For more information see [[mkinitcpio#Using RAID|mkinitpcio Using RAID]].<br />
# Add the {{codeline|dm_mod}} module to the {{codeline|MODULES}} list in {{filename|/etc/mkinitcpio.conf}}.<br />
# Add the {{codeline|mdadm}} and {{codeline|lvm2}} hooks to the {{codeline|HOOKS}} list in {{filename|/etc/mkinitcpio.conf}} after {{codeline|udev}}.<br />
<br />
=== Conclusion ===<br />
Once it is complete you can safely reboot your machine:<br />
# reboot<br />
<br />
=== Install Grub on the Alternate Boot Drives===<br />
<br />
Once you have successfully booted your new system for the first time, you will want to install Grub onto the other two disks (or on the other disk if you have only 2 HDDs) so that, in the event of disk failure, the system can be booted from another drive. Log in to your new system as root and do:<br />
# grub<br />
grub> device (hd0) /dev/sdb<br />
grub> root (hd0,0)<br />
grub> setup (hd0)<br />
grub> device (hd0) /dev/sdc<br />
grub> root (hd0,0)<br />
grub> setup (hd0)<br />
grub> quit<br />
<br />
=== Archive your Filesystem Partition Scheme ===<br />
<br />
Now that you are done, it is worth taking a second to archive off the partition state of each of your drives. This guarantees that it will be trivially easy to replace/rebuild a disk in the event that one fails. You do this with the <code>sfdisk</code> tool and the following steps:<br />
# mkdir /etc/partitions<br />
# sfdisk --dump /dev/sda >/etc/partitions/disc0.partitions<br />
# sfdisk --dump /dev/sdb >/etc/partitions/disc1.partitions<br />
# sfdisk --dump /dev/sdc >/etc/partitions/disc2.partitions<br />
<br />
== Management ==<br />
For further information on how to maintain your software RAID or LVM review the [[RAID]] and [[LVM]] aritcles.<br />
<br />
== Additional Resources ==<br />
* [http://yannickloth.be/blog/2010/08/01/installing-archlinux-with-software-raid1-encrypted-filesystem-and-lvm2/ Setup Arch Linux on top of raid, LVM2 and encrypted partitions] by Yannick Loth<br />
* [http://stackoverflow.com/questions/237434/raid-verses-lvm RAID vs. LVM] on [[Wikipedia:Stack Overflow|Stack Overflow]]<br />
* [http://serverfault.com/questions/217666/what-is-better-lvm-on-raid-or-raid-on-lvm What is better LVM on RAID or RAID on LVM?] on [[Wikipedia:Server Fault|Server Fault]]<br />
* [http://www.gagme.com/greg/linux/raid-lvm.php Managing RAID and LVM with Linux (v0.5)] by Gregory Gulik<br />
* [http://www.gentoo.org/doc/en/gentoo-x86+raid+lvm2-quickinstall.xml Gentoo Linux x86 with Software Raid and LVM2 Quick Install Guide]<br />
<br />
'''Forum threads'''<br />
* 2011-09-08 - Arch Linux - [https://bbs.archlinux.org/viewtopic.php?id=126172 LVM & RAID (1.2 metadata) + SYSLINUX]<br />
* 2011-04-20 - Arch Linux - [https://bbs.archlinux.org/viewtopic.php?pid=965357 Software RAID and LVM questions]<br />
* 2011-03-12 - Arch Linux - [https://bbs.archlinux.org/viewtopic.php?id=114965 Some newbie questions about installation, LVM, grub, RAID]</div>Gladstonehttps://wiki.archlinux.org/index.php?title=Samba&diff=159966Samba2011-09-16T15:14:59Z<p>Gladstone: /* Starting and automating the daemons */ -- Rewrite (using SSH entry as a template) as FAM is deprecated</p>
<hr />
<div>[[Category:Networking (English)]]<br />
{{i18n|Samba}}<br />
[[fr:Samba]]<br />
{{Article summary start|Summary}}<br />
{{Article summary text|Installing, configuring and troubleshooting Samba}}<br />
{{Article summary heading|Related}}<br />
{{Article summary wiki|NFS}}<br />
{{Article summary wiki|Samba Domain Controller}}<br />
{{Article summary end}}<br />
<br />
'''Samba''' is a re-implementation of the SMB/CIFS networking protocol, it facilitates file and printer sharing among Linux and Windows systems as an alternative to [[NFS]]. Some users say that Samba is easily configured and that operation is very straight-forward. However, many new users run into problems with its complexity and non-intuitive mechanism. It is strongly suggested that the user stick close to the following directions.<br />
<br />
==Installation==<br />
Installing only the ''client'' program is sufficient for systems that are not meant to share files, only access them:<br />
# pacman -S smbclient<br />
<br />
In order to make shares available to clients, install the Samba ''server'' package (which includes {{codeline|smbclient}}):<br />
# pacman -S samba<br />
<br />
==Configuration==<br />
The {{filename|/etc/samba/smb.conf}} file must be created before starting the daemons. Once that is set up, users may opt for using an advanced configuration interface like SWAT.<br />
<br />
===smb.conf===<br />
As root, copy the default Samba configuration file to {{Filename|/etc/samba/smb.conf}}:<br />
# cp /etc/samba/smb.conf.default /etc/samba/smb.conf<br />
<br />
Open {{Filename|smb.conf}} and edit it to suit your needs. The default file creates a share for each user's home directory. It also creates a share for printers.<br />
<br />
More information about the options available can be found in {{Codeline|man smb.conf}}<br />
<br />
===Managing the samba daemon===<br />
<br />
To automatically start {{codeline|samba}} at boot, add it to the DAEMONS line in {{Filename|[[rc.conf]]}}:<br />
<br />
DAEMONS=(... ... samba ... ...)<br />
<br />
To start/restart/stop the daemon manually, use the following:<br />
<br />
# rc.d {start|stop|restart} samba<br />
<br />
===SWAT: Samba web administration tool===<br />
[http://samba.xsec.it/samba/docs/man/Samba-HOWTO-Collection/SWAT.html SWAT] is a facility that is part of the Samba suite. The main executable is called swat and is invoked by the eXtended InterNET Daemon, [[Wikipedia:xinetd|xinetd]]. <br />
<br />
There are many and varied opinions regarding the usefulness of SWAT. No matter how hard one tries to produce the perfect configuration tool, it remains an object of personal taste. SWAT is a tool that allows Web-based configuration of Samba. It has a wizard that may help to get Samba configured quickly, it has context-sensitive help on each {{Filename|smb.conf}} parameter, it provides for monitoring of current state of connection information, and it allows network-wide MS Windows network password management.[http://samba.xsec.it/samba/docs/man/Samba-HOWTO-Collection/SWAT.html]<br />
<br />
{{Note|If you have problems with these directions, you can use the more all-encompasing [[Webmin]] tool instead, and easily load the SWAT module there.}}<br />
<br />
{{Warning|Before using SWAT, please be warned SWAT will completely replace your {{Filename|smb.conf}} with a fully optimized file that has been stripped of all comments you might have placed there, and only non-default settings will be written to the file.}}<br />
<br />
To use SWAT, first install xinetd:<br />
# pacman -S xinetd<br />
<br />
Edit {{Filename|/etc/xinetd.d/swat}} using your favorite text editor. To enable SWAT, change the {{Codeline|1=disable = yes}} line to {{Codeline|1=disable = no}}.<br />
<br />
service swat<br />
{<br />
type = UNLISTED<br />
protocol = tcp<br />
port = 901<br />
socket_type = stream<br />
wait = no<br />
user = root<br />
server = /usr/sbin/swat<br />
log_on_success += HOST DURATION<br />
log_on_failure += HOST<br />
disable = no<br />
}<br />
<br />
Alternatively you can add an entry for swat to {{Filename|/etc/services}} and omit the first 3 lines of the configuration.<br />
<br />
Then start xinetd daemon:<br />
<br />
# rc.d start xinetd<br />
<br />
The web interface can be accessed on port 901 by default:<br />
http://localhost:901/<br />
<br />
===Adding users===<br />
To log into a Samba share you will need to add a user.<br />
<br />
For Samba versions 3.4.0 and above:<br />
# pdbedit -a -u <user><br />
<br />
For earlier versions of Samba:<br />
# smbpasswd -a <user><br />
<br />
Existing smbpasswd databases can also be [[Samba#Changes_in_Samba_version_3.4.0|converted to the new format]].<br />
<br />
The user must already have a account on the server. If the user does not exist you will receive the error:<br />
Failed to modify password entry for user "<user>"<br />
<br />
You can add a new user to the Linux host with [[User Management#adduser|adduser]]. This article does not cover adding users to Windows systems.<br />
<br />
{{Note|smbpasswd is no longer used by default as of [[Samba#Changes_in_Samba_version_3.4.0|Samba version 3.4.0]] }}<br />
<br />
==Accessing shares==<br />
Shared resources from other computers on the LAN may be accessed and mounted locally by GUI or CLI methods The graphical manner is limited. Some Desktop Environments have a way to facilitate accessing these shared resources. However, most do not. In fact, most lightweight DE's and WM's offer no native method.<br />
<br />
There are two parts to share access. First is the underlying file system mechanism, and second is the interface which allows the user to select to mount shared resources. Some environments have the first part built into them.<br />
<br />
If you are using KDE, it has the ability to browse Samba shares. You therefore do not need any additional packages. (However, for a GUI in the KDE System Settings you have to install the kdenetwork-filesharing package from [extra]. Another program choice is SMB4K.) If, however, you plan to use the share in Gnome or solely from a shell, you will need an additional package.<br />
<br />
===Accessing a Samba share from Gnome/Xfce4===<br />
In order to access samba shares through Nautilus, first install the gvfs-smb and gnome-vfs packages:<br />
# pacman -S gvfs-smb gnome-vfs<br />
<br />
For access under Xfce4 using thunar, one only needs gvfs-smb<br />
# pacman -S gvfs-smb<br />
<br />
From a Nautilus/Thunar window, hit {{Keypress|Ctrl}}+{{Keypress|L}} or go to the "Go" menu and select "Location..." -- both actions will allow for the typing in the "Go to:" blank. Enter:<br />
smb://servername/share<br />
<br />
{{Note|If the servername is not in {{Filename|/etc/hosts}}, use the IP Address of the server in place of the servername.}}<br />
<br />
Another Gnome browser program is Gnomba.<br />
<br />
If iptables is running, the '''nf_conntrack_netbios_ns''' module should be loaded:<br />
modprobe nf_conntrack_netbios_ns<br />
<br />
===Accessing shares from other graphical environments===<br />
There are a number of useful programs, but they will need to have packages created for them. This can be done with the Arch package build system. The good thing about these others is that they do not require a particular environment to be installed to support them, and so they bring along less baggage.<br />
<br />
LinNeighborhood is non-specific when it comes to the DE or WM. It can be seen as a simple and generic X-based LAN browser and share mounter. Not pretty, but effective.<br />
<br />
Other possible programs include pyneighborhood and RUmba, as well as the xffm-samba plugin for Xffm.<br />
<br />
===Accessing a Samba share from the shell===<br />
Shares may be accessed by using an automatic mounter or by using a [[#Manual share mounting|manual method]].<br />
<br />
====Automatic share mounting====<br />
There are several alternatives for easy share browsing.<br />
<br />
=====smbnetfs=====<br />
1. Install {{Package Official|smbnetfs}}:<br />
# pacman -S smbnetfs<br />
<br />
2. Add the following line to {{Filename|/etc/fuse.conf}}:<br />
user_allow_other<br />
<br />
3. Load the {{Codeline|fuse}} kernel module:<br />
# modprobe fuse<br />
<br />
4. Start the {{Codeline|smbnetfs}} [[daemon]]:<br />
# /etc/rc.d/smbnetfs start<br />
<br />
If the required configuration is properly researched and done, it is claimed that all shares in the network are now automatically mounted under {{Filename|/mnt/smbnet}}.<br />
<br />
Add the following to {{Filename|/etc/rc.conf}} to access the shares at boot:<br />
MODULES=(... '''fuse''' ...)<br />
DAEMONS=(... '''smbnetfs''' ...)<br />
<br />
If a username and a password are required to access some of the shared folders, you have to edit {{filename|/etc/smbnetfs/.smb/smbnetfs.conf}} by uncommenting the line starting with "auth" and editing it to your needs:<br />
<br />
auth "hostname" "username" "password"<br />
<br />
Then, it may be necessary to change the permissions of {{filename|/etc/smbnetfs/.smb/smbnetfs.conf}} and all include files for smbnetfs to work correctly:<br />
<br />
# chmod 600 /etc/smbnetfs/.smb/smbnetfs.conf<br />
<br />
=====fusesmb=====<br />
{{Note|1=Because {{Codeline|smbclient 3.2.X}} is malfunctioning with {{Codeline|fusesmb}}, revert to using older versions if necessary. See the [http://bbs.archlinux.org/viewtopic.php?id=58434 relevant forum topic] for details.}}<br />
<br />
1. Install the {{Package AUR|fusesmb}} package from the [[AUR]].<br />
<br />
2. Create a mount point:<br />
# mkdir /mnt/fusesmb<br />
<br />
3. Load {{Codeline|fuse}} module:<br />
# modprobe fuse<br />
<br />
4. Mount the shares:<br />
# fusesmb -o allow_other /mnt/fusesmb<br />
<br />
For mounting shares at boot, add the command above to {{Filename|/etc/rc.local}} and add {{Codeline|fuse}} module to {{Filename|/etc/rc.conf}}:<br />
MODULES=(... '''fuse''' ...)<br />
<br />
=====Autofs=====<br />
See [[Autofs]] for information on the kernel-based automounter for Linux.<br />
<br />
====Manual share mounting====<br />
1. Use [[smbclient]] to browse shares from the shell. To list any public shares on a server:<br />
$ smbclient -L <hostname> -U%<br />
<br />
2. Create the mount point for the share:<br />
# mkdir /mnt/MOUNTPOINT<br />
<br />
3. Mount the share using {{Codeline|mount.cifs}}. Keep in mind that not all options may be needed nor desirable, such as {{Codeline|password}}:<br />
# mount -t cifs //''SERVER''/''SHARENAME'' ''MOUNTPOINT'' -o user=''USERNAME'',password=''PASSWORD'',workgroup=''WORKGROUP'',ip=''SERVERIP''<br />
<br />
;{{Codeline|SERVER}}: The Windows system's name<br />
;{{Codeline|SHARENAME}}: The shared directory<br />
;{{Codeline|MOUNTPOINT}}: The local directory where the share will be mounted to<br />
;{{Codeline|-o [options]}}: Specifies options for {{Codeline|mount.cifs}}<br />
:;{{Codeline|user}}: Username used to mount the share<br />
:;{{Codeline|password}}: The shared directory's password<br />
:;{{Codeline|workgroup}}: Used to specify the workgroup<br />
:;{{Codeline|ip}}: The IP address of the server -- if the system is unable to find the Windows computer by name (DNS, WINS, hosts entry, etc.)<br />
<br />
{{Note|Abstain from using trailing directory ('''/''') characters. Using {{Filename|//SERVER/SHARENAME'''/'''}} will not work.}}<br />
<br />
4. To unmount the share, use:<br />
# umount /mnt/MOUNTPOINT<br />
<br />
=====Adding the share to {{Filename|fstab}}=====<br />
Add the following to {{Filename|/etc/[[fstab]]}} for easy mounting:<br />
//SERVER/SHARENAME /mnt/MOUNTPOINT cifs noauto,noatime,username=USER,password=PASSWORD,workgroup=WORKGROUP,ip=SERVERIP 0 0<br />
<br />
The {{Codeline|noauto}} option disables mounting it automatically at boot and {{Codeline|noatime}} increases performance by skipping inode access times.<br />
<br />
After adding the previous line, the syntax to mount files becomes simpler:<br />
# mount /mnt/MOUNTPOINT<br />
<br />
If adding a Samba share to {{Filename|fstab}}, the {{codeline|netfs}} daemon should also be added to {{Filename|[[rc.conf]]}}, somewhere after the [[network]] daemon. The {{codeline|netfs}} daemon will mount network partitions at boot and, more importantly, unmount network partitions at shutdown. Even if using the {{codeline|noauto}} option in {{Filename|fstab}}, the {{codeline|netfs}} daemon should be used. Without it any network share that is mounted when shutting down will cause the {{codeline|network}} daemon to wait for the connection to time out, considerably extending poweroff time.<br />
<br />
=====Allowing users to mount=====<br />
Before enabling access to the mount commands, {{Filename|fstab}} needs to be modified. Add the {{Codeline|users}} options to the entry in {{Filename|/etc/fstab}}:<br />
//SERVER/SHARENAME /path/to/SHAREMOUNT cifs '''users''',noauto,noatime,username=USER,password=PASSWORD,workgroup=WORKGROUP,ip=SERVERIP 0 0<br />
<br />
{{Note|The option is {{codeline|user'''s'''}} (plural). For other filesystem types handled by mount, this option is usually ''user''; sans the "'''s'''".}}<br />
<br />
This will allow users to mount it aslong as the mount point resides in a directory ''controllable'' by the user; i.e. the user's home. For users to be allowed to mount and unmount the Samba shares with mount points that they do not own, use [[#smbnetfs]], or grant privileges using [[sudo]].<br />
<br />
== Tips and tricks ==<br />
<br />
=== Share files for your LAN without user and password ===<br />
<br />
==== Option 1 - Force guest connections ====<br />
<br />
Edit {{Filename|/etc/samba/smb.conf}} and change the following line:<br />
<br />
security = user<br />
<br />
to<br />
<br />
security = share<br />
<br />
==== Option 2 - Allow guest and User connections ====<br />
<br />
Edit {{Filename|/etc/samba/smb.conf}} and add the following line:<br />
<br />
map to guest = Bad User<br />
<br />
After this line<br />
<br />
security = user<br />
<br />
<br />
If you want to restrict the shares data to a specific interface replace:<br />
<br />
; interfaces = 192.168.12.2/24 192.168.13.2/24<br />
<br />
with:<br />
<br />
interfaces = lo eth0<br />
bind interfaces only = true<br />
<br />
(changing eth0 to the local network you want share with.)<br />
<br />
If you want to edit the account that access the shares, edit the following line:<br />
<br />
; guest account = nobody<br />
<br />
The last step is to create share directory (for write access make writable = yes):<br />
<br />
[Public Share]<br />
path = /path/to/public/share<br />
available = yes<br />
browsable = yes<br />
public = yes<br />
writable = no<br />
<br />
=== Sample configuration file ===<br />
<br />
The configuration that worked for one user:<br />
[global]<br />
workgroup = WORKGROUP<br />
server string = Samba Server<br />
netbios name = PC_NAME<br />
security = share<br />
; the line below is important! If you have permission issues make<br />
; sure the user here is the same as the user of the folder you<br />
; want to share<br />
guest account = mark<br />
username map = /etc/samba/smbusers<br />
name resolve order = hosts wins bcast<br />
wins support = no<br /><br />
[public]<br />
comment = Public Share<br />
path = /path/to/public/share<br />
available = yes<br />
browsable = yes<br />
public = yes<br />
writable = no<br />
<br />
=== Adding network shares using KDE4 GUI ===<br />
How to configure the folder sharing in KDE4. Simple file sharing limits user shared folders to their home directory and read-only access. Advanced file sharing gives full semantics of Samba with no limits to shared folders but requires su or sudo root permissions.<br />
* Read only, simple file sharing: [[Samba/Simple file sharing with KDE4]]<br />
* Full capability file sharing: [[Samba/Advanced file sharing with KDE4]]<br />
<br />
=== Discovering network shares ===<br />
<br />
If nothing is known about other systems on the local network, and automated tools such as [[#smbnetfs]] are not available, the following methods allow one to manually probe for Samba shares.<br />
<br />
1. First, install {{Package Official|nmap}} and {{Package Official|smbclient}} using [[pacman]]:<br />
# pacman -S nmap smbclient<br />
<br />
2. {{Codeline|nmap}} checks which ports are open:<br />
# nmap -p 139 -sT 192.168.1.*<br />
<br />
In this case, a scan on the 192.168.1.* IP address range and port 139 has been performed, resulting in:<br />
{{Command<br />
|name=nmap -sT 192.168.1.*<br />
|output=Starting nmap 3.78 ( http://www.insecure.org/nmap/ ) at 2005-02-15 11:45 PHT<br />
Interesting ports on 192.168.1.1:<br />
(The 1661 ports scanned but not shown below are in state: closed)<br />
PORT STATE SERVICE<br />
'''139/tcp open netbios-ssn'''<br />
5000/tcp open UPnP<br />
<br />
Interesting ports on 192.168.1.5:<br />
(The 1662 ports scanned but not shown below are in state: closed)<br />
PORT STATE SERVICE<br />
6000/tcp open X11<br />
<br />
Nmap run completed -- 256 IP addresses (2 hosts up) scanned in 7.255 seconds<br />
}}<br />
<br />
The first result is another system; the second happens to be the client from where this scan was performed.<br />
<br />
3. Now that systems with port 139 open are revealed, use {{Codeline|nmblookup}} to check for NetBIOS names: <br />
{{Command<br />
|name=nmblookup -A 192.168.1.1<br />
|output=Looking up status of 192.168.1.1<br />
PUTER <00> - B <ACTIVE><br />
HOMENET <00> - <GROUP> B <ACTIVE><br />
PUTER <03> - B <ACTIVE><br />
'''PUTER <20> - B <ACTIVE>'''<br />
HOMENET <1e> - <GROUP> B <ACTIVE><br />
USERNAME <03> - B <ACTIVE><br />
HOMENET <1d> - B <ACTIVE><br />
MSBROWSE <01> - <GROUP> B <ACTIVE><br />
}}<br />
<br />
Regardless of the output, look for '''<20>''', which shows the host with open services.<br />
<br />
4. Use {{Codeline|smbclient}} to list which services are shared on ''PUTER''. If prompted for a password, pressing enter should still display the list:<br />
{{Command<br />
|name=smbclient -L \\PUTER<br />
|output=<nowiki><br />
Sharename Type Comment<br />
--------- ---- -------<br />
MY_MUSIC Disk<br />
SHAREDDOCS Disk<br />
PRINTER$ Disk<br />
PRINTER Printer<br />
IPC$ IPC Remote Inter Process Communication<br />
<br />
Server Comment<br />
--------- -------<br />
PUTER<br />
<br />
Workgroup Master<br />
--------- -------<br />
HOMENET PUTER<br />
</nowiki>}}<br />
<br />
This shows which folders are shared and can be mounted locally. See: [[#Accessing Samba shares]]<br />
<br />
=== Remote control of Windows computer ===<br />
<br />
Samba offers a set of tools for communication with Windows. These can be handy in case you cannot access a Windows computer through remote desktop, as shown by some examples.<br />
<br />
Send shutdown command with a comment:<br />
<br />
$ net rpc shutdown -C "comment" -I IPADDRESS -U USERNAME%PASSWORD<br />
If you prefer a forced shutdown instead change -C with comment to a single -f. For a restart you only add -r, followed by a -C or -f.<br />
<br />
Stop and start services:<br />
<br />
$ net rpc service stop SERVICENAME -I IPADDRESS -U USERNAME%PASSWORD<br />
<br />
To see all possible net rpc command:<br />
<br />
$ net rpc<br />
<br />
== Troubleshooting ==<br />
=== Trouble accessing a password-protected share from Windows ===<br />
<br />
If you are having trouble accessing a password protected share from Windows, try adding this to {{Filename|/etc/samba/smb.conf}}:[http://blogs.computerworld.com/networking_nightmare_ii_adding_linux]<br />
<br />
Note that you have to add this to your '''local''' smb.conf, not to the server's smb.conf<br />
<br />
[global]<br />
# lanman fix<br />
client lanman auth = yes<br />
client ntlmv2 auth = no<br />
<br />
=== Getting a dialog box up takes a long time ===<br />
<br />
I had a problem that it took ~30 seconds to get a password dialog box up when trying to connect from both Windows XP/Windows 7. Analyzing the error.log on the server I saw:<br />
<br />
[2009/11/11 06:20:12, 0] printing/print_cups.c:cups_connect(103)<br />
Unable to connect to CUPS server localhost:631 - Interrupted system call<br />
<br />
I do not have any printer connected to this server, so I added this to the global section:<br />
<br />
load printers = no<br />
printing = bsd<br />
disable spoolss = yes<br />
printcap name = /dev/null<br />
<br />
Not sure if all of them are necessary, but at least it works now.<br />
<br />
=== Changes in Samba version 3.4.0 ===<br />
<br />
[http://www.samba.org/samba/history/samba-3.4.0.html Major enhancements in Samba 3.4.0] include:<br />
<br />
The default passdb backend has been changed to 'tdbsam'! That breaks existing setups using the 'smbpasswd' backend without explicit declaration!<br />
<br />
If you would like to stick to the 'smbpasswd' backend try changing this in {{Filename|/etc/samba/smb.conf}}:<br />
<br />
passdb backend = smbpasswd<br />
<br />
or convert your smbpasswd entries using:<br />
<br />
sudo pdbedit -i smbpasswd -e tdbsam<br />
<br />
<br />
=== Error: Value too large for defined data type ===<br />
<br />
With some applications you could get this error whith every attempt to open a file mounted in smbfs/cifs:<br />
<br />
Value too large for defined data type<br />
<br />
The solution[https://bugs.launchpad.net/ubuntu/+bug/479266/comments/5] is to add this options to your smbfs/cifs mount options (in /etc/fstab for example):<br />
<br />
,nounix,noserverino<br />
<br />
''It works on Arch Linux up-to-date (2009-12-02)''<br />
<br />
=== I need to restart samba in order get my shares visible by other ===<br />
<br />
If upon starting your computer, the samba shares you have defined cannot be accessed from any client, check the following :<br />
* Make sure that you have not forgotten to add the samba daemon to the DAEMONS array of /etc/rc.conf (after the 'network' daemon)<br />
* The ''network'' service is not started in the background (prefixed with @ ). Removing the '@' in front of 'network' can fix the issue. Reboot to check.<br />
<br />
My guess on what has happened: When samba starts, the network is not properly initialized, so the server does not know on which interface to listen and thus fails to initialize correctly.<br />
<br />
== Resources ==<br />
*[http://www.samba.org/ Samba's official site]<br />
*[http://www.samba.org/samba/docs/SambaIntro.html Samba: An Introduction]</div>Gladstonehttps://wiki.archlinux.org/index.php?title=Samba&diff=159963Samba2011-09-16T15:03:21Z<p>Gladstone: /* Installation */</p>
<hr />
<div>[[Category:Networking (English)]]<br />
{{i18n|Samba}}<br />
[[fr:Samba]]<br />
{{Article summary start|Summary}}<br />
{{Article summary text|Installing, configuring and troubleshooting Samba}}<br />
{{Article summary heading|Related}}<br />
{{Article summary wiki|NFS}}<br />
{{Article summary wiki|Samba Domain Controller}}<br />
{{Article summary end}}<br />
<br />
'''Samba''' is a re-implementation of the SMB/CIFS networking protocol, it facilitates file and printer sharing among Linux and Windows systems as an alternative to [[NFS]]. Some users say that Samba is easily configured and that operation is very straight-forward. However, many new users run into problems with its complexity and non-intuitive mechanism. It is strongly suggested that the user stick close to the following directions.<br />
<br />
==Installation==<br />
Installing only the ''client'' program is sufficient for systems that are not meant to share files, only access them:<br />
# pacman -S smbclient<br />
<br />
In order to make shares available to clients, install the Samba ''server'' package (which includes {{codeline|smbclient}}):<br />
# pacman -S samba<br />
<br />
==Configuration==<br />
The {{filename|/etc/samba/smb.conf}} file must be created before starting the daemons. Once that is set up, users may opt for using an advanced configuration interface like SWAT.<br />
<br />
===smb.conf===<br />
As root, copy the default Samba configuration file to {{Filename|/etc/samba/smb.conf}}:<br />
# cp /etc/samba/smb.conf.default /etc/samba/smb.conf<br />
<br />
Open {{Filename|smb.conf}} and edit it to suit your needs. The default file creates a share for each user's home directory. It also creates a share for printers.<br />
<br />
More information about the options available can be found in {{Codeline|man smb.conf}}<br />
<br />
===Starting and automating the daemons===<br />
If using FAM, start the {{codeline|fam}} [[daemon]] before {{codeline|samba}}. Gamin does not need a daemon since it automatically starts when needed.<br />
<br />
Without rebooting, FAM and Samba can be started with the commands:<br />
# rc.d start fam<br />
# rc.d start samba<br />
<br />
Add {{codeline|fam}} and {{codeline|samba}} to the DAEMONS line in {{Filename|[[rc.conf]]}} to automatically start the daemons at boot.<br />
<br />
Note: You do not need to use {{codeline|fam}} (fam usually fails in the startup). Just put the samba daemon in the rc.conf array.<br />
<br />
===SWAT: Samba web administration tool===<br />
[http://samba.xsec.it/samba/docs/man/Samba-HOWTO-Collection/SWAT.html SWAT] is a facility that is part of the Samba suite. The main executable is called swat and is invoked by the eXtended InterNET Daemon, [[Wikipedia:xinetd|xinetd]]. <br />
<br />
There are many and varied opinions regarding the usefulness of SWAT. No matter how hard one tries to produce the perfect configuration tool, it remains an object of personal taste. SWAT is a tool that allows Web-based configuration of Samba. It has a wizard that may help to get Samba configured quickly, it has context-sensitive help on each {{Filename|smb.conf}} parameter, it provides for monitoring of current state of connection information, and it allows network-wide MS Windows network password management.[http://samba.xsec.it/samba/docs/man/Samba-HOWTO-Collection/SWAT.html]<br />
<br />
{{Note|If you have problems with these directions, you can use the more all-encompasing [[Webmin]] tool instead, and easily load the SWAT module there.}}<br />
<br />
{{Warning|Before using SWAT, please be warned SWAT will completely replace your {{Filename|smb.conf}} with a fully optimized file that has been stripped of all comments you might have placed there, and only non-default settings will be written to the file.}}<br />
<br />
To use SWAT, first install xinetd:<br />
# pacman -S xinetd<br />
<br />
Edit {{Filename|/etc/xinetd.d/swat}} using your favorite text editor. To enable SWAT, change the {{Codeline|1=disable = yes}} line to {{Codeline|1=disable = no}}.<br />
<br />
service swat<br />
{<br />
type = UNLISTED<br />
protocol = tcp<br />
port = 901<br />
socket_type = stream<br />
wait = no<br />
user = root<br />
server = /usr/sbin/swat<br />
log_on_success += HOST DURATION<br />
log_on_failure += HOST<br />
disable = no<br />
}<br />
<br />
Alternatively you can add an entry for swat to {{Filename|/etc/services}} and omit the first 3 lines of the configuration.<br />
<br />
Then start xinetd daemon:<br />
<br />
# rc.d start xinetd<br />
<br />
The web interface can be accessed on port 901 by default:<br />
http://localhost:901/<br />
<br />
===Adding users===<br />
To log into a Samba share you will need to add a user.<br />
<br />
For Samba versions 3.4.0 and above:<br />
# pdbedit -a -u <user><br />
<br />
For earlier versions of Samba:<br />
# smbpasswd -a <user><br />
<br />
Existing smbpasswd databases can also be [[Samba#Changes_in_Samba_version_3.4.0|converted to the new format]].<br />
<br />
The user must already have a account on the server. If the user does not exist you will receive the error:<br />
Failed to modify password entry for user "<user>"<br />
<br />
You can add a new user to the Linux host with [[User Management#adduser|adduser]]. This article does not cover adding users to Windows systems.<br />
<br />
{{Note|smbpasswd is no longer used by default as of [[Samba#Changes_in_Samba_version_3.4.0|Samba version 3.4.0]] }}<br />
<br />
==Accessing shares==<br />
Shared resources from other computers on the LAN may be accessed and mounted locally by GUI or CLI methods The graphical manner is limited. Some Desktop Environments have a way to facilitate accessing these shared resources. However, most do not. In fact, most lightweight DE's and WM's offer no native method.<br />
<br />
There are two parts to share access. First is the underlying file system mechanism, and second is the interface which allows the user to select to mount shared resources. Some environments have the first part built into them.<br />
<br />
If you are using KDE, it has the ability to browse Samba shares. You therefore do not need any additional packages. (However, for a GUI in the KDE System Settings you have to install the kdenetwork-filesharing package from [extra]. Another program choice is SMB4K.) If, however, you plan to use the share in Gnome or solely from a shell, you will need an additional package.<br />
<br />
===Accessing a Samba share from Gnome/Xfce4===<br />
In order to access samba shares through Nautilus, first install the gvfs-smb and gnome-vfs packages:<br />
# pacman -S gvfs-smb gnome-vfs<br />
<br />
For access under Xfce4 using thunar, one only needs gvfs-smb<br />
# pacman -S gvfs-smb<br />
<br />
From a Nautilus/Thunar window, hit {{Keypress|Ctrl}}+{{Keypress|L}} or go to the "Go" menu and select "Location..." -- both actions will allow for the typing in the "Go to:" blank. Enter:<br />
smb://servername/share<br />
<br />
{{Note|If the servername is not in {{Filename|/etc/hosts}}, use the IP Address of the server in place of the servername.}}<br />
<br />
Another Gnome browser program is Gnomba.<br />
<br />
If iptables is running, the '''nf_conntrack_netbios_ns''' module should be loaded:<br />
modprobe nf_conntrack_netbios_ns<br />
<br />
===Accessing shares from other graphical environments===<br />
There are a number of useful programs, but they will need to have packages created for them. This can be done with the Arch package build system. The good thing about these others is that they do not require a particular environment to be installed to support them, and so they bring along less baggage.<br />
<br />
LinNeighborhood is non-specific when it comes to the DE or WM. It can be seen as a simple and generic X-based LAN browser and share mounter. Not pretty, but effective.<br />
<br />
Other possible programs include pyneighborhood and RUmba, as well as the xffm-samba plugin for Xffm.<br />
<br />
===Accessing a Samba share from the shell===<br />
Shares may be accessed by using an automatic mounter or by using a [[#Manual share mounting|manual method]].<br />
<br />
====Automatic share mounting====<br />
There are several alternatives for easy share browsing.<br />
<br />
=====smbnetfs=====<br />
1. Install {{Package Official|smbnetfs}}:<br />
# pacman -S smbnetfs<br />
<br />
2. Add the following line to {{Filename|/etc/fuse.conf}}:<br />
user_allow_other<br />
<br />
3. Load the {{Codeline|fuse}} kernel module:<br />
# modprobe fuse<br />
<br />
4. Start the {{Codeline|smbnetfs}} [[daemon]]:<br />
# /etc/rc.d/smbnetfs start<br />
<br />
If the required configuration is properly researched and done, it is claimed that all shares in the network are now automatically mounted under {{Filename|/mnt/smbnet}}.<br />
<br />
Add the following to {{Filename|/etc/rc.conf}} to access the shares at boot:<br />
MODULES=(... '''fuse''' ...)<br />
DAEMONS=(... '''smbnetfs''' ...)<br />
<br />
If a username and a password are required to access some of the shared folders, you have to edit {{filename|/etc/smbnetfs/.smb/smbnetfs.conf}} by uncommenting the line starting with "auth" and editing it to your needs:<br />
<br />
auth "hostname" "username" "password"<br />
<br />
Then, it may be necessary to change the permissions of {{filename|/etc/smbnetfs/.smb/smbnetfs.conf}} and all include files for smbnetfs to work correctly:<br />
<br />
# chmod 600 /etc/smbnetfs/.smb/smbnetfs.conf<br />
<br />
=====fusesmb=====<br />
{{Note|1=Because {{Codeline|smbclient 3.2.X}} is malfunctioning with {{Codeline|fusesmb}}, revert to using older versions if necessary. See the [http://bbs.archlinux.org/viewtopic.php?id=58434 relevant forum topic] for details.}}<br />
<br />
1. Install the {{Package AUR|fusesmb}} package from the [[AUR]].<br />
<br />
2. Create a mount point:<br />
# mkdir /mnt/fusesmb<br />
<br />
3. Load {{Codeline|fuse}} module:<br />
# modprobe fuse<br />
<br />
4. Mount the shares:<br />
# fusesmb -o allow_other /mnt/fusesmb<br />
<br />
For mounting shares at boot, add the command above to {{Filename|/etc/rc.local}} and add {{Codeline|fuse}} module to {{Filename|/etc/rc.conf}}:<br />
MODULES=(... '''fuse''' ...)<br />
<br />
=====Autofs=====<br />
See [[Autofs]] for information on the kernel-based automounter for Linux.<br />
<br />
====Manual share mounting====<br />
1. Use [[smbclient]] to browse shares from the shell. To list any public shares on a server:<br />
$ smbclient -L <hostname> -U%<br />
<br />
2. Create the mount point for the share:<br />
# mkdir /mnt/MOUNTPOINT<br />
<br />
3. Mount the share using {{Codeline|mount.cifs}}. Keep in mind that not all options may be needed nor desirable, such as {{Codeline|password}}:<br />
# mount -t cifs //''SERVER''/''SHARENAME'' ''MOUNTPOINT'' -o user=''USERNAME'',password=''PASSWORD'',workgroup=''WORKGROUP'',ip=''SERVERIP''<br />
<br />
;{{Codeline|SERVER}}: The Windows system's name<br />
;{{Codeline|SHARENAME}}: The shared directory<br />
;{{Codeline|MOUNTPOINT}}: The local directory where the share will be mounted to<br />
;{{Codeline|-o [options]}}: Specifies options for {{Codeline|mount.cifs}}<br />
:;{{Codeline|user}}: Username used to mount the share<br />
:;{{Codeline|password}}: The shared directory's password<br />
:;{{Codeline|workgroup}}: Used to specify the workgroup<br />
:;{{Codeline|ip}}: The IP address of the server -- if the system is unable to find the Windows computer by name (DNS, WINS, hosts entry, etc.)<br />
<br />
{{Note|Abstain from using trailing directory ('''/''') characters. Using {{Filename|//SERVER/SHARENAME'''/'''}} will not work.}}<br />
<br />
4. To unmount the share, use:<br />
# umount /mnt/MOUNTPOINT<br />
<br />
=====Adding the share to {{Filename|fstab}}=====<br />
Add the following to {{Filename|/etc/[[fstab]]}} for easy mounting:<br />
//SERVER/SHARENAME /mnt/MOUNTPOINT cifs noauto,noatime,username=USER,password=PASSWORD,workgroup=WORKGROUP,ip=SERVERIP 0 0<br />
<br />
The {{Codeline|noauto}} option disables mounting it automatically at boot and {{Codeline|noatime}} increases performance by skipping inode access times.<br />
<br />
After adding the previous line, the syntax to mount files becomes simpler:<br />
# mount /mnt/MOUNTPOINT<br />
<br />
If adding a Samba share to {{Filename|fstab}}, the {{codeline|netfs}} daemon should also be added to {{Filename|[[rc.conf]]}}, somewhere after the [[network]] daemon. The {{codeline|netfs}} daemon will mount network partitions at boot and, more importantly, unmount network partitions at shutdown. Even if using the {{codeline|noauto}} option in {{Filename|fstab}}, the {{codeline|netfs}} daemon should be used. Without it any network share that is mounted when shutting down will cause the {{codeline|network}} daemon to wait for the connection to time out, considerably extending poweroff time.<br />
<br />
=====Allowing users to mount=====<br />
Before enabling access to the mount commands, {{Filename|fstab}} needs to be modified. Add the {{Codeline|users}} options to the entry in {{Filename|/etc/fstab}}:<br />
//SERVER/SHARENAME /path/to/SHAREMOUNT cifs '''users''',noauto,noatime,username=USER,password=PASSWORD,workgroup=WORKGROUP,ip=SERVERIP 0 0<br />
<br />
{{Note|The option is {{codeline|user'''s'''}} (plural). For other filesystem types handled by mount, this option is usually ''user''; sans the "'''s'''".}}<br />
<br />
This will allow users to mount it aslong as the mount point resides in a directory ''controllable'' by the user; i.e. the user's home. For users to be allowed to mount and unmount the Samba shares with mount points that they do not own, use [[#smbnetfs]], or grant privileges using [[sudo]].<br />
<br />
== Tips and tricks ==<br />
<br />
=== Share files for your LAN without user and password ===<br />
<br />
==== Option 1 - Force guest connections ====<br />
<br />
Edit {{Filename|/etc/samba/smb.conf}} and change the following line:<br />
<br />
security = user<br />
<br />
to<br />
<br />
security = share<br />
<br />
==== Option 2 - Allow guest and User connections ====<br />
<br />
Edit {{Filename|/etc/samba/smb.conf}} and add the following line:<br />
<br />
map to guest = Bad User<br />
<br />
After this line<br />
<br />
security = user<br />
<br />
<br />
If you want to restrict the shares data to a specific interface replace:<br />
<br />
; interfaces = 192.168.12.2/24 192.168.13.2/24<br />
<br />
with:<br />
<br />
interfaces = lo eth0<br />
bind interfaces only = true<br />
<br />
(changing eth0 to the local network you want share with.)<br />
<br />
If you want to edit the account that access the shares, edit the following line:<br />
<br />
; guest account = nobody<br />
<br />
The last step is to create share directory (for write access make writable = yes):<br />
<br />
[Public Share]<br />
path = /path/to/public/share<br />
available = yes<br />
browsable = yes<br />
public = yes<br />
writable = no<br />
<br />
=== Sample configuration file ===<br />
<br />
The configuration that worked for one user:<br />
[global]<br />
workgroup = WORKGROUP<br />
server string = Samba Server<br />
netbios name = PC_NAME<br />
security = share<br />
; the line below is important! If you have permission issues make<br />
; sure the user here is the same as the user of the folder you<br />
; want to share<br />
guest account = mark<br />
username map = /etc/samba/smbusers<br />
name resolve order = hosts wins bcast<br />
wins support = no<br /><br />
[public]<br />
comment = Public Share<br />
path = /path/to/public/share<br />
available = yes<br />
browsable = yes<br />
public = yes<br />
writable = no<br />
<br />
=== Adding network shares using KDE4 GUI ===<br />
How to configure the folder sharing in KDE4. Simple file sharing limits user shared folders to their home directory and read-only access. Advanced file sharing gives full semantics of Samba with no limits to shared folders but requires su or sudo root permissions.<br />
* Read only, simple file sharing: [[Samba/Simple file sharing with KDE4]]<br />
* Full capability file sharing: [[Samba/Advanced file sharing with KDE4]]<br />
<br />
=== Discovering network shares ===<br />
<br />
If nothing is known about other systems on the local network, and automated tools such as [[#smbnetfs]] are not available, the following methods allow one to manually probe for Samba shares.<br />
<br />
1. First, install {{Package Official|nmap}} and {{Package Official|smbclient}} using [[pacman]]:<br />
# pacman -S nmap smbclient<br />
<br />
2. {{Codeline|nmap}} checks which ports are open:<br />
# nmap -p 139 -sT 192.168.1.*<br />
<br />
In this case, a scan on the 192.168.1.* IP address range and port 139 has been performed, resulting in:<br />
{{Command<br />
|name=nmap -sT 192.168.1.*<br />
|output=Starting nmap 3.78 ( http://www.insecure.org/nmap/ ) at 2005-02-15 11:45 PHT<br />
Interesting ports on 192.168.1.1:<br />
(The 1661 ports scanned but not shown below are in state: closed)<br />
PORT STATE SERVICE<br />
'''139/tcp open netbios-ssn'''<br />
5000/tcp open UPnP<br />
<br />
Interesting ports on 192.168.1.5:<br />
(The 1662 ports scanned but not shown below are in state: closed)<br />
PORT STATE SERVICE<br />
6000/tcp open X11<br />
<br />
Nmap run completed -- 256 IP addresses (2 hosts up) scanned in 7.255 seconds<br />
}}<br />
<br />
The first result is another system; the second happens to be the client from where this scan was performed.<br />
<br />
3. Now that systems with port 139 open are revealed, use {{Codeline|nmblookup}} to check for NetBIOS names: <br />
{{Command<br />
|name=nmblookup -A 192.168.1.1<br />
|output=Looking up status of 192.168.1.1<br />
PUTER <00> - B <ACTIVE><br />
HOMENET <00> - <GROUP> B <ACTIVE><br />
PUTER <03> - B <ACTIVE><br />
'''PUTER <20> - B <ACTIVE>'''<br />
HOMENET <1e> - <GROUP> B <ACTIVE><br />
USERNAME <03> - B <ACTIVE><br />
HOMENET <1d> - B <ACTIVE><br />
MSBROWSE <01> - <GROUP> B <ACTIVE><br />
}}<br />
<br />
Regardless of the output, look for '''<20>''', which shows the host with open services.<br />
<br />
4. Use {{Codeline|smbclient}} to list which services are shared on ''PUTER''. If prompted for a password, pressing enter should still display the list:<br />
{{Command<br />
|name=smbclient -L \\PUTER<br />
|output=<nowiki><br />
Sharename Type Comment<br />
--------- ---- -------<br />
MY_MUSIC Disk<br />
SHAREDDOCS Disk<br />
PRINTER$ Disk<br />
PRINTER Printer<br />
IPC$ IPC Remote Inter Process Communication<br />
<br />
Server Comment<br />
--------- -------<br />
PUTER<br />
<br />
Workgroup Master<br />
--------- -------<br />
HOMENET PUTER<br />
</nowiki>}}<br />
<br />
This shows which folders are shared and can be mounted locally. See: [[#Accessing Samba shares]]<br />
<br />
=== Remote control of Windows computer ===<br />
<br />
Samba offers a set of tools for communication with Windows. These can be handy in case you cannot access a Windows computer through remote desktop, as shown by some examples.<br />
<br />
Send shutdown command with a comment:<br />
<br />
$ net rpc shutdown -C "comment" -I IPADDRESS -U USERNAME%PASSWORD<br />
If you prefer a forced shutdown instead change -C with comment to a single -f. For a restart you only add -r, followed by a -C or -f.<br />
<br />
Stop and start services:<br />
<br />
$ net rpc service stop SERVICENAME -I IPADDRESS -U USERNAME%PASSWORD<br />
<br />
To see all possible net rpc command:<br />
<br />
$ net rpc<br />
<br />
== Troubleshooting ==<br />
=== Trouble accessing a password-protected share from Windows ===<br />
<br />
If you are having trouble accessing a password protected share from Windows, try adding this to {{Filename|/etc/samba/smb.conf}}:[http://blogs.computerworld.com/networking_nightmare_ii_adding_linux]<br />
<br />
Note that you have to add this to your '''local''' smb.conf, not to the server's smb.conf<br />
<br />
[global]<br />
# lanman fix<br />
client lanman auth = yes<br />
client ntlmv2 auth = no<br />
<br />
=== Getting a dialog box up takes a long time ===<br />
<br />
I had a problem that it took ~30 seconds to get a password dialog box up when trying to connect from both Windows XP/Windows 7. Analyzing the error.log on the server I saw:<br />
<br />
[2009/11/11 06:20:12, 0] printing/print_cups.c:cups_connect(103)<br />
Unable to connect to CUPS server localhost:631 - Interrupted system call<br />
<br />
I do not have any printer connected to this server, so I added this to the global section:<br />
<br />
load printers = no<br />
printing = bsd<br />
disable spoolss = yes<br />
printcap name = /dev/null<br />
<br />
Not sure if all of them are necessary, but at least it works now.<br />
<br />
=== Changes in Samba version 3.4.0 ===<br />
<br />
[http://www.samba.org/samba/history/samba-3.4.0.html Major enhancements in Samba 3.4.0] include:<br />
<br />
The default passdb backend has been changed to 'tdbsam'! That breaks existing setups using the 'smbpasswd' backend without explicit declaration!<br />
<br />
If you would like to stick to the 'smbpasswd' backend try changing this in {{Filename|/etc/samba/smb.conf}}:<br />
<br />
passdb backend = smbpasswd<br />
<br />
or convert your smbpasswd entries using:<br />
<br />
sudo pdbedit -i smbpasswd -e tdbsam<br />
<br />
<br />
=== Error: Value too large for defined data type ===<br />
<br />
With some applications you could get this error whith every attempt to open a file mounted in smbfs/cifs:<br />
<br />
Value too large for defined data type<br />
<br />
The solution[https://bugs.launchpad.net/ubuntu/+bug/479266/comments/5] is to add this options to your smbfs/cifs mount options (in /etc/fstab for example):<br />
<br />
,nounix,noserverino<br />
<br />
''It works on Arch Linux up-to-date (2009-12-02)''<br />
<br />
=== I need to restart samba in order get my shares visible by other ===<br />
<br />
If upon starting your computer, the samba shares you have defined cannot be accessed from any client, check the following :<br />
* Make sure that you have not forgotten to add the samba daemon to the DAEMONS array of /etc/rc.conf (after the 'network' daemon)<br />
* The ''network'' service is not started in the background (prefixed with @ ). Removing the '@' in front of 'network' can fix the issue. Reboot to check.<br />
<br />
My guess on what has happened: When samba starts, the network is not properly initialized, so the server does not know on which interface to listen and thus fails to initialize correctly.<br />
<br />
== Resources ==<br />
*[http://www.samba.org/ Samba's official site]<br />
*[http://www.samba.org/samba/docs/SambaIntro.html Samba: An Introduction]</div>Gladstonehttps://wiki.archlinux.org/index.php?title=Samba&diff=159962Samba2011-09-16T15:02:15Z<p>Gladstone: /* Installation */ -- remove gamin note (gamin is installed as a dependency of samba-3.6.0-8)</p>
<hr />
<div>[[Category:Networking (English)]]<br />
{{i18n|Samba}}<br />
[[fr:Samba]]<br />
{{Article summary start|Summary}}<br />
{{Article summary text|Installing, configuring and troubleshooting Samba}}<br />
{{Article summary heading|Related}}<br />
{{Article summary wiki|NFS}}<br />
{{Article summary wiki|Samba Domain Controller}}<br />
{{Article summary end}}<br />
<br />
'''Samba''' is a re-implementation of the SMB/CIFS networking protocol, it facilitates file and printer sharing among Linux and Windows systems as an alternative to [[NFS]]. Some users say that Samba is easily configured and that operation is very straight-forward. However, many new users run into problems with its complexity and non-intuitive mechanism. It is strongly suggested that the user stick close to the following directions.<br />
<br />
==Installation==<br />
Installing only the ''client'' program is sufficient for systems that are not meant to share files, only access them:<br />
# pacman -S smbclient<br />
<br />
In order to make shares available to clients, install the Samba ''server'' package (which will also install the smbclient):<br />
# pacman -S samba<br />
<br />
==Configuration==<br />
The {{filename|/etc/samba/smb.conf}} file must be created before starting the daemons. Once that is set up, users may opt for using an advanced configuration interface like SWAT.<br />
<br />
===smb.conf===<br />
As root, copy the default Samba configuration file to {{Filename|/etc/samba/smb.conf}}:<br />
# cp /etc/samba/smb.conf.default /etc/samba/smb.conf<br />
<br />
Open {{Filename|smb.conf}} and edit it to suit your needs. The default file creates a share for each user's home directory. It also creates a share for printers.<br />
<br />
More information about the options available can be found in {{Codeline|man smb.conf}}<br />
<br />
===Starting and automating the daemons===<br />
If using FAM, start the {{codeline|fam}} [[daemon]] before {{codeline|samba}}. Gamin does not need a daemon since it automatically starts when needed.<br />
<br />
Without rebooting, FAM and Samba can be started with the commands:<br />
# rc.d start fam<br />
# rc.d start samba<br />
<br />
Add {{codeline|fam}} and {{codeline|samba}} to the DAEMONS line in {{Filename|[[rc.conf]]}} to automatically start the daemons at boot.<br />
<br />
Note: You do not need to use {{codeline|fam}} (fam usually fails in the startup). Just put the samba daemon in the rc.conf array.<br />
<br />
===SWAT: Samba web administration tool===<br />
[http://samba.xsec.it/samba/docs/man/Samba-HOWTO-Collection/SWAT.html SWAT] is a facility that is part of the Samba suite. The main executable is called swat and is invoked by the eXtended InterNET Daemon, [[Wikipedia:xinetd|xinetd]]. <br />
<br />
There are many and varied opinions regarding the usefulness of SWAT. No matter how hard one tries to produce the perfect configuration tool, it remains an object of personal taste. SWAT is a tool that allows Web-based configuration of Samba. It has a wizard that may help to get Samba configured quickly, it has context-sensitive help on each {{Filename|smb.conf}} parameter, it provides for monitoring of current state of connection information, and it allows network-wide MS Windows network password management.[http://samba.xsec.it/samba/docs/man/Samba-HOWTO-Collection/SWAT.html]<br />
<br />
{{Note|If you have problems with these directions, you can use the more all-encompasing [[Webmin]] tool instead, and easily load the SWAT module there.}}<br />
<br />
{{Warning|Before using SWAT, please be warned SWAT will completely replace your {{Filename|smb.conf}} with a fully optimized file that has been stripped of all comments you might have placed there, and only non-default settings will be written to the file.}}<br />
<br />
To use SWAT, first install xinetd:<br />
# pacman -S xinetd<br />
<br />
Edit {{Filename|/etc/xinetd.d/swat}} using your favorite text editor. To enable SWAT, change the {{Codeline|1=disable = yes}} line to {{Codeline|1=disable = no}}.<br />
<br />
service swat<br />
{<br />
type = UNLISTED<br />
protocol = tcp<br />
port = 901<br />
socket_type = stream<br />
wait = no<br />
user = root<br />
server = /usr/sbin/swat<br />
log_on_success += HOST DURATION<br />
log_on_failure += HOST<br />
disable = no<br />
}<br />
<br />
Alternatively you can add an entry for swat to {{Filename|/etc/services}} and omit the first 3 lines of the configuration.<br />
<br />
Then start xinetd daemon:<br />
<br />
# rc.d start xinetd<br />
<br />
The web interface can be accessed on port 901 by default:<br />
http://localhost:901/<br />
<br />
===Adding users===<br />
To log into a Samba share you will need to add a user.<br />
<br />
For Samba versions 3.4.0 and above:<br />
# pdbedit -a -u <user><br />
<br />
For earlier versions of Samba:<br />
# smbpasswd -a <user><br />
<br />
Existing smbpasswd databases can also be [[Samba#Changes_in_Samba_version_3.4.0|converted to the new format]].<br />
<br />
The user must already have a account on the server. If the user does not exist you will receive the error:<br />
Failed to modify password entry for user "<user>"<br />
<br />
You can add a new user to the Linux host with [[User Management#adduser|adduser]]. This article does not cover adding users to Windows systems.<br />
<br />
{{Note|smbpasswd is no longer used by default as of [[Samba#Changes_in_Samba_version_3.4.0|Samba version 3.4.0]] }}<br />
<br />
==Accessing shares==<br />
Shared resources from other computers on the LAN may be accessed and mounted locally by GUI or CLI methods The graphical manner is limited. Some Desktop Environments have a way to facilitate accessing these shared resources. However, most do not. In fact, most lightweight DE's and WM's offer no native method.<br />
<br />
There are two parts to share access. First is the underlying file system mechanism, and second is the interface which allows the user to select to mount shared resources. Some environments have the first part built into them.<br />
<br />
If you are using KDE, it has the ability to browse Samba shares. You therefore do not need any additional packages. (However, for a GUI in the KDE System Settings you have to install the kdenetwork-filesharing package from [extra]. Another program choice is SMB4K.) If, however, you plan to use the share in Gnome or solely from a shell, you will need an additional package.<br />
<br />
===Accessing a Samba share from Gnome/Xfce4===<br />
In order to access samba shares through Nautilus, first install the gvfs-smb and gnome-vfs packages:<br />
# pacman -S gvfs-smb gnome-vfs<br />
<br />
For access under Xfce4 using thunar, one only needs gvfs-smb<br />
# pacman -S gvfs-smb<br />
<br />
From a Nautilus/Thunar window, hit {{Keypress|Ctrl}}+{{Keypress|L}} or go to the "Go" menu and select "Location..." -- both actions will allow for the typing in the "Go to:" blank. Enter:<br />
smb://servername/share<br />
<br />
{{Note|If the servername is not in {{Filename|/etc/hosts}}, use the IP Address of the server in place of the servername.}}<br />
<br />
Another Gnome browser program is Gnomba.<br />
<br />
If iptables is running, the '''nf_conntrack_netbios_ns''' module should be loaded:<br />
modprobe nf_conntrack_netbios_ns<br />
<br />
===Accessing shares from other graphical environments===<br />
There are a number of useful programs, but they will need to have packages created for them. This can be done with the Arch package build system. The good thing about these others is that they do not require a particular environment to be installed to support them, and so they bring along less baggage.<br />
<br />
LinNeighborhood is non-specific when it comes to the DE or WM. It can be seen as a simple and generic X-based LAN browser and share mounter. Not pretty, but effective.<br />
<br />
Other possible programs include pyneighborhood and RUmba, as well as the xffm-samba plugin for Xffm.<br />
<br />
===Accessing a Samba share from the shell===<br />
Shares may be accessed by using an automatic mounter or by using a [[#Manual share mounting|manual method]].<br />
<br />
====Automatic share mounting====<br />
There are several alternatives for easy share browsing.<br />
<br />
=====smbnetfs=====<br />
1. Install {{Package Official|smbnetfs}}:<br />
# pacman -S smbnetfs<br />
<br />
2. Add the following line to {{Filename|/etc/fuse.conf}}:<br />
user_allow_other<br />
<br />
3. Load the {{Codeline|fuse}} kernel module:<br />
# modprobe fuse<br />
<br />
4. Start the {{Codeline|smbnetfs}} [[daemon]]:<br />
# /etc/rc.d/smbnetfs start<br />
<br />
If the required configuration is properly researched and done, it is claimed that all shares in the network are now automatically mounted under {{Filename|/mnt/smbnet}}.<br />
<br />
Add the following to {{Filename|/etc/rc.conf}} to access the shares at boot:<br />
MODULES=(... '''fuse''' ...)<br />
DAEMONS=(... '''smbnetfs''' ...)<br />
<br />
If a username and a password are required to access some of the shared folders, you have to edit {{filename|/etc/smbnetfs/.smb/smbnetfs.conf}} by uncommenting the line starting with "auth" and editing it to your needs:<br />
<br />
auth "hostname" "username" "password"<br />
<br />
Then, it may be necessary to change the permissions of {{filename|/etc/smbnetfs/.smb/smbnetfs.conf}} and all include files for smbnetfs to work correctly:<br />
<br />
# chmod 600 /etc/smbnetfs/.smb/smbnetfs.conf<br />
<br />
=====fusesmb=====<br />
{{Note|1=Because {{Codeline|smbclient 3.2.X}} is malfunctioning with {{Codeline|fusesmb}}, revert to using older versions if necessary. See the [http://bbs.archlinux.org/viewtopic.php?id=58434 relevant forum topic] for details.}}<br />
<br />
1. Install the {{Package AUR|fusesmb}} package from the [[AUR]].<br />
<br />
2. Create a mount point:<br />
# mkdir /mnt/fusesmb<br />
<br />
3. Load {{Codeline|fuse}} module:<br />
# modprobe fuse<br />
<br />
4. Mount the shares:<br />
# fusesmb -o allow_other /mnt/fusesmb<br />
<br />
For mounting shares at boot, add the command above to {{Filename|/etc/rc.local}} and add {{Codeline|fuse}} module to {{Filename|/etc/rc.conf}}:<br />
MODULES=(... '''fuse''' ...)<br />
<br />
=====Autofs=====<br />
See [[Autofs]] for information on the kernel-based automounter for Linux.<br />
<br />
====Manual share mounting====<br />
1. Use [[smbclient]] to browse shares from the shell. To list any public shares on a server:<br />
$ smbclient -L <hostname> -U%<br />
<br />
2. Create the mount point for the share:<br />
# mkdir /mnt/MOUNTPOINT<br />
<br />
3. Mount the share using {{Codeline|mount.cifs}}. Keep in mind that not all options may be needed nor desirable, such as {{Codeline|password}}:<br />
# mount -t cifs //''SERVER''/''SHARENAME'' ''MOUNTPOINT'' -o user=''USERNAME'',password=''PASSWORD'',workgroup=''WORKGROUP'',ip=''SERVERIP''<br />
<br />
;{{Codeline|SERVER}}: The Windows system's name<br />
;{{Codeline|SHARENAME}}: The shared directory<br />
;{{Codeline|MOUNTPOINT}}: The local directory where the share will be mounted to<br />
;{{Codeline|-o [options]}}: Specifies options for {{Codeline|mount.cifs}}<br />
:;{{Codeline|user}}: Username used to mount the share<br />
:;{{Codeline|password}}: The shared directory's password<br />
:;{{Codeline|workgroup}}: Used to specify the workgroup<br />
:;{{Codeline|ip}}: The IP address of the server -- if the system is unable to find the Windows computer by name (DNS, WINS, hosts entry, etc.)<br />
<br />
{{Note|Abstain from using trailing directory ('''/''') characters. Using {{Filename|//SERVER/SHARENAME'''/'''}} will not work.}}<br />
<br />
4. To unmount the share, use:<br />
# umount /mnt/MOUNTPOINT<br />
<br />
=====Adding the share to {{Filename|fstab}}=====<br />
Add the following to {{Filename|/etc/[[fstab]]}} for easy mounting:<br />
//SERVER/SHARENAME /mnt/MOUNTPOINT cifs noauto,noatime,username=USER,password=PASSWORD,workgroup=WORKGROUP,ip=SERVERIP 0 0<br />
<br />
The {{Codeline|noauto}} option disables mounting it automatically at boot and {{Codeline|noatime}} increases performance by skipping inode access times.<br />
<br />
After adding the previous line, the syntax to mount files becomes simpler:<br />
# mount /mnt/MOUNTPOINT<br />
<br />
If adding a Samba share to {{Filename|fstab}}, the {{codeline|netfs}} daemon should also be added to {{Filename|[[rc.conf]]}}, somewhere after the [[network]] daemon. The {{codeline|netfs}} daemon will mount network partitions at boot and, more importantly, unmount network partitions at shutdown. Even if using the {{codeline|noauto}} option in {{Filename|fstab}}, the {{codeline|netfs}} daemon should be used. Without it any network share that is mounted when shutting down will cause the {{codeline|network}} daemon to wait for the connection to time out, considerably extending poweroff time.<br />
<br />
=====Allowing users to mount=====<br />
Before enabling access to the mount commands, {{Filename|fstab}} needs to be modified. Add the {{Codeline|users}} options to the entry in {{Filename|/etc/fstab}}:<br />
//SERVER/SHARENAME /path/to/SHAREMOUNT cifs '''users''',noauto,noatime,username=USER,password=PASSWORD,workgroup=WORKGROUP,ip=SERVERIP 0 0<br />
<br />
{{Note|The option is {{codeline|user'''s'''}} (plural). For other filesystem types handled by mount, this option is usually ''user''; sans the "'''s'''".}}<br />
<br />
This will allow users to mount it aslong as the mount point resides in a directory ''controllable'' by the user; i.e. the user's home. For users to be allowed to mount and unmount the Samba shares with mount points that they do not own, use [[#smbnetfs]], or grant privileges using [[sudo]].<br />
<br />
== Tips and tricks ==<br />
<br />
=== Share files for your LAN without user and password ===<br />
<br />
==== Option 1 - Force guest connections ====<br />
<br />
Edit {{Filename|/etc/samba/smb.conf}} and change the following line:<br />
<br />
security = user<br />
<br />
to<br />
<br />
security = share<br />
<br />
==== Option 2 - Allow guest and User connections ====<br />
<br />
Edit {{Filename|/etc/samba/smb.conf}} and add the following line:<br />
<br />
map to guest = Bad User<br />
<br />
After this line<br />
<br />
security = user<br />
<br />
<br />
If you want to restrict the shares data to a specific interface replace:<br />
<br />
; interfaces = 192.168.12.2/24 192.168.13.2/24<br />
<br />
with:<br />
<br />
interfaces = lo eth0<br />
bind interfaces only = true<br />
<br />
(changing eth0 to the local network you want share with.)<br />
<br />
If you want to edit the account that access the shares, edit the following line:<br />
<br />
; guest account = nobody<br />
<br />
The last step is to create share directory (for write access make writable = yes):<br />
<br />
[Public Share]<br />
path = /path/to/public/share<br />
available = yes<br />
browsable = yes<br />
public = yes<br />
writable = no<br />
<br />
=== Sample configuration file ===<br />
<br />
The configuration that worked for one user:<br />
[global]<br />
workgroup = WORKGROUP<br />
server string = Samba Server<br />
netbios name = PC_NAME<br />
security = share<br />
; the line below is important! If you have permission issues make<br />
; sure the user here is the same as the user of the folder you<br />
; want to share<br />
guest account = mark<br />
username map = /etc/samba/smbusers<br />
name resolve order = hosts wins bcast<br />
wins support = no<br /><br />
[public]<br />
comment = Public Share<br />
path = /path/to/public/share<br />
available = yes<br />
browsable = yes<br />
public = yes<br />
writable = no<br />
<br />
=== Adding network shares using KDE4 GUI ===<br />
How to configure the folder sharing in KDE4. Simple file sharing limits user shared folders to their home directory and read-only access. Advanced file sharing gives full semantics of Samba with no limits to shared folders but requires su or sudo root permissions.<br />
* Read only, simple file sharing: [[Samba/Simple file sharing with KDE4]]<br />
* Full capability file sharing: [[Samba/Advanced file sharing with KDE4]]<br />
<br />
=== Discovering network shares ===<br />
<br />
If nothing is known about other systems on the local network, and automated tools such as [[#smbnetfs]] are not available, the following methods allow one to manually probe for Samba shares.<br />
<br />
1. First, install {{Package Official|nmap}} and {{Package Official|smbclient}} using [[pacman]]:<br />
# pacman -S nmap smbclient<br />
<br />
2. {{Codeline|nmap}} checks which ports are open:<br />
# nmap -p 139 -sT 192.168.1.*<br />
<br />
In this case, a scan on the 192.168.1.* IP address range and port 139 has been performed, resulting in:<br />
{{Command<br />
|name=nmap -sT 192.168.1.*<br />
|output=Starting nmap 3.78 ( http://www.insecure.org/nmap/ ) at 2005-02-15 11:45 PHT<br />
Interesting ports on 192.168.1.1:<br />
(The 1661 ports scanned but not shown below are in state: closed)<br />
PORT STATE SERVICE<br />
'''139/tcp open netbios-ssn'''<br />
5000/tcp open UPnP<br />
<br />
Interesting ports on 192.168.1.5:<br />
(The 1662 ports scanned but not shown below are in state: closed)<br />
PORT STATE SERVICE<br />
6000/tcp open X11<br />
<br />
Nmap run completed -- 256 IP addresses (2 hosts up) scanned in 7.255 seconds<br />
}}<br />
<br />
The first result is another system; the second happens to be the client from where this scan was performed.<br />
<br />
3. Now that systems with port 139 open are revealed, use {{Codeline|nmblookup}} to check for NetBIOS names: <br />
{{Command<br />
|name=nmblookup -A 192.168.1.1<br />
|output=Looking up status of 192.168.1.1<br />
PUTER <00> - B <ACTIVE><br />
HOMENET <00> - <GROUP> B <ACTIVE><br />
PUTER <03> - B <ACTIVE><br />
'''PUTER <20> - B <ACTIVE>'''<br />
HOMENET <1e> - <GROUP> B <ACTIVE><br />
USERNAME <03> - B <ACTIVE><br />
HOMENET <1d> - B <ACTIVE><br />
MSBROWSE <01> - <GROUP> B <ACTIVE><br />
}}<br />
<br />
Regardless of the output, look for '''<20>''', which shows the host with open services.<br />
<br />
4. Use {{Codeline|smbclient}} to list which services are shared on ''PUTER''. If prompted for a password, pressing enter should still display the list:<br />
{{Command<br />
|name=smbclient -L \\PUTER<br />
|output=<nowiki><br />
Sharename Type Comment<br />
--------- ---- -------<br />
MY_MUSIC Disk<br />
SHAREDDOCS Disk<br />
PRINTER$ Disk<br />
PRINTER Printer<br />
IPC$ IPC Remote Inter Process Communication<br />
<br />
Server Comment<br />
--------- -------<br />
PUTER<br />
<br />
Workgroup Master<br />
--------- -------<br />
HOMENET PUTER<br />
</nowiki>}}<br />
<br />
This shows which folders are shared and can be mounted locally. See: [[#Accessing Samba shares]]<br />
<br />
=== Remote control of Windows computer ===<br />
<br />
Samba offers a set of tools for communication with Windows. These can be handy in case you cannot access a Windows computer through remote desktop, as shown by some examples.<br />
<br />
Send shutdown command with a comment:<br />
<br />
$ net rpc shutdown -C "comment" -I IPADDRESS -U USERNAME%PASSWORD<br />
If you prefer a forced shutdown instead change -C with comment to a single -f. For a restart you only add -r, followed by a -C or -f.<br />
<br />
Stop and start services:<br />
<br />
$ net rpc service stop SERVICENAME -I IPADDRESS -U USERNAME%PASSWORD<br />
<br />
To see all possible net rpc command:<br />
<br />
$ net rpc<br />
<br />
== Troubleshooting ==<br />
=== Trouble accessing a password-protected share from Windows ===<br />
<br />
If you are having trouble accessing a password protected share from Windows, try adding this to {{Filename|/etc/samba/smb.conf}}:[http://blogs.computerworld.com/networking_nightmare_ii_adding_linux]<br />
<br />
Note that you have to add this to your '''local''' smb.conf, not to the server's smb.conf<br />
<br />
[global]<br />
# lanman fix<br />
client lanman auth = yes<br />
client ntlmv2 auth = no<br />
<br />
=== Getting a dialog box up takes a long time ===<br />
<br />
I had a problem that it took ~30 seconds to get a password dialog box up when trying to connect from both Windows XP/Windows 7. Analyzing the error.log on the server I saw:<br />
<br />
[2009/11/11 06:20:12, 0] printing/print_cups.c:cups_connect(103)<br />
Unable to connect to CUPS server localhost:631 - Interrupted system call<br />
<br />
I do not have any printer connected to this server, so I added this to the global section:<br />
<br />
load printers = no<br />
printing = bsd<br />
disable spoolss = yes<br />
printcap name = /dev/null<br />
<br />
Not sure if all of them are necessary, but at least it works now.<br />
<br />
=== Changes in Samba version 3.4.0 ===<br />
<br />
[http://www.samba.org/samba/history/samba-3.4.0.html Major enhancements in Samba 3.4.0] include:<br />
<br />
The default passdb backend has been changed to 'tdbsam'! That breaks existing setups using the 'smbpasswd' backend without explicit declaration!<br />
<br />
If you would like to stick to the 'smbpasswd' backend try changing this in {{Filename|/etc/samba/smb.conf}}:<br />
<br />
passdb backend = smbpasswd<br />
<br />
or convert your smbpasswd entries using:<br />
<br />
sudo pdbedit -i smbpasswd -e tdbsam<br />
<br />
<br />
=== Error: Value too large for defined data type ===<br />
<br />
With some applications you could get this error whith every attempt to open a file mounted in smbfs/cifs:<br />
<br />
Value too large for defined data type<br />
<br />
The solution[https://bugs.launchpad.net/ubuntu/+bug/479266/comments/5] is to add this options to your smbfs/cifs mount options (in /etc/fstab for example):<br />
<br />
,nounix,noserverino<br />
<br />
''It works on Arch Linux up-to-date (2009-12-02)''<br />
<br />
=== I need to restart samba in order get my shares visible by other ===<br />
<br />
If upon starting your computer, the samba shares you have defined cannot be accessed from any client, check the following :<br />
* Make sure that you have not forgotten to add the samba daemon to the DAEMONS array of /etc/rc.conf (after the 'network' daemon)<br />
* The ''network'' service is not started in the background (prefixed with @ ). Removing the '@' in front of 'network' can fix the issue. Reboot to check.<br />
<br />
My guess on what has happened: When samba starts, the network is not properly initialized, so the server does not know on which interface to listen and thus fails to initialize correctly.<br />
<br />
== Resources ==<br />
*[http://www.samba.org/ Samba's official site]<br />
*[http://www.samba.org/samba/docs/SambaIntro.html Samba: An Introduction]</div>Gladstonehttps://wiki.archlinux.org/index.php?title=SSH_keys&diff=159954SSH keys2011-09-16T14:08:14Z<p>Gladstone: /* Simple method */ -- add info of ssh-copy-id on a non-standard port</p>
<hr />
<div>[[Category:Secure Shell (English)]]<br />
{{i18n|Using SSH Keys}}<br />
<br />
==What are SSH Keys?==<br />
SSH keys are an implementation of [[Wikipedia:Public-key cryptography|public-key cryptography]]. They solve the problem of brute-force password attacks by making them computationally impractical. Additionally, by using SSH keys, you can easily connect to a server, or multiple servers, without having to enter your password for each system.<br />
<br />
It is possible to setup your keys without a passphrase, however that is unwise as if anyone gets hold of your key they can use it. This guide describes how to setup your system so that a passphrase is used to encrypt the private key and must be entered to use it.<br />
<br />
===Generating SSH Keys===<br />
If you don't already have OpenSSH installed, install it now as it is not installed by default on Arch.<br />
<br />
# pacman -S openssh<br />
<br />
The keys can then be generated by running the ssh-keygen command as a user:<br />
<br />
$ ssh-keygen -b 521 -t ecdsa -C"$(id -un)@$(hostname)-$(date --rfc-3339=date)"<br />
Generating public/private ecdsa key pair.<br />
Enter file in which to save the key (/home/mith/.ssh/id_ecdsa):<br />
Enter passphrase (empty for no passphrase):<br />
Enter same passphrase again:<br />
Your identification has been saved in /home/mith/.ssh/id_ecdsa.<br />
Your public key has been saved in /home/mith/.ssh/id_ecdsa.pub.<br />
The key fingerprint is:<br />
3a:43:37:6d:e2:5b:97:e2:6f:e2:80:f9:23:97:70:0c mith@middleearth<br />
<br />
It will prompt you for a location (which you should leave as the default), however the passphrase is the important bit! You should already be aware of the criteria that make a good passphrase.<br />
<br />
So what did we just do? We generated a 521 bit long ({{Codeline|-b 521}}) public/private ECDSA ({{Codeline|-t ecdsa}}) key pair with an extended comment including the data ({{Codeline|-C"$(id -un)"@$(hostname)-$(date --rfc-3339&#61;date)}}) via the {{Codeline|ssh-keygen}} command.<br />
<br />
{{Note| These keys are used only to authenticate you, choosing stronger keys here will not reduce system performance when transfering data via ssh.}}<br />
<br />
Elliptic curve cryptography provides smaller key sizes and faster operations for equivalent estimated security. It was introduced as the preferred method for authentication in OpenSSH 5.7, see [http://openssh.org/txt/release-5.7 OpenSSH 5.7 Release Notes]. ECDSA keys might not be compatible with systems that ship old versions of OpenSSH.<br />
<br />
If you want to create a RSA (2048-4096 bit) or DSA (1024 bit) key pair instead of ECDSA just use {{Codeline|-t rsa}} or {{Codeline|-t dsa}} and don't forget to increase the key size, running {{Codeline|ssh-keygen}} without ({{Codeline|-b}}) will provide reasonable defaults.<br />
<br />
===Copying the keys to the remote server===<br />
Now you have generated the keys you need to copy them to the remote server.<br />
====Simple method====<br />
If your key file is named {{Filename|id_rsa.pub}} you can simply do<br />
$ ssh-copy-id your-server.org<br />
or if you need to use different user name<br />
$ ssh-copy-id your-login@your-server.org<br />
If your key filename is different you'll get an error saying "/usr/bin/ssh-copy-id: ERROR: No identities found". In this case you have to provide the location of the identity:<br />
$ ssh-copy-id -i ~/.ssh/id_ecdsa.pub your-login@your-server.org<br />
If you need to specify a port, include it within the host declaration:<br />
$ ssh-copy-id -i ~/.ssh/id_rsa.pub '-p 221 username@host'<br />
<br />
====Traditional method====<br />
By default, for OpenSSH, the public key needs to be concatenated into {{Filename|~/.ssh/authorized_keys}}.<br />
<br />
$ scp ~/.ssh/id_ecdsa.pub mith@metawire.org:<br />
<br />
This copies the public key ({{Filename|id_dsa.pub}}) to your remote server via {{Codeline|scp}} (note the {{Codeline|:}} at the end of the server address). The file ends up in the home directory, but you can specify another path if you like.<br />
<br />
Next up, on the remote server, you need to create the {{Filename|~/.ssh}} directory if it doesn't exist and concatenate the key {{Filename|authorized_keys}} file:<br />
<br />
$ ssh mith@metawire.org<br />
mith@metawire.org's password:<br />
$ mkdir ~/.ssh<br />
$ cat ~/id_ecdsa.pub >> ~/.ssh/authorized_keys<br />
$ rm ~/id_ecdsa.pub<br />
$ chmod 600 ~/.ssh/authorized_keys<br />
<br />
The last two commands remove the public key from the server (which isn't needed now), and sets the correct permissions on the authorized_keys file.<br />
<br />
If you now disconnect from the server, and attempt to reconnect, you should be asked for the passphrase of the key:<br />
<br />
$ ssh mith@metawire.org<br />
Enter passphrase for key '/home/mith/.ssh/id_ecdsa':<br />
<br />
If you are unable to login with the key, double check the permissions on the {{Filename|authorized_keys}} file.<br />
<br />
Also check the permissions on the {{Filename|~/.ssh}} directory, which should have write permissions off for 'group' and 'other'. Run the following command to disable 'group' and 'other' write permissions for the {{Filename|~/.ssh}} directory:<br />
$ chmod go-w ~/.ssh<br />
<br />
===Disabling password logins===<br />
Setting up SSH keys is not enough to gain any security benefit. You must also disable password logins:<br />
<br />
{{File|name=/etc/ssh/sshd_config|content=<br />
PasswordAuthentication no<br />
ChallengeResponseAuthentication no}}<br />
<br />
==Remember key passphrases==<br />
Now you can login to your servers by using a key instead of a password, but how is this any easier, as you still need to enter the key passphrase? The answer is to use a SSH agent, a program which remembers the passphrases of your keys! There a number of different tools available, so have a read through and choose the one which seems best for you.<br />
<br />
===ssh-agent===<br />
ssh-agent is the default agent included with OpenSSH.<br />
<br />
$ ssh-agent<br />
SSH_AUTH_SOCK=/tmp/ssh-vEGjCM2147/agent.2147; export SSH_AUTH_SOCK;<br />
SSH_AGENT_PID=2148; export SSH_AGENT_PID;<br />
echo Agent pid 2148;<br />
<br />
When you run {{Codeline|ssh-agent}}, it will print out what environment variables it would use. To make use of these variables, run the command through the {{Codeline|eval}} command.<br />
<br />
$ eval `ssh-agent`<br />
Agent pid 2157<br />
<br />
You can add this to {{Filename|/etc/profile}} so that it will be run whenever you open a session:<br />
<br />
# echo 'eval `ssh-agent`' >> /etc/profile<br />
<br />
Note the correct quotes, the outer ones are single quotes, where as the inner ones are backticks!<br />
<br />
Now that the {{Codeline|ssh-agent}} is running, we need to tell it that we have a private key and where that is.<br />
<br />
$ ssh-add ~/.ssh/id_ecdsa<br />
Enter passphrase for /home/user/.ssh/id_ecdsa:<br />
Identity added: /home/user/.ssh/id_ecdsa (/home/user/.ssh/id_ecdsa)<br />
<br />
We were asked for our passphrase, entered it, that's all. Now you can login to your remote server without having to enter your password while your private key is password-protected. Sweet isn't it?<br />
<br />
The only downside is that a new instance of {{Codeline|ssh-agent}} needs to be created for every new console (shell) you open, that means you have to run {{Codeline|ssh-add}} every time again on each console. There is a workaround to that with a program or rather a script called [http://www.gentoo.org/proj/en/keychain/index.xml keychain] which is covered in the next section.<br />
<br />
====Using GnuPG Agent====<br />
<br />
The [[GnuPG]] agent, distributed with the {{Package Official|gnupg2}} package, has OpenSSH agent emulation. If you use GPG you might consider using its agent to take care of all of your keys. Otherwise you might like the PIN entry dialog it provides and its passphrase management, which is different from keychain.<br />
<br />
To start using GPG agent for your SSH keys you should first start the gpg-agent with the {{Codeline|--enable-ssh-support}} option. Example (don't forget to make the file executable):<br />
{{File|name=/etc/profile.d/gpg-agent.sh|content=<nowiki><br />
#!/bin/sh<br />
<br />
# Start the GnuPG agent and enable OpenSSH agent emulation<br />
gnupginf="${HOME}/.gnupg/gpg-agent.info"<br />
<br />
if pgrep -u "${USER}" gpg-agent >/dev/null 2>&1; then<br />
eval `cat $gnupginf`<br />
eval `cut -d= -f1 $gnupginf | xargs echo export`<br />
else<br />
eval `gpg-agent --enable-ssh-support --daemon`<br />
fi<br />
</nowiki>}}<br />
<br />
Once gpg-agent is running you can use ssh-add to approve keys, just like you did with plain ssh-agent. The list of approved keys is stored in the {{Filename|~/.gnupg/sshcontrol}} file. Once your key is approved you will get a PIN entry dialog every time your passphrase is needed. You can control passphrase caching in the {{Filename|~/.gnupg/gpg-agent.conf}} file. The following example would have gpg-agent cache your keys for 3 hours: <br />
<br />
# Cache settings<br />
default-cache-ttl 10800<br />
default-cache-ttl-ssh 10800<br />
<br />
Other useful settings for this file include the PIN entry program (GTK, QT or ncurses version), keyboard grabbing and so on...:<br />
<br />
# Environment file<br />
write-env-file /home/username/.gnupg/gpg-agent.info<br />
<br />
# Keyboard control<br />
#no-grab<br />
<br />
# PIN entry program<br />
#pinentry-program /usr/bin/pinentry-curses<br />
#pinentry-program /usr/bin/pinentry-qt4<br />
pinentry-program /usr/bin/pinentry-gtk-2<br />
<br />
====Using keychain====<br />
<br />
[http://www.funtoo.org/en/security/keychain/intro/ Keychain] manages one or more specified private keys. When initialized it will ask for the passphrase for the private key(s) and store it. That way your private key is password protected but you won't have to enter your password over and over again.<br />
<br />
Install keychain from the extra repo:<br />
<br />
# pacman -S keychain<br />
<br />
Create the following file and make it executable:<br />
{{File|name=/etc/profile.d/keychain.sh|content=<nowiki><br />
eval `keychain --eval --nogui -Q -q id_ecdsa`<br />
</nowiki>}}<br />
<br />
Or<br />
<br />
{{File|name=/etc/profile.d/keychain.sh|content=<nowiki><br />
/usr/bin/keychain -Q -q --nogui ~/.ssh/id_dsa<br />
[[ -f $HOME/.keychain/$HOSTNAME-sh ]] && source $HOME/.keychain/$HOSTNAME-sh<br />
</nowiki>}}<br />
<br />
Or<br />
<br />
Append <br />
eval `keychain --eval --agents ssh id_dsa`<br />
to your {{Filename|.bashrc}} or {{Filename|.bash_profile}}.<br />
<br />
{{Tip| If you want greater security replace -Q with --clear but will be less convenient.}}<br />
<br />
If necessary, replace {{Filename|~/.ssh/id_dsa}} with the path to your private key. For those using a non-Bash compatible shell, see {{Codeline|keychain --help}} or {{Codeline|man keychain}} for details on other shells.<br />
<br />
Close your shell and open it again. Keychain should come up and if it's your first run it will ask your for the passphrase of the specified private key.<br />
<br />
See also the next section to learn how to go about Xsessions and keychain. Of course, you do still not need to use ssh-agent manually. Just install on of the x11-ask-keypass variants and you are good to go.<br />
<br />
====Using ssh-agent and x11-ssh-askpass====<br />
<br />
You need to start the ssh-agent everytime you start a new Xsession. The ssh-agent will be closed when the X session ends.<br />
<br />
Install a variant of x11-ssh-askpass which will ask your passphrase everytime you open a new Xsession. Either use the original x11-ssh-askpass from [[AUR]] or go with either ksshaskpass (uses kdelibs):<br />
# pacman -S ksshaskpass<br />
or openssh-askpass (uses qt):<br />
# pacman -S openssh-askpass<br />
<br />
After installing these, closing your Xsession and relogging you will henceforth be asked your passphrase on Xsession init without any further work.<br />
<br />
===GNOME Keyring===<br />
If you use the [[GNOME]] desktop, the [[GNOME Keyring]] tool can be used as an SSH agent. Visit the [[GNOME Keyring]] article.<br />
<br />
==Troubleshooting==<br />
If it appears that the SSH server is ignoring your keys, ensure that you have the proper permissions set on all relevant files.<br />
<br />
For the local machine:<br />
<br />
$ chmod 700 ~/<br />
$ chmod 700 ~/.ssh<br />
$ chmod 600 ~/.ssh/id_ecdsa<br />
<br />
For the remote machine:<br />
<br />
$ chmod 700 ~/<br />
$ chmod 700 ~/.ssh<br />
$ chmod 600 ~/.ssh/authorized_keys<br />
<br />
Failing this, run the sshd in debug mode and monitor the output while connecting:<br />
<br />
# /usr/sbin/sshd -d<br />
<br />
==Useful Links / Information==<br />
* [http://www-106.ibm.com/developerworks/linux/library/l-keyc.html OpenSSH key management, Part 1]<br />
* [http://www-106.ibm.com/developerworks/linux/library/l-keyc2/ OpenSSH key management, Part 2]<br />
* [http://www-106.ibm.com/developerworks/library/l-keyc3/ OpenSSH key management, Part 3]<br />
* [http://kimmo.suominen.com/docs/ssh/ Getting started with SSH]<br />
* [http://openssh.org/txt/release-5.7 OpenSSH 5.7 Release Notes]</div>Gladstonehttps://wiki.archlinux.org/index.php?title=Uncomplicated_Firewall&diff=159945Uncomplicated Firewall2011-09-16T11:05:33Z<p>Gladstone: /* Gufw */</p>
<hr />
<div>[[Category:Security (English)]]<br />
[[Category:Networking (English)]]<br />
<br />
[[Wikipedia:Uncomplicated Firewall|Uncomplicated Firewall]] (ufw) is a simple frontend for [[iptables]] that is designed to be easy to use.<br />
<br />
==Installation==<br />
<br />
{{Package Official|ufw}} can be installed from the [community] repository.<br />
<br />
You need to include '''ufw''' in your [[Rc.conf#Daemons|DAEMONS array in rc.conf]], ideally before bringing up your network interfaces. <br />
{{Note|Do not include the iptables daemon because it simply loads an iptables ruleset from {{Filename|/etc/iptables/iptables.rules}}.}}<br />
<br />
==Basic Configuration==<br />
A very simplistic configuration which will deny all by default, allow any protocol from inside a 192.168.0.1-192.168.0.255 LAN, and allow incoming Deluge and SSH traffic from anywhere:<br />
<br />
# ufw default deny<br />
# ufw allow from 192.168.0.0/24<br />
# ufw allow Deluge<br />
# ufw allow SSH<br />
<br />
The next line is only needed ''once'' the first time you install the package. From there on out, either put '''ufw''' in your DAEMONS array in {{filename|rc.conf}} or control it via the standard {{Codeline|rc.d}} script (i.e. {{Codeline|rc.d start ufw}}):<br />
<br />
# ufw enable<br />
<br />
Finally, query the rules being applied via the status command:<br />
# ufw status<br />
<pre>Status: active<br />
<br />
To Action From<br />
-- ------ ----<br />
Anywhere ALLOW 192.168.0.0/24<br />
Deluge ALLOW Anywhere<br />
SSH ALLOW Anywhere<br />
</pre><br />
<br />
==Adding Other Applications==<br />
<br />
The PKG comes with some defaults based on the default ports of many common daemons and programs. Inspect the options by looking in the {{filename|/etc/ufw/applications.d}} directory or by listing them in the program itself:<br />
<br />
# ufw app list<br />
<br />
If users are running any of the applications on a non-standard port, it is recommended to simply make {{Filename|/etc/ufw/applications.d/custom}} containing the needed data using the defaults as a guide.<br />
<br />
{{Warning|If users modify any of the PKG provided rule sets, these will be overwritten the first time the ufw package is updated. This is why custom app definitions need to reside in a non-PKG file as recommended above!}}<br />
<br />
Example, deluge with custom tcp ports that range from 20202-20205:<br />
<br />
[Deluge-my]<br />
title=Deluge<br />
description=Deluge BitTorrent client<br />
ports=20202:20205/tcp<br />
<br />
Should you require to define both tcp and udp ports for the same application, simply separate them with a pipe as shown: this app opens tcp ports 10000-10002 and udp port 10003<br />
ports=10000:10002/tcp|10003/udp<br />
<br />
One can also use a comma to define ports if a range is not desired. This example opens tcp ports 10000-10002 (inclusive) and udp ports 10003 and 10009<br />
<br />
ports=10000:10002/tcp|10003,10009/udp<br />
<br />
If you plan using UPnP you should open port 1900 <br />
<br />
# ufw allow 1900<br />
<br />
<br />
==Deleting Applications==<br />
Drawing on the Deluge/Deluge-my example above, the following will remove the standard Deluge rules and replace them with the Deluge-my rules from the above example:<br />
<br />
# ufw delete allow Deluge<br />
# ufw allow Deluge-my<br />
<br />
Query the result via the status command:<br />
<br />
# ufw status<br />
<pre>Status: active<br />
<br />
To Action From<br />
-- ------ ----<br />
Anywhere ALLOW 192.168.0.0/24<br />
SSH ALLOW Anywhere<br />
Deluge-my ALLOW Anywhere<br />
</pre><br />
<br />
==Rate Limiting with ufw==<br />
ufw has the ability to deny connections from an IP address that has attempted to initiate 6 or more connections in the last 30 seconds. Users should consider using this option for services such as sshd.<br />
<br />
Using the above basic configuration, to enable rate limiting we would simply replace the allow parameter with the limit parameter. The new rule will then replace the previous.<br />
<br />
# ufw limit SSH<br />
Rule updated<br />
# ufw status<br />
<pre>Status: active<br />
<br />
To Action From<br />
-- ------ ----<br />
Anywhere ALLOW 192.168.0.0/24<br />
SSH LIMIT Anywhere<br />
Deluge-my ALLOW Anywhere<br />
</pre><br />
<br />
== GUI frontends ==<br />
<br />
===Gufw===<br />
[http://gufw.tuxfamily.org/index.html Gufw] is an easy to use Ubuntu / Linux firewall, powered by [[Firewalls#ufw|ufw]]. <br />
<br />
Gufw is an easy, intuitive, way to manage your Linux firewall. It supports common tasks such as allowing or blocking pre-configured, common p2p, or individual ports port(s), and many others! Gufw is powered by ufw, runs on Ubuntu, and anywhere else Python, GTK, and Ufw are available.<br />
<br />
===kcm-ufw===<br />
[http://aur.archlinux.org/packages.php?ID=46880 kcm-ufw] is KDE4 control module for [[Firewalls#ufw|ufw]]. The following features are supported:<br />
* Enable/disable firewall<br />
* Configure firewall default settings<br />
* Add, edit, and remove rules<br />
* Re-order rules via drag\'n\'drop<br />
* Import/export of rules<br />
* Setting of some IP tables modules<br />
<br />
The module will appear under "Network and Connectivity" category.<br />
<br />
==See also==<br />
*[http://help.ubuntu.com/community/UFW Ubuntu UFW Documentation]<br />
*[http://manpages.ubuntu.com/manpages/natty/en/man8/ufw.8.html UFW manual]</div>Gladstonehttps://wiki.archlinux.org/index.php?title=Activating_numlock_on_bootup&diff=159944Activating numlock on bootup2011-09-16T10:44:41Z<p>Gladstone: /* TTY (Teletype) Consoles 1-6 */ -- for brevity, remove the historic (2009) note about vc[n] -> tty[n]</p>
<hr />
<div>[[Category:Boot process (English)]]<br />
[[Category:Desktop environments (English)]]<br />
[[Category:Keyboards (English)]]<br />
{{i18n|Activating Numlock on Bootup}}<br />
[[de:Numlock]]<br />
<br />
== TTY (Teletype) Consoles 1-6 ==<br />
<br />
To activate NumLock during normal bootup in TTY consoles 1-6 (tty1 -> tty6), add the following line to {{Filename|/etc/rc.local}}:<br />
for tty in /dev/tty?; do /usr/bin/setleds -D +num < "$tty"; done<br />
<br />
If strange things start to happen (the NumLock LED is on, but the num pad still works as arrow keypad), there seems to be a conflict between <code>setleds</code> and Xserver.<br />
Limit the <code>for</code> command only to the consoles you have set on {{Filename|/etc/inittab}}. For example, for the first 6 consoles (default) : <code>for tty in /dev/tty{1..6}; do</code> ...<br />
<br />
== X.org ==<br />
If you use startx to start your X session, simply install the numlockx package and add it to your {{Filename|~/.xinitrc}} file.<br />
<br />
Install <code>numlockx</code>:<br />
# pacman -S numlockx<br />
<br />
Add it to {{Filename|~/.xinitrc}} before <code>exec</code>:<br />
#!/bin/sh<br />
#<br />
# ~/.xinitrc<br />
#<br />
# Executed by startx (run your window manager from here)<br />
#<br />
<br />
numlockx &<br />
<br />
exec your_window_manager<br />
<br />
=== KDM ===<br />
If you use KDM as a login manager, add :<br />
numlockx on<br />
to your {{Filename|/usr/share/config/kdm/Xsetup, or to {{Filename|/opt/kde/share/config/kdm/Xsetup}} if you're using KDM3.<br />
<br />
Note that this file lives outside of Pacman's protected area, so it might be overwritten on update without warning or creating a <code>.pacnew</code> file. If it bothers you, add the following line to your {{Filename|/etc/pacman.conf}} file (omit the leading slash in the path):<br />
<br />
NoUpgrade = usr/share/config/kdm/Xsetup<br />
<br />
=== KDE4 Users ===<br />
<br />
Go to System Settings, under the Hardware/Input Devices/Keyboard item you will find an option to select the behavior of NumLock.<br />
<br />
<br />
====Alternate Method====<br />
You may alternatively add a script to your {{Filename|~/.kde4/Autostart}} directory:<br />
$ nano ~/.kde4/Autostart/numlockx<br />
Add the following: <br />
#!/bin/sh<br />
numlockx on<br />
And make it executable:<br />
$ chmod +x ~/.kde4/Autostart/numlockx<br />
<br />
===GDM===<br />
First make sure that you have numlockx (from extra) installed. Then, GDM users may add the following code to {{Filename|/etc/gdm/Init/Default}}:<br />
if [ -x /usr/bin/numlockx ]; then<br />
/usr/bin/numlockx on<br />
fi<br />
<br />
===SLiM===<br />
In the file {{Filename|/etc/slim.conf}} find the line:<br />
#numlock on<br />
and remove the "#"</div>Gladstonehttps://wiki.archlinux.org/index.php?title=Mouse_polling_rate&diff=106295Mouse polling rate2010-05-13T19:39:40Z<p>Gladstone: /* Displaying current mouse rate */ -- old mirror is dead</p>
<hr />
<div>[[Category:X Server (English)]][[Category:HOWTOs (English)]][[Category:Mice (English)]]<br />
If you have invested in a high resolution mouse, adjusting the USB polling rate is a common trick to utilise the added precision it brings. The polling rate (or report rate) determines how often the mouse sends information to your computer. Measured in ''Hz'', this setting equates to lag time (in ''ms'').<br />
<br />
By default, the USB polling rate is set at 125hz. The table below represents combinations of ''Hz'' values and their corresponding delay time:<br />
<br />
{| class="wikitable grid"; border="1"<br />
! class="header" | Hz<br />
! class="header" | ms<br />
|-<br />
|1000<br />
|1<br />
|-<br />
|500<br />
|2<br />
|-<br />
|250<br />
|4<br />
|-<br />
|125<br />
|8<br />
|-<br />
|100<br />
|10<br />
|}<br />
<br />
If the polling rate is set at 125 Hz, the mouse cursor can only be updated every 8 milliseconds. In situations where lag is critical (for example games), it is useful to decrease this value to as little as possible. Increasing the polling interval will improve precision at the tradeoff of using more CPU resources, therefore care should be taken when adjusting this value.<br />
<br />
== Setting the polling rate ==<br />
Here we are using the USBHID module of the kernel to set a custom "mousepoll" rate. Simply add the following line to your /etc/modprobe.conf file:<br />
<br />
options usbhid mousepoll=[polling interval]<br />
<br />
(where [polling interval] is a number in ''ms'' from the table above. For example, to set a polling rate of 500Hz:<br />
<br />
options usbhid mousepoll=2<br />
<br />
Now, to ensure the USBHID module loads upon boot add the following to your /etc/rc.conf file, within the MODULES list:<br />
<br />
usbhid<br />
<br />
For example:<br />
<br />
MOD_AUTOLOAD="yes"<br />
MODULES=(usbhid)<br />
<br />
== Displaying current mouse rate ==<br />
A tool exists (named ''evhz'') that can display the current mouse refresh rate -- useful when checking that your customised polling settings have been applied.<br />
<br />
The original source no longer exists ([http://homepages.nildram.co.uk/~kial/evhz.c]), so a mirror has been provided here: [http://web.archive.org/web/20060623094750/http://homepages.nildram.co.uk/~kial/evhz.c evhz.c]. Full credit goes to the original author, Alan Kivlin.<br />
<br />
Compile it with:<br />
<br />
gcc -o evhz evhz.c<br />
<br />
Then execute in root:<br />
<br />
./evhz<br />
<br />
Alternatively, Windows tools such as [http://razerblueprints.net/index.php/View-document-details/18-DirectX-mouserate-checker.html DirectX mouserate checker] can be run using WINE.<br />
<br />
== Further Reading ==<br />
[http://www.overclock.net/computer-peripherals/173255-cs-s-mouse-optimization-guide.html CS:S Mouse Optimization Guide] -- largely aimed at Windows users, though the same principles apply for Linux.<br />
<br />
[http://en.gentoo-wiki.zugaina.org/index.php/HOWTO_Customize_Mouse_Polling_Rate HOWTO Customize Mouse Polling Rate] -- from Gentoo wiki<br />
<br />
[http://www.linux-gamers.net/modules/wiwimod/index.php?page=HOWTO+USBPolling Increase Mouse Polling Rate Interval]</div>Gladstonehttps://wiki.archlinux.org/index.php?title=Unclutter&diff=106293Unclutter2010-05-13T19:37:52Z<p>Gladstone: /* References */</p>
<hr />
<div>{{stub}}<br />
[[Category:X Server (English)]]<br />
== Unclutter ==<br />
<br />
Unclutter hides your X mouse cursor when you don't need it, to prevent it from getting in the way. You have only to move the mouse to restore the mouse cursor. Unclutter is very usefull in tiling wm's where you don't need the mouse often.<br />
<br />
== Installation ==<br />
<br />
Unclutter is in community:<br />
pacman -S unclutter<br />
<br />
== Usage ==<br />
<br />
Use your .xinitrc file or WM/DE to start unclutter, for .xinitrc add:<br />
unclutter &<br />
<br />
If you experience issues when using unclutter in conjunction with a tiling window manager (such as [[xmonad]]), ''hhp'' from the [http://aur.archlinux.org/packages.php?ID=24429 xmonad-utils] package is a useful and lightweight alternative.<br />
<br />
== References ==<br />
[http://linuxappfinder.com/package/unclutter unclutter] -- Linux App Finder</div>Gladstonehttps://wiki.archlinux.org/index.php?title=Unclutter&diff=106292Unclutter2010-05-13T19:36:22Z<p>Gladstone: /* Usage */ -- reference to hhp</p>
<hr />
<div>{{stub}}<br />
[[Category:X Server (English)]]<br />
== Unclutter ==<br />
<br />
Unclutter hides your X mouse cursor when you don't need it, to prevent it from getting in the way. You have only to move the mouse to restore the mouse cursor. Unclutter is very usefull in tiling wm's where you don't need the mouse often.<br />
<br />
== Installation ==<br />
<br />
Unclutter is in community:<br />
pacman -S unclutter<br />
<br />
== Usage ==<br />
<br />
Use your .xinitrc file or WM/DE to start unclutter, for .xinitrc add:<br />
unclutter &<br />
<br />
If you experience issues when using unclutter in conjunction with a tiling window manager (such as [[xmonad]]), ''hhp'' from the [http://aur.archlinux.org/packages.php?ID=24429 xmonad-utils] package is a useful and lightweight alternative.<br />
<br />
== References ==<br />
http://linuxappfinder.com/package/unclutter</div>Gladstonehttps://wiki.archlinux.org/index.php?title=Xmonad&diff=106291Xmonad2010-05-13T19:30:08Z<p>Gladstone: /* Complementary applications */ -- Link to the main Unclutter page</p>
<hr />
<div>{{i18n_links_start}}<br />
{{i18n_entry|English|Xmonad}}<br />
{{i18n_entry|Türkçe|Xmonad (Türkçe)}}<br />
{{i18n_links_end}}<br />
[http://xmonad.org/ xmonad] is a tiling window manager for X. Windows are arranged automatically to tile the screen without gaps or overlap, maximizing screen use. Window manager features are accessible from the keyboard: a mouse is optional. <br />
<br />
xmonad is written, configured and extensible in [http://haskell.org/ Haskell]. Custom layout algorithms, key bindings and other extensions may be written by the user in config files. <br />
<br />
Layouts are applied dynamically, and different layouts may be used on each workspace. [[Xinerama]] is fully supported, allowing windows to be tiled on several physical screens.<br />
<br />
For more information, please visit the xmonad website: http://xmonad.org/<br />
<br />
==Installation==<br />
<br />
xmonad is currently available in the community repo. A build for the current development snapshot (darcs) is in the [http://aur.archlinux.org/ aur]. The following instructions are for xmonad-darcs, the development snapshot.<br />
<br />
===Development version (xmonad-darcs)===<br />
<br />
The xmonad-darcs development version can be installed from the AUR, with some additional dependencies in [community]. Install them in the following order:<br />
<br />
* [http://aur.archlinux.org/packages.php?ID=12483 xmonad-darcs] - The core window manager<br />
* [http://aur.archlinux.org/packages.php?ID=13652 xmonad-contrib-darcs] - Contributed extensions providing custom layouts, configurations, etc.<br />
<br />
==Configuration==<br />
<br />
===Starting xmonad===<br />
To start xmonad automatically, simply add the command '''exec xmonad''' to your startup script (e.g. ~/.xinitrc). GDM and KDM users can create a new session file and then select xmonad from the appropriate Session menu.<br />
<br />
''Note:'' by default, xmonad does not set an X cursor, therefore the "cross" cursor is usually displayed which can be confusing for new users (thinking that xmonad has not launched correctly). To set the expected left-pointer, add the following to your startup file (e.g. ~/.xinitrc):<br />
<br />
xsetroot -cursor_name left_ptr<br />
<br />
Example .xinitrc :<br />
# set the cursor<br />
xsetroot -cursor_name left_ptr<br />
# start xmonad<br />
exec ck-launch-session xmonad<br />
<br />
===Configuring xmonad===<br />
<br />
xmonad users can modify, override or extend the default settings with the ~/.xmonad/xmonad.hs configuration file. Recompiling is done on the fly, with the Mod+q shortcut.<br />
<br />
If you find you do not have a directory at ~/.xmonad, run xmonad --recompile to create it. <br />
<br />
The "default config" for xmonad is quite usuable and it is achieved by simply running without an xmonad.hs entirely. Therefore, even after you run --recompile you will most likely not have an ~/.xmonad/xmonad.hs file. If you would like to start tweaking things, simply create the file and edit it as described below. <br />
<br />
Because the xmonad configuration file is written in Haskell, non-programmers may have a difficult time adjusting settings. For detailed HOWTO's and example configs, we refer you to the following resources:<br />
<br />
* [http://haskell.org/haskellwiki/Xmonad xmonad wiki]<br />
* [http://haskell.org/haskellwiki/Xmonad/Config_archive xmonad config archive]<br />
* [http://haskell.org/haskellwiki/Xmonad/Frequently_asked_questions xmonad FAQ]<br />
<br />
The best approach is to only place your changes and customizations in ~/.xmonad/xmonad.hs and write it such that any unset parameters are picked up from the built-in defaultConfig. <br />
<br />
This is achieved by writing an xmonad.hs like this:<br />
<br />
import XMonad<br />
<br />
main=do<br />
xmonad $ defaultConfig<br />
{ terminal = "urxvt"<br />
, modMask = mod4Mask<br />
, borderWidth = 3<br />
}<br />
<br />
This simply overrides the default terminal and borderwidth while leaving all other settings at their defaults (inherited from the function defaultConfig).<br />
<br />
As things get more complicated, it can be handy to call configuration options by function name inside the main function, and define these separately in their own sections of your xmonad.hs. This makes large customizations like your layout and manage hooks easier to visualize and maintain.<br />
<br />
The above simple xmonad.hs could have been written like this:<br />
<br />
import XMonad<br />
<br />
main=do<br />
xmonad $ defaultConfig<br />
{ terminal = myTerminal<br />
, modMask = myModMask<br />
, borderWidth = myBorderWidth<br />
}<br />
<br />
-- yes, these are functions; just very simple ones<br />
-- that accept no input and return static values<br />
myTerminal = "urxvt"<br />
myModMask = mod4Mask -- Win key or Super_L<br />
myBorderWidth = 3<br />
<br />
Also, order at top level (main, myTerminal, myModMask etc.), or within the {} does not matter in Haskell, as long as imports come first.<br />
<br />
The following is taken from the 0.9 config file template found [http://haskell.org/haskellwiki/Xmonad/Config_archive/Template_xmonad.hs_(0.9) here]. It is an example of the most common functions one might want to define in their main do block.<br />
<br />
{<br />
terminal = myTerminal,<br />
focusFollowsMouse = myFocusFollowsMouse,<br />
borderWidth = myBorderWidth,<br />
modMask = myModMask,<br />
-- numlockMask deprecated in 0.9.1<br />
-- numlockMask = myNumlockMask,<br />
workspaces = myWorkspaces,<br />
normalBorderColor = myNormalBorderColor,<br />
focusedBorderColor = myFocusedBorderColor,<br />
<br />
-- key bindings<br />
keys = myKeys,<br />
mouseBindings = myMouseBindings,<br />
<br />
-- hooks, layouts<br />
layoutHook = myLayout,<br />
manageHook = myManageHook,<br />
handleEventHook = myEventHook,<br />
logHook = myLogHook,<br />
startupHook = myStartupHook<br />
}<br />
<br />
===Exiting xmonad===<br />
To end the current xmonad session, press Mod+SHIFT+q (Mod being ALT by default).<br />
<br />
==Tips and tricks==<br />
===Complementary applications===<br />
There are number of complementary utilities that work well with xmonad. The most common of these include:<br />
<br />
* [http://tools.suckless.org/dmenu dmenu]<br />
* [[xmobar]]<br />
* [[dzen]] <br />
* [[Conky]] and [http://aur.archlinux.org/packages.php?ID=11884 conky-cli]<br />
* [[Unclutter]] - a small utility to hide the mouse pointer<br />
<br />
===Making room for conky or tray apps===<br />
Wrap your layouts with avoidStruts from XMonad.Hooks.ManageDocks for automatic dock/panel/trayer spacing:<br />
<br />
import XMonad<br />
import XMonad.Hooks.ManageDocks<br />
<br />
main=do<br />
xmonad $ defaultConfig<br />
{ ...<br />
, layoutHook=avoidStruts $ Tall ||| Wide ||| Full<br />
, manageHook=manageHook defaultConfig <+> manageDocks<br />
, ...<br />
}<br />
<br />
If you ever want to toggle the gaps, this action can be added to your key bindings:<br />
,((modMask x, xK_b ), sendMessage ToggleStruts)<br />
<br />
===Using xmobar with xmonad===<br />
'''xmobar''' is a light and minimalistic text based bar, designed to work with xmonad.<br><br />
To use xmobar with xmonad, you will need two packages in addition to the xmonad package, these are xmonad-contrib from [community] and xmobar or [http://aur.archlinux.org/packages.php?ID=13627 xmobar-darcs from aur].<br />
<br />
Here we will start xmobar from within xmonad, which reloads xmobar whenever you reload xmonad.<br />
<br />
Open up <tt>~/.xmonad/xmonad.hs</tt> in your favorite editor, and choose one of the two following options:<br />
<br />
====Option 1: Quick, less flexible====<br />
Note: there is also a <tt>dzen</tt> which you can substitute for <tt>xmobar</tt> in either case.<br />
<br />
Common imports:<br />
<br />
import XMonad<br />
import XMonad.Hooks.DynamicLog<br />
<br />
The xmobar action starts xmobar and returns a modified config that includes all the options described in the [[xmonad#Option 2: More configurable|xmonad:Option2: More configurable]] choice.<br />
<br />
main=xmonad=<< xmobar myConfig<br />
myConfig=defaultConfig { modMask=mod4Mask, -- or any other configurations here ... }<br />
<br />
==== Option 2: More Configurable ====<br />
As of xmonad(-contrib) 0.9, there is a new [http://xmonad.org/xmonad-docs/xmonad-contrib/XMonad-Hooks-DynamicLog.html#v%3AstatusBar statusBar] function in [http://xmonad.org/xmonad-docs/xmonad-contrib/XMonad-Hooks-DynamicLog.html XMonad.Hooks.DynamicLog]. It allows you to use your own configuration for:<br />
* The command used to execute the bar<br />
* The PP that determines what's being written to the bar<br />
* The keybinding to toggle the gap for the bar<br />
<br />
Following is an example of how to use it:<br />
{{File|name=~/.xmonad/xmonad.hs|content=<br />
<nowiki><br />
-- Imports.<br />
import XMonad<br />
import XMonad.Hooks.DynamicLog<br />
<br />
-- The main function.<br />
main = xmonad =<< statusBar myBar myPP toggleStrutsKey myConfig<br />
<br />
-- Command to launch the bar.<br />
myBar = "xmobar"<br />
<br />
-- Custom PP, configure it as you like. It determines what's being written to the bar.<br />
myPP = xmobarPP { ppCurrent = xmobarColor "#429942" "" . wrap "<" ">" }<br />
<br />
-- Keybinding to toggle the gap for the bar.<br />
toggleStrutsKey XConfig {XMonad.modMask = modMask} = (modMask, xK_b)<br />
<br />
-- Main configuration, override the defaults to your liking.<br />
myConfig = defaultConfig { modMask = mod4Mask }<br />
</nowiki><br />
}}<br />
<br />
==== Verify XMobar Config ====<br />
The template and default xmobarrcs contains this.<br />
<br />
At last, open up <tt>~/.xmobarrc</tt> and make sure you got StdinReader in the template and run the plugin. E.g.<br />
{{File|name=~/.xmobarrc|content=<br />
<nowiki><br />
Config { ...<br />
, commands = [ Run StdinReader .... ] <br />
...<br />
, template = " %StdinReader% ... "<br />
}<br />
</nowiki><br />
}}<br />
Now, all you should have to do is either to start, or restart xmonad.<br />
<br />
===Example configurations===<br />
Below are some example configurations from fellow xmonad users. Feel free to add links to your own.<br />
* MrElendig :: Simple configuration, with xmobar :: [http://arch.har-ikkje.net/configs/home/dot.xmonad/xmonad.hs xmonad.hs], [http://arch.har-ikkje.net/configs/home/dot.xmobarrc .xmobarrc], [http://arch.har-ikkje.net/gfx/ss/2008-11-15-161451_1680x1050_scrot.png screenshot].<br />
* hsa2 :: Simple configuration, with xmobar :: [http://www.difuzyon.net/linked/configs/xmonad.hs xmonad.hs], [http://www.difuzyon.net/linked/configs/dot.xmobarrc .xmobarrc].<br />
* jelly :: Configuration with prompt, different layouts, twinview with xmobar :: [http://github.com/jelly/dotfiles/tree/master/.xmonad/xmonad.hs xmonad.hs], [http://github.com/jelly/dotfiles/tree/master/.xmobarrc .xmonbarrc]<br />
* vogt :: Check adamvo's config, and others in the [http://haskell.org/haskellwiki/Xmonad/Config_archive xmonad config archive]<br />
* brisbin33 :: always changing (xmonad-darcs req'd), status bar[s], imLayout, very readable :: [http://pbrisbin.com:8080/dotfiles/xmonad_xmonad.hs config] [http://pbrisbin.com:8080/desktops/1.html screenshots]<br />
<br />
==Troubleshooting==<br />
===GDM can not find xmonad===<br />
You can force GDM to launch xmonad by creating the file xmonad.desktop in the /usr/share/xsessions directory and add the contents:<br />
<br />
[Desktop Entry]<br />
Encoding=UTF-8<br />
Name=xmonad<br />
Comment=This session starts xmonad<br />
Exec=/usr/bin/xmonad<br />
Type=Application<br />
<br />
Now xmonad will show in your GDM session menu. Thanks to [http://santanuchatterjee.blogspot.com/2009/03/making-xmonad-to-show-up-in-gdm-session.html Santanu Chatterjee] for the hint.<br />
<br />
===Missing xmonad-i386-linux===<br />
Xmonad should automatically create the xmonad-i386-linux file (in $HOME/.xmonad/). If this it not the case you can grab a cool looking config file from the [http://haskell.org/haskellwiki/Xmonad/Config_archive xmonad wiki] or create your [http://haskell.org/haskellwiki/Xmonad/Config_archive/John_Goerzen's_Configuration own]. Put the .hs and all others files in .xmonad/ and run the command from the folder:<br />
<br />
xmonad --recompile<br />
<br />
Now you should see the file.<br />
<br />
===Problems with Java applications===<br />
The standard Java gui toolkit has a hardcoded list of "non-reparenting" window managers. Since XMonad is not in that list, there can be some problems with running some java applications. One of the most common problems is "grey blobs", when the java application renders as a plain grey box instead of rendering the gui.<br />
<br />
There is several thing that can help:<br />
* If you are using openjdk6, you can export <tt> _JAVA_AWT_WM_NONREPARENTING=1</tt> .<br />
* If you are using Sun JRE/JDK, the best solution is usually to use [http://xmonad.org/xmonad-docs/xmonad-contrib/XMonad-Hooks-SetWMName.html SetWMName.]<br />
For more details about the problem, refer to the [http://haskell.org/haskellwiki/Xmonad/Frequently_asked_questions#Problems_with_Java_applications.2C_Applet_java_console XMonad FAQ.]<br />
<br />
==Other Resources==<br />
[http://xmonad.org/ xmonad] - The official xmonad website<br />
<br />
[http://haskell.org/haskellwiki/Xmonad/Config_archive/Template_xmonad.hs_%280.8%29 xmonad.hs] - Original xmonad.hs<br />
<br />
[http://xmonad.org/tour.html xmonad: a guided tour]<br />
<br />
[[dzen]] - General purpose messaging and notification program<br />
<br />
[[dmenu]] - Dynamic X menu for the quick launching of programs<br />
<br />
[[Category:Tiling WMs (English)]]<br />
[[Category:HOWTOs (English)]]</div>Gladstonehttps://wiki.archlinux.org/index.php?title=AUR_helpers&diff=97770AUR helpers2010-02-21T12:59:03Z<p>Gladstone: /* qpkg */</p>
<hr />
<div>[[Category:Utilities (English)]]<br />
[[Category:AUR (English)]]<br />
[[Category:Package management (English)]]<br />
This is a list of helper utilities that search and/or build packages from the [[Arch User Repository]]. '''None of these tools are officially supported.'''<br />
<br />
A list of graphical pacman front-ends, some of which also work with the AUR, may be found at [[pacman GUI Frontends]].<br />
<br />
== arson ==<br />
<br />
Arson is an AUR searcher and downloader, written in Ruby. It allows you to search the AUR for a package you want, and download it. It does NOT automatically install the downloaded package. It can extract it, but not install. Searching for a package also searches through pacman's database cache (rather than going to each mirror and querying those).<br />
<br />
*Website: http://evaryont.github.com/arson/<br />
*Package: http://aur.archlinux.org/packages.php?ID=16021<br />
<br />
== aurbuild ==<br />
<br />
[[aurbuild]] is a tool written in Python to download and build packages from the AUR.<br />
<br />
*Website: http://aurbuild.berlios.de/<br />
*Package: http://aur.archlinux.org/packages.php?ID=1775<br />
<br />
== aurget ==<br />
<br />
Aurget aims to be a simple, pacman-like interface to the AUR. It tries to make the AUR convenient; whether the user wishes to find, download, build, install, or update AUR packages quickly.<br />
<br />
*Website: http://pbrisbin.com:8080/pages/aurget.html<br />
*Package: http://aur.archlinux.org/packages.php?ID=31933<br />
<br />
== aurploader ==<br />
<br />
Aurploader prompts the user for an AUR username and password and will then upload PKGBUILD tarballs to the AUR. Before uploading each package, the user is prompted to select a category. When the uploads have completed, the user is asked if the cookie file should be kept so that the script can be run again without needing the AUR username and password to be re-entered.<br />
<br />
*Website: http://xyne.archlinux.ca/info/aurploader<br />
*Package: http://aur.archlinux.org/packages.php?ID=23393<br />
<br />
== aursh ==<br />
<br />
AurShell is a shell like application written in Python. With plugins included, it's possible to build and install packages from AUR, ABS, and even wrap pacman.<br />
<br />
*Website: http://github.com/husio/aursh/<br />
*Package: http://aur.archlinux.org/packages.php?ID=33423<br />
<br />
== autoaur ==<br />
<br />
[[autoaur]] is a script for automatic mass downloading, updating, building, and installing groups of AUR packages.<br />
<br />
*Website: http://wiki.archlinux.org/index.php/autoaur<br />
*Package: http://aur.archlinux.org/packages.php?ID=6390<br />
<br />
== haskell-archlinux ==<br />
<br />
haskell-archlinux is a library to programmatically access the AUR and package metadata from the Haskell programming language.<br />
<br />
*Website: http://hackage.haskell.org/package/archlinux<br />
*Package: http://aur.archlinux.org/packages.php?ID=29267<br />
<br />
== makeaur ==<br />
<br />
Makeaur is a wrapper for pacman and makepkg that allows users to easily install packages from the Arch User Repository.<br />
<br />
*Website: http://github.com/ghost1227/makeaur/<br />
*Package: http://aur.archlinux.org/packages.php?ID=23678<br />
<br />
== makerepo ==<br />
<br />
Makerepo is a tool to simplify building and maintaining a repository. A simple configuration file is use to specify the basic arguments such as database name and directory, package lists, etc. Makerepo is able to build packages from the AUR and from local PKGBUILDs such as the ABS tree. It can even build packages from CPAN modules if pacpan is installed.<br />
<br />
*Website: http://xyne.archlinux.ca/info/makerepo<br />
*Package: http://aur.archlinux.org/packages.php?ID=23500<br />
<br />
== packer ==<br />
<br />
Packer is a bash wrapper for pacman and the AUR. It was designed to be a simple and very fast replacement for the basic functionality of Yaourt. It has commands to install, update, search, and show information for any package in the main repositories and in the AUR. Use pacman for other commands, such as removing a package. It is fully functional.<br />
<br />
*Website: http://github.com/bruenig/packer (Forum: http://bbs.archlinux.org/viewtopic.php?id=88115)<br />
*Package: http://aur.archlinux.org/packages.php?ID=33378<br />
<br />
== pbget ==<br />
<br />
Pbget is a simple command-line tool for retrieving PKGBUILDs and local source files for Arch Linux. It is able to retrieve files from the official SVN and CVS web interface, the AUR and the ABS rsync server.<br />
<br />
*Website: http://xyne.archlinux.ca/info/pbget<br />
*Package: http://aur.archlinux.org/packages.php?ID=23848<br />
<br />
== pkgman ==<br />
<br />
pkgman is a bash script which helps to manage a local repository. It retrieves the PKGBUILD and related files for given name from ABS or AUR and lets you edit them, automatically generates checksums, backs up the source tarball, builds and adds the package to your local repository. Then you can install it as usual with pacman. It also has AUR support for submitting tarballs and leaving comments.<br />
<br />
*Website: http://sourceforge.net/apps/mediawiki/pkgman/index.php (Forum: http://bbs.archlinux.org/viewtopic.php?id=49023)<br />
*Package: http://aur.archlinux.org/packages.php?ID=17100<br />
<br />
== qpkg ==<br />
<br />
qpkg is a tool written in python for searching in all known repositories and on AUR. It can install and automatically update packages from AUR and it also can install all needed dependencies of a package from AUR.<br />
<br />
*Website: http://qpkg.berlios.de/<br />
*Package: ??? (seriously?)<br />
<br />
== slurpy ==<br />
<br />
slurpy is an AUR helper written in python for searching AUR, downloading packages, showing information about packages, checking for updates and uploading a package to AUR. <br />
<br />
*Website: http://rsontech.net/projects/slurpy/<br />
*Package: http://aur.archlinux.org/packages.php?ID=28285<br />
<br />
== srcman ==<br />
<br />
srcman is a pacman/makepkg wrapper written in Bash, which transparently handles pacman operations on 'source packages'. This means, for example, that packages can be specified for installation either explicitly (pacman's -U operation) or can be installed from a (source) repository (-S operation). The address of an AUR pacman database can be found in the corresponding forum thread, by the way.<br />
The primary goal of this project is to provide a complete pacman wrapper and therefore, srcman supports all current pacman operations for binary ''and'' source packages.<br />
<br />
*Website: http://bbs.archlinux.org/viewtopic.php?id=65501<br />
*Package: http://aur.archlinux.org/packages.php?ID=23945<br />
<br />
== yaourt ==<br />
<br />
[[Yaourt]] (Yet Another User Repository Tool) is a community-contributed wrapper for pacman which adds seamless access to the AUR, allowing and automating package compilation and installation from your choice of the 11,000+ PKGBUILDs in the AUR, in addition to the many thousands of available Arch binary packages. Yaourt uses the same exact syntax as pacman, which saves you from relearning an entirely new method of system maintenance, but also adds new options. Yaourt expands the power and simplicity of pacman by adding even more useful features and provides pleasing, colorized output, interactive search mode, and much more.<br />
<br />
*Website: http://archlinux.fr/yaourt-en<br />
*Package: http://aur.archlinux.org/packages.php?ID=5863<br />
<br />
== yogurt ==<br />
<br />
Yogurt is a tool used for building packages for unsupported software which is only provided by PKGBUILDs in the Arch Linux User Repository. Yogurt features a rudimentary dependency support both for standard repositories and the AUR.<br />
<br />
*Website: http://wikilinux.altervista.org/dokuwiki/doku.php?id=scriptseprogrammi:yogurt<br />
*Package: http://aur.archlinux.org/packages.php?ID=5863</div>Gladstonehttps://wiki.archlinux.org/index.php?title=AUR_helpers&diff=97769AUR helpers2010-02-21T12:58:38Z<p>Gladstone: /* makeaur */ -- updated link</p>
<hr />
<div>[[Category:Utilities (English)]]<br />
[[Category:AUR (English)]]<br />
[[Category:Package management (English)]]<br />
This is a list of helper utilities that search and/or build packages from the [[Arch User Repository]]. '''None of these tools are officially supported.'''<br />
<br />
A list of graphical pacman front-ends, some of which also work with the AUR, may be found at [[pacman GUI Frontends]].<br />
<br />
== arson ==<br />
<br />
Arson is an AUR searcher and downloader, written in Ruby. It allows you to search the AUR for a package you want, and download it. It does NOT automatically install the downloaded package. It can extract it, but not install. Searching for a package also searches through pacman's database cache (rather than going to each mirror and querying those).<br />
<br />
*Website: http://evaryont.github.com/arson/<br />
*Package: http://aur.archlinux.org/packages.php?ID=16021<br />
<br />
== aurbuild ==<br />
<br />
[[aurbuild]] is a tool written in Python to download and build packages from the AUR.<br />
<br />
*Website: http://aurbuild.berlios.de/<br />
*Package: http://aur.archlinux.org/packages.php?ID=1775<br />
<br />
== aurget ==<br />
<br />
Aurget aims to be a simple, pacman-like interface to the AUR. It tries to make the AUR convenient; whether the user wishes to find, download, build, install, or update AUR packages quickly.<br />
<br />
*Website: http://pbrisbin.com:8080/pages/aurget.html<br />
*Package: http://aur.archlinux.org/packages.php?ID=31933<br />
<br />
== aurploader ==<br />
<br />
Aurploader prompts the user for an AUR username and password and will then upload PKGBUILD tarballs to the AUR. Before uploading each package, the user is prompted to select a category. When the uploads have completed, the user is asked if the cookie file should be kept so that the script can be run again without needing the AUR username and password to be re-entered.<br />
<br />
*Website: http://xyne.archlinux.ca/info/aurploader<br />
*Package: http://aur.archlinux.org/packages.php?ID=23393<br />
<br />
== aursh ==<br />
<br />
AurShell is a shell like application written in Python. With plugins included, it's possible to build and install packages from AUR, ABS, and even wrap pacman.<br />
<br />
*Website: http://github.com/husio/aursh/<br />
*Package: http://aur.archlinux.org/packages.php?ID=33423<br />
<br />
== autoaur ==<br />
<br />
[[autoaur]] is a script for automatic mass downloading, updating, building, and installing groups of AUR packages.<br />
<br />
*Website: http://wiki.archlinux.org/index.php/autoaur<br />
*Package: http://aur.archlinux.org/packages.php?ID=6390<br />
<br />
== haskell-archlinux ==<br />
<br />
haskell-archlinux is a library to programmatically access the AUR and package metadata from the Haskell programming language.<br />
<br />
*Website: http://hackage.haskell.org/package/archlinux<br />
*Package: http://aur.archlinux.org/packages.php?ID=29267<br />
<br />
== makeaur ==<br />
<br />
Makeaur is a wrapper for pacman and makepkg that allows users to easily install packages from the Arch User Repository.<br />
<br />
*Website: http://github.com/ghost1227/makeaur/<br />
*Package: http://aur.archlinux.org/packages.php?ID=23678<br />
<br />
== makerepo ==<br />
<br />
Makerepo is a tool to simplify building and maintaining a repository. A simple configuration file is use to specify the basic arguments such as database name and directory, package lists, etc. Makerepo is able to build packages from the AUR and from local PKGBUILDs such as the ABS tree. It can even build packages from CPAN modules if pacpan is installed.<br />
<br />
*Website: http://xyne.archlinux.ca/info/makerepo<br />
*Package: http://aur.archlinux.org/packages.php?ID=23500<br />
<br />
== packer ==<br />
<br />
Packer is a bash wrapper for pacman and the AUR. It was designed to be a simple and very fast replacement for the basic functionality of Yaourt. It has commands to install, update, search, and show information for any package in the main repositories and in the AUR. Use pacman for other commands, such as removing a package. It is fully functional.<br />
<br />
*Website: http://github.com/bruenig/packer (Forum: http://bbs.archlinux.org/viewtopic.php?id=88115)<br />
*Package: http://aur.archlinux.org/packages.php?ID=33378<br />
<br />
== pbget ==<br />
<br />
Pbget is a simple command-line tool for retrieving PKGBUILDs and local source files for Arch Linux. It is able to retrieve files from the official SVN and CVS web interface, the AUR and the ABS rsync server.<br />
<br />
*Website: http://xyne.archlinux.ca/info/pbget<br />
*Package: http://aur.archlinux.org/packages.php?ID=23848<br />
<br />
== pkgman ==<br />
<br />
pkgman is a bash script which helps to manage a local repository. It retrieves the PKGBUILD and related files for given name from ABS or AUR and lets you edit them, automatically generates checksums, backs up the source tarball, builds and adds the package to your local repository. Then you can install it as usual with pacman. It also has AUR support for submitting tarballs and leaving comments.<br />
<br />
*Website: http://sourceforge.net/apps/mediawiki/pkgman/index.php (Forum: http://bbs.archlinux.org/viewtopic.php?id=49023)<br />
*Package: http://aur.archlinux.org/packages.php?ID=17100<br />
<br />
== qpkg ==<br />
<br />
qpkg is a tool written in python for searching in all known repositories and on AUR. It can install and automatically update packages from AUR and it also can install all needed dependencies of a package from AUR.<br />
<br />
*Webiste: http://qpkg.berlios.de/<br />
*Package: ??? (seriously?)<br />
<br />
== slurpy ==<br />
<br />
slurpy is an AUR helper written in python for searching AUR, downloading packages, showing information about packages, checking for updates and uploading a package to AUR. <br />
<br />
*Website: http://rsontech.net/projects/slurpy/<br />
*Package: http://aur.archlinux.org/packages.php?ID=28285<br />
<br />
== srcman ==<br />
<br />
srcman is a pacman/makepkg wrapper written in Bash, which transparently handles pacman operations on 'source packages'. This means, for example, that packages can be specified for installation either explicitly (pacman's -U operation) or can be installed from a (source) repository (-S operation). The address of an AUR pacman database can be found in the corresponding forum thread, by the way.<br />
The primary goal of this project is to provide a complete pacman wrapper and therefore, srcman supports all current pacman operations for binary ''and'' source packages.<br />
<br />
*Website: http://bbs.archlinux.org/viewtopic.php?id=65501<br />
*Package: http://aur.archlinux.org/packages.php?ID=23945<br />
<br />
== yaourt ==<br />
<br />
[[Yaourt]] (Yet Another User Repository Tool) is a community-contributed wrapper for pacman which adds seamless access to the AUR, allowing and automating package compilation and installation from your choice of the 11,000+ PKGBUILDs in the AUR, in addition to the many thousands of available Arch binary packages. Yaourt uses the same exact syntax as pacman, which saves you from relearning an entirely new method of system maintenance, but also adds new options. Yaourt expands the power and simplicity of pacman by adding even more useful features and provides pleasing, colorized output, interactive search mode, and much more.<br />
<br />
*Website: http://archlinux.fr/yaourt-en<br />
*Package: http://aur.archlinux.org/packages.php?ID=5863<br />
<br />
== yogurt ==<br />
<br />
Yogurt is a tool used for building packages for unsupported software which is only provided by PKGBUILDs in the Arch Linux User Repository. Yogurt features a rudimentary dependency support both for standard repositories and the AUR.<br />
<br />
*Website: http://wikilinux.altervista.org/dokuwiki/doku.php?id=scriptseprogrammi:yogurt<br />
*Package: http://aur.archlinux.org/packages.php?ID=5863</div>Gladstonehttps://wiki.archlinux.org/index.php?title=Talk:List_of_applications&diff=89247Talk:List of applications2009-12-29T21:13:44Z<p>Gladstone: /* Drawing Board */ -- more meaningful heading and a template suggestion</p>
<hr />
<div>== Discussion ==<br />
For applications like rTorrent which have both a Wiki page and a Wikipedia page, what do I do? --[[User:Keiichi|Keiichi]] 12:48, 5 December 2009 (EST)<br />
:I would suggest to use ArchWiki articles, because this IS ArchWiki. If you feel that the article is just a how-to and doesnt provide enough information about the application, you should edit it using the text from wikipedia, for example =) --[[User:Masaru~|Masaru~]] 13:24, 12 December 2009 (EST)<br />
<br />
== Application Templates ==<br />
{{App|[[Wikipedia:blankwikipedia|blankname]]|blank text|blank website|{{Package Official|blank}}}}<br />
<br />
{{App|[[blankwiki]]|blank text|blank website|{{Package Official|blank}}}}<br />
<br />
{{App|blank name|blank text|blank website|{{Package AUR|blank}}}}<br />
<br />
=== Discussion ===<br />
What about support for external links in the application name? e.g.:<br />
<br />
<nowiki>{{App|[http://myapp.com App]|blank text|blank website|{{Package Official|blank}}}}</nowiki><br />
<br />
--[[User:Gladstone|Gladstone]] 16:13, 29 December 2009 (EST)</div>Gladstonehttps://wiki.archlinux.org/index.php?title=CD_Burning&diff=89242CD Burning2009-12-29T21:07:55Z<p>Gladstone: /* Recorder */ -- ah ha! It's no longer in AUR</p>
<hr />
<div>[[Category:Utilities (English)]]<br />
[[Category:HOWTOs (English)]]<br />
{{i18n_links_start}}<br />
{{i18n_entry|English|CD Burning Tips}}<br />
{{i18n_entry|Italiano|CD Burning Tips (Italiano)}}<br />
{{i18n_entry|简体中文|光盘刻录技巧}}<br />
{{i18n_links_end}}<br />
<br />
This document outlines various methods of burning CDs.<br />
<br />
== Commandline CD-burning == <br />
===Install cd-burning utilities===<br />
<br />
# pacman -Sy cdrkit<br />
<br />
And if you intend to use <tt>cdrdao</tt> (for writing cue/bin files to cd)<br />
# pacman -S cdrdao<br />
<br />
===Setting permissions===<br />
Users that should be able to use cd/dvd burning devices must have permissions to access the devices. If you are using [[udev]] (which is default in Arch Linux kernels), you only need to add the user(s) to the optical group:<br />
# gpasswd -a <username> optical<br />
Then don't forget to log out and log in again.<br />
<br />
===Modifying the CD-RW===<br />
For the remainder of this section the name of your recording device is assumed to be /dev/cdrw. If that is not the case, modify the commands accordingly. In order to write to the CD it needs to be unmounted. If it is not, <code>wodim</code> will give you an error message. <br />
===Erasing CD-RW===<br />
CD-RW media usually need to be erased before you can write new data on it. To blank cd-rw medium use this command:<br />
$ wodim -v dev=/dev/cdrw -blank=fast<br />
As you might have guessed, this blanks your medium really fast, but you can also use some other options, just replace the word ''fast'' with one of the following:<br />
<br />
;all : blank the entire disk<br />
;disc : blank the entire disk<br />
;disk:blank the entire disk<br />
;fast:minimally blank the entire disk (PMA, TOC, pregap)<br />
;minimal:minimally blank the entire disk (PMA, TOC, pregap)<br />
;track:blank a track<br />
;unreserve:unreserve a track<br />
;trtail:blank a track tail<br />
;unclose:unclose last session<br />
;session:blank last session<br />
<br />
===Burning an iso-image===<br />
To burn an iso-image run:<br />
$ wodim -v dev=/dev/cdrw isoimage.iso<br />
<br />
===Burning an audio cd===<br />
1. Create your audio tracks and store them as uncompressed, 16-bit stereo .wav files.<br />
<br />
2. Name the audio files in a manner that will cause them to be listed in the desired track order when listed alphabetically, such as 01.wav, 02.wav, 03.wav ... etc.<br />
<br />
3. Use the following command to burn the wav files as an audio CD:<br />
$ wodim -v -pad speed=1 dev=/dev/cdrw -dao -swab *.wav<br />
<br />
===Burning a bin/cue===<br />
<br />
To burn a bin/cue image run:<br />
$ cdrdao write --device /dev/cdrw image.cue<br />
<br />
===Making an iso-image from an existing cd===<br />
To copy an existing cd just type:<br />
$ dd if=/dev/cdrw of=/home/user/isoimage.iso<br />
or even simpler:<br />
$ cat /dev/cdrw > isoimage.iso<br />
<br />
Or use readcd program, also in the cdrkit package<br />
$ readcd -v dev=/dev/cdrw -f isoimage.iso<br />
<br />
If the original cd was bootable it will be a bootable image.<br />
====TOC/CUE/BIN for Mixed-mode disks====<br />
ISO images only store a single data track. If you want to create an image of a mixed-mode disk (data track with multiple audio tracks) then you need to make a TOC/BIN pair<br />
$ cdrdao read-cd --read-raw --datafile IMAGE.bin --driver generic-mmc:0x20000 --device /dev/cdrom IMAGE.toc<br />
Some software only likes CUE/BIN pair, you can make a CUE sheet with toc2cue (part of cdrdao)<br />
$ toc2cue IMAGE.toc IMAGE.cue<br />
<br />
===Making an iso-image from existing files on harddisk===<br />
<br />
To make an iso-image just copy the needed files to one folder, then do a<br />
$ mkisofs -V volume_name -J -r -o isoimage.iso ~/folder<br />
<br />
===Mounting an iso-image===<br />
<br />
To test if the iso image is proper, you can mount it (as root):<br />
# mount -t iso9660 -o ro,loop=/dev/loop0 cd_image /cdrom<br />
<br />
You have to first load the loop module:<br />
# modprobe loop<br />
<br />
===Converting to iso-image===<br />
<br />
To convert a .img / ccd image, you can use ccd2iso :<br />
<br />
# pacman -Sy ccd2iso<br />
<br />
$ ccd2iso /home/archman/image.img /home/archman/image.iso<br />
<br />
== Burning CDs with a GUI ==<br />
There are several applications available to burn CDs in a graphical environment. The use of these programs are self-explanatory.<br />
===Nero Linux===<br />
Just the same Nero on windows. [http://www.nero.com/eng/support-linux3.html Official link]|[http://aur.archlinux.org/packages.php?do_Details=1&ID=2153 AUR package]<br />
<br />
It's not free and the UI is not as good as the windows version. Also, 3.0.0 beta can't burn bootable cd from files correctly.<br />
<br />
If you happen to have a DVD-burner unsupported by dvd+rw-tools (which also means k3b and all other free GUIs), nero would be your only choice.<br />
<br />
===K3B===<br />
According to [http://www.k3b.org http://www.k3b.org], k3b is "The CD/DVD Kreator for Linux - optimized for KDE". K3B uses the [[wikipedia:Qt (toolkit)|QT]] toolkit.<br />
* Install k3b with pacman.<br />
<br />
# pacman -Sy k3b<br />
<br />
* As root, run <code>k3bsetup</code>,<br />
* Here you can set up your preferences about permissions etc.<br />
* Run <code>k3b</code> to run the main program.<br />
<br />
====About Locale====<br />
When running K3B, if the following message appears<br />
<br />
System locale charset is ANSI_X3.4-1968<br />
Your system's locale charset (i.e. the charset used to encode filenames) is <br />
set to ANSI_X3.4-1968. It is highly unlikely that this has been done intentionally.<br />
Most likely the locale is not set at all. An invalid setting will result in<br />
problems when creating data projects.Solution: To properly set the locale <br />
charset make sure the LC_* environment variables are set. Normally the distribution <br />
setup tools take care of this.<br />
<br />
It means that your locale is not set well.<br />
<br />
To fix it,<br />
* Remove <code>/etc/locale.gen</code><br />
# rm /etc/locale.gen<br />
* Re-install <code>glibc</code><br />
# pacman -Sy glibc<br />
* Edit <code>/etc/locale.gen</code>, uncommenting all lines lines that corresponds to your language AND the <code>en_US</code> options, for compatibility.<br />
# nano /etc/locale.gen<br />
<br />
en_US.UTF-8 UTF-8<br />
en_US ISO-8859-1<br />
<br />
* Re-generate the profiles with <code>locale-gen</code><br />
# locale-gen<br />
<br />
Generating locales...<br />
en_US.UTF-8... done<br />
en_US.ISO-8859-1... done<br />
pt_BR.UTF-8... done<br />
pt_BR.ISO-8859-1... done<br />
Generation complete.<br />
<br />
More info [http://bbs.archlinux.org/viewtopic.php?pid=251512%29; here]<br />
<br />
==== K3B says that there's no Burning Devices ====<br />
A common cause of this is the current user have no privileges for that.<br />
You can try to:<br />
* Add the user to the group <code>optical</code> (remember to re-login after this)<br />
# gpasswd -a <user> optical<br />
* Set permissions to devices<br />
# chmod 777 /dev/dvd*<br />
# chmod 777 /dev/cd*<br />
* Make sure HAL is running, because recent k3b is HAL-based. Kindly reported by arnuld@ #archlinux.<br />
# /etc/rc.d/hal status<br />
# /etc/rc.d/hal start<br />
Or perhaps consider adding a hal entry in your <code>/etc/rc.conf</code> so that it automatically loads upon boot.<br />
<br />
Other causes, steps, look on the current guide (;<br />
<br />
===Gnomebaker===<br />
<br />
Gnomebaker is a solution to CD burning if you are using [[Gnome]].<br />
'''Gnomebaker is no longer maintained upstream as the author of the program has indicated. Consider using [http://wiki.archlinux.org/index.php/CD_Burning_Tips#Brasero Brasero] instead.'''<br />
<br />
* Install gnomebaker with pacman.<br />
# pacman -Sy gnomebaker<br />
<br />
* Run <code>gnomebaker</code> to run the main program.<br />
<br />
===Brasero===<br />
<br />
Brasero is another solution to CD burning if you are using [[Gnome]].<br />
<br />
* Install brasero with pacman.<br />
# pacman -Sy brasero<br />
<br />
* Run <code>brasero</code> to run the main program.<br />
<br />
===Graveman===<br />
Graveman is a simple and almost dependency-free application for burning CDs.<br />
<br />
* Install graveman with pacman.<br />
# pacman -Sy graveman<br />
<br />
* Run <code>graveman</code> as a regular user to create the configuration file in ~/.config/graveman/graveman.conf (if you run graveman as root first, the permissions for this file will be wrong).<br />
* Now, in graveman, go to menu File > Preferences... > Devices and add your CD burners (If necessary, run graveman as root). Devices may already be set up correctly.<br />
* Note that you may have to manually add your own device in Graveman's preferences and point it at /dev/cdrom instead of /dev/hdc<br />
<br />
===Bashburn===<br />
<br />
Alternatively theres also [http://bashburn.sourceforge.net/ Bashburn] in [http://aur.archlinux.org/packages.php?do_Details=1&ID=3658&O=0&L=0&C=0&K=bashburn&SB=n&SO=a&PP=25&do_MyPackages=0&do_Orphans=0&SeB=nd AUR] as a semi-gui solution. BashBurn is the new name for the cd burning shell script Magma. It's not the best looking CD-burning application out there, but it does what you want it to do.<br />
<br />
===Xfburn===<br />
<br />
[http://www.xfce.org/projects/xfburn/ Xfburn] is a simple CD/DVD burning tool based on libburnia libraries. It can blank CD-RWs, burn and create iso images, as well as burn personal compositions of data to either CD or DVD. It Is currently under heavy development.<br />
<br />
It can be found in the Extra Repository.<br />
<br />
* Install Xfburn with pacman.<br />
# pacman -Sy xfburn<br />
<br />
===Recorder===<br />
[http://code.google.com/p/recorder/ Recorder] is a graphical frontend of cdrkit/cdrtools, cdrdao, mkisofs and growisofs. It aims to be simple and easy to use, free of large configurations and useless options, following the KISS principle and offering a disc burning of quality, nothing more.<br />
<br />
* Install from the [[Community]] repository: [http://aur.archlinux.org/packages.php?ID=16501 Recorder package].<br />
<br />
* Discussion thread: [http://bbs.archlinux.org/viewtopic.php?id=47253 Recorder - A simple GTK+ disc burner]<br />
<br />
==Troubleshooting==<br />
<br />
===PATA and SATA problems around 2.6.20/2.6.21===<br />
<br />
For some kernels on some machines, CD burning works very unreliably. This is not fully diagnosed but appears to be related to DMA and having SATA Hard Drives and older IDE CD/DVD Burners and is possibly more prevalent on PIIX Motherboards. On newer kernels there is a new driver whereby the CD/DVD Burner behaves as if it is a SCSI drive, even though it isn't. <br />
<br />
The symptom for this problem is an almost total refusal to burn anything at all. It 'seems' to work fine, but if you verify the burn it invariably fails. If this is happening to you and you have an IDE burner try this fix.<br />
<br />
You will need to install mkinitcpio as described here,[[Configuring_mkinitcpio]] so you can rebuild the kernel. You now need to reconfigure your /etc/mkinitcpio.conf file to reuse the old IDE drivers.<br />
# gedit /etc/mkinitcpio.conf<br />
<br />
Find the line:<br />
MODULES="ata_generic ata_piix"<br />
<br />
and change it to (insert piix in the front)<br />
MODULES="piix ata_generic ata_piix"<br />
<br />
Then, find the line:<br />
HOOKS="base udev autodetect pata scsi sata usbinput keymap filesystems"<br />
<br />
and change that to: (replace pata with ide)<br />
HOOKS="base udev autodetect ide scsi sata usbinput keymap filesystems"<br />
<br />
Use mkinitcpio to rebuild the kernel as described in it's own wiki page, and reboot. In brief:<br />
# mkinitcpio -g /boot/kernel26.img</div>Gladstonehttps://wiki.archlinux.org/index.php?title=Lightweight_Applications&diff=89240Lightweight Applications2009-12-29T21:05:58Z<p>Gladstone: /* System */ -- added Recorder and corresponding CD/DVD burning section</p>
<hr />
<div>[[Category:Other desktop user's resources (English)]][[Category:General (English)]]<br />
{{Article summary start}}<br />
{{Article summary text|Provides a list of lightweight software for those who wish to use programs that require less computer resources.}}<br />
{{Article summary heading|Languages}}<br />
{{i18n_entry|Русский|Выбор программ}}<br />
{{i18n_entry|Česky|Lehké aplikace}}<br />
{{i18n_entry|English|Lightweight Applications}}<br />
{{Article summary heading|Related}}<br />
{{Article summary text|[[Common Applications]]}}<br />
{{Article summary end}}<br />
<br />
==Internet==<br />
===Browsers===<br />
<br />
{{App|[[Wikipedia:Abaco (web browser)|Abaco]]|A multi-page graphical web browser|http://lab-fgb.com/abaco/|{{Package AUR|abaco}}}}<br />
{{App|[[Wikipedia:Arora (browser)|Arora]]|A cross platform web browser built using Qt and WebKit|http://code.google.com/p/arora/|{{Package Official|arora}}}}<br />
{{App|[[Wikipedia:Chromium (web browser)|Chromium]]|The open-source project behind Google Chrome|http://code.google.com/chromium/|{{Package AUR|chromium}}}}<br />
{{App|[[Wikipedia:Conkeror|Conkeror]]|A highly programmable web browser based on Mozilla XULRunner|http://conkeror.org/|{{Package Official|conkeror}}}}<br />
{{App|[[Wikipedia:Dillo|Dillo]]|A small, fast graphical web browser built on FLTK|http://www.dillo.org/|{{Package Official|dillo}}}}<br />
{{App|[[Wikipedia:ELinks|ELinks]]|An advanced and well-established feature-rich text mode web browser|http://elinks.or.cz/|{{Package Official|elinks}}}}<br />
{{App|Hv3|A minimalist web browser based on tkhtml3|http://tkhtml.tcl.tk/hv3.html|{{Package AUR|hv3}}}}<br />
{{App|[[Wikipedia:Kazehakase|Kazehakase]]|GTK+ web browser that uses the Gecko rendering engine|http://kazehakase.sourceforge.jp/|{{Package Official|kazehakase}}}}<br />
{{App|[[Wikipedia:Links (web browser)|Links]]|A text WWW browser, similar to Lynx|http://links.twibright.com/|{{Package Official|links}}}}<br />
<br />
[http://www.twotoasts.de/index.php?/pages/midori_summary.html Midori] is a lightweight web browser based on Gtk and WebKit. It passes the ACID3 test (midori-git/AUR).<br />
<br />
[http://www.netsurf-browser.org Netsurf] has its own rendering engine, is written in C and is extremely lightweight.<br />
<br />
[http://surf.suckless.org surf] is another lightweight WebKit-based browser, which follows the suckless ideology. Which means, the software is even more lightweight (basically, the browser itself is a single C source file).<br />
<br />
[http://www.uzbl.org/ Uzbl] - "web interface tools which adhere to the unix philosophy."<br />
<br />
===Email Clients===<br />
<br />
[[alpine]] is another powerful, and user-friendly text-based mail and news client.<br />
<br />
[[mutt]] is a small but very powerful text-based mail client.<br />
<br />
[http://sylpheed.sraoss.jp/en/ Sylpheed] is a simple, lightweight but featureful, and easy-to-use e-mail client.<br />
<br />
[http://www.claws-mail.org/ Claws] is a user-friendly, lightweight, and fast email client.<br />
<br />
[http://sup.rubyforge.org/ sup] is yet another powerful, text-based mail client; it is still under development.<br />
<br />
===Instant Messengers===<br />
<br />
[[Bitlbee]] is a way to use other IM to your [[#IRC]] client.<br />
<br />
[http://www.centerim.org Centerim] is a curses based fork of Centericq which supports several protocols.<br />
<br />
[http://www.emesene.org/ emesene] is a Python/GTK+ instant messenger for the Windows Live Messenger network.<br />
<br />
[http://developer.pidgin.im/wiki/Using%20Finch Finch] is a curses based version of Pidgin.<br />
<br />
[[Pidgin]] is a multiprotocol instant messenger.<br />
<br />
[http://pidgin.im Pidgin Light] is a light Pidgin version without gstreamer, tcl, tk, xscreensaver support.<br />
<br />
===IRC===<br />
<br />
[http://nenolod.net/ Conspire] Lightweight, simple, and powerfull.<br />
<br />
[[Irssi]] is a modular text mode IRC client with Perl scripting.<br />
<br />
[http://tools.suckless.org/ii II] Ultimate lightweight, literally `tail -f` the convo and `echo` back your replies.<br />
<br />
[http://www.ueber.net/code/r/ircfs ircfs] is a file system interface to irc written in [http://limbo.cat-v.org Limbo].<br />
<br />
[http://lostirc.sourceforge.net LostIRC] is a simple IRC client.<br />
<br />
[http://www.smuxi.org/ Smuxi] Lightweight GTK frontend inspired by irssi.<br />
<br />
[http://weechat.org/ WeeChat] is a fast, light & extensible curses-based IRC client.<br />
<br />
[http://xchat.org XChat] is a GTK+ X client with Perl and Python scripting support.<br />
<br />
===Torrents===<br />
<br />
[http://deluge-torrent.info/ Deluge] is a bittorrent client written with Python and PyGTK.<br />
<br />
[http://libtorrent.rakshasa.no/ rTorrent] is a very simple, elegant and ultra-light BitTorrent client. It is written in C++ and uses ncurses, so it is completely text based and runs entirely in a console.<br />
<br />
[http://www.transmissionbt.com/ Transmission] is a fast, easy, and free BitTorrent client (GTK+ GUI and CLI).<br />
<br />
==Multimedia==<br />
<br />
===Audio Players===<br />
<br />
[http://ario-player.sourceforge.net/ Ario] is very feature-rich GTK2 client for [[mpd]], inspired by Rhythmbox<br />
<br />
[http://cmus.sourceforge.net/ C* Music Player] is a very feature-rich ncurses-based music player.<br />
<br />
[http://sourceforge.net/projects/cplay/ cplay] is a curses front-end for various audio players.<br />
<br />
[http://moc.daper.net/ MOC (Music On Console)] is an ncurses console audio player with support for the MP3, Ogg, and WAV formats.<br />
<br />
[http://hem.bredband.net/kaw/ncmpc/ ncmpc] is a curses client for [[mpd]].<br />
<br />
[http://unkart.ovh.org/ncmpcpp/ ncmpcpp] is an almost exact clone of ncmpc with some new features.<br />
<br />
[http://sonata.berlios.de/ Sonata] is an elegant GTK+ music client for [[mpd]].<br />
<br />
[http://pragha.wikispaces.com/ Pragha] is a GTK+ music manager that was a fork of Consonance Music Manager.<br />
<br />
===Image Editors===<br />
<br />
[http://mtpaint.sourceforge.net/ mtPaint] is a graphic editing program geared towards creating indexed palette images and pixel art.<br />
<br />
===Image Viewers===<br />
<br />
[http://linuxbrit.co.uk/feh/ Feh] is a fast, lightweight image viewer that uses imlib2.<br />
<br />
[http://lxde.sourceforge.net/gpicview/ GPicView] is a simple and fast image viewer for X. Made by the developers of [[LXDE]]<br />
<br />
[http://gqview.sourceforge.net/ GQview] is an image browser that features single click access to view images and move around the directory tree.<br />
<br />
[http://geeqie.sourceforge.net/ Geeqie] is a lightweight image browser and viewer (fork of GQview), with additional functionality like RAW files view.<br />
<br />
[http://mirageiv.berlios.de Mirage] is a fast and simple GTK+ image viewer.<br />
<br />
[http://goodies.xfce.org/projects/applications/ristretto Ristretto] is a fast and lightweight picture-viewer for the Xfce desktop environment.<br />
<br />
[http://spiegl.de/qiv/ QIV] (Quick Image Viewer) is a very small and fast gdk/Imlib image viewer.<br />
<br />
===Video Players===<br />
<br />
[http://kdekorte.googlepages.com/gnomemplayer Gnome-Mplayer] is a simple GTK-based GUI for [[mplayer]] without heavy Gnome dependencies<br />
<br />
[[mplayer]] and [[mencoder]] support a huge number of video and audio formats and are very versatile.<br />
<br />
[http://smplayer.sourceforge.net/ SMPlayer] is a complete frontend for mplayer.<br />
<br />
[http://www.videolan.org/vlc/ VLC] is a multi-platform video player that supports many audio and video formats out-of-the-box.<br />
<br />
==Office==<br />
<br />
===Calendars===<br />
<br />
[http://culot.org/calcurse/ Calcurse] is a curses calendar and scheduling system.<br />
<br />
[http://www.roaringpenguin.com/products/remind Remind] is a highly sophisticated text-based calendaring and notification system.<br />
<br />
[http://pessimization.com/software/wyrd/ Wyrd] is an curses front-end to Remind.<br />
<br />
[http://www.duke.edu/~dgraham/wxRemind/ wxRemind] is a Python text and graphical frontend to Remind.<br />
<br />
===PDF Tools===<br />
<br />
[http://code.google.com/p/apvlv/ apvlv] is a lightweight PDF viewer with VIM key bindings.<br />
<br />
[http://www.emma-soft.com/projects/epdfview/ ePDFView] is a free lightweight PDF document viewer using Poppler and GTK+ libraries.<br />
<br />
[http://www.foolabs.com/xpdf/ Xpdf] is a viewer for Portable Document Format (PDF) files.<br />
<br />
[http://zathura.pwmt.org/ zathura] is another lightweight PDF viewer similar to apvlv, only lighter<br />
<br />
===Text Editors===<br />
<br />
[http://acme.cat-v.org Acme] a minimalist and flexible programming environment by Rob Pike.<br />
<br />
[http://www.nongnu.org/beaver/ Beaver] is an Early AdVanced EditoR.<br />
<br />
[http://www.geany.org Geany] is a text editor using the GTK+ 2 toolkit with basic features of an integrated development environment.<br />
<br />
[http://tarot.freeshell.org/leafpad/ Leafpad] is a notepad clone for GTK+ 2.x that emphasizes simplicity.<br />
<br />
[http://mooedit.sourceforge.net/ medit] is intended to be a useful programming and around-programming text editor.<br />
<br />
[http://www.xfce.org/projects/mousepad/ Mousepad] is a simple text editor for Xfce based on Leafpad.<br />
<br />
[[nano]] is an easy-to-use text editor, with on-screen key binding information, based on pine's pico editor.<br />
<br />
[http://pyroom.org/ PyRoom] is a great distractionless PyGTK text editor, a clone of the infamous WriteRoom<br />
<br />
[http://sam.cat-v.org Sam] a graphical text editor by Rob Pike (still used by Ken Thompson and others).<br />
<br />
Vi, [[Vim]], gVim, the classic vi text editor.<br />
<br />
===Word Processors===<br />
<br />
[http://www.abisource.com/ Abiword] is a full-featured word processor ([[Abiword|HOWTO]]), there is also an even lighter version in the AUR, [http://aur.archlinux.org/packages.php?ID=25601/ Abiword-light].<br />
<br />
[http://txt2tags.sourceforge.net txt2tags] is a dead-simple, KISS-compliant lightweight, humane readable markup language to produce rich format content out of plain text files<br />
<br />
==System==<br />
<br />
===File Managers===<br />
<br />
[http://emelfm2.net/ emelFM2] is file manager that implements the popular two-pane design.<br />
<br />
[http://www.midnight-commander.org Midnight Commander] is a console-based, dual-paned, file manager.<br />
<br />
[http://pcmanfm.sourceforge.net/ PCManFM] is a lightweight file manager which features tabbed browsing and can optionally manage the desktop background.<br />
<br />
[http://rox.sourceforge.net ROX] is a small and fast file manager which can optionally manage the desktop background and panels.<br />
<br />
[http://thunar.xfce.org/ Thunar] is fast and responsive with a good start up time and directory load time.<br />
<br />
[[Vifm]] is a ncurses based file manager with vi like keybindings.<br />
<br />
[http://roland65.free.fr/xfe/index.php/ Xfe] X File Explorer (Xfe) is an MS-Explorer or Commander like file manager for X.<br />
<br />
===GUI Compression Tools===<br />
<br />
[http://squeeze.xfce.org/ Squeeze] is a modern and advanced archive manager.<br />
<br />
[http://xarchive.sourceforge.net Xarchive] is a GTK+ 2 front-end for various command line archiving tools.<br />
<br />
[http://xarchiver.xfce.org/ Xarchiver] is a lightweight desktop independent archive manager built with GTK+ 2.<br />
<br />
===CD/DVD Burning Tools===<br />
<br />
{{App|Recorder|a graphical frontend of cdrkit/cdrtools, cdrdao, mkisofs and growisofs.|http://code.google.com/p/recorder/|{{Package Official|recorder}}}}<br />
<br />
===Login managers===<br />
<br />
[[CDM]] provides an ultra-minimalistic, yet full-featured login manager written in bash.<br />
<br />
[[SLiM]] provides a lightweight and elegant graphical login solution.<br />
<br />
[[Qingy]] is ultralight and very configurable graphical login independent on X Windows.<br />
<br />
===Monitors===<br />
<br />
[http://conky.sourceforge.net/ Conky] is a lightweight, scriptable system monitor ([[Conky|HOWTO]]).<br />
<br />
[http://htop.sourceforge.net/ htop] is a simple, ncurses interactive process viewer.<br />
<br />
===Panels===<br />
<br />
[http://nsf.110mb.com/bmpanel/ BMPanel] (BitMap Panel) is a lightweight, NETWM compliant panel for the X11 system.<br />
<br />
[http://fbpanel.sourceforge.net fbpanel] is a lightweight, NETWM compliant desktop panel.<br />
<br />
[http://lxde.org LXPanel] is a lightweight X11 desktop panel (part of LXDE).<br />
<br />
[http://pypanel.sourceforge.net/ PyPanel] is a lightweight panel/taskbar written in Python and C ([[PyPanel|HOWTO]]).<br />
<br />
[http://code.google.com/p/tint2/ Tint] is a simple panel/taskbar intentionally made for openbox3, but should also work with other window managers ([[Tint|HOWTO]]).<br />
<br />
===Terminals===<br />
<br />
[http://lilyterm.luna.com.tw/index_en.html Lilyterm] is a light and easy to use libvte based X Terminal Emulator.<br />
<br />
[http://rox.sourceforge.net ROXTerm] is a tabbed, VTE-based terminal emulator with a small footprint.<br />
<br />
[http://software.schmorp.de/pkg/rxvt-unicode urxvt] is a highly extendable unicode enabled rxvt-clone terminal emulator featuring tabbing, url launching, quake-style dropdown, pseudo-transparency, and is extensible with perl.<br />
<br />
[http://www.pleyades.net/david/sakura.php Sakura] is a terminal emulator based on GTK+ and VTE.<br />
<br />
[http://invisible-island.net/xterm/ xterm] is a terminal emulator for the X Window System.<br />
<br />
===Trays===<br />
<br />
[http://icculus.org/openbox/2/docker/ Docker] is a docking application which acts as a system tray.<br />
<br />
[http://stalonetray.sourceforge.net Stalonetray] is a stand-alone system tray.<br />
<br />
[http://gna.org/projects/fvwm-crystal/ Trayer] swallows GTK+ 1.2/2.x application docklets, and KDE docklets.<br />
<br />
===Window managers===<br />
<br />
[[Awesome]] is a floating and tiling window manager initially based on a [[dwm]] code rewriting.<br />
<br />
[[Dwm]] is an extra light dynamic window manager which is configured by directly editing the source(which itself is less than 2000 SLOC).<br />
<br />
[[Evilwm]] is a minimalist floating window manager with an installed size of only 0.07 MB.<br />
<br />
[[Fluxbox]] is a lightweight and highly configurable window manager.<br />
<br />
[http://www.fvwm.org/ FVWM] is a lightweight, flexible and highly-configurable Window Manager.<br />
<br />
[[Musca]] is a very lightweight window manager which has features from dwm and ratpoison. Uses about 350-400KB of memory.<br />
<br />
[[Openbox]] is another lightweight and highly configurable window manager.<br />
<br />
[[PekWM]] is small and easily configurable window manager.<br />
<br />
[[Ratpoison]] is a keyboard-oriented, customizable lightweight window manager, modelled after GNU Screen.<br />
<br />
[[Scrotwm]] is a small dynamic tiling window manager for X11. It is written in C and configured with a text configuration file.<br />
<br />
[[Subtle]] is a semi-automatic tiling window manager with a strong focus on easy but customizable handling and look and feel.<br />
<br />
[[Twm]] is a classic, customizable and very lightweight window manager; possibly the first designed for X11.<br />
<br />
[[Window Maker]] is an elegant, fast and usable OpenStep implementation.<br />
<br />
[[Xfce]] is a desktop environment much lighter but similar to GNOME. It includes the xfwm4 window manager.<br />
<br />
[[Xmonad]] is a tiling window manager for X, written and configured in Haskell.</div>Gladstonehttps://wiki.archlinux.org/index.php?title=CD_Burning&diff=89239CD Burning2009-12-29T20:52:54Z<p>Gladstone: /* Burning CDs with a GUI */ -- adding Recorder</p>
<hr />
<div>[[Category:Utilities (English)]]<br />
[[Category:HOWTOs (English)]]<br />
{{i18n_links_start}}<br />
{{i18n_entry|English|CD Burning Tips}}<br />
{{i18n_entry|Italiano|CD Burning Tips (Italiano)}}<br />
{{i18n_entry|简体中文|光盘刻录技巧}}<br />
{{i18n_links_end}}<br />
<br />
This document outlines various methods of burning CDs.<br />
<br />
== Commandline CD-burning == <br />
===Install cd-burning utilities===<br />
<br />
# pacman -Sy cdrkit<br />
<br />
And if you intend to use <tt>cdrdao</tt> (for writing cue/bin files to cd)<br />
# pacman -S cdrdao<br />
<br />
===Setting permissions===<br />
Users that should be able to use cd/dvd burning devices must have permissions to access the devices. If you are using [[udev]] (which is default in Arch Linux kernels), you only need to add the user(s) to the optical group:<br />
# gpasswd -a <username> optical<br />
Then don't forget to log out and log in again.<br />
<br />
===Modifying the CD-RW===<br />
For the remainder of this section the name of your recording device is assumed to be /dev/cdrw. If that is not the case, modify the commands accordingly. In order to write to the CD it needs to be unmounted. If it is not, <code>wodim</code> will give you an error message. <br />
===Erasing CD-RW===<br />
CD-RW media usually need to be erased before you can write new data on it. To blank cd-rw medium use this command:<br />
$ wodim -v dev=/dev/cdrw -blank=fast<br />
As you might have guessed, this blanks your medium really fast, but you can also use some other options, just replace the word ''fast'' with one of the following:<br />
<br />
;all : blank the entire disk<br />
;disc : blank the entire disk<br />
;disk:blank the entire disk<br />
;fast:minimally blank the entire disk (PMA, TOC, pregap)<br />
;minimal:minimally blank the entire disk (PMA, TOC, pregap)<br />
;track:blank a track<br />
;unreserve:unreserve a track<br />
;trtail:blank a track tail<br />
;unclose:unclose last session<br />
;session:blank last session<br />
<br />
===Burning an iso-image===<br />
To burn an iso-image run:<br />
$ wodim -v dev=/dev/cdrw isoimage.iso<br />
<br />
===Burning an audio cd===<br />
1. Create your audio tracks and store them as uncompressed, 16-bit stereo .wav files.<br />
<br />
2. Name the audio files in a manner that will cause them to be listed in the desired track order when listed alphabetically, such as 01.wav, 02.wav, 03.wav ... etc.<br />
<br />
3. Use the following command to burn the wav files as an audio CD:<br />
$ wodim -v -pad speed=1 dev=/dev/cdrw -dao -swab *.wav<br />
<br />
===Burning a bin/cue===<br />
<br />
To burn a bin/cue image run:<br />
$ cdrdao write --device /dev/cdrw image.cue<br />
<br />
===Making an iso-image from an existing cd===<br />
To copy an existing cd just type:<br />
$ dd if=/dev/cdrw of=/home/user/isoimage.iso<br />
or even simpler:<br />
$ cat /dev/cdrw > isoimage.iso<br />
<br />
Or use readcd program, also in the cdrkit package<br />
$ readcd -v dev=/dev/cdrw -f isoimage.iso<br />
<br />
If the original cd was bootable it will be a bootable image.<br />
====TOC/CUE/BIN for Mixed-mode disks====<br />
ISO images only store a single data track. If you want to create an image of a mixed-mode disk (data track with multiple audio tracks) then you need to make a TOC/BIN pair<br />
$ cdrdao read-cd --read-raw --datafile IMAGE.bin --driver generic-mmc:0x20000 --device /dev/cdrom IMAGE.toc<br />
Some software only likes CUE/BIN pair, you can make a CUE sheet with toc2cue (part of cdrdao)<br />
$ toc2cue IMAGE.toc IMAGE.cue<br />
<br />
===Making an iso-image from existing files on harddisk===<br />
<br />
To make an iso-image just copy the needed files to one folder, then do a<br />
$ mkisofs -V volume_name -J -r -o isoimage.iso ~/folder<br />
<br />
===Mounting an iso-image===<br />
<br />
To test if the iso image is proper, you can mount it (as root):<br />
# mount -t iso9660 -o ro,loop=/dev/loop0 cd_image /cdrom<br />
<br />
You have to first load the loop module:<br />
# modprobe loop<br />
<br />
===Converting to iso-image===<br />
<br />
To convert a .img / ccd image, you can use ccd2iso :<br />
<br />
# pacman -Sy ccd2iso<br />
<br />
$ ccd2iso /home/archman/image.img /home/archman/image.iso<br />
<br />
== Burning CDs with a GUI ==<br />
There are several applications available to burn CDs in a graphical environment. The use of these programs are self-explanatory.<br />
===Nero Linux===<br />
Just the same Nero on windows. [http://www.nero.com/eng/support-linux3.html Official link]|[http://aur.archlinux.org/packages.php?do_Details=1&ID=2153 AUR package]<br />
<br />
It's not free and the UI is not as good as the windows version. Also, 3.0.0 beta can't burn bootable cd from files correctly.<br />
<br />
If you happen to have a DVD-burner unsupported by dvd+rw-tools (which also means k3b and all other free GUIs), nero would be your only choice.<br />
<br />
===K3B===<br />
According to [http://www.k3b.org http://www.k3b.org], k3b is "The CD/DVD Kreator for Linux - optimized for KDE". K3B uses the [[wikipedia:Qt (toolkit)|QT]] toolkit.<br />
* Install k3b with pacman.<br />
<br />
# pacman -Sy k3b<br />
<br />
* As root, run <code>k3bsetup</code>,<br />
* Here you can set up your preferences about permissions etc.<br />
* Run <code>k3b</code> to run the main program.<br />
<br />
====About Locale====<br />
When running K3B, if the following message appears<br />
<br />
System locale charset is ANSI_X3.4-1968<br />
Your system's locale charset (i.e. the charset used to encode filenames) is <br />
set to ANSI_X3.4-1968. It is highly unlikely that this has been done intentionally.<br />
Most likely the locale is not set at all. An invalid setting will result in<br />
problems when creating data projects.Solution: To properly set the locale <br />
charset make sure the LC_* environment variables are set. Normally the distribution <br />
setup tools take care of this.<br />
<br />
It means that your locale is not set well.<br />
<br />
To fix it,<br />
* Remove <code>/etc/locale.gen</code><br />
# rm /etc/locale.gen<br />
* Re-install <code>glibc</code><br />
# pacman -Sy glibc<br />
* Edit <code>/etc/locale.gen</code>, uncommenting all lines lines that corresponds to your language AND the <code>en_US</code> options, for compatibility.<br />
# nano /etc/locale.gen<br />
<br />
en_US.UTF-8 UTF-8<br />
en_US ISO-8859-1<br />
<br />
* Re-generate the profiles with <code>locale-gen</code><br />
# locale-gen<br />
<br />
Generating locales...<br />
en_US.UTF-8... done<br />
en_US.ISO-8859-1... done<br />
pt_BR.UTF-8... done<br />
pt_BR.ISO-8859-1... done<br />
Generation complete.<br />
<br />
More info [http://bbs.archlinux.org/viewtopic.php?pid=251512%29; here]<br />
<br />
==== K3B says that there's no Burning Devices ====<br />
A common cause of this is the current user have no privileges for that.<br />
You can try to:<br />
* Add the user to the group <code>optical</code> (remember to re-login after this)<br />
# gpasswd -a <user> optical<br />
* Set permissions to devices<br />
# chmod 777 /dev/dvd*<br />
# chmod 777 /dev/cd*<br />
* Make sure HAL is running, because recent k3b is HAL-based. Kindly reported by arnuld@ #archlinux.<br />
# /etc/rc.d/hal status<br />
# /etc/rc.d/hal start<br />
Or perhaps consider adding a hal entry in your <code>/etc/rc.conf</code> so that it automatically loads upon boot.<br />
<br />
Other causes, steps, look on the current guide (;<br />
<br />
===Gnomebaker===<br />
<br />
Gnomebaker is a solution to CD burning if you are using [[Gnome]].<br />
'''Gnomebaker is no longer maintained upstream as the author of the program has indicated. Consider using [http://wiki.archlinux.org/index.php/CD_Burning_Tips#Brasero Brasero] instead.'''<br />
<br />
* Install gnomebaker with pacman.<br />
# pacman -Sy gnomebaker<br />
<br />
* Run <code>gnomebaker</code> to run the main program.<br />
<br />
===Brasero===<br />
<br />
Brasero is another solution to CD burning if you are using [[Gnome]].<br />
<br />
* Install brasero with pacman.<br />
# pacman -Sy brasero<br />
<br />
* Run <code>brasero</code> to run the main program.<br />
<br />
===Graveman===<br />
Graveman is a simple and almost dependency-free application for burning CDs.<br />
<br />
* Install graveman with pacman.<br />
# pacman -Sy graveman<br />
<br />
* Run <code>graveman</code> as a regular user to create the configuration file in ~/.config/graveman/graveman.conf (if you run graveman as root first, the permissions for this file will be wrong).<br />
* Now, in graveman, go to menu File > Preferences... > Devices and add your CD burners (If necessary, run graveman as root). Devices may already be set up correctly.<br />
* Note that you may have to manually add your own device in Graveman's preferences and point it at /dev/cdrom instead of /dev/hdc<br />
<br />
===Bashburn===<br />
<br />
Alternatively theres also [http://bashburn.sourceforge.net/ Bashburn] in [http://aur.archlinux.org/packages.php?do_Details=1&ID=3658&O=0&L=0&C=0&K=bashburn&SB=n&SO=a&PP=25&do_MyPackages=0&do_Orphans=0&SeB=nd AUR] as a semi-gui solution. BashBurn is the new name for the cd burning shell script Magma. It's not the best looking CD-burning application out there, but it does what you want it to do.<br />
<br />
===Xfburn===<br />
<br />
[http://www.xfce.org/projects/xfburn/ Xfburn] is a simple CD/DVD burning tool based on libburnia libraries. It can blank CD-RWs, burn and create iso images, as well as burn personal compositions of data to either CD or DVD. It Is currently under heavy development.<br />
<br />
It can be found in the Extra Repository.<br />
<br />
* Install Xfburn with pacman.<br />
# pacman -Sy xfburn<br />
<br />
===Recorder===<br />
[http://code.google.com/p/recorder/ Recorder] is a graphical frontend of cdrkit/cdrtools, cdrdao, mkisofs and growisofs. It aims to be simple and easy to use, free of large configurations and useless options, following the KISS principle and offering a disc burning of quality, nothing more.<br />
<br />
* Install from the AUR [http://aur.archlinux.org/packages.php?ID=16501 Recorder package].<br />
<br />
* Discussion thread: [http://bbs.archlinux.org/viewtopic.php?id=47253 Recorder - A simple GTK+ disc burner]<br />
<br />
==Troubleshooting==<br />
<br />
===PATA and SATA problems around 2.6.20/2.6.21===<br />
<br />
For some kernels on some machines, CD burning works very unreliably. This is not fully diagnosed but appears to be related to DMA and having SATA Hard Drives and older IDE CD/DVD Burners and is possibly more prevalent on PIIX Motherboards. On newer kernels there is a new driver whereby the CD/DVD Burner behaves as if it is a SCSI drive, even though it isn't. <br />
<br />
The symptom for this problem is an almost total refusal to burn anything at all. It 'seems' to work fine, but if you verify the burn it invariably fails. If this is happening to you and you have an IDE burner try this fix.<br />
<br />
You will need to install mkinitcpio as described here,[[Configuring_mkinitcpio]] so you can rebuild the kernel. You now need to reconfigure your /etc/mkinitcpio.conf file to reuse the old IDE drivers.<br />
# gedit /etc/mkinitcpio.conf<br />
<br />
Find the line:<br />
MODULES="ata_generic ata_piix"<br />
<br />
and change it to (insert piix in the front)<br />
MODULES="piix ata_generic ata_piix"<br />
<br />
Then, find the line:<br />
HOOKS="base udev autodetect pata scsi sata usbinput keymap filesystems"<br />
<br />
and change that to: (replace pata with ide)<br />
HOOKS="base udev autodetect ide scsi sata usbinput keymap filesystems"<br />
<br />
Use mkinitcpio to rebuild the kernel as described in it's own wiki page, and reboot. In brief:<br />
# mkinitcpio -g /boot/kernel26.img</div>Gladstonehttps://wiki.archlinux.org/index.php?title=List_of_games&diff=74786List of games2009-08-28T13:52:05Z<p>Gladstone: /* Shooter */</p>
<hr />
<div>[[Category:Desktop user's guide (English)]]<br />
[[Category:Games and entertainment (English)]]<br />
In order to play under Linux, you can:<br />
* play with a native game, idem est a game that has been written for Linux (Quake 3...).<br />
* Use Loki, which provides installers for several games<br />
* Use Wine, which allows to run Windows applications and games under Linux<br />
* Use Cedega, which is a "fork" of Wine but game-oriented. Its packaged version is not free of charge unlike its CVS version<br />
* Use Java Webstart (embedded in Java 1.6) to install cross-platform games very easily <br />
* Use your web browser to launch web-games (applets using Java, Flash ...)<br />
<br />
<br />
=== Action / adventure ===<br />
<br />
* [http://www.hayles.demon.co.uk/bloodridge/bloodridge.html Bloodridge] is a Java based, 3d adventure fantasy game.<br />
* [http://bzflag.org/ Bzflag] is a multiplayer 3D tank battle for Irix, Linux, Solaris, or Windows.<br />
* [http://www.parallelrealities.co.uk/projects/blobAndConquer.php "Blob Wars : Blob And Conquer"] is a 3D action-adventure game and a direct sequel to the 2D platform game, Blob Wars: Metal Blob Solid.<br />
* freedink is a free and enhanced version of the action-adventure "Dink Smallwood"<br />
* [http://neverball.org/ Neverball] is a part puzzle game, part action game, and entirely a test of skill.<br />
* [http://www.viewizard.com/download.php AstroMenace] is a hardcore 3D space shooter with spaceship upgrade possibilities.<br />
<br />
=== Arcade ===<br />
<br />
* [[Tetrinet]] - A multiplayer online Tetris game for up to six people.<br />
* [http://ri-li.sourceforge.net/ Ri-li] - A toy wood engine GPL game.<br />
* [http://www.newbreedsoftware.com/circus-linux/ Circus Linux!] - A clone of the Atari 2600 game "Circus Atari," produced by Atari, Inc.<br />
* [http://lgames.sourceforge.net/index.php?project=Barrage Barrage] - A violent ''point-and-click'' shooting game with nice effects.<br />
* [http://www.frozen-bubble.org/ Frozen Bubble] - Frozen Bubble arcade game with colorful animated penguin eyecandy.<br />
* [http://chromium-bsu.sourceforge.net/ Chromium] - A fast paced, arcade-style, top-scrolling space shooter. <br />
* [http://pinball.sourceforge.net/ Pinball] - an open source pinball simulator for linux and other unix systems.<br />
* [http://linux.tlk.fr/games/Powermanga/ PowerManga] - an arcade 2D shoot-em-up game with 41 levels and more than 200 sprites.<br />
* [http://www.parallelrealities.co.uk/projects/virusKiller.php Viruskiller] - Your computer has been invaded! Using your trusty mouse you must shoot the buggers before they can destroy your files! <br />
* [http://www.nongnu.org/crack-attack/ Crack-attack] - A free OpenGL game based on the Super Nintendo classic Tetris Attack<br />
* [http://lgames.sourceforge.net/index.php?project=LBreakout2 lbreakout2] - a breakout-style arcade game in the manner of Arkanoid.<br />
* [http://performous.org/ Ultrastar-ng] - a clone of SingStar, a music video game. <br />
* [http://www.tuxanci.org/en/start Tuxanci] - a multiplatform game, inspired by well-known czech game Bulanci<br />
* [http://www.losersjuegos.com.ar/juegos/ceferino Ceferino (spanish)] - Action game similar to Super Pang<br />
* [http://bomberclone.sourceforge.net/homepage/ Bomberclone] - a free Bomberman-like game for Linux and Windows. The rules of the game are simple: run though a level and bomb other players.<br />
* [http://www.javagameplay.com/wz3.html Warzone 3] - 3D tank combat simulation game, set during some of the most critical European and Russian battles of the Second World War.<br />
* [http://www.gagaplay.com/cosmictrip/cosmictrip.jnlp Cosmic Trip] - a fast 3D shooter featuring smooth, psychedelic graphics, fast and addictive gameplay, online high-scores, and it's completely free!<br />
<br />
=== Course ===<br />
<br />
* Super Tux Kart<br />
* vdrift<br />
* Torcs<br />
* Tux Kart<br />
* Moon-buggy<br />
* Ultimates Stunts<br />
* Trigger<br />
* Tux Racer<br />
* Planet Penguin Racer<br />
* Armagetronad<br />
* Extreme Tux Racer<br />
* BigFun Motorcycle Trials [[http://ourawesomegames.com/pub/bigfun.jnlp]]<br />
* Maniadrive<br />
<br />
=== Education ===<br />
<br />
* GCompris<br />
* Gnumch<br />
* Tux Paint<br />
* Tux Typing<br />
<br />
=== Platformer ===<br />
* Dōkutsu Monogatari - AKA Cave Story, addictive 1-man-made metroid-vania-esque platformer<br />
* knyttstories - Platformer with adventure elements, heavy exploration and downloadable levels.<br />
* toppler - A reimplementation of the classic jump & run game "Nebulus"<br />
<br />
=== RPG ===<br />
* Egoboo - An open-source action RPG/dungeon crawling adventure with OpenGL 3D graphics<br />
<br />
<br />
=== Shooter ===<br />
<br />
* Quake 3 Arena<br />
* [http://www.quakelive.com/ Quake Live]<br />
* World Of Padman : Stand Alone Complex<br />
* Tremulous - a FPS with elements of real time strategy, featuring two teams: humans and aliens.<br />
* Warsow - a fast paced multiplayer FPS focusing on movement and trickjumps <br />
* Wolfenstein : enemy territory<br />
* Enemy Territory: Quake Wars<br />
* Nexuiz<br />
* Urban Terror<br />
* America's Army<br />
* World of Padman<br />
* Cube<br />
* Cube 2 : Sauerbraten<br />
* PrBoom+<br />
* Doomsday<br />
* [http://tuer.sourceforge.net TUER]<br />
* [http://www.bytonic.de/downloads/jake2_jogl11.jnlp Jake 2]<br />
* [http://www.javagameplay.com/ancientarenas/medium.html Ancient Arenas]<br />
* [http://www.javagameplay.com/futuristicarenas/medium.html Futuristic Arenas]<br />
* [http://www.pulpgames.net/scared/ Scared]<br />
* [http://javagl.sourceforge.net/tesseract/index.html Tesseract]<br />
<br />
=== Simulation ===<br />
<br />
* Danger from deep<br />
* Flight Gear<br />
* Beyond The Red Line <br />
* Freespace 2<br />
* Foobillard<br />
* Pydance<br />
<br />
=== MMOG - MMORPG ===<br />
<br />
* [http://www.eternal-lands.com Landes Eternelles]<br />
* [http://www.planeshift.it Planeshift]<br />
* [http://www.dofus.com Dofus]<br />
* [http://www.s2games.com/savage/index.php Savage - The Battle For Newerth]<br />
* [http://savage2.com Savage2 - A tortured soul]<br />
* [http://www.regnumonline.com.ar Regnum Online]<br />
* [http://themanaworld.org The Mana World]<br />
* [http://www.runescape.com Runescape]<br />
* [http://secondlife.com/ Second Life] is an online, 3D virtual world imagined and created by its Residents.<br />
* [http://www.wurmonline.com Wurm Online]<br />
* [http://www.eve-online.com Eve Online]<br />
* [http://heroesofnewerth.com/ Heroes of Newerth] is an online, multi-player strategy game that is based upon DoTA (Defense of the Ancients).<br />
<br />
=== Strategy ===<br />
<br />
* [http://www.wesnoth.org/ Battle for Wesnoth] is a free, turn-based tactical strategy game with a high fantasy theme, featuring both single-player, and online/hotseat multiplayer combat.<br />
* Boson<br />
* [http://glest.org Glest] is a free 3D real-time strategy game, where you control the armies of two different factions: Tech, which is mainly composed of warriors and mechanical devices, and Magic, that prefers mages and summoned creatures in the battlefield.<br />
* Globulation 2 - This Multiplayer RTS has some some "economic" elements minimizing the amount of micromanagement <br />
* UFO Alien Invasion<br />
* Freeciv<br />
* Wormux<br />
* Lgeneral<br />
* Advanced Strategic Command<br />
* Penguin Command<br />
* Crimson Fields<br />
* [http://www.emhsoft.com/singularity/ Singularity (Endgame)] is a turn based Single player Strategy / Simulation about a KI hiding, growing and evolving<br />
* [http://users.on.net/~bobjob/TD.jnlp Tower Defence Game]<br />
<br />
=== Tycoon/Management Games ===<br />
<br />
* [http://lincity-ng.berlios.de/ Lincity-ng] - a city simulation game in which you are required to build and maintain a city. You can win the game either by building a sustainable economy or by evacuating all citizens with spaceships.<br />
* [http://www.openttd.org/en/ Open Transport Tycoon Deluxe] - an open source clone of the Microprose game "Transport Tycoon Deluxe", a popular game originally written by Chris Sawyer. It attempts to mimic the original game as closely as possible while extending it with new features.<br />
* [http://bygfoot.sourceforge.net/ Bygfoot] - a football (a.k.a. soccer) management game.<br />
<br />
=== Puzzle ===<br />
<br />
* Cgoban3<br />
* Netris<br />
* Glchess<br />
* Tuxtyping<br />
* Gnudoku<br />
* Gnuchess<br />
* Xscorch<br />
* Pingus<br />
* Eboard<br />
* xmoto<br />
* Gnono<br />
* Ksudoku<br />
* 3D Breakout [[http://www.dandeliongames.com/startup.jnlp]]<br />
* Incredibuilder! [[http://www.freewebs.com/jeromeblouin/mygames.htm]]<br />
<br />
=== Emulators ===<br />
An emulator is a program which serves to replicate the functions of another platform or system so as to allow applications and games to be run in environments they were not programmed for. While emulators themselves are not games in a strict sense, they provide users with the ability to play games and therefore have been included in this article.<br />
<br />
{{Warning|Emulators provide users with the ability to run programs called "ROMS", which are copies of games. While owning an emulator itself is not illegal, downloading or sharing (and in some cases, creating) ROMs is ILLEGAL. Using an emulator to run ROMs that you do not own the legal rights to is ILLEGAL. Use at your own risk and be sure to read the Terms of Service for the emulator. Arch Linux etc. is not responsible if you get in trouble.}}<br />
<br />
* [http://www.dolphin-emu.com/ Dolphin]- A very nice Gamecube and Wii emulator]<br />
* [http://desmume.org/ DeSmuME] - Linux Nintendo DS emulator<br />
* [http://www.dosbox.com/ DOSBox] - An open source DOS emulator which primarily focuses on running DOS Games.<br />
* [http://www.epsxe.com/ epsxe] - An emulator of the PlayStation video game console for x86-based PC hardware.<br />
* [http://fceux.com/web/htdocs/ fceux] - A cross platform, NTSC and PAL Famicom/NES emulator that is an evolution of the original FCE Ultra emulator.<br />
* [http://www.pcsx2.net/ PCSX2] - A Playstation 2 emulator it is still being maintained and developed.<br />
* [http://mupen64.emulation64.com/ Mupen64] - a highly compatible n64 emulator with plugin system.<br />
* [http://www.snes9x.com/ snes-9x] - portable, freeware Super Nintendo Entertainment System (SNES) emulator.<br />
* [http://vba.ngemu.com/ Visual Boy Advance] - Gameboy emulator with GameBoy Advance, GameBoy Color, and Super GameBoy support.<br />
* [[Wine]] - Wine is not actually an emulator, but it provides a way to play windows games on Linux.<br />
* [http://www.zsnes.com/ ZSNES] - a Super Nintendo emulator.<br />
<br />
For a full selection of emulators, try checking the [http://aur.archlinux.org/packages.php?O=0&K=&do_Search=Go&detail=1&L=0&C=5&SeB=nd&SB=n&SO=a&PP=25 AUR 'emulators' category]<br />
<br />
== External links ==<br />
<br />
* [http://tuer.tuxfamily.org/fgf/players_portal/ FGF players' portal], the portal for all Java open source really cross-platform games<br />
* [http://freegamer.blogspot.com/ Free Gamer], an open source games blog<br />
* [http://forum.freegamedev.net/ FreeGameDev], free/open source game development community<br />
* [http://libregamewiki.org/ Libregamewiki], a free software games wiki<br />
* [http://arch-games.twilightlair.net/projects/show/gaming-repo arch-games] Games repo for Arch Linux.<br />
* [https://fedoraproject.org/wiki/SIGs/Games#Gaming_News_sites SIG/Games] os/linux gaming news sites and lists at Fedora's wiki</div>Gladstonehttps://wiki.archlinux.org/index.php?title=List_of_games&diff=74785List of games2009-08-28T13:49:53Z<p>Gladstone: /* Shooter */ -- added QL</p>
<hr />
<div>[[Category:Desktop user's guide (English)]]<br />
[[Category:Games and entertainment (English)]]<br />
In order to play under Linux, you can:<br />
* play with a native game, idem est a game that has been written for Linux (Quake 3...).<br />
* Use Loki, which provides installers for several games<br />
* Use Wine, which allows to run Windows applications and games under Linux<br />
* Use Cedega, which is a "fork" of Wine but game-oriented. Its packaged version is not free of charge unlike its CVS version<br />
* Use Java Webstart (embedded in Java 1.6) to install cross-platform games very easily <br />
* Use your web browser to launch web-games (applets using Java, Flash ...)<br />
<br />
<br />
=== Action / adventure ===<br />
<br />
* [http://www.hayles.demon.co.uk/bloodridge/bloodridge.html Bloodridge] is a Java based, 3d adventure fantasy game.<br />
* [http://bzflag.org/ Bzflag] is a multiplayer 3D tank battle for Irix, Linux, Solaris, or Windows.<br />
* [http://www.parallelrealities.co.uk/projects/blobAndConquer.php "Blob Wars : Blob And Conquer"] is a 3D action-adventure game and a direct sequel to the 2D platform game, Blob Wars: Metal Blob Solid.<br />
* freedink is a free and enhanced version of the action-adventure "Dink Smallwood"<br />
* [http://neverball.org/ Neverball] is a part puzzle game, part action game, and entirely a test of skill.<br />
* [http://www.viewizard.com/download.php AstroMenace] is a hardcore 3D space shooter with spaceship upgrade possibilities.<br />
<br />
=== Arcade ===<br />
<br />
* [[Tetrinet]] - A multiplayer online Tetris game for up to six people.<br />
* [http://ri-li.sourceforge.net/ Ri-li] - A toy wood engine GPL game.<br />
* [http://www.newbreedsoftware.com/circus-linux/ Circus Linux!] - A clone of the Atari 2600 game "Circus Atari," produced by Atari, Inc.<br />
* [http://lgames.sourceforge.net/index.php?project=Barrage Barrage] - A violent ''point-and-click'' shooting game with nice effects.<br />
* [http://www.frozen-bubble.org/ Frozen Bubble] - Frozen Bubble arcade game with colorful animated penguin eyecandy.<br />
* [http://chromium-bsu.sourceforge.net/ Chromium] - A fast paced, arcade-style, top-scrolling space shooter. <br />
* [http://pinball.sourceforge.net/ Pinball] - an open source pinball simulator for linux and other unix systems.<br />
* [http://linux.tlk.fr/games/Powermanga/ PowerManga] - an arcade 2D shoot-em-up game with 41 levels and more than 200 sprites.<br />
* [http://www.parallelrealities.co.uk/projects/virusKiller.php Viruskiller] - Your computer has been invaded! Using your trusty mouse you must shoot the buggers before they can destroy your files! <br />
* [http://www.nongnu.org/crack-attack/ Crack-attack] - A free OpenGL game based on the Super Nintendo classic Tetris Attack<br />
* [http://lgames.sourceforge.net/index.php?project=LBreakout2 lbreakout2] - a breakout-style arcade game in the manner of Arkanoid.<br />
* [http://performous.org/ Ultrastar-ng] - a clone of SingStar, a music video game. <br />
* [http://www.tuxanci.org/en/start Tuxanci] - a multiplatform game, inspired by well-known czech game Bulanci<br />
* [http://www.losersjuegos.com.ar/juegos/ceferino Ceferino (spanish)] - Action game similar to Super Pang<br />
* [http://bomberclone.sourceforge.net/homepage/ Bomberclone] - a free Bomberman-like game for Linux and Windows. The rules of the game are simple: run though a level and bomb other players.<br />
* [http://www.javagameplay.com/wz3.html Warzone 3] - 3D tank combat simulation game, set during some of the most critical European and Russian battles of the Second World War.<br />
* [http://www.gagaplay.com/cosmictrip/cosmictrip.jnlp Cosmic Trip] - a fast 3D shooter featuring smooth, psychedelic graphics, fast and addictive gameplay, online high-scores, and it's completely free!<br />
<br />
=== Course ===<br />
<br />
* Super Tux Kart<br />
* vdrift<br />
* Torcs<br />
* Tux Kart<br />
* Moon-buggy<br />
* Ultimates Stunts<br />
* Trigger<br />
* Tux Racer<br />
* Planet Penguin Racer<br />
* Armagetronad<br />
* Extreme Tux Racer<br />
* BigFun Motorcycle Trials [[http://ourawesomegames.com/pub/bigfun.jnlp]]<br />
* Maniadrive<br />
<br />
=== Education ===<br />
<br />
* GCompris<br />
* Gnumch<br />
* Tux Paint<br />
* Tux Typing<br />
<br />
=== Platformer ===<br />
* Dōkutsu Monogatari - AKA Cave Story, addictive 1-man-made metroid-vania-esque platformer<br />
* knyttstories - Platformer with adventure elements, heavy exploration and downloadable levels.<br />
* toppler - A reimplementation of the classic jump & run game "Nebulus"<br />
<br />
=== RPG ===<br />
* Egoboo - An open-source action RPG/dungeon crawling adventure with OpenGL 3D graphics<br />
<br />
<br />
=== Shooter ===<br />
<br />
* Quake 3 Arena<br />
* Quake Live [[http://www.quakelive.com/]]<br />
* World Of Padman : Stand Alone Complex<br />
* Tremulous - a FPS with elements of real time strategy, featuring two teams: humans and aliens.<br />
* Warsow - a fast paced multiplayer FPS focusing on movement and trickjumps <br />
* Wolfenstein : enemy territory<br />
* Enemy Territory: Quake Wars<br />
* Nexuiz<br />
* Urban Terror<br />
* America's Army<br />
* World of Padman<br />
* Cube<br />
* Cube 2 : Sauerbraten<br />
* PrBoom+<br />
* Doomsday<br />
* TUER [[http://tuer.sourceforge.net]]<br />
* Jake 2 [[http://www.bytonic.de/downloads/jake2_jogl11.jnlp]]<br />
* Ancient Arenas [[http://www.javagameplay.com/ancientarenas/medium.html]]<br />
* Futuristic Arenas [[http://www.javagameplay.com/futuristicarenas/medium.html]]<br />
* Scared [[http://www.pulpgames.net/scared/]]<br />
* Tesseract [[http://javagl.sourceforge.net/tesseract/index.html]]<br />
<br />
=== Simulation ===<br />
<br />
* Danger from deep<br />
* Flight Gear<br />
* Beyond The Red Line <br />
* Freespace 2<br />
* Foobillard<br />
* Pydance<br />
<br />
=== MMOG - MMORPG ===<br />
<br />
* [http://www.eternal-lands.com Landes Eternelles]<br />
* [http://www.planeshift.it Planeshift]<br />
* [http://www.dofus.com Dofus]<br />
* [http://www.s2games.com/savage/index.php Savage - The Battle For Newerth]<br />
* [http://savage2.com Savage2 - A tortured soul]<br />
* [http://www.regnumonline.com.ar Regnum Online]<br />
* [http://themanaworld.org The Mana World]<br />
* [http://www.runescape.com Runescape]<br />
* [http://secondlife.com/ Second Life] is an online, 3D virtual world imagined and created by its Residents.<br />
* [http://www.wurmonline.com Wurm Online]<br />
* [http://www.eve-online.com Eve Online]<br />
* [http://heroesofnewerth.com/ Heroes of Newerth] is an online, multi-player strategy game that is based upon DoTA (Defense of the Ancients).<br />
<br />
=== Strategy ===<br />
<br />
* [http://www.wesnoth.org/ Battle for Wesnoth] is a free, turn-based tactical strategy game with a high fantasy theme, featuring both single-player, and online/hotseat multiplayer combat.<br />
* Boson<br />
* [http://glest.org Glest] is a free 3D real-time strategy game, where you control the armies of two different factions: Tech, which is mainly composed of warriors and mechanical devices, and Magic, that prefers mages and summoned creatures in the battlefield.<br />
* Globulation 2 - This Multiplayer RTS has some some "economic" elements minimizing the amount of micromanagement <br />
* UFO Alien Invasion<br />
* Freeciv<br />
* Wormux<br />
* Lgeneral<br />
* Advanced Strategic Command<br />
* Penguin Command<br />
* Crimson Fields<br />
* [http://www.emhsoft.com/singularity/ Singularity (Endgame)] is a turn based Single player Strategy / Simulation about a KI hiding, growing and evolving<br />
* [http://users.on.net/~bobjob/TD.jnlp Tower Defence Game]<br />
<br />
=== Tycoon/Management Games ===<br />
<br />
* [http://lincity-ng.berlios.de/ Lincity-ng] - a city simulation game in which you are required to build and maintain a city. You can win the game either by building a sustainable economy or by evacuating all citizens with spaceships.<br />
* [http://www.openttd.org/en/ Open Transport Tycoon Deluxe] - an open source clone of the Microprose game "Transport Tycoon Deluxe", a popular game originally written by Chris Sawyer. It attempts to mimic the original game as closely as possible while extending it with new features.<br />
* [http://bygfoot.sourceforge.net/ Bygfoot] - a football (a.k.a. soccer) management game.<br />
<br />
=== Puzzle ===<br />
<br />
* Cgoban3<br />
* Netris<br />
* Glchess<br />
* Tuxtyping<br />
* Gnudoku<br />
* Gnuchess<br />
* Xscorch<br />
* Pingus<br />
* Eboard<br />
* xmoto<br />
* Gnono<br />
* Ksudoku<br />
* 3D Breakout [[http://www.dandeliongames.com/startup.jnlp]]<br />
* Incredibuilder! [[http://www.freewebs.com/jeromeblouin/mygames.htm]]<br />
<br />
=== Emulators ===<br />
An emulator is a program which serves to replicate the functions of another platform or system so as to allow applications and games to be run in environments they were not programmed for. While emulators themselves are not games in a strict sense, they provide users with the ability to play games and therefore have been included in this article.<br />
<br />
{{Warning|Emulators provide users with the ability to run programs called "ROMS", which are copies of games. While owning an emulator itself is not illegal, downloading or sharing (and in some cases, creating) ROMs is ILLEGAL. Using an emulator to run ROMs that you do not own the legal rights to is ILLEGAL. Use at your own risk and be sure to read the Terms of Service for the emulator. Arch Linux etc. is not responsible if you get in trouble.}}<br />
<br />
* [http://www.dolphin-emu.com/ Dolphin]- A very nice Gamecube and Wii emulator]<br />
* [http://desmume.org/ DeSmuME] - Linux Nintendo DS emulator<br />
* [http://www.dosbox.com/ DOSBox] - An open source DOS emulator which primarily focuses on running DOS Games.<br />
* [http://www.epsxe.com/ epsxe] - An emulator of the PlayStation video game console for x86-based PC hardware.<br />
* [http://fceux.com/web/htdocs/ fceux] - A cross platform, NTSC and PAL Famicom/NES emulator that is an evolution of the original FCE Ultra emulator.<br />
* [http://www.pcsx2.net/ PCSX2] - A Playstation 2 emulator it is still being maintained and developed.<br />
* [http://mupen64.emulation64.com/ Mupen64] - a highly compatible n64 emulator with plugin system.<br />
* [http://www.snes9x.com/ snes-9x] - portable, freeware Super Nintendo Entertainment System (SNES) emulator.<br />
* [http://vba.ngemu.com/ Visual Boy Advance] - Gameboy emulator with GameBoy Advance, GameBoy Color, and Super GameBoy support.<br />
* [[Wine]] - Wine is not actually an emulator, but it provides a way to play windows games on Linux.<br />
* [http://www.zsnes.com/ ZSNES] - a Super Nintendo emulator.<br />
<br />
For a full selection of emulators, try checking the [http://aur.archlinux.org/packages.php?O=0&K=&do_Search=Go&detail=1&L=0&C=5&SeB=nd&SB=n&SO=a&PP=25 AUR 'emulators' category]<br />
<br />
== External links ==<br />
<br />
* [http://tuer.tuxfamily.org/fgf/players_portal/ FGF players' portal], the portal for all Java open source really cross-platform games<br />
* [http://freegamer.blogspot.com/ Free Gamer], an open source games blog<br />
* [http://forum.freegamedev.net/ FreeGameDev], free/open source game development community<br />
* [http://libregamewiki.org/ Libregamewiki], a free software games wiki<br />
* [http://arch-games.twilightlair.net/projects/show/gaming-repo arch-games] Games repo for Arch Linux.<br />
* [https://fedoraproject.org/wiki/SIGs/Games#Gaming_News_sites SIG/Games] os/linux gaming news sites and lists at Fedora's wiki</div>Gladstonehttps://wiki.archlinux.org/index.php?title=Wine&diff=72563Wine2009-07-23T16:30:57Z<p>Gladstone: /* Fonts */ -- added link to script. Ref: http://bbs.archlinux.org/viewtopic.php?pid=513496#p513496</p>
<hr />
<div>[[Category:Wine (English)]]<br />
[[Category:HOWTOs (English)]]<br />
{{i18n_links_start}}<br />
{{i18n_entry|English|Wine}}<br />
{{i18n_entry|Español|Wine (Español)}}<br />
{{i18n_entry|Русский|Wine (Русский)}}<br />
{{i18n_entry|简体中文|Wine (简体中文)}}<br />
{{i18n_links_end}}<br />
<br />
= About =<br />
[http://www.winehq.org/ Wine] is a translation layer (a program loader) capable of running Windows applications on GNU/Linux and other POSIX compatible operating systems. Windows programs running in Wine act as native programs would, running without the performance or memory usage penalties of an emulator, with a similar look and feel to other applications on your desktop.<br />
<br />
= Installation =<br />
== i686 ==<br />
Wine is constantly updated and available in the [extra] repository:<br />
<br />
pacman -S wine<br />
<br />
== x86_64 ==<br />
There's as of writing no x86_64 version of wine available, but that should be the case soon because the devs already have a hello world running.<br />
If you don't bother stuffing your PC with i686 libraries and binarys, then use one of the bin32-wine packages in the [[AUR]]: [http://aur.archlinux.org/packages.php?ID=7915 bin32-wine] and [http://aur.archlinux.org/packages.php?ID=16531 bin32-wine-suse].<br />
<br />
'''Important:''' If you have a '''nvidia'''-graphicscard, you'll need to do<br />
<br />
pacman -S lib32-nvidia-utils<br />
<br />
to use 3D-allocation! Or look [http://aur.archlinux.org/packages.php?K=lib32-nvidia-utils here] for other than the newest lib32-nvidia-utils version, if you use the nvidia-96xx driver version for example.<br />
<br />
= Configuration =<br />
To create configuration files do<br />
winecfg<br />
review the settings and click ok to save. The wine directory with config files resides in <br />
~/.wine<br />
and by default C:\> will be mapped to<br />
~/.wine/drive_c<br />
<br />
Ok! This is the basic configuration. You can try to run something using:<br />
wine /path/to/something.exe<br />
<br />
If you're having trouble getting DirectX apps to run properly, try adding the '''-opengl''' flag:<br />
wine /path/to/3d_game.exe '''-opengl'''<br />
<br />
==Sound==<br />
'''''I don't think this still holds. update?'''''<br />
<br />
By default sound issues may arise when running Wine applications. Ensure only one sound device is selected in ''winecfg''. Alsa should work out of the box but is still glitchy & slow in some games, there exists a patch for this issue here:<br />
<br />
http://kcat.strangesoft.net/wine_thread_prio.diff<br />
<br />
but using oss and selecting winecfg -> Sound -> Hw acceleration -> Emulation will also fix the audio issues for you provided you are using the alsa oss emulation kernel modules. (<b>Note:</b> using the aoss utility does <i>not</i> solve the issue; you must load the snd-pcm-oss module.)<br />
<br />
==Fonts==<br />
<br />
*If wine applications are not showing easily readable fonts, you may not have Microsoft's Truetype fonts installed. Luckily arch has a package for that.<br />
pacman -Sy ttf-ms-fonts<br />
After running such program, kill all wine servers and run winecfg; fonts should be legible now.<br />
<br />
Other TTF fonts you wish to install should go in $C_DRIVE/windows/fonts/ (where $C_DRIVE is usually ~/.wine/drive_c) for wine to recognize them.<br />
<br />
If the fonts look somehow smeared, enter the .wine directory and create a file fontrender.txt with the content:<br />
[HKEY_CURRENT_USER\Software\Wine\X11 Driver]<br />
"ClientSideWithRender"="N"<br />
<br />
Add the key to your wine configuration by executing the following command:<br />
regedit fontrender.txt<br />
<br />
===Enabling font anti-aliasing===<br />
<br />
{{Note | A [http://files.polosatus.ru/winefontssmoothing_en.sh script] has been created to simplify this process.}}<br />
<br />
<br />
Create a file with a .reg (example: aa.reg) with the following content :<br />
<br />
REGEDIT4<br />
<br />
[HKEY_CURRENT_USER\Control Panel\Desktop]<br />
"FontSmoothing"="2"<br />
"FontSmoothingType"=dword:00000002<br />
"FontSmoothingGamma"=dword:00000578<br />
"FontSmoothingOrientation"=dword:00000001<br />
<br />
run <br />
regedit <br />
and choose <br />
File -> Import registry file... <br />
<br />
and select your .reg file. Anti-aliasing fonts will be after the conclusion of regedit, and run wine applications again.<br />
<br />
==Sub-Menu==<br />
<br />
After installation, there will likely be no menu in your Desktop Manager. After installing a program using Wine, it will create a menu with your installed programs in it automatically. If you wish to add on to the menu to create a Ubuntu-like Wine sub-menu, then follow these instructions:<br />
<br />
===Create Menu Entries===<br />
<br />
First, install a Windows program using Wine to create the base menu. After the base menu is created, you can start to add the menu entries. In GNOME, right-click on the desktop and select "''Create Launcher...''". The steps might be different for KDE/Xfce. Make three launchers using these settings:<br />
<br />
'''Type''': Application<br />
'''Name''': Configuration<br />
'''Command''': winecfg<br />
'''Comment''': Configure the general settings for Wine<br />
<br />
'''Type''': Application<br />
'''Name''': Uninstall Programs<br />
'''Command''': wine uninstaller<br />
'''Comment''': Uninstall Windows programs under Wine properly<br />
<br />
'''Type''': Application<br />
'''Name''': Browse C:\ Drive<br />
'''Command''': wine winebrowser c:\\<br />
'''Comment''': Browse the files in the virtual Wine C:\ drive<br />
<br />
Now that you have these three launchers on your desktop, it is time to put them into the menu. But, first you should change the launchers to dynamically change icons when a new icon set is installed. To do this, open the launchers that you just made in your favorite text editor. Change the following settings to these new values:<br />
<br />
<br />
''Configuration'' launcher:<br />
Icon[en_US]=wine-winecfg<br />
Icon=wine-winecfg<br />
''Uninstall Programs'' launcher:<br />
Icon[en_US]=wine-uninstaller<br />
Icon=wine-uninstaller<br />
''Browse C:\ Drive'' launcher:<br />
Icon[en_US]=wine-winefile<br />
Icon=wine-winefile<br />
<br />
If these settings produce a ugly/non-existent icon, it means that there are no icons for these launchers in the icon set that you have enabled. You should replace the icon setting with the explicit location of the icon that you want. Clicking the icon in the launcher's properties menu will have the same effect. A great icon set that supports these shortcuts is [http://www.gnome-look.org/content/show.php/GNOME-colors?content=82562 GNOME-colors].<br />
<br />
Now that you have the launchers fully configured, 'now' it is time to put them in the menu. Plop them into "''~/.local/share/applications/wine/''" using a terminal or file browser.<br />
<br />
Wait a second, they aren't in the menu yet! There is one last step. Copy the following text into a text file named "''wine-utilities.menu''".<br />
<br />
<!DOCTYPE Menu PUBLIC "-//freedesktop//DTD Menu 1.0//EN"<br />
"http://www.freedesktop.org/standards/menu-spec/menu-1.0.dtd"><br />
<Menu><br />
<Name>Applications</Name><br />
<Menu><br />
<Name>wine-wine</Name><br />
<Directory>wine-wine.directory</Directory><br />
<Include><br />
<Filename>wine-Configuration.desktop</Filename><br />
</Include><br />
<Include><br />
<Filename>wine-Browse C:\ Drive.desktop</Filename><br />
</Include><br />
<Include><br />
<Filename>wine-Uninstall Programs.desktop</Filename><br />
</Include><br />
</Menu><br />
</Menu><br />
<br />
Now, just move the newly made file to the "''~/.config/menus/applications-merged/''" folder. Go check in the menu and there should be the minty fresh options waiting to be used!<br />
<br />
===KDE 4 Menu Fix[https://bugs.launchpad.net/ubuntu/+source/wine/+bug/263041]===<br />
The Wine menu items may appear in "Lost & Found" instead of the Wine menu for KDE 4. This is because kde-applications.menu is missing the MergeDir option.<br />
<br />
Edit '''/etc/xdg/menus/kde-applications.menu'''<br />
<br />
At the end of the file add <MergeDir>applications-merged</MergeDir> after <DefaultMergeDirs/>, it should look like this:<br />
<br />
<Include><br />
<And><br />
<Category>KDE</Category><br />
<Category>Core</Category><br />
</And><br />
</Include><br />
<DefaultMergeDirs/><br />
<MergeDir>applications-merged</MergeDir><br />
<MergeFile>applications-kmenuedit.menu</MergeFile><br />
</Menu><br />
Alternatively you can create a symlink to a folder that KDE does see:<br />
ln -s ~/.config/menus/applications-merged ~/.config/menus/kde-applications-merged<br />
This has the added bonus that an update to KDE won't change it, but is per user instead of system wide.<br />
<br />
= Using Wine to execute Win16 / Win32 binaries =<br />
<br />
You can execute binaries by calling '''wine''' manually<br />
<br />
wine programsname.exe<br />
<br />
It is also possible to tell the kernel to use '''wine''' as an interpreter for all Win16/Win32 binaries. First mount the binfmt_misc filesystem:<br />
<br />
mount -t binfmt_misc none /proc/sys/fs/binfmt_misc<br />
<br />
or add this line to your '''/etc/fstab'''<br />
<br />
none /proc/sys/fs/binfmt_misc binfmt_misc defaults 0 0<br />
<br />
Then tell the kernel how to interpret Win16 and Win32 binaries:<br />
<br />
echo ':DOSWin:M::MZ::/usr/bin/wine:' > /proc/sys/fs/binfmt_misc/register<br />
<br />
You can add this line to '''/etc/rc.local''' to make this setting permanent. In this case you may want to ignore stderr to avoid error messages when changing runlevels:<br />
<br />
{ echo ':DOSWin:M::MZ::/usr/bin/wine:' > /proc/sys/fs/binfmt_misc/register; } 2>/dev/null<br />
<br />
Now try this:<br />
<br />
chmod 755 exefile.exe<br />
./exefile.exe<br />
<br />
You can even remove the '''.exe''' extension, because the kernel doesn't identify the file by its extension.<br />
<br />
==Wine Configuration Utilities==<br />
These tools will assist in the installation of typical Windows components. In most cases they should be used as a last effort, as it may severely alter your wine configuration. <br />
<br />
<br />
===WineTricks===<br />
[http://wiki.winehq.org/winetricks Winetricks] is a quick (slightly dirty) script that will allow you to install base requirements needed to run some windows programs. Installable components include DirectX 9.x, msxml (office 2007 / IE requirement), visual runtimes and many more.<br />
<br />
To install simply:<br />
pacman -S winetricks<br />
<br />
You can now start winetricks (as a normal user!) with:<br />
winetricks<br />
<br />
<br />
===WineTools assistant=== <br />
(currently slightly outdated, but working)<br />
<br />
Winetools is a program (more of a script, in fact) that facilitates in the installation of some core components for wine in order to install other programs. Note this is not necessary for wine, but does help if you want to get Internet Explorer running.<br />
<br />
[http://www.von-thadden.de/Joachim/WineTools/ WineTools Site]<br />
<br />
Keep in mind, Microsoft says you must have a license for IE6 in order to install DCOM98 or Internet Explorer 6. If you've ever owned a copy of Windows, you should be all set. Although I'm sure no one will hunt you down if you don't have the license.<br />
<br />
Now grab the [http://aur.archlinux.org/packages.php?ID=8913 PKGBUILD] from the AUR: http://aur.archlinux.org/packages.php?ID=8913<br />
<br />
and build the package as you would any PKGBUILD (if you dont know how: [[ABS - The Arch Build System]])<br />
<br />
<br />
=== Sidenet Wine Configuration Utility ===<br />
<br />
[http://sidenet.ddo.jp/winetips/config.html wine-config]<br />
<br />
* Download the latest version<br />
* unpack it<br />
* READ THE README<br />
* execute<br />
./setup<br />
* Follow the instructions<br />
<br />
'''Keep in mind''': Like stated on the [http://sidenet.ddo.jp/winetips/config.html site], you're only allowed to install DCOM98 if you possess a valid License for Windows98.<br />
<br />
<br />
===Wine-doors===<br />
<br />
[http://www.wine-doors.org/ Wine-doors]<br />
<br />
Wine-doors is a WineTools replacement. It features a GNOME GUI and works like a package manager. Works fine in 64bit. You can [http://aur.archlinux.org/packages.php?ID=11823 find it in the AUR].<br />
<br />
= Alternatives to Win16 / Win32 binaries =<br />
* [[Cedega]] - Aimed at gamers<br />
* [[CVSCedega]] - CVS source version of cedega<br />
* [[Codeweavers]] - Codeweavers' Crossover Office; Aimed at Office Users<br />
<br />
= External Resources =<br />
* http://www.winehq.com/<br />
* Installing Internet Explorer 5, 5.5 and 6 with wine: [[Ies4linux]]</div>Gladstonehttps://wiki.archlinux.org/index.php?title=D-Bus&diff=72459D-Bus2009-07-20T22:49:59Z<p>Gladstone: /* Further reading */</p>
<hr />
<div>=Introduction=<br />
<blockquote>D-Bus (Desktop Bus) is a simple inter-process communication (IPC) system for software applications to communicate with one another. D-Bus was heavily influenced by KDE2–3's DCOP system and has replaced it in the KDE 4 release; it is supported on Linux, Microsoft Windows and Apple OS X operating systems and is used by Qt 4 and GNOME.</blockquote><br />
Source: [http://en.wikipedia.org/wiki/D-Bus D-Bus - Wikipedia].<br />
<br />
<br />
<br />
D-Bus is automatically started by [[HAL]], you don't need to (and you shouldn't) add it to your DAEMONS array in {{Filename|/etc/rc.conf}}.<br />
<br />
=Troubleshooting=<br />
==Could not get UID and GID==<br />
If you get the following error while starting DBUS:<br />
Failed to start message bus: Could not get UID and GID for username "dbus"<br />
then add the user like so:<br />
# groupadd -g 81 dbus<br />
# useradd -c 'System message bus' -u 81 -g dbus -d '/' -s /bin/false dbus<br />
<br />
==D-bus Launch==<br />
If you are not using a desktop environment, more than likely you will need to add the following to your ''.xinitrc'':<br />
<br />
# D-bus<br />
if which dbus-launch >/dev/null && test -z "$DBUS_SESSION_BUS_ADDRESS"; then<br />
eval `dbus-launch --sh-syntax --exit-with-session`<br />
fi<br />
<br />
This is used to start a user d-bus session (seperate from the system's) and remedies errors such as:<br />
<br />
libnotify-Message: Unable to get session bus: Failed to execute dbus-launch to autolaunch D-Bus session<br />
<br />
===Further reading===<br />
For more information, see [http://bbs.archlinux.org/viewtopic.php?pid=576861#p576861 Gnome-do and compiz standalone] and:<br />
<br />
man dbus-launch</div>Gladstonehttps://wiki.archlinux.org/index.php?title=D-Bus&diff=72458D-Bus2009-07-20T22:49:36Z<p>Gladstone: /* Troubleshooting */</p>
<hr />
<div>=Introduction=<br />
<blockquote>D-Bus (Desktop Bus) is a simple inter-process communication (IPC) system for software applications to communicate with one another. D-Bus was heavily influenced by KDE2–3's DCOP system and has replaced it in the KDE 4 release; it is supported on Linux, Microsoft Windows and Apple OS X operating systems and is used by Qt 4 and GNOME.</blockquote><br />
Source: [http://en.wikipedia.org/wiki/D-Bus D-Bus - Wikipedia].<br />
<br />
<br />
<br />
D-Bus is automatically started by [[HAL]], you don't need to (and you shouldn't) add it to your DAEMONS array in {{Filename|/etc/rc.conf}}.<br />
<br />
=Troubleshooting=<br />
==Could not get UID and GID==<br />
If you get the following error while starting DBUS:<br />
Failed to start message bus: Could not get UID and GID for username "dbus"<br />
then add the user like so:<br />
# groupadd -g 81 dbus<br />
# useradd -c 'System message bus' -u 81 -g dbus -d '/' -s /bin/false dbus<br />
<br />
==D-bus Launch==<br />
If you are not using a desktop environment, more than likely you will need to add the following to your ''.xinitrc'':<br />
<br />
# D-bus<br />
if which dbus-launch >/dev/null && test -z "$DBUS_SESSION_BUS_ADDRESS"; then<br />
eval `dbus-launch --sh-syntax --exit-with-session`<br />
fi<br />
<br />
This is used to start a user d-bus session (seperate from the system's) and remedies errors such as:<br />
<br />
libnotify-Message: Unable to get session bus: Failed to execute dbus-launch to autolaunch D-Bus session<br />
<br />
===Further reading===<br />
For more information, see [http://bbs.archlinux.org/viewtopic.php?pid=576861#p576861 Gnome-do and compiz standalone] and<br />
<br />
man dbus-launch</div>Gladstonehttps://wiki.archlinux.org/index.php?title=Network_configuration/Wireless&diff=71760Network configuration/Wireless2009-07-08T19:15:09Z<p>Gladstone: /* ipw2100 and ipw2200 */</p>
<hr />
<div>[[Category:Communication and network (English)]]<br />
[[Category:Networking (English)]]<br />
[[Category:HOWTOs (English)]]<br />
<br />
{{i18n_links_start}}<br />
{{i18n_entry|English|Wireless_Setup}}<br />
{{i18n_entry|Español|Wireless_Setup_(Español)}}<br />
{{i18n_entry|Italiano|Configurazione_Wireless}}<br />
{{i18n_entry|Nederlands|Draadloze_Configuratie}}<br />
{{i18n_entry|Deutsch|Drahtlos_Installation}}<br />
{{i18n_entry|简体中文|无线设置}}<br />
{{i18n_entry|Russian|Wireless_Setup_(Русский)}}<br />
{{i18n_entry|Türkçe|Kablosuz Bağlantı}}<br />
{{i18n_links_end}}<br />
<br />
= Introduction =<br />
<br />
Configuring wireless under Arch Linux (or any distro for that matter) is a two-part process. The first part is to identify and ensure the correct driver for your wireless device is installed, (they are available on the installation media, so make sure you install them) and configure the interface. The second is choosing a method of managing wireless connections. This article covers both parts, and provides additional links to wireless management tools.<br />
<br />
{{Box Note | The wireless drivers and tools are available on the installation media under the '''base-devel''' category. (Be sure to install the proper driver for your card). Udev will usually load the appropriate module, thereby creating the wireless interface, from the initial live system of the installer, as well as the newly installed system on your hard drive. If you are configuring your wireless functionality after, and not during, Arch installation, simply ensure the required packages are installed with pacman, (driver, firmware if needed, wireless_tools) and follow the guidelines below.}}<br />
<br />
= Part I: Identify your card and appropriate Driver =<br />
<br />
==First steps==<br />
#Check to see whether the Linux kernel supports your hardware. You can find your card with 'lspci | grep -i net'. The [https://help.ubuntu.com/community/WifiDocs/WirelessCardsSupported Ubuntu Wiki] has an extensive list of wireless cards and whether or not they are supported by available linux kernel drivers.<br />
#*Check the [http://linux-wless.passys.nl/ Linux Wireless Support] page for your hardware or in The Linux Questions [http://www.linuxquestions.org/hcl/index.php?cat=10 hardware compatibility list] (HCL), which also has a good list of Linux-friendly hardware <br />
#*Also, [http://wireless.kernel.org/en/users/Devices this page] has a matrix of supported hardware.<br />
#If the hardware is supported only under Windows<br />
#*[http://ndiswrapper.sourceforge.net/wiki/index.php/List ndiswrapper] for hardware supported only under Windows (some Broadcom, 3com, etc)<br />
#*You will need the .inf and .sys files from your Windows driver - [http://ndiswrapper.sourceforge.net/mediawiki/index.php/List check here]<br />
#If your hardware is not listed anywhere<br />
#*Try a web search for the exact model name of your hardware with the word "linux" - and feel free to ask for help on [http://bbs.archlinux.org the forums]<br />
#*There is a chance that your hardware will not function under GNU/Linux (however, this is rarely the case)<br />
<br />
==How it Works==<br />
The Arch kernel is ''modular'', meaning many of the drivers for machine hardware reside on the hard drive and are available as ''modules''. At boot, udev takes an inventory of your hardware. Udev will load appropriate modules (drivers) for your corresponding hardware, and the driver, in turn, will allow creation of a kernel ''interface''. <br />
<br />
The interface name for different drivers and chipsets will vary. Some examples are wlan0, eth1, and ath0.<br />
<br />
*Note: Udev is not perfect. If the proper module is not loaded by udev on boot, simply modprobe it and add the module name to etc/rc.conf on the '''MODULES=''' line.<br />
<br />
==Installation==<br />
<br />
===If you have wired internet available===<br />
If you have wired ethernet available, and are simply adding wireless functionality to an existing system, and did not include wireless_tools during initial installation, use pacman to install:<br />
# pacman -S wireless_tools<br />
The drivers' corresponding package names are all highlighted in '''bold''' on this page. The packages can be installed during initial package selection on the Arch installation media and can also be installed later with pacman, e.g.:<br />
# pacman -S madwifi<br />
<br />
===If you have only wireless internet available===<br />
The '''wireless_tools''' package is now available as part of the base system and is also on the live installation media (CD/USB stick image) under the '''base-devel''' category. <br />
<br />
You cannot initialize wireless hardware without these userspace tools, so ensure they are installed from the installer media, (during package selection), especially if you have no other means of networking other than wirelessly. Otherwise, you will be stuck in a recursion when you reboot your newly installed Arch system; you will need wireless_tools and drivers, but in order to get them, you will need wireless_tools and drivers.<br />
<br />
==Drivers and Firmware==<br />
Methods and procedures for installing drivers for various chipsets are covered below. In addition, certain chipsets require the installation of corresponding ''firmware''. (Also covered below).<br />
<br />
===wlan-ng===<br />
Packages: '''wlan-ng26-utils'''<br />
<br />
This driver support PRISM based cards, which are hard to find now. The PRISM card is an IEEE 802.11 compliant 2.4 GHz DSSS WLAN network interface card that uses the Intersil PRISM chipset for its radio functions and the AMD PCNet-Mobile chip (AM79C930) for its Media Access Controller (MAC) function. The supported adapters can be found from here: http://www.linux-wlan.org/docs/wlan_adapters.html.gz<br />
<br />
For wlan-ng you do not need the wireless_tools package as mentioned above. Instead you will need to learn the tools in the wlan-ng26-utils package: '''wlancfg and wlanctl-ng'''.<br />
<br />
See http://www.linux-wlan.org/<br />
<br />
===rt2860 and rt2870===<br />
In kernel since 2.6.29 and requires no extra packages. It can be configured using the standard wpa_supplicant and iwconfig tools.<br />
<br />
It has a wide range of options that can be configured with iwpriv. These are documented in the [http://www.ralinktech.com/ralink/Home/Support/Linux.html source tarballs] available from Ralink<br />
<br />
For rt2870sta, also see [[Rt2870]]<br />
<br />
<br />
===rtl8180===<br />
Realtek rtl8180 PCI/Cardbus 802.11b now fully supported in the kernel. It can be configured using the standard wpa_supplicant and iwconfig tools.<br />
<br />
<br />
===rt2x00===<br />
Unified driver for Ralink chipsets (replaces rt2500,rt61,rt73 etc). In kernel since 2.6.24, some devices require extra firmware. It can be configured using the standard wpa_supplicant and iwconfig tools.<br />
<br />
Some chips require a firmware file, which can be installed as follows, depending on the chipset: <br />
<pre>pacman -S rt2x00-rt71w-fw</pre><br />
<pre>pacman -S rt2x00-rt61-fw</pre><br />
<br />
See the [[Using_the_new_rt2x00_beta_driver|rt2x00 wiki page]].<br />
<br />
===rt2500, rt61, rt73 (obsolete)===<br />
For Ralink's <br />
* PCI/PCMCIA based rt2500 series chipsets.<br />
* PCI/PCMCIA based rt61 series chipsets<br />
* USB based rt73 series chipsets. <br />
<br />
Drivers are now '''obsolete''' and '''unsupported'''. The rt2x00 driver family is stable and to be used instead.<br />
<br />
Support standard iwconfig tools for unencrypted and WEP connections, although it can be quite sensitive to the order of commands.<br />
The driver does support WPA (using hardware encryption), but in a non-standard way. wpa_supplicant appears to include special support for this driver, and it is also possible to negotiate a WPA connection manually using iwpriv commands.<br />
See [http://rt2400.cvs.sourceforge.net/*checkout*/rt2400/source/rt2500/Module/iwpriv_usage.txt these instructions] for details.<br />
<br />
<br />
===madwifi===<br />
<br />
Package: '''madwifi'''<br />
<br />
The module is called <tt>ath_pci</tt>. The newer module, ath5k, will eventually phase out ath_pci.<br />
modprobe ath_pci<br />
for the older driver, or:<br />
modprobe ath5k<br />
for the development version. Note that not all cards work with ath5k yet.<br />
<br />
If using ath_pci, you may need to blacklist ath5k by adding it to the MODULES= array in /etc/rc.conf, and subsequently prefixing it with a bang (!):<br />
MODULES=(!ath5k forcedeth snd_intel8x0 ... ...)<br />
<br />
'''Some users may need to use the countrycode option when loading the MadWifi driver in order to use channels and transmit power settings that are legal in their country/region.''' In the Netherlands, for example, you would load the module like this:<br />
<br />
modprobe ath_pci countrycode=528<br />
<br />
You can verify the settings with the <tt>iwlist</tt> command. See <tt>man iwlist</tt> and the [http://madwifi-project.org/wiki/UserDocs/CountryCode CountryCode page on the MadWifi wiki]. To have this setting automatically applied during boot, add the following to <tt>/etc/modprobe.d/modprobe.conf</tt>:<br />
<br />
{{Note | The new module-init-tools 3.8 package changes the location of the configuration file: /etc/modprobe.conf is no longer read, instead /etc/modprobe.d/modprobe.conf is used. [http://www.archlinux.org/news/450/ link]}}<br />
<br />
options ath_pci countrycode=528<br />
<br />
ATTENTION: I had to remove the countrycode option completely or the ath0 device wasn't created (andyrtr, kernel 2.6.21)!<br />
<br />
===ath9k===<br />
<br />
ath9k is Atheros' officially supported driver for the newer 11n chipsets. All of the chips with 11n capabilities are supported, with a maximum throughput around 180 Mbps. To see a complete list of supported hardware, check this [http://wireless.kernel.org/en/users/Drivers/ath9k page].<br />
<br />
Working modes: Station, AP and Adhoc.<br />
<br />
ath9k has been part of the kernel as of 2.6.27. But it has undergone some heavy development, and the changes haven't propagated to the mainline kernel tree yet.<br />
The best solution would be to use the [http://wireless.kernel.org/en/users/Download compat-wireless] package for now.<br />
A [https://lists.ath9k.org/mailman/listinfo/ath9k-devel mailing list] exists for support and development related discussions.<br />
<br />
===ipw2100 and ipw2200===<br />
Fully supported in the kernel, but requires additional firmware. It can be configured using the standard wpa_supplicant and iwconfig tools.<br />
<br />
Depending on which of the chips you have, use either:<br />
<br />
'''ipw2100-fw'''<br />
pacman -S ipw2100-fw<br />
<br />
or:<br />
<br />
'''ipw2200-fw'''<br />
pacman -S ipw2200-fw<br />
<br />
If installing after initial Arch installation, the module may need to be reloaded for the firmware to be loaded; run the following as root:<br />
<br />
rmmod ipw2200<br />
modprobe ipw2200<br />
<br />
====Enabling the radiotap interface====<br />
Launch the following (as root):<br />
<br />
rmmod ipw2200<br />
modprobe ipw2200 rtap_iface=1<br />
<br />
====Enabling the LED====<br />
Most laptops will have a front LED to indicate when the wireless is connected (or not). Run the following (as root) to enable this feature:<br />
<br />
echo "options ipw2200 led=1" >> /etc/modprobe.d/ipw2200.conf<br />
<br />
''or if using sudo:''<br />
<br />
echo "options ipw2200 led=1" | sudo tee -a /etc/modprobe.d/ipw2200.conf<br />
<br />
===iwl3945, iwl4965 and iwl5000-series===<br />
<br />
'''I'''ntel's open source '''W'''iFi drivers for '''L'''inux (See [http://intellinuxwireless.org iwlwifi]) will work for both the 3945 and 4965 chipsets since kernel v2.6.24. And iwl5000-series chipsets (including 5100BG, 5100ABG, 5100AGN, 5300AGN and 5350AGN) module has been supported since '''kernel 2.6.27''', by the intree driver '''iwlagn'''.<br />
<br />
{{Box Note | You must install the '''firmware''' that corresponds to your chipset. }}<br />
<br />
# pacman -S iwlwifi-3945-ucode<br />
or:<br />
# pacman -S iwlwifi-4965-ucode<br />
or:<br />
# pacman -S iwlwifi-5000-ucode<br />
<br />
If MOD_AUTOLOAD is set to yes in /etc/rc.conf (it is by default) that should be all that's required. Simply check for the presence of the drivers by running '''ifconfig -a''' from a terminal. There should be a listing for wlan0.<br />
<br />
To manually load the driver at startup, edit <tt>/etc/rc.conf</tt> as root and add '''iwl3945''' or '''iwl4965''' respectively to the MODULES array. For example:<br />
<br />
MODULES=( ... b44 mii '''iwl3945''' snd-mixer-oss ...)<br />
<br />
The drivers should now load after a reboot, and running '''ifconfig -a''' from a terminal should report '''wlan0''' as a new network interface.<br />
<br />
'''Other Notes'''<br />
* The windows NETw4x32 driver can be used with ndiswrapper as an alternative to the iwl3945 and ipw3945 drivers<br />
* In some cases (specifically a [[Dell Latitude D620]] with Arch 2008.06, though it could happen elsewhere) after installation you may have both iwl3945 and ipw3945 in your <tt>MODULES=()</tt> section of rc.conf. The card will not work with both modules loaded, so you will have to ! out the ipw3945 module and then reboot or remove the module manually before you can use your wireless card.<br />
* By default iwl3945 is configured to only work with networks on channels 1-11. Higher ranges are not allowed in some parts of the world (US). In the EU however channels 12 and 13 are used quite common. To make iwl3945 scan for all channels, add "options cfg80211 ieee80211_regdom=EU" to /etc/modprobe.d/options. With "iwlist f" you can check which channels are allowed.<br />
* If you want to enable more channels on Intel Wifi 5100 (and quite possible other cards too) you can do that with the crda package. After install, edit /etc/conf.d/wireless-regdom and uncomment the line where your country code is found. Add wireless-regdom to your DAEMONS in rc.conf and restart (which is the easiest thing to do). You should now, when writing sudo iwlist wlan0 channel, have access to more channels (depending on your location).<br />
<br />
===ipw3945 (obsolete)===<br />
{{Box Note | ''The ipw3945 driver is no longer actively developed, and the iwlwifi driver (described above) should work perfectly, but may conflict with the former one. So, only one of them should be installed. If you choose to use the iwlwifi driver you still do need the '''ipw3945-ucode''' package though.''}}<br />
# pacman -S ipw3945 ipw3945-ucode ipw3945d<br />
To initialize the driver on startup, edit <tt>/etc/rc.conf</tt> as root and add '''ipw3945''' to the MODULES array and '''ipw3945d''' to the DAEMONS array. For example:<br />
<br />
MODULES=(... mii '''ipw3945''' snd-mixer-oss ...)<br />
<br />
DAEMONS=(syslog-ng '''ipw3945d''' network ...)<br />
<br />
'''Note:''' The '''ipw3945d''' daemon ''must'' be inserted BEFORE network and dhcdbd/networkmanager in the array.<br />
<br />
===orinoco===<br />
This should be part of the kernel package and be installed already.<br />
<br />
Note: Some orinoco chipsets are Hermes I/II. You can use http://aur.archlinux.org/packages.php?ID=9637 to replace the orinoco driver and gain WPA support. See http://ubuntuforums.org/showthread.php?p=2154534#post2154534 for more information.<br />
<br />
To use the driver I blacklisted orinoco_cs in rc.conf (!orinoco_cs in the modules array) and added wlags49_h1_cs to the modules array. Example:<br />
<br />
<pre>MODULES=(!snd_pcsp !eepro100 !orinoco_cs wlags49_h1_cs)</pre><br />
<br />
===ndiswrapper===<br />
Ndiswrapper is not a real driver, but you can use it when there are no native Linux drivers for your wireless chips. So it is very useful in some situations. To use it you need the *.inf file from your Windows driver (the *.sys file must also be present in the same directory). If you need to extract these files from an *.exe file, you can use either cabextract or wine. ndiswrapper is included on the installation CD.<br />
<br />
Follow these steps to configure ndiswrapper.<br />
<pre>ndiswrapper -i filename.inf<br />
ndiswrapper -l<br />
ndiswrapper -m<br />
depmod -a</pre><br />
<br />
Now the ndiswrapper install is almost finished; you just have to update /etc/rc.conf to load the module at boot (below is a sample of my config; yours might look slightly different):<br />
<br />
<pre>MODULES=(ndiswrapper snd-intel8x0 !usbserial)</pre><br />
<br />
The important part is making sure that ndiswrapper exists on this line, so just add it alongside the other modules. It would be best to test that ndiswrapper will load now, so:<br />
<br />
<pre>modprobe ndiswrapper<br />
iwconfig</pre><br />
<br />
and wlan0 should exist. Check this page if you're having problems:<br />
[http://ndiswrapper.sourceforge.net/joomla/index.php?/component/option,com_openwiki/Itemid,33/id,installation/ Ndiswrapper installation wiki].<br />
<br />
===prism54===<br />
Download the firmware driver for your appropriate card from [http://www.prism54.org/ this site]. Rename the firmware file to 'isl3890'.<br />
If nonexistent, create the directory /lib/firmware and place the file 'isl3890' in it. This should do the trick. ([http://bbs.archlinux.org/viewtopic.php?t=16569&start=0&postdays=0&postorder=asc&highlight=siocsifflags+such+file++directory forum source])<br />
<br />
If that didn't work, try this:<br />
<br />
*Reload the prism module (modprobe p54usb or modprobe p54pci, depending on your hardware)<br />
alternatively remove your wifi card and then reconnect it<br />
*Use the "dmesg" command, and look at the end of the output it prints out.<br />
Look for a section looking like this: <br />
<br />
firmware: requesting '''isl3887usb_bare'''<br />
p54: LM86 firmware<br />
p54: FW rev 2.5.8.0 - Softmac protocol 3.0<br />
<br />
and try renaming the firmware file to the name corresponding to the part bolded here.<br />
<br />
===ACX100/111===<br />
packages: tiacx tiacx-firmware<br />
<br />
The driver should tell you which firmware it needs; check /var/log/messages.log or use the dmesg command.<br />
<br />
Move the appropriate firmware to '/lib/firmware'. I did this:<br />
ln -s /usr/share/tiacx/acx111_2.3.1.31/tiacx111c16 /lib/firmware<br />
<br />
For another way to determine which firmware revision number to use, see the [http://acx100.sourceforge.net/wiki/Firmware "Which firmware" section of the acx100.sourceforge wiki page] page. For ACX100, you can follow the links provided there, to a table of card model number vs. "firmware files known to work"; you can figure out the rev. number you need, by looking at the suffix there. E.g. a dlink_dwl650+ uses "1.9.8.b", in which case you'd do this:<br />
ln -s /usr/share/tiacx/acx100_1.9.8.b/* /lib/firmware<br />
<br />
Hint: If you find that the driver is spamming your kernel log, for example because you're running Kismet with channel-hopping, you could put this in /etc/modprobe.d/modprobe.conf:<br />
options acx debug=0<br />
<br />
'''NOTE:''' The open-source acx driver does not support WPA/RSN encryption. NDISWRAPPER will have to be used with the windows driver to enable the enhanced encryption. See ndiswrapper, this page, for more details.<br />
<br />
===BCM43XX===<br />
Broadcom users that have 43xx series chipsets have a new alternative to ndiswrapper. In kernel version 2.6.17, the bcm43xx driver was introduced.<br />
<br />
#Run <pre>iwconfig</pre> or <pre>hwd -s</pre> to determine that you have an appropriate card. My output of hwd -s looked like this: <pre>Network : Broadcom Corp.|BCM94306 802.11g NIC module: unknown</pre><br />
For a list of supported devices, see [http://bcm43xx.berlios.de/?go=devices here].<br />
#Run <pre>pacman -Sy b43-fwcutter</pre> to install the firmware cutter application.<br />
#Download the Windows driver file for your card from which to extract the firmware.<br />
#If you download the driver from Dell's website, you must run in on a Windows machine or under WINE (it is a .exe file that extracts itself to C:\Dell\[driver numbers]). Or you may try [http://downloads.openwrt.org/sources/wl_apsta-3.130.20.0.o], [http://freewebs.com/ronserver/bcm43xx.tar.gz] or [http://xeve.de/down/wl_apsta.o]. I just saved this file to my desktop; you won't need it after the next step.<br />
#Run <pre>bcm43xx-fwcutter -w /lib/firmware /home/&lt;user&gt;/Desktop/wl_apsta.o</pre> You may have to create /lib/firmware first.<br />
#Restart, and configure your device as normal. You may want to add bcm43xx into the modules section of your rc.conf file. Good luck!<br />
<br />
===b43===<br />
This driver is the successor to the bcm43xx driver, and is included in kernel 2.6.24.<br />
<br />
#Run <pre>lspci</pre> to determine that you have an appropriate card. My output of looked like this: <pre>0c:00.0 Network controller: Broadcom Corporation BCM4311 802.11b/g WLAN (rev 01)</pre><br />
For a list of supported devices, see [http://linuxwireless.org/en/users/Drivers/b43/devices here].<br />
<br />
Either install the "b43-firmware" package from [http://aur.archlinux.org/packages.php?ID=21690 AUR], or perform the following steps manually.<br />
#Install the firmware cutter application from core. It is named "b43-fwcutter".<br />
#Because now in core we have kernel >=2.6.25 we download version 4.150.10.5 of Broadcom's proprietary driver. The older version(4.80.53.0) will be drop in july. <pre>wget http://mirror2.openwrt.org/sources/broadcom-wl-4.150.10.5.tar.bz2</pre><br />
#Unpack the compressed file.<pre>tar xjf broadcom-wl-4.150.10.5.tar.bz2</pre><br />
#Change the current directory to the newly created directory, and then further to the driver folder: <pre>cd broadcom-wl-4.150.10.5/driver</pre><br />
#Create /lib/firmware if you don't have and then Run <pre>b43-fwcutter -w "/lib/firmware/" wl_apsta_mimo.o</pre> <br />
#Restart, and configure your device as normal.<br />
You may want to add b43 into the modules section of your rc.conf file.<pre>MODULES=(...b43 !bcm43xx !ndiswrapper...)</pre><br />
Good luck!<br />
<br />
===broadcom-wl===<br />
For recent Broadcom 43xx cards not supported by bcm43xx or b43. Not just for 4312 cards. See the [[Broadcom_BCM4312|Broadcom 4312 wiki page]]. It is available in [http://aur.archlinux.org/packages.php?ID=19514 AUR]. These chipsets are used in most Dell laptops, among others.<br />
<br />
===rtl8187===<br />
See the [[Rtl8187_wireless|rtl8187 wiki page]].<br />
<br />
===zd1211rw===<br />
[http://zd1211.wiki.sourceforge.net/ zd1211rw] is a driver for the ZyDAS ZD1211 802.11b/g USB WLAN chipset and it is included in recent versions of the Linux kernel. See [http://www.linuxwireless.org/en/users/Drivers/zd1211rw/devices] for a list of supported devices. You only need to install the firmware for the device: <pre>pacman -Sy zd1211-firmware</pre><br />
--[[User:Willey|Willey]] 22:32, 20 September 2008 (EDT)<br />
<br />
==Test Installation==<br />
After loading your driver run<br />
iwconfig<br />
and see if a wireless interface (wlan''x'', eth''x'', ath''x'') is recognized<br />
<br />
If <code>iwlist scan</code> displays <code>Interface doesn't support scanning</code> then you probably forgot to install the firmware.<br />
<br />
= Part II: Wireless Management =<br />
<br />
Assuming that your drivers are installed and working properly, you will need to choose a method for managing your wireless connections. The following subsections will help you decide the best way to do just that.<br />
<br />
Procedure and tools you’ll need will depend on several factors:<br />
* The '''easiness of configuration management''', from a completely manual setup procedure that you’ll need to repeat at each boot to a software-managed, automatic, autostarting solution<br />
* The '''encryption type''' (or not) that protects the wireless network<br />
* If you need '''network profiles''', i.e. if your computer will frequently change networks (such as a laptop)<br />
<br />
== Management methods ==<br />
<br />
This table shows the different methods that can be used to activate and manage a wireless network connection, depending on the encryption and management types, and the various tools that are required. Although there may be other possibilities, these are the most frequently used:<br />
{| border="1"<br />
! Management || No encryption/WEP || WPA/WPA2 PSK<br />
|-<br />
| Manual, need to repeat at each computer reboot || <code>ifconfig + iwconfig + dhcpcd/ifconfig</code> || <code>ifconfig + iwconfig + wpa_supplicant + dhcpcd/ifconfig</code><br />
|-<br />
| Automatically managed, centralized without network profile support || define interface in <code>/etc/rc.conf</code> || not covered<br />
|-<br />
| Automatically managed, with network profiles support || colspan="2" align="center" | <code>Netcfg, wicd, NetworkManager, etc…</code><br />
|}<br />
<br />
<br />
Whatever your choice, you should try to connect using the manual method first. This will help you understand the different steps that are required and debug them in case a problem arose. Another tip: if possible (e.g. if you admin your wifi access point), try connecting with no encryption, to check everything works. Then try using encryption, either WEP (simpler to configure) or WPA.<br />
<br />
=== Manual setup ===<br />
<br />
The programs provided by the package '''wireless_tools''' are the basic set of tools to set up a wireless network. Moreover, if you use WPA/WPA2 encryption, you will need the package '''wpa_supplicant'''. These powerful userspace console tools work extremely well and allow complete, manual control from the shell.<br />
<br />
These examples assume your wireless device is <code>wlan0</code>. Replace <code>wlan0</code> with the appropriate device name.<br />
{{Box Note | Depending on your hardware and encryption type, some of these steps may not be necessary. Some cards are known to require interface activation and/or access point scanning before being associated to an access point and being given an IP address. Some experimentation may be required. For instance, WPA/WPA2 users may directly try to activate their wireless network from step 3.}}<br />
<br />
1. ''(Optional, may be required)'' Some cards require that the kernel interface be activated before you can use the wireless_tools:<br />
# ifconfig wlan0 up<br />
<br />
2. ''(Optional, may be required)'' See what access points are available:<br />
# iwlist wlan0 scan<br />
We assume you want to use the essid named <code>MyEssid</code>.<br />
<br />
3. Depending on the encryption, you need to associate your wireless device with the access point to use and pass the encryption key.<br />
* ''No encryption''<br />
# iwconfig wlan0 essid "MyEssid"<br />
* ''WEP''<br />
using an hexadecimal key:<br />
# iwconfig wlan0 essid "MyEssid" key 1234567890<br />
using an ascii key:<br />
# iwconfig wlan0 essid "MyEssid" key s:asciikey<br />
* ''WPA/WPA2''<br />
You need to edit the <code>/etc/wpa_supplicant.conf</code> file as described in [[WPA_Supplicant]]. Then, issue this command:<br />
# wpa_supplicant -B -Dwext -i wlan0 -c /etc/wpa_supplicant.conf<br />
This is assuming your device uses the <code>wext</code> driver. If this does not work, you may need to adjust these options. Check [[WPA_Supplicant]] for more information and troubleshooting.<br />
<br />
4. Finally, provide an IP address to the network interface. Simple examples are:<br />
# dhcpcd wlan0<br />
for DHCP, or<br />
# ifconfig wlan0 192.168.0.2<br />
# route add default gw 192.168.0.1<br />
for static IP.<br />
<br />
{{Box Note | Although the manual configuration method will help troubleshoot wireless problems, you will have to retype every command each time you reboot.}}<br />
<br />
=== Automatic connection - Network daemon ===<br />
<br />
{{Box Note | This method and configuration examples are only valid for unencrypted or WEP-encrypted networks, which are particularly unsecure. To use WPA/WPA2, you'll need to use other solutions such as such as '''[[netcfg]]''' or '''[[wicd]]'''. Also, avoid mixing these methods as they may create a conflict and prevent the wireless card from functioning.}}<br />
<br />
* The '''/etc/rc.conf''' file is sourced by the network script. Therefore, you may define and configure a simple wireless setup within /etc/rc.conf for a centralized approach with '''wlan_<interface>="<interface> essid <essid>"''' and '''INTERFACES=(<interface1> <interface2>)'''. The name of the network goes in place of '''MyEssid'''.<br />
<br />
For example:<br />
# /etc/rc.conf<br />
eth0="dhcp"<br />
wlan0="dhcp"<br />
wlan_wlan0="wlan0 essid MyEssid" # Unencrypted<br />
#wlan_wlan0="wlan0 essid MyEssid key 1234567890" # hex WEP key<br />
#wlan_wlan0="wlan0 essid MyEssid key s:asciikey" # ascii WEP key<br />
INTERFACES=(eth0 wlan0)<br />
<br />
Not all wireless cards are <code>wlan0</code>. Determine your wireless interface with ifconfig -a. <br />
Atheros-based cards, for example, are typically <code>ath0</code>, so change <code>wlan_wlan0</code> to:<br />
wlan_ath0="ath0 essid MyEssid key 12345678" <br />
Also define ath0 in the INTERFACES= line.)<br />
<br />
* Alternatively, you may define wlan_<interface> within /etc/conf.d/wireless, (which is also sourced by the network script), for a de-centralized approach: <br />
# /etc/conf.d/wireless<br />
wlan_wlan0="wlan0 essid MyEssid"<br />
<br />
{{Box Note | These solutions are limited: for a laptop which is always on the move it would be good to have multiple [[network profiles]] and be able to easily switch from one to another. That's the aim of network managers, such as '''[[netcfg]]'''.}}<br />
<br />
=== Automatic connection - [[Network Profiles|netcfg]] ===<br />
<br />
[[Network Profiles|netcfg]] provides a '''versatile, robust and fast''' solution to networking on Arch.<br />
<br />
It uses a profile based setup and is capable of detection and connection to a wide range of network types. This is no harder than using graphical tools. Following the directions above, you can get a list of wireless networks. Then, as with graphical tools, you will need a password.<br />
<br />
''Detailed documentation [[Network Profiles]]''<br />
<br />
''Notes for developmental version [[Network Profiles development]]''<br />
<br />
<br />
<br />
=== Other network managers ===<br />
<br />
There are a number of wireless management solutions available to Arch Linux users as an alternative to the above.<br />
<br />
====Autowifi====<br />
Autowifi is a daemon that configures your wireless network automatically depending on the ESSID. Once configured, no user interaction is necessary and no GUI tools are required.<br />
<br />
For more information, see the [[Autowifi]] wiki.<br />
====Wicd====<br />
Wicd is a network manager that can handle both wireless and wired connections. It is written in Python and Gtk with fewer dependencies than NetworkManager, making it an ideal solution for lightweight desktop users. Wicd is now available in the extra repository for both i686 and x86_64.<br />
<br />
For more information, see the [[Wicd]] wiki.<br />
====NetworkManager====<br />
NetworkManager is an advanced network management tool that is enabled by default in most popular Linux distributions. In addition to managing wired connections, NetworkManager provides worry-free wireless roaming with an easy-to-use GUI program for selecting your desired network. <br />
<br />
For more information, see the [[NetworkManager]] wiki.<br />
<br />
====Wifi Radar====<br />
WiFi Radar is Python/PyGTK2 utility for managing wireless profiles (and ''only'' wireless). It enables you to scan for available networks and create profiles for your preferred networks.<br />
<br />
For more information, see the [[Wifi Radar]] wiki.<br />
<br />
====Wlassistant====<br />
Wlassistant is a very intuitive and straightforward GUI app for managing your wireless connections. <br />
<br />
Install with:<br />
# pacman -S wlassistant<br />
Wlassistant must be run with root privileges:<br />
# sudo wlassistant<br />
One method of using wlassistant is to configure your wireless card within /etc/rc.conf, specifying the access point you use most often. On startup, your card will automatically be configured for this essid, but if other wireless networks are needed/available, wlassistant can then be invoked to access them. Background the network daemon in /etc/rc.conf, by prefixing it with a @, to avoid boot delays.<br />
<br />
= See Also =<br />
*[[Sharing ppp connection with wlan interface]]<br />
<br />
= Additional Resources =<br />
*[http://www.gnome.org/projects/NetworkManager/ NetworkManager] - The official website for NetworkManager<br />
*[http://wicd.sourceforge.net/ WICD] - The official website for WICD<br />
*[https://lists.anl.gov/mailman/listinfo/wifi-radar Wifi Radar] - Wifi Radar information page<br />
*[http://www.hpl.hp.com/personal/Jean_Tourrilhes/Linux/Wireless.html An overly wordy howto that rarely helps]<br />
*[http://madwifi.org/wiki/UserDocs/FirstTimeHowTo The madwifi project's method of installing, good if you're having trouble doing it the Arch way]</div>Gladstonehttps://wiki.archlinux.org/index.php?title=Network_configuration/Wireless&diff=71759Network configuration/Wireless2009-07-08T19:14:33Z<p>Gladstone: /* ipw2100 and ipw2200 */ -- added LED enabling</p>
<hr />
<div>[[Category:Communication and network (English)]]<br />
[[Category:Networking (English)]]<br />
[[Category:HOWTOs (English)]]<br />
<br />
{{i18n_links_start}}<br />
{{i18n_entry|English|Wireless_Setup}}<br />
{{i18n_entry|Español|Wireless_Setup_(Español)}}<br />
{{i18n_entry|Italiano|Configurazione_Wireless}}<br />
{{i18n_entry|Nederlands|Draadloze_Configuratie}}<br />
{{i18n_entry|Deutsch|Drahtlos_Installation}}<br />
{{i18n_entry|简体中文|无线设置}}<br />
{{i18n_entry|Russian|Wireless_Setup_(Русский)}}<br />
{{i18n_entry|Türkçe|Kablosuz Bağlantı}}<br />
{{i18n_links_end}}<br />
<br />
= Introduction =<br />
<br />
Configuring wireless under Arch Linux (or any distro for that matter) is a two-part process. The first part is to identify and ensure the correct driver for your wireless device is installed, (they are available on the installation media, so make sure you install them) and configure the interface. The second is choosing a method of managing wireless connections. This article covers both parts, and provides additional links to wireless management tools.<br />
<br />
{{Box Note | The wireless drivers and tools are available on the installation media under the '''base-devel''' category. (Be sure to install the proper driver for your card). Udev will usually load the appropriate module, thereby creating the wireless interface, from the initial live system of the installer, as well as the newly installed system on your hard drive. If you are configuring your wireless functionality after, and not during, Arch installation, simply ensure the required packages are installed with pacman, (driver, firmware if needed, wireless_tools) and follow the guidelines below.}}<br />
<br />
= Part I: Identify your card and appropriate Driver =<br />
<br />
==First steps==<br />
#Check to see whether the Linux kernel supports your hardware. You can find your card with 'lspci | grep -i net'. The [https://help.ubuntu.com/community/WifiDocs/WirelessCardsSupported Ubuntu Wiki] has an extensive list of wireless cards and whether or not they are supported by available linux kernel drivers.<br />
#*Check the [http://linux-wless.passys.nl/ Linux Wireless Support] page for your hardware or in The Linux Questions [http://www.linuxquestions.org/hcl/index.php?cat=10 hardware compatibility list] (HCL), which also has a good list of Linux-friendly hardware <br />
#*Also, [http://wireless.kernel.org/en/users/Devices this page] has a matrix of supported hardware.<br />
#If the hardware is supported only under Windows<br />
#*[http://ndiswrapper.sourceforge.net/wiki/index.php/List ndiswrapper] for hardware supported only under Windows (some Broadcom, 3com, etc)<br />
#*You will need the .inf and .sys files from your Windows driver - [http://ndiswrapper.sourceforge.net/mediawiki/index.php/List check here]<br />
#If your hardware is not listed anywhere<br />
#*Try a web search for the exact model name of your hardware with the word "linux" - and feel free to ask for help on [http://bbs.archlinux.org the forums]<br />
#*There is a chance that your hardware will not function under GNU/Linux (however, this is rarely the case)<br />
<br />
==How it Works==<br />
The Arch kernel is ''modular'', meaning many of the drivers for machine hardware reside on the hard drive and are available as ''modules''. At boot, udev takes an inventory of your hardware. Udev will load appropriate modules (drivers) for your corresponding hardware, and the driver, in turn, will allow creation of a kernel ''interface''. <br />
<br />
The interface name for different drivers and chipsets will vary. Some examples are wlan0, eth1, and ath0.<br />
<br />
*Note: Udev is not perfect. If the proper module is not loaded by udev on boot, simply modprobe it and add the module name to etc/rc.conf on the '''MODULES=''' line.<br />
<br />
==Installation==<br />
<br />
===If you have wired internet available===<br />
If you have wired ethernet available, and are simply adding wireless functionality to an existing system, and did not include wireless_tools during initial installation, use pacman to install:<br />
# pacman -S wireless_tools<br />
The drivers' corresponding package names are all highlighted in '''bold''' on this page. The packages can be installed during initial package selection on the Arch installation media and can also be installed later with pacman, e.g.:<br />
# pacman -S madwifi<br />
<br />
===If you have only wireless internet available===<br />
The '''wireless_tools''' package is now available as part of the base system and is also on the live installation media (CD/USB stick image) under the '''base-devel''' category. <br />
<br />
You cannot initialize wireless hardware without these userspace tools, so ensure they are installed from the installer media, (during package selection), especially if you have no other means of networking other than wirelessly. Otherwise, you will be stuck in a recursion when you reboot your newly installed Arch system; you will need wireless_tools and drivers, but in order to get them, you will need wireless_tools and drivers.<br />
<br />
==Drivers and Firmware==<br />
Methods and procedures for installing drivers for various chipsets are covered below. In addition, certain chipsets require the installation of corresponding ''firmware''. (Also covered below).<br />
<br />
===wlan-ng===<br />
Packages: '''wlan-ng26-utils'''<br />
<br />
This driver support PRISM based cards, which are hard to find now. The PRISM card is an IEEE 802.11 compliant 2.4 GHz DSSS WLAN network interface card that uses the Intersil PRISM chipset for its radio functions and the AMD PCNet-Mobile chip (AM79C930) for its Media Access Controller (MAC) function. The supported adapters can be found from here: http://www.linux-wlan.org/docs/wlan_adapters.html.gz<br />
<br />
For wlan-ng you do not need the wireless_tools package as mentioned above. Instead you will need to learn the tools in the wlan-ng26-utils package: '''wlancfg and wlanctl-ng'''.<br />
<br />
See http://www.linux-wlan.org/<br />
<br />
===rt2860 and rt2870===<br />
In kernel since 2.6.29 and requires no extra packages. It can be configured using the standard wpa_supplicant and iwconfig tools.<br />
<br />
It has a wide range of options that can be configured with iwpriv. These are documented in the [http://www.ralinktech.com/ralink/Home/Support/Linux.html source tarballs] available from Ralink<br />
<br />
For rt2870sta, also see [[Rt2870]]<br />
<br />
<br />
===rtl8180===<br />
Realtek rtl8180 PCI/Cardbus 802.11b now fully supported in the kernel. It can be configured using the standard wpa_supplicant and iwconfig tools.<br />
<br />
<br />
===rt2x00===<br />
Unified driver for Ralink chipsets (replaces rt2500,rt61,rt73 etc). In kernel since 2.6.24, some devices require extra firmware. It can be configured using the standard wpa_supplicant and iwconfig tools.<br />
<br />
Some chips require a firmware file, which can be installed as follows, depending on the chipset: <br />
<pre>pacman -S rt2x00-rt71w-fw</pre><br />
<pre>pacman -S rt2x00-rt61-fw</pre><br />
<br />
See the [[Using_the_new_rt2x00_beta_driver|rt2x00 wiki page]].<br />
<br />
===rt2500, rt61, rt73 (obsolete)===<br />
For Ralink's <br />
* PCI/PCMCIA based rt2500 series chipsets.<br />
* PCI/PCMCIA based rt61 series chipsets<br />
* USB based rt73 series chipsets. <br />
<br />
Drivers are now '''obsolete''' and '''unsupported'''. The rt2x00 driver family is stable and to be used instead.<br />
<br />
Support standard iwconfig tools for unencrypted and WEP connections, although it can be quite sensitive to the order of commands.<br />
The driver does support WPA (using hardware encryption), but in a non-standard way. wpa_supplicant appears to include special support for this driver, and it is also possible to negotiate a WPA connection manually using iwpriv commands.<br />
See [http://rt2400.cvs.sourceforge.net/*checkout*/rt2400/source/rt2500/Module/iwpriv_usage.txt these instructions] for details.<br />
<br />
<br />
===madwifi===<br />
<br />
Package: '''madwifi'''<br />
<br />
The module is called <tt>ath_pci</tt>. The newer module, ath5k, will eventually phase out ath_pci.<br />
modprobe ath_pci<br />
for the older driver, or:<br />
modprobe ath5k<br />
for the development version. Note that not all cards work with ath5k yet.<br />
<br />
If using ath_pci, you may need to blacklist ath5k by adding it to the MODULES= array in /etc/rc.conf, and subsequently prefixing it with a bang (!):<br />
MODULES=(!ath5k forcedeth snd_intel8x0 ... ...)<br />
<br />
'''Some users may need to use the countrycode option when loading the MadWifi driver in order to use channels and transmit power settings that are legal in their country/region.''' In the Netherlands, for example, you would load the module like this:<br />
<br />
modprobe ath_pci countrycode=528<br />
<br />
You can verify the settings with the <tt>iwlist</tt> command. See <tt>man iwlist</tt> and the [http://madwifi-project.org/wiki/UserDocs/CountryCode CountryCode page on the MadWifi wiki]. To have this setting automatically applied during boot, add the following to <tt>/etc/modprobe.d/modprobe.conf</tt>:<br />
<br />
{{Note | The new module-init-tools 3.8 package changes the location of the configuration file: /etc/modprobe.conf is no longer read, instead /etc/modprobe.d/modprobe.conf is used. [http://www.archlinux.org/news/450/ link]}}<br />
<br />
options ath_pci countrycode=528<br />
<br />
ATTENTION: I had to remove the countrycode option completely or the ath0 device wasn't created (andyrtr, kernel 2.6.21)!<br />
<br />
===ath9k===<br />
<br />
ath9k is Atheros' officially supported driver for the newer 11n chipsets. All of the chips with 11n capabilities are supported, with a maximum throughput around 180 Mbps. To see a complete list of supported hardware, check this [http://wireless.kernel.org/en/users/Drivers/ath9k page].<br />
<br />
Working modes: Station, AP and Adhoc.<br />
<br />
ath9k has been part of the kernel as of 2.6.27. But it has undergone some heavy development, and the changes haven't propagated to the mainline kernel tree yet.<br />
The best solution would be to use the [http://wireless.kernel.org/en/users/Download compat-wireless] package for now.<br />
A [https://lists.ath9k.org/mailman/listinfo/ath9k-devel mailing list] exists for support and development related discussions.<br />
<br />
===ipw2100 and ipw2200===<br />
Fully supported in the kernel, but requires additional firmware. It can be configured using the standard wpa_supplicant and iwconfig tools.<br />
<br />
Depending on which of the chips you have, use either:<br />
<br />
'''ipw2100-fw'''<br />
pacman -S ipw2100-fw<br />
<br />
or:<br />
<br />
'''ipw2200-fw'''<br />
pacman -S ipw2200-fw<br />
<br />
If installing after initial Arch installation, the module may need to be reloaded for the firmware to be loaded; run the following as root:<br />
<br />
rmmod ipw2200<br />
modprobe ipw2200<br />
<br />
<br />
====Enabling the radiotap interface====<br />
Launch the following (as root):<br />
<br />
rmmod ipw2200<br />
modprobe ipw2200 rtap_iface=1<br />
<br />
<br />
====Enabling the LED====<br />
Most laptops will have a front LED to indicate when the wireless is connected (or not). Run the following (as root) to enable this feature:<br />
<br />
echo "options ipw2200 led=1" >> /etc/modprobe.d/ipw2200.conf<br />
<br />
''or if using sudo:''<br />
<br />
echo "options ipw2200 led=1" | sudo tee -a /etc/modprobe.d/ipw2200.conf<br />
<br />
===iwl3945, iwl4965 and iwl5000-series===<br />
<br />
'''I'''ntel's open source '''W'''iFi drivers for '''L'''inux (See [http://intellinuxwireless.org iwlwifi]) will work for both the 3945 and 4965 chipsets since kernel v2.6.24. And iwl5000-series chipsets (including 5100BG, 5100ABG, 5100AGN, 5300AGN and 5350AGN) module has been supported since '''kernel 2.6.27''', by the intree driver '''iwlagn'''.<br />
<br />
{{Box Note | You must install the '''firmware''' that corresponds to your chipset. }}<br />
<br />
# pacman -S iwlwifi-3945-ucode<br />
or:<br />
# pacman -S iwlwifi-4965-ucode<br />
or:<br />
# pacman -S iwlwifi-5000-ucode<br />
<br />
If MOD_AUTOLOAD is set to yes in /etc/rc.conf (it is by default) that should be all that's required. Simply check for the presence of the drivers by running '''ifconfig -a''' from a terminal. There should be a listing for wlan0.<br />
<br />
To manually load the driver at startup, edit <tt>/etc/rc.conf</tt> as root and add '''iwl3945''' or '''iwl4965''' respectively to the MODULES array. For example:<br />
<br />
MODULES=( ... b44 mii '''iwl3945''' snd-mixer-oss ...)<br />
<br />
The drivers should now load after a reboot, and running '''ifconfig -a''' from a terminal should report '''wlan0''' as a new network interface.<br />
<br />
'''Other Notes'''<br />
* The windows NETw4x32 driver can be used with ndiswrapper as an alternative to the iwl3945 and ipw3945 drivers<br />
* In some cases (specifically a [[Dell Latitude D620]] with Arch 2008.06, though it could happen elsewhere) after installation you may have both iwl3945 and ipw3945 in your <tt>MODULES=()</tt> section of rc.conf. The card will not work with both modules loaded, so you will have to ! out the ipw3945 module and then reboot or remove the module manually before you can use your wireless card.<br />
* By default iwl3945 is configured to only work with networks on channels 1-11. Higher ranges are not allowed in some parts of the world (US). In the EU however channels 12 and 13 are used quite common. To make iwl3945 scan for all channels, add "options cfg80211 ieee80211_regdom=EU" to /etc/modprobe.d/options. With "iwlist f" you can check which channels are allowed.<br />
* If you want to enable more channels on Intel Wifi 5100 (and quite possible other cards too) you can do that with the crda package. After install, edit /etc/conf.d/wireless-regdom and uncomment the line where your country code is found. Add wireless-regdom to your DAEMONS in rc.conf and restart (which is the easiest thing to do). You should now, when writing sudo iwlist wlan0 channel, have access to more channels (depending on your location).<br />
<br />
===ipw3945 (obsolete)===<br />
{{Box Note | ''The ipw3945 driver is no longer actively developed, and the iwlwifi driver (described above) should work perfectly, but may conflict with the former one. So, only one of them should be installed. If you choose to use the iwlwifi driver you still do need the '''ipw3945-ucode''' package though.''}}<br />
# pacman -S ipw3945 ipw3945-ucode ipw3945d<br />
To initialize the driver on startup, edit <tt>/etc/rc.conf</tt> as root and add '''ipw3945''' to the MODULES array and '''ipw3945d''' to the DAEMONS array. For example:<br />
<br />
MODULES=(... mii '''ipw3945''' snd-mixer-oss ...)<br />
<br />
DAEMONS=(syslog-ng '''ipw3945d''' network ...)<br />
<br />
'''Note:''' The '''ipw3945d''' daemon ''must'' be inserted BEFORE network and dhcdbd/networkmanager in the array.<br />
<br />
===orinoco===<br />
This should be part of the kernel package and be installed already.<br />
<br />
Note: Some orinoco chipsets are Hermes I/II. You can use http://aur.archlinux.org/packages.php?ID=9637 to replace the orinoco driver and gain WPA support. See http://ubuntuforums.org/showthread.php?p=2154534#post2154534 for more information.<br />
<br />
To use the driver I blacklisted orinoco_cs in rc.conf (!orinoco_cs in the modules array) and added wlags49_h1_cs to the modules array. Example:<br />
<br />
<pre>MODULES=(!snd_pcsp !eepro100 !orinoco_cs wlags49_h1_cs)</pre><br />
<br />
===ndiswrapper===<br />
Ndiswrapper is not a real driver, but you can use it when there are no native Linux drivers for your wireless chips. So it is very useful in some situations. To use it you need the *.inf file from your Windows driver (the *.sys file must also be present in the same directory). If you need to extract these files from an *.exe file, you can use either cabextract or wine. ndiswrapper is included on the installation CD.<br />
<br />
Follow these steps to configure ndiswrapper.<br />
<pre>ndiswrapper -i filename.inf<br />
ndiswrapper -l<br />
ndiswrapper -m<br />
depmod -a</pre><br />
<br />
Now the ndiswrapper install is almost finished; you just have to update /etc/rc.conf to load the module at boot (below is a sample of my config; yours might look slightly different):<br />
<br />
<pre>MODULES=(ndiswrapper snd-intel8x0 !usbserial)</pre><br />
<br />
The important part is making sure that ndiswrapper exists on this line, so just add it alongside the other modules. It would be best to test that ndiswrapper will load now, so:<br />
<br />
<pre>modprobe ndiswrapper<br />
iwconfig</pre><br />
<br />
and wlan0 should exist. Check this page if you're having problems:<br />
[http://ndiswrapper.sourceforge.net/joomla/index.php?/component/option,com_openwiki/Itemid,33/id,installation/ Ndiswrapper installation wiki].<br />
<br />
===prism54===<br />
Download the firmware driver for your appropriate card from [http://www.prism54.org/ this site]. Rename the firmware file to 'isl3890'.<br />
If nonexistent, create the directory /lib/firmware and place the file 'isl3890' in it. This should do the trick. ([http://bbs.archlinux.org/viewtopic.php?t=16569&start=0&postdays=0&postorder=asc&highlight=siocsifflags+such+file++directory forum source])<br />
<br />
If that didn't work, try this:<br />
<br />
*Reload the prism module (modprobe p54usb or modprobe p54pci, depending on your hardware)<br />
alternatively remove your wifi card and then reconnect it<br />
*Use the "dmesg" command, and look at the end of the output it prints out.<br />
Look for a section looking like this: <br />
<br />
firmware: requesting '''isl3887usb_bare'''<br />
p54: LM86 firmware<br />
p54: FW rev 2.5.8.0 - Softmac protocol 3.0<br />
<br />
and try renaming the firmware file to the name corresponding to the part bolded here.<br />
<br />
===ACX100/111===<br />
packages: tiacx tiacx-firmware<br />
<br />
The driver should tell you which firmware it needs; check /var/log/messages.log or use the dmesg command.<br />
<br />
Move the appropriate firmware to '/lib/firmware'. I did this:<br />
ln -s /usr/share/tiacx/acx111_2.3.1.31/tiacx111c16 /lib/firmware<br />
<br />
For another way to determine which firmware revision number to use, see the [http://acx100.sourceforge.net/wiki/Firmware "Which firmware" section of the acx100.sourceforge wiki page] page. For ACX100, you can follow the links provided there, to a table of card model number vs. "firmware files known to work"; you can figure out the rev. number you need, by looking at the suffix there. E.g. a dlink_dwl650+ uses "1.9.8.b", in which case you'd do this:<br />
ln -s /usr/share/tiacx/acx100_1.9.8.b/* /lib/firmware<br />
<br />
Hint: If you find that the driver is spamming your kernel log, for example because you're running Kismet with channel-hopping, you could put this in /etc/modprobe.d/modprobe.conf:<br />
options acx debug=0<br />
<br />
'''NOTE:''' The open-source acx driver does not support WPA/RSN encryption. NDISWRAPPER will have to be used with the windows driver to enable the enhanced encryption. See ndiswrapper, this page, for more details.<br />
<br />
===BCM43XX===<br />
Broadcom users that have 43xx series chipsets have a new alternative to ndiswrapper. In kernel version 2.6.17, the bcm43xx driver was introduced.<br />
<br />
#Run <pre>iwconfig</pre> or <pre>hwd -s</pre> to determine that you have an appropriate card. My output of hwd -s looked like this: <pre>Network : Broadcom Corp.|BCM94306 802.11g NIC module: unknown</pre><br />
For a list of supported devices, see [http://bcm43xx.berlios.de/?go=devices here].<br />
#Run <pre>pacman -Sy b43-fwcutter</pre> to install the firmware cutter application.<br />
#Download the Windows driver file for your card from which to extract the firmware.<br />
#If you download the driver from Dell's website, you must run in on a Windows machine or under WINE (it is a .exe file that extracts itself to C:\Dell\[driver numbers]). Or you may try [http://downloads.openwrt.org/sources/wl_apsta-3.130.20.0.o], [http://freewebs.com/ronserver/bcm43xx.tar.gz] or [http://xeve.de/down/wl_apsta.o]. I just saved this file to my desktop; you won't need it after the next step.<br />
#Run <pre>bcm43xx-fwcutter -w /lib/firmware /home/&lt;user&gt;/Desktop/wl_apsta.o</pre> You may have to create /lib/firmware first.<br />
#Restart, and configure your device as normal. You may want to add bcm43xx into the modules section of your rc.conf file. Good luck!<br />
<br />
===b43===<br />
This driver is the successor to the bcm43xx driver, and is included in kernel 2.6.24.<br />
<br />
#Run <pre>lspci</pre> to determine that you have an appropriate card. My output of looked like this: <pre>0c:00.0 Network controller: Broadcom Corporation BCM4311 802.11b/g WLAN (rev 01)</pre><br />
For a list of supported devices, see [http://linuxwireless.org/en/users/Drivers/b43/devices here].<br />
<br />
Either install the "b43-firmware" package from [http://aur.archlinux.org/packages.php?ID=21690 AUR], or perform the following steps manually.<br />
#Install the firmware cutter application from core. It is named "b43-fwcutter".<br />
#Because now in core we have kernel >=2.6.25 we download version 4.150.10.5 of Broadcom's proprietary driver. The older version(4.80.53.0) will be drop in july. <pre>wget http://mirror2.openwrt.org/sources/broadcom-wl-4.150.10.5.tar.bz2</pre><br />
#Unpack the compressed file.<pre>tar xjf broadcom-wl-4.150.10.5.tar.bz2</pre><br />
#Change the current directory to the newly created directory, and then further to the driver folder: <pre>cd broadcom-wl-4.150.10.5/driver</pre><br />
#Create /lib/firmware if you don't have and then Run <pre>b43-fwcutter -w "/lib/firmware/" wl_apsta_mimo.o</pre> <br />
#Restart, and configure your device as normal.<br />
You may want to add b43 into the modules section of your rc.conf file.<pre>MODULES=(...b43 !bcm43xx !ndiswrapper...)</pre><br />
Good luck!<br />
<br />
===broadcom-wl===<br />
For recent Broadcom 43xx cards not supported by bcm43xx or b43. Not just for 4312 cards. See the [[Broadcom_BCM4312|Broadcom 4312 wiki page]]. It is available in [http://aur.archlinux.org/packages.php?ID=19514 AUR]. These chipsets are used in most Dell laptops, among others.<br />
<br />
===rtl8187===<br />
See the [[Rtl8187_wireless|rtl8187 wiki page]].<br />
<br />
===zd1211rw===<br />
[http://zd1211.wiki.sourceforge.net/ zd1211rw] is a driver for the ZyDAS ZD1211 802.11b/g USB WLAN chipset and it is included in recent versions of the Linux kernel. See [http://www.linuxwireless.org/en/users/Drivers/zd1211rw/devices] for a list of supported devices. You only need to install the firmware for the device: <pre>pacman -Sy zd1211-firmware</pre><br />
--[[User:Willey|Willey]] 22:32, 20 September 2008 (EDT)<br />
<br />
==Test Installation==<br />
After loading your driver run<br />
iwconfig<br />
and see if a wireless interface (wlan''x'', eth''x'', ath''x'') is recognized<br />
<br />
If <code>iwlist scan</code> displays <code>Interface doesn't support scanning</code> then you probably forgot to install the firmware.<br />
<br />
= Part II: Wireless Management =<br />
<br />
Assuming that your drivers are installed and working properly, you will need to choose a method for managing your wireless connections. The following subsections will help you decide the best way to do just that.<br />
<br />
Procedure and tools you’ll need will depend on several factors:<br />
* The '''easiness of configuration management''', from a completely manual setup procedure that you’ll need to repeat at each boot to a software-managed, automatic, autostarting solution<br />
* The '''encryption type''' (or not) that protects the wireless network<br />
* If you need '''network profiles''', i.e. if your computer will frequently change networks (such as a laptop)<br />
<br />
== Management methods ==<br />
<br />
This table shows the different methods that can be used to activate and manage a wireless network connection, depending on the encryption and management types, and the various tools that are required. Although there may be other possibilities, these are the most frequently used:<br />
{| border="1"<br />
! Management || No encryption/WEP || WPA/WPA2 PSK<br />
|-<br />
| Manual, need to repeat at each computer reboot || <code>ifconfig + iwconfig + dhcpcd/ifconfig</code> || <code>ifconfig + iwconfig + wpa_supplicant + dhcpcd/ifconfig</code><br />
|-<br />
| Automatically managed, centralized without network profile support || define interface in <code>/etc/rc.conf</code> || not covered<br />
|-<br />
| Automatically managed, with network profiles support || colspan="2" align="center" | <code>Netcfg, wicd, NetworkManager, etc…</code><br />
|}<br />
<br />
<br />
Whatever your choice, you should try to connect using the manual method first. This will help you understand the different steps that are required and debug them in case a problem arose. Another tip: if possible (e.g. if you admin your wifi access point), try connecting with no encryption, to check everything works. Then try using encryption, either WEP (simpler to configure) or WPA.<br />
<br />
=== Manual setup ===<br />
<br />
The programs provided by the package '''wireless_tools''' are the basic set of tools to set up a wireless network. Moreover, if you use WPA/WPA2 encryption, you will need the package '''wpa_supplicant'''. These powerful userspace console tools work extremely well and allow complete, manual control from the shell.<br />
<br />
These examples assume your wireless device is <code>wlan0</code>. Replace <code>wlan0</code> with the appropriate device name.<br />
{{Box Note | Depending on your hardware and encryption type, some of these steps may not be necessary. Some cards are known to require interface activation and/or access point scanning before being associated to an access point and being given an IP address. Some experimentation may be required. For instance, WPA/WPA2 users may directly try to activate their wireless network from step 3.}}<br />
<br />
1. ''(Optional, may be required)'' Some cards require that the kernel interface be activated before you can use the wireless_tools:<br />
# ifconfig wlan0 up<br />
<br />
2. ''(Optional, may be required)'' See what access points are available:<br />
# iwlist wlan0 scan<br />
We assume you want to use the essid named <code>MyEssid</code>.<br />
<br />
3. Depending on the encryption, you need to associate your wireless device with the access point to use and pass the encryption key.<br />
* ''No encryption''<br />
# iwconfig wlan0 essid "MyEssid"<br />
* ''WEP''<br />
using an hexadecimal key:<br />
# iwconfig wlan0 essid "MyEssid" key 1234567890<br />
using an ascii key:<br />
# iwconfig wlan0 essid "MyEssid" key s:asciikey<br />
* ''WPA/WPA2''<br />
You need to edit the <code>/etc/wpa_supplicant.conf</code> file as described in [[WPA_Supplicant]]. Then, issue this command:<br />
# wpa_supplicant -B -Dwext -i wlan0 -c /etc/wpa_supplicant.conf<br />
This is assuming your device uses the <code>wext</code> driver. If this does not work, you may need to adjust these options. Check [[WPA_Supplicant]] for more information and troubleshooting.<br />
<br />
4. Finally, provide an IP address to the network interface. Simple examples are:<br />
# dhcpcd wlan0<br />
for DHCP, or<br />
# ifconfig wlan0 192.168.0.2<br />
# route add default gw 192.168.0.1<br />
for static IP.<br />
<br />
{{Box Note | Although the manual configuration method will help troubleshoot wireless problems, you will have to retype every command each time you reboot.}}<br />
<br />
=== Automatic connection - Network daemon ===<br />
<br />
{{Box Note | This method and configuration examples are only valid for unencrypted or WEP-encrypted networks, which are particularly unsecure. To use WPA/WPA2, you'll need to use other solutions such as such as '''[[netcfg]]''' or '''[[wicd]]'''. Also, avoid mixing these methods as they may create a conflict and prevent the wireless card from functioning.}}<br />
<br />
* The '''/etc/rc.conf''' file is sourced by the network script. Therefore, you may define and configure a simple wireless setup within /etc/rc.conf for a centralized approach with '''wlan_<interface>="<interface> essid <essid>"''' and '''INTERFACES=(<interface1> <interface2>)'''. The name of the network goes in place of '''MyEssid'''.<br />
<br />
For example:<br />
# /etc/rc.conf<br />
eth0="dhcp"<br />
wlan0="dhcp"<br />
wlan_wlan0="wlan0 essid MyEssid" # Unencrypted<br />
#wlan_wlan0="wlan0 essid MyEssid key 1234567890" # hex WEP key<br />
#wlan_wlan0="wlan0 essid MyEssid key s:asciikey" # ascii WEP key<br />
INTERFACES=(eth0 wlan0)<br />
<br />
Not all wireless cards are <code>wlan0</code>. Determine your wireless interface with ifconfig -a. <br />
Atheros-based cards, for example, are typically <code>ath0</code>, so change <code>wlan_wlan0</code> to:<br />
wlan_ath0="ath0 essid MyEssid key 12345678" <br />
Also define ath0 in the INTERFACES= line.)<br />
<br />
* Alternatively, you may define wlan_<interface> within /etc/conf.d/wireless, (which is also sourced by the network script), for a de-centralized approach: <br />
# /etc/conf.d/wireless<br />
wlan_wlan0="wlan0 essid MyEssid"<br />
<br />
{{Box Note | These solutions are limited: for a laptop which is always on the move it would be good to have multiple [[network profiles]] and be able to easily switch from one to another. That's the aim of network managers, such as '''[[netcfg]]'''.}}<br />
<br />
=== Automatic connection - [[Network Profiles|netcfg]] ===<br />
<br />
[[Network Profiles|netcfg]] provides a '''versatile, robust and fast''' solution to networking on Arch.<br />
<br />
It uses a profile based setup and is capable of detection and connection to a wide range of network types. This is no harder than using graphical tools. Following the directions above, you can get a list of wireless networks. Then, as with graphical tools, you will need a password.<br />
<br />
''Detailed documentation [[Network Profiles]]''<br />
<br />
''Notes for developmental version [[Network Profiles development]]''<br />
<br />
<br />
<br />
=== Other network managers ===<br />
<br />
There are a number of wireless management solutions available to Arch Linux users as an alternative to the above.<br />
<br />
====Autowifi====<br />
Autowifi is a daemon that configures your wireless network automatically depending on the ESSID. Once configured, no user interaction is necessary and no GUI tools are required.<br />
<br />
For more information, see the [[Autowifi]] wiki.<br />
====Wicd====<br />
Wicd is a network manager that can handle both wireless and wired connections. It is written in Python and Gtk with fewer dependencies than NetworkManager, making it an ideal solution for lightweight desktop users. Wicd is now available in the extra repository for both i686 and x86_64.<br />
<br />
For more information, see the [[Wicd]] wiki.<br />
====NetworkManager====<br />
NetworkManager is an advanced network management tool that is enabled by default in most popular Linux distributions. In addition to managing wired connections, NetworkManager provides worry-free wireless roaming with an easy-to-use GUI program for selecting your desired network. <br />
<br />
For more information, see the [[NetworkManager]] wiki.<br />
<br />
====Wifi Radar====<br />
WiFi Radar is Python/PyGTK2 utility for managing wireless profiles (and ''only'' wireless). It enables you to scan for available networks and create profiles for your preferred networks.<br />
<br />
For more information, see the [[Wifi Radar]] wiki.<br />
<br />
====Wlassistant====<br />
Wlassistant is a very intuitive and straightforward GUI app for managing your wireless connections. <br />
<br />
Install with:<br />
# pacman -S wlassistant<br />
Wlassistant must be run with root privileges:<br />
# sudo wlassistant<br />
One method of using wlassistant is to configure your wireless card within /etc/rc.conf, specifying the access point you use most often. On startup, your card will automatically be configured for this essid, but if other wireless networks are needed/available, wlassistant can then be invoked to access them. Background the network daemon in /etc/rc.conf, by prefixing it with a @, to avoid boot delays.<br />
<br />
= See Also =<br />
*[[Sharing ppp connection with wlan interface]]<br />
<br />
= Additional Resources =<br />
*[http://www.gnome.org/projects/NetworkManager/ NetworkManager] - The official website for NetworkManager<br />
*[http://wicd.sourceforge.net/ WICD] - The official website for WICD<br />
*[https://lists.anl.gov/mailman/listinfo/wifi-radar Wifi Radar] - Wifi Radar information page<br />
*[http://www.hpl.hp.com/personal/Jean_Tourrilhes/Linux/Wireless.html An overly wordy howto that rarely helps]<br />
*[http://madwifi.org/wiki/UserDocs/FirstTimeHowTo The madwifi project's method of installing, good if you're having trouble doing it the Arch way]</div>Gladstonehttps://wiki.archlinux.org/index.php?title=Webcam_setup&diff=67871Webcam setup2009-04-29T11:24:22Z<p>Gladstone: /* pwc */</p>
<hr />
<div>[[Category:Other hardware (English)]] <br />
[[Category:HOWTOs (English)]]<br />
<br />
{{i18n_links_start}}<br />
{{i18n_entry|English|Webcam Setup}}<br />
{{i18n_entry|简体中文|安装网络摄像机}}<br />
{{i18n_links_end}}<br />
<br />
= Introduction =<br />
This is a guide to setting up your webcam in Arch Linux.<br />
<br />
= Identify your webcam =<br />
Identify the name of your webcam and find a proper driver. Below is a list of webcams, and what drivers they work with. Click on the link to the right of the device name for information on compiling modules and other information. If you get your webcam to work, add the name of the webcam and the driver you used to the list!<br />
<br />
== pwc ==<br />
* Creative Labs Webcam Pro Ex<br />
* Logitech QuickCam Notebook Pro (only the "Pro" models)<br />
* Logitech Quickcam Pro 4000<br />
* Philips ToUCams (not confirmed at the moment, but it's using the pwc driver if I remember correctly)<br />
* Philips SPC900NC<br />
<br />
== [[Retrieving Qc-usb drivers HOWTO|qc-usb]] ==<br />
* Dexxa Webcam<br />
* Labtec Webcam (old model) <br />
* LegoCam<br />
* Logitech Quickcam Express (old model)<br />
* Logitech QuickCam Notebook (not the "Pro" models)<br />
* Logitech Quickcam Web<br />
<br />
== qc-usb-messenger ==<br />
* Logitech Quickcam Messenger<br />
* Logitech Quickcam Communicate<br />
It is now in the community repo.<br />
<br />
'''Note:''' If qc-usb-messenger does not work use the gspca module, by installing the gspcav1 package.<br><br />
'''Note:''' Now this driver is a module included in kernel 2.6.27<br />
<br />
== zr364xx ==<br />
This driver can be used for many webcams like:<br />
* Aiptek PocketDV 3300<br />
* Creative PC-CAM 880<br />
* Konica Revio 2<br />
* Genius Digital Camera<br />
* Maxell Maxcam PRO DV3<br />
You can find the full list of supported devices [http://royale.zerezo.com/zr364xx/ here]. You can find a PKGBUILD for this driver on the [http://aur.archlinux.org/ AUR].<br />
<br />
== sn9c102 ==<br />
* Trust Spacecam series<br />
* Maxell Smartcam (for notebooks): 352x288 max. resolution @ 3fps<br />
<br />
== spca5xx ==<br />
An extensive list of supported webcams is available [http://mxhaard.free.fr/spca5xx.html here].<br />
* Logitech QuickCam IM<br />
* Logitech QuickCam for Notebooks Deluxe<br />
* Logitech QuickCam Express<br />
* Labtec Webcam Pro<br />
* Trust Mini Webcam WB-1200p<br />
<br />
Kernels >= 2.6.11 would now use the gspca module, by installing the gspcav1 package.<br />
<br />
== stv680 ==<br />
Many cheap no-name cameras that came out Asia in the last couple of years use the stv680 chipset. Most of these cameras were novelty items (i.e. Pencam, SpyC@m and LegoCam). <br />
* Aiptek PenCam series<br />
* Digitaldream series<br />
* Dolphin Peripherals series<br />
* Lego LegoCam<br />
* Trust SpyC@m series<br />
* Welback Coolcam<br />
<br />
A more-complete list of webcams that use the stv680 chipset is available [http://webcam-osx.sourceforge.net/cameras/index.php?orderBy=controller here].<br />
<br />
== linux-uvc ==<br />
* Logitech Quickcam Pro 5000<br />
* Logitech Quickcam Pro 9000<br />
* Logitech Quickcam Orbit MP<br />
* Logitech Quickcam S5500<br />
* Microdia Pavilion Webcam (on MSI PR200)<br />
<br />
You can find a full list of supported UVC devices [http://linux-uvc.berlios.de/ here].<br />
<br />
As of kernel 2.6.26 (or was it 2.6.27) linux-uvc is part of the kernel. Just load the uvcvideo module.<br />
<br />
'''''Note:''' This driver does not have V4L1 support.''<br />
<br />
== ov51x-jpeg ==<br />
* Sony EyeToy<br />
* Chicony DC-2120 <br />
* Chicony DC-2120 pro<br />
* Trust Spacecam 320<br />
* Hercules Webcam Deluxe <br />
* Hercules Webcam Classic <br />
* Creative Live! Cam Notebook Pro VF0400 <br />
* Creative Live! Cam Vista IM <br />
* Creative Live! Cam Vista IM VF0420 <br />
* Creative Vista Webcam VF0330 <br />
* ASUS webcam Model? <br />
* Philips PCVC820K/00 <br />
* NGS showtime plus <br />
* HP VGA Webcam with Integrated Microphone<br />
<br />
This is a kernel module found in the AUR with some additions to the original driver that provide jpeg decompression.<br />
See the [http://www.rastageeks.org/ov51x-jpeg/index.php/Main_Page webpage]<br />
<br />
For me to get my "Creative Live! Cam Vista IM" working with Skype I had to add this line to /etc/modprobe.conf<br />
options ov51x-jpeg forceblock=1<br />
<br />
== r5u870 (Ricoh) ==<br />
* HP Pavilion Webcam<br />
* HP Webcam 1000<br />
* Sony VAIO VGP-VCCx<br />
<br />
The Ricoh webcam is built into most new Sony laptops. There are packages for the [http://aur.archlinux.org/packages.php?ID=15227 firmware] (install first) and [http://aur.archlinux.org/packages.php?ID=15226 driver] in AUR.<br />
<br />
''kernel26 dependency'' The r5u870 driver is currently broken for kernel 2.6.26 and later. For kernel 2.6.26 and later, just remove r5u870 and r5u870-fw, install from aur [http://aur.archlinux.org/packages.php?ID=21458 this] userspace tool (provides firmware too) and run '''loader''' command.<br />
<br />
== stk11xx (Syntek) ==<br />
* Integrated camera in lot of Asus laptops<br />
* Asus A8J, F3S, F5R, F9E, VX2S, V1S, A6T<br />
<br />
Just install this [http://aur.archlinux.org/packages.php?do_Details=1&ID=12669 AUR package]. It contains the right kernel module.<br />
<br />
= Make sure the module is loaded for your webcam =<br />
The easiest way is to edit [[rc.conf]]. In the MODULES array, add the module of your webcam so it will be loaded into the kernel during init stage bootstrapping.<br />
<br />
'''Note:''' If your webcam is USB, the kernel ''should'' automatically load the proper driver. If this is the case, check dmesg after you plug your webcam in. You should see something like this:<br />
<br />
<pre>$ dmesg|tail<br />
sn9c102: V4L2 driver for SN9C10x PC Camera Controllers v1:1.24a<br />
usb 1-1: SN9C10[12] PC Camera Controller detected (vid/pid 0x0C45/0x600D)<br />
usb 1-1: PAS106B image sensor detected<br />
usb 1-1: Initialization succeeded<br />
usb 1-1: V4L2 device registered as /dev/video0<br />
usb 1-1: Optional device control through 'sysfs' interface ready<br />
usbcore: registered new driver sn9c102</pre><br />
<br />
= Permissions =<br />
In order to use your webcam you need to have permission to use <code>/dev/video0</code>.<br />
<br />
== udev ==<br />
If you use udev (which is default as of kernel 2.6.13) you only need to be in the group <b>video</b>. You can check it with:<br />
$ groups<br />
To add a user to the group run under root:<br />
# gpasswd -a <username> video<br />
<br />
== devfs ==<br />
Add the following to your <code>/etc/devfsd.conf</code>. This will give normal users permission to use <code>/dev/video0</code> (your webcam).<br />
# Give normal users access to webcam<br />
REGISTER video0 PERMISSIONS root.users 0660<br />
<br />
= Get software to use your webcam =<br />
<br />
Version 2.6.27 of the Linux kernel supports [http://mxhaard.free.fr/spca5xx.html many new webcam drivers]. Legacy Video4Linux API has been dropped, and these drivers now only support Video4Linux version 2. Pixel format decoding has been pushed to user space, since Video4Linux version 2 does not support kernel space decoding. The libv4l library provides userland applications with pixel decoding services and will be used by most programs. Other compatibility layers are also available.<br />
<br />
'''If your device is created but your image looks strange (mine was nearly completely green), you probably need this.'''<br />
<br />
If the application has V4L2 support but no pixelformat support (eg: cheese) then use the following command:<br />
LD_PRELOAD=/usr/lib/libv4l/v4l2convert.so cheese<br />
<br />
If the application only supports the older version of V4L (skype is the most popular of this kind of software) then use this command:<br />
LD_PRELOAD=/usr/lib/libv4l/v4l1compat.so skype<br />
<br />
'''Hint:'''<br />
You also might want to put a line like the following into your .bashrc or .xinitrc<br />
so you don't have to type that long command all the time:<br />
export LD_PRELOAD=/usr/lib/libv4l/v4l2convert.so<br />
or<br />
export LD_PRELOAD=/usr/lib/libv4l/v4l1compat.so<br />
<br />
'''Or for 32-bit applications (ie. Skype) run within Arch64:'''<br />
<br />
export LD_PRELOAD=/opt/lib32/usr/lib/libv4l/v4l2convert.so<br />
or<br />
export LD_PRELOAD=/opt/lib32/usr/lib/libv4l/v4l1compat.so<br />
<br />
These two libraries are part of the '''lib32-libv4l''' package.<br />
<br />
== Cheese ==<br />
Cheese is the GNOME photo/video taking client. It is similar to Photo Booth in Mac OS X. It is now in extra and is also part of the gnome-extra group<br />
<br />
== GTK+ UVC Viewer (guvcview) ==<br />
[http://guvcview.berlios.de/ guvcview] is a simple GTK interface for capturing (with sound!) and viewing video from devices supported by the linux UVC driver. Available in the [http://aur.archlinux.org/packages.php?ID=16521 AUR].<br />
<br />
== Kopete ==<br />
Kopete is the [[KDE]] instant messaging (IM) client. As of KDE 3.5, it has support for MSN and Yahoo! webcams, but not every cam works yet. It is included in the kdenetwork package.<br />
<br />
== xawtv ==<br />
This is a basic v4l device viewer, and although it is intended for use with TV tuner cards, it works well with webcams. It will display what your webcam sees in a window. Install it using <br />
# pacman -S xawtv<br />
Run it with <br />
$ xawtv -c /dev/video0<br />
If you're using an nVidia graphic card, and you get an error like<br />
X Error of failed request: XF86DGANoDirectVideoMode<br />
Major opcode of failed request: 139 (XFree86-DGA)<br />
Minor opcode of failed request: 1 (XF86DGAGetVideoLL)<br />
Serial number of failed request: 69<br />
Current serial number in output stream: 69<br />
you should instead run it as:<br />
$ xawtv -nodga<br />
<br />
==VLC==<br />
VLC can also be used to view and record your webcam. In VLC's file menu, open the 'Capture Device...' dialog and enter the video and audio device files. Or from the command line, do:<br />
$ vlc v4l:// :v4l-vdev="/dev/video0" :v4l-adev="/dev/audio2"<br />
This will make VLC mirror your webcam. To take stills, simply choose 'Snapshot' in the 'Video' menu. To record the stream, you add a --sout argument, e.g.<br />
$ vlc v4l:// :v4l-vdev="/dev/video0" :v4l-adev="/dev/audio2" --sout "#transcode{vcodec=mp1v,vb=1024,scale=1,acodec=mpga,ab=192,channels=2}:duplicate{dst=std{access=file,mux=mpeg1,dst=/tmp/test.mpg}}"<br />
<br />
(Obviously a bit overkill with regard to the bitrates but it's fine for testing purposes.) Notice that this will not produce a mirror on the display - in order to see what you're recording, you would need to add the display as a destination to the argument:<br />
... :duplicate{dst=display,dst=std{access= ....<br />
(Though this can tax older hardware somewhat...)<br />
<br />
==Mplayer==<br />
To use [[Mplayer]] to take snapshots from your webcam run this command from the terminal:<br />
$ mplayer tv:// -tv driver=v4l2:width=640:height=480:device=/dev/video0 -fps 15 -vf screenshot<br />
From here you have to press ''''s'''' to take the snapshot. The snapshot will be saved in your current folder as '''shotXXXX.png'''.<br />
If you want to record continuous video:<br />
$ mencoder tv:// -tv driver=v4l2:width=640:height=480:device=/dev/video0:forceaudio:adevice=/dev/dsp -ovc lavc -oac mp3lame -lameopts cbr:br=64:mode=3 -o <filename>.avi<br />
Press Ctrl+Z to end the recording.<br />
<br />
== ekiga ==<br />
This is very similar to Microsoft NetMeeting. <br />
Get it with <br />
# pacman -S ekiga<br />
The configuration druid will set everything up for you.<br />
<br />
== Sonic-snap ==<br />
Sonic-snap [http://www.stolk.org/sonic-snap/] is a viewer/grabber for sn9c102-based webcams '''only'''.<br />
[http://aur.archlinux.org/packages.php?ID=6333 Available in AUR.]<br />
<br />
== Skype == <br />
The newest version of Skype has video support. Check Video Devices in the options for a test image which you can double-click to make full screen. You can install Skype with:<br />
# pacman -S skype<br />
If you get green/disorted picture with skype read the section [[Webcam_Setup#Get software to use your webcam]] above.</div>Gladstonehttps://wiki.archlinux.org/index.php?title=Xmonad&diff=66570Xmonad2009-04-09T23:19:06Z<p>Gladstone: /* Starting xmonad */</p>
<hr />
<div>{{i18n_links_start}}<br />
{{i18n_entry|English|Xmonad}}<br />
{{i18n_entry|Türkçe|Xmonad (Türkçe)}}<br />
{{i18n_links_end}}<br />
== Introduction ==<br />
<br />
[http://xmonad.org/ xmonad] is a tiling window manager for X. Windows are arranged automatically to tile the screen without gaps or overlap, maximizing screen use. Window manager features are accessible from the keyboard: a mouse is optional. <br />
<br />
xmonad is written, configured and extensible in [http://haskell.org/ Haskell]. Custom layout algorithms, key bindings and other extensions may be written by the user in config files. <br />
<br />
Layouts are applied dynamically, and different layouts may be used on each workspace. Xinerama is fully supported, allowing windows to be tiled on several physical screens.<br />
<br />
For more information, please visit the xmonad website: http://xmonad.org/<br />
<br />
== Installation ==<br />
<br />
xmonad is currently available in the community repo. A build for the current development snapshot (darcs) is in the [http://aur.archlinux.org/ aur]. The following instructions are for xmonad-darcs, the development snapshot.<br />
<br />
=== Development Version (xmonad-darcs) ===<br />
<br />
The xmonad-darcs development release requires 3 separate packages available from AUR (install them in the following order):<br />
<br />
* [http://aur.archlinux.org/packages.php?do_Details=1&ID=13750&O=0&L=0&C=0&K=xmonad&SB=n&SO=a&PP=25&do_MyPackages=0&do_Orphans=0&SeB=nd haskell-x11-darcs] - haskell bindings to the X11 graphics library<br />
* [http://aur.archlinux.org/packages.php?ID=12483 xmonad-darcs] - the core window manager<br />
* [http://aur.archlinux.org/packages.php?do_Details=1&ID=13652&O=0&L=0&C=0&K=xmonad&SB=n&SO=a&PP=25&do_MyPackages=0&do_Orphans=0&SeB=nd xmonad-contrib-darcs] - contributed extensions providing custom layouts, configurations, etc.<br />
<br />
== Configuration ==<br />
<br />
=== Starting xmonad ===<br />
To start xmonad automatically, simply add the command '''xmonad''' to your startup script (e.g. ~/.xinitrc). GDM and KDM users can create a new session file and then select xmonad from the appropriate Session menu.<br />
<br />
''Note:'' by default, xmonad does not set an X cursor, therefore the "cross" cursor is usually displayed which can be confusing for new users (thinking that xmonad has not launched correctly). To set the expected left-pointer, add the following to your startup file (e.g. ~/.xinitrc):<br />
<br />
xsetroot -cursor_name left_ptr<br />
<br />
=== Configuring xmonad ===<br />
<br />
Xmonad users can modify, override or extend the default settings with the ~/.xmonad/xmonad.hs configuration file. Recompiling is done on the fly, with the Mod+q shortcut.<br />
<br />
Because the xmonad configuration file is written in Haskell, non-programmers may have a difficult time adjusting settings. For detailed HOWTO's and example configs, we refer you to the following resources:<br />
<br />
* [http://haskell.org/haskellwiki/Xmonad xmonad wiki]<br />
* [http://haskell.org/haskellwiki/Xmonad/Config_archive xmonad config archive]<br />
* [http://haskell.org/haskellwiki/Xmonad/Frequently_asked_questions xmonad FAQ]<br />
<br />
=== Exiting xmonad ===<br />
To end the current xmonad session, press Mod+SHIFT+q (Mod being ALT by default).<br />
<br />
== Tips & Tricks ==<br />
=== Complementary Applications ===<br />
There are number of complementary utilities that work well with Xmonad. The most common of these include:<br />
<br />
* [http://www.suckless.org/wiki/tools/xlib dmenu]<br />
* [[Xmobar]]<br />
* [[Dzen]] <br />
* [[Conky]] and [http://aur.archlinux.org/packages.php?ID=11884 conky-cli]<br />
<br />
=== Making room for conky or tray apps ===<br />
Wrap your layouts with avoidStruts from XMonad.Hooks.ManageDocks for automatic dock/panel/trayer spacing:<br />
layoutHook = avoidStruts (tiled Tall ||| ...<br />
manageHook = manageHook defaultConfig <+> manageDocks<br />
<br />
If you ever want to toggle the gaps the action is<br />
,((modMask x, xK_b ), sendMessage ToggleStruts)<br />
<br />
=== Using [[xmobar]] with xmonad ===<br />
[[Xmobar]] is a light and minimalistic text based bar, designed to work with xmonad.<br><br />
To use xmobar with xmonad, you will need two packages in addition to the xmonad package, these are xmonad-contrib from [community] and xmobar or xmobar-darcs from [http://aur.archlinux.org aur]. You must also make room for the bar on screen, see [[Xmonad#Making room for conky or tray apps]]<br />
<br />
There are two ways of getting the output of xmonad into xmobar. You can either use a standard unix pipe when you start xmonad, or you can set up a pipe from within xmonad.hs. The later is generaly prefered since it's independent of the way you start xmonad. The following setup will use the later, starting xmobar and setting up the pipe from within xmonad.<br />
<br />
Open up <tt>~/.xmonad/xmonad.hs</tt> in your favorite editor.<br><br />
First, we need to import three modules, IO, the DynamicLog and the Run utility. The logger is used to format and print various information about xmonad, like the workspaces, the title of the current window, the current layout and more. The two others are neede to run xmobar with a pipe, and to print the output of the logger to it.<br />
import IO<br />
import XMonad.Hooks.DynamicLog<br />
import XMonad.Util.Run<br />
<br />
Now, on to the main function. There are several loggers you can use and you can also create your own. In this example, we will use xmobarPP, for details read the documentation on [http://xmonad.org/xmonad-docs/xmonad-contrib/XMonad-Hooks-DynamicLog.html XMonad.Hooks.DynamicLog].<br><br />
The important thing here, is that we have to overide the ppOutput, else it will just print to stdout.<br />
main = do<br />
xmobar <- spawnPipe "xmobar" -- spawns xmobar and returns a handle<br />
xmonad $ defaultConfig <br />
{ ...<br />
, logHook = dynamicLogWithPP $ xmobarPP { ppOutput = hPutStrLn xmobar } -- print the output of xmobarPP to the handle<br />
, ...<br />
}<br />
<br />
At last, open up <tt>~/.xmobarrc</tt> and make sure you got StdinReader in the template and run the plugin. E.g.<br />
Config { ...<br />
, commands = [ Run StdinReader .... ] <br />
...<br />
, template = " %StdinReader% ... "<br />
}<br />
Now, all you should have to do is either to start, or restart xmonad.<br />
<br />
=== Example Configurations ===<br />
Below are some example configurations from fellow Xmonad users. Feel free to add links to your own.<br />
* MrElendig :: Simple configuration, with xmobar :: [http://arch.har-ikkje.net/configs/home/dot.xmonad/xmonad.hs xmonad.hs], [http://arch.har-ikkje.net/configs/home/dot.xmobarrc .xmobarrc], [http://arch.har-ikkje.net/gfx/ss/2008-11-15-161451_1680x1050_scrot.png screenshot].<br />
* hsa2 :: Simple configuration, with xmobar :: [http://www.difuzyon.net/linked/configs/xmonad.hs xmonad.hs], [http://www.difuzyon.net/linked/configs/dot.xmobarrc .xmobarrc].<br />
<br />
== Other Resources ==<br />
[http://xmonad.org/ xmonad] -- The official xmonad website<br />
<br />
[http://xmonad.org/tour.html xmonad: a guided tour]<br />
<br />
[[dzen]] -- A general purpose messaging and notification program<br />
<br />
[[dmenu]] -- A dynamic X menu for the quick launching of programs<br />
<br />
[[Category:Desktop environments (English)]]<br />
[[Category:HOWTOs (English)]]</div>Gladstonehttps://wiki.archlinux.org/index.php?title=Mouse_polling_rate&diff=63369Mouse polling rate2009-02-28T16:04:12Z<p>Gladstone: </p>
<hr />
<div>If you have invested in a high resolution mouse, adjusting the USB polling rate is a common trick to utilise the added precision it brings. The polling rate (or report rate) determines how often the mouse sends information to your computer. Measured in ''Hz'', this setting equates to lag time (in ''ms'').<br />
<br />
By default, the USB polling rate is set at 125hz. The table below represents combinations of ''Hz'' values and their corresponding delay time:<br />
<br />
{| class="wikitable grid"; border="1"<br />
! class="header" | Hz<br />
! class="header" | ms<br />
|-<br />
|1000<br />
|1<br />
|-<br />
|500<br />
|2<br />
|-<br />
|250<br />
|4<br />
|-<br />
|125<br />
|8<br />
|-<br />
|100<br />
|10<br />
|}<br />
<br />
If the polling rate is set at 125 Hz, the mouse cursor can only be updated every 8 milliseconds. In situations where lag is critical (for example games), it is useful to decrease this value to as little as possible. Increasing the polling interval will improve precision at the tradeoff of using more CPU resources, therefore care should be taken when adjusting this value.<br />
<br />
== Setting the polling rate ==<br />
Here we are using the USBHID module of the kernel to set a custom "mousepoll" rate. Simply add the following line to your /etc/modprobe.conf file:<br />
<br />
options usbhid mousepoll=[polling interval]<br />
<br />
(where [polling interval] is a number in ''ms'' from the table above. For example, to set a polling rate of 500Hz:<br />
<br />
options usbhid mousepoll=2<br />
<br />
Now, to ensure the USBHID module loads upon boot add the following to your /etc/rc.conf file, within the MODULES list:<br />
<br />
usbhid<br />
<br />
For example:<br />
<br />
MOD_AUTOLOAD="yes"<br />
MODULES=(b44 usbhid !mii !ipw2200 !ac97_bus snd-mixer-oss snd-pcm-oss snd- page-alloc snd-pcm snd-timer snd snd-ac97-codec snd-intel8x0 !snd-intel8x0m soundcore !pcspkr !snd_pcsp)<br />
<br />
== Displaying current mouse rate ==<br />
A tool exists (named ''evhz'') that can display the current mouse refresh rate -- useful when checking that your customised polling settings have been applied.<br />
<br />
The original source no longer exists ([http://homepages.nildram.co.uk/~kial/evhz.c]), so a mirror has been provided here: [http://www.fileden.com/files/2006/7/4/107702/evhz.c evhz.c]. Full credit goes to the original author, Alan Kivlin.<br />
<br />
Compile it with:<br />
<br />
gcc -o evhz evhz.c<br />
<br />
Then execute in root:<br />
<br />
./evhz<br />
<br />
Alternatively, Windows tools such as [http://razerblueprints.net/index.php/View-document-details/18-DirectX-mouserate-checker.html DirectX mouserate checker] can be run using WINE.<br />
<br />
== Further Reading ==<br />
[http://www.overclock.net/computer-peripherals/173255-cs-s-mouse-optimization-guide.html CS:S Mouse Optimization Guide] -- largely aimed at Windows users, though the same principles apply for Linux.<br />
<br />
[http://en.gentoo-wiki.zugaina.org/index.php/HOWTO_Customize_Mouse_Polling_Rate HOWTO Customize Mouse Polling Rate] -- from Gentoo wiki<br />
<br />
[http://www.linux-gamers.net/modules/wiwimod/index.php?page=HOWTO+USBPolling Increase Mouse Polling Rate Interval]<br />
<br />
[http://tscherwitschke.de/mouseratechecker.html Mouse Rate Checker] (Windows)<br />
<br />
[[Category:X Server (English)]]<br />
[[Category:HOWTOs (English)]]<br />
[[Category:Mouse]]</div>Gladstonehttps://wiki.archlinux.org/index.php?title=Mouse_polling_rate&diff=63368Mouse polling rate2009-02-28T16:03:32Z<p>Gladstone: </p>
<hr />
<div>If you have invested in a high resolution mouse, adjusting the USB polling rate is a common trick to utilise the added precision it brings. The polling rate (or report rate) determines how often (per second) the mouse sends information to your computer. Measured in ''Hz'', this setting equates to lag time (in ''ms'').<br />
<br />
By default, the USB polling rate is set at 125hz. The table below represents combinations of ''Hz'' values and their corresponding delay time:<br />
<br />
{| class="wikitable grid"; border="1"<br />
! class="header" | Hz<br />
! class="header" | ms<br />
|-<br />
|1000<br />
|1<br />
|-<br />
|500<br />
|2<br />
|-<br />
|250<br />
|4<br />
|-<br />
|125<br />
|8<br />
|-<br />
|100<br />
|10<br />
|}<br />
<br />
If the polling rate is set at 125 Hz, the mouse cursor can only be updated every 8 milliseconds. In situations where lag is critical (for example games), it is useful to decrease this value to as little as possible. Increasing the polling interval will improve precision at the tradeoff of using more CPU resources, therefore care should be taken when adjusting this value.<br />
<br />
== Setting the polling rate ==<br />
Here we are using the USBHID module of the kernel to set a custom "mousepoll" rate. Simply add the following line to your /etc/modprobe.conf file:<br />
<br />
options usbhid mousepoll=[polling interval]<br />
<br />
(where [polling interval] is a number in ''ms'' from the table above. For example, to set a polling rate of 500Hz:<br />
<br />
options usbhid mousepoll=2<br />
<br />
Now, to ensure the USBHID module loads upon boot add the following to your /etc/rc.conf file, within the MODULES list:<br />
<br />
usbhid<br />
<br />
For example:<br />
<br />
MOD_AUTOLOAD="yes"<br />
MODULES=(b44 usbhid !mii !ipw2200 !ac97_bus snd-mixer-oss snd-pcm-oss snd- page-alloc snd-pcm snd-timer snd snd-ac97-codec snd-intel8x0 !snd-intel8x0m soundcore !pcspkr !snd_pcsp)<br />
<br />
== Displaying current mouse rate ==<br />
A tool exists (named ''evhz'') that can display the current mouse refresh rate -- useful when checking that your customised polling settings have been applied.<br />
<br />
The original source no longer exists ([http://homepages.nildram.co.uk/~kial/evhz.c]), so a mirror has been provided here: [http://www.fileden.com/files/2006/7/4/107702/evhz.c evhz.c]. Full credit goes to the original author, Alan Kivlin.<br />
<br />
Compile it with:<br />
<br />
gcc -o evhz evhz.c<br />
<br />
Then execute in root:<br />
<br />
./evhz<br />
<br />
Alternatively, Windows tools such as [http://razerblueprints.net/index.php/View-document-details/18-DirectX-mouserate-checker.html DirectX mouserate checker] can be run using WINE.<br />
<br />
== Further Reading ==<br />
[http://www.overclock.net/computer-peripherals/173255-cs-s-mouse-optimization-guide.html CS:S Mouse Optimization Guide] -- largely aimed at Windows users, though the same principles apply for Linux.<br />
<br />
[http://en.gentoo-wiki.zugaina.org/index.php/HOWTO_Customize_Mouse_Polling_Rate HOWTO Customize Mouse Polling Rate] -- from Gentoo wiki<br />
<br />
[http://www.linux-gamers.net/modules/wiwimod/index.php?page=HOWTO+USBPolling Increase Mouse Polling Rate Interval]<br />
<br />
[http://tscherwitschke.de/mouseratechecker.html Mouse Rate Checker] (Windows)<br />
<br />
[[Category:X Server (English)]]<br />
[[Category:HOWTOs (English)]]<br />
[[Category:Mouse]]</div>Gladstonehttps://wiki.archlinux.org/index.php?title=Mouse_polling_rate&diff=63367Mouse polling rate2009-02-28T16:02:27Z<p>Gladstone: /* Displaying current mouse rate */</p>
<hr />
<div>If you have invested in a high resolution mouse, adjusting the USB polling rate is a common trick to utilise the added precision it brings. The polling rate (or report rate) determines how often (per second) the mouse sends information to your computer. Measured in ''Hz'', this setting equates to lag time (in ''ms'').<br />
<br />
By default, the USB polling rate is set at 125hz. The table below represents combinations of ''Hz'' values and their corresponding delay time:<br />
<br />
{| class="wikitable grid"; border="1"<br />
! class="header" | Hz<br />
! class="header" | ms<br />
|-<br />
|1000<br />
|1<br />
|-<br />
|500<br />
|2<br />
|-<br />
|250<br />
|4<br />
|-<br />
|125<br />
|8<br />
|-<br />
|100<br />
|10<br />
|}<br />
<br />
If the polling rate is set at 125 Hz, the mouse cursor can only be updated every 8 milliseconds. In situations where lag is critical (for example games), it is useful to decrease this value to as little as possible. Increasing the polling interval will improve precision at the tradeoff of using more CPU resources, therefore care should be taken when adjusting this value.<br />
<br />
== Setting the polling rate ==<br />
Here we are using the USBHID module of the kernel to set a custom "mousepoll" rate. Simply add the following line to your /etc/modprobe.conf file:<br />
<br />
options usbhid mousepoll=[polling interval]<br />
<br />
(where [polling interval] is a number in ''ms'' from the table above. For example, to set a polling rate of 500Hz:<br />
<br />
options usbhid mousepoll=2<br />
<br />
Now, to ensure the USBHID module loads upon boot add the following to your /etc/rc.conf file, within the MODULES list:<br />
<br />
usbhid<br />
<br />
For example:<br />
<br />
MOD_AUTOLOAD="yes"<br />
MODULES=(b44 usbhid !mii !ipw2200 !ac97_bus snd-mixer-oss snd-pcm-oss snd- page-alloc snd-pcm snd-timer snd snd-ac97-codec snd-intel8x0 !snd-intel8x0m soundcore !pcspkr !snd_pcsp)<br />
<br />
== Displaying current mouse rate ==<br />
A tool exists (named ''evhz'') that can display the current mouse refresh rate -- useful when checking that your customised polling settings have been applied.<br />
<br />
The original source no longer exists ([http://homepages.nildram.co.uk/~kial/evhz.c]), so a mirror has been provided here: [http://www.fileden.com/files/2006/7/4/107702/evhz.c evhz.c]. Full credit goes to the original author, Alan Kivlin.<br />
<br />
Compile it with:<br />
<br />
gcc -o evhz evhz.c<br />
<br />
Then execute in root:<br />
<br />
./evhz<br />
<br />
Alternatively, Windows tools such as [http://razerblueprints.net/index.php/View-document-details/18-DirectX-mouserate-checker.html DirectX mouserate checker] can be run using WINE.<br />
<br />
== Further Reading ==<br />
[http://www.overclock.net/computer-peripherals/173255-cs-s-mouse-optimization-guide.html CS:S Mouse Optimization Guide] -- largely aimed at Windows users, though the same principles apply for Linux.<br />
<br />
[http://en.gentoo-wiki.zugaina.org/index.php/HOWTO_Customize_Mouse_Polling_Rate HOWTO Customize Mouse Polling Rate] -- from Gentoo wiki<br />
<br />
[http://www.linux-gamers.net/modules/wiwimod/index.php?page=HOWTO+USBPolling Increase Mouse Polling Rate Interval]<br />
<br />
[http://tscherwitschke.de/mouseratechecker.html Mouse Rate Checker] (Windows)</div>Gladstonehttps://wiki.archlinux.org/index.php?title=Mouse_polling_rate&diff=63366Mouse polling rate2009-02-28T16:01:38Z<p>Gladstone: </p>
<hr />
<div>If you have invested in a high resolution mouse, adjusting the USB polling rate is a common trick to utilise the added precision it brings. The polling rate (or report rate) determines how often (per second) the mouse sends information to your computer. Measured in ''Hz'', this setting equates to lag time (in ''ms'').<br />
<br />
By default, the USB polling rate is set at 125hz. The table below represents combinations of ''Hz'' values and their corresponding delay time:<br />
<br />
{| class="wikitable grid"; border="1"<br />
! class="header" | Hz<br />
! class="header" | ms<br />
|-<br />
|1000<br />
|1<br />
|-<br />
|500<br />
|2<br />
|-<br />
|250<br />
|4<br />
|-<br />
|125<br />
|8<br />
|-<br />
|100<br />
|10<br />
|}<br />
<br />
If the polling rate is set at 125 Hz, the mouse cursor can only be updated every 8 milliseconds. In situations where lag is critical (for example games), it is useful to decrease this value to as little as possible. Increasing the polling interval will improve precision at the tradeoff of using more CPU resources, therefore care should be taken when adjusting this value.<br />
<br />
== Setting the polling rate ==<br />
Here we are using the USBHID module of the kernel to set a custom "mousepoll" rate. Simply add the following line to your /etc/modprobe.conf file:<br />
<br />
options usbhid mousepoll=[polling interval]<br />
<br />
(where [polling interval] is a number in ''ms'' from the table above. For example, to set a polling rate of 500Hz:<br />
<br />
options usbhid mousepoll=2<br />
<br />
Now, to ensure the USBHID module loads upon boot add the following to your /etc/rc.conf file, within the MODULES list:<br />
<br />
usbhid<br />
<br />
For example:<br />
<br />
MOD_AUTOLOAD="yes"<br />
MODULES=(b44 usbhid !mii !ipw2200 !ac97_bus snd-mixer-oss snd-pcm-oss snd- page-alloc snd-pcm snd-timer snd snd-ac97-codec snd-intel8x0 !snd-intel8x0m soundcore !pcspkr !snd_pcsp)<br />
<br />
== Displaying current mouse rate ==<br />
A tool exists (named ''evhz'') that can display the current mouse refresh rate -- useful when checking that your customised polling settings have been applied.<br />
<br />
The original source no longer exists ([http://homepages.nildram.co.uk/~kial/evhz.c]), so a mirror has been provided here: [http://www.fileden.com/files/2006/7/4/107702/evhz.c evhz.c]. Full credit goes to the original author, Alan Kivlin.<br />
<br />
Compile it with:<br />
<br />
gcc -o evhz evhz.c<br />
<br />
Then execute in root:<br />
<br />
./evhz<br />
<br />
<br />
Alternatively, Windows tools such as [http://razerblueprints.net/index.php/View-document-details/18-DirectX-mouserate-checker.html DirectX mouserate checker] can be run using WINE.<br />
<br />
== Further Reading ==<br />
[http://www.overclock.net/computer-peripherals/173255-cs-s-mouse-optimization-guide.html CS:S Mouse Optimization Guide] -- largely aimed at Windows users, though the same principles apply for Linux.<br />
<br />
[http://en.gentoo-wiki.zugaina.org/index.php/HOWTO_Customize_Mouse_Polling_Rate HOWTO Customize Mouse Polling Rate] -- from Gentoo wiki<br />
<br />
[http://www.linux-gamers.net/modules/wiwimod/index.php?page=HOWTO+USBPolling Increase Mouse Polling Rate Interval]<br />
<br />
[http://tscherwitschke.de/mouseratechecker.html Mouse Rate Checker] (Windows)</div>Gladstonehttps://wiki.archlinux.org/index.php?title=Mouse_polling_rate&diff=63365Mouse polling rate2009-02-28T15:30:45Z<p>Gladstone: Saving my work just in case</p>
<hr />
<div>If you have invested in a high resolution mouse, adjusting the USB polling rate is a common trick to utilise the added precision it brings. The polling rate (or report rate) determines how often (per second) the mouse sends information to your computer. Measured in ''Hz'', this setting equates to lag time (in ''ms'').<br />
<br />
By default, the USB polling rate is set at 125hz. The table below represents combinations of ''Hz'' values and their corresponding delay time:<br />
<br />
{| class="wikitable grid"; border="1"<br />
! class="header" | Hz<br />
! class="header" | ms<br />
|-<br />
|1000<br />
|1<br />
|-<br />
|500<br />
|2<br />
|-<br />
|250<br />
|4<br />
|-<br />
|125<br />
|8<br />
|-<br />
|100<br />
|10<br />
|}<br />
<br />
If the polling rate is set at 125 Hz, the mouse cursor can only be updated every 8 milliseconds. In situations where lag is critical (for example games), it is useful to decrease this value to as little as possible. Increasing the polling interval will improve precision at the tradeoff of using more CPU resources, therefore care should be taken when adjusting this value.<br />
<br />
== Further Reading ==<br />
[http://www.overclock.net/computer-peripherals/173255-cs-s-mouse-optimization-guide.html CS:S Mouse Optimization Guide] -- largely aimed at Windows users, though the same principles apply for Linux.<br />
<br />
[http://www.linux-gamers.net/modules/wiwimod/index.php?page=HOWTO+USBPolling Increase Mouse Polling Rate Interval]<br />
[http://tscherwitschke.de/mouseratechecker.html Mouse Rate Checker] (Windows)</div>Gladstonehttps://wiki.archlinux.org/index.php?title=Mouse_acceleration&diff=63361Mouse acceleration2009-02-28T14:34:09Z<p>Gladstone: /* Query currently used settings */</p>
<hr />
<div>Mouse acceleration settings typically can be configured using tools provided by your desktop environment. Alternatively, Xorg supplies similar methods more directly, using the '''xset''' command. Along with sensitivity, your mouse speed is controlled by acceleration and threshold levels. The command synopsis is <code>xset m acceleration threshold</code>.<br />
<br />
For example:<br />
<pre><br />
xset m 4 1<br />
</pre><br />
<br><br />
''Acceleration'' defines how many times faster the cursor will move than the default speed, when the cursor moves more than ''threshold'' pixels in a short time. ''Acceleration'' can be a fraction, so if you want to slow down the mouse you can use 1/2, and if 3 is slightly too fast, but 2 is too slow, you can use 5/2. You effectively disable the threshold by setting it to 1, that way the cursor will always move the same speed. To get the default settings back, type <code>xset m default</code>. <br />
<br />
===Disabling mouse acceleration===<br />
Mouse acceleration can be disabled using:<br />
xset m 0 0<br />
<br />
===Query currently used settings===<br />
The current acceleration/threshold settings can be checked using:<br />
<br />
xset q | grep -A 1 Pointer<br />
<br />
==Making changes permanent==<br />
You can add the xset command to your ~/.xinitrc to get the desired mouse speed every time X starts.<br />
<br />
For more info see <code>man xset</code>.<br />
<br />
[[Category:X Server (English)]]<br />
[[Category:HOWTOs (English)]]<br />
[[Category:Mouse]]</div>Gladstonehttps://wiki.archlinux.org/index.php?title=Mouse_acceleration&diff=63360Mouse acceleration2009-02-28T14:33:22Z<p>Gladstone: /* Query currently used settings */</p>
<hr />
<div>Mouse acceleration settings typically can be configured using tools provided by your desktop environment. Alternatively, Xorg supplies similar methods more directly, using the '''xset''' command. Along with sensitivity, your mouse speed is controlled by acceleration and threshold levels. The command synopsis is <code>xset m acceleration threshold</code>.<br />
<br />
For example:<br />
<pre><br />
xset m 4 1<br />
</pre><br />
<br><br />
''Acceleration'' defines how many times faster the cursor will move than the default speed, when the cursor moves more than ''threshold'' pixels in a short time. ''Acceleration'' can be a fraction, so if you want to slow down the mouse you can use 1/2, and if 3 is slightly too fast, but 2 is too slow, you can use 5/2. You effectively disable the threshold by setting it to 1, that way the cursor will always move the same speed. To get the default settings back, type <code>xset m default</code>. <br />
<br />
===Disabling mouse acceleration===<br />
Mouse acceleration can be disabled using:<br />
xset m 0 0<br />
<br />
===Query currently used settings===<br />
The current acceleration/threshold settings can be checked using:<br />
<br />
xset q | grep -A 1 ^Pointer<br />
<br />
==Making changes permanent==<br />
You can add the xset command to your ~/.xinitrc to get the desired mouse speed every time X starts.<br />
<br />
For more info see <code>man xset</code>.<br />
<br />
[[Category:X Server (English)]]<br />
[[Category:HOWTOs (English)]]<br />
[[Category:Mouse]]</div>Gladstonehttps://wiki.archlinux.org/index.php?title=Mouse_acceleration&diff=63359Mouse acceleration2009-02-28T14:32:59Z<p>Gladstone: </p>
<hr />
<div>Mouse acceleration settings typically can be configured using tools provided by your desktop environment. Alternatively, Xorg supplies similar methods more directly, using the '''xset''' command. Along with sensitivity, your mouse speed is controlled by acceleration and threshold levels. The command synopsis is <code>xset m acceleration threshold</code>.<br />
<br />
For example:<br />
<pre><br />
xset m 4 1<br />
</pre><br />
<br><br />
''Acceleration'' defines how many times faster the cursor will move than the default speed, when the cursor moves more than ''threshold'' pixels in a short time. ''Acceleration'' can be a fraction, so if you want to slow down the mouse you can use 1/2, and if 3 is slightly too fast, but 2 is too slow, you can use 5/2. You effectively disable the threshold by setting it to 1, that way the cursor will always move the same speed. To get the default settings back, type <code>xset m default</code>. <br />
<br />
===Disabling mouse acceleration===<br />
Mouse acceleration can be disabled using:<br />
xset m 0 0<br />
<br />
===Query currently used settings===<br />
The current acceleration/threshold settings can be checked using:<br />
<br />
xset q |grep -A 1 ^Pointer<br />
<br />
==Making changes permanent==<br />
You can add the xset command to your ~/.xinitrc to get the desired mouse speed every time X starts.<br />
<br />
For more info see <code>man xset</code>.<br />
<br />
[[Category:X Server (English)]]<br />
[[Category:HOWTOs (English)]]<br />
[[Category:Mouse]]</div>Gladstonehttps://wiki.archlinux.org/index.php?title=Mouse_acceleration&diff=63355Mouse acceleration2009-02-28T14:03:06Z<p>Gladstone: </p>
<hr />
<div>Mouse acceleration settings typically can be configured using tools provided by your desktop environment. Alternatively, Xorg supplies similar methods more directly, using the '''xset''' command. Along with sensitivity, your mouse speed is controlled by acceleration and threshold levels. The command synopsis is <code>xset m acceleration threshold</code>.<br />
<br />
For example:<br />
<pre><br />
xset m 4 1<br />
</pre><br />
<br><br />
''Acceleration'' defines how many times faster the cursor will move than the default speed, when the cursor moves more than ''threshold'' pixels in a short time. ''Acceleration'' can be a fraction, so if you want to slow down the mouse you can use 1/2, and if 3 is slightly too fast, but 2 is too slow, you can use 5/2. You effectively disable the threshold by setting it to 1, that way the cursor will always move the same speed. To get the default settings back, type <code>xset m default</code>. <br />
<br />
===Disabling mouse acceleration===<br />
Mouse acceleration can be disabled using:<br />
xset m 0 0<br />
<br />
==Making changes permanent==<br />
You can add the xset command to your ~/.xinitrc to get the desired mouse speed every time X starts.<br />
<br />
For more info see <code>man xset</code>.<br />
<br />
[[Category:X Server (English)]]<br />
[[Category:HOWTOs (English)]]<br />
[[Category:Mouse]]</div>Gladstonehttps://wiki.archlinux.org/index.php?title=Logitech_MX1000&diff=63354Logitech MX10002009-02-28T13:48:38Z<p>Gladstone: </p>
<hr />
<div>Disclaimer: this information is current as of Arch Linux 2007.08 (Don't Panic). For later releases, your mileage may vary. In the true spirit of a Wiki, if you determine that this content needs to be updated for a later release, please go ahead and do so!<br />
<br />
<br />
= Quick Overview = <br />
<br />
This Wiki page will show you how to get your MX1000 mouse working as desired. This is defined as:<br />
<br />
* Left click, Right click, Center click all working<br />
* Forward and Backward scroll wheel, Left and Right horizontal scrolling all working<br />
* The up and down scroll buttons in front and back of the scroll wheel working<br />
* Thumb buttons doing Forward and Back in your browser (Firefox used as an example)<br />
<br />
<br />
What we will do to achieve this is:<br />
<br />
* Get and install evdev<br />
* Modify xorg.conf to use evdev as your mouse driver<br />
* Get and install xvkdb and xbindkeys<br />
* Create a ~/.xbindkeysrc containing the following:<br />
<br />
"/usr/bin/xvkbd -xsendevent -text "\[Alt_L]\[Left]""<br />
m:0x0 + b:8<br />
"/usr/bin/xvkbd -xsendevent -text "\[Alt_L]\[Right]""<br />
m:0x0 + b:9<br />
"/usr/bin/xvkbd -xsendevent -text "\[Up]""<br />
m:0x0 + b:11<br />
"/usr/bin/xvkbd -xsendevent -text "\[Down]""<br />
m:0x0 + b:12<br />
"/usr/bin/xvkbd -xsendevent -text "\[Left]""<br />
m:0x0 + b:13 <br />
"/usr/bin/xvkbd -xsendevent -text "\[Right]""<br />
m:0x0 + b:14<br />
<br />
This will setup your MX1000 so that it works as desired.<br />
<br />
That's the overview. Now onto the details of each step.<br />
<br />
= Get, Install evdev = <br />
<br />
First, use evdev as the Xorg mouse driver. evdev is a newer driver that allows you to effectively use mice with more than 7 buttons. Get this module, install it, and make sure it is loaded each time you run Linux.<br />
<br />
For Arch, this means:<br />
<br />
# pacman --sync xf86-input-evdev<br />
<br />
and adding "evdev" to the modules list in /etc/rc.conf.<br />
<br />
<br />
= Modify xorg.conf to Use evdev as Your Mouse Driver =<br />
<br />
Next, in /etc/X11/xorg.conf, create an evdev-based input device that specifies your mouse (if your mouse does not work after changing to the evdev driver, it might be because evdev needs the "Device" option, fx 'Option "Device" "/dev/input/event4"', see http://www.linux-gamers.net/modules/wiwimod/index.php?page=HOWTO+Mouse+Buttons&back=HOWTO+INDEX+Hardware for details):<br />
<br />
# evdev based section for Logitech MX1000 mouse<br />
<br />
Section "InputDevice"<br />
Identifier "Evdev Mouse"<br />
Driver "evdev"<br />
Option "Name" "Logitech USB Receiver"<br />
Option "CorePointer"<br />
EndSection<br />
<br />
<br />
Note that none of the usual "Buttons" and "ZAxisMapping" statements are not needed with evdev. Note as well that the "Name" field above is critically important. This is the linkage between evdev and xorg. Find out the name for your device via:<br />
<br />
# egrep "Name|Handlers" /proc/bus/input/devices<br />
<br />
In the case of the Logitech MX1000 mouse, which is wireless, it is: "Logitech USB Receiver". Make sure you add the "Name" option to your InputDevice section for the mouse.<br />
<br />
= Modify Xorg ServerLayout to Use Your evdev Mouse =<br />
<br />
Now modify the Xorg server layout to use this mouse entry:<br />
<br />
Section "ServerLayout"<br />
Identifier "Xorg Configured"<br />
Screen 0 "Screen0" 0 0<br />
InputDevice "Keyboard0" "CoreKeyboard"<br />
InputDevice "Evdev Mouse" "CorePointer"<br />
EndSection<br />
<br />
<br />
= Map The Mouse Buttons to the Desired Functions =<br />
<br />
To get all of the buttons working and doing what you want them to, you need to use xev to map out the buttons: what buttons are recognized via evdev and what function each of the recognized buttons performs. Your job then is to move functions around between buttons, via xmodmap, if some functions are showing up on buttons you don't want them on (and presumably not showing on the buttons you DO want them on) and then add in any remaining functions via xbindkeys. The net result of this work should be a set of buttons on your MX1000 that do what you want.<br />
<br />
Start by making sure that you have no legacy "xmodmap" commands in your startup sequence. Also, if you have a file called .xbindkeysrc in your home directory, move it out of there to somewhere else. Restart X. <br />
<br />
Now, to start the mouse setup, we need to map out the mouse in its "raw" (totally unmapped) state, and understand what buttons are recognized via evdev and what function each of these buttons does in your application(s) of interest, usually file managers and web browsers. <br />
<br />
To do this, open an xterm and type:<br />
<br />
xev | grep -i button<br />
<br />
Move your mouse pointer into the xev window and systematically move through each button on your mouse. Click the button and write down the button number (referred to hereafter as the "logical button number" for that button) that xev reports. When done, you can close xev. Next, go to you application of choice, usually your web browser, and try out each button there, noting down what function it performs. <br />
<br />
<br />
When you are done with this, you will have a complete map of your mouse in its "raw" state:<br />
<br />
* Which buttons are recognized<br />
* The xev logical button number for each physical button on the mouse<br />
* What function each button performs in your application(s) of choice<br />
<br />
<br />
When I did this for the MX1000 under Arch 2007.08, I got the following:<br />
<br />
Mouse Button xev Button Number Current Fn Desired Fn<br><br />
----------------------------------------------------------------------------<br><br />
Left Click 1 Left Click Left Click<br> <br />
Scroll Wheel Center Click 2 Center Click Center Click<br><br />
Right Click 3 Right Click Right Click<br><br />
Scroll Fwd Roll 4 Scroll Fwd Scroll Fwd<br><br />
Scroll Back Roll 5 Scroll Back Scroll Back<br><br />
Back Thumb Button 8 None Browser Back<br><br />
Forward Thumb Button 9 None Browser Fwd<br><br />
Center Thumb Button 10 None None<br><br />
Scroll Fwd Button 11 None None<br><br />
Scroll Back Button 12 None None<br><br />
Left Horizontal Scroll 13 None Left Scroll<br><br />
Right Horizontal Scroll 14 None Right Scroll<br><br />
<br />
Note that xev button numbers 6 and 7 are not defined by the above. evdev does not report any of the MX1000 buttons as button numbers 6 or 7.<br />
<br />
Looking at the above, we see that we have no desired functions showing up on the wrong buttons, but we do have several desired functions that simply don't show up at all. So, the good news is that we don't need to fiddle with the infamous xmodmap command at all to get our MX1000 doing what we want it to.<br />
<br />
<br />
== A Brief Digression - Moving Functions Amongst Mouse Buttons ==<br />
<br />
A brief digression in the interests of completeness. What if we DID have functions showing up on the wrong buttons? How would we re-arrange them so that the desired functions showed up on the desired buttons? This is where xmodmap comes into play. In general, xmodmap maps logical buttons onto physical buttons. In the below:<br />
<br />
xmodmap -e "pointer = 1 2 3 4 5 6 7 8 9 10 11 12 13 14"<br />
<br />
xmodmap maps logical buttons 1 - 14 onto identically the same physical buttons. The physical button number is implied; the numbers that you type represent the logical button number that will be reported when the associated physical button is pressed. Hence, the above statement is in essence a nil operation. It changes nothing. <br />
<br />
However, as an example, lets assume that we had the Browser Back and Browser Forward functions showing up on Buttons 6 and 7 and that we wanted them on buttons 8 and 9 (this is NOT the case for the MX1000 - it is just being used as an example). In this case, the following statement would achieve the desired remapping:<br />
<br />
xmodmap -e "pointer = 1 2 3 4 5 8 9 6 7 10 11 12 13 14"<br />
<br />
As you can see, this statement maps logical button 8 into the position of physical button 6, logical button 9 into the position of physical button 7 and so on. Hence, when physical button 6 is pressed, the original function of physical button 8 will be reported by evdev. Similarly, when physical button 7 is pressed, the original function of physical button 9 will be reported. In case you are experiencing temporary confusion about the actual buttons on your mouse and the physical buttons numbers being referred to here, remember that you established the evdev mapping between the actual buttons on your MX1000 and the physical button numbers being discussed here when you mapped the mouse in its "raw" state above.<br />
<br />
This ends the digression. In case you ever do need to do this with another mouse, you now know how to use xmodmap to move logical functions around between buttons on your mouse.<br />
<br />
= Enable Thumb Button Forward and Back =<br />
<br />
Back to the MX1000. As we discovered from our mapping exercise, there are no functions showing up on the wrong mouse buttons, just several functions that are not showing up at all. We will use xbindkeys to resolve this, by discovering the keystrokes that cause the browser to do the desired function, and then mapping those keystrokes onto the mouse buttons of interest.<br />
<br />
Unfortunately, the only way to determine the keystrokes that produce the desired result is to experiment until you find them. For Firefox, it turns out that ALT-Left_Arrow causes the browser to perform the Back function, and ALT-Right_Arrow causes it to do the Forward function. So, we wish to map MX1000 physical button 8 (the Back thumb button) to ALT+Left_Arrow and MX1000 physical button 9 (the Forward thumb button) to ALT+Right_Arrow.<br />
<br />
To do this mapping, get and install xvkbd and xbindkeys. <br />
<br />
For Arch, this means:<br />
<br />
# pacman --sync xvkbd<br />
# pacman --sync xbindkeys<br />
<br />
Now create file ~/.xbindkeysrc, containing:<br />
<br />
# Mouse Buttons<br />
"/usr/bin/xvkbd -xsendevent -text "\[Alt_L]\[Left]""<br />
m:0x0 + b:8 <br />
"/usr/bin/xvkbd -xsendevent -text "\[Alt_L]\[Right]""<br />
m:0x0 + b:9<br />
<br />
and add the following to your .xinitrc, or somewhere where it will be executed each time X starts:<br />
<br />
% xbindkeys<br />
<br />
At this point, the MX1000's Forward and Back buttons should be doing your bidding in at least Firefox. Now what about horizontal scrolling?<br />
<br />
<br />
= Enable Scroll Wheel Tilt Horizontal Scrolling =<br />
<br />
The MX1000 comes with a tilting scroll wheel. If you tilt it to the left, the intent is that the screen should scroll to the left. Tilt it to the right and the screen should scroll to the right. To get this function working in Firefox, we need to discover the keystrokes that cause Firefox to scroll left and right and then map those onto MX1000 physical buttons 13 and 14 respectively (the scroll wheel's tilt left and right button numbers, as we discovered above when we mapped the mouse in its "raw" state via xev. <br />
<br />
So, what are the required keystrokes? Like the above, it turns out that you have to determine which keys they are through trial and error unfortunately. For Firefox, you will eventually discover that a left arrow key scrolls the screen the left and a right arrow key scrolls it to the right. So, our objective is to map MX1000 physical button 13 to Left_Arrow and MX1000 physical button 14 to Right_Arrow. <br />
<br />
To do this, simply add the following to the .xbindkeysrc we created above:<br />
<br />
"/usr/bin/xvkbd -xsendevent -text "\[Left]""<br />
m:0x0 + b:13<br />
"/usr/bin/xvkbd -xsendevent -text "\[Right]""<br />
m:0x0 + b:14<br />
<br />
That is it. Restart X and you will find that left and right scrolling now work just fine!<br />
<br />
= Enable Scroll Wheel Front, Back Button Scrolling =<br />
<br />
The MX1000 has a button immediately in front of the scroll wheel and one immediately behind the scroll wheel. These are intended to be a click-able way of scrolling up and down in addition to the "roll the scroll wheel" way. Per the above initial mapping of the mouse, we have seen that evdev reports these as buttons 11 and 12.<br />
<br />
By trial and error, we can learn that Firefox performs scrolling up and down when the Up Arrow key and the Down Arrow key respectively are pressed. If you have a number pad on your keyboard, and Numlock is off, this same is true of the number pad 8 and 2 keys.<br />
<br />
To enable the scroll wheel buttons, simply add a little more to your ~/.xbindkeysrc, per:<br />
<br />
"/usr/bin/xvkbd -xsendevent -text "\[Up]""<br />
m:0x0 + b:11<br />
"/usr/bin/xvkbd -xsendevent -text "\[Down]""<br />
m:0x0 + b:12<br />
<br />
= One Button Left =<br />
<br />
There is a button on the MX1000 in the middle between the Forward and Back thumb buttons that I believe Logitech calls the Tasks button. I have never found a use for this particular button, but as we saw above, evdev reports it as button 10:<br />
<br />
Using the ~/.xbindkeysrc approach, you should be able to map this button onto any function that you may find useful. Good luck!<br />
<br />
= Summary =<br />
<br />
At this point, your MX1000 should be working exactly to your taste. In summary, what we have done is:<br />
<br />
* Installed evdev and used it as the xorg driver for our MX1000 mouse<br />
* Mapped the mouse with xev to determine what buttons are recognized by evdev and what their logical button number is<br />
* Moved any functions that were showing up on the wrong buttons onto the desired buttons (we didn't need to do this with the MX1000, but it is something that will frequently be needed for other mice, so we went through it for completeness)<br />
* Mapped some desired functions onto the intended buttons via xbindkeys<br />
<br />
<br />
Of course, this is not MX1000 specific at all - you can apply these steps to ANY mouse and get it working too.<br />
<br />
All done! Simple n'est pas? :-) Enjoy your MX1000!<br />
<br />
[[Category:Mouse]]<br />
[[Category:Specific Mice]]</div>Gladstonehttps://wiki.archlinux.org/index.php?title=Logitech_Marble_Mouse&diff=63352Logitech Marble Mouse2009-02-28T13:47:27Z<p>Gladstone: </p>
<hr />
<div>Well, it is a trackball, actually ;-), it has 4 buttons (2 big and 2 small), and a comfortable ball in the middle. Let's see how to to use them all in a handy way.<br />
<br />
=== Xorg configuration: three buttons + vertical and horizontal scroll ===<br />
<br />
Fully configuring the [http://www.logitech.com/index.cfm/mice_pointers/trackballs/devices/156&cl=us,en Marble&reg; Mouse] for Xorg is easy but somewhat tricky.<br />
<br />
The mouse device entry in <tt>/etc/X11/xorg.conf</tt> should look like this:<br />
<br />
Section "InputDevice"<br />
Identifier "Mouse0"<br />
Driver "mouse"<br />
Option "CorePointer"<br />
Option "Device" "/dev/input/mice"<br />
Option "Protocol" "ExplorerPS/2"<br />
Option "Buttons" "9"<br />
Option "ZAxisMapping" "4 5"<br />
Option "XAxisMapping" "6 7"<br />
Option "EmulateWheel" "true"<br />
Option "EmulateWheelButton" "9"<br />
EndSection<br />
<br />
The <tt>"Auto"</tt> option for <tt>"Protocol"</tt> works fine, too.<br />
Of course you can use the name you prefer as the <tt>Identifier</tt>, as long as it's the same you use as <tt>InputDevice</tt> in the <tt>Section "ServerLayout"</tt> .<br />
<br />
Now the mouse is configured with the necessary number of buttons. The next step is adding the following line in your <tt>~/.Xmodmap</tt> file:<br />
<br />
pointer = 1 8 3 4 5 6 7 2 9 10 11 12 13<br />
<br />
or, alternatively, this one in <tt>~/.xinitrc</tt> (''before'' the <tt>exec</tt> line, of course):<br />
<br />
xmodmap -e "pointer = 1 8 3 4 5 6 7 2 9 10 11 12 13"<br />
<br />
This configuration makes the following assignments:<br />
* ''left click'': left big button<br />
* ''middle click'': left little button<br />
* ''right click'': right big button<br />
* ''scrolling ('''both''' vertical and horizontal)'': right little button + ball movement<br />
<br />
This button layout is the most obvious, but is actually more comfortable when using the trackball with the left hand, (because I find easier to double-click with the ring finger than with the thumb, and moving the ball while pressing the right little button with the left thumb).<br />
<br />
If you are right-handed you may prefer these assignments:<br />
* ''left click'': right big button<br />
* ''middle click'': right little button<br />
* ''right click'': left big button<br />
* ''scrolling'': left little button + ball movement<br />
<br />
This is achieved with<br />
<br />
Option "EmulateWheelButton" "8"<br />
<br />
instead of <tt>"9"</tt> in <tt>/etc/X11/xorg</tt> , and<br />
<br />
pointer = 3 9 1 4 5 6 7 8 2 10 11 12 13<br />
<br />
in <tt>~/.Xmodmap</tt> or<br />
<br />
xmodmap -e "pointer = 3 9 1 4 5 6 7 8 2 10 11 12 13"<br />
<br />
in <tt>~/.xinitrc</tt> .<br />
<br />
=== Configuration using Xorg input hotplugging ===<br />
<br />
Marble mouse trackball can be configured to work with xorg input hotplugging. The configuration described below makes the ball act like a scroll wheel when the small right button is pressed -- if you're left-handed you'll probably want to change the "EmulateWheelButton" to "9". This solution requires xf86-input-evdev driver '''version 2.1.0''' (or later), as well as the following fdi file:<br />
<br />
<deviceinfo version="0.2"><br />
<device><br />
<match key="info.product" string="Logitech USB Trackball"><br />
<merge key="input.x11_options.EmulateWheel" type="string">true</merge><br />
<merge key="input.x11_options.EmulateWheelTimeout" type="string">200</merge><br />
<merge key="input.x11_options.EmulateWheelButton" type="string">8</merge><br />
<merge key="input.x11_options.XAxisMapping" type="string">6 7</merge><br />
<merge key="input.x11_options.YAxisMapping" type="string">4 5</merge><br />
<merge key="input.x11_options.Emulate3Buttons" type="string">true</merge><br />
</match><br />
</device><br />
</deviceinfo><br />
<br />
The file should be saved to /etc/hal/fdi/policy directory -- the filename itself is not important, so you can save it as 10-marblemouse.fdi, for example. If your Marble mouse is connected to the computer using PS/2 connector rather than USB you'll need to replace "Logitech USB Trackball" with "ImExPS/2 Logitech Explorer Mouse" in the "info.product" line above.<br />
<br />
You'll need to restart hal and xorg-server for the changes to take effect.<br />
<br />
=== Console configuration (gpm) ===<br />
<br />
In the console you can use <tt>gpm</tt> (see [[How_to_use_a_mouse_in_the_console]]), but the type option should be set to <tt>imps2</tt>: edit <tt>/etc/conf.d/gpm</tt> to show<br />
<br />
GPM_ARGS="-m /dev/input/mice -t imps2"<br />
<br />
This lets yow use the left big button as left click (selects text), the right ones as right click (extends the selection) and the little left one as middle click (pastes the selection).<br />
<br />
<br />
=== Firefox tweaking ===<br />
<br />
By default firefox maps the horizontal scroll to back/forth navigation, which is really annoying because it's nearly impossible to scroll vertically with the ball without accidentally triggering those ones.<br />
<br />
The fix is simple: put <tt>about:config</tt> in the url bar and set <code>mousewheel.horizscroll.withnokey.action</code> to <br />
<code>0</code>.<br />
<br />
I like to set <code>mousewheel.horizscroll.withnokey.numlines</code> to <code>1</code>, too.<br />
<br />
[[Category:HOWTOs (English)]]<br />
[[Category:Mouse]]<br />
[[Category:Specific Mice]]</div>Gladstonehttps://wiki.archlinux.org/index.php?title=Logitech_Marble&diff=63351Logitech Marble2009-02-28T13:44:53Z<p>Gladstone: moved Logitech Marble to Logitech Marble Mouse over redirect: My mistake, this mouse is actually called: "Logitech Marble Mouse"</p>
<hr />
<div>#REDIRECT [[Logitech Marble Mouse]]</div>Gladstonehttps://wiki.archlinux.org/index.php?title=Logitech_Marble_Mouse&diff=63350Logitech Marble Mouse2009-02-28T13:44:53Z<p>Gladstone: moved Logitech Marble to Logitech Marble Mouse over redirect: My mistake, this mouse is actually called: "Logitech Marble Mouse"</p>
<hr />
<div>Well, it is a trackball, actually ;-), it has 4 buttons (2 big and 2 small), and a comfortable ball in the middle. Let's see how to to use them all in a handy way.<br />
<br />
=== Xorg configuration: three buttons + vertical and horizontal scroll ===<br />
<br />
Fully configuring the [http://www.logitech.com/index.cfm/mice_pointers/trackballs/devices/156&cl=us,en Marble&reg; Mouse] for Xorg is easy but somewhat tricky.<br />
<br />
The mouse device entry in <tt>/etc/X11/xorg.conf</tt> should look like this:<br />
<br />
Section "InputDevice"<br />
Identifier "Mouse0"<br />
Driver "mouse"<br />
Option "CorePointer"<br />
Option "Device" "/dev/input/mice"<br />
Option "Protocol" "ExplorerPS/2"<br />
Option "Buttons" "9"<br />
Option "ZAxisMapping" "4 5"<br />
Option "XAxisMapping" "6 7"<br />
Option "EmulateWheel" "true"<br />
Option "EmulateWheelButton" "9"<br />
EndSection<br />
<br />
The <tt>"Auto"</tt> option for <tt>"Protocol"</tt> works fine, too.<br />
Of course you can use the name you prefer as the <tt>Identifier</tt>, as long as it's the same you use as <tt>InputDevice</tt> in the <tt>Section "ServerLayout"</tt> .<br />
<br />
Now the mouse is configured with the necessary number of buttons. The next step is adding the following line in your <tt>~/.Xmodmap</tt> file:<br />
<br />
pointer = 1 8 3 4 5 6 7 2 9 10 11 12 13<br />
<br />
or, alternatively, this one in <tt>~/.xinitrc</tt> (''before'' the <tt>exec</tt> line, of course):<br />
<br />
xmodmap -e "pointer = 1 8 3 4 5 6 7 2 9 10 11 12 13"<br />
<br />
This configuration makes the following assignments:<br />
* ''left click'': left big button<br />
* ''middle click'': left little button<br />
* ''right click'': right big button<br />
* ''scrolling ('''both''' vertical and horizontal)'': right little button + ball movement<br />
<br />
This button layout is the most obvious, but is actually more comfortable when using the trackball with the left hand, (because I find easier to double-click with the ring finger than with the thumb, and moving the ball while pressing the right little button with the left thumb).<br />
<br />
If you are right-handed you may prefer these assignments:<br />
* ''left click'': right big button<br />
* ''middle click'': right little button<br />
* ''right click'': left big button<br />
* ''scrolling'': left little button + ball movement<br />
<br />
This is achieved with<br />
<br />
Option "EmulateWheelButton" "8"<br />
<br />
instead of <tt>"9"</tt> in <tt>/etc/X11/xorg</tt> , and<br />
<br />
pointer = 3 9 1 4 5 6 7 8 2 10 11 12 13<br />
<br />
in <tt>~/.Xmodmap</tt> or<br />
<br />
xmodmap -e "pointer = 3 9 1 4 5 6 7 8 2 10 11 12 13"<br />
<br />
in <tt>~/.xinitrc</tt> .<br />
<br />
=== Configuration using Xorg input hotplugging ===<br />
<br />
Marble mouse trackball can be configured to work with xorg input hotplugging. The configuration described below makes the ball act like a scroll wheel when the small right button is pressed -- if you're left-handed you'll probably want to change the "EmulateWheelButton" to "9". This solution requires xf86-input-evdev driver '''version 2.1.0''' (or later), as well as the following fdi file:<br />
<br />
<deviceinfo version="0.2"><br />
<device><br />
<match key="info.product" string="Logitech USB Trackball"><br />
<merge key="input.x11_options.EmulateWheel" type="string">true</merge><br />
<merge key="input.x11_options.EmulateWheelTimeout" type="string">200</merge><br />
<merge key="input.x11_options.EmulateWheelButton" type="string">8</merge><br />
<merge key="input.x11_options.XAxisMapping" type="string">6 7</merge><br />
<merge key="input.x11_options.YAxisMapping" type="string">4 5</merge><br />
<merge key="input.x11_options.Emulate3Buttons" type="string">true</merge><br />
</match><br />
</device><br />
</deviceinfo><br />
<br />
The file should be saved to /etc/hal/fdi/policy directory -- the filename itself is not important, so you can save it as 10-marblemouse.fdi, for example. If your Marble mouse is connected to the computer using PS/2 connector rather than USB you'll need to replace "Logitech USB Trackball" with "ImExPS/2 Logitech Explorer Mouse" in the "info.product" line above.<br />
<br />
You'll need to restart hal and xorg-server for the changes to take effect.<br />
<br />
=== Console configuration (gpm) ===<br />
<br />
In the console you can use <tt>gpm</tt> (see [[How_to_use_a_mouse_in_the_console]]), but the type option should be set to <tt>imps2</tt>: edit <tt>/etc/conf.d/gpm</tt> to show<br />
<br />
GPM_ARGS="-m /dev/input/mice -t imps2"<br />
<br />
This lets yow use the left big button as left click (selects text), the right ones as right click (extends the selection) and the little left one as middle click (pastes the selection).<br />
<br />
<br />
=== Firefox tweaking ===<br />
<br />
By default firefox maps the horizontal scroll to back/forth navigation, which is really annoying because it's nearly impossible to scroll vertically with the ball without accidentally triggering those ones.<br />
<br />
The fix is simple: put <tt>about:config</tt> in the url bar and set <code>mousewheel.horizscroll.withnokey.action</code> to <br />
<code>0</code>.<br />
<br />
I like to set <code>mousewheel.horizscroll.withnokey.numlines</code> to <code>1</code>, too.<br />
<br />
[[Category:HOWTOs (English)]]<br />
[[Category:Mouse]]</div>Gladstone