a shortcut to an application
a shortcut to a web link.
a container of meta data of a menu entry
Desktop entries for applications, or .desktop files, are generally a combination of meta information resources and a shortcut of an application. These files usually reside in /usr/share/applications or /usr/local/share/applications for applications installed system-wide, or ~/.local/share/applications for user-specific applications. User entries take precedence over system entries.
Type=Application # Indicates the type as listed above
Version=1.0 # The version of the desktop entry specification to which this file complies
Name=jMemorize # The name of the application
Comment=Flash card based learning tool # A comment which can/will be used as a tooltip
Exec=jmemorize # The executable of the application.
Icon=jmemorize # The name of the icon that will be used to display this entry
Terminal=false # Describes whether this application needs to be run in a terminal or not
Categories=Education;Languages;Java; # Describes the categories in which this entry should be shown
# To validate. It is part of the package desktop-file-utils.
desktop-file-validate your desktop file
For XDG-compliant desktop environment, such as GNOME or KDE, the desktop environment will automatically start *.desktop files found in the following directories:
System-wide: $XDG_CONFIG_DIRS/autostart/ (/etc/xdg/autostart/ by default)
GNOME also starts files found in /usr/share/gnome/autostart/
User-specific: $XDG_CONFIG_HOME/autostart/ (~/.config/autostart/ by default)
Users can override system-wide *.desktop files by copying them into the user-specific ~/.config/autostart/ folder.
# Show all package groups
# Show all package in a group
pacman -Sgg _base_
# List all files in an installed package
pacman -Ql binutils
# To list all files in an uninstalled package
sudo pacman -S pkgfile
sudo pkgfile -u
pkgfile -s ss
pkgfile -l core/iproute2
# -R: remove
# -ss, --recursive: Remove each target specified including all of their dependencies, provided that they are not required by other packages.
pacman -Rss packageName
# Query/search for installed packages.
pacman -Qs apache
# Find systemd unit files
pacman -Qql apache | grep -Fe .service -e .socket
To disable PGP signature checking completely, edit /etc/pacman.conf and uncomment the following line under [options]:
SigLevel = Never
You need to comment out any repository-specific SigLevel settings too because they override the global settings.
Adding unofficial keys
It is necessary when adding your own key to the pacman keyring, or enabling a signed unofficial repository.
During a package upgrade (pacman -Syu, pacman -Su or pacman -U), .pacnew files are created to avoid overwriting a file which already exists and was previously modified by the user.
.pacsave file may be created during a package removal (pacman -R).
Pacman will output the following log both to console and /var/log/pacman.log:
warning: /etc/pam.d/usermod installed as /etc/pam.d/usermod.pacnew
warning: /etc/pam.d/usermod saved as /etc/pam.d/usermod.pacsave
To locate those files:
find /etc -regextype posix-extended -regex ".+\.pac(new|save)" 2> /dev/null
locate -e --regex "\.pac(new|save)$"
egrep "pac(new|save)" /var/log/pacman.log
# This command will automatically find all pacnew files.
# It uses vimdiff by default.
# Or set your own diff program
# Use this command to check the integrity of /etc/passwd
# Check the integrity of group
.pacnew is generated by 3-way MD5 sum comparison.
original = X, current = X, new = X
original = X, current = X, new = Y
original = X, current = Y, new = Y
Under all these conditions, the new conf will overwrite the current one directly.
original = X, current = Y, new = X
Kee current conf as is, without notifying the user.
original = X, current = Y, new = Z
New conf is saved as .pacnew.
freedesktop.org recommends to specify default (preferred) applications for MIME-types in these two kinds of files:
$desktop-mimeapps.list: Desktop specific. $desktop could be kde, gnome, xfce.
# user overrides
# sysadmin and vendor overrides
# distribution-provided defaults
When the program update-desktop-database is run (usually as root during the (un)installation of a package), it updates mimeinfo.cache under /usr/local/share/applications and /usr/share/applications directories. These files keep track of which MIME-types are associated with which .desktop files overall, and should not be edited by the user.
Open gnome-control-center, open System > Details > Default Applications.
xdg-open is a desktop-independent tool for starting default applications.
Many applications invoke the xdg-open command internally.
xdg-open uses xdg-mime to query ~/.local/share/applications/mimeapps.list.
Custom file association
In this example, 'foobar' will be associated with all *.foo files. This will only affect the current user.
Edit ~/.local/share/mime/packages/application-x-foobar.xml and add this text:
Applications do not appear in the Open With... context menu
Locate the .desktop file in /usr/share/applications, edit it as root, and add %U to the end of the Exec= line.
# Rescale all images in a dir to 800 pixel width.
if [ -z "$1" ]; then
for i in $(ls $1); do
if [ $i != "." ]; then
convert -filter Cubic -resize 800 $i $i.s.jpg
sudo pacman -S xf86-input-synaptics
After installation of xf86-input-synaptics, a default configuration file is located at /usr/share/X11/xorg.conf.d/50-synaptics.conf. Users can copy this file to /etc/X11/xorg.conf.d/ and edit it to configure the various driver options available.
If your touchpad is too sensitive, use higher values for FingerLow and FingerHigh and vice versa. Remember that FingerLow should be smaller than FingerHigh.
VertScrollDelta and HorizScrollDelta (integer) configures the speed of scrolling, it is a bit counter-intuitive because higher values produce greater precision and thus slower scrolling. Negative values cause natural scrolling like in OS X.
A Linux-capable boot loader (GRUB, Syslinux or LILO) must be installed to the Master Boot Record (MBR) or the GUID Partition Table (GPT). The boot loader is responsible for loading the kernel and initial ramdisk before initiating the boot process. GPT is part of UEFI. UEFI has support for reading both the partition table as well as understanding filesystems.
Load Kernel. The kernel is the core of an operating system, which functions on a low level (kernelspace) interacting between the hardware of the machine and the programs which use the hardware to run. To make efficient use of the CPU, the kernel uses a scheduler to arbitrate which tasks take priority at any given moment.
Kernel unpacks the initramfs (initial RAM filesystem), which becomes the initial root filesystem. The kernel then executes /init as the first process. The early userspace starts.
This means that any modules that are required for devices like IDE, SCSI, SATA, USB/FW (if booting from an external drive) must be loadable from the initramfs if not built into the kernel.
For this reason, the initramfs only needs to contain the modules necessary to access the root filesystem; it does not need to contain every module one would ever want to use.
The majority of modules will be loaded later on by udev, during the init process.
Init process. At the final stage of early userspace, the real root is mounted, and then replaces the initial root filesystem. /sbin/init is executed, replacing the /init process. Arch uses systemd as the default init.
Getty. ArchWiki. A getty is the generic name for a program which manages a terminal line and its connected terminal. Its purpose is to protect the system from unauthorized access. The agetty program is the default getty in Arch Linux.
DM. If a display manager is installed, it will be executed on the configured tty, replacing the getty login prompt.
The login program begins a session for the user.
Shell. Once the user's shell is started, it will typically run a runtime configuration file, such as bashrc, before presenting a prompt to the user. If the account is configured to Start X at login, the runtime configuration file will call startx or xinit.
xinit. xinit runs the user's xinitrc runtime configuration file.
# Install build tools
sudo pacman -S binutils make gcc
# Get the output in English.
IBus (Intelligent Input Bus) is an input method framework, a system for entering foreign characters. IBus functions similarly to Fcitx, SCIM and UIM.
sudo pacman -S ibus
# sudo pacman -S ibus-rime
sudo pacman -S ibus-libpinyin
sudo pacman -S gnome-control-center
# First type "ibus-setup" and add input method there.
# and then type "gnome-control-center" and add languages there.
# Now type Super+space to switch input methods.
# To start ibus with GNOME, add this in ~/.profile and restart the GNOME.
export [email protected]=ibus
ibus-daemon -d -x
The mount command by default will use /usr/bin/mount.ntfs which is symlinked to /usr/bin/ntfs-3g after the ntfs-3g package is installed.
ntfs-3g /dev/your_NTFS_partition /mount/point.
# <file system> <dir> <type> <options> <dump> <pass>
/dev/NTFS-part /mnt/windows ntfs-3g defaults 0 0
# Mount internal Windows partition with linux compatible permissions, i.e. 755 for directories (dmask=022) and 644 for files (fmask=133)
UUID=01CD2ABB65E17DE0 /run/media/user1/Windows ntfs-3g uid=user1,gid=users,dmask=022,fmask=133 0 0
rTorrent is recommended for its lightweightness and speed.
It contains package descriptions (PKGBUILDs) that allow you to compile a package from source with makepkg and then install it via pacman.
Good packages may be entered into the community repository (directly accessible by pacman or abs).
CAUTION: carefully check the PKGBUILD and any .install file for malicious commands.
# Make sure build tools are installed.
pacman -S --needed base-devel
# Optimize /etc/makepkg.conf
tar -xvf foo.tar.gz
# -s, --syncdeps, Install missing dependencies using pacman.
# -r/--rmdeps removes the build-time dependencies after build
# -U, --upgrade, Upgrade or add package(s) to the system and install the required dependencies from sync repositories.
sudo pacman -U foo-0.1-1-i686.pkg.tar.xz
# To list all foreign packages:
# -Q, --query
# -m, --foreign, Restrict or filter output to packages that were not found in the sync database(s). Typically these are packages that were downloaded manually and installed with --upgrade.
# -s, --recursive: Remove each target specified including all of their dependencies, provided that (A) they are not required by other packages; and (B) they were not explicitly installed by the user. This operation is recursive and analogous to a backwards --sync operation, and it helps keep a clean system without orphans. If you want to omit condition (B), pass this option twice.
pacman -Rss packageName
To verify you are booted in UEFI mode, run: efivar -l.
If you are using an Intel video chipset and the screen goes blank during the boot process, the problem is likely an issue with Kernel mode setting. A possible workaround may be achieved by rebooting and pressing Tab over the entry that you are trying to boot (i686 or x86_64). At the end of the string type nomodeset and press Enter. Alternatively, try video=SVIDEO-1:d which, if it works, will not disable kernel mode setting. You can also try i915.modeset=0.
If the screen does not go blank and the boot process gets stuck while trying to load the kernel, press Tab while hovering over the menu entry, type acpi=off at the end of the string and press Enter.
SuperUser. Whatprovides equivalent for arch/pacman.
sudo pkgfile -u
# -s, --search. It is the default operation.
pkgfile -s aclocal