https://wiki.archlinux.org/api.php?action=feedcontributions&user=Jristz&feedformat=atom
ArchWiki - User contributions [en]
2024-03-28T16:25:09Z
User contributions
MediaWiki 1.41.0
https://wiki.archlinux.org/index.php?title=Talk:Kexec&diff=487263
Talk:Kexec
2017-08-26T04:44:00Z
<p>Jristz: /* sd-shutdown hook and kexec */ fix signature</p>
<hr />
<div>== Kexec with LUKS ==<br />
<br />
Some fancy mkinitcpio stuff needs to be done to make kexec work when the root filesystem is in LUKS; that needs to be clarified either here or in the mkinitcpio article. --[[User:Buhman|Buhman]] ([[User talk:Buhman|talk]]) 07:20, 1 October 2012 (UTC)<br />
: If you know what these fancy stuff is, please add them here or to Kexec main page (Directly edit the page is better). Everyone can contribute to Arch Wiki. -- [[User:Fengchao|Fengchao]] ([[User talk:Fengchao|talk]]) 09:57, 1 October 2012 (UTC)<br />
:: Quite simply: fixing the kexec initscript. The kexec-load systemd unit-files already does the right thing; I no longer see reason to expend effort try to write a dirty hack for the former in this article. Admittedly, 9 days ago, I was speaking of the {{ic|shutdown}} initcpio hook as well as including {{ic|kexec}} in the {{ic|BINARIES}} array, but I couldn't quite make it work *entirely* for myself, which is why I called it "fancy stuff" earlier; this was before I switched to [[systemd]]. --[[User:Buhman|Buhman]] ([[User talk:Buhman|talk]]) 09:53, 10 October 2012 (UTC)<br />
::: The correct way to do this is (imho) to add clarification in [[mkinitcpio]] and reference that article here. --[[User:Buhman|Buhman]] ([[User talk:Buhman|talk]]) 09:53, 10 October 2012 (UTC)<br />
<br />
== sd-shutdown hook and kexec ==<br />
<br />
The article mention not use shutdown hook, but there no mention about sd-shutdown or if exist a workaround or even why should not be added. it need clarification and expantion. --[[user:Jristz|Jristz]] 04:43, 26 August 2017 (UTC)</div>
Jristz
https://wiki.archlinux.org/index.php?title=Talk:Kexec&diff=487262
Talk:Kexec
2017-08-26T04:43:20Z
<p>Jristz: /* sd-shutdown hook and kexec */ new section</p>
<hr />
<div>== Kexec with LUKS ==<br />
<br />
Some fancy mkinitcpio stuff needs to be done to make kexec work when the root filesystem is in LUKS; that needs to be clarified either here or in the mkinitcpio article. --[[User:Buhman|Buhman]] ([[User talk:Buhman|talk]]) 07:20, 1 October 2012 (UTC)<br />
: If you know what these fancy stuff is, please add them here or to Kexec main page (Directly edit the page is better). Everyone can contribute to Arch Wiki. -- [[User:Fengchao|Fengchao]] ([[User talk:Fengchao|talk]]) 09:57, 1 October 2012 (UTC)<br />
:: Quite simply: fixing the kexec initscript. The kexec-load systemd unit-files already does the right thing; I no longer see reason to expend effort try to write a dirty hack for the former in this article. Admittedly, 9 days ago, I was speaking of the {{ic|shutdown}} initcpio hook as well as including {{ic|kexec}} in the {{ic|BINARIES}} array, but I couldn't quite make it work *entirely* for myself, which is why I called it "fancy stuff" earlier; this was before I switched to [[systemd]]. --[[User:Buhman|Buhman]] ([[User talk:Buhman|talk]]) 09:53, 10 October 2012 (UTC)<br />
::: The correct way to do this is (imho) to add clarification in [[mkinitcpio]] and reference that article here. --[[User:Buhman|Buhman]] ([[User talk:Buhman|talk]]) 09:53, 10 October 2012 (UTC)<br />
<br />
== sd-shutdown hook and kexec ==<br />
<br />
The article mention not use shutdown hook, but there no mention about sd-shutdown or if exist a workaround or even why should not be added. it need clarification and expantion. 04:43, 26 August 2017 (UTC)</div>
Jristz
https://wiki.archlinux.org/index.php?title=Talk:Improving_performance&diff=485628
Talk:Improving performance
2017-08-17T06:32:31Z
<p>Jristz: /* Watchdog section */ Tuning IO schedulers discution</p>
<hr />
<div>== Watchdog section ==<br />
<br />
I've added a '''watchdogs''' section.<br />
Tell me what do you think about? --[[User:NTia89|nTia89]] ([[User talk:NTia89|talk]]) 10:42, 29 December 2016 (UTC)<br />
:Is it really recommended to disable watchdog services? See [https://linux.die.net/man/8/watchdog watchdog(8)]. Even when running a 'simple' desktop, it needs to monitor a lot of things. Don't forget most MB use a watchdog service. How to know this is really safe? [[User:Francoism|Francoism]] ([[User talk:Francoism|talk]]) 10:52, 29 December 2016 (UTC)<br />
::1. I've never had a problem, see also: https://bbs.archlinux.org/viewtopic.php?id=163768 --[[User:NTia89|nTia89]] ([[User talk:NTia89|talk]]) 11:01, 29 December 2016 (UTC)<br />
::2. Your watchdog is related to the specific program ''watchdog'' (https://www.archlinux.org/packages/extra/x86_64/watchdog/), a standalone program, not installed by default, not dependency of other packages. --[[User:NTia89|nTia89]] ([[User talk:NTia89|talk]]) 11:05, 29 December 2016 (UTC)<br />
:::You are correct about the watchdog package, but it is just to give you an example of what a watchdog does. It also depends on the hardware and software that's in use. To give you an example, an USB device that causes issues, will be unable to recover if no watchdog is in use. It can also lead to unexpected reboots (a watchdog is able to perform recovery operations) and maybe even hardware damage (see temperature monitoring). The one in the kernel are linked with the CPU/MB it seems, think they are created for some reason. ;) [[User:Francoism|Francoism]] ([[User talk:Francoism|talk]]) 11:13, 29 December 2016 (UTC)<br />
::::No, I don't think so. Low-level hardware interrupt are handled by low-level software, the BIOS/EFI.<br />
::::For what watchdogs do, read the first and third link.<br />
::::I'm with you that "if it exists, there is a good reason, so...", but this doesn't mean everybody need it.<br />
::::PS: What I've written on the wiki is the sum/product of what I have understand/learn about kernel watchdog; an issue started time ago while for the first time I've read about "NMI_watchdog" in the dmesg; the links provided at the end of my edit are the sources from which I extrapolated those information; if you have other sources, share, I'm here to learn in primis. --[[User:NTia89|nTia89]] ([[User talk:NTia89|talk]]) 14:54, 29 December 2016 (UTC)<br />
:::::[https://gist.github.com/lahwaacz/5bef7a353cd8cbe49164d2bf4efd47fa Here] is what I get from time to time after plugging someting into my only USB3 port. After that happens, I need to reboot to make it work again. It's definitely tied up to the hardware driver and I'm not really interested in finding out what might happen without the watchdog. -- [[User:Lahwaacz|Lahwaacz]] ([[User talk:Lahwaacz|talk]]) 16:42, 29 December 2016 (UTC)<br />
::::::Please, explain better your experience, because if you get an hardware problem that stuck your system, the '''watchdog''' should recognize this situation and it will '''automatically''' reboot the system. Without a watchdog the stuck system will continue to go (even if stuck) until you '''manually''' reboot your machine. This is the purpose of a watchdog. This is why it is not a mandatory piece of a laptop/desktop system where user can operate manually (while the user can do this in an embedded device...). --[[User:NTia89|nTia89]] ([[User talk:NTia89|talk]]) 16:53, 29 December 2016 (UTC)<br />
::::::Unless you have set {{ic|RuntimeWatchdogSec}} in {{ic|/etc/systemd/system.conf}}, watchdog is not doing anything for you in this case. All watchdog does in an Arch install by default is check if a shutdown has proceeded properly after 10 minutes ({{ic|1=ShutdownWatchdogSec=10m}}). -- [[User:Rdeckard|Rdeckard]] ([[User_talk:Rdeckard|talk]]) 21:06, 30 December 2016 (UTC)<br />
<br />
:Since you've put it on the [[Improving performance]] page, what is the performance improvement in practice? -- [[User:Lahwaacz|Lahwaacz]] ([[User talk:Lahwaacz|talk]]) 11:30, 29 December 2016 (UTC)<br />
::I recorded a decrease in boot and shutdown time of about 0.1 sec over a 2.0 secs boot (systemd-analyze);<br />
::both hardware and software watchdogs are disabled; the later is 'software', so I believe it "consumes" CPU...I have no evidence about it. If you have it, share here<br />
::PS: What I've written on the wiki is the sum/product of what I have understand/learn about kernel watchdog; an issue started time ago while for the first time I've read about "NMI_watchdog" in the dmesg; the links provided at the end of my edit are the sources from which I extrapolated those information; if you have other sources, share, I'm here to learn in primis. --[[User:NTia89|nTia89]] ([[User talk:NTia89|talk]]) 14:54, 29 December 2016 (UTC)<br />
:::And how does that difference compare to the [https://en.wikipedia.org/wiki/Standard_deviation standard deviation] of your measured data? -- [[User:Lahwaacz|Lahwaacz]] ([[User talk:Lahwaacz|talk]]) 16:42, 29 December 2016 (UTC)<br />
::::These are already ''mean'' values and they are enough for me. If you have an easy way to compute a more detailed report, please tell me. Or better, try by yourself and share your results! --[[User:NTia89|nTia89]] ([[User talk:NTia89|talk]]) 16:53, 29 December 2016 (UTC)<br />
:I like the section and think it should be added somewhere in the Wiki. I think for now this is a reasonable place since the focus is on disabling something that may be consuming resources unnecessarily. Additionally at least 1 user has reported that the {{ic|nowatchdog}} kernel parameter did not work for them [https://bbs.archlinux.org/viewtopic.php?id=221239] and that blacklisting the module was the only way to disable watchdog. -- [[User:Rdeckard|Rdeckard]] ([[User_talk:Rdeckard|talk]]) 14:18, 30 December 2016 (UTC)<br />
::Thank you, I will update the section accordingly --[[User:NTia89|nTia89]] ([[User talk:NTia89|talk]]) 14:24, 30 December 2016 (UTC)<br />
<br />
== Tuning IO schedulers ==<br />
Following the bug tracker and as follow https://bugs.archlinux.org/task/54964 in last page spacecase mention that aparently elevator look depreciated.<br />
checking zen kernel show only elevators for noop, deadline & cfq but not the famous bfq, whis until 4.11 was available on normal disk.<br />
Aparently when they merged bfq the kernel fsck it up so so much that only work on ssd?<br />
I think based on that evidence that the section "Tuning IO schedulers" is now poorly writter, not reflect "modern" usage not mention correctly what to do if one want bfq on a hdd neither mention why was bfq removed or if there a patch or something to reenable.<br />
It have place for improvenment like this, but at this point it look better to "split" it into rotating hdd io scheduling performance and improvements and ssd only with a brief explanation why is split and the concecuences of using ssd performances or scheduler on rotating and viseversa. 06:32, 17 August 2017 (UTC)</div>
Jristz
https://wiki.archlinux.org/index.php?title=File_systems_(Espa%C3%B1ol)&diff=480047
File systems (Español)
2017-06-18T08:50:00Z
<p>Jristz: mejorar el estilo y denotar ambas formas</p>
<hr />
<div>[[Category:File systems (Español)]]<br />
[[en:File systems]]<br />
[[hu:File systems]]<br />
[[it:File systems]]<br />
[[ja:ファイルシステム]]<br />
[[pl:File systems]]<br />
[[zh-hans:File systems]]<br />
{{Related articles start (Español)}}<br />
{{Related|Mount}}<br />
{{Related|Partitioning (Español)}}<br />
{{Related articles end}}<br />
Desde [[Wikipedia:File system|Wikipedia]]:<br />
:''Un '''sistema de archivos''' o '''sistema de ficheros''' (en inglés: ''filesystem'') es un medio para organizar los datos que se espera se mantengan después que un programa haya terminado, al proporcionar procedimientos para almacenar, recuperar y actualizar dichos datos, así como gestionar el espacio disponible en el dispositivo(s) que lo contiene. Un sistema de archivos organiza los datos de una manera eficiente y está sintonizado con las características específicas del dispositivo.''<br />
<br />
Cada partición individual se puede configurar mediante uno de los muchos sistemas de archivos disponibles. Cada uno tiene sus propias ventajas, desventajas e idiosincrasias únicas. A continuación se hace una breve descripción de los sistemas de archivos compatibles; se hacen, también, enlaces a páginas de Wikipedia que proporcionan mucha más información.<br />
<br />
Antes de ser formateado, el disco debe ser [[Partitioning (Español)|particionado]].<br />
<br />
==Tipos de sistemas de archivos==<br />
* [[Wikipedia:Btrfs|Btrfs]] - También conocido como «Better FS», es un '''nuevo sistema de archivos con potentes funciones, similares al excelente ZFS de Sun/Oracle'''. Estas incluyen la creación de instantáneas, striping y mirroring multi-disco (RAID software sin mdadm), sumas de comprobación, copias de seguridad incrementales, y compresión sobre la marcha integrada, que pueden dar un significativo aumento de las prestaciones, así como ahorrar espacio. A partir de enero de 2011, Btrfs es considerado inestable a pesar de que se ha estado insertando en el kernel principal con un estado experimental. Btrfs parece ser el futuro de los sistemas de archivos de GNU/Linux y se ofrece como una opción para el sistema de archivos de root en todos las instalaciones de las distribuciones más importantes.<br />
* [[Wikipedia:exFAT|exFAT]] - '''Sistema de archivos de Microsoft optimizado para unidades flash'''. A diferencia de NTFS, exFAT no puede preasignar espacio en disco para un archivo con solo marcar el espacio arbitrariamente en el disco como «asignado». Al igual que en FAT, cuando se crea un archivo de longitud conocida, exFAT debe llevar a cabo una completa escritura física del mismo tamaño del archivo.<br />
* [[Wikipedia:ext2|ext2]] - '''Second Extended Filesystem''' es un consolidado y maduro sistema de archivos para GNU/Linux muy estable. Uno de sus inconvenientes es que no tiene apoyo para el registro (journaling) (véase más abajo) o las barreras. La falta de ''registro por diario'' («journaling») puede traducirse en la pérdida de datos en caso de un corte de corriente o fallo del sistema. También puede '''no''' ser conveniente para las particiones root ({{ic|/}}) y {{ic|/home}}, porque las comprobaciones del sistema de archivos pueden tomar mucho tiempo. Un sistema de archivos ext2 puede ser [[Convert_ext2_to_ext3|convertido a ext3]].<br />
* [[Wikipedia:ext3|ext3]] - '''Third Extended Filesystem''' es, esencialmente, el sistema de archivos ext2 pero con el apoyo de journaling y la escritura de barreras. Es compatible con ext2, bien probado, y extremadamente estable.<br />
* [[Wikipedia:ext4|ext4]] - '''Fourth Extended Filesystem''' es un sistema de archivos nuevo que también es compatible con ext2 y ext3. Proporciona apoyo para volúmenes con tamaños de hasta 1 exabyte (es decir, 1.048.576 terabytes) y archivos con tamaños de hasta 16 terabytes. Aumenta el límite de los 32.000 subdirectorios de ext3 a 64.000. También ofrece la capacidad de desfragmentación en línea.<br />
* [[Wikipedia:F2FS|F2FS]] - '''Flash-Friendly File System''' es un sistema de archivos flash creado por Kim Jaegeuk (Hangul: 김재극) de Samsung para el kernel del sistema operativo Linux. La motivación para F2FS era construir un sistema de archivos que desde el principio tuviese en cuenta las características de los dispositivos de almacenamiento basados en memoria flash NAND (como los discos de estado sólido, eMMC, y tarjetas SD), que han sido ampliamente utilizados en el en sistemas informáticos que van desde dispositivos móviles a servidores.<br />
* [[Wikipedia:JFS (file system)|JFS]] - El '''Journaled File System''' de IBM fue el primer sistema de archivos en ofrecer journaling, y ha sido empleado durante muchos años en el sistema operativo IBM AIX® antes de ser portado a GNU/Linux. JFS demanda menos recursos de la CPU que cualquier otro disponible para los sistemas GNU/Linux. Es muy rápido en el formato, montaje y comprobación del sistema de archivos (fsck). JFS ofrece óptimas prestaciones en general, especialmente en conjunción con el planificador de I/O. No es tan ampliamente soportado como los sistemas de archivos ext o ReiserFS, pero, sin embargo, muy maduro y estable.<br />
* [[Wikipedia:NILFS|NILFS2]] - '''New Implementation of a Log-structured File System''' fue desarrollado por NTT. Registra todos los datos en un formato continuo, a modo de un archivo de registro, que experimenta solo añadidos y nunca se sobrescribe. Está diseñado para reducir los tiempos de búsqueda y minimizar el tipo de pérdida de datos que se produce después de un accidente con los convencionales sistemas de archivos de Linux.<br />
* [[Wikipedia:NTFS|NTFS]] - '''Sistema de archivos utilizado por Windows'''. NTFS contiene algunas mejoras técnicas respecto a FAT y HPFS (High Performance File System), como el soporte mejorado para los metadatos y el uso de estructuras de datos avanzadas para mejorar el rendimiento, la confiabilidad y la utilización del espacio en disco, además de extensiones adicionales, como las listas de control de acceso de seguridad (ACL) y journaling del sistema de archivos.<br />
* [[Wikipedia:Reiser4|Reiser4]] - '''Sucesor del sistema de archivos ReiserFS''', desarrollado desde cero por Namesys y patrocinado por DARPA y Linspire, utiliza B*-trees junto con el enfoque del equilibrado del árbol de directorios, en el que los nodos poco poblados no se fusionarán hasta que no se efectúe un nivelado del disco, o cuando la memoria esté baja o se completa una operación. Este sistema también permite a Reiser4 crear archivos y directorios sin tener que perder el tiempo y el espacio a través de bloques fijos.<br />
* [[Wikipedia:ReiserFS|ReiserFS]] - '''Sistema de archivos con journaling y altas prestaciones de Hans Reiser (V3)''' que utiliza un método muy interesante de transferencia de datos basado en un algoritmo creativo e innovador. ReiserFS es anunciado como muy rápido, especialmente cuando se trata de muchos archivos pequeños. ReiserFS es rápido en dar formato, sin embargo, comparativamente lento en el montaje. Muy maduro y estable. ReiserFS (V3) no está siendo activamente desarrollado en este momento. Generalmente considerado como una buena opción para {{ic|/var}}.<br />
* [[Wikipedia:Paging|Swap]] - es el sistema de archivos utilizado para particiones de intercambio.<br />
* [[Wikipedia:File Allocation Table#VFAT|VFAT]] - '''Virtual File Allocation Table''' es técnicamente sencillo y con el apoyo de prácticamente todos los sistemas operativos existentes. Esto hace que sea un formato útil para las tarjetas de memoria de estado sólido y una manera práctica para compartir datos entre sistemas operativos. VFAT soporta nombres largos de archivos.<br />
* [[Wikipedia:XFS|XFS]] - '''Primeros sistemas de archivos con journaling desarrollado originalmente por Silicon Graphics''' para el sistema operativo IRIX y portado después a GNU/Linux. Proporciona un rendimiento muy rápido en los archivos y sistemas de archivos grandes y es muy rápido en el formato y montaje. Pruebas de benchmark comparativa han demostrado que es más lento cuando trata con muchos archivos pequeños. XFS es muy maduro y ofrece capacidad de desfragmentación en línea.<br />
* [[Wikipedia:ZFS|ZFS]] - '''Combinación de sistema de archivos y gestor de volumen lógicos diseñado por Sun Microsystems'''. Las características de ZFS incluyen la protección contra la corrupción de datos, soporte para grandes capacidades de almacenamiento, la integración de los conceptos de sistema de archivos y la gestión de volúmenes, instantáneas y clones copy-on-write, la comprobación continua de la integridad y reparación automática de los archivos, RAID-Z y NFSv4 ACL nativos.<br />
<br />
===Journaling===<br />
<br />
Todos los sistemas de archivos antes vistos, con la excepción de ext2, FAT16/32, usan [[wikipedia:es:Journaling|journaling]]. Journaling proporciona la rehabilitación de los fallos al registrar los cambios antes de que comprometan al sistema de archivos. En caso de un fallo del sistema o un corte de energía, este procedimiento es más rápido para informar en línea al sistema y es menos probable de que se dañe. El registro se lleva a cabo en un área específica del sistema de archivos.<br />
<br />
No todas las técnicas de journaling son iguales. Solo ext3 y ext4 proporcionan la función ''data-mode'' («modalidad de datos») de journaling, que registra los datos y los meta-datos. La «modalidad de datos» de journaling conlleva una pérdida de velocidad y no está habilitada de forma predeterminada. Los otros sistemas de archivos ofrecen una «modalidad de clasificación» (''ordered-mode'') de journaling, que solo registra los meta-datos. Mientras el resto de los journaling restaurarán un sistema de archivos a un estado válido después de un accidente, la «modalidad de datos» de journaling ofrece la mayor protección contra la corrupción y pérdida de datos. Sin embaro, este último compromete el rendimiento del sistema, porque la modalidad de datos journaling hace dos operaciones de escritura: primero al registro y luego al disco. El equilibrio entre la velocidad del sistema y la seguridad de los datos debe tenerse presente a la hora de elegir entre uno u otro tipo de sistemas de archivos.<br />
<br />
=== Soporte técnico de Arch Linux ===<br />
<br />
* {{App|btrfs-progs|soporte técnico para [[Btrfs]].|http://btrfs.wiki.kernel.org/|{{Pkg|btrfs-progs}}}}<br />
* {{App|dosfstools|soporte técnico para VFAT.|http://www.daniel-baumann.ch/software/dosfstools/|{{Pkg|dosfstools}}}}<br />
* {{App|exfat-utils|soporte técnico para exFAT.|http://code.google.com/e/exfat/|{{Pkg|exfat-utils}}}}<br />
* {{App|f2fs-tools|Soporte técnico para [[F2FS]].|https://git.kernel.org/cgit/linux/kernel/git/jaegeuk/f2fs-tools.git|{{Pkg|f2fs-tools}}}}<br />
* {{App|e2fsprogs|soporte técnico para ext2, [[ext3]], [[ext4]].|http://e2fsprogs.sourceforge.net|{{Pkg|e2fsprogs}}}}<br />
* {{App|jfsutils|soporte técnico para [[JFS]].|http://jfs.sourceforge.net|{{Pkg|jfsutils}}}}<br />
* {{App|nilfs-utils|soporte técnico para NILFS.|http://www.nilfs.org/|{{Pkg|nilfs-utils}}}}<br />
* {{App|ntfs-3g|soporte técnico para [[NTFS]].|http://www.tuxera.com/community/ntfs-3g-download/|{{Pkg|ntfs-3g}}}}<br />
* {{App|reiser4progs|soporte técnico para [[Reiser4|ReiserFSv4]].|http://sourceforge.net/projects/reiser4/|{{AUR|reiser4progs}}}}<br />
* {{App|reiserfsprogs|soporte técnico para ReiserFSv3.|https://www.kernel.org/|{{Pkg|reiserfsprogs}}}}<br />
* {{App|xfsprogs|soporte técnico para [[XFS]].|http://oss.sgi.com/projects/xfs/|{{Pkg|xfsprogs}}}}<br />
* {{App|zfs|soporte técnico para [[ZFS]].|http://zfsonlinux.org/|{{AUR|zfs-git}}{{Broken package link|{{aur-mirror|zfs-git}}}}}}<br />
<br />
=== Sistemas de archivos basados en FUSE ===<br />
<br />
El [[Wikipedia:es:Sistema_de_archivos_en_el_espacio_de_usuario|sistema de archivos en el espacio de usuario]] (FUSE) es un mecanismo para sistemas operativos tipo Unix que permite a los usuarios sin privilegios de root crear sus propios sistemas de archivos sin necesidad de editar el código del núcleo. Esto se logra mediante la ejecución del código del sistema de archivos en ''el espacio de usuario'', al tiempo que el módulo del kernel FUSE solo proporciona un «puente» a las interfaces del kernel que se está ejecutando.<br />
<br />
== Crear un sistema de archivos ==<br />
{{Nota|<br />
* Si desea cambiar el diseño de las particiones, vea [[Partitioning]].<br />
* Si desea crear una partición de intercambio, vea [[Swap]].<br />
}}<br />
<br />
Antes de comenzar, se necesita saber qué nombre dio Linux al dispositivo. Los discos duros y memorias USB aparecen como {{ic|/dev/sd''x''}}, donde «x» es una letra minúscula, mientras que las particiones aparecen como {{ic|/dev/sd''xY''}}, donde «Y» es un número.<br />
<br />
Por lo general, los sistemas de archivos se crean en una partición, pero también se pueden crear en el interior de contenedores lógicos como [[LVM]], [[RAID]] o [[dm-crypt]].<br />
<br />
Para crear un nuevo sistema de archivos en una partición, el sistema de archivos existente ubicado en la partición no debe estar montado.<br />
<br />
Si el dispositivo que desea formatear está montado, se mostrará en la columna ''MOUNTPOINT'' al ejecutar:<br />
<br />
$ lsblk<br />
<br />
Para desmontarlo, puede usar ''umount'' sobre el directorio donde se ha montado el disco:<br />
<br />
# umount /punto_de_montaje<br />
<br />
Para crear un nuevo sistema de archivos de tipo ext4, por ejemplo, en una partición haga:<br />
<br />
{{Advertencia|Al formatear un dispositivo se eliminan todos los datos que contenga, asegúrese de hacer copias de seguridad de todo aquello que desee conservar.}}<br />
<br />
# mkfs.ext4 /dev/''partición''<br />
<br />
La orden {{ic|mkfs}} es solo un sistema front-end unificado para las diferentes herramientas de {{ic|mkfs.''fstype''}}, por lo que alternativamente se puede usar también así:<br />
<br />
# mkfs -t ext4 /dev/''partición''<br />
<br />
== Véase también ==<br />
<br />
* [[wikipedia:Comparison of file systems]]</div>
Jristz
https://wiki.archlinux.org/index.php?title=File_systems_(Espa%C3%B1ol)&diff=480046
File systems (Español)
2017-06-18T08:47:35Z
<p>Jristz: citando a la wikipedia en español y a multiples herramientas que alternan entre esos dos.</p>
<hr />
<div>[[Category:File systems (Español)]]<br />
[[en:File systems]]<br />
[[hu:File systems]]<br />
[[it:File systems]]<br />
[[ja:ファイルシステム]]<br />
[[pl:File systems]]<br />
[[zh-hans:File systems]]<br />
{{Related articles start (Español)}}<br />
{{Related|Mount}}<br />
{{Related|Partitioning (Español)}}<br />
{{Related articles end}}<br />
Desde [[Wikipedia:File system|Wikipedia]]:<br />
:''Un sistema de archivos o sistema de ficheros (en inglés: ''filesystem'') es un medio para organizar los datos que se espera se mantengan después que un programa haya terminado, al proporcionar procedimientos para almacenar, recuperar y actualizar dichos datos, así como gestionar el espacio disponible en el dispositivo(s) que lo contiene. Un sistema de archivos organiza los datos de una manera eficiente y está sintonizado con las características específicas del dispositivo.''<br />
<br />
Cada partición individual se puede configurar mediante uno de los muchos sistemas de archivos disponibles. Cada uno tiene sus propias ventajas, desventajas e idiosincrasias únicas. A continuación se hace una breve descripción de los sistemas de archivos compatibles; se hacen, también, enlaces a páginas de Wikipedia que proporcionan mucha más información.<br />
<br />
Antes de ser formateado, el disco debe ser [[Partitioning (Español)|particionado]].<br />
<br />
==Tipos de sistemas de archivos==<br />
* [[Wikipedia:Btrfs|Btrfs]] - También conocido como «Better FS», es un '''nuevo sistema de archivos con potentes funciones, similares al excelente ZFS de Sun/Oracle'''. Estas incluyen la creación de instantáneas, striping y mirroring multi-disco (RAID software sin mdadm), sumas de comprobación, copias de seguridad incrementales, y compresión sobre la marcha integrada, que pueden dar un significativo aumento de las prestaciones, así como ahorrar espacio. A partir de enero de 2011, Btrfs es considerado inestable a pesar de que se ha estado insertando en el kernel principal con un estado experimental. Btrfs parece ser el futuro de los sistemas de archivos de GNU/Linux y se ofrece como una opción para el sistema de archivos de root en todos las instalaciones de las distribuciones más importantes.<br />
* [[Wikipedia:exFAT|exFAT]] - '''Sistema de archivos de Microsoft optimizado para unidades flash'''. A diferencia de NTFS, exFAT no puede preasignar espacio en disco para un archivo con solo marcar el espacio arbitrariamente en el disco como «asignado». Al igual que en FAT, cuando se crea un archivo de longitud conocida, exFAT debe llevar a cabo una completa escritura física del mismo tamaño del archivo.<br />
* [[Wikipedia:ext2|ext2]] - '''Second Extended Filesystem''' es un consolidado y maduro sistema de archivos para GNU/Linux muy estable. Uno de sus inconvenientes es que no tiene apoyo para el registro (journaling) (véase más abajo) o las barreras. La falta de ''registro por diario'' («journaling») puede traducirse en la pérdida de datos en caso de un corte de corriente o fallo del sistema. También puede '''no''' ser conveniente para las particiones root ({{ic|/}}) y {{ic|/home}}, porque las comprobaciones del sistema de archivos pueden tomar mucho tiempo. Un sistema de archivos ext2 puede ser [[Convert_ext2_to_ext3|convertido a ext3]].<br />
* [[Wikipedia:ext3|ext3]] - '''Third Extended Filesystem''' es, esencialmente, el sistema de archivos ext2 pero con el apoyo de journaling y la escritura de barreras. Es compatible con ext2, bien probado, y extremadamente estable.<br />
* [[Wikipedia:ext4|ext4]] - '''Fourth Extended Filesystem''' es un sistema de archivos nuevo que también es compatible con ext2 y ext3. Proporciona apoyo para volúmenes con tamaños de hasta 1 exabyte (es decir, 1.048.576 terabytes) y archivos con tamaños de hasta 16 terabytes. Aumenta el límite de los 32.000 subdirectorios de ext3 a 64.000. También ofrece la capacidad de desfragmentación en línea.<br />
* [[Wikipedia:F2FS|F2FS]] - '''Flash-Friendly File System''' es un sistema de archivos flash creado por Kim Jaegeuk (Hangul: 김재극) de Samsung para el kernel del sistema operativo Linux. La motivación para F2FS era construir un sistema de archivos que desde el principio tuviese en cuenta las características de los dispositivos de almacenamiento basados en memoria flash NAND (como los discos de estado sólido, eMMC, y tarjetas SD), que han sido ampliamente utilizados en el en sistemas informáticos que van desde dispositivos móviles a servidores.<br />
* [[Wikipedia:JFS (file system)|JFS]] - El '''Journaled File System''' de IBM fue el primer sistema de archivos en ofrecer journaling, y ha sido empleado durante muchos años en el sistema operativo IBM AIX® antes de ser portado a GNU/Linux. JFS demanda menos recursos de la CPU que cualquier otro disponible para los sistemas GNU/Linux. Es muy rápido en el formato, montaje y comprobación del sistema de archivos (fsck). JFS ofrece óptimas prestaciones en general, especialmente en conjunción con el planificador de I/O. No es tan ampliamente soportado como los sistemas de archivos ext o ReiserFS, pero, sin embargo, muy maduro y estable.<br />
* [[Wikipedia:NILFS|NILFS2]] - '''New Implementation of a Log-structured File System''' fue desarrollado por NTT. Registra todos los datos en un formato continuo, a modo de un archivo de registro, que experimenta solo añadidos y nunca se sobrescribe. Está diseñado para reducir los tiempos de búsqueda y minimizar el tipo de pérdida de datos que se produce después de un accidente con los convencionales sistemas de archivos de Linux.<br />
* [[Wikipedia:NTFS|NTFS]] - '''Sistema de archivos utilizado por Windows'''. NTFS contiene algunas mejoras técnicas respecto a FAT y HPFS (High Performance File System), como el soporte mejorado para los metadatos y el uso de estructuras de datos avanzadas para mejorar el rendimiento, la confiabilidad y la utilización del espacio en disco, además de extensiones adicionales, como las listas de control de acceso de seguridad (ACL) y journaling del sistema de archivos.<br />
* [[Wikipedia:Reiser4|Reiser4]] - '''Sucesor del sistema de archivos ReiserFS''', desarrollado desde cero por Namesys y patrocinado por DARPA y Linspire, utiliza B*-trees junto con el enfoque del equilibrado del árbol de directorios, en el que los nodos poco poblados no se fusionarán hasta que no se efectúe un nivelado del disco, o cuando la memoria esté baja o se completa una operación. Este sistema también permite a Reiser4 crear archivos y directorios sin tener que perder el tiempo y el espacio a través de bloques fijos.<br />
* [[Wikipedia:ReiserFS|ReiserFS]] - '''Sistema de archivos con journaling y altas prestaciones de Hans Reiser (V3)''' que utiliza un método muy interesante de transferencia de datos basado en un algoritmo creativo e innovador. ReiserFS es anunciado como muy rápido, especialmente cuando se trata de muchos archivos pequeños. ReiserFS es rápido en dar formato, sin embargo, comparativamente lento en el montaje. Muy maduro y estable. ReiserFS (V3) no está siendo activamente desarrollado en este momento. Generalmente considerado como una buena opción para {{ic|/var}}.<br />
* [[Wikipedia:Paging|Swap]] - es el sistema de archivos utilizado para particiones de intercambio.<br />
* [[Wikipedia:File Allocation Table#VFAT|VFAT]] - '''Virtual File Allocation Table''' es técnicamente sencillo y con el apoyo de prácticamente todos los sistemas operativos existentes. Esto hace que sea un formato útil para las tarjetas de memoria de estado sólido y una manera práctica para compartir datos entre sistemas operativos. VFAT soporta nombres largos de archivos.<br />
* [[Wikipedia:XFS|XFS]] - '''Primeros sistemas de archivos con journaling desarrollado originalmente por Silicon Graphics''' para el sistema operativo IRIX y portado después a GNU/Linux. Proporciona un rendimiento muy rápido en los archivos y sistemas de archivos grandes y es muy rápido en el formato y montaje. Pruebas de benchmark comparativa han demostrado que es más lento cuando trata con muchos archivos pequeños. XFS es muy maduro y ofrece capacidad de desfragmentación en línea.<br />
* [[Wikipedia:ZFS|ZFS]] - '''Combinación de sistema de archivos y gestor de volumen lógicos diseñado por Sun Microsystems'''. Las características de ZFS incluyen la protección contra la corrupción de datos, soporte para grandes capacidades de almacenamiento, la integración de los conceptos de sistema de archivos y la gestión de volúmenes, instantáneas y clones copy-on-write, la comprobación continua de la integridad y reparación automática de los archivos, RAID-Z y NFSv4 ACL nativos.<br />
<br />
===Journaling===<br />
<br />
Todos los sistemas de archivos antes vistos, con la excepción de ext2, FAT16/32, usan [[wikipedia:es:Journaling|journaling]]. Journaling proporciona la rehabilitación de los fallos al registrar los cambios antes de que comprometan al sistema de archivos. En caso de un fallo del sistema o un corte de energía, este procedimiento es más rápido para informar en línea al sistema y es menos probable de que se dañe. El registro se lleva a cabo en un área específica del sistema de archivos.<br />
<br />
No todas las técnicas de journaling son iguales. Solo ext3 y ext4 proporcionan la función ''data-mode'' («modalidad de datos») de journaling, que registra los datos y los meta-datos. La «modalidad de datos» de journaling conlleva una pérdida de velocidad y no está habilitada de forma predeterminada. Los otros sistemas de archivos ofrecen una «modalidad de clasificación» (''ordered-mode'') de journaling, que solo registra los meta-datos. Mientras el resto de los journaling restaurarán un sistema de archivos a un estado válido después de un accidente, la «modalidad de datos» de journaling ofrece la mayor protección contra la corrupción y pérdida de datos. Sin embaro, este último compromete el rendimiento del sistema, porque la modalidad de datos journaling hace dos operaciones de escritura: primero al registro y luego al disco. El equilibrio entre la velocidad del sistema y la seguridad de los datos debe tenerse presente a la hora de elegir entre uno u otro tipo de sistemas de archivos.<br />
<br />
=== Soporte técnico de Arch Linux ===<br />
<br />
* {{App|btrfs-progs|soporte técnico para [[Btrfs]].|http://btrfs.wiki.kernel.org/|{{Pkg|btrfs-progs}}}}<br />
* {{App|dosfstools|soporte técnico para VFAT.|http://www.daniel-baumann.ch/software/dosfstools/|{{Pkg|dosfstools}}}}<br />
* {{App|exfat-utils|soporte técnico para exFAT.|http://code.google.com/e/exfat/|{{Pkg|exfat-utils}}}}<br />
* {{App|f2fs-tools|Soporte técnico para [[F2FS]].|https://git.kernel.org/cgit/linux/kernel/git/jaegeuk/f2fs-tools.git|{{Pkg|f2fs-tools}}}}<br />
* {{App|e2fsprogs|soporte técnico para ext2, [[ext3]], [[ext4]].|http://e2fsprogs.sourceforge.net|{{Pkg|e2fsprogs}}}}<br />
* {{App|jfsutils|soporte técnico para [[JFS]].|http://jfs.sourceforge.net|{{Pkg|jfsutils}}}}<br />
* {{App|nilfs-utils|soporte técnico para NILFS.|http://www.nilfs.org/|{{Pkg|nilfs-utils}}}}<br />
* {{App|ntfs-3g|soporte técnico para [[NTFS]].|http://www.tuxera.com/community/ntfs-3g-download/|{{Pkg|ntfs-3g}}}}<br />
* {{App|reiser4progs|soporte técnico para [[Reiser4|ReiserFSv4]].|http://sourceforge.net/projects/reiser4/|{{AUR|reiser4progs}}}}<br />
* {{App|reiserfsprogs|soporte técnico para ReiserFSv3.|https://www.kernel.org/|{{Pkg|reiserfsprogs}}}}<br />
* {{App|xfsprogs|soporte técnico para [[XFS]].|http://oss.sgi.com/projects/xfs/|{{Pkg|xfsprogs}}}}<br />
* {{App|zfs|soporte técnico para [[ZFS]].|http://zfsonlinux.org/|{{AUR|zfs-git}}{{Broken package link|{{aur-mirror|zfs-git}}}}}}<br />
<br />
=== Sistemas de archivos basados en FUSE ===<br />
<br />
El [[Wikipedia:es:Sistema_de_archivos_en_el_espacio_de_usuario|sistema de archivos en el espacio de usuario]] (FUSE) es un mecanismo para sistemas operativos tipo Unix que permite a los usuarios sin privilegios de root crear sus propios sistemas de archivos sin necesidad de editar el código del núcleo. Esto se logra mediante la ejecución del código del sistema de archivos en ''el espacio de usuario'', al tiempo que el módulo del kernel FUSE solo proporciona un «puente» a las interfaces del kernel que se está ejecutando.<br />
<br />
== Crear un sistema de archivos ==<br />
{{Nota|<br />
* Si desea cambiar el diseño de las particiones, vea [[Partitioning]].<br />
* Si desea crear una partición de intercambio, vea [[Swap]].<br />
}}<br />
<br />
Antes de comenzar, se necesita saber qué nombre dio Linux al dispositivo. Los discos duros y memorias USB aparecen como {{ic|/dev/sd''x''}}, donde «x» es una letra minúscula, mientras que las particiones aparecen como {{ic|/dev/sd''xY''}}, donde «Y» es un número.<br />
<br />
Por lo general, los sistemas de archivos se crean en una partición, pero también se pueden crear en el interior de contenedores lógicos como [[LVM]], [[RAID]] o [[dm-crypt]].<br />
<br />
Para crear un nuevo sistema de archivos en una partición, el sistema de archivos existente ubicado en la partición no debe estar montado.<br />
<br />
Si el dispositivo que desea formatear está montado, se mostrará en la columna ''MOUNTPOINT'' al ejecutar:<br />
<br />
$ lsblk<br />
<br />
Para desmontarlo, puede usar ''umount'' sobre el directorio donde se ha montado el disco:<br />
<br />
# umount /punto_de_montaje<br />
<br />
Para crear un nuevo sistema de archivos de tipo ext4, por ejemplo, en una partición haga:<br />
<br />
{{Advertencia|Al formatear un dispositivo se eliminan todos los datos que contenga, asegúrese de hacer copias de seguridad de todo aquello que desee conservar.}}<br />
<br />
# mkfs.ext4 /dev/''partición''<br />
<br />
La orden {{ic|mkfs}} es solo un sistema front-end unificado para las diferentes herramientas de {{ic|mkfs.''fstype''}}, por lo que alternativamente se puede usar también así:<br />
<br />
# mkfs -t ext4 /dev/''partición''<br />
<br />
== Véase también ==<br />
<br />
* [[wikipedia:Comparison of file systems]]</div>
Jristz
https://wiki.archlinux.org/index.php?title=XDG_Base_Directory&diff=476717
XDG Base Directory
2017-05-10T22:32:59Z
<p>Jristz: /* Supported */ updated for snes9x</p>
<hr />
<div>[[Category:Dotfiles]]<br />
[[ja:XDG Base Directory サポート]]<br />
{{Related articles start}}<br />
{{Related|dotfiles}}<br />
{{Related|Xdg user directories}}<br />
{{Related articles end}}<br />
This article exists to catalog the growing set of software using the [http://standards.freedesktop.org/basedir-spec/latest/ XDG Base Directory Specification] introduced in 2003. This is here to demonstrate the viability of this specification by listing commonly found dotfiles and their support status. For those not currently supporting the Base Directory Specification, workarounds will be demonstrated to emulate it instead.<br />
<br />
The workarounds will be limited to anything not involving patching the source, executing code stored in [[environment variable]]s or compile-time options. The rationale for this is that configurations should be portable across systems and having compile-time options prevent that.<br />
<br />
Hopefully this will provide a source of information about exactly what certain kinds of dotfiles are and where they come from.<br />
<br />
==XDG Base Directory specification==<br />
<br />
Please read the [http://standards.freedesktop.org/basedir-spec/latest/ full specification]. This section will attempt to break down the essence of what it tries to achieve.<br />
<br />
Only {{ic|XDG_RUNTIME_DIR}} is set by default through [http://www.freedesktop.org/software/systemd/man/pam_systemd.html pam_systemd]. It is up to the user to explicitly [[define]] the other variables, using absolute paths that point to existing directories.<br />
<br />
===User directories===<br />
<br />
* {{ic|XDG_CONFIG_HOME}}<br />
** Where user-specific configurations should be written (analogous to {{ic|/etc}}).<br />
** Should default to {{ic|$HOME/.config}}.<br />
<br />
* {{ic|XDG_CACHE_HOME}}<br />
** Where user-specific non-essential (cached) data should be written (analogous to {{ic|/var/cache}}).<br />
** Should default to {{ic|$HOME/.cache}}.<br />
<br />
* {{ic|XDG_DATA_HOME}}<br />
** Where user-specific data files should be written (analogous to {{ic|/usr/share}}).<br />
** Should default to {{ic|$HOME/.local/share}}.<br />
<br />
* {{ic|XDG_RUNTIME_DIR}}<br />
** Used for non-essential, user-specific data files such as sockets, named pipes, etc.<br />
** Not required to have a default value; warnings should be issued if not set or equivalents provided.<br />
** Must be owned by the user with an access mode of {{ic|0700}}.<br />
** Filesystem fully featured by standards of OS.<br />
** Must be on the local filesystem.<br />
** May be subject to periodic cleanup.<br />
** Modified every 6 hours or set sticky bit if persistence is desired.<br />
** Can only exist for the duration of the user's login.<br />
** Should not store large files as it may be mounted as a tmpfs.<br />
<br />
===System directories===<br />
<br />
* {{ic|XDG_DATA_DIRS}}<br />
** List of directories seperated by {{ic|:}} (analogous to {{ic|PATH}}).<br />
** Should default to {{ic|/usr/local/share:/usr/share}}.<br />
<br />
* {{ic|XDG_CONFIG_DIRS}}<br />
** List of directories seperated by {{ic|:}} (analogous to {{ic|PATH}}).<br />
** Should default to {{ic|/etc/xdg}}.<br />
<br />
==Contributing==<br />
<br />
When contributing make sure to use the correct section.<br />
<br />
Nothing should require code evaluation (such as [[vim]] and {{ic|VIMINIT}}), patches or compile-time options to gain support and anything which does must be deemed hardcoded. Additionally if the process is too error prone or difficult, such as [https://www.haskell.org/cabal/ Haskell's cabal] or eclipse, they should also be considered as hardcoded.<br />
<br />
* The first column should be the project name, ideally the command name if it is not ambigious, linked to their website or an appropriate internal wiki article.<br />
<br />
* The second column is for any legacy files and directories the project had (one per line), this is done so people can find them even if they are no longer read.<br />
<br />
* In the third, try to find the commit or version a project switched to XDG Base Directory or any open discussions and include them in the next two columns (two per line).<br />
<br />
* The last column should include any appropriate workarounds or solutions. Please verify that your solution is correct and functional.<br />
<br />
==Supported==<br />
<br />
{| class="wikitable sortable" style="width: 100%"<br />
! Application<br />
! Legacy Path<br />
! Supported Since<br />
! Discussion<br />
! Notes<br />
|-<br />
| [https://github.com/SirCmpwn/aerc aerc]<br />
|<br />
|<br />
|<br />
|<br />
|-<br />
| [https://github.com/Antimicro/antimicro/ antimicro]<br />
| {{ic|~/.antimicro}}<br />
| [https://github.com/Antimicro/antimicro/commit/edba864 edba864]<br />
| [https://github.com/Antimicro/antimicro/issues/5]<br />
|<br />
|-<br />
| [[aria2]]<br />
| {{ic|~/.aria2}}<br />
| [https://github.com/tatsuhiro-t/aria2/commit/8bc1d37 8bc1d37]<br />
| [https://github.com/tatsuhiro-t/aria2/issues/27]<br />
|<br />
|-<br />
| [[blender]]<br />
| {{ic|~/.blender}}<br />
| [http://git.blender.org/gitweb/gitweb.cgi/blender.git/commit/4293f473 4293f473]<br />
| [https://developer.blender.org/T28943]<br />
|<br />
|-<br />
| [https://github.com/falconindy/burp burp]<br />
|<br />
| [https://github.com/falconindy/burp/commit/f2388e9 f2388e9]<br />
|<br />
|<br />
|-<br />
| [[chromium]]<br />
| {{ic|~/.chromium}}<br />
| [https://src.chromium.org/viewvc/chrome?revision=23057&view=revision 23057]<br />
| [https://groups.google.com/forum/#!topic/chromium-dev/QekVQxF3nho] [https://code.google.com/p/chromium/issues/detail?id=16976]<br />
|<br />
|-<br />
| [http://citra-emu.org/ citra]<br />
| {{ic|~/.citra-emu}}<br />
| [https://github.com/citra-emu/citra/commit/f7c3193fec f7c3193fec]<br />
| [https://github.com/citra-emu/citra/pull/575]<br />
|<br />
|-<br />
| [[PHP#Composer|composer]]<br />
| {{ic|~/.composer}}<br />
| [https://github.com/composer/composer/releases/tag/1.0.0-beta1 1.0.0-beta1]<br />
| [https://github.com/composer/composer/pull/1407]<br />
|<br />
|-<br />
| [https://github.com/falconindy/cower cower]<br />
|<br />
| [https://github.com/falconindy/cower/commit/8b70805 8b70805]<br />
|<br />
|<br />
|-<br />
| [https://wiki.gnome.org/Apps/DFeet d-feet]<br />
| {{ic|~/.d-feet}}<br />
| [https://git.gnome.org/browse/d-feet/commit/?id==7f6104b 7f6104b]<br />
|<br />
|<br />
|-<br />
| [https://wiki.gnome.org/dconf dconf]<br />
|<br />
|<br />
|<br />
|<br />
|-<br />
| [[Dolphin emulator|dolphin-emu]]<br />
| {{ic|~/.dolphin-emu}}<br />
| [https://github.com/dolphin-emu/dolphin/commit/a498c68 a498c68]<br />
| [https://github.com/dolphin-emu/dolphin/pull/2304]<br />
|<br />
|-<br />
| [http://dr14tmeter.sourceforge.net dr14-meter]<br />
| <br />
| [https://github.com/simon-r/dr14_t.meter/commit/7e777ca645298ec898b3c76e3ec472ed6ed43e8a 7e777ca64]<br />
| [https://github.com/simon-r/dr14_t.meter/pull/30]<br />
| Hardcoded {{ic|$HOME/.config/dr14meter}}<br />
|-<br />
| [http://www.knopwob.org/dunst/index.html dunst]<br />
|<br />
| [https://github.com/knopwob/dunst/commit/78b6e2b1 78b6e2b1]<br />
| [https://github.com/knopwob/dunst/issues/22]<br />
|<br />
|-<br />
| [[dwb]]<br />
|<br />
|<br />
|<br />
|<br />
|-<br />
| [[fish]]<br />
|<br />
|<br />
|<br />
|<br />
|-<br />
| [[fontconfig]]<br />
| {{ic|~/.fontconfig}}<br />
<br />
{{ic|~/.fonts}}<br />
| [http://cgit.freedesktop.org/fontconfig/commit/?id=8c255fb1 8c255fb1]<br />
|<br />
| Use {{ic|"$XDG_DATA_HOME"/fonts}} to store fonts instead.<br />
|-<br />
| [http://fontforge.github.io/ fontforge]<br />
| {{ic|~/.FontForge}}<br />
<br />
{{ic|~/.PfaEdit}}<br />
| [https://github.com/fontforge/fontforge/commit/e4c2cc7432 e4c2cc7432]<br />
| [https://github.com/fontforge/fontforge/issues/847] [https://github.com/fontforge/fontforge/issues/991]<br />
|<br />
|-<br />
| [http://www.freerdp.com/ freerdp]<br />
| {{ic|~/.freerdp}}<br />
| [https://github.com/FreeRDP/FreeRDP/commit/edf6e7258d edf6e7258d]<br />
|<br />
|<br />
|-<br />
| [https://projects.gnome.org/gconf gconf]<br />
| {{ic|~/.gconf}}<br />
| [https://git.gnome.org/browse/gconf/commit/?id=fc28caa7 fc28caa7]<br />
| [https://bugzilla.gnome.org/show_bug.cgi?id=674803]<br />
|<br />
|-<br />
| [[git]]<br />
| {{ic|~/.gitconfig}}<br />
| [https://github.com/git/git/commit/0d94427e 0d94427e]<br />
|<br />
|<br />
|-<br />
| [http://gstreamer.freedesktop.org/ gstreamer]<br />
| {{ic|~/.gstreamer-0.10}}<br />
| [http://cgit.freedesktop.org/gstreamer/gstreamer/commit/?id=4e36f93924cf 4e36f93924cf]<br />
| [https://bugzilla.gnome.org/show_bug.cgi?id=518597]<br />
|<br />
|-<br />
| [[gtk|gtk3]]<br />
|<br />
|<br />
|<br />
|<br />
|-<br />
| [http://hisham.hm/htop/ htop]<br />
| {{ic|~/.htoprc}}<br />
| [https://github.com/hishamhm/htop/commit/93233a67 93233a67]<br />
|<br />
|<br />
|-<br />
| [[i3]]<br />
| {{ic|~/.i3}}<br />
| [http://code.stapelberg.de/git/i3/commit/?id=7c130fb54 7c130fb54]<br />
|<br />
|<br />
|-<br />
| [http://i3wm.org/i3status/ i3status]<br />
| {{ic|~/.i3status.conf}}<br />
| [http://code.stapelberg.de/git/i3status/commit/?id=c3f7fc4994 c3f7fc4994]<br />
|<br />
|<br />
|-<br />
| [http://www.imagemagick.org/script/index.php imagemagick]<br />
|<br />
|<br />
|<br />
|<br />
|-<br />
| [[inkscape]]<br />
| {{ic|~/.inkscape}}<br />
| [http://wiki.inkscape.org/wiki/index.php/Release_notes/0.47#Preferences 0.47]<br />
| [https://bugs.launchpad.net/inkscape/+bug/199720]<br />
|<br />
|-<br />
| [https://www.ctan.org/pkg/latexmk?lang=en latexmk]<br />
| {{ic|~/.latexmkrc}}<br />
|<br />
|<br />
|<br />
|-<br />
| [http://lftp.yar.ru/ lftp]<br />
| {{ic|~/.lftp}}<br />
| [https://github.com/lavv17/lftp/commit/21dc400 21dc400]<br />
| [https://www.mail-archive.com/lftp@uniyar.ac.ru/msg04301.html]<br />
|<br />
|-<br />
| [https://github.com/Sude-/lgogdownloader/ lgogdownloader]<br />
| {{ic|~/.gogdownloader}}<br />
| [https://github.com/Sude-/lgogdownloader/commit/d430af63d000 d430af63d000]<br />
| [https://github.com/Sude-/lgogdownloader/issues/4]<br />
|<br />
|-<br />
| [[LibreOffice]]<br />
|<br />
| [https://cgit.freedesktop.org/libreoffice/ure/commit/?id=a6f56f70a4930d3f71bd9c9b90fdd0ba20e4da5f a6f56f70] [https://cgit.freedesktop.org/libreoffice/bootstrap/commit/?id=25bd2eec77ed774a37d1cddd0d72312e23d5e9fd 25bd2eec]<br />
| [https://bugs.documentfoundation.org/show_bug.cgi?id=32263]<br />
|<br />
|-<br />
| [[livestreamer]]<br />
| {{ic|~/.livestreamerrc}}<br />
| [https://github.com/chrippa/livestreamer/commit/ea805917 ea805917]<br />
| [https://github.com/chrippa/livestreamer/pull/106]<br />
|<br />
|-<br />
| [[llpp]]<br />
|<br />
| [http://repo.or.cz/w/llpp.git/commit/3ab86f0cb 3ab86f0cb]<br />
|<br />
| Currently llpp places the configuration directly under {{ic|XDG_CONFIG_HOME}} instead of creating a directory.<br />
|-<br />
| [[mc]]<br />
| {{ic|~/.mc}}<br />
| [https://www.midnight-commander.org/changeset/1b9957058 1b9957058] [https://www.midnight-commander.org/changeset/0b7115647 0b7115647]<br />
<br />
[https://www.midnight-commander.org/changeset/ce401d797 ce401d797]<br />
| [https://www.midnight-commander.org/ticket/1851]<br />
|<br />
|-<br />
| [[Mercurial]]<br />
| {{ic|~/.hgrc}}<br />
| [https://www.mercurial-scm.org/repo/hg/rev/354020079723 354020079723] [https://www.mercurial-scm.org/wiki/Release4.2 4.2]<br />
|<br />
| {{ic|XDG_CONFIG_HOME/hg/hgrc}}.<br />
|-<br />
| [https://www.mesa3d.org/ mesa]<br />
|<br />
| [https://cgit.freedesktop.org/mesa/mesa/commit/?id=87ab26b2ab35a29d446ae66f1795d40c184c0739 87ab26b2ab]<br />
|<br />
| {{ic|XDG_CACHE_HOME/mesa}}<br />
|-<br />
| [http://milkytracker.org/ milkytracker]<br />
| {{ic|~/.milkytracker_config}}<br />
| [https://github.com/Deltafire/MilkyTracker/commit/eb487c55 eb487c55]<br />
| [https://github.com/Deltafire/MilkyTracker/issues/12]<br />
|<br />
|-<br />
| [https://github.com/mintty/mintty mintty]<br />
| {{ic|~/.minttyrc}}<br />
| [https://github.com/mintty/mintty/commit/cff1bd8f cff1bd8f] v2.3.7.<br />
| [https://github.com/mintty/mintty/issues/525]<br />
|-<br />
| [[mpd]]<br />
| {{ic|~/.mpdconf}}<br />
| [http://git.musicpd.org/cgit/master/mpd.git/commit/?id=87b73284 87b73284]<br />
|<br />
|<br />
|-<br />
| [[mpv]]<br />
| {{ic|~/.mpv}}<br />
| [https://github.com/mpv-player/mpv/commit/cb250d490 cb250d490]<br />
| [https://github.com/mpv-player/mpv/pull/864]<br />
|<br />
|-<br />
| [[mutt]]<br />
| {{ic|~/.mutt}}<br />
| [https://dev.mutt.org/trac/changeset/42fee7585f 42fee7585f]<br />
| [http://dev.mutt.org/trac/ticket/3207]<br />
|<br />
|-<br />
| [http://mypaint.intilinux.com/ mypaint]<br />
| {{ic|~/.mypaint}}<br />
| [https://github.com/mypaint/mypaint/commit/cf723b74cd cf723b74cd]<br />
|<br />
|<br />
|-<br />
| [[ncmpcpp]]<br />
| {{ic|~/.ncmpcpp}}<br />
| [https://github.com/arybczak/ncmpcpp/commit/38d9f811de888e512b0115f551a9679eab4607f9 38d9f811] [https://github.com/arybczak/ncmpcpp/commit/27cd86e0638bba3a7a78e44ac40dc98a58d1d90d 27cd86e0]<br />
| [https://github.com/arybczak/ncmpcpp/issues/79] [https://github.com/arybczak/ncmpcpp/issues/110]<br />
| {{ic|ncmpcpp_directory}} should be set to avoid an {{ic|error.log}} file in {{ic|~/.ncmpcpp}}.<br />
|-<br />
| [[neovim]]<br />
| {{ic|~/.nvim}}<br />
<br />
{{ic|~/.nvimlog}}<br />
<br />
{{ic|~/.nviminfo}}<br />
| [https://github.com/neovim/neovim/commit/1ca5646bb 1ca5646bb]<br />
| [https://github.com/neovim/neovim/issues/78] [https://github.com/neovim/neovim/pull/3198]<br />
|<br />
|-<br />
| [[newsbeuter]]<br />
| {{ic|~/.newsbeuter}}<br />
| [https://github.com/akrennmair/newsbeuter/commit/3c57824c5 3c57824c5]<br />
| [https://github.com/akrennmair/newsbeuter/pull/39]<br />
| It is required to create both directories [http://newsbeuter.org/doc/newsbeuter.html#_xdg_base_directory_support]:<br />
<br />
{{ic|1=$ mkdir -p "$XDG_DATA_HOME"/newsbeuter "$XDG_CONFIG_HOME"/newsbeuter}}<br />
|-<br />
| [[OfflineIMAP]]<br />
| {{ic|~/.offlineimaprc}}<br />
| [https://github.com/OfflineIMAP/offlineimap/commit/5150de5 5150de5]<br />
| [https://github.com/OfflineIMAP/offlineimap/issues/32]<br />
|<br />
|-<br />
| [https://bitbucket.org/opentyrian/opentyrian/wiki/Home opentyrian]<br />
| {{ic|~/.opentyrian}}<br />
| [https://bitbucket.org/opentyrian/opentyrian/commits/8d45ff2 8d45ff2]<br />
| [https://web.archive.org/web/20140815181350/http://code.google.com/p/opentyrian/issues/detail?id=125]<br />
|<br />
|-<br />
| [http://pcsx2.net/ pcsx2]<br />
| {{ic|~/.pcsx2}}<br />
| [https://github.com/PCSX2/pcsx2/commit/87f1e8f77 87f1e8f77] [https://github.com/PCSX2/pcsx2/commit/a9020c606 a9020c606]<br />
<br />
[https://github.com/PCSX2/pcsx2/commit/3b22f0fb0 3b22f0fb0] [https://github.com/PCSX2/pcsx2/commit/0a012aec2 0a012aec2]<br />
| [https://github.com/PCSX2/pcsx2/issues/352] [https://github.com/PCSX2/pcsx2/issues/381]<br />
|<br />
|-<br />
| [https://pip.pypa.io/ pip]<br />
| {{ic|~/.pip}}<br />
| [https://github.com/pypa/pip/blob/548a9136525815dff41acd845c558a0b36eb1c5f/NEWS.rst#60-2014-12-22 6.0]<br />
| [https://github.com/pypa/pip/issues/1733]<br />
|<br />
|-<br />
| [http://www.ppsspp.org/ ppsspp]<br />
| {{ic|~/.ppsspp}}<br />
| [https://github.com/hrydgard/ppsspp/commit/132fe47c7d 132fe47c7d]<br />
| [https://github.com/hrydgard/ppsspp/issues/4623]<br />
|<br />
|-<br />
| {{pkg|procps-ng}}<br />
| {{ic|~/.toprc}}<br />
| [https://gitlab.com/procps-ng/procps/commit/af53e170b9 af53e170b9]<br />
| [https://gitlab.com/procps-ng/procps/merge_requests/38] [https://bugzilla.redhat.com/show_bug.cgi?id=1155265]<br />
|<br />
|-<br />
| [https://github.com/Cloudef/orbment/ orbment]<br />
|<br />
|<br />
|<br />
|<br />
|-<br />
| [[pacman]]<br />
| {{ic|~/.makepkg.conf}}<br />
| [https://projects.archlinux.org/pacman.git/commit/?id=80eca94c8 80eca94c8]<br />
| [https://mailman.archlinux.org/pipermail/pacman-dev/2014-July/019178.html]<br />
|<br />
|-<br />
| [[PulseAudio]]<br />
| {{ic|~/.pulse}}<br />
<br />
{{ic|~/.pulse-cookie}}<br />
| [http://cgit.freedesktop.org/pulseaudio/pulseaudio/commit/?id=59a8618dcd9 59a8618dcd9] [http://cgit.freedesktop.org/pulseaudio/pulseaudio/commit/?id=87ae8307057 87ae8307057]<br />
<br />
[http://cgit.freedesktop.org/pulseaudio/pulseaudio/commit/?id=9ab510a6921 9ab510a6921] [http://cgit.freedesktop.org/pulseaudio/pulseaudio/commit/?id=4c195bcc9d5 4c195bcc9d5]<br />
| [https://bugzilla.redhat.com/show_bug.cgi?id=845607]<br />
|<br />
|-<br />
| [http://pyroom.org/index.html pyroom]<br />
|<br />
|<br />
|<br />
|<br />
|-<br />
| [[qutebrowser]]<br />
|<br />
|<br />
|<br />
|<br />
|-<br />
| [[qtile]]<br />
|<br />
| [https://github.com/qtile/qtile/commit/fd8686e5b4e4fa20bb82039ed8a83768434585ec fd8686e] [https://github.com/qtile/qtile/commit/66d704bce83f631b3326f10a1bc9fc22f8e6a6fd 66d704b]<br />
<br />
[https://github.com/qtile/qtile/commit/51cff019917b87bda696b381493f969ceb6cc350 51cff01]<br />
| [https://github.com/qtile/qtile/pull/835]<br />
| Some optional bar widgets can create files and directories in non-compliant paths, but most often these are still configurable.<br />
|-<br />
| [http://www.libretro.com/ retroarch]<br />
|<br />
|<br />
|<br />
|<br />
|-<br />
| [http://rr-project.org/ rr]<br />
| {{ic|~/.rr}}<br />
| [https://github.com/mozilla/rr/commit/02e7d41e 02e7d41e]<br />
| [https://github.com/mozilla/rr/issues/1455]<br />
|<br />
|-<br />
| [http://www.snes9x.com/ Snes9x]<br />
| {{ic|~/.snes9x}}<br />
| [https://github.com/snes9xgit/snes9x/commit/93b5f11641fa22d4518f251d6e3db99219864677 19864677]<br />
| [https://github.com/snes9xgit/snes9x/issues/194]<br />
| By default configuration is blank, is intended that the user fill it at they will (throw the gui or manually) before launch a rom<br />
|-<br />
| {{AUR|sublime-text-dev}}<br />
|<br />
|<br />
|<br />
| Cache is placed in {{ic|$XDG_CONFIG_HOME/sublime-text-3/Cache}} instead of expected {{ic|$XDG_CACHE_HOME/sublime-text-3}}.<br />
|-<br />
| [[surfraw]]<br />
| {{ic|~/.surfraw.conf}}<br />
<br />
{{ic|~/.surfraw.bookmarks}}<br />
| [http://anonscm.debian.org/cgit/surfraw/surfraw.git/commit/?id=3e4591d8 3e4591d8] [http://anonscm.debian.org/cgit/surfraw/surfraw.git/commit/?id=bd8c427d bd8c427d]<br />
<br />
[http://anonscm.debian.org/cgit/surfraw/surfraw.git/commit/?id=f57fc718 f57fc718]<br />
|<br />
|<br />
|-<br />
| [[sway]]<br />
| {{ic|~/.sway/config}}<br />
| [https://github.com/SirCmpwn/sway/commit/614393c09 614393c09]<br />
| [https://github.com/SirCmpwn/sway/issues/5]<br />
|<br />
|-<br />
| [[systemd]]<br />
|<br />
|<br />
|<br />
|<br />
|-<br />
| [[termite]]<br />
|<br />
|<br />
|<br />
|<br />
|-<br />
| [[transmission]]<br />
| {{ic|~/.transmission}}<br />
| [https://trac.transmissionbt.com/changeset/5517 5517]<br />
| [https://trac.transmissionbt.com/ticket/684]<br />
|<br />
|-<br />
| [https://www.kernel.org/pub/linux/utils/util-linux/ util-linux]<br />
|<br />
| [http://git.kernel.org/cgit/utils/util-linux/util-linux.git/commit/?id=570b32100 570b32100]<br />
|<br />
|<br />
|-<br />
| [[uzbl]]<br />
|<br />
| [https://github.com/uzbl/uzbl/commit/c6fd63a c6fd63a]<br />
| [https://github.com/uzbl/uzbl/pull/150]<br />
|<br />
|-<br />
| [http://fanglingsu.github.io/vimb/ vimb]<br />
|<br />
|<br />
|<br />
|<br />
|-<br />
| [[VirtualBox]]<br />
| {{ic|~/.VirtualBox}}<br />
| [https://www.virtualbox.org/ticket/5099?action=diff&version=7 4.3]<br />
| [https://www.virtualbox.org/ticket/5099]<br />
|<br />
|-<br />
| [[VLC media player]]<br />
| {{ic|~/.vlcrc}}<br />
| [http://git.videolan.org/?p=vlc.git;a=commit;h=16f32e1500887c0dcd33cb06ad71759a81a52878 16f32e15]<br />
| [https://trac.videolan.org/vlc/ticket/1267]<br />
|<br />
|-<br />
| [https://www.warsow.gg/ warsow]<br />
| {{ic|~/.warsow-2.x}}<br />
| [https://github.com/Qfusion/qfusion/commit/98ece3f 98ece3f]<br />
| [https://github.com/Qfusion/qfusion/issues/298]<br />
|<br />
|-<br />
| [[wireshark]]<br />
| {{ic|~/.wireshark}}<br />
| [https://code.wireshark.org/review/gitweb?p=wireshark.git;a=commit;h=b0b53fa5937aa7ba258427ca0f3581dba725230d b0b53fa5]<br />
|<br />
|<br />
|-<br />
| [https://github.com/derat/xsettingsd xsettingsd]<br />
| {{ic|~/.xsettingsd}}<br />
| [https://github.com/derat/xsettingsd/commit/b4999f5e9e99224caf97d09f25ee731774ecd7be 4ecd7be]<br />
|<br />
|<br />
|-<br />
| [[xmonad]]<br />
| {{ic|~/.xmonad}}<br />
| [https://github.com/xmonad/xmonad/commit/40fc10b6a5682ce1d6ba7f0679962926ef6cfade 40fc10b6]<br />
| [https://github.com/xmonad/xmonad/issues/61] [https://code.google.com/p/xmonad/issues/detail?id=484]<br />
| Alternatively the environments {{ic|XMONAD_CONFIG_HOME}}, {{ic|XMONAD_DATA_HOME}}, and {{ic|XMONAD_CACHE_HOME}} are also available.<br />
|}<br />
<br />
==Partial==<br />
{| class="wikitable sortable" style="width: 100%"<br />
! Application<br />
! Legacy Path<br />
! Supported Since<br />
! Discussion<br />
! Notes<br />
|-<br />
| [http://abook.sourceforge.net/ abook]<br />
| {{ic|~/.abook}}<br />
|<br />
|<br />
| {{ic|1=$ abook --config "$XDG_CONFIG_HOME"/abook/abookrc \<br />
--datafile "$XDG_CACHE_HOME"/abook/addressbook}}<br />
|-<br />
| [[Anki]]<br />
| {{ic|~/Anki}}<br />
<br />
{{ic|~/Documents/Anki}}<br />
|<br />
| [https://github.com/dae/anki/pull/49] [https://github.com/dae/anki/pull/58]<br />
| {{ic|1=$ anki -b "$XDG_DATA_HOME"/Anki}}<br />
|-<br />
| [[aspell]]<br />
| {{ic|~/.aspell.conf}}<br />
|<br />
|<br />
|<br />
|-<br />
| [[Atom]]<br />
| {{ic|~/.atom}}<br />
|<br />
| [https://github.com/atom/atom/issues/8281]<br />
| {{ic|1=$ export ATOM_HOME="$XDG_DATA_HOME"/atom}}<br />
|-<br />
| [http://crates.io/ cargo]<br />
| {{ic|~/.cargo}}<br />
|<br />
| [https://github.com/rust-lang/cargo/pull/148] [https://github.com/rust-lang/cargo/issues/1734] [https://github.com/rust-lang/rfcs/pull/1615]<br />
| {{ic|1=$ export CARGO_HOME="$XDG_DATA_HOME"/cargo}}<br />
|-<br />
| [[ccache]]<br />
| {{ic|~/.ccache}}<br />
|<br />
|<br />
| {{ic|1=$ export CCACHE_DIR="$XDG_CACHE_HOME"/ccache}}<br />
|-<br />
| [https://github.com/cisco/ChezScheme ChezScheme]<br />
| {{ic|~/.chezscheme_history}}<br />
|<br />
|<br />
| {{ic|1=$ petite --eehistory "$XDG_DATA_HOME"/chezscheme/history}}<br />
|-<br />
| [[conky]]<br />
| {{ic|~/.conkyrc}}<br />
| [https://github.com/brndnmtthws/conky/commit/00481ee9a97025e8e2acd7303d080af1948f7980 00481ee]<br />
| [https://github.com/brndnmtthws/conky/issues/144]<br />
| {{ic|1=$ conky --config="$XDG_CONFIG_HOME"/conky/conkyrc}}<br />
|-<br />
| [[coreutils]]<br />
| {{ic|~/.dircolors}}<br />
|<br />
|<br />
| {{ic|1=$ source "$(dircolors "$XDG_CONFIG_HOME"/dircolors)"}}<br />
|-<br />
| [http://www.dungeoncrawl.org/ crawl]<br />
| {{ic|~/.crawl}}<br />
|<br />
|<br />
| The trailing slash is required:<br />
<br />
{{ic|1=$ export CRAWL_DIR="$XDG_DATA_HOME"/crawl/}}<br />
|-<br />
| [[dict]]<br />
| {{ic|~/.dictrc}}<br />
|<br />
|<br />
| {{ic|1=$ dict -c "$XDG_CONFIG_HOME"/dict/dictrc}}<br />
|-<br />
| [[ELinks]]<br />
| {{ic|~/.elinks}}<br />
|<br />
|<br />
| {{ic|1=$ export ELINKS_CONFDIR="$XDG_CONFIG_HOME"/elinks}}<br />
|-<br />
| [http://kripken.github.io/emscripten-site/ emscripten]<br />
| {{ic|~/.emscripten}}<br />
<br />
{{ic|~/.emscripten_sanity}}<br />
<br />
{{ic|~/.emscripten_ports}}<br />
<br />
{{ic|~/.emscripten_cache__last_clear}}<br />
|<br />
| [https://github.com/kripken/emscripten/issues/3624 3624]<br />
| {{ic|1=$ export EM_CONFIG="$XDG_CONFIG_HOME"/emscripten/config}}<br />
<br />
{{ic|1=$ export EM_CACHE="$XDG_CACHE_HOME"/emscripten/cache}}<br />
<br />
{{ic|1=$ export EM_PORTS="$XDG_DATA_HOME"/emscripten/cache}}<br />
<br />
{{ic|1=$ emcc --em-config "$XDG_CONFIG_HOME"/emscripten/config \<br />
--em-cache "$XDG_CACHE_HOME"/emscripten/cache}}<br />
|-<br />
| [http://www.gnu.org/software/gdb/ gdb]<br />
| {{ic|~/.gdbinit}}<br />
|<br />
|<br />
| {{ic|1=$ gdb -nh -x "$XDG_CONFIG_HOME"/gdb/init}}<br />
|-<br />
| [https://github.com/get-iplayer/get_iplayer get_iplayer]<br />
| {{ic|~/.get_iplayer}}<br />
|<br />
|<br />
| {{ic|1=$ export GETIPLAYERUSERPREFS="$XDG_DATA_HOME"/get_iplayer}}<br />
|-<br />
| [[GIMP]]<br />
| {{ic|~/.gimp-2.8}}<br />
{{ic|~/.thumbnails}}<br />
| [https://git.gnome.org/browse/gimp/commit/?id=60e0cfe 60e0cfe]<br />
| [https://bugzilla.gnome.org/show_bug.cgi?id=166643] [https://mail.gnome.org/archives/gimp-developer-list/2012-October/msg00028.html]<br />
| {{ic|1=$ export GIMP2_DIRECTORY="$XDG_CONFIG_HOME"/gimp}}<br />
|-<br />
| [http://guichaz.free.fr/gliv/ gliv]<br />
| {{ic|~/.glivrc}}<br />
|<br />
|<br />
| {{ic|1=$ gliv --glivrc="$XDG_CONFIG_HOME"/gliv/glivrc}}<br />
|-<br />
| [[GnuPG]]<br />
| {{ic|~/.gnupg}}<br />
|<br />
| [https://bugs.gnupg.org/gnupg/issue1456] [https://bugs.gnupg.org/gnupg/issue1018]<br />
| {{ic|1=$ export GNUPGHOME="$XDG_CONFIG_HOME"/gnupg}}<br />
<br />
{{ic|1=$ gpg2 --homedir "$XDG_CONFIG_HOME"/gnupg}}<br />
|-<br />
| [[Google Earth]]<br />
| {{ic|~/.googleearth}}<br />
|<br />
|<br />
| Some paths can be changed with the {{ic|KMLPath}} and {{ic|CachePath}} options in {{ic|~/.config/Google/GoogleEarthPlus.conf}}<br />
|-<br />
| [https://sourceforge.net/projects/gqclient GQ LDAP client]<br />
| {{ic|~/.gq}}<br />
{{ic|~/.gq-state}}<br />
| [https://sourceforge.net/p/gqclient/mailman/message/2053978 1.51]<br />
|<br />
| {{ic|1=$ export GQRC="$XDG_CONFIG_HOME"/gqrc}}<br />
<br />
{{ic|1=$ export GQSTATE="$XDG_DATA_HOME"/gq/gq-state}}<br />
<br />
{{ic|1=$ mkdir -p "$(dirname "$GQSTATE")"}}<br />
|-<br />
| [https://gradle.org/ gradle]<br />
| {{ic|~/.gradle}}<br />
|<br />
| [https://discuss.gradle.org/t/be-a-nice-freedesktop-citizen-move-the-gradle-to-the-appropriate-location-in-linux/2199]<br />
| {{ic|1=$ export GRADLE_USER_HOME="$XDG_DATA_HOME"/gradle}}<br />
|-<br />
| [[gtk]]<br />
| {{ic|~/.gtkrc}}<br />
|<br />
|<br />
| {{ic|1=$ export GTK_RC_FILES="$XDG_CONFIG_HOME"/gtk-1.0/gtkrc}}<br />
|-<br />
| [[gtk|gtk2]]<br />
| {{ic|~/.gtkrc-2.0}}<br />
|<br />
|<br />
| {{ic|1=$ export GTK2_RC_FILES="$XDG_CONFIG_HOME"/gtk-2.0/gtkrc}}<br />
|-<br />
| [http://httpie.org httpie]<br />
| {{ic|~/.httpie}}<br />
|<br />
| [https://github.com/jakubroztocil/httpie/issues/145]<br />
| {{ic|1=$ export HTTPIE_CONFIG_DIR="$XDG_CONFIG_HOME"/httpie}}<br />
|-<br />
| [http://ipython.org ipython]/[[jupyter]]<br />
| {{ic|~/.ipython}}<br />
|<br />
|<br />
| {{ic|1=$ export IPYTHONDIR="$XDG_CONFIG_HOME"/jupyter}}<br />
<br />
{{ic|1=$ export JUPYTER_CONFIG_DIR="$XDG_CONFIG_HOME"/jupyter}}<br />
|-<br />
| [[irssi]]<br />
| {{ic|~/.irssi}}<br />
|<br />
| [https://github.com/irssi/irssi/pull/511]<br />
| {{ic|1=$ irssi --config="$XDG_CONFIG_HOME"/irssi/config \<br />
--home="$XDG_DATA_HOME"/irssi}}<br />
|-<br />
| [[isync]]<br />
| {{ic|~/.mbsyncrc}}<br />
|<br />
|<br />
| {{ic|1=$ mbsync -c "$XDG_CONFIG_HOME"/isync/mbsyncrc}}<br />
|-<br />
| [[core utilities#less|less]]<br />
| {{ic|~/.lesshst}}<br />
|<br />
|<br />
| {{ic|1=$ mkdir -p "$XDG_CACHE_HOME"/less}}<br />
<br />
{{ic|1=$ export LESSHISTFILE="$XDG_CACHE_HOME"/less/history}}<br />
<br />
{{ic|1=$ export LESSHISTFILE=-}} can be used to disable this feature.<br />
<br />
{{ic|1=$ export LESSKEY="$XDG_CONFIG_HOME"/less/lesskey}}<br />
|-<br />
| [http://www.videolan.org/developers/libdvdcss.html libdvdcss]<br />
| {{ic|~/.dvdcss}}<br />
|<br />
| [https://mailman.videolan.org/pipermail/libdvdcss-devel/2014-August/001022.html]<br />
| {{ic|1=$ export DVDCSS_CACHE="$XDG_DATA_HOME"/dvdcss}}<br />
|-<br />
| [https://www.x.org/releases/current/doc/libICE/ice.html libice]<br />
| {{ic|~/.ICEauthority}}<br />
|<br />
| [https://bugs.freedesktop.org/show_bug.cgi?id=49173]<br />
| {{ic|1=$ export ICEAUTHORITY="$XDG_RUNTIME_DIR"/ICEauthority}}<br />
|-<br />
| [[Xorg|libx11]]<br />
| {{ic|~/.XCompose}}<br />
|<br />
|<br />
| {{ic|1=$ export XCOMPOSEFILE="$XDG_CONFIG_HOME"/X11/xcompose}}<br />
|-<br />
| [http://ltrace.org/ ltrace]<br />
| {{ic|~/.ltrace.conf}}<br />
|<br />
|<br />
| {{ic|1=$ ltrace -F "$XDG_CONFIG_HOME"/ltrace/ltrace.conf}}<br />
|-<br />
| {{pkg|maven}}<br />
| {{ic|~/.m2}}<br />
|<br />
|<br />
| {{ic|1=$ mvn -gs "$XDG_CONFIG_HOME"/maven/settings.xml}}<br />
{{hc|[http://maven.apache.org/settings.html settings.xml]|<nowiki><settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"<br />
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"<br />
xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0<br />
https://maven.apache.org/xsd/settings-1.0.0.xsd"><br />
...<br />
<localRepository>${env.XDG_CACHE_HOME}/maven/repository</localRepository><br />
...<br />
</settings></nowiki>}}<br />
|-<br />
| [[Mathematica]]<br />
| {{ic|~/.Mathematica}}<br />
|<br />
|<br />
| {{ic|1=$ export MATHEMATICA_USERBASE="$XDG_CONFIG_HOME"/mathematica}}<br />
|-<br />
| [http://mednafen.sourceforge.net/ mednafen]<br />
| {{ic|~/.mednafen}}<br />
|<br />
|<br />
| {{ic|1=$ export MEDNAFEN_HOME="$XDG_CONFIG_HOME"/mednafen}}<br />
|-<br />
| [[moc]]<br />
| {{ic|~/.moc}}<br />
|<br />
|<br />
| {{ic|1=$ mocp -M "$XDG_CONFIG_HOME"/moc}}<br />
<br />
{{ic|1=$ mocp -O MOCDir="$XDG_CONFIG_HOME"/moc}}<br />
|-<br />
| [[MPlayer]]<br />
| {{ic|~/.mplayer}}<br />
|<br />
|<br />
| {{ic|1=$ export MPLAYER_HOME="$XDG_CONFIG_HOME"/mplayer}}<br />
|-<br />
| {{pkg|ncurses}}<br />
| {{ic|~/.terminfo}}<br />
|<br />
|<br />
| Precludes system path searching:<br />
<br />
{{ic|1=$ export TERMINFO="$XDG_DATA_HOME"/terminfo}}<br />
<br />
{{ic|1=$ export TERMINFO_DIRS="$XDG_DATA_HOME"/terminfo:/usr/share/terminfo}}<br />
|-<br />
| [http://www.musicpd.org/clients/ncmpc/ ncmpc]<br />
| {{ic|~/.ncmpc}}<br />
|<br />
|<br />
| {{ic|ncmpc -f "$XDG_CONFIG_HOME"/ncmpc/config}}<br />
|-<br />
| [[notmuch]]<br />
| {{ic|~/.notmuch-config}}<br />
|<br />
| [http://notmuchmail.org/pipermail/notmuch/2011/007007.html]<br />
| {{ic|1=$ export NOTMUCH_CONFIG="$XDG_CONFIG_HOME"/notmuch/notmuchrc}}<br />
<br />
{{ic|1=$ export NMBGIT="$XDG_DATA_HOME"/notmuch/nmbug}}<br />
|-<br />
| {{pkg|npm}}<br />
| {{ic|~/.npm}}<br />
<br />
{{ic|~/.npmrc}}<br />
|<br />
| [https://github.com/npm/npm/issues/6675]<br />
| {{ic|1=$ export NPM_CONFIG_USERCONFIG=$XDG_CONFIG_HOME/npm/npmrc}}<br />
{{hc|npmrc|<nowiki>cache=$XDG_CACHE_HOME/npm<br />
prefix=$XDG_DATA_HOME/npm</nowiki>}}<br />
|-<br />
| [[NVIDIA]], [[CUDA]]<br />
| {{ic|~/.nv}}<br />
|<br />
|<br />
| {{ic|1=$ export __GL_SHADER_DISK_CACHE_PATH="$XDG_CACHE_HOME"/nv}}<br />
<br />
{{ic|1=$ export CUDA_CACHE_PATH="$XDG_CACHE_HOME"/nv}}<br />
|-<br />
| [https://github.com/NVIDIA/nvidia-settings nvidia-settings]<br />
| {{ic|~/.nvidia-settings-rc}}<br />
|<br />
|<br />
| {{ic|1=$ nvidia-settings --config="$XDG_CONFIG_HOME"/nvidia/settings}}<br />
|-<br />
| [http://www.openscad.org/ openscad]<br />
| {{ic|~/.OpenSCAD}}<br />
| [https://github.com/openscad/openscad/commit/7c3077b0f 7c3077b0f]<br />
| [https://github.com/openscad/openscad/issues/125]<br />
| Does not fully honour XDG Base Directory Specification, see [https://github.com/openscad/openscad/issues/373]<br />
<br />
Currently it [https://github.com/openscad/openscad/blob/master/src/PlatformUtils-posix.cc#L20 hard-codes] {{ic|~/.local/share}}.<br />
|-<br />
| [[OpenSSL]]<br />
| {{ic|~/.rnd}}<br />
|<br />
|<br />
| Seeding file .rnd's location can be set with RANDFILE environment variable per [https://www.openssl.org/docs/faq.html FAQ].<br />
|-<br />
| {{pkg|pass}}<br />
| {{ic|~/.password-store}}<br />
|<br />
|<br />
| {{ic|1=$ export PASSWORD_STORE_DIR="$XDG_DATA_HOME"/pass}}<br />
|-<br />
| {{pkg|pidgin}}<br />
| {{ic|~/.purple}}<br />
|<br />
|<br />
| {{ic|1=$ pidgin --config="$XDG_DATA_HOME"/purple}}<br />
|-<br />
| [[PulseAudio]]<br />
| {{ic|~/.esd_auth}}<br />
|<br />
|<br />
| Very likely generated by the {{ic|module-esound-protocol-unix.so}} module. It can be configured to use a different location but it makes much more sense to just comment out this module in {{ic|/etc/pulse/default.pa}} or {{ic|"$XDG_CONFIG_HOME"/pulse/default.pa}}.<br />
|-<br />
| [https://pypi.python.org/pypi/setuptools python-setuptools]<br />
| {{ic|~/.python-eggs}}<br />
|<br />
|<br />
| {{ic|1=$ export PYTHON_EGG_CACHE="$XDG_CACHE_HOME"/python-eggs}}<br />
|-<br />
| {{Pkg|rclone}}<br />
| {{ic|~/.rclone.conf}}<br />
|<br />
|<br />
| {{ic|1=$ rclone --config="$XDG_CONFIG_HOME"/rclone/rclone.conf}}<br />
|-<br />
| [[readline]]<br />
| {{ic|~/.inputrc}}<br />
|<br />
|<br />
| {{ic|1=$ export INPUTRC="$XDG_CONFIG_HOME"/readline/inputrc}}<br />
|-<br />
| [http://utopia.knoware.nl/~hlub/uck/rlwrap/ rlwrap]<br />
| {{ic|~/.*_history}}<br />
|<br />
| [https://github.com/hanslub42/rlwrap/issues/25]<br />
| {{ic|1=$ export RLWRAP_HOME="$XDG_DATA_HOME"/rlwrap}}<br />
|-<br />
| [http://www.scala-sbt.org/ sbt]<br />
| {{ic|~/.sbt}}<br />
{{ic|~/.ivy2}}<br />
|<br />
|<br />
| {{ic|1=$ sbt -ivy "$XDG_DATA_HOME"/ivy2 -sbt-dir "$XDG_DATA_HOME"/sbt}}<br />
|-<br />
| [[screen]]<br />
| {{ic|~/.screenrc}}<br />
|<br />
|<br />
| {{ic|1=$ export SCREENRC="$XDG_CONFIG_HOME"/screen/screenrc}}<br />
|-<br />
| [https://www.stackage.org/ stack]<br />
| {{ic|~/.stack}}<br />
|<br />
| [https://github.com/commercialhaskell/stack/issues/342]<br />
| {{ic|1=$ export STACK_ROOT="$XDG_DATA_HOME"/stack}}<br />
|-<br />
| [[subversion]]<br />
| {{ic|~/.subversion}}<br />
|<br />
| [https://issues.apache.org/jira/browse/SVN-4599] [https://mail-archives.apache.org/mod_mbox/subversion-users/201204.mbox/%3c4F8FBCC6.4080205@ritsuka.org%3e][http://mail-archives.apache.org/mod_mbox/subversion-dev/201509.mbox/%3c20150917222954.GA20331@teapot%3e]<br />
| {{ic|1=$ svn --config-dir "$XDG_CONFIG_HOME"/subversion}}<br />
|-<br />
| {{pkg|task}}<br />
| {{ic|~/.task}}<br />
<br />
{{ic|~/.taskrc}}<br />
|<br />
|<br />
| {{ic|1=$ export TASKDATA="$XDG_DATA_HOME"/task}}<br />
<br />
{{ic|1=$ export TASKRC="$XDG_CONFIG_HOME"/task/taskrc}}<br />
|-<br />
| [http://jonas.nitro.dk/tig/ tig]<br />
| {{ic|~/.tigrc}}<br />
|<br />
|<br />
| {{ic|1=$ export TIGRC_USER="$XDG_CONFIG_HOME"/tig/tigrc}}<br />
|-<br />
| [http://tiptop.gforge.inria.fr/ tiptop]<br />
| {{ic|~/.tiptoprc}}<br />
|<br />
|<br />
| This will still expect the {{ic|.tiptoprc}} file.<br />
{{ic|$ tiptop -W "$XDG_CONFIG_HOME"/tiptop}}<br />
|-<br />
| [[tmux]]<br />
| {{ic|~/.tmux.conf}}<br />
|<br />
| [http://comments.gmane.org/gmane.comp.terminal-emulators.tmux.user/6013] [http://sourceforge.net/p/tmux/mailman/message/30619546/]<br />
| {{ic|1=$ tmux -f "$XDG_CONFIG_HOME"/tmux/tmux.conf}}<br />
<br />
{{ic|1=$ export TMUX_TMPDIR="$XDG_RUNTIME_DIR"}}<br />
|-<br />
| [https://github.com/bengardner/uncrustify uncrustify]<br />
| {{ic|~/.uncrustify.cfg}}<br />
|<br />
|<br />
| {{ic|1=$ export UNCRUSTIFY_CONFIG="$XDG_CONFIG_HOME"/uncrustify/uncrustify.cfg}}<br />
|-<br />
| [[Unison]]<br />
| {{ic|~/.unison}}<br />
|<br />
|<br />
| {{ic|1=$ export UNISON="$XDG_DATA_HOME"/unison}}<br />
|-<br />
| [[Rxvt-unicode/Tips_and_tricks#Daemon-client|urxvtd]]<br />
| {{ic|~/.urxvt/urxvtd-hostname}}<br />
|<br />
|<br />
| {{ic|1=$ export RXVT_SOCKET="$XDG_RUNTIME_DIR"/urxvtd}}<br />
|-<br />
| [[WeeChat]]<br />
| {{ic|~/.weechat}}<br />
|<br />
| [http://savannah.nongnu.org/task/?10934]<br />
| {{ic|1=$ export WEECHAT_HOME="$XDG_CONFIG_HOME"/weechat}}<br />
<br />
{{ic|1=$ weechat -d "$XDG_CONFIG_HOME"/weechat}}<br />
|-<br />
| [[wget]]<br />
| {{ic|~/.wgetrc}}<br />
|<br />
|<br />
| {{ic|1=$ export WGETRC="$XDG_CONFIG_HOME/wgetrc"}}<br />
|-<br />
| [[wine]]<br />
| {{ic|~/.wine}}<br />
|<br />
| [https://bugs.winehq.org/show_bug.cgi?id=20888]<br />
| [[Wine#Winetricks|Winetricks]] uses XDG-alike location below for [[Wine#WINEPREFIX|WINEPREFIX]] management:<br />
{{ic|1=$ mkdir -p "$XDG_DATA_HOME"/wineprefixes}}<br />
<br />
{{ic|1=$ export WINEPREFIX="$XDG_DATA_HOME"/wineprefixes/default}}<br />
|-<br />
| {{pkg|xorg-xauth}}<br />
| {{ic|~/.Xauthority}}<br />
|<br />
|<br />
| {{ic|1=$ export XAUTHORITY="$XDG_RUNTIME_DIR"/Xauthority}}<br />
|-<br />
| {{pkg|xorg-xinit}}<br />
| {{ic|~/.xinitrc}}<br />
<br />
{{ic|~/.xserverrc}}<br />
|<br />
|<br />
| {{ic|1=$ export XINITRC="$XDG_CONFIG_HOME"/X11/xinitrc}}<br />
{{ic|1=$ export XSERVERRC="$XDG_CONFIG_HOME"/X11/xserverrc}}<br />
<br />
Note that these variables are respected by ''xinit'', but not by ''startx''.<br />
|-<br />
| {{pkg|xorg-xrdb}}<br />
| {{ic|~/.Xresources}}<br />
<br />
{{ic|~/.Xdefaults}}<br />
|<br />
|<br />
| Ultimately you [http://superuser.com/questions/243914/xresources-or-xdefaults should be] using {{ic|Xresources}} and since these resources are loaded via {{ic|xrdb}} you can specify a path such as {{ic|1=$ xrdb -load ~/.config/X11/xresources}}.<br />
|-<br />
| [http://www.vergenet.net/~conrad/software/xsel/ xsel]<br />
| {{ic|~/.xsel.log}}<br />
|<br />
| [https://github.com/kfish/xsel/issues/10]<br />
| {{ic|1=$ xsel --logfile "$XDG_CACHE_HOME"/xsel/xsel.log}}<br />
|}<br />
<br />
==Hardcoded==<br />
<br />
{| class="wikitable sortable" style="width: 100%"<br />
! Application<br />
! Legacy Path<br />
! Discussion<br />
! Notes<br />
|-<br />
| [[adb]]<br />
| {{ic|~/.android}}<br />
|<br />
|<br />
|-<br />
| [[AMule]]<br />
| {{ic|~/.aMule}}<br />
|<br />
|<br />
|-<br />
| [https://developer.android.com/studio/index.html Android Studio]<br />
| {{ic|~/.AndroidStudio2.3}}<br />
<br />
{{ic|~/.android}}<br />
<br />
{{ic|~/.java}}<br />
|<br />
|<br />
|-<br />
| [https://osdn.net/projects/anthy/ anthy]<br />
| {{ic|~/.anthy}}<br />
| [https://osdn.net/ticket/browse.php?group_id=14&tid=28397]<br />
|<br />
|-<br />
| [https://directory.apache.org/studio/ Apache Directory Studio]<br />
| {{ic|~/.ApacheDirectoryStudio}}<br />
|<br />
|-<br />
| [https://www.audacityteam.org/ Audacity]<br />
| {{ic|~/.audacity-data}}<br />
|<br />
|<br />
|-<br />
| [http://fixounet.free.fr/avidemux/ Avidemux]<br />
| {{ic|~/.avidemux6}}<br />
|<br />
|<br />
|-<br />
| [[bash]]<br />
| {{ic|~/.bashrc}}<br />
<br />
{{ic|~/.bash_history}}<br />
<br />
{{ic|~/.bash_profile}}<br />
<br />
{{ic|~/.bash_login}}<br />
<br />
{{ic|~/.bash_logout}}<br />
| [http://savannah.gnu.org/support/?108134]<sup>won't<br />
| A specified {{ic|bashrc}} can be sourced from {{ic|/etc/bashrc}}<br />
{{ic|1=$ export HISTFILE="$XDG_DATA_HOME"/bash/history}}<br />
|-<br />
| [[bazaar]]<br />
| {{ic|~/.bazaar}}<br />
<br />
{{ic|~/.bzr.log}}<br />
|<br />
|<br />
|-<br />
| [https://www.haskell.org/cabal/ cabal]<br />
| {{ic|~/.cabal}}<br />
| [https://github.com/haskell/cabal/issues/680]<br />
| See discussion for potential workarounds. It is not very easy or straightforward but may be possible to emulate Base Directory compliance.<br />
|-<br />
| [https://calibre-ebook.com/ calibre]<br />
| {{ic|~/Calibre Library}}<br />
|<br />
|<br />
|-<br />
| [[CUPS]]<br />
| {{ic|~/.cups}}<br />
| [http://www.cups.org/str.php?L4243]<sup>won't<br />
|<br />
|-<br />
| [[darcs]]<br />
| {{ic|~/.darcs}}<br />
| [http://bugs.darcs.net/issue2453]<br />
|<br />
|-<br />
| [[dbus]]<br />
| {{ic|~/.dbus}}<br />
| [https://bugs.freedesktop.org/show_bug.cgi?id=35887]<br />
| This should be avoidable with kdbus [citation needed].<br />
|-<br />
| [https://wiki.gnome.org/Apps/Dia Dia]<br />
| {{ic|~/.dia}}<br />
|<br />
|-<br />
| [[eclipse]]<br />
| {{ic|~/.eclipse}}<br />
| [https://bugs.eclipse.org/bugs/show_bug.cgi?id=200809]<br />
| Option {{ic|1=-Dosgi.configuration.area=@user.home/.config/..}} overrides but must be added to {{ic|"$ECLIPSE_HOME"/eclipse.ini"}} rather than command line which means you must have write access to {{ic|$ECLIPSE_HOME}}. (Arch Linux hard-codes {{ic|$ECLIPSE_HOME}} in {{ic|/usr/bin/eclipse}})<br />
|-<br />
| [https://www.gnu.org/software/emacs/ emacs]<br />
| {{ic|~/.emacs}}<br />
<br />
{{ic|~/.emacs.d}}<br />
| [http://debbugs.gnu.org/cgi/bugreport.cgi?bug=583]<br />
| It's possible to set {{ic|HOME}}, but it has unexpected side effects. So far the most promising approach is modifying another Emacs environment variable to alter the load path and author your own site file which can manually load up your init file, but it changes the load process significantly.<br />
|-<br />
| [http://www.fetchmail.info/ Fetchmail]<br />
| {{ic|~/.fetchmailrc}}<br />
|<br />
|<br />
|-<br />
| [[Firefox]]<br />
| {{ic|~/.mozilla}}<br />
| [https://bugzil.la/259356]<br />
|<br />
|-<br />
| [https://www.haskell.org/ghc/ GHC]<br />
| {{ic|~/.ghc}}<br />
| [https://ghc.haskell.org/trac/ghc/ticket/6077]<br />
|<br />
|-<br />
| [http://www.gnu.org/software/parallel/ GNU parallel]<br />
| {{ic|~/.parallel}}<br />
|<br />
|<br />
|-<br />
| [http://recordmydesktop.sourceforge.net/about.php gtk-recordMyDesktop]<br />
| {{ic|~/.gtk-recordmydesktop}}<br />
|<br />
|<br />
|-<br />
| [http://www.idris-lang.org/ idris]<br />
| {{ic|~/.idris}}<br />
| [https://github.com/idris-lang/Idris-dev/pull/3456]<br />
|<br />
|-<br />
| [http://julialang.org/ julia]<br />
| {{ic|~/.juliarc.jl}}<br />
<br />
{{ic|~/.julia_history}}<br />
| [https://github.com/JuliaLang/julia/issues/4630] [https://github.com/JuliaLang/julia/issues/10016]<br />
|<br />
|-<br />
| [http://www.linux-pam.org/ Linux PAM]<br />
| {{ic|~/.pam_environment}}<br />
|<br />
| Hardcoded in [https://github.com/linux-pam/linux-pam/blob/master/modules/pam_env/pam_env.c modules/pam_env/pam_env.c]<br />
|-<br />
| [http://lldb.llvm.org/ lldb]<br />
| {{ic|~/.lldb}}<br />
<br />
{{ic|~/.lldbinit}}<br />
|<br />
|<br />
|-<br />
| [http://www.mathomatic.org/ mathomatic]<br />
| {{ic|~/.mathomaticrc}}<br />
<br />
{{ic|~/.matho_history}}<br />
|<br />
| History can be moved by using {{ic|rlwrap mathomatic -r}} with the {{ic|RLWRAP_HOME}} environment set appropriately.<br />
|-<br />
| [http://www.milkytracker.org/ milkytracker]<br />
| {{ic|~/.milkytracker_config}}<br />
| [https://github.com/Deltafire/MilkyTracker/issues/12]<br />
|<br />
|-<br />
| [https://minecraft.net/ Minecraft]<br />
| {{ic|~/.minecraft}}<br />
| [https://bugs.mojang.com/browse/MCL-2563]<br />
|<br />
|-<br />
| [https://www.mongodb.org/ mongodb]<br />
| {{ic|~/.mongorc.js}}<br />
<br />
{{ic|~/.dbshell}}<br />
| [https://jira.mongodb.org/browse/DOCS-5652?jql=text%20~%20%22.mongorc.js%22]<br />
| [http://stackoverflow.com/a/22349050/4200039 This Stack Overflow thread] suggests a partial workaround using command-line switch {{ic|--norc}}.<br />
|-<br />
|<br />
| {{ic|~/.netrc}}<br />
|<br />
| Like {{ic|~/.ssh}}, many programs expect this file to be here. These include projects like curl ({{ic|CURLOPT_NETRC_FILE}}), ftp ({{ic|NETRC}}), s-nail ({{ic|NETRC}}), etc. While some of them offer alternative configurable locations, many do not such as w3m, wget and lftp.<br />
|-<br />
| [https://developer.mozilla.org/en-US/docs/Mozilla/Projects/NSS NSS]<br />
| {{ic|~/.pki}}<br />
| [https://bugzilla.mozilla.org/show_bug.cgi?id=818686]<br />
|<br />
|-<br />
| [https://www.openssh.com/ OpenSSH]<br />
| {{ic|~/.ssh}}<br />
| [https://bugzilla.mindrot.org/show_bug.cgi?id=2050]<br />
| Assumed to be present by many ssh daemons and clients such as DropBear and OpenSSH.<br />
|-<br />
| [https://www.palemoon.org/ palemoon]<br />
| {{ic|~/.moonchild productions}}<br />
| [https://forum.palemoon.org/viewtopic.php?f=5&t=9639]<br />
|<br />
|-<br />
| [https://perf.wiki.kernel.org/index.php/Main_Page perf]<br />
| {{ic|~/.debug}}<br />
|<br />
| Hardcoded in [https://github.com/torvalds/linux/blob/master/tools/perf/util/config.c#L18 tools/perf/util/config.c:18].<br />
|-<br />
| various [[shell]]s and [[display manager]]s<br />
| {{ic|~/.profile}}<br />
|<br />
|<br />
|-<br />
| [[python]]<br />
| {{ic|~/.python_history}}<br />
|<br />
| All history from interactive sessions is saved to {{ic|~/.python_history}} by default since [https://bugs.python.org/issue5845 version 3.4], custom path can still be set the same way as in older versions (see [https://docs.python.org/3/library/readline.html?highlight=readline#example this example]).<br />
|-<br />
| [https://doc.qt.io/qt-5/qtdesigner-manual.html Qt Designer]<br />
| {{ic|~/.designer}}<br />
|<br />
|<br />
|-<br />
| [https://quodlibet.readthedocs.io/en/latest/ quodlibet]<br />
| {{ic|~/.quodlibet}}<br />
|<br />
|<br />
|-<br />
| [https://racket-lang.org/ racket]<br />
| {{ic|~/.racketrc}}<br />
|<br />
|<br />
|-<br />
| [http://rednotebook.sourceforge.net/ RedNotebook]<br />
| {{ic|~/.rednotebook}}<br />
|<br />
|<br />
|-<br />
| [https://remarkableapp.github.io/linux.html Remarkable]<br />
| {{ic|~/.remarkable}}<br />
|<br />
|<br />
|-<br />
| [https://www.scribus.net/ Scribus]<br />
| {{ic|~/.scribus}}<br />
|<br />
|-<br />
| [http://www.seamonkey-project.org/ SeaMonkey]<br />
| {{ic|~/.mozilla}}<br />
| [https://bugzil.la/726939]<br />
|<br />
|-<br />
| [[Skype]] < 5.0<br />
| {{ic|~/.Skype}}<br />
| [https://community.skype.com/t5/Linux-archive/Skype-violates-XDG-basedir-spec-on-linux/td-p/4175884]<br />
|<br />
|-<br />
| [https://www.gnu.org/software/solfege/solfege.html Solfege]<br />
| {{ic|~/.solfege}}<br />
<br />
{{ic|~/.solfegerc}}<br />
<br />
{{ic|~/lessonfiles}}<br />
| [https://savannah.gnu.org/bugs/index.php?50251]<br />
|<br />
|-<br />
| [https://spamassassin.apache.org/ SpamAssassin]<br />
| {{ic|~/.spamassassin}}<br />
|<br />
|<br />
|-<br />
| [[spectrwm]]<br />
| {{ic|~/.spectrwm}}<br />
|<br />
|<br />
|-<br />
| [[SQLite]]<br />
| {{ic|~/.sqlite_history}}<br />
<br />
{{ic|~/.sqliterc}}<br />
| [https://unix.stackexchange.com/questions/306890/change-location-of-sqlite-history-file][http://sqlite.1065341.n5.nabble.com/Customizing-the-location-of-the-sqlite-history-td87055.html]<br />
| {{ic|$ sqlite3 -init "$XDG_CONFIG_HOME"/sqlite3/sqliterc}}<br />
|-<br />
| [[TeamSpeak]]<br />
| {{ic|~/.ts3client}}<br />
|<br />
|-<br />
| [http://www.texmacs.org/ TeXmacs]<br />
| {{ic|~/.TeXmacs}}<br />
|<br />
|<br />
|-<br />
| [[Thunderbird]]<br />
| {{ic|~/.thunderbird}}<br />
| [https://bugzil.la/735285]<br />
|<br />
|-<br />
| [https://git.archlinux.org/users/remy/texlive-localmanager.git/ tllocalmgr]<br />
| {{ic|~/.texlive}}<br />
|<br />
|-<br />
| [[vim]]<br />
| {{ic|~/.vim}}<br />
<br />
{{ic|~/.vimrc}}<br />
<br />
{{ic|~/.viminfo}}<br />
|<br />
| Since [https://github.com/vim/vim/commit/6a459902592e2a4ba68 7.3.1178] vim will search for {{ic|~/.vim/vimrc}} if {{ic|~/.vimrc}} is not found.<br />
<br />
{{ic|1=<nowiki>$ mkdir -p "$XDG_CACHE_HOME"/vim/{undo,swap,backup}</nowiki>}}<br />
<br />
{{hc|"$XDG_CONFIG_HOME"/vim/vimrc|<br />
set undodir&#61;$XDG_CACHE_HOME/vim/undo<br />
set directory&#61;$XDG_CACHE_HOME/vim/swap<br />
set backupdir&#61;$XDG_CACHE_HOME/vim/backup<br />
set viminfo+&#61;'1000,n$XDG_CACHE_HOME/vim/viminfo<br />
set runtimepath&#61;$XDG_CONFIG_HOME/vim,$XDG_CONFIG_HOME/vim/after,$VIMRUNTIME<br />
}}<br />
<br />
{{hc|~/.profile|<br />
export VIMINIT&#61;":source $XDG_CONFIG_HOME"/vim/vimrc<br />
}}<br />
<br />
* https://tlvince.com/vim-respect-xdg<br />
|-<br />
| [http://www.vimperator.org/ vimperator]<br />
| {{ic|~/.vimperatorrc}}<br />
| [http://www.mozdev.org/pipermail/vimperator/2009-October/004848.html]<br />
| {{ic|1=$ export VIMPERATOR_INIT=":source $XDG_CONFIG_HOME/vimperator/vimperatorrc"}}<br />
<br />
{{ic|1=$ export VIMPERATOR_RUNTIME="$XDG_CONFIG_HOME"/vimperator}}<br />
|-<br />
| [https://w1.fi/ wpa_cli]<br />
| {{ic|~/.wpa_cli_history}}<br />
|<br />
|<br />
|-<br />
| {{pkg|xdg-utils}}<br />
| {{ic|~/.gnome}}<br />
|<br />
| For some reason the script {{ic|xdg-desktop-menu}} hard-codes {{ic|gnome_user_dir&#61;"$HOME/.gnome/apps"}}. This is used by [[chromium]] amoung others.<br />
|-<br />
| [https://opensource.conformal.com/wiki/xombrero xombrero]<br />
| {{ic|~/.xombrero}}<br />
| [https://github.com/conformal/xombrero/issues/74]<br />
|<br />
|-<br />
| [[zsh]]<br />
| {{ic|~/.zshrc}}<br />
<br />
{{ic|~/.zprofile}} {{ic|~/.zshenv}}<br />
<br />
{{ic|~/.zlogin}} {{ic|~/.zlogout}}<br />
<br />
{{ic|~/.histfile}}<br />
| [http://www.zsh.org/mla/workers/2013/msg00692.html]<br />
| Consider exporting {{ic|1=ZDOTDIR=$HOME/.config/zsh}} in {{ic|~/.zshenv}} (this is hardcoded due to the bootstrap problem). You could also add this to {{ic|/etc/zsh/zshenv}} and avoid the need for any dotfiles in your {{ic|HOME}}. Doing this however requires root privilege which may not be viable and is system-wide.<br />
<br />
{{ic|1=$ export HISTFILE="$XDG_DATA_HOME"/zsh/history}}<br />
|}<br />
<br />
==Library and language support==<br />
<br />
; C<br />
: [https://github.com/Cloudef/chck/tree/master/chck/xdg C99: Cloudef's simple implementation].<br />
<br />
; Haskell<br />
: Officially in [https://hackage.haskell.org/package/directory directory] since 1.2.3.0 [https://github.com/haskell/directory/commit/ab9d0810ce ab9d0810ce].<br />
: [https://hackage.haskell.org/package/xdg-basedir xdg-basedir]<br />
<br />
; Perl<br />
: [http://search.cpan.org/dist/File-BaseDir/lib/File/BaseDir.pm File-BaseDir]<br />
: [https://github.com/Aerdan/perl-file-xdg perl-file-xdg]<br />
<br />
; Python<br />
: [http://freedesktop.org/wiki/Software/pyxdg/ pyxdg]<br />
<br />
; Vala<br />
: Builtin support via [http://valadoc.org/#!api=glib-2.0/GLib.Environment GLib.Environment].<br />
: See {{ic|get_user_cache_dir}}, {{ic|get_user_data_dir}}, {{ic|get_user_config_dir}}, etc.<br />
<br />
==See also==<br />
<br />
* [https://wiki.gnome.org/Initiatives/GnomeGoals/XDGConfigFolders GNOME Goal: XDG Base Directory Specification Usage]<br />
* [https://plus.google.com/+RobPikeTheHuman/posts/R58WgWwN9jp Rob Pike: "Dotfiles" being hidden is a UNIXv2 mistake].<br />
* [http://www.freedesktop.org/software/systemd/man/systemd-path.html systemd-path(1)]<br />
* [http://www.freedesktop.org/software/systemd/man/file-hierarchy.html file-hierarchy(7)]<br />
* [https://github.com/grawity/dotfiles/blob/master/.dotfiles.notes Grawity's notes on dotfiles].<br />
* [https://github.com/grawity/dotfiles/blob/master/.environ.notes Grawity's notes on environment variables].<br />
* [https://ploum.net/207-modify-your-application-to-use-xdg-folders/ ploum.net: Modify Your Application to use XDG Folders].</div>
Jristz
https://wiki.archlinux.org/index.php?title=XDG_Base_Directory&diff=476716
XDG Base Directory
2017-05-10T22:26:52Z
<p>Jristz: /* Hardcoded */ fixed upstream, so ref moved</p>
<hr />
<div>[[Category:Dotfiles]]<br />
[[ja:XDG Base Directory サポート]]<br />
{{Related articles start}}<br />
{{Related|dotfiles}}<br />
{{Related|Xdg user directories}}<br />
{{Related articles end}}<br />
This article exists to catalog the growing set of software using the [http://standards.freedesktop.org/basedir-spec/latest/ XDG Base Directory Specification] introduced in 2003. This is here to demonstrate the viability of this specification by listing commonly found dotfiles and their support status. For those not currently supporting the Base Directory Specification, workarounds will be demonstrated to emulate it instead.<br />
<br />
The workarounds will be limited to anything not involving patching the source, executing code stored in [[environment variable]]s or compile-time options. The rationale for this is that configurations should be portable across systems and having compile-time options prevent that.<br />
<br />
Hopefully this will provide a source of information about exactly what certain kinds of dotfiles are and where they come from.<br />
<br />
==XDG Base Directory specification==<br />
<br />
Please read the [http://standards.freedesktop.org/basedir-spec/latest/ full specification]. This section will attempt to break down the essence of what it tries to achieve.<br />
<br />
Only {{ic|XDG_RUNTIME_DIR}} is set by default through [http://www.freedesktop.org/software/systemd/man/pam_systemd.html pam_systemd]. It is up to the user to explicitly [[define]] the other variables, using absolute paths that point to existing directories.<br />
<br />
===User directories===<br />
<br />
* {{ic|XDG_CONFIG_HOME}}<br />
** Where user-specific configurations should be written (analogous to {{ic|/etc}}).<br />
** Should default to {{ic|$HOME/.config}}.<br />
<br />
* {{ic|XDG_CACHE_HOME}}<br />
** Where user-specific non-essential (cached) data should be written (analogous to {{ic|/var/cache}}).<br />
** Should default to {{ic|$HOME/.cache}}.<br />
<br />
* {{ic|XDG_DATA_HOME}}<br />
** Where user-specific data files should be written (analogous to {{ic|/usr/share}}).<br />
** Should default to {{ic|$HOME/.local/share}}.<br />
<br />
* {{ic|XDG_RUNTIME_DIR}}<br />
** Used for non-essential, user-specific data files such as sockets, named pipes, etc.<br />
** Not required to have a default value; warnings should be issued if not set or equivalents provided.<br />
** Must be owned by the user with an access mode of {{ic|0700}}.<br />
** Filesystem fully featured by standards of OS.<br />
** Must be on the local filesystem.<br />
** May be subject to periodic cleanup.<br />
** Modified every 6 hours or set sticky bit if persistence is desired.<br />
** Can only exist for the duration of the user's login.<br />
** Should not store large files as it may be mounted as a tmpfs.<br />
<br />
===System directories===<br />
<br />
* {{ic|XDG_DATA_DIRS}}<br />
** List of directories seperated by {{ic|:}} (analogous to {{ic|PATH}}).<br />
** Should default to {{ic|/usr/local/share:/usr/share}}.<br />
<br />
* {{ic|XDG_CONFIG_DIRS}}<br />
** List of directories seperated by {{ic|:}} (analogous to {{ic|PATH}}).<br />
** Should default to {{ic|/etc/xdg}}.<br />
<br />
==Contributing==<br />
<br />
When contributing make sure to use the correct section.<br />
<br />
Nothing should require code evaluation (such as [[vim]] and {{ic|VIMINIT}}), patches or compile-time options to gain support and anything which does must be deemed hardcoded. Additionally if the process is too error prone or difficult, such as [https://www.haskell.org/cabal/ Haskell's cabal] or eclipse, they should also be considered as hardcoded.<br />
<br />
* The first column should be the project name, ideally the command name if it is not ambigious, linked to their website or an appropriate internal wiki article.<br />
<br />
* The second column is for any legacy files and directories the project had (one per line), this is done so people can find them even if they are no longer read.<br />
<br />
* In the third, try to find the commit or version a project switched to XDG Base Directory or any open discussions and include them in the next two columns (two per line).<br />
<br />
* The last column should include any appropriate workarounds or solutions. Please verify that your solution is correct and functional.<br />
<br />
==Supported==<br />
<br />
{| class="wikitable sortable" style="width: 100%"<br />
! Application<br />
! Legacy Path<br />
! Supported Since<br />
! Discussion<br />
! Notes<br />
|-<br />
| [https://github.com/SirCmpwn/aerc aerc]<br />
|<br />
|<br />
|<br />
|<br />
|-<br />
| [https://github.com/Antimicro/antimicro/ antimicro]<br />
| {{ic|~/.antimicro}}<br />
| [https://github.com/Antimicro/antimicro/commit/edba864 edba864]<br />
| [https://github.com/Antimicro/antimicro/issues/5]<br />
|<br />
|-<br />
| [[aria2]]<br />
| {{ic|~/.aria2}}<br />
| [https://github.com/tatsuhiro-t/aria2/commit/8bc1d37 8bc1d37]<br />
| [https://github.com/tatsuhiro-t/aria2/issues/27]<br />
|<br />
|-<br />
| [[blender]]<br />
| {{ic|~/.blender}}<br />
| [http://git.blender.org/gitweb/gitweb.cgi/blender.git/commit/4293f473 4293f473]<br />
| [https://developer.blender.org/T28943]<br />
|<br />
|-<br />
| [https://github.com/falconindy/burp burp]<br />
|<br />
| [https://github.com/falconindy/burp/commit/f2388e9 f2388e9]<br />
|<br />
|<br />
|-<br />
| [[chromium]]<br />
| {{ic|~/.chromium}}<br />
| [https://src.chromium.org/viewvc/chrome?revision=23057&view=revision 23057]<br />
| [https://groups.google.com/forum/#!topic/chromium-dev/QekVQxF3nho] [https://code.google.com/p/chromium/issues/detail?id=16976]<br />
|<br />
|-<br />
| [http://citra-emu.org/ citra]<br />
| {{ic|~/.citra-emu}}<br />
| [https://github.com/citra-emu/citra/commit/f7c3193fec f7c3193fec]<br />
| [https://github.com/citra-emu/citra/pull/575]<br />
|<br />
|-<br />
| [[PHP#Composer|composer]]<br />
| {{ic|~/.composer}}<br />
| [https://github.com/composer/composer/releases/tag/1.0.0-beta1 1.0.0-beta1]<br />
| [https://github.com/composer/composer/pull/1407]<br />
|<br />
|-<br />
| [https://github.com/falconindy/cower cower]<br />
|<br />
| [https://github.com/falconindy/cower/commit/8b70805 8b70805]<br />
|<br />
|<br />
|-<br />
| [https://wiki.gnome.org/Apps/DFeet d-feet]<br />
| {{ic|~/.d-feet}}<br />
| [https://git.gnome.org/browse/d-feet/commit/?id==7f6104b 7f6104b]<br />
|<br />
|<br />
|-<br />
| [https://wiki.gnome.org/dconf dconf]<br />
|<br />
|<br />
|<br />
|<br />
|-<br />
| [[Dolphin emulator|dolphin-emu]]<br />
| {{ic|~/.dolphin-emu}}<br />
| [https://github.com/dolphin-emu/dolphin/commit/a498c68 a498c68]<br />
| [https://github.com/dolphin-emu/dolphin/pull/2304]<br />
|<br />
|-<br />
| [http://dr14tmeter.sourceforge.net dr14-meter]<br />
| <br />
| [https://github.com/simon-r/dr14_t.meter/commit/7e777ca645298ec898b3c76e3ec472ed6ed43e8a 7e777ca64]<br />
| [https://github.com/simon-r/dr14_t.meter/pull/30]<br />
| Hardcoded {{ic|$HOME/.config/dr14meter}}<br />
|-<br />
| [http://www.knopwob.org/dunst/index.html dunst]<br />
|<br />
| [https://github.com/knopwob/dunst/commit/78b6e2b1 78b6e2b1]<br />
| [https://github.com/knopwob/dunst/issues/22]<br />
|<br />
|-<br />
| [[dwb]]<br />
|<br />
|<br />
|<br />
|<br />
|-<br />
| [[fish]]<br />
|<br />
|<br />
|<br />
|<br />
|-<br />
| [[fontconfig]]<br />
| {{ic|~/.fontconfig}}<br />
<br />
{{ic|~/.fonts}}<br />
| [http://cgit.freedesktop.org/fontconfig/commit/?id=8c255fb1 8c255fb1]<br />
|<br />
| Use {{ic|"$XDG_DATA_HOME"/fonts}} to store fonts instead.<br />
|-<br />
| [http://fontforge.github.io/ fontforge]<br />
| {{ic|~/.FontForge}}<br />
<br />
{{ic|~/.PfaEdit}}<br />
| [https://github.com/fontforge/fontforge/commit/e4c2cc7432 e4c2cc7432]<br />
| [https://github.com/fontforge/fontforge/issues/847] [https://github.com/fontforge/fontforge/issues/991]<br />
|<br />
|-<br />
| [http://www.freerdp.com/ freerdp]<br />
| {{ic|~/.freerdp}}<br />
| [https://github.com/FreeRDP/FreeRDP/commit/edf6e7258d edf6e7258d]<br />
|<br />
|<br />
|-<br />
| [https://projects.gnome.org/gconf gconf]<br />
| {{ic|~/.gconf}}<br />
| [https://git.gnome.org/browse/gconf/commit/?id=fc28caa7 fc28caa7]<br />
| [https://bugzilla.gnome.org/show_bug.cgi?id=674803]<br />
|<br />
|-<br />
| [[git]]<br />
| {{ic|~/.gitconfig}}<br />
| [https://github.com/git/git/commit/0d94427e 0d94427e]<br />
|<br />
|<br />
|-<br />
| [http://gstreamer.freedesktop.org/ gstreamer]<br />
| {{ic|~/.gstreamer-0.10}}<br />
| [http://cgit.freedesktop.org/gstreamer/gstreamer/commit/?id=4e36f93924cf 4e36f93924cf]<br />
| [https://bugzilla.gnome.org/show_bug.cgi?id=518597]<br />
|<br />
|-<br />
| [[gtk|gtk3]]<br />
|<br />
|<br />
|<br />
|<br />
|-<br />
| [http://hisham.hm/htop/ htop]<br />
| {{ic|~/.htoprc}}<br />
| [https://github.com/hishamhm/htop/commit/93233a67 93233a67]<br />
|<br />
|<br />
|-<br />
| [[i3]]<br />
| {{ic|~/.i3}}<br />
| [http://code.stapelberg.de/git/i3/commit/?id=7c130fb54 7c130fb54]<br />
|<br />
|<br />
|-<br />
| [http://i3wm.org/i3status/ i3status]<br />
| {{ic|~/.i3status.conf}}<br />
| [http://code.stapelberg.de/git/i3status/commit/?id=c3f7fc4994 c3f7fc4994]<br />
|<br />
|<br />
|-<br />
| [http://www.imagemagick.org/script/index.php imagemagick]<br />
|<br />
|<br />
|<br />
|<br />
|-<br />
| [[inkscape]]<br />
| {{ic|~/.inkscape}}<br />
| [http://wiki.inkscape.org/wiki/index.php/Release_notes/0.47#Preferences 0.47]<br />
| [https://bugs.launchpad.net/inkscape/+bug/199720]<br />
|<br />
|-<br />
| [https://www.ctan.org/pkg/latexmk?lang=en latexmk]<br />
| {{ic|~/.latexmkrc}}<br />
|<br />
|<br />
|<br />
|-<br />
| [http://lftp.yar.ru/ lftp]<br />
| {{ic|~/.lftp}}<br />
| [https://github.com/lavv17/lftp/commit/21dc400 21dc400]<br />
| [https://www.mail-archive.com/lftp@uniyar.ac.ru/msg04301.html]<br />
|<br />
|-<br />
| [https://github.com/Sude-/lgogdownloader/ lgogdownloader]<br />
| {{ic|~/.gogdownloader}}<br />
| [https://github.com/Sude-/lgogdownloader/commit/d430af63d000 d430af63d000]<br />
| [https://github.com/Sude-/lgogdownloader/issues/4]<br />
|<br />
|-<br />
| [[LibreOffice]]<br />
|<br />
| [https://cgit.freedesktop.org/libreoffice/ure/commit/?id=a6f56f70a4930d3f71bd9c9b90fdd0ba20e4da5f a6f56f70] [https://cgit.freedesktop.org/libreoffice/bootstrap/commit/?id=25bd2eec77ed774a37d1cddd0d72312e23d5e9fd 25bd2eec]<br />
| [https://bugs.documentfoundation.org/show_bug.cgi?id=32263]<br />
|<br />
|-<br />
| [[livestreamer]]<br />
| {{ic|~/.livestreamerrc}}<br />
| [https://github.com/chrippa/livestreamer/commit/ea805917 ea805917]<br />
| [https://github.com/chrippa/livestreamer/pull/106]<br />
|<br />
|-<br />
| [[llpp]]<br />
|<br />
| [http://repo.or.cz/w/llpp.git/commit/3ab86f0cb 3ab86f0cb]<br />
|<br />
| Currently llpp places the configuration directly under {{ic|XDG_CONFIG_HOME}} instead of creating a directory.<br />
|-<br />
| [[mc]]<br />
| {{ic|~/.mc}}<br />
| [https://www.midnight-commander.org/changeset/1b9957058 1b9957058] [https://www.midnight-commander.org/changeset/0b7115647 0b7115647]<br />
<br />
[https://www.midnight-commander.org/changeset/ce401d797 ce401d797]<br />
| [https://www.midnight-commander.org/ticket/1851]<br />
|<br />
|-<br />
| [[Mercurial]]<br />
| {{ic|~/.hgrc}}<br />
| [https://www.mercurial-scm.org/repo/hg/rev/354020079723 354020079723] [https://www.mercurial-scm.org/wiki/Release4.2 4.2]<br />
|<br />
| {{ic|XDG_CONFIG_HOME/hg/hgrc}}.<br />
|-<br />
| [https://www.mesa3d.org/ mesa]<br />
|<br />
| [https://cgit.freedesktop.org/mesa/mesa/commit/?id=87ab26b2ab35a29d446ae66f1795d40c184c0739 87ab26b2ab]<br />
|<br />
| {{ic|XDG_CACHE_HOME/mesa}}<br />
|-<br />
| [http://milkytracker.org/ milkytracker]<br />
| {{ic|~/.milkytracker_config}}<br />
| [https://github.com/Deltafire/MilkyTracker/commit/eb487c55 eb487c55]<br />
| [https://github.com/Deltafire/MilkyTracker/issues/12]<br />
|<br />
|-<br />
| [https://github.com/mintty/mintty mintty]<br />
| {{ic|~/.minttyrc}}<br />
| [https://github.com/mintty/mintty/commit/cff1bd8f cff1bd8f] v2.3.7.<br />
| [https://github.com/mintty/mintty/issues/525]<br />
|-<br />
| [[mpd]]<br />
| {{ic|~/.mpdconf}}<br />
| [http://git.musicpd.org/cgit/master/mpd.git/commit/?id=87b73284 87b73284]<br />
|<br />
|<br />
|-<br />
| [[mpv]]<br />
| {{ic|~/.mpv}}<br />
| [https://github.com/mpv-player/mpv/commit/cb250d490 cb250d490]<br />
| [https://github.com/mpv-player/mpv/pull/864]<br />
|<br />
|-<br />
| [[mutt]]<br />
| {{ic|~/.mutt}}<br />
| [https://dev.mutt.org/trac/changeset/42fee7585f 42fee7585f]<br />
| [http://dev.mutt.org/trac/ticket/3207]<br />
|<br />
|-<br />
| [http://mypaint.intilinux.com/ mypaint]<br />
| {{ic|~/.mypaint}}<br />
| [https://github.com/mypaint/mypaint/commit/cf723b74cd cf723b74cd]<br />
|<br />
|<br />
|-<br />
| [[ncmpcpp]]<br />
| {{ic|~/.ncmpcpp}}<br />
| [https://github.com/arybczak/ncmpcpp/commit/38d9f811de888e512b0115f551a9679eab4607f9 38d9f811] [https://github.com/arybczak/ncmpcpp/commit/27cd86e0638bba3a7a78e44ac40dc98a58d1d90d 27cd86e0]<br />
| [https://github.com/arybczak/ncmpcpp/issues/79] [https://github.com/arybczak/ncmpcpp/issues/110]<br />
| {{ic|ncmpcpp_directory}} should be set to avoid an {{ic|error.log}} file in {{ic|~/.ncmpcpp}}.<br />
|-<br />
| [[neovim]]<br />
| {{ic|~/.nvim}}<br />
<br />
{{ic|~/.nvimlog}}<br />
<br />
{{ic|~/.nviminfo}}<br />
| [https://github.com/neovim/neovim/commit/1ca5646bb 1ca5646bb]<br />
| [https://github.com/neovim/neovim/issues/78] [https://github.com/neovim/neovim/pull/3198]<br />
|<br />
|-<br />
| [[newsbeuter]]<br />
| {{ic|~/.newsbeuter}}<br />
| [https://github.com/akrennmair/newsbeuter/commit/3c57824c5 3c57824c5]<br />
| [https://github.com/akrennmair/newsbeuter/pull/39]<br />
| It is required to create both directories [http://newsbeuter.org/doc/newsbeuter.html#_xdg_base_directory_support]:<br />
<br />
{{ic|1=$ mkdir -p "$XDG_DATA_HOME"/newsbeuter "$XDG_CONFIG_HOME"/newsbeuter}}<br />
|-<br />
| [[OfflineIMAP]]<br />
| {{ic|~/.offlineimaprc}}<br />
| [https://github.com/OfflineIMAP/offlineimap/commit/5150de5 5150de5]<br />
| [https://github.com/OfflineIMAP/offlineimap/issues/32]<br />
|<br />
|-<br />
| [https://bitbucket.org/opentyrian/opentyrian/wiki/Home opentyrian]<br />
| {{ic|~/.opentyrian}}<br />
| [https://bitbucket.org/opentyrian/opentyrian/commits/8d45ff2 8d45ff2]<br />
| [https://web.archive.org/web/20140815181350/http://code.google.com/p/opentyrian/issues/detail?id=125]<br />
|<br />
|-<br />
| [http://pcsx2.net/ pcsx2]<br />
| {{ic|~/.pcsx2}}<br />
| [https://github.com/PCSX2/pcsx2/commit/87f1e8f77 87f1e8f77] [https://github.com/PCSX2/pcsx2/commit/a9020c606 a9020c606]<br />
<br />
[https://github.com/PCSX2/pcsx2/commit/3b22f0fb0 3b22f0fb0] [https://github.com/PCSX2/pcsx2/commit/0a012aec2 0a012aec2]<br />
| [https://github.com/PCSX2/pcsx2/issues/352] [https://github.com/PCSX2/pcsx2/issues/381]<br />
|<br />
|-<br />
| [https://pip.pypa.io/ pip]<br />
| {{ic|~/.pip}}<br />
| [https://github.com/pypa/pip/blob/548a9136525815dff41acd845c558a0b36eb1c5f/NEWS.rst#60-2014-12-22 6.0]<br />
| [https://github.com/pypa/pip/issues/1733]<br />
|<br />
|-<br />
| [http://www.ppsspp.org/ ppsspp]<br />
| {{ic|~/.ppsspp}}<br />
| [https://github.com/hrydgard/ppsspp/commit/132fe47c7d 132fe47c7d]<br />
| [https://github.com/hrydgard/ppsspp/issues/4623]<br />
|<br />
|-<br />
| {{pkg|procps-ng}}<br />
| {{ic|~/.toprc}}<br />
| [https://gitlab.com/procps-ng/procps/commit/af53e170b9 af53e170b9]<br />
| [https://gitlab.com/procps-ng/procps/merge_requests/38] [https://bugzilla.redhat.com/show_bug.cgi?id=1155265]<br />
|<br />
|-<br />
| [https://github.com/Cloudef/orbment/ orbment]<br />
|<br />
|<br />
|<br />
|<br />
|-<br />
| [[pacman]]<br />
| {{ic|~/.makepkg.conf}}<br />
| [https://projects.archlinux.org/pacman.git/commit/?id=80eca94c8 80eca94c8]<br />
| [https://mailman.archlinux.org/pipermail/pacman-dev/2014-July/019178.html]<br />
|<br />
|-<br />
| [[PulseAudio]]<br />
| {{ic|~/.pulse}}<br />
<br />
{{ic|~/.pulse-cookie}}<br />
| [http://cgit.freedesktop.org/pulseaudio/pulseaudio/commit/?id=59a8618dcd9 59a8618dcd9] [http://cgit.freedesktop.org/pulseaudio/pulseaudio/commit/?id=87ae8307057 87ae8307057]<br />
<br />
[http://cgit.freedesktop.org/pulseaudio/pulseaudio/commit/?id=9ab510a6921 9ab510a6921] [http://cgit.freedesktop.org/pulseaudio/pulseaudio/commit/?id=4c195bcc9d5 4c195bcc9d5]<br />
| [https://bugzilla.redhat.com/show_bug.cgi?id=845607]<br />
|<br />
|-<br />
| [http://pyroom.org/index.html pyroom]<br />
|<br />
|<br />
|<br />
|<br />
|-<br />
| [[qutebrowser]]<br />
|<br />
|<br />
|<br />
|<br />
|-<br />
| [[qtile]]<br />
|<br />
| [https://github.com/qtile/qtile/commit/fd8686e5b4e4fa20bb82039ed8a83768434585ec fd8686e] [https://github.com/qtile/qtile/commit/66d704bce83f631b3326f10a1bc9fc22f8e6a6fd 66d704b]<br />
<br />
[https://github.com/qtile/qtile/commit/51cff019917b87bda696b381493f969ceb6cc350 51cff01]<br />
| [https://github.com/qtile/qtile/pull/835]<br />
| Some optional bar widgets can create files and directories in non-compliant paths, but most often these are still configurable.<br />
|-<br />
| [http://www.libretro.com/ retroarch]<br />
|<br />
|<br />
|<br />
|<br />
|-<br />
| [http://rr-project.org/ rr]<br />
| {{ic|~/.rr}}<br />
| [https://github.com/mozilla/rr/commit/02e7d41e 02e7d41e]<br />
| [https://github.com/mozilla/rr/issues/1455]<br />
|<br />
|-<br />
| {{AUR|sublime-text-dev}}<br />
|<br />
|<br />
|<br />
| Cache is placed in {{ic|$XDG_CONFIG_HOME/sublime-text-3/Cache}} instead of expected {{ic|$XDG_CACHE_HOME/sublime-text-3}}.<br />
|-<br />
| [[surfraw]]<br />
| {{ic|~/.surfraw.conf}}<br />
<br />
{{ic|~/.surfraw.bookmarks}}<br />
| [http://anonscm.debian.org/cgit/surfraw/surfraw.git/commit/?id=3e4591d8 3e4591d8] [http://anonscm.debian.org/cgit/surfraw/surfraw.git/commit/?id=bd8c427d bd8c427d]<br />
<br />
[http://anonscm.debian.org/cgit/surfraw/surfraw.git/commit/?id=f57fc718 f57fc718]<br />
|<br />
|<br />
|-<br />
| [[sway]]<br />
| {{ic|~/.sway/config}}<br />
| [https://github.com/SirCmpwn/sway/commit/614393c09 614393c09]<br />
| [https://github.com/SirCmpwn/sway/issues/5]<br />
|<br />
|-<br />
| [[systemd]]<br />
|<br />
|<br />
|<br />
|<br />
|-<br />
| [[termite]]<br />
|<br />
|<br />
|<br />
|<br />
|-<br />
| [[transmission]]<br />
| {{ic|~/.transmission}}<br />
| [https://trac.transmissionbt.com/changeset/5517 5517]<br />
| [https://trac.transmissionbt.com/ticket/684]<br />
|<br />
|-<br />
| [https://www.kernel.org/pub/linux/utils/util-linux/ util-linux]<br />
|<br />
| [http://git.kernel.org/cgit/utils/util-linux/util-linux.git/commit/?id=570b32100 570b32100]<br />
|<br />
|<br />
|-<br />
| [[uzbl]]<br />
|<br />
| [https://github.com/uzbl/uzbl/commit/c6fd63a c6fd63a]<br />
| [https://github.com/uzbl/uzbl/pull/150]<br />
|<br />
|-<br />
| [http://fanglingsu.github.io/vimb/ vimb]<br />
|<br />
|<br />
|<br />
|<br />
|-<br />
| [[VirtualBox]]<br />
| {{ic|~/.VirtualBox}}<br />
| [https://www.virtualbox.org/ticket/5099?action=diff&version=7 4.3]<br />
| [https://www.virtualbox.org/ticket/5099]<br />
|<br />
|-<br />
| [[VLC media player]]<br />
| {{ic|~/.vlcrc}}<br />
| [http://git.videolan.org/?p=vlc.git;a=commit;h=16f32e1500887c0dcd33cb06ad71759a81a52878 16f32e15]<br />
| [https://trac.videolan.org/vlc/ticket/1267]<br />
|<br />
|-<br />
| [https://www.warsow.gg/ warsow]<br />
| {{ic|~/.warsow-2.x}}<br />
| [https://github.com/Qfusion/qfusion/commit/98ece3f 98ece3f]<br />
| [https://github.com/Qfusion/qfusion/issues/298]<br />
|<br />
|-<br />
| [[wireshark]]<br />
| {{ic|~/.wireshark}}<br />
| [https://code.wireshark.org/review/gitweb?p=wireshark.git;a=commit;h=b0b53fa5937aa7ba258427ca0f3581dba725230d b0b53fa5]<br />
|<br />
|<br />
|-<br />
| [https://github.com/derat/xsettingsd xsettingsd]<br />
| {{ic|~/.xsettingsd}}<br />
| [https://github.com/derat/xsettingsd/commit/b4999f5e9e99224caf97d09f25ee731774ecd7be 4ecd7be]<br />
|<br />
|<br />
|-<br />
| [[xmonad]]<br />
| {{ic|~/.xmonad}}<br />
| [https://github.com/xmonad/xmonad/commit/40fc10b6a5682ce1d6ba7f0679962926ef6cfade 40fc10b6]<br />
| [https://github.com/xmonad/xmonad/issues/61] [https://code.google.com/p/xmonad/issues/detail?id=484]<br />
| Alternatively the environments {{ic|XMONAD_CONFIG_HOME}}, {{ic|XMONAD_DATA_HOME}}, and {{ic|XMONAD_CACHE_HOME}} are also available.<br />
|}<br />
<br />
==Partial==<br />
{| class="wikitable sortable" style="width: 100%"<br />
! Application<br />
! Legacy Path<br />
! Supported Since<br />
! Discussion<br />
! Notes<br />
|-<br />
| [http://abook.sourceforge.net/ abook]<br />
| {{ic|~/.abook}}<br />
|<br />
|<br />
| {{ic|1=$ abook --config "$XDG_CONFIG_HOME"/abook/abookrc \<br />
--datafile "$XDG_CACHE_HOME"/abook/addressbook}}<br />
|-<br />
| [[Anki]]<br />
| {{ic|~/Anki}}<br />
<br />
{{ic|~/Documents/Anki}}<br />
|<br />
| [https://github.com/dae/anki/pull/49] [https://github.com/dae/anki/pull/58]<br />
| {{ic|1=$ anki -b "$XDG_DATA_HOME"/Anki}}<br />
|-<br />
| [[aspell]]<br />
| {{ic|~/.aspell.conf}}<br />
|<br />
|<br />
|<br />
|-<br />
| [[Atom]]<br />
| {{ic|~/.atom}}<br />
|<br />
| [https://github.com/atom/atom/issues/8281]<br />
| {{ic|1=$ export ATOM_HOME="$XDG_DATA_HOME"/atom}}<br />
|-<br />
| [http://crates.io/ cargo]<br />
| {{ic|~/.cargo}}<br />
|<br />
| [https://github.com/rust-lang/cargo/pull/148] [https://github.com/rust-lang/cargo/issues/1734] [https://github.com/rust-lang/rfcs/pull/1615]<br />
| {{ic|1=$ export CARGO_HOME="$XDG_DATA_HOME"/cargo}}<br />
|-<br />
| [[ccache]]<br />
| {{ic|~/.ccache}}<br />
|<br />
|<br />
| {{ic|1=$ export CCACHE_DIR="$XDG_CACHE_HOME"/ccache}}<br />
|-<br />
| [https://github.com/cisco/ChezScheme ChezScheme]<br />
| {{ic|~/.chezscheme_history}}<br />
|<br />
|<br />
| {{ic|1=$ petite --eehistory "$XDG_DATA_HOME"/chezscheme/history}}<br />
|-<br />
| [[conky]]<br />
| {{ic|~/.conkyrc}}<br />
| [https://github.com/brndnmtthws/conky/commit/00481ee9a97025e8e2acd7303d080af1948f7980 00481ee]<br />
| [https://github.com/brndnmtthws/conky/issues/144]<br />
| {{ic|1=$ conky --config="$XDG_CONFIG_HOME"/conky/conkyrc}}<br />
|-<br />
| [[coreutils]]<br />
| {{ic|~/.dircolors}}<br />
|<br />
|<br />
| {{ic|1=$ source "$(dircolors "$XDG_CONFIG_HOME"/dircolors)"}}<br />
|-<br />
| [http://www.dungeoncrawl.org/ crawl]<br />
| {{ic|~/.crawl}}<br />
|<br />
|<br />
| The trailing slash is required:<br />
<br />
{{ic|1=$ export CRAWL_DIR="$XDG_DATA_HOME"/crawl/}}<br />
|-<br />
| [[dict]]<br />
| {{ic|~/.dictrc}}<br />
|<br />
|<br />
| {{ic|1=$ dict -c "$XDG_CONFIG_HOME"/dict/dictrc}}<br />
|-<br />
| [[ELinks]]<br />
| {{ic|~/.elinks}}<br />
|<br />
|<br />
| {{ic|1=$ export ELINKS_CONFDIR="$XDG_CONFIG_HOME"/elinks}}<br />
|-<br />
| [http://kripken.github.io/emscripten-site/ emscripten]<br />
| {{ic|~/.emscripten}}<br />
<br />
{{ic|~/.emscripten_sanity}}<br />
<br />
{{ic|~/.emscripten_ports}}<br />
<br />
{{ic|~/.emscripten_cache__last_clear}}<br />
|<br />
| [https://github.com/kripken/emscripten/issues/3624 3624]<br />
| {{ic|1=$ export EM_CONFIG="$XDG_CONFIG_HOME"/emscripten/config}}<br />
<br />
{{ic|1=$ export EM_CACHE="$XDG_CACHE_HOME"/emscripten/cache}}<br />
<br />
{{ic|1=$ export EM_PORTS="$XDG_DATA_HOME"/emscripten/cache}}<br />
<br />
{{ic|1=$ emcc --em-config "$XDG_CONFIG_HOME"/emscripten/config \<br />
--em-cache "$XDG_CACHE_HOME"/emscripten/cache}}<br />
|-<br />
| [http://www.gnu.org/software/gdb/ gdb]<br />
| {{ic|~/.gdbinit}}<br />
|<br />
|<br />
| {{ic|1=$ gdb -nh -x "$XDG_CONFIG_HOME"/gdb/init}}<br />
|-<br />
| [https://github.com/get-iplayer/get_iplayer get_iplayer]<br />
| {{ic|~/.get_iplayer}}<br />
|<br />
|<br />
| {{ic|1=$ export GETIPLAYERUSERPREFS="$XDG_DATA_HOME"/get_iplayer}}<br />
|-<br />
| [[GIMP]]<br />
| {{ic|~/.gimp-2.8}}<br />
{{ic|~/.thumbnails}}<br />
| [https://git.gnome.org/browse/gimp/commit/?id=60e0cfe 60e0cfe]<br />
| [https://bugzilla.gnome.org/show_bug.cgi?id=166643] [https://mail.gnome.org/archives/gimp-developer-list/2012-October/msg00028.html]<br />
| {{ic|1=$ export GIMP2_DIRECTORY="$XDG_CONFIG_HOME"/gimp}}<br />
|-<br />
| [http://guichaz.free.fr/gliv/ gliv]<br />
| {{ic|~/.glivrc}}<br />
|<br />
|<br />
| {{ic|1=$ gliv --glivrc="$XDG_CONFIG_HOME"/gliv/glivrc}}<br />
|-<br />
| [[GnuPG]]<br />
| {{ic|~/.gnupg}}<br />
|<br />
| [https://bugs.gnupg.org/gnupg/issue1456] [https://bugs.gnupg.org/gnupg/issue1018]<br />
| {{ic|1=$ export GNUPGHOME="$XDG_CONFIG_HOME"/gnupg}}<br />
<br />
{{ic|1=$ gpg2 --homedir "$XDG_CONFIG_HOME"/gnupg}}<br />
|-<br />
| [[Google Earth]]<br />
| {{ic|~/.googleearth}}<br />
|<br />
|<br />
| Some paths can be changed with the {{ic|KMLPath}} and {{ic|CachePath}} options in {{ic|~/.config/Google/GoogleEarthPlus.conf}}<br />
|-<br />
| [https://sourceforge.net/projects/gqclient GQ LDAP client]<br />
| {{ic|~/.gq}}<br />
{{ic|~/.gq-state}}<br />
| [https://sourceforge.net/p/gqclient/mailman/message/2053978 1.51]<br />
|<br />
| {{ic|1=$ export GQRC="$XDG_CONFIG_HOME"/gqrc}}<br />
<br />
{{ic|1=$ export GQSTATE="$XDG_DATA_HOME"/gq/gq-state}}<br />
<br />
{{ic|1=$ mkdir -p "$(dirname "$GQSTATE")"}}<br />
|-<br />
| [https://gradle.org/ gradle]<br />
| {{ic|~/.gradle}}<br />
|<br />
| [https://discuss.gradle.org/t/be-a-nice-freedesktop-citizen-move-the-gradle-to-the-appropriate-location-in-linux/2199]<br />
| {{ic|1=$ export GRADLE_USER_HOME="$XDG_DATA_HOME"/gradle}}<br />
|-<br />
| [[gtk]]<br />
| {{ic|~/.gtkrc}}<br />
|<br />
|<br />
| {{ic|1=$ export GTK_RC_FILES="$XDG_CONFIG_HOME"/gtk-1.0/gtkrc}}<br />
|-<br />
| [[gtk|gtk2]]<br />
| {{ic|~/.gtkrc-2.0}}<br />
|<br />
|<br />
| {{ic|1=$ export GTK2_RC_FILES="$XDG_CONFIG_HOME"/gtk-2.0/gtkrc}}<br />
|-<br />
| [http://httpie.org httpie]<br />
| {{ic|~/.httpie}}<br />
|<br />
| [https://github.com/jakubroztocil/httpie/issues/145]<br />
| {{ic|1=$ export HTTPIE_CONFIG_DIR="$XDG_CONFIG_HOME"/httpie}}<br />
|-<br />
| [http://ipython.org ipython]/[[jupyter]]<br />
| {{ic|~/.ipython}}<br />
|<br />
|<br />
| {{ic|1=$ export IPYTHONDIR="$XDG_CONFIG_HOME"/jupyter}}<br />
<br />
{{ic|1=$ export JUPYTER_CONFIG_DIR="$XDG_CONFIG_HOME"/jupyter}}<br />
|-<br />
| [[irssi]]<br />
| {{ic|~/.irssi}}<br />
|<br />
| [https://github.com/irssi/irssi/pull/511]<br />
| {{ic|1=$ irssi --config="$XDG_CONFIG_HOME"/irssi/config \<br />
--home="$XDG_DATA_HOME"/irssi}}<br />
|-<br />
| [[isync]]<br />
| {{ic|~/.mbsyncrc}}<br />
|<br />
|<br />
| {{ic|1=$ mbsync -c "$XDG_CONFIG_HOME"/isync/mbsyncrc}}<br />
|-<br />
| [[core utilities#less|less]]<br />
| {{ic|~/.lesshst}}<br />
|<br />
|<br />
| {{ic|1=$ mkdir -p "$XDG_CACHE_HOME"/less}}<br />
<br />
{{ic|1=$ export LESSHISTFILE="$XDG_CACHE_HOME"/less/history}}<br />
<br />
{{ic|1=$ export LESSHISTFILE=-}} can be used to disable this feature.<br />
<br />
{{ic|1=$ export LESSKEY="$XDG_CONFIG_HOME"/less/lesskey}}<br />
|-<br />
| [http://www.videolan.org/developers/libdvdcss.html libdvdcss]<br />
| {{ic|~/.dvdcss}}<br />
|<br />
| [https://mailman.videolan.org/pipermail/libdvdcss-devel/2014-August/001022.html]<br />
| {{ic|1=$ export DVDCSS_CACHE="$XDG_DATA_HOME"/dvdcss}}<br />
|-<br />
| [https://www.x.org/releases/current/doc/libICE/ice.html libice]<br />
| {{ic|~/.ICEauthority}}<br />
|<br />
| [https://bugs.freedesktop.org/show_bug.cgi?id=49173]<br />
| {{ic|1=$ export ICEAUTHORITY="$XDG_RUNTIME_DIR"/ICEauthority}}<br />
|-<br />
| [[Xorg|libx11]]<br />
| {{ic|~/.XCompose}}<br />
|<br />
|<br />
| {{ic|1=$ export XCOMPOSEFILE="$XDG_CONFIG_HOME"/X11/xcompose}}<br />
|-<br />
| [http://ltrace.org/ ltrace]<br />
| {{ic|~/.ltrace.conf}}<br />
|<br />
|<br />
| {{ic|1=$ ltrace -F "$XDG_CONFIG_HOME"/ltrace/ltrace.conf}}<br />
|-<br />
| {{pkg|maven}}<br />
| {{ic|~/.m2}}<br />
|<br />
|<br />
| {{ic|1=$ mvn -gs "$XDG_CONFIG_HOME"/maven/settings.xml}}<br />
{{hc|[http://maven.apache.org/settings.html settings.xml]|<nowiki><settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"<br />
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"<br />
xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0<br />
https://maven.apache.org/xsd/settings-1.0.0.xsd"><br />
...<br />
<localRepository>${env.XDG_CACHE_HOME}/maven/repository</localRepository><br />
...<br />
</settings></nowiki>}}<br />
|-<br />
| [[Mathematica]]<br />
| {{ic|~/.Mathematica}}<br />
|<br />
|<br />
| {{ic|1=$ export MATHEMATICA_USERBASE="$XDG_CONFIG_HOME"/mathematica}}<br />
|-<br />
| [http://mednafen.sourceforge.net/ mednafen]<br />
| {{ic|~/.mednafen}}<br />
|<br />
|<br />
| {{ic|1=$ export MEDNAFEN_HOME="$XDG_CONFIG_HOME"/mednafen}}<br />
|-<br />
| [[moc]]<br />
| {{ic|~/.moc}}<br />
|<br />
|<br />
| {{ic|1=$ mocp -M "$XDG_CONFIG_HOME"/moc}}<br />
<br />
{{ic|1=$ mocp -O MOCDir="$XDG_CONFIG_HOME"/moc}}<br />
|-<br />
| [[MPlayer]]<br />
| {{ic|~/.mplayer}}<br />
|<br />
|<br />
| {{ic|1=$ export MPLAYER_HOME="$XDG_CONFIG_HOME"/mplayer}}<br />
|-<br />
| {{pkg|ncurses}}<br />
| {{ic|~/.terminfo}}<br />
|<br />
|<br />
| Precludes system path searching:<br />
<br />
{{ic|1=$ export TERMINFO="$XDG_DATA_HOME"/terminfo}}<br />
<br />
{{ic|1=$ export TERMINFO_DIRS="$XDG_DATA_HOME"/terminfo:/usr/share/terminfo}}<br />
|-<br />
| [http://www.musicpd.org/clients/ncmpc/ ncmpc]<br />
| {{ic|~/.ncmpc}}<br />
|<br />
|<br />
| {{ic|ncmpc -f "$XDG_CONFIG_HOME"/ncmpc/config}}<br />
|-<br />
| [[notmuch]]<br />
| {{ic|~/.notmuch-config}}<br />
|<br />
| [http://notmuchmail.org/pipermail/notmuch/2011/007007.html]<br />
| {{ic|1=$ export NOTMUCH_CONFIG="$XDG_CONFIG_HOME"/notmuch/notmuchrc}}<br />
<br />
{{ic|1=$ export NMBGIT="$XDG_DATA_HOME"/notmuch/nmbug}}<br />
|-<br />
| {{pkg|npm}}<br />
| {{ic|~/.npm}}<br />
<br />
{{ic|~/.npmrc}}<br />
|<br />
| [https://github.com/npm/npm/issues/6675]<br />
| {{ic|1=$ export NPM_CONFIG_USERCONFIG=$XDG_CONFIG_HOME/npm/npmrc}}<br />
{{hc|npmrc|<nowiki>cache=$XDG_CACHE_HOME/npm<br />
prefix=$XDG_DATA_HOME/npm</nowiki>}}<br />
|-<br />
| [[NVIDIA]], [[CUDA]]<br />
| {{ic|~/.nv}}<br />
|<br />
|<br />
| {{ic|1=$ export __GL_SHADER_DISK_CACHE_PATH="$XDG_CACHE_HOME"/nv}}<br />
<br />
{{ic|1=$ export CUDA_CACHE_PATH="$XDG_CACHE_HOME"/nv}}<br />
|-<br />
| [https://github.com/NVIDIA/nvidia-settings nvidia-settings]<br />
| {{ic|~/.nvidia-settings-rc}}<br />
|<br />
|<br />
| {{ic|1=$ nvidia-settings --config="$XDG_CONFIG_HOME"/nvidia/settings}}<br />
|-<br />
| [http://www.openscad.org/ openscad]<br />
| {{ic|~/.OpenSCAD}}<br />
| [https://github.com/openscad/openscad/commit/7c3077b0f 7c3077b0f]<br />
| [https://github.com/openscad/openscad/issues/125]<br />
| Does not fully honour XDG Base Directory Specification, see [https://github.com/openscad/openscad/issues/373]<br />
<br />
Currently it [https://github.com/openscad/openscad/blob/master/src/PlatformUtils-posix.cc#L20 hard-codes] {{ic|~/.local/share}}.<br />
|-<br />
| [[OpenSSL]]<br />
| {{ic|~/.rnd}}<br />
|<br />
|<br />
| Seeding file .rnd's location can be set with RANDFILE environment variable per [https://www.openssl.org/docs/faq.html FAQ].<br />
|-<br />
| {{pkg|pass}}<br />
| {{ic|~/.password-store}}<br />
|<br />
|<br />
| {{ic|1=$ export PASSWORD_STORE_DIR="$XDG_DATA_HOME"/pass}}<br />
|-<br />
| {{pkg|pidgin}}<br />
| {{ic|~/.purple}}<br />
|<br />
|<br />
| {{ic|1=$ pidgin --config="$XDG_DATA_HOME"/purple}}<br />
|-<br />
| [[PulseAudio]]<br />
| {{ic|~/.esd_auth}}<br />
|<br />
|<br />
| Very likely generated by the {{ic|module-esound-protocol-unix.so}} module. It can be configured to use a different location but it makes much more sense to just comment out this module in {{ic|/etc/pulse/default.pa}} or {{ic|"$XDG_CONFIG_HOME"/pulse/default.pa}}.<br />
|-<br />
| [https://pypi.python.org/pypi/setuptools python-setuptools]<br />
| {{ic|~/.python-eggs}}<br />
|<br />
|<br />
| {{ic|1=$ export PYTHON_EGG_CACHE="$XDG_CACHE_HOME"/python-eggs}}<br />
|-<br />
| {{Pkg|rclone}}<br />
| {{ic|~/.rclone.conf}}<br />
|<br />
|<br />
| {{ic|1=$ rclone --config="$XDG_CONFIG_HOME"/rclone/rclone.conf}}<br />
|-<br />
| [[readline]]<br />
| {{ic|~/.inputrc}}<br />
|<br />
|<br />
| {{ic|1=$ export INPUTRC="$XDG_CONFIG_HOME"/readline/inputrc}}<br />
|-<br />
| [http://utopia.knoware.nl/~hlub/uck/rlwrap/ rlwrap]<br />
| {{ic|~/.*_history}}<br />
|<br />
| [https://github.com/hanslub42/rlwrap/issues/25]<br />
| {{ic|1=$ export RLWRAP_HOME="$XDG_DATA_HOME"/rlwrap}}<br />
|-<br />
| [http://www.scala-sbt.org/ sbt]<br />
| {{ic|~/.sbt}}<br />
{{ic|~/.ivy2}}<br />
|<br />
|<br />
| {{ic|1=$ sbt -ivy "$XDG_DATA_HOME"/ivy2 -sbt-dir "$XDG_DATA_HOME"/sbt}}<br />
|-<br />
| [[screen]]<br />
| {{ic|~/.screenrc}}<br />
|<br />
|<br />
| {{ic|1=$ export SCREENRC="$XDG_CONFIG_HOME"/screen/screenrc}}<br />
|-<br />
| [https://www.stackage.org/ stack]<br />
| {{ic|~/.stack}}<br />
|<br />
| [https://github.com/commercialhaskell/stack/issues/342]<br />
| {{ic|1=$ export STACK_ROOT="$XDG_DATA_HOME"/stack}}<br />
|-<br />
| [[subversion]]<br />
| {{ic|~/.subversion}}<br />
|<br />
| [https://issues.apache.org/jira/browse/SVN-4599] [https://mail-archives.apache.org/mod_mbox/subversion-users/201204.mbox/%3c4F8FBCC6.4080205@ritsuka.org%3e][http://mail-archives.apache.org/mod_mbox/subversion-dev/201509.mbox/%3c20150917222954.GA20331@teapot%3e]<br />
| {{ic|1=$ svn --config-dir "$XDG_CONFIG_HOME"/subversion}}<br />
|-<br />
| {{pkg|task}}<br />
| {{ic|~/.task}}<br />
<br />
{{ic|~/.taskrc}}<br />
|<br />
|<br />
| {{ic|1=$ export TASKDATA="$XDG_DATA_HOME"/task}}<br />
<br />
{{ic|1=$ export TASKRC="$XDG_CONFIG_HOME"/task/taskrc}}<br />
|-<br />
| [http://jonas.nitro.dk/tig/ tig]<br />
| {{ic|~/.tigrc}}<br />
|<br />
|<br />
| {{ic|1=$ export TIGRC_USER="$XDG_CONFIG_HOME"/tig/tigrc}}<br />
|-<br />
| [http://tiptop.gforge.inria.fr/ tiptop]<br />
| {{ic|~/.tiptoprc}}<br />
|<br />
|<br />
| This will still expect the {{ic|.tiptoprc}} file.<br />
{{ic|$ tiptop -W "$XDG_CONFIG_HOME"/tiptop}}<br />
|-<br />
| [[tmux]]<br />
| {{ic|~/.tmux.conf}}<br />
|<br />
| [http://comments.gmane.org/gmane.comp.terminal-emulators.tmux.user/6013] [http://sourceforge.net/p/tmux/mailman/message/30619546/]<br />
| {{ic|1=$ tmux -f "$XDG_CONFIG_HOME"/tmux/tmux.conf}}<br />
<br />
{{ic|1=$ export TMUX_TMPDIR="$XDG_RUNTIME_DIR"}}<br />
|-<br />
| [https://github.com/bengardner/uncrustify uncrustify]<br />
| {{ic|~/.uncrustify.cfg}}<br />
|<br />
|<br />
| {{ic|1=$ export UNCRUSTIFY_CONFIG="$XDG_CONFIG_HOME"/uncrustify/uncrustify.cfg}}<br />
|-<br />
| [[Unison]]<br />
| {{ic|~/.unison}}<br />
|<br />
|<br />
| {{ic|1=$ export UNISON="$XDG_DATA_HOME"/unison}}<br />
|-<br />
| [[Rxvt-unicode/Tips_and_tricks#Daemon-client|urxvtd]]<br />
| {{ic|~/.urxvt/urxvtd-hostname}}<br />
|<br />
|<br />
| {{ic|1=$ export RXVT_SOCKET="$XDG_RUNTIME_DIR"/urxvtd}}<br />
|-<br />
| [[WeeChat]]<br />
| {{ic|~/.weechat}}<br />
|<br />
| [http://savannah.nongnu.org/task/?10934]<br />
| {{ic|1=$ export WEECHAT_HOME="$XDG_CONFIG_HOME"/weechat}}<br />
<br />
{{ic|1=$ weechat -d "$XDG_CONFIG_HOME"/weechat}}<br />
|-<br />
| [[wget]]<br />
| {{ic|~/.wgetrc}}<br />
|<br />
|<br />
| {{ic|1=$ export WGETRC="$XDG_CONFIG_HOME/wgetrc"}}<br />
|-<br />
| [[wine]]<br />
| {{ic|~/.wine}}<br />
|<br />
| [https://bugs.winehq.org/show_bug.cgi?id=20888]<br />
| [[Wine#Winetricks|Winetricks]] uses XDG-alike location below for [[Wine#WINEPREFIX|WINEPREFIX]] management:<br />
{{ic|1=$ mkdir -p "$XDG_DATA_HOME"/wineprefixes}}<br />
<br />
{{ic|1=$ export WINEPREFIX="$XDG_DATA_HOME"/wineprefixes/default}}<br />
|-<br />
| {{pkg|xorg-xauth}}<br />
| {{ic|~/.Xauthority}}<br />
|<br />
|<br />
| {{ic|1=$ export XAUTHORITY="$XDG_RUNTIME_DIR"/Xauthority}}<br />
|-<br />
| {{pkg|xorg-xinit}}<br />
| {{ic|~/.xinitrc}}<br />
<br />
{{ic|~/.xserverrc}}<br />
|<br />
|<br />
| {{ic|1=$ export XINITRC="$XDG_CONFIG_HOME"/X11/xinitrc}}<br />
{{ic|1=$ export XSERVERRC="$XDG_CONFIG_HOME"/X11/xserverrc}}<br />
<br />
Note that these variables are respected by ''xinit'', but not by ''startx''.<br />
|-<br />
| {{pkg|xorg-xrdb}}<br />
| {{ic|~/.Xresources}}<br />
<br />
{{ic|~/.Xdefaults}}<br />
|<br />
|<br />
| Ultimately you [http://superuser.com/questions/243914/xresources-or-xdefaults should be] using {{ic|Xresources}} and since these resources are loaded via {{ic|xrdb}} you can specify a path such as {{ic|1=$ xrdb -load ~/.config/X11/xresources}}.<br />
|-<br />
| [http://www.vergenet.net/~conrad/software/xsel/ xsel]<br />
| {{ic|~/.xsel.log}}<br />
|<br />
| [https://github.com/kfish/xsel/issues/10]<br />
| {{ic|1=$ xsel --logfile "$XDG_CACHE_HOME"/xsel/xsel.log}}<br />
|}<br />
<br />
==Hardcoded==<br />
<br />
{| class="wikitable sortable" style="width: 100%"<br />
! Application<br />
! Legacy Path<br />
! Discussion<br />
! Notes<br />
|-<br />
| [[adb]]<br />
| {{ic|~/.android}}<br />
|<br />
|<br />
|-<br />
| [[AMule]]<br />
| {{ic|~/.aMule}}<br />
|<br />
|<br />
|-<br />
| [https://developer.android.com/studio/index.html Android Studio]<br />
| {{ic|~/.AndroidStudio2.3}}<br />
<br />
{{ic|~/.android}}<br />
<br />
{{ic|~/.java}}<br />
|<br />
|<br />
|-<br />
| [https://osdn.net/projects/anthy/ anthy]<br />
| {{ic|~/.anthy}}<br />
| [https://osdn.net/ticket/browse.php?group_id=14&tid=28397]<br />
|<br />
|-<br />
| [https://directory.apache.org/studio/ Apache Directory Studio]<br />
| {{ic|~/.ApacheDirectoryStudio}}<br />
|<br />
|-<br />
| [https://www.audacityteam.org/ Audacity]<br />
| {{ic|~/.audacity-data}}<br />
|<br />
|<br />
|-<br />
| [http://fixounet.free.fr/avidemux/ Avidemux]<br />
| {{ic|~/.avidemux6}}<br />
|<br />
|<br />
|-<br />
| [[bash]]<br />
| {{ic|~/.bashrc}}<br />
<br />
{{ic|~/.bash_history}}<br />
<br />
{{ic|~/.bash_profile}}<br />
<br />
{{ic|~/.bash_login}}<br />
<br />
{{ic|~/.bash_logout}}<br />
| [http://savannah.gnu.org/support/?108134]<sup>won't<br />
| A specified {{ic|bashrc}} can be sourced from {{ic|/etc/bashrc}}<br />
{{ic|1=$ export HISTFILE="$XDG_DATA_HOME"/bash/history}}<br />
|-<br />
| [[bazaar]]<br />
| {{ic|~/.bazaar}}<br />
<br />
{{ic|~/.bzr.log}}<br />
|<br />
|<br />
|-<br />
| [https://www.haskell.org/cabal/ cabal]<br />
| {{ic|~/.cabal}}<br />
| [https://github.com/haskell/cabal/issues/680]<br />
| See discussion for potential workarounds. It is not very easy or straightforward but may be possible to emulate Base Directory compliance.<br />
|-<br />
| [https://calibre-ebook.com/ calibre]<br />
| {{ic|~/Calibre Library}}<br />
|<br />
|<br />
|-<br />
| [[CUPS]]<br />
| {{ic|~/.cups}}<br />
| [http://www.cups.org/str.php?L4243]<sup>won't<br />
|<br />
|-<br />
| [[darcs]]<br />
| {{ic|~/.darcs}}<br />
| [http://bugs.darcs.net/issue2453]<br />
|<br />
|-<br />
| [[dbus]]<br />
| {{ic|~/.dbus}}<br />
| [https://bugs.freedesktop.org/show_bug.cgi?id=35887]<br />
| This should be avoidable with kdbus [citation needed].<br />
|-<br />
| [https://wiki.gnome.org/Apps/Dia Dia]<br />
| {{ic|~/.dia}}<br />
|<br />
|-<br />
| [[eclipse]]<br />
| {{ic|~/.eclipse}}<br />
| [https://bugs.eclipse.org/bugs/show_bug.cgi?id=200809]<br />
| Option {{ic|1=-Dosgi.configuration.area=@user.home/.config/..}} overrides but must be added to {{ic|"$ECLIPSE_HOME"/eclipse.ini"}} rather than command line which means you must have write access to {{ic|$ECLIPSE_HOME}}. (Arch Linux hard-codes {{ic|$ECLIPSE_HOME}} in {{ic|/usr/bin/eclipse}})<br />
|-<br />
| [https://www.gnu.org/software/emacs/ emacs]<br />
| {{ic|~/.emacs}}<br />
<br />
{{ic|~/.emacs.d}}<br />
| [http://debbugs.gnu.org/cgi/bugreport.cgi?bug=583]<br />
| It's possible to set {{ic|HOME}}, but it has unexpected side effects. So far the most promising approach is modifying another Emacs environment variable to alter the load path and author your own site file which can manually load up your init file, but it changes the load process significantly.<br />
|-<br />
| [http://www.fetchmail.info/ Fetchmail]<br />
| {{ic|~/.fetchmailrc}}<br />
|<br />
|<br />
|-<br />
| [[Firefox]]<br />
| {{ic|~/.mozilla}}<br />
| [https://bugzil.la/259356]<br />
|<br />
|-<br />
| [https://www.haskell.org/ghc/ GHC]<br />
| {{ic|~/.ghc}}<br />
| [https://ghc.haskell.org/trac/ghc/ticket/6077]<br />
|<br />
|-<br />
| [http://www.gnu.org/software/parallel/ GNU parallel]<br />
| {{ic|~/.parallel}}<br />
|<br />
|<br />
|-<br />
| [http://recordmydesktop.sourceforge.net/about.php gtk-recordMyDesktop]<br />
| {{ic|~/.gtk-recordmydesktop}}<br />
|<br />
|<br />
|-<br />
| [http://www.idris-lang.org/ idris]<br />
| {{ic|~/.idris}}<br />
| [https://github.com/idris-lang/Idris-dev/pull/3456]<br />
|<br />
|-<br />
| [http://julialang.org/ julia]<br />
| {{ic|~/.juliarc.jl}}<br />
<br />
{{ic|~/.julia_history}}<br />
| [https://github.com/JuliaLang/julia/issues/4630] [https://github.com/JuliaLang/julia/issues/10016]<br />
|<br />
|-<br />
| [http://www.linux-pam.org/ Linux PAM]<br />
| {{ic|~/.pam_environment}}<br />
|<br />
| Hardcoded in [https://github.com/linux-pam/linux-pam/blob/master/modules/pam_env/pam_env.c modules/pam_env/pam_env.c]<br />
|-<br />
| [http://lldb.llvm.org/ lldb]<br />
| {{ic|~/.lldb}}<br />
<br />
{{ic|~/.lldbinit}}<br />
|<br />
|<br />
|-<br />
| [http://www.mathomatic.org/ mathomatic]<br />
| {{ic|~/.mathomaticrc}}<br />
<br />
{{ic|~/.matho_history}}<br />
|<br />
| History can be moved by using {{ic|rlwrap mathomatic -r}} with the {{ic|RLWRAP_HOME}} environment set appropriately.<br />
|-<br />
| [http://www.milkytracker.org/ milkytracker]<br />
| {{ic|~/.milkytracker_config}}<br />
| [https://github.com/Deltafire/MilkyTracker/issues/12]<br />
|<br />
|-<br />
| [https://minecraft.net/ Minecraft]<br />
| {{ic|~/.minecraft}}<br />
| [https://bugs.mojang.com/browse/MCL-2563]<br />
|<br />
|-<br />
| [https://www.mongodb.org/ mongodb]<br />
| {{ic|~/.mongorc.js}}<br />
<br />
{{ic|~/.dbshell}}<br />
| [https://jira.mongodb.org/browse/DOCS-5652?jql=text%20~%20%22.mongorc.js%22]<br />
| [http://stackoverflow.com/a/22349050/4200039 This Stack Overflow thread] suggests a partial workaround using command-line switch {{ic|--norc}}.<br />
|-<br />
|<br />
| {{ic|~/.netrc}}<br />
|<br />
| Like {{ic|~/.ssh}}, many programs expect this file to be here. These include projects like curl ({{ic|CURLOPT_NETRC_FILE}}), ftp ({{ic|NETRC}}), s-nail ({{ic|NETRC}}), etc. While some of them offer alternative configurable locations, many do not such as w3m, wget and lftp.<br />
|-<br />
| [https://developer.mozilla.org/en-US/docs/Mozilla/Projects/NSS NSS]<br />
| {{ic|~/.pki}}<br />
| [https://bugzilla.mozilla.org/show_bug.cgi?id=818686]<br />
|<br />
|-<br />
| [https://www.openssh.com/ OpenSSH]<br />
| {{ic|~/.ssh}}<br />
| [https://bugzilla.mindrot.org/show_bug.cgi?id=2050]<br />
| Assumed to be present by many ssh daemons and clients such as DropBear and OpenSSH.<br />
|-<br />
| [https://www.palemoon.org/ palemoon]<br />
| {{ic|~/.moonchild productions}}<br />
| [https://forum.palemoon.org/viewtopic.php?f=5&t=9639]<br />
|<br />
|-<br />
| [https://perf.wiki.kernel.org/index.php/Main_Page perf]<br />
| {{ic|~/.debug}}<br />
|<br />
| Hardcoded in [https://github.com/torvalds/linux/blob/master/tools/perf/util/config.c#L18 tools/perf/util/config.c:18].<br />
|-<br />
| various [[shell]]s and [[display manager]]s<br />
| {{ic|~/.profile}}<br />
|<br />
|<br />
|-<br />
| [[python]]<br />
| {{ic|~/.python_history}}<br />
|<br />
| All history from interactive sessions is saved to {{ic|~/.python_history}} by default since [https://bugs.python.org/issue5845 version 3.4], custom path can still be set the same way as in older versions (see [https://docs.python.org/3/library/readline.html?highlight=readline#example this example]).<br />
|-<br />
| [https://doc.qt.io/qt-5/qtdesigner-manual.html Qt Designer]<br />
| {{ic|~/.designer}}<br />
|<br />
|<br />
|-<br />
| [https://quodlibet.readthedocs.io/en/latest/ quodlibet]<br />
| {{ic|~/.quodlibet}}<br />
|<br />
|<br />
|-<br />
| [https://racket-lang.org/ racket]<br />
| {{ic|~/.racketrc}}<br />
|<br />
|<br />
|-<br />
| [http://rednotebook.sourceforge.net/ RedNotebook]<br />
| {{ic|~/.rednotebook}}<br />
|<br />
|<br />
|-<br />
| [https://remarkableapp.github.io/linux.html Remarkable]<br />
| {{ic|~/.remarkable}}<br />
|<br />
|<br />
|-<br />
| [https://www.scribus.net/ Scribus]<br />
| {{ic|~/.scribus}}<br />
|<br />
|-<br />
| [http://www.seamonkey-project.org/ SeaMonkey]<br />
| {{ic|~/.mozilla}}<br />
| [https://bugzil.la/726939]<br />
|<br />
|-<br />
| [[Skype]] < 5.0<br />
| {{ic|~/.Skype}}<br />
| [https://community.skype.com/t5/Linux-archive/Skype-violates-XDG-basedir-spec-on-linux/td-p/4175884]<br />
|<br />
|-<br />
| [https://www.gnu.org/software/solfege/solfege.html Solfege]<br />
| {{ic|~/.solfege}}<br />
<br />
{{ic|~/.solfegerc}}<br />
<br />
{{ic|~/lessonfiles}}<br />
| [https://savannah.gnu.org/bugs/index.php?50251]<br />
|<br />
|-<br />
| [https://spamassassin.apache.org/ SpamAssassin]<br />
| {{ic|~/.spamassassin}}<br />
|<br />
|<br />
|-<br />
| [[spectrwm]]<br />
| {{ic|~/.spectrwm}}<br />
|<br />
|<br />
|-<br />
| [[SQLite]]<br />
| {{ic|~/.sqlite_history}}<br />
<br />
{{ic|~/.sqliterc}}<br />
| [https://unix.stackexchange.com/questions/306890/change-location-of-sqlite-history-file][http://sqlite.1065341.n5.nabble.com/Customizing-the-location-of-the-sqlite-history-td87055.html]<br />
| {{ic|$ sqlite3 -init "$XDG_CONFIG_HOME"/sqlite3/sqliterc}}<br />
|-<br />
| [[TeamSpeak]]<br />
| {{ic|~/.ts3client}}<br />
|<br />
|-<br />
| [http://www.texmacs.org/ TeXmacs]<br />
| {{ic|~/.TeXmacs}}<br />
|<br />
|<br />
|-<br />
| [[Thunderbird]]<br />
| {{ic|~/.thunderbird}}<br />
| [https://bugzil.la/735285]<br />
|<br />
|-<br />
| [https://git.archlinux.org/users/remy/texlive-localmanager.git/ tllocalmgr]<br />
| {{ic|~/.texlive}}<br />
|<br />
|-<br />
| [[vim]]<br />
| {{ic|~/.vim}}<br />
<br />
{{ic|~/.vimrc}}<br />
<br />
{{ic|~/.viminfo}}<br />
|<br />
| Since [https://github.com/vim/vim/commit/6a459902592e2a4ba68 7.3.1178] vim will search for {{ic|~/.vim/vimrc}} if {{ic|~/.vimrc}} is not found.<br />
<br />
{{ic|1=<nowiki>$ mkdir -p "$XDG_CACHE_HOME"/vim/{undo,swap,backup}</nowiki>}}<br />
<br />
{{hc|"$XDG_CONFIG_HOME"/vim/vimrc|<br />
set undodir&#61;$XDG_CACHE_HOME/vim/undo<br />
set directory&#61;$XDG_CACHE_HOME/vim/swap<br />
set backupdir&#61;$XDG_CACHE_HOME/vim/backup<br />
set viminfo+&#61;'1000,n$XDG_CACHE_HOME/vim/viminfo<br />
set runtimepath&#61;$XDG_CONFIG_HOME/vim,$XDG_CONFIG_HOME/vim/after,$VIMRUNTIME<br />
}}<br />
<br />
{{hc|~/.profile|<br />
export VIMINIT&#61;":source $XDG_CONFIG_HOME"/vim/vimrc<br />
}}<br />
<br />
* https://tlvince.com/vim-respect-xdg<br />
|-<br />
| [http://www.vimperator.org/ vimperator]<br />
| {{ic|~/.vimperatorrc}}<br />
| [http://www.mozdev.org/pipermail/vimperator/2009-October/004848.html]<br />
| {{ic|1=$ export VIMPERATOR_INIT=":source $XDG_CONFIG_HOME/vimperator/vimperatorrc"}}<br />
<br />
{{ic|1=$ export VIMPERATOR_RUNTIME="$XDG_CONFIG_HOME"/vimperator}}<br />
|-<br />
| [https://w1.fi/ wpa_cli]<br />
| {{ic|~/.wpa_cli_history}}<br />
|<br />
|<br />
|-<br />
| {{pkg|xdg-utils}}<br />
| {{ic|~/.gnome}}<br />
|<br />
| For some reason the script {{ic|xdg-desktop-menu}} hard-codes {{ic|gnome_user_dir&#61;"$HOME/.gnome/apps"}}. This is used by [[chromium]] amoung others.<br />
|-<br />
| [https://opensource.conformal.com/wiki/xombrero xombrero]<br />
| {{ic|~/.xombrero}}<br />
| [https://github.com/conformal/xombrero/issues/74]<br />
|<br />
|-<br />
| [[zsh]]<br />
| {{ic|~/.zshrc}}<br />
<br />
{{ic|~/.zprofile}} {{ic|~/.zshenv}}<br />
<br />
{{ic|~/.zlogin}} {{ic|~/.zlogout}}<br />
<br />
{{ic|~/.histfile}}<br />
| [http://www.zsh.org/mla/workers/2013/msg00692.html]<br />
| Consider exporting {{ic|1=ZDOTDIR=$HOME/.config/zsh}} in {{ic|~/.zshenv}} (this is hardcoded due to the bootstrap problem). You could also add this to {{ic|/etc/zsh/zshenv}} and avoid the need for any dotfiles in your {{ic|HOME}}. Doing this however requires root privilege which may not be viable and is system-wide.<br />
<br />
{{ic|1=$ export HISTFILE="$XDG_DATA_HOME"/zsh/history}}<br />
|}<br />
<br />
==Library and language support==<br />
<br />
; C<br />
: [https://github.com/Cloudef/chck/tree/master/chck/xdg C99: Cloudef's simple implementation].<br />
<br />
; Haskell<br />
: Officially in [https://hackage.haskell.org/package/directory directory] since 1.2.3.0 [https://github.com/haskell/directory/commit/ab9d0810ce ab9d0810ce].<br />
: [https://hackage.haskell.org/package/xdg-basedir xdg-basedir]<br />
<br />
; Perl<br />
: [http://search.cpan.org/dist/File-BaseDir/lib/File/BaseDir.pm File-BaseDir]<br />
: [https://github.com/Aerdan/perl-file-xdg perl-file-xdg]<br />
<br />
; Python<br />
: [http://freedesktop.org/wiki/Software/pyxdg/ pyxdg]<br />
<br />
; Vala<br />
: Builtin support via [http://valadoc.org/#!api=glib-2.0/GLib.Environment GLib.Environment].<br />
: See {{ic|get_user_cache_dir}}, {{ic|get_user_data_dir}}, {{ic|get_user_config_dir}}, etc.<br />
<br />
==See also==<br />
<br />
* [https://wiki.gnome.org/Initiatives/GnomeGoals/XDGConfigFolders GNOME Goal: XDG Base Directory Specification Usage]<br />
* [https://plus.google.com/+RobPikeTheHuman/posts/R58WgWwN9jp Rob Pike: "Dotfiles" being hidden is a UNIXv2 mistake].<br />
* [http://www.freedesktop.org/software/systemd/man/systemd-path.html systemd-path(1)]<br />
* [http://www.freedesktop.org/software/systemd/man/file-hierarchy.html file-hierarchy(7)]<br />
* [https://github.com/grawity/dotfiles/blob/master/.dotfiles.notes Grawity's notes on dotfiles].<br />
* [https://github.com/grawity/dotfiles/blob/master/.environ.notes Grawity's notes on environment variables].<br />
* [https://ploum.net/207-modify-your-application-to-use-xdg-folders/ ploum.net: Modify Your Application to use XDG Folders].</div>
Jristz
https://wiki.archlinux.org/index.php?title=XDG_Base_Directory&diff=475611
XDG Base Directory
2017-05-02T06:20:56Z
<p>Jristz: /* Hardcoded */ add snes9x since is hardcoded, also add upstream bug if anyone want propose a patch</p>
<hr />
<div>[[Category:Dotfiles]]<br />
[[ja:XDG Base Directory サポート]]<br />
{{Related articles start}}<br />
{{Related|dotfiles}}<br />
{{Related|Xdg user directories}}<br />
{{Related articles end}}<br />
This article exists to catalog the growing set of software using the [http://standards.freedesktop.org/basedir-spec/latest/ XDG Base Directory Specification] introduced in 2003. This is here to demonstrate the viability of this specification by listing commonly found dotfiles and their support status. For those not currently supporting the Base Directory Specification, workarounds will be demonstrated to emulate it instead.<br />
<br />
The workarounds will be limited to anything not involving patching the source, executing code stored in [[environment variable]]s or compile-time options. The rationale for this is that configurations should be portable across systems and having compile-time options prevent that.<br />
<br />
Hopefully this will provide a source of information about exactly what certain kinds of dotfiles are and where they come from.<br />
<br />
==XDG Base Directory specification==<br />
<br />
Please read the [http://standards.freedesktop.org/basedir-spec/latest/ full specification]. This section will attempt to break down the essence of what it tries to achieve.<br />
<br />
Only {{ic|XDG_RUNTIME_DIR}} is set by default through [http://www.freedesktop.org/software/systemd/man/pam_systemd.html pam_systemd]. It is up to the user to explicitly [[define]] the other variables, using absolute paths that point to existing directories.<br />
<br />
===User directories===<br />
<br />
* {{ic|XDG_CONFIG_HOME}}<br />
** Where user-specific configurations should be written (analogous to {{ic|/etc}}).<br />
** Should default to {{ic|$HOME/.config}}.<br />
<br />
* {{ic|XDG_CACHE_HOME}}<br />
** Where user-specific non-essential (cached) data should be written (analogous to {{ic|/var/cache}}).<br />
** Should default to {{ic|$HOME/.cache}}.<br />
<br />
* {{ic|XDG_DATA_HOME}}<br />
** Where user-specific data files should be written (analogous to {{ic|/usr/share}}).<br />
** Should default to {{ic|$HOME/.local/share}}.<br />
<br />
* {{ic|XDG_RUNTIME_DIR}}<br />
** Used for non-essential, user-specific data files such as sockets, named pipes, etc.<br />
** Not required to have a default value; warnings should be issued if not set or equivalents provided.<br />
** Must be owned by the user with an access mode of {{ic|0700}}.<br />
** Filesystem fully featured by standards of OS.<br />
** Must be on the local filesystem.<br />
** May be subject to periodic cleanup.<br />
** Modified every 6 hours or set sticky bit if persistence is desired.<br />
** Can only exist for the duration of the user's login.<br />
** Should not store large files as it may be mounted as a tmpfs.<br />
<br />
===System directories===<br />
<br />
* {{ic|XDG_DATA_DIRS}}<br />
** List of directories seperated by {{ic|:}} (analogous to {{ic|PATH}}).<br />
** Should default to {{ic|/usr/local/share:/usr/share}}.<br />
<br />
* {{ic|XDG_CONFIG_DIRS}}<br />
** List of directories seperated by {{ic|:}} (analogous to {{ic|PATH}}).<br />
** Should default to {{ic|/etc/xdg}}.<br />
<br />
==Contributing==<br />
<br />
When contributing make sure to use the correct section.<br />
<br />
Nothing should require code evaluation (such as [[vim]] and {{ic|VIMINIT}}), patches or compile-time options to gain support and anything which does must be deemed hardcoded. Additionally if the process is too error prone or difficult, such as [https://www.haskell.org/cabal/ Haskell's cabal] or eclipse, they should also be considered as hardcoded.<br />
<br />
* The first column should be the project name, ideally the command name if it is not ambigious, linked to their website or an appropriate internal wiki article.<br />
<br />
* The second column is for any legacy files and directories the project had (one per line), this is done so people can find them even if they are no longer read.<br />
<br />
* In the third, try to find the commit or version a project switched to XDG Base Directory or any open discussions and include them in the next two columns (two per line).<br />
<br />
* The last column should include any appropriate workarounds or solutions. Please verify that your solution is correct and functional.<br />
<br />
==Supported==<br />
<br />
{| class="wikitable sortable" style="width: 100%"<br />
! Application<br />
! Legacy Path<br />
! Supported Since<br />
! Discussion<br />
! Notes<br />
|-<br />
| [https://github.com/Antimicro/antimicro/ antimicro]<br />
| {{ic|~/.antimicro}}<br />
| [https://github.com/Antimicro/antimicro/commit/edba864 edba864]<br />
| [https://github.com/Antimicro/antimicro/issues/5]<br />
|<br />
|-<br />
| [[aria2]]<br />
| {{ic|~/.aria2}}<br />
| [https://github.com/tatsuhiro-t/aria2/commit/8bc1d37 8bc1d37]<br />
| [https://github.com/tatsuhiro-t/aria2/issues/27]<br />
|<br />
|-<br />
| [[blender]]<br />
| {{ic|~/.blender}}<br />
| [http://git.blender.org/gitweb/gitweb.cgi/blender.git/commit/4293f473 4293f473]<br />
| [https://developer.blender.org/T28943]<br />
|<br />
|-<br />
| [https://github.com/falconindy/burp burp]<br />
|<br />
| [https://github.com/falconindy/burp/commit/f2388e9 f2388e9]<br />
|<br />
|<br />
|-<br />
| [[chromium]]<br />
| {{ic|~/.chromium}}<br />
| [https://src.chromium.org/viewvc/chrome?revision=23057&view=revision 23057]<br />
| [https://groups.google.com/forum/#!topic/chromium-dev/QekVQxF3nho] [https://code.google.com/p/chromium/issues/detail?id=16976]<br />
|<br />
|-<br />
| [http://citra-emu.org/ citra]<br />
| {{ic|~/.citra-emu}}<br />
| [https://github.com/citra-emu/citra/commit/f7c3193fec f7c3193fec]<br />
| [https://github.com/citra-emu/citra/pull/575]<br />
|<br />
|-<br />
| [[PHP#Composer|composer]]<br />
| {{ic|~/.composer}}<br />
| [https://github.com/composer/composer/releases/tag/1.0.0-beta1 1.0.0-beta1]<br />
| [https://github.com/composer/composer/pull/1407]<br />
|<br />
|-<br />
| [https://github.com/falconindy/cower cower]<br />
|<br />
| [https://github.com/falconindy/cower/commit/8b70805 8b70805]<br />
|<br />
|<br />
|-<br />
| [https://wiki.gnome.org/Apps/DFeet d-feet]<br />
| {{ic|~/.d-feet}}<br />
| [https://git.gnome.org/browse/d-feet/commit/?id==7f6104b 7f6104b]<br />
|<br />
|<br />
|-<br />
| [https://wiki.gnome.org/dconf dconf]<br />
|<br />
|<br />
|<br />
|<br />
|-<br />
| [[Dolphin emulator|dolphin-emu]]<br />
| {{ic|~/.dolphin-emu}}<br />
| [https://github.com/dolphin-emu/dolphin/commit/a498c68 a498c68]<br />
| [https://github.com/dolphin-emu/dolphin/pull/2304]<br />
|<br />
|-<br />
| [http://dr14tmeter.sourceforge.net dr14-meter]<br />
| <br />
| [https://github.com/simon-r/dr14_t.meter/commit/7e777ca645298ec898b3c76e3ec472ed6ed43e8a 7e777ca64]<br />
| [https://github.com/simon-r/dr14_t.meter/pull/30]<br />
| Hardcoded {{ic|$HOME/.config/dr14meter}}<br />
|-<br />
| [http://www.knopwob.org/dunst/index.html dunst]<br />
|<br />
| [https://github.com/knopwob/dunst/commit/78b6e2b1 78b6e2b1]<br />
| [https://github.com/knopwob/dunst/issues/22]<br />
|<br />
|-<br />
| [[dwb]]<br />
|<br />
|<br />
|<br />
|<br />
|-<br />
| [[fish]]<br />
|<br />
|<br />
|<br />
|<br />
|-<br />
| [[fontconfig]]<br />
| {{ic|~/.fontconfig}}<br />
<br />
{{ic|~/.fonts}}<br />
| [http://cgit.freedesktop.org/fontconfig/commit/?id=8c255fb1 8c255fb1]<br />
|<br />
| Use {{ic|"$XDG_DATA_HOME"/fonts}} to store fonts instead.<br />
|-<br />
| [http://fontforge.github.io/ fontforge]<br />
| {{ic|~/.FontForge}}<br />
<br />
{{ic|~/.PfaEdit}}<br />
| [https://github.com/fontforge/fontforge/commit/e4c2cc7432 e4c2cc7432]<br />
| [https://github.com/fontforge/fontforge/issues/847] [https://github.com/fontforge/fontforge/issues/991]<br />
|<br />
|-<br />
| [http://www.freerdp.com/ freerdp]<br />
| {{ic|~/.freerdp}}<br />
| [https://github.com/FreeRDP/FreeRDP/commit/edf6e7258d edf6e7258d]<br />
|<br />
|<br />
|-<br />
| [https://projects.gnome.org/gconf gconf]<br />
| {{ic|~/.gconf}}<br />
| [https://git.gnome.org/browse/gconf/commit/?id=fc28caa7 fc28caa7]<br />
| [https://bugzilla.gnome.org/show_bug.cgi?id=674803]<br />
|<br />
|-<br />
| [[git]]<br />
| {{ic|~/.gitconfig}}<br />
| [https://github.com/git/git/commit/0d94427e 0d94427e]<br />
|<br />
|<br />
|-<br />
| [http://gstreamer.freedesktop.org/ gstreamer]<br />
| {{ic|~/.gstreamer-0.10}}<br />
| [http://cgit.freedesktop.org/gstreamer/gstreamer/commit/?id=4e36f93924cf 4e36f93924cf]<br />
| [https://bugzilla.gnome.org/show_bug.cgi?id=518597]<br />
|<br />
|-<br />
| [[gtk|gtk3]]<br />
|<br />
|<br />
|<br />
|<br />
|-<br />
| [http://hisham.hm/htop/ htop]<br />
| {{ic|~/.htoprc}}<br />
| [https://github.com/hishamhm/htop/commit/93233a67 93233a67]<br />
|<br />
|<br />
|-<br />
| [[i3]]<br />
| {{ic|~/.i3}}<br />
| [http://code.stapelberg.de/git/i3/commit/?id=7c130fb54 7c130fb54]<br />
|<br />
|<br />
|-<br />
| [http://i3wm.org/i3status/ i3status]<br />
| {{ic|~/.i3status.conf}}<br />
| [http://code.stapelberg.de/git/i3status/commit/?id=c3f7fc4994 c3f7fc4994]<br />
|<br />
|<br />
|-<br />
| [http://www.imagemagick.org/script/index.php imagemagick]<br />
|<br />
|<br />
|<br />
|<br />
|-<br />
| [[inkscape]]<br />
| {{ic|~/.inkscape}}<br />
| [http://wiki.inkscape.org/wiki/index.php/Release_notes/0.47#Preferences 0.47]<br />
| [https://bugs.launchpad.net/inkscape/+bug/199720]<br />
|<br />
|-<br />
| [https://www.ctan.org/pkg/latexmk?lang=en latexmk]<br />
| {{ic|~/.latexmkrc}}<br />
|<br />
|<br />
|<br />
|-<br />
| [http://lftp.yar.ru/ lftp]<br />
| {{ic|~/.lftp}}<br />
| [https://github.com/lavv17/lftp/commit/21dc400 21dc400]<br />
| [https://www.mail-archive.com/lftp@uniyar.ac.ru/msg04301.html]<br />
|<br />
|-<br />
| [https://github.com/Sude-/lgogdownloader/ lgogdownloader]<br />
| {{ic|~/.gogdownloader}}<br />
| [https://github.com/Sude-/lgogdownloader/commit/d430af63d000 d430af63d000]<br />
| [https://github.com/Sude-/lgogdownloader/issues/4]<br />
|<br />
|-<br />
| [[LibreOffice]]<br />
|<br />
| [https://cgit.freedesktop.org/libreoffice/ure/commit/?id=a6f56f70a4930d3f71bd9c9b90fdd0ba20e4da5f a6f56f70] [https://cgit.freedesktop.org/libreoffice/bootstrap/commit/?id=25bd2eec77ed774a37d1cddd0d72312e23d5e9fd 25bd2eec]<br />
| [https://bugs.documentfoundation.org/show_bug.cgi?id=32263]<br />
|<br />
|-<br />
| [[livestreamer]]<br />
| {{ic|~/.livestreamerrc}}<br />
| [https://github.com/chrippa/livestreamer/commit/ea805917 ea805917]<br />
| [https://github.com/chrippa/livestreamer/pull/106]<br />
|<br />
|-<br />
| [[llpp]]<br />
|<br />
| [http://repo.or.cz/w/llpp.git/commit/3ab86f0cb 3ab86f0cb]<br />
|<br />
| Currently llpp places the configuration directly under {{ic|XDG_CONFIG_HOME}} instead of creating a directory.<br />
|-<br />
| [[mc]]<br />
| {{ic|~/.mc}}<br />
| [https://www.midnight-commander.org/changeset/1b9957058 1b9957058] [https://www.midnight-commander.org/changeset/0b7115647 0b7115647]<br />
<br />
[https://www.midnight-commander.org/changeset/ce401d797 ce401d797]<br />
| [https://www.midnight-commander.org/ticket/1851]<br />
|<br />
|-<br />
| [http://milkytracker.org/ milkytracker]<br />
| {{ic|~/.milkytracker_config}}<br />
| [https://github.com/Deltafire/MilkyTracker/commit/eb487c55 eb487c55]<br />
| [https://github.com/Deltafire/MilkyTracker/issues/12]<br />
|<br />
|-<br />
| [https://github.com/mintty/mintty mintty]<br />
| {{ic|~/.minttyrc}}<br />
| [https://github.com/mintty/mintty/commit/cff1bd8f cff1bd8f] v2.3.7.<br />
| [https://github.com/mintty/mintty/issues/525]<br />
|-<br />
| [[mpd]]<br />
| {{ic|~/.mpdconf}}<br />
| [http://git.musicpd.org/cgit/master/mpd.git/commit/?id=87b73284 87b73284]<br />
|<br />
|<br />
|-<br />
| [[mpv]]<br />
| {{ic|~/.mpv}}<br />
| [https://github.com/mpv-player/mpv/commit/cb250d490 cb250d490]<br />
| [https://github.com/mpv-player/mpv/pull/864]<br />
|<br />
|-<br />
| [[mutt]]<br />
| {{ic|~/.mutt}}<br />
| [https://dev.mutt.org/trac/changeset/42fee7585f 42fee7585f]<br />
| [http://dev.mutt.org/trac/ticket/3207]<br />
|<br />
|-<br />
| [http://mypaint.intilinux.com/ mypaint]<br />
| {{ic|~/.mypaint}}<br />
| [https://github.com/mypaint/mypaint/commit/cf723b74cd cf723b74cd]<br />
|<br />
|<br />
|-<br />
| [[ncmpcpp]]<br />
| {{ic|~/.ncmpcpp}}<br />
| [https://github.com/arybczak/ncmpcpp/commit/38d9f811de888e512b0115f551a9679eab4607f9 38d9f811] [https://github.com/arybczak/ncmpcpp/commit/27cd86e0638bba3a7a78e44ac40dc98a58d1d90d 27cd86e0]<br />
| [https://github.com/arybczak/ncmpcpp/issues/79] [https://github.com/arybczak/ncmpcpp/issues/110]<br />
| {{ic|ncmpcpp_directory}} should be set to avoid an {{ic|error.log}} file in {{ic|~/.ncmpcpp}}.<br />
|-<br />
| [[neovim]]<br />
| {{ic|~/.nvim}}<br />
<br />
{{ic|~/.nvimlog}}<br />
<br />
{{ic|~/.nviminfo}}<br />
| [https://github.com/neovim/neovim/commit/1ca5646bb 1ca5646bb]<br />
| [https://github.com/neovim/neovim/issues/78] [https://github.com/neovim/neovim/pull/3198]<br />
|<br />
|-<br />
| [[newsbeuter]]<br />
| {{ic|~/.newsbeuter}}<br />
| [https://github.com/akrennmair/newsbeuter/commit/3c57824c5 3c57824c5]<br />
| [https://github.com/akrennmair/newsbeuter/pull/39]<br />
| It is required to create both directories [http://newsbeuter.org/doc/newsbeuter.html#_xdg_base_directory_support]:<br />
<br />
{{ic|1=$ mkdir -p "$XDG_DATA_HOME"/newsbeuter "$XDG_CONFIG_HOME"/newsbeuter}}<br />
|-<br />
| [[OfflineIMAP]]<br />
| {{ic|~/.offlineimaprc}}<br />
| [https://github.com/OfflineIMAP/offlineimap/commit/5150de5 5150de5]<br />
| [https://github.com/OfflineIMAP/offlineimap/issues/32]<br />
|<br />
|-<br />
| [https://bitbucket.org/opentyrian/opentyrian/wiki/Home opentyrian]<br />
| {{ic|~/.opentyrian}}<br />
| [https://bitbucket.org/opentyrian/opentyrian/commits/8d45ff2 8d45ff2]<br />
| [https://web.archive.org/web/20140815181350/http://code.google.com/p/opentyrian/issues/detail?id=125]<br />
|<br />
|-<br />
| [http://pcsx2.net/ pcsx2]<br />
| {{ic|~/.pcsx2}}<br />
| [https://github.com/PCSX2/pcsx2/commit/87f1e8f77 87f1e8f77] [https://github.com/PCSX2/pcsx2/commit/a9020c606 a9020c606]<br />
<br />
[https://github.com/PCSX2/pcsx2/commit/3b22f0fb0 3b22f0fb0] [https://github.com/PCSX2/pcsx2/commit/0a012aec2 0a012aec2]<br />
| [https://github.com/PCSX2/pcsx2/issues/352] [https://github.com/PCSX2/pcsx2/issues/381]<br />
|<br />
|-<br />
| [https://pip.pypa.io/ pip]<br />
| {{ic|~/.pip}}<br />
| [https://github.com/pypa/pip/blob/548a9136525815dff41acd845c558a0b36eb1c5f/NEWS.rst#60-2014-12-22 6.0]<br />
| [https://github.com/pypa/pip/issues/1733]<br />
|<br />
|-<br />
| [http://www.ppsspp.org/ ppsspp]<br />
| {{ic|~/.ppsspp}}<br />
| [https://github.com/hrydgard/ppsspp/commit/132fe47c7d 132fe47c7d]<br />
| [https://github.com/hrydgard/ppsspp/issues/4623]<br />
|<br />
|-<br />
| {{pkg|procps-ng}}<br />
| {{ic|~/.toprc}}<br />
| [https://gitlab.com/procps-ng/procps/commit/af53e170b9 af53e170b9]<br />
| [https://gitlab.com/procps-ng/procps/merge_requests/38] [https://bugzilla.redhat.com/show_bug.cgi?id=1155265]<br />
|<br />
|-<br />
| [https://github.com/Cloudef/orbment/ orbment]<br />
|<br />
|<br />
|<br />
|<br />
|-<br />
| [[pacman]]<br />
| {{ic|~/.makepkg.conf}}<br />
| [https://projects.archlinux.org/pacman.git/commit/?id=80eca94c8 80eca94c8]<br />
| [https://mailman.archlinux.org/pipermail/pacman-dev/2014-July/019178.html]<br />
|<br />
|-<br />
| [[PulseAudio]]<br />
| {{ic|~/.pulse}}<br />
<br />
{{ic|~/.pulse-cookie}}<br />
| [http://cgit.freedesktop.org/pulseaudio/pulseaudio/commit/?id=59a8618dcd9 59a8618dcd9] [http://cgit.freedesktop.org/pulseaudio/pulseaudio/commit/?id=87ae8307057 87ae8307057]<br />
<br />
[http://cgit.freedesktop.org/pulseaudio/pulseaudio/commit/?id=9ab510a6921 9ab510a6921] [http://cgit.freedesktop.org/pulseaudio/pulseaudio/commit/?id=4c195bcc9d5 4c195bcc9d5]<br />
| [https://bugzilla.redhat.com/show_bug.cgi?id=845607]<br />
|<br />
|-<br />
| [http://pyroom.org/index.html pyroom]<br />
|<br />
|<br />
|<br />
|<br />
|-<br />
| [[qutebrowser]]<br />
|<br />
|<br />
|<br />
|<br />
|-<br />
| [[qtile]]<br />
|<br />
| [https://github.com/qtile/qtile/commit/fd8686e5b4e4fa20bb82039ed8a83768434585ec fd8686e] [https://github.com/qtile/qtile/commit/66d704bce83f631b3326f10a1bc9fc22f8e6a6fd 66d704b]<br />
<br />
[https://github.com/qtile/qtile/commit/51cff019917b87bda696b381493f969ceb6cc350 51cff01]<br />
| [https://github.com/qtile/qtile/pull/835]<br />
| Some optional bar widgets can create files and directories in non-compliant paths, but most often these are still configurable.<br />
|-<br />
| [http://www.libretro.com/ retroarch]<br />
|<br />
|<br />
|<br />
|<br />
|-<br />
| [http://rr-project.org/ rr]<br />
| {{ic|~/.rr}}<br />
| [https://github.com/mozilla/rr/commit/02e7d41e 02e7d41e]<br />
| [https://github.com/mozilla/rr/issues/1455]<br />
|<br />
|-<br />
| {{AUR|sublime-text-dev}}<br />
|<br />
|<br />
|<br />
| Cache is placed in {{ic|$XDG_CONFIG_HOME/sublime-text-3/Cache}} instead of expected {{ic|$XDG_CACHE_HOME/sublime-text-3}}.<br />
|-<br />
| [[surfraw]]<br />
| {{ic|~/.surfraw.conf}}<br />
<br />
{{ic|~/.surfraw.bookmarks}}<br />
| [http://anonscm.debian.org/cgit/surfraw/surfraw.git/commit/?id=3e4591d8 3e4591d8] [http://anonscm.debian.org/cgit/surfraw/surfraw.git/commit/?id=bd8c427d bd8c427d]<br />
<br />
[http://anonscm.debian.org/cgit/surfraw/surfraw.git/commit/?id=f57fc718 f57fc718]<br />
|<br />
|<br />
|-<br />
| [[sway]]<br />
| {{ic|~/.sway/config}}<br />
| [https://github.com/SirCmpwn/sway/commit/614393c09 614393c09]<br />
| [https://github.com/SirCmpwn/sway/issues/5]<br />
|<br />
|-<br />
| [[systemd]]<br />
|<br />
|<br />
|<br />
|<br />
|-<br />
| [[termite]]<br />
|<br />
|<br />
|<br />
|<br />
|-<br />
| [[transmission]]<br />
| {{ic|~/.transmission}}<br />
| [https://trac.transmissionbt.com/changeset/5517 5517]<br />
| [https://trac.transmissionbt.com/ticket/684]<br />
|<br />
|-<br />
| [https://www.kernel.org/pub/linux/utils/util-linux/ util-linux]<br />
|<br />
| [http://git.kernel.org/cgit/utils/util-linux/util-linux.git/commit/?id=570b32100 570b32100]<br />
|<br />
|<br />
|-<br />
| [[uzbl]]<br />
|<br />
| [https://github.com/uzbl/uzbl/commit/c6fd63a c6fd63a]<br />
| [https://github.com/uzbl/uzbl/pull/150]<br />
|<br />
|-<br />
| [http://fanglingsu.github.io/vimb/ vimb]<br />
|<br />
|<br />
|<br />
|<br />
|-<br />
| [[VirtualBox]]<br />
| {{ic|~/.VirtualBox}}<br />
| [https://www.virtualbox.org/ticket/5099?action=diff&version=7 4.3]<br />
| [https://www.virtualbox.org/ticket/5099]<br />
|<br />
|-<br />
| [[VLC media player]]<br />
| {{ic|~/.vlcrc}}<br />
| [http://git.videolan.org/?p=vlc.git;a=commit;h=16f32e1500887c0dcd33cb06ad71759a81a52878 16f32e15]<br />
| [https://trac.videolan.org/vlc/ticket/1267]<br />
|<br />
|-<br />
| [https://www.warsow.gg/ warsow]<br />
| {{ic|~/.warsow-2.x}}<br />
| [https://github.com/Qfusion/qfusion/commit/98ece3f 98ece3f]<br />
| [https://github.com/Qfusion/qfusion/issues/298]<br />
|<br />
|-<br />
| [[wireshark]]<br />
| {{ic|~/.wireshark}}<br />
| [https://code.wireshark.org/review/gitweb?p=wireshark.git;a=commit;h=b0b53fa5937aa7ba258427ca0f3581dba725230d b0b53fa5]<br />
|<br />
|<br />
|-<br />
| [https://github.com/derat/xsettingsd xsettingsd]<br />
| {{ic|~/.xsettingsd}}<br />
| [https://github.com/derat/xsettingsd/commit/b4999f5e9e99224caf97d09f25ee731774ecd7be 4ecd7be]<br />
|<br />
|<br />
|-<br />
| [[xmonad]]<br />
| {{ic|~/.xmonad}}<br />
| [https://github.com/xmonad/xmonad/commit/40fc10b6a5682ce1d6ba7f0679962926ef6cfade 40fc10b6]<br />
| [https://github.com/xmonad/xmonad/issues/61] [https://code.google.com/p/xmonad/issues/detail?id=484]<br />
| Alternatively the environments {{ic|XMONAD_CONFIG_HOME}}, {{ic|XMONAD_DATA_HOME}}, and {{ic|XMONAD_CACHE_HOME}} are also available.<br />
|}<br />
<br />
==Partial==<br />
{| class="wikitable sortable" style="width: 100%"<br />
! Application<br />
! Legacy Path<br />
! Supported Since<br />
! Discussion<br />
! Notes<br />
|-<br />
| [http://abook.sourceforge.net/ abook]<br />
| {{ic|~/.abook}}<br />
|<br />
|<br />
| {{ic|1=$ abook --config "$XDG_CONFIG_HOME"/abook/abookrc \<br />
--datafile "$XDG_CACHE_HOME"/abook/addressbook}}<br />
|-<br />
| [[Anki]]<br />
| {{ic|~/Anki}}<br />
<br />
{{ic|~/Documents/Anki}}<br />
|<br />
| [https://github.com/dae/anki/pull/49] [https://github.com/dae/anki/pull/58]<br />
| {{ic|1=$ anki -b "$XDG_DATA_HOME"/Anki}}<br />
|-<br />
| [[aspell]]<br />
| {{ic|~/.aspell.conf}}<br />
|<br />
|<br />
|<br />
|-<br />
| [[Atom]]<br />
| {{ic|~/.atom}}<br />
|<br />
| [https://github.com/atom/atom/issues/8281]<br />
| {{ic|1=$ export ATOM_HOME="$XDG_DATA_HOME"/atom}}<br />
|-<br />
| [http://crates.io/ cargo]<br />
| {{ic|~/.cargo}}<br />
|<br />
| [https://github.com/rust-lang/cargo/pull/148] [https://github.com/rust-lang/cargo/issues/1734] [https://github.com/rust-lang/rfcs/pull/1615]<br />
| {{ic|1=$ export CARGO_HOME="$XDG_DATA_HOME"/cargo}}<br />
|-<br />
| [[ccache]]<br />
| {{ic|~/.ccache}}<br />
|<br />
|<br />
| {{ic|1=$ export CCACHE_DIR="$XDG_CACHE_HOME"/ccache}}<br />
|-<br />
| [https://github.com/cisco/ChezScheme ChezScheme]<br />
| {{ic|~/.chezscheme_history}}<br />
|<br />
|<br />
| {{ic|1=$ petite --eehistory "$XDG_DATA_HOME"/chezscheme/history}}<br />
|-<br />
| [[conky]]<br />
| {{ic|~/.conkyrc}}<br />
| [https://github.com/brndnmtthws/conky/commit/00481ee9a97025e8e2acd7303d080af1948f7980 00481ee]<br />
| [https://github.com/brndnmtthws/conky/issues/144]<br />
| {{ic|1=$ conky --config="$XDG_CONFIG_HOME"/conky/conkyrc}}<br />
|-<br />
| [[coreutils]]<br />
| {{ic|~/.dircolors}}<br />
|<br />
|<br />
| {{ic|1=$ source "$(dircolors "$XDG_CONFIG_HOME"/dircolors)"}}<br />
|-<br />
| [http://www.dungeoncrawl.org/ crawl]<br />
| {{ic|~/.crawl}}<br />
|<br />
|<br />
| The trailing slash is required:<br />
<br />
{{ic|1=$ export CRAWL_DIR="$XDG_DATA_HOME"/crawl/}}<br />
|-<br />
| [[dict]]<br />
| {{ic|~/.dictrc}}<br />
|<br />
|<br />
| {{ic|1=$ dict -c "$XDG_CONFIG_HOME"/dict/dictrc}}<br />
|-<br />
| [[ELinks]]<br />
| {{ic|~/.elinks}}<br />
|<br />
|<br />
| {{ic|1=$ export ELINKS_CONFDIR="$XDG_CONFIG_HOME"/elinks}}<br />
|-<br />
| [http://kripken.github.io/emscripten-site/ emscripten]<br />
| {{ic|~/.emscripten}}<br />
<br />
{{ic|~/.emscripten_sanity}}<br />
<br />
{{ic|~/.emscripten_ports}}<br />
<br />
{{ic|~/.emscripten_cache__last_clear}}<br />
|<br />
| [https://github.com/kripken/emscripten/issues/3624 3624]<br />
| {{ic|1=$ export EM_CONFIG="$XDG_CONFIG_HOME"/emscripten/config}}<br />
<br />
{{ic|1=$ export EM_CACHE="$XDG_CACHE_HOME"/emscripten/cache}}<br />
<br />
{{ic|1=$ export EM_PORTS="$XDG_DATA_HOME"/emscripten/cache}}<br />
<br />
{{ic|1=$ emcc --em-config "$XDG_CONFIG_HOME"/emscripten/config \<br />
--em-cache "$XDG_CACHE_HOME"/emscripten/cache}}<br />
|-<br />
| [http://www.gnu.org/software/gdb/ gdb]<br />
| {{ic|~/.gdbinit}}<br />
|<br />
|<br />
| {{ic|1=$ gdb -nh -x "$XDG_CONFIG_HOME"/gdb/init}}<br />
|-<br />
| [https://github.com/get-iplayer/get_iplayer get_iplayer]<br />
| {{ic|~/.get_iplayer}}<br />
|<br />
|<br />
| {{ic|1=$ export GETIPLAYERUSERPREFS="$XDG_DATA_HOME"/get_iplayer}}<br />
|-<br />
| [[GIMP]]<br />
| {{ic|~/.gimp-2.8}}<br />
{{ic|~/.thumbnails}}<br />
| [https://git.gnome.org/browse/gimp/commit/?id=60e0cfe 60e0cfe]<br />
| [https://bugzilla.gnome.org/show_bug.cgi?id=166643] [https://mail.gnome.org/archives/gimp-developer-list/2012-October/msg00028.html]<br />
| {{ic|1=$ export GIMP2_DIRECTORY="$XDG_CONFIG_HOME"/gimp}}<br />
|-<br />
| [http://guichaz.free.fr/gliv/ gliv]<br />
| {{ic|~/.glivrc}}<br />
|<br />
|<br />
| {{ic|1=$ gliv --glivrc="$XDG_CONFIG_HOME"/gliv/glivrc}}<br />
|-<br />
| [[GnuPG]]<br />
| {{ic|~/.gnupg}}<br />
|<br />
| [https://bugs.gnupg.org/gnupg/issue1456] [https://bugs.gnupg.org/gnupg/issue1018]<br />
| {{ic|1=$ export GNUPGHOME="$XDG_CONFIG_HOME"/gnupg}}<br />
<br />
{{ic|1=$ gpg2 --homedir "$XDG_CONFIG_HOME"/gnupg}}<br />
|-<br />
| [[Google Earth]]<br />
| {{ic|~/.googleearth}}<br />
|<br />
|<br />
| Some paths can be changed with the {{ic|KMLPath}} and {{ic|CachePath}} options in {{ic|~/.config/Google/GoogleEarthPlus.conf}}<br />
|-<br />
| [https://sourceforge.net/projects/gqclient GQ LDAP client]<br />
| {{ic|~/.gq}}<br />
{{ic|~/.gq-state}}<br />
| [https://sourceforge.net/p/gqclient/mailman/message/2053978 1.51]<br />
|<br />
| {{ic|1=$ export GQRC="$XDG_CONFIG_HOME"/gqrc}}<br />
<br />
{{ic|1=$ export GQSTATE="$XDG_DATA_HOME"/gq/gq-state}}<br />
<br />
{{ic|1=$ mkdir -p "$(dirname "$GQSTATE")"}}<br />
|-<br />
| [https://gradle.org/ gradle]<br />
| {{ic|~/.gradle}}<br />
|<br />
| [https://discuss.gradle.org/t/be-a-nice-freedesktop-citizen-move-the-gradle-to-the-appropriate-location-in-linux/2199]<br />
| {{ic|1=$ export GRADLE_USER_HOME="$XDG_DATA_HOME"/gradle}}<br />
|-<br />
| [[gtk]]<br />
| {{ic|~/.gtkrc}}<br />
|<br />
|<br />
| {{ic|1=$ export GTK_RC_FILES="$XDG_CONFIG_HOME"/gtk-1.0/gtkrc}}<br />
|-<br />
| [[gtk|gtk2]]<br />
| {{ic|~/.gtkrc-2.0}}<br />
|<br />
|<br />
| {{ic|1=$ export GTK2_RC_FILES="$XDG_CONFIG_HOME"/gtk-2.0/gtkrc}}<br />
|-<br />
| [http://httpie.org httpie]<br />
| {{ic|~/.httpie}}<br />
|<br />
| [https://github.com/jakubroztocil/httpie/issues/145]<br />
| {{ic|1=$ export HTTPIE_CONFIG_DIR="$XDG_CONFIG_HOME"/httpie}}<br />
|-<br />
| [http://ipython.org ipython]/[[jupyter]]<br />
| {{ic|~/.ipython}}<br />
|<br />
|<br />
| {{ic|1=$ export IPYTHONDIR="$XDG_CONFIG_HOME"/jupyter}}<br />
<br />
{{ic|1=$ export JUPYTER_CONFIG_DIR="$XDG_CONFIG_HOME"/jupyter}}<br />
|-<br />
| [[irssi]]<br />
| {{ic|~/.irssi}}<br />
|<br />
| [https://github.com/irssi/irssi/pull/511]<br />
| {{ic|1=$ irssi --config="$XDG_CONFIG_HOME"/irssi/config \<br />
--home="$XDG_DATA_HOME"/irssi}}<br />
|-<br />
| [[isync]]<br />
| {{ic|~/.mbsyncrc}}<br />
|<br />
|<br />
| {{ic|1=$ mbsync -c "$XDG_CONFIG_HOME"/isync/mbsyncrc}}<br />
|-<br />
| [[core utilities#less|less]]<br />
| {{ic|~/.lesshst}}<br />
|<br />
|<br />
| {{ic|1=$ mkdir -p "$XDG_CACHE_HOME"/less}}<br />
<br />
{{ic|1=$ export LESSHISTFILE="$XDG_CACHE_HOME"/less/history}}<br />
<br />
{{ic|1=$ export LESSHISTFILE=-}} can be used to disable this feature.<br />
<br />
{{ic|1=$ export LESSKEY="$XDG_CONFIG_HOME"/less/lesskey}}<br />
|-<br />
| [http://www.videolan.org/developers/libdvdcss.html libdvdcss]<br />
| {{ic|~/.dvdcss}}<br />
|<br />
| [https://mailman.videolan.org/pipermail/libdvdcss-devel/2014-August/001022.html]<br />
| {{ic|1=$ export DVDCSS_CACHE="$XDG_DATA_HOME"/dvdcss}}<br />
|-<br />
| [https://www.x.org/releases/current/doc/libICE/ice.html libice]<br />
| {{ic|~/.ICEauthority}}<br />
|<br />
| [https://bugs.freedesktop.org/show_bug.cgi?id=49173]<br />
| {{ic|1=$ export ICEAUTHORITY="$XDG_RUNTIME_DIR"/ICEauthority}}<br />
|-<br />
| [[Xorg|libx11]]<br />
| {{ic|~/.XCompose}}<br />
|<br />
|<br />
| {{ic|1=$ export XCOMPOSEFILE="$XDG_CONFIG_HOME"/X11/xcompose}}<br />
|-<br />
| [http://ltrace.org/ ltrace]<br />
| {{ic|~/.ltrace.conf}}<br />
|<br />
|<br />
| {{ic|1=$ ltrace -F "$XDG_CONFIG_HOME"/ltrace/ltrace.conf}}<br />
|-<br />
| [[Mathematica]]<br />
| {{ic|~/.Mathematica}}<br />
|<br />
|<br />
| {{ic|1=$ export MATHEMATICA_USERBASE="$XDG_CONFIG_HOME"/mathematica}}<br />
|-<br />
| [http://mednafen.sourceforge.net/ mednafen]<br />
| {{ic|~/.mednafen}}<br />
|<br />
|<br />
| {{ic|1=$ export MEDNAFEN_HOME="$XDG_CONFIG_HOME"/mednafen}}<br />
|-<br />
| [[moc]]<br />
| {{ic|~/.moc}}<br />
|<br />
|<br />
| {{ic|1=$ mocp -M "$XDG_CONFIG_HOME"/moc}}<br />
<br />
{{ic|1=$ mocp -O MOCDir="$XDG_CONFIG_HOME"/moc}}<br />
|-<br />
| [[MPlayer]]<br />
| {{ic|~/.mplayer}}<br />
|<br />
|<br />
| {{ic|1=$ export MPLAYER_HOME="$XDG_CONFIG_HOME"/mplayer}}<br />
|-<br />
| {{pkg|ncurses}}<br />
| {{ic|~/.terminfo}}<br />
|<br />
|<br />
| Precludes system path searching:<br />
<br />
{{ic|1=$ export TERMINFO="$XDG_DATA_HOME"/terminfo}}<br />
<br />
{{ic|1=$ export TERMINFO_DIRS="$XDG_DATA_HOME"/terminfo:/usr/share/terminfo}}<br />
|-<br />
| [http://www.musicpd.org/clients/ncmpc/ ncmpc]<br />
| {{ic|~/.ncmpc}}<br />
|<br />
|<br />
| {{ic|ncmpc -f "$XDG_CONFIG_HOME"/ncmpc/config}}<br />
|-<br />
| [[notmuch]]<br />
| {{ic|~/.notmuch-config}}<br />
|<br />
| [http://notmuchmail.org/pipermail/notmuch/2011/007007.html]<br />
| {{ic|1=$ export NOTMUCH_CONFIG="$XDG_CONFIG_HOME"/notmuch/notmuchrc}}<br />
<br />
{{ic|1=$ export NMBGIT="$XDG_DATA_HOME"/notmuch/nmbug}}<br />
|-<br />
| {{pkg|npm}}<br />
| {{ic|~/.npm}}<br />
<br />
{{ic|~/.npmrc}}<br />
|<br />
| [https://github.com/npm/npm/issues/6675]<br />
| {{ic|1=$ export NPM_CONFIG_USERCONFIG=$XDG_CONFIG_HOME/npm/npmrc}}<br />
{{hc|npmrc|<nowiki>cache=$XDG_CACHE_HOME/npm<br />
prefix=$XDG_DATA_HOME/npm</nowiki>}}<br />
|-<br />
| [[NVIDIA]], [[CUDA]]<br />
| {{ic|~/.nv}}<br />
|<br />
|<br />
| {{ic|1=$ export __GL_SHADER_DISK_CACHE_PATH="$XDG_CACHE_HOME"/nv}}<br />
<br />
{{ic|1=$ export CUDA_CACHE_PATH="$XDG_CACHE_HOME"/nv}}<br />
|-<br />
| [https://github.com/NVIDIA/nvidia-settings nvidia-settings]<br />
| {{ic|~/.nvidia-settings-rc}}<br />
|<br />
|<br />
| {{ic|1=$ nvidia-settings --config="$XDG_CONFIG_HOME"/nvidia/settings}}<br />
|-<br />
| [http://www.openscad.org/ openscad]<br />
| {{ic|~/.OpenSCAD}}<br />
| [https://github.com/openscad/openscad/commit/7c3077b0f 7c3077b0f]<br />
| [https://github.com/openscad/openscad/issues/125]<br />
| Does not fully honour XDG Base Directory Specification, see [https://github.com/openscad/openscad/issues/373]<br />
<br />
Currently it [https://github.com/openscad/openscad/blob/master/src/PlatformUtils-posix.cc#L20 hard-codes] {{ic|~/.local/share}}.<br />
|-<br />
| [[OpenSSL]]<br />
| {{ic|~/.rnd}}<br />
|<br />
|<br />
| Seeding file .rnd's location can be set with RANDFILE environment variable per [https://www.openssl.org/docs/faq.html FAQ].<br />
|-<br />
| {{pkg|pass}}<br />
| {{ic|~/.password-store}}<br />
|<br />
|<br />
| {{ic|1=$ export PASSWORD_STORE_DIR="$XDG_DATA_HOME"/pass}}<br />
|-<br />
| {{pkg|pidgin}}<br />
| {{ic|~/.purple}}<br />
|<br />
|<br />
| {{ic|1=$ pidgin --config="$XDG_DATA_HOME"/purple}}<br />
|-<br />
| [[PulseAudio]]<br />
| {{ic|~/.esd_auth}}<br />
|<br />
|<br />
| Very likely generated by the {{ic|module-esound-protocol-unix.so}} module. It can be configured to use a different location but it makes much more sense to just comment out this module in {{ic|/etc/pulse/default.pa}} or {{ic|"$XDG_CONFIG_HOME"/pulse/default.pa}}.<br />
|-<br />
| [https://pypi.python.org/pypi/setuptools python-setuptools]<br />
| {{ic|~/.python-eggs}}<br />
|<br />
|<br />
| {{ic|1=$ export PYTHON_EGG_CACHE="$XDG_CACHE_HOME"/python-eggs}}<br />
|-<br />
| {{Pkg|rclone}}<br />
| {{ic|~/.rclone.conf}}<br />
|<br />
|<br />
| {{ic|1=$ rclone --config="$XDG_CONFIG_HOME"/rclone/rclone.conf}}<br />
|-<br />
| [[readline]]<br />
| {{ic|~/.inputrc}}<br />
|<br />
|<br />
| {{ic|1=$ export INPUTRC="$XDG_CONFIG_HOME"/readline/inputrc}}<br />
|-<br />
| [http://utopia.knoware.nl/~hlub/uck/rlwrap/ rlwrap]<br />
| {{ic|~/.*_history}}<br />
|<br />
| [https://github.com/hanslub42/rlwrap/issues/25]<br />
| {{ic|1=$ export RLWRAP_HOME="$XDG_DATA_HOME"/rlwrap}}<br />
|-<br />
| [http://www.scala-sbt.org/ sbt]<br />
| {{ic|~/.sbt}}<br />
{{ic|~/.ivy2}}<br />
|<br />
|<br />
| {{ic|1=$ sbt -ivy "$XDG_DATA_HOME"/ivy2 -sbt-dir "$XDG_DATA_HOME"/sbt}}<br />
|-<br />
| [[screen]]<br />
| {{ic|~/.screenrc}}<br />
|<br />
|<br />
| {{ic|1=$ export SCREENRC="$XDG_CONFIG_HOME"/screen/screenrc}}<br />
|-<br />
| [https://www.stackage.org/ stack]<br />
| {{ic|~/.stack}}<br />
|<br />
| [https://github.com/commercialhaskell/stack/issues/342]<br />
| {{ic|1=$ export STACK_ROOT="$XDG_DATA_HOME"/stack}}<br />
|-<br />
| [[subversion]]<br />
| {{ic|~/.subversion}}<br />
|<br />
| [https://issues.apache.org/jira/browse/SVN-4599] [https://mail-archives.apache.org/mod_mbox/subversion-users/201204.mbox/%3c4F8FBCC6.4080205@ritsuka.org%3e][http://mail-archives.apache.org/mod_mbox/subversion-dev/201509.mbox/%3c20150917222954.GA20331@teapot%3e]<br />
| {{ic|1=$ svn --config-dir "$XDG_CONFIG_HOME"/subversion}}<br />
|-<br />
| {{pkg|task}}<br />
| {{ic|~/.task}}<br />
<br />
{{ic|~/.taskrc}}<br />
|<br />
|<br />
| {{ic|1=$ export TASKDATA="$XDG_DATA_HOME"/task}}<br />
<br />
{{ic|1=$ export TASKRC="$XDG_CONFIG_HOME"/task/taskrc}}<br />
|-<br />
| [http://jonas.nitro.dk/tig/ tig]<br />
| {{ic|~/.tigrc}}<br />
|<br />
|<br />
| {{ic|1=$ export TIGRC_USER="$XDG_CONFIG_HOME"/tig/tigrc}}<br />
|-<br />
| [[tmux]]<br />
| {{ic|~/.tmux.conf}}<br />
|<br />
| [http://comments.gmane.org/gmane.comp.terminal-emulators.tmux.user/6013] [http://sourceforge.net/p/tmux/mailman/message/30619546/]<br />
| {{ic|1=$ tmux -f "$XDG_CONFIG_HOME"/tmux/tmux.conf}}<br />
<br />
{{ic|1=$ export TMUX_TMPDIR="$XDG_RUNTIME_DIR"}}<br />
|-<br />
| [https://github.com/bengardner/uncrustify uncrustify]<br />
| {{ic|~/.uncrustify.cfg}}<br />
|<br />
|<br />
| {{ic|1=$ export UNCRUSTIFY_CONFIG="$XDG_CONFIG_HOME"/uncrustify/uncrustify.cfg}}<br />
|-<br />
| [[Unison]]<br />
| {{ic|~/.unison}}<br />
|<br />
|<br />
| {{ic|1=$ export UNISON="$XDG_DATA_HOME"/unison}}<br />
|-<br />
| [[Rxvt-unicode/Tips_and_tricks#Daemon-client|urxvtd]]<br />
| {{ic|~/.urxvt/urxvtd-hostname}}<br />
|<br />
|<br />
| {{ic|1=$ export RXVT_SOCKET="$XDG_RUNTIME_DIR"/urxvtd}}<br />
|-<br />
| [[WeeChat]]<br />
| {{ic|~/.weechat}}<br />
|<br />
| [http://savannah.nongnu.org/task/?10934]<br />
| {{ic|1=$ export WEECHAT_HOME="$XDG_CONFIG_HOME"/weechat}}<br />
<br />
{{ic|1=$ weechat -d "$XDG_CONFIG_HOME"/weechat}}<br />
|-<br />
| [[wget]]<br />
| {{ic|~/.wgetrc}}<br />
|<br />
|<br />
| {{ic|1=$ export WGETRC="$XDG_CONFIG_HOME/wgetrc"}}<br />
|-<br />
| [[wine]]<br />
| {{ic|~/.wine}}<br />
|<br />
| [https://bugs.winehq.org/show_bug.cgi?id=20888]<br />
| [[Wine#Winetricks|Winetricks]] uses XDG-alike location below for [[Wine#WINEPREFIX|WINEPREFIX]] management:<br />
{{ic|1=$ mkdir -p "$XDG_DATA_HOME"/wineprefixes}}<br />
<br />
{{ic|1=$ export WINEPREFIX="$XDG_DATA_HOME"/wineprefixes/default}}<br />
|-<br />
| {{pkg|xorg-xauth}}<br />
| {{ic|~/.Xauthority}}<br />
|<br />
|<br />
| {{ic|1=$ export XAUTHORITY="$XDG_RUNTIME_DIR"/Xauthority}}<br />
|-<br />
| {{pkg|xorg-xinit}}<br />
| {{ic|~/.xinitrc}}<br />
<br />
{{ic|~/.xserverrc}}<br />
|<br />
|<br />
| {{ic|1=$ export XINITRC="$XDG_CONFIG_HOME"/X11/xinitrc}}<br />
{{ic|1=$ export X="$XDG_CONFIG_HOME"/X11/xserverrc}}<br />
<br />
Note that these variables are respected by ''xinit'', but not by ''startx''.<br />
|-<br />
| {{pkg|xorg-xrdb}}<br />
| {{ic|~/.Xresources}}<br />
<br />
{{ic|~/.Xdefaults}}<br />
|<br />
|<br />
| Ultimately you [http://superuser.com/questions/243914/xresources-or-xdefaults should be] using {{ic|Xresources}} and since these resources are loaded via {{ic|xrdb}} you can specify a path such as {{ic|1=$ xrdb -load ~/.config/X11/xresources}}.<br />
|-<br />
| [http://www.vergenet.net/~conrad/software/xsel/ xsel]<br />
| {{ic|~/.xsel.log}}<br />
|<br />
| [https://github.com/kfish/xsel/issues/10]<br />
| {{ic|1=$ xsel --logfile "$XDG_CACHE_HOME"/xsel/xsel.log}}<br />
|}<br />
<br />
==Hardcoded==<br />
<br />
{| class="wikitable sortable" style="width: 100%"<br />
! Application<br />
! Legacy Path<br />
! Discussion<br />
! Notes<br />
|-<br />
| [[adb]]<br />
| {{ic|~/.android}}<br />
|<br />
|<br />
|-<br />
| [[AMule]]<br />
| {{ic|~/.aMule}}<br />
|<br />
|<br />
|-<br />
| [https://developer.android.com/studio/index.html Android Studio]<br />
| {{ic|~/.AndroidStudio2.3}}<br />
<br />
{{ic|~/.android}}<br />
<br />
{{ic|~/.java}}<br />
|<br />
|<br />
|-<br />
| [https://osdn.net/projects/anthy/ anthy]<br />
| {{ic|~/.anthy}}<br />
| [https://osdn.net/ticket/browse.php?group_id=14&tid=28397]<br />
|<br />
|-<br />
| [https://directory.apache.org/studio/ Apache Directory Studio]<br />
| {{ic|~/.ApacheDirectoryStudio}}<br />
|<br />
|-<br />
| [https://www.audacityteam.org/ Audacity]<br />
| {{ic|~/.audacity-data}}<br />
|<br />
|<br />
|-<br />
| [http://fixounet.free.fr/avidemux/ Avidemux]<br />
| {{ic|~/.avidemux6}}<br />
|<br />
|<br />
|-<br />
| [[bash]]<br />
| {{ic|~/.bashrc}}<br />
<br />
{{ic|~/.bash_history}}<br />
<br />
{{ic|~/.bash_profile}}<br />
<br />
{{ic|~/.bash_login}}<br />
<br />
{{ic|~/.bash_logout}}<br />
| [http://savannah.gnu.org/support/?108134]<sup>won't<br />
| A specified {{ic|bashrc}} can be sourced from {{ic|/etc/bashrc}}<br />
{{ic|1=$ export HISTFILE="$XDG_DATA_HOME"/bash/history}}<br />
|-<br />
| [[bazaar]]<br />
| {{ic|~/.bazaar}}<br />
<br />
{{ic|~/.bzr.log}}<br />
|<br />
|<br />
|-<br />
| [https://www.haskell.org/cabal/ cabal]<br />
| {{ic|~/.cabal}}<br />
| [https://github.com/haskell/cabal/issues/680]<br />
| See discussion for potential workarounds. It is not very easy or straightforward but may be possible to emulate Base Directory compliance.<br />
|-<br />
| [https://calibre-ebook.com/ calibre]<br />
| {{ic|~/Calibre Library}}<br />
|<br />
|<br />
|-<br />
| [[CUPS]]<br />
| {{ic|~/.cups}}<br />
| [http://www.cups.org/str.php?L4243]<sup>won't<br />
|<br />
|-<br />
| [[darcs]]<br />
| {{ic|~/.darcs}}<br />
| [http://bugs.darcs.net/issue2453]<br />
|<br />
|-<br />
| [[dbus]]<br />
| {{ic|~/.dbus}}<br />
| [https://bugs.freedesktop.org/show_bug.cgi?id=35887]<br />
| This should be avoidable with kdbus [citation needed].<br />
|-<br />
| [https://wiki.gnome.org/Apps/Dia Dia]<br />
| {{ic|~/.dia}}<br />
|<br />
|-<br />
| [[eclipse]]<br />
| {{ic|~/.eclipse}}<br />
| [https://bugs.eclipse.org/bugs/show_bug.cgi?id=200809]<br />
| Option {{ic|1=-Dosgi.configuration.area=@user.home/.config/..}} overrides but must be added to {{ic|"$ECLIPSE_HOME"/eclipse.ini"}} rather than command line which means you must have write access to {{ic|$ECLIPSE_HOME}}. (Arch Linux hard-codes {{ic|$ECLIPSE_HOME}} in {{ic|/usr/bin/eclipse}})<br />
|-<br />
| [https://www.gnu.org/software/emacs/ emacs]<br />
| {{ic|~/.emacs}}<br />
<br />
{{ic|~/.emacs.d}}<br />
| [http://debbugs.gnu.org/cgi/bugreport.cgi?bug=583]<br />
| It's possible to set {{ic|HOME}}, but it has unexpected side effects. So far the most promising approach is modifying another Emacs environment variable to alter the load path and author your own site file which can manually load up your init file, but it changes the load process significantly.<br />
|-<br />
| [http://www.fetchmail.info/ Fetchmail]<br />
| {{ic|~/.fetchmailrc}}<br />
|<br />
|<br />
|-<br />
| [[Firefox]]<br />
| {{ic|~/.mozilla}}<br />
| [https://bugzil.la/259356]<br />
|<br />
|-<br />
| [https://www.haskell.org/ghc/ GHC]<br />
| {{ic|~/.ghc}}<br />
| [https://ghc.haskell.org/trac/ghc/ticket/6077]<br />
|<br />
|-<br />
| [http://www.gnu.org/software/parallel/ GNU parallel]<br />
| {{ic|~/.parallel}}<br />
|<br />
|<br />
|-<br />
| [http://recordmydesktop.sourceforge.net/about.php gtk-recordMyDesktop]<br />
| {{ic|~/.gtk-recordmydesktop}}<br />
|<br />
|<br />
|-<br />
| [http://www.idris-lang.org/ idris]<br />
| {{ic|~/.idris}}<br />
| [https://github.com/idris-lang/Idris-dev/pull/3456]<br />
|<br />
|-<br />
| [http://julialang.org/ julia]<br />
| {{ic|~/.juliarc.jl}}<br />
<br />
{{ic|~/.julia_history}}<br />
| [https://github.com/JuliaLang/julia/issues/4630] [https://github.com/JuliaLang/julia/issues/10016]<br />
|<br />
|-<br />
| [http://www.linux-pam.org/ Linux PAM]<br />
| {{ic|~/.pam_environment}}<br />
|<br />
| Hardcoded in [https://github.com/linux-pam/linux-pam/blob/master/modules/pam_env/pam_env.c modules/pam_env/pam_env.c]<br />
|-<br />
| [http://lldb.llvm.org/ lldb]<br />
| {{ic|~/.lldb}}<br />
<br />
{{ic|~/.lldbinit}}<br />
|<br />
|<br />
|-<br />
| [http://www.mathomatic.org/ mathomatic]<br />
| {{ic|~/.mathomaticrc}}<br />
<br />
{{ic|~/.matho_history}}<br />
|<br />
| History can be moved by using {{ic|rlwrap mathomatic -r}} with the {{ic|RLWRAP_HOME}} environment set appropriately.<br />
|-<br />
| [[Mercurial]]<br />
| {{ic|~/.hgrc}}<br />
|<br />
| You cannot append to the configuration search paths, just overwrite them completely. That means you need to be careful to add all default folders:<br />
<br />
{{ic|1=$ export HGRCPATH=/usr/lib/python2.7/site-packages/mercurial/default.d/:\<br />
/etc/mercurial/hgrc:"${XDG_CONFIG_HOME}"/mercurial/hgrc}}<br />
<br />
To find the default configuration paths:<br />
<br />
{{ic|1=$ env -u HGRCPATH hg debugconfig --debug {{!}} grep "read config"}}<br />
|-<br />
| [http://www.milkytracker.org/ milkytracker]<br />
| {{ic|~/.milkytracker_config}}<br />
| [https://github.com/Deltafire/MilkyTracker/issues/12]<br />
|<br />
|-<br />
| [https://minecraft.net/ Minecraft]<br />
| {{ic|~/.minecraft}}<br />
| [https://bugs.mojang.com/browse/MCL-2563]<br />
|<br />
|-<br />
| [https://www.mongodb.org/ mongodb]<br />
| {{ic|~/.mongorc.js}}<br />
<br />
{{ic|~/.dbshell}}<br />
| [https://jira.mongodb.org/browse/DOCS-5652?jql=text%20~%20%22.mongorc.js%22]<br />
| [http://stackoverflow.com/a/22349050/4200039 This Stack Overflow thread] suggests a partial workaround using command-line switch {{ic|--norc}}.<br />
|-<br />
|<br />
| {{ic|~/.netrc}}<br />
|<br />
| Like {{ic|~/.ssh}}, many programs expect this file to be here. These include projects like curl ({{ic|CURLOPT_NETRC_FILE}}), ftp ({{ic|NETRC}}), s-nail ({{ic|NETRC}}), etc. While some of them offer alternative configurable locations, many do not such as w3m, wget and lftp.<br />
|-<br />
| [https://developer.mozilla.org/en-US/docs/Mozilla/Projects/NSS NSS]<br />
| {{ic|~/.pki}}<br />
| [https://bugzilla.mozilla.org/show_bug.cgi?id=818686]<br />
|<br />
|-<br />
| [https://www.openssh.com/ OpenSSH]<br />
| {{ic|~/.ssh}}<br />
| [https://bugzilla.mindrot.org/show_bug.cgi?id=2050]<br />
| Assumed to be present by many ssh daemons and clients such as DropBear and OpenSSH.<br />
|-<br />
| [https://www.palemoon.org/ palemoon]<br />
| {{ic|~/.moonchild productions}}<br />
| [https://forum.palemoon.org/viewtopic.php?f=5&t=9639]<br />
|<br />
|-<br />
| [https://perf.wiki.kernel.org/index.php/Main_Page perf]<br />
| {{ic|~/.debug}}<br />
|<br />
| Hardcoded in [https://github.com/torvalds/linux/blob/master/tools/perf/util/config.c#L18 tools/perf/util/config.c:18].<br />
|-<br />
| various [[shell]]s and [[display manager]]s<br />
| {{ic|~/.profile}}<br />
|<br />
|<br />
|-<br />
| [[python]]<br />
| {{ic|~/.python_history}}<br />
|<br />
| All history from interactive sessions is saved to {{ic|~/.python_history}} by default since [https://bugs.python.org/issue5845 version 3.4], custom path can still be set the same way as in older versions (see [https://docs.python.org/3/library/readline.html?highlight=readline#example this example]).<br />
|-<br />
| [https://doc.qt.io/qt-5/qtdesigner-manual.html Qt Designer]<br />
| {{ic|~/.designer}}<br />
|<br />
|<br />
|-<br />
| [https://quodlibet.readthedocs.io/en/latest/ quodlibet]<br />
| {{ic|~/.quodlibet}}<br />
|<br />
|<br />
|-<br />
| [https://racket-lang.org/ racket]<br />
| {{ic|~/.racketrc}}<br />
|<br />
|<br />
|-<br />
| [http://rednotebook.sourceforge.net/ RedNotebook]<br />
| {{ic|~/.rednotebook}}<br />
|<br />
|<br />
|-<br />
| [https://remarkableapp.github.io/linux.html Remarkable]<br />
| {{ic|~/.remarkable}}<br />
|<br />
|<br />
|-<br />
| [https://www.scribus.net/ Scribus]<br />
| {{ic|~/.scribus}}<br />
|<br />
|-<br />
| [http://www.seamonkey-project.org/ SeaMonkey]<br />
| {{ic|~/.mozilla}}<br />
| [https://bugzil.la/726939]<br />
|<br />
|-<br />
| [http://www.snes9x.com/ Snes9x]<br />
| {{ic|~/.snes9x}}<br />
| [https://github.com/snes9xgit/snes9x/issues/194]<br />
| Hardcoded on source file gtk/src/gtk_config.cpp function get_config_dir<br />
|-<br />
| [[Skype]] < 5.0<br />
| {{ic|~/.Skype}}<br />
| [https://community.skype.com/t5/Linux-archive/Skype-violates-XDG-basedir-spec-on-linux/td-p/4175884]<br />
|<br />
|-<br />
| [https://www.gnu.org/software/solfege/solfege.html Solfege]<br />
| {{ic|~/.solfege}}<br />
<br />
{{ic|~/.solfegerc}}<br />
<br />
{{ic|~/lessonfiles}}<br />
| [https://savannah.gnu.org/bugs/index.php?50251]<br />
|<br />
|-<br />
| [https://spamassassin.apache.org/ SpamAssassin]<br />
| {{ic|~/.spamassassin}}<br />
|<br />
|<br />
|-<br />
| [[spectrwm]]<br />
| {{ic|~/.spectrwm}}<br />
|<br />
|<br />
|-<br />
| [[SQLite]]<br />
| {{ic|~/.sqlite_history}}<br />
<br />
{{ic|~/.sqliterc}}<br />
| [https://unix.stackexchange.com/questions/306890/change-location-of-sqlite-history-file][http://sqlite.1065341.n5.nabble.com/Customizing-the-location-of-the-sqlite-history-td87055.html]<br />
| {{ic|$ sqlite3 -init "$XDG_CONFIG_HOME"/sqlite3/sqliterc}}<br />
|-<br />
| [[TeamSpeak]]<br />
| {{ic|~/.ts3client}}<br />
|<br />
|-<br />
| [http://www.texmacs.org/ TeXmacs]<br />
| {{ic|~/.TeXmacs}}<br />
|<br />
|<br />
|-<br />
| [[Thunderbird]]<br />
| {{ic|~/.thunderbird}}<br />
| [https://bugzil.la/735285]<br />
|<br />
|-<br />
| [https://git.archlinux.org/users/remy/texlive-localmanager.git/ tllocalmgr]<br />
| {{ic|~/.texlive}}<br />
|<br />
|-<br />
| [[vim]]<br />
| {{ic|~/.vim}}<br />
<br />
{{ic|~/.vimrc}}<br />
<br />
{{ic|~/.viminfo}}<br />
|<br />
| Since [https://github.com/vim/vim/commit/6a459902592e2a4ba68 7.3.1178] vim will search for {{ic|~/.vim/vimrc}} if {{ic|~/.vimrc}} is not found.<br />
<br />
{{ic|1=<nowiki>$ mkdir -p "$XDG_CACHE_HOME"/vim/{undo,swap,backup}</nowiki>}}<br />
<br />
{{hc|"$XDG_CONFIG_HOME"/vim/vimrc|<br />
set undodir&#61;$XDG_CACHE_HOME/vim/undo<br />
set directory&#61;$XDG_CACHE_HOME/vim/swap<br />
set backupdir&#61;$XDG_CACHE_HOME/vim/backup<br />
set viminfo+&#61;'1000,n$XDG_CACHE_HOME/vim/viminfo<br />
set runtimepath&#61;$XDG_CONFIG_HOME/vim,$XDG_CONFIG_HOME/vim/after,$VIMRUNTIME<br />
}}<br />
<br />
{{hc|~/.profile|<br />
export VIMINIT&#61;":source $XDG_CONFIG_HOME"/vim/vimrc<br />
}}<br />
<br />
* https://tlvince.com/vim-respect-xdg<br />
|-<br />
| [http://www.vimperator.org/ vimperator]<br />
| {{ic|~/.vimperatorrc}}<br />
| [http://www.mozdev.org/pipermail/vimperator/2009-October/004848.html]<br />
| {{ic|1=$ export VIMPERATOR_INIT=":source $XDG_CONFIG_HOME/vimperator/vimperatorrc"}}<br />
<br />
{{ic|1=$ export VIMPERATOR_RUNTIME="$XDG_CONFIG_HOME"/vimperator}}<br />
|-<br />
| [https://w1.fi/ wpa_cli]<br />
| {{ic|~/.wpa_cli_history}}<br />
|<br />
|<br />
|-<br />
| {{pkg|xdg-utils}}<br />
| {{ic|~/.gnome}}<br />
|<br />
| For some reason the script {{ic|xdg-desktop-menu}} hard-codes {{ic|gnome_user_dir&#61;"$HOME/.gnome/apps"}}. This is used by [[chromium]] amoung others.<br />
|-<br />
| [https://opensource.conformal.com/wiki/xombrero xombrero]<br />
| {{ic|~/.xombrero}}<br />
| [https://github.com/conformal/xombrero/issues/74]<br />
|<br />
|-<br />
| [[zsh]]<br />
| {{ic|~/.zshrc}}<br />
<br />
{{ic|~/.zprofile}} {{ic|~/.zshenv}}<br />
<br />
{{ic|~/.zlogin}} {{ic|~/.zlogout}}<br />
<br />
{{ic|~/.histfile}}<br />
| [http://www.zsh.org/mla/workers/2013/msg00692.html]<br />
| Consider exporting {{ic|1=ZDOTDIR=$HOME/.config/zsh}} in {{ic|~/.zshenv}} (this is hardcoded due to the bootstrap problem). You could also add this to {{ic|/etc/zsh/zshenv}} and avoid the need for any dotfiles in your {{ic|HOME}}. Doing this however requires root privilege which may not be viable and is system-wide.<br />
<br />
{{ic|1=$ export HISTFILE="$XDG_DATA_HOME"/zsh/history}}<br />
|}<br />
<br />
==Library and language support==<br />
<br />
; C<br />
: [https://github.com/Cloudef/chck/tree/master/chck/xdg C99: Cloudef's simple implementation].<br />
<br />
; Haskell<br />
: Officially in [https://hackage.haskell.org/package/directory directory] since 1.2.3.0 [https://github.com/haskell/directory/commit/ab9d0810ce ab9d0810ce].<br />
: [https://hackage.haskell.org/package/xdg-basedir xdg-basedir]<br />
<br />
; Perl<br />
: [http://search.cpan.org/dist/File-BaseDir/lib/File/BaseDir.pm File-BaseDir]<br />
: [https://github.com/Aerdan/perl-file-xdg perl-file-xdg]<br />
<br />
; Python<br />
: [http://freedesktop.org/wiki/Software/pyxdg/ pyxdg]<br />
<br />
; Vala<br />
: Builtin support via [http://valadoc.org/#!api=glib-2.0/GLib.Environment GLib.Environment].<br />
: See {{ic|get_user_cache_dir}}, {{ic|get_user_data_dir}}, {{ic|get_user_config_dir}}, etc.<br />
<br />
==See also==<br />
<br />
* [https://wiki.gnome.org/Initiatives/GnomeGoals/XDGConfigFolders GNOME Goal: XDG Base Directory Specification Usage]<br />
* [https://plus.google.com/+RobPikeTheHuman/posts/R58WgWwN9jp Rob Pike: "Dotfiles" being hidden is a UNIXv2 mistake].<br />
* [http://www.freedesktop.org/software/systemd/man/systemd-path.html systemd-path(1)]<br />
* [http://www.freedesktop.org/software/systemd/man/file-hierarchy.html file-hierarchy(7)]<br />
* [https://github.com/grawity/dotfiles/blob/master/.dotfiles.notes Grawity's notes on dotfiles].<br />
* [https://github.com/grawity/dotfiles/blob/master/.environ.notes Grawity's notes on environment variables].<br />
* [https://ploum.net/207-modify-your-application-to-use-xdg-folders/ ploum.net: Modify Your Application to use XDG Folders].</div>
Jristz
https://wiki.archlinux.org/index.php?title=Talk:Arch_User_Repository&diff=470657
Talk:Arch User Repository
2017-03-14T06:49:26Z
<p>Jristz: /* SSH command lines */</p>
<hr />
<div>==Warning about rebuilding your AUR packages==<br />
I thought at some point there was an explicit warning to the effect that rebuilding AUR packages against new official libraries was the individual's responsibility, not pacman's. I would like to see this reinstated at the top of the page as it is a constant source of confusion for new users. [[User:Jasonwryan|Jasonwryan]] ([[User talk:Jasonwryan|talk]]) 21:57, 24 November 2016 (UTC)<br />
<br />
Another approach would be to add it to the top of the [[Arch_User_Repository#FAQ|FAQ]], and then split that out to a separate page, with a warning at the top of the AUR page sugesting that new users read the entirety of the FAQ 'before' installing anything from the AUR [[User:Jasonwryan|Jasonwryan]] ([[User talk:Jasonwryan|talk]]) 04:58, 27 November 2016 (UTC)<br />
<br />
:Is this a user's responsibility completely or the package maintainer's to increment pkgrel to indicate that the package should be rebuilt? This might fit to the explanation when (not) to use the "Out of date" button. -- [[User:Lahwaacz|Lahwaacz]] ([[User talk:Lahwaacz|talk]]) 08:21, 27 November 2016 (UTC)<br />
<br />
== Scope of the AUR4 section ==<br />
<br />
=== SSH and Git commands ===<br />
<br />
The section sees a lot of contributions, which is a nice thing, but there are some outstanding issues. For example:<br />
* [[Arch_User_Repository#Migrating_from_a_git_repository_with_multiple_packages]] adds a number of complex git commands lending themselves to copy-paste. Linking to a related tutorial (e.g from [https://git-scm.com/docs]) would be more educational and reduce duplication.<br />
* Similarly, there is duplication with [[SSH keys]].<br />
-- [[User:Alad|Alad]] ([[User talk:Alad|talk]]) 13:59, 9 June 2015 (UTC)<br />
<br />
:: Well, I somewhat disagree. Yes, in general it is good to make people learn stuff themselves. However, we currently force all package maintainers to move to a new AUR "format" within 4 weeks. Splitting git repositories is none of these basic things everybody learns in a git tutorial. Giving maintainers the right tools at hand is a good thing in this case.<br />
:: Moving the migration to AUR 4 to a separate wiki page would be a good idea though (when the AUR homepage also links there).<br />
:: --[[User:JonnyJD|JonnyJD]] ([[User talk:JonnyJD|talk]]) 14:08, 9 June 2015 (UTC)<br />
<br />
::: Indeed, not all is as straightforward as some seem to think. Eg: I first created my key with keygen -t ed25519, and it did not work. Also, I tried to simply run `git clone ...` as written in the wiki, and git told me that this repository did not exist; with hindsight, it may have been caused by the unrecognized ed25519 key, but the git error message did not hint at this. Hence my attempt at editing this page (edit has been canceled by Alad)… Just to make things clear: I absolutely don't mind that what I wrote had been removed, really; I can be wrong and I know it. But at least it worked for me and what was written before did not. So just be sure that you provide a solution, or the needed precisions, so that the migration goes smoothly. {{Unsigned| 10:11, 10 June 2015|TheYinYeti}}<br />
<br />
:::: [[SSH keys]] does have a few tangents. If AUR4 indeed does not support ed25519 keys (we could use another confirm) then it should be mentioned. -- [[User:Alad|Alad]] ([[User talk:Alad|talk]]) 09:39, 14 June 2015 (UTC)<br />
<br />
:::Then I'd suggest to either 1) move the commands to a gist 2) improve the comments of the linked scripts 3) or merge things to [[Git]]. Not sure a separate page is the best idea, as it would be a temporary measure; after AUR 4 has settled, the section should be a central part of the article. -- [[User:Alad|Alad]] ([[User talk:Alad|talk]]) 14:15, 9 June 2015 (UTC)<br />
<br />
:::: Okay, I removed both sections (SSH, migration) and added a bit more info in the other sections. I also added more comments in my scripts (linked in the wiki): [https://github.com/JonnyJD/PKGBUILDs/blob/master/_bin/aur4_import.sh aur4_import.sh], [https://github.com/JonnyJD/PKGBUILDs/blob/master/_bin/aur4_make_submodule.sh aur4_make_submodule.sh] --[[User:JonnyJD|JonnyJD]] ([[User talk:JonnyJD|talk]]) 15:16, 9 June 2015 (UTC)<br />
<br />
::::: Much appreciated. About SSH, it seems not all of the information is present in the linked article though, e.g the "It is recommended to add the following lines to your {{ic|~/.ssh/config}} so you do not need to specify user and key each time you connect to the AUR SSH interface:" directive. There's [[SSH_keys#Managing_multiple_keys]], but it doesn't mention "User ''foo''". -- [[User:Alad|Alad]] ([[User talk:Alad|talk]]) 17:52, 9 June 2015 (UTC)<br />
<br />
:::::: Isn't {{ic|User foo}} practically useless in this case? We have {{ic|aur@}} in all repository url examples. And this seems to be standard. I have all my repository urls prefixed with {{ic|git@}} or similar. --[[User:JonnyJD|JonnyJD]] ([[User talk:JonnyJD|talk]]) 18:37, 9 June 2015 (UTC)<br />
<br />
::::::: You are right of course. *Facepalm* <s>Well, I think this can be closed then.</s> Cheers -- [[User:Alad|Alad]] ([[User talk:Alad|talk]]) 19:44, 9 June 2015 (UTC)<br />
<br />
== AUR's history and future ==<br />
<br />
Will part of [[Arch_User_Repository#AUR_4]] be moved to [[Arch_User_Repository#History]] in a day or two? We should also remove / archive notes about the old AUR once it's read-only.<br />
<br />
The article should also mention using git as an alternative to downloading the tarball. -- [[User:Karol|Karol]] ([[User talk:Karol|talk]]) 12:06, 7 August 2015 (UTC)<br />
<br />
:Part of this request has been fulfilled with [https://wiki.archlinux.org/index.php?title=Arch_User_Repository&diff=390646&oldid=389301]. — [[User:Kynikos|Kynikos]] ([[User talk:Kynikos|talk]]) 14:46, 9 August 2015 (UTC)<br />
<br />
== What is the correct AUR forum section? ==<br />
<br />
[[Arch_User_Repository#Submitting_packages]] says it's [https://bbs.archlinux.org/viewforum.php?id=4], but we also have [https://bbs.archlinux.org/viewforum.php?id=38]. One of them should be added to [[Arch_User_Repository#I_have_a_PKGBUILD_I_would_like_to_submit.3B_can_someone_check_it_to_see_if_there_are_any_errors.3F]]. -- [[User:Karol|Karol]] ([[User talk:Karol|talk]]) 12:30, 7 August 2015 (UTC)<br />
<br />
== AUR link ==<br />
<br />
The link to this page from the [https://aur.archlinux.org/ AUR homepage] is outdated.<br />
<br />
[https://wiki.archlinux.org/index.php/Arch_User_Repository#AUR_4 "Submitting packages"] located above the SSH keys directs to an AUR4 link, which has since become just AUR. I'm not knowledgeable of the methods to correct this.<br />
<br />
-- [[User:Ctag|Ctag]] ([[User talk:Ctag|talk]]) 00:05, 23 September 2015 (UTC)<br />
<br />
:You can submit a bug report for the [https://bugs.archlinux.org/index.php?project=2&do=index&switch=1 AUR web interface] project in the tracker. Or even provide a patch: sources are at [https://projects.archlinux.org/aurweb.git/]. -- [[User:Lahwaacz|Lahwaacz]] ([[User talk:Lahwaacz|talk]]) 11:22, 23 September 2015 (UTC)<br />
<br />
== Uploading AUR Packages, clear and consise, reverted edit: ==<br />
<br />
=== New page for .SRCINFO, reshuffle and implementation of draft ===<br />
<br />
Sorry again to take matters into my own hands without consultation, but these were the conclusions I came to:<br />
<br />
1. The AUR page has been suffering congestion since months before the AUR3/4 transition; transitional cruft and disorder are not quite out of the pipeline.<br />
<br />
2. The decision to degrade [[.SRCINFO]] to a sub-section of the AUR page, and not its own page equivalent to [[PKGBUILD]]'s page, as they are of equal necessity, was a bad decision. It is undone, and the details of {{ic|.SRCINFO}} creation have been transfered there for safekeeping (for real, needs its own page).<br />
<br />
3. These changes represent only small changes in Wiki content in order to smooth the transition into AUR4 package management for long-time-no-update and new users, with as little redundancy as possible in respect to Hypertext Metaphor (every section is a brief, with a link to further details).<br />
<br />
Still keeping the Draft for the ''git push'' method. Nice example of [[Template:Comment|Comment]]s. [[User:Quequotion|quequotion]] ([[User talk:Quequotion|talk]]) 17:38, 6 March 2016 (UTC)<br />
<br />
:This is not how drafts work. When the draft is finished and we like it enough, it might appear on the main page. -- [[User:Lahwaacz|Lahwaacz]] ([[User talk:Lahwaacz|talk]]) 20:58, 6 March 2016 (UTC)<br />
<br />
::I liked it enough. Looks great. [[User:Quequotion|quequotion]] ([[User talk:Quequotion|talk]]) 21:11, 6 March 2016 (UTC)<br />
<br />
=== Draft ===<br />
{{Comment|The ''push'' without ''clone'' method would fit right after "{{ic|git push origin master}}" in '''Uploading packages''', but if you can find a logical way to put it anywhere else I'm open to suggestions. [[User:Quequotion|quequotion]] ([[User talk:Quequotion|talk]]) 06:48, 7 March 2016 (UTC)}}<br />
===== Upload packages built from existing files =====<br />
If you've made a new package already, or intend to do so from a folder with files already inside, initialize the directory as a git repository (if it is not one already) and add AUR as a remote source.<br />
<br />
$ git init<br />
$ git remote add origin ssh://aur@aur.archlinux.org/''package_name''.git<br />
<br />
Then update and upload as shown above.<br />
{{Comment|The reason for keeping both methods is irrelevant, there is a trivial way to turn a directory full of files into a git repository using the ''clone'' method:<br />
$ mv foo/ bar/<br />
$ git clone ''URL'' foo<br />
$ mv bar/* foo/<br />
$ rmdir bar/<br />
[[User:Lahwaacz|Lahwaacz]] ([[User talk:Lahwaacz|talk]]) 21:13, 6 March 2016 (UTC)<br />
}}<br />
{{Comment|That's four extra steps instead of two. It's more complicated than that however, it uses three different tools to take four actions. The push sequence above adds only two common git commands to a common git command sequence.<br />
[[User:Quequotion|quequotion]] ([[User talk:Quequotion|talk]]) 05:49, 7 March 2016 (UTC)}}<br />
<br />
== gitignore ==<br />
<br />
Adding {{ic|*}} to {{ic|.gitignore}} is an ugly workaround for something (in case of dotfiles, programs not respecting standards and e.g. storing cache and config files together). There isn't much to be excluded here - the only unpredictable part is the source tarballs and VCS directories, which can be easily put away by configuring {{ic|SRCDEST}} in {{ic|makepkg.conf}}. We can still recommend to add the source files explicitly.<br />
<br />
The recommendation will affect everybody using the given package, not only the user managing his personal config files, so I think an explicit blacklist is better than the {{ic|*}} wildcard here.<br />
<br />
-- [[User:Lahwaacz|Lahwaacz]] ([[User talk:Lahwaacz|talk]]) 08:58, 6 March 2016 (UTC)<br />
:I agree, as per my original recommendation. The simple thing to do is {{ic|git add .}}; some packages ''do have'' an annoying variety of files. Better to explicitly exclude download directories other known cruft in .gitignore. [[User:Quequotion|quequotion]] ([[User talk:Quequotion|talk]]) 12:15, 6 March 2016 (UTC)<br />
<br />
::So the concern is you'd miss to whitelist some "annoying variety" of files, which you wouldn't with {{ic|git add .}}? You might as well argue that you'd miss to blacklist a file you wouldn't want to upload to the AUR... <br />
::Either way, I'd agree configuring SRCDEST is the better (and universal) solution here. -- [[User:Alad|Alad]] ([[User talk:Alad|talk]]) 15:05, 6 March 2016 (UTC)<br />
:::<strike>Good point, the whole reason for posting a guide indeed is to show users how to deal with AUR4 in the way Archlinux administration expects, this seems to be the more reliable solution[</strike><br />
::::Then I remembered what SRCDEST actually does and realized it wouldn't sufficiently resolve the issue (the source directory is not the only cruft to be avoided). [[User:Quequotion|quequotion]] ([[User talk:Quequotion|talk]]) 03:55, 13 March 2016 (UTC)<br />
<br />
:::::I have SRCDEST, PKGDEST, LOGDEST, and BUILDDEST set. Suffice to say there's no cruft in my .git dirs. It's not much a bother either, since the values are commented in makepkg.conf. -- [[User:Alad|Alad]] ([[User talk:Alad|talk]]) 12:35, 13 March 2016 (UTC)<br />
<br />
::::::What about the symlinks to the built packages and signatures? -- [[User:Lahwaacz|Lahwaacz]] ([[User talk:Lahwaacz|talk]]) 13:04, 13 March 2016 (UTC)<br />
<br />
:::::::Assuming only makepkg crates symlinks in the clone directory (correct me if I'm wrong), you can do something like {{ic|find -maxdepth 2 -type l -delete}} in the directory above, in my case a dedicated "AURDEST".<br />
:::::::Perhaps too specific for the general case, but the special type helps anyway. -- [[User:Alad|Alad]] ([[User talk:Alad|talk]]) 13:43, 13 March 2016 (UTC)<br />
<br />
::::::::That's cleanup, not prevention. Anyway, the point of {{ic|.gitignore}} is not to move the "cruft" away, but to keep the repo directory clean ''in git terms'', i.e. git should not report files created by makepkg as untracked. -- [[User:Lahwaacz|Lahwaacz]] ([[User talk:Lahwaacz|talk]]) 11:48, 14 March 2016 (UTC)<br />
<br />
:::::::::In that case, I refer to my comment below on just mentioning {{ic|.gitignore}}, but not recommending a specific method. -- [[User:Alad|Alad]] ([[User talk:Alad|talk]]) 19:47, 14 March 2016 (UTC)<br />
<br />
::::Recommending either way is problematic since this is more a question of git usage style rather than AUR usage. The maintainer should set up the .gitignore in an intuitive way ''depending'' on their git workflow and how the package is organized. If I had to recommend anything, it would be either: don't {{ic|git add .}} (because it's lazy and can easily backfire), or always check {{ic|git status}} before you commit to make sure you know what's staged (and we already recommend checking your commits before pushing). But again, those are more general git recommendations than anything AUR-specific. [[User:Silverhammermba|Silverhammermba]] ([[User talk:Silverhammermba|talk]]) 21:58, 9 March 2016 (UTC)<br />
<br />
:::::Using gitignore is useful not only for the comfort of the maintainer, but also of users building and installing the package. For example if {{ic|pkg/}}, {{ic|src/}} etc. are not gitignored, tools such as [https://github.com/kynikos/repocheck repocheck] will not work correctly. -- [[User:Lahwaacz|Lahwaacz]] ([[User talk:Lahwaacz|talk]]) 23:05, 9 March 2016 (UTC)<br />
<br />
::::::I still don't see how that is AUR-specific information. It is certainly good practice to have a gitignore for any git repo with files you don't want to track, but it is by no means necessary nor is it a practice specific to AUR repos. Adding git tricks to this article that are just general best practices is a slippery slope to creating a duplicate git tutorial like Quequotion did. I would much rather direct users to https://git-scm.com/doc and emphasize the importance of learning git properly before contributing AUR packages. [[User:Silverhammermba|Silverhammermba]] ([[User talk:Silverhammermba|talk]]) 17:58, 10 March 2016 (UTC)<br />
<br />
:::::::We know certain things could be .gitignored for every package, such as {{ic|src/}}, {{ic|pkg/}}, and {{ic|*.pkg.tar.xz}}; but we cannot know what files a packager may be using otherwise. I think having packagers create an explicit blacklist is the smallest and easiest of the available options. [[User:Quequotion|quequotion]] ([[User talk:Quequotion|talk]]) 03:55, 13 March 2016 (UTC)<br />
<br />
::::::::Stuff makepkg creates can be moved automatically, as indicated above. The rest is an edge case, and the best way to handle it is subject to debate. If anything, just mention .gitignore, but not a specific approach to using it. -- [[User:Alad|Alad]] ([[User talk:Alad|talk]]) 12:35, 13 March 2016 (UTC)<br />
<br />
== AUR4 git push request whitelisting ==<br />
If AUR accepted ''only'' updates containting changes to ''at least'' {{ic|.SRCINFO}} and {{ic|PKGBUILD}}, <strike>the first time</strike> and every time (ie, refuse to open new repositories without them, thow some errors),it would <strike>avoid users having to plod through painful git reset procedures, and</strike> ensure that maintainers do not neglect to update the version information reported by AUR (which is currently possible: <strike>AUR accepts an initial push request without {{ic|.SRCINFO}} and creates a broken repository</strike>; AUR also accepts pushes without any change to {{ic|.SRCINFO}}, letting the version information reported go stale). <br />
Think I should make a task out of it? Wasting my time? [[User:Quequotion|quequotion]] ([[User talk:Quequotion|talk]]) 14:08, 7 March 2016 (UTC)<br />
<br />
:Just do it - worst case, we get some more background information. -- [[User:Alad|Alad]] ([[User talk:Alad|talk]]) 14:12, 7 March 2016 (UTC)<br />
::[https://bugs.archlinux.org/task/48555 Done]. As a "feature request", although <strike>I feel like preventing AUR from creating broken repositories when the first push doesn't contain .SRCINFO would be resolving a bug</strike>. [[User:Quequotion|quequotion]] ([[User talk:Quequotion|talk]]) 04:09, 13 March 2016 (UTC)<br />
:::Since bringing this up, AUR has began to reject inital pushes without .SRCINFO. Although I have recent experience to the contrary, and there was a note to the contrary in the wiki until I removed it moments ago, [https://bugs.archlinux.org/task/46130 Scimmia]] claims there has been mechanism in place since the swtich to git [[User:Quequotion|quequotion]] ([[User talk:Quequotion|talk]]) 19:23, 13 March 2016 (UTC)<br />
<br />
== Removal of "AUR metadata" ==<br />
<br />
Went ahead and took care of it. Relevant background information moved to [[.SRCINFO]]. [[User:Quequotion|quequotion]] ([[User talk:Quequotion|talk]]) 19:03, 13 March 2016 (UTC)<br />
<br />
== How do I find out if any of my installed packages disappeared from AUR? ==<br />
<br />
It returns packages that are installed from AUR, not "does not exist in AUR". It should be renamed. -- [[User:Erkexzcx|Erkexzcx]] ([[User talk:Erkexzcx|talk]]) 08:09, 22 March 2016 (UTC)<br />
<br />
:It returns packages that are neither available by the repos accessible by pacman, nor available by the AUR. The packages not necessarily are/were from AUR, but at least the packages are not available by AUR and also not by the repos used by pacman.<br />
<br />
:On my machine cower wasn't compiled against current /lib/libalpm*, so I rebuild it.<br />
<br />
:$ grep cower\ \(14 /var/log/pacman.log <br />
:[2016-03-22 07:47] [ALPM] upgraded cower (14-2 -> 14-3)<br />
<br />
:Ensure that cower isn't broken. -- [[User:Ralf mardorf|Ralf mardorf]] ([[User talk:Ralf mardorf|talk]]) 08:47, 22 March 2016 (UTC)<br />
::Hi,<br />
<br />
::please undo the last edit of the page, since if a user builds a lot of packages that aren't provided by any repository, using "cower" is ok, but "curl" is a PITA.<br />
<br />
::If you didn't build a lot of packages on your own, let a script build many dummy packages and than compare e.g.:<br />
<br />
::{{bc|<nowiki><br />
$ grep aura -A4 .bashrc <br />
alias aura='printf "\"auru\" is much faster than \"aura\".\nPackages that are unavailable by repos and the AUR:\n";\<br />
for pkg in $(pacman -Qqm); do curl -sILfo /dev/null -w '%{http_code}'\<br />
"https://aur.archlinux.org/packages/$pkg"|grep '^2' >/dev/null || printf "$pkg "; done; echo'<br />
alias auru='printf "Ensure that \"cower\" is not broken.\nPackages that are unavailable by repos and the AUR:\n";\<br />
for p in $(pacman -Qqm);do cower -s $p &>/dev/null||printf "$p ";done;echo'<br />
</nowiki>}}<br />
<br />
::Regards, -- [[User:Ralf mardorf|Ralf mardorf]] ([[User talk:Ralf mardorf|talk]]) 15:15, 22 March 2016 (UTC)<br />
<br />
:::No. AUR helpers are not to be mentioned in the wiki outside of the [[AUR helpers]] article. Feel free to improve the existing script without using unsupported options. -- [[User:Alad|Alad]] ([[User talk:Alad|talk]]) 15:23, 22 March 2016 (UTC)<br />
::::You're right,<br />
<br />
::::FWIW I noticed that the "cower" script anyway fails:<br />
<br />
::::{{bc|<nowiki><br />
$ aura<br />
"auru" is much faster than "aura".<br />
Packages that are unavailable by repos and the AUR:<br />
anomos-git ardour2 baloo4-akonadi bombono-dvd-git customizepkg db5.1 [snip]<br />
$ auru <br />
Ensure that "cower" is not broken.<br />
Packages that are unavailable by repos and the AUR:<br />
anomos-git ardour2 baloo4-akonadi bombono-dvd-git db5.1 [snip]<br />
$ pacman -Q customizepkg<br />
customizepkg 0.2.1-3<br />
</nowiki>}}-- [[User:Ralf mardorf|Ralf mardorf]] ([[User talk:Ralf mardorf|talk]]) 15:47, 22 March 2016 (UTC)<br />
<br />
:::::I just changed the command. It seems less clunky to me, though I'm getting inconsistent speed measurement on my current connection. Does it work better for you? [[User:Silverhammermba|Silverhammermba]] ([[User talk:Silverhammermba|talk]]) 15:57, 22 March 2016 (UTC)<br />
<br />
::::::{{ic|git ls-remote}} is neat, though it gives false negatives on split packages... -- [[User:Alad|Alad]] ([[User talk:Alad|talk]]) 16:01, 22 March 2016 (UTC)<br />
:::::::{{bc|<nowiki><br />
$ grep aura -A2 .bashrc <br />
alias aura='printf "Packages that are unavailable by repos and the AUR:\n"; for pkg in $(pacman -Qqm); do\<br />
if [[ -z $(git ls-remote https://aur.archlinux.org/$pkg.git HEAD) ]]; then printf "$pkg "; fi; done; echo'<br />
alias aura_legacy='printf "Packages that are unavailable by repos and the AUR:\n";\<br />
for pkg in $(pacman -Qqm); do curl -sILfo /dev/null -w '%{http_code}'\<br />
"https://aur.archlinux.org/packages/$pkg"|grep '^2' >/dev/null || printf "$pkg "; done; echo'<br />
</nowiki>}}<br />
<br />
:::::::The new script (aura) is faster, but the old script (aura_legacy) returns some packages that are not provided by AUR and that are not returned by the new script. I don't know, if the old script returns all missing packages, but at least it returns more missing packages, than the new script does. IOW please undo to the "curl" approach, the "git" way doesn't work correctly.<br />
<br />
:::::::For example "curl" finds, but "git" doesn't find:<br />
<br />
:::::::{{bc|<nowiki><br />
# pacman -Q customizepkg gnome-themes-extras <br />
customizepkg 0.2.1-3<br />
gnome-themes-extras 2.22.0-3<br />
# pacman -Si customizepkg gnome-themes-extras <br />
error: package 'customizepkg' was not found<br />
error: package 'gnome-themes-extras' was not found<br />
# yaourt -S customizepkg gnome-themes-extras <br />
error: target not found: gnome-themes-extras<br />
error: target not found: customizepkg<br />
</nowiki>}}<br />
<br />
:::::::I was running the scripts with the date command to check the speed and I repeated the commands as user and root several times, to ensure that both user/root work equal and to ensure that nothing in the AUR changed after running one script and before running the other script.-- [[User:Ralf mardorf|Ralf mardorf]] ([[User talk:Ralf mardorf|talk]]) 16:50, 22 March 2016 (UTC)<br />
<br />
== History ==<br />
<br />
This section seems slightly ambiguous? The phrase "AUR maintainers are still referred to as TUs" doesn't make it clear (to me at least) that it means the running of the repo itself rather than maintainers of individual packages in the AUR which can be anyone, having no automatic 'trust' at all. The description provided in [https://wiki.archlinux.org/index.php/Official_repositories#Historical_background Official_repositories#Historical_background] seems to have a good description of how the AUR relates to the supported Arch repos.<br />
This page is given to people very regularly, so it's quite important to make sure they get clear information. [[User:D garbage|D garbage]] ([[User talk:D garbage|talk]]) 18:29, 1 April 2016 (UTC)<br />
<br />
:What wording do you propose to avoid ambiguity? Anyway that whole section feels a bit confusing and incomplete to me, we're not very good/consistent at defining the relation between TUs, AUR, community etc.; besides [[Official_repositories#Historical_background]], the information is scattered at least among [[Arch_User_Repository#What_is_a_Trusted_User_.2F_TU.3F]], [[Arch_terminology#TU.2C_Trusted_User]], [[Trusted Users]] and [[AUR Trusted User Guidelines]]. — [[User:Kynikos|Kynikos]] ([[User talk:Kynikos|talk]]) 03:33, 3 April 2016 (UTC)<br />
<br />
== <s>Cloning a "new" package with the name of an old one might download an old package?</s> ==<br />
<br />
This sounds like a problem that could be fixed by changing how deletion requests in AUR are handled:<br />
<br />
"When a package on the AUR is deleted, the git repository is not deleted so it is possible for a deleted package's repository to not be empty when cloned if someone is creating a package with the same name."<br />
<br />
Why not push a commit that deletes all files when an AUR deletion request is fulfilled? [[User:Quequotion|quequotion]] ([[User talk:Quequotion|talk]]) 03:54, 17 November 2016 (UTC)<br />
<br />
:It's not a problem for anybody. Not that it's used regularly, but it provides an easy way to ''undelete'' the package. In any case, this should be discussed with the developers, e.g. on the mailing list. -- [[User:Lahwaacz|Lahwaacz]] ([[User talk:Lahwaacz|talk]]) 08:58, 17 November 2016 (UTC)<br />
<br />
::It would still be possible to ''undelete'' a package by checking the git log and pulling the last commit before deletion. The only question, really, is which process you'd rather complicate: (unwittingly) creating a new package with the same name as an old pakage, or ''undeleting'' a package that was previously deleted. [[User:Quequotion|quequotion]] ([[User talk:Quequotion|talk]]) 15:30, 17 November 2016 (UTC)<br />
<br />
:::How often do people create a package with a name that has already been used in the past, but different content? Existing files in the repo might actually prevent them from reinventing the wheel.<br />
:::As I said, bring this up to the developers on the mailing list if you want this to lead anywhere.<br />
:::-- [[User:Lahwaacz|Lahwaacz]] ([[User talk:Lahwaacz|talk]]) 15:45, 17 November 2016 (UTC)<br />
<br />
== SSH command lines ==<br />
<br />
the actual implementation of AUR allow to use ssh and internal options to do headless activity on the aur included but not limited to search, update, dissown, adopt etc.; but nothing of this is even mentioned beyond the "aur now use git over ssh" in the page, so someone could add the apropiate way to access this options correctly? I tried but later I drop the draft since I'm not sure at all on what say exactly also poor english. 03:05, 13 March 2017 (UTC) {{unsigned||Jristz}}<br />
<br />
:If you try to SSH into the AUR it will tell you to use {{ic|ssh aur@aur.archlinux.org help}} to get a list of commands. -- [[User:Rdeckard|Rdeckard]] ([[User_talk:Rdeckard|talk]]) 13:41, 13 March 2017 (UTC)<br />
:: Yeah, but I mean mention that somewhere in the article like "for headless sistem you can use 'ssh aur@aur.archlinux.org help' for a list of command and utilities' or something... I'm not sure where add it. 06:49, 14 March 2017 (UTC)</div>
Jristz
https://wiki.archlinux.org/index.php?title=Talk:Arch_User_Repository&diff=470605
Talk:Arch User Repository
2017-03-13T03:05:01Z
<p>Jristz: /* SSH command lines */ new section</p>
<hr />
<div>==Warning about rebuilding your AUR packages==<br />
I thought at some point there was an explicit warning to the effect that rebuilding AUR packages against new official libraries was the individual's responsibility, not pacman's. I would like to see this reinstated at the top of the page as it is a constant source of confusion for new users. [[User:Jasonwryan|Jasonwryan]] ([[User talk:Jasonwryan|talk]]) 21:57, 24 November 2016 (UTC)<br />
<br />
Another approach would be to add it to the top of the [[Arch_User_Repository#FAQ|FAQ]], and then split that out to a separate page, with a warning at the top of the AUR page sugesting that new users read the entirety of the FAQ 'before' installing anything from the AUR [[User:Jasonwryan|Jasonwryan]] ([[User talk:Jasonwryan|talk]]) 04:58, 27 November 2016 (UTC)<br />
<br />
:Is this a user's responsibility completely or the package maintainer's to increment pkgrel to indicate that the package should be rebuilt? This might fit to the explanation when (not) to use the "Out of date" button. -- [[User:Lahwaacz|Lahwaacz]] ([[User talk:Lahwaacz|talk]]) 08:21, 27 November 2016 (UTC)<br />
<br />
== Scope of the AUR4 section ==<br />
<br />
=== SSH and Git commands ===<br />
<br />
The section sees a lot of contributions, which is a nice thing, but there are some outstanding issues. For example:<br />
* [[Arch_User_Repository#Migrating_from_a_git_repository_with_multiple_packages]] adds a number of complex git commands lending themselves to copy-paste. Linking to a related tutorial (e.g from [https://git-scm.com/docs]) would be more educational and reduce duplication.<br />
* Similarly, there is duplication with [[SSH keys]].<br />
-- [[User:Alad|Alad]] ([[User talk:Alad|talk]]) 13:59, 9 June 2015 (UTC)<br />
<br />
:: Well, I somewhat disagree. Yes, in general it is good to make people learn stuff themselves. However, we currently force all package maintainers to move to a new AUR "format" within 4 weeks. Splitting git repositories is none of these basic things everybody learns in a git tutorial. Giving maintainers the right tools at hand is a good thing in this case.<br />
:: Moving the migration to AUR 4 to a separate wiki page would be a good idea though (when the AUR homepage also links there).<br />
:: --[[User:JonnyJD|JonnyJD]] ([[User talk:JonnyJD|talk]]) 14:08, 9 June 2015 (UTC)<br />
<br />
::: Indeed, not all is as straightforward as some seem to think. Eg: I first created my key with keygen -t ed25519, and it did not work. Also, I tried to simply run `git clone ...` as written in the wiki, and git told me that this repository did not exist; with hindsight, it may have been caused by the unrecognized ed25519 key, but the git error message did not hint at this. Hence my attempt at editing this page (edit has been canceled by Alad)… Just to make things clear: I absolutely don't mind that what I wrote had been removed, really; I can be wrong and I know it. But at least it worked for me and what was written before did not. So just be sure that you provide a solution, or the needed precisions, so that the migration goes smoothly. {{Unsigned| 10:11, 10 June 2015|TheYinYeti}}<br />
<br />
:::: [[SSH keys]] does have a few tangents. If AUR4 indeed does not support ed25519 keys (we could use another confirm) then it should be mentioned. -- [[User:Alad|Alad]] ([[User talk:Alad|talk]]) 09:39, 14 June 2015 (UTC)<br />
<br />
:::Then I'd suggest to either 1) move the commands to a gist 2) improve the comments of the linked scripts 3) or merge things to [[Git]]. Not sure a separate page is the best idea, as it would be a temporary measure; after AUR 4 has settled, the section should be a central part of the article. -- [[User:Alad|Alad]] ([[User talk:Alad|talk]]) 14:15, 9 June 2015 (UTC)<br />
<br />
:::: Okay, I removed both sections (SSH, migration) and added a bit more info in the other sections. I also added more comments in my scripts (linked in the wiki): [https://github.com/JonnyJD/PKGBUILDs/blob/master/_bin/aur4_import.sh aur4_import.sh], [https://github.com/JonnyJD/PKGBUILDs/blob/master/_bin/aur4_make_submodule.sh aur4_make_submodule.sh] --[[User:JonnyJD|JonnyJD]] ([[User talk:JonnyJD|talk]]) 15:16, 9 June 2015 (UTC)<br />
<br />
::::: Much appreciated. About SSH, it seems not all of the information is present in the linked article though, e.g the "It is recommended to add the following lines to your {{ic|~/.ssh/config}} so you do not need to specify user and key each time you connect to the AUR SSH interface:" directive. There's [[SSH_keys#Managing_multiple_keys]], but it doesn't mention "User ''foo''". -- [[User:Alad|Alad]] ([[User talk:Alad|talk]]) 17:52, 9 June 2015 (UTC)<br />
<br />
:::::: Isn't {{ic|User foo}} practically useless in this case? We have {{ic|aur@}} in all repository url examples. And this seems to be standard. I have all my repository urls prefixed with {{ic|git@}} or similar. --[[User:JonnyJD|JonnyJD]] ([[User talk:JonnyJD|talk]]) 18:37, 9 June 2015 (UTC)<br />
<br />
::::::: You are right of course. *Facepalm* <s>Well, I think this can be closed then.</s> Cheers -- [[User:Alad|Alad]] ([[User talk:Alad|talk]]) 19:44, 9 June 2015 (UTC)<br />
<br />
== AUR's history and future ==<br />
<br />
Will part of [[Arch_User_Repository#AUR_4]] be moved to [[Arch_User_Repository#History]] in a day or two? We should also remove / archive notes about the old AUR once it's read-only.<br />
<br />
The article should also mention using git as an alternative to downloading the tarball. -- [[User:Karol|Karol]] ([[User talk:Karol|talk]]) 12:06, 7 August 2015 (UTC)<br />
<br />
:Part of this request has been fulfilled with [https://wiki.archlinux.org/index.php?title=Arch_User_Repository&diff=390646&oldid=389301]. — [[User:Kynikos|Kynikos]] ([[User talk:Kynikos|talk]]) 14:46, 9 August 2015 (UTC)<br />
<br />
== What is the correct AUR forum section? ==<br />
<br />
[[Arch_User_Repository#Submitting_packages]] says it's [https://bbs.archlinux.org/viewforum.php?id=4], but we also have [https://bbs.archlinux.org/viewforum.php?id=38]. One of them should be added to [[Arch_User_Repository#I_have_a_PKGBUILD_I_would_like_to_submit.3B_can_someone_check_it_to_see_if_there_are_any_errors.3F]]. -- [[User:Karol|Karol]] ([[User talk:Karol|talk]]) 12:30, 7 August 2015 (UTC)<br />
<br />
== AUR link ==<br />
<br />
The link to this page from the [https://aur.archlinux.org/ AUR homepage] is outdated.<br />
<br />
[https://wiki.archlinux.org/index.php/Arch_User_Repository#AUR_4 "Submitting packages"] located above the SSH keys directs to an AUR4 link, which has since become just AUR. I'm not knowledgeable of the methods to correct this.<br />
<br />
-- [[User:Ctag|Ctag]] ([[User talk:Ctag|talk]]) 00:05, 23 September 2015 (UTC)<br />
<br />
:You can submit a bug report for the [https://bugs.archlinux.org/index.php?project=2&do=index&switch=1 AUR web interface] project in the tracker. Or even provide a patch: sources are at [https://projects.archlinux.org/aurweb.git/]. -- [[User:Lahwaacz|Lahwaacz]] ([[User talk:Lahwaacz|talk]]) 11:22, 23 September 2015 (UTC)<br />
<br />
== Uploading AUR Packages, clear and consise, reverted edit: ==<br />
<br />
=== New page for .SRCINFO, reshuffle and implementation of draft ===<br />
<br />
Sorry again to take matters into my own hands without consultation, but these were the conclusions I came to:<br />
<br />
1. The AUR page has been suffering congestion since months before the AUR3/4 transition; transitional cruft and disorder are not quite out of the pipeline.<br />
<br />
2. The decision to degrade [[.SRCINFO]] to a sub-section of the AUR page, and not its own page equivalent to [[PKGBUILD]]'s page, as they are of equal necessity, was a bad decision. It is undone, and the details of {{ic|.SRCINFO}} creation have been transfered there for safekeeping (for real, needs its own page).<br />
<br />
3. These changes represent only small changes in Wiki content in order to smooth the transition into AUR4 package management for long-time-no-update and new users, with as little redundancy as possible in respect to Hypertext Metaphor (every section is a brief, with a link to further details).<br />
<br />
Still keeping the Draft for the ''git push'' method. Nice example of [[Template:Comment|Comment]]s. [[User:Quequotion|quequotion]] ([[User talk:Quequotion|talk]]) 17:38, 6 March 2016 (UTC)<br />
<br />
:This is not how drafts work. When the draft is finished and we like it enough, it might appear on the main page. -- [[User:Lahwaacz|Lahwaacz]] ([[User talk:Lahwaacz|talk]]) 20:58, 6 March 2016 (UTC)<br />
<br />
::I liked it enough. Looks great. [[User:Quequotion|quequotion]] ([[User talk:Quequotion|talk]]) 21:11, 6 March 2016 (UTC)<br />
<br />
=== Draft ===<br />
{{Comment|The ''push'' without ''clone'' method would fit right after "{{ic|git push origin master}}" in '''Uploading packages''', but if you can find a logical way to put it anywhere else I'm open to suggestions. [[User:Quequotion|quequotion]] ([[User talk:Quequotion|talk]]) 06:48, 7 March 2016 (UTC)}}<br />
===== Upload packages built from existing files =====<br />
If you've made a new package already, or intend to do so from a folder with files already inside, initialize the directory as a git repository (if it is not one already) and add AUR as a remote source.<br />
<br />
$ git init<br />
$ git remote add origin ssh://aur@aur.archlinux.org/''package_name''.git<br />
<br />
Then update and upload as shown above.<br />
{{Comment|The reason for keeping both methods is irrelevant, there is a trivial way to turn a directory full of files into a git repository using the ''clone'' method:<br />
$ mv foo/ bar/<br />
$ git clone ''URL'' foo<br />
$ mv bar/* foo/<br />
$ rmdir bar/<br />
[[User:Lahwaacz|Lahwaacz]] ([[User talk:Lahwaacz|talk]]) 21:13, 6 March 2016 (UTC)<br />
}}<br />
{{Comment|That's four extra steps instead of two. It's more complicated than that however, it uses three different tools to take four actions. The push sequence above adds only two common git commands to a common git command sequence.<br />
[[User:Quequotion|quequotion]] ([[User talk:Quequotion|talk]]) 05:49, 7 March 2016 (UTC)}}<br />
<br />
== gitignore ==<br />
<br />
Adding {{ic|*}} to {{ic|.gitignore}} is an ugly workaround for something (in case of dotfiles, programs not respecting standards and e.g. storing cache and config files together). There isn't much to be excluded here - the only unpredictable part is the source tarballs and VCS directories, which can be easily put away by configuring {{ic|SRCDEST}} in {{ic|makepkg.conf}}. We can still recommend to add the source files explicitly.<br />
<br />
The recommendation will affect everybody using the given package, not only the user managing his personal config files, so I think an explicit blacklist is better than the {{ic|*}} wildcard here.<br />
<br />
-- [[User:Lahwaacz|Lahwaacz]] ([[User talk:Lahwaacz|talk]]) 08:58, 6 March 2016 (UTC)<br />
:I agree, as per my original recommendation. The simple thing to do is {{ic|git add .}}; some packages ''do have'' an annoying variety of files. Better to explicitly exclude download directories other known cruft in .gitignore. [[User:Quequotion|quequotion]] ([[User talk:Quequotion|talk]]) 12:15, 6 March 2016 (UTC)<br />
<br />
::So the concern is you'd miss to whitelist some "annoying variety" of files, which you wouldn't with {{ic|git add .}}? You might as well argue that you'd miss to blacklist a file you wouldn't want to upload to the AUR... <br />
::Either way, I'd agree configuring SRCDEST is the better (and universal) solution here. -- [[User:Alad|Alad]] ([[User talk:Alad|talk]]) 15:05, 6 March 2016 (UTC)<br />
:::<strike>Good point, the whole reason for posting a guide indeed is to show users how to deal with AUR4 in the way Archlinux administration expects, this seems to be the more reliable solution[</strike><br />
::::Then I remembered what SRCDEST actually does and realized it wouldn't sufficiently resolve the issue (the source directory is not the only cruft to be avoided). [[User:Quequotion|quequotion]] ([[User talk:Quequotion|talk]]) 03:55, 13 March 2016 (UTC)<br />
<br />
:::::I have SRCDEST, PKGDEST, LOGDEST, and BUILDDEST set. Suffice to say there's no cruft in my .git dirs. It's not much a bother either, since the values are commented in makepkg.conf. -- [[User:Alad|Alad]] ([[User talk:Alad|talk]]) 12:35, 13 March 2016 (UTC)<br />
<br />
::::::What about the symlinks to the built packages and signatures? -- [[User:Lahwaacz|Lahwaacz]] ([[User talk:Lahwaacz|talk]]) 13:04, 13 March 2016 (UTC)<br />
<br />
:::::::Assuming only makepkg crates symlinks in the clone directory (correct me if I'm wrong), you can do something like {{ic|find -maxdepth 2 -type l -delete}} in the directory above, in my case a dedicated "AURDEST".<br />
:::::::Perhaps too specific for the general case, but the special type helps anyway. -- [[User:Alad|Alad]] ([[User talk:Alad|talk]]) 13:43, 13 March 2016 (UTC)<br />
<br />
::::::::That's cleanup, not prevention. Anyway, the point of {{ic|.gitignore}} is not to move the "cruft" away, but to keep the repo directory clean ''in git terms'', i.e. git should not report files created by makepkg as untracked. -- [[User:Lahwaacz|Lahwaacz]] ([[User talk:Lahwaacz|talk]]) 11:48, 14 March 2016 (UTC)<br />
<br />
:::::::::In that case, I refer to my comment below on just mentioning {{ic|.gitignore}}, but not recommending a specific method. -- [[User:Alad|Alad]] ([[User talk:Alad|talk]]) 19:47, 14 March 2016 (UTC)<br />
<br />
::::Recommending either way is problematic since this is more a question of git usage style rather than AUR usage. The maintainer should set up the .gitignore in an intuitive way ''depending'' on their git workflow and how the package is organized. If I had to recommend anything, it would be either: don't {{ic|git add .}} (because it's lazy and can easily backfire), or always check {{ic|git status}} before you commit to make sure you know what's staged (and we already recommend checking your commits before pushing). But again, those are more general git recommendations than anything AUR-specific. [[User:Silverhammermba|Silverhammermba]] ([[User talk:Silverhammermba|talk]]) 21:58, 9 March 2016 (UTC)<br />
<br />
:::::Using gitignore is useful not only for the comfort of the maintainer, but also of users building and installing the package. For example if {{ic|pkg/}}, {{ic|src/}} etc. are not gitignored, tools such as [https://github.com/kynikos/repocheck repocheck] will not work correctly. -- [[User:Lahwaacz|Lahwaacz]] ([[User talk:Lahwaacz|talk]]) 23:05, 9 March 2016 (UTC)<br />
<br />
::::::I still don't see how that is AUR-specific information. It is certainly good practice to have a gitignore for any git repo with files you don't want to track, but it is by no means necessary nor is it a practice specific to AUR repos. Adding git tricks to this article that are just general best practices is a slippery slope to creating a duplicate git tutorial like Quequotion did. I would much rather direct users to https://git-scm.com/doc and emphasize the importance of learning git properly before contributing AUR packages. [[User:Silverhammermba|Silverhammermba]] ([[User talk:Silverhammermba|talk]]) 17:58, 10 March 2016 (UTC)<br />
<br />
:::::::We know certain things could be .gitignored for every package, such as {{ic|src/}}, {{ic|pkg/}}, and {{ic|*.pkg.tar.xz}}; but we cannot know what files a packager may be using otherwise. I think having packagers create an explicit blacklist is the smallest and easiest of the available options. [[User:Quequotion|quequotion]] ([[User talk:Quequotion|talk]]) 03:55, 13 March 2016 (UTC)<br />
<br />
::::::::Stuff makepkg creates can be moved automatically, as indicated above. The rest is an edge case, and the best way to handle it is subject to debate. If anything, just mention .gitignore, but not a specific approach to using it. -- [[User:Alad|Alad]] ([[User talk:Alad|talk]]) 12:35, 13 March 2016 (UTC)<br />
<br />
== AUR4 git push request whitelisting ==<br />
If AUR accepted ''only'' updates containting changes to ''at least'' {{ic|.SRCINFO}} and {{ic|PKGBUILD}}, <strike>the first time</strike> and every time (ie, refuse to open new repositories without them, thow some errors),it would <strike>avoid users having to plod through painful git reset procedures, and</strike> ensure that maintainers do not neglect to update the version information reported by AUR (which is currently possible: <strike>AUR accepts an initial push request without {{ic|.SRCINFO}} and creates a broken repository</strike>; AUR also accepts pushes without any change to {{ic|.SRCINFO}}, letting the version information reported go stale). <br />
Think I should make a task out of it? Wasting my time? [[User:Quequotion|quequotion]] ([[User talk:Quequotion|talk]]) 14:08, 7 March 2016 (UTC)<br />
<br />
:Just do it - worst case, we get some more background information. -- [[User:Alad|Alad]] ([[User talk:Alad|talk]]) 14:12, 7 March 2016 (UTC)<br />
::[https://bugs.archlinux.org/task/48555 Done]. As a "feature request", although <strike>I feel like preventing AUR from creating broken repositories when the first push doesn't contain .SRCINFO would be resolving a bug</strike>. [[User:Quequotion|quequotion]] ([[User talk:Quequotion|talk]]) 04:09, 13 March 2016 (UTC)<br />
:::Since bringing this up, AUR has began to reject inital pushes without .SRCINFO. Although I have recent experience to the contrary, and there was a note to the contrary in the wiki until I removed it moments ago, [https://bugs.archlinux.org/task/46130 Scimmia]] claims there has been mechanism in place since the swtich to git [[User:Quequotion|quequotion]] ([[User talk:Quequotion|talk]]) 19:23, 13 March 2016 (UTC)<br />
<br />
== Removal of "AUR metadata" ==<br />
<br />
Went ahead and took care of it. Relevant background information moved to [[.SRCINFO]]. [[User:Quequotion|quequotion]] ([[User talk:Quequotion|talk]]) 19:03, 13 March 2016 (UTC)<br />
<br />
== How do I find out if any of my installed packages disappeared from AUR? ==<br />
<br />
It returns packages that are installed from AUR, not "does not exist in AUR". It should be renamed. -- [[User:Erkexzcx|Erkexzcx]] ([[User talk:Erkexzcx|talk]]) 08:09, 22 March 2016 (UTC)<br />
<br />
:It returns packages that are neither available by the repos accessible by pacman, nor available by the AUR. The packages not necessarily are/were from AUR, but at least the packages are not available by AUR and also not by the repos used by pacman.<br />
<br />
:On my machine cower wasn't compiled against current /lib/libalpm*, so I rebuild it.<br />
<br />
:$ grep cower\ \(14 /var/log/pacman.log <br />
:[2016-03-22 07:47] [ALPM] upgraded cower (14-2 -> 14-3)<br />
<br />
:Ensure that cower isn't broken. -- [[User:Ralf mardorf|Ralf mardorf]] ([[User talk:Ralf mardorf|talk]]) 08:47, 22 March 2016 (UTC)<br />
::Hi,<br />
<br />
::please undo the last edit of the page, since if a user builds a lot of packages that aren't provided by any repository, using "cower" is ok, but "curl" is a PITA.<br />
<br />
::If you didn't build a lot of packages on your own, let a script build many dummy packages and than compare e.g.:<br />
<br />
::{{bc|<nowiki><br />
$ grep aura -A4 .bashrc <br />
alias aura='printf "\"auru\" is much faster than \"aura\".\nPackages that are unavailable by repos and the AUR:\n";\<br />
for pkg in $(pacman -Qqm); do curl -sILfo /dev/null -w '%{http_code}'\<br />
"https://aur.archlinux.org/packages/$pkg"|grep '^2' >/dev/null || printf "$pkg "; done; echo'<br />
alias auru='printf "Ensure that \"cower\" is not broken.\nPackages that are unavailable by repos and the AUR:\n";\<br />
for p in $(pacman -Qqm);do cower -s $p &>/dev/null||printf "$p ";done;echo'<br />
</nowiki>}}<br />
<br />
::Regards, -- [[User:Ralf mardorf|Ralf mardorf]] ([[User talk:Ralf mardorf|talk]]) 15:15, 22 March 2016 (UTC)<br />
<br />
:::No. AUR helpers are not to be mentioned in the wiki outside of the [[AUR helpers]] article. Feel free to improve the existing script without using unsupported options. -- [[User:Alad|Alad]] ([[User talk:Alad|talk]]) 15:23, 22 March 2016 (UTC)<br />
::::You're right,<br />
<br />
::::FWIW I noticed that the "cower" script anyway fails:<br />
<br />
::::{{bc|<nowiki><br />
$ aura<br />
"auru" is much faster than "aura".<br />
Packages that are unavailable by repos and the AUR:<br />
anomos-git ardour2 baloo4-akonadi bombono-dvd-git customizepkg db5.1 [snip]<br />
$ auru <br />
Ensure that "cower" is not broken.<br />
Packages that are unavailable by repos and the AUR:<br />
anomos-git ardour2 baloo4-akonadi bombono-dvd-git db5.1 [snip]<br />
$ pacman -Q customizepkg<br />
customizepkg 0.2.1-3<br />
</nowiki>}}-- [[User:Ralf mardorf|Ralf mardorf]] ([[User talk:Ralf mardorf|talk]]) 15:47, 22 March 2016 (UTC)<br />
<br />
:::::I just changed the command. It seems less clunky to me, though I'm getting inconsistent speed measurement on my current connection. Does it work better for you? [[User:Silverhammermba|Silverhammermba]] ([[User talk:Silverhammermba|talk]]) 15:57, 22 March 2016 (UTC)<br />
<br />
::::::{{ic|git ls-remote}} is neat, though it gives false negatives on split packages... -- [[User:Alad|Alad]] ([[User talk:Alad|talk]]) 16:01, 22 March 2016 (UTC)<br />
:::::::{{bc|<nowiki><br />
$ grep aura -A2 .bashrc <br />
alias aura='printf "Packages that are unavailable by repos and the AUR:\n"; for pkg in $(pacman -Qqm); do\<br />
if [[ -z $(git ls-remote https://aur.archlinux.org/$pkg.git HEAD) ]]; then printf "$pkg "; fi; done; echo'<br />
alias aura_legacy='printf "Packages that are unavailable by repos and the AUR:\n";\<br />
for pkg in $(pacman -Qqm); do curl -sILfo /dev/null -w '%{http_code}'\<br />
"https://aur.archlinux.org/packages/$pkg"|grep '^2' >/dev/null || printf "$pkg "; done; echo'<br />
</nowiki>}}<br />
<br />
:::::::The new script (aura) is faster, but the old script (aura_legacy) returns some packages that are not provided by AUR and that are not returned by the new script. I don't know, if the old script returns all missing packages, but at least it returns more missing packages, than the new script does. IOW please undo to the "curl" approach, the "git" way doesn't work correctly.<br />
<br />
:::::::For example "curl" finds, but "git" doesn't find:<br />
<br />
:::::::{{bc|<nowiki><br />
# pacman -Q customizepkg gnome-themes-extras <br />
customizepkg 0.2.1-3<br />
gnome-themes-extras 2.22.0-3<br />
# pacman -Si customizepkg gnome-themes-extras <br />
error: package 'customizepkg' was not found<br />
error: package 'gnome-themes-extras' was not found<br />
# yaourt -S customizepkg gnome-themes-extras <br />
error: target not found: gnome-themes-extras<br />
error: target not found: customizepkg<br />
</nowiki>}}<br />
<br />
:::::::I was running the scripts with the date command to check the speed and I repeated the commands as user and root several times, to ensure that both user/root work equal and to ensure that nothing in the AUR changed after running one script and before running the other script.-- [[User:Ralf mardorf|Ralf mardorf]] ([[User talk:Ralf mardorf|talk]]) 16:50, 22 March 2016 (UTC)<br />
<br />
== History ==<br />
<br />
This section seems slightly ambiguous? The phrase "AUR maintainers are still referred to as TUs" doesn't make it clear (to me at least) that it means the running of the repo itself rather than maintainers of individual packages in the AUR which can be anyone, having no automatic 'trust' at all. The description provided in [https://wiki.archlinux.org/index.php/Official_repositories#Historical_background Official_repositories#Historical_background] seems to have a good description of how the AUR relates to the supported Arch repos.<br />
This page is given to people very regularly, so it's quite important to make sure they get clear information. [[User:D garbage|D garbage]] ([[User talk:D garbage|talk]]) 18:29, 1 April 2016 (UTC)<br />
<br />
:What wording do you propose to avoid ambiguity? Anyway that whole section feels a bit confusing and incomplete to me, we're not very good/consistent at defining the relation between TUs, AUR, community etc.; besides [[Official_repositories#Historical_background]], the information is scattered at least among [[Arch_User_Repository#What_is_a_Trusted_User_.2F_TU.3F]], [[Arch_terminology#TU.2C_Trusted_User]], [[Trusted Users]] and [[AUR Trusted User Guidelines]]. — [[User:Kynikos|Kynikos]] ([[User talk:Kynikos|talk]]) 03:33, 3 April 2016 (UTC)<br />
<br />
== <s>Cloning a "new" package with the name of an old one might download an old package?</s> ==<br />
<br />
This sounds like a problem that could be fixed by changing how deletion requests in AUR are handled:<br />
<br />
"When a package on the AUR is deleted, the git repository is not deleted so it is possible for a deleted package's repository to not be empty when cloned if someone is creating a package with the same name."<br />
<br />
Why not push a commit that deletes all files when an AUR deletion request is fulfilled? [[User:Quequotion|quequotion]] ([[User talk:Quequotion|talk]]) 03:54, 17 November 2016 (UTC)<br />
<br />
:It's not a problem for anybody. Not that it's used regularly, but it provides an easy way to ''undelete'' the package. In any case, this should be discussed with the developers, e.g. on the mailing list. -- [[User:Lahwaacz|Lahwaacz]] ([[User talk:Lahwaacz|talk]]) 08:58, 17 November 2016 (UTC)<br />
<br />
::It would still be possible to ''undelete'' a package by checking the git log and pulling the last commit before deletion. The only question, really, is which process you'd rather complicate: (unwittingly) creating a new package with the same name as an old pakage, or ''undeleting'' a package that was previously deleted. [[User:Quequotion|quequotion]] ([[User talk:Quequotion|talk]]) 15:30, 17 November 2016 (UTC)<br />
<br />
:::How often do people create a package with a name that has already been used in the past, but different content? Existing files in the repo might actually prevent them from reinventing the wheel.<br />
:::As I said, bring this up to the developers on the mailing list if you want this to lead anywhere.<br />
:::-- [[User:Lahwaacz|Lahwaacz]] ([[User talk:Lahwaacz|talk]]) 15:45, 17 November 2016 (UTC)<br />
<br />
== SSH command lines ==<br />
<br />
the actual implementation of AUR allow to use ssh and internal options to do headless activity on the aur included but not limited to search, update, dissown, adopt etc.; but nothing of this is even mentioned beyond the "aur now use git over ssh" in the page, so someone could add the apropiate way to access this options correctly? I tried but later I drop the draft since I'm not sure at all on what say exactly also poor english. 03:05, 13 March 2017 (UTC)</div>
Jristz
https://wiki.archlinux.org/index.php?title=Talk:Xorg&diff=431773
Talk:Xorg
2016-04-19T05:42:03Z
<p>Jristz: /* Setting DPI manually */ Readability of my comment.</p>
<hr />
<div>== Setting DPI manually ==<br />
<br />
I'm not an Archlinux user, but Google sends me to this Wiki often. As a non-user, I cannot confirm this error on Archlinux unless I find time to learn how to install it. That's unlikely to happen in the foreseeable future.<br />
<br />
The example 'Option "DPI" "96 x 96"' is invalid, because 96 x 96 is forced by the Xorg Xserver to start with as default to match Mac and Windows.<br />
<br />
Unless the Archlinux X servers are different from other distros I've used, Option "DPI" "120 x 120" and others (144, 192, 108, etc) AFAICT only work for users of proprietary NVidia drivers, fail for certain on MGA (e.g. G400), Intel (e.g. 810, 845, 865, 915, 945, 3000, 4000), Radeon (e.g. rv200, rv250, rv380) & Nouveau (e.g. nv11, G84) on openSUSE 12.2, openSUSE 13.1, Fedora 20 and Mageia 4. I've been using Xorg for many many years and have never yet found any version in which this option is valid using any of the 4 FOSS drivers indicated. [[User:Mrmazda|Mrmazda]] ([[User talk:Mrmazda|talk]]) 05:25, 10 December 2013 (UTC)<br />
<br />
:As you probably noticed, [[Xorg#Display_size_and_DPI]] is marked as inaccurate with links to several bug reports about Xorg forcing 96x96. Part of Arch's philosophy is to avoid patching of packages whenever possible, but I see that {{Pkg|xorg-server}} uses several patches (see [https://projects.archlinux.org/svntogit/packages.git/tree/trunk?h=packages/xorg-server]). I don't know which patches other distros use, but this option is not likely to depend on the patches.<br />
:Anyway, if you know a functioning method of manually setting DPI, feel free to share it - even a link to external documentation might be better than the current inaccurate information.<br />
:-- [[User:Lahwaacz|Lahwaacz]] ([[User talk:Lahwaacz|talk]]) 07:34, 10 December 2013 (UTC)<br />
<br />
::As help situations arise I point people to my http://fm.no-ip.com/Share/DisplaySize which is mostly a lookup table designed to avoid need to calculate values for DisplaySize that will produce a desired DPI. DisplaySize in 'Section "Monitor"' has been reliable long-term with non-broken drivers, but since KScreen was released last summer, a workaround is required to get xorg.conf* to be obeyed at all by KDE. According to [https://bugs.kde.org/show_bug.cgi?id=317929#c13 Alex Fiestas, KScreen 1.1 is proposed to allow xorg.conf* to be obeyed by default on single display systems]. The workaround is to put [Module-kscreen]\nautoload=false in kdmrc. Whether other DEs have similar obstacles I have no idea. It would really be nice for those only wishing to force the hardware native DPI instead of an arbitrary one (which is usually what 96 is) for https://bugs.freedesktop.org/show_bug.cgi?id=41115 to be fixed, which means letting the server automatically as it already knows how make logical and physical DPI match. http://www.gentoo-wiki.info/HOWTO_Set_DPI_Dots_Per_Inch is one place that shows how to perform the calculations.<br />
<br />
::"To reduce scaling artifacts to GUI that use bitmaps" is not the only reason to choose +25% steps (96, 120, 144, 168, 192...). Most scalable fonts are tuned to 96 DPI, and step from pixel size to pixel size best at specific steps, of which +25% are the best. [[User:Mrmazda|Mrmazda]] ([[User talk:Mrmazda|talk]])<br />
<br />
:I question the validity of the claim that Xorg always sets the DPI to 96 mainly because of this issue: https://bbs.archlinux.org/viewtopic.php?id=197624. Quite a lot of people are having problems with the latest versions of Chromium because Xorg is ''not'' automatically setting the DPI to 96, and Chromium is now high-DPI-sensitive. The result is really bad font and bitmap scaling on most webpages. {{unsigned|20:17, 5 June 2015|Silverhammermba}}<br />
<br />
:Having fought this problem with a gen4 Intel laptop---1280x800@14.1in LVDS---over the last two days, I reread the man page and found the newish option "ReprobeOutputs". After enabling, the driver correctly detects the panel geometry and size for slightly rectangular pixels and DPI higher than 96x96. This suggests that udev's hardware probing is failing to detect the real hardware configuration or Xorg server is failing to process the information correctly. Unfortunately neither the ati not nv drivers allow for direct reading of the EDID information and you are left to resort to the kind of monitor configuration hackery mentioned above. [[User:Vorbote|Vorbote]] ([[User talk:Vorbote|talk]]) 14:17, 7 October 2015 (UTC)<br />
<br />
I did some experiments in my Radeon HD6310 and discover somethings... lets start:<br />
* efectively, set the dpi in the xorg file is meaningless, as is ignored<br />
* set the CORRECT size for you screen, the size taked manually with rule and seting the correct resolution (if not detected) WILL affect the Xorg dpi.<br />
My monitor is 1366x768 with 309x174 millimeters, those were measured either with software and with my oun measuring rule here in RL, then I set them in Xorg and then the dpi change from 96x96 to 112x112. I use this page to help me: https://www.sven.de/dpi/ 05:40, 19 April 2016 (UTC)<br />
<br />
== Add xhost si:localuser:$USER ? ==<br />
<br />
Access to the X server is usually regulated via the hostname, so if it changes unexpectedly (e.g. see [https://bbs.archlinux.org/viewtopic.php?id=202704 BBS#202704], [[Connman#Avoid_changing_the_hostname]]), things stop working. The user name is (or should be) less prone to change, so you could use {{Pkg|xorg-xhost}} for access:<br />
<br />
$ xhost si:localuser:$USER<br />
<br />
man Xsecurity says on this:<br />
<br />
localuser & localgroup<br />
On systems which can determine in a secure fashion the credentials of a client process,<br />
the "localuser" and "localgroup" authentication methods provide access based on those<br />
credentials. The format of the values provided is platform specific. For POSIX & UNIX<br />
platforms, if the value starts with the character '#', the rest of the string is treated<br />
as a decimal uid or gid, otherwise the string is defined as a user name or group name.<br />
<br />
If your system supports this method and you use it, be warned that some programs that<br />
proxy connections and are setuid or setgid may get authenticated as the uid or gid of<br />
the proxy process. For instance, some versions of ssh will be authenticated as the user<br />
root, no matter what user is running the ssh client, so on systems with such software,<br />
adding access for localuser:root may allow wider access than intended to the X display.<br />
<br />
However, X apps failing is the symptom; the cause lies in [[Network configuration]], or an issue with the (static) [[hostname]] not being respected. So I'm not sure where to mention this, if at all. One way would be to expand [[Xhost]] and add a link there under [[Xorg#Troubleshooting]]. -- [[User:Alad|Alad]] ([[User talk:Alad|talk]]) 17:51, 21 September 2015 (UTC)<br />
<br />
: For what it's worth using xhost is probably prefered (for example GDM does this) as xauth was mostly used in an era when hostname changing was very rare. I'm now using xhost instead of maintaining xauth along with the accompanying xauthority file which reduces quite a few dependencies on my end.<br />
<br />
: As for where this should go? I have no idea. [[User:Earnest|Earnest]] ([[User talk:Earnest|talk]]) 23:54, 13 March 2016 (UTC)</div>
Jristz
https://wiki.archlinux.org/index.php?title=Talk:Xorg&diff=431772
Talk:Xorg
2016-04-19T05:41:05Z
<p>Jristz: /* Setting DPI manually */ info using a real experiment, maybe is time to review that part.</p>
<hr />
<div>== Setting DPI manually ==<br />
<br />
I'm not an Archlinux user, but Google sends me to this Wiki often. As a non-user, I cannot confirm this error on Archlinux unless I find time to learn how to install it. That's unlikely to happen in the foreseeable future.<br />
<br />
The example 'Option "DPI" "96 x 96"' is invalid, because 96 x 96 is forced by the Xorg Xserver to start with as default to match Mac and Windows.<br />
<br />
Unless the Archlinux X servers are different from other distros I've used, Option "DPI" "120 x 120" and others (144, 192, 108, etc) AFAICT only work for users of proprietary NVidia drivers, fail for certain on MGA (e.g. G400), Intel (e.g. 810, 845, 865, 915, 945, 3000, 4000), Radeon (e.g. rv200, rv250, rv380) & Nouveau (e.g. nv11, G84) on openSUSE 12.2, openSUSE 13.1, Fedora 20 and Mageia 4. I've been using Xorg for many many years and have never yet found any version in which this option is valid using any of the 4 FOSS drivers indicated. [[User:Mrmazda|Mrmazda]] ([[User talk:Mrmazda|talk]]) 05:25, 10 December 2013 (UTC)<br />
<br />
:As you probably noticed, [[Xorg#Display_size_and_DPI]] is marked as inaccurate with links to several bug reports about Xorg forcing 96x96. Part of Arch's philosophy is to avoid patching of packages whenever possible, but I see that {{Pkg|xorg-server}} uses several patches (see [https://projects.archlinux.org/svntogit/packages.git/tree/trunk?h=packages/xorg-server]). I don't know which patches other distros use, but this option is not likely to depend on the patches.<br />
:Anyway, if you know a functioning method of manually setting DPI, feel free to share it - even a link to external documentation might be better than the current inaccurate information.<br />
:-- [[User:Lahwaacz|Lahwaacz]] ([[User talk:Lahwaacz|talk]]) 07:34, 10 December 2013 (UTC)<br />
<br />
::As help situations arise I point people to my http://fm.no-ip.com/Share/DisplaySize which is mostly a lookup table designed to avoid need to calculate values for DisplaySize that will produce a desired DPI. DisplaySize in 'Section "Monitor"' has been reliable long-term with non-broken drivers, but since KScreen was released last summer, a workaround is required to get xorg.conf* to be obeyed at all by KDE. According to [https://bugs.kde.org/show_bug.cgi?id=317929#c13 Alex Fiestas, KScreen 1.1 is proposed to allow xorg.conf* to be obeyed by default on single display systems]. The workaround is to put [Module-kscreen]\nautoload=false in kdmrc. Whether other DEs have similar obstacles I have no idea. It would really be nice for those only wishing to force the hardware native DPI instead of an arbitrary one (which is usually what 96 is) for https://bugs.freedesktop.org/show_bug.cgi?id=41115 to be fixed, which means letting the server automatically as it already knows how make logical and physical DPI match. http://www.gentoo-wiki.info/HOWTO_Set_DPI_Dots_Per_Inch is one place that shows how to perform the calculations.<br />
<br />
::"To reduce scaling artifacts to GUI that use bitmaps" is not the only reason to choose +25% steps (96, 120, 144, 168, 192...). Most scalable fonts are tuned to 96 DPI, and step from pixel size to pixel size best at specific steps, of which +25% are the best. [[User:Mrmazda|Mrmazda]] ([[User talk:Mrmazda|talk]])<br />
<br />
:I question the validity of the claim that Xorg always sets the DPI to 96 mainly because of this issue: https://bbs.archlinux.org/viewtopic.php?id=197624. Quite a lot of people are having problems with the latest versions of Chromium because Xorg is ''not'' automatically setting the DPI to 96, and Chromium is now high-DPI-sensitive. The result is really bad font and bitmap scaling on most webpages. {{unsigned|20:17, 5 June 2015|Silverhammermba}}<br />
<br />
:Having fought this problem with a gen4 Intel laptop---1280x800@14.1in LVDS---over the last two days, I reread the man page and found the newish option "ReprobeOutputs". After enabling, the driver correctly detects the panel geometry and size for slightly rectangular pixels and DPI higher than 96x96. This suggests that udev's hardware probing is failing to detect the real hardware configuration or Xorg server is failing to process the information correctly. Unfortunately neither the ati not nv drivers allow for direct reading of the EDID information and you are left to resort to the kind of monitor configuration hackery mentioned above. [[User:Vorbote|Vorbote]] ([[User talk:Vorbote|talk]]) 14:17, 7 October 2015 (UTC)<br />
<br />
I did some experiments in my Radeon HD6310 and discover somethings... lets start:<br />
* efectively, set the dpi in the xorg file is meaningless, as is ignored<br />
* set the CORRECT size for you screen, the size taked manually with rule and seting the correct resolution (if not detected) WILL affect the Xorg dpi. My monitor is 1366x768 with 309x174 millimeters, those were measured either with software and with my oun measuring rule here in RL, then I set them in Xorg and then the dpi change from 96x96 to 112x112. I use this page to help me: https://www.sven.de/dpi/ 05:40, 19 April 2016 (UTC)<br />
<br />
== Add xhost si:localuser:$USER ? ==<br />
<br />
Access to the X server is usually regulated via the hostname, so if it changes unexpectedly (e.g. see [https://bbs.archlinux.org/viewtopic.php?id=202704 BBS#202704], [[Connman#Avoid_changing_the_hostname]]), things stop working. The user name is (or should be) less prone to change, so you could use {{Pkg|xorg-xhost}} for access:<br />
<br />
$ xhost si:localuser:$USER<br />
<br />
man Xsecurity says on this:<br />
<br />
localuser & localgroup<br />
On systems which can determine in a secure fashion the credentials of a client process,<br />
the "localuser" and "localgroup" authentication methods provide access based on those<br />
credentials. The format of the values provided is platform specific. For POSIX & UNIX<br />
platforms, if the value starts with the character '#', the rest of the string is treated<br />
as a decimal uid or gid, otherwise the string is defined as a user name or group name.<br />
<br />
If your system supports this method and you use it, be warned that some programs that<br />
proxy connections and are setuid or setgid may get authenticated as the uid or gid of<br />
the proxy process. For instance, some versions of ssh will be authenticated as the user<br />
root, no matter what user is running the ssh client, so on systems with such software,<br />
adding access for localuser:root may allow wider access than intended to the X display.<br />
<br />
However, X apps failing is the symptom; the cause lies in [[Network configuration]], or an issue with the (static) [[hostname]] not being respected. So I'm not sure where to mention this, if at all. One way would be to expand [[Xhost]] and add a link there under [[Xorg#Troubleshooting]]. -- [[User:Alad|Alad]] ([[User talk:Alad|talk]]) 17:51, 21 September 2015 (UTC)<br />
<br />
: For what it's worth using xhost is probably prefered (for example GDM does this) as xauth was mostly used in an era when hostname changing was very rare. I'm now using xhost instead of maintaining xauth along with the accompanying xauthority file which reduces quite a few dependencies on my end.<br />
<br />
: As for where this should go? I have no idea. [[User:Earnest|Earnest]] ([[User talk:Earnest|talk]]) 23:54, 13 March 2016 (UTC)</div>
Jristz
https://wiki.archlinux.org/index.php?title=Talk:ZFS_on_FUSE&diff=403702
Talk:ZFS on FUSE
2015-10-07T21:02:53Z
<p>Jristz: /* Old package, old rc.conf */ we need outdate flag in this article</p>
<hr />
<div>== Old package, old rc.conf ==<br />
<br />
Be aware that this package is still using systemv init scripts. Someone should provide a systemd unit.<br />
By the way I do not see much love upstream ([http://gitweb.zfs-fuse.net/] [http://zfs-fuse.sehe.nl/?p=sehe/.git;a=summary]), so IMVHO this page might be deleted as the software zfs on fuse is not updatable to Arch Wiki standard and this page could lead to confusion. -- [[User:Flu|Flu]] ([[User talk:Flu|talk]]) 15:05, 8 September 2013 (UTC)<br />
::I would add a outdated flag to the article, arch wiki shall not delete usefull info and This article is usefull just need update to systemd and newer technologies. 21:02, 7 October 2015 (UTC)</div>
Jristz
https://wiki.archlinux.org/index.php?title=Arch_User_Repository_(Espa%C3%B1ol)&diff=390528
Arch User Repository (Español)
2015-08-08T19:47:44Z
<p>Jristz: Outdate, for now even comparing the english and this you notice many differents and not existant sections , also use some names where the AUR webpage use other names for the same thing.</p>
<hr />
<div>[[Category:Arch User Repository (Español)]]<br />
[[Category:Package development (Español)]]<br />
[[Category:Package management (Español)]]<br />
[[ar:Arch User Repository]]<br />
[[cs:Arch User Repository]]<br />
[[da:Arch User Repository]]<br />
[[de:Arch User Repository]]<br />
[[el:Arch User Repository]]<br />
[[en:Arch User Repository]]<br />
[[fi:AUR]]<br />
[[fr:AUR]]<br />
[[it:Arch User Repository]]<br />
[[ja:Arch User Repository]]<br />
[[nl:Arch User Repository]]<br />
[[pl:Arch User Repository]]<br />
[[pt:Arch User Repository]]<br />
[[ro:AUR]]<br />
[[ru:Arch User Repository]]<br />
[[sr:Arch User Repository]]<br />
[[tr:Arch Kullanıcı Deposu]]<br />
[[uk:Arch User Repository]]<br />
[[zh-CN:Arch User Repository]]<br />
[[zh-TW:Arch User Repository]]<br />
{{Related articles start (Español)}}<br />
{{Related|AUR helpers}}<br />
{{Related|AurJson}}<br />
{{Related|AUR Trusted User Guidelines}}<br />
{{Related|PKGBUILD}}<br />
{{Related|makepkg}}<br />
{{Related|pacman (Español)}}<br />
{{Related|Official Repositories (Español)}}<br />
{{Related|Arch Build System (Español)}}<br />
{{Related articles end}}<br />
<br />
{{template:Out of date}}<br />
Arch User Repository (AUR) es un repositorio promovido por los usuarios de la comunidad de Arch. Este contiene descripciones de los paquetes ([[PKGBUILD]]) que le permiten compilar un paquete desde el código fuente con [[makepkg]] y luego instalarlo a través de [[pacman (Español)|pacman]]. AUR fue creado para organizar y compartir paquetes nuevos de la comunidad y ayudar a acelerar la inclusión de los paquetes más populares en el repositorio [[#.5Bcommunity.5D|[community]]]. Este documento explica cómo los usuarios pueden acceder y utilizar AUR.<br />
<br />
Un buen número de paquetes nuevos que entran en los repositorios oficiales tienen su origen en AUR. En AUR, los usuarios pueden aportar sus propias compilaciones de paquetes (PKGBUILD y los archivos relacionados). La comunidad de AUR tiene la posibilidad de votar a favor o en contra de los paquetes de AUR. Si un paquete llega a ser lo suficientemente popular &mdash;siempre que tenga una licencia compatible y la técnica de un buen empaquetado&mdash; puede ser introducido en el repositorio [community] (directamente accesible por [[pacman (Español)|pacman]] o [[Arch Build System (Español)|abs]]).<br />
<br />
== Para empezar ==<br />
<br />
Los usuarios pueden buscar y descargar PKGBUILD desde la [https://aur.archlinux.org Interfaz Web de AUR]. Estos PKGBUILD se pueden compilar en paquetes instalables usando [[makepkg]], y luego instalarlos con pacman.<br />
<br />
* Asegúrese de que los paquetes del grupo {{Grp|base-devel}} están instalados ({{ic|pacman -S base-devel}}).<br />
* Léase el resto de este artículo para obtener más información que funciona como un breve tutorial sobre la instalación de los paquetes de AUR.<br />
* Visite la [https://aur.archlinux.org Interfaz Web de AUR] para obtener información sobre actualizaciones y otros eventos. Allí también encontrará estadísticas y una lista actualizada de los nuevos paquetes disponibles presentes en AUR.<br />
* Léase [[#FAQ]] para obtener respuestas a las preguntas más comunes.<br />
* Es posible mejorar la optimización ajustando {{ic|/etc/makepkg.conf}} para el procesador antes de crear paquetes desde AUR. Se puede obtener una mejora significativa en los tiempos de compilación en sistemas con procesadores multi-core ajustando la variable MAKEFLAGS. También se pueden habilitar optimizaciones para hardware específico en GCC a través de la variable CFLAGS. Véase [[makepkg.conf]] para obtener más información.<br />
<br />
== Historia ==<br />
<br />
Los siguientes instrumentos se listan con fines ilustrativos solamente. Desde entonces, han sido sustituidos por AUR y ya no están disponibles.<br />
<br />
Al principio, existía {{ic|<nowiki>ftp://ftp.archlinux.org/incoming</nowiki>}}, y se contribuía únicamente subiendo el PKGBUILD, los archivos adicionales necesarios y el mismo paquete compilado al servidor. El paquete y los archivos asociados se mantenían allí hasta que un [[Package Maintainer]] veía el programa y lo adoptaba.<br />
<br />
Posteriormente, surgieron los Trusted User Repositories (''«repositorios de usuarios de confianza»''). A algunas personas de la comunidad se les permitía alojar sus propios repositorios para que cualquiera los utilizase. AUR se amplió sobre esta base, con el objetivo de hacerlo más flexible y usable. De hecho, a los responsables de AUR todavía se les conoce como TUs (Trusted Users -''«Usuarios de Confianza»''-).<br />
<br />
== Buscar ==<br />
<br />
La interfaz web de AUR puede ser encontrada [https://aur.archlinux.org/ aquí], y una interfaz para el acceso a AUR mediante un script (por ejemplo) puede ser encontrada [https://aur.archlinux.org/rpc.php aquí].<br />
<br />
Las consultas de búsqueda de los nombre y descripciones de los paquetes utilizan un método similar al de MySQL. Esto permite el uso de criterios de búsquedas más flexibles (por ejemplo, pruebe a burcar por «tool%like%grep», en lugar de «tool like grep»). Si tiene que buscar una descripción que contiene «%», use el carácter de escape «\%».<br />
<br />
== Instalar paquetes ==<br />
<br />
La instalación de paquetes desde AUR es un proceso relativamente simple. En esencia consiste en:<br />
<br />
# Adquirir el tarball que contiene los [[PKGBUILD]] y posiblemente otros archivos necesarios.<br />
# Extraer el tarball (preferentemente en una carpeta reservada solo para las compilaciones de AUR) con {{ic|tar xzf foo.tar.gz}}.<br />
# Ejecutar {{ic|makepkg}} en el directorio donde se guardan los archivos ({{ic | makepkg -s}} resuelve automáticamente las dependencias con pacman). Esto descargará el código, lo compilará y lo empaquetará.<br />
# Buscar el archivo README en {{ic|src/}} el cual puede contener información adicional útil para el futuro.<br />
# Instalar el paquete resultante con [[pacman (Español)|pacman]]:<br />
<br />
: {{bc|# pacman -U /path/to/pkg.tar.xz}}<br />
<br />
Los [[AUR helpers]] añaden un acceso transparente para AUR. Los mismos varían en sus características, pero pueden facilitar la búsqueda, descarga, compilación e instalación de los PKGBUILD que se encuentran en AUR. Todos estos scripts se pueden encontrar en AUR.<br />
<br />
{{Nota|Nunca habrá un mecanismo ''oficial'' para la instalación del material precompilado de AUR. Por tanto, '''todos los usuarios deben estar familiarizados con el proceso de compilación.'''}}<br />
<br />
Lo que sigue es un ejemplo detallado de la instalación de un paquete llamado «foo».<br />
<br />
=== Prerrequisitos ===<br />
<br />
Primero, asegúrese de que las herramientas necesarias estén instaladas. El grupo de paquetes {{grp|base-devel}} debe ser suficiente; incluye {{pkg|make}} y otras herramientas necesarias para compilar desde el código fuente.<br />
<br />
{{Advertencia|Los paquetes disponibles en AUR asumen que tiene instalado el grupo {{grp|base-devel}}, por lo que los paquetes de AUR no listan los elementos de este grupo como dependencias, incluso si el paquete no se puede compilar sin ellos. Por tanto, asegúrese que este grupo está instalado para prevenir que arroje errores sobre fallo al compilar.}}<br />
<br />
# pacman -S base-devel<br />
<br />
A continuación, elija un directorio de compilación apropiado. Un directorio de compilación es simplemente una carpeta en la que se construirá el paquete o «se compilará», y puede ser cualquier carpeta. Un ejemplo de carpeta comúnmente utilizada es:<br />
<br />
~/builds<br />
<br />
o si se utiliza ABS ([[Arch Build System (Español)|Arch Build System]]):<br />
<br />
/var/abs/local<br />
<br />
Para obtener más información sobre ABS, léase el artículo sobre [[Arch Build System (Español)|Arch Build System]]. En el ejemplo que se sigue, la carpeta {{ic|~/builds}} será el directorio de compilación.<br />
<br />
=== Adquirir archivos compilados ===<br />
<br />
Localice el paquete en AUR. Esto se realiza utilizando la función de búsqueda (esto es, el recuadro de texto de la parte superior de la [https://aur.archlinux.org/ página principal de AUR]). Al pulsar sobre el nombre de la aplicación en la lista de búsqueda, nos llevará a una página de información sobre el paquete. Lea la descripción para confirmar que este es el paquete deseado, observe si el paquete ha sido actualizado y lea los comentarios.<br />
<br />
Descargue los archivos necesarios de compilación. Desde la página de información del paquete, descargue los archivos de compilación pulsando el «tarball» que aparece en el lado izquierdo, cerca del final de los detalles del paquete. Este archivo debe ser guardado en el directorio de compilación o una copia del archivo en dicho directorio después de la descarga. En este ejemplo, el archivo se llama «foo.tar.gz» (el formato estándar es ''nombredelpaquete''.tar.gz, si ha sido debidamente enviado).<br />
<br />
Otra posibilidad consistiría en descargar el archivo tar desde el terminal, cambiando los directorios al primer archivo de compilación:<br />
<br />
$ cd ~/builds<br />
$ curl -O <nowiki>https://aur.archlinux.org/packages/fo/foo/foo.tar.gz</nowiki><br />
<br />
=== Compilar el paquete ===<br />
<br />
Extraiga el tarball. Para ello, cambie el archivo a la carpeta de compilación, si no está ya allí y, una vez en dicho directorio, extraiga los archivos de compilación.<br />
<br />
$ cd ~/builds<br />
$ tar -xvzf foo.tar.gz<br />
<br />
Esto debería crear una nueva carpeta llamada «foo» en el directorio de compilación.<br />
<br />
{{Advertencia |'''Revise cuidadosamente todos los archivos.''' Ejecute la orden {{ic|cd}} para desplazarse a la carpeta (foo) recién creada y revise con cuidado el{{ic|PKGBUILD}} y cualquier archivo {{ic|.install}} para advertir órdenes maliciosas. Los {{ic|PKGBUILD}} son scripts de bash que contienen funciones para ser ejecutadas por {{ic|makepkg}}: estas funciones pueden contener ''cualquier'' orden válida o con la sintaxis que interpreta Bash, por lo que es totalmente posible que un {{ic|PKGBUILD}} pueda contener órdenes peligrosas introducidas por malicia o ignorancia del autor. Use {{ic|makepkg}} en un entorno fakeroot (y no lo ejecute nunca como root), lo cual le da un cierto nivel de protección, pero nunca se debe confiar del todo con ello. En caso de duda, no compile el paquete y consulte en los foros o listas de correo.}}<br />
<br />
$ cd foo<br />
$ nano PKGBUILD<br />
$ nano foo.install<br />
<br />
Construya el paquete. Después de confirmar manualmente la integridad de los archivos, ejecute [[makepkg]] como un usuario normal en el directorio de compilación.<br />
<br />
$ makepkg -s<br />
<br />
La opción {{ic|-s}} utilizará [[sudo]] para instalar eventuales dependencias. Si no se desea utilizar sudo, se deberá probar a instalar manualmente las dependencias de antemano y posteriormente ejecutar lar orden anterior, omitiendo la opción {{ic|-s}}.<br />
<br />
=== Instalar el paquete ===<br />
<br />
Instale el paquete con pacman. Un tarball bien creado debería mostrar un nombre siguiendo este esquema:<br />
<br />
<''application name''>-<''application version number''>-<''package revision number''>-<''architecture''>.pkg.tar.xz<br />
<br />
Este paquete puede ser instalado usando la orden «upgrade» de pacman:<br />
<br />
# pacman -U foo-0.1-1-i686.pkg.tar.xz <br />
<br />
Estos paquetes instalados manualmente se denominan paquetes foráneos (''«foreign packages»'') &mdash;es decir, aquellos paquetes que no se han originado desde cualquier repositorio conocido por pacman&mdash;. Para listar todos los paquetes foráneos, escriba:<br />
$ pacman -Qm <br />
<br />
{{Nota|El ejemplo anterior es solo un breve resumen del proceso de compilación de un paquete. Es recomendable una visita a los artículos sobre [[makepkg]] y [[Arch Build System (Español)| ABS]]. Estos artículos proporcionan más detalles y son muy útiles, sobre todo para los usuarios primerizos.}}<br />
<br />
== Feedback ==<br />
<br />
La [https://aur.archlinux.org Interfaz Web de AUR] facilita hacer comentarios que permite a los usuarios proporcionar sugerencias y feedback para contribuir a mejorar el PKGBUILD. Evite pegar parches o PKGBUILD en la sección de comentarios: se vuelven rápidamente obsoletos y acaban ocupando innecesariamente mucho espacio. En su lugar, envie los archivos al mantenedor, o incluso utilice un [[pastebin Clients|pastebin]].<br />
<br />
Una de las actividades más fáciles para ''todos'' los usuarios de Arch es navegar por AUR y '''votar''' por sus paquetes favoritos utilizando la interfaz web. Todos los paquetes son elegibles para ser adoptados por un TU para su inclusión en [community], y el recuento de votos es uno de los factores considerados en este proceso, ¡por lo que votar es un interés de todos!<br />
<br />
== Compartir y mantener los paquetes ==<br />
<br />
El usuario juega un papel esencial en AUR, por lo que no puede desplegar su potencial sin el apoyo, la participación y la contribución de la más amplia comunidad de usuarios. El ciclo de vida de un paquete de AUR comienza y termina con el usuario y requiere que el usuario contribuya de diversas maneras.<br />
<br />
Los usuarios pueden '''compartir''' los PKGBUILD a través de Arch User Repository. Este no contiene los paquetes binarios, pero permite a los usuarios subir sus PKGBUILD que pueden ser descargados por otros. Estos PKGBUILD no tienen ningún apoyo oficial y, por tanto, no se han investigado a fondo, por lo que se deben utilizar con cautela bajo el propio riesgo del usuario.<br />
<br />
=== Enviar paquetes ===<br />
<br />
Después de iniciar sesión en la interfaz web de AUR, un usuario puede [https://aur.archlinux.org/pkgsubmit.php enviar] un archivo *.tar comprimido con gzip ({{ic|.tar.gz}}) de un directorio que contiene archivos para compilar un paquete. El directorio, dentro del tarball, debe contener un [[PKGBUILD]], cualesquiera archivos {{ic|.install}}, parches, etc., ('''en ningún caso''' archivos binarios). Ejemplos de cómo debe ser la estructura de dicho directorio pueden ser encontrados en los directorios incluidos en {{ic|/var/abs}}, si [[Arch Build System (Español)|Arch Build System]] se ha instalado.<br />
<br />
El tarball se puede crear con la siguiente orden:<br />
<br />
$ makepkg --source <br />
<br />
Tenga en cuenta que se trata de un archivo .tar comprimido con gzip, de modo que, suponiendo que está subiendo un paquete llamado ''libfoo'', la creación del archivo comprimido debería dar como resultado algo similar a esto:<br />
<br />
{{hc|$ tar tf libfoo-0.1-1.src.tar.gz|<br />
libfoo/<br />
libfoo/PKGBUILD<br />
libfoo/libfoo.install}}<br />
<br />
Al enviar un paquete, observe las siguientes reglas:<br />
<br />
* Marque la casilla [https://www.archlinux.org/packages/ package database] para el paquete. Si existe, '''no''' envie el paquete. Si el paquete actual está roto o falta alguna función incluida, es preferible enviar un [https://bugs.archlinux.org/ informe de errores].<br />
* Compruebe AUR para el paquete. Si es mantenido actualmente, los cambios se pueden enviar en un comentario para la atención del mantenedor. Si está desatendido, el paquete puede ser adoptado y actualizado, según sea necesario. No cree paquetes duplicados.<br />
* Verifique cuidadosamente que lo que se está cargando es correcto. Todos los participantes deben leer y seguir las [[Arch packaging standards|normas de empaquetado de Arch]] al escribir PKGBUILD. Esto es esencial para el buen funcionamiento y el éxito general de AUR. Recuerde que no va a ganar ningún crédito o respeto de sus compañeros por perder el tiempo con un PKGBUILD malo.<br />
* Los paquetes que contengan binarios o que estén mal escritos pueden ser borrados sin previo aviso.<br />
* Si no está seguro sobre el paquete (o el proceso de compilación/envío) de ninguna manera, presente el PKGBUILD a la [https://mailman.archlinux.org/mailman/listinfo/ Lista de Correo de AUR] o en las [https://bbs.archlinux.org/viewforum.php?id=4 Tablas de AUR] del fórum público para su revisión antes de añadirlo a AUR.<br />
*Asegúrese de que el paquete es útil. ¿Alguien más quiere utilizar este paquete? ¿Es sumamente especializado? Si no hay más que unas cuantas personas que encontrarán este paquete útil, no es apropiado para su presentación.<br />
* Los repositorios AUR y oficiales están diseñados para paquetes que instalan generalmente software y contenido relacionado con el software, incluyendo uno o más de los siguientes: archivo(s) ejecutable, archivo(s) de configuración, documentación en línea o fuera de línea para un software, en particular, o para la distribución Arch Linux, en general; archivos multimedia destinados a ser utilizados directamente por el software.<br />
* Obtenga un poco de experiencia antes de enviar los paquetes. Compile algunos paquetes para conocer el proceso y luego enviarlos.<br />
* Si se presenta un {{ic|package.tar.gz}} con un archivo llamado «{{ic|package}}» obtendrá el siguiente error: «Could not change to directory {{ic|/home/aur/unsupported/package/package}}». Para resolver este problema, cambie el nombre del archivo llamado «{{ic|package}}» con otro nombre, por ejemplo, «{{ic|package.rc}}». Cuando se instale en el directorio {{ic|pkg}} puede cambiar su nombre de nuevo a «{{ic|package}}». Léase también [[Arch packaging standards#Submitting packages to the AUR]].<br />
<br />
=== Mantener los paquetes ===<br />
<br />
* Si se mantiene un paquete y desea actualizar el PKGBUILD para el mismo, basta con reenviarlo.<br />
* Compruebe si hay feedback y comentarios de otros usuarios y trate de incorporar las mejoras que le sugieren, ¡considere que es un proceso de aprendizaje!<br />
* Por favor, no presente un paquete, para luego olvidarse de él. El trabajo del mantenedor es mantener el paquete, buscando las actualizaciones y las mejoras del PKGBUILD.<br />
* Si no desea seguir manteniendo el paquete, por alguna razón, etiquete el paquete como {{ic|disown}} a través de la interfaz web de AUR y/o envie un mensaje a la lista de correos de AUR.<br />
<br />
=== Otras solicitudes ===<br />
<br />
* La peticiones de abandono y de eliminación deben ir a la lista de correos general de aur, para que puedan tomar una decisión los TU y los demás usuarios.<br />
*'''Incluya el nombre del paquete y la dirección URL a la página de AUR''', preferiblemente con una nota al pie [1].<br />
* Las solicitudes de abandono se concederán dos semanas después de que el mantenedor actual haya sido contactado por correo electrónico y no se haya obtenido respuesta.<br />
*'''El renombre de paquetes no es ahora implementado''', los usuarios tienen ahora que reenviar el paquete con un nombre nuevo y solicitar el renombre de los comentarios de la versión antigua y de los votos a la lista de correos.<br />
* Las peticiones de eliminación requieren la siguiente información:<br />
** Nombre del paquete y la dirección URL a la página AUR<br />
** Razón para su eliminación, al menos una breve nota <br> '''Aviso:''' Los comentarios de un paquete, no son razón suficiente para señalar un paquete para su eliminación. Porque tan pronto como TU toma medidas, el único lugar donde se puede obtener esa información es la lista de correo general de aur.<br />
** Incluir detalles de información, como cuando un paquete es proporcionado por otro paquete, si es el mismo mantenedor, si se ha cambiado el nombre y el propietario original está de acuerdo, etc.<br />
<br />
Las solicitudes de abandono pueden ser rechazadas, en cuyo caso es probable que se avise del abandono del paquete para referencias futuras del empaquetador.<br />
<br />
== [community] ==<br />
<br />
El repositorio [community], mantenido por los [[Trusted Users]], contiene los paquetes más populares de AUR. Está habilitado de forma predeterminada en {{ic|/etc/pacman.conf}}. Si [community] se ha deshabilitado o eliminado, se puede activar descomentándolo, o añadiendo estas dos líneas, respectivamente:<br />
<br />
{{hc|/etc/pacman.conf|2=<br />
...<br />
[community]<br />
Include = /etc/pacman.d/mirrorlist<br />
...}}<br />
<br />
Este depósito, a diferencia de AUR, contiene paquetes binarios que se pueden instalar directamente con [[pacman (Español)|pacman]] y a los archivos de compilación también se puede acceder con [[Arch Build System (Español)|ABS.]] Algunos de estos paquetes pueden eventualmente pasar a los repositorios [core] o [extra], cuando los desarrolladores los consideran cruciales para la distribución.<br />
<br />
Los usuarios también pueden acceder a los archivos de compilación de [community] editando {{ic|/etc/abs.conf}} y habilitando al repositorio [community] en la matriz {{ic|REPOS}}.<br />
<br />
== Repositorio Git ==<br />
<br />
Un repositorio git de AUR es mantenido por Thomas Dziedzic proporcionando paquete históricos, entre otras cosas. Se actualiza, al menos, una vez al día. Para clonar el repositorio (varios cientos de MB):<br />
<br />
$ git clone <nowiki>git://pkgbuild.com/aur-mirror.git</nowiki><br />
<br />
Más información: [http://pkgbuild.com/git/aur-mirror.git/ Interfaz Web], [http://pkgbuild.com/~td123/readme readme], [https://bbs.archlinux.org/viewtopic.php?id=113099 hilo del fórum].<br />
<br />
== FAQ ==<br />
<br />
=== ¿Que es AUR? ===<br />
<br />
AUR (Arch User Repository) es el lugar donde la comunidad de Arch Linux puede subir los [[PKGBUILD]] de las aplicaciones, bibliotecas, etc., y compartirlos con el resto de la comunidad. Los demás usuarios pueden votar para que sus favoritos entren en el repositorio [community] de modo que puedan ser instalados en Arch Linux en formato binario.<br />
<br />
=== ¿Qué tipo de paquetes se permiten en AUR? ===<br />
<br />
Los paquetes en AUR no son más que «scripts de compilación», es decir, instrucciones para construir los binarios que pueden ser manejados por pacman. Para la mayor parte de los casos, no hay limitaciones, siempre y cuando se ajusten a las directrices de la utilidad antes mencionada y a los términos de licencia del contenido. En otros casos, cuando se menciona que «no se puede vincular» a las descargas, como cuando los contenidos no son redistribuibles, solo se podrá hacer uso del mismo nombre del archivo como la fuente. Esto significa y requiere que los usuarios deben tener ya la fuente en el directorio de compilación antes de iniciar el proceso de construcción del paquete. En caso de duda, pregunte.<br />
<br />
=== ¿Cómo puedo votar por los paquetes en AUR? ===<br />
<br />
Inscríbase en el [https://aur.archlinux.org/ sitio web de AUR] para tener acceso a la opción "Vote for this package" («Vote por este paquete») mientras explora los paquetes.<br />
<br />
=== ¿Qué es un TU? ===<br />
<br />
Un [[AUR Trusted User Guidelines|TU (Trusted User)]] es una persona encargada de supervisar el repositorio AUR y el repositorio [community]. Ellos son los que colocan los paquetes más votados en el repositorio [community], marcan los PKGBUILDs como seguros y mantienen AUR.<br />
<br />
=== ¿Cuál es la diferencia entre Arch User Repository y [community]? ===<br />
<br />
Arch User Repository contiene todos los PKGBUILD que los usuarios envían; para instalarlos tiene que construirlos manualmente con [[makepkg]]. Cuando un PKGBUILD obtiene suficientes votos, pasa al repositorio [community], donde los TUs lo mantienen y puede instalarse como binario directamente con [[pacman (Español)|pacman]].<br />
<br />
=== ¿Cuántos votos necesita un PKGBUILD para llegar a [community]? ===<br />
<br />
Por lo general, son necesarios, al menos, 10 votos para que algo se mueva al repositorio [community]. Sin embargo, si un TU quiere apoyar un paquete, se suele pasar dicho paquete al repositorio.<br />
<br />
=== ¿Cómo hacer un PKGBUILD? ===<br />
<br />
Lo mejor es mirar [[Creating packages]]. Recuerde mirar en AUR antes de crear el PKGBUILD para no duplicar los esfuerzos.<br />
<br />
=== No me funciona «pacman -S foo», aunque sé que el paquete «foo» está en [community] ===<br />
<br />
Probablemente no ha activado el repositorio [community] en el archivo {{ic|/etc/pacman.conf}}. Basta con descomentar las líneas relevantes.<br />
Si el repositorio [community] está habilitado en {{ic|/etc/pacman.conf}}, pruebe ejecutando primero {{ic|pacman -S -y}} para sincronizar el pkgcache, antes de intentar de nuevo instalar el paquete.<br />
<br />
=== Un paquete en AUR está desactualizado, ¿qué hago? ===<br />
<br />
Puede marcarlo como obsoleto. Si no se actualiza en un periodo de tiempo razonable, lo mejor es avisar a su mantenedor por email. Si el responsable no responde, puede comunicarlo a la lista de correo general de AUR, para que un TU (usuario de confianza) declare huérfano al PKGBUILD y pueda adoptarlo si desea mantenerlo él mismo. Cuando se trate de un paquete que lleva desactualizado más de 3 meses y, en general, no se actualiza desde hace mucho tiempo, por favor agregue esto en su solicitud de orfandad.<br />
<br />
=== Quiero enviar un PKGBUILD ¿podría alguien comprobar antes si tiene errores? ===<br />
<br />
Si quisiera recibir comentarios a tu PKGBUILD, envíelo a la lista de correo de AUR para que los TU y los otros miembros de AUR puedan orientarle para mejorarlo. Otro lugar donde puede encontrar ayuda es el [[ArchChannel|canal IRC]], #archlinux en irc.freenode.net. También puede usar [[namcap]] para depurar su PKGUILD y el pkg.tar.gz.<br />
<br />
=== Foo, que está en AUR, no me compila con makepkg, ¿qué hago? ===<br />
<br />
Probablemente está pasando por alto alguna cosa.<br />
<br />
# Ejecute {{ic|pacman -Syyu}} antes de compilar nada con {{ic | makepkg}} dado que el problema puede ser que el sistema no está al día.<br />
# Asegúrese de que tiene instalados tanto los grupos «base» como «base-devel».<br />
# Pruebe usando la opción «{{ic|-s}}» con {{ic|makepkg}} para comprobar e instalar todas las dependencias necesarias antes de comenzar el proceso de compilación.<br />
<br />
Asegúrese de leer primero el PKGBUILD y los comentarios en la página de AUR del paquete en cuestión.<br />
La razón puede no ser trivial después de todo. La personalización de CFLAGS, LDFLAGS y MAKEFLAGS puede causar fallos. También es posible que el PKGBUILD se rompe para todos. Si no puede resolverlo por su cuenta, simplemente informe al mantenedor, por ejemplo, mediante la publicación de los errores que está recibiendo en los comentarios de la página de AUR.<br />
<br />
=== ¿Cómo puedo acelerar los repetidos procesos de compilación? ===<br />
<br />
Si suele compilar del código que utiliza gcc &mdash;como por ejemplo, un paquete git o SVN&mdash;, puede encontrar útil utilizar [[ccache]], abreviatura de «compiler cache».<br />
<br />
=== ¿Cómo accedo a paquetes de Unsupported? ===<br />
<br />
Véase [[#Installing packages]]<br />
<br />
=== ¿Puedo subir archivos a AUR sin usar la interfaz web? ===<br />
<br />
Puede usar {{pkg|burp}}, ''aurploader'' ({{AUR|python3-aur}}) o {{AUR|aurup}} &mdash;se trata de programas de línea de órdenes&mdash;.</div>
Jristz
https://wiki.archlinux.org/index.php?title=Talk:Arch_User_Repository_(Espa%C3%B1ol)&diff=390527
Talk:Arch User Repository (Español)
2015-08-08T19:42:46Z
<p>Jristz: Created page with "== artículo completamente diferente == Si comparamos la versión en inglés, el artículo en español es completamente diferente, y además usa terminos en inglés que la pá..."</p>
<hr />
<div>== artículo completamente diferente ==<br />
Si comparamos la versión en inglés, el artículo en español es completamente diferente, y además usa terminos en inglés que la página web del AUR ya tiene traducidos.<br />
<br />
mientras no se actualice creo que es mejor poner la cabecera de desctualizado. [[user:Jristz|Jristz]] 19:42, 8 August 2015 (UTC)</div>
Jristz
https://wiki.archlinux.org/index.php?title=Talk:Arch_package_guidelines_(Espa%C3%B1ol)&diff=378617
Talk:Arch package guidelines (Español)
2015-06-14T23:03:04Z
<p>Jristz: Created page with "== Inconsistencia == La interfaz de AUR4.0 nombra a la seccion "submitting to AUR" como "Subir al AUR", no sería mejor cambiar el nombre en la wiki para tener consistencia? ~..."</p>
<hr />
<div>== Inconsistencia ==<br />
La interfaz de AUR4.0 nombra a la seccion "submitting to AUR" como "Subir al AUR", no sería mejor cambiar el nombre en la wiki para tener consistencia?<br />
[[user:Jristz|Jristz]] Traductor de la interfaz en español y coordinador y traductor de la interfaz en español latinoamericano.</div>
Jristz
https://wiki.archlinux.org/index.php?title=Talk:Arch_package_guidelines&diff=375094
Talk:Arch package guidelines
2015-05-25T21:00:07Z
<p>Jristz: /* /selinux */ new section</p>
<hr />
<div>== .install files ==<br />
<br />
Something more should be said about .install files. Mention that there are also examples in {{ic|/usr/share/pacman}} but it also needs some explanation on how they work. --[[User:Mauro2|Mauro2]] ([[User_talk:Mauro2|talk]]) 05:30, 15 October 2012 (UTC)<br />
<br />
== Fields order ==<br />
<br />
[[Arch_Packaging_Standards#Package_etiquette]] states: "It is common practice to preserve the order of the PKGBUILD fields as shown above." But this is not true. Common practice is to use {{ic|/usr/share/pacman/PKGBUILD.proto}} as a template, and the order of fields in that prototype has a far greater influence on packages in the wild than this page. This page should edited to reflect the current state of {{ic|PKGBUILD.proto}}. Perhaps this page should state: "It is common practice to order PKGBUILD fields so they match the order of fields in {{ic|PKGBUILD.proto}}. [[User:Ichimonji10|Ichimonji10]] ([[User talk:Ichimonji10|talk]]) 14:32, 19 October 2013 (UTC)<br />
<br />
== Punctuation in PKGBUILD ==<br />
What is the official guidance regarding ending a pkgdesc in a period or using commas and English prose punctuation in general?<br />
<br />
[[https://bbs.archlinux.org/viewtopic.php?pid=1288063 Link]] to discussion thread.<br />
<br />
[[User:Graysky|Graysky]] ([[User talk:Graysky|talk]]) 15:17, 14 June 2013 (UTC)<br />
<br />
==Package naming==<br />
* Package names should consist of '''alphanumeric characters only'''; all letters should be '''lowercase'''.<br />
:--unsigned<br />
<br />
::This is a guideline, but I see some packages with hypens and underscores (tesseract-data-chi_sim), dots (gstreamer0.10), plus (libxml++) and even at-signs (kde-l10n-ca@valencia). A package with uppercase name is libreoffice-bn-IN. According to the makepkg source, the allowed chars are: {{ic|[:alnum:]+_.@-}}. [[User:Lekensteyn|Lekensteyn]] ([[User talk:Lekensteyn|talk]]) 22:38, 1 February 2014 (UTC)<br />
<br />
:::"alphanumeric characters only" rule is ridiculous, 85% of official packages break this rule. I think it should be changed to allow hypens. It makes package names more readable. In regards to other characters, the + sign breaks [https://aur.archlinux.org/rpc.php AUR search] ([https://aur.archlinux.org/rpc.php?type=search&arg=a++ example], [https://aur.archlinux.org/rpc.php?type=search&arg=a%2B%2B should be escaped]). [[User:Axper|axper]] ([[User talk:Axper|talk]]) 11:19, 11 May 2014 (UTC)<br />
<br />
* Package names should NOT be suffixed with the upstream major release version number (e.g. we don't want libfoo2 if upstream calls it libfoo v2.3.4) in case the library and its dependencies are expected to be able to keep using the most recent library version with each respective upstream release. However, for some software or dependencies, this can not be assumed. In the past this has been especially true for widget toolkits such as GTK and Qt. Software that depends on such toolkits can usually not be trivially ported to a new major version. As such, in cases where software can not trivially keep rolling alongside its dependencies, package names should carry the major version suffix (e.g. gtk2, gtk3, qt4, qt5). For cases where most dependencies can keep rolling along the newest release but some can't (for instance closed source that needs libpng12 or similar), a deprecated version of that package might be called libfoo1 while the current version is just libfoo.<br />
:--unsigned<br />
<br />
* Package versions '''should be the same as the version released by the author'''. Versions can include letters if need be (eg, nmap's version is 2.54BETA32). '''Version tags may not include hyphens!''' Letters, numbers, and periods only.<br />
:--unsigned<br />
<br />
::This rule needs to get more stricter. Having a slash in the version breaks filenames. For craziness, I tried setting up a pkgver containing all characters from 0x01 to 0xff which makes makepkg throw a Bash syntax error. The current packages have versions matching {{ic}[[alnum:]._+~]+} (and a colon for epoch, a hypen for pkgrel). What about limiting to those characters? Debian has a similar set, see [https://www.debian.org/doc/debian-policy/ch-controlfields.html#s-f-Version their policy docs] [[User:Lekensteyn|Lekensteyn]] ([[User talk:Lekensteyn|talk]]) 22:38, 1 February 2014 (UTC)<br />
<br />
* Package releases are '''specific to Arch Linux packages'''. These allow users to differentiate between newer and older package builds. When a new package version is first released, the '''release count starts at 1'''. Then as fixes and optimizations are made, the package will be '''re-released''' to the Arch Linux public and the '''release number will increment'''. When a new version comes out, the release count resets to 1. Package release tags follow the '''same naming restrictions as version tags'''.<br />
:--unsigned<br />
<br />
== Is it acceptable for build() to start by removing directories? ==<br />
<br />
I just downloaded a PKGBUILD whose build() function begins with the following:<br />
<br />
find ./ -maxdepth 1 -mindepth 1 -type d -exec rm -r {} \;<br />
<br />
It seems to me that a PKGBUILD has no business doing this and that it is potentially dangerous. I admit that its danger will typically require people to do non-standard things and, arguably, things they would be better advised not to do anyway. But it still seems to me to invite trouble.<br />
<br />
I don't remember seeing this in a PKGBUILD before but I can't find anything definitely ruling it out.<br />
<br />
Is it acceptable for a build function to start by removing directories in this way? Is it safe?<br />
<br />
--[[User:Margali|cfr]] ([[User talk:Margali|talk]]) 03:03, 27 February 2014 (UTC)<br />
<br />
: I'd argue that this is an acceptable thing to do, at least in some cases. As an example, consider [http://www.talend.com/products/data-integration Talend Open Studio DI]: a single source file provides files for Windows, Linux, Mac OS, PowerPC (?) and Solaris. In response, the {{AUR|talend-open-studio-di}} PKGBUILD simply removes them. Does removing those files invite trouble? Yes. But removing files seems like an integral tool in the package maintainer's toolkit, and plenty of other weird stuff happens in PKGBUILDs too. [[User:Ichimonji10|Ichimonji10]] ([[User talk:Ichimonji10|talk]]) 02:20, 3 March 2014 (UTC)<br />
<br />
== Update "Submitting packages to the AUR" section ==<br />
<br />
The line<br />
<br />
> One can easily build a tarball containing all the required files by using '''makepkg --source'''. This makes a tarball named $pkgname-$pkgver-$pkgrel.src.tar.gz, which can then be uploaded to the AUR.<br />
<br />
in the "Submitting packages to the AUR" section on this page should be updated to refer to '''mkaurball''', which is now apparently required to build valid AUR source packages automatically.<br />
<br />
(Sorry, I am new to the ABS, so I won't change this page myself. I would probably miss something.)<br />
<br />
--[[User:Drawm|Drawm]] ([[User talk:Drawm|talk]]) 14:57, 27 August 2014 (UTC)<br />
<br />
:I would argue that the section should not even be here - there is already [[Arch User Repository#Submitting packages]], and "submitting packages to AUR" has little to do with the official packaging standards. -- [[User:Lahwaacz|Lahwaacz]] ([[User talk:Lahwaacz|talk]]) 15:14, 27 August 2014 (UTC)<br />
<br />
::You would argue correctly, although I haven't checked if there's something worth being merged. -- [[User:Kynikos|Kynikos]] ([[User talk:Kynikos|talk]]) 03:39, 28 August 2014 (UTC)<br />
<br />
::: I agree that this section needs to be edited or deleted, and I was going to do it myself, but don't see any "edit" buttons anywhere on the main page. Maybe this section should just provide the link to the correct information in [[Arch User Repository#Submitting packages]]. Whoever can edit this, it needs to be done because it gives incorrect information, which I and others have tried to follow only to be told by the AUR that it won't work. [[User:Colinkeenan|Colinkeenan]] ([[User talk:Colinkeenan|talk]]) 23:25, 28 September 2014 (UTC)<br />
<br />
::::You're right, I've just fixed it. However the two sections should really be merged, maybe keep the AUR rules here and the instructions in the [[AUR]] article? -- [[User:Kynikos|Kynikos]] ([[User talk:Kynikos|talk]]) 01:46, 29 September 2014 (UTC)<br />
<br />
== Custom variables are now substituted ==<br />
<br />
[[https://wiki.archlinux.org/index.php/Arch_packaging_standards#Package_etiquette]] says: "The AUR cannot detect the use of custom variables and so cannot use them in substitutions." This is no longer true, as the PKGBUILD is parsed by bash on the client in order to generate an .AURINFO file. Someone with edit privileges can safely remove this paragraph.<br />
-- Marcel-<br />
<br />
== /selinux ==<br />
<br />
Someone with privileges could edit the page and point that selinux itself and they needed packages could install in /selinux as an exception in the directory section.<br />
<br />
== AUR4 ==<br />
Someone with editing power could add info on what is need to upload packages to aur4.archlinux.org and aur 4.0.0 since the proposal is switch to aur 4.0 for july I don't want a over crowded of overreacted users screamming horrorified asking about that they can't find info on how upload packages to aur 4.0. and deleted accounts and packages.</div>
Jristz
https://wiki.archlinux.org/index.php?title=Arch_is_the_best&diff=365221
Arch is the best
2015-03-13T03:11:34Z
<p>Jristz: Try to correct Klingon and add mapudungun with all they writting system</p>
<hr />
<div>[[Category:About Arch]]<br />
[[Category:Programming language]]<br />
[[ja:Arch は最高]]<br />
[[ru:Arch_is_the_best]]<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 gives proof of Arch's superiority.<br />
<br />
== History ==<br />
<br />
The visionary project was originally devised in April 2008 by long time Arch community member [https://bbs.archlinux.org/profile.php?id=2529 lucke] as a simple shell script which provided irrefutable proof that "Arch is the best". It was announced to the world with a [https://bbs.archlinux.org/viewtopic.php?id=47306 forum post], thus illuminating other people's minds, who immediately started porting it to multiple different languages, both programming and verbal, so that every human being on the planet could fully appreciate and benefit from this revolutionary discovery.<br />
<br />
== Installation ==<br />
<br />
A sample PKGBUILD called {{AUR|archbest-mod1}} has been uploaded to [[AUR]].<br />
<br />
== The code ==<br />
<br />
The "Arch is the best" project is ported to many programming languages.<br />
<br />
<br />
'''1C:Enterprise 7.7/8/8.1/8.2''' — A procedural domain-specific compiled dynamically-typed programming language mostly similar to VisualBasic which is used in "1C:Enterprise" products widespread in Russia and other CIS countries.<br />
<br />
Предупреждение("Arch is the best!");<br />
<br />
<br />
'''Ada''' — A systems critical programming language.<br />
<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 />
'''APL''' — A Programming Language.<br />
<br />
'Arch is the best!'<br />
<br />
<br />
'''ATS''' — A functional programming language that uses dependent types to improve programs' reliability.<br />
<br />
implement main () = println! "Arch is the best!"<br />
<br />
<br />
'''Awk''' — A data-driven programming language designed for processing text-based data.<br />
<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 />
<br />
<v"Arch is the best!"0<br />
<,_@#:<br />
<br />
<br />
'''Boo''' — A stablished object oriented statically typed programming language for .NET and Mono with a python inspired syntax and a special focus on metaprogramming through language and compiler extensibility features such as macros and custom compilation pipelines.<br />
<br />
print "Arch is the best!"<br />
<br />
<br />
'''Bourne shell''' — The original program, should be compatible with any shell.<br />
<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 />
<br />
#!/bin/sh<br />
yes Arch is the best!<br />
<br />
<br />
'''Bourne shell (Dynamically updated)'''<br />
<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="Encodings"//;t;p;bd'|sed '/<i>.*<\/i>/d;s/<[^>]*>//g'|sed 'N;s/\n/: /;N;N;s/\n//g'<br />
</pre><br />
<br />
or<br />
<br />
<pre style='overflow:auto'><br />
#!/bin/bash<br />
curl -s "https://wiki.archlinux.org/index.php?title=Arch_is_the_best&action=raw" | sed -n '/==Translations==/,$p' | sed "s/^'''\(.*\)'''$/* \1:/;t;s/^[^=]/ &/"<br />
</pre><br />
<br />
<br />
'''brainfuck''' — Doesn't the language name explain it?<br />
<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 />
<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 />
<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 />
<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 />
'''COBOL''' — A simple, lightweight programming language.<br />
<br />
IDENTIFICATION DIVISION.<br />
PROGRAM-ID. TheBest.<br />
<br />
PROCEDURE DIVISION.<br />
DISPLAY "Arch is the best!".<br />
STOP RUN.<br />
<br />
<br />
'''CoffeeScript''' — A programming language that transcompiles to JavaScript.<br />
<br />
alert 'Arch is the best!'<br />
<br />
<br />
'''Clojure''' — A Lisp dialect that runs on the JVM.<br />
<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 read-choice []<br />
(println "\nAvailable languages: ")<br />
(doall (map #(println (key %)) translations))<br />
(print "Enter language or Ctrl-c: ") (flush)<br />
(translations (read-line) :badinput))<br />
<br />
(defn arch-is-the-best []<br />
(loop [choice (read-choice)]<br />
(case choice<br />
:badinput (do (print "\nBad input!\n")<br />
(recur (read-choice)))<br />
(do (print "\n" choice "\n")<br />
(recur (read-choice))))))<br />
<br />
or<br />
<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 />
"street" "Arch iz da shizzle ma nizzle"})<br />
(while 1<br />
(println "\nPick a language:\n" (map #(key %) translations) "\n language: ")<br />
(println (translations (read-line) "Not a valid language")))<br />
<br />
or<br />
<br />
(prn "Arch is the best!")<br />
<br />
<br />
'''Common Lisp''' — Tested on SBCL, feel free to add more of the translations.<br />
<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 />
<br />
(princ "Arch is the best!")<br />
<br />
<br />
'''D''' — A C-style language. The benefits of hindsight, with modern conveniences.<br />
<br />
import std.stdio : writeln;<br />
void main()<br />
{<br />
writeln("Arch is the best");<br />
}<br />
<br />
<br />
'''Dart''' — Google's javascript killer<br />
<br />
main(){<br />
print('Arch is the best');<br />
}<br />
<br />
<br />
'''Emacs Lisp''' — A dialect of the Lisp programming language used by the GNU Emacs and XEmacs text editors<br />
<br />
(message "Arch is the best!")<br />
<br />
<br />
'''Erlang''' — A concurrent, garbage-collected programming language and runtime system.<br />
<br />
-module(arch).<br />
-export([is_the_best/0]).<br />
is_the_best() -> io:fwrite("Arch is the best!\n").<br />
<br />
Or using message passing between processes<br />
<br />
-module(arch).<br />
-export([ultimate_question/0,the_answer/0]).<br />
the_answer() -><br />
receive<br />
{Client,who_is_the_best} -><br />
Client ! {self(),"Arch is the best!"};<br />
{Client,_} -><br />
Client ! {self(),"Taco Taco Taco!"}<br />
end,<br />
the_answer().<br />
ultimate_question() -><br />
Pid = spawn(arch,the_answer,[]),<br />
Pid ! {self(),who_is_the_best},<br />
receive<br />
{Pid,Response} -> io:format("~s~n",[Response])<br />
end.<br />
<br />
<br />
'''F#''' — A strongly-typed, functional-first programming language for writing simple code to solve complex problems.<br />
<br />
printfn "Arch is the best!"<br />
<br />
<br />
'''Factor''' — High-level stack-based language.<br />
<br />
"Arch is the best" print<br />
<br />
<br />
'''FIM++''' — A wordy, imperative, dynamically-typed, and interpreted language that can use Java classes.<br />
<br />
Dear Princess Celestia: Letter About Arch Linux.<br />
Today I learned:<br />
I wrote "Arch is the best!".<br />
Your faithful student, Twilight Sparkle<br />
<br />
<br />
'''Forth''' — Stack-based language.<br />
<br />
." Arch is the best" cr -- kiss way<br />
<br />
<br />
'''Fortran95'''<br />
<br />
program arch<br />
print *,"Arch is the best!"<br />
end program arch<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 />
<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 />
<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 />
<br />
package main<br />
<br />
import "fmt"<br />
<br />
func main() {<br />
fmt.Println("Arch is the best!")<br />
}<br />
<br />
'''Groovy''' - An agile and dynamic language for the Java Virtual Machine.<br />
<br />
println 'Arch is the best!' <br />
<br />
<br />
'''Haskell''' — The language where IO is easy and unproblematic.<br />
<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 />
<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''' — A pure object-oriented programming language inspired by Smalltalk, Self, Lua, Lisp, Act1, and NewtonScript.<br />
<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 />
<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 />
<br />
console.log('Arch is the best!');<br />
<br />
<br />
'''JavaScript (in a web browser)'''<br />
<br />
alert('Arch is the best!');<br />
<br />
<br />
'''LilyPond''' — A powerful music engraving program with an intuitive LaTeX-like input language.<br />
<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 />
<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 />
<br />
print "Arch is the best!"<br />
<br />
'''Morpho''' — Morpho is a multi-paradigm programming language that supports procedural, object-oriented and functional programming.<br />
<br />
writeln("Arch is the best!");<br />
<br />
<br />
'''Nasm(x86_64) (or yasm)''' — Notice that the string is in the .text section, which feels superior.<br />
<br />
;nasm -f elf64 arch.asm<br />
;ld -o arch arch.o<br />
;./arch<br />
<br />
section .text<br />
global _start<br />
_start:<br />
mov edx,len<br />
mov ecx,msg<br />
mov ebx,1<br />
mov eax,4<br />
int 0x80<br />
xor ebx,ebx<br />
mov eax,1<br />
int 0x80<br />
msg: db "Arch is the best!",10<br />
len equ $-msg<br />
<br />
<br />
'''Nimrod''' — Portable lightweight programming language.<br />
<br />
echo "Arch is the best!"<br />
<br />
<br />
'''node.js''' — a platform built on Chrome's JavaScript runtime for easily building fast, scalable network applications, using an event-driven, non-blocking I/O model that makes it lightweight and efficient, perfect for data-intensive real-time applications that run across distributed devices.<br />
<br />
console.log('Arch is the best!');<br />
<br />
<br />
'''Objective-C''' — A reflective, object-oriented programming language that adds Smalltalk-style messaging to the C programming language.<br />
<br />
NSLog(@"Arch is the best!");<br />
<br />
<br />
'''OCaml''' — The main implementation of the Caml programming language.<br />
<br />
print_endline "Arch is the best!"<br />
<br />
<br />
'''Octave''' — High-level interpreted language, primarily intended for numerical computations.<br />
<br />
printf("Arch is the best!\n")<br />
<br />
<br />
'''Ook!''' — brainfuck, translated to Orangutan.<br />
<br />
Ook. Ook. Ook. Ook. Ook. Ook? Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook? Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook? Ook. Ook. Ook. Ook! Ook? Ook. Ook? Ook! Ook? Ook! Ook! Ook. Ook? Ook. Ook. Ook? Ook. Ook? Ook! Ook? Ook. Ook! Ook! Ook. Ook? Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook? Ook. Ook? Ook! Ook. Ook? Ook. Ook? Ook! Ook. Ook? Ook. Ook! Ook? Ook! Ook! Ook? Ook! Ook. Ook? Ook! Ook? Ook! Ook! Ook? Ook. Ook. Ook. Ook. Ook. Ook. Ook? Ook? Ook! Ook? Ook. Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook. Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook! Ook. Ook? Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook! Ook? Ook! Ook! Ook? Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook? Ook? Ook! Ook? Ook. Ook! Ook. Ook. Ook? Ook. Ook? Ook. Ook. Ook! Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook! Ook. Ook? Ook. Ook? Ook. Ook! Ook. Ook. Ook? Ook. Ook? Ook. Ook. Ook! Ook. Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook. Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook. Ook? Ook. Ook? Ook. Ook! Ook. Ook. Ook? Ook. Ook? Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook! Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook! Ook. Ook. Ook. Ook! Ook. Ook? Ook. Ook? Ook. Ook. Ook. Ook! Ook. Ook! Ook? Ook! Ook! Ook? Ook! Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook! Ook.<br />
<br />
<br />
'''Pascal''' — An influential imperative and procedural programming language.<br />
<br />
program ArchIsTheBest;<br />
begin<br />
writeln('Arch is the best!');<br />
end.<br />
<br />
<br />
'''Perl''' — A high-level, general-purpose, interpreted, dynamic programming language.<br />
<br />
#!/usr/bin/perl<br />
print "Arch is the best!\n";<br />
<br />
<br />
'''PHP''' — A general-purpose scripting language.<br />
<br />
<?php<br />
echo "Arch is the best!\n";<br />
?><br />
<br />
<br />
'''Pixilang''' — Make me pixels.<br />
<br />
print("Arch is the best!",0,0,#1897D1)<br />
frame<br />
<br />
<br />
'''Portable GNU assembler''' — {{ic|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 />
<br />
println("Arch is the best!");<br />
<br />
<br />
'''Prolog''' — A general purpose logic programming language associated with artificial intelligence and computational linguistics.<br />
<br />
format('Arch is the best~n',[]).<br />
<br />
<br />
'''Python''' — A general-purpose high-level programming language.<br />
<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 />
<br />
PRINT "Arch is the best!"<br />
<br />
<br />
'''R''' — A language for statistical computing (and much more!).<br />
<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 />
<br />
#!/usr/bin/ruby -w<br />
puts 'Arch is the best!'<br />
<br />
<br />
'''Rust''' — Rust is a systems programming language that runs blazingly fast, prevents almost all crashes, and eliminates data races.<br />
<br />
fn main() {<br />
println!("Arch is the best!");<br />
}<br />
<br />
<br />
'''Scala''' — A multi paradigm language that runs on the JVM.<br />
<br />
object ArchIsBest extends App {<br />
println("Arch is the best!")<br />
}<br />
<br />
<br />
'''Scheme''' — A dialect of Lisp.<br />
<br />
(display "Arch is the best!\n")<br />
<br />
or in XunDu style<br />
<br />
#!/usr/bin/guile1.8 -s<br />
!#<br />
(define 节 or)<br />
(define 哀 #t)<br />
(define (xi) (display "Arch is the best!\n"))<br />
(节 (xi) 哀 (wen) 顺 (le) 变 (jian) )<br />
<br />
<br />
'''Seed''' — A library and interpreter, dynamically bridging the WebKit JavaScriptCore engine, with the GNOME platform.<br />
<br />
#!/usr/bin/env seed<br />
print ('Arch is the best');<br />
<br />
<br />
'''Shoes''' — A Ruby version using Shoes for a GUI.<br />
<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 />
<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 />
<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 />
<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 />
<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 />
<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 />
<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 />
<br />
'''Ancient Chinese'''<br />
阿祺,盡善矣。<br />
<br />
'''Ancient Greek (Attic)'''<br />
Ἡ Ἀψίς ἄριστην ἐστί!<br />
<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 />
'''British'''<br />
Arch is simply spiffing.<br />
<br />
'''Bulgarian'''<br />
Арч е най-добрият!<br />
<br />
'''Catalan'''<br />
Arch és el millor!<br />
<br />
'''Chinese (Simplified)'''<br />
Arch 最棒了!<br />
<br />
'''Chinese (Traditional)'''<br />
Arch 好棒棒!<br />
<br />
'''Chinese (Taobao Style - 淘宝体)'''<br />
Arch,好评哦,亲!<br />
<br />
'''Czech'''<br />
Arch je nejlepší!<br />
<br />
'''Croatian'''<br />
Arch je najbolji!<br />
<br />
'''Danish'''<br />
Arch er bedst!<br />
<br />
'''Dutch'''<br />
Arch is de beste!<br />
<br />
'''Esperanto'''<br />
Arch plejbonas!<br />
<br />
'''Estonian'''<br />
Arch on parim!<br />
<br />
'''Fikonspråket'''<br />
Firch Arkon fir äkon fist bäkon<br />
<br />
'''Filipino'''<br />
Mabuhay ang Arch!<br />
<br />
'''Finnish'''<br />
Arch on paras!<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 (Modern)'''<br />
Το Αρτς είναι το καλύτερο!<br />
<br />
'''Haitian Creole'''<br />
Arch se meye bagay!<br />
<br />
'''Hantec'''<br />
Arch je nejbetélnější!<br />
<br />
'''Hebrew'''<br />
ארצ' זה הכי אחי!<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 />
'''Klingon'''<br />
Arch'pu'ta"a'<br />
<br />
'''Latin'''<br />
Arch optimus est!<br />
<br />
'''Latvian'''<br />
Arch ir labākais!<br />
<br />
'''Lithuanian'''<br />
Arch yra geriausias!<br />
<br />
'''Lojban'''<br />
la .artc. xagrai<br />
<br />
'''Malayalam'''<br />
ആർച് ആണ് ഏറ്റവും നല്ലത്<br />
<br />
'''Mapudungun'''<br />
writting system: Unificado<br />
Doy kümei Arch<br />
writting system: Raguileo<br />
Zoy kvmey Arc<br />
writting system: Azümchefe (Used in Windows XP)<br />
Zoi kümei Arch<br />
writting system: Nhewenh<br />
Zoi kvmei Arch<br />
writting system: Wirizüŋun<br />
Zoy kümey Arch ''or'' Zoy kvmey Arch<br />
<br />
'''Marathi'''<br />
आर्च सगळ्यात भारी आहे!<br />
<br />
'''Nepali'''<br />
आर्च सबैभन्दा राम्रो हो!<br />
<br />
'''Norwegian'''<br />
Arch er best!<br />
<br />
'''Old English'''<br />
Arch biþ betst!<br />
<br />
'''Persian'''<br />
آرچ بهترین است<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 (Standard)'''<br />
¡Arch es el mejor!<br />
<br />
'''Spanish (Argentina)'''<br />
Arch es una mazza!!<br />
<br />
'''Spanish (Chile)'''<br />
Arch es bacán<br />
<br />
'''Spanish (Chile, alternative)'''<br />
Arch es la raja<br />
<br />
'''Spanish (Chile, marginal)'''<br />
(written in IPA because standard Spanish doesn't have these sounds)<br />
ˈæɹʃ ɛːʰ tɜ.rˈiː.u.lɛ la rˈa.χa ʃʊ.ɹʊ<br />
<br />
'''Spanish (Uruguay)'''<br />
Arch la rompe!<br />
<br />
'''Swedish'''<br />
Arch är bäst!<br />
<br />
'''Turkish'''<br />
Arch en iyisidir!<br />
<br />
'''Tamil'''<br />
ஆர்ச்சே சிறந்தது!<br />
<br />
'''Telugu'''<br />
ఆర్చ్ ఉత్తమమైనది!<br />
<br />
'''Toki Pona'''<br />
Arch li pona mute!<br />
<br />
'''Ukrainian'''<br />
Arch — найкращий!<br />
<br />
'''Urdu'''<br />
آرچ سب سے بہتر ہے!<br />
<br />
'''Vietnamese'''<br />
Arch là tốt nhất!<br />
<br />
'''Welsh (Cymraeg)'''<br />
<br />
Emphasis on Arch:<br />
Arch sydd yr orau un!<br />
Arch sydd y gorau un!<br />
<br />
Emphasis on being the best (one):<br />
Yr orau un yw Arch!<br />
Y gorau un yw Arch!<br />
<br />
== Encodings ==<br />
<br />
'''ASCII Banner'''<br />
_ _ _ _ _ _ _<br />
/\ | | (_) | | | | | | | | | |<br />
/ \ _ __ ___| |__ _ ___ | |_| |__ ___ | |__ ___ ___| |_| |<br />
/ /\ \ | '__/ __| '_ \ | / __| | __| '_ \ / _ \ | '_ \ / _ \/ __| __| |<br />
/ ____ \| | | (__| | | | | \__ \ | |_| | | | __/ | |_) | __/\__ \ |_|_|<br />
/_/ \_\_| \___|_| |_| |_|___/ \__|_| |_|\___| |_.__/ \___||___/\__(_)<br />
<br />
'''Base64'''<br />
QXJjaCBpcyB0aGUgYmVzdCEK<br />
<br />
'''Binary ASCII'''<br />
0100000101110010011000110110100000100000011010010111001100100000011101000110100001100101001000000110001001100101011100110111010000100001<br />
<br />
'''Braille'''<br />
⠁⠗⠉⠓⠀⠊⠎⠀⠮⠀⠃⠑⠎⠞⠲<br />
<br />
'''Desrever (Reversed)'''<br />
!tseb eht si hcrA<br />
<br />
'''h4x0r'''<br />
4rch 15 7h3 b357!<br />
<br />
'''Hexadecimal ASCII'''<br />
4172636820697320746865206265737421<br />
<br />
'''md5sum'''<br />
2d9092e089d77a8e23f47ba3dfe77027<br />
<br />
'''Morse Code'''<br />
.- .-. -.-. .... .. ... - .... . -... . ... -<br />
<br />
'''ROT13'''<br />
Nepu vf gur orfg!<br />
<br />
'''Upside Down'''<br />
¡ʇsǝq ǝɥʇ s! ɥɔɹ∀<br />
<br />
'''URL Encoded'''<br />
Arch%20is%20the%20best!</div>
Jristz
https://wiki.archlinux.org/index.php?title=Arch_Linux_April_Jokes&diff=319154
Arch Linux April Jokes
2014-06-11T04:45:27Z
<p>Jristz: /* 2012 */ add 2014 and 2014, more info is needed</p>
<hr />
<div>[[Category:About Arch]]<br />
Every first day of April, the Arch Linux website traditionally features an [[wikipedia:April_Fools'_Day|April Fools' Day]] joke on the front page. This document collects the jokes as a fun reading for readers of this Wiki.<br />
<br />
== 2014==<br />
The joke was done when pacman 4.1 was rleased, Allan McRae in the anounce post that systemd will be a hard dependencie to pacman.<br />
<br />
== 2013 ==<br />
There does not seem to have been an April Fools' Day joke for 2012.<br />
<br />
==2012==<br />
There does not seem to have been an April Fools' Day joke for 2012.<br />
<br />
==Canterbury==<br />
'''published:''' 2011 / '''permalink:''' [https://www.archlinux.org/news/519/ Arch news archive #519]<br />
<br />
===History===<br />
<br />
At the [http://www.fosdem.org/2011/schedule/event/distro_collaboration FOSDEM 2011 Distribution collaboration event] the lead developers of Archlinux and Debian discussed the idea of combining the best features of their projects and work together to produce a new, superior distribution. This concept was first raised at an earlier openSUSE conference and they believe there is potential to work together, combining their efforts.<br />
<br />
A week later, Feb 16, the [http://www.linuxfoundation.org/collaborate/workgroups/lsb Linux Standard Base] version [http://www.linuxfoundation.org/collaborate/workgroups/lsb/lsb-41 4.1] was released. With a new standard base to work on, a unified distribution became a hot topic again; Gentoo and Grml got on board. <br />
<br />
Dieter, the mastermind behind the dual ISO/usb-IMG installer file has already started working on the new installer discussion is underway, working out they will take care of further merging of the harder parts, such as infrastructure and system tools.<br />
<br />
===Goal===<br />
The target is to produce a really unified effort and be able to stand up in a combined effort against proprietary operating systems, to show off that the Free Software community is actually able to work together for a common goal instead of creating more diversity.<br />
<br />
===Features===<br />
<br />
The Canterbury distribution will combine the best of the linux world to another game changer for the good of the users:<br />
<br />
* Simple as Arch - technologically simple and bleeding edge.<br />
* Stable as Debian - highly dependable.<br />
* Malleable as Gentoo - you get what you really want.<br />
* Live as Grml - readily usable.<br />
* Openminded as openSUSE - broad and welcoming for everyone.<br />
<br />
== April Fools Challenge ==<br />
<br />
'''published:''' 2010 / '''permalink:''' [https://www.archlinux.org/news/492/ Arch news archive #492]<br />
<br />
It is that time of year again, but this year we are being super subtle. In fact so subtle, many of you will not notice the April Fools at all. But there is definitely one there. Post your guesses in this dedicated forum thread. We have a donated netbook to give away as a prize for the first person who fully uncovers the joke.<br />
<br />
=== About the april fools challenge joke ===<br />
<br />
'''Arch Forum:''' [https://bbs.archlinux.org/viewtopic.php?id=94255 April Fools Challenge] <br><br />
Page 01: "it's all about recursion." <br><br />
Page 15: "We're almost half way through April, why on earth is this thread still active?" <br><br />
Page 16: "I'll add a 'move along, nothing to see here' just so people can be absolutely sure..." <br><br />
Page 16: "Noting to see here???? There are 386 replies and 49,275 views!!! ....... Trapped in The Matrix."<br />
<br />
== Dropping i686 Support ==<br />
<br />
'''published:''' 2009 / '''permalink:''' [https://www.archlinux.org/news/440/ Arch news archive #440]<br />
<br />
Recently the developers have been discussing the possibility of adding some additional optimizations to our i686 port to improve multimedia support. This would involve reducing the compatibility with older systems. As some of you may have heard ([1], Google translation [2]), this discussion has resulted in the decision to focus exclusively on the x86_64 port. The overall opinion of the developers is that the x86_64 port is now complete enough to justify this decision and that this is in keeping with Arch's philosophy of supporting current generation hardware. The x86_64 architecture has been available since 2002 (compared to i686 which is from 1995), and we believe most of our i686 users have x86_64 compatible hardware.<br />
<br />
An official time-line for the deprecation of the i686 port has not been established, but an official announcement needs to be made, as the decision has already been leaked to the ArchLinux-BR community. However, it is likely that major updates (GNOME, KDE, Xorg, etc) will not be built for i686 in the immediate future. Users will still be able to build packages for i686 packages using ABS. As most of the architecture specific patches are for x86_64, this should be relatively pain free.<br />
<br />
=== About the dropping i686 support joke ===<br />
<br />
On April 1st, 2009, it was announced on the frontpage, as well as the Arch-Dev-Public mailing list that Arch would be dropping support for the i686 architecture. This announcement spurred a number of heated debates across the forums, mailing lists, and on IRC. Among other things, the debates led Aaron to threaten to leave Arch. Similar to previous years, various phrases on the forums and other Arch sites were filtered to make life more entertaining.<br />
<br />
=== After-action Report ===<br />
<br />
'''published:''' 2009 / '''permalink:''' [https://www.archlinux.org/news/441/ Arch news archive #441]<br />
<br />
Hi, Arch Linux users, we are pleased to inform you that the i686 architecture is not going to be dropped from Arch Linux. It all was part of an April Fools joke, in which all the developers and the forum moderators played a big part.<br />
<br />
Interestingly, this joke actually did some good. Some of our users discovered that they were, in fact, running 64-bit processors, and many of them switched to the Arch Linux 64-bit version. We encourage anyone who already switched to keep using the 64-bit version, to continue contributing to the architecture and encourage support from other major software vendors.<br />
<br />
A prime example of a vendor giving in to the demands of the 64-bit community is Adobe. They've recently added 64-bit Linux support to the flash plug-in, for which we thank them.<br />
<br />
Sorry for any inconvenience this joke may have caused, but how can we resist a prank on the 1st of April?<br />
<br />
== Arch in German ==<br />
<br />
'''published:''' 2008 / '''permalink:''' n/a<br />
<br />
Important Notice for English Archers<br />
<br />
Over the past two months, great discussion has passed on the private development list, and we have come to the conclusion that keeping Arch as a primarily English distro is a disservice to our largest user-base. As such, we have decided in majority vote to change the official, primary language of Arch Linux to German.<br />
<br />
Please bear with us during this transition - we are working closely with archlinux.de to facilitate the switch, at which point we plan to merge the websites. Knowing the great community behind Arch, we are sure a community project will arise quickly to fill the small void left when we completely discontinue the English site.<br />
<br />
Also, please note we're now using the German pronunciation for "Arch". Don't worry, you'll get used to it - 90% of our devs already are!<br />
<br />
Happy Computenpeepers,<br />
The Management <br />
<br />
=== About the German Arch joke ===<br />
<br />
On April 1st, 2008, most of Arch Linux websites (including the BBS) were translated to German. The above notice appeared on most of them, and the BBS rewrote strings posted by users so that references to the Wiki articles all pointed to a page called "Deutchland", and words like "joke" were rewritten as "genius idea". For example: "Arch Linux April Jokes Collection" would read "Arch Linux Deutschland genius idea Collection".<br />
<br />
== Arch Ark ==<br />
<br />
'''published:''' 2007 / '''permalink:''' [https://www.archlinux.org/news/307/ Arch news archive #307]<br />
<br />
We're changing our name!<br />
<br />
After 5 years of being called Arch Linux and 5 years of people confusing us with Ark Linux, we've finally come up with a solution. We've spent the last few months talking to the Ark Linux people to come up with a solution that's beneficial for both distributions. Today, we are happy to announce a name change for Arch Linux. Today, I am happy to announce, we will be known as Ark Linux!<br />
<br />
We will keep our domain archlinux.org for the next few weeks, while people are still getting used to the name change, but eventually we will switch domains as well. In changing names, we are sure that people will never again have problems discerning Arch Linux with Ark Linux.<br />
<br />
Long Live Ark Linux!<br />
<br />
=== Ark Linux ===<br />
<br />
Ark Linux was an actual Linux distribution (since discontinued [http://distrowatch.com/table.php?distribution=ark]). The above joke is especially funny to those Archers who started using Arch after mistakingly typing "www.archlinux.org" instead of "www.arklinux.org". The "Arch Linux" name is considered to be pronounced as /a-ch/ (rhymes with larch, starch, as in "archer"). However, there does not seem to exist a consensus on how it is really pronounced.[https://bbs.archlinux.org/viewtopic.php?id=4901&p=2]<br />
<br />
The same joke was also posted on Ark Linux to make it even more convincing (at the first glance, at least; sadly, there does not seem to be an archive of Ark Linux news).<br />
<br />
== Judd goes to Google ==<br />
<br />
'''published:''' 2006 / '''permalink:''' [https://www.archlinux.org/news/214/ Arch news archive #214]<br />
<br />
Current Changes<br />
<br />
I just thought I would bring you all up to speed on some of the information currently going around the watercooler.<br />
<br />
Judd has officially accepted a job offer from Google, and as such,<br />
will be unable to continue with his Archlinux work.<br />
<br />
Lead of the project has moved to the capable hands of Jason Chu (Xentac). Jason's first order of business, as we push towards the 0.7.1.1 release (Codename: Pony), will be creating a [stable] repository, with older software. This will be the main focus of our work from now on, with all the security backports and compatability fixes. As such, the normal repos will begin to lack a bit, but those will be removed in time as we move to a more 'stable' and 'production quality' release system.<br />
<br />
Expect 0.7.1.1 in a few weeks.<br />
<br />
Thanks,<br />
Aaron<br />
<br />
=== Judd's actual goodbye to Arch project ===<br />
<br />
Judd Vinet, the founder of Arch Linux, has actually left the project on the 1st of October, 2007, and became the "Arch's Number One Cheerleader".[https://www.archlinux.org/news/350/] Since then, Aaron Griffin is the project leader.<br />
<br />
=== Arch Linux and its release system ===<br />
<br />
Arch Linux does not use the ''stable'' and ''production quality'' release system. It is a [[wikipedia:Rolling_release|rolling release]] system, where the system is constantly kept up-to-date with no fixed release schedules.<br />
<br />
== Arch against Wombats ==<br />
<br />
'''published:''' 2005 / '''permalink:''' [https://www.archlinux.org/news/147/ Arch news archive #147]<br />
<br />
CETW Problems<br />
<br />
It is with great sadness that I write this message.<br />
<br />
When we first released Arch Linux 0.7 (Wombat) we were contacted by the Centre for Ethical Treatment of Wombats (CETW). CETW felt that we were somehow hurting wombats worldwide by releasing an "open source project"<br />
with the codename Wombat. While we tried to convince them that Arch Linux was a Linux distribution and that no wombats were harmed during the creation of our release, they wouldn't accept it.<br />
<br />
So they threatened to sue us unless we changed our destructive ways.<br />
<br />
After much deliberation, we have figured out that we do not actually have enough money to fight them in court. Instead we have chosen to settle outside of court. Part of our settlement is to discontinue the development of Arch Linux.<br />
<br />
And thus, through a poor choice of naming, Arch Linux is no more. All of the developers would like to thank the community for their support and contributions.<br />
<br />
=== Wombats ===<br />
<br />
"Wombats are Australian marsupials; they are short-legged, muscular quadrupeds, approximately one metre (39 inches) in length with a very short tail. They are found in forested, mountainous, and heathland areas of south-eastern Australia and Tasmania. The name wombat comes from the Eora Aboriginal community who were the original inhabitants of the Sydney area." [[wikipedia:Wombat]]<br />
<br />
Wombats are not known to hire lawyers to harass Linux distributions.[[wikipedia:Wombat#Wombats_and_humans]]<br />
<br />
== GNOME 2.6 ==<br />
<br />
'''published:''' 2004 / '''permalink:''' [https://www.archlinux.org/news/58/ Arch news archive #58]<br />
<br />
GNOME 2.6 Released!<br />
<br />
As the title says, gnome 2.6 is in the house. There isn't much to watch out for, Arjan and JGC did a good job catching conflicts in the testing stage so the install should go flawlessly.<br />
<br />
To upgrade: pacman -Syu<br />
To install: pacman -S gnome<br />
<br />
Some GTK2.x related packages were also upgraded to suit the requirements of gnome 2.6.<br />
<br />
=== GNOME version history ===<br />
<br />
Before the above ''news'' was posted, the GNOME project had released 2.0 in 2002, and latest release before the 1st of April 2004 was GNOME 2.2.[http://www.greaterbostonrubyandrails.com/Release.html]</div>
Jristz
https://wiki.archlinux.org/index.php?title=PKGBUILD_Templates&diff=280504
PKGBUILD Templates
2013-10-30T19:33:08Z
<p>Jristz: /* Basic PKGBUILD with Links and Comments added a coment about ${pakage}::source*/</p>
<hr />
<div>[[Category:Package development]]<br />
== Basic PKGBUILD ==<br />
<br />
You can find prototype package build and .install files in {{ic|/usr/share/pacman}}.<br />
<br />
# Maintainer: Your Name <youremail@domain.com><br />
pkgname=NAME<br />
pkgver=VERSION<br />
pkgrel=1<br />
pkgdesc=""<br />
arch=()<br />
url=""<br />
license=('GPL')<br />
groups=()<br />
depends=()<br />
makedepends=()<br />
optdepends=()<br />
provides=()<br />
conflicts=()<br />
replaces=()<br />
backup=()<br />
options=()<br />
install=<br />
changelog=<br />
source=(http://server/$pkgname-$pkgver.tar.gz)<br />
noextract=()<br />
md5sums=() #generate with 'makepkg -g'<br />
<br />
build() {<br />
cd "$srcdir/$pkgname-$pkgver"<br />
<br />
./configure --prefix=/usr<br />
make<br />
}<br />
<br />
package() {<br />
cd "$srcdir/$pkgname-$pkgver"<br />
<br />
make DESTDIR="$pkgdir/" install<br />
}<br />
<br />
=== Basic PKGBUILD with Links and Comments ===<br />
<br />
# Maintainer: Your Name <your email><br />
<br />
# Name of the Software your PKGBUILD will install - should be unique. See [[PKGBUILD#pkgname]]<br />
pkgname=derp<br />
<br />
# The version number for the software<br />
pkgver=6.6.6<br />
<br />
#The release number for the arch package, as fixes are added to the PKGBUILD, the release number will increase<br />
pkgrel=9001<br />
<br />
# The description of the package, should be about 80 characters long (one line)<br />
pkgdesc="Derp is an example package for this PKGBUILD file."<br />
<br />
# The type of processor this software can build and work on. See [[PKGBUILD#arch]]<br />
arch=('i686' 'x86_64')<br />
<br />
# The official website for the software your PKGBUILD will install<br />
url="https://archlinux.org"<br />
<br />
# The License that the software is released under. See [[PKGBUILD#license]]<br />
license=('GPL3')<br />
<br />
# The group a package belongs in. An example would be kdebase (install all the KDE packages)<br />
groups=allyourdatabasearebelongtous<br />
<br />
# Packages that your software needs to run. If the dependancy requires a minimum version number use the >= operator<br />
depends=('herp' 'fuuuuu>=2.0')<br />
<br />
# Packages that must be installed to build the software, but at not necessary to run it<br />
makedepends=('pony' 'wings' 'horns' 'supercompany2600')<br />
<br />
# Optional packages that extend the software's functionality<br />
optdepends=('derp-hoofbar: a browser plugin')<br />
<br />
# List of Package names that this PKGBUILD provides. Put modified packages that will be installed here.<br />
provides=('lol-git')<br />
<br />
# Packages that cannot be installed at the same time as this package<br />
conflicts=('pegasi')<br />
<br />
# Obsolete Packages that this Package replaces<br />
replaces=('dinky')<br />
<br />
# User files that should be saved. They are kept as [[Pacnew and Pacsave Files]]<br />
backup=('etc/derp.conf')<br />
<br />
# Change the default behavior of [[makepkg]] see [[PKGBUILD#options]]<br />
options=<br />
<br />
install='foo.install'<br />
<br />
# Source for the package, you can specify a folder (for git or download name to overriding the default<br />
# name saved useful if the upstream use tarballs named 'pinkieþæý' for example<br />
source=("${pkgname}.tar.gz::http://server.tl;dr/${pkgname}-${pkgver}.tar.gz"<br />
"derp.desktop")<br />
md5sums=('a0b2c3d4e5f6g7h8i9'<br />
'j10k11l12m13n14o15')<br />
<br />
For more details, see [[PKGBUILD]].</div>
Jristz
https://wiki.archlinux.org/index.php?title=Talk:Arch_is_the_best&diff=276175
Talk:Arch is the best
2013-09-21T06:12:54Z
<p>Jristz: /* Brithenig */</p>
<hr />
<div>Do you think a GTK implementation in Python would be a bit long to add to the article? Here it is:<br />
<br />
#!/usr/bin/python<br />
<br />
import pygtk<br />
pygtk.require('2.0')<br />
import gtk<br />
import random<br />
<br />
class ArchIsTheBest:<br />
def __init__(self):<br />
window = gtk.Window(gtk.WINDOW_TOPLEVEL)<br />
window.set_title("Arch is the best!")<br />
window.set_size_request(500,250)<br />
window.connect("delete_event", self.delete_event)<br />
window.connect("destroy", self.destroy)<br />
<br />
vbox = gtk.VBox(False, 0)<br />
window.add(vbox)<br />
vbox.show()<br />
<br />
textview = gtk.TextView(buffer=None)<br />
textviewb = textview.get_buffer()<br />
textviewt = "Arch is the best"<br />
textviewb.set_text(textviewt)<br />
textview.set_editable(False)<br />
textview.set_cursor_visible(False)<br />
textview.set_wrap_mode(True)<br />
vbox.pack_start(textview, True, True, 0)<br />
textview.show()<br />
<br />
button = gtk.Button(stock=gtk.STOCK_CLOSE)<br />
button.connect("clicked", lambda w: gtk.main_quit())<br />
vbox.pack_start(button, False, False, 0)<br />
button.set_flags(gtk.CAN_DEFAULT)<br />
button.grab_default()<br />
button.show()<br />
<br />
window.show()<br />
<br />
def delete_event(self, widget, event, data=None):<br />
return False<br />
<br />
def destroy(self, widget, data=None):<br />
gtk.main_quit()<br />
<br />
def main(self):<br />
gtk.main()<br />
<br />
if __name__ == "__main__":<br />
archisthebest = ArchIsTheBest()<br />
archisthebest.main()<br />
<br />
Also, is it possibly violating The Arch Way by providing a GUI to this application? I think it may just entice those Ubuntu users to jump ship to Arch if we provide this as a GUI, however it is definitely not 'simple'.<br />
[[User:Barrucadu|Barrucadu]] 19:25, 13 May 2008 (EDT)<br />
<br />
Whilst the [https://bbs.archlinux.org/viewtopic.php?id=47306&p=1/ forum thread] relating to this is fun, this page does not add anything meaningful to the Arch wiki, and I don't see how this page adheres to the wiki philosophy or Arch principles (KISS minimalism). Have flagged this page for deletion.<br />
[[User:Joetotale|Joetotale]] 05:42, 9 January 2011 (EST)<br />
<br />
:I agree. I marked it for deletion some time ago, and didn't really feel like pursuing the subject because it would've been an exchange involving a grand total of 2 people.<br />
:There's always some truth to irony, and 'Arch is the best' is implicit enough to survive undetected under the reach of armchair psychology! [[User:Lavandero|Lavandero]] 18:32, 10 January 2011 (EST)<br />
<br />
::I DISagree ^_^. This is an interesting and fun project, and causes no harm for being here. Not only was the page created by an Arch developer, deletion has been removed before by a WIKI ADMIN "(unmarking for deletion (no rationale -- I think this is clever); marked for expansion; categorized)" I should probably put back on the expansion template. Enjoy life, have fun, don't hate on fun. [[User:Jmad980|Jmad980]] 21:27, 2 February 2011 (EST)<br />
<br />
:::^_________^ [[User:Lavandero|Lavandero]] 22:06, 2 February 2011 (EST)<br />
<br />
== Klingon ==<br />
We need it in klingon language!!<br />
<br />
::Done, maybe I writting incorrectly but in theory I use: Arch + Perfection + augmentative, aka 'Arch is more than perfect'--[[user:Jristz|Jristz]] 06:12, 21 September 2013 (UTC)<br />
<br />
== Brithenig ==<br />
Iso code brz, We need brithenig to e perfect--[[user:Jristz|Jristz]] 06:12, 21 September 2013 (UTC)</div>
Jristz
https://wiki.archlinux.org/index.php?title=Talk:Arch_is_the_best&diff=276174
Talk:Arch is the best
2013-09-21T06:12:39Z
<p>Jristz: /* Klingon */</p>
<hr />
<div>Do you think a GTK implementation in Python would be a bit long to add to the article? Here it is:<br />
<br />
#!/usr/bin/python<br />
<br />
import pygtk<br />
pygtk.require('2.0')<br />
import gtk<br />
import random<br />
<br />
class ArchIsTheBest:<br />
def __init__(self):<br />
window = gtk.Window(gtk.WINDOW_TOPLEVEL)<br />
window.set_title("Arch is the best!")<br />
window.set_size_request(500,250)<br />
window.connect("delete_event", self.delete_event)<br />
window.connect("destroy", self.destroy)<br />
<br />
vbox = gtk.VBox(False, 0)<br />
window.add(vbox)<br />
vbox.show()<br />
<br />
textview = gtk.TextView(buffer=None)<br />
textviewb = textview.get_buffer()<br />
textviewt = "Arch is the best"<br />
textviewb.set_text(textviewt)<br />
textview.set_editable(False)<br />
textview.set_cursor_visible(False)<br />
textview.set_wrap_mode(True)<br />
vbox.pack_start(textview, True, True, 0)<br />
textview.show()<br />
<br />
button = gtk.Button(stock=gtk.STOCK_CLOSE)<br />
button.connect("clicked", lambda w: gtk.main_quit())<br />
vbox.pack_start(button, False, False, 0)<br />
button.set_flags(gtk.CAN_DEFAULT)<br />
button.grab_default()<br />
button.show()<br />
<br />
window.show()<br />
<br />
def delete_event(self, widget, event, data=None):<br />
return False<br />
<br />
def destroy(self, widget, data=None):<br />
gtk.main_quit()<br />
<br />
def main(self):<br />
gtk.main()<br />
<br />
if __name__ == "__main__":<br />
archisthebest = ArchIsTheBest()<br />
archisthebest.main()<br />
<br />
Also, is it possibly violating The Arch Way by providing a GUI to this application? I think it may just entice those Ubuntu users to jump ship to Arch if we provide this as a GUI, however it is definitely not 'simple'.<br />
[[User:Barrucadu|Barrucadu]] 19:25, 13 May 2008 (EDT)<br />
<br />
Whilst the [https://bbs.archlinux.org/viewtopic.php?id=47306&p=1/ forum thread] relating to this is fun, this page does not add anything meaningful to the Arch wiki, and I don't see how this page adheres to the wiki philosophy or Arch principles (KISS minimalism). Have flagged this page for deletion.<br />
[[User:Joetotale|Joetotale]] 05:42, 9 January 2011 (EST)<br />
<br />
:I agree. I marked it for deletion some time ago, and didn't really feel like pursuing the subject because it would've been an exchange involving a grand total of 2 people.<br />
:There's always some truth to irony, and 'Arch is the best' is implicit enough to survive undetected under the reach of armchair psychology! [[User:Lavandero|Lavandero]] 18:32, 10 January 2011 (EST)<br />
<br />
::I DISagree ^_^. This is an interesting and fun project, and causes no harm for being here. Not only was the page created by an Arch developer, deletion has been removed before by a WIKI ADMIN "(unmarking for deletion (no rationale -- I think this is clever); marked for expansion; categorized)" I should probably put back on the expansion template. Enjoy life, have fun, don't hate on fun. [[User:Jmad980|Jmad980]] 21:27, 2 February 2011 (EST)<br />
<br />
:::^_________^ [[User:Lavandero|Lavandero]] 22:06, 2 February 2011 (EST)<br />
<br />
== Klingon ==<br />
We need it in klingon language!!<br />
<br />
::Done, maybe I writting incorrectly but in theory I use: Arch + Perfection + augmentative, aka 'Arch is more than perfect'--[[user:Jristz|Jristz]] 06:12, 21 September 2013 (UTC)<br />
<br />
== Brithenig ==<br />
Iso code brz, We need brithenig to e perfect</div>
Jristz
https://wiki.archlinux.org/index.php?title=Talk:Arch_is_the_best&diff=276173
Talk:Arch is the best
2013-09-21T06:11:20Z
<p>Jristz: We need proper brz Aka Brithenig</p>
<hr />
<div>Do you think a GTK implementation in Python would be a bit long to add to the article? Here it is:<br />
<br />
#!/usr/bin/python<br />
<br />
import pygtk<br />
pygtk.require('2.0')<br />
import gtk<br />
import random<br />
<br />
class ArchIsTheBest:<br />
def __init__(self):<br />
window = gtk.Window(gtk.WINDOW_TOPLEVEL)<br />
window.set_title("Arch is the best!")<br />
window.set_size_request(500,250)<br />
window.connect("delete_event", self.delete_event)<br />
window.connect("destroy", self.destroy)<br />
<br />
vbox = gtk.VBox(False, 0)<br />
window.add(vbox)<br />
vbox.show()<br />
<br />
textview = gtk.TextView(buffer=None)<br />
textviewb = textview.get_buffer()<br />
textviewt = "Arch is the best"<br />
textviewb.set_text(textviewt)<br />
textview.set_editable(False)<br />
textview.set_cursor_visible(False)<br />
textview.set_wrap_mode(True)<br />
vbox.pack_start(textview, True, True, 0)<br />
textview.show()<br />
<br />
button = gtk.Button(stock=gtk.STOCK_CLOSE)<br />
button.connect("clicked", lambda w: gtk.main_quit())<br />
vbox.pack_start(button, False, False, 0)<br />
button.set_flags(gtk.CAN_DEFAULT)<br />
button.grab_default()<br />
button.show()<br />
<br />
window.show()<br />
<br />
def delete_event(self, widget, event, data=None):<br />
return False<br />
<br />
def destroy(self, widget, data=None):<br />
gtk.main_quit()<br />
<br />
def main(self):<br />
gtk.main()<br />
<br />
if __name__ == "__main__":<br />
archisthebest = ArchIsTheBest()<br />
archisthebest.main()<br />
<br />
Also, is it possibly violating The Arch Way by providing a GUI to this application? I think it may just entice those Ubuntu users to jump ship to Arch if we provide this as a GUI, however it is definitely not 'simple'.<br />
[[User:Barrucadu|Barrucadu]] 19:25, 13 May 2008 (EDT)<br />
<br />
Whilst the [https://bbs.archlinux.org/viewtopic.php?id=47306&p=1/ forum thread] relating to this is fun, this page does not add anything meaningful to the Arch wiki, and I don't see how this page adheres to the wiki philosophy or Arch principles (KISS minimalism). Have flagged this page for deletion.<br />
[[User:Joetotale|Joetotale]] 05:42, 9 January 2011 (EST)<br />
<br />
:I agree. I marked it for deletion some time ago, and didn't really feel like pursuing the subject because it would've been an exchange involving a grand total of 2 people.<br />
:There's always some truth to irony, and 'Arch is the best' is implicit enough to survive undetected under the reach of armchair psychology! [[User:Lavandero|Lavandero]] 18:32, 10 January 2011 (EST)<br />
<br />
::I DISagree ^_^. This is an interesting and fun project, and causes no harm for being here. Not only was the page created by an Arch developer, deletion has been removed before by a WIKI ADMIN "(unmarking for deletion (no rationale -- I think this is clever); marked for expansion; categorized)" I should probably put back on the expansion template. Enjoy life, have fun, don't hate on fun. [[User:Jmad980|Jmad980]] 21:27, 2 February 2011 (EST)<br />
<br />
:::^_________^ [[User:Lavandero|Lavandero]] 22:06, 2 February 2011 (EST)<br />
<br />
== Klingon ==<br />
We need it in klingon language!!<br />
<br />
::Done, maybe I writting incorrectly but in theory ]I use Arch + Perfection + augmentative, aka Arch is pmore than perfect<br />
<br />
== Brithenig ==<br />
Iso code brz, We need brithenig to e perfect</div>
Jristz
https://wiki.archlinux.org/index.php?title=Arch_is_the_best&diff=271833
Arch is the best
2013-08-20T10:02:44Z
<p>Jristz: /* Translations */</p>
<hr />
<div>[[Category:About Arch]]<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 [https://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 />
== Install ==<br />
<br />
A sample PKGBUILD has been uploaded to AUR called {{aur|archbest-mod1}}.<br />
<br />
== The Code ==<br />
<br />
The "Arch is the best" project is ported to many programming languages.<br />
<br />
<br />
'''Ada''' - A systems critical programming language.<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 />
'''ATS''' - A functional programming language that uses dependent types to improve programs' reliability.<br />
implement main () = println! "Arch is the best!"<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="See_also"//;t;p;bd'|sed '/<i>.*<\/i>/d;s/<[^>]*>//g'|sed 'N;s/\n/: /;N;N;s/\n//g'<br />
</pre><br />
<br />
<br />
'''brainfuck''' - 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 read-choice []<br />
(println "\nAvailable languages: ")<br />
(doall (map #(println (key %)) translations))<br />
(print "Enter language or Ctrl-c: ") (flush)<br />
(translations (read-line) :badinput))<br />
<br />
(defn arch-is-the-best []<br />
(loop [choice (read-choice)]<br />
(case choice<br />
:badinput (do (print "\nBad input!\n")<br />
(recur (read-choice)))<br />
(do (print "\n" choice "\n")<br />
(recur (read-choice))))))<br />
or<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 />
"street" "Arch iz da shizzle ma nizzle"})<br />
(while 1<br />
(println "\nPick a language:\n" (map #(key %) translations) "\n language: ")<br />
(println (translations (read-line) "Not a valid language")))<br />
<br />
<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 />
'''Dart''' - Google's javascript killer<br />
main(){<br />
print('Arch is the best');<br />
}<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 />
Or using message passing between processes<br />
<br />
-module(arch).<br />
-export([ultimate_question/0,the_answer/0]).<br />
the_answer() -><br />
receive<br />
{Client,who_is_the_best} -><br />
Client ! {self(),"Arch is the best!"};<br />
{Client,_} -><br />
Client ! {self(),"Taco Taco Taco!"}<br />
end,<br />
the_answer().<br />
ultimate_question() -><br />
Pid = spawn(arch,the_answer,[]),<br />
Pid ! {self(),who_is_the_best},<br />
receive<br />
{Pid,Response} -> io:format("~s~n",[Response])<br />
end.<br />
<br />
<br />
'''Factor''' - High-level stack-based language.<br />
"Arch is the best" print<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 />
print "Arch is the best!"<br />
<br />
<br />
'''Nasm(x86_64) (or yasm)''' - Notice that the string is in the .text section, which feels superior<br />
<br />
;nasm -f elf64 arch.asm<br />
;ld -o arch arch.o<br />
;./arch<br />
<br />
section .text<br />
global _start<br />
_start:<br />
mov edx,len<br />
mov ecx,msg<br />
mov ebx,1<br />
mov eax,4<br />
int 0x80<br />
xor ebx,ebx<br />
mov eax,1<br />
int 0x80<br />
msg: db "Arch is the best!",10<br />
len equ $-msg<br />
<br />
<br />
'''Nimrod''' - Portable lightweight programming language.<br />
echo "Arch is the best!"<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 />
'''Octave''' - High-level interpreted language, primarily intended for numerical computations.<br />
printf("Arch is the best!\n")<br />
<br />
'''Ook!''' - brainfuck, translated to Orangutan<br />
Ook. Ook. Ook. Ook. Ook. Ook? Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook? Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook? Ook. Ook. Ook. Ook! Ook? Ook. Ook? Ook! Ook? Ook! Ook! Ook. Ook? Ook. Ook. Ook? Ook. Ook? Ook! Ook? Ook. Ook! Ook! Ook. Ook? Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook? Ook. Ook? Ook! Ook. Ook? Ook. Ook? Ook! Ook. Ook? Ook. Ook! Ook? Ook! Ook! Ook? Ook! Ook. Ook? Ook! Ook? Ook! Ook! Ook? Ook. Ook. Ook. Ook. Ook. Ook. Ook? Ook? Ook! Ook? Ook. Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook. Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook! Ook. Ook? Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook! Ook? Ook! Ook! Ook? Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook? Ook? Ook! Ook? Ook. Ook! Ook. Ook. Ook? Ook. Ook? Ook. Ook. Ook! Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook! Ook. Ook? Ook. Ook? Ook. Ook! Ook. Ook. Ook? Ook. Ook? Ook. Ook. Ook! Ook. Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook. Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook. Ook? Ook. Ook? Ook. Ook! Ook. Ook. Ook? Ook. Ook? Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook! Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook! Ook. Ook. Ook. Ook! Ook. Ook? Ook. Ook? Ook. Ook. Ook. Ook! Ook. Ook! Ook? Ook! Ook! Ook? Ook! Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook! Ook.<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 />
'''Scala''' - A multi paradigm language that runs on the JVM<br />
object ArchIsBest extends App {<br />
println("Arch is the best!")<br />
} <br />
<br />
<br />
<br />
'''Scheme''' - A dialect of Lisp.<br />
(display "Arch is the best!\n")<br />
or in XunDu style<br />
#!/usr/bin/guile1.8 -s<br />
!#<br />
(define 节 or)<br />
(define 哀 #t)<br />
(define (xi) (display "Arch is the best!\n"))<br />
(节 (xi) 哀 (wen) 顺 (le) 变 (jian) )<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 />
'''Catalan'''<br />
Arch és el millor!<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 />
'''Old English'''<br />
Arch biþ betst!<br />
<br />
'''Esperanto'''<br />
Arch plejbonas!<br />
<br />
'''Estonian'''<br />
Arch on parim!<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 />
'''Ancient Greek'''<br />
Ἆρχ ἄριστον!<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 />
'''Persian'''<br />
طاق بزرگ است<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 (Standard)'''<br />
¡Arch es el mejor!<br />
<br />
'''Spanish (Argentina)'''<br />
Arch es una mazza!!<br />
<br />
'''Spanish (Chile)'''<br />
Arch es bacán<br />
<br />
'''Spanish (Chile, low class)'''<br />
Arch es la raja<br />
<br />
'''Spanish (Chile, marginal)'''<br />
This are writted in IPA because standard spanish not have those sounds<br />
ˈæɹʃ ɛːʰ tɜ.rˈiː.u.lɛ la rˈa.χa ʃʊ.ɹʊ<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 />
'''Telugu'''<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 />
'''Welsh (Cymraeg)'''<br />
<br />
Emphasis on being the best (one):<br />
Yr orau un yw Arch!<br />
Y gorau un yw Arch!<br />
Emphasis on Arch:<br />
Arch sydd yr orau un!<br />
Arch sydd y gorau un!<br />
<br />
'''Klingon'''<br />
Arch'pu'ta' 'a'<br />
<br />
== See also ==<br />
<br />
* [https://bbs.archlinux.org/viewtopic.php?id=47306 forum Thread]</div>
Jristz
https://wiki.archlinux.org/index.php?title=Arch_is_the_best&diff=271831
Arch is the best
2013-08-20T10:00:59Z
<p>Jristz: /* Translations */</p>
<hr />
<div>[[Category:About Arch]]<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 [https://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 />
== Install ==<br />
<br />
A sample PKGBUILD has been uploaded to AUR called {{aur|archbest-mod1}}.<br />
<br />
== The Code ==<br />
<br />
The "Arch is the best" project is ported to many programming languages.<br />
<br />
<br />
'''Ada''' - A systems critical programming language.<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 />
'''ATS''' - A functional programming language that uses dependent types to improve programs' reliability.<br />
implement main () = println! "Arch is the best!"<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="See_also"//;t;p;bd'|sed '/<i>.*<\/i>/d;s/<[^>]*>//g'|sed 'N;s/\n/: /;N;N;s/\n//g'<br />
</pre><br />
<br />
<br />
'''brainfuck''' - 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 read-choice []<br />
(println "\nAvailable languages: ")<br />
(doall (map #(println (key %)) translations))<br />
(print "Enter language or Ctrl-c: ") (flush)<br />
(translations (read-line) :badinput))<br />
<br />
(defn arch-is-the-best []<br />
(loop [choice (read-choice)]<br />
(case choice<br />
:badinput (do (print "\nBad input!\n")<br />
(recur (read-choice)))<br />
(do (print "\n" choice "\n")<br />
(recur (read-choice))))))<br />
or<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 />
"street" "Arch iz da shizzle ma nizzle"})<br />
(while 1<br />
(println "\nPick a language:\n" (map #(key %) translations) "\n language: ")<br />
(println (translations (read-line) "Not a valid language")))<br />
<br />
<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 />
'''Dart''' - Google's javascript killer<br />
main(){<br />
print('Arch is the best');<br />
}<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 />
Or using message passing between processes<br />
<br />
-module(arch).<br />
-export([ultimate_question/0,the_answer/0]).<br />
the_answer() -><br />
receive<br />
{Client,who_is_the_best} -><br />
Client ! {self(),"Arch is the best!"};<br />
{Client,_} -><br />
Client ! {self(),"Taco Taco Taco!"}<br />
end,<br />
the_answer().<br />
ultimate_question() -><br />
Pid = spawn(arch,the_answer,[]),<br />
Pid ! {self(),who_is_the_best},<br />
receive<br />
{Pid,Response} -> io:format("~s~n",[Response])<br />
end.<br />
<br />
<br />
'''Factor''' - High-level stack-based language.<br />
"Arch is the best" print<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 />
print "Arch is the best!"<br />
<br />
<br />
'''Nasm(x86_64) (or yasm)''' - Notice that the string is in the .text section, which feels superior<br />
<br />
;nasm -f elf64 arch.asm<br />
;ld -o arch arch.o<br />
;./arch<br />
<br />
section .text<br />
global _start<br />
_start:<br />
mov edx,len<br />
mov ecx,msg<br />
mov ebx,1<br />
mov eax,4<br />
int 0x80<br />
xor ebx,ebx<br />
mov eax,1<br />
int 0x80<br />
msg: db "Arch is the best!",10<br />
len equ $-msg<br />
<br />
<br />
'''Nimrod''' - Portable lightweight programming language.<br />
echo "Arch is the best!"<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 />
'''Octave''' - High-level interpreted language, primarily intended for numerical computations.<br />
printf("Arch is the best!\n")<br />
<br />
'''Ook!''' - brainfuck, translated to Orangutan<br />
Ook. Ook. Ook. Ook. Ook. Ook? Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook? Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook? Ook. Ook. Ook. Ook! Ook? Ook. Ook? Ook! Ook? Ook! Ook! Ook. Ook? Ook. Ook. Ook? Ook. Ook? Ook! Ook? Ook. Ook! Ook! Ook. Ook? Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook? Ook. Ook? Ook! Ook. Ook? Ook. Ook? Ook! Ook. Ook? Ook. Ook! Ook? Ook! Ook! Ook? Ook! Ook. Ook? Ook! Ook? Ook! Ook! Ook? Ook. Ook. Ook. Ook. Ook. Ook. Ook? Ook? Ook! Ook? Ook. Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook. Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook! Ook. Ook? Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook! Ook? Ook! Ook! Ook? Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook? Ook? Ook! Ook? Ook. Ook! Ook. Ook. Ook? Ook. Ook? Ook. Ook. Ook! Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook! Ook. Ook? Ook. Ook? Ook. Ook! Ook. Ook. Ook? Ook. Ook? Ook. Ook. Ook! Ook. Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook. Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook. Ook? Ook. Ook? Ook. Ook! Ook. Ook. Ook? Ook. Ook? Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook! Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook! Ook. Ook. Ook. Ook! Ook. Ook? Ook. Ook? Ook. Ook. Ook. Ook! Ook. Ook! Ook? Ook! Ook! Ook? Ook! Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook! Ook.<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 />
'''Scala''' - A multi paradigm language that runs on the JVM<br />
object ArchIsBest extends App {<br />
println("Arch is the best!")<br />
} <br />
<br />
<br />
<br />
'''Scheme''' - A dialect of Lisp.<br />
(display "Arch is the best!\n")<br />
or in XunDu style<br />
#!/usr/bin/guile1.8 -s<br />
!#<br />
(define 节 or)<br />
(define 哀 #t)<br />
(define (xi) (display "Arch is the best!\n"))<br />
(节 (xi) 哀 (wen) 顺 (le) 变 (jian) )<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 />
'''Catalan'''<br />
Arch és el millor!<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 />
'''Old English'''<br />
Arch biþ betst!<br />
<br />
'''Esperanto'''<br />
Arch plejbonas!<br />
<br />
'''Estonian'''<br />
Arch on parim!<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 />
'''Ancient Greek'''<br />
Ἆρχ ἄριστον!<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 />
'''Persian'''<br />
طاق بزرگ است<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 (Standard)'''<br />
¡Arch es el mejor!<br />
<br />
'''Spanish (Argentina)'''<br />
Arch es una mazza!!<br />
<br />
'''Spanish (Chile)'''<br />
Arch es bacán<br />
<br />
'''Spanish (Chile, low class)'''<br />
Arch es la raja<br />
<br />
'''Spanish (Chile, marginal)'''<br />
This are writted in IPA because standard spanish not have those sounds<br />
ˈæɹʃ ɛːʰ tɜ.rˈiː.u.lɛ la rˈa.χa ʃʊ.ɹʊ<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 />
'''Telugu'''<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 />
'''Welsh (Cymraeg)'''<br />
<br />
Emphasis on being the best (one):<br />
Yr orau un yw Arch!<br />
Y gorau un yw Arch!<br />
Emphasis on Arch:<br />
Arch sydd yr orau un!<br />
Arch sydd y gorau un!<br />
<br />
'''Klingon'''<br />
Arch'pu'ta''a'<br />
<br />
== See also ==<br />
<br />
* [https://bbs.archlinux.org/viewtopic.php?id=47306 forum Thread]</div>
Jristz
https://wiki.archlinux.org/index.php?title=Arch_is_the_best&diff=271824
Arch is the best
2013-08-20T09:42:30Z
<p>Jristz: /* Translations */</p>
<hr />
<div>[[Category:About Arch]]<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 [https://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 />
== Install ==<br />
<br />
A sample PKGBUILD has been uploaded to AUR called {{aur|archbest-mod1}}.<br />
<br />
== The Code ==<br />
<br />
The "Arch is the best" project is ported to many programming languages.<br />
<br />
<br />
'''Ada''' - A systems critical programming language.<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 />
'''ATS''' - A functional programming language that uses dependent types to improve programs' reliability.<br />
implement main () = println! "Arch is the best!"<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="See_also"//;t;p;bd'|sed '/<i>.*<\/i>/d;s/<[^>]*>//g'|sed 'N;s/\n/: /;N;N;s/\n//g'<br />
</pre><br />
<br />
<br />
'''brainfuck''' - 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 read-choice []<br />
(println "\nAvailable languages: ")<br />
(doall (map #(println (key %)) translations))<br />
(print "Enter language or Ctrl-c: ") (flush)<br />
(translations (read-line) :badinput))<br />
<br />
(defn arch-is-the-best []<br />
(loop [choice (read-choice)]<br />
(case choice<br />
:badinput (do (print "\nBad input!\n")<br />
(recur (read-choice)))<br />
(do (print "\n" choice "\n")<br />
(recur (read-choice))))))<br />
or<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 />
"street" "Arch iz da shizzle ma nizzle"})<br />
(while 1<br />
(println "\nPick a language:\n" (map #(key %) translations) "\n language: ")<br />
(println (translations (read-line) "Not a valid language")))<br />
<br />
<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 />
'''Dart''' - Google's javascript killer<br />
main(){<br />
print('Arch is the best');<br />
}<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 />
Or using message passing between processes<br />
<br />
-module(arch).<br />
-export([ultimate_question/0,the_answer/0]).<br />
the_answer() -><br />
receive<br />
{Client,who_is_the_best} -><br />
Client ! {self(),"Arch is the best!"};<br />
{Client,_} -><br />
Client ! {self(),"Taco Taco Taco!"}<br />
end,<br />
the_answer().<br />
ultimate_question() -><br />
Pid = spawn(arch,the_answer,[]),<br />
Pid ! {self(),who_is_the_best},<br />
receive<br />
{Pid,Response} -> io:format("~s~n",[Response])<br />
end.<br />
<br />
<br />
'''Factor''' - High-level stack-based language.<br />
"Arch is the best" print<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 />
print "Arch is the best!"<br />
<br />
<br />
'''Nasm(x86_64) (or yasm)''' - Notice that the string is in the .text section, which feels superior<br />
<br />
;nasm -f elf64 arch.asm<br />
;ld -o arch arch.o<br />
;./arch<br />
<br />
section .text<br />
global _start<br />
_start:<br />
mov edx,len<br />
mov ecx,msg<br />
mov ebx,1<br />
mov eax,4<br />
int 0x80<br />
xor ebx,ebx<br />
mov eax,1<br />
int 0x80<br />
msg: db "Arch is the best!",10<br />
len equ $-msg<br />
<br />
<br />
'''Nimrod''' - Portable lightweight programming language.<br />
echo "Arch is the best!"<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 />
'''Octave''' - High-level interpreted language, primarily intended for numerical computations.<br />
printf("Arch is the best!\n")<br />
<br />
'''Ook!''' - brainfuck, translated to Orangutan<br />
Ook. Ook. Ook. Ook. Ook. Ook? Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook? Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook? Ook. Ook. Ook. Ook! Ook? Ook. Ook? Ook! Ook? Ook! Ook! Ook. Ook? Ook. Ook. Ook? Ook. Ook? Ook! Ook? Ook. Ook! Ook! Ook. Ook? Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook? Ook. Ook? Ook! Ook. Ook? Ook. Ook? Ook! Ook. Ook? Ook. Ook! Ook? Ook! Ook! Ook? Ook! Ook. Ook? Ook! Ook? Ook! Ook! Ook? Ook. Ook. Ook. Ook. Ook. Ook. Ook? Ook? Ook! Ook? Ook. Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook. Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook! Ook. Ook? Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook! Ook? Ook! Ook! Ook? Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook? Ook? Ook! Ook? Ook. Ook! Ook. Ook. Ook? Ook. Ook? Ook. Ook. Ook! Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook! Ook. Ook? Ook. Ook? Ook. Ook! Ook. Ook. Ook? Ook. Ook? Ook. Ook. Ook! Ook. Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook. Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook. Ook? Ook. Ook? Ook. Ook! Ook. Ook. Ook? Ook. Ook? Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook! Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook! Ook. Ook. Ook. Ook! Ook. Ook? Ook. Ook? Ook. Ook. Ook. Ook! Ook. Ook! Ook? Ook! Ook! Ook? Ook! Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook! Ook.<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 />
'''Scala''' - A multi paradigm language that runs on the JVM<br />
object ArchIsBest extends App {<br />
println("Arch is the best!")<br />
} <br />
<br />
<br />
<br />
'''Scheme''' - A dialect of Lisp.<br />
(display "Arch is the best!\n")<br />
or in XunDu style<br />
#!/usr/bin/guile1.8 -s<br />
!#<br />
(define 节 or)<br />
(define 哀 #t)<br />
(define (xi) (display "Arch is the best!\n"))<br />
(节 (xi) 哀 (wen) 顺 (le) 变 (jian) )<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 />
'''Catalan'''<br />
Arch és el millor!<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 />
'''Old English'''<br />
Arch biþ betst!<br />
<br />
'''Esperanto'''<br />
Arch plejbonas!<br />
<br />
'''Estonian'''<br />
Arch on parim!<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 />
'''Ancient Greek'''<br />
Ἆρχ ἄριστον!<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 />
'''Persian'''<br />
طاق بزرگ است<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 (Standard)'''<br />
¡Arch es el mejor!<br />
<br />
'''Spanish (Argentina)'''<br />
Arch es una mazza!!<br />
<br />
'''Spanish (Chile)'''<br />
Arch es bacán<br />
<br />
'''Spanish (Chile, low class)'''<br />
Arch es la raja<br />
<br />
'''Spanish (Chile, marginal)'''<br />
This are writted in IPA because standard spanish not have those sounds<br />
ˈæɹʃ ɛːʰ tɜ.rˈiː.u.lɛ la rˈa.χa ʃʊ.ɹʊ<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 />
'''Telugu'''<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 />
'''Welsh (Cymraeg)'''<br />
<br />
Emphasis on being the best (one):<br />
Yr orau un yw Arch!<br />
Y gorau un yw Arch!<br />
Emphasis on Arch:<br />
Arch sydd yr orau un!<br />
Arch sydd y gorau un!<br />
<br />
'''Klingon'''<br />
Arch'a'pu'ta'<br />
<br />
== See also ==<br />
<br />
* [https://bbs.archlinux.org/viewtopic.php?id=47306 forum Thread]</div>
Jristz
https://wiki.archlinux.org/index.php?title=AppArmor&diff=269712
AppArmor
2013-08-04T02:27:05Z
<p>Jristz: /* apparmor package */</p>
<hr />
<div>[[Category:Security]]<br />
[[Category:Kernel]]<br />
{{Out of date}}<br />
<br />
[[Wikipedia:AppArmor|AppArmor]] is a MAC (Mandatory Access Control) system, implemented upon LSM (Linux Security Modules).<br />
<br />
== Preventing circumvention of path-based MAC via links ==<br />
<br />
AppArmor can be circumvented via hardlinks in the standard POSIX security model. However, the kernel now includes the ability to prevent this vulnerability, without needing the patches distributions like Ubuntu have applied to their kernels as workarounds.<br />
<br />
See [[Sysctl#Preventing_link_TOCTOU_vulnerabilities]] for details.<br />
<br />
== Implementation Status ==<br />
AppArmor is currently available in the [https://bugs.archlinux.org/task/21406 Arch Linux kernel], but it has to be activated on kernel boot. <br />
<br />
The userspace support requires [[AUR]] packages.<br />
<br />
* https://aur.archlinux.org/packages.php?ID=42279<br />
<br />
Not all the packages work out-of-the-box, but it is a work in progress. If you know how to build profiles yourself you shouldn't have too many problems. <br />
Also there is an [https://aur.archlinux.org/packages.php?ID=60269 AUR kernel] <br />
which includes apparmor specific patches from Ubuntu's [https://launchpad.net/apparmor launchpad]. <br />
<br />
=== AUR/apparmor package ===<br />
Added lot of features:<br />
* apparmor-parser<br />
* libapparmor<br />
* apparmor-utils<br />
* apparmor-profiles<br />
* apparmor-notify<br />
* apparmor-lib<br />
* apparmor-perl<br />
* apparmor-python<br />
* apparmor-ruby<br />
* apparmor-dbus<br />
* apparmor-profile-editor<br />
<br />
But we still miss following features (TODO):<br />
* A systemd .service for every important daemon in AppArmor<br />
* chase missing dependencies<br />
* test everything<br />
* make list of files that should go to backup=() arrays in packages...<br />
* changehat modules for PAM(!), Apache and Tomcat (btw those are dependent on libapparmor)<br />
* out-of-box-experience know-how<br />
** make some package with profiles for all [core] packages enabled by default without need for any further user configuration<br />
** etc...<br />
* apparmor gnome applet (can't build, deprecated..., find a working Remplacenment)<br />
<br />
== Links ==<br />
* Official pages<br />
** Kernel: https://apparmor.wiki.kernel.org/ http://wiki.apparmor.net/index.php/Main_Page<br />
** Userspace: https://launchpad.net/apparmor<br />
<br />
* http://www.kernel.org/pub/linux/security/apparmor/AppArmor-2.6/<br />
* http://wiki.apparmor.net/index.php/AppArmor_Core_Policy_Reference<br />
<br />
* http://ubuntuforums.org/showthread.php?t=1008906 (Tutorial)<br />
* https://help.ubuntu.com/community/AppArmor<br />
*{{Bug|21406}}<br />
* http://stuff.mit.edu/afs/sipb/contrib/linux/Documentation/apparmor.txt <br />
* http://wiki.apparmor.net/index.php/Kernel_interfaces<br />
* http://wiki.apparmor.net/index.php/AppArmor_versions<br />
* http://manpages.ubuntu.com/manpages/oneiric/man5/apparmor.d.5.html<br />
* http://manpages.ubuntu.com/manpages/oneiric/man8/apparmor_parser.8.html<br />
* http://wiki.apparmor.net/index.php/Distro_CentOS<br />
* http://bodhizazen.net/aa-profiles/<br />
* https://wiki.ubuntu.com/ApparmorProfileMigration<br />
* [[wikipedia:Linux_Security_Modules]]<br />
* http://wiki.apparmor.net/index.php/Gittutorial<br />
<br />
== AppArmor Packages ==<br />
* Arch's {{Pkg|linux}} package has AppArmor support<br />
* aur/[https://aur.archlinux.org/packages.php?ID=42279 apparmor]<br />
<br />
== Kernel Configuration ==<br />
Here is configuration of ArchLinux kernel which enables AppArmor (just FYI, you do not need to touch it):<br />
CONFIG_SECURITY_APPARMOR=y<br />
CONFIG_SECURITY_APPARMOR_BOOTPARAM_VALUE=0<br />
# CONFIG_DEFAULT_SECURITY_APPARMOR is not set<br />
<br />
However, integration of AppArmor into the kernel is not quite complete. It is missing network mediation and some of the interfaces for introspection. See [https://apparmor.wiki.kernel.org/index.php/Apparmor/upstream_release_notes here] for details. The introspection interfaces are necessary for some tools to work correctly including {{ic|aa-status}} and {{ic|aa-genprof}}. There are compatibility patches provided with the AppArmor tarball that can be applied to every recent kernel to reintroduce these interfaces. The patchset is pretty small and should be applied if you decide to use AppArmor. A suitably patched kernel is provided by the AUR package {{AUR|linux-apparmor}}.<br />
<br />
== Bootloader Configuration ==<br />
=== Enable ===<br />
To test profiles, or enforce the use of AppArmor it must be enabled at boot time. To do this add {{ic|1=apparmor=1 security=apparmor}} to the [[kernel parameters|kernel boot parameters]]. <br />
<br />
After reboot you can test if AppArmor is really enabled using this command as root:<br />
# cat /sys/module/apparmor/parameters/enabled <br />
Y<br />
(Y=enabled, N=disabled, no such file = module not in kernel)<br />
<br />
=== Disable ===<br />
AppArmor will be disabled by default in Arch Linux, so you will not need to disable it explicitly until you will build your own kernel with AppArmor enabled by default. If so, Add {{ic|1=apparmor=0 security=""}} to [[kernel parameters|kernel boot parameters]].<br />
<br />
== System Configuration ==<br />
=== Mounts (/etc/fstab securityfs) ===<br />
http://wiki.apparmor.net/index.php/Kernel_interfaces<br />
none /sys/kernel/security securityfs defaults 0 0<br />
=== Systemd support ===<br />
The AUR package {{AUR|apparmor}} includes a systemd service file that loads all AppArmor profiles in {{ic|/etc/apparmor.d/}}. To enable it to run on boot, use:<br />
{{bc|# systemctl enable apparmor}}<br />
<br />
== UserSpace Tools ==<br />
=== Users ===<br />
You can currently install userspace tools from [[AUR]].<br />
<br />
=== Maintainers ===<br />
You need userspace tools that are compatible with your kernel version. The compatibility list can be found here: http://wiki.apparmor.net/index.php/AppArmor_versions<br />
e.g.: Kernel 2.6.36 is compatible with AppArmor 2.5.1<br />
<br />
== More Info ==<br />
AppArmor, like most other LSMs, supplements rather than replaces the default Discretionary access control. As such it's impossible to grant a process more privileges than it had in the first place. <br />
<br />
Ubuntu, SUSE and a number of other distributions use it by default. RHEL (and it's variants) use SELinux which requires good userspace integration to work properly. People tend to agree that it is also much much harder to configure correctly. <br />
<br />
Taking a common example - A new Flash vulnerability: If you were to browse to a malicious website AppArmor can prevent the exploited plugin from accessing anything that may contain private information. In almost all browsers, plugins run out of process which makes isolating them much easier.<br />
<br />
AppArmor profiles (usually) get stored in easy to read text files in {{ic|/etc/apparmor.d}}<br />
<br />
Every breach of policy triggers a message in the system log, and many distributions also integrate it into DBUS so that you get real-time violation warnings popping up on your desktop.<br />
<br />
== See also ==<br />
* [[TOMOYO Linux]]<br />
* [[SELinux]]</div>
Jristz
https://wiki.archlinux.org/index.php?title=Talk:VCS_package_guidelines&diff=257382
Talk:VCS package guidelines
2013-05-17T18:52:29Z
<p>Jristz: /* More on git pkgver()'s */</p>
<hr />
<div>== https:// vs git:// ==<br />
<br />
Could we consider a guideline to use firewall-friendly protocols when possible (e.g. https://github.com/matplotlib/matplotlib.git instead of git://github.com/matplotlib/matplotlib.git)?<br />
--[[User:Mitch feaster|Mitch feaster]] 14:34, 15 November 2011 (EST)<br />
<br />
:It shouldn't be too hard to just mention that. As I haven't heard of anybody else ever bringing it up, it'd probably be enough.<br />
:--[[User:Det|Det]] ([[User talk:Det|talk]]) 22:51, 2 May 2013 (UTC)<br />
<br />
== Updating a CVS repo ==<br />
I don't use cvs. How can you describe the pkgver for cvs (for pacman 4.1)? <br><br />
-- [[User:Dracorp|Dracorp]] ([[User talk:Dracorp|talk]]) 09:31, 6 April 2013 (UTC)<br />
<br />
:CVS is not supported in pacman 4.1 like the other VCS tools. You will need to update pkgver manually until CVS support is added.<br />
:-- [[User:Jstjohn|Jstjohn]] ([[User talk:Jstjohn|talk]]) 22:44, 15 April 2013 (UTC)<br />
<br />
::Yeah, but how about mentioning that in the article (as well as giving a download example)? Even if it's not that common anymore.<br />
::--[[User:Det|Det]] ([[User talk:Det|talk]]) 22:39, 2 May 2013 (UTC)<br />
<br />
:::The download example can still be found in /usr/share/pacman. The next version of the ABS package should update it a bit so the download happens in the prepare function where it belongs. As for pkgver, I think the generic example using date covers that, as there's not a way to get a version number from a CVS repo. Maybe a note to that effect?<br />
::: -- [[User:Scimmia|Scimmia]] ([[User talk:Scimmia|talk]]) 07:17, 15 May 2013 (UTC)<br />
<br />
== Checking out branches/tags needs clarification ==<br />
<br />
The {{ic|#fragment}} part of the VCS source URL has a different meaning for each type of VCS.<br />
This can be confusing for people, especially when they are trying to checkout a specific branch or tag.<br />
Examples would reduce the chance for confusion a lot.<br />
<br />
fictional examples for git and svn (don't have experience with bzr or HG)<br />
<br />
check out branch {{ic|git_test}} of git://myproject.com into folder {{ic|my_git_code}} :<br />
my_git_code::git://myproject.com/'''#branch=git_test'''<br />
<br />
Check out branch {{ic|svn_test}} of svn://myproject.com into folder {{ic|my_svn_code}} :<br />
my_svn_code::svn://myproject.com/'''branches/svn_test'''<br />
<br />
[[User:Lone Wolf|Lone_Wolf]] ([[User talk:Lone Wolf|talk]]) 20:49, 16 April 2013 (UTC)<br />
<br />
:Makes sense. At least for those two.<br />
:--[[User:Det|Det]] ([[User talk:Det|talk]]) 22:53, 2 May 2013 (UTC)<br />
<br />
== More on git pkgver()'s ==<br />
<br />
I would also like to see packages use {{ic|pkgver}} functions like this:<br />
<br />
git describe --always --long | sed -E 's/([^-]*-g)/r\1/;s/-/./g'<br />
<br />
so they are more friendly to {{ic|vercmp}}. <br />
Current behaviour using git-git as an example:<br />
<br />
current ver: {{ic|1.8.2.210.g123abc-1}}<br />
next ver: {{ic|1.8.2.1.50.g123abc-1}}<br />
vercmp 1.8.2.210.g123abc 1.8.2.1.50.g123abc<br />
1 # the first is greater than the second<br />
<br />
Right now, the current version is actually greater than the new version, causing a downgrade. If {{ic|r}} is appended to the patch level (the numbers just before the {{ic|g<hex>}} bit), then {{ic|vercmp}} would order the versions correctly.<br />
<br />
current ver: {{ic|1.8.2.r210.g123abc-1}}<br />
next ver: {{ic|1.8.2.1.r50.g123abc-1}}<br />
vercmp 1.8.2.r210.g123abc 1.8.2.1.r50.g123abc<br />
-1 # the first is less than the second<br />
<br />
[[User:KaiSforza|KaiSforza]] ([[User talk:KaiSforza|talk]]) 20:42, 18 April 2013 (UTC)<br />
<br />
:So Git makes some projects jump down from {{ic|x.x.x.210}} to {{ic|x.x.x.x.50}}? Is that really intended behavior?<br />
:--[[User:Det|Det]] ([[User talk:Det|talk]]) 22:48, 2 May 2013 (UTC)<br />
<br />
::Yes, that's intended behavior. That number is the number of commits since the last tag, so it will reset every time the author tags a new commit.<br />
::[[User:Scimmia|Scimmia]] ([[User talk:Scimmia|talk]]) 08:02, 4 May 2013 (UTC)<br />
<br />
:::I noticed just now there's the {{ic|.1}}.<br />
:::--[[User:Det|Det]] ([[User talk:Det|talk]]) 20:44, 14 May 2013 (UTC)<br />
<br />
::::Why not make the change for use .r or ~ instead from the actual . for prevent that problem<br />
<br />
== Clarifying the first Git function ==<br />
Instead of just {{ic|<nowiki>sed 's|-|.|g'</nowiki>}} it'd probably be better to give some example with {{ic|cut}} (which you're probably gonna end up using anyway) and {{ic|tr}} (which is simpler than {{ic|sed}}). Then you could either explain it like this or just mention the man pages: ''"{{ic|cut -d "-" -f2-}} cuts from the first hyphen (-) to the end, {{ic|tr - .}} converts hyphens to dots (.) and {{ic|tr -d -}} removes the hyphens"''.<br />
<br />
Also the output should be something like {{ic|2.0.6.'''a17a017'''}} to include the {{ic|$(git rev-parse --short HEAD)}} part for clarification.<br />
<br />
Example:<br />
{{hc|<nowiki>pkgver() {<br />
cd local_repo<br />
git describe --always | cut -d "-" -f2- | tr - .<br />
}</nowiki>|<br />
2.0.6.a17a017<br />
}}<br />
{{Note|See the man pages of [http://unixhelp.ed.ac.uk/CGI/man-cgi?cut cut(1)] and [http://unixhelp.ed.ac.uk/CGI/man-cgi?tr+1 tr(1)] for more info.}}<br />
--[[User:Det|Det]] ([[User talk:Det|talk]]) 00:22, 3 May 2013 (UTC)<br />
<br />
:Did you test this before posting? It doesn't do anything like you think it does. [[User:Scimmia|Scimmia]] ([[User talk:Scimmia|talk]]) 22:29, 4 May 2013 (UTC)<br />
<br />
::Well, my friend, that's what makes it an ''example''. The reason I'm using {{ic|cut}} is to remove the actual project names that are often included in their tags. All the sed example does is change the hyphens ({{ic|-}}) to dots ({{ic|.}}), which is simpler to do with {{ic|tr - .}} anyway.<br />
<br />
::What _makes_ it so hard is that there ''isn't'' a single solution that somehow magicly worked on all scenarios. Even if you decided to be clever and started cutting the output up until the first number (with something like {{ic|$ sed 's/\([^0-9]*\)\(.*\)/\2/g'}}), you'd still end up with the wrong result whenever the "version" starts with a letter or the project name ends with a number.<br />
::--[[User:Det|Det]] ([[User talk:Det|talk]]) 21:04, 7 May 2013 (UTC)<br />
<br />
:::Ah, I see now, you were addressing a special case. You're right, there ''isn't'' a single solution. You're also right that {{ic|tr}} is simpler and should probably be used in the example if that's all the example is going to show. It seems to be fairly common, though, to include a "v" at the beginning of the version number, in which case you'd already be using {{ic|sed}} anyway so you can just do {{ic|sed 's/^v//;s/-/./g'}} So many ways of doing the same job. [[User:Scimmia|Scimmia]] ([[User talk:Scimmia|talk]]) 02:15, 8 May 2013 (UTC)<br />
<br />
::::That only works when they do. It doesn't remove the names from the tags, which are included in things like Wine and the entire X stack.<br />
::::{{ic|<nowiki>git describe --always | sed 's/\([^0-9]*\)\(.*\)/\2/g; s/-/./g'</nowiki>}} is the most universal approach I can think of. But it's unreadable and a lot harder to edit than some {{ic|cut}}/{{ic|tr}} combination.<br />
:::: --[[User:Det|Det]] ([[User talk:Det|talk]]) 20:37, 14 May 2013 (UTC)<br />
<br />
:::::Yeah, my example was a special case as well. I'm really thinking that this is a situation where it's best just to include a very simple example and let the maintainer customize it as needed instead of trying to find a convoluted solution that works everywhere.<br />
::::: -- [[User:Scimmia|Scimmia]] ([[User talk:Scimmia|talk]]) 07:11, 15 May 2013 (UTC)</div>
Jristz
https://wiki.archlinux.org/index.php?title=JACK_Audio_Connection_Kit&diff=238402
JACK Audio Connection Kit
2012-12-04T16:29:40Z
<p>Jristz: {{outdated, Initscript and all related to id as ben deprecated and remplaced for systemd}}</p>
<hr />
<div>[[Category:Audio/Video]]<br />
{{outdated}} Initscript and all related to id as ben deprecated and remplaced for systemd<br />
<br />
==Install==<br />
In order for jack to work, your user needs to be [[Users and Groups#Group management|added]] to the {{ic|audio}} group for direct access to hardware.<br />
<br />
===JACK2 - rewritten explicitly towards multiprocessor hardware===<br />
JACK2 is currently available in the [community] and can be installed from there using<br />
pacman -S jack2<br />
or<br />
pacman -S jack2-dbus<br />
<br />
Jack2 without [[D-Bus]] executes similarly to Jack1. With D-Bus, control is done using the jack_control utility. Run `jack_control` to see what it does. The important commands are listed below:<br />
jack_control start - starts the jack server<br />
jack_control stop - stops the jack server<br />
jack_control ds alsa - selects alsa as the driver (backend)<br />
jack_control eps realtime True - set engine parameters, such as realtime<br />
jack_control dps period 256 - set the driver parameter period to 256<br />
<br />
You may also need to play with the driver parameters nperiods and rate.<br />
<br />
===JACK===<br />
Alternatively, there is the normal version from the extra repository, install it with:<br />
pacman -S jack<br />
<br />
==Basic Configuration==<br />
<br />
===GUI===<br />
<br />
No matter which JACK edition you are using, you will want a GUI configurator. Probably the de facto standard right now, is qjackctl:<br />
<br />
pacman -S qjackctl<br />
<br />
===Setup===<br />
<br />
====Overview====<br />
<br />
Here is a very good general overview, although do not worry about manual compilations, quite a few JACK tools work right off the wire now, ''after'' JACK is configured correctly.<br />
<br />
http://w3.linux-magazine.com/issue/67/JACK_Audio_Server.pdf<br />
<br />
Most tutorials are advising a realtime kernel, which is quite helpful for live synthesis and FX; but for purposes of recording and editing it is not necessary anymore, as long as you set up for non-realtime latencies -- 10-40+ ms, and on older hardware 100-500+ ms. <br />
<br />
The right configuration for your hardware and application needs, depends on several factors.<br />
<br />
====A Shell-Based Example Setup====<br />
<br />
The D-Bus edition of JACK2 can make startup much easier. Formerly, we had to have qjackctl start it for us, or use a daemonizer, or some other method. But as long as jack2-dbus is installed and dbus is running (which is Arch standard now), we can create a shell script as follows, to be run at X login:<br />
<br />
#!/bin/bash<br />
jack_control start<br />
sudo schedtool -R -p 20 `pidof jackdbus`<br />
jack_control eps realtime true<br />
jack_control ds alsa<br />
jack_control dps device hw:HD2<br />
jack_control dps rate 48000<br />
jack_control dps nperiods 2<br />
jack_control dps period 64<br />
sleep 10<br />
/usr/bin/a2jmidid -e &<br />
sleep 10<br />
sudo schedtool -R -p 20 `pidof a2jmidid`<br />
qjackctl &<br />
sleep 10<br />
sudo schedtool -R -p 20 `pidof qjackctl`<br />
qmidiroute /home/jeb/All2MIDI1.qmr &<br />
sleep 10<br />
sudo schedtool -R -p 20 `pidof qmidiroute`<br />
yoshimi -S &<br />
sleep 10<br />
sudo schedtool -R -p 20 `pidof yoshimi`<br />
<br />
The above will start a complete realtime JACK live-synthesis setup, integrating several tools. Details of each line follow. When discovering your own best configuration, it is helpful to do trial and error using QJackCTL's GUI with a non-D-Bus JACK2 version.<br />
<br />
=====Details of the Shell-Based Example Setup=====<br />
<br />
jack_control start<br />
Starts JACK if it is not already started.<br />
sudo schedtool -R -p 20 `pidof jackdbus`<br />
Set JACK to realtime mode in the Linux kernel, priority 20 (options range 1-99).<br />
jack_control eps realtime true<br />
Sets JACK to realtime mode in its own internal setup.<br />
jack_control ds alsa<br />
Sets JACK to use the ALSA driver set.<br />
jack_control dps device hw:HD2<br />
Sets JACK to use ALSA-compatible sound card named HD2. One can find the names with 'ls /proc/asound/cards'. Most ALSA tutorials and default configurations use card numbers, but this can get confusing when external MIDI devices are in use; names make it easier.<br />
jack_control dps rate 48000<br />
Sets JACK to use 48000 khz sampling. Happens to work very well with this card. Some cards only do 44100, many will go much higher. The higher you go, the lower your latency, but the better your card and your CPU has to be, and software has to support this as well.<br />
jack_control dps nperiods 2<br />
Sets JACK to use 2 periods. 2 is right for motherboard, PCI, PCI-X, etc.; 3 for USB.<br />
jack_control dps period 64<br />
Sets JACK to use 64 periods per frame. Lower is less latency, but the setting in this script gives 2.67 ms latency, which is nicely low without putting too much stress on the particular hardware this example was built for. If a USB sound system were in use it might be good to try 32. Anything less than 3-4 ms should be fine for realtime synthesis and/or FX, 5 ms is the smallest a human being can detect. There are many cases of perfect-storm-gorgeous hardware which can handle 1 ms latency without stressing the CPU, but definitely this is not always the case! QJackCTL will tell you how you are doing; at no-load, which means no clients attached, you will want a max of 3-5% CPU usage, and if you cannot get that without xruns (the red numbers which mean the system cannot keep up with the demands), you will have to improve your hardware. There are many inexpensive USB sound systems which produce very good quality at very low latency if the USB is good on the motherboard, but not all. <br />
sleep 10<br />
Wait for the above to settle.<br />
/usr/bin/a2jmidid -e &<br />
Start the ALSA-to-JACK MIDI bridge. Good for mixing in applications which take MIDI input through ALSA but not JACK.<br />
sleep 10<br />
Wait for the above to settle.<br />
sudo schedtool -R -p 20 `pidof a2jmidid`<br />
Set a2jmidid to realtime scheduling in the Linux kernel.<br />
qjackctl &<br />
Load QJackCTL. GUI configuration tells it to run in the system tray. It will pick up the JACK session started by D-Bus just fine, and very smoothly too. It maintains the patchbay, the connections between these applications and any other JACK-enabled apps to be started manually. The patchbay is set up using manual GUI, but connections pre-configured in the patchbay are automatically created by qjackctl itself when apps are started.<br />
sleep 10<br />
Wait for the above to settle.<br />
sudo schedtool -R -p 20 `pidof qjackctl`<br />
Set qjackctl to realtime scheduling in the Linux kernel. <br />
qmidiroute /home/username/All2MIDI1.qmr &<br />
Load qmidiroute, loading a custom-created configuration file which will rewrite all MIDI events on all channels to channel 1. This is useful when plugging the PC into any keyboard anywhere -- no matter what the keyboard's channel defaults to, qmidiroute will send the signal to the synth on channel 1, where it needs it. qmidiroute is capable of very complex and useful configurations of many sorts, including multiple simultaneous translations, transpositions, signal type rewrites, etcetera.<br />
sleep 10<br />
Wait for the above to settle.<br />
sudo schedtool -R -p 20 `pidof qmidiroute`<br />
Set qmidiroute to realtime scheduling in the Linux kernel.<br />
yoshimi -S &<br />
Load the Yoshimi synthesizer, using the pre-saved default state.<br />
sleep 10<br />
Wait for the above to settle.<br />
sudo schedtool -R -p 20 `pidof yoshimi`<br />
Set Yoshimi to realtime scheduling in the Linux kernel.<br />
<br />
With all of the above in a script run at logon, and with the QJackCtl patchbay set correctly, all we have to do is plug the PC/laptop into a MIDI keyboard using a USB-to-MIDI adapter, or simply the USB-in MIDI capability of many modern keyboards, and you are ready to play!<br />
<br />
The essence of QJackCtl is described fairly well in [http://www.linuxjournal.com/article/8354 this article.]<br />
<br />
====A GUI-Based Example Setup====<br />
<br />
The shell-based example above, lays out in detail lots of things you may well need to know, and it does work well. If you want something much more GUI, however, do this:<br />
<br />
* Install jack2-dbus.<br />
<br />
* In /etc/rc.local, add this line to the end:<br />
<br />
sudo -u uname jack_start<br />
<br />
where 'uname' is replaced with your username. This is the only non-GUI element of this setup; theoretically it's not necessary, but it can remove a whole lot of confusion in the login process, because this way Jack is running before login: for the rest of the audio software components to know clearly what they should do, it is best for Jack to run first. Do notice, though, that we're not configuring Jack yet. This means that if Jack was very badly configured at last boot, sound might not work until an appropriate low-latency configuration is configured, which is later on.<br />
<br />
* Copy /etc/asound.conf to /etc/asound.conf.ORIGINAL, and replace it with this:<br />
<br />
pcm.pulse {<br />
type pulse<br />
}<br />
ctl.pulse {<br />
type pulse<br />
}<br />
pcm.!default {<br />
type pulse<br />
}<br />
ctl.!default {<br />
type pulse<br />
}<br />
<br />
* Install pulseaudio. <br />
* Install pulseaudio-alsa.<br />
* Install qjackctl, and tell your GUI window/desktop system to run it at startup. Best to use a relatively low-resource-intensive window/desktop setup with a standard taskbar and tray area, e.g., [[MATE]].<br />
* Make sure qjackctl is told to:<br />
** use the D-Bus interface, <br />
** run at startup, <br />
** save its configuration to the default location,<br />
** start the JACK audio server on application startup,<br />
** enable the system tray icon, and<br />
** start minimized to ssytem tray.<br />
* Reboot.<br />
* After logging in, you will see QJackCtl in your system tray. Left-click on it.<br />
* Start tweaking in the QJackCtl GUI. The info embedded in the shell-script setup above may be of some help :-) As may be the info in [http://www.linuxjournal.com/article/8354 this article.] Just remember that you have to get your latency down to less than 5ms for live tone production or filtration of any sort, or the delay will be obvious to player and listener alike.<br />
* From the [[AUR]], perhaps using [[yaourt]], install non-daw-git . One of the components of this package is called non-session-manager; and non-session-manager has the function of setting up "sessions," sets of other audio software items which Jack (through the QJackCtl patchbay or not!) will wire together. NSM can handle as many different sessions as you wish to set up; and as a result, it's all GUI, apart from the one rc.local edit in the beginning.<br />
<br />
====More====<br />
<br />
Yet more info is in the [[Pro Audio]] page.<br />
<br />
== Jack for a multi-user system ==<br />
So, you have a decent multiuser system as it was designed more than 20 years ago, and now some developers decided that sound is only for a mono-user system... No I can not believe it !<br />
<br />
{{Warning|Before following the below instructions, please note that there is a security risk to any service running as root, and, more importantly, the developers for jack do not test it for running as root. In other words, it could eat your babies, data, or both}}<br />
<br />
Fortunately some time ago someone convinced the developers to allow jack to run as a system wide daemon. Here is the procedure to follow:<br />
<br />
'''Create a {{Ic|/etc/profile.d/jack.sh}} file''' containing:<br />
export JACK_PROMISCUOUS_SERVER=""<br />
<br />
'''Replace {{Ic|/etc/rc.d/jack-audio-connection-kit}}''' with the following content<br />
{{bc|<nowiki><br />
#!/bin/bash <br />
<br />
. /etc/rc.conf<br />
. /etc/rc.d/functions<br />
<br />
# source application-specific settings<br />
[ -f /etc/conf.d/jack-audio-connection-kit ] && . /etc/conf.d/jack-audio-connection-kit<br />
<br />
PID=`pidof -o %PPID /usr/bin/jackd`<br />
<br />
[ -n "$JACKUSER" ] && HOME="/home/$JACKUSER"<br />
[ -z "$JACK_PARAMS" ] && JACK_PARAMS=$(sed 's:/usr/bin/jackd ::' $HOME/.jackdrc)<br />
<br />
case "$1" in<br />
start)<br />
stat_busy "Starting JACK"<br />
if [ -z "$PID" ]; then<br />
if [ -n "$JACKUSER" ]; then<br />
su - $JACKUSER -c 'export JACK_PROMISCUOUS_SERVER="" && . /etc/conf.d/jack-audio-connection-kit && umask 0000 && /usr/bin/jackd $JACK_PARAMS &> /dev/null &'<br />
else<br />
export JACK_PROMISCUOUS_SERVER=""<br />
umask 0000<br />
/usr/bin/jackd $JACK_PARAMS &> /dev/null &<br />
fi<br />
fi<br />
<br />
if [ ! -z "$PID" -o $? -gt 0 ]; then<br />
stat_fail<br />
else<br />
add_daemon jack<br />
stat_done<br />
fi<br />
;;<br />
stop)<br />
stat_busy "Stopping JACK"<br />
[ ! -z "$PID" ] && kill $PID &> /dev/null<br />
if [ $? -gt 0 ]; then<br />
stat_fail<br />
else<br />
rm_daemon jack<br />
stat_done<br />
fi<br />
;;<br />
restart)<br />
$0 stop<br />
sleep 1<br />
$0 start<br />
;;<br />
*)<br />
echo "usage: $0 {sta|stop|restart}"<br />
esac<br />
exit 0<br />
</nowiki>}}<br />
<br />
Where my '''{{Ic|/etc/conf.d/jack-audio-connection-kit}}''' is<br />
{{bc|1=<br />
# Configuration for starting JACK at boot<br />
<br />
# Uncomment this to run as user (recommended)<br />
#JACKUSER="root"<br />
<br />
# Uncomment this to not source ~/.jackdrc<br />
JACK_PARAMS="-R -P89 -dalsa -dhw:1 -r48000 -p512 -n3"<br />
}}<br />
<br />
===Playing nice with ALSA===<br />
To allow Alsa programs to play while jack is running you must install the jack plugin for alsa:<br />
{{bc|pacman -S alsa-plugins}}<br />
<br />
And enable it by editing (or creating) /etc/asound.conf (system wide settings) to have these lines:<br />
{{bc|<nowiki><br />
# convert alsa API over jack API<br />
# use it with<br />
# % aplay foo.wav<br />
<br />
# use this as default<br />
pcm.!default {<br />
type plug<br />
slave { pcm "jack" }<br />
}<br />
<br />
ctl.mixer0 {<br />
type hw<br />
card 1<br />
}<br />
<br />
# pcm type jack<br />
pcm.jack {<br />
type jack<br />
playback_ports {<br />
0 system:playback_1<br />
1 system:playback_2<br />
}<br />
capture_ports {<br />
0 system:capture_1<br />
1 system:capture_2<br />
}<br />
}</nowiki>}}<br />
<br />
You need not restart your computer or anything. Just edit the alsa config files, start up jack, and there you go...<br />
<br />
Remember to start it as a '''user'''. If you start it with "jackd -d alsa" as user X, it will not work for user Y.<br />
<br />
=== gstreamer ===<br />
Example: watching a live stream without gconf<br />
{{bc|<nowiki>gst-launch-0.10 playbin2 uri=http://streamer.stackingdwarves.net/bewerungeroom.ogv audio-sink="jackaudiosink"</nowiki>}}<br />
<br />
Setting gstreamer to use jack using gconftool-2<br />
gconftool-2 --type string --set /system/gstreamer/0.10/audio/default/audiosink "jackaudiosink buffer-time=2000000"<br />
gconftool-2 --type string --set /system/gstreamer/0.10/audio/default/musicaudiosink "jackaudiosink buffer-time=2000000"<br />
gconftool-2 --type string --set /system/gstreamer/0.10/audio/default/chataudiosink "jackaudiosink buffer-time=2000000"<br />
<br />
Further information: http://jackaudio.org/gstreamer_via_jack<br />
<br />
=== PulseAudio ===<br />
If you need to keep {{Pkg|pulseaudio}} installed (in the event it is required by other packages, like {{Pkg|gnome-settings-daemon}}), you may want to prevent it from spawning automatically with X and taking over from JACK.<br />
<br />
Edit {{ic|/etc/pulse/client.conf}}, uncomment "autospawn" and set it to "no":<br />
;autospawn = yes<br />
autospawn = no<br />
<br />
''If you want both to play along, see: [[PulseAudio#PulseAudio_through_JACK_the_new_way]]''<br />
<br />
==MIDI==<br />
<br />
JACK can handle one soundcard very well, and an arbitrary number of MIDI devices (connected e.g. via USB).<br />
If you start JACK and want to use a MIDI keyboard or a synthesizer or some other pure MIDI device, you have to start JACK with a proper soundcard (one that actually outputs or inputs PCM sound).<br />
As soon you have done that, you can connect the MIDI device. E.g. with {{pkg|QjackCtl}}, you click on the connect button and you will find your device listed under JACK-MIDI or ALSA-MIDI, depending on the driver.<br />
<br />
For JACK-MIDI, you may want to set the '''MIDI Driver''' to '''seq''' or '''raw''' in {{pkg|QjackCtl}} ''Setup > Settings''. This should make your MIDI device appear under the ''MIDI'' tab. You can also change the name of the client (from a generic "midi_capture_1" to something more descriptive), if you enable ''Setup > Display > Enable client/port aliases'' and then ''Enable client/port aliases editing (rename)''.<br />
<br />
For ALSA-MIDI, make sure to turn on '''Enable ALSA Sequencer support''' in {{pkg|QjackCtl}} ''Setup > Misc''. This will add the ''ALSA'' tab in {{pkg|QjackCtl}} ''Connect'' window where your MIDI controller will show up.<br />
<br />
For bridging ALSA-MIDI to JACK-MIDI, you may consider using {{AUR|a2jmidid}}. The following command will export all available ALSA MIDI ports to JACK MIDI ports:<br />
$ a2jmidid -e<br />
They will be visible in {{pkg|QjackCtl}} under the ''MIDI'' tab labelled "a2j" client.<br />
You can automate starting of {{AUR|a2jmidid}} by adding to {{pkg|QjackCtl}} ''Setup > Options > Execute script after Startup'': {{ic|/usr/bin/a2jmidid -e &}}<br />
{{note|When connecting MIDI keyboard controllers in {{pkg|QjackCtl}}, make sure to ''Expand All'' first and connect the desired ''Output Ports'' (below the ''Readable Clients'') to the ''Input Ports'' (below the ''Writable Clients''). As a shortcut, if you select a writable client instead of individual ports as your destination, it should connect all its currently displayed output ports underneath.}}<br />
<br />
*'''Q:''' What is the difference between JACK-MIDI and ALSA-MIDI?<br />
*'''A:''' The former has improved timing and sample accurate MIDI event alignment. It extends or may even replace the latter but at this point they both co-exist.<br />
<br />
To install some M-Audio MIDI keyboards, you will need the firmware package {{AUR|midisport-firmware}} in the [[AUR]]. Also, the snd_usb_audio module has to be available.<br />
For more information about specific USB MIDI devices, see http://alsa.opensrc.org/USBMidiDevices.<br />
<br />
==Troubleshooting==<br />
==="Cannot lock down memory area (Cannot allocate memory)" message on startup===<br />
:''See: [[Realtime_for_Users#Add_user_to_audio_group]]''<br />
<br />
==="jack2-dbus and qjackctl errors :"===<br />
Still having the "Cannot allocate memory" and/or "Cannot connect to server socket err = No such file or directory" error(s) when pressing qjackctl's start button (assuming that you have package jack2-dbus installed) ?<br />
Please delete ~/.jackdrc, ~/.config/jack/conf.xml, ~/.config/rncbc.org/QjackCtl.conf. Kill jackdbus. Restart from scratch :)<br />
(Thanks to nedko)<br />
<br />
===Problems with specific applications===<br />
:VLC - no audio after starting JACK<br />
Run VLC and change the following menu options:<br />
* Tools > Preferences<br />
* Show settings: All<br />
* Audio > Output modules > Audio output module: JACK audio output<br />
* Audio > Output modules > JACK: Automatically connect to writable clients (enable)<br />
<br />
==Related Articles==<br />
*[[Pro Audio]]</div>
Jristz
https://wiki.archlinux.org/index.php?title=Intel_GMA_500&diff=230682
Intel GMA 500
2012-10-22T16:56:50Z
<p>Jristz: /* Modesetting driver and dual monitor Setup */</p>
<hr />
<div>[[Category:Graphics]]<br />
[[Category:X Server]]<br />
[[el:Poulsbo]]<br />
[[ru:Poulsbo]]<br />
{{Article summary start}}<br />
{{Article summary text|The current state of Intel GMA500/Poulsbo hardware support under Arch Linux.}}<br />
{{Article summary heading|Related}}<br />
{{Article summary wiki|Intel}}<br />
{{Article summary wiki|Xorg}}<br />
{{Article summary wiki|MPlayer}}<br />
{{Article summary heading|Resources}}<br />
{{Article summary link|Poulsbo Discussion in Arch BBS|https://bbs.archlinux.org/viewtopic.php?pid&#61;746439}}<br />
{{Article summary end}}<br />
<br />
The Intel Poulsbo Chipset, also known by its official names "GMA 500" and "[http://ark.intel.com/Product.aspx?id=35444 Intel System Controller Hub US15W]", is typically found on boards for the Atom Z processor series. It embeds a PowerVR SGX 535 graphics core developed by Imagination Technologies and then licensed by Intel. Its major advantages include the hardware decoding capability of up to 720p/1080i video content in various state-of-the-art codecs, e.g. H.264.<br />
<br />
As the graphics hardware was not developed by Intel themselves, the standard opensource [[Intel]] drivers do not work with this hardware. <br />
<br />
On this page you find comprehensive information about how to get the best out of your Poulsbo hardware using Arch Linux.<br />
<br />
== Kernel's gma500_gfx module ==<br />
<br />
With kernel 2.6.39, a new psb_gfx module appeared in the kernel developed by [http://en.wikipedia.org/wiki/Alan_Cox Alan Cox] to support Poulsbo hardware. As of kernel 3.3.rc1 the driver has left staging and been renamed gma500_gfx. ([http://blog.bodhizazen.net/linux/linux-gma500-poulsbo-driver-moved-out-of-staging/])<br />
<br />
'''Advantages'''<br />
<br />
* Native resolution (1366x768) with early KMS (tested on Asus Eee 1101HA)<br />
* Up to date kernel and Xorg<br />
* 2D acceleration<br />
* Works out of the box<br />
<br />
'''Disadvantages'''<br />
<br />
* Some are unable to get native resolution (e.g 1366x768)<br />
* No 3D acceleration possible<br />
* Poor multimedia performance (use mplayer with x11 or sdl so fullscreen video will be quite slow)<br />
<br />
To check if the driver is loaded, the output of <code>lsmod | grep gma</code> should look like this:<br />
<br />
gma500_gfx 131893 2 <br />
i2c_algo_bit 4615 1 gma500_gfx<br />
drm_kms_helper 29203 1 gma500_gfx<br />
drm 170883 2 drm_kms_helper,gma500_gfx<br />
i2c_core 16653 5 drm,drm_kms_helper,i2c_algo_bit,gma500_gfx,videodev<br />
<br />
== Modesetting driver and dual monitor Setup ==<br />
To setup different resolution for external monitor using [https://wiki.archlinux.org/index.php/Xrandr xrandr], {{extra| xf86-video-modesetting}} from official repo is needed. If you choose to use the git package ({{AUR| xf86-video-modesetting-git}}), remember to recompile it after a new version of [[Xorg]]. This will replace the {{Pkg|xf86-video-fbdev}} driver. <br />
<br />
After installing, an [[Xorg]] file is needed to setup the driver. Use this for device section:<br />
<br />
{{hc|/etc/X11/xorg.conf.d/20-gpudriver.conf|<br />
Section "Device"<br />
Identifier "gma500_gfx"<br />
Driver "modesetting"<br />
Option "SWCursor" "ON" <br />
EndSection<br />
}}<br />
{{Note|1= There have been some [https://bbs.archlinux.org/viewtopic.php?pid=1143717#p1143717 reports] that modesetting causes some anomalies on the screen. Latest git snapshot fixes that.}}<br />
<br />
== Troubleshooting ==<br />
<br />
=== Poor video performance ===<br />
<br />
If you have problems playing 720p and 1080i videos, yes, that's normal while there are not accelerated XV drivers. But you can improve it up to the point of going well and smoothly for most videos (even HD ones) with theese tricks:<br />
<br />
# add <code>pm-powersave false</code> to <code>/etc/rc.local</code>. <code>man pm-powersave</code> for more info.<br />
# use {{AUR| xf86-video-modesetting-git}} as indicated above.<br />
# always use [[mplayer]] or any variant/gui. [[VLC]] and others are usually much more slower.<br />
# substitute the normal mplayer with {{AUR| mplayer-minimal-svn}}, and compile with aggressive optimizations: <code>-march=native -fomit-frame-pointer -O3 -ffast-math'</code>. ([[Makepkg|About makepkg]])<br />
# use {{AUR | linux-lqx}} as it is a very good performance kernel. Edit PKGBUILD so you can do <code>menuconfig</code> and make sure you select your processor and remove generic optimizations for other processors. ([[kernel |About kernels]])<br />
<br />
=== Fix suspend ===<br />
==== Old fbdev driver (default) ====<br />
<br />
If suspend does not work, there are various quirk options you can try. First, make sure that you have {{Pkg|pm-utils}} and {{Pkg|pm-quirks}} [[pacman|installed]]. See the manpage for pm-suspend for a list of them all. One that has been reported to help is <code>quirk-vbemode-restore</code>, which saves and restores the current VESA mode.<br />
<br />
To test it, open a terminal and use the following command<br />
<br />
# pm-suspend --quirk-vbemode-restore <br />
<br />
That should suspend your system. If you are able to resume, you'll want to use this option every time you suspend.<br />
<br />
# echo "ADD_PARAMETERS='--quirk-vbemode-restore'" > /etc/pm/config.d/gma500 <br />
<br />
If you are not able to resume and you get a black screen instead, try the above quirk command with only '''one dash'''<br />
<br />
# pm-suspend -quirk-vbemode-restore <br />
<br />
{{Tip| If you stuck with a black screen after resume, be aware that besides the black screen, your system works fine. Instead of hard rebooting, you could try to blindly reboot your system, since the last thing you used before suspend was the terminal. Alternatively, if you have ssh enabled on your machine you could do it remotely.}}<br />
<br />
==== modesetting xorg driver ====<br />
<br />
On some machines, when using modesetting driver the screen gets messed up with random data. Although the computer still works, you must go to a console and kill X or reboot "blindly". This is not optimal, so here is a solution:<br />
<br />
First, see your avaiable screens and modes running {{ic|xrandr}}:<br />
<br />
{{bc|<br />
# xrandr<br />
Screen 0: minimum 320 x 200, current 1280 x 720, maximum 2048 x 2048<br />
LVDS-0 connected 1280x720+0+0 222mm x 125mm<br />
1280x720 60.0*+<br />
HDMI-0 connected 1280x720+0+0 531mm x 298mm<br />
1920x1080 60.0 +<br />
1680x1050 59.9 <br />
1680x945 60.0 <br />
1400x1050 74.9 59.9 <br />
1600x900 60.0 <br />
1280x1024 75.0 60.0 <br />
1440x900 75.0 59.9 <br />
1280x960 60.0 <br />
1366x768 60.0 <br />
1360x768 60.0 <br />
1280x800 74.9 59.9 <br />
1152x864 75.0 <br />
1280x768 74.9 60.0 <br />
1280x720 60.0* <br />
1024x768 75.1 70.1 60.0 <br />
1024x576 60.0 <br />
832x624 74.6 <br />
800x600 72.2 75.0 60.3 56.2 <br />
848x480 60.0 <br />
640x480 72.8 75.0 60.0 <br />
720x400 70.1<br />
}}<br />
<br />
Edit or create (giving executive permisions) {{ic|/etc/pm/sleep.d/99xrandr}}, writing the correct names and modes for your solution:<br />
<br />
{{bc|<nowiki><br />
#!/bin/sh<br />
#<br />
# turn off and on the screens so we force to clean video data<br />
case "$1" in<br />
hibernate|||suspend)<br />
xrandr --output LVDS-0 --off<br />
xrandr --output HDMI-0 --off<br />
;;<br />
thaw|||resume)<br />
xrandr --output LVDS-0 --off<br />
xrandr --output HDMI-0 --off<br />
xrandr --output LVDS-0 --mode 1280x720<br />
/usr/local/bin/brillo-<br />
;;<br />
*) exit $NA<br />
;;<br />
esac<br />
</nowiki>}}<br />
<br />
In my case, I turn off both screens, and turn on only the main screen upon awakening. Feel free to customize to your needs.<br />
On some machines, the screen turns on by default even when the system was put to sleep with the screen turned off, so you need to turn it off twice.<br />
<br />
{{Note| This only works if you call {{ic|pm-suspend}} or {{ic|pm-hibernate}} inside [[X]]. If it is called from a daemon or a tty, it won't work.}}<br />
<br />
=== Set backlight brightness ===<br />
<br />
All that is needed to set the brightness is sending a number (0-100) to {{ic|/sys/class/backlight/psblvds/brightness}}. This obviously requires sysfs to be enabled in the kernel, as it is in the Arch Linux kernel. To set display to minimal brightness, issue this command as root:<br />
<br />
# echo 0 > /sys/class/backlight/psb-bl/brightness<br />
<br />
Or, for full luminosity:<br />
<br />
# echo 100 > /sys/class/backlight/psb-bl/brightness<br />
<br />
A very short script is available to do this with less typing written by [https://bbs.archlinux.org/viewtopic.php?pid=813074#p813074 mulenmar].<br />
<br />
#! /bin/sh<br />
sudo sh -c "echo $1 > /sys/class/backlight/psb-bl/brightness"<br />
<br />
Simply save it as brightness.sh, and give it executable permissions. Then you can use it like so:<br />
<br />
Set brightness to minimum:<br />
<br />
./brightness.sh 0<br />
<br />
Set brightness to half:<br />
<br />
./brightness.sh 50<br />
<br />
Sudo may obviously ask for your password, so you have to be in the sudoers file.<br />
<br />
{{Note|If changing {{ic|/sys/class/backlight/psblvds/brightness}} does not work, you may need to add {{ic|acpi_osi&#61;Linux acpi_backlight&#61;vendor}} to your [[kernel parameters]]. After rebooting, a new folder will appear under {{ic|/sys/class/backlight/}}; making changes to the {{ic|brightness}} file in that folder should work. For example, in some Asus netbooks the backlight can be controlled by writing a value (0-10) to {{ic|/sys/class/backlight/eeepc-wmi/brightness}}.}}<br />
<br />
A variation of this script can be found [https://bbs.archlinux.org/viewtopic.php?pid=1143245#p1143245 here].<br />
<br />
=== Memory allocation optimization ===<br />
<br />
You can often improve performance by limiting the amount of RAM used by the system so that there will be more available for the videocard. If you have 1GB RAM use <code>mem=896mb</code> or if you have 2GB RAM use <code>mem=1920mb</code>. Add the following parameters to your bootloader's configuration file.<br />
<br />
*[[Grub-legacy]]<br />
Edit {{ic|/boot/grub/menu.lst}}<br />
...<br />
kernel /vmlinuz-linux root=/dev/sda2 ro mem=896mb <br />
...<br />
<br />
*[[Grub]]<br />
Edit {{ic|/etc/default/grub}}<br />
...<br />
GRUB_CMDLINE_LINUX="mem=896mb"<br />
...<br />
<br />
*[[Syslinux]]<br />
Edit {{ic|/boot/syslinux/syslinux.cfg}}<br />
...<br />
APPEND root=/dev/sda2 ro mem=896mb <br />
...<br />
<br />
==See also==<br />
* [http://www.kriptopolis.org/arch-linux-03#comment-66066 An experience about configuring Poulsbo (spanish)]<br />
* [https://wiki.ubuntu.com/HardwareSupportComponentsVideoCardsPoulsbo/ Ubuntu Wiki]<br />
* [http://ubuntuforums.org/showthread.php?t=1984236 Ubuntu Forums]<br />
* [http://blog.bodhizazen.net/linux/ubuntu-12-04-gma500-poulsbo-boot-options/ Ubuntu 12.04 gma500 (poulsbo) boot options (blog post)]</div>
Jristz
https://wiki.archlinux.org/index.php?title=Intel_GMA_500&diff=229147
Intel GMA 500
2012-10-17T00:44:52Z
<p>Jristz: /* Dual Monitor Setup */</p>
<hr />
<div>[[Category:Graphics]]<br />
[[Category:X Server]]<br />
[[el:Poulsbo]]<br />
[[ru:Poulsbo]]<br />
{{Article summary start}}<br />
{{Article summary text|The current state of Intel GMA500/Poulsbo hardware support under Arch Linux.}}<br />
{{Article summary heading|Related}}<br />
{{Article summary wiki|Intel}}<br />
{{Article summary wiki|Xorg}}<br />
{{Article summary wiki|MPlayer}}<br />
{{Article summary heading|Resources}}<br />
{{Article summary link|Poulsbo Discussion in Arch BBS|https://bbs.archlinux.org/viewtopic.php?pid&#61;746439}}<br />
{{Article summary end}}<br />
<br />
The Intel Poulsbo Chipset, also known by its official names "GMA 500" and "[http://ark.intel.com/Product.aspx?id=35444 Intel System Controller Hub US15W]", is typically found on boards for the Atom Z processor series. It embeds a PowerVR SGX 535 graphics core developed by Imagination Technologies and then licensed by Intel. Its major advantages include the hardware decoding capability of up to 720p/1080i video content in various state-of-the-art codecs, e.g. H.264.<br />
<br />
As the graphics hardware was not developed by Intel themselves, the standard opensource [[Intel]] drivers do not work with this hardware. <br />
<br />
On this page you find comprehensive information about how to get the best out of your Poulsbo hardware using Arch Linux.<br />
<br />
== Kernel's gma500_gfx module ==<br />
<br />
With kernel 2.6.39, a new psb_gfx module appeared in the kernel developed by [http://en.wikipedia.org/wiki/Alan_Cox Alan Cox] to support Poulsbo hardware. As of kernel 3.3.rc1 the driver has left staging and been renamed gma500_gfx. ([http://blog.bodhizazen.net/linux/linux-gma500-poulsbo-driver-moved-out-of-staging/])<br />
<br />
'''Advantages'''<br />
<br />
* Native resolution (1366x768) with early KMS (tested on Asus Eee 1101HA)<br />
* Up to date kernel and Xorg<br />
* 2D acceleration<br />
* Works out of the box<br />
<br />
'''Disadvantages'''<br />
<br />
* Some are unable to get native resolution (e.g 1366x768)<br />
* No 3D acceleration possible<br />
* Poor multimedia performance (use mplayer with x11 or sdl so fullscreen video will be quite slow)<br />
<br />
To check if the driver is loaded, the output of <code>lsmod | grep gma</code> should look like this:<br />
<br />
gma500_gfx 131893 2 <br />
i2c_algo_bit 4615 1 gma500_gfx<br />
drm_kms_helper 29203 1 gma500_gfx<br />
drm 170883 2 drm_kms_helper,gma500_gfx<br />
i2c_core 16653 5 drm,drm_kms_helper,i2c_algo_bit,gma500_gfx,videodev<br />
<br />
== Dual Monitor Setup ==<br />
To setup different resolution for external monitor using [https://wiki.archlinux.org/index.php/Xrandr xrandr], {{AUR| xf86-video-modesetting-git}} from [[AUR]] is needed. (or the stable releases {{AUR| xf86-video-modesetting}}) This will replace the {{Pkg|xf86-video-fbdev}} driver.<br />
<br />
After installing, an [[Xorg]] file is needed to setup the driver. Use this for device section:<br />
<br />
{{hc|/etc/X11/xorg.conf.d/20-gpudriver.conf|<br />
Section "Device"<br />
Identifier "gma500_gfx"<br />
Driver "modesetting"<br />
Option "SWCursor" "ON" <br />
EndSection<br />
}}<br />
{{Note|1= There have been some [https://bbs.archlinux.org/viewtopic.php?pid=1143717#p1143717 reports] that modesetting causes some anomalies on the screen. Latest git snapshot fixes that.}}<br />
<br />
== Troubleshooting ==<br />
<br />
=== Fix suspend ===<br />
<br />
If suspend does not work, there are various quirk options you can try. First, make sure that you have {{Pkg|pm-utils}} and {{Pkg|pm-quirks}} [[pacman|installed]]. See the manpage for pm-suspend for a list of them all. One that has been reported to help is <code>quirk-vbemode-restore</code>, which saves and restores the current VESA mode.<br />
<br />
To test it, open a terminal and use the following command<br />
<br />
# pm-suspend --quirk-vbemode-restore <br />
<br />
That should suspend your system. If you are able to resume, you'll want to use this option every time you suspend.<br />
<br />
# echo "ADD_PARAMETERS='--quirk-vbemode-restore'" > /etc/pm/config.d/gma500 <br />
<br />
If you are not able to resume and you get a black screen instead, try the above quirk command with only '''one dash'''<br />
<br />
# pm-suspend -quirk-vbemode-restore <br />
<br />
{{Tip| If you stuck with a black screen after resume, be aware that besides the black screen, your system works fine. Instead of hard rebooting, you could try to blindly reboot your system, since the last thing you used before suspend was the terminal. Alternatively, if you have ssh enabled on your machine you could do it remotely.}}<br />
<br />
=== Set backlight brightness ===<br />
<br />
All that is needed to set the brightness is sending a number (0-100) to {{ic|/sys/class/backlight/psblvds/brightness}}. This obviously requires sysfs to be enabled in the kernel, as it is in the Arch Linux kernel. To set display to minimal brightness, issue this command as root:<br />
<br />
# echo 0 > /sys/class/backlight/psb-bl/brightness<br />
<br />
Or, for full luminosity:<br />
<br />
# echo 100 > /sys/class/backlight/psb-bl/brightness<br />
<br />
A very short script is available to do this with less typing written by [https://bbs.archlinux.org/viewtopic.php?pid=813074#p813074 mulenmar].<br />
<br />
#! /bin/sh<br />
sudo sh -c "echo $1 > /sys/class/backlight/psb-bl/brightness"<br />
<br />
Simply save it as brightness.sh, and give it executable permissions. Then you can use it like so:<br />
<br />
Set brightness to minimum:<br />
<br />
./brightness.sh 0<br />
<br />
Set brightness to half:<br />
<br />
./brightness.sh 50<br />
<br />
Sudo may obviously ask for your password, so you have to be in the sudoers file.<br />
<br />
{{Note|If changing {{ic|/sys/class/backlight/psblvds/brightness}} does not work, you may need to add {{ic|acpi_osi&#61;Linux acpi_backlight&#61;vendor}} to your [[kernel parameters]]. After rebooting, a new folder will appear under {{ic|/sys/class/backlight/}}; making changes to the {{ic|brightness}} file in that folder should work. For example, in some Asus netbooks the backlight can be controlled by writing a value (0-10) to {{ic|/sys/class/backlight/eeepc-wmi/brightness}}.}}<br />
<br />
A variation of this script can be found [https://bbs.archlinux.org/viewtopic.php?pid=1143245#p1143245 here].<br />
<br />
=== Memory allocation optimization ===<br />
<br />
You can often improve performance by limiting the amount of RAM used by the system so that there will be more available for the videocard. If you have 1GB RAM use <code>mem=896mb</code> or if you have 2GB RAM use <code>mem=1920mb</code>. Add the following parameters to your bootloader's configuration file.<br />
<br />
*[[Grub-legacy]]<br />
Edit {{ic|/boot/grub/menu.lst}}<br />
...<br />
kernel /vmlinuz-linux root=/dev/sda2 ro mem=896mb <br />
...<br />
<br />
*[[Grub]]<br />
Edit {{ic|/etc/default/grub}}<br />
...<br />
GRUB_CMDLINE_LINUX="mem=896mb"<br />
...<br />
<br />
*[[Syslinux]]<br />
Edit {{ic|/boot/syslinux/syslinux.cfg}}<br />
...<br />
APPEND root=/dev/sda2 ro mem=896mb <br />
...<br />
<br />
==See also==<br />
* [http://www.kriptopolis.org/arch-linux-03#comment-66066 An experience about configuring Poulsbo (spanish)]<br />
* [https://wiki.ubuntu.com/HardwareSupportComponentsVideoCardsPoulsbo/ Ubuntu Wiki]<br />
* [http://ubuntuforums.org/showthread.php?t=1984236 Ubuntu Forums]<br />
* [http://blog.bodhizazen.net/linux/ubuntu-12-04-gma500-poulsbo-boot-options/ Ubuntu 12.04 gma500 (poulsbo) boot options (blog post)]</div>
Jristz
https://wiki.archlinux.org/index.php?title=Intel_GMA_500&diff=229146
Intel GMA 500
2012-10-17T00:43:39Z
<p>Jristz: /* Dual Monitor Setup */</p>
<hr />
<div>[[Category:Graphics]]<br />
[[Category:X Server]]<br />
[[el:Poulsbo]]<br />
[[ru:Poulsbo]]<br />
{{Article summary start}}<br />
{{Article summary text|The current state of Intel GMA500/Poulsbo hardware support under Arch Linux.}}<br />
{{Article summary heading|Related}}<br />
{{Article summary wiki|Intel}}<br />
{{Article summary wiki|Xorg}}<br />
{{Article summary wiki|MPlayer}}<br />
{{Article summary heading|Resources}}<br />
{{Article summary link|Poulsbo Discussion in Arch BBS|https://bbs.archlinux.org/viewtopic.php?pid&#61;746439}}<br />
{{Article summary end}}<br />
<br />
The Intel Poulsbo Chipset, also known by its official names "GMA 500" and "[http://ark.intel.com/Product.aspx?id=35444 Intel System Controller Hub US15W]", is typically found on boards for the Atom Z processor series. It embeds a PowerVR SGX 535 graphics core developed by Imagination Technologies and then licensed by Intel. Its major advantages include the hardware decoding capability of up to 720p/1080i video content in various state-of-the-art codecs, e.g. H.264.<br />
<br />
As the graphics hardware was not developed by Intel themselves, the standard opensource [[Intel]] drivers do not work with this hardware. <br />
<br />
On this page you find comprehensive information about how to get the best out of your Poulsbo hardware using Arch Linux.<br />
<br />
== Kernel's gma500_gfx module ==<br />
<br />
With kernel 2.6.39, a new psb_gfx module appeared in the kernel developed by [http://en.wikipedia.org/wiki/Alan_Cox Alan Cox] to support Poulsbo hardware. As of kernel 3.3.rc1 the driver has left staging and been renamed gma500_gfx. ([http://blog.bodhizazen.net/linux/linux-gma500-poulsbo-driver-moved-out-of-staging/])<br />
<br />
'''Advantages'''<br />
<br />
* Native resolution (1366x768) with early KMS (tested on Asus Eee 1101HA)<br />
* Up to date kernel and Xorg<br />
* 2D acceleration<br />
* Works out of the box<br />
<br />
'''Disadvantages'''<br />
<br />
* Some are unable to get native resolution (e.g 1366x768)<br />
* No 3D acceleration possible<br />
* Poor multimedia performance (use mplayer with x11 or sdl so fullscreen video will be quite slow)<br />
<br />
To check if the driver is loaded, the output of <code>lsmod | grep gma</code> should look like this:<br />
<br />
gma500_gfx 131893 2 <br />
i2c_algo_bit 4615 1 gma500_gfx<br />
drm_kms_helper 29203 1 gma500_gfx<br />
drm 170883 2 drm_kms_helper,gma500_gfx<br />
i2c_core 16653 5 drm,drm_kms_helper,i2c_algo_bit,gma500_gfx,videodev<br />
<br />
== Dual Monitor Setup ==<br />
To setup different resolution for external monitor using [https://wiki.archlinux.org/index.php/Xrandr xrandr], {{AUR| xf86-video-modesetting-git}} from [[AUR]] is needed. (or the stable releases {{AUR| xf86-video-modesettingC}}) This will replace the {{Pkg|xf86-video-fbdev}} driver.<br />
<br />
After installing, an [[Xorg]] file is needed to setup the driver. Use this for device section:<br />
<br />
{{hc|/etc/X11/xorg.conf.d/20-gpudriver.conf|<br />
Section "Device"<br />
Identifier "gma500_gfx"<br />
Driver "modesetting"<br />
Option "SWCursor" "ON" <br />
EndSection<br />
}}<br />
{{Note|1= There have been some [https://bbs.archlinux.org/viewtopic.php?pid=1143717#p1143717 reports] that modesetting causes some anomalies on the screen. Latest git snapshot fixes that.}}<br />
<br />
== Troubleshooting ==<br />
<br />
=== Fix suspend ===<br />
<br />
If suspend does not work, there are various quirk options you can try. First, make sure that you have {{Pkg|pm-utils}} and {{Pkg|pm-quirks}} [[pacman|installed]]. See the manpage for pm-suspend for a list of them all. One that has been reported to help is <code>quirk-vbemode-restore</code>, which saves and restores the current VESA mode.<br />
<br />
To test it, open a terminal and use the following command<br />
<br />
# pm-suspend --quirk-vbemode-restore <br />
<br />
That should suspend your system. If you are able to resume, you'll want to use this option every time you suspend.<br />
<br />
# echo "ADD_PARAMETERS='--quirk-vbemode-restore'" > /etc/pm/config.d/gma500 <br />
<br />
If you are not able to resume and you get a black screen instead, try the above quirk command with only '''one dash'''<br />
<br />
# pm-suspend -quirk-vbemode-restore <br />
<br />
{{Tip| If you stuck with a black screen after resume, be aware that besides the black screen, your system works fine. Instead of hard rebooting, you could try to blindly reboot your system, since the last thing you used before suspend was the terminal. Alternatively, if you have ssh enabled on your machine you could do it remotely.}}<br />
<br />
=== Set backlight brightness ===<br />
<br />
All that is needed to set the brightness is sending a number (0-100) to {{ic|/sys/class/backlight/psblvds/brightness}}. This obviously requires sysfs to be enabled in the kernel, as it is in the Arch Linux kernel. To set display to minimal brightness, issue this command as root:<br />
<br />
# echo 0 > /sys/class/backlight/psb-bl/brightness<br />
<br />
Or, for full luminosity:<br />
<br />
# echo 100 > /sys/class/backlight/psb-bl/brightness<br />
<br />
A very short script is available to do this with less typing written by [https://bbs.archlinux.org/viewtopic.php?pid=813074#p813074 mulenmar].<br />
<br />
#! /bin/sh<br />
sudo sh -c "echo $1 > /sys/class/backlight/psb-bl/brightness"<br />
<br />
Simply save it as brightness.sh, and give it executable permissions. Then you can use it like so:<br />
<br />
Set brightness to minimum:<br />
<br />
./brightness.sh 0<br />
<br />
Set brightness to half:<br />
<br />
./brightness.sh 50<br />
<br />
Sudo may obviously ask for your password, so you have to be in the sudoers file.<br />
<br />
{{Note|If changing {{ic|/sys/class/backlight/psblvds/brightness}} does not work, you may need to add {{ic|acpi_osi&#61;Linux acpi_backlight&#61;vendor}} to your [[kernel parameters]]. After rebooting, a new folder will appear under {{ic|/sys/class/backlight/}}; making changes to the {{ic|brightness}} file in that folder should work. For example, in some Asus netbooks the backlight can be controlled by writing a value (0-10) to {{ic|/sys/class/backlight/eeepc-wmi/brightness}}.}}<br />
<br />
A variation of this script can be found [https://bbs.archlinux.org/viewtopic.php?pid=1143245#p1143245 here].<br />
<br />
=== Memory allocation optimization ===<br />
<br />
You can often improve performance by limiting the amount of RAM used by the system so that there will be more available for the videocard. If you have 1GB RAM use <code>mem=896mb</code> or if you have 2GB RAM use <code>mem=1920mb</code>. Add the following parameters to your bootloader's configuration file.<br />
<br />
*[[Grub-legacy]]<br />
Edit {{ic|/boot/grub/menu.lst}}<br />
...<br />
kernel /vmlinuz-linux root=/dev/sda2 ro mem=896mb <br />
...<br />
<br />
*[[Grub]]<br />
Edit {{ic|/etc/default/grub}}<br />
...<br />
GRUB_CMDLINE_LINUX="mem=896mb"<br />
...<br />
<br />
*[[Syslinux]]<br />
Edit {{ic|/boot/syslinux/syslinux.cfg}}<br />
...<br />
APPEND root=/dev/sda2 ro mem=896mb <br />
...<br />
<br />
==See also==<br />
* [http://www.kriptopolis.org/arch-linux-03#comment-66066 An experience about configuring Poulsbo (spanish)]<br />
* [https://wiki.ubuntu.com/HardwareSupportComponentsVideoCardsPoulsbo/ Ubuntu Wiki]<br />
* [http://ubuntuforums.org/showthread.php?t=1984236 Ubuntu Forums]<br />
* [http://blog.bodhizazen.net/linux/ubuntu-12-04-gma500-poulsbo-boot-options/ Ubuntu 12.04 gma500 (poulsbo) boot options (blog post)]</div>
Jristz
https://wiki.archlinux.org/index.php?title=Beginners%27_Guide/Preparation_(Espa%C3%B1ol)&diff=215495
Beginners' Guide/Preparation (Español)
2012-07-29T21:04:00Z
<p>Jristz: /* Arrancar el instalador de Arch Linux */</p>
<hr />
<div><noinclude><br />
[[Category:Getting and installing Arch (Español)]]<br />
[[Category:About Arch (Español)]]<br />
[[da:Beginners' Guide/Preparation]]<br />
[[en:Beginners' Guide/Preparation]]<br />
[[hr:Beginners' Guide/Preparation]]<br />
[[hu:Beginners' Guide/Preparation]]<br />
[[id:Beginners' Guide/Preparation]]<br />
[[it:Beginners' Guide/Preparation]]<br />
[[ko:Beginners' Guide/Preparation]]<br />
[[pt:Beginners' Guide/Preparation]]<br />
[[ru:Beginners' Guide/Preparation]]<br />
[[sr:Beginners' Guide/Preparation]]<br />
[[zh-CN:Beginners' Guide/Preparation]]<br />
{{Tip|Esta es parte de un articulo multi-pagina de "The Beginners' Guide". Haga '''[[Beginners' Guide_(Español)|clic aquí]]''' si prefiere leer el articulo completo.}}<br />
</noinclude><br />
==Parte I: Preparar la instalación==<br />
{{Nota|Si quiere instalar desde otra partición dentro de una distribución GNU/Linux existente o un LiveCD/USB, véase [[Install from Existing Linux (Español)|Instalar Desde Sistema Linux Existente]]. Esto puede ser útil si planea instalar Arch vía [[Virtual Network Computing|VNC]] o [[Secure Shell (Español)|SSH]]. Lo siguiente asume una instalación convencional.}}<br />
===Obtener los últimos medios de Instalación===<br />
<br />
Puede obtener los últimos medios de instalación oficiales de Arch desde [http://archlinux.org/download/ aquí]. La última versión es la 2011.08.19<br />
<br />
Puntos a tomar en cuenta para seleccionar la descarga:<br />
<br />
* Tanto el '''Core''' como el '''Netinstall''' le permiten instalar sólo los paquetes necesarios para crear un '''sistema base Arch Linux'''. ''Nótese que el Sistema Base no incluye Interfaz Gráfica de Usuario (GUI). Está compuesto principalmente por la cadena de herramientas de GNU (compilador, ensamblador, linker, bibliotecas, shell, y unas pocas utilidades), el kernel de Linux, pacman (gestor de paquetes de Arch), y unas pocas bibliotecas y módulos extra.'' <br />
* Los medios '''Core''' permiten realizar instalaciones desde el CD o desde la Red.<br />
* Los medios '''Netinstall''' son más pequeños y no contienen paquetes, estos son descargados desde Internet durante la instalación.<br />
* El [[Arch64 FAQ (Español)|Arch64 FAQ]] puede ayudarle a decidir entre las versiones de 32 y de 64 bits. El archivo '''Dual Architecture''' tiene paquetes para los dos sistemas.<br />
* No olvide descargar los archivos txt con los checksum junto con el ISO elegido.<br />
<br />
====Verificar la integridad del archivo descargado====<br />
Ejecute sha1sum en el directorio donde se colocaron los archivos descargados:<br />
$ sha1sum --check nombre_del_archivo_checksum.txt<br />
El resultado debería ser "OK" para el archivo que tiene (no se preocupe por las otras líneas). En otro caso descargue los archivos de nuevo. <br />
<br />
La verificación con md5sum funciona de la misma forma.<br />
<br />
====Instalación desde un CD====<br />
<br />
Grabe el archivo de imagen ISO a un CD o DVD y continúe en el [[#Arrancar el instalador de Arch Linux|Arrancar el instalador de Arch Linux]].<br />
{{Nota| La calidad de las grabadoras, así como la de los discos compactos en sí mismos, varía mucho. En general, utilizar bajas velocidades al grabar es recomendable para obtener un resultado confiable. Algunos usuarios recomiendan velocidades '''''tan bajas como 4x o 2x'''''. Si experimenta un comportamiento inesperado con el CD, intente grabarlo nuevamente a la mínima velocidad soportada por su sistema.}}<br />
<br />
====Instalación desde USB====<br />
<br />
Este método funciona para cualquier medio flash desde el cual pueda arrancar su BIOS, incluyendo lectores de memorias y puertos USB. El dispositivo deberá contar con suficiente memoria para almacenar la imagen ISO seleccionada.<br />
<br />
Véase [[USB Installation Media (Español)|Instalar Desde Pendrive]] para mas detalles.<br />
<br />
=====Método ''*nix''=====<br />
{{Advertencia|Esto destruirá irremediablemente toda la información contenida en su memoria USB. Sea altamente cuidadoso al seleccionar el destino del comando {{ic|dd}}, pues este escribirá incluso en un disco duro}}<br />
<br />
Inserte su memoria USB vacía o con información desechable. Determine el dispositivo asignado al mismo dentro del directorio {{ic|/dev}} (puede ver esta información con "{{ic|# fdisk -l}}") y utilice la herramienta dd para escribir el archivo .iso a la memoria USB:<br />
<nowiki># dd if=archlinux-2011.08.19-''{core|netinstall}''-''{i686|x86_64|dual}''.iso of=/dev/sd''x''</nowiki><br />
donde {{ic|<nowiki>if=</nowiki>}} es la ruta completa a la imagen y {{ic|<nowiki>of=</nowiki>}} es la memoria USB. Asegúrese de usar {{ic|/dev/sd'''x'''}} y no {{ic|/dev/sd'''x1'''}}. Necesitará un USB con suficiente memoria para contener la imagen.<br />
<br />
Para verificar que los datos fueron escritos exitosamente tome nota del número de grabaciones (bloques) leídos y escritos, después ejecuta el siguiente chequeo:<br />
<nowiki># dd if=/dev/sd''x'' count=''numero_de_grabaciones'' status=noxfer | md5sum</nowiki><br />
El md5sum arrojado debería ser igual al del [http://www.archlinux.org/iso/2011.08.19/md5sums.txt md5sum del archivo de la imagen de Arch Linux(2011.08.19) descargado]; éstos dos también deben ser iguales al disponible en el archivo {{ic|md5sums.txt}} del sitio desde donde se descargó la imagen. Una ejecución típica se ve como sigue:<br />
<br />
Escribir {{ic|.iso}} al USB:<br />
<nowiki># dd if=archlinux-2011.08.19-core-i686.iso of=/dev/sdc </nowiki><br />
<nowiki> 744973+0 records in</nowiki><br />
<nowiki> 744973+0 records out</nowiki><br />
<nowiki> 381426176 bytes (381 MB) copied, 106.611 s, 3.6 MB/s</nowiki><br />
<br />
Verificar integridad:<br />
<nowiki># dd if=/dev/sdc count=744973 status=noxfer | md5sum</nowiki><br />
<nowiki> 4850d533ddd343b80507543536258229 -</nowiki><br />
<nowiki> 744973+0 records in</nowiki><br />
<nowiki> 744973+0 records out</nowiki><br />
Continúe en [[#Arrancar el instalador de Arch Linux|Arrancar el instalador de Arch Linux]]<br />
<br />
=====Método Windows=====<br />
<br />
Descargue ''Disk Imager'' desde [https://launchpad.net/win32-image-writer/+download aquí]. Inserte la memoria flash, inicie ''Disk Imager'', seleccione el archivo imagen (Disk Imager solo mostrará archivos {{ic|*.img}} tendrá que escribir "{{ic|*.iso}}" en el cuadro de diálogo para seleccionar el archivo Arch), seleccione la unidad correspondiente a la memoria, y haga clic en "write".<br />
<br />
Puede consultar el artículo [[USB Installation Media]] para ver más información sobre como transferir la imagen a un medio USB. Si los USB se desconectan, trate con otro puerto o cable.<br />
<br />
Continúe en [[#Arrancar el instalador de Arch Linux|Arrancar el instalador de Arch Linux]].<br />
<br />
====Instalación desde la Red====<br />
Es posible arrancar la imagen .iso desde la red sin necesidad de grabarla en un CD o USB. Esto funciona bien cuando ya se cuenta con un servidor instalado. Por favor revise [[Install Arch from network via PXE|este artículo]] para más información y después continúe con [[#Arrancar el instalador de Arch Linux|Arrancar el instalador de Arch Linux]]<br />
<br />
====Instalar a una máquina virtual====<br />
Instalar en una máquina virtual es una buena forma de familiarizarse con Arch Linux y su instalación sin tener que dejar su sistema operativo y particionar el disco duro; le deja mantener abierto este tutorial en su browser durante todas etapas de la instalación. Tener un sistema Arch instalado en un disco virtual puede ser útil también para usuarios Arch como un sistema independiente disponible para usos de testeo.<br />
<br />
Ejemplos de software de virtualización son [[VirtualBox (Español)|VirtualBox]], [[VMware]], [[QEMU]], [[Xen (Español)|Xen]], [[Varch]], y [[Parallels]].<br />
<br />
El proceso exacto depende en el software de virtualización usado, pero generalmente se trata de:<br />
# Crear un imagen de disco virtual que contendrá el sistema operativo.<br />
# Configurar los parámetros de la máquina virtual.<br />
# Arrancar del imagen *.iso como CD virtual.<br />
# Continúe en [[#Arrancar el instalador de Arch Linux|Arrancar el instalador de Arch Linux]].<br />
<br />
Las siguientes páginas también le pueden interesar:<br />
* [[Arch Linux VirtualBox Guest]]<br />
* [[Installing Arch Linux from VirtualBox]]<br />
* [[VirtualBox Arch Linux Guest On Physical Drive]]<br />
* [[Installing Arch Linux in VMWare (Español)|Instalar Arch Linux en VMware]]<br />
<br />
===Arrancar el instalador de Arch Linux===<br />
{{Tip| Los requerimientos mínimos de memoria para una instalación básica son 128 MB en RAM}}<br />
{{Tip| Durante la instalación, la pantalla puede desactivarse en espera de actividad. Para reactivarla de forma segura puede presione la tecla [Alt]}}<br />
<br />
====Arrancando desde el medio====<br />
<br />
Inserte el CD o la memoria USB y arranque desde el mismo. Es posible que tenga que modificar el orden de arranque en la BIOS de su PC o presionar una tecla (usualmente SUPR, F1, F2, F11 o F12) durante el BIOS POST (Power On Self-Test).<br />
<br />
El menú principal debería estar desplegado en este punto. Seleccione la opción preferida utilizando las flechas del teclado y presionando [Enter]. Los menús pueden variar ligeramente dependiendo del ISO.<br />
<br />
====Arranque del sistema====<br />
Seleccione "Boot Arch Linux" y presione [Enter] para continuar con la instalación. El sistema ahora arrancará, y mostrará un texto de bienvenida del shell cuando esté listo. Automáticamente inicia sesión como root. <br />
<br />
{{Nota|Para usuarios que desean instalar Arch Linux via [[Secure Shell (Español)|SSH]] se recomienda hacer algunos cambios para permitir SSH directamente al entorno vivo. Si le aplica, véase [[Install from SSH|Install from SSH (Inglés)]].}}<br />
<br />
Para cambiar las opciones de arranque en GRUB, y al final de las opciones de arranque correspondientes al kernel puede agregar las modificaciones deseadas.<br />
<br />
Si la pantalla no da imagen durante el proceso de arranque intente desactivando Kernel Mode Setting. Para hacer esto reinicie y presione [Tab] en el menú GRUB. Al final de la linea de opciones de arranque del kernel, agregue un espacio y después:<br />
<br />
i915.modeset=0<br />
<br />
O, agregue:<br />
<br />
video=SVIDEO-1:d<br />
si funciona, este no desactiva KMS.<br />
<br />
Una vez que termine presione [Enter] para arrancar con la nueva configuración.<br />
<br />
Véase el artículo [[Intel|Intel (Inglés)]] para mas información.<br />
<br />
====Cambiando la distribución del teclado (keymap)====<br />
<br />
Si la distribución de su teclado no es del tipo ''us'' (Estados Unidos), ejecutando:<br />
# km<br />
puede seleccionar la adecuada de forma interactiva, así como el tipo de fuente de la consola.<br />
<br />
También puede usar el comando ''loadkeys'':<br />
# loadkeys es<br />
(cambie "es" por la distribución correspondiente a su teclado)<br />
<br />
====Documentación====<br />
La [[Guía Oficial de Instalación|Guía Oficial de Instalación]] está disponible en el medio de instalación, puede revisarla si lo necesita. Cambie a tty2, la segunda consola virtual (vc/2) con <Alt> + F2, ingrese como root y ejecute:<br />
# less /usr/share/aif/docs/official_installation_guide_en<br />
El comando {{ic|less}} le permite recorrer el documento página por página. <br />
<br />
Para regresar a la tty1 presione [Alt] + [F1]. Puede regresar a tty2 y revisar la documentación en cualquier momento durante el proceso de instalación.<br />
<br />
{{Nota|AIF ya no es utilizado y deverá de hacer todo manualmente com se hacia hace 10 años}}<br />
<br />
<br />
{{Tip|Por favor tenga en cuenta que la Guía Oficial de Instalación solo cubre la instalación y configuración del sistema base. Una vez que este se encuentre instalado, se recomienda regresar a esta wiki para conocer consideraciones posteriores a la instalación e informaciones relacionadas. }}<noinclude>{{Beginners' Guide navigation_(Español)}}</noinclude></div>
Jristz
https://wiki.archlinux.org/index.php?title=Beginners%27_Guide/Preface_(Espa%C3%B1ol)&diff=215493
Beginners' Guide/Preface (Español)
2012-07-29T20:59:04Z
<p>Jristz: /* Introducción */</p>
<hr />
<div><noinclude><br />
[[Category:Getting and installing Arch (Español)]]<br />
[[Category:About Arch (Español)]]<br />
[[da:Beginners' Guide/Preface]]<br />
[[en:Beginners' Guide/Preface]]<br />
[[hr:Beginners' Guide/Preface]]<br />
[[hu:Beginners' Guide/Preface]]<br />
[[id:Beginners' Guide/Preface]]<br />
[[it:Beginners' Guide/Preface]]<br />
[[ko:Beginners' Guide/Preface]]<br />
[[nl:Beginners' Guide/Voorwoord]]<br />
[[pt:Beginners' Guide/Preface]]<br />
[[ru:Beginners' Guide/Preface]]<br />
[[sk:Beginners' Guide/Preface]]<br />
[[sr:Beginners' Guide/Preface]]<br />
[[zh-CN:Beginners' Guide/Preface]]<br />
{{Tip|Esta es parte de un articulo multi-pagina de "The Beginners' Guide". Haga '''[[Beginners' Guide_(Español)|clic aquí]]''' si prefiere leer el articulo completo.}}<br />
</noinclude><br />
==Prefacio==<br />
<br />
===Introducción===<br />
Bienvenido. Este documento le guiará a través del proceso de instalar y configurar [[Arch Linux (Español)|Arch Linux]]; una simple, ágil y liviana distribución de GNU/Linux que requiere del usuario cierto nivel de conocimiento. Esta guía está dirigida hacia los nuevos usuarios de Arch, pero busca servir como una referencia sólida y una base informativa para todos. <br />
<br />
Antes de instalar, debería darle una mirada rapida al [[FAQ (Español)|FAQ]].<br />
<br />
'''Puntos relevantes de Arch Linux como distribución'''<br />
<br />
*Diseño y filosofía '''[[Filosofía de Arch (Español)|simple]]'''.<br />
*[https://www.archlinux.org/packages/?q= Todos los paquetes] son compilados para arquitecturas de [https://es.wikipedia.org/wiki/I686 i686] y [https://es.wikipedia.org/wiki/X86-64 x86-64].<br />
*Scripts de '''[[Arch Boot Process (Español)|inicio estilo BSD]]''', contando con cinco o más archivos centralizados de configuración según sus nececidades [vease la configuración de /etc/rc.conf, /etc/hostname, /etc/vconsole.conf y otros].<br />
*[[mkinitcpio]], un creador de imágenes [https://es.wikipedia.org/wiki/Initrd initramfs] simple y dinámico.<br />
*Modelo '''Rolling Release'''.<br />
*El [https://es.wikipedia.org/wiki/Sistema_de_gesti%C3%B3n_de_paquetes gestor de paquetes] [[Pacman (Español)|pacman]], es rápido, ágil y ligero, con un consumo de memoria muy modesto.<br />
*El [[Arch Build System (Español)|Arch Build System]], un sistema estilo ''ports'', que hace simple la construcción de paquetes que se instalan en Arch desde código fuente.<br />
*El [[Arch User Repository (Español)|Arch User Repository]] ofrece miles de scripts de construcción de paquetes para Arch, proveídos por los mismos usuarios.<br />
<br />
===Licencia===<br />
<br />
Arch Linux, pacman, la documentación, y scripts son protegidos por derechos de copyright ©2002-2007 por Judd Vinet, ©2007-2011 por Aaron Griffin y se encuentran bajo la licencia [https://www.gnu.org/licenses/old-licenses/gpl-2.0.html GNU General Public License Version 2].<br />
<br />
===Filosofía de Arch===<br />
<br />
'''''Los principios de diseño detrás de Arch apuntan a mantenerlo [[The Arch Way (Español)|simple]].'' '''<br />
<br />
Simple, en este contexto, significa "evitando agregados, modificaciones o complicaciones innecesarias". En pocas palabras: un enfoque elegante y minimalista.<br />
<br />
'''Algunos puntos a tener en cuenta:'''<br />
<br />
*''"Simple se define desde un punto de vista técnico, no desde un punto de vista de la facilidad de uso. Es mejor ser técnicamente elegante con una mayor curva de aprendizaje, que ser fácil de usar y técnicamente [inferior]."'' - Aaron Griffin<br />
<br />
*''"Entia non sunt multiplicanda praeter necessitatem"'' o ''"Las entidades no deben ser multiplicadas innecesariamente."'' - La navaja de Occam. El término navaja se refiere al acto de rasurar, eliminando complicaciones innecesarias para llegar a la explicación, método o teoría más simple.<br />
<br />
*''"La parte extraordinaria [de mi método] yace en su simplicidad. Mi creencia siempre fue que el método simple es el método correcto."'' - Bruce Lee<br />
<br />
===Acerca de esta guía===<br />
<br />
La [[Main Page (Español)|wiki de Arch]] es un excelente recurso y debe ser consultada primero ante cualquier problema; [https://es.wikipedia.org/wiki/Internet_Relay_Chat IRC] ([irc://irc.freenode.net/#archlinux irc://irc.freenode.net/#archlinux]) y los foros (en [https://bbs.archlinux.org/ inglés] o [http://www.archlinux-es.org/foros/ español]) también están disponibles si la respuesta no fue encontrada. También esté seguro de fijarse en las páginas {{ic|man}} por cualquier instrucción desconocida, normalmente se puede invocar con {{ic|man ''instrucción''}}.<br />
<br />
{{Nota|Seguir esta guía cuidadosamente es esencial para instalar exitosamente un sistema Arch Linux correctamente configurado, así que, por favor, léala a fondo. Es altamente recomendable que lea cada sección completamente <u>antes</u> de realizar cualquiera de las tareas que se detallan.}}<br />
<br />
Esta guía se divide en 5 componentes principales:<br />
<br />
*[[<noinclude>Beginners' Guide/Preparation (Español)</noinclude>#Parte I: Preparar la instalación|Parte I: Preparar la instalación]]<br />
*[[<noinclude>Beginners' Guide/Installation (Español)</noinclude>#Parte II: Instalar el sistema base|Parte II: Instalar el sistema base]]<br />
*[[<noinclude>Beginners' Guide/Post-Installation (Español)</noinclude>#Parte III: Después de instalar|Parte III: Después de instalar]]<br />
*[[<noinclude>Beginners' Guide/Extra (Español)</noinclude>#Parte IV: Extras|Parte IV: Extras/Apéndice]]<noinclude><br />
{{Beginners' Guide navigation_(Español)}}</noinclude></div>
Jristz
https://wiki.archlinux.org/index.php?title=Bash&diff=215378
Bash
2012-07-29T06:58:28Z
<p>Jristz: /* ASCII art, fortunes and cowsay */</p>
<hr />
<div>[[Category:Command shells]] <br />
[[es:Bashrc]]<br />
[[it:Bash]]<br />
[[nl:Bashrc]]<br />
[[zh-CN:Bash]]<br />
{{Article summary start}}<br />
{{Article summary text|Discussing and improving Bash's capabilities.}}<br />
{{Article summary heading|Related}}<br />
{{Article summary wiki|Readline}}<br />
{{Article summary wiki|Environment Variables}}<br />
{{Article summary wiki|Color Bash Prompt}}<br />
{{Article summary end}}<br />
'''Bash''' (Bourne-again Shell) is a [[Command shell|shell]]/programming language by the [[GNU Project]]. Its name is a homaging reference to its predecessor: the long-deprecated Bourne shell. Bash can be run on most UNIX-like operating systems, including GNU/Linux. Arch copiously uses Bash throughout its init-scripts.<br />
<br />
==Invocation==<br />
Bash behaviour can be altered depending on how it is invoked. Some descriptions of different modes follow.<br />
===Login shell===<br />
If Bash is spawned by {{ic|login}} in a tty, by an [[SSH]] daemon, or similar means, it is considered a login shell. This mode can also be engaged using the {{Ic|-l}} or {{Ic|--login}} command line options.<br />
<br />
===Interactive shell===<br />
Bash is considered an interactive shell if it is started neither with the {{Ic|-c}} option nor any non-option arguments, and whose standard input and error are connected to terminals.<br />
<br />
===POSIX compliance===<br />
Bash can be run with enhanced POSIX compliance by starting Bash with the {{Ic|--posix}} command-line option or executing ‘{{Ic|set -o posix}}’ while Bash is running.<br />
<br />
===Legacy mode===<br />
In Arch {{ic|/bin/sh}} (which used to be the Bourne shell executable) is symlinked to {{ic|/bin/bash}}.<br />
<br />
If Bash is invoked with the name {{Ic|sh}}, it tries to mimic the startup behavior of historical versions of {{Ic|sh}} as closely as possible, while conforming to the POSIX standard as well. <br />
<br />
In this mode, Bash sources the startup files and then enters '''POSIX compliance'''.<br />
<br />
==Configuration==<br />
{{poor writing}}<br />
===Configuration file overview===<br />
* {{ic|/etc/profile}}<br />
* {{ic|~/.bash_profile}}<br />
* {{ic|~/.bash_login}}<br />
* {{ic|~/.profile}}<br />
* {{ic|/etc/bash.bashrc}} (''Non-standard'': only some distros, Arch included)<br />
* {{ic|~/.bashrc}}<br />
* {{ic|~/.bash_logout}}<br />
An overview of the commonly used configuration files:<br />
====/etc/profile====<br />
{{ic|/etc/profile}} is sourced by all Bourne-compatible shells upon login. It sets up an environment upon login and loads application-specific ({{ic|/etc/profile.d/*.sh}}) settings.<br />
<br />
====.profile====<br />
This file is read and sourced by bash when an interactive login shell is started.<br />
<br />
====.bashrc====<br />
The file {{ic|~/.bashrc}} is read and sourced by bash when a non-login interactive shell is started, for example, when you open a virtual console from the desktop environment. This file is useful for setting up a user-specific shell environment.<br />
<br />
===Configuration file sourcing order at startup===<br />
These files are sourced by bash in different circumstances. <br />
* if interactive + login shell → {{ic|/etc/profile}} then the first readable of {{ic|~/.bash_profile}}, {{ic|~/.bash_login}}, and {{ic|~/.profile}}<br />
**Bash will source {{ic|~/.bash_logout}} upon exit. <br />
* if interactive + non-login shell → {{ic|/etc/bash.bashrc}} then {{ic|~/.bashrc}}<br />
* if login shell + legacy mode → {{ic|/etc/profile}} then {{ic|~/.profile}}<br />
<br />
But, in Arch, by default:<br />
* {{ic|/etc/profile}} (indirectly) sources {{ic|/etc/bash.bashrc}}<br />
* {{ic|/etc/skel/.bash_profile}} which users are encouraged to copy to {{ic|~/.bash_profile}}, sources {{ic|~/.bashrc}}<br />
which means that {{ic|/etc/bash.bashrc}} and {{ic|~/.bashrc}} will be executed for all interactive shells, whether they are login shells or not.<br />
<br />
Examples of the user dotfiles can be found in {{ic|/etc/skel/}}.<br />
<br />
{{Note|legacy mode is when invoked with the name {{Ic|sh}}}}<br />
<br />
===Shell and environment variables===<br />
The behavior of bash and programs run by it can be influenced by a number of environment variable. Environment variables are used to store useful values such as command search directories, or which browser to use. When a new shell or script is launched it inherits its parent's variables, thus starting with an internal set of shell variables[http://www.kingcomputerservices.com/unix_101/understanding_unix_shells_and_environment_variables.htm ].<br />
<br />
These shell variables in bash can be exported in order to become environment variables:<br />
VARIABLE=content<br />
export VARIABLE<br />
or with a shortcut<br />
export VARIABLE=content<br />
<br />
Environment variables are conventionally placed in {{ic|~/.profile}} or {{ic|/etc/profile}} so that all bourne-compatible shells can use them.<br />
<br />
See [[Environment Variables]] for more general information.<br />
<br />
==Command line==<br />
Bash command line is managed by the separate library called [[Readline]]. Readline provides a lot of shortcuts for interacting with the command line i.e. moving back and forth on the word basis, deleting words etc. It is also Readline's responsibility to manage [[Readline#History|history]] of input commands. Last, but not least, it allows you to create [[Readline#Macros|macros]].<br />
<br />
==Aliases==<br />
[[Wikipedia:alias|alias]] is a command, which enables a replacement of a word with another string. It is often used for abbreviating a system command, or for adding default arguments to a regularly used command.<br />
<br />
Personal aliases are preferably stored in {{ic|~/.bashrc}}, and system-wide aliases (which affect all users) belong in {{ic|/etc/bash.bashrc}}.<br />
<br />
An example excerpt from {{ic|~/.bashrc}} covering several time-saving aliases:<br />
{{hc|~/.bashrc<br />
|2=<nowiki><br />
# modified commands<br />
alias diff='colordiff' # requires colordiff package<br />
alias grep='grep --color=auto'<br />
alias more='less'<br />
alias df='df -h'<br />
alias du='du -c -h'<br />
alias mkdir='mkdir -p -v'<br />
alias nano='nano -w'<br />
alias ping='ping -c 5'<br />
alias ..='cd ..'<br />
<br />
# new commands<br />
alias da='date "+%A, %B %d, %Y [%T]"'<br />
alias du1='du --max-depth=1'<br />
alias hist='history | grep $1' # requires an argument<br />
alias openports='netstat --all --numeric --programs --inet --inet6'<br />
alias pg='ps -Af | grep $1' # requires an argument (note: /usr/bin/pg is installed by the util-linux package; maybe a different alias name should be used)<br />
<br />
# privileged access<br />
if [ $UID -ne 0 ]; then<br />
alias sudo='sudo '<br />
alias scat='sudo cat'<br />
alias svim='sudo vim'<br />
alias root='sudo su'<br />
alias reboot='sudo reboot'<br />
alias halt='sudo halt'<br />
alias update='sudo pacman -Su'<br />
alias netcfg='sudo netcfg2'<br />
fi<br />
<br />
# ls<br />
alias ls='ls -hF --color=auto'<br />
alias lr='ls -R' # recursive ls<br />
alias ll='ls -l'<br />
alias la='ll -A'<br />
alias lx='ll -BX' # sort by extension<br />
alias lz='ll -rS' # sort by size<br />
alias lt='ll -rt' # sort by date<br />
alias lm='la | more'<br />
<br />
# safety features<br />
alias cp='cp -i'<br />
alias mv='mv -i'<br />
alias rm='rm -I' # 'rm -i' prompts for every file<br />
alias ln='ln -i'<br />
alias chown='chown --preserve-root'<br />
alias chmod='chmod --preserve-root'<br />
alias chgrp='chgrp --preserve-root'<br />
<br />
# pacman aliases (if applicable, replace 'pacman' with your favorite AUR helper)<br />
alias pac="pacman -S" # default action - install one or more packages<br />
alias pacu="pacman -Syu" # '[u]pdate' - upgrade all packages to their newest version<br />
alias pacs="pacman -Ss" # '[s]earch' - search for a package using one or more keywords<br />
alias paci="pacman -Si" # '[i]nfo' - show information about a package<br />
alias pacr="pacman -R" # '[r]emove' - uninstall one or more packages<br />
alias pacl="pacman -Sl" # '[l]ist' - list all packages of a repository<br />
alias pacll="pacman -Qqm" # '[l]ist [l]ocal' - list all packages which were locally installed (e.g. AUR packages)<br />
alias paclo="pacman -Qdt" # '[l]ist [o]rphans' - list all packages which are orphaned<br />
alias paco="pacman -Qo" # '[o]wner' - determine which package owns a given file<br />
alias pacf="pacman -Ql" # '[f]iles' - list all files installed by a given package<br />
alias pacc="pacman -Sc" # '[c]lean cache' - delete all not currently installed package files<br />
alias pacm="makepkg -fci" # '[m]ake' - make package from PKGBUILD file in current directory<br />
</nowiki>}}<br />
<br />
==Functions==<br />
Bash also support functions. The following function will extract a wide range of compressed file types. Add the function to {{ic|~/.bashrc}} and use it with the syntax {{Ic|extract <file1> <file2> ...}}<br />
<br />
{{hc|~/.bashrc<br />
|2=<nowiki><br />
extract() {<br />
local c e i<br />
<br />
(($#)) || return<br />
<br />
for i; do<br />
c=''<br />
e=1<br />
<br />
if [[ ! -r $i ]]; then<br />
echo "$0: file is unreadable: \`$i'" >&2<br />
continue<br />
fi<br />
<br />
case $i in<br />
*.t@(gz|lz|xz|b@(2|z?(2))|a@(z|r?(.@(Z|bz?(2)|gz|lzma|xz)))))<br />
c='bsdtar xvf';;<br />
*.7z) c='7z x';;<br />
*.Z) c='uncompress';;<br />
*.bz2) c='bunzip2';;<br />
*.exe) c='cabextract';;<br />
*.gz) c='gunzip';;<br />
*.rar) c='unrar x';;<br />
*.xz) c='unxz';;<br />
*.zip) c='unzip';;<br />
*) echo "$0: unrecognized file extension: \`$i'" >&2<br />
continue;;<br />
esac<br />
<br />
command $c "$i"<br />
e=$?<br />
done<br />
<br />
return $e<br />
}<br />
</nowiki>}}<br />
<br />
{{note|[[Bash]] users should make sure extglob is enabled: {{Ic|shopt -s extglob}}, for example by adding it to the {{ic|.bashrc}}. It is enabled by default if using [[Bash#Advanced completion|Bash completion]]. [[Zsh]] users should do: {{Ic|setopt kshglob}} instead.}}<br />
<br />
Another way to do this is to install ''unp'' package.<br />
<br />
More bash function examples can be found [https://bbs.archlinux.org/viewtopic.php?id=30155 here.]<br />
<br />
==Tips and tricks==<br />
===Prompt customization===<br />
The bash prompt is governed by the variable {{Ic|$PS1}}. To colorize the bash prompt, first comment out the default {{Ic|$PS1}}:<br />
#PS1='[\u@\h \W]\$ '<br />
Then add the following line:<br />
PS1='\[\e[0;31m\]\u\[\e[m\] \[\e[1;34m\]\w\[\e[m\] \[\e[0;31m\]\$ \[\e[m\]\[\e[0;32m\] '<br />
This {{Ic|$PS1}} is useful for a root bash prompt, with red designation and green console text. For details on customizing your bash prompt, see [[Color Bash Prompt]].<br />
<br />
===Auto-completion===<br />
It is useful to have the auto-complete feature (pressing {{Keypress|Tab}} key twice on the keyboard) after you type some command like sudo.<br />
<br />
To do this add a line in this format to your {{ic|~/.bashrc}} file:<br />
complete -cf your_command<br />
<br />
For example, to enable auto-complete after sudo and man:<br />
complete -cf sudo<br />
complete -cf man<br />
<br />
====Advanced completion====<br />
Despite Bash's native support for basic file name, command, and variable auto-completion, there are ways of improving and extending its reach.<br />
<br />
The {{Pkg|bash-completion}} package extends functionality by adding auto-completion to a wide range of commands and their options. Enabling advanced bash completion is quite simple, just install the following package:<br />
# pacman -S bash-completion<br />
Start a new shell and it will be automatically enabled thanks to {{ic|/etc/bash.bashrc}}.<br />
{{Note|If you added any lines similar to "complete -cf sudo" as mentioned in the previous settings and have problems with bash-completion, try removing those lines.}}<br />
<br />
====Faster completion====<br />
By appending the following into the readline initialization file ({{ic|~/.inputrc}} or {{ic|/etc/inputrc}} by default):<br />
set show-all-if-ambiguous on<br />
it is no longer necessary to hit {{Keypress|Tab}} (default binding) twice to produce a list of all possible completions (both when a partial completion is possible and when no completion is possible), as a single key-press will suffice. Alternatively, to produce such a list only when no completion is possible (i.e., not when a partial completion is possible), append the following command in lieu of the previous one:<br />
set show-all-if-unmodified on<br />
<br />
=== Disable Ctrl+z in terminal===<br />
You can disable {{Keypress|Ctrl+z}} (pauses/closes your CLI application) feature for you CLI by wrapping your command in this script<br />
#!/bin/bash<br />
trap "" 20<br />
/path_to_your_application/<br />
example:<br />
#!/bin/bash<br />
trap "" 20<br />
/usr/bin/adom<br />
<br />
With this example script, when you accidentally press {{Keypress|Ctrl+z}} instead of {{Keypress|Shift+z}} or some other key combination while playing Adom(game) your game will not end. Nothing will happen because {{Keypress|Ctrl+z}} will be ignored.<br />
<br />
===Clear the screen after logging out===<br />
To clear the screen after logging out on a virtual terminal, append the following lines to {{ic|~/.bash_logout}}:<br />
clear<br />
reset<br />
<br />
===ASCII art, fortunes and cowsay===<br />
Along with colors, system info and ASCII symbols, Bash can be made to display a piece of ASCII art on login. ASCII images can be found online and pasted into a text file, or generated from scratch. To set the image to display in a terminal on login, place the string <br />
cat /path/to/text/file<br />
at the top of {{ic|~/.bashrc}}.<br />
<br />
Random poignant, inspirational, silly or snide phrases can also be shown. To see an example, install the {{Pkg|fortune-mod}} package from the {{Ic|extra}} repository.<br />
<br />
{{bc|1=<br />
'''<font color=red>(</font><font color=green>user@host</font><font color=red>)-(</font><font color=green>10:10 AM Wed Dec 22</font><font color=red>)'''<br />
--(</font><font color=green>~</font><font color=red>)---> </font> fortune<br />
<br/><br />
It is Texas law that when two trains meet each other at a railroad crossing,<br />
each shall come to a full stop, and neither shall proceed until the other has gone.}}<br />
<br />
To have a random phrase displayed when logging into a terminal, just set <br />
command fortune<br />
as the top line in {{ic|~/.bashrc}}.<br />
<br />
{{Note|By default, {{Ic|fortune}} displays quotes and phrases that are rather inoccuous. However, the package does contain a set of comments some will find offensive, located in {{ic|/usr/share/fortune/off}}. See the man page for more info on these.}}<br />
<br />
These two features can be combined, using the program {{Pkg|cowsay}}. Modify the line at the top of {{ic|~/.bashrc}} to read <br />
command cowsay $(fortune)<br />
<br />
or<br />
command cowthink $(fortune)<br />
<br />
<br />
The earth is like a tiny grain of sand, <br />
only much, much heavier. <br />
----------------------------------------- <br />
\ ^__^<br />
\ (oo)\_______<br />
(__)\ )\/\<br />
||----w |<br />
|| ||<br />
<br />
The ASCII images are generated by {{ic|.cow}} text files located in {{ic|/usr/share/cows}}, and all themes can be listed with the command {{Ic|cowsay -l}} These files can be edited to the user's liking; custom images can also be created from scratch or found on the net. The easiest way create a custom cow file from an image found online would be to open an existing {{ic|.cow}} file in a text editor, copy-and-paste the image from a browser and save the file as a different name. Test the custom file using<br />
<br />
# cowsay -f {{ic|cowfile}} $(fortune)<br />
<br />
This can produce some nice eye candy, and the commands used can be more complex. For a specialized example, take a look [http://bambambambam.wordpress.com/2009/07/04/futurama-ascii-with-slashdot-header-quotes-in-your-terminal/ here.] Another example, to use a random cow, random facial expression, and nicely wrap the text of long fortunes.<br />
<br />
fortune -a | fmt -80 -s | cowsay -$(shuf -n 1 -e b d g p s t w y) -f $(shuf -n 1 -e $(cowsay -l | tail -n +2)) -n<br />
<br />
________________________________________ <br />
( Fry: I must be a robot. Why else would )<br />
( human women refuse to date me? )<br />
---------------------------------------- <br />
o<br />
o<br />
o <br />
,'``.._ ,'``.<br />
:,--._:)\,:,._,.:<br />
:`--,''@@@:`...';\ <br />
`,'@@@@@@@`---'@@`. <br />
/@@@@@@@@@@@@@@@@@:<br />
/@@@@@@@@@@@@@@@@@@@\<br />
,'@@@@@@@@@@@@@@@@@@@@@:\.___,-.<br />
`...,---'``````-..._@@@@|:@@@@@@@\<br />
( )@@@;:@@@@)@@@\ _,-.<br />
`. (@@@//@@@@@@@@@@`'@@@@\<br />
: `.//@@)@@@@@@)@@@@@,@;<br />
|`. _,'/@@@@@@@)@@@@)@,'@,'<br />
:`.`-..____..=:.-':@@@@@.@@@@@_,@@,'<br />
,'\ ``--....-)=' `._,@@\ )@@@'``._<br />
/@_@`. (@) /@@@@@) ; / \ \`-.'<br />
(@@@`-:`. `' ___..'@@_,-' |/ `.)<br />
`-. `.`.``-----``--,@@.'<br />
|/`.\`' ,',');<br />
` (/ (/<br />
'''<font color=red>(</font><font color=green>user@host</font><font color=red>)-(</font><font color=green>10:10 AM Wed Dec 22</font><font color=red>)'''--(</font><font color=green>~</font>)<font color=red>)---></font><br />
<br />
{{Note|If you want a full colored cowsay-like art, the best option is {{Pkg|ponysay}}, this show full colored ponies (more than 220 at version 1.1) in you terminal (inside X11 or in TTY you have full 256 colored ponies) runing 'ponysay "command or fortune command"', the complete list of ponies are showed usind 'ponysay -l'.<br />
Exist in AUR a tool for creating more ponies (or other stuff) called {{aur|util-say-git}}, and these news archives need to be stored in $HOME/.local/share/ponysay/ponies and $HOME/.local/share/ponysay/ttyponies for desktop and TTY respectibely}}<br />
<br />
===ASCII Historical Calendar===<br />
To install [http://www.openbsd.org/cgi-bin/man.cgi?query=calendar&sektion=1 calendar] files in your {{ic|~/.calendar}} directory you will need the {{Pkg|rpmextract}} package installed. Then from your home directory, run the following:<br />
$ mkdir -p ~/.calendar<br />
$ curl -o calendar.rpm http://download.fedora.redhat.com/pub/epel/5/x86_64/calendar-1.25-4.el5.x86_64.rpm<br />
$ rpm2cpio calendar.rpm | bsdtar -C ~/.calendar --strip-components=4 -xf - ./usr/share/c*<br />
<br />
This will then print out the calendar items<br />
$ sed -n "/$(date +%m\\/%d\\\|%b\*\ %d)/p" $(find ~/.calendar /usr/share/calendar -maxdepth 1 -type f -name 'c*' 2>/dev/null);<br />
<br />
===Customise Title===<br />
<br />
The {{ic|$PROMPT_COMMAND}} variable allows you to execute a command before the prompt. For example, this will change the title to your full current working directory:<br />
<br />
export PROMPT_COMMAND='echo -ne "\033]0;$PWD\007"'<br />
<br />
This will change your title to the last command run, and make sure your history file is always up-to-date:<br />
export HISTCONTROL=ignoreboth<br />
export HISTIGNORE='history*'<br />
export PROMPT_COMMAND='history -a;echo -en "\e]2;";history 1|sed "s/^[ \t]*[0-9]\{1,\} //g";echo -en "\e\\";<br />
<br />
===Fix line wrap on window resize===<br />
<br />
When you resize your xterm in vi for example, Bash will not get the resize signal, and the text you type will not wrap correctly, overlapping the prompt.<br />
<br />
Use the following in your {{ic|/etc/bash.bashrc}} (from Debian) :<br />
# check the window size after each command and, if necessary,<br />
# update the values of LINES and COLUMNS.<br />
shopt -s checkwinsize<br />
<br />
===Bash history completion===<br />
Bash history completion bound to arrow keys (down, up):<br />
# ~/.bashrc<br />
bind '"\e[A": history-search-backward'<br />
bind '"\e[B": history-search-forward'<br />
or equivalently in {{ic|~/.inputrc}}:<br />
# ~/.inputrc<br />
"\e[A": history-search-backward<br />
"\e[B": history-search-forward<br />
More info at [[Readline#History]] and http://www.gnu.org/software/bash/manual/html_node/Readline-Init-File-Syntax.html<br />
<br />
==See also==<br />
* [http://tldp.org/LDP/abs/html/ Advanced Bash Scripting Guide] - Very good resource regarding shell scripting using bash<br />
* [http://www.gnu.org/software/bash/manual/bashref.html Bash Reference Manual] - Official reference (654K)<br />
* [http://wiki.bash-hackers.org/doku.php Bash Hackers Wiki] - Excellent Bash Wiki<br />
* [http://bashscripts.org Bashscripts.org] - Forum for bash coders.<br />
* [http://www.ibm.com/developerworks/linux/library/l-bash.html Bash Scripting by Example]<br />
* [http://www.caliban.org/bash Completion Guide]<br />
* [http://wooledge.org/mywiki/BashFaq Greg's Wiki] - Highly recommended<br />
* [http://www.gnu.org/software/bash/manual/bash.html man page]<br />
* [http://www.grymoire.com/Unix/Quote.html Quote Tutorial]<br />
* irc://irc.freenode.net#bash - Active and friendly Internet Relay Chat channel for Bash.<br />
* http://chakra-project.org/wiki/index.php/Startup_files<br />
* [http://www.aosabook.org/en/bash.html The Bourne-Again Shell] - The third chapter of ''The Architecture of Open Source Applications''<br />
* [http://tldp.org/HOWTO/Xterm-Title-4.html How to change the title of an xterm]<br />
* [http://wiki.gotux.net/bash:arc Create and Extract Various Archives]<br />
* [http://www.gnu.org/software/bash/manual/html_node/Readline-Init-File-Syntax.html Readline Init File Syntax ]</div>
Jristz
https://wiki.archlinux.org/index.php?title=Talk:Arch_Linux&diff=214566
Talk:Arch Linux
2012-07-25T00:03:28Z
<p>Jristz: /* I've spotted an acronym! */</p>
<hr />
<div>The part that says "Arch Linux defines simplicity as a lightweight base structure without unnecessary additions, modifications, or complications..." basically contradicts itself. It has a lot of clutter that might use a revert to the original version Dusty and I wrote. See for yourself. Are "additions" and "modifications" unnecessary? No. They are just not considered base structure. But they are certainly needed if you want to do something useful. Any attempt to further explain the "lightweight base structure" is just adding clutter. The same can be said of many parts in the article. I haven't checked back on it for a long time, but it seems people have just added a lot of stuff without cleaning it up. --[[User:Foxbunny|foxbunny]] 18:33, 14 May 2010 (EDT)<br />
<br />
: In the phrase, "unnecessary additions, modifications, or complications..." the 'additions' and 'modifications' are both described by the adjective 'unnecessary'. Therefore, in English, it is read and understood to mean that such '''unnecessary''' modification is to be avoided, if possible. [[User:Misfit138|Misfit138]] 21:47, 18 June 2011 (EDT)<br />
== <s>Link to Polish and French wikis</s> ==<br />
<br />
* http://wiki.archlinux.pl/The_Arch_Way<br />
* http://wiki.archlinux.fr/Kiss<br />
<br />
Thank you -- [[User:Karol|Karol]] 17:17, 17 June 2011 (EDT)<br />
<br />
==<s>I've spotted an acronym!</s>==<br />
<br />
<pre><br />
1 Simplicity<br />
2 Code-correctness over convenience<br />
3 User-centric<br />
4 Openness<br />
5 Freedom<br />
</pre><br />
<br />
Rearrange it as 5,4,2,3,1 and it becomes "FOCUS"!<br />
:Great! If you can find the other 15 easter eggs in the wiki, solve the resulting riddle, and find the jade monkey before the next full moon, you'll get a pleasant surprise! -- [[User:Kynikos|Kynikos]] 13:37, 10 October 2011 (EDT)<br />
::Is the fact that you posted this at leet time one of the easter eggs?<br />
:::LOL definitely!! XD -- [[User:Kynikos|Kynikos]] ([[User talk:Kynikos|talk]]) 10:08, 10 June 2012 (UTC)<br />
<br />
==User Centric==<br />
Any that have permision can chage this to relly in User centric but for how this manage they own sistem<br />
Actually relly in recent changes (Rc.conf split, new arch iso) is demotrated that User oly have control ower they own machina and NOT neither never over devs decicion either if thece dession are pro or con the Arch-way</div>
Jristz
https://wiki.archlinux.org/index.php?title=Bash&diff=213315
Bash
2012-07-17T08:24:39Z
<p>Jristz: /* ASCII art, fortunes and cowsay */</p>
<hr />
<div>[[Category:Command shells]] <br />
[[es:Bashrc]]<br />
[[it:Bash]]<br />
[[nl:Bashrc]]<br />
[[zh-CN:Bash]]<br />
{{Article summary start}}<br />
{{Article summary text|Discussing and improving Bash's capabilities.}}<br />
{{Article summary heading|Related}}<br />
{{Article summary wiki|Readline}}<br />
{{Article summary wiki|Environment Variables}}<br />
{{Article summary wiki|Color Bash Prompt}}<br />
{{Article summary end}}<br />
'''Bash''' (Bourne-again Shell) is a [[Command shell|shell]]/programming language by the [[GNU Project]]. Its name is a homaging reference to its predecessor: the long-deprecated Bourne shell. Bash can be run on most UNIX-like operating systems, including GNU/Linux. Arch copiously uses Bash throughout its init-scripts.<br />
<br />
==Invocation==<br />
Bash behaviour can be altered depending on how it is invoked. Some descriptions of different modes follow.<br />
===Login shell===<br />
If Bash is spawned by {{ic|login}} in a tty, by an [[SSH]] daemon, or similar means, it is considered a login shell. This mode can also be engaged using the {{Ic|-l}} or {{Ic|--login}} command line options.<br />
<br />
===Interactive shell===<br />
Bash is considered an interactive shell if it is started neither with the {{Ic|-c}} option nor any non-option arguments, and whose standard input and error are connected to terminals.<br />
<br />
===POSIX compliance===<br />
Bash can be run with enhanced POSIX compliance by starting Bash with the {{Ic|--posix}} command-line option or executing ‘{{Ic|set -o posix}}’ while Bash is running.<br />
<br />
===Legacy mode===<br />
In Arch {{ic|/bin/sh}} (which used to be the Bourne shell executable) is symlinked to {{ic|/bin/bash}}.<br />
<br />
If Bash is invoked with the name {{Ic|sh}}, it tries to mimic the startup behavior of historical versions of {{Ic|sh}} as closely as possible, while conforming to the POSIX standard as well. <br />
<br />
In this mode, Bash sources the startup files and then enters '''POSIX compliance'''.<br />
<br />
==Configuration==<br />
{{poor writing}}<br />
===Configuration file overview===<br />
* {{ic|/etc/profile}}<br />
* {{ic|~/.bash_profile}}<br />
* {{ic|~/.bash_login}}<br />
* {{ic|~/.profile}}<br />
* {{ic|/etc/bash.bashrc}} (''Non-standard'': only some distros, Arch included)<br />
* {{ic|~/.bashrc}}<br />
* {{ic|~/.bash_logout}}<br />
An overview of the commonly used configuration files:<br />
====/etc/profile====<br />
{{ic|/etc/profile}} is sourced by all Bourne-compatible shells upon login. It sets up an environment upon login and loads application-specific ({{ic|/etc/profile.d/*.sh}}) settings.<br />
<br />
====.profile====<br />
This file is read and sourced by bash when an interactive login shell is started.<br />
<br />
====.bashrc====<br />
The file {{ic|~/.bashrc}} is read and sourced by bash when a non-login interactive shell is started, for example, when you open a virtual console from the desktop environment. This file is useful for setting up a user-specific shell environment.<br />
<br />
===Configuration file sourcing order at startup===<br />
These files are sourced by bash in different circumstances. <br />
* if interactive + login shell → {{ic|/etc/profile}} then the first readable of {{ic|~/.bash_profile}}, {{ic|~/.bash_login}}, and {{ic|~/.profile}}<br />
**Bash will source {{ic|~/.bash_logout}} upon exit. <br />
* if interactive + non-login shell → {{ic|/etc/bash.bashrc}} then {{ic|~/.bashrc}}<br />
* if login shell + legacy mode → {{ic|/etc/profile}} then {{ic|~/.profile}}<br />
<br />
But, in Arch, by default:<br />
* {{ic|/etc/profile}} (indirectly) sources {{ic|/etc/bash.bashrc}}<br />
* {{ic|/etc/skel/.bash_profile}} which users are encouraged to copy to {{ic|~/.bash_profile}}, sources {{ic|~/.bashrc}}<br />
which means that {{ic|/etc/bash.bashrc}} and {{ic|~/.bashrc}} will be executed for all interactive shells, whether they are login shells or not.<br />
<br />
Examples of the user dotfiles can be found in {{ic|/etc/skel/}}.<br />
<br />
{{Note|legacy mode is when invoked with the name {{Ic|sh}}}}<br />
<br />
===Shell and environment variables===<br />
The behavior of bash and programs run by it can be influenced by a number of environment variable. Environment variables are used to store useful values such as command search directories, or which browser to use. When a new shell or script is launched it inherits its parent's variables, thus starting with an internal set of shell variables[http://www.kingcomputerservices.com/unix_101/understanding_unix_shells_and_environment_variables.htm ].<br />
<br />
These shell variables in bash can be exported in order to become environment variables:<br />
VARIABLE=content<br />
export VARIABLE<br />
or with a shortcut<br />
export VARIABLE=content<br />
<br />
Environment variables are conventionally placed in {{ic|~/.profile}} or {{ic|/etc/profile}} so that all bourne-compatible shells can use them.<br />
<br />
See [[Environment Variables]] for more general information.<br />
<br />
==Command line==<br />
Bash command line is managed by the separate library called [[Readline]]. Readline provides a lot of shortcuts for interacting with the command line i.e. moving back and forth on the word basis, deleting words etc. It is also Readline's responsibility to manage [[Readline#History|history]] of input commands. Last, but not least, it allows you to create [[Readline#Macros|macros]].<br />
<br />
==Aliases==<br />
[[Wikipedia:alias|alias]] is a command, which enables a replacement of a word with another string. It is often used for abbreviating a system command, or for adding default arguments to a regularly used command.<br />
<br />
Personal aliases are preferably stored in {{ic|~/.bashrc}}, and system-wide aliases (which affect all users) belong in {{ic|/etc/bash.bashrc}}.<br />
<br />
An example excerpt from {{ic|~/.bashrc}} covering several time-saving aliases:<br />
{{hc|~/.bashrc<br />
|2=<nowiki><br />
# modified commands<br />
alias diff='colordiff' # requires colordiff package<br />
alias grep='grep --color=auto'<br />
alias more='less'<br />
alias df='df -h'<br />
alias du='du -c -h'<br />
alias mkdir='mkdir -p -v'<br />
alias nano='nano -w'<br />
alias ping='ping -c 5'<br />
alias ..='cd ..'<br />
<br />
# new commands<br />
alias da='date "+%A, %B %d, %Y [%T]"'<br />
alias du1='du --max-depth=1'<br />
alias hist='history | grep $1' # requires an argument<br />
alias openports='netstat --all --numeric --programs --inet --inet6'<br />
alias pg='ps -Af | grep $1' # requires an argument (note: /usr/bin/pg is installed by the util-linux package; maybe a different alias name should be used)<br />
<br />
# privileged access<br />
if [ $UID -ne 0 ]; then<br />
alias sudo='sudo '<br />
alias scat='sudo cat'<br />
alias svim='sudo vim'<br />
alias root='sudo su'<br />
alias reboot='sudo reboot'<br />
alias halt='sudo halt'<br />
alias update='sudo pacman -Su'<br />
alias netcfg='sudo netcfg2'<br />
fi<br />
<br />
# ls<br />
alias ls='ls -hF --color=auto'<br />
alias lr='ls -R' # recursive ls<br />
alias ll='ls -l'<br />
alias la='ll -A'<br />
alias lx='ll -BX' # sort by extension<br />
alias lz='ll -rS' # sort by size<br />
alias lt='ll -rt' # sort by date<br />
alias lm='la | more'<br />
<br />
# safety features<br />
alias cp='cp -i'<br />
alias mv='mv -i'<br />
alias rm='rm -I' # 'rm -i' prompts for every file<br />
alias ln='ln -i'<br />
alias chown='chown --preserve-root'<br />
alias chmod='chmod --preserve-root'<br />
alias chgrp='chgrp --preserve-root'<br />
<br />
# pacman aliases (if applicable, replace 'pacman' with your favorite AUR helper)<br />
alias pac="pacman -S" # default action - install one or more packages<br />
alias pacu="pacman -Syu" # '[u]pdate' - upgrade all packages to their newest version<br />
alias pacs="pacman -Ss" # '[s]earch' - search for a package using one or more keywords<br />
alias paci="pacman -Si" # '[i]nfo' - show information about a package<br />
alias pacr="pacman -R" # '[r]emove' - uninstall one or more packages<br />
alias pacl="pacman -Sl" # '[l]ist' - list all packages of a repository<br />
alias pacll="pacman -Qqm" # '[l]ist [l]ocal' - list all packages which were locally installed (e.g. AUR packages)<br />
alias paclo="pacman -Qdt" # '[l]ist [o]rphans' - list all packages which are orphaned<br />
alias paco="pacman -Qo" # '[o]wner' - determine which package owns a given file<br />
alias pacf="pacman -Ql" # '[f]iles' - list all files installed by a given package<br />
alias pacc="pacman -Sc" # '[c]lean cache' - delete all not currently installed package files<br />
alias pacm="makepkg -fci" # '[m]ake' - make package from PKGBUILD file in current directory<br />
</nowiki>}}<br />
<br />
==Functions==<br />
Bash also support functions. The following function will extract a wide range of compressed file types. Add the function to {{ic|~/.bashrc}} and use it with the syntax {{Ic|extract <file1> <file2> ...}}<br />
<br />
{{hc|~/.bashrc<br />
|2=<nowiki><br />
extract() {<br />
local c e i<br />
<br />
(($#)) || return<br />
<br />
for i; do<br />
c=''<br />
e=1<br />
<br />
if [[ ! -r $i ]]; then<br />
echo "$0: file is unreadable: \`$i'" >&2<br />
continue<br />
fi<br />
<br />
case $i in<br />
*.t@(gz|lz|xz|b@(2|z?(2))|a@(z|r?(.@(Z|bz?(2)|gz|lzma|xz)))))<br />
c='bsdtar xvf';;<br />
*.7z) c='7z x';;<br />
*.Z) c='uncompress';;<br />
*.bz2) c='bunzip2';;<br />
*.exe) c='cabextract';;<br />
*.gz) c='gunzip';;<br />
*.rar) c='unrar x';;<br />
*.xz) c='unxz';;<br />
*.zip) c='unzip';;<br />
*) echo "$0: unrecognized file extension: \`$i'" >&2<br />
continue;;<br />
esac<br />
<br />
command $c "$i"<br />
e=$?<br />
done<br />
<br />
return $e<br />
}<br />
</nowiki>}}<br />
<br />
{{note|[[Bash]] users should make sure extglob is enabled: {{Ic|shopt -s extglob}}, for example by adding it to the {{ic|.bashrc}}. It is enabled by default if using [[Bash#Advanced completion|Bash completion]]. [[Zsh]] users should do: {{Ic|setopt kshglob}} instead.}}<br />
<br />
Another way to do this is to install ''unp'' package.<br />
<br />
More bash function examples can be found [https://bbs.archlinux.org/viewtopic.php?id=30155 here.]<br />
<br />
==Tips and tricks==<br />
===Prompt customization===<br />
The bash prompt is governed by the variable {{Ic|$PS1}}. To colorize the bash prompt, first comment out the default {{Ic|$PS1}}:<br />
#PS1='[\u@\h \W]\$ '<br />
Then add the following line:<br />
PS1='\[\e[0;31m\]\u\[\e[m\] \[\e[1;34m\]\w\[\e[m\] \[\e[0;31m\]\$ \[\e[m\]\[\e[0;32m\] '<br />
This {{Ic|$PS1}} is useful for a root bash prompt, with red designation and green console text. For details on customizing your bash prompt, see [[Color Bash Prompt]].<br />
<br />
===Auto-completion===<br />
It is useful to have the auto-complete feature (pressing {{Keypress|Tab}} key twice on the keyboard) after you type some command like sudo.<br />
<br />
To do this add a line in this format to your {{ic|~/.bashrc}} file:<br />
complete -cf your_command<br />
<br />
For example, to enable auto-complete after sudo and man:<br />
complete -cf sudo<br />
complete -cf man<br />
<br />
====Advanced completion====<br />
Despite Bash's native support for basic file name, command, and variable auto-completion, there are ways of improving and extending its reach.<br />
<br />
The {{Pkg|bash-completion}} package extends functionality by adding auto-completion to a wide range of commands and their options. Enabling advanced bash completion is quite simple, just install the following package:<br />
# pacman -S bash-completion<br />
Start a new shell and it will be automatically enabled thanks to {{ic|/etc/bash.bashrc}}.<br />
{{Note|If you added any lines similar to "complete -cf sudo" as mentioned in the previous settings and have problems with bash-completion, try removing those lines.}}<br />
<br />
====Faster completion====<br />
By appending the following into the readline initialization file ({{ic|~/.inputrc}} or {{ic|/etc/inputrc}} by default):<br />
set show-all-if-ambiguous on<br />
it is no longer necessary to hit {{Keypress|Tab}} (default binding) twice to produce a list of all possible completions (both when a partial completion is possible and when no completion is possible), as a single key-press will suffice. Alternatively, to produce such a list only when no completion is possible (i.e., not when a partial completion is possible), append the following command in lieu of the previous one:<br />
set show-all-if-unmodified on<br />
<br />
=== Disable Ctrl+z in terminal===<br />
You can disable {{Keypress|Ctrl+z}} (pauses/closes your CLI application) feature for you CLI by wrapping your command in this script<br />
#!/bin/bash<br />
trap "" 20<br />
/path_to_your_application/<br />
example:<br />
#!/bin/bash<br />
trap "" 20<br />
/usr/bin/adom<br />
<br />
With this example script, when you accidentally press {{Keypress|Ctrl+z}} instead of {{Keypress|Shift+z}} or some other key combination while playing Adom(game) your game will not end. Nothing will happen because {{Keypress|Ctrl+z}} will be ignored.<br />
<br />
===Clear the screen after logging out===<br />
To clear the screen after logging out on a virtual terminal, append the following lines to {{ic|~/.bash_logout}}:<br />
clear<br />
reset<br />
<br />
===ASCII art, fortunes and cowsay===<br />
Along with colors, system info and ASCII symbols, Bash can be made to display a piece of ASCII art on login. ASCII images can be found online and pasted into a text file, or generated from scratch. To set the image to display in a terminal on login, place the string <br />
cat /path/to/text/file<br />
at the top of {{ic|~/.bashrc}}.<br />
<br />
Random poignant, inspirational, silly or snide phrases can also be shown. To see an example, install the {{Pkg|fortune-mod}} package from the {{Ic|extra}} repository.<br />
<br />
{{bc|1=<br />
'''<font color=red>(</font><font color=green>user@host</font><font color=red>)-(</font><font color=green>10:10 AM Wed Dec 22</font><font color=red>)'''<br />
--(</font><font color=green>~</font><font color=red>)---> </font> fortune<br />
<br/><br />
It is Texas law that when two trains meet each other at a railroad crossing,<br />
each shall come to a full stop, and neither shall proceed until the other has gone.}}<br />
<br />
To have a random phrase displayed when logging into a terminal, just set <br />
command fortune<br />
as the top line in {{ic|~/.bashrc}}.<br />
<br />
{{Note|By default, {{Ic|fortune}} displays quotes and phrases that are rather inoccuous. However, the package does contain a set of comments some will find offensive, located in {{ic|/usr/share/fortune/off}}. See the man page for more info on these.}}<br />
<br />
These two features can be combined, using the program {{Pkg|cowsay}}. Modify the line at the top of {{ic|~/.bashrc}} to read <br />
command cowsay $(fortune)<br />
<br />
or<br />
command cowthink $(fortune)<br />
<br />
<br />
The earth is like a tiny grain of sand, <br />
only much, much heavier. <br />
----------------------------------------- <br />
\ ^__^<br />
\ (oo)\_______<br />
(__)\ )\/\<br />
||----w |<br />
|| ||<br />
<br />
The ASCII images are generated by {{ic|.cow}} text files located in {{ic|/usr/share/cows}}, and all themes can be listed with the command {{Ic|cowsay -l}} These files can be edited to the user's liking; custom images can also be created from scratch or found on the net. The easiest way create a custom cow file from an image found online would be to open an existing {{ic|.cow}} file in a text editor, copy-and-paste the image from a browser and save the file as a different name. Test the custom file using<br />
<br />
# cowsay -f {{ic|cowfile}} $(fortune)<br />
<br />
This can produce some nice eye candy, and the commands used can be more complex. For a specialized example, take a look [http://bambambambam.wordpress.com/2009/07/04/futurama-ascii-with-slashdot-header-quotes-in-your-terminal/ here.] Another example, to use a random cow, random facial expression, and nicely wrap the text of long fortunes.<br />
<br />
fortune -a | fmt -80 -s | cowsay -$(shuf -n 1 -e b d g p s t w y) -f $(shuf -n 1 -e $(cowsay -l | tail -n +2)) -n<br />
<br />
________________________________________ <br />
( Fry: I must be a robot. Why else would )<br />
( human women refuse to date me? )<br />
---------------------------------------- <br />
o<br />
o<br />
o <br />
,'``.._ ,'``.<br />
:,--._:)\,:,._,.:<br />
:`--,''@@@:`...';\ <br />
`,'@@@@@@@`---'@@`. <br />
/@@@@@@@@@@@@@@@@@:<br />
/@@@@@@@@@@@@@@@@@@@\<br />
,'@@@@@@@@@@@@@@@@@@@@@:\.___,-.<br />
`...,---'``````-..._@@@@|:@@@@@@@\<br />
( )@@@;:@@@@)@@@\ _,-.<br />
`. (@@@//@@@@@@@@@@`'@@@@\<br />
: `.//@@)@@@@@@)@@@@@,@;<br />
|`. _,'/@@@@@@@)@@@@)@,'@,'<br />
:`.`-..____..=:.-':@@@@@.@@@@@_,@@,'<br />
,'\ ``--....-)=' `._,@@\ )@@@'``._<br />
/@_@`. (@) /@@@@@) ; / \ \`-.'<br />
(@@@`-:`. `' ___..'@@_,-' |/ `.)<br />
`-. `.`.``-----``--,@@.'<br />
|/`.\`' ,',');<br />
` (/ (/<br />
'''<font color=red>(</font><font color=green>user@host</font><font color=red>)-(</font><font color=green>10:10 AM Wed Dec 22</font><font color=red>)'''--(</font><font color=green>~</font>)<font color=red>)---></font><br />
<br />
{{Note|If you want a full colored cowsay-like art, the best option is {{Pkg|ponysay}}, this show full colored ponies (more than 200 at version 1.0) in you terminal (inside X11 or in TTY you have full 256 colored ponies) runing 'ponysay "command or fortune command"', the complete list of ponies are showed usind 'ponysay -l'.<br />
Exist in AUR a tool for creating more ponies (or other stuff) called {{aur|util-say-git}}, and tese news archives need to be stored in $HOME/.ponysay/ponies and $HOME/.ponysay/ttyponies for desktop and TTY respectibely}}<br />
<br />
===ASCII Historical Calendar===<br />
To install [http://www.openbsd.org/cgi-bin/man.cgi?query=calendar&sektion=1 calendar] files in your {{ic|~/.calendar}} directory you will need the {{Pkg|rpmextract}} package installed. Then from your home directory, run the following:<br />
$ mkdir -p ~/.calendar<br />
$ curl -o calendar.rpm http://download.fedora.redhat.com/pub/epel/5/x86_64/calendar-1.25-4.el5.x86_64.rpm<br />
$ rpm2cpio calendar.rpm | bsdtar -C ~/.calendar --strip-components=4 -xf - ./usr/share/c*<br />
<br />
This will then print out the calendar items<br />
$ sed -n "/$(date +%m\\/%d\\\|%b\*\ %d)/p" $(find ~/.calendar /usr/share/calendar -maxdepth 1 -type f -name 'c*' 2>/dev/null);<br />
<br />
===Customise Title===<br />
<br />
The {{ic|$PROMPT_COMMAND}} variable allows you to execute a command before the prompt. For example, this will change the title to your full current working directory:<br />
<br />
export PROMPT_COMMAND='echo -ne "\033]0;$PWD\007"'<br />
<br />
This will change your title to the last command run, and make sure your history file is always up-to-date:<br />
export HISTCONTROL=ignoreboth<br />
export HISTIGNORE='history*'<br />
export PROMPT_COMMAND='history -a;echo -en "\e]2;";history 1|sed "s/^[ \t]*[0-9]\{1,\} //g";echo -en "\e\\";<br />
<br />
===Fix line wrap on window resize===<br />
<br />
When you resize your xterm in vi for example, Bash will not get the resize signal, and the text you type will not wrap correctly, overlapping the prompt.<br />
<br />
Use the following in your {{ic|/etc/bash.bashrc}} (from Debian) :<br />
# check the window size after each command and, if necessary,<br />
# update the values of LINES and COLUMNS.<br />
shopt -s checkwinsize<br />
<br />
===Bash history completion===<br />
Bash history completion bound to arrow keys (down, up):<br />
# ~/.bashrc<br />
bind '"\e[A": history-search-backward'<br />
bind '"\e[B": history-search-forward'<br />
or equivalently in {{ic|~/.inputrc}}:<br />
# ~/.inputrc<br />
"\e[A": history-search-backward<br />
"\e[B": history-search-forward<br />
More info at [[Readline#History]] and http://www.gnu.org/software/bash/manual/html_node/Readline-Init-File-Syntax.html<br />
<br />
==See also==<br />
* [http://tldp.org/LDP/abs/html/ Advanced Bash Scripting Guide] - Very good resource regarding shell scripting using bash<br />
* [http://www.gnu.org/software/bash/manual/bashref.html Bash Reference Manual] - Official reference (654K)<br />
* [http://wiki.bash-hackers.org/doku.php Bash Hackers Wiki] - Excellent Bash Wiki<br />
* [http://bashscripts.org Bashscripts.org] - Forum for bash coders.<br />
* [http://www.ibm.com/developerworks/linux/library/l-bash.html Bash Scripting by Example]<br />
* [http://www.caliban.org/bash Completion Guide]<br />
* [http://wooledge.org/mywiki/BashFaq Greg's Wiki] - Highly recommended<br />
* [http://www.gnu.org/software/bash/manual/bash.html man page]<br />
* [http://www.grymoire.com/Unix/Quote.html Quote Tutorial]<br />
* irc://irc.freenode.net#bash - Active and friendly Internet Relay Chat channel for Bash.<br />
* http://chakra-project.org/wiki/index.php/Startup_files<br />
* [http://www.aosabook.org/en/bash.html The Bourne-Again Shell] - The third chapter of ''The Architecture of Open Source Applications''<br />
* [http://tldp.org/HOWTO/Xterm-Title-4.html How to change the title of an xterm]<br />
* [http://wiki.gotux.net/bash:arc Create and Extract Various Archives]<br />
* [http://www.gnu.org/software/bash/manual/html_node/Readline-Init-File-Syntax.html Readline Init File Syntax ]</div>
Jristz
https://wiki.archlinux.org/index.php?title=Bash&diff=213314
Bash
2012-07-17T08:23:20Z
<p>Jristz: /* ASCII art, fortunes and cowsay */</p>
<hr />
<div>[[Category:Command shells]] <br />
[[es:Bashrc]]<br />
[[it:Bash]]<br />
[[nl:Bashrc]]<br />
[[zh-CN:Bash]]<br />
{{Article summary start}}<br />
{{Article summary text|Discussing and improving Bash's capabilities.}}<br />
{{Article summary heading|Related}}<br />
{{Article summary wiki|Readline}}<br />
{{Article summary wiki|Environment Variables}}<br />
{{Article summary wiki|Color Bash Prompt}}<br />
{{Article summary end}}<br />
'''Bash''' (Bourne-again Shell) is a [[Command shell|shell]]/programming language by the [[GNU Project]]. Its name is a homaging reference to its predecessor: the long-deprecated Bourne shell. Bash can be run on most UNIX-like operating systems, including GNU/Linux. Arch copiously uses Bash throughout its init-scripts.<br />
<br />
==Invocation==<br />
Bash behaviour can be altered depending on how it is invoked. Some descriptions of different modes follow.<br />
===Login shell===<br />
If Bash is spawned by {{ic|login}} in a tty, by an [[SSH]] daemon, or similar means, it is considered a login shell. This mode can also be engaged using the {{Ic|-l}} or {{Ic|--login}} command line options.<br />
<br />
===Interactive shell===<br />
Bash is considered an interactive shell if it is started neither with the {{Ic|-c}} option nor any non-option arguments, and whose standard input and error are connected to terminals.<br />
<br />
===POSIX compliance===<br />
Bash can be run with enhanced POSIX compliance by starting Bash with the {{Ic|--posix}} command-line option or executing ‘{{Ic|set -o posix}}’ while Bash is running.<br />
<br />
===Legacy mode===<br />
In Arch {{ic|/bin/sh}} (which used to be the Bourne shell executable) is symlinked to {{ic|/bin/bash}}.<br />
<br />
If Bash is invoked with the name {{Ic|sh}}, it tries to mimic the startup behavior of historical versions of {{Ic|sh}} as closely as possible, while conforming to the POSIX standard as well. <br />
<br />
In this mode, Bash sources the startup files and then enters '''POSIX compliance'''.<br />
<br />
==Configuration==<br />
{{poor writing}}<br />
===Configuration file overview===<br />
* {{ic|/etc/profile}}<br />
* {{ic|~/.bash_profile}}<br />
* {{ic|~/.bash_login}}<br />
* {{ic|~/.profile}}<br />
* {{ic|/etc/bash.bashrc}} (''Non-standard'': only some distros, Arch included)<br />
* {{ic|~/.bashrc}}<br />
* {{ic|~/.bash_logout}}<br />
An overview of the commonly used configuration files:<br />
====/etc/profile====<br />
{{ic|/etc/profile}} is sourced by all Bourne-compatible shells upon login. It sets up an environment upon login and loads application-specific ({{ic|/etc/profile.d/*.sh}}) settings.<br />
<br />
====.profile====<br />
This file is read and sourced by bash when an interactive login shell is started.<br />
<br />
====.bashrc====<br />
The file {{ic|~/.bashrc}} is read and sourced by bash when a non-login interactive shell is started, for example, when you open a virtual console from the desktop environment. This file is useful for setting up a user-specific shell environment.<br />
<br />
===Configuration file sourcing order at startup===<br />
These files are sourced by bash in different circumstances. <br />
* if interactive + login shell → {{ic|/etc/profile}} then the first readable of {{ic|~/.bash_profile}}, {{ic|~/.bash_login}}, and {{ic|~/.profile}}<br />
**Bash will source {{ic|~/.bash_logout}} upon exit. <br />
* if interactive + non-login shell → {{ic|/etc/bash.bashrc}} then {{ic|~/.bashrc}}<br />
* if login shell + legacy mode → {{ic|/etc/profile}} then {{ic|~/.profile}}<br />
<br />
But, in Arch, by default:<br />
* {{ic|/etc/profile}} (indirectly) sources {{ic|/etc/bash.bashrc}}<br />
* {{ic|/etc/skel/.bash_profile}} which users are encouraged to copy to {{ic|~/.bash_profile}}, sources {{ic|~/.bashrc}}<br />
which means that {{ic|/etc/bash.bashrc}} and {{ic|~/.bashrc}} will be executed for all interactive shells, whether they are login shells or not.<br />
<br />
Examples of the user dotfiles can be found in {{ic|/etc/skel/}}.<br />
<br />
{{Note|legacy mode is when invoked with the name {{Ic|sh}}}}<br />
<br />
===Shell and environment variables===<br />
The behavior of bash and programs run by it can be influenced by a number of environment variable. Environment variables are used to store useful values such as command search directories, or which browser to use. When a new shell or script is launched it inherits its parent's variables, thus starting with an internal set of shell variables[http://www.kingcomputerservices.com/unix_101/understanding_unix_shells_and_environment_variables.htm ].<br />
<br />
These shell variables in bash can be exported in order to become environment variables:<br />
VARIABLE=content<br />
export VARIABLE<br />
or with a shortcut<br />
export VARIABLE=content<br />
<br />
Environment variables are conventionally placed in {{ic|~/.profile}} or {{ic|/etc/profile}} so that all bourne-compatible shells can use them.<br />
<br />
See [[Environment Variables]] for more general information.<br />
<br />
==Command line==<br />
Bash command line is managed by the separate library called [[Readline]]. Readline provides a lot of shortcuts for interacting with the command line i.e. moving back and forth on the word basis, deleting words etc. It is also Readline's responsibility to manage [[Readline#History|history]] of input commands. Last, but not least, it allows you to create [[Readline#Macros|macros]].<br />
<br />
==Aliases==<br />
[[Wikipedia:alias|alias]] is a command, which enables a replacement of a word with another string. It is often used for abbreviating a system command, or for adding default arguments to a regularly used command.<br />
<br />
Personal aliases are preferably stored in {{ic|~/.bashrc}}, and system-wide aliases (which affect all users) belong in {{ic|/etc/bash.bashrc}}.<br />
<br />
An example excerpt from {{ic|~/.bashrc}} covering several time-saving aliases:<br />
{{hc|~/.bashrc<br />
|2=<nowiki><br />
# modified commands<br />
alias diff='colordiff' # requires colordiff package<br />
alias grep='grep --color=auto'<br />
alias more='less'<br />
alias df='df -h'<br />
alias du='du -c -h'<br />
alias mkdir='mkdir -p -v'<br />
alias nano='nano -w'<br />
alias ping='ping -c 5'<br />
alias ..='cd ..'<br />
<br />
# new commands<br />
alias da='date "+%A, %B %d, %Y [%T]"'<br />
alias du1='du --max-depth=1'<br />
alias hist='history | grep $1' # requires an argument<br />
alias openports='netstat --all --numeric --programs --inet --inet6'<br />
alias pg='ps -Af | grep $1' # requires an argument (note: /usr/bin/pg is installed by the util-linux package; maybe a different alias name should be used)<br />
<br />
# privileged access<br />
if [ $UID -ne 0 ]; then<br />
alias sudo='sudo '<br />
alias scat='sudo cat'<br />
alias svim='sudo vim'<br />
alias root='sudo su'<br />
alias reboot='sudo reboot'<br />
alias halt='sudo halt'<br />
alias update='sudo pacman -Su'<br />
alias netcfg='sudo netcfg2'<br />
fi<br />
<br />
# ls<br />
alias ls='ls -hF --color=auto'<br />
alias lr='ls -R' # recursive ls<br />
alias ll='ls -l'<br />
alias la='ll -A'<br />
alias lx='ll -BX' # sort by extension<br />
alias lz='ll -rS' # sort by size<br />
alias lt='ll -rt' # sort by date<br />
alias lm='la | more'<br />
<br />
# safety features<br />
alias cp='cp -i'<br />
alias mv='mv -i'<br />
alias rm='rm -I' # 'rm -i' prompts for every file<br />
alias ln='ln -i'<br />
alias chown='chown --preserve-root'<br />
alias chmod='chmod --preserve-root'<br />
alias chgrp='chgrp --preserve-root'<br />
<br />
# pacman aliases (if applicable, replace 'pacman' with your favorite AUR helper)<br />
alias pac="pacman -S" # default action - install one or more packages<br />
alias pacu="pacman -Syu" # '[u]pdate' - upgrade all packages to their newest version<br />
alias pacs="pacman -Ss" # '[s]earch' - search for a package using one or more keywords<br />
alias paci="pacman -Si" # '[i]nfo' - show information about a package<br />
alias pacr="pacman -R" # '[r]emove' - uninstall one or more packages<br />
alias pacl="pacman -Sl" # '[l]ist' - list all packages of a repository<br />
alias pacll="pacman -Qqm" # '[l]ist [l]ocal' - list all packages which were locally installed (e.g. AUR packages)<br />
alias paclo="pacman -Qdt" # '[l]ist [o]rphans' - list all packages which are orphaned<br />
alias paco="pacman -Qo" # '[o]wner' - determine which package owns a given file<br />
alias pacf="pacman -Ql" # '[f]iles' - list all files installed by a given package<br />
alias pacc="pacman -Sc" # '[c]lean cache' - delete all not currently installed package files<br />
alias pacm="makepkg -fci" # '[m]ake' - make package from PKGBUILD file in current directory<br />
</nowiki>}}<br />
<br />
==Functions==<br />
Bash also support functions. The following function will extract a wide range of compressed file types. Add the function to {{ic|~/.bashrc}} and use it with the syntax {{Ic|extract <file1> <file2> ...}}<br />
<br />
{{hc|~/.bashrc<br />
|2=<nowiki><br />
extract() {<br />
local c e i<br />
<br />
(($#)) || return<br />
<br />
for i; do<br />
c=''<br />
e=1<br />
<br />
if [[ ! -r $i ]]; then<br />
echo "$0: file is unreadable: \`$i'" >&2<br />
continue<br />
fi<br />
<br />
case $i in<br />
*.t@(gz|lz|xz|b@(2|z?(2))|a@(z|r?(.@(Z|bz?(2)|gz|lzma|xz)))))<br />
c='bsdtar xvf';;<br />
*.7z) c='7z x';;<br />
*.Z) c='uncompress';;<br />
*.bz2) c='bunzip2';;<br />
*.exe) c='cabextract';;<br />
*.gz) c='gunzip';;<br />
*.rar) c='unrar x';;<br />
*.xz) c='unxz';;<br />
*.zip) c='unzip';;<br />
*) echo "$0: unrecognized file extension: \`$i'" >&2<br />
continue;;<br />
esac<br />
<br />
command $c "$i"<br />
e=$?<br />
done<br />
<br />
return $e<br />
}<br />
</nowiki>}}<br />
<br />
{{note|[[Bash]] users should make sure extglob is enabled: {{Ic|shopt -s extglob}}, for example by adding it to the {{ic|.bashrc}}. It is enabled by default if using [[Bash#Advanced completion|Bash completion]]. [[Zsh]] users should do: {{Ic|setopt kshglob}} instead.}}<br />
<br />
Another way to do this is to install ''unp'' package.<br />
<br />
More bash function examples can be found [https://bbs.archlinux.org/viewtopic.php?id=30155 here.]<br />
<br />
==Tips and tricks==<br />
===Prompt customization===<br />
The bash prompt is governed by the variable {{Ic|$PS1}}. To colorize the bash prompt, first comment out the default {{Ic|$PS1}}:<br />
#PS1='[\u@\h \W]\$ '<br />
Then add the following line:<br />
PS1='\[\e[0;31m\]\u\[\e[m\] \[\e[1;34m\]\w\[\e[m\] \[\e[0;31m\]\$ \[\e[m\]\[\e[0;32m\] '<br />
This {{Ic|$PS1}} is useful for a root bash prompt, with red designation and green console text. For details on customizing your bash prompt, see [[Color Bash Prompt]].<br />
<br />
===Auto-completion===<br />
It is useful to have the auto-complete feature (pressing {{Keypress|Tab}} key twice on the keyboard) after you type some command like sudo.<br />
<br />
To do this add a line in this format to your {{ic|~/.bashrc}} file:<br />
complete -cf your_command<br />
<br />
For example, to enable auto-complete after sudo and man:<br />
complete -cf sudo<br />
complete -cf man<br />
<br />
====Advanced completion====<br />
Despite Bash's native support for basic file name, command, and variable auto-completion, there are ways of improving and extending its reach.<br />
<br />
The {{Pkg|bash-completion}} package extends functionality by adding auto-completion to a wide range of commands and their options. Enabling advanced bash completion is quite simple, just install the following package:<br />
# pacman -S bash-completion<br />
Start a new shell and it will be automatically enabled thanks to {{ic|/etc/bash.bashrc}}.<br />
{{Note|If you added any lines similar to "complete -cf sudo" as mentioned in the previous settings and have problems with bash-completion, try removing those lines.}}<br />
<br />
====Faster completion====<br />
By appending the following into the readline initialization file ({{ic|~/.inputrc}} or {{ic|/etc/inputrc}} by default):<br />
set show-all-if-ambiguous on<br />
it is no longer necessary to hit {{Keypress|Tab}} (default binding) twice to produce a list of all possible completions (both when a partial completion is possible and when no completion is possible), as a single key-press will suffice. Alternatively, to produce such a list only when no completion is possible (i.e., not when a partial completion is possible), append the following command in lieu of the previous one:<br />
set show-all-if-unmodified on<br />
<br />
=== Disable Ctrl+z in terminal===<br />
You can disable {{Keypress|Ctrl+z}} (pauses/closes your CLI application) feature for you CLI by wrapping your command in this script<br />
#!/bin/bash<br />
trap "" 20<br />
/path_to_your_application/<br />
example:<br />
#!/bin/bash<br />
trap "" 20<br />
/usr/bin/adom<br />
<br />
With this example script, when you accidentally press {{Keypress|Ctrl+z}} instead of {{Keypress|Shift+z}} or some other key combination while playing Adom(game) your game will not end. Nothing will happen because {{Keypress|Ctrl+z}} will be ignored.<br />
<br />
===Clear the screen after logging out===<br />
To clear the screen after logging out on a virtual terminal, append the following lines to {{ic|~/.bash_logout}}:<br />
clear<br />
reset<br />
<br />
===ASCII art, fortunes and cowsay===<br />
Along with colors, system info and ASCII symbols, Bash can be made to display a piece of ASCII art on login. ASCII images can be found online and pasted into a text file, or generated from scratch. To set the image to display in a terminal on login, place the string <br />
cat /path/to/text/file<br />
at the top of {{ic|~/.bashrc}}.<br />
<br />
Random poignant, inspirational, silly or snide phrases can also be shown. To see an example, install the {{Pkg|fortune-mod}} package from the {{Ic|extra}} repository.<br />
<br />
{{bc|1=<br />
'''<font color=red>(</font><font color=green>user@host</font><font color=red>)-(</font><font color=green>10:10 AM Wed Dec 22</font><font color=red>)'''<br />
--(</font><font color=green>~</font><font color=red>)---> </font> fortune<br />
<br/><br />
It is Texas law that when two trains meet each other at a railroad crossing,<br />
each shall come to a full stop, and neither shall proceed until the other has gone.}}<br />
<br />
To have a random phrase displayed when logging into a terminal, just set <br />
command fortune<br />
as the top line in {{ic|~/.bashrc}}.<br />
<br />
{{Note|By default, {{Ic|fortune}} displays quotes and phrases that are rather inoccuous. However, the package does contain a set of comments some will find offensive, located in {{ic|/usr/share/fortune/off}}. See the man page for more info on these.}}<br />
<br />
These two features can be combined, using the program {{Pkg|cowsay}}. Modify the line at the top of {{ic|~/.bashrc}} to read <br />
command cowsay $(fortune)<br />
<br />
or<br />
command cowthink $(fortune)<br />
<br />
<br />
The earth is like a tiny grain of sand, <br />
only much, much heavier. <br />
----------------------------------------- <br />
\ ^__^<br />
\ (oo)\_______<br />
(__)\ )\/\<br />
||----w |<br />
|| ||<br />
<br />
The ASCII images are generated by {{ic|.cow}} text files located in {{ic|/usr/share/cows}}, and all themes can be listed with the command {{Ic|cowsay -l}} These files can be edited to the user's liking; custom images can also be created from scratch or found on the net. The easiest way create a custom cow file from an image found online would be to open an existing {{ic|.cow}} file in a text editor, copy-and-paste the image from a browser and save the file as a different name. Test the custom file using<br />
<br />
# cowsay -f {{ic|cowfile}} $(fortune)<br />
<br />
This can produce some nice eye candy, and the commands used can be more complex. For a specialized example, take a look [http://bambambambam.wordpress.com/2009/07/04/futurama-ascii-with-slashdot-header-quotes-in-your-terminal/ here.] Another example, to use a random cow, random facial expression, and nicely wrap the text of long fortunes.<br />
<br />
fortune -a | fmt -80 -s | cowsay -$(shuf -n 1 -e b d g p s t w y) -f $(shuf -n 1 -e $(cowsay -l | tail -n +2)) -n<br />
<br />
________________________________________ <br />
( Fry: I must be a robot. Why else would )<br />
( human women refuse to date me? )<br />
---------------------------------------- <br />
o<br />
o<br />
o <br />
,'``.._ ,'``.<br />
:,--._:)\,:,._,.:<br />
:`--,''@@@:`...';\ <br />
`,'@@@@@@@`---'@@`. <br />
/@@@@@@@@@@@@@@@@@:<br />
/@@@@@@@@@@@@@@@@@@@\<br />
,'@@@@@@@@@@@@@@@@@@@@@:\.___,-.<br />
`...,---'``````-..._@@@@|:@@@@@@@\<br />
( )@@@;:@@@@)@@@\ _,-.<br />
`. (@@@//@@@@@@@@@@`'@@@@\<br />
: `.//@@)@@@@@@)@@@@@,@;<br />
|`. _,'/@@@@@@@)@@@@)@,'@,'<br />
:`.`-..____..=:.-':@@@@@.@@@@@_,@@,'<br />
,'\ ``--....-)=' `._,@@\ )@@@'``._<br />
/@_@`. (@) /@@@@@) ; / \ \`-.'<br />
(@@@`-:`. `' ___..'@@_,-' |/ `.)<br />
`-. `.`.``-----``--,@@.'<br />
|/`.\`' ,',');<br />
` (/ (/<br />
'''<font color=red>(</font><font color=green>user@host</font><font color=red>)-(</font><font color=green>10:10 AM Wed Dec 22</font><font color=red>)'''--(</font><font color=green>~</font>)<font color=red>)---></font><br />
<br />
{{Note|If you want a full colored cowsay-like art, the best option is {{Pkg|ponysay}}, this show full colored ponies (more than 200 at version 1.0) in you terminal (inside X11 or in TTY you have full 256 colored ponies) runing 'ponysay "command or fortune command"', the complete list of ponies are showed usind 'ponysay -l'.<br />
Exist in ARU a tool for creating more ponies (or other stuff) called {{aur|util-say-git}}, and to be stored in $HOME/.ponysay/ponies and $HOME/.ponysay/ttyponies for desktop and TTY respectibely}}<br />
<br />
===ASCII Historical Calendar===<br />
To install [http://www.openbsd.org/cgi-bin/man.cgi?query=calendar&sektion=1 calendar] files in your {{ic|~/.calendar}} directory you will need the {{Pkg|rpmextract}} package installed. Then from your home directory, run the following:<br />
$ mkdir -p ~/.calendar<br />
$ curl -o calendar.rpm http://download.fedora.redhat.com/pub/epel/5/x86_64/calendar-1.25-4.el5.x86_64.rpm<br />
$ rpm2cpio calendar.rpm | bsdtar -C ~/.calendar --strip-components=4 -xf - ./usr/share/c*<br />
<br />
This will then print out the calendar items<br />
$ sed -n "/$(date +%m\\/%d\\\|%b\*\ %d)/p" $(find ~/.calendar /usr/share/calendar -maxdepth 1 -type f -name 'c*' 2>/dev/null);<br />
<br />
===Customise Title===<br />
<br />
The {{ic|$PROMPT_COMMAND}} variable allows you to execute a command before the prompt. For example, this will change the title to your full current working directory:<br />
<br />
export PROMPT_COMMAND='echo -ne "\033]0;$PWD\007"'<br />
<br />
This will change your title to the last command run, and make sure your history file is always up-to-date:<br />
export HISTCONTROL=ignoreboth<br />
export HISTIGNORE='history*'<br />
export PROMPT_COMMAND='history -a;echo -en "\e]2;";history 1|sed "s/^[ \t]*[0-9]\{1,\} //g";echo -en "\e\\";<br />
<br />
===Fix line wrap on window resize===<br />
<br />
When you resize your xterm in vi for example, Bash will not get the resize signal, and the text you type will not wrap correctly, overlapping the prompt.<br />
<br />
Use the following in your {{ic|/etc/bash.bashrc}} (from Debian) :<br />
# check the window size after each command and, if necessary,<br />
# update the values of LINES and COLUMNS.<br />
shopt -s checkwinsize<br />
<br />
===Bash history completion===<br />
Bash history completion bound to arrow keys (down, up):<br />
# ~/.bashrc<br />
bind '"\e[A": history-search-backward'<br />
bind '"\e[B": history-search-forward'<br />
or equivalently in {{ic|~/.inputrc}}:<br />
# ~/.inputrc<br />
"\e[A": history-search-backward<br />
"\e[B": history-search-forward<br />
More info at [[Readline#History]] and http://www.gnu.org/software/bash/manual/html_node/Readline-Init-File-Syntax.html<br />
<br />
==See also==<br />
* [http://tldp.org/LDP/abs/html/ Advanced Bash Scripting Guide] - Very good resource regarding shell scripting using bash<br />
* [http://www.gnu.org/software/bash/manual/bashref.html Bash Reference Manual] - Official reference (654K)<br />
* [http://wiki.bash-hackers.org/doku.php Bash Hackers Wiki] - Excellent Bash Wiki<br />
* [http://bashscripts.org Bashscripts.org] - Forum for bash coders.<br />
* [http://www.ibm.com/developerworks/linux/library/l-bash.html Bash Scripting by Example]<br />
* [http://www.caliban.org/bash Completion Guide]<br />
* [http://wooledge.org/mywiki/BashFaq Greg's Wiki] - Highly recommended<br />
* [http://www.gnu.org/software/bash/manual/bash.html man page]<br />
* [http://www.grymoire.com/Unix/Quote.html Quote Tutorial]<br />
* irc://irc.freenode.net#bash - Active and friendly Internet Relay Chat channel for Bash.<br />
* http://chakra-project.org/wiki/index.php/Startup_files<br />
* [http://www.aosabook.org/en/bash.html The Bourne-Again Shell] - The third chapter of ''The Architecture of Open Source Applications''<br />
* [http://tldp.org/HOWTO/Xterm-Title-4.html How to change the title of an xterm]<br />
* [http://wiki.gotux.net/bash:arc Create and Extract Various Archives]<br />
* [http://www.gnu.org/software/bash/manual/html_node/Readline-Init-File-Syntax.html Readline Init File Syntax ]</div>
Jristz
https://wiki.archlinux.org/index.php?title=Bash&diff=213300
Bash
2012-07-17T06:48:03Z
<p>Jristz: /* ASCII art, fortunes and cowsay and ponysay mention*/</p>
<hr />
<div>[[Category:Command shells]] <br />
[[es:Bashrc]]<br />
[[it:Bash]]<br />
[[nl:Bashrc]]<br />
[[zh-CN:Bash]]<br />
{{Article summary start}}<br />
{{Article summary text|Discussing and improving Bash's capabilities.}}<br />
{{Article summary heading|Related}}<br />
{{Article summary wiki|Readline}}<br />
{{Article summary wiki|Environment Variables}}<br />
{{Article summary wiki|Color Bash Prompt}}<br />
{{Article summary end}}<br />
'''Bash''' (Bourne-again Shell) is a [[Command shell|shell]]/programming language by the [[GNU Project]]. Its name is a homaging reference to its predecessor: the long-deprecated Bourne shell. Bash can be run on most UNIX-like operating systems, including GNU/Linux. Arch copiously uses Bash throughout its init-scripts.<br />
<br />
==Invocation==<br />
Bash behaviour can be altered depending on how it is invoked. Some descriptions of different modes follow.<br />
===Login shell===<br />
If Bash is spawned by {{ic|login}} in a tty, by an [[SSH]] daemon, or similar means, it is considered a login shell. This mode can also be engaged using the {{Ic|-l}} or {{Ic|--login}} command line options.<br />
<br />
===Interactive shell===<br />
Bash is considered an interactive shell if it is started neither with the {{Ic|-c}} option nor any non-option arguments, and whose standard input and error are connected to terminals.<br />
<br />
===POSIX compliance===<br />
Bash can be run with enhanced POSIX compliance by starting Bash with the {{Ic|--posix}} command-line option or executing ‘{{Ic|set -o posix}}’ while Bash is running.<br />
<br />
===Legacy mode===<br />
In Arch {{ic|/bin/sh}} (which used to be the Bourne shell executable) is symlinked to {{ic|/bin/bash}}.<br />
<br />
If Bash is invoked with the name {{Ic|sh}}, it tries to mimic the startup behavior of historical versions of {{Ic|sh}} as closely as possible, while conforming to the POSIX standard as well. <br />
<br />
In this mode, Bash sources the startup files and then enters '''POSIX compliance'''.<br />
<br />
==Configuration==<br />
{{poor writing}}<br />
===Configuration file overview===<br />
* {{ic|/etc/profile}}<br />
* {{ic|~/.bash_profile}}<br />
* {{ic|~/.bash_login}}<br />
* {{ic|~/.profile}}<br />
* {{ic|/etc/bash.bashrc}} (''Non-standard'': only some distros, Arch included)<br />
* {{ic|~/.bashrc}}<br />
* {{ic|~/.bash_logout}}<br />
An overview of the commonly used configuration files:<br />
====/etc/profile====<br />
{{ic|/etc/profile}} is sourced by all Bourne-compatible shells upon login. It sets up an environment upon login and loads application-specific ({{ic|/etc/profile.d/*.sh}}) settings.<br />
<br />
====.profile====<br />
This file is read and sourced by bash when an interactive login shell is started.<br />
<br />
====.bashrc====<br />
The file {{ic|~/.bashrc}} is read and sourced by bash when a non-login interactive shell is started, for example, when you open a virtual console from the desktop environment. This file is useful for setting up a user-specific shell environment.<br />
<br />
===Configuration file sourcing order at startup===<br />
These files are sourced by bash in different circumstances. <br />
* if interactive + login shell → {{ic|/etc/profile}} then the first readable of {{ic|~/.bash_profile}}, {{ic|~/.bash_login}}, and {{ic|~/.profile}}<br />
**Bash will source {{ic|~/.bash_logout}} upon exit. <br />
* if interactive + non-login shell → {{ic|/etc/bash.bashrc}} then {{ic|~/.bashrc}}<br />
* if login shell + legacy mode → {{ic|/etc/profile}} then {{ic|~/.profile}}<br />
<br />
But, in Arch, by default:<br />
* {{ic|/etc/profile}} (indirectly) sources {{ic|/etc/bash.bashrc}}<br />
* {{ic|/etc/skel/.bash_profile}} which users are encouraged to copy to {{ic|~/.bash_profile}}, sources {{ic|~/.bashrc}}<br />
which means that {{ic|/etc/bash.bashrc}} and {{ic|~/.bashrc}} will be executed for all interactive shells, whether they are login shells or not.<br />
<br />
Examples of the user dotfiles can be found in {{ic|/etc/skel/}}.<br />
<br />
{{Note|legacy mode is when invoked with the name {{Ic|sh}}}}<br />
<br />
===Shell and environment variables===<br />
The behavior of bash and programs run by it can be influenced by a number of environment variable. Environment variables are used to store useful values such as command search directories, or which browser to use. When a new shell or script is launched it inherits its parent's variables, thus starting with an internal set of shell variables[http://www.kingcomputerservices.com/unix_101/understanding_unix_shells_and_environment_variables.htm ].<br />
<br />
These shell variables in bash can be exported in order to become environment variables:<br />
VARIABLE=content<br />
export VARIABLE<br />
or with a shortcut<br />
export VARIABLE=content<br />
<br />
Environment variables are conventionally placed in {{ic|~/.profile}} or {{ic|/etc/profile}} so that all bourne-compatible shells can use them.<br />
<br />
See [[Environment Variables]] for more general information.<br />
<br />
==Command line==<br />
Bash command line is managed by the separate library called [[Readline]]. Readline provides a lot of shortcuts for interacting with the command line i.e. moving back and forth on the word basis, deleting words etc. It is also Readline's responsibility to manage [[Readline#History|history]] of input commands. Last, but not least, it allows you to create [[Readline#Macros|macros]].<br />
<br />
==Aliases==<br />
[[Wikipedia:alias|alias]] is a command, which enables a replacement of a word with another string. It is often used for abbreviating a system command, or for adding default arguments to a regularly used command.<br />
<br />
Personal aliases are preferably stored in {{ic|~/.bashrc}}, and system-wide aliases (which affect all users) belong in {{ic|/etc/bash.bashrc}}.<br />
<br />
An example excerpt from {{ic|~/.bashrc}} covering several time-saving aliases:<br />
{{hc|~/.bashrc<br />
|2=<nowiki><br />
# modified commands<br />
alias diff='colordiff' # requires colordiff package<br />
alias grep='grep --color=auto'<br />
alias more='less'<br />
alias df='df -h'<br />
alias du='du -c -h'<br />
alias mkdir='mkdir -p -v'<br />
alias nano='nano -w'<br />
alias ping='ping -c 5'<br />
alias ..='cd ..'<br />
<br />
# new commands<br />
alias da='date "+%A, %B %d, %Y [%T]"'<br />
alias du1='du --max-depth=1'<br />
alias hist='history | grep $1' # requires an argument<br />
alias openports='netstat --all --numeric --programs --inet --inet6'<br />
alias pg='ps -Af | grep $1' # requires an argument (note: /usr/bin/pg is installed by the util-linux package; maybe a different alias name should be used)<br />
<br />
# privileged access<br />
if [ $UID -ne 0 ]; then<br />
alias sudo='sudo '<br />
alias scat='sudo cat'<br />
alias svim='sudo vim'<br />
alias root='sudo su'<br />
alias reboot='sudo reboot'<br />
alias halt='sudo halt'<br />
alias update='sudo pacman -Su'<br />
alias netcfg='sudo netcfg2'<br />
fi<br />
<br />
# ls<br />
alias ls='ls -hF --color=auto'<br />
alias lr='ls -R' # recursive ls<br />
alias ll='ls -l'<br />
alias la='ll -A'<br />
alias lx='ll -BX' # sort by extension<br />
alias lz='ll -rS' # sort by size<br />
alias lt='ll -rt' # sort by date<br />
alias lm='la | more'<br />
<br />
# safety features<br />
alias cp='cp -i'<br />
alias mv='mv -i'<br />
alias rm='rm -I' # 'rm -i' prompts for every file<br />
alias ln='ln -i'<br />
alias chown='chown --preserve-root'<br />
alias chmod='chmod --preserve-root'<br />
alias chgrp='chgrp --preserve-root'<br />
<br />
# pacman aliases (if applicable, replace 'pacman' with your favorite AUR helper)<br />
alias pac="pacman -S" # default action - install one or more packages<br />
alias pacu="pacman -Syu" # '[u]pdate' - upgrade all packages to their newest version<br />
alias pacs="pacman -Ss" # '[s]earch' - search for a package using one or more keywords<br />
alias paci="pacman -Si" # '[i]nfo' - show information about a package<br />
alias pacr="pacman -R" # '[r]emove' - uninstall one or more packages<br />
alias pacl="pacman -Sl" # '[l]ist' - list all packages of a repository<br />
alias pacll="pacman -Qqm" # '[l]ist [l]ocal' - list all packages which were locally installed (e.g. AUR packages)<br />
alias paclo="pacman -Qdt" # '[l]ist [o]rphans' - list all packages which are orphaned<br />
alias paco="pacman -Qo" # '[o]wner' - determine which package owns a given file<br />
alias pacf="pacman -Ql" # '[f]iles' - list all files installed by a given package<br />
alias pacc="pacman -Sc" # '[c]lean cache' - delete all not currently installed package files<br />
alias pacm="makepkg -fci" # '[m]ake' - make package from PKGBUILD file in current directory<br />
</nowiki>}}<br />
<br />
==Functions==<br />
Bash also support functions. The following function will extract a wide range of compressed file types. Add the function to {{ic|~/.bashrc}} and use it with the syntax {{Ic|extract <file1> <file2> ...}}<br />
<br />
{{hc|~/.bashrc<br />
|2=<nowiki><br />
extract() {<br />
local c e i<br />
<br />
(($#)) || return<br />
<br />
for i; do<br />
c=''<br />
e=1<br />
<br />
if [[ ! -r $i ]]; then<br />
echo "$0: file is unreadable: \`$i'" >&2<br />
continue<br />
fi<br />
<br />
case $i in<br />
*.t@(gz|lz|xz|b@(2|z?(2))|a@(z|r?(.@(Z|bz?(2)|gz|lzma|xz)))))<br />
c='bsdtar xvf';;<br />
*.7z) c='7z x';;<br />
*.Z) c='uncompress';;<br />
*.bz2) c='bunzip2';;<br />
*.exe) c='cabextract';;<br />
*.gz) c='gunzip';;<br />
*.rar) c='unrar x';;<br />
*.xz) c='unxz';;<br />
*.zip) c='unzip';;<br />
*) echo "$0: unrecognized file extension: \`$i'" >&2<br />
continue;;<br />
esac<br />
<br />
command $c "$i"<br />
e=$?<br />
done<br />
<br />
return $e<br />
}<br />
</nowiki>}}<br />
<br />
{{note|[[Bash]] users should make sure extglob is enabled: {{Ic|shopt -s extglob}}, for example by adding it to the {{ic|.bashrc}}. It is enabled by default if using [[Bash#Advanced completion|Bash completion]]. [[Zsh]] users should do: {{Ic|setopt kshglob}} instead.}}<br />
<br />
Another way to do this is to install ''unp'' package.<br />
<br />
More bash function examples can be found [https://bbs.archlinux.org/viewtopic.php?id=30155 here.]<br />
<br />
==Tips and tricks==<br />
===Prompt customization===<br />
The bash prompt is governed by the variable {{Ic|$PS1}}. To colorize the bash prompt, first comment out the default {{Ic|$PS1}}:<br />
#PS1='[\u@\h \W]\$ '<br />
Then add the following line:<br />
PS1='\[\e[0;31m\]\u\[\e[m\] \[\e[1;34m\]\w\[\e[m\] \[\e[0;31m\]\$ \[\e[m\]\[\e[0;32m\] '<br />
This {{Ic|$PS1}} is useful for a root bash prompt, with red designation and green console text. For details on customizing your bash prompt, see [[Color Bash Prompt]].<br />
<br />
===Auto-completion===<br />
It is useful to have the auto-complete feature (pressing {{Keypress|Tab}} key twice on the keyboard) after you type some command like sudo.<br />
<br />
To do this add a line in this format to your {{ic|~/.bashrc}} file:<br />
complete -cf your_command<br />
<br />
For example, to enable auto-complete after sudo and man:<br />
complete -cf sudo<br />
complete -cf man<br />
<br />
====Advanced completion====<br />
Despite Bash's native support for basic file name, command, and variable auto-completion, there are ways of improving and extending its reach.<br />
<br />
The {{Pkg|bash-completion}} package extends functionality by adding auto-completion to a wide range of commands and their options. Enabling advanced bash completion is quite simple, just install the following package:<br />
# pacman -S bash-completion<br />
Start a new shell and it will be automatically enabled thanks to {{ic|/etc/bash.bashrc}}.<br />
{{Note|If you added any lines similar to "complete -cf sudo" as mentioned in the previous settings and have problems with bash-completion, try removing those lines.}}<br />
<br />
====Faster completion====<br />
By appending the following into the readline initialization file ({{ic|~/.inputrc}} or {{ic|/etc/inputrc}} by default):<br />
set show-all-if-ambiguous on<br />
it is no longer necessary to hit {{Keypress|Tab}} (default binding) twice to produce a list of all possible completions (both when a partial completion is possible and when no completion is possible), as a single key-press will suffice. Alternatively, to produce such a list only when no completion is possible (i.e., not when a partial completion is possible), append the following command in lieu of the previous one:<br />
set show-all-if-unmodified on<br />
<br />
=== Disable Ctrl+z in terminal===<br />
You can disable {{Keypress|Ctrl+z}} (pauses/closes your CLI application) feature for you CLI by wrapping your command in this script<br />
#!/bin/bash<br />
trap "" 20<br />
/path_to_your_application/<br />
example:<br />
#!/bin/bash<br />
trap "" 20<br />
/usr/bin/adom<br />
<br />
With this example script, when you accidentally press {{Keypress|Ctrl+z}} instead of {{Keypress|Shift+z}} or some other key combination while playing Adom(game) your game will not end. Nothing will happen because {{Keypress|Ctrl+z}} will be ignored.<br />
<br />
===Clear the screen after logging out===<br />
To clear the screen after logging out on a virtual terminal, append the following lines to {{ic|~/.bash_logout}}:<br />
clear<br />
reset<br />
<br />
===ASCII art, fortunes and cowsay===<br />
Along with colors, system info and ASCII symbols, Bash can be made to display a piece of ASCII art on login. ASCII images can be found online and pasted into a text file, or generated from scratch. To set the image to display in a terminal on login, place the string <br />
cat /path/to/text/file<br />
at the top of {{ic|~/.bashrc}}.<br />
<br />
Random poignant, inspirational, silly or snide phrases can also be shown. To see an example, install the {{Pkg|fortune-mod}} package from the {{Ic|extra}} repository.<br />
<br />
{{bc|1=<br />
'''<font color=red>(</font><font color=green>user@host</font><font color=red>)-(</font><font color=green>10:10 AM Wed Dec 22</font><font color=red>)'''<br />
--(</font><font color=green>~</font><font color=red>)---> </font> fortune<br />
<br/><br />
It is Texas law that when two trains meet each other at a railroad crossing,<br />
each shall come to a full stop, and neither shall proceed until the other has gone.}}<br />
<br />
To have a random phrase displayed when logging into a terminal, just set <br />
command fortune<br />
as the top line in {{ic|~/.bashrc}}.<br />
<br />
{{Note|By default, {{Ic|fortune}} displays quotes and phrases that are rather inoccuous. However, the package does contain a set of comments some will find offensive, located in {{ic|/usr/share/fortune/off}}. See the man page for more info on these.}}<br />
<br />
These two features can be combined, using the program {{Pkg|cowsay}}. Modify the line at the top of {{ic|~/.bashrc}} to read <br />
command cowsay $(fortune)<br />
<br />
or<br />
command cowthink $(fortune)<br />
<br />
<br />
The earth is like a tiny grain of sand, <br />
only much, much heavier. <br />
----------------------------------------- <br />
\ ^__^<br />
\ (oo)\_______<br />
(__)\ )\/\<br />
||----w |<br />
|| ||<br />
<br />
The ASCII images are generated by {{ic|.cow}} text files located in {{ic|/usr/share/cows}}, and all themes can be listed with the command {{Ic|cowsay -l}} These files can be edited to the user's liking; custom images can also be created from scratch or found on the net. The easiest way create a custom cow file from an image found online would be to open an existing {{ic|.cow}} file in a text editor, copy-and-paste the image from a browser and save the file as a different name. Test the custom file using<br />
<br />
# cowsay -f {{ic|cowfile}} $(fortune)<br />
<br />
This can produce some nice eye candy, and the commands used can be more complex. For a specialized example, take a look [http://bambambambam.wordpress.com/2009/07/04/futurama-ascii-with-slashdot-header-quotes-in-your-terminal/ here.] Another example, to use a random cow, random facial expression, and nicely wrap the text of long fortunes.<br />
<br />
fortune -a | fmt -80 -s | cowsay -$(shuf -n 1 -e b d g p s t w y) -f $(shuf -n 1 -e $(cowsay -l | tail -n +2)) -n<br />
<br />
________________________________________ <br />
( Fry: I must be a robot. Why else would )<br />
( human women refuse to date me? )<br />
---------------------------------------- <br />
o<br />
o<br />
o <br />
,'``.._ ,'``.<br />
:,--._:)\,:,._,.:<br />
:`--,''@@@:`...';\ <br />
`,'@@@@@@@`---'@@`. <br />
/@@@@@@@@@@@@@@@@@:<br />
/@@@@@@@@@@@@@@@@@@@\<br />
,'@@@@@@@@@@@@@@@@@@@@@:\.___,-.<br />
`...,---'``````-..._@@@@|:@@@@@@@\<br />
( )@@@;:@@@@)@@@\ _,-.<br />
`. (@@@//@@@@@@@@@@`'@@@@\<br />
: `.//@@)@@@@@@)@@@@@,@;<br />
|`. _,'/@@@@@@@)@@@@)@,'@,'<br />
:`.`-..____..=:.-':@@@@@.@@@@@_,@@,'<br />
,'\ ``--....-)=' `._,@@\ )@@@'``._<br />
/@_@`. (@) /@@@@@) ; / \ \`-.'<br />
(@@@`-:`. `' ___..'@@_,-' |/ `.)<br />
`-. `.`.``-----``--,@@.'<br />
|/`.\`' ,',');<br />
` (/ (/<br />
'''<font color=red>(</font><font color=green>user@host</font><font color=red>)-(</font><font color=green>10:10 AM Wed Dec 22</font><font color=red>)'''--(</font><font color=green>~</font>)<font color=red>)---></font><br />
<br />
{{Note|If you want a fuul coloriced cowsay-like art, the best option is install {{Pkg|ponysay}}, this show full colored ponies (more than 200 at version 1.0) in you terminal (inside X11 or in TTY you have full 256 colored ponies) runing 'ponysay "command or fortune command"', the complete list of ponies are showed usind 'ponysay -l'.<br />
Exist in ARU a tool for creating more ponies (or other stuff) called {{aur|util-say-git}}, and to be stored in $HOME/.ponysay/ponies and $HOME/.ponysay/ttyponies for desktop and TTY respectibely}}<br />
<br />
===ASCII Historical Calendar===<br />
To install [http://www.openbsd.org/cgi-bin/man.cgi?query=calendar&sektion=1 calendar] files in your {{ic|~/.calendar}} directory you will need the {{Pkg|rpmextract}} package installed. Then from your home directory, run the following:<br />
$ mkdir -p ~/.calendar<br />
$ curl -o calendar.rpm http://download.fedora.redhat.com/pub/epel/5/x86_64/calendar-1.25-4.el5.x86_64.rpm<br />
$ rpm2cpio calendar.rpm | bsdtar -C ~/.calendar --strip-components=4 -xf - ./usr/share/c*<br />
<br />
This will then print out the calendar items<br />
$ sed -n "/$(date +%m\\/%d\\\|%b\*\ %d)/p" $(find ~/.calendar /usr/share/calendar -maxdepth 1 -type f -name 'c*' 2>/dev/null);<br />
<br />
===Customise Title===<br />
<br />
The {{ic|$PROMPT_COMMAND}} variable allows you to execute a command before the prompt. For example, this will change the title to your full current working directory:<br />
<br />
export PROMPT_COMMAND='echo -ne "\033]0;$PWD\007"'<br />
<br />
This will change your title to the last command run, and make sure your history file is always up-to-date:<br />
export HISTCONTROL=ignoreboth<br />
export HISTIGNORE='history*'<br />
export PROMPT_COMMAND='history -a;echo -en "\e]2;";history 1|sed "s/^[ \t]*[0-9]\{1,\} //g";echo -en "\e\\";<br />
<br />
===Fix line wrap on window resize===<br />
<br />
When you resize your xterm in vi for example, Bash will not get the resize signal, and the text you type will not wrap correctly, overlapping the prompt.<br />
<br />
Use the following in your {{ic|/etc/bash.bashrc}} (from Debian) :<br />
# check the window size after each command and, if necessary,<br />
# update the values of LINES and COLUMNS.<br />
shopt -s checkwinsize<br />
<br />
===Bash history completion===<br />
Bash history completion bound to arrow keys (down, up):<br />
# ~/.bashrc<br />
bind '"\e[A": history-search-backward'<br />
bind '"\e[B": history-search-forward'<br />
or equivalently in {{ic|~/.inputrc}}:<br />
# ~/.inputrc<br />
"\e[A": history-search-backward<br />
"\e[B": history-search-forward<br />
More info at [[Readline#History]] and http://www.gnu.org/software/bash/manual/html_node/Readline-Init-File-Syntax.html<br />
<br />
==See also==<br />
* [http://tldp.org/LDP/abs/html/ Advanced Bash Scripting Guide] - Very good resource regarding shell scripting using bash<br />
* [http://www.gnu.org/software/bash/manual/bashref.html Bash Reference Manual] - Official reference (654K)<br />
* [http://wiki.bash-hackers.org/doku.php Bash Hackers Wiki] - Excellent Bash Wiki<br />
* [http://bashscripts.org Bashscripts.org] - Forum for bash coders.<br />
* [http://www.ibm.com/developerworks/linux/library/l-bash.html Bash Scripting by Example]<br />
* [http://www.caliban.org/bash Completion Guide]<br />
* [http://wooledge.org/mywiki/BashFaq Greg's Wiki] - Highly recommended<br />
* [http://www.gnu.org/software/bash/manual/bash.html man page]<br />
* [http://www.grymoire.com/Unix/Quote.html Quote Tutorial]<br />
* irc://irc.freenode.net#bash - Active and friendly Internet Relay Chat channel for Bash.<br />
* http://chakra-project.org/wiki/index.php/Startup_files<br />
* [http://www.aosabook.org/en/bash.html The Bourne-Again Shell] - The third chapter of ''The Architecture of Open Source Applications''<br />
* [http://tldp.org/HOWTO/Xterm-Title-4.html How to change the title of an xterm]<br />
* [http://wiki.gotux.net/bash:arc Create and Extract Various Archives]<br />
* [http://www.gnu.org/software/bash/manual/html_node/Readline-Init-File-Syntax.html Readline Init File Syntax ]</div>
Jristz
https://wiki.archlinux.org/index.php?title=List_of_Qt4_applications&diff=203128
List of Qt4 applications
2012-05-28T23:13:24Z
<p>Jristz: /* Utility */</p>
<hr />
<div>[[Category:Desktop environments]]<br />
<!-- Based on https://bbs.archlinux.org/viewtopic.php?id=56278 --><br />
{{i18n|List of Qt4 applications}}<br />
This is a list of applications that are dependent on Qt4 but not KDE.<br />
<br />
{{Note| This information may be outdated, as packages may be deleted, moved or added.}}<br />
<br />
==Windows Manager==<br />
*[[Antico]] in AUR ({{AUR|antico-git}})<br />
*[[Antico Deluxe]] in AUR ({{AUR|anticodeluxe}})<br />
*[[Antico Deluxe|Antico Deluxe-SVN]] in AUR ({{AUR|anticodeluxe-svn}})<br />
*[[qlwm]] in AUR ({{AUR|qlwm}})<br />
<br />
==Multimedia Player==<br />
*[[VLC media player]] in extra ({{Pkg|vlc}})<br />
*[[MPlayer]] in extra ({{Pkg|smplayer}})<br />
*[[qmmp]] in community ({{Pkg|qmmp}})<br />
*[[Konfetka]] in AUR ({{AUR|konfetka-svn}})<br />
*[[Cuberok]] in AUR ({{AUR|cuberok}})<br />
*[[Utopia Player]] (not in Arch repo or AUR)<br />
*[[Sonus]] (not in Arch repo or AUR)<br />
<br />
==Web Browser==<br />
*arora<br />
**extra/arora<br />
**community/arora-git<br />
*{{AUR|qupzilla}} in the AUR<br />
*{{AUR|firefox-qt}} in the AUR<br />
*{{AUR|pydingo-svn}} in the AUR<br />
<br />
==Mail Client==<br />
*Manitou-Mail in AUR ({{AUR|manitou-ui}})<br />
<br />
==Messenger==<br />
*extra/psi<br />
*extra/licq<br />
*{{AUR|jabbim-svn}} in the AUR<br />
*{{AUR|qutim}} in the AUR<br />
*{{AUR|qwit}} in the AUR<br />
*{{AUR|qchat}} in the AUR<br />
*jackle (not in Arch repo or AUR)<br />
*agorawm (not in Arch repo or AUR)<br />
<br />
==IRC Client==<br />
*quassel<br />
**community/quassel<br />
**{{AUR|quassel-git}} in AUR<br />
*{{AUR|fsirc}} in AUR<br />
*communi (not in Arch repo or AUR)<br />
<br />
==Torrent Client==<br />
*extra/transmission-qt<br />
*community/qtorrent<br />
<br />
==P2P TV Streaming==<br />
*{{pkg|qsopcast}}<br />
<br />
==News Agregator==<br />
*{{AUR|urssus}} in AUR<br />
<br />
==Network==<br />
*{{AUR|egear}} in AUR<br />
*nullfxp (not in Arch repo or AUR)<br />
*tubedl (not in Arch repo or AUR)<br />
*wicd-qt (not in Arch repo or AUR)<br />
*qnetaddressbook (not in Arch repo or AUR)<br />
<br />
==File manager==<br />
*{{AUR|bsc}} in AUR (BeeSoft Commander)<br />
*{{AUR|pydingo-svn}} in AUR<br />
*Kognite (not in Arch repo or AUR)<br />
*qfar (not in Arch repo or AUR)<br />
*filebower (not in Arch repo or AUR)<br />
<br />
==Text editor==<br />
*{{pkg|tea}} in [community]<br />
*{{AUR|juffed}} in AUR<br />
*pyedi (not in Arch repo or AUR)<br />
*{{AUR|qscite}} in AUR<br />
*qxmledit (not in Arch repo or AUR)<br />
*promanagerpart (not in Arch repo or AUR)<br />
*{{AUR|pydingo-svn}} in AUR<br />
<br />
==Office==<br />
*extra/lyx<br />
*{{AUR|scribus-svn}} in AUR<br />
*text-works (not in Arch repo or AUR)<br />
<br />
==Bluetooth (obexftp)==<br />
*{{AUR|qnokiacommander}} in AUR<br />
<br />
==Graphic==<br />
*community/luminancehdr<br />
*{{AUR|pencil-svn}} in AUR<br />
*seam-carving-gui (not in Arch repo or AUR)<br />
*QPhoton (not in Arch repo or AUR)<br />
*QPreview (not in Arch repo or AUR)<br />
<br />
==Develop==<br />
*qdevelop<br />
**{{AUR|qdevelop}} in AUR<br />
**{{AUR|qdevelop-svn}} in AUR<br />
<br />
*[http://qt.nokia.com/products/appdev/developer-tools/developer-tools Qt Creator] as {{pkg|qtcreator}} in [community]<br />
<br />
==Other tools==<br />
*community/acetoneiso2<br />
*{{AUR|bibblepro}} in AUR<br />
<br />
==System==<br />
*controleee (not in Arch repo or AUR)<br />
<br />
==Utility==<br />
*extra/speedcrunch<br />
*{{AUR|pictureflow}} in AUR<br />
*{{AUR|synkron}} in AUR<br />
*dfalauncher (not in Arch repo or AUR)<br />
*qrename (not in Arch repo or AUR)<br />
*comunity/{{pkg|Ubuntuone-clien-panel}}</div>
Jristz
https://wiki.archlinux.org/index.php?title=Improving_performance/Boot_process&diff=203050
Improving performance/Boot process
2012-05-28T03:55:53Z
<p>Jristz: /* TTY terminal management */</p>
<hr />
<div>[[Category:Boot process]]<br />
{{i18n|Improve Boot Performance}}<br />
<br />
{{Article summary start}}<br />
{{Article summary text|This article attempts to aggregate methods on how to improve the boot performance of an Arch Linux system.}}<br />
{{Article summary end}}<br />
<br />
==Preface==<br />
Improving the boot performance of a system can provide reduced boot wait times and a means to learn more about how certain system files and scripts interact with one another. This article attempts to aggregate methods on how to improve the boot performance of an Arch Linux system.<br />
<br />
==Modifying boot files==<br />
===/etc/inittab===<br />
<br />
====Asynchronous startup====<br />
{{Note|Using this means there are no guarantees that daemons are all started before [[Xorg|X]]. This can cause problems if your setup expects [[D-Bus]] to be running (ck-launch-session, [[GNOME]], [[KDE]], etc.).}}<br />
The initscripts can be started [[Wiktionary:asynchronous|asynchronously]] instead of running in a strict order.<br />
<br />
# use once instead of wait<br />
rc::sysinit:/etc/rc.sysinit<br />
rs:S1:wait:/etc/rc.single<br />
rm:2345:once:/etc/rc.multi<br />
rh:06:once:/etc/rc.shutdown<br />
su:S:once:/sbin/sulogin -p<br />
<br />
====TTY terminal management====<br />
<br />
''agetty'' is Arch Linux's default terminal manager. By default it will generate six terminals, which can be accessed by typing {{Keypress|Ctrl+Alt+F[1-6]}}. To increase performance you can comment out unused terminals. It is important to '''not''' comment out the first two terminals (i.e. {{ic|tty1}} and {{ic|tty2}}).<br />
{{hc|/etc/inittab|<nowiki><br />
c1:2345:respawn:/sbin/agetty -8 38400 tty1 linux<br />
c2:2345:respawn:/sbin/agetty -8 38400 tty2 linux<br />
#c3:2345:respawn:/sbin/agetty -8 38400 tty3 linux<br />
#c4:2345:respawn:/sbin/agetty -8 38400 tty4 linux<br />
#c5:2345:respawn:/sbin/agetty -8 38400 tty5 linux<br />
#c6:2345:respawn:/sbin/agetty -8 38400 tty6 linux<br />
</nowiki>}}<br />
<br />
Additionally, consider using a lighter terminal manager such as {{AUR|fgetty}}, which consists of the minimal tty manager, {{Pkg|mingetty}}, that has been stripped of printfs and compiled against {{Pkg|dietlibc}}.<br />
<br />
{{Note|{{AUR|fgetty}} currently does not support SHA-512 password hashing by default; a patched {{AUR|fgetty-pam}} is available in the [[Arch User Repository|AUR]]. See [[SHA password hashes]] for more information.}}<br />
<br />
You can [[AUR_Helpers|install]] {{AUR|fgetty}} from the [[Arch User Repository|AUR]].<br />
<br />
Then replace {{ic|agetty}} with {{ic|fgetty}} on the following lines:<br />
{{hc|/etc/inittab|<nowiki><br />
c1:2345:respawn:/sbin/fgetty tty1 linux<br />
c2:2345:respawn:/sbin/fgetty tty2 linux<br />
</nowiki>}}<br />
<br />
===/boot/grub/menu.lst===<br />
This file lets you modify the kernel command line at boot. A couple of ways to speed up boot time using this file to modify the kernel command line is to remove framebuffer entries and to set the kernel to use a low level of logging with {{ic|quiet}}. Remove existing {{ic|1=vga=}} [[Wikipedia:Framebuffer|framebuffer]] resolution entries and {{ic|logo.nologo}}, parameters to the desired kernel:<br />
<br />
kernel /vmlinuz-linux root=/dev/disk/by-uuid/UUID ro logo.nologo quiet<br />
<br />
For more kernel parameters and {{ic|/boot/grub/menu.lst}} examples check out the page on [[Boot Debugging]] using [[GRUB]].<br />
<br />
===/etc/mkinitcpio.conf===<br />
<br />
Delete the HOOKS you do not need, and consider using just base (sometimes [[udev]] is needed too) along with the [[Kernel modules|MODULES]] you need for your root device (and keyboard, instead of usbinput).<br />
<br />
{{Warning|Read more about what hooks are required in the [[mkinitcpio]] article. Removing required hooks can render your system unusable!}}<br />
<br />
===/etc/rc.conf===<br />
In the network section, make sure you only load the network interface you need. Manually configuring your network with a static IP address is also faster than using DHCP.<br />
<br />
Then find and remove all DAEMONS that you do not need.<br />
DAEMONS=(alsa network gdm)<br />
<br />
Next, move your login manager (in this case {{Pkg|gdm}}) to the front, and background all DAEMONS.<br />
DAEMONS=(@gdm @alsa @network)<br />
<br />
Another thing you could do about daemons is finding the best, or rather, "sweetest" arrangement.<br />
DAEMONS=(syslog-ng @acpid arptables iptables network pdnsd @alsa @dbus @mpd @crond @sensors @ntpd @dropboxd)<br />
<br />
You should try to background as many DAEMONS as possible, making sure to start dependent DAEMONS after what they require (in the above example, {{ic|pdnsd}} depends on {{ic|network}}, {{ic|ntpd}} and {{ic|dropboxd}} depend on {{ic|pdnsd}} and {{ic|network}}, because 127.0.0.1 is the DNS server). You can still background daemons that are required by other things ({{ic|dbus}} is required by [[Xorg]]), but they need enough time to start (it can take some experimentation to get it all to work well).<br />
<br />
=== /etc/rc.sysinit ===<br />
This script is responsible for the majority of output you see during boot, meaning this is a system-critical configuration file which looks up other files like {{ic|/etc/[[rc.conf]]}} and loads modules, sets up mounts, handles errors, and basically tries to be your best friend.<br />
<br />
There are certain lines here which you may not need. Removing or commenting them out may save you a few seconds at most. Do this at your own risk. For example, if you do not have [[RAID]], [[LVM]] or encryption, then you would not need any lines concerning that.<br />
<br />
It is also possible to add some ampersands ({{ic|&}}) to make it more asynchronous, but be careful - lots of things are expected to be finished during later parts of the script.<br />
<br />
== Compiling a Custom Kernel ==<br />
<br />
To decrease boot time, a stripped kernel is a must.<br />
[[Kernel Compilation|Read more about compiling a kernel.]]<br />
<br />
== Additional Resources ==<br />
* [[Arch Boot Process]]<br />
* [[e4rat]]<br />
* [[udev]]<br />
* [[Daemon]]<br />
* [[rc.conf]]<br />
* [[mkinitcpio]]<br />
* [[Maximizing Performance]]<br />
* [[Systemd]] - An alternative init process<br />
* [[Bootchart]] - A tool to assist in profiling the boot process<br />
* [[Kexec]] A tool to reboot very quickly without waiting for the whole BIOS boot process to finish.</div>
Jristz
https://wiki.archlinux.org/index.php?title=CUPS&diff=202943
CUPS
2012-05-27T02:10:50Z
<p>Jristz: /* Printer driver */</p>
<hr />
<div>[[Category:Printers]]<br />
[[tr:CUPS]]<br />
{{i18n|CUPS}}<br />
{{Article summary start|Summary}}<br />
{{Article summary text|Installing and configuring CUPS}}<br />
{{Article summary heading|Related}}<br />
{{Article summary wiki|CUPS printer sharing}}<br />
{{Article summary wiki|CUPS printer-specific problems}}<br />
{{Article summary wiki|Samba}}<br />
{{Article summary end}}<br />
<br />
From [http://www.cups.org/index.php CUPS' site]:<br />
:"''[[Wikipedia:CUPS|CUPS]] is the standards-based, open source printing system developed by Apple Inc. for Mac OS® X and other UNIX®-like operating systems''".<br />
<br />
Although there are other printing packages such as LPRNG, the Common Unix Printing System is the most popular choice because of its relative ease of use.<br />
<br />
==Installing==<br />
The packages {{Pkg|cups}}, {{Pkg|ghostscript}}, and {{Pkg|gsfonts}} are needed. [[pacman|Install]] them from the [[Official repositories]].<br />
<br />
* '''cups''' - The actual CUPS software<br />
* '''ghostscript''' - Interpreter for the Postscript language<br />
* '''gsfonts''' - GhostScript standard Type1 fonts<br />
* '''hpoj''' - If you are using an HP Officejet, you should also install this package and follow the instructions to avoid problems. Read this [http://answers.launchpad.net/hplip/+question/133425 thread at launchpad/hplip] for more information.<br />
<br />
If the system is connected to a networked printer using the [[Samba]] protocol or if the system is to be a print server for Windows clients, also install {{Pkg|samba}}.<br />
<br />
===Printer driver===<br />
Here are some of the driver packages. Choosing the right driver depends on the printer:<br />
<br />
* '''{{Pkg|gutenprint}}''' - A collection of high quality drivers for Canon, Epson, Lexmark, Sony, Olympus, and PCL printers for use with GhostSscript, CUPS, Foomatic, and the [[GIMP]]<br />
* '''{{Pkg|foomatic-db}}, {{Pkg|foomatic-db-engine}}, {{Pkg|foomatic-db-nonfree}}, and {{Pkg|foomatic-filters}}''' - Foomatic is a database-driven system for integrating free software printer drivers with common spoolers under Unix. Installing foomatic-filters should solve problems if the cups error_log is reporting "stopped with status 22!".<br />
* '''{{AUR|foo2zjs}}''' - Drivers for ZjStream protocol printers such as the HP Laserjet 1018. More info [http://foo2zjs.rkkda.com here], Foo2zsj is available in the {{AUR|foo2zjs}}.<br />
* '''{{Pkg|hplip}}''' - HP GNU/Linux driver. Provides support for DeskJet, OfficeJet, Photosmart, Business Inkjet and some LaserJet printer models, as well as a number of Brother printers.<br />
* '''{{Pkg|splix}}''' - Samsung drivers for SPL (Samsung Printer Language) printers<br />
* '''{{AUR|ufr2}}''' or '''{{AUR|cndrvcups-lb}}''' - Canon UFR2 driver with support for LBP, iR and MF series printers. Package is available in the [[AUR]].<br />
* '''{{Pkg|cups-pdf}}''' - A package that allows one to setup a virtual PDF Printer that generates a PDF out of jobs sent to it<br />
<br />
If unsure of what driver package to install or if the current driver is not working, it may be easiest to just install all of drivers, since some of the packages are misleading because printers of other makes may rely on them. For instance, the Brother HL-2140 needs the hplip driver installed.<br />
<br />
====Download printer PPD====<br />
Depending on the printer, this step is optional and may not be needed, as the standard CUPS installation already comes with quite a few PPD (Postscript Printer Description) files. Moreover, the ''foomatic-filters'', ''gimp-print'' and ''hplip'' packages already include quite a few PPD files which will automatically be detected by CUPS.<br />
<br />
Here is an explanation of what a PPD file is from the Linux Printing website:<br />
:"''For every PostScript printer the manufacturers provide a PPD file which contains all printer-specific information about the particular printer model: Basic printer capabilities as whether the printer is a color printer, fonts, PostScript level, etc., and especially the user-adjustable options, as paper size, resolution, etc.''"<br />
<br />
If the PPD for the printer is ''not'' already in CUPS, then:<br />
*check [[AUR]] to see if there are packages for the printer/manufacturer<br />
*visit the [http://www.openprinting.org/printers OpenPrinting database] and select the manufacturer and model of the printer<br />
*visit the manufacturer's site and search for GNU/Linux drivers<br />
<br />
{{Note|PPD files go in {{ic|/usr/share/cups/model/}}}}<br />
<br />
==Configuring==<br />
Now that CUPS is installed, there are a variety of options on how to setup printing solutions. As always, the tried and true command line method is at your disposal. Likewise, various desktop environments such as GNOME and KDE have useful programs that can help manage printers. However, in order to make this process easy for the largest amount of users, this article will focus on the web interface provided by CUPS.<br />
<br />
If you are planning on connecting to a network printer, rather than one that is directly connected to the computer, you might want to read the [[CUPS printer sharing]] page first. Printer sharing between GNU/Linux systems is quite easy and involves very little configuration, whereas sharing between a Windows and GNU/Linux host requires a little bit more effort.<br />
<br />
USB printers can get accessed with two methods: The usblp kernel module and libusb. The former is the classic way. It is simple: Data is sent to the printer by writing it to a device file as a simple serial data stream. Reading the same device file allows bi-di access, at least for things like reading out ink levels, status, or printer capability information (PJL). It works very well for simple printers, but for multi-function devices (printer/scanner) it is not suitable and manufacturers like HP supply their own backends. (source: [http://lists.linuxfoundation.org/pipermail/printing-architecture/2012/002412.html here])<br />
<br />
===Kernel modules===<br />
Before using the CUPS web interface, the appropriate kernel modules need to be installed. The following steps are from the Gentoo Printing Guide.<br />
<br />
This section may not be necessary, however, depending on which kernel is being used. The kernel module may load automatically after plugging in the printer. Use the {{ic|tail}} command (described below) to see if the printer has already been detected. The {{ic|lsmod}} utility can also be used to see what modules have been loaded.<br />
<br />
====USB printers====<br />
USB printer users may need to blacklist the {{ic|usblp}} module. Keep in mind that there seems to be a lot of [http://bbs.archlinux.org/viewtopic.php?pid=660601 uncertainty] regarding blacklisting {{ic|usblp}}, as some USB printers, including some Canon and Epson printer series, are not recognized without it.<br />
<br />
To blacklist the module:<br />
<br />
{{hc|/etc/modprobe.d/blacklist.conf|blacklist usblp}}<br />
<br />
Custom kernel users may need to manually load the {{ic|usbcore}} module before proceeding:<br />
# modprobe usbcore<br />
<br />
Once the modules are installed, plug in the printer and check if the kernel detected it by running the following:<br />
# tail /var/log/messages.log<br />
or<br />
# dmesg<br />
<br />
If you're using {{ic|usblp}}, the output should indicate that the printer has been detected like so:<br />
Feb 19 20:17:11 kernel: printer.c: usblp0: USB Bidirectional<br />
printer dev 2 if 0 alt 0 proto 2 vid 0x04E8 pid 0x300E<br />
Feb 19 20:17:11 kernel: usb.c: usblp driver claimed interface cfef3920<br />
Feb 19 20:17:11 kernel: printer.c: v0.13: USB Printer Device Class driver<br />
<br />
If you blacklisted {{ic|usblp}}, you will see something like:<br />
usb 3-2: new full speed USB device using uhci_hcd and address 3<br />
usb 3-2: configuration #1 chosen from 1 choice<br />
<br />
====Parallel port printers====<br />
To use a parallel port printer the configuration is pretty much the same, except for the modules:<br />
# modprobe lp<br />
# modprobe parport<br />
# modprobe parport_pc<br />
<br />
Once again, check the setup by running:<br />
# tail /var/log/messages.log<br />
It should display something like this:<br />
lp0: using parport0 (polling).<br />
<br />
If you are using a USB to parallel port adapter, CUPS will not be able to detect the printer. As a workaround, add the printer using a different connection type and then change DeviceID in /etc/cups/printers.conf:<br />
DeviceID = parallel:/dev/usb/lp0<br />
<br />
====Auto-loading====<br />
It is convenient to have the system automatically load the kernel module every time it starts up. To do so, use a text editor to open up {{ic|/etc/[[rc.conf]]}} and add the appropriate module to the {{ic|1=MODULES=()}} line. Here is an example:<br />
MODULES=(!usbserial scsi_mod sd_mod snd-ymfpci snd-pcm-oss '''lp parport parport_pc''' ide-scsi)<br />
<br />
===CUPS daemon===<br />
With the kernel modules installed, you can now [[Daemon#Performing daemon actions manually|start the cupsd daemon]]. Add cupsd to your [[daemons#Starting on Boot|DAEMONS array]] so it starts automatically on boot.<br />
<br />
=== Web interface and tool-kit ===<br />
<br />
Once the daemon is running, open a browser and go to: http://localhost:631 (''The '''localhost''' string may need to be replaced with the hostname found in'' {{ic|/etc/hosts}}).<br />
<br />
From here, follow the various wizards to add the printer. A usual procedure is to start by clicking on ''Adding Printers and Classes'' and then ''Add Printer''. When prompted for a username and password, log in as root. The name assigned to the printer does not matter, the same applies for 'location' and 'description'. Next, a list of devices to select from will be presented. The actual name of the printer shows up next to the label ( e.g., next to ''USB Printer #1'' for USB printers). Finally, choose the appropriate drivers and the configuration is complete.<br />
<br />
Now test the configuration by pressing the ''Maintenance'' drop-down menu then ''Print Test Page''. If it does not print and there is certainty regarding the correctness of applied settings, then the problem is most likely due to missing a proper printer driver.<br />
<br />
{{Tip|See: [[#Alternative CUPS interfaces]] for other other frontends.}}<br />
{{Note|When setting up a USB printer, you should see your printer listed on ''Add Printer'' page. If you can only see a "SCSI printer" option, it probably means that CUPS has failed to recognize your printer.}}<br />
<br />
==== CUPS administration ====<br />
<br />
A username and password will be required when administering the printer in the web interface, such as: adding or removing printers, stopping print tasks, etc. The default username is the one assigned in the ''sys'' group, or root (change this by editing {{ic|/etc/cups/cupsd.conf}} in the line of ''SystemGroup''). <br />
<br />
If the root account has been locked (i.e. when using sudo), it is not possible to log in the CUPS administration interface with the default username and password. In this case, follow [http://www.cups.org/articles.php?L237+T+Qprintadmin these instructions] on the CUPS FAQ. You might also want to read [http://bbs.archlinux.org/viewtopic.php?id=35567 this post].<br />
<br />
====Remote access to web interface====<br />
By default, the CUPS web interface can only be accessed by the ''localhost''; i.e. the computer that it is installed on. To remotely access the interface, make the following changes to the {{ic|/etc/cups/cupsd.conf}} file. Replace the line:<br />
Listen localhost:631<br />
with<br />
Port 631<br />
so that CUPS listens to incoming requests.<br />
<br />
Three levels of access can be granted:<br />
<Location /> #access to the server<br />
<Location /admin> #access to the admin pages<br />
<Location /admin/conf> #access to configuration files<br />
<br />
To give remote hosts access to one of these levels, add an {{ic|Allow}} statement to that level's section. An {{ic|Allow}} statement can take one or more of the forms listed below:<br />
Allow all<br />
Allow host.domain.com<br />
Allow *.domain.com<br />
Allow ip-address<br />
Allow ip-address/netmask<br />
<br />
Deny statements can also be used. For example, if wanting to give all hosts on the 192.168.1.0/255.255.255.0 subnet full access, file {{ic|/etc/cups/cupsd.conf}} would include this:<br />
# Restrict access to the server...<br />
# By default only localhost connections are possible<br />
<Location /><br />
Order allow,deny<br />
Allow From localhost<br />
'''Allow From 192.168.1.0/255.255.255.0'''<br />
</Location><br />
<br />
# Restrict access to the admin pages...<br />
<Location /admin><br />
# Encryption disabled by default<br />
#Encryption Required<br />
Order allow,deny<br />
Allow From localhost<br />
'''Allow From 192.168.1.0/255.255.255.0'''<br />
</Location><br />
<br />
# Restrict access to configuration files...<br />
<Location /admin/conf><br />
AuthType Basic<br />
Require user @SYSTEM<br />
Order allow,deny<br />
Allow From localhost<br />
'''Allow From 192.168.1.0/255.255.255.0'''<br />
</Location><br />
<br />
You might also need to add:<br />
<br />
DefaultEncryption Never<br />
<br />
This should avoid the error: 426 - Upgrade Required when using the CUPS web interface from a remote machine.<br />
<br />
==Troubleshooting==<br />
The best way to get printing working is to set 'LogLevel' in {{ic|/etc/cups/cupsd.conf}} to:<br />
LogLevel debug<br />
<br />
And then viewing the output from {{ic|/var/log/cups/error_log}} like this:<br />
# tail -n 100 -f /var/log/cups/error_log<br />
<br />
The characters at the left of the output stand for:<br />
*D=Debug<br />
*E=Error<br />
*I=Information<br />
*And so on<br />
<br />
These files may also prove useful:<br />
*{{ic|/var/log/cups/page_log}} - Echoes a new entry each time a print is successful<br />
*{{ic|/var/log/cups/access_log}} - Lists all cupsd http1.1 server activity<br />
<br />
Of course, it is important to know how CUPS works if wanting to solve related issues:<br />
# An application sends a .ps file (PostScript, a script language that details how the page will look) to CUPS when 'print' has been selected (this is the case with most programs).<br />
# CUPS then looks at the printer's PPD file (printer description file) and figures out what filters it needs to use to convert the .ps file to a language that the printer understands (like PJL, PCL), usually GhostScript.<br />
# GhostScript takes the input and figures out which filters it should use, then applies them and converts the .ps file to a format understood by the printer.<br />
# Then it is sent to the back-end. For example, if the printer is connected to a USB port, it uses the USB back-end.<br />
<br />
Print a document and watch {{ic|error_log}} to get a more detailed and correct image of the printing process.<br />
<br />
===Problems resulting from upgrades===<br />
''Issues that appeared after CUPS and related program packages underwent a version increment''<br />
<br />
====CUPS stops working====<br />
The chances are that a new configuration file is needed for the new version to work properly. Messages such as "404 - page not found" may result from trying to manage CUPS via localhost:631, for example.<br />
<br />
To use the new configuration, copy /etc/cups/cupsd.conf.default to /etc/cups/cupsd.conf (backup the old configuration if needed):<br />
# cp /etc/cups/cupsd.conf.default /etc/cups/cupsd.conf<br />
and restart CUPS to employ the new settings.<br />
<br />
====All jobs are "stopped"====<br />
If all jobs sent to the printer become "stopped", delete the printer and add it again.<br />
Using the [http://localhost:631 CUPS web interface], go to Printers > Delete Printer.<br />
<br />
To check the printer's settings go to ''Printers'', then ''Modify Printer''. Copy down the information displayed, click 'Modify Printer' to proceed to the next page(s), and so on.<br />
<br />
====All jobs are "The printer is not responding"====<br />
On networked printers, you should check that the name that CUPS uses as its connection URI resolves to the printer's IP via DNS, e.g.<br />
If your printer's connection looks like this:<br />
lpd://BRN_020554/BINARY_P1<br />
<br />
then the hostname 'BRN_020554' needs to resolve to the printer's IP from the server running CUPS<br />
<br />
====The PPD version is not compatible with gutenprint====<br />
Run:<br />
# /usr/sbin/cups-genppdupdate<br />
<br />
And restart CUPS (as pointed out in gutenprint's post-install message)<br />
<br />
===USB printers under CUPS 1.4.x===<br />
New CUPS 1.4.x introduces many changes:<br />
<br />
====Blacklisting usblp====<br />
CUPS now uses libusb and printer USB devices (under /dev/bus/usb/) instead of the usblp generated /dev/usb/lpX ones. In order to get USB printers working, the usblp module needs disabling. Some users have also reported that they needed to reinstall their printer.<br />
<br />
{{hc|/etc/modprobe.d/modprobe.conf|blacklist usblp}}<br />
<br />
====Device node permissions====<br />
In addition to usblp not being loaded, CUPS also needs the ownership of the USB device file of the printer to be root:lp, and permissions to be 660, e.g.<br />
$ ls -l /dev/bus/usb/003/002<br />
crw-rw---- 1 root lp 189, 257 20. Okt 10:32 /dev/bus/usb/003/002<br />
<br />
This is supposed to be achieved by two udev rules in /lib/udev/rules.d/50-udev-default.rules:<br />
# hplip and cups 1.4+ use raw USB devices, so permissions should be similar to<br />
# the ones from the old usblp kernel module<br />
SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", ENV{ID_USB_INTERFACES}=="", IMPORT{program}="usb_id --export %p"<br />
SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", ENV{ID_USB_INTERFACES}==":0701*:", GROUP="lp", MODE="660"<br />
<br />
However, for some devices, in particular combined printer/scanner devices, these rules either do not trigger, or are overwritten by rules of the 'sane' package. In these cases a custom udev rule needs to be added. See below.<br />
<br />
=====Device node permission troubleshooting=====<br />
Get the printer's device file and its permissions with: <br />
$ lsusb<br />
...<br />
Bus 003 Device 002: ID 04b8:0841 Seiko Epson Corp.<br />
$ ls -l /dev/bus/usb/003/002<br />
crw-rw---- 1 root lp 189, 257 20. Okt 10:32 /dev/bus/usb/003/002<br />
<br />
If the permissions are not already root:lp 660, enforce it by creating a custom udev rule, e.g.<br />
cat /etc/udev/rules.d/10-usbprinter.rules<br />
ATTR{idVendor}=="04b8", ATTR{idProduct}=="0841", MODE:="0660", GROUP:="lp"<br />
<br />
If you have a multifunction device (printer+scanner) you need to make the device detectable to sane too<br />
cat /etc/udev/rules.d/10-usbprinter.rules<br />
ATTR{idVendor}=="04b8", ATTR{idProduct}=="0841", MODE:="0660", GROUP:="lp", ENV{libsane_matched}:="yes"<br />
<br />
{{Note|<br />
* {{ic|idVendor}} and {{ic|idProduct}} are from the {{ic|lsusb}} listing above.<br />
* some printers will need permissions to be {{ic|666}}<br />
* on my machine the propper folder is {{ic|/usr/lib/udev/rules.d}}<br />
}}<br />
<br />
=====Loading firmware=====<br />
<br />
Some printers and drivers need to load firmware to the printer (such as HP LaserJet 10xx printers using foo2zjs) and do this by writing directly to the lp device, a functionality provided by usblp. A work around until this issue is resolved is to install the usblp module until the firmware is loaded, then remove the module to allow CUPS to work. This can be accomplished by manually running "$ modprobe usblp", waiting for the firmware to load, then "$ rmmod usblp". You can also not blacklist usblp, then put "rmmod usblp" to /etc/rc.local, allowing the firmware to be loaded on boot before rc.local is run, then removing usblp.<br />
<br />
In case the printer is plugged in or powered on while system is already running, /etc/rc.local does not get executed and usblp module stays loaded. A workaround is to modify the /etc/udev/rules.d/11-hpj10xx.rules provided by foo2zjs so that after the add event we wait, e.g. 15 seconds for the firmware to load and then automatically remove usblp. The following example is for HP LaserJet 1018. For other models the value of ATTRS{idProduct} should be changed to match the printer model.<br />
<br />
Locate the line matching your printer in /etc/udev/rules.d/11-hpj10xx.rules:<br />
ACTION=="add", KERNEL=="lp*", SUBSYSTEM=="usb", ATTRS{idVendor}=="03f0", \<br />
ATTRS{idProduct}=="4117", RUN+="/sbin/foo2zjs-loadfw 1018 $tempnode"<br />
Add the following lines below it, make sure match the product and vendor IDs:<br />
ACTION=="add", KERNEL=="lp*", SUBSYSTEM=="usb", ATTRS{idVendor}=="03f0", \<br />
ATTRS{idProduct}=="4117", RUN+="/usr/bin/sleep 15"<br />
ACTION=="add", KERNEL=="lp*", SUBSYSTEM=="usb", ATTRS{idVendor}=="03f0", \<br />
ATTRS{idProduct}=="4117", RUN+="/usr/bin/rmmod usblp"<br />
<br />
Update: these modifications are not needed using foo2zjs>=20120519-2 AUR package as the /etc/udev/rules.d/11-hpj10xx.rules is already patched!!!<br />
<br />
===Other===<br />
<br />
=====CUPS permission errors=====<br />
*Some users fixed 'NT_STATUS_ACCESS_DENIED' (Windows clients) errors by using a slightly different syntax:<br />
smb://workgroup/username:password@hostname/printer_name<br />
<br />
*Sometimes, the block device has wrong permissions:<br />
# ls /dev/usb/<br />
lp0<br />
# chgrp lp /dev/usb/lp0<br />
<br />
====HPLIP printer sends "/usr/lib/cups/backend/hp failed" error====<br />
Make sure dbus is installed and running, e.g. check DAEMONS in {{ic|/etc/rc.conf}} or run {{ic|ls /var/run/daemons}}.<br />
<br />
The avahi-daemon might be required if this error persists and the dbus is already running.<br />
<br />
{{Note|There might need to set permissions issues right. Follow indications here: [[CUPS#Device_node_permissions]].}}<br />
<br />
====HPLIP printer claims job is complete but printer does nothing====<br />
This happens on hp printers when you select the (old) hpijs driver (e.g. the Deskjet D1600 series). Instead, use the hpcups driver when adding the printer.<br />
<br />
====hp-toolbox sends an error, "Unable to communicate with device"====<br />
If running hp-toolbox as a regular user results in:<br />
# hp-toolbox<br />
# error: Unable to communicate with device (code=12): hp:/usb/<printer id><br />
or, "{{ic|Unable to communicate with device"}}", then it may be needed to add the user to the lp group by running the following command:<br />
# gpasswd -a <username> lp<br />
<br />
This can also be caused by printers such as the P1102 that provide a virtual cd-rom drive for MS-Windows drivers. The lp dev appears and then disappears. In that case try the '''usb-modeswitch''' and '''usb-modeswitch-data''' packages, that lets one switch off the "Smart Drive" (udev rules included in said packages).<br />
<br />
====CUPS returns '"foomatic-rip" not available/stopped with status 3' with a HP printer====<br />
If receiving any of the following error messages in {{ic|/var/log/cups/error_log}} while using a HP printer, with jobs appearing to be processed while they all end up not being completed with their status set to 'stopped':<br />
Filter "foomatic-rip" for printer "<printer_name>" not available: No such file or director<br />
or:<br />
PID 5771 (/usr/lib/cups/filter/foomatic-rip) stopped with status 3!<br />
make sure '''hplip''' has been installed, in addition to [[#Packages|the packages mentioned above]], '''net-snmp''' is also needed. See [http://bbs.archlinux.org/viewtopic.php?id=65615 this forum post].<br />
# pacman -S hplip<br />
<br />
====Printing fails with unauthorised error====<br />
If the user has been added to the lp group, and allowed to print (set in {{ic|cupsd.conf}}), then the problem lies in {{ic|/etc/cups/printers.conf}}. This line could be the culprit:<br />
AuthInfoRequired negotiate<br />
<br />
Comment it out and restart CUPS.<br />
<br />
====Print button greyed-out in GNOME print dialogs====<br />
:''<small>Source: [http://bbs.archlinux.org/viewtopic.php?id=70418 I can't print from gnome applications. - Arch Forums]</small>''<br />
<br />
Be sure the package: '''libgnomeprint''' is installed<br />
<br />
Edit {{ic|/etc/cups/cupsd.conf}} and add<br />
# HostNameLookups Double<br />
<br />
Restart CUPS:<br />
# /etc/rc.d/cupsd restart<br />
<br />
====Unknown supported format: application/postscript====<br />
Comment the lines:<br />
application/octet-stream application/vnd.cups-raw 0 -<br />
from {{ic|/etc/cups/mime.convs}}, and:<br />
application/octet-stream<br />
in {{ic|/etc/cups/mime.types}}.<br />
<br />
====Finding URIs for Windows Print Servers====<br />
<br />
Sometimes Windows is a little less than forthcoming about exact device URIs (device locations). If having trouble specifying the correct device location in CUPS, run the following command to list all shares available to a certain windows username:<br />
$ smbtree -U ''windowsusername''<br />
This will list every share available to a certain Windows username on the local area network subnet, as long as Samba is set up and running properly. It should return something like this:<br />
{{bc| WORKGROUP<br />
\\REGULATOR-PC <br />
\\REGULATOR-PC\Z <br />
\\REGULATOR-PC\Public <br />
\\REGULATOR-PC\print$ Printer Drivers<br />
\\REGULATOR-PC\G <br />
\\REGULATOR-PC\EPSON Stylus CX8400 Series EPSON Stylus CX8400 Series}}<br />
What is needed here is first part of the last line, the resource matching the printer description. So to print to the EPSON Stylus printer, one would enter:<br />
smb://username.password@REGULATOR-PC/EPSON Stylus CX8400 Series<br />
as the URI into CUPS. Notice that whitespaces are allowed in URIs, whereas backslashes get replaced with forward slashes.<br />
<br />
====Print-Job client-error-document-format-not-supported====<br />
Try installing the foomatic packages and use a foomatic driver.<br />
<br />
====/usr/lib/cups/backend/hp failed====<br />
Change<br />
SystemGroup sys root<br />
to<br />
SystemGroup lp root<br />
in /etc/cups/cupsd.conf<br />
<br />
<br />
Following steps 1-3 in the Alternative CUPS interfaces below may be a better solution, since newer versions of cups will not allow the same group for both normal and admin operation.<br />
<br />
===="Unable to get list of printer drivers"====<br />
Try to remove Foomatic drivers.<br />
<br />
==Appendix==<br />
<br />
===Alternative CUPS interfaces===<br />
If using [[GNOME]], a possibility is to manage and configure the printer by using system-config-printer-gnome. This package is available through pacman: <br />
# pacman -S system-config-printer-gnome<br />
<br />
For system-config-printer to work as it should, running as root may be required, or alternatively set up a "normal" user to administer CUPS (if so '''follow steps 1-3''')<br />
<br />
* 1. Create group, and add a user to it<br />
# groupadd lpadmin<br />
# usermod -aG lpadmin <username><br />
<br />
* 2. Add "lpadmin" (without the quotes) to this line in {{ic|/etc/cups/cupsd.conf}}<br />
SystemGroup sys root <insert here><br />
<br />
* 3. Restart cups, log out and in again (or restart computer)<br />
{{bc|# rc.d restart cupsd}}<br />
<br />
[[KDE]] users can modify their printers from the Control Center. Both should refer to those desktop environments' documentation for more information on how to use the interfaces.<br />
<br />
There is also [https://aur.archlinux.org/packages.php?ID=43505 gtklp] in the [[AUR]]<br />
<br />
===PDF virtual printer===<br />
CUPS-PDF is a nice package that allows one to setup a virtual printer that will generate a PDF from anything sent to it. Obviously this package is not necessary, but it can be quite useful.<br />
<br />
Find generated PDF documents in a sub-directory located at {{ic|/var/spool/cups-pdf}}. Normally, the subdirectory is named after the user who performed the job. A little tweak helps you to find your printed PDF documents more easily. Edit /etc/cups/cups-pdf.conf by changing the line<br />
#Out /var/spool/cups-pdf/${USER}<br />
<br />
to<br />
<br />
Out /home/${USER}<br />
<br />
This package can be installed by the following command:<br />
# pacman -S cups-pdf<br />
<br />
After installing the package, set it up as if it were for any other printer by using the web interface. For the Device, select '''CUPS-PDF (Virtual PDF Printer)'''; Make/Manufacturer, choose '''Generic'''; Model/Driver, select '''Generic postscript color printer''' or '''Generic Cups-PDF Printer'''. Alternatively, provide the PPD file from [http://www.physik.uni-wuerzburg.de/~vrbehr/cups-pdf/cups-pdf-CURRENT/extra/CUPS-PDF.ppd this link].<br />
<br />
==== Print to postscript: CUPS-PDF virtual printer trick ====<br />
<br />
Printing to PDF in most applications like OpenOffice is no problem; just hit the button. Yet when printing out to postscript, matters take a little more work. For applications like OpenOffice where printing to kprinter is nebulous at best, there has to be another way -- and there is. The CUPS-PDF (Virtual PDF Printer) actually creates a postscript file and then creates the PDF using the ps2pdf utility. To print to postscript, what needs to be done is capturing the intermediate postscript file created by CUPS-PDF. This is easily accomplished with by selecting the "print to file" option in the print dialog. (choose either .ps or .eps as the extension) After selecting the "print to file" checkbox simply enter the filename and click "print".<br />
<br />
=====Configuring CUPS-PDF virtual printer=====<br />
#Set up the cups daemon using the instructions on this page.<br />
#Install {{Pkg|cups-pdf}} from [extra].<br />
#Access the cups print manager: http://localhost:631 and select:<br />
Administration -> Add Printer<br />
Select CUPS-PDF (Virtual PDF), choose for the make and driver:<br />
Make: Generic<br />
Driver: Generic CUPS-PDF Printer<br />
<br />
Now to print to postscript, just print as usual, in the print dialog choose "CUPS-PDF" as the printer, then select the checkbox for "print to file", hit print, enter the filename.ps and click save. This is handy for faxes, etc...<br />
<br />
===Another source for printer drivers===<br />
[http://www.turboprint.de/english.html Turboprint] is a proprietary driver for many printers not yet supported by GNU/Linux (Canon i*, for example). Unlike CUPS, however, high quality prints are either marked with a watermark or are a pay-only service.<br />
<br />
==See also==<br />
* [http://localhost:631/documentation.html Official CUPS documentation], ''locally installed''<br />
* [http://www.cups.org/ Official CUPS Website]<br />
* [http://www.linuxprinting.org/ Linux Printing], ''[http://www.linuxfoundation.org The Linux Foundation]''<br />
* [http://www.gentoo.org/doc/en/printing-howto.xml Gentoo's Printing Guide], ''[http://www.gentoo.org/doc/en Gentoo Documentation Resources]''<br />
* [http://bbs.archlinux.org/ Arch Linux User Forums]<br />
* [http://wiki.gotux.net/config/hp-printer Install HP Printers Easy Way]</div>
Jristz
https://wiki.archlinux.org/index.php?title=DeveloperWiki:Pacman_Roadmap&diff=202593
DeveloperWiki:Pacman Roadmap
2012-05-23T01:59:15Z
<p>Jristz: /* Pacsave numbered backups */</p>
<hr />
<div>[[Category:Pacman development]]<br />
{{i18n|Pacman Roadmap}}<br />
This page does not provide a traditional roadmap. [[Pacman]] releases are generally made after a major feature has been added and these get added in the order that patches are contributed.<br />
<br />
Instead, this page provides a brief overview of major features being discussed for future inclusion in pacman. This does not represent a complete list of all areas of pacman development (or even areas currently being developed...). All discussion about pacman development should take place on the [http://mailman.archlinux.org/pipermail/pacman-dev/ pacman-dev] mailing list.<br />
<br />
==Potential Release Schedule==<br />
<br />
This is '''not''' a for sure list by any means. This is simply to keep the main development team focused on a given release and what needs to be polished before we can push a major version out the door.<br />
<br />
<br />
===Pacman 4.1===<br />
<br />
Queued:<br />
<br />
* Improved optdepend handling<br />
* Pacsave non-overwriting file renames<br />
<br />
Maybes:<br />
<br />
* Color output<br />
* Parallel operations (mainly integrity checking and package loading)<br />
* Package/Transaction/File Hooks<br />
<br />
==New Feature Ideas==<br />
<br />
===Package Signing===<br />
<br />
'''Idea:''' Package signing would make pacman transactions more secure. See [[Pacman package signing]] for a more detailed description, as well as [[DeveloperWiki:Package Signing Proposal for Pacman]].<br />
<br />
'''Wiki:''' [[Pacman package signing]], [[DeveloperWiki:Package Signing Proposal for Pacman]], and [[User:Allan/Package Signing]]<br />
<br />
'''Flyspray:''' [https://bugs.archlinux.org/task/5331 FS#5331]<br />
<br />
'''Development branch:''' mostly in mainline, or in patches on the pacman-dev ML.<br />
<br />
===Hooks===<br />
<br />
'''Idea:'''<br />
Pacman should have hooks to perform common tasks. See [[User:Allan/Pacman_Hooks|here]] for a more detailed description.<br />
<br />
'''Flyspray:''' [https://bugs.archlinux.org/task/2985 FS#2985]<br />
<br />
'''Mailing List:'''<br />
* http://mailman.archlinux.org/pipermail/pacman-dev/2010-July/011441.html (first of set of four)<br />
* http://mailman.archlinux.org/pipermail/pacman-dev/2011-January/012313.html<br />
* http://mailman.archlinux.org/pipermail/pacman-dev/2011-January/012335.html<br />
<br />
'''Development branch:'''<br />
Not started<br />
<br />
===Optdepend Handling===<br />
<br />
'''Idea:''' Currently optdepends in pacman serve no purpose other than informational. It would be useful if these could be handled in a similar fashion to regular dependencies for many operations. See [[User:Allan/Pacman_OptDepends|here]] for a more detailed description of what is currently being implemented.<br />
<br />
'''Flyspray:''' [https://bugs.archlinux.org/task/12708 FS#12708] (and others)<br />
<br />
'''Mailing List:''' http://mailman.archlinux.org/pipermail/pacman-dev/2011-August/013961.html<br />
<br />
'''Development branch:''' https://github.com/moben/pacman/tree/optdep<br />
<br />
===Makepkg VCS packaging overhaul===<br />
'''Idea:''' The current handling of SCM PKGBUILDs in makepkg is a mess and needs many improvements. See [[User:Allan/Makepkg_VCS_overhaul|here]] for a more detailed description.<br />
<br />
'''Flyspray:''' (many - see above link)<br />
<br />
'''Mailing List:''' http://mailman.archlinux.org/pipermail/pacman-dev/2010-November/012017.html, http://mailman.archlinux.org/pipermail/pacman-dev/2010-November/012018.html<br />
<br />
'''Development branch:''' Not started<br />
<br />
===Parallel operations===<br />
<br />
'''Idea:''' Some things libalpm does are embarrassingly parallel, make it happen. Also, simply allow the library to be used in multithreaded environments even if we do not do parallel stuff on our own- namely DB loading stuff needs to be protected.<br />
<br />
'''Flyspray:''' (None)<br />
<br />
'''Mailing List:''' http://mailman.archlinux.org/pipermail/pacman-dev/2011-February/012466.html, http://mailman.archlinux.org/pipermail/pacman-dev/2011-February/012508.html<br />
<br />
===Pacsave numbered backups===<br />
<br />
'''Idea:''' If .pacsave already exists, move to .1, etc.<br />
<br />
'''Flyspray:''' [https://bugs.archlinux.org/task/24192 FS#24192]<br />
<br />
'''Mailing List:''' http://mailman.archlinux.org/pipermail/pacman-dev/2011-August/013981.html<br />
<br />
===Pacman recovery tool===<br />
<br />
'''Idea:''' If for any reason pacman is break or any important (/etc/pacman.conf ; /etc/pacman.d/mirrorlist ; /etc/makepkg.conf) are unreadable, a script or a tool or any mechanism for reintall or recover tose break part, this is usefull if for a filesystem corruption or accidentally or a bad upload is efectuated and pacman are unable to run, this can reinstall pacman ain the old (or any other uggested) way<br />
<br />
'''Flyspray:''' [https://bugs.archlinux.org/task/29865 FS#29865]<br />
<br />
===Iterator interface for databases===<br />
'''Idea:''' Provide an iterator interface for databases, especially those with 'files' entries, to keep memory usage in check.<br />
<br />
'''Mailing List:''' http://mailman.archlinux.org/pipermail/pacman-dev/2011-July/013816.html<br />
<br />
==Future Release Plans==<br />
<br />
See [http://bugs.archlinux.org/roadmap/proj3 flyspray roadmap]</div>
Jristz
https://wiki.archlinux.org/index.php?title=Systemd&diff=201330
Systemd
2012-05-14T00:35:03Z
<p>Jristz: /* See also */</p>
<hr />
<div>{{Lowercase title}}<br />
[[Category:Daemons and system services]]<br />
[[Category:Boot process]]<br />
[[fr:Systemd]]<br />
{{i18n|Systemd}}<br />
<br />
{{Article summary start}}<br />
{{Article summary text|'''systemd''' is a system and service manager for Linux, compatible with SysV and LSB init scripts. systemd provides aggressive parallelization capabilities, uses socket and [[D-Bus]] activation for starting services, offers on-demand starting of daemons, keeps track of processes using Linux [[cgroups]], supports snapshotting and restoring of the system state, maintains mount and automount points and implements an elaborate transactional dependency-based service control logic. It can work as a drop-in replacement for sysvinit.}}<br />
<br />
{{Article summary heading|Related}}<br />
{{Article summary wiki|Systemd/Services}}<br />
{{Article summary end}}<br />
<br />
See [http://0pointer.de/blog/projects/systemd.html Lennart's blog story] for a longer introduction, the two [http://0pointer.de/blog/projects/systemd-update.html status] [http://0pointer.de/blog/projects/systemd-update-2.html updates] since then, and the [http://0pointer.de/blog/projects/why.html most recent summary]. Also see the [http://en.wikipedia.org/wiki/Systemd Wikipedia article] and the [http://freedesktop.org/wiki/Software/systemd project web page].<br />
<br />
== Installation ==<br />
To try out systemd on Arch you need to:<br />
<br />
* install {{Pkg|systemd}} (and its dependencies) from [extra]<br />
* add {{Ic|1=init=/bin/systemd}} to your kernel cmdline in your bootloader<br />
<br />
:{{Note|1=If you are using GRUB2, kernel parameters are added in {{Ic|/etc/default/grub}} - {{Ic|1=GRUB_CMDLINE_LINUX="..."}}}}<br />
:{{Tip|1=systemd can be installed side-by-side with the regular Arch Linux initscripts, and they can be toggled by adding/removing the {{Ic|1=init=/bin/systemd}} kernel parameter.}}<br />
<br />
* To take advantage of the systemd way of starting services, you might also want the {{Pkg|systemd-arch-units}} package.<br />
<br />
{{Warning|udev and many other pieces of software expect {{ic|/usr}} to be mounted and available at bootup. If your {{Ic|/usr}} is on a separate partition, you will need to make accommodations to mount it from the initramfs and unmount it from a pivoted root on shutdown. See: [http://www.freedesktop.org/wiki/Software/systemd/separate-usr-is-broken freedesktop.org#separate-usr-is-broken]}}<br />
<br />
== Native systemd configuration files ==<br />
=== Add a hostname ===<br />
{{hc|/etc/hostname|myhostname}}<br />
<br />
=== Console and keymap settings ===<br />
The {{ic|/etc/vconsole.conf}} file configures the virtual console, i.e. keyboard mapping and console font.<br />
{{hc|/etc/vconsole.conf|<nowiki><br />
KEYMAP=us<br />
FONT=lat9w-16<br />
FONT_MAP=8859-1_to_uni</nowiki>}}<br />
<br />
=== Locale settings ===<br />
Read {{ic|man locale.conf}} for more options <br />
{{hc|/etc/locale.conf|<nowiki><br />
LANG=en_US.UTF-8<br />
LC_COLLATE=C</nowiki>}}<br />
<br />
=== Configure kernel modules to load during boot ===<br />
systemd uses {{ic|/etc/modules-load.d/}} to configure kernel modules to load during boot in a static list. Each configuration file is named in the style of {{ic|/etc/modules-load.d/<program>.conf}}. The configuration files should simply contain a list of kernel module names to load, separated by newlines. Empty lines and lines whose first non-whitespace character is {{ic|#}} or {{ic|;}} are ignored. Example:<br />
{{hc|/etc/modules-load.d/virtio-net.conf|<nowiki><br />
# Load virtio-net.ko at boot<br />
virtio-net</nowiki>}}<br />
See also [[Modprobe#Options]]<br />
<br />
=== Configure kernel modules blacklist ===<br />
Systemd uses {{ic|/etc/modprobe.d/}} to configure the blacklisting of kernel modules. Each configuration file is named in the style of {{ic|/etc/modprobe.d/<program>.conf}}. Empty lines and lines whose first non-whitespace character is {{ic|#}} or {{ic|;}} are ignored. Example:<br />
{{hc|/etc/modprobe.d/sound.conf|<nowiki><br />
blacklist snd_hda_intel</nowiki>}}<br />
or<br />
{{hc|/etc/modprobe.d/sound.conf|<nowiki><br />
install snd_hda_intel /bin/false</nowiki>}}<br />
See also [[Modprobe#Blacklisting]]<br />
<br />
=== Describe temporary files ===<br />
Systemd-tmpfiles uses the configuration files in {{ic|/etc/tmpfiles.d/}} to describe the creation, cleaning and removal of volatile and temporary files and directories which usually reside in directories such as {{ic|/run}} or {{ic|/tmp}}. Each configuration file is named in the style of {{ic|/etc/tmpfiles.d/<program>.conf}}.<br />
<br />
=== Systemd Journal ===<br />
Since version 38 systemd has an own logging system, the journal.<br />
<br />
By default, running a syslog daemon is no longer required. To read the log, use:<br />
{{bc|# systemd-journalctl}}<br />
The systemd-journal writes to {{ic|/run/systemd/journal}}, meaning logs will poof on reboot. For non-volatile logs, create {{ic|/var/log/journal/}}:<br />
{{bc|# mkdir /var/log/journal/}}<br />
<br />
====Journald in conjunction with a classic syslog daemon====<br />
Compatibility with classic syslog implementations is provided via a<br />
socket {{ic|/run/systemd/journal/syslog}}, to which all messages are forwarded.<br />
To make the syslog daemon work with the journal, it has to bind to this socket instead of {{ic|/dev/log}} ([http://lwn.net/Articles/474968/ official announcement]). For syslog-ng change {{ic|/etc/syslog-ng/syslog-ng.conf}} source section to:<br />
{{bc|<nowiki><br />
source src {<br />
unix-dgram("/run/systemd/journal/syslog");<br />
internal();<br />
file("/proc/kmsg");<br />
};</nowiki>}}<br />
<br />
and enable (or reenable) syslog-ng:<br />
{{bc|# systemctl enable syslog-ng.service}}<br />
<br />
By default, journald is configured to read from {{ic|/proc/kmsg}}, but this will collide with a syslog implementation doing the same ([http://lists.freedesktop.org/archives/systemd-devel/2012-January/004310.html systemd-devel post]). Disable reading {{ic|/proc/kmsg}} by {{ic|systemd-journald}} in {{ic|/etc/systemd/systemd-journald.conf}}:<br />
ImportKernel=no<br />
<br />
=== Network ===<br />
==== Dynamic (DHCP) ====<br />
If you simply want to use DHCP for your ethernet connection, you can use {{ic|dhcpcd@.service}} from the {{Pkg|systemd-arch-units}} package.<br />
To enable DHCP for {{ic|eth0}}, simply use:<br />
# systemctl start dhcpcd@eth0.service<br />
<br />
You can enable the service to automatically start at boot with:<br />
# systemctl enable dhcpcd@.service<br />
Note that this will enable the service for {{ic|eth0}} by default. If you want to use another interface, you have to create the symlink manually, e.g.:<br />
# ln -s '/usr/lib/systemd/system/dhcpcd@.service' '/etc/systemd/system/multi-user.target.wants/dhcpcd@eth1.service'<br />
<br />
==== Other configurations ====<br />
For static, wireless or advanced network configuration like bridging you can use [[netcfg]] or [[NetworkManager]] which both provide systemd service files.<br />
<br />
=== Remote filesystem mounts ===<br />
If you have NFS mounts listed in {{ic|/etc/fstab}} then systemd will attempt to mount them but will typically do so too early (before networking has been configured). To get the timing correct we need to tell systemd explicitly that the mount depends on networking and {{ic|rpc.statd}}. To do this, create the following file:<br />
{{hc|/etc/systemd/system/<mount-unit-name>.mount|<nowiki><br />
[Unit]<br />
Description=<mountpoint><br />
Wants=network.target rpc-statd.service<br />
After=network.target rpc-statd.service <br />
<br />
[Mount]<br />
What=<server>:<share><br />
Where=<mountpoint><br />
Type=nfs<br />
StandardOutput=syslog<br />
StandardError=syslog</nowiki>}}<br />
<br />
In the above:<br />
*{{ic|mount-unit-name}} is the full path to the mountpoint in an escaped format. For example, a mount unit for {{ic|/usr/local}} must be named {{ic|usr-local.mount}}.<br />
*{{ic|mountpoint}} is the local mountpoint<br />
*{{ic|server:share}} specifies the remote filesystem in the same manner as for {{ic|/etc/fstab}}<br />
<br />
See {{ic|systemd.unit(5)}} and {{ic|systemd.mount(5)}} for further details.<br />
<br />
A similar approach will probably be required for other remote filesystem types such as nfs4 and cifs.<br />
<br />
Alternatively, you can mark these entries in {{ic|/etc/fstab}} with the {{ic|1=x-systemd-automount}} and {{ic|1=x-systemd-device-timeout=#}} options (see {{ic|systemd.mount(5)}}). Make sure that if you also include {{ic|defaults}} as a mount option, that you override the implicit {{ic|auto}} with {{ic|noauto}}. This will cause the device to be mounted on first access, similar to [[Autofs]].<br />
<br />
== Using systemd ==<br />
<br />
*{{ic|systemctl}}: used to introspect and control the state of the systemd system and service manager<br />
*{{ic|systemd-cgls}}: recursively shows the contents of the selected Linux control group hierarchy in a tree<br />
*{{ic|systemadm}}: a graphical frontend for the systemd system and service manager that allows introspection and control of systemd (avaiable via the {{AUR|systemd-ui-git}} package from the [[AUR]]).<br />
<br />
View the man pages for more details. <br />
<br />
Listing running services:<br />
<br />
{{bc|$ systemctl}}<br />
<br />
or:<br />
<br />
{{bc|$ systemctl list-units}}<br />
<br />
The available services or units can be seen in {{ic|/usr/lib/systemd/system/}} and {{ic|/etc/systemd/system/}} (the latter takes precedence).<br />
<br />
Activate a service immediately:<br />
<br />
{{bc|# systemctl start <service>}}<br />
<br />
Deactivate a service immediately:<br />
<br />
{{bc|# systemctl stop <service>}}<br />
<br />
Restart a service:<br />
<br />
{{bc|# systemctl restart <service>}}<br />
<br />
Reload the configuration of a service:<br />
<br />
{{bc|# systemctl reload <service>}}<br />
<br />
Show the status of a service, including whether it is running or not:<br />
<br />
{{bc|# systemctl status <service>}}<br />
<br />
Check whether a service is already enabled or not:<br />
<br />
{{bc|# systemctl is-enabled <service>}}<br />
<br />
Enable a service to be started on bootup:<br />
<br />
{{bc|# systemctl enable <service>}}<br />
<br />
Disable a service to not start during bootup:<br />
<br />
{{bc|# systemctl disable <service>}}<br />
<br />
Refer to {{Ic|man systemctl}} for more details. <br />
<br />
Notice that you need to use the full name of a service file. E.g., in order to restart the avahi daemon, issue:<br />
<br />
{{bc|# systemctl restart avahi-daemon.service}}<br />
<br />
Shut down and reboot the system:<br />
<br />
{{bc|# systemctl reboot}}<br />
<br />
Shut down and power-off the system:<br />
<br />
{{bc|# systemctl poweroff}}<br />
<br />
Shut down and halt the system:<br />
<br />
{{bc|# systemctl halt}}<br />
<br />
== Runlevels/targets ==<br />
Runlevels is a legacy concept in systemd. Systemd uses ''targets'' which serve a similar purpose as runlevels but act a little different. Each ''target'' is named instead of numbered and is intended to serve a specific purpose with the possibility of having multiple ones active at the same time. Some ''targets'' are implemented by inheriting all of the services of another ''target'' and adding additional services to it. There are systemd ''target''s that mimic the common SystemVinit runlevels so you can still switch ''target''s using the familiar {{ic|telinit RUNLEVEL}} command. <br />
<br />
=== Get current runlevel/targets ===<br />
The following should be used under systemd instead of {{ic|runlevel}}:<br />
{{bc|1=# systemctl list-units --type=target}}<br />
<br />
=== Create custom target ===<br />
The runlevels that are assigned a specific purpose on vanilla Fedora installs; 0, 1, 3, 5, and 6; have a 1:1 mapping with a specific systemd ''target''. Unfortunately, there is no good way to do the same for the user-defined runlevels like 2 and 4. If you make use of those it is suggested that you make a new named systemd ''target'' as {{ic|/etc/systemd/system/<your target>}} that takes one of the existing runlevels as a base (you can look at {{ic|/usr/lib/systemd/system/graphical.target}} as an example), make a directory {{ic|/etc/systemd/system/<your target>.wants}}, and then symlink the additional services from {{ic|/usr/lib/systemd/system/}} that you wish to enable.<br />
<br />
=== Targets table ===<br />
{| border="1"<br />
!SysV Runlevel!!Systemd Target!!Notes<br />
|-<br />
| 0 || runlevel0.target, poweroff.target || Halt the system.<br />
|-<br />
| 1, s, single || runlevel1.target, rescue.target || Single user mode.<br />
|-<br />
| 2, 4 || runlevel2.target, runlevel4.target, multi-user.target || User-defined/Site-specific runlevels. By default, identical to 3.<br />
|-<br />
| 3 || runlevel3.target, multi-user.target || Multi-user, non-graphical. Users can usually login via multiple consoles or via the network.<br />
|-<br />
| 5 || runlevel5.target, graphical.target || Multi-user, graphical. Usually has all the services of runlevel 3 plus a graphical login.<br />
|-<br />
| 6 || runlevel6.target, reboot.target || Reboot<br />
|-<br />
| emergency || emergency.target || Emergency shell<br />
|-<br />
|}<br />
<br />
=== Change current runlevels ===<br />
In systemd runlevels are exposed via "target units". You can change them like this:<br />
{{bc|# systemctl isolate graphical.target}}<br />
This will only change the current runlevel, and has no effect on the next boot.<br />
<br />
=== Change default runlevel/target to boot into ===<br />
The standard target is {{ic|default.target}}, which is aliased by default to {{ic|graphical.target}} (which roughly corresponds to the old runlevel 5). To change the default target at boot-time, append one of the following kernel parameters to your GRUB kernel line:<br />
* {{ic|1=systemd.unit=multi-user.target}} (which roughly corresponds to the old runlevel 3),<br />
* {{ic|1=systemd.unit=rescue.target}} (which roughly corresponds to the old runlevel 1).<br />
<br />
Alternatively, you may leave the bootloader alone and change {{ic|default.target}}. This can be done using {{ic|systemctl}}:<br />
{{bc|# systemctl enable multi-user.target}}<br />
<br />
The effect of this command is outputted by {{ic|systemctl}}; a symlink to the new default target is made at {{ic|/etc/systemd/system/default.target}}. This works if, and only if:<br />
[Install]<br />
Alias=default.target<br />
is in the target's configuration file. Currently, {{ic|multi-user.target}} and {{ic|graphical.target}} both have it.<br />
<br />
== Running DEs under systemd ==<br />
<br />
=== Using display manager ===<br />
To enable graphical login, run your preferred [[Display Manager]] daemon (e.g. [[KDM]]). At the moment, service files exist for gdm, kdm, slim and xdm.<br />
<br />
{{bc|# systemctl enable kdm.service}}<br />
<br />
This should work out of the box. If not, you might have a {{ic|default.target}} set manually or from a older install:<br />
<br />
{{hc|# ls -l /etc/systemd/system/default.target|/etc/systemd/system/default.target -> /usr/lib/systemd/system/graphical.target}}<br />
<br />
Simply delete the symlink and systemd will use its stock {{ic|default.target}} (i.e. {{ic|graphical.target}}).<br />
<br />
{{bc|# rm /etc/systemd/system/default.target}}<br />
<br />
On KDE start an error message will appear saying {{ic|"console-kit-daemon.unit" could not be found}}. To solve this problem, install {{Pkg|systemd-arch-units}}.<br />
<br />
If {{ic|/etc/locale.conf}} is used for setting the locale, add an entry to {{ic|/etc/environment}}:<br />
{{hc|/etc/environment|<nowiki><br />
LANG=en_US.utf8</nowiki>}}<br />
<br />
=== Using service file ===<br />
If you are only looking for a simple way to start X directly without a display manager, you can create a service file similar to this:<br />
<br />
{{hc|/etc/systemd/system/graphical.target.wants/xinit.service|<nowiki><br />
[Unit]<br />
Description=Direct login to X<br />
Requires=dev-tty7.device<br />
After=dev-tty7.device systemd-user-sessions.service<br />
<br />
[Service]<br />
ExecStart=/bin/su <username> -l -c "/bin/bash --login -c xinit"<br />
<br />
[Install]<br />
WantedBy=graphical.target<br />
</nowiki>}}<br />
<br />
== Arch integration ==<br />
<br />
Integration with Arch's classic configuration is accomplished via the {{Pkg|initscripts-systemd}} package. This is an optional package containing unit files and scripts needed to emulate Arch's initscripts, which can be used to ease the transition from sysVinit to systemd.<br />
<br />
{{ic|/etc/inittab}} is not used at all.<br />
<br />
{{ic|/etc/rc.local}} and {{ic|/etc/rc.local.shutdown}} can be run at startup and shutdown by enabling {{ic|rc-local.service}}.<br />
<br />
{{warning|Usage of this package is not recommended. In particular, {{ic|arch-persistent-settings.service}} and {{ic|arch-daemons.target}} are unsupported as a long-term solution and will be removed in the future. When ever possible, use native systemd configuration files instead.}}<br />
<br />
Most people will not need all (if any) of these units, and they can be easily disabled with:<br />
{{bc|# systemctl disable <unitfile>}}<br />
<br />
The plan is to remove most of the functionality from this package as soon as it is handled elsewhere (mostly in udev/systemd/kernel).<br />
<br />
=== rc.conf ===<br />
Some variables in {{ic|/etc/rc.conf}} are respected by this glue work. For a pure systemd setup it is recommended to use the [[Systemd#Native_systemd_configuration_files|native systemd configuration files]] which will take precedence over {{ic|/etc/rc.conf}}.<br />
<br />
Supported variables:<br />
* LOCALE<br />
* KEYMAP<br />
* CONSOLEFONT<br />
* CONSOLEMAP<br />
* HOSTNAME<br />
* MODULES<br />
* DAEMONS: Ordering and blacklisting is respected, if a native systemd service file by the same name as a daemon exists, it will take precedence, this logic can be disabled by {{ic|systemctl disable arch-daemons.target}}<br />
<br />
Not supported variables and systemd configuration:<br />
* TIMEZONE: Please symlink {{Ic|/etc/localtime}} to your zoneinfo file manually.<br />
* HARDWARECLOCK: Use {{ic|# hwclock --systohc --utc}} to set your hardware clock to utc, localtime is not supported, see [[Systemd#Q: Why does systemd not support the RTC being in localtime?|FAQ]].<br />
* USELVM: use {{ic|lvm.service}} provided by {{Pkg|systemd-arch-units}} instead.<br />
* USECOLOR<br />
<br />
The following is a brief description of the functionality of each of them. Alternative solutions are provided as a migration plan away from the functionality provided by this package.<br />
<br />
==== rc-local.service ====<br />
Runs {{ic|/etc/rc-local}} (resp., {{ic|/etc/rc-local.shutdown}}) on boot (resp., shutdown).<br />
<br />
==== arch-daemons.target ====<br />
Parses the DAEMONS array in {{ic|/etc/rc.conf}} and starts the services. If a native systemd unit exists (by the same name) for a given daemon, this is used; otherwise, the script in {{ic|/etc/rc.d/}} is used to control the unit.<br />
<br />
Alternative: use native unit files from the {{Pkg|systemd-arch-units}} package<br />
<br />
==== arch-persistent-settings.service ====<br />
This is run at shutdown. Its aim is to make sure that any Arch Linux settings are applied on the next boot. In particular:<br />
* Sets the timezone based on {{ic|/etc/rc.conf}}. Alternative: Create {{ic|/etc/localtime}} as a symlink to your timezone file in {{ic|/usr/share/zoneinfo}}.<br />
* Updates module blacklists based on {{ic|/etc/rc.conf}} (see {{ic|/etc/modprobe.d/rc.conf}}). Alternative: Create a differently named copy of this file in {{ic|/etc/modprobe.d/}}.<br />
* Updates list of modules to be loaded based on {{ic|/etc/rc.conf}} (see {{ic|/etc/modules-load.d/rc.conf}}). Alternative: create a differently named copy of this file in {{ic|/etc/modules-load.d/}}.<br />
<br />
== Helping out ==<br />
Currently, systemd is mostly at feature parity with Arch's initscripts. However, a lot more testing is needed. If you would like to help out, you can fork the [https://github.com/falconindy/initscripts-systemd initscripts-systemd] or [http://github.com/falconindy/systemd-arch-units systemd-arch-units] git repos and submit pull requests for your additions.<br />
<br />
If you have any questions, ask in the [https://bbs.archlinux.org/viewtopic.php?id=96316&p=1 thread] in the Arch forums.<br />
<br />
== FAQ ==<br />
For an up-to-date list of known issues, look at the upstream [http://cgit.freedesktop.org/systemd/systemd/tree/TODO TODO].<br />
<br />
{{FAQ<br />
|question=Why are my console fonts ugly?<br />
|answer=If no font is set in {{ic|/etc/vconsole.conf}} (or alternatively {{ic|/etc/rc.conf}}), then a standard font will be used. The standard font is chosen due to it supporting a wide range of character sets. Set your preferred font to fix the issue.}}<br />
<br />
{{FAQ<br />
|question=Why do I get log messages on my console?<br />
|answer=You must set the kernel loglevel yourself. Historically, {{ic|/etc/rc.sysinit}} did this for us and set dmesg loglevel to {{ic|3}}, which was a reasonably quiet loglevel. Either add {{ic|1=loglevel=3}} or {{ic|quiet}} to your kernel cmdline.}}<br />
<br />
{{FAQ<br />
|question=Why does systemd not support the RTC being in localtime?<br />
|answer=In principle, there is nothing stopping you from adding some unit files that will allow the RTC to be in localtime, but there are a few reasons why we have not (and probably will not) implement it by default:<br />
<br />
* The reason for allowing the RTC to be in localtime was to allow dualboot with Windows ([http://blogs.msdn.com/b/oldnewthing/archive/2004/09/02/224672.aspx who uses localtime]). However, for some time now, Windows has been able to deal with the RTC being in UTC by setting the following registry key<br />
:{{bc|HKLM\SYSTEM\CurrentControlSet\Control\TimeZoneInformation\RealTimeIsUniversal}}<br />
:This needs to be a DWORD key with a value of 1.<br />
:{{Warning|On recent systems (Windows 7, Vista SP2) this setting prevents Windows from being able to update the system clock at all, [http://social.msdn.microsoft.com/forums/en-US/tabletandtouch/thread/0b872d8a-69e9-40a6-a71f-45de90c6e243/ and earlier versions do not work correctly when resuming from suspend or hibernate]. In addition, recent systems [http://support.microsoft.com/kb/2687252 may become unresponsive during Daylight Saving Time (DST) changeover if RealTimeIsUniversal is set].}}<br />
<br />
* Dealing with daylight saving time is messy. If the DST changes when your computer is off, your clock will be wrong on next boot ([http://www.cl.cam.ac.uk/~mgk25/mswish/ut-rtc.html there is a lot more to it]).<br />
* Recent kernels set the system time from the RTC directly on boot without using {{ic|hwclock}}, the kernel will always assume that the RTC is in UTC. This means that if the RTC is in localtime, then the system time will first be set up wrongly and then corrected shortly afterwards on every boot. This is possibly the reason for certain weird bugs (time going backwards is rarely a good thing).}}<br />
<br />
{{FAQ<br />
|question=How do I make a custom unit file?<br />
|answer=The unit files in {{ic|/etc/systemd/system/}} take precedence over the ones in {{ic|/usr/lib/systemd/system/}}. To make your own version of a unit (which will not be destroyed by an upgrade), copy the old unit file from {{ic|/usr/lib/}} to {{ic|/etc/}} and make your changes there.}}<br />
<br />
{{FAQ<br />
|question=How do I change the number of gettys running by default?<br />
|answer=To add another getty:<br />
<br />
Simply place another symlink for instantiating another getty in the {{ic|/etc/systemd/system/getty.target.wants/}} directory:<br />
<br />
{{bc|<nowiki># ln -sf /usr/lib/systemd/system/getty@.service /etc/systemd/system/getty.target.wants/getty@tty9.service<br />
# systemctl daemon-reload<br />
# systemctl start getty@tty9.service</nowiki>}}<br />
<br />
To remove a getty:<br />
<br />
Simply remove the getty symlinks you want to get rid of in the {{ic|/etc/systemd/system/getty.target.wants/}} directory:<br />
<br />
{{bc|<nowiki># rm /etc/systemd/system/getty.target.wants/getty@tty5.service /etc/systemd/system/getty.target.wants/getty@tty6.service<br />
# systemctl daemon-reload<br />
# systemctl stop getty@tty5.service getty@tty6.service</nowiki>}}<br />
<br />
systemd does not use the {{ic|/etc/inittab}} file.<br />
<br />
{{Note|As of systemd 30, only 1 getty will be launched by default. If you switch to another tty, a getty will be launched there (socket-activation style). You can still force additional agetty processes to start using the above methods.}}}}<br />
<br />
{{FAQ<br />
|question=How do I get more verbose output during boot?<br />
|answer=By default systemd does not give much (if any) output during boot. Firstly, lots of output from services running in parallel would be very messy, and secondly, boot is supposed to be so fast that status messages would slow it down.<br />
<br />
If you append the kernel parameter {{ic|verbose}} to your kernel line in GRUB, you will get lots of output during boot. However, this is only really meant as a debugging tool as it is not very useful during normal use. Any messages are logged to the system log and if you want to find out about the status of your system:<br />
{{bc|$ systemctl}}<br />
is your friend.}}<br />
<br />
{{FAQ<br />
|question=What kernel options do I need to enable in my kernel in case I do not use the official Arch kernel?<br />
|answer=Kernels prior to 2.6.39 are unsupported.<br />
<br />
This is a partial list of required/recommended options, there might be more:<br />
<br />
{{bc|<nowiki><br />
CONFIG_AUDIT=y (recommended)<br />
CONFIG_AUDIT_LOGINUID_IMMUTABLE=y (not required, may break sysvinit compat)<br />
CONFIG_CGROUPS=y<br />
CONFIG_IPV6=[y|m] (highly recommended)<br />
CONFIG_UEVENT_HELPER_PATH="" (if you don't use an initramfs)<br />
CONFIG_DEVTMPFS=y<br />
CONFIG_DEVTMPFS_MOUNT=y (recommended, if you don't use an initramfs)<br />
CONFIG_RTC_DRV_CMOS=y (highly recommended)<br />
CONFIG_FANOTIFY=y (required for readahead)<br />
CONFIG_AUTOFS4_FS=[y|m]<br />
CONFIG_TMPFS_POSIX_ACL=y (recommended, if you want to use pam_systemd.so)<br />
</nowiki>}}}}<br />
<br />
{{FAQ<br />
|question=What other units does a unit depend on?<br />
|answer=For example, if you want to figure out which services a target like {{ic|multi-user.target}} pulls in, use something like this: <br />
{{hc|$ systemctl show -p "Wants" multi-user.target|2=Wants=rc-local.service avahi-daemon.service rpcbind.service NetworkManager.service acpid.service dbus.service atd.service crond.service auditd.service ntpd.service udisks.service bluetooth.service cups.service wpa_supplicant.service getty.target modem-manager.service portreserve.service abrtd.service yum-updatesd.service upowerd.service test-first.service pcscd.service rsyslog.service haldaemon.service remote-fs.target plymouth-quit.service systemd-update-utmp-runlevel.service sendmail.service lvm2-monitor.service cpuspeed.service udev-post.service mdmonitor.service iscsid.service livesys.service livesys-late.service irqbalance.service iscsi.service netfs.service}}<br />
<br />
Instead of {{ic|Wants}} you might also try {{ic|WantedBy}}, {{ic|Requires}}, {{ic|RequiredBy}}, {{ic|Conflicts}}, {{ic|ConflictedBy}}, {{ic|Before}}, {{ic|After}} for the respective types of dependencies and their inverse.}}<br />
<br />
== Optimization ==<br />
=== Shell Shortcuts ===<br />
Systemd daemon management requires a bit more text entry to accomplish tasks such as start, stopped, enabling, checking status, etc. The following functions can be added one's {{ic|~/.bashrc}} to help streamline interactions with systemd and to improve the overall experience.<br />
<br />
<pre>if [[ ! -e /sys/fs/cgroup/systemd ]]; then # not using systemd<br />
start() {<br />
sudo rc.d start $1<br />
}<br />
<br />
restart() {<br />
sudo rc.d restart $1<br />
}<br />
<br />
stop() {<br />
sudo rc.d stop $1<br />
}<br />
else<br />
start() {<br />
sudo systemctl start $1.service<br />
}<br />
<br />
restart() {<br />
sudo systemctl restart $1.service<br />
}<br />
<br />
stop() {<br />
sudo systemctl stop $1.service<br />
}<br />
<br />
enable() {<br />
sudo systemctl enable $1.service<br />
}<br />
<br />
status() {<br />
sudo systemctl status $1.service<br />
}<br />
<br />
disable() {<br />
sudo systemctl disable $1.service<br />
}<br />
fi<br />
</pre><br />
<br />
=== Less output ===<br />
Change {{ic|verbose}} to {{ic|quiet}} on the kernel line in GRUB. For some systems, particularly those with an SSD, the slow performance of the TTY is actually a bottleneck, and so less output means faster booting.<br />
<br />
=== Early start ===<br />
One central feature of systemd is dbus and socket activation, this causes services to be started when they are first accessed, and is generally a good thing. However, if you know that a service (like console-kit) will always be started during boot, then the overall boot time might be reduced by starting it as early as possible. This can be achieved (if the service file is set up for it, which in most cases it is) by issuing:<br />
<br />
{{bc|# systemctl enable console-kit-daemon.service}}<br />
<br />
This will cause systemd to start console-kit as soon as possible, without causing races with the socket or dbus activation.<br />
<br />
=== Automount ===<br />
The default setup will fsck and mount all filesystems before starting most daemons and services. If you have a large {{ic|/home}} partition, it might be better to allow services that do not depend on {{ic|/home}} to start while {{ic|/home}} is being fsck'ed. This can be achieved by adding the following options to the fstab entry of your {{ic|/home}} partition:<br />
<br />
noauto,x-systemd-automount<br />
<br />
This will fsck and mount {{ic|/home}} when it is first accessed, and the kernel will buffer all file access to {{ic|/home}} until it is ready.<br />
<br />
If you have encrypted filesystems with keyfiles, you can also add the {{ic|noauto}} parameter to the corresponding entries in {{ic|/etc/crypttab}}. systemd will then not open the encrypted device on boot, but instead wait until it is actually accessed and then automatically open it with the specified keyfile before mounting it. This might save a few seconds on boot if you are using an encrypted RAID device for example, because systemd doesn't have to wait for the device to become available. For example:<br />
{{hc|/etc/crypttab|data /dev/md0 /root/key noauto}}<br />
<br />
=== Disabling native mount ===<br />
With v12 or later, you can disable the native mount and fsck facility in {{ic|/etc/systemd/system.conf}}:<br />
MountAuto=no<br />
SwapAuto=no<br />
{{Note|These options are enabled by default.}}<br />
<br />
=== Readahead ===<br />
systemd comes with its own readahead implementation, this should in principle improve boot time. However, depending on your kernel version and the type of your hard drive, your mileage may vary (i.e. it might be slower). To enable, do:<br />
<br />
{{bc|<nowiki># systemctl enable systemd-readahead-collect.service<br />
# systemctl enable systemd-readahead-replay.service</nowiki>}}<br />
<br />
Remember that in order for the readahead to work its magic, you should reboot a couple of times.<br />
<br />
=== User sessions ===<br />
systemd can divide user sessions into cgroups. Add {{ic|session optional pam_systemd.so}} to your relevant {{ic|/etc/pam.d/}} files (e.g., {{ic|login}} for tty logins, {{ic|sshd}} for remote access, {{ic|kde}} for password kdm logins, {{ic|kde-np}} for automatic kdm logins).<br />
<br />
Before:<br />
{{hc|$ systemd-cgls systemd:/system/getty@.service|<br />
systemd:/system/getty@.service:<br />
├ tty5<br />
│ └ 904 /sbin/agetty tty5 38400<br />
├ tty2<br />
│ ├ 13312 /bin/login --<br />
│ └ 15765 -zsh<br />
[…]}}<br />
After:<br />
{{hc|$ systemd-cgls systemd:/user/example/|<br />
systemd:/user/example/:<br />
├ 4<br />
│ ├ 902 /bin/login --<br />
│ └ 16016 -zsh<br />
[…]}}<br />
<br />
Further, you can replace [[ConsoleKit]]'s functionality with systemd. Be sure to do the above, then build polkit from [[ABS]] with systemd enabled, and stuffs like USB automounting will work without consolekit. Compiling dbus from Git is also needed for the DBus at_console policy checks, otherwise you'll have to create /var/run/console/$USER (and delete) manually.<br />
<br />
== See also==<br />
*[http://www.freedesktop.org/wiki/Software/systemd Official Web Site]<br />
*[http://0pointer.de/public/systemd-man/ Manual Pages]<br />
*[http://freedesktop.org/wiki/Software/systemd/Optimizations]<br />
*[http://www.freedesktop.org/wiki/Software/systemd/FrequentlyAskedQuestions FAQ]<br />
*[http://www.freedesktop.org/wiki/Software/systemd/TipsAndTricks Tips And Tricks]<br />
*[http://0pointer.de/public/systemd-ebook-psankar.pdf systemd for Administrators (PDF)]<br />
*[http://bbs.archlinux.org/viewtopic.php?pid=792280 Discussion on the bbs.archlinux.org]<br />
*[http://en.gentoo-wiki.com/wiki/Systemd About systemd in Gentoo Wiki]<br />
*[http://fedoraproject.org/wiki/Systemd About systemd on Fedora Project]<br />
*[http://fedoraproject.org/wiki/How_to_debug_Systemd_problems How to debug Systemd problems]<br />
*[https://docs.google.com/document/pub?id=1IC9yOXj7j6cdLLxWEBAGRL6wl97tFxgjLUEHIX3MSTs Background information about systemd journal]</div>
Jristz
https://wiki.archlinux.org/index.php?title=Systemd&diff=201329
Systemd
2012-05-14T00:34:04Z
<p>Jristz: /* See also */</p>
<hr />
<div>{{Lowercase title}}<br />
[[Category:Daemons and system services]]<br />
[[Category:Boot process]]<br />
[[fr:Systemd]]<br />
{{i18n|Systemd}}<br />
<br />
{{Article summary start}}<br />
{{Article summary text|'''systemd''' is a system and service manager for Linux, compatible with SysV and LSB init scripts. systemd provides aggressive parallelization capabilities, uses socket and [[D-Bus]] activation for starting services, offers on-demand starting of daemons, keeps track of processes using Linux [[cgroups]], supports snapshotting and restoring of the system state, maintains mount and automount points and implements an elaborate transactional dependency-based service control logic. It can work as a drop-in replacement for sysvinit.}}<br />
<br />
{{Article summary heading|Related}}<br />
{{Article summary wiki|Systemd/Services}}<br />
{{Article summary end}}<br />
<br />
See [http://0pointer.de/blog/projects/systemd.html Lennart's blog story] for a longer introduction, the two [http://0pointer.de/blog/projects/systemd-update.html status] [http://0pointer.de/blog/projects/systemd-update-2.html updates] since then, and the [http://0pointer.de/blog/projects/why.html most recent summary]. Also see the [http://en.wikipedia.org/wiki/Systemd Wikipedia article] and the [http://freedesktop.org/wiki/Software/systemd project web page].<br />
<br />
== Installation ==<br />
To try out systemd on Arch you need to:<br />
<br />
* install {{Pkg|systemd}} (and its dependencies) from [extra]<br />
* add {{Ic|1=init=/bin/systemd}} to your kernel cmdline in your bootloader<br />
<br />
:{{Note|1=If you are using GRUB2, kernel parameters are added in {{Ic|/etc/default/grub}} - {{Ic|1=GRUB_CMDLINE_LINUX="..."}}}}<br />
:{{Tip|1=systemd can be installed side-by-side with the regular Arch Linux initscripts, and they can be toggled by adding/removing the {{Ic|1=init=/bin/systemd}} kernel parameter.}}<br />
<br />
* To take advantage of the systemd way of starting services, you might also want the {{Pkg|systemd-arch-units}} package.<br />
<br />
{{Warning|udev and many other pieces of software expect {{ic|/usr}} to be mounted and available at bootup. If your {{Ic|/usr}} is on a separate partition, you will need to make accommodations to mount it from the initramfs and unmount it from a pivoted root on shutdown. See: [http://www.freedesktop.org/wiki/Software/systemd/separate-usr-is-broken freedesktop.org#separate-usr-is-broken]}}<br />
<br />
== Native systemd configuration files ==<br />
=== Add a hostname ===<br />
{{hc|/etc/hostname|myhostname}}<br />
<br />
=== Console and keymap settings ===<br />
The {{ic|/etc/vconsole.conf}} file configures the virtual console, i.e. keyboard mapping and console font.<br />
{{hc|/etc/vconsole.conf|<nowiki><br />
KEYMAP=us<br />
FONT=lat9w-16<br />
FONT_MAP=8859-1_to_uni</nowiki>}}<br />
<br />
=== Locale settings ===<br />
Read {{ic|man locale.conf}} for more options <br />
{{hc|/etc/locale.conf|<nowiki><br />
LANG=en_US.UTF-8<br />
LC_COLLATE=C</nowiki>}}<br />
<br />
=== Configure kernel modules to load during boot ===<br />
systemd uses {{ic|/etc/modules-load.d/}} to configure kernel modules to load during boot in a static list. Each configuration file is named in the style of {{ic|/etc/modules-load.d/<program>.conf}}. The configuration files should simply contain a list of kernel module names to load, separated by newlines. Empty lines and lines whose first non-whitespace character is {{ic|#}} or {{ic|;}} are ignored. Example:<br />
{{hc|/etc/modules-load.d/virtio-net.conf|<nowiki><br />
# Load virtio-net.ko at boot<br />
virtio-net</nowiki>}}<br />
See also [[Modprobe#Options]]<br />
<br />
=== Configure kernel modules blacklist ===<br />
Systemd uses {{ic|/etc/modprobe.d/}} to configure the blacklisting of kernel modules. Each configuration file is named in the style of {{ic|/etc/modprobe.d/<program>.conf}}. Empty lines and lines whose first non-whitespace character is {{ic|#}} or {{ic|;}} are ignored. Example:<br />
{{hc|/etc/modprobe.d/sound.conf|<nowiki><br />
blacklist snd_hda_intel</nowiki>}}<br />
or<br />
{{hc|/etc/modprobe.d/sound.conf|<nowiki><br />
install snd_hda_intel /bin/false</nowiki>}}<br />
See also [[Modprobe#Blacklisting]]<br />
<br />
=== Describe temporary files ===<br />
Systemd-tmpfiles uses the configuration files in {{ic|/etc/tmpfiles.d/}} to describe the creation, cleaning and removal of volatile and temporary files and directories which usually reside in directories such as {{ic|/run}} or {{ic|/tmp}}. Each configuration file is named in the style of {{ic|/etc/tmpfiles.d/<program>.conf}}.<br />
<br />
=== Systemd Journal ===<br />
Since version 38 systemd has an own logging system, the journal.<br />
<br />
By default, running a syslog daemon is no longer required. To read the log, use:<br />
{{bc|# systemd-journalctl}}<br />
The systemd-journal writes to {{ic|/run/systemd/journal}}, meaning logs will poof on reboot. For non-volatile logs, create {{ic|/var/log/journal/}}:<br />
{{bc|# mkdir /var/log/journal/}}<br />
<br />
====Journald in conjunction with a classic syslog daemon====<br />
Compatibility with classic syslog implementations is provided via a<br />
socket {{ic|/run/systemd/journal/syslog}}, to which all messages are forwarded.<br />
To make the syslog daemon work with the journal, it has to bind to this socket instead of {{ic|/dev/log}} ([http://lwn.net/Articles/474968/ official announcement]). For syslog-ng change {{ic|/etc/syslog-ng/syslog-ng.conf}} source section to:<br />
{{bc|<nowiki><br />
source src {<br />
unix-dgram("/run/systemd/journal/syslog");<br />
internal();<br />
file("/proc/kmsg");<br />
};</nowiki>}}<br />
<br />
and enable (or reenable) syslog-ng:<br />
{{bc|# systemctl enable syslog-ng.service}}<br />
<br />
By default, journald is configured to read from {{ic|/proc/kmsg}}, but this will collide with a syslog implementation doing the same ([http://lists.freedesktop.org/archives/systemd-devel/2012-January/004310.html systemd-devel post]). Disable reading {{ic|/proc/kmsg}} by {{ic|systemd-journald}} in {{ic|/etc/systemd/systemd-journald.conf}}:<br />
ImportKernel=no<br />
<br />
=== Network ===<br />
==== Dynamic (DHCP) ====<br />
If you simply want to use DHCP for your ethernet connection, you can use {{ic|dhcpcd@.service}} from the {{Pkg|systemd-arch-units}} package.<br />
To enable DHCP for {{ic|eth0}}, simply use:<br />
# systemctl start dhcpcd@eth0.service<br />
<br />
You can enable the service to automatically start at boot with:<br />
# systemctl enable dhcpcd@.service<br />
Note that this will enable the service for {{ic|eth0}} by default. If you want to use another interface, you have to create the symlink manually, e.g.:<br />
# ln -s '/usr/lib/systemd/system/dhcpcd@.service' '/etc/systemd/system/multi-user.target.wants/dhcpcd@eth1.service'<br />
<br />
==== Other configurations ====<br />
For static, wireless or advanced network configuration like bridging you can use [[netcfg]] or [[NetworkManager]] which both provide systemd service files.<br />
<br />
=== Remote filesystem mounts ===<br />
If you have NFS mounts listed in {{ic|/etc/fstab}} then systemd will attempt to mount them but will typically do so too early (before networking has been configured). To get the timing correct we need to tell systemd explicitly that the mount depends on networking and {{ic|rpc.statd}}. To do this, create the following file:<br />
{{hc|/etc/systemd/system/<mount-unit-name>.mount|<nowiki><br />
[Unit]<br />
Description=<mountpoint><br />
Wants=network.target rpc-statd.service<br />
After=network.target rpc-statd.service <br />
<br />
[Mount]<br />
What=<server>:<share><br />
Where=<mountpoint><br />
Type=nfs<br />
StandardOutput=syslog<br />
StandardError=syslog</nowiki>}}<br />
<br />
In the above:<br />
*{{ic|mount-unit-name}} is the full path to the mountpoint in an escaped format. For example, a mount unit for {{ic|/usr/local}} must be named {{ic|usr-local.mount}}.<br />
*{{ic|mountpoint}} is the local mountpoint<br />
*{{ic|server:share}} specifies the remote filesystem in the same manner as for {{ic|/etc/fstab}}<br />
<br />
See {{ic|systemd.unit(5)}} and {{ic|systemd.mount(5)}} for further details.<br />
<br />
A similar approach will probably be required for other remote filesystem types such as nfs4 and cifs.<br />
<br />
Alternatively, you can mark these entries in {{ic|/etc/fstab}} with the {{ic|1=x-systemd-automount}} and {{ic|1=x-systemd-device-timeout=#}} options (see {{ic|systemd.mount(5)}}). Make sure that if you also include {{ic|defaults}} as a mount option, that you override the implicit {{ic|auto}} with {{ic|noauto}}. This will cause the device to be mounted on first access, similar to [[Autofs]].<br />
<br />
== Using systemd ==<br />
<br />
*{{ic|systemctl}}: used to introspect and control the state of the systemd system and service manager<br />
*{{ic|systemd-cgls}}: recursively shows the contents of the selected Linux control group hierarchy in a tree<br />
*{{ic|systemadm}}: a graphical frontend for the systemd system and service manager that allows introspection and control of systemd (avaiable via the {{AUR|systemd-ui-git}} package from the [[AUR]]).<br />
<br />
View the man pages for more details. <br />
<br />
Listing running services:<br />
<br />
{{bc|$ systemctl}}<br />
<br />
or:<br />
<br />
{{bc|$ systemctl list-units}}<br />
<br />
The available services or units can be seen in {{ic|/usr/lib/systemd/system/}} and {{ic|/etc/systemd/system/}} (the latter takes precedence).<br />
<br />
Activate a service immediately:<br />
<br />
{{bc|# systemctl start <service>}}<br />
<br />
Deactivate a service immediately:<br />
<br />
{{bc|# systemctl stop <service>}}<br />
<br />
Restart a service:<br />
<br />
{{bc|# systemctl restart <service>}}<br />
<br />
Reload the configuration of a service:<br />
<br />
{{bc|# systemctl reload <service>}}<br />
<br />
Show the status of a service, including whether it is running or not:<br />
<br />
{{bc|# systemctl status <service>}}<br />
<br />
Check whether a service is already enabled or not:<br />
<br />
{{bc|# systemctl is-enabled <service>}}<br />
<br />
Enable a service to be started on bootup:<br />
<br />
{{bc|# systemctl enable <service>}}<br />
<br />
Disable a service to not start during bootup:<br />
<br />
{{bc|# systemctl disable <service>}}<br />
<br />
Refer to {{Ic|man systemctl}} for more details. <br />
<br />
Notice that you need to use the full name of a service file. E.g., in order to restart the avahi daemon, issue:<br />
<br />
{{bc|# systemctl restart avahi-daemon.service}}<br />
<br />
Shut down and reboot the system:<br />
<br />
{{bc|# systemctl reboot}}<br />
<br />
Shut down and power-off the system:<br />
<br />
{{bc|# systemctl poweroff}}<br />
<br />
Shut down and halt the system:<br />
<br />
{{bc|# systemctl halt}}<br />
<br />
== Runlevels/targets ==<br />
Runlevels is a legacy concept in systemd. Systemd uses ''targets'' which serve a similar purpose as runlevels but act a little different. Each ''target'' is named instead of numbered and is intended to serve a specific purpose with the possibility of having multiple ones active at the same time. Some ''targets'' are implemented by inheriting all of the services of another ''target'' and adding additional services to it. There are systemd ''target''s that mimic the common SystemVinit runlevels so you can still switch ''target''s using the familiar {{ic|telinit RUNLEVEL}} command. <br />
<br />
=== Get current runlevel/targets ===<br />
The following should be used under systemd instead of {{ic|runlevel}}:<br />
{{bc|1=# systemctl list-units --type=target}}<br />
<br />
=== Create custom target ===<br />
The runlevels that are assigned a specific purpose on vanilla Fedora installs; 0, 1, 3, 5, and 6; have a 1:1 mapping with a specific systemd ''target''. Unfortunately, there is no good way to do the same for the user-defined runlevels like 2 and 4. If you make use of those it is suggested that you make a new named systemd ''target'' as {{ic|/etc/systemd/system/<your target>}} that takes one of the existing runlevels as a base (you can look at {{ic|/usr/lib/systemd/system/graphical.target}} as an example), make a directory {{ic|/etc/systemd/system/<your target>.wants}}, and then symlink the additional services from {{ic|/usr/lib/systemd/system/}} that you wish to enable.<br />
<br />
=== Targets table ===<br />
{| border="1"<br />
!SysV Runlevel!!Systemd Target!!Notes<br />
|-<br />
| 0 || runlevel0.target, poweroff.target || Halt the system.<br />
|-<br />
| 1, s, single || runlevel1.target, rescue.target || Single user mode.<br />
|-<br />
| 2, 4 || runlevel2.target, runlevel4.target, multi-user.target || User-defined/Site-specific runlevels. By default, identical to 3.<br />
|-<br />
| 3 || runlevel3.target, multi-user.target || Multi-user, non-graphical. Users can usually login via multiple consoles or via the network.<br />
|-<br />
| 5 || runlevel5.target, graphical.target || Multi-user, graphical. Usually has all the services of runlevel 3 plus a graphical login.<br />
|-<br />
| 6 || runlevel6.target, reboot.target || Reboot<br />
|-<br />
| emergency || emergency.target || Emergency shell<br />
|-<br />
|}<br />
<br />
=== Change current runlevels ===<br />
In systemd runlevels are exposed via "target units". You can change them like this:<br />
{{bc|# systemctl isolate graphical.target}}<br />
This will only change the current runlevel, and has no effect on the next boot.<br />
<br />
=== Change default runlevel/target to boot into ===<br />
The standard target is {{ic|default.target}}, which is aliased by default to {{ic|graphical.target}} (which roughly corresponds to the old runlevel 5). To change the default target at boot-time, append one of the following kernel parameters to your GRUB kernel line:<br />
* {{ic|1=systemd.unit=multi-user.target}} (which roughly corresponds to the old runlevel 3),<br />
* {{ic|1=systemd.unit=rescue.target}} (which roughly corresponds to the old runlevel 1).<br />
<br />
Alternatively, you may leave the bootloader alone and change {{ic|default.target}}. This can be done using {{ic|systemctl}}:<br />
{{bc|# systemctl enable multi-user.target}}<br />
<br />
The effect of this command is outputted by {{ic|systemctl}}; a symlink to the new default target is made at {{ic|/etc/systemd/system/default.target}}. This works if, and only if:<br />
[Install]<br />
Alias=default.target<br />
is in the target's configuration file. Currently, {{ic|multi-user.target}} and {{ic|graphical.target}} both have it.<br />
<br />
== Running DEs under systemd ==<br />
<br />
=== Using display manager ===<br />
To enable graphical login, run your preferred [[Display Manager]] daemon (e.g. [[KDM]]). At the moment, service files exist for gdm, kdm, slim and xdm.<br />
<br />
{{bc|# systemctl enable kdm.service}}<br />
<br />
This should work out of the box. If not, you might have a {{ic|default.target}} set manually or from a older install:<br />
<br />
{{hc|# ls -l /etc/systemd/system/default.target|/etc/systemd/system/default.target -> /usr/lib/systemd/system/graphical.target}}<br />
<br />
Simply delete the symlink and systemd will use its stock {{ic|default.target}} (i.e. {{ic|graphical.target}}).<br />
<br />
{{bc|# rm /etc/systemd/system/default.target}}<br />
<br />
On KDE start an error message will appear saying {{ic|"console-kit-daemon.unit" could not be found}}. To solve this problem, install {{Pkg|systemd-arch-units}}.<br />
<br />
If {{ic|/etc/locale.conf}} is used for setting the locale, add an entry to {{ic|/etc/environment}}:<br />
{{hc|/etc/environment|<nowiki><br />
LANG=en_US.utf8</nowiki>}}<br />
<br />
=== Using service file ===<br />
If you are only looking for a simple way to start X directly without a display manager, you can create a service file similar to this:<br />
<br />
{{hc|/etc/systemd/system/graphical.target.wants/xinit.service|<nowiki><br />
[Unit]<br />
Description=Direct login to X<br />
Requires=dev-tty7.device<br />
After=dev-tty7.device systemd-user-sessions.service<br />
<br />
[Service]<br />
ExecStart=/bin/su <username> -l -c "/bin/bash --login -c xinit"<br />
<br />
[Install]<br />
WantedBy=graphical.target<br />
</nowiki>}}<br />
<br />
== Arch integration ==<br />
<br />
Integration with Arch's classic configuration is accomplished via the {{Pkg|initscripts-systemd}} package. This is an optional package containing unit files and scripts needed to emulate Arch's initscripts, which can be used to ease the transition from sysVinit to systemd.<br />
<br />
{{ic|/etc/inittab}} is not used at all.<br />
<br />
{{ic|/etc/rc.local}} and {{ic|/etc/rc.local.shutdown}} can be run at startup and shutdown by enabling {{ic|rc-local.service}}.<br />
<br />
{{warning|Usage of this package is not recommended. In particular, {{ic|arch-persistent-settings.service}} and {{ic|arch-daemons.target}} are unsupported as a long-term solution and will be removed in the future. When ever possible, use native systemd configuration files instead.}}<br />
<br />
Most people will not need all (if any) of these units, and they can be easily disabled with:<br />
{{bc|# systemctl disable <unitfile>}}<br />
<br />
The plan is to remove most of the functionality from this package as soon as it is handled elsewhere (mostly in udev/systemd/kernel).<br />
<br />
=== rc.conf ===<br />
Some variables in {{ic|/etc/rc.conf}} are respected by this glue work. For a pure systemd setup it is recommended to use the [[Systemd#Native_systemd_configuration_files|native systemd configuration files]] which will take precedence over {{ic|/etc/rc.conf}}.<br />
<br />
Supported variables:<br />
* LOCALE<br />
* KEYMAP<br />
* CONSOLEFONT<br />
* CONSOLEMAP<br />
* HOSTNAME<br />
* MODULES<br />
* DAEMONS: Ordering and blacklisting is respected, if a native systemd service file by the same name as a daemon exists, it will take precedence, this logic can be disabled by {{ic|systemctl disable arch-daemons.target}}<br />
<br />
Not supported variables and systemd configuration:<br />
* TIMEZONE: Please symlink {{Ic|/etc/localtime}} to your zoneinfo file manually.<br />
* HARDWARECLOCK: Use {{ic|# hwclock --systohc --utc}} to set your hardware clock to utc, localtime is not supported, see [[Systemd#Q: Why does systemd not support the RTC being in localtime?|FAQ]].<br />
* USELVM: use {{ic|lvm.service}} provided by {{Pkg|systemd-arch-units}} instead.<br />
* USECOLOR<br />
<br />
The following is a brief description of the functionality of each of them. Alternative solutions are provided as a migration plan away from the functionality provided by this package.<br />
<br />
==== rc-local.service ====<br />
Runs {{ic|/etc/rc-local}} (resp., {{ic|/etc/rc-local.shutdown}}) on boot (resp., shutdown).<br />
<br />
==== arch-daemons.target ====<br />
Parses the DAEMONS array in {{ic|/etc/rc.conf}} and starts the services. If a native systemd unit exists (by the same name) for a given daemon, this is used; otherwise, the script in {{ic|/etc/rc.d/}} is used to control the unit.<br />
<br />
Alternative: use native unit files from the {{Pkg|systemd-arch-units}} package<br />
<br />
==== arch-persistent-settings.service ====<br />
This is run at shutdown. Its aim is to make sure that any Arch Linux settings are applied on the next boot. In particular:<br />
* Sets the timezone based on {{ic|/etc/rc.conf}}. Alternative: Create {{ic|/etc/localtime}} as a symlink to your timezone file in {{ic|/usr/share/zoneinfo}}.<br />
* Updates module blacklists based on {{ic|/etc/rc.conf}} (see {{ic|/etc/modprobe.d/rc.conf}}). Alternative: Create a differently named copy of this file in {{ic|/etc/modprobe.d/}}.<br />
* Updates list of modules to be loaded based on {{ic|/etc/rc.conf}} (see {{ic|/etc/modules-load.d/rc.conf}}). Alternative: create a differently named copy of this file in {{ic|/etc/modules-load.d/}}.<br />
<br />
== Helping out ==<br />
Currently, systemd is mostly at feature parity with Arch's initscripts. However, a lot more testing is needed. If you would like to help out, you can fork the [https://github.com/falconindy/initscripts-systemd initscripts-systemd] or [http://github.com/falconindy/systemd-arch-units systemd-arch-units] git repos and submit pull requests for your additions.<br />
<br />
If you have any questions, ask in the [https://bbs.archlinux.org/viewtopic.php?id=96316&p=1 thread] in the Arch forums.<br />
<br />
== FAQ ==<br />
For an up-to-date list of known issues, look at the upstream [http://cgit.freedesktop.org/systemd/systemd/tree/TODO TODO].<br />
<br />
{{FAQ<br />
|question=Why are my console fonts ugly?<br />
|answer=If no font is set in {{ic|/etc/vconsole.conf}} (or alternatively {{ic|/etc/rc.conf}}), then a standard font will be used. The standard font is chosen due to it supporting a wide range of character sets. Set your preferred font to fix the issue.}}<br />
<br />
{{FAQ<br />
|question=Why do I get log messages on my console?<br />
|answer=You must set the kernel loglevel yourself. Historically, {{ic|/etc/rc.sysinit}} did this for us and set dmesg loglevel to {{ic|3}}, which was a reasonably quiet loglevel. Either add {{ic|1=loglevel=3}} or {{ic|quiet}} to your kernel cmdline.}}<br />
<br />
{{FAQ<br />
|question=Why does systemd not support the RTC being in localtime?<br />
|answer=In principle, there is nothing stopping you from adding some unit files that will allow the RTC to be in localtime, but there are a few reasons why we have not (and probably will not) implement it by default:<br />
<br />
* The reason for allowing the RTC to be in localtime was to allow dualboot with Windows ([http://blogs.msdn.com/b/oldnewthing/archive/2004/09/02/224672.aspx who uses localtime]). However, for some time now, Windows has been able to deal with the RTC being in UTC by setting the following registry key<br />
:{{bc|HKLM\SYSTEM\CurrentControlSet\Control\TimeZoneInformation\RealTimeIsUniversal}}<br />
:This needs to be a DWORD key with a value of 1.<br />
:{{Warning|On recent systems (Windows 7, Vista SP2) this setting prevents Windows from being able to update the system clock at all, [http://social.msdn.microsoft.com/forums/en-US/tabletandtouch/thread/0b872d8a-69e9-40a6-a71f-45de90c6e243/ and earlier versions do not work correctly when resuming from suspend or hibernate]. In addition, recent systems [http://support.microsoft.com/kb/2687252 may become unresponsive during Daylight Saving Time (DST) changeover if RealTimeIsUniversal is set].}}<br />
<br />
* Dealing with daylight saving time is messy. If the DST changes when your computer is off, your clock will be wrong on next boot ([http://www.cl.cam.ac.uk/~mgk25/mswish/ut-rtc.html there is a lot more to it]).<br />
* Recent kernels set the system time from the RTC directly on boot without using {{ic|hwclock}}, the kernel will always assume that the RTC is in UTC. This means that if the RTC is in localtime, then the system time will first be set up wrongly and then corrected shortly afterwards on every boot. This is possibly the reason for certain weird bugs (time going backwards is rarely a good thing).}}<br />
<br />
{{FAQ<br />
|question=How do I make a custom unit file?<br />
|answer=The unit files in {{ic|/etc/systemd/system/}} take precedence over the ones in {{ic|/usr/lib/systemd/system/}}. To make your own version of a unit (which will not be destroyed by an upgrade), copy the old unit file from {{ic|/usr/lib/}} to {{ic|/etc/}} and make your changes there.}}<br />
<br />
{{FAQ<br />
|question=How do I change the number of gettys running by default?<br />
|answer=To add another getty:<br />
<br />
Simply place another symlink for instantiating another getty in the {{ic|/etc/systemd/system/getty.target.wants/}} directory:<br />
<br />
{{bc|<nowiki># ln -sf /usr/lib/systemd/system/getty@.service /etc/systemd/system/getty.target.wants/getty@tty9.service<br />
# systemctl daemon-reload<br />
# systemctl start getty@tty9.service</nowiki>}}<br />
<br />
To remove a getty:<br />
<br />
Simply remove the getty symlinks you want to get rid of in the {{ic|/etc/systemd/system/getty.target.wants/}} directory:<br />
<br />
{{bc|<nowiki># rm /etc/systemd/system/getty.target.wants/getty@tty5.service /etc/systemd/system/getty.target.wants/getty@tty6.service<br />
# systemctl daemon-reload<br />
# systemctl stop getty@tty5.service getty@tty6.service</nowiki>}}<br />
<br />
systemd does not use the {{ic|/etc/inittab}} file.<br />
<br />
{{Note|As of systemd 30, only 1 getty will be launched by default. If you switch to another tty, a getty will be launched there (socket-activation style). You can still force additional agetty processes to start using the above methods.}}}}<br />
<br />
{{FAQ<br />
|question=How do I get more verbose output during boot?<br />
|answer=By default systemd does not give much (if any) output during boot. Firstly, lots of output from services running in parallel would be very messy, and secondly, boot is supposed to be so fast that status messages would slow it down.<br />
<br />
If you append the kernel parameter {{ic|verbose}} to your kernel line in GRUB, you will get lots of output during boot. However, this is only really meant as a debugging tool as it is not very useful during normal use. Any messages are logged to the system log and if you want to find out about the status of your system:<br />
{{bc|$ systemctl}}<br />
is your friend.}}<br />
<br />
{{FAQ<br />
|question=What kernel options do I need to enable in my kernel in case I do not use the official Arch kernel?<br />
|answer=Kernels prior to 2.6.39 are unsupported.<br />
<br />
This is a partial list of required/recommended options, there might be more:<br />
<br />
{{bc|<nowiki><br />
CONFIG_AUDIT=y (recommended)<br />
CONFIG_AUDIT_LOGINUID_IMMUTABLE=y (not required, may break sysvinit compat)<br />
CONFIG_CGROUPS=y<br />
CONFIG_IPV6=[y|m] (highly recommended)<br />
CONFIG_UEVENT_HELPER_PATH="" (if you don't use an initramfs)<br />
CONFIG_DEVTMPFS=y<br />
CONFIG_DEVTMPFS_MOUNT=y (recommended, if you don't use an initramfs)<br />
CONFIG_RTC_DRV_CMOS=y (highly recommended)<br />
CONFIG_FANOTIFY=y (required for readahead)<br />
CONFIG_AUTOFS4_FS=[y|m]<br />
CONFIG_TMPFS_POSIX_ACL=y (recommended, if you want to use pam_systemd.so)<br />
</nowiki>}}}}<br />
<br />
{{FAQ<br />
|question=What other units does a unit depend on?<br />
|answer=For example, if you want to figure out which services a target like {{ic|multi-user.target}} pulls in, use something like this: <br />
{{hc|$ systemctl show -p "Wants" multi-user.target|2=Wants=rc-local.service avahi-daemon.service rpcbind.service NetworkManager.service acpid.service dbus.service atd.service crond.service auditd.service ntpd.service udisks.service bluetooth.service cups.service wpa_supplicant.service getty.target modem-manager.service portreserve.service abrtd.service yum-updatesd.service upowerd.service test-first.service pcscd.service rsyslog.service haldaemon.service remote-fs.target plymouth-quit.service systemd-update-utmp-runlevel.service sendmail.service lvm2-monitor.service cpuspeed.service udev-post.service mdmonitor.service iscsid.service livesys.service livesys-late.service irqbalance.service iscsi.service netfs.service}}<br />
<br />
Instead of {{ic|Wants}} you might also try {{ic|WantedBy}}, {{ic|Requires}}, {{ic|RequiredBy}}, {{ic|Conflicts}}, {{ic|ConflictedBy}}, {{ic|Before}}, {{ic|After}} for the respective types of dependencies and their inverse.}}<br />
<br />
== Optimization ==<br />
=== Shell Shortcuts ===<br />
Systemd daemon management requires a bit more text entry to accomplish tasks such as start, stopped, enabling, checking status, etc. The following functions can be added one's {{ic|~/.bashrc}} to help streamline interactions with systemd and to improve the overall experience.<br />
<br />
<pre>if [[ ! -e /sys/fs/cgroup/systemd ]]; then # not using systemd<br />
start() {<br />
sudo rc.d start $1<br />
}<br />
<br />
restart() {<br />
sudo rc.d restart $1<br />
}<br />
<br />
stop() {<br />
sudo rc.d stop $1<br />
}<br />
else<br />
start() {<br />
sudo systemctl start $1.service<br />
}<br />
<br />
restart() {<br />
sudo systemctl restart $1.service<br />
}<br />
<br />
stop() {<br />
sudo systemctl stop $1.service<br />
}<br />
<br />
enable() {<br />
sudo systemctl enable $1.service<br />
}<br />
<br />
status() {<br />
sudo systemctl status $1.service<br />
}<br />
<br />
disable() {<br />
sudo systemctl disable $1.service<br />
}<br />
fi<br />
</pre><br />
<br />
=== Less output ===<br />
Change {{ic|verbose}} to {{ic|quiet}} on the kernel line in GRUB. For some systems, particularly those with an SSD, the slow performance of the TTY is actually a bottleneck, and so less output means faster booting.<br />
<br />
=== Early start ===<br />
One central feature of systemd is dbus and socket activation, this causes services to be started when they are first accessed, and is generally a good thing. However, if you know that a service (like console-kit) will always be started during boot, then the overall boot time might be reduced by starting it as early as possible. This can be achieved (if the service file is set up for it, which in most cases it is) by issuing:<br />
<br />
{{bc|# systemctl enable console-kit-daemon.service}}<br />
<br />
This will cause systemd to start console-kit as soon as possible, without causing races with the socket or dbus activation.<br />
<br />
=== Automount ===<br />
The default setup will fsck and mount all filesystems before starting most daemons and services. If you have a large {{ic|/home}} partition, it might be better to allow services that do not depend on {{ic|/home}} to start while {{ic|/home}} is being fsck'ed. This can be achieved by adding the following options to the fstab entry of your {{ic|/home}} partition:<br />
<br />
noauto,x-systemd-automount<br />
<br />
This will fsck and mount {{ic|/home}} when it is first accessed, and the kernel will buffer all file access to {{ic|/home}} until it is ready.<br />
<br />
If you have encrypted filesystems with keyfiles, you can also add the {{ic|noauto}} parameter to the corresponding entries in {{ic|/etc/crypttab}}. systemd will then not open the encrypted device on boot, but instead wait until it is actually accessed and then automatically open it with the specified keyfile before mounting it. This might save a few seconds on boot if you are using an encrypted RAID device for example, because systemd doesn't have to wait for the device to become available. For example:<br />
{{hc|/etc/crypttab|data /dev/md0 /root/key noauto}}<br />
<br />
=== Disabling native mount ===<br />
With v12 or later, you can disable the native mount and fsck facility in {{ic|/etc/systemd/system.conf}}:<br />
MountAuto=no<br />
SwapAuto=no<br />
{{Note|These options are enabled by default.}}<br />
<br />
=== Readahead ===<br />
systemd comes with its own readahead implementation, this should in principle improve boot time. However, depending on your kernel version and the type of your hard drive, your mileage may vary (i.e. it might be slower). To enable, do:<br />
<br />
{{bc|<nowiki># systemctl enable systemd-readahead-collect.service<br />
# systemctl enable systemd-readahead-replay.service</nowiki>}}<br />
<br />
Remember that in order for the readahead to work its magic, you should reboot a couple of times.<br />
<br />
=== User sessions ===<br />
systemd can divide user sessions into cgroups. Add {{ic|session optional pam_systemd.so}} to your relevant {{ic|/etc/pam.d/}} files (e.g., {{ic|login}} for tty logins, {{ic|sshd}} for remote access, {{ic|kde}} for password kdm logins, {{ic|kde-np}} for automatic kdm logins).<br />
<br />
Before:<br />
{{hc|$ systemd-cgls systemd:/system/getty@.service|<br />
systemd:/system/getty@.service:<br />
├ tty5<br />
│ └ 904 /sbin/agetty tty5 38400<br />
├ tty2<br />
│ ├ 13312 /bin/login --<br />
│ └ 15765 -zsh<br />
[…]}}<br />
After:<br />
{{hc|$ systemd-cgls systemd:/user/example/|<br />
systemd:/user/example/:<br />
├ 4<br />
│ ├ 902 /bin/login --<br />
│ └ 16016 -zsh<br />
[…]}}<br />
<br />
Further, you can replace [[ConsoleKit]]'s functionality with systemd. Be sure to do the above, then build polkit from [[ABS]] with systemd enabled, and stuffs like USB automounting will work without consolekit. Compiling dbus from Git is also needed for the DBus at_console policy checks, otherwise you'll have to create /var/run/console/$USER (and delete) manually.<br />
<br />
== See also==<br />
*[http://www.freedesktop.org/wiki/Software/systemd Official Web Site]<br />
*[http://0pointer.de/public/systemd-man/ Manual Pages]<br />
*[http://www.freedesktop.org/wiki/Software/systemd/FrequentlyAskedQuestions FAQ]<br />
*[http://www.freedesktop.org/wiki/Software/systemd/TipsAndTricks Tips And Tricks]<br />
*[http://0pointer.de/public/systemd-ebook-psankar.pdf systemd for Administrators (PDF)]<br />
*[http://bbs.archlinux.org/viewtopic.php?pid=792280 Discussion on the bbs.archlinux.org]<br />
*[http://en.gentoo-wiki.com/wiki/Systemd About systemd in Gentoo Wiki]<br />
*[http://fedoraproject.org/wiki/Systemd About systemd on Fedora Project]<br />
*[http://fedoraproject.org/wiki/How_to_debug_Systemd_problems How to debug Systemd problems]<br />
*[https://docs.google.com/document/pub?id=1IC9yOXj7j6cdLLxWEBAGRL6wl97tFxgjLUEHIX3MSTs Background information about systemd journal]<br />
*[http://freedesktop.org/wiki/Software/systemd/Optimizations]</div>
Jristz
https://wiki.archlinux.org/index.php?title=LXDM&diff=199619
LXDM
2012-04-29T03:58:15Z
<p>Jristz: /* Adding alternative X sessions with .desktop files */</p>
<hr />
<div>[[Category:Display managers]]<br />
{{i18n|LXDM}}<br />
<br />
From [http://wiki.lxde.org/en/LXDM LXDM - LXDE Display Manager]:<br />
<br />
:''LXDM is the lightweight display manager aimed to replace gdm in LXDE distros. The UI is implemented with GTK+. It is stil in early stages of development.''<br />
<br />
==Installation==<br />
<br />
[[pacman|Install]] the {{pkg|lxdm}} package which is available in the [[Official Repositories|official repositories]].<br />
<br />
To make the graphical login the default method of logging into the system, edit your {{ic|/etc/inittab}} file (recommended) by adding or uncommenting this line: <br />
{{bc|x:5:respawn:/usr/sbin/lxdm >& /dev/null}}<br />
Alternatively you can add {{ic|lxdm}} to your list of daemons in {{ic|/etc/rc.conf}}. These procedures are detailed on the [[Display Manager]] page.<br />
<br />
==Configuration==<br />
{{warning|1=The language select control in '''lxdm.conf''' is sometimes required. Set '''lang=1''' or LXDM can potentially enter a boot loop and fail to load your session.}}<br />
The configuration files for LXDM are all located in {{ic|/etc/lxdm}}. The main configuration file is {{ic|lxdm.conf}}, and is well documented in its comments. Another file, {{ic|Xsession}}, is the systemwide x session configuration file and should generally not be edited. The other files in this folder are all bash scripts, which are run when certain events happen in LXDM.<br />
<br />
These are:<br />
# {{ic|LoginReady}}: Is executed with root priviledges when LXDM is ready to show the login window.<br />
# {{ic|PreLogin}}: Is run as root before logging a user in.<br />
# {{ic|PostLogin}}: Is run as the logged-in user right after they have logged in.<br />
# {{ic|PostLogout}}: Is run as the logged-in user right after they have logged out.<br />
# {{ic|PreReboot}}: Is run as root before rebooting with LXDM.<br />
# {{ic|PreShutdown}}: Is run as root before poweroff with LXDM.<br />
<br />
===Autologin===<br />
If you want to log in to one account automatically, without providing a password, find the line in {{ic|/etc/lxdm/lxdm.conf}} that looks like this:<br />
#autologin=username<br />
Uncomment it, then substitute your own username instead of "username".<br />
<br />
This will cause LXDM to automatically log you in to the specified account when it first starts up. However, if you were to log out of that account, you would have to enter its password to log back into it; and if the password was empty, you would find yourself unable to log into the account. To make it so that you can manually log into the account without entering a password, first delete the password:<br />
<br />
$ passwd -d USERNAME<br />
<br />
Then, edit the PAM file for LXDM, which is {{ic|/etc/pam.d/lxdm}}. The files in this directory describe how users are authenticated by the various installed programs that need to do some sort of authentication. Change the line that says<br />
<br />
auth required pam_unix.so<br />
<br />
to this:<br />
<br />
auth required pam_unix.so nullok<br />
<br />
This will tell the pam_unix authentication module that blank passwords are to be accepted. After making this change, LXDM will let you log into accounts with blank passwords.<br />
<br />
===Default background color===<br />
Useful if you have a theme such as {{aur|archlinux-lxdm-theme}} from the AUR. All you have to do to set a background is add the following to the configuration file.<br />
<br />
bg=#deadbeaf<br />
<br />
===Default session===<br />
If you want to change the default session or DE for LXDM to run instead of the default LXDE. Edit {{ic|/etc/lxdm/lxdm.conf}} and change the line:<br />
<br />
{{bc|session<nowiki>=</nowiki>/usr/bin/startlxde}}<br />
<br />
to whatever session or DE you want as default. Example to use Xfce as your default:<br />
<br />
{{bc|session<nowiki>=</nowiki>/usr/bin/startxfce4}}<br />
<br />
This is useful if your theme has no visible session selection box or you have trouble using autologin.<br />
<br />
===Expected Logout Behavior===<br />
What might be slightly surprising with LXDM is that, by default, it does not clear the last user's desktop background or kill the user's processes when that user logs out. If you desire this behaviour, you can edit {{ic|/etc/lxdm/PostLogout}} like this:<br />
<br />
#!/bin/sh<br />
<br />
# Kills all your processes when you log out.<br />
killall --user $USER -TERM<br />
<br />
# Set's the desktop background to solid black. Useful if you have multiple monitors.<br />
xsetroot -solid black<br />
<br />
{{note|This will kill daemons such as tmux, urxvtd, etc.}}<br />
<br />
=== Unlocking Keyrings upon Login===<br />
<br />
When using a key manager such as gnome-keyring to manage passwords for ssh keys, {{ic|/etc/pam.d/lxde}} should be adjusted to allow users to unlock keyrings upon login if desired. The following is an functional configuration:<br />
<br />
#%PAM-1.0<br />
auth requisite pam_nologin.so<br />
auth required pam_env.so<br />
auth required pam_unix.so<br />
auth optional pam_gnome_keyring.so<br />
account required pam_unix.so<br />
session required pam_limits.so<br />
session required pam_unix.so<br />
session optional pam_gnome_keyring.so auto_start<br />
password required pam_unix.so<br />
<br />
=== Adding alternative X sessions with .desktop files ===<br />
<br />
If additional Window Managers, Desktop Environments or X sessions are required and are not provided by their respective installation, you'll need to add custom {{ic|.desktop}} files to {{ic|/usr/share/xsessions/}} for LXDM to recognise them.<br />
{{note|LXDM will only look for {{ic|[Desktop Entry]}}, {{ic|Name}} and {{ic|Exec}} within your {{ic|.desktop}} file.}}<br />
Example:<br />
[Desktop Entry]<br />
Name=Subtle<br />
Exec=subtle<br />
LXDM will launch this {{ic|.desktop}} file using the following command: {{ic|ck-launch-session subtle}} (if {{ic|/etc/Xsessions}} is unaltered.)<br />
<br />
=== Adding Keyboard to the display ===<br />
First eddit /etc/lxdm/lxdm.conf and change<br />
keyboard=0<br />
to<br />
keyboard=1<br />
this abilitate the keyboard selection in the display manager, but by default is blank<br />
then you need to...</div>
Jristz
https://wiki.archlinux.org/index.php?title=LightDM_(Espa%C3%B1ol)&diff=199618
LightDM (Español)
2012-04-29T03:51:28Z
<p>Jristz: </p>
<hr />
<div>[[Category:Display Managers (Español)]]<br />
{{i18n|LightDM}}<br />
{{Article summary start}}<br />
{{Article summary text|Provee información acerca del LightDM.}}<br />
{{Article summary heading|Related}}<br />
{{Article summary wiki|Display Manager}}<br />
{{Article summary end}}<br />
[http://www.freedesktop.org/wiki/Software/LightDM Lightdm] LighDM es un gestor de sección inter-escritorio que aspira a ser el estándar para el sistema de ventanas X11 y para [[Wayland]].<br />
= Instalación =<br />
Lightdm aún no es oficialmente soportado pero existe un paquete en AUR tanto para la rama estable como la bazaar: [https://aur.archlinux.org/packages.php?ID=40708 AUR]<br />
puede ser instalado con su gestor de paquetes de AUR preferido, ejemplo:<br />
<br />
# packer -S lightdm # para la rama estable<br />
# yaourt -S lightdm-bzr # para la rama bazaar<br />
<br />
== Habilitar Lightdm ==<br />
Lightdm puede ser cargado al inicio de sección utilizando los Demonios ubicados en {{ic|rc.conf}} o modificando el {{ic|inittab}}. vaya a [[Display Manager]] para más instrucciones.<br />
<br />
si se utiliza inittab<br />
/etc/inittab<br />
x:5:respawn:/usr/sbin/lightdm >/dev/null 2>&1<br />
<br />
Nota: El método de 'inittab' es el mas efectivo y recomendado para usar lighdm y sus greeters gráficos.<br />
<br />
para lanzarlo por Daemo, basta con agregar ligtdm al array despues de dbus y su gestor de red<br />
/etc/rc.conf<br />
DAEMONS=(...dbus network !networkmanager !wicd lightdm...)<br />
<br />
Para sistemas que usen systemd, Lightdm ya cuenta con un archivo de servicio systemd, Inicielo con '''systemctl start lightdm.service''' o habilitelo al inicio con '''systemctl enable lightdm.service''' .<br />
<br />
= Configuración =<br />
En caso de necesitarla, existe el archivo que está bien documentado y que contiene las opciones del LightDM, este está ubicado en: <br />
/etc/lightdm.conf<br />
<br />
== Cambiando la imagen o color de fondo ==<br />
Usuarios que deseen cambiar el color o fondo del greeter de lightdm modifiquen '''/etc/lightdm/lightdm-gtk-greeter.conf''' en lo que respecta a la variable referente al fondo.<br />
<br />
background=/usr/share/pixmaps/black_and_white_photography-wallpaper-1920x1080.jpg<br />
<br />
Note: Es recomendable colocar el wallpaper o fondo en /usr/share/pixmaps en formato .png .jpg o .jpeg dado que lightdm deve tener acceso al archivo en cualquier instante y por cualquier usuario, ademas de que esos son los formatos que por ahora lee.<br />
<br />
Usuarios que deseen tener un color plano de fondo usen codigo exadecimal.<br />
background=#000000<br />
<br />
== cambiando íconos ==<br />
Usuarios que deceen cambiar el icono de Computador en el login deven seguir 3 pasos:<br />
<br />
Copia la imagen a /usr/share/icons/hicolor/64x64/devices , se obvia que deve ser de 64x64.<br />
Ejecute gtk-update-icon-cache /usr/share/icons/hicolor<br />
Edite /usr/share/lightdm-gtk-greeter/greeter.ui<br />
Busca 'image1' y edita la 'propiedad' xml del archivo para apuntar ala imagen deceada (sin la extencion, lightdm la obvia), por defecto 'computer'.<br />
<br />
Un buen lugar para encontrar iconos asi es el packete [archlinux-artwork] en extra, este posee iconos varios en formato 64x64.<br />
Para copiarlos siga estas intrucciones:<br />
<br />
# find /usr/share/archlinux/icons -name "*64*" -exec cp {} /usr/share/icons/hicolor/64x64/devices \;<br />
Luego de copiados los iconos puede si así lo decea remover el paquete.<br />
<br />
== Habilitando el autologin ==<br />
Edite /etc/lightdm/lightdm.conf y cambielo por algo como esto:<br />
<br />
[SeatDefaults]<br />
autologin-user=su_usuario<br />
autologin-user-timeout=0<br />
pam-service=lightdm-autologin<br />
NumLock ON<br />
itale numlockx y modifique /etc/lightdm/lightdm.conf ara agrear lo sigiente:<br />
<br />
greeter-setup-script=/usr/bin/numlockx on</div>
Jristz
https://wiki.archlinux.org/index.php?title=LightDM_(Espa%C3%B1ol)&diff=199617
LightDM (Español)
2012-04-29T03:50:04Z
<p>Jristz: /* Habilitando el autologin */</p>
<hr />
<div>[[Category:Display Managers (Español)]]<br />
{{i18n|LightDM}}<br />
{{out of date}}<br />
{{Article summary start}}<br />
{{Article summary text|Provee información acerca del LightDM.}}<br />
{{Article summary heading|Related}}<br />
{{Article summary wiki|Display Manager}}<br />
{{Article summary end}}<br />
[http://www.freedesktop.org/wiki/Software/LightDM Lightdm] LighDM es un gestor de sección inter-escritorio que aspira a ser el estándar para el sistema de ventanas X11 y para [[Wayland]].<br />
= Instalación =<br />
Lightdm aún no es oficialmente soportado pero existe un paquete en AUR tanto para la rama estable como la bazaar: [https://aur.archlinux.org/packages.php?ID=40708 AUR]<br />
puede ser instalado con su gestor de paquetes de AUR preferido, ejemplo:<br />
<br />
# packer -S lightdm # para la rama estable<br />
# yaourt -S lightdm-bzr # para la rama bazaar<br />
<br />
== Habilitar Lightdm ==<br />
Lightdm puede ser cargado al inicio de sección utilizando los Demonios ubicados en {{ic|rc.conf}} o modificando el {{ic|inittab}}. vaya a [[Display Manager]] para más instrucciones.<br />
<br />
si se utiliza inittab<br />
/etc/inittab<br />
x:5:respawn:/usr/sbin/lightdm >/dev/null 2>&1<br />
<br />
Nota: El método de 'inittab' es el mas efectivo y recomendado para usar lighdm y sus greeters gráficos.<br />
<br />
para lanzarlo por Daemo, basta con agregar ligtdm al array despues de dbus y su gestor de red<br />
/etc/rc.conf<br />
DAEMONS=(...dbus network !networkmanager !wicd lightdm...)<br />
<br />
Para sistemas que usen systemd, Lightdm ya cuenta con un archivo de servicio systemd, Inicielo con '''systemctl start lightdm.service''' o habilitelo al inicio con '''systemctl enable lightdm.service''' .<br />
<br />
= Configuración =<br />
En caso de necesitarla, existe el archivo que está bien documentado y que contiene las opciones del LightDM, este está ubicado en: <br />
/etc/lightdm.conf<br />
<br />
== Cambiando la imagen o color de fondo ==<br />
Usuarios que deseen cambiar el color o fondo del greeter de lightdm modifiquen '''/etc/lightdm/lightdm-gtk-greeter.conf''' en lo que respecta a la variable referente al fondo.<br />
<br />
background=/usr/share/pixmaps/black_and_white_photography-wallpaper-1920x1080.jpg<br />
<br />
Note: Es recomendable colocar el wallpaper o fondo en /usr/share/pixmaps en formato .png .jpg o .jpeg dado que lightdm deve tener acceso al archivo en cualquier instante y por cualquier usuario, ademas de que esos son los formatos que por ahora lee.<br />
<br />
Usuarios que deseen tener un color plano de fondo usen codigo exadecimal.<br />
background=#000000<br />
<br />
== cambiando íconos ==<br />
Usuarios que deceen cambiar el icono de Computador en el login deven seguir 3 pasos:<br />
<br />
Copia la imagen a /usr/share/icons/hicolor/64x64/devices , se obvia que deve ser de 64x64.<br />
Ejecute gtk-update-icon-cache /usr/share/icons/hicolor<br />
Edite /usr/share/lightdm-gtk-greeter/greeter.ui<br />
Busca 'image1' y edita la 'propiedad' xml del archivo para apuntar ala imagen deceada (sin la extencion, lightdm la obvia), por defecto 'computer'.<br />
<br />
Un buen lugar para encontrar iconos asi es el packete [archlinux-artwork] en extra, este posee iconos varios en formato 64x64.<br />
Para copiarlos siga estas intrucciones:<br />
<br />
# find /usr/share/archlinux/icons -name "*64*" -exec cp {} /usr/share/icons/hicolor/64x64/devices \;<br />
Luego de copiados los iconos puede si así lo decea remover el paquete.<br />
<br />
== Habilitando el autologin ==<br />
Edite /etc/lightdm/lightdm.conf y cambielo por algo como esto:<br />
<br />
[SeatDefaults]<br />
autologin-user=su_usuario<br />
autologin-user-timeout=0<br />
pam-service=lightdm-autologin<br />
NumLock ON<br />
itale numlockx y modifique /etc/lightdm/lightdm.conf ara agrear lo sigiente:<br />
<br />
greeter-setup-script=/usr/bin/numlockx on</div>
Jristz
https://wiki.archlinux.org/index.php?title=LightDM_(Espa%C3%B1ol)&diff=199616
LightDM (Español)
2012-04-29T03:49:49Z
<p>Jristz: /* cambiando íconos */</p>
<hr />
<div>[[Category:Display Managers (Español)]]<br />
{{i18n|LightDM}}<br />
{{out of date}}<br />
{{Article summary start}}<br />
{{Article summary text|Provee información acerca del LightDM.}}<br />
{{Article summary heading|Related}}<br />
{{Article summary wiki|Display Manager}}<br />
{{Article summary end}}<br />
[http://www.freedesktop.org/wiki/Software/LightDM Lightdm] LighDM es un gestor de sección inter-escritorio que aspira a ser el estándar para el sistema de ventanas X11 y para [[Wayland]].<br />
= Instalación =<br />
Lightdm aún no es oficialmente soportado pero existe un paquete en AUR tanto para la rama estable como la bazaar: [https://aur.archlinux.org/packages.php?ID=40708 AUR]<br />
puede ser instalado con su gestor de paquetes de AUR preferido, ejemplo:<br />
<br />
# packer -S lightdm # para la rama estable<br />
# yaourt -S lightdm-bzr # para la rama bazaar<br />
<br />
== Habilitar Lightdm ==<br />
Lightdm puede ser cargado al inicio de sección utilizando los Demonios ubicados en {{ic|rc.conf}} o modificando el {{ic|inittab}}. vaya a [[Display Manager]] para más instrucciones.<br />
<br />
si se utiliza inittab<br />
/etc/inittab<br />
x:5:respawn:/usr/sbin/lightdm >/dev/null 2>&1<br />
<br />
Nota: El método de 'inittab' es el mas efectivo y recomendado para usar lighdm y sus greeters gráficos.<br />
<br />
para lanzarlo por Daemo, basta con agregar ligtdm al array despues de dbus y su gestor de red<br />
/etc/rc.conf<br />
DAEMONS=(...dbus network !networkmanager !wicd lightdm...)<br />
<br />
Para sistemas que usen systemd, Lightdm ya cuenta con un archivo de servicio systemd, Inicielo con '''systemctl start lightdm.service''' o habilitelo al inicio con '''systemctl enable lightdm.service''' .<br />
<br />
= Configuración =<br />
En caso de necesitarla, existe el archivo que está bien documentado y que contiene las opciones del LightDM, este está ubicado en: <br />
/etc/lightdm.conf<br />
<br />
== Cambiando la imagen o color de fondo ==<br />
Usuarios que deseen cambiar el color o fondo del greeter de lightdm modifiquen '''/etc/lightdm/lightdm-gtk-greeter.conf''' en lo que respecta a la variable referente al fondo.<br />
<br />
background=/usr/share/pixmaps/black_and_white_photography-wallpaper-1920x1080.jpg<br />
<br />
Note: Es recomendable colocar el wallpaper o fondo en /usr/share/pixmaps en formato .png .jpg o .jpeg dado que lightdm deve tener acceso al archivo en cualquier instante y por cualquier usuario, ademas de que esos son los formatos que por ahora lee.<br />
<br />
Usuarios que deseen tener un color plano de fondo usen codigo exadecimal.<br />
background=#000000<br />
<br />
== cambiando íconos ==<br />
Usuarios que deceen cambiar el icono de Computador en el login deven seguir 3 pasos:<br />
<br />
Copia la imagen a /usr/share/icons/hicolor/64x64/devices , se obvia que deve ser de 64x64.<br />
Ejecute gtk-update-icon-cache /usr/share/icons/hicolor<br />
Edite /usr/share/lightdm-gtk-greeter/greeter.ui<br />
Busca 'image1' y edita la 'propiedad' xml del archivo para apuntar ala imagen deceada (sin la extencion, lightdm la obvia), por defecto 'computer'.<br />
<br />
Un buen lugar para encontrar iconos asi es el packete [archlinux-artwork] en extra, este posee iconos varios en formato 64x64.<br />
Para copiarlos siga estas intrucciones:<br />
<br />
# find /usr/share/archlinux/icons -name "*64*" -exec cp {} /usr/share/icons/hicolor/64x64/devices \;<br />
Luego de copiados los iconos puede si así lo decea remover el paquete.<br />
<br />
= Habilitando el autologin =<br />
Edite /etc/lightdm/lightdm.conf y cambielo por algo como esto:<br />
<br />
[SeatDefaults]<br />
autologin-user=su_usuario<br />
autologin-user-timeout=0<br />
pam-service=lightdm-autologin<br />
NumLock ON<br />
itale numlockx y modifique /etc/lightdm/lightdm.conf ara agrear lo sigiente:<br />
<br />
greeter-setup-script=/usr/bin/numlockx on</div>
Jristz
https://wiki.archlinux.org/index.php?title=LightDM_(Espa%C3%B1ol)&diff=199615
LightDM (Español)
2012-04-29T03:49:13Z
<p>Jristz: /* Cambiando la imagen o color de fondo */</p>
<hr />
<div>[[Category:Display Managers (Español)]]<br />
{{i18n|LightDM}}<br />
{{out of date}}<br />
{{Article summary start}}<br />
{{Article summary text|Provee información acerca del LightDM.}}<br />
{{Article summary heading|Related}}<br />
{{Article summary wiki|Display Manager}}<br />
{{Article summary end}}<br />
[http://www.freedesktop.org/wiki/Software/LightDM Lightdm] LighDM es un gestor de sección inter-escritorio que aspira a ser el estándar para el sistema de ventanas X11 y para [[Wayland]].<br />
= Instalación =<br />
Lightdm aún no es oficialmente soportado pero existe un paquete en AUR tanto para la rama estable como la bazaar: [https://aur.archlinux.org/packages.php?ID=40708 AUR]<br />
puede ser instalado con su gestor de paquetes de AUR preferido, ejemplo:<br />
<br />
# packer -S lightdm # para la rama estable<br />
# yaourt -S lightdm-bzr # para la rama bazaar<br />
<br />
== Habilitar Lightdm ==<br />
Lightdm puede ser cargado al inicio de sección utilizando los Demonios ubicados en {{ic|rc.conf}} o modificando el {{ic|inittab}}. vaya a [[Display Manager]] para más instrucciones.<br />
<br />
si se utiliza inittab<br />
/etc/inittab<br />
x:5:respawn:/usr/sbin/lightdm >/dev/null 2>&1<br />
<br />
Nota: El método de 'inittab' es el mas efectivo y recomendado para usar lighdm y sus greeters gráficos.<br />
<br />
para lanzarlo por Daemo, basta con agregar ligtdm al array despues de dbus y su gestor de red<br />
/etc/rc.conf<br />
DAEMONS=(...dbus network !networkmanager !wicd lightdm...)<br />
<br />
Para sistemas que usen systemd, Lightdm ya cuenta con un archivo de servicio systemd, Inicielo con '''systemctl start lightdm.service''' o habilitelo al inicio con '''systemctl enable lightdm.service''' .<br />
<br />
= Configuración =<br />
En caso de necesitarla, existe el archivo que está bien documentado y que contiene las opciones del LightDM, este está ubicado en: <br />
/etc/lightdm.conf<br />
<br />
== Cambiando la imagen o color de fondo ==<br />
Usuarios que deseen cambiar el color o fondo del greeter de lightdm modifiquen '''/etc/lightdm/lightdm-gtk-greeter.conf''' en lo que respecta a la variable referente al fondo.<br />
<br />
background=/usr/share/pixmaps/black_and_white_photography-wallpaper-1920x1080.jpg<br />
<br />
Note: Es recomendable colocar el wallpaper o fondo en /usr/share/pixmaps en formato .png .jpg o .jpeg dado que lightdm deve tener acceso al archivo en cualquier instante y por cualquier usuario, ademas de que esos son los formatos que por ahora lee.<br />
<br />
Usuarios que deseen tener un color plano de fondo usen codigo exadecimal.<br />
background=#000000<br />
<br />
= cambiando íconos =<br />
Usuarios que deceen cambiar el icono de Computador en el login deven seguir 3 pasos:<br />
<br />
Copia la imagen a /usr/share/icons/hicolor/64x64/devices , se obvia que deve ser de 64x64.<br />
Ejecute gtk-update-icon-cache /usr/share/icons/hicolor<br />
Edite /usr/share/lightdm-gtk-greeter/greeter.ui<br />
Busca 'image1' y edita la 'propiedad' xml del archivo para apuntar ala imagen deceada (sin la extencion, lightdm la obvia), por defecto 'computer'.<br />
<br />
Un buen lugar para encontrar iconos asi es el packete [archlinux-artwork] en extra, este posee iconos varios en formato 64x64.<br />
Para copiarlos siga estas intrucciones:<br />
<br />
# find /usr/share/archlinux/icons -name "*64*" -exec cp {} /usr/share/icons/hicolor/64x64/devices \;<br />
Luego de copiados los iconos puede si así lo decea remover el paquete.<br />
<br />
= Habilitando el autologin =<br />
Edite /etc/lightdm/lightdm.conf y cambielo por algo como esto:<br />
<br />
[SeatDefaults]<br />
autologin-user=su_usuario<br />
autologin-user-timeout=0<br />
pam-service=lightdm-autologin<br />
NumLock ON<br />
itale numlockx y modifique /etc/lightdm/lightdm.conf ara agrear lo sigiente:<br />
<br />
greeter-setup-script=/usr/bin/numlockx on</div>
Jristz