https://wiki.archlinux.org/api.php?action=feedcontributions&user=NeedsCoffee&feedformat=atomArchWiki - User contributions [en]2024-03-29T07:45:02ZUser contributionsMediaWiki 1.41.0https://wiki.archlinux.org/index.php?title=Grafana&diff=565833Grafana2019-02-04T15:11:05Z<p>NeedsCoffee: /* See also */ Official homepage already linked in summary</p>
<hr />
<div>[[Category:Network monitoring]]<br />
[[Category:Web applications]]<br />
[[ja:Grafana]]<br />
{{Related articles start}}<br />
{{Related|Zabbix}}<br />
{{Related|Munin}}<br />
{{Related articles end}}<br />
[https://grafana.com/ Grafana] is an open-source, general purpose dashboard and graph composer, which runs as a web application. It supports graphite, [[InfluxDB]] or opentsdb as backends.<br />
<br />
== Installation ==<br />
<br />
[[Install]] the {{pkg|grafana}} package.<br />
<br />
After that you can [[Enable]] and [[start]] the {{ic|grafana}} service and access the application on localhost, e.g.: http://127.0.0.1:3000 . The default username is {{ic|admin}} and password {{ic|admin}} to access the web frontend.<br />
<br />
{{Warning|The default configuration listens on {{ic|*:3000}} so make sure to change the configuration or enable the relevant firewall rules.}}<br />
<br />
== Example usage ==<br />
<br />
=== Influxdb installation ===<br />
<br />
One often used backend is [[InfluxDB]].<br />
[[Enable]] and [[start]] the {{ic|influxdb}} service. The web interface is available at http://localhost:8086/<br />
<br />
=== Aggregate data ===<br />
In case of scaleable server monitoring in combination with Grafana and InfluxDB, one could choose software like [[collectd]] or [[statsd]]. More generally any measurement data can be aggregated with InfluxDB and displayed with Grafana. There are modules and libraries for several programming languages to interact with InfluxDB and one could even store data with a simple http post command using the program [[curl]].<br />
<br />
Herefore, create a database named {{ic|example}}:<br />
curl -G http://localhost:8086/query --data-urlencode "q=CREATE DATABASE example"<br />
Post data into the example database:<br />
curl -i -XPOST 'http://localhost:8086/write?db=example' --data-binary 'cpu_load_short,host=server01,region=us-west value=0.64 1434055562000000000'<br />
<br />
=== Creating Grafana dashboard ===<br />
* Before creating a dashboard, we have to add a data source. So first click on {{ic|Data sources}} in the left menu and then on {{ic|Add new}}.<br />
* Name can be something like {{ic|influxdb}} and the type should be set to {{ic|InfluxDB 0.9}}. In this example, the url for the Http settings is {{ic|http://localhost:8086}}. Note that the port is not the same as the one of the web interface! Database name corresponds to the one earlier choosen, e.g. {{ic|example}}. If not changed, username and password are {{ic|root}}.<br />
* Click on {{ic|Test connection}} to see everything is working and then on {{ic|Save}}.<br />
* Next, back at the front page, click {{ic|Home}} in the left-upper corner and then on {{ic|New}}.<br />
* Now this might be a bit counter-intuitive, but to add a new dashboard you have to hover and click over the little green box on the left side and then, for example, choose: {{ic|Add panel}} and {{ic|Graph}}.<br />
* Click on the title of the new graph and select {{ic|Edit}}.<br />
* In the graph settings in {{ic|Metrics}} choose {{ic|influxdb}} as data source in the lower-right corner.<br />
* Create a query by selecting your aggregated data. Click on {{ic|select measurement}} which is located beside {{ic|FROM}}. In the dropdown menu should appear a list of "tables" in your database, e.g. the table named {{ic|localhost}}. If no suggestions comes up, your connection to InfluxDB might be broken or no data has been aggregated yet.<br />
* Beside the bold text {{ic|SELECT}} click on {{ic|value}} and choose for example the measurement data {{ic|uptime}}.<br />
* To save changes, click {{ic|Back to dashboard}}, then the floppy disc icon.</div>NeedsCoffeehttps://wiki.archlinux.org/index.php?title=List_of_applications/Utilities&diff=565823List of applications/Utilities2019-02-04T14:24:58Z<p>NeedsCoffee: /* System monitors */ Removing Fsniper link to redirect</p>
<hr />
<div><noinclude><br />
[[Category:Applications]]<br />
[[Category:Lists of software]]<br />
[[es:List of applications/Utilities]]<br />
[[it:List of applications/Utilities]]<br />
[[ja:アプリケーション一覧/ユーティリティ]]<br />
[[ru:List of applications/Utilities]]<br />
[[zh-hans:List of applications/Utilities]]<br />
[[zh-hant:List of applications/Utilities]]<br />
{{List of applications navigation}}<br />
</noinclude><br />
== Utilities ==<br />
<br />
=== Terminal ===<br />
<br />
==== Command shells ====<br />
<br />
See the main article: [[Command-line shell]].<br />
<br />
See also [[Wikipedia:Comparison of command shells]].<br />
<br />
==== Terminal emulators ====<br />
<br />
Terminal emulators show a GUI Window that contains a terminal. Most emulate Xterm, which in turn emulates VT102, which emulates typewriter. For further background information, see [[Wikipedia:Terminal emulator]].<br />
<br />
For a comprehensive list, see [[Wikipedia:List of terminal emulators]].<br />
<br />
* {{App|Alacritty|A cross-platform, GPU-accelerated terminal emulator.|https://github.com/jwilm/alacritty|{{Pkg|alacritty}}}}<br />
* {{App|aterm|Xterm replacement with transparency support. It has been deprecated in favour of urxvt since 2008.|http://aterm.sourceforge.net/|{{AUR|aterm}}}}<br />
* {{App|Cool Retro Term|A good looking terminal emulator which mimics the old cathode display.|https://github.com/Swordfish90/cool-retro-term|{{Pkg|cool-retro-term}}}}<br />
* {{App|Eterm|Terminal emulator intended as a replacement for xterm and designed for the [[Enlightenment]] desktop.|http://eterm.org{{Dead link|2018|01|17}}|{{AUR|eterm}}}}<br />
* {{App|Gate One|Web-based terminal emulator and SSH client.|https://github.com/liftoff/GateOne|{{AUR|gateone-git}}}}<br />
* {{App|Hyper|A terminal with JS/CSS support.|https://github.com/zeit/hyper|{{AUR|hyper}}}}<br />
* {{App|[[Wikipedia:Konsole|Konsole]]|Terminal emulator included in the [[KDE]] desktop.|https://www.kde.org/applications/system/konsole/|{{Pkg|konsole}}}}<br />
* {{App|[[kitty]]|A modern, hackable, featureful, OpenGL based terminal emulator|https://github.com/kovidgoyal/kitty|{{Pkg|kitty}}}}<br />
* {{App|mlterm|A multi-lingual terminal emulator supporting various character sets and encodings in the world.|https://sourceforge.net/projects/mlterm/|{{AUR|mlterm}}}}<br />
* {{App|[[PuTTY]]|Highly configurable ssh/telnet/serial console program.|https://www.chiark.greenend.org.uk/~sgtatham/putty/|{{Pkg|putty}}}}<br />
* {{App|QTerminal|Lightweight Qt-based terminal emulator.|https://github.com/qterminal/qterminal|{{Pkg|qterminal}}}}<br />
* {{App|[[Wikipedia:Rxvt|rxvt]]|Popular replacement for the xterm.|http://rxvt.sourceforge.net/|{{AUR|rxvt}}}}<br />
* {{App|shellinabox|A web-based SSH Terminal|https://github.com/shellinabox/shellinabox|{{AUR|shellinabox-git}}}}<br />
* {{App|[[st]]|Simple terminal implementation for X.|http://st.suckless.org|{{AUR|st}}}}<br />
* {{App|Terminology|Terminal emulator by the Enlightenment project team with innovative features: file thumbnails and media play like a media player.|https://www.enlightenment.org/about-terminology|{{Pkg|terminology}}}}<br />
* {{App|[[urxvt]]|Highly extendable (with Perl) unicode enabled rxvt-clone terminal emulator featuring tabbing, url launching, a Quake style drop-down mode and pseudo-transparency.|http://software.schmorp.de/pkg/rxvt-unicode.html|{{Pkg|rxvt-unicode}}}}<br />
* {{App|[[xterm]]|Simple terminal emulator for the X Window System. It provides DEC VT102 and Tektronix 4014 compatible terminals for programs that can't use the window system directly.|http://invisible-island.net/xterm/|{{Pkg|xterm}}}}<br />
* {{App|[[Yakuake]]|Drop-down terminal (Quake style) emulator based on Konsole.|https://yakuake.kde.org/|{{Pkg|yakuake}}}}<br />
<br />
===== VTE-based =====<br />
<br />
[https://developer.gnome.org/vte/unstable/ VTE] (Virtual Terminal Emulator) is a widget developed during early GNOME days for use in the GNOME Terminal. It has since given birth to many terminals with similar capabilities.<br />
<br />
* {{App|Deepin Terminal|Terminal emulation application for Deepin desktop.|https://www.deepin.org/en/original/deepin-terminal/|{{Pkg|deepin-terminal}}}}<br />
* {{App|evilvte|Very lightweight and highly customizable terminal emulator with support for tabs, auto-hiding and different encodings.|http://calno.com/evilvte/|{{AUR|evilvte-git}}}}<br />
* {{App|Germinal|Minimalist terminal emulator which provides a borderless maximized terminal, attached to a tmux session by default, hence providing tabs and panels.|http://www.imagination-land.org/tags/germinal.html|{{AUR|germinal}}}}<br />
* {{App|[[Wikipedia:GNOME Terminal|GNOME Terminal]]|A terminal emulator included in the [[GNOME]] desktop with support for Unicode and pseudo-transparency.|https://wiki.gnome.org/Apps/Terminal|{{Pkg|gnome-terminal}}}}<br />
* {{App|[[Guake]]|Drop-down terminal for the GNOME desktop.|http://guake-project.org/|{{Pkg|guake}}}}<br />
* {{App|LXTerminal|Desktop independent terminal emulator for [[LXDE]].|https://wiki.lxde.org/en/LXTerminal|{{Pkg|lxterminal}}}}<br />
* {{App|MATE terminal|A fork of [[Wikipedia:GNOME terminal]] for the [[MATE]] desktop.|http://www.mate-desktop.org/|{{Pkg|mate-terminal}}}}<br />
* {{App|Pantheon Terminal|A super lightweight, beautiful, and simple terminal emulator. It's designed to be setup with sane defaults and little to no configuration.|https://github.com/elementary/terminal|{{Pkg|pantheon-terminal}}}}<br />
* {{App|ROXTerm|Tabbed terminal emulator with a small footprint.|http://roxterm.sourceforge.net/|{{AUR|roxterm}}}}<br />
* {{App|sakura|Terminal emulator based on GTK+ and VTE.|http://www.pleyades.net/david/projects/sakura|{{Pkg|sakura}}}}<br />
* {{App|[[Terminator]]|Terminal emulator supporting multiple resizable terminal panels.|https://gnometerminator.blogspot.com/|{{Pkg|terminator}}}}<br />
* {{App|[[Termite]]|Keyboard-centric VTE-based terminal, aimed at use within a window manager with tiling and/or tabbing support.|https://github.com/thestinger/termite|{{Pkg|termite}}}}<br />
* {{App|[[Tilda]]|Configurable drop down terminal emulator.|https://github.com/lanoxx/tilda/|{{Pkg|tilda}}}}<br />
* {{App|Tilix|Tiling terminal emulator for GNOME.|https://gnunn1.github.io/tilix-web/|{{Pkg|tilix}}}}<br />
* {{App|tinyterm|Very lightweight terminal emulator based on VTE.|https://github.com/lahwaacz/tinyterm|{{AUR|tinyterm-git}}}}<br />
* {{App|[[Wikipedia:Terminal (Xfce)|Xfce Terminal]]|Terminal emulator included in the [[Xfce]] desktop with support for a colorized prompt and a tabbed interface.|https://docs.xfce.org/apps/terminal/start|{{Pkg|xfce4-terminal}}}}<br />
<br />
===== KMS-based =====<br />
<br />
The following terminal emulators are based on the [[kernel mode setting]] that could be invoked without X.<br />
* {{App|[[KMSCON]]|A KMS/DRM-based system console(getty) with an integrated terminal emulator for Linux operating systems.|https://github.com/dvdhrm/kmscon|{{Pkg|kmscon}}}}<br />
<br />
===== framebuffer-based =====<br />
<br />
In GNU/Linux world, the [[Wikipedia:Framebuffer|framebuffer]] could be refered to a virtual device in the Linux kernel ('''fbdev''') or the virtual framebuffer system for X ('''xvfb'''). This section mainly lists the terminal emulators that based on the in-kernel virtual device, i.e. '''fbdev'''.<br />
<br />
* {{App|yaft|A simple terminal emulator for living without X, with UCS2 glyphs, wallpaper and 256color support.|https://github.com/uobikiemukot/yaft|{{aur|yaft}}}}<br />
<br />
==== Terminal pagers ====<br />
<br />
See also [[Wikipedia:Terminal pager]].<br />
<br />
* {{App|[[Wikipedia:More_(command)|more]]|A simple and feature-light pager. It is a part of util-linux.|https://git.kernel.org/pub/scm/utils/util-linux/util-linux.git/about/|{{Pkg|util-linux}}}}<br />
* {{App|[[Core_utilities#Essentials|less]]|A program similar to more, but with support for both forward and backward scrolling, as well as partial loading of files.|https://www.gnu.org/software/less/|{{Pkg|less}}}}<br />
* {{App|[[Wikipedia:Most_(Unix)|most]]|A pager with support for multiple windows, left and right scrolling, and built-in colour support|http://www.jedsoft.org/most/|{{Pkg|most}}}}<br />
* {{App|mcview|A pager with mouse and colour support. It is bundled with midnight commander.|http://midnight-commander.org/|{{Pkg|mc}}}}<br />
* [[Vim]] can [[Vim#Vim as a pager|also be used as a pager]].<br />
<br />
==== Terminal multiplexers ====<br />
<br />
See also [[Wikipedia:Terminal multiplexer]].<br />
<br />
* {{App|abduco|Tool for session attach and detach support which allows a process to run independently from its controlling terminal.|http://www.brain-dump.org/projects/abduco/|{{Pkg|abduco}}}}<br />
* {{App|[[Wikipedia:Byobu (software)|byobu]]|An GPLv3 licensed addon for tmux or screen. It requires a terminal multiplexer installed.|http://byobu.co/|{{AUR|byobu}}}}<br />
* {{App|[[dtach]]|Program that emulates the detach feature of [[GNU Screen]].|http://dtach.sourceforge.net/|{{Pkg|dtach}}}}<br />
* {{App|dvtm|[[dwm]]-style window manager in the console.|http://brain-dump.org/projects/dvtm/|{{Pkg|dvtm}}}}<br />
* {{App|[[GNU Screen]]|Full-screen window manager that multiplexes a physical terminal.|https://www.gnu.org/software/screen/|{{Pkg|screen}}}}<br />
* {{App|mtm|Simple terminal multiplexer with just four commands: change focus, split, close, and screen redraw.|https://github.com/deadpixi/mtm|{{AUR|mtm-git}}}}<br />
* {{App|[[tmux]]|BSD licensed terminal multiplexer.|https://tmux.github.io/|{{Pkg|tmux}}}}<br />
<br />
=== Files ===<br />
<br />
==== File managers ====<br />
<br />
See also [[Wikipedia:Comparison of file managers]].<br />
<br />
===== Console =====<br />
<br />
* {{App|Clex|File manager with full-screen user interface|http://www.clex.sk/|{{Aur|clex}}}}<br />
* {{App|ded|directory editor, file manager similar to Emacs dired|http://invisible-island.net/ded/ded.html|{{AUR|ded}}}}<br />
* {{App|[[Wikipedia:Dired|Dired]]|Directory editor integrated with [[Emacs]].|https://www.gnu.org/software/emacs/manual/html_node/emacs/Dired.html|{{pkg|emacs}}}}<br />
* {{App|Last File Manager|Powerful file manager written in Python 3 with a curses interface.|https://inigo.katxi.org/devel/lfm/|{{AUR|lfm3-hg}}}}<br />
* {{App|lf|Terminal file manager written in Go using server/client architecture.|https://github.com/gokcehan/lf|{{aur|lf-git}}}}<br />
* {{App|[[Midnight Commander]]|Console-based, dual-paneled file manager.|http://www.midnight-commander.org|{{Pkg|mc}}}}<br />
* {{App|nffm|"Nothing Fancy File Manager", a mouseless ncurses file manager written in C.|https://github.com/mariostg/nffm|{{AUR|nffm-git}}}}<br />
* {{App|nnn|Tiny, lightning fast, feature-packed file manager.|https://github.com/jarun/nnn|{{Pkg|nnn}}}}<br />
* {{App|Pilot|File manager that comes with the [[Alpine]] email client.|https://www.washington.edu/alpine/|{{AUR|alpine}}}}<br />
* {{App|[[Ranger]]|Console-based file manager with vi bindings, customizability, and lots of features.|https://ranger.github.io/|{{Pkg|ranger}}}}<br />
* {{App|[[Vifm]]|Ncurses-based two-panel file manager with vi-like keybindings.|http://vifm.info|{{Pkg|vifm}}}}<br />
<br />
===== Graphical =====<br />
<br />
* {{App|Caja|The file manager for the MATE desktop.|https://github.com/mate-desktop/caja|{{Pkg|caja}}}}<br />
* {{App|Deepin File Manager|File manager developed for [[Deepin]].|https://www.deepin.org/en/original/dde-file-manager/|{{Pkg|deepin-file-manager}}}}<br />
* {{App|[[Dolphin]]|File manager included in the KDE desktop.|https://userbase.kde.org/Dolphin|{{Pkg|dolphin}}}}<br />
* {{App|Gentoo|A lightweight file manager for GTK.|https://sourceforge.net/projects/gentoo/|{{AUR|gentoo}}}}<br />
* {{App|[[GNOME Files]]|Extensible, heavyweight file manager used by default in GNOME with support for custom scripts.|https://wiki.gnome.org/Apps/Files|{{Pkg|nautilus}}}}<br />
* {{App|[[Wikipedia:Konqueror|Konqueror]]|File manager and web browser for the KDE desktop.|https://konqueror.org/|{{Pkg|konqueror}}}}<br />
* {{App|Liri Files|The file manager for Liri.|https://github.com/lirios/files|{{Pkg|liri-files}}}}<br />
* {{App|[[Nemo]]|Nemo is the file manager of the Cinnamon desktop. A fork of Nautilus.|http://cinnamon.linuxmint.com/|{{Pkg|nemo}}}}<br />
* {{App|Pantheon Files|File browser designed for elementary OS.|https://github.com/elementary/files|{{Pkg|pantheon-files}}}}<br />
* {{App|PathFinder|File browser that comes with the [[Wikipedia:Fox_toolkit|FOX toolkit]].|http://fox-toolkit.org/|{{Pkg|fox}}}}<br />
* {{App|[[PCManFM]]|Very fast and lightweight file manager which can also optionally manage the desktop icons and background.|https://wiki.lxde.org/en/PCManFM|{{Pkg|pcmanfm}}}}<br />
* {{App|qtFM|Small, lightweight filemanager for Linux desktops based on pure Qt.|http://www.qtfm.eu/|{{AUR|qtfm}}}}<br />
* {{App|ROX|Small and fast file manager which can optionally manage the desktop background and panels.|http://rox.sourceforge.net|{{Pkg|rox}}}}<br />
* {{App|[[Thunar]]|File manager that can be run as a daemon with excellent start up and directory load times.|http://docs.xfce.org/xfce/thunar/start|{{Pkg|thunar}}}}<br />
<br />
====== Twin-panel ======<br />
<br />
Note that some of these twin-panel file managers can also be set to have only one pane.<br />
<br />
* {{App|Double Commander|File manager with two panels side by side. It is inspired by Total Commander and features some new ideas.|http://doublecmd.sourceforge.net//|GTK+: {{Pkg|doublecmd-gtk2}}, Qt5: {{Pkg|doublecmd-qt5}}}}<br />
* {{App|[[Wikipedia:emelFM2|emelFM2]]|File manager that implements the popular two-panel design.|http://emelfm2.net/|{{Pkg|emelfm2}}}}<br />
* {{App|[[Wikipedia:GNOME Commander|GNOME Commander]]|A dual-paned file manager for the GNOME Desktop.|https://gcmd.github.io/|{{AUR|gnome-commander}}}}<br />
* {{App|[[Wikipedia:Krusader|Krusader]]|Advanced twin panel (Midnight Commander style) file manager for the KDE desktop.|http://www.krusader.org/|{{Pkg|krusader}}}}<br />
* {{App|muCommander|A lightweight, cross-platform file manager with a dual-pane interface written in Java.|http://www.mucommander.com/|{{AUR|mucommander}}}}<br />
* {{App|[[SpaceFM]]|GTK+ multi-panel tabbed file manager.|http://ignorantguru.github.com/spacefm/|{{AUR|spacefm}}}}<br />
* {{App|Sunflower|Small and highly customizable twin-panel file manager for Linux with support for plugins.|http://sunflower-fm.org/|{{AUR|sunflower}}}}<br />
* {{App|trolCommander|Lightweight, dual-pane file manager written in Java. Fork of muCommander.|https://github.com/trol73/mucommander|{{AUR|trolcommander}}}}<br />
* {{App|Tux Commander|Windowed file manager with two panels side by side similar to popular Total Commander or Midnight Commander file managers.|http://tuxcmd.sourceforge.net/description.php|{{Pkg|tuxcmd}}}}<br />
* {{App|Worker|Fast, lightweight and feature-rich file manager for the X Window System.|http://www.boomerangsworld.de/worker/|{{AUR|worker}}}}<br />
* {{App|[[Wikipedia:Xfe|Xfe]]|Microsoft Explorer-like file manager for X (X File Explorer).|http://roland65.free.fr/xfe/|{{AUR|xfe}}}}<br />
<br />
==== Trash management ====<br />
<br />
* {{App|trash-cli|A command-line interface implementing FreeDesktop.org's Trash specification.|https://github.com/andreafrancia/trash-cli|{{Pkg|trash-cli}}}}<br />
<br />
==== File synchronization ====<br />
<br />
{{Merge|Synchronization and backup programs#Data synchronization|There's a dedicated article.}}<br />
<br />
See also [[Synchronization and backup programs#Data synchronization]] and [[Wikipedia:Comparison of file synchronization software]].<br />
<br />
* {{App|[[Wikipedia:DirSync Pro|DirSync Pro]]|Small, but powerful utility for file and folder synchronization.|https://dirsyncpro.org/|{{AUR|dirsyncpro}}}}<br />
* {{App|[[Wikipedia:FreeFileSync|FreeFileSync]]|Folder comparison and synchronization software that creates and manages backup copies of all your important files.|https://www.freefilesync.org/|{{AUR|freefilesync}}}}<br />
* {{App|[[Wikipedia:git-annex|git-annex]]|Manage files with git, without checking the file contents into git.|https://git-annex.branchable.com/|{{Pkg|git-annex}}}}<br />
* {{App|hsync|Command line program to sync only those files that have been renamed/moved but otherwise unchanged. It works by issuing simple move operations at the destination without actually transferring the files, and is meant to be used in conjunction with other synchronization programs that lack this capability.|https://ambrevar.bitbucket.io/hsync/|{{AUR|hsync}}}}<br />
* {{App|rclone|Command line program to sync files and directories to and from Amazon S3, Dropbox, Google Drive, Microsoft OneDrive, Yandex Disk and many other cloud storage services as well as between local paths.|https://rclone.org/|{{Pkg|rclone}}}}<br />
* {{App|[[rsync]]|File transfer program that uses the "rsync algorithm" which provides a very fast method for bringing remote files into sync. It does this by sending just the differences in the files across the link, without requiring that both sets of files are present at one of the ends of the link beforehand.|https://rsync.samba.org/|{{Pkg|rsync}}}}<br />
* {{App|[[Wikipedia:SparkleShare|SparkleShare]]|File sharing and collaboration application written in C#. It can sync with any Git server over SSH.|http://sparkleshare.org/|{{Pkg|sparkleshare}}}}<br />
* {{App|[[Syncthing]]|Continuous file synchronization program. It synchronizes files between two or more computers in a simple way without advanced configuration.|https://syncthing.net/|Web: {{Pkg|syncthing}}, GTK+: {{Pkg|syncthing-gtk}}}}<br />
* {{App|Syncany|Cloud storage and filesharing application with a focus on security and abstraction of storage.|https://www.syncany.org/|{{AUR|syncany}}}}<br />
* {{App|[[Wikipedia:Synkron|Synkron]]|Application that helps you keep your files and folders always updated. You can easily sync your documents, music or pictures to have their latest versions everywhere.|http://synkron.sourceforge.net/|{{AUR|synkron}}}}<br />
* {{App|[[Unison]]|File synchronization tool that allows two replicas of a collection of files and directories to be stored on different hosts (or different disks on the same host), modified separately, and then brought up to date by propagating the changes in each replica to the other.|https://www.cis.upenn.edu/~bcpierce/unison/|{{Pkg|unison}}}}<br />
<br />
==== Archiving and compression tools ====<br />
<br />
For archiving and compression command-line tools, see [[Archiving and compression]].<br />
<br />
===== Archive managers =====<br />
<br />
* {{App|[[Wikipedia:Ark (software)|Ark]]|Archiving tool included in the KDE desktop.|https://www.kde.org/applications/utilities/ark/|{{Pkg|ark}}}}<br />
* {{App|Engrampa|Archive manager for [[MATE]]|https://github.com/mate-desktop/engrampa|{{Pkg|engrampa}}}}<br />
* {{App|[[Wikipedia:File Roller|File Roller]]|Archive manager included in the GNOME desktop.|http://fileroller.sourceforge.net/|{{Pkg|file-roller}}}}<br />
* {{App|p7zip-gui|The GUI belonging to the p7zip software.|http://p7zip.sourceforge.net/|{{AUR|p7zip-gui}}}}<br />
* {{App|[[Wikipedia:PeaZip|PeaZip]]|Open source file and archive manager.|http://www.peazip.org/peazip-linux.html|GTK+: {{AUR|peazip-gtk2}}, Qt: {{AUR|peazip-qt}}}}<br />
* {{App|Squeeze|Featherweight front-end for commandline archiving tools.|http://squeeze.xfce.org/|{{AUR|squeeze-git}}}}<br />
* {{App|[[Wikipedia:Xarchiver|Xarchiver]]|Lightweight desktop independent archive manager built with GTK+.|https://github.com/ib/xarchiver|GTK+ 3: {{Pkg|xarchiver}}, GTK+ 2: {{Pkg|xarchiver-gtk2}}}}<br />
<br />
==== Comparison, diff, merge ====<br />
<br />
See also [[Wikipedia:Comparison of file comparison tools]].<br />
<br />
For managing ''pacnew''/''pacsave'' files, specialised tools exist. See [[Pacnew and Pacsave files#Managing .pacnew files]].<br />
<br />
* {{App|colordiff|A Perl script wrapper for 'diff' that produces the same output but with pretty 'syntax' highlighting.|http://www.colordiff.org/|{{Pkg|colordiff}}}}<br />
* {{App|Diffuse|Small and simple text merge tool written in Python.|http://diffuse.sourceforge.net/|{{Pkg|diffuse}}}}<br />
* {{App|KDiff3|File and directory diff and merge tool for the KDE desktop.|http://kdiff3.sourceforge.net/|{{Pkg|kdiff3}}}}<br />
* {{App|[[Wikipedia:Kompare|Kompare]]|GUI front-end program for viewing and merging differences between source files. It supports a variety of diff formats and provides many options to customize the information level displayed.|https://www.kde.org/applications/development/kompare/|{{Pkg|kompare}}}}<br />
* {{App|[[Wikipedia:Meld (software)|Meld]]|Visual diff and merge tool that can compare files, directories, and version controlled projects.|http://meldmerge.org/|{{Pkg|meld}}}}<br />
* {{App|xxdiff|A graphical browser for file and directory differences.|http://furius.ca/xxdiff/|{{AUR|xxdiff}}}}<br />
<br />
[[Vim]] and [[Emacs]] provide merge functionality with [[Vim#Merging_files|vimdiff]] and {{ic|ediff}}.<br />
<br />
==== Batch renamers ====<br />
<br />
* {{App|[[Wikipedia:GPRename|GPRename]]|GTK+ batch renamer for files and directories.|http://gprename.sourceforge.net|{{Pkg|gprename}}}}<br />
* {{App|[[Wikipedia:KRename|KRename]]|Very powerful batch file renamer for the KDE desktop.|http://www.krename.net|{{Pkg|krename}}}}<br />
* {{App|metamorphose2|wxPython based batch renamer with support for regular expressions, renaming multimedia files according to their metadata, etc.|http://file-folder-ren.sourceforge.net|{{AUR|metamorphose2}}}}<br />
* {{App|pyRenamer|Application for the mass renaming of files.|https://github.com/SteveRyherd/pyRenamer|{{AUR|pyrenamer}}}}<br />
* {{App|rename.pl|Batch renamer based on perl regex.|http://search.cpan.org/~pederst/rename/bin/rename.PL|{{Pkg|perl-rename}}}}<br />
* {{App|[[Thunar]] Bulk Rename|Change the name of multiple files at once using some criterion that applies to at least one of the files. Run with {{ic|thunar -B}}.|https://docs.xfce.org/xfce/thunar/bulk-renamer/start|{{Pkg|thunar}}}}<br />
<br />
==== File searching ====<br />
<br />
This section lists utilities for file searching based on filename, file path or metadata. For full-text searching, see the next section.<br />
<br />
See also [[Wikipedia:List of search engines#Desktop search engines]].<br />
<br />
===== Console =====<br />
<br />
See [[find]] and its alternatives.<br />
<br />
===== Graphical =====<br />
<br />
* {{App|Catfish|Versatile file searching tool by Xfce, can be powered by find, locate and Zeitgeist.|https://launchpad.net/catfish-search|{{Pkg|catfish}}}}<br />
* {{App|GNOME Search Tool|GNOME utility to search for files, depends on [[GNOME/Files]].|https://gitlab.gnome.org/GNOME/gnome-search-tool|{{Pkg|gnome-search-tool}}}}<br />
* {{App|KFind|Search tool for KDE to find files by name, type or content. Has internal search and supports locate.|https://www.kde.org/applications/utilities/kfind/|{{Pkg|kfind}}}}<br />
* {{App|MATE Search Tool|MATE utility to search for files.|https://github.com/mate-desktop/mate-utils|{{Pkg|mate-utils}}}}<br />
* {{App|regexxer|Interactive search and replace tool featuring Perl-style regular expressions.|http://regexxer.sourceforge.net/|{{Pkg|regexxer}}}}<br />
* {{App|Searchmonkey|Powerful GUI search utility for matching regex patterns.|http://searchmonkey.sourceforge.net/|{{AUR|searchmonkey}}}}<br />
<br />
====== File indexers ======<br />
<br />
These programs index your files to allow for quick searching.<br />
<br />
* {{App|Basenji|Volume indexing tool designed for easy and fast indexing of CD/DVD and other type of volume collections.|https://github.com/pulb/basenji|{{AUR|basenji}}}}<br />
* {{App|fsearch|A fast file search utility for Unix-like systems based on GTK+3.|https://github.com/cboxdoerfer/fsearch|{{AUR|fsearch-git}}}}<br />
<br />
==== Full-text searching ====<br />
<br />
[[Grep]] and its alternatives provide non-indexed [[Wikipedia:Full-text search|full-text search]].<br />
<br />
===== Full-text indexers =====<br />
<br />
* {{App|[[Baloo]]|KDE's file indexing and search solution, has a CLI and is used by [[KRunner]].|https://community.kde.org/Baloo|{{Pkg|baloo}}}}<br />
* {{App|[[Wikipedia:DocFetcher|DocFetcher]]|Graphical Java desktop search application.|http://docfetcher.sourceforge.net|{{AUR|docfetcher}}}}<br />
* {{App|[[Wikipedia:Recoll|Recoll]]|Full text search tool based on Xapian, has CLI and GUI.|https://lesbonscomptes.com/recoll/|{{Pkg|recoll}}}}<br />
* {{App|[[Wikipedia:Tracker (search software)|Tracker]]|All-in-one indexer, search tool and metadata database, used by [[GNOME]] Documents, Music, Photos and Videos.|https://wiki.gnome.org/Projects/Tracker|{{Pkg|tracker}}}}<br />
* {{App|[[Zeitgeist]]|Event aggregation framework for the user's activities and notifications (files opened, websites visited, conversations had, etc.), has several third-party front-ends.|https://launchpad.net/zeitgeist-project|{{Pkg|zeitgeist}}}}<br />
<br />
=== Development ===<br />
<br />
==== Version control systems ====<br />
<br />
See also [[Wikipedia:Comparison of revision control software]].<br />
<br />
* {{App|[[Bazaar]]|Distributed version control system that helps you track project history over time and to collaborate easily with others.|https://bazaar.canonical.com/|{{Pkg|bzr}}}}<br />
* {{App|[[CVS]]|Concurrent Versions System, a client-server revision control system.|http://cvs.nongnu.org/|{{Pkg|cvs}}}}<br />
* {{App|[[Wikipedia:Darcs|Darcs]]|Distributed revision control system that was designed to replace traditional, centralized source control systems such as CVS and Subversion.|http://darcs.net/|{{Pkg|darcs}}}}<br />
* {{App|[[Wikipedia:Fossil (software)|Fossil]]|Distributed VCS with bug tracking, wiki, forum, and technotes.|https://www.fossil-scm.org/|{{Pkg|fossil}}}}<br />
* {{App|[[Git]]|Distributed revision control and source code management system with an emphasis on speed.|https://git-scm.com/|{{Pkg|git}}}}<br />
* {{App|[[Mercurial]]|Distributed version control system written in Python and similar in many ways to Git.|https://www.mercurial-scm.org/|{{Pkg|mercurial}}}}<br />
* {{App|[[Subversion]]|Full-featured centralized version control system originally designed to be a better CVS.|https://subversion.apache.org/|{{Pkg|subversion}}}}<br />
<br />
==== Build automation ====<br />
<br />
See also [[Wikipedia:List of build automation software]].<br />
<br />
* {{App|[[Wikipedia:Apache Ant|Apache Ant]]|Java library and command-line tool whose mission is to drive processes described in build files as targets and extension points dependent upon each other.|http://ant.apache.org/|{{Pkg|ant}}}}<br />
* {{App|[[Wikipedia:Apache Maven|Apache Maven]]|Build automation tool used primarily for Java.|http://maven.apache.org/|{{Pkg|maven}}}}<br />
* {{App|[[Wikipedia:CMake|CMake]]|Family of tools designed to build, test and package software.|https://cmake.org/|{{Pkg|cmake}}}}<br />
* {{App|[[Wikipedia:Make (software)|GNU make]]|GNU make utility to maintain groups of programs.|http://www.gnu.org/software/make|{{Pkg|make}} (part of {{Grp|base-devel}})}}<br />
* {{App|[[Wikipedia:Gradle|Gradle]]|Powerful build system for the JVM.|https://gradle.org/|{{Pkg|gradle}}}}<br />
* {{App|Phing|PHP program designed to automate tasks of all kinds.|https://www.phing.info/|{{AUR|phing}}}}<br />
<br />
==== Integrated development environments ====<br />
<br />
See also [[Wikipedia:Comparison of integrated development environments]].<br />
<br />
* {{App|[[Wikipedia:Anjuta|Anjuta]]|Versatile IDE with project management, an application wizard, an interactive debugger, a source editor, version control support and many more tools.|http://anjuta.org/|{{Pkg|anjuta}}}}<br />
* {{App|[[Wikipedia:Aptana#Aptana_Studio|Aptana Studio]]|IDE based on Eclipse, but geared towards web development, with support for HTML, CSS, Javascript, Ruby on Rails, PHP, Adobe AIR and others.|http://www.aptana.com/|{{AUR|aptana-studio}}}}<br />
* {{App|[[Wikipedia:Bluefish (software)|Bluefish]]|Powerful editor targeted towards programmers and webdevelopers, with many options to write websites, scripts and programming code. It supports many programming and markup languages.|http://bluefish.openoffice.nl/|{{Pkg|bluefish}}}}<br />
* {{App|[[Wikipedia:Code::Blocks|Code::Blocks]]|C, C++ and Fortran IDE built to meet the most demanding needs of its users. It is designed to be very extensible and fully configurable.|http://codeblocks.org/|{{Pkg|codeblocks}}}}<br />
* {{App|[[Wikipedia:JetBrains#CLion|CLion]]|A cross-platform IDE for C and C++.|http://www.jetbrains.com/clion|{{AUR|clion}}}}<br />
* {{App|[[Wikipedia:CodeLite|CodeLite]]|Open source and cross-platform C/C++/PHP and Node.js IDE written in C++ .|http://www.codelite.org/|{{AUR|codelite}}}}<br />
* {{App|[[Wikipedia:Cloud9 IDE|Cloud9]]|State-of-the-art IDE that runs in your browser and lives in the cloud, allowing you to run, debug and deploy applications from anywhere, anytime.|https://c9.io/|{{AUR|c9.core}}}}<br />
* {{App|[[Eclipse]]|IDE for Java, C/C++, PHP, Perl and Python with subversion support and task management.|https://www.eclipse.org/|Java EE: {{Pkg|eclipse-jee}}, Java: {{Pkg|eclipse-java}}, C/C++: {{Pkg|eclipse-cpp}}, PHP: {{Pkg|eclipse-php}}, JavaScript and Web: {{Pkg|eclipse-javascript}}}}<br />
* {{App|[[Wikipedia:Eric (software)|Eric]]|Full-featured Python and Ruby IDE written in PyQt5.|https://eric-ide.python-projects.org/|{{Pkg|eric}}}}<br />
* {{App|[[Gambas]]|IDE based on a Basic interpreter with object extensions.|http://gambas.sourceforge.net/en/main.html|{{Pkg|gambas3-ide}}}}<br />
* {{App|[[Wikipedia:Geany|Geany]]|Small and lightweight IDE with many supported many programming and markup languages including C, Java, PHP, HTML, Python, Perl, Pascal.|https://geany.org/|{{Pkg|geany}}}}<br />
* {{App|[[Wikipedia:GNOME Builder|GNOME Builder]]|Tool to write and contribute to great GNOME-based applications.|https://wiki.gnome.org/Apps/Builder|{{Pkg|gnome-builder}}}}<br />
* {{App|[[Wikipedia:KDevelop|KDevelop]]|Feature-full, plugin extensible IDE for C/C++ and other programming languages.|https://www.kdevelop.org/|{{Pkg|kdevelop}}}}<br />
* {{App|[[Wikipedia:Komodo_Edit|Komodo Edit]]|A free, multi-language editor.|http://www.activestate.com/komodo-edit|{{AUR|komodo-edit}}}}<br />
* {{App|[[Wikipedia:Lazarus (IDE)|Lazarus]]|Delphi (Object Pascal) compatible IDE for Rapid Application Development. It has variety of components ready for use and a graphical form designer to easily create complex graphical user interfaces.|https://www.lazarus-ide.org/|{{Pkg|lazarus}}}}<br />
* {{App|LiteIDE|Simple Go IDE.|https://github.com/visualfc/liteide|{{Pkg|liteide}}}}<br />
* {{App|[[Wikipedia:MonoDevelop|MonoDevelop]]|Cross-platform IDE targeted for the Mono and .NET frameworks.|http://monodevelop.com/|{{AUR|monodevelop-git}}}}<br />
* {{App|[[Wikipedia:MPLAB|MPLAB]]|IDE for Microchip PIC and dsPIC development.|http://www.microchip.com/mplabx|{{AUR|microchip-mplabx-bin}}}}<br />
* {{App|[[Netbeans]]|IDE for developing with Java, JavaScript, PHP, Python, Ruby, Groovy, C, C++, Scala, Clojure, and other languages.|https://netbeans.org/|{{Pkg|netbeans}}}}<br />
* {{App|[[PHPStorm]]|JetBrains PhpStorm is a commercial, cross-platform IDE for PHP built on JetBrains' IntelliJ IDEA platform, providing an editor for PHP, HTML and JavaScript with on-the-fly code analysis, error prevention and automated refactorings for PHP and JavaScript code.|https://www.jetbrains.com/phpstorm/|{{Aur|phpstorm}} {{Aur|phpstorm-eap}}}}<br />
* {{App|[[Wikipedia:Qt Creator|Qt Creator]]|Lightweight, cross-platform C++ integrated development environment with a focus on Qt.|https://www.qt.io/ide/|{{Pkg|qtcreator}}}}<br />
<br />
===== Java IDEs =====<br />
<br />
* {{App|[[Wikipedia:BlueJ|BlueJ]]|Fully featured Java IDE used mainly for educational and beginner purposes.|https://bluej.org/|{{AUR|bluej}}}}<br />
* {{App|[[Wikipedia:IntelliJ IDEA|IntelliJ IDEA]]|IDE for Java, Groovy and other programming languages with advanced refactoring features.|http://www.jetbrains.com/idea/|{{Pkg|intellij-idea-community-edition}}}}<br />
<br />
===== Python IDEs =====<br />
<br />
* {{App|[[Wikipedia:Ninja-IDE|Ninja-IDE]]|IDE for Python development.|http://ninja-ide.org/|{{AUR|ninja-ide}}}}<br />
* {{App|[[Wikipedia:PyCharm|PyCharm]]|Python IDE with support for code analysis, debugging, unit testing, version control and web development with Django.|http://www.jetbrains.com/pycharm/|{{Pkg|pycharm-community-edition}}}}<br />
* {{App|[[Wikipedia:Spyder (software)|Spyder]]|Scientific Python Development Environment providing MATLAB-like features.|https://github.com/spyder-ide/spyder|{{Pkg|spyder2}} (Python 2) or {{Pkg|spyder3}} (Python 3)}}<br />
* {{App|[[Wikipedia:Thonny|Thonny]]|Python IDE for beginners.|http://thonny.org/|{{AUR|thonny}}}}<br />
* {{App|[[Wikipedia:Wing IDE|WingIDE]]|Proprietary Python development environment. It is fully featured and meant for professional use.|http://www.wingware.com|{{Aur|wingide}}}}<br />
<br />
===== Educational IDEs =====<br />
<br />
* {{App|[[Wikipedia:Etoys (programming language)|Etoys]]|Educational tool and media-rich authoring environment for teaching children.|http://squeakland.org/|{{AUR|etoys}}}}<br />
* {{App|[[Wikipedia:KTurtle|KTurtle]]|Educational programming environment that aims to make learning how to program as easily as possible. Part of {{Grp|kdeedu}}.|https://www.kde.org/applications/education/kturtle/|{{Pkg|kturtle}}}}<br />
* {{App|[[Wikipedia:Processing (programming language)|Processing]]|Playground for teaching non-programmers the fundamentals of computer programming in a visual context.|https://processing.org/|{{Pkg|processing}}}}<br />
* {{App|[[Wikipedia:Scratch (programming language)|Scratch]]|Programming system and content development tool for educational and entertainment purposes, such as creating interactive projects and simple sprite-based games. It is used primarly by unskilled users (such as children) as an entry to [[Wikipedia:Event-driven_programming|event-driven programming]].|https://scratch.mit.edu/|{{Pkg|scratch}}}}<br />
<br />
==== Debuggers ====<br />
<br />
* {{App|Accerciser|Interactive Python accessibility explorer. It uses the AT-SPI library to inspect, examine, and interact with widgets, allowing you to check if an application is providing correct information to assistive technologies and automated testing frameworks.|https://wiki.gnome.org/Apps/Accerciser|{{Pkg|accerciser}}}}<br />
* {{App|Alleyoop|Find memory-management problems in your programs using the valgrind tool.|http://alleyoop.sourceforge.net/|{{Pkg|alleyoop}}}}<br />
* {{App|Bustle|Draws sequence diagrams of D-Bus activity. It shows signal emissions, method calls and their corresponding returns, with time stamps for each individual event and the duration of each method call.|https://www.freedesktop.org/wiki/Software/Bustle/|{{AUR|bustle-git}}}}<br />
* {{App|[[Wikipedia:Data Display Debugger|Data Display Debugger]]|Graphical front-end for command-line debuggers such as GDB.|https://www.gnu.org/software/ddd/|{{AUR|ddd}}}}<br />
* {{App|D-Feet|Easy to use D-Bus debugger to inspect D-Bus interfaces of running programs and invoke methods on those interfaces.|https://wiki.gnome.org/Apps/DFeet|{{Pkg|d-feet}}}}<br />
* {{App|GammaRay|Qt-application inspection and manipulation tool.|https://www.kdab.com/development-resources/qt-tools/gammaray/|{{Pkg|gammaray}}}}<br />
* {{App|KCachegrind|Profile data visualization tool, used to determine the most time consuming execution parts of program.|https://www.kde.org/applications/development/kcachegrind/|KDE: {{Pkg|kcachegrind}}, Qt: {{Pkg|qcachegrind}}}}<br />
* {{App|[[Wikipedia:KDbg|KDbg]]|Graphical user interface to GDB, the GNU debugger. It provides an intuitive interface for setting breakpoints, inspecting variables, and stepping through code.|http://kdbg.org/|{{Pkg|kdbg}}}}<br />
* {{App|Massif-Visualizer|Visualizer for Valgrind Massif data files.|https://phabricator.kde.org/source/massif-visualizer/|{{Pkg|massif-visualizer}}}}<br />
* {{App|[[Wikipedia:Nemiver|Nemiver]]|Easy to use standalone C/C++ debugger (GDB front-end) that integrates well in the GNOME environment.|https://wiki.gnome.org/Apps/Nemiver|{{Pkg|nemiver}}}}<br />
* {{App|Qt QDbusViewer|Tool to introspect D-Bus objects and messages.|http://doc.qt.io/qt-5/qdbusviewer.html|{{Pkg|qt5-tools}}}}<br />
* {{App|scanmem|Debugging utility designed to isolate the address of an arbitrary variable in an executing process.|https://github.com/scanmem/scanmem|CLI: {{Pkg|scanmem}}, GUI: {{Pkg|gameconqueror}}}}<br />
* {{App|Sysprof|Profiling tool that helps in finding the functions in which a program uses most of its time.|https://wiki.gnome.org/Apps/Sysprof|{{Pkg|sysprof}}}}<br />
<br />
==== Lexing and parsing ====<br />
<br />
[[Wikipedia:Lex (software)|Lex]] and [[Wikipedia:Yacc|Yacc]] are part of POSIX.<br />
<br />
* {{App|[[Wikipedia:Flex (lexical analyser generator)|flex]]|A tool for generating text-scanning programs, alternative to Lex.|https://github.com/westes/flex|{{Pkg|flex}}}}<br />
* {{App|[[Wikipedia:Berkeley Yacc|Berkeley Yacc]]|Berkeley reimplementation of the Unix parser generator Yacc.|https://invisible-island.net/byacc/|{{Pkg|byacc}}}}<br />
* {{App|[[Wikipedia:GNU bison|GNU Bison]]|The GNU general-purpose parser generator, alternative to ''byacc''.|https://www.gnu.org/software/bison/|{{Pkg|bison}}}}<br />
<br />
And then there are also:<br />
<br />
* {{App|[[Wikipedia:ANTLR|ANTLR]]|Parser generator, written in Java, for parsing structured text or binary files.|http://www.antlr.org/|{{Pkg|antlr4}}}}<br />
* {{App|LPeg|Pattern-matching library, based on PEGs, for Lua.|http://www.inf.puc-rio.br/~roberto/lpeg/|{{Pkg|lua-lpeg}}, {{Pkg|lua52-lpeg}}, {{Pkg|lua51-lpeg}}}}<br />
* {{App|peg/leg|Recursive-descent parser generators for C.|http://piumarta.com/software/peg/|{{Pkg|peg}}}}<br />
* {{App|Ragel|Compiles finite state machines from regular languages into executable C, C++, Objective-C, or D code.|http://www.colm.net/open-source/ragel/|{{Pkg|ragel}}}}<br />
<br />
==== GUI builders ====<br />
<br />
* {{App|[[Wikipedia:FLUID|FLUID]]|FLTK GUI designer.|http://www.fltk.org/|{{Pkg|fltk}}}}<br />
* {{App|[[Wikipedia:Glade Interface Designer|Glade]]|Create or open user interface designs for GTK+ applications.|https://glade.gnome.org/|{{Pkg|glade}}}}<br />
* {{App|KUIViewer|Quick viewer for Qt Designer UI File.|https://userbase.kde.org/KUIViewer|{{Pkg|kde-dev-utils}}}}<br />
* {{App|Qt Designer|Tool for designing and building graphical user interfaces (GUIs) with Qt Widgets.|http://doc.qt.io/qt-5/qtdesigner-manual.html|{{Pkg|qt5-tools}}}}<br />
<br />
==== Hex editors ====<br />
<br />
See also [[Wikipedia:Comparison of hex editors]].<br />
<br />
* {{App|Bless|High quality, full featured hex editor.|https://web.archive.org/web/20170503150524/http://home.gna.org/bless/|{{Pkg|bless}}}}<br />
* {{App|GHex|Hex editor for GNOME, which allows the user to load data from any file, view and edit it in either hex or ascii.|https://wiki.gnome.org/Apps/Ghex|{{Pkg|ghex}}}}<br />
* {{App|hyx|Minimalistic but powerful console hex editor.|https://yx7.cc/code/|{{AUR|hyx}}}}<br />
* {{App|Okteta|KDE hex editor for viewing and editing the raw data of files.|https://www.kde.org/applications/utilities/okteta/|{{Pkg|okteta}}}}<br />
<br />
==== JSON tools ====<br />
<br />
* {{App|gron|gron transforms JSON into discrete assignments to make it easier to grep.|https://github.com/tomnomnom/gron|{{AUR|gron-bin}}}}<br />
* {{App|jid|JSON incremental digger|https://github.com/simeji/jid|{{AUR|jid}}}}<br />
* {{App|jo|A command to create JSON.|https://github.com/jpmens/jo|{{AUR|jo-git}}}}<br />
* {{App|jq|Command-line JSON processor|https://stedolan.github.io/jq/|{{Pkg|jq}}}}<br />
* {{App|jsawk|Like awk, but for JSON.|https://github.com/micha/jsawk|{{AUR|jsawk-git}}}}<br />
* {{App|jshon|A JSON parser for the shell.|http://kmkeen.com/jshon/|{{Pkg|jshon}}}}<br />
* the [[Elvish]] shell has built-in support for JSON<br />
<br />
==== Literate programming ====<br />
<br />
See also [[Wikipedia:Literate programming]].<br />
<br />
* {{App|Noweb|A Simple, Extensible Tool for Literate Programming build against ICON libs and texlive|http://www.cs.tufts.edu/~nr/noweb/|{{AUR|noweb}}}}<br />
* {{App|nuweb|A Simple Literate Programming Tool|http://nuweb.sourceforge.net/|{{AUR|nuweb}}}}<br />
<br />
==== UML modelers ====<br />
<br />
See also [[Wikipedia:List of Unified Modeling Language tools]].<br />
<br />
* {{App|[[Wikipedia:ArgoUML|ArgoUML]]|UML modeling tool with support for all standard UML 1.4 diagrams.|http://argouml.tigris.org/|{{AUR|argouml}}}}<br />
* {{App|[[Eclipse]] Modeling Tools|Tools and runtimes for building model-based applications.|https://www.eclipse.org/|{{AUR|eclipse-modeling-tools}}}}<br />
* {{App|[[Wikipedia:Modelio|Modelio]]|Modeling environment supporting the main standards: UML, BPMN, MDA, SysML.|https://www.modelio.org/|{{AUR|modelio-bin}}}}<br />
* {{App|[[Wikipedia:Papyrus (software)|Papyrus]]|Model-based engineering tool based on Eclipse.|https://www.eclipse.org/papyrus/|{{AUR|papyrus}}}}<br />
* {{App|[[Wikipedia:PlantUML|PlantUML]]|Tool to create UML diagrams from a plain text language.|http://plantuml.com/|{{AUR|plantuml}}}}<br />
* {{App|PlantUML QEditor|PlantUML editor written in Qt.|https://github.com/borco/plantumlqeditor|{{AUR|plantumlqeditor-git}}}}<br />
* {{App|[[Wikipedia:Umbrello UML Modeller|Umbrello]]|Unified Modelling Language (UML) diagram program based on KDE Technology.|https://umbrello.kde.org/|{{Pkg|umbrello}}}}<br />
* {{App|[[Wikipedia:UML Designer|UML Designer]]|Graphical tool based on Eclipse to edit and visualize UML models.|http://www.umldesigner.org/|{{AUR|umldesigner}}}}<br />
* {{App|[[Wikipedia:UMLet|UMLet]]|UML tool with a simple user interface: draw UML diagrams fast, build sequence and activity diagrams from plain text, export diagrams to eps, pdf, jpg, svg, and clipboard, share diagrams using Eclipse, and create new, custom UML elements.|http://umlet.com/|{{AUR|umlet}}}}<br />
* {{App|UML/INTERLIS-editor|Facilitate the application of the model driven approach to a greater number of users.|http://www.umleditor.org/|{{AUR|umleditor}}}}<br />
* {{App|Violet|Very easy to learn and use UML editor that draws nice-looking diagrams.|https://sourceforge.net/projects/violet/|{{AUR|violetumleditor}}}}<br />
<br />
==== API documentation browsers ====<br />
<br />
* {{App|[[Wikipedia:GNOME Devhelp|Devhelp]]|Developer tool for browsing and searching API documentation.|https://wiki.gnome.org/Apps/Devhelp|{{Pkg|devhelp}}}}<br />
* {{App|Doc Browser|API documentation browser with support for DevDocs and Hoogle.|https://github.com/qwfy/doc-browser|{{AUR|doc-browser-git}}}}<br />
* {{App|Qt Assistant|Tool for viewing on-line documentation in Qt help file format.|http://doc.qt.io/qt-5/qtassistant-index.html|{{Pkg|qt5-tools}}}}<br />
* {{App|quickDocs|Fast developer docs reader for reading Valadoc and DevDocs.|https://github.com/mdh34/quickDocs|{{AUR|quickdocs}}}}<br />
* {{App|Zeal|Offline API documentation browser for software developers.|https://zealdocs.org/|{{Pkg|zeal}}}}<br />
<br />
==== Issue tracking systems ====<br />
<br />
* {{App|[[Bugzilla]]|Bug tracker from Mozilla.|https://www.bugzilla.org|{{Pkg|bugzilla}}}}<br />
* {{App|[[Flyspray]]|Lightweight, web-based bug tracking system written in PHP|https://www.flyspray.org/|{{Pkg|flyspray}}}}<br />
* {{App|[[MantisBT]]|Web-based issue tracking system|https://www.mantisbt.org/|{{AUR|mantisbt}}}}<br />
* {{App|[[Redmine]]|A flexible project management web application. Written using the Ruby on Rails, it is cross-platform and cross-database.|https://www.redmine.org|{{AUR|redmine}}}}<br />
* {{App|[[Request Tracker]] (RT)|The leading open-source issue tracking system.|https://bestpractical.com/rt/|{{AUR|rt}}}}<br />
* {{App|[[Trac]]|Trac Integrated SCM & Project Management using Apache & Subversion.|https://trac.edgewall.org/|{{AUR|trac}}}}<br />
<br />
See also [[Git server#Advanced web applications]].<br />
<br />
==== Code review ====<br />
<br />
* {{App|Gerrit|A web-based code review tool built on top of the Git version control system|https://www.gerritcodereview.com/|{{AUR|gerrit}}}}<br />
* [[GitLab]] also supports code reviews.<br />
<br />
See also [[Wikipedia:List of tools for code review]].<br />
<br />
==== Game development ====<br />
<br />
See also [[Wikipedia:List of game engines]].<br />
<br />
* {{App|GDevelop|Game creator designed to be used by everyone - no programming skills required.|https://gdevelop-app.com/|{{AUR|gdevelop}}}}<br />
* {{App|[[Godot Engine|Godot]]|Advanced, feature-packed, multi-platform 2D and 3D game engine. Create games with ease, using Godot's unique approach to game development.|https://godotengine.org/|{{AUR|godot}}}}<br />
* {{App|LibreSprite|Animated sprite editor and pixel art tool lets you create 2D animations for videogames.|https://github.com/LibreSprite/LibreSprite|{{AUR|libresprite}}}}<br />
* {{App|Tiled|General purpose 2D level editor with powerful tile map editing features. It’s built to be easy to use and is suitable for many type of games.|https://www.mapeditor.org/|{{Pkg|tiled}}}}<br />
<br />
=== Text input ===<br />
<br />
==== Character selectors ====<br />
<br />
* {{App|GNOME Characters|Character map application for GNOME.|https://gitlab.gnome.org/GNOME/gnome-characters|{{Pkg|gnome-characters}}}}<br />
* {{App|[[Wikipedia:GNOME Character Map|gucharmap]]|GTK+ 3 character selector for GNOME.|https://wiki.gnome.org/Apps/Gucharmap|{{pkg|gucharmap}}}}<br />
* {{App|KCharSelect|Tool to select special characters from all installed fonts and copy them into the clipboard. Part of {{Grp|kdeutils}}.|https://utils.kde.org/projects/kcharselect/|{{Pkg|kcharselect}}}}<br />
<br />
==== On-screen keyboards ====<br />
<br />
* {{App|CellWriter|Grid-entry handwriting recognition input panel.|https://github.com/risujin/cellwriter|{{Pkg|cellwriter}}}}<br />
* {{App|eekboard|Easy to use virtual keyboard toolkit.|https://github.com/ueno/eekboard|{{AUR|eekboard}}}}<br />
* {{App|Florence|Extensible scalable on-screen virtual keyboard for GNOME that stays out of your way when not needed.|https://sourceforge.net/projects/florence/|{{AUR|florence}}}}<br />
* {{App|Onboard|Onscreen keyboard useful for tablet PC users and for mobility impaired users.|https://launchpad.net/onboard|{{Pkg|onboard}}}}<br />
* {{App|qtvkbd|Virtual keyboard written in Qt, a fork of kvkbd.|https://github.com/Alexander-r/qtvkbd|{{AUR|qtvkbd}}}}<br />
* {{App|QVKbd|Virtual keyboard written in Qt.|https://github.com/KivApple/qvkbd|{{Pkg|qvkbd}}}}<br />
* {{App|theShell On Screen Keyboard|Touchscreen keyboard for theShell.|https://github.com/vicr123/ts-kbd|{{AUR|ts-kbd}}}}<br />
* {{App|xvkbd|Virtual keyboard for X window system.|http://t-sato.in.coocan.jp/xvkbd/|{{AUR|xvkbd}}}}<br />
<br />
==== Keyboard layout switchers ====<br />
<br />
* {{App|fbxkb|A NETWM compliant keyboard indicator and switcher. It shows a flag of current keyboard in a systray area and allows you to switch to another one.|http://fbxkb.sourceforge.net/|{{AUR|fbxkb}}}}<br />
* {{App|xxkb|A lightweight keyboard layout indicator and switcher.|https://sourceforge.net/projects/xxkb/|{{Pkg|xxkb}}}}<br />
* {{App|qxkb|A keyboard switcher written in Qt.|https://github.com/disels/qxkb|{{AUR|qxkb}}}}<br />
* {{App|[[Wikipedia:X Neural Switcher|X Neural Switcher]]|A text analyser, it detects the language of the input and corrects the keyboard layout if needed.|http://www.xneur.ru/|{{AUR|xneur}}, {{AUR|gxneur}} (GUI)}}<br />
<br />
==== Input methods ====<br />
<br />
See the main article: [[Internationalization#Input methods]].<br />
<br />
=== Disks ===<br />
<br />
==== Partitioning tools ====<br />
<br />
See [[Partitioning#Partitioning tools]].<br />
<br />
==== Formatting tools ====<br />
<br />
See [[File systems#Types of file systems]].<br />
<br />
==== Cloning tools ====<br />
<br />
See [[Disk cloning#Disk cloning software]].<br />
<br />
==== Mount tools ====<br />
<br />
See also [[udisks#Mount helpers]].<br />
<br />
* {{App|9mount|Mount 9p filesystems.|http://sqweek.net/code/9mount/|{{AUR|9mount}}}}<br />
* {{App|cryptmount|Mount an encrypted file system as a regular user.|https://sourceforge.net/projects/cryptmount/|{{AUR|cryptmount}}}}<br />
* {{App|KDiskFree|Displays information about hard disks and other storage devices. It also allows to mount and unmount drives and view them in a file manager.|https://www.kde.org/applications/system/kdiskfree/|{{Pkg|kdf}}}}<br />
* {{App|ldm|A lightweight daemon that mounts drives automagically using ''udev''|https://github.com/LemonBoy/ldm|{{AUR|ldm}}}}<br />
* {{App|pmount|Mount ''source'' as a regular user to an automatically created destination {{ic|/media/''source_name''}}.|https://pmount.alioth.debian.org/|{{AUR|pmount}}}}<br />
* {{App|pmount-safe-removal|Mount removable devices as regular user with safe removal|https://mywaytoarch.tumblr.com/post/13111098534/pmount-safe-removal-of-usb-device|{{AUR|pmount-safe-removal}}}}<br />
* {{App|udevil|Mounts removable devices as a regular user, show device info, and monitor device changes. Only depends on ''udev'' and glib.|https://ignorantguru.github.io/udevil|{{Pkg|udevil}}}}<br />
* {{App|ws|Mount Windows network shares ([[Wikipedia:Server Message Block|CIFS]] and [[Wikipedia:Virtual file system|VFS]]).|https://sourceforge.net/projects/winshares/|{{AUR|ws}}}}<br />
* {{App|zulucrypt|A GUI frontend for cryptsetup to create, manage and mount encrypted volumes; supports encfs as well|https://mhogomchungu.github.io/zuluCrypt/|{{AUR|zulucrypt}}}}<br />
<br />
==== Disk usage display ====<br />
<br />
* {{App|duc|A library and suite of tools for inspecting disk usage.|http://duc.zevv.nl/|{{AUR|duc}}}}<br />
* {{App|[[Wikipedia:Filelight|Filelight]]|Disk usage analyzer that creates an interactive map of concentric, segmented rings that help visualise disk usage on your computer.|https://www.kde.org/applications/utilities/filelight|{{Pkg|filelight}}}}<br />
* {{App|[[Wikipedia:Disk Usage Analyzer|GNOME Disk Usage Analyzer]]|Disk usage analyzer for the [[GNOME]] desktop to check folder sizes and available disk space.|https://wiki.gnome.org/Apps/DiskUsageAnalyzer|{{Pkg|baobab}}}}<br />
* {{App|Graphical Disk Map|Disk usage analyzer that draws a map of rectangles sized according to file or dir sizes.|http://gdmap.sourceforge.net/|{{Pkg|gdmap}}}}<br />
* {{App|gt5|Diff-capable "du-browser".|http://gt5.sourceforge.net|{{AUR|gt5}}}}<br />
* {{App|MATE Disk Usage Analyzer|Disk usage analyzing tool for MATE Desktop.|https://github.com/mate-desktop/mate-utils|{{Pkg|mate-utils}}}}<br />
* {{App|ncdu|Simple ncurses disk usage analyzer.|http://dev.yorhel.nl/ncdu|{{Pkg|ncdu}}}}<br />
* {{App|qdirstat|Qt-based directory statistics (KDirStat/K4DirStat without any KDE - from the original KDirStat author).|https://github.com/shundhammer/qdirstat|{{AUR|qdirstat}}}}<br />
<br />
==== Disk health status ====<br />
<br />
See [[S.M.A.R.T.#GUI Applications]].<br />
<br />
==== File recovery tools ====<br />
<br />
See [[File recovery#List of utilities]].<br />
<br />
==== Disk cleaning ====<br />
<br />
* {{App|[[Wikipedia:BleachBit|BleachBit]]|Frees disk space and guards your privacy; frees cache, deletes cookies, clears Internet history, shreds temporary files, deletes logs, and discards junk you didn't know was there.|https://www.bleachbit.org/|{{Pkg|bleachbit}}}}<br />
* {{App|[[Wikipedia:fdupes|fdupes]]|Program for identifying or deleting duplicate files residing within specified directories.|https://github.com/adrianlopezroche/fdupes|{{Pkg|fdupes}}}}<br />
* {{App|fslint|A utility to find and clean various forms of lint on a filesystem.|https://www.pixelbeat.org/fslint/|{{AUR|fslint}}}}<br />
* {{App|gconf-cleaner|cleans up the unknown/invalid GConf keys that still sitting down on your GConf database.|https://code.google.com/archive/p/gconf-cleaner/|{{AUR|gconf-cleaner}}}}<br />
* {{App|rmlint|Tool to quickly find (and optionally remove) duplicate files and other lint.|https://github.com/sahib/rmlint|CLI: {{Pkg|rmlint}}, GUI: {{Pkg|rmlint-shredder}}}}<br />
* {{App|Sweeper|System cleaning utility for KDE.|https://utils.kde.org/projects/sweeper/|{{Pkg|sweeper}}}}<br />
<br />
==== Disk image writing ====<br />
<br />
See also [[Wikipedia:List of tools to create Live USB systems]].<br />
<br />
* {{App|Deepin Boot Maker|Tool to make boot disk for Deepin OS.|https://www.deepin.org/en/original/deepin-boot-maker/|{{Pkg|deepin-boot-maker}}}}<br />
* {{App|Etcher|Flash OS images to SD cards & USB drives, safely and easily. Based on the [https://electronjs.org/ Electron] platform.|https://etcher.io/|{{AUR|etcher}}}}<br />
* {{App|[[Wikipedia:Fedora Media Writer|Fedora Media Writer]]|Tool that helps users put Fedora images on their portable drives such as flash disks.|https://github.com/FedoraQt/MediaWriter|{{AUR|mediawriter}}}}<br />
* {{App|GNOME MultiWriter|Write an ISO file to multiple USB devices at once.|https://wiki.gnome.org/Apps/MultiWriter|{{Pkg|gnome-multi-writer}}}}<br />
* {{App|ISOImageWriter|Tool to write a .iso file to a USB disk.|https://community.kde.org/ISOImageWriter|{{AUR|isoimagewriter}}}}<br />
* {{App|LiveUSB Install|Install various Linux distributions and operating systems on removable flash drive or external disk drive.|http://live.learnfree.eu/|{{AUR|live-usb-install}}}}<br />
* {{App|MultiBootUSB|Install multiple live Linux on a USB disk non destructively and option to uninstall distros.|http://multibootusb.org/|{{AUR|multibootusb}}}}<br />
* {{App|MultiSystem|GUI tool to create a USB system that can boot multiple distro's.|http://liveusb.info/|{{AUR|multisystem}}}}<br />
* {{App|[[Wikipedia:SUSE Studio ImageWriter|SUSE Studio ImageWriter]]|Utility for writing raw disk images & hybrid isos to USB keys.|https://github.com/openSUSE/imagewriter|{{AUR|imagewriter}}}}<br />
* {{App|[[Wikipedia:UNetbootin|UNetbootin]]|Installs Linux/BSD distributions to a partition or USB drive.|https://unetbootin.github.io/|{{AUR|unetbootin}}}}<br />
* {{App|WoeUSB|Simple tool to create USB stick windows installer from an ISO image or a real DVD. (Fork of WinUSB).|https://github.com/slacka/WoeUSB|{{AUR|woeusb}}}}<br />
<br />
=== System ===<br />
<br />
==== Task managers ====<br />
<br />
* {{App|Deepin System Monitor|Monitor system process status for Deepin desktop.|https://www.deepin.org/en/original/deepin-system-monitor/|{{Pkg|deepin-system-monitor}}}}<br />
* {{App|GNOME System Monitor|System monitor for [[GNOME]] to view and manage system resources.|https://wiki.gnome.org/Apps/SystemMonitor|{{Pkg|gnome-system-monitor}}}}<br />
* {{App|GNOME Usage|View information about use of system resources, like memory and disk space.|https://wiki.gnome.org/Apps/Usage|{{Pkg|gnome-usage}}}}<br />
* {{App|[[Wikipedia:Htop|htop]]|Simple, ncurses interactive process viewer.|http://htop.sourceforge.net/|{{Pkg|htop}}}}<br />
* {{App|[[Wikipedia:KDE System Guard|KSysGuard]]|System monitor for [[KDE]] to monitor running processes and system performance.|https://userbase.kde.org/KSysGuard|{{Pkg|ksysguard}}}}<br />
* {{App|Linux Process Explorer|Graphical process explorer for Linux.|https://sourceforge.net/projects/procexp/|{{AUR|procexp}}}}<br />
* {{App|LXTask|Lightweight task manager for [[LXDE]].|https://wiki.lxde.org/en/LXTask|{{Pkg|lxtask}}}}<br />
* {{App|MATE System Monitor|System monitor for [[MATE]].|https://github.com/mate-desktop/mate-system-monitor|{{Pkg|mate-system-monitor}}}}<br />
* {{App|Task Manager|GTK2 process management application for [[Xfce]].|http://goodies.xfce.org/projects/applications/xfce4-taskmanager|{{Pkg|xfce4-taskmanager}}}}<br />
<br />
==== System monitors ====<br />
<br />
See also [[:Category:Status monitoring and notification]]<br />
<br />
* {{App|[[Conky]]|Lightweight, scriptable system monitor.|https://github.com/brndnmtthws/conky|{{Pkg|conky}}}}<br />
* {{App|Collectd|Simple, extensible system monitoring daemon based on [http://oss.oetiker.ch/rrdtool/ rrdtool]. It has a small footprint and can be set up either stand-alone or as a server/client application.|https://collectd.org/|{{Pkg|collectd}}}}<br />
* {{App|collectl|Collectl is a light-weight performance monitoring tool capable of reporting interactively as well as logging to disk. It reports statistics on cpu, disk, infiniband, lustre, memory, network, nfs, process, quadrics, slabs and more in easy to read format.|http://collectl.sourceforge.net/|{{AUR|collectl}}}}<br />
* {{App|dstat|Versatile resource statistics tool.|http://dag.wieers.com/home-made/dstat/|{{Pkg|dstat}}}}<br />
* {{App|Fsniper|Daemon to run scripts based on changes in files monitored by inotify.|http://projects.l3ib.org/fsniper/|{{AUR|fsniper}}}}<br />
* {{App|[[Wikipedia:GKrellM|GKrellM]]|Simple, flexible system monitor package for [[GTK+]] with many plug-ins.|http://billw2.github.io/gkrellm/gkrellm.html|{{Pkg|gkrellm}}}}<br />
* {{App|glances|CLI curses-based monitoring tool in Python.|http://nicolargo.github.io/glances|{{Pkg|glances}}}}<br />
* {{App|netdata|Web-based real-time performance monitor.|https://github.com/firehol/netdata/wiki|{{Pkg|netdata}}}}<br />
* {{App|[[Telegraf]]|Agent written in Go for collecting, processing, aggregating, and writing metrics.|https://docs.influxdata.com/telegraf/latest/|{{AUR|telegraf}}}}<br />
* {{App|[[Paramano]]|Light battery monitor and a CPU frequency scaler. Forked from [http://trayfreq.sourceforge.net/ trayfreq]|https://github.com/phillid/paramano|{{AUR|paramano}}}}<br />
* {{app|Sysstat|Collection of resource monitoring tools: iostat, isag, mpstat, pidstat, sadf, sar.|http://pagesperso-orange.fr/sebastien.godard/|{{Pkg|sysstat}}}}<br />
* {{App|xosview|System monitor that resembles gr_osview from SGI IRIX.|http://www.pogo.org.uk/~mark/xosview/|{{AUR|xosview}}}}<br />
<br />
==== Hardware sensor monitoring ====<br />
<br />
See [[lm_sensors#Graphical front-ends]].<br />
<br />
==== System information viewers ====<br />
<br />
===== Console =====<br />
<br />
* {{App|alsi|A system information tool for Arch Linux. It can be configured for every other system without even touching the source code of the script.|http://trizenx.blogspot.ro/2012/08/alsi.html|{{AUR|alsi}}}}<br />
* {{App|archey2|Simple python script that displays the arch logo and some basic information. Python 2.x version.|https://github.com/djmelik/archey|{{AUR|archey2}}}}<br />
* {{App|[[archey3]]|Python script to display system infomation alongside the Arch Linux logo.|https://lclarkmichalek.github.io/archey3|{{pkg|archey3}}}}<br />
* {{App|dmidecode|It reports information about your system's hardware as described in your system BIOS according to the SMBIOS/DMI standard.|http://www.nongnu.org/dmidecode/|{{Pkg|dmidecode}}}}<br />
* {{App|hwdetect|Simple script to list modules that are exported in {{ic|/sys/}}.|https://projects.archlinux.org/|{{pkg|hwdetect}}}}<br />
* {{App|hwinfo|Powerful hardware detection tool come from openSUSE.|https://github.com/openSUSE/hwinfo|{{pkg|hwinfo}}}}<br />
* {{App|inxi|A script to get system information.|https://github.com/smxi/inxi|{{AUR|inxi}}}}<br />
* {{App|neofetch|A fast, highly customizable system info script that supports displaying images with w3m.|https://github.com/dylanaraps/neofetch|{{Pkg|neofetch}}}}<br />
* {{App|screenfetch|Similar to archey but has an option to take a screenshot. Written in bash.|https://github.com/KittyKatt/screenFetch|{{Pkg|screenfetch}}}}<br />
<br />
===== Graphical =====<br />
<br />
* {{App|hardinfo|A small application that displays information about your hardware and operating system, it looks like the Device Manager in Windows.|http://hardinfo.berlios.de/HomePage|{{Pkg|hardinfo}}}}<br />
* {{App|i-Nex|An application that gathers information for hardware components available on your system and displays it using an user interface similar to the popular Windows tool CPU-Z.|http://i-nex.linux.pl/|{{AUR|i-nex-git}}}}<br />
* {{App|lshw|A small tool to provide detailed information on the hardware configuration of the machine with CLI and GTK interfaces.|http://ezix.org/project/wiki/HardwareLiSter|{{Pkg|lshw}}}}<br />
* {{App|KDE Info Center|Centralized and convenient overview of system information for KDE.|https://www.kde.org/applications/system/kinfocenter/|{{Pkg|kinfocenter}}}}<br />
* {{App|USBView|Display the topology of devices on the USB bus.|http://www.kroah.com/linux/usb/|{{Pkg|usbview}}}}<br />
<br />
==== System log viewers ====<br />
<br />
* {{App|GNOME Logs|Viewer for the systemd journal. Part of {{Grp|gnome}}.|https://wiki.gnome.org/Apps/Logs|{{Pkg|gnome-logs}}}}<br />
* {{App|GNOME System Log|System log viewer for GNOME.|https://gitlab.gnome.org/GNOME/gnome-system-log|{{Pkg|gnome-system-log}}}}<br />
* {{App|KSystemLog|System log viewer tool for KDE.|https://www.kde.org/applications/system/ksystemlog/|{{Pkg|ksystemlog}}}}<br />
* {{App|MATE System Log|System log viewer for MATE.|https://github.com/mate-desktop/mate-utils|{{Pkg|mate-utils}}}}<br />
* {{App|Pacman Log Viewer|Tool used to inspect pacman log file, in particular it lists installed, removed and upgraded packages letting you to filter by package's name and/or date.|https://www.opendesktop.org/content/show.php?content&#61;150484|{{Pkg|pacmanlogviewer}}}}<br />
<br />
==== Font viewers ====<br />
<br />
See also [[Wikipedia:Font management software]].<br />
* {{App|Font Manager|Simple font management for GTK+ desktop environments.|https://fontmanager.github.io/|{{AUR|font-manager}}}}<br />
* {{App|Fonty Python|Manage, view and find your fonts.|https://savannah.nongnu.org/projects/fontypython|{{AUR|fontypython}}}}<br />
* {{App|GNOME Fonts|Font viewer for GNOME.|https://gitlab.gnome.org/GNOME/gnome-font-viewer|{{Pkg|gnome-font-viewer}}}}<br />
* {{App|KFontview|KDE application to view and install different types of fonts.|https://docs.kde.org/trunk5/en/kde-workspace/kfontview/index.html|{{Pkg|plasma-desktop}}}}<br />
* {{App|MATE Font Viewer|Font viewer for MATE.|https://github.com/mate-desktop/mate-control-center|{{Pkg|mate-utils}}}}<br />
* {{App|Waterfall|GTK+ application to view all characters of font in all sizes.|https://keithp.com/cgit/gwaterfall.git|{{Pkg|gwaterfall}}}}<br />
<br />
==== Help viewers ====<br />
<br />
See [[man page#Viewer applications]].<br />
<br />
==== Command schedulers ====<br />
<br />
See also [[Cron]].<br />
<br />
* {{App|FcronQ|Fcron GUI, an advanced periodic command scheduler.|http://fcronq.xavion.name/|{{AUR|fcronq}}}}<br />
* {{App|GNOME Schedule|Graphical interface to crontab and at for GNOME.|http://gnome-schedule.sourceforge.net/|{{Pkg|gnome-schedule}}}}<br />
* {{App|KCron|Tool for KDE to run applications in the background at regular intervals. It's a graphical interface to the Cron command.|https://userbase.kde.org/KCron|{{Pkg|kcron}}}}<br />
* {{App|KTimer|Little tool for KDE to execute programs after some time. It allows you to enter several tasks and to set a timer for each of them. The timers for each task can be started, stopped, changed, or looped.|https://www.kde.org/applications/utilities/ktimer/|{{Pkg|ktimer}}}}<br />
<br />
==== Shutdown timers ====<br />
<br />
* {{App|GShutdown|Advanced shutdown utility which allows you to schedule the shutdown or the restart of your computer, or logout your actual session.|https://gshutdown.tuxfamily.org/|{{AUR|gshutdown}}}}<br />
* {{App|Hsiu-Ming's Timer|Graphical shutdown timer, which enables you to shutdown, turn off monitor, reboot or play sound after a period of time.|https://cges30901.github.io/hmtimer-website/|{{AUR|hmtimer}}}}<br />
* {{App|KShutdown|Graphical shutdown utility, which allows you to turn off or suspend a computer at a specified time. It features various time and delay options, command-line support, and notifications.|https://kshutdown.sourceforge.io/|{{Pkg|kshutdown}}}}<br />
<br />
==== Clock synchronization ====<br />
<br />
See [[Time synchronization]].<br />
<br />
==== Screen management ====<br />
<br />
See [[Xrandr#Graphical front-ends]].<br />
<br />
==== Backlight management ====<br />
<br />
See [[Backlight#Backlight utilities]].<br />
<br />
==== Color management ====<br />
<br />
See [[ICC profiles#Utilities]] and [[Backlight#Color correction]].<br />
<br />
==== Printer management ====<br />
<br />
See [[CUPS#GUI applications]].<br />
<br />
==== Bluetooth management ====<br />
<br />
See [[Bluetooth#Front-ends]].<br />
<br />
==== Power management ====<br />
<br />
See [[Power management#Userspace tools]].<br />
<br />
==== Package management ====<br />
<br />
See [[pacman tips#Utilities]].</div>NeedsCoffeehttps://wiki.archlinux.org/index.php?title=Apache_HTTP_Server&diff=563291Apache HTTP Server2019-01-14T16:06:09Z<p>NeedsCoffee: /* TLS */ Wikipedia link</p>
<hr />
<div>[[Category:Web server]]<br />
[[Category:Apache]]<br />
[[cs:Apache HTTP Server]]<br />
[[de:LAMP Installation]]<br />
[[el:Apache HTTP Server]]<br />
[[es:Apache HTTP Server]]<br />
[[fa:LAMP]]<br />
[[fr:Lamp]]<br />
[[it:Apache HTTP Server]]<br />
[[ja:Apache HTTP Server]]<br />
[[ko:Apache HTTP Server]]<br />
[[pl:Apache HTTP Server]]<br />
[[ru:Apache HTTP Server]]<br />
[[sr:Apache HTTP Server]]<br />
[[zh-hans:Apache HTTP Server]]<br />
{{Related articles start}}<br />
{{Related|XAMPP}}<br />
{{Related|/mod_perl}}<br />
{{Related articles end}}<br />
The [[Wikipedia:Apache HTTP Server|Apache HTTP Server]], or Apache for short, is a very popular web server, developed by the Apache Software Foundation.<br />
<br />
This article describes how to set up Apache and how to optionally integrate it with [[PHP]].<br />
<br />
== Installation ==<br />
[[Install]] the {{Pkg|apache}} package.<br />
<br />
== Configuration ==<br />
Apache configuration files are located in {{ic|/etc/httpd/conf}}. The main configuration file is {{ic|/etc/httpd/conf/httpd.conf}}, which includes various other configuration files.<br />
The default configuration file should be fine for a simple setup. By default, it will serve the directory {{ic|/srv/http}} to anyone who visits your website.<br />
<br />
To start Apache, start {{ic|httpd.service}} using [[systemd#Using units|systemd]].<br />
<br />
Apache should now be running. Test by visiting http://localhost/ in a web browser. It should display a simple index page.<br />
<br />
For optional further configuration, see the following sections.<br />
<br />
=== Advanced options ===<br />
<br />
See the [https://httpd.apache.org/docs/trunk/mod/directives.html full list of Apache configuration directives] and the [https://httpd.apache.org/docs/trunk/mod/quickreference.html directive quick reference].<br />
<br />
These options in {{ic|/etc/httpd/conf/httpd.conf}} might be interesting for you:<br />
<br />
User http<br />
:For security reasons, as soon as Apache is started by the root user (directly or via startup scripts) it switches to this UID. The default user is ''http'', which is created automatically during installation.<br />
<br />
Listen 80<br />
:This is the port Apache will listen to. For Internet-access with router, you have to forward the port.<br />
<br />
:If you want to setup Apache for local development you may want it to be only accessible from your computer. Then change this line to {{ic|Listen 127.0.0.1:80}}.<br />
<br />
ServerAdmin you@example.com<br />
:This is the admin's email address which can be found on e.g. error pages.<br />
<br />
DocumentRoot "/srv/http"<br />
:This is the directory where you should put your web pages.<br />
<br />
:Change it, if you want to, but do not forget to also change {{ic|<Directory "/srv/http">}} to whatever you changed your {{ic|DocumentRoot}} to, or you will likely get a '''403 Error''' (lack of privileges) when you try to access the new document root. Do not forget to change the {{ic|Require all denied}} line to {{ic|Require all granted}}, otherwise you will get a '''403 Error'''. Remember that the DocumentRoot directory and its parent folders must allow execution permission to others (can be set with {{ic|chmod o+x /path/to/DocumentRoot}}), otherwise you will get a '''403 Error'''.<br />
<br />
AllowOverride None<br />
:This directive in {{ic|<Directory>}} sections causes Apache to completely ignore {{ic|.htaccess}} files. Note that this is now the default for Apache 2.4, so you need to explicitly allow overrides if you plan to use {{ic|.htaccess}} files. If you intend to use {{ic|mod_rewrite}} or other settings in {{ic|.htaccess}} files, you can allow which directives declared in that file can override server configuration. For more info refer to the [http://httpd.apache.org/docs/current/mod/core.html#allowoverride Apache documentation].<br />
<br />
{{Tip|If you have issues with your configuration you can have Apache check the configuration with: {{ic|apachectl configtest}}}}<br />
<br />
More settings can be found in {{ic|/etc/httpd/conf/extra/httpd-default.conf}}:<br />
<br />
To turn off your server's signature:<br />
ServerSignature Off<br />
<br />
To hide server information like Apache and PHP versions:<br />
ServerTokens Prod<br />
<br />
=== User directories ===<br />
<br />
User directories are available by default through http://localhost/~yourusername/ and show the contents of {{ic|~/public_html}} (this can be changed in {{ic|/etc/httpd/conf/extra/httpd-userdir.conf}}).<br />
<br />
If you do not want user directories to be available on the web, comment out the following line in {{ic|/etc/httpd/conf/httpd.conf}}:<br />
<br />
Include conf/extra/httpd-userdir.conf<br />
<br />
{{Accuracy|It is not necessary to set {{ic|+x}} for every users, setting it only for the webserver via ACLs suffices (see [[Access Control Lists#Granting execution permissions for private files to a Web Server]]).}}<br />
<br />
You must make sure that your home directory permissions are set properly so that Apache can get there. Your home directory and {{ic|~/public_html}} must be executable for others ("rest of the world"):<br />
<br />
$ chmod o+x ~<br />
$ chmod o+x ~/public_html<br />
$ chmod -R o+r ~/public_html<br />
<br />
Restart {{ic|httpd.service}} to apply any changes. See also [[Umask#Set the mask value]].<br />
<br />
=== TLS ===<br />
{{Warning|If you deploy [[Wikipedia:Transport Layer Security|TLS]], be sure to follow [https://weakdh.org/sysadmin.html weakdh.org's guide] to prevent vulnerabilities. For more information see [[Server-side TLS]].}}<br />
<br />
Firstly [[obtain a certificate]].<br />
<br />
In {{ic|/etc/httpd/conf/httpd.conf}}, uncomment the following three lines:<br />
LoadModule ssl_module modules/mod_ssl.so<br />
LoadModule socache_shmcb_module modules/mod_socache_shmcb.so<br />
Include conf/extra/httpd-ssl.conf<br />
<br />
If using {{ic|certbot --apache}}, the following line needs to be uncommented as well:<br />
LoadModule rewrite_module modules/mod_rewrite.so<br />
<br />
For TLS, you will need a key and certificate. If you own a public domain, you can use [[Let's Encrypt]] to obtain a certificate for free, otherwise follow [[#Create a key and (self-signed) certificate]].<br />
<br />
After obtaining a key and certificate, make sure the {{ic|SSLCertificateFile}} and {{ic|SSLCertificateKeyFile}} lines in {{ic|/etc/httpd/conf/extra/httpd-ssl.conf}} point to the key and certificate. If a concatenated chain of CA certificates was also generated, add that filename against {{ic|SSLCertificateChainFile}}.<br />
<br />
Finally, restart {{ic|httpd.service}} to apply any changes.<br />
<br />
{{Tip|Mozilla has a useful [[MozillaWiki:Security/Server_Side_TLS|SSL/TLS article]] as well as an [https://mozilla.github.io/server-side-tls/ssl-config-generator/ automated tool] to help create a more secure configuration.}}<br />
<br />
==== Create a key and (self-signed) certificate ====<br />
<br />
{{Remove|Duplicates [[OpenSSL#Certificates]]|section=Removal of Create a key and (self-signed) certificate section}}<br />
<br />
Create a private key and self-signed certificate. This is adequate for most installations that do not require a [[wikipedia:Certificate signing request|CSR]]:<br />
<br />
# cd /etc/httpd/conf<br />
# openssl req -new -x509 -nodes -newkey rsa:4096 -keyout server.key -out server.crt -days 1095<br />
# chmod 400 server.key<br />
<br />
{{Note|The -days switch is optional and RSA keysize can be as low as 2048 (default).}}<br />
<br />
If you need to create a [[wikipedia:Certificate signing request|CSR]], follow these keygen instructions instead of the above:<br />
<br />
# cd /etc/httpd/conf<br />
# openssl genpkey -algorithm RSA -pkeyopt rsa_keygen_bits:4096 -out server.key<br />
# chmod 400 server.key<br />
# openssl req -new -sha256 -key server.key -out server.csr<br />
# openssl x509 -req -days 1095 -in server.csr -signkey server.key -out server.crt<br />
<br />
{{Note|For more openssl options, read the [https://www.openssl.org/docs/apps/openssl.html man page] or peruse openssl's [https://www.openssl.org/docs/ extensive documentation].}}<br />
<br />
=== Virtual hosts ===<br />
<br />
{{Note|You will need to add a separate {{ic|<VirtualHost *:443>}} section for virtual host SSL support.<br />
See [[#Managing many virtual hosts]] for an example file.}}<br />
<br />
If you want to have more than one host, uncomment the following line in {{ic|/etc/httpd/conf/httpd.conf}}:<br />
Include conf/extra/httpd-vhosts.conf<br />
<br />
In {{ic|/etc/httpd/conf/extra/httpd-vhosts.conf}} set your virtual hosts. The default file contains an elaborate example that should help you get started.<br />
<br />
To test the virtual hosts on your local machine, add the virtual names to your {{ic|/etc/hosts}} file:<br />
127.0.0.1 domainname1.dom <br />
127.0.0.1 domainname2.dom<br />
<br />
Restart {{ic|httpd.service}} to apply any changes.<br />
<br />
==== Managing many virtual hosts ====<br />
<br />
If you have a huge amount of virtual hosts, you may want to easily disable and enable them. It is recommended to create one configuration file per virtual host and store them all in one folder, eg: {{ic|/etc/httpd/conf/vhosts}}.<br />
<br />
First create the folder:<br />
# mkdir /etc/httpd/conf/vhosts<br />
<br />
Then place the single configuration files in it:<br />
# nano /etc/httpd/conf/vhosts/domainname1.dom<br />
# nano /etc/httpd/conf/vhosts/domainname2.dom<br />
...<br />
<br />
In the last step, {{ic|Include}} the single configurations in your {{ic|/etc/httpd/conf/httpd.conf}}:<br />
#Enabled Vhosts:<br />
Include conf/vhosts/domainname1.dom<br />
Include conf/vhosts/domainname2.dom<br />
<br />
You can enable and disable single virtual hosts by commenting or uncommenting them.<br />
<br />
A very basic vhost file will look like this:<br />
<br />
{{hc|/etc/httpd/conf/vhosts/domainname1.dom|<nowiki><br />
<VirtualHost *:80><br />
ServerAdmin webmaster@domainname1.dom<br />
DocumentRoot "/home/user/http/domainname1.dom"<br />
ServerName domainname1.dom<br />
ServerAlias domainname1.dom<br />
ErrorLog "/var/log/httpd/domainname1.dom-error_log"<br />
CustomLog "/var/log/httpd/domainname1.dom-access_log" common<br />
<br />
<Directory "/home/user/http/domainname1.dom"><br />
Require all granted<br />
</Directory><br />
</VirtualHost><br />
<br />
<VirtualHost *:443><br />
ServerAdmin webmaster@domainname1.dom<br />
DocumentRoot "/home/user/http/domainname1.dom"<br />
ServerName domainname1.dom:443<br />
ServerAlias domainname1.dom:443<br />
SSLEngine on<br />
SSLCertificateFile "/etc/httpd/conf/server.crt"<br />
SSLCertificateKeyFile "/etc/httpd/conf/server.key"<br />
ErrorLog "/var/log/httpd/domainname1.dom-error_log"<br />
CustomLog "/var/log/httpd/domainname1.dom-access_log" common<br />
<br />
<Directory "/home/user/http/domainname1.dom"><br />
Require all granted<br />
</Directory><br />
</VirtualHost></nowiki>}}<br />
<br />
== Extensions ==<br />
<br />
=== PHP ===<br />
First install PHP as explained in on the [[PHP]] page.<br />
<br />
There are multiple methods to use PHP with Apache. [[#Using libphp]] is probably the easiest, but also the least scalable. libphp also requires you to change the mpm module, which may cause problems with other extensions (e.g. it is not compatible with [[#HTTP2]]).<br />
<br />
==== Using libphp ====<br />
[[Install]] the {{Pkg|php-apache}} package.<br />
<br />
In {{ic|/etc/httpd/conf/httpd.conf}}, comment the line:<br />
#LoadModule mpm_event_module modules/mod_mpm_event.so<br />
and uncomment the line:<br />
LoadModule mpm_prefork_module modules/mod_mpm_prefork.so<br />
<br />
{{Note|1=The above is required, because {{ic|libphp7.so}} included with {{pkg|php-apache}} does not work with {{ic|mod_mpm_event}}, but will only work {{ic|mod_mpm_prefork}} instead. ({{bug|39218}})<br />
<br />
Otherwise you will get the following error:<br />
{{bc|1=Apache is running a threaded MPM, but your PHP Module is not compiled to be threadsafe. You need to recompile PHP.<br />
AH00013: Pre-configuration failed<br />
httpd.service: control process exited, code=exited status=1}}<br />
<br />
As an alternative, you can use {{ic|mod_proxy_fcgi}} (see [[#Using php-fpm and mod_proxy_fcgi]] below).<br />
}}<br />
<br />
To enable PHP, add these lines to {{ic|/etc/httpd/conf/httpd.conf}}:<br />
*Place this at the end of the {{ic|LoadModule}} list:<br />
LoadModule php7_module modules/libphp7.so<br />
AddHandler php7-script .php<br />
*Place this at the end of the {{ic|Include}} list:<br />
Include conf/extra/php7_module.conf<br />
<br />
Restart {{ic|httpd.service}} using [[systemd#Using units|systemd]].<br />
<br />
==== Using php-fpm and mod_proxy_fcgi ====<br />
<br />
{{Note|Unlike the widespread setup with ProxyPass, the proxy configuration with SetHandler respects other Apache directives like DirectoryIndex. This ensures a better compatibility with software designed for libphp7, mod_fastcgi and mod_fcgid.<br />
If you still want to try ProxyPass, experiment with a line like this: {{bc|ProxyPassMatch ^/(.*\.php(/.*)?)$ unix:/run/php-fpm/php-fpm.sock&#124;fcgi://localhost/srv/http/$1}}}}<br />
<br />
[[Install]] the {{pkg|php-fpm}} package.<br />
<br />
Enable proxy modules:<br />
{{hc|/etc/httpd/conf/httpd.conf|<nowiki><br />
LoadModule proxy_module modules/mod_proxy.so<br />
LoadModule proxy_fcgi_module modules/mod_proxy_fcgi.so<br />
</nowiki>}}<br />
<br />
Create {{ic|/etc/httpd/conf/extra/php-fpm.conf}} with the following content:<br />
{{bc|<nowiki><br />
DirectoryIndex index.php index.html<br />
<FilesMatch \.php$><br />
SetHandler "proxy:unix:/run/php-fpm/php-fpm.sock|fcgi://localhost/"<br />
</FilesMatch><br />
</nowiki>}}<br />
<br />
And include it at the bottom of {{ic|/etc/httpd/conf/httpd.conf}}:<br />
Include conf/extra/php-fpm.conf<br />
<br />
{{Note|The pipe between {{ic|sock}} and {{ic|fcgi}} is not allowed to be surrounded by a space! {{ic|localhost}} can be replaced by any string. More [https://httpd.apache.org/docs/2.4/mod/mod_proxy_fcgi.html here]}}<br />
<br />
You can configure PHP-FPM in {{ic|/etc/php/php-fpm.d/www.conf}}, but the default setup should work fine.<br />
<br />
Start and enable {{ic|php-fpm.service}}. [[Restart]] {{ic|httpd.service}}.<br />
<br />
==== Using apache2-mpm-worker and mod_fcgid ====<br />
[[Install]] the {{pkg|mod_fcgid}} and {{Pkg|php-cgi}} packages.<br />
<br />
Create the needed directory and symlink it for the PHP wrapper:<br />
# mkdir /srv/http/fcgid-bin<br />
# ln -s /usr/bin/php-cgi /srv/http/fcgid-bin/php-fcgid-wrapper<br />
<br />
Create {{ic|/etc/httpd/conf/extra/php-fcgid.conf}} with the following content:<br />
{{hc|/etc/httpd/conf/extra/php-fcgid.conf|<nowiki><br />
# Required modules: fcgid_module<br />
<br />
<IfModule fcgid_module><br />
AddHandler php-fcgid .php<br />
AddType application/x-httpd-php .php<br />
Action php-fcgid /fcgid-bin/php-fcgid-wrapper<br />
ScriptAlias /fcgid-bin/ /srv/http/fcgid-bin/<br />
SocketPath /var/run/httpd/fcgidsock<br />
SharememPath /var/run/httpd/fcgid_shm<br />
# If you don't allow bigger requests many applications may fail (such as WordPress login)<br />
FcgidMaxRequestLen 536870912<br />
# Path to php.ini – defaults to /etc/phpX/cgi<br />
DefaultInitEnv PHPRC=/etc/php/<br />
# Number of PHP childs that will be launched. Leave undefined to let PHP decide.<br />
#DefaultInitEnv PHP_FCGI_CHILDREN 3<br />
# Maximum requests before a process is stopped and a new one is launched<br />
#DefaultInitEnv PHP_FCGI_MAX_REQUESTS 5000<br />
<Location /fcgid-bin/><br />
SetHandler fcgid-script<br />
Options +ExecCGI<br />
</Location><br />
</IfModule><br />
</nowiki>}}<br />
<br />
Edit {{ic|/etc/httpd/conf/httpd.conf}}, enabling the actions module:<br />
LoadModule actions_module modules/mod_actions.so<br />
<br />
And add the following lines:<br />
LoadModule fcgid_module modules/mod_fcgid.so<br />
Include conf/extra/httpd-mpm.conf<br />
Include conf/extra/php-fcgid.conf<br />
<br />
[[Restart]] {{ic|httpd.service}}.<br />
<br />
==== Test if PHP works ====<br />
<br />
To test whether PHP was correctly configured: create a file called {{ic|test.php}} in your Apache {{ic|DocumentRoot}} directory (e.g. {{ic|/srv/http/}} or {{ic|~/public_html}}) with the following contents:<br />
<?php phpinfo(); ?><br />
To see if it works go to: http://localhost/test.php or http://localhost/~myname/test.php<br />
<br />
=== HTTP2 ===<br />
<br />
To enable HTTP/2 support, uncomment the following line in {{ic|httpd.conf}}:<br />
LoadModule http2_module modules/mod_http2.so<br />
<br />
And add the following line:<br />
Protocols h2 http/1.1<br />
<br />
For more information, see the [https://httpd.apache.org/docs/2.4/mod/mod_http2.html mod_http2] documentation.<br />
<br />
== Troubleshooting ==<br />
<br />
=== Apache Status and Logs ===<br />
<br />
See the status of the Apache daemon with [[systemctl]].<br />
<br />
Apache logs can be found in {{ic|/var/log/httpd/}}<br />
<br />
=== Error: PID file /run/httpd/httpd.pid not readable (yet?) after start ===<br />
<br />
Comment out the {{ic|unique_id_module}} line in {{ic|httpd.conf}}: {{ic|#LoadModule unique_id_module modules/mod_unique_id.so}}<br />
<br />
=== Apache is running a threaded MPM, but your PHP Module is not compiled to be threadsafe. ===<br />
<br />
If when loading {{ic|php7_module}} the {{ic|httpd.service}} fails, and you get an error like this in the journal:<br />
<br />
Apache is running a threaded MPM, but your PHP Module is not compiled to be threadsafe. You need to recompile PHP.<br />
<br />
you need to replace {{ic|mpm_event_module}} with {{ic|mpm_prefork_module}}:<br />
<br />
{{hc|/etc/httpd/conf/httpd.conf|<br />
<s>LoadModule mpm_event_module modules/mod_mpm_event.so</s><br />
LoadModule mpm_prefork_module modules/mod_mpm_prefork.so<br />
}}<br />
<br />
and restart {{ic|httpd.service}}.<br />
<br />
=== AH00534: httpd: Configuration error: No MPM loaded. ===<br />
<br />
You might encounter this error after a recent upgrade. This is only the result of a recent change in {{ic|httpd.conf}} that you might not have reproduced in your local configuration.<br />
To fix it, uncomment the following line.<br />
<br />
{{hc|/etc/httpd/conf/httpd.conf|<br />
LoadModule mpm_prefork_module modules/mod_mpm_prefork.so<br />
}}<br />
<br />
Also check [[#Apache_is_running_a_threaded_MPM.2C_but_your_PHP_Module_is_not_compiled_to_be_threadsafe.|the above]] if more errors occur afterwards.<br />
<br />
=== AH00072: make_sock: could not bind to address ===<br />
<br />
This can be caused by multiple things. Most common issue being that something is already listening on a given port, check via netstat that this is not happening:<br />
<br />
# netstat -lnp | grep -e :80 -e :443<br />
<br />
If you get any output, stop the given service that's taking up the port or kill the runaway process that is causing the port to be bound, and try again.<br />
<br />
Another issue could be that Apache is not starting as root for some reason - try starting it manually and see if you still get the AH0072 error.<br />
<br />
# httpd -k start<br />
<br />
Finally, you can also have an error with your config and you are listening twice on the given port. Following is an example of a bad config that will trigger this issue:<br />
<br />
Listen 0.0.0.0:80<br />
Listen [::]:80<br />
<br />
=== Changing the max_execution_time in php.ini has no effect ===<br />
<br />
If you changed the {{ic|max_execution_time}} in {{ic|php.ini}} to a value greater than 30 (seconds), you may still get a {{ic|503 Service Unavailable}} response from Apache after 30 seconds. To solve this, add a {{ic|ProxyTimeout}} directive to your http configuration right before the {{ic|<FilesMatch \.php$>}} block:<br />
<br />
{{hc|/etc/httpd/conf/httpd.conf|<br />
ProxyTimeout 300<br />
}}<br />
<br />
and restart {{ic|httpd.service}}.<br />
<br />
== See also ==<br />
<br />
* [https://www.apache.org/ Apache Official Website]<br />
* [https://httpd.apache.org/docs/2.4/ Apache documentation]<br />
* [https://wiki.apache.org/httpd/ Apache wiki]<br />
* [https://httpd.apache.org/docs/current/misc/security_tips.html Apache documentation - Security Tips]<br />
* [https://wiki.apache.org/httpd/CommonMisconfigurations Apache Wiki - Troubleshooting]<br />
* [[debian:Apache|Apache]] on wiki.debian.org</div>NeedsCoffeehttps://wiki.archlinux.org/index.php?title=ICC_profiles&diff=557132ICC profiles2018-11-24T22:06:17Z<p>NeedsCoffee: /* Loading ICC profiles */ Grammar fixes</p>
<hr />
<div>[[Category:Multimedia]]<br />
[[ja:ICC プロファイル]]<br />
[[ru:ICC profiles]]<br />
As it pertains to general desktop use, an [[Wikipedia:ICC profile|ICC profile]] is a binary file which contains precise data regarding the color attributes of an input, or output device. Single, or multiple profiles can be applied across a system and its devices to produce consistent and repeatable results for graphic and document editing and publishing. ICC profiles are typically calibrated with a [[Wikipedia:Tristimulus colorimeter|(tristimulus) colorimeter]], or a spectrophotometer when absolute color accuracy is required.<br />
<br />
== Utilities ==<br />
<br />
* {{App|ArgyllCMS|ICC compatible color management system. It supports accurate ICC profile creation for scanners, cameras and film recorders, and calibration and profiling of displays and RGB & CMYK printers.|https://argyllcms.com/|{{Pkg|argyllcms}}}}<br />
* {{App|ColorHug|The Hughski ColorHug Colorimeter is a low cost open-source hardware sensor used to calibrate screens. This package includes the client tools which allows the user to upgrade the firmware on the sensor or to query the sensor from command line scripts.|https://github.com/hughski/colorhug-client|{{Pkg|colorhug-client}}}}<br />
* {{App|DisplayCAL|Display calibration and profiling solution with a focus on accuracy and versatility. At its core it relies on ArgyllCMS color management system, to take measurements, create calibrations and profiles, and for a variety of other advanced color related tasks.|https://displaycal.net/|{{Pkg|displaycal}}}}<br />
* {{App|GNOME Color Manager|Set of graphical utilities for color management to be used in the GNOME desktop.|https://gitlab.gnome.org/GNOME/gnome-color-manager|{{Pkg|gnome-color-manager}}}}<br />
* {{App|xcalib|Lightweight monitor calibration loader which can load an ICC monitor profile to be shared across desktop applications.|https://github.com/OpenICC/xcalib|{{AUR|xcalib}}}}<br />
<br />
== Profile generation ==<br />
<br />
Color management is a workflow of hardware calibration, software profiling and embedding the profile into the picture or video. It's all based on using an [[Wikipedia:ICC profile|ICC profile]].<br />
<br />
=== Colorimeter or spectrometer ===<br />
<br />
It is highly recommended to use a colorimeter or spectrometer device for hardware-assisted display, printer and scanner calibration. For home use there are several affordable colorimeters available. Some are well- or even better-supported under Linux than on other operating systems. Frequently recommended devices are [http://www.xrite.com/colormunki-display X-Rite ColorMunki Display], [http://spyder.datacolor.com/portfolio-view/spyder5express/ DataColor Spyder5 Express] and the open source hardware [http://www.hughski.com/ ColorHug]. You can find more Linux-supported devices listed in the [http://www.argyllcms.com/doc/instruments.html AgyllCMS documentation].<br />
<br />
=== Argyll CMS ===<br />
<br />
The [http://www.argyllcms.com/ Argyll Color Management System] is a complete suite of command-line profile creation and loading tools listed under {{Pkg|argyllcms}}. <br />
<br />
Review the official [http://www.argyllcms.com/doc/ArgyllDoc.html Argyll CMS documentation] for details on how to profile selected devices.<br />
<br />
=== Monitor calibration and profiling with additional calibration hardware ===<br />
<br />
There is a GUI frontend for ArgyllCMS called [http://displaycal.net DisplayCal], available as {{Pkg|displaycal}}. In most common cases you will want to use its default settings. It is a common way to calibrate to a daylight color of 6500K and gamma 2,2. Read the DispalGui documentation for more. Many tutorials are available on the net.<br />
<br />
=== Scanner calibration ===<br />
<br />
Follow the scanner part of the [https://blog.simon-dreher.de/color-management.html scanner calibration] tutorial.<br />
<br />
=== Printer calibration ===<br />
<br />
See {{man|8|cups-calibrate}}.<br />
<br />
=== File transfer ===<br />
<br />
Profile generation on a Windows or macOS system is one of the easiest and most widely recommended methods to obtain a ICC monitor profile. Since ICC color profiles are written to an open specification, they are compatible across operating systems. Transferring profiles from one OS to another can be used as a workaround for the lack of support for certain spectrophotometers or colorimeters under Linux: one can simply produce a profile on a different OS and then use it in a Linux workflow. Note that the system on which the profile is generated must host the exact same video card and monitor for which the profile is to be used. Once generation of an ICC profile, or a series of profiles is complete on a Windows system, copy the file(s) from the default path:<br />
<br />
C:\WINDOWS\System32\spool\drivers\color<br />
<br />
macOS generally stores saved ICC profiles in one of two locations:<br />
<br />
/Library/ColorSync/Profiles<br />
/Users/USER_NAME/Library/ColorSync/Profile<br />
<br />
Once the appropriate {{Ic|.icc/.icm}} files have been copied, install the device profiles to your desired system. Common installation device profiles directories on Linux include:<br />
<br />
/usr/share/color/icc<br />
/usr/local/share/color/icc<br />
/home/USER_NAME/.color/icc<br />
<br />
{{Note|Ensure that the calibrated contrast, brightness and RGB settings of the monitor do not change between the time of calibration and the loading of the ICC profile. Use this method only if you are absolutely certain that neither Linux nor the other OS does anything behind your back (in video drivers or vendor utilities) that alters the signal actually sent to the display, or the way the display interprets the signal. Watch out for "Broadcast RGB" or similar settings. One concrete example where profiling in Windows and Linux yields [https://bugzilla.kernel.org/show_bug.cgi?id&#61;70721 significantly different results] is the Lenovo Ideapad Yoga 2 Pro laptop, because these OSes program the flat panel controller in very different ways.|}}<br />
<br />
=== Gnome Color Manager ===<br />
<br />
On Gnome, an ICC profile can easily be created by using {{pkg|gnome-color-manager}}. Under Gnome, this is accessible via the Control Center and is pretty straightforward to use. You'll need a colorimeter device to use this feature.<br />
<br />
==== Manually ====<br />
<br />
Ensure ''gnome-settings-daemon'' is started, and run:<br />
<br />
$ colormgr get-devices <br />
<br />
Look for the {{ic|Device ID}} line of your monitor. If this is e.g. {{ic|xrandr-Lenovo Group Limited}}, start calibration with the command:<br />
<br />
gcm-calibrate --device "''xrandr-Lenovo Group Limited''"<br />
<br />
=== LPROF ICC Profiler ===<br />
<br />
[http://lprof.sourceforge.net/ LPROF] is an ICC profiler with a graphical user interface listed under {{AUR|lprof}} in the [[AUR]]. <br />
<br />
{{Note|The following walkthrough has been modified from the ArchWiki article [[Using LPROF to profile monitors]].}}<br />
<br />
==== Monitor calibration ====<br />
<br />
===== Contrast/Brightness =====<br />
<br />
Adjust the lighting in the room to what you will be using when working. Even if your screen is coated with an anti-reflective coating, you should avoid light falling directly on it. Let your monitor warm up for at least an hour for the image to get stabilized. If your calibration device has an ambient diffuser, adjust your room brightness to reach the recommended target lux point.<br />
<br />
# Set the monitor contrast to maximum, or 100%. <br />
# Next, display a pure black over entire screen by creating a small, black PNG image (all pixels have RGB = 0, 0, 0) and opening it up in a picture viewer that is capable of displaying an image in fullscreen mode without any controls.<br />
# Reduce the vertical size of the monitor screen (not the PNG image displayed by a picture viewer but the whole of what's displayed on the screen) to 60% to 70% of the full height. What is revealed above and below the picture is called a ''non-scanned area'', and since that area is not receiving any voltage, it is the blackest of black your monitor is capable of displaying. <br />
# Locate the brightness control (usually a sun, circle with rays projecting from it's edges) and lower the value until the black ''image'' matches the non-scanned area.<br />
<br />
===== Color temperature =====<br />
<br />
As we said in the introduction, setting color temperature must occur at noon. If you only have fixed factory default color temperature, you do not really need to wait for the sunny day to come. Just set it to 6500K.<br />
<br />
Place your monitor so that you can see outside the window ''and'' your screen at the same time. For this step, you also need to create a white square image (RGB = 255, 255, 255), roughly 10 by 10 centimeters (4 by 3 inches). Using the same Gwenview technique as with brightness/contrast, display the white square on a pure black background.<br />
<br />
# First, prepare your eyes by staring at the outside world for a while. Let them adjust to the daylight viewing condition for a few minutes.<br />
# Glance at the monitor, and the white square for a few second (it has to be short, because eyes will readjust quickly).<br />
# If the square seems yellowish, you need higher color temperature, or if it has a blueish cast, the temperature needs to be lowered.<br />
# Keep glancing, looking out the window, and adjusting the white temperature, until the square looks pure white<br />
<br />
Take your time with the steps described above. It is essential to get it right.<br />
<br />
==== Monitor profiling without additional calibration hardware ====<br />
<br />
Start lprof. You will be presented by a fairly large window with multiple tabs on the right. <br />
<br />
# Click on the ''Monitor Profiler'' tab. Then click on the large ''Enter monitor values >>'' button.<br />
# White point should be set to ''6500K (daylight)''.<br />
# Primaries should be set to either ''SMPTE RP145-1994'', or ''EBU Tech.3213-E'' or ''P22'', or whatever appropriate values for your monitor. If you come across correct values for your monitor, enter those by selecting ''User Defined'' from the drop-down. If in doubt, you may use ''P22'' for all monitors with Trinitron CRTs (in this case, ''Trinitron'' is not related to Sony Trinitron mointors and TVs), and ''SMPTE RP145-1994'' for other CRTs.<br />
# Click the ''Set Gamma and Black Point'' button.<br />
# You will now see a full-screen view of two charts with some controls at the bottom.<br />
# Uncheck the ''Link channels'' check-box and adjust individual Red, Green, and Blue gamma by either moving the slider left or right, or by entering and changing values in the three boxes to the left. The goal is to make the chart on the left (the smaller square one) flat. When you are satisfied with how it looks, check the ''Link channels'' check-box and adjust the gamma again.<br />
# When you are done, click ''OK''. Click ''OK'' again.<br />
<br />
When you are finished entering monitor values, you might want to enter some information about the monitor. This is not mandatory, but it is always nice to know what profile is for what.<br />
<br />
# Click ''Profile identification'' button.<br />
# Fill in the data.<br />
# Click ''OK'' to finish.<br />
<br />
After you are all done, click on the '...' button next to ''Output Profile File'' box. Enter the name of your profile: ''somemonitor.icc''. Click ''Create Profile'' button, and you are done.<br />
<br />
=== ThinkPads ===<br />
<br />
See [http://www.thinkwiki.org/wiki/Colour_profile color profiles] for IBM/Lenovo [[Wikipedia:ThinkPad|ThinkPad]] notebook [http://www-307.ibm.com/pc/support/site.wss/migr-62923.html monitor profile] ([http://www-307.ibm.com/pc/support/site.wss/migr-44320.html generic]) support.<br />
<br />
== Loading ICC profiles ==<br />
<br />
ICC profiles are loaded either by the session daemon or by a dedicated ICC loader. Both Gnome and KDE have daemons capable of loading ICC profiles from {{pkg|colord}}. If you use colord in combination with either {{pkg|gnome-settings-daemon}} or {{Pkg|colord-kde}}, the profile will be loaded automatically. If you're not using either Gnome or KDE, you may install an independent daemon, [https://github.com/agalakhov/xiccd xiccd], which does the same but does not depend on your desktop environment. Do not start two ICC-capable daemons (e.g. gnome-settings-daemon and xiccd) at the same time.<br />
<br />
If you're not using any ICC-capable session daemon, make sure you use only one ICC loader - either xcalib, dispwin, dispcalGUI-apply-profiles or others. Otherwise, you can easily end up with an uncontrolled environment. (The most recently run loader sets the calibration, and the earlier loaded calibration is overwritten.)<br />
<br />
Before using a particular ICC loader, you should understand that some tools set only the calibration curves (e.g. xcalib), some tools set only the display profile to X.org _ICC_PROFILE atom (e.g. xicc), and other tools do both tasks at once (e.g. dispwin, dispcalGUI-apply-profiles).<br />
<br />
=== xcalib ===<br />
<br />
* [http://xcalib.sourceforge.net/ xcalib] is a lightweight monitor calibration loader which can load an ICC monitor profile to be shared across desktop applications. {{AUR|xcalib}} is part of the Arch User Repository (AUR).<br />
<br />
==== Xinitrc example ====<br />
<br />
Load profile {{ic|P221W-sRGB.icc}} in {{Ic|/usr/share/color/icc}} on display host:0 when X server starts<br />
<pre>#!/bin/bash<br />
<br />
/usr/bin/xcalib -d :0 /usr/share/color/icc/P221W-sRGB.icc</pre><br />
<br />
==== JWM {{ic|<StartupCommand>}} example ====<br />
<br />
Load profile {{ic|P221W-Native.icc}} in {{Ic|/usr/local/share/color/icc}} on display host:0 when JWM starts<br />
{{ic|<StartupCommand>}}xcalib -d :0 /usr/local/share/color/icc/P221W-Native.icc{{ic|</StartupCommand>}}<br />
<br />
=== dispwin ===<br />
* [http://www.argyllcms.com/doc/dispwin.html dispwin] is a part of {{Pkg|argyllcms}}.<br />
<br />
==== Xinitrc example ====<br />
<br />
Load profile {{ic|906w-6500K.icc}} in {{Ic|/home/arch/.color/icc}} on display 0 when X server starts<br />
<pre>#!/bin/bash<br />
<br />
/usr/bin/dispwin -d0 /home/arch/.color/icc/906w-6500K.icc</pre><br />
<br />
==== JWM {{ic|<StartupCommand>}} example ====<br />
<br />
Load Argyll calibration file {{ic|906w-7000K.cal}} in {{Ic|/usr/local/share/color/icc}} on display 1 when JWM starts<br />
{{ic|<StartupCommand>}}dispwin -d1 /usr/local/share/color/icc/906w-7000K.cal{{ic|</StartupCommand>}}<br />
<br />
You can easily use one of these loaders to apply the color profile in early boot stage when starting a display manager, e.g. using [https://wiki.ubuntu.com/LightDM#Adding_System_Hooks LightDM startup script]. This allows to load a single icc profile file. This won't work with loading several profile files when using a multi monitopr setup.<br />
<br />
== Applications that support ICC profiles ==<br />
<br />
* [http://www.xsane.org/doc/sane-xsane-color-management-doc.html Xsane] can use ICC profiles for color-corrected scanning.<br />
* [[CUPS]] can use ICC profiles for color-corrected printing using [https://www.freedesktop.org/software/colord/faq.html#cups Colord], but the actual implementation and usability is [https://lists.cups.org/pipermail/cups/2016-December/056399.html unclear].<br />
* [[GIMP]] can use ICC profiles for display of the image being edited. The use of the installed ICC profile has to be explicitly enabled in the settings dialog, though.<br />
* [[mpv]] can take an ICC profile into account when playing a video. The command line argument is: <code>--icc-profile=/path/to/profile.icc</code> or <code>--icc-profile-auto</code>. Only <code>--vo=opengl</code> does color management; other VO drivers will silently ignore the ICC profile options.<br />
* [[Firefox]], by default, uses the system-wide ICC profile only when displaying images that are already tagged with an ICC profile. To assume that untagged images use sRGB and apply color correction also to them, set the {{ic|gfx.color_management.mode}} preference to 1.<br />
* Both Eye of Gnome ({{Pkg|eog}}) and Eye of MATE ({{Pkg|eom}}) automatically use the system-installed ICC profile.<br />
<br />
== See also ==<br />
<br />
* [[Using LPROF to profile monitors]] - Additional details on how to profile monitors<br />
* [[Wikipedia:Linux color management]]<br />
* [http://www.argyllcms.com/ Argyll Color Management System] - Official Site<br />
* [http://lprof.sourceforge.net/help/lprof-help.html LPROF Main Help Window] - Details on profiling printers and scanners<br />
* [http://displaycal.net/#concept DisplayCal: Basic concept of display calibration and profiling]<br />
* [https://encrypted.pcode.nl/blog/2013/11/24/display-color-profiling-on-linux/ Display color profiling on Linux (XFCE)]<br />
* [https://linuxtidbits.wordpress.com/2013/04/20/handling-display-calibration/ Monitor Hardware Calibration]</div>NeedsCoffeehttps://wiki.archlinux.org/index.php?title=Dual_boot_with_Windows&diff=556594Dual boot with Windows2018-11-22T16:19:08Z<p>NeedsCoffee: /* Bootloader UEFI vs BIOS limitations */ Missing an article</p>
<hr />
<div>[[Category:Boot process]]<br />
[[Category:Installation process]]<br />
[[es:Dual boot with Windows]]<br />
[[ja:Windows と Arch のデュアルブート]]<br />
[[ru:Dual boot with Windows]]<br />
[[sk:Dual boot with Windows]]<br />
[[zh-hans:Dual boot with Windows]]<br />
{{Related articles start}}<br />
{{Related|Dual boot with Windows/SafeBoot}}<br />
{{Related articles end}}<br />
<br />
This is an article detailing different methods of Arch/Windows coexistence.<br />
<br />
== Important information ==<br />
<br />
=== Windows UEFI vs BIOS limitations ===<br />
<br />
Microsoft imposes limitations on which firmware boot mode and partitioning style can be supported based on the version of Windows used:<br />
<br />
* '''Windows XP''' both '''x86 32-bit''' and '''x86_64''' (also called x64) (RTM and all Service Packs) versions do not support booting in UEFI mode (IA32 or x86_64) from any disk (MBR or GPT) OR in BIOS mode from GPT disk. They support only BIOS boot and only from MBR disk.<br />
* '''Windows Vista''' or '''7''' '''x86 32-bit''' (RTM and all Service Packs) versions support booting in BIOS mode from MBR disks only, not from GPT disks. They do not support x86_64 UEFI or IA32 (x86 32-bit) UEFI boot. They support only BIOS boot and only from MBR disk.<br />
* '''Windows Vista RTM x86_64''' (only RTM) version support booting in BIOS mode from MBR disks only, not from GPT disks. It does not support x86_64 UEFI or IA32 (x86 32-bit) UEFI boot. It supports only BIOS boot and only from MBR disk.<br />
* '''Windows Vista''' (SP1 and above, not RTM) and '''Windows 7''' '''x86_64''' versions support booting in x86_64 UEFI mode from GPT disk only, OR in BIOS mode from MBR disk only. They do not support IA32 (x86 32-bit) UEFI boot from GPT/MBR disk, x86_64 UEFI boot from MBR disk, or BIOS boot from GPT disk.<br />
* '''Windows 8/8.1 x86 32-bit''' support booting in IA32 UEFI mode from GPT disk only, OR in BIOS mode from MBR disk only. They do not support x86_64 UEFI boot from GPT/MBR disk, x86_64 UEFI boot from MBR disk, or BIOS boot from GPT disk. On market, the only systems known to ship with IA32 (U)EFI are some old Intel Macs (pre-2010 models?) and Intel Atom System-on-Chip (Clover trail and Bay Trail) Windows Tablets. in which it boots ONLY in IA32 UEFI mode and ONLY from GPT disk.<br />
* '''Windows 8/8.1''' '''x86_64''' versions support booting in x86_64 UEFI mode from GPT disk only, OR in BIOS mode from MBR disk only. They do not support IA32 UEFI boot, x86_64 UEFI boot from MBR disk, or BIOS boot from GPT disk.<br />
<br />
In case of pre-installed Systems:<br />
<br />
* All systems pre-installed with Windows XP, Vista or 7 32-bit, irrespective of Service Pack level, bitness, edition (SKU) or presence of UEFI support in firmware, boot in BIOS/MBR mode by default.<br />
* MOST of the systems pre-installed with Windows 7 x86_64, irrespective of Service Pack level, bitness or edition (SKU), boot in BIOS/MBR mode by default. Very few recent systems pre-installed with Windows 7 are known to boot in x86_64 UEFI/GPT mode by default.<br />
* ALL systems pre-installed with Windows 8/8.1 boot in UEFI/GPT mode. The firmware bitness matches the bitness of Windows, ie. x86_64 Windows 8/8.1 boot in x86_64 UEFI mode and 32-bit Windows 8/8.1 boot in IA32 UEFI mode.<br />
<br />
The best way to detect the boot mode of Windows is to do the following[http://www.eightforums.com/tutorials/29504-bios-mode-see-if-windows-boot-uefi-legacy-mode.html]:<br />
<br />
* Boot into Windows<br />
* Press {{ic|Win+R}} keys to start the Run dialog<br />
* In the Run dialog type {{ic|msinfo32.exe}} and press Enter<br />
* In the '''System Information''' windows, select ''System Summary'' on the left and check the value of '''BIOS mode''' item on the right<br />
* If the value is {{ic|UEFI}}, Windows boots in UEFI/GPT mode. If the value is {{ic|Legacy}}, Windows boots in BIOS/MBR mode.<br />
<br />
In general, Windows forces type of partitioning depending on the firmware mode used, i.e. if Windows is booted in UEFI mode, it can be installed only to a GPT disk. If the Windows is booted in Legacy BIOS mode, it can be installed only to a MBR disk. This is a limitation enforced by Windows installer, and as of April 2014 there is no officially (Microsoft) supported way of installing Windows in UEFI/MBR or BIOS/GPT configuration. Thus Windows only supports either UEFI/GPT boot or BIOS/MBR configuration.<br />
<br />
Such a limitation is not enforced by the Linux kernel, but can depend on which [[boot loader]] is used and/or how the boot loader is configured. The Windows limitation should be considered if the user wishes to boot Windows and Linux from the same disk, since installation procedure of boot loader depends on the firmware type and disk [[partitioning]] configuration. In case where Windows and Linux dual boot from the same disk, it is advisable to follow the method used by Windows, ie. either go for UEFI/GPT boot or BIOS/MBR boot. See http://support.microsoft.com/kb/2581408 for more information.<br />
<br />
=== Install media limitations ===<br />
<br />
Intel Atom System-on-Chip Tablets (Clover trail and Bay Trail) provide only IA32 UEFI firmware without Legacy BIOS (CSM) support (unlike most of the x86_64 UEFI systems), due to Microsoft Connected Standby Guidelines for OEMs. Due to lack of Legacy BIOS support in these systems, and the lack of 32-bit UEFI boot in Arch Official Install ISO ({{Bug|53182}}), the official install media cannot boot on these systems. See [[Unified Extensible Firmware Interface#UEFI firmware bitness]] for more information and available workarounds.<br />
<br />
=== Bootloader UEFI vs BIOS limitations ===<br />
<br />
Most of the linux bootloaders installed for one firmware type cannot launch or chainload bootloaders of the other firmware type. That is, if Arch is installed in UEFI/GPT or UEFI/MBR mode in one disk and Windows is installed in BIOS/MBR mode in another disk, the UEFI bootloader used by Arch cannot chainload the BIOS installed Windows in the other disk. Similarly if Arch is installed in BIOS/MBR or BIOS/GPT mode in one disk and Windows is installed in UEFI/GPT in another disk , the BIOS bootloader used by Arch cannot chainload UEFI installed Windows in the other disk. <br />
<br />
The only exceptions to this are [[GRUB]] in Apple Macs in which GRUB in UEFI mode can boot BIOS installed OS via {{ic|appleloader}} command (does not work in non-Apple systems), and [[rEFInd]] which technically supports booting legacy BIOS OS from UEFI systems, but [http://rodsbooks.com/refind/using.html#legacy does not always work in non-Apple UEFI systems] as per its author Rod Smith. <br />
<br />
However if Arch is installed in BIOS/GPT in one disk and Windows is installed in BIOS/MBR mode in another disk, then the BIOS boot loader used by Arch CAN boot the Windows in the other disk, if the boot loader itself has the ability to chainload from another disk. <br />
<br />
{{Note|If Arch and Windows are dual-booting from same disk, then Arch should follow the same firmware boot mode and partitioning combination used by the installed Windows in the disk.}}<br />
<br />
=== UEFI Secure Boot ===<br />
<br />
All pre-installed Windows 8/8.1 systems by default boot in UEFI/GPT mode and have UEFI Secure Boot enabled by default. This is mandated by Microsoft for all OEM pre-installed systems.<br />
<br />
Arch Linux install media does not support Secure Boot. See [[Secure Boot#Booting archiso]]. <br />
<br />
It is advisable to disable UEFI Secure Boot in the firmware setup manually before attempting to boot Arch Linux. Windows 8/8.1 SHOULD continue to boot fine even if Secure boot is disabled. The only issue with regards to disabling UEFI Secure Boot support is that it requires physical access to the system to disable secure boot option in the firmware setup, as Microsoft has explicitly forbidden presence of any method to remotely or programmatically (from within OS) disable secure boot in all Windows 8/8.1 pre-installed systems<br />
<br />
=== Fast Start-Up ===<br />
<br />
Fast Start-Up is a feature in Windows 8 and above that hibernates the computer rather than actually shutting it down to speed up boot times. Your system can lose data if Windows hibernates and you dual boot into another OS and make changes to files. Even if you do not intend to share filesystems, the EFI System Partition is likely to be damaged on an EFI system. Therefore, you should disable Fast Startup, as described [http://www.eightforums.com/tutorials/6320-fast-startup-turn-off-windows-8-a.html here for Windows 8] and [http://www.tenforums.com/tutorials/4189-fast-startup-turn-off-windows-10-a.html here for Windows 10], before you install Linux on any computer that uses Windows 8 or above.<br />
<br />
{{Pkg|ntfs-3g}} added a [http://sourceforge.net/p/ntfs-3g/ntfs-3g/ci/559270a8f67c77a7ce51246c23d2b2837bcff0c9/ safe-guard] to prevent read-write mounting of hibernated disks, but the NTFS driver within the Linux kernel has no such safeguard.<br />
<br />
=== Windows filenames limitations ===<br />
<br />
Windows is limited to filepaths being shorter than [http://blogs.msdn.com/b/bclteam/archive/2007/02/13/long-paths-in-net-part-1-of-3-kim-hamilton.aspx 260 characters].<br />
<br />
Windows also puts [http://msdn.microsoft.com/en-us/library/aa365247(VS.85).aspx#naming_conventions certain characters off limits] in filenames for reasons that run all the way back to DOS:<br />
<br />
* {{ic|<}} (less than)<br />
* {{ic|>}} (greater than)<br />
* {{ic|:}} (colon)<br />
* {{ic|"}} (double quote)<br />
* {{ic|/}} (forward slash)<br />
* {{ic|\}} (backslash)<br />
* {{ic|{{!}}}} (vertical bar or pipe)<br />
* {{ic|?}} (question mark)<br />
* {{ic|*}} (asterisk)<br />
<br />
These are limitations of Windows and not NTFS: any other OS using the NTFS partition will be fine. Windows will fail to detect these files and running {{ic|chkdsk}} will most likely cause them to be deleted. This can lead to potential data-loss.<br />
<br />
[[NTFS-3G]] applies Windows restrictions to new file names through the [http://www.tuxera.com/community/ntfs-3g-manual/#4 windows_names] option (see [[fstab]]).<br />
<br />
== Installation ==<br />
<br />
The recommended way to setup a Linux/Windows dual booting system is to first install Windows, only using part of the disk for its partitions. When you have finished the Windows setup, boot into the Linux install environment where you can create and resize partitions for Linux while leaving the existing Windows partitions untouched. The Windows installation will create the [[EFI system partition]] which can be used by your Linux [[boot loader]].<br />
<br />
=== BIOS systems ===<br />
<br />
==== Using a Linux boot loader ====<br />
<br />
You may use any multi-boot supporting BIOS [[boot loader]].<br />
<br />
==== Using Windows boot loader ====<br />
<br />
With this setup the Windows bootloader loads GRUB which then boots Arch. <br />
<br />
===== Windows Vista/7/8/8.1 boot loader =====<br />
<br />
{{Style|Contains personal comments.}}<br />
<br />
The following section contains excerpts from http://www.iceflatline.com/2009/09/how-to-dual-boot-windows-7-and-linux-using-bcdedit/.<br />
<br />
{{Accuracy|Using ext3 formatted /boot partition, windows bootloader works just fine}}<br />
<br />
In order to have the Windows boot loader see the Linux partition, one of the Linux partitions created needs to be FAT32 (in this case, {{ic|/dev/sda3}}). The remainder of the setup is similar to a typical installation. Some documents state that the partition being loaded by the Windows boot loader must be a primary partition but I have used this without problem on an extended partition.<br />
<br />
* When installing the GRUB boot loader, install it on your {{ic|/boot}} partition rather than the MBR. {{Note|For instance, my {{ic|/boot}} partition is {{ic|/dev/sda5}}. So I installed GRUB at {{ic|/dev/sda5}} instead of {{ic|/dev/sda}}. For help on doing this, see [[GRUB/Tips and tricks#Install to partition or partitionless disk]].}}<br />
<br />
* Under Linux make a copy of the boot info by typing the following at the command shell:<br />
<br />
my_windows_part=/dev/sda3<br />
my_boot_part=/dev/sda5<br />
mkdir /media/win<br />
mount $my_windows_part /media/win<br />
dd if=$my_boot_part of=/media/win/linux.bin bs=512 count=1<br />
<br />
* Boot to Windows and open up and you should be able to see the linux.bin file at {{ic|C:\}}. Now run '''cmd''' with administrator privileges (navigate to ''Start > All Programs > Accessories'', right-click on ''Command Prompt'' and select ''Run as administrator''):<br />
<br />
bcdedit /create /d "Linux" /application BOOTSECTOR<br />
<br />
* BCDEdit will return a [[wikipedia:Universally_unique_identifier|UUID]] for this entry that I will refer to as {ID} in the remaining steps. You will need to replace {ID} by the actual returned identifier. An example of {ID} is {d7294d4e-9837-11de-99ac-f3f3a79e3e93}. <br />
<br />
bcdedit /set {ID} device partition=c:<br />
bcdedit /set {ID} path \linux.bin<br />
bcdedit /displayorder {ID} /addlast<br />
bcdedit /timeout 30<br />
<br />
Reboot and enjoy. In my case I'm using the Windows boot loader so that I can map my Dell Precision M4500's second power button to boot Linux instead of Windows.<br />
<br />
=== UEFI systems ===<br />
<br />
If you already have Windows installed, it will already have created some partitions on a [[GPT]]-formatted disk:<br />
<br />
* a [[Wikipedia:Windows Recovery Environment|Windows Recovery Environment]] partition, generally of size 499 MiB, containing the files required to boot Windows (i.e. the equivalent of Linux's {{ic|/boot}}),<br />
* an [[EFI system partition]] with a [[FAT32]] filesystem,<br />
* a [[Wikipedia:Microsoft Reserved Partition|Microsoft Reserved Partition]], generally of size 128 MiB,<br />
* a Microsoft basic data partition with a NTFS filesystem, which corresponds to {{ic|C:}},<br />
* potentially system recovery and backup partitions and/or secondary data partitions (corresponding often to {{ic|D:}} and above).<br />
<br />
Using the Disk Management utility in Windows, check how the partitions are labelled and which type gets reported. This will help you understand which partitions are essential to Windows, and which others you might repurpose.<br />
<br />
{{Warning|The first 4 partitions in the above list are essential, do not delete them.}}<br />
<br />
You can then proceed with [[partitioning]], depending on your needs. Mind that there is no need to create an additional EFI system partition, since it already exists. Simply [[EFI system partition#Mount the partition|mount the existing partition]].<br />
<br />
The boot loader needs to support chainloading other EFI applications to do dual boot Windows / Linux.<br />
<br />
{{Tip|[[rEFInd]] and [[systemd-boot]] will autodetect ''Windows Boot Manager'' ({{ic|\EFI\Microsoft\Boot\bootmgfw.efi}}) and show it in their boot menu automatically. For [[GRUB]] follow [[GRUB#Windows installed in UEFI/GPT Mode menu entry]].}}<br />
<br />
Computers that come with newer versions of Windows often have [[Secure Boot]] enabled. You will need to take extra steps to either disable Secure Boot or to make your installation media compatible with secure boot (see above and in the linked page).<br />
<br />
=== Troubleshooting ===<br />
<br />
==== Couldn't create a new partition or locate an existing one ====<br />
<br />
See [[#Windows UEFI vs BIOS limitations]].<br />
<br />
==== Cannot boot Linux after installing Windows ====<br />
<br />
See [[Unified Extensible Firmware Interface#Windows changes boot order]].<br />
<br />
==== Restoring a Windows boot record ====<br />
<br />
By convention (and for ease of installation), Windows is usually installed on the first partition and installs its partition table and reference to its bootloader to the first sector of that partition. If you accidentally install a bootloader like GRUB to the Windows partition or damage the boot record in some other way, you will need to use a utility to repair it. Microsoft includes a boot sector fix utility {{Ic|FIXBOOT}} and an MBR fix utility called {{Ic|FIXMBR}} on their recovery discs, or sometimes on their install discs. Using this method, you can fix the reference on the boot sector of the first partition to the bootloader file and fix the reference on the MBR to the first partition, respectively. After doing this you will have to [[GRUB#Installation|reinstall GRUB]] to the MBR as was originally intended (that is, the GRUB bootloader can be assigned to chainload the Windows bootloader).<br />
<br />
If you wish to revert back to using Windows, you can use the {{Ic|FIXBOOT}} command which chains from the MBR to the boot sector of the first partition to restore normal, automatic loading of the Windows operating system.<br />
<br />
Of note, there is a Linux utility called {{Ic|ms-sys}} (package {{AUR|ms-sys}} in AUR) that can install MBR's. However, this utility is only currently capable of writing new MBRs (all OS's and file systems supported) and boot sectors (a.k.a. boot record; equivalent to using {{Ic|FIXBOOT}}) for FAT file systems. Most LiveCDs do not have this utility by default, so it will need to be installed first, or you can look at a rescue CD that does have it, such as [http://partedmagic.com/ Parted Magic].<br />
<br />
First, write the partition info (table) again by:<br />
<br />
# ms-sys --partition /dev/sda1<br />
<br />
Next, write a Windows 2000/XP/2003 MBR:<br />
<br />
# ms-sys --mbr /dev/sda # Read options for different versions<br />
<br />
Then, write the new boot sector (boot record):<br />
<br />
# ms-sys -(1-6) # Read options to discover the correct FAT record type<br />
<br />
{{Ic|ms-sys}} can also write Windows 98, ME, Vista, and 7 MBRs as well, see {{Ic|ms-sys -h}}.<br />
<br />
== Time standard ==<br />
<br />
* Recommended: Set both Arch Linux and Windows to use UTC, following [[System time#UTC in Windows]]. Some versions of Windows revert the hardware clock back to ''localtime'' if they are set to synchronize the time online. This issue appear to be fixed in Windows 10.<br />
* Not recommended: Set Arch Linux to ''localtime'' and disable all [[System time#Time synchronization|time synchronization daemons]]. This will let Windows take care of hardware clock corrections and you will need to remember to boot into Windows at least two times a year (in Spring and Autumn) when [[Wikipedia:Daylight saving time|DST]] kicks in. So please do not ask on the forums why the clock is one hour behind or ahead if you usually go for days or weeks without booting into Windows.<br />
<br />
== See also ==<br />
<br />
* [https://bbs.archlinux.org/viewtopic.php?id=140049 Booting Windows from a desktop shortcut]<br />
* [https://github.com/kaipee/grub-reboot2win One-time boot into Windows partition from desktop shortcut]<br />
* [https://github.com/ValdikSS/windows2usb Windows 7/8/8.1/10 ISO to Flash Drive burning utility for Linux (MBR/GPT, BIOS/UEFI, FAT32/NTFS)]</div>NeedsCoffee