https://wiki.archlinux.org/api.php?action=feedcontributions&user=Ygyfygy&feedformat=atomArchWiki - User contributions [en]2024-03-29T00:23:08ZUser contributionsMediaWiki 1.41.0https://wiki.archlinux.org/index.php?title=Swap&diff=436601Swap2016-05-28T18:11:41Z<p>Ygyfygy: /* Swap file creation */ cosmetics</p>
<hr />
<div>[[Category:File systems]]<br />
[[es:Swap]]<br />
[[fr:Swap]]<br />
[[hu:Swap]]<br />
[[it:Swap]]<br />
[[ja:スワップ]]<br />
[[pt:Swap]]<br />
[[zh-CN:Swap]]<br />
{{Related articles start}}<br />
{{Related|Zswap}}<br />
{{Related|Swap on video ram}}<br />
{{Related|fstab}}<br />
{{Related|Suspend and hibernate}}<br />
{{Related|Dm-crypt/Swap encryption}}<br />
{{Related articles end}}<br />
This page provides an introduction to swap space and paging on GNU/Linux. It covers creation and activation of swap partitions and swap files.<br />
<br />
From [http://www.linux.com/news/software/applications/8208-all-about-linux-swap-space All about Linux swap space]:<br />
<br />
:''Linux divides its physical RAM (random access memory) into chunks of memory called pages. Swapping is the process whereby a page of memory is copied to the preconfigured space on the hard disk, called swap space, to free up that page of memory. The combined sizes of the physical memory and the swap space is the amount of virtual memory available.''<br />
<br />
Support for swap is provided by the Linux kernel and user-space utilities from the {{Pkg|util-linux}} package.<br />
<br />
== Swap space ==<br />
Swap space will usually be a disk partition but can also be a file. Users may create a swap space during installation of Arch Linux or at any later time should it become necessary. Swap space is generally recommended for users with less than 1 GB of RAM, but becomes more a matter of personal preference on systems with gratuitous amounts of physical RAM (though it is required for suspend-to-disk support).<br />
<br />
To check swap status, use:<br />
$ swapon --show<br />
<br />
Or:<br />
$ free -h<br />
<br />
{{Note|There is no performance advantage to either a contiguous swap file or a partition, both are treated the same way.}}<br />
<br />
== Swap partition ==<br />
<br />
A swap partition can be created with most GNU/Linux partitioning tools (e.g. {{ic|fdisk}}, {{ic|cfdisk}}). Swap partitions are typically designated as type '''82''', however it is possible to use any partition type as swap.<br />
<br />
To set up a Linux swap area, the {{ic|mkswap}} command is used. For example:<br />
# mkswap /dev/sda2<br />
<br />
{{Warning|All data on the specified partition will be lost.}}<br />
<br />
The ''mkswap'' utility generates a UUID for the partition by default, use the {{ic|-U}} flag in case you want to specify custom UUID:<br />
# mkswap -U ''custom_UUID'' /dev/sda2<br />
<br />
To enable the device for paging:<br />
# swapon /dev/sda2<br />
<br />
To enable this swap partition on boot, add an entry to [[fstab]]:<br />
<br />
{{hc|/etc/fstab|/dev/sda2 none swap defaults 0 0}}<br />
<br />
{{Note|<br />
* Adding an entry to fstab is optional in most cases with systemd. See the next subsection.<br />
* If using an SSD with TRIM support, consider using {{ic|defaults,discard}} in the swap line in [[fstab]]. If activating swap manually with ''swapon'', using the {{ic|-d}} or {{ic|--discard}} parameter achieves the same. See {{ic|man 8 swapon}} for details.<br />
}}<br />
{{Warning|Enabling discard on RAID setups using mdadm will cause system lockup on boot and during runtime, if using swapon.}} <br />
<br />
=== Activation by systemd ===<br />
<br />
systemd activates swap partitions based on two different mechanisms, both are executables in {{ic|/usr/lib/systemd/system-generators}}. The generators are run on start-up and create native systemd units for mounts. The first, {{ic|systemd-fstab-generator}}, reads the fstab to generate units, including a unit for swap. The second, {{ic|systemd-gpt-auto-generator}} inspects the root disk to generate units. It operates on GPT disks only, and can identify swap partitions by their type code '''82'''.<br />
<br />
This can be solved by one of the following options:<br />
<br />
* removing the swap entry from {{ic|/etc/fstab}}<br />
* changing the swap partition's type code from '''82''' to an arbitrary type code<br />
* setting the attribute of the swap partition to "'''63''': do not automount"<br />
<br />
=== Disabling swap ===<br />
<br />
To deactivate specific swap space:<br />
# swapoff /dev/sda2<br />
<br />
Alternatively use the {{ic|-a}} switch to deactivate all swap space.<br />
<br />
Since swap is managed by systemd, it will be activated again on the next system startup. To disable the automatic activation of detected swap space permanently, run {{ic|systemctl --type swap}} to find the responsible ''.swap'' unit and [[mask]] it.<br />
<br />
== Swap file ==<br />
<br />
As an alternative to creating an entire partition, a swap file offers the ability to vary its size on-the-fly, and is more easily removed altogether. This may be especially desirable if disk space is at a premium (e.g. a modestly-sized SSD).<br />
<br />
{{Warning|[[Btrfs]] does not support swap files. Failure to heed this warning may result in file system corruption. While a swap file may be used on Btrfs when mounted through a loop device, this will result in severely degraded swap performance.}}<br />
<br />
=== Swap file creation ===<br />
<br />
As root use {{ic|fallocate}} to create a swap file the size of your choosing (M = Megabytes, G = Gigabytes). For example, creating a 512 MB swap file:<br />
<br />
# fallocate -l 512M /swapfile<br />
<br />
{{Note|1=''fallocate'' may cause problems with some file systems such as [[F2FS]] or [[XFS]].[https://bugzilla.redhat.com/show_bug.cgi?id=1129205#c3] As an alternative, using ''dd'' is more reliable, but slower:<br />
{{bc|1=# dd if=/dev/zero of=/swapfile bs=1M count=512}}<br />
}}<br />
<br />
Set the right permissions (a word-readable swap file is a huge local vulnerability):<br />
<br />
# chmod 600 /swapfile<br />
<br />
After creating the correctly sized file, format it to swap:<br />
<br />
# mkswap /swapfile<br />
<br />
Activate the swap file:<br />
<br />
# swapon /swapfile<br />
<br />
Finally, edit [[Fstab#File_example|fstab]] to add an entry for the swap file:<br />
<br />
{{hc|/etc/fstab|/swapfile none swap defaults 0 0}}<br />
<br />
=== Remove swap file ===<br />
<br />
To remove a swap file, the current swap file must be turned off.<br />
<br />
As root:<br />
<br />
# swapoff -a<br />
<br />
Remove swap file:<br />
<br />
# rm -f /swapfile<br />
<br />
Finally remove the relevant entry from {{ic|/etc/fstab}}.<br />
<br />
== Swap with USB device ==<br />
<br />
Thanks to the modularity offered by Linux, we can have multiple swap partitions spread over different devices. If you have a very full hard disk, a USB device can be used as a swap partition temporarily. However, this method has some severe disadvantages:<br />
* A USB device is slower than a hard disk<br />
* Flash memory has a limited number of write cycles. Using it as a swap partition can kill it quickly<br />
<br />
To add a USB device to swap, first take a USB flash drive and partition it for swap as described in [[#Swap partition]].<br />
<br />
Next open {{ic|/etc/fstab}}.<br />
<br />
Now add the following entry, just under the current swap entry, which take the current swap partition over the new USB one<br />
<br />
UUID=... none swap defaults,pri=10 0 0<br />
<br />
where the UUID is taken from the command:<br />
<br />
ls -l /dev/disk/by-uuid/ | grep /dev/sdc1<br />
<br />
Just replace sdc1 with your new USB swap partition. {{ic|sdb1}}<br />
<br />
{{Tip|The UUID is used because when other devices are attached to the computer, the device order could be changed}}<br />
<br />
Last, add<br />
<br />
pri=0<br />
<br />
in the ''original'' swap entry so that the USB swap partition will take priority over the old swap partition.<br />
<br />
This guide will work for other memory such as SD cards, etc.<br />
<br />
== Swap encryption ==<br />
<br />
See [[dm-crypt/Swap encryption]].<br />
<br />
== Performance Tuning ==<br />
<br />
Swap values can be adjusted to help performance.<br />
<br />
=== Swappiness ===<br />
<br />
The ''swappiness'' [[sysctl]] parameter represents the kernel's preference (or avoidance) of swap space. Swappiness can have a value between 0 and 100, the default value is 60. Setting this parameter to a low value will reduce swapping from RAM, and is known to improve responsiveness on many systems.<br />
<br />
To check the current swappiness value:<br />
<br />
$ cat /proc/sys/vm/swappiness<br />
<br />
To temporarily set the swappiness value:<br />
<br />
# sysctl vm.swappiness=10<br />
<br />
To set the swappiness value permanently, edit a ''sysctl'' configuration file<br />
<br />
{{hc|/etc/sysctl.d/99-sysctl.conf|2=<br />
vm.swappiness=10<br />
}}<br />
<br />
To test and more on why this may work, take a look at [http://rudd-o.com/en/linux-and-free-software/tales-from-responsivenessland-why-linux-feels-slow-and-how-to-fix-that this article].<br />
<br />
Another ''sysctl'' parameter that affects swap performance is {{ic|vm.vfs_cache_pressure}}, which controls the tendency of the kernel to reclaim the memory which is used for caching of VFS caches, versus pagecache and swap. Increasing this value increases the rate at which VFS caches are reclaimed.[http://doc.opensuse.org/products/draft/SLES/SLES-tuning_sd_draft/cha.tuning.memory.html#cha.tuning.memory.vm.reclaim] For more information, see the [https://www.kernel.org/doc/Documentation/sysctl/vm.txt Linux kernel documentation].<br />
<br />
=== Priority ===<br />
<br />
If you have more than one swap file or swap partition you should consider assigning a priority value (0 to 32767) for each swap area. The system will use swap areas of higher priority before using swap areas of lower priority. For example, if you have a faster disk ({{ic|/dev/sda}}) and a slower disk ({{ic|/dev/sdb}}), assign a higher priority to the swap area located on the faster device. Priorities can be assigned in fstab via the {{ic|1=pri}} parameter:<br />
<br />
/dev/sda1 none swap defaults,pri=100 0 0<br />
/dev/sdb2 none swap defaults,pri=10 0 0<br />
<br />
Or via the {{ic|-p}} (or {{ic|--priority}}) parameter of swapon:<br />
<br />
# swapon -p 100 /dev/sda1<br />
<br />
If two or more areas have the same priority, and it is the highest priority available, pages are allocated on a round-robin basis between them.<br />
<br />
== Striping ==<br />
<br />
There is no necessity to use [[RAID]] for swap performance reasons. The kernel itself can stripe swapping on several devices, if you just give them the same priority in the {{ic|/etc/fstab}} file. Refer to [http://unthought.net/Software-RAID.HOWTO/Software-RAID.HOWTO-2.html#ss2.3 The Software-RAID HOWTO] for details.</div>Ygyfygyhttps://wiki.archlinux.org/index.php?title=RTorrent&diff=429636RTorrent2016-04-04T17:07:47Z<p>Ygyfygy: /* systemd service file with tmux or screen */ Wrote how to attach to screen.</p>
<hr />
<div>{{DISPLAYTITLE:rTorrent}}<br />
[[Category:Internet applications]]<br />
[[es:RTorrent]]<br />
[[ja:RTorrent]]<br />
[[ru:RTorrent]]<br />
[[zh-CN:RTorrent]]<br />
[https://rakshasa.github.io/rtorrent/ rTorrent] is a quick and efficient BitTorrent client that uses, and is in development alongside, the libTorrent (not to be confused with {{Pkg|libtorrent-rasterbar}}) library. It is written in C++ and uses the [[Wikipedia:ncurses|ncurses]] programming library, which means it uses a text user interface. When combined with a terminal multiplexer (e.g. [[GNU Screen]] or [[Tmux]]) and [[Secure Shell]], it becomes a convenient remote [[Wikipedia:BitTorrent (protocol)#Operation|BitTorrent client]].<br />
<br />
== Installation ==<br />
<br />
[[Install]] the {{Pkg|rtorrent}} package that is available in the [[official repositories]].<br />
<br />
Alternatively, install {{AUR|rtorrent-git}} or {{AUR|rtorrent-vi-color}} or {{AUR|rtorrent-extended}}{{Broken package link|{{aur-mirror|rtorrent-extended}}}} from the [[AUR]].<br />
<br />
== Configuration ==<br />
<br />
{{Note|See the rTorrent wiki article on this subject for more information: [http://web.archive.org/web/20140213003955/http://libtorrent.rakshasa.no/wiki/RTorrentCommonTasks Common Tasks in rTorrent for Dummies].}}<br />
<br />
Before running rTorrent, find the example configuration file {{ic|/usr/share/doc/rtorrent/rtorrent.rc}} and copy it to {{ic|~/.rtorrent.rc}}:<br />
<br />
$ cp /usr/share/doc/rtorrent/rtorrent.rc ~/.rtorrent.rc<br />
<br />
=== Performance ===<br />
<br />
{{Note|See the rTorrent wiki article on this subject for more information: [http://web.archive.org/web/20140213011439/http://libtorrent.rakshasa.no/wiki/RTorrentPerformanceTuning Performance Tuning]}}<br />
<br />
The values for the following options are dependent on the system's hardware and Internet connection speed. To find the optimal values read: [http://torrentfreak.com/optimize-your-BitTorrent-download-speed Optimize Your BitTorrent Download Speed]<br />
{{bc|<nowiki><br />
min_peers = 40<br />
max_peers = 52<br />
<br />
min_peers_seed = 10<br />
max_peers_seed = 52<br />
<br />
max_uploads = 8<br />
<br />
download_rate = 200<br />
upload_rate = 28<br />
</nowiki>}}<br />
<br />
The {{ic|check_hash}} option executes a hash check when a torrent download is complete or rTorrent is started. When starting, it checks for errors in your completed files. <br />
check_hash = yes<br />
<br />
=== Create and manage files ===<br />
<br />
The {{ic|directory}} option will determine where your torrent data will be saved (could be a relative path):<br />
directory = ~/downloaded<br />
<br />
The {{ic|session}} option allows rTorrent to save the progess of your torrents. It is recommended to create a directory in home directory (e.g. {{ic|mkdir ~/.rtorrent.session}}).<br />
session = ~/.rtorrent.session<br />
<br />
The {{ic|schedule}} option has rTorrent watch a particular directory for new torrent files. Saving a torrent file to this directory will automatically start the download. Remember to create the directory that will be watched (e.g. {{ic|mkdir ~/watch}}). Also, be careful when using this option as rTorrent will move the torrent file to your session folder and rename it to its hash value.<br />
schedule = watch_directory,5,5,load_start=/home/''user''/watch/*.torrent<br />
schedule = untied_directory,5,5,stop_untied=<br />
schedule = tied_directory,5,5,start_tied=<br />
<br />
The following {{ic|schedule}} option is intended to stop rTorrent from downloading data when disk space is low.<br />
schedule = low_diskspace,5,60,close_low_diskspace=100M<br />
<br />
=== Port configuration ===<br />
<br />
The {{ic|port_range}} option sets which port(s) to use for listening. It is recommended to use a port that is higher than 49152 (see: [[Wikipedia:List of TCP and UDP port numbers|List of port numbers]]). Although, rTorrent allows a range of ports, a single port is recommended.<br />
port_range = 49164-49164<br />
<br />
Additionally, make sure port forwarding is enabled for the proper port(s) (see: [http://portforward.com/english/routers/port_forwarding/routerindex.htm Port Forward guides]).<br />
<br />
=== Additional settings ===<br />
<br />
The {{ic|encryption}} option enables or disables encryption. It is very important to enable this option, not only for yourself, but also for your peers in the torrent swarm. Some users need to obscure their bandwidth usage from their ISP. And it does not hurt to enable it even if you do not need the added security.<br />
encryption = allow_incoming,try_outgoing,enable_retry<br />
It is also possible to force all connections to use encryption. However, be aware that this stricter rule will reduce your client's availability:<br />
encryption = require,require_RC4,allow_incoming,try_outgoing<br />
<br />
See also [[Wikipedia:BitTorrent Protocol Encryption]].<br />
<br />
This final {{ic|dht}} option enables [[Wikipedia:Distributed hash table|DHT]] support. DHT is common among public trackers and will allow the client to acquire more peers.<br />
{{bc|<nowiki><br />
dht = auto<br />
dht_port = 6881<br />
peer_exchange = yes<br />
</nowiki>}}<br />
<br />
== Key bindings ==<br />
<br />
rTorrent relies exclusively on keyboard shortcuts for user input. A quick reference is available in the table below. A complete guide is available on the rTorrent wiki (see: [https://github.com/rakshasa/rtorrent/wiki/User-Guide rTorrent User Guide]).<br />
<br />
{{Note|Striking {{ic|Ctrl-q}} twice in quick succession will make rTorrent shutdown without waiting to send a stop announce to the connected trackers.}}<br />
<br />
{| class="wikitable"<br />
|-<br />
!width="75" |Cmd<br />
!Action<br />
|-<br />
|Ctrl-q<br />
|Quit application<br />
|-<br />
|Ctrl-s<br />
|Start download. Runs hash first unless already done.<br />
|-<br />
|Ctrl-d<br />
|Stop an active download or remove a stopped download<br />
|-<br />
|Ctrl-k<br />
|Stop and close the files of an active download.<br />
|-<br />
|Ctrl-r<br />
|Initiate hash check of torrent. Starts downloading if file is not available.<br />
|-<br />
|Ctrl-o<br />
|Specify the download directory for a added, but not started torrent.<br />
|-<br />
|Left<br />
|Returns to the previous screen<br />
|-<br />
|Right<br />
|Goes to the next screen<br />
|-<br />
|Backspace<br />
|Adds and starts the specified *.torrent<br />
|-<br />
|Return<br />
|Adds and doesn't start the specified *.torrent<br />
|-<br />
|<nowiki>a|s|d</nowiki><br />
|<nowiki>Increase global upload throttle about 1|5|50 KB/s</nowiki><br />
|-<br />
|<nowiki>A|S|D</nowiki><br />
|<nowiki>Increase global download throttle about 1|5|50 KB/s</nowiki><br />
|-<br />
|<nowiki>z|x|c</nowiki><br />
|<nowiki>Decrease global upload throttle about 1|5|50 KB/s</nowiki><br />
|-<br />
|<nowiki>Z|X|C</nowiki><br />
|<nowiki>Decrease global download throttle about 1|5|50 KB/s</nowiki><br />
|}<br />
<br />
=== Redundant mapping ===<br />
<br />
{{ic|Ctrl-s}} is often used for terminal control to stop screen output while {{ic|Ctrl-q}} is used to start it. These mappings may interfere with rTorrent. Check to see if these terminal options are bound to a mapping:<br />
{{hc|$ stty -a|<nowiki>...<br />
swtch = <undef>; start = ^Q; stop = ^S; susp = ^Z; rprnt = ^R; werase = ^W; lnext = ^V;<br />
...<br />
</nowiki>}}<br />
<br />
To remove the mappings, change the terminal characteristics to undefine the aforementioned special characters (i.e. {{ic|stop}} and {{ic|start}}):<br />
# stty stop undef<br />
# stty start undef<br />
<br />
To remove these mappings automatically at startup you may add the two preceding commands to your {{ic|~/.bashrc}} file.<br />
<br />
== Additional tips ==<br />
<br />
=== systemd service file with tmux or screen ===<br />
<br />
*With tmux (Restart rtorrent if crashed)<br />
{{hc|/etc/systemd/user/rt.service|<nowiki><br />
[Unit]<br />
Description=rTorrent<br />
After=network.target<br />
<br />
[Service]<br />
Type=forking<br />
KillMode=none<br />
ExecStart=/usr/bin/tmux new-session -s rt -n rtorrent -d rtorrent<br />
ExecStop=/usr/bin/bash -c "/usr/bin/tmux send-keys -t rt:rtorrent.0 C-q && while pidof rtorrent > /dev/null; do sleep 0.5; echo rtorrent still running...; done"<br />
WorkingDirectory=%h<br />
Restart=on-failure<br />
<br />
[Install]<br />
WantedBy=default.target<br />
</nowiki>}}<br />
<br />
*With tmux running as user rtorrent (Restart rtorrent if crashed)<br />
{{hc|/etc/systemd/system/rtorrent.service|<nowiki><br />
[Unit]<br />
Description=rTorrent Daemon<br />
After=network.target<br />
<br />
[Service]<br />
Type=forking<br />
KillMode=none<br />
User=rtorrent<br />
ExecStart=/usr/bin/tmux new-session -c /mnt/storage/rtorrent -s rtorrent -n rtorrent -d rtorrent<br />
ExecStop=/usr/bin/bash -c "/usr/bin/tmux send-keys -t rtorrent C-q && while pidof rtorrent > /dev/null; do sleep 0.5; done"<br />
WorkingDirectory=/home/rtorrent/<br />
Restart=on-failure<br />
<br />
[Install]<br />
WantedBy=multi-user.target<br />
</nowiki>}}<br />
<br />
*With screen<br />
<br />
{{hc|/etc/systemd/user/rt.service|<nowiki><br />
[Unit]<br />
Description=rTorrent<br />
After=network.target<br />
<br />
[Service]<br />
Type=forking<br />
KillMode=none<br />
ExecStart=/usr/bin/screen -d -m -fa -S rtorrent /usr/bin/rtorrent<br />
ExecStop=/usr/bin/killall -w -s 2 /usr/bin/rtorrent<br />
WorkingDirectory=%h<br />
<br />
[Install]<br />
WantedBy=default.target<br />
</nowiki>}}<br />
<br />
Start at boot time:<br />
$ systemctl --user enable rt<br />
Start manually:<br />
$ systemctl --user start rt<br />
Stop:<br />
$ systemctl --user stop rt<br />
Attach to rtorrent's session:<br />
tmux attach -t rt<br />
Or if you use screen:<br />
screen -D -r rtorrent<br />
<br />
Detach:<br />
Ctrl-b d<br />
<br />
=== systemd service file with dtach ===<br />
<br />
{{Style|Creating multiple rtorrent sessions this way is far from perfect, why don't we just assume for simplicity that there is only one session? This is assumed in [[#systemd service file with tmux or screen]] anyway.}}<br />
<br />
When running dtach from systemd unit, the {{ic|TERM}} environment variable [[systemd/User#Environment_variables|has to be set explicitly]] for rtorrent to work.<br />
<br />
This service file has no restart because the author occasionally takes the drive in question offline, and rtorrent fails, shall we say, "suboptimally" when started in this scenario and loses many torrent specific settings such as the specific directories each torrent is stored in. In fact the symlinks that kick off rtorrent live on the relevant drive; if it is unmounted rtorrent cannot start. This use case of blocking rtorrent from starting is relevant to users who put the downloaded files on removable media such as NAS, USB or eSATA drives.<br />
<br />
{{hc|~/.config/systemd/user/rtorrent.service|<nowiki><br />
[Unit]<br />
Description=rTorrent<br />
#After=network.target<br />
<br />
[Service]<br />
# set TERM according to your terminal<br />
Environment="TERM=xterm"<br />
#Environment="TERM=linux" <br />
Type=forking<br />
KillMode=none<br />
ExecStart=-/usr/bin/dtach -n /home/sam/run/dtach_fifos/fifo -e "^T" /home/sam/bin/rtr_new -n -o import=/home/sam/.config/rtorrent/new_.rc <br />
# dtach -n <separate filename for each instance><br />
# <br />
# rtr_new -n to ignore the default .rtorrent.rc<br />
# rtr_new -o import to load the instance-specific rc<br />
ExecStop=-/usr/bin/killall -u sam -e -w -s INT /home/sam/bin/rtr_new<br />
<br />
[Install]<br />
WantedBy=multi-user.target<br />
</nowiki>}}<br />
<br />
Note some other issues exposed in this service file other than just dtach:<br />
<br />
{{ic|/home/sam/bin/rtr_new}} is a symlink to {{ic|/usr/bin/rtorrent}}<br />
<br />
This lets us run several instances and kill each one independently with a different version of the ExecStop, to wit:<br />
<br />
{{bc|1=ExecStop=-/usr/bin/killall -u sam -e -w -s INT /home/sam/bin/rtr_new<br />
ExecStop=-/usr/bin/killall -u sam -e -w -s INT /home/sam/bin/rtr_academic<br />
ExecStop=-/usr/bin/killall -u sam -e -w -s INT /home/sam/bin/rtr_other_stuff}}<br />
<br />
These are each in a different service file, each of which controls one instance.<br />
<br />
Without this step, when running multiple instances a killall solution would kill all the running rtorrent instances. <br />
<br />
If multiple rtorrent instances are not needed and the rtorrent rc file is in the default location the above service file may be simplified. The entire file is included but only the ExecStart and <br />
ExecStop lines change. <br />
<br />
{{hc|~/.config/systemd/user/rtorrent.service|<nowiki><br />
[Unit]<br />
Description=rTorrent<br />
#After=network.target<br />
<br />
[Service]<br />
# set TERM according to your terminal<br />
Environment="TERM=xterm"<br />
#Environment="TERM=linux" <br />
Type=forking<br />
KillMode=none<br />
ExecStart=-/usr/bin/dtach -n /home/sam/run/dtach_fifos/fifo -e "^T" /usr/bin/rtorrent <br />
# dtach -n <user specified FIFO name> -e <user specified character> /usr/bin/rtorrent <br />
ExecStop=/usr/bin/killall -w -s INT /usr/bin/rtorrent<br />
# -e (exact match) and -u (user name) were added above to stop specific processes<br />
# and may be omitted here because only one rtorrent will be running<br />
<br />
[Install]<br />
WantedBy=multi-user.target<br />
</nowiki>}}<br />
<br />
The service can be controlled with [[systemctl --user]]. When it is started, you can attach to the session:<br />
<br />
$ dtach -a /home/sam/run/dtach_fifos/fifo -e "^T"<br />
<br />
=== Pre-allocation ===<br />
<br />
The rTorrent package in the community repository lacks pre-allocation. Compiling rTorrent with pre-allocation allows files to be allocated before downloading the torrent. The major benefit is that it limits and avoids fragmentation of the filesystem. However, this introduces a delay during the pre-allocation if the filesystem does not support the fallocate syscall natively.<br />
<br />
Therefore this switch is recommended for xfs, ext4 and btrfs filesystems, which have native fallocate syscall support. They will see no delay during preallocation and no fragmented filesystem. Pre-allocation on others filesystems will cause a delay but will not fragment the files.<br />
<br />
To make pre-allocation available, recompile libTorrent from the [[ABS]] tree with the following new switch:<br />
$ ./configure --prefix=/usr --disable-debug --with-posix-fallocate<br />
<br />
To enable it, add the following to your {{ic|~/rtorrent.rc}}:<br />
{{hc|~/rtorrent.rc|<nowiki><br />
# Preallocate files; reduces defragmentation on filesystems.<br />
system.file_allocate.set = yes<br />
</nowiki>}}<br />
<br />
=== Manage completed files ===<br />
<br />
{{Note|<br />
*Currently, this part requires either the git version of rtorrent/libtorrent or having applied the patch to 0.8.6 that adds 'equal'.<br />
* If you are having trouble with this tip, it is probably easier to follow [http://web.archive.org/web/20140213003955/http://libtorrent.rakshasa.no/wiki/RTorrentCommonTasks#Movecompletedtorrentstodifferentdirectorydependingonwatchdirectory this].<br />
}}<br />
<br />
It is possible to have rtorrent sort completed torrent data to specific folders based on which 'watch' folder you drop the *.torrent into while continuing to seed. Many examples show how to do this with torrents downloaded by rtorrent. The problem is when you try to drop in 100% done torrent data and then have rtorrent check the data and resume, it will not be sorted.<br />
<br />
As a solution, use the following example in your {{ic|~/.rtorrent.rc}}.<br />
Make sure to change the paths.<br />
<br />
{{bc|1=<br />
# location where new torrent data is placed, and where you should place your<br />
# 'complete' data before you place your *.torrent file into the watch folder<br />
directory = /home/user/torrents/incomplete<br />
<br />
# schedule a timer event named 'watch_directory_1':<br />
# 1) triggers 10 seconds after rtorrent starts<br />
# 2) triggers at 10 second intervals thereafter<br />
# 3) Upon trigger, attempt to load (and start) new *.torrent files found in /home/user/torrents/watch/<br />
# 4) set a variable named 'custom1' with the value "/home/user/torrents/complete"<br />
# NOTE: if you do not want it to automatically start the torrent, change 'load_start' to 'load'<br />
schedule = watch_directory_1,10,10,"load_start=/home/user/torrents/watch/*.torrent,d.set_custom1=/home/user/torrents/complete"<br />
<br />
# insert a method with the alias 'checkdirs1'<br />
# 1) returns true if the current path of the torrent data is not equal to the value of custom1<br />
# 2) otherwise, returns false<br />
system.method.insert=checkdirs1,simple,"not=\"$equal={d.get_custom1=,d.get_base_path=}\""<br />
<br />
# insert a method with the alias 'movecheck1'<br />
# 1) returns true if all 3 commands return true ('result of checkdirs1' && 'torrent is 100% done', 'custom1 variable is set')<br />
# 2) otherwise, returns false<br />
system.method.insert=movecheck1,simple,"and={checkdirs1=,d.get_complete=,d.get_custom1=}"<br />
<br />
# insert a method with the alias 'movedir1'<br />
# (a series of commands, separated by ';') <br />
# 1) "set path of torrent to equal the value of custom1";<br />
# 2) "mv -u <current data path> <custom1 path>";<br />
# 3) "clear custom1", "stop the torrent","resume the torrent"<br />
# 4) stop the torrent<br />
# 5) start the torrent (to get the torrent to update the 'base path')<br />
system.method.insert=movedir1,simple,"d.set_directory=$d.get_custom1=;execute=mv,-u,$d.get_base_path=,$d.get_custom1=;d.set_custom1=;d.stop=;d.start="<br />
<br />
# set a key with the name 'move_hashed1' that is triggered by the hash_done event.<br />
# 1) When hashing of a torrent completes, this custom key will be triggered.<br />
# 2) when triggered, execute the 'movecheck1' method and check the return value.<br />
# 3) if the 'movecheck' method returns 'true', execute the 'movedir1' method we inserted above.<br />
# NOTE-0: *Only* data that has had their hash checked manually with ^R [^R = Control r].<br />
# Or on a rtorrent restart[which initiates a hash check]. Will the data move; ~/torrents/incomplete => ~/torrents/complete for example.<br />
# NOTE-1: 'branch' is an 'if' conditional statement: if(movecheck1){movedir1}<br />
system.method.set_key=event.download.hash_done,move_hashed1,"branch={$movecheck1=,movedir1=}"<br />
}}<br />
<br />
You can add additional watch folders and rules should you like to sort your torrents into special folders.<br />
<br />
For example, if you would like the torrents to download in:<br />
/home/user/torrents/incomplete<br />
and then sort the torrent data based on which folder you dropped the *.torrent into:<br />
/home/user/torrents/watch => /home/user/torrents/complete<br />
/home/user/torrents/watch/iso => /home/user/torrents/complete/iso<br />
/home/user/torrents/watch/music => /home/user/torrents/complete/music<br />
<br />
You can have the following in your .rtorrent.rc:<br />
{{bc|1=<br />
directory = /home/user/torrents/incomplete<br />
schedule = watch_directory_1,10,10,"load_start=/home/user/torrents/watch/*.torrent,d.set_custom1=/home/user/torrents/complete"<br />
<br />
schedule = watch_directory_2,10,10,"load_start=/home/user/torrents/watch/iso/*.torrent,d.set_custom1=/home/user/torrents/complete/iso"<br />
<br />
schedule = watch_directory_3,10,10,"load_start=/home/user/torrents/watch/music/*.torrent,d.set_custom1=/home/user/torrents/complete/music"<br />
<br />
system.method.insert=checkdirs1,simple,"not=\"$equal={d.get_custom1=,d.get_base_path=}\""<br />
system.method.insert=movecheck1,simple,"and={checkdirs1=,d.get_complete=,d.get_custom1=}"<br />
system.method.insert=movedir1,simple,"d.set_directory=$d.get_custom1=;execute=mv,-u,$d.get_base_path=,$d.get_custom1=;d.set_custom1=;d.stop=;d.start="<br />
system.method.set_key=event.download.hash_done,move_hashed1,"branch={$movecheck1=,movedir1=}"<br />
}}<br />
<br />
Also see [http://code.google.com/p/pyroscope/ pyroscope] especially the rtcontrol examples. There is an AUR package.<br />
<br />
==== Notification with Google Mail ====<br />
<br />
Cell phone providers allow you to "email" your phone:<br />
{{bc|<nowiki><br />
Verizon: 10digitphonenumber@vtext.com<br />
AT&T: 10digitphonenumber@txt.att.net<br />
Former AT&T customers: 10digitphonenumber@mmode.com<br />
Sprint: 10digitphonenumber@messaging.sprintpcs.com<br />
T-Mobile: 10digitphonenumber@tmomail.net<br />
Nextel: 10digitphonenumber@messaging.nextel.com<br />
Cingular: 10digitphonenumber@cingularme.com<br />
Virgin Mobile: 10digitphonenumber@vmobl.com<br />
Alltel: 10digitphonenumber@alltelmessage.com OR<br />
10digitphonenumber@message.alltel.com<br />
CellularOne: 10digitphonenumber@mobile.celloneusa.com<br />
Omnipoint: 10digitphonenumber@omnipointpcs.com<br />
Qwest: 10digitphonenumber@qwestmp.com<br />
Telus: 10digitphonenumber@msg.telus.com<br />
Rogers Wireless: 10digitphonenumber@pcs.rogers.com<br />
Fido: 10digitphonenumber@fido.ca<br />
Bell Mobility: 10digitphonenumber@txt.bell.ca<br />
Koodo Mobile: 10digitphonenumber@msg.koodomobile.com<br />
MTS: 10digitphonenumber@text.mtsmobility.com<br />
President's Choice: 10digitphonenumber@txt.bell.ca<br />
Sasktel: 10digitphonenumber@sms.sasktel.com<br />
Solo: 10digitphonenumber@txt.bell.ca<br />
</nowiki>}}<br />
<br />
*Install mailx which is provided by the {{Pkg|s-nail}} package that is found in the [[official repositories]].<br />
<br />
*Clear the {{ic|/etc/mail.rc}} file and enter:<br />
<br />
{{bc|<nowiki><br />
set sendmail="/usr/bin/mailx"<br />
set smtp=smtp.gmail.com:587<br />
set smtp-use-starttls<br />
set ssl-verify=ignore<br />
set ssl-auth=login<br />
set smtp-auth-user=USERNAME@gmail.com<br />
set smtp-auth-password=PASSWORD<br />
</nowiki>}}<br />
<br />
Now to send the text, we must pipe a message to the mailx program.<br />
*Make a Bash script:<br />
{{hc|/path/to/mail.sh|<nowiki><br />
echo "$@: Done" | mailx 5551234567@vtext.com<br />
</nowiki>}}<br />
Where the $@ is a variable holding all the arguments passed to our script.<br />
<br />
*And finally, add the important {{ic|~/.rtorrent.rc}} line:<br />
system.method.set_key = event.download.finished,notify_me,"execute=/path/to/mail.sh,$d.get_name="<br />
<br />
Breaking it down:<br />
<br />
{{ic|notify_me}} is the command id, which may be used by other commands, it can be just about anything you like, so long as it is unique.<br />
<br />
{{ic|1=execute=}} is the rtorrent command, in this case to execute a shell command.<br />
<br />
{{ic|/path/to/mail.sh}} is the name of our script (or whatever command you want to execute) followed by a comma separated list of all the switches/arguments to be passed.<br />
<br />
{{ic|1=$d.get_name=}} 'd' is an alias to whatever download triggered the command, get_name is a function which returns the name of our download, and the '$' tells rTorrent to replace the command with its output before it calls execute.<br />
<br />
The end result? When that torrent, 'All Live Nudibranches', that we started before leaving for work finishes, we will be texted:<br />
All Live Nudibranches: Done<br />
<br />
=== UI Tricks ===<br />
<br />
rTorrent does not list the active tab properly by default, add this line to your {{ic|.rtorrent.rc}} to show only active torrents<br />
schedule = filter_active,30,30,"view_filter = active,\"or={d.get_up_rate=,d.get_down_rate=}\""<br />
<br />
Then press {{ic|9}} in your rTorrent client to see the changes in action.<br />
<br />
To sort the seeding view by the upload rate and only show torrents with peers:<br />
<br />
# Sort the seeding view by the upload rate and only show torrents with peers<br />
view.sort_current = seeding,greater=d.get_up_rate=<br />
view.filter = seeding,"and=d.get_complete=,d.get_peers_connected="<br />
view.sort_new = seeding,less=d.get_up_rate=<br />
view.sort = seeding<br />
<br />
To sort the complete view by the upload rate:<br />
<br />
# Sort the complete view by the upload rate<br />
view.sort_current = complete,greater=d.get_up_rate=<br />
view.filter = seeding,"and=d.get_complete="<br />
view.sort_new = seeding,less=d.get_up_rate=<br />
view.sort = seeding<br />
<br />
=== Manually adding trackers to torrents ===<br />
<br />
# Select torrent to edit from rTorrent console view.<br />
# Hit {{ic|Ctrl+x}}.<br />
# If you had four trackers type following lines one at a time (always press {{ic|Ctrl+x}} first) to add four more for example:<br />
<br />
d.tracker.insert="5","udp://tracker.publicbt.com:80"<br />
d.tracker.insert="6","udp://tracker.openbittorrent.com:80"<br />
d.tracker.insert="7","udp://tracker.istole.it:80"<br />
d.tracker.insert="8","udp://tracker.ccc.de:80"<br />
<br />
== Troubleshooting ==<br />
<br />
=== CA certificates ===<br />
<br />
To use rTorrent with a tracker that uses HTTPS, do the following as root:<br />
<br />
{{bc|<br />
# cd /etc/ssl/certs<br />
<nowiki># wget --no-check-certificate https://www.geotrust.com/resources/root_certificates/certificates/Equifax_Secure_Global_eBusiness_CA-1.cer</nowiki><br />
# mv Equifax_Secure_Global_eBusiness_CA-1.cer Equifax_Secure_Global_eBusiness_CA-1.pem<br />
# c_rehash<br />
}}<br />
<br />
And from now on run rTorrent with:<br />
$ rtorrent -o http_capath=/etc/ssl/certs<br />
<br />
If you use GNU Screen, update the {{ic|.screenrc}} configuration file to reflect this change:<br />
$ screen -t rtorrent rtorrent -o http_capath=/etc/ssl/certs<br />
<br />
In rTorrent 0.8.9, set {{ic|<nowiki>network.http.ssl_verify_peer.set=0</nowiki>}} to [https://bbs.archlinux.org/viewtopic.php?pid=981832#p981832 fix the problem].<br />
<br />
For more information see: [https://bbs.archlinux.org/viewtopic.php?pid=331850 rTorrent Error & CA Certificate] and [https://bbs.archlinux.org/viewtopic.php?id=45800 rTorrent Certificates Problem]<br />
<br />
=== Locked directories ===<br />
<br />
rTorrent can sometimes lock up after a crash or incorrect shutdown, and will complain about a lock file.<br />
<br />
Per the error message, the file called "'''rtorrent.lock'''" can be found within the hidden folder {{ic|.rtorrentsession}} for your download directory and manually removed.<br />
<br />
=== Event failed: bad return code ===<br />
<br />
This is caused by there being spaces in your system.method.* lines. Remove the spaces and it will work.<br />
<br />
== Web interface ==<br />
<br />
There are numerous web interfaces and front ends for rTorrent including:<br />
* [[WTorrent]] is a web interface to rtorrent programmed in php using Smarty templates and XMLRPC for PHP library.<br />
* [http://code.google.com/p/ntorrent/ nTorrent] is a graphical user interface client to rtorrent written in Java.<br />
* [https://rtwi.jmk.hu/ rTWi] is a simple rTorrent web interface written in PHP.<br />
* [[Rtgui]] is a web based front end for rTorrent written in PHP and uses XML-RPC to communicate with the rTorrent client.<br />
* [https://github.com/Novik/ruTorrent rutorrent] and [http://forums.rutorrent.org/ Forum] - A web-based front-end with an interface very similar to uTorrent which supports many plugins and advanced features (see also: [[ruTorrent]] and [https://bbs.archlinux.org/viewtopic.php?pid=897577#p897577 Guide on forum]).<br />
<br />
{{Note|rTorrent is currently built using [http://xmlrpc-c.sourceforge.net/ XML-RPC for C/C++], which is required for some web interfaces (e.g. ruTorrent).}}<br />
<br />
=== XMLRPC interface ===<br />
<br />
If you want to use rtorrent with some web interfaces (e.g. rutorrent) you need to add the following line to the configuration file:<br />
scgi_port = localhost:5000<br />
<br />
For more information see: [https://github.com/rakshasa/rtorrent/wiki/RPC-Setup-XMLRPC Using XMLRPC with rtorrent]<br />
<br />
=== Saving magnet links as torrent files in watch folder ===<br />
<br />
{{Note| Rtorrent natively supports downloading torrents through magnet links. At the main view (reached by starting Rtorrent and pressing 1), press enter. At "load.normal>" paste the magnet link and press enter again. This will start the download.}}<br />
<br />
If you wish to have magnet links automatically added to your watch folder, here is a script that will do the trick:<br />
<br />
<nowiki><br />
#!/bin/bash<br />
watch_folder=~/.rtorrent/watch<br />
cd $watch_folder<br />
[[ "$1" =~ xt=urn:btih:([^&/]+) ]] || exit;<br />
echo "d10:magnet-uri${#1}:${1}e" > "meta-${BASH_REMATCH[1]}.torrent"</nowiki><br />
<br />
(adapted from http://blog.gonzih.org/blog/2012/02/17/how-to-use-magnet-links-with-rtorrent/).<br />
<br />
Save it, for instance as rtorrent-magnet, give it execution permission, and place it somewhere under your $PATH. Then in Firefox:<br />
# Type {{ic|about:config}} into the Location Bar (address bar) and press {{ic|Enter}}.<br />
# Right-click: ''New > Boolean > Name: '''network.protocol-handler.expose.magnet''' > Value > false''.<br />
# Next time you click a magnet link you will be asked which application to open it with. Select the script we just created and you will be done.<br />
<br />
If you want xdg-open to handle this, which you need if you are using chrome instead of firefox, (though gnome and other DE might have their own programs overriding xdg-open) you need to create the desktop entry for the rtorrent-magnet script in {{ic|~/.local/share/applications/rtorrent-magnet.desktop}} with the following content:<br />
<br />
<nowiki><br />
[Desktop Entry]<br />
Type=Application<br />
Name=rtorrent-magnet<br />
Exec=rtorrent-magnet %U<br />
MimeType=x-scheme-handler/magnet;<br />
NoDisplay=true</nowiki><br />
<br />
Then all you need to do is to register the mimetype using<br />
$ xdg-mime default rtorrent-magnet.desktop x-scheme-handler/magnet<br />
<br />
== Magnet to Torrent ==<br />
You could also use the {{AUR|magnet2torrent-git}} package which downloads the metadata and creates a torrent file.<br />
<br />
How to use:<br />
$ magnet2torrent <magnet link> [torrent file]<br />
<br />
== rtorrent-pyro ==<br />
<br />
{{AUR|rtorrent-pyro-git}} from the [[AUR]] comes with an extended rtorrent console interface. It does not contain the pyroscope tools yet though. If you also need the pyroscope tools see [[#PyroScope]] .<br />
<br />
Make sure you add following command to ~/.rtorrent.rc, which makes the asterisk key * to a shortcut for toggling between extended and collapsed view within rtorrent's interface:<br />
{{bc|<nowiki>schedule = bind_collapse,0,0,"ui.bind_key=download_list,*,view.collapsed.toggle="</nowiki>}}<br />
<br />
Also set "pyro.extended" to 1 to activate rTorrent-PS features.<br />
{{bc|<nowiki>system.method.insert = pyro.extended, value|const, 1</nowiki>}}<br />
<br />
=== PyroScope ===<br />
<br />
We create a directory for the installation of pyroscope, then download and update the source code from subversion:<br />
{{bc|<nowiki>mkdir -p ~/.lib<br />
svn checkout http://pyroscope.googlecode.com/svn/trunk/ ~/.lib/pyroscope<br />
~/.lib/pyroscope/update-to-head.sh</nowiki>}}<br />
Adding pyroscope bin's PATH to .bashrc:<br />
{{bc|<nowiki>export PATH=$PATH:path_to_the_bin # Example path for pyroscope bin's: /home/user/.lib/pyroscope/bin/</nowiki>}}<br />
Creating the ~/.pyroscope/config.ini:<br />
{{bc|<nowiki>pyroadmin --create-config</nowiki>}}<br />
<br />
Add this to your ~/.rtorrent.rc. Do not forget to add the path of your pyroscope bin's dir (see below).<br />
{{bc|<nowiki>system.method.insert = pyro.bin_dir, string|const, write_here_path_to_your_pyroscope_bin_dir # Example path: /home/user/.lib/pyroscope/bin/<br />
system.method.insert = pyro.rc_dialect, string|const|simple, "execute_capture=bash,-c,\"test $1 = 0.8.6 && echo -n 0.8.6 || echo -n 0.8.9\",dialect,$system.client_version="<br />
system.method.insert = pyro.rtorrent_rc, string|const|private, "$cat=~/.pyroscope/rtorrent-,\"$pyro.rc_dialect=\",.rc.default"<br />
import = $pyro.rtorrent_rc=</nowiki>}}<br />
<br />
Optionally: TORQUE: Daemon watchdog schedule. Must be activated by touching the "~/.pyroscope/run/pyrotorque" file!<br />
You can also just use rtorrent watch dir or give pyro_watchdog a try, which comes with 'treewatch' ability, meaning it also watches for torrents recursively within the given watch path. Further documentation for pyro_watchdog is here: <br />
[http://code.google.com/p/pyroscope/wiki/QueueManager] <br />
To enable pyro_watchdog, add this in ~/.rtorrent.rc and further configurations are in ~/.pyroscope/torque.ini. <br />
{{bc|<nowiki>schedule = pyro_watchdog,30,300,"pyro.watchdog=~/.pyroscope,-v"</nowiki>}}<br />
<br />
Following steps are important. Before using pyroscope tools you have to set the missing "loaded" times to that of the .torrent file. Run this in your terminal:<br />
{{bc|<nowiki>rtcontrol '!*"*' loaded=0 -q -sname -o 'echo "$(name)s"\ntest -f "$(metafile)s" && rtxmlrpc -q d.set_custom $(hash)s tm_loaded \$(\<br />
ls -l --time-style "+%%s" "$(metafile)s" \<br />
| cut -f6 -d" ")\nrtxmlrpc -q d.save_session $(hash)s' | bash</nowiki>}}<br />
<br />
And now set the missing "completed" times to that of the data file or directory:<br />
{{bc|<nowiki>rtcontrol '!*"*' completed=0 done=100 path=\! is_ghost=no -q -sname -o 'echo "$(name)s"\ntest -e "$(realpath)s" && rtxmlrpc -q d.set_custom $(hash)s tm_completed \$(\<br />
ls -ld --time-style "+%%s" "$(realpath)s" \<br />
| cut -f6 -d" ")\nrtxmlrpc -q d.save_session $(hash)s' | bash</nowiki>}}<br />
<br />
Example usage:<br />
Will print out all torrents older than 2 hours:<br />
{{bc|<nowiki>rtcontrol -V completed=+2h -scompleted -ocompleted</nowiki>}}<br />
Deletes all torrents older than 48 hours:<br />
{{bc|<nowiki>rtcontrol -V completed=+48h -scompleted -ocompleted --cull --yes</nowiki>}}<br />
<br />
== See also ==<br />
<br />
* [http://linux.die.net/man/1/rtorrent Manpage for rtorrent]<br />
* [[Screen Tips]]<br />
* [[Wikipedia:Comparison of BitTorrent clients|Comparison of BitTorrent clients]] on Wikipedia<br />
* [http://community.rutorrent.org/ rTorrent Community Wiki] - Public place for information on rTorrent and any project related to rTorrent, regarding setup, configuration, operations, and development.<br />
* [http://code.google.com/p/pyroscope/ PyroScope] - Collection of command line tools for rTorrent. It provides commands for creating and modifying torrent files, moving data on completion without having multiple watch folders, and mass-controlling download items via rTorrent's XML-RPC interface: searching, start/stop, deleting items with or without their data, etc. It also offers a documented [[Python]] API.<br />
* [[Rutorrent with lighttpd|ruTorrent with Lighttpd]]<br />
* [http://wiki.theaveragegeek.com/howto/installing_rtorrent_and_hellanzb_on_centos5_64-bit_vps How-to install rTorrent and Hellanzb on CentOS 5 64-bit VPS]<br />
* [http://code.google.com/p/pyroscope/wiki/DebianInstallFromSource Installation guide for rTorrent and Pyroscope on Debian] - Collection of tools for the BitTorrent protocol and especially the rTorrent client<br />
* [http://mktorrent.sourceforge.net/ mktorrent] - Command line application used to generate torrent files, which is available as {{Pkg|mktorrent}} in the [[official repositories]].<br />
* [https://github.com/kfei/docktorrent docktorrent] - Using Docker, rTorrent and ruTorrent to run a full-featured BitTorrent box.<br />
* [https://github.com/nelhage/reptyr reptyr] - another tool to take over a program's TTY (it is in the standard repos). The process may have started being attached to a terminal or to a socket in tmux, screen or dtach.<br />
* [http://caca.zoy.org/wiki/neercs neercs] - a more screen/tmux like tool than reptyr, but, like reptyr, neercs can also "steal" a process that may have started slaved to a terminal or to a socket in tmux, screen or dtach. {{AUR|neercs-git}}{{Broken package link|{{aur-mirror|neercs-git}}}}<br />
<br />
'''Forum threads'''<br />
* 2009-03-11 - Arch Linux - [https://bbs.archlinux.org/viewtopic.php?id=67304 HOWTO: rTorrent stats in Conky]</div>Ygyfygyhttps://wiki.archlinux.org/index.php?title=ConnMan&diff=429397ConnMan2016-04-02T16:34:50Z<p>Ygyfygy: /* Installation */ Tweaks</p>
<hr />
<div>[[Category:Network configuration]]<br />
[[fr:Connman]]<br />
[[it:Connman]]<br />
[[ja:Connman]]<br />
{{Related articles start}}<br />
{{Related|Network configuration}}<br />
{{Related|Wireless network configuration}}<br />
{{Related|:Category:Network configuration}}<br />
{{Related articles end}}<br />
<br />
[https://01.org/connman ConnMan] is a command-line network manager designed for use with embedded devices and fast resolve times. It is modular through a [http://git.kernel.org/cgit/network/connman/connman.git/tree/plugins plugin architecture], but has native [http://git.kernel.org/cgit/network/connman/connman.git/tree/src/dhcp.c dhcp] and [http://git.kernel.org/cgit/network/connman/connman.git/tree/src/ntp.c ntp] support.<br />
<br />
== Installation ==<br />
<br />
[[Install]] the {{Pkg|connman}} package. {{Pkg|wpa_supplicant}} and {{Pkg|bluez}} are optional dependencies required for Wi-Fi and Bluetooth functionality respectively.<br />
<br />
Before [[enabling]] {{ic|connman.service}}, ensure any existing [[network configuration]] is disabled.<br />
<br />
=== Desktop clients ===<br />
<br />
* {{App|cmst|Qt GUI for ConnMan.|https://github.com/andrew-bibb/cmst|{{AUR|cmst}}}}<br />
* {{App|connman-ncurses|Simple ncurses UI for ConnMan|https://github.com/eurogiciel-oss/connman-json-client|{{AUR|connman-ncurses-git}}}}<br />
* {{App|connman-notify|Connman event notification client|https://github.com/wavexx/connman-notify|{{AUR|connman-notify}}{{Broken package link|{{aur-mirror|connman-notify}}}}}}<br />
* {{App|ConnMan-UI|GTK3 client applet.|https://github.com/tbursztyka/connman-ui|{{AUR|connman-ui-git}}}}<br />
* {{App|connman_dmenu|Client/frontend for dmenu.|https://github.com/taylorchu/connman_dmenu|{{AUR|connman_dmenu-git}}}}<br />
* {{App|Econnman|Enlightenment desktop panel applet.|http://www.enlightenment.org|{{AUR|econnman}}}}<br />
* {{App|LXQt-Connman-Applet|LXQt desktop panel applet.|https://github.com/surlykke/lxqt-connman-applet|{{AUR|lxqt-connman-applet-git}}}}<br />
* {{App|qconnman-ui|Qt management interface used on O.S. Systems products|https://github.com/OSSystems/qconnman-ui|{{AUR|qconnman-ui-git}}{{Broken package link|{{aur-mirror|qconnman-ui-git}}}}}}<br />
* {{App|connman-gtk| GTK client.|https://github.com/jgke/connman-gtk|{{AUR|connman-gtk}}}}<br />
* {{App|gnome-extension-connman| Gnome3 extension for connman.|https://github.com/jgke/gnome-extension-connman|https://extensions.gnome.org/extension/981/connman-extension/}}<br />
<br />
==== Notes ====<br />
<br />
gnome-extension-connman: contains only some of the functionality without installing connman-gtk.<br />
<br />
connman-ncurses: not all of connman functionality is implemented; but usable (with X or from terminal without X). See [https://github.com/eurogiciel-oss/connman-json-client/wiki wiki].<br />
<br />
== Usage ==<br />
<br />
{{Expansion|Only Wired and Wi-Fi plugins are described.}}<br />
<br />
ConnMan has a standard command line client {{ic|connmanctl}}. It can run in 2 modes:<br />
*In '''command mode''' commands are entered as arguments to {{ic|connmanctl}} command, just like [[systemctl]].<br />
*'''Interactive mode''' is started by typing {{ic|connmanctl}} without arguments. Prompt will change to {{ic|connmanctl>}} to indicate it is waiting for user commands, just like [[python]] interactive mode.<br />
<br />
=== Wired ===<br />
<br />
ConnMan will automatically handle wired connections.<br />
<br />
=== Wi-Fi ===<br />
<br />
{{Note|Make sure the Wi-Fi device is listed in the output of {{ic|ip link show up}}. If it is not listed that means it is not powered on. Use {{ic|Fn}} keys on the laptop to turn it on. You may need to run {{ic|connmanctl enable wifi}}.}}<br />
<br />
==== Connecting to an open access point ====<br />
<br />
The commands in this section show how to run {{ic|connmanctl}} in command mode.<br />
<br />
To scan the network {{ic|connmanctl}} accepts simple names called ''technologies''. To scan for nearby Wi-Fi networks:<br />
<br />
$ connmanctl scan wifi<br />
<br />
To list the available networks found after a scan run (example output): <br />
<br />
{{hc|$ connmanctl services|<br />
*AO MyNetwork wifi_dc85de828967_68756773616d_managed_psk<br />
OtherNET wifi_dc85de828967_38303944616e69656c73_managed_psk <br />
AnotherOne wifi_dc85de828967_3257495245363836_managed_wep<br />
FourthNetwork wifi_dc85de828967_4d7572706879_managed_wep<br />
AnOpenNetwork wifi_dc85de828967_4d6568657272696e_managed_none<br />
}}<br />
<br />
To connect to an open network, use the second field beginning with '''wifi_''':<br />
<br />
$ connmanctl connect wifi_dc85de828967_4d6568657272696e_managed_none<br />
<br />
You should now be connected to the network. Check using {{ic|ip addr}} or {{ic|connmanctl state}}.<br />
<br />
==== Connecting to a protected access point ====<br />
<br />
For protected access points you will need to provide some information to the ConnMan daemon, at the very least a password or a passphrase.<br />
<br />
The commands in this section show how to run {{ic|connmanctl}} in interactive mode, it is required for running the {{ic|agent}} command. To start interactive mode simply type: <br />
<br />
$ connmanctl<br />
<br />
You then proceed almost as above, first scan for any Wi-Fi ''technologies'':<br />
<br />
connmanctl> scan wifi<br />
<br />
To list services:<br />
<br />
connmanctl> services<br />
<br />
Now you need to register the agent to handle user requests. The command is:<br />
<br />
connmanctl> agent on<br />
<br />
You now need to connect to one of the protected services. To do this it is very handy to have a terminal that allows<br />
cut and paste. If you were connecting to OtherNET in the example above you would type:<br />
<br />
connmanctl> connect wifi_dc85de828967_38303944616e69656c73_managed_psk<br />
<br />
The agent will then ask you to provide any information the daemon needs to complete the connection. The <br />
information requested will vary depending on the type of network you are connecting to. The agent<br />
will also print additional data about the information it needs as shown in the example below.<br />
<br />
Agent RequestInput wifi_dc85de828967_38303944616e69656c73_managed_psk<br />
Passphrase = [ Type=psk, Requirement=mandatory ]<br />
Passphrase? <br />
<br />
Provide the information requested, in this example the passphrase, and then type:<br />
<br />
connmanctl> quit<br />
<br />
If the information you provided is correct you should now be connected to the protected access point.<br />
<br />
=== Settings ===<br />
<br />
Settings and profiles are automatically created for networks the user connects to often. They contain fields for the passphrase, essid and other information. Profile settings are stored in directories under {{ic|/var/lib/connman/}} by their service name. To view all network profiles run this command from [[Help:Reading#Regular_user_or_root|root shell]]: <br />
<br />
# cat /var/lib/connman/*/settings<br />
<br />
{{Note|VPN settings can be found in {{ic|/var/lib/connman-vpn/}}.}}<br />
<br />
=== Technologies ===<br />
<br />
Various hardware interfaces are referred to as ''Technologies'' by ConnMan.<br />
<br />
To list available ''technologies'' run: <br />
<br />
$ connmanctl technologies<br />
<br />
To get just the types by their name one can use this one liner:<br />
<br />
$ connmanctl technologies | awk '/Type/ { print $NF }'<br />
<br />
{{Note| The field {{ic|1=Type = tech_name}} provides the technology type used with {{ic|connmanctl}} commands}}<br />
<br />
To interact with them one must refer to the technology by type.<br />
''Technologies'' can be toggled on/off with: <br />
<br />
$ connmanctl enable ''technology_type''<br />
<br />
and:<br />
<br />
$ connmanctl disable ''technology_type''<br />
<br />
For example to toggle off wifi:<br />
<br />
$ connmanctl disable wifi<br />
<br />
{{Warning|connman grabs all rfkill events. It is most likely impossible to use {{ic|rfkill}} or {{ic|bluetoothctl}} to (un)block devices. Always use {{ic|<nowiki>connmanctl enable|disable</nowiki>}} }}<br />
<br />
== Tips and tricks ==<br />
<br />
=== Avoid changing the hostname ===<br />
By default, ConnMan changes the [http://www.freedesktop.org/software/systemd/man/hostnamectl.html transient hostname] on a per network basis. This can create problems with X authority: If ConnMan changes your hostname to something else than the one used to generate the xauth magic cookie, then it will become impossible to create new windows. Symptoms are error messages like "No protocol specified" and "Can't open display: :0.0". Manually resetting the host name fixes this, but a permanent solution is to prevent ConnMan from changing your host name in the first place. This can be accomplished by adding the following to {{ic|/etc/connman/main.conf}}:<br />
<br />
[General]<br />
AllowHostnameUpdates=false<br />
<br />
Make sure to [[restart]] the {{ic|connman.service}} after changing this file.<br />
<br />
For testing purposes it is recommended to watch the [[systemd#Journal|journal]] and plug the network cable a few times to see the action.<br />
<br />
=== Prefer ethernet to wireless ===<br />
By default ConnMan does not prefer ethernet over wireless, which can lead to it deciding to stick with a slow wireless network even when ethernet is available. You can tell connman to prefer ethernet adding the following to {{ic|/etc/connman/main.conf}}:<br />
<br />
[General]<br />
PreferredTechnologies=ethernet,wifi<br />
<br />
=== Exclusive connection ===<br />
ConnMan allows you to be connected to both ethernet and wireless at the same time. This can be useful as it allows programs that established a connection over wifi to stay connected even after you connect to ethernet. But some peope prefer to have only a single unambiguous connection active at a time. That behavior can be activated by adding the following to {{ic|/etc/connman/main.conf}}:<br />
<br />
[General]<br />
SingleConnectedTechnology=true<br />
<br />
=== Connecting to eduroam ===<br />
<br />
See [[WPA2 Enterprise#connman]].<br />
<br />
=== Avoiding conflicts with local DNS server ===<br />
If you are running a local DNS server, it will likely have problems binding to port 53 (TCP and/or UDP) after installing Connman. This is because Connman includes its own DNS proxy which also tries to bind to those ports. If you see log messages from [[BIND]] or [[dnsmasq]] like <br />
"named[529]: could not listen on UDP socket: address in use"<br />
this could be the problem. To verify which application is listening on the ports, you can execute {{ic|ss -tulpn}} as root.<br />
<br />
To fix this connmand can be started with the options {{ic|-r}} or {{ic|--nodnsproxy}} by [[Systemd#Editing provided units|overriding]] the systemd service file. Create the folder {{ic|/etc/systemd/system/connman.service.d/}} and add the file {{ic|disable_dns_proxy.conf}}:<br />
<br />
[Service]<br />
ExecStart=<br />
ExecStart=/usr/bin/connmand -n --nodnsproxy<br />
<br />
Make sure to [[reload]] the systemd daemon and [[restart]] the {{ic|connman.service}}, and your DNS proxy, after adding this file.<br />
<br />
=== Blacklist interfaces ===<br />
If something like [[Docker]] is creating virtual interfaces Connman may attempt to connect to one of these instead of your physical adapter if the connection drops. A simple way of avoiding this is to blacklist the interfaces you do not want to use. Connman will by default blacklist interfaces starting with "vmnet", "vboxnet", "virbr" and "ifb" so those need to be included as well.<br />
<br />
Blacklisting interface names is also useful to avoid a race condition where connman may access <code>eth#</code> or <code>wlan#</code> before systemd/udev can change it to use a [[Network_configuration#Device_names|predictable interface name]] like <code>enp4s0</code>. Blacklisting the conventional (and unpredictable) interface prefixes makes connman wait until they are renamed.<br />
<br />
If it does not already exist, create {{ic|/etc/connman/main.conf}}:<br />
<br />
[General]<br />
NetworkInterfaceBlacklist=vmnet,vboxnet,virbr,ifb,docker,veth,eth,wlan<br />
<br />
Once {{ic|connman.service}} has been [[systemd#Using units|restarted]] this will also hide all the "veth#######" interfaces from GUI tools like Econnman.<br />
<br />
== See also ==<br />
<br />
For further detailed information on ConnMan you may refer to the documentation in its git repo at [https://git.kernel.org/cgit/network/connman/connman.git/tree/doc].</div>Ygyfygyhttps://wiki.archlinux.org/index.php?title=RTorrent/RuTorrent&diff=429201RTorrent/RuTorrent2016-04-01T17:00:09Z<p>Ygyfygy: /* Installation */ Mentioned rutorrent-git.</p>
<hr />
<div>[[Category:Internet applications]]<br />
[[ja:RuTorrent]]<br />
[[ru:RuTorrent]]<br />
{{Merge|Rutorrent with lighttpd|Same topic.|Talk:Rutorrent with lighttpd#Merge}}<br />
<br />
'''[https://github.com/Novik/ruTorrent ruTorrent]''' is a web interface to [[rTorrent]] (a console based BitTorrent client). It uses rTorrent's built-in XML-RPC server to communicate with it.<br />
<br />
It is lightweight, highly extensible, and is designed to look similar to uTorrent.<br />
<br />
== Installation ==<br />
Install {{AUR|rutorrent}} from the AUR. If you want to use the development version install {{AUR|rutorrent-git}}.<br />
<br />
== Web Server Configuration ==<br />
<br />
=== Apache ===<br />
Install and configure Apache with PHP according to the [[LAMP]] page.<br />
<br />
* Edit the ''open_basedir'' value in /etc/php/php.ini to include:<br />
/etc/webapps/rutorrent/conf/:/usr/share/webapps/rutorrent/php/:/usr/share/webapps/rutorrent/<br />
<br />
Install {{AUR|mod_scgi}} from the AUR.<br />
<br />
* Load the SCGI module in {{ic|/etc/httpd/conf/httpd.conf}}:<br />
LoadModule scgi_module modules/mod_scgi.so<br />
<br />
* Enable the rTorrent XMLRPC interface: [[rTorrent#XMLRPC interface]]<br />
<br />
* Enable SCGI on the port you chose for rTorrent by adding this to {{ic|/etc/httpd/conf/httpd.conf}}:<br />
SCGIMount /RPC2 127.0.0.1:5000<br />
<br />
* Lastly, add the ruTorrent folder to {{ic|/etc/httpd/conf/httpd.conf}} with something similar to this anywhere after the inital ''</Directory>'':<br />
<IfModule alias_module><br />
Alias /rutorrent /usr/share/webapps/rutorrent<br />
<Directory "/usr/share/webapps/rutorrent"><br />
Order allow,deny<br />
Allow from all<br />
</Directory><br />
</IfModule><br />
<br />
For Apache 2.4 the access control would be:<br />
<IfModule alias_module><br />
Alias /rutorrent /usr/share/webapps/rutorrent<br />
<Directory "/usr/share/webapps/rutorrent"><br />
Require all granted<br />
</Directory><br />
</IfModule><br />
<br />
{{Note|You should enable authentication through Apache if your site is public.}}<br />
<br />
=== Nginx ===<br />
<br />
* Create a link from your web root to rutorrent<br />
ln -s /usr/share/webapps/rutorrent/ /usr/share/nginx/html/rutorrent<br />
<br />
* Edit the ''open_basedir'' value in /etc/php/php.ini to include:<br />
/etc/webapps/rutorrent/conf/:/usr/share/webapps/rutorrent/php/:/usr/share/webapps/rutorrent/<br />
<br />
* Enable the rTorrent XMLRPC interface: [[rTorrent#XMLRPC interface]]<br />
<br />
* Add following location to your nginx configuration:<br />
location /RPC2 {<br />
include scgi_params;<br />
scgi_pass localhost:5000;<br />
}<br />
<br />
* Restart nginx:<br />
# systemctl restart nginx<br />
<br />
* You can now access ruTorrent at http://127.0.0.1/rutorrent<br />
<br />
== ruTorrent Configuration ==<br />
See upstream wiki [https://github.com/Novik/ruTorrent/wiki/Config here].<br />
<br />
== See Also ==<br />
* [[LAMP]]<br />
* [[RTorrent]]<br />
<br />
== External Links == <br />
* https://github.com/Novik/ruTorrent/wiki<br />
* http://httpd.apache.org/docs/2.2/configuring.html</div>Ygyfygyhttps://wiki.archlinux.org/index.php?title=RTorrent&diff=428768RTorrent2016-03-30T19:31:09Z<p>Ygyfygy: /* Web interface */ We already know rtorrent is a cli torrent client.</p>
<hr />
<div>{{DISPLAYTITLE:rTorrent}}<br />
[[Category:Internet applications]]<br />
[[es:RTorrent]]<br />
[[ja:RTorrent]]<br />
[[ru:RTorrent]]<br />
[[zh-CN:RTorrent]]<br />
[https://rakshasa.github.io/rtorrent/ rTorrent] is a quick and efficient BitTorrent client that uses, and is in development alongside, the libTorrent (not to be confused with {{Pkg|libtorrent-rasterbar}}) library. It is written in C++ and uses the [[Wikipedia:ncurses|ncurses]] programming library, which means it uses a text user interface. When combined with a terminal multiplexer (e.g. [[GNU Screen]] or [[Tmux]]) and [[Secure Shell]], it becomes a convenient remote [[Wikipedia:BitTorrent (protocol)#Operation|BitTorrent client]].<br />
<br />
== Installation ==<br />
<br />
[[Install]] the {{Pkg|rtorrent}} package that is available in the [[official repositories]].<br />
<br />
Alternatively, install {{AUR|rtorrent-git}} or {{AUR|rtorrent-vi-color}} or {{AUR|rtorrent-extended}}{{Broken package link|{{aur-mirror|rtorrent-extended}}}} from the [[AUR]].<br />
<br />
== Configuration ==<br />
<br />
{{Note|See the rTorrent wiki article on this subject for more information: [http://web.archive.org/web/20140213003955/http://libtorrent.rakshasa.no/wiki/RTorrentCommonTasks Common Tasks in rTorrent for Dummies].}}<br />
<br />
Before running rTorrent, find the example configuration file {{ic|/usr/share/doc/rtorrent/rtorrent.rc}} and copy it to {{ic|~/.rtorrent.rc}}:<br />
<br />
$ cp /usr/share/doc/rtorrent/rtorrent.rc ~/.rtorrent.rc<br />
<br />
=== Performance ===<br />
<br />
{{Note|See the rTorrent wiki article on this subject for more information: [http://web.archive.org/web/20140213011439/http://libtorrent.rakshasa.no/wiki/RTorrentPerformanceTuning Performance Tuning]}}<br />
<br />
The values for the following options are dependent on the system's hardware and Internet connection speed. To find the optimal values read: [http://torrentfreak.com/optimize-your-BitTorrent-download-speed Optimize Your BitTorrent Download Speed]<br />
{{bc|<nowiki><br />
min_peers = 40<br />
max_peers = 52<br />
<br />
min_peers_seed = 10<br />
max_peers_seed = 52<br />
<br />
max_uploads = 8<br />
<br />
download_rate = 200<br />
upload_rate = 28<br />
</nowiki>}}<br />
<br />
The {{ic|check_hash}} option executes a hash check when a torrent download is complete or rTorrent is started. When starting, it checks for errors in your completed files. <br />
check_hash = yes<br />
<br />
=== Create and manage files ===<br />
<br />
The {{ic|directory}} option will determine where your torrent data will be saved (could be a relative path):<br />
directory = ~/downloaded<br />
<br />
The {{ic|session}} option allows rTorrent to save the progess of your torrents. It is recommended to create a directory in home directory (e.g. {{ic|mkdir ~/.rtorrent.session}}).<br />
session = ~/.rtorrent.session<br />
<br />
The {{ic|schedule}} option has rTorrent watch a particular directory for new torrent files. Saving a torrent file to this directory will automatically start the download. Remember to create the directory that will be watched (e.g. {{ic|mkdir ~/watch}}). Also, be careful when using this option as rTorrent will move the torrent file to your session folder and rename it to its hash value.<br />
schedule = watch_directory,5,5,load_start=/home/''user''/watch/*.torrent<br />
schedule = untied_directory,5,5,stop_untied=<br />
schedule = tied_directory,5,5,start_tied=<br />
<br />
The following {{ic|schedule}} option is intended to stop rTorrent from downloading data when disk space is low.<br />
schedule = low_diskspace,5,60,close_low_diskspace=100M<br />
<br />
=== Port configuration ===<br />
<br />
The {{ic|port_range}} option sets which port(s) to use for listening. It is recommended to use a port that is higher than 49152 (see: [[Wikipedia:List of TCP and UDP port numbers|List of port numbers]]). Although, rTorrent allows a range of ports, a single port is recommended.<br />
port_range = 49164-49164<br />
<br />
Additionally, make sure port forwarding is enabled for the proper port(s) (see: [http://portforward.com/english/routers/port_forwarding/routerindex.htm Port Forward guides]).<br />
<br />
=== Additional settings ===<br />
<br />
The {{ic|encryption}} option enables or disables encryption. It is very important to enable this option, not only for yourself, but also for your peers in the torrent swarm. Some users need to obscure their bandwidth usage from their ISP. And it does not hurt to enable it even if you do not need the added security.<br />
encryption = allow_incoming,try_outgoing,enable_retry<br />
It is also possible to force all connections to use encryption. However, be aware that this stricter rule will reduce your client's availability:<br />
encryption = require,require_RC4,allow_incoming,try_outgoing<br />
<br />
See also [[Wikipedia:BitTorrent Protocol Encryption]].<br />
<br />
This final {{ic|dht}} option enables [[Wikipedia:Distributed hash table|DHT]] support. DHT is common among public trackers and will allow the client to acquire more peers.<br />
{{bc|<nowiki><br />
dht = auto<br />
dht_port = 6881<br />
peer_exchange = yes<br />
</nowiki>}}<br />
<br />
== Key bindings ==<br />
<br />
rTorrent relies exclusively on keyboard shortcuts for user input. A quick reference is available in the table below. A complete guide is available on the rTorrent wiki (see: [https://github.com/rakshasa/rtorrent/wiki/User-Guide rTorrent User Guide]).<br />
<br />
{{Note|Striking {{ic|Ctrl-q}} twice in quick succession will make rTorrent shutdown without waiting to send a stop announce to the connected trackers.}}<br />
<br />
{| class="wikitable"<br />
|-<br />
!width="75" |Cmd<br />
!Action<br />
|-<br />
|Ctrl-q<br />
|Quit application<br />
|-<br />
|Ctrl-s<br />
|Start download. Runs hash first unless already done.<br />
|-<br />
|Ctrl-d<br />
|Stop an active download or remove a stopped download<br />
|-<br />
|Ctrl-k<br />
|Stop and close the files of an active download.<br />
|-<br />
|Ctrl-r<br />
|Initiate hash check of torrent. Starts downloading if file is not available.<br />
|-<br />
|Ctrl-o<br />
|Specify the download directory for a added, but not started torrent.<br />
|-<br />
|Left<br />
|Returns to the previous screen<br />
|-<br />
|Right<br />
|Goes to the next screen<br />
|-<br />
|Backspace<br />
|Adds and starts the specified *.torrent<br />
|-<br />
|Return<br />
|Adds and doesn't start the specified *.torrent<br />
|-<br />
|<nowiki>a|s|d</nowiki><br />
|<nowiki>Increase global upload throttle about 1|5|50 KB/s</nowiki><br />
|-<br />
|<nowiki>A|S|D</nowiki><br />
|<nowiki>Increase global download throttle about 1|5|50 KB/s</nowiki><br />
|-<br />
|<nowiki>z|x|c</nowiki><br />
|<nowiki>Decrease global upload throttle about 1|5|50 KB/s</nowiki><br />
|-<br />
|<nowiki>Z|X|C</nowiki><br />
|<nowiki>Decrease global download throttle about 1|5|50 KB/s</nowiki><br />
|}<br />
<br />
=== Redundant mapping ===<br />
<br />
{{ic|Ctrl-s}} is often used for terminal control to stop screen output while {{ic|Ctrl-q}} is used to start it. These mappings may interfere with rTorrent. Check to see if these terminal options are bound to a mapping:<br />
{{hc|$ stty -a|<nowiki>...<br />
swtch = <undef>; start = ^Q; stop = ^S; susp = ^Z; rprnt = ^R; werase = ^W; lnext = ^V;<br />
...<br />
</nowiki>}}<br />
<br />
To remove the mappings, change the terminal characteristics to undefine the aforementioned special characters (i.e. {{ic|stop}} and {{ic|start}}):<br />
# stty stop undef<br />
# stty start undef<br />
<br />
To remove these mappings automatically at startup you may add the two preceding commands to your {{ic|~/.bashrc}} file.<br />
<br />
== Additional tips ==<br />
<br />
=== systemd service file with tmux or screen ===<br />
<br />
*With tmux (Restart rtorrent if crashed)<br />
{{hc|/etc/systemd/user/rt.service|<nowiki><br />
[Unit]<br />
Description=rTorrent<br />
After=network.target<br />
<br />
[Service]<br />
Type=forking<br />
KillMode=none<br />
ExecStart=/usr/bin/tmux new-session -s rt -n rtorrent -d rtorrent<br />
ExecStop=/usr/bin/bash -c "/usr/bin/tmux send-keys -t rt:rtorrent.0 C-q && while pidof rtorrent > /dev/null; do sleep 0.5; echo rtorrent still running...; done"<br />
WorkingDirectory=%h<br />
Restart=on-failure<br />
<br />
[Install]<br />
WantedBy=default.target<br />
</nowiki>}}<br />
<br />
*With tmux running as user rtorrent (Restart rtorrent if crashed)<br />
{{hc|/etc/systemd/system/rtorrent.service|<nowiki><br />
[Unit]<br />
Description=rTorrent Daemon<br />
After=network.target<br />
<br />
[Service]<br />
Type=forking<br />
KillMode=none<br />
User=rtorrent<br />
ExecStart=/usr/bin/tmux new-session -c /mnt/storage/rtorrent -s rtorrent -n rtorrent -d rtorrent<br />
ExecStop=/usr/bin/bash -c "/usr/bin/tmux send-keys -t rtorrent C-q && while pidof rtorrent > /dev/null; do sleep 0.5; done"<br />
WorkingDirectory=/home/rtorrent/<br />
Restart=on-failure<br />
<br />
[Install]<br />
WantedBy=multi-user.target<br />
</nowiki>}}<br />
<br />
*With screen<br />
<br />
{{hc|/etc/systemd/user/rt.service|<nowiki><br />
[Unit]<br />
Description=rTorrent<br />
After=network.target<br />
<br />
[Service]<br />
Type=forking<br />
KillMode=none<br />
ExecStart=/usr/bin/screen -d -m -fa -S rtorrent /usr/bin/rtorrent<br />
ExecStop=/usr/bin/killall -w -s 2 /usr/bin/rtorrent<br />
WorkingDirectory=%h<br />
<br />
[Install]<br />
WantedBy=default.target<br />
</nowiki>}}<br />
<br />
Start at boot time:<br />
$ systemctl --user enable rt<br />
Start manually:<br />
$ systemctl --user start rt<br />
Stop:<br />
$ systemctl --user stop rt<br />
Attach to rtorrent's session:<br />
tmux attach -t rt<br />
Detach:<br />
Ctrl-b d<br />
<br />
=== systemd service file with dtach ===<br />
<br />
{{Style|Creating multiple rtorrent sessions this way is far from perfect, why don't we just assume for simplicity that there is only one session? This is assumed in [[#systemd service file with tmux or screen]] anyway.}}<br />
<br />
When running dtach from systemd unit, the {{ic|TERM}} environment variable [[systemd/User#Environment_variables|has to be set explicitly]] for rtorrent to work.<br />
<br />
This service file has no restart because the author occasionally takes the drive in question offline, and rtorrent fails, shall we say, "suboptimally" when started in this scenario and loses many torrent specific settings such as the specific directories each torrent is stored in. In fact the symlinks that kick off rtorrent live on the relevant drive; if it is unmounted rtorrent cannot start. This use case of blocking rtorrent from starting is relevant to users who put the downloaded files on removable media such as NAS, USB or eSATA drives.<br />
<br />
{{hc|~/.config/systemd/user/rtorrent.service|<nowiki><br />
[Unit]<br />
Description=rTorrent<br />
#After=network.target<br />
<br />
[Service]<br />
# set TERM according to your terminal<br />
Environment="TERM=xterm"<br />
#Environment="TERM=linux" <br />
Type=forking<br />
KillMode=none<br />
ExecStart=-/usr/bin/dtach -n /home/sam/run/dtach_fifos/fifo -e "^T" /home/sam/bin/rtr_new -n -o import=/home/sam/.config/rtorrent/new_.rc <br />
# dtach -n <separate filename for each instance><br />
# <br />
# rtr_new -n to ignore the default .rtorrent.rc<br />
# rtr_new -o import to load the instance-specific rc<br />
ExecStop=-/usr/bin/killall -u sam -e -w -s INT /home/sam/bin/rtr_new<br />
<br />
[Install]<br />
WantedBy=multi-user.target<br />
</nowiki>}}<br />
<br />
Note some other issues exposed in this service file other than just dtach:<br />
<br />
{{ic|/home/sam/bin/rtr_new}} is a symlink to {{ic|/usr/bin/rtorrent}}<br />
<br />
This lets us run several instances and kill each one independently with a different version of the ExecStop, to wit:<br />
<br />
{{bc|1=ExecStop=-/usr/bin/killall -u sam -e -w -s INT /home/sam/bin/rtr_new<br />
ExecStop=-/usr/bin/killall -u sam -e -w -s INT /home/sam/bin/rtr_academic<br />
ExecStop=-/usr/bin/killall -u sam -e -w -s INT /home/sam/bin/rtr_other_stuff}}<br />
<br />
These are each in a different service file, each of which controls one instance.<br />
<br />
Without this step, when running multiple instances a killall solution would kill all the running rtorrent instances. <br />
<br />
If multiple rtorrent instances are not needed and the rtorrent rc file is in the default location the above service file may be simplified. The entire file is included but only the ExecStart and <br />
ExecStop lines change. <br />
<br />
{{hc|~/.config/systemd/user/rtorrent.service|<nowiki><br />
[Unit]<br />
Description=rTorrent<br />
#After=network.target<br />
<br />
[Service]<br />
# set TERM according to your terminal<br />
Environment="TERM=xterm"<br />
#Environment="TERM=linux" <br />
Type=forking<br />
KillMode=none<br />
ExecStart=-/usr/bin/dtach -n /home/sam/run/dtach_fifos/fifo -e "^T" /usr/bin/rtorrent <br />
# dtach -n <user specified FIFO name> -e <user specified character> /usr/bin/rtorrent <br />
ExecStop=/usr/bin/killall -w -s INT /usr/bin/rtorrent<br />
# -e (exact match) and -u (user name) were added above to stop specific processes<br />
# and may be omitted here because only one rtorrent will be running<br />
<br />
[Install]<br />
WantedBy=multi-user.target<br />
</nowiki>}}<br />
<br />
The service can be controlled with [[systemctl --user]]. When it is started, you can attach to the session:<br />
<br />
$ dtach -a /home/sam/run/dtach_fifos/fifo -e "^T"<br />
<br />
=== Pre-allocation ===<br />
<br />
The rTorrent package in the community repository lacks pre-allocation. Compiling rTorrent with pre-allocation allows files to be allocated before downloading the torrent. The major benefit is that it limits and avoids fragmentation of the filesystem. However, this introduces a delay during the pre-allocation if the filesystem does not support the fallocate syscall natively.<br />
<br />
Therefore this switch is recommended for xfs, ext4 and btrfs filesystems, which have native fallocate syscall support. They will see no delay during preallocation and no fragmented filesystem. Pre-allocation on others filesystems will cause a delay but will not fragment the files.<br />
<br />
To make pre-allocation available, recompile libTorrent from the [[ABS]] tree with the following new switch:<br />
$ ./configure --prefix=/usr --disable-debug --with-posix-fallocate<br />
<br />
To enable it, add the following to your {{ic|~/rtorrent.rc}}:<br />
{{hc|~/rtorrent.rc|<nowiki><br />
# Preallocate files; reduces defragmentation on filesystems.<br />
system.file_allocate.set = yes<br />
</nowiki>}}<br />
<br />
=== Manage completed files ===<br />
<br />
{{Note|<br />
*Currently, this part requires either the git version of rtorrent/libtorrent or having applied the patch to 0.8.6 that adds 'equal'.<br />
* If you are having trouble with this tip, it is probably easier to follow [http://web.archive.org/web/20140213003955/http://libtorrent.rakshasa.no/wiki/RTorrentCommonTasks#Movecompletedtorrentstodifferentdirectorydependingonwatchdirectory this].<br />
}}<br />
<br />
It is possible to have rtorrent sort completed torrent data to specific folders based on which 'watch' folder you drop the *.torrent into while continuing to seed. Many examples show how to do this with torrents downloaded by rtorrent. The problem is when you try to drop in 100% done torrent data and then have rtorrent check the data and resume, it will not be sorted.<br />
<br />
As a solution, use the following example in your {{ic|~/.rtorrent.rc}}.<br />
Make sure to change the paths.<br />
<br />
{{bc|1=<br />
# location where new torrent data is placed, and where you should place your<br />
# 'complete' data before you place your *.torrent file into the watch folder<br />
directory = /home/user/torrents/incomplete<br />
<br />
# schedule a timer event named 'watch_directory_1':<br />
# 1) triggers 10 seconds after rtorrent starts<br />
# 2) triggers at 10 second intervals thereafter<br />
# 3) Upon trigger, attempt to load (and start) new *.torrent files found in /home/user/torrents/watch/<br />
# 4) set a variable named 'custom1' with the value "/home/user/torrents/complete"<br />
# NOTE: if you do not want it to automatically start the torrent, change 'load_start' to 'load'<br />
schedule = watch_directory_1,10,10,"load_start=/home/user/torrents/watch/*.torrent,d.set_custom1=/home/user/torrents/complete"<br />
<br />
# insert a method with the alias 'checkdirs1'<br />
# 1) returns true if the current path of the torrent data is not equal to the value of custom1<br />
# 2) otherwise, returns false<br />
system.method.insert=checkdirs1,simple,"not=\"$equal={d.get_custom1=,d.get_base_path=}\""<br />
<br />
# insert a method with the alias 'movecheck1'<br />
# 1) returns true if all 3 commands return true ('result of checkdirs1' && 'torrent is 100% done', 'custom1 variable is set')<br />
# 2) otherwise, returns false<br />
system.method.insert=movecheck1,simple,"and={checkdirs1=,d.get_complete=,d.get_custom1=}"<br />
<br />
# insert a method with the alias 'movedir1'<br />
# (a series of commands, separated by ';') <br />
# 1) "set path of torrent to equal the value of custom1";<br />
# 2) "mv -u <current data path> <custom1 path>";<br />
# 3) "clear custom1", "stop the torrent","resume the torrent"<br />
# 4) stop the torrent<br />
# 5) start the torrent (to get the torrent to update the 'base path')<br />
system.method.insert=movedir1,simple,"d.set_directory=$d.get_custom1=;execute=mv,-u,$d.get_base_path=,$d.get_custom1=;d.set_custom1=;d.stop=;d.start="<br />
<br />
# set a key with the name 'move_hashed1' that is triggered by the hash_done event.<br />
# 1) When hashing of a torrent completes, this custom key will be triggered.<br />
# 2) when triggered, execute the 'movecheck1' method and check the return value.<br />
# 3) if the 'movecheck' method returns 'true', execute the 'movedir1' method we inserted above.<br />
# NOTE-0: *Only* data that has had their hash checked manually with ^R [^R = Control r].<br />
# Or on a rtorrent restart[which initiates a hash check]. Will the data move; ~/torrents/incomplete => ~/torrents/complete for example.<br />
# NOTE-1: 'branch' is an 'if' conditional statement: if(movecheck1){movedir1}<br />
system.method.set_key=event.download.hash_done,move_hashed1,"branch={$movecheck1=,movedir1=}"<br />
}}<br />
<br />
You can add additional watch folders and rules should you like to sort your torrents into special folders.<br />
<br />
For example, if you would like the torrents to download in:<br />
/home/user/torrents/incomplete<br />
and then sort the torrent data based on which folder you dropped the *.torrent into:<br />
/home/user/torrents/watch => /home/user/torrents/complete<br />
/home/user/torrents/watch/iso => /home/user/torrents/complete/iso<br />
/home/user/torrents/watch/music => /home/user/torrents/complete/music<br />
<br />
You can have the following in your .rtorrent.rc:<br />
{{bc|1=<br />
directory = /home/user/torrents/incomplete<br />
schedule = watch_directory_1,10,10,"load_start=/home/user/torrents/watch/*.torrent,d.set_custom1=/home/user/torrents/complete"<br />
<br />
schedule = watch_directory_2,10,10,"load_start=/home/user/torrents/watch/iso/*.torrent,d.set_custom1=/home/user/torrents/complete/iso"<br />
<br />
schedule = watch_directory_3,10,10,"load_start=/home/user/torrents/watch/music/*.torrent,d.set_custom1=/home/user/torrents/complete/music"<br />
<br />
system.method.insert=checkdirs1,simple,"not=\"$equal={d.get_custom1=,d.get_base_path=}\""<br />
system.method.insert=movecheck1,simple,"and={checkdirs1=,d.get_complete=,d.get_custom1=}"<br />
system.method.insert=movedir1,simple,"d.set_directory=$d.get_custom1=;execute=mv,-u,$d.get_base_path=,$d.get_custom1=;d.set_custom1=;d.stop=;d.start="<br />
system.method.set_key=event.download.hash_done,move_hashed1,"branch={$movecheck1=,movedir1=}"<br />
}}<br />
<br />
Also see [http://code.google.com/p/pyroscope/ pyroscope] especially the rtcontrol examples. There is an AUR package.<br />
<br />
==== Notification with Google Mail ====<br />
<br />
Cell phone providers allow you to "email" your phone:<br />
{{bc|<nowiki><br />
Verizon: 10digitphonenumber@vtext.com<br />
AT&T: 10digitphonenumber@txt.att.net<br />
Former AT&T customers: 10digitphonenumber@mmode.com<br />
Sprint: 10digitphonenumber@messaging.sprintpcs.com<br />
T-Mobile: 10digitphonenumber@tmomail.net<br />
Nextel: 10digitphonenumber@messaging.nextel.com<br />
Cingular: 10digitphonenumber@cingularme.com<br />
Virgin Mobile: 10digitphonenumber@vmobl.com<br />
Alltel: 10digitphonenumber@alltelmessage.com OR<br />
10digitphonenumber@message.alltel.com<br />
CellularOne: 10digitphonenumber@mobile.celloneusa.com<br />
Omnipoint: 10digitphonenumber@omnipointpcs.com<br />
Qwest: 10digitphonenumber@qwestmp.com<br />
Telus: 10digitphonenumber@msg.telus.com<br />
Rogers Wireless: 10digitphonenumber@pcs.rogers.com<br />
Fido: 10digitphonenumber@fido.ca<br />
Bell Mobility: 10digitphonenumber@txt.bell.ca<br />
Koodo Mobile: 10digitphonenumber@msg.koodomobile.com<br />
MTS: 10digitphonenumber@text.mtsmobility.com<br />
President's Choice: 10digitphonenumber@txt.bell.ca<br />
Sasktel: 10digitphonenumber@sms.sasktel.com<br />
Solo: 10digitphonenumber@txt.bell.ca<br />
</nowiki>}}<br />
<br />
*Install mailx which is provided by the {{Pkg|s-nail}} package that is found in the [[official repositories]].<br />
<br />
*Clear the {{ic|/etc/mail.rc}} file and enter:<br />
<br />
{{bc|<nowiki><br />
set sendmail="/usr/bin/mailx"<br />
set smtp=smtp.gmail.com:587<br />
set smtp-use-starttls<br />
set ssl-verify=ignore<br />
set ssl-auth=login<br />
set smtp-auth-user=USERNAME@gmail.com<br />
set smtp-auth-password=PASSWORD<br />
</nowiki>}}<br />
<br />
Now to send the text, we must pipe a message to the mailx program.<br />
*Make a Bash script:<br />
{{hc|/path/to/mail.sh|<nowiki><br />
echo "$@: Done" | mailx 5551234567@vtext.com<br />
</nowiki>}}<br />
Where the $@ is a variable holding all the arguments passed to our script.<br />
<br />
*And finally, add the important {{ic|~/.rtorrent.rc}} line:<br />
system.method.set_key = event.download.finished,notify_me,"execute=/path/to/mail.sh,$d.get_name="<br />
<br />
Breaking it down:<br />
<br />
{{ic|notify_me}} is the command id, which may be used by other commands, it can be just about anything you like, so long as it is unique.<br />
<br />
{{ic|1=execute=}} is the rtorrent command, in this case to execute a shell command.<br />
<br />
{{ic|/path/to/mail.sh}} is the name of our script (or whatever command you want to execute) followed by a comma separated list of all the switches/arguments to be passed.<br />
<br />
{{ic|1=$d.get_name=}} 'd' is an alias to whatever download triggered the command, get_name is a function which returns the name of our download, and the '$' tells rTorrent to replace the command with its output before it calls execute.<br />
<br />
The end result? When that torrent, 'All Live Nudibranches', that we started before leaving for work finishes, we will be texted:<br />
All Live Nudibranches: Done<br />
<br />
=== UI Tricks ===<br />
<br />
rTorrent does not list the active tab properly by default, add this line to your {{ic|.rtorrent.rc}} to show only active torrents<br />
schedule = filter_active,30,30,"view_filter = active,\"or={d.get_up_rate=,d.get_down_rate=}\""<br />
<br />
Then press {{ic|9}} in your rTorrent client to see the changes in action.<br />
<br />
To sort the seeding view by the upload rate and only show torrents with peers:<br />
<br />
# Sort the seeding view by the upload rate and only show torrents with peers<br />
view.sort_current = seeding,greater=d.get_up_rate=<br />
view.filter = seeding,"and=d.get_complete=,d.get_peers_connected="<br />
view.sort_new = seeding,less=d.get_up_rate=<br />
view.sort = seeding<br />
<br />
To sort the complete view by the upload rate:<br />
<br />
# Sort the complete view by the upload rate<br />
view.sort_current = complete,greater=d.get_up_rate=<br />
view.filter = seeding,"and=d.get_complete="<br />
view.sort_new = seeding,less=d.get_up_rate=<br />
view.sort = seeding<br />
<br />
=== Manually adding trackers to torrents ===<br />
<br />
# Select torrent to edit from rTorrent console view.<br />
# Hit {{ic|Ctrl+x}}.<br />
# If you had four trackers type following lines one at a time (always press {{ic|Ctrl+x}} first) to add four more for example:<br />
<br />
d.tracker.insert="5","udp://tracker.publicbt.com:80"<br />
d.tracker.insert="6","udp://tracker.openbittorrent.com:80"<br />
d.tracker.insert="7","udp://tracker.istole.it:80"<br />
d.tracker.insert="8","udp://tracker.ccc.de:80"<br />
<br />
== Troubleshooting ==<br />
<br />
=== CA certificates ===<br />
<br />
To use rTorrent with a tracker that uses HTTPS, do the following as root:<br />
<br />
{{bc|<br />
# cd /etc/ssl/certs<br />
<nowiki># wget --no-check-certificate https://www.geotrust.com/resources/root_certificates/certificates/Equifax_Secure_Global_eBusiness_CA-1.cer</nowiki><br />
# mv Equifax_Secure_Global_eBusiness_CA-1.cer Equifax_Secure_Global_eBusiness_CA-1.pem<br />
# c_rehash<br />
}}<br />
<br />
And from now on run rTorrent with:<br />
$ rtorrent -o http_capath=/etc/ssl/certs<br />
<br />
If you use GNU Screen, update the {{ic|.screenrc}} configuration file to reflect this change:<br />
$ screen -t rtorrent rtorrent -o http_capath=/etc/ssl/certs<br />
<br />
In rTorrent 0.8.9, set {{ic|<nowiki>network.http.ssl_verify_peer.set=0</nowiki>}} to [https://bbs.archlinux.org/viewtopic.php?pid=981832#p981832 fix the problem].<br />
<br />
For more information see: [https://bbs.archlinux.org/viewtopic.php?pid=331850 rTorrent Error & CA Certificate] and [https://bbs.archlinux.org/viewtopic.php?id=45800 rTorrent Certificates Problem]<br />
<br />
=== Locked directories ===<br />
<br />
rTorrent can sometimes lock up after a crash or incorrect shutdown, and will complain about a lock file.<br />
<br />
Per the error message, the file called "'''rtorrent.lock'''" can be found within the hidden folder {{ic|.rtorrentsession}} for your download directory and manually removed.<br />
<br />
=== Event failed: bad return code ===<br />
<br />
This is caused by there being spaces in your system.method.* lines. Remove the spaces and it will work.<br />
<br />
== Web interface ==<br />
<br />
There are numerous web interfaces and front ends for rTorrent including:<br />
* [[WTorrent]] is a web interface to rtorrent programmed in php using Smarty templates and XMLRPC for PHP library.<br />
* [http://code.google.com/p/ntorrent/ nTorrent] is a graphical user interface client to rtorrent written in Java.<br />
* [https://rtwi.jmk.hu/ rTWi] is a simple rTorrent web interface written in PHP.<br />
* [[Rtgui]] is a web based front end for rTorrent written in PHP and uses XML-RPC to communicate with the rTorrent client.<br />
* [https://github.com/Novik/ruTorrent rutorrent] and [http://forums.rutorrent.org/ Forum] - A web-based front-end with an interface very similar to uTorrent which supports many plugins and advanced features (see also: [[ruTorrent]] and [https://bbs.archlinux.org/viewtopic.php?pid=897577#p897577 Guide on forum]).<br />
<br />
{{Note|rTorrent is currently built using [http://xmlrpc-c.sourceforge.net/ XML-RPC for C/C++], which is required for some web interfaces (e.g. ruTorrent).}}<br />
<br />
=== XMLRPC interface ===<br />
<br />
If you want to use rtorrent with some web interfaces (e.g. rutorrent) you need to add the following line to the configuration file:<br />
scgi_port = localhost:5000<br />
<br />
For more information see: [https://github.com/rakshasa/rtorrent/wiki/RPC-Setup-XMLRPC Using XMLRPC with rtorrent]<br />
<br />
=== Saving magnet links as torrent files in watch folder ===<br />
<br />
{{Note| Rtorrent natively supports downloading torrents through magnet links. At the main view (reached by starting Rtorrent and pressing 1), press enter. At "load.normal>" paste the magnet link and press enter again. This will start the download.}}<br />
<br />
If you wish to have magnet links automatically added to your watch folder, here is a script that will do the trick:<br />
<br />
<nowiki><br />
#!/bin/bash<br />
watch_folder=~/.rtorrent/watch<br />
cd $watch_folder<br />
[[ "$1" =~ xt=urn:btih:([^&/]+) ]] || exit;<br />
echo "d10:magnet-uri${#1}:${1}e" > "meta-${BASH_REMATCH[1]}.torrent"</nowiki><br />
<br />
(adapted from http://blog.gonzih.org/blog/2012/02/17/how-to-use-magnet-links-with-rtorrent/).<br />
<br />
Save it, for instance as rtorrent-magnet, give it execution permission, and place it somewhere under your $PATH. Then in Firefox:<br />
# Type {{ic|about:config}} into the Location Bar (address bar) and press {{ic|Enter}}.<br />
# Right-click: ''New > Boolean > Name: '''network.protocol-handler.expose.magnet''' > Value > false''.<br />
# Next time you click a magnet link you will be asked which application to open it with. Select the script we just created and you will be done.<br />
<br />
If you want xdg-open to handle this, which you need if you are using chrome instead of firefox, (though gnome and other DE might have their own programs overriding xdg-open) you need to create the desktop entry for the rtorrent-magnet script in {{ic|~/.local/share/applications/rtorrent-magnet.desktop}} with the following content:<br />
<br />
<nowiki><br />
[Desktop Entry]<br />
Type=Application<br />
Name=rtorrent-magnet<br />
Exec=rtorrent-magnet %U<br />
MimeType=x-scheme-handler/magnet;<br />
NoDisplay=true</nowiki><br />
<br />
Then all you need to do is to register the mimetype using<br />
$ xdg-mime default rtorrent-magnet.desktop x-scheme-handler/magnet<br />
<br />
== Magnet to Torrent ==<br />
You could also use the {{AUR|magnet2torrent-git}} package which downloads the metadata and creates a torrent file.<br />
<br />
How to use:<br />
$ magnet2torrent <magnet link> [torrent file]<br />
<br />
== rtorrent-pyro ==<br />
<br />
{{AUR|rtorrent-pyro-git}} from the [[AUR]] comes with an extended rtorrent console interface. It does not contain the pyroscope tools yet though. If you also need the pyroscope tools see [[#PyroScope]] .<br />
<br />
Make sure you add following command to ~/.rtorrent.rc, which makes the asterisk key * to a shortcut for toggling between extended and collapsed view within rtorrent's interface:<br />
{{bc|<nowiki>schedule = bind_collapse,0,0,"ui.bind_key=download_list,*,view.collapsed.toggle="</nowiki>}}<br />
<br />
Also set "pyro.extended" to 1 to activate rTorrent-PS features.<br />
{{bc|<nowiki>system.method.insert = pyro.extended, value|const, 1</nowiki>}}<br />
<br />
=== PyroScope ===<br />
<br />
We create a directory for the installation of pyroscope, then download and update the source code from subversion:<br />
{{bc|<nowiki>mkdir -p ~/.lib<br />
svn checkout http://pyroscope.googlecode.com/svn/trunk/ ~/.lib/pyroscope<br />
~/.lib/pyroscope/update-to-head.sh</nowiki>}}<br />
Adding pyroscope bin's PATH to .bashrc:<br />
{{bc|<nowiki>export PATH=$PATH:path_to_the_bin # Example path for pyroscope bin's: /home/user/.lib/pyroscope/bin/</nowiki>}}<br />
Creating the ~/.pyroscope/config.ini:<br />
{{bc|<nowiki>pyroadmin --create-config</nowiki>}}<br />
<br />
Add this to your ~/.rtorrent.rc. Do not forget to add the path of your pyroscope bin's dir (see below).<br />
{{bc|<nowiki>system.method.insert = pyro.bin_dir, string|const, write_here_path_to_your_pyroscope_bin_dir # Example path: /home/user/.lib/pyroscope/bin/<br />
system.method.insert = pyro.rc_dialect, string|const|simple, "execute_capture=bash,-c,\"test $1 = 0.8.6 && echo -n 0.8.6 || echo -n 0.8.9\",dialect,$system.client_version="<br />
system.method.insert = pyro.rtorrent_rc, string|const|private, "$cat=~/.pyroscope/rtorrent-,\"$pyro.rc_dialect=\",.rc.default"<br />
import = $pyro.rtorrent_rc=</nowiki>}}<br />
<br />
Optionally: TORQUE: Daemon watchdog schedule. Must be activated by touching the "~/.pyroscope/run/pyrotorque" file!<br />
You can also just use rtorrent watch dir or give pyro_watchdog a try, which comes with 'treewatch' ability, meaning it also watches for torrents recursively within the given watch path. Further documentation for pyro_watchdog is here: <br />
[http://code.google.com/p/pyroscope/wiki/QueueManager] <br />
To enable pyro_watchdog, add this in ~/.rtorrent.rc and further configurations are in ~/.pyroscope/torque.ini. <br />
{{bc|<nowiki>schedule = pyro_watchdog,30,300,"pyro.watchdog=~/.pyroscope,-v"</nowiki>}}<br />
<br />
Following steps are important. Before using pyroscope tools you have to set the missing "loaded" times to that of the .torrent file. Run this in your terminal:<br />
{{bc|<nowiki>rtcontrol '!*"*' loaded=0 -q -sname -o 'echo "$(name)s"\ntest -f "$(metafile)s" && rtxmlrpc -q d.set_custom $(hash)s tm_loaded \$(\<br />
ls -l --time-style "+%%s" "$(metafile)s" \<br />
| cut -f6 -d" ")\nrtxmlrpc -q d.save_session $(hash)s' | bash</nowiki>}}<br />
<br />
And now set the missing "completed" times to that of the data file or directory:<br />
{{bc|<nowiki>rtcontrol '!*"*' completed=0 done=100 path=\! is_ghost=no -q -sname -o 'echo "$(name)s"\ntest -e "$(realpath)s" && rtxmlrpc -q d.set_custom $(hash)s tm_completed \$(\<br />
ls -ld --time-style "+%%s" "$(realpath)s" \<br />
| cut -f6 -d" ")\nrtxmlrpc -q d.save_session $(hash)s' | bash</nowiki>}}<br />
<br />
Example usage:<br />
Will print out all torrents older than 2 hours:<br />
{{bc|<nowiki>rtcontrol -V completed=+2h -scompleted -ocompleted</nowiki>}}<br />
Deletes all torrents older than 48 hours:<br />
{{bc|<nowiki>rtcontrol -V completed=+48h -scompleted -ocompleted --cull --yes</nowiki>}}<br />
<br />
== See also ==<br />
<br />
* [http://linux.die.net/man/1/rtorrent Manpage for rtorrent]<br />
* [[Screen Tips]]<br />
* [[Wikipedia:Comparison of BitTorrent clients|Comparison of BitTorrent clients]] on Wikipedia<br />
* [http://community.rutorrent.org/ rTorrent Community Wiki] - Public place for information on rTorrent and any project related to rTorrent, regarding setup, configuration, operations, and development.<br />
* [http://code.google.com/p/pyroscope/ PyroScope] - Collection of command line tools for rTorrent. It provides commands for creating and modifying torrent files, moving data on completion without having multiple watch folders, and mass-controlling download items via rTorrent's XML-RPC interface: searching, start/stop, deleting items with or without their data, etc. It also offers a documented [[Python]] API.<br />
* [[Rutorrent with lighttpd|ruTorrent with Lighttpd]]<br />
* [http://wiki.theaveragegeek.com/howto/installing_rtorrent_and_hellanzb_on_centos5_64-bit_vps How-to install rTorrent and Hellanzb on CentOS 5 64-bit VPS]<br />
* [http://code.google.com/p/pyroscope/wiki/DebianInstallFromSource Installation guide for rTorrent and Pyroscope on Debian] - Collection of tools for the BitTorrent protocol and especially the rTorrent client<br />
* [http://mktorrent.sourceforge.net/ mktorrent] - Command line application used to generate torrent files, which is available as {{Pkg|mktorrent}} in the [[official repositories]].<br />
* [https://github.com/kfei/docktorrent docktorrent] - Using Docker, rTorrent and ruTorrent to run a full-featured BitTorrent box.<br />
* [https://github.com/nelhage/reptyr reptyr] - another tool to take over a program's TTY (it is in the standard repos). The process may have started being attached to a terminal or to a socket in tmux, screen or dtach.<br />
* [http://caca.zoy.org/wiki/neercs neercs] - a more screen/tmux like tool than reptyr, but, like reptyr, neercs can also "steal" a process that may have started slaved to a terminal or to a socket in tmux, screen or dtach. {{AUR|neercs-git}}{{Broken package link|{{aur-mirror|neercs-git}}}}<br />
<br />
'''Forum threads'''<br />
* 2009-03-11 - Arch Linux - [https://bbs.archlinux.org/viewtopic.php?id=67304 HOWTO: rTorrent stats in Conky]</div>Ygyfygyhttps://wiki.archlinux.org/index.php?title=Spectrwm&diff=428766Spectrwm2016-03-30T19:15:28Z<p>Ygyfygy: /* Starting spectrwm */ Moved section from aw dwm article. Shit's perfect. AKA cosmetic edit.</p>
<hr />
<div>{{DISPLAYTITLE:spectrwm}}<br />
[[Category:Dynamic WMs]]<br />
[[ja:Spectrwm]]<br />
From [http://spectrwm.org/ spectrwm website]:<br />
<br />
:''spectrwm is a small dynamic tiling window manager for [[Xorg]]. It tries to stay out of the way so that valuable screen real estate can be used for much more important stuff. It has sane defaults and does not require one to learn a language to do any configuration. It was written by hackers for hackers and it strives to be small, compact and fast.''<br />
<br />
Spectrwm is written in C and configured with a text configuration file. It was previously known as scrotwm.<br />
<br />
== Installation ==<br />
<br />
[[Install]] the {{Pkg|spectrwm}} package. <br />
<br />
The modkey (the main key to issue commands with) is set to Mod4, which is usually the {{ic|Super}} key.<br />
<br />
There is also a screen lock key binding, which by default calls xlock from the {{Pkg|xlockmore}} package.<br />
<br />
{{Pkg|xscreensaver}} is also useful for screen saving and power management after an idle period, and screen locking.<br />
<br />
See [[Xdefaults]] for details of how to set up fonts, colours and other settings for {{Pkg|xterm}} and {{Pkg|xscreensaver}}. Run {{ic|xscreensaver-demo}} to select the animation (or blank) and display power management (recommended).<br />
<br />
== Configuration ==<br />
<br />
''spectrwm'' first tries to open the user specific file, {{ic|~/.spectrwm.conf}}. If that file is unavailable, it tries to open the global configuration file at {{ic|/etc/spectrwm.conf}}.<br />
<br />
Optionally, spectrwm can call {{ic|baraction.sh}} (in the user's path), which should output a text status message to {{Ic|stdout}} for the status bar.<br />
<br />
=== Keybindings configuration ===<br />
<br />
Default keybindings are in {{ic|/etc/spectrwm/spectrwm_<<keyboard layout>>.conf}}. In order to customize keybingings:<br />
<br />
* Set {{ic|keyboard_mapping}} to /dev/null in your {{ic|~/.spectrwm.com}}<br />
<br />
* Copy-paste the contents of {{ic|/etc/spectrwm/spectrwm_<<keyboard layout>>.conf}} to the end of your {{ic|~/.spectrwm.conf}}.<br />
<br />
== Starting spectrwm ==<br />
<br />
Select ''spectrwm'' from the menu in a [[display manager]] of choice.<br />
<br />
Alternatively, to start spectrwm with {{Ic|startx}} or the [[SLiM]] login manager, simply append the following to {{ic|~/.xinitrc}}: <br />
exec spectrwm<br />
<br />
== Multiple monitors (Xinerama) ==<br />
<br />
With a non-Xrandr multiple monitor setup create regions to split the total desktop area into one region per monitor:<br />
<br />
region = screen[1]:1280x1024+0+0<br />
region = screen[1]:1280x1024+1280+0<br />
<br />
== Statusbar configuration ==<br />
<br />
To enable the statusbar, uncomment these two items in {{ic|/etc/spectrwm.conf}} (or {{ic|~/.spectrwm.conf}}). By default they are commented out and the statusbar is disabled.<br />
<br />
bar_action = baraction.sh<br />
bar_delay = 5<br />
<br />
=== Bash scripts ===<br />
<br />
To test the status bar, place the following simple {{ic|baraction.sh}} in a<br />
{{ic|~/scripts}} (or {{ic|~/bin}}) directory which you have previously added to your $PATH in your [[bashrc|~/.bashrc]] file.<br />
<br />
{{bc|<nowiki><br />
#!/bin/bash<br />
# baraction.sh script for spectrwm status bar<br />
<br />
SLEEP_SEC=5 # set bar_delay = 5 in /etc/spectrwm.conf<br />
COUNT=0<br />
#loops forever outputting a line every SLEEP_SEC secs<br />
while :; do<br />
let COUNT=$COUNT+1<br />
echo -e " Hello World! $COUNT"<br />
sleep $SLEEP_SEC<br />
done<br />
</nowiki>}}<br />
<br />
Press {{ic|Modkey+Q}} to restart spectrwm and after a few seconds you should see the output in the status bar. If you have problems at this stage, make sure the script is executable, test it from the command line, and check the path/filename you specified in {{ic|bar_action}}.<br />
<br />
Here are some other ideas for status bar items: ethernet, email notification, disk space, mounts, now playing (mpc current).<br />
<br />
The script may also show the date, in which case the built-in clock can be disabled:<br />
<br />
clock_enabled = 0<br />
<br />
=== Conky ===<br />
<br />
Instead of a bash script, conky may be used. It should be used in non-graphical mode as shown below to output a text string to stdout which can be read in by spectrwm. First install conky.<br />
It is not necessary to install the cut-down "conky-cli" from AUR (although that would work too). <br />
<br />
In {{ic|~/.spectrwm.conf}} set<br />
<br />
bar_action = conky<br />
<br />
Then in each user's {{ic|~/.conkyrc}} file place for example:<br />
<br />
out_to_x no<br />
out_to_console yes<br />
update_interval 1.0<br />
total_run_times 0<br />
use_spacer none<br />
TEXT<br />
${time %R %a,%d-%#b-%y} |Mail:${new_mails} |Up:${uptime_short} |Temp:${acpitemp}C |Batt:${battery_short} |${addr wlan0} |RAM:$memperc% |CPU:${cpu}% | ${downspeedf wlan0}<br />
<br />
== Alternative status bar ==<br />
<br />
An alternative is to use [[dzen|dzen2]] to create a status bar. This has the advantage that colors and even icons may be used, but the disadvantage that the bar is not integrated with spectrwm. So the current workspace number and layout and the bar-toggle keybinding are not available. The "region" option can be used to reserve the required screen space.<br />
For example to reserve 14 pixels at the top of the screen in spectrwm.conf change<br />
<br />
bar_enabled = 1<br />
region = screen[1]:1024x768+0+0<br />
<br />
to<br />
<br />
bar_enabled = 0<br />
region = screen[1]:1024x754+0+14<br />
<br />
(adjust for your screen resolution).<br />
<br />
Then, for example using [[i3|i3status]] to supply the information:<br />
<br />
$ i3status | dzen2 -fn -*-terminus-medium-*-*-*-*-*-*-*-*-*-*-* &<br />
<br />
Spectrwm's own bar can still be enabled and disabled with {{ic|Meta+b}}.<br />
<br />
== Screenshots ==<br />
<br />
Spectrwm has the facility to execute a script called {{ic|screenshot.sh}} with the keybindings<br />
<br />
Meta+s for a full screenshot<br />
Meta+Shift+s for a screenshot of a single window<br />
<br />
First install scrot<br />
Then copy the default script supplied in the spectrwm package to a location in your {{ic|$PATH}}, for example:<br />
<br />
$ cp /usr/share/spectrwm/screenshot.sh ~/bin<br />
<br />
== Screen locking ==<br />
<br />
By default the lock keybinding {{ic|Mod+Shift+Delete}} executes ''xlock''<br />
<br />
program[lock] = xlock<br />
<br />
An alternative, if xscreensaver is already running, is to use<br />
<br />
program[lock] = xscreensaver-command -lock<br />
<br />
== Using spectrwm ==<br />
<br />
* To save space, window title bars are not shown. Window borders are one pixel wide. The border changes colour to indicate focus.<br />
<br />
* Layouts are handled dynamically and can be changed on the fly. There are three standard layouts (stacking algorithms): vertical, horizontal and maximized (indicated in the status bar as [|], [-] and [ ])<br />
<br />
* There is the concept of a master area (a working area). Any window can be switched to become the master and will then be shown in the master area. The master area is the left (top) portion of the screen in vertical (horizontal) mode. The size of the master area can be adjusted with the keys. By default the master area holds one window, but this can be increased.<br />
<br />
* The area excluding the master area is called the stacking area. New windows are added to the stacking area. By default the stacking area has one column (row) in vertical (horizontal) mode, but his can be increased.<br />
<br />
* Windows may be moved to a floating layer -- i.e. removed from the tiling management. This is useful for programs which are not suitable for tiling.<br />
<br />
Some of the most useful key bindings:<br />
<br />
{{bc|<nowiki><br />
Meta+Shift+Return: open terminal<br />
Meta+p: dmenu (then type the start of the program name and return)<br />
Meta+1/2/3/4/5/6/7/8/9/0: select workspaces 1-10<br />
Meta+Shift+1/2/3/4/5/6/7/8/9/0: move window to workspace 1-10<br />
Meta+Right/Left: select next/previous workspace<br />
Meta+Shift+Right/Left: select next/previous screen<br />
Meta+Spacebar: cycle through layouts (vertical, horizontal, maximized)<br />
Meta+j/k: cycle through windows forwards/backwards<br />
Meta+Tab/Meta+Shft+Tab: same as Meta+j/k<br />
Meta+Return: move current window to master area<br />
Meta+h/l: increase/decrease size of master area<br />
</nowiki>}}<br />
<br />
Advanced stacking<br />
<br />
{{bc|<nowiki><br />
Meta+,/. : increase/decrease the number of windows in master area (default is 1)<br />
Meta+Shift+,/. : increase/decrease number of columns(rows) in stacking area in vertical(horizontal) mode (default is 1)<br />
Meta+Shift+j/k: swap window position with next/previous window<br />
Meta+t: float<->tile toggle<br />
</nowiki>}}<br />
<br />
Mouse bindings<br />
<br />
{{bc|<nowiki><br />
Mouseover: focus window<br />
Meta+LeftClick+Drag: move window (and float it if tiled)<br />
Meta+RightClick+Drag: resize floating window<br />
Meta+Shift+RightClick+Drag: resize floating window keeping it centred<br />
</nowiki>}}<br />
<br />
Other useful bindings<br />
<br />
{{bc|<nowiki><br />
Meta+x: close window<br />
Meta+Shift+x: kill window<br />
Meta+b: hide/show status bar<br />
Meta+q: restart spectrwm (reset desktops and reread spectrwm config without stopping running programs)<br />
Meta+Shift+q: exit spectrwm<br />
</nowiki>}}<br />
<br />
== Troubleshooting ==<br />
<br />
=== Help, I just logged in and all I see is a blank screen ===<br />
<br />
Press {{ic|Shift+WinKey+Return}} and an xterm will start. See {{ic|man spectrwm}} for other default key bindings. Also check your configuration file.<br />
<br />
=== Why does my window open in a desktop other then the current active one? ===<br />
<br />
Currently the PID of window is used to determine the desktop for new windows. To workaround this with terminals for example, you can often pass an argument to open the terminal in a new process.<br />
<br />
== See also ==<br />
<br />
* [http://www.spectrwm.org spectrwm] - spectrwm's official website<br />
<br />
* [[dmenu]] - Simple application launcher from the developers of [[dwm]]<br />
<br />
* #spectrwm at irc.freenode.net - (un)official IRC channel<br />
<br />
* [https://bbs.archlinux.org/viewtopic.php?id=64645 The scrotwm thread]</div>Ygyfygyhttps://wiki.archlinux.org/index.php?title=Spectrwm&diff=428765Spectrwm2016-03-30T19:11:52Z<p>Ygyfygy: /* Starting spectrwm */ startx is not a login manager</p>
<hr />
<div>{{DISPLAYTITLE:spectrwm}}<br />
[[Category:Dynamic WMs]]<br />
[[ja:Spectrwm]]<br />
From [http://spectrwm.org/ spectrwm website]:<br />
<br />
:''spectrwm is a small dynamic tiling window manager for [[Xorg]]. It tries to stay out of the way so that valuable screen real estate can be used for much more important stuff. It has sane defaults and does not require one to learn a language to do any configuration. It was written by hackers for hackers and it strives to be small, compact and fast.''<br />
<br />
Spectrwm is written in C and configured with a text configuration file. It was previously known as scrotwm.<br />
<br />
== Installation ==<br />
<br />
[[Install]] the {{Pkg|spectrwm}} package. <br />
<br />
The modkey (the main key to issue commands with) is set to Mod4, which is usually the {{ic|Super}} key.<br />
<br />
There is also a screen lock key binding, which by default calls xlock from the {{Pkg|xlockmore}} package.<br />
<br />
{{Pkg|xscreensaver}} is also useful for screen saving and power management after an idle period, and screen locking.<br />
<br />
See [[Xdefaults]] for details of how to set up fonts, colours and other settings for {{Pkg|xterm}} and {{Pkg|xscreensaver}}. Run {{ic|xscreensaver-demo}} to select the animation (or blank) and display power management (recommended).<br />
<br />
== Configuration ==<br />
<br />
''spectrwm'' first tries to open the user specific file, {{ic|~/.spectrwm.conf}}. If that file is unavailable, it tries to open the global configuration file at {{ic|/etc/spectrwm.conf}}.<br />
<br />
Optionally, spectrwm can call {{ic|baraction.sh}} (in the user's path), which should output a text status message to {{Ic|stdout}} for the status bar.<br />
<br />
=== Keybindings configuration ===<br />
<br />
Default keybindings are in {{ic|/etc/spectrwm/spectrwm_<<keyboard layout>>.conf}}. In order to customize keybingings:<br />
<br />
* Set {{ic|keyboard_mapping}} to /dev/null in your {{ic|~/.spectrwm.com}}<br />
<br />
* Copy-paste the contents of {{ic|/etc/spectrwm/spectrwm_<<keyboard layout>>.conf}} to the end of your {{ic|~/.spectrwm.conf}}.<br />
<br />
== Starting spectrwm ==<br />
<br />
To start spectrwm via {{Ic|xinit}}, append the following to {{ic|~/.xinitrc}}:<br />
<br />
exec spectrwm<br />
<br />
See also [[Display manager]].<br />
<br />
== Multiple monitors (Xinerama) ==<br />
<br />
With a non-Xrandr multiple monitor setup create regions to split the total desktop area into one region per monitor:<br />
<br />
region = screen[1]:1280x1024+0+0<br />
region = screen[1]:1280x1024+1280+0<br />
<br />
== Statusbar configuration ==<br />
<br />
To enable the statusbar, uncomment these two items in {{ic|/etc/spectrwm.conf}} (or {{ic|~/.spectrwm.conf}}). By default they are commented out and the statusbar is disabled.<br />
<br />
bar_action = baraction.sh<br />
bar_delay = 5<br />
<br />
=== Bash scripts ===<br />
<br />
To test the status bar, place the following simple {{ic|baraction.sh}} in a<br />
{{ic|~/scripts}} (or {{ic|~/bin}}) directory which you have previously added to your $PATH in your [[bashrc|~/.bashrc]] file.<br />
<br />
{{bc|<nowiki><br />
#!/bin/bash<br />
# baraction.sh script for spectrwm status bar<br />
<br />
SLEEP_SEC=5 # set bar_delay = 5 in /etc/spectrwm.conf<br />
COUNT=0<br />
#loops forever outputting a line every SLEEP_SEC secs<br />
while :; do<br />
let COUNT=$COUNT+1<br />
echo -e " Hello World! $COUNT"<br />
sleep $SLEEP_SEC<br />
done<br />
</nowiki>}}<br />
<br />
Press {{ic|Modkey+Q}} to restart spectrwm and after a few seconds you should see the output in the status bar. If you have problems at this stage, make sure the script is executable, test it from the command line, and check the path/filename you specified in {{ic|bar_action}}.<br />
<br />
Here are some other ideas for status bar items: ethernet, email notification, disk space, mounts, now playing (mpc current).<br />
<br />
The script may also show the date, in which case the built-in clock can be disabled:<br />
<br />
clock_enabled = 0<br />
<br />
=== Conky ===<br />
<br />
Instead of a bash script, conky may be used. It should be used in non-graphical mode as shown below to output a text string to stdout which can be read in by spectrwm. First install conky.<br />
It is not necessary to install the cut-down "conky-cli" from AUR (although that would work too). <br />
<br />
In {{ic|~/.spectrwm.conf}} set<br />
<br />
bar_action = conky<br />
<br />
Then in each user's {{ic|~/.conkyrc}} file place for example:<br />
<br />
out_to_x no<br />
out_to_console yes<br />
update_interval 1.0<br />
total_run_times 0<br />
use_spacer none<br />
TEXT<br />
${time %R %a,%d-%#b-%y} |Mail:${new_mails} |Up:${uptime_short} |Temp:${acpitemp}C |Batt:${battery_short} |${addr wlan0} |RAM:$memperc% |CPU:${cpu}% | ${downspeedf wlan0}<br />
<br />
== Alternative status bar ==<br />
<br />
An alternative is to use [[dzen|dzen2]] to create a status bar. This has the advantage that colors and even icons may be used, but the disadvantage that the bar is not integrated with spectrwm. So the current workspace number and layout and the bar-toggle keybinding are not available. The "region" option can be used to reserve the required screen space.<br />
For example to reserve 14 pixels at the top of the screen in spectrwm.conf change<br />
<br />
bar_enabled = 1<br />
region = screen[1]:1024x768+0+0<br />
<br />
to<br />
<br />
bar_enabled = 0<br />
region = screen[1]:1024x754+0+14<br />
<br />
(adjust for your screen resolution).<br />
<br />
Then, for example using [[i3|i3status]] to supply the information:<br />
<br />
$ i3status | dzen2 -fn -*-terminus-medium-*-*-*-*-*-*-*-*-*-*-* &<br />
<br />
Spectrwm's own bar can still be enabled and disabled with {{ic|Meta+b}}.<br />
<br />
== Screenshots ==<br />
<br />
Spectrwm has the facility to execute a script called {{ic|screenshot.sh}} with the keybindings<br />
<br />
Meta+s for a full screenshot<br />
Meta+Shift+s for a screenshot of a single window<br />
<br />
First install scrot<br />
Then copy the default script supplied in the spectrwm package to a location in your {{ic|$PATH}}, for example:<br />
<br />
$ cp /usr/share/spectrwm/screenshot.sh ~/bin<br />
<br />
== Screen locking ==<br />
<br />
By default the lock keybinding {{ic|Mod+Shift+Delete}} executes ''xlock''<br />
<br />
program[lock] = xlock<br />
<br />
An alternative, if xscreensaver is already running, is to use<br />
<br />
program[lock] = xscreensaver-command -lock<br />
<br />
== Using spectrwm ==<br />
<br />
* To save space, window title bars are not shown. Window borders are one pixel wide. The border changes colour to indicate focus.<br />
<br />
* Layouts are handled dynamically and can be changed on the fly. There are three standard layouts (stacking algorithms): vertical, horizontal and maximized (indicated in the status bar as [|], [-] and [ ])<br />
<br />
* There is the concept of a master area (a working area). Any window can be switched to become the master and will then be shown in the master area. The master area is the left (top) portion of the screen in vertical (horizontal) mode. The size of the master area can be adjusted with the keys. By default the master area holds one window, but this can be increased.<br />
<br />
* The area excluding the master area is called the stacking area. New windows are added to the stacking area. By default the stacking area has one column (row) in vertical (horizontal) mode, but his can be increased.<br />
<br />
* Windows may be moved to a floating layer -- i.e. removed from the tiling management. This is useful for programs which are not suitable for tiling.<br />
<br />
Some of the most useful key bindings:<br />
<br />
{{bc|<nowiki><br />
Meta+Shift+Return: open terminal<br />
Meta+p: dmenu (then type the start of the program name and return)<br />
Meta+1/2/3/4/5/6/7/8/9/0: select workspaces 1-10<br />
Meta+Shift+1/2/3/4/5/6/7/8/9/0: move window to workspace 1-10<br />
Meta+Right/Left: select next/previous workspace<br />
Meta+Shift+Right/Left: select next/previous screen<br />
Meta+Spacebar: cycle through layouts (vertical, horizontal, maximized)<br />
Meta+j/k: cycle through windows forwards/backwards<br />
Meta+Tab/Meta+Shft+Tab: same as Meta+j/k<br />
Meta+Return: move current window to master area<br />
Meta+h/l: increase/decrease size of master area<br />
</nowiki>}}<br />
<br />
Advanced stacking<br />
<br />
{{bc|<nowiki><br />
Meta+,/. : increase/decrease the number of windows in master area (default is 1)<br />
Meta+Shift+,/. : increase/decrease number of columns(rows) in stacking area in vertical(horizontal) mode (default is 1)<br />
Meta+Shift+j/k: swap window position with next/previous window<br />
Meta+t: float<->tile toggle<br />
</nowiki>}}<br />
<br />
Mouse bindings<br />
<br />
{{bc|<nowiki><br />
Mouseover: focus window<br />
Meta+LeftClick+Drag: move window (and float it if tiled)<br />
Meta+RightClick+Drag: resize floating window<br />
Meta+Shift+RightClick+Drag: resize floating window keeping it centred<br />
</nowiki>}}<br />
<br />
Other useful bindings<br />
<br />
{{bc|<nowiki><br />
Meta+x: close window<br />
Meta+Shift+x: kill window<br />
Meta+b: hide/show status bar<br />
Meta+q: restart spectrwm (reset desktops and reread spectrwm config without stopping running programs)<br />
Meta+Shift+q: exit spectrwm<br />
</nowiki>}}<br />
<br />
== Troubleshooting ==<br />
<br />
=== Help, I just logged in and all I see is a blank screen ===<br />
<br />
Press {{ic|Shift+WinKey+Return}} and an xterm will start. See {{ic|man spectrwm}} for other default key bindings. Also check your configuration file.<br />
<br />
=== Why does my window open in a desktop other then the current active one? ===<br />
<br />
Currently the PID of window is used to determine the desktop for new windows. To workaround this with terminals for example, you can often pass an argument to open the terminal in a new process.<br />
<br />
== See also ==<br />
<br />
* [http://www.spectrwm.org spectrwm] - spectrwm's official website<br />
<br />
* [[dmenu]] - Simple application launcher from the developers of [[dwm]]<br />
<br />
* #spectrwm at irc.freenode.net - (un)official IRC channel<br />
<br />
* [https://bbs.archlinux.org/viewtopic.php?id=64645 The scrotwm thread]</div>Ygyfygyhttps://wiki.archlinux.org/index.php?title=RTorrent&diff=428492RTorrent2016-03-29T10:25:07Z<p>Ygyfygy: /* UI Tricks */ spelling</p>
<hr />
<div>{{DISPLAYTITLE:rTorrent}}<br />
[[Category:Internet applications]]<br />
[[es:RTorrent]]<br />
[[ja:RTorrent]]<br />
[[ru:RTorrent]]<br />
[[zh-CN:RTorrent]]<br />
[https://rakshasa.github.io/rtorrent/ rTorrent] is a quick and efficient BitTorrent client that uses, and is in development alongside, the libTorrent (not to be confused with {{Pkg|libtorrent-rasterbar}}) library. It is written in C++ and uses the [[Wikipedia:ncurses|ncurses]] programming library, which means it uses a text user interface. When combined with a terminal multiplexer (e.g. [[GNU Screen]] or [[Tmux]]) and [[Secure Shell]], it becomes a convenient remote [[Wikipedia:BitTorrent (protocol)#Operation|BitTorrent client]].<br />
<br />
== Installation ==<br />
<br />
[[Install]] the {{Pkg|rtorrent}} package that is available in the [[official repositories]].<br />
<br />
Alternatively, install {{AUR|rtorrent-git}} or {{AUR|rtorrent-vi-color}} or {{AUR|rtorrent-extended}}{{Broken package link|{{aur-mirror|rtorrent-extended}}}} from the [[AUR]].<br />
<br />
== Configuration ==<br />
<br />
{{Note|See the rTorrent wiki article on this subject for more information: [http://web.archive.org/web/20140213003955/http://libtorrent.rakshasa.no/wiki/RTorrentCommonTasks Common Tasks in rTorrent for Dummies].}}<br />
<br />
Before running rTorrent, find the example configuration file {{ic|/usr/share/doc/rtorrent/rtorrent.rc}} and copy it to {{ic|~/.rtorrent.rc}}:<br />
<br />
$ cp /usr/share/doc/rtorrent/rtorrent.rc ~/.rtorrent.rc<br />
<br />
=== Performance ===<br />
<br />
{{Note|See the rTorrent wiki article on this subject for more information: [http://web.archive.org/web/20140213011439/http://libtorrent.rakshasa.no/wiki/RTorrentPerformanceTuning Performance Tuning]}}<br />
<br />
The values for the following options are dependent on the system's hardware and Internet connection speed. To find the optimal values read: [http://torrentfreak.com/optimize-your-BitTorrent-download-speed Optimize Your BitTorrent Download Speed]<br />
{{bc|<nowiki><br />
min_peers = 40<br />
max_peers = 52<br />
<br />
min_peers_seed = 10<br />
max_peers_seed = 52<br />
<br />
max_uploads = 8<br />
<br />
download_rate = 200<br />
upload_rate = 28<br />
</nowiki>}}<br />
<br />
The {{ic|check_hash}} option executes a hash check when a torrent download is complete or rTorrent is started. When starting, it checks for errors in your completed files. <br />
check_hash = yes<br />
<br />
=== Create and manage files ===<br />
<br />
The {{ic|directory}} option will determine where your torrent data will be saved (could be a relative path):<br />
directory = ~/downloaded<br />
<br />
The {{ic|session}} option allows rTorrent to save the progess of your torrents. It is recommended to create a directory in home directory (e.g. {{ic|mkdir ~/.rtorrent.session}}).<br />
session = ~/.rtorrent.session<br />
<br />
The {{ic|schedule}} option has rTorrent watch a particular directory for new torrent files. Saving a torrent file to this directory will automatically start the download. Remember to create the directory that will be watched (e.g. {{ic|mkdir ~/watch}}). Also, be careful when using this option as rTorrent will move the torrent file to your session folder and rename it to its hash value.<br />
schedule = watch_directory,5,5,load_start=/home/''user''/watch/*.torrent<br />
schedule = untied_directory,5,5,stop_untied=<br />
schedule = tied_directory,5,5,start_tied=<br />
<br />
The following {{ic|schedule}} option is intended to stop rTorrent from downloading data when disk space is low.<br />
schedule = low_diskspace,5,60,close_low_diskspace=100M<br />
<br />
=== Port configuration ===<br />
<br />
The {{ic|port_range}} option sets which port(s) to use for listening. It is recommended to use a port that is higher than 49152 (see: [[Wikipedia:List of TCP and UDP port numbers|List of port numbers]]). Although, rTorrent allows a range of ports, a single port is recommended.<br />
port_range = 49164-49164<br />
<br />
Additionally, make sure port forwarding is enabled for the proper port(s) (see: [http://portforward.com/english/routers/port_forwarding/routerindex.htm Port Forward guides]).<br />
<br />
=== Additional settings ===<br />
<br />
The {{ic|encryption}} option enables or disables encryption. It is very important to enable this option, not only for yourself, but also for your peers in the torrent swarm. Some users need to obscure their bandwidth usage from their ISP. And it does not hurt to enable it even if you do not need the added security.<br />
encryption = allow_incoming,try_outgoing,enable_retry<br />
It is also possible to force all connections to use encryption. However, be aware that this stricter rule will reduce your client's availability:<br />
encryption = require,require_RC4,allow_incoming,try_outgoing<br />
<br />
See also [[Wikipedia:BitTorrent Protocol Encryption]].<br />
<br />
This final {{ic|dht}} option enables [[Wikipedia:Distributed hash table|DHT]] support. DHT is common among public trackers and will allow the client to acquire more peers.<br />
{{bc|<nowiki><br />
dht = auto<br />
dht_port = 6881<br />
peer_exchange = yes<br />
</nowiki>}}<br />
<br />
== Key bindings ==<br />
<br />
rTorrent relies exclusively on keyboard shortcuts for user input. A quick reference is available in the table below. A complete guide is available on the rTorrent wiki (see: [https://github.com/rakshasa/rtorrent/wiki/User-Guide rTorrent User Guide]).<br />
<br />
{{Note|Striking {{ic|Ctrl-q}} twice in quick succession will make rTorrent shutdown without waiting to send a stop announce to the connected trackers.}}<br />
<br />
{| class="wikitable"<br />
|-<br />
!width="75" |Cmd<br />
!Action<br />
|-<br />
|Ctrl-q<br />
|Quit application<br />
|-<br />
|Ctrl-s<br />
|Start download. Runs hash first unless already done.<br />
|-<br />
|Ctrl-d<br />
|Stop an active download or remove a stopped download<br />
|-<br />
|Ctrl-k<br />
|Stop and close the files of an active download.<br />
|-<br />
|Ctrl-r<br />
|Initiate hash check of torrent. Starts downloading if file is not available.<br />
|-<br />
|Ctrl-o<br />
|Specify the download directory for a added, but not started torrent.<br />
|-<br />
|Left<br />
|Returns to the previous screen<br />
|-<br />
|Right<br />
|Goes to the next screen<br />
|-<br />
|Backspace<br />
|Adds and starts the specified *.torrent<br />
|-<br />
|Return<br />
|Adds and doesn't start the specified *.torrent<br />
|-<br />
|<nowiki>a|s|d</nowiki><br />
|<nowiki>Increase global upload throttle about 1|5|50 KB/s</nowiki><br />
|-<br />
|<nowiki>A|S|D</nowiki><br />
|<nowiki>Increase global download throttle about 1|5|50 KB/s</nowiki><br />
|-<br />
|<nowiki>z|x|c</nowiki><br />
|<nowiki>Decrease global upload throttle about 1|5|50 KB/s</nowiki><br />
|-<br />
|<nowiki>Z|X|C</nowiki><br />
|<nowiki>Decrease global download throttle about 1|5|50 KB/s</nowiki><br />
|}<br />
<br />
=== Redundant mapping ===<br />
<br />
{{ic|Ctrl-s}} is often used for terminal control to stop screen output while {{ic|Ctrl-q}} is used to start it. These mappings may interfere with rTorrent. Check to see if these terminal options are bound to a mapping:<br />
{{hc|$ stty -a|<nowiki>...<br />
swtch = <undef>; start = ^Q; stop = ^S; susp = ^Z; rprnt = ^R; werase = ^W; lnext = ^V;<br />
...<br />
</nowiki>}}<br />
<br />
To remove the mappings, change the terminal characteristics to undefine the aforementioned special characters (i.e. {{ic|stop}} and {{ic|start}}):<br />
# stty stop undef<br />
# stty start undef<br />
<br />
To remove these mappings automatically at startup you may add the two preceding commands to your {{ic|~/.bashrc}} file.<br />
<br />
== Additional tips ==<br />
<br />
=== systemd service file with tmux or screen ===<br />
<br />
*With tmux (Restart rtorrent if crashed)<br />
{{hc|/etc/systemd/user/rt.service|<nowiki><br />
[Unit]<br />
Description=rTorrent<br />
After=network.target<br />
<br />
[Service]<br />
Type=forking<br />
KillMode=none<br />
ExecStart=/usr/bin/tmux new-session -s rt -n rtorrent -d rtorrent<br />
ExecStop=/usr/bin/bash -c "/usr/bin/tmux send-keys -t rt:rtorrent.0 C-q && while pidof rtorrent > /dev/null; do sleep 0.5; echo rtorrent still running...; done"<br />
WorkingDirectory=%h<br />
Restart=on-failure<br />
<br />
[Install]<br />
WantedBy=default.target<br />
</nowiki>}}<br />
<br />
*With tmux running as user rtorrent (Restart rtorrent if crashed)<br />
{{hc|/etc/systemd/system/rtorrent.service|<nowiki><br />
[Unit]<br />
Description=rTorrent Daemon<br />
After=network.target<br />
<br />
[Service]<br />
Type=forking<br />
KillMode=none<br />
User=rtorrent<br />
ExecStart=/usr/bin/tmux new-session -c /mnt/storage/rtorrent -s rtorrent -n rtorrent -d rtorrent<br />
ExecStop=/usr/bin/bash -c "/usr/bin/tmux send-keys -t rtorrent C-q && while pidof rtorrent > /dev/null; do sleep 0.5; done"<br />
WorkingDirectory=/home/rtorrent/<br />
Restart=on-failure<br />
<br />
[Install]<br />
WantedBy=multi-user.target<br />
</nowiki>}}<br />
<br />
*With screen<br />
<br />
{{hc|/etc/systemd/user/rt.service|<nowiki><br />
[Unit]<br />
Description=rTorrent<br />
After=network.target<br />
<br />
[Service]<br />
Type=forking<br />
KillMode=none<br />
ExecStart=/usr/bin/screen -d -m -fa -S rtorrent /usr/bin/rtorrent<br />
ExecStop=/usr/bin/killall -w -s 2 /usr/bin/rtorrent<br />
WorkingDirectory=%h<br />
<br />
[Install]<br />
WantedBy=default.target<br />
</nowiki>}}<br />
<br />
Start at boot time:<br />
$ systemctl --user enable rt<br />
Start manually:<br />
$ systemctl --user start rt<br />
Stop:<br />
$ systemctl --user stop rt<br />
Attach to rtorrent's session:<br />
tmux attach -t rt<br />
Detach:<br />
Ctrl-b d<br />
<br />
=== systemd service file with dtach ===<br />
<br />
{{Style|Creating multiple rtorrent sessions this way is far from perfect, why don't we just assume for simplicity that there is only one session? This is assumed in [[#systemd service file with tmux or screen]] anyway.}}<br />
<br />
When running dtach from systemd unit, the {{ic|TERM}} environment variable [[systemd/User#Environment_variables|has to be set explicitly]] for rtorrent to work.<br />
<br />
This service file has no restart because the author occasionally takes the drive in question offline, and rtorrent fails, shall we say, "suboptimally" when started in this scenario and loses many torrent specific settings such as the specific directories each torrent is stored in. In fact the symlinks that kick off rtorrent live on the relevant drive; if it is unmounted rtorrent cannot start. This use case of blocking rtorrent from starting is relevant to users who put the downloaded files on removable media such as NAS, USB or eSATA drives.<br />
<br />
{{hc|~/.config/systemd/user/rtorrent.service|<nowiki><br />
[Unit]<br />
Description=rTorrent<br />
#After=network.target<br />
<br />
[Service]<br />
# set TERM according to your terminal<br />
Environment="TERM=xterm"<br />
#Environment="TERM=linux" <br />
Type=forking<br />
KillMode=none<br />
ExecStart=-/usr/bin/dtach -n /home/sam/run/dtach_fifos/fifo -e "^T" /home/sam/bin/rtr_new -n -o import=/home/sam/.config/rtorrent/new_.rc <br />
# dtach -n <separate filename for each instance><br />
# <br />
# rtr_new -n to ignore the default .rtorrent.rc<br />
# rtr_new -o import to load the instance-specific rc<br />
ExecStop=-/usr/bin/killall -u sam -e -w -s INT /home/sam/bin/rtr_new<br />
<br />
[Install]<br />
WantedBy=multi-user.target<br />
</nowiki>}}<br />
<br />
Note some other issues exposed in this service file other than just dtach:<br />
<br />
{{ic|/home/sam/bin/rtr_new}} is a symlink to {{ic|/usr/bin/rtorrent}}<br />
<br />
This lets us run several instances and kill each one independently with a different version of the ExecStop, to wit:<br />
<br />
{{bc|1=ExecStop=-/usr/bin/killall -u sam -e -w -s INT /home/sam/bin/rtr_new<br />
ExecStop=-/usr/bin/killall -u sam -e -w -s INT /home/sam/bin/rtr_academic<br />
ExecStop=-/usr/bin/killall -u sam -e -w -s INT /home/sam/bin/rtr_other_stuff}}<br />
<br />
These are each in a different service file, each of which controls one instance.<br />
<br />
Without this step, when running multiple instances a killall solution would kill all the running rtorrent instances. <br />
<br />
If multiple rtorrent instances are not needed and the rtorrent rc file is in the default location the above service file may be simplified. The entire file is included but only the ExecStart and <br />
ExecStop lines change. <br />
<br />
{{hc|~/.config/systemd/user/rtorrent.service|<nowiki><br />
[Unit]<br />
Description=rTorrent<br />
#After=network.target<br />
<br />
[Service]<br />
# set TERM according to your terminal<br />
Environment="TERM=xterm"<br />
#Environment="TERM=linux" <br />
Type=forking<br />
KillMode=none<br />
ExecStart=-/usr/bin/dtach -n /home/sam/run/dtach_fifos/fifo -e "^T" /usr/bin/rtorrent <br />
# dtach -n <user specified FIFO name> -e <user specified character> /usr/bin/rtorrent <br />
ExecStop=/usr/bin/killall -w -s INT /usr/bin/rtorrent<br />
# -e (exact match) and -u (user name) were added above to stop specific processes<br />
# and may be omitted here because only one rtorrent will be running<br />
<br />
[Install]<br />
WantedBy=multi-user.target<br />
</nowiki>}}<br />
<br />
The service can be controlled with [[systemctl --user]]. When it is started, you can attach to the session:<br />
<br />
$ dtach -a /home/sam/run/dtach_fifos/fifo -e "^T"<br />
<br />
=== Pre-allocation ===<br />
<br />
The rTorrent package in the community repository lacks pre-allocation. Compiling rTorrent with pre-allocation allows files to be allocated before downloading the torrent. The major benefit is that it limits and avoids fragmentation of the filesystem. However, this introduces a delay during the pre-allocation if the filesystem does not support the fallocate syscall natively.<br />
<br />
Therefore this switch is recommended for xfs, ext4 and btrfs filesystems, which have native fallocate syscall support. They will see no delay during preallocation and no fragmented filesystem. Pre-allocation on others filesystems will cause a delay but will not fragment the files.<br />
<br />
To make pre-allocation available, recompile libTorrent from the [[ABS]] tree with the following new switch:<br />
$ ./configure --prefix=/usr --disable-debug --with-posix-fallocate<br />
<br />
To enable it, add the following to your {{ic|~/rtorrent.rc}}:<br />
{{hc|~/rtorrent.rc|<nowiki><br />
# Preallocate files; reduces defragmentation on filesystems.<br />
system.file_allocate.set = yes<br />
</nowiki>}}<br />
<br />
=== Manage completed files ===<br />
<br />
{{Note|<br />
*Currently, this part requires either the git version of rtorrent/libtorrent or having applied the patch to 0.8.6 that adds 'equal'.<br />
* If you are having trouble with this tip, it is probably easier to follow [http://web.archive.org/web/20140213003955/http://libtorrent.rakshasa.no/wiki/RTorrentCommonTasks#Movecompletedtorrentstodifferentdirectorydependingonwatchdirectory this].<br />
}}<br />
<br />
It is possible to have rtorrent sort completed torrent data to specific folders based on which 'watch' folder you drop the *.torrent into while continuing to seed. Many examples show how to do this with torrents downloaded by rtorrent. The problem is when you try to drop in 100% done torrent data and then have rtorrent check the data and resume, it will not be sorted.<br />
<br />
As a solution, use the following example in your {{ic|~/.rtorrent.rc}}.<br />
Make sure to change the paths.<br />
<br />
{{bc|1=<br />
# location where new torrent data is placed, and where you should place your<br />
# 'complete' data before you place your *.torrent file into the watch folder<br />
directory = /home/user/torrents/incomplete<br />
<br />
# schedule a timer event named 'watch_directory_1':<br />
# 1) triggers 10 seconds after rtorrent starts<br />
# 2) triggers at 10 second intervals thereafter<br />
# 3) Upon trigger, attempt to load (and start) new *.torrent files found in /home/user/torrents/watch/<br />
# 4) set a variable named 'custom1' with the value "/home/user/torrents/complete"<br />
# NOTE: if you do not want it to automatically start the torrent, change 'load_start' to 'load'<br />
schedule = watch_directory_1,10,10,"load_start=/home/user/torrents/watch/*.torrent,d.set_custom1=/home/user/torrents/complete"<br />
<br />
# insert a method with the alias 'checkdirs1'<br />
# 1) returns true if the current path of the torrent data is not equal to the value of custom1<br />
# 2) otherwise, returns false<br />
system.method.insert=checkdirs1,simple,"not=\"$equal={d.get_custom1=,d.get_base_path=}\""<br />
<br />
# insert a method with the alias 'movecheck1'<br />
# 1) returns true if all 3 commands return true ('result of checkdirs1' && 'torrent is 100% done', 'custom1 variable is set')<br />
# 2) otherwise, returns false<br />
system.method.insert=movecheck1,simple,"and={checkdirs1=,d.get_complete=,d.get_custom1=}"<br />
<br />
# insert a method with the alias 'movedir1'<br />
# (a series of commands, separated by ';') <br />
# 1) "set path of torrent to equal the value of custom1";<br />
# 2) "mv -u <current data path> <custom1 path>";<br />
# 3) "clear custom1", "stop the torrent","resume the torrent"<br />
# 4) stop the torrent<br />
# 5) start the torrent (to get the torrent to update the 'base path')<br />
system.method.insert=movedir1,simple,"d.set_directory=$d.get_custom1=;execute=mv,-u,$d.get_base_path=,$d.get_custom1=;d.set_custom1=;d.stop=;d.start="<br />
<br />
# set a key with the name 'move_hashed1' that is triggered by the hash_done event.<br />
# 1) When hashing of a torrent completes, this custom key will be triggered.<br />
# 2) when triggered, execute the 'movecheck1' method and check the return value.<br />
# 3) if the 'movecheck' method returns 'true', execute the 'movedir1' method we inserted above.<br />
# NOTE-0: *Only* data that has had their hash checked manually with ^R [^R = Control r].<br />
# Or on a rtorrent restart[which initiates a hash check]. Will the data move; ~/torrents/incomplete => ~/torrents/complete for example.<br />
# NOTE-1: 'branch' is an 'if' conditional statement: if(movecheck1){movedir1}<br />
system.method.set_key=event.download.hash_done,move_hashed1,"branch={$movecheck1=,movedir1=}"<br />
}}<br />
<br />
You can add additional watch folders and rules should you like to sort your torrents into special folders.<br />
<br />
For example, if you would like the torrents to download in:<br />
/home/user/torrents/incomplete<br />
and then sort the torrent data based on which folder you dropped the *.torrent into:<br />
/home/user/torrents/watch => /home/user/torrents/complete<br />
/home/user/torrents/watch/iso => /home/user/torrents/complete/iso<br />
/home/user/torrents/watch/music => /home/user/torrents/complete/music<br />
<br />
You can have the following in your .rtorrent.rc:<br />
{{bc|1=<br />
directory = /home/user/torrents/incomplete<br />
schedule = watch_directory_1,10,10,"load_start=/home/user/torrents/watch/*.torrent,d.set_custom1=/home/user/torrents/complete"<br />
<br />
schedule = watch_directory_2,10,10,"load_start=/home/user/torrents/watch/iso/*.torrent,d.set_custom1=/home/user/torrents/complete/iso"<br />
<br />
schedule = watch_directory_3,10,10,"load_start=/home/user/torrents/watch/music/*.torrent,d.set_custom1=/home/user/torrents/complete/music"<br />
<br />
system.method.insert=checkdirs1,simple,"not=\"$equal={d.get_custom1=,d.get_base_path=}\""<br />
system.method.insert=movecheck1,simple,"and={checkdirs1=,d.get_complete=,d.get_custom1=}"<br />
system.method.insert=movedir1,simple,"d.set_directory=$d.get_custom1=;execute=mv,-u,$d.get_base_path=,$d.get_custom1=;d.set_custom1=;d.stop=;d.start="<br />
system.method.set_key=event.download.hash_done,move_hashed1,"branch={$movecheck1=,movedir1=}"<br />
}}<br />
<br />
Also see [http://code.google.com/p/pyroscope/ pyroscope] especially the rtcontrol examples. There is an AUR package.<br />
<br />
==== Notification with Google Mail ====<br />
<br />
Cell phone providers allow you to "email" your phone:<br />
{{bc|<nowiki><br />
Verizon: 10digitphonenumber@vtext.com<br />
AT&T: 10digitphonenumber@txt.att.net<br />
Former AT&T customers: 10digitphonenumber@mmode.com<br />
Sprint: 10digitphonenumber@messaging.sprintpcs.com<br />
T-Mobile: 10digitphonenumber@tmomail.net<br />
Nextel: 10digitphonenumber@messaging.nextel.com<br />
Cingular: 10digitphonenumber@cingularme.com<br />
Virgin Mobile: 10digitphonenumber@vmobl.com<br />
Alltel: 10digitphonenumber@alltelmessage.com OR<br />
10digitphonenumber@message.alltel.com<br />
CellularOne: 10digitphonenumber@mobile.celloneusa.com<br />
Omnipoint: 10digitphonenumber@omnipointpcs.com<br />
Qwest: 10digitphonenumber@qwestmp.com<br />
Telus: 10digitphonenumber@msg.telus.com<br />
Rogers Wireless: 10digitphonenumber@pcs.rogers.com<br />
Fido: 10digitphonenumber@fido.ca<br />
Bell Mobility: 10digitphonenumber@txt.bell.ca<br />
Koodo Mobile: 10digitphonenumber@msg.koodomobile.com<br />
MTS: 10digitphonenumber@text.mtsmobility.com<br />
President's Choice: 10digitphonenumber@txt.bell.ca<br />
Sasktel: 10digitphonenumber@sms.sasktel.com<br />
Solo: 10digitphonenumber@txt.bell.ca<br />
</nowiki>}}<br />
<br />
*Install mailx which is provided by the {{Pkg|s-nail}} package that is found in the [[official repositories]].<br />
<br />
*Clear the {{ic|/etc/mail.rc}} file and enter:<br />
<br />
{{bc|<nowiki><br />
set sendmail="/usr/bin/mailx"<br />
set smtp=smtp.gmail.com:587<br />
set smtp-use-starttls<br />
set ssl-verify=ignore<br />
set ssl-auth=login<br />
set smtp-auth-user=USERNAME@gmail.com<br />
set smtp-auth-password=PASSWORD<br />
</nowiki>}}<br />
<br />
Now to send the text, we must pipe a message to the mailx program.<br />
*Make a Bash script:<br />
{{hc|/path/to/mail.sh|<nowiki><br />
echo "$@: Done" | mailx 5551234567@vtext.com<br />
</nowiki>}}<br />
Where the $@ is a variable holding all the arguments passed to our script.<br />
<br />
*And finally, add the important {{ic|~/.rtorrent.rc}} line:<br />
system.method.set_key = event.download.finished,notify_me,"execute=/path/to/mail.sh,$d.get_name="<br />
<br />
Breaking it down:<br />
<br />
{{ic|notify_me}} is the command id, which may be used by other commands, it can be just about anything you like, so long as it is unique.<br />
<br />
{{ic|1=execute=}} is the rtorrent command, in this case to execute a shell command.<br />
<br />
{{ic|/path/to/mail.sh}} is the name of our script (or whatever command you want to execute) followed by a comma separated list of all the switches/arguments to be passed.<br />
<br />
{{ic|1=$d.get_name=}} 'd' is an alias to whatever download triggered the command, get_name is a function which returns the name of our download, and the '$' tells rTorrent to replace the command with its output before it calls execute.<br />
<br />
The end result? When that torrent, 'All Live Nudibranches', that we started before leaving for work finishes, we will be texted:<br />
All Live Nudibranches: Done<br />
<br />
=== UI Tricks ===<br />
<br />
rTorrent does not list the active tab properly by default, add this line to your {{ic|.rtorrent.rc}} to show only active torrents<br />
schedule = filter_active,30,30,"view_filter = active,\"or={d.get_up_rate=,d.get_down_rate=}\""<br />
<br />
Then press {{ic|9}} in your rTorrent client to see the changes in action.<br />
<br />
To sort the seeding view by the upload rate and only show torrents with peers:<br />
<br />
# Sort the seeding view by the upload rate and only show torrents with peers<br />
view.sort_current = seeding,greater=d.get_up_rate=<br />
view.filter = seeding,"and=d.get_complete=,d.get_peers_connected="<br />
view.sort_new = seeding,less=d.get_up_rate=<br />
view.sort = seeding<br />
<br />
To sort the complete view by the upload rate:<br />
<br />
# Sort the complete view by the upload rate<br />
view.sort_current = complete,greater=d.get_up_rate=<br />
view.filter = seeding,"and=d.get_complete="<br />
view.sort_new = seeding,less=d.get_up_rate=<br />
view.sort = seeding<br />
<br />
=== Manually adding trackers to torrents ===<br />
<br />
# Select torrent to edit from rTorrent console view.<br />
# Hit {{ic|Ctrl+x}}.<br />
# If you had four trackers type following lines one at a time (always press {{ic|Ctrl+x}} first) to add four more for example:<br />
<br />
d.tracker.insert="5","udp://tracker.publicbt.com:80"<br />
d.tracker.insert="6","udp://tracker.openbittorrent.com:80"<br />
d.tracker.insert="7","udp://tracker.istole.it:80"<br />
d.tracker.insert="8","udp://tracker.ccc.de:80"<br />
<br />
== Troubleshooting ==<br />
<br />
=== CA certificates ===<br />
<br />
To use rTorrent with a tracker that uses HTTPS, do the following as root:<br />
<br />
{{bc|<br />
# cd /etc/ssl/certs<br />
<nowiki># wget --no-check-certificate https://www.geotrust.com/resources/root_certificates/certificates/Equifax_Secure_Global_eBusiness_CA-1.cer</nowiki><br />
# mv Equifax_Secure_Global_eBusiness_CA-1.cer Equifax_Secure_Global_eBusiness_CA-1.pem<br />
# c_rehash<br />
}}<br />
<br />
And from now on run rTorrent with:<br />
$ rtorrent -o http_capath=/etc/ssl/certs<br />
<br />
If you use GNU Screen, update the {{ic|.screenrc}} configuration file to reflect this change:<br />
$ screen -t rtorrent rtorrent -o http_capath=/etc/ssl/certs<br />
<br />
In rTorrent 0.8.9, set {{ic|<nowiki>network.http.ssl_verify_peer.set=0</nowiki>}} to [https://bbs.archlinux.org/viewtopic.php?pid=981832#p981832 fix the problem].<br />
<br />
For more information see: [https://bbs.archlinux.org/viewtopic.php?pid=331850 rTorrent Error & CA Certificate] and [https://bbs.archlinux.org/viewtopic.php?id=45800 rTorrent Certificates Problem]<br />
<br />
=== Locked directories ===<br />
<br />
rTorrent can sometimes lock up after a crash or incorrect shutdown, and will complain about a lock file.<br />
<br />
Per the error message, the file called "'''rtorrent.lock'''" can be found within the hidden folder {{ic|.rtorrentsession}} for your download directory and manually removed.<br />
<br />
=== Event failed: bad return code ===<br />
<br />
This is caused by there being spaces in your system.method.* lines. Remove the spaces and it will work.<br />
<br />
== Web interface ==<br />
<br />
There are numerous web interfaces and front ends for rTorrent including:<br />
* [[WTorrent]] is a web interface to rtorrent programmed in php using Smarty templates and XMLRPC for PHP library.<br />
* [http://code.google.com/p/ntorrent/ nTorrent] is a graphical user interface client to rtorrent (a cli torrent client) written in Java.<br />
* [https://rtwi.jmk.hu/ rTWi] is a simple rTorrent web interface written in PHP.<br />
* [[Rtgui]] is a web based front end for rTorrent written in PHP and uses XML-RPC to communicate with the rTorrent client.<br />
* [https://github.com/Novik/ruTorrent rutorrent] and [http://forums.rutorrent.org/ Forum] - A web-based front-end with an interface very similar to uTorrent which supports many plugins and advanced features (see also: [[ruTorrent]] and [https://bbs.archlinux.org/viewtopic.php?pid=897577#p897577 Guide on forum]).<br />
<br />
{{Note|rTorrent is currently built using [http://xmlrpc-c.sourceforge.net/ XML-RPC for C/C++], which is required for some web interfaces (e.g. ruTorrent).}}<br />
<br />
=== XMLRPC interface ===<br />
<br />
If you want to use rtorrent with some web interfaces (e.g. rutorrent) you need to add the following line to the configuration file:<br />
scgi_port = localhost:5000<br />
<br />
For more information see: [https://github.com/rakshasa/rtorrent/wiki/RPC-Setup-XMLRPC Using XMLRPC with rtorrent]<br />
<br />
=== Saving magnet links as torrent files in watch folder ===<br />
<br />
{{Note| Rtorrent natively supports downloading torrents through magnet links. At the main view (reached by starting Rtorrent and pressing 1), press enter. At "load.normal>" paste the magnet link and press enter again. This will start the download.}}<br />
<br />
If you wish to have magnet links automatically added to your watch folder, here is a script that will do the trick:<br />
<br />
<nowiki><br />
#!/bin/bash<br />
watch_folder=~/.rtorrent/watch<br />
cd $watch_folder<br />
[[ "$1" =~ xt=urn:btih:([^&/]+) ]] || exit;<br />
echo "d10:magnet-uri${#1}:${1}e" > "meta-${BASH_REMATCH[1]}.torrent"</nowiki><br />
<br />
(adapted from http://blog.gonzih.org/blog/2012/02/17/how-to-use-magnet-links-with-rtorrent/).<br />
<br />
Save it, for instance as rtorrent-magnet, give it execution permission, and place it somewhere under your $PATH. Then in Firefox:<br />
# Type {{ic|about:config}} into the Location Bar (address bar) and press {{ic|Enter}}.<br />
# Right-click: ''New > Boolean > Name: '''network.protocol-handler.expose.magnet''' > Value > false''.<br />
# Next time you click a magnet link you will be asked which application to open it with. Select the script we just created and you will be done.<br />
<br />
If you want xdg-open to handle this, which you need if you are using chrome instead of firefox, (though gnome and other DE might have their own programs overriding xdg-open) you need to create the desktop entry for the rtorrent-magnet script in {{ic|~/.local/share/applications/rtorrent-magnet.desktop}} with the following content:<br />
<br />
<nowiki><br />
[Desktop Entry]<br />
Type=Application<br />
Name=rtorrent-magnet<br />
Exec=rtorrent-magnet %U<br />
MimeType=x-scheme-handler/magnet;<br />
NoDisplay=true</nowiki><br />
<br />
Then all you need to do is to register the mimetype using<br />
$ xdg-mime default rtorrent-magnet.desktop x-scheme-handler/magnet<br />
<br />
== Magnet to Torrent ==<br />
You could also use the {{AUR|magnet2torrent-git}} package which downloads the metadata and creates a torrent file.<br />
<br />
How to use:<br />
$ magnet2torrent <magnet link> [torrent file]<br />
<br />
== rtorrent-pyro ==<br />
<br />
{{AUR|rtorrent-pyro-git}} from the [[AUR]] comes with an extended rtorrent console interface. It does not contain the pyroscope tools yet though. If you also need the pyroscope tools see [[#PyroScope]] .<br />
<br />
Make sure you add following command to ~/.rtorrent.rc, which makes the asterisk key * to a shortcut for toggling between extended and collapsed view within rtorrent's interface:<br />
{{bc|<nowiki>schedule = bind_collapse,0,0,"ui.bind_key=download_list,*,view.collapsed.toggle="</nowiki>}}<br />
<br />
Also set "pyro.extended" to 1 to activate rTorrent-PS features.<br />
{{bc|<nowiki>system.method.insert = pyro.extended, value|const, 1</nowiki>}}<br />
<br />
=== PyroScope ===<br />
<br />
We create a directory for the installation of pyroscope, then download and update the source code from subversion:<br />
{{bc|<nowiki>mkdir -p ~/.lib<br />
svn checkout http://pyroscope.googlecode.com/svn/trunk/ ~/.lib/pyroscope<br />
~/.lib/pyroscope/update-to-head.sh</nowiki>}}<br />
Adding pyroscope bin's PATH to .bashrc:<br />
{{bc|<nowiki>export PATH=$PATH:path_to_the_bin # Example path for pyroscope bin's: /home/user/.lib/pyroscope/bin/</nowiki>}}<br />
Creating the ~/.pyroscope/config.ini:<br />
{{bc|<nowiki>pyroadmin --create-config</nowiki>}}<br />
<br />
Add this to your ~/.rtorrent.rc. Do not forget to add the path of your pyroscope bin's dir (see below).<br />
{{bc|<nowiki>system.method.insert = pyro.bin_dir, string|const, write_here_path_to_your_pyroscope_bin_dir # Example path: /home/user/.lib/pyroscope/bin/<br />
system.method.insert = pyro.rc_dialect, string|const|simple, "execute_capture=bash,-c,\"test $1 = 0.8.6 && echo -n 0.8.6 || echo -n 0.8.9\",dialect,$system.client_version="<br />
system.method.insert = pyro.rtorrent_rc, string|const|private, "$cat=~/.pyroscope/rtorrent-,\"$pyro.rc_dialect=\",.rc.default"<br />
import = $pyro.rtorrent_rc=</nowiki>}}<br />
<br />
Optionally: TORQUE: Daemon watchdog schedule. Must be activated by touching the "~/.pyroscope/run/pyrotorque" file!<br />
You can also just use rtorrent watch dir or give pyro_watchdog a try, which comes with 'treewatch' ability, meaning it also watches for torrents recursively within the given watch path. Further documentation for pyro_watchdog is here: <br />
[http://code.google.com/p/pyroscope/wiki/QueueManager] <br />
To enable pyro_watchdog, add this in ~/.rtorrent.rc and further configurations are in ~/.pyroscope/torque.ini. <br />
{{bc|<nowiki>schedule = pyro_watchdog,30,300,"pyro.watchdog=~/.pyroscope,-v"</nowiki>}}<br />
<br />
Following steps are important. Before using pyroscope tools you have to set the missing "loaded" times to that of the .torrent file. Run this in your terminal:<br />
{{bc|<nowiki>rtcontrol '!*"*' loaded=0 -q -sname -o 'echo "$(name)s"\ntest -f "$(metafile)s" && rtxmlrpc -q d.set_custom $(hash)s tm_loaded \$(\<br />
ls -l --time-style "+%%s" "$(metafile)s" \<br />
| cut -f6 -d" ")\nrtxmlrpc -q d.save_session $(hash)s' | bash</nowiki>}}<br />
<br />
And now set the missing "completed" times to that of the data file or directory:<br />
{{bc|<nowiki>rtcontrol '!*"*' completed=0 done=100 path=\! is_ghost=no -q -sname -o 'echo "$(name)s"\ntest -e "$(realpath)s" && rtxmlrpc -q d.set_custom $(hash)s tm_completed \$(\<br />
ls -ld --time-style "+%%s" "$(realpath)s" \<br />
| cut -f6 -d" ")\nrtxmlrpc -q d.save_session $(hash)s' | bash</nowiki>}}<br />
<br />
Example usage:<br />
Will print out all torrents older than 2 hours:<br />
{{bc|<nowiki>rtcontrol -V completed=+2h -scompleted -ocompleted</nowiki>}}<br />
Deletes all torrents older than 48 hours:<br />
{{bc|<nowiki>rtcontrol -V completed=+48h -scompleted -ocompleted --cull --yes</nowiki>}}<br />
<br />
== See also ==<br />
<br />
* [http://linux.die.net/man/1/rtorrent Manpage for rtorrent]<br />
* [[Screen Tips]]<br />
* [[Wikipedia:Comparison of BitTorrent clients|Comparison of BitTorrent clients]] on Wikipedia<br />
* [http://community.rutorrent.org/ rTorrent Community Wiki] - Public place for information on rTorrent and any project related to rTorrent, regarding setup, configuration, operations, and development.<br />
* [http://code.google.com/p/pyroscope/ PyroScope] - Collection of command line tools for rTorrent. It provides commands for creating and modifying torrent files, moving data on completion without having multiple watch folders, and mass-controlling download items via rTorrent's XML-RPC interface: searching, start/stop, deleting items with or without their data, etc. It also offers a documented [[Python]] API.<br />
* [[Rutorrent with lighttpd|ruTorrent with Lighttpd]]<br />
* [http://wiki.theaveragegeek.com/howto/installing_rtorrent_and_hellanzb_on_centos5_64-bit_vps How-to install rTorrent and Hellanzb on CentOS 5 64-bit VPS]<br />
* [http://code.google.com/p/pyroscope/wiki/DebianInstallFromSource Installation guide for rTorrent and Pyroscope on Debian] - Collection of tools for the BitTorrent protocol and especially the rTorrent client<br />
* [http://mktorrent.sourceforge.net/ mktorrent] - Command line application used to generate torrent files, which is available as {{Pkg|mktorrent}} in the [[official repositories]].<br />
* [https://github.com/kfei/docktorrent docktorrent] - Using Docker, rTorrent and ruTorrent to run a full-featured BitTorrent box.<br />
* [https://github.com/nelhage/reptyr reptyr] - another tool to take over a program's TTY (it is in the standard repos). The process may have started being attached to a terminal or to a socket in tmux, screen or dtach.<br />
* [http://caca.zoy.org/wiki/neercs neercs] - a more screen/tmux like tool than reptyr, but, like reptyr, neercs can also "steal" a process that may have started slaved to a terminal or to a socket in tmux, screen or dtach. {{AUR|neercs-git}}{{Broken package link|{{aur-mirror|neercs-git}}}}<br />
<br />
'''Forum threads'''<br />
* 2009-03-11 - Arch Linux - [https://bbs.archlinux.org/viewtopic.php?id=67304 HOWTO: rTorrent stats in Conky]</div>Ygyfygyhttps://wiki.archlinux.org/index.php?title=RTorrent&diff=428491RTorrent2016-03-29T10:24:33Z<p>Ygyfygy: /* UI Tricks */ Engrish</p>
<hr />
<div>{{DISPLAYTITLE:rTorrent}}<br />
[[Category:Internet applications]]<br />
[[es:RTorrent]]<br />
[[ja:RTorrent]]<br />
[[ru:RTorrent]]<br />
[[zh-CN:RTorrent]]<br />
[https://rakshasa.github.io/rtorrent/ rTorrent] is a quick and efficient BitTorrent client that uses, and is in development alongside, the libTorrent (not to be confused with {{Pkg|libtorrent-rasterbar}}) library. It is written in C++ and uses the [[Wikipedia:ncurses|ncurses]] programming library, which means it uses a text user interface. When combined with a terminal multiplexer (e.g. [[GNU Screen]] or [[Tmux]]) and [[Secure Shell]], it becomes a convenient remote [[Wikipedia:BitTorrent (protocol)#Operation|BitTorrent client]].<br />
<br />
== Installation ==<br />
<br />
[[Install]] the {{Pkg|rtorrent}} package that is available in the [[official repositories]].<br />
<br />
Alternatively, install {{AUR|rtorrent-git}} or {{AUR|rtorrent-vi-color}} or {{AUR|rtorrent-extended}}{{Broken package link|{{aur-mirror|rtorrent-extended}}}} from the [[AUR]].<br />
<br />
== Configuration ==<br />
<br />
{{Note|See the rTorrent wiki article on this subject for more information: [http://web.archive.org/web/20140213003955/http://libtorrent.rakshasa.no/wiki/RTorrentCommonTasks Common Tasks in rTorrent for Dummies].}}<br />
<br />
Before running rTorrent, find the example configuration file {{ic|/usr/share/doc/rtorrent/rtorrent.rc}} and copy it to {{ic|~/.rtorrent.rc}}:<br />
<br />
$ cp /usr/share/doc/rtorrent/rtorrent.rc ~/.rtorrent.rc<br />
<br />
=== Performance ===<br />
<br />
{{Note|See the rTorrent wiki article on this subject for more information: [http://web.archive.org/web/20140213011439/http://libtorrent.rakshasa.no/wiki/RTorrentPerformanceTuning Performance Tuning]}}<br />
<br />
The values for the following options are dependent on the system's hardware and Internet connection speed. To find the optimal values read: [http://torrentfreak.com/optimize-your-BitTorrent-download-speed Optimize Your BitTorrent Download Speed]<br />
{{bc|<nowiki><br />
min_peers = 40<br />
max_peers = 52<br />
<br />
min_peers_seed = 10<br />
max_peers_seed = 52<br />
<br />
max_uploads = 8<br />
<br />
download_rate = 200<br />
upload_rate = 28<br />
</nowiki>}}<br />
<br />
The {{ic|check_hash}} option executes a hash check when a torrent download is complete or rTorrent is started. When starting, it checks for errors in your completed files. <br />
check_hash = yes<br />
<br />
=== Create and manage files ===<br />
<br />
The {{ic|directory}} option will determine where your torrent data will be saved (could be a relative path):<br />
directory = ~/downloaded<br />
<br />
The {{ic|session}} option allows rTorrent to save the progess of your torrents. It is recommended to create a directory in home directory (e.g. {{ic|mkdir ~/.rtorrent.session}}).<br />
session = ~/.rtorrent.session<br />
<br />
The {{ic|schedule}} option has rTorrent watch a particular directory for new torrent files. Saving a torrent file to this directory will automatically start the download. Remember to create the directory that will be watched (e.g. {{ic|mkdir ~/watch}}). Also, be careful when using this option as rTorrent will move the torrent file to your session folder and rename it to its hash value.<br />
schedule = watch_directory,5,5,load_start=/home/''user''/watch/*.torrent<br />
schedule = untied_directory,5,5,stop_untied=<br />
schedule = tied_directory,5,5,start_tied=<br />
<br />
The following {{ic|schedule}} option is intended to stop rTorrent from downloading data when disk space is low.<br />
schedule = low_diskspace,5,60,close_low_diskspace=100M<br />
<br />
=== Port configuration ===<br />
<br />
The {{ic|port_range}} option sets which port(s) to use for listening. It is recommended to use a port that is higher than 49152 (see: [[Wikipedia:List of TCP and UDP port numbers|List of port numbers]]). Although, rTorrent allows a range of ports, a single port is recommended.<br />
port_range = 49164-49164<br />
<br />
Additionally, make sure port forwarding is enabled for the proper port(s) (see: [http://portforward.com/english/routers/port_forwarding/routerindex.htm Port Forward guides]).<br />
<br />
=== Additional settings ===<br />
<br />
The {{ic|encryption}} option enables or disables encryption. It is very important to enable this option, not only for yourself, but also for your peers in the torrent swarm. Some users need to obscure their bandwidth usage from their ISP. And it does not hurt to enable it even if you do not need the added security.<br />
encryption = allow_incoming,try_outgoing,enable_retry<br />
It is also possible to force all connections to use encryption. However, be aware that this stricter rule will reduce your client's availability:<br />
encryption = require,require_RC4,allow_incoming,try_outgoing<br />
<br />
See also [[Wikipedia:BitTorrent Protocol Encryption]].<br />
<br />
This final {{ic|dht}} option enables [[Wikipedia:Distributed hash table|DHT]] support. DHT is common among public trackers and will allow the client to acquire more peers.<br />
{{bc|<nowiki><br />
dht = auto<br />
dht_port = 6881<br />
peer_exchange = yes<br />
</nowiki>}}<br />
<br />
== Key bindings ==<br />
<br />
rTorrent relies exclusively on keyboard shortcuts for user input. A quick reference is available in the table below. A complete guide is available on the rTorrent wiki (see: [https://github.com/rakshasa/rtorrent/wiki/User-Guide rTorrent User Guide]).<br />
<br />
{{Note|Striking {{ic|Ctrl-q}} twice in quick succession will make rTorrent shutdown without waiting to send a stop announce to the connected trackers.}}<br />
<br />
{| class="wikitable"<br />
|-<br />
!width="75" |Cmd<br />
!Action<br />
|-<br />
|Ctrl-q<br />
|Quit application<br />
|-<br />
|Ctrl-s<br />
|Start download. Runs hash first unless already done.<br />
|-<br />
|Ctrl-d<br />
|Stop an active download or remove a stopped download<br />
|-<br />
|Ctrl-k<br />
|Stop and close the files of an active download.<br />
|-<br />
|Ctrl-r<br />
|Initiate hash check of torrent. Starts downloading if file is not available.<br />
|-<br />
|Ctrl-o<br />
|Specify the download directory for a added, but not started torrent.<br />
|-<br />
|Left<br />
|Returns to the previous screen<br />
|-<br />
|Right<br />
|Goes to the next screen<br />
|-<br />
|Backspace<br />
|Adds and starts the specified *.torrent<br />
|-<br />
|Return<br />
|Adds and doesn't start the specified *.torrent<br />
|-<br />
|<nowiki>a|s|d</nowiki><br />
|<nowiki>Increase global upload throttle about 1|5|50 KB/s</nowiki><br />
|-<br />
|<nowiki>A|S|D</nowiki><br />
|<nowiki>Increase global download throttle about 1|5|50 KB/s</nowiki><br />
|-<br />
|<nowiki>z|x|c</nowiki><br />
|<nowiki>Decrease global upload throttle about 1|5|50 KB/s</nowiki><br />
|-<br />
|<nowiki>Z|X|C</nowiki><br />
|<nowiki>Decrease global download throttle about 1|5|50 KB/s</nowiki><br />
|}<br />
<br />
=== Redundant mapping ===<br />
<br />
{{ic|Ctrl-s}} is often used for terminal control to stop screen output while {{ic|Ctrl-q}} is used to start it. These mappings may interfere with rTorrent. Check to see if these terminal options are bound to a mapping:<br />
{{hc|$ stty -a|<nowiki>...<br />
swtch = <undef>; start = ^Q; stop = ^S; susp = ^Z; rprnt = ^R; werase = ^W; lnext = ^V;<br />
...<br />
</nowiki>}}<br />
<br />
To remove the mappings, change the terminal characteristics to undefine the aforementioned special characters (i.e. {{ic|stop}} and {{ic|start}}):<br />
# stty stop undef<br />
# stty start undef<br />
<br />
To remove these mappings automatically at startup you may add the two preceding commands to your {{ic|~/.bashrc}} file.<br />
<br />
== Additional tips ==<br />
<br />
=== systemd service file with tmux or screen ===<br />
<br />
*With tmux (Restart rtorrent if crashed)<br />
{{hc|/etc/systemd/user/rt.service|<nowiki><br />
[Unit]<br />
Description=rTorrent<br />
After=network.target<br />
<br />
[Service]<br />
Type=forking<br />
KillMode=none<br />
ExecStart=/usr/bin/tmux new-session -s rt -n rtorrent -d rtorrent<br />
ExecStop=/usr/bin/bash -c "/usr/bin/tmux send-keys -t rt:rtorrent.0 C-q && while pidof rtorrent > /dev/null; do sleep 0.5; echo rtorrent still running...; done"<br />
WorkingDirectory=%h<br />
Restart=on-failure<br />
<br />
[Install]<br />
WantedBy=default.target<br />
</nowiki>}}<br />
<br />
*With tmux running as user rtorrent (Restart rtorrent if crashed)<br />
{{hc|/etc/systemd/system/rtorrent.service|<nowiki><br />
[Unit]<br />
Description=rTorrent Daemon<br />
After=network.target<br />
<br />
[Service]<br />
Type=forking<br />
KillMode=none<br />
User=rtorrent<br />
ExecStart=/usr/bin/tmux new-session -c /mnt/storage/rtorrent -s rtorrent -n rtorrent -d rtorrent<br />
ExecStop=/usr/bin/bash -c "/usr/bin/tmux send-keys -t rtorrent C-q && while pidof rtorrent > /dev/null; do sleep 0.5; done"<br />
WorkingDirectory=/home/rtorrent/<br />
Restart=on-failure<br />
<br />
[Install]<br />
WantedBy=multi-user.target<br />
</nowiki>}}<br />
<br />
*With screen<br />
<br />
{{hc|/etc/systemd/user/rt.service|<nowiki><br />
[Unit]<br />
Description=rTorrent<br />
After=network.target<br />
<br />
[Service]<br />
Type=forking<br />
KillMode=none<br />
ExecStart=/usr/bin/screen -d -m -fa -S rtorrent /usr/bin/rtorrent<br />
ExecStop=/usr/bin/killall -w -s 2 /usr/bin/rtorrent<br />
WorkingDirectory=%h<br />
<br />
[Install]<br />
WantedBy=default.target<br />
</nowiki>}}<br />
<br />
Start at boot time:<br />
$ systemctl --user enable rt<br />
Start manually:<br />
$ systemctl --user start rt<br />
Stop:<br />
$ systemctl --user stop rt<br />
Attach to rtorrent's session:<br />
tmux attach -t rt<br />
Detach:<br />
Ctrl-b d<br />
<br />
=== systemd service file with dtach ===<br />
<br />
{{Style|Creating multiple rtorrent sessions this way is far from perfect, why don't we just assume for simplicity that there is only one session? This is assumed in [[#systemd service file with tmux or screen]] anyway.}}<br />
<br />
When running dtach from systemd unit, the {{ic|TERM}} environment variable [[systemd/User#Environment_variables|has to be set explicitly]] for rtorrent to work.<br />
<br />
This service file has no restart because the author occasionally takes the drive in question offline, and rtorrent fails, shall we say, "suboptimally" when started in this scenario and loses many torrent specific settings such as the specific directories each torrent is stored in. In fact the symlinks that kick off rtorrent live on the relevant drive; if it is unmounted rtorrent cannot start. This use case of blocking rtorrent from starting is relevant to users who put the downloaded files on removable media such as NAS, USB or eSATA drives.<br />
<br />
{{hc|~/.config/systemd/user/rtorrent.service|<nowiki><br />
[Unit]<br />
Description=rTorrent<br />
#After=network.target<br />
<br />
[Service]<br />
# set TERM according to your terminal<br />
Environment="TERM=xterm"<br />
#Environment="TERM=linux" <br />
Type=forking<br />
KillMode=none<br />
ExecStart=-/usr/bin/dtach -n /home/sam/run/dtach_fifos/fifo -e "^T" /home/sam/bin/rtr_new -n -o import=/home/sam/.config/rtorrent/new_.rc <br />
# dtach -n <separate filename for each instance><br />
# <br />
# rtr_new -n to ignore the default .rtorrent.rc<br />
# rtr_new -o import to load the instance-specific rc<br />
ExecStop=-/usr/bin/killall -u sam -e -w -s INT /home/sam/bin/rtr_new<br />
<br />
[Install]<br />
WantedBy=multi-user.target<br />
</nowiki>}}<br />
<br />
Note some other issues exposed in this service file other than just dtach:<br />
<br />
{{ic|/home/sam/bin/rtr_new}} is a symlink to {{ic|/usr/bin/rtorrent}}<br />
<br />
This lets us run several instances and kill each one independently with a different version of the ExecStop, to wit:<br />
<br />
{{bc|1=ExecStop=-/usr/bin/killall -u sam -e -w -s INT /home/sam/bin/rtr_new<br />
ExecStop=-/usr/bin/killall -u sam -e -w -s INT /home/sam/bin/rtr_academic<br />
ExecStop=-/usr/bin/killall -u sam -e -w -s INT /home/sam/bin/rtr_other_stuff}}<br />
<br />
These are each in a different service file, each of which controls one instance.<br />
<br />
Without this step, when running multiple instances a killall solution would kill all the running rtorrent instances. <br />
<br />
If multiple rtorrent instances are not needed and the rtorrent rc file is in the default location the above service file may be simplified. The entire file is included but only the ExecStart and <br />
ExecStop lines change. <br />
<br />
{{hc|~/.config/systemd/user/rtorrent.service|<nowiki><br />
[Unit]<br />
Description=rTorrent<br />
#After=network.target<br />
<br />
[Service]<br />
# set TERM according to your terminal<br />
Environment="TERM=xterm"<br />
#Environment="TERM=linux" <br />
Type=forking<br />
KillMode=none<br />
ExecStart=-/usr/bin/dtach -n /home/sam/run/dtach_fifos/fifo -e "^T" /usr/bin/rtorrent <br />
# dtach -n <user specified FIFO name> -e <user specified character> /usr/bin/rtorrent <br />
ExecStop=/usr/bin/killall -w -s INT /usr/bin/rtorrent<br />
# -e (exact match) and -u (user name) were added above to stop specific processes<br />
# and may be omitted here because only one rtorrent will be running<br />
<br />
[Install]<br />
WantedBy=multi-user.target<br />
</nowiki>}}<br />
<br />
The service can be controlled with [[systemctl --user]]. When it is started, you can attach to the session:<br />
<br />
$ dtach -a /home/sam/run/dtach_fifos/fifo -e "^T"<br />
<br />
=== Pre-allocation ===<br />
<br />
The rTorrent package in the community repository lacks pre-allocation. Compiling rTorrent with pre-allocation allows files to be allocated before downloading the torrent. The major benefit is that it limits and avoids fragmentation of the filesystem. However, this introduces a delay during the pre-allocation if the filesystem does not support the fallocate syscall natively.<br />
<br />
Therefore this switch is recommended for xfs, ext4 and btrfs filesystems, which have native fallocate syscall support. They will see no delay during preallocation and no fragmented filesystem. Pre-allocation on others filesystems will cause a delay but will not fragment the files.<br />
<br />
To make pre-allocation available, recompile libTorrent from the [[ABS]] tree with the following new switch:<br />
$ ./configure --prefix=/usr --disable-debug --with-posix-fallocate<br />
<br />
To enable it, add the following to your {{ic|~/rtorrent.rc}}:<br />
{{hc|~/rtorrent.rc|<nowiki><br />
# Preallocate files; reduces defragmentation on filesystems.<br />
system.file_allocate.set = yes<br />
</nowiki>}}<br />
<br />
=== Manage completed files ===<br />
<br />
{{Note|<br />
*Currently, this part requires either the git version of rtorrent/libtorrent or having applied the patch to 0.8.6 that adds 'equal'.<br />
* If you are having trouble with this tip, it is probably easier to follow [http://web.archive.org/web/20140213003955/http://libtorrent.rakshasa.no/wiki/RTorrentCommonTasks#Movecompletedtorrentstodifferentdirectorydependingonwatchdirectory this].<br />
}}<br />
<br />
It is possible to have rtorrent sort completed torrent data to specific folders based on which 'watch' folder you drop the *.torrent into while continuing to seed. Many examples show how to do this with torrents downloaded by rtorrent. The problem is when you try to drop in 100% done torrent data and then have rtorrent check the data and resume, it will not be sorted.<br />
<br />
As a solution, use the following example in your {{ic|~/.rtorrent.rc}}.<br />
Make sure to change the paths.<br />
<br />
{{bc|1=<br />
# location where new torrent data is placed, and where you should place your<br />
# 'complete' data before you place your *.torrent file into the watch folder<br />
directory = /home/user/torrents/incomplete<br />
<br />
# schedule a timer event named 'watch_directory_1':<br />
# 1) triggers 10 seconds after rtorrent starts<br />
# 2) triggers at 10 second intervals thereafter<br />
# 3) Upon trigger, attempt to load (and start) new *.torrent files found in /home/user/torrents/watch/<br />
# 4) set a variable named 'custom1' with the value "/home/user/torrents/complete"<br />
# NOTE: if you do not want it to automatically start the torrent, change 'load_start' to 'load'<br />
schedule = watch_directory_1,10,10,"load_start=/home/user/torrents/watch/*.torrent,d.set_custom1=/home/user/torrents/complete"<br />
<br />
# insert a method with the alias 'checkdirs1'<br />
# 1) returns true if the current path of the torrent data is not equal to the value of custom1<br />
# 2) otherwise, returns false<br />
system.method.insert=checkdirs1,simple,"not=\"$equal={d.get_custom1=,d.get_base_path=}\""<br />
<br />
# insert a method with the alias 'movecheck1'<br />
# 1) returns true if all 3 commands return true ('result of checkdirs1' && 'torrent is 100% done', 'custom1 variable is set')<br />
# 2) otherwise, returns false<br />
system.method.insert=movecheck1,simple,"and={checkdirs1=,d.get_complete=,d.get_custom1=}"<br />
<br />
# insert a method with the alias 'movedir1'<br />
# (a series of commands, separated by ';') <br />
# 1) "set path of torrent to equal the value of custom1";<br />
# 2) "mv -u <current data path> <custom1 path>";<br />
# 3) "clear custom1", "stop the torrent","resume the torrent"<br />
# 4) stop the torrent<br />
# 5) start the torrent (to get the torrent to update the 'base path')<br />
system.method.insert=movedir1,simple,"d.set_directory=$d.get_custom1=;execute=mv,-u,$d.get_base_path=,$d.get_custom1=;d.set_custom1=;d.stop=;d.start="<br />
<br />
# set a key with the name 'move_hashed1' that is triggered by the hash_done event.<br />
# 1) When hashing of a torrent completes, this custom key will be triggered.<br />
# 2) when triggered, execute the 'movecheck1' method and check the return value.<br />
# 3) if the 'movecheck' method returns 'true', execute the 'movedir1' method we inserted above.<br />
# NOTE-0: *Only* data that has had their hash checked manually with ^R [^R = Control r].<br />
# Or on a rtorrent restart[which initiates a hash check]. Will the data move; ~/torrents/incomplete => ~/torrents/complete for example.<br />
# NOTE-1: 'branch' is an 'if' conditional statement: if(movecheck1){movedir1}<br />
system.method.set_key=event.download.hash_done,move_hashed1,"branch={$movecheck1=,movedir1=}"<br />
}}<br />
<br />
You can add additional watch folders and rules should you like to sort your torrents into special folders.<br />
<br />
For example, if you would like the torrents to download in:<br />
/home/user/torrents/incomplete<br />
and then sort the torrent data based on which folder you dropped the *.torrent into:<br />
/home/user/torrents/watch => /home/user/torrents/complete<br />
/home/user/torrents/watch/iso => /home/user/torrents/complete/iso<br />
/home/user/torrents/watch/music => /home/user/torrents/complete/music<br />
<br />
You can have the following in your .rtorrent.rc:<br />
{{bc|1=<br />
directory = /home/user/torrents/incomplete<br />
schedule = watch_directory_1,10,10,"load_start=/home/user/torrents/watch/*.torrent,d.set_custom1=/home/user/torrents/complete"<br />
<br />
schedule = watch_directory_2,10,10,"load_start=/home/user/torrents/watch/iso/*.torrent,d.set_custom1=/home/user/torrents/complete/iso"<br />
<br />
schedule = watch_directory_3,10,10,"load_start=/home/user/torrents/watch/music/*.torrent,d.set_custom1=/home/user/torrents/complete/music"<br />
<br />
system.method.insert=checkdirs1,simple,"not=\"$equal={d.get_custom1=,d.get_base_path=}\""<br />
system.method.insert=movecheck1,simple,"and={checkdirs1=,d.get_complete=,d.get_custom1=}"<br />
system.method.insert=movedir1,simple,"d.set_directory=$d.get_custom1=;execute=mv,-u,$d.get_base_path=,$d.get_custom1=;d.set_custom1=;d.stop=;d.start="<br />
system.method.set_key=event.download.hash_done,move_hashed1,"branch={$movecheck1=,movedir1=}"<br />
}}<br />
<br />
Also see [http://code.google.com/p/pyroscope/ pyroscope] especially the rtcontrol examples. There is an AUR package.<br />
<br />
==== Notification with Google Mail ====<br />
<br />
Cell phone providers allow you to "email" your phone:<br />
{{bc|<nowiki><br />
Verizon: 10digitphonenumber@vtext.com<br />
AT&T: 10digitphonenumber@txt.att.net<br />
Former AT&T customers: 10digitphonenumber@mmode.com<br />
Sprint: 10digitphonenumber@messaging.sprintpcs.com<br />
T-Mobile: 10digitphonenumber@tmomail.net<br />
Nextel: 10digitphonenumber@messaging.nextel.com<br />
Cingular: 10digitphonenumber@cingularme.com<br />
Virgin Mobile: 10digitphonenumber@vmobl.com<br />
Alltel: 10digitphonenumber@alltelmessage.com OR<br />
10digitphonenumber@message.alltel.com<br />
CellularOne: 10digitphonenumber@mobile.celloneusa.com<br />
Omnipoint: 10digitphonenumber@omnipointpcs.com<br />
Qwest: 10digitphonenumber@qwestmp.com<br />
Telus: 10digitphonenumber@msg.telus.com<br />
Rogers Wireless: 10digitphonenumber@pcs.rogers.com<br />
Fido: 10digitphonenumber@fido.ca<br />
Bell Mobility: 10digitphonenumber@txt.bell.ca<br />
Koodo Mobile: 10digitphonenumber@msg.koodomobile.com<br />
MTS: 10digitphonenumber@text.mtsmobility.com<br />
President's Choice: 10digitphonenumber@txt.bell.ca<br />
Sasktel: 10digitphonenumber@sms.sasktel.com<br />
Solo: 10digitphonenumber@txt.bell.ca<br />
</nowiki>}}<br />
<br />
*Install mailx which is provided by the {{Pkg|s-nail}} package that is found in the [[official repositories]].<br />
<br />
*Clear the {{ic|/etc/mail.rc}} file and enter:<br />
<br />
{{bc|<nowiki><br />
set sendmail="/usr/bin/mailx"<br />
set smtp=smtp.gmail.com:587<br />
set smtp-use-starttls<br />
set ssl-verify=ignore<br />
set ssl-auth=login<br />
set smtp-auth-user=USERNAME@gmail.com<br />
set smtp-auth-password=PASSWORD<br />
</nowiki>}}<br />
<br />
Now to send the text, we must pipe a message to the mailx program.<br />
*Make a Bash script:<br />
{{hc|/path/to/mail.sh|<nowiki><br />
echo "$@: Done" | mailx 5551234567@vtext.com<br />
</nowiki>}}<br />
Where the $@ is a variable holding all the arguments passed to our script.<br />
<br />
*And finally, add the important {{ic|~/.rtorrent.rc}} line:<br />
system.method.set_key = event.download.finished,notify_me,"execute=/path/to/mail.sh,$d.get_name="<br />
<br />
Breaking it down:<br />
<br />
{{ic|notify_me}} is the command id, which may be used by other commands, it can be just about anything you like, so long as it is unique.<br />
<br />
{{ic|1=execute=}} is the rtorrent command, in this case to execute a shell command.<br />
<br />
{{ic|/path/to/mail.sh}} is the name of our script (or whatever command you want to execute) followed by a comma separated list of all the switches/arguments to be passed.<br />
<br />
{{ic|1=$d.get_name=}} 'd' is an alias to whatever download triggered the command, get_name is a function which returns the name of our download, and the '$' tells rTorrent to replace the command with its output before it calls execute.<br />
<br />
The end result? When that torrent, 'All Live Nudibranches', that we started before leaving for work finishes, we will be texted:<br />
All Live Nudibranches: Done<br />
<br />
=== UI Tricks ===<br />
<br />
Rtorrent does not list the active tab properly by default, add this line to your {{ic|.rtorrent.rc}} to show only active torrents<br />
schedule = filter_active,30,30,"view_filter = active,\"or={d.get_up_rate=,d.get_down_rate=}\""<br />
<br />
Then press {{ic|9}} in your rTorrent client to see the changes in action.<br />
<br />
To sort the seeding view by the upload rate and only show torrents with peers:<br />
<br />
# Sort the seeding view by the upload rate and only show torrents with peers<br />
view.sort_current = seeding,greater=d.get_up_rate=<br />
view.filter = seeding,"and=d.get_complete=,d.get_peers_connected="<br />
view.sort_new = seeding,less=d.get_up_rate=<br />
view.sort = seeding<br />
<br />
To sort the complete view by the upload rate:<br />
<br />
# Sort the complete view by the upload rate<br />
view.sort_current = complete,greater=d.get_up_rate=<br />
view.filter = seeding,"and=d.get_complete="<br />
view.sort_new = seeding,less=d.get_up_rate=<br />
view.sort = seeding<br />
<br />
=== Manually adding trackers to torrents ===<br />
<br />
# Select torrent to edit from rTorrent console view.<br />
# Hit {{ic|Ctrl+x}}.<br />
# If you had four trackers type following lines one at a time (always press {{ic|Ctrl+x}} first) to add four more for example:<br />
<br />
d.tracker.insert="5","udp://tracker.publicbt.com:80"<br />
d.tracker.insert="6","udp://tracker.openbittorrent.com:80"<br />
d.tracker.insert="7","udp://tracker.istole.it:80"<br />
d.tracker.insert="8","udp://tracker.ccc.de:80"<br />
<br />
== Troubleshooting ==<br />
<br />
=== CA certificates ===<br />
<br />
To use rTorrent with a tracker that uses HTTPS, do the following as root:<br />
<br />
{{bc|<br />
# cd /etc/ssl/certs<br />
<nowiki># wget --no-check-certificate https://www.geotrust.com/resources/root_certificates/certificates/Equifax_Secure_Global_eBusiness_CA-1.cer</nowiki><br />
# mv Equifax_Secure_Global_eBusiness_CA-1.cer Equifax_Secure_Global_eBusiness_CA-1.pem<br />
# c_rehash<br />
}}<br />
<br />
And from now on run rTorrent with:<br />
$ rtorrent -o http_capath=/etc/ssl/certs<br />
<br />
If you use GNU Screen, update the {{ic|.screenrc}} configuration file to reflect this change:<br />
$ screen -t rtorrent rtorrent -o http_capath=/etc/ssl/certs<br />
<br />
In rTorrent 0.8.9, set {{ic|<nowiki>network.http.ssl_verify_peer.set=0</nowiki>}} to [https://bbs.archlinux.org/viewtopic.php?pid=981832#p981832 fix the problem].<br />
<br />
For more information see: [https://bbs.archlinux.org/viewtopic.php?pid=331850 rTorrent Error & CA Certificate] and [https://bbs.archlinux.org/viewtopic.php?id=45800 rTorrent Certificates Problem]<br />
<br />
=== Locked directories ===<br />
<br />
rTorrent can sometimes lock up after a crash or incorrect shutdown, and will complain about a lock file.<br />
<br />
Per the error message, the file called "'''rtorrent.lock'''" can be found within the hidden folder {{ic|.rtorrentsession}} for your download directory and manually removed.<br />
<br />
=== Event failed: bad return code ===<br />
<br />
This is caused by there being spaces in your system.method.* lines. Remove the spaces and it will work.<br />
<br />
== Web interface ==<br />
<br />
There are numerous web interfaces and front ends for rTorrent including:<br />
* [[WTorrent]] is a web interface to rtorrent programmed in php using Smarty templates and XMLRPC for PHP library.<br />
* [http://code.google.com/p/ntorrent/ nTorrent] is a graphical user interface client to rtorrent (a cli torrent client) written in Java.<br />
* [https://rtwi.jmk.hu/ rTWi] is a simple rTorrent web interface written in PHP.<br />
* [[Rtgui]] is a web based front end for rTorrent written in PHP and uses XML-RPC to communicate with the rTorrent client.<br />
* [https://github.com/Novik/ruTorrent rutorrent] and [http://forums.rutorrent.org/ Forum] - A web-based front-end with an interface very similar to uTorrent which supports many plugins and advanced features (see also: [[ruTorrent]] and [https://bbs.archlinux.org/viewtopic.php?pid=897577#p897577 Guide on forum]).<br />
<br />
{{Note|rTorrent is currently built using [http://xmlrpc-c.sourceforge.net/ XML-RPC for C/C++], which is required for some web interfaces (e.g. ruTorrent).}}<br />
<br />
=== XMLRPC interface ===<br />
<br />
If you want to use rtorrent with some web interfaces (e.g. rutorrent) you need to add the following line to the configuration file:<br />
scgi_port = localhost:5000<br />
<br />
For more information see: [https://github.com/rakshasa/rtorrent/wiki/RPC-Setup-XMLRPC Using XMLRPC with rtorrent]<br />
<br />
=== Saving magnet links as torrent files in watch folder ===<br />
<br />
{{Note| Rtorrent natively supports downloading torrents through magnet links. At the main view (reached by starting Rtorrent and pressing 1), press enter. At "load.normal>" paste the magnet link and press enter again. This will start the download.}}<br />
<br />
If you wish to have magnet links automatically added to your watch folder, here is a script that will do the trick:<br />
<br />
<nowiki><br />
#!/bin/bash<br />
watch_folder=~/.rtorrent/watch<br />
cd $watch_folder<br />
[[ "$1" =~ xt=urn:btih:([^&/]+) ]] || exit;<br />
echo "d10:magnet-uri${#1}:${1}e" > "meta-${BASH_REMATCH[1]}.torrent"</nowiki><br />
<br />
(adapted from http://blog.gonzih.org/blog/2012/02/17/how-to-use-magnet-links-with-rtorrent/).<br />
<br />
Save it, for instance as rtorrent-magnet, give it execution permission, and place it somewhere under your $PATH. Then in Firefox:<br />
# Type {{ic|about:config}} into the Location Bar (address bar) and press {{ic|Enter}}.<br />
# Right-click: ''New > Boolean > Name: '''network.protocol-handler.expose.magnet''' > Value > false''.<br />
# Next time you click a magnet link you will be asked which application to open it with. Select the script we just created and you will be done.<br />
<br />
If you want xdg-open to handle this, which you need if you are using chrome instead of firefox, (though gnome and other DE might have their own programs overriding xdg-open) you need to create the desktop entry for the rtorrent-magnet script in {{ic|~/.local/share/applications/rtorrent-magnet.desktop}} with the following content:<br />
<br />
<nowiki><br />
[Desktop Entry]<br />
Type=Application<br />
Name=rtorrent-magnet<br />
Exec=rtorrent-magnet %U<br />
MimeType=x-scheme-handler/magnet;<br />
NoDisplay=true</nowiki><br />
<br />
Then all you need to do is to register the mimetype using<br />
$ xdg-mime default rtorrent-magnet.desktop x-scheme-handler/magnet<br />
<br />
== Magnet to Torrent ==<br />
You could also use the {{AUR|magnet2torrent-git}} package which downloads the metadata and creates a torrent file.<br />
<br />
How to use:<br />
$ magnet2torrent <magnet link> [torrent file]<br />
<br />
== rtorrent-pyro ==<br />
<br />
{{AUR|rtorrent-pyro-git}} from the [[AUR]] comes with an extended rtorrent console interface. It does not contain the pyroscope tools yet though. If you also need the pyroscope tools see [[#PyroScope]] .<br />
<br />
Make sure you add following command to ~/.rtorrent.rc, which makes the asterisk key * to a shortcut for toggling between extended and collapsed view within rtorrent's interface:<br />
{{bc|<nowiki>schedule = bind_collapse,0,0,"ui.bind_key=download_list,*,view.collapsed.toggle="</nowiki>}}<br />
<br />
Also set "pyro.extended" to 1 to activate rTorrent-PS features.<br />
{{bc|<nowiki>system.method.insert = pyro.extended, value|const, 1</nowiki>}}<br />
<br />
=== PyroScope ===<br />
<br />
We create a directory for the installation of pyroscope, then download and update the source code from subversion:<br />
{{bc|<nowiki>mkdir -p ~/.lib<br />
svn checkout http://pyroscope.googlecode.com/svn/trunk/ ~/.lib/pyroscope<br />
~/.lib/pyroscope/update-to-head.sh</nowiki>}}<br />
Adding pyroscope bin's PATH to .bashrc:<br />
{{bc|<nowiki>export PATH=$PATH:path_to_the_bin # Example path for pyroscope bin's: /home/user/.lib/pyroscope/bin/</nowiki>}}<br />
Creating the ~/.pyroscope/config.ini:<br />
{{bc|<nowiki>pyroadmin --create-config</nowiki>}}<br />
<br />
Add this to your ~/.rtorrent.rc. Do not forget to add the path of your pyroscope bin's dir (see below).<br />
{{bc|<nowiki>system.method.insert = pyro.bin_dir, string|const, write_here_path_to_your_pyroscope_bin_dir # Example path: /home/user/.lib/pyroscope/bin/<br />
system.method.insert = pyro.rc_dialect, string|const|simple, "execute_capture=bash,-c,\"test $1 = 0.8.6 && echo -n 0.8.6 || echo -n 0.8.9\",dialect,$system.client_version="<br />
system.method.insert = pyro.rtorrent_rc, string|const|private, "$cat=~/.pyroscope/rtorrent-,\"$pyro.rc_dialect=\",.rc.default"<br />
import = $pyro.rtorrent_rc=</nowiki>}}<br />
<br />
Optionally: TORQUE: Daemon watchdog schedule. Must be activated by touching the "~/.pyroscope/run/pyrotorque" file!<br />
You can also just use rtorrent watch dir or give pyro_watchdog a try, which comes with 'treewatch' ability, meaning it also watches for torrents recursively within the given watch path. Further documentation for pyro_watchdog is here: <br />
[http://code.google.com/p/pyroscope/wiki/QueueManager] <br />
To enable pyro_watchdog, add this in ~/.rtorrent.rc and further configurations are in ~/.pyroscope/torque.ini. <br />
{{bc|<nowiki>schedule = pyro_watchdog,30,300,"pyro.watchdog=~/.pyroscope,-v"</nowiki>}}<br />
<br />
Following steps are important. Before using pyroscope tools you have to set the missing "loaded" times to that of the .torrent file. Run this in your terminal:<br />
{{bc|<nowiki>rtcontrol '!*"*' loaded=0 -q -sname -o 'echo "$(name)s"\ntest -f "$(metafile)s" && rtxmlrpc -q d.set_custom $(hash)s tm_loaded \$(\<br />
ls -l --time-style "+%%s" "$(metafile)s" \<br />
| cut -f6 -d" ")\nrtxmlrpc -q d.save_session $(hash)s' | bash</nowiki>}}<br />
<br />
And now set the missing "completed" times to that of the data file or directory:<br />
{{bc|<nowiki>rtcontrol '!*"*' completed=0 done=100 path=\! is_ghost=no -q -sname -o 'echo "$(name)s"\ntest -e "$(realpath)s" && rtxmlrpc -q d.set_custom $(hash)s tm_completed \$(\<br />
ls -ld --time-style "+%%s" "$(realpath)s" \<br />
| cut -f6 -d" ")\nrtxmlrpc -q d.save_session $(hash)s' | bash</nowiki>}}<br />
<br />
Example usage:<br />
Will print out all torrents older than 2 hours:<br />
{{bc|<nowiki>rtcontrol -V completed=+2h -scompleted -ocompleted</nowiki>}}<br />
Deletes all torrents older than 48 hours:<br />
{{bc|<nowiki>rtcontrol -V completed=+48h -scompleted -ocompleted --cull --yes</nowiki>}}<br />
<br />
== See also ==<br />
<br />
* [http://linux.die.net/man/1/rtorrent Manpage for rtorrent]<br />
* [[Screen Tips]]<br />
* [[Wikipedia:Comparison of BitTorrent clients|Comparison of BitTorrent clients]] on Wikipedia<br />
* [http://community.rutorrent.org/ rTorrent Community Wiki] - Public place for information on rTorrent and any project related to rTorrent, regarding setup, configuration, operations, and development.<br />
* [http://code.google.com/p/pyroscope/ PyroScope] - Collection of command line tools for rTorrent. It provides commands for creating and modifying torrent files, moving data on completion without having multiple watch folders, and mass-controlling download items via rTorrent's XML-RPC interface: searching, start/stop, deleting items with or without their data, etc. It also offers a documented [[Python]] API.<br />
* [[Rutorrent with lighttpd|ruTorrent with Lighttpd]]<br />
* [http://wiki.theaveragegeek.com/howto/installing_rtorrent_and_hellanzb_on_centos5_64-bit_vps How-to install rTorrent and Hellanzb on CentOS 5 64-bit VPS]<br />
* [http://code.google.com/p/pyroscope/wiki/DebianInstallFromSource Installation guide for rTorrent and Pyroscope on Debian] - Collection of tools for the BitTorrent protocol and especially the rTorrent client<br />
* [http://mktorrent.sourceforge.net/ mktorrent] - Command line application used to generate torrent files, which is available as {{Pkg|mktorrent}} in the [[official repositories]].<br />
* [https://github.com/kfei/docktorrent docktorrent] - Using Docker, rTorrent and ruTorrent to run a full-featured BitTorrent box.<br />
* [https://github.com/nelhage/reptyr reptyr] - another tool to take over a program's TTY (it is in the standard repos). The process may have started being attached to a terminal or to a socket in tmux, screen or dtach.<br />
* [http://caca.zoy.org/wiki/neercs neercs] - a more screen/tmux like tool than reptyr, but, like reptyr, neercs can also "steal" a process that may have started slaved to a terminal or to a socket in tmux, screen or dtach. {{AUR|neercs-git}}{{Broken package link|{{aur-mirror|neercs-git}}}}<br />
<br />
'''Forum threads'''<br />
* 2009-03-11 - Arch Linux - [https://bbs.archlinux.org/viewtopic.php?id=67304 HOWTO: rTorrent stats in Conky]</div>Ygyfygyhttps://wiki.archlinux.org/index.php?title=RTorrent&diff=428490RTorrent2016-03-29T10:18:41Z<p>Ygyfygy: /* See also */ Added a **working** manpage for rtorrent</p>
<hr />
<div>{{DISPLAYTITLE:rTorrent}}<br />
[[Category:Internet applications]]<br />
[[es:RTorrent]]<br />
[[ja:RTorrent]]<br />
[[ru:RTorrent]]<br />
[[zh-CN:RTorrent]]<br />
[https://rakshasa.github.io/rtorrent/ rTorrent] is a quick and efficient BitTorrent client that uses, and is in development alongside, the libTorrent (not to be confused with {{Pkg|libtorrent-rasterbar}}) library. It is written in C++ and uses the [[Wikipedia:ncurses|ncurses]] programming library, which means it uses a text user interface. When combined with a terminal multiplexer (e.g. [[GNU Screen]] or [[Tmux]]) and [[Secure Shell]], it becomes a convenient remote [[Wikipedia:BitTorrent (protocol)#Operation|BitTorrent client]].<br />
<br />
== Installation ==<br />
<br />
[[Install]] the {{Pkg|rtorrent}} package that is available in the [[official repositories]].<br />
<br />
Alternatively, install {{AUR|rtorrent-git}} or {{AUR|rtorrent-vi-color}} or {{AUR|rtorrent-extended}}{{Broken package link|{{aur-mirror|rtorrent-extended}}}} from the [[AUR]].<br />
<br />
== Configuration ==<br />
<br />
{{Note|See the rTorrent wiki article on this subject for more information: [http://web.archive.org/web/20140213003955/http://libtorrent.rakshasa.no/wiki/RTorrentCommonTasks Common Tasks in rTorrent for Dummies].}}<br />
<br />
Before running rTorrent, find the example configuration file {{ic|/usr/share/doc/rtorrent/rtorrent.rc}} and copy it to {{ic|~/.rtorrent.rc}}:<br />
<br />
$ cp /usr/share/doc/rtorrent/rtorrent.rc ~/.rtorrent.rc<br />
<br />
=== Performance ===<br />
<br />
{{Note|See the rTorrent wiki article on this subject for more information: [http://web.archive.org/web/20140213011439/http://libtorrent.rakshasa.no/wiki/RTorrentPerformanceTuning Performance Tuning]}}<br />
<br />
The values for the following options are dependent on the system's hardware and Internet connection speed. To find the optimal values read: [http://torrentfreak.com/optimize-your-BitTorrent-download-speed Optimize Your BitTorrent Download Speed]<br />
{{bc|<nowiki><br />
min_peers = 40<br />
max_peers = 52<br />
<br />
min_peers_seed = 10<br />
max_peers_seed = 52<br />
<br />
max_uploads = 8<br />
<br />
download_rate = 200<br />
upload_rate = 28<br />
</nowiki>}}<br />
<br />
The {{ic|check_hash}} option executes a hash check when a torrent download is complete or rTorrent is started. When starting, it checks for errors in your completed files. <br />
check_hash = yes<br />
<br />
=== Create and manage files ===<br />
<br />
The {{ic|directory}} option will determine where your torrent data will be saved (could be a relative path):<br />
directory = ~/downloaded<br />
<br />
The {{ic|session}} option allows rTorrent to save the progess of your torrents. It is recommended to create a directory in home directory (e.g. {{ic|mkdir ~/.rtorrent.session}}).<br />
session = ~/.rtorrent.session<br />
<br />
The {{ic|schedule}} option has rTorrent watch a particular directory for new torrent files. Saving a torrent file to this directory will automatically start the download. Remember to create the directory that will be watched (e.g. {{ic|mkdir ~/watch}}). Also, be careful when using this option as rTorrent will move the torrent file to your session folder and rename it to its hash value.<br />
schedule = watch_directory,5,5,load_start=/home/''user''/watch/*.torrent<br />
schedule = untied_directory,5,5,stop_untied=<br />
schedule = tied_directory,5,5,start_tied=<br />
<br />
The following {{ic|schedule}} option is intended to stop rTorrent from downloading data when disk space is low.<br />
schedule = low_diskspace,5,60,close_low_diskspace=100M<br />
<br />
=== Port configuration ===<br />
<br />
The {{ic|port_range}} option sets which port(s) to use for listening. It is recommended to use a port that is higher than 49152 (see: [[Wikipedia:List of TCP and UDP port numbers|List of port numbers]]). Although, rTorrent allows a range of ports, a single port is recommended.<br />
port_range = 49164-49164<br />
<br />
Additionally, make sure port forwarding is enabled for the proper port(s) (see: [http://portforward.com/english/routers/port_forwarding/routerindex.htm Port Forward guides]).<br />
<br />
=== Additional settings ===<br />
<br />
The {{ic|encryption}} option enables or disables encryption. It is very important to enable this option, not only for yourself, but also for your peers in the torrent swarm. Some users need to obscure their bandwidth usage from their ISP. And it does not hurt to enable it even if you do not need the added security.<br />
encryption = allow_incoming,try_outgoing,enable_retry<br />
It is also possible to force all connections to use encryption. However, be aware that this stricter rule will reduce your client's availability:<br />
encryption = require,require_RC4,allow_incoming,try_outgoing<br />
<br />
See also [[Wikipedia:BitTorrent Protocol Encryption]].<br />
<br />
This final {{ic|dht}} option enables [[Wikipedia:Distributed hash table|DHT]] support. DHT is common among public trackers and will allow the client to acquire more peers.<br />
{{bc|<nowiki><br />
dht = auto<br />
dht_port = 6881<br />
peer_exchange = yes<br />
</nowiki>}}<br />
<br />
== Key bindings ==<br />
<br />
rTorrent relies exclusively on keyboard shortcuts for user input. A quick reference is available in the table below. A complete guide is available on the rTorrent wiki (see: [https://github.com/rakshasa/rtorrent/wiki/User-Guide rTorrent User Guide]).<br />
<br />
{{Note|Striking {{ic|Ctrl-q}} twice in quick succession will make rTorrent shutdown without waiting to send a stop announce to the connected trackers.}}<br />
<br />
{| class="wikitable"<br />
|-<br />
!width="75" |Cmd<br />
!Action<br />
|-<br />
|Ctrl-q<br />
|Quit application<br />
|-<br />
|Ctrl-s<br />
|Start download. Runs hash first unless already done.<br />
|-<br />
|Ctrl-d<br />
|Stop an active download or remove a stopped download<br />
|-<br />
|Ctrl-k<br />
|Stop and close the files of an active download.<br />
|-<br />
|Ctrl-r<br />
|Initiate hash check of torrent. Starts downloading if file is not available.<br />
|-<br />
|Ctrl-o<br />
|Specify the download directory for a added, but not started torrent.<br />
|-<br />
|Left<br />
|Returns to the previous screen<br />
|-<br />
|Right<br />
|Goes to the next screen<br />
|-<br />
|Backspace<br />
|Adds and starts the specified *.torrent<br />
|-<br />
|Return<br />
|Adds and doesn't start the specified *.torrent<br />
|-<br />
|<nowiki>a|s|d</nowiki><br />
|<nowiki>Increase global upload throttle about 1|5|50 KB/s</nowiki><br />
|-<br />
|<nowiki>A|S|D</nowiki><br />
|<nowiki>Increase global download throttle about 1|5|50 KB/s</nowiki><br />
|-<br />
|<nowiki>z|x|c</nowiki><br />
|<nowiki>Decrease global upload throttle about 1|5|50 KB/s</nowiki><br />
|-<br />
|<nowiki>Z|X|C</nowiki><br />
|<nowiki>Decrease global download throttle about 1|5|50 KB/s</nowiki><br />
|}<br />
<br />
=== Redundant mapping ===<br />
<br />
{{ic|Ctrl-s}} is often used for terminal control to stop screen output while {{ic|Ctrl-q}} is used to start it. These mappings may interfere with rTorrent. Check to see if these terminal options are bound to a mapping:<br />
{{hc|$ stty -a|<nowiki>...<br />
swtch = <undef>; start = ^Q; stop = ^S; susp = ^Z; rprnt = ^R; werase = ^W; lnext = ^V;<br />
...<br />
</nowiki>}}<br />
<br />
To remove the mappings, change the terminal characteristics to undefine the aforementioned special characters (i.e. {{ic|stop}} and {{ic|start}}):<br />
# stty stop undef<br />
# stty start undef<br />
<br />
To remove these mappings automatically at startup you may add the two preceding commands to your {{ic|~/.bashrc}} file.<br />
<br />
== Additional tips ==<br />
<br />
=== systemd service file with tmux or screen ===<br />
<br />
*With tmux (Restart rtorrent if crashed)<br />
{{hc|/etc/systemd/user/rt.service|<nowiki><br />
[Unit]<br />
Description=rTorrent<br />
After=network.target<br />
<br />
[Service]<br />
Type=forking<br />
KillMode=none<br />
ExecStart=/usr/bin/tmux new-session -s rt -n rtorrent -d rtorrent<br />
ExecStop=/usr/bin/bash -c "/usr/bin/tmux send-keys -t rt:rtorrent.0 C-q && while pidof rtorrent > /dev/null; do sleep 0.5; echo rtorrent still running...; done"<br />
WorkingDirectory=%h<br />
Restart=on-failure<br />
<br />
[Install]<br />
WantedBy=default.target<br />
</nowiki>}}<br />
<br />
*With tmux running as user rtorrent (Restart rtorrent if crashed)<br />
{{hc|/etc/systemd/system/rtorrent.service|<nowiki><br />
[Unit]<br />
Description=rTorrent Daemon<br />
After=network.target<br />
<br />
[Service]<br />
Type=forking<br />
KillMode=none<br />
User=rtorrent<br />
ExecStart=/usr/bin/tmux new-session -c /mnt/storage/rtorrent -s rtorrent -n rtorrent -d rtorrent<br />
ExecStop=/usr/bin/bash -c "/usr/bin/tmux send-keys -t rtorrent C-q && while pidof rtorrent > /dev/null; do sleep 0.5; done"<br />
WorkingDirectory=/home/rtorrent/<br />
Restart=on-failure<br />
<br />
[Install]<br />
WantedBy=multi-user.target<br />
</nowiki>}}<br />
<br />
*With screen<br />
<br />
{{hc|/etc/systemd/user/rt.service|<nowiki><br />
[Unit]<br />
Description=rTorrent<br />
After=network.target<br />
<br />
[Service]<br />
Type=forking<br />
KillMode=none<br />
ExecStart=/usr/bin/screen -d -m -fa -S rtorrent /usr/bin/rtorrent<br />
ExecStop=/usr/bin/killall -w -s 2 /usr/bin/rtorrent<br />
WorkingDirectory=%h<br />
<br />
[Install]<br />
WantedBy=default.target<br />
</nowiki>}}<br />
<br />
Start at boot time:<br />
$ systemctl --user enable rt<br />
Start manually:<br />
$ systemctl --user start rt<br />
Stop:<br />
$ systemctl --user stop rt<br />
Attach to rtorrent's session:<br />
tmux attach -t rt<br />
Detach:<br />
Ctrl-b d<br />
<br />
=== systemd service file with dtach ===<br />
<br />
{{Style|Creating multiple rtorrent sessions this way is far from perfect, why don't we just assume for simplicity that there is only one session? This is assumed in [[#systemd service file with tmux or screen]] anyway.}}<br />
<br />
When running dtach from systemd unit, the {{ic|TERM}} environment variable [[systemd/User#Environment_variables|has to be set explicitly]] for rtorrent to work.<br />
<br />
This service file has no restart because the author occasionally takes the drive in question offline, and rtorrent fails, shall we say, "suboptimally" when started in this scenario and loses many torrent specific settings such as the specific directories each torrent is stored in. In fact the symlinks that kick off rtorrent live on the relevant drive; if it is unmounted rtorrent cannot start. This use case of blocking rtorrent from starting is relevant to users who put the downloaded files on removable media such as NAS, USB or eSATA drives.<br />
<br />
{{hc|~/.config/systemd/user/rtorrent.service|<nowiki><br />
[Unit]<br />
Description=rTorrent<br />
#After=network.target<br />
<br />
[Service]<br />
# set TERM according to your terminal<br />
Environment="TERM=xterm"<br />
#Environment="TERM=linux" <br />
Type=forking<br />
KillMode=none<br />
ExecStart=-/usr/bin/dtach -n /home/sam/run/dtach_fifos/fifo -e "^T" /home/sam/bin/rtr_new -n -o import=/home/sam/.config/rtorrent/new_.rc <br />
# dtach -n <separate filename for each instance><br />
# <br />
# rtr_new -n to ignore the default .rtorrent.rc<br />
# rtr_new -o import to load the instance-specific rc<br />
ExecStop=-/usr/bin/killall -u sam -e -w -s INT /home/sam/bin/rtr_new<br />
<br />
[Install]<br />
WantedBy=multi-user.target<br />
</nowiki>}}<br />
<br />
Note some other issues exposed in this service file other than just dtach:<br />
<br />
{{ic|/home/sam/bin/rtr_new}} is a symlink to {{ic|/usr/bin/rtorrent}}<br />
<br />
This lets us run several instances and kill each one independently with a different version of the ExecStop, to wit:<br />
<br />
{{bc|1=ExecStop=-/usr/bin/killall -u sam -e -w -s INT /home/sam/bin/rtr_new<br />
ExecStop=-/usr/bin/killall -u sam -e -w -s INT /home/sam/bin/rtr_academic<br />
ExecStop=-/usr/bin/killall -u sam -e -w -s INT /home/sam/bin/rtr_other_stuff}}<br />
<br />
These are each in a different service file, each of which controls one instance.<br />
<br />
Without this step, when running multiple instances a killall solution would kill all the running rtorrent instances. <br />
<br />
If multiple rtorrent instances are not needed and the rtorrent rc file is in the default location the above service file may be simplified. The entire file is included but only the ExecStart and <br />
ExecStop lines change. <br />
<br />
{{hc|~/.config/systemd/user/rtorrent.service|<nowiki><br />
[Unit]<br />
Description=rTorrent<br />
#After=network.target<br />
<br />
[Service]<br />
# set TERM according to your terminal<br />
Environment="TERM=xterm"<br />
#Environment="TERM=linux" <br />
Type=forking<br />
KillMode=none<br />
ExecStart=-/usr/bin/dtach -n /home/sam/run/dtach_fifos/fifo -e "^T" /usr/bin/rtorrent <br />
# dtach -n <user specified FIFO name> -e <user specified character> /usr/bin/rtorrent <br />
ExecStop=/usr/bin/killall -w -s INT /usr/bin/rtorrent<br />
# -e (exact match) and -u (user name) were added above to stop specific processes<br />
# and may be omitted here because only one rtorrent will be running<br />
<br />
[Install]<br />
WantedBy=multi-user.target<br />
</nowiki>}}<br />
<br />
The service can be controlled with [[systemctl --user]]. When it is started, you can attach to the session:<br />
<br />
$ dtach -a /home/sam/run/dtach_fifos/fifo -e "^T"<br />
<br />
=== Pre-allocation ===<br />
<br />
The rTorrent package in the community repository lacks pre-allocation. Compiling rTorrent with pre-allocation allows files to be allocated before downloading the torrent. The major benefit is that it limits and avoids fragmentation of the filesystem. However, this introduces a delay during the pre-allocation if the filesystem does not support the fallocate syscall natively.<br />
<br />
Therefore this switch is recommended for xfs, ext4 and btrfs filesystems, which have native fallocate syscall support. They will see no delay during preallocation and no fragmented filesystem. Pre-allocation on others filesystems will cause a delay but will not fragment the files.<br />
<br />
To make pre-allocation available, recompile libTorrent from the [[ABS]] tree with the following new switch:<br />
$ ./configure --prefix=/usr --disable-debug --with-posix-fallocate<br />
<br />
To enable it, add the following to your {{ic|~/rtorrent.rc}}:<br />
{{hc|~/rtorrent.rc|<nowiki><br />
# Preallocate files; reduces defragmentation on filesystems.<br />
system.file_allocate.set = yes<br />
</nowiki>}}<br />
<br />
=== Manage completed files ===<br />
<br />
{{Note|<br />
*Currently, this part requires either the git version of rtorrent/libtorrent or having applied the patch to 0.8.6 that adds 'equal'.<br />
* If you are having trouble with this tip, it is probably easier to follow [http://web.archive.org/web/20140213003955/http://libtorrent.rakshasa.no/wiki/RTorrentCommonTasks#Movecompletedtorrentstodifferentdirectorydependingonwatchdirectory this].<br />
}}<br />
<br />
It is possible to have rtorrent sort completed torrent data to specific folders based on which 'watch' folder you drop the *.torrent into while continuing to seed. Many examples show how to do this with torrents downloaded by rtorrent. The problem is when you try to drop in 100% done torrent data and then have rtorrent check the data and resume, it will not be sorted.<br />
<br />
As a solution, use the following example in your {{ic|~/.rtorrent.rc}}.<br />
Make sure to change the paths.<br />
<br />
{{bc|1=<br />
# location where new torrent data is placed, and where you should place your<br />
# 'complete' data before you place your *.torrent file into the watch folder<br />
directory = /home/user/torrents/incomplete<br />
<br />
# schedule a timer event named 'watch_directory_1':<br />
# 1) triggers 10 seconds after rtorrent starts<br />
# 2) triggers at 10 second intervals thereafter<br />
# 3) Upon trigger, attempt to load (and start) new *.torrent files found in /home/user/torrents/watch/<br />
# 4) set a variable named 'custom1' with the value "/home/user/torrents/complete"<br />
# NOTE: if you do not want it to automatically start the torrent, change 'load_start' to 'load'<br />
schedule = watch_directory_1,10,10,"load_start=/home/user/torrents/watch/*.torrent,d.set_custom1=/home/user/torrents/complete"<br />
<br />
# insert a method with the alias 'checkdirs1'<br />
# 1) returns true if the current path of the torrent data is not equal to the value of custom1<br />
# 2) otherwise, returns false<br />
system.method.insert=checkdirs1,simple,"not=\"$equal={d.get_custom1=,d.get_base_path=}\""<br />
<br />
# insert a method with the alias 'movecheck1'<br />
# 1) returns true if all 3 commands return true ('result of checkdirs1' && 'torrent is 100% done', 'custom1 variable is set')<br />
# 2) otherwise, returns false<br />
system.method.insert=movecheck1,simple,"and={checkdirs1=,d.get_complete=,d.get_custom1=}"<br />
<br />
# insert a method with the alias 'movedir1'<br />
# (a series of commands, separated by ';') <br />
# 1) "set path of torrent to equal the value of custom1";<br />
# 2) "mv -u <current data path> <custom1 path>";<br />
# 3) "clear custom1", "stop the torrent","resume the torrent"<br />
# 4) stop the torrent<br />
# 5) start the torrent (to get the torrent to update the 'base path')<br />
system.method.insert=movedir1,simple,"d.set_directory=$d.get_custom1=;execute=mv,-u,$d.get_base_path=,$d.get_custom1=;d.set_custom1=;d.stop=;d.start="<br />
<br />
# set a key with the name 'move_hashed1' that is triggered by the hash_done event.<br />
# 1) When hashing of a torrent completes, this custom key will be triggered.<br />
# 2) when triggered, execute the 'movecheck1' method and check the return value.<br />
# 3) if the 'movecheck' method returns 'true', execute the 'movedir1' method we inserted above.<br />
# NOTE-0: *Only* data that has had their hash checked manually with ^R [^R = Control r].<br />
# Or on a rtorrent restart[which initiates a hash check]. Will the data move; ~/torrents/incomplete => ~/torrents/complete for example.<br />
# NOTE-1: 'branch' is an 'if' conditional statement: if(movecheck1){movedir1}<br />
system.method.set_key=event.download.hash_done,move_hashed1,"branch={$movecheck1=,movedir1=}"<br />
}}<br />
<br />
You can add additional watch folders and rules should you like to sort your torrents into special folders.<br />
<br />
For example, if you would like the torrents to download in:<br />
/home/user/torrents/incomplete<br />
and then sort the torrent data based on which folder you dropped the *.torrent into:<br />
/home/user/torrents/watch => /home/user/torrents/complete<br />
/home/user/torrents/watch/iso => /home/user/torrents/complete/iso<br />
/home/user/torrents/watch/music => /home/user/torrents/complete/music<br />
<br />
You can have the following in your .rtorrent.rc:<br />
{{bc|1=<br />
directory = /home/user/torrents/incomplete<br />
schedule = watch_directory_1,10,10,"load_start=/home/user/torrents/watch/*.torrent,d.set_custom1=/home/user/torrents/complete"<br />
<br />
schedule = watch_directory_2,10,10,"load_start=/home/user/torrents/watch/iso/*.torrent,d.set_custom1=/home/user/torrents/complete/iso"<br />
<br />
schedule = watch_directory_3,10,10,"load_start=/home/user/torrents/watch/music/*.torrent,d.set_custom1=/home/user/torrents/complete/music"<br />
<br />
system.method.insert=checkdirs1,simple,"not=\"$equal={d.get_custom1=,d.get_base_path=}\""<br />
system.method.insert=movecheck1,simple,"and={checkdirs1=,d.get_complete=,d.get_custom1=}"<br />
system.method.insert=movedir1,simple,"d.set_directory=$d.get_custom1=;execute=mv,-u,$d.get_base_path=,$d.get_custom1=;d.set_custom1=;d.stop=;d.start="<br />
system.method.set_key=event.download.hash_done,move_hashed1,"branch={$movecheck1=,movedir1=}"<br />
}}<br />
<br />
Also see [http://code.google.com/p/pyroscope/ pyroscope] especially the rtcontrol examples. There is an AUR package.<br />
<br />
==== Notification with Google Mail ====<br />
<br />
Cell phone providers allow you to "email" your phone:<br />
{{bc|<nowiki><br />
Verizon: 10digitphonenumber@vtext.com<br />
AT&T: 10digitphonenumber@txt.att.net<br />
Former AT&T customers: 10digitphonenumber@mmode.com<br />
Sprint: 10digitphonenumber@messaging.sprintpcs.com<br />
T-Mobile: 10digitphonenumber@tmomail.net<br />
Nextel: 10digitphonenumber@messaging.nextel.com<br />
Cingular: 10digitphonenumber@cingularme.com<br />
Virgin Mobile: 10digitphonenumber@vmobl.com<br />
Alltel: 10digitphonenumber@alltelmessage.com OR<br />
10digitphonenumber@message.alltel.com<br />
CellularOne: 10digitphonenumber@mobile.celloneusa.com<br />
Omnipoint: 10digitphonenumber@omnipointpcs.com<br />
Qwest: 10digitphonenumber@qwestmp.com<br />
Telus: 10digitphonenumber@msg.telus.com<br />
Rogers Wireless: 10digitphonenumber@pcs.rogers.com<br />
Fido: 10digitphonenumber@fido.ca<br />
Bell Mobility: 10digitphonenumber@txt.bell.ca<br />
Koodo Mobile: 10digitphonenumber@msg.koodomobile.com<br />
MTS: 10digitphonenumber@text.mtsmobility.com<br />
President's Choice: 10digitphonenumber@txt.bell.ca<br />
Sasktel: 10digitphonenumber@sms.sasktel.com<br />
Solo: 10digitphonenumber@txt.bell.ca<br />
</nowiki>}}<br />
<br />
*Install mailx which is provided by the {{Pkg|s-nail}} package that is found in the [[official repositories]].<br />
<br />
*Clear the {{ic|/etc/mail.rc}} file and enter:<br />
<br />
{{bc|<nowiki><br />
set sendmail="/usr/bin/mailx"<br />
set smtp=smtp.gmail.com:587<br />
set smtp-use-starttls<br />
set ssl-verify=ignore<br />
set ssl-auth=login<br />
set smtp-auth-user=USERNAME@gmail.com<br />
set smtp-auth-password=PASSWORD<br />
</nowiki>}}<br />
<br />
Now to send the text, we must pipe a message to the mailx program.<br />
*Make a Bash script:<br />
{{hc|/path/to/mail.sh|<nowiki><br />
echo "$@: Done" | mailx 5551234567@vtext.com<br />
</nowiki>}}<br />
Where the $@ is a variable holding all the arguments passed to our script.<br />
<br />
*And finally, add the important {{ic|~/.rtorrent.rc}} line:<br />
system.method.set_key = event.download.finished,notify_me,"execute=/path/to/mail.sh,$d.get_name="<br />
<br />
Breaking it down:<br />
<br />
{{ic|notify_me}} is the command id, which may be used by other commands, it can be just about anything you like, so long as it is unique.<br />
<br />
{{ic|1=execute=}} is the rtorrent command, in this case to execute a shell command.<br />
<br />
{{ic|/path/to/mail.sh}} is the name of our script (or whatever command you want to execute) followed by a comma separated list of all the switches/arguments to be passed.<br />
<br />
{{ic|1=$d.get_name=}} 'd' is an alias to whatever download triggered the command, get_name is a function which returns the name of our download, and the '$' tells rTorrent to replace the command with its output before it calls execute.<br />
<br />
The end result? When that torrent, 'All Live Nudibranches', that we started before leaving for work finishes, we will be texted:<br />
All Live Nudibranches: Done<br />
<br />
=== UI Tricks ===<br />
<br />
Rtorrent does not list the active tab properly by default, add this line to your {{ic|.rtorrent.rc}} to show only active torrents<br />
schedule = filter_active,30,30,"view_filter = active,\"or={d.get_up_rate=,d.get_down_rate=}\""<br />
<br />
Then press {{ic|9}} in your rTorrent client to see the changes in action.<br />
<br />
To sort the seeding view by upload rate and not show torrents without peers:<br />
<br />
# Sort the seeding view by the upload rate and only show torrents with peers<br />
view.sort_current = seeding,greater=d.get_up_rate=<br />
view.filter = seeding,"and=d.get_complete=,d.get_peers_connected="<br />
view.sort_new = seeding,less=d.get_up_rate=<br />
view.sort = seeding<br />
<br />
To sort the complete view by upload rate:<br />
<br />
# Sort the complete view by the upload rate<br />
view.sort_current = complete,greater=d.get_up_rate=<br />
view.filter = seeding,"and=d.get_complete="<br />
view.sort_new = seeding,less=d.get_up_rate=<br />
view.sort = seeding<br />
<br />
=== Manually adding trackers to torrents ===<br />
<br />
# Select torrent to edit from rTorrent console view.<br />
# Hit {{ic|Ctrl+x}}.<br />
# If you had four trackers type following lines one at a time (always press {{ic|Ctrl+x}} first) to add four more for example:<br />
<br />
d.tracker.insert="5","udp://tracker.publicbt.com:80"<br />
d.tracker.insert="6","udp://tracker.openbittorrent.com:80"<br />
d.tracker.insert="7","udp://tracker.istole.it:80"<br />
d.tracker.insert="8","udp://tracker.ccc.de:80"<br />
<br />
== Troubleshooting ==<br />
<br />
=== CA certificates ===<br />
<br />
To use rTorrent with a tracker that uses HTTPS, do the following as root:<br />
<br />
{{bc|<br />
# cd /etc/ssl/certs<br />
<nowiki># wget --no-check-certificate https://www.geotrust.com/resources/root_certificates/certificates/Equifax_Secure_Global_eBusiness_CA-1.cer</nowiki><br />
# mv Equifax_Secure_Global_eBusiness_CA-1.cer Equifax_Secure_Global_eBusiness_CA-1.pem<br />
# c_rehash<br />
}}<br />
<br />
And from now on run rTorrent with:<br />
$ rtorrent -o http_capath=/etc/ssl/certs<br />
<br />
If you use GNU Screen, update the {{ic|.screenrc}} configuration file to reflect this change:<br />
$ screen -t rtorrent rtorrent -o http_capath=/etc/ssl/certs<br />
<br />
In rTorrent 0.8.9, set {{ic|<nowiki>network.http.ssl_verify_peer.set=0</nowiki>}} to [https://bbs.archlinux.org/viewtopic.php?pid=981832#p981832 fix the problem].<br />
<br />
For more information see: [https://bbs.archlinux.org/viewtopic.php?pid=331850 rTorrent Error & CA Certificate] and [https://bbs.archlinux.org/viewtopic.php?id=45800 rTorrent Certificates Problem]<br />
<br />
=== Locked directories ===<br />
<br />
rTorrent can sometimes lock up after a crash or incorrect shutdown, and will complain about a lock file.<br />
<br />
Per the error message, the file called "'''rtorrent.lock'''" can be found within the hidden folder {{ic|.rtorrentsession}} for your download directory and manually removed.<br />
<br />
=== Event failed: bad return code ===<br />
<br />
This is caused by there being spaces in your system.method.* lines. Remove the spaces and it will work.<br />
<br />
== Web interface ==<br />
<br />
There are numerous web interfaces and front ends for rTorrent including:<br />
* [[WTorrent]] is a web interface to rtorrent programmed in php using Smarty templates and XMLRPC for PHP library.<br />
* [http://code.google.com/p/ntorrent/ nTorrent] is a graphical user interface client to rtorrent (a cli torrent client) written in Java.<br />
* [https://rtwi.jmk.hu/ rTWi] is a simple rTorrent web interface written in PHP.<br />
* [[Rtgui]] is a web based front end for rTorrent written in PHP and uses XML-RPC to communicate with the rTorrent client.<br />
* [https://github.com/Novik/ruTorrent rutorrent] and [http://forums.rutorrent.org/ Forum] - A web-based front-end with an interface very similar to uTorrent which supports many plugins and advanced features (see also: [[ruTorrent]] and [https://bbs.archlinux.org/viewtopic.php?pid=897577#p897577 Guide on forum]).<br />
<br />
{{Note|rTorrent is currently built using [http://xmlrpc-c.sourceforge.net/ XML-RPC for C/C++], which is required for some web interfaces (e.g. ruTorrent).}}<br />
<br />
=== XMLRPC interface ===<br />
<br />
If you want to use rtorrent with some web interfaces (e.g. rutorrent) you need to add the following line to the configuration file:<br />
scgi_port = localhost:5000<br />
<br />
For more information see: [https://github.com/rakshasa/rtorrent/wiki/RPC-Setup-XMLRPC Using XMLRPC with rtorrent]<br />
<br />
=== Saving magnet links as torrent files in watch folder ===<br />
<br />
{{Note| Rtorrent natively supports downloading torrents through magnet links. At the main view (reached by starting Rtorrent and pressing 1), press enter. At "load.normal>" paste the magnet link and press enter again. This will start the download.}}<br />
<br />
If you wish to have magnet links automatically added to your watch folder, here is a script that will do the trick:<br />
<br />
<nowiki><br />
#!/bin/bash<br />
watch_folder=~/.rtorrent/watch<br />
cd $watch_folder<br />
[[ "$1" =~ xt=urn:btih:([^&/]+) ]] || exit;<br />
echo "d10:magnet-uri${#1}:${1}e" > "meta-${BASH_REMATCH[1]}.torrent"</nowiki><br />
<br />
(adapted from http://blog.gonzih.org/blog/2012/02/17/how-to-use-magnet-links-with-rtorrent/).<br />
<br />
Save it, for instance as rtorrent-magnet, give it execution permission, and place it somewhere under your $PATH. Then in Firefox:<br />
# Type {{ic|about:config}} into the Location Bar (address bar) and press {{ic|Enter}}.<br />
# Right-click: ''New > Boolean > Name: '''network.protocol-handler.expose.magnet''' > Value > false''.<br />
# Next time you click a magnet link you will be asked which application to open it with. Select the script we just created and you will be done.<br />
<br />
If you want xdg-open to handle this, which you need if you are using chrome instead of firefox, (though gnome and other DE might have their own programs overriding xdg-open) you need to create the desktop entry for the rtorrent-magnet script in {{ic|~/.local/share/applications/rtorrent-magnet.desktop}} with the following content:<br />
<br />
<nowiki><br />
[Desktop Entry]<br />
Type=Application<br />
Name=rtorrent-magnet<br />
Exec=rtorrent-magnet %U<br />
MimeType=x-scheme-handler/magnet;<br />
NoDisplay=true</nowiki><br />
<br />
Then all you need to do is to register the mimetype using<br />
$ xdg-mime default rtorrent-magnet.desktop x-scheme-handler/magnet<br />
<br />
== Magnet to Torrent ==<br />
You could also use the {{AUR|magnet2torrent-git}} package which downloads the metadata and creates a torrent file.<br />
<br />
How to use:<br />
$ magnet2torrent <magnet link> [torrent file]<br />
<br />
== rtorrent-pyro ==<br />
<br />
{{AUR|rtorrent-pyro-git}} from the [[AUR]] comes with an extended rtorrent console interface. It does not contain the pyroscope tools yet though. If you also need the pyroscope tools see [[#PyroScope]] .<br />
<br />
Make sure you add following command to ~/.rtorrent.rc, which makes the asterisk key * to a shortcut for toggling between extended and collapsed view within rtorrent's interface:<br />
{{bc|<nowiki>schedule = bind_collapse,0,0,"ui.bind_key=download_list,*,view.collapsed.toggle="</nowiki>}}<br />
<br />
Also set "pyro.extended" to 1 to activate rTorrent-PS features.<br />
{{bc|<nowiki>system.method.insert = pyro.extended, value|const, 1</nowiki>}}<br />
<br />
=== PyroScope ===<br />
<br />
We create a directory for the installation of pyroscope, then download and update the source code from subversion:<br />
{{bc|<nowiki>mkdir -p ~/.lib<br />
svn checkout http://pyroscope.googlecode.com/svn/trunk/ ~/.lib/pyroscope<br />
~/.lib/pyroscope/update-to-head.sh</nowiki>}}<br />
Adding pyroscope bin's PATH to .bashrc:<br />
{{bc|<nowiki>export PATH=$PATH:path_to_the_bin # Example path for pyroscope bin's: /home/user/.lib/pyroscope/bin/</nowiki>}}<br />
Creating the ~/.pyroscope/config.ini:<br />
{{bc|<nowiki>pyroadmin --create-config</nowiki>}}<br />
<br />
Add this to your ~/.rtorrent.rc. Do not forget to add the path of your pyroscope bin's dir (see below).<br />
{{bc|<nowiki>system.method.insert = pyro.bin_dir, string|const, write_here_path_to_your_pyroscope_bin_dir # Example path: /home/user/.lib/pyroscope/bin/<br />
system.method.insert = pyro.rc_dialect, string|const|simple, "execute_capture=bash,-c,\"test $1 = 0.8.6 && echo -n 0.8.6 || echo -n 0.8.9\",dialect,$system.client_version="<br />
system.method.insert = pyro.rtorrent_rc, string|const|private, "$cat=~/.pyroscope/rtorrent-,\"$pyro.rc_dialect=\",.rc.default"<br />
import = $pyro.rtorrent_rc=</nowiki>}}<br />
<br />
Optionally: TORQUE: Daemon watchdog schedule. Must be activated by touching the "~/.pyroscope/run/pyrotorque" file!<br />
You can also just use rtorrent watch dir or give pyro_watchdog a try, which comes with 'treewatch' ability, meaning it also watches for torrents recursively within the given watch path. Further documentation for pyro_watchdog is here: <br />
[http://code.google.com/p/pyroscope/wiki/QueueManager] <br />
To enable pyro_watchdog, add this in ~/.rtorrent.rc and further configurations are in ~/.pyroscope/torque.ini. <br />
{{bc|<nowiki>schedule = pyro_watchdog,30,300,"pyro.watchdog=~/.pyroscope,-v"</nowiki>}}<br />
<br />
Following steps are important. Before using pyroscope tools you have to set the missing "loaded" times to that of the .torrent file. Run this in your terminal:<br />
{{bc|<nowiki>rtcontrol '!*"*' loaded=0 -q -sname -o 'echo "$(name)s"\ntest -f "$(metafile)s" && rtxmlrpc -q d.set_custom $(hash)s tm_loaded \$(\<br />
ls -l --time-style "+%%s" "$(metafile)s" \<br />
| cut -f6 -d" ")\nrtxmlrpc -q d.save_session $(hash)s' | bash</nowiki>}}<br />
<br />
And now set the missing "completed" times to that of the data file or directory:<br />
{{bc|<nowiki>rtcontrol '!*"*' completed=0 done=100 path=\! is_ghost=no -q -sname -o 'echo "$(name)s"\ntest -e "$(realpath)s" && rtxmlrpc -q d.set_custom $(hash)s tm_completed \$(\<br />
ls -ld --time-style "+%%s" "$(realpath)s" \<br />
| cut -f6 -d" ")\nrtxmlrpc -q d.save_session $(hash)s' | bash</nowiki>}}<br />
<br />
Example usage:<br />
Will print out all torrents older than 2 hours:<br />
{{bc|<nowiki>rtcontrol -V completed=+2h -scompleted -ocompleted</nowiki>}}<br />
Deletes all torrents older than 48 hours:<br />
{{bc|<nowiki>rtcontrol -V completed=+48h -scompleted -ocompleted --cull --yes</nowiki>}}<br />
<br />
== See also ==<br />
<br />
* [http://linux.die.net/man/1/rtorrent Manpage for rtorrent]<br />
* [[Screen Tips]]<br />
* [[Wikipedia:Comparison of BitTorrent clients|Comparison of BitTorrent clients]] on Wikipedia<br />
* [http://community.rutorrent.org/ rTorrent Community Wiki] - Public place for information on rTorrent and any project related to rTorrent, regarding setup, configuration, operations, and development.<br />
* [http://code.google.com/p/pyroscope/ PyroScope] - Collection of command line tools for rTorrent. It provides commands for creating and modifying torrent files, moving data on completion without having multiple watch folders, and mass-controlling download items via rTorrent's XML-RPC interface: searching, start/stop, deleting items with or without their data, etc. It also offers a documented [[Python]] API.<br />
* [[Rutorrent with lighttpd|ruTorrent with Lighttpd]]<br />
* [http://wiki.theaveragegeek.com/howto/installing_rtorrent_and_hellanzb_on_centos5_64-bit_vps How-to install rTorrent and Hellanzb on CentOS 5 64-bit VPS]<br />
* [http://code.google.com/p/pyroscope/wiki/DebianInstallFromSource Installation guide for rTorrent and Pyroscope on Debian] - Collection of tools for the BitTorrent protocol and especially the rTorrent client<br />
* [http://mktorrent.sourceforge.net/ mktorrent] - Command line application used to generate torrent files, which is available as {{Pkg|mktorrent}} in the [[official repositories]].<br />
* [https://github.com/kfei/docktorrent docktorrent] - Using Docker, rTorrent and ruTorrent to run a full-featured BitTorrent box.<br />
* [https://github.com/nelhage/reptyr reptyr] - another tool to take over a program's TTY (it is in the standard repos). The process may have started being attached to a terminal or to a socket in tmux, screen or dtach.<br />
* [http://caca.zoy.org/wiki/neercs neercs] - a more screen/tmux like tool than reptyr, but, like reptyr, neercs can also "steal" a process that may have started slaved to a terminal or to a socket in tmux, screen or dtach. {{AUR|neercs-git}}{{Broken package link|{{aur-mirror|neercs-git}}}}<br />
<br />
'''Forum threads'''<br />
* 2009-03-11 - Arch Linux - [https://bbs.archlinux.org/viewtopic.php?id=67304 HOWTO: rTorrent stats in Conky]</div>Ygyfygyhttps://wiki.archlinux.org/index.php?title=RTorrent&diff=428489RTorrent2016-03-29T10:10:29Z<p>Ygyfygy: /* UI Tricks */ Formatting</p>
<hr />
<div>{{DISPLAYTITLE:rTorrent}}<br />
[[Category:Internet applications]]<br />
[[es:RTorrent]]<br />
[[ja:RTorrent]]<br />
[[ru:RTorrent]]<br />
[[zh-CN:RTorrent]]<br />
[https://rakshasa.github.io/rtorrent/ rTorrent] is a quick and efficient BitTorrent client that uses, and is in development alongside, the libTorrent (not to be confused with {{Pkg|libtorrent-rasterbar}}) library. It is written in C++ and uses the [[Wikipedia:ncurses|ncurses]] programming library, which means it uses a text user interface. When combined with a terminal multiplexer (e.g. [[GNU Screen]] or [[Tmux]]) and [[Secure Shell]], it becomes a convenient remote [[Wikipedia:BitTorrent (protocol)#Operation|BitTorrent client]].<br />
<br />
== Installation ==<br />
<br />
[[Install]] the {{Pkg|rtorrent}} package that is available in the [[official repositories]].<br />
<br />
Alternatively, install {{AUR|rtorrent-git}} or {{AUR|rtorrent-vi-color}} or {{AUR|rtorrent-extended}}{{Broken package link|{{aur-mirror|rtorrent-extended}}}} from the [[AUR]].<br />
<br />
== Configuration ==<br />
<br />
{{Note|See the rTorrent wiki article on this subject for more information: [http://web.archive.org/web/20140213003955/http://libtorrent.rakshasa.no/wiki/RTorrentCommonTasks Common Tasks in rTorrent for Dummies].}}<br />
<br />
Before running rTorrent, find the example configuration file {{ic|/usr/share/doc/rtorrent/rtorrent.rc}} and copy it to {{ic|~/.rtorrent.rc}}:<br />
<br />
$ cp /usr/share/doc/rtorrent/rtorrent.rc ~/.rtorrent.rc<br />
<br />
=== Performance ===<br />
<br />
{{Note|See the rTorrent wiki article on this subject for more information: [http://web.archive.org/web/20140213011439/http://libtorrent.rakshasa.no/wiki/RTorrentPerformanceTuning Performance Tuning]}}<br />
<br />
The values for the following options are dependent on the system's hardware and Internet connection speed. To find the optimal values read: [http://torrentfreak.com/optimize-your-BitTorrent-download-speed Optimize Your BitTorrent Download Speed]<br />
{{bc|<nowiki><br />
min_peers = 40<br />
max_peers = 52<br />
<br />
min_peers_seed = 10<br />
max_peers_seed = 52<br />
<br />
max_uploads = 8<br />
<br />
download_rate = 200<br />
upload_rate = 28<br />
</nowiki>}}<br />
<br />
The {{ic|check_hash}} option executes a hash check when a torrent download is complete or rTorrent is started. When starting, it checks for errors in your completed files. <br />
check_hash = yes<br />
<br />
=== Create and manage files ===<br />
<br />
The {{ic|directory}} option will determine where your torrent data will be saved (could be a relative path):<br />
directory = ~/downloaded<br />
<br />
The {{ic|session}} option allows rTorrent to save the progess of your torrents. It is recommended to create a directory in home directory (e.g. {{ic|mkdir ~/.rtorrent.session}}).<br />
session = ~/.rtorrent.session<br />
<br />
The {{ic|schedule}} option has rTorrent watch a particular directory for new torrent files. Saving a torrent file to this directory will automatically start the download. Remember to create the directory that will be watched (e.g. {{ic|mkdir ~/watch}}). Also, be careful when using this option as rTorrent will move the torrent file to your session folder and rename it to its hash value.<br />
schedule = watch_directory,5,5,load_start=/home/''user''/watch/*.torrent<br />
schedule = untied_directory,5,5,stop_untied=<br />
schedule = tied_directory,5,5,start_tied=<br />
<br />
The following {{ic|schedule}} option is intended to stop rTorrent from downloading data when disk space is low.<br />
schedule = low_diskspace,5,60,close_low_diskspace=100M<br />
<br />
=== Port configuration ===<br />
<br />
The {{ic|port_range}} option sets which port(s) to use for listening. It is recommended to use a port that is higher than 49152 (see: [[Wikipedia:List of TCP and UDP port numbers|List of port numbers]]). Although, rTorrent allows a range of ports, a single port is recommended.<br />
port_range = 49164-49164<br />
<br />
Additionally, make sure port forwarding is enabled for the proper port(s) (see: [http://portforward.com/english/routers/port_forwarding/routerindex.htm Port Forward guides]).<br />
<br />
=== Additional settings ===<br />
<br />
The {{ic|encryption}} option enables or disables encryption. It is very important to enable this option, not only for yourself, but also for your peers in the torrent swarm. Some users need to obscure their bandwidth usage from their ISP. And it does not hurt to enable it even if you do not need the added security.<br />
encryption = allow_incoming,try_outgoing,enable_retry<br />
It is also possible to force all connections to use encryption. However, be aware that this stricter rule will reduce your client's availability:<br />
encryption = require,require_RC4,allow_incoming,try_outgoing<br />
<br />
See also [[Wikipedia:BitTorrent Protocol Encryption]].<br />
<br />
This final {{ic|dht}} option enables [[Wikipedia:Distributed hash table|DHT]] support. DHT is common among public trackers and will allow the client to acquire more peers.<br />
{{bc|<nowiki><br />
dht = auto<br />
dht_port = 6881<br />
peer_exchange = yes<br />
</nowiki>}}<br />
<br />
== Key bindings ==<br />
<br />
rTorrent relies exclusively on keyboard shortcuts for user input. A quick reference is available in the table below. A complete guide is available on the rTorrent wiki (see: [https://github.com/rakshasa/rtorrent/wiki/User-Guide rTorrent User Guide]).<br />
<br />
{{Note|Striking {{ic|Ctrl-q}} twice in quick succession will make rTorrent shutdown without waiting to send a stop announce to the connected trackers.}}<br />
<br />
{| class="wikitable"<br />
|-<br />
!width="75" |Cmd<br />
!Action<br />
|-<br />
|Ctrl-q<br />
|Quit application<br />
|-<br />
|Ctrl-s<br />
|Start download. Runs hash first unless already done.<br />
|-<br />
|Ctrl-d<br />
|Stop an active download or remove a stopped download<br />
|-<br />
|Ctrl-k<br />
|Stop and close the files of an active download.<br />
|-<br />
|Ctrl-r<br />
|Initiate hash check of torrent. Starts downloading if file is not available.<br />
|-<br />
|Ctrl-o<br />
|Specify the download directory for a added, but not started torrent.<br />
|-<br />
|Left<br />
|Returns to the previous screen<br />
|-<br />
|Right<br />
|Goes to the next screen<br />
|-<br />
|Backspace<br />
|Adds and starts the specified *.torrent<br />
|-<br />
|Return<br />
|Adds and doesn't start the specified *.torrent<br />
|-<br />
|<nowiki>a|s|d</nowiki><br />
|<nowiki>Increase global upload throttle about 1|5|50 KB/s</nowiki><br />
|-<br />
|<nowiki>A|S|D</nowiki><br />
|<nowiki>Increase global download throttle about 1|5|50 KB/s</nowiki><br />
|-<br />
|<nowiki>z|x|c</nowiki><br />
|<nowiki>Decrease global upload throttle about 1|5|50 KB/s</nowiki><br />
|-<br />
|<nowiki>Z|X|C</nowiki><br />
|<nowiki>Decrease global download throttle about 1|5|50 KB/s</nowiki><br />
|}<br />
<br />
=== Redundant mapping ===<br />
<br />
{{ic|Ctrl-s}} is often used for terminal control to stop screen output while {{ic|Ctrl-q}} is used to start it. These mappings may interfere with rTorrent. Check to see if these terminal options are bound to a mapping:<br />
{{hc|$ stty -a|<nowiki>...<br />
swtch = <undef>; start = ^Q; stop = ^S; susp = ^Z; rprnt = ^R; werase = ^W; lnext = ^V;<br />
...<br />
</nowiki>}}<br />
<br />
To remove the mappings, change the terminal characteristics to undefine the aforementioned special characters (i.e. {{ic|stop}} and {{ic|start}}):<br />
# stty stop undef<br />
# stty start undef<br />
<br />
To remove these mappings automatically at startup you may add the two preceding commands to your {{ic|~/.bashrc}} file.<br />
<br />
== Additional tips ==<br />
<br />
=== systemd service file with tmux or screen ===<br />
<br />
*With tmux (Restart rtorrent if crashed)<br />
{{hc|/etc/systemd/user/rt.service|<nowiki><br />
[Unit]<br />
Description=rTorrent<br />
After=network.target<br />
<br />
[Service]<br />
Type=forking<br />
KillMode=none<br />
ExecStart=/usr/bin/tmux new-session -s rt -n rtorrent -d rtorrent<br />
ExecStop=/usr/bin/bash -c "/usr/bin/tmux send-keys -t rt:rtorrent.0 C-q && while pidof rtorrent > /dev/null; do sleep 0.5; echo rtorrent still running...; done"<br />
WorkingDirectory=%h<br />
Restart=on-failure<br />
<br />
[Install]<br />
WantedBy=default.target<br />
</nowiki>}}<br />
<br />
*With tmux running as user rtorrent (Restart rtorrent if crashed)<br />
{{hc|/etc/systemd/system/rtorrent.service|<nowiki><br />
[Unit]<br />
Description=rTorrent Daemon<br />
After=network.target<br />
<br />
[Service]<br />
Type=forking<br />
KillMode=none<br />
User=rtorrent<br />
ExecStart=/usr/bin/tmux new-session -c /mnt/storage/rtorrent -s rtorrent -n rtorrent -d rtorrent<br />
ExecStop=/usr/bin/bash -c "/usr/bin/tmux send-keys -t rtorrent C-q && while pidof rtorrent > /dev/null; do sleep 0.5; done"<br />
WorkingDirectory=/home/rtorrent/<br />
Restart=on-failure<br />
<br />
[Install]<br />
WantedBy=multi-user.target<br />
</nowiki>}}<br />
<br />
*With screen<br />
<br />
{{hc|/etc/systemd/user/rt.service|<nowiki><br />
[Unit]<br />
Description=rTorrent<br />
After=network.target<br />
<br />
[Service]<br />
Type=forking<br />
KillMode=none<br />
ExecStart=/usr/bin/screen -d -m -fa -S rtorrent /usr/bin/rtorrent<br />
ExecStop=/usr/bin/killall -w -s 2 /usr/bin/rtorrent<br />
WorkingDirectory=%h<br />
<br />
[Install]<br />
WantedBy=default.target<br />
</nowiki>}}<br />
<br />
Start at boot time:<br />
$ systemctl --user enable rt<br />
Start manually:<br />
$ systemctl --user start rt<br />
Stop:<br />
$ systemctl --user stop rt<br />
Attach to rtorrent's session:<br />
tmux attach -t rt<br />
Detach:<br />
Ctrl-b d<br />
<br />
=== systemd service file with dtach ===<br />
<br />
{{Style|Creating multiple rtorrent sessions this way is far from perfect, why don't we just assume for simplicity that there is only one session? This is assumed in [[#systemd service file with tmux or screen]] anyway.}}<br />
<br />
When running dtach from systemd unit, the {{ic|TERM}} environment variable [[systemd/User#Environment_variables|has to be set explicitly]] for rtorrent to work.<br />
<br />
This service file has no restart because the author occasionally takes the drive in question offline, and rtorrent fails, shall we say, "suboptimally" when started in this scenario and loses many torrent specific settings such as the specific directories each torrent is stored in. In fact the symlinks that kick off rtorrent live on the relevant drive; if it is unmounted rtorrent cannot start. This use case of blocking rtorrent from starting is relevant to users who put the downloaded files on removable media such as NAS, USB or eSATA drives.<br />
<br />
{{hc|~/.config/systemd/user/rtorrent.service|<nowiki><br />
[Unit]<br />
Description=rTorrent<br />
#After=network.target<br />
<br />
[Service]<br />
# set TERM according to your terminal<br />
Environment="TERM=xterm"<br />
#Environment="TERM=linux" <br />
Type=forking<br />
KillMode=none<br />
ExecStart=-/usr/bin/dtach -n /home/sam/run/dtach_fifos/fifo -e "^T" /home/sam/bin/rtr_new -n -o import=/home/sam/.config/rtorrent/new_.rc <br />
# dtach -n <separate filename for each instance><br />
# <br />
# rtr_new -n to ignore the default .rtorrent.rc<br />
# rtr_new -o import to load the instance-specific rc<br />
ExecStop=-/usr/bin/killall -u sam -e -w -s INT /home/sam/bin/rtr_new<br />
<br />
[Install]<br />
WantedBy=multi-user.target<br />
</nowiki>}}<br />
<br />
Note some other issues exposed in this service file other than just dtach:<br />
<br />
{{ic|/home/sam/bin/rtr_new}} is a symlink to {{ic|/usr/bin/rtorrent}}<br />
<br />
This lets us run several instances and kill each one independently with a different version of the ExecStop, to wit:<br />
<br />
{{bc|1=ExecStop=-/usr/bin/killall -u sam -e -w -s INT /home/sam/bin/rtr_new<br />
ExecStop=-/usr/bin/killall -u sam -e -w -s INT /home/sam/bin/rtr_academic<br />
ExecStop=-/usr/bin/killall -u sam -e -w -s INT /home/sam/bin/rtr_other_stuff}}<br />
<br />
These are each in a different service file, each of which controls one instance.<br />
<br />
Without this step, when running multiple instances a killall solution would kill all the running rtorrent instances. <br />
<br />
If multiple rtorrent instances are not needed and the rtorrent rc file is in the default location the above service file may be simplified. The entire file is included but only the ExecStart and <br />
ExecStop lines change. <br />
<br />
{{hc|~/.config/systemd/user/rtorrent.service|<nowiki><br />
[Unit]<br />
Description=rTorrent<br />
#After=network.target<br />
<br />
[Service]<br />
# set TERM according to your terminal<br />
Environment="TERM=xterm"<br />
#Environment="TERM=linux" <br />
Type=forking<br />
KillMode=none<br />
ExecStart=-/usr/bin/dtach -n /home/sam/run/dtach_fifos/fifo -e "^T" /usr/bin/rtorrent <br />
# dtach -n <user specified FIFO name> -e <user specified character> /usr/bin/rtorrent <br />
ExecStop=/usr/bin/killall -w -s INT /usr/bin/rtorrent<br />
# -e (exact match) and -u (user name) were added above to stop specific processes<br />
# and may be omitted here because only one rtorrent will be running<br />
<br />
[Install]<br />
WantedBy=multi-user.target<br />
</nowiki>}}<br />
<br />
The service can be controlled with [[systemctl --user]]. When it is started, you can attach to the session:<br />
<br />
$ dtach -a /home/sam/run/dtach_fifos/fifo -e "^T"<br />
<br />
=== Pre-allocation ===<br />
<br />
The rTorrent package in the community repository lacks pre-allocation. Compiling rTorrent with pre-allocation allows files to be allocated before downloading the torrent. The major benefit is that it limits and avoids fragmentation of the filesystem. However, this introduces a delay during the pre-allocation if the filesystem does not support the fallocate syscall natively.<br />
<br />
Therefore this switch is recommended for xfs, ext4 and btrfs filesystems, which have native fallocate syscall support. They will see no delay during preallocation and no fragmented filesystem. Pre-allocation on others filesystems will cause a delay but will not fragment the files.<br />
<br />
To make pre-allocation available, recompile libTorrent from the [[ABS]] tree with the following new switch:<br />
$ ./configure --prefix=/usr --disable-debug --with-posix-fallocate<br />
<br />
To enable it, add the following to your {{ic|~/rtorrent.rc}}:<br />
{{hc|~/rtorrent.rc|<nowiki><br />
# Preallocate files; reduces defragmentation on filesystems.<br />
system.file_allocate.set = yes<br />
</nowiki>}}<br />
<br />
=== Manage completed files ===<br />
<br />
{{Note|<br />
*Currently, this part requires either the git version of rtorrent/libtorrent or having applied the patch to 0.8.6 that adds 'equal'.<br />
* If you are having trouble with this tip, it is probably easier to follow [http://web.archive.org/web/20140213003955/http://libtorrent.rakshasa.no/wiki/RTorrentCommonTasks#Movecompletedtorrentstodifferentdirectorydependingonwatchdirectory this].<br />
}}<br />
<br />
It is possible to have rtorrent sort completed torrent data to specific folders based on which 'watch' folder you drop the *.torrent into while continuing to seed. Many examples show how to do this with torrents downloaded by rtorrent. The problem is when you try to drop in 100% done torrent data and then have rtorrent check the data and resume, it will not be sorted.<br />
<br />
As a solution, use the following example in your {{ic|~/.rtorrent.rc}}.<br />
Make sure to change the paths.<br />
<br />
{{bc|1=<br />
# location where new torrent data is placed, and where you should place your<br />
# 'complete' data before you place your *.torrent file into the watch folder<br />
directory = /home/user/torrents/incomplete<br />
<br />
# schedule a timer event named 'watch_directory_1':<br />
# 1) triggers 10 seconds after rtorrent starts<br />
# 2) triggers at 10 second intervals thereafter<br />
# 3) Upon trigger, attempt to load (and start) new *.torrent files found in /home/user/torrents/watch/<br />
# 4) set a variable named 'custom1' with the value "/home/user/torrents/complete"<br />
# NOTE: if you do not want it to automatically start the torrent, change 'load_start' to 'load'<br />
schedule = watch_directory_1,10,10,"load_start=/home/user/torrents/watch/*.torrent,d.set_custom1=/home/user/torrents/complete"<br />
<br />
# insert a method with the alias 'checkdirs1'<br />
# 1) returns true if the current path of the torrent data is not equal to the value of custom1<br />
# 2) otherwise, returns false<br />
system.method.insert=checkdirs1,simple,"not=\"$equal={d.get_custom1=,d.get_base_path=}\""<br />
<br />
# insert a method with the alias 'movecheck1'<br />
# 1) returns true if all 3 commands return true ('result of checkdirs1' && 'torrent is 100% done', 'custom1 variable is set')<br />
# 2) otherwise, returns false<br />
system.method.insert=movecheck1,simple,"and={checkdirs1=,d.get_complete=,d.get_custom1=}"<br />
<br />
# insert a method with the alias 'movedir1'<br />
# (a series of commands, separated by ';') <br />
# 1) "set path of torrent to equal the value of custom1";<br />
# 2) "mv -u <current data path> <custom1 path>";<br />
# 3) "clear custom1", "stop the torrent","resume the torrent"<br />
# 4) stop the torrent<br />
# 5) start the torrent (to get the torrent to update the 'base path')<br />
system.method.insert=movedir1,simple,"d.set_directory=$d.get_custom1=;execute=mv,-u,$d.get_base_path=,$d.get_custom1=;d.set_custom1=;d.stop=;d.start="<br />
<br />
# set a key with the name 'move_hashed1' that is triggered by the hash_done event.<br />
# 1) When hashing of a torrent completes, this custom key will be triggered.<br />
# 2) when triggered, execute the 'movecheck1' method and check the return value.<br />
# 3) if the 'movecheck' method returns 'true', execute the 'movedir1' method we inserted above.<br />
# NOTE-0: *Only* data that has had their hash checked manually with ^R [^R = Control r].<br />
# Or on a rtorrent restart[which initiates a hash check]. Will the data move; ~/torrents/incomplete => ~/torrents/complete for example.<br />
# NOTE-1: 'branch' is an 'if' conditional statement: if(movecheck1){movedir1}<br />
system.method.set_key=event.download.hash_done,move_hashed1,"branch={$movecheck1=,movedir1=}"<br />
}}<br />
<br />
You can add additional watch folders and rules should you like to sort your torrents into special folders.<br />
<br />
For example, if you would like the torrents to download in:<br />
/home/user/torrents/incomplete<br />
and then sort the torrent data based on which folder you dropped the *.torrent into:<br />
/home/user/torrents/watch => /home/user/torrents/complete<br />
/home/user/torrents/watch/iso => /home/user/torrents/complete/iso<br />
/home/user/torrents/watch/music => /home/user/torrents/complete/music<br />
<br />
You can have the following in your .rtorrent.rc:<br />
{{bc|1=<br />
directory = /home/user/torrents/incomplete<br />
schedule = watch_directory_1,10,10,"load_start=/home/user/torrents/watch/*.torrent,d.set_custom1=/home/user/torrents/complete"<br />
<br />
schedule = watch_directory_2,10,10,"load_start=/home/user/torrents/watch/iso/*.torrent,d.set_custom1=/home/user/torrents/complete/iso"<br />
<br />
schedule = watch_directory_3,10,10,"load_start=/home/user/torrents/watch/music/*.torrent,d.set_custom1=/home/user/torrents/complete/music"<br />
<br />
system.method.insert=checkdirs1,simple,"not=\"$equal={d.get_custom1=,d.get_base_path=}\""<br />
system.method.insert=movecheck1,simple,"and={checkdirs1=,d.get_complete=,d.get_custom1=}"<br />
system.method.insert=movedir1,simple,"d.set_directory=$d.get_custom1=;execute=mv,-u,$d.get_base_path=,$d.get_custom1=;d.set_custom1=;d.stop=;d.start="<br />
system.method.set_key=event.download.hash_done,move_hashed1,"branch={$movecheck1=,movedir1=}"<br />
}}<br />
<br />
Also see [http://code.google.com/p/pyroscope/ pyroscope] especially the rtcontrol examples. There is an AUR package.<br />
<br />
==== Notification with Google Mail ====<br />
<br />
Cell phone providers allow you to "email" your phone:<br />
{{bc|<nowiki><br />
Verizon: 10digitphonenumber@vtext.com<br />
AT&T: 10digitphonenumber@txt.att.net<br />
Former AT&T customers: 10digitphonenumber@mmode.com<br />
Sprint: 10digitphonenumber@messaging.sprintpcs.com<br />
T-Mobile: 10digitphonenumber@tmomail.net<br />
Nextel: 10digitphonenumber@messaging.nextel.com<br />
Cingular: 10digitphonenumber@cingularme.com<br />
Virgin Mobile: 10digitphonenumber@vmobl.com<br />
Alltel: 10digitphonenumber@alltelmessage.com OR<br />
10digitphonenumber@message.alltel.com<br />
CellularOne: 10digitphonenumber@mobile.celloneusa.com<br />
Omnipoint: 10digitphonenumber@omnipointpcs.com<br />
Qwest: 10digitphonenumber@qwestmp.com<br />
Telus: 10digitphonenumber@msg.telus.com<br />
Rogers Wireless: 10digitphonenumber@pcs.rogers.com<br />
Fido: 10digitphonenumber@fido.ca<br />
Bell Mobility: 10digitphonenumber@txt.bell.ca<br />
Koodo Mobile: 10digitphonenumber@msg.koodomobile.com<br />
MTS: 10digitphonenumber@text.mtsmobility.com<br />
President's Choice: 10digitphonenumber@txt.bell.ca<br />
Sasktel: 10digitphonenumber@sms.sasktel.com<br />
Solo: 10digitphonenumber@txt.bell.ca<br />
</nowiki>}}<br />
<br />
*Install mailx which is provided by the {{Pkg|s-nail}} package that is found in the [[official repositories]].<br />
<br />
*Clear the {{ic|/etc/mail.rc}} file and enter:<br />
<br />
{{bc|<nowiki><br />
set sendmail="/usr/bin/mailx"<br />
set smtp=smtp.gmail.com:587<br />
set smtp-use-starttls<br />
set ssl-verify=ignore<br />
set ssl-auth=login<br />
set smtp-auth-user=USERNAME@gmail.com<br />
set smtp-auth-password=PASSWORD<br />
</nowiki>}}<br />
<br />
Now to send the text, we must pipe a message to the mailx program.<br />
*Make a Bash script:<br />
{{hc|/path/to/mail.sh|<nowiki><br />
echo "$@: Done" | mailx 5551234567@vtext.com<br />
</nowiki>}}<br />
Where the $@ is a variable holding all the arguments passed to our script.<br />
<br />
*And finally, add the important {{ic|~/.rtorrent.rc}} line:<br />
system.method.set_key = event.download.finished,notify_me,"execute=/path/to/mail.sh,$d.get_name="<br />
<br />
Breaking it down:<br />
<br />
{{ic|notify_me}} is the command id, which may be used by other commands, it can be just about anything you like, so long as it is unique.<br />
<br />
{{ic|1=execute=}} is the rtorrent command, in this case to execute a shell command.<br />
<br />
{{ic|/path/to/mail.sh}} is the name of our script (or whatever command you want to execute) followed by a comma separated list of all the switches/arguments to be passed.<br />
<br />
{{ic|1=$d.get_name=}} 'd' is an alias to whatever download triggered the command, get_name is a function which returns the name of our download, and the '$' tells rTorrent to replace the command with its output before it calls execute.<br />
<br />
The end result? When that torrent, 'All Live Nudibranches', that we started before leaving for work finishes, we will be texted:<br />
All Live Nudibranches: Done<br />
<br />
=== UI Tricks ===<br />
<br />
Rtorrent does not list the active tab properly by default, add this line to your {{ic|.rtorrent.rc}} to show only active torrents<br />
schedule = filter_active,30,30,"view_filter = active,\"or={d.get_up_rate=,d.get_down_rate=}\""<br />
<br />
Then press {{ic|9}} in your rTorrent client to see the changes in action.<br />
<br />
To sort the seeding view by upload rate and not show torrents without peers:<br />
<br />
# Sort the seeding view by the upload rate and only show torrents with peers<br />
view.sort_current = seeding,greater=d.get_up_rate=<br />
view.filter = seeding,"and=d.get_complete=,d.get_peers_connected="<br />
view.sort_new = seeding,less=d.get_up_rate=<br />
view.sort = seeding<br />
<br />
To sort the complete view by upload rate:<br />
<br />
# Sort the complete view by the upload rate<br />
view.sort_current = complete,greater=d.get_up_rate=<br />
view.filter = seeding,"and=d.get_complete="<br />
view.sort_new = seeding,less=d.get_up_rate=<br />
view.sort = seeding<br />
<br />
=== Manually adding trackers to torrents ===<br />
<br />
# Select torrent to edit from rTorrent console view.<br />
# Hit {{ic|Ctrl+x}}.<br />
# If you had four trackers type following lines one at a time (always press {{ic|Ctrl+x}} first) to add four more for example:<br />
<br />
d.tracker.insert="5","udp://tracker.publicbt.com:80"<br />
d.tracker.insert="6","udp://tracker.openbittorrent.com:80"<br />
d.tracker.insert="7","udp://tracker.istole.it:80"<br />
d.tracker.insert="8","udp://tracker.ccc.de:80"<br />
<br />
== Troubleshooting ==<br />
<br />
=== CA certificates ===<br />
<br />
To use rTorrent with a tracker that uses HTTPS, do the following as root:<br />
<br />
{{bc|<br />
# cd /etc/ssl/certs<br />
<nowiki># wget --no-check-certificate https://www.geotrust.com/resources/root_certificates/certificates/Equifax_Secure_Global_eBusiness_CA-1.cer</nowiki><br />
# mv Equifax_Secure_Global_eBusiness_CA-1.cer Equifax_Secure_Global_eBusiness_CA-1.pem<br />
# c_rehash<br />
}}<br />
<br />
And from now on run rTorrent with:<br />
$ rtorrent -o http_capath=/etc/ssl/certs<br />
<br />
If you use GNU Screen, update the {{ic|.screenrc}} configuration file to reflect this change:<br />
$ screen -t rtorrent rtorrent -o http_capath=/etc/ssl/certs<br />
<br />
In rTorrent 0.8.9, set {{ic|<nowiki>network.http.ssl_verify_peer.set=0</nowiki>}} to [https://bbs.archlinux.org/viewtopic.php?pid=981832#p981832 fix the problem].<br />
<br />
For more information see: [https://bbs.archlinux.org/viewtopic.php?pid=331850 rTorrent Error & CA Certificate] and [https://bbs.archlinux.org/viewtopic.php?id=45800 rTorrent Certificates Problem]<br />
<br />
=== Locked directories ===<br />
<br />
rTorrent can sometimes lock up after a crash or incorrect shutdown, and will complain about a lock file.<br />
<br />
Per the error message, the file called "'''rtorrent.lock'''" can be found within the hidden folder {{ic|.rtorrentsession}} for your download directory and manually removed.<br />
<br />
=== Event failed: bad return code ===<br />
<br />
This is caused by there being spaces in your system.method.* lines. Remove the spaces and it will work.<br />
<br />
== Web interface ==<br />
<br />
There are numerous web interfaces and front ends for rTorrent including:<br />
* [[WTorrent]] is a web interface to rtorrent programmed in php using Smarty templates and XMLRPC for PHP library.<br />
* [http://code.google.com/p/ntorrent/ nTorrent] is a graphical user interface client to rtorrent (a cli torrent client) written in Java.<br />
* [https://rtwi.jmk.hu/ rTWi] is a simple rTorrent web interface written in PHP.<br />
* [[Rtgui]] is a web based front end for rTorrent written in PHP and uses XML-RPC to communicate with the rTorrent client.<br />
* [https://github.com/Novik/ruTorrent rutorrent] and [http://forums.rutorrent.org/ Forum] - A web-based front-end with an interface very similar to uTorrent which supports many plugins and advanced features (see also: [[ruTorrent]] and [https://bbs.archlinux.org/viewtopic.php?pid=897577#p897577 Guide on forum]).<br />
<br />
{{Note|rTorrent is currently built using [http://xmlrpc-c.sourceforge.net/ XML-RPC for C/C++], which is required for some web interfaces (e.g. ruTorrent).}}<br />
<br />
=== XMLRPC interface ===<br />
<br />
If you want to use rtorrent with some web interfaces (e.g. rutorrent) you need to add the following line to the configuration file:<br />
scgi_port = localhost:5000<br />
<br />
For more information see: [https://github.com/rakshasa/rtorrent/wiki/RPC-Setup-XMLRPC Using XMLRPC with rtorrent]<br />
<br />
=== Saving magnet links as torrent files in watch folder ===<br />
<br />
{{Note| Rtorrent natively supports downloading torrents through magnet links. At the main view (reached by starting Rtorrent and pressing 1), press enter. At "load.normal>" paste the magnet link and press enter again. This will start the download.}}<br />
<br />
If you wish to have magnet links automatically added to your watch folder, here is a script that will do the trick:<br />
<br />
<nowiki><br />
#!/bin/bash<br />
watch_folder=~/.rtorrent/watch<br />
cd $watch_folder<br />
[[ "$1" =~ xt=urn:btih:([^&/]+) ]] || exit;<br />
echo "d10:magnet-uri${#1}:${1}e" > "meta-${BASH_REMATCH[1]}.torrent"</nowiki><br />
<br />
(adapted from http://blog.gonzih.org/blog/2012/02/17/how-to-use-magnet-links-with-rtorrent/).<br />
<br />
Save it, for instance as rtorrent-magnet, give it execution permission, and place it somewhere under your $PATH. Then in Firefox:<br />
# Type {{ic|about:config}} into the Location Bar (address bar) and press {{ic|Enter}}.<br />
# Right-click: ''New > Boolean > Name: '''network.protocol-handler.expose.magnet''' > Value > false''.<br />
# Next time you click a magnet link you will be asked which application to open it with. Select the script we just created and you will be done.<br />
<br />
If you want xdg-open to handle this, which you need if you are using chrome instead of firefox, (though gnome and other DE might have their own programs overriding xdg-open) you need to create the desktop entry for the rtorrent-magnet script in {{ic|~/.local/share/applications/rtorrent-magnet.desktop}} with the following content:<br />
<br />
<nowiki><br />
[Desktop Entry]<br />
Type=Application<br />
Name=rtorrent-magnet<br />
Exec=rtorrent-magnet %U<br />
MimeType=x-scheme-handler/magnet;<br />
NoDisplay=true</nowiki><br />
<br />
Then all you need to do is to register the mimetype using<br />
$ xdg-mime default rtorrent-magnet.desktop x-scheme-handler/magnet<br />
<br />
== Magnet to Torrent ==<br />
You could also use the {{AUR|magnet2torrent-git}} package which downloads the metadata and creates a torrent file.<br />
<br />
How to use:<br />
$ magnet2torrent <magnet link> [torrent file]<br />
<br />
== rtorrent-pyro ==<br />
<br />
{{AUR|rtorrent-pyro-git}} from the [[AUR]] comes with an extended rtorrent console interface. It does not contain the pyroscope tools yet though. If you also need the pyroscope tools see [[#PyroScope]] .<br />
<br />
Make sure you add following command to ~/.rtorrent.rc, which makes the asterisk key * to a shortcut for toggling between extended and collapsed view within rtorrent's interface:<br />
{{bc|<nowiki>schedule = bind_collapse,0,0,"ui.bind_key=download_list,*,view.collapsed.toggle="</nowiki>}}<br />
<br />
Also set "pyro.extended" to 1 to activate rTorrent-PS features.<br />
{{bc|<nowiki>system.method.insert = pyro.extended, value|const, 1</nowiki>}}<br />
<br />
=== PyroScope ===<br />
<br />
We create a directory for the installation of pyroscope, then download and update the source code from subversion:<br />
{{bc|<nowiki>mkdir -p ~/.lib<br />
svn checkout http://pyroscope.googlecode.com/svn/trunk/ ~/.lib/pyroscope<br />
~/.lib/pyroscope/update-to-head.sh</nowiki>}}<br />
Adding pyroscope bin's PATH to .bashrc:<br />
{{bc|<nowiki>export PATH=$PATH:path_to_the_bin # Example path for pyroscope bin's: /home/user/.lib/pyroscope/bin/</nowiki>}}<br />
Creating the ~/.pyroscope/config.ini:<br />
{{bc|<nowiki>pyroadmin --create-config</nowiki>}}<br />
<br />
Add this to your ~/.rtorrent.rc. Do not forget to add the path of your pyroscope bin's dir (see below).<br />
{{bc|<nowiki>system.method.insert = pyro.bin_dir, string|const, write_here_path_to_your_pyroscope_bin_dir # Example path: /home/user/.lib/pyroscope/bin/<br />
system.method.insert = pyro.rc_dialect, string|const|simple, "execute_capture=bash,-c,\"test $1 = 0.8.6 && echo -n 0.8.6 || echo -n 0.8.9\",dialect,$system.client_version="<br />
system.method.insert = pyro.rtorrent_rc, string|const|private, "$cat=~/.pyroscope/rtorrent-,\"$pyro.rc_dialect=\",.rc.default"<br />
import = $pyro.rtorrent_rc=</nowiki>}}<br />
<br />
Optionally: TORQUE: Daemon watchdog schedule. Must be activated by touching the "~/.pyroscope/run/pyrotorque" file!<br />
You can also just use rtorrent watch dir or give pyro_watchdog a try, which comes with 'treewatch' ability, meaning it also watches for torrents recursively within the given watch path. Further documentation for pyro_watchdog is here: <br />
[http://code.google.com/p/pyroscope/wiki/QueueManager] <br />
To enable pyro_watchdog, add this in ~/.rtorrent.rc and further configurations are in ~/.pyroscope/torque.ini. <br />
{{bc|<nowiki>schedule = pyro_watchdog,30,300,"pyro.watchdog=~/.pyroscope,-v"</nowiki>}}<br />
<br />
Following steps are important. Before using pyroscope tools you have to set the missing "loaded" times to that of the .torrent file. Run this in your terminal:<br />
{{bc|<nowiki>rtcontrol '!*"*' loaded=0 -q -sname -o 'echo "$(name)s"\ntest -f "$(metafile)s" && rtxmlrpc -q d.set_custom $(hash)s tm_loaded \$(\<br />
ls -l --time-style "+%%s" "$(metafile)s" \<br />
| cut -f6 -d" ")\nrtxmlrpc -q d.save_session $(hash)s' | bash</nowiki>}}<br />
<br />
And now set the missing "completed" times to that of the data file or directory:<br />
{{bc|<nowiki>rtcontrol '!*"*' completed=0 done=100 path=\! is_ghost=no -q -sname -o 'echo "$(name)s"\ntest -e "$(realpath)s" && rtxmlrpc -q d.set_custom $(hash)s tm_completed \$(\<br />
ls -ld --time-style "+%%s" "$(realpath)s" \<br />
| cut -f6 -d" ")\nrtxmlrpc -q d.save_session $(hash)s' | bash</nowiki>}}<br />
<br />
Example usage:<br />
Will print out all torrents older than 2 hours:<br />
{{bc|<nowiki>rtcontrol -V completed=+2h -scompleted -ocompleted</nowiki>}}<br />
Deletes all torrents older than 48 hours:<br />
{{bc|<nowiki>rtcontrol -V completed=+48h -scompleted -ocompleted --cull --yes</nowiki>}}<br />
<br />
== See also ==<br />
<br />
* [[Screen Tips]]<br />
* [[Wikipedia:Comparison of BitTorrent clients|Comparison of BitTorrent clients]] on Wikipedia<br />
* [http://community.rutorrent.org/ rTorrent Community Wiki] - Public place for information on rTorrent and any project related to rTorrent, regarding setup, configuration, operations, and development.<br />
* [http://code.google.com/p/pyroscope/ PyroScope] - Collection of command line tools for rTorrent. It provides commands for creating and modifying torrent files, moving data on completion without having multiple watch folders, and mass-controlling download items via rTorrent's XML-RPC interface: searching, start/stop, deleting items with or without their data, etc. It also offers a documented [[Python]] API.<br />
* [[Rutorrent with lighttpd|ruTorrent with Lighttpd]]<br />
* [http://wiki.theaveragegeek.com/howto/installing_rtorrent_and_hellanzb_on_centos5_64-bit_vps How-to install rTorrent and Hellanzb on CentOS 5 64-bit VPS]<br />
* [http://code.google.com/p/pyroscope/wiki/DebianInstallFromSource Installation guide for rTorrent and Pyroscope on Debian] - Collection of tools for the BitTorrent protocol and especially the rTorrent client<br />
* [http://mktorrent.sourceforge.net/ mktorrent] - Command line application used to generate torrent files, which is available as {{Pkg|mktorrent}} in the [[official repositories]].<br />
* [https://github.com/kfei/docktorrent docktorrent] - Using Docker, rTorrent and ruTorrent to run a full-featured BitTorrent box.<br />
* [https://github.com/nelhage/reptyr reptyr] - another tool to take over a program's TTY (it is in the standard repos). The process may have started being attached to a terminal or to a socket in tmux, screen or dtach.<br />
* [http://caca.zoy.org/wiki/neercs neercs] - a more screen/tmux like tool than reptyr, but, like reptyr, neercs can also "steal" a process that may have started slaved to a terminal or to a socket in tmux, screen or dtach. {{AUR|neercs-git}}{{Broken package link|{{aur-mirror|neercs-git}}}}<br />
<br />
'''Forum threads'''<br />
* 2009-03-11 - Arch Linux - [https://bbs.archlinux.org/viewtopic.php?id=67304 HOWTO: rTorrent stats in Conky]</div>Ygyfygyhttps://wiki.archlinux.org/index.php?title=RTorrent&diff=428488RTorrent2016-03-29T10:09:50Z<p>Ygyfygy: /* Displaying active torrents */ Renamed to UI tricks and added a few UI tricks.</p>
<hr />
<div>{{DISPLAYTITLE:rTorrent}}<br />
[[Category:Internet applications]]<br />
[[es:RTorrent]]<br />
[[ja:RTorrent]]<br />
[[ru:RTorrent]]<br />
[[zh-CN:RTorrent]]<br />
[https://rakshasa.github.io/rtorrent/ rTorrent] is a quick and efficient BitTorrent client that uses, and is in development alongside, the libTorrent (not to be confused with {{Pkg|libtorrent-rasterbar}}) library. It is written in C++ and uses the [[Wikipedia:ncurses|ncurses]] programming library, which means it uses a text user interface. When combined with a terminal multiplexer (e.g. [[GNU Screen]] or [[Tmux]]) and [[Secure Shell]], it becomes a convenient remote [[Wikipedia:BitTorrent (protocol)#Operation|BitTorrent client]].<br />
<br />
== Installation ==<br />
<br />
[[Install]] the {{Pkg|rtorrent}} package that is available in the [[official repositories]].<br />
<br />
Alternatively, install {{AUR|rtorrent-git}} or {{AUR|rtorrent-vi-color}} or {{AUR|rtorrent-extended}}{{Broken package link|{{aur-mirror|rtorrent-extended}}}} from the [[AUR]].<br />
<br />
== Configuration ==<br />
<br />
{{Note|See the rTorrent wiki article on this subject for more information: [http://web.archive.org/web/20140213003955/http://libtorrent.rakshasa.no/wiki/RTorrentCommonTasks Common Tasks in rTorrent for Dummies].}}<br />
<br />
Before running rTorrent, find the example configuration file {{ic|/usr/share/doc/rtorrent/rtorrent.rc}} and copy it to {{ic|~/.rtorrent.rc}}:<br />
<br />
$ cp /usr/share/doc/rtorrent/rtorrent.rc ~/.rtorrent.rc<br />
<br />
=== Performance ===<br />
<br />
{{Note|See the rTorrent wiki article on this subject for more information: [http://web.archive.org/web/20140213011439/http://libtorrent.rakshasa.no/wiki/RTorrentPerformanceTuning Performance Tuning]}}<br />
<br />
The values for the following options are dependent on the system's hardware and Internet connection speed. To find the optimal values read: [http://torrentfreak.com/optimize-your-BitTorrent-download-speed Optimize Your BitTorrent Download Speed]<br />
{{bc|<nowiki><br />
min_peers = 40<br />
max_peers = 52<br />
<br />
min_peers_seed = 10<br />
max_peers_seed = 52<br />
<br />
max_uploads = 8<br />
<br />
download_rate = 200<br />
upload_rate = 28<br />
</nowiki>}}<br />
<br />
The {{ic|check_hash}} option executes a hash check when a torrent download is complete or rTorrent is started. When starting, it checks for errors in your completed files. <br />
check_hash = yes<br />
<br />
=== Create and manage files ===<br />
<br />
The {{ic|directory}} option will determine where your torrent data will be saved (could be a relative path):<br />
directory = ~/downloaded<br />
<br />
The {{ic|session}} option allows rTorrent to save the progess of your torrents. It is recommended to create a directory in home directory (e.g. {{ic|mkdir ~/.rtorrent.session}}).<br />
session = ~/.rtorrent.session<br />
<br />
The {{ic|schedule}} option has rTorrent watch a particular directory for new torrent files. Saving a torrent file to this directory will automatically start the download. Remember to create the directory that will be watched (e.g. {{ic|mkdir ~/watch}}). Also, be careful when using this option as rTorrent will move the torrent file to your session folder and rename it to its hash value.<br />
schedule = watch_directory,5,5,load_start=/home/''user''/watch/*.torrent<br />
schedule = untied_directory,5,5,stop_untied=<br />
schedule = tied_directory,5,5,start_tied=<br />
<br />
The following {{ic|schedule}} option is intended to stop rTorrent from downloading data when disk space is low.<br />
schedule = low_diskspace,5,60,close_low_diskspace=100M<br />
<br />
=== Port configuration ===<br />
<br />
The {{ic|port_range}} option sets which port(s) to use for listening. It is recommended to use a port that is higher than 49152 (see: [[Wikipedia:List of TCP and UDP port numbers|List of port numbers]]). Although, rTorrent allows a range of ports, a single port is recommended.<br />
port_range = 49164-49164<br />
<br />
Additionally, make sure port forwarding is enabled for the proper port(s) (see: [http://portforward.com/english/routers/port_forwarding/routerindex.htm Port Forward guides]).<br />
<br />
=== Additional settings ===<br />
<br />
The {{ic|encryption}} option enables or disables encryption. It is very important to enable this option, not only for yourself, but also for your peers in the torrent swarm. Some users need to obscure their bandwidth usage from their ISP. And it does not hurt to enable it even if you do not need the added security.<br />
encryption = allow_incoming,try_outgoing,enable_retry<br />
It is also possible to force all connections to use encryption. However, be aware that this stricter rule will reduce your client's availability:<br />
encryption = require,require_RC4,allow_incoming,try_outgoing<br />
<br />
See also [[Wikipedia:BitTorrent Protocol Encryption]].<br />
<br />
This final {{ic|dht}} option enables [[Wikipedia:Distributed hash table|DHT]] support. DHT is common among public trackers and will allow the client to acquire more peers.<br />
{{bc|<nowiki><br />
dht = auto<br />
dht_port = 6881<br />
peer_exchange = yes<br />
</nowiki>}}<br />
<br />
== Key bindings ==<br />
<br />
rTorrent relies exclusively on keyboard shortcuts for user input. A quick reference is available in the table below. A complete guide is available on the rTorrent wiki (see: [https://github.com/rakshasa/rtorrent/wiki/User-Guide rTorrent User Guide]).<br />
<br />
{{Note|Striking {{ic|Ctrl-q}} twice in quick succession will make rTorrent shutdown without waiting to send a stop announce to the connected trackers.}}<br />
<br />
{| class="wikitable"<br />
|-<br />
!width="75" |Cmd<br />
!Action<br />
|-<br />
|Ctrl-q<br />
|Quit application<br />
|-<br />
|Ctrl-s<br />
|Start download. Runs hash first unless already done.<br />
|-<br />
|Ctrl-d<br />
|Stop an active download or remove a stopped download<br />
|-<br />
|Ctrl-k<br />
|Stop and close the files of an active download.<br />
|-<br />
|Ctrl-r<br />
|Initiate hash check of torrent. Starts downloading if file is not available.<br />
|-<br />
|Ctrl-o<br />
|Specify the download directory for a added, but not started torrent.<br />
|-<br />
|Left<br />
|Returns to the previous screen<br />
|-<br />
|Right<br />
|Goes to the next screen<br />
|-<br />
|Backspace<br />
|Adds and starts the specified *.torrent<br />
|-<br />
|Return<br />
|Adds and doesn't start the specified *.torrent<br />
|-<br />
|<nowiki>a|s|d</nowiki><br />
|<nowiki>Increase global upload throttle about 1|5|50 KB/s</nowiki><br />
|-<br />
|<nowiki>A|S|D</nowiki><br />
|<nowiki>Increase global download throttle about 1|5|50 KB/s</nowiki><br />
|-<br />
|<nowiki>z|x|c</nowiki><br />
|<nowiki>Decrease global upload throttle about 1|5|50 KB/s</nowiki><br />
|-<br />
|<nowiki>Z|X|C</nowiki><br />
|<nowiki>Decrease global download throttle about 1|5|50 KB/s</nowiki><br />
|}<br />
<br />
=== Redundant mapping ===<br />
<br />
{{ic|Ctrl-s}} is often used for terminal control to stop screen output while {{ic|Ctrl-q}} is used to start it. These mappings may interfere with rTorrent. Check to see if these terminal options are bound to a mapping:<br />
{{hc|$ stty -a|<nowiki>...<br />
swtch = <undef>; start = ^Q; stop = ^S; susp = ^Z; rprnt = ^R; werase = ^W; lnext = ^V;<br />
...<br />
</nowiki>}}<br />
<br />
To remove the mappings, change the terminal characteristics to undefine the aforementioned special characters (i.e. {{ic|stop}} and {{ic|start}}):<br />
# stty stop undef<br />
# stty start undef<br />
<br />
To remove these mappings automatically at startup you may add the two preceding commands to your {{ic|~/.bashrc}} file.<br />
<br />
== Additional tips ==<br />
<br />
=== systemd service file with tmux or screen ===<br />
<br />
*With tmux (Restart rtorrent if crashed)<br />
{{hc|/etc/systemd/user/rt.service|<nowiki><br />
[Unit]<br />
Description=rTorrent<br />
After=network.target<br />
<br />
[Service]<br />
Type=forking<br />
KillMode=none<br />
ExecStart=/usr/bin/tmux new-session -s rt -n rtorrent -d rtorrent<br />
ExecStop=/usr/bin/bash -c "/usr/bin/tmux send-keys -t rt:rtorrent.0 C-q && while pidof rtorrent > /dev/null; do sleep 0.5; echo rtorrent still running...; done"<br />
WorkingDirectory=%h<br />
Restart=on-failure<br />
<br />
[Install]<br />
WantedBy=default.target<br />
</nowiki>}}<br />
<br />
*With tmux running as user rtorrent (Restart rtorrent if crashed)<br />
{{hc|/etc/systemd/system/rtorrent.service|<nowiki><br />
[Unit]<br />
Description=rTorrent Daemon<br />
After=network.target<br />
<br />
[Service]<br />
Type=forking<br />
KillMode=none<br />
User=rtorrent<br />
ExecStart=/usr/bin/tmux new-session -c /mnt/storage/rtorrent -s rtorrent -n rtorrent -d rtorrent<br />
ExecStop=/usr/bin/bash -c "/usr/bin/tmux send-keys -t rtorrent C-q && while pidof rtorrent > /dev/null; do sleep 0.5; done"<br />
WorkingDirectory=/home/rtorrent/<br />
Restart=on-failure<br />
<br />
[Install]<br />
WantedBy=multi-user.target<br />
</nowiki>}}<br />
<br />
*With screen<br />
<br />
{{hc|/etc/systemd/user/rt.service|<nowiki><br />
[Unit]<br />
Description=rTorrent<br />
After=network.target<br />
<br />
[Service]<br />
Type=forking<br />
KillMode=none<br />
ExecStart=/usr/bin/screen -d -m -fa -S rtorrent /usr/bin/rtorrent<br />
ExecStop=/usr/bin/killall -w -s 2 /usr/bin/rtorrent<br />
WorkingDirectory=%h<br />
<br />
[Install]<br />
WantedBy=default.target<br />
</nowiki>}}<br />
<br />
Start at boot time:<br />
$ systemctl --user enable rt<br />
Start manually:<br />
$ systemctl --user start rt<br />
Stop:<br />
$ systemctl --user stop rt<br />
Attach to rtorrent's session:<br />
tmux attach -t rt<br />
Detach:<br />
Ctrl-b d<br />
<br />
=== systemd service file with dtach ===<br />
<br />
{{Style|Creating multiple rtorrent sessions this way is far from perfect, why don't we just assume for simplicity that there is only one session? This is assumed in [[#systemd service file with tmux or screen]] anyway.}}<br />
<br />
When running dtach from systemd unit, the {{ic|TERM}} environment variable [[systemd/User#Environment_variables|has to be set explicitly]] for rtorrent to work.<br />
<br />
This service file has no restart because the author occasionally takes the drive in question offline, and rtorrent fails, shall we say, "suboptimally" when started in this scenario and loses many torrent specific settings such as the specific directories each torrent is stored in. In fact the symlinks that kick off rtorrent live on the relevant drive; if it is unmounted rtorrent cannot start. This use case of blocking rtorrent from starting is relevant to users who put the downloaded files on removable media such as NAS, USB or eSATA drives.<br />
<br />
{{hc|~/.config/systemd/user/rtorrent.service|<nowiki><br />
[Unit]<br />
Description=rTorrent<br />
#After=network.target<br />
<br />
[Service]<br />
# set TERM according to your terminal<br />
Environment="TERM=xterm"<br />
#Environment="TERM=linux" <br />
Type=forking<br />
KillMode=none<br />
ExecStart=-/usr/bin/dtach -n /home/sam/run/dtach_fifos/fifo -e "^T" /home/sam/bin/rtr_new -n -o import=/home/sam/.config/rtorrent/new_.rc <br />
# dtach -n <separate filename for each instance><br />
# <br />
# rtr_new -n to ignore the default .rtorrent.rc<br />
# rtr_new -o import to load the instance-specific rc<br />
ExecStop=-/usr/bin/killall -u sam -e -w -s INT /home/sam/bin/rtr_new<br />
<br />
[Install]<br />
WantedBy=multi-user.target<br />
</nowiki>}}<br />
<br />
Note some other issues exposed in this service file other than just dtach:<br />
<br />
{{ic|/home/sam/bin/rtr_new}} is a symlink to {{ic|/usr/bin/rtorrent}}<br />
<br />
This lets us run several instances and kill each one independently with a different version of the ExecStop, to wit:<br />
<br />
{{bc|1=ExecStop=-/usr/bin/killall -u sam -e -w -s INT /home/sam/bin/rtr_new<br />
ExecStop=-/usr/bin/killall -u sam -e -w -s INT /home/sam/bin/rtr_academic<br />
ExecStop=-/usr/bin/killall -u sam -e -w -s INT /home/sam/bin/rtr_other_stuff}}<br />
<br />
These are each in a different service file, each of which controls one instance.<br />
<br />
Without this step, when running multiple instances a killall solution would kill all the running rtorrent instances. <br />
<br />
If multiple rtorrent instances are not needed and the rtorrent rc file is in the default location the above service file may be simplified. The entire file is included but only the ExecStart and <br />
ExecStop lines change. <br />
<br />
{{hc|~/.config/systemd/user/rtorrent.service|<nowiki><br />
[Unit]<br />
Description=rTorrent<br />
#After=network.target<br />
<br />
[Service]<br />
# set TERM according to your terminal<br />
Environment="TERM=xterm"<br />
#Environment="TERM=linux" <br />
Type=forking<br />
KillMode=none<br />
ExecStart=-/usr/bin/dtach -n /home/sam/run/dtach_fifos/fifo -e "^T" /usr/bin/rtorrent <br />
# dtach -n <user specified FIFO name> -e <user specified character> /usr/bin/rtorrent <br />
ExecStop=/usr/bin/killall -w -s INT /usr/bin/rtorrent<br />
# -e (exact match) and -u (user name) were added above to stop specific processes<br />
# and may be omitted here because only one rtorrent will be running<br />
<br />
[Install]<br />
WantedBy=multi-user.target<br />
</nowiki>}}<br />
<br />
The service can be controlled with [[systemctl --user]]. When it is started, you can attach to the session:<br />
<br />
$ dtach -a /home/sam/run/dtach_fifos/fifo -e "^T"<br />
<br />
=== Pre-allocation ===<br />
<br />
The rTorrent package in the community repository lacks pre-allocation. Compiling rTorrent with pre-allocation allows files to be allocated before downloading the torrent. The major benefit is that it limits and avoids fragmentation of the filesystem. However, this introduces a delay during the pre-allocation if the filesystem does not support the fallocate syscall natively.<br />
<br />
Therefore this switch is recommended for xfs, ext4 and btrfs filesystems, which have native fallocate syscall support. They will see no delay during preallocation and no fragmented filesystem. Pre-allocation on others filesystems will cause a delay but will not fragment the files.<br />
<br />
To make pre-allocation available, recompile libTorrent from the [[ABS]] tree with the following new switch:<br />
$ ./configure --prefix=/usr --disable-debug --with-posix-fallocate<br />
<br />
To enable it, add the following to your {{ic|~/rtorrent.rc}}:<br />
{{hc|~/rtorrent.rc|<nowiki><br />
# Preallocate files; reduces defragmentation on filesystems.<br />
system.file_allocate.set = yes<br />
</nowiki>}}<br />
<br />
=== Manage completed files ===<br />
<br />
{{Note|<br />
*Currently, this part requires either the git version of rtorrent/libtorrent or having applied the patch to 0.8.6 that adds 'equal'.<br />
* If you are having trouble with this tip, it is probably easier to follow [http://web.archive.org/web/20140213003955/http://libtorrent.rakshasa.no/wiki/RTorrentCommonTasks#Movecompletedtorrentstodifferentdirectorydependingonwatchdirectory this].<br />
}}<br />
<br />
It is possible to have rtorrent sort completed torrent data to specific folders based on which 'watch' folder you drop the *.torrent into while continuing to seed. Many examples show how to do this with torrents downloaded by rtorrent. The problem is when you try to drop in 100% done torrent data and then have rtorrent check the data and resume, it will not be sorted.<br />
<br />
As a solution, use the following example in your {{ic|~/.rtorrent.rc}}.<br />
Make sure to change the paths.<br />
<br />
{{bc|1=<br />
# location where new torrent data is placed, and where you should place your<br />
# 'complete' data before you place your *.torrent file into the watch folder<br />
directory = /home/user/torrents/incomplete<br />
<br />
# schedule a timer event named 'watch_directory_1':<br />
# 1) triggers 10 seconds after rtorrent starts<br />
# 2) triggers at 10 second intervals thereafter<br />
# 3) Upon trigger, attempt to load (and start) new *.torrent files found in /home/user/torrents/watch/<br />
# 4) set a variable named 'custom1' with the value "/home/user/torrents/complete"<br />
# NOTE: if you do not want it to automatically start the torrent, change 'load_start' to 'load'<br />
schedule = watch_directory_1,10,10,"load_start=/home/user/torrents/watch/*.torrent,d.set_custom1=/home/user/torrents/complete"<br />
<br />
# insert a method with the alias 'checkdirs1'<br />
# 1) returns true if the current path of the torrent data is not equal to the value of custom1<br />
# 2) otherwise, returns false<br />
system.method.insert=checkdirs1,simple,"not=\"$equal={d.get_custom1=,d.get_base_path=}\""<br />
<br />
# insert a method with the alias 'movecheck1'<br />
# 1) returns true if all 3 commands return true ('result of checkdirs1' && 'torrent is 100% done', 'custom1 variable is set')<br />
# 2) otherwise, returns false<br />
system.method.insert=movecheck1,simple,"and={checkdirs1=,d.get_complete=,d.get_custom1=}"<br />
<br />
# insert a method with the alias 'movedir1'<br />
# (a series of commands, separated by ';') <br />
# 1) "set path of torrent to equal the value of custom1";<br />
# 2) "mv -u <current data path> <custom1 path>";<br />
# 3) "clear custom1", "stop the torrent","resume the torrent"<br />
# 4) stop the torrent<br />
# 5) start the torrent (to get the torrent to update the 'base path')<br />
system.method.insert=movedir1,simple,"d.set_directory=$d.get_custom1=;execute=mv,-u,$d.get_base_path=,$d.get_custom1=;d.set_custom1=;d.stop=;d.start="<br />
<br />
# set a key with the name 'move_hashed1' that is triggered by the hash_done event.<br />
# 1) When hashing of a torrent completes, this custom key will be triggered.<br />
# 2) when triggered, execute the 'movecheck1' method and check the return value.<br />
# 3) if the 'movecheck' method returns 'true', execute the 'movedir1' method we inserted above.<br />
# NOTE-0: *Only* data that has had their hash checked manually with ^R [^R = Control r].<br />
# Or on a rtorrent restart[which initiates a hash check]. Will the data move; ~/torrents/incomplete => ~/torrents/complete for example.<br />
# NOTE-1: 'branch' is an 'if' conditional statement: if(movecheck1){movedir1}<br />
system.method.set_key=event.download.hash_done,move_hashed1,"branch={$movecheck1=,movedir1=}"<br />
}}<br />
<br />
You can add additional watch folders and rules should you like to sort your torrents into special folders.<br />
<br />
For example, if you would like the torrents to download in:<br />
/home/user/torrents/incomplete<br />
and then sort the torrent data based on which folder you dropped the *.torrent into:<br />
/home/user/torrents/watch => /home/user/torrents/complete<br />
/home/user/torrents/watch/iso => /home/user/torrents/complete/iso<br />
/home/user/torrents/watch/music => /home/user/torrents/complete/music<br />
<br />
You can have the following in your .rtorrent.rc:<br />
{{bc|1=<br />
directory = /home/user/torrents/incomplete<br />
schedule = watch_directory_1,10,10,"load_start=/home/user/torrents/watch/*.torrent,d.set_custom1=/home/user/torrents/complete"<br />
<br />
schedule = watch_directory_2,10,10,"load_start=/home/user/torrents/watch/iso/*.torrent,d.set_custom1=/home/user/torrents/complete/iso"<br />
<br />
schedule = watch_directory_3,10,10,"load_start=/home/user/torrents/watch/music/*.torrent,d.set_custom1=/home/user/torrents/complete/music"<br />
<br />
system.method.insert=checkdirs1,simple,"not=\"$equal={d.get_custom1=,d.get_base_path=}\""<br />
system.method.insert=movecheck1,simple,"and={checkdirs1=,d.get_complete=,d.get_custom1=}"<br />
system.method.insert=movedir1,simple,"d.set_directory=$d.get_custom1=;execute=mv,-u,$d.get_base_path=,$d.get_custom1=;d.set_custom1=;d.stop=;d.start="<br />
system.method.set_key=event.download.hash_done,move_hashed1,"branch={$movecheck1=,movedir1=}"<br />
}}<br />
<br />
Also see [http://code.google.com/p/pyroscope/ pyroscope] especially the rtcontrol examples. There is an AUR package.<br />
<br />
==== Notification with Google Mail ====<br />
<br />
Cell phone providers allow you to "email" your phone:<br />
{{bc|<nowiki><br />
Verizon: 10digitphonenumber@vtext.com<br />
AT&T: 10digitphonenumber@txt.att.net<br />
Former AT&T customers: 10digitphonenumber@mmode.com<br />
Sprint: 10digitphonenumber@messaging.sprintpcs.com<br />
T-Mobile: 10digitphonenumber@tmomail.net<br />
Nextel: 10digitphonenumber@messaging.nextel.com<br />
Cingular: 10digitphonenumber@cingularme.com<br />
Virgin Mobile: 10digitphonenumber@vmobl.com<br />
Alltel: 10digitphonenumber@alltelmessage.com OR<br />
10digitphonenumber@message.alltel.com<br />
CellularOne: 10digitphonenumber@mobile.celloneusa.com<br />
Omnipoint: 10digitphonenumber@omnipointpcs.com<br />
Qwest: 10digitphonenumber@qwestmp.com<br />
Telus: 10digitphonenumber@msg.telus.com<br />
Rogers Wireless: 10digitphonenumber@pcs.rogers.com<br />
Fido: 10digitphonenumber@fido.ca<br />
Bell Mobility: 10digitphonenumber@txt.bell.ca<br />
Koodo Mobile: 10digitphonenumber@msg.koodomobile.com<br />
MTS: 10digitphonenumber@text.mtsmobility.com<br />
President's Choice: 10digitphonenumber@txt.bell.ca<br />
Sasktel: 10digitphonenumber@sms.sasktel.com<br />
Solo: 10digitphonenumber@txt.bell.ca<br />
</nowiki>}}<br />
<br />
*Install mailx which is provided by the {{Pkg|s-nail}} package that is found in the [[official repositories]].<br />
<br />
*Clear the {{ic|/etc/mail.rc}} file and enter:<br />
<br />
{{bc|<nowiki><br />
set sendmail="/usr/bin/mailx"<br />
set smtp=smtp.gmail.com:587<br />
set smtp-use-starttls<br />
set ssl-verify=ignore<br />
set ssl-auth=login<br />
set smtp-auth-user=USERNAME@gmail.com<br />
set smtp-auth-password=PASSWORD<br />
</nowiki>}}<br />
<br />
Now to send the text, we must pipe a message to the mailx program.<br />
*Make a Bash script:<br />
{{hc|/path/to/mail.sh|<nowiki><br />
echo "$@: Done" | mailx 5551234567@vtext.com<br />
</nowiki>}}<br />
Where the $@ is a variable holding all the arguments passed to our script.<br />
<br />
*And finally, add the important {{ic|~/.rtorrent.rc}} line:<br />
system.method.set_key = event.download.finished,notify_me,"execute=/path/to/mail.sh,$d.get_name="<br />
<br />
Breaking it down:<br />
<br />
{{ic|notify_me}} is the command id, which may be used by other commands, it can be just about anything you like, so long as it is unique.<br />
<br />
{{ic|1=execute=}} is the rtorrent command, in this case to execute a shell command.<br />
<br />
{{ic|/path/to/mail.sh}} is the name of our script (or whatever command you want to execute) followed by a comma separated list of all the switches/arguments to be passed.<br />
<br />
{{ic|1=$d.get_name=}} 'd' is an alias to whatever download triggered the command, get_name is a function which returns the name of our download, and the '$' tells rTorrent to replace the command with its output before it calls execute.<br />
<br />
The end result? When that torrent, 'All Live Nudibranches', that we started before leaving for work finishes, we will be texted:<br />
All Live Nudibranches: Done<br />
<br />
=== UI Tricks ===<br />
<br />
Rtorrent does not list the active tab properly by default, add this line to your {{ic|.rtorrent.rc}} to show only active torrents<br />
schedule = filter_active,30,30,"view_filter = active,\"or={d.get_up_rate=,d.get_down_rate=}\""<br />
<br />
Then press {{ic|9}} in your rTorrent client to see the changes in action.<br />
<br />
<br />
To sort the seeding view by upload rate and not show torrents without peers:<br />
<br />
# Sort the seeding view by the upload rate and only show torrents with peers<br />
view.sort_current = seeding,greater=d.get_up_rate=<br />
view.filter = seeding,"and=d.get_complete=,d.get_peers_connected="<br />
view.sort_new = seeding,less=d.get_up_rate=<br />
view.sort = seeding<br />
<br />
To sort the complete view by upload rate:<br />
<br />
# Sort the complete view by the upload rate<br />
view.sort_current = complete,greater=d.get_up_rate=<br />
view.filter = seeding,"and=d.get_complete="<br />
view.sort_new = seeding,less=d.get_up_rate=<br />
view.sort = seeding<br />
<br />
=== Manually adding trackers to torrents ===<br />
<br />
# Select torrent to edit from rTorrent console view.<br />
# Hit {{ic|Ctrl+x}}.<br />
# If you had four trackers type following lines one at a time (always press {{ic|Ctrl+x}} first) to add four more for example:<br />
<br />
d.tracker.insert="5","udp://tracker.publicbt.com:80"<br />
d.tracker.insert="6","udp://tracker.openbittorrent.com:80"<br />
d.tracker.insert="7","udp://tracker.istole.it:80"<br />
d.tracker.insert="8","udp://tracker.ccc.de:80"<br />
<br />
== Troubleshooting ==<br />
<br />
=== CA certificates ===<br />
<br />
To use rTorrent with a tracker that uses HTTPS, do the following as root:<br />
<br />
{{bc|<br />
# cd /etc/ssl/certs<br />
<nowiki># wget --no-check-certificate https://www.geotrust.com/resources/root_certificates/certificates/Equifax_Secure_Global_eBusiness_CA-1.cer</nowiki><br />
# mv Equifax_Secure_Global_eBusiness_CA-1.cer Equifax_Secure_Global_eBusiness_CA-1.pem<br />
# c_rehash<br />
}}<br />
<br />
And from now on run rTorrent with:<br />
$ rtorrent -o http_capath=/etc/ssl/certs<br />
<br />
If you use GNU Screen, update the {{ic|.screenrc}} configuration file to reflect this change:<br />
$ screen -t rtorrent rtorrent -o http_capath=/etc/ssl/certs<br />
<br />
In rTorrent 0.8.9, set {{ic|<nowiki>network.http.ssl_verify_peer.set=0</nowiki>}} to [https://bbs.archlinux.org/viewtopic.php?pid=981832#p981832 fix the problem].<br />
<br />
For more information see: [https://bbs.archlinux.org/viewtopic.php?pid=331850 rTorrent Error & CA Certificate] and [https://bbs.archlinux.org/viewtopic.php?id=45800 rTorrent Certificates Problem]<br />
<br />
=== Locked directories ===<br />
<br />
rTorrent can sometimes lock up after a crash or incorrect shutdown, and will complain about a lock file.<br />
<br />
Per the error message, the file called "'''rtorrent.lock'''" can be found within the hidden folder {{ic|.rtorrentsession}} for your download directory and manually removed.<br />
<br />
=== Event failed: bad return code ===<br />
<br />
This is caused by there being spaces in your system.method.* lines. Remove the spaces and it will work.<br />
<br />
== Web interface ==<br />
<br />
There are numerous web interfaces and front ends for rTorrent including:<br />
* [[WTorrent]] is a web interface to rtorrent programmed in php using Smarty templates and XMLRPC for PHP library.<br />
* [http://code.google.com/p/ntorrent/ nTorrent] is a graphical user interface client to rtorrent (a cli torrent client) written in Java.<br />
* [https://rtwi.jmk.hu/ rTWi] is a simple rTorrent web interface written in PHP.<br />
* [[Rtgui]] is a web based front end for rTorrent written in PHP and uses XML-RPC to communicate with the rTorrent client.<br />
* [https://github.com/Novik/ruTorrent rutorrent] and [http://forums.rutorrent.org/ Forum] - A web-based front-end with an interface very similar to uTorrent which supports many plugins and advanced features (see also: [[ruTorrent]] and [https://bbs.archlinux.org/viewtopic.php?pid=897577#p897577 Guide on forum]).<br />
<br />
{{Note|rTorrent is currently built using [http://xmlrpc-c.sourceforge.net/ XML-RPC for C/C++], which is required for some web interfaces (e.g. ruTorrent).}}<br />
<br />
=== XMLRPC interface ===<br />
<br />
If you want to use rtorrent with some web interfaces (e.g. rutorrent) you need to add the following line to the configuration file:<br />
scgi_port = localhost:5000<br />
<br />
For more information see: [https://github.com/rakshasa/rtorrent/wiki/RPC-Setup-XMLRPC Using XMLRPC with rtorrent]<br />
<br />
=== Saving magnet links as torrent files in watch folder ===<br />
<br />
{{Note| Rtorrent natively supports downloading torrents through magnet links. At the main view (reached by starting Rtorrent and pressing 1), press enter. At "load.normal>" paste the magnet link and press enter again. This will start the download.}}<br />
<br />
If you wish to have magnet links automatically added to your watch folder, here is a script that will do the trick:<br />
<br />
<nowiki><br />
#!/bin/bash<br />
watch_folder=~/.rtorrent/watch<br />
cd $watch_folder<br />
[[ "$1" =~ xt=urn:btih:([^&/]+) ]] || exit;<br />
echo "d10:magnet-uri${#1}:${1}e" > "meta-${BASH_REMATCH[1]}.torrent"</nowiki><br />
<br />
(adapted from http://blog.gonzih.org/blog/2012/02/17/how-to-use-magnet-links-with-rtorrent/).<br />
<br />
Save it, for instance as rtorrent-magnet, give it execution permission, and place it somewhere under your $PATH. Then in Firefox:<br />
# Type {{ic|about:config}} into the Location Bar (address bar) and press {{ic|Enter}}.<br />
# Right-click: ''New > Boolean > Name: '''network.protocol-handler.expose.magnet''' > Value > false''.<br />
# Next time you click a magnet link you will be asked which application to open it with. Select the script we just created and you will be done.<br />
<br />
If you want xdg-open to handle this, which you need if you are using chrome instead of firefox, (though gnome and other DE might have their own programs overriding xdg-open) you need to create the desktop entry for the rtorrent-magnet script in {{ic|~/.local/share/applications/rtorrent-magnet.desktop}} with the following content:<br />
<br />
<nowiki><br />
[Desktop Entry]<br />
Type=Application<br />
Name=rtorrent-magnet<br />
Exec=rtorrent-magnet %U<br />
MimeType=x-scheme-handler/magnet;<br />
NoDisplay=true</nowiki><br />
<br />
Then all you need to do is to register the mimetype using<br />
$ xdg-mime default rtorrent-magnet.desktop x-scheme-handler/magnet<br />
<br />
== Magnet to Torrent ==<br />
You could also use the {{AUR|magnet2torrent-git}} package which downloads the metadata and creates a torrent file.<br />
<br />
How to use:<br />
$ magnet2torrent <magnet link> [torrent file]<br />
<br />
== rtorrent-pyro ==<br />
<br />
{{AUR|rtorrent-pyro-git}} from the [[AUR]] comes with an extended rtorrent console interface. It does not contain the pyroscope tools yet though. If you also need the pyroscope tools see [[#PyroScope]] .<br />
<br />
Make sure you add following command to ~/.rtorrent.rc, which makes the asterisk key * to a shortcut for toggling between extended and collapsed view within rtorrent's interface:<br />
{{bc|<nowiki>schedule = bind_collapse,0,0,"ui.bind_key=download_list,*,view.collapsed.toggle="</nowiki>}}<br />
<br />
Also set "pyro.extended" to 1 to activate rTorrent-PS features.<br />
{{bc|<nowiki>system.method.insert = pyro.extended, value|const, 1</nowiki>}}<br />
<br />
=== PyroScope ===<br />
<br />
We create a directory for the installation of pyroscope, then download and update the source code from subversion:<br />
{{bc|<nowiki>mkdir -p ~/.lib<br />
svn checkout http://pyroscope.googlecode.com/svn/trunk/ ~/.lib/pyroscope<br />
~/.lib/pyroscope/update-to-head.sh</nowiki>}}<br />
Adding pyroscope bin's PATH to .bashrc:<br />
{{bc|<nowiki>export PATH=$PATH:path_to_the_bin # Example path for pyroscope bin's: /home/user/.lib/pyroscope/bin/</nowiki>}}<br />
Creating the ~/.pyroscope/config.ini:<br />
{{bc|<nowiki>pyroadmin --create-config</nowiki>}}<br />
<br />
Add this to your ~/.rtorrent.rc. Do not forget to add the path of your pyroscope bin's dir (see below).<br />
{{bc|<nowiki>system.method.insert = pyro.bin_dir, string|const, write_here_path_to_your_pyroscope_bin_dir # Example path: /home/user/.lib/pyroscope/bin/<br />
system.method.insert = pyro.rc_dialect, string|const|simple, "execute_capture=bash,-c,\"test $1 = 0.8.6 && echo -n 0.8.6 || echo -n 0.8.9\",dialect,$system.client_version="<br />
system.method.insert = pyro.rtorrent_rc, string|const|private, "$cat=~/.pyroscope/rtorrent-,\"$pyro.rc_dialect=\",.rc.default"<br />
import = $pyro.rtorrent_rc=</nowiki>}}<br />
<br />
Optionally: TORQUE: Daemon watchdog schedule. Must be activated by touching the "~/.pyroscope/run/pyrotorque" file!<br />
You can also just use rtorrent watch dir or give pyro_watchdog a try, which comes with 'treewatch' ability, meaning it also watches for torrents recursively within the given watch path. Further documentation for pyro_watchdog is here: <br />
[http://code.google.com/p/pyroscope/wiki/QueueManager] <br />
To enable pyro_watchdog, add this in ~/.rtorrent.rc and further configurations are in ~/.pyroscope/torque.ini. <br />
{{bc|<nowiki>schedule = pyro_watchdog,30,300,"pyro.watchdog=~/.pyroscope,-v"</nowiki>}}<br />
<br />
Following steps are important. Before using pyroscope tools you have to set the missing "loaded" times to that of the .torrent file. Run this in your terminal:<br />
{{bc|<nowiki>rtcontrol '!*"*' loaded=0 -q -sname -o 'echo "$(name)s"\ntest -f "$(metafile)s" && rtxmlrpc -q d.set_custom $(hash)s tm_loaded \$(\<br />
ls -l --time-style "+%%s" "$(metafile)s" \<br />
| cut -f6 -d" ")\nrtxmlrpc -q d.save_session $(hash)s' | bash</nowiki>}}<br />
<br />
And now set the missing "completed" times to that of the data file or directory:<br />
{{bc|<nowiki>rtcontrol '!*"*' completed=0 done=100 path=\! is_ghost=no -q -sname -o 'echo "$(name)s"\ntest -e "$(realpath)s" && rtxmlrpc -q d.set_custom $(hash)s tm_completed \$(\<br />
ls -ld --time-style "+%%s" "$(realpath)s" \<br />
| cut -f6 -d" ")\nrtxmlrpc -q d.save_session $(hash)s' | bash</nowiki>}}<br />
<br />
Example usage:<br />
Will print out all torrents older than 2 hours:<br />
{{bc|<nowiki>rtcontrol -V completed=+2h -scompleted -ocompleted</nowiki>}}<br />
Deletes all torrents older than 48 hours:<br />
{{bc|<nowiki>rtcontrol -V completed=+48h -scompleted -ocompleted --cull --yes</nowiki>}}<br />
<br />
== See also ==<br />
<br />
* [[Screen Tips]]<br />
* [[Wikipedia:Comparison of BitTorrent clients|Comparison of BitTorrent clients]] on Wikipedia<br />
* [http://community.rutorrent.org/ rTorrent Community Wiki] - Public place for information on rTorrent and any project related to rTorrent, regarding setup, configuration, operations, and development.<br />
* [http://code.google.com/p/pyroscope/ PyroScope] - Collection of command line tools for rTorrent. It provides commands for creating and modifying torrent files, moving data on completion without having multiple watch folders, and mass-controlling download items via rTorrent's XML-RPC interface: searching, start/stop, deleting items with or without their data, etc. It also offers a documented [[Python]] API.<br />
* [[Rutorrent with lighttpd|ruTorrent with Lighttpd]]<br />
* [http://wiki.theaveragegeek.com/howto/installing_rtorrent_and_hellanzb_on_centos5_64-bit_vps How-to install rTorrent and Hellanzb on CentOS 5 64-bit VPS]<br />
* [http://code.google.com/p/pyroscope/wiki/DebianInstallFromSource Installation guide for rTorrent and Pyroscope on Debian] - Collection of tools for the BitTorrent protocol and especially the rTorrent client<br />
* [http://mktorrent.sourceforge.net/ mktorrent] - Command line application used to generate torrent files, which is available as {{Pkg|mktorrent}} in the [[official repositories]].<br />
* [https://github.com/kfei/docktorrent docktorrent] - Using Docker, rTorrent and ruTorrent to run a full-featured BitTorrent box.<br />
* [https://github.com/nelhage/reptyr reptyr] - another tool to take over a program's TTY (it is in the standard repos). The process may have started being attached to a terminal or to a socket in tmux, screen or dtach.<br />
* [http://caca.zoy.org/wiki/neercs neercs] - a more screen/tmux like tool than reptyr, but, like reptyr, neercs can also "steal" a process that may have started slaved to a terminal or to a socket in tmux, screen or dtach. {{AUR|neercs-git}}{{Broken package link|{{aur-mirror|neercs-git}}}}<br />
<br />
'''Forum threads'''<br />
* 2009-03-11 - Arch Linux - [https://bbs.archlinux.org/viewtopic.php?id=67304 HOWTO: rTorrent stats in Conky]</div>Ygyfygyhttps://wiki.archlinux.org/index.php?title=RTorrent&diff=428487RTorrent2016-03-29T09:24:44Z<p>Ygyfygy: /* rtorrent-pyro */ rtorrent-pyro (not in the AUR) → rtorrent-pyro-git (in the AUR)</p>
<hr />
<div>{{DISPLAYTITLE:rTorrent}}<br />
[[Category:Internet applications]]<br />
[[es:RTorrent]]<br />
[[ja:RTorrent]]<br />
[[ru:RTorrent]]<br />
[[zh-CN:RTorrent]]<br />
[https://rakshasa.github.io/rtorrent/ rTorrent] is a quick and efficient BitTorrent client that uses, and is in development alongside, the libTorrent (not to be confused with {{Pkg|libtorrent-rasterbar}}) library. It is written in C++ and uses the [[Wikipedia:ncurses|ncurses]] programming library, which means it uses a text user interface. When combined with a terminal multiplexer (e.g. [[GNU Screen]] or [[Tmux]]) and [[Secure Shell]], it becomes a convenient remote [[Wikipedia:BitTorrent (protocol)#Operation|BitTorrent client]].<br />
<br />
== Installation ==<br />
<br />
[[Install]] the {{Pkg|rtorrent}} package that is available in the [[official repositories]].<br />
<br />
Alternatively, install {{AUR|rtorrent-git}} or {{AUR|rtorrent-vi-color}} or {{AUR|rtorrent-extended}}{{Broken package link|{{aur-mirror|rtorrent-extended}}}} from the [[AUR]].<br />
<br />
== Configuration ==<br />
<br />
{{Note|See the rTorrent wiki article on this subject for more information: [http://web.archive.org/web/20140213003955/http://libtorrent.rakshasa.no/wiki/RTorrentCommonTasks Common Tasks in rTorrent for Dummies].}}<br />
<br />
Before running rTorrent, find the example configuration file {{ic|/usr/share/doc/rtorrent/rtorrent.rc}} and copy it to {{ic|~/.rtorrent.rc}}:<br />
<br />
$ cp /usr/share/doc/rtorrent/rtorrent.rc ~/.rtorrent.rc<br />
<br />
=== Performance ===<br />
<br />
{{Note|See the rTorrent wiki article on this subject for more information: [http://web.archive.org/web/20140213011439/http://libtorrent.rakshasa.no/wiki/RTorrentPerformanceTuning Performance Tuning]}}<br />
<br />
The values for the following options are dependent on the system's hardware and Internet connection speed. To find the optimal values read: [http://torrentfreak.com/optimize-your-BitTorrent-download-speed Optimize Your BitTorrent Download Speed]<br />
{{bc|<nowiki><br />
min_peers = 40<br />
max_peers = 52<br />
<br />
min_peers_seed = 10<br />
max_peers_seed = 52<br />
<br />
max_uploads = 8<br />
<br />
download_rate = 200<br />
upload_rate = 28<br />
</nowiki>}}<br />
<br />
The {{ic|check_hash}} option executes a hash check when a torrent download is complete or rTorrent is started. When starting, it checks for errors in your completed files. <br />
check_hash = yes<br />
<br />
=== Create and manage files ===<br />
<br />
The {{ic|directory}} option will determine where your torrent data will be saved (could be a relative path):<br />
directory = ~/downloaded<br />
<br />
The {{ic|session}} option allows rTorrent to save the progess of your torrents. It is recommended to create a directory in home directory (e.g. {{ic|mkdir ~/.rtorrent.session}}).<br />
session = ~/.rtorrent.session<br />
<br />
The {{ic|schedule}} option has rTorrent watch a particular directory for new torrent files. Saving a torrent file to this directory will automatically start the download. Remember to create the directory that will be watched (e.g. {{ic|mkdir ~/watch}}). Also, be careful when using this option as rTorrent will move the torrent file to your session folder and rename it to its hash value.<br />
schedule = watch_directory,5,5,load_start=/home/''user''/watch/*.torrent<br />
schedule = untied_directory,5,5,stop_untied=<br />
schedule = tied_directory,5,5,start_tied=<br />
<br />
The following {{ic|schedule}} option is intended to stop rTorrent from downloading data when disk space is low.<br />
schedule = low_diskspace,5,60,close_low_diskspace=100M<br />
<br />
=== Port configuration ===<br />
<br />
The {{ic|port_range}} option sets which port(s) to use for listening. It is recommended to use a port that is higher than 49152 (see: [[Wikipedia:List of TCP and UDP port numbers|List of port numbers]]). Although, rTorrent allows a range of ports, a single port is recommended.<br />
port_range = 49164-49164<br />
<br />
Additionally, make sure port forwarding is enabled for the proper port(s) (see: [http://portforward.com/english/routers/port_forwarding/routerindex.htm Port Forward guides]).<br />
<br />
=== Additional settings ===<br />
<br />
The {{ic|encryption}} option enables or disables encryption. It is very important to enable this option, not only for yourself, but also for your peers in the torrent swarm. Some users need to obscure their bandwidth usage from their ISP. And it does not hurt to enable it even if you do not need the added security.<br />
encryption = allow_incoming,try_outgoing,enable_retry<br />
It is also possible to force all connections to use encryption. However, be aware that this stricter rule will reduce your client's availability:<br />
encryption = require,require_RC4,allow_incoming,try_outgoing<br />
<br />
See also [[Wikipedia:BitTorrent Protocol Encryption]].<br />
<br />
This final {{ic|dht}} option enables [[Wikipedia:Distributed hash table|DHT]] support. DHT is common among public trackers and will allow the client to acquire more peers.<br />
{{bc|<nowiki><br />
dht = auto<br />
dht_port = 6881<br />
peer_exchange = yes<br />
</nowiki>}}<br />
<br />
== Key bindings ==<br />
<br />
rTorrent relies exclusively on keyboard shortcuts for user input. A quick reference is available in the table below. A complete guide is available on the rTorrent wiki (see: [https://github.com/rakshasa/rtorrent/wiki/User-Guide rTorrent User Guide]).<br />
<br />
{{Note|Striking {{ic|Ctrl-q}} twice in quick succession will make rTorrent shutdown without waiting to send a stop announce to the connected trackers.}}<br />
<br />
{| class="wikitable"<br />
|-<br />
!width="75" |Cmd<br />
!Action<br />
|-<br />
|Ctrl-q<br />
|Quit application<br />
|-<br />
|Ctrl-s<br />
|Start download. Runs hash first unless already done.<br />
|-<br />
|Ctrl-d<br />
|Stop an active download or remove a stopped download<br />
|-<br />
|Ctrl-k<br />
|Stop and close the files of an active download.<br />
|-<br />
|Ctrl-r<br />
|Initiate hash check of torrent. Starts downloading if file is not available.<br />
|-<br />
|Ctrl-o<br />
|Specify the download directory for a added, but not started torrent.<br />
|-<br />
|Left<br />
|Returns to the previous screen<br />
|-<br />
|Right<br />
|Goes to the next screen<br />
|-<br />
|Backspace<br />
|Adds and starts the specified *.torrent<br />
|-<br />
|Return<br />
|Adds and doesn't start the specified *.torrent<br />
|-<br />
|<nowiki>a|s|d</nowiki><br />
|<nowiki>Increase global upload throttle about 1|5|50 KB/s</nowiki><br />
|-<br />
|<nowiki>A|S|D</nowiki><br />
|<nowiki>Increase global download throttle about 1|5|50 KB/s</nowiki><br />
|-<br />
|<nowiki>z|x|c</nowiki><br />
|<nowiki>Decrease global upload throttle about 1|5|50 KB/s</nowiki><br />
|-<br />
|<nowiki>Z|X|C</nowiki><br />
|<nowiki>Decrease global download throttle about 1|5|50 KB/s</nowiki><br />
|}<br />
<br />
=== Redundant mapping ===<br />
<br />
{{ic|Ctrl-s}} is often used for terminal control to stop screen output while {{ic|Ctrl-q}} is used to start it. These mappings may interfere with rTorrent. Check to see if these terminal options are bound to a mapping:<br />
{{hc|$ stty -a|<nowiki>...<br />
swtch = <undef>; start = ^Q; stop = ^S; susp = ^Z; rprnt = ^R; werase = ^W; lnext = ^V;<br />
...<br />
</nowiki>}}<br />
<br />
To remove the mappings, change the terminal characteristics to undefine the aforementioned special characters (i.e. {{ic|stop}} and {{ic|start}}):<br />
# stty stop undef<br />
# stty start undef<br />
<br />
To remove these mappings automatically at startup you may add the two preceding commands to your {{ic|~/.bashrc}} file.<br />
<br />
== Additional tips ==<br />
<br />
=== systemd service file with tmux or screen ===<br />
<br />
*With tmux (Restart rtorrent if crashed)<br />
{{hc|/etc/systemd/user/rt.service|<nowiki><br />
[Unit]<br />
Description=rTorrent<br />
After=network.target<br />
<br />
[Service]<br />
Type=forking<br />
KillMode=none<br />
ExecStart=/usr/bin/tmux new-session -s rt -n rtorrent -d rtorrent<br />
ExecStop=/usr/bin/bash -c "/usr/bin/tmux send-keys -t rt:rtorrent.0 C-q && while pidof rtorrent > /dev/null; do sleep 0.5; echo rtorrent still running...; done"<br />
WorkingDirectory=%h<br />
Restart=on-failure<br />
<br />
[Install]<br />
WantedBy=default.target<br />
</nowiki>}}<br />
<br />
*With tmux running as user rtorrent (Restart rtorrent if crashed)<br />
{{hc|/etc/systemd/system/rtorrent.service|<nowiki><br />
[Unit]<br />
Description=rTorrent Daemon<br />
After=network.target<br />
<br />
[Service]<br />
Type=forking<br />
KillMode=none<br />
User=rtorrent<br />
ExecStart=/usr/bin/tmux new-session -c /mnt/storage/rtorrent -s rtorrent -n rtorrent -d rtorrent<br />
ExecStop=/usr/bin/bash -c "/usr/bin/tmux send-keys -t rtorrent C-q && while pidof rtorrent > /dev/null; do sleep 0.5; done"<br />
WorkingDirectory=/home/rtorrent/<br />
Restart=on-failure<br />
<br />
[Install]<br />
WantedBy=multi-user.target<br />
</nowiki>}}<br />
<br />
*With screen<br />
<br />
{{hc|/etc/systemd/user/rt.service|<nowiki><br />
[Unit]<br />
Description=rTorrent<br />
After=network.target<br />
<br />
[Service]<br />
Type=forking<br />
KillMode=none<br />
ExecStart=/usr/bin/screen -d -m -fa -S rtorrent /usr/bin/rtorrent<br />
ExecStop=/usr/bin/killall -w -s 2 /usr/bin/rtorrent<br />
WorkingDirectory=%h<br />
<br />
[Install]<br />
WantedBy=default.target<br />
</nowiki>}}<br />
<br />
Start at boot time:<br />
$ systemctl --user enable rt<br />
Start manually:<br />
$ systemctl --user start rt<br />
Stop:<br />
$ systemctl --user stop rt<br />
Attach to rtorrent's session:<br />
tmux attach -t rt<br />
Detach:<br />
Ctrl-b d<br />
<br />
=== systemd service file with dtach ===<br />
<br />
{{Style|Creating multiple rtorrent sessions this way is far from perfect, why don't we just assume for simplicity that there is only one session? This is assumed in [[#systemd service file with tmux or screen]] anyway.}}<br />
<br />
When running dtach from systemd unit, the {{ic|TERM}} environment variable [[systemd/User#Environment_variables|has to be set explicitly]] for rtorrent to work.<br />
<br />
This service file has no restart because the author occasionally takes the drive in question offline, and rtorrent fails, shall we say, "suboptimally" when started in this scenario and loses many torrent specific settings such as the specific directories each torrent is stored in. In fact the symlinks that kick off rtorrent live on the relevant drive; if it is unmounted rtorrent cannot start. This use case of blocking rtorrent from starting is relevant to users who put the downloaded files on removable media such as NAS, USB or eSATA drives.<br />
<br />
{{hc|~/.config/systemd/user/rtorrent.service|<nowiki><br />
[Unit]<br />
Description=rTorrent<br />
#After=network.target<br />
<br />
[Service]<br />
# set TERM according to your terminal<br />
Environment="TERM=xterm"<br />
#Environment="TERM=linux" <br />
Type=forking<br />
KillMode=none<br />
ExecStart=-/usr/bin/dtach -n /home/sam/run/dtach_fifos/fifo -e "^T" /home/sam/bin/rtr_new -n -o import=/home/sam/.config/rtorrent/new_.rc <br />
# dtach -n <separate filename for each instance><br />
# <br />
# rtr_new -n to ignore the default .rtorrent.rc<br />
# rtr_new -o import to load the instance-specific rc<br />
ExecStop=-/usr/bin/killall -u sam -e -w -s INT /home/sam/bin/rtr_new<br />
<br />
[Install]<br />
WantedBy=multi-user.target<br />
</nowiki>}}<br />
<br />
Note some other issues exposed in this service file other than just dtach:<br />
<br />
{{ic|/home/sam/bin/rtr_new}} is a symlink to {{ic|/usr/bin/rtorrent}}<br />
<br />
This lets us run several instances and kill each one independently with a different version of the ExecStop, to wit:<br />
<br />
{{bc|1=ExecStop=-/usr/bin/killall -u sam -e -w -s INT /home/sam/bin/rtr_new<br />
ExecStop=-/usr/bin/killall -u sam -e -w -s INT /home/sam/bin/rtr_academic<br />
ExecStop=-/usr/bin/killall -u sam -e -w -s INT /home/sam/bin/rtr_other_stuff}}<br />
<br />
These are each in a different service file, each of which controls one instance.<br />
<br />
Without this step, when running multiple instances a killall solution would kill all the running rtorrent instances. <br />
<br />
If multiple rtorrent instances are not needed and the rtorrent rc file is in the default location the above service file may be simplified. The entire file is included but only the ExecStart and <br />
ExecStop lines change. <br />
<br />
{{hc|~/.config/systemd/user/rtorrent.service|<nowiki><br />
[Unit]<br />
Description=rTorrent<br />
#After=network.target<br />
<br />
[Service]<br />
# set TERM according to your terminal<br />
Environment="TERM=xterm"<br />
#Environment="TERM=linux" <br />
Type=forking<br />
KillMode=none<br />
ExecStart=-/usr/bin/dtach -n /home/sam/run/dtach_fifos/fifo -e "^T" /usr/bin/rtorrent <br />
# dtach -n <user specified FIFO name> -e <user specified character> /usr/bin/rtorrent <br />
ExecStop=/usr/bin/killall -w -s INT /usr/bin/rtorrent<br />
# -e (exact match) and -u (user name) were added above to stop specific processes<br />
# and may be omitted here because only one rtorrent will be running<br />
<br />
[Install]<br />
WantedBy=multi-user.target<br />
</nowiki>}}<br />
<br />
The service can be controlled with [[systemctl --user]]. When it is started, you can attach to the session:<br />
<br />
$ dtach -a /home/sam/run/dtach_fifos/fifo -e "^T"<br />
<br />
=== Pre-allocation ===<br />
<br />
The rTorrent package in the community repository lacks pre-allocation. Compiling rTorrent with pre-allocation allows files to be allocated before downloading the torrent. The major benefit is that it limits and avoids fragmentation of the filesystem. However, this introduces a delay during the pre-allocation if the filesystem does not support the fallocate syscall natively.<br />
<br />
Therefore this switch is recommended for xfs, ext4 and btrfs filesystems, which have native fallocate syscall support. They will see no delay during preallocation and no fragmented filesystem. Pre-allocation on others filesystems will cause a delay but will not fragment the files.<br />
<br />
To make pre-allocation available, recompile libTorrent from the [[ABS]] tree with the following new switch:<br />
$ ./configure --prefix=/usr --disable-debug --with-posix-fallocate<br />
<br />
To enable it, add the following to your {{ic|~/rtorrent.rc}}:<br />
{{hc|~/rtorrent.rc|<nowiki><br />
# Preallocate files; reduces defragmentation on filesystems.<br />
system.file_allocate.set = yes<br />
</nowiki>}}<br />
<br />
=== Manage completed files ===<br />
<br />
{{Note|<br />
*Currently, this part requires either the git version of rtorrent/libtorrent or having applied the patch to 0.8.6 that adds 'equal'.<br />
* If you are having trouble with this tip, it is probably easier to follow [http://web.archive.org/web/20140213003955/http://libtorrent.rakshasa.no/wiki/RTorrentCommonTasks#Movecompletedtorrentstodifferentdirectorydependingonwatchdirectory this].<br />
}}<br />
<br />
It is possible to have rtorrent sort completed torrent data to specific folders based on which 'watch' folder you drop the *.torrent into while continuing to seed. Many examples show how to do this with torrents downloaded by rtorrent. The problem is when you try to drop in 100% done torrent data and then have rtorrent check the data and resume, it will not be sorted.<br />
<br />
As a solution, use the following example in your {{ic|~/.rtorrent.rc}}.<br />
Make sure to change the paths.<br />
<br />
{{bc|1=<br />
# location where new torrent data is placed, and where you should place your<br />
# 'complete' data before you place your *.torrent file into the watch folder<br />
directory = /home/user/torrents/incomplete<br />
<br />
# schedule a timer event named 'watch_directory_1':<br />
# 1) triggers 10 seconds after rtorrent starts<br />
# 2) triggers at 10 second intervals thereafter<br />
# 3) Upon trigger, attempt to load (and start) new *.torrent files found in /home/user/torrents/watch/<br />
# 4) set a variable named 'custom1' with the value "/home/user/torrents/complete"<br />
# NOTE: if you do not want it to automatically start the torrent, change 'load_start' to 'load'<br />
schedule = watch_directory_1,10,10,"load_start=/home/user/torrents/watch/*.torrent,d.set_custom1=/home/user/torrents/complete"<br />
<br />
# insert a method with the alias 'checkdirs1'<br />
# 1) returns true if the current path of the torrent data is not equal to the value of custom1<br />
# 2) otherwise, returns false<br />
system.method.insert=checkdirs1,simple,"not=\"$equal={d.get_custom1=,d.get_base_path=}\""<br />
<br />
# insert a method with the alias 'movecheck1'<br />
# 1) returns true if all 3 commands return true ('result of checkdirs1' && 'torrent is 100% done', 'custom1 variable is set')<br />
# 2) otherwise, returns false<br />
system.method.insert=movecheck1,simple,"and={checkdirs1=,d.get_complete=,d.get_custom1=}"<br />
<br />
# insert a method with the alias 'movedir1'<br />
# (a series of commands, separated by ';') <br />
# 1) "set path of torrent to equal the value of custom1";<br />
# 2) "mv -u <current data path> <custom1 path>";<br />
# 3) "clear custom1", "stop the torrent","resume the torrent"<br />
# 4) stop the torrent<br />
# 5) start the torrent (to get the torrent to update the 'base path')<br />
system.method.insert=movedir1,simple,"d.set_directory=$d.get_custom1=;execute=mv,-u,$d.get_base_path=,$d.get_custom1=;d.set_custom1=;d.stop=;d.start="<br />
<br />
# set a key with the name 'move_hashed1' that is triggered by the hash_done event.<br />
# 1) When hashing of a torrent completes, this custom key will be triggered.<br />
# 2) when triggered, execute the 'movecheck1' method and check the return value.<br />
# 3) if the 'movecheck' method returns 'true', execute the 'movedir1' method we inserted above.<br />
# NOTE-0: *Only* data that has had their hash checked manually with ^R [^R = Control r].<br />
# Or on a rtorrent restart[which initiates a hash check]. Will the data move; ~/torrents/incomplete => ~/torrents/complete for example.<br />
# NOTE-1: 'branch' is an 'if' conditional statement: if(movecheck1){movedir1}<br />
system.method.set_key=event.download.hash_done,move_hashed1,"branch={$movecheck1=,movedir1=}"<br />
}}<br />
<br />
You can add additional watch folders and rules should you like to sort your torrents into special folders.<br />
<br />
For example, if you would like the torrents to download in:<br />
/home/user/torrents/incomplete<br />
and then sort the torrent data based on which folder you dropped the *.torrent into:<br />
/home/user/torrents/watch => /home/user/torrents/complete<br />
/home/user/torrents/watch/iso => /home/user/torrents/complete/iso<br />
/home/user/torrents/watch/music => /home/user/torrents/complete/music<br />
<br />
You can have the following in your .rtorrent.rc:<br />
{{bc|1=<br />
directory = /home/user/torrents/incomplete<br />
schedule = watch_directory_1,10,10,"load_start=/home/user/torrents/watch/*.torrent,d.set_custom1=/home/user/torrents/complete"<br />
<br />
schedule = watch_directory_2,10,10,"load_start=/home/user/torrents/watch/iso/*.torrent,d.set_custom1=/home/user/torrents/complete/iso"<br />
<br />
schedule = watch_directory_3,10,10,"load_start=/home/user/torrents/watch/music/*.torrent,d.set_custom1=/home/user/torrents/complete/music"<br />
<br />
system.method.insert=checkdirs1,simple,"not=\"$equal={d.get_custom1=,d.get_base_path=}\""<br />
system.method.insert=movecheck1,simple,"and={checkdirs1=,d.get_complete=,d.get_custom1=}"<br />
system.method.insert=movedir1,simple,"d.set_directory=$d.get_custom1=;execute=mv,-u,$d.get_base_path=,$d.get_custom1=;d.set_custom1=;d.stop=;d.start="<br />
system.method.set_key=event.download.hash_done,move_hashed1,"branch={$movecheck1=,movedir1=}"<br />
}}<br />
<br />
Also see [http://code.google.com/p/pyroscope/ pyroscope] especially the rtcontrol examples. There is an AUR package.<br />
<br />
==== Notification with Google Mail ====<br />
<br />
Cell phone providers allow you to "email" your phone:<br />
{{bc|<nowiki><br />
Verizon: 10digitphonenumber@vtext.com<br />
AT&T: 10digitphonenumber@txt.att.net<br />
Former AT&T customers: 10digitphonenumber@mmode.com<br />
Sprint: 10digitphonenumber@messaging.sprintpcs.com<br />
T-Mobile: 10digitphonenumber@tmomail.net<br />
Nextel: 10digitphonenumber@messaging.nextel.com<br />
Cingular: 10digitphonenumber@cingularme.com<br />
Virgin Mobile: 10digitphonenumber@vmobl.com<br />
Alltel: 10digitphonenumber@alltelmessage.com OR<br />
10digitphonenumber@message.alltel.com<br />
CellularOne: 10digitphonenumber@mobile.celloneusa.com<br />
Omnipoint: 10digitphonenumber@omnipointpcs.com<br />
Qwest: 10digitphonenumber@qwestmp.com<br />
Telus: 10digitphonenumber@msg.telus.com<br />
Rogers Wireless: 10digitphonenumber@pcs.rogers.com<br />
Fido: 10digitphonenumber@fido.ca<br />
Bell Mobility: 10digitphonenumber@txt.bell.ca<br />
Koodo Mobile: 10digitphonenumber@msg.koodomobile.com<br />
MTS: 10digitphonenumber@text.mtsmobility.com<br />
President's Choice: 10digitphonenumber@txt.bell.ca<br />
Sasktel: 10digitphonenumber@sms.sasktel.com<br />
Solo: 10digitphonenumber@txt.bell.ca<br />
</nowiki>}}<br />
<br />
*Install mailx which is provided by the {{Pkg|s-nail}} package that is found in the [[official repositories]].<br />
<br />
*Clear the {{ic|/etc/mail.rc}} file and enter:<br />
<br />
{{bc|<nowiki><br />
set sendmail="/usr/bin/mailx"<br />
set smtp=smtp.gmail.com:587<br />
set smtp-use-starttls<br />
set ssl-verify=ignore<br />
set ssl-auth=login<br />
set smtp-auth-user=USERNAME@gmail.com<br />
set smtp-auth-password=PASSWORD<br />
</nowiki>}}<br />
<br />
Now to send the text, we must pipe a message to the mailx program.<br />
*Make a Bash script:<br />
{{hc|/path/to/mail.sh|<nowiki><br />
echo "$@: Done" | mailx 5551234567@vtext.com<br />
</nowiki>}}<br />
Where the $@ is a variable holding all the arguments passed to our script.<br />
<br />
*And finally, add the important {{ic|~/.rtorrent.rc}} line:<br />
system.method.set_key = event.download.finished,notify_me,"execute=/path/to/mail.sh,$d.get_name="<br />
<br />
Breaking it down:<br />
<br />
{{ic|notify_me}} is the command id, which may be used by other commands, it can be just about anything you like, so long as it is unique.<br />
<br />
{{ic|1=execute=}} is the rtorrent command, in this case to execute a shell command.<br />
<br />
{{ic|/path/to/mail.sh}} is the name of our script (or whatever command you want to execute) followed by a comma separated list of all the switches/arguments to be passed.<br />
<br />
{{ic|1=$d.get_name=}} 'd' is an alias to whatever download triggered the command, get_name is a function which returns the name of our download, and the '$' tells rTorrent to replace the command with its output before it calls execute.<br />
<br />
The end result? When that torrent, 'All Live Nudibranches', that we started before leaving for work finishes, we will be texted:<br />
All Live Nudibranches: Done<br />
<br />
=== Displaying active torrents ===<br />
<br />
The rtorrent does not list the active tab properly by default, add this line to your {{ic|.rtorrent.rc}} to show only active torrents<br />
schedule = filter_active,30,30,"view_filter = active,\"or={d.get_up_rate=,d.get_down_rate=}\""<br />
<br />
Then press {{ic|9}} in your rTorrent client to see the changes in action.<br />
<br />
=== Manually adding trackers to torrents ===<br />
<br />
# Select torrent to edit from rTorrent console view.<br />
# Hit {{ic|Ctrl+x}}.<br />
# If you had four trackers type following lines one at a time (always press {{ic|Ctrl+x}} first) to add four more for example:<br />
<br />
d.tracker.insert="5","udp://tracker.publicbt.com:80"<br />
d.tracker.insert="6","udp://tracker.openbittorrent.com:80"<br />
d.tracker.insert="7","udp://tracker.istole.it:80"<br />
d.tracker.insert="8","udp://tracker.ccc.de:80"<br />
<br />
== Troubleshooting ==<br />
<br />
=== CA certificates ===<br />
<br />
To use rTorrent with a tracker that uses HTTPS, do the following as root:<br />
<br />
{{bc|<br />
# cd /etc/ssl/certs<br />
<nowiki># wget --no-check-certificate https://www.geotrust.com/resources/root_certificates/certificates/Equifax_Secure_Global_eBusiness_CA-1.cer</nowiki><br />
# mv Equifax_Secure_Global_eBusiness_CA-1.cer Equifax_Secure_Global_eBusiness_CA-1.pem<br />
# c_rehash<br />
}}<br />
<br />
And from now on run rTorrent with:<br />
$ rtorrent -o http_capath=/etc/ssl/certs<br />
<br />
If you use GNU Screen, update the {{ic|.screenrc}} configuration file to reflect this change:<br />
$ screen -t rtorrent rtorrent -o http_capath=/etc/ssl/certs<br />
<br />
In rTorrent 0.8.9, set {{ic|<nowiki>network.http.ssl_verify_peer.set=0</nowiki>}} to [https://bbs.archlinux.org/viewtopic.php?pid=981832#p981832 fix the problem].<br />
<br />
For more information see: [https://bbs.archlinux.org/viewtopic.php?pid=331850 rTorrent Error & CA Certificate] and [https://bbs.archlinux.org/viewtopic.php?id=45800 rTorrent Certificates Problem]<br />
<br />
=== Locked directories ===<br />
<br />
rTorrent can sometimes lock up after a crash or incorrect shutdown, and will complain about a lock file.<br />
<br />
Per the error message, the file called "'''rtorrent.lock'''" can be found within the hidden folder {{ic|.rtorrentsession}} for your download directory and manually removed.<br />
<br />
=== Event failed: bad return code ===<br />
<br />
This is caused by there being spaces in your system.method.* lines. Remove the spaces and it will work.<br />
<br />
== Web interface ==<br />
<br />
There are numerous web interfaces and front ends for rTorrent including:<br />
* [[WTorrent]] is a web interface to rtorrent programmed in php using Smarty templates and XMLRPC for PHP library.<br />
* [http://code.google.com/p/ntorrent/ nTorrent] is a graphical user interface client to rtorrent (a cli torrent client) written in Java.<br />
* [https://rtwi.jmk.hu/ rTWi] is a simple rTorrent web interface written in PHP.<br />
* [[Rtgui]] is a web based front end for rTorrent written in PHP and uses XML-RPC to communicate with the rTorrent client.<br />
* [https://github.com/Novik/ruTorrent rutorrent] and [http://forums.rutorrent.org/ Forum] - A web-based front-end with an interface very similar to uTorrent which supports many plugins and advanced features (see also: [[ruTorrent]] and [https://bbs.archlinux.org/viewtopic.php?pid=897577#p897577 Guide on forum]).<br />
<br />
{{Note|rTorrent is currently built using [http://xmlrpc-c.sourceforge.net/ XML-RPC for C/C++], which is required for some web interfaces (e.g. ruTorrent).}}<br />
<br />
=== XMLRPC interface ===<br />
<br />
If you want to use rtorrent with some web interfaces (e.g. rutorrent) you need to add the following line to the configuration file:<br />
scgi_port = localhost:5000<br />
<br />
For more information see: [https://github.com/rakshasa/rtorrent/wiki/RPC-Setup-XMLRPC Using XMLRPC with rtorrent]<br />
<br />
=== Saving magnet links as torrent files in watch folder ===<br />
<br />
{{Note| Rtorrent natively supports downloading torrents through magnet links. At the main view (reached by starting Rtorrent and pressing 1), press enter. At "load.normal>" paste the magnet link and press enter again. This will start the download.}}<br />
<br />
If you wish to have magnet links automatically added to your watch folder, here is a script that will do the trick:<br />
<br />
<nowiki><br />
#!/bin/bash<br />
watch_folder=~/.rtorrent/watch<br />
cd $watch_folder<br />
[[ "$1" =~ xt=urn:btih:([^&/]+) ]] || exit;<br />
echo "d10:magnet-uri${#1}:${1}e" > "meta-${BASH_REMATCH[1]}.torrent"</nowiki><br />
<br />
(adapted from http://blog.gonzih.org/blog/2012/02/17/how-to-use-magnet-links-with-rtorrent/).<br />
<br />
Save it, for instance as rtorrent-magnet, give it execution permission, and place it somewhere under your $PATH. Then in Firefox:<br />
# Type {{ic|about:config}} into the Location Bar (address bar) and press {{ic|Enter}}.<br />
# Right-click: ''New > Boolean > Name: '''network.protocol-handler.expose.magnet''' > Value > false''.<br />
# Next time you click a magnet link you will be asked which application to open it with. Select the script we just created and you will be done.<br />
<br />
If you want xdg-open to handle this, which you need if you are using chrome instead of firefox, (though gnome and other DE might have their own programs overriding xdg-open) you need to create the desktop entry for the rtorrent-magnet script in {{ic|~/.local/share/applications/rtorrent-magnet.desktop}} with the following content:<br />
<br />
<nowiki><br />
[Desktop Entry]<br />
Type=Application<br />
Name=rtorrent-magnet<br />
Exec=rtorrent-magnet %U<br />
MimeType=x-scheme-handler/magnet;<br />
NoDisplay=true</nowiki><br />
<br />
Then all you need to do is to register the mimetype using<br />
$ xdg-mime default rtorrent-magnet.desktop x-scheme-handler/magnet<br />
<br />
== Magnet to Torrent ==<br />
You could also use the {{AUR|magnet2torrent-git}} package which downloads the metadata and creates a torrent file.<br />
<br />
How to use:<br />
$ magnet2torrent <magnet link> [torrent file]<br />
<br />
== rtorrent-pyro ==<br />
<br />
{{AUR|rtorrent-pyro-git}} from the [[AUR]] comes with an extended rtorrent console interface. It does not contain the pyroscope tools yet though. If you also need the pyroscope tools see [[#PyroScope]] .<br />
<br />
Make sure you add following command to ~/.rtorrent.rc, which makes the asterisk key * to a shortcut for toggling between extended and collapsed view within rtorrent's interface:<br />
{{bc|<nowiki>schedule = bind_collapse,0,0,"ui.bind_key=download_list,*,view.collapsed.toggle="</nowiki>}}<br />
<br />
Also set "pyro.extended" to 1 to activate rTorrent-PS features.<br />
{{bc|<nowiki>system.method.insert = pyro.extended, value|const, 1</nowiki>}}<br />
<br />
=== PyroScope ===<br />
<br />
We create a directory for the installation of pyroscope, then download and update the source code from subversion:<br />
{{bc|<nowiki>mkdir -p ~/.lib<br />
svn checkout http://pyroscope.googlecode.com/svn/trunk/ ~/.lib/pyroscope<br />
~/.lib/pyroscope/update-to-head.sh</nowiki>}}<br />
Adding pyroscope bin's PATH to .bashrc:<br />
{{bc|<nowiki>export PATH=$PATH:path_to_the_bin # Example path for pyroscope bin's: /home/user/.lib/pyroscope/bin/</nowiki>}}<br />
Creating the ~/.pyroscope/config.ini:<br />
{{bc|<nowiki>pyroadmin --create-config</nowiki>}}<br />
<br />
Add this to your ~/.rtorrent.rc. Do not forget to add the path of your pyroscope bin's dir (see below).<br />
{{bc|<nowiki>system.method.insert = pyro.bin_dir, string|const, write_here_path_to_your_pyroscope_bin_dir # Example path: /home/user/.lib/pyroscope/bin/<br />
system.method.insert = pyro.rc_dialect, string|const|simple, "execute_capture=bash,-c,\"test $1 = 0.8.6 && echo -n 0.8.6 || echo -n 0.8.9\",dialect,$system.client_version="<br />
system.method.insert = pyro.rtorrent_rc, string|const|private, "$cat=~/.pyroscope/rtorrent-,\"$pyro.rc_dialect=\",.rc.default"<br />
import = $pyro.rtorrent_rc=</nowiki>}}<br />
<br />
Optionally: TORQUE: Daemon watchdog schedule. Must be activated by touching the "~/.pyroscope/run/pyrotorque" file!<br />
You can also just use rtorrent watch dir or give pyro_watchdog a try, which comes with 'treewatch' ability, meaning it also watches for torrents recursively within the given watch path. Further documentation for pyro_watchdog is here: <br />
[http://code.google.com/p/pyroscope/wiki/QueueManager] <br />
To enable pyro_watchdog, add this in ~/.rtorrent.rc and further configurations are in ~/.pyroscope/torque.ini. <br />
{{bc|<nowiki>schedule = pyro_watchdog,30,300,"pyro.watchdog=~/.pyroscope,-v"</nowiki>}}<br />
<br />
Following steps are important. Before using pyroscope tools you have to set the missing "loaded" times to that of the .torrent file. Run this in your terminal:<br />
{{bc|<nowiki>rtcontrol '!*"*' loaded=0 -q -sname -o 'echo "$(name)s"\ntest -f "$(metafile)s" && rtxmlrpc -q d.set_custom $(hash)s tm_loaded \$(\<br />
ls -l --time-style "+%%s" "$(metafile)s" \<br />
| cut -f6 -d" ")\nrtxmlrpc -q d.save_session $(hash)s' | bash</nowiki>}}<br />
<br />
And now set the missing "completed" times to that of the data file or directory:<br />
{{bc|<nowiki>rtcontrol '!*"*' completed=0 done=100 path=\! is_ghost=no -q -sname -o 'echo "$(name)s"\ntest -e "$(realpath)s" && rtxmlrpc -q d.set_custom $(hash)s tm_completed \$(\<br />
ls -ld --time-style "+%%s" "$(realpath)s" \<br />
| cut -f6 -d" ")\nrtxmlrpc -q d.save_session $(hash)s' | bash</nowiki>}}<br />
<br />
Example usage:<br />
Will print out all torrents older than 2 hours:<br />
{{bc|<nowiki>rtcontrol -V completed=+2h -scompleted -ocompleted</nowiki>}}<br />
Deletes all torrents older than 48 hours:<br />
{{bc|<nowiki>rtcontrol -V completed=+48h -scompleted -ocompleted --cull --yes</nowiki>}}<br />
<br />
== See also ==<br />
<br />
* [[Screen Tips]]<br />
* [[Wikipedia:Comparison of BitTorrent clients|Comparison of BitTorrent clients]] on Wikipedia<br />
* [http://community.rutorrent.org/ rTorrent Community Wiki] - Public place for information on rTorrent and any project related to rTorrent, regarding setup, configuration, operations, and development.<br />
* [http://code.google.com/p/pyroscope/ PyroScope] - Collection of command line tools for rTorrent. It provides commands for creating and modifying torrent files, moving data on completion without having multiple watch folders, and mass-controlling download items via rTorrent's XML-RPC interface: searching, start/stop, deleting items with or without their data, etc. It also offers a documented [[Python]] API.<br />
* [[Rutorrent with lighttpd|ruTorrent with Lighttpd]]<br />
* [http://wiki.theaveragegeek.com/howto/installing_rtorrent_and_hellanzb_on_centos5_64-bit_vps How-to install rTorrent and Hellanzb on CentOS 5 64-bit VPS]<br />
* [http://code.google.com/p/pyroscope/wiki/DebianInstallFromSource Installation guide for rTorrent and Pyroscope on Debian] - Collection of tools for the BitTorrent protocol and especially the rTorrent client<br />
* [http://mktorrent.sourceforge.net/ mktorrent] - Command line application used to generate torrent files, which is available as {{Pkg|mktorrent}} in the [[official repositories]].<br />
* [https://github.com/kfei/docktorrent docktorrent] - Using Docker, rTorrent and ruTorrent to run a full-featured BitTorrent box.<br />
* [https://github.com/nelhage/reptyr reptyr] - another tool to take over a program's TTY (it is in the standard repos). The process may have started being attached to a terminal or to a socket in tmux, screen or dtach.<br />
* [http://caca.zoy.org/wiki/neercs neercs] - a more screen/tmux like tool than reptyr, but, like reptyr, neercs can also "steal" a process that may have started slaved to a terminal or to a socket in tmux, screen or dtach. {{AUR|neercs-git}}{{Broken package link|{{aur-mirror|neercs-git}}}}<br />
<br />
'''Forum threads'''<br />
* 2009-03-11 - Arch Linux - [https://bbs.archlinux.org/viewtopic.php?id=67304 HOWTO: rTorrent stats in Conky]</div>Ygyfygyhttps://wiki.archlinux.org/index.php?title=RTorrent&diff=428484RTorrent2016-03-29T09:21:21Z<p>Ygyfygy: /* See also */ Removed a broken link and fixed a typo.</p>
<hr />
<div>{{DISPLAYTITLE:rTorrent}}<br />
[[Category:Internet applications]]<br />
[[es:RTorrent]]<br />
[[ja:RTorrent]]<br />
[[ru:RTorrent]]<br />
[[zh-CN:RTorrent]]<br />
[https://rakshasa.github.io/rtorrent/ rTorrent] is a quick and efficient BitTorrent client that uses, and is in development alongside, the libTorrent (not to be confused with {{Pkg|libtorrent-rasterbar}}) library. It is written in C++ and uses the [[Wikipedia:ncurses|ncurses]] programming library, which means it uses a text user interface. When combined with a terminal multiplexer (e.g. [[GNU Screen]] or [[Tmux]]) and [[Secure Shell]], it becomes a convenient remote [[Wikipedia:BitTorrent (protocol)#Operation|BitTorrent client]].<br />
<br />
== Installation ==<br />
<br />
[[Install]] the {{Pkg|rtorrent}} package that is available in the [[official repositories]].<br />
<br />
Alternatively, install {{AUR|rtorrent-git}} or {{AUR|rtorrent-vi-color}} or {{AUR|rtorrent-extended}}{{Broken package link|{{aur-mirror|rtorrent-extended}}}} from the [[AUR]].<br />
<br />
== Configuration ==<br />
<br />
{{Note|See the rTorrent wiki article on this subject for more information: [http://web.archive.org/web/20140213003955/http://libtorrent.rakshasa.no/wiki/RTorrentCommonTasks Common Tasks in rTorrent for Dummies].}}<br />
<br />
Before running rTorrent, find the example configuration file {{ic|/usr/share/doc/rtorrent/rtorrent.rc}} and copy it to {{ic|~/.rtorrent.rc}}:<br />
<br />
$ cp /usr/share/doc/rtorrent/rtorrent.rc ~/.rtorrent.rc<br />
<br />
=== Performance ===<br />
<br />
{{Note|See the rTorrent wiki article on this subject for more information: [http://web.archive.org/web/20140213011439/http://libtorrent.rakshasa.no/wiki/RTorrentPerformanceTuning Performance Tuning]}}<br />
<br />
The values for the following options are dependent on the system's hardware and Internet connection speed. To find the optimal values read: [http://torrentfreak.com/optimize-your-BitTorrent-download-speed Optimize Your BitTorrent Download Speed]<br />
{{bc|<nowiki><br />
min_peers = 40<br />
max_peers = 52<br />
<br />
min_peers_seed = 10<br />
max_peers_seed = 52<br />
<br />
max_uploads = 8<br />
<br />
download_rate = 200<br />
upload_rate = 28<br />
</nowiki>}}<br />
<br />
The {{ic|check_hash}} option executes a hash check when a torrent download is complete or rTorrent is started. When starting, it checks for errors in your completed files. <br />
check_hash = yes<br />
<br />
=== Create and manage files ===<br />
<br />
The {{ic|directory}} option will determine where your torrent data will be saved (could be a relative path):<br />
directory = ~/downloaded<br />
<br />
The {{ic|session}} option allows rTorrent to save the progess of your torrents. It is recommended to create a directory in home directory (e.g. {{ic|mkdir ~/.rtorrent.session}}).<br />
session = ~/.rtorrent.session<br />
<br />
The {{ic|schedule}} option has rTorrent watch a particular directory for new torrent files. Saving a torrent file to this directory will automatically start the download. Remember to create the directory that will be watched (e.g. {{ic|mkdir ~/watch}}). Also, be careful when using this option as rTorrent will move the torrent file to your session folder and rename it to its hash value.<br />
schedule = watch_directory,5,5,load_start=/home/''user''/watch/*.torrent<br />
schedule = untied_directory,5,5,stop_untied=<br />
schedule = tied_directory,5,5,start_tied=<br />
<br />
The following {{ic|schedule}} option is intended to stop rTorrent from downloading data when disk space is low.<br />
schedule = low_diskspace,5,60,close_low_diskspace=100M<br />
<br />
=== Port configuration ===<br />
<br />
The {{ic|port_range}} option sets which port(s) to use for listening. It is recommended to use a port that is higher than 49152 (see: [[Wikipedia:List of TCP and UDP port numbers|List of port numbers]]). Although, rTorrent allows a range of ports, a single port is recommended.<br />
port_range = 49164-49164<br />
<br />
Additionally, make sure port forwarding is enabled for the proper port(s) (see: [http://portforward.com/english/routers/port_forwarding/routerindex.htm Port Forward guides]).<br />
<br />
=== Additional settings ===<br />
<br />
The {{ic|encryption}} option enables or disables encryption. It is very important to enable this option, not only for yourself, but also for your peers in the torrent swarm. Some users need to obscure their bandwidth usage from their ISP. And it does not hurt to enable it even if you do not need the added security.<br />
encryption = allow_incoming,try_outgoing,enable_retry<br />
It is also possible to force all connections to use encryption. However, be aware that this stricter rule will reduce your client's availability:<br />
encryption = require,require_RC4,allow_incoming,try_outgoing<br />
<br />
See also [[Wikipedia:BitTorrent Protocol Encryption]].<br />
<br />
This final {{ic|dht}} option enables [[Wikipedia:Distributed hash table|DHT]] support. DHT is common among public trackers and will allow the client to acquire more peers.<br />
{{bc|<nowiki><br />
dht = auto<br />
dht_port = 6881<br />
peer_exchange = yes<br />
</nowiki>}}<br />
<br />
== Key bindings ==<br />
<br />
rTorrent relies exclusively on keyboard shortcuts for user input. A quick reference is available in the table below. A complete guide is available on the rTorrent wiki (see: [https://github.com/rakshasa/rtorrent/wiki/User-Guide rTorrent User Guide]).<br />
<br />
{{Note|Striking {{ic|Ctrl-q}} twice in quick succession will make rTorrent shutdown without waiting to send a stop announce to the connected trackers.}}<br />
<br />
{| class="wikitable"<br />
|-<br />
!width="75" |Cmd<br />
!Action<br />
|-<br />
|Ctrl-q<br />
|Quit application<br />
|-<br />
|Ctrl-s<br />
|Start download. Runs hash first unless already done.<br />
|-<br />
|Ctrl-d<br />
|Stop an active download or remove a stopped download<br />
|-<br />
|Ctrl-k<br />
|Stop and close the files of an active download.<br />
|-<br />
|Ctrl-r<br />
|Initiate hash check of torrent. Starts downloading if file is not available.<br />
|-<br />
|Ctrl-o<br />
|Specify the download directory for a added, but not started torrent.<br />
|-<br />
|Left<br />
|Returns to the previous screen<br />
|-<br />
|Right<br />
|Goes to the next screen<br />
|-<br />
|Backspace<br />
|Adds and starts the specified *.torrent<br />
|-<br />
|Return<br />
|Adds and doesn't start the specified *.torrent<br />
|-<br />
|<nowiki>a|s|d</nowiki><br />
|<nowiki>Increase global upload throttle about 1|5|50 KB/s</nowiki><br />
|-<br />
|<nowiki>A|S|D</nowiki><br />
|<nowiki>Increase global download throttle about 1|5|50 KB/s</nowiki><br />
|-<br />
|<nowiki>z|x|c</nowiki><br />
|<nowiki>Decrease global upload throttle about 1|5|50 KB/s</nowiki><br />
|-<br />
|<nowiki>Z|X|C</nowiki><br />
|<nowiki>Decrease global download throttle about 1|5|50 KB/s</nowiki><br />
|}<br />
<br />
=== Redundant mapping ===<br />
<br />
{{ic|Ctrl-s}} is often used for terminal control to stop screen output while {{ic|Ctrl-q}} is used to start it. These mappings may interfere with rTorrent. Check to see if these terminal options are bound to a mapping:<br />
{{hc|$ stty -a|<nowiki>...<br />
swtch = <undef>; start = ^Q; stop = ^S; susp = ^Z; rprnt = ^R; werase = ^W; lnext = ^V;<br />
...<br />
</nowiki>}}<br />
<br />
To remove the mappings, change the terminal characteristics to undefine the aforementioned special characters (i.e. {{ic|stop}} and {{ic|start}}):<br />
# stty stop undef<br />
# stty start undef<br />
<br />
To remove these mappings automatically at startup you may add the two preceding commands to your {{ic|~/.bashrc}} file.<br />
<br />
== Additional tips ==<br />
<br />
=== systemd service file with tmux or screen ===<br />
<br />
*With tmux (Restart rtorrent if crashed)<br />
{{hc|/etc/systemd/user/rt.service|<nowiki><br />
[Unit]<br />
Description=rTorrent<br />
After=network.target<br />
<br />
[Service]<br />
Type=forking<br />
KillMode=none<br />
ExecStart=/usr/bin/tmux new-session -s rt -n rtorrent -d rtorrent<br />
ExecStop=/usr/bin/bash -c "/usr/bin/tmux send-keys -t rt:rtorrent.0 C-q && while pidof rtorrent > /dev/null; do sleep 0.5; echo rtorrent still running...; done"<br />
WorkingDirectory=%h<br />
Restart=on-failure<br />
<br />
[Install]<br />
WantedBy=default.target<br />
</nowiki>}}<br />
<br />
*With tmux running as user rtorrent (Restart rtorrent if crashed)<br />
{{hc|/etc/systemd/system/rtorrent.service|<nowiki><br />
[Unit]<br />
Description=rTorrent Daemon<br />
After=network.target<br />
<br />
[Service]<br />
Type=forking<br />
KillMode=none<br />
User=rtorrent<br />
ExecStart=/usr/bin/tmux new-session -c /mnt/storage/rtorrent -s rtorrent -n rtorrent -d rtorrent<br />
ExecStop=/usr/bin/bash -c "/usr/bin/tmux send-keys -t rtorrent C-q && while pidof rtorrent > /dev/null; do sleep 0.5; done"<br />
WorkingDirectory=/home/rtorrent/<br />
Restart=on-failure<br />
<br />
[Install]<br />
WantedBy=multi-user.target<br />
</nowiki>}}<br />
<br />
*With screen<br />
<br />
{{hc|/etc/systemd/user/rt.service|<nowiki><br />
[Unit]<br />
Description=rTorrent<br />
After=network.target<br />
<br />
[Service]<br />
Type=forking<br />
KillMode=none<br />
ExecStart=/usr/bin/screen -d -m -fa -S rtorrent /usr/bin/rtorrent<br />
ExecStop=/usr/bin/killall -w -s 2 /usr/bin/rtorrent<br />
WorkingDirectory=%h<br />
<br />
[Install]<br />
WantedBy=default.target<br />
</nowiki>}}<br />
<br />
Start at boot time:<br />
$ systemctl --user enable rt<br />
Start manually:<br />
$ systemctl --user start rt<br />
Stop:<br />
$ systemctl --user stop rt<br />
Attach to rtorrent's session:<br />
tmux attach -t rt<br />
Detach:<br />
Ctrl-b d<br />
<br />
=== systemd service file with dtach ===<br />
<br />
{{Style|Creating multiple rtorrent sessions this way is far from perfect, why don't we just assume for simplicity that there is only one session? This is assumed in [[#systemd service file with tmux or screen]] anyway.}}<br />
<br />
When running dtach from systemd unit, the {{ic|TERM}} environment variable [[systemd/User#Environment_variables|has to be set explicitly]] for rtorrent to work.<br />
<br />
This service file has no restart because the author occasionally takes the drive in question offline, and rtorrent fails, shall we say, "suboptimally" when started in this scenario and loses many torrent specific settings such as the specific directories each torrent is stored in. In fact the symlinks that kick off rtorrent live on the relevant drive; if it is unmounted rtorrent cannot start. This use case of blocking rtorrent from starting is relevant to users who put the downloaded files on removable media such as NAS, USB or eSATA drives.<br />
<br />
{{hc|~/.config/systemd/user/rtorrent.service|<nowiki><br />
[Unit]<br />
Description=rTorrent<br />
#After=network.target<br />
<br />
[Service]<br />
# set TERM according to your terminal<br />
Environment="TERM=xterm"<br />
#Environment="TERM=linux" <br />
Type=forking<br />
KillMode=none<br />
ExecStart=-/usr/bin/dtach -n /home/sam/run/dtach_fifos/fifo -e "^T" /home/sam/bin/rtr_new -n -o import=/home/sam/.config/rtorrent/new_.rc <br />
# dtach -n <separate filename for each instance><br />
# <br />
# rtr_new -n to ignore the default .rtorrent.rc<br />
# rtr_new -o import to load the instance-specific rc<br />
ExecStop=-/usr/bin/killall -u sam -e -w -s INT /home/sam/bin/rtr_new<br />
<br />
[Install]<br />
WantedBy=multi-user.target<br />
</nowiki>}}<br />
<br />
Note some other issues exposed in this service file other than just dtach:<br />
<br />
{{ic|/home/sam/bin/rtr_new}} is a symlink to {{ic|/usr/bin/rtorrent}}<br />
<br />
This lets us run several instances and kill each one independently with a different version of the ExecStop, to wit:<br />
<br />
{{bc|1=ExecStop=-/usr/bin/killall -u sam -e -w -s INT /home/sam/bin/rtr_new<br />
ExecStop=-/usr/bin/killall -u sam -e -w -s INT /home/sam/bin/rtr_academic<br />
ExecStop=-/usr/bin/killall -u sam -e -w -s INT /home/sam/bin/rtr_other_stuff}}<br />
<br />
These are each in a different service file, each of which controls one instance.<br />
<br />
Without this step, when running multiple instances a killall solution would kill all the running rtorrent instances. <br />
<br />
If multiple rtorrent instances are not needed and the rtorrent rc file is in the default location the above service file may be simplified. The entire file is included but only the ExecStart and <br />
ExecStop lines change. <br />
<br />
{{hc|~/.config/systemd/user/rtorrent.service|<nowiki><br />
[Unit]<br />
Description=rTorrent<br />
#After=network.target<br />
<br />
[Service]<br />
# set TERM according to your terminal<br />
Environment="TERM=xterm"<br />
#Environment="TERM=linux" <br />
Type=forking<br />
KillMode=none<br />
ExecStart=-/usr/bin/dtach -n /home/sam/run/dtach_fifos/fifo -e "^T" /usr/bin/rtorrent <br />
# dtach -n <user specified FIFO name> -e <user specified character> /usr/bin/rtorrent <br />
ExecStop=/usr/bin/killall -w -s INT /usr/bin/rtorrent<br />
# -e (exact match) and -u (user name) were added above to stop specific processes<br />
# and may be omitted here because only one rtorrent will be running<br />
<br />
[Install]<br />
WantedBy=multi-user.target<br />
</nowiki>}}<br />
<br />
The service can be controlled with [[systemctl --user]]. When it is started, you can attach to the session:<br />
<br />
$ dtach -a /home/sam/run/dtach_fifos/fifo -e "^T"<br />
<br />
=== Pre-allocation ===<br />
<br />
The rTorrent package in the community repository lacks pre-allocation. Compiling rTorrent with pre-allocation allows files to be allocated before downloading the torrent. The major benefit is that it limits and avoids fragmentation of the filesystem. However, this introduces a delay during the pre-allocation if the filesystem does not support the fallocate syscall natively.<br />
<br />
Therefore this switch is recommended for xfs, ext4 and btrfs filesystems, which have native fallocate syscall support. They will see no delay during preallocation and no fragmented filesystem. Pre-allocation on others filesystems will cause a delay but will not fragment the files.<br />
<br />
To make pre-allocation available, recompile libTorrent from the [[ABS]] tree with the following new switch:<br />
$ ./configure --prefix=/usr --disable-debug --with-posix-fallocate<br />
<br />
To enable it, add the following to your {{ic|~/rtorrent.rc}}:<br />
{{hc|~/rtorrent.rc|<nowiki><br />
# Preallocate files; reduces defragmentation on filesystems.<br />
system.file_allocate.set = yes<br />
</nowiki>}}<br />
<br />
=== Manage completed files ===<br />
<br />
{{Note|<br />
*Currently, this part requires either the git version of rtorrent/libtorrent or having applied the patch to 0.8.6 that adds 'equal'.<br />
* If you are having trouble with this tip, it is probably easier to follow [http://web.archive.org/web/20140213003955/http://libtorrent.rakshasa.no/wiki/RTorrentCommonTasks#Movecompletedtorrentstodifferentdirectorydependingonwatchdirectory this].<br />
}}<br />
<br />
It is possible to have rtorrent sort completed torrent data to specific folders based on which 'watch' folder you drop the *.torrent into while continuing to seed. Many examples show how to do this with torrents downloaded by rtorrent. The problem is when you try to drop in 100% done torrent data and then have rtorrent check the data and resume, it will not be sorted.<br />
<br />
As a solution, use the following example in your {{ic|~/.rtorrent.rc}}.<br />
Make sure to change the paths.<br />
<br />
{{bc|1=<br />
# location where new torrent data is placed, and where you should place your<br />
# 'complete' data before you place your *.torrent file into the watch folder<br />
directory = /home/user/torrents/incomplete<br />
<br />
# schedule a timer event named 'watch_directory_1':<br />
# 1) triggers 10 seconds after rtorrent starts<br />
# 2) triggers at 10 second intervals thereafter<br />
# 3) Upon trigger, attempt to load (and start) new *.torrent files found in /home/user/torrents/watch/<br />
# 4) set a variable named 'custom1' with the value "/home/user/torrents/complete"<br />
# NOTE: if you do not want it to automatically start the torrent, change 'load_start' to 'load'<br />
schedule = watch_directory_1,10,10,"load_start=/home/user/torrents/watch/*.torrent,d.set_custom1=/home/user/torrents/complete"<br />
<br />
# insert a method with the alias 'checkdirs1'<br />
# 1) returns true if the current path of the torrent data is not equal to the value of custom1<br />
# 2) otherwise, returns false<br />
system.method.insert=checkdirs1,simple,"not=\"$equal={d.get_custom1=,d.get_base_path=}\""<br />
<br />
# insert a method with the alias 'movecheck1'<br />
# 1) returns true if all 3 commands return true ('result of checkdirs1' && 'torrent is 100% done', 'custom1 variable is set')<br />
# 2) otherwise, returns false<br />
system.method.insert=movecheck1,simple,"and={checkdirs1=,d.get_complete=,d.get_custom1=}"<br />
<br />
# insert a method with the alias 'movedir1'<br />
# (a series of commands, separated by ';') <br />
# 1) "set path of torrent to equal the value of custom1";<br />
# 2) "mv -u <current data path> <custom1 path>";<br />
# 3) "clear custom1", "stop the torrent","resume the torrent"<br />
# 4) stop the torrent<br />
# 5) start the torrent (to get the torrent to update the 'base path')<br />
system.method.insert=movedir1,simple,"d.set_directory=$d.get_custom1=;execute=mv,-u,$d.get_base_path=,$d.get_custom1=;d.set_custom1=;d.stop=;d.start="<br />
<br />
# set a key with the name 'move_hashed1' that is triggered by the hash_done event.<br />
# 1) When hashing of a torrent completes, this custom key will be triggered.<br />
# 2) when triggered, execute the 'movecheck1' method and check the return value.<br />
# 3) if the 'movecheck' method returns 'true', execute the 'movedir1' method we inserted above.<br />
# NOTE-0: *Only* data that has had their hash checked manually with ^R [^R = Control r].<br />
# Or on a rtorrent restart[which initiates a hash check]. Will the data move; ~/torrents/incomplete => ~/torrents/complete for example.<br />
# NOTE-1: 'branch' is an 'if' conditional statement: if(movecheck1){movedir1}<br />
system.method.set_key=event.download.hash_done,move_hashed1,"branch={$movecheck1=,movedir1=}"<br />
}}<br />
<br />
You can add additional watch folders and rules should you like to sort your torrents into special folders.<br />
<br />
For example, if you would like the torrents to download in:<br />
/home/user/torrents/incomplete<br />
and then sort the torrent data based on which folder you dropped the *.torrent into:<br />
/home/user/torrents/watch => /home/user/torrents/complete<br />
/home/user/torrents/watch/iso => /home/user/torrents/complete/iso<br />
/home/user/torrents/watch/music => /home/user/torrents/complete/music<br />
<br />
You can have the following in your .rtorrent.rc:<br />
{{bc|1=<br />
directory = /home/user/torrents/incomplete<br />
schedule = watch_directory_1,10,10,"load_start=/home/user/torrents/watch/*.torrent,d.set_custom1=/home/user/torrents/complete"<br />
<br />
schedule = watch_directory_2,10,10,"load_start=/home/user/torrents/watch/iso/*.torrent,d.set_custom1=/home/user/torrents/complete/iso"<br />
<br />
schedule = watch_directory_3,10,10,"load_start=/home/user/torrents/watch/music/*.torrent,d.set_custom1=/home/user/torrents/complete/music"<br />
<br />
system.method.insert=checkdirs1,simple,"not=\"$equal={d.get_custom1=,d.get_base_path=}\""<br />
system.method.insert=movecheck1,simple,"and={checkdirs1=,d.get_complete=,d.get_custom1=}"<br />
system.method.insert=movedir1,simple,"d.set_directory=$d.get_custom1=;execute=mv,-u,$d.get_base_path=,$d.get_custom1=;d.set_custom1=;d.stop=;d.start="<br />
system.method.set_key=event.download.hash_done,move_hashed1,"branch={$movecheck1=,movedir1=}"<br />
}}<br />
<br />
Also see [http://code.google.com/p/pyroscope/ pyroscope] especially the rtcontrol examples. There is an AUR package.<br />
<br />
==== Notification with Google Mail ====<br />
<br />
Cell phone providers allow you to "email" your phone:<br />
{{bc|<nowiki><br />
Verizon: 10digitphonenumber@vtext.com<br />
AT&T: 10digitphonenumber@txt.att.net<br />
Former AT&T customers: 10digitphonenumber@mmode.com<br />
Sprint: 10digitphonenumber@messaging.sprintpcs.com<br />
T-Mobile: 10digitphonenumber@tmomail.net<br />
Nextel: 10digitphonenumber@messaging.nextel.com<br />
Cingular: 10digitphonenumber@cingularme.com<br />
Virgin Mobile: 10digitphonenumber@vmobl.com<br />
Alltel: 10digitphonenumber@alltelmessage.com OR<br />
10digitphonenumber@message.alltel.com<br />
CellularOne: 10digitphonenumber@mobile.celloneusa.com<br />
Omnipoint: 10digitphonenumber@omnipointpcs.com<br />
Qwest: 10digitphonenumber@qwestmp.com<br />
Telus: 10digitphonenumber@msg.telus.com<br />
Rogers Wireless: 10digitphonenumber@pcs.rogers.com<br />
Fido: 10digitphonenumber@fido.ca<br />
Bell Mobility: 10digitphonenumber@txt.bell.ca<br />
Koodo Mobile: 10digitphonenumber@msg.koodomobile.com<br />
MTS: 10digitphonenumber@text.mtsmobility.com<br />
President's Choice: 10digitphonenumber@txt.bell.ca<br />
Sasktel: 10digitphonenumber@sms.sasktel.com<br />
Solo: 10digitphonenumber@txt.bell.ca<br />
</nowiki>}}<br />
<br />
*Install mailx which is provided by the {{Pkg|s-nail}} package that is found in the [[official repositories]].<br />
<br />
*Clear the {{ic|/etc/mail.rc}} file and enter:<br />
<br />
{{bc|<nowiki><br />
set sendmail="/usr/bin/mailx"<br />
set smtp=smtp.gmail.com:587<br />
set smtp-use-starttls<br />
set ssl-verify=ignore<br />
set ssl-auth=login<br />
set smtp-auth-user=USERNAME@gmail.com<br />
set smtp-auth-password=PASSWORD<br />
</nowiki>}}<br />
<br />
Now to send the text, we must pipe a message to the mailx program.<br />
*Make a Bash script:<br />
{{hc|/path/to/mail.sh|<nowiki><br />
echo "$@: Done" | mailx 5551234567@vtext.com<br />
</nowiki>}}<br />
Where the $@ is a variable holding all the arguments passed to our script.<br />
<br />
*And finally, add the important {{ic|~/.rtorrent.rc}} line:<br />
system.method.set_key = event.download.finished,notify_me,"execute=/path/to/mail.sh,$d.get_name="<br />
<br />
Breaking it down:<br />
<br />
{{ic|notify_me}} is the command id, which may be used by other commands, it can be just about anything you like, so long as it is unique.<br />
<br />
{{ic|1=execute=}} is the rtorrent command, in this case to execute a shell command.<br />
<br />
{{ic|/path/to/mail.sh}} is the name of our script (or whatever command you want to execute) followed by a comma separated list of all the switches/arguments to be passed.<br />
<br />
{{ic|1=$d.get_name=}} 'd' is an alias to whatever download triggered the command, get_name is a function which returns the name of our download, and the '$' tells rTorrent to replace the command with its output before it calls execute.<br />
<br />
The end result? When that torrent, 'All Live Nudibranches', that we started before leaving for work finishes, we will be texted:<br />
All Live Nudibranches: Done<br />
<br />
=== Displaying active torrents ===<br />
<br />
The rtorrent does not list the active tab properly by default, add this line to your {{ic|.rtorrent.rc}} to show only active torrents<br />
schedule = filter_active,30,30,"view_filter = active,\"or={d.get_up_rate=,d.get_down_rate=}\""<br />
<br />
Then press {{ic|9}} in your rTorrent client to see the changes in action.<br />
<br />
=== Manually adding trackers to torrents ===<br />
<br />
# Select torrent to edit from rTorrent console view.<br />
# Hit {{ic|Ctrl+x}}.<br />
# If you had four trackers type following lines one at a time (always press {{ic|Ctrl+x}} first) to add four more for example:<br />
<br />
d.tracker.insert="5","udp://tracker.publicbt.com:80"<br />
d.tracker.insert="6","udp://tracker.openbittorrent.com:80"<br />
d.tracker.insert="7","udp://tracker.istole.it:80"<br />
d.tracker.insert="8","udp://tracker.ccc.de:80"<br />
<br />
== Troubleshooting ==<br />
<br />
=== CA certificates ===<br />
<br />
To use rTorrent with a tracker that uses HTTPS, do the following as root:<br />
<br />
{{bc|<br />
# cd /etc/ssl/certs<br />
<nowiki># wget --no-check-certificate https://www.geotrust.com/resources/root_certificates/certificates/Equifax_Secure_Global_eBusiness_CA-1.cer</nowiki><br />
# mv Equifax_Secure_Global_eBusiness_CA-1.cer Equifax_Secure_Global_eBusiness_CA-1.pem<br />
# c_rehash<br />
}}<br />
<br />
And from now on run rTorrent with:<br />
$ rtorrent -o http_capath=/etc/ssl/certs<br />
<br />
If you use GNU Screen, update the {{ic|.screenrc}} configuration file to reflect this change:<br />
$ screen -t rtorrent rtorrent -o http_capath=/etc/ssl/certs<br />
<br />
In rTorrent 0.8.9, set {{ic|<nowiki>network.http.ssl_verify_peer.set=0</nowiki>}} to [https://bbs.archlinux.org/viewtopic.php?pid=981832#p981832 fix the problem].<br />
<br />
For more information see: [https://bbs.archlinux.org/viewtopic.php?pid=331850 rTorrent Error & CA Certificate] and [https://bbs.archlinux.org/viewtopic.php?id=45800 rTorrent Certificates Problem]<br />
<br />
=== Locked directories ===<br />
<br />
rTorrent can sometimes lock up after a crash or incorrect shutdown, and will complain about a lock file.<br />
<br />
Per the error message, the file called "'''rtorrent.lock'''" can be found within the hidden folder {{ic|.rtorrentsession}} for your download directory and manually removed.<br />
<br />
=== Event failed: bad return code ===<br />
<br />
This is caused by there being spaces in your system.method.* lines. Remove the spaces and it will work.<br />
<br />
== Web interface ==<br />
<br />
There are numerous web interfaces and front ends for rTorrent including:<br />
* [[WTorrent]] is a web interface to rtorrent programmed in php using Smarty templates and XMLRPC for PHP library.<br />
* [http://code.google.com/p/ntorrent/ nTorrent] is a graphical user interface client to rtorrent (a cli torrent client) written in Java.<br />
* [https://rtwi.jmk.hu/ rTWi] is a simple rTorrent web interface written in PHP.<br />
* [[Rtgui]] is a web based front end for rTorrent written in PHP and uses XML-RPC to communicate with the rTorrent client.<br />
* [https://github.com/Novik/ruTorrent rutorrent] and [http://forums.rutorrent.org/ Forum] - A web-based front-end with an interface very similar to uTorrent which supports many plugins and advanced features (see also: [[ruTorrent]] and [https://bbs.archlinux.org/viewtopic.php?pid=897577#p897577 Guide on forum]).<br />
<br />
{{Note|rTorrent is currently built using [http://xmlrpc-c.sourceforge.net/ XML-RPC for C/C++], which is required for some web interfaces (e.g. ruTorrent).}}<br />
<br />
=== XMLRPC interface ===<br />
<br />
If you want to use rtorrent with some web interfaces (e.g. rutorrent) you need to add the following line to the configuration file:<br />
scgi_port = localhost:5000<br />
<br />
For more information see: [https://github.com/rakshasa/rtorrent/wiki/RPC-Setup-XMLRPC Using XMLRPC with rtorrent]<br />
<br />
=== Saving magnet links as torrent files in watch folder ===<br />
<br />
{{Note| Rtorrent natively supports downloading torrents through magnet links. At the main view (reached by starting Rtorrent and pressing 1), press enter. At "load.normal>" paste the magnet link and press enter again. This will start the download.}}<br />
<br />
If you wish to have magnet links automatically added to your watch folder, here is a script that will do the trick:<br />
<br />
<nowiki><br />
#!/bin/bash<br />
watch_folder=~/.rtorrent/watch<br />
cd $watch_folder<br />
[[ "$1" =~ xt=urn:btih:([^&/]+) ]] || exit;<br />
echo "d10:magnet-uri${#1}:${1}e" > "meta-${BASH_REMATCH[1]}.torrent"</nowiki><br />
<br />
(adapted from http://blog.gonzih.org/blog/2012/02/17/how-to-use-magnet-links-with-rtorrent/).<br />
<br />
Save it, for instance as rtorrent-magnet, give it execution permission, and place it somewhere under your $PATH. Then in Firefox:<br />
# Type {{ic|about:config}} into the Location Bar (address bar) and press {{ic|Enter}}.<br />
# Right-click: ''New > Boolean > Name: '''network.protocol-handler.expose.magnet''' > Value > false''.<br />
# Next time you click a magnet link you will be asked which application to open it with. Select the script we just created and you will be done.<br />
<br />
If you want xdg-open to handle this, which you need if you are using chrome instead of firefox, (though gnome and other DE might have their own programs overriding xdg-open) you need to create the desktop entry for the rtorrent-magnet script in {{ic|~/.local/share/applications/rtorrent-magnet.desktop}} with the following content:<br />
<br />
<nowiki><br />
[Desktop Entry]<br />
Type=Application<br />
Name=rtorrent-magnet<br />
Exec=rtorrent-magnet %U<br />
MimeType=x-scheme-handler/magnet;<br />
NoDisplay=true</nowiki><br />
<br />
Then all you need to do is to register the mimetype using<br />
$ xdg-mime default rtorrent-magnet.desktop x-scheme-handler/magnet<br />
<br />
== Magnet to Torrent ==<br />
You could also use the {{AUR|magnet2torrent-git}} package which downloads the metadata and creates a torrent file.<br />
<br />
How to use:<br />
$ magnet2torrent <magnet link> [torrent file]<br />
<br />
== rtorrent-pyro ==<br />
<br />
{{AUR|rtorrent-pyro}}{{Broken package link|{{aur-mirror|rtorrent-pyro}}}} from the [[AUR]] comes with an extended rtorrent console interface. It does not contain the pyroscope tools yet though. If you also need the pyroscope tools see [[#PyroScope]] .<br />
<br />
Make sure you add following command to ~/.rtorrent.rc, which makes the asterisk key * to a shortcut for toggling between extended and collapsed view within rtorrent's interface:<br />
{{bc|<nowiki>schedule = bind_collapse,0,0,"ui.bind_key=download_list,*,view.collapsed.toggle="</nowiki>}}<br />
<br />
Also set "pyro.extended" to 1 to activate rTorrent-PS features.<br />
{{bc|<nowiki>system.method.insert = pyro.extended, value|const, 1</nowiki>}}<br />
<br />
=== PyroScope ===<br />
<br />
We create a directory for the installation of pyroscope, then download and update the source code from subversion:<br />
{{bc|<nowiki>mkdir -p ~/.lib<br />
svn checkout http://pyroscope.googlecode.com/svn/trunk/ ~/.lib/pyroscope<br />
~/.lib/pyroscope/update-to-head.sh</nowiki>}}<br />
Adding pyroscope bin's PATH to .bashrc:<br />
{{bc|<nowiki>export PATH=$PATH:path_to_the_bin # Example path for pyroscope bin's: /home/user/.lib/pyroscope/bin/</nowiki>}}<br />
Creating the ~/.pyroscope/config.ini:<br />
{{bc|<nowiki>pyroadmin --create-config</nowiki>}}<br />
<br />
Add this to your ~/.rtorrent.rc. Do not forget to add the path of your pyroscope bin's dir (see below).<br />
{{bc|<nowiki>system.method.insert = pyro.bin_dir, string|const, write_here_path_to_your_pyroscope_bin_dir # Example path: /home/user/.lib/pyroscope/bin/<br />
system.method.insert = pyro.rc_dialect, string|const|simple, "execute_capture=bash,-c,\"test $1 = 0.8.6 && echo -n 0.8.6 || echo -n 0.8.9\",dialect,$system.client_version="<br />
system.method.insert = pyro.rtorrent_rc, string|const|private, "$cat=~/.pyroscope/rtorrent-,\"$pyro.rc_dialect=\",.rc.default"<br />
import = $pyro.rtorrent_rc=</nowiki>}}<br />
<br />
Optionally: TORQUE: Daemon watchdog schedule. Must be activated by touching the "~/.pyroscope/run/pyrotorque" file!<br />
You can also just use rtorrent watch dir or give pyro_watchdog a try, which comes with 'treewatch' ability, meaning it also watches for torrents recursively within the given watch path. Further documentation for pyro_watchdog is here: <br />
[http://code.google.com/p/pyroscope/wiki/QueueManager] <br />
To enable pyro_watchdog, add this in ~/.rtorrent.rc and further configurations are in ~/.pyroscope/torque.ini. <br />
{{bc|<nowiki>schedule = pyro_watchdog,30,300,"pyro.watchdog=~/.pyroscope,-v"</nowiki>}}<br />
<br />
Following steps are important. Before using pyroscope tools you have to set the missing "loaded" times to that of the .torrent file. Run this in your terminal:<br />
{{bc|<nowiki>rtcontrol '!*"*' loaded=0 -q -sname -o 'echo "$(name)s"\ntest -f "$(metafile)s" && rtxmlrpc -q d.set_custom $(hash)s tm_loaded \$(\<br />
ls -l --time-style "+%%s" "$(metafile)s" \<br />
| cut -f6 -d" ")\nrtxmlrpc -q d.save_session $(hash)s' | bash</nowiki>}}<br />
<br />
And now set the missing "completed" times to that of the data file or directory:<br />
{{bc|<nowiki>rtcontrol '!*"*' completed=0 done=100 path=\! is_ghost=no -q -sname -o 'echo "$(name)s"\ntest -e "$(realpath)s" && rtxmlrpc -q d.set_custom $(hash)s tm_completed \$(\<br />
ls -ld --time-style "+%%s" "$(realpath)s" \<br />
| cut -f6 -d" ")\nrtxmlrpc -q d.save_session $(hash)s' | bash</nowiki>}}<br />
<br />
Example usage:<br />
Will print out all torrents older than 2 hours:<br />
{{bc|<nowiki>rtcontrol -V completed=+2h -scompleted -ocompleted</nowiki>}}<br />
Deletes all torrents older than 48 hours:<br />
{{bc|<nowiki>rtcontrol -V completed=+48h -scompleted -ocompleted --cull --yes</nowiki>}}<br />
<br />
== See also ==<br />
<br />
* [[Screen Tips]]<br />
* [[Wikipedia:Comparison of BitTorrent clients|Comparison of BitTorrent clients]] on Wikipedia<br />
* [http://community.rutorrent.org/ rTorrent Community Wiki] - Public place for information on rTorrent and any project related to rTorrent, regarding setup, configuration, operations, and development.<br />
* [http://code.google.com/p/pyroscope/ PyroScope] - Collection of command line tools for rTorrent. It provides commands for creating and modifying torrent files, moving data on completion without having multiple watch folders, and mass-controlling download items via rTorrent's XML-RPC interface: searching, start/stop, deleting items with or without their data, etc. It also offers a documented [[Python]] API.<br />
* [[Rutorrent with lighttpd|ruTorrent with Lighttpd]]<br />
* [http://wiki.theaveragegeek.com/howto/installing_rtorrent_and_hellanzb_on_centos5_64-bit_vps How-to install rTorrent and Hellanzb on CentOS 5 64-bit VPS]<br />
* [http://code.google.com/p/pyroscope/wiki/DebianInstallFromSource Installation guide for rTorrent and Pyroscope on Debian] - Collection of tools for the BitTorrent protocol and especially the rTorrent client<br />
* [http://mktorrent.sourceforge.net/ mktorrent] - Command line application used to generate torrent files, which is available as {{Pkg|mktorrent}} in the [[official repositories]].<br />
* [https://github.com/kfei/docktorrent docktorrent] - Using Docker, rTorrent and ruTorrent to run a full-featured BitTorrent box.<br />
* [https://github.com/nelhage/reptyr reptyr] - another tool to take over a program's TTY (it is in the standard repos). The process may have started being attached to a terminal or to a socket in tmux, screen or dtach.<br />
* [http://caca.zoy.org/wiki/neercs neercs] - a more screen/tmux like tool than reptyr, but, like reptyr, neercs can also "steal" a process that may have started slaved to a terminal or to a socket in tmux, screen or dtach. {{AUR|neercs-git}}{{Broken package link|{{aur-mirror|neercs-git}}}}<br />
<br />
'''Forum threads'''<br />
* 2009-03-11 - Arch Linux - [https://bbs.archlinux.org/viewtopic.php?id=67304 HOWTO: rTorrent stats in Conky]</div>Ygyfygyhttps://wiki.archlinux.org/index.php?title=PCI_passthrough_via_OVMF&diff=428109PCI passthrough via OVMF2016-03-27T13:21:08Z<p>Ygyfygy: /* Installation */ ls → ls -l</p>
<hr />
<div>[[Category:Virtualization]]<br />
[[ja:OVMF による PCI パススルー]]<br />
{{Expansion|Missing introduction and descriptions of ''why'' the steps are necessary (it may be explained in the external sources, but still...)}}<br />
<br />
This is a guide on how to do PCI VGA Passthrough on QEMU. Since kernel 3.9 and a change in QEMU, it is now possible to passthrough a graphics card, offering the VM native graphics performance which is useful when doing graphic-intensive tasks such as gaming. To do this, you need two graphics cards, one for the host and one for the VM; it is possible to use integrated graphics for the host. Your processor and motherboard also need to support AMD-VI/VT-D.<br />
<br />
==Installation==<br />
<br />
[[Install]] {{Pkg|qemu}} and {{Pkg|rpmextract}}. Consider installing {{AUR|linux-vfio}} if you need the kernel with the patches.<br />
<br />
Install edk2.git-ovmf-x64 from [https://www.kraxel.org/repos/jenkins/edk2/ Gerd Hoffman's repository].<br />
<br />
Extract that archive to /usr:<br />
<br />
{{bc|# rpmextract.sh edk2.git-ovmf-x64-0-20150223.b877.ga8577b3.noarch.rpm<br />
# cp -R ./usr/share/* /usr/share}}<br />
<br />
Ensure /usr/share/edk2.git/ovmf-x64 contains these files:<br />
{{hc|$ ls -l /usr/share/edk2.git/ovmf-x64/*pure*.fd|<br />
/usr/share/edk2.git/ovmf-x64/OVMF-pure-efi.fd<br />
/usr/share/edk2.git/ovmf-x64/OVMF_VARS-pure-efi.fd<br />
/usr/share/edk2.git/ovmf-x64/OVMF_CODE-pure-efi.fd}}<br />
<br />
This will be the BIOS that the VM will use. Non-UEFI users may need to use i440fx without OVMF, and the i915 vga arbiter patch for Intel graphics as host, see this forum thread. For users that do have a UEFI compatible motherboard but a UEFI incompatible graphics card, look at this post.<br />
<br />
==Setting up libvirt==<br />
<br />
See [[Polkit#Bypass password prompt]] to bypass the password prompt, install {{pkg|libvirt}}, then [[enable]] and start {{ic|libvirtd.service}}.<br />
<br />
Start ''virt-manager'' and configure the hypervisor. Virtmanager should connect to the qemu session.<br />
<br />
==Enabling IOMMU==<br />
<br />
Ensure that AMD-VI/VT-D is enabled in your BIOS settings.<br />
<br />
If your processor is Intel, add {{ic|intel_iommu<nowiki>=</nowiki>on}} to your [[Kernel_parameters|bootloader kernel options]]. Simlarly, if you have an AMD processor, add {{ic|amd_iommu<nowiki>=</nowiki>on}}.<br />
<br />
After rebooting, check dmesg to confirm IOMMU is enabled:<br />
{{hc|dmesg<nowiki>|</nowiki>grep -e DMAR -e IOMMU|<br />
[ 0.000000] ACPI: DMAR 0x00000000BDCB1CB0 0000B8 (v01 INTEL BDW 00000001 INTL 00000001)<br />
[ 0.000000] Intel-IOMMU: enabled<br />
[ 0.028879] dmar: IOMMU 0: reg_base_addr fed90000 ver 1:0 cap c0000020660462 ecap f0101a<br />
[ 0.028883] dmar: IOMMU 1: reg_base_addr fed91000 ver 1:0 cap d2008c20660462 ecap f010da<br />
[ 0.028950] IOAPIC id 8 under DRHD base 0xfed91000 IOMMU 1<br />
[ 0.536212] DMAR: No ATSR found<br />
[ 0.536229] IOMMU 0 0xfed90000: using Queued invalidation<br />
[ 0.536230] IOMMU 1 0xfed91000: using Queued invalidation<br />
[ 0.536231] IOMMU: Setting RMRR:<br />
[ 0.536241] IOMMU: Setting identity map for device 0000:00:02.0 [0xbf000000 - 0xcf1fffff]<br />
[ 0.537490] IOMMU: Setting identity map for device 0000:00:14.0 [0xbdea8000 - 0xbdeb6fff]<br />
[ 0.537512] IOMMU: Setting identity map for device 0000:00:1a.0 [0xbdea8000 - 0xbdeb6fff]<br />
[ 0.537530] IOMMU: Setting identity map for device 0000:00:1d.0 [0xbdea8000 - 0xbdeb6fff]<br />
[ 0.537543] IOMMU: Prepare 0-16MiB unity mapping for LPC<br />
[ 0.537549] IOMMU: Setting identity map for device 0000:00:1f.0 [0x0 - 0xffffff]<br />
[ 2.182790] [drm] DMAR active, disabling use of stolen memory}}<br />
<br />
==User-level access to devices==<br />
Create udev rules to give user-access to devices (hdd and gpu):<br />
{{hc|/etc/udev/rules.d/10-qemu-hw-users.rules|KERNEL<nowiki>==</nowiki>"sda[3-6]", OWNER<nowiki>=</nowiki>"YOUR_USER", GROUP<nowiki>=</nowiki>"YOUR_GROUP"<br />
KERNEL<nowiki>==</nowiki>"YOUR_VFIO_GROUPS", SUBSYSTEM<nowiki>==</nowiki>"vfio", OWNER<nowiki>=</nowiki>"YOUR_USER", GROUP<nowiki>=</nowiki>"YOUR_USER"}}<br />
This should allow you to set qemu user and group to something a little safer than root:root in /etc/libvirtd/qemu.conf<br />
<br />
==Isolating the GPU==<br />
<br />
Find your target card's PCI locations and device IDs:<br />
{{hc|lspci -nn<nowiki>|</nowiki>grep -iP "NVIDIA<nowiki>|</nowiki>Radeon"|<br />
01:00.0 VGA compatible controller [0300]: Advanced Micro Devices, Inc. [AMD/ATI] Cayman PRO [Radeon HD 6950] [1002:6719]<br />
01:00.1 Audio device [0403]: Advanced Micro Devices, Inc. [AMD/ATI] Cayman/Antilles HDMI Audio [Radeon HD 6900 Series] [1002:aa80]<br />
04:00.0 VGA compatible controller [0300]: NVIDIA Corporation G73 [GeForce 7600 GS] [10de:0392] (rev a1)}}<br />
<br />
In this case, the three PCI device IDs we're after are {{ic|1002:6719 1002:aa80 10de:0392}}, and their locations are {{ic|01:00.0 01:00.1 04:00.0}}. Make note of any locations and device IDs you intend to pass through to the VM.<br />
<br />
To allow the VM access to your passthrough'd devices, you'll need to claim it before the host drivers do. This can be achieved with either one of two kernel modules, {{ic|vfio-pci}} or {{ic|pci-stub}}.<br />
<br />
vfio-pci is available in kernel v4.1+, and is the recommended option if your kernel supports it. You can check if this module is available by running:<br />
<br />
$ modprobe vfio-pci<br />
<br />
If there is no output, you're good to go. If instead you receive {{ic|modprobe: FATAL: Module vfio-pci not found}}, use the guide further down for {{ic|pci-stub}} instead.<br />
<br />
=== vfio-pci ===<br />
<br />
Ensure the vfio-pci driver is loaded on bootup through {{ic|modprobe.d}}. It is necessary to tell the vfio-pci driver which PCI devices to bind. If you were adding all three of the PCI devices listed above, your modprobe.d launch config would have the following contents:<br />
<br />
{{hc|<nowiki>/etc/modprobe.d/vfio.conf</nowiki>|<nowiki><br />
options vfio-pci ids=1002:6719,1002:aa80,10de:0392<br />
</nowiki>}}<br />
<br />
Next we'll want to ensure the kernel loads the necessary modules for vfio-pci when starting up:<br />
<br />
{{hc|<nowiki>/etc/mkinitcpio.conf</nowiki>|<nowiki>...<br />
MODULES="vfio vfio_iommu_type1 vfio_pci vfio_virqfd"<br />
...</nowiki>}}<br />
<br />
Save the changes to the initial ramdisk environment:<br />
<br />
# mkinitcpio -p linux<br />
{{Note|If you're using a non-standard kernel, replace "linux" with whichever kernel you intend to use.}}<br />
<br />
When using the 'base' hook in the initramfs, all modules specified in the MODULES array are loaded statically early in the boot process. The same behavior can be achieved with the 'systemd' hook by using the 'rd.modules-load' kernel parameter to specify modules that should be statically loaded early.<br />
<br />
rd.modules-load=vfio-pci,...<br />
<br />
Reboot and check dmesg output for successful assignment of the device(s) to vfio-pci:<br />
<br />
{{hc|dmesg <nowiki>|</nowiki> grep -i vfio|...<br />
[ 0.456472] VFIO - User Level meta-driver version: 0.3<br />
[ 0.470269] vfio_pci: add [10de:13c2[ffff:ffff]] class 0x000000/00000000<br />
[ 0.483631] vfio_pci: add [10de:0fbb[ffff:ffff]] class 0x000000/00000000<br />
[ 0.496998] vfio_pci: add [8086:8ca0[ffff:ffff]] class 0x000000/00000000<br />
[ 2.420184] vfio-pci 0000:0a:00.0: enabling device (0000 -> 0003)<br />
[ 38.590395] vfio_ecap_init: 0000:0a:00.0 hiding ecap 0x1e@0x258<br />
[ 38.590413] vfio_ecap_init: 0000:0a:00.0 hiding ecap 0x19@0x900<br />
[ 38.606881] vfio-pci 0000:0a:00.1: enabling device (0000 -> 0002)<br />
[ 38.620241] vfio-pci 0000:00:1b.0: enabling device (0000 -> 0002)<br />
...}}<br />
<br />
You can cross reference devices id's with {{ic|lspci -nn}}'s output.<br />
<br />
=== pci-stub ===<br />
<br />
If your kernel does not support vfio-pci, you can use the pci-stub module instead.<br />
<br />
Add {{ic|pci-stub}} to {{ic|/etc/mkinitcpio.conf}}:<br />
{{hc|<nowiki>/etc/mkinitcpio.conf</nowiki>|<nowiki>MODULES="... pci-stub ..."</nowiki>}}<br />
If it doesn't work, try adding it to /etc/modules-load.d/ as well:<br />
# echo pci-stub > /etc/modules-load.d/vfio.conf<br />
<br />
Add the relevant PCI device IDs to the kernel command line:<br />
{{hc|<nowiki>/etc/mkinitcpio.conf</nowiki>|<nowiki>...<br />
GRUB_CMDLINE_LINUX_DEFAULT="... pci-stub.ids=1002:6719,1002:aa80,10de:0392 ..."<br />
...</nowiki>}}<br />
<br />
If your graphics card has audio as a separated PCI device, it must be added as well:<br />
pci-stub.ids=1002:6719,1002:aa80<br />
<br />
Reload the grub configuration:<br />
<br />
# grub-mkconfig -o /boot/grub/grub.cfg<br />
<br />
Check dmesg output for successful assignment of the device to pci-stub:<br />
{{hc|dmesg <nowiki>|</nowiki> grep pci-stub|<br />
...<br />
[ 2.390128] pci-stub: add 1002:6719 sub<nowiki>=</nowiki>FFFFFFFF:FFFFFFFF cls<nowiki>=</nowiki>00000000/00000000<br />
[ 2.390143] pci-stub 0000:01:00.0: claimed by stub<br />
[ 2.390150] pci-stub: add 1002:AA80 sub<nowiki>=</nowiki>FFFFFFFF:FFFFFFFF cls<nowiki>=</nowiki>00000000/00000000<br />
[ 2.390159] pci-stub 0000:01:00.1: claimed by stub<br />
[ 2.390150] pci-stub: add 1002:0392 sub<nowiki>=</nowiki>FFFFFFFF:FFFFFFFF cls<nowiki>=</nowiki>00000000/00000000<br />
[ 2.390159] pci-stub 0000:04:00.0: claimed by stub<br />
...}}<br />
<br />
=== Blacklisting modules ===<br />
<br />
Alternatively, if your host does not require the driver of the PCI device you intend to pass through (i.e. your host and VM are not using the same GPU vendor), you can blacklist {{ic|radeon}} and {{ic|fglrx}} for AMD GPUs, or {{ic|nouveau}} and {{ic|nvidia}} for NVIDIA GPus in {{ic|/etc/modprobe.d/blacklist.conf}}.<br />
<br />
Example, blacklisting the opensource radeon module:<br />
{{hc|/etc/modprobe.d/modprobe.conf|blacklist radeon}}<br />
<br />
=== Binding to VFIO ===<br />
<br />
There are many methods to bind the card to vfio, here is one example:<br />
*[http://www.firewing1.com/howtos/fedora-20/create-gaming-virtual-machine-using-vfio-pci-passthrough-kvm firewing1 webpage]. Check the part after grub2-mkconfig.<br />
<br />
== IOMMU groups ==<br />
<br />
Only complete IOMMU groups can be attached to the guest VM. To see which groups each of your PCI devices are assigned to:<br />
<br />
{{hc|# find /sys/kernel/iommu_groups/ -type l|<br />
/sys/kernel/iommu_groups/0/devices/0000:00:00.0<br />
/sys/kernel/iommu_groups/1/devices/0000:00:01.0<br />
/sys/kernel/iommu_groups/1/devices/0000:01:00.0<br />
/sys/kernel/iommu_groups/1/devices/0000:01:00.1<br />
/sys/kernel/iommu_groups/2/devices/0000:00:02.0<br />
/sys/kernel/iommu_groups/3/devices/0000:00:16.0<br />
/sys/kernel/iommu_groups/4/devices/0000:00:1a.0<br />
/sys/kernel/iommu_groups/5/devices/0000:00:1b.0<br />
/sys/kernel/iommu_groups/6/devices/0000:00:1c.0<br />
/sys/kernel/iommu_groups/7/devices/0000:00:1c.5<br />
/sys/kernel/iommu_groups/8/devices/0000:00:1c.6<br />
/sys/kernel/iommu_groups/9/devices/0000:00:1c.7<br />
/sys/kernel/iommu_groups/9/devices/0000:05:00.0<br />
/sys/kernel/iommu_groups/10/devices/0000:00:1d.0<br />
/sys/kernel/iommu_groups/11/devices/0000:00:1f.0<br />
/sys/kernel/iommu_groups/11/devices/0000:00:1f.2<br />
/sys/kernel/iommu_groups/11/devices/0000:00:1f.3<br />
/sys/kernel/iommu_groups/12/devices/0000:02:00.0<br />
/sys/kernel/iommu_groups/12/devices/0000:02:00.1<br />
/sys/kernel/iommu_groups/13/devices/0000:03:00.0<br />
/sys/kernel/iommu_groups/14/devices/0000:04:00.0}}<br />
<br />
=== ACS Override Patch ===<br />
If you find your PCI devices grouped among others that you don't wish to pass through, you may be able to seperate them using Alex Williamson's ACS override patch. Make sure you understand [http://vfio.blogspot.com/2014/08/iommu-groups-inside-and-out.html the potential risk] of doing so.<br />
<br />
You'll need a kernel with the patch applied. The easiest method to acquiring this is through the {{AUR|linux-vfio}} package. <br />
<br />
In addition, the ACS override patch needs to be enabled with kernel command line options. The patch file adds the following documentation:<br />
<br />
pcie_acs_override =<br />
[PCIE] Override missing PCIe ACS support for:<br />
downstream<br />
All downstream ports - full ACS capabilties<br />
multifunction<br />
All multifunction devices - multifunction ACS subset<br />
id:nnnn:nnnn<br />
Specfic device - full ACS capabilities<br />
Specified as vid:did (vendor/device ID) in hex<br />
<br />
The option {{ic|pcie_acs_override<nowiki>=</nowiki>downstream}} is typically sufficient.<br />
<br />
After installation and configuration, reconfigure your [[Kernel parameters|bootloader kernel parameters]] to load the new kernel with the {{ic|pcie_acs_override<nowiki>=</nowiki>}} option enabled.<br />
<br />
== QEMU permissions ==<br />
<br />
Give QEMU access to hardware (there may be safer ways of doing this):<br />
{{hc|<nowiki>/etc/libvirt/qemu.conf</nowiki>|<nowiki>...<br />
user = "root"<br />
group = "root"<br />
clear_emulator_capabilities = 0</nowiki>}}<br />
<br />
QEMU also needs acces to VFIO files. Include every numbered file in /dev/vfio:<br />
<br />
ls -1 /dev/vfio<br />
<br />
{{hc|<nowiki>/etc/libvirt/qemu.conf</nowiki>|<nowiki>...<br />
cgroup_device_acl = [<br />
"/dev/null", "/dev/full", "/dev/zero",<br />
"/dev/random", "/dev/urandom",<br />
"/dev/ptmx", "/dev/kvm", "/dev/kqemu",<br />
"/dev/rtc","/dev/hpet", "/dev/vfio/vfio",<br />
"/dev/vfio/1"<br />
]<br />
...</nowiki>}}<br />
<br />
Referenced from [http://www.firewing1.com/howtos/fedora-20/create-gaming-virtual-machine-using-vfio-pci-passthrough-kvm firewing1's webpage].<br />
<br />
== QEMU commands ==<br />
<br />
This is the command to run QEMU with VGA Passthrough:<br />
cp /usr/share/edk2.git/ovmf-x64/OVMF_VARS-pure-efi.fd /tmp/my_vars.fd<br />
qemu-system-x86_64 \<br />
-enable-kvm \<br />
-m 2048 \<br />
-cpu host,kvm=off \<br />
-vga none \<br />
-device vfio-pci,host=01:00.0 \<br />
-drive if=pflash,format=raw,readonly,file=/usr/share/edk2.git/ovmf-x64/OVMF_CODE-pure-efi.fd \<br />
-drive if=pflash,format=raw,file=/tmp/my_vars.fd<br />
<br />
{{ic|1=-enable KVM}} - enables KVM for your system, using AMD-VI/VT-D for hardware virtualisation.<br />
<br />
{{ic|1=-m [number]}} - sets the amount of memory the VM should have.<br />
<br />
{{ic|1=-cpu host, kvm=off}} - emulate the host's exact CPU. {{ic|1=kvm=off}} is used for NVIDIA cards to stop it detecting a hypervisor and therefore exiting with an error.<br />
<br />
{{ic|1=-vga none}} - disables the built in graphics card emulation.<br />
<br />
{{ic|1=-device vfio-pci,host=01:00.0 \}} - PCI location of graphics card(s) you are using for VGA passthrough.<br />
<br />
{{ic|1=-drive if=flash,format=raw,readonly,file=/usr/share/edk2.git/ovmf-x64/OVMF_CODE-pure-efi.fd}} BIOS location.<br />
<br />
For more commands see [[QEMU]].<br />
<br />
==Create and configure VM for OVMF==<br />
<br />
[http://vfio.blogspot.com/2014/08/primary-graphics-assignment-without-vga.html Alex Williamson's blog]<br />
<br />
Use virsh to edit the VM with these changes:<br />
<br />
{{bc|<nowiki><domain type='kvm'></nowiki>}}<br />
<br />
{{bc|<nowiki><os><br />
<loader readonly='yes' type='pflash'>/usr/share/edk2.git/ovmf-x64/OVMF_CODE-pure-efi.fd</loader><br />
<nvram template='/usr/share/edk2.git/ovmf-x64/OVMF_VARS-pure-efi.fd'/><br />
</os></nowiki>}}<br />
{{bc|<nowiki><hyperv><br />
<relaxed state='off'/><br />
<vapic state='off'/><br />
<spinlocks state='off'/><br />
</hyperv></nowiki>}}<br />
{{bc|<nowiki><features><br />
<kvm><br />
<hidden state='on'/><br />
</kvm><br />
</features></nowiki>}}<br />
{{bc|<nowiki><clock><br />
<timer name='hypervclock' present='no'/><br />
</clock></nowiki>}}<br />
<br />
A guide from: [http://vfio.blogspot.com/2014/08/primary-graphics-assignment-without-vga.html Alex Williamson's blog - using virt-manager] can also be used, but in order to make virt-manager discover UEFI on your system, you need to tell your QEMU where to look for ovmf first. Edit your <br />
{{ic|1=/etc/libvirt/qemu.conf}} appending this at the end of it:<br />
nvram = [<br />
"/usr/share/edk2.git/ovmf-x64/OVMF_CODE-pure-efi.fd:/usr/share/edk2.git/ovmf-x64/OVMF_VARS-pure-efi.fd",<br />
]<br />
then restart libvirtd,<br />
systemctl restart libvirtd.service<br />
and you are good to go.<br />
<br />
== Complete example for QEMU (CLI-based) without libvirtd ==<br />
<br />
This script starts Samba and Synergy, runs the VM and closes everything after the VM is shut down. Note that this method does '''not''' require libvirtd to be running or configured, although the second statement hasn't been verified.<br />
<br />
#!/bin/bash<br />
<br />
echo "Starting Samba"<br />
sudo systemctl start smbd.service<br />
sudo systemctl start nmbd.service<br />
<br />
echo "Starting Synergy"<br />
/usr/bin/synergys --daemon --config /etc/synergy.conf<br />
<br />
# This is probably not neccesary, except when updating the OVMF bios<br />
# echo "Removing old OVMF variables"<br />
# rm -v ./Windows_ovmf_vars_x64.bin<br />
# echo "Copying new OVMF variables"<br />
# cp -v /usr/share/ovmf/x64/ovmf_vars_x64.bin ./Windows_ovmf_vars_x64.bin<br />
<br />
echo "Exporting PulseAudio driver"<br />
export QEMU_AUDIO_DRV="pa"<br />
<br />
echo "Starting VM"<br />
sudo \<br />
qemu-system-x86_64 \<br />
-serial none \<br />
-parallel none \<br />
-nodefaults \<br />
-nodefconfig \<br />
-enable-kvm \<br />
-name Windows \<br />
-cpu host,kvm=off,check \<br />
-smp sockets=1,cores=4,threads=2 \<br />
-m 12288 \<br />
-soundhw hda \<br />
-device ich9-usb-uhci3,id=uhci \<br />
-device usb-ehci,id=ehci \<br />
-device nec-usb-xhci,id=xhci \<br />
-drive if=pflash,format=raw,readonly,file=/usr/share/ovmf/x64/ovmf_code_x64.bin \<br />
-drive if=pflash,format=raw,file=./Windows_ovmf_vars_x64.bin \<br />
-rtc base=localtime \<br />
-boot order=c \<br />
-net nic,vlan=0,macaddr=52:54:00:00:00:01,model=virtio,name=net0 \<br />
-net bridge,vlan=0,name=bridge0,br=br0 \<br />
-drive if=virtio,id=drive0,file=./Windows.img,format=raw,cache=none,aio=native \<br />
-nographic \<br />
-device vfio-pci,host=04:00.0,addr=09.0,multifunction=on \<br />
-device vfio-pci,host=04:00.1,addr=09.1<br />
<br />
# For GPU sound<br />
# add ",multifunction=on" to GPU<br />
# -device vfio-pci,host=04:00.1,addr=09.1<br />
<br />
# Standard VGA<br />
# Remove "-nographic \" and "-device vfio-pci" lines<br />
# -vga std<br />
<br />
# Install<br />
# In addination to the steps "Standard VGA", add or change these options<br />
# -boot order=d \<br />
# -device ide-cd,drive=drive-cd-disk1,id=cd-disk1,unit=0,bus=ide.0 \<br />
# -drive file=/run/media/melvin/primarydata/Data/OS/Windows_10.img,if=none,id=drive-cd-disk1,media=cdrom \<br />
# -device ide-cd,drive=drive-cd-disk2,id=cd-disk2,unit=0,bus=ide.1 \<br />
# -drive file=/run/media/melvin/primarydata/Data/OS/virtio-win-0.1.109.iso,if=none,id=drive-cd-disk2,media=cdrom \<br />
<br />
echo "VM closed"<br />
<br />
echo "Stopping Synergy"<br />
pkill synergys<br />
<br />
echo "Stopping Samba"<br />
sudo systemctl stop smbd.service<br />
sudo systemctl stop nmbd.service<br />
<br />
<br />
For more information regarding this example see [https://www.redhat.com/archives/vfio-users/2015-August/msg00020.html this email at Red Hat's vfio-users list].<br />
<br />
== Control VM via Synergy ==<br />
[http://synergy-project.org/ Synergy] lets you easily share a single mouse and keyboard between multiple computers (even with different operating systems) without the need for special hardware. It is intended for users with multiple computers on their desk since each system uses its own monitor(s). See [[Synergy]] arch wiki page for more information.<br />
<br />
To control the VM using Synergy, first [[install]] the {{pkg|synergy}} package.<br />
<br />
Additionally, ensure that you are not passing your keyboard or mouse through to the VM, as the Synergy server will be running on the host and thus need access to those devices.<br />
<br />
Create the synergy server config.<br />
<br />
{{hc|<nowiki>/etc/synergy.conf</nowiki>|<nowiki># Example config<br />
section: screens<br />
vm:<br />
halfDuplexCapsLock = false<br />
halfDuplexNumLock = false<br />
halfDuplexScrollLock = false<br />
xtestIsXineramaUnaware = false<br />
switchCorners = none <br />
switchCornerSize = 0<br />
host:<br />
halfDuplexCapsLock = false<br />
halfDuplexNumLock = false<br />
halfDuplexScrollLock = false<br />
xtestIsXineramaUnaware = false<br />
switchCorners = none <br />
switchCornerSize = 0<br />
end<br />
<br />
section: aliases<br />
vm:<br />
10.0.2.15 # default for vm<br />
host:<br />
10.0.2.2 # default for host<br />
end<br />
<br />
section: links<br />
vm:<br />
right = host<br />
host:<br />
left = vm<br />
end<br />
<br />
section: options<br />
relativeMouseMoves = false<br />
screenSaverSync = true<br />
win32KeepForeground = false<br />
switchCorners = none <br />
switchCornerSize = 0<br />
end</nowiki>}}<br />
<br />
Replace {{ic|1=vm}} and {{ic|1=host}} with the hostnames of your Virtual Machine and host OS respectively.<br />
<br />
Add {{ic|1=altgr = alt}} in the section screens/vm if your Alt Gr key dosen't work properly.<br />
<br />
Before you start qemu or within your startup script:<br />
<br />
$ /usr/bin/synergys --daemon --config /etc/synergy.conf<br />
<br />
Now download and configure synergy as a client on the Virtual Machine. Exact configurations depend on the virtual OS. However, if you are running QEMU in User Networking Mode (default), the default IP of the host is {{ic|1=10.0.2.2}}.<br />
<br />
If while playing a game and the mouse behaves wonky or is too sensitive, change the {{ic|1=relativeMouseMoves = false}} line in the {{ic|options}} section to {{ic|1=relativeMouseMoves = true}} and while playing a game, press the {{ic|Scroll Lock}} key to lock your mouse to the VM.<br />
<br />
== Operating system ==<br />
<br />
Depending on your operating system, you may find that it may refuse to boot after a certain point. To work around this, simply replace {{ic|-vga none}} to {{ic|-vga qxl}}, install your operating system, check Device Manager and see if your graphics card has PCI device id equal to your actual GPU and install the graphics card driver, and then change it back to {{ic|-vga none}}.<br />
<br />
== Make Nvidia's GeForce Experience work ==<br />
<br />
If GeForce Experience complains about an unsupported CPU being present and some features, e.g. game optimization, don't work, passing the {{ic|1=ignore_msrs=1}} option to the KVM module will most likely solve the problem by ignoring accesses to unimplemented MSRs:<br />
<br />
{{hc|<nowiki>/etc/modprobe.d/kvm.conf</nowiki>|<nowiki>...<br />
options kvm ignore_msrs=1<br />
...</nowiki>}}<br />
<br />
{{Warning|Silently ignoring unknown MSR accesses could potentially break other software within the VM or other VMs.}}<br />
<br />
== See also ==<br />
* [https://bbs.archlinux.org/viewtopic.php?id=162768 Discussion on Arch Linux forums] | [https://archive.is/kZYMt Archived link]<br />
* [https://docs.google.com/spreadsheet/ccc?key=0Aryg5nO-kBebdFozaW9tUWdVd2VHM0lvck95TUlpMlE User contributed hardware compatibility list]<br />
* [http://pastebin.com/rcnUZCv7 Example script from https://www.youtube.com/watch?v=37D2bRsthfI]<br />
* [http://vfio.blogspot.com/ Complete tutorial for PCI passthrough]</div>Ygyfygyhttps://wiki.archlinux.org/index.php?title=PulseAudio&diff=427613PulseAudio2016-03-24T23:21:50Z<p>Ygyfygy: /* Front-ends */ A package pulsemixer exists in the AUR. Recommending *-git packages is nicht schoen.</p>
<hr />
<div>[[Category:Sound]]<br />
[[cs:PulseAudio]]<br />
[[es:PulseAudio]]<br />
[[fr:PulseAudio]]<br />
[[it:PulseAudio]]<br />
[[ja:PulseAudio]]<br />
[[pt:PulseAudio]]<br />
[[ru:PulseAudio]]<br />
[[tr:PulseAudio]]<br />
[[zh-CN:PulseAudio]]<br />
{{Related articles start}}<br />
{{Related|PulseAudio/Examples}}<br />
{{Related|PulseAudio/Troubleshooting}}<br />
{{Related articles end}}<br />
[[Wikipedia:PulseAudio|PulseAudio]] serves as a proxy to sound applications using existing kernel sound components like [[ALSA]] or [[OSS]]. Since ALSA is included in Arch Linux by default, the most common deployment scenarios include PulseAudio with ALSA.<br />
<br />
== Installation ==<br />
<br />
Install the {{Pkg|pulseaudio}} package.<br />
<br />
Some PulseAudio modules have been [https://www.archlinux.org/news/pulseaudio-split/ split] from the main package and must be installed separately if needed:<br />
<br />
* {{Pkg|pulseaudio-bluetooth}}: Bluetooth (Bluez) support<br />
* {{Pkg|pulseaudio-equalizer}}: Equalizer sink (qpaeq)<br />
* {{Pkg|pulseaudio-gconf}}: GConf support (paprefs)<br />
* {{Pkg|pulseaudio-jack}}: JACK sink, source and jackdbus detection<br />
* {{Pkg|pulseaudio-lirc}}: Infrared (LIRC) volume control<br />
* {{Pkg|pulseaudio-xen}}: Xen paravirtual sink<br />
* {{Pkg|pulseaudio-zeroconf}}: Zeroconf (Avahi/DNS-SD) support<br />
<br />
{{Note|Some confusion can be made between [[ALSA]] and PulseAudio. ALSA includes both Linux kernel component with sound card drivers, and a userspace component, {{ic|libalsa}}.[http://www.alsa-project.org/main/index.php/Download] PulseAudio builds only on the kernel component, but offers compatibility with {{ic|libalsa}} through {{Pkg|pulseaudio-alsa}}.[http://www.freedesktop.org/wiki/Software/PulseAudio/FAQ/#index14h3]}}<br />
<br />
=== Front-ends ===<br />
<br />
There is a number of front-ends available for controlling the PulseAudio daemon:<br />
<br />
* GTK GUIs: {{Pkg|paprefs}} and {{Pkg|pavucontrol}}<br />
* Volume control via mapped keyboard keys: {{AUR|pulseaudio-ctl}}<br />
* Console (CLI) mixers: {{Pkg|ponymix}} and {{Pkg|pamixer}}<br />
* Console (curses) mixer: {{AUR|pulsemixer}}<br />
* Web volume control: [https://github.com/Siot/PaWebControl PaWebControl]<br />
* System tray icon: {{AUR|pasystray-git}}<br />
* KF5 plasma applet: {{Pkg|kmix}} and {{Pkg|plasma-pa}}<br />
* If you want to use Bluetooth Headsets or other Bluetooth Audio Devices together with PulseAudio see the [[Bluetooth headset]] Article.<br />
<br />
== Configuration ==<br />
<br />
=== Configuration files ===<br />
<br />
{{Merge|PulseAudio/Configuration|Configuration should stay in the main article, so the linked page should be merged here. Split [[#Troubleshooting]] instead if this page is found too long.|section=Abandoned draft}}<br />
By default, PulseAudio is configured to automatically detect all sound cards and manage them. It takes control of all detected ALSA devices and redirect all audio streams to itself, making the PulseAudio daemon the central configuration point. The daemon should work mostly out of the box, only requiring a few minor tweaks. <br />
<br />
PulseAudio will first look for configuration files in home directory {{ic|~/.config/pulse}}, then in system wide {{ic|/etc/pulse}}.<br />
<br />
PulseAudio runs as a server daemon that can run either system-wide or on per-user basis using a client/server architecture. The daemon by itself does nothing without its modules except to provide an API and host dynamically loaded modules. The audio routing and processing tasks are all handled by various modules. You can find a detailed list of all available modules at [http://www.freedesktop.org/wiki/Software/PulseAudio/Documentation/User/Modules/ Pulseaudio Loadable Modules]. To enable them you can just add a line {{ic|load-module <module-name-from-list>}} to {{ic|~/.config/pulse/default.pa}}.<br />
<br />
{{Tip|<br />
* It is strongly suggested not to edit system wide configuration files, but rather edit user ones. Create the {{ic|~/.config/pulse}} directory, then copy the system configuration files into it and edit according to your need.<br />
* Make sure you keep user configuration in sync with changes to the packaged files in {{ic|/etc/pulse/}}. Otherwise, PulseAudio may refuse to start due to configuration errors.<br />
* There is usually no need to add your user to the {{ic|audio}} group, as PulseAudio uses [[udev]] and ''logind'' to give access dynamically to the currently "active" user. Exceptions would include running the machine headless so that there is no currently "active" user.}}<br />
<br />
==== daemon.conf ====<br />
<br />
Defines base settings like the default sample rates used by modules, resampling methods, realtime scheduling and various other settings related to the server process. These can not be changed at runtime without restarting the PulseAudio daemon. The defaults are sensible for most users.<br />
<br />
{{Note|PulseAudio does not perform tilde expansion on paths in this file. Use absolute paths for any files.}}<br />
<br />
{| class="wikitable"<br />
|+ Notable configuration options<br />
! Option || Description<br />
|+<br />
| system-instance || Run the daemon as a system-wide instance. Highly discouraged as it can introduce security issues. Useful on (headless) systems that have no real local users. Defaults to {{ic|no}}.<br />
|+<br />
| resample-method || Which resampler to use when audio with incompatible sample rates needs to be passed between modules (e.g. playback of 96kHz audio on hardware which only supports 48kHz). The available resamplers can be listed with {{ic|$ pulseaudio --dump-resample-methods}}. Choose the best tradeoff between CPU usage and audio quality for the present use-case. {{Tip|In some cases PulseAudio will generate a high CPU load. This can happen when multiple streams are resampled (individually). If this is a common use-case in a workflow, it should be considered to create an additional sink at a matching sample rate which can then be fed into the main sink, resampling only once.}}<br />
|+<br />
| flat-volumes ||{{ic|flat-volumes}} scales the device-volume with the volume of the "loudest" application. For example, raising the VoIP call volume will raise the hardware volume and adjust the music-player volume so it stays where it was, without having to lower the volume of the music-player manually. Defaults to {{ic|yes}} upstream, but to {{ic|no}} within Arch. {{Note|The default behavior upstream can sometimes be confusing and some applications, unaware of this feature, can set their volume to 100% at startup, potentially blowing your speakers or your ears. This is why Arch defaults to the classic (ALSA) behavior by setting this to {{ic|no}}.}}<br />
|+<br />
| default-fragments || Audio samples are split into multiple fragments of {{ic|default-fragment-size-msec}} each. The larger the buffer is, the less likely audio will skip when the system is overloaded. On the downside this will increase the overall latency. Increase this value if you have issues.<br />
|}<br />
<br />
==== default.pa ====<br />
<br />
This file is a startup script and is used to configure modules. It is actually parsed and read after the daemon has finished initializing and additional commands can be sent at runtime using {{ic|$ pactl}} or {{ic|$ pacmd}}. The startup script can also be provided on the command line by starting PulseAudio in a terminal using {{ic|$ pulseaudio -nC}}. This will make the daemon load the CLI module and will accept the configuration directly from the command line, and output resulting information or error messages on the same terminal. This can be useful when debugging the daemon or just to test various modules before setting them permanently on disk. The manual page is quite self-explanatory, consult {{ic|man pulse-cli-syntax}} for the details of the syntax.<br />
<br />
{{tip|<br />
* Rather than being a complete copy, {{ic|~/.config/pulse/default.pa}} can start with the line {{ic|.include /etc/pulse/default.pa}} and then just override the defaults.<br />
* Run {{ic|<nowiki>$ pacmd list-sinks|egrep -i 'index:|name:'</nowiki>}} to list available sinks. The present default sink is marked with an asterisk.<br />
* Edit {{ic|~/.config/pulse/default.pa}} to insert/alter the set-default-sink command using the sink's name as the numbering cannot be guaranteed repeatable.<br />
}}<br />
<br />
==== {{ic|client.conf}} ====<br />
This is the configuration file read by every PulseAudio client application. It is used to configure runtime options for individual clients. It can be used to set and configure the default sink and source statically as well as allowing (or disallowing) clients to automatically start the server if not currently running.<br />
<br />
=== Configuration command ===<br />
<br />
The main command to configure a server during runtime is {{ic|$ pacmd}}. Run {{ic|$ pacmd --help}} for a list options, or just run {{ic|$ pacmd}} to enter the shell interactive mode and {{ic|Ctrl+d}} to exit. All modifications will immediately be applied.<br />
<br />
Once your new settings have been tested and meet your needs, edit the {{ic|default.pa}} accordingly to make the change persistent. See [[PulseAudio/Examples]] for some basic settings.<br />
<br />
{{Tip|leave the {{ic|load-module module-default-device-restore}} line in the {{ic|default.pa}} file untouched. It will allow you to restart the server in its default state, thus dismissing any wrong setting.}}<br />
<br />
It is important to understand that the "sources" (processes, capture devices) and "sinks" (sound cards, servers, other processes) accessible and selectable through PulseAudio depend upon the current hardware "Profile" selected. These "Profiles" are those ALSA "pcms" listed by the command {{ic|aplay -L}}, and more specifically by the command {{ic|pacmd list-cards}}, which will include a line "index:", a list beginning "profiles:", and a line "active profile: <...>" in the output, among other things.<br />
<br />
The "active profile" can be set with the command {{ic|pacmd set-card-profile INDEX PROFILE}}, with ''no'' comma separating INDEX and PROFILE, where INDEX is just the number on the line "index:" and a PROFILE name is everything shown from the beginning of any line under "profile:" to just ''before'' the colon and first space, as shown by the command {{ic|pacmd list-cards}}. For instance, {{ic|pacmd set-card-profile 0 output:analog-stereo+input:analog-stereo}}.<br />
<br />
It may be easier to select a "Profile" with a graphical tool like {{ic|pavucontrol}}, under the "Configuration" tab, or KDE System Settings, "Multimedia/Audio and Video Settings", under the "Audio Hardware Setup" tab. Each audio "Card", which are those devices listed by the command {{ic|aplay -l}}, or again by the command {{ic|pacmd list-cards}}, will have its own selectable "Profile". When a "Profile" has been selected, the then available "sources" and "sinks" can be seen by using the commands {{ic|pacmd list-sources}} and {{ic|pacmd list-sinks}}. Note that the "index" of the available sources and sinks will change each time a card profile is changed.<br />
<br />
The selected "Profile" can be an issue for some applications, especially the Adobe Flash players, typically {{ic|/usr/lib/mozilla/plugins/libflashplayer.so}} and {{ic|/usr/lib/PepperFlash/libpepflashplayer.so}}. Often, these Flash players will only work when one of the Stereo profiles is selected, and otherwise, will play video with no sound, or will simply "crash". When all else fails, you might try selecting a different profile.<br />
<br />
Of course, when configuring some variation of Surround Sound in PulseAudio, the appropriate Surround profile will have to be selected, before Surround Sound will work, or in order to do things like remap the speaker channels.<br />
<br />
== Running ==<br />
<br />
Since [http://www.freedesktop.org/wiki/Software/PulseAudio/Notes/7.0/ version 7.0], PulseAudio on Arch uses socket activation. [https://projects.archlinux.org/svntogit/packages.git/commit/trunk?h=packages/pulseaudio&id=419bd740dc8 By default], {{ic|pulseaudio.socket}} is enabled for the [[systemd/User]] instance.<br />
<br />
{{Note|<br />
* To disable {{ic|pulseaudio.socket}}, make sure that {{ic|$XDG_CONFIG_HOME/systemd/user/}} exists and run {{ic|systemctl --user mask pulseaudio.socket}}.<br />
* Many [[desktop environments]] autostart programs based on [[Desktop entries#Autostart|desktop files]] in the {{ic|/etc/xdg/autostart/}} directory. In this case, PulseAudio will be launched automatically regardless of the socket activation status.<br />
}}<br />
<br />
For more information, see [http://www.freedesktop.org/wiki/Software/PulseAudio/Documentation/User/Running/ PulseAudio: Running].<br />
<br />
=== Starting manually ===<br />
<br />
PulseAudio can be manually started with:<br />
$ pulseaudio --start<br />
<br />
And stopped with:<br />
$ pulseaudio --kill<br />
<br />
== Back-end configuration ==<br />
<br />
=== ALSA ===<br />
<br />
Install the {{Pkg|pulseaudio-alsa}} package. It contains the necessary {{ic|/etc/asound.conf}} for configuring ALSA to use PulseAudio. Also make sure that {{ic|~/.asoundrc}} does not exist, it would override the {{ic|/etc/asound.conf}} file.<br />
<br />
Also install {{Pkg|lib32-libpulse}} and {{Pkg|lib32-alsa-plugins}} if you run a x86_64 system and want to have sound for 32-bit [[multilib]] programs like Wine, Skype and Steam.<br />
<br />
To prevent applications from using ALSA's OSS emulation and bypassing PulseAudio (thereby preventing other applications from playing sound), make sure the module {{ic|snd_pcm_oss}} is not being loaded at boot. If it is currently loaded ({{ic|<nowiki>lsmod | grep oss</nowiki>}}), disable it by executing:<br />
# rmmod snd_pcm_oss<br />
<br />
==== ALSA/dmix without grabbing hardware device ====<br />
<br />
{{Note|This section describes alternative configuration, which is generally '''not''' recommended.}}<br />
<br />
You may want to use ALSA directly in most of your applications while still being able to use applications which require PulseAudio at the same time. The following steps allow you to make PulseAudio use dmix instead of grabbing ALSA hardware device.<br />
<br />
* Remove package {{Pkg|pulseaudio-alsa}}, which provides compatibility layer between ALSA applications and PulseAudio. After this your ALSA apps will use ALSA directly without being hooked by Pulse.<br />
<br />
* Edit {{ic|/etc/pulse/default.pa}}.<br />
:Find and uncomment lines which load back-end drivers. Add '''device''' parameters as follows. Then find and comment lines which load autodetect modules.<br />
load-module module-alsa-sink '''device=dmix'''<br />
load-module module-alsa-source '''device=dsnoop'''<br />
# load-module module-udev-detect<br />
# load-module module-detect<br />
<br />
* ''Optional:'' If you use {{Pkg|kdemultimedia-kmix}} you may want to control ALSA volume instead of PulseAudio volume:<br />
$ echo export KMIX_PULSEAUDIO_DISABLE=1 > ~/.kde4/env/kmix_disable_pulse.sh<br />
$ chmod +x ~/.kde4/env/kmix_disable_pulse.sh<br />
<br />
* Now, reboot your computer and try running ALSA and PulseAudio applications at the same time. They both should produce sound simultaneously.<br />
:Use {{Pkg|pavucontrol}} to control PulseAudio volume if needed.<br />
<br />
=== OSS ===<br />
<br />
There are multiple ways of making OSS-only programs output to PulseAudio:<br />
<br />
==== ossp ====<br />
<br />
Install {{Pkg|ossp}} package and start {{ic|osspd.service}}.<br />
<br />
==== padsp wrapper ====<br />
<br />
Programs using OSS can work with PulseAudio by starting it with padsp (included with PulseAudio):<br />
<br />
$ padsp OSSprogram<br />
<br />
A few examples:<br />
<br />
$ padsp aumix<br />
$ padsp sox foo.wav -t ossdsp /dev/dsp<br />
<br />
You can also add a custom wrapper script like this: <br />
<br />
{{hc|/usr/local/bin/OSSProgram|<nowiki><br />
#!/bin/sh<br />
exec padsp /usr/bin/OSSprogram "$@"<br />
</nowiki>}}<br />
<br />
Make sure {{ic|/usr/local/bin}} comes before {{ic|/usr/bin}} in your '''PATH'''.<br />
<br />
=== GStreamer ===<br />
<br />
Install {{Pkg|gst-plugins-good}}, or {{Pkg|gstreamer0.10-good-plugins}} if your intended program has a legacy [[GStreamer]] implementation.<br />
<br />
=== OpenAL ===<br />
<br />
OpenAL Soft should use PulseAudio by default, but can be explicitly configured to do so: {{hc|/etc/openal/alsoft.conf|2=drivers=pulse,alsa}}<br />
<br />
=== libao ===<br />
<br />
Edit the libao configuration file:<br />
{{hc|/etc/libao.conf|2=default_driver=pulse}}<br />
Be sure to remove the {{ic|1=dev=default}} option of the alsa driver or adjust it to specify a specific Pulse sink name or number. <br />
<br />
{{Note|You could possibly also keep the libao standard of outputting to the ''alsa'' driver and its default device if you install {{pkg|pulseaudio-alsa}} since the ALSA default device then '''is''' PulseAudio.}}<br />
<br />
== Equalizer ==<br />
<br />
{{Out of date|As of {{pkg|pulseaudio}}-7.0-2, the {{ic|module-equalizer-sink}} is unsupported, see [[Talk:PulseAudio#Equalizer module is unsupported]].}}<br />
<br />
PulseAudio has an integrated 10-band equalizer system. In order to use the equalizer do the following:<br />
<br />
Install {{Pkg|pulseaudio-equalizer}}:<br />
<br />
=== Load equalizer sink and dbus-protocol module ===<br />
<br />
$ pactl load-module module-equalizer-sink<br />
$ pactl load-module module-dbus-protocol<br />
<br />
=== GUI front-end ===<br />
<br />
run:<br />
<br />
$ qpaeq<br />
<br />
{{Note|If qpaeq has no effect, install {{pkg|pavucontrol}} and change "ALSA Playback on" to "FFT based equalizer on ..." while the media player is running.}}<br />
<br />
=== Load equalizer and dbus module on every boot ===<br />
<br />
Edit the {{ic|/etc/pulse/default.pa}} or {{ic|~/.config/pulse/default.pa}} file with your favorite editor and append the following lines:<br />
<br />
### Load the integrated PulseAudio equalizer and D-Bus module<br />
load-module module-equalizer-sink<br />
load-module module-dbus-protocol<br />
<br />
{{Note|The equalizer sink needs to be loaded after the master sink is already available.}}<br />
<br />
== Applications ==<br />
<br />
=== QEMU ===<br />
<br />
{{Merge|QEMU|QEMU is the most complex of the "applications" described in this section, merging to the main article would provide better context.}}<br />
<br />
The audio driver used by QEMU is set with the {{ic|QEMU_AUDIO_DRV}} environment variable:<br />
<br />
$ export QEMU_AUDIO_DRV=pa<br />
<br />
Run the following command to get QEMU's configuration options related to PulseAudio:<br />
<br />
$ qemu-system-x86_64 -audio-help | awk '/Name: pa/' RS=<br />
<br />
The listed options can be exported as environment variables, for example:<br />
<br />
{{bc|1=<br />
$ export QEMU_PA_SINK=alsa_output.pci-0000_04_01.0.analog-stereo.monitor<br />
$ export QEMU_PA_SOURCE=input<br />
}}<br />
<br />
{{Style|The following is not specific to PulseAudio.}}<br />
<br />
To get list of the supported emulation audio drivers<br />
$ qemu-system-x86_64 -soundhw help<br />
<br />
To use e.g. {{ic|ac97}} driver for the guest use the {{ic|-soundhw ac97}} commnad with QEMU.<br />
<br />
{{Note|Video graphic card emulated drivers for the guest machine may also cause a problem with the sound quality. Test one by one to make it work. You can list possible options with {{ic|<nowiki>qemu-system-x86_64 -h | grep vga</nowiki>}}.}}<br />
<br />
=== AlsaMixer.app ===<br />
<br />
Make {{AUR|alsamixer.app}} dockapp for the {{Pkg|windowmaker}} use pulseaudio, e.g.<br />
$ AlsaMixer.app --device pulse<br />
<br />
Here is a two examples where the first one is for ALSA and the other one is for pulseaudio. You can run multiple instances of it. Use the {{ic|-w}} option to choose which of the control buttons to bind to the mouse wheel.<br />
# AlsaMixer.app -3 Mic -1 Master -2 PCM --card 0 -w 1<br />
# AlsaMixer.app --device pulse -1 Capture -2 Master -w 2<br />
<br />
{{Note|It can use only those output sinks that set as default.}}<br />
<br />
=== XMMS2 ===<br />
<br />
Make it switch to pulseaudio output<br />
$ nyxmms2 server config output.plugin pulse<br />
and to alsa<br />
$ nyxmms2 server config output.plugin alsa<br />
To make xmms2 use a different output sink, e.g.<br />
$ nyxmms2 server config pulse.sink alsa_output.pci-0000_04_01.0.analog-stereo.monitor<br />
<br />
See also the official guide [https://xmms2.org/wiki/Using_the_application].<br />
<br />
=== KDE Plasma Workspaces and Qt4 ===<br />
<br />
PulseAudio will automatically be used by KDE/Qt4 applications. It is supported by default in the KDE sound mixer. For more information see the [http://www.pulseaudio.org/wiki/KDE KDE page in the PulseAudio wiki]. One useful tidbit from that page is to add {{ic|load-module module-device-manager}} to {{ic|/etc/pulse/default.pa}}.<br />
<br />
If the phonon-gstreamer backend is used for Phonon, GStreamer should also be configured as described in [[#GStreamer]].<br />
<br />
=== Audacious ===<br />
<br />
[[Audacious]] natively supports PulseAudio. In order to use it, set Audacious Preferences -> Audio -> Current output plugin to 'PulseAudio Output Plugin'.<br />
<br />
=== Java/OpenJDK 6 ===<br />
<br />
Create a wrapper for the Java executable using padsp as seen on the [[Java#Java_sound_with_PulseAudio|Java sound with PulseAudio]] page.<br />
<br />
=== Music Player Daemon (MPD) ===<br />
<br />
[http://mpd.wikia.com/wiki/PulseAudio configure] [[MPD]] to use PulseAudio. See also [[MPD/Tips and Tricks#MPD and PulseAudio]].<br />
<br />
=== MPlayer ===<br />
<br />
[[MPlayer]] natively supports PulseAudio output with the {{ic|-ao pulse}} option. It can also be configured to default to PulseAudio output, in {{ic|~/.mplayer/config}} for per-user, or {{ic|/etc/mplayer/mplayer.conf}} for system-wide:<br />
{{hc|/etc/mplayer/mplayer.conf|2=ao=pulse}}<br />
<br />
=== guvcview ===<br />
<br />
{{Pkg|guvcview}} when using the PulseAudio input from a [[Webcam]] may have the audio input suspended resulting in no audio being recorded. You can check this by executing:<br />
<br />
$ pactl list sources<br />
<br />
If the audio source is "suspended" then modifying the following line in {{ic|/etc/pulse/default.pa}} and changing:<br />
<br />
load-module module-suspend-on-idle<br />
to<br />
#load-module module-suspend-on-idle<br />
<br />
And then either restarting PulseAudio or your computer will only idle the input source instead of suspending it. guvcview will then correctly record audio from the device.<br />
<br />
== Tips and tricks ==<br />
<br />
=== Keyboard volume control ===<br />
<br />
Map the following commands to your volume keys: {{ic|XF86AudioRaiseVolume}}, {{ic|XF86AudioLowerVolume}}, {{ic|XF86AudioMute}}<br />
<br />
First find out which sink corresponds to the audio output you'd like to control.<br />
To list available sinks:<br />
pactl list sinks short<br />
<br />
Suppose sink 0 is to be used, to raise the volume:<br />
sh -c "pactl set-sink-mute 0 false ; pactl set-sink-volume 0 +5%"<br />
<br />
To lower the volume:<br />
sh -c "pactl set-sink-mute 0 false ; pactl -- set-sink-volume 0 -5%"<br />
<br />
To mute/unmute the volume:<br />
pactl set-sink-mute 0 toggle<br />
<br />
To mute/unmute the microphone:<br />
pactl set-source-mute 1 toggle<br />
<br />
=== Play sound from a non-interactive shell (systemd service, cron) === <br />
<br />
Set {{ic|XDG_RUNTIME_DIR}} before the command (replace {{ic|''user_id''}} with the ID of the user running PulseAudio):<br />
<br />
XDG_RUNTIME_DIR=/run/user/''user_id'' paplay /usr/share/sounds/freedesktop/stereo/complete.oga<br />
<br />
Or use {{ic|machinectl}}:<br />
<br />
# machinectl shell .host --uid=''user_id'' /usr/bin/paplay /usr/share/sounds/freedesktop/stereo/complete.oga<br />
<br />
=== X11 Bell Events ===<br />
<br />
To get pulseaudio to handle X11 bell events, run the following commands after the X11 session has been started:<br />
<br />
pactl upload-sample /usr/share/sounds/freedesktop/stereo/bell.oga x11-bell<br />
pactl load-module module-x11-bell sample=x11-bell display=$DISPLAY<br />
<br />
To adjust the volume of the X11 bell, run the following command:<br />
<br />
xset b 100<br />
<br />
100 is a percentage. This requires the {{Pkg|xorg-xset}} package. See [[Autostarting]] for a way to run these commands automatically when the X11 session is started.<br />
<br />
=== Switch on connect ===<br />
This is a module used to switch the output sound to the newly connected device. For example, if you plug in a USB headset, the output will be switched to that. If you unplug it, the output will be set back to the last device. This used to be quite buggy but got a lot of attention in PulseAudio 8.0 and should work quite well now.<br />
<br />
If you just want to test the module then you can load it at runtime by calling:<br />
# pactl load-module module-switch-on-connect<br />
<br />
If you want to make the change persistent you will have to add it to your local pulseaudio settings or to /etc/pulse/default.pa (system wide effect). In either case, add this line:<br />
load-module module-switch-on-connect<br />
<br />
{{Accuracy|Editing {{ic|/usr/bin/start-pulseaudio-x11}} will not survive package upgrade. The offending module can be unloaded in the config before loading {{ic|module-switch-on-connect}}, see [[Talk:Bluetooth_headset#GDMs_pulseaudio_instance_captures_bluetooth_headset]].}}<br />
<br />
On KDE/Plasma5 you should furthermore disable module-device-manager. As soon as Plasma5 is started it loads (via start-pulseaudio-x11) the module module-device-manager for pulseaudio to manage the devices. But that module apparently conflicts with module-switch-on-connect. Therefore you should disable that module by editing /bin/start-pulseaudio-x11 and commenting the lines for KDE. Simply logout and login again and in order to renew your pulseaudio session. On connect switching should now work properly.<br />
<br />
== Troubleshooting ==<br />
<br />
See [[PulseAudio/Troubleshooting]].<br />
<br />
== See also ==<br />
<br />
* [http://www.alsa-project.org/main/index.php/Asoundrc .asoundrc on ALSA wiki]<br />
* [http://www.pulseaudio.org/ PulseAudio official site]<br />
* [http://www.freedesktop.org/wiki/Software/PulseAudio/FAQ/ PulseAudio FAQ]</div>Ygyfygyhttps://wiki.archlinux.org/index.php?title=Infinality&diff=427593Infinality2016-03-24T21:52:31Z<p>Ygyfygy: /* Features */ Mentioned the recommended method of configuring infinality.</p>
<hr />
<div>[[Category:Fonts]]<br />
[[ja:Infinality]]<br />
[[ru:Infinality]]<br />
{{Related articles start}}<br />
{{Related|Fonts}}<br />
{{Related|Font configuration}}<br />
{{Related|MS fonts}}<br />
{{Related articles end}}<br />
The [http://www.infinality.net/ infinality] patchset aims to greatly improve freetype2 font rendering. It adds multiple new capabilities.<br />
<br />
== Features ==<br />
<br />
Infinality's settings are all configurable at runtime via environment variables in {{ic|/etc/X11/xinit/xinitrc.d/xft-settings.sh}}, and include the following:<br />
<br />
*'''Emboldening Enhancement''': Disables Y emboldening, producing a much nicer result on fonts without bold versions. Works on native TT hinter and autohinter.<br />
*'''Auto-Autohint''': Automatically forces autohint on fonts that contain no TT instructions.<br />
*'''Autohint Enhancement''': Makes autohint snap horizontal stems to pixels. Gives a result that appears like a well-hinted truetype font, but is 100% patent-free (as far as I know).<br />
*'''Customized FIR Filter''': Select your own [http://www.infinality.net/forum/viewtopic.php?f=2&t=19 filter values] at run-time. Works on native TT hinter and autohinter.<br />
*'''Stem Alignment''': Aligns bitmap glyphs to optimized pixel boundaries. Works on native TT hinter and autohinter.<br />
*'''Pseudo Gamma Correction''': Lighten and darken glyphs at a given value, below a given size. Works on native TT hinter and autohinter.<br />
*'''Embolden Thin Fonts''': Embolden thin or light fonts so that they are more visible. Works on autohinter.<br />
*'''Force Slight Hinting''': Force slight hinting even when programs want full hinting. If you use the local.conf I provide (included in infinality-settings fedora package) you will notice nice improvements on @font-face fonts.<br />
*'''ChromeOS Style Sharpening''': ChromeOS uses a patch to sharpen the look of fonts. This is now included in the infinality patchset.<br />
<br />
See the [http://www.infinality.net/forum/viewtopic.php?f=2&t=18 README] for details.<br />
<br />
A number of presets are included and can be used by setting the USE_STYLE variable in {{ic|/etc/X11/xinit/xinitrc.d/xft-settings.sh}}.<br />
<br />
The official documendation also recommends setting variables in {{ic|/etc/profile.d/infinality-settings.sh}}. A template can be found [https://github.com/bohoomil/fontconfig-ultimate/blob/master/freetype/infinality-settings.sh here].<br />
<br />
== Installation ==<br />
<br />
=== Infinality-bundle ===<br />
<br />
{{Accuracy|Not clear from this section what bohoomil's bundle '''does'''. How are the patches different from stock infinality, apart from working with newer freetype versions? "presets" etc.}}<br />
<br />
'''Infinality-bundle''' is a collection of software aiming to improve text rendering in Arch Linux.<br />
<br />
Currently, the bundle comprises:<br />
<br />
* ''freetype2-infinality-ultimate'' - {{Pkg|freetype2}} built with [http://www.infinality.net/blog/ Infinality] and additional patches.<br />
* ''fontconfig-infinality-ultimate'' - {{Pkg|fontconfig}} optimized for use with ''freetype2-infinality-ultimate'', including separate configuration presets for free (default), MS and custom font collections.<br />
* ''cairo-infinality-ultimate'' - {{Pkg|cairo}} built with Ubuntu and additional patches.<br />
<br />
All libraries are built in a clean chroot environment and are available for both i686 and x86_64 architectures, including multilib support.<br />
<br />
For best results and users' convenience, a complementary repository ''infinality-bundle-fonts'' is available, offering a wide selection of all necessary typefaces needed to create and reproduce hypertext documents. All fonts were manually selected, ensuring high quality text rendering as well as compatibility with proprietary equivalents used for the Web and the office. All fonts are 100% freely available and are licensed under GPL, OFL, Apache or compatible, non-restrictive licenses.<br />
<br />
By default, no post installation configuration is required. However, for maximum flexibility users can easily customize the bundle depending on their needs.<br />
<br />
==== Installation ====<br />
<br />
The installation consists of adding the selected repositories to {{ic|pacman.conf}} and [[installing]] the packages from the relevant groups or meta packages. Remember to restart the X server after the installation to see the changes.<br />
<br />
* The [[Unofficial user repositories#infinality-bundle|infinality-bundle]] repository contains core packages gathered into the ''infinality-bundle'' group.<br />
* The [[Unofficial user repositories#infinality-bundle-multilib|infinality-bundle-multilib]] repository contains optional multilib libraries for the x86_64 architecture gathered in the ''infinality-bundle-multilib'' group.<br />
* The [[Unofficial user repositories#infinality-bundle-fonts|infinality-bundle-fonts]] repository contains a comprehensive collection of free fonts gathered in the ''ibfonts-meta-base'', ''ibfonts-meta-extended'' and ''ibfonts-meta-extended-lt'' meta packages.<br />
<br />
{{Note|<br />
* Do not forget to add key ID 962DDE58 to your pacman keyring. See [[Pacman-key#Adding unofficial keys]] to detailed instructions.<br />
* When pacman resolves dependencies and encounters a conflicting package, e.g.: {{bc|<nowiki><br />
resolving dependencies...<br />
looking for inter-conflicts...<br />
:: freetype2-infinality-ultimate and freetype2 are in conflict. Remove freetype2? [y/N]<br />
</nowiki>}} answer {{ic|yes}}.<br />
}}<br />
<br />
==== Recommended fonts with restricted licenses ====<br />
<br />
Below you will find a list of fonts that cannot be freely redistributed and thus could not be included in the ''infinality-bundle-fonts'' collection as binary packages. However, they can still be installed and used free of charge under specified conditions. Source packages can be found in the [[AUR]]. Please, read the EULAs for details before you use the fonts!<br />
<br />
*{{AUR|ttf-brill}}<br />
*{{AUR|otf-neris}}<br />
*{{AUR|ttf-aller}}<br />
*{{AUR|ttf-envy-code-r}}<br />
<br />
==== Usage ====<br />
<br />
Users of popular Desktop Environments (GNOME, KDE, Xfce4, Cinnamon, LXDE) should adjust font settings via their DE's control panel. Basically, the settings should duplicate those found in the freetype2 configuration file ({{ic|/etc/X11/xinit/xinitrc.d/xft-settings.sh}}):<br />
<br />
{{bc|<br />
Xft.antialias: 1<br />
Xft.autohint: 0<br />
Xft.dpi: 96<br />
Xft.hinting: 1<br />
Xft.hintstyle: hintfull<br />
Xft.lcdfilter: lcddefault<br />
Xft.rgba: rgb<br />
}}<br />
<br />
If your DE's control panel does not let you set any of the above, adjust only those available. Aside these values you can customise all {{ic|INFINALITY_FT}} variables. Example:<br />
<br />
{{bc|<nowiki><br />
# Makes fonts darker and thicker<br />
export INFINALITY_FT_BRIGHTNESS="-10"<br />
<br />
# Not too sharp, not too smooth<br />
export INFINALITY_FT_FILTER_PARAMS="16 20 28 20 16"</nowiki><br />
}}<br />
<br />
{{Note|Your customisations will be saved in a {{ic|.pacsave}} file on an update of the infinality package.}}<br />
<br />
* It is possible to skip installation of ''infinality-bundle-fonts'' if you want to use Microsoft proprietary font collection instead. If this is the case, you have to activate fontconfig MS preset to ensure the correct set of fonts is selected. To do so, issue<br />
<br />
{{hc|# fc-presets set|<br />
1) combi<br />
2) free<br />
3) ms<br />
4) reset<br />
5) quit<br />
Enter your choice...<br />
}}<br />
<br />
and select {{ic|3}}.<br />
<br />
Run {{ic|fc-presets help}} for more information.<br />
<br />
* If you would rather use a custom font collection, there is a {{ic|combi}} preset available that should let you adjust fontconfig parameters accordingly. When you activate the {{ic|combi}} preset, the content of 'custom' configuration files ({{ic|/etc/fonts/conf.avail.infinality/combi}}) can be freely modified. When you are done, do not forget to create a backup copy of the 'combi' directory.<br />
<br />
==== More fonts ====<br />
<br />
If you want to install even more fonts, there is an additional ''infinality-bundle-fonts-extra'' collection. Run<br />
<br />
$ pacman -Ss infinality-bundle-fonts-extra<br />
<br />
to list available packages.<br />
<br />
{{Warning|'''Do not''' attempt to install the entire ''infinality-bundle-fonts'' or ''infinality-bundle-fonts-extra'' group. Unless you know for sure you need any of the fonts available there, you will only unnecessarily clutter your hard drive and decrease performance of the font cache. ''ibfonts-meta-extended'' should suffice in most, even very complex, use scenarios. Besides, several font families are available in multiple formats (T1, TTF, OTF): trying to install all font packages will lead to unresolvable package conflicts. If this is the case, you should always use only '''one''' format per family.<br />
}}<br />
{{Tip|Before you install any third party font from either [[official repositories]] or the [[AUR]], always check if it is available in the ''infinality-bundle-fonts'' collection.<br />
}}<br />
<br />
==== Font substitutions ====<br />
<br />
If you want to override default font substitutions set in {{ic|/etc/fonts/conf.d/37-repl-global-''preset''.conf}} or add new ones, use {{ic|/etc/fonts/conf.d/35-repl-custom.conf}} to do so. You will need to duplicate the template (16 lines of code) for each font family to be replaced and provide appropriate font names.<br />
<br />
==== Package signatures ====<br />
<br />
One frequent issue users may face with this repositories is that the package database or signatures do not correspond. Often a simple force refresh of the package lists ({{ic|pacman -Syy}}) will fix the issue. If that fails, try removing the infinality-bundle files from {{ic|/var/lib/pacman/sync}} and then resyncing again.<br />
<br />
==== Updating ====<br />
<br />
''fontconfig-infinality-ultimate'' is updated frequently, usually every 3-4 weeks, after a number of recently reported minor bugs has been fixed. As every fix is immediately committed to the GitHub repository, users who chose {{AUR|fontconfig-infinality-ultimate-git}}{{Broken package link|{{aur-mirror|fontconfig-infinality-ultimate-git}}}} from the AUR will get them sooner, i.e. when they rebuild the package.<br />
<br />
{{Note|<br />
* ''fontconfig-infinality-ultimate-git'' is a development branch of the package available in the [infinality-bundle] repository. Keep in mind that it is not a stable release and can break at times.<br />
* When '''reporting bugs''', please report all code-related issues (incorrect rendering, fontconfig problems, etc.) at GitHub [https://github.com/bohoomil/fontconfig-ultimate/issues Issues * bohoomil/fontconfig-ultimate] and Arch specific, including problems regarding maintenance, packaging and general questions, in dedicated threads at Arch Forums. Before filing a report, make sure that [infinality-bundle] packages were correctly installed and customized.<br />
}}<br />
<br />
=== Upstream infinality ===<br />
<br />
{{Warning|Upstream infinality patches are intended for the older 2.4x freetype2 branch. Users are advised to use the [[#Infinality-bundle|infinality-bundle]] by ''bohoomil''.}}<br />
<br />
{{AUR|freetype2-infinality}} can be installed from the [[AUR]]. If you are a multilib user, also install {{AUR|lib32-freetype2-infinality}}{{Broken package link|{{aur-mirror|lib32-freetype2-infinality}}}} from the AUR. The AUR also contains the latest development snapshot of freetype2 with the Infinality patchset: {{AUR|freetype2-infinality-git}}{{Broken package link|{{aur-mirror|freetype2-infinality-git}}}} and {{AUR|lib32-freetype2-infinality-git}}{{Broken package link|{{aur-mirror|lib32-freetype2-infinality-git}}}}.<br />
<br />
It is recommended to also install {{AUR|fontconfig-infinality}} to enable selection of predefined font substitution styles and antialiasing settings, apart from the rendering settings of the engine itself. After doing so, you can select the font style (win7, winxp, osx, linux, ...) with:<br />
# fc-presets set<br />
<br />
The corresponding fonts need to be installed.<br />
<br />
{{Note|<br />
* Install {{AUR|grip-git}} from the AUR to have a realtime font preview.<br />
* The {{ic|README}} for {{AUR|fontconfig-infinality}} says that {{ic|/etc/fonts/local.conf}} should either not exist, or have no infinality-related configurations in it. The {{ic|local.conf}} is now obsolete and completely replaced by this configuration.<br />
}}<br />
<br />
For more information see this forum post: http://www.infinality.net/forum/viewtopic.php?f=2&t=77#p794<br />
<br />
== Troubleshooting ==<br />
<br />
See also [[Font configuration#Troubleshooting]].<br />
<br />
=== Spotify font issue ===<br />
<br />
If you experience font rendering issues with Spotify [http://i.imgur.com/E51vt2b.jpg [1]], you might want to try the following font settings: <br />
<br />
{{bc|<nowiki><br />
USE_STYLE="2"<br />
export INFINALITY_FT_FRINGE_FILTER_STRENGTH="50"<br />
export INFINALITY_FT_USE_VARIOUS_TWEAKS="true"<br />
export INFINALITY_FT_CHROMEOS_STYLE_SHARPENING_STRENGTH="20"<br />
export INFINALITY_FT_GAMMA_CORRECTION="30 80"<br />
export INFINALITY_FT_STEM_ALIGNMENT_STRENGTH="25"<br />
export INFINALITY_FT_STEM_FITTING_STRENGTH="25"<br />
</nowiki>}}<br />
<br />
=== Google Chrome issues ===<br />
<br />
To solve rendering issues in Google Chrome browser described [https://bbs.archlinux.org/viewtopic.php?pid=1344172#p1344172 in this post], edit {{ic|/etc/fonts/fonts.conf}} file and uncomment the following entry:<br />
<br />
{{bc|<nowiki><!--match target="pattern"><br />
<edit name="dpi" mode="assign"><br />
<double>72</double><br />
</edit><br />
</match--></nowiki>}}<br />
<br />
=== Emacs issues ===<br />
<br />
{{Merge|Emacs|This issue does not seem related to infinality, but rather a general font issue with Emacs}}<br />
<br />
Emacs users have reported issues with Noto Sans as the default sans-serif font. This will affect any font face that specifies "Sans Serif" as the font family including the variable-pitch face that is used in Emacs Info mode. <br />
<br />
Noto Sans is a collection of many individual language specific font files. Emacs does not find the correct version when it tries to render the font and displays glyphs instead. <br />
<br />
To get around the issue you need to either specify a different default Sans Serif font for all applications or modify the font family for any faces that specify "Sans Serif" within Emacs.<br />
<br />
To change the default font for all applications place the following:<br />
<br />
{{bc|<br />
<alias><br />
<family>sans-serif</family><br />
<prefer><br />
<family>Liberation Sans</family><br />
</prefer><br />
</alias><br />
}}<br />
<br />
in either {{ic|/etc/fonts/conf.avail.infinality/35-repl-custom.conf}} for global effect or {{ic|$XDG_CONFIG_HOME/fontconfig/fonts.conf}} or {{ic|$XDG_CONFIG_HOME/fontconfig/conf.d/60-latin.conf}} for a single user. For `combi` users, {{ic|60-latin-combi.conf}} should be modified accordingly.<br />
<br />
The default font can be any but Noto Sans.<br />
<br />
To change the font in Emacs only:<br />
<br />
If you prefer Noto Sans for other applications and just want to fix Emacs specifically then you can specify a new Font Family for the variable pitch face. This could be done via customize (M-x customize-face RET variable-pitch RET) or by placing the following code in {{ic|$HOME/.emacs}} or {{ic|$HOME/emacs.d/init.el}}.<br />
<br />
{{bc|<br />
(custom-set-faces<br />
'(variable-pitch ((t (:family "Liberation Sans")))))<br />
}}<br />
<br />
Note that there may be other faces either in default Emacs or specified by themes that also use the default Sans Serif font and would have to be modified in the same way. Changing the system wide default to something like Liberation Sans is therefore a more universal fix.<br />
<br />
=== GIMP issues ===<br />
<br />
GIMP users have reported issues with the subpixel rendering of text in images (see for example [http://www.infinality.net/forum/viewtopic.php?f=2&t=229 this topic]). The best course of action is to disable subpixel rendering completely for GIMP. Add a file {{ic|/etc/gimp/2.0/fonts.conf}} (or {{ic|~/.gimp-2.8/fonts.conf}} for a single user) with the following content:<br />
<br />
{{hc|/etc/gimp/2.0/fonts.conf|<nowiki><br />
<fontconfig><br />
<match target="font"><br />
<edit name="rgba" mode="assign"><br />
<const>none</const><br />
</edit><br />
</match><br />
</fontconfig><br />
</nowiki>}}<br />
<br />
=== Language specifics diacritics / glyphs ===<br />
<br />
Some language specifics diacritics / glyphs are displayed inconsistently using default font.<br />
<br />
This is usually the case with websites (notably blogs) utilizing predefined CSS templates that make use of web fonts missing support for extended Latin scripts (most often A and B). Even though this is not a problem with any of the infinality-bundle components and thus should be fixed by the author / maintainer of the problematic site, it can still be got round by creating a relevant font replacement rule in fontconfig. If you want to use this option, activate {{ic|36-repl-missing-glyphs.conf}} first:<br />
<br />
$ cd /etc/fonts/conf.d<br />
$ ln -s ../conf.avail.infinality/36-repl-missing-glyphs.conf .<br />
<br />
and then edit the file accordingly following the provided example.<br />
<br />
{{Note|Default fonts for non-Latin scripts are set in {{ic|65-non-latin-''preset''.conf}} (default settings).}}<br />
<br />
Overriding default replacement rules and adding custom ones is possible with {{ic|35-repl-custom.conf}}. The file is activated by default, so all you need to do is edit if you want to use it.<br />
<br />
=== Firefox/Chrome browsers rendering monospaced with proportional font ===<br />
<br />
You can check which font the browser is using with the {{ic|fc-match}} tool. If for {{ic|"monospace"}} you get a proportional font like Arial<br />
<br />
# fc-match "monospace"<br />
monospace: arial.ttf: "Arial" "Normal"<br />
<br />
you probably should run <br />
<br />
# fc-presets set<br />
<br />
=== General problems with fonts ===<br />
<br />
If you experience general problems with fonts (e.g. certain glyphs are not loaded in PDF documents, while a font family providing them has been correctly installed), start troubleshooting by issuing<br />
<br />
# fc-cache -fr<br />
<br />
This will remove the entire font cache and recreate it from scratch.<br />
<br />
== See also ==<br />
<br />
* [http://www.webupd8.org/2013/06/better-font-rendering-in-linux-with.html Short article about infinality (contains screenshots)]<br />
* [http://bohoomil.com Infinality bundle and fonts] - Home page of the infinality bundle<br />
* [https://github.com/bohoomil/fontconfig-ultimate fontconfig-ultimate] - git repository providing all patches, configuration files and build scripts for the entire ''infinality-bundle+fonts'' collection in separate branches <br />
* [https://bbs.archlinux.org/viewtopic.php?id=162098 infinality-bundle: good looking fonts made (even) easier] - ''infinality-bundle'' support thread in the Arch Linux Forums<br />
* [https://bbs.archlinux.org/viewtopic.php?id=170976 infinality-bundle-fonts: a free multilingual font collection for Arch] - ''infinality-bundle-fonts'' support thread in the Arch Linux Forums</div>Ygyfygyhttps://wiki.archlinux.org/index.php?title=Zsh&diff=426978Zsh2016-03-21T19:59:26Z<p>Ygyfygy: /* Configuration Frameworks */ Alphabetic order - Ordnung muss sein.</p>
<hr />
<div>[[Category:Command shells]]<br />
[[cs:Zsh]]<br />
[[de:Zsh]]<br />
[[es:Zsh]]<br />
[[fr:Zsh]]<br />
[[ja:Zsh]]<br />
[[ru:Zsh]]<br />
[[zh-CN:Zsh]]<br />
[http://zsh.sourceforge.net/Intro/intro_1.html Zsh] is a powerful shell that operates as both an interactive shell and as a scripting language interpreter. While being compatible with [[Bash]] (not by default, only if issuing {{ic|emulate sh}}), it offers many advantages such as:<br />
<br />
* Efficiency<br />
* Improved tab completion<br />
* Improved globbing<br />
* Improved array handling<br />
* Full customisability<br />
<br />
The [http://zsh.sourceforge.net/FAQ/zshfaq01.html#l4 Zsh FAQ] offers more reasons to use Zsh.<br />
<br />
== Installation ==<br />
<br />
Before starting users may want to see what shell is currently being used:<br />
<br />
$ echo $SHELL<br />
<br />
[[Install]] the {{Pkg|zsh}} package. For additional completion definitions, install the {{pkg|zsh-completions}} package as well.<br />
<br />
=== Initial configuration ===<br />
<br />
Make sure that Zsh has been installed correctly by running the following in a terminal:<br />
<br />
$ zsh<br />
<br />
You should now see ''zsh-newuser-install'', which will walk you through some basic configuration. If you want to skip this, press {{ic|q}}. If you did not see it, you can invoke it manually with<br />
<br />
$ zsh /usr/share/zsh/functions/Newuser/zsh-newuser-install -f<br />
<br />
=== Making Zsh your default shell ===<br />
<br />
See [[Command-line shell#Changing your default shell]].<br />
<br />
{{Tip|If replacing {{Pkg|bash}}, users may want to move some code from {{ic|~/.bashrc}} to {{ic|~/.zshrc}} (e.g. the prompt and the [[Bash#Aliases|aliases]]) and from {{ic|~/.bash_profile}} to {{ic|~/.zprofile}} (e.g. [[xinitrc#Autostart X at login|the code that starts the X Window System]]).}}<br />
<br />
== Configuration files ==<br />
<br />
When starting Zsh, it'll source the following files in this order by default:<br />
;{{ic|/etc/zsh/zshenv}}:This file should contain commands to set the global [[#Configuring $PATH|command search path]] and other system-wide [[environment variables]]; it should not contain commands that produce output or assume the shell is attached to a tty.<br />
;{{ic|~/.zshenv}}:Similar to {{ic|/etc/zsh/zshenv}} but for per-user configuration. Generally used for setting some useful environment variables.<br />
;{{ic|/etc/zsh/zprofile}}:This is a global configuration file, it'll be sourced at login. Usually used for executing some general commands at login. Please note that on Arch Linux, by default it contains [https://projects.archlinux.org/svntogit/packages.git/tree/trunk/zprofile?h=packages/zsh one line] which source the {{ic|/etc/profile}}, see [[#Global configuration files]] for details.<br />
;{{ic|/etc/profile}}:This file should be sourced by all Bourne-compatible shells upon login: it sets up an environment upon login and application-specific ({{ic|/etc/profile.d/*.sh}}) settings. Note that on Arch Linux, Zsh will also source this by default.<br />
;{{ic|~/.zprofile}}:This file is generally used for automatic execution of user's scripts at login.<br />
;{{ic|/etc/zsh/zshrc}}:Global configuration file, will be sourced when starting as a interactive shell.<br />
;{{ic|~/.zshrc}}:Main user configuration file, will be sourced when starting as a interactive shell.<br />
;{{ic|/etc/zsh/zlogin}}:A global configuration file, will be sourced at the ending of initial progress when starting as a login shell.<br />
;{{ic|~/.zlogin}}:Same as {{ic|/etc/zsh/zlogin}} but for per-user configuration.<br />
;{{ic|/etc/zsh/zlogout}}:A global configuration file, will be sourced when a login shell exits.<br />
;{{ic|~/.zlogout}}:Same as {{ic|/etc/zsh/zlogout}} but for per-user configuration.<br />
<br />
{{Note|<br />
* The paths used in Arch's {{Pkg|zsh}} package are different from the default ones used in the [[man page]]s<br />
* {{ic|/etc/profile}} is not a part of the regular list of startup files run for Zsh, but is sourced from {{ic|/etc/zsh/zprofile}} in the {{Pkg|zsh}} package. Users should take note that {{ic|/etc/profile}} sets the {{ic|$PATH}} variable which will overwrite any {{ic|$PATH}} variable set in {{ic|~/.zshenv}}. To prevent this, please set the {{ic|$PATH}} variable in {{ic|~/.zshrc}} (it is not recommended to replace the default [https://projects.archlinux.org/svntogit/packages.git/tree/trunk/zprofile?h&#61;packages/zsh one line] in {{ic|/etc/zsh/zprofile}} with something other, it'll break the integrality of other packages which provide some scripts in {{ic|/etc/profile.d}})<br />
}}<br />
<br />
=== Global configuration files ===<br />
<br />
Occasionally users might want to have some settings applied globally to all Zsh users. The zsh(1) said that there are some global configuration files, for example {{ic|/etc/zshrc}}. This however is slightly different on Arch, since it has been compiled with flags specifically to target[https://projects.archlinux.org/svntogit/packages.git/tree/trunk/PKGBUILD?h=packages/zsh#n34] {{ic|/etc/zsh/}} instead.<br />
<br />
So, for global configuration use {{ic|/etc/zsh/zshrc}}, not {{ic|/etc/zshrc}}. The same goes for {{ic|/etc/zsh/zshenv}}, {{ic|/etc/zsh/zlogin}} and {{ic|/etc/zsh/zlogout}}. Note that these files are not installed by default, so create them if desired.<br />
<br />
The only exception is {{ic|zprofile}}, use {{ic|/etc/profile}} instead.<br />
<br />
== Configure Zsh ==<br />
<br />
Although Zsh is usable out of the box, it is almost certainly not set up the way most users would like to use it, but due to the sheer amount of customization available in Zsh, configuring Zsh can be a daunting and time-consuming experience.<br />
<br />
=== Simple .zshrc ===<br />
<br />
Included below is a sample configuration file, it provides a decent set of default options as well as giving examples of many ways that Zsh can be customized. In order to use this configuration save it as a file named {{ic|.zshrc}}.<br />
<br />
{{Tip|Apply the changes without needing to logout and then back in by running {{ic|source ~/.zshrc}}}}<br />
<br />
Here is a simple {{ic|.zshrc}}:<br />
<br />
{{hc|~/.zshrc|<br />
autoload -U compinit promptinit<br />
compinit<br />
promptinit<br />
<br />
# This will set the default prompt to the walters theme<br />
prompt walters}}<br />
<br />
=== Configuring $PATH ===<br />
<br />
In short, put the following in {{ic|~/.zshenv}}:<br />
{{hc|~/.zshenv|<br />
typeset -U path<br />
path&#61;(~/bin /other/things/in/path $path[@])}}<br />
<br />
See also [http://zsh.sourceforge.net/Guide/zshguide02.html#l24 A User's Guide to the Z-Shell] and the note in [[#Configuration files]].<br />
<br />
=== Command completion ===<br />
<br />
Perhaps the most compelling feature of Zsh is its advanced autocompletion abilities. At the very least, enable autocompletion in {{ic|.zshrc}}. To enable autocompletion, add the following to your {{ic|~/.zshrc}}:<br />
<br />
{{hc|~/.zshrc|<br />
autoload -U compinit<br />
compinit<br />
}}<br />
<br />
The above configuration includes ssh/scp/sftp hostnames completion but in order for this feature to work, users need to prevent ssh from hashing hosts names in {{ic|~/.ssh/known_hosts}}.<br />
{{Warning|This makes the computer vulnerable to [http://blog.rootshell.be/2010/11/03/bruteforcing-ssh-known_hosts-files/ "Island-hopping" attacks]. In that intention, comment the following line or set the value to {{ıc|no}}:<br />
{{hc|/etc/ssh/ssh_config|<br />
#HashKnownHosts yes}}<br />
And move {{ic|~/.ssh/known_hosts}} somewhere else so that ssh creates a new one with un-hashed hostnames (previously known hosts will thus be lost). For more information, see the SSH readme for [http://nms.lcs.mit.edu/projects/ssh/README.hashed-hosts hashed-hosts].<br />
}}<br />
<br />
For autocompletion with an arrow-key driven interface, add the following to:<br />
{{hc|~/.zshrc|<br />
zstyle ':completion:*' menu select}}<br />
:''To activate the menu, press tab twice.''<br />
<br />
For autocompletion of command line switches for aliases, add the following to:<br />
{{hc|~/.zshrc|<br />
setopt completealiases}}<br />
<br />
=== The "command not found" hook ===<br />
<br />
See [[Pkgfile#Command not found]].<br />
<br />
=== Preventing duplicate lines in the history ===<br />
<br />
To ignore duplicate lines in the history, use the following:<br />
<br />
{{hc|~/.zshrc|<br />
setopt HIST_IGNORE_DUPS}}<br />
<br />
To free the history from already created duplicates, run:<br />
<br />
$ sort -t ";" -k 2 -u ~/.zsh_history | sort -o ~/.zsh_history<br />
<br />
=== The ttyctl command ===<br />
<br />
[http://zsh.sourceforge.net/Doc/Release/Shell-Builtin-Commands.html#index-tty_002c-freezing] describes the {{ic|ttyctl}} command in Zsh.<br />
This may be used to "freeze/unfreeze" the terminal.<br />
Many programs change the terminal state, and often do not restore terminal settings on exiting abnormally.<br />
To avoid the need to manually reset the terminal, use the following:<br />
<br />
{{hc|~/.zshrc|<br />
ttyctl -f}}<br />
<br />
=== Key bindings ===<br />
<br />
Zsh does not use readline, instead it uses its own and more powerful zle. It does not read {{ic|/etc/inputrc}} or {{ic|~/.inputrc}}.<br />
Zle has an [[emacs]] mode and a [[vi]] mode. By default, it tries to guess whether emacs or vi keys from the {{ic|$EDITOR}} environment variable are desired. If it is empty, it will default to emacs. Change this with {{ic|bindkey -e}} or {{ic|bindkey -v}} respectively for emacs mode or vi mode.<br />
<br />
See also [http://zshwiki.org/home/zle/bindkeys zshwiki: bindkeys].<br />
<br />
==== Bind key to ncurses application ====<br />
<br />
Bind a ncurses application to a keystoke, but it will not accept interaction. Use {{ic|BUFFER}} variable to make it work. The following example lets users open ncmpcpp using {{ic|Alt+\}}:<br />
{{hc|~/.zshrc|2=<br />
ncmpcppShow() { BUFFER="ncmpcpp"; zle accept-line; }<br />
zle -N ncmpcppShow<br />
bindkey '^[\' ncmpcppShow<br />
}}<br />
<br />
==== Alternate way to bind ncurses application ====<br />
<br />
This method will keep everything you entered in the line before calling application<br />
{{hc|~/.zshrc|2=<br />
ncmpcppShow() { ncmpcpp <$TTY; zle redisplay; }<br />
zle -N ncmpcppShow<br />
bindkey '^[\' ncmpcppShow<br />
}}<br />
<br />
==== File manager key binds ====<br />
<br />
Key binds like those used in graphic file managers may come handy. The first comes back in directory history ({{ic|Alt+Left}}), the second let the user go to the parent directory ({{ic|Alt+Up}}). They also display the directory content.<br />
<br />
{{hc|~/.zshrc|<nowiki><br />
cdUndoKey() {<br />
popd > /dev/null<br />
zle reset-prompt<br />
echo<br />
ls<br />
echo<br />
}<br />
<br />
cdParentKey() {<br />
pushd .. > /dev/null<br />
zle reset-prompt<br />
echo<br />
ls<br />
echo<br />
}<br />
<br />
zle -N cdParentKey<br />
zle -N cdUndoKey<br />
bindkey '^[[1;3A' cdParentKey<br />
bindkey '^[[1;3D' cdUndoKey<br />
</nowiki>}}<br />
<br />
=== History search ===<br />
<br />
Add these lines to .zshrc<br />
<br />
{{hc|~/.zshrc|<nowiki><br />
[[ -n "${key[PageUp]}" ]] && bindkey "${key[PageUp]}" history-beginning-search-backward<br />
[[ -n "${key[PageDown]}" ]] && bindkey "${key[PageDown]}" history-beginning-search-forward<br />
</nowiki>}}<br />
<br />
Doing this, only past commands beginning with the current input would have been shown.<br />
<br />
=== Prompts ===<br />
<br />
There is a quick and easy way to set up a colored prompt in Zsh. Make sure that prompt is set to autoload in {{ic|.zshrc}}. This can be done by adding these lines to:<br />
<br />
{{hc|~/.zshrc|<br />
autoload -U promptinit<br />
promptinit<br />
}}<br />
<br />
Available prompts are listed by running the command:<br />
<br />
$ prompt -l<br />
<br />
For example, to use the prompt {{ic|walters}}, enter:<br />
<br />
$ prompt walters<br />
<br />
To preview all available themes, use this command:<br />
<br />
$ prompt -p<br />
<br />
=== Customizing the prompt ===<br />
<br />
For users who are dissatisfied with the prompts mentioned above (or want to expand their usefulness), Zsh offers the possibility to build a custom prompt. Zsh supports a left- and right-sided prompt additional to the single, left-sided prompt that is common to all shells. Customize it by using {{ic|1=PROMPT=}} with the following variables:<br />
<br />
See [http://zsh.sourceforge.net/Doc/Release/Prompt-Expansion.html Prompt Expansion] for a list of prompt variables and conditional substrings.<br />
<br />
==== Colors ====<br />
<br />
Zsh sets colors differently than [[Color_Bash_Prompt|Bash]]. Add {{ic|autoload -U colors && colors}} before {{ic|1=PROMPT=}} in {{ic|.zshrc}} to use them. Usually you will want to put these inside {{ic|%{ [...] %} }} so the cursor does not move.<br />
<br />
{| class="wikitable"<br />
! Command || Description<br />
|-<br />
| {{ic|$fg[color]}} || will set the text color (red, green, blue, etc. - defaults to whatever format set prior to text)<br />
|-<br />
| {{ic|%F{color} [...] %f}} || effectively the same as the previous, but with less typing. Can also prefix F with a number instead.<br />
|-<br />
| {{ic|$fg_no_bold[color]}}|| will set text to non-bold and set the text color<br />
|-<br />
| {{ic|$fg_bold[color]}}|| will set the text to bold and set the text color<br />
|-<br />
| {{ic|$reset_color}}|| will reset the text color to the default color. Does not reset bold. use {{ic|%b}} to reset bold. Saves typing if it's just {{ic|%f}} though. ||<br />
|-<br />
| {{ic|%K{color} [...] %k}} || will set the background color. Same color as non-bold text color. Prefixing with any single-digit number makes the bg black.<br />
|}<br />
<br />
{| class="wikitable"<br />
|-<br />
! colspan="2" | Possible color values<br />
|-<br />
| {{ic|black}} or {{ic|0}} || {{ic|red}} or {{ic|1}}<br />
|-<br />
| {{ic|green}} or {{ic|2}} || {{ic|yellow}} or {{ic|3}}<br />
|-<br />
| {{ic|blue}} or {{ic|4}} || {{ic|magenta}} or {{ic|5}}<br />
|-<br />
| {{ic|cyan}} or {{ic|6}} || {{ic|white}} or {{ic|7}}<br />
|}<br />
<br />
{{Note| Bold text does not necessarily use the same colors as normal text. For example, {{ic|$fg['yellow']}} looks brown or a very dark yellow, while {{ic|$fg_bold['yellow']}} looks like bright or regular yellow.}}<br />
<br />
==== Example ====<br />
<br />
This is an example of a two-sided prompt:<br />
<br />
PROMPT="%{$fg[red]%}%n%{$reset_color%}@%{$fg[blue]%}%m %{$fg_no_bold[yellow]%}%1~ %{$reset_color%}%#"<br />
RPROMPT="[%{$fg_no_bold[yellow]%}%?%{$reset_color%}]"<br />
<br />
And here's how it will be displayed:<br />
<br />
username@host ~ % [0]<br />
<br />
=== Dirstack ===<br />
<br />
Zsh can be configured to remember the DIRSTACKSIZE last visited folders. This can then be used to ''cd'' them very quickly. You need to add some lines to your configuration file:<br />
<br />
{{hc|.zshrc|<nowiki><br />
DIRSTACKFILE="$HOME/.cache/zsh/dirs"<br />
if [[ -f $DIRSTACKFILE ]] && [[ $#dirstack -eq 0 ]]; then<br />
dirstack=( ${(f)"$(< $DIRSTACKFILE)"} )<br />
[[ -d $dirstack[1] ]] && cd $dirstack[1]<br />
fi<br />
chpwd() {<br />
print -l $PWD ${(u)dirstack} >$DIRSTACKFILE<br />
}<br />
<br />
DIRSTACKSIZE=20<br />
<br />
setopt autopushd pushdsilent pushdtohome<br />
<br />
## Remove duplicate entries<br />
setopt pushdignoredups<br />
<br />
## This reverts the +/- operators.<br />
setopt pushdminus<br />
</nowiki>}}<br />
<br />
Now use<br />
dirs -v<br />
to print the dirstack. Use {{ic|cd -<NUM>}} to go back to a visited folder. Use autocompletion after the dash. This proves very handy if using the autocompletion menu.<br />
<br />
{{Note|This will not work if you have more than one ''zsh'' session open, and attempt to {{ic|cd}}, due to a conflict in both sessions writing to the same file.}}<br />
<br />
=== Help command ===<br />
Unlike [[bash]], ''zsh'' does not enable a built in {{ic|help}} command. To use {{ic|help}} in zsh, add following to your {{ic|zshrc}}:<br />
<br />
{{bc|1=<br />
autoload -U run-help<br />
autoload run-help-git<br />
autoload run-help-svn<br />
autoload run-help-svk<br />
unalias run-help<br />
alias help=run-help<br />
}}<br />
<br />
=== Fish-like syntax highlighting ===<br />
<br />
[[Fish]] provides a very powerful shell syntax highlighting. To use this in zsh, you can install {{pkg|zsh-syntax-highlighting}} from offical repository and add following to your zshrc:<br />
{{bc|<br />
source /usr/share/zsh/plugins/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh<br />
}}<br />
<br />
=== Sample .zshrc files ===<br />
<br />
* A package in offical repository named {{Pkg|grml-zsh-config}} comes from http://grml.org/zsh and provides a zshrc file that includes many tweaks for Zshell. This is the default configuration for the [https://www.archlinux.org/download/ monthly ISO releases].<br />
* Basic setup, with dynamic prompt and window title/hardinfo => http://github.com/MrElendig/dotfiles-alice/blob/master/.zshrc;<br />
* https://github.com/slashbeast/things/blob/master/configs/DOTzshrc - zshrc with multiple features, be sure to check out comments into it. Notable features: confirm function to ensure that user want to run poweroff, reboot or hibernate, support for GIT in prompt (done without vcsinfo), tab completion with menu, printing current executed command into window's title bar and more.<br />
<br />
=== Configuration Frameworks ===<br />
<br />
* [https://github.com/zsh-users/antigen Antigen] (available as {{AUR|antigen-git}}) - A plugin manager for zsh, inspired by oh-my-zsh and vundle.<br />
* [https://github.com/robbyrussell/oh-my-zsh oh-my-zsh] is a popular, community-driven framework for managing your Zsh configuration. It comes bundled with a ton of helpful functions, helpers, plugins, themes.<br />
* [https://github.com/sorin-ionescu/prezto Prezto - Instantly Awesome Zsh] (available as {{AUR|prezto-git}}) is a configuration framework for Zsh. It comes with modules, enriching the command line interface environment with sane defaults, aliases, functions, auto completion, and prompt themes.<br />
<br />
=== Autostarting applications ===<br />
<br />
{{note|{{ic|$ZDOTDIR}} defaults to {{ic|$HOME}}}}<br />
<br />
Zsh always executes {{ic|/etc/zsh/zshenv}} and {{ic|$ZDOTDIR/.zshenv}} so do not bloat these files.<br />
<br />
If the shell is a login shell, commands are read from {{ic|/etc/profile}} and then {{ic|$ZDOTDIR/.zprofile}}. Then, if the shell is interactive, commands are read from {{ic|/etc/zsh/zshrc}} and then {{ic|$ZDOTDIR/.zshrc}}. Finally, if the shell is a login shell, {{ic|/etc/zsh/zlogin}} and {{ic|$ZDOTDIR/.zlogin}} are read.<br />
<br />
See also the ''STARTUP/SHUTDOWN FILES'' section of {{ic|man zsh}}.<br />
<br />
=== Persistent rehash ===<br />
<br />
Typically, compinit will not automatically find new executables in the $PATH. For example, after you install a new package, the files in /usr/bin would not be immediately or automatically included in the completion. Thus, to have these new exectuables included, one would run:<br />
$ rehash<br />
<br />
This 'rehash' can be set to happen automatically. Simply include the following in your {{ic|zshrc}}:<br />
<br />
{{hc|~/.zshrc|zstyle ':completion:*' rehash true}}<br />
<br />
{{Note|This hack has been found in a PR for Oh My Zsh [https://github.com/robbyrussell/oh-my-zsh/issues/3440]}}<br />
<br />
== Uninstallation ==<br />
<br />
Change the default shell before removing the {{Pkg|zsh}} package.<br />
<br />
{{Warning|Failure to follow the below procedure may result in users no longer having access to a working shell.}}<br />
<br />
Run following command:<br />
<br />
$ chsh -s /bin/bash ''user''<br />
<br />
Use it for every user with ''zsh'' set as their login shell (including root if needed). When completed, the {{Pkg|zsh}} package can be removed.<br />
<br />
Alternatively, change the default shell back to Bash by editing {{ic|/etc/passwd}} as root.<br />
<br />
{{Warning|It is strongly recommended to use {{ic|vipw}} when editing {{ic|/etc/passwd}} as it helps prevent invalid entries and/or syntax errors.}}<br />
<br />
For example, change the following:<br />
<br />
''username'':x:1000:1000:''Full Name'',,,:/home/''username'':/bin/zsh<br />
<br />
To this:<br />
<br />
''username'':x:1000:1000:''Full Name'',,,:/home/''username'':/bin/bash<br />
<br />
== See also ==<br />
<br />
*[http://zsh.sourceforge.net/Guide/zshguide.html A User's Guide to ZSH]<br />
*[http://zsh.sourceforge.net/Doc/Release/index-frame.html The Z Shell Manual] (different format available [http://zsh.sourceforge.net/Doc/ here])<br />
*[http://zsh.sourceforge.net/FAQ/zshfaq01.html Zsh FAQ]<br />
*[http://grml.org/zsh/zsh-lovers.html zsh-lovers(1)] (this is also available as {{pkg|zsh-lovers}} in offical repository)<br />
*[http://zshwiki.org/home/ Zsh Wiki]<br />
*[https://wiki.gentoo.org/wiki/Zsh/HOWTO Gentoo Wiki: Zsh/HOWTO]<br />
*[http://www.bash2zsh.com/zsh_refcard/refcard.pdf Bash2Zsh Reference Card]</div>Ygyfygyhttps://wiki.archlinux.org/index.php?title=Window_manager&diff=425356Window manager2016-03-12T13:10:24Z<p>Ygyfygy: /* See also */ Added a memory comparison of light wms.</p>
<hr />
<div>[[Category:Window managers]]<br />
[[ar:Window manager]]<br />
[[es:Window manager]]<br />
[[fa:Window manager]]<br />
[[it:Window manager]]<br />
[[ja:ウィンドウマネージャ]]<br />
[[ru:Window manager]]<br />
[[uk:Window manager]]<br />
[[zh-cn:Window manager]]<br />
{{Related articles start}}<br />
{{Related|Desktop environment}}<br />
{{Related|Display manager}}<br />
{{Related|Xorg}}<br />
{{Related|xinitrc}}<br />
{{Related|Start X at Login}}<br />
{{Related articles end}}<br />
<br />
A [[Wikipedia:Window manager|window manager]] (WM) is system software that controls the placement and appearance of windows within a windowing system in a graphical user interface (GUI). It can be part of a [[desktop environment]] (DE) or be used standalone.<br />
<br />
== Overview ==<br />
<br />
Window managers are X clients that control the appearance and behaviour of the frames ("windows") where the various graphical applications are drawn. They determine the border, titlebar, size, and ability to resize windows, and often provide other functionality such as reserved areas for sticking [http://windowmaker.org/dockapps/ dockapps] like [[Window Maker]], or the ability to tab windows like [[Fluxbox]]. Some window managers are even bundled with simple utilities like menus to start programs or to configure the WM itself.<br />
<br />
The [http://standards.freedesktop.org/wm-spec/wm-spec-latest.html Extended Window Manager Hints] specification is used to allow window managers interact in standard ways with the server and the other clients.<br />
<br />
Some window managers are developed as part of a more comprehensive [[desktop environment]], usually allowing the other provided applications to better interact with each other, giving a more consistent experience to the user, complete with features like desktop icons, fonts, toolbars, wallpapers, or desktop widgets.<br />
<br />
Other window managers are instead designed to be used ''standalone'', giving the user complete freedom over the choice of the other applications to be used. This allows the user to create a more lightweight and customized environment, tailored to his/her own specific needs. "Extras" like desktop icons, toolbars, wallpapers, or desktop widgets, if needed, will have to be added with additional dedicated applications.<br />
<br />
Some standalone WMs can be also used to replace the default WM of a DE, just like some DE-oriented WMs can be used standalone too.<br />
<br />
Prior to installing a window manager, a functional X server installation is required. See [[Xorg]] for detailed information.<br />
<br />
=== Types ===<br />
<br />
* [[#Stacking window managers|Stacking]] (aka floating) window managers provide the traditional desktop metaphor used in commercial operating systems like Windows and OS X. Windows act like pieces of paper on a desk, and can be stacked on top of each other. For available Arch Wiki pages see [[:Category:Stacking WMs]].<br />
* [[#Tiling window managers|Tiling]] window managers "tile" the windows so that none are overlapping. They usually make very extensive use of key-bindings and have less (or no) reliance on the mouse. Tiling window managers may be manual, offer predefined layouts, or both. For available Arch Wiki pages see [[:Category:Tiling WMs]].<br />
* [[#Dynamic window managers|Dynamic]] window managers can dynamically switch between tiling or floating window layout. For available Arch Wiki pages see [[:Category:Dynamic WMs]].<br />
<br />
See [[Comparison of tiling window managers]] and [[Wikipedia:Comparison of X window managers]] for comparison of window managers.<br />
<br />
== List of window managers==<br />
<br />
=== Stacking window managers ===<br />
<br />
* {{App|[[2bwm]]|Fast floating WM, with the particularity of having 2 borders, written over the XCB library and derived from mcwm written by Michael Cardell. In 2bwm everything is accessible from the keyboard but a pointing device can be used for move, resize and raise/lower. The name has recently changed from mcwm-beast to 2bwm.|https://github.com/venam/2bwm|{{AUR|2bwm}}}}<br />
<br />
* {{App|aewm|Modern, minimal window manager for X11. It is controlled entirely with the mouse, but contains no visible UI apart from window frames. The command set is sort of like vi: designed back in the dawn of time (1997) to squeeze speed out of low-memory machines, completely unintuitive and new-user-hostile, but quick and elegant in its own way.|http://www.red-bean.com/decklin/aewm/|{{AUR|aewm}}}}<br />
<br />
* {{App|[[Wikipedia:AfterStep|AfterStep]]|Window manager for the Unix X Window System. Originally based on the look and feel of the NeXTStep interface, it provides end users with a consistent, clean, and elegant desktop. The goal of AfterStep development is to provide for flexibility of desktop configuration, improving aesthetics, and efficient use of system resources.|http://www.afterstep.org/|{{AUR|afterstep}}}}<br />
<br />
* {{App|[[Wikipedia:Blackbox|Blackbox]]|Fast, lightweight window manager for the X Window System, without all those annoying library dependencies. Blackbox is built with C++ and contains completely original code (even though the graphics implementation is similar to that of WindowMaker).|http://blackboxwm.sourceforge.net/|{{Pkg|blackbox}}}}<br />
<br />
* {{App|[[Compiz]]|OpenGL compositing manager that uses GLX_EXT_texture_from_pixmap for binding redirected top-level windows to texture objects. It has a flexible plug-in system and it is designed to run well on most graphics hardware.|https://launchpad.net/compiz|{{AUR|compiz}}}}<br />
<br />
* {{App|cwm|Originally deriving from evilwm, but later re-written from scratch. cwm aims to be simple, and offers helpful features such as searching for windows.|http://monkey.org/~marius/cwm/cwm.1.a|{{AUR|cwm}}}}<br />
<br />
* {{App|eggwm|A lightweight QT4/QT5 window manager|{{AUR|eggwm-qt5}}|{{AUR|eggwm}}}}<br />
<br />
* {{App|[[Enlightenment]]|Enlightenment is not just a window manager for Linux/X11 and others, but also a whole suite of libraries to help you create beautiful user interfaces with much less work than doing it the old fashioned way and fighting with traditional toolkits, not to mention a traditional window manager.|http://www.enlightenment.org/|{{Pkg|enlightenment}}}}<br />
<br />
* {{App|[[evilwm]]|Minimalist window manager for the X Window System. 'Minimalist' here does not mean it is too bare to be usable - it just means it omits a lot of the stuff that make other window managers ''un''usable.|http://www.6809.org.uk/evilwm/|{{AUR|evilwm}}}}<br />
<br />
* {{App|[[Fluxbox]]|Window manager for X that was based on the Blackbox 0.61.1 code. It is very light on resources and easy to handle but yet full of features to make an easy and extremely fast desktop experience. It is built using C++ and licensed under the MIT License.|http://www.fluxbox.org/|{{Pkg|fluxbox}}}}<br />
<br />
* {{App|[[Wikipedia:FLWM|Flwm]]|Attempt to combine the best ideas I have seen in several window managers. The primary influence and code base is from wm2 by Chris Cannam.|http://flwm.sourceforge.net/|{{AUR|flwm}}}}<br />
<br />
* {{App|[[FVWM]]|Extremely powerful ICCCM-compliant multiple virtual desktop window manager for the X Window system. Development is active, and support is excellent.|http://www.fvwm.org/|{{Pkg|fvwm}}}}<br />
<br />
* {{app|[http://elementaryos.org/journal/meet-gala-window-manager Gala]|A beautiful Window Manager from elementaryos, part of [[Pantheon]]. Also as a compositing manager, based on libmutter.|https://launchpad.net/gala|{{aur|gala-bzr}}}}<br />
<br />
* {{App|Goomwwm|X11 window manager implemented in C as a cleanroom software project. It manages windows in a minimal floating layout, while providing flexible keyboard-driven controls for window switching, sizing, moving, tagging, and tiling. It is also fast, lightweight, modeless, Xinerama-aware, and EWMH compatible wherever possible.|http://aerosuidae.net/goomwwm/|{{AUR|goomwwm}}}}<br />
<br />
* {{App|[[IceWM]]|Window manager for the X Window System. The goal of IceWM is speed, simplicity, and not getting in the user's way.|http://www.icewm.org/|{{Pkg|icewm}}}}<br />
<br />
* {{App|[[jbwm]]|jbwm is a window manager based on evilwm, with a minimal configuration size of approximately 16kb, focused on small binary size and usability, incorporating optional title-bars and XFT title-bar font rendering as compile-time options. jbwm also features easier to use keybindings than evilwm.|https://github.com/jefbed/jbwm|{{AUR|jbwm}}}}<br />
<br />
* {{App|[[JWM]]|Window manager for the X11 Window System. JWM is written in C and uses only Xlib at a minimum.|http://joewing.net/projects/jwm/index.shtml|{{Pkg|jwm}}}}<br />
<br />
* {{App|Karmen|Window manager for X, written by Johan Veenhuizen. It is designed to "just work." There is no configuration file and no library dependencies other than Xlib. The input focus model is click-to-focus. Karmen aims at ICCCM and EWMH compliance.|http://karmen.sourceforge.net/|{{AUR|karmen}}}}<br />
<br />
* {{App|[[Wikipedia:KWin|KWin]]|The standard KDE window manager in KDE 4.0, ships with the first version of built-in support for compositing, making it also a compositing manager. This allows KWin to provide advanced graphical effects, similar to Compiz, while also providing all the features from previous KDE releases (such as very good integration with the rest of KDE, advanced configurability, focus stealing prevention, a well-tested window manager, robust handling of misbehaving applications/toolkits, etc.).|https://techbase.kde.org/Projects/KWin|{{Pkg|kwin}}}}<br />
<br />
* {{App|lwm|Window manager for X that tries to keep out of your face. There are no icons, no button bars, no icon docks, no root menus, no nothing: if you want all that, then other programs can provide it. There is no configurability either: if you want that, you want a different window manager; one that helps your operating system in its evil conquest of your disc space and its annexation of your physical memory.|http://www.jfc.org.uk/software/lwm.html|{{Pkg|lwm}}}}<br />
<br />
* {{App|Marco|The MATE window manager, fork of Metacity.|https://github.com/mate-desktop/marco|{{Pkg|marco}}}}<br />
<br />
* {{App|[[Wikipedia:Metacity|Metacity]]|This window manager strives to be quiet, small, stable, get on with its job, and stay out of your attention.|http://blogs.gnome.org/metacity/|{{Pkg|metacity}}}}<br />
<br />
* {{App|[[Wikipedia:Mutter_(software)#Muffin|Muffin]]|Window and compositing manager for Cinnamon, fork of Mutter, based on Clutter, uses OpenGL.|https://github.com/linuxmint/muffin/|{{Pkg|muffin}}}}<br />
<br />
* {{App|[[Wikipedia:Mutter (window manager)|Mutter]]|Window and compositing manager for GNOME, based on Clutter, uses OpenGL.|http://git.gnome.org/browse/mutter/|{{Pkg|mutter}}}}<br />
<br />
* {{App|[[Wikipedia:Motif_Window_Manager|MWM]]|The Motif Window Manager (MWM) is an X window manager based on the Motif toolkit.|http://sourceforge.net/projects/motif/|{{Pkg|openmotif}}, {{Pkg|lesstif}}}}<br />
<br />
* {{App|[[Openbox]]|Highly configurable, next generation window manager with extensive standards support. The *box visual style is well known for its minimalistic appearance. Openbox uses the *box visual style, while providing a greater number of options for theme developers than previous *box implementations. The theme documentation describes the full range of options found in Openbox themes.|http://openbox.org/wiki/Main_Page|{{Pkg|openbox}}}}<br />
<br />
* {{App|[[pawm]]|Window manager for the X Window system. So it is not a 'desktop' and does not offer you a huge pile of useless options, just the facilities needed to run your X applications and at the same time having a friendly and easy to use interface.|http://www.pleyades.net/pawm/|{{Pkg|pawm}}}}<br />
<br />
* {{App|[[PekWM]]|Window manager that once upon a time was based on the aewm++ window manager, but it has evolved enough that it no longer resembles aewm++ at all. It has a much expanded feature-set, including window grouping (similar to Ion, PWM, or Fluxbox), auto-properties, Xinerama, keygrabber that supports keychains, and much more.|http://www.pekwm.org/projects/pekwm|{{Pkg|pekwm}}}}<br />
<br />
* {{App|[[Sawfish]]|Extensible window manager using a Lisp-based scripting language. Its policy is very minimal compared to most window managers. Its aim is simply to manage windows in the most flexible and attractive manner possible. All high-level WM functions are implemented in Lisp for future extensibility or redefinition.|http://sawfish.wikia.com/wiki/Main_Page|{{AUR|sawfish}}}}<br />
<br />
* {{App|TinyWM|Tiny window manager created as an exercise in minimalism. It may be helpful in learning some of the very basics of creating a window manager. It is comprised of approximately 50 lines of C. There is also a Python version using python-xlib.|http://incise.org/tinywm.html|{{AUR|tinywm}} {{AUR|tinywm-git}}}}<br />
<br />
* {{App|[[twm]]|Window manager for the X Window System. It provides titlebars, shaped windows, several forms of icon management, user-defined macro functions, click-to-type and pointer-driven keyboard focus, and user-specified key and pointer button bindings.|http://cgit.freedesktop.org/xorg/app/twm/|{{Pkg|xorg-twm}}}}<br />
<br />
* {{App|[[Wikipedia:UDE|UWM]]|The ultimate window manager for UDE.|http://udeproject.sourceforge.net/|{{Pkg|ude}}}}<br />
<br />
* {{App|WindowLab|Small and simple window manager of novel design. It has a click-to-focus but not raise-on-focus policy, a window resizing mechanism that allows one or many edges of a window to be changed in one action, and an innovative menubar that shares the same part of the screen as the taskbar. Window titlebars are prevented from going off the edge of the screen by constraining the mouse pointer, and when appropriate the pointer is also constrained to the taskbar/menubar in order to make target menu items easier to hit.|http://nickgravgaard.com/windowlab/|{{Pkg|windowlab}}}}<br />
<br />
* {{App|[[Window Maker]]|X11 window manager originally designed to provide integration support for the GNUstep Desktop Environment. In every way possible, it reproduces the elegant look and feel of the NEXTSTEP user interface. It is fast, feature rich, easy to configure, and easy to use. It is also free software, with contributions being made by programmers from around the world.|http://windowmaker.org/|{{Pkg|windowmaker}}}}<br />
<br />
* {{App|WM2|Window manager for X. It provides an unusual style of window decoration and as little functionality as its author feels comfortable with in a window manager. wm2 is not configurable, except by editing the source and recompiling the code, and is really intended for people who do not particularly want their window manager to be too friendly. |http://www.all-day-breakfast.com/wm2/|{{AUR|wm2}}}}<br />
<br />
* {{App|[[Xfwm]]|The [[Xfce]] window manager manages the placement of application windows on the screen, provides beautiful window decorations, manages workspaces or virtual desktops and natively supports multiscreen mode. It provides its own compositing manager (from the X.Org Composite extension) for true transparency and shadows. The Xfce window manager also includes a keyboard shortcuts editor for user specific commands and basic windows manipulations and provides a preferences dialog for advanced tweaks.|http://www.xfce.org/projects/xfwm4/|{{pkg|xfwm4}}}}<br />
<br />
=== Tiling window managers ===<br />
<br />
* {{App|[[Bspwm]]|bspwm is a tiling window manager that represents windows as the leaves of a full binary tree. It has support for EWMH and multiple monitors, and is configured and controlled through messages.|https://github.com/baskerville/bspwm|{{Pkg|bspwm}}}}<br />
<br />
* {{App|[[Herbstluftwm]]|Manual tiling window manager for X11 using Xlib and Glib. The layout is based on splitting frames into subframes which can be split again or can be filled with windows (similar to i3/ musca). Tags (or workspaces or virtual desktops or …) can be added/removed at runtime. Each tag contains an own layout. Exactly one tag is viewed on each monitor. The tags are monitor independent (similar to xmonad). It is configured at runtime via ipc calls from herbstclient. So the configuration file is just a script which is run on startup. (similar to wmii/musca).|http://herbstluftwm.org|{{pkg|herbstluftwm}}}}<br />
<br />
* {{App|howm|A lightweight, tiling X11 window manager that mimics vi by offering operators, motions and modes. Configuration is done through the included {{ic|config.h}} file.|https://github.com/HarveyHunt/howm|{{AUR|howm-x11}}}}<br />
<br />
* {{App|[[Ion3]]|Tiling tabbed X11 window manager designed with keyboard users in mind. It was one of the first of the “new wave" of tiling windowing environments (the other being LarsWM, with quite a different approach) and has since spawned an entire category of tiling window managers for X11 – none of which really manage to reproduce the feel and functionality of Ion. It uses Lua as an embedded interpreter which handles all of the configuration. |http://tuomov.iki.fi/software|{{AUR|ion3}}}}<br />
<br />
* {{App|[[Notion]]|Tiling, tabbed window manager for the X window system that utilizes 'tiles' and 'tabbed' windows.<br />
** Tiling: you divide the screen into non-overlapping 'tiles'. Every window occupies one tile, and is maximized to it<br />
** Tabbing: a tile may contain multiple windows - they will be 'tabbed'.<br />
** Static: most tiled window managers are 'dynamic', meaning they automatically resize and move around tiles as windows appear and disappear. Notion, by contrast, does not automatically change the tiling.<br />
: Notion is a fork of Ion3.|http://notion.sf.net/|{{Pkg|notion}}}}<br />
<br />
* {{App|[[Ratpoison]]|Simple Window Manager with no fat library dependencies, no fancy graphics, no window decorations, and no rodent dependence. It is largely modeled after GNU Screen which has done wonders in the virtual terminal market. Ratpoison is configured with a simple text file. The information bar in Ratpoison is somewhat different, as it shows only when needed. It serves as both an application launcher as well as a notification bar. Ratpoison does not include a system tray.|http://www.nongnu.org/ratpoison/|{{Pkg|ratpoison}}}}<br />
<br />
* {{App|[[Stumpwm]]|Tiling, keyboard driven X11 Window Manager written entirely in Common Lisp. Stumpwm attempts to be customizable yet visually minimal. It does have various hooks to attach your personal customizations, and variables to tweak, and can be reconfigured and reloaded while running. There are no window decorations, no icons, no buttons, and no system tray. Its information bar can be set to show constantly or only when needed.|http://www.nongnu.org/stumpwm/|{{AUR|stumpwm-git}}}}<br />
<br />
* {{App|[[subtle]]|Manual tiling window manager with a rather uncommon approach of tiling: Per default there is no typical layout enforcement, windows are placed on a position (gravity) in a custom grid. The user can change the gravity of each window either directly per grabs or with rules defined by tags in the config. It has workspace tags and automatic client tagging, mouse and keyboard control as well as an extendable statusbar. |http://subforge.org/projects/subtle|{{AUR|subtle-git}}}}<br />
<br />
* {{App|[[WMFS]]|Window Manager From Scratch is a lightweight and highly configurable tiling window manager for X. It can be configured with a configuration file, supports Xft (FreeType) fonts and is compliant with the Extended Window Manager Hints (EWMH) specifications, Xinerama and Xrandr. WMFS can be driven with Vi based commands (ViWMFS).|https://github.com/xorg62/wmfs|{{AUR|wmfs}}}}<br />
<br />
* {{App|[[WMFS2]]|Incompatible successor of WMFS. It's even more minimalistic and brings some new stuff.|https://github.com/xorg62/wmfs|{{AUR|wmfs2-git}}}}<br />
<br />
=== Dynamic window managers ===<br />
<br />
* {{App|[[awesome]]|Highly configurable, next generation framework window manager for X. It is very fast, extensible and licensed under the GNU GPLv2 license. Configured in Lua, it has a system tray, information bar, and launcher built in. There are extensions available to it written in Lua. Awesome uses XCB as opposed to Xlib, which may result in a speed increase. Awesome has other features as well, such as an early replacement for notification-daemon, a right-click menu similar to that of the *box window managers, and many other things. |http://awesome.naquadah.org/|{{Pkg|awesome}}}}<br />
<br />
* {{App|[[catwm]]|Small window manager, even simpler than dwm, written in C. Configuration is done by modifying the config.h file and recompiling.|https://github.com/pyknite/catwm|{{AUR|catwm-git}}}}<br />
<br />
* {{App|[[dwm]]|Dynamic window manager for X. It manages windows in tiled, monocle and floating layouts. All of the layouts can be applied dynamically, optimising the environment for the application in use and the task performed. does not include a tray app or automatic launcher, although dmenu integrates well with it, as they are from the same author. It has no text configuration file. Configuration is done entirely by modifying the C source code, and it must be recompiled and restarted each time it is changed.|http://dwm.suckless.org/|{{Pkg|dwm}}}}<br />
<br />
* {{App|[[echinus]]|Simple and lightweight tiling and floating window manager for X11. Started as a dwm fork with easier configuration, echinus became full-featured re-parenting window manager with EWMH support. It has an EWMH-compatible panel/taskbar, called {{AUR|ourico}}.|http://plhk.ru|{{AUR|echinus}}}}<br />
<br />
* {{App|[[i3]]|Tiling window manager, completely written from scratch. i3 was created because wmii, our favorite window manager at the time, did not provide some features we wanted (multi-monitor done right, for example), had some bugs, did not progress for quite some time, and was not easy to hack at all (source code comments/documentation completely lacking). Notable differences are in the areas of multi-monitor support and the tree metaphor. For speed the Plan 9 interface of wmii is not implemented. |http://i3wm.org/|{{Pkg|i3-wm}}}}<br />
<br />
* {{App|[[FrankenWM]]|Basically monsterwm with floating done right. Features that are added on top of basic mwm include: more layouts (fibonacci, equal stack, dual stack), gaps (and borders) are adjustable on the fly, minimize/maximize single windows, hide/show all windows, resizing master and stack individually, invert stack.|https://github.com/sulami/FrankenWM|{{AUR|frankenwm-git}}}}<br />
<br />
* {{App|[[spectrwm]]|Small dynamic tiling window manager for X11, largely inspired by xmonad and dwm. It tries to stay out of the way so that valuable screen real estate can be used for much more important stuff. It has sane defaults and is configured with a text file. It was written by hackers for hackers and it strives to be small, compact and fast. It has a built-in status bar fed from a user-defined script.|https://github.com/conformal/spectrwm/wiki|{{Pkg|spectrwm}}}}<br />
<br />
* {{App|[[Qtile]]|Full-featured, hackable tiling window manager written in Python. Qtile is simple, small, and extensible. It's easy to write your own layouts, widgets, and built-in commands.It is written and configured entirely in Python, which means you can leverage the full power and flexibility of the language to make it fit your needs. |https://github.com/qtile/qtile|{{AUR|qtile}}}}<br />
<br />
* {{App|[[wmii]]|Small, dynamic window manager for X11. It is scriptable, has a 9P filesystem interface and supports classic and tiling (Acme-like) window management. It aims to maintain a small and clean (read hackable and beautiful) codebase. The default configuration is in bash and [http://rc.cat-v.org rc (the Plan 9 shell)], but programs exist written in ruby, and any program that can work with text can configure it. It has a status bar and launcher built in, and also an optional system tray ({{ic|witray}}). |http://wmii.suckless.org/|{{Pkg|wmii}}}}<br />
<br />
* {{App|[[xmonad]]|Dynamically tiling X11 window manager that is written and configured in Haskell. In a normal WM, you spend half your time aligning and searching for windows. Xmonad makes work easier, by automating this. XMonad is configured in Haskell. For all configuration changes, xmonad must be recompiled, so the Haskell compiler (over 100MB) must be installed. A large library called {{Pkg|xmonad-contrib}} provides many additional features|http://xmonad.org/|{{Pkg|xmonad}}}}<br />
<br />
== See also ==<br />
<br />
* http://www.gilesorr.com/wm/<br />
* http://www.slant.co/topics/390/~what-are-the-best-window-managers-for-linux<br />
* https://l3net.wordpress.com/2013/03/17/a-memory-comparison-of-light-linux-desktops/</div>Ygyfygyhttps://wiki.archlinux.org/index.php?title=Spectrwm&diff=424384Spectrwm2016-03-06T15:44:38Z<p>Ygyfygy: /* Keybindings configuration */ Typo</p>
<hr />
<div>{{DISPLAYTITLE:spectrwm}}<br />
[[Category:Dynamic WMs]]<br />
[[ja:Spectrwm]]<br />
From [http://spectrwm.org/ spectrwm website]:<br />
<br />
:''spectrwm is a small dynamic tiling window manager for [[Xorg]]. It tries to stay out of the way so that valuable screen real estate can be used for much more important stuff. It has sane defaults and does not require one to learn a language to do any configuration. It was written by hackers for hackers and it strives to be small, compact and fast.''<br />
<br />
Spectrwm is written in C and configured with a text configuration file. It was previously known as scrotwm.<br />
<br />
== Installation ==<br />
<br />
[[Install]] the {{Pkg|spectrwm}} package. <br />
<br />
The modkey (the main key to issue commands with) is set to Mod4, which is usually the {{ic|Super}} key.<br />
<br />
There is also a screen lock key binding, which by default calls xlock from the {{Pkg|xlockmore}} package.<br />
<br />
{{Pkg|xscreensaver}} is also useful for screen saving and power management after an idle period, and screen locking.<br />
<br />
See [[Xdefaults]] for details of how to set up fonts, colours and other settings for {{Pkg|xterm}} and {{Pkg|xscreensaver}}. Run {{ic|xscreensaver-demo}} to select the animation (or blank) and display power management (recommended).<br />
<br />
== Configuration ==<br />
<br />
''spectrwm'' first tries to open the user specific file, {{ic|~/.spectrwm.conf}}. If that file is unavailable, it tries to open the global configuration file at {{ic|/etc/spectrwm.conf}}.<br />
<br />
Optionally, spectrwm can call {{ic|baraction.sh}} (in the user's path), which should output a text status message to {{Ic|stdout}} for the status bar.<br />
<br />
=== Keybindings configuration ===<br />
<br />
Default keybindings are in {{ic|/etc/spectrwm/spectrwm_<<keyboard layout>>.conf}}. In order to customize keybingings:<br />
<br />
* Set {{ic|keyboard_mapping}} to /dev/null in your {{ic|~/.spectrwm.com}}<br />
<br />
* Copy-paste the contents of {{ic|/etc/spectrwm/spectrwm_<<keyboard layout>>.conf}} to the end of your {{ic|~/.spectrwm.conf}}.<br />
<br />
== Starting spectrwm ==<br />
<br />
To start spectrwm via {{Ic|startx}} or the [[SLiM]] login manager, append the following to {{ic|~/.xinitrc}}:<br />
<br />
exec spectrwm<br />
<br />
=== Starting spectrwm with XDM ===<br />
<br />
For [[XDM]], create {{ic|~/.xsession}} with the following contents:<br />
<br />
# .xsession<br />
# This file is sourced by xdm<br />
spectrwm<br />
<br />
Make sure {{ic|~/.xsession}} is executable:<br />
<br />
$ chmod a+x ~/.xsession<br />
<br />
{{Note|If you do not create {{ic|~/.xsession}}, then {{ic|~/.xinitrc}} will be used, but you might want different settings depending on if you use {{ic|startx}} or XDM. Remember to make {{ic|~/.xinitrc}} executable, or XDM won't start, if you use that method.}}<br />
<br />
{{Tip|For a nice simple Arch themed xdm, try {{AUR|xdm-arch-theme}}.}}<br />
<br />
=== Starting spectrwm with KDM ===<br />
<br />
For [[KDM]], make sure {{ic|/usr/share/xsessions}} is listed in SessionDirs in {{ic|/usr/share/config/kdm/kdmrc}} as described [[KDM#SessionsDirs|here]]. SpectrWM will then be available as an option in the Session Type menu in KDM.<br />
<br />
To start other tasks when the session is launched, for example to launch xscreensaver and set the background image, copy {{ic|/usr/share/config/kdm/Xsession}} to a custom version as<br />
described [[KDM#Session|here]], and then edit it, for example like this:<br />
<br />
{{bc|<nowiki><br />
case $session in<br />
"")<br />
exec xmessage -center -buttons OK:0 -default OK "Sorry, $DESKTOP_SESSION is no valid session."<br />
;;<br />
failsafe)<br />
exec xterm -geometry 80x24-0-0<br />
;;<br />
custom)<br />
exec $HOME/.xsession<br />
;;<br />
default)<br />
exec /usr/bin/startkde<br />
;;<br />
'''/usr/bin/spectrwm'''|otherwm''')'''<br />
'''feh --bg-scale /usr/share/wallpapers/Plasmalicious/contents/images/1280x1024.jpg'''<br />
'''xscreensaver -no-splash &'''<br />
'''eval exec "$session"'''<br />
''';;'''<br />
*)<br />
eval exec "$session"<br />
;;<br />
esac<br />
</nowiki>}}<br />
<br />
== Multiple monitors (Xinerama) ==<br />
<br />
With a non-Xrandr multiple monitor setup create regions to split the total desktop area into one region per monitor:<br />
<br />
region = screen[1]:1280x1024+0+0<br />
region = screen[1]:1280x1024+1280+0<br />
<br />
== Statusbar configuration ==<br />
<br />
To enable the statusbar, uncomment these two items in {{ic|/etc/spectrwm.conf}} (or {{ic|~/.spectrwm.conf}}). By default they are commented out and the statusbar is disabled.<br />
<br />
bar_action = baraction.sh<br />
bar_delay = 5<br />
<br />
=== Bash scripts ===<br />
<br />
To test the status bar, place the following simple {{ic|baraction.sh}} in a<br />
{{ic|~/scripts}} (or {{ic|~/bin}}) directory which you have previously added to your $PATH in your [[bashrc|~/.bashrc]] file.<br />
<br />
{{bc|<nowiki><br />
#!/bin/bash<br />
# baraction.sh script for spectrwm status bar<br />
<br />
SLEEP_SEC=5 # set bar_delay = 5 in /etc/spectrwm.conf<br />
COUNT=0<br />
#loops forever outputting a line every SLEEP_SEC secs<br />
while :; do<br />
let COUNT=$COUNT+1<br />
echo -e " Hello World! $COUNT"<br />
sleep $SLEEP_SEC<br />
done<br />
</nowiki>}}<br />
<br />
Press {{ic|Modkey+Q}} to restart spectrwm and after a few seconds you should see the output in the status bar. If you have problems at this stage, make sure the script is executable, test it from the command line, and check the path/filename you specified in {{ic|bar_action}}.<br />
<br />
Here are some other ideas for status bar items: ethernet, email notification, disk space, mounts, now playing (mpc current).<br />
<br />
The script may also show the date, in which case the built-in clock can be disabled:<br />
<br />
clock_enabled = 0<br />
<br />
=== Conky ===<br />
<br />
Instead of a bash script, conky may be used. It should be used in non-graphical mode as shown below to output a text string to stdout which can be read in by spectrwm. First install conky.<br />
It is not necessary to install the cut-down "conky-cli" from AUR (although that would work too). <br />
<br />
In {{ic|~/.spectrwm.conf}} set<br />
<br />
bar_action = conky<br />
<br />
Then in each user's {{ic|~/.conkyrc}} file place for example:<br />
<br />
out_to_x no<br />
out_to_console yes<br />
update_interval 1.0<br />
total_run_times 0<br />
use_spacer none<br />
TEXT<br />
${time %R %a,%d-%#b-%y} |Mail:${new_mails} |Up:${uptime_short} |Temp:${acpitemp}C |Batt:${battery_short} |${addr wlan0} |RAM:$memperc% |CPU:${cpu}% | ${downspeedf wlan0}<br />
<br />
== Alternative status bar ==<br />
<br />
An alternative is to use [[dzen|dzen2]] to create a status bar. This has the advantage that colors and even icons may be used, but the disadvantage that the bar is not integrated with spectrwm. So the current workspace number and layout and the bar-toggle keybinding are not available. The "region" option can be used to reserve the required screen space.<br />
For example to reserve 14 pixels at the top of the screen in spectrwm.conf change<br />
<br />
bar_enabled = 1<br />
region = screen[1]:1024x768+0+0<br />
<br />
to<br />
<br />
bar_enabled = 0<br />
region = screen[1]:1024x754+0+14<br />
<br />
(adjust for your screen resolution).<br />
<br />
Then, for example using [[i3|i3status]] to supply the information:<br />
<br />
$ i3status | dzen2 -fn -*-terminus-medium-*-*-*-*-*-*-*-*-*-*-* &<br />
<br />
Spectrwm's own bar can still be enabled and disabled with {{ic|Meta+b}}.<br />
<br />
== Screenshots ==<br />
<br />
Spectrwm has the facility to execute a script called {{ic|screenshot.sh}} with the keybindings<br />
<br />
Meta+s for a full screenshot<br />
Meta+Shift+s for a screenshot of a single window<br />
<br />
First install scrot<br />
Then copy the default script supplied in the spectrwm package to a location in your {{ic|$PATH}}, for example:<br />
<br />
$ cp /usr/share/spectrwm/screenshot.sh ~/bin<br />
<br />
== Screen locking ==<br />
<br />
By default the lock keybinding {{ic|Mod+Shift+Delete}} executes ''xlock''<br />
<br />
program[lock] = xlock<br />
<br />
An alternative, if xscreensaver is already running, is to use<br />
<br />
program[lock] = xscreensaver-command -lock<br />
<br />
== Using spectrwm ==<br />
<br />
* To save space, window title bars are not shown. Window borders are one pixel wide. The border changes colour to indicate focus.<br />
<br />
* Layouts are handled dynamically and can be changed on the fly. There are three standard layouts (stacking algorithms): vertical, horizontal and maximized (indicated in the status bar as [|], [-] and [ ])<br />
<br />
* There is the concept of a master area (a working area). Any window can be switched to become the master and will then be shown in the master area. The master area is the left (top) portion of the screen in vertical (horizontal) mode. The size of the master area can be adjusted with the keys. By default the master area holds one window, but this can be increased.<br />
<br />
* The area excluding the master area is called the stacking area. New windows are added to the stacking area. By default the stacking area has one column (row) in vertical (horizontal) mode, but his can be increased.<br />
<br />
* Windows may be moved to a floating layer -- i.e. removed from the tiling management. This is useful for programs which are not suitable for tiling.<br />
<br />
Some of the most useful key bindings:<br />
<br />
{{bc|<nowiki><br />
Meta+Shift+Return: open terminal<br />
Meta+p: dmenu (then type the start of the program name and return)<br />
Meta+1/2/3/4/5/6/7/8/9/0: select workspaces 1-10<br />
Meta+Shift+1/2/3/4/5/6/7/8/9/0: move window to workspace 1-10<br />
Meta+Right/Left: select next/previous workspace<br />
Meta+Shift+Right/Left: select next/previous screen<br />
Meta+Spacebar: cycle through layouts (vertical, horizontal, maximized)<br />
Meta+j/k: cycle through windows forwards/backwards<br />
Meta+Tab/Meta+Shft+Tab: same as Meta+j/k<br />
Meta+Return: move current window to master area<br />
Meta+h/l: increase/decrease size of master area<br />
</nowiki>}}<br />
<br />
Advanced stacking<br />
<br />
{{bc|<nowiki><br />
Meta+,/. : increase/decrease the number of windows in master area (default is 1)<br />
Meta+Shift+,/. : increase/decrease number of columns(rows) in stacking area in vertical(horizontal) mode (default is 1)<br />
Meta+Shift+j/k: swap window position with next/previous window<br />
Meta+t: float<->tile toggle<br />
</nowiki>}}<br />
<br />
Mouse bindings<br />
<br />
{{bc|<nowiki><br />
Mouseover: focus window<br />
Meta+LeftClick+Drag: move window (and float it if tiled)<br />
Meta+RightClick+Drag: resize floating window<br />
Meta+Shift+RightClick+Drag: resize floating window keeping it centred<br />
</nowiki>}}<br />
<br />
Other useful bindings<br />
<br />
{{bc|<nowiki><br />
Meta+x: close window<br />
Meta+Shift+x: kill window<br />
Meta+b: hide/show status bar<br />
Meta+q: restart spectrwm (reset desktops and reread spectrwm config without stopping running programs)<br />
Meta+Shift+q: exit spectrwm<br />
</nowiki>}}<br />
<br />
== Troubleshooting ==<br />
<br />
=== Help, I just logged in and all I see is a blank screen ===<br />
<br />
Press {{ic|Shift+WinKey+Return}} and an xterm will start. See {{ic|man spectrwm}} for other default key bindings. Also check your configuration file.<br />
<br />
=== Why does my window open in a desktop other then the current active one? ===<br />
<br />
Currently the PID of window is used to determine the desktop for new windows. To workaround this with terminals for example, you can often pass an argument to open the terminal in a new process.<br />
<br />
== See also ==<br />
<br />
* [http://www.spectrwm.org spectrwm] - spectrwm's official website<br />
<br />
* [[dmenu]] - Simple application launcher from the developers of [[dwm]]<br />
<br />
* #spectrwm at irc.freenode.net - (un)official IRC channel<br />
<br />
* [https://bbs.archlinux.org/viewtopic.php?id=64645 The scrotwm thread]</div>Ygyfygyhttps://wiki.archlinux.org/index.php?title=Spectrwm&diff=424383Spectrwm2016-03-06T15:44:00Z<p>Ygyfygy: /* Configuration */ Added how to configure keybindings.</p>
<hr />
<div>{{DISPLAYTITLE:spectrwm}}<br />
[[Category:Dynamic WMs]]<br />
[[ja:Spectrwm]]<br />
From [http://spectrwm.org/ spectrwm website]:<br />
<br />
:''spectrwm is a small dynamic tiling window manager for [[Xorg]]. It tries to stay out of the way so that valuable screen real estate can be used for much more important stuff. It has sane defaults and does not require one to learn a language to do any configuration. It was written by hackers for hackers and it strives to be small, compact and fast.''<br />
<br />
Spectrwm is written in C and configured with a text configuration file. It was previously known as scrotwm.<br />
<br />
== Installation ==<br />
<br />
[[Install]] the {{Pkg|spectrwm}} package. <br />
<br />
The modkey (the main key to issue commands with) is set to Mod4, which is usually the {{ic|Super}} key.<br />
<br />
There is also a screen lock key binding, which by default calls xlock from the {{Pkg|xlockmore}} package.<br />
<br />
{{Pkg|xscreensaver}} is also useful for screen saving and power management after an idle period, and screen locking.<br />
<br />
See [[Xdefaults]] for details of how to set up fonts, colours and other settings for {{Pkg|xterm}} and {{Pkg|xscreensaver}}. Run {{ic|xscreensaver-demo}} to select the animation (or blank) and display power management (recommended).<br />
<br />
== Configuration ==<br />
<br />
''spectrwm'' first tries to open the user specific file, {{ic|~/.spectrwm.conf}}. If that file is unavailable, it tries to open the global configuration file at {{ic|/etc/spectrwm.conf}}.<br />
<br />
Optionally, spectrwm can call {{ic|baraction.sh}} (in the user's path), which should output a text status message to {{Ic|stdout}} for the status bar.<br />
<br />
=== Keybindings configuration ===<br />
<br />
Default keybindings are in {{ic|/etc/spectrwm/spectrwm_<<keyboard layout>>.conf}}. In order to customize keybingings:<br />
<br />
* Set {{ic|keyboard_mapping}} to /dev/null in your {{ic|~/.spectrwm.com}}<br />
<br />
* Copy-paste the contents of {{{ic|/etc/spectrwm/spectrwm_<<keyboard layout>>.conf}} to the end of your {{ic|~/.spectrwm.conf}}.<br />
<br />
== Starting spectrwm ==<br />
<br />
To start spectrwm via {{Ic|startx}} or the [[SLiM]] login manager, append the following to {{ic|~/.xinitrc}}:<br />
<br />
exec spectrwm<br />
<br />
=== Starting spectrwm with XDM ===<br />
<br />
For [[XDM]], create {{ic|~/.xsession}} with the following contents:<br />
<br />
# .xsession<br />
# This file is sourced by xdm<br />
spectrwm<br />
<br />
Make sure {{ic|~/.xsession}} is executable:<br />
<br />
$ chmod a+x ~/.xsession<br />
<br />
{{Note|If you do not create {{ic|~/.xsession}}, then {{ic|~/.xinitrc}} will be used, but you might want different settings depending on if you use {{ic|startx}} or XDM. Remember to make {{ic|~/.xinitrc}} executable, or XDM won't start, if you use that method.}}<br />
<br />
{{Tip|For a nice simple Arch themed xdm, try {{AUR|xdm-arch-theme}}.}}<br />
<br />
=== Starting spectrwm with KDM ===<br />
<br />
For [[KDM]], make sure {{ic|/usr/share/xsessions}} is listed in SessionDirs in {{ic|/usr/share/config/kdm/kdmrc}} as described [[KDM#SessionsDirs|here]]. SpectrWM will then be available as an option in the Session Type menu in KDM.<br />
<br />
To start other tasks when the session is launched, for example to launch xscreensaver and set the background image, copy {{ic|/usr/share/config/kdm/Xsession}} to a custom version as<br />
described [[KDM#Session|here]], and then edit it, for example like this:<br />
<br />
{{bc|<nowiki><br />
case $session in<br />
"")<br />
exec xmessage -center -buttons OK:0 -default OK "Sorry, $DESKTOP_SESSION is no valid session."<br />
;;<br />
failsafe)<br />
exec xterm -geometry 80x24-0-0<br />
;;<br />
custom)<br />
exec $HOME/.xsession<br />
;;<br />
default)<br />
exec /usr/bin/startkde<br />
;;<br />
'''/usr/bin/spectrwm'''|otherwm''')'''<br />
'''feh --bg-scale /usr/share/wallpapers/Plasmalicious/contents/images/1280x1024.jpg'''<br />
'''xscreensaver -no-splash &'''<br />
'''eval exec "$session"'''<br />
''';;'''<br />
*)<br />
eval exec "$session"<br />
;;<br />
esac<br />
</nowiki>}}<br />
<br />
== Multiple monitors (Xinerama) ==<br />
<br />
With a non-Xrandr multiple monitor setup create regions to split the total desktop area into one region per monitor:<br />
<br />
region = screen[1]:1280x1024+0+0<br />
region = screen[1]:1280x1024+1280+0<br />
<br />
== Statusbar configuration ==<br />
<br />
To enable the statusbar, uncomment these two items in {{ic|/etc/spectrwm.conf}} (or {{ic|~/.spectrwm.conf}}). By default they are commented out and the statusbar is disabled.<br />
<br />
bar_action = baraction.sh<br />
bar_delay = 5<br />
<br />
=== Bash scripts ===<br />
<br />
To test the status bar, place the following simple {{ic|baraction.sh}} in a<br />
{{ic|~/scripts}} (or {{ic|~/bin}}) directory which you have previously added to your $PATH in your [[bashrc|~/.bashrc]] file.<br />
<br />
{{bc|<nowiki><br />
#!/bin/bash<br />
# baraction.sh script for spectrwm status bar<br />
<br />
SLEEP_SEC=5 # set bar_delay = 5 in /etc/spectrwm.conf<br />
COUNT=0<br />
#loops forever outputting a line every SLEEP_SEC secs<br />
while :; do<br />
let COUNT=$COUNT+1<br />
echo -e " Hello World! $COUNT"<br />
sleep $SLEEP_SEC<br />
done<br />
</nowiki>}}<br />
<br />
Press {{ic|Modkey+Q}} to restart spectrwm and after a few seconds you should see the output in the status bar. If you have problems at this stage, make sure the script is executable, test it from the command line, and check the path/filename you specified in {{ic|bar_action}}.<br />
<br />
Here are some other ideas for status bar items: ethernet, email notification, disk space, mounts, now playing (mpc current).<br />
<br />
The script may also show the date, in which case the built-in clock can be disabled:<br />
<br />
clock_enabled = 0<br />
<br />
=== Conky ===<br />
<br />
Instead of a bash script, conky may be used. It should be used in non-graphical mode as shown below to output a text string to stdout which can be read in by spectrwm. First install conky.<br />
It is not necessary to install the cut-down "conky-cli" from AUR (although that would work too). <br />
<br />
In {{ic|~/.spectrwm.conf}} set<br />
<br />
bar_action = conky<br />
<br />
Then in each user's {{ic|~/.conkyrc}} file place for example:<br />
<br />
out_to_x no<br />
out_to_console yes<br />
update_interval 1.0<br />
total_run_times 0<br />
use_spacer none<br />
TEXT<br />
${time %R %a,%d-%#b-%y} |Mail:${new_mails} |Up:${uptime_short} |Temp:${acpitemp}C |Batt:${battery_short} |${addr wlan0} |RAM:$memperc% |CPU:${cpu}% | ${downspeedf wlan0}<br />
<br />
== Alternative status bar ==<br />
<br />
An alternative is to use [[dzen|dzen2]] to create a status bar. This has the advantage that colors and even icons may be used, but the disadvantage that the bar is not integrated with spectrwm. So the current workspace number and layout and the bar-toggle keybinding are not available. The "region" option can be used to reserve the required screen space.<br />
For example to reserve 14 pixels at the top of the screen in spectrwm.conf change<br />
<br />
bar_enabled = 1<br />
region = screen[1]:1024x768+0+0<br />
<br />
to<br />
<br />
bar_enabled = 0<br />
region = screen[1]:1024x754+0+14<br />
<br />
(adjust for your screen resolution).<br />
<br />
Then, for example using [[i3|i3status]] to supply the information:<br />
<br />
$ i3status | dzen2 -fn -*-terminus-medium-*-*-*-*-*-*-*-*-*-*-* &<br />
<br />
Spectrwm's own bar can still be enabled and disabled with {{ic|Meta+b}}.<br />
<br />
== Screenshots ==<br />
<br />
Spectrwm has the facility to execute a script called {{ic|screenshot.sh}} with the keybindings<br />
<br />
Meta+s for a full screenshot<br />
Meta+Shift+s for a screenshot of a single window<br />
<br />
First install scrot<br />
Then copy the default script supplied in the spectrwm package to a location in your {{ic|$PATH}}, for example:<br />
<br />
$ cp /usr/share/spectrwm/screenshot.sh ~/bin<br />
<br />
== Screen locking ==<br />
<br />
By default the lock keybinding {{ic|Mod+Shift+Delete}} executes ''xlock''<br />
<br />
program[lock] = xlock<br />
<br />
An alternative, if xscreensaver is already running, is to use<br />
<br />
program[lock] = xscreensaver-command -lock<br />
<br />
== Using spectrwm ==<br />
<br />
* To save space, window title bars are not shown. Window borders are one pixel wide. The border changes colour to indicate focus.<br />
<br />
* Layouts are handled dynamically and can be changed on the fly. There are three standard layouts (stacking algorithms): vertical, horizontal and maximized (indicated in the status bar as [|], [-] and [ ])<br />
<br />
* There is the concept of a master area (a working area). Any window can be switched to become the master and will then be shown in the master area. The master area is the left (top) portion of the screen in vertical (horizontal) mode. The size of the master area can be adjusted with the keys. By default the master area holds one window, but this can be increased.<br />
<br />
* The area excluding the master area is called the stacking area. New windows are added to the stacking area. By default the stacking area has one column (row) in vertical (horizontal) mode, but his can be increased.<br />
<br />
* Windows may be moved to a floating layer -- i.e. removed from the tiling management. This is useful for programs which are not suitable for tiling.<br />
<br />
Some of the most useful key bindings:<br />
<br />
{{bc|<nowiki><br />
Meta+Shift+Return: open terminal<br />
Meta+p: dmenu (then type the start of the program name and return)<br />
Meta+1/2/3/4/5/6/7/8/9/0: select workspaces 1-10<br />
Meta+Shift+1/2/3/4/5/6/7/8/9/0: move window to workspace 1-10<br />
Meta+Right/Left: select next/previous workspace<br />
Meta+Shift+Right/Left: select next/previous screen<br />
Meta+Spacebar: cycle through layouts (vertical, horizontal, maximized)<br />
Meta+j/k: cycle through windows forwards/backwards<br />
Meta+Tab/Meta+Shft+Tab: same as Meta+j/k<br />
Meta+Return: move current window to master area<br />
Meta+h/l: increase/decrease size of master area<br />
</nowiki>}}<br />
<br />
Advanced stacking<br />
<br />
{{bc|<nowiki><br />
Meta+,/. : increase/decrease the number of windows in master area (default is 1)<br />
Meta+Shift+,/. : increase/decrease number of columns(rows) in stacking area in vertical(horizontal) mode (default is 1)<br />
Meta+Shift+j/k: swap window position with next/previous window<br />
Meta+t: float<->tile toggle<br />
</nowiki>}}<br />
<br />
Mouse bindings<br />
<br />
{{bc|<nowiki><br />
Mouseover: focus window<br />
Meta+LeftClick+Drag: move window (and float it if tiled)<br />
Meta+RightClick+Drag: resize floating window<br />
Meta+Shift+RightClick+Drag: resize floating window keeping it centred<br />
</nowiki>}}<br />
<br />
Other useful bindings<br />
<br />
{{bc|<nowiki><br />
Meta+x: close window<br />
Meta+Shift+x: kill window<br />
Meta+b: hide/show status bar<br />
Meta+q: restart spectrwm (reset desktops and reread spectrwm config without stopping running programs)<br />
Meta+Shift+q: exit spectrwm<br />
</nowiki>}}<br />
<br />
== Troubleshooting ==<br />
<br />
=== Help, I just logged in and all I see is a blank screen ===<br />
<br />
Press {{ic|Shift+WinKey+Return}} and an xterm will start. See {{ic|man spectrwm}} for other default key bindings. Also check your configuration file.<br />
<br />
=== Why does my window open in a desktop other then the current active one? ===<br />
<br />
Currently the PID of window is used to determine the desktop for new windows. To workaround this with terminals for example, you can often pass an argument to open the terminal in a new process.<br />
<br />
== See also ==<br />
<br />
* [http://www.spectrwm.org spectrwm] - spectrwm's official website<br />
<br />
* [[dmenu]] - Simple application launcher from the developers of [[dwm]]<br />
<br />
* #spectrwm at irc.freenode.net - (un)official IRC channel<br />
<br />
* [https://bbs.archlinux.org/viewtopic.php?id=64645 The scrotwm thread]</div>Ygyfygyhttps://wiki.archlinux.org/index.php?title=List_of_applications/Science&diff=421226List of applications/Science2016-02-18T11:42:41Z<p>Ygyfygy: /* Periodic table */ Alphabetic order.</p>
<hr />
<div><noinclude><br />
[[Category:Mathematics and science]]<br />
[[Category:Applications]]<br />
[[es:List of applications/Science]]<br />
[[it:List of applications/Science]]<br />
[[ja:アプリケーション一覧/サイエンス]]<br />
[[ru:List of applications/Science]]<br />
[[zh-cn:List of applications/Science]]<br />
[[zh-tw:List of applications/Science]]<br />
{{List of applications navigation}}<br />
</noinclude><br />
== Science ==<br />
<br />
{{Note|1=For possibly more up to date selection of scientific applications, try checking the [https://aur.archlinux.org/packages.php?O=0&do_Search=Go&detail=1&C=15&SeB=nd&SB=v&SO=d&PP=50 AUR 'science' category]}}<br />
<br />
=== Scientific documents ===<br />
<br />
See the main article: [[List of applications/Documents#Scientific documents]].<br />
<br />
=== Mathematics ===<br />
<br />
==== Calculator ====<br />
<br />
See also [[Wikipedia:Comparison of software calculators]].<br />
<br />
* {{App|[[Wikipedia:bc programming language|bc]]|Arbitrary precision calculator language.|http://www.gnu.org/software/bc/|{{Pkg|bc}}}}<br />
* {{App|calc|Arbitrary precision console calculator.|http://www.isthe.com/chongo/tech/comp/calc/|{{Pkg|calc}}}}<br />
* {{App|Extcalc|Qt-based scientfic graphical calculator.|http://extcalc-linux.sourceforge.net/|{{AUR|extcalc}}}}<br />
* {{App|galculator|GTK+ based scientific calculator.|http://galculator.sourceforge.net/|{{Pkg|galculator}} {{pkg|galculator-gtk2}}}}<br />
* {{App|[[Wikipedia:GNOME Calculator|GNOME Calculator]]|Scientific calculator included in the GNOME desktop.|https://wiki.gnome.org/Apps/Calculator|{{Pkg|gnome-calculator}}}}<br />
* {{App|[[Wikipedia:GNOME Calculator|GCalctool]]|Scientific calculator included in the GNOME desktop (old GTK2 version).|http://www.gnome.org|{{AUR|gcalctool-oldgui}}}}<br />
* {{App|KAlgebra|Calculator and 3D plotter included in KDE EDU.|http://www.kde.org/applications/education/kalgebra/|{{Pkg|kalgebra}}}}<br />
* {{App|[[Wikipedia:KCalc|KCalc]]|Scientific calculator included in the KDE desktop.|http://kde.org/applications/utilities/kcalc/|{{Pkg|kcalc}}}}<br />
* {{App|Qalculate|Calculator and equation solver with fault-tolerant parsing, constant recognition and units.|http://qalculate.sourceforge.net/|{{Pkg|libqalculate}}}}<br />
* {{App|SpeedCrunch|Fast, high precision and powerful cross-platform calculator.|http://speedcrunch.org|{{Pkg|speedcrunch}}}}<br />
* {{App|[[Wikipedia:xcalc|xcalc]]|Scientific calculator for X with algebraic and reverse polish notation modes.|http://xorg.freedesktop.org/|{{Pkg|xorg-xcalc}}}}<br />
<br />
==== Computer algebra system ====<br />
<br />
See also [[Wikipedia:Comparison of computer algebra systems]].<br />
<br />
* {{App|[[Wikipedia:Axiom (computer algebra system)|AXIOM]]|FriCAS: derivative of the powerful AXIOM-CAS|http://fricas.sourceforge.net|{{AUR|fricas}}}}<br />
* {{App|[[Wikipedia:Fermat (computer algebra system)|Fermat]]|Computer algebra system that does arithmetic of arbitrarily long integers and fractions, multivariate polynomials, symbolic calculations, matrices over polynomial rings, graphics, and other numerical calculations.|http://home.bway.net/lewis/|{{AUR|fermat}}{{Broken package link|{{aur-mirror|fermat}}}}}}<br />
* {{App|[[Wikipedia:GAP (computer algebra system)|GAP]]|Computer algebra system for computational discrete algebra with particular emphasis on computational group theory.|http://www.gap-system.org|{{Pkg|gap}}}}<br />
* {{App|[[Maple]]|Famous commercial CAS. Often used in education.|http://www.maplesoft.com/products/maple/|{{AUR?|maple}}}}<br />
* {{App|Mathics|A free CAS for symbolic mathematical computations which uses [[Python]] as its main language. It aims at achieving a Mathematica-compatible syntax and functions. It relies mostly on Sympy for most mathematical tasks and, optionally, Sage for more advanced functionality.|http://www.mathics.org/|{{AUR|mathics}}}} <br />
* {{App|[[Wikipedia:Mathomatic|Mathomatic]]|General purpose Computer Algebra System written in C.|http://www.mathomatic.org/|{{Pkg|mathomatic}}}}<br />
* {{App|[[Wikipedia:Maxima (software)|Maxima]]|[[Wikipedia:Maple (software)|Maple]]/[[Wikipedia:Wolfram Mathematica|Mathematica]]-like program with a wxWidgets based frontend.|http://maxima.sourceforge.net/|{{Pkg|maxima}} {{Pkg|wxmaxima}}}}<br />
* {{App|[[Wikipedia:PARI/GP|PARI/GP]]|Computer algebra system designed for fast computations in number theory.|http://pari.math.u-bordeaux.fr/|{{Pkg|pari}}}}<br />
* {{App|[[Wikipedia:Xcas|Xcas]]|User interface to Giac, a free, basic computer algebra system.|http://www-fourier.ujf-grenoble.fr/~parisse/giac.html|{{AUR|xcas}}}}<br />
<br />
==== Scientific or technical computing ====<br />
<br />
See also [[Wikipedia:Comparison of numerical analysis software]].<br />
<br />
* {{App|EngLab|Cross-compile mathematical platform with a C like syntax.|http://englab.bugfest.net|{{AUR|englab}}{{Broken package link|{{aur-mirror|englab}}}}}}<br />
* {{App|[[Wikipedia:Euler (software)|Euler]]|Numerical application designed for higher level math such as calculus, optimization, and statistics that uses Maxima for symbolic operations.|http://euler.sourceforge.net|{{AUR|euler}}{{Broken package link|{{aur-mirror|euler}}}}}}<br />
* {{App|[[Wikipedia:FreeMat|FreeMat]]|Matlab-like program that supports many of its functions and features a codeless interface to external C, C++, and Fortran code, further parallel distributed algorithm development (via MPI), and 3D visualization capabilities.|http://freemat.sourceforge.net/|{{Pkg|freemat}}}}<br />
* {{App|[[GNU Radio]]|Software development toolkit that provides signal processing blocks to implement software radios.|http://gnuradio.org/redmine/projects/gnuradio/wiki |{{Pkg|gnuradio}}}}<br />
* {{App|[[Octave]]|[[Matlab]]-like language and interface for numerical computations.|http://www.gnu.org/software/octave/ |{{Pkg|octave}}}}<br />
* {{App|[[Wikipedia:matplotlib|PyLab]]|Collection of Python modules (pyplot, numpy, etc.) used for scientific calculations.|http://www.scipy.org/PyLab|{{Pkg|python2-matplotlib}}}}<br />
* {{App|[[Sage-mathematics]]|Mathematics software system, that combines many existing open-source packages into a common Python interface. Alternative to Magma, Maple, Mathematica and Matlab.|http://www.sagemath.org|{{Pkg|sagemath}}}}<br />
* {{App|[[Wikipedia:Scilab|Scilab]]|Matlab alternative used for numerical computations. Its syntax is not equivalent to that of Matlab, but it can be easily converted.|http://www.scilab.org/|{{AUR|scilab}}}}<br />
<br />
==== Statistics ====<br />
<br />
See also [[Wikipedia:Comparison of statistical packages]].<br />
<br />
* {{App|[[Wikipedia:Just another Gibbs sampler|JAGS]] (Just another Gibbs sampler)|Cross-platform program for analysis of Bayesian hierarchical models using Markov Chain Monte Carlo (MCMC) simulation.|http://mcmc-jags.sourceforge.net/|{{AUR|jags}}}}<br />
* {{App|[[Wikipedia:Pandas_(software)|Python Data Analysis Library (pandas)]]| Providing high-performance, easy-to-use data structures and data analysis tools with Python programming language.|http://pandas.pydata.org/|{{AUR|python2-pandas-git}}}}<br />
* {{App|[[Wikipedia:PSPP|PSPP]]|Free SPSS implementation.|http://www.gnu.org/software/pspp/|{{AUR|pspp}}}}<br />
* {{App|[[R]]|Software environment for statistical computing and graphics.|http://cran.r-project.org/|{{Pkg|r}}}}<br />
* {{App|[[Wikipedia:RKWard|RKWard]]|Frontend for the statistical language R.|http://rkward.sourceforge.net/|{{AUR|rkward}}}}<br />
* {{App|[[Wikipedia:RStudio|RStudio]]|A powerful and productive IDE for R written in Qt.|http://www.rstudio.com/|{{AUR|rstudio-desktop-bin}}}}<br />
<br />
==== Data evaluation ====<br />
<br />
See also [[Wikipedia:List of information graphics software]].<br />
<br />
* {{App|Extrema|Visualization and data analysis tool.|http://sourceforge.net/projects/extrema|{{AUR|extrema}}{{Broken package link|{{aur-mirror|extrema}}}}}}<br />
* {{App|[[Wikipedia:Fityk|Fityk]]|Curve fitting and data analysis application, predominantly used to fit analytical, bell-shaped functions to experimental data.|http://fityk.nieto.pl/|{{AUR|fityk}}}}<br />
* {{App|[[Wikipedia:gnuplot|Gnuplot]]|Command-line program that can generate 2D and 3D plots of functions, data, and data fits. |http://www.gnuplot.info/|{{Pkg|gnuplot}}}}<br />
* {{App|[[Wikipedia:Grace (plotting tool)|Grace]]|WYSIWYG 2D graph plotting tool.|http://plasma-gate.weizmann.ac.il/Grace/|{{Pkg|grace}} {{AUR|qtgrace}} {{AUR|gracegtk}}}}<br />
* {{App|[[Wikipedia:LabPlot|LabPlot]]|Free software data analysis and visualization application, similar to SciDAVis.|http://labplot.sourceforge.net/|{{AUR|labplot2}}{{Broken package link|{{aur-mirror|labplot2}}}}}}<br />
* {{App|[[Wikipedia:QtiPlot|QtiPlot]]|Platform-independent application used for interactive scientific graphing and data analysis, similar to the proprietary [[Wikipedia:Origin (software)|Origin]] or [[Wikipedia:SigmaPlot|SigmaPlot]].|http://www.qtiplot.com/|{{Pkg|qtiplot}}}}<br />
* {{App|[[Wikipedia:ROOT|ROOT]]|Data analysis program and library (originally for particle physics) developed by CERN.|http://root.cern.ch/drupal/|{{AUR|root}}}}<br />
* {{App|[[Wikipedia:SciDAVis|SciDAVis]]|Fork of QtiPlot with the goal of being better documented and more user friendly.|http://scidavis.sourceforge.net/|{{AUR|scidavis}}}}<br />
See also [[List of applications#Spreadsheets]]<br />
<br />
=== Chemistry and biology ===<br />
<br />
====Computational biology and bioinformatics====<br />
<br />
See also [[Wikipedia:List of open source bioinformatics software]].<br />
<br />
* {{App|[[Wikipedia:BALL|BALL]] (Biochemical Algorithms Library)|Application framework in C++ that provides an extensive set of data structures as well as classes for molecular mechanics, advanced solvation methods, comparison and analysis of protein structures, file import/export, and visualization.|http://www.ball-project.org/|{{AUR|ball}}}}<br />
* {{App|[[Wikipedia:BioJava|BioJava]]|Set of Java tools for computational biology, as well as bioinformatics.|http://biojava.org/wiki/Main_Page|{{AUR|biojava}}}}<br />
* {{App|[[Wikipedia:Biopython|Biopython]]|Python package with tools for computational biology, as well as bioinformatics.|http://biopython.org/wiki/Biopython|{{Pkg|python-biopython}} {{Pkg|python2-biopython}}}}<br />
* {{App|[[Wikipedia:EMBOSS|EMBOSS]] (European Molecular Biology Open Software Suite)|Open source software analysis package specially developed for the needs of the molecular biology and bioinformatics user community.|http://emboss.sourceforge.net/|{{AUR|emboss}}}}<br />
* {{App|[[Wikipedia:MEGA, Molecular Evolutionary Genetics Analysis|MEGA]] (Molecular Evolutionary Genetics Analysis)|Integrated tool for conducting automatic and manual sequence alignment, inferring phylogenetic trees, mining web-based databases, estimating rates of molecular evolution, inferring ancestral sequences, and testing evolutionary hypotheses.|http://www.megasoftware.net/}}<br />
* {{App|[[Wikipedia:MUMmer|MUMmer]]|Bioinformatics software system for sequence alignment based on suffix trees.|http://mummer.sourceforge.net/|{{AUR|mummer}}}}<br />
* {{App|[[Wikipedia:UGENE|UGENE]]|Application that integrates dozens of well-known biological tools and algorithms, providing both graphical user and command-line interfaces.|http://ugene.unipro.ru/|{{AUR|ugene}}}}<br />
<br />
==== Molecules ====<br />
<br />
===== Viewers =====<br />
<br />
See also [[Wikipedia:List of molecular graphics systems]].<br />
<br />
* {{App|[[Wikipedia:Avogadro_(software)|Avogadro]]|Editor, viewer and simulator for 3D molecule structures (also supports downloading files from the [[Wikipedia:Protein Data Bank|Protein Data Bank]]).|http://avogadro.openmolecules.net/wiki/Main_Page|{{Pkg|avogadro}}}}<br />
* {{App|BALLView|Standalone molecular modeling and visualization application, part of the [[Wikipedia:BALL|BALL]] framework.|http://www.ballview.org/|{{AUR|ball}}}}<br />
* {{App|[[Wikipedia:Ghemical|Ghemical]]|Computational chemistry software package used to edit, view and simulate molecular structures.|http://bioinformatics.org/ghemical/ghemical/index.html|{{AUR|ghemical}}}}<br />
* {{App|[[Wikipedia:PyMOL|PyMOL]]|Open-source molecular visualization system that can produce high quality 3D images of small molecules and biological macromolecules, such as proteins.|http://pymol.org|{{Pkg|pymol}}}}<br />
* {{App|[[Wikipedia:RasMol|RasMol]]|Computer program written for molecular graphics visualization intended and used primarily for the depiction and exploration of biological macromolecule structures.|http://www.rasmol.org/|{{AUR|rasmol}}{{Broken package link|{{aur-mirror|rasmol}}}}}}<br />
<br />
===== Drawing =====<br />
<br />
* {{App|[[Wikipedia:BKchem|BKChem]]|Practical and goodlooking skeletal formula molecule drawing program.|http://bkchem.zirael.org/|{{AUR|bkchem}}}}<br />
* {{App|[[Wikipedia:Chemtool|Chemtool]]|GTK+-based program for drawing chemical structural formulas.|http://ruby.chemie.uni-freiburg.de/~martin/chemtool/chemtool.html|{{Pkg|chemtool}}}}<br />
* {{App|EasyChem|Simple skeletal formula molecule drawing program with a focus on producing press-quality figures.|http://easychem.sourceforge.net/|{{AUR?|easychem}}}}<br />
* {{App|[[Wikipedia:Gabedit|Gabedit]]|Graphical user interface to computational chemistry packages like [[Wikipedia:GAMESS (US)|GAMESS]], [[Wikipedia:Gaussian (software)|Gaussian]], [[Wikipedia:MOLCAS|MOLCAS]], [[Wikipedia:MOLPRO|MOLPRO]], [[Wikipedia:MPQC|MPQC]], [[Wikipedia:MOPAC|OpenMopac]], [[Wikipedia:PC GAMESS|Firefly]] (previously PC GAMESS) and [[Wikipedia:Q-Chem|Q-Chem]].|http://gabedit.sourceforge.net/|{{AUR|gabedit}}{{Broken package link|{{aur-mirror|gabedit}}}}}}<br />
* {{App|[[Wikipedia:XDrawChem|XDrawChem]]|Extensive skeletal formula molecule drawing program (includes spectroscopy prediction).|http://xdrawchem.sourceforge.net/|{{AUR|xdrawchem}}{{Broken package link|{{aur-mirror|xdrawchem}}}}}}<br />
<br />
===== Modeling =====<br />
<br />
* {{App|[[GROMACS]] (GROningen MAchine for Chemical Simulations)|Versatile package to perform molecular dynamics, i.e. simulate the Newtonian equations of motion for systems with hundreds to millions of particles.|http://www.gromacs.org|{{AUR|gromacs}}}} <br />
* {{App|[[Wikipedia:Quantum ESPRESSO|Quantum ESPRESSO]]|Integrated suite of applications for electronic-structure calculations and materials modeling at nanoscale. It is based on density-functional theory, plane waves, and pseudopotentials (both norm-conserving and ultrasoft).|http://www.quantum-espresso.org/|{{AUR|quantum-espresso}}{{Broken package link|{{aur-mirror|quantum-espresso}}}}}}<br />
<br />
==== Periodic table ====<br />
<br />
* {{App|eperiodique|A simple Periodic Table Of Elements viewer using the EFL.|http://eperiodique.sourceforge.net/|{{AUR|eperiodique}}}}<br />
* {{App|gElemental|Periodic table of the elements with additional information.|http://freshmeat.net/projects/gelemental|{{AUR|gelemental}}}}<br />
* {{App|[[Wikipedia:Kalzium|Kalzium]]|Periodic table of the elements with molecule editor and equation solver from the [[KDE]] desktop.|http://edu.kde.org/kalzium/|{{Pkg|kdeedu-kalzium}}}}<br />
<br />
==== Biochemistry ====<br />
<br />
* {{App|[[Wikipedia:Bioclipse|Bioclipse]]|Java-based visual platform for biochemistry that uses the Eclipse Rich Client Platform (RCP).|http://www.bioclipse.net/|{{AUR?|bioclipse}}}}<br />
<br />
==== Image manipulation ====<br />
<br />
* {{App|[[Wikipedia:ImageJ|ImageJ]]|Java-based image processing and analysing program that provides extensibility via plugins and macros. It is widely used in microscopy (e.g. for cell counting).|http://rsb.info.nih.gov/ij|{{AUR|imagej}}}}<br />
* {{App|[[Wikipedia:FIJI_(software)|Fiji]]|ImageJ distribution (and soon ImageJ2) with a lot of plugins organized into a coherent menu structure.|http://fiji.sc|{{AUR|fiji-binary}}}}<br />
<br />
=== Astronomy ===<br />
<br />
* {{App|[[Wikipedia:Celestia|Celestia]]|3D astronomy simulation program that allows users to travel through an extensive universe, modeled after reality, at any speed, in any direction and at any time in history.|http://www.shatters.net/celestia/|{{Pkg|celestia}}}}<br />
* {{App|GIMP Astronomy Plugins|Set of GIMP plugins for astronomical image processing.|http://hennigbuam.de/georg/gimp.html|{{AUR|gimp-plugin-astronomy}}}}<br />
* {{App|GoQat|Camera acquisition software, especially for QSI cameras, that provides other features such as autoguiding, focusing help and others.|http://canburytech.net/GoQat/|{{AUR|goqat}}}}<br />
* {{App|[[Wikipedia:KStars|KStars]]|Planetarium application that provides an accurate graphical simulation of the night sky, from any location on Earth, at any date and time. It is included in KDE Edu.|http://edu.kde.org/kstars/|{{Pkg|kstars}}}}<br />
* {{App|Open PHD Guiding|Telescope autoguiding software based on the famous PHD Guiding.|http://code.google.com/p/open-phd-guiding/|{{AUR|open-phd-guiding-svn}}}}<br />
* {{App|Qastrocam-g2|Webcam acquisition software for planetary imaging.|http://sourceforge.net/projects/qastrocam-g2/|{{AUR|qastrocam-g2}}}}<br />
* {{App|[[Wikipedia:Cartes du Ciel|Skychart / Cartes du Ciel]]|Planetarium that maps out and labels most of the constellations, planets, and objects you can see with a telescope. It can also download Digitized Sky Survey Charts and superimpose images over these charts.|http://www.ap-i.net/skychart/start/|{{AUR|skychart}}}}<br />
* {{App|StarPlot|3-dimensional star chart viewer.|http://starplot.org/|{{AUR|starplot}}}}<br />
* {{App|[[Wikipedia:Stellarium (computer program)|Stellarium]]|Beautiful 3D planetarium that uses OpenGL to render a realistic sky in real time.|http://www.stellarium.org/|{{Pkg|stellarium}}}}<br />
* {{App|[[Wikipedia:XEphem|XEphem]]|Motif-based ephemeris and planetarium program.|http://www.clearskyinstitute.com/xephem/xephem.html|{{AUR|xephem}}}}<br />
<br />
=== Physics ===<br />
<br />
==== Electronics ====<br />
<br />
See also [[Wikipedia:Comparison of EDA software]].<br />
<br />
===== Digital logic =====<br />
<br />
Digital logic software are mainly simple educational tools that intended for only designing and simulating logic circuits.<br />
<br />
* {{App|atanua|Real time logic simulator.|http://sol.gfxile.net/atanua/|{{AUR|atanua}}{{Broken package link|{{aur-mirror|atanua}}}}}}<br />
* {{App|eqntott|Utility to convert a set of boolean logic equations to a PLA-esque truth table.|https://code.google.com/p/eqntott/|{{AUR|eqntott}}{{Broken package link|{{aur-mirror|eqntott}}}}}}<br />
* {{App|espresso|Heuristic logic minimizer, reduces the amount of gates required for digital circuits.|https://code.google.com/p/eqntott/|{{AUR|espresso}}{{Broken package link|{{aur-mirror|espresso}}}}}}<br />
* {{App|giraffe|A simple logic circuit simulator written in Java.|http://nbenoit.tuxfamily.org/|{{AUR|giraffe}}{{Broken package link|{{aur-mirror|giraffe}}}}}}<br />
* {{App|glogic|An educational graphical logic circuit simulator.|https://launchpad.net/glogic|{{AUR|glogic}}}}<br />
* {{App|KLogic|Digital logic design and simulation software for KDE which also simulate karnaugh diagrams.|http://www.a-rostin.de/|{{AUR|klogic}}{{Broken package link|{{aur-mirror|klogic}}}}}}<br />
* {{App|Logisim|Educational digital logic design and simulation software, written in Java, officially its development has stopped.|http://sourceforge.net/projects/circuit/|{{AUR|logisim}}}}<br />
* {{App|Logisim Evolution|Project which continue the development of the original Logisim with new features, written in Java.|https://github.com/reds-heig/logisim-evolution|{{AUR|logisim-evolution}}{{Broken package link|{{aur-mirror|logisim-evolution}}}}}}<br />
* {{App|SmartSim|Simple and beautiful digital logic circuit design and simulation software, mainly target teachers and students, very lightweight and cross platform, GPL licensed, written in Vala.|http://smartsim.org.uk|{{AUR|smartsim-git}}}}<br />
<br />
===== HDL =====<br />
<br />
* {{App|[[Altera Design Software]]|A set of design tools for Altera's FPGA chips that includes Quartus II and ModelSim-Altera.|http://www.altera.com/products/software/sfw-index.jsp|see [[Altera Design Software]]}}<br />
* {{App|[[Xilinx ISE WebPACK]]|FPGA programmable logic design suit.|http://www.xilinx.com/products/design-tools/ise-design-suite/ise-webpack.html|see [[Xilinx ISE WebPACK]]}}<br />
<br />
===== MCU IDE =====<br />
<br />
* {{App|[[Arduino]]|Arduino prototyping platform SDK.|http://arduino.cc/en/Main/Software|{{AUR|arduino}}}}<br />
* {{App|[[Wikipedia:KTechLab|KTechLab]]|IDE for electronic and PIC microcontroller circuit design and simulation featuring an extensive circuit designer with autorouting and simulation of all common electronic components and logic elements.|http://sourceforge.net/projects/ktechlab/|{{AUR|ktechlab-zoltan_p-git}}{{Broken package link|{{aur-mirror|ktechlab-zoltan_p-git}}}}}}<br />
<br />
===== Schematic capture editor =====<br />
<br />
* {{App|[[gEDA]]|Full suite and toolkit of Electronic Design Automation tools that are used for electrical circuit design, schematic capture, simulation, prototyping, and production.|http://www.geda-project.org/|{{Pkg|geda-gaf}}}}<br />
* {{App|[[Wikipedia:KiCAD|KiCAD]]|Software suite for electronic design automation (EDA) that facilitates the design of schematics for electronic circuits and their conversion to PCB (printed circuit board).|http://www.kicad-pcb.org/display/KICAD/KiCad+EDA+Software+Suite|{{Pkg|kicad}}}}<br />
* {{App|[[Wikipedia:Oregano (software)|Oregano]]|Graphical software application for schematic capture and simulation of electrical circuits. The actual simulation is done by the [[Wikipedia:Ngspice|ngspice]] or [[Wikipedia:GNU Circuit Analysis Package|Gnucap]] engines.|https://github.com/drahnr/oregano|{{AUR|oregano}}}}<br />
* {{App|QElectroTech|Application used to draw advanced electrical circuits.|http://qelectrotech.org/|{{AUR|qelectrotech}}}}<br />
* {{App|[[Wikipedia:Quite Universal Circuit Simulator|Qucs]]|Electronics circuit simulator application that gives you the ability to set up a circuit with a graphical user interface and simulate its large-signal, small-signal and noise behaviour.|http://qucs.sourceforge.net/|{{Pkg|qucs}}}}<br />
<br />
==== Physics simulation ====<br />
<br />
* {{App|[[Wikipedia:Code_Aster|Code_Aster]]|Software package for Civil and Structural Engineering finite element analysis and numeric simulation in structural mechanics.|http://www.code-aster.org/V2/spip.php?rubrique2|{{AUR|aster}}}}<br />
* {{App|[[Wikipedia:EPANET|EPANET]]|EPANET performs extended period simulation of the water movement and quality behavior within pressurized pipe networks.|http://www.epa.gov/|{{AUR|epanet2-git}}}}<br />
* {{App|[[Wikipedia:Step (software)|Step]]|Two-dimensional physics simulation engine that is included in the KDE desktop as part of KDE Edu.|http://edu.kde.org/step/|{{Pkg|step}}}}<br />
* {{App|[[Wikipedia:SWMM|SWMM]]|Storm Water Management Model is a dynamic rainfall-runoff-subsurface runoff simulation model used for simulation of the surface/subsurface hydrology quantity and quality.|http://www.epa.gov/|{{AUR|swmm5-git}}}}<br />
<br />
==== Unit conversion ====<br />
<br />
* {{App|ConvertAll|Unit conversion application that allows one to combine units in any way (e.g. inches per decade), even if it does not make sense.|http://convertall.bellz.org/|{{AUR|convertall}}}} <br />
* {{App|Gonvert|Conversion utility that allows conversion between many units like CGS, Ancient, Imperial with many categories like length, mass, numbers, etc.|http://www.unihedron.com/projects/gonvert/|{{AUR|gonvert}}}} <br />
* {{App|[[Wikipedia:GNU Units|Units]]|Command-line unit converter and calculator that can handle multiplicative scale changes, nonlinear conversions such as Fahrenheit to Celsius or wire gauge and others.|http://www.gnu.org/s/units/|{{Pkg|units}}}}</div>Ygyfygyhttps://wiki.archlinux.org/index.php?title=RTorrent&diff=421225RTorrent2016-02-18T11:37:20Z<p>Ygyfygy: /* Key bindings */ Added ^O and distinguished Backspace and Return</p>
<hr />
<div>{{DISPLAYTITLE:rTorrent}}<br />
[[Category:Internet applications]]<br />
[[es:RTorrent]]<br />
[[ja:RTorrent]]<br />
[[ru:RTorrent]]<br />
[[zh-CN:RTorrent]]<br />
[https://rakshasa.github.io/rtorrent/ rTorrent] is a quick and efficient BitTorrent client that uses, and is in development alongside, the libTorrent (not to be confused with {{Pkg|libtorrent-rasterbar}}) library. It is written in C++ and uses the [[Wikipedia:ncurses|ncurses]] programming library, which means it uses a text user interface. When combined with a terminal multiplexer (e.g. [[GNU Screen]] or [[Tmux]]) and [[Secure Shell]], it becomes a convenient remote [[Wikipedia:BitTorrent (protocol)#Operation|BitTorrent client]].<br />
<br />
== Installation ==<br />
<br />
[[Install]] the {{Pkg|rtorrent}} package that is available in the [[official repositories]].<br />
<br />
Alternatively, install {{AUR|rtorrent-git}} or {{AUR|rtorrent-vi-color}} or {{AUR|rtorrent-extended}}{{Broken package link|{{aur-mirror|rtorrent-extended}}}} from the [[AUR]].<br />
<br />
== Configuration ==<br />
<br />
{{Note|See the rTorrent wiki article on this subject for more information: [http://web.archive.org/web/20140213003955/http://libtorrent.rakshasa.no/wiki/RTorrentCommonTasks Common Tasks in rTorrent for Dummies].}}<br />
<br />
Before running rTorrent, find the example configuration file {{ic|/usr/share/doc/rtorrent/rtorrent.rc}} and copy it to {{ic|~/.rtorrent.rc}}:<br />
<br />
$ cp /usr/share/doc/rtorrent/rtorrent.rc ~/.rtorrent.rc<br />
<br />
=== Performance ===<br />
<br />
{{Note|See the rTorrent wiki article on this subject for more information: [http://web.archive.org/web/20140213011439/http://libtorrent.rakshasa.no/wiki/RTorrentPerformanceTuning Performance Tuning]}}<br />
<br />
The values for the following options are dependent on the system's hardware and Internet connection speed. To find the optimal values read: [http://torrentfreak.com/optimize-your-BitTorrent-download-speed Optimize Your BitTorrent Download Speed]<br />
{{bc|<nowiki><br />
min_peers = 40<br />
max_peers = 52<br />
<br />
min_peers_seed = 10<br />
max_peers_seed = 52<br />
<br />
max_uploads = 8<br />
<br />
download_rate = 200<br />
upload_rate = 28<br />
</nowiki>}}<br />
<br />
The {{ic|check_hash}} option executes a hash check when a torrent download is complete or rTorrent is started. When starting, it checks for errors in your completed files. <br />
check_hash = yes<br />
<br />
=== Create and manage files ===<br />
<br />
The {{ic|directory}} option will determine where your torrent data will be saved (could be a relative path):<br />
directory = ~/downloaded<br />
<br />
The {{ic|session}} option allows rTorrent to save the progess of your torrents. It is recommended to create a directory in home directory (e.g. {{ic|mkdir ~/.rtorrent.session}}).<br />
session = ~/.rtorrent.session<br />
<br />
The {{ic|schedule}} option has rTorrent watch a particular directory for new torrent files. Saving a torrent file to this directory will automatically start the download. Remember to create the directory that will be watched (e.g. {{ic|mkdir ~/watch}}). Also, be careful when using this option as rTorrent will move the torrent file to your session folder and rename it to its hash value.<br />
schedule = watch_directory,5,5,load_start=/home/''user''/watch/*.torrent<br />
schedule = untied_directory,5,5,stop_untied=<br />
schedule = tied_directory,5,5,start_tied=<br />
<br />
The following {{ic|schedule}} option is intended to stop rTorrent from downloading data when disk space is low.<br />
schedule = low_diskspace,5,60,close_low_diskspace=100M<br />
<br />
=== Port configuration ===<br />
<br />
The {{ic|port_range}} option sets which port(s) to use for listening. It is recommended to use a port that is higher than 49152 (see: [[Wikipedia:List of TCP and UDP port numbers|List of port numbers]]). Although, rTorrent allows a range of ports, a single port is recommended.<br />
port_range = 49164-49164<br />
<br />
Additionally, make sure port forwarding is enabled for the proper port(s) (see: [http://portforward.com/english/routers/port_forwarding/routerindex.htm Port Forward guides]).<br />
<br />
=== Additional settings ===<br />
<br />
The {{ic|encryption}} option enables or disables encryption. It is very important to enable this option, not only for yourself, but also for your peers in the torrent swarm. Some users need to obscure their bandwidth usage from their ISP. And it does not hurt to enable it even if you do not need the added security.<br />
encryption = allow_incoming,try_outgoing,enable_retry<br />
It is also possible to force all connections to use encryption. However, be aware that this stricter rule will reduce your client's availability:<br />
encryption = require,require_RC4,allow_incoming,try_outgoing<br />
<br />
See also [[Wikipedia:BitTorrent Protocol Encryption]].<br />
<br />
This final {{ic|dht}} option enables [[Wikipedia:Distributed hash table|DHT]] support. DHT is common among public trackers and will allow the client to acquire more peers.<br />
{{bc|<nowiki><br />
dht = auto<br />
dht_port = 6881<br />
peer_exchange = yes<br />
</nowiki>}}<br />
<br />
== Key bindings ==<br />
<br />
rTorrent relies exclusively on keyboard shortcuts for user input. A quick reference is available in the table below. A complete guide is available on the rTorrent wiki (see: [https://github.com/rakshasa/rtorrent/wiki/User-Guide rTorrent User Guide]).<br />
<br />
{{Note|Striking {{ic|Ctrl-q}} twice in quick succession will make rTorrent shutdown without waiting to send a stop announce to the connected trackers.}}<br />
<br />
{| class="wikitable"<br />
|-<br />
!width="75" |Cmd<br />
!Action<br />
|-<br />
|Ctrl-q<br />
|Quit application<br />
|-<br />
|Ctrl-s<br />
|Start download. Runs hash first unless already done.<br />
|-<br />
|Ctrl-d<br />
|Stop an active download or remove a stopped download<br />
|-<br />
|Ctrl-k<br />
|Stop and close the files of an active download.<br />
|-<br />
|Ctrl-r<br />
|Initiate hash check of torrent. Starts downloading if file is not available.<br />
|-<br />
|Ctrl-o<br />
|Specify the download directory for a added, but not started torrent.<br />
|-<br />
|Left<br />
|Returns to the previous screen<br />
|-<br />
|Right<br />
|Goes to the next screen<br />
|-<br />
|Backspace<br />
|Adds and starts the specified *.torrent<br />
|-<br />
|Return<br />
|Adds and doesn't start the specified *.torrent<br />
|-<br />
|<nowiki>a|s|d</nowiki><br />
|<nowiki>Increase global upload throttle about 1|5|50 KB/s</nowiki><br />
|-<br />
|<nowiki>A|S|D</nowiki><br />
|<nowiki>Increase global download throttle about 1|5|50 KB/s</nowiki><br />
|-<br />
|<nowiki>z|x|c</nowiki><br />
|<nowiki>Decrease global upload throttle about 1|5|50 KB/s</nowiki><br />
|-<br />
|<nowiki>Z|X|C</nowiki><br />
|<nowiki>Decrease global download throttle about 1|5|50 KB/s</nowiki><br />
|}<br />
<br />
=== Redundant mapping ===<br />
<br />
{{ic|Ctrl-s}} is often used for terminal control to stop screen output while {{ic|Ctrl-q}} is used to start it. These mappings may interfere with rTorrent. Check to see if these terminal options are bound to a mapping:<br />
{{hc|$ stty -a|<nowiki>...<br />
swtch = <undef>; start = ^Q; stop = ^S; susp = ^Z; rprnt = ^R; werase = ^W; lnext = ^V;<br />
...<br />
</nowiki>}}<br />
<br />
To remove the mappings, change the terminal characteristics to undefine the aforementioned special characters (i.e. {{ic|stop}} and {{ic|start}}):<br />
# stty stop undef<br />
# stty start undef<br />
<br />
To remove these mappings automatically at startup you may add the two preceding commands to your {{ic|~/.bashrc}} file.<br />
<br />
== Additional tips ==<br />
<br />
=== systemd service file with tmux or screen ===<br />
<br />
*With tmux (Restart rtorrent if crashed)<br />
{{hc|/etc/systemd/user/rt.service|<nowiki><br />
[Unit]<br />
Description=rTorrent<br />
After=network.target<br />
<br />
[Service]<br />
Type=forking<br />
KillMode=none<br />
ExecStart=/usr/bin/tmux new-session -s rt -n rtorrent -d rtorrent<br />
ExecStop=/usr/bin/bash -c "/usr/bin/tmux send-keys -t rt:rtorrent.0 C-q && while pidof rtorrent > /dev/null; do sleep 0.5; echo rtorrent still running...; done"<br />
WorkingDirectory=%h<br />
Restart=on-failure<br />
<br />
[Install]<br />
WantedBy=default.target<br />
</nowiki>}}<br />
<br />
*With tmux running as user rtorrent (Restart rtorrent if crashed)<br />
{{hc|/etc/systemd/system/rtorrent.service|<nowiki><br />
[Unit]<br />
Description=rTorrent Daemon<br />
After=network.target<br />
<br />
[Service]<br />
Type=forking<br />
KillMode=none<br />
User=rtorrent<br />
ExecStart=/usr/bin/tmux new-session -c /mnt/storage/rtorrent -s rtorrent -n rtorrent -d rtorrent<br />
ExecStop=/usr/bin/bash -c "/usr/bin/tmux send-keys -t rtorrent C-q && while pidof rtorrent > /dev/null; do sleep 0.5; done"<br />
WorkingDirectory=/home/rtorrent/<br />
Restart=on-failure<br />
<br />
[Install]<br />
WantedBy=multi-user.target<br />
</nowiki>}}<br />
<br />
*With screen<br />
<br />
{{hc|/etc/systemd/user/rt.service|<nowiki><br />
[Unit]<br />
Description=rTorrent<br />
After=network.target<br />
<br />
[Service]<br />
Type=forking<br />
KillMode=none<br />
ExecStart=/usr/bin/screen -d -m -fa -S rtorrent /usr/bin/rtorrent<br />
ExecStop=/usr/bin/killall -w -s 2 /usr/bin/rtorrent<br />
WorkingDirectory=%h<br />
<br />
[Install]<br />
WantedBy=default.target<br />
</nowiki>}}<br />
<br />
Start at boot time:<br />
$ systemctl --user enable rt<br />
Start manually:<br />
$ systemctl --user start rt<br />
Stop:<br />
$ systemctl --user stop rt<br />
Attach to rtorrent's session:<br />
tmux attach -t rt<br />
Detach:<br />
Ctrl-b d<br />
<br />
=== systemd service file with dtach ===<br />
<br />
{{Style|Creating multiple rtorrent sessions this way is far from perfect, why don't we just assume for simplicity that there is only one session? This is assumed in [[#systemd service file with tmux or screen]] anyway.}}<br />
<br />
When running dtach from systemd unit, the {{ic|TERM}} environment variable [[systemd/User#Environment_variables|has to be set explicitly]] for rtorrent to work.<br />
<br />
This service file has no restart because the author occasionally takes the drive in question offline, and rtorrent fails, shall we say, "suboptimally" when started in this scenario and loses many torrent specific settings such as the specific directories each torrent is stored in. In fact the symlinks that kick off rtorrent live on the relevant drive; if it is unmounted rtorrent cannot start. This use case of blocking rtorrent from starting is relevant to users who put the downloaded files on removable media such as NAS, USB or eSATA drives.<br />
<br />
{{hc|~/.config/systemd/user/rtorrent.service|<nowiki><br />
[Unit]<br />
Description=rTorrent<br />
#After=network.target<br />
<br />
[Service]<br />
# set TERM according to your terminal<br />
Environment="TERM=xterm"<br />
#Environment="TERM=linux" <br />
Type=forking<br />
KillMode=none<br />
ExecStart=-/usr/bin/dtach -n /home/sam/run/dtach_fifos/fifo -e "^T" /home/sam/bin/rtr_new -n -o import=/home/sam/.config/rtorrent/new_.rc <br />
# dtach -n <separate filename for each instance><br />
# <br />
# rtr_new -n to ignore the default .rtorrent.rc<br />
# rtr_new -o import to load the instance-specific rc<br />
ExecStop=-/usr/bin/killall -u sam -e -w -s INT /home/sam/bin/rtr_new<br />
<br />
[Install]<br />
WantedBy=multi-user.target<br />
</nowiki>}}<br />
<br />
Note some other issues exposed in this service file other than just dtach:<br />
<br />
{{ic|/home/sam/bin/rtr_new}} is a symlink to {{ic|/usr/bin/rtorrent}}<br />
<br />
This lets us run several instances and kill each one independently with a different version of the ExecStop, to wit:<br />
<br />
{{bc|1=ExecStop=-/usr/bin/killall -u sam -e -w -s INT /home/sam/bin/rtr_new<br />
ExecStop=-/usr/bin/killall -u sam -e -w -s INT /home/sam/bin/rtr_academic<br />
ExecStop=-/usr/bin/killall -u sam -e -w -s INT /home/sam/bin/rtr_other_stuff}}<br />
<br />
These are each in a different service file, each of which controls one instance.<br />
<br />
Without this step, when running multiple instances a killall solution would kill all the running rtorrent instances. <br />
<br />
If multiple rtorrent instances are not needed and the rtorrent rc file is in the default location the above service file may be simplified. The entire file is included but only the ExecStart and <br />
ExecStop lines change. <br />
<br />
{{hc|~/.config/systemd/user/rtorrent.service|<nowiki><br />
[Unit]<br />
Description=rTorrent<br />
#After=network.target<br />
<br />
[Service]<br />
# set TERM according to your terminal<br />
Environment="TERM=xterm"<br />
#Environment="TERM=linux" <br />
Type=forking<br />
KillMode=none<br />
ExecStart=-/usr/bin/dtach -n /home/sam/run/dtach_fifos/fifo -e "^T" /usr/bin/rtorrent <br />
# dtach -n <user specified FIFO name> -e <user specified character> /usr/bin/rtorrent <br />
ExecStop=/usr/bin/killall -w -s INT /usr/bin/rtorrent<br />
# -e (exact match) and -u (user name) were added above to stop specific processes<br />
# and may be omitted here because only one rtorrent will be running<br />
<br />
[Install]<br />
WantedBy=multi-user.target<br />
</nowiki>}}<br />
<br />
The service can be controlled with [[systemctl --user]]. When it is started, you can attach to the session:<br />
<br />
$ dtach -a /home/sam/run/dtach_fifos/fifo -e "^T"<br />
<br />
=== Pre-allocation ===<br />
<br />
The rTorrent package in the community repository lacks pre-allocation. Compiling rTorrent with pre-allocation allows files to be allocated before downloading the torrent. The major benefit is that it limits and avoids fragmentation of the filesystem. However, this introduces a delay during the pre-allocation if the filesystem does not support the fallocate syscall natively.<br />
<br />
Therefore this switch is recommended for xfs, ext4 and btrfs filesystems, which have native fallocate syscall support. They will see no delay during preallocation and no fragmented filesystem. Pre-allocation on others filesystems will cause a delay but will not fragment the files.<br />
<br />
To make pre-allocation available, recompile libTorrent from the [[ABS]] tree with the following new switch:<br />
$ ./configure --prefix=/usr --disable-debug --with-posix-fallocate<br />
<br />
To enable it, add the following to your {{ic|~/rtorrent.rc}}:<br />
{{hc|~/rtorrent.rc|<nowiki><br />
# Preallocate files; reduces defragmentation on filesystems.<br />
system.file_allocate.set = yes<br />
</nowiki>}}<br />
<br />
=== Manage completed files ===<br />
<br />
{{Note|<br />
*Currently, this part requires either the git version of rtorrent/libtorrent or having applied the patch to 0.8.6 that adds 'equal'.<br />
* If you are having trouble with this tip, it is probably easier to follow [http://web.archive.org/web/20140213003955/http://libtorrent.rakshasa.no/wiki/RTorrentCommonTasks#Movecompletedtorrentstodifferentdirectorydependingonwatchdirectory this].<br />
}}<br />
<br />
It is possible to have rtorrent sort completed torrent data to specific folders based on which 'watch' folder you drop the *.torrent into while continuing to seed. Many examples show how to do this with torrents downloaded by rtorrent. The problem is when you try to drop in 100% done torrent data and then have rtorrent check the data and resume, it will not be sorted.<br />
<br />
As a solution, use the following example in your {{ic|~/.rtorrent.rc}}.<br />
Make sure to change the paths.<br />
<br />
{{bc|1=<br />
# location where new torrent data is placed, and where you should place your<br />
# 'complete' data before you place your *.torrent file into the watch folder<br />
directory = /home/user/torrents/incomplete<br />
<br />
# schedule a timer event named 'watch_directory_1':<br />
# 1) triggers 10 seconds after rtorrent starts<br />
# 2) triggers at 10 second intervals thereafter<br />
# 3) Upon trigger, attempt to load (and start) new *.torrent files found in /home/user/torrents/watch/<br />
# 4) set a variable named 'custom1' with the value "/home/user/torrents/complete"<br />
# NOTE: if you do not want it to automatically start the torrent, change 'load_start' to 'load'<br />
schedule = watch_directory_1,10,10,"load_start=/home/user/torrents/watch/*.torrent,d.set_custom1=/home/user/torrents/complete"<br />
<br />
# insert a method with the alias 'checkdirs1'<br />
# 1) returns true if the current path of the torrent data is not equal to the value of custom1<br />
# 2) otherwise, returns false<br />
system.method.insert=checkdirs1,simple,"not=\"$equal={d.get_custom1=,d.get_base_path=}\""<br />
<br />
# insert a method with the alias 'movecheck1'<br />
# 1) returns true if all 3 commands return true ('result of checkdirs1' && 'torrent is 100% done', 'custom1 variable is set')<br />
# 2) otherwise, returns false<br />
system.method.insert=movecheck1,simple,"and={checkdirs1=,d.get_complete=,d.get_custom1=}"<br />
<br />
# insert a method with the alias 'movedir1'<br />
# (a series of commands, separated by ';') <br />
# 1) "set path of torrent to equal the value of custom1";<br />
# 2) "mv -u <current data path> <custom1 path>";<br />
# 3) "clear custom1", "stop the torrent","resume the torrent"<br />
# 4) stop the torrent<br />
# 5) start the torrent (to get the torrent to update the 'base path')<br />
system.method.insert=movedir1,simple,"d.set_directory=$d.get_custom1=;execute=mv,-u,$d.get_base_path=,$d.get_custom1=;d.set_custom1=;d.stop=;d.start="<br />
<br />
# set a key with the name 'move_hashed1' that is triggered by the hash_done event.<br />
# 1) When hashing of a torrent completes, this custom key will be triggered.<br />
# 2) when triggered, execute the 'movecheck1' method and check the return value.<br />
# 3) if the 'movecheck' method returns 'true', execute the 'movedir1' method we inserted above.<br />
# NOTE-0: *Only* data that has had their hash checked manually with ^R [^R = Control r].<br />
# Or on a rtorrent restart[which initiates a hash check]. Will the data move; ~/torrents/incomplete => ~/torrents/complete for example.<br />
# NOTE-1: 'branch' is an 'if' conditional statement: if(movecheck1){movedir1}<br />
system.method.set_key=event.download.hash_done,move_hashed1,"branch={$movecheck1=,movedir1=}"<br />
}}<br />
<br />
You can add additional watch folders and rules should you like to sort your torrents into special folders.<br />
<br />
For example, if you would like the torrents to download in:<br />
/home/user/torrents/incomplete<br />
and then sort the torrent data based on which folder you dropped the *.torrent into:<br />
/home/user/torrents/watch => /home/user/torrents/complete<br />
/home/user/torrents/watch/iso => /home/user/torrents/complete/iso<br />
/home/user/torrents/watch/music => /home/user/torrents/complete/music<br />
<br />
You can have the following in your .rtorrent.rc:<br />
{{bc|1=<br />
directory = /home/user/torrents/incomplete<br />
schedule = watch_directory_1,10,10,"load_start=/home/user/torrents/watch/*.torrent,d.set_custom1=/home/user/torrents/complete"<br />
<br />
schedule = watch_directory_2,10,10,"load_start=/home/user/torrents/watch/iso/*.torrent,d.set_custom1=/home/user/torrents/complete/iso"<br />
<br />
schedule = watch_directory_3,10,10,"load_start=/home/user/torrents/watch/music/*.torrent,d.set_custom1=/home/user/torrents/complete/music"<br />
<br />
system.method.insert=checkdirs1,simple,"not=\"$equal={d.get_custom1=,d.get_base_path=}\""<br />
system.method.insert=movecheck1,simple,"and={checkdirs1=,d.get_complete=,d.get_custom1=}"<br />
system.method.insert=movedir1,simple,"d.set_directory=$d.get_custom1=;execute=mv,-u,$d.get_base_path=,$d.get_custom1=;d.set_custom1=;d.stop=;d.start="<br />
system.method.set_key=event.download.hash_done,move_hashed1,"branch={$movecheck1=,movedir1=}"<br />
}}<br />
<br />
Also see [http://code.google.com/p/pyroscope/ pyroscope] especially the rtcontrol examples. There is an AUR package.<br />
<br />
==== Notification with Google Mail ====<br />
<br />
Cell phone providers allow you to "email" your phone:<br />
{{bc|<nowiki><br />
Verizon: 10digitphonenumber@vtext.com<br />
AT&T: 10digitphonenumber@txt.att.net<br />
Former AT&T customers: 10digitphonenumber@mmode.com<br />
Sprint: 10digitphonenumber@messaging.sprintpcs.com<br />
T-Mobile: 10digitphonenumber@tmomail.net<br />
Nextel: 10digitphonenumber@messaging.nextel.com<br />
Cingular: 10digitphonenumber@cingularme.com<br />
Virgin Mobile: 10digitphonenumber@vmobl.com<br />
Alltel: 10digitphonenumber@alltelmessage.com OR<br />
10digitphonenumber@message.alltel.com<br />
CellularOne: 10digitphonenumber@mobile.celloneusa.com<br />
Omnipoint: 10digitphonenumber@omnipointpcs.com<br />
Qwest: 10digitphonenumber@qwestmp.com<br />
Telus: 10digitphonenumber@msg.telus.com<br />
Rogers Wireless: 10digitphonenumber@pcs.rogers.com<br />
Fido: 10digitphonenumber@fido.ca<br />
Bell Mobility: 10digitphonenumber@txt.bell.ca<br />
Koodo Mobile: 10digitphonenumber@msg.koodomobile.com<br />
MTS: 10digitphonenumber@text.mtsmobility.com<br />
President's Choice: 10digitphonenumber@txt.bell.ca<br />
Sasktel: 10digitphonenumber@sms.sasktel.com<br />
Solo: 10digitphonenumber@txt.bell.ca<br />
</nowiki>}}<br />
<br />
*Install mailx which is provided by the {{Pkg|s-nail}} package that is found in the [[official repositories]].<br />
<br />
*Clear the {{ic|/etc/mail.rc}} file and enter:<br />
<br />
{{bc|<nowiki><br />
set sendmail="/usr/bin/mailx"<br />
set smtp=smtp.gmail.com:587<br />
set smtp-use-starttls<br />
set ssl-verify=ignore<br />
set ssl-auth=login<br />
set smtp-auth-user=USERNAME@gmail.com<br />
set smtp-auth-password=PASSWORD<br />
</nowiki>}}<br />
<br />
Now to send the text, we must pipe a message to the mailx program.<br />
*Make a Bash script:<br />
{{hc|/path/to/mail.sh|<nowiki><br />
echo "$@: Done" | mailx 5551234567@vtext.com<br />
</nowiki>}}<br />
Where the $@ is a variable holding all the arguments passed to our script.<br />
<br />
*And finally, add the important {{ic|~/.rtorrent.rc}} line:<br />
system.method.set_key = event.download.finished,notify_me,"execute=/path/to/mail.sh,$d.get_name="<br />
<br />
Breaking it down:<br />
<br />
{{ic|notify_me}} is the command id, which may be used by other commands, it can be just about anything you like, so long as it is unique.<br />
<br />
{{ic|1=execute=}} is the rtorrent command, in this case to execute a shell command.<br />
<br />
{{ic|/path/to/mail.sh}} is the name of our script (or whatever command you want to execute) followed by a comma separated list of all the switches/arguments to be passed.<br />
<br />
{{ic|1=$d.get_name=}} 'd' is an alias to whatever download triggered the command, get_name is a function which returns the name of our download, and the '$' tells rTorrent to replace the command with its output before it calls execute.<br />
<br />
The end result? When that torrent, 'All Live Nudibranches', that we started before leaving for work finishes, we will be texted:<br />
All Live Nudibranches: Done<br />
<br />
=== Displaying active torrents ===<br />
<br />
The rtorrent does not list the active tab properly by default, add this line to your {{ic|.rtorrent.rc}} to show only active torrents<br />
schedule = filter_active,30,30,"view_filter = active,\"or={d.get_up_rate=,d.get_down_rate=}\""<br />
<br />
Then press {{ic|9}} in your rTorrent client to see the changes in action.<br />
<br />
=== Manually adding trackers to torrents ===<br />
<br />
# Select torrent to edit from rTorrent console view.<br />
# Hit {{ic|Ctrl+x}}.<br />
# If you had four trackers type following lines one at a time (always press {{ic|Ctrl+x}} first) to add four more for example:<br />
<br />
d.tracker.insert="5","udp://tracker.publicbt.com:80"<br />
d.tracker.insert="6","udp://tracker.openbittorrent.com:80"<br />
d.tracker.insert="7","udp://tracker.istole.it:80"<br />
d.tracker.insert="8","udp://tracker.ccc.de:80"<br />
<br />
== Troubleshooting ==<br />
<br />
=== CA certificates ===<br />
<br />
To use rTorrent with a tracker that uses HTTPS, do the following as root:<br />
<br />
{{bc|<br />
# cd /etc/ssl/certs<br />
<nowiki># wget --no-check-certificate https://www.geotrust.com/resources/root_certificates/certificates/Equifax_Secure_Global_eBusiness_CA-1.cer</nowiki><br />
# mv Equifax_Secure_Global_eBusiness_CA-1.cer Equifax_Secure_Global_eBusiness_CA-1.pem<br />
# c_rehash<br />
}}<br />
<br />
And from now on run rTorrent with:<br />
$ rtorrent -o http_capath=/etc/ssl/certs<br />
<br />
If you use GNU Screen, update the {{ic|.screenrc}} configuration file to reflect this change:<br />
$ screen -t rtorrent rtorrent -o http_capath=/etc/ssl/certs<br />
<br />
In rTorrent 0.8.9, set {{ic|<nowiki>network.http.ssl_verify_peer.set=0</nowiki>}} to [https://bbs.archlinux.org/viewtopic.php?pid=981832#p981832 fix the problem].<br />
<br />
For more information see: [https://bbs.archlinux.org/viewtopic.php?pid=331850 rTorrent Error & CA Certificate] and [https://bbs.archlinux.org/viewtopic.php?id=45800 rTorrent Certificates Problem]<br />
<br />
=== Locked directories ===<br />
<br />
rTorrent can sometimes lock up after a crash or incorrect shutdown, and will complain about a lock file.<br />
<br />
Per the error message, the file called "'''rtorrent.lock'''" can be found within the hidden folder {{ic|.rtorrentsession}} for your download directory and manually removed.<br />
<br />
=== Event failed: bad return code ===<br />
<br />
This is caused by there being spaces in your system.method.* lines. Remove the spaces and it will work.<br />
<br />
== Web interface ==<br />
<br />
There are numerous web interfaces and front ends for rTorrent including:<br />
* [[WTorrent]] is a web interface to rtorrent programmed in php using Smarty templates and XMLRPC for PHP library.<br />
* [http://code.google.com/p/ntorrent/ nTorrent] is a graphical user interface client to rtorrent (a cli torrent client) written in Java.<br />
* [https://rtwi.jmk.hu/ rTWi] is a simple rTorrent web interface written in PHP.<br />
* [[Rtgui]] is a web based front end for rTorrent written in PHP and uses XML-RPC to communicate with the rTorrent client.<br />
* [https://github.com/Novik/ruTorrent rutorrent] and [http://forums.rutorrent.org/ Forum] - A web-based front-end with an interface very similar to uTorrent which supports many plugins and advanced features (see also: [[ruTorrent]] and [https://bbs.archlinux.org/viewtopic.php?pid=897577#p897577 Guide on forum]).<br />
<br />
{{Note|rTorrent is currently built using [http://xmlrpc-c.sourceforge.net/ XML-RPC for C/C++], which is required for some web interfaces (e.g. ruTorrent).}}<br />
<br />
=== XMLRPC interface ===<br />
<br />
If you want to use rtorrent with some web interfaces (e.g. rutorrent) you need to add the following line to the configuration file:<br />
scgi_port = localhost:5000<br />
<br />
For more information see: [https://github.com/rakshasa/rtorrent/wiki/RPC-Setup-XMLRPC Using XMLRPC with rtorrent]<br />
<br />
=== Saving magnet links as torrent files in watch folder ===<br />
<br />
{{Note| Rtorrent natively supports downloading torrents through magnet links. At the main view (reached by starting Rtorrent and pressing 1), press enter. At "load.normal>" paste the magnet link and press enter again. This will start the download.}}<br />
<br />
If you wish to have magnet links automatically added to your watch folder, here is a script that will do the trick:<br />
<br />
<nowiki><br />
#!/bin/bash<br />
watch_folder=~/.rtorrent/watch<br />
cd $watch_folder<br />
[[ "$1" =~ xt=urn:btih:([^&/]+) ]] || exit;<br />
echo "d10:magnet-uri${#1}:${1}e" > "meta-${BASH_REMATCH[1]}.torrent"</nowiki><br />
<br />
(adapted from http://blog.gonzih.org/blog/2012/02/17/how-to-use-magnet-links-with-rtorrent/).<br />
<br />
Save it, for instance as rtorrent-magnet, give it execution permission, and place it somewhere under your $PATH. Then in Firefox:<br />
# Type {{ic|about:config}} into the Location Bar (address bar) and press {{ic|Enter}}.<br />
# Right-click: ''New > Boolean > Name: '''network.protocol-handler.expose.magnet''' > Value > false''.<br />
# Next time you click a magnet link you will be asked which application to open it with. Select the script we just created and you will be done.<br />
<br />
If you want xdg-open to handle this, which you need if you are using chrome instead of firefox, (though gnome and other DE might have their own programs overriding xdg-open) you need to create the desktop entry for the rtorrent-magnet script in {{ic|~/.local/share/applications/rtorrent-magnet.desktop}} with the following content:<br />
<br />
<nowiki><br />
[Desktop Entry]<br />
Type=Application<br />
Name=rtorrent-magnet<br />
Exec=rtorrent-magnet %U<br />
MimeType=x-scheme-handler/magnet;<br />
NoDisplay=true</nowiki><br />
<br />
Then all you need to do is to register the mimetype using<br />
$ xdg-mime default rtorrent-magnet.desktop x-scheme-handler/magnet<br />
<br />
== Magnet to Torrent ==<br />
You could also use the {{AUR|magnet2torrent-git}} package which downloads the metadata and creates a torrent file.<br />
<br />
How to use:<br />
$ magnet2torrent <magnet link> [torrent file]<br />
<br />
== rtorrent-pyro ==<br />
<br />
{{AUR|rtorrent-pyro}}{{Broken package link|{{aur-mirror|rtorrent-pyro}}}} from the [[AUR]] comes with an extended rtorrent console interface. It does not contain the pyroscope tools yet though. If you also need the pyroscope tools see [[#PyroScope]] .<br />
<br />
Make sure you add following command to ~/.rtorrent.rc, which makes the asterisk key * to a shortcut for toggling between extended and collapsed view within rtorrent's interface:<br />
{{bc|<nowiki>schedule = bind_collapse,0,0,"ui.bind_key=download_list,*,view.collapsed.toggle="</nowiki>}}<br />
<br />
Also set "pyro.extended" to 1 to activate rTorrent-PS features.<br />
{{bc|<nowiki>system.method.insert = pyro.extended, value|const, 1</nowiki>}}<br />
<br />
=== PyroScope ===<br />
<br />
We create a directory for the installation of pyroscope, then download and update the source code from subversion:<br />
{{bc|<nowiki>mkdir -p ~/.lib<br />
svn checkout http://pyroscope.googlecode.com/svn/trunk/ ~/.lib/pyroscope<br />
~/.lib/pyroscope/update-to-head.sh</nowiki>}}<br />
Adding pyroscope bin's PATH to .bashrc:<br />
{{bc|<nowiki>export PATH=$PATH:path_to_the_bin # Example path for pyroscope bin's: /home/user/.lib/pyroscope/bin/</nowiki>}}<br />
Creating the ~/.pyroscope/config.ini:<br />
{{bc|<nowiki>pyroadmin --create-config</nowiki>}}<br />
<br />
Add this to your ~/.rtorrent.rc. Do not forget to add the path of your pyroscope bin's dir (see below).<br />
{{bc|<nowiki>system.method.insert = pyro.bin_dir, string|const, write_here_path_to_your_pyroscope_bin_dir # Example path: /home/user/.lib/pyroscope/bin/<br />
system.method.insert = pyro.rc_dialect, string|const|simple, "execute_capture=bash,-c,\"test $1 = 0.8.6 && echo -n 0.8.6 || echo -n 0.8.9\",dialect,$system.client_version="<br />
system.method.insert = pyro.rtorrent_rc, string|const|private, "$cat=~/.pyroscope/rtorrent-,\"$pyro.rc_dialect=\",.rc.default"<br />
import = $pyro.rtorrent_rc=</nowiki>}}<br />
<br />
Optionally: TORQUE: Daemon watchdog schedule. Must be activated by touching the "~/.pyroscope/run/pyrotorque" file!<br />
You can also just use rtorrent watch dir or give pyro_watchdog a try, which comes with 'treewatch' ability, meaning it also watches for torrents recursively within the given watch path. Further documentation for pyro_watchdog is here: <br />
[http://code.google.com/p/pyroscope/wiki/QueueManager] <br />
To enable pyro_watchdog, add this in ~/.rtorrent.rc and further configurations are in ~/.pyroscope/torque.ini. <br />
{{bc|<nowiki>schedule = pyro_watchdog,30,300,"pyro.watchdog=~/.pyroscope,-v"</nowiki>}}<br />
<br />
Following steps are important. Before using pyroscope tools you have to set the missing "loaded" times to that of the .torrent file. Run this in your terminal:<br />
{{bc|<nowiki>rtcontrol '!*"*' loaded=0 -q -sname -o 'echo "$(name)s"\ntest -f "$(metafile)s" && rtxmlrpc -q d.set_custom $(hash)s tm_loaded \$(\<br />
ls -l --time-style "+%%s" "$(metafile)s" \<br />
| cut -f6 -d" ")\nrtxmlrpc -q d.save_session $(hash)s' | bash</nowiki>}}<br />
<br />
And now set the missing "completed" times to that of the data file or directory:<br />
{{bc|<nowiki>rtcontrol '!*"*' completed=0 done=100 path=\! is_ghost=no -q -sname -o 'echo "$(name)s"\ntest -e "$(realpath)s" && rtxmlrpc -q d.set_custom $(hash)s tm_completed \$(\<br />
ls -ld --time-style "+%%s" "$(realpath)s" \<br />
| cut -f6 -d" ")\nrtxmlrpc -q d.save_session $(hash)s' | bash</nowiki>}}<br />
<br />
Example usage:<br />
Will print out all torrents older than 2 hours:<br />
{{bc|<nowiki>rtcontrol -V completed=+2h -scompleted -ocompleted</nowiki>}}<br />
Deletes all torrents older than 48 hours:<br />
{{bc|<nowiki>rtcontrol -V completed=+48h -scompleted -ocompleted --cull --yes</nowiki>}}<br />
<br />
== See also ==<br />
<br />
* [http://libtorrent.rakshasa.no/rtorrent/rtorrent.1.html Manpage for rtorrent]<br />
* [[Screen Tips]]<br />
* [[Wikipedia:Comparison of BitTorrent clients|Comparison of BitTorrent clients]] on Wikipedia<br />
* [http://community.rutorrent.org/ rTorrent Community Wiki] - Public place for information on rTorrent and any project related to rTorrent, regarding setup, configuration, operations, and development.<br />
* [http://code.google.com/p/pyroscope/ PyroScope] - Collection of command line tools for rTorrent. It provides commands for creating and modifying torrent files, moving data on completion without having multiple watch folders, and mass-controlling download items via rTorrent's XML-RPC interface: searching, start/stop, deleting items with or without their data, etc. It also offers a documented [[Python]] API.<br />
* [[Rutorrent with lighttpd|ruTorrent with Lighttpd]]<br />
* [http://wiki.theaveragegeek.com/howto/installing_rtorrent_and_hellanzb_on_centos5_64-bit_vps How-to install rTorrent and Hellanzb on CentOS 5 64-bit VPS]<br />
* [http://code.google.com/p/pyroscope/wiki/DebianInstallFromSource Installation guide for rTorrent and Pryoscope on Debian] - Collection of tools for the BitTorrent protocol and especially the rTorrent client<br />
* [http://mktorrent.sourceforge.net/ mktorrent] - Command line application used to generate torrent files, which is available as {{Pkg|mktorrent}} in the [[official repositories]].<br />
* [https://github.com/kfei/docktorrent docktorrent] - Using Docker, rTorrent and ruTorrent to run a full-featured BitTorrent box.<br />
* [https://github.com/nelhage/reptyr reptyr] - another tool to take over a program's TTY (it is in the standard repos). The process may have started being attached to a terminal or to a socket in tmux, screen or dtach.<br />
* [http://caca.zoy.org/wiki/neercs neercs] - a more screen/tmux like tool than reptyr, but, like reptyr, neercs can also "steal" a process that may have started slaved to a terminal or to a socket in tmux, screen or dtach. {{AUR|neercs-git}}{{Broken package link|{{aur-mirror|neercs-git}}}}<br />
<br />
'''Forum threads'''<br />
* 2009-03-11 - Arch Linux - [https://bbs.archlinux.org/viewtopic.php?id=67304 HOWTO: rTorrent stats in Conky]</div>Ygyfygyhttps://wiki.archlinux.org/index.php?title=RTorrent&diff=421224RTorrent2016-02-18T11:32:53Z<p>Ygyfygy: /* Installation */ Mentioned rtorrent-vi-color from the AUR</p>
<hr />
<div>{{DISPLAYTITLE:rTorrent}}<br />
[[Category:Internet applications]]<br />
[[es:RTorrent]]<br />
[[ja:RTorrent]]<br />
[[ru:RTorrent]]<br />
[[zh-CN:RTorrent]]<br />
[https://rakshasa.github.io/rtorrent/ rTorrent] is a quick and efficient BitTorrent client that uses, and is in development alongside, the libTorrent (not to be confused with {{Pkg|libtorrent-rasterbar}}) library. It is written in C++ and uses the [[Wikipedia:ncurses|ncurses]] programming library, which means it uses a text user interface. When combined with a terminal multiplexer (e.g. [[GNU Screen]] or [[Tmux]]) and [[Secure Shell]], it becomes a convenient remote [[Wikipedia:BitTorrent (protocol)#Operation|BitTorrent client]].<br />
<br />
== Installation ==<br />
<br />
[[Install]] the {{Pkg|rtorrent}} package that is available in the [[official repositories]].<br />
<br />
Alternatively, install {{AUR|rtorrent-git}} or {{AUR|rtorrent-vi-color}} or {{AUR|rtorrent-extended}}{{Broken package link|{{aur-mirror|rtorrent-extended}}}} from the [[AUR]].<br />
<br />
== Configuration ==<br />
<br />
{{Note|See the rTorrent wiki article on this subject for more information: [http://web.archive.org/web/20140213003955/http://libtorrent.rakshasa.no/wiki/RTorrentCommonTasks Common Tasks in rTorrent for Dummies].}}<br />
<br />
Before running rTorrent, find the example configuration file {{ic|/usr/share/doc/rtorrent/rtorrent.rc}} and copy it to {{ic|~/.rtorrent.rc}}:<br />
<br />
$ cp /usr/share/doc/rtorrent/rtorrent.rc ~/.rtorrent.rc<br />
<br />
=== Performance ===<br />
<br />
{{Note|See the rTorrent wiki article on this subject for more information: [http://web.archive.org/web/20140213011439/http://libtorrent.rakshasa.no/wiki/RTorrentPerformanceTuning Performance Tuning]}}<br />
<br />
The values for the following options are dependent on the system's hardware and Internet connection speed. To find the optimal values read: [http://torrentfreak.com/optimize-your-BitTorrent-download-speed Optimize Your BitTorrent Download Speed]<br />
{{bc|<nowiki><br />
min_peers = 40<br />
max_peers = 52<br />
<br />
min_peers_seed = 10<br />
max_peers_seed = 52<br />
<br />
max_uploads = 8<br />
<br />
download_rate = 200<br />
upload_rate = 28<br />
</nowiki>}}<br />
<br />
The {{ic|check_hash}} option executes a hash check when a torrent download is complete or rTorrent is started. When starting, it checks for errors in your completed files. <br />
check_hash = yes<br />
<br />
=== Create and manage files ===<br />
<br />
The {{ic|directory}} option will determine where your torrent data will be saved (could be a relative path):<br />
directory = ~/downloaded<br />
<br />
The {{ic|session}} option allows rTorrent to save the progess of your torrents. It is recommended to create a directory in home directory (e.g. {{ic|mkdir ~/.rtorrent.session}}).<br />
session = ~/.rtorrent.session<br />
<br />
The {{ic|schedule}} option has rTorrent watch a particular directory for new torrent files. Saving a torrent file to this directory will automatically start the download. Remember to create the directory that will be watched (e.g. {{ic|mkdir ~/watch}}). Also, be careful when using this option as rTorrent will move the torrent file to your session folder and rename it to its hash value.<br />
schedule = watch_directory,5,5,load_start=/home/''user''/watch/*.torrent<br />
schedule = untied_directory,5,5,stop_untied=<br />
schedule = tied_directory,5,5,start_tied=<br />
<br />
The following {{ic|schedule}} option is intended to stop rTorrent from downloading data when disk space is low.<br />
schedule = low_diskspace,5,60,close_low_diskspace=100M<br />
<br />
=== Port configuration ===<br />
<br />
The {{ic|port_range}} option sets which port(s) to use for listening. It is recommended to use a port that is higher than 49152 (see: [[Wikipedia:List of TCP and UDP port numbers|List of port numbers]]). Although, rTorrent allows a range of ports, a single port is recommended.<br />
port_range = 49164-49164<br />
<br />
Additionally, make sure port forwarding is enabled for the proper port(s) (see: [http://portforward.com/english/routers/port_forwarding/routerindex.htm Port Forward guides]).<br />
<br />
=== Additional settings ===<br />
<br />
The {{ic|encryption}} option enables or disables encryption. It is very important to enable this option, not only for yourself, but also for your peers in the torrent swarm. Some users need to obscure their bandwidth usage from their ISP. And it does not hurt to enable it even if you do not need the added security.<br />
encryption = allow_incoming,try_outgoing,enable_retry<br />
It is also possible to force all connections to use encryption. However, be aware that this stricter rule will reduce your client's availability:<br />
encryption = require,require_RC4,allow_incoming,try_outgoing<br />
<br />
See also [[Wikipedia:BitTorrent Protocol Encryption]].<br />
<br />
This final {{ic|dht}} option enables [[Wikipedia:Distributed hash table|DHT]] support. DHT is common among public trackers and will allow the client to acquire more peers.<br />
{{bc|<nowiki><br />
dht = auto<br />
dht_port = 6881<br />
peer_exchange = yes<br />
</nowiki>}}<br />
<br />
== Key bindings ==<br />
<br />
rTorrent relies exclusively on keyboard shortcuts for user input. A quick reference is available in the table below. A complete guide is available on the rTorrent wiki (see: [https://github.com/rakshasa/rtorrent/wiki/User-Guide rTorrent User Guide]).<br />
<br />
{{Note|Striking {{ic|Ctrl-q}} twice in quick succession will make rTorrent shutdown without waiting to send a stop announce to the connected trackers.}}<br />
<br />
{| class="wikitable"<br />
|-<br />
!width="75" |Cmd<br />
!Action<br />
|-<br />
|Ctrl-q<br />
|Quit application<br />
|-<br />
|Ctrl-s<br />
|Start download. Runs hash first unless already done.<br />
|-<br />
|Ctrl-d<br />
|Stop an active download or remove a stopped download<br />
|-<br />
|Ctrl-k<br />
|Stop and close the files of an active download.<br />
|-<br />
|Ctrl-r<br />
|Initiate hash check of torrent. Starts downloading if file is not available.<br />
|-<br />
|Left<br />
|Returns to the previous screen<br />
|-<br />
|Right<br />
|Goes to the next screen<br />
|-<br />
|Backspace/Return<br />
|Adds the specified *.torrent<br />
|-<br />
|<nowiki>a|s|d</nowiki><br />
|<nowiki>Increase global upload throttle about 1|5|50 KB/s</nowiki><br />
|-<br />
|<nowiki>A|S|D</nowiki><br />
|<nowiki>Increase global download throttle about 1|5|50 KB/s</nowiki><br />
|-<br />
|<nowiki>z|x|c</nowiki><br />
|<nowiki>Decrease global upload throttle about 1|5|50 KB/s</nowiki><br />
|-<br />
|<nowiki>Z|X|C</nowiki><br />
|<nowiki>Decrease global download throttle about 1|5|50 KB/s</nowiki><br />
|}<br />
<br />
=== Redundant mapping ===<br />
<br />
{{ic|Ctrl-s}} is often used for terminal control to stop screen output while {{ic|Ctrl-q}} is used to start it. These mappings may interfere with rTorrent. Check to see if these terminal options are bound to a mapping:<br />
{{hc|$ stty -a|<nowiki>...<br />
swtch = <undef>; start = ^Q; stop = ^S; susp = ^Z; rprnt = ^R; werase = ^W; lnext = ^V;<br />
...<br />
</nowiki>}}<br />
<br />
To remove the mappings, change the terminal characteristics to undefine the aforementioned special characters (i.e. {{ic|stop}} and {{ic|start}}):<br />
# stty stop undef<br />
# stty start undef<br />
<br />
To remove these mappings automatically at startup you may add the two preceding commands to your {{ic|~/.bashrc}} file.<br />
<br />
== Additional tips ==<br />
<br />
=== systemd service file with tmux or screen ===<br />
<br />
*With tmux (Restart rtorrent if crashed)<br />
{{hc|/etc/systemd/user/rt.service|<nowiki><br />
[Unit]<br />
Description=rTorrent<br />
After=network.target<br />
<br />
[Service]<br />
Type=forking<br />
KillMode=none<br />
ExecStart=/usr/bin/tmux new-session -s rt -n rtorrent -d rtorrent<br />
ExecStop=/usr/bin/bash -c "/usr/bin/tmux send-keys -t rt:rtorrent.0 C-q && while pidof rtorrent > /dev/null; do sleep 0.5; echo rtorrent still running...; done"<br />
WorkingDirectory=%h<br />
Restart=on-failure<br />
<br />
[Install]<br />
WantedBy=default.target<br />
</nowiki>}}<br />
<br />
*With tmux running as user rtorrent (Restart rtorrent if crashed)<br />
{{hc|/etc/systemd/system/rtorrent.service|<nowiki><br />
[Unit]<br />
Description=rTorrent Daemon<br />
After=network.target<br />
<br />
[Service]<br />
Type=forking<br />
KillMode=none<br />
User=rtorrent<br />
ExecStart=/usr/bin/tmux new-session -c /mnt/storage/rtorrent -s rtorrent -n rtorrent -d rtorrent<br />
ExecStop=/usr/bin/bash -c "/usr/bin/tmux send-keys -t rtorrent C-q && while pidof rtorrent > /dev/null; do sleep 0.5; done"<br />
WorkingDirectory=/home/rtorrent/<br />
Restart=on-failure<br />
<br />
[Install]<br />
WantedBy=multi-user.target<br />
</nowiki>}}<br />
<br />
*With screen<br />
<br />
{{hc|/etc/systemd/user/rt.service|<nowiki><br />
[Unit]<br />
Description=rTorrent<br />
After=network.target<br />
<br />
[Service]<br />
Type=forking<br />
KillMode=none<br />
ExecStart=/usr/bin/screen -d -m -fa -S rtorrent /usr/bin/rtorrent<br />
ExecStop=/usr/bin/killall -w -s 2 /usr/bin/rtorrent<br />
WorkingDirectory=%h<br />
<br />
[Install]<br />
WantedBy=default.target<br />
</nowiki>}}<br />
<br />
Start at boot time:<br />
$ systemctl --user enable rt<br />
Start manually:<br />
$ systemctl --user start rt<br />
Stop:<br />
$ systemctl --user stop rt<br />
Attach to rtorrent's session:<br />
tmux attach -t rt<br />
Detach:<br />
Ctrl-b d<br />
<br />
=== systemd service file with dtach ===<br />
<br />
{{Style|Creating multiple rtorrent sessions this way is far from perfect, why don't we just assume for simplicity that there is only one session? This is assumed in [[#systemd service file with tmux or screen]] anyway.}}<br />
<br />
When running dtach from systemd unit, the {{ic|TERM}} environment variable [[systemd/User#Environment_variables|has to be set explicitly]] for rtorrent to work.<br />
<br />
This service file has no restart because the author occasionally takes the drive in question offline, and rtorrent fails, shall we say, "suboptimally" when started in this scenario and loses many torrent specific settings such as the specific directories each torrent is stored in. In fact the symlinks that kick off rtorrent live on the relevant drive; if it is unmounted rtorrent cannot start. This use case of blocking rtorrent from starting is relevant to users who put the downloaded files on removable media such as NAS, USB or eSATA drives.<br />
<br />
{{hc|~/.config/systemd/user/rtorrent.service|<nowiki><br />
[Unit]<br />
Description=rTorrent<br />
#After=network.target<br />
<br />
[Service]<br />
# set TERM according to your terminal<br />
Environment="TERM=xterm"<br />
#Environment="TERM=linux" <br />
Type=forking<br />
KillMode=none<br />
ExecStart=-/usr/bin/dtach -n /home/sam/run/dtach_fifos/fifo -e "^T" /home/sam/bin/rtr_new -n -o import=/home/sam/.config/rtorrent/new_.rc <br />
# dtach -n <separate filename for each instance><br />
# <br />
# rtr_new -n to ignore the default .rtorrent.rc<br />
# rtr_new -o import to load the instance-specific rc<br />
ExecStop=-/usr/bin/killall -u sam -e -w -s INT /home/sam/bin/rtr_new<br />
<br />
[Install]<br />
WantedBy=multi-user.target<br />
</nowiki>}}<br />
<br />
Note some other issues exposed in this service file other than just dtach:<br />
<br />
{{ic|/home/sam/bin/rtr_new}} is a symlink to {{ic|/usr/bin/rtorrent}}<br />
<br />
This lets us run several instances and kill each one independently with a different version of the ExecStop, to wit:<br />
<br />
{{bc|1=ExecStop=-/usr/bin/killall -u sam -e -w -s INT /home/sam/bin/rtr_new<br />
ExecStop=-/usr/bin/killall -u sam -e -w -s INT /home/sam/bin/rtr_academic<br />
ExecStop=-/usr/bin/killall -u sam -e -w -s INT /home/sam/bin/rtr_other_stuff}}<br />
<br />
These are each in a different service file, each of which controls one instance.<br />
<br />
Without this step, when running multiple instances a killall solution would kill all the running rtorrent instances. <br />
<br />
If multiple rtorrent instances are not needed and the rtorrent rc file is in the default location the above service file may be simplified. The entire file is included but only the ExecStart and <br />
ExecStop lines change. <br />
<br />
{{hc|~/.config/systemd/user/rtorrent.service|<nowiki><br />
[Unit]<br />
Description=rTorrent<br />
#After=network.target<br />
<br />
[Service]<br />
# set TERM according to your terminal<br />
Environment="TERM=xterm"<br />
#Environment="TERM=linux" <br />
Type=forking<br />
KillMode=none<br />
ExecStart=-/usr/bin/dtach -n /home/sam/run/dtach_fifos/fifo -e "^T" /usr/bin/rtorrent <br />
# dtach -n <user specified FIFO name> -e <user specified character> /usr/bin/rtorrent <br />
ExecStop=/usr/bin/killall -w -s INT /usr/bin/rtorrent<br />
# -e (exact match) and -u (user name) were added above to stop specific processes<br />
# and may be omitted here because only one rtorrent will be running<br />
<br />
[Install]<br />
WantedBy=multi-user.target<br />
</nowiki>}}<br />
<br />
The service can be controlled with [[systemctl --user]]. When it is started, you can attach to the session:<br />
<br />
$ dtach -a /home/sam/run/dtach_fifos/fifo -e "^T"<br />
<br />
=== Pre-allocation ===<br />
<br />
The rTorrent package in the community repository lacks pre-allocation. Compiling rTorrent with pre-allocation allows files to be allocated before downloading the torrent. The major benefit is that it limits and avoids fragmentation of the filesystem. However, this introduces a delay during the pre-allocation if the filesystem does not support the fallocate syscall natively.<br />
<br />
Therefore this switch is recommended for xfs, ext4 and btrfs filesystems, which have native fallocate syscall support. They will see no delay during preallocation and no fragmented filesystem. Pre-allocation on others filesystems will cause a delay but will not fragment the files.<br />
<br />
To make pre-allocation available, recompile libTorrent from the [[ABS]] tree with the following new switch:<br />
$ ./configure --prefix=/usr --disable-debug --with-posix-fallocate<br />
<br />
To enable it, add the following to your {{ic|~/rtorrent.rc}}:<br />
{{hc|~/rtorrent.rc|<nowiki><br />
# Preallocate files; reduces defragmentation on filesystems.<br />
system.file_allocate.set = yes<br />
</nowiki>}}<br />
<br />
=== Manage completed files ===<br />
<br />
{{Note|<br />
*Currently, this part requires either the git version of rtorrent/libtorrent or having applied the patch to 0.8.6 that adds 'equal'.<br />
* If you are having trouble with this tip, it is probably easier to follow [http://web.archive.org/web/20140213003955/http://libtorrent.rakshasa.no/wiki/RTorrentCommonTasks#Movecompletedtorrentstodifferentdirectorydependingonwatchdirectory this].<br />
}}<br />
<br />
It is possible to have rtorrent sort completed torrent data to specific folders based on which 'watch' folder you drop the *.torrent into while continuing to seed. Many examples show how to do this with torrents downloaded by rtorrent. The problem is when you try to drop in 100% done torrent data and then have rtorrent check the data and resume, it will not be sorted.<br />
<br />
As a solution, use the following example in your {{ic|~/.rtorrent.rc}}.<br />
Make sure to change the paths.<br />
<br />
{{bc|1=<br />
# location where new torrent data is placed, and where you should place your<br />
# 'complete' data before you place your *.torrent file into the watch folder<br />
directory = /home/user/torrents/incomplete<br />
<br />
# schedule a timer event named 'watch_directory_1':<br />
# 1) triggers 10 seconds after rtorrent starts<br />
# 2) triggers at 10 second intervals thereafter<br />
# 3) Upon trigger, attempt to load (and start) new *.torrent files found in /home/user/torrents/watch/<br />
# 4) set a variable named 'custom1' with the value "/home/user/torrents/complete"<br />
# NOTE: if you do not want it to automatically start the torrent, change 'load_start' to 'load'<br />
schedule = watch_directory_1,10,10,"load_start=/home/user/torrents/watch/*.torrent,d.set_custom1=/home/user/torrents/complete"<br />
<br />
# insert a method with the alias 'checkdirs1'<br />
# 1) returns true if the current path of the torrent data is not equal to the value of custom1<br />
# 2) otherwise, returns false<br />
system.method.insert=checkdirs1,simple,"not=\"$equal={d.get_custom1=,d.get_base_path=}\""<br />
<br />
# insert a method with the alias 'movecheck1'<br />
# 1) returns true if all 3 commands return true ('result of checkdirs1' && 'torrent is 100% done', 'custom1 variable is set')<br />
# 2) otherwise, returns false<br />
system.method.insert=movecheck1,simple,"and={checkdirs1=,d.get_complete=,d.get_custom1=}"<br />
<br />
# insert a method with the alias 'movedir1'<br />
# (a series of commands, separated by ';') <br />
# 1) "set path of torrent to equal the value of custom1";<br />
# 2) "mv -u <current data path> <custom1 path>";<br />
# 3) "clear custom1", "stop the torrent","resume the torrent"<br />
# 4) stop the torrent<br />
# 5) start the torrent (to get the torrent to update the 'base path')<br />
system.method.insert=movedir1,simple,"d.set_directory=$d.get_custom1=;execute=mv,-u,$d.get_base_path=,$d.get_custom1=;d.set_custom1=;d.stop=;d.start="<br />
<br />
# set a key with the name 'move_hashed1' that is triggered by the hash_done event.<br />
# 1) When hashing of a torrent completes, this custom key will be triggered.<br />
# 2) when triggered, execute the 'movecheck1' method and check the return value.<br />
# 3) if the 'movecheck' method returns 'true', execute the 'movedir1' method we inserted above.<br />
# NOTE-0: *Only* data that has had their hash checked manually with ^R [^R = Control r].<br />
# Or on a rtorrent restart[which initiates a hash check]. Will the data move; ~/torrents/incomplete => ~/torrents/complete for example.<br />
# NOTE-1: 'branch' is an 'if' conditional statement: if(movecheck1){movedir1}<br />
system.method.set_key=event.download.hash_done,move_hashed1,"branch={$movecheck1=,movedir1=}"<br />
}}<br />
<br />
You can add additional watch folders and rules should you like to sort your torrents into special folders.<br />
<br />
For example, if you would like the torrents to download in:<br />
/home/user/torrents/incomplete<br />
and then sort the torrent data based on which folder you dropped the *.torrent into:<br />
/home/user/torrents/watch => /home/user/torrents/complete<br />
/home/user/torrents/watch/iso => /home/user/torrents/complete/iso<br />
/home/user/torrents/watch/music => /home/user/torrents/complete/music<br />
<br />
You can have the following in your .rtorrent.rc:<br />
{{bc|1=<br />
directory = /home/user/torrents/incomplete<br />
schedule = watch_directory_1,10,10,"load_start=/home/user/torrents/watch/*.torrent,d.set_custom1=/home/user/torrents/complete"<br />
<br />
schedule = watch_directory_2,10,10,"load_start=/home/user/torrents/watch/iso/*.torrent,d.set_custom1=/home/user/torrents/complete/iso"<br />
<br />
schedule = watch_directory_3,10,10,"load_start=/home/user/torrents/watch/music/*.torrent,d.set_custom1=/home/user/torrents/complete/music"<br />
<br />
system.method.insert=checkdirs1,simple,"not=\"$equal={d.get_custom1=,d.get_base_path=}\""<br />
system.method.insert=movecheck1,simple,"and={checkdirs1=,d.get_complete=,d.get_custom1=}"<br />
system.method.insert=movedir1,simple,"d.set_directory=$d.get_custom1=;execute=mv,-u,$d.get_base_path=,$d.get_custom1=;d.set_custom1=;d.stop=;d.start="<br />
system.method.set_key=event.download.hash_done,move_hashed1,"branch={$movecheck1=,movedir1=}"<br />
}}<br />
<br />
Also see [http://code.google.com/p/pyroscope/ pyroscope] especially the rtcontrol examples. There is an AUR package.<br />
<br />
==== Notification with Google Mail ====<br />
<br />
Cell phone providers allow you to "email" your phone:<br />
{{bc|<nowiki><br />
Verizon: 10digitphonenumber@vtext.com<br />
AT&T: 10digitphonenumber@txt.att.net<br />
Former AT&T customers: 10digitphonenumber@mmode.com<br />
Sprint: 10digitphonenumber@messaging.sprintpcs.com<br />
T-Mobile: 10digitphonenumber@tmomail.net<br />
Nextel: 10digitphonenumber@messaging.nextel.com<br />
Cingular: 10digitphonenumber@cingularme.com<br />
Virgin Mobile: 10digitphonenumber@vmobl.com<br />
Alltel: 10digitphonenumber@alltelmessage.com OR<br />
10digitphonenumber@message.alltel.com<br />
CellularOne: 10digitphonenumber@mobile.celloneusa.com<br />
Omnipoint: 10digitphonenumber@omnipointpcs.com<br />
Qwest: 10digitphonenumber@qwestmp.com<br />
Telus: 10digitphonenumber@msg.telus.com<br />
Rogers Wireless: 10digitphonenumber@pcs.rogers.com<br />
Fido: 10digitphonenumber@fido.ca<br />
Bell Mobility: 10digitphonenumber@txt.bell.ca<br />
Koodo Mobile: 10digitphonenumber@msg.koodomobile.com<br />
MTS: 10digitphonenumber@text.mtsmobility.com<br />
President's Choice: 10digitphonenumber@txt.bell.ca<br />
Sasktel: 10digitphonenumber@sms.sasktel.com<br />
Solo: 10digitphonenumber@txt.bell.ca<br />
</nowiki>}}<br />
<br />
*Install mailx which is provided by the {{Pkg|s-nail}} package that is found in the [[official repositories]].<br />
<br />
*Clear the {{ic|/etc/mail.rc}} file and enter:<br />
<br />
{{bc|<nowiki><br />
set sendmail="/usr/bin/mailx"<br />
set smtp=smtp.gmail.com:587<br />
set smtp-use-starttls<br />
set ssl-verify=ignore<br />
set ssl-auth=login<br />
set smtp-auth-user=USERNAME@gmail.com<br />
set smtp-auth-password=PASSWORD<br />
</nowiki>}}<br />
<br />
Now to send the text, we must pipe a message to the mailx program.<br />
*Make a Bash script:<br />
{{hc|/path/to/mail.sh|<nowiki><br />
echo "$@: Done" | mailx 5551234567@vtext.com<br />
</nowiki>}}<br />
Where the $@ is a variable holding all the arguments passed to our script.<br />
<br />
*And finally, add the important {{ic|~/.rtorrent.rc}} line:<br />
system.method.set_key = event.download.finished,notify_me,"execute=/path/to/mail.sh,$d.get_name="<br />
<br />
Breaking it down:<br />
<br />
{{ic|notify_me}} is the command id, which may be used by other commands, it can be just about anything you like, so long as it is unique.<br />
<br />
{{ic|1=execute=}} is the rtorrent command, in this case to execute a shell command.<br />
<br />
{{ic|/path/to/mail.sh}} is the name of our script (or whatever command you want to execute) followed by a comma separated list of all the switches/arguments to be passed.<br />
<br />
{{ic|1=$d.get_name=}} 'd' is an alias to whatever download triggered the command, get_name is a function which returns the name of our download, and the '$' tells rTorrent to replace the command with its output before it calls execute.<br />
<br />
The end result? When that torrent, 'All Live Nudibranches', that we started before leaving for work finishes, we will be texted:<br />
All Live Nudibranches: Done<br />
<br />
=== Displaying active torrents ===<br />
<br />
The rtorrent does not list the active tab properly by default, add this line to your {{ic|.rtorrent.rc}} to show only active torrents<br />
schedule = filter_active,30,30,"view_filter = active,\"or={d.get_up_rate=,d.get_down_rate=}\""<br />
<br />
Then press {{ic|9}} in your rTorrent client to see the changes in action.<br />
<br />
=== Manually adding trackers to torrents ===<br />
<br />
# Select torrent to edit from rTorrent console view.<br />
# Hit {{ic|Ctrl+x}}.<br />
# If you had four trackers type following lines one at a time (always press {{ic|Ctrl+x}} first) to add four more for example:<br />
<br />
d.tracker.insert="5","udp://tracker.publicbt.com:80"<br />
d.tracker.insert="6","udp://tracker.openbittorrent.com:80"<br />
d.tracker.insert="7","udp://tracker.istole.it:80"<br />
d.tracker.insert="8","udp://tracker.ccc.de:80"<br />
<br />
== Troubleshooting ==<br />
<br />
=== CA certificates ===<br />
<br />
To use rTorrent with a tracker that uses HTTPS, do the following as root:<br />
<br />
{{bc|<br />
# cd /etc/ssl/certs<br />
<nowiki># wget --no-check-certificate https://www.geotrust.com/resources/root_certificates/certificates/Equifax_Secure_Global_eBusiness_CA-1.cer</nowiki><br />
# mv Equifax_Secure_Global_eBusiness_CA-1.cer Equifax_Secure_Global_eBusiness_CA-1.pem<br />
# c_rehash<br />
}}<br />
<br />
And from now on run rTorrent with:<br />
$ rtorrent -o http_capath=/etc/ssl/certs<br />
<br />
If you use GNU Screen, update the {{ic|.screenrc}} configuration file to reflect this change:<br />
$ screen -t rtorrent rtorrent -o http_capath=/etc/ssl/certs<br />
<br />
In rTorrent 0.8.9, set {{ic|<nowiki>network.http.ssl_verify_peer.set=0</nowiki>}} to [https://bbs.archlinux.org/viewtopic.php?pid=981832#p981832 fix the problem].<br />
<br />
For more information see: [https://bbs.archlinux.org/viewtopic.php?pid=331850 rTorrent Error & CA Certificate] and [https://bbs.archlinux.org/viewtopic.php?id=45800 rTorrent Certificates Problem]<br />
<br />
=== Locked directories ===<br />
<br />
rTorrent can sometimes lock up after a crash or incorrect shutdown, and will complain about a lock file.<br />
<br />
Per the error message, the file called "'''rtorrent.lock'''" can be found within the hidden folder {{ic|.rtorrentsession}} for your download directory and manually removed.<br />
<br />
=== Event failed: bad return code ===<br />
<br />
This is caused by there being spaces in your system.method.* lines. Remove the spaces and it will work.<br />
<br />
== Web interface ==<br />
<br />
There are numerous web interfaces and front ends for rTorrent including:<br />
* [[WTorrent]] is a web interface to rtorrent programmed in php using Smarty templates and XMLRPC for PHP library.<br />
* [http://code.google.com/p/ntorrent/ nTorrent] is a graphical user interface client to rtorrent (a cli torrent client) written in Java.<br />
* [https://rtwi.jmk.hu/ rTWi] is a simple rTorrent web interface written in PHP.<br />
* [[Rtgui]] is a web based front end for rTorrent written in PHP and uses XML-RPC to communicate with the rTorrent client.<br />
* [https://github.com/Novik/ruTorrent rutorrent] and [http://forums.rutorrent.org/ Forum] - A web-based front-end with an interface very similar to uTorrent which supports many plugins and advanced features (see also: [[ruTorrent]] and [https://bbs.archlinux.org/viewtopic.php?pid=897577#p897577 Guide on forum]).<br />
<br />
{{Note|rTorrent is currently built using [http://xmlrpc-c.sourceforge.net/ XML-RPC for C/C++], which is required for some web interfaces (e.g. ruTorrent).}}<br />
<br />
=== XMLRPC interface ===<br />
<br />
If you want to use rtorrent with some web interfaces (e.g. rutorrent) you need to add the following line to the configuration file:<br />
scgi_port = localhost:5000<br />
<br />
For more information see: [https://github.com/rakshasa/rtorrent/wiki/RPC-Setup-XMLRPC Using XMLRPC with rtorrent]<br />
<br />
=== Saving magnet links as torrent files in watch folder ===<br />
<br />
{{Note| Rtorrent natively supports downloading torrents through magnet links. At the main view (reached by starting Rtorrent and pressing 1), press enter. At "load.normal>" paste the magnet link and press enter again. This will start the download.}}<br />
<br />
If you wish to have magnet links automatically added to your watch folder, here is a script that will do the trick:<br />
<br />
<nowiki><br />
#!/bin/bash<br />
watch_folder=~/.rtorrent/watch<br />
cd $watch_folder<br />
[[ "$1" =~ xt=urn:btih:([^&/]+) ]] || exit;<br />
echo "d10:magnet-uri${#1}:${1}e" > "meta-${BASH_REMATCH[1]}.torrent"</nowiki><br />
<br />
(adapted from http://blog.gonzih.org/blog/2012/02/17/how-to-use-magnet-links-with-rtorrent/).<br />
<br />
Save it, for instance as rtorrent-magnet, give it execution permission, and place it somewhere under your $PATH. Then in Firefox:<br />
# Type {{ic|about:config}} into the Location Bar (address bar) and press {{ic|Enter}}.<br />
# Right-click: ''New > Boolean > Name: '''network.protocol-handler.expose.magnet''' > Value > false''.<br />
# Next time you click a magnet link you will be asked which application to open it with. Select the script we just created and you will be done.<br />
<br />
If you want xdg-open to handle this, which you need if you are using chrome instead of firefox, (though gnome and other DE might have their own programs overriding xdg-open) you need to create the desktop entry for the rtorrent-magnet script in {{ic|~/.local/share/applications/rtorrent-magnet.desktop}} with the following content:<br />
<br />
<nowiki><br />
[Desktop Entry]<br />
Type=Application<br />
Name=rtorrent-magnet<br />
Exec=rtorrent-magnet %U<br />
MimeType=x-scheme-handler/magnet;<br />
NoDisplay=true</nowiki><br />
<br />
Then all you need to do is to register the mimetype using<br />
$ xdg-mime default rtorrent-magnet.desktop x-scheme-handler/magnet<br />
<br />
== Magnet to Torrent ==<br />
You could also use the {{AUR|magnet2torrent-git}} package which downloads the metadata and creates a torrent file.<br />
<br />
How to use:<br />
$ magnet2torrent <magnet link> [torrent file]<br />
<br />
== rtorrent-pyro ==<br />
<br />
{{AUR|rtorrent-pyro}}{{Broken package link|{{aur-mirror|rtorrent-pyro}}}} from the [[AUR]] comes with an extended rtorrent console interface. It does not contain the pyroscope tools yet though. If you also need the pyroscope tools see [[#PyroScope]] .<br />
<br />
Make sure you add following command to ~/.rtorrent.rc, which makes the asterisk key * to a shortcut for toggling between extended and collapsed view within rtorrent's interface:<br />
{{bc|<nowiki>schedule = bind_collapse,0,0,"ui.bind_key=download_list,*,view.collapsed.toggle="</nowiki>}}<br />
<br />
Also set "pyro.extended" to 1 to activate rTorrent-PS features.<br />
{{bc|<nowiki>system.method.insert = pyro.extended, value|const, 1</nowiki>}}<br />
<br />
=== PyroScope ===<br />
<br />
We create a directory for the installation of pyroscope, then download and update the source code from subversion:<br />
{{bc|<nowiki>mkdir -p ~/.lib<br />
svn checkout http://pyroscope.googlecode.com/svn/trunk/ ~/.lib/pyroscope<br />
~/.lib/pyroscope/update-to-head.sh</nowiki>}}<br />
Adding pyroscope bin's PATH to .bashrc:<br />
{{bc|<nowiki>export PATH=$PATH:path_to_the_bin # Example path for pyroscope bin's: /home/user/.lib/pyroscope/bin/</nowiki>}}<br />
Creating the ~/.pyroscope/config.ini:<br />
{{bc|<nowiki>pyroadmin --create-config</nowiki>}}<br />
<br />
Add this to your ~/.rtorrent.rc. Do not forget to add the path of your pyroscope bin's dir (see below).<br />
{{bc|<nowiki>system.method.insert = pyro.bin_dir, string|const, write_here_path_to_your_pyroscope_bin_dir # Example path: /home/user/.lib/pyroscope/bin/<br />
system.method.insert = pyro.rc_dialect, string|const|simple, "execute_capture=bash,-c,\"test $1 = 0.8.6 && echo -n 0.8.6 || echo -n 0.8.9\",dialect,$system.client_version="<br />
system.method.insert = pyro.rtorrent_rc, string|const|private, "$cat=~/.pyroscope/rtorrent-,\"$pyro.rc_dialect=\",.rc.default"<br />
import = $pyro.rtorrent_rc=</nowiki>}}<br />
<br />
Optionally: TORQUE: Daemon watchdog schedule. Must be activated by touching the "~/.pyroscope/run/pyrotorque" file!<br />
You can also just use rtorrent watch dir or give pyro_watchdog a try, which comes with 'treewatch' ability, meaning it also watches for torrents recursively within the given watch path. Further documentation for pyro_watchdog is here: <br />
[http://code.google.com/p/pyroscope/wiki/QueueManager] <br />
To enable pyro_watchdog, add this in ~/.rtorrent.rc and further configurations are in ~/.pyroscope/torque.ini. <br />
{{bc|<nowiki>schedule = pyro_watchdog,30,300,"pyro.watchdog=~/.pyroscope,-v"</nowiki>}}<br />
<br />
Following steps are important. Before using pyroscope tools you have to set the missing "loaded" times to that of the .torrent file. Run this in your terminal:<br />
{{bc|<nowiki>rtcontrol '!*"*' loaded=0 -q -sname -o 'echo "$(name)s"\ntest -f "$(metafile)s" && rtxmlrpc -q d.set_custom $(hash)s tm_loaded \$(\<br />
ls -l --time-style "+%%s" "$(metafile)s" \<br />
| cut -f6 -d" ")\nrtxmlrpc -q d.save_session $(hash)s' | bash</nowiki>}}<br />
<br />
And now set the missing "completed" times to that of the data file or directory:<br />
{{bc|<nowiki>rtcontrol '!*"*' completed=0 done=100 path=\! is_ghost=no -q -sname -o 'echo "$(name)s"\ntest -e "$(realpath)s" && rtxmlrpc -q d.set_custom $(hash)s tm_completed \$(\<br />
ls -ld --time-style "+%%s" "$(realpath)s" \<br />
| cut -f6 -d" ")\nrtxmlrpc -q d.save_session $(hash)s' | bash</nowiki>}}<br />
<br />
Example usage:<br />
Will print out all torrents older than 2 hours:<br />
{{bc|<nowiki>rtcontrol -V completed=+2h -scompleted -ocompleted</nowiki>}}<br />
Deletes all torrents older than 48 hours:<br />
{{bc|<nowiki>rtcontrol -V completed=+48h -scompleted -ocompleted --cull --yes</nowiki>}}<br />
<br />
== See also ==<br />
<br />
* [http://libtorrent.rakshasa.no/rtorrent/rtorrent.1.html Manpage for rtorrent]<br />
* [[Screen Tips]]<br />
* [[Wikipedia:Comparison of BitTorrent clients|Comparison of BitTorrent clients]] on Wikipedia<br />
* [http://community.rutorrent.org/ rTorrent Community Wiki] - Public place for information on rTorrent and any project related to rTorrent, regarding setup, configuration, operations, and development.<br />
* [http://code.google.com/p/pyroscope/ PyroScope] - Collection of command line tools for rTorrent. It provides commands for creating and modifying torrent files, moving data on completion without having multiple watch folders, and mass-controlling download items via rTorrent's XML-RPC interface: searching, start/stop, deleting items with or without their data, etc. It also offers a documented [[Python]] API.<br />
* [[Rutorrent with lighttpd|ruTorrent with Lighttpd]]<br />
* [http://wiki.theaveragegeek.com/howto/installing_rtorrent_and_hellanzb_on_centos5_64-bit_vps How-to install rTorrent and Hellanzb on CentOS 5 64-bit VPS]<br />
* [http://code.google.com/p/pyroscope/wiki/DebianInstallFromSource Installation guide for rTorrent and Pryoscope on Debian] - Collection of tools for the BitTorrent protocol and especially the rTorrent client<br />
* [http://mktorrent.sourceforge.net/ mktorrent] - Command line application used to generate torrent files, which is available as {{Pkg|mktorrent}} in the [[official repositories]].<br />
* [https://github.com/kfei/docktorrent docktorrent] - Using Docker, rTorrent and ruTorrent to run a full-featured BitTorrent box.<br />
* [https://github.com/nelhage/reptyr reptyr] - another tool to take over a program's TTY (it is in the standard repos). The process may have started being attached to a terminal or to a socket in tmux, screen or dtach.<br />
* [http://caca.zoy.org/wiki/neercs neercs] - a more screen/tmux like tool than reptyr, but, like reptyr, neercs can also "steal" a process that may have started slaved to a terminal or to a socket in tmux, screen or dtach. {{AUR|neercs-git}}{{Broken package link|{{aur-mirror|neercs-git}}}}<br />
<br />
'''Forum threads'''<br />
* 2009-03-11 - Arch Linux - [https://bbs.archlinux.org/viewtopic.php?id=67304 HOWTO: rTorrent stats in Conky]</div>Ygyfygyhttps://wiki.archlinux.org/index.php?title=List_of_applications/Internet&diff=421222List of applications/Internet2016-02-18T11:24:41Z<p>Ygyfygy: /* Network managers */ mentioned a ncurses connman client</p>
<hr />
<div><noinclude><br />
[[Category:Internet applications]]<br />
[[cs:List of applications/Internet]]<br />
[[es:List of applications/Internet]]<br />
[[it:List of applications/Internet]]<br />
[[ja:アプリケーション一覧/インターネット]]<br />
[[ru:List of applications/Internet]]<br />
[[zh-cn:List of applications/Internet]]<br />
[[zh-tw:List of applications/Internet]]<br />
{{List of applications navigation}}<br />
</noinclude><br />
== Internet ==<br />
<br />
{{Note|1=For possibly more up to date selection of applications, try checking the [https://aur.archlinux.org/packages.php?O=0&K=&do_Search=Go&detail=1&C=13&SeB=nd&SB=n&SO=a&PP=50 AUR 'network' category]}}<br />
<br />
=== Network managers ===<br />
<br />
* {{App|[[Connman]]|Daemon for managing internet connections within embedded devices running the Linux operating system. Comes with a command-line client, plus Enlightenment, ncurses, GTK and Dmenu clients are available.|https://01.org/connman|{{Pkg|connman}}}}<br />
* {{App|[[netctl]]|Simple and robust tool to manage network connections via profiles. Intended for use with [[systemd]].|https://projects.archlinux.org/netctl.git/|{{Pkg|netctl}}}}<br />
* {{App|[[NetworkManager]]|Manager that provides wired, wireless, mobile broadband and OpenVPN detection with configuration and automatic connection.|https://wiki.gnome.org/Projects/NetworkManager|{{Pkg|networkmanager}}}}<br />
* {{App|[[systemd-networkd]]|Native [[systemd]] daemon that manages network configuration. It includes support for basic network configuration through [[udev]]. The service is available with ''systemd'' > 210.|http://www.freedesktop.org/software/systemd/man/systemd-networkd.service.html|{{Pkg|systemd}}}}<br />
* {{App|[[Wicd]]|Wireless and wired connection manager with few dependencies. Comes with an ncurses interface, and a GTK interface {{Pkg|wicd-gtk}} is available.|https://launchpad.net/wicd|{{Pkg|wicd}}}}<br />
<br />
=== VPN clients ===<br />
<br />
* {{App|[[OpenConnect]]|Supports Cisco and Juniper VPNs.|http://www.infradead.org/openconnect/|{{pkg|openconnect}}}}<br />
* {{App|[[PPTPClient]]|To connect to PPTP VPNs, like Microsoft VPNs (MPPE).|http://pptpclient.sourceforge.net/|{{pkg|pptpclient}}}}<br />
<br />
=== Web browsers ===<br />
<br />
See also [[Wikipedia:Comparison of web browsers]].<br />
<br />
==== Console ====<br />
<br />
* {{App|[[Wikipedia:ELinks|ELinks]]|Advanced and well-established feature-rich text mode web browser (Links fork, barely supported since 2009).|http://elinks.or.cz/|{{Pkg|elinks}}}}<br />
* {{App|[[Wikipedia:Links (web browser)|Links]]|Text WWW browser. Includes a console version [links] similar to Lynx, and a graphical X-window/framebuffer version [links -g] (must be compiled in, Arch has both) with CSS, image rendering, pull-down menus.|http://links.twibright.com/|{{Pkg|links}}}}<br />
* {{App|[[Wikipedia:Lynx (web browser)|Lynx]]|Text browser for the World Wide Web.|http://lynx.isc.org|{{Pkg|lynx}}}}<br />
* {{App|retawq|Interactive, multi-threaded network client (web browser) for text terminals.|http://retawq.sourceforge.net/|{{AUR|retawq}}}}<br />
* {{App|[[Wikipedia:W3m|w3m]]|Pager/text-based web browser. It has vim-like keybindings, and is able to display images. It has javascript support too.|http://w3m.sourceforge.net/|{{Pkg|w3m}}}}<br />
<br />
==== Graphical ====<br />
<br />
===== Gecko-based =====<br />
<br />
See also [[Wikipedia:Gecko (software)]].<br />
<br />
* {{App|[[Wikipedia:Conkeror|Conkeror]]|Keyboard-based browser modeled after [[Emacs]] using [[Wikipedia:XULRunner|XULRunner]]. Customizable via JavaScript.|http://repo.or.cz/w/conkeror.git/|{{AUR|conkeror-git}}}}<br />
* {{App|[[Firefox]]|Extensible browser from Mozilla based on Gecko with fast rendering.|https://mozilla.com/firefox|{{Pkg|firefox}}}}<br />
* {{App|Seamonkey|Continuation of the Mozilla Internet Suite.|http://www.seamonkey-project.org/|{{Pkg|seamonkey}}}}<br />
<br />
====== Firefox forks ======<br />
<br />
{{Warning|The following browsers are third-party builds of Firefox. Please direct any support requests to their respective creators.}}<br />
<br />
* {{App|[[Wikipedia:GNU IceCat|GNU IceCat]]|Web browser distributed by the GNU Project, stripped of non-free components and with additional privacy extensions. Release cycle may be delayed compared to Mozilla Firefox.|https://www.gnu.org/software/gnuzilla/|{{AUR|icecat}}}}<br />
* {{App|[[Wikipedia:Mozilla Corporation software rebranded by the Debian project#Iceweasel|Iceweasel]]|Fork of Firefox developed by Debian Linux. The main difference is that it does not include any trademarked Mozilla artwork. See [http://web.glandium.org/blog/?p&#61;97 glandium] for more information on Iceweasel's existence.|https://wiki.debian.org/Iceweasel|{{AUR|iceweasel}}}}<br />
* {{App|[[Wikipedia:Pale Moon (web browser)|Pale Moon]]|Fork based on Firefox, using a Firefox 3+ interface through selective use of add-ons. Firefox add-ons may not be compatible. [https://addons.palemoon.org/firefox/incompatible/] Compiled for SSE2, with disabled optional code and no support for newer Firefox features such as cache2, e10s, and OTMC.|http://www.palemoon.org/|{{AUR|palemoon-bin}}}}<br />
<br />
===== Blink-based =====<br />
<br />
See also [[Wikipedia:Blink (layout engine)]].<br />
<br />
* {{App|Brave|Web browser that blocks ads and trackers by default.|https://www.brave.com/|{{AUR|brave}}}}<br />
* {{App|[[Chromium]]|Web browser developed by Google, the open source project behind Google Chrome.|http://www.chromium.org/|{{Pkg|chromium}}}}<br />
* {{App|Liri|A minimalistic material design web browser written for Papyros.|http://liriproject.me/browser|{{AUR|liri-browser}}}}<br />
* {{App|[[Opera]]|Highly customizable browser with focuses on an adherence to web rendering standards.|http://opera.com|{{Pkg|opera}}}}<br />
* {{App|Quill|A simple web browser that hopefully won't leave you asking "Why is the RAM gone?".|https://bitbucket.org/xiannox/quill|{{AUR|quill-git}}}}<br />
* {{App|Vivaldi|An advanced browser made with the power user in mind.|https://vivaldi.com/|{{AUR|vivaldi}}}}<br />
* {{App|Yandex.Browser|Combines a minimal design with sophisticated technology to make the web faster, safer, and easier.|http://browser.yandex.ru/beta/|{{AUR|yandex-browser}}}}<br />
<br />
===== Webkit-based =====<br />
<br />
See also [[Wikipedia:Webkit]].<br />
<br />
* {{App|[[GNOME Web]]|Browser which uses the WebKitGTK+ rendering engine, part of {{Grp|gnome}}.|https://wiki.gnome.org/Apps/Web/|{{Pkg|epiphany}}}}<br />
* {{App|Lariza|A simple web browser using GTK+ 3, GLib and WebKit2GTK+.|https://github.com/vain/lariza/|{{AUR|lariza-git}}}}<br />
* {{App|Maxthon|A browser that combines a minimal design with sophisticated technology to make the web faster, safer, and easier. The linux version of Maxthon has not been updated since September 2014.|http://www.maxthon.cn/|{{AUR|maxthon-browser}}}}<br />
* {{App|Rainbow Lollipop|The visual history browser.|http://rainbow-lollipop.de/|{{AUR|rainbow-lollipop-git}}}}<br />
* {{App|Surf 2|A simple web browser based on WebKit2GTK+.|http://surf.suckless.org|{{aur|surf2}}}}<br />
* {{App|Webby|Allows to use web apps as regular desktop apps, integrated with the OS, without tabs and using the default system launcher.|https://launchpad.net/webby-browser|{{aur|webby-browser-bzr}}}}<br />
<br />
====== Browsers based on webkitgtk/webkitgtk2/qtwebkit ======<br />
<br />
{{Warning|The following browsers are based on one of three webkit ports that are today considered insecure and outdated. GTK+ browsers should be switching to webkit2gtk and Qt browsers to qt5-webengine (Blink). More info [https://blogs.gnome.org/mcatanzaro/2016/02/01/on-webkit-security-updates/ here].}}<br />
<br />
* {{App|[[Wikipedia:Arora (browser)|Arora]]|Cross-platform web browser built using QtWebKit. Development stopped in January 2012.|https://github.com/arora/arora|{{AUR|arora-git}}}}<br />
* {{App|[[dwb]]|Lightweight, highly customizable web browser based on the WebKit engine with ''vi''-like shortcuts and tiling layouts. As of October 2014 ''dwb'' is [https://bitbucket.org/portix/dwb/pull-request/22/several-cleanups-to-increase-portability/diff#comment-3217936 unmaintained].|http://portix.bitbucket.org/dwb/|{{Pkg|dwb}}}}<br />
* {{App|[[Jumanji]]|Highly customizable and functional web browser.|http://pwmt.org/projects/jumanji|{{AUR|jumanji-git}}}}<br />
* {{App|[[Luakit]]|Highly configurable, micro-browser framework based on the WebKit engine and the GTK+ toolkit. It is very fast, extensible by Lua and licensed under the GNU GPLv3 license.|http://mason-larobina.github.com/luakit/|{{Pkg|luakit}}}}<br />
* {{App|[[Wikipedia:Midori (web browser)|Midori]]|Lightweight web browser based on GTK+ and WebKit.|http://midori-browser.org/|{{Pkg|midori}}}}<br />
* {{App|Otter-browser|Browser aiming to recreate classic Opera (12.x) UI using Qt5.|http://otter-browser.org/|{{AUR|otter-browser}}}}<br />
* {{App|[[Wikipedia:QupZilla|QupZilla]]|New and very fast open source browser based on WebKit core, written in Qt framework.| http://www.qupzilla.com |{{pkg|qupzilla}}}}<br />
* {{App|[[qutebrowser]]|A keyboard-driven, [[vim]]-like browser based on PyQt5 and QtWebKit.|https://github.com/The-Compiler/qutebrowser|{{Pkg|qutebrowser}}}}<br />
* {{App|[[Wikipedia:Rekonq)|Rekonq]]|WebKit-based web browser for KDE.|http://rekonq.kde.org/|{{Pkg|rekonq}}}}<br />
* {{App|Surf|Lightweight WebKit-based browser, which follows the [http://suckless.org/philosophy suckless ideology] (basically, the browser itself is a single C source file).|http://surf.suckless.org|{{Pkg|surf}}}}<br />
* {{App|[[Wikipedia:Uzbl|Uzbl]]|Group of web interface tools which adhere to the Unix philosophy.|http://uzbl.org/|{{Pkg|uzbl-browser}}}}<br />
* {{App|vimb|Fast and lightweight vim like web browser based on the webkit web browser engine and the GTK toolkit.|https://fanglingsu.github.io/vimb/|{{AUR|vimb}}}}<br />
* {{App|[[Vimprobable]]|Browser that behaves like the Vimperator plugin available for Mozilla Firefox. It is based on the WebKit engine and uses the GTK+ bindings.|http://sourceforge.net/apps/trac/vimprobable/|{{AUR|vimprobable-git}}}}<br />
* {{App|[[Wikipedia:Xombrero|Xombrero]] (formerly known as ''xxxterm'') |Webkit minimalist web browser with sophisticated security features designed-in, BSD style.|https://opensource.conformal.com/wiki/xombrero|{{AUR|xombrero-git}}}}<br />
<br />
===== Other =====<br />
<br />
* {{App|[[Wikipedia:Abaco (web browser)|Abaco]]|Multi-page graphical web browser for the Plan 9 OS.|http://lab-fgb.com/abaco/|{{AUR|abaco}}{{Broken package link|{{aur-mirror|abaco}}}}}}<br />
* {{App|[[Wikipedia:Dillo|Dillo]]|Small, fast graphical web browser built on [[Wikipedia:Fltk|FLTK]].|http://dillo.org/|{{Pkg|dillo}}}}<br />
* {{App|[[Wikipedia:Konqueror|Konqueror]]|Web browser based on Qt and KHTML, part of {{Grp|kdebase}}.|http://konqueror.org/|{{Pkg|kdebase-konqueror}}}}<br />
* {{App|[[Wikipedia:NetSurf|NetSurf]]|Featherweight browser written in C, notable for its slowly developing JavaScript support and fast rendering through its own custom rendering engine.|http://netsurf-browser.org|{{Pkg|netsurf}}}}<br />
<br />
=== File sharing ===<br />
<br />
==== FTP ====<br />
<br />
===== FTP clients =====<br />
<br />
See also [[Wikipedia:Comparison of FTP client software]].<br />
<br />
* {{App|[[CurlFtpFS]]|Filesystem for accessing FTP hosts; based on FUSE and libcurl.|http://curlftpfs.sourceforge.net/|{{Pkg|curlftpfs}}}}<br />
* {{App|FatRat|Download manager with support for HTTP, FTP, SFTP, BitTorrent, RapidShare and more.|http://fatrat.dolezel.info/|{{AUR|fatrat-git}}}}<br />
* {{App|[[Wikipedia:FileZilla|FileZilla]]|Fast and reliable FTP, FTPS and SFTP client.|http://filezilla-project.org/|{{Pkg|filezilla}}}}<br />
* {{App|[[FtpFs#Fuseftp|fuseftp]]|FTP filesystem written in Perl, using [[Wikipedia:Filesystem in Userspace|FUSE]].|http://freshmeat.net/projects/fuseftp/|{{AUR|fuseftp}}{{Broken package link|{{aur-mirror|fuseftp}}}}}}<br />
* {{App|[[Wikipedia:gFTP|gFTP]]|Multithreaded FTP client for Linux.|http://gftp.seul.org/|{{Pkg|gftp}}}}<br />
* {{App|[[Wikipedia:Lftp|LFTP]]|Sophisticated command-line FTP client.|http://lftp.yar.ru/|{{Pkg|lftp}}}}<br />
* {{App|LftpFS|Read-only filesystem based on lftp (also supports HTTP, FISH, SFTP, HTTPS, FTPS and proxies).|http://lftpfs.sourceforge.net/|{{AUR|lftpfs}}{{Broken package link|{{aur-mirror|lftpfs}}}}}}<br />
* {{App|ncftp|A set of free application programs implementing FTP.|http://www.ncftp.com/|{{Pkg|ncftp}}}}<br />
* {{App|[[Wikipedia:tnftp|tnftp]]|FTP client with several advanced features for [[Wikipedia:NetBSD|NetBSD]].|http://freecode.com/projects/tnftp|{{Pkg|tnftp}}}}<br />
Some file managers like Dolphin, [[GNOME Files]] and [[Thunar]] also provide FTP functionality.<br />
<br />
===== FTP servers =====<br />
<br />
* {{App|[[bftpd]]|Small, easy-to-configure FTP server|http://bftpd.sourceforge.net/|{{Pkg|bftpd}}}}<br />
* {{App|[[Proftpd|proFTPd]]|A secure and configurable FTP server|http://www.proftpd.org/|{{AUR|proftpd}}}}<br />
* {{App|[[Pure-FTPd]]|Free (BSD-licensed), secure, production-quality and standard-compliant FTP server.|http://www.pureftpd.org/project/pure-ftpd|{{AUR|pure-ftpd}}}}<br />
* {{App|[[vsftpd]]|Lightweight, stable and secure FTP server for UNIX-like systems.|https://security.appspot.com/vsftpd.html|{{Pkg|vsftpd}}}}<br />
<br />
==== BitTorrent clients ====<br />
<br />
See also [[Wikipedia:Comparison of BitTorrent clients]].<br />
<br />
===== Console =====<br />
<br />
====== Command line / backend ======<br />
Can be used as-is via command line, but all have a choice of front-end options as well.<br />
* {{App|[[aria2]]|Lightweight download utility that supports simultaneous adaptive downloading via HTTP(S), FTP, BitTorrent (DHT, PEX, MSE/PE) protocols and Metalink. It can run as a daemon controlled via a built-in JSON-RPC or XML-RPC interface.|http://aria2.sourceforge.net/|{{Pkg|aria2}}}}<br />
* {{App|Ctorrent|CTorrent is a BitTorrent client implemented in C++ to be lightweight and quick.|http://www.rahul.net/dholmes/ctorrent/|{{AUR|enhanced-ctorrent}}}}<br />
* {{App|[[Wikipedia:MLDonkey|MLDonkey]]|Multi-protocol P2P client that supports BitTorrent, HTTP, FTP, eDonkey and Direct Connect.|http://mldonkey.sourceforge.net/|{{Pkg|mldonkey}}}}<br />
* {{App|[[Transmission]]|Simple and easy-to-use BitTorrent client with a daemon version, GTK+, Qt GUI, web and CLI front-ends.|http://transmissionbt.com/|{{Pkg|transmission-cli}} (includes backend, daemon, command-line interface, and a Web UI interface)}}<br />
<br />
====== Console Interface ======<br />
* {{App|[[rTorrent]]|Simple and lightweight ncurses BitTorrent client. Requires {{Pkg|libtorrent}} backend.|https://rakshasa.github.io/rtorrent/|{{Pkg|rtorrent}}}}<br />
* {{App|[[Transmission]]|Simple and easy-to-use BitTorrent client with a daemon version, ncurses CLI. Requires {{Pkg|transmission-cli}} backend.|http://transmissionbt.com/|{{Pkg|transmission-remote-cli}}}}<br />
<br />
===== Graphical Interface =====<br />
<br />
====== libtorrent-rasterbar backend ======<br />
<br />
* {{App|[[Deluge]]|User-friendly BitTorrent client written in PyGTK that can run as a daemon.|http://deluge-torrent.org/|{{Pkg|deluge}}}}<br />
* {{App|FatRat|Qt4 based download manager with support for HTTP, FTP, SFTP, BitTorrent, rapidshare and more. Written in C++.|http://fatrat.dolezel.info/|{{AUR|fatrat-git}}}}<br />
* {{App|[[Wikipedia:qBittorrent|qBittorrent]]|Open source (GPLv2) BitTorrent client that strongly resembles µtorrent.|http://www.qbittorrent.org/|{{Pkg|qbittorrent}}}}<br />
* {{App|[[Wikipedia:Tribler|Tribler]]|4th generation file sharing system bittorrent client.|http://www.tribler.org|{{AUR|tribler}}}}<br />
<br />
====== libktorrent backend ======<br />
* {{App|[[Wikipedia:KGet|KGet]]|Download manager for KDE that supports HTTP(S), FTP and BitTorrent. Part of {{Grp|kdenetwork}}.|http://www.kde.org/applications/internet/kget/|{{Pkg|kdenetwork-kget}}}}<br />
* {{App|[[Ktorrent]]|Feature-rich BitTorrent client for KDE.|http://ktorrent.org/|{{Pkg|ktorrent}}}}<br />
<br />
====== others ======<br />
* {{App|Tixati|P2P client that uses the BitTorrent protocol.|http://www.tixati.com|{{AUR|tixati}}}}<br />
* {{App|[[Transmission]]|Simple and easy-to-use BitTorrent client with daemon version, GTK+, Qt GUI, web and CLI front-ends.|http://transmissionbt.com/|{{Pkg|transmission-gtk}} {{Pkg|transmission-qt}} {{AUR|transmission-remote-gtk}} (remote clients work with the daemon in the -cli package)}}<br />
* {{App|[[Wikipedia:Vuze|Vuze]]|Feature-rich BitTorrent client written in Java (formerly Azureus).|https://www.vuze.com/|{{AUR|vuze}}}}<br />
* {{App|Vuze Plus Extreme Mod|A modded version of the Vuze BitTorrent client with multiple spoofing capabilities.|http://www.sb-innovation.de/f41/vuze-extreme-mod-sb-innovation-5-6-1-3-a-32315/|{{AUR|vuze-extreme-mod}}}}<br />
<br />
==== Other P2P networks ====<br />
<br />
See also [[Wikipedia:Comparison of eDonkey software]].<br />
<br />
* {{App|[[aMule]]|Well-known eDonkey/Kad client with a daemon version and GTK+, web, and CLI front-ends.|http://www.amule.org/|{{Pkg|amule}}}}<br />
* {{App|KaMule|KDE graphical front-end for aMule.|http://kde-apps.org/content/show.php?content&#61;150270|{{AUR|kamule}}}}<br />
* {{App|MlDonkey|A multi-network P2P client.|http://mldonkey.sourceforge.net/|{{Pkg|mldonkey}}}}<br />
* {{App|Sendanywhere| GTK2 client for the cross platform P2P file sharing service, Sendanywhere. Allow users to send files of any type and size to other Android, iOS, and Desktop devices.|https://www.send-anywhere.com|{{AUR|sendanywhere}}}}<br />
* {{App|[[Wikipedia:Sharelin|Sharelin]]|Gnutella2 only client with a web UI.|http://sourceforge.net/apps/mediawiki/sharelin|{{AUR|sharelin}}{{Broken package link|{{aur-mirror|sharelin}}}}}}<br />
<br />
==== Video downloaders ====<br />
<br />
* {{App|youtube-dl|Download videos from YouTube and many other platforms.|http://rg3.github.io/youtube-dl|{{Pkg|youtube-dl}}}}<br />
* {{App|You-Get|Dumb downloader that scrapes the web.|https://you-get.org/|{{Pkg|you-get}}}}<br />
<br />
=== Communication ===<br />
<br />
==== Email clients ====<br />
<br />
See also [[Wikipedia:Comparison of e-mail clients]].<br />
<br />
===== Console =====<br />
<br />
* {{App|alot|An experimental terminal MUA based on [http://notmuchmail.org/ notmuch mail]. It is written in python using the [http://urwid.org/ urwid] toolkit.|https://github.com/pazz/alot|{{AUR|alot}}}}<br />
* {{App|[[Alpine]]|Fast, easy-to-use and Apache-licensed email client based on [[Wikipedia:Pine (email client)|Pine]].|http://patches.freeiz.com/alpine/|{{AUR|alpine}}}}<br />
* {{App|[[Wikipedia:Gnus|Gnus]]|Email, NNTP and RSS client for Emacs.|http://gnus.org/|{{AUR|emacs-gnus-git}}}}<br />
* {{App|[[S-nail]]|a mail processing system with a command syntax reminiscent of ''ed'' with lines replaced by messages. Provides the functionality of [[Wikipedia:mailx|mailx]].|http://sourceforge.net/projects/s-nail/|{{Pkg|s-nail}}}}<br />
* {{App|mu/mu4e|Email indexer (mu) and client for emacs (mu4e). Xapian based for fast searches.|http://www.djcbsoftware.nl/code/mu/mu4e.html|{{AUR|mu}}}}<br />
* {{App|[[Mutt]]|Small but very powerful text-based mail client.|http://www.mutt.org/|{{Pkg|mutt}}}}<br />
* {{App|[[nmh]]|A modular mail handling system.|http://www.nongnu.org/nmh/|{{AUR|nmh}} {{AUR|nmh-git}}}}<br />
* {{App|[[notmuch]]|A fast mail indexer built on top of ''xapian''.|http://notmuchmail.org/|{{Pkg|notmuch}} {{Pkg|notmuch-vim}} {{Pkg|notmuch-mutt}}}}<br />
* {{App|[[Sup]]|CLI mail client with very fast searching, tagging, threading and GMail like operation.|http://supmua.org/|{{AUR|sup}}}}<br />
* {{App|Wanderlust|Email client and news reader for Emacs.|http://www.gohome.org/wl/|{{Pkg|wanderlust}}}}<br />
<br />
===== Graphical =====<br />
<br />
* {{App|[[Balsa]]|Simple and light email client that is part of the Gnome project.|http://pawsa.fedorapeople.org/balsa/|{{Pkg|balsa}}}}<br />
* {{App|[[Wikipedia:Claws Mail|Claws Mail]]|Lightweight GTK-based email client and news reader.|http://claws-mail.org/|{{Pkg|claws-mail}}}}<br />
* {{App|[[Evolution]]|Mature and feature-rich e-mail client used in GNOME by default. Part of {{Grp|gnome-extra}}.|https://wiki.gnome.org/Apps/Evolution|{{Pkg|evolution}}}}<br />
* {{App|FossaMail|FossaMail is a Mozilla Thunderbird-based mail, news and chat client by the Pale Moon developers.|http://www.fossamail.org|{{AUR|fossamail-bin}}}}<br />
* {{App|Geary|Simple desktop mail client built in [[Wikipedia:Vala (programming language)|Vala]].|https://wiki.gnome.org/Apps/Geary|{{Pkg|geary}}}}<br />
* {{App|[[Wikipedia:Kmail|Kmail]]|Mature and feature-rich email client. Part of {{Grp|kdepim}}.|http://kde.org/applications/internet/kmail/|{{Pkg|kmail}}}}<br />
* {{App|Manitou Mail|Database-driven email system.|http://www.manitou-mail.org/|{{AUR|manitou-mdx}}{{Broken package link|{{aur-mirror|manitou-mdx}}}} {{AUR|manitou-ui}}{{Broken package link|{{aur-mirror|manitou-ui}}}}}}<br />
* {{App|N1|A new mail client, built on the modern web and designed to be extended.|https://www.nylas.com/N1/|{{AUR|n1}}}}<br />
* {{App|Roundcubemail|Browser-based multilingual IMAP client with a native application-like user interface.|http://roundcube.net/|{{Pkg|roundcubemail}}}}<br />
* {{App|[[Wikipedia:Sylpheed|Sylpheed]]|Lightweight and user-friendly GTK+ email client.|http://sylpheed.sraoss.jp/en/|{{Pkg|sylpheed}}}}<br />
* {{App|[[Thunderbird]]|Feature-rich email client from Mozilla written in GTK+.|http://www.mozilla.org/thunderbird/|{{Pkg|thunderbird}}}}<br />
* {{App|Trojitá|Qt IMAP email client. Only supports one IMAP account.|http://trojita.flaska.net/|{{Pkg|trojita}}}}<br />
<br />
==== Instant messaging ====<br />
<br />
See also [[Wikipedia:Comparison of instant messaging protocols]].<br />
<br />
This section lists all software with [[Wikipedia:Instant messaging|instant messaging]] support. Particularly, that are client and server applications.<br />
<br />
===== IRC clients =====<br />
<br />
See also [[Wikipedia:Comparison of Internet Relay Chat clients]].<br />
<br />
{{Note|Most web browsers and many IM clients also support IRC.}}<br />
<br />
====== Console ======<br />
<br />
* {{App|[[Wikipedia:BitchX|BitchX]]|Console-based IRC client developed from the popular [[Wikipedia:ircII|ircII]].|http://www.bitchx.org/|{{AUR|bitchx-git}}}}<br />
* {{App|ERC|Powerful, modular, and extensible IRC client for [[Emacs]].|http://savannah.gnu.org/projects/erc/|included with {{Pkg|emacs}}}}<br />
* {{App|[[Wikipedia:Ii (IRC client)|ii]]|Featherweight IRC client, literally {{ic|tail -f}} the conversation and {{ic|echo}} back your replies to a file.|http://tools.suckless.org/ii|{{AUR|ii}}}}<br />
* {{App|Ircfs|File system interface to IRC written in [http://limbo.cat-v.org Limbo].|http://www.ueber.net/code/r/ircfs|{{AUR?|ircfs}}}}<br />
* {{App|[[Irssi]]|Highly-configurable ncurses-based IRC client.|http://irssi.org/|{{Pkg|irssi}}}}<br />
* {{App|ScrollZ|Advanced IRC client based on [[Wikipedia:ircII|ircII]].|http://www.scrollz.info/|{{AUR|scrollz}}}}<br />
* {{App|sic|Extremely simple IRC client, similar to [[Wikipedia:Ii (IRC client)|ii]].|http://tools.suckless.org/sic|{{AUR|sic}}}}<br />
* {{App|[[Wikipedia:WeeChat|WeeChat]]|Modular, lightweight ncurses-based IRC client.|http://weechat.org/|{{Pkg|weechat}}}}<br />
<br />
====== Graphical ======<br />
<br />
* {{App|HexChat|Fork of XChat for Linux and Windows.|http://hexchat.github.io/|{{Pkg|hexchat}}}}<br />
* {{App|[[Wikipedia:Konversation|Konversation]]|Qt-based IRC client for the KDE desktop.|http://konversation.kde.org/|{{Pkg|konversation}}}}<br />
* {{App|[[Wikipedia:KVIrc|KVIrc]]|Qt-based IRC client featuring extensive themes support.|http://kvirc.net/|{{Pkg|kvirc}}}}<br />
* {{App|Loqui|GTK+ IRC client with only one dependency: [https://wiki.gnome.org/Projects/GNetLibrary GNet].|https://launchpad.net/loqui|{{AUR|loqui}}}}<br />
* {{App|LostIRC|Simple GTK+ IRC client with tab-autocompletion, multiple server support, logging and others.|http://lostirc.sourceforge.net|{{AUR|lostirc}}}}<br />
* {{App|pcw|Frontend for [http://tools.suckless.org/ii ii] that opens a new terminal for each channel.|https://bitbucket.org/emg/pcw|{{AUR|pcw-hg}}{{Broken package link|{{aur-mirror|pcw-hg}}}}}}<br />
* {{App|Polari|Simple IRC client by the GNOME project.|https://wiki.gnome.org/Apps/Polari/|{{Pkg|polari}}}}<br />
* {{App|[[Wikipedia:Quassel IRC|Quassel]]|Modern, cross-platform, distributed IRC client.|http://quassel-irc.org/|{{Pkg|quassel-core}} {{Pkg|quassel-client}}}}<br />
* {{App|[[Wikipedia:Smuxi|Smuxi]]|Cross-platform IRC client for the GNOME desktop inspired by [[Irssi]].|http://smuxi.org/|{{Pkg|smuxi}}}}<br />
* {{App|[[Wikipedia:XChat|XChat]]|GTK-based IRC client that works on both Linux and Windows.|http://xchat.org/|{{Pkg|xchat}}}}<br />
<br />
===== XMPP (Jabber) =====<br />
<br />
See also [[Wikipedia:XMPP]] and [[Wikipedia:Comparison of instant messaging clients#XMPP-related features]].<br />
<br />
====== Console clients ======<br />
<br />
* {{App|Freetalk|Console-based Jabber client.|https://gnu.org/s/freetalk/|{{Pkg|freetalk}}}}<br />
* {{App|jabber.el|Minimal Jabber client for [[Emacs]].|http://emacs-jabber.sourceforge.net/|{{AUR|emacs-jabber}}}}<br />
* {{App|[[Wikipedia:MCabber|MCabber]]|Small Jabber console client, includes features: SSL, PGP, MUC, OTR, and UTF8.|http://mcabber.com/|{{Pkg|mcabber}}}}<br />
* {{App|Profanity|A console based Jabber client inspired by Irssi.|http://www.profanity.im/|{{Pkg|profanity}}}}<br />
* {{App|Poezio|XMPP client with IRC feeling|https://poez.io/|{{AUR|poezio}}}}<br />
* {{App|xmpp-client|A minimalist XMPP client with OTR support.|https://github.com/agl/xmpp-client|{{AUR|go-xmpp-client}}}}<br />
<br />
====== Graphical clients ======<br />
<br />
* {{App|[[Wikipedia:Gajim|Gajim]]|Jabber client written in PyGTK.|https://gajim.org/|{{Pkg|gajim}}}}<br />
* {{App|Jabbim|Jabber client written in PyQt.|http://www.jabbim.com/|{{AUR|jabbim-svn}}{{Broken package link|{{aur-mirror|jabbim-svn}}}}}}<br />
* {{App|[[Wikipedia:Psi (instant messaging client)|Psi]]|Qt-based Jabber client which supports video conferencing (since version 0.13).|http://psi-im.org/|{{Pkg|psi}} {{Pkg|psimedia}}}}<br />
* {{App|Psi+|Enhanced version of the Psi Jabber client with many new [http://psi-plus.com/wiki/en:features#differences_between_psi_beta_version_and_the_official_psi_015-dev_version features].|http://psi-plus.com/|{{AUR|psi-plus-git}}}}<br />
* {{App|[[Wikipedia:Tkabber|Tkabber]]|Easy to hack feature-rich XMPP client by the author of the ejabberd XMPP server.|http://tkabber.jabber.ru/|{{Pkg|tkabber}}}}<br />
<br />
====== Servers ======<br />
<br />
See also [[Wikipedia:Comparison of XMPP server software]].<br />
<br />
* {{App|[[Prosody]]|An XMPP server written in the [http://www.lua.org/ Lua] programming language. Prosody is designed to be lightweight and highly extensible. It is licensed under a permissive [http://prosody.im/source/mit MIT license].|http://prosody.im/|{{Pkg|prosody}}}}<br />
* {{App|Ejabberd|Jabber server written in Erlang|http://www.ejabberd.im/|{{Pkg|ejabberd}}}}<br />
* {{App|[[Jabberd2]]|An XMPP server written in the C language and licensed under the GNU General Public License. It was inspired by jabberd14.|http://jabberd2.org|{{AUR|jabberd2}}{{Broken package link|{{aur-mirror|jabberd2}}}}}}<br />
* {{App|Openfire|An XMPP IM multiplatform server written in Java|http://www.igniterealtime.org/projects/openfire/|{{Pkg|openfire}}}}<br />
<br />
===== Multi-protocol clients =====<br />
<br />
See also [[Wikipedia:Comparison of instant messaging clients]].<br />
<br />
{{Note|All messengers, that support several networks by means of direct connections to them, belong to this section.}}<br />
<br />
Many clients listed here (including Pidgin and all its forks) support multiple IM networks via [[Wikipedia:libpurple|libpurple]]. The number of networks supported by these clients is very large but they (like any multiprotocol clients) usually have very limited or no support for network-specific features.<br />
<br />
====== Console ======<br />
<br />
* {{App|BarnOwl|Ncurses-based chat client with support for the Zephyr, AIM, Jabber, IRC, and Twitter protocols.|http://barnowl.mit.edu/|{{AUR|barnowl}}}}<br />
* {{App|[[Bitlbee]]|IRC client that provides a gateway to popular chat networks (XMPP, MSN, Yahoo, AIM, ICQ and Twitter).|http://bitlbee.org/|{{Pkg|bitlbee}}}}<br />
* {{App|[[Wikipedia:Centericq|CenterIM]]|Fork of CenterICQ, a text mode menu- and window-driven IM interface.|http://centerim.org/|{{Pkg|centerim}}}}<br />
* {{App|[[Pidgin|Finch]]|Ncurses-based chat client that uses libpurple and supports all its protocols.|http://developer.pidgin.im/wiki/Using%20Finch|{{Pkg|finch}}}}<br />
* {{App|[[Wikipedia:naim (software)|naim]]|Ncurses chat client with support for AOL, ICQ, IRC and the Lily CMC.|http://naim.n.ml.org/|{{Pkg|naim}}}}<br />
* {{App|pork|Programmable, ncurses-based AIM and IRC client that mostly looks and feels like ircII.|http://dev.ojnk.net/|{{Pkg|pork}}}}<br />
* {{App|[[Tox]]|Tox is a distributed, secure messenger with audio and video chat capabilities.|https://tox.chat/|see [[Tox]]}}<br />
<br />
====== Graphical ======<br />
<br />
* {{App|Carrier|Pidgin fork providing minor GUI enhancements (formerly FunPidgin).|http://funpidgin.sourceforge.net/|{{AUR|carrier}}{{Broken package link|{{aur-mirror|carrier}}}}}}<br />
* {{App|[[Wikipedia:Emesene|Emesene]]|PyGTK instant messenger for the Windows Live Messenger network, also compatible with Jabber, Facebook and Google Talk.|http://emesene.org/|{{AUR|emesene}}{{Broken package link|{{aur-mirror|emesene}}}}}}<br />
* {{App|[[Wikipedia:Empathy (software)|Empathy]]|GNOME instant messaging client using the [[Wikipedia:Telepathy (software)|Telepathy]] framework.|https://wiki.gnome.org/Apps/Empathy|{{Pkg|empathy}}}}<br />
* {{App|Galaxium Messenger|Messenger application designed for the GNOME desktop.|https://code.google.com/p/galaxium/|{{AUR|galaxium}}{{Broken package link|{{aur-mirror|galaxium}}}}}}<br />
* {{App|[[Wikipedia:Instantbird|Instantbird]]|Multi-protocol chat client using Mozilla's XUL and libpurple.|http://instantbird.com/|{{AUR|instantbird}}}}<br />
* {{App|[[Wikipedia:Kopete|Kopete]]|User-friendly IM supporting AIM, ICQ, Windows Live Messenger, Yahoo, Jabber, Gadu-Gadu, Novell GroupWise Messenger, and other IM networks. Part of {{Grp|kdenetwork}}.|http://kopete.kde.org/|{{Pkg|kdenetwork-kopete}}}}<br />
* {{App|[[KDE#KDE Telepathy|KDE Telepathy]]|KDE instant messaging client using the [[Wikipedia:Telepathy (software)|Telepathy]] framework. Meant as a replacement for Kopete.|http://community.kde.org/Real-Time_Communication_and_Collaboration/|{{Pkg|telepathy-kde-meta}}}}<br />
* {{App|Licq|Instant messaging client for UNIX supporting multiple protocols (currently ICQ, MSN and Jabber).|http://www.licq.org|{{Pkg|licq}}}}<br />
* {{App|Mikutter|An open-source Twitter client using [[GTK+]] and Ruby.|http://mikutter.hachune.net/|{{AUR|mikutter}} {{AUR|mikutter-git}}}}<br />
* {{App|[[Pidgin]]|Multi-protocol instant messaging client.|http://pidgin.im/|{{Pkg|pidgin}} {{AUR|pidgin-light}}}}<br />
* {{App|qutIM|Simple and user-friendly IM supporting ICQ, Jabber, Mail.Ru, IRC and VKontakte messaging.|http://qutim.org/|{{AUR|qutim-stable}}{{Broken package link|{{aur-mirror|qutim-stable}}}}}}<br />
<br />
===== Lan messengers =====<br />
<br />
See also: [[Wikipedia:Comparison_of_LAN_messengers|Comparison of LAN messengers]].<br />
<br />
* {{App|iptux|Lan communication software, compatible with IP Messenger.|https://github.com/iptux-src/iptux|{{AUR|iptux}}}}<br />
<br />
==== VoIP / Softphone ====<br />
<br />
See also [[Wikipedia:Comparison of VoIP software]] and [[Wikipedia:List of SIP software]].<br />
<br />
===== Clients =====<br />
<br />
{{Note| Some [[#Instant messaging|IM clients]] also offer voice and video communication}}<br />
<br />
====== SIP ======<br />
* {{App|[[Wikipedia:Blink (software)|Blink]]|State of the art, easy to use SIP client.|http://www.icanblink.com/|{{AUR|blink-darcs}}{{Broken package link|{{aur-mirror|blink-darcs}}}}}}<br />
* {{App|[[Wikipedia:Ekiga|Ekiga]]|VoIP and video conferencing application with full SIP and H.323 support (formerly known as GNOME Meeting).|http://www.ekiga.org/|{{Pkg|ekiga}}}}<br />
* {{App|[[Wikipedia:Empathy (software)|Empathy]]|GNOME instant messenger client using the Telepathy framework with SIP support (using the Sofia-SIP library).|https://wiki.gnome.org/Apps/Empathy|{{Pkg|empathy}}}}<br />
* {{App|[[Wikipedia:Jitsi|Jitsi]]|Audio/video SIP VoIP phone and instant messenger written in Java (formerly SIP-Communicator).|https://jitsi.org/|{{AUR|jitsi}}}}<br />
* {{App|[[Wikipedia:KPhone|KPhone]]|Qt SIP User Agent with voice, video and text messaging support.|http://sourceforge.net/projects/kphone/|{{AUR?|kphone}}}}<br />
* {{App|[[Wikipedia:Linphone|Linphone]]|VoIP phone application that allows you to to communicate freely with people over the internet, with voice, video, and text instant messaging.|http://www.linphone.org/|{{Pkg|linphone}}}}<br />
* {{App|Minisip|SIP User Agent with focus on security (supports TLS, end-to-end security, SRTP, MIKEY (DH, PSK, PKE)).|http://www.minisip.org/|{{AUR?|minisip}}}}<br />
* {{App|[[Wikipedia:QuteCom|QuteCom]]|Softphone which allows you to make free PC to PC video and voice calls, and to integrate all your IM contacts in one place (formerly Wengo Phone).|http://trac.qutecom.org/|{{AUR|qutecom}}{{Broken package link|{{aur-mirror|qutecom}}}}}}<br />
* {{App|[[Wikipedia:Twinkle (software)|Twinkle]]|Qt softphone for VoIP and IM communication using SIP.|http://www.twinklephone.com/|{{AUR|twinkle}}}}<br />
* {{App|[[Wikipedia:X-Lite|X-Lite]]|Proprietary freeware VoIP soft phone that uses SIP.|http://www.counterpath.net/x-lite|{{AUR|xlite_bin}}}}<br />
* {{App|[[Wikipedia:Zfone|Zfone]]|Softphone application for secure voice communication over the Internet (VoIP), using the ZRTP protocol.|http://zfoneproject.com/|{{AUR|zfone}}{{Broken package link|{{aur-mirror|zfone}}}}}}<br />
<br />
====== IAX2 ======<br />
* {{App|Kiax|Qt-based IAX/2 Softphone.|http://www.forschung-direkt.eu/projects/kiax2/|{{AUR|kiax}}{{Broken package link|{{aur-mirror|kiax}}}}}}<br />
<br />
====== Skype ======<br />
* {{App|[[Skype]]|Popular but proprietary application for high-quality voice communication.|http://www.skype.com/|{{Pkg|skype}}}}<br />
<br />
====== Other ======<br />
* {{App|Hangups|A third-party instant messaging client for Google Hangouts|https://github.com/tdryer/hangups|{{AUR|hangups-git}}}}<br />
* {{App|[[Wikipedia:Mumble (software)|Mumble]]|Voice chat application similar to TeamSpeak.|http://mumble.sourceforge.net/|{{pkg|mumble}}}}<br />
* {{App|[[TeamSpeak]]|Proprietary VoIP application with gamers as its target audience.|http://www.teamspeak.com/|{{Pkg|teamspeak3}}}}<br />
<br />
====== Multi-protocol ======<br />
* {{App|[[Wikipedia:Ring_(software)|Ring]] |Open-source SIP/IAX2 compatible softphone with PulseAudio support (formerly known as SFLphone).|http://ring.cx/|{{AUR|ring-daemon}}}}<br />
<br />
===== Utilities =====<br />
<br />
* {{App|Gladstone|Educational ITU-T G.729 compliant codec with a GStreamer plugin.|https://gitorious.org/gladstone|{{AUR|gladstone-drizztbsd-git}}}}<br />
* {{App|SIPp|Open source test tool and traffic generator for the SIP protocol.|http://sipp.sourceforge.net/|{{AUR|sipp}}}}<br />
* {{App|Sipsak|Small command-line tool for developers and administrators of SIP applications.|http://sipsak.org/|{{AUR|sipsak}}{{Broken package link|{{aur-mirror|sipsak}}}}}}<br />
<br />
==== Speech recognition ====<br />
<br />
See [[Speech recognition#List of speech recognition applications]].<br />
<br />
=== News, RSS, and blogs ===<br />
<br />
==== News aggregators ====<br />
<br />
See also [[Wikipedia:Comparison of feed aggregators]].<br />
<br />
===== Console =====<br />
<br />
* {{App|[[Wikipedia:Canto (news aggregator)|Canto]]|Ncurses RSS aggregator.|http://codezen.org/canto/|{{AUR|canto-next-git}}}}<br />
* {{App|[[Wikipedia:Gnus|Gnus]]|Email, NNTP and RSS client for Emacs.|http://gnus.org/|{{AUR|emacs-gnus-git}}}}<br />
* {{App|Newsbeuter|Ncurses RSS aggregator with layout and keybinding similar to the [[Mutt]] email client.|http://newsbeuter.org|{{Pkg|newsbeuter}}}}<br />
* {{App|Rawdog|"RSS Aggregator Without Delusions Of Grandeur" that parses RSS/CDF/Atom feeds into a static HTML page of articles in chronological order.|http://offog.org/code/rawdog.html|{{Pkg|rawdog}}}}<br />
* {{App|Snownews|Text mode RSS news reader.|http://kiza.kcore.de/software/snownews/|{{Pkg|snownews}}}}<br />
<br />
===== Graphical =====<br />
<br />
* {{App|[[Wikipedia:Kontact#News Feed Aggregator|Akregator]]|News aggregator for KDE, part of {{Grp|kdepim}}.|http://kde.org/applications/internet/akregator/|{{Pkg|akregator}}}}<br />
* {{App|Blam|Simple newsreader for GNOME written in C Sharp.| https://git.gnome.org/browse/blam|{{Pkg|blam}}}}<br />
* {{App|[[Wikipedia:Liferea|Liferea]]|GTK+ news aggregator for online news feeds and weblogs.| http://liferea.sourceforge.net|{{Pkg|liferea}}}}<br />
* {{App|RSS Guard|Very tiny RSS and ATOM news reader developed using Qt framework.|https://bitbucket.org/skunkos/rssguard|{{AUR|rssguard}}}}<br />
* {{App|[[Wikipedia:RSSOwl|RSSOwl]]|Powerful aggregator for RSS and Atom feeds, written in Java using Eclipse Rich Client Platform and SWT as a widget toolkit.|http://boreal.rssowl.org|{{AUR|rssowl}}}}<br />
* {{App|[[Thunderbird]]|Email client from Mozilla which also functions as a pretty nice news aggregator.|http://www.mozilla.org/thunderbird/|{{Pkg|thunderbird}}}}<br />
* {{App|Tickr (formerly News)|GTK-based RSS Reader that displays feeds as a smooth scrolling line on your Desktop, as known from TV stations.|http://newsrssticker.com/|{{AUR|tickr}}{{Broken package link|{{aur-mirror|tickr}}}}}}<br />
* {{App|Urssus|Cross platform GUI news aggregator.|https://code.google.com/p/urssus/|{{AUR|urssus}}}}<br />
* {{App|QuiteRSS|RSS/Atom feed reader written on Qt/С++.|http://quiterss.org/|{{AUR|quiterss}}}}<br />
<br />
==== Podcast clients ====<br />
<br />
* {{App|gPodder|A podcast client and feed aggregator (GTK+ and CLI interface).|http://gpodder.org/|{{AUR|gpodder3}}}}<br />
* {{App|Greg|A command-line podcast aggregator.|https://github.com/manolomartinez/greg|{{AUR|greg-git}}}}<br />
* {{App|Marrie|A simple podcast client that runs on the Command Line Interface.|https://github.com/rafaelmartins/marrie/|{{AUR|marrie-git}}}}<br />
* {{App|PodCastXDL|A simple podcast Downloader for the terminal.|https://github.com/levi0x0/PodCastXDL|{{AUR|podcastxdl-git}}{{Broken package link|{{aur-mirror|podcastxdl-git}}}}}}<br />
* {{App|Vocal|Simple Podcast Client for the Modern Desktop (GTK+).|https://launchpad.net/vocal|{{AUR|vocal-bzr}}}}<br />
<br />
==== Usenet newsreaders & newsgrabbers ====<br />
<br />
Some [[#Email_clients|email clients]] also support NNTP. This section mainly lists NNTP-only client.<br />
<br />
See also: [[Wikipedia:List of Usenet newsreaders]], [[Wikipedia:Comparison of Usenet newsreaders]].<br />
<br />
* {{app|lottanzb|A ''SABnzbd+'' (Usenet binary downloader) GUI front-end written in PyGTK|http://www.lottanzb.org/|{{aur|lottanzb}}}}<br />
* {{app|nn|Alternative more user-friendly(curses-based) Usenet newsreader for UNIX.|http://www.nndev.org/|{{aur|nn}}}}<br />
* {{app|[[NZBGet]]|CLI Utility to grab Usenet binary file using .nzb files.|http://nzbget.sourceforge.net/|{{pkg|nzbget}}}}<br />
* {{app|[[Wikipedia:Pan_(newsreader)|pan]]|A GTK2 Usenet newsreader that's good at both text and binaries.|http://pan.rebelbase.com/|{{aur|pan}}}}<br />
* {{app|[[Wikipedia:slrn|slrn]]|An open source text-based news client.|http://www.slrn.org/|{{pkg|slrn}}}}<br />
* {{app|[[Wikipedia:Tin_(newsreader)|tin]]|A cross-platform threaded NNTP and spool based UseNet newsreader.|http://tin.org/|{{aur|tin}}}}<br />
* {{app|trn|A text-based Threaded Usenet newsreader.|http://trn.sourceforge.net/|{{aur|trn}}}}<br />
* {{app|[[Wikipedia:XPN_(newsreader)|XPN]]|A graphical newsreader use PyGTK.|http://xpn.altervista.org/index-en.html|{{aur|xpn}}{{Broken package link|{{aur-mirror|xpn}}}}}}<br />
* {{app|xrn|Usenet newsreader for X Window System.|http://www.mit.edu/people/jik/software/xrn.html|{{aur|xrn}}}}<br />
<br />
==== Blog software ====<br />
See also [[Wikipedia:Blog software]] and [[Wikipedia:List of content management systems]].<br />
<br />
* {{App|[[Drupal]]|An open source content management platform powering millions of websites and applications. It is built, used, and supported by an active and diverse community of people around the world.|http://drupal.org/|{{Pkg|drupal}}}}<br />
* {{App|[[Ghost]]|Blogging platform written in JavaScript and distributed under the MIT License, designed to simplify the process of online publishing for individual bloggers as well as online publications.|https://ghost.org/|{{AUR|ghost}}}}<br />
* {{App|Hexo|A fast, simple & powerful blog framework, powered by Node.js.|http://hexo.io|{{AUR|nodejs-hexo}}}}<br />
* {{App|[[Jekyll]]|A static blog engine, written in Ruby, which supports Markdown, textile and other formats.|http://jekyllrb.com/|{{AUR|ruby-jekyll}}}}<br />
* {{App|Nanoblogger|A small weblog engine written in Bash for the command line. It uses common UNIX tools such as cat, grep, and sed to create static HTML content. It is not mantained anymore.|http://nanoblogger.sourceforge.net/|{{Pkg|nanoblogger}}}}<br />
* {{App|Nikola|A static site generator written in Python, with incremental rebuilds and multiple markup formats.|https://getnikola.com/|{{AUR|python-nikola}}}}<br />
* {{app|Pelican|A static site generator, powered by Python.|http://docs.getpelican.com/en/3.5.0/|{{Pkg|pelican}}}}<br />
* {{App|[[Wordpress]]|An easy to setup and administer FLOSS content management system featuring a strong and vibrant community with thousands of plugins and themes.|http://wordpress.org/|{{Pkg|wordpress}}}}<br />
<br />
==== Microblogging clients ====<br />
<br />
See also [[Wikipedia:List of Twitter services and applications]].<br />
<br />
* {{App|Birdie|A beautiful Twitter client for GNU/Linux, currently [http://www.birdieapp.eu/2014/10/26/birdie-2-status.html under active development].|http://birdieapp.github.io/ |{{AUR|birdie}}{{Broken package link|{{aur-mirror|birdie}}}}}}<br />
* {{App|Choqok|Microblogging client for KDE that supports Twitter.com, Pump.io, GNU social and opendesktop.org services.|http://choqok.gnufolks.org/|{{Pkg|choqok}}}}<br />
* {{App|Corebird|Native Gtk+ Twitter client for the Linux desktop.|http://corebird.baedert.org/|{{AUR|corebird-git}}}}<br />
* {{App|[[Wikipedia:Gwibber|Gwibber]]|GTK-based microblogging client with support for Facebook, Identi.ca, Twitter, Flickr, Foursquare, Sina and Sohu.|http://gwibber.com/|{{AUR|gwibber}}{{Broken package link|{{aur-mirror|gwibber}}}}}}<br />
* {{App|[[Wikipedia:Hotot (program)|Hotot]]|Lightweight and open source microblogging client with support for Twitter and Identi.ca and integration with various image sharing services and URL shorteners [http://hotot.org/ (discontinued)].|http://hotot.org|{{AUR|hotot}}{{Broken package link|{{aur-mirror|hotot}}}}}}<br />
* {{App|Pino|Simple and fast client for Twitter and Identi.ca written in [[Wikipedia:Vala (programming language)|Vala]].|http://pino-app.appspot.com/|{{AUR|pino}}{{Broken package link|{{aur-mirror|pino}}}}}}<br />
* {{App|Polly|Linux Twitter client designed for multiple columns of multiple accounts.|https://launchpad.net/polly/|{{AUR|polly}}}}<br />
* {{App|Pumpa|Pump.io client written in C++ and Qt.|https://pumpa.branchable.com/|{{AUR|pumpa-git}}}}<br />
* {{App|Qwit|Cross-platform client for Twitter using the Qt toolkit.|http://code.google.com/p/qwit/|{{AUR|qwit}}{{Broken package link|{{aur-mirror|qwit}}}}}}<br />
* {{App|ttytter|Easily scriptable twitter client written in Perl.|http://www.floodgap.com/software/ttytter/|{{Pkg|ttytter}}}}<br />
* {{App|Turpial|Multi-interface Twitter client written in Python.|http://turpial.org.ve/|{{AUR|turpial-git}}}}<br />
* {{App|turses|Twitter client for the console based off {{AUR|tyrs}}{{Broken package link|{{aur-mirror|tyrs}}}} with major improvements.|http://turses.rtfd.org/|{{AUR|turses}}}}<br />
<br />
=== Pastebin clients ===<br />
<br />
See also [[Wikipedia:Pastebin]].<br />
<br />
Pastebin services are often used to quote text or images while collaborating and troubleshooting. Pastebin clients provide a convenient way to post from the command line.<br />
<br />
{{Tip| You can access the [https://ptpb.pw ptpb.pw], [http://sprunge.us/ sprunge.us] and [http://ix.io/ ix.io] pastebins using curl. For example pipe the output of a command to ptpb: {{bc|''command'' <nowiki>| curl -F c=@- https://ptpb.pw </nowiki>}} or upload a file (including images): {{bc|<nowiki>curl -F c=@- https://ptpb.pw < </nowiki>''file''}}}}<br />
<br />
{{Note| [http://pastebin.com/ pastebin.com] is blocked for some people and has a history of annoying issues (javascript, adverts, poor formatting, etc).}}<br />
<br />
* {{App|codepad-git|A [http://www.codepad.org codepad.org] pastebin client written in python.|https://github.com/kevr/codepad|{{AUR|codepad-git}}{{Broken package link|{{aur-mirror|codepad-git}}}}}}<br />
* {{App|Elmer|Pastebin client similar to wgetpaste and curlpaste, except written in Perl and usable with wget or curl. Servers: [http://codepad.org/ codepad.org], [http://rafb.me/ rafb.me], [http://sprunge.us/ sprunge.us].|https://github.com/sudokode/elmer|{{AUR|elmer}}}}<br />
* {{App|Fb-client|Client for the [http://paste.xinu.at/ paste.xinu.at] pastebin.|http://paste.xinu.at|{{Pkg|fb-client}}}}<br />
* {{App|Gist|Command-line interface for the [https://gist.github.com/ gist.github.com] pastebin service.|http://github.com/defunkt/gist|{{Pkg|gist}}}}<br />
* {{App|Haste|Universal pastebin tool, written in Haskell. Servers: [http://hpaste.org/ hpaste.org], [http://paste2.org/ paste2.org], [http://pastebin.com/ pastebin.com] and others.|http://hackage.haskell.org/package/haste|{{AUR|haste}}{{Broken package link|{{aur-mirror|haste}}}}}}<br />
* {{App|Hg-paste|Pastebin extension for Mercurial which can send diffs to various pastebin websites for easy sharing. Servers: [http://dpaste.com/ dpaste.com] and [http://dpaste.org/ dpaste.org].|http://bitbucket.org/sjl/hg-paste|{{AUR|hg-paste}}{{Broken package link|{{aur-mirror|hg-paste}}}}}}<br />
* {{App|imgur|A CLI client which can upload image to [http://imgur.com imgur.com] image sharing service.|http://imgur.com/apps|{{AUR|imgur}}}}<br />
* {{App|Ix|Client for the ix.io pastebin.|http://ix.io|{{AUR|ix}}}}<br />
* {{App|Npaste-client|Client for the [http://npaste.de/ npaste.de] pastebin.|http://npaste.de|{{AUR|npaste-client}}{{Broken package link|{{aur-mirror|npaste-client}}}}}}<br />
* {{App|Pastebinit|Really small Python script that acts as a Pastebin client. Servers: [http://pastie.org/ pastie.org], [http://paste.kde.org/ paste.kde.org], [http://paste.debian.net/ paste.debian.net], [http://paste.ubuntu.com/ paste.ubuntu.com] and others (for a full list see {{ic|pastebinit -l}}).|http://launchpad.net/pastebinit|{{Pkg|pastebinit}}}}<br />
* {{App|paste-binouse|C++ standalone pastebin web server|https://github.com/abique/paste-binouse|{{AUR|paste-binouse}}{{Broken package link|{{aur-mirror|paste-binouse}}}}}}<br />
* {{App|pb|A very fast, lightweight pastebin and general file uploader written in python with a ton of features.|https://ptpb.pw|{{AUR|ptpb}}{{Broken package link|{{aur-mirror|ptpb}}}}}}<br />
* {{App|ruby-haste|Client for [http://hastebin.com/ hastebin.com].|https://github.com/seejohnrun/haste-client|{{AUR|ruby-haste}} {{AUR|ruby-haste-git}}}}<br />
* {{App|Uppity|The pastebin client with an attitude.|https://github.com/Kiwi/Uppity|{{AUR|uppity-git}}}}<br />
* {{App|Vim-gist|Vim script for [https://gist.github.com/ gist.github.com].| http://www.vim.org/scripts/script.php?script_id&#61;2423 |{{AUR|vim-gist}}{{Broken package link|{{aur-mirror|vim-gist}}}}}}<br />
* {{App|Vim-paster|Vim plugin to paste to any pastebin service using curl.|http://eugeneciurana.com/site.php?page&#61;tools|{{AUR|vim-paster}}{{Broken package link|{{aur-mirror|vim-paster}}}}}}<br />
* {{App|Wgetpaste|Bash script that automates pasting to a number of pastebin services. Servers: [http://pastebin.ca/ pastebin.ca], [http://codepad.org/ codepad.org], [http://dpaste.com/ dpaste.com] and [http://pastebin.osuosl.org/ pastebin.osuosl.org].|http://wgetpaste.zlin.dk/|{{Pkg|wgetpaste}}}}<br />
<br />
=== Bitcoin ===<br />
<br />
See the main article: [[Bitcoin]].<br />
<br />
* {{App|Armory|Bitcoin client with features such as support for multiple wallets, importing keys and backups.|https://github.com/etotheipi/BitcoinArmory|{{AUR|armory-git}}}}<br />
* {{App|[[Bitcoin]]|Official tool to manage Bitcoins, a P2P currency.|http://bitcoin.org/|{{Pkg|bitcoin-daemon}} {{Pkg|bitcoin-qt}}}}<br />
* {{App|Electrum|An easy to use Bitcoin client.|http://electrum.org/|{{Pkg|electrum}}}}<br />
* {{App|MultiBit|A lightweight Bitcoin desktop client powered by the BitCoinJ library.|https://multibit.org/|{{Pkg|multibit}}}}<br />
<br />
=== Surveying ===<br />
<br />
* {{App|[[Wikipedia:LimeSurvey|LimeSurvey]]|An open source on-line survey application. As a web server-based software it enables users to develop and publish on-line surveys, and collect responses, with no programming.|https://www.limesurvey.org/|{{AUR|limesurvey}}}}</div>Ygyfygyhttps://wiki.archlinux.org/index.php?title=Network_configuration/Wireless&diff=417389Network configuration/Wireless2016-01-27T14:32:55Z<p>Ygyfygy: /* NetworkManager */ Fixed a typo.</p>
<hr />
<div>[[Category:Wireless networking]]<br />
[[cs:Wireless network configuration]]<br />
[[de:(W)LAN und Arch Linux]]<br />
[[el:Wireless network configuration]]<br />
[[es:Wireless network configuration]]<br />
[[fr:Wifi]]<br />
[[it:Wireless network configuration]]<br />
[[ja:ワイヤレス設定]]<br />
[[nl:Wireless network configuration]]<br />
[[ro:Wireless]]<br />
[[ru:Wireless network configuration]]<br />
[[th:Wireless network configuration]]<br />
[[tr:Kablosuz bağlantı]]<br />
[[zh-cn:Wireless network configuration]]<br />
{{Related articles start}}<br />
{{Related|Network configuration}}<br />
{{Related|Software access point}}<br />
{{Related|Ad-hoc networking}}<br />
{{Related|Internet sharing}}<br />
{{Related articles end}}<br />
<br />
Configuring wireless 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, but often have to be installed explicitly), and to 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 />
== Device driver ==<br />
<br />
The default Arch Linux kernel is ''modular'', meaning many of the drivers for machine hardware reside on the hard drive and are available as [[Kernel modules|modules]]. At boot, [[udev]] takes an inventory of your hardware and loads appropriate modules (drivers) for your corresponding hardware, which will in turn allow creation of a network ''interface''.<br />
<br />
Some wireless chipsets also require firmware, in addition to a corresponding driver. Many firmware images are provided by the {{Pkg|linux-firmware}} package which is installed by default, however, proprietary firmware images are not included and have to be installed separately. This is described in [[#Installing driver/firmware]].<br />
<br />
{{Note|Udev is not perfect. If the proper module is not loaded by udev on boot, simply [[Kernel modules#Loading|load it manually]]. Note also that udev may occasionally load more than one driver for a device, and the resulting conflict will prevent successful configuration. Make sure to [[Kernel modules#Blacklisting|blacklist]] the unwanted module.}}<br />
<br />
{{Tip|Though not strictly required, it's a good idea to first install user-space tools mentioned in [[#Manual setup]], especially when some problem should appear.}}<br />
<br />
=== Check the driver status ===<br />
<br />
To check if the driver for your card has been loaded, check the output of the {{ic|lspci -k}} or {{ic|lsusb -v}} command, depending on if the card is connected by PCI(e) or USB. You should see that some kernel driver is in use, for example:<br />
<br />
{{hc|$ lspci -k|<nowiki><br />
06:00.0 Network controller: Intel Corporation WiFi Link 5100<br />
Subsystem: Intel Corporation WiFi Link 5100 AGN<br />
Kernel driver in use: iwlwifi<br />
Kernel modules: iwlwifi<br />
</nowiki>}}<br />
<br />
{{Note|If the card is a USB device, running {{ic|<nowiki>dmesg | grep usbcore</nowiki>}} should give something like {{ic|usbcore: registered new interface driver rtl8187}} as output.}}<br />
<br />
Also check the output of {{ic|ip link}} command to see if a wireless interface ([[Network configuration#Device names|usually]] it starts with the letter "w", e.g. {{ic|wlp2s1}}) was created. Then bring the interface up with {{ic|ip link set ''interface'' up}}. For example, assuming the interface is {{ic|wlan0}}:<br />
<br />
# ip link set wlan0 up<br />
<br />
If you get this error message: {{ic|SIOCSIFFLAGS: No such file or directory}}, it most certainly means that your wireless chipset requires a firmware to function.<br />
<br />
Check kernel messages for firmware being loaded:<br />
<br />
{{hc|<nowiki>$ dmesg | grep firmware</nowiki>|<nowiki><br />
[ 7.148259] iwlwifi 0000:02:00.0: loaded firmware version 39.30.4.1 build 35138 op_mode iwldvm<br />
</nowiki>}}<br />
<br />
If there is no relevant output, check the messages for the full output for the module you identified earlier ({{ic|iwlwifi}} in this example) to identify the relevant message or further issues:<br />
<br />
{{hc|<nowiki>$ dmesg | grep iwlwifi</nowiki>|<nowiki><br />
[ 12.342694] iwlwifi 0000:02:00.0: irq 44 for MSI/MSI-X<br />
[ 12.353466] iwlwifi 0000:02:00.0: loaded firmware version 39.31.5.1 build 35138 op_mode iwldvm<br />
[ 12.430317] iwlwifi 0000:02:00.0: CONFIG_IWLWIFI_DEBUG disabled<br />
...<br />
[ 12.430341] iwlwifi 0000:02:00.0: Detected Intel(R) Corporation WiFi Link 5100 AGN, REV=0x6B<br />
</nowiki>}}<br />
<br />
If the kernel module is successfully loaded and the interface is up, you can skip the next section.<br />
<br />
=== Installing driver/firmware ===<br />
<br />
Check the following lists to discover if your card is supported:<br />
<br />
* See the table of [https://wireless.wiki.kernel.org/en/users/drivers existing Linux wireless drivers] and follow to the specific driver's page, which contains a list of supported devices. There is also a [https://wikidevi.com/wiki/List_of_Wi-Fi_Device_IDs_in_Linux List of Wi-Fi Device IDs in Linux].<br />
* The [https://help.ubuntu.com/community/WifiDocs/WirelessCardsSupported Ubuntu Wiki] has a good list of wireless cards and whether or not they are supported either in the Linux kernel or by a user-space driver (includes driver name).<br />
* [http://linux-wless.passys.nl/ Linux Wireless Support] and The Linux Questions' [http://www.linuxquestions.org/hcl/index.php?cat=10 Hardware Compatibility List] (HCL) also have a good database of kernel-friendly hardware.<br />
<br />
Note that some vendors ship products that may contain different chip sets, even if the product identifier is the same. Only the usb-id (for USB devices) or pci-id (for PCI devices) is authoritative.<br />
<br />
If your wireless card is listed above, follow the [[#Troubleshooting drivers and firmware]] subsection of this page, which contains information about installing drivers and firmware of some specific wireless cards. Then [[#Check the driver status|check the driver status]] again.<br />
<br />
If your wireless card is not listed above, it is likely supported only under Windows (some Broadcom, 3com, etc). For these, you can try to use [[#ndiswrapper]].<br />
<br />
== Wireless management ==<br />
<br />
Assuming that your drivers are installed and working properly, you will need to choose a method of managing your wireless connections. The following subsections will help you decide.<br />
<br />
Procedure and tools required will depend on several factors:<br />
* The desired nature of configuration management; from a completely manual command line procedure to an automated solution with graphical front-ends.<br />
* The encryption type (or lack thereof) which protects the wireless network.<br />
* The need for network profiles, if the computer will frequently change networks (such as a laptop).<br />
<br />
{{Tip|<br />
* Whatever is your choice, '''you should try to connect using the manual method first'''. This will help you understand the different steps that are required and troubleshoot possible problems.<br />
* If possible (e.g. if you manage your Wi-Fi access point), try connecting with no encryption, to check that everything works. Then try using encryption, either WEP (simple to configure, but crackable in a matter of seconds), WPA or WPA2.<br />
* If you anticipate to connect the machine to different wireless networks over time, a tool which provides its own connection management may be easier to handle.<br />
}}<br />
<br />
The following table shows the different methods that can be used to activate and manage a wireless 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 />
<br />
{| class="wikitable"<br />
! Management method || Interface activation || Wireless connection management <br>(/=alternatives) || Assigning IP address <br>(/=alternatives) <br />
|-<br />
| [[#Manual setup|Manually managed]], <br>with no or WEP encryption || [[Core utilities#ip|ip]] || {{Pkg|iw}} / [https://www.archlinux.org/packages/?name=wireless_tools iwconfig] || [[Core utilities#ip|ip]] / [[dhcpcd]] / {{Pkg|dhclient}} / [[networkd]]<br />
|-<br />
| [[#Manual setup|Manually managed]], <br>with WPA or WPA2 PSK encryption || [[Core utilities#ip|ip]] || {{Pkg|iw}} / [https://www.archlinux.org/packages/?name=wireless_tools iwconfig] + [[wpa_supplicant]] || [[Core utilities#ip|ip]] / [[dhcpcd]] / {{Pkg|dhclient}} / [[networkd]]<br />
|-<br />
| [[#Automatic setup|Automatically managed]], <br>with network profiles support || colspan="3" align="center" | [[netctl]], [[Wicd]], [[NetworkManager]], etc.<br><br />
These tools pull in the required dependencies from the list of packages in the manual method.<br />
|}<br />
<br />
=== Manual setup ===<br />
<br />
Just like other network interfaces, the wireless ones are controlled with ''ip'' from the {{Pkg|iproute2}} package.<br />
<br />
You will need to install a basic set of tools for managing the wireless connection. Either:<br />
:*{{Pkg|iw}} - only supports the nl80211 (netlink) standard. It does not support the older WEXT (Wireless EXTentions) standard. If ''iw'' does not see your card, this may be the reason.<br />
:or<br />
:*{{Pkg|wireless_tools}} - currently deprecated, but still widely supported. Use this for modules using the WEXT standard.<br />
<br />
For WPA/WPA2 encryption, you will also need:<br />
:*{{Pkg|wpa_supplicant}} - works with both WEXT and nl80211.<br />
<br />
The table below gives an overview of comparable commands for ''iw'' and ''wireless_tools'' (see [http://wireless.kernel.org/en/users/Documentation/iw/replace-iwconfig iw replaces iwconfig] for more examples). These user-space tools work extremely well and allow complete manual control of wireless connection.<br />
<br />
{{Note|<br />
* {{Pkg|iw}} and {{Pkg|wpa_supplicant}} are provided on the installation medium.<br />
* Examples in this section assume that your wireless device interface is {{ic|wlan0}} and that you are connecting to {{ic|''your_essid''}} wifi access point. Replace both accordingly. To find your wireless device interface, see [[#Getting some useful information]].<br />
* Note that most of the commands have to be executed with [[Users and groups|root permissions]]. Executed with normal user rights, some of the commands (e.g. ''iwlist''), will exit without error but not produce the correct output either, which can be confusing.<br />
}} <br />
<br />
{| class="wikitable"<br />
! ''iw'' command<br />
! ''wireless_tools'' command<br />
! Description<br />
|-<br />
| iw dev wlan0 link<br />
| iwconfig wlan0<br />
| Getting link status.<br />
|-<br />
| iw dev wlan0 scan<br />
| iwlist wlan0 scan<br />
| Scanning for available access points.<br />
|-<br />
| iw dev wlan0 set type ibss<br />
| iwconfig wlan0 mode ad-hoc<br />
| Setting the operation mode to ''ad-hoc''.<br />
|-<br />
| iw dev wlan0 connect ''your_essid''<br />
| iwconfig wlan0 essid ''your_essid''<br />
| Connecting to open network.<br />
|-<br />
| iw dev wlan0 connect ''your_essid'' 2432<br />
| iwconfig wlan0 essid ''your_essid'' freq 2432M<br />
| Connecting to open network specifying channel.<br />
|-<br />
| iw dev wlan0 connect ''your_essid'' key 0:''your_key''<br />
| iwconfig wlan0 essid ''your_essid'' key ''your_key''<br />
| Connecting to WEP encrypted network using hexadecimal key.<br />
|-<br />
| iw dev wlan0 connect ''your_essid'' key 0:''your_key''<br />
| iwconfig wlan0 essid ''your_essid'' key s:''your_key''<br />
| Connecting to WEP encrypted network using ASCII key.<br />
|-<br />
| iw dev wlan0 set power_save on<br />
| iwconfig wlan0 power on<br />
| Enabling power save.<br />
|}<br />
<br />
{{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 try to directly activate their wireless network from step [[#Association]].}}<br />
<br />
==== Getting some useful information ====<br />
<br />
{{Tip|See [http://wireless.kernel.org/en/users/Documentation/iw official documentation] of the ''iw'' tool for more examples.}}<br />
<br />
* First you need to find the name of wireless interface. You can do it with following command:<br />
<br />
{{hc|$ iw dev|<br />
phy#0<br />
Interface '''wlan0'''<br />
ifindex 3<br />
wdev 0x1<br />
addr 12:34:56:78:9a:bc<br />
type managed<br />
channel 1 (2412 MHz), width: 40 MHz, center1: 2422 MHz<br />
}}<br />
<br />
* To check link status, use following command. Example output when not connected to an AP:<br />
<br />
{{hc|$ iw dev wlan0 link|<br />
Not connected.<br />
}}<br />
<br />
When connected to an AP, you will see something like:<br />
<br />
{{hc|$ iw dev wlan0 link|<br />
Connected to 12:34:56:78:9a:bc (on wlan0)<br />
SSID: MyESSID<br />
freq: 2412<br />
RX: 33016518 bytes (152703 packets)<br />
TX: 2024638 bytes (11477 packets)<br />
signal: -53 dBm<br />
tx bitrate: 150.0 MBit/s MCS 7 40MHz short GI<br />
<br />
bss flags: short-preamble short-slot-time<br />
dtim period: 1<br />
beacon int: 100<br />
}}<br />
<br />
* You can get statistic information, such as the amount of tx/rx bytes, signal strength etc., with following command:<br />
<br />
{{hc|$ iw dev wlan0 station dump|<br />
Station 12:34:56:78:9a:bc (on wlan0)<br />
inactive time: 1450 ms<br />
rx bytes: 24668671<br />
rx packets: 114373<br />
tx bytes: 1606991<br />
tx packets: 8557<br />
tx retries: 623<br />
tx failed: 1425<br />
signal: -52 dBm<br />
signal avg: -53 dBm<br />
tx bitrate: 150.0 MBit/s MCS 7 40MHz short GI<br />
authorized: yes<br />
authenticated: yes<br />
preamble: long<br />
WMM/WME: yes<br />
MFP: no<br />
TDLS peer: no<br />
}}<br />
<br />
==== Interface activation ====<br />
<br />
{{Tip|Usually this step is not required.}}<br />
<br />
Some cards require that the kernel interface be activated before you can use ''iw'' or ''wireless_tools'':<br />
<br />
# ip link set wlan0 up<br />
<br />
{{Note|If you get errors like {{ic|RTNETLINK answers: Operation not possible due to RF-kill}}, make sure that hardware switch is ''on''. See [[#Rfkill caveat]] for details.}}<br />
<br />
To verify that the interface is up, inspect the output of the following command:<br />
<br />
{{hc|# ip link show wlan0|<br />
3: wlan0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state DOWN mode DORMANT group default qlen 1000<br />
link/ether 12:34:56:78:9a:bc brd ff:ff:ff:ff:ff:ff<br />
}}<br />
<br />
The {{ic|UP}} in {{ic|<BROADCAST,MULTICAST,UP,LOWER_UP>}} is what indicates the interface is up, not the later {{ic|state DOWN}}.<br />
<br />
==== Access point discovery ====<br />
<br />
See what access points are available:<br />
<br />
# iw dev wlan0 scan | less<br />
<br />
{{Note|If it displays {{ic|Interface does not support scanning}}, then you probably forgot to install the firmware. In some cases this message is also displayed when not running ''iw'' as root.}}<br />
<br />
{{Tip|Depending on your location, you might need to set the correct [[#Respecting the regulatory domain|regulatory domain]] in order to see all available networks.}}<br />
<br />
The important points to check:<br />
* '''SSID:''' the name of the network.<br />
* '''Signal:''' is reported in a wireless power ratio in dbm (e.g. from -100 to 0). The closer the negative value gets to zero, the better the signal. Observing the reported power on a good quality link and a bad one should give an idea about the individual range. <br />
* '''Security:''' it is not reported directly, check the line starting with {{ic|capability}}. If there is {{ic|Privacy}}, for example {{ic|capability: ESS Privacy ShortSlotTime (0x0411)}}, then the network is protected somehow.<br />
** If you see an {{ic|RSN}} information block, then the network is protected by [[Wikipedia:IEEE 802.11i-2004|Robust Security Network]] protocol, also known as WPA2.<br />
** If you see an {{ic|WPA}} information block, then the network is protected by [[Wikipedia:Wi-Fi Protected Access|Wi-Fi Protected Access]] protocol.<br />
** In the {{ic|RSN}} and {{ic|WPA}} blocks you may find the following information:<br />
*** '''Group cipher:''' value in TKIP, CCMP, both, others.<br />
*** '''Pairwise ciphers:''' value in TKIP, CCMP, both, others. Not necessarily the same value than Group cipher.<br />
*** '''Authentication suites:''' value in PSK, 802.1x, others. For home router, you will usually find PSK (''i.e.'' passphrase). In universities, you are more likely to find 802.1x suite which requires login and password. Then you will need to know which key management is in use (e.g. EAP), and what encapsulation it uses (e.g. PEAP). Find more details at [[Wikipedia:Authentication protocol]] and the sub-articles.<br />
** If you do not see neither {{ic|RSN}} nor {{ic|WPA}} blocks but there is {{ic|Privacy}}, then WEP is used.<br />
<br />
==== Operating mode ====<br />
<br />
You might need to set the proper operating mode of the wireless card. More specifically, if you are going to connect an [[Ad-hoc networking|ad-hoc network]], you need to set the operating mode to {{ic|ibss}}:<br />
<br />
# iw dev wlan0 set type ibss<br />
<br />
{{Note|Changing the operating mode on some cards might require the wireless interface to be ''down'' ({{ic|ip link set wlan0 down}}).}}<br />
<br />
==== Association ====<br />
<br />
Depending on the encryption, you need to associate your wireless device with the access point to use and pass the encryption key:<br />
<br />
* '''No encryption''' {{bc|# iw dev wlan0 connect "''your_essid''"}}<br />
* '''WEP'''<br />
** using a hexadecimal or ASCII key (the format is distinguished automatically, because a WEP key has a fixed length): {{bc|# iw dev wlan0 connect "''your_essid''" key 0:''your_key''}}<br />
** using a hexadecimal or ASCII key, specifying the third set up key as default (keys are counted from zero, four are possible): {{bc|# iw dev wlan0 connect "''your_essid''" key d:2:''your_key''}}<br />
* '''WPA/WPA2''' According to what you got from [[#Access point discovery]], issue this command: {{bc|# wpa_supplicant -D nl80211,wext -i wlan0 -c <(wpa_passphrase "''your_SSID''" "''your_key''")}}<br />
<br />
If this does not work, you may need to adjust the options. <br />
If connected successfully, continue in a new terminal (or quit {{ic|wpa_supplicant}} with {{ic|Ctrl+c}} and add the {{ic|-B}} switch to the above command to run it in the background). [[WPA supplicant]] contains more information on options and on how to create a permanent configuration file for the wireless access point.<br />
<br />
Regardless of the method used, you can check if you have associated successfully:<br />
<br />
# iw dev wlan0 link<br />
<br />
==== Getting an IP address ====<br />
<br />
{{Note|See [[Network configuration#Configure the IP address]] for more examples. This part is identical.}}<br />
<br />
Finally, provide an IP address to the network interface. Simple examples are:<br />
<br />
# dhcpcd wlan0<br />
<br />
for DHCP, or<br />
<br />
# ip addr add 192.168.0.2/24 dev wlan0<br />
# ip route add default via 192.168.0.1<br />
<br />
for static IP addressing.<br />
<br />
{{Tip|[[dhcpcd]] contains a [[dhcpcd#10-wpa_supplicant|hook]] (enabled by default) to automatically launch [[WPA supplicant]] on wireless interfaces. In most cases, you do not need to create any [[#Manual wireless connection at boot using systemd and dhcpcd|custom service]], just enable {{ic|dhcpcd@''interface''.service}}.}}<br />
<br />
==== Example ====<br />
<br />
Here is a complete example of setting up a wireless network with WPA supplicant and DHCP.<br />
<br />
# ip link set dev wlp13s1 up<br />
# wpa_supplicant -B -i wlp13s1 -c /etc/wpa_supplicant/wpa_supplicant.conf<br />
# dhcpcd wlp13s1<br />
<br />
And then to close the connection, you can simply disable the interface:<br />
<br />
# ip link set dev wlp13s1 down<br />
<br />
For a static IP, you would replace the dhcpcd command with<br />
<br />
# ip addr add 192.168.0.10/24 broadcast 192.168.0.255 dev wlp13s1<br />
# ip route add default via 192.168.0.1<br />
<br />
And before disabling the interface you would first flush the IP address and gateway:<br />
<br />
# ip addr flush dev wlp13s1<br />
# ip route flush dev wlp13s1<br />
<br />
=== Automatic setup ===<br />
<br />
There are many solutions to choose from, but remember that all of them are mutually exclusive; you should not run two daemons simultaneously. The following table compares the different connection managers, additional notes are in subsections below.<br />
<br />
{| class="wikitable"<br />
! Connection manager || Network <br>profiles <br>support || Roaming <br>(auto connect dropped <br>or changed location) || [[Wikipedia:Point-to-Point Protocol|PPP]] support <br>(e.g. 3G modem) || Official <br>GUI || Console tools<br />
|-<br />
| [[Connman]] || Yes || Yes || Yes || No || {{ic|connmanctl}}<br />
|-<br />
| [[netctl]] || Yes || Yes || Yes || No || {{ic|netctl}},{{ic|wifi-menu}}<br />
|-<br />
| [[NetworkManager]] || Yes || Yes || Yes || Yes || {{ic|nmcli}},{{ic|nmtui}}<br />
|-<br />
| [[Wicd]] || Yes || Yes || No || Yes || {{ic|wicd-curses}}<br />
|-<br />
| [[Wifi Radar]] || Yes || ? || ? || Yes || {{ic|wifi-radar}}<br />
|}<br />
<br />
==== Connman ====<br />
<br />
''ConnMan'' is an alternative to ''NetworkManager'' and ''Wicd'', designed to be light on resources making it ideal for netbooks, and other mobile devices. It is modular in design takes advandage of the dbus API and provides proper abstraction on top of ''wpa_supplicant''. <br />
<br />
See [[Connman]].<br />
<br />
==== netctl ====<br />
<br />
''netctl'' is a replacement for ''netcfg'' designed to work with ''systemd''. 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.<br />
<br />
See [[netctl]].<br />
<br />
==== Wicd ====<br />
<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''.<br />
<br />
See [[Wicd]].<br />
<br />
==== NetworkManager ====<br />
<br />
''NetworkManager'' is an advanced network management tool that is enabled by default in most popular GNU/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 />
See [[NetworkManager]].<br />
<br />
{{Note|GNOME's {{Pkg|network-manager-applet}} also works in other DEs (xfce) or WMs (awesome). All you have to do is startup: {{ic|nm-applet sm-disable}} .Additionally, there are applets available for [[KDE]].}}<br />
<br />
==== WiFi Radar ====<br />
<br />
''WiFi Radar'' is a Python/PyGTK2 utility for managing wireless (and '''only''' wireless) profiles. It enables you to scan for available networks and create profiles for your preferred networks.<br />
<br />
See [[Wifi Radar]].<br />
<br />
== Troubleshooting ==<br />
<br />
This section contains general troubleshooting tips, not strictly related to problems with drivers or firmware. For such topics, see next section [[#Troubleshooting drivers and firmware]].<br />
<br />
=== Temporary internet access ===<br />
<br />
If you have problematic hardware and need internet access to, for example, download some software or get help in forums, you can make use of Android's built-in feature for internet sharing via USB cable. See [[Android tethering#USB tethering]] for more information.<br />
<br />
=== Rfkill caveat ===<br />
<br />
Many laptops have a hardware button (or switch) to turn off wireless card, however, the card can also be blocked by kernel. This can be handled by {{Pkg|rfkill}}. Use ''rfkill'' to show the current status:<br />
<br />
{{hc|# rfkill list|<br />
0: phy0: Wireless LAN<br />
Soft blocked: yes<br />
Hard blocked: yes<br />
}}<br />
<br />
If the card is ''hard-blocked'', use the hardware button (switch) to unblock it. If the card is not ''hard-blocked'' but ''soft-blocked'', use the following command:<br />
<br />
# rfkill unblock wifi<br />
<br />
{{Note|It is possible that the card will go from ''hard-blocked'' and ''soft-unblocked'' state into ''hard-unblocked'' and ''soft-blocked'' state by pressing the hardware button (i.e. the ''soft-blocked'' bit is just switched no matter what). This can be adjusted by tuning some options of the {{ic|rfkill}} [[kernel module]].}}<br />
<br />
More info: http://askubuntu.com/questions/62166/siocsifflags-operation-not-possible-due-to-rf-kill<br />
<br />
=== Respecting the regulatory domain ===<br />
<br />
The [[wikipedia:IEEE_802.11#Regulatory_domains_and_legal_compliance|regulatory domain]], or "regdomain", is used to reconfigure wireless drivers to make sure that wireless hardware usage complies with local laws set by the FCC, ETSI and other organizations. Regdomains use [[wikipedia:ISO_3166-1_alpha-2|ISO 3166-1 alpha-2 country codes]]. For example, the regdomain of the United States would be "US", China would be "CN", etc.<br />
<br />
Regdomains affect the availability of wireless channels. In the 2.4GHz band, the allowed channels are 1-11 for the US, 1-14 for Japan, and 1-13 for most of the rest of the world. In the 5GHz band, the rules for allowed channels are much more complex. In either case, consult [[wikipedia:List_of_WLAN_channels|this list of WLAN channels]] for more detailed information.<br />
<br />
Regdomains also affect the limit on the [[wikipedia:Equivalent_isotropically_radiated_power|effective isotropic radiated power (EIRP)]] from wireless devices. This is derived from transmit power/"tx power", and is measured in [[wikipedia:DBm|dBm/mBm (1dBm=100mBm) or mW (log scale)]]. In the 2.4GHz band, the maximum is 30dBm in the US and Canada, 20dBm in most of Europe, and 20dB-30dBm for the rest of the world. In the 5GHz band, maximums are usually lower. Consult the [http://git.kernel.org/cgit/linux/kernel/git/linville/wireless-regdb.git/tree/db.txt wireless-regdb] for more detailed information (EIRP dBm values are in the second set of brackets for each line).<br />
<br />
Misconfiguring the regdomain can be useful - for example, by allowing use of an unused channel when other channels are crowded, or by allowing an increase in tx power to widen transmitter range. However, '''this is not recommended''' as it could break local laws and cause interference with other radio devices.<br />
<br />
To configure the regdomain, install {{Pkg|crda}} and reboot (to reload the {{ic|cfg80211}} module and all related drivers). Check the boot log to make sure that CRDA is being called by {{ic|cfg80211}}:<br />
<br />
$ dmesg | grep cfg80211<br />
<br />
The current regdomain can be set to the United States with:<br />
<br />
# iw reg set US<br />
<br />
And queried with:<br />
<br />
$ iw reg get<br />
<br />
{{Note|Your device may be set to country "00", which is the "world regulatory domain" and contains generic settings. If this cannot be unset, CRDA may be misconfigured.}}<br />
<br />
However, setting the regdomain may not alter your settings. Some devices have a regdomain set in firmware/EEPROM, which dictates the limits of the device, meaning that setting regdomain in software [http://wiki.openwrt.org/doc/howto/wireless.utilities#iw can only increase restrictions], not decrease them. For example, a CN device could be set in software to the US regdomain, but because CN has an EIRP maximum of 20dBm, the device will not be able to transmit at the US maximum of 30dBm.<br />
<br />
For example, to see if the regdomain is being set in firmware for an Atheros device:<br />
<br />
$ dmesg | grep ath:<br />
<br />
For other chipsets, it may help to search for "EEPROM", "regdomain", or simply the name of the device driver.<br />
<br />
To see if your regdomain change has been successful, and to query the number of available channels and their allowed transmit power:<br />
<br />
$ iw list | grep -A 15 Frequencies:<br />
<br />
A more permanent configuration of the regdomain can be achieved through editing {{ic|/etc/conf.d/wireless-regdom}} and uncommenting the appropriate domain. {{ic|wpa_supplicant}} can also use a regdomain in the {{ic|1=country=}} line of {{ic|/etc/wpa_supplicant.conf}}.<br />
<br />
It is also possible to configure the [http://wireless.kernel.org/en/developers/Documentation/cfg80211 cfg80211] kernel module to use a specific regdomain by adding, for example, {{ic|1=options cfg80211 ieee80211_regdom=EU}} as [[Kernel_modules#Setting module options|module options]]. However, this is part of the [http://wireless.kernel.org/en/developers/Regulatory#The_ieee80211_regdom_module_parameter old regulatory implementation].<br />
<br />
For further information, read the [http://wireless.kernel.org/en/developers/Regulatory/ wireless.kernel.org regulatory documentation].<br />
<br />
=== Observing Logs ===<br />
<br />
A good first measure to troubleshoot is to analyze the system's logfiles first. In order not to manually parse through them all, it can help to open a second terminal/console window and watch the kernels messages with <br />
$ dmesg -w<br />
while performing the action, e.g. the wireless association attempt. <br />
<br />
When using a tool for network management, the same can be done for systemd with <br />
# journalctl -f <br />
<br />
Frequently a wireless error is accompanied by a deauthentication with a particular reason code, for example: <br />
wlan0: deauthenticating from XX:XX:XX:XX:XX:XX by local choice (reason=3)<br />
<br />
Looking up [http://www.aboutcher.co.uk/2012/07/linux-wifi-deauthenticated-reason-codes/ the reason code] might give a first hint. Maybe it also helps you to look at the control message [https://wireless.wiki.kernel.org/en/developers/documentation/mac80211/auth-assoc-deauth flowchart], the journal messages will follow it. <br />
<br />
The individual tools used in this article further provide options for more detailed debugging output, which can be used in a second step of the analysis, if required.<br />
<br />
=== Power saving ===<br />
<br />
See [[Power saving#Network interfaces]].<br />
<br />
=== Failed to get IP address ===<br />
<br />
* If getting an IP address repeatedly fails using the default {{Pkg|dhcpcd}} client, try installing and using {{Pkg|dhclient}} instead. Do not forget to select ''dhclient'' as the primary DHCP client in your [[#Automatic setup|connection manager]]!<br />
<br />
* If you can get an IP address for a wired interface and not for a wireless interface, try disabling the wireless card's [[#Power saving|power saving]] features (specify {{ic|off}} instead of {{ic|on}}).<br />
<br />
* If you get a timeout error due to a ''waiting for carrier'' problem, then you might have to set the channel mode to {{ic|auto}} for the specific device:<br />
<br />
# iwconfig wlan0 channel auto<br />
<br />
Before changing the channel to auto, make sure your wireless interface is down. After it has successfully changed it, you can bring the interface up again and continue from there.<br />
<br />
=== Valid IP address but cannot resolve host ===<br />
<br />
If you are on a public wireless network that may have a [[wikipedia:Captive_portal|captive portal]], it may be necessary to remove any custom DNS servers from [[resolv.conf]].<br />
<br />
=== Connection always times out ===<br />
<br />
The driver may suffer from a lot of tx excessive retries and invalid misc errors for some unknown reason, resulting in a lot of packet loss and keep disconnecting, sometimes instantly. Following tips might be helpful.<br />
<br />
==== Lowering the rate ====<br />
<br />
Try setting lower rate, for example 5.5M:<br />
<br />
# iwconfig wlan0 rate 5.5M auto<br />
<br />
Fixed option should ensure that the driver does not change the rate on its own, thus making the connection a bit more stable:<br />
<br />
# iwconfig wlan0 rate 5.5M fixed<br />
<br />
==== Lowering the txpower ====<br />
<br />
You can try lowering the transmit power as well. This may save power as well:<br />
<br />
# iwconfig wlan0 txpower 5<br />
<br />
Valid settings are from {{ic|0}} to {{ic|20}}, {{ic|auto}} and {{ic|off}}.<br />
<br />
==== Setting rts and fragmentation thresholds ====<br />
<br />
Default iwconfig options have rts and fragmentation thresholds off. These options are particularly useful when there are many adjacent APs or in a noisy environment.<br />
<br />
{{Accuracy|The maximum values effectively mean the same as setting both options to "off".[http://serverfault.com/questions/369850/rts-threshold-fragmentation-and-other-advanced-wifi-settings]|Talk:Wireless network configuration#Setting rts and fragmentation thresholds}}<br />
<br />
The minimum value for fragmentation value is 256 and maximum is 2346. In many windows drivers the maximum is the default value:<br />
<br />
# iwconfig wlan0 frag 2346<br />
<br />
For rts minimum is 0, maximum is 2347. Once again windows drivers often use maximum as the default:<br />
<br />
# iwconfig wlan0 rts 2347<br />
<br />
=== Random disconnections ===<br />
<br />
==== Cause #1 ====<br />
<br />
If dmesg says {{ic|1=wlan0: deauthenticating from MAC by local choice (reason=3)}} and you lose your Wi-Fi connection, it is likely that you have a bit too aggressive power-saving on your Wi-Fi card[http://us.generation-nt.com/answer/gentoo-user-wireless-deauthenticating-by-local-choice-help-204640041.html]. Try disabling the wireless card's [[#Power saving|power saving]] features (specify {{ic|off}} instead of {{ic|on}}).<br />
<br />
If your card does not support enabling/disabling power save mode, check the BIOS for power management options. Disabling PCI-Express power management in the BIOS of a Lenovo W520 resolved this issue.<br />
<br />
==== Cause #2 ====<br />
<br />
If you are experiencing frequent disconnections and dmesg shows messages such as <br />
<br />
{{ic|1=ieee80211 phy0: wlan0: No probe response from AP xx:xx:xx:xx:xx:xx after 500ms, disconnecting}}<br />
<br />
try changing the channel bandwidth to {{ic|20MHz}} through your router's settings page.<br />
<br />
==== Cause #3 ====<br />
<br />
On some laptop models with hardware rfkill switches (e.g., Thinkpad X200 series), due to wear or bad design, the switch (or its connection to the mainboard) might become loose over time resulting in seemingly random hardblocks/disconnects when you accidentally touch the switch or move the laptop.<br />
There is no software solution to this, unless your switch is electrical and the BIOS offers the option to disable the switch.<br />
If your switch is mechanical (most are), there are lots of possible solutions, most of which aim to disable the switch: Soldering the contact point on the mainboard/wifi-card, glueing or blocking the switch, using a screw nut to tighten the switch or removing it altogether.<br />
<br />
==== Cause #4 ====<br />
<br />
Another cause for frequent disconnects or a complete failure to connect may also be a sub-standard router, incomplete settings of the router, or interference by other wireless devices. <br />
<br />
To troubleshoot, first best try to connect to the router with no authentication. <br />
<br />
If that works, enable WPA/WPA2 again but choose fixed and/or limited router settings. For example: <br />
* If the router is considerably older than the wireless device you use for the client, test if it works with setting the router to one wireless mode <br />
* Disable mixed-mode authentication (e.g. only WPA2 with AES, or TKIP if the router is old) <br />
* Try a fixed/free channel rather than "auto" channel (maybe the router next door is old and interfering) <br />
* Disable {{ic|40Mhz}} channel bandwidth (lower throughput but less likely collisions) <br />
* If the router has quality of service settings, check completeness of settings (e.g. Wi-Fi Multimedia (WMM) is part of optional QoS flow control. An erroneous router firmware may advertise its existence although the setting is not enabled)<br />
<br />
== Troubleshooting drivers and firmware ==<br />
<br />
This section covers methods and procedures for installing kernel modules and ''firmware'' for specific chipsets, that differ from generic method.<br />
<br />
See [[Kernel modules]] for general informations on operations with modules.<br />
<br />
=== Ralink ===<br />
<br />
==== rt2x00 ====<br />
<br />
Unified driver for Ralink chipsets (it replaces {{ic|rt2500}}, {{ic|rt61}}, {{ic|rt73}}, etc). This driver has been in the Linux kernel since 2.6.24, you only need to load the right module for the chip: {{ic|rt2400pci}}, {{ic|rt2500pci}}, {{ic|rt2500usb}}, {{ic|rt61pci}} or {{ic|rt73usb}} which will autoload the respective {{ic|rt2x00}} modules too.<br />
<br />
A list of devices supported by the modules is available at the project's [http://rt2x00.serialmonkey.com/wiki/index.php/Hardware homepage].<br />
<br />
; Additional notes<br />
* Since kernel 3.0, rt2x00 includes also these drivers: {{ic|rt2800pci}}, {{ic|rt2800usb}}.<br />
* Since kernel 3.0, the staging drivers {{ic|rt2860sta}} and {{ic|rt2870sta}} are replaced by the mainline drivers {{ic|rt2800pci}} and {{ic|rt2800usb}}<sup>[https://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commitdiff;h=fefecc6989b4b24276797270c0e229c07be02ad3]</sup>.<br />
* Some devices have a wide range of options that can be configured with {{ic|iwpriv}}. These are documented in the [http://web.ralinktech.com/ralink/Home/Support/Linux.html source tarballs] available from Ralink.<br />
<br />
==== rt3090 ====<br />
<br />
For devices which are using the rt3090 chipset it should be possible to use {{ic|rt2800pci}} driver, however, is not working with this chipset very well (e.g. sometimes it is not possible to use higher rate than 2Mb/s).<br />
<br />
The best way is to use the {{AUR|rt3090-dkms}}{{Broken package link|{{aur-mirror|rt3090-dkms}}}} driver. Make sure to [[Kernel modules#Blacklisting|blacklist]] the {{ic|rt2800pci}} module and setup the {{ic|rt3090sta}} module to [[Kernel modules#Loading|load]] at boot.<br />
<br />
{{Note|This driver also works with rt3062 chipsets. Also the {{AUR|rt3090}}{{Broken package link|{{aur-mirror|rt3090}}}} package is not supported by the latest kernel and has been orphaned; {{AUR|rt3090-dkms}}{{Broken package link|{{aur-mirror|rt3090-dkms}}}} should be used instead. }}<br />
<br />
==== rt3290 ====<br />
<br />
The rt3290 chipset is recognised by the kernel {{ic|rt2800pci}} module. However, some users experience problems and reverting to a patched Ralink driver seems to be beneficial in these [https://bbs.archlinux.org/viewtopic.php?id=161952 cases].<br />
<br />
==== rt3573 ====<br />
<br />
New chipset as of 2012. It may require proprietary drivers from Ralink. Different manufacturers use it, see the [https://bbs.archlinux.org/viewtopic.php?pid=1164228#p1164228 Belkin N750 DB wireless usb adapter] forums thread.<br />
<br />
==== rt5572 ====<br />
<br />
New chipset as of 2012 with support for 5 Ghz bands. It may require proprietary drivers from Ralink and some effort to compile them. At the time of writing a how-to on compilation is available for a DLINK DWA-160 rev. B2 [http://bernaerts.dyndns.org/linux/229-ubuntu-precise-dlink-dwa160-revb2 here].<br />
<br />
=== Realtek ===<br />
<br />
==== rtl8192cu ====<br />
<br />
The driver is now in the kernel, but many users have reported being unable to make a connection although scanning for networks does work.<br />
<br />
{{AUR|8192cu-dkms}} includes many patches, try this if it does not work fine with the driver in kernel.<br />
<br />
==== rtl8192e ====<br />
<br />
The driver is part of the current kernel package. The module initialization may fail at boot giving this error message:<br />
<br />
rtl819xE:ERR in CPUcheck_firmware_ready()<br />
rtl819xE:ERR in init_firmware() step 2<br />
rtl819xE:ERR!!! _rtl8192_up(): initialization is failed!<br />
r8169 0000:03:00.0: eth0: link down<br />
<br />
A workaround is to simply unload the module:<br />
# modprobe -r r8192e_pci<br />
and reload the module (after a pause):<br />
# modprobe r8192e_pci<br />
<br />
==== rtl8188eu ====<br />
<br />
Some dongles, like the TP-Link TL-WN725N v2 (not sure, but it seems that uses the rtl8179 chipset), use chipsets compatible with this driver. In Linux 3.12 the driver [http://lwn.net/Articles/564798/ has been moved] to kernel staging source tree. For older kernels use out-of-tree driver sources built with [[dkms]] - install {{AUR|8188eu-dkms}}. At the times of 3.15 kernel rtl8188eu driver is buggy and has many stability issues.<br />
<br />
==== rtl8723ae/rtl8723be ====<br />
<br />
The new {{ic|rtl8723ae}} module is included in the mainline Linux kernel since version 3.6, the {{ic|rtl8723be}} module since 3.15.<br />
<br />
Some users may encounter errors with powersave on this card. This is shown with occasional disconnects that are not recognized by high level network managers ([[netctl]], [[NetworkManager]]). This error can be confirmed by running {{ic|dmesg -w}} or {{ic|journalctl -f}} and looking for output related to powersave and the {{ic|rtl8723ae}}/{{ic|rtl8723be}} module. If you are having this issue, use the {{ic|1=fwlps=0}} kernel option, which should prevent the WiFi card from automatically sleeping and halting connection.<br />
<br />
{{hc|/etc/modprobe.d/rtl8723ae.conf|2=<br />
options rtl8723ae fwlps=0<br />
}}<br />
or<br />
{{hc|/etc/modprobe.d/rtl8723be.conf|2=<br />
options rtl8723be fwlps=0<br />
}}<br />
<br />
=== Atheros ===<br />
<br />
The [http://madwifi-project.org/ MadWifi team] currently maintains three different drivers for devices with Atheros chipset:<br />
<br />
* {{ic|madwifi}} is an old, obsolete driver. Not present in Arch kernel since 2.6.39.1<sup>[https://mailman.archlinux.org/pipermail/arch-dev-public/2011-June/020669.html]</sup>.<br />
* {{ic|ath5k}} is newer driver, which replaces the {{ic|madwifi}} driver. Currently a better choice for some chipsets, but not all chipsets are supported (see below)<br />
* {{ic|ath9k}} is the newest of these three drivers, it is intended for newer Atheros chipsets. All of the chips with 802.11n capabilities are supported.<br />
<br />
There are some other drivers for some Atheros devices. See [http://wireless.kernel.org/en/users/Drivers/Atheros#PCI_.2F_PCI-E_.2F_AHB_Drivers Linux Wireless documentation] for details.<br />
<br />
==== ath5k ====<br />
<br />
External resources:<br />
* http://wireless.kernel.org/en/users/Drivers/ath5k<br />
* http://wiki.debian.org/ath5k<br />
<br />
If you find web pages randomly loading very slow, or if the device is unable to lease an IP address, try to switch from hardware to software encryption by loading the {{ic|ath5k}} module with {{ic|1=nohwcrypt=1}} option. See [[Kernel modules#Setting module options]] for details.<br />
<br />
Some laptops may have problems with their wireless LED indicator flickering red and blue. To solve this problem, do:<br />
<br />
# echo none > /sys/class/leds/ath5k-phy0::tx/trigger<br />
# echo none > /sys/class/leds/ath5k-phy0::rx/trigger<br />
<br />
For alternatives, see [https://bugzilla.redhat.com/show_bug.cgi?id=618232 this bug report].<br />
<br />
==== ath9k ====<br />
<br />
External resources:<br />
* http://wireless.kernel.org/en/users/Drivers/ath9k<br />
* http://wiki.debian.org/ath9k<br />
<br />
As of Linux 3.15.1, some users have been experiencing a decrease in bandwidth. In some cases this can fixed by editing {{ic|/etc/modprobe.d/ath9k.conf}} and adding the line:<br />
options ath9k nohwcrypt=1<br />
<br />
{{Note|Check with the command lsmod what module(-name) is in use and change it if named otherwise (e.g. ath9k_htc).}}<br />
<br />
In the unlikely event that you have stability issues that trouble you, you could try using the {{AUR|backports-patched}} package. An [https://lists.ath9k.org/mailman/listinfo/ath9k-devel ath9k mailing list] exists for support and development related discussions.<br />
<br />
===== Power saving =====<br />
<br />
Although [http://wireless.kernel.org/en/users/Documentation/dynamic-power-save Linux Wireless] says that dynamic power saving is enabled for Atheros ath9k single-chips newer than AR9280, for some devices (e.g. AR9285) {{Pkg|powertop}} might still report that power saving is disabled. In this case enable it manually.<br />
<br />
On some devices (e.g. AR9285), enabling the power saving might result in the following error:<br />
<br />
{{hc|# iw dev wlan0 set power_save on|<br />
command failed: Operation not supported (-95)<br />
}}<br />
<br />
The solution is to set the {{ic|1=ps_enable=1}} option for the {{ic|ath9k}} module:<br />
<br />
{{hc|/etc/modprobe.d/ath9k.conf|2=<br />
options ath9k ps_enable=1<br />
}}<br />
<br />
===== ASUS =====<br />
<br />
{{Move||How is this related to {{ic|ath9k}} driver? There must be some better place for this stuff.}}<br />
<br />
With some ASUS laptops (tested with ASUS U32U series), it could help to add {{ic|1=options asus_nb_wmi wapf=1}} to {{ic|/etc/modprobe.d/asus_nb_wmi.conf}} to fix rfkill-related issues.<br />
<br />
You can also try to blacklist the module asus_nb_wmi (tested with ASUSPRO P550C):<br />
# echo "blacklist asus_nb_wmi" >> /etc/modprobe.d/blacklist.conf<br />
<br />
=== Intel ===<br />
<br />
==== ipw2100 and ipw2200 ====<br />
<br />
These modules are fully supported in the kernel, but they require additional firmware. Depending on which of the chipsets you have, [[install]] either {{Pkg|ipw2100-fw}} or {{Pkg|ipw2200-fw}}. Then [[Kernel modules#Manual module handling|reload]] the appropriate module.<br />
<br />
{{Tip|You may use the following [[Kernel modules#Setting module options|module options]]:<br />
* use the {{ic|1=rtap_iface=1}} option to enable the radiotap interface<br />
* use the {{ic|1=led=1}} option to enable a front LED indicating when the wireless is connected or not<br />
}}<br />
<br />
==== iwlegacy ====<br />
<br />
[http://wireless.kernel.org/en/users/Drivers/iwlegacy iwlegacy] is the wireless driver for Intel's 3945 and 4965 wireless chips. The firmware is included in the {{Pkg|linux-firmware}} package.<br />
<br />
[[udev]] should load the driver automatically, otherwise load {{ic|iwl3945}} or {{ic|iwl4965}} manually. See [[Kernel modules#Loading]] for details.<br />
<br />
If you have problems connecting to networks in general or your link quality is very poor, try to disable 802.11n:<br />
<br />
{{hc|/etc/modprobe.d/iwl4965.conf|2=<br />
options iwl4965 11n_disable=1<br />
}}<br />
<br />
==== iwlwifi ====<br />
<br />
[http://wireless.kernel.org/en/users/Drivers/iwlwifi iwlwifi] is the wireless driver for Intel's current wireless chips, such as 5100AGN, 5300AGN, and 5350AGN. See the [http://wireless.kernel.org/en/users/Drivers/iwlwifi#Supported_Devices full list of supported devices]. The firmware is included in the {{Pkg|linux-firmware}} package.<br />
<br />
If you have problems connecting to networks in general or your link quality is very poor, try to disable 802.11n, and perhaps also enable software encryption:<br />
<br />
{{hc|/etc/modprobe.d/iwlwifi.conf|2=<br />
options iwlwifi 11n_disable=1<br />
options iwlwifi swcrypto=1<br />
}}<br />
<br />
If you have a problem with slow uplink speed in 802.11n mode, for example 20Mbps, try to enable antenna aggregation:<br />
<br />
{{hc|/etc/modprobe.d/iwlwifi.conf|2=<br />
options iwlwifi 11n_disable=8<br />
}}<br />
<br />
Do not be confused with the option name, when the value is set to {{ic|8}} it does not disable anything but re-enables transmission antenna aggregation.[http://forums.gentoo.org/viewtopic-t-996692.html?sid=81bdfa435c089360bdfd9368fe0339a9] [https://bugzilla.kernel.org/show_bug.cgi?id=81571]<br />
<br />
In case this does not work for you, you may try disabling power saving for your wireless adapter. For a permanent solution, add a new udev rule:<br />
<br />
{{hc|/etc/udev/rules.d/80-iwlwifi.rules|2=<br />
ACTION=="add", SUBSYSTEM=="net", ATTR{address}=="''your_mac_address''", RUN+="/usr/bin/iw dev %k set power_save off"<br />
}}<br />
<br />
[http://ubuntuforums.org/showthread.php?t=2183486&p=12845473#post12845473 Some] have never gotten this to work. [http://ubuntuforums.org/showthread.php?t=2205733&p=12935783#post12935783 Others] found salvation by disabling N in their router settings after trying everything. This is known to have be the only solution on more than one occasion. The second link there mentions a 5ghz option that might be worth exploring.<br />
<br />
{{Note|1=The {{pkg|linux-lts}}-3.14 kernel may take several minutes to load the firmware and make the wireless card ready for use. The issue is reported to be fixed in {{pkg|linux}}-3.17 kernel.[https://bbs.archlinux.org/viewtopic.php?id=190757]}}<br />
<br />
==== Disabling LED blink ====<br />
<br />
{{Note|This works with the {{ic|iwlegacy}} and {{ic|iwlwifi}} drivers.}}<br />
<br />
The default settings on the module are to have the LED blink on activity. Some people find this extremely annoying. To have the LED on solid when Wi-Fi is active, you can use the [[systemd#Temporary files|systemd-tmpfiles]]:<br />
<br />
{{hc|/etc/tmpfiles.d/phy0-led.conf|<br />
w /sys/class/leds/phy0-led/trigger - - - - phy0radio<br />
}}<br />
<br />
Run {{ic|systemd-tmpfiles --create phy0-led.conf}} for the change to take effect, or reboot.<br />
<br />
To see all the possible trigger values for this LED:<br />
<br />
# cat /sys/class/leds/phy0-led/trigger<br />
<br />
{{Tip|If you do not have {{ic|/sys/class/leds/phy0-led}}, you may try to use the {{ic|1=led_mode="1"}} [[Kernel modules#Setting module options|module option]]. It should be valid for both {{ic|iwlwifi}} and {{ic|iwlegacy}} drivers.}}<br />
<br />
=== Broadcom ===<br />
<br />
See [[Broadcom wireless]].<br />
<br />
=== Other drivers/devices ===<br />
<br />
==== Tenda w322u ====<br />
<br />
Treat this Tenda card as an {{ic|rt2870sta}} device. See [[#rt2x00]].<br />
<br />
==== orinoco ====<br />
<br />
This should be a part of the kernel package and be installed already.<br />
<br />
Some Orinoco chipsets are Hermes II. You can use the {{ic|wlags49_h2_cs}} driver instead of {{ic|orinoco_cs}} and gain WPA support. To use the driver, [[Kernel modules#Blacklisting|blacklist]] {{ic|orinoco_cs}} first.<br />
<br />
==== prism54 ====<br />
<br />
The driver {{ic|p54}} is included in kernel, but you have to download the appropriate firmware for your card from [http://linuxwireless.org/en/users/Drivers/p54#firmware this site] and install it into the {{ic|/usr/lib/firmware}} directory.<br />
<br />
{{Note|There is also older, deprecated driver {{ic|prism54}}, which might conflict with the newer driver ({{ic|p54pci}} or {{ic|p54usb}}). Make sure to [[Kernel modules#Blacklisting|blacklist]] {{ic|prism54}}.}}<br />
<br />
==== ACX100/111 ====<br />
<br />
{{Warning|The drivers for these devices [https://mailman.archlinux.org/pipermail/arch-dev-public/2011-June/020669.html are broken] and do not work with newer kernel versions.}}<br />
<br />
Packages: {{ic|tiacx}} {{ic|tiacx-firmware}} (deleted from official repositories and AUR)<br />
<br />
See [http://sourceforge.net/apps/mediawiki/acx100/index.php?title=Main_Page official wiki] for details.<br />
<br />
==== zd1211rw ====<br />
<br />
[http://zd1211.wiki.sourceforge.net/ {{ic|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, provided by the {{Pkg|zd1211-firmware}} package.<br />
<br />
==== hostap_cs ====<br />
<br />
[http://hostap.epitest.fi/ Host AP] is a Linux driver for wireless LAN cards based on Intersil's Prism2/2.5/3 chipset. The driver is included in Linux kernel.<br />
<br />
{{Note|Make sure to [[Kernel_modules#Blacklisting|blacklist]] the {{ic|orinico_cs}} driver, it may cause problems.}}<br />
<br />
=== ndiswrapper ===<br />
<br />
Ndiswrapper is a wrapper script that allows you to use some Windows drivers in Linux. You will need the {{ic|.inf}} and {{ic|.sys}} files from your Windows driver. <br />
{{Warning|Be sure to use drivers appropriate to your architecture (x86 vs. x86_64).}}<br />
<br />
{{Tip|If you need to extract these files from an {{ic|*.exe}} file, you can use {{Pkg|cabextract}}.}}<br />
<br />
Follow these steps to configure ndiswrapper.<br />
<br />
1. Install {{pkg|ndiswrapper-dkms}}<br />
<br />
2. Install the driver to {{ic|/etc/ndiswrapper/*}}<br />
# ndiswrapper -i filename.inf<br />
<br />
3. List all installed drivers for ndiswrapper<br />
$ ndiswrapper -l<br />
<br />
4. Let ndiswrapper write its configuration in {{ic|/etc/modprobe.d/ndiswrapper.conf}}:<br />
# ndiswrapper -m<br />
# depmod -a<br />
<br />
Now the ndiswrapper install is almost finished; follow the instructions on [[Kernel modules#Loading]] to automatically load the module at boot.<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 />
# modprobe ndiswrapper<br />
# iwconfig<br />
<br />
and ''wlan0'' should now exist. If you have problems, some help is available at:<br />
[http://sourceforge.net/p/ndiswrapper/ndiswrapper/HowTos/ ndiswrapper howto] and [http://sourceforge.net/p/ndiswrapper/ndiswrapper/FAQ/ ndiswrapper FAQ].<br />
<br />
=== compat-drivers-patched ===<br />
<br />
{{Out of date|{{AUR|compat-drivers-patched}}{{Broken package link|{{aur-mirror|compat-drivers-patched}}}} has reached end-of-life, {{AUR|backports-patched}} should be used instead}}<br />
<br />
Patched compat wireless drivers correct the "fixed-channel -1" issue, whilst providing better injection. Install the {{AUR|compat-drivers-patched}}{{Broken package link|{{aur-mirror|compat-drivers-patched}}}} package.<br />
<br />
{{AUR|compat-drivers-patched}}{{Broken package link|{{aur-mirror|compat-drivers-patched}}}} does not conflict with any other package and the modules built reside in {{ic|/usr/lib/modules/''your_kernel_version''/updates}}.<br />
<br />
These patched drivers come from the [http://wireless.kernel.org/ Linux Wireless project] and support many of the above mentioned chips such as:<br />
<br />
ath5k ath9k_htc carl9170 b43 zd1211rw rt2x00 wl1251 wl12xx ath6kl brcm80211<br />
<br />
Supported groups:<br />
<br />
atheros ath iwlagn rtl818x rtlwifi wl12xx atlxx bt<br />
<br />
It is also possible to build a specific module/driver or a group of drivers by editing the [[PKGBUILD]], particularly uncommenting the '''line #46'''. Here is an example of building the atheros group:<br />
<br />
scripts/driver-select atheros<br />
<br />
Please read the package's [[PKGBUILD]] for any other possible modifications prior to compilation and installation.<br />
<br />
== See also ==<br />
<br />
* [http://wireless.kernel.org/ The Linux Wireless project]<br />
* [http://aircrack-ng.org/doku.php?id=install_drivers Aircrack-ng guide on installing drivers]</div>Ygyfygyhttps://wiki.archlinux.org/index.php?title=Network_configuration/Wireless&diff=417388Network configuration/Wireless2016-01-27T14:31:08Z<p>Ygyfygy: /* NetworkManager */ Mentioned the possibility of running network-manager-applet outside GNOME.</p>
<hr />
<div>[[Category:Wireless networking]]<br />
[[cs:Wireless network configuration]]<br />
[[de:(W)LAN und Arch Linux]]<br />
[[el:Wireless network configuration]]<br />
[[es:Wireless network configuration]]<br />
[[fr:Wifi]]<br />
[[it:Wireless network configuration]]<br />
[[ja:ワイヤレス設定]]<br />
[[nl:Wireless network configuration]]<br />
[[ro:Wireless]]<br />
[[ru:Wireless network configuration]]<br />
[[th:Wireless network configuration]]<br />
[[tr:Kablosuz bağlantı]]<br />
[[zh-cn:Wireless network configuration]]<br />
{{Related articles start}}<br />
{{Related|Network configuration}}<br />
{{Related|Software access point}}<br />
{{Related|Ad-hoc networking}}<br />
{{Related|Internet sharing}}<br />
{{Related articles end}}<br />
<br />
Configuring wireless 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, but often have to be installed explicitly), and to 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 />
== Device driver ==<br />
<br />
The default Arch Linux kernel is ''modular'', meaning many of the drivers for machine hardware reside on the hard drive and are available as [[Kernel modules|modules]]. At boot, [[udev]] takes an inventory of your hardware and loads appropriate modules (drivers) for your corresponding hardware, which will in turn allow creation of a network ''interface''.<br />
<br />
Some wireless chipsets also require firmware, in addition to a corresponding driver. Many firmware images are provided by the {{Pkg|linux-firmware}} package which is installed by default, however, proprietary firmware images are not included and have to be installed separately. This is described in [[#Installing driver/firmware]].<br />
<br />
{{Note|Udev is not perfect. If the proper module is not loaded by udev on boot, simply [[Kernel modules#Loading|load it manually]]. Note also that udev may occasionally load more than one driver for a device, and the resulting conflict will prevent successful configuration. Make sure to [[Kernel modules#Blacklisting|blacklist]] the unwanted module.}}<br />
<br />
{{Tip|Though not strictly required, it's a good idea to first install user-space tools mentioned in [[#Manual setup]], especially when some problem should appear.}}<br />
<br />
=== Check the driver status ===<br />
<br />
To check if the driver for your card has been loaded, check the output of the {{ic|lspci -k}} or {{ic|lsusb -v}} command, depending on if the card is connected by PCI(e) or USB. You should see that some kernel driver is in use, for example:<br />
<br />
{{hc|$ lspci -k|<nowiki><br />
06:00.0 Network controller: Intel Corporation WiFi Link 5100<br />
Subsystem: Intel Corporation WiFi Link 5100 AGN<br />
Kernel driver in use: iwlwifi<br />
Kernel modules: iwlwifi<br />
</nowiki>}}<br />
<br />
{{Note|If the card is a USB device, running {{ic|<nowiki>dmesg | grep usbcore</nowiki>}} should give something like {{ic|usbcore: registered new interface driver rtl8187}} as output.}}<br />
<br />
Also check the output of {{ic|ip link}} command to see if a wireless interface ([[Network configuration#Device names|usually]] it starts with the letter "w", e.g. {{ic|wlp2s1}}) was created. Then bring the interface up with {{ic|ip link set ''interface'' up}}. For example, assuming the interface is {{ic|wlan0}}:<br />
<br />
# ip link set wlan0 up<br />
<br />
If you get this error message: {{ic|SIOCSIFFLAGS: No such file or directory}}, it most certainly means that your wireless chipset requires a firmware to function.<br />
<br />
Check kernel messages for firmware being loaded:<br />
<br />
{{hc|<nowiki>$ dmesg | grep firmware</nowiki>|<nowiki><br />
[ 7.148259] iwlwifi 0000:02:00.0: loaded firmware version 39.30.4.1 build 35138 op_mode iwldvm<br />
</nowiki>}}<br />
<br />
If there is no relevant output, check the messages for the full output for the module you identified earlier ({{ic|iwlwifi}} in this example) to identify the relevant message or further issues:<br />
<br />
{{hc|<nowiki>$ dmesg | grep iwlwifi</nowiki>|<nowiki><br />
[ 12.342694] iwlwifi 0000:02:00.0: irq 44 for MSI/MSI-X<br />
[ 12.353466] iwlwifi 0000:02:00.0: loaded firmware version 39.31.5.1 build 35138 op_mode iwldvm<br />
[ 12.430317] iwlwifi 0000:02:00.0: CONFIG_IWLWIFI_DEBUG disabled<br />
...<br />
[ 12.430341] iwlwifi 0000:02:00.0: Detected Intel(R) Corporation WiFi Link 5100 AGN, REV=0x6B<br />
</nowiki>}}<br />
<br />
If the kernel module is successfully loaded and the interface is up, you can skip the next section.<br />
<br />
=== Installing driver/firmware ===<br />
<br />
Check the following lists to discover if your card is supported:<br />
<br />
* See the table of [https://wireless.wiki.kernel.org/en/users/drivers existing Linux wireless drivers] and follow to the specific driver's page, which contains a list of supported devices. There is also a [https://wikidevi.com/wiki/List_of_Wi-Fi_Device_IDs_in_Linux List of Wi-Fi Device IDs in Linux].<br />
* The [https://help.ubuntu.com/community/WifiDocs/WirelessCardsSupported Ubuntu Wiki] has a good list of wireless cards and whether or not they are supported either in the Linux kernel or by a user-space driver (includes driver name).<br />
* [http://linux-wless.passys.nl/ Linux Wireless Support] and The Linux Questions' [http://www.linuxquestions.org/hcl/index.php?cat=10 Hardware Compatibility List] (HCL) also have a good database of kernel-friendly hardware.<br />
<br />
Note that some vendors ship products that may contain different chip sets, even if the product identifier is the same. Only the usb-id (for USB devices) or pci-id (for PCI devices) is authoritative.<br />
<br />
If your wireless card is listed above, follow the [[#Troubleshooting drivers and firmware]] subsection of this page, which contains information about installing drivers and firmware of some specific wireless cards. Then [[#Check the driver status|check the driver status]] again.<br />
<br />
If your wireless card is not listed above, it is likely supported only under Windows (some Broadcom, 3com, etc). For these, you can try to use [[#ndiswrapper]].<br />
<br />
== Wireless management ==<br />
<br />
Assuming that your drivers are installed and working properly, you will need to choose a method of managing your wireless connections. The following subsections will help you decide.<br />
<br />
Procedure and tools required will depend on several factors:<br />
* The desired nature of configuration management; from a completely manual command line procedure to an automated solution with graphical front-ends.<br />
* The encryption type (or lack thereof) which protects the wireless network.<br />
* The need for network profiles, if the computer will frequently change networks (such as a laptop).<br />
<br />
{{Tip|<br />
* Whatever is your choice, '''you should try to connect using the manual method first'''. This will help you understand the different steps that are required and troubleshoot possible problems.<br />
* If possible (e.g. if you manage your Wi-Fi access point), try connecting with no encryption, to check that everything works. Then try using encryption, either WEP (simple to configure, but crackable in a matter of seconds), WPA or WPA2.<br />
* If you anticipate to connect the machine to different wireless networks over time, a tool which provides its own connection management may be easier to handle.<br />
}}<br />
<br />
The following table shows the different methods that can be used to activate and manage a wireless 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 />
<br />
{| class="wikitable"<br />
! Management method || Interface activation || Wireless connection management <br>(/=alternatives) || Assigning IP address <br>(/=alternatives) <br />
|-<br />
| [[#Manual setup|Manually managed]], <br>with no or WEP encryption || [[Core utilities#ip|ip]] || {{Pkg|iw}} / [https://www.archlinux.org/packages/?name=wireless_tools iwconfig] || [[Core utilities#ip|ip]] / [[dhcpcd]] / {{Pkg|dhclient}} / [[networkd]]<br />
|-<br />
| [[#Manual setup|Manually managed]], <br>with WPA or WPA2 PSK encryption || [[Core utilities#ip|ip]] || {{Pkg|iw}} / [https://www.archlinux.org/packages/?name=wireless_tools iwconfig] + [[wpa_supplicant]] || [[Core utilities#ip|ip]] / [[dhcpcd]] / {{Pkg|dhclient}} / [[networkd]]<br />
|-<br />
| [[#Automatic setup|Automatically managed]], <br>with network profiles support || colspan="3" align="center" | [[netctl]], [[Wicd]], [[NetworkManager]], etc.<br><br />
These tools pull in the required dependencies from the list of packages in the manual method.<br />
|}<br />
<br />
=== Manual setup ===<br />
<br />
Just like other network interfaces, the wireless ones are controlled with ''ip'' from the {{Pkg|iproute2}} package.<br />
<br />
You will need to install a basic set of tools for managing the wireless connection. Either:<br />
:*{{Pkg|iw}} - only supports the nl80211 (netlink) standard. It does not support the older WEXT (Wireless EXTentions) standard. If ''iw'' does not see your card, this may be the reason.<br />
:or<br />
:*{{Pkg|wireless_tools}} - currently deprecated, but still widely supported. Use this for modules using the WEXT standard.<br />
<br />
For WPA/WPA2 encryption, you will also need:<br />
:*{{Pkg|wpa_supplicant}} - works with both WEXT and nl80211.<br />
<br />
The table below gives an overview of comparable commands for ''iw'' and ''wireless_tools'' (see [http://wireless.kernel.org/en/users/Documentation/iw/replace-iwconfig iw replaces iwconfig] for more examples). These user-space tools work extremely well and allow complete manual control of wireless connection.<br />
<br />
{{Note|<br />
* {{Pkg|iw}} and {{Pkg|wpa_supplicant}} are provided on the installation medium.<br />
* Examples in this section assume that your wireless device interface is {{ic|wlan0}} and that you are connecting to {{ic|''your_essid''}} wifi access point. Replace both accordingly. To find your wireless device interface, see [[#Getting some useful information]].<br />
* Note that most of the commands have to be executed with [[Users and groups|root permissions]]. Executed with normal user rights, some of the commands (e.g. ''iwlist''), will exit without error but not produce the correct output either, which can be confusing.<br />
}} <br />
<br />
{| class="wikitable"<br />
! ''iw'' command<br />
! ''wireless_tools'' command<br />
! Description<br />
|-<br />
| iw dev wlan0 link<br />
| iwconfig wlan0<br />
| Getting link status.<br />
|-<br />
| iw dev wlan0 scan<br />
| iwlist wlan0 scan<br />
| Scanning for available access points.<br />
|-<br />
| iw dev wlan0 set type ibss<br />
| iwconfig wlan0 mode ad-hoc<br />
| Setting the operation mode to ''ad-hoc''.<br />
|-<br />
| iw dev wlan0 connect ''your_essid''<br />
| iwconfig wlan0 essid ''your_essid''<br />
| Connecting to open network.<br />
|-<br />
| iw dev wlan0 connect ''your_essid'' 2432<br />
| iwconfig wlan0 essid ''your_essid'' freq 2432M<br />
| Connecting to open network specifying channel.<br />
|-<br />
| iw dev wlan0 connect ''your_essid'' key 0:''your_key''<br />
| iwconfig wlan0 essid ''your_essid'' key ''your_key''<br />
| Connecting to WEP encrypted network using hexadecimal key.<br />
|-<br />
| iw dev wlan0 connect ''your_essid'' key 0:''your_key''<br />
| iwconfig wlan0 essid ''your_essid'' key s:''your_key''<br />
| Connecting to WEP encrypted network using ASCII key.<br />
|-<br />
| iw dev wlan0 set power_save on<br />
| iwconfig wlan0 power on<br />
| Enabling power save.<br />
|}<br />
<br />
{{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 try to directly activate their wireless network from step [[#Association]].}}<br />
<br />
==== Getting some useful information ====<br />
<br />
{{Tip|See [http://wireless.kernel.org/en/users/Documentation/iw official documentation] of the ''iw'' tool for more examples.}}<br />
<br />
* First you need to find the name of wireless interface. You can do it with following command:<br />
<br />
{{hc|$ iw dev|<br />
phy#0<br />
Interface '''wlan0'''<br />
ifindex 3<br />
wdev 0x1<br />
addr 12:34:56:78:9a:bc<br />
type managed<br />
channel 1 (2412 MHz), width: 40 MHz, center1: 2422 MHz<br />
}}<br />
<br />
* To check link status, use following command. Example output when not connected to an AP:<br />
<br />
{{hc|$ iw dev wlan0 link|<br />
Not connected.<br />
}}<br />
<br />
When connected to an AP, you will see something like:<br />
<br />
{{hc|$ iw dev wlan0 link|<br />
Connected to 12:34:56:78:9a:bc (on wlan0)<br />
SSID: MyESSID<br />
freq: 2412<br />
RX: 33016518 bytes (152703 packets)<br />
TX: 2024638 bytes (11477 packets)<br />
signal: -53 dBm<br />
tx bitrate: 150.0 MBit/s MCS 7 40MHz short GI<br />
<br />
bss flags: short-preamble short-slot-time<br />
dtim period: 1<br />
beacon int: 100<br />
}}<br />
<br />
* You can get statistic information, such as the amount of tx/rx bytes, signal strength etc., with following command:<br />
<br />
{{hc|$ iw dev wlan0 station dump|<br />
Station 12:34:56:78:9a:bc (on wlan0)<br />
inactive time: 1450 ms<br />
rx bytes: 24668671<br />
rx packets: 114373<br />
tx bytes: 1606991<br />
tx packets: 8557<br />
tx retries: 623<br />
tx failed: 1425<br />
signal: -52 dBm<br />
signal avg: -53 dBm<br />
tx bitrate: 150.0 MBit/s MCS 7 40MHz short GI<br />
authorized: yes<br />
authenticated: yes<br />
preamble: long<br />
WMM/WME: yes<br />
MFP: no<br />
TDLS peer: no<br />
}}<br />
<br />
==== Interface activation ====<br />
<br />
{{Tip|Usually this step is not required.}}<br />
<br />
Some cards require that the kernel interface be activated before you can use ''iw'' or ''wireless_tools'':<br />
<br />
# ip link set wlan0 up<br />
<br />
{{Note|If you get errors like {{ic|RTNETLINK answers: Operation not possible due to RF-kill}}, make sure that hardware switch is ''on''. See [[#Rfkill caveat]] for details.}}<br />
<br />
To verify that the interface is up, inspect the output of the following command:<br />
<br />
{{hc|# ip link show wlan0|<br />
3: wlan0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state DOWN mode DORMANT group default qlen 1000<br />
link/ether 12:34:56:78:9a:bc brd ff:ff:ff:ff:ff:ff<br />
}}<br />
<br />
The {{ic|UP}} in {{ic|<BROADCAST,MULTICAST,UP,LOWER_UP>}} is what indicates the interface is up, not the later {{ic|state DOWN}}.<br />
<br />
==== Access point discovery ====<br />
<br />
See what access points are available:<br />
<br />
# iw dev wlan0 scan | less<br />
<br />
{{Note|If it displays {{ic|Interface does not support scanning}}, then you probably forgot to install the firmware. In some cases this message is also displayed when not running ''iw'' as root.}}<br />
<br />
{{Tip|Depending on your location, you might need to set the correct [[#Respecting the regulatory domain|regulatory domain]] in order to see all available networks.}}<br />
<br />
The important points to check:<br />
* '''SSID:''' the name of the network.<br />
* '''Signal:''' is reported in a wireless power ratio in dbm (e.g. from -100 to 0). The closer the negative value gets to zero, the better the signal. Observing the reported power on a good quality link and a bad one should give an idea about the individual range. <br />
* '''Security:''' it is not reported directly, check the line starting with {{ic|capability}}. If there is {{ic|Privacy}}, for example {{ic|capability: ESS Privacy ShortSlotTime (0x0411)}}, then the network is protected somehow.<br />
** If you see an {{ic|RSN}} information block, then the network is protected by [[Wikipedia:IEEE 802.11i-2004|Robust Security Network]] protocol, also known as WPA2.<br />
** If you see an {{ic|WPA}} information block, then the network is protected by [[Wikipedia:Wi-Fi Protected Access|Wi-Fi Protected Access]] protocol.<br />
** In the {{ic|RSN}} and {{ic|WPA}} blocks you may find the following information:<br />
*** '''Group cipher:''' value in TKIP, CCMP, both, others.<br />
*** '''Pairwise ciphers:''' value in TKIP, CCMP, both, others. Not necessarily the same value than Group cipher.<br />
*** '''Authentication suites:''' value in PSK, 802.1x, others. For home router, you will usually find PSK (''i.e.'' passphrase). In universities, you are more likely to find 802.1x suite which requires login and password. Then you will need to know which key management is in use (e.g. EAP), and what encapsulation it uses (e.g. PEAP). Find more details at [[Wikipedia:Authentication protocol]] and the sub-articles.<br />
** If you do not see neither {{ic|RSN}} nor {{ic|WPA}} blocks but there is {{ic|Privacy}}, then WEP is used.<br />
<br />
==== Operating mode ====<br />
<br />
You might need to set the proper operating mode of the wireless card. More specifically, if you are going to connect an [[Ad-hoc networking|ad-hoc network]], you need to set the operating mode to {{ic|ibss}}:<br />
<br />
# iw dev wlan0 set type ibss<br />
<br />
{{Note|Changing the operating mode on some cards might require the wireless interface to be ''down'' ({{ic|ip link set wlan0 down}}).}}<br />
<br />
==== Association ====<br />
<br />
Depending on the encryption, you need to associate your wireless device with the access point to use and pass the encryption key:<br />
<br />
* '''No encryption''' {{bc|# iw dev wlan0 connect "''your_essid''"}}<br />
* '''WEP'''<br />
** using a hexadecimal or ASCII key (the format is distinguished automatically, because a WEP key has a fixed length): {{bc|# iw dev wlan0 connect "''your_essid''" key 0:''your_key''}}<br />
** using a hexadecimal or ASCII key, specifying the third set up key as default (keys are counted from zero, four are possible): {{bc|# iw dev wlan0 connect "''your_essid''" key d:2:''your_key''}}<br />
* '''WPA/WPA2''' According to what you got from [[#Access point discovery]], issue this command: {{bc|# wpa_supplicant -D nl80211,wext -i wlan0 -c <(wpa_passphrase "''your_SSID''" "''your_key''")}}<br />
<br />
If this does not work, you may need to adjust the options. <br />
If connected successfully, continue in a new terminal (or quit {{ic|wpa_supplicant}} with {{ic|Ctrl+c}} and add the {{ic|-B}} switch to the above command to run it in the background). [[WPA supplicant]] contains more information on options and on how to create a permanent configuration file for the wireless access point.<br />
<br />
Regardless of the method used, you can check if you have associated successfully:<br />
<br />
# iw dev wlan0 link<br />
<br />
==== Getting an IP address ====<br />
<br />
{{Note|See [[Network configuration#Configure the IP address]] for more examples. This part is identical.}}<br />
<br />
Finally, provide an IP address to the network interface. Simple examples are:<br />
<br />
# dhcpcd wlan0<br />
<br />
for DHCP, or<br />
<br />
# ip addr add 192.168.0.2/24 dev wlan0<br />
# ip route add default via 192.168.0.1<br />
<br />
for static IP addressing.<br />
<br />
{{Tip|[[dhcpcd]] contains a [[dhcpcd#10-wpa_supplicant|hook]] (enabled by default) to automatically launch [[WPA supplicant]] on wireless interfaces. In most cases, you do not need to create any [[#Manual wireless connection at boot using systemd and dhcpcd|custom service]], just enable {{ic|dhcpcd@''interface''.service}}.}}<br />
<br />
==== Example ====<br />
<br />
Here is a complete example of setting up a wireless network with WPA supplicant and DHCP.<br />
<br />
# ip link set dev wlp13s1 up<br />
# wpa_supplicant -B -i wlp13s1 -c /etc/wpa_supplicant/wpa_supplicant.conf<br />
# dhcpcd wlp13s1<br />
<br />
And then to close the connection, you can simply disable the interface:<br />
<br />
# ip link set dev wlp13s1 down<br />
<br />
For a static IP, you would replace the dhcpcd command with<br />
<br />
# ip addr add 192.168.0.10/24 broadcast 192.168.0.255 dev wlp13s1<br />
# ip route add default via 192.168.0.1<br />
<br />
And before disabling the interface you would first flush the IP address and gateway:<br />
<br />
# ip addr flush dev wlp13s1<br />
# ip route flush dev wlp13s1<br />
<br />
=== Automatic setup ===<br />
<br />
There are many solutions to choose from, but remember that all of them are mutually exclusive; you should not run two daemons simultaneously. The following table compares the different connection managers, additional notes are in subsections below.<br />
<br />
{| class="wikitable"<br />
! Connection manager || Network <br>profiles <br>support || Roaming <br>(auto connect dropped <br>or changed location) || [[Wikipedia:Point-to-Point Protocol|PPP]] support <br>(e.g. 3G modem) || Official <br>GUI || Console tools<br />
|-<br />
| [[Connman]] || Yes || Yes || Yes || No || {{ic|connmanctl}}<br />
|-<br />
| [[netctl]] || Yes || Yes || Yes || No || {{ic|netctl}},{{ic|wifi-menu}}<br />
|-<br />
| [[NetworkManager]] || Yes || Yes || Yes || Yes || {{ic|nmcli}},{{ic|nmtui}}<br />
|-<br />
| [[Wicd]] || Yes || Yes || No || Yes || {{ic|wicd-curses}}<br />
|-<br />
| [[Wifi Radar]] || Yes || ? || ? || Yes || {{ic|wifi-radar}}<br />
|}<br />
<br />
==== Connman ====<br />
<br />
''ConnMan'' is an alternative to ''NetworkManager'' and ''Wicd'', designed to be light on resources making it ideal for netbooks, and other mobile devices. It is modular in design takes advandage of the dbus API and provides proper abstraction on top of ''wpa_supplicant''. <br />
<br />
See [[Connman]].<br />
<br />
==== netctl ====<br />
<br />
''netctl'' is a replacement for ''netcfg'' designed to work with ''systemd''. 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.<br />
<br />
See [[netctl]].<br />
<br />
==== Wicd ====<br />
<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''.<br />
<br />
See [[Wicd]].<br />
<br />
==== NetworkManager ====<br />
<br />
''NetworkManager'' is an advanced network management tool that is enabled by default in most popular GNU/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 />
See [[NetworkManager]].<br />
<br />
{{Note|GNOME's {{Pkg|network-manager-applet}} also works in other DEs (xfce) or WMs (awesome). All you have to do is startup: {{ic|nm-applet sm-disable}} .Additionally, there are applets available for [[KDE]].}}<br />
<br />
==== WiFi Radar ====<br />
<br />
''WiFi Radar'' is a Python/PyGTK2 utility for managing wireless (and '''only''' wireless) profiles. It enables you to scan for available networks and create profiles for your preferred networks.<br />
<br />
See [[Wifi Radar]].<br />
<br />
== Troubleshooting ==<br />
<br />
This section contains general troubleshooting tips, not strictly related to problems with drivers or firmware. For such topics, see next section [[#Troubleshooting drivers and firmware]].<br />
<br />
=== Temporary internet access ===<br />
<br />
If you have problematic hardware and need internet access to, for example, download some software or get help in forums, you can make use of Android's built-in feature for internet sharing via USB cable. See [[Android tethering#USB tethering]] for more information.<br />
<br />
=== Rfkill caveat ===<br />
<br />
Many laptops have a hardware button (or switch) to turn off wireless card, however, the card can also be blocked by kernel. This can be handled by {{Pkg|rfkill}}. Use ''rfkill'' to show the current status:<br />
<br />
{{hc|# rfkill list|<br />
0: phy0: Wireless LAN<br />
Soft blocked: yes<br />
Hard blocked: yes<br />
}}<br />
<br />
If the card is ''hard-blocked'', use the hardware button (switch) to unblock it. If the card is not ''hard-blocked'' but ''soft-blocked'', use the following command:<br />
<br />
# rfkill unblock wifi<br />
<br />
{{Note|It is possible that the card will go from ''hard-blocked'' and ''soft-unblocked'' state into ''hard-unblocked'' and ''soft-blocked'' state by pressing the hardware button (i.e. the ''soft-blocked'' bit is just switched no matter what). This can be adjusted by tuning some options of the {{ic|rfkill}} [[kernel module]].}}<br />
<br />
More info: http://askubuntu.com/questions/62166/siocsifflags-operation-not-possible-due-to-rf-kill<br />
<br />
=== Respecting the regulatory domain ===<br />
<br />
The [[wikipedia:IEEE_802.11#Regulatory_domains_and_legal_compliance|regulatory domain]], or "regdomain", is used to reconfigure wireless drivers to make sure that wireless hardware usage complies with local laws set by the FCC, ETSI and other organizations. Regdomains use [[wikipedia:ISO_3166-1_alpha-2|ISO 3166-1 alpha-2 country codes]]. For example, the regdomain of the United States would be "US", China would be "CN", etc.<br />
<br />
Regdomains affect the availability of wireless channels. In the 2.4GHz band, the allowed channels are 1-11 for the US, 1-14 for Japan, and 1-13 for most of the rest of the world. In the 5GHz band, the rules for allowed channels are much more complex. In either case, consult [[wikipedia:List_of_WLAN_channels|this list of WLAN channels]] for more detailed information.<br />
<br />
Regdomains also affect the limit on the [[wikipedia:Equivalent_isotropically_radiated_power|effective isotropic radiated power (EIRP)]] from wireless devices. This is derived from transmit power/"tx power", and is measured in [[wikipedia:DBm|dBm/mBm (1dBm=100mBm) or mW (log scale)]]. In the 2.4GHz band, the maximum is 30dBm in the US and Canada, 20dBm in most of Europe, and 20dB-30dBm for the rest of the world. In the 5GHz band, maximums are usually lower. Consult the [http://git.kernel.org/cgit/linux/kernel/git/linville/wireless-regdb.git/tree/db.txt wireless-regdb] for more detailed information (EIRP dBm values are in the second set of brackets for each line).<br />
<br />
Misconfiguring the regdomain can be useful - for example, by allowing use of an unused channel when other channels are crowded, or by allowing an increase in tx power to widen transmitter range. However, '''this is not recommended''' as it could break local laws and cause interference with other radio devices.<br />
<br />
To configure the regdomain, install {{Pkg|crda}} and reboot (to reload the {{ic|cfg80211}} module and all related drivers). Check the boot log to make sure that CRDA is being called by {{ic|cfg80211}}:<br />
<br />
$ dmesg | grep cfg80211<br />
<br />
The current regdomain can be set to the United States with:<br />
<br />
# iw reg set US<br />
<br />
And queried with:<br />
<br />
$ iw reg get<br />
<br />
{{Note|Your device may be set to country "00", which is the "world regulatory domain" and contains generic settings. If this cannot be unset, CRDA may be misconfigured.}}<br />
<br />
However, setting the regdomain may not alter your settings. Some devices have a regdomain set in firmware/EEPROM, which dictates the limits of the device, meaning that setting regdomain in software [http://wiki.openwrt.org/doc/howto/wireless.utilities#iw can only increase restrictions], not decrease them. For example, a CN device could be set in software to the US regdomain, but because CN has an EIRP maximum of 20dBm, the device will not be able to transmit at the US maximum of 30dBm.<br />
<br />
For example, to see if the regdomain is being set in firmware for an Atheros device:<br />
<br />
$ dmesg | grep ath:<br />
<br />
For other chipsets, it may help to search for "EEPROM", "regdomain", or simply the name of the device driver.<br />
<br />
To see if your regdomain change has been successful, and to query the number of available channels and their allowed transmit power:<br />
<br />
$ iw list | grep -A 15 Frequencies:<br />
<br />
A more permanent configuration of the regdomain can be achieved through editing {{ic|/etc/conf.d/wireless-regdom}} and uncommenting the appropriate domain. {{ic|wpa_supplicant}} can also use a regdomain in the {{ic|1=country=}} line of {{ic|/etc/wpa_supplicant.conf}}.<br />
<br />
It is also possible to configure the [http://wireless.kernel.org/en/developers/Documentation/cfg80211 cfg80211] kernel module to use a specific regdomain by adding, for example, {{ic|1=options cfg80211 ieee80211_regdom=EU}} as [[Kernel_modules#Setting module options|module options]]. However, this is part of the [http://wireless.kernel.org/en/developers/Regulatory#The_ieee80211_regdom_module_parameter old regulatory implementation].<br />
<br />
For further information, read the [http://wireless.kernel.org/en/developers/Regulatory/ wireless.kernel.org regulatory documentation].<br />
<br />
=== Observing Logs ===<br />
<br />
A good first measure to troubleshoot is to analyze the system's logfiles first. In order not to manually parse through them all, it can help to open a second terminal/console window and watch the kernels messages with <br />
$ dmesg -w<br />
while performing the action, e.g. the wireless association attempt. <br />
<br />
When using a tool for network management, the same can be done for systemd with <br />
# journalctl -f <br />
<br />
Frequently a wireless error is accompanied by a deauthentication with a particular reason code, for example: <br />
wlan0: deauthenticating from XX:XX:XX:XX:XX:XX by local choice (reason=3)<br />
<br />
Looking up [http://www.aboutcher.co.uk/2012/07/linux-wifi-deauthenticated-reason-codes/ the reason code] might give a first hint. Maybe it also helps you to look at the control message [https://wireless.wiki.kernel.org/en/developers/documentation/mac80211/auth-assoc-deauth flowchart], the journal messages will follow it. <br />
<br />
The individual tools used in this article further provide options for more detailed debugging output, which can be used in a second step of the analysis, if required.<br />
<br />
=== Power saving ===<br />
<br />
See [[Power saving#Network interfaces]].<br />
<br />
=== Failed to get IP address ===<br />
<br />
* If getting an IP address repeatedly fails using the default {{Pkg|dhcpcd}} client, try installing and using {{Pkg|dhclient}} instead. Do not forget to select ''dhclient'' as the primary DHCP client in your [[#Automatic setup|connection manager]]!<br />
<br />
* If you can get an IP address for a wired interface and not for a wireless interface, try disabling the wireless card's [[#Power saving|power saving]] features (specify {{ic|off}} instead of {{ic|on}}).<br />
<br />
* If you get a timeout error due to a ''waiting for carrier'' problem, then you might have to set the channel mode to {{ic|auto}} for the specific device:<br />
<br />
# iwconfig wlan0 channel auto<br />
<br />
Before changing the channel to auto, make sure your wireless interface is down. After it has successfully changed it, you can bring the interface up again and continue from there.<br />
<br />
=== Valid IP address but cannot resolve host ===<br />
<br />
If you are on a public wireless network that may have a [[wikipedia:Captive_portal|captive portal]], it may be necessary to remove any custom DNS servers from [[resolv.conf]].<br />
<br />
=== Connection always times out ===<br />
<br />
The driver may suffer from a lot of tx excessive retries and invalid misc errors for some unknown reason, resulting in a lot of packet loss and keep disconnecting, sometimes instantly. Following tips might be helpful.<br />
<br />
==== Lowering the rate ====<br />
<br />
Try setting lower rate, for example 5.5M:<br />
<br />
# iwconfig wlan0 rate 5.5M auto<br />
<br />
Fixed option should ensure that the driver does not change the rate on its own, thus making the connection a bit more stable:<br />
<br />
# iwconfig wlan0 rate 5.5M fixed<br />
<br />
==== Lowering the txpower ====<br />
<br />
You can try lowering the transmit power as well. This may save power as well:<br />
<br />
# iwconfig wlan0 txpower 5<br />
<br />
Valid settings are from {{ic|0}} to {{ic|20}}, {{ic|auto}} and {{ic|off}}.<br />
<br />
==== Setting rts and fragmentation thresholds ====<br />
<br />
Default iwconfig options have rts and fragmentation thresholds off. These options are particularly useful when there are many adjacent APs or in a noisy environment.<br />
<br />
{{Accuracy|The maximum values effectively mean the same as setting both options to "off".[http://serverfault.com/questions/369850/rts-threshold-fragmentation-and-other-advanced-wifi-settings]|Talk:Wireless network configuration#Setting rts and fragmentation thresholds}}<br />
<br />
The minimum value for fragmentation value is 256 and maximum is 2346. In many windows drivers the maximum is the default value:<br />
<br />
# iwconfig wlan0 frag 2346<br />
<br />
For rts minimum is 0, maximum is 2347. Once again windows drivers often use maximum as the default:<br />
<br />
# iwconfig wlan0 rts 2347<br />
<br />
=== Random disconnections ===<br />
<br />
==== Cause #1 ====<br />
<br />
If dmesg says {{ic|1=wlan0: deauthenticating from MAC by local choice (reason=3)}} and you lose your Wi-Fi connection, it is likely that you have a bit too aggressive power-saving on your Wi-Fi card[http://us.generation-nt.com/answer/gentoo-user-wireless-deauthenticating-by-local-choice-help-204640041.html]. Try disabling the wireless card's [[#Power saving|power saving]] features (specify {{ic|off}} instead of {{ic|on}}).<br />
<br />
If your card does not support enabling/disabling power save mode, check the BIOS for power management options. Disabling PCI-Express power management in the BIOS of a Lenovo W520 resolved this issue.<br />
<br />
==== Cause #2 ====<br />
<br />
If you are experiencing frequent disconnections and dmesg shows messages such as <br />
<br />
{{ic|1=ieee80211 phy0: wlan0: No probe response from AP xx:xx:xx:xx:xx:xx after 500ms, disconnecting}}<br />
<br />
try changing the channel bandwidth to {{ic|20MHz}} through your router's settings page.<br />
<br />
==== Cause #3 ====<br />
<br />
On some laptop models with hardware rfkill switches (e.g., Thinkpad X200 series), due to wear or bad design, the switch (or its connection to the mainboard) might become loose over time resulting in seemingly random hardblocks/disconnects when you accidentally touch the switch or move the laptop.<br />
There is no software solution to this, unless your switch is electrical and the BIOS offers the option to disable the switch.<br />
If your switch is mechanical (most are), there are lots of possible solutions, most of which aim to disable the switch: Soldering the contact point on the mainboard/wifi-card, glueing or blocking the switch, using a screw nut to tighten the switch or removing it altogether.<br />
<br />
==== Cause #4 ====<br />
<br />
Another cause for frequent disconnects or a complete failure to connect may also be a sub-standard router, incomplete settings of the router, or interference by other wireless devices. <br />
<br />
To troubleshoot, first best try to connect to the router with no authentication. <br />
<br />
If that works, enable WPA/WPA2 again but choose fixed and/or limited router settings. For example: <br />
* If the router is considerably older than the wireless device you use for the client, test if it works with setting the router to one wireless mode <br />
* Disable mixed-mode authentication (e.g. only WPA2 with AES, or TKIP if the router is old) <br />
* Try a fixed/free channel rather than "auto" channel (maybe the router next door is old and interfering) <br />
* Disable {{ic|40Mhz}} channel bandwidth (lower throughput but less likely collisions) <br />
* If the router has quality of service settings, check completeness of settings (e.g. Wi-Fi Multimedia (WMM) is part of optional QoS flow control. An erroneous router firmware may advertise its existence although the setting is not enabled)<br />
<br />
== Troubleshooting drivers and firmware ==<br />
<br />
This section covers methods and procedures for installing kernel modules and ''firmware'' for specific chipsets, that differ from generic method.<br />
<br />
See [[Kernel modules]] for general informations on operations with modules.<br />
<br />
=== Ralink ===<br />
<br />
==== rt2x00 ====<br />
<br />
Unified driver for Ralink chipsets (it replaces {{ic|rt2500}}, {{ic|rt61}}, {{ic|rt73}}, etc). This driver has been in the Linux kernel since 2.6.24, you only need to load the right module for the chip: {{ic|rt2400pci}}, {{ic|rt2500pci}}, {{ic|rt2500usb}}, {{ic|rt61pci}} or {{ic|rt73usb}} which will autoload the respective {{ic|rt2x00}} modules too.<br />
<br />
A list of devices supported by the modules is available at the project's [http://rt2x00.serialmonkey.com/wiki/index.php/Hardware homepage].<br />
<br />
; Additional notes<br />
* Since kernel 3.0, rt2x00 includes also these drivers: {{ic|rt2800pci}}, {{ic|rt2800usb}}.<br />
* Since kernel 3.0, the staging drivers {{ic|rt2860sta}} and {{ic|rt2870sta}} are replaced by the mainline drivers {{ic|rt2800pci}} and {{ic|rt2800usb}}<sup>[https://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commitdiff;h=fefecc6989b4b24276797270c0e229c07be02ad3]</sup>.<br />
* Some devices have a wide range of options that can be configured with {{ic|iwpriv}}. These are documented in the [http://web.ralinktech.com/ralink/Home/Support/Linux.html source tarballs] available from Ralink.<br />
<br />
==== rt3090 ====<br />
<br />
For devices which are using the rt3090 chipset it should be possible to use {{ic|rt2800pci}} driver, however, is not working with this chipset very well (e.g. sometimes it is not possible to use higher rate than 2Mb/s).<br />
<br />
The best way is to use the {{AUR|rt3090-dkms}}{{Broken package link|{{aur-mirror|rt3090-dkms}}}} driver. Make sure to [[Kernel modules#Blacklisting|blacklist]] the {{ic|rt2800pci}} module and setup the {{ic|rt3090sta}} module to [[Kernel modules#Loading|load]] at boot.<br />
<br />
{{Note|This driver also works with rt3062 chipsets. Also the {{AUR|rt3090}}{{Broken package link|{{aur-mirror|rt3090}}}} package is not supported by the latest kernel and has been orphaned; {{AUR|rt3090-dkms}}{{Broken package link|{{aur-mirror|rt3090-dkms}}}} should be used instead. }}<br />
<br />
==== rt3290 ====<br />
<br />
The rt3290 chipset is recognised by the kernel {{ic|rt2800pci}} module. However, some users experience problems and reverting to a patched Ralink driver seems to be beneficial in these [https://bbs.archlinux.org/viewtopic.php?id=161952 cases].<br />
<br />
==== rt3573 ====<br />
<br />
New chipset as of 2012. It may require proprietary drivers from Ralink. Different manufacturers use it, see the [https://bbs.archlinux.org/viewtopic.php?pid=1164228#p1164228 Belkin N750 DB wireless usb adapter] forums thread.<br />
<br />
==== rt5572 ====<br />
<br />
New chipset as of 2012 with support for 5 Ghz bands. It may require proprietary drivers from Ralink and some effort to compile them. At the time of writing a how-to on compilation is available for a DLINK DWA-160 rev. B2 [http://bernaerts.dyndns.org/linux/229-ubuntu-precise-dlink-dwa160-revb2 here].<br />
<br />
=== Realtek ===<br />
<br />
==== rtl8192cu ====<br />
<br />
The driver is now in the kernel, but many users have reported being unable to make a connection although scanning for networks does work.<br />
<br />
{{AUR|8192cu-dkms}} includes many patches, try this if it does not work fine with the driver in kernel.<br />
<br />
==== rtl8192e ====<br />
<br />
The driver is part of the current kernel package. The module initialization may fail at boot giving this error message:<br />
<br />
rtl819xE:ERR in CPUcheck_firmware_ready()<br />
rtl819xE:ERR in init_firmware() step 2<br />
rtl819xE:ERR!!! _rtl8192_up(): initialization is failed!<br />
r8169 0000:03:00.0: eth0: link down<br />
<br />
A workaround is to simply unload the module:<br />
# modprobe -r r8192e_pci<br />
and reload the module (after a pause):<br />
# modprobe r8192e_pci<br />
<br />
==== rtl8188eu ====<br />
<br />
Some dongles, like the TP-Link TL-WN725N v2 (not sure, but it seems that uses the rtl8179 chipset), use chipsets compatible with this driver. In Linux 3.12 the driver [http://lwn.net/Articles/564798/ has been moved] to kernel staging source tree. For older kernels use out-of-tree driver sources built with [[dkms]] - install {{AUR|8188eu-dkms}}. At the times of 3.15 kernel rtl8188eu driver is buggy and has many stability issues.<br />
<br />
==== rtl8723ae/rtl8723be ====<br />
<br />
The new {{ic|rtl8723ae}} module is included in the mainline Linux kernel since version 3.6, the {{ic|rtl8723be}} module since 3.15.<br />
<br />
Some users may encounter errors with powersave on this card. This is shown with occasional disconnects that are not recognized by high level network managers ([[netctl]], [[NetworkManager]]). This error can be confirmed by running {{ic|dmesg -w}} or {{ic|journalctl -f}} and looking for output related to powersave and the {{ic|rtl8723ae}}/{{ic|rtl8723be}} module. If you are having this issue, use the {{ic|1=fwlps=0}} kernel option, which should prevent the WiFi card from automatically sleeping and halting connection.<br />
<br />
{{hc|/etc/modprobe.d/rtl8723ae.conf|2=<br />
options rtl8723ae fwlps=0<br />
}}<br />
or<br />
{{hc|/etc/modprobe.d/rtl8723be.conf|2=<br />
options rtl8723be fwlps=0<br />
}}<br />
<br />
=== Atheros ===<br />
<br />
The [http://madwifi-project.org/ MadWifi team] currently maintains three different drivers for devices with Atheros chipset:<br />
<br />
* {{ic|madwifi}} is an old, obsolete driver. Not present in Arch kernel since 2.6.39.1<sup>[https://mailman.archlinux.org/pipermail/arch-dev-public/2011-June/020669.html]</sup>.<br />
* {{ic|ath5k}} is newer driver, which replaces the {{ic|madwifi}} driver. Currently a better choice for some chipsets, but not all chipsets are supported (see below)<br />
* {{ic|ath9k}} is the newest of these three drivers, it is intended for newer Atheros chipsets. All of the chips with 802.11n capabilities are supported.<br />
<br />
There are some other drivers for some Atheros devices. See [http://wireless.kernel.org/en/users/Drivers/Atheros#PCI_.2F_PCI-E_.2F_AHB_Drivers Linux Wireless documentation] for details.<br />
<br />
==== ath5k ====<br />
<br />
External resources:<br />
* http://wireless.kernel.org/en/users/Drivers/ath5k<br />
* http://wiki.debian.org/ath5k<br />
<br />
If you find web pages randomly loading very slow, or if the device is unable to lease an IP address, try to switch from hardware to software encryption by loading the {{ic|ath5k}} module with {{ic|1=nohwcrypt=1}} option. See [[Kernel modules#Setting module options]] for details.<br />
<br />
Some laptops may have problems with their wireless LED indicator flickering red and blue. To solve this problem, do:<br />
<br />
# echo none > /sys/class/leds/ath5k-phy0::tx/trigger<br />
# echo none > /sys/class/leds/ath5k-phy0::rx/trigger<br />
<br />
For alternatives, see [https://bugzilla.redhat.com/show_bug.cgi?id=618232 this bug report].<br />
<br />
==== ath9k ====<br />
<br />
External resources:<br />
* http://wireless.kernel.org/en/users/Drivers/ath9k<br />
* http://wiki.debian.org/ath9k<br />
<br />
As of Linux 3.15.1, some users have been experiencing a decrease in bandwidth. In some cases this can fixed by editing {{ic|/etc/modprobe.d/ath9k.conf}} and adding the line:<br />
options ath9k nohwcrypt=1<br />
<br />
{{Note|Check with the command lsmod what module(-name) is in use and change it if named otherwise (e.g. ath9k_htc).}}<br />
<br />
In the unlikely event that you have stability issues that trouble you, you could try using the {{AUR|backports-patched}} package. An [https://lists.ath9k.org/mailman/listinfo/ath9k-devel ath9k mailing list] exists for support and development related discussions.<br />
<br />
===== Power saving =====<br />
<br />
Although [http://wireless.kernel.org/en/users/Documentation/dynamic-power-save Linux Wireless] says that dynamic power saving is enabled for Atheros ath9k single-chips newer than AR9280, for some devices (e.g. AR9285) {{Pkg|powertop}} might still report that power saving is disabled. In this case enable it manually.<br />
<br />
On some devices (e.g. AR9285), enabling the power saving might result in the following error:<br />
<br />
{{hc|# iw dev wlan0 set power_save on|<br />
command failed: Operation not supported (-95)<br />
}}<br />
<br />
The solution is to set the {{ic|1=ps_enable=1}} option for the {{ic|ath9k}} module:<br />
<br />
{{hc|/etc/modprobe.d/ath9k.conf|2=<br />
options ath9k ps_enable=1<br />
}}<br />
<br />
===== ASUS =====<br />
<br />
{{Move||How is this related to {{ic|ath9k}} driver? There must be some better place for this stuff.}}<br />
<br />
With some ASUS laptops (tested with ASUS U32U series), it could help to add {{ic|1=options asus_nb_wmi wapf=1}} to {{ic|/etc/modprobe.d/asus_nb_wmi.conf}} to fix rfkill-related issues.<br />
<br />
You can also try to blacklist the module asus_nb_wmi (tested with ASUSPRO P550C):<br />
# echo "blacklist asus_nb_wmi" >> /etc/modprobe.d/blacklist.conf<br />
<br />
=== Intel ===<br />
<br />
==== ipw2100 and ipw2200 ====<br />
<br />
These modules are fully supported in the kernel, but they require additional firmware. Depending on which of the chipsets you have, [[install]] either {{Pkg|ipw2100-fw}} or {{Pkg|ipw2200-fw}}. Then [[Kernel modules#Manual module handling|reload]] the appropriate module.<br />
<br />
{{Tip|You may use the following [[Kernel modules#Setting module options|module options]]:<br />
* use the {{ic|1=rtap_iface=1}} option to enable the radiotap interface<br />
* use the {{ic|1=led=1}} option to enable a front LED indicating when the wireless is connected or not<br />
}}<br />
<br />
==== iwlegacy ====<br />
<br />
[http://wireless.kernel.org/en/users/Drivers/iwlegacy iwlegacy] is the wireless driver for Intel's 3945 and 4965 wireless chips. The firmware is included in the {{Pkg|linux-firmware}} package.<br />
<br />
[[udev]] should load the driver automatically, otherwise load {{ic|iwl3945}} or {{ic|iwl4965}} manually. See [[Kernel modules#Loading]] for details.<br />
<br />
If you have problems connecting to networks in general or your link quality is very poor, try to disable 802.11n:<br />
<br />
{{hc|/etc/modprobe.d/iwl4965.conf|2=<br />
options iwl4965 11n_disable=1<br />
}}<br />
<br />
==== iwlwifi ====<br />
<br />
[http://wireless.kernel.org/en/users/Drivers/iwlwifi iwlwifi] is the wireless driver for Intel's current wireless chips, such as 5100AGN, 5300AGN, and 5350AGN. See the [http://wireless.kernel.org/en/users/Drivers/iwlwifi#Supported_Devices full list of supported devices]. The firmware is included in the {{Pkg|linux-firmware}} package.<br />
<br />
If you have problems connecting to networks in general or your link quality is very poor, try to disable 802.11n, and perhaps also enable software encryption:<br />
<br />
{{hc|/etc/modprobe.d/iwlwifi.conf|2=<br />
options iwlwifi 11n_disable=1<br />
options iwlwifi swcrypto=1<br />
}}<br />
<br />
If you have a problem with slow uplink speed in 802.11n mode, for example 20Mbps, try to enable antenna aggregation:<br />
<br />
{{hc|/etc/modprobe.d/iwlwifi.conf|2=<br />
options iwlwifi 11n_disable=8<br />
}}<br />
<br />
Do not be confused with the option name, when the value is set to {{ic|8}} it does not disable anything but re-enables transmission antenna aggregation.[http://forums.gentoo.org/viewtopic-t-996692.html?sid=81bdfa435c089360bdfd9368fe0339a9] [https://bugzilla.kernel.org/show_bug.cgi?id=81571]<br />
<br />
In case this does not work for you, you may try disabling power saving for your wireless adapter. For a permanent solution, add a new udev rule:<br />
<br />
{{hc|/etc/udev/rules.d/80-iwlwifi.rules|2=<br />
ACTION=="add", SUBSYSTEM=="net", ATTR{address}=="''your_mac_address''", RUN+="/usr/bin/iw dev %k set power_save off"<br />
}}<br />
<br />
[http://ubuntuforums.org/showthread.php?t=2183486&p=12845473#post12845473 Some] have never gotten this to work. [http://ubuntuforums.org/showthread.php?t=2205733&p=12935783#post12935783 Others] found salvation by disabling N in their router settings after trying everything. This is known to have be the only solution on more than one occasion. The second link there mentions a 5ghz option that might be worth exploring.<br />
<br />
{{Note|1=The {{pkg|linux-lts}}-3.14 kernel may take several minutes to load the firmware and make the wireless card ready for use. The issue is reported to be fixed in {{pkg|linux}}-3.17 kernel.[https://bbs.archlinux.org/viewtopic.php?id=190757]}}<br />
<br />
==== Disabling LED blink ====<br />
<br />
{{Note|This works with the {{ic|iwlegacy}} and {{ic|iwlwifi}} drivers.}}<br />
<br />
The default settings on the module are to have the LED blink on activity. Some people find this extremely annoying. To have the LED on solid when Wi-Fi is active, you can use the [[systemd#Temporary files|systemd-tmpfiles]]:<br />
<br />
{{hc|/etc/tmpfiles.d/phy0-led.conf|<br />
w /sys/class/leds/phy0-led/trigger - - - - phy0radio<br />
}}<br />
<br />
Run {{ic|systemd-tmpfiles --create phy0-led.conf}} for the change to take effect, or reboot.<br />
<br />
To see all the possible trigger values for this LED:<br />
<br />
# cat /sys/class/leds/phy0-led/trigger<br />
<br />
{{Tip|If you do not have {{ic|/sys/class/leds/phy0-led}}, you may try to use the {{ic|1=led_mode="1"}} [[Kernel modules#Setting module options|module option]]. It should be valid for both {{ic|iwlwifi}} and {{ic|iwlegacy}} drivers.}}<br />
<br />
=== Broadcom ===<br />
<br />
See [[Broadcom wireless]].<br />
<br />
=== Other drivers/devices ===<br />
<br />
==== Tenda w322u ====<br />
<br />
Treat this Tenda card as an {{ic|rt2870sta}} device. See [[#rt2x00]].<br />
<br />
==== orinoco ====<br />
<br />
This should be a part of the kernel package and be installed already.<br />
<br />
Some Orinoco chipsets are Hermes II. You can use the {{ic|wlags49_h2_cs}} driver instead of {{ic|orinoco_cs}} and gain WPA support. To use the driver, [[Kernel modules#Blacklisting|blacklist]] {{ic|orinoco_cs}} first.<br />
<br />
==== prism54 ====<br />
<br />
The driver {{ic|p54}} is included in kernel, but you have to download the appropriate firmware for your card from [http://linuxwireless.org/en/users/Drivers/p54#firmware this site] and install it into the {{ic|/usr/lib/firmware}} directory.<br />
<br />
{{Note|There is also older, deprecated driver {{ic|prism54}}, which might conflict with the newer driver ({{ic|p54pci}} or {{ic|p54usb}}). Make sure to [[Kernel modules#Blacklisting|blacklist]] {{ic|prism54}}.}}<br />
<br />
==== ACX100/111 ====<br />
<br />
{{Warning|The drivers for these devices [https://mailman.archlinux.org/pipermail/arch-dev-public/2011-June/020669.html are broken] and do not work with newer kernel versions.}}<br />
<br />
Packages: {{ic|tiacx}} {{ic|tiacx-firmware}} (deleted from official repositories and AUR)<br />
<br />
See [http://sourceforge.net/apps/mediawiki/acx100/index.php?title=Main_Page official wiki] for details.<br />
<br />
==== zd1211rw ====<br />
<br />
[http://zd1211.wiki.sourceforge.net/ {{ic|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, provided by the {{Pkg|zd1211-firmware}} package.<br />
<br />
==== hostap_cs ====<br />
<br />
[http://hostap.epitest.fi/ Host AP] is a Linux driver for wireless LAN cards based on Intersil's Prism2/2.5/3 chipset. The driver is included in Linux kernel.<br />
<br />
{{Note|Make sure to [[Kernel_modules#Blacklisting|blacklist]] the {{ic|orinico_cs}} driver, it may cause problems.}}<br />
<br />
=== ndiswrapper ===<br />
<br />
Ndiswrapper is a wrapper script that allows you to use some Windows drivers in Linux. You will need the {{ic|.inf}} and {{ic|.sys}} files from your Windows driver. <br />
{{Warning|Be sure to use drivers appropriate to your architecture (x86 vs. x86_64).}}<br />
<br />
{{Tip|If you need to extract these files from an {{ic|*.exe}} file, you can use {{Pkg|cabextract}}.}}<br />
<br />
Follow these steps to configure ndiswrapper.<br />
<br />
1. Install {{pkg|ndiswrapper-dkms}}<br />
<br />
2. Install the driver to {{ic|/etc/ndiswrapper/*}}<br />
# ndiswrapper -i filename.inf<br />
<br />
3. List all installed drivers for ndiswrapper<br />
$ ndiswrapper -l<br />
<br />
4. Let ndiswrapper write its configuration in {{ic|/etc/modprobe.d/ndiswrapper.conf}}:<br />
# ndiswrapper -m<br />
# depmod -a<br />
<br />
Now the ndiswrapper install is almost finished; follow the instructions on [[Kernel modules#Loading]] to automatically load the module at boot.<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 />
# modprobe ndiswrapper<br />
# iwconfig<br />
<br />
and ''wlan0'' should now exist. If you have problems, some help is available at:<br />
[http://sourceforge.net/p/ndiswrapper/ndiswrapper/HowTos/ ndiswrapper howto] and [http://sourceforge.net/p/ndiswrapper/ndiswrapper/FAQ/ ndiswrapper FAQ].<br />
<br />
=== compat-drivers-patched ===<br />
<br />
{{Out of date|{{AUR|compat-drivers-patched}}{{Broken package link|{{aur-mirror|compat-drivers-patched}}}} has reached end-of-life, {{AUR|backports-patched}} should be used instead}}<br />
<br />
Patched compat wireless drivers correct the "fixed-channel -1" issue, whilst providing better injection. Install the {{AUR|compat-drivers-patched}}{{Broken package link|{{aur-mirror|compat-drivers-patched}}}} package.<br />
<br />
{{AUR|compat-drivers-patched}}{{Broken package link|{{aur-mirror|compat-drivers-patched}}}} does not conflict with any other package and the modules built reside in {{ic|/usr/lib/modules/''your_kernel_version''/updates}}.<br />
<br />
These patched drivers come from the [http://wireless.kernel.org/ Linux Wireless project] and support many of the above mentioned chips such as:<br />
<br />
ath5k ath9k_htc carl9170 b43 zd1211rw rt2x00 wl1251 wl12xx ath6kl brcm80211<br />
<br />
Supported groups:<br />
<br />
atheros ath iwlagn rtl818x rtlwifi wl12xx atlxx bt<br />
<br />
It is also possible to build a specific module/driver or a group of drivers by editing the [[PKGBUILD]], particularly uncommenting the '''line #46'''. Here is an example of building the atheros group:<br />
<br />
scripts/driver-select atheros<br />
<br />
Please read the package's [[PKGBUILD]] for any other possible modifications prior to compilation and installation.<br />
<br />
== See also ==<br />
<br />
* [http://wireless.kernel.org/ The Linux Wireless project]<br />
* [http://aircrack-ng.org/doku.php?id=install_drivers Aircrack-ng guide on installing drivers]</div>Ygyfygyhttps://wiki.archlinux.org/index.php?title=Network_configuration/Wireless&diff=417387Network configuration/Wireless2016-01-27T14:27:01Z<p>Ygyfygy: Added nmtui to official CLI NM frontends.</p>
<hr />
<div>[[Category:Wireless networking]]<br />
[[cs:Wireless network configuration]]<br />
[[de:(W)LAN und Arch Linux]]<br />
[[el:Wireless network configuration]]<br />
[[es:Wireless network configuration]]<br />
[[fr:Wifi]]<br />
[[it:Wireless network configuration]]<br />
[[ja:ワイヤレス設定]]<br />
[[nl:Wireless network configuration]]<br />
[[ro:Wireless]]<br />
[[ru:Wireless network configuration]]<br />
[[th:Wireless network configuration]]<br />
[[tr:Kablosuz bağlantı]]<br />
[[zh-cn:Wireless network configuration]]<br />
{{Related articles start}}<br />
{{Related|Network configuration}}<br />
{{Related|Software access point}}<br />
{{Related|Ad-hoc networking}}<br />
{{Related|Internet sharing}}<br />
{{Related articles end}}<br />
<br />
Configuring wireless 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, but often have to be installed explicitly), and to 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 />
== Device driver ==<br />
<br />
The default Arch Linux kernel is ''modular'', meaning many of the drivers for machine hardware reside on the hard drive and are available as [[Kernel modules|modules]]. At boot, [[udev]] takes an inventory of your hardware and loads appropriate modules (drivers) for your corresponding hardware, which will in turn allow creation of a network ''interface''.<br />
<br />
Some wireless chipsets also require firmware, in addition to a corresponding driver. Many firmware images are provided by the {{Pkg|linux-firmware}} package which is installed by default, however, proprietary firmware images are not included and have to be installed separately. This is described in [[#Installing driver/firmware]].<br />
<br />
{{Note|Udev is not perfect. If the proper module is not loaded by udev on boot, simply [[Kernel modules#Loading|load it manually]]. Note also that udev may occasionally load more than one driver for a device, and the resulting conflict will prevent successful configuration. Make sure to [[Kernel modules#Blacklisting|blacklist]] the unwanted module.}}<br />
<br />
{{Tip|Though not strictly required, it's a good idea to first install user-space tools mentioned in [[#Manual setup]], especially when some problem should appear.}}<br />
<br />
=== Check the driver status ===<br />
<br />
To check if the driver for your card has been loaded, check the output of the {{ic|lspci -k}} or {{ic|lsusb -v}} command, depending on if the card is connected by PCI(e) or USB. You should see that some kernel driver is in use, for example:<br />
<br />
{{hc|$ lspci -k|<nowiki><br />
06:00.0 Network controller: Intel Corporation WiFi Link 5100<br />
Subsystem: Intel Corporation WiFi Link 5100 AGN<br />
Kernel driver in use: iwlwifi<br />
Kernel modules: iwlwifi<br />
</nowiki>}}<br />
<br />
{{Note|If the card is a USB device, running {{ic|<nowiki>dmesg | grep usbcore</nowiki>}} should give something like {{ic|usbcore: registered new interface driver rtl8187}} as output.}}<br />
<br />
Also check the output of {{ic|ip link}} command to see if a wireless interface ([[Network configuration#Device names|usually]] it starts with the letter "w", e.g. {{ic|wlp2s1}}) was created. Then bring the interface up with {{ic|ip link set ''interface'' up}}. For example, assuming the interface is {{ic|wlan0}}:<br />
<br />
# ip link set wlan0 up<br />
<br />
If you get this error message: {{ic|SIOCSIFFLAGS: No such file or directory}}, it most certainly means that your wireless chipset requires a firmware to function.<br />
<br />
Check kernel messages for firmware being loaded:<br />
<br />
{{hc|<nowiki>$ dmesg | grep firmware</nowiki>|<nowiki><br />
[ 7.148259] iwlwifi 0000:02:00.0: loaded firmware version 39.30.4.1 build 35138 op_mode iwldvm<br />
</nowiki>}}<br />
<br />
If there is no relevant output, check the messages for the full output for the module you identified earlier ({{ic|iwlwifi}} in this example) to identify the relevant message or further issues:<br />
<br />
{{hc|<nowiki>$ dmesg | grep iwlwifi</nowiki>|<nowiki><br />
[ 12.342694] iwlwifi 0000:02:00.0: irq 44 for MSI/MSI-X<br />
[ 12.353466] iwlwifi 0000:02:00.0: loaded firmware version 39.31.5.1 build 35138 op_mode iwldvm<br />
[ 12.430317] iwlwifi 0000:02:00.0: CONFIG_IWLWIFI_DEBUG disabled<br />
...<br />
[ 12.430341] iwlwifi 0000:02:00.0: Detected Intel(R) Corporation WiFi Link 5100 AGN, REV=0x6B<br />
</nowiki>}}<br />
<br />
If the kernel module is successfully loaded and the interface is up, you can skip the next section.<br />
<br />
=== Installing driver/firmware ===<br />
<br />
Check the following lists to discover if your card is supported:<br />
<br />
* See the table of [https://wireless.wiki.kernel.org/en/users/drivers existing Linux wireless drivers] and follow to the specific driver's page, which contains a list of supported devices. There is also a [https://wikidevi.com/wiki/List_of_Wi-Fi_Device_IDs_in_Linux List of Wi-Fi Device IDs in Linux].<br />
* The [https://help.ubuntu.com/community/WifiDocs/WirelessCardsSupported Ubuntu Wiki] has a good list of wireless cards and whether or not they are supported either in the Linux kernel or by a user-space driver (includes driver name).<br />
* [http://linux-wless.passys.nl/ Linux Wireless Support] and The Linux Questions' [http://www.linuxquestions.org/hcl/index.php?cat=10 Hardware Compatibility List] (HCL) also have a good database of kernel-friendly hardware.<br />
<br />
Note that some vendors ship products that may contain different chip sets, even if the product identifier is the same. Only the usb-id (for USB devices) or pci-id (for PCI devices) is authoritative.<br />
<br />
If your wireless card is listed above, follow the [[#Troubleshooting drivers and firmware]] subsection of this page, which contains information about installing drivers and firmware of some specific wireless cards. Then [[#Check the driver status|check the driver status]] again.<br />
<br />
If your wireless card is not listed above, it is likely supported only under Windows (some Broadcom, 3com, etc). For these, you can try to use [[#ndiswrapper]].<br />
<br />
== Wireless management ==<br />
<br />
Assuming that your drivers are installed and working properly, you will need to choose a method of managing your wireless connections. The following subsections will help you decide.<br />
<br />
Procedure and tools required will depend on several factors:<br />
* The desired nature of configuration management; from a completely manual command line procedure to an automated solution with graphical front-ends.<br />
* The encryption type (or lack thereof) which protects the wireless network.<br />
* The need for network profiles, if the computer will frequently change networks (such as a laptop).<br />
<br />
{{Tip|<br />
* Whatever is your choice, '''you should try to connect using the manual method first'''. This will help you understand the different steps that are required and troubleshoot possible problems.<br />
* If possible (e.g. if you manage your Wi-Fi access point), try connecting with no encryption, to check that everything works. Then try using encryption, either WEP (simple to configure, but crackable in a matter of seconds), WPA or WPA2.<br />
* If you anticipate to connect the machine to different wireless networks over time, a tool which provides its own connection management may be easier to handle.<br />
}}<br />
<br />
The following table shows the different methods that can be used to activate and manage a wireless 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 />
<br />
{| class="wikitable"<br />
! Management method || Interface activation || Wireless connection management <br>(/=alternatives) || Assigning IP address <br>(/=alternatives) <br />
|-<br />
| [[#Manual setup|Manually managed]], <br>with no or WEP encryption || [[Core utilities#ip|ip]] || {{Pkg|iw}} / [https://www.archlinux.org/packages/?name=wireless_tools iwconfig] || [[Core utilities#ip|ip]] / [[dhcpcd]] / {{Pkg|dhclient}} / [[networkd]]<br />
|-<br />
| [[#Manual setup|Manually managed]], <br>with WPA or WPA2 PSK encryption || [[Core utilities#ip|ip]] || {{Pkg|iw}} / [https://www.archlinux.org/packages/?name=wireless_tools iwconfig] + [[wpa_supplicant]] || [[Core utilities#ip|ip]] / [[dhcpcd]] / {{Pkg|dhclient}} / [[networkd]]<br />
|-<br />
| [[#Automatic setup|Automatically managed]], <br>with network profiles support || colspan="3" align="center" | [[netctl]], [[Wicd]], [[NetworkManager]], etc.<br><br />
These tools pull in the required dependencies from the list of packages in the manual method.<br />
|}<br />
<br />
=== Manual setup ===<br />
<br />
Just like other network interfaces, the wireless ones are controlled with ''ip'' from the {{Pkg|iproute2}} package.<br />
<br />
You will need to install a basic set of tools for managing the wireless connection. Either:<br />
:*{{Pkg|iw}} - only supports the nl80211 (netlink) standard. It does not support the older WEXT (Wireless EXTentions) standard. If ''iw'' does not see your card, this may be the reason.<br />
:or<br />
:*{{Pkg|wireless_tools}} - currently deprecated, but still widely supported. Use this for modules using the WEXT standard.<br />
<br />
For WPA/WPA2 encryption, you will also need:<br />
:*{{Pkg|wpa_supplicant}} - works with both WEXT and nl80211.<br />
<br />
The table below gives an overview of comparable commands for ''iw'' and ''wireless_tools'' (see [http://wireless.kernel.org/en/users/Documentation/iw/replace-iwconfig iw replaces iwconfig] for more examples). These user-space tools work extremely well and allow complete manual control of wireless connection.<br />
<br />
{{Note|<br />
* {{Pkg|iw}} and {{Pkg|wpa_supplicant}} are provided on the installation medium.<br />
* Examples in this section assume that your wireless device interface is {{ic|wlan0}} and that you are connecting to {{ic|''your_essid''}} wifi access point. Replace both accordingly. To find your wireless device interface, see [[#Getting some useful information]].<br />
* Note that most of the commands have to be executed with [[Users and groups|root permissions]]. Executed with normal user rights, some of the commands (e.g. ''iwlist''), will exit without error but not produce the correct output either, which can be confusing.<br />
}} <br />
<br />
{| class="wikitable"<br />
! ''iw'' command<br />
! ''wireless_tools'' command<br />
! Description<br />
|-<br />
| iw dev wlan0 link<br />
| iwconfig wlan0<br />
| Getting link status.<br />
|-<br />
| iw dev wlan0 scan<br />
| iwlist wlan0 scan<br />
| Scanning for available access points.<br />
|-<br />
| iw dev wlan0 set type ibss<br />
| iwconfig wlan0 mode ad-hoc<br />
| Setting the operation mode to ''ad-hoc''.<br />
|-<br />
| iw dev wlan0 connect ''your_essid''<br />
| iwconfig wlan0 essid ''your_essid''<br />
| Connecting to open network.<br />
|-<br />
| iw dev wlan0 connect ''your_essid'' 2432<br />
| iwconfig wlan0 essid ''your_essid'' freq 2432M<br />
| Connecting to open network specifying channel.<br />
|-<br />
| iw dev wlan0 connect ''your_essid'' key 0:''your_key''<br />
| iwconfig wlan0 essid ''your_essid'' key ''your_key''<br />
| Connecting to WEP encrypted network using hexadecimal key.<br />
|-<br />
| iw dev wlan0 connect ''your_essid'' key 0:''your_key''<br />
| iwconfig wlan0 essid ''your_essid'' key s:''your_key''<br />
| Connecting to WEP encrypted network using ASCII key.<br />
|-<br />
| iw dev wlan0 set power_save on<br />
| iwconfig wlan0 power on<br />
| Enabling power save.<br />
|}<br />
<br />
{{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 try to directly activate their wireless network from step [[#Association]].}}<br />
<br />
==== Getting some useful information ====<br />
<br />
{{Tip|See [http://wireless.kernel.org/en/users/Documentation/iw official documentation] of the ''iw'' tool for more examples.}}<br />
<br />
* First you need to find the name of wireless interface. You can do it with following command:<br />
<br />
{{hc|$ iw dev|<br />
phy#0<br />
Interface '''wlan0'''<br />
ifindex 3<br />
wdev 0x1<br />
addr 12:34:56:78:9a:bc<br />
type managed<br />
channel 1 (2412 MHz), width: 40 MHz, center1: 2422 MHz<br />
}}<br />
<br />
* To check link status, use following command. Example output when not connected to an AP:<br />
<br />
{{hc|$ iw dev wlan0 link|<br />
Not connected.<br />
}}<br />
<br />
When connected to an AP, you will see something like:<br />
<br />
{{hc|$ iw dev wlan0 link|<br />
Connected to 12:34:56:78:9a:bc (on wlan0)<br />
SSID: MyESSID<br />
freq: 2412<br />
RX: 33016518 bytes (152703 packets)<br />
TX: 2024638 bytes (11477 packets)<br />
signal: -53 dBm<br />
tx bitrate: 150.0 MBit/s MCS 7 40MHz short GI<br />
<br />
bss flags: short-preamble short-slot-time<br />
dtim period: 1<br />
beacon int: 100<br />
}}<br />
<br />
* You can get statistic information, such as the amount of tx/rx bytes, signal strength etc., with following command:<br />
<br />
{{hc|$ iw dev wlan0 station dump|<br />
Station 12:34:56:78:9a:bc (on wlan0)<br />
inactive time: 1450 ms<br />
rx bytes: 24668671<br />
rx packets: 114373<br />
tx bytes: 1606991<br />
tx packets: 8557<br />
tx retries: 623<br />
tx failed: 1425<br />
signal: -52 dBm<br />
signal avg: -53 dBm<br />
tx bitrate: 150.0 MBit/s MCS 7 40MHz short GI<br />
authorized: yes<br />
authenticated: yes<br />
preamble: long<br />
WMM/WME: yes<br />
MFP: no<br />
TDLS peer: no<br />
}}<br />
<br />
==== Interface activation ====<br />
<br />
{{Tip|Usually this step is not required.}}<br />
<br />
Some cards require that the kernel interface be activated before you can use ''iw'' or ''wireless_tools'':<br />
<br />
# ip link set wlan0 up<br />
<br />
{{Note|If you get errors like {{ic|RTNETLINK answers: Operation not possible due to RF-kill}}, make sure that hardware switch is ''on''. See [[#Rfkill caveat]] for details.}}<br />
<br />
To verify that the interface is up, inspect the output of the following command:<br />
<br />
{{hc|# ip link show wlan0|<br />
3: wlan0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state DOWN mode DORMANT group default qlen 1000<br />
link/ether 12:34:56:78:9a:bc brd ff:ff:ff:ff:ff:ff<br />
}}<br />
<br />
The {{ic|UP}} in {{ic|<BROADCAST,MULTICAST,UP,LOWER_UP>}} is what indicates the interface is up, not the later {{ic|state DOWN}}.<br />
<br />
==== Access point discovery ====<br />
<br />
See what access points are available:<br />
<br />
# iw dev wlan0 scan | less<br />
<br />
{{Note|If it displays {{ic|Interface does not support scanning}}, then you probably forgot to install the firmware. In some cases this message is also displayed when not running ''iw'' as root.}}<br />
<br />
{{Tip|Depending on your location, you might need to set the correct [[#Respecting the regulatory domain|regulatory domain]] in order to see all available networks.}}<br />
<br />
The important points to check:<br />
* '''SSID:''' the name of the network.<br />
* '''Signal:''' is reported in a wireless power ratio in dbm (e.g. from -100 to 0). The closer the negative value gets to zero, the better the signal. Observing the reported power on a good quality link and a bad one should give an idea about the individual range. <br />
* '''Security:''' it is not reported directly, check the line starting with {{ic|capability}}. If there is {{ic|Privacy}}, for example {{ic|capability: ESS Privacy ShortSlotTime (0x0411)}}, then the network is protected somehow.<br />
** If you see an {{ic|RSN}} information block, then the network is protected by [[Wikipedia:IEEE 802.11i-2004|Robust Security Network]] protocol, also known as WPA2.<br />
** If you see an {{ic|WPA}} information block, then the network is protected by [[Wikipedia:Wi-Fi Protected Access|Wi-Fi Protected Access]] protocol.<br />
** In the {{ic|RSN}} and {{ic|WPA}} blocks you may find the following information:<br />
*** '''Group cipher:''' value in TKIP, CCMP, both, others.<br />
*** '''Pairwise ciphers:''' value in TKIP, CCMP, both, others. Not necessarily the same value than Group cipher.<br />
*** '''Authentication suites:''' value in PSK, 802.1x, others. For home router, you will usually find PSK (''i.e.'' passphrase). In universities, you are more likely to find 802.1x suite which requires login and password. Then you will need to know which key management is in use (e.g. EAP), and what encapsulation it uses (e.g. PEAP). Find more details at [[Wikipedia:Authentication protocol]] and the sub-articles.<br />
** If you do not see neither {{ic|RSN}} nor {{ic|WPA}} blocks but there is {{ic|Privacy}}, then WEP is used.<br />
<br />
==== Operating mode ====<br />
<br />
You might need to set the proper operating mode of the wireless card. More specifically, if you are going to connect an [[Ad-hoc networking|ad-hoc network]], you need to set the operating mode to {{ic|ibss}}:<br />
<br />
# iw dev wlan0 set type ibss<br />
<br />
{{Note|Changing the operating mode on some cards might require the wireless interface to be ''down'' ({{ic|ip link set wlan0 down}}).}}<br />
<br />
==== Association ====<br />
<br />
Depending on the encryption, you need to associate your wireless device with the access point to use and pass the encryption key:<br />
<br />
* '''No encryption''' {{bc|# iw dev wlan0 connect "''your_essid''"}}<br />
* '''WEP'''<br />
** using a hexadecimal or ASCII key (the format is distinguished automatically, because a WEP key has a fixed length): {{bc|# iw dev wlan0 connect "''your_essid''" key 0:''your_key''}}<br />
** using a hexadecimal or ASCII key, specifying the third set up key as default (keys are counted from zero, four are possible): {{bc|# iw dev wlan0 connect "''your_essid''" key d:2:''your_key''}}<br />
* '''WPA/WPA2''' According to what you got from [[#Access point discovery]], issue this command: {{bc|# wpa_supplicant -D nl80211,wext -i wlan0 -c <(wpa_passphrase "''your_SSID''" "''your_key''")}}<br />
<br />
If this does not work, you may need to adjust the options. <br />
If connected successfully, continue in a new terminal (or quit {{ic|wpa_supplicant}} with {{ic|Ctrl+c}} and add the {{ic|-B}} switch to the above command to run it in the background). [[WPA supplicant]] contains more information on options and on how to create a permanent configuration file for the wireless access point.<br />
<br />
Regardless of the method used, you can check if you have associated successfully:<br />
<br />
# iw dev wlan0 link<br />
<br />
==== Getting an IP address ====<br />
<br />
{{Note|See [[Network configuration#Configure the IP address]] for more examples. This part is identical.}}<br />
<br />
Finally, provide an IP address to the network interface. Simple examples are:<br />
<br />
# dhcpcd wlan0<br />
<br />
for DHCP, or<br />
<br />
# ip addr add 192.168.0.2/24 dev wlan0<br />
# ip route add default via 192.168.0.1<br />
<br />
for static IP addressing.<br />
<br />
{{Tip|[[dhcpcd]] contains a [[dhcpcd#10-wpa_supplicant|hook]] (enabled by default) to automatically launch [[WPA supplicant]] on wireless interfaces. In most cases, you do not need to create any [[#Manual wireless connection at boot using systemd and dhcpcd|custom service]], just enable {{ic|dhcpcd@''interface''.service}}.}}<br />
<br />
==== Example ====<br />
<br />
Here is a complete example of setting up a wireless network with WPA supplicant and DHCP.<br />
<br />
# ip link set dev wlp13s1 up<br />
# wpa_supplicant -B -i wlp13s1 -c /etc/wpa_supplicant/wpa_supplicant.conf<br />
# dhcpcd wlp13s1<br />
<br />
And then to close the connection, you can simply disable the interface:<br />
<br />
# ip link set dev wlp13s1 down<br />
<br />
For a static IP, you would replace the dhcpcd command with<br />
<br />
# ip addr add 192.168.0.10/24 broadcast 192.168.0.255 dev wlp13s1<br />
# ip route add default via 192.168.0.1<br />
<br />
And before disabling the interface you would first flush the IP address and gateway:<br />
<br />
# ip addr flush dev wlp13s1<br />
# ip route flush dev wlp13s1<br />
<br />
=== Automatic setup ===<br />
<br />
There are many solutions to choose from, but remember that all of them are mutually exclusive; you should not run two daemons simultaneously. The following table compares the different connection managers, additional notes are in subsections below.<br />
<br />
{| class="wikitable"<br />
! Connection manager || Network <br>profiles <br>support || Roaming <br>(auto connect dropped <br>or changed location) || [[Wikipedia:Point-to-Point Protocol|PPP]] support <br>(e.g. 3G modem) || Official <br>GUI || Console tools<br />
|-<br />
| [[Connman]] || Yes || Yes || Yes || No || {{ic|connmanctl}}<br />
|-<br />
| [[netctl]] || Yes || Yes || Yes || No || {{ic|netctl}},{{ic|wifi-menu}}<br />
|-<br />
| [[NetworkManager]] || Yes || Yes || Yes || Yes || {{ic|nmcli}},{{ic|nmtui}}<br />
|-<br />
| [[Wicd]] || Yes || Yes || No || Yes || {{ic|wicd-curses}}<br />
|-<br />
| [[Wifi Radar]] || Yes || ? || ? || Yes || {{ic|wifi-radar}}<br />
|}<br />
<br />
==== Connman ====<br />
<br />
''ConnMan'' is an alternative to ''NetworkManager'' and ''Wicd'', designed to be light on resources making it ideal for netbooks, and other mobile devices. It is modular in design takes advandage of the dbus API and provides proper abstraction on top of ''wpa_supplicant''. <br />
<br />
See [[Connman]].<br />
<br />
==== netctl ====<br />
<br />
''netctl'' is a replacement for ''netcfg'' designed to work with ''systemd''. 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.<br />
<br />
See [[netctl]].<br />
<br />
==== Wicd ====<br />
<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''.<br />
<br />
See [[Wicd]].<br />
<br />
==== NetworkManager ====<br />
<br />
''NetworkManager'' is an advanced network management tool that is enabled by default in most popular GNU/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 />
See [[NetworkManager]].<br />
<br />
{{Note|GNOME's {{Pkg|network-manager-applet}} also works under [[Xfce]] if you install {{AUR|xfce4-xfapplet-plugin}}{{Broken package link|{{aur-mirror|xfce4-xfapplet-plugin}}}} first. Additionally, there are applets available for [[KDE]].}}<br />
<br />
==== WiFi Radar ====<br />
<br />
''WiFi Radar'' is a Python/PyGTK2 utility for managing wireless (and '''only''' wireless) profiles. It enables you to scan for available networks and create profiles for your preferred networks.<br />
<br />
See [[Wifi Radar]].<br />
<br />
== Troubleshooting ==<br />
<br />
This section contains general troubleshooting tips, not strictly related to problems with drivers or firmware. For such topics, see next section [[#Troubleshooting drivers and firmware]].<br />
<br />
=== Temporary internet access ===<br />
<br />
If you have problematic hardware and need internet access to, for example, download some software or get help in forums, you can make use of Android's built-in feature for internet sharing via USB cable. See [[Android tethering#USB tethering]] for more information.<br />
<br />
=== Rfkill caveat ===<br />
<br />
Many laptops have a hardware button (or switch) to turn off wireless card, however, the card can also be blocked by kernel. This can be handled by {{Pkg|rfkill}}. Use ''rfkill'' to show the current status:<br />
<br />
{{hc|# rfkill list|<br />
0: phy0: Wireless LAN<br />
Soft blocked: yes<br />
Hard blocked: yes<br />
}}<br />
<br />
If the card is ''hard-blocked'', use the hardware button (switch) to unblock it. If the card is not ''hard-blocked'' but ''soft-blocked'', use the following command:<br />
<br />
# rfkill unblock wifi<br />
<br />
{{Note|It is possible that the card will go from ''hard-blocked'' and ''soft-unblocked'' state into ''hard-unblocked'' and ''soft-blocked'' state by pressing the hardware button (i.e. the ''soft-blocked'' bit is just switched no matter what). This can be adjusted by tuning some options of the {{ic|rfkill}} [[kernel module]].}}<br />
<br />
More info: http://askubuntu.com/questions/62166/siocsifflags-operation-not-possible-due-to-rf-kill<br />
<br />
=== Respecting the regulatory domain ===<br />
<br />
The [[wikipedia:IEEE_802.11#Regulatory_domains_and_legal_compliance|regulatory domain]], or "regdomain", is used to reconfigure wireless drivers to make sure that wireless hardware usage complies with local laws set by the FCC, ETSI and other organizations. Regdomains use [[wikipedia:ISO_3166-1_alpha-2|ISO 3166-1 alpha-2 country codes]]. For example, the regdomain of the United States would be "US", China would be "CN", etc.<br />
<br />
Regdomains affect the availability of wireless channels. In the 2.4GHz band, the allowed channels are 1-11 for the US, 1-14 for Japan, and 1-13 for most of the rest of the world. In the 5GHz band, the rules for allowed channels are much more complex. In either case, consult [[wikipedia:List_of_WLAN_channels|this list of WLAN channels]] for more detailed information.<br />
<br />
Regdomains also affect the limit on the [[wikipedia:Equivalent_isotropically_radiated_power|effective isotropic radiated power (EIRP)]] from wireless devices. This is derived from transmit power/"tx power", and is measured in [[wikipedia:DBm|dBm/mBm (1dBm=100mBm) or mW (log scale)]]. In the 2.4GHz band, the maximum is 30dBm in the US and Canada, 20dBm in most of Europe, and 20dB-30dBm for the rest of the world. In the 5GHz band, maximums are usually lower. Consult the [http://git.kernel.org/cgit/linux/kernel/git/linville/wireless-regdb.git/tree/db.txt wireless-regdb] for more detailed information (EIRP dBm values are in the second set of brackets for each line).<br />
<br />
Misconfiguring the regdomain can be useful - for example, by allowing use of an unused channel when other channels are crowded, or by allowing an increase in tx power to widen transmitter range. However, '''this is not recommended''' as it could break local laws and cause interference with other radio devices.<br />
<br />
To configure the regdomain, install {{Pkg|crda}} and reboot (to reload the {{ic|cfg80211}} module and all related drivers). Check the boot log to make sure that CRDA is being called by {{ic|cfg80211}}:<br />
<br />
$ dmesg | grep cfg80211<br />
<br />
The current regdomain can be set to the United States with:<br />
<br />
# iw reg set US<br />
<br />
And queried with:<br />
<br />
$ iw reg get<br />
<br />
{{Note|Your device may be set to country "00", which is the "world regulatory domain" and contains generic settings. If this cannot be unset, CRDA may be misconfigured.}}<br />
<br />
However, setting the regdomain may not alter your settings. Some devices have a regdomain set in firmware/EEPROM, which dictates the limits of the device, meaning that setting regdomain in software [http://wiki.openwrt.org/doc/howto/wireless.utilities#iw can only increase restrictions], not decrease them. For example, a CN device could be set in software to the US regdomain, but because CN has an EIRP maximum of 20dBm, the device will not be able to transmit at the US maximum of 30dBm.<br />
<br />
For example, to see if the regdomain is being set in firmware for an Atheros device:<br />
<br />
$ dmesg | grep ath:<br />
<br />
For other chipsets, it may help to search for "EEPROM", "regdomain", or simply the name of the device driver.<br />
<br />
To see if your regdomain change has been successful, and to query the number of available channels and their allowed transmit power:<br />
<br />
$ iw list | grep -A 15 Frequencies:<br />
<br />
A more permanent configuration of the regdomain can be achieved through editing {{ic|/etc/conf.d/wireless-regdom}} and uncommenting the appropriate domain. {{ic|wpa_supplicant}} can also use a regdomain in the {{ic|1=country=}} line of {{ic|/etc/wpa_supplicant.conf}}.<br />
<br />
It is also possible to configure the [http://wireless.kernel.org/en/developers/Documentation/cfg80211 cfg80211] kernel module to use a specific regdomain by adding, for example, {{ic|1=options cfg80211 ieee80211_regdom=EU}} as [[Kernel_modules#Setting module options|module options]]. However, this is part of the [http://wireless.kernel.org/en/developers/Regulatory#The_ieee80211_regdom_module_parameter old regulatory implementation].<br />
<br />
For further information, read the [http://wireless.kernel.org/en/developers/Regulatory/ wireless.kernel.org regulatory documentation].<br />
<br />
=== Observing Logs ===<br />
<br />
A good first measure to troubleshoot is to analyze the system's logfiles first. In order not to manually parse through them all, it can help to open a second terminal/console window and watch the kernels messages with <br />
$ dmesg -w<br />
while performing the action, e.g. the wireless association attempt. <br />
<br />
When using a tool for network management, the same can be done for systemd with <br />
# journalctl -f <br />
<br />
Frequently a wireless error is accompanied by a deauthentication with a particular reason code, for example: <br />
wlan0: deauthenticating from XX:XX:XX:XX:XX:XX by local choice (reason=3)<br />
<br />
Looking up [http://www.aboutcher.co.uk/2012/07/linux-wifi-deauthenticated-reason-codes/ the reason code] might give a first hint. Maybe it also helps you to look at the control message [https://wireless.wiki.kernel.org/en/developers/documentation/mac80211/auth-assoc-deauth flowchart], the journal messages will follow it. <br />
<br />
The individual tools used in this article further provide options for more detailed debugging output, which can be used in a second step of the analysis, if required.<br />
<br />
=== Power saving ===<br />
<br />
See [[Power saving#Network interfaces]].<br />
<br />
=== Failed to get IP address ===<br />
<br />
* If getting an IP address repeatedly fails using the default {{Pkg|dhcpcd}} client, try installing and using {{Pkg|dhclient}} instead. Do not forget to select ''dhclient'' as the primary DHCP client in your [[#Automatic setup|connection manager]]!<br />
<br />
* If you can get an IP address for a wired interface and not for a wireless interface, try disabling the wireless card's [[#Power saving|power saving]] features (specify {{ic|off}} instead of {{ic|on}}).<br />
<br />
* If you get a timeout error due to a ''waiting for carrier'' problem, then you might have to set the channel mode to {{ic|auto}} for the specific device:<br />
<br />
# iwconfig wlan0 channel auto<br />
<br />
Before changing the channel to auto, make sure your wireless interface is down. After it has successfully changed it, you can bring the interface up again and continue from there.<br />
<br />
=== Valid IP address but cannot resolve host ===<br />
<br />
If you are on a public wireless network that may have a [[wikipedia:Captive_portal|captive portal]], it may be necessary to remove any custom DNS servers from [[resolv.conf]].<br />
<br />
=== Connection always times out ===<br />
<br />
The driver may suffer from a lot of tx excessive retries and invalid misc errors for some unknown reason, resulting in a lot of packet loss and keep disconnecting, sometimes instantly. Following tips might be helpful.<br />
<br />
==== Lowering the rate ====<br />
<br />
Try setting lower rate, for example 5.5M:<br />
<br />
# iwconfig wlan0 rate 5.5M auto<br />
<br />
Fixed option should ensure that the driver does not change the rate on its own, thus making the connection a bit more stable:<br />
<br />
# iwconfig wlan0 rate 5.5M fixed<br />
<br />
==== Lowering the txpower ====<br />
<br />
You can try lowering the transmit power as well. This may save power as well:<br />
<br />
# iwconfig wlan0 txpower 5<br />
<br />
Valid settings are from {{ic|0}} to {{ic|20}}, {{ic|auto}} and {{ic|off}}.<br />
<br />
==== Setting rts and fragmentation thresholds ====<br />
<br />
Default iwconfig options have rts and fragmentation thresholds off. These options are particularly useful when there are many adjacent APs or in a noisy environment.<br />
<br />
{{Accuracy|The maximum values effectively mean the same as setting both options to "off".[http://serverfault.com/questions/369850/rts-threshold-fragmentation-and-other-advanced-wifi-settings]|Talk:Wireless network configuration#Setting rts and fragmentation thresholds}}<br />
<br />
The minimum value for fragmentation value is 256 and maximum is 2346. In many windows drivers the maximum is the default value:<br />
<br />
# iwconfig wlan0 frag 2346<br />
<br />
For rts minimum is 0, maximum is 2347. Once again windows drivers often use maximum as the default:<br />
<br />
# iwconfig wlan0 rts 2347<br />
<br />
=== Random disconnections ===<br />
<br />
==== Cause #1 ====<br />
<br />
If dmesg says {{ic|1=wlan0: deauthenticating from MAC by local choice (reason=3)}} and you lose your Wi-Fi connection, it is likely that you have a bit too aggressive power-saving on your Wi-Fi card[http://us.generation-nt.com/answer/gentoo-user-wireless-deauthenticating-by-local-choice-help-204640041.html]. Try disabling the wireless card's [[#Power saving|power saving]] features (specify {{ic|off}} instead of {{ic|on}}).<br />
<br />
If your card does not support enabling/disabling power save mode, check the BIOS for power management options. Disabling PCI-Express power management in the BIOS of a Lenovo W520 resolved this issue.<br />
<br />
==== Cause #2 ====<br />
<br />
If you are experiencing frequent disconnections and dmesg shows messages such as <br />
<br />
{{ic|1=ieee80211 phy0: wlan0: No probe response from AP xx:xx:xx:xx:xx:xx after 500ms, disconnecting}}<br />
<br />
try changing the channel bandwidth to {{ic|20MHz}} through your router's settings page.<br />
<br />
==== Cause #3 ====<br />
<br />
On some laptop models with hardware rfkill switches (e.g., Thinkpad X200 series), due to wear or bad design, the switch (or its connection to the mainboard) might become loose over time resulting in seemingly random hardblocks/disconnects when you accidentally touch the switch or move the laptop.<br />
There is no software solution to this, unless your switch is electrical and the BIOS offers the option to disable the switch.<br />
If your switch is mechanical (most are), there are lots of possible solutions, most of which aim to disable the switch: Soldering the contact point on the mainboard/wifi-card, glueing or blocking the switch, using a screw nut to tighten the switch or removing it altogether.<br />
<br />
==== Cause #4 ====<br />
<br />
Another cause for frequent disconnects or a complete failure to connect may also be a sub-standard router, incomplete settings of the router, or interference by other wireless devices. <br />
<br />
To troubleshoot, first best try to connect to the router with no authentication. <br />
<br />
If that works, enable WPA/WPA2 again but choose fixed and/or limited router settings. For example: <br />
* If the router is considerably older than the wireless device you use for the client, test if it works with setting the router to one wireless mode <br />
* Disable mixed-mode authentication (e.g. only WPA2 with AES, or TKIP if the router is old) <br />
* Try a fixed/free channel rather than "auto" channel (maybe the router next door is old and interfering) <br />
* Disable {{ic|40Mhz}} channel bandwidth (lower throughput but less likely collisions) <br />
* If the router has quality of service settings, check completeness of settings (e.g. Wi-Fi Multimedia (WMM) is part of optional QoS flow control. An erroneous router firmware may advertise its existence although the setting is not enabled)<br />
<br />
== Troubleshooting drivers and firmware ==<br />
<br />
This section covers methods and procedures for installing kernel modules and ''firmware'' for specific chipsets, that differ from generic method.<br />
<br />
See [[Kernel modules]] for general informations on operations with modules.<br />
<br />
=== Ralink ===<br />
<br />
==== rt2x00 ====<br />
<br />
Unified driver for Ralink chipsets (it replaces {{ic|rt2500}}, {{ic|rt61}}, {{ic|rt73}}, etc). This driver has been in the Linux kernel since 2.6.24, you only need to load the right module for the chip: {{ic|rt2400pci}}, {{ic|rt2500pci}}, {{ic|rt2500usb}}, {{ic|rt61pci}} or {{ic|rt73usb}} which will autoload the respective {{ic|rt2x00}} modules too.<br />
<br />
A list of devices supported by the modules is available at the project's [http://rt2x00.serialmonkey.com/wiki/index.php/Hardware homepage].<br />
<br />
; Additional notes<br />
* Since kernel 3.0, rt2x00 includes also these drivers: {{ic|rt2800pci}}, {{ic|rt2800usb}}.<br />
* Since kernel 3.0, the staging drivers {{ic|rt2860sta}} and {{ic|rt2870sta}} are replaced by the mainline drivers {{ic|rt2800pci}} and {{ic|rt2800usb}}<sup>[https://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commitdiff;h=fefecc6989b4b24276797270c0e229c07be02ad3]</sup>.<br />
* Some devices have a wide range of options that can be configured with {{ic|iwpriv}}. These are documented in the [http://web.ralinktech.com/ralink/Home/Support/Linux.html source tarballs] available from Ralink.<br />
<br />
==== rt3090 ====<br />
<br />
For devices which are using the rt3090 chipset it should be possible to use {{ic|rt2800pci}} driver, however, is not working with this chipset very well (e.g. sometimes it is not possible to use higher rate than 2Mb/s).<br />
<br />
The best way is to use the {{AUR|rt3090-dkms}}{{Broken package link|{{aur-mirror|rt3090-dkms}}}} driver. Make sure to [[Kernel modules#Blacklisting|blacklist]] the {{ic|rt2800pci}} module and setup the {{ic|rt3090sta}} module to [[Kernel modules#Loading|load]] at boot.<br />
<br />
{{Note|This driver also works with rt3062 chipsets. Also the {{AUR|rt3090}}{{Broken package link|{{aur-mirror|rt3090}}}} package is not supported by the latest kernel and has been orphaned; {{AUR|rt3090-dkms}}{{Broken package link|{{aur-mirror|rt3090-dkms}}}} should be used instead. }}<br />
<br />
==== rt3290 ====<br />
<br />
The rt3290 chipset is recognised by the kernel {{ic|rt2800pci}} module. However, some users experience problems and reverting to a patched Ralink driver seems to be beneficial in these [https://bbs.archlinux.org/viewtopic.php?id=161952 cases].<br />
<br />
==== rt3573 ====<br />
<br />
New chipset as of 2012. It may require proprietary drivers from Ralink. Different manufacturers use it, see the [https://bbs.archlinux.org/viewtopic.php?pid=1164228#p1164228 Belkin N750 DB wireless usb adapter] forums thread.<br />
<br />
==== rt5572 ====<br />
<br />
New chipset as of 2012 with support for 5 Ghz bands. It may require proprietary drivers from Ralink and some effort to compile them. At the time of writing a how-to on compilation is available for a DLINK DWA-160 rev. B2 [http://bernaerts.dyndns.org/linux/229-ubuntu-precise-dlink-dwa160-revb2 here].<br />
<br />
=== Realtek ===<br />
<br />
==== rtl8192cu ====<br />
<br />
The driver is now in the kernel, but many users have reported being unable to make a connection although scanning for networks does work.<br />
<br />
{{AUR|8192cu-dkms}} includes many patches, try this if it does not work fine with the driver in kernel.<br />
<br />
==== rtl8192e ====<br />
<br />
The driver is part of the current kernel package. The module initialization may fail at boot giving this error message:<br />
<br />
rtl819xE:ERR in CPUcheck_firmware_ready()<br />
rtl819xE:ERR in init_firmware() step 2<br />
rtl819xE:ERR!!! _rtl8192_up(): initialization is failed!<br />
r8169 0000:03:00.0: eth0: link down<br />
<br />
A workaround is to simply unload the module:<br />
# modprobe -r r8192e_pci<br />
and reload the module (after a pause):<br />
# modprobe r8192e_pci<br />
<br />
==== rtl8188eu ====<br />
<br />
Some dongles, like the TP-Link TL-WN725N v2 (not sure, but it seems that uses the rtl8179 chipset), use chipsets compatible with this driver. In Linux 3.12 the driver [http://lwn.net/Articles/564798/ has been moved] to kernel staging source tree. For older kernels use out-of-tree driver sources built with [[dkms]] - install {{AUR|8188eu-dkms}}. At the times of 3.15 kernel rtl8188eu driver is buggy and has many stability issues.<br />
<br />
==== rtl8723ae/rtl8723be ====<br />
<br />
The new {{ic|rtl8723ae}} module is included in the mainline Linux kernel since version 3.6, the {{ic|rtl8723be}} module since 3.15.<br />
<br />
Some users may encounter errors with powersave on this card. This is shown with occasional disconnects that are not recognized by high level network managers ([[netctl]], [[NetworkManager]]). This error can be confirmed by running {{ic|dmesg -w}} or {{ic|journalctl -f}} and looking for output related to powersave and the {{ic|rtl8723ae}}/{{ic|rtl8723be}} module. If you are having this issue, use the {{ic|1=fwlps=0}} kernel option, which should prevent the WiFi card from automatically sleeping and halting connection.<br />
<br />
{{hc|/etc/modprobe.d/rtl8723ae.conf|2=<br />
options rtl8723ae fwlps=0<br />
}}<br />
or<br />
{{hc|/etc/modprobe.d/rtl8723be.conf|2=<br />
options rtl8723be fwlps=0<br />
}}<br />
<br />
=== Atheros ===<br />
<br />
The [http://madwifi-project.org/ MadWifi team] currently maintains three different drivers for devices with Atheros chipset:<br />
<br />
* {{ic|madwifi}} is an old, obsolete driver. Not present in Arch kernel since 2.6.39.1<sup>[https://mailman.archlinux.org/pipermail/arch-dev-public/2011-June/020669.html]</sup>.<br />
* {{ic|ath5k}} is newer driver, which replaces the {{ic|madwifi}} driver. Currently a better choice for some chipsets, but not all chipsets are supported (see below)<br />
* {{ic|ath9k}} is the newest of these three drivers, it is intended for newer Atheros chipsets. All of the chips with 802.11n capabilities are supported.<br />
<br />
There are some other drivers for some Atheros devices. See [http://wireless.kernel.org/en/users/Drivers/Atheros#PCI_.2F_PCI-E_.2F_AHB_Drivers Linux Wireless documentation] for details.<br />
<br />
==== ath5k ====<br />
<br />
External resources:<br />
* http://wireless.kernel.org/en/users/Drivers/ath5k<br />
* http://wiki.debian.org/ath5k<br />
<br />
If you find web pages randomly loading very slow, or if the device is unable to lease an IP address, try to switch from hardware to software encryption by loading the {{ic|ath5k}} module with {{ic|1=nohwcrypt=1}} option. See [[Kernel modules#Setting module options]] for details.<br />
<br />
Some laptops may have problems with their wireless LED indicator flickering red and blue. To solve this problem, do:<br />
<br />
# echo none > /sys/class/leds/ath5k-phy0::tx/trigger<br />
# echo none > /sys/class/leds/ath5k-phy0::rx/trigger<br />
<br />
For alternatives, see [https://bugzilla.redhat.com/show_bug.cgi?id=618232 this bug report].<br />
<br />
==== ath9k ====<br />
<br />
External resources:<br />
* http://wireless.kernel.org/en/users/Drivers/ath9k<br />
* http://wiki.debian.org/ath9k<br />
<br />
As of Linux 3.15.1, some users have been experiencing a decrease in bandwidth. In some cases this can fixed by editing {{ic|/etc/modprobe.d/ath9k.conf}} and adding the line:<br />
options ath9k nohwcrypt=1<br />
<br />
{{Note|Check with the command lsmod what module(-name) is in use and change it if named otherwise (e.g. ath9k_htc).}}<br />
<br />
In the unlikely event that you have stability issues that trouble you, you could try using the {{AUR|backports-patched}} package. An [https://lists.ath9k.org/mailman/listinfo/ath9k-devel ath9k mailing list] exists for support and development related discussions.<br />
<br />
===== Power saving =====<br />
<br />
Although [http://wireless.kernel.org/en/users/Documentation/dynamic-power-save Linux Wireless] says that dynamic power saving is enabled for Atheros ath9k single-chips newer than AR9280, for some devices (e.g. AR9285) {{Pkg|powertop}} might still report that power saving is disabled. In this case enable it manually.<br />
<br />
On some devices (e.g. AR9285), enabling the power saving might result in the following error:<br />
<br />
{{hc|# iw dev wlan0 set power_save on|<br />
command failed: Operation not supported (-95)<br />
}}<br />
<br />
The solution is to set the {{ic|1=ps_enable=1}} option for the {{ic|ath9k}} module:<br />
<br />
{{hc|/etc/modprobe.d/ath9k.conf|2=<br />
options ath9k ps_enable=1<br />
}}<br />
<br />
===== ASUS =====<br />
<br />
{{Move||How is this related to {{ic|ath9k}} driver? There must be some better place for this stuff.}}<br />
<br />
With some ASUS laptops (tested with ASUS U32U series), it could help to add {{ic|1=options asus_nb_wmi wapf=1}} to {{ic|/etc/modprobe.d/asus_nb_wmi.conf}} to fix rfkill-related issues.<br />
<br />
You can also try to blacklist the module asus_nb_wmi (tested with ASUSPRO P550C):<br />
# echo "blacklist asus_nb_wmi" >> /etc/modprobe.d/blacklist.conf<br />
<br />
=== Intel ===<br />
<br />
==== ipw2100 and ipw2200 ====<br />
<br />
These modules are fully supported in the kernel, but they require additional firmware. Depending on which of the chipsets you have, [[install]] either {{Pkg|ipw2100-fw}} or {{Pkg|ipw2200-fw}}. Then [[Kernel modules#Manual module handling|reload]] the appropriate module.<br />
<br />
{{Tip|You may use the following [[Kernel modules#Setting module options|module options]]:<br />
* use the {{ic|1=rtap_iface=1}} option to enable the radiotap interface<br />
* use the {{ic|1=led=1}} option to enable a front LED indicating when the wireless is connected or not<br />
}}<br />
<br />
==== iwlegacy ====<br />
<br />
[http://wireless.kernel.org/en/users/Drivers/iwlegacy iwlegacy] is the wireless driver for Intel's 3945 and 4965 wireless chips. The firmware is included in the {{Pkg|linux-firmware}} package.<br />
<br />
[[udev]] should load the driver automatically, otherwise load {{ic|iwl3945}} or {{ic|iwl4965}} manually. See [[Kernel modules#Loading]] for details.<br />
<br />
If you have problems connecting to networks in general or your link quality is very poor, try to disable 802.11n:<br />
<br />
{{hc|/etc/modprobe.d/iwl4965.conf|2=<br />
options iwl4965 11n_disable=1<br />
}}<br />
<br />
==== iwlwifi ====<br />
<br />
[http://wireless.kernel.org/en/users/Drivers/iwlwifi iwlwifi] is the wireless driver for Intel's current wireless chips, such as 5100AGN, 5300AGN, and 5350AGN. See the [http://wireless.kernel.org/en/users/Drivers/iwlwifi#Supported_Devices full list of supported devices]. The firmware is included in the {{Pkg|linux-firmware}} package.<br />
<br />
If you have problems connecting to networks in general or your link quality is very poor, try to disable 802.11n, and perhaps also enable software encryption:<br />
<br />
{{hc|/etc/modprobe.d/iwlwifi.conf|2=<br />
options iwlwifi 11n_disable=1<br />
options iwlwifi swcrypto=1<br />
}}<br />
<br />
If you have a problem with slow uplink speed in 802.11n mode, for example 20Mbps, try to enable antenna aggregation:<br />
<br />
{{hc|/etc/modprobe.d/iwlwifi.conf|2=<br />
options iwlwifi 11n_disable=8<br />
}}<br />
<br />
Do not be confused with the option name, when the value is set to {{ic|8}} it does not disable anything but re-enables transmission antenna aggregation.[http://forums.gentoo.org/viewtopic-t-996692.html?sid=81bdfa435c089360bdfd9368fe0339a9] [https://bugzilla.kernel.org/show_bug.cgi?id=81571]<br />
<br />
In case this does not work for you, you may try disabling power saving for your wireless adapter. For a permanent solution, add a new udev rule:<br />
<br />
{{hc|/etc/udev/rules.d/80-iwlwifi.rules|2=<br />
ACTION=="add", SUBSYSTEM=="net", ATTR{address}=="''your_mac_address''", RUN+="/usr/bin/iw dev %k set power_save off"<br />
}}<br />
<br />
[http://ubuntuforums.org/showthread.php?t=2183486&p=12845473#post12845473 Some] have never gotten this to work. [http://ubuntuforums.org/showthread.php?t=2205733&p=12935783#post12935783 Others] found salvation by disabling N in their router settings after trying everything. This is known to have be the only solution on more than one occasion. The second link there mentions a 5ghz option that might be worth exploring.<br />
<br />
{{Note|1=The {{pkg|linux-lts}}-3.14 kernel may take several minutes to load the firmware and make the wireless card ready for use. The issue is reported to be fixed in {{pkg|linux}}-3.17 kernel.[https://bbs.archlinux.org/viewtopic.php?id=190757]}}<br />
<br />
==== Disabling LED blink ====<br />
<br />
{{Note|This works with the {{ic|iwlegacy}} and {{ic|iwlwifi}} drivers.}}<br />
<br />
The default settings on the module are to have the LED blink on activity. Some people find this extremely annoying. To have the LED on solid when Wi-Fi is active, you can use the [[systemd#Temporary files|systemd-tmpfiles]]:<br />
<br />
{{hc|/etc/tmpfiles.d/phy0-led.conf|<br />
w /sys/class/leds/phy0-led/trigger - - - - phy0radio<br />
}}<br />
<br />
Run {{ic|systemd-tmpfiles --create phy0-led.conf}} for the change to take effect, or reboot.<br />
<br />
To see all the possible trigger values for this LED:<br />
<br />
# cat /sys/class/leds/phy0-led/trigger<br />
<br />
{{Tip|If you do not have {{ic|/sys/class/leds/phy0-led}}, you may try to use the {{ic|1=led_mode="1"}} [[Kernel modules#Setting module options|module option]]. It should be valid for both {{ic|iwlwifi}} and {{ic|iwlegacy}} drivers.}}<br />
<br />
=== Broadcom ===<br />
<br />
See [[Broadcom wireless]].<br />
<br />
=== Other drivers/devices ===<br />
<br />
==== Tenda w322u ====<br />
<br />
Treat this Tenda card as an {{ic|rt2870sta}} device. See [[#rt2x00]].<br />
<br />
==== orinoco ====<br />
<br />
This should be a part of the kernel package and be installed already.<br />
<br />
Some Orinoco chipsets are Hermes II. You can use the {{ic|wlags49_h2_cs}} driver instead of {{ic|orinoco_cs}} and gain WPA support. To use the driver, [[Kernel modules#Blacklisting|blacklist]] {{ic|orinoco_cs}} first.<br />
<br />
==== prism54 ====<br />
<br />
The driver {{ic|p54}} is included in kernel, but you have to download the appropriate firmware for your card from [http://linuxwireless.org/en/users/Drivers/p54#firmware this site] and install it into the {{ic|/usr/lib/firmware}} directory.<br />
<br />
{{Note|There is also older, deprecated driver {{ic|prism54}}, which might conflict with the newer driver ({{ic|p54pci}} or {{ic|p54usb}}). Make sure to [[Kernel modules#Blacklisting|blacklist]] {{ic|prism54}}.}}<br />
<br />
==== ACX100/111 ====<br />
<br />
{{Warning|The drivers for these devices [https://mailman.archlinux.org/pipermail/arch-dev-public/2011-June/020669.html are broken] and do not work with newer kernel versions.}}<br />
<br />
Packages: {{ic|tiacx}} {{ic|tiacx-firmware}} (deleted from official repositories and AUR)<br />
<br />
See [http://sourceforge.net/apps/mediawiki/acx100/index.php?title=Main_Page official wiki] for details.<br />
<br />
==== zd1211rw ====<br />
<br />
[http://zd1211.wiki.sourceforge.net/ {{ic|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, provided by the {{Pkg|zd1211-firmware}} package.<br />
<br />
==== hostap_cs ====<br />
<br />
[http://hostap.epitest.fi/ Host AP] is a Linux driver for wireless LAN cards based on Intersil's Prism2/2.5/3 chipset. The driver is included in Linux kernel.<br />
<br />
{{Note|Make sure to [[Kernel_modules#Blacklisting|blacklist]] the {{ic|orinico_cs}} driver, it may cause problems.}}<br />
<br />
=== ndiswrapper ===<br />
<br />
Ndiswrapper is a wrapper script that allows you to use some Windows drivers in Linux. You will need the {{ic|.inf}} and {{ic|.sys}} files from your Windows driver. <br />
{{Warning|Be sure to use drivers appropriate to your architecture (x86 vs. x86_64).}}<br />
<br />
{{Tip|If you need to extract these files from an {{ic|*.exe}} file, you can use {{Pkg|cabextract}}.}}<br />
<br />
Follow these steps to configure ndiswrapper.<br />
<br />
1. Install {{pkg|ndiswrapper-dkms}}<br />
<br />
2. Install the driver to {{ic|/etc/ndiswrapper/*}}<br />
# ndiswrapper -i filename.inf<br />
<br />
3. List all installed drivers for ndiswrapper<br />
$ ndiswrapper -l<br />
<br />
4. Let ndiswrapper write its configuration in {{ic|/etc/modprobe.d/ndiswrapper.conf}}:<br />
# ndiswrapper -m<br />
# depmod -a<br />
<br />
Now the ndiswrapper install is almost finished; follow the instructions on [[Kernel modules#Loading]] to automatically load the module at boot.<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 />
# modprobe ndiswrapper<br />
# iwconfig<br />
<br />
and ''wlan0'' should now exist. If you have problems, some help is available at:<br />
[http://sourceforge.net/p/ndiswrapper/ndiswrapper/HowTos/ ndiswrapper howto] and [http://sourceforge.net/p/ndiswrapper/ndiswrapper/FAQ/ ndiswrapper FAQ].<br />
<br />
=== compat-drivers-patched ===<br />
<br />
{{Out of date|{{AUR|compat-drivers-patched}}{{Broken package link|{{aur-mirror|compat-drivers-patched}}}} has reached end-of-life, {{AUR|backports-patched}} should be used instead}}<br />
<br />
Patched compat wireless drivers correct the "fixed-channel -1" issue, whilst providing better injection. Install the {{AUR|compat-drivers-patched}}{{Broken package link|{{aur-mirror|compat-drivers-patched}}}} package.<br />
<br />
{{AUR|compat-drivers-patched}}{{Broken package link|{{aur-mirror|compat-drivers-patched}}}} does not conflict with any other package and the modules built reside in {{ic|/usr/lib/modules/''your_kernel_version''/updates}}.<br />
<br />
These patched drivers come from the [http://wireless.kernel.org/ Linux Wireless project] and support many of the above mentioned chips such as:<br />
<br />
ath5k ath9k_htc carl9170 b43 zd1211rw rt2x00 wl1251 wl12xx ath6kl brcm80211<br />
<br />
Supported groups:<br />
<br />
atheros ath iwlagn rtl818x rtlwifi wl12xx atlxx bt<br />
<br />
It is also possible to build a specific module/driver or a group of drivers by editing the [[PKGBUILD]], particularly uncommenting the '''line #46'''. Here is an example of building the atheros group:<br />
<br />
scripts/driver-select atheros<br />
<br />
Please read the package's [[PKGBUILD]] for any other possible modifications prior to compilation and installation.<br />
<br />
== See also ==<br />
<br />
* [http://wireless.kernel.org/ The Linux Wireless project]<br />
* [http://aircrack-ng.org/doku.php?id=install_drivers Aircrack-ng guide on installing drivers]</div>Ygyfygyhttps://wiki.archlinux.org/index.php?title=List_of_applications/Science&diff=410869List of applications/Science2015-12-04T16:46:18Z<p>Ygyfygy: /* Periodic table */ Added eperioduque to the list of applications.</p>
<hr />
<div><noinclude><br />
[[Category:Mathematics and science]]<br />
[[Category:Applications]]<br />
[[es:List of applications/Science]]<br />
[[it:List of applications/Science]]<br />
[[ja:アプリケーション一覧/サイエンス]]<br />
[[ru:List of applications/Science]]<br />
[[zh-cn:List of applications/Science]]<br />
[[zh-tw:List of applications/Science]]<br />
{{List of applications navigation}}<br />
</noinclude><br />
== Science ==<br />
<br />
{{Note|1=For possibly more up to date selection of scientific applications, try checking the [https://aur.archlinux.org/packages.php?O=0&do_Search=Go&detail=1&C=15&SeB=nd&SB=v&SO=d&PP=50 AUR 'science' category]}}<br />
<br />
=== Scientific documents ===<br />
<br />
See the main article: [[List of applications/Documents#Scientific documents]].<br />
<br />
=== Mathematics ===<br />
<br />
==== Calculator ====<br />
<br />
See also [[Wikipedia:Comparison of software calculators]].<br />
<br />
* {{App|[[Wikipedia:bc programming language|bc]]|Arbitrary precision calculator language.|http://www.gnu.org/software/bc/|{{Pkg|bc}}}}<br />
* {{App|calc|Arbitrary precision console calculator.|http://www.isthe.com/chongo/tech/comp/calc/|{{Pkg|calc}}}}<br />
* {{App|Extcalc|Qt-based scientfic graphical calculator.|http://extcalc-linux.sourceforge.net/|{{AUR|extcalc}}}}<br />
* {{App|galculator|GTK+ based scientific calculator.|http://galculator.sourceforge.net/|{{Pkg|galculator}} {{pkg|galculator-gtk2}}}}<br />
* {{App|[[Wikipedia:GNOME Calculator|GNOME Calculator]]|Scientific calculator included in the GNOME desktop.|https://wiki.gnome.org/Apps/Calculator|{{Pkg|gnome-calculator}}}}<br />
* {{App|[[Wikipedia:GNOME Calculator|GCalctool]]|Scientific calculator included in the GNOME desktop (old GTK2 version).|http://www.gnome.org|{{AUR|gcalctool-oldgui}}}}<br />
* {{App|KAlgebra|Calculator and 3D plotter included in KDE EDU.|http://www.kde.org/applications/education/kalgebra/|{{Pkg|kalgebra}}}}<br />
* {{App|[[Wikipedia:KCalc|KCalc]]|Scientific calculator included in the KDE desktop.|http://kde.org/applications/utilities/kcalc/|{{Pkg|kcalc}}}}<br />
* {{App|Qalculate|Calculator and equation solver with fault-tolerant parsing, constant recognition and units.|http://qalculate.sourceforge.net/|{{Pkg|libqalculate}}}}<br />
* {{App|SpeedCrunch|Fast, high precision and powerful cross-platform calculator.|http://speedcrunch.org|{{Pkg|speedcrunch}}}}<br />
* {{App|[[Wikipedia:xcalc|xcalc]]|Scientific calculator for X with algebraic and reverse polish notation modes.|http://xorg.freedesktop.org/|{{Pkg|xorg-xcalc}}}}<br />
<br />
==== Computer algebra system ====<br />
<br />
See also [[Wikipedia:Comparison of computer algebra systems]].<br />
<br />
* {{App|[[Wikipedia:Axiom (computer algebra system)|AXIOM]]|FriCAS: derivative of the powerful AXIOM-CAS|http://fricas.sourceforge.net|{{AUR|fricas}}}}<br />
* {{App|[[Wikipedia:Fermat (computer algebra system)|Fermat]]|Computer algebra system that does arithmetic of arbitrarily long integers and fractions, multivariate polynomials, symbolic calculations, matrices over polynomial rings, graphics, and other numerical calculations.|http://home.bway.net/lewis/|{{AUR|fermat}}{{Broken package link|{{aur-mirror|fermat}}}}}}<br />
* {{App|[[Wikipedia:GAP (computer algebra system)|GAP]]|Computer algebra system for computational discrete algebra with particular emphasis on computational group theory.|http://www.gap-system.org|{{Pkg|gap}}}}<br />
* {{App|[[Maple]]|Famous commercial CAS. Often used in education.|http://www.maplesoft.com/products/maple/|{{AUR?|maple}}}}<br />
* {{App|Mathics|A free CAS for symbolic mathematical computations which uses [[Python]] as its main language. It aims at achieving a Mathematica-compatible syntax and functions. It relies mostly on Sympy for most mathematical tasks and, optionally, Sage for more advanced functionality.|http://www.mathics.org/|{{AUR|mathics}}}} <br />
* {{App|[[Wikipedia:Mathomatic|Mathomatic]]|General purpose Computer Algebra System written in C.|http://www.mathomatic.org/|{{Pkg|mathomatic}}}}<br />
* {{App|[[Wikipedia:Maxima (software)|Maxima]]|[[Wikipedia:Maple (software)|Maple]]/[[Wikipedia:Wolfram Mathematica|Mathematica]]-like program with a wxWidgets based frontend.|http://maxima.sourceforge.net/|{{Pkg|maxima}} {{Pkg|wxmaxima}}}}<br />
* {{App|[[Wikipedia:PARI/GP|PARI/GP]]|Computer algebra system designed for fast computations in number theory.|http://pari.math.u-bordeaux.fr/|{{Pkg|pari}}}}<br />
* {{App|[[Wikipedia:Xcas|Xcas]]|User interface to Giac, a free, basic computer algebra system.|http://www-fourier.ujf-grenoble.fr/~parisse/giac.html|{{AUR|xcas}}}}<br />
<br />
==== Scientific or technical computing ====<br />
<br />
See also [[Wikipedia:Comparison of numerical analysis software]].<br />
<br />
* {{App|EngLab|Cross-compile mathematical platform with a C like syntax.|http://englab.bugfest.net|{{AUR|englab}}{{Broken package link|{{aur-mirror|englab}}}}}}<br />
* {{App|[[Wikipedia:Euler (software)|Euler]]|Numerical application designed for higher level math such as calculus, optimization, and statistics that uses Maxima for symbolic operations.|http://euler.sourceforge.net|{{AUR|euler}}{{Broken package link|{{aur-mirror|euler}}}}}}<br />
* {{App|[[Wikipedia:FreeMat|FreeMat]]|Matlab-like program that supports many of its functions and features a codeless interface to external C, C++, and Fortran code, further parallel distributed algorithm development (via MPI), and 3D visualization capabilities.|http://freemat.sourceforge.net/|{{Pkg|freemat}}}}<br />
* {{App|[[GNU Radio]]|Software development toolkit that provides signal processing blocks to implement software radios.|http://gnuradio.org/redmine/projects/gnuradio/wiki |{{Pkg|gnuradio}}}}<br />
* {{App|[[Octave]]|[[Matlab]]-like language and interface for numerical computations.|http://www.gnu.org/software/octave/ |{{Pkg|octave}}}}<br />
* {{App|[[Wikipedia:matplotlib|PyLab]]|Collection of Python modules (pyplot, numpy, etc.) used for scientific calculations.|http://www.scipy.org/PyLab|{{Pkg|python2-matplotlib}}}}<br />
* {{App|[[Sage-mathematics]]|Mathematics software system, that combines many existing open-source packages into a common Python interface. Alternative to Magma, Maple, Mathematica and Matlab.|http://www.sagemath.org|{{Pkg|sagemath}}}}<br />
* {{App|[[Wikipedia:Scilab|Scilab]]|Matlab alternative used for numerical computations. Its syntax is not equivalent to that of Matlab, but it can be easily converted.|http://www.scilab.org/|{{AUR|scilab}}}}<br />
<br />
==== Statistics ====<br />
<br />
See also [[Wikipedia:Comparison of statistical packages]].<br />
<br />
* {{App|[[Wikipedia:Just another Gibbs sampler|JAGS]] (Just another Gibbs sampler)|Cross-platform program for analysis of Bayesian hierarchical models using Markov Chain Monte Carlo (MCMC) simulation.|http://mcmc-jags.sourceforge.net/|{{AUR|jags}}}}<br />
* {{App|[[Wikipedia:Pandas_(software)|Python Data Analysis Library (pandas)]]| Providing high-performance, easy-to-use data structures and data analysis tools with Python programming language.|http://pandas.pydata.org/|{{AUR|python2-pandas-git}}}}<br />
* {{App|[[Wikipedia:PSPP|PSPP]]|Free SPSS implementation.|http://www.gnu.org/software/pspp/|{{AUR|pspp}}}}<br />
* {{App|[[R]]|Software environment for statistical computing and graphics.|http://cran.r-project.org/|{{Pkg|r}}}}<br />
* {{App|[[Wikipedia:RKWard|RKWard]]|Frontend for the statistical language R.|http://rkward.sourceforge.net/|{{AUR|rkward}}}}<br />
* {{App|[[Wikipedia:RStudio|RStudio]]|A powerful and productive IDE for R written in Qt.|http://www.rstudio.com/|{{AUR|rstudio-desktop-bin}}}}<br />
<br />
==== Data evaluation ====<br />
<br />
See also [[Wikipedia:List of information graphics software]].<br />
<br />
* {{App|Extrema|Visualization and data analysis tool.|http://sourceforge.net/projects/extrema|{{AUR|extrema}}{{Broken package link|{{aur-mirror|extrema}}}}}}<br />
* {{App|[[Wikipedia:Fityk|Fityk]]|Curve fitting and data analysis application, predominantly used to fit analytical, bell-shaped functions to experimental data.|http://fityk.nieto.pl/|{{AUR|fityk}}}}<br />
* {{App|[[Wikipedia:gnuplot|Gnuplot]]|Command-line program that can generate 2D and 3D plots of functions, data, and data fits. |http://www.gnuplot.info/|{{Pkg|gnuplot}}}}<br />
* {{App|[[Wikipedia:Grace (plotting tool)|Grace]]|WYSIWYG 2D graph plotting tool.|http://plasma-gate.weizmann.ac.il/Grace/|{{Pkg|grace}} {{AUR|qtgrace}} {{AUR|gracegtk}}}}<br />
* {{App|[[Wikipedia:LabPlot|LabPlot]]|Free software data analysis and visualization application, similar to SciDAVis.|http://labplot.sourceforge.net/|{{AUR|labplot2}}{{Broken package link|{{aur-mirror|labplot2}}}}}}<br />
* {{App|[[Wikipedia:QtiPlot|QtiPlot]]|Platform-independent application used for interactive scientific graphing and data analysis, similar to the proprietary [[Wikipedia:Origin (software)|Origin]] or [[Wikipedia:SigmaPlot|SigmaPlot]].|http://www.qtiplot.com/|{{Pkg|qtiplot}}}}<br />
* {{App|[[Wikipedia:ROOT|ROOT]]|Data analysis program and library (originally for particle physics) developed by CERN.|http://root.cern.ch/drupal/|{{AUR|root}}}}<br />
* {{App|[[Wikipedia:SciDAVis|SciDAVis]]|Fork of QtiPlot with the goal of being better documented and more user friendly.|http://scidavis.sourceforge.net/|{{AUR|scidavis}}}}<br />
See also [[List of applications#Spreadsheets]]<br />
<br />
=== Chemistry and biology ===<br />
<br />
====Computational biology and bioinformatics====<br />
<br />
See also [[Wikipedia:List of open source bioinformatics software]].<br />
<br />
* {{App|[[Wikipedia:BALL|BALL]] (Biochemical Algorithms Library)|Application framework in C++ that provides an extensive set of data structures as well as classes for molecular mechanics, advanced solvation methods, comparison and analysis of protein structures, file import/export, and visualization.|http://www.ball-project.org/|{{AUR|ball}}}}<br />
* {{App|[[Wikipedia:BioJava|BioJava]]|Set of Java tools for computational biology, as well as bioinformatics.|http://biojava.org/wiki/Main_Page|{{AUR|biojava}}}}<br />
* {{App|[[Wikipedia:Biopython|Biopython]]|Python package with tools for computational biology, as well as bioinformatics.|http://biopython.org/wiki/Biopython|{{Pkg|python-biopython}} {{Pkg|python2-biopython}}}}<br />
* {{App|[[Wikipedia:EMBOSS|EMBOSS]] (European Molecular Biology Open Software Suite)|Open source software analysis package specially developed for the needs of the molecular biology and bioinformatics user community.|http://emboss.sourceforge.net/|{{AUR|emboss}}}}<br />
* {{App|[[Wikipedia:MEGA, Molecular Evolutionary Genetics Analysis|MEGA]] (Molecular Evolutionary Genetics Analysis)|Integrated tool for conducting automatic and manual sequence alignment, inferring phylogenetic trees, mining web-based databases, estimating rates of molecular evolution, inferring ancestral sequences, and testing evolutionary hypotheses.|http://www.megasoftware.net/}}<br />
* {{App|[[Wikipedia:MUMmer|MUMmer]]|Bioinformatics software system for sequence alignment based on suffix trees.|http://mummer.sourceforge.net/|{{AUR|mummer}}}}<br />
* {{App|[[Wikipedia:UGENE|UGENE]]|Application that integrates dozens of well-known biological tools and algorithms, providing both graphical user and command-line interfaces.|http://ugene.unipro.ru/|{{AUR|ugene}}}}<br />
<br />
==== Molecules ====<br />
<br />
===== Viewers =====<br />
<br />
See also [[Wikipedia:List of molecular graphics systems]].<br />
<br />
* {{App|[[Wikipedia:Avogadro_(software)|Avogadro]]|Editor, viewer and simulator for 3D molecule structures (also supports downloading files from the [[Wikipedia:Protein Data Bank|Protein Data Bank]]).|http://avogadro.openmolecules.net/wiki/Main_Page|{{Pkg|avogadro}}}}<br />
* {{App|BALLView|Standalone molecular modeling and visualization application, part of the [[Wikipedia:BALL|BALL]] framework.|http://www.ballview.org/|{{AUR|ball}}}}<br />
* {{App|[[Wikipedia:Ghemical|Ghemical]]|Computational chemistry software package used to edit, view and simulate molecular structures.|http://bioinformatics.org/ghemical/ghemical/index.html|{{AUR|ghemical}}}}<br />
* {{App|[[Wikipedia:PyMOL|PyMOL]]|Open-source molecular visualization system that can produce high quality 3D images of small molecules and biological macromolecules, such as proteins.|http://pymol.org|{{Pkg|pymol}}}}<br />
* {{App|[[Wikipedia:RasMol|RasMol]]|Computer program written for molecular graphics visualization intended and used primarily for the depiction and exploration of biological macromolecule structures.|http://www.rasmol.org/|{{AUR|rasmol}}{{Broken package link|{{aur-mirror|rasmol}}}}}}<br />
<br />
===== Drawing =====<br />
<br />
* {{App|[[Wikipedia:BKchem|BKChem]]|Practical and goodlooking skeletal formula molecule drawing program.|http://bkchem.zirael.org/|{{AUR|bkchem}}}}<br />
* {{App|[[Wikipedia:Chemtool|Chemtool]]|GTK+-based program for drawing chemical structural formulas.|http://ruby.chemie.uni-freiburg.de/~martin/chemtool/chemtool.html|{{Pkg|chemtool}}}}<br />
* {{App|EasyChem|Simple skeletal formula molecule drawing program with a focus on producing press-quality figures.|http://easychem.sourceforge.net/|{{AUR?|easychem}}}}<br />
* {{App|[[Wikipedia:Gabedit|Gabedit]]|Graphical user interface to computational chemistry packages like [[Wikipedia:GAMESS (US)|GAMESS]], [[Wikipedia:Gaussian (software)|Gaussian]], [[Wikipedia:MOLCAS|MOLCAS]], [[Wikipedia:MOLPRO|MOLPRO]], [[Wikipedia:MPQC|MPQC]], [[Wikipedia:MOPAC|OpenMopac]], [[Wikipedia:PC GAMESS|Firefly]] (previously PC GAMESS) and [[Wikipedia:Q-Chem|Q-Chem]].|http://gabedit.sourceforge.net/|{{AUR|gabedit}}{{Broken package link|{{aur-mirror|gabedit}}}}}}<br />
* {{App|[[Wikipedia:XDrawChem|XDrawChem]]|Extensive skeletal formula molecule drawing program (includes spectroscopy prediction).|http://xdrawchem.sourceforge.net/|{{AUR|xdrawchem}}{{Broken package link|{{aur-mirror|xdrawchem}}}}}}<br />
<br />
===== Modeling =====<br />
<br />
* {{App|[[GROMACS]] (GROningen MAchine for Chemical Simulations)|Versatile package to perform molecular dynamics, i.e. simulate the Newtonian equations of motion for systems with hundreds to millions of particles.|http://www.gromacs.org|{{AUR|gromacs}}}} <br />
* {{App|[[Wikipedia:Quantum ESPRESSO|Quantum ESPRESSO]]|Integrated suite of applications for electronic-structure calculations and materials modeling at nanoscale. It is based on density-functional theory, plane waves, and pseudopotentials (both norm-conserving and ultrasoft).|http://www.quantum-espresso.org/|{{AUR|quantum-espresso}}{{Broken package link|{{aur-mirror|quantum-espresso}}}}}}<br />
<br />
==== Periodic table ====<br />
<br />
* {{App|gElemental|Periodic table of the elements with additional information.|http://freshmeat.net/projects/gelemental|{{AUR|gelemental}}}}<br />
* {{App|[[Wikipedia:Kalzium|Kalzium]]|Periodic table of the elements with molecule editor and equation solver from the [[KDE]] desktop.|http://edu.kde.org/kalzium/|{{Pkg|kdeedu-kalzium}}}}<br />
* {{App|eperiodique|A simple Periodic Table Of Elements viewer using the EFL.|http://eperiodique.sourceforge.net/|{{AUR|eperiodique}}}}<br />
<br />
==== Biochemistry ====<br />
<br />
* {{App|[[Wikipedia:Bioclipse|Bioclipse]]|Java-based visual platform for biochemistry that uses the Eclipse Rich Client Platform (RCP).|http://www.bioclipse.net/|{{AUR?|bioclipse}}}}<br />
<br />
==== Image manipulation ====<br />
<br />
* {{App|[[Wikipedia:ImageJ|ImageJ]]|Java-based image processing and analysing program that provides extensibility via plugins and macros. It is widely used in microscopy (e.g. for cell counting).|http://rsb.info.nih.gov/ij|{{AUR|imagej}}}}<br />
* {{App|[[Wikipedia:FIJI_(software)|Fiji]]|ImageJ distribution (and soon ImageJ2) with a lot of plugins organized into a coherent menu structure.|http://fiji.sc|{{AUR|fiji-binary}}}}<br />
<br />
=== Astronomy ===<br />
<br />
* {{App|[[Wikipedia:Celestia|Celestia]]|3D astronomy simulation program that allows users to travel through an extensive universe, modeled after reality, at any speed, in any direction and at any time in history.|http://www.shatters.net/celestia/|{{Pkg|celestia}}}}<br />
* {{App|GIMP Astronomy Plugins|Set of GIMP plugins for astronomical image processing.|http://hennigbuam.de/georg/gimp.html|{{AUR|gimp-plugin-astronomy}}}}<br />
* {{App|GoQat|Camera acquisition software, especially for QSI cameras, that provides other features such as autoguiding, focusing help and others.|http://canburytech.net/GoQat/|{{AUR|goqat}}}}<br />
* {{App|[[Wikipedia:KStars|KStars]]|Planetarium application that provides an accurate graphical simulation of the night sky, from any location on Earth, at any date and time. It is included in KDE Edu.|http://edu.kde.org/kstars/|{{Pkg|kstars}}}}<br />
* {{App|Open PHD Guiding|Telescope autoguiding software based on the famous PHD Guiding.|http://code.google.com/p/open-phd-guiding/|{{AUR|open-phd-guiding-svn}}}}<br />
* {{App|Qastrocam-g2|Webcam acquisition software for planetary imaging.|http://sourceforge.net/projects/qastrocam-g2/|{{AUR|qastrocam-g2}}}}<br />
* {{App|[[Wikipedia:Cartes du Ciel|Skychart / Cartes du Ciel]]|Planetarium that maps out and labels most of the constellations, planets, and objects you can see with a telescope. It can also download Digitized Sky Survey Charts and superimpose images over these charts.|http://www.ap-i.net/skychart/start/|{{AUR|skychart}}}}<br />
* {{App|StarPlot|3-dimensional star chart viewer.|http://starplot.org/|{{AUR|starplot}}}}<br />
* {{App|[[Wikipedia:Stellarium (computer program)|Stellarium]]|Beautiful 3D planetarium that uses OpenGL to render a realistic sky in real time.|http://www.stellarium.org/|{{Pkg|stellarium}}}}<br />
* {{App|[[Wikipedia:XEphem|XEphem]]|Motif-based ephemeris and planetarium program.|http://www.clearskyinstitute.com/xephem/xephem.html|{{AUR|xephem}}}}<br />
<br />
=== Physics ===<br />
<br />
==== Electronics ====<br />
<br />
See also [[Wikipedia:Comparison of EDA software]].<br />
<br />
===== Digital logic =====<br />
<br />
Digital logic software are mainly simple educational tools that intended for only designing and simulating logic circuits.<br />
<br />
* {{App|atanua|Real time logic simulator.|http://sol.gfxile.net/atanua/|{{AUR|atanua}}{{Broken package link|{{aur-mirror|atanua}}}}}}<br />
* {{App|eqntott|Utility to convert a set of boolean logic equations to a PLA-esque truth table.|https://code.google.com/p/eqntott/|{{AUR|eqntott}}{{Broken package link|{{aur-mirror|eqntott}}}}}}<br />
* {{App|espresso|Heuristic logic minimizer, reduces the amount of gates required for digital circuits.|https://code.google.com/p/eqntott/|{{AUR|espresso}}{{Broken package link|{{aur-mirror|espresso}}}}}}<br />
* {{App|giraffe|A simple logic circuit simulator written in Java.|http://nbenoit.tuxfamily.org/|{{AUR|giraffe}}{{Broken package link|{{aur-mirror|giraffe}}}}}}<br />
* {{App|glogic|An educational graphical logic circuit simulator.|https://launchpad.net/glogic|{{AUR|glogic}}}}<br />
* {{App|KLogic|Digital logic design and simulation software for KDE which also simulate karnaugh diagrams.|http://www.a-rostin.de/|{{AUR|klogic}}{{Broken package link|{{aur-mirror|klogic}}}}}}<br />
* {{App|Logisim|Educational digital logic design and simulation software, written in Java, officially its development has stopped.|http://sourceforge.net/projects/circuit/|{{AUR|logisim}}}}<br />
* {{App|Logisim Evolution|Project which continue the development of the original Logisim with new features, written in Java.|https://github.com/reds-heig/logisim-evolution|{{AUR|logisim-evolution}}{{Broken package link|{{aur-mirror|logisim-evolution}}}}}}<br />
* {{App|SmartSim|Simple and beautiful digital logic circuit design and simulation software, mainly target teachers and students, very lightweight and cross platform, GPL licensed, written in Vala.|http://smartsim.org.uk|{{AUR|smartsim-git}}}}<br />
<br />
===== HDL =====<br />
<br />
* {{App|[[Altera Design Software]]|A set of design tools for Altera's FPGA chips that includes Quartus II and ModelSim-Altera.|http://www.altera.com/products/software/sfw-index.jsp|only ModelSim-Altera is packaged {{AUR|modelsim-altra}}{{Broken package link|package not found}}}}<br />
* {{App|[[Xilinx ISE WebPACK]]|FPGA programmable logic design suit.|http://www.xilinx.com/products/design-tools/ise-design-suite/ise-webpack.html|not packaged, installation instruction in the wiki page.}}<br />
<br />
===== MCU IDE =====<br />
<br />
* {{App|[[Arduino]]|Arduino prototyping platform SDK.|http://arduino.cc/en/Main/Software|{{AUR|arduino}}}}<br />
* {{App|[[Wikipedia:KTechLab|KTechLab]]|IDE for electronic and PIC microcontroller circuit design and simulation featuring an extensive circuit designer with autorouting and simulation of all common electronic components and logic elements.|http://sourceforge.net/projects/ktechlab/|{{AUR|ktechlab-zoltan_p-git}}{{Broken package link|{{aur-mirror|ktechlab-zoltan_p-git}}}}}}<br />
<br />
===== Schematic capture editor =====<br />
<br />
* {{App|[[gEDA]]|Full suite and toolkit of Electronic Design Automation tools that are used for electrical circuit design, schematic capture, simulation, prototyping, and production.|http://www.geda-project.org/|{{Pkg|geda-gaf}}}}<br />
* {{App|[[Wikipedia:KiCAD|KiCAD]]|Software suite for electronic design automation (EDA) that facilitates the design of schematics for electronic circuits and their conversion to PCB (printed circuit board).|http://www.kicad-pcb.org/display/KICAD/KiCad+EDA+Software+Suite|{{Pkg|kicad}}}}<br />
* {{App|[[Wikipedia:Oregano (software)|Oregano]]|Graphical software application for schematic capture and simulation of electrical circuits. The actual simulation is done by the [[Wikipedia:Ngspice|ngspice]] or [[Wikipedia:GNU Circuit Analysis Package|Gnucap]] engines.|https://github.com/drahnr/oregano|{{AUR|oregano}}}}<br />
* {{App|QElectroTech|Application used to draw advanced electrical circuits.|http://qelectrotech.org/|{{AUR|qelectrotech}}}}<br />
* {{App|[[Wikipedia:Quite Universal Circuit Simulator|Qucs]]|Electronics circuit simulator application that gives you the ability to set up a circuit with a graphical user interface and simulate its large-signal, small-signal and noise behaviour.|http://qucs.sourceforge.net/|{{Pkg|qucs}}}}<br />
<br />
==== Physics simulation ====<br />
<br />
* {{App|[[Wikipedia:Code_Aster|Code_Aster]]|Software package for Civil and Structural Engineering finite element analysis and numeric simulation in structural mechanics.|http://www.code-aster.org/V2/spip.php?rubrique2|{{AUR|aster}}}}<br />
* {{App|[[Wikipedia:EPANET|EPANET]]|EPANET performs extended period simulation of the water movement and quality behavior within pressurized pipe networks.|http://www.epa.gov/|{{AUR|epanet2-git}}}}<br />
* {{App|[[Wikipedia:Step (software)|Step]]|Two-dimensional physics simulation engine that is included in the KDE desktop as part of KDE Edu.|http://edu.kde.org/step/|{{Pkg|step}}}}<br />
* {{App|[[Wikipedia:SWMM|SWMM]]|Storm Water Management Model is a dynamic rainfall-runoff-subsurface runoff simulation model used for simulation of the surface/subsurface hydrology quantity and quality.|http://www.epa.gov/|{{AUR|swmm5-git}}}}<br />
<br />
==== Unit conversion ====<br />
<br />
* {{App|ConvertAll|Unit conversion application that allows one to combine units in any way (e.g. inches per decade), even if it does not make sense.|http://convertall.bellz.org/|{{AUR|convertall}}}} <br />
* {{App|Gonvert|Conversion utility that allows conversion between many units like CGS, Ancient, Imperial with many categories like length, mass, numbers, etc.|http://www.unihedron.com/projects/gonvert/|{{AUR|gonvert}}}} <br />
* {{App|[[Wikipedia:GNU Units|Units]]|Command-line unit converter and calculator that can handle multiplicative scale changes, nonlinear conversions such as Fahrenheit to Celsius or wire gauge and others.|http://www.gnu.org/s/units/|{{Pkg|units}}}}</div>Ygyfygyhttps://wiki.archlinux.org/index.php?title=Locale&diff=409611Locale2015-11-20T17:15:40Z<p>Ygyfygy: added termite to UTF-8 terminals list</p>
<hr />
<div>[[Category:Internationalization]]<br />
[[ar:Locale]]<br />
[[cs:Locale]]<br />
[[de:Locale]]<br />
[[es:Locale]]<br />
[[fr:Locale]]<br />
[[it:Locale]]<br />
[[ja:ロケール]]<br />
[[ko:Locale]]<br />
[[nl:Locale]]<br />
[[ru:Locale]]<br />
[[uk:Locale]]<br />
[[zh-CN:Locale]]<br />
Locales are used by {{Pkg|glibc}} and other locale-aware programs or libraries for rendering text, correctly displaying regional monetary values, time and date formats, alphabetic idiosyncrasies, and other locale-specific standards.<br />
<br />
== Generating locales ==<br />
<br />
Before a locale can be enabled on the system, it has to be generated. The current generated/available locales can be viewed with:<br />
<br />
$ locale -a<br />
<br />
The locales that can be generated are listed in the {{ic|/etc/locale.gen}} file: their names are defined using the format {{ic|[language][_TERRITORY][.CODESET][@modifier]}}. To generate a locale, first uncomment the corresponding line in the file (or comment to remove); when doing this, also consider localizations needed by other users on the system and specific [[#Supported variables|variables]]. For example, for American-English uncomment {{ic|en_US.UTF-8 UTF-8}}. <br />
<br />
{{hc|/etc/locale.gen|<br />
...<br />
#en_SG ISO-8859-1<br />
en_US.UTF-8 UTF-8<br />
#en_US ISO-8859-1<br />
...<br />
}}<br />
<br />
When done, save the file and generate the uncommented locale(s) by executing:<br />
<br />
# locale-gen<br />
<br />
{{Note|<br />
* {{ic|locale-gen}} also runs with every update of {{Pkg|glibc}}.<br />
* {{ic|UTF-8}} is recommended over other options. [http://utf8everywhere.org/]}}<br />
<br />
== Setting the locale ==<br />
<br />
To display the currently set locale and its related environmental settings, type:<br />
<br />
$ locale<br />
<br />
The locale to be used, chosen among the previously generated ones, is set in {{ic|locale.conf}} files, each of which must contain a new-line separated list of environment variable assignments, for example:<br />
<br />
{{hc|locale.conf|2=<br />
LANG=en_AU.UTF-8<br />
LC_COLLATE=C<br />
LC_TIME=en_DK.UTF-8<br />
}}<br />
<br />
* A '''system-wide''' locale can be set by creating or editing {{ic|/etc/locale.conf}}. The same result can be obtained with the ''localectl'' command:<br />
<br />
:{{bc|1=# localectl set-locale LANG=en_US.UTF-8}}<br />
<br />
:See {{ic|man 1 localectl}} for details.<br />
<br />
:{{Tip|During system installation, if the output of ''locale'' is to your liking, you can save a little time by doing: {{ic|locale > /etc/locale.conf}} while chrooted.}}<br />
<br />
* The system-wide locale can be overridden in each '''user session''' by creating or editing {{ic|~/.config/locale.conf}} (or, in general, {{ic|$XDG_CONFIG_HOME/locale.conf}} or {{ic|$HOME/.config/locale.conf}}).<br />
<br />
:{{Tip|<br />
:* This can also allow keeping the logs in {{ic|/var/log}} in English while using the local language in the user environment.<br />
:* You can create a {{ic|/etc/skel/.config/locale.conf}} file so that any new users added using ''useradd'' and the {{ic|-m}} option will have {{ic|~/.config/locale.conf}} automatically generated.}}<br />
<br />
The precedence of these {{ic|locale.conf}} files is defined in {{ic|/etc/profile.d/locale.sh}}.<br />
<br />
See [[#Supported variables]], {{ic|man 5 locale.conf}} and related for details.<br />
<br />
Once {{ic|locale.conf}} files have been created or edited, their new values will take effect for new sessions at login. To have the current environment use the new settings, do:<br />
<br />
$ LANG= source /etc/profile.d/locale.sh<br />
<br />
{{Note|The {{ic|LANG}} variable has to be unset first, otherwise {{ic|locale.sh}} will not update the values from {{ic|locale.conf}}. Only new and changed variables will be updated, variables removed from {{ic|locale.conf}} will still be set in the session.}}<br />
<br />
=== Other uses ===<br />
<br />
Locale variables can also be defined with the standard methods as explained in [[Environment variables]].<br />
<br />
For example, in order to test or debug a particular application during development, it could be launched with something like:<br />
<br />
$ LANG="en_AU.UTF-8" ./my_application.sh<br />
<br />
Similarly, to set the locale for all processes run from the current shell (for example, during system installation):<br />
<br />
$ export LANG="en_AU.UTF-8"<br />
<br />
== Supported variables ==<br />
<br />
{{ic|locale.conf}} files support the following environment variables:<br />
<br />
* [[#LANG: default locale|LANG]]<br />
* [[#LANGUAGE: fallback locales|LANGUAGE]]<br />
* {{ic|LC_CTYPE}}<br />
* {{ic|LC_NUMERIC}}<br />
* [[#LC_TIME: date and time format|LC_TIME]]<br />
* [[#LC_COLLATE: collation|LC_COLLATE]]<br />
* {{ic|LC_MONETARY}}<br />
* {{ic|LC_MESSAGES}}<br />
* {{ic|LC_PAPER}}<br />
* {{ic|LC_NAME}}<br />
* {{ic|LC_ADDRESS}}<br />
* {{ic|LC_TELEPHONE}}<br />
* {{ic|LC_MEASUREMENT}}<br />
* {{ic|LC_IDENTIFICATION}}<br />
<br />
=== LANG: default locale ===<br />
<br />
The locale set for this variable will be used for all the {{ic|LC_*}} variables that are not explicitly set.<br />
<br />
=== LANGUAGE: fallback locales ===<br />
<br />
Programs which use gettext for translations respect the {{Ic|LANGUAGE}} option in addition to the usual variables. This allows users to specify a [http://www.gnu.org/software/gettext/manual/gettext.html#The-LANGUAGE-variable list] of locales that will be used in that order. If a translation for the preferred locale is unavailable, another from a similar locale will be used instead of the default. For example, an Australian user might want to fall back to British rather than US spelling:<br />
<br />
{{hc|locale.conf|2=<br />
LANG=en_AU<br />
LANGUAGE=en_AU:en_GB:en<br />
}}<br />
<br />
=== LC_TIME: date and time format ===<br />
<br />
If {{ic|LC_TIME}} is set to {{ic|en_US.UTF-8}}, for example, the date format will be "MM/DD/YYYY". If wanting to use the the ISO 8601 date format of "YYYY-MM-DD" use:<br />
<br />
{{hc|locale.conf|2=<br />
LC_TIME=en_DK.UTF-8<br />
}}<br />
<br />
=== LC_COLLATE: collation ===<br />
<br />
This variable governs the collation rules used for sorting and regular expressions.<br />
<br />
Setting the value to {{ic|C}} can for example make the ''ls'' command sort dotfiles first, followed by uppercase and lowercase filenames:<br />
<br />
{{hc|locale.conf|2=<br />
LC_COLLATE=C<br />
}}<br />
<br />
See also [http://superuser.com/a/448294/175967].<br />
<br />
To get around potential issues, Arch used to set {{ic|1=LC_COLLATE=C}} in {{ic|/etc/profile}}, but this method is now deprecated.<br />
<br />
== LC_ALL ==<br />
<br />
The locale set for this variable will always override {{ic|LANG}} and all the other {{ic|LC_*}} variables, whether they are set or not. <br />
<br />
{{ic|LC_ALL}} is the only {{ic|LC_*}} variable, which '''cannot''' be set in {{ic|locale.conf}} files: it is meant to be used only for testing or troubleshooting purposes, for example in {{ic|/etc/profile}}.<br />
<br />
== Customizing locales ==<br />
<br />
{{Accuracy|1=Modified locales will not survive the upgrade of {{pkg|glibc}} because the relevant file is not in the [https://projects.archlinux.org/svntogit/packages.git/tree/trunk/PKGBUILD?h=packages/glibc#n19 backup field] in the PKGBUILD. Custom locales should be ''created'' instead.}}<br />
<br />
Locales are defined in text files located in {{ic|/usr/share/i18n/locales/}} and can be edited to adapt to particular needs.<br />
<br />
After editing a locale file, do not forget to [[#Generating locales|re-generate]] the locales for the changes to take effect after reboot.<br />
<br />
=== Setting the first day of the week ===<br />
<br />
In many countries the first day of the week is Monday. To adjust this, change or add the following lines:<br />
<br />
{{hc|/usr/share/i18n/locales/''chosen_locale''|<br />
LC_TIME<br />
[...]<br />
week 7;19971130;5<br />
first_weekday 2<br />
first_workday 2<br />
}}<br />
<br />
== Tips and tricks ==<br />
<br />
=== Launch application with different locale from terminal ===<br />
<br />
For example launch Abiword with Hebrew locale:<br />
<br />
$ env LANG=he_IL.UTF-8 abiword &<br />
<br />
=== Launch application with different locale from desktop ===<br />
<br />
Copy the ''.desktop'' file to the user home directory so it will take precedence:<br />
<br />
$ cp /usr/share/applications/abiword.desktop ~/.local/share/applications/<br />
<br />
Edit the {{ic|Exec}} command:<br />
<br />
{{hc|~/.local/share/applications/abiword.desktop|<br />
abiword.desktop|2=<br />
Exec=env LANG=he_IL.UTF-8 abiword %U<br />
}}<br />
<br />
=== Using Python, ViM and UTF-8 ===<br />
<br />
When executing {{ic|:!python -c "import sys; print(sys.stdout.encoding)"}} in ViM, the output may be {{ic|ANSI_X3.4-1968}}, even if the locale is set correctly everyhere.<br />
Set the {{ic|PYTHONIOENCODING}} environment variable to {{ic|utf-8}} to remedy the situation.<br />
<br />
== Troubleshooting ==<br />
<br />
=== My terminal does not support UTF-8 ===<br />
<br />
The following lists some (not all) terminals that support UTF-8:<br />
<br />
* gnustep-terminal<br />
* konsole<br />
* [[mlterm]]<br />
* [[rxvt-unicode]]<br />
* [[st]]<br />
* [[termite]]<br />
* [[List_of_applications/Utilities#VTE-based|VTE-based terminals]]<br />
* [[xterm]] - Must be run with the argument {{ic|-u8}}. Alternatively run ''uxterm'', which is provided by the package {{Pkg|xterm}}.<br />
<br />
==== Gnome-terminal or rxvt-unicode does not support UTF-8 ====<br />
<br />
You need to launch these applications from a UTF-8 locale or they will drop UTF-8 support. Enable the {{ic|en_US.UTF-8}} locale (or your local UTF-8 alternative) per the instructions above and set it as the default locale, then reboot.<br />
<br />
=== My system is still using wrong language ===<br />
<br />
It is possible that the environment variables are redefined in other files than {{ic|locale.conf}}, for example {{ic|~/.pam_environment}}. See [[Environment variables#Defining variables]] for details.<br />
<br />
== See also ==<br />
<br />
* [http://www.gentoo.org/doc/en/guide-localization.xml Gentoo Linux Localization Guide]<br />
* [http://www.gentoo-wiki.info/Locales Gentoo Wiki Archives: Locales]<br />
* [http://demo.icu-project.org/icu-bin/locexp?_=en_US&x=col ICU's interactive collation testing]<br />
* [http://www.openi18n.org/ Free Standards Group Open Internationalisation Initiative]<br />
* [http://pubs.opengroup.org/onlinepubs/007908799/xbd/locale.html ''The Single UNIX Specification'' definition of Locale] by The Open Group<br />
* [https://help.ubuntu.com/community/EnvironmentVariables#Locale_setting_variables Locale environment variables]</div>Ygyfygyhttps://wiki.archlinux.org/index.php?title=List_of_applications/Internet&diff=407909List of applications/Internet2015-11-01T19:33:29Z<p>Ygyfygy: Added vuze-extreme-mod</p>
<hr />
<div><noinclude><br />
[[Category:Internet applications]]<br />
[[cs:List of applications/Internet]]<br />
[[es:List of applications/Internet]]<br />
[[it:List of applications/Internet]]<br />
[[ja:アプリケーション一覧/インターネット]]<br />
[[ru:List of applications/Internet]]<br />
[[zh-cn:List of applications/Internet]]<br />
[[zh-tw:List of applications/Internet]]<br />
{{List of applications navigation}}<br />
</noinclude><br />
== Internet ==<br />
<br />
{{Note|1=For possibly more up to date selection of applications, try checking the [https://aur.archlinux.org/packages.php?O=0&K=&do_Search=Go&detail=1&C=13&SeB=nd&SB=n&SO=a&PP=50 AUR 'network' category]}}<br />
<br />
=== Network managers ===<br />
<br />
* {{App|[[Connman]]|Daemon for managing internet connections within embedded devices running the Linux operating system. Comes with a command-line client, plus Enlightenment, GTK and Dmenu clients are available.|https://connman.net/|{{Pkg|connman}}}}<br />
* {{App|[[netctl]]|Simple and robust tool to manage network connections via profiles. Intended for use with [[systemd]].|https://projects.archlinux.org/netctl.git/|{{Pkg|netctl}}}}<br />
* {{App|[[NetworkManager]]|Manager that provides wired, wireless, mobile broadband and OpenVPN detection with configuration and automatic connection.|https://wiki.gnome.org/Projects/NetworkManager|{{Pkg|networkmanager}}}}<br />
* {{App|[[systemd-networkd]]|Native [[systemd]] daemon that manages network configuration. It includes support for basic network configuration through udev and networkd. The service is available with systemd > 210.|http://www.freedesktop.org/software/systemd/man/systemd-networkd.service.html|{{Pkg|systemd}}}}<br />
* {{App|[[Wicd]]|Wireless and wired connection manager with few dependencies. Comes with an ncurses interface, and a GTK interface {{Pkg|wicd-gtk}} is available.|http://wicd.sourceforge.net/|{{Pkg|wicd}}}}<br />
<br />
=== Web browsers ===<br />
<br />
See also [[Wikipedia:Comparison of web browsers]].<br />
<br />
==== Console ====<br />
<br />
* {{App|[[Wikipedia:ELinks|ELinks]]|Advanced and well-established feature-rich text mode web browser (Links fork, barely supported since 2009).|http://elinks.or.cz/|{{Pkg|elinks}}}}<br />
* {{App|[[Wikipedia:Links (web browser)|Links]]|Text WWW browser. Includes a console version [links] similar to Lynx, and a graphical X-window/framebuffer version [links -g] (must be compiled in, Arch has both) with CSS, image rendering, pull-down menus.|http://links.twibright.com/|{{Pkg|links}}}}<br />
* {{App|[[Wikipedia:Lynx (web browser)|Lynx]]|Text browser for the World Wide Web.|http://lynx.isc.org|{{Pkg|lynx}}}}<br />
* {{App|retawq|Interactive, multi-threaded network client (web browser) for text terminals.|http://retawq.sourceforge.net/|{{AUR|retawq}}}}<br />
* {{App|[[Wikipedia:W3m|w3m]]|Pager/text-based web browser. It has vim-like keybindings, and is able to display images. It has javascript support too.|http://w3m.sourceforge.net/|{{Pkg|w3m}}}}<br />
<br />
==== Graphical ====<br />
<br />
===== Gecko-based =====<br />
<br />
See also [[Wikipedia:Gecko (software)]].<br />
<br />
* {{App|[[Firefox]]|Extensible browser from Mozilla based on Gecko with fast rendering.|https://mozilla.com/firefox|{{Pkg|firefox}}}}<br />
* {{App|Seamonkey|Continuation of the Mozilla Internet Suite.|http://www.seamonkey-project.org/|{{Pkg|seamonkey}}}}<br />
* {{App|[[Wikipedia:Conkeror|Conkeror]]|Keyboard-based browser modeled after [[Emacs]] using [[Wikipedia:XULRunner|XULRunner]]. Customizable via JavaScript.|http://repo.or.cz/w/conkeror.git/|{{AUR|conkeror-git}}}}<br />
<br />
====== Firefox forks ======<br />
<br />
{{Warning|The following browsers are third-party builds of Firefox. Please direct any support requests to their respective creators.}}<br />
<br />
* {{App|[[Wikipedia:Mozilla Corporation software rebranded by the Debian project#IceWeasel|Iceweasel]]|Fork of Firefox developed by Debian Linux. The main difference is that it does not include any trademarked Mozilla artwork. See [http://web.glandium.org/blog/?p&#61;97] for more information on Iceweasel's existence.|https://wiki.debian.org/Iceweasel|{{AUR|iceweasel}}}}<br />
* {{App|[[Wikipedia:GNU IceCat|GNU IceCat]]|Web browser distributed by the GNU Project, stripped of non-free components and with additional privacy extensions. Release cycle may be delayed compared to Mozilla Firefox.|https://www.gnu.org/software/gnuzilla/|{{AUR|icecat}}}}<br />
* {{App|[[Wikipedia:Pale Moon (web browser)|Pale Moon]]|Fork based on Firefox, using a Firefox 3+ interface through selective use of add-ons. Firefox add-ons may not be compatible. [https://addons.palemoon.org/firefox/incompatible/] Compiled for SSE2, with disabled optional code and no support for newer Firefox features such as cache2, e10s, and OTMC.| http://www.palemoon.org/|{{AUR|palemoon-bin}}}}<br />
<br />
===== Blink-based =====<br />
<br />
See also [[Wikipedia:Blink (layout engine)]].<br />
<br />
* {{App|[[Chromium]]|Web browser developed by Google, the open source project behind Google Chrome.|http://www.chromium.org/|{{Pkg|chromium}}}}<br />
* {{App|[[Opera]]|Highly customizable browser with focuses on an adherence to web rendering standards.|http://opera.com|{{Pkg|opera}}}}<br />
<br />
===== Webkit-based =====<br />
<br />
See also [[Wikipedia:Webkit]].<br />
<br />
* {{App|[[Wikipedia:Arora (browser)|Arora]]|Cross-platform web browser built using QtWebKit. Development stopped in January 2012.|https://code.google.com/p/arora/|{{AUR|arora}}}}<br />
* {{App|[[dwb]]|Lightweight, highly customizable web browser based on the WebKit engine with ''vi''-like shortcuts and tiling layouts. As of October 2014 ''dwb'' is [https://bitbucket.org/portix/dwb/pull-request/22/several-cleanups-to-increase-portability/diff#comment-3217936 unmaintained].|http://portix.bitbucket.org/dwb/|{{Pkg|dwb}}}}<br />
* {{App|[[GNOME Web]]|Browser which uses the WebKitGTK+ rendering engine, part of {{Grp|gnome}}.|https://wiki.gnome.org/Apps/Web/|{{Pkg|epiphany}}}}<br />
* {{App|[[Jumanji]]|Highly customizable and functional web browser.|http://pwmt.org/projects/jumanji|{{AUR|jumanji}}{{Broken package link|{{aur-mirror|jumanji}}}}}}<br />
* {{App|[[Luakit]]|Highly configurable, micro-browser framework based on the WebKit engine and the GTK+ toolkit. It is very fast, extensible by Lua and licensed under the GNU GPLv3 license.|http://mason-larobina.github.com/luakit/|{{Pkg|luakit}}}}<br />
* {{App|Maxthon|A browser that combines a minimal design with sophisticated technology to make the web faster, safer, and easier.|http://www.maxthon.cn/|{{AUR|maxthon-browser}}{{Broken package link|{{aur-mirror|maxthon-browser}}}}}}<br />
* {{App|[[Wikipedia:Midori (web browser)|Midori]]|Lightweight web browser based on GTK+ and WebKit.|http://midori-browser.org/|{{Pkg|midori}}}}<br />
* {{App|Otter-browser|Browser aiming to recreate classic Opera (12.x) UI using Qt5.|http://otter-browser.org/|{{AUR|otter-browser}}}}<br />
* {{App|[[Wikipedia:QupZilla|QupZilla]]|New and very fast open source browser based on WebKit core, written in Qt framework.| http://www.qupzilla.com |{{pkg|qupzilla}}}}<br />
* {{App|[[qutebrowser]]|A keyboard-driven, vim-like browser based on PyQt5 and QtWebKit.|https://github.com/The-Compiler/qutebrowser|{{AUR|qutebrowser}}}}<br />
* {{App|[[wikipedia:Rekonq|Rekonq]]|WebKit-based web browser for KDE.|http://rekonq.kde.org/|{{Pkg|rekonq}}}}<br />
* {{App|Sb|Very lightweight WebKit-based browser that uses keybindings to perform most things the URL bar would usually do.|https://github.com/mutantturkey/sb/|{{AUR|sb-git}}{{Broken package link|{{aur-mirror|sb-git}}}}}}<br />
* {{App|SlimBoat|Fast, free secure and powerful web browser based on QtWebkit.|http://www.slimboat.com/|{{AUR|slimboat}}}}<br />
* {{App|Surf|Lightweight WebKit-based browser, which follows the [http://suckless.org/philosophy suckless ideology] (basically, the browser itself is a single C source file).|http://surf.suckless.org|{{Pkg|surf}}}}<br />
* {{App|[[Wikipedia:Uzbl|Uzbl]]|Group of web interface tools which adhere to the Unix philosophy.|http://uzbl.org/|{{Pkg|uzbl-browser}}}}<br />
* {{App|vimb|Fast and lightweight vim like web browser based on the webkit web browser engine and the GTK toolkit.|https://fanglingsu.github.io/vimb/|{{AUR|vimb}}}}<br />
* {{App|[[Vimprobable]]|Browser that behaves like the Vimperator plugin available for Mozilla Firefox. It is based on the WebKit engine and uses the GTK+ bindings.|http://sourceforge.net/apps/trac/vimprobable/|{{AUR|vimprobable-git}}{{Broken package link|{{aur-mirror|vimprobable-git}}}}}}<br />
* {{App|[[Wikipedia:Xombrero|Xombrero]] (formerly known as ''xxxterm'') |Webkit minimalist web browser with sophisticated security features designed-in, BSD style.|https://opensource.conformal.com/wiki/xombrero|{{AUR|xombrero-git}}}}<br />
<br />
===== Other =====<br />
<br />
* {{App|[[Wikipedia:Konqueror|Konqueror]]|Web browser based on Qt and KHTML, part of {{Grp|kdebase}}.|http://konqueror.org/|{{Pkg|kdebase-konqueror}}}}<br />
* {{App|[[Wikipedia:Abaco (web browser)|Abaco]]|Multi-page graphical web browser for the Plan 9 OS.|http://lab-fgb.com/abaco/|{{AUR|abaco}}{{Broken package link|{{aur-mirror|abaco}}}}}}<br />
* {{App|[[Wikipedia:Dillo|Dillo]]|Small, fast graphical web browser built on [[Wikipedia:Fltk|FLTK]].|http://dillo.org/|{{Pkg|dillo}}}}<br />
* {{App|[[Wikipedia:NetSurf|NetSurf]]|Featherweight browser written in C, notable for its slowly developing JavaScript support and fast rendering through its own custom rendering engine.|http://netsurf-browser.org|{{Pkg|netsurf}}}}<br />
<br />
=== Downloaders ===<br />
<br />
==== FTP ====<br />
<br />
===== FTP clients =====<br />
<br />
See also [[Wikipedia:Comparison of FTP client software]].<br />
<br />
* {{App|[[CurlFtpFS]]|Filesystem for accessing FTP hosts; based on FUSE and libcurl.|http://curlftpfs.sourceforge.net/|{{Pkg|curlftpfs}}}}<br />
* {{App|FatRat|Download manager with support for HTTP, FTP, SFTP, BitTorrent, RapidShare and more.|http://fatrat.dolezel.info/|{{AUR|fatrat-git}}}}<br />
* {{App|[[Wikipedia:FileZilla|FileZilla]]|Fast and reliable FTP, FTPS and SFTP client.|http://filezilla-project.org/|{{Pkg|filezilla}}}}<br />
* {{App|[[FtpFs#Fuseftp|fuseftp]]|FTP filesystem written in Perl, using [[Wikipedia:Filesystem in Userspace|FUSE]].|http://freshmeat.net/projects/fuseftp/|{{AUR|fuseftp}}{{Broken package link|{{aur-mirror|fuseftp}}}}}}<br />
* {{App|[[Wikipedia:gFTP|gFTP]]|Multithreaded FTP client for Linux.|http://gftp.seul.org/|{{Pkg|gftp}}}}<br />
* {{App|[[Wikipedia:Lftp|LFTP]]|Sophisticated command-line FTP client.|http://lftp.yar.ru/|{{Pkg|lftp}}}}<br />
* {{App|LftpFS|Read-only filesystem based on lftp (also supports HTTP, FISH, SFTP, HTTPS, FTPS and proxies).|http://lftpfs.sourceforge.net/|{{AUR|lftpfs}}{{Broken package link|{{aur-mirror|lftpfs}}}}}}<br />
* {{App|ncftp|A set of free application programs implementing FTP.|http://www.ncftp.com/|{{Pkg|ncftp}}}}<br />
* {{App|[[Wikipedia:tnftp|tnftp]]|FTP client with several advanced features for [[Wikipedia:NetBSD|NetBSD]].|http://freecode.com/projects/tnftp|{{Pkg|tnftp}}}}<br />
Some file managers like Dolphin, [[GNOME Files]] and [[Thunar]] also provide FTP functionality.<br />
<br />
===== FTP servers =====<br />
<br />
* {{App|bftpd|Small, easy-to-configure FTP server|http://bftpd.sourceforge.net/|{{Pkg|bftpd}}}}<br />
* {{App|[[Proftpd|proFTPd]]|A secure and configurable FTP server|http://www.proftpd.org/|{{AUR|proftpd}}}}<br />
* {{App|[[Pure-FTPd]]|Free (BSD-licensed), secure, production-quality and standard-compliant FTP server.|http://www.pureftpd.org/project/pure-ftpd|{{AUR|pure-ftpd}}}}<br />
* {{App|[[vsftpd]]|Lightweight, stable and secure FTP server for UNIX-like systems.|https://security.appspot.com/vsftpd.html|{{Pkg|vsftpd}}}}<br />
<br />
==== BitTorrent clients ====<br />
<br />
See also [[Wikipedia:Comparison of BitTorrent clients]].<br />
<br />
===== Console =====<br />
<br />
====== Command line / backend ======<br />
Can be used as-is via command line, but all have a choice of front-end options as well.<br />
* {{App|[[aria2]]|Lightweight download utility that supports simultaneous adaptive downloading via HTTP(S), FTP, BitTorrent (DHT, PEX, MSE/PE) protocols and Metalink. It can run as a daemon controlled via a built-in JSON-RPC or XML-RPC interface.|http://aria2.sourceforge.net/|{{Pkg|aria2}}}}<br />
* {{App|[[Ctorrent]]|CTorrent is a BitTorrent client implemented in C++ to be lightweight and quick.|http://www.rahul.net/dholmes/ctorrent/|{{AUR|enhanced-ctorrent}}}}<br />
* {{App|[[Wikipedia:MLDonkey|MLDonkey]]|Multi-protocol P2P client that supports BitTorrent, HTTP, FTP, eDonkey and Direct Connect.|http://mldonkey.sourceforge.net/|{{Pkg|mldonkey}}}}<br />
* {{App|[[Transmission]]|Simple and easy-to-use BitTorrent client with a daemon version, GTK+, Qt GUI, web and CLI front-ends.|http://transmissionbt.com/|{{Pkg|transmission-cli}} (includes backend, daemon, command-line interface, and a Web UI interface)}}<br />
<br />
====== Console Interface ======<br />
* {{App|[[rTorrent]]|Simple and lightweight ncurses BitTorrent client. Requires {{Pkg|libtorrent}} backend.|https://rakshasa.github.io/rtorrent/|{{Pkg|rtorrent}}}}<br />
* {{App|[[Transmission]]|Simple and easy-to-use BitTorrent client with a daemon version, ncurses CLI. Requires {{Pkg|transmission-cli}} backend.|http://transmissionbt.com/|{{Pkg|transmission-remote-cli}}}}<br />
<br />
===== Graphical Interface =====<br />
<br />
====== libtorrent-rasterbar backend ======<br />
<br />
* {{App|[[Deluge]]|User-friendly BitTorrent client written in PyGTK that can run as a daemon.|http://deluge-torrent.org/|{{Pkg|deluge}}}}<br />
* {{App|FatRat|Qt4 based download manager with support for HTTP, FTP, SFTP, BitTorrent, rapidshare and more. Written in C++.|http://fatrat.dolezel.info/|{{AUR|fatrat-git}}}}<br />
* {{App|[[Wikipedia:qBittorrent|qBittorrent]]|Open source (GPLv2) BitTorrent client that strongly resembles µtorrent.|http://www.qbittorrent.org/|{{Pkg|qbittorrent}}}}<br />
* {{App|[[Wikipedia:Tribler|Tribler]]|4th generation file sharing system bittorrent client.|http://www.tribler.org|{{AUR|tribler}}{{Broken package link|{{aur-mirror|tribler}}}}}}<br />
<br />
====== libktorrent backend ======<br />
* {{App|[[Wikipedia:KGet|KGet]]|Download manager for KDE that supports HTTP(S), FTP and BitTorrent. Part of {{Grp|kdenetwork}}.|http://www.kde.org/applications/internet/kget/|{{Pkg|kdenetwork-kget}}}}<br />
* {{App|[[Ktorrent]]|Feature-rich BitTorrent client for KDE.|http://ktorrent.org/|{{Pkg|ktorrent}}}}<br />
<br />
====== others ======<br />
* {{App|QTorrent|BitTorrent client written in PyQt3.|http://thegraveyard.org/qtorrent.php{{Dead link|2012|09|20}}|{{AUR|qtorrent}}{{Broken package link|{{aur-mirror|qtorrent}}}}}}<br />
* {{App|Tixati|P2P client that uses the BitTorrent protocol.|http://www.tixati.com|{{AUR|tixati}}}}<br />
* {{App|[[Transmission]]|Simple and easy-to-use BitTorrent client with daemon version, GTK+, Qt GUI, web and CLI front-ends.|http://transmissionbt.com/|{{Pkg|transmission-gtk}} {{Pkg|transmission-qt}} {{AUR|transmission-remote-gtk}} (remote clients work with the daemon in the -cli package)}}<br />
* {{App|[[Wikipedia:Vuze|Vuze]]|Feature-rich BitTorrent client written in Java (formerly Azureus).|https://www.vuze.com/|{{AUR|vuze}}}}<br />
* {{App|Vuze Plus Extreme Mod|A modded version of the Vuze BitTorrent client with multiple spoofing capabilities.|http://www.sb-innovation.de/f41/vuze-extreme-mod-sb-innovation-5-6-1-3-a-32315/|{{AUR|vuze-extreme-mod}}}}<br />
<br />
==== eDonkey clients ====<br />
<br />
eDonkey is still the second-largest p2p network (see [http://ipoque.com/en/resources/internet-studies Internet Study 2008/2009]).<br />
<br />
See also [[Wikipedia:Comparison of eDonkey software]].<br />
<br />
* {{App|[[aMule]]|Well-known eDonkey/Kad client with a daemon version and GTK+, web, and CLI front-ends.|http://www.amule.org/|{{Pkg|amule}}}}<br />
* {{App|KaMule|KDE graphical front-end for aMule.|http://kde-apps.org/content/show.php?content&#61;150270|{{AUR|kamule}}{{Broken package link|{{aur-mirror|kamule}}}}}}<br />
* {{App|MlDonkey|A multi-network P2P client.|http://mldonkey.sourceforge.net/|{{Pkg|mldonkey}}}}<br />
<br />
==== Gnutella ====<br />
<br />
* {{App|[[Wikipedia:Sharelin|Sharelin]]|Gnutella2 only client with a web UI.|http://sourceforge.net/apps/mediawiki/sharelin|{{AUR|sharelin}}{{Broken package link|{{aur-mirror|sharelin}}}}}}<br />
<br />
==== Video downloaders ====<br />
<br />
* {{App|youtube-dl|Download videos from YouTube and many other platforms.|http://rg3.github.io/youtube-dl|{{Pkg|youtube-dl}}}}<br />
<br />
=== Communication ===<br />
<br />
==== Email clients ====<br />
<br />
See also [[Wikipedia:Comparison of e-mail clients]].<br />
<br />
===== Console =====<br />
<br />
* {{App|alot|An experimental terminal MUA based on [http://notmuchmail.org/ notmuch mail]. It is written in python using the [http://urwid.org/ urwid] toolkit.|https://github.com/pazz/alot|{{AUR|alot}} {{AUR|alot-git}}{{Broken package link|{{aur-mirror|alot-git}}}}}}<br />
* {{App|[[Alpine]]|Fast, easy-to-use and Apache-licensed email client based on [[Wikipedia:Pine (email client)|Pine]].|https://washington.edu/alpine|{{AUR|re-alpine}}{{Broken package link|{{aur-mirror|re-alpine}}}} {{AUR|alpine}}}}<br />
* {{App|[[Wikipedia:Gnus|Gnus]]|Email, NNTP and RSS client for Emacs.|http://gnus.org/|{{AUR|emacs-gnus-git}}}}<br />
* {{App|[[S-nail]]|a mail processing system with a command syntax reminiscent of ''ed'' with lines replaced by messages. Provides the functionality of [[Wikipedia:mailx|mailx]].|http://sourceforge.net/projects/s-nail/|{{Pkg|s-nail}}}}<br />
* {{App|mu/mu4e|Email indexer (mu) and client for emacs (mu4e). Xapian based for fast searches.|http://www.djcbsoftware.nl/code/mu/mu4e.html|{{AUR|mu}}}}<br />
* {{App|[[Mutt]]|Small but very powerful text-based mail client.|http://www.mutt.org/|{{Pkg|mutt}}}}<br />
* {{App|Nmh|A modular mail handling system.|http://www.nongnu.org/nmh/|{{AUR|nmh}} {{AUR|nmh-git}}}}<br />
* {{App|[[notmuch]]|A fast mail indexer built on top of ''xapian''.|http://notmuchmail.org/|{{Pkg|notmuch}} {{Pkg|notmuch-vim}} {{Pkg|notmuch-mutt}}}}<br />
* {{App|[[Sup]]|CLI mail client with very fast searching, tagging, threading and GMail like operation.|http://supmua.org/|{{AUR|sup}}}}<br />
* {{App|Wanderlust|Email client and news reader for Emacs.|http://www.gohome.org/wl/|{{Pkg|wanderlust}}}}<br />
<br />
===== Graphical =====<br />
<br />
* {{App|[[Balsa]]|Simple and light email client that is part of the Gnome project.|http://pawsa.fedorapeople.org/balsa/|{{Pkg|balsa}}}}<br />
* {{App|[[Wikipedia:Claws Mail|Claws Mail]]|Lightweight GTK-based email client and news reader.|http://claws-mail.org/|{{Pkg|claws-mail}}}}<br />
* {{App|[[Evolution]]|Mature and feature-rich e-mail client used in GNOME by default. Part of {{Grp|gnome-extra}}.|https://wiki.gnome.org/Apps/Evolution|{{Pkg|evolution}}}}<br />
* {{App|Geary|Simple desktop mail client built in [[Wikipedia:Vala (programming language)|Vala]].|https://wiki.gnome.org/Apps/Geary|{{Pkg|geary}}}}<br />
* {{App|[[Wikipedia:Kmail|Kmail]]|Mature and feature-rich email client. Part of {{Grp|kdepim}}.|http://kde.org/applications/internet/kmail/|{{Pkg|kdepim-kmail}}}}<br />
* {{App|Manitou Mail|Database-driven email system.|http://www.manitou-mail.org/|{{AUR|manitou-mdx}}{{Broken package link|{{aur-mirror|manitou-mdx}}}} {{AUR|manitou-ui}}{{Broken package link|{{aur-mirror|manitou-ui}}}}}}<br />
* {{App|Roundcubemail|Browser-based multilingual IMAP client with a native application-like user interface.|http://roundcube.net/|{{Pkg|roundcubemail}}}}<br />
* {{App|[[Wikipedia:Sylpheed|Sylpheed]]|Lightweight and user-friendly GTK+ email client.|http://sylpheed.sraoss.jp/en/|{{Pkg|sylpheed}}}}<br />
* {{App|[[Thunderbird]]|Feature-rich email client from Mozilla written in GTK+.|http://www.mozilla.org/thunderbird/|{{Pkg|thunderbird}}}}<br />
* {{App|Trojitá|Qt IMAP email client. Only supports one IMAP account.|http://trojita.flaska.net/|{{Pkg|trojita}}}}<br />
<br />
==== Instant messaging ====<br />
<br />
See also [[Wikipedia:Comparison of instant messaging protocols]].<br />
<br />
This section lists all software with [[Wikipedia:Instant messaging|instant messaging]] support. Particularly, that are client and server applications.<br />
<br />
===== IRC clients =====<br />
<br />
See also [[Wikipedia:Comparison of Internet Relay Chat clients]].<br />
<br />
{{Note|Most web browsers and many IM clients also support IRC.}}<br />
<br />
====== Console ======<br />
<br />
* {{App|[[Wikipedia:BitchX|BitchX]]|Console-based IRC client developed from the popular [[Wikipedia:ircII|ircII]].|http://www.bitchx.org/|{{AUR|bitchx-git}}}}<br />
* {{App|ERC|Powerful, modular, and extensible IRC client for [[Emacs]].|http://savannah.gnu.org/projects/erc/|{{AUR|erc-git}}{{Broken package link|{{aur-mirror|erc-git}}}}}}<br />
* {{App|[[Wikipedia:Ii (IRC client)|ii]]|Featherweight IRC client, literally {{ic|tail -f}} the conversation and {{ic|echo}} back your replies to a file.|http://tools.suckless.org/ii|{{AUR|ii}}}}<br />
* {{App|Ircfs|File system interface to IRC written in [http://limbo.cat-v.org Limbo].|http://www.ueber.net/code/r/ircfs|{{AUR?|ircfs}}}}<br />
* {{App|[[Irssi]]|Highly-configurable ncurses-based IRC client.|http://irssi.org/|{{Pkg|irssi}}}}<br />
* {{App|ScrollZ|Advanced IRC client based on [[Wikipedia:ircII|ircII]].|http://www.scrollz.info/|{{AUR|scrollz}}}}<br />
* {{App|sic|Extremely simple IRC client, similar to [[Wikipedia:Ii (IRC client)|ii]].|http://tools.suckless.org/sic|{{AUR|sic}}{{Broken package link|{{aur-mirror|sic}}}}}}<br />
* {{App|[[Wikipedia:WeeChat|WeeChat]]|Modular, lightweight ncurses-based IRC client.|http://weechat.org/|{{Pkg|weechat}}}}<br />
<br />
====== Graphical ======<br />
<br />
* {{App|HexChat|Fork of XChat for Linux and Windows.|http://hexchat.github.io/|{{Pkg|hexchat}}}}<br />
* {{App|[[Wikipedia:Konversation|Konversation]]|Qt-based IRC client for the KDE desktop.|http://konversation.kde.org/|{{Pkg|konversation}}}}<br />
* {{App|[[Wikipedia:KVIrc|KVIrc]]|Qt-based IRC client featuring extensive themes support.|http://kvirc.net/|{{Pkg|kvirc}}}}<br />
* {{App|Loqui|GTK+ IRC client with only one dependency: [https://wiki.gnome.org/Projects/GNetLibrary GNet].|https://launchpad.net/loqui|{{AUR|loqui}}}}<br />
* {{App|LostIRC|Simple GTK+ IRC client with tab-autocompletion, multiple server support, logging and others.|http://lostirc.sourceforge.net|{{AUR|lostirc}}}}<br />
* {{App|pcw|Frontend for [http://tools.suckless.org/ii ii] that opens a new terminal for each channel.|https://bitbucket.org/emg/pcw|{{AUR|pcw-hg}}{{Broken package link|{{aur-mirror|pcw-hg}}}}}}<br />
* {{App|Polari|Simple IRC client by the GNOME project.|https://wiki.gnome.org/Apps/Polari/|{{Pkg|polari}}}}<br />
* {{App|[[Wikipedia:Quassel IRC|Quassel]]|Modern, cross-platform, distributed IRC client.|http://quassel-irc.org/|{{Pkg|quassel-core}} {{Pkg|quassel-client}}}}<br />
* {{App|[[Wikipedia:Smuxi|Smuxi]]|Cross-platform IRC client for the GNOME desktop inspired by [[Irssi]].|http://smuxi.org/|{{Pkg|smuxi}}}}<br />
* {{App|[[Wikipedia:XChat|XChat]]|GTK-based IRC client that works on both Linux and Windows.|http://xchat.org/|{{Pkg|xchat}}}}<br />
<br />
===== XMPP (Jabber) =====<br />
<br />
See also [[Wikipedia:XMPP]] and [[Wikipedia:Comparison of instant messaging clients#XMPP-related features]].<br />
<br />
====== Console clients ======<br />
<br />
* {{App|Freetalk|Console-based Jabber client.|https://gnu.org/s/freetalk/|{{Pkg|freetalk}}}}<br />
* {{App|jabber.el|Minimal Jabber client for [[Emacs]].|http://emacs-jabber.sourceforge.net/|{{AUR|emacs-jabber}}}}<br />
* {{App|[[Wikipedia:MCabber|MCabber]]|Small Jabber console client, includes features: SSL, PGP, MUC, OTR, and UTF8.|http://mcabber.com/|{{Pkg|mcabber}}}}<br />
* {{App|Profanity|A console based Jabber client inspired by Irssi.|http://www.profanity.im/|{{Pkg|profanity}}}}<br />
<br />
====== Graphical clients ======<br />
<br />
* {{App|[[Wikipedia:Gajim|Gajim]]|Jabber client written in PyGTK.|https://gajim.org/|{{Pkg|gajim}}}}<br />
* {{App|Jabbim|Jabber client written in PyQt.|http://www.jabbim.com/|{{AUR|jabbim-svn}}{{Broken package link|{{aur-mirror|jabbim-svn}}}}}}<br />
* {{App|[[Wikipedia:Psi (instant messaging client)|Psi]]|Qt-based Jabber client which supports video conferencing (since version 0.13).|http://psi-im.org/|{{Pkg|psi}} {{Pkg|psimedia}}}}<br />
* {{App|Psi+|Enhanced version of the Psi Jabber client with many new [http://psi-plus.com/wiki/en:features#differences_between_psi_beta_version_and_the_official_psi_015-dev_version features].|http://psi-plus.com/|{{AUR|psi-plus-git}}}}<br />
* {{App|[[Wikipedia:Tkabber|Tkabber]]|Easy to hack feature-rich XMPP client by the author of the ejabberd XMPP server.|http://tkabber.jabber.ru/|{{Pkg|tkabber}}}}<br />
<br />
====== Servers ======<br />
<br />
See also [[Wikipedia:Comparison of XMPP server software]].<br />
<br />
* {{App|[[Prosody]]|An XMPP server written in the [http://www.lua.org/ Lua] programming language. Prosody is designed to be lightweight and highly extensible. It is licensed under a permissive [http://prosody.im/source/mit MIT license].|http://prosody.im/|{{Pkg|prosody}}}}<br />
* {{App|Ejabberd|Jabber server written in Erlang|http://www.ejabberd.im/|{{Pkg|ejabberd}}}}<br />
* {{App|[[Jabberd2]]|An XMPP server written in the C language and licensed under the GNU General Public License. It was inspired by jabberd14.|http://jabberd2.org|{{AUR|jabberd2}}{{Broken package link|{{aur-mirror|jabberd2}}}}}}<br />
* {{App|Openfire|An XMPP IM multiplatform server written in Java|http://www.igniterealtime.org/projects/openfire/|{{Pkg|openfire}}}}<br />
<br />
===== Multi-protocol clients =====<br />
<br />
See also [[Wikipedia:Comparison of instant messaging clients]].<br />
<br />
{{Note|All messengers, that support several networks by means of direct connections to them, belong to this section.}}<br />
<br />
Many clients listed here (including Pidgin and all its forks) support multiple IM networks via [[Wikipedia:libpurple|libpurple]]. The number of networks supported by these clients is very large but they (like any multiprotocol clients) usually have very limited or no support for network-specific features.<br />
<br />
====== Console ======<br />
<br />
* {{App|BarnOwl|Ncurses-based chat client with support for the Zephyr, AIM, Jabber, IRC, and Twitter protocols.|http://barnowl.mit.edu/|{{AUR|barnowl}}}}<br />
* {{App|[[Bitlbee]]|IRC client that provides a gateway to popular chat networks (XMPP, MSN, Yahoo, AIM, ICQ and Twitter).|http://bitlbee.org/|{{Pkg|bitlbee}}}}<br />
* {{App|[[Wikipedia:Centericq|CenterIM]]|Fork of CenterICQ, a text mode menu- and window-driven IM interface.|http://centerim.org/|{{Pkg|centerim}}}}<br />
* {{App|[[Pidgin|Finch]]|Ncurses-based chat client that uses libpurple and supports all its protocols.|http://developer.pidgin.im/wiki/Using%20Finch|{{Pkg|finch}}}}<br />
* {{App|[[Wikipedia:naim (software)|naim]]|Ncurses chat client with support for AOL, ICQ, IRC and the Lily CMC.|http://naim.n.ml.org/|{{Pkg|naim}}}}<br />
* {{App|pork|Programmable, ncurses-based AIM and IRC client that mostly looks and feels like ircII.|http://dev.ojnk.net/|{{Pkg|pork}}}}<br />
* {{App|[[Tox]]|Tox is a distributed, secure messenger with audio and video chat capabilities.|https://tox.chat/|{{AUR|tox-git}}{{Broken package link|{{aur-mirror|tox-git}}}}}}<br />
<br />
====== Graphical ======<br />
<br />
* {{App|Carrier|Pidgin fork providing minor GUI enhancements (formerly FunPidgin).|http://funpidgin.sourceforge.net/|{{AUR|carrier}}{{Broken package link|{{aur-mirror|carrier}}}}}}<br />
* {{App|[[Wikipedia:Emesene|Emesene]]|PyGTK instant messenger for the Windows Live Messenger network, also compatible with Jabber, Facebook and Google Talk.|http://emesene.org/|{{AUR|emesene}}{{Broken package link|{{aur-mirror|emesene}}}}}}<br />
* {{App|[[Wikipedia:Empathy (software)|Empathy]]|GNOME instant messaging client using the [[Wikipedia:Telepathy (software)|Telepathy]] framework.|https://wiki.gnome.org/Apps/Empathy|{{Pkg|empathy}}}}<br />
* {{App|Galaxium Messenger|Messenger application designed for the GNOME desktop.|https://code.google.com/p/galaxium/|{{AUR|galaxium}}{{Broken package link|{{aur-mirror|galaxium}}}}}}<br />
* {{App|[[Wikipedia:Instantbird|Instantbird]]|Multi-protocol chat client using Mozilla's XUL and libpurple.|http://instantbird.com/|{{AUR|instantbird}}}}<br />
* {{App|[[Wikipedia:Kopete|Kopete]]|User-friendly IM supporting AIM, ICQ, Windows Live Messenger, Yahoo, Jabber, Gadu-Gadu, Novell GroupWise Messenger, and other IM networks. Part of {{Grp|kdenetwork}}.|http://kopete.kde.org/|{{Pkg|kdenetwork-kopete}}}}<br />
* {{App|[[KDE#KDE Telepathy|KDE Telepathy]]|KDE instant messaging client using the [[Wikipedia:Telepathy (software)|Telepathy]] framework. Meant as a replacement for Kopete.|http://community.kde.org/Real-Time_Communication_and_Collaboration/|{{Pkg|telepathy-kde-meta}}}}<br />
* {{App|Licq|Instant messaging client for UNIX supporting multiple protocols (currently ICQ, MSN and Jabber).|http://www.licq.org|{{Pkg|licq}}}}<br />
* {{App|Mikutter|An open-source Twitter client using [[GTK+]] and Ruby.|http://mikutter.hachune.net/|{{AUR|mikutter}} {{AUR|mikutter-git}}}}<br />
* {{App|[[Pidgin]]|Multi-protocol instant messaging client.|http://pidgin.im/|{{Pkg|pidgin}} {{AUR|pidgin-light}}}}<br />
* {{App|qutIM|Simple and user-friendly IM supporting ICQ, Jabber, Mail.Ru, IRC and VKontakte messaging.|http://qutim.org/|{{AUR|qutim-stable}}{{Broken package link|{{aur-mirror|qutim-stable}}}}}}<br />
<br />
===== Lan messengers =====<br />
<br />
See also: [[Wikipedia:Comparison_of_LAN_messengers|Comparison of LAN messengers]].<br />
<br />
* {{App|iptux|Lan communication software, compatible with IP Messenger.|https://github.com/iptux-src/iptux|{{AUR|iptux}}}}<br />
<br />
==== VoIP / Softphone ====<br />
<br />
See also [[Wikipedia:Comparison of VoIP software]] and [[Wikipedia:List of SIP software]].<br />
<br />
===== Clients =====<br />
<br />
{{Note| Some [[#Instant messaging|IM clients]] also offer voice and video communication}}<br />
<br />
====== SIP ======<br />
* {{App|[[Wikipedia:Blink (software)|Blink]]|State of the art, easy to use SIP client.|http://www.icanblink.com/|{{AUR|blink-darcs}}{{Broken package link|{{aur-mirror|blink-darcs}}}}}}<br />
* {{App|[[Wikipedia:Ekiga|Ekiga]]|VoIP and video conferencing application with full SIP and H.323 support (formerly known as GNOME Meeting).|http://www.ekiga.org/|{{Pkg|ekiga}}}}<br />
* {{App|[[Wikipedia:Empathy (software)|Empathy]]|GNOME instant messenger client using the Telepathy framework with SIP support (using the Sofia-SIP library).|https://wiki.gnome.org/Apps/Empathy|{{Pkg|empathy}}}}<br />
* {{App|[[Wikipedia:Jitsi|Jitsi]]|Audio/video SIP VoIP phone and instant messenger written in Java (formerly SIP-Communicator).|https://jitsi.org/|{{AUR|jitsi}}}}<br />
* {{App|[[Wikipedia:KPhone|KPhone]]|Qt SIP User Agent with voice, video and text messaging support.|http://sourceforge.net/projects/kphone/|{{AUR?|kphone}}}}<br />
* {{App|[[Wikipedia:Linphone|Linphone]]|VoIP phone application that allows you to to communicate freely with people over the internet, with voice, video, and text instant messaging.|http://www.linphone.org/|{{Pkg|linphone}}}}<br />
* {{App|Minisip|SIP User Agent with focus on security (supports TLS, end-to-end security, SRTP, MIKEY (DH, PSK, PKE)).|http://www.minisip.org/|{{AUR?|minisip}}}}<br />
* {{App|[[Wikipedia:QuteCom|QuteCom]]|Softphone which allows you to make free PC to PC video and voice calls, and to integrate all your IM contacts in one place (formerly Wengo Phone).|http://trac.qutecom.org/|{{AUR|qutecom}}{{Broken package link|{{aur-mirror|qutecom}}}}}}<br />
* {{App|[[Wikipedia:Twinkle (software)|Twinkle]]|Qt softphone for VoIP and IM communication using SIP.|http://www.twinklephone.com/|{{AUR|twinkle}}}}<br />
* {{App|[[Wikipedia:X-Lite|X-Lite]]|Proprietary freeware VoIP soft phone that uses SIP.|http://www.counterpath.net/x-lite|{{AUR|xlite_bin}}}}<br />
* {{App|[[Wikipedia:Zfone|Zfone]]|Softphone application for secure voice communication over the Internet (VoIP), using the ZRTP protocol.|http://zfoneproject.com/|{{AUR|zfone}}{{Broken package link|{{aur-mirror|zfone}}}}}}<br />
<br />
====== IAX2 ======<br />
* {{App|Kiax|Qt-based IAX/2 Softphone.|http://www.forschung-direkt.eu/projects/kiax2/|{{AUR|kiax}}{{Broken package link|{{aur-mirror|kiax}}}}}}<br />
<br />
====== Skype ======<br />
* {{App|[[Skype]]|Popular but proprietary application for high-quality voice communication.|http://www.skype.com/|{{Pkg|skype}}}}<br />
<br />
====== Other ======<br />
* {{App|Hangups|A third-party instant messaging client for Google Hangouts|https://github.com/tdryer/hangups|{{AUR|hangups-git}}}}<br />
* {{App|[[Wikipedia:Mumble (software)|Mumble]]|Voice chat application similar to TeamSpeak.|http://mumble.sourceforge.net/|{{pkg|mumble}}}}<br />
* {{App|[[TeamSpeak]]|Proprietary VoIP application with gamers as its target audience.|http://www.teamspeak.com/|{{Pkg|teamspeak3}}}}<br />
* {{App|Webex|Proprietary conferencing software.|http://www.webex.com/|{{AUR|webex}}{{Broken package link|{{aur-mirror|webex}}}}}}<br />
<br />
====== Multi-protocol ======<br />
* {{App|[[Wikipedia:SFLphone|SFLPhone]]|Open-source SIP/IAX2 compatible softphone with PulseAudio support.|http://sflphone.org/|{{AUR|sflphone}}{{Broken package link|{{aur-mirror|sflphone}}}}}}<br />
<br />
===== Utilities =====<br />
<br />
* {{App|Gladstone|Educational ITU-T G.729 compliant codec with a GStreamer plugin.|https://gitorious.org/gladstone|{{AUR|gladstone-drizztbsd-git}}}}<br />
* {{App|SIPp|Open source test tool and traffic generator for the SIP protocol.|http://sipp.sourceforge.net/|{{AUR|sipp}}}}<br />
* {{App|Sipsak|Small command-line tool for developers and administrators of SIP applications.|http://sipsak.org/|{{AUR|sipsak}}{{Broken package link|{{aur-mirror|sipsak}}}}}}<br />
<br />
==== Speech recognition ====<br />
<br />
See [[Speech recognition#List of speech recognition applications]].<br />
<br />
=== News, RSS, and blogs ===<br />
<br />
==== News aggregators ====<br />
<br />
See also [[Wikipedia:Comparison of feed aggregators]].<br />
<br />
===== Console =====<br />
<br />
* {{App|[[Wikipedia:Canto (news aggregator)|Canto]]|Ncurses RSS aggregator.|http://codezen.org/canto/|{{AUR|canto-next-git}}}}<br />
* {{App|[[Wikipedia:Gnus|Gnus]]|Email, NNTP and RSS client for Emacs.|http://gnus.org/|{{AUR|emacs-gnus-git}}}}<br />
* {{App|Newsbeuter|Ncurses RSS aggregator with layout and keybinding similar to the [[Mutt]] email client.|http://newsbeuter.org|{{Pkg|newsbeuter}}}}<br />
* {{App|Rawdog|"RSS Aggregator Without Delusions Of Grandeur" that parses RSS/CDF/Atom feeds into a static HTML page of articles in chronological order.|http://offog.org/code/rawdog.html|{{AUR|rawdog}}}}<br />
* {{App|Snownews|Text mode RSS news reader.|http://kiza.kcore.de/software/snownews/|{{Pkg|snownews}}}}<br />
<br />
===== Graphical =====<br />
<br />
* {{App|[[Wikipedia:Kontact#News Feed Aggregator|Akregator]]|News aggregator for KDE, part of {{Grp|kdepim}}.|http://kde.org/applications/internet/akregator/|{{Pkg|kdepim-akregator}}}}<br />
* {{App|Blam|Simple newsreader for GNOME written in C Sharp.| https://git.gnome.org/browse/blam|{{Pkg|blam}}}}<br />
* {{App|[[Wikipedia:BlogBridge|BlogBridge]]|Excellent Java-based aggregator, which gives users the option to synchronize their feeds across multiple computers. Though according to the official website, project is not being supported any more.|http://blogbridge.com|{{AUR|blogbridge}}{{Broken package link|{{aur-mirror|blogbridge}}}}}}<br />
* {{App|[[Wikipedia:Liferea|Liferea]]|GTK+ news aggregator for online news feeds and weblogs.| http://liferea.sourceforge.net|{{Pkg|liferea}}}}<br />
* {{App|RSS Guard|Very tiny RSS and ATOM news reader developed using Qt framework.|https://bitbucket.org/skunkos/rssguard|{{AUR|rssguard}}}}<br />
* {{App|[[Wikipedia:RSSOwl|RSSOwl]]|Powerful aggregator for RSS and Atom feeds, written in Java using Eclipse Rich Client Platform and SWT as a widget toolkit.|http://boreal.rssowl.org|{{AUR|rssowl}}}}<br />
* {{App|[[Thunderbird]]|Email client from Mozilla which also functions as a pretty nice news aggregator.|http://www.mozilla.org/thunderbird/|{{Pkg|thunderbird}}}}<br />
* {{App|Tickr (formerly News)|GTK-based RSS Reader that displays feeds as a smooth scrolling line on your Desktop, as known from TV stations.|http://newsrssticker.com/|{{AUR|tickr}}{{Broken package link|{{aur-mirror|tickr}}}}}}<br />
* {{App|Urssus|Cross platform GUI news aggregator.|https://code.google.com/p/urssus/|{{AUR|urssus}}}}<br />
* {{App|QuiteRSS|RSS/Atom feed reader written on Qt/С++.|http://quiterss.org/|{{AUR|quiterss}}}}<br />
<br />
==== Podcast clients ====<br />
<br />
* {{App|gPodder|A podcast client and feed aggregator (GTK+ and CLI interface).|http://gpodder.org/|{{AUR|gpodder3}}}}<br />
* {{App|Greg|A command-line podcast aggregator.|https://github.com/manolomartinez/greg|{{AUR|greg-git}}}}<br />
* {{App|Marrie|A simple podcast client that runs on the Command Line Interface.|https://github.com/rafaelmartins/marrie/|{{AUR|marrie-git}}}}<br />
* {{App|PodCastXDL|A simple podcast Downloader for the terminal.|https://github.com/levi0x0/PodCastXDL|{{AUR|podcastxdl-git}}{{Broken package link|{{aur-mirror|podcastxdl-git}}}}}}<br />
* {{App|Vocal|Simple Podcast Client for the Modern Desktop (GTK+).|https://launchpad.net/vocal|{{AUR|vocal-bzr}}}}<br />
<br />
==== Usenet newsreaders & newsgrabbers ====<br />
<br />
Some [[#Email_clients|email clients]] also support NNTP. This section mainly lists NNTP-only client.<br />
<br />
See also: [[Wikipedia:List of Usenet newsreaders]], [[Wikipedia:Comparison of Usenet newsreaders]].<br />
<br />
* {{app|lottanzb|A ''SABnzbd+'' (Usenet binary downloader) GUI front-end written in PyGTK|http://www.lottanzb.org/|{{aur|lottanzb}}}}<br />
* {{app|nn|Alternative more user-friendly(curses-based) Usenet newsreader for UNIX.|http://www.nndev.org/|{{aur|nn}}{{Broken package link|{{aur-mirror|nn}}}}}}<br />
* {{app|[[NZBGet]]|CLI Utility to grab Usenet binary file using .nzb files.|http://nzbget.sourceforge.net/|{{pkg|nzbget}}}}<br />
* {{app|[[Wikipedia:Pan_(newsreader)|pan]]|A GTK2 Usenet newsreader that's good at both text and binaries.|http://pan.rebelbase.com/|{{aur|pan}}}}<br />
* {{app|[[Wikipedia:slrn|slrn]]|An open source text-based news client.|http://www.slrn.org/|{{pkg|slrn}}}}<br />
* {{app|[[Wikipedia:Tin_(newsreader)|tin]]|A cross-platform threaded NNTP and spool based UseNet newsreader.|http://tin.org/|{{aur|tin}}}}<br />
* {{app|trn|A text-based Threaded Usenet newsreader.|http://trn.sourceforge.net/|{{aur|trn}}}}<br />
* {{app|[[Wikipedia:XPN_(newsreader)|XPN]]|A graphical newsreader use PyGTK.|http://xpn.altervista.org/index-en.html|{{aur|xpn}}{{Broken package link|{{aur-mirror|xpn}}}}}}<br />
* {{app|xrn|Usenet newsreader for X Window System.|http://www.mit.edu/people/jik/software/xrn.html|{{aur|xrn}}}}<br />
<br />
==== Blog software ====<br />
See also [[Wikipedia:Blog software]] and [[Wikipedia:List of content management systems]].<br />
<br />
* {{App|[[Drupal]]|An open source content management platform powering millions of websites and applications. It is built, used, and supported by an active and diverse community of people around the world.|http://drupal.org/|{{Pkg|drupal}}}}<br />
* {{App|[[Ghost]]|Blogging platform written in JavaScript and distributed under the MIT License, designed to simplify the process of online publishing for individual bloggers as well as online publications.|https://ghost.org/|{{AUR|ghost}}}}<br />
* {{App|Hexo|A fast, simple & powerful blog framework, powered by Node.js.|http://hexo.io|{{AUR|nodejs-hexo}}}}<br />
* {{App|[[Jekyll]]|A static blog engine, written in Ruby, which supports Markdown, textile and other formats.|http://jekyllrb.com/|{{AUR|ruby-jekyll}}}}<br />
* {{App|Nanoblogger|A small weblog engine written in Bash for the command line. It uses common UNIX tools such as cat, grep, and sed to create static HTML content. It is not mantained anymore.|http://nanoblogger.sourceforge.net/|{{Pkg|nanoblogger}}}}<br />
* {{App|Nikola|A static site generator written in Python, with incremental rebuilds and multiple markup formats.|https://getnikola.com/|{{AUR|python-nikola}}}}<br />
* {{app|Pelican|A static site generator, powered by Python.|http://docs.getpelican.com/en/3.5.0/|{{aur|pelican}}}}<br />
* {{App|[[Wordpress]]|An easy to setup and administer FLOSS content management system featuring a strong and vibrant community with thousands of plugins and themes.|http://wordpress.org/|{{Pkg|wordpress}}}}<br />
<br />
==== Microblogging clients ====<br />
<br />
See also [[Wikipedia:List of Twitter services and applications]].<br />
<br />
* {{App|Birdie|A beautiful Twitter client for GNU/Linux, currently [http://www.birdieapp.eu/2014/10/26/birdie-2-status.html under active development].|http://birdieapp.github.io/ |{{AUR|birdie}}{{Broken package link|{{aur-mirror|birdie}}}}}}<br />
* {{App|Choqok|Microblogging client for KDE that supports Twitter.com, Pump.io, GNU social and opendesktop.org services.|http://choqok.gnufolks.org/|{{Pkg|choqok}}}}<br />
* {{App|Corebird|Native Gtk+ Twitter client for the Linux desktop.|http://corebird.baedert.org/|{{AUR|corebird-git}}}}<br />
* {{App|[[Wikipedia:Gwibber|Gwibber]]|GTK-based microblogging client with support for Facebook, Identi.ca, Twitter, Flickr, Foursquare, Sina and Sohu.|http://gwibber.com/|{{AUR|gwibber}}{{Broken package link|{{aur-mirror|gwibber}}}}}}<br />
* {{App|[[Wikipedia:Hotot (program)|Hotot]]|Lightweight and open source microblogging client with support for Twitter and Identi.ca and integration with various image sharing services and URL shorteners [http://hotot.org/ (discontinued)].|http://hotot.org|{{AUR|hotot}}{{Broken package link|{{aur-mirror|hotot}}}}}}<br />
* {{App|Pino|Simple and fast client for Twitter and Identi.ca written in [[Wikipedia:Vala (programming language)|Vala]].|http://pino-app.appspot.com/|{{AUR|pino}}{{Broken package link|{{aur-mirror|pino}}}}}}<br />
* {{App|Polly|Linux Twitter client designed for multiple columns of multiple accounts.|https://launchpad.net/polly/|{{AUR|polly}}}}<br />
* {{App|Pumpa|Pump.io client written in C++ and Qt.|https://pumpa.branchable.com/|{{AUR|pumpa-git}}}}<br />
* {{App|Qwit|Cross-platform client for Twitter using the Qt toolkit.|http://code.google.com/p/qwit/|{{AUR|qwit}}{{Broken package link|{{aur-mirror|qwit}}}}}}<br />
* {{App|ttytter|Easily scriptable twitter client written in Perl.|http://www.floodgap.com/software/ttytter/|{{Pkg|ttytter}}}}<br />
* {{App|Turpial|Multi-interface Twitter client written in Python.|http://turpial.org.ve/|{{AUR|turpial-git}}}}<br />
* {{App|tyrs|Simple client for Twitter and Identi.ca supporting virtually all its features with nice console UI (unmaintained).|http://tyrs.nicosphere.net/ {{Dead link|2014|07|17}}|{{AUR|tyrs}}{{Broken package link|{{aur-mirror|tyrs}}}}}}<br />
* {{App|turses|Twitter client for the console based off {{AUR|tyrs}}{{Broken package link|{{aur-mirror|tyrs}}}} with major improvements.|http://turses.rtfd.org/|{{AUR|turses}}}}<br />
<br />
=== Pastebin clients ===<br />
<br />
See also [[Wikipedia:Pastebin]].<br />
<br />
Pastebin services are often used to quote text or images while collaborating and troubleshooting. Pastebin clients provide a convenient way to post from the command line.<br />
<br />
{{Tip| You can access the [https://ptpb.pw ptpb.pw], [http://sprunge.us/ sprunge.us] and [http://ix.io/ ix.io] pastebins using curl. For example pipe the output of a command to ptpb: {{bc|''command'' <nowiki>| curl -F c=@- https://ptpb.pw </nowiki>}} or upload a file (including images): {{bc|<nowiki>curl -F c=@- https://ptpb.pw < </nowiki>''file''}}}}<br />
<br />
{{Note| [http://pastebin.com/ pastebin.com] is blocked for some people and has a history of annoying issues (javascript, adverts, poor formatting, etc).}}<br />
<br />
* {{App|codepad-git|A codepad.org pastebin client written in python.|http://www.codepad.org|{{AUR|codepad-git}}{{Broken package link|{{aur-mirror|codepad-git}}}}}}<br />
* {{App|Elmer|Pastebin client similar to wgetpaste and curlpaste, except written in Perl and usable with wget or curl. Servers: [http://codepad.org/ codepad.org], [http://rafb.me/ rafb.me], [http://sprunge.us/ sprunge.us].|https://github.com/sudokode/elmer|{{AUR|elmer}}}}<br />
* {{App|Fb-client|Client for the [http://paste.xinu.at/ paste.xinu.at] pastebin.|http://paste.xinu.at|{{Pkg|fb-client}}}}<br />
* {{App|Gist|Command-line interface for the [https://gist.github.com/ gist.github.com] pastebin service.|http://github.com/defunkt/gist|{{Pkg|gist}}}}<br />
* {{App|Haste|Universal pastebin tool, written in Haskell. Servers: [http://hpaste.org/ hpaste.org], [http://paste2.org/ paste2.org], [http://pastebin.com/ pastebin.com] and others.|http://hackage.haskell.org/package/haste|{{AUR|ruby-haste}} {{AUR|ruby-haste-git}}}}<br />
* {{App|Hg-paste|Pastebin extension for Mercurial which can send diffs to various pastebin websites for easy sharing. Servers: [http://dpaste.com/ dpaste.com] and [http://dpaste.org/ dpaste.org].|http://bitbucket.org/sjl/hg-paste|{{AUR|hg-paste}}{{Broken package link|{{aur-mirror|hg-paste}}}}}}<br />
* {{App|imgur|A CLI client which can upload image to [http://imgur.com imgur.com] image sharing service.|http://imgur.com/apps|{{AUR|imgur}}}}<br />
* {{App|Ix|Client for the ix.io pastebin.|http://ix.io|{{AUR|ix}}}}<br />
* {{App|Npaste-client|Client for the [http://npaste.de/ npaste.de] pastebin.|http://npaste.de|{{AUR|npaste-client}}{{Broken package link|{{aur-mirror|npaste-client}}}}}}<br />
* {{App|Pastebinit|Really small Python script that acts as a Pastebin client. Servers: [http://pastie.org/ pastie.org], [http://paste.kde.org/ paste.kde.org], [http://paste.debian.net/ paste.debian.net], [http://paste.ubuntu.com/ paste.ubuntu.com] and others (for a full list see {{ic|pastebinit -l}}).|http://launchpad.net/pastebinit|{{Pkg|pastebinit}}}}<br />
* {{App|paste-binouse|C++ standalone pastebin web server|https://github.com/abique/paste-binouse|{{AUR|paste-binouse}}{{Broken package link|{{aur-mirror|paste-binouse}}}}}}<br />
* {{App|pb|A very fast, lightweight pastebin and general file uploader written in python with a ton of features.|https://ptpb.pw|{{AUR|ptpb}}{{Broken package link|{{aur-mirror|ptpb}}}}}}<br />
* {{App|Uppity|The pastebin client with an attitude.|https://github.com/Kiwi/Uppity|{{AUR|uppity-git}}}}<br />
* {{App|Vim-gist|Vim script for [https://gist.github.com/ gist.github.com].| http://www.vim.org/scripts/script.php?script_id&#61;2423 |{{AUR|vim-gist}}{{Broken package link|{{aur-mirror|vim-gist}}}}}}<br />
* {{App|Vim-paster|Vim plugin to paste to any pastebin service using curl.|http://eugeneciurana.com/site.php?page&#61;tools|{{AUR|vim-paster}}{{Broken package link|{{aur-mirror|vim-paster}}}}}}<br />
* {{App|Wgetpaste|Bash script that automates pasting to a number of pastebin services. Servers: [http://pastebin.ca/ pastebin.ca], [http://codepad.org/ codepad.org], [http://dpaste.com/ dpaste.com] and [http://pastebin.osuosl.org/ pastebin.osuosl.org].|http://wgetpaste.zlin.dk/|{{Pkg|wgetpaste}}}}<br />
<br />
=== Bitcoin ===<br />
<br />
See the main article: [[Bitcoin]].<br />
<br />
* {{App|Armory|Bitcoin client with features such as support for multiple wallets, importing keys and backups.|https://github.com/etotheipi/BitcoinArmory|{{AUR|armory-git}}}}<br />
* {{App|[[Bitcoin]]|Official tool to manage Bitcoins, a P2P currency.|http://bitcoin.org/|{{Pkg|bitcoin-daemon}} {{Pkg|bitcoin-qt}}}}<br />
* {{App|Electrum|An easy to use Bitcoin client.|http://electrum.org/|{{Pkg|electrum}}}}<br />
* {{App|MultiBit|A lightweight Bitcoin desktop client powered by the BitCoinJ library.|https://multibit.org/|{{Pkg|multibit}}}}<br />
<br />
=== Surveying ===<br />
<br />
* {{App|[[Wikipedia:LimeSurvey|LimeSurvey]]|An open source on-line survey application. As a web server-based software it enables users to develop and publish on-line surveys, and collect responses, with no programming.|https://www.limesurvey.org/|{{AUR|limesurvey}}}}</div>Ygyfygyhttps://wiki.archlinux.org/index.php?title=List_of_applications/Other&diff=404565List of applications/Other2015-10-14T10:32:16Z<p>Ygyfygy: /* Terminal multiplexers */</p>
<hr />
<div><noinclude><br />
[[Category:Applications]]<br />
[[es:List of applications/Other]]<br />
[[it:List of applications/Other]]<br />
[[ja:アプリケーション一覧/その他]]<br />
[[ru:List of applications/Other]]<br />
[[zh-cn:List of applications/Other]]<br />
[[zh-tw:List of applications/Other]]<br />
{{List of applications navigation}}<br />
</noinclude><br />
== Others ==<br />
<br />
=== Work environment ===<br />
<br />
The default installation of Arch provides Bash as shell interpreter and does not contain any Desktop Environment, therefore forces users to choose one themselves. Most Arch boxes run some X11 Window Manager and/or Desktop Environment, but of course there are still people who prefer doing everyday tasks in bare console.<br />
<br />
==== Bootsplash ====<br />
<br />
See also [[Wikipedia:Bootsplash]].<br />
<br />
*{{App|[[Fbsplash]]|Gentoo implementation as bootsplash program|http://wiki.gentoo.org/wiki/Fbsplash|{{AUR|fbsplash}}}}<br />
*{{App|[[Plymouth]]|The new graphical boot process for Fedora, replacing the aging Red Hat Graphical Boot|http://www.freedesktop.org/wiki/Software/Plymouth/|{{AUR|plymouth}}}}<br />
*{{App|[[Splashy]]|A graphical boot process designed to replace the aging Bootsplash program|https://alioth.debian.org/projects/splashy/|{{AUR|splashy-full}}}}<br />
*{{App|xplash|New splash program used by Ubuntu starting from 9.10|https://launchpad.net/xsplash|{{AUR|xsplash-bzr}}{{Broken package link|{{aur-mirror|xsplash-bzr}}}}}}<br />
<br />
==== Command shells ====<br />
<br />
See the main article: [[Command-line shell]].<br />
<br />
See also [[Wikipedia:Comparison of command shells]].<br />
<br />
==== Terminal multiplexers ====<br />
<br />
* {{App|abduco|Tool for session attach and detach support which allows a process to run independently from its controlling terminal.|http://www.brain-dump.org/projects/abduco/|{{aur|abduco}}}}<br />
* {{App|dtach|Program that emulates the detach feature of [[screen]].|http://dtach.sourceforge.net/|{{Pkg|dtach}}}}<br />
* {{App|[[GNU Screen]]|Full-screen window manager that multiplexes a physical terminal.|https://gnu.org/s/screen/|{{Pkg|screen}}}}<br />
* {{App|[[tmux]]|BSD licensed terminal multiplexer.|http://tmux.github.io/|{{Pkg|tmux}}}}<br />
* {{App|[[Wikipedia:Byobu (software)|byobu]]|An GPLv3 licensed addon for tmux or screen. It requires a terminal multiplexer installed.|http://byobu.co/|{{AUR|byobu}}}}<br />
<br />
==== Desktop environments ====<br />
<br />
See the main article: [[Desktop environment#List of desktop environments]].<br />
<br />
See also [[Wikipedia:Comparison of X Window System desktop environments]].<br />
<br />
==== Window managers ====<br />
<br />
===== Console =====<br />
<br />
See also [[#Terminal multiplexers]], which offer some of the functions of window managers for the console.<br />
<br />
* {{App|dvtm|[[dwm]]-style window manager in the console.|http://brain-dump.org/projects/dvtm/|{{Pkg|dvtm}}}}<br />
* {{App|twin|Text-mode window manager.|http://sourceforge.net/projects/twin/|{{Pkg|twin}}}}<br />
<br />
===== Graphical =====<br />
<br />
See the main article: [[Window manager#List of window managers]].<br />
<br />
See also [[Wikipedia:Comparison of X window managers]].<br />
<br />
==== Window tilers ====<br />
<br />
* {{App|[[PyTyle|PyTyle3]]|An automatic tiler that is compatible with Openbox Multihead with faster action and lower memory footprint.|https://github.com/BurntSushi/pytyle3|{{AUR|pytyle3-git}}{{Broken package link|{{aur-mirror|pytyle3-git}}}}}}<br />
* {{App|PyWO|Allows you to easily organize windows on the desktop using keyboard shortcuts.|https://code.google.com/p/pywo/}}<br />
* {{App|QuickTile|Lightweight standalone alternative to Compiz Grid plugin.|http://ssokolow.com/quicktile/|{{AUR|quicktile-git}}}}<br />
* {{App|stiler|A simple python script to convert any wm to tiling wm.|3=https://bbs.archlinux.org/viewtopic.php?id=64100|4={{AUR|stiler-grid-git}}{{Broken package link|{{aur-mirror|stiler-grid-git}}}} {{AUR|stiler}}{{Broken package link|{{aur-mirror|stiler}}}}}}<br />
* {{App|[[Tile-windows]]|Tool for tiling windows horizontally or vertically.|http://www.sourcefiles.org/Utilities/Miscellaneous/tile_0.7.4.tar.gz.shtml|{{AUR|tile-windows}}{{Broken package link|{{aur-mirror|tile-windows}}}}}}<br />
* {{App|whaw|Window manager independent window layout tool.|http://repetae.net/computer/whaw/|{{AUR|whaw}}{{Broken package link|{{aur-mirror|whaw}}}}}}<br />
* {{App|wumwum|The Window Manager manager. It can turn emwh compliant window managers into a tiling window manager while retaining all initial functionalities.|http://wumwum.sourceforge.net/|{{AUR|wumwum}}}}<br />
<br />
==== Virtual desktop pagers ====<br />
<br />
See also [[Wikipedia:Pager (GUI)]].<br />
<br />
* {{App|bbpager|Dockable pager for [[blackbox]] and other window managers.|3=http://bbtools.sourceforge.net/download.php?file=6|4={{Pkg|bbpager}}}}<br />
* {{App|fbpager|Virtual desktop pager for fluxbox.|http://www.fluxbox.org/fbpager|{{AUR|fbpager-git}}}}<br />
* {{App|fluxter|Workspace pager for [[fluxbox]].|http://benedict.isomedia.com/homes/stevencooper/projects/fluxter.html|{{Pkg|fluxter}}{{Broken package link|package not found}}}}<br />
* {{App|IPager|A configurable pager with transparency, originally developed for Fluxbox.|http://useperl.ru/ipager/index.en.html|{{AUR|ipager}}}}<br />
* {{App|Neap|An non-intrusive and light pager that runs in the notification area of your panel.|http://code.google.com/p/neap/|{{AUR|neap}}{{Broken package link|{{aur-mirror|neap}}}}}}<br />
* {{App|Netwmpager|A NetWM/EWMH compatible pager.|http://sourceforge.net/projects/sf-xpaint/files/netwmpager/|{{AUR|netwmpager}}}}<br />
* {{App|obpager|Pager for [[Openbox]] writen in C++.|http://obpager.sourceforge.net/|{{AUR|obpager}}{{Broken package link|{{aur-mirror|obpager}}}}}}<br />
* {{App|Pager|A highly configurable pager compatible with Openbox Multihead.|https://github.com/BurntSushi/pager-multihead|{{AUR|pager-multihead-git}}{{Broken package link|{{aur-mirror|pager-multihead-git}}}}}}<br />
<br />
==== Support applications ====<br />
<br />
===== Login managers =====<br />
<br />
See the main article: [[Display manager#List of display managers]].<br />
<br />
===== Composite managers =====<br />
<br />
See the main article: [[Xorg#List of composite managers]].<br />
<br />
===== Taskbars / panels / docks =====<br />
<br />
* {{App|[[Avant Window Navigator]]|Lightweight dock which sits at the bottom of the screen.|http://launchpad.net/awn|{{AUR|avant-window-navigator}}}}<br />
* {{App|[[Bmpanel]]|Lightweight, NETWM compliant panel.|http://code.google.com/p/bmpanel2/|{{AUR|bmpanel}}}}<br />
* {{App|[[Cairo-Dock]]|Highly customizable dock and launcher application.|http://www.glx-dock.org/|{{Pkg|cairo-dock}}}}<br />
* {{App|Daisy|KDE Plasma widget which acts as a dock.|http://cdlszm.org/|{{AUR|kdeplasma-applets-daisy}}{{Broken package link|{{aur-mirror|kdeplasma-applets-daisy}}}}}}<br />
* {{App|Docker|Docking application which acts as a system tray.|http://icculus.org/openbox/2/docker/|{{AUR|docker-tray}}}}<br />
* {{App|[[Wikipedia:Docky|Docky]]|Full fledged dock application that makes opening common applications and managing windows easier and quicker.|http://wiki.go-docky.com/|{{Pkg|docky}}}}<br />
* {{App|[[fbpanel]]|Lightweight, NETWM compliant desktop panel.|http://fbpanel.sourceforge.net/|{{Pkg|fbpanel}}}}<br />
* {{App|[[Wikipedia:GNOME Panel|GNOME Panel]]|Panel included in the [[GNOME Flashback]] desktop.|https://wiki.gnome.org/Projects/GnomePanel|{{AUR|gnome-panel}}}}<br />
* {{App|KoolDock|KDE3 docker with great effects that tries to resemble the OS X dock.|http://sourceforge.net/projects/kooldock|{{AUR|kooldock-svn}}{{Broken package link|{{aur-mirror|kooldock-svn}}}}}}<br />
* {{App|LXPanel|Lightweight X11 desktop panel and part of the LXDE desktop.|http://lxde.org/lxpanel|{{Pkg|lxpanel}}}}<br />
* {{App|MATE Panel|Panel included in the [[MATE]] desktop.|https://github.com/mate-desktop/mate-panel/|{{Pkg|mate-panel}}}}<br />
* {{App|PerlPanel|The ideal accompaniment to a light-weight Window Manager such as OpenBox, or a desktop-drawing program like iDesk.|http://savannah.nongnu.org/projects/perlpanel|{{pkg|perlpanel}}}}<br />
* {{app|plank|Elegant, simple, clean dock from [[pantheon]] desktop environment.|https://launchpad.net/plank|{{pkg|plank}}}}<br />
* {{App|[[PyPanel]]|Lightweight panel/taskbar written in Python and C.|http://pypanel.sourceforge.net/|{{Pkg|pypanel}}}}<br />
* {{App|qtpanel|Project to create useful and beautiful panel in Qt.|https://gitorious.org/qtpanel/qtpanel|{{AUR|qtpanel-git}}{{Broken package link|{{aur-mirror|qtpanel-git}}}}}}<br />
* {{App|[[Stalonetray]]|Stand-alone system tray.|http://stalonetray.sourceforge.net/|{{Pkg|stalonetray}}}}<br />
* {{App|[[Tint2]]|Simple panel/taskbar developed specifically for Openbox.|http://code.google.com/p/tint2/|{{Pkg|tint2}}}}<br />
* {{App|Trayer|Lightweight GTK+-based systray.|https://gna.org/projects/fvwm-crystal/|{{Pkg|trayer}}}}<br />
* {{App|wbar|Quick launch bar developed with speed in mind.|http://freecode.com/projects/wbar/|{{Pkg|wbar}}}}<br />
* {{App|Xfce Panel|Panel included in the [[Xfce]] desktop.|http://docs.xfce.org/xfce/xfce4-panel/start|{{Pkg|xfce4-panel}}}}<br />
<br />
===== Application launchers =====<br />
<br />
See also [[Wikipedia:Comparison of desktop application launchers]].<br />
<br />
* {{App|ADeskBar|Easy, simple and unobtrusive application launcher for Openbox.|http://adeskbar.tuxfamily.org/|{{AUR|adeskbar}}{{Broken package link|{{aur-mirror|adeskbar}}}}}}<br />
* {{App|Albert|An application launcher inspired by Alfred.|https://github.com/manuelschneid3r/albert|{{AUR|albert}}}}<br />
* {{App|Ayr|Manages menus of application launchers, either executables or desktop files. Also opens files and URLs with launchers, desktop files, or applications associated by name or mimetype. Uses dmenu to manage its menus.|http://appstogo.mcfadzean.org.uk/linux.html#ayr|{{aur|ayr}}}}<br />
* {{App|Bashrun2|Provides a different, barebones approach to a run dialog, using a specialized Bash session within a small xterm window.|https://code.google.com/p/bashrun2/|{{AUR|bashrun2}}{{Broken package link|{{aur-mirror|bashrun2}}}}}}<br />
* {{App|[[dmenu]]|Fast and lightweight dynamic menu for X which is also useful as an application launcher.|http://tools.suckless.org/dmenu/|{{Pkg|dmenu}}}}<br />
* {{App|dmenu-extended|An extension to ''dmenu'' for quickly opening files and folders.|https://github.com/markjones112358/dmenu-extended|{{AUR|dmenu-extended}}}}<br />
* {{App|dmenu-launch|Simple ''dmenu''-based application launcher. Launches binaries and XDG shortcuts.|https://github.com/Wintervenom/Scripts/blob/master/file/launch/dmenu-launch|{{AUR|dmenu-launch}}}}<br />
* {{App|dswitcher|''dmenu''-based window switcher that works regardless of workspace or minimization.|https://github.com/Antithesisx/dswitcher|{{AUR|dswitcher-git}}}}<br />
* {{App|Fehlstart|Small GTK+-based application launcher.|https://gitorious.org/fehlstart|{{AUR|fehlstart-git}}}}<br />
* {{App|[[Gmrun]]|Lightweight GTK+-based application launcher, with the ability to run programs inside a terminal and other handy features.|http://sourceforge.net/projects/gmrun/|{{Pkg|gmrun}}}}<br />
* {{App|[[Wikipedia:GNOME Do|GNOME Do]]|Application launcher inspired by [[Wikipedia:Quicksilver_(software)|Quicksilver]] with many plugins, originally developed for the GNOME desktop.|http://do.cooperteam.net/|{{Pkg|gnome-do}}}}<br />
* {{App|j4-dmenu-desktop|Very fast dmenu application launcher.|https://github.com/enkore/j4-dmenu-desktop|{{AUR|j4-dmenu-desktop}}}}<br />
* {{App|Kupfer|Convenient command and access tool for the GNOME desktop that can launch applications, open documents and access different types of objects and act on them.|https://wiki.gnome.org/Apps/Kupfer|{{AUR|kupfer}}}}<br />
* {{App|[[Wikipedia:Launchy|Launchy]]|Very popular cross-platform application launcher with a plugin-based system used to provide extra functionality.|http://www.launchy.net/|{{Pkg|launchy}}}}<br />
* {{App|rofi|A popup window switcher roughly based on superswitcher, requiring only xlib and pango.|http://davedavenport.github.io/rofi/|{{Pkg|rofi}}}}<br />
* {{app|slingshot|An application launcher has a clear look, part of [[pantheon]] desktop environment.|https://launchpad.net/slingshot|{{aur|slingshot-launcher}}}}<br />
* {{App|Synapse|Synapse is a semantic launcher written in Vala that you can use to start applications as well as find and access relevant documents and files by making use of the Zeitgeist engine.|https://launchpad.net/synapse-project|{{Pkg|synapse}}}}<br />
* {{App|Whippet|A launcher and xdg-open replacement for control freaks. Opens files and URLs with applications associated by name and/or mimetype. Applications and associations may be customized using an SQLite database. Uses dmenu to manage its menus.|http://appstogo.mcfadzean.org.uk/linux.html#whippet|{{aur|whippet}}}}<br />
* {{App|xboomx|Light ''dmenu'' wrapper that reorders commands based on popularity, written in Python.|https://bitbucket.org/dehun/xboomx|{{AUR|xboomx}}{{Broken package link|{{aur-mirror|xboomx}}}}}}<br />
* {{App|xfce4-appfinder|An eazy-to-use application launcher from Xfce.|http://docs.xfce.org/xfce/xfce4-appfinder/start|{{pkg|xfce4-appfinder}}}}<br />
* {{App|Yeganesh|Light ''dmenu'' wrapper that reorders commands based on popularity, written in Haskell.|http://dmwit.com/yeganesh|{{AUR|yeganesh}}{{Broken package link|{{aur-mirror|yeganesh}}}}}}<br />
<br />
===== Logout dialogue =====<br />
A few simple shutdown managers are available:<br />
* {{App|exitx|A logout dialog for Openbox that uses [[Sudo]].|http://www.linuxsir.com/bbs/lastpostinthread350740.html|{{AUR|exitx}}{{Broken package link|{{aur-mirror|exitx}}}}}}<br />
* {{App|exitx-polkit|A GTK logout dialog for Openbox with PolicyKit support.|https://github.com/z0id/exitx-polkit|{{AUR|exitx-polkit-git}}{{Broken package link|{{aur-mirror|exitx-polkit-git}}}}}}<br />
* {{App|exitx-systemd|A GTK logout dialog for Openbox with systemd support.|https://github.com/z0id/exitx-systemd|{{AUR|exitx-systemd-git}}{{Broken package link|{{aur-mirror|exitx-systemd-git}}}}}}<br />
* {{App|oblogout|A graphical logout script for [[Openbox]] that may be used with other WMs.|https://launchpad.net/oblogout|{{pkg|oblogout}}}}<br />
* {{App|obshutdown|A great GTK/Cairo based shutdown manager for Openbox and other window managers.|https://github.com/panjandrum/obshutdown|{{AUR|obshutdown}}{{Broken package link|{{aur-mirror|obshutdown}}}}}}<br />
<br />
==== Accessibility ==== <br />
<br />
===== Speech recognition =====<br />
<br />
See the main article [[Speech recognition]] for applications.<br />
<br />
=== Finance ===<br />
<br />
See also [[Wikipedia:Comparison of accounting software]].<br />
<br />
* {{App|esniper|Simple, lightweight tool for [[Wikipedia:Auction_sniping|sniping]] eBay auctions.|http://esniper.sourceforge.net/|{{AUR|esniper}}}}<br />
* {{App|[[Wikipedia:GnuCash|GnuCash]]|Financial application that implements a double-entry book-keeping system with features for small business accounting.|http://www.gnucash.org/|{{Pkg|gnucash}}}}<br />
* {{App|[[Wikipedia:Grisbi|Grisbi]]|Personal finance system which manages third party, expenditure and receipt categories, as well as budgetary lines, financial years, and other information that makes it suitable for associations.|http://www.grisbi.org/|{{AUR|grisbi}}}}<br />
* {{App|[[Wikipedia:HomeBank|HomeBank]]|Easy to use finance manager that can analyse your personal finance in detail using powerful filtering tools and graphs.|http://homebank.free.fr/|{{Pkg|homebank}}}}<br />
* {{App|[[Wikipedia:KMyMoney|KMyMoney]]|Personal finance manager that operates in a similar way to [[Wikipedia:Microsoft Money|Microsoft Money]]. It supports different account types, categorisation of expenses and incomes, reconciliation of bank accounts and import/export to the “QIF” file format.|http://kmymoney2.sourceforge.net/index-home.html|{{Pkg|kmymoney}}}}<br />
* {{App|Ledger|Ledger is a powerful, double-entry accounting system that is accessed from the UNIX command-line.|http://ledger-cli.org/|{{AUR|ledger}}}}<br />
* {{App|Moneychanger|An intuitive QT/C++ system tray client for ''Open-Transactions''|https://github.com/Open-Transactions/Moneychanger|{{AUR|moneychanger-git}}}}<br />
* {{App|Manager Accounting|Manager is free accounting software for small business.|http://www.manager.io/|{{AUR|manager-accounting}}}}<br />
* {{App|Money Manager EX|An easy-to-use personal finance suite|http://www.moneymanagerex.org/|{{Pkg|moneymanagerex}}}}<br />
* {{App|Skrooge|Personal finances manager for the KDE desktop.|http://skrooge.org/|{{Pkg|skrooge}}}}<br />
* {{App|openerp|Open source erp system purely in python.|http://openerp.com/|{{AUR|openerp}}}}<br />
* {{App|Open-Transactions|A financial cryptography library used for issuing currencies, stock, paying dividends, creating asset accounts, sending/receiving digital cash, trading on markets and escrow.|https://github.com/Open-Transactions/Open-Transactions|{{AUR|open-transactions-git}}}}<br />
<br />
=== Flashcards ===<br />
<br />
* {{App|[[Anki]]|Anki is a program which makes remembering things easy.|http://ankisrs.net/|{{Pkg|anki}}}}<br />
* {{App|iGNUit|Memorization aid based on the Leitner flashcard system.|http://homepages.ihug.co.nz/~trmusson/programs.html#ignuit|{{AUR|ignuit}}}}<br />
* {{App|[[Mnemosyne]]|Free flash-card tool which optimizes your learning process.|http://mnemosyne-proj.org/|{{AUR|mnemosyne}}}}<br />
<br />
=== Time management ===<br />
<br />
==== Console ====<br />
<br />
* {{App|Calcurse|Text-based ncurses calendar and scheduling system.|http://calcurse.org/|{{Pkg|calcurse}}}}<br />
* {{App|Doneyet|Ncurses-based hierarchical To-do list manager written in C++.|https://github.com/gtaubman/doneyet|{{AUR|doneyet}}{{Broken package link|{{aur-mirror|doneyet}}}}}}<br />
* {{App|Pal|Very lightweight calendar with both interactive and non-interactive interfaces.|http://palcal.sourceforge.net/|{{AUR|pal}}}}<br />
* {{App|[[Remind]]|Highly sophisticated text-based calendaring and notification system.|http://roaringpenguin.com/products/remind|{{Pkg|remind}}}}<br />
* {{App|[[Wikipedia:Taskwarrior|Taskwarrior]]|Command-line To-do list application with support for lua customization and more.|http://taskwarrior.org/|{{Pkg|task}}}}<br />
* {{App|Todo.txt|Small command-line To-do manager.|http://ginatrapani.github.com/todo.txt-cli/|{{AUR|todotxt}}}}<br />
* {{App|TuDu|Ncurses-based hierarchical To-do list manager with vim-like keybindings.|http://code.meskio.net/tudu/|{{AUR|tudu}}}}<br />
* {{App|When|Simple personal calendar program.|http://lightandmatter.com/when/when.html|{{Pkg|when}}}}<br />
* {{App|Wyrd|Text-based front-end to Remind, a calendar and alarm program used on UNIX and Linux computers.|http://pessimization.com/software/wyrd/|{{Pkg|wyrd}}}}<br />
* {{App|DevTodo|Is a small command line application for maintaining lists of tasks.|http://swapoff.org/devtodo1.html|{{AUR|devtodo}}}}<br />
<br />
==== Graphical ====<br />
<br />
* {{App|Calendar|Calendar application for GNOME.|https://wiki.gnome.org/Apps/Calendar|{{Pkg|gnome-calendar}}}}<br />
* {{App|Day Planner|Program designed to help you easily plan and manage your time. It can manage appointments, birthdays and more.|http://www.day-planner.org/|{{AUR|dayplanner}}}}<br />
* {{App|etm (Event and Task Manager)|Simple application with a "Getting Things Done!" approach to handling events, tasks, activities, reminders and projects.|http://duke.edu/~dgraham/ETM/|{{AUR|etm}}}}<br />
* {{App|Glista|Simple GTK+ To-do list manager with notes support.|http://arr.gr/glista/|{{AUR|glista}}{{Broken package link|{{aur-mirror|glista}}}}}}<br />
* {{App|GTG (Getting Things GNOME!)|Personal tasks and To-do list items organizer for the GNOME desktop.|http://gtgnome.net/|{{AUR|gtg}}{{Broken package link|{{aur-mirror|gtg}}}}}}<br />
* {{App|Hamster|Time tracking application that helps you to keep track on how much time you have spent during the day on activities you choose to track.|http://projecthamster.wordpress.com/|{{Pkg|hamster-time-tracker}}}}<br />
* {{App|[[Wikipedia:Kontact#Organizer|KOrganizer]]|Calendar and scheduling program, part of {{Grp|kdepim}}.|http://www.kde.org/applications/office/korganizer/|{{Pkg|kdepim-korganizer}}}}<br />
* {{App|[[Wikipedia:Lightning (software)|Lightning]]|Extension to Mozilla Thunderbird that provides calendar and task support.|http://www.mozilla.org/projects/calendar/lightning/|{{AUR|lightning}}{{Broken package link|{{aur-mirror|lightning}}}}}}<br />
* {{App|Orage|GTK+ calendar and task manager often seen integrated with Xfce.|http://www.xfce.org/projects|{{Pkg|orage}}}}<br />
* {{App|Osmo|GTK+ personal organizer, which includes calendar, tasks manager and address book modules.|http://clayo.org/osmo/|{{Pkg|osmo}}}}<br />
* {{App|Outspline|Extensible outliner with advanced time management features, supporting events with complex recurrence schemes.|https://kynikos.github.io/outspline/|{{AUR|outspline}}}}<br />
* {{App|QTodoTxt|A cross-platform UI client for {{ic|todo.txt}} files (see [http://todotxt.com/ project's page])|https://github.com/mNantern/QTodoTxt|{{AUR|qtodotxt}} {{AUR|qtodotxt-git}}{{Broken package link|{{aur-mirror|qtodotxt-git}}}}}}<br />
* {{App|Rachota|Portable time tracker for personal projects.|http://rachota.sourceforge.net/|{{AUR|rachota}}{{Broken package link|{{aur-mirror|rachota}}}}}}<br />
* {{App|Task Coach|Simple open source To-do manager to manage personal tasks and To-do lists.|http://taskcoach.org|{{AUR|taskcoach}}}}<br />
* {{App|[[Wikipedia:Tasque (software)|Tasque]]|Easy quick task management app written in C Sharp.|https://wiki.gnome.org/Apps/Tasque|{{Pkg|tasque}}}}<br />
* {{App|Tider|Lightweight time tracking application (GTK+)|http://pusto.org/en/tider/|{{AUR|tider-git}}}}<br />
* {{App|TkRemind|Sophisticated calendar and alarm program.|http://www.roaringpenguin.com/products/remind|{{Pkg|remind}}}}<br />
* {{App|wxRemind|Python text and graphical frontend to Remind.|http://duke.edu/~dgraham/wxRemind/|{{AUR|wxremind}}{{Broken package link|{{aur-mirror|wxremind}}}}}}<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.<br />
<br />
{{Note|1=For possibly more up to date selection of emulators, try checking the [https://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 />
{{Warning|Owning a high-level emulator is not illegal, but distribution of any type of copyrighted ROMs and unauthorized emulation (without written permission of the copyright holder allowing the user to do so) are '''illegal'''. Consequently, Arch Linux does not distribute this copyrighted content, including game ROMs and ripped console BIOSs. You are fully responsible for whatever usage of the emulators obtained from the [[official repositories]] or the [[Arch User Repository]] you make, as well as any legal repercussion that result. Arch Linux bears no responsibility at all.}}<br />
<br />
==== Consoles ====<br />
<br />
See also [[Wikipedia:List of video game console emulators]].<br />
<br />
* {{App|Citra|Nintendo 3DS emulator.|http://citra-emu.org/|{{AUR|citra-git}}}}<br />
* {{App|DeSmuME|Nintendo DS emulator.|http://desmume.org/|{{Pkg|desmume}}}}<br />
* {{App|[[Dolphin emulator|Dolphin]]|Very capable GameCube and Wii emulator.|http://dolphin-emu.org/|{{Pkg|dolphin-emu}}}}<br />
* {{App|epsxe|Emulator for the PlayStation video game console for x86-based PC hardware.|http://www.epsxe.com/|{{AUR|epsxe}}}}<br />
* {{App|fakenes|NES (Nintendo Famicom) emulator.|http://fakenes.sourceforge.net/|{{AUR|fakenes}}{{Broken package link|{{aur-mirror|fakenes}}}}}}<br />
* {{App|FCEUX|NTSC and PAL 8 bit Nintendo/Famicom emulator that is an evolution of the original FCE Ultra emulator. It is accurate, compatible and actively maintained.|http://fceux.com/|{{Pkg|fceux}}}}<br />
<br />
* {{App|Gens2|Emulator for Sega Genesis, Sega CD and 32X that is written in assembly language and no longer actively developed.<br />
:* activate OpenGL, set video resolution per custom to 1024x600 for streched full-screen or 800x600 for non-streched;<br />
:* use "Normal" renderer, I couldn't find a visible advantage with the other ones.<br />
|http://www.gens.me/|{{Pkg|gens}}}}<br />
<br />
* {{App|Gens-GS|Gens2, rewritten in C++, combining features from various Gens forks.|http://segaretro.org/Gens/GS|{{Pkg|gens-gs}}}}<br />
* {{App|gngeo|Command-line NeoGeo emulator.|http://gngeo.googlecode.com|{{AUR|gngeo}}}}<br />
* {{App|higan|Multisystem emulator focusing on accuracy, supporting SNES, NES, GB, GBC, GBA.|http://code.google.com/p/higan/|{{Pkg|higan-gtk}} {{Pkg|higan-qt}}}}<br />
* {{App|mednafen|Command line driven multi system emulator.|http://mednafen.sourceforge.net/|{{Pkg|mednafen}}}}<br />
* {{App|Mupen64Plus|Highly compatible Nintendo 64 emulator with plugin system.<br />
|http://code.google.com/p/mupen64plus/|{{Pkg|mupen64plus}} or a graphical front-end, such as {{AUR|m64py}} or {{AUR|cutemupen}}.}}<br />
* {{App|pSX|A not plugin-based PlayStation emulator with fairly high compatibility.|http://psxemulator.gazaxian.com/|{{AUR|psx}}}}<br />
* {{App|PCSXR|PlayStation emulator; Debian fork of the abandoned original PCSX|http://pcsxr.codeplex.com/|{{Pkg|pcsxr}}}}<br />
* {{App|PCSX2|PlayStation 2 emulator. It is still being maintained and developed. It requires BIOS files.|http://www.pcsx2.net/|{{Pkg|pcsx2}}}}<br />
* {{App|snes-9x|Portable, freeware Super Nintendo Entertainment System (SNES) emulator.|http://www.snes9x.com/|{{Pkg|snes9x}}}}<br />
* {{App|[[Visual Boy Advance]]|Game Boy emulator with Game Boy Advance, Game Boy Color, and Super Game Boy support.<br />
|http://vba.ngemu.com/|{{Pkg|vbam-gtk}}}}<br />
* {{App|ZSNES|Highly compatible Super Nintendo emulator.<br />
|http://www.zsnes.com/|{{Pkg|zsnes}}}}<br />
<br />
==== Other ====<br />
* {{App|DOSBox|Open-source DOS emulator which primarily focuses on running DOS Games.|http://www.dosbox.com/|{{Pkg|dosbox}}}}<br />
* {{App|DOSEmu|Open-source DOS emulator.|http://www.dosemu.org/|{{Pkg|dosemu}}}}<br />
* {{App|MAME|Multiple Arcade Machine Emulator.|http://mamedev.org/|{{Pkg|sdlmame}}}}<br />
* {{App|ResidualVM|Cross-platform 3D game interpreter which allows you to play LucasArts' Lua-based 3D adventures.|http://residualvm.org/|{{AUR|residualvm}}}}<br />
* {{App|[[RetroArch]]|Frontend to libretro (emulation library, using modified versions of existing emulators as plugins).|http://github.com/Themaister/RetroArch|{{AUR|retroarch-git}}}}<br />
* {{App|ScummVM|Virtual machine for old school adventures.|http://www.scummvm.org/|{{Pkg|scummvm}}}}<br />
* {{App|X Neko Project II|PC-9801 emulator.|http://www.asahi-net.or.jp/~aw9k-nnk/np2/|{{AUR|xnp2}}}}<br />
<br />
=== Amateur radio ===<br />
<br />
See the main article: [[Amateur radio#Software list]].<br />
<br />
See also [[Wikipedia:List of software-defined radios]].</div>Ygyfygyhttps://wiki.archlinux.org/index.php?title=List_of_applications/Other&diff=404462List of applications/Other2015-10-13T17:44:08Z<p>Ygyfygy: /* Terminal multiplexers */ Fixed my byobu edit..</p>
<hr />
<div><noinclude><br />
[[Category:Applications]]<br />
[[es:List of applications/Other]]<br />
[[it:List of applications/Other]]<br />
[[ja:アプリケーション一覧/その他]]<br />
[[ru:List of applications/Other]]<br />
[[zh-cn:List of applications/Other]]<br />
[[zh-tw:List of applications/Other]]<br />
{{List of applications navigation}}<br />
</noinclude><br />
== Others ==<br />
<br />
=== Work environment ===<br />
<br />
The default installation of Arch provides Bash as shell interpreter and does not contain any Desktop Environment, therefore forces users to choose one themselves. Most Arch boxes run some X11 Window Manager and/or Desktop Environment, but of course there are still people who prefer doing everyday tasks in bare console.<br />
<br />
==== Bootsplash ====<br />
<br />
See also [[Wikipedia:Bootsplash]].<br />
<br />
*{{App|[[Fbsplash]]|Gentoo implementation as bootsplash program|http://wiki.gentoo.org/wiki/Fbsplash|{{AUR|fbsplash}}}}<br />
*{{App|[[Plymouth]]|The new graphical boot process for Fedora, replacing the aging Red Hat Graphical Boot|http://www.freedesktop.org/wiki/Software/Plymouth/|{{AUR|plymouth}}}}<br />
*{{App|[[Splashy]]|A graphical boot process designed to replace the aging Bootsplash program|https://alioth.debian.org/projects/splashy/|{{AUR|splashy-full}}}}<br />
*{{App|xplash|New splash program used by Ubuntu starting from 9.10|https://launchpad.net/xsplash|{{AUR|xsplash-bzr}}{{Broken package link|{{aur-mirror|xsplash-bzr}}}}}}<br />
<br />
==== Command shells ====<br />
<br />
See the main article: [[Command-line shell]].<br />
<br />
See also [[Wikipedia:Comparison of command shells]].<br />
<br />
==== Terminal multiplexers ====<br />
<br />
* {{App|abduco|Tool for session attach and detach support which allows a process to run independently from its controlling terminal.|http://www.brain-dump.org/projects/abduco/|{{aur|abduco}}}}<br />
* {{App|dtach|Program that emulates the detach feature of [[screen]].|http://dtach.sourceforge.net/|{{Pkg|dtach}}}}<br />
* {{App|[[GNU Screen]]|Full-screen window manager that multiplexes a physical terminal.|https://gnu.org/s/screen/|{{Pkg|screen}}}}<br />
* {{App|[[Wikipedia:Tmux|tmux]]|BSD licensed terminal multiplexer.|http://tmux.github.io/|{{Pkg|tmux}}}}<br />
* {{App|[[byobu]]|An GPLv3 licensed addon for tmux. It requires a terminal multiplexer installed.|http://byobu.co/|{{AUR|byobu}}}}<br />
<br />
==== Desktop environments ====<br />
<br />
See the main article: [[Desktop environment#List of desktop environments]].<br />
<br />
See also [[Wikipedia:Comparison of X Window System desktop environments]].<br />
<br />
==== Window managers ====<br />
<br />
===== Console =====<br />
<br />
See also [[#Terminal multiplexers]], which offer some of the functions of window managers for the console.<br />
<br />
* {{App|dvtm|[[dwm]]-style window manager in the console.|http://brain-dump.org/projects/dvtm/|{{Pkg|dvtm}}}}<br />
* {{App|twin|Text-mode window manager.|http://sourceforge.net/projects/twin/|{{Pkg|twin}}}}<br />
<br />
===== Graphical =====<br />
<br />
See the main article: [[Window manager#List of window managers]].<br />
<br />
See also [[Wikipedia:Comparison of X window managers]].<br />
<br />
==== Window tilers ====<br />
<br />
* {{App|[[PyTyle|PyTyle3]]|An automatic tiler that is compatible with Openbox Multihead with faster action and lower memory footprint.|https://github.com/BurntSushi/pytyle3|{{AUR|pytyle3-git}}{{Broken package link|{{aur-mirror|pytyle3-git}}}}}}<br />
* {{App|PyWO|Allows you to easily organize windows on the desktop using keyboard shortcuts.|https://code.google.com/p/pywo/}}<br />
* {{App|QuickTile|Lightweight standalone alternative to Compiz Grid plugin.|http://ssokolow.com/quicktile/|{{AUR|quicktile-git}}}}<br />
* {{App|stiler|A simple python script to convert any wm to tiling wm.|3=https://bbs.archlinux.org/viewtopic.php?id=64100|4={{AUR|stiler-grid-git}}{{Broken package link|{{aur-mirror|stiler-grid-git}}}} {{AUR|stiler}}{{Broken package link|{{aur-mirror|stiler}}}}}}<br />
* {{App|[[Tile-windows]]|Tool for tiling windows horizontally or vertically.|http://www.sourcefiles.org/Utilities/Miscellaneous/tile_0.7.4.tar.gz.shtml|{{AUR|tile-windows}}{{Broken package link|{{aur-mirror|tile-windows}}}}}}<br />
* {{App|whaw|Window manager independent window layout tool.|http://repetae.net/computer/whaw/|{{AUR|whaw}}{{Broken package link|{{aur-mirror|whaw}}}}}}<br />
* {{App|wumwum|The Window Manager manager. It can turn emwh compliant window managers into a tiling window manager while retaining all initial functionalities.|http://wumwum.sourceforge.net/|{{AUR|wumwum}}}}<br />
<br />
==== Virtual desktop pagers ====<br />
<br />
See also [[Wikipedia:Pager (GUI)]].<br />
<br />
* {{App|bbpager|Dockable pager for [[blackbox]] and other window managers.|3=http://bbtools.sourceforge.net/download.php?file=6|4={{Pkg|bbpager}}}}<br />
* {{App|fbpager|Virtual desktop pager for fluxbox.|http://www.fluxbox.org/fbpager|{{AUR|fbpager-git}}}}<br />
* {{App|fluxter|Workspace pager for [[fluxbox]].|http://benedict.isomedia.com/homes/stevencooper/projects/fluxter.html|{{Pkg|fluxter}}{{Broken package link|package not found}}}}<br />
* {{App|IPager|A configurable pager with transparency, originally developed for Fluxbox.|http://useperl.ru/ipager/index.en.html|{{AUR|ipager}}}}<br />
* {{App|Neap|An non-intrusive and light pager that runs in the notification area of your panel.|http://code.google.com/p/neap/|{{AUR|neap}}{{Broken package link|{{aur-mirror|neap}}}}}}<br />
* {{App|Netwmpager|A NetWM/EWMH compatible pager.|http://sourceforge.net/projects/sf-xpaint/files/netwmpager/|{{AUR|netwmpager}}}}<br />
* {{App|obpager|Pager for [[Openbox]] writen in C++.|http://obpager.sourceforge.net/|{{AUR|obpager}}{{Broken package link|{{aur-mirror|obpager}}}}}}<br />
* {{App|Pager|A highly configurable pager compatible with Openbox Multihead.|https://github.com/BurntSushi/pager-multihead|{{AUR|pager-multihead-git}}{{Broken package link|{{aur-mirror|pager-multihead-git}}}}}}<br />
<br />
==== Support applications ====<br />
<br />
===== Login managers =====<br />
<br />
See the main article: [[Display manager#List of display managers]].<br />
<br />
===== Composite managers =====<br />
<br />
See the main article: [[Xorg#List of composite managers]].<br />
<br />
===== Taskbars / panels / docks =====<br />
<br />
* {{App|[[Avant Window Navigator]]|Lightweight dock which sits at the bottom of the screen.|http://launchpad.net/awn|{{AUR|avant-window-navigator}}}}<br />
* {{App|[[Bmpanel]]|Lightweight, NETWM compliant panel.|http://code.google.com/p/bmpanel2/|{{AUR|bmpanel}}}}<br />
* {{App|[[Cairo-Dock]]|Highly customizable dock and launcher application.|http://www.glx-dock.org/|{{Pkg|cairo-dock}}}}<br />
* {{App|Daisy|KDE Plasma widget which acts as a dock.|http://cdlszm.org/|{{AUR|kdeplasma-applets-daisy}}{{Broken package link|{{aur-mirror|kdeplasma-applets-daisy}}}}}}<br />
* {{App|Docker|Docking application which acts as a system tray.|http://icculus.org/openbox/2/docker/|{{AUR|docker-tray}}}}<br />
* {{App|[[Wikipedia:Docky|Docky]]|Full fledged dock application that makes opening common applications and managing windows easier and quicker.|http://wiki.go-docky.com/|{{Pkg|docky}}}}<br />
* {{App|[[fbpanel]]|Lightweight, NETWM compliant desktop panel.|http://fbpanel.sourceforge.net/|{{Pkg|fbpanel}}}}<br />
* {{App|[[Wikipedia:GNOME Panel|GNOME Panel]]|Panel included in the [[GNOME Flashback]] desktop.|https://wiki.gnome.org/Projects/GnomePanel|{{AUR|gnome-panel}}}}<br />
* {{App|KoolDock|KDE3 docker with great effects that tries to resemble the OS X dock.|http://sourceforge.net/projects/kooldock|{{AUR|kooldock-svn}}{{Broken package link|{{aur-mirror|kooldock-svn}}}}}}<br />
* {{App|LXPanel|Lightweight X11 desktop panel and part of the LXDE desktop.|http://lxde.org/lxpanel|{{Pkg|lxpanel}}}}<br />
* {{App|MATE Panel|Panel included in the [[MATE]] desktop.|https://github.com/mate-desktop/mate-panel/|{{Pkg|mate-panel}}}}<br />
* {{App|PerlPanel|The ideal accompaniment to a light-weight Window Manager such as OpenBox, or a desktop-drawing program like iDesk.|http://savannah.nongnu.org/projects/perlpanel|{{pkg|perlpanel}}}}<br />
* {{app|plank|Elegant, simple, clean dock from [[pantheon]] desktop environment.|https://launchpad.net/plank|{{pkg|plank}}}}<br />
* {{App|[[PyPanel]]|Lightweight panel/taskbar written in Python and C.|http://pypanel.sourceforge.net/|{{Pkg|pypanel}}}}<br />
* {{App|qtpanel|Project to create useful and beautiful panel in Qt.|https://gitorious.org/qtpanel/qtpanel|{{AUR|qtpanel-git}}{{Broken package link|{{aur-mirror|qtpanel-git}}}}}}<br />
* {{App|[[Stalonetray]]|Stand-alone system tray.|http://stalonetray.sourceforge.net/|{{Pkg|stalonetray}}}}<br />
* {{App|[[Tint2]]|Simple panel/taskbar developed specifically for Openbox.|http://code.google.com/p/tint2/|{{Pkg|tint2}}}}<br />
* {{App|Trayer|Lightweight GTK+-based systray.|https://gna.org/projects/fvwm-crystal/|{{Pkg|trayer}}}}<br />
* {{App|wbar|Quick launch bar developed with speed in mind.|http://freecode.com/projects/wbar/|{{Pkg|wbar}}}}<br />
* {{App|Xfce Panel|Panel included in the [[Xfce]] desktop.|http://docs.xfce.org/xfce/xfce4-panel/start|{{Pkg|xfce4-panel}}}}<br />
<br />
===== Application launchers =====<br />
<br />
See also [[Wikipedia:Comparison of desktop application launchers]].<br />
<br />
* {{App|ADeskBar|Easy, simple and unobtrusive application launcher for Openbox.|http://adeskbar.tuxfamily.org/|{{AUR|adeskbar}}{{Broken package link|{{aur-mirror|adeskbar}}}}}}<br />
* {{App|Albert|An application launcher inspired by Alfred.|https://github.com/manuelschneid3r/albert|{{AUR|albert}}}}<br />
* {{App|Ayr|Manages menus of application launchers, either executables or desktop files. Also opens files and URLs with launchers, desktop files, or applications associated by name or mimetype. Uses dmenu to manage its menus.|http://appstogo.mcfadzean.org.uk/linux.html#ayr|{{aur|ayr}}}}<br />
* {{App|Bashrun2|Provides a different, barebones approach to a run dialog, using a specialized Bash session within a small xterm window.|https://code.google.com/p/bashrun2/|{{AUR|bashrun2}}{{Broken package link|{{aur-mirror|bashrun2}}}}}}<br />
* {{App|[[dmenu]]|Fast and lightweight dynamic menu for X which is also useful as an application launcher.|http://tools.suckless.org/dmenu/|{{Pkg|dmenu}}}}<br />
* {{App|dmenu-extended|An extension to ''dmenu'' for quickly opening files and folders.|https://github.com/markjones112358/dmenu-extended|{{AUR|dmenu-extended}}}}<br />
* {{App|dmenu-launch|Simple ''dmenu''-based application launcher. Launches binaries and XDG shortcuts.|https://github.com/Wintervenom/Scripts/blob/master/file/launch/dmenu-launch|{{AUR|dmenu-launch}}}}<br />
* {{App|dswitcher|''dmenu''-based window switcher that works regardless of workspace or minimization.|https://github.com/Antithesisx/dswitcher|{{AUR|dswitcher-git}}}}<br />
* {{App|Fehlstart|Small GTK+-based application launcher.|https://gitorious.org/fehlstart|{{AUR|fehlstart-git}}}}<br />
* {{App|[[Gmrun]]|Lightweight GTK+-based application launcher, with the ability to run programs inside a terminal and other handy features.|http://sourceforge.net/projects/gmrun/|{{Pkg|gmrun}}}}<br />
* {{App|[[Wikipedia:GNOME Do|GNOME Do]]|Application launcher inspired by [[Wikipedia:Quicksilver_(software)|Quicksilver]] with many plugins, originally developed for the GNOME desktop.|http://do.cooperteam.net/|{{Pkg|gnome-do}}}}<br />
* {{App|j4-dmenu-desktop|Very fast dmenu application launcher.|https://github.com/enkore/j4-dmenu-desktop|{{AUR|j4-dmenu-desktop}}}}<br />
* {{App|Kupfer|Convenient command and access tool for the GNOME desktop that can launch applications, open documents and access different types of objects and act on them.|https://wiki.gnome.org/Apps/Kupfer|{{AUR|kupfer}}}}<br />
* {{App|[[Wikipedia:Launchy|Launchy]]|Very popular cross-platform application launcher with a plugin-based system used to provide extra functionality.|http://www.launchy.net/|{{Pkg|launchy}}}}<br />
* {{App|rofi|A popup window switcher roughly based on superswitcher, requiring only xlib and pango.|http://davedavenport.github.io/rofi/|{{Pkg|rofi}}}}<br />
* {{app|slingshot|An application launcher has a clear look, part of [[pantheon]] desktop environment.|https://launchpad.net/slingshot|{{aur|slingshot-launcher}}}}<br />
* {{App|Synapse|Synapse is a semantic launcher written in Vala that you can use to start applications as well as find and access relevant documents and files by making use of the Zeitgeist engine.|https://launchpad.net/synapse-project|{{Pkg|synapse}}}}<br />
* {{App|Whippet|A launcher and xdg-open replacement for control freaks. Opens files and URLs with applications associated by name and/or mimetype. Applications and associations may be customized using an SQLite database. Uses dmenu to manage its menus.|http://appstogo.mcfadzean.org.uk/linux.html#whippet|{{aur|whippet}}}}<br />
* {{App|xboomx|Light ''dmenu'' wrapper that reorders commands based on popularity, written in Python.|https://bitbucket.org/dehun/xboomx|{{AUR|xboomx}}{{Broken package link|{{aur-mirror|xboomx}}}}}}<br />
* {{App|xfce4-appfinder|An eazy-to-use application launcher from Xfce.|http://docs.xfce.org/xfce/xfce4-appfinder/start|{{pkg|xfce4-appfinder}}}}<br />
* {{App|Yeganesh|Light ''dmenu'' wrapper that reorders commands based on popularity, written in Haskell.|http://dmwit.com/yeganesh|{{AUR|yeganesh}}{{Broken package link|{{aur-mirror|yeganesh}}}}}}<br />
<br />
===== Logout dialogue =====<br />
A few simple shutdown managers are available:<br />
* {{App|exitx|A logout dialog for Openbox that uses [[Sudo]].|http://www.linuxsir.com/bbs/lastpostinthread350740.html|{{AUR|exitx}}{{Broken package link|{{aur-mirror|exitx}}}}}}<br />
* {{App|exitx-polkit|A GTK logout dialog for Openbox with PolicyKit support.|https://github.com/z0id/exitx-polkit|{{AUR|exitx-polkit-git}}{{Broken package link|{{aur-mirror|exitx-polkit-git}}}}}}<br />
* {{App|exitx-systemd|A GTK logout dialog for Openbox with systemd support.|https://github.com/z0id/exitx-systemd|{{AUR|exitx-systemd-git}}{{Broken package link|{{aur-mirror|exitx-systemd-git}}}}}}<br />
* {{App|oblogout|A graphical logout script for [[Openbox]] that may be used with other WMs.|https://launchpad.net/oblogout|{{pkg|oblogout}}}}<br />
* {{App|obshutdown|A great GTK/Cairo based shutdown manager for Openbox and other window managers.|https://github.com/panjandrum/obshutdown|{{AUR|obshutdown}}{{Broken package link|{{aur-mirror|obshutdown}}}}}}<br />
<br />
==== Accessibility ==== <br />
<br />
===== Speech recognition =====<br />
<br />
See the main article [[Speech recognition]] for applications.<br />
<br />
=== Finance ===<br />
<br />
See also [[Wikipedia:Comparison of accounting software]].<br />
<br />
* {{App|esniper|Simple, lightweight tool for [[Wikipedia:Auction_sniping|sniping]] eBay auctions.|http://esniper.sourceforge.net/|{{AUR|esniper}}}}<br />
* {{App|[[Wikipedia:GnuCash|GnuCash]]|Financial application that implements a double-entry book-keeping system with features for small business accounting.|http://www.gnucash.org/|{{Pkg|gnucash}}}}<br />
* {{App|[[Wikipedia:Grisbi|Grisbi]]|Personal finance system which manages third party, expenditure and receipt categories, as well as budgetary lines, financial years, and other information that makes it suitable for associations.|http://www.grisbi.org/|{{AUR|grisbi}}}}<br />
* {{App|[[Wikipedia:HomeBank|HomeBank]]|Easy to use finance manager that can analyse your personal finance in detail using powerful filtering tools and graphs.|http://homebank.free.fr/|{{Pkg|homebank}}}}<br />
* {{App|[[Wikipedia:KMyMoney|KMyMoney]]|Personal finance manager that operates in a similar way to [[Wikipedia:Microsoft Money|Microsoft Money]]. It supports different account types, categorisation of expenses and incomes, reconciliation of bank accounts and import/export to the “QIF” file format.|http://kmymoney2.sourceforge.net/index-home.html|{{Pkg|kmymoney}}}}<br />
* {{App|Ledger|Ledger is a powerful, double-entry accounting system that is accessed from the UNIX command-line.|http://ledger-cli.org/|{{AUR|ledger}}}}<br />
* {{App|Moneychanger|An intuitive QT/C++ system tray client for ''Open-Transactions''|https://github.com/Open-Transactions/Moneychanger|{{AUR|moneychanger-git}}}}<br />
* {{App|Manager Accounting|Manager is free accounting software for small business.|http://www.manager.io/|{{AUR|manager-accounting}}}}<br />
* {{App|Money Manager EX|An easy-to-use personal finance suite|http://www.moneymanagerex.org/|{{Pkg|moneymanagerex}}}}<br />
* {{App|Skrooge|Personal finances manager for the KDE desktop.|http://skrooge.org/|{{Pkg|skrooge}}}}<br />
* {{App|openerp|Open source erp system purely in python.|http://openerp.com/|{{AUR|openerp}}}}<br />
* {{App|Open-Transactions|A financial cryptography library used for issuing currencies, stock, paying dividends, creating asset accounts, sending/receiving digital cash, trading on markets and escrow.|https://github.com/Open-Transactions/Open-Transactions|{{AUR|open-transactions-git}}}}<br />
<br />
=== Flashcards ===<br />
<br />
* {{App|[[Anki]]|Anki is a program which makes remembering things easy.|http://ankisrs.net/|{{Pkg|anki}}}}<br />
* {{App|iGNUit|Memorization aid based on the Leitner flashcard system.|http://homepages.ihug.co.nz/~trmusson/programs.html#ignuit|{{AUR|ignuit}}}}<br />
* {{App|[[Mnemosyne]]|Free flash-card tool which optimizes your learning process.|http://mnemosyne-proj.org/|{{AUR|mnemosyne}}}}<br />
<br />
=== Time management ===<br />
<br />
==== Console ====<br />
<br />
* {{App|Calcurse|Text-based ncurses calendar and scheduling system.|http://calcurse.org/|{{Pkg|calcurse}}}}<br />
* {{App|Doneyet|Ncurses-based hierarchical To-do list manager written in C++.|https://github.com/gtaubman/doneyet|{{AUR|doneyet}}{{Broken package link|{{aur-mirror|doneyet}}}}}}<br />
* {{App|Pal|Very lightweight calendar with both interactive and non-interactive interfaces.|http://palcal.sourceforge.net/|{{AUR|pal}}}}<br />
* {{App|[[Remind]]|Highly sophisticated text-based calendaring and notification system.|http://roaringpenguin.com/products/remind|{{Pkg|remind}}}}<br />
* {{App|[[Wikipedia:Taskwarrior|Taskwarrior]]|Command-line To-do list application with support for lua customization and more.|http://taskwarrior.org/|{{Pkg|task}}}}<br />
* {{App|Todo.txt|Small command-line To-do manager.|http://ginatrapani.github.com/todo.txt-cli/|{{AUR|todotxt}}}}<br />
* {{App|TuDu|Ncurses-based hierarchical To-do list manager with vim-like keybindings.|http://code.meskio.net/tudu/|{{AUR|tudu}}}}<br />
* {{App|When|Simple personal calendar program.|http://lightandmatter.com/when/when.html|{{Pkg|when}}}}<br />
* {{App|Wyrd|Text-based front-end to Remind, a calendar and alarm program used on UNIX and Linux computers.|http://pessimization.com/software/wyrd/|{{Pkg|wyrd}}}}<br />
* {{App|DevTodo|Is a small command line application for maintaining lists of tasks.|http://swapoff.org/devtodo1.html|{{AUR|devtodo}}}}<br />
<br />
==== Graphical ====<br />
<br />
* {{App|Calendar|Calendar application for GNOME.|https://wiki.gnome.org/Apps/Calendar|{{Pkg|gnome-calendar}}}}<br />
* {{App|Day Planner|Program designed to help you easily plan and manage your time. It can manage appointments, birthdays and more.|http://www.day-planner.org/|{{AUR|dayplanner}}}}<br />
* {{App|etm (Event and Task Manager)|Simple application with a "Getting Things Done!" approach to handling events, tasks, activities, reminders and projects.|http://duke.edu/~dgraham/ETM/|{{AUR|etm}}}}<br />
* {{App|Glista|Simple GTK+ To-do list manager with notes support.|http://arr.gr/glista/|{{AUR|glista}}{{Broken package link|{{aur-mirror|glista}}}}}}<br />
* {{App|GTG (Getting Things GNOME!)|Personal tasks and To-do list items organizer for the GNOME desktop.|http://gtgnome.net/|{{AUR|gtg}}{{Broken package link|{{aur-mirror|gtg}}}}}}<br />
* {{App|Hamster|Time tracking application that helps you to keep track on how much time you have spent during the day on activities you choose to track.|http://projecthamster.wordpress.com/|{{Pkg|hamster-time-tracker}}}}<br />
* {{App|[[Wikipedia:Kontact#Organizer|KOrganizer]]|Calendar and scheduling program, part of {{Grp|kdepim}}.|http://www.kde.org/applications/office/korganizer/|{{Pkg|kdepim-korganizer}}}}<br />
* {{App|[[Wikipedia:Lightning (software)|Lightning]]|Extension to Mozilla Thunderbird that provides calendar and task support.|http://www.mozilla.org/projects/calendar/lightning/|{{AUR|lightning}}{{Broken package link|{{aur-mirror|lightning}}}}}}<br />
* {{App|Orage|GTK+ calendar and task manager often seen integrated with Xfce.|http://www.xfce.org/projects|{{Pkg|orage}}}}<br />
* {{App|Osmo|GTK+ personal organizer, which includes calendar, tasks manager and address book modules.|http://clayo.org/osmo/|{{Pkg|osmo}}}}<br />
* {{App|Outspline|Extensible outliner with advanced time management features, supporting events with complex recurrence schemes.|https://kynikos.github.io/outspline/|{{AUR|outspline}}}}<br />
* {{App|QTodoTxt|A cross-platform UI client for {{ic|todo.txt}} files (see [http://todotxt.com/ project's page])|https://github.com/mNantern/QTodoTxt|{{AUR|qtodotxt}} {{AUR|qtodotxt-git}}{{Broken package link|{{aur-mirror|qtodotxt-git}}}}}}<br />
* {{App|Rachota|Portable time tracker for personal projects.|http://rachota.sourceforge.net/|{{AUR|rachota}}{{Broken package link|{{aur-mirror|rachota}}}}}}<br />
* {{App|Task Coach|Simple open source To-do manager to manage personal tasks and To-do lists.|http://taskcoach.org|{{AUR|taskcoach}}}}<br />
* {{App|[[Wikipedia:Tasque (software)|Tasque]]|Easy quick task management app written in C Sharp.|https://wiki.gnome.org/Apps/Tasque|{{Pkg|tasque}}}}<br />
* {{App|Tider|Lightweight time tracking application (GTK+)|http://pusto.org/en/tider/|{{AUR|tider-git}}}}<br />
* {{App|TkRemind|Sophisticated calendar and alarm program.|http://www.roaringpenguin.com/products/remind|{{Pkg|remind}}}}<br />
* {{App|wxRemind|Python text and graphical frontend to Remind.|http://duke.edu/~dgraham/wxRemind/|{{AUR|wxremind}}{{Broken package link|{{aur-mirror|wxremind}}}}}}<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.<br />
<br />
{{Note|1=For possibly more up to date selection of emulators, try checking the [https://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 />
{{Warning|Owning a high-level emulator is not illegal, but distribution of any type of copyrighted ROMs and unauthorized emulation (without written permission of the copyright holder allowing the user to do so) are '''illegal'''. Consequently, Arch Linux does not distribute this copyrighted content, including game ROMs and ripped console BIOSs. You are fully responsible for whatever usage of the emulators obtained from the [[official repositories]] or the [[Arch User Repository]] you make, as well as any legal repercussion that result. Arch Linux bears no responsibility at all.}}<br />
<br />
==== Consoles ====<br />
<br />
See also [[Wikipedia:List of video game console emulators]].<br />
<br />
* {{App|Citra|Nintendo 3DS emulator.|http://citra-emu.org/|{{AUR|citra-git}}}}<br />
* {{App|DeSmuME|Nintendo DS emulator.|http://desmume.org/|{{Pkg|desmume}}}}<br />
* {{App|[[Dolphin emulator|Dolphin]]|Very capable GameCube and Wii emulator.|http://dolphin-emu.org/|{{Pkg|dolphin-emu}}}}<br />
* {{App|epsxe|Emulator for the PlayStation video game console for x86-based PC hardware.|http://www.epsxe.com/|{{AUR|epsxe}}}}<br />
* {{App|fakenes|NES (Nintendo Famicom) emulator.|http://fakenes.sourceforge.net/|{{AUR|fakenes}}{{Broken package link|{{aur-mirror|fakenes}}}}}}<br />
* {{App|FCEUX|NTSC and PAL 8 bit Nintendo/Famicom emulator that is an evolution of the original FCE Ultra emulator. It is accurate, compatible and actively maintained.|http://fceux.com/|{{Pkg|fceux}}}}<br />
<br />
* {{App|Gens2|Emulator for Sega Genesis, Sega CD and 32X that is written in assembly language and no longer actively developed.<br />
:* activate OpenGL, set video resolution per custom to 1024x600 for streched full-screen or 800x600 for non-streched;<br />
:* use "Normal" renderer, I couldn't find a visible advantage with the other ones.<br />
|http://www.gens.me/|{{Pkg|gens}}}}<br />
<br />
* {{App|Gens-GS|Gens2, rewritten in C++, combining features from various Gens forks.|http://segaretro.org/Gens/GS|{{Pkg|gens-gs}}}}<br />
* {{App|gngeo|Command-line NeoGeo emulator.|http://gngeo.googlecode.com|{{AUR|gngeo}}}}<br />
* {{App|higan|Multisystem emulator focusing on accuracy, supporting SNES, NES, GB, GBC, GBA.|http://code.google.com/p/higan/|{{Pkg|higan-gtk}} {{Pkg|higan-qt}}}}<br />
* {{App|mednafen|Command line driven multi system emulator.|http://mednafen.sourceforge.net/|{{Pkg|mednafen}}}}<br />
* {{App|Mupen64Plus|Highly compatible Nintendo 64 emulator with plugin system.<br />
|http://code.google.com/p/mupen64plus/|{{Pkg|mupen64plus}} or a graphical front-end, such as {{AUR|m64py}} or {{AUR|cutemupen}}.}}<br />
* {{App|pSX|A not plugin-based PlayStation emulator with fairly high compatibility.|http://psxemulator.gazaxian.com/|{{AUR|psx}}}}<br />
* {{App|PCSXR|PlayStation emulator; Debian fork of the abandoned original PCSX|http://pcsxr.codeplex.com/|{{Pkg|pcsxr}}}}<br />
* {{App|PCSX2|PlayStation 2 emulator. It is still being maintained and developed. It requires BIOS files.|http://www.pcsx2.net/|{{Pkg|pcsx2}}}}<br />
* {{App|snes-9x|Portable, freeware Super Nintendo Entertainment System (SNES) emulator.|http://www.snes9x.com/|{{Pkg|snes9x}}}}<br />
* {{App|[[Visual Boy Advance]]|Game Boy emulator with Game Boy Advance, Game Boy Color, and Super Game Boy support.<br />
|http://vba.ngemu.com/|{{Pkg|vbam-gtk}}}}<br />
* {{App|ZSNES|Highly compatible Super Nintendo emulator.<br />
|http://www.zsnes.com/|{{Pkg|zsnes}}}}<br />
<br />
==== Other ====<br />
* {{App|DOSBox|Open-source DOS emulator which primarily focuses on running DOS Games.|http://www.dosbox.com/|{{Pkg|dosbox}}}}<br />
* {{App|DOSEmu|Open-source DOS emulator.|http://www.dosemu.org/|{{Pkg|dosemu}}}}<br />
* {{App|MAME|Multiple Arcade Machine Emulator.|http://mamedev.org/|{{Pkg|sdlmame}}}}<br />
* {{App|ResidualVM|Cross-platform 3D game interpreter which allows you to play LucasArts' Lua-based 3D adventures.|http://residualvm.org/|{{AUR|residualvm}}}}<br />
* {{App|[[RetroArch]]|Frontend to libretro (emulation library, using modified versions of existing emulators as plugins).|http://github.com/Themaister/RetroArch|{{AUR|retroarch-git}}}}<br />
* {{App|ScummVM|Virtual machine for old school adventures.|http://www.scummvm.org/|{{Pkg|scummvm}}}}<br />
* {{App|X Neko Project II|PC-9801 emulator.|http://www.asahi-net.or.jp/~aw9k-nnk/np2/|{{AUR|xnp2}}}}<br />
<br />
=== Amateur radio ===<br />
<br />
See the main article: [[Amateur radio#Software list]].<br />
<br />
See also [[Wikipedia:List of software-defined radios]].</div>Ygyfygyhttps://wiki.archlinux.org/index.php?title=List_of_applications/Other&diff=404461List of applications/Other2015-10-13T17:43:34Z<p>Ygyfygy: /* Terminal multiplexers */ Added byobu (http://byobu.co)</p>
<hr />
<div><noinclude><br />
[[Category:Applications]]<br />
[[es:List of applications/Other]]<br />
[[it:List of applications/Other]]<br />
[[ja:アプリケーション一覧/その他]]<br />
[[ru:List of applications/Other]]<br />
[[zh-cn:List of applications/Other]]<br />
[[zh-tw:List of applications/Other]]<br />
{{List of applications navigation}}<br />
</noinclude><br />
== Others ==<br />
<br />
=== Work environment ===<br />
<br />
The default installation of Arch provides Bash as shell interpreter and does not contain any Desktop Environment, therefore forces users to choose one themselves. Most Arch boxes run some X11 Window Manager and/or Desktop Environment, but of course there are still people who prefer doing everyday tasks in bare console.<br />
<br />
==== Bootsplash ====<br />
<br />
See also [[Wikipedia:Bootsplash]].<br />
<br />
*{{App|[[Fbsplash]]|Gentoo implementation as bootsplash program|http://wiki.gentoo.org/wiki/Fbsplash|{{AUR|fbsplash}}}}<br />
*{{App|[[Plymouth]]|The new graphical boot process for Fedora, replacing the aging Red Hat Graphical Boot|http://www.freedesktop.org/wiki/Software/Plymouth/|{{AUR|plymouth}}}}<br />
*{{App|[[Splashy]]|A graphical boot process designed to replace the aging Bootsplash program|https://alioth.debian.org/projects/splashy/|{{AUR|splashy-full}}}}<br />
*{{App|xplash|New splash program used by Ubuntu starting from 9.10|https://launchpad.net/xsplash|{{AUR|xsplash-bzr}}{{Broken package link|{{aur-mirror|xsplash-bzr}}}}}}<br />
<br />
==== Command shells ====<br />
<br />
See the main article: [[Command-line shell]].<br />
<br />
See also [[Wikipedia:Comparison of command shells]].<br />
<br />
==== Terminal multiplexers ====<br />
<br />
* {{App|abduco|Tool for session attach and detach support which allows a process to run independently from its controlling terminal.|http://www.brain-dump.org/projects/abduco/|{{aur|abduco}}}}<br />
* {{App|dtach|Program that emulates the detach feature of [[screen]].|http://dtach.sourceforge.net/|{{Pkg|dtach}}}}<br />
* {{App|[[GNU Screen]]|Full-screen window manager that multiplexes a physical terminal.|https://gnu.org/s/screen/|{{Pkg|screen}}}}<br />
* {{App|[[Wikipedia:Tmux|tmux]]|BSD licensed terminal multiplexer.|http://tmux.github.io/|{{Pkg|tmux}}}}<br />
* {{App|[[tmux]]|An GPLv3 licensed addon for tmux. It requires a terminal multiplexer installed.|http://byobu.co/|{{AUR|byobu}}}}<br />
<br />
==== Desktop environments ====<br />
<br />
See the main article: [[Desktop environment#List of desktop environments]].<br />
<br />
See also [[Wikipedia:Comparison of X Window System desktop environments]].<br />
<br />
==== Window managers ====<br />
<br />
===== Console =====<br />
<br />
See also [[#Terminal multiplexers]], which offer some of the functions of window managers for the console.<br />
<br />
* {{App|dvtm|[[dwm]]-style window manager in the console.|http://brain-dump.org/projects/dvtm/|{{Pkg|dvtm}}}}<br />
* {{App|twin|Text-mode window manager.|http://sourceforge.net/projects/twin/|{{Pkg|twin}}}}<br />
<br />
===== Graphical =====<br />
<br />
See the main article: [[Window manager#List of window managers]].<br />
<br />
See also [[Wikipedia:Comparison of X window managers]].<br />
<br />
==== Window tilers ====<br />
<br />
* {{App|[[PyTyle|PyTyle3]]|An automatic tiler that is compatible with Openbox Multihead with faster action and lower memory footprint.|https://github.com/BurntSushi/pytyle3|{{AUR|pytyle3-git}}{{Broken package link|{{aur-mirror|pytyle3-git}}}}}}<br />
* {{App|PyWO|Allows you to easily organize windows on the desktop using keyboard shortcuts.|https://code.google.com/p/pywo/}}<br />
* {{App|QuickTile|Lightweight standalone alternative to Compiz Grid plugin.|http://ssokolow.com/quicktile/|{{AUR|quicktile-git}}}}<br />
* {{App|stiler|A simple python script to convert any wm to tiling wm.|3=https://bbs.archlinux.org/viewtopic.php?id=64100|4={{AUR|stiler-grid-git}}{{Broken package link|{{aur-mirror|stiler-grid-git}}}} {{AUR|stiler}}{{Broken package link|{{aur-mirror|stiler}}}}}}<br />
* {{App|[[Tile-windows]]|Tool for tiling windows horizontally or vertically.|http://www.sourcefiles.org/Utilities/Miscellaneous/tile_0.7.4.tar.gz.shtml|{{AUR|tile-windows}}{{Broken package link|{{aur-mirror|tile-windows}}}}}}<br />
* {{App|whaw|Window manager independent window layout tool.|http://repetae.net/computer/whaw/|{{AUR|whaw}}{{Broken package link|{{aur-mirror|whaw}}}}}}<br />
* {{App|wumwum|The Window Manager manager. It can turn emwh compliant window managers into a tiling window manager while retaining all initial functionalities.|http://wumwum.sourceforge.net/|{{AUR|wumwum}}}}<br />
<br />
==== Virtual desktop pagers ====<br />
<br />
See also [[Wikipedia:Pager (GUI)]].<br />
<br />
* {{App|bbpager|Dockable pager for [[blackbox]] and other window managers.|3=http://bbtools.sourceforge.net/download.php?file=6|4={{Pkg|bbpager}}}}<br />
* {{App|fbpager|Virtual desktop pager for fluxbox.|http://www.fluxbox.org/fbpager|{{AUR|fbpager-git}}}}<br />
* {{App|fluxter|Workspace pager for [[fluxbox]].|http://benedict.isomedia.com/homes/stevencooper/projects/fluxter.html|{{Pkg|fluxter}}{{Broken package link|package not found}}}}<br />
* {{App|IPager|A configurable pager with transparency, originally developed for Fluxbox.|http://useperl.ru/ipager/index.en.html|{{AUR|ipager}}}}<br />
* {{App|Neap|An non-intrusive and light pager that runs in the notification area of your panel.|http://code.google.com/p/neap/|{{AUR|neap}}{{Broken package link|{{aur-mirror|neap}}}}}}<br />
* {{App|Netwmpager|A NetWM/EWMH compatible pager.|http://sourceforge.net/projects/sf-xpaint/files/netwmpager/|{{AUR|netwmpager}}}}<br />
* {{App|obpager|Pager for [[Openbox]] writen in C++.|http://obpager.sourceforge.net/|{{AUR|obpager}}{{Broken package link|{{aur-mirror|obpager}}}}}}<br />
* {{App|Pager|A highly configurable pager compatible with Openbox Multihead.|https://github.com/BurntSushi/pager-multihead|{{AUR|pager-multihead-git}}{{Broken package link|{{aur-mirror|pager-multihead-git}}}}}}<br />
<br />
==== Support applications ====<br />
<br />
===== Login managers =====<br />
<br />
See the main article: [[Display manager#List of display managers]].<br />
<br />
===== Composite managers =====<br />
<br />
See the main article: [[Xorg#List of composite managers]].<br />
<br />
===== Taskbars / panels / docks =====<br />
<br />
* {{App|[[Avant Window Navigator]]|Lightweight dock which sits at the bottom of the screen.|http://launchpad.net/awn|{{AUR|avant-window-navigator}}}}<br />
* {{App|[[Bmpanel]]|Lightweight, NETWM compliant panel.|http://code.google.com/p/bmpanel2/|{{AUR|bmpanel}}}}<br />
* {{App|[[Cairo-Dock]]|Highly customizable dock and launcher application.|http://www.glx-dock.org/|{{Pkg|cairo-dock}}}}<br />
* {{App|Daisy|KDE Plasma widget which acts as a dock.|http://cdlszm.org/|{{AUR|kdeplasma-applets-daisy}}{{Broken package link|{{aur-mirror|kdeplasma-applets-daisy}}}}}}<br />
* {{App|Docker|Docking application which acts as a system tray.|http://icculus.org/openbox/2/docker/|{{AUR|docker-tray}}}}<br />
* {{App|[[Wikipedia:Docky|Docky]]|Full fledged dock application that makes opening common applications and managing windows easier and quicker.|http://wiki.go-docky.com/|{{Pkg|docky}}}}<br />
* {{App|[[fbpanel]]|Lightweight, NETWM compliant desktop panel.|http://fbpanel.sourceforge.net/|{{Pkg|fbpanel}}}}<br />
* {{App|[[Wikipedia:GNOME Panel|GNOME Panel]]|Panel included in the [[GNOME Flashback]] desktop.|https://wiki.gnome.org/Projects/GnomePanel|{{AUR|gnome-panel}}}}<br />
* {{App|KoolDock|KDE3 docker with great effects that tries to resemble the OS X dock.|http://sourceforge.net/projects/kooldock|{{AUR|kooldock-svn}}{{Broken package link|{{aur-mirror|kooldock-svn}}}}}}<br />
* {{App|LXPanel|Lightweight X11 desktop panel and part of the LXDE desktop.|http://lxde.org/lxpanel|{{Pkg|lxpanel}}}}<br />
* {{App|MATE Panel|Panel included in the [[MATE]] desktop.|https://github.com/mate-desktop/mate-panel/|{{Pkg|mate-panel}}}}<br />
* {{App|PerlPanel|The ideal accompaniment to a light-weight Window Manager such as OpenBox, or a desktop-drawing program like iDesk.|http://savannah.nongnu.org/projects/perlpanel|{{pkg|perlpanel}}}}<br />
* {{app|plank|Elegant, simple, clean dock from [[pantheon]] desktop environment.|https://launchpad.net/plank|{{pkg|plank}}}}<br />
* {{App|[[PyPanel]]|Lightweight panel/taskbar written in Python and C.|http://pypanel.sourceforge.net/|{{Pkg|pypanel}}}}<br />
* {{App|qtpanel|Project to create useful and beautiful panel in Qt.|https://gitorious.org/qtpanel/qtpanel|{{AUR|qtpanel-git}}{{Broken package link|{{aur-mirror|qtpanel-git}}}}}}<br />
* {{App|[[Stalonetray]]|Stand-alone system tray.|http://stalonetray.sourceforge.net/|{{Pkg|stalonetray}}}}<br />
* {{App|[[Tint2]]|Simple panel/taskbar developed specifically for Openbox.|http://code.google.com/p/tint2/|{{Pkg|tint2}}}}<br />
* {{App|Trayer|Lightweight GTK+-based systray.|https://gna.org/projects/fvwm-crystal/|{{Pkg|trayer}}}}<br />
* {{App|wbar|Quick launch bar developed with speed in mind.|http://freecode.com/projects/wbar/|{{Pkg|wbar}}}}<br />
* {{App|Xfce Panel|Panel included in the [[Xfce]] desktop.|http://docs.xfce.org/xfce/xfce4-panel/start|{{Pkg|xfce4-panel}}}}<br />
<br />
===== Application launchers =====<br />
<br />
See also [[Wikipedia:Comparison of desktop application launchers]].<br />
<br />
* {{App|ADeskBar|Easy, simple and unobtrusive application launcher for Openbox.|http://adeskbar.tuxfamily.org/|{{AUR|adeskbar}}{{Broken package link|{{aur-mirror|adeskbar}}}}}}<br />
* {{App|Albert|An application launcher inspired by Alfred.|https://github.com/manuelschneid3r/albert|{{AUR|albert}}}}<br />
* {{App|Ayr|Manages menus of application launchers, either executables or desktop files. Also opens files and URLs with launchers, desktop files, or applications associated by name or mimetype. Uses dmenu to manage its menus.|http://appstogo.mcfadzean.org.uk/linux.html#ayr|{{aur|ayr}}}}<br />
* {{App|Bashrun2|Provides a different, barebones approach to a run dialog, using a specialized Bash session within a small xterm window.|https://code.google.com/p/bashrun2/|{{AUR|bashrun2}}{{Broken package link|{{aur-mirror|bashrun2}}}}}}<br />
* {{App|[[dmenu]]|Fast and lightweight dynamic menu for X which is also useful as an application launcher.|http://tools.suckless.org/dmenu/|{{Pkg|dmenu}}}}<br />
* {{App|dmenu-extended|An extension to ''dmenu'' for quickly opening files and folders.|https://github.com/markjones112358/dmenu-extended|{{AUR|dmenu-extended}}}}<br />
* {{App|dmenu-launch|Simple ''dmenu''-based application launcher. Launches binaries and XDG shortcuts.|https://github.com/Wintervenom/Scripts/blob/master/file/launch/dmenu-launch|{{AUR|dmenu-launch}}}}<br />
* {{App|dswitcher|''dmenu''-based window switcher that works regardless of workspace or minimization.|https://github.com/Antithesisx/dswitcher|{{AUR|dswitcher-git}}}}<br />
* {{App|Fehlstart|Small GTK+-based application launcher.|https://gitorious.org/fehlstart|{{AUR|fehlstart-git}}}}<br />
* {{App|[[Gmrun]]|Lightweight GTK+-based application launcher, with the ability to run programs inside a terminal and other handy features.|http://sourceforge.net/projects/gmrun/|{{Pkg|gmrun}}}}<br />
* {{App|[[Wikipedia:GNOME Do|GNOME Do]]|Application launcher inspired by [[Wikipedia:Quicksilver_(software)|Quicksilver]] with many plugins, originally developed for the GNOME desktop.|http://do.cooperteam.net/|{{Pkg|gnome-do}}}}<br />
* {{App|j4-dmenu-desktop|Very fast dmenu application launcher.|https://github.com/enkore/j4-dmenu-desktop|{{AUR|j4-dmenu-desktop}}}}<br />
* {{App|Kupfer|Convenient command and access tool for the GNOME desktop that can launch applications, open documents and access different types of objects and act on them.|https://wiki.gnome.org/Apps/Kupfer|{{AUR|kupfer}}}}<br />
* {{App|[[Wikipedia:Launchy|Launchy]]|Very popular cross-platform application launcher with a plugin-based system used to provide extra functionality.|http://www.launchy.net/|{{Pkg|launchy}}}}<br />
* {{App|rofi|A popup window switcher roughly based on superswitcher, requiring only xlib and pango.|http://davedavenport.github.io/rofi/|{{Pkg|rofi}}}}<br />
* {{app|slingshot|An application launcher has a clear look, part of [[pantheon]] desktop environment.|https://launchpad.net/slingshot|{{aur|slingshot-launcher}}}}<br />
* {{App|Synapse|Synapse is a semantic launcher written in Vala that you can use to start applications as well as find and access relevant documents and files by making use of the Zeitgeist engine.|https://launchpad.net/synapse-project|{{Pkg|synapse}}}}<br />
* {{App|Whippet|A launcher and xdg-open replacement for control freaks. Opens files and URLs with applications associated by name and/or mimetype. Applications and associations may be customized using an SQLite database. Uses dmenu to manage its menus.|http://appstogo.mcfadzean.org.uk/linux.html#whippet|{{aur|whippet}}}}<br />
* {{App|xboomx|Light ''dmenu'' wrapper that reorders commands based on popularity, written in Python.|https://bitbucket.org/dehun/xboomx|{{AUR|xboomx}}{{Broken package link|{{aur-mirror|xboomx}}}}}}<br />
* {{App|xfce4-appfinder|An eazy-to-use application launcher from Xfce.|http://docs.xfce.org/xfce/xfce4-appfinder/start|{{pkg|xfce4-appfinder}}}}<br />
* {{App|Yeganesh|Light ''dmenu'' wrapper that reorders commands based on popularity, written in Haskell.|http://dmwit.com/yeganesh|{{AUR|yeganesh}}{{Broken package link|{{aur-mirror|yeganesh}}}}}}<br />
<br />
===== Logout dialogue =====<br />
A few simple shutdown managers are available:<br />
* {{App|exitx|A logout dialog for Openbox that uses [[Sudo]].|http://www.linuxsir.com/bbs/lastpostinthread350740.html|{{AUR|exitx}}{{Broken package link|{{aur-mirror|exitx}}}}}}<br />
* {{App|exitx-polkit|A GTK logout dialog for Openbox with PolicyKit support.|https://github.com/z0id/exitx-polkit|{{AUR|exitx-polkit-git}}{{Broken package link|{{aur-mirror|exitx-polkit-git}}}}}}<br />
* {{App|exitx-systemd|A GTK logout dialog for Openbox with systemd support.|https://github.com/z0id/exitx-systemd|{{AUR|exitx-systemd-git}}{{Broken package link|{{aur-mirror|exitx-systemd-git}}}}}}<br />
* {{App|oblogout|A graphical logout script for [[Openbox]] that may be used with other WMs.|https://launchpad.net/oblogout|{{pkg|oblogout}}}}<br />
* {{App|obshutdown|A great GTK/Cairo based shutdown manager for Openbox and other window managers.|https://github.com/panjandrum/obshutdown|{{AUR|obshutdown}}{{Broken package link|{{aur-mirror|obshutdown}}}}}}<br />
<br />
==== Accessibility ==== <br />
<br />
===== Speech recognition =====<br />
<br />
See the main article [[Speech recognition]] for applications.<br />
<br />
=== Finance ===<br />
<br />
See also [[Wikipedia:Comparison of accounting software]].<br />
<br />
* {{App|esniper|Simple, lightweight tool for [[Wikipedia:Auction_sniping|sniping]] eBay auctions.|http://esniper.sourceforge.net/|{{AUR|esniper}}}}<br />
* {{App|[[Wikipedia:GnuCash|GnuCash]]|Financial application that implements a double-entry book-keeping system with features for small business accounting.|http://www.gnucash.org/|{{Pkg|gnucash}}}}<br />
* {{App|[[Wikipedia:Grisbi|Grisbi]]|Personal finance system which manages third party, expenditure and receipt categories, as well as budgetary lines, financial years, and other information that makes it suitable for associations.|http://www.grisbi.org/|{{AUR|grisbi}}}}<br />
* {{App|[[Wikipedia:HomeBank|HomeBank]]|Easy to use finance manager that can analyse your personal finance in detail using powerful filtering tools and graphs.|http://homebank.free.fr/|{{Pkg|homebank}}}}<br />
* {{App|[[Wikipedia:KMyMoney|KMyMoney]]|Personal finance manager that operates in a similar way to [[Wikipedia:Microsoft Money|Microsoft Money]]. It supports different account types, categorisation of expenses and incomes, reconciliation of bank accounts and import/export to the “QIF” file format.|http://kmymoney2.sourceforge.net/index-home.html|{{Pkg|kmymoney}}}}<br />
* {{App|Ledger|Ledger is a powerful, double-entry accounting system that is accessed from the UNIX command-line.|http://ledger-cli.org/|{{AUR|ledger}}}}<br />
* {{App|Moneychanger|An intuitive QT/C++ system tray client for ''Open-Transactions''|https://github.com/Open-Transactions/Moneychanger|{{AUR|moneychanger-git}}}}<br />
* {{App|Manager Accounting|Manager is free accounting software for small business.|http://www.manager.io/|{{AUR|manager-accounting}}}}<br />
* {{App|Money Manager EX|An easy-to-use personal finance suite|http://www.moneymanagerex.org/|{{Pkg|moneymanagerex}}}}<br />
* {{App|Skrooge|Personal finances manager for the KDE desktop.|http://skrooge.org/|{{Pkg|skrooge}}}}<br />
* {{App|openerp|Open source erp system purely in python.|http://openerp.com/|{{AUR|openerp}}}}<br />
* {{App|Open-Transactions|A financial cryptography library used for issuing currencies, stock, paying dividends, creating asset accounts, sending/receiving digital cash, trading on markets and escrow.|https://github.com/Open-Transactions/Open-Transactions|{{AUR|open-transactions-git}}}}<br />
<br />
=== Flashcards ===<br />
<br />
* {{App|[[Anki]]|Anki is a program which makes remembering things easy.|http://ankisrs.net/|{{Pkg|anki}}}}<br />
* {{App|iGNUit|Memorization aid based on the Leitner flashcard system.|http://homepages.ihug.co.nz/~trmusson/programs.html#ignuit|{{AUR|ignuit}}}}<br />
* {{App|[[Mnemosyne]]|Free flash-card tool which optimizes your learning process.|http://mnemosyne-proj.org/|{{AUR|mnemosyne}}}}<br />
<br />
=== Time management ===<br />
<br />
==== Console ====<br />
<br />
* {{App|Calcurse|Text-based ncurses calendar and scheduling system.|http://calcurse.org/|{{Pkg|calcurse}}}}<br />
* {{App|Doneyet|Ncurses-based hierarchical To-do list manager written in C++.|https://github.com/gtaubman/doneyet|{{AUR|doneyet}}{{Broken package link|{{aur-mirror|doneyet}}}}}}<br />
* {{App|Pal|Very lightweight calendar with both interactive and non-interactive interfaces.|http://palcal.sourceforge.net/|{{AUR|pal}}}}<br />
* {{App|[[Remind]]|Highly sophisticated text-based calendaring and notification system.|http://roaringpenguin.com/products/remind|{{Pkg|remind}}}}<br />
* {{App|[[Wikipedia:Taskwarrior|Taskwarrior]]|Command-line To-do list application with support for lua customization and more.|http://taskwarrior.org/|{{Pkg|task}}}}<br />
* {{App|Todo.txt|Small command-line To-do manager.|http://ginatrapani.github.com/todo.txt-cli/|{{AUR|todotxt}}}}<br />
* {{App|TuDu|Ncurses-based hierarchical To-do list manager with vim-like keybindings.|http://code.meskio.net/tudu/|{{AUR|tudu}}}}<br />
* {{App|When|Simple personal calendar program.|http://lightandmatter.com/when/when.html|{{Pkg|when}}}}<br />
* {{App|Wyrd|Text-based front-end to Remind, a calendar and alarm program used on UNIX and Linux computers.|http://pessimization.com/software/wyrd/|{{Pkg|wyrd}}}}<br />
* {{App|DevTodo|Is a small command line application for maintaining lists of tasks.|http://swapoff.org/devtodo1.html|{{AUR|devtodo}}}}<br />
<br />
==== Graphical ====<br />
<br />
* {{App|Calendar|Calendar application for GNOME.|https://wiki.gnome.org/Apps/Calendar|{{Pkg|gnome-calendar}}}}<br />
* {{App|Day Planner|Program designed to help you easily plan and manage your time. It can manage appointments, birthdays and more.|http://www.day-planner.org/|{{AUR|dayplanner}}}}<br />
* {{App|etm (Event and Task Manager)|Simple application with a "Getting Things Done!" approach to handling events, tasks, activities, reminders and projects.|http://duke.edu/~dgraham/ETM/|{{AUR|etm}}}}<br />
* {{App|Glista|Simple GTK+ To-do list manager with notes support.|http://arr.gr/glista/|{{AUR|glista}}{{Broken package link|{{aur-mirror|glista}}}}}}<br />
* {{App|GTG (Getting Things GNOME!)|Personal tasks and To-do list items organizer for the GNOME desktop.|http://gtgnome.net/|{{AUR|gtg}}{{Broken package link|{{aur-mirror|gtg}}}}}}<br />
* {{App|Hamster|Time tracking application that helps you to keep track on how much time you have spent during the day on activities you choose to track.|http://projecthamster.wordpress.com/|{{Pkg|hamster-time-tracker}}}}<br />
* {{App|[[Wikipedia:Kontact#Organizer|KOrganizer]]|Calendar and scheduling program, part of {{Grp|kdepim}}.|http://www.kde.org/applications/office/korganizer/|{{Pkg|kdepim-korganizer}}}}<br />
* {{App|[[Wikipedia:Lightning (software)|Lightning]]|Extension to Mozilla Thunderbird that provides calendar and task support.|http://www.mozilla.org/projects/calendar/lightning/|{{AUR|lightning}}{{Broken package link|{{aur-mirror|lightning}}}}}}<br />
* {{App|Orage|GTK+ calendar and task manager often seen integrated with Xfce.|http://www.xfce.org/projects|{{Pkg|orage}}}}<br />
* {{App|Osmo|GTK+ personal organizer, which includes calendar, tasks manager and address book modules.|http://clayo.org/osmo/|{{Pkg|osmo}}}}<br />
* {{App|Outspline|Extensible outliner with advanced time management features, supporting events with complex recurrence schemes.|https://kynikos.github.io/outspline/|{{AUR|outspline}}}}<br />
* {{App|QTodoTxt|A cross-platform UI client for {{ic|todo.txt}} files (see [http://todotxt.com/ project's page])|https://github.com/mNantern/QTodoTxt|{{AUR|qtodotxt}} {{AUR|qtodotxt-git}}{{Broken package link|{{aur-mirror|qtodotxt-git}}}}}}<br />
* {{App|Rachota|Portable time tracker for personal projects.|http://rachota.sourceforge.net/|{{AUR|rachota}}{{Broken package link|{{aur-mirror|rachota}}}}}}<br />
* {{App|Task Coach|Simple open source To-do manager to manage personal tasks and To-do lists.|http://taskcoach.org|{{AUR|taskcoach}}}}<br />
* {{App|[[Wikipedia:Tasque (software)|Tasque]]|Easy quick task management app written in C Sharp.|https://wiki.gnome.org/Apps/Tasque|{{Pkg|tasque}}}}<br />
* {{App|Tider|Lightweight time tracking application (GTK+)|http://pusto.org/en/tider/|{{AUR|tider-git}}}}<br />
* {{App|TkRemind|Sophisticated calendar and alarm program.|http://www.roaringpenguin.com/products/remind|{{Pkg|remind}}}}<br />
* {{App|wxRemind|Python text and graphical frontend to Remind.|http://duke.edu/~dgraham/wxRemind/|{{AUR|wxremind}}{{Broken package link|{{aur-mirror|wxremind}}}}}}<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.<br />
<br />
{{Note|1=For possibly more up to date selection of emulators, try checking the [https://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 />
{{Warning|Owning a high-level emulator is not illegal, but distribution of any type of copyrighted ROMs and unauthorized emulation (without written permission of the copyright holder allowing the user to do so) are '''illegal'''. Consequently, Arch Linux does not distribute this copyrighted content, including game ROMs and ripped console BIOSs. You are fully responsible for whatever usage of the emulators obtained from the [[official repositories]] or the [[Arch User Repository]] you make, as well as any legal repercussion that result. Arch Linux bears no responsibility at all.}}<br />
<br />
==== Consoles ====<br />
<br />
See also [[Wikipedia:List of video game console emulators]].<br />
<br />
* {{App|Citra|Nintendo 3DS emulator.|http://citra-emu.org/|{{AUR|citra-git}}}}<br />
* {{App|DeSmuME|Nintendo DS emulator.|http://desmume.org/|{{Pkg|desmume}}}}<br />
* {{App|[[Dolphin emulator|Dolphin]]|Very capable GameCube and Wii emulator.|http://dolphin-emu.org/|{{Pkg|dolphin-emu}}}}<br />
* {{App|epsxe|Emulator for the PlayStation video game console for x86-based PC hardware.|http://www.epsxe.com/|{{AUR|epsxe}}}}<br />
* {{App|fakenes|NES (Nintendo Famicom) emulator.|http://fakenes.sourceforge.net/|{{AUR|fakenes}}{{Broken package link|{{aur-mirror|fakenes}}}}}}<br />
* {{App|FCEUX|NTSC and PAL 8 bit Nintendo/Famicom emulator that is an evolution of the original FCE Ultra emulator. It is accurate, compatible and actively maintained.|http://fceux.com/|{{Pkg|fceux}}}}<br />
<br />
* {{App|Gens2|Emulator for Sega Genesis, Sega CD and 32X that is written in assembly language and no longer actively developed.<br />
:* activate OpenGL, set video resolution per custom to 1024x600 for streched full-screen or 800x600 for non-streched;<br />
:* use "Normal" renderer, I couldn't find a visible advantage with the other ones.<br />
|http://www.gens.me/|{{Pkg|gens}}}}<br />
<br />
* {{App|Gens-GS|Gens2, rewritten in C++, combining features from various Gens forks.|http://segaretro.org/Gens/GS|{{Pkg|gens-gs}}}}<br />
* {{App|gngeo|Command-line NeoGeo emulator.|http://gngeo.googlecode.com|{{AUR|gngeo}}}}<br />
* {{App|higan|Multisystem emulator focusing on accuracy, supporting SNES, NES, GB, GBC, GBA.|http://code.google.com/p/higan/|{{Pkg|higan-gtk}} {{Pkg|higan-qt}}}}<br />
* {{App|mednafen|Command line driven multi system emulator.|http://mednafen.sourceforge.net/|{{Pkg|mednafen}}}}<br />
* {{App|Mupen64Plus|Highly compatible Nintendo 64 emulator with plugin system.<br />
|http://code.google.com/p/mupen64plus/|{{Pkg|mupen64plus}} or a graphical front-end, such as {{AUR|m64py}} or {{AUR|cutemupen}}.}}<br />
* {{App|pSX|A not plugin-based PlayStation emulator with fairly high compatibility.|http://psxemulator.gazaxian.com/|{{AUR|psx}}}}<br />
* {{App|PCSXR|PlayStation emulator; Debian fork of the abandoned original PCSX|http://pcsxr.codeplex.com/|{{Pkg|pcsxr}}}}<br />
* {{App|PCSX2|PlayStation 2 emulator. It is still being maintained and developed. It requires BIOS files.|http://www.pcsx2.net/|{{Pkg|pcsx2}}}}<br />
* {{App|snes-9x|Portable, freeware Super Nintendo Entertainment System (SNES) emulator.|http://www.snes9x.com/|{{Pkg|snes9x}}}}<br />
* {{App|[[Visual Boy Advance]]|Game Boy emulator with Game Boy Advance, Game Boy Color, and Super Game Boy support.<br />
|http://vba.ngemu.com/|{{Pkg|vbam-gtk}}}}<br />
* {{App|ZSNES|Highly compatible Super Nintendo emulator.<br />
|http://www.zsnes.com/|{{Pkg|zsnes}}}}<br />
<br />
==== Other ====<br />
* {{App|DOSBox|Open-source DOS emulator which primarily focuses on running DOS Games.|http://www.dosbox.com/|{{Pkg|dosbox}}}}<br />
* {{App|DOSEmu|Open-source DOS emulator.|http://www.dosemu.org/|{{Pkg|dosemu}}}}<br />
* {{App|MAME|Multiple Arcade Machine Emulator.|http://mamedev.org/|{{Pkg|sdlmame}}}}<br />
* {{App|ResidualVM|Cross-platform 3D game interpreter which allows you to play LucasArts' Lua-based 3D adventures.|http://residualvm.org/|{{AUR|residualvm}}}}<br />
* {{App|[[RetroArch]]|Frontend to libretro (emulation library, using modified versions of existing emulators as plugins).|http://github.com/Themaister/RetroArch|{{AUR|retroarch-git}}}}<br />
* {{App|ScummVM|Virtual machine for old school adventures.|http://www.scummvm.org/|{{Pkg|scummvm}}}}<br />
* {{App|X Neko Project II|PC-9801 emulator.|http://www.asahi-net.or.jp/~aw9k-nnk/np2/|{{AUR|xnp2}}}}<br />
<br />
=== Amateur radio ===<br />
<br />
See the main article: [[Amateur radio#Software list]].<br />
<br />
See also [[Wikipedia:List of software-defined radios]].</div>Ygyfygy