https://wiki.archlinux.org/api.php?action=feedcontributions&user=Guille&feedformat=atomArchWiki - User contributions [en]2024-03-28T16:29:45ZUser contributionsMediaWiki 1.41.0https://wiki.archlinux.org/index.php?title=Arch_is_the_best&diff=168512Arch is the best2011-11-03T09:39:18Z<p>Guille: /* The Code */</p>
<hr />
<div>[[Category:About Arch (English)]]<br />
== Purpose ==<br />
<br />
The '''Arch is the best''' project is a very sophisticated and exquisite, ego-boosting and mind-blowing (albeit perhaps a bit over-engineered) project which aims to prove Arch's superiority.<br />
<br />
== History ==<br />
<br />
The project was initiated in April 2008 by long time Arch community member [http://bbs.archlinux.org/profile.php?id=2529 lucke] as a simple shell script which provided irrefutable proof that "Arch is the best". Over the following weeks, this project gathered momentum and was ported to multiple different languages, both programming and verbal.<br />
<br />
== The Code ==<br />
<br />
The "Arch is the best" project is ported to many programming languages.<br />
<br />
<br />
'''Ada''' - A pascal dialect.<br />
with Ada.Text_IO;<br />
use Ada.Text_IO;<br />
procedure ArchIsTheBest is<br />
begin<br />
Put_Line("Arch is the best!");<br />
end HelloWorld;<br />
<br />
<br />
'''Awk''' - A data-driven programming language designed for processing text-based data.<br />
BEGIN {<br />
print "Arch is the best!"<br />
}<br />
<br />
<br />
'''Befunge''' - Believed to be the first two-dimensional, ASCII-based, general-purpose (in the sense of "you could plausibly write Hunt the Wumpus in it") programming language.<br />
<v"Arch is the best!"0<br />
<,_@#:<br />
<br />
<br />
'''Bourne shell''' - The original program, should be compatible with any shell.<br />
#!/bin/sh<br />
echo "Arch is the best!"<br />
<br />
<br />
'''Bourne shell (Alternate)''' - Handy for piping the output to your favourite IRC/email/IM client. Should work with any shell.<br />
#!/bin/sh<br />
yes Arch is the best!<br />
<br />
<br />
'''Bourne shell (Dynamically updated)'''<br />
<pre style='overflow:auto'><br />
#!/bin/bash<br />
wget http://wiki.archlinux.org/index.php/Arch_is_the_best -qO-| sed -n ':b;n;s/id="Translations"//;Tb;:d;n;s/id="Links"//;t;p;bd'|sed 's/<[^>]*>//g'|sed 'N;s/\n/: /;N;N;s/\n//g'<br />
</pre><br />
<br />
<br />
'''brainf*ck''' - Doesn't the language name explain it?<br />
++>++++++>+++++<+[>[->+<]<->++++++++++<]>>.<[-]>[-<++>]<br />
<----------------.---------------.+++++.<+++[-<++++++++++>]<.<br />
>>+.++++++++++.<<.>>+.------------.---.<<.>>---.<br />
+++.++++++++++++++.+.<<+.[-]++++++++++.<br />
<br />
<br />
'''C''' - Note the three space indenting used in this project, much like that used by other superior beings.<br />
#include <stdio.h><br />
#include <stdlib.h><br />
int main(void) <br />
{<br />
puts("Arch is the best!");<br />
return EXIT_SUCCESS;<br />
}<br />
<br />
<br />
'''C#''' - Intended to be a simple, modern, general-purpose, object-oriented programming language.<br />
using System;<br />
public class ArchIsTheBest<br />
{<br />
static public void Main ()<br />
{<br />
Console.WriteLine ("Arch is the best!");<br />
}<br />
}<br />
<br />
<br />
'''C++''' - Arch == Linux++<br />
#include <iostream><br />
#include <cstdlib><br />
int main ()<br />
{<br />
std::cout << "Arch is the best!" << std::endl;<br />
return EXIT_SUCCESS;<br />
}<br />
<br />
<br />
'''CoffeeScript''' - A programming language that transcompiles to JavaScript.<br />
alert 'Arch is the best!'<br />
<br />
<br />
'''Clojure''' - A Lisp dialect that runs on the JVM.<br />
(def translations {"english" "Arch is the best!",<br />
"german" "Arch ist das Beste!",<br />
"australian" "Arch is fair dinkum, mate!",<br />
"h4x0r" "arhc 51 7he be57!",<br />
"spanish" "¡Arch es el mejor!"})<br />
<br />
(defn arch-is-the-best<br />
"Asks for a language and prints the corresponding translation. <br />
Loops until input is 'quit'"<br />
[]<br />
(println "Available languages: ")<br />
(doseq [language (keys translations)]<br />
(println (str "\t" language)))<br />
(flush)<br />
(loop []<br />
(print "Enter language, or quit: ")<br />
(flush)<br />
(let [input (. (read-line) toLowerCase)]<br />
(if (= input "quit")<br />
(println "Goodbye!")<br />
(do<br />
(println (translations input "Bad input!"))<br />
(recur))))))<br />
or<br />
(prn "Arch is the best!")<br />
<br />
'''Common Lisp''' - Tested on SBCL, feel free to add more of the translations.<br />
#!/usr/bin/sbcl --script<br />
(defparameter *best-list* '((English "Arch is the best!")<br />
(Chinese "Arch, 她出类拔萃!")<br />
(German "Arch ist das Beste!")<br />
(Greek "Το Arch είναι το καλύτερο!")))<br />
(defun aitb ()<br />
(format t "Available languages: ~{~{~@(~a~)~*~}~^, ~}.~%" *best-list*)<br />
(loop for input = (progn (format t "~&Input the desired language, (or 'quit'): ~%")<br />
(force-output)<br />
(read-line))<br />
if (string-equal input "quit")<br />
do (loop-finish)<br />
else<br />
do (let ((language-def<br />
(assoc input *best-list*<br />
:key (lambda (lang) (symbol-name lang))<br />
:test #'string-equal)))<br />
(if language-def<br />
(format t "~&~A~%" (second language-def))<br />
(format t "~&Invalid language.~%"))))<br />
(format t "~&May the Arch be with you!~%"))<br />
(aitb)<br />
<br />
<br />
'''Common Lisp (Alternate)''' - Should run on any implementation (Clisp, Allegro, SBCL...)<br />
(princ "Arch is the best!")<br />
<br />
<br />
'''Erlang''' - A concurrent, garbage-collected programming language and runtime system.<br />
-module(arch).<br />
-export([is_the_best/0]).<br />
is_the_best() -> io:fwrite("Arch is the best!\n").<br />
<br />
<br />
'''Forth''' - Stack-based language.<br />
." Arch is the best" cr -- kiss way<br />
<br />
'''Fortran95'''<br />
program arch<br />
print *,"Arch is the best!"<br />
end program arch<br />
<br />
'''Genie''' - A new programming language, that allows for a more modern programming style while being able to effortlessly create and use GObjects natively. <br />
init<br />
print "Arch is the best"<br />
<br />
<br />
'''Gjs''' - A Javascript binding for GNOME. It's mainly based on Spidermonkey javascript engine and the GObject introspection framework.<br />
#!/usr/bin/env gjs<br />
print ('Arch is the best');<br />
<br />
<br />
'''Go''' - A language created by Google that's a love child between C, C++ and Python.<br />
package main<br />
<br />
import "fmt"<br />
<br />
func main() {<br />
fmt.Println("Arch is the best!")<br />
}<br />
<br />
<br />
'''Haskell''' - The language where IO is easy and unproblematic.<br />
main = putStrLn "Arch is the best!"<br />
<br />
<br />
'''HTML''' - A markup language used to create and define web pages and their content.<br />
<pre><br />
<!DOCTYPE html><br />
<html lang='en'><br />
<head><br />
<title>Arch is the best!</title><br />
</head><br />
<body><br />
<p>Arch is the best!</p><br />
</body><br />
</html><br />
</pre><br />
<br />
'''Io'''<br />
"Arch is the best!" println<br />
<br />
<br />
'''Java''' - An extremely portable language, this will run on pretty much anything, it might even run on your toaster!<br />
public class ArchIsTheBest {<br />
public static void main(String[] args) {<br />
System.out.println("Arch is the best!");<br />
}<br />
}<br />
<br />
<br />
'''JavaScript''' - Also known as ECMAScript, a prototype-based object-oriented scripting language. <br />
console.log('Arch is the best!');<br />
<br />
<br />
'''JavaScript (in a web browser)'''<br />
alert('Arch is the best!');<br />
<br />
<br />
'''LilyPond''' - A powerful music engraving program with an intuitive LaTeX-like input language.<br />
\version "2.12.3"<br />
\include "english.ly"<br />
\header { title = "Arch is the best!" }<br />
\score<br />
{<br />
<<<br />
\relative c' { c4 e g c \bar "||" }<br />
\addlyrics { Arch is the best! }<br />
>><br />
}<br />
<br />
<br />
'''LOLCODE''' - Why not?<br />
HAI<br />
CAN HAS STDIO?<br />
VISIBLE "ARCH IS TEH PWNZ LOL!"<br />
KTHXBYE<br />
<br />
<br />
'''Lua''' - A lightweight, extensible programming language.<br />
if io.popen("uname -r"):read():match("ARCH") then print("Arch is the best") else print("Get the Arch") end<br />
<br />
<br />
'''Objective-C''' - A reflective, object-oriented programming language that adds Smalltalk-style messaging to the C programming language.<br />
NSLog(@"Arch is the best!");<br />
<br />
<br />
'''OCaml''' - The main implementation of the Caml programming language.<br />
print_endline "Arch is the best!"<br />
<br />
<br />
'''Perl''' - A high-level, general-purpose, interpreted, dynamic programming language.<br />
#!/usr/bin/perl<br />
print "Arch is the best!\n";<br />
<br />
<br />
'''PHP''' - A general-purpose scripting language.<br />
<?php<br />
echo "Arch is the best!\n";<br />
?> <br />
<br />
<br />
'''Pixilang''' - Make me pixels.<br />
print("Arch is the best!",0,0,#1897D1)<br />
frame<br />
<br />
<br />
'''Portable GNU assembler''' - as -o arch.o arch.s && ld -o arch -O0 arch.o<br />
<br />
.section .data<br />
archIsBest: <br />
.ascii "Arch is the best!\n"<br />
archIsBest_len:<br />
.long . - archIsBest<br />
.section .text<br />
.globl _start<br />
_start:<br />
xorl %ebx, %ebx<br />
movl $4, %eax <br />
xorl %ebx, %ebx<br />
incl %ebx <br />
leal archIsBest, %ecx<br />
movl archIsBest_len, %edx <br />
int $0x80 <br />
xorl %eax, %eax<br />
incl %eax<br />
xorl %ebx, %ebx <br />
int $0x80<br />
<br />
<br />
'''Processing''' - An open source programming language and IDE built for the electronic arts and visual design.<br />
println("Arch is the best!");<br />
<br />
<br />
'''Prolog''' - A general purpose logic programming language associated with artificial intelligence and computational linguistics.<br />
format('Arch is the best~n',[]).<br />
<br />
<br />
'''Python''' - A general-purpose high-level programming language.<br />
#!/usr/bin/env python3<br />
print('Arch is the best!')<br />
<br />
<br />
'''QBASIC''' - An interpreter for a variant of the BASIC programming language which is based on QuickBASIC.<br />
PRINT "Arch is the best!"<br />
<br />
<br />
'''R''' - A language for statistical computing (and much more!).<br />
archIsBest <- function() { cat("Arch is the best!\n") }<br />
archIsBest()<br />
<br />
<br />
'''Ruby''' - A dynamic, reflective, general purpose object-oriented programming language.<br />
#!/usr/bin/ruby -w<br />
puts 'Arch is the best!'<br />
<br />
<br />
'''Scheme''' - A dialect of Lisp.<br />
(display "Arch is the best!\n")<br />
<br />
<br />
'''Seed''' - A library and interpreter, dynamically bridging the WebKit JavaScriptCore engine, with the GNOME platform.<br />
#!/usr/bin/env seed<br />
print ('Arch is the best');<br />
<br />
<br />
'''Shoes''' - A Ruby version using Shoes for a GUI<br />
Shoes.app :width => 135, :height => 30 do <br />
para "Arch is the Best!"<br />
end<br />
<br />
<br />
'''SQL''' - Structured Query Language, the query language for relational databases<br />
SELECT 'Arch is the best!';<br />
SELECT 'Arch is the best!' from dual; -- for Oracle DB<br />
<br />
<br />
'''Standard ML''' - A general-purpose, modular, functional programming language with compile-time type checking and type inference.<br />
print "Arch is the best!\n"<br />
<br />
<br />
'''Tcl/Tk''' - A scripting language that is commonly used for rapid prototyping, scripted applications, GUIs and testing.<br />
#!/usr/bin/env tclsh<br />
puts "Arch is the best!"<br />
<br />
<br />
'''Vala''' - "Vala is a new programming language that aims to bring modern programming language features to GNOME developers without imposing any additional runtime requirements and without using a different ABI compared to applications and libraries written in C"<br />
void main(string[] args) {<br />
stdout.printf("\nArch is the best!\n\n");<br />
}<br />
<br />
<br />
''' Wiring (Arduino)''' - Built on Processing, the open source programming language developed at the Massachusetts Institute of Technology.<br />
void setup() <br />
{<br />
Serial.begin(9600); <br />
}<br />
void loop() <br />
{ <br />
Serial.print("Arch is the best!");<br />
}<br />
<br />
<br />
''' X11 ''' - X11 is an architecture independent system for display of graphical user interfaces.<br />
#include <stdio.h><br />
#include <stdlib.h><br />
#include <string.h><br />
<br />
#include <X11/Xlib.h><br />
<br />
int main()<br />
{<br />
Display *d;<br />
Window w;<br />
XEvent e;<br />
int s;<br />
<br />
if (!(d = XOpenDisplay(NULL))) {<br />
fprintf(stderr, "Couldn't open display, but Arch is the best!\n");<br />
exit(1);<br />
}<br />
<br />
s = DefaultScreen(d);<br />
w = XCreateSimpleWindow(d, RootWindow(d,s), 0, 0, 110, 20, 0, <br />
0, WhitePixel(d,s));<br />
XSelectInput(d, w, ExposureMask | KeyPressMask);<br />
XMapWindow(d,w);<br />
<br />
while (1) {<br />
XNextEvent(d, &e);<br />
if (e.type == Expose) {<br />
XDrawString(d, w, DefaultGC(d, s), 5, 15, "Arch is the best!", 17);<br />
}<br />
}<br />
<br />
XCloseDisplay(d);<br />
return 0;<br />
}<br />
<br />
==Translations==<br />
'''Arabic'''<br />
ارتش هو الأفضل<br />
<br />
'''Australian'''<br />
Arch is fair dinkum, mate!<br />
<br />
'''Bahasa Indonesia'''<br />
Arch terbaik!<br />
<br />
'''Basque'''<br />
Arch onena da!<br />
<br />
'''Belarusian'''<br />
Арч - самы лепшы!<br />
<br />
'''Bengali'''<br />
আর্চ সবচেয়ে ভালো!<br />
<br />
'''Binary ASCII'''<br />
0100000101110010011000110110100000100000011010010111001100100000011101000110100001100101001000000110001001100101011100110111010000100001<br />
<br />
'''British'''<br />
Arch is simply spiffing.<br />
<br />
'''Bulgarian'''<br />
Арч е най-добрият!<br />
<br />
'''Chinese (Simplified)'''<br />
Arch 最棒了!<br />
<br />
'''Ancient Chinese'''<br />
阿祺,盡善矣。<br />
<br />
'''Chinese (Taobao Style - 淘宝体)'''<br />
Arch,好评哦,亲!<br />
<br />
'''Czech'''<br />
Arch je nejlepší!<br />
<br />
'''Danish'''<br />
Arch er bedst!<br />
<br />
'''Desrever (Reversed)'''<br />
!tseb eht si hcrA<br />
<br />
'''Dutch'''<br />
Arch is de beste!<br />
<br />
'''Esperanto'''<br />
La Arch-o plejbonas!<br />
<br />
'''Finnish'''<br />
Arch on paras!<br />
<br />
'''Filipino'''<br />
Mabuhay ang Arch!<br />
<br />
'''French'''<br />
Arch est le meilleur!<br />
<br />
'''Galician'''<br />
Arch é o mellor!<br />
<br />
'''German'''<br />
Arch ist das Beste!<br />
<br />
'''Greek'''<br />
Το Arch είναι το καλύτερο!<br />
<br />
'''h4x0r'''<br />
Arch 15 7h3 b357!<br />
<br />
'''Hantec'''<br />
Arch je nejbetélnější!<br />
<br />
'''Hebrew'''<br />
ארצ' זה הכי אחי!<br />
<br />
'''Hexadecimal ASCII'''<br />
4172636820697320746865206265737421<br />
<br />
'''Hindi'''<br />
आर्ख सब से अच्छा है ।<br />
<br />
'''Hungarian'''<br />
Az Arch a legjobb!<br />
<br />
'''Irish'''<br />
Arch é is fearr!<br />
<br />
'''Italian'''<br />
Arch è il migliore!<br />
<br />
'''Japanese'''<br />
Archが一番ですよ!<br />
<br />
'''Kazakh'''<br />
Арч - ең жақсы!<br />
<br />
'''Latin'''<br />
Arch optimus est!<br />
<br />
'''Latvian'''<br />
Arch ir labākais!<br />
<br />
'''Lithuanian'''<br />
Arch yra geriausias!<br />
<br />
'''Marathi'''<br />
आर्च सगळ्यात भारी आहे!<br />
<br />
'''Norwegian'''<br />
Arch er best!<br />
<br />
'''Pig Latin'''<br />
Archway isway ethay estbay!<br />
<br />
'''Polish'''<br />
Arch jest najlepszy!<br />
<br />
'''Portuguese'''<br />
Arch é o melhor!<br />
<br />
'''Québécois'''<br />
Arch est le plus meilleure du monde!<br />
<br />
'''Romanian'''<br />
Аrch e cel mai bun!<br />
<br />
'''Russian'''<br />
Арч - лучший!<br />
<br />
'''Serbian'''<br />
Arch je najbolji!<br />
<br />
'''Singaporean'''<br />
Arch the best lah!<br />
<br />
'''Slovenian'''<br />
Arch je najboljši!<br />
<br />
'''Spanish'''<br />
¡Arch es el mejor!<br />
<br />
'''Spanish (Argentina)'''<br />
- AKA ''"Casteshano"''<br />
Arch es una mazza!!<br />
<br />
'''Swedish'''<br />
Arch är bäst!<br />
<br />
'''Fikonspråket'''<br />
Firch Arkon fir äkon fist bäkon<br />
<br />
'''Turkish'''<br />
Arch en iyisidir!<br />
<br />
'''Tamil'''<br />
ஆர்ச்சே சிறந்தது!<br />
<br />
'''Ukrainian'''<br />
Arch є найкращий!<br />
<br />
'''Vietnamese'''<br />
Arch là tốt nhất!<br />
<br />
'''Morse Code'''<br />
.- .-. -.-. .... / .. ... / - .... . / -... . ... -<br />
<br />
'''Braille'''<br />
⠁⠗⠉⠓⠀⠊⠎⠀⠮⠀⠃⠑⠎⠞⠲<br />
<br />
'''Base64'''<br />
QXJjaCBpcyB0aGUgYmVzdCEK<br />
<br />
'''URL Encoded'''<br />
Arch%20is%20the%20best!<br />
<br />
'''ROT13'''<br />
Nepu vf gur orfg!<br />
<br />
'''Upside Down'''<br />
¡ʇsǝq ǝɥʇ s! ɥɔɹ∀<br />
<br />
== Links ==<br />
<br />
* [http://bbs.archlinux.org/viewtopic.php?id=47306 forum Thread]</div>Guillehttps://wiki.archlinux.org/index.php?title=Arch_is_the_best&diff=168511Arch is the best2011-11-03T09:32:54Z<p>Guille: /* Translations */</p>
<hr />
<div>[[Category:About Arch (English)]]<br />
== Purpose ==<br />
<br />
The '''Arch is the best''' project is a very sophisticated and exquisite, ego-boosting and mind-blowing (albeit perhaps a bit over-engineered) project which aims to prove Arch's superiority.<br />
<br />
== History ==<br />
<br />
The project was initiated in April 2008 by long time Arch community member [http://bbs.archlinux.org/profile.php?id=2529 lucke] as a simple shell script which provided irrefutable proof that "Arch is the best". Over the following weeks, this project gathered momentum and was ported to multiple different languages, both programming and verbal.<br />
<br />
== The Code ==<br />
<br />
The "Arch is the best" project is ported to many programming languages.<br />
<br />
<br />
'''Ada''' - A pascal dialect.<br />
with Ada.Text_IO;<br />
use Ada.Text_IO;<br />
procedure ArchIsTheBest is<br />
begin<br />
Put_Line("Arch is the best!");<br />
end HelloWorld;<br />
<br />
<br />
'''Awk''' - A data-driven programming language designed for processing text-based data.<br />
BEGIN {<br />
print "Arch is the best!"<br />
}<br />
<br />
<br />
'''Befunge''' - Believed to be the first two-dimensional, ASCII-based, general-purpose (in the sense of "you could plausibly write Hunt the Wumpus in it") programming language.<br />
<v"Arch is the best!"0<br />
<,_@#:<br />
<br />
<br />
'''Bourne shell''' - The original program, should be compatible with any shell.<br />
#!/bin/sh<br />
echo "Arch is the best!"<br />
<br />
<br />
'''Bourne shell (Alternate)''' - Handy for piping the output to your favourite IRC/email/IM client. Should work with any shell.<br />
#!/bin/sh<br />
yes Arch is the best!<br />
<br />
<br />
'''Bourne shell (Dynamically updated)'''<br />
<pre style='overflow:auto'><br />
#!/bin/bash<br />
wget http://wiki.archlinux.org/index.php/Arch_is_the_best -qO-| sed -n ':b;n;s/id="Translations"//;Tb;:d;n;s/id="Links"//;t;p;bd'|sed 's/<[^>]*>//g'|sed 'N;s/\n/: /;N;N;s/\n//g'<br />
</pre><br />
<br />
<br />
'''brainf*ck''' - Doesn't the language name explain it?<br />
++>++++++>+++++<+[>[->+<]<->++++++++++<]>>.<[-]>[-<++>]<br />
<----------------.---------------.+++++.<+++[-<++++++++++>]<.<br />
>>+.++++++++++.<<.>>+.------------.---.<<.>>---.<br />
+++.++++++++++++++.+.<<+.[-]++++++++++.<br />
<br />
<br />
'''C''' - Note the three space indenting used in this project, much like that used by other superior beings.<br />
#include <stdio.h><br />
#include <stdlib.h><br />
int main(void) <br />
{<br />
puts("Arch is the best!");<br />
return EXIT_SUCCESS;<br />
}<br />
<br />
<br />
'''C#''' - Intended to be a simple, modern, general-purpose, object-oriented programming language.<br />
using System;<br />
public class ArchIsTheBest<br />
{<br />
static public void Main ()<br />
{<br />
Console.WriteLine ("Arch is the best!");<br />
}<br />
}<br />
<br />
<br />
'''C++''' - Arch == Linux++<br />
#include <iostream><br />
#include <cstdlib><br />
int main ()<br />
{<br />
std::cout << "Arch is the best!" << std::endl;<br />
return EXIT_SUCCESS;<br />
}<br />
<br />
<br />
'''CoffeeScript''' - A programming language that transcompiles to JavaScript.<br />
alert 'Arch is the best!'<br />
<br />
<br />
'''Clojure''' - A Lisp dialect that runs on the JVM.<br />
(def translations {"english" "Arch is the best!",<br />
"german" "Arch ist das Beste!",<br />
"australian" "Arch is fair dinkum, mate!",<br />
"h4x0r" "arhc 51 7he be57!",<br />
"spanish" "¡Arch es el mejor!"})<br />
<br />
(defn arch-is-the-best<br />
"Asks for a language and prints the corresponding translation. <br />
Loops until input is 'quit'"<br />
[]<br />
(println "Available languages: ")<br />
(doseq [language (keys translations)]<br />
(println (str "\t" language)))<br />
(flush)<br />
(loop []<br />
(print "Enter language, or quit: ")<br />
(flush)<br />
(let [input (. (read-line) toLowerCase)]<br />
(if (= input "quit")<br />
(println "Goodbye!")<br />
(do<br />
(println (translations input "Bad input!"))<br />
(recur))))))<br />
<br />
<br />
'''Common Lisp''' - Tested on SBCL, feel free to add more of the translations.<br />
#!/usr/bin/sbcl --script<br />
(defparameter *best-list* '((English "Arch is the best!")<br />
(Chinese "Arch, 她出类拔萃!")<br />
(German "Arch ist das Beste!")<br />
(Greek "Το Arch είναι το καλύτερο!")))<br />
(defun aitb ()<br />
(format t "Available languages: ~{~{~@(~a~)~*~}~^, ~}.~%" *best-list*)<br />
(loop for input = (progn (format t "~&Input the desired language, (or 'quit'): ~%")<br />
(force-output)<br />
(read-line))<br />
if (string-equal input "quit")<br />
do (loop-finish)<br />
else<br />
do (let ((language-def<br />
(assoc input *best-list*<br />
:key (lambda (lang) (symbol-name lang))<br />
:test #'string-equal)))<br />
(if language-def<br />
(format t "~&~A~%" (second language-def))<br />
(format t "~&Invalid language.~%"))))<br />
(format t "~&May the Arch be with you!~%"))<br />
(aitb)<br />
<br />
<br />
'''Common Lisp (Alternate)''' - Should run on any implementation (Clisp, Allegro, SBCL...)<br />
(princ "Arch is the best!")<br />
<br />
<br />
'''Erlang''' - A concurrent, garbage-collected programming language and runtime system.<br />
-module(arch).<br />
-export([is_the_best/0]).<br />
is_the_best() -> io:fwrite("Arch is the best!\n").<br />
<br />
<br />
'''Forth''' - Stack-based language.<br />
." Arch is the best" cr -- kiss way<br />
<br />
<br />
'''Genie''' - A new programming language, that allows for a more modern programming style while being able to effortlessly create and use GObjects natively. <br />
init<br />
print "Arch is the best"<br />
<br />
<br />
'''Gjs''' - A Javascript binding for GNOME. It's mainly based on Spidermonkey javascript engine and the GObject introspection framework.<br />
#!/usr/bin/env gjs<br />
print ('Arch is the best');<br />
<br />
<br />
'''Go''' - A language created by Google that's a love child between C, C++ and Python.<br />
package main<br />
<br />
import "fmt"<br />
<br />
func main() {<br />
fmt.Println("Arch is the best!")<br />
}<br />
<br />
<br />
'''Haskell''' - The language where IO is easy and unproblematic.<br />
main = putStrLn "Arch is the best!"<br />
<br />
<br />
'''HTML''' - A markup language used to create and define web pages and their content.<br />
<pre><br />
<!DOCTYPE html><br />
<html lang='en'><br />
<head><br />
<title>Arch is the best!</title><br />
</head><br />
<body><br />
<p>Arch is the best!</p><br />
</body><br />
</html><br />
</pre><br />
<br />
'''Io'''<br />
"Arch is the best!" println<br />
<br />
<br />
'''Java''' - An extremely portable language, this will run on pretty much anything, it might even run on your toaster!<br />
public class ArchIsTheBest {<br />
public static void main(String[] args) {<br />
System.out.println("Arch is the best!");<br />
}<br />
}<br />
<br />
<br />
'''JavaScript''' - Also known as ECMAScript, a prototype-based object-oriented scripting language. <br />
console.log('Arch is the best!');<br />
<br />
<br />
'''JavaScript (in a web browser)'''<br />
alert('Arch is the best!');<br />
<br />
<br />
'''LilyPond''' - A powerful music engraving program with an intuitive LaTeX-like input language.<br />
\version "2.12.3"<br />
\include "english.ly"<br />
\header { title = "Arch is the best!" }<br />
\score<br />
{<br />
<<<br />
\relative c' { c4 e g c \bar "||" }<br />
\addlyrics { Arch is the best! }<br />
>><br />
}<br />
<br />
<br />
'''LOLCODE''' - Why not?<br />
HAI<br />
CAN HAS STDIO?<br />
VISIBLE "ARCH IS TEH PWNZ LOL!"<br />
KTHXBYE<br />
<br />
<br />
'''Lua''' - A lightweight, extensible programming language.<br />
if io.popen("uname -r"):read():match("ARCH") then print("Arch is the best") else print("Get the Arch") end<br />
<br />
<br />
'''Objective-C''' - A reflective, object-oriented programming language that adds Smalltalk-style messaging to the C programming language.<br />
NSLog(@"Arch is the best!");<br />
<br />
<br />
'''OCaml''' - The main implementation of the Caml programming language.<br />
print_endline "Arch is the best!"<br />
<br />
<br />
'''Perl''' - A high-level, general-purpose, interpreted, dynamic programming language.<br />
#!/usr/bin/perl<br />
print "Arch is the best!\n";<br />
<br />
<br />
'''PHP''' - A general-purpose scripting language.<br />
<?php<br />
echo "Arch is the best!\n";<br />
?> <br />
<br />
<br />
'''Pixilang''' - Make me pixels.<br />
print("Arch is the best!",0,0,#1897D1)<br />
frame<br />
<br />
<br />
'''Portable GNU assembler''' - as -o arch.o arch.s && ld -o arch -O0 arch.o<br />
<br />
.section .data<br />
archIsBest: <br />
.ascii "Arch is the best!\n"<br />
archIsBest_len:<br />
.long . - archIsBest<br />
.section .text<br />
.globl _start<br />
_start:<br />
xorl %ebx, %ebx<br />
movl $4, %eax <br />
xorl %ebx, %ebx<br />
incl %ebx <br />
leal archIsBest, %ecx<br />
movl archIsBest_len, %edx <br />
int $0x80 <br />
xorl %eax, %eax<br />
incl %eax<br />
xorl %ebx, %ebx <br />
int $0x80<br />
<br />
<br />
'''Processing''' - An open source programming language and IDE built for the electronic arts and visual design.<br />
println("Arch is the best!");<br />
<br />
<br />
'''Prolog''' - A general purpose logic programming language associated with artificial intelligence and computational linguistics.<br />
format('Arch is the best~n',[]).<br />
<br />
<br />
'''Python''' - A general-purpose high-level programming language.<br />
#!/usr/bin/env python3<br />
print('Arch is the best!')<br />
<br />
<br />
'''QBASIC''' - An interpreter for a variant of the BASIC programming language which is based on QuickBASIC.<br />
PRINT "Arch is the best!"<br />
<br />
<br />
'''R''' - A language for statistical computing (and much more!).<br />
archIsBest <- function() { cat("Arch is the best!\n") }<br />
archIsBest()<br />
<br />
<br />
'''Ruby''' - A dynamic, reflective, general purpose object-oriented programming language.<br />
#!/usr/bin/ruby -w<br />
puts 'Arch is the best!'<br />
<br />
<br />
'''Scheme''' - A dialect of Lisp.<br />
(display "Arch is the best!\n")<br />
<br />
<br />
'''Seed''' - A library and interpreter, dynamically bridging the WebKit JavaScriptCore engine, with the GNOME platform.<br />
#!/usr/bin/env seed<br />
print ('Arch is the best');<br />
<br />
<br />
'''Shoes''' - A Ruby version using Shoes for a GUI<br />
Shoes.app :width => 135, :height => 30 do <br />
para "Arch is the Best!"<br />
end<br />
<br />
<br />
'''SQL''' - Structured Query Language, the query language for relational databases<br />
SELECT 'Arch is the best!';<br />
SELECT 'Arch is the best!' from dual; -- for Oracle DB<br />
<br />
<br />
'''Standard ML''' - A general-purpose, modular, functional programming language with compile-time type checking and type inference.<br />
print "Arch is the best!\n"<br />
<br />
<br />
'''Tcl/Tk''' - A scripting language that is commonly used for rapid prototyping, scripted applications, GUIs and testing.<br />
#!/usr/bin/env tclsh<br />
puts "Arch is the best!"<br />
<br />
<br />
'''Vala''' - "Vala is a new programming language that aims to bring modern programming language features to GNOME developers without imposing any additional runtime requirements and without using a different ABI compared to applications and libraries written in C"<br />
void main(string[] args) {<br />
stdout.printf("\nArch is the best!\n\n");<br />
}<br />
<br />
<br />
''' Wiring (Arduino)''' - Built on Processing, the open source programming language developed at the Massachusetts Institute of Technology.<br />
void setup() <br />
{<br />
Serial.begin(9600); <br />
}<br />
void loop() <br />
{ <br />
Serial.print("Arch is the best!");<br />
}<br />
<br />
<br />
''' X11 ''' - X11 is an architecture independent system for display of graphical user interfaces.<br />
#include <stdio.h><br />
#include <stdlib.h><br />
#include <string.h><br />
<br />
#include <X11/Xlib.h><br />
<br />
int main()<br />
{<br />
Display *d;<br />
Window w;<br />
XEvent e;<br />
int s;<br />
<br />
if (!(d = XOpenDisplay(NULL))) {<br />
fprintf(stderr, "Couldn't open display, but Arch is the best!\n");<br />
exit(1);<br />
}<br />
<br />
s = DefaultScreen(d);<br />
w = XCreateSimpleWindow(d, RootWindow(d,s), 0, 0, 110, 20, 0, <br />
0, WhitePixel(d,s));<br />
XSelectInput(d, w, ExposureMask | KeyPressMask);<br />
XMapWindow(d,w);<br />
<br />
while (1) {<br />
XNextEvent(d, &e);<br />
if (e.type == Expose) {<br />
XDrawString(d, w, DefaultGC(d, s), 5, 15, "Arch is the best!", 17);<br />
}<br />
}<br />
<br />
XCloseDisplay(d);<br />
return 0;<br />
}<br />
<br />
==Translations==<br />
'''Arabic'''<br />
ارتش هو الأفضل<br />
<br />
'''Australian'''<br />
Arch is fair dinkum, mate!<br />
<br />
'''Bahasa Indonesia'''<br />
Arch terbaik!<br />
<br />
'''Basque'''<br />
Arch onena da!<br />
<br />
'''Belarusian'''<br />
Арч - самы лепшы!<br />
<br />
'''Bengali'''<br />
আর্চ সবচেয়ে ভালো!<br />
<br />
'''Binary ASCII'''<br />
0100000101110010011000110110100000100000011010010111001100100000011101000110100001100101001000000110001001100101011100110111010000100001<br />
<br />
'''British'''<br />
Arch is simply spiffing.<br />
<br />
'''Bulgarian'''<br />
Арч е най-добрият!<br />
<br />
'''Chinese (Simplified)'''<br />
Arch 最棒了!<br />
<br />
'''Ancient Chinese'''<br />
阿祺,盡善矣。<br />
<br />
'''Chinese (Taobao Style - 淘宝体)'''<br />
Arch,好评哦,亲!<br />
<br />
'''Czech'''<br />
Arch je nejlepší!<br />
<br />
'''Danish'''<br />
Arch er bedst!<br />
<br />
'''Desrever (Reversed)'''<br />
!tseb eht si hcrA<br />
<br />
'''Dutch'''<br />
Arch is de beste!<br />
<br />
'''Esperanto'''<br />
La Arch-o plejbonas!<br />
<br />
'''Finnish'''<br />
Arch on paras!<br />
<br />
'''Filipino'''<br />
Mabuhay ang Arch!<br />
<br />
'''French'''<br />
Arch est le meilleur!<br />
<br />
'''Galician'''<br />
Arch é o mellor!<br />
<br />
'''German'''<br />
Arch ist das Beste!<br />
<br />
'''Greek'''<br />
Το Arch είναι το καλύτερο!<br />
<br />
'''h4x0r'''<br />
Arch 15 7h3 b357!<br />
<br />
'''Hantec'''<br />
Arch je nejbetélnější!<br />
<br />
'''Hebrew'''<br />
ארצ' זה הכי אחי!<br />
<br />
'''Hexadecimal ASCII'''<br />
4172636820697320746865206265737421<br />
<br />
'''Hindi'''<br />
आर्ख सब से अच्छा है ।<br />
<br />
'''Hungarian'''<br />
Az Arch a legjobb!<br />
<br />
'''Irish'''<br />
Arch é is fearr!<br />
<br />
'''Italian'''<br />
Arch è il migliore!<br />
<br />
'''Japanese'''<br />
Archが一番ですよ!<br />
<br />
'''Kazakh'''<br />
Арч - ең жақсы!<br />
<br />
'''Latin'''<br />
Arch optimus est!<br />
<br />
'''Latvian'''<br />
Arch ir labākais!<br />
<br />
'''Lithuanian'''<br />
Arch yra geriausias!<br />
<br />
'''Marathi'''<br />
आर्च सगळ्यात भारी आहे!<br />
<br />
'''Norwegian'''<br />
Arch er best!<br />
<br />
'''Pig Latin'''<br />
Archway isway ethay estbay!<br />
<br />
'''Polish'''<br />
Arch jest najlepszy!<br />
<br />
'''Portuguese'''<br />
Arch é o melhor!<br />
<br />
'''Québécois'''<br />
Arch est le plus meilleure du monde!<br />
<br />
'''Romanian'''<br />
Аrch e cel mai bun!<br />
<br />
'''Russian'''<br />
Арч - лучший!<br />
<br />
'''Serbian'''<br />
Arch je najbolji!<br />
<br />
'''Singaporean'''<br />
Arch the best lah!<br />
<br />
'''Slovenian'''<br />
Arch je najboljši!<br />
<br />
'''Spanish'''<br />
¡Arch es el mejor!<br />
<br />
'''Spanish (Argentina)'''<br />
- AKA ''"Casteshano"''<br />
Arch es una mazza!!<br />
<br />
'''Swedish'''<br />
Arch är bäst!<br />
<br />
'''Fikonspråket'''<br />
Firch Arkon fir äkon fist bäkon<br />
<br />
'''Turkish'''<br />
Arch en iyisidir!<br />
<br />
'''Tamil'''<br />
ஆர்ச்சே சிறந்தது!<br />
<br />
'''Ukrainian'''<br />
Arch є найкращий!<br />
<br />
'''Vietnamese'''<br />
Arch là tốt nhất!<br />
<br />
'''Morse Code'''<br />
.- .-. -.-. .... / .. ... / - .... . / -... . ... -<br />
<br />
'''Braille'''<br />
⠁⠗⠉⠓⠀⠊⠎⠀⠮⠀⠃⠑⠎⠞⠲<br />
<br />
'''Base64'''<br />
QXJjaCBpcyB0aGUgYmVzdCEK<br />
<br />
'''URL Encoded'''<br />
Arch%20is%20the%20best!<br />
<br />
'''ROT13'''<br />
Nepu vf gur orfg!<br />
<br />
'''Upside Down'''<br />
¡ʇsǝq ǝɥʇ s! ɥɔɹ∀<br />
<br />
== Links ==<br />
<br />
* [http://bbs.archlinux.org/viewtopic.php?id=47306 forum Thread]</div>Guillehttps://wiki.archlinux.org/index.php?title=Arch_is_the_best&diff=168510Arch is the best2011-11-03T09:26:30Z<p>Guille: /* Translations */</p>
<hr />
<div>[[Category:About Arch (English)]]<br />
== Purpose ==<br />
<br />
The '''Arch is the best''' project is a very sophisticated and exquisite, ego-boosting and mind-blowing (albeit perhaps a bit over-engineered) project which aims to prove Arch's superiority.<br />
<br />
== History ==<br />
<br />
The project was initiated in April 2008 by long time Arch community member [http://bbs.archlinux.org/profile.php?id=2529 lucke] as a simple shell script which provided irrefutable proof that "Arch is the best". Over the following weeks, this project gathered momentum and was ported to multiple different languages, both programming and verbal.<br />
<br />
== The Code ==<br />
<br />
The "Arch is the best" project is ported to many programming languages.<br />
<br />
<br />
'''Ada''' - A pascal dialect.<br />
with Ada.Text_IO;<br />
use Ada.Text_IO;<br />
procedure ArchIsTheBest is<br />
begin<br />
Put_Line("Arch is the best!");<br />
end HelloWorld;<br />
<br />
<br />
'''Awk''' - A data-driven programming language designed for processing text-based data.<br />
BEGIN {<br />
print "Arch is the best!"<br />
}<br />
<br />
<br />
'''Befunge''' - Believed to be the first two-dimensional, ASCII-based, general-purpose (in the sense of "you could plausibly write Hunt the Wumpus in it") programming language.<br />
<v"Arch is the best!"0<br />
<,_@#:<br />
<br />
<br />
'''Bourne shell''' - The original program, should be compatible with any shell.<br />
#!/bin/sh<br />
echo "Arch is the best!"<br />
<br />
<br />
'''Bourne shell (Alternate)''' - Handy for piping the output to your favourite IRC/email/IM client. Should work with any shell.<br />
#!/bin/sh<br />
yes Arch is the best!<br />
<br />
<br />
'''Bourne shell (Dynamically updated)'''<br />
<pre style='overflow:auto'><br />
#!/bin/bash<br />
wget http://wiki.archlinux.org/index.php/Arch_is_the_best -qO-| sed -n ':b;n;s/id="Translations"//;Tb;:d;n;s/id="Links"//;t;p;bd'|sed 's/<[^>]*>//g'|sed 'N;s/\n/: /;N;N;s/\n//g'<br />
</pre><br />
<br />
<br />
'''brainf*ck''' - Doesn't the language name explain it?<br />
++>++++++>+++++<+[>[->+<]<->++++++++++<]>>.<[-]>[-<++>]<br />
<----------------.---------------.+++++.<+++[-<++++++++++>]<.<br />
>>+.++++++++++.<<.>>+.------------.---.<<.>>---.<br />
+++.++++++++++++++.+.<<+.[-]++++++++++.<br />
<br />
<br />
'''C''' - Note the three space indenting used in this project, much like that used by other superior beings.<br />
#include <stdio.h><br />
#include <stdlib.h><br />
int main(void) <br />
{<br />
puts("Arch is the best!");<br />
return EXIT_SUCCESS;<br />
}<br />
<br />
<br />
'''C#''' - Intended to be a simple, modern, general-purpose, object-oriented programming language.<br />
using System;<br />
public class ArchIsTheBest<br />
{<br />
static public void Main ()<br />
{<br />
Console.WriteLine ("Arch is the best!");<br />
}<br />
}<br />
<br />
<br />
'''C++''' - Arch == Linux++<br />
#include <iostream><br />
#include <cstdlib><br />
int main ()<br />
{<br />
std::cout << "Arch is the best!" << std::endl;<br />
return EXIT_SUCCESS;<br />
}<br />
<br />
<br />
'''CoffeeScript''' - A programming language that transcompiles to JavaScript.<br />
alert 'Arch is the best!'<br />
<br />
<br />
'''Clojure''' - A Lisp dialect that runs on the JVM.<br />
(def translations {"english" "Arch is the best!",<br />
"german" "Arch ist das Beste!",<br />
"australian" "Arch is fair dinkum, mate!",<br />
"h4x0r" "arhc 51 7he be57!",<br />
"spanish" "¡Arch es el mejor!"})<br />
<br />
(defn arch-is-the-best<br />
"Asks for a language and prints the corresponding translation. <br />
Loops until input is 'quit'"<br />
[]<br />
(println "Available languages: ")<br />
(doseq [language (keys translations)]<br />
(println (str "\t" language)))<br />
(flush)<br />
(loop []<br />
(print "Enter language, or quit: ")<br />
(flush)<br />
(let [input (. (read-line) toLowerCase)]<br />
(if (= input "quit")<br />
(println "Goodbye!")<br />
(do<br />
(println (translations input "Bad input!"))<br />
(recur))))))<br />
<br />
<br />
'''Common Lisp''' - Tested on SBCL, feel free to add more of the translations.<br />
#!/usr/bin/sbcl --script<br />
(defparameter *best-list* '((English "Arch is the best!")<br />
(Chinese "Arch, 她出类拔萃!")<br />
(German "Arch ist das Beste!")<br />
(Greek "Το Arch είναι το καλύτερο!")))<br />
(defun aitb ()<br />
(format t "Available languages: ~{~{~@(~a~)~*~}~^, ~}.~%" *best-list*)<br />
(loop for input = (progn (format t "~&Input the desired language, (or 'quit'): ~%")<br />
(force-output)<br />
(read-line))<br />
if (string-equal input "quit")<br />
do (loop-finish)<br />
else<br />
do (let ((language-def<br />
(assoc input *best-list*<br />
:key (lambda (lang) (symbol-name lang))<br />
:test #'string-equal)))<br />
(if language-def<br />
(format t "~&~A~%" (second language-def))<br />
(format t "~&Invalid language.~%"))))<br />
(format t "~&May the Arch be with you!~%"))<br />
(aitb)<br />
<br />
<br />
'''Common Lisp (Alternate)''' - Should run on any implementation (Clisp, Allegro, SBCL...)<br />
(princ "Arch is the best!")<br />
<br />
<br />
'''Erlang''' - A concurrent, garbage-collected programming language and runtime system.<br />
-module(arch).<br />
-export([is_the_best/0]).<br />
is_the_best() -> io:fwrite("Arch is the best!\n").<br />
<br />
<br />
'''Forth''' - Stack-based language.<br />
." Arch is the best" cr -- kiss way<br />
<br />
<br />
'''Genie''' - A new programming language, that allows for a more modern programming style while being able to effortlessly create and use GObjects natively. <br />
init<br />
print "Arch is the best"<br />
<br />
<br />
'''Gjs''' - A Javascript binding for GNOME. It's mainly based on Spidermonkey javascript engine and the GObject introspection framework.<br />
#!/usr/bin/env gjs<br />
print ('Arch is the best');<br />
<br />
<br />
'''Go''' - A language created by Google that's a love child between C, C++ and Python.<br />
package main<br />
<br />
import "fmt"<br />
<br />
func main() {<br />
fmt.Println("Arch is the best!")<br />
}<br />
<br />
<br />
'''Haskell''' - The language where IO is easy and unproblematic.<br />
main = putStrLn "Arch is the best!"<br />
<br />
<br />
'''HTML''' - A markup language used to create and define web pages and their content.<br />
<pre><br />
<!DOCTYPE html><br />
<html lang='en'><br />
<head><br />
<title>Arch is the best!</title><br />
</head><br />
<body><br />
<p>Arch is the best!</p><br />
</body><br />
</html><br />
</pre><br />
<br />
'''Io'''<br />
"Arch is the best!" println<br />
<br />
<br />
'''Java''' - An extremely portable language, this will run on pretty much anything, it might even run on your toaster!<br />
public class ArchIsTheBest {<br />
public static void main(String[] args) {<br />
System.out.println("Arch is the best!");<br />
}<br />
}<br />
<br />
<br />
'''JavaScript''' - Also known as ECMAScript, a prototype-based object-oriented scripting language. <br />
console.log('Arch is the best!');<br />
<br />
<br />
'''JavaScript (in a web browser)'''<br />
alert('Arch is the best!');<br />
<br />
<br />
'''LilyPond''' - A powerful music engraving program with an intuitive LaTeX-like input language.<br />
\version "2.12.3"<br />
\include "english.ly"<br />
\header { title = "Arch is the best!" }<br />
\score<br />
{<br />
<<<br />
\relative c' { c4 e g c \bar "||" }<br />
\addlyrics { Arch is the best! }<br />
>><br />
}<br />
<br />
<br />
'''LOLCODE''' - Why not?<br />
HAI<br />
CAN HAS STDIO?<br />
VISIBLE "ARCH IS TEH PWNZ LOL!"<br />
KTHXBYE<br />
<br />
<br />
'''Lua''' - A lightweight, extensible programming language.<br />
if io.popen("uname -r"):read():match("ARCH") then print("Arch is the best") else print("Get the Arch") end<br />
<br />
<br />
'''Objective-C''' - A reflective, object-oriented programming language that adds Smalltalk-style messaging to the C programming language.<br />
NSLog(@"Arch is the best!");<br />
<br />
<br />
'''OCaml''' - The main implementation of the Caml programming language.<br />
print_endline "Arch is the best!"<br />
<br />
<br />
'''Perl''' - A high-level, general-purpose, interpreted, dynamic programming language.<br />
#!/usr/bin/perl<br />
print "Arch is the best!\n";<br />
<br />
<br />
'''PHP''' - A general-purpose scripting language.<br />
<?php<br />
echo "Arch is the best!\n";<br />
?> <br />
<br />
<br />
'''Pixilang''' - Make me pixels.<br />
print("Arch is the best!",0,0,#1897D1)<br />
frame<br />
<br />
<br />
'''Portable GNU assembler''' - as -o arch.o arch.s && ld -o arch -O0 arch.o<br />
<br />
.section .data<br />
archIsBest: <br />
.ascii "Arch is the best!\n"<br />
archIsBest_len:<br />
.long . - archIsBest<br />
.section .text<br />
.globl _start<br />
_start:<br />
xorl %ebx, %ebx<br />
movl $4, %eax <br />
xorl %ebx, %ebx<br />
incl %ebx <br />
leal archIsBest, %ecx<br />
movl archIsBest_len, %edx <br />
int $0x80 <br />
xorl %eax, %eax<br />
incl %eax<br />
xorl %ebx, %ebx <br />
int $0x80<br />
<br />
<br />
'''Processing''' - An open source programming language and IDE built for the electronic arts and visual design.<br />
println("Arch is the best!");<br />
<br />
<br />
'''Prolog''' - A general purpose logic programming language associated with artificial intelligence and computational linguistics.<br />
format('Arch is the best~n',[]).<br />
<br />
<br />
'''Python''' - A general-purpose high-level programming language.<br />
#!/usr/bin/env python3<br />
print('Arch is the best!')<br />
<br />
<br />
'''QBASIC''' - An interpreter for a variant of the BASIC programming language which is based on QuickBASIC.<br />
PRINT "Arch is the best!"<br />
<br />
<br />
'''R''' - A language for statistical computing (and much more!).<br />
archIsBest <- function() { cat("Arch is the best!\n") }<br />
archIsBest()<br />
<br />
<br />
'''Ruby''' - A dynamic, reflective, general purpose object-oriented programming language.<br />
#!/usr/bin/ruby -w<br />
puts 'Arch is the best!'<br />
<br />
<br />
'''Scheme''' - A dialect of Lisp.<br />
(display "Arch is the best!\n")<br />
<br />
<br />
'''Seed''' - A library and interpreter, dynamically bridging the WebKit JavaScriptCore engine, with the GNOME platform.<br />
#!/usr/bin/env seed<br />
print ('Arch is the best');<br />
<br />
<br />
'''Shoes''' - A Ruby version using Shoes for a GUI<br />
Shoes.app :width => 135, :height => 30 do <br />
para "Arch is the Best!"<br />
end<br />
<br />
<br />
'''SQL''' - Structured Query Language, the query language for relational databases<br />
SELECT 'Arch is the best!';<br />
SELECT 'Arch is the best!' from dual; -- for Oracle DB<br />
<br />
<br />
'''Standard ML''' - A general-purpose, modular, functional programming language with compile-time type checking and type inference.<br />
print "Arch is the best!\n"<br />
<br />
<br />
'''Tcl/Tk''' - A scripting language that is commonly used for rapid prototyping, scripted applications, GUIs and testing.<br />
#!/usr/bin/env tclsh<br />
puts "Arch is the best!"<br />
<br />
<br />
'''Vala''' - "Vala is a new programming language that aims to bring modern programming language features to GNOME developers without imposing any additional runtime requirements and without using a different ABI compared to applications and libraries written in C"<br />
void main(string[] args) {<br />
stdout.printf("\nArch is the best!\n\n");<br />
}<br />
<br />
<br />
''' Wiring (Arduino)''' - Built on Processing, the open source programming language developed at the Massachusetts Institute of Technology.<br />
void setup() <br />
{<br />
Serial.begin(9600); <br />
}<br />
void loop() <br />
{ <br />
Serial.print("Arch is the best!");<br />
}<br />
<br />
<br />
''' X11 ''' - X11 is an architecture independent system for display of graphical user interfaces.<br />
#include <stdio.h><br />
#include <stdlib.h><br />
#include <string.h><br />
<br />
#include <X11/Xlib.h><br />
<br />
int main()<br />
{<br />
Display *d;<br />
Window w;<br />
XEvent e;<br />
int s;<br />
<br />
if (!(d = XOpenDisplay(NULL))) {<br />
fprintf(stderr, "Couldn't open display, but Arch is the best!\n");<br />
exit(1);<br />
}<br />
<br />
s = DefaultScreen(d);<br />
w = XCreateSimpleWindow(d, RootWindow(d,s), 0, 0, 110, 20, 0, <br />
0, WhitePixel(d,s));<br />
XSelectInput(d, w, ExposureMask | KeyPressMask);<br />
XMapWindow(d,w);<br />
<br />
while (1) {<br />
XNextEvent(d, &e);<br />
if (e.type == Expose) {<br />
XDrawString(d, w, DefaultGC(d, s), 5, 15, "Arch is the best!", 17);<br />
}<br />
}<br />
<br />
XCloseDisplay(d);<br />
return 0;<br />
}<br />
<br />
==Translations==<br />
'''Arabic'''<br />
ارتش هو الأفضل<br />
<br />
'''Australian'''<br />
Arch is fair dinkum, mate!<br />
<br />
'''Bahasa Indonesia'''<br />
Arch terbaik!<br />
<br />
'''Basque'''<br />
Arch onena da!<br />
<br />
'''Belarusian'''<br />
Арч - самы лепшы!<br />
<br />
'''Bengali'''<br />
আর্চ সবচেয়ে ভালো!<br />
<br />
'''Binary ASCII'''<br />
0100000101110010011000110110100000100000011010010111001100100000011101000110100001100101001000000110001001100101011100110111010000100001<br />
<br />
'''British'''<br />
Arch is simply spiffing.<br />
<br />
'''Bulgarian'''<br />
Арч е най-добрият!<br />
<br />
'''Chinese (Simplified)'''<br />
Arch 最棒了!<br />
<br />
'''Ancient Chinese'''<br />
阿祺,盡善矣。<br />
<br />
'''Chinese (Taobao Style - 淘宝体)'''<br />
Arch,好评哦,亲!<br />
<br />
'''Czech'''<br />
Arch je nejlepší!<br />
<br />
'''Danish'''<br />
Arch er bedst!<br />
<br />
'''Desrever (Reversed)'''<br />
!tseb eht si hcrA<br />
<br />
'''Dutch'''<br />
Arch is de beste!<br />
<br />
'''Finnish'''<br />
Arch on paras!<br />
<br />
'''Filipino'''<br />
Mabuhay ang Arch!<br />
<br />
'''French'''<br />
Arch est le meilleur!<br />
<br />
'''Galician'''<br />
Arch é o mellor!<br />
<br />
'''German'''<br />
Arch ist das Beste!<br />
<br />
'''Greek'''<br />
Το Arch είναι το καλύτερο!<br />
<br />
'''h4x0r'''<br />
Arch 15 7h3 b357!<br />
<br />
'''Hantec'''<br />
Arch je nejbetélnější!<br />
<br />
'''Hebrew'''<br />
ארצ' זה הכי אחי!<br />
<br />
'''Hexadecimal ASCII'''<br />
4172636820697320746865206265737421<br />
<br />
'''Hindi'''<br />
आर्ख सब से अच्छा है ।<br />
<br />
'''Hungarian'''<br />
Az Arch a legjobb!<br />
<br />
'''Irish'''<br />
Arch é is fearr!<br />
<br />
'''Italian'''<br />
Arch è il migliore!<br />
<br />
'''Japanese'''<br />
Archが一番ですよ!<br />
<br />
'''Kazakh'''<br />
Арч - ең жақсы!<br />
<br />
'''Latin'''<br />
Arch optimus est!<br />
<br />
'''Latvian'''<br />
Arch ir labākais!<br />
<br />
'''Lithuanian'''<br />
Arch yra geriausias!<br />
<br />
'''Marathi'''<br />
आर्च सगळ्यात भारी आहे!<br />
<br />
'''Norwegian'''<br />
Arch er best!<br />
<br />
'''Pig Latin'''<br />
Archway isway ethay estbay!<br />
<br />
'''Polish'''<br />
Arch jest najlepszy!<br />
<br />
'''Portuguese'''<br />
Arch é o melhor!<br />
<br />
'''Québécois'''<br />
Arch est le plus meilleure du monde!<br />
<br />
'''Romanian'''<br />
Аrch e cel mai bun!<br />
<br />
'''Russian'''<br />
Арч - лучший!<br />
<br />
'''Serbian'''<br />
Arch je najbolji!<br />
<br />
'''Singaporean'''<br />
Arch the best lah!<br />
<br />
'''Slovenian'''<br />
Arch je najboljši!<br />
<br />
'''Spanish'''<br />
¡Arch es el mejor!<br />
<br />
'''Spanish (Argentina)'''<br />
- AKA ''"Casteshano"''<br />
Arch es una mazza!!<br />
<br />
'''Swedish'''<br />
Arch är bäst!<br />
<br />
'''Fikonspråket'''<br />
Firch Arkon fir äkon fist bäkon<br />
<br />
'''Turkish'''<br />
Arch en iyisidir!<br />
<br />
'''Tamil'''<br />
ஆர்ச்சே சிறந்தது!<br />
<br />
'''Ukrainian'''<br />
Arch є найкращий!<br />
<br />
'''Vietnamese'''<br />
Arch là tốt nhất!<br />
<br />
'''Morse Code'''<br />
.- .-. -.-. .... / .. ... / - .... . / -... . ... -<br />
<br />
'''Braille'''<br />
⠁⠗⠉⠓⠀⠊⠎⠀⠮⠀⠃⠑⠎⠞⠲<br />
<br />
'''Base64'''<br />
QXJjaCBpcyB0aGUgYmVzdCEK<br />
<br />
'''URL Encoded'''<br />
Arch%20is%20the%20best!<br />
<br />
'''ROT13'''<br />
Nepu vf gur orfg!<br />
<br />
'''Upside Down'''<br />
¡ʇsǝq ǝɥʇ s! ɥɔɹ∀<br />
<br />
== Links ==<br />
<br />
* [http://bbs.archlinux.org/viewtopic.php?id=47306 forum Thread]</div>Guillehttps://wiki.archlinux.org/index.php?title=ASUS_Eee_PC_901&diff=165909ASUS Eee PC 9012011-10-15T08:19:30Z<p>Guille: /* Option 2: Configure the stock kernel ACPI features */</p>
<hr />
<div>[[Category:ASUS (English)]]<br />
{{out of date}}<br />
This page contains instructions, tips, pointers, and links for installing and configuring Arch Linux on the ASUS EEE 901 PC.<br />
<br />
Most of the article can also be applied to eeepc-models which are similar to the 901 such the 901H, 1000 and 1000H. If you discover a configuration or software option applicable to a certain model that differs from what is described in this article, please add it, with a note about which model the suggestion pertains to.<br />
<br />
== Install Tips for the Asus Eee PC ==<br />
<br />
This wiki page supplements these pages: '''[[Beginners Guide]]''', the '''[[Official Arch Linux Install Guide|Official Install Guide]]''', and '''[[Installing Arch Linux on the Asus EEE PC]]'''. Please refer to those guides ''first'' before following the eeepc-specific pointers on this page.<br />
<br />
Most of this information is from the Arch Forum EEE 901 [http://bbs.archlinux.org/viewtopic.php?id=53464 thread]. Consult this thread, and other resources on the Arch forum, for more details and discussion.<br />
<br />
== Kernel Installation and configuration == <br />
<br />
Follow the Arch Linux installation Guide to install the latest stock distribution from USB media or CDROM. Install the '''BASE''' and '''DEVEL''' package categories. Reboot your PC.<br />
<br />
'''Note''': The wireless driver (rt2860sta) does not seem to work with the latest linux kernel (2.26.32). The current arch release (2009-8) still uses the 2.26.30 kernel. Install arch using the '''core''' images, rather than netinstall. This will install the 2.26.30 linux kernel, rather than downloading the latest kernel from the repositories. Then, after rebooting, and before upgrading any package, include <br />
IgnorePkg=kernel26<br />
in /etc/pacman.conf, to avoid upgrading the kernel.<br />
<br />
As of the advent of kernel 2.6.30, all drivers needed for the EEE 901 are included in the Arch Linux stock kernel. In case you would like to compile your own kernel, make sure that you build the following modules:<br />
<br />
Network card:<br />
Device Drivers - Ethernet (1000Mbit) - Atheros L1E Gigabit Ethernet support<br />
WiFi card:<br />
Device Drivers - Staging Drivers - Ralink 2860<br />
Eee Hotkey stuff:<br />
Device Drivers - X86 Platform Specific Device Drivers - EeePC Hotkey Driver<br />
Video Camera:<br />
Device Drivers - Multimedia Devices - Video Capture adapters - V4L USB devices - USB Video Class (UVC)<br />
Sound Card:<br />
Device Drivers - Sound card support - ALSA - PCI Sound devices - Intel HDA - Build Realtek HDA codec<br />
Touchpad:<br />
Device Drivers - Input Device support - Mice - PS/2 mouse - Synaptics & Elantech PS/2 protocol ext.<br />
<br />
For flawless operation with the eee-control FSB frequency changing mechanism, you have to compile<br />
Device Drivers - I2C support - I2C Hardware Bus support - Intel 82801 (ICH)<br />
as a _module_ (thanks for the hint, dieghen89, even though I never got to include it...)<br />
<br />
For some tricks to speed up udev boot time, see below.<br />
<br />
Blind<br />
<br />
=== Using the Stock kernel ===<br />
This section gives some hints and clues about how to tweak the stock Arch Linux kernel for the EeePC 901. For more general information about building custom Arch Linux kernels, see [[Kernel Compilation]]. <br />
<br />
The stock kernel has some advantages over the custom kernel:<br />
<br />
* The ethernet driver is now available in stock kernel (called: ''Atheros L1E Gigabit Ethernet support''), so no external modules or patching needed<br />
<br />
* As of kernel 2.6.29 the Ralink wireless driver is [http://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=91980990527258a075361490cecadbb7356fc0d2 included] in the stock kernel (though it is still a work in progress). Just add the '''rt2860sta''' module to /etc/rc.conf and it works out of the box.<br />
<br />
* From kernel '''2.6.33''' on you only need to blacklist rt2800pci in /etc/rc.conf and wireless works flawlessly<br />
<br />
* It is likely that more Asus and EeePC-specific features will be included in future versions of the stock kernel, and current drivers will improve with each kernel release. (Word has it that Linus Torvalds himself bought an EeePc). Chances are that the stock kernel now includes the drivers and features you need for your EeePC.<br />
<br />
* The stock kernel, as part of the core repository, is always available and maintained in a number of mirror repositories.<br />
<br />
==== example .config ====<br />
Here is a sample kernel .config file created for the 1000H with the stock 2.6.27.7 kernel: [http://nopaste.info/3daf27d4f3_nl.html .config].<br />
<br />
You can take it as starting point to build your own kernel. Make sure that the filesystem types you want to use are configured (at the moment this configuration only contains ext2, compiled in, and ext3 as module).<br />
<br />
== OS Configuration ==<br />
<br />
To support the devices listed below, make sure the module '''eeepc_laptop''' is loaded on boot.<br />
<br />
To automatically all the modules needed (including bluetooth, if it is enabled in BIOS, and the ALSA sound drivers), enable autoloading in your /etc/rc.conf:<br />
<br />
MOD_AUTOLOAD="yes"<br />
<br />
=== Networking: Ethernet ===<br />
<br />
Ethernet (wired) network access should work right out of the box with precompiled kernels, or with '''atl1e''' module you built from AUR.<br />
<br />
=== Networking: Wireless ===<br />
From Kernel 3.0, The staging driver rt2860sta is replaced by mainline driver rt2800pci, and the staging drivers are deleted.<br />
<br />
After a bios-upgrade the wireless-card of the Eee PC will be disabled by default, so if you have any troubles with wlan check that it is enabled in the bios.<br />
<br />
To enable/disable the wireless card from the command line:<br />
<br />
# enable<br />
echo 1 > /sys/devices/platform/eeepc/wlan<br />
# disable<br />
echo 0 > /sys/devices/platform/eeepc/wlan<br />
<br />
For newer kernels enable/disable wireless the following way:<br />
<br />
# enable<br />
echo 1 > /sys/devices/platform/eeepc/rfkill/rfkill0/state<br />
# disable<br />
echo 0 > /sys/devices/platform/eeepc/rfkill/rfkill0/state<br />
<br />
The precompiled kernels listed above contain a [http://www.itwriting.com/blog/778-fixing-wi-fi-on-asus-eee-pc-901-with-linux.html patched] version of the wifi driver '''rt2860sta''' and it should work with both WEP and WPA. <br />
<br />
If you are compiling the '''rt2860sta''' kernel driver yourself, use the newest (1.8) version of the driver in AUR: http://aur.archlinux.org/packages.php?ID=14557. <br />
<br />
Make sure you have the '''wireless_tools''' package installed, also. You may need to manually download the package from a [[Mirror]] (look in ''core/os/i686/'') and install it locally (e.g. after moving it with a usb-stick to your eeePC) using [[Pacman#Other_Usage|Pacman]].<br />
<br />
There are reported some problems associating an AP with netcfg2 (WEP and open, WPA-PSK works ok). If you experience problems, try another connection manager, for example wicd works fine.<br />
pacman -S wicd<br />
<br />
If you experience problems with the Ralink driver and your connection manager, try using the following script to connect:<br />
<br />
#!/bin/bash<br />
<br />
case "$1" in<br />
start)<br />
sudo ifconfig ra0 up<br />
sudo wpa_supplicant -B -Dwext -ira0 -cwifi_up.conf<br />
sleep 3<br />
sudo dhcpcd ra0<br />
;;<br />
stop)<br />
sudo kill -15 `cat /var/run/dhcpcd-ra0.pid`<br />
sudo rm /var/run/wpa_supplicant/ra0<br />
sudo ifconfig ra0 down<br />
;;<br />
list)<br />
sudo ifconfig ra0 up<br />
sleep 1<br />
sudo iwlist ra0 scanning<br />
sudo ifconfig ra0 down<br />
;;<br />
restart)<br />
$0 stop<br />
$0 start<br />
;;<br />
*)<br />
echo "usage: $0 {start|stop|list|restart}" <br />
esac<br />
<br />
exit 0<br />
<br />
Here's a working example wpa_supplicant config file:<br />
<br />
ctrl_interface=/var/run/wpa_supplicant<br />
# change ap_scan to 2 if running into problems<br />
ap_scan=1<br />
fast_reauth=1<br />
eapol_version=1<br />
<br />
network={<br />
key_mgmt=NONE<br />
}<br />
<br />
network={<br />
ssid="WPA"<br />
scan_ssid=1<br />
proto=WPA<br />
key_mgmt=WPA-PSK<br />
pairwise=TKIP<br />
group=TKIP<br />
#psk="passphrase"<br />
psk=hexkey<br />
}<br />
<br />
network={<br />
ssid="WEP"<br />
scan_ssid=1<br />
key_mgmt=NONE<br />
#wep_key0="passphrase"<br />
wep_key0=hexkey<br />
wep_tx_keyidx=0<br />
}<br />
<br />
Your mileage may vary, but experience seems to show that the '''ap_scan=1''' parameter is critical. Try tweaking the other "header" settings, too, if you continue to experience problems.<br />
<br />
=== ACPI (Hotkeys) ===<br />
<br />
==== Option 1: Install the '''[http://aur.archlinux.org/packages.php?ID=23318 acpi-eeepc-generic]''' package from AUR ====<br />
<br />
For this package to work, make sure the '''eeepc_laptop''' and '''rfkill''' modules are loaded at boot.<br />
<br />
Consult the notes included with the install for instructions on configuring {{Codeline|/etc/conf.d/acpi-eeepc-generic.conf}}.<br />
<br />
This will enable all the ''Fn + xx'' keys and the four silver hotkey buttons buttons as configured in the default Xandros distribution, with some minor variations. Edit the {{Codeline|/etc/conf.d/acpi-eeepc-generic.conf}} file to change or modify the behavior of the function keys.<br />
<br />
==== Option 2: Configure the stock kernel ACPI features ====<br />
<br />
Enable the ASUS_LAPTOP (Device Drivers -> Misc Devices) switch in your kernel config and turn off ACPI_ASUS switch (Power managment options -> ACPI).<br />
<br />
To enable the FN keys, the WLAN and Camera on/off toggles, etc., activate the EEEPC_LAPTOP switch also (Device Drivers -> Misc Devices). <br />
<br />
You can use Robertek's PKGBUILD and files for '''acpi-www901''' at http://robertek.brevnov.net/files/linux/arch/acpi-eee901/ as a base to incorporate the stock kernel modules and ASUS OSD into the ACPI system.<br />
<br />
Note: The kernel interfaces {{Codeline|/proc/acpi/asus}} or {{Codeline|/proc/acpi/eee}} are not available with the '''eeepc_laptop''' module. The corresponding '''eeepc_laptop''' interfaces are files in: {{Codeline|/sys/devices/platform/eeepc/}}. You may need to edit some of the scripts under {{Codeline|/etc/acpi/}} to point to the correct paths.<br />
Also easier links to the interfaces can be found inside of /sys/class/ . For instance the first battery is in /sys/class/power_supply/BAT0/ .<br />
<br />
==== ASUS OSD ====<br />
<br />
Asus OSD is included as part of the '''acpi-eee901''' package. Simply add the command {{Codeline|asusosd &}} to your desktop manager startup script, or create the file {{Codeline|/etc/xdg/autostart/asusosd.desktop}} with these contents:<br />
<br />
[Desktop Entry]<br />
Encoding=UTF-8<br />
Name=ASUS OSD<br />
Comment=ASUS OSD<br />
Exec=/usr/bin/asusosd<br />
Terminal=false<br />
Type=Application<br />
StartupNotify=false<br />
Hidden=false<br />
<br />
=== Bluetooth ===<br />
<br />
Currently, Bluetooth is not enabled with the ''Fn + F2'' hotkey. To communicate with Bluetooth devices, make sure Bluetooth has been enabled in the BIOS.<br />
<br />
To enable/disable bluetooth from the command line :<br />
<br />
# enable<br />
echo 1 > /sys/devices/platform/eeepc/bt<br />
# disable<br />
echo 0 > /sys/devices/platform/eeepc/bt<br />
<br />
Install the '''bluez''' package. Make sure the '''bluetooth''' module is loaded.<br />
<br />
See the Arch Linux [[Bluetooth]] and [[Bluetooth Mouse]] wiki pages for more information about configuring and using Bluetooth devices.<br />
<br />
=== Webcam ===<br />
<br />
To enable/disable the camera:<br />
<br />
# enable<br />
echo 1 > /sys/devices/platform/eeepc/camera<br />
# disable<br />
echo 0 > /sys/devices/platform/eeepc/camera<br />
<br />
To record video and take photos, you may use '''cheese''' or the '''wxcam''' package (available in the ''edgy'' repository or AUR).<br />
<br />
pacman -S wxcam<br />
<br />
To simply test the camera, you may use {{Codeline|mplayer}}:<br />
<br />
mplayer -fps 15 tv://<br />
<br />
The webcam is reported to work with Skype.<br />
<br />
=== Audio ===<br />
<br />
Audio output is enabled with the default ALSA drivers distributed with the kernels. You may need to install the '''alsa-lib''' and '''alsa-utils''' packages to get full functionality.<br />
Make sure the '''snd-hda-intel''' module is loaded.<br />
<br />
Both the microphone and PC speakers should work out-of-the-box with current versions of the kernel and ALSA drivers. A common gotcha: if you're not getting any sound, did you run {{Codeline|alsamixer}} and unmute your channels?<br />
<br />
See the Arch Linux [[ALSA]] wiki page for more information about configuring and using ALSA.<br />
<br />
=== X ===<br />
<br />
''<font color="red">This section is out-of-date, and needs to be cleaned up.</font>''<br />
<br />
==== Video ====<br />
<br />
You will need the xf86-video-intel video driver:<br />
pacman -S xf86-video-intel<br />
<br />
To set-up the touchpad, (including two-fingers scrolling & tapping), just install xf86-input-synaptics (no xorg.conf required):<br />
pacman -S xf86-input-synaptics<br />
<br />
Some users have reported problems with vsync and the '''xf86-video-intel''' driver. These problems may be partially solved in the application (see this forum [http://bbs.archlinux.org/viewtopic.php?pid=416645#p416645 post].)<br />
<br />
===== Connecting an external Monitor =====<br />
<br />
The xrandr utility (part of Xorg) can be used to switch into screen modes appropriate either for the EeePC's LCD or an externally connected monitor. Running "xrandr -q" will show you the available output devices and the supported modes. Then run the tool as follows:<br />
<br />
xrandr --output LVDS --off --output VGA --auto # disable LCD, enable monitor<br />
xrandr --output LVDS --auto --output VGA --auto # enable both<br />
etc.<br />
<br />
Your monitor will probably support a bigger resolution than the LCD. To make use of that additional screen space, tell the X server to create an appropriately large framebuffer by adding the "Virtual" directive to the Screen/Display section in /etc/X11/xorg.conf:<br />
<br />
Section "Screen"<br />
Identifier "Screen0"<br />
Device "Card0"<br />
Monitor "Monitor0"<br />
DefaultDepth 24<br />
SubSection "Display"<br />
Viewport 0 0<br />
Depth 24<br />
Virtual 1600 1200 # max resolution is 1600x1200<br />
EndSubSection<br />
EndSection<br />
<br />
On the LCD, the additional space will be unused, but when switching to the external monitor, the screen will be. Note that some window managers (such as ratpoison) might need to be restarted to realize that the visible screen size has changed.<br />
<br />
===== Letterboxing with XRandR =====<br />
<br />
If you have set up your X server and kernel to use KMS you might have some trouble getting a 800x600 resolution letterboxed (centered) rather than stretched, which might be unpleasant in some programs that do not support 1024x600 such as older games. This is because with KMS the xrandr syntax is a bit different [https://bugs.freedesktop.org/show_bug.cgi?id=24331].<br />
To get a centered 800x600 visual field on your 1024x600 panel run:<br />
$ xrandr --output LVDS1 --set "scaling mode" "Center"<br />
$ xrandr -s 800x600<br />
Replace "800x600" with "1024x600" to go back to the native resolution.<br />
<br />
==== Mouse and Synaptics driver ====<br />
<br />
To enable the Synaptics drivers, first install the synaptics package:<br />
<br />
pacman -S synaptics<br />
<br />
You also need the evdev driver for Xorg:<br />
<br />
pacman -S xf86-input-evdev<br />
<br />
Then make these changes to {{Codeline|/etc/X11/xorg.conf}}:<br />
<br />
Section "ServerLayout"<br />
Identifier "ArchLinux"<br />
Screen 0 "Screen0"<br />
InputDevice "keyboard"<br />
InputDevice "mouse"<br />
'''InputDevice "synaptics"'''<br />
EndSection<br />
<br />
[...]<br />
<br />
Section "Files"<br />
'''# RgbPath "/usr/share/X11/rgb"'''<br />
ModulePath "/usr/lib/xorg/modules"<br />
FontPath "/usr/share/fonts/misc"<br />
FontPath "/usr/share/fonts/100dpi:unscaled"<br />
FontPath "/usr/share/fonts/75dpi:unscaled"<br />
FontPath "/usr/share/fonts/TTF"<br />
FontPath "/usr/share/fonts/Type1"<br />
EndSection<br />
<br />
Section "Module"<br />
Load "GLcore"<br />
Load "glx"<br />
Load "record"<br />
Load "dri"<br />
Load "extmod"<br />
Load "xtrap"<br />
Load "dbe"<br />
Load "freetype"<br />
'''Load "synaptics"'''<br />
EndSection<br />
<br />
[...]<br />
<br />
Section "InputDevice"<br />
Identifier "mouse"<br />
Driver "mouse"<br />
Option "Device" "/dev/input/mice"<br />
Option "Protocol" "IMPS/2"<br />
Option "Emulate3Buttons" "yes"<br />
Option "ZAxisMapping" "4 5"<br />
Option "CorePointer"<br />
EndSection<br />
<br />
'''Section "InputDevice"'''<br />
'''Identifier "synaptics"'''<br />
'''Driver "synaptics"'''<br />
'''Option "Device" "/dev/psaux"'''<br />
'''Option "Protocol" "auto-dev"'''<br />
'''Option "PalmDetect" "0"'''<br />
'''Option "SHMConfig" "true"'''<br />
'''Option "SendCoreEvents" "yes"'''<br />
'''Option "RBCornerButton" "0"'''<br />
'''Option "RTCornerButtom" "0"'''<br />
'''Option "TapButton1" "1"'''<br />
'''Option "TapButton2" "2"'''<br />
'''Option "TapButton3" "3"'''<br />
'''Option "AccelFactor" "0.0320"'''<br />
'''Option "MaxSpeed" "0.72"'''<br />
'''Option "MinSpeed" "0.6"'''<br />
'''Option "Emulate3Buttons" "true"'''<br />
'''Option "TouchPadOff" "0"'''<br />
'''Option "LBCornerButton" "2"'''<br />
'''Option "LeftEdge" "60"'''<br />
'''Option "RightEdge" "1070"'''<br />
'''Option "TopEdge" "90"'''<br />
'''Option "BottomEdge" "680"'''<br />
'''Option "VertTwoFingerScroll" "1"'''<br />
'''Option "HorizTwoFingerScroll" "1"'''<br />
'''Option "HorizScrollDelta" "20"'''<br />
'''Option "LockedDrags" "1"'''<br />
'''Option "CoastingSpeed" "0.13"'''<br />
'''Option "CircularScrolling" "1"'''<br />
'''Option "CircScrollTrigger" "8" # 8=Top Left Corner'''<br />
'''EndSection'''<br />
<br />
The latest version of the Elantech touchpad driver patch is available at http://arjan.opmeer.net/elantech/ or here [http://www.mac-how.net/ mac how to] You'll need to apply this patch to your kernel source, then recompile the kernel. This patch has been tested on the 2.6.27.6 and 2.6.27.7 kernels.<br />
<br />
====A complete working set Xorg/HAL config files====<br />
<br />
The latest version of {{Codeline|xserver}} recommends using the HAL subsystem to manage X device configurations, in place of {{Codeline|xorg.conf}}.<br />
<br />
If it isn't installed already, install HAL, then add '''hal''' to the list of daemons in your {{Codeline|/etc/rc.conf}} file:<br />
<br />
pacman -s hal<br />
<br />
Create the following HAL device configuration files for X:<br />
<br />
'''File:''' /etc/hal/fdi/policy/10-keymap.fdi (configure the '''input.xkb.layout''' parameter to match your locale)<br />
<?xml version="1.0" encoding="ISO-8859-1"?> <!-- -*- SGML -*- --><br />
<deviceinfo version="0.2"><br />
<device><br />
<match key="info.capabilities" contains="input.keymap"><br />
<append key="info.callouts.add" type="strlist">hal-setup-keymap</append><br />
</match><br />
<br />
<match key="info.capabilities" contains="input.keys"><br />
<merge key="input.xkb.rules" type="string">base</merge><br />
<br />
<merge key="input.xkb.model" type="string">keyboard</merge><br />
<match key="/org/freedesktop/Hal/devices/computer:system.kernel.name" string="Linux"><br />
<merge key="input.xkb.model" type="string">evdev</merge><br />
</match><br />
<br />
<merge key="input.xkb.layout" type="string">se</merge><br />
<merge key="input.xkb.variant" type="string" /><br />
<merge key="input.xkb.options" type="string">ctrl:nocaps</merge><br />
</match><br />
</device><br />
</deviceinfo><br />
<br />
<br />
'''File:''' /etc/hal/fdi/policy/9-x11-elantech.fdi (configuration for the Elantech touchpad -- <font color="red">could be improved</font>)<br />
<?xml version="1.0" encoding="ISO-8859-1"?><br />
<deviceinfo version="0.2"><br />
<device><br />
<match key="info.capabilities" contains="input.touchpad"><br />
<match key="info.product" contains="Elantech Touchpad"><br />
<merge key="input.x11_driver" type="string">synaptics</merge><br />
<merge key="input.x11_options.SHMConfig" type="string">on</merge><br />
<merge key="input.x11_options.MaxSpeed" type="string">1.00</merge><br />
<merge key="input.x11_options.MinSpeed" type="string">0.75</merge><br />
<merge key="input.x11_options.Emulate3Buttons" type="string">on</merge><br />
<merge key="input.x11_options.VertTwoFingerScroll" type="string">1</merge><br />
<merge key="input.x11_options.HorizTwoFingerScroll" type="string">1</merge><br />
<merge key="input.x11_options.TapButton1" type="string">1</merge><br />
<merge key="input.x11_options.TapButton2" type="string">2</merge><br />
<merge key="input.x11_options.TapButton3" type="string">3</merge><br />
<merge key="input.x11_options.LockedDrags" type="string">1</merge><br />
</match><br />
</match><br />
</device><br />
</deviceinfo><br />
<br />
'''File:''' /etc/X11/xorg.conf<br />
Section "ServerLayout"<br />
Identifier "ArchLinux"<br />
Screen "Screen0"<br />
EndSection<br />
<br />
Section "Device"<br />
Identifier "Device0"<br />
Driver "intel"<br />
Option "XAANoOffScreenPixmaps" "true"<br />
Option "AccelMethod" "XAA"<br />
EndSection<br />
<br />
Section "Screen"<br />
Identifier "Screen0"<br />
Device "Device0"<br />
EndSection<br />
The {{Codeline|xorg.conf}} file is no longer strictly necessary, but some features, such as windowtitles in wmii, run faster if configured here.<br />
<br />
==== Miscellaneous ====<br />
If you do not have an xorg.conf file, and want to configure the keyboard layout on the fly:<br />
<br />
# Set keyboard to cz with qwerty<br />
setxkbmap cz qwerty<br />
<br />
To configure the mouse speed:<br />
# Set mouse movement and acceleration (you need to tweak this to your needs)<br />
xset m 2 1<br />
<br />
== Performance Tips ==<br />
<br />
The following tweaks can be used to improve performance and/or power consumption.<br />
<br />
=== Speedstep ===<br />
<br />
Speedstep is included by default in the Linux 2.6.x kernel.<br />
<br />
The '''zen-eee901''' kernels contain the Speedstep modules. Add '''acpi-cpufreq''' to your MODULES list in {{Codeline|/etc/rc.conf}} to enable it on boot, or execute:<br />
<br />
modprobe acpi-cpufreq<br />
<br />
See http://rffr.de/acpi for more information.<br />
<br />
For more information on overclocking the Asus EEE PC line, see http://wiki.eeeuser.com/howto:overclockfsb<br />
<br />
{{Note|Speedstep is applicable to the 901 as it's CPU is of the Intel Atom family. The eee 900 and 904 use an Intel Celeron M CPU and so should use the p4-clockmod module instead. }}<br />
<br />
=== Faster boot and udev ===<br />
To safe a little time with udev during boot, you can edit your '''/etc/rc.conf''' and disable MOD_AUTOLOAD. It should look like this<br />
<br />
MOD_AUTOLOAD="no"<br />
MODULES=(atl1e rt2860sta rfkill acpi-cpufreq pciehp intel_agp snd-hda-intel !snd-pcsp bluetooth)<br />
<br />
In addition, it may be helpful to do the following:<br />
<br />
MODULES=( ... !eeepc_laptop ... )<br />
<br />
and then load that module in the background in '''rc.local''':<br />
<br />
modprobe eeepc_laptop &<br />
<br />
(insert that line)<br />
<br />
=== Boot Booster ===<br />
<br />
Enable Asus Boot Booster feature in BIOS to skip some tests during boot.<br />
<br />
"Boot">"Boot Settings Configuration">"Quick Boot">[Enabled]<br />
<br />
== Appendix ==<br />
=== Hardware Overview for 901 ===<br />
<br />
The following hardware is used in the Asus EEE 901:<br />
<br />
* CPU: 1.6GHz N270 Intel Atom<br />
* RAM: 1024 MB, DDR2 667<br />
* ports: 3x USB, VGA<br />
* LAN/ethernet: Atheros L1e 1000 Mbit<br />
* WLAN: Ralink rt2860 802.11b/g/n<br />
* Bluetooth, webcam 1.3 Mpix<br />
* Card reader: SD, SDHC, MMC<br />
* touchpad: "Multi-touch" elantech<br />
* display: 1024x600 8.9"<br />
* weight: 1 kg<br />
* battery: Li-ion, 6600mAh<br />
* HDD: 4 + 8GB, empty slot for 1,8" (remove of the 8GB module needed)<br />
* Graphics: Intel GM950 core, 945GME chipset<br />
<br />
00:00.0 Host bridge: Intel Corporation Mobile 945GME Express Memory Controller Hub (rev 03)<br />
00:02.0 VGA compatible controller: Intel Corporation Mobile 945GME Express Integrated Graphics Controller (rev 03)<br />
00:02.1 Display controller: Intel Corporation Mobile 945GM/GMS/GME, 943/940GML Express Integrated Graphics Controller (rev 03)<br />
00:1b.0 Audio device: Intel Corporation 82801G (ICH7 Family) High Definition Audio Controller (rev 02)<br />
00:1c.0 PCI bridge: Intel Corporation 82801G (ICH7 Family) PCI Express Port 1 (rev 02)<br />
00:1c.1 PCI bridge: Intel Corporation 82801G (ICH7 Family) PCI Express Port 2 (rev 02)<br />
00:1c.2 PCI bridge: Intel Corporation 82801G (ICH7 Family) PCI Express Port 3 (rev 02)<br />
00:1c.3 PCI bridge: Intel Corporation 82801G (ICH7 Family) PCI Express Port 4 (rev 02)<br />
00:1d.0 USB Controller: Intel Corporation 82801G (ICH7 Family) USB UHCI Controller #1 (rev 02)<br />
00:1d.1 USB Controller: Intel Corporation 82801G (ICH7 Family) USB UHCI Controller #2 (rev 02)<br />
00:1d.2 USB Controller: Intel Corporation 82801G (ICH7 Family) USB UHCI Controller #3 (rev 02) <br />
00:1d.3 USB Controller: Intel Corporation 82801G (ICH7 Family) USB UHCI Controller #4 (rev 02)<br />
00:1d.7 USB Controller: Intel Corporation 82801G (ICH7 Family) USB2 EHCI Controller (rev 02)<br />
00:1e.0 PCI bridge: Intel Corporation 82801 Mobile PCI Bridge (rev e2)<br />
00:1f.0 ISA bridge: Intel Corporation 82801GBM (ICH7-M) LPC Interface Bridge (rev 02)<br />
00:1f.2 IDE interface: Intel Corporation 82801GBM/GHM (ICH7 Family) SATA IDE Controller (rev 02)<br />
00:1f.3 SMBus: Intel Corporation 82801G (ICH7 Family) SMBus Controller (rev 02)<br />
01:00.0 Network controller: RaLink Device 0781</div>Guillehttps://wiki.archlinux.org/index.php?title=ASUS_Eee_PC_901&diff=165908ASUS Eee PC 9012011-10-15T08:15:58Z<p>Guille: /* Option 2: Configure the stock kernel ACPI features */</p>
<hr />
<div>[[Category:ASUS (English)]]<br />
{{out of date}}<br />
This page contains instructions, tips, pointers, and links for installing and configuring Arch Linux on the ASUS EEE 901 PC.<br />
<br />
Most of the article can also be applied to eeepc-models which are similar to the 901 such the 901H, 1000 and 1000H. If you discover a configuration or software option applicable to a certain model that differs from what is described in this article, please add it, with a note about which model the suggestion pertains to.<br />
<br />
== Install Tips for the Asus Eee PC ==<br />
<br />
This wiki page supplements these pages: '''[[Beginners Guide]]''', the '''[[Official Arch Linux Install Guide|Official Install Guide]]''', and '''[[Installing Arch Linux on the Asus EEE PC]]'''. Please refer to those guides ''first'' before following the eeepc-specific pointers on this page.<br />
<br />
Most of this information is from the Arch Forum EEE 901 [http://bbs.archlinux.org/viewtopic.php?id=53464 thread]. Consult this thread, and other resources on the Arch forum, for more details and discussion.<br />
<br />
== Kernel Installation and configuration == <br />
<br />
Follow the Arch Linux installation Guide to install the latest stock distribution from USB media or CDROM. Install the '''BASE''' and '''DEVEL''' package categories. Reboot your PC.<br />
<br />
'''Note''': The wireless driver (rt2860sta) does not seem to work with the latest linux kernel (2.26.32). The current arch release (2009-8) still uses the 2.26.30 kernel. Install arch using the '''core''' images, rather than netinstall. This will install the 2.26.30 linux kernel, rather than downloading the latest kernel from the repositories. Then, after rebooting, and before upgrading any package, include <br />
IgnorePkg=kernel26<br />
in /etc/pacman.conf, to avoid upgrading the kernel.<br />
<br />
As of the advent of kernel 2.6.30, all drivers needed for the EEE 901 are included in the Arch Linux stock kernel. In case you would like to compile your own kernel, make sure that you build the following modules:<br />
<br />
Network card:<br />
Device Drivers - Ethernet (1000Mbit) - Atheros L1E Gigabit Ethernet support<br />
WiFi card:<br />
Device Drivers - Staging Drivers - Ralink 2860<br />
Eee Hotkey stuff:<br />
Device Drivers - X86 Platform Specific Device Drivers - EeePC Hotkey Driver<br />
Video Camera:<br />
Device Drivers - Multimedia Devices - Video Capture adapters - V4L USB devices - USB Video Class (UVC)<br />
Sound Card:<br />
Device Drivers - Sound card support - ALSA - PCI Sound devices - Intel HDA - Build Realtek HDA codec<br />
Touchpad:<br />
Device Drivers - Input Device support - Mice - PS/2 mouse - Synaptics & Elantech PS/2 protocol ext.<br />
<br />
For flawless operation with the eee-control FSB frequency changing mechanism, you have to compile<br />
Device Drivers - I2C support - I2C Hardware Bus support - Intel 82801 (ICH)<br />
as a _module_ (thanks for the hint, dieghen89, even though I never got to include it...)<br />
<br />
For some tricks to speed up udev boot time, see below.<br />
<br />
Blind<br />
<br />
=== Using the Stock kernel ===<br />
This section gives some hints and clues about how to tweak the stock Arch Linux kernel for the EeePC 901. For more general information about building custom Arch Linux kernels, see [[Kernel Compilation]]. <br />
<br />
The stock kernel has some advantages over the custom kernel:<br />
<br />
* The ethernet driver is now available in stock kernel (called: ''Atheros L1E Gigabit Ethernet support''), so no external modules or patching needed<br />
<br />
* As of kernel 2.6.29 the Ralink wireless driver is [http://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=91980990527258a075361490cecadbb7356fc0d2 included] in the stock kernel (though it is still a work in progress). Just add the '''rt2860sta''' module to /etc/rc.conf and it works out of the box.<br />
<br />
* From kernel '''2.6.33''' on you only need to blacklist rt2800pci in /etc/rc.conf and wireless works flawlessly<br />
<br />
* It is likely that more Asus and EeePC-specific features will be included in future versions of the stock kernel, and current drivers will improve with each kernel release. (Word has it that Linus Torvalds himself bought an EeePc). Chances are that the stock kernel now includes the drivers and features you need for your EeePC.<br />
<br />
* The stock kernel, as part of the core repository, is always available and maintained in a number of mirror repositories.<br />
<br />
==== example .config ====<br />
Here is a sample kernel .config file created for the 1000H with the stock 2.6.27.7 kernel: [http://nopaste.info/3daf27d4f3_nl.html .config].<br />
<br />
You can take it as starting point to build your own kernel. Make sure that the filesystem types you want to use are configured (at the moment this configuration only contains ext2, compiled in, and ext3 as module).<br />
<br />
== OS Configuration ==<br />
<br />
To support the devices listed below, make sure the module '''eeepc_laptop''' is loaded on boot.<br />
<br />
To automatically all the modules needed (including bluetooth, if it is enabled in BIOS, and the ALSA sound drivers), enable autoloading in your /etc/rc.conf:<br />
<br />
MOD_AUTOLOAD="yes"<br />
<br />
=== Networking: Ethernet ===<br />
<br />
Ethernet (wired) network access should work right out of the box with precompiled kernels, or with '''atl1e''' module you built from AUR.<br />
<br />
=== Networking: Wireless ===<br />
From Kernel 3.0, The staging driver rt2860sta is replaced by mainline driver rt2800pci, and the staging drivers are deleted.<br />
<br />
After a bios-upgrade the wireless-card of the Eee PC will be disabled by default, so if you have any troubles with wlan check that it is enabled in the bios.<br />
<br />
To enable/disable the wireless card from the command line:<br />
<br />
# enable<br />
echo 1 > /sys/devices/platform/eeepc/wlan<br />
# disable<br />
echo 0 > /sys/devices/platform/eeepc/wlan<br />
<br />
For newer kernels enable/disable wireless the following way:<br />
<br />
# enable<br />
echo 1 > /sys/devices/platform/eeepc/rfkill/rfkill0/state<br />
# disable<br />
echo 0 > /sys/devices/platform/eeepc/rfkill/rfkill0/state<br />
<br />
The precompiled kernels listed above contain a [http://www.itwriting.com/blog/778-fixing-wi-fi-on-asus-eee-pc-901-with-linux.html patched] version of the wifi driver '''rt2860sta''' and it should work with both WEP and WPA. <br />
<br />
If you are compiling the '''rt2860sta''' kernel driver yourself, use the newest (1.8) version of the driver in AUR: http://aur.archlinux.org/packages.php?ID=14557. <br />
<br />
Make sure you have the '''wireless_tools''' package installed, also. You may need to manually download the package from a [[Mirror]] (look in ''core/os/i686/'') and install it locally (e.g. after moving it with a usb-stick to your eeePC) using [[Pacman#Other_Usage|Pacman]].<br />
<br />
There are reported some problems associating an AP with netcfg2 (WEP and open, WPA-PSK works ok). If you experience problems, try another connection manager, for example wicd works fine.<br />
pacman -S wicd<br />
<br />
If you experience problems with the Ralink driver and your connection manager, try using the following script to connect:<br />
<br />
#!/bin/bash<br />
<br />
case "$1" in<br />
start)<br />
sudo ifconfig ra0 up<br />
sudo wpa_supplicant -B -Dwext -ira0 -cwifi_up.conf<br />
sleep 3<br />
sudo dhcpcd ra0<br />
;;<br />
stop)<br />
sudo kill -15 `cat /var/run/dhcpcd-ra0.pid`<br />
sudo rm /var/run/wpa_supplicant/ra0<br />
sudo ifconfig ra0 down<br />
;;<br />
list)<br />
sudo ifconfig ra0 up<br />
sleep 1<br />
sudo iwlist ra0 scanning<br />
sudo ifconfig ra0 down<br />
;;<br />
restart)<br />
$0 stop<br />
$0 start<br />
;;<br />
*)<br />
echo "usage: $0 {start|stop|list|restart}" <br />
esac<br />
<br />
exit 0<br />
<br />
Here's a working example wpa_supplicant config file:<br />
<br />
ctrl_interface=/var/run/wpa_supplicant<br />
# change ap_scan to 2 if running into problems<br />
ap_scan=1<br />
fast_reauth=1<br />
eapol_version=1<br />
<br />
network={<br />
key_mgmt=NONE<br />
}<br />
<br />
network={<br />
ssid="WPA"<br />
scan_ssid=1<br />
proto=WPA<br />
key_mgmt=WPA-PSK<br />
pairwise=TKIP<br />
group=TKIP<br />
#psk="passphrase"<br />
psk=hexkey<br />
}<br />
<br />
network={<br />
ssid="WEP"<br />
scan_ssid=1<br />
key_mgmt=NONE<br />
#wep_key0="passphrase"<br />
wep_key0=hexkey<br />
wep_tx_keyidx=0<br />
}<br />
<br />
Your mileage may vary, but experience seems to show that the '''ap_scan=1''' parameter is critical. Try tweaking the other "header" settings, too, if you continue to experience problems.<br />
<br />
=== ACPI (Hotkeys) ===<br />
<br />
==== Option 1: Install the '''[http://aur.archlinux.org/packages.php?ID=23318 acpi-eeepc-generic]''' package from AUR ====<br />
<br />
For this package to work, make sure the '''eeepc_laptop''' and '''rfkill''' modules are loaded at boot.<br />
<br />
Consult the notes included with the install for instructions on configuring {{Codeline|/etc/conf.d/acpi-eeepc-generic.conf}}.<br />
<br />
This will enable all the ''Fn + xx'' keys and the four silver hotkey buttons buttons as configured in the default Xandros distribution, with some minor variations. Edit the {{Codeline|/etc/conf.d/acpi-eeepc-generic.conf}} file to change or modify the behavior of the function keys.<br />
<br />
==== Option 2: Configure the stock kernel ACPI features ====<br />
<br />
Enable the ASUS_LAPTOP (Device Drivers -> Misc Devices) switch in your kernel config and turn off ACPI_ASUS switch (Power managment options -> ACPI).<br />
<br />
To enable the FN keys, the WLAN and Camera on/off toggles, etc., activate the EEEPC_LAPTOP switch also (Device Drivers -> Misc Devices). <br />
<br />
You can use Robertek's PKGBUILD and files for '''acpi-www901''' at http://robertek.brevnov.net/files/linux/arch/acpi-eee901/ as a base to incorporate the stock kernel modules and ASUS OSD into the ACPI system.<br />
<br />
Note: The kernel interfaces {{Codeline|/proc/acpi/asus}} or {{Codeline|/proc/acpi/eee}} are not available with the '''eeepc_laptop''' module. The corresponding '''eeepc_laptop''' interfaces are files in: {{Codeline|/sys/devices/platform/eeepc/}}. You may need to edit some of the scripts under {{Codeline|/etc/acpi/}} to point to the correct paths.<br />
Also the battery interface can be found inside of /sys/class/power_supply/ .<br />
<br />
==== ASUS OSD ====<br />
<br />
Asus OSD is included as part of the '''acpi-eee901''' package. Simply add the command {{Codeline|asusosd &}} to your desktop manager startup script, or create the file {{Codeline|/etc/xdg/autostart/asusosd.desktop}} with these contents:<br />
<br />
[Desktop Entry]<br />
Encoding=UTF-8<br />
Name=ASUS OSD<br />
Comment=ASUS OSD<br />
Exec=/usr/bin/asusosd<br />
Terminal=false<br />
Type=Application<br />
StartupNotify=false<br />
Hidden=false<br />
<br />
=== Bluetooth ===<br />
<br />
Currently, Bluetooth is not enabled with the ''Fn + F2'' hotkey. To communicate with Bluetooth devices, make sure Bluetooth has been enabled in the BIOS.<br />
<br />
To enable/disable bluetooth from the command line :<br />
<br />
# enable<br />
echo 1 > /sys/devices/platform/eeepc/bt<br />
# disable<br />
echo 0 > /sys/devices/platform/eeepc/bt<br />
<br />
Install the '''bluez''' package. Make sure the '''bluetooth''' module is loaded.<br />
<br />
See the Arch Linux [[Bluetooth]] and [[Bluetooth Mouse]] wiki pages for more information about configuring and using Bluetooth devices.<br />
<br />
=== Webcam ===<br />
<br />
To enable/disable the camera:<br />
<br />
# enable<br />
echo 1 > /sys/devices/platform/eeepc/camera<br />
# disable<br />
echo 0 > /sys/devices/platform/eeepc/camera<br />
<br />
To record video and take photos, you may use '''cheese''' or the '''wxcam''' package (available in the ''edgy'' repository or AUR).<br />
<br />
pacman -S wxcam<br />
<br />
To simply test the camera, you may use {{Codeline|mplayer}}:<br />
<br />
mplayer -fps 15 tv://<br />
<br />
The webcam is reported to work with Skype.<br />
<br />
=== Audio ===<br />
<br />
Audio output is enabled with the default ALSA drivers distributed with the kernels. You may need to install the '''alsa-lib''' and '''alsa-utils''' packages to get full functionality.<br />
Make sure the '''snd-hda-intel''' module is loaded.<br />
<br />
Both the microphone and PC speakers should work out-of-the-box with current versions of the kernel and ALSA drivers. A common gotcha: if you're not getting any sound, did you run {{Codeline|alsamixer}} and unmute your channels?<br />
<br />
See the Arch Linux [[ALSA]] wiki page for more information about configuring and using ALSA.<br />
<br />
=== X ===<br />
<br />
''<font color="red">This section is out-of-date, and needs to be cleaned up.</font>''<br />
<br />
==== Video ====<br />
<br />
You will need the xf86-video-intel video driver:<br />
pacman -S xf86-video-intel<br />
<br />
To set-up the touchpad, (including two-fingers scrolling & tapping), just install xf86-input-synaptics (no xorg.conf required):<br />
pacman -S xf86-input-synaptics<br />
<br />
Some users have reported problems with vsync and the '''xf86-video-intel''' driver. These problems may be partially solved in the application (see this forum [http://bbs.archlinux.org/viewtopic.php?pid=416645#p416645 post].)<br />
<br />
===== Connecting an external Monitor =====<br />
<br />
The xrandr utility (part of Xorg) can be used to switch into screen modes appropriate either for the EeePC's LCD or an externally connected monitor. Running "xrandr -q" will show you the available output devices and the supported modes. Then run the tool as follows:<br />
<br />
xrandr --output LVDS --off --output VGA --auto # disable LCD, enable monitor<br />
xrandr --output LVDS --auto --output VGA --auto # enable both<br />
etc.<br />
<br />
Your monitor will probably support a bigger resolution than the LCD. To make use of that additional screen space, tell the X server to create an appropriately large framebuffer by adding the "Virtual" directive to the Screen/Display section in /etc/X11/xorg.conf:<br />
<br />
Section "Screen"<br />
Identifier "Screen0"<br />
Device "Card0"<br />
Monitor "Monitor0"<br />
DefaultDepth 24<br />
SubSection "Display"<br />
Viewport 0 0<br />
Depth 24<br />
Virtual 1600 1200 # max resolution is 1600x1200<br />
EndSubSection<br />
EndSection<br />
<br />
On the LCD, the additional space will be unused, but when switching to the external monitor, the screen will be. Note that some window managers (such as ratpoison) might need to be restarted to realize that the visible screen size has changed.<br />
<br />
===== Letterboxing with XRandR =====<br />
<br />
If you have set up your X server and kernel to use KMS you might have some trouble getting a 800x600 resolution letterboxed (centered) rather than stretched, which might be unpleasant in some programs that do not support 1024x600 such as older games. This is because with KMS the xrandr syntax is a bit different [https://bugs.freedesktop.org/show_bug.cgi?id=24331].<br />
To get a centered 800x600 visual field on your 1024x600 panel run:<br />
$ xrandr --output LVDS1 --set "scaling mode" "Center"<br />
$ xrandr -s 800x600<br />
Replace "800x600" with "1024x600" to go back to the native resolution.<br />
<br />
==== Mouse and Synaptics driver ====<br />
<br />
To enable the Synaptics drivers, first install the synaptics package:<br />
<br />
pacman -S synaptics<br />
<br />
You also need the evdev driver for Xorg:<br />
<br />
pacman -S xf86-input-evdev<br />
<br />
Then make these changes to {{Codeline|/etc/X11/xorg.conf}}:<br />
<br />
Section "ServerLayout"<br />
Identifier "ArchLinux"<br />
Screen 0 "Screen0"<br />
InputDevice "keyboard"<br />
InputDevice "mouse"<br />
'''InputDevice "synaptics"'''<br />
EndSection<br />
<br />
[...]<br />
<br />
Section "Files"<br />
'''# RgbPath "/usr/share/X11/rgb"'''<br />
ModulePath "/usr/lib/xorg/modules"<br />
FontPath "/usr/share/fonts/misc"<br />
FontPath "/usr/share/fonts/100dpi:unscaled"<br />
FontPath "/usr/share/fonts/75dpi:unscaled"<br />
FontPath "/usr/share/fonts/TTF"<br />
FontPath "/usr/share/fonts/Type1"<br />
EndSection<br />
<br />
Section "Module"<br />
Load "GLcore"<br />
Load "glx"<br />
Load "record"<br />
Load "dri"<br />
Load "extmod"<br />
Load "xtrap"<br />
Load "dbe"<br />
Load "freetype"<br />
'''Load "synaptics"'''<br />
EndSection<br />
<br />
[...]<br />
<br />
Section "InputDevice"<br />
Identifier "mouse"<br />
Driver "mouse"<br />
Option "Device" "/dev/input/mice"<br />
Option "Protocol" "IMPS/2"<br />
Option "Emulate3Buttons" "yes"<br />
Option "ZAxisMapping" "4 5"<br />
Option "CorePointer"<br />
EndSection<br />
<br />
'''Section "InputDevice"'''<br />
'''Identifier "synaptics"'''<br />
'''Driver "synaptics"'''<br />
'''Option "Device" "/dev/psaux"'''<br />
'''Option "Protocol" "auto-dev"'''<br />
'''Option "PalmDetect" "0"'''<br />
'''Option "SHMConfig" "true"'''<br />
'''Option "SendCoreEvents" "yes"'''<br />
'''Option "RBCornerButton" "0"'''<br />
'''Option "RTCornerButtom" "0"'''<br />
'''Option "TapButton1" "1"'''<br />
'''Option "TapButton2" "2"'''<br />
'''Option "TapButton3" "3"'''<br />
'''Option "AccelFactor" "0.0320"'''<br />
'''Option "MaxSpeed" "0.72"'''<br />
'''Option "MinSpeed" "0.6"'''<br />
'''Option "Emulate3Buttons" "true"'''<br />
'''Option "TouchPadOff" "0"'''<br />
'''Option "LBCornerButton" "2"'''<br />
'''Option "LeftEdge" "60"'''<br />
'''Option "RightEdge" "1070"'''<br />
'''Option "TopEdge" "90"'''<br />
'''Option "BottomEdge" "680"'''<br />
'''Option "VertTwoFingerScroll" "1"'''<br />
'''Option "HorizTwoFingerScroll" "1"'''<br />
'''Option "HorizScrollDelta" "20"'''<br />
'''Option "LockedDrags" "1"'''<br />
'''Option "CoastingSpeed" "0.13"'''<br />
'''Option "CircularScrolling" "1"'''<br />
'''Option "CircScrollTrigger" "8" # 8=Top Left Corner'''<br />
'''EndSection'''<br />
<br />
The latest version of the Elantech touchpad driver patch is available at http://arjan.opmeer.net/elantech/ or here [http://www.mac-how.net/ mac how to] You'll need to apply this patch to your kernel source, then recompile the kernel. This patch has been tested on the 2.6.27.6 and 2.6.27.7 kernels.<br />
<br />
====A complete working set Xorg/HAL config files====<br />
<br />
The latest version of {{Codeline|xserver}} recommends using the HAL subsystem to manage X device configurations, in place of {{Codeline|xorg.conf}}.<br />
<br />
If it isn't installed already, install HAL, then add '''hal''' to the list of daemons in your {{Codeline|/etc/rc.conf}} file:<br />
<br />
pacman -s hal<br />
<br />
Create the following HAL device configuration files for X:<br />
<br />
'''File:''' /etc/hal/fdi/policy/10-keymap.fdi (configure the '''input.xkb.layout''' parameter to match your locale)<br />
<?xml version="1.0" encoding="ISO-8859-1"?> <!-- -*- SGML -*- --><br />
<deviceinfo version="0.2"><br />
<device><br />
<match key="info.capabilities" contains="input.keymap"><br />
<append key="info.callouts.add" type="strlist">hal-setup-keymap</append><br />
</match><br />
<br />
<match key="info.capabilities" contains="input.keys"><br />
<merge key="input.xkb.rules" type="string">base</merge><br />
<br />
<merge key="input.xkb.model" type="string">keyboard</merge><br />
<match key="/org/freedesktop/Hal/devices/computer:system.kernel.name" string="Linux"><br />
<merge key="input.xkb.model" type="string">evdev</merge><br />
</match><br />
<br />
<merge key="input.xkb.layout" type="string">se</merge><br />
<merge key="input.xkb.variant" type="string" /><br />
<merge key="input.xkb.options" type="string">ctrl:nocaps</merge><br />
</match><br />
</device><br />
</deviceinfo><br />
<br />
<br />
'''File:''' /etc/hal/fdi/policy/9-x11-elantech.fdi (configuration for the Elantech touchpad -- <font color="red">could be improved</font>)<br />
<?xml version="1.0" encoding="ISO-8859-1"?><br />
<deviceinfo version="0.2"><br />
<device><br />
<match key="info.capabilities" contains="input.touchpad"><br />
<match key="info.product" contains="Elantech Touchpad"><br />
<merge key="input.x11_driver" type="string">synaptics</merge><br />
<merge key="input.x11_options.SHMConfig" type="string">on</merge><br />
<merge key="input.x11_options.MaxSpeed" type="string">1.00</merge><br />
<merge key="input.x11_options.MinSpeed" type="string">0.75</merge><br />
<merge key="input.x11_options.Emulate3Buttons" type="string">on</merge><br />
<merge key="input.x11_options.VertTwoFingerScroll" type="string">1</merge><br />
<merge key="input.x11_options.HorizTwoFingerScroll" type="string">1</merge><br />
<merge key="input.x11_options.TapButton1" type="string">1</merge><br />
<merge key="input.x11_options.TapButton2" type="string">2</merge><br />
<merge key="input.x11_options.TapButton3" type="string">3</merge><br />
<merge key="input.x11_options.LockedDrags" type="string">1</merge><br />
</match><br />
</match><br />
</device><br />
</deviceinfo><br />
<br />
'''File:''' /etc/X11/xorg.conf<br />
Section "ServerLayout"<br />
Identifier "ArchLinux"<br />
Screen "Screen0"<br />
EndSection<br />
<br />
Section "Device"<br />
Identifier "Device0"<br />
Driver "intel"<br />
Option "XAANoOffScreenPixmaps" "true"<br />
Option "AccelMethod" "XAA"<br />
EndSection<br />
<br />
Section "Screen"<br />
Identifier "Screen0"<br />
Device "Device0"<br />
EndSection<br />
The {{Codeline|xorg.conf}} file is no longer strictly necessary, but some features, such as windowtitles in wmii, run faster if configured here.<br />
<br />
==== Miscellaneous ====<br />
If you do not have an xorg.conf file, and want to configure the keyboard layout on the fly:<br />
<br />
# Set keyboard to cz with qwerty<br />
setxkbmap cz qwerty<br />
<br />
To configure the mouse speed:<br />
# Set mouse movement and acceleration (you need to tweak this to your needs)<br />
xset m 2 1<br />
<br />
== Performance Tips ==<br />
<br />
The following tweaks can be used to improve performance and/or power consumption.<br />
<br />
=== Speedstep ===<br />
<br />
Speedstep is included by default in the Linux 2.6.x kernel.<br />
<br />
The '''zen-eee901''' kernels contain the Speedstep modules. Add '''acpi-cpufreq''' to your MODULES list in {{Codeline|/etc/rc.conf}} to enable it on boot, or execute:<br />
<br />
modprobe acpi-cpufreq<br />
<br />
See http://rffr.de/acpi for more information.<br />
<br />
For more information on overclocking the Asus EEE PC line, see http://wiki.eeeuser.com/howto:overclockfsb<br />
<br />
{{Note|Speedstep is applicable to the 901 as it's CPU is of the Intel Atom family. The eee 900 and 904 use an Intel Celeron M CPU and so should use the p4-clockmod module instead. }}<br />
<br />
=== Faster boot and udev ===<br />
To safe a little time with udev during boot, you can edit your '''/etc/rc.conf''' and disable MOD_AUTOLOAD. It should look like this<br />
<br />
MOD_AUTOLOAD="no"<br />
MODULES=(atl1e rt2860sta rfkill acpi-cpufreq pciehp intel_agp snd-hda-intel !snd-pcsp bluetooth)<br />
<br />
In addition, it may be helpful to do the following:<br />
<br />
MODULES=( ... !eeepc_laptop ... )<br />
<br />
and then load that module in the background in '''rc.local''':<br />
<br />
modprobe eeepc_laptop &<br />
<br />
(insert that line)<br />
<br />
=== Boot Booster ===<br />
<br />
Enable Asus Boot Booster feature in BIOS to skip some tests during boot.<br />
<br />
"Boot">"Boot Settings Configuration">"Quick Boot">[Enabled]<br />
<br />
== Appendix ==<br />
=== Hardware Overview for 901 ===<br />
<br />
The following hardware is used in the Asus EEE 901:<br />
<br />
* CPU: 1.6GHz N270 Intel Atom<br />
* RAM: 1024 MB, DDR2 667<br />
* ports: 3x USB, VGA<br />
* LAN/ethernet: Atheros L1e 1000 Mbit<br />
* WLAN: Ralink rt2860 802.11b/g/n<br />
* Bluetooth, webcam 1.3 Mpix<br />
* Card reader: SD, SDHC, MMC<br />
* touchpad: "Multi-touch" elantech<br />
* display: 1024x600 8.9"<br />
* weight: 1 kg<br />
* battery: Li-ion, 6600mAh<br />
* HDD: 4 + 8GB, empty slot for 1,8" (remove of the 8GB module needed)<br />
* Graphics: Intel GM950 core, 945GME chipset<br />
<br />
00:00.0 Host bridge: Intel Corporation Mobile 945GME Express Memory Controller Hub (rev 03)<br />
00:02.0 VGA compatible controller: Intel Corporation Mobile 945GME Express Integrated Graphics Controller (rev 03)<br />
00:02.1 Display controller: Intel Corporation Mobile 945GM/GMS/GME, 943/940GML Express Integrated Graphics Controller (rev 03)<br />
00:1b.0 Audio device: Intel Corporation 82801G (ICH7 Family) High Definition Audio Controller (rev 02)<br />
00:1c.0 PCI bridge: Intel Corporation 82801G (ICH7 Family) PCI Express Port 1 (rev 02)<br />
00:1c.1 PCI bridge: Intel Corporation 82801G (ICH7 Family) PCI Express Port 2 (rev 02)<br />
00:1c.2 PCI bridge: Intel Corporation 82801G (ICH7 Family) PCI Express Port 3 (rev 02)<br />
00:1c.3 PCI bridge: Intel Corporation 82801G (ICH7 Family) PCI Express Port 4 (rev 02)<br />
00:1d.0 USB Controller: Intel Corporation 82801G (ICH7 Family) USB UHCI Controller #1 (rev 02)<br />
00:1d.1 USB Controller: Intel Corporation 82801G (ICH7 Family) USB UHCI Controller #2 (rev 02)<br />
00:1d.2 USB Controller: Intel Corporation 82801G (ICH7 Family) USB UHCI Controller #3 (rev 02) <br />
00:1d.3 USB Controller: Intel Corporation 82801G (ICH7 Family) USB UHCI Controller #4 (rev 02)<br />
00:1d.7 USB Controller: Intel Corporation 82801G (ICH7 Family) USB2 EHCI Controller (rev 02)<br />
00:1e.0 PCI bridge: Intel Corporation 82801 Mobile PCI Bridge (rev e2)<br />
00:1f.0 ISA bridge: Intel Corporation 82801GBM (ICH7-M) LPC Interface Bridge (rev 02)<br />
00:1f.2 IDE interface: Intel Corporation 82801GBM/GHM (ICH7 Family) SATA IDE Controller (rev 02)<br />
00:1f.3 SMBus: Intel Corporation 82801G (ICH7 Family) SMBus Controller (rev 02)<br />
01:00.0 Network controller: RaLink Device 0781</div>Guille