https://wiki.archlinux.org/api.php?action=feedcontributions&user=Runical&feedformat=atomArchWiki - User contributions [en]2024-03-28T09:23:01ZUser contributionsMediaWiki 1.41.0https://wiki.archlinux.org/index.php?title=Talk:Gogs&diff=459925Talk:Gogs2016-12-23T13:27:12Z<p>Runical: Never came around to actually editing the wiki page. No longer relevant.</p>
<hr />
<div></div>Runicalhttps://wiki.archlinux.org/index.php?title=Talk:Gogs&diff=441956Talk:Gogs2016-07-17T21:51:58Z<p>Runical: Small question regarding editing</p>
<hr />
<div>I would like to add a section of getting Gogs to work with MariaDB (my current setup). Is there anyone who has some notes on what should be mentioned? [[User:Runical|Runical]] ([[User talk:Runical|talk]]) 21:51, 17 July 2016 (UTC)</div>Runicalhttps://wiki.archlinux.org/index.php?title=User:Runical&diff=371361User:Runical2015-04-27T09:02:16Z<p>Runical: Spelling</p>
<hr />
<div>Just a random student. Mainly editing small errors in the wiki and changing the phrasing if it can be misread. I'm also active on the forums and (sometimes) on Transifex to translate pacman into Dutch.<br />
<br />
Contact me via my talk page or send me an email via the forum [https://bbs.archlinux.org/profile.php?id=57803] if you want to discuss something.</div>Runicalhttps://wiki.archlinux.org/index.php?title=User:Runical&diff=371360User:Runical2015-04-27T09:01:51Z<p>Runical: Added a little information on myself and ways to contact me</p>
<hr />
<div>Just a random student. Mainly editing small errors in the wiki and changing the phrasing if it can be misread. I' also active on the forums and (sometimes) on Transifex to translate pacman into Dutch.<br />
<br />
Contact me via my talk page or send me an email via the forum [https://bbs.archlinux.org/profile.php?id=57803] if you want to discuss something.</div>Runicalhttps://wiki.archlinux.org/index.php?title=Talk:Syncthing&diff=371357Talk:Syncthing2015-04-27T08:53:31Z<p>Runical: /* Port for web interface */ Added a comment to wrap up the discussion.</p>
<hr />
<div>== syncthing-gtk ==<br />
<br />
I think we need to add {{Pkg|syncthing-gtk}} as a suggested package. [[User:Ryuzy|Ryuzy]] ([[User talk:Ryuzy|talk]]) 13:51, 5 January 2015 (UTC)<br />
<br />
:Feel free to modify the [[Syncthing#Installation|installation section]] as needed. If you feel that it should be suggested as an optional dependency of {{Pkg|syncthing}}, please submit a [[Reporting_bug_guidelines|bug report]] for the package. -- [[User:Lahwaacz|Lahwaacz]] ([[User talk:Lahwaacz|talk]]) 15:33, 3 February 2015 (UTC)<br />
<br />
== <s>Port for web interface</s> ==<br />
<br />
Since there seems to be an [https://wiki.archlinux.org/index.php?title=Syncthing&diff=prev&oldid=370754 edit] [https://wiki.archlinux.org/index.php?title=Syncthing&diff=next&oldid=370754 war] going on, can somebody support his claim with satisfactory reference? The port number is clearly configurable in the UI, but which is the default? -- [[User:Lahwaacz|Lahwaacz]] ([[User talk:Lahwaacz|talk]]) 20:38, 26 April 2015 (UTC)<br />
<br />
:'''At the moment''' I am writing a few sentences about it, so please give me a second... [[User:Rumpelsepp|Rumpelsepp]] ([[User talk:Rumpelsepp|talk]]) 20:40, 26 April 2015 (UTC)<br />
: Done, reference for the port change is [https://github.com/syncthing/syncthing/commit/960c0cbddf8802ae440f2f9ae33bced4e2d72e44 here.] [[User:Rumpelsepp|Rumpelsepp]] ([[User talk:Rumpelsepp|talk]]) 20:46, 26 April 2015 (UTC)<br />
<br />
::Thanks for the link. However, let me remind you that you should have used the [[edit summary]] to justify reverting [[User:Runical|Runical]]'s revision (the automatic "Undo revision ... by ..." does not count). Closing. -- [[User:Lahwaacz|Lahwaacz]] ([[User talk:Lahwaacz|talk]]) 20:52, 26 April 2015 (UTC)<br />
<br />
:::I think you just were too fast, as I still was writing the new revision after reverting. BTW the first time I use this media wiki discussion stuff, so anyway, maybe my fault. :-) [[User:Rumpelsepp|Rumpelsepp]] ([[User talk:Rumpelsepp|talk]]) 20:59, 26 April 2015 (UTC)<br />
<br />
::::Just an aside from the one who changed the port to 8080, I was unaware of the previous edit and thought it was a simple error (My computers still go to 8080 as 0.11 is not yet in the official repos). Sorry for the confusion and the next time I'll look into the previous edits to prevent this from happening again. [[User:Runical|Runical]] ([[User talk:Runical|talk]]) 08:53, 27 April 2015 (UTC)</div>Runicalhttps://wiki.archlinux.org/index.php?title=Syncthing&diff=370754Syncthing2015-04-23T09:20:34Z<p>Runical: /* Installation */ Corrected the port number that syncthing uses for the web interface from 8384 tot 8080.</p>
<hr />
<div>[[Category:Internet applications]]<br />
{{Related articles start}}<br />
{{Related|Backup programs}}<br />
{{Related|Dropbox}}<br />
{{Related articles end}}<br />
<br />
[https://syncthing.net Syncthing] is an open-source file synchronization client/server application, written in Go, implementing its own, equally free Block Exchange Protocol. All transit communications between syncthing nodes are encrypted, and all nodes are uniquely identified with cryptographic certificates.<br />
<br />
== Installation ==<br />
<br />
You can [[pacman|install]] {{Pkg|syncthing}} from the [[official repositories]].<br />
After installing, you can either run the syncthing binary manually from a terminal, or you can [[Systemctl#Using_units|utilize]] the {{ic|syncthing@user.service}}. Doing this will provide a web interface on [http://localhost:8080 localhost port 8080]. If you started syncthing manually, it should open the admin page in your browser.<br />
<br />
== Setup ==<br />
<br />
After installation Syncthing already has a proper start-up configuration. You may now add new servers and/or folders by visiting the web interface. For detailed instructions on how to set up a simple network, read [https://github.com/syncthing/syncthing/wiki/Getting-Started Syncthing's getting started]. <br />
<br />
After a successful first start, it will create the default repository at {{ic|~/Sync}}. You can see this in the web admin interface. On the right is the list of nodes you have added. On the left is the list of repositories, which are folders you can choose to share with other nodes.<br />
<br />
To add another node, click "Add Node" underneath the list of nodes. You will be prompted for their Node ID (which can be found on the other machine by clicking {{ic|Edit > Show ID}}) as well as a short name and the address.<br />
If you specify "dynamic" for the address, the syncthing announce server will be used to automatically exchange addresses between nodes. If you want to know more about Node IDs, including the cryptographic implications, you can read the appropriate [https://discourse.syncthing.net/t/how-node-ids-work/365 syncthing discourse page].<br />
<br />
After saving the configuration, you will be prompted to restart the syncthing server, and once restarted, the changes will be applied.<br />
<br />
Next, you can either change the configuration of the default node (click its name and then {{ic|Edit}}), or create a new one to share data with. Simply tick the node you wish to share the data with, and they will have permission to access it.<br />
<br />
== Use Inotify ==<br />
<br />
Inotify (inode notify) is a Linux kernel subsystem that acts to extend filesystems to notice changes to the filesystem, and report those changes to applications. Syncthing does not support Inotify yet but there is an official extension module which talks to the Syncthing REST API. The usage of Inotify avoids expensive rescans every minute. The rescan interval of each folder can be safely increased to 3600 (an hour) or even 86400 (a day). {{AUR|syncthing-inotify}} can be installed from AUR. There are systemd service files available so you just have to enable and start it:<br />
<br />
# systemctl enable syncthing-inotify@user.service<br />
# systemctl start syncthing-inotify@user.service<br />
<br />
Or as a user unit:<br />
<br />
$ systemctl --user enable syncthing-inotify.service<br />
$ systemctl --user start syncthing-inotify.service<br />
<br />
The syncthing-inotify service requires syncthing so you don't have to start/enable syncthing seperately.<br />
<br />
== Troubleshooting ==<br />
<br />
See [https://discourse.syncthing.net/t/debugging-syncthing/222 Debugging syncthing].</div>Runicalhttps://wiki.archlinux.org/index.php?title=Arch_build_system&diff=369901Arch build system2015-04-17T10:49:48Z<p>Runical: /* Other tools */</p>
<hr />
<div>[[Category:About Arch]]<br />
[[Category:Package development]]<br />
[[Category:Package management]]<br />
[[cs:Arch Build System]]<br />
[[da:Arch Build System]]<br />
[[de:Arch Build System]]<br />
[[el:Arch Build System]]<br />
[[es:Arch Build System]]<br />
[[fr:ABS]]<br />
[[it:Arch Build System]]<br />
[[ja:Arch Build System]]<br />
[[ko:Arch Build System]]<br />
[[pl:Arch Build System]]<br />
[[ro:ABS]]<br />
[[ru:Arch Build System]]<br />
[[tr:Arch_derleme_sistemi]]<br />
[[zh-CN:Arch Build System]]<br />
[[zh-TW:Arch Build System]]<br />
{{Related articles start}}<br />
{{Related|Arch packaging standards}}<br />
{{Related|Arch User Repository}}<br />
{{Related|Creating packages}}<br />
{{Related|Kernel Compilation with ABS}}<br />
{{Related|makepkg}}<br />
{{Related|Official repositories}}<br />
{{Related|pacman}}<br />
{{Related|PKGBUILD}}<br />
{{Related|Patching in ABS}}<br />
{{Related articles end}}<br />
<br />
This article provides an overview of the Arch Build System along with a walkthrough for beginners. It is not a complete reference guide. If you need more information, please reference the man pages.<br />
<br />
{{Note|ABS syncs once a day so it may lag behind what is already available in the repositories.}}<br />
<br />
== What is the Arch Build System? ==<br />
<br />
The Arch Build System, '''ABS''' for short, is a ''ports-like'' system for building and packaging software from source code. While [[pacman]] is the specialized Arch tool for binary package management (including packages built with the ABS), ABS is a collection of tools for compiling source into installable {{ic|.pkg.tar.xz}} packages.<br />
<br />
=== What is a ports-like system? ===<br />
<br />
''Ports'' is a system used by *BSD to automate the process of building software from source code. The system uses a ''port'' to download, unpack, patch, compile, and install the given software. A ''port'' is merely a small directory on the user's computer, named after the corresponding software to be installed, that contains a few files with the instructions for building and installing the software from source. This makes installing software as simple as typing {{ic|make}} or {{ic|make install clean}} within the port's directory.<br />
<br />
=== ABS is a similar concept ===<br />
<br />
ABS is made up of a directory tree (the ABS tree) residing under {{ic|/var/abs}}. This tree contains many subdirectories, each within a category and each named by their respective package. This tree represents (but does not contain) all ''official Arch software'', retrievable through the SVN system. You may refer to each package-named subdirectory as an 'ABS', much the way one would refer to a 'port'. These ABS (or subdirectories) do not contain the software package nor the source but rather a [[PKGBUILD]] file (and sometimes other files). A PKGBUILD is a simple Bash build script -- a text file containing the compilation and packaging instructions as well as the URL of the appropriate '''source''' tarball to be downloaded. (The most important component of ABS are PKGBUILDs.) By issuing the ABS [[makepkg]] command, the software is first compiled and then ''packaged'' within the build directory before being installed. Now you may use [[pacman]], the Arch Linux package manager, to install, upgrade, and remove your new package.<br />
<br />
=== ABS overview ===<br />
<br />
'ABS' may be used as an umbrella term since it includes and relies on several other components; therefore, though not technically accurate, 'ABS' can refer to the following tools as a complete toolkit:<br />
<br />
; ABS tree: The ABS directory structure; an SVN hierarchy under {{ic|/var/abs/}} on your (local) machine. It contains many subdirectories, named for all available official Arch Linux software from repositories specified in {{ic|/etc/abs.conf}}, but not the packages themselves. The tree is created after installing the {{Pkg|abs}} package with [[pacman]] and subsequently running the {{ic|abs}} script.<br />
<br />
{{note|The actual packages are available in [https://www.archlinux.org/svn/ svn] and [https://projects.archlinux.org/svntogit/packages.git/ git] repositories, and the {{ic|abs}} script downloads them using [[rsync]].}}<br />
<br />
; [[PKGBUILD]]s: A [[Bash]] script that contains the URL of the source code along with the compilation and packaging instructions.<br />
<br />
; [[makepkg]]: ABS shell command tool which reads the PKGBUILDs, automatically downloads and compiles the sources and creates a {{ic|.pkg.tar*}} according to the {{ic|PKGEXT}} array in {{ic|makepkg.conf}}. You may also use makepkg to make your own custom packages from the [[AUR]] or third-party sources. (See the [[Creating packages]] wiki article.)<br />
<br />
; [[pacman]]: pacman is completely separate, but is necessarily invoked either by makepkg or manually, to install and remove the built packages and for fetching dependencies.<br />
<br />
; [[Arch User Repository|AUR]]: The Arch User Repository is separate from ABS but AUR (unsupported) PKGBUILDs are built using makepkg to compile and package up software. In contrast to the ABS tree on your local machine, the AUR exists as a website interface. It contains many thousands of user-contributed PKGBUILDs for software which is unavailable as an official Arch package. If you need to build a package outside the official Arch tree, chances are it is in the AUR.<br />
<br />
== Why would I want to use ABS? ==<br />
<br />
The Arch Build System is used to:<br />
* Compile or recompile a package, for any reason<br />
* Make and install new packages from source of software for which no packages are yet available (see [[Creating packages]]) <br />
* Customize existing packages to fit your needs (enabling or disabling options, patching)<br />
* Rebuild your entire system using your compiler flags, "à la FreeBSD" (e.g. with [[pacbuilder]])<br />
* Cleanly build and install your own custom kernel (see [[Kernel Compilation]])<br />
* Get kernel modules working with your custom kernel<br />
* Easily compile and install a newer, older, beta, or development version of an Arch package by editing the version number in the PKGBUILD<br />
<br />
ABS is not necessary to use Arch Linux, but it is useful for automating certain tasks of source compilation.<br />
<br />
== How to use ABS ==<br />
<br />
Building packages using abs consists of these steps:<br />
#Install the {{Pkg|abs}} package with [[pacman]].<br />
#Run {{ic|abs}} as root to create the ABS tree by synchronizing it with the Arch Linux server.<br />
#Copy the build files (usually residing under {{ic|/var/abs/<repo>/<pkgname>}}) to a build directory.<br />
#Navigate to that directory, edit the PKGBUILD (if desired/necessary) and do '''makepkg'''. <br />
#According to instructions in the PKGBUILD, makepkg will download the appropriate source tarball, unpack it, patch if desired, compile according to {{ic|CFLAGS}} specified in {{ic|makepkg.conf}}, and finally compress the built files into a package with the extension {{ic|.pkg.tar.gz}} or {{ic|.pkg.tar.xz}}. <br />
#Installing is as easy as doing {{ic|pacman -U <.pkg.tar.xz file>}}. Package removal is also handled by pacman.<br />
<br />
=== Install tools ===<br />
<br />
To use the ABS, you first need to [[pacman|install]] {{Pkg|abs}} from the [[official repositories]].<br />
<br />
This will grab the abs-sync scripts, various build scripts, and [[rsync]] (as a dependency, if you do not already have it).<br />
<br />
Before you can actually build anything, however, you will also need basic compiling tools. These are handily collected in the [[Pacman#Installing_package_groups|package group]] {{grp|base-devel}}. This group can be installed with pacman.<br />
<br />
=== /etc/abs.conf ===<br />
<br />
As root, edit {{ic|/etc/abs.conf}} to include your desired repositories.<br />
<br />
Remove the {{ic|!}} in front of the appropriate repositories. For example:<br />
REPOS=(core extra community !testing)<br />
<br />
=== ABS tree ===<br />
<br />
The ABS tree is an SVN directory hierarchy located under {{ic|/var/abs}} and looks like this:<br />
<br />
{{bc|<nowiki><br />
| -- core/<br />
| || -- acl/<br />
| || || -- PKGBUILD<br />
| || -- attr/<br />
| || || -- PKGBUILD<br />
| || -- abs/<br />
| || || -- PKGBUILD<br />
| || -- autoconf/<br />
| || || -- PKGBUILD<br />
| || -- ...<br />
| -- extra/<br />
| || -- acpid/<br />
| || || -- PKGBUILD<br />
| || -- apache/<br />
| || || -- PKGBUILD<br />
| || -- ...<br />
| -- community/<br />
| || -- ...<br />
</nowiki>}}<br />
<br />
The ABS tree has exactly the same structure as the package database:<br />
<br />
* First-level: Repository name<br />
* Second-level: Package name directories<br />
* Third level: PKGBUILD (contains information needed to build a package) and other related files (patches, other files needed for building the package)<br />
<br />
The source code for the package is not present in the ABS directory. Instead, the '''PKGBUILD''' file contains a URL that will download the source code when the package is built. So the size of abs tree is quite small.<br />
<br />
==== Download ABS tree ====<br />
<br />
As root, run:<br />
<br />
# abs<br />
<br />
Your ABS tree is now created under {{ic|/var/abs}}. Note the appropriate branches of the ABS tree now exist and correspond to the ones you specified in {{ic|/etc/abs.conf}}. <br />
<br />
The abs command should be run periodically to keep in sync with the official repositories. Individual ABS package files can also be downloaded with:<br />
<br />
# abs <repository>/<package><br />
<br />
This way you do not have to check out the entire abs tree just to build one package.<br />
<br />
=== /etc/makepkg.conf ===<br />
<br />
[[makepkg]]'s {{ic|/etc/makepkg.conf}} specifies global environment variables and compiler flags which you may wish to edit if you are using an SMP system, or to specify other desired optimizations. The default settings are for i686 and x86_64 optimizations which will work fine for those architectures on single-CPU systems. (The defaults will work on SMP machines, but will only use one core/CPU when compiling -- see [[makepkg]] for details.)<br />
<br />
==== Set the PACKAGER variable in /etc/makepkg.conf ====<br />
<br />
Setting the {{ic|PACKAGER}} variable in {{ic|/etc/makepkg.conf}} is an optional but ''highly recommended'' step. It allows a "flag" to quickly identify which packages have been built and/or installed by YOU, not the official maintainer! This is easily accomplished using {{Pkg|expac}} available from the community repo:<br />
<br />
===== Showing all packages (including those from AUR) =====<br />
<br />
$ grep myname /etc/makepkg.conf<br />
PACKAGER="myname <myemail@myserver.com>"<br />
<br />
$ expac "%n %p" | grep "myname" | column -t<br />
archey3 myname<br />
binutils myname<br />
gcc myname<br />
gcc-libs myname<br />
glibc myname<br />
tar myname<br />
<br />
===== Showing only packages contained in repos =====<br />
<br />
This example only shows packages contained in the repos defined in {{ic|/etc/pacman.conf}}:<br />
<br />
$ . /etc/makepkg.conf; grep -xvFf <(pacman -Qqm) <(expac "%n\t%p" | grep "$PACKAGER$" | cut -f1)<br />
binutils<br />
gcc<br />
gcc-libs<br />
glibc<br />
tar<br />
<br />
=== Create a build directory ===<br />
<br />
It is recommended to create a build directory where the actual compiling will take place; you should never modify the ABS tree by building within it, as data will be lost (overwritten) on each ABS update. It is good practice to use your home directory, though some Arch users prefer to create a 'local' directory under {{ic|/var/abs/}}, owned by a normal user. <br />
<br />
Create your build directory. e.g.:<br />
<br />
$ mkdir -p $HOME/abs<br />
<br />
Copy the ABS from the tree ({{ic|/var/abs/<repository>/<pkgname>}}) to the build directory.<br />
<br />
=== Build package ===<br />
<br />
In our example, we will build the ''slim'' display manager package.<br />
<br />
Copy the slim ABS from the ABS tree to a build directory:<br />
<br />
$ cp -r /var/abs/extra/slim/ ~/abs<br />
<br />
Navigate to the build directory:<br />
<br />
$ cd ~/abs/slim<br />
<br />
Modify the PKGBUILD to your liking, then run ''makepkg'' (with the {{ic|-s}} flag to enable automatic build-time dependency handling):<br />
<br />
$ makepkg -s<br />
<br />
{{Note|Before complaining about missing (make) dependencies, remember that the group {{Grp|base-devel}} is assumed to be installed when building with ''makepkg''. See [[#Install tools]].}}<br />
<br />
Install as root:<br />
<br />
# pacman -U slim-1.3.0-2-i686.pkg.tar.xz<br />
<br />
That's it. You have just built slim from source and cleanly installed it to your system with pacman. Package removal is also handled by pacman with {{ic|pacman -R slim}}.<br />
<br />
The ABS method adds a level of convenience and automation, while still maintaining complete transparency and control of the build and installation functions by including them in the PKGBUILD.<br />
<br />
==== fakeroot ====<br />
<br />
Essentially, the same steps are being executed in the traditional method (generally including the {{ic|./configure, make, make install}} steps) but the software is installed into a ''fake root'' environment. (A ''fake root'' is simply a subdirectory within the build directory that functions and behaves as the system's root directory. In conjunction with the '''fakeroot''' program, ''makepkg'' creates a fake root directory, and installs the compiled binaries and associated files into it, with '''root''' as owner.) The ''fake root'', or subdirectory tree containing the compiled software, is then compressed into an archive with the extension {{ic|.pkg.tar.xz}}, or a ''package''. When invoked, pacman then extracts the package (installs it) into the system's real root directory ({{ic|/}}).<br />
<br />
=== Preserve modified packages ===<br />
<br />
Updating the system with pacman will replace a modified package from ABS with the package of the same name from the official repositories. See the following instructions for how to avoid this.<br />
<br />
Insert a group array into the PKGBUILD, and add the package to a group called {{ic|modified}}.<br />
<br />
{{hc|PKGBUILD|2=<br />
groups=('modified')<br />
}}<br />
<br />
Add this group to the section {{ic|IgnoreGroup}} in {{ic|/etc/pacman.conf}}.<br />
<br />
{{hc|/etc/pacman.conf|2=<br />
IgnoreGroup = modified<br />
}}<br />
<br />
If new versions are available in the official repositories during a system update, pacman prints a note that it is skipping this update because it is in the IgnoreGroup section. At this point the modified package should be rebuilt from ABS to avoid partial upgrades.<br />
<br />
== Other tools ==<br />
<br />
* [http://xyne.archlinux.ca/projects/pbget/ pbget] - retrieve PKGBUILDs for individual packages directly from the web interface. Includes AUR support.<br />
* [https://github.com/falconindy/asp asp] - a tool to manage the build source files used to create Arch Linux packages. Uses the git interface which offers more up to date sources.</div>Runicalhttps://wiki.archlinux.org/index.php?title=Brother_MFC-420CN&diff=357609Brother MFC-420CN2015-01-22T15:42:39Z<p>Runical: /* Prerequisites */ Fixed a small spelling mistake (repositorie -> repository)</p>
<hr />
<div>[[Category:Printers]]<br />
[[Category:Imaging]]<br />
= Introduction =<br />
This is a brief tutorial to make the Brother MFC-420CN printer/scanner work on Arch. While this tutorial is based on the MFC-420CN specifically, it can be used as a general guide for most Brother MFC model printers (substituting MFC-420CN for your model where needed).<br />
On [http://solutions.brother.com/linux/en_us/index.html Brother's Linux Driver page] you can find extra information along with drivers for different printer models.<br />
<br />
= Printer =<br />
== Prerequisites ==<br />
This tutorial assumes you have the following packages installed. Failure to do so may result in hard to trace issues with printing.<br />
* cups<br />
* ghostscript<br />
* gsfonts<br />
* foomatic-filters<br />
* arch x86_64 requires lib32-libcups<br />
<br />
Note: lib32-libcups needs the [multilib] repository activated in /etc/pacman.conf<br />
<br />
If you previously tried to install the printer in CUPS, remove it and any remaining driver files!!<br />
<br />
Brother's scripts make use of the C Shell (csh) instead of the more common Bash. We must install tcsh from the "extra" repo.<br />
# pacman -S tcsh<br />
<br />
Brother's scripts look for C Shell in /bin/csh but will fail with the error "Bad Interpreter" unless we correct this to /usr/bin/tcsh. As root lets create a symbolic link:<br />
# ln -s /usr/bin/tcsh /bin/csh<br />
<br />
Your user is a member of the printer group (lp). Be sure to logout for changes to take affect.<br />
# usermod -aG lp [username]<br />
<br />
Additional info about setting up [[CUPS]] if needed.<br />
<br />
== Download printer drivers ==<br />
Brother actively supplies Linux drivers for it's MFC series printers in RPM and DEB formats. Luckily there are tools to change these formats into something Arch can use.<br />
<br />
First create a temporary directory.<br />
<br />
Then you must download the official LPR drivers from the Brother website into this directory. Click [http://www.brother.com/cgi-bin/agreement/agreement.cgi?dlfile=http://solutions.brother.com/Library/sol/printer/linux/rpmfiles/lpr_others/MFC420CNlpr-1.0.2-1.i386.rpm&lang=English_lpr here] to download the MFC-420CN LPR driver (RPM archive).<br />
<br />
You should also download the CUPS wrapper script. Click [http://www.brother.com/cgi-bin/agreement/agreement.cgi?dlfile=http://solutions.brother.com/Library/sol/printer/linux/rpmfiles/cups_wrapper/cupswrapperMFC420CN-1.0.0-1.i386.rpm&lang=English_gpl here] to download the MFC-420CN CUPS wrapper script (RPM archive). This script creates the filters and PPD file for CUPS automatically saving us from extra work.<br />
<br />
== Extracting the RPM files ==<br />
Now you need a small script called rpmextract which allows you to extract files from the RPM you've just downloaded.<br />
<br />
In the terminal as root:<br />
# pacman -S rpmextract<br />
<br />
Extract both RPM files :<br />
$ rpmextract.sh MFC420CNlpr-1.0.2-1.i386.rpm<br />
$ rpmextract.sh cupswrapperMFC420CN-1.0.0-1.i386.rpm<br />
<br />
== Editing files to make it work with Arch ==<br />
Arch Linux uses its own file system organization, so we'll have to edit some files. Assuming you are still in the temporary directory you created. You can use your favorite text editor to edit usr/local/Brother/cupswrapper/cupswrapperMFC420CN-1.0.0 and change all instances of <i>/etc/init.d/</i> to <i>/etc/rc.d/</i> '''OR''' you can just do the following.<br />
<br />
As root in terminal:<br />
# sed -i 's|/etc/init.d|/etc/rc.d|' usr/local/Brother/cupswrapper/cupswrapperMFC420CN-1.0.0<br />
<br />
Once you've finished this step, copy all of the files to their corresponding directories in your file system :<br />
# cp -r usr/* /usr<br />
<br />
== Installing the printer (Local USB) ==<br />
<br />
The kernel module {{Ic|usblp}} must be blacklisted before installing the driver, otherwise the Device URI will be wrong and the printer won't work.<br />
<br />
To disable the module, edit {{ic|/etc/rc.conf}} as shown:<br />
<br />
{{hc|/etc/rc.conf|2=MODULES=(... '''!usblp''' ...)}}<br />
<br />
{{Warning|Blacklisting modules in rc.conf has been obsoleted and no longer works in initscripts 2011.06.1-1, so you'll have to use the following method.}}<br />
<br />
Create a {{ic|.conf}} file inside {{ic|/etc/modprobe.d/}} and blacklist the module as follows:<br />
<br />
{{hc|/etc/modprobe.d/blacklist.conf|<nowiki># Do not load the usblp module on boot<br />
blacklist usblp</nowiki>}}<br />
<br />
{{Note|The {{Ic|blacklist}} command will blacklist a module so that it will not be loaded automatically, but may be loaded if another non-blacklisted module depends on it, or if it is loaded manually.<br />
<br />
However, there is a workaround for this behaviour; the {{Ic|install}} command instructs modprobe to run a custom command instead of inserting the module in the kernel as normal, so you can force the module to always fail loading with:<br />
<br />
{{hc|/etc/modprobe.d/blacklist.conf|...<br />
install usblp /bin/false<br />
...}}<br />
<br />
This will effectively "blacklist" that module and any other that depends on it.}}<br />
<br />
Reboot the box to take effect, or manually remove the module without rebooting:<br />
<br />
# modprobe -r usblp<br />
<br />
Now lets plug in the printer and run the script to install the driver for us.<br />
<br />
As root in terminal:<br />
/usr/local/Brother/cupswrapper/cupswrapperMFC420CN-1.0.0<br />
<br />
It will stop the cups daemon if it's running, and restart it.<br />
<br />
{{Warning|Daemon may fail to start due to bug in csh. If "Unknown colorls variable `mh'." message is displayed, before starting daemon, execute:}}<br />
<br />
unset LS_COLORS<br />
<br />
Now go to the CUPS setup page: http://localhost:631/<br />
Click on '''Manage Printers''' you should see your MFC-420CN printer automatically installed and configured. Print a test page!<br />
<br />
If the test page fails with error "Printer not connected; will retry in 30 seconds..." then.<br />
# Click Delete Printer and remove the automatically created printer.<br />
# Click Administration --> Find New Printers<br />
# You should see your Brother printer listed here, add it!<br />
# Print a test page<br />
<br />
NOTE: Be sure to add '''cupsd''' to the DAEMON line in rc.conf so it loads everytime at startup.<br />
<br />
== Installing the printer (Network, Ethernet) ==<br />
Now lets run the script to install the driver for us.<br />
<br />
As root in terminal:<br />
/usr/local/Brother/cupswrapper/cupswrapperMFC420CN-1.0.0<br />
<br />
It will stop the cups daemon if it's running, and restart it.<br />
<br />
{{Warning|Daemon may fail to start due to bug in csh. If "Unknown colorls variable `mh'." message is displayed, before starting daemon, execute:}}<br />
<br />
unset LS_COLORS<br />
<br />
Now go to the CUPS setup page: http://localhost:631/<br />
# Click Manage Printers --> Delete Printer and remove the automatically created printer.<br />
# Click Administration --> Find New Printers<br />
# You should see your Brother printer listed here, add it!<br />
# Print a test page<br />
<br />
If Find New Printers doesn't list any printers you can try to set it up manually.<br />
# Click Add Printer<br />
# Location can be left blank, but can have something in it for reference sake, Description can be left blank, but can also have something in it for reference sake. Click continue<br />
# Choose the device "Appsocket/HP JetDirect" then click continue<br />
# Set the Device URI to <i>socket://192.168.0.10:9100</i><br />
# Select the make <i>Brother</i><br />
# Select the printer <i>Brother MFC-420CN CUPS</i><br />
# Click finish and print a test page.<br />
<br />
NOTE: Be sure to add '''cups''' to the DAEMON line in rc.conf so it loads everytime at startup.<br />
<br />
NOTE: for Brother DCP340-CW. If you would like to print wireless, try and modify the previous added printer using Cups:<br />
# Click Printers.<br />
# Click Modify Printer for the printer you installed previously<br />
# Click Continue<br />
# Choose LPD/LPR Host or Printer<br />
# Write in the filed Device URI: lpd://192.168.1.199/binary_p1. Of course, replace that ip with yours.<br />
# Choose Brother manufacturer and Brother MFC-210 Cups wrapper driver in the next screen<br />
# Click on Modify Printer<br />
<br />
and you will be able to print also using wifi of DCP340-CW.<br />
<br />
=== Troubleshooting ===<br />
* Error message "Unable to locate printer BRN30055C13A4A6" while printing a test page from CUPS web interface<br />
** Edit /etc/cups/printers.conf and replace BRN30055C13A4A6 with the actual IP address of the printer<br />
<br />
=Scanner=<br />
First, make sure you [https://wiki.archlinux.org/index.php/Scanner_setup_%26_configure set up SANE].<br />
<br />
This scanner works with Brother's [http://solutions.brother.com/linux/sol/printer/linux/sane_drivers.html brscan2] driver. ([http://www.brother.com/cgi-bin/agreement/agreement.cgi?dlfile=http://solutions.brother.com/Library/sol/printer/linux/rpmfiles/sane_others/brscan2-0.2.4-0.i386.rpm&lang=English_sane 32 bit] | [http://www.brother.com/cgi-bin/agreement/agreement.cgi?dlfile=http://solutions.brother.com/Library/sol/printer/linux/rpmfiles/sane_others/64bit/brscan2-0.2.4-0.x86_64.rpm&lang=English_sane 64 bit])<br />
<br />
You can refer here for up to date scanner drivers:<br />
http://solutions.brother.com/linux/en_us/download_scn.html<br />
<br />
You'll need to extract the files to a temp path:<br />
$ rpmextract.sh brscan2-0.2.4-0.i386.rpm<br />
or, for 64 bit:<br />
$ rpmextract.sh brscan2-0.2.4-0.x86_64.rpm<br />
<br />
Now copy the files to their corresponding directories in your file system:<br />
# cp -r /path/to/brscan/usr/* /usr<br />
<br />
Now you'll need to add "brother2" to the end of /etc/sane.d/dll.conf<br /><br />
Brother felt it necessary to include a script to do that, so you can also run:<br />
# /usr/local/Brother/sane/setupSaneScan2 -i<br />
<br />
For a networked brother scanner:<br />
# brsaneconfig2 -a name=[ANY_NAME] model=[EXACT_MODEL] ip=[IP_ADDR]<br />
<br />
Example:<br />
# brsaneconfig2 -a name=MFC420CN model=MFC-420CN ip=10.1.1.90<br />
<br />
To test the networked scanner, you can install xsane:<br />
# pacman -S xsane<br />
<br />
And run it to verify the installation (as a luser):<br />
$ xsane<br />
<br />
==Scan Key Install (Optional)==<br />
This allows the scanner to be recognized in other programs such as GIMP. This information is a condensed and consolidated version off of Brother's linux support site ([http://solutions.brother.com/linux/en_us/instruction_scn3.html#config1 Link])<br />
<br />
You'll need to extract the files to a temp path:<br />
$ rpmextract.sh brscan-skey-0.2.1-1.i386.rpm<br />
<br />
While in the directory that contains the extracted content, run:<br />
# cp -r ./usr/* /usr<br />
<br />
Run the setup script for brscan-key:<br />
# /usr/local/Brother/sane/brscan-skey-0.2.1-1.sh<br />
<br />
Execute the tool to verify that the previously installed scanner is recognized:<br />
# brscan-skey -l<br />
<br />
Expect the following output:<br />
# brscan-skey -l<br />
<br />
MFC420CN : brother2:net1;dev0 : 10.1.1.90 Active<br />
<br />
After you receive the above output via brscan-key, check the File-> Create list in GIMP (tested v. 2.6.4) and there should be two more entries:<br />
XSane: Device Dialog...<br />
XSane: brother2:net1;dev0<br />
<br />
If the new entries appear, congratulations! Your (networked) Brother scanner is now available via any XSane interface!<br />
<br />
==Troubleshooting==<br />
===I can scan as root, but not as a normal user===<br />
Make sure your user is in the scanner group:<br />
# gpasswd -a username scanner<br />
then log out and back in.<br />
<br />
If you still can't scan as a normal user, check that /usr/lib/sane (or /usr/lib64/sane for 64 bit) are readable and executable for your user/group.<br />
<br />
===64 bit caveat===<br />
<br />
'''(Note: recent Arch update merged lib64 into lib, so this may not be needed any more; you may still need to move the files back into /usr/lib, instead of /usr/lib64)'''<br />
<br />
The 64 bit RPM has two files in /usr/lib64/, along with two symlinks to each file. However, the Arch64 Sane package will probably look in /usr/lib/ rather than /usr/lib64/, so we'll need to create some more symlinks. And since the symlinks reference the absolute path, not the relative path, ie:<br />
linkedfile -> /usr/lib64/originalfile<br />
rather than<br />
linkedfile -> ./originalfile<br />
a simple cp -r /path/to/brscan/usr/lib64/* /usr/lib/ won't do.<br />
<br />
# ln -s /usr/lib64/libbrcolm2.so.1.0.1 /usr/lib/<br />
# ln -s /usr/lib64/libbrscandec2.so.1.0.0 /usr/lib/<br />
# ln -s /usr/lib64/sane/libsane-brother2.so.1.0.7 /usr/lib/sane/<br />
# cd /usr/lib<br />
# ln -s libbrcolm2.so.1.0.1 libbrcolm2.so.1<br />
# ln -s libbrcolm2.so.1 libbrcolm2.so<br />
# ln -s libbrscandec2.so.1.0.0 libbrscandec2.so.1<br />
# ln -s libbrscandec2.so.1 libbrscandec2.so<br />
# cd sane<br />
# ln -s libsane-brother2.so.1.0.7 libsane-brother2.so.1<br />
# ln -s libsane-brother2.so.1 libsane-brother2.so<br />
<br />
Here's all of that in a nice bash friendly string:<br />
ln -s /usr/lib64/libbrcolm2.so.1.0.1 /usr/lib/; ln -s /usr/lib64/libbrscandec2.so.1.0.0 /usr/lib/; ln -s /usr/lib64/sane/libsane-brother2.so.1.0.7 /usr/lib/sane/; cd /usr/lib; ln -s libbrcolm2.so.1.0.1 libbrcolm2.so.1; ln -s libbrcolm2.so.1 libbrcolm2.so; ln -s libbrscandec2.so.1.0.0 libbrscandec2.so.1; ln -s libbrscandec2.so.1 libbrscandec2.so; cd sane; ln -s libsane-brother2.so.1.0.7 libsane-brother2.so.1; ln -s libsane-brother2.so.1 libsane-brother2.so<br />
<br />
= PC FAX =<br />
Brother also has a Linux driver for the PC FAX features of this printer. For more information about the PC Fax drivers please see the [http://solutions.brother.com/linux/en_us/index.html Brother Linux Driver page].</div>Runicalhttps://wiki.archlinux.org/index.php?title=List_of_applications/Other&diff=356846List of applications/Other2015-01-17T19:02:43Z<p>Runical: /* Finance */ Added Money Manager EX to the list, as it is a rather nice, desktop independent finances manager.</p>
<hr />
<div><noinclude><br />
[[Category:Applications]]<br />
[[es:List of Applications/Other]]<br />
[[it:List of Applications/Other]]<br />
[[ja:List of Applications/Other]]<br />
[[ru:List of applications/Other]]<br />
[[zh-CN: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}}}}<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|[[screen|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.sourceforge.net/|{{Pkg|tmux}}}}<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}}}}<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}} {{AUR|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}}}}<br />
* {{App|whaw|Window manager independent window layout tool.|http://repetae.net/computer/whaw/|{{AUR|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}}}}<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}}}}<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}}}}<br />
* {{App|Pager|A highly configurable pager compatible with Openbox Multihead.|https://github.com/BurntSushi/pager-multihead|{{AUR|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}}}}<br />
* {{App|Docker|Docking application which acts as a system tray.|http://icculus.org/openbox/2/docker/|{{Pkg|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/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}}}}<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}}}}<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}}}}<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}}}}<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|Ease|Opens files and URLs with applications associated by name 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#ease|{{aur|ease}}}}<br />
* {{App|Fehlstart|Small GTK+-based application launcher.|https://gitorious.org/fehlstart|{{AUR|fehlstart-git}}}}<br />
* {{App|[[gmrun|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://live.gnome.org/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|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|xboomx|Light ''dmenu'' wrapper that reorders commands based on popularity, written in Python.|https://bitbucket.org/dehun/xboomx|{{AUR|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}}}}<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}}}}<br />
* {{App|exitx-polkit|A GTK logout dialog for Openbox with PolicyKit support.|https://github.com/z0id/exitx-polkit|{{AUR|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}}}}<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}}}}<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|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 />
=== 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://code.google.com/p/doneyet/|{{AUR|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 />
<br />
==== Graphical ====<br />
<br />
* {{App|Calendar|Calendar application for GNOME.|https://wiki.gnome.org/Apps/Calendar|{{AUR|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}}}}<br />
* {{App|GTG (Getting Things GNOME!)|Personal tasks and To-do list items organizer for the GNOME desktop.|http://gtgnome.net/|{{AUR|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}}}}<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}}}}<br />
* {{App|Rachota|Portable time tracker for personal projects.|http://rachota.sourceforge.net/|{{AUR|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|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}}}}<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|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}}}}<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>Runicalhttps://wiki.archlinux.org/index.php?title=Downgrading_packages&diff=342477Downgrading packages2014-10-30T19:13:20Z<p>Runical: /* Official packages */ Changed the description of manually downgrading packages so it is hard to misread as "Pacman will handle it all".</p>
<hr />
<div>[[Category:Package management]]<br />
[[cs:Downgrading Packages]]<br />
[[de:Ältere_Paketversion_installieren_(Downgrade)]]<br />
[[es:Downgrading Packages]]<br />
[[fa:دانگرید]]<br />
[[fr:Downgrade]]<br />
[[it:Downgrading Packages]]<br />
[[ja:Downgrading Packages]]<br />
[[ru:Downgrading Packages]]<br />
[[sk:Downgrading Packages]]<br />
[[tr:Paket_sürümünü_düşürmek]]<br />
[[uk:Downgrading Packages]]<br />
[[zh-CN:Downgrading Packages]]<br />
{{Related articles start}}<br />
{{Related|Arch Build System}}<br />
{{Related|pacman}}<br />
{{Related|Arch Rollback Machine}}<br />
{{Related articles end}}<br />
{{Poor writing|repetitive style, oddly organized}}<br />
This guide explains how to downgrade a package to a previous version. While downgrading is not normally recommended, Arch is a rolling release distribution, so you can expect to encounter bugs occasionally in a new release and you may prefer to downgrade a buggy package to a stabler version rather than wait for an update. If you do find a bug, please help by reporting it on the Arch [https://bugs.archlinux.org/ bug tracker] or to the upstream project itself.<br />
<br />
The Arch Rollback Machine concept is in development and awaiting useful incorporation into pacman to automate the downgrade process.<br />
<br />
== Warnings ==<br />
<br />
* Downgrading one package may require that its dependencies be downgraded as well. When the number of packages to downgrade is large, it may be simpler to re-install the system, especially for fundamental OS components.<br />
* The previous version you wish to downgrade to may have been removed from your system. Arch's repositories are automatically upgraded so it may be difficult to obtain older package versions. See more about this problem below.<br />
* Be careful with changes to configuration files and scripts. For now pacman will handle this for us, as long as we do not bypass its safeguards.<br />
<br />
== How to downgrade a package ==<br />
<br />
=== Official packages ===<br />
<br />
You may be able to downgrade the package trivially if an older version is stored at {{Ic|/var/cache/pacman/pkg}} on your system. (If you have not run {{Ic|pacman -Scc}} recently, it should be there.) If so, you can install that version using {{Ic|pacman -U /var/cache/pacman/pkg/pkgname-olderpkgver.pkg.tar.gz}}.<br />
<br />
This process will remove the current package and install the older version. Dependency changes will be handled, but [[pacman]] will not handle version conflicts. If a library or other package needs to be downgraded with the packages, please be aware that you will have to downgrade this package yourself as well.<br />
<br />
Alternatively, the [[AUR]] package {{AUR|downgrade}} is a simple Bash script that automates this process by checking your cache for older package versions. If necessary, it will also search the [[Arch Rollback Machine]]. You can then select a package to install. Check {{Ic|downgrade --help}} for usage.<br />
<br />
Another tool is {{AUR|downgrader}}, which also works with pacman's log, can downgrade packages from ARM and local cache, and handles lists of packages. This tool is especially useful if your system is unstable after an update but you aren't sure which package is the culprit.<br />
<br />
=== Downgrading the kernel ===<br />
<br />
If you are unable to boot after a kernel update, then you can downgrade the kernel via a live CD. Use a fairly recent Arch Linux installation medium. When it has booted, mount the partition with your system on (e.g. {{ic|/mnt}}) and if you have {{ic|/boot}} or {{ic|/var}} on separate partitions, mount them there, as well (e.g. {{ic|mount /dev/sdc3 /mnt/boot}}). Then [[chroot]] into the system:<br />
# arch-chroot /mnt /bin/bash<br />
<br />
Here you can go to {{ic|/var/cache/pacman/pkg}} and downgrade the packages. At least downgrade {{Pkg|linux}}, {{Pkg|linux-headers}} and any kernel modules. For example:<br />
<br />
# pacman -U linux-3.5.6-1-x86_64.pkg.tar.xz linux-headers-3.5.6-1-x86_64.pkg.tar.xz virtualbox-host-modules-4.2.0-5-x86_64.pkg.tar.xz<br />
<br />
Exit the chroot (with {{ic|exit}}), reboot and you should be done.<br />
<br />
==== Downgrading the kernel on a system using LVM on LUKS ====<br />
<br />
Boot the Arch Linux installation ISO, and run the following commands to unlock the LUKS container and chroot into the system.<br />
<br />
Load the necessary kernel modules:<br />
<br />
# modprobe dm_crypt<br />
# modprobe dm_mod<br />
<br />
Unlock the LUKS container:<br />
<br />
# cryptsetup luksOpen /dev/sd''X'' crypt<br />
<br />
Scan for and activate LVM volumes:<br />
<br />
# vgscan<br />
# vgchange -ay<br />
<br />
Create a folder for mounting and mount the partitions. Adapt this as necessary for the given system.<br />
<br />
# mkdir /mnt<br />
# mount /dev/mapper/''LVM-partition'' /root<br />
<br />
At this point, follow the instructions in the previous section [[#Downgrading the kernel]].<br />
<br />
Source: http://sch1zo.github.com/blog/2012/05/08/downgrading-a-bad-kernel-on-arch-with-luks-and-lvm/<br />
<br />
=== AUR packages ===<br />
<br />
For AUR packages, currently the only way to get the older PKGBUILDs is at http://pkgbuild.com/git/aur-mirror.git/ or check the [[Unofficial user repositories]] for precompiled binaries (they are sometimes out of date). If you want to use AUR-mirror, follow these steps:<br />
<br />
# Navigate to http://pkgbuild.com/git/aur-mirror.git/log/PACKAGENAME .<br />
# Click on the particular commit or date.<br />
# Download the AUR snapshot (aur-mirror-COMMIT.tar.xz) for that commit (~100MB).<br />
# Unpack it with <br />
<br />
tar xvJf aur-mirror-COMMIT.tar.xz<br />
<br />
And finally, browse to the package folder and use the procedure described in [[Arch User Repository#Installing packages]].<br />
<br />
== Finding your older version ==<br />
<br />
There are three ways to do this.<br />
<br />
=== Out-of-sync mirrors ===<br />
<br />
If you can not find older versions on your system, check if one of the mirrors is out of sync, and get it from there. Click here to see the [https://www.archlinux.org/mirrors/status/ status of mirrors].<br />
<br />
=== Arch Rollback Machine ===<br />
<br />
The ''Arch Rollback Machine'' is an everyday snapshot of official Archlinux mirror. For more information, please see [[Arch Rollback Machine]].<br />
<br />
=== Recompile the package ===<br />
<br />
In worst-case scenario, if the package is not located anywhere else, you will need to compile the older version yourself. To do this you will need a PKGBUILD for the file; you could edit the existing PKGBUILD provided by ABS to use older sources, or you can visit https://www.archlinux.org/packages/ and search for the package you wish to downgrade. Once you find it, click "View Changes" and select "log". Locate the version you need and click on the path. Then just download the files located in that directory and build it with makepkg.<br />
<br />
== FAQ ==<br />
<br />
=== I cannot downgrade a package, because of dependencies ===<br />
<br />
You can ignore dependencies when upgrading or removing, using the {{ic|d}} flag. But this might break your system further.<br />
# pacman -Ud /path/to/''packagename-oldversion''.pkg.tar.gz<br />
<br />
=== How do I stop pacman from upgrading downgraded packages? ===<br />
<br />
Uncomment {{ic|IgnorePkg}} from {{ic|/etc/pacman.conf}} and add them in sequence. For example:<br />
<br />
{{hc|/etc/pacman.conf|2=<br />
...<br />
IgnorePkg = gimp libtorrent-rasterbar<br />
...}}<br />
<br />
This will instruct pacman to ignore any upgrades for selected packages when performing a system update.<br />
<br />
=== I want to go back to how my system was yesterday ===<br />
<br />
It is easy if you have enabled periodic snapshots provided by [[LVM]].</div>Runicalhttps://wiki.archlinux.org/index.php?title=R&diff=324213R2014-07-09T15:20:34Z<p>Runical: Added a 'See also' section with RSeek.org. This is a search engine for easy r related searching and is really handy.</p>
<hr />
<div>[[Category:Mathematics and science]]<br />
[[Category:Programming language]]<br />
{{Related articles start}}<br />
{{Related|Intel C++}}<br />
{{Related articles end}}<br />
''R is a free software environment for statistical computing and graphics'' (http://www.r-project.org/).<br />
<br />
== Installation ==<br />
=== Basic package ===<br />
<br />
[[pacman|Install]] the {{Pkg|r}} package available in the [[official repositories]]<br />
<br />
Some external packages may require to be compile in Fortran as well, so [[pacman|installing]] the {{Pkg|gcc-fortran}} can be a good idea<br />
=== Optimized package ===<br />
==== Intel mkl ====<br />
The numerical libraries that comes with the R (generic {{Pkg|blas}}, LAPACK) do not have multithreading capabilities. '''If your processors are Intel''', it is strongly advise to use the [http://software.intel.com/en-us/intel-mkl Intel math Kernel Library]. The '''MKL''', beyond the capabilities of multithreading, also has specific optimizations for Intel processors, with performance far superior to traditional libraries.<br />
<br />
Please first [[pacman|Install]] the {{AUR|intel-mkl}} package available from [[Arch User Repository|AUR]], then the {{AUR|r-mkl}} package.<br />
<br />
{{Note| if you install the {{AUR|r-mkl}} with '''R''' already installed, you will be prompted to remove '''R'''. Once '''r-mkl''' is installed, please run on '''R''' console the following command :<br />
{{ic|> update.packages(checkBuilt&#61;TRUE)}}<br />
}}<br />
==== intel-parallel-studio-xe ====<br />
[http://software.intel.com/en-us/intel-parallel-studio-xe intel-parallel-studio] delivers top application performance with C, C++ and Fortran compilers, libraries and analysis tools.<br />
<br />
First, install the {{AUR|intel-parallel-studio-xe}} package. Then, modify the {{AUR|r-mkl}} {{ic|PKGBUILD}} file with appending these lines in the {{ic|build()}} section:<br />
<br />
{{bc|<nowiki><br />
# please refer to the intel-parallel-studio-xe package version for path<br />
_omplibpath=/opt/intel/${_parallel_studio_xe_dir}/compiler/lib/${_intel_arch} <br />
export LD_LIBRARY_PATH=${_mkllibpath}:${_omplibpath} <br />
.....................................................<br />
# Build the package using the icc compiler<br />
export CC="icc"<br />
export CXX="icpc"<br />
export AR="xiar"<br />
export LD="xild"<br />
export CFLAGS="-O3 -ipo -openmp -xHost"<br />
export CXXFLAGS="-O3 -ipo -openmp -xHost"<br />
make<br />
</nowiki><br />
}}<br />
{{Note|this package will install the above described '''intel-mkl'''}}<br />
=== Initial configuration ===<br />
<br />
Please refer to [http://stat.ethz.ch/R-manual/R-devel/library/base/html/Startup.html Initialization at Start of an R Session] to get a detailed understanding of startup process.<br />
The home directory of the {{ic|R}} installation is {{ic|usr/bin/R}}. Base packages are found in {{ic|usr/bin/R/library/base}} and '''site''' configuration files in {{ic|/etc/R/}}. Aspects of the [[Locale]] are accessed by the functions {{ic|Sys.getlocale}} and {{ic|Sys.localeconv}} within the {{ic|R}} session. Locales will be the one defined in your system.<br />
<br />
To start a {{ic|R}} session, open your terminal and type this command:<br />
$ R<br />
{{Note|<br />
* Use {{ic|Shift+u}} for the command (some terminals use the {{ic|r}} letter to repeat the last entered command). Once in your {{ic|R}} session, the prompt will change to {{ic|>}}<br />
* '''site''' refers to '''system-wide''' in R Documentation}}<br />
Run {{ic|help(startup)}} to read the documentation about system file configuration, {{ic|help()}} for the on-line help,{{ic|help.start()}} for the HTML browser interface to help, {{ic|demo()}} for some demos and {{ic|q()}} to close the session and quit.<br />
<br />
When closing the session, you will be prompted : {{ic|Save workspace Image ?[y/n/c]}}. The ''workspace'' is your current working environment and include any user-defined objects, functions. The saved image is stored in {{ic|.RData}} format and will be automatically reloaded the next time {{ic|R}} is started. You can manually save the workspace at any time in the session with the {{ic|save.image(image.RData)}} command, save as many images as you want (eg : ''image1.RData'', ''image2.RData''). You can load image with the {{ic|load.iamge(image.RData)}} command at any time of your session.<br />
<br />
{{Tip| <br />
* Tired of R's verbose startup message ? Then start {{ic|R}} with the {{ic|--quiet}} command-line option.<br />
{{ic|$ R --quiet}}<br />
You can {{ic|alias R &#61;"R --quiet"}} in one of your [[Startup_files]]<br />
* Unless explicitly defined somewhere in your configuration files, {{ic|R}} will start in your $HOME directory. If you want to start in a specific directory. first time you create the directory do this:<br />
$ R<br />
> setwd("path/to/your/directory")<br />
> q()<br />
Save workspace image? [y/n/c]: y<br />
{{ic|R}} will create a '''.RData''' image file of your current environment. Then, when double-clicking this file, {{ic|R}} will automatically change its working directory to the file's directory.<br />
* colorize console output:<br />
> download.file("http://www.lepem.ufc.br/jaa/colorout_1.0-3.tar.gz", destfile &#61; "colorout_1.0-3.tar.gz")<br />
> install.packages("colorout_1.0-3.tar.gz", type &#61; "source", repos &#61; NULL)<br />
}}<br />
<br />
===Variables===<br />
{{ic|R}} can be confusing when it comes to [[Environment variables]], as they are large and duplicated following the '''site''' or '''user''' sides. There are two sorts of files used in startup: ''environment files'', defined by {{ic|$R_ENVIRON}} and ''profile files'', defined by {{ic|$R_PROFILE}}.<br />
<br />
Most important variables can be found on [http://stat.ethz.ch/R-manual/R-devel/library/base/html/EnvVar.html Environment Variables R Documentation]].<br />
====R_ENVIRON====<br />
At startup, {{ic|R}} search at early stage for '''site''' and '''user''' {{ic|.Renviron}} files to process for setting [[Environment variables]]. The '''site''' file is located in {{ic|/etc/R}}, and generated by configure.<br />
<br />
The name of the user file can be specified by the {{ic|R_ENVIRON_USER}} [[Environment variables]]. <br />
If you don't specify any file, {{ic|R}} will automatically read {{ic|.Renviron}} in your home directory if there is one. In case you want to use another emplacement for this file, append this line {{ic| export R_ENVIRON_USER &#61;"path/to/.Renviron"}} in one of your [[Startup_files]]. This is the place to set all kind of environment variables using the '''R syntax'''.<br />
<br />
====R_PROFILE====<br />
Then {{ic|R}} searches for the '''site-wilde''' {{ic|Rprofile.site}} defined by the {{ic|R_PROFILE}} [[Environment variables]]. This file does not exist after a fresh installation.<br />
Finally, {{ic|R}} seraches for '''user''' {{ic|R_PROFILE_USER}}. if unset, a file called {{ic|.Rprofile}} is searched for in the current directory, returned by the {{ic|R}} command {{ic|> getwd()}} or in the user's home directory. This is the place to put all your custom {{ic|R}} code.<br />
<br />
== Installing R packages ==<br />
There are many add-on {{ic|R}} packages, which can be browsed on [http://cran.r-project.org/web/packages/available_packages_by_date.html The R Website.]. They can be installed from within {{ic|R}} using the {{ic|'''install.packages(''pkgname'')''' command}}. {{ic|R}} can install its packages locally as '''per user''' local settings or '''system wide'''. <br />
<br />
Within your {{ic|R }} session, run this command to check that your user library exists and is set correctly:<br />
{{hc|> Sys.getenv("R_LIBS_USER")|<br />
[1] "/path/to/directory/R/packages"}}<br />
Installation within your {{ic|R}} session is the safest way and won't conflict with the [[pacman]] package management, but there is another method to install packages. Run the following command in your terminal:<br />
<br />
{{bc|$ R CMD INSTALL -l $R_LIBS_USER ''pkg1 pkg2 ...''}}<br />
<br />
=== Upgrading R packages ===<br />
> update.packages(ask=FALSE)<br />
Or when you also need to rebuild packages which were built for an older version:<br />
> update.packages(ask=FALSE,checkBuilt=TRUE)<br />
<br />
==Configuration files==<br />
<br />
The two user configuration files you want in your home folder are {{ic|.Renviron}} and {{ic|Rprofile.r}}. If you want to keep your {{ic|$HOME}} directory as clean as possible, a good practice will be to make the {{ic|~/.config/r}} directory, put the {{ic|Rprofile.r}} file at the root of the directory and append all your {{ic|R}} code in this file.<br />
===.Renviron===<br />
Lines in {{ic|Renviron}} file should be either comment lines starting with '''#''' or lines of the form ''name&#61;value''.Here is a very basic {{ic|.Renviron}} you can start with:<br />
{{hc|.Renviron| <br />
R_HOME_USER &#61; /path/to/your/r/directory<br />
R_PROFILE_USER &#61; ${HOME}/.config/r/Rprofile.r<br />
R_LIBS_USER &#61; /path/to/your/r/library<br />
R_HISTFILE &#61; /path/to/your/filename.Rhistory # Do not forget to append the '''.Rhistory'''<br />
R_DEFAULT_PACKAGES &#61; 'datasets,utils,grDevices,graphics,stats,methods,rJava,colorout' # load some default packages at start up<br />
}}<br />
<br />
===Rprofile.r===<br />
For convenient reasons, you can put a specific {{ic|Rprofile.r}} in each of your usual working directories. One facility would be to dedicate one directory per project, with its specific profile. When {{ic|R}} will change to the working directory, it will then read the {{ic|Rprofile.r}} file inside it.<br />
<br />
Here is a very short list of useful options and code:<br />
{{hc|Rprofile.r|<br />
setwd("path/to/startup/directory") # define a start up working directory<br />
.First <- function(){<br />
#welcome message<br />
message("Welcome back ", Sys.getenv("USER"),"!\n","working directory is:", getwd())<br />
} <br />
options(prompt &#61; paste(paste (Sys.info () [c ("user", "nodename")], collapse &#61; "@"),"[R] ")) # customize your R prompt with username and hostname in this format: '''user@hostname [R]'''<br />
options(digits &#61; 12) # number of digits to print. Default is 7, max is 15<br />
options(stringsAsFactors &#61; FALSE)<br />
options(show.signif.stars &#61; FALSE)<br />
error &#61; quote(dump.frames("${R_HOME_USER}/testdump", TRUE)) # post-mortem debugiging facilities<br />
}}<br />
You can add more [http://stat.ethz.ch/R-manual/R-devel/library/base/html/options.html global options] to customize your {{ic|R}} environment.<br />
See this [http://stackoverflow.com/questions/1189759/expert-r-users-whats-in-your-rprofile post] for more user configurations.<br />
<br />
== Adding a graphical frontend to R ==<br />
<br />
The linux version of R does not include a graphical user interface. However, third-party user interfaces for R are available, such as R commander and RKWard. <br />
<br />
=== R Commander frontend ===<br />
R Commander is a popular user interface to R. There is no Arch linux package available to install R commander, but it is an R package so it can be installed easily from within R. R Commander requires Tk:<br />
# pacman -S tk<br />
<br />
To install R Commander, run 'R' from the command line. Then type:<br />
> install.packages("Rcmdr", dependencies=TRUE)<br />
<br />
This can take some time.<br />
<br />
You can then start R Commander from within R using the library command:<br />
<br />
> library("Rcmdr")<br />
<br />
=== RKWard frontend ===<br />
RKWard is an open-source frontend which allows for data import and browsing as well as running common statistical tests and plots. You can install {{AUR|rkward}} from [[Arch User Repository|AUR]].<br />
<br />
=== Rstudio IDE ===<br />
RStudio an open-source R IDE. It includes many modern conveniences such as parentheses matching, tab-completion, tool-tip help popups, and a spreadsheet-like data viewer.<br />
<br />
Install {{AUR|rstudio-desktop-bin}} (binary version from the Rstudio project website) or {{AUR|rstudio-desktop-git}} (development version) from [[Arch User Repository|AUR]].<br />
<br />
The R library path is often configured with the R_LIBS environment variable. RStudio ignores this, so the user must set R_LIBS_USER in {{ic|~/.Renviron}}, as documented above.<br />
<br />
=== Rstudio server ===<br />
RStudio Server enables you to provide a browser based interface to a version of R running on a remote Linux server.<br />
<br />
Install {{AUR|rstudio-server-git}}. The two main configuration files are {{ic|/etc/rstudio/rserver.conf}} and {{ic|/etc/rstudio/rsession.conf}}. They are not created during the install, so you will need to ''create'' and ''edit'' them. For information about configure options, please refer to [https://support.rstudio.com/hc/en-us/articles/200552306-Getting-Started rstudio getting started] documentation.<br />
<br />
To start the server, please [[Systemd#Using_units|enable and start]] the {{ic|rstudio-server.service}} unit file provided with the package.<br />
<br />
{{Warning| the {{ic|# rstudio-server}} command is broken. This script, located in {{ic|/usr/lib/rstudio-server/bin/rstudio-server}} refers to {{ic|/etc/init}} or {{ic|/etc/init.d}}, which are no longer part of the default Arch install.}}<br />
<br />
== See also ==<br />
* [http://www.rseek.org/ RSeek] A search engine for R related material.</div>Runicalhttps://wiki.archlinux.org/index.php?title=Setkeycodes&diff=246990Setkeycodes2013-02-10T20:40:45Z<p>Runical: </p>
<hr />
<div>[[Category:Security]]<br />
[[Category:Other hardware]]<br />
[[Category:Input devices]]<br />
setkeycodes, as you can see in its man page, associates scancodes to keycodes. Obviously enough, it takes two arguments: the first argument is the scancode, the second argument is the keycode. However, it is not always easy to determine these arguments. The simplest way to determine the exact scancode is to look at the system log: in fact, any time we press a key which has a scancode but no keycode, the kernel suggests us to use just 'setkeycodes' to assign a keycode to it. In the message the kernel gives us also the scancode we have to use actually. However, also this code is not always usable as it is: when it is composed of four characters and starts with an 'e', then we can use it as it is as the first argument for 'setkeycodes'. On the contrary, when the kernel gives us only two digits, we have to prepend '0x' to it. As an example, suppose that the kernel tells us that the scancode is 71; then the first argument for 'setkeycodes' will be 0x71. To see the last 10 lines of the kernel log you can type:<br />
$ dmesg|tail -10<br />
<br />
The second argument is partially arbitrary. Partially! In fact:<br />
#the keycode has to be in the range 1-127;<br />
#it should not conflict with the keycodes already mapped to a character in your keymap.<br />
In order to respect the second condition, you have to look at your keymap. In configuring your system through /etc/rc.conf, you have chosen your keymap, or decided to stay with the default one: in fact rc.conf includes a 'KEYMAP' setting. The keymaps are stored in your system in one of the subfolders into /usr/share/kbd/keymaps/i386/. E.g., mine is the Italian keymap and its path is /usr/share/kbd/keymaps/i386/qwerty/it.map.gz. It is a text file compressed with gzip2. Let us gunzip it.<br />
# gunzip /usr/share/kbd/keymaps/i386/qwerty/it.map.gz<br />
Now we can read it (sometimes less is able to read also gzipped files: in this case the above passage is dispensable):<br />
# less /usr/share/kbd/keymaps/i386/qwerty/it.map<br />
We have to choose a keycode not conflicting with those already associated with characters. Most of the lines in the keymap are of the following format:<br />
keycode <keycode> = <keysym><br />
These lines are ordered according to the numeric value of the keycode, thus it is easy to find the highest keycode used by the keymap. Thus, the second argument for 'setkeycodes" has to in the range between the successor of this highest keycode and 127. <br />
<br />
Let us say that 112 is in this range (this is actually true with the italian keymap): now we can actually use 'setkeycodes':<br />
# setkeycodes 0x71 112<br />
If we run 'showkey' again, we can see that our hotkey has now the keycode 112. However, this is true only for the current session. To make this permanent, we need to execute 'setkeycodes' each time we boot our system. This can be done inserting the following line in /etc/rc.local:<br />
setkeycodes 0x71 112 &<br />
<br />
We can also use [[systemd]] to make the change permanent. This is preferable since [[sysvinit]] is deprecated. For it to work we need to create a .service file with the following contents:<br />
{{hc|/etc/systemd/system/setkeycodes.service|2=<nowiki><br />
[Unit]<br />
Description=Change keycodes at boot<br />
<br />
[Service]<br />
Type=onshot<br />
ExecStart=/usr/bin/setkeycodes 0x71 112<br />
<br />
[Install]<br />
WantedBy=multi-user.target</nowiki>}}<br />
<br />
With this we created a service which will change the keycode at boot. We activate this service file with:<br />
# systemctl enable setkeycodes</div>Runicalhttps://wiki.archlinux.org/index.php?title=Setkeycodes&diff=246989Setkeycodes2013-02-10T20:39:59Z<p>Runical: </p>
<hr />
<div>[[Category:Security]]<br />
[[Category:Other hardware]]<br />
[[Category:Input devices]]<br />
setkeycodes, as you can see in its man page, associates scancodes to keycodes. Obviously enough, it takes two arguments: the first argument is the scancode, the second argument is the keycode. However, it is not always easy to determine these arguments. The simplest way to determine the exact scancode is to look at the system log: in fact, any time we press a key which has a scancode but no keycode, the kernel suggests us to use just 'setkeycodes' to assign a keycode to it. In the message the kernel gives us also the scancode we have to use actually. However, also this code is not always usable as it is: when it is composed of four characters and starts with an 'e', then we can use it as it is as the first argument for 'setkeycodes'. On the contrary, when the kernel gives us only two digits, we have to prepend '0x' to it. As an example, suppose that the kernel tells us that the scancode is 71; then the first argument for 'setkeycodes' will be 0x71. To see the last 10 lines of the kernel log you can type:<br />
$ dmesg|tail -10<br />
<br />
The second argument is partially arbitrary. Partially! In fact:<br />
#the keycode has to be in the range 1-127;<br />
#it should not conflict with the keycodes already mapped to a character in your keymap.<br />
In order to respect the second condition, you have to look at your keymap. In configuring your system through /etc/rc.conf, you have chosen your keymap, or decided to stay with the default one: in fact rc.conf includes a 'KEYMAP' setting. The keymaps are stored in your system in one of the subfolders into /usr/share/kbd/keymaps/i386/. E.g., mine is the Italian keymap and its path is /usr/share/kbd/keymaps/i386/qwerty/it.map.gz. It is a text file compressed with gzip2. Let us gunzip it.<br />
# gunzip /usr/share/kbd/keymaps/i386/qwerty/it.map.gz<br />
Now we can read it (sometimes less is able to read also gzipped files: in this case the above passage is dispensable):<br />
# less /usr/share/kbd/keymaps/i386/qwerty/it.map<br />
We have to choose a keycode not conflicting with those already associated with characters. Most of the lines in the keymap are of the following format:<br />
keycode <keycode> = <keysym><br />
These lines are ordered according to the numeric value of the keycode, thus it is easy to find the highest keycode used by the keymap. Thus, the second argument for 'setkeycodes" has to in the range between the successor of this highest keycode and 127. <br />
<br />
Let us say that 112 is in this range (this is actually true with the italian keymap): now we can actually use 'setkeycodes':<br />
# setkeycodes 0x71 112<br />
If we run 'showkey' again, we can see that our hotkey has now the keycode 112. However, this is true only for the current session. To make this permanent, we need to execute 'setkeycodes' each time we boot our system. This can be done inserting the following line in /etc/rc.local:<br />
setkeycodes 0x71 112 &<br />
<br />
We can also use [[systemd]] to make the change permanent. This is preferable since [[sysvinit]] is deprecated. For it to work we need to create a .service file with the following contents:<br />
{{hc|/etc/systemd/system/setkeycodes.service|2=<nowiki><br />
[Unit]<br />
Description=Change keycodes at boot<br />
<br />
[Service]<br />
Type=onshot<br />
ExecStart=/usr/bin/setkeycodes 0x71 112<br />
<br />
[Install]<br />
WantedBy=sleep.target</nowiki>}}<br />
<br />
With this we created a service which will change the keycode at boot. We activate this service file with:<br />
# systemctl enable setkeycodes</div>Runical